Compare commits
106 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 165ee8c230 | |||
| ae18817eb0 | |||
| aa4f5aa80b | |||
| 981204d58e | |||
| 51adb817fa | |||
| fc81fa2130 | |||
| 460c0b76e3 | |||
| 051c303e6c | |||
| 0caa9b899e | |||
| c6fe30b029 | |||
| 2cb7d96bc7 | |||
| dacb87679a | |||
| 1409d376f6 | |||
| dcf72e72bf | |||
| ff0f9d122f | |||
| 9993c53476 | |||
| 3a4e976273 | |||
| 6f594b5c2b | |||
| 686ec53f92 | |||
| ea0a6c3698 | |||
| 6e4ed17ab7 | |||
| d889efa6d4 | |||
| 0d9f458c52 | |||
| 7e3a8c1226 | |||
| cc1c2d70e0 | |||
| de2d75eee9 | |||
| dbcce7f34b | |||
| 12471e0aa3 | |||
| a15af8eca6 | |||
| 32fcb1a3be | |||
| 0219bb263c | |||
| b27d78945c | |||
| 20e90ec4d4 | |||
| 59e5daa31f | |||
| a9e6215540 | |||
| 3b265eaa0d | |||
| 3a158cf347 | |||
| 123add8b6c | |||
| b19e10d4a4 | |||
| a4ea872dd7 | |||
| 034be4227b | |||
| 666b12ab35 | |||
| 84174baea2 | |||
| 544fa955f6 | |||
| 301f179fb0 | |||
| 3cd3c6ee97 | |||
| 55bb04f362 | |||
| d69989892b | |||
| adce4c7ea2 | |||
| 553480f1df | |||
| 5b93191548 | |||
| ce4cbd3c75 | |||
| 2991e0289d | |||
| 963b79e1aa | |||
| 24ba04bb43 | |||
| 1b0c182819 | |||
| b8a56a299b | |||
| cdc78b5128 | |||
| e93a63f9d3 | |||
| 837cb9c19e | |||
| 6e1881c704 | |||
| c0d0a26383 | |||
| a1a28b1b29 | |||
| 64cb4fcd4b | |||
| 25c89f8812 | |||
| 8752844e99 | |||
| 9829d63bce | |||
| 0bb94e1b76 | |||
| 20e739a910 | |||
| 4d94addec4 | |||
| e27e62f90d | |||
| af1dd844ff | |||
| 8d66fd32ad | |||
| 5bb5684eb2 | |||
| 4f6dc780c8 | |||
| 30a98d5705 | |||
| 38888897b5 | |||
| d5563e95b0 | |||
| 51bcb4b3d1 | |||
| c456627c39 | |||
| 7189216109 | |||
| b6d57a2ed9 | |||
| b4e4f46ed9 | |||
| 1399cc60a3 | |||
| c977caaa2b | |||
| 4008bbf92c | |||
| afd1928cd2 | |||
| 1ea543da24 | |||
| 8ec3504224 | |||
| c7156995e7 | |||
| 2de1df4227 | |||
| 7bcfea2cfb | |||
| 1263500587 | |||
| af3af38509 | |||
| 28689bcf58 | |||
| 5bfacfa68b | |||
| 2f2b159cb7 | |||
| cade256b72 | |||
| 16ef0b849e | |||
| c3ee4b41be | |||
| 5f52400e1e | |||
| 3751b9970b | |||
| e708455557 | |||
| 9a847af0e7 | |||
| 3948277d5f | |||
| a4daa9ddca |
@@ -0,0 +1,24 @@
|
|||||||
|
# To get started with Dependabot version updates, you'll need to specify which
|
||||||
|
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
|
||||||
|
|
||||||
|
version: 2
|
||||||
|
updates:
|
||||||
|
- package-ecosystem: "npm"
|
||||||
|
directory: "/"
|
||||||
|
target-branch: "dev"
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
||||||
|
commit-message:
|
||||||
|
prefix: "📌"
|
||||||
|
labels:
|
||||||
|
- "dependencies"
|
||||||
|
- package-ecosystem: "github-actions"
|
||||||
|
directory: "/"
|
||||||
|
target-branch: "dev"
|
||||||
|
schedule:
|
||||||
|
interval: "weekly"
|
||||||
|
day: "sunday"
|
||||||
|
commit-message:
|
||||||
|
prefix: "👷"
|
||||||
|
labels:
|
||||||
|
- "dependencies"
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
name: Build Theme
|
||||||
|
|
||||||
|
on: [pull_request_target]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: ${{ github.actor == 'dependabot[bot]' }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
ref: "${{ github.head_ref }}"
|
||||||
|
- name: Install dependencies and Build Theme
|
||||||
|
uses: actions/setup-node@v3
|
||||||
|
- run: npm install
|
||||||
|
- run: npm run assets
|
||||||
|
- name: Commit and push Chart.js changes
|
||||||
|
uses: stefanzweifel/git-auto-commit-action@v4
|
||||||
|
with:
|
||||||
|
branch: "${{ github.head_ref }}"
|
||||||
|
push_options: "--dry-run"
|
||||||
|
file_pattern: "assets/lib/chart/*"
|
||||||
|
commit_message: "📦 Update packaged ChartJS"
|
||||||
|
- name: Commit Fuse changes
|
||||||
|
uses: stefanzweifel/git-auto-commit-action@v4
|
||||||
|
with:
|
||||||
|
branch: "${{ github.head_ref }}"
|
||||||
|
push_options: "--dry-run"
|
||||||
|
file_pattern: "assets/lib/fuse/*"
|
||||||
|
commit_message: "📦 Update packaged FuseJS"
|
||||||
|
- name: Commit KaTeX changes
|
||||||
|
uses: stefanzweifel/git-auto-commit-action@v4
|
||||||
|
with:
|
||||||
|
branch: "${{ github.head_ref }}"
|
||||||
|
push_options: "--dry-run"
|
||||||
|
file_pattern: "assets/lib/katex/*"
|
||||||
|
commit_message: "📦 Update packaged KaTeX"
|
||||||
|
- name: Commit Mermaid changes
|
||||||
|
uses: stefanzweifel/git-auto-commit-action@v4
|
||||||
|
with:
|
||||||
|
branch: "${{ github.head_ref }}"
|
||||||
|
push_options: "--dry-run"
|
||||||
|
file_pattern: "assets/lib/mermaid/*"
|
||||||
|
commit_message: "📦 Update packaged Mermaid"
|
||||||
|
- run: npm run build
|
||||||
|
- name: Commit CSS changes
|
||||||
|
uses: stefanzweifel/git-auto-commit-action@v4
|
||||||
|
with:
|
||||||
|
branch: "${{ github.head_ref }}"
|
||||||
|
push_options: "--dry-run"
|
||||||
|
file_pattern: "assets/css/compiled/main.css"
|
||||||
|
commit_message: "💄 Rebuild CSS"
|
||||||
|
- run: git push
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
name: Test Build
|
||||||
|
|
||||||
|
on: [push]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
name: Build Example Site
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
submodules: true
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Setup Hugo
|
||||||
|
uses: peaceiris/actions-hugo@v2
|
||||||
|
with:
|
||||||
|
hugo-version: "latest"
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
working-directory: ./exampleSite
|
||||||
|
run: hugo --minify --themesDir ../.. --baseURL https://nunocoracao.github.io/blowfish/
|
||||||
@@ -1,5 +1,8 @@
|
|||||||
# Blowfish
|
# Blowfish
|
||||||
|
|
||||||
|
<a target="_blank" href="https://www.buymeacoffee.com/nunocoracao"><img class="nozoom" src="https://img.buymeacoffee.com/button-api/?text=Buy me a coffee&emoji=&slug=nunocoracao&button_colour=FFDD00&font_colour=000000&font_family=Cookie&outline_colour=000000&coffee_colour=ffffff" /></a>
|
||||||
|
<a target="_blank" href="http://tee.pub/lic/qwSlWVBL5zc"><img class="nozoom" src="https://img.buymeacoffee.com/button-api/?text=Merch Store &emoji=💎&slug=nunocoracao&button_colour=5F7FFF&font_colour=ffffff&font_family=Lato&outline_colour=000000&coffee_colour=FFDD00" /></a>
|
||||||
|
|
||||||
[](https://github.com/nunocoracao/blowfish/actions/workflows/pages.yml)
|
[](https://github.com/nunocoracao/blowfish/actions/workflows/pages.yml)
|
||||||
[](https://github.com/gohugoio/hugo/releases/tag/v0.87.0)
|
[](https://github.com/gohugoio/hugo/releases/tag/v0.87.0)
|
||||||
[](https://github.com/nunocoracao/blowfish/blob/main/LICENSE)
|
[](https://github.com/nunocoracao/blowfish/blob/main/LICENSE)
|
||||||
@@ -11,6 +14,7 @@ Blowfish is designed to be a powerful, lightweight theme for [Hugo](https://gohu
|
|||||||
|
|
||||||
🌏 [Demo site](https://nunocoracao.github.io/blowfish/)
|
🌏 [Demo site](https://nunocoracao.github.io/blowfish/)
|
||||||
📑 [Theme documentation](https://nunocoracao.github.io/blowfish/docs/)
|
📑 [Theme documentation](https://nunocoracao.github.io/blowfish/docs/)
|
||||||
|
💎 [Merch Store](http://tee.pub/lic/qwSlWVBL5zc)
|
||||||
🐛 [Bug reports & issues](https://github.com/nunocoracao/blowfish/issues)
|
🐛 [Bug reports & issues](https://github.com/nunocoracao/blowfish/issues)
|
||||||
💡 [Questions & feature requests](https://github.com/nunocoracao/blowfish/discussions)
|
💡 [Questions & feature requests](https://github.com/nunocoracao/blowfish/discussions)
|
||||||
|
|
||||||
@@ -31,6 +35,7 @@ Blowfish is designed to be a powerful, lightweight theme for [Hugo](https://gohu
|
|||||||
- Flexible with any content types, taxonomies and menus
|
- Flexible with any content types, taxonomies and menus
|
||||||
- Multilingual content support inlcuding support for RTL languages
|
- Multilingual content support inlcuding support for RTL languages
|
||||||
- Ability to link to posts on third-party websites
|
- Ability to link to posts on third-party websites
|
||||||
|
- Buymeacoffee integration
|
||||||
- Client-side site search powered by Fuse.js
|
- Client-side site search powered by Fuse.js
|
||||||
- Diagrams and visualisations using Mermaid
|
- Diagrams and visualisations using Mermaid
|
||||||
- Charts using Chart.js
|
- Charts using Chart.js
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*! Blowfish v0.0.1 | MIT License | https://github.com/nunocoracao/blowfish */
|
/*! Blowfish | MIT License | https://github.com/nunocoracao/blowfish */
|
||||||
|
|
||||||
/*! tailwindcss v3.2.1 | MIT License | https://tailwindcss.com */
|
/*! tailwindcss v3.2.4 | MIT License | https://tailwindcss.com */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
|
1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
|
||||||
@@ -30,6 +30,7 @@
|
|||||||
2. Prevent adjustments of font size after orientation changes in iOS.
|
2. Prevent adjustments of font size after orientation changes in iOS.
|
||||||
3. Use a more readable tab size.
|
3. Use a more readable tab size.
|
||||||
4. Use the user's configured `sans` font-family by default.
|
4. Use the user's configured `sans` font-family by default.
|
||||||
|
5. Use the user's configured `sans` font-feature-settings by default.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
html {
|
html {
|
||||||
@@ -44,6 +45,8 @@ html {
|
|||||||
/* 3 */
|
/* 3 */
|
||||||
font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||||
/* 4 */
|
/* 4 */
|
||||||
|
font-feature-settings: normal;
|
||||||
|
/* 5 */
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -629,53 +632,6 @@ select {
|
|||||||
--tw-backdrop-sepia: ;
|
--tw-backdrop-sepia: ;
|
||||||
}
|
}
|
||||||
|
|
||||||
::-webkit-backdrop {
|
|
||||||
--tw-border-spacing-x: 0;
|
|
||||||
--tw-border-spacing-y: 0;
|
|
||||||
--tw-translate-x: 0;
|
|
||||||
--tw-translate-y: 0;
|
|
||||||
--tw-rotate: 0;
|
|
||||||
--tw-skew-x: 0;
|
|
||||||
--tw-skew-y: 0;
|
|
||||||
--tw-scale-x: 1;
|
|
||||||
--tw-scale-y: 1;
|
|
||||||
--tw-pan-x: ;
|
|
||||||
--tw-pan-y: ;
|
|
||||||
--tw-pinch-zoom: ;
|
|
||||||
--tw-scroll-snap-strictness: proximity;
|
|
||||||
--tw-ordinal: ;
|
|
||||||
--tw-slashed-zero: ;
|
|
||||||
--tw-numeric-figure: ;
|
|
||||||
--tw-numeric-spacing: ;
|
|
||||||
--tw-numeric-fraction: ;
|
|
||||||
--tw-ring-inset: ;
|
|
||||||
--tw-ring-offset-width: 0px;
|
|
||||||
--tw-ring-offset-color: #fff;
|
|
||||||
--tw-ring-color: rgb(59 130 246 / 0.5);
|
|
||||||
--tw-ring-offset-shadow: 0 0 #0000;
|
|
||||||
--tw-ring-shadow: 0 0 #0000;
|
|
||||||
--tw-shadow: 0 0 #0000;
|
|
||||||
--tw-shadow-colored: 0 0 #0000;
|
|
||||||
--tw-blur: ;
|
|
||||||
--tw-brightness: ;
|
|
||||||
--tw-contrast: ;
|
|
||||||
--tw-grayscale: ;
|
|
||||||
--tw-hue-rotate: ;
|
|
||||||
--tw-invert: ;
|
|
||||||
--tw-saturate: ;
|
|
||||||
--tw-sepia: ;
|
|
||||||
--tw-drop-shadow: ;
|
|
||||||
--tw-backdrop-blur: ;
|
|
||||||
--tw-backdrop-brightness: ;
|
|
||||||
--tw-backdrop-contrast: ;
|
|
||||||
--tw-backdrop-grayscale: ;
|
|
||||||
--tw-backdrop-hue-rotate: ;
|
|
||||||
--tw-backdrop-invert: ;
|
|
||||||
--tw-backdrop-opacity: ;
|
|
||||||
--tw-backdrop-saturate: ;
|
|
||||||
--tw-backdrop-sepia: ;
|
|
||||||
}
|
|
||||||
|
|
||||||
::backdrop {
|
::backdrop {
|
||||||
--tw-border-spacing-x: 0;
|
--tw-border-spacing-x: 0;
|
||||||
--tw-border-spacing-y: 0;
|
--tw-border-spacing-y: 0;
|
||||||
@@ -1204,151 +1160,6 @@ select {
|
|||||||
border-radius: 0.12rem;
|
border-radius: 0.12rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.prose-sm :where(.prose > ul > li p):not(:where([class~="not-prose"] *)) {
|
|
||||||
margin-top: 0.5714286em;
|
|
||||||
margin-bottom: 0.5714286em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.prose-sm :where(.prose > ul > li > *:first-child):not(:where([class~="not-prose"] *)) {
|
|
||||||
margin-top: 1.1428571em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.prose-sm :where(.prose > ul > li > *:last-child):not(:where([class~="not-prose"] *)) {
|
|
||||||
margin-bottom: 1.1428571em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.prose-sm :where(.prose > ol > li > *:first-child):not(:where([class~="not-prose"] *)) {
|
|
||||||
margin-top: 1.1428571em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.prose-sm :where(.prose > ol > li > *:last-child):not(:where([class~="not-prose"] *)) {
|
|
||||||
margin-bottom: 1.1428571em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.prose-sm :where(.prose > :first-child):not(:where([class~="not-prose"] *)) {
|
|
||||||
margin-top: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.prose-sm :where(.prose > :last-child):not(:where([class~="not-prose"] *)) {
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.prose-base :where(.prose > ul > li p):not(:where([class~="not-prose"] *)) {
|
|
||||||
margin-top: 0.75em;
|
|
||||||
margin-bottom: 0.75em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.prose-base :where(.prose > ul > li > *:first-child):not(:where([class~="not-prose"] *)) {
|
|
||||||
margin-top: 1.25em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.prose-base :where(.prose > ul > li > *:last-child):not(:where([class~="not-prose"] *)) {
|
|
||||||
margin-bottom: 1.25em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.prose-base :where(.prose > ol > li > *:first-child):not(:where([class~="not-prose"] *)) {
|
|
||||||
margin-top: 1.25em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.prose-base :where(.prose > ol > li > *:last-child):not(:where([class~="not-prose"] *)) {
|
|
||||||
margin-bottom: 1.25em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.prose-base :where(.prose > :first-child):not(:where([class~="not-prose"] *)) {
|
|
||||||
margin-top: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.prose-base :where(.prose > :last-child):not(:where([class~="not-prose"] *)) {
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.prose-lg :where(.prose > ul > li p):not(:where([class~="not-prose"] *)) {
|
|
||||||
margin-top: 0.8888889em;
|
|
||||||
margin-bottom: 0.8888889em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.prose-lg :where(.prose > ul > li > *:first-child):not(:where([class~="not-prose"] *)) {
|
|
||||||
margin-top: 1.3333333em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.prose-lg :where(.prose > ul > li > *:last-child):not(:where([class~="not-prose"] *)) {
|
|
||||||
margin-bottom: 1.3333333em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.prose-lg :where(.prose > ol > li > *:first-child):not(:where([class~="not-prose"] *)) {
|
|
||||||
margin-top: 1.3333333em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.prose-lg :where(.prose > ol > li > *:last-child):not(:where([class~="not-prose"] *)) {
|
|
||||||
margin-bottom: 1.3333333em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.prose-lg :where(.prose > :first-child):not(:where([class~="not-prose"] *)) {
|
|
||||||
margin-top: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.prose-lg :where(.prose > :last-child):not(:where([class~="not-prose"] *)) {
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.prose-xl :where(.prose > ul > li p):not(:where([class~="not-prose"] *)) {
|
|
||||||
margin-top: 0.8em;
|
|
||||||
margin-bottom: 0.8em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.prose-xl :where(.prose > ul > li > *:first-child):not(:where([class~="not-prose"] *)) {
|
|
||||||
margin-top: 1.2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.prose-xl :where(.prose > ul > li > *:last-child):not(:where([class~="not-prose"] *)) {
|
|
||||||
margin-bottom: 1.2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.prose-xl :where(.prose > ol > li > *:first-child):not(:where([class~="not-prose"] *)) {
|
|
||||||
margin-top: 1.2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.prose-xl :where(.prose > ol > li > *:last-child):not(:where([class~="not-prose"] *)) {
|
|
||||||
margin-bottom: 1.2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.prose-xl :where(.prose > :first-child):not(:where([class~="not-prose"] *)) {
|
|
||||||
margin-top: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.prose-xl :where(.prose > :last-child):not(:where([class~="not-prose"] *)) {
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.prose-2xl :where(.prose > ul > li p):not(:where([class~="not-prose"] *)) {
|
|
||||||
margin-top: 0.8333333em;
|
|
||||||
margin-bottom: 0.8333333em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.prose-2xl :where(.prose > ul > li > *:first-child):not(:where([class~="not-prose"] *)) {
|
|
||||||
margin-top: 1.3333333em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.prose-2xl :where(.prose > ul > li > *:last-child):not(:where([class~="not-prose"] *)) {
|
|
||||||
margin-bottom: 1.3333333em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.prose-2xl :where(.prose > ol > li > *:first-child):not(:where([class~="not-prose"] *)) {
|
|
||||||
margin-top: 1.3333333em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.prose-2xl :where(.prose > ol > li > *:last-child):not(:where([class~="not-prose"] *)) {
|
|
||||||
margin-bottom: 1.3333333em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.prose-2xl :where(.prose > :first-child):not(:where([class~="not-prose"] *)) {
|
|
||||||
margin-top: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.prose-2xl :where(.prose > :last-child):not(:where([class~="not-prose"] *)) {
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.sr-only {
|
.sr-only {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
width: 1px;
|
width: 1px;
|
||||||
@@ -1425,10 +1236,6 @@ select {
|
|||||||
top: 5rem;
|
top: 5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.z-50 {
|
|
||||||
z-index: 50;
|
|
||||||
}
|
|
||||||
|
|
||||||
.z-10 {
|
.z-10 {
|
||||||
z-index: 10;
|
z-index: 10;
|
||||||
}
|
}
|
||||||
@@ -1499,14 +1306,26 @@ select {
|
|||||||
margin-bottom: 3rem;
|
margin-bottom: 3rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mt-0 {
|
.mt-5 {
|
||||||
margin-top: 0px;
|
margin-top: 1.25rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mt-1 {
|
||||||
|
margin-top: 0.25rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb-2 {
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mt-12 {
|
.mt-12 {
|
||||||
margin-top: 3rem;
|
margin-top: 3rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.mt-0 {
|
||||||
|
margin-top: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
.mb-5 {
|
.mb-5 {
|
||||||
margin-bottom: 1.25rem;
|
margin-bottom: 1.25rem;
|
||||||
}
|
}
|
||||||
@@ -1519,14 +1338,6 @@ select {
|
|||||||
margin-top: 1.5rem;
|
margin-top: 1.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mt-5 {
|
|
||||||
margin-top: 1.25rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mt-1 {
|
|
||||||
margin-top: 0.25rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mb-6 {
|
.mb-6 {
|
||||||
margin-bottom: 1.5rem;
|
margin-bottom: 1.5rem;
|
||||||
}
|
}
|
||||||
@@ -1571,10 +1382,6 @@ select {
|
|||||||
margin-bottom: 2.5rem;
|
margin-bottom: 2.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mb-2 {
|
|
||||||
margin-bottom: 0.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.-mb-1 {
|
.-mb-1 {
|
||||||
margin-bottom: -0.25rem;
|
margin-bottom: -0.25rem;
|
||||||
}
|
}
|
||||||
@@ -1599,6 +1406,14 @@ select {
|
|||||||
margin-right: -0.5rem;
|
margin-right: -0.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.ml-auto {
|
||||||
|
margin-left: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mr-auto {
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
.mb-0 {
|
.mb-0 {
|
||||||
margin-bottom: 0px;
|
margin-bottom: 0px;
|
||||||
}
|
}
|
||||||
@@ -1651,12 +1466,20 @@ select {
|
|||||||
height: 2rem;
|
height: 2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.h-\[250px\] {
|
.h-\[120px\] {
|
||||||
height: 250px;
|
height: 120px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.h-\[900px\] {
|
.h-\[100px\] {
|
||||||
height: 900px;
|
height: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.h-\[150px\] {
|
||||||
|
height: 150px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.h-\[800px\] {
|
||||||
|
height: 800px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.h-36 {
|
.h-36 {
|
||||||
@@ -1683,6 +1506,10 @@ select {
|
|||||||
min-height: 0px;
|
min-height: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.min-h-\[148px\] {
|
||||||
|
min-height: 148px;
|
||||||
|
}
|
||||||
|
|
||||||
.w-12 {
|
.w-12 {
|
||||||
width: 3rem;
|
width: 3rem;
|
||||||
}
|
}
|
||||||
@@ -1723,10 +1550,6 @@ select {
|
|||||||
min-width: 1.8rem;
|
min-width: 1.8rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.min-w-\[2\.4rem\] {
|
|
||||||
min-width: 2.4rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.min-w-\[220px\] {
|
.min-w-\[220px\] {
|
||||||
min-width: 220px;
|
min-width: 220px;
|
||||||
}
|
}
|
||||||
@@ -1755,6 +1578,10 @@ select {
|
|||||||
max-width: 5rem;
|
max-width: 5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.max-w-\[64rem\] {
|
||||||
|
max-width: 64rem;
|
||||||
|
}
|
||||||
|
|
||||||
.max-w-xl {
|
.max-w-xl {
|
||||||
max-width: 36rem;
|
max-width: 36rem;
|
||||||
}
|
}
|
||||||
@@ -2039,6 +1866,10 @@ select {
|
|||||||
padding: 1rem;
|
padding: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.p-1\.5 {
|
||||||
|
padding: 0.375rem;
|
||||||
|
}
|
||||||
|
|
||||||
.p-1 {
|
.p-1 {
|
||||||
padding: 0.25rem;
|
padding: 0.25rem;
|
||||||
}
|
}
|
||||||
@@ -2154,6 +1985,14 @@ select {
|
|||||||
padding-bottom: 1rem;
|
padding-bottom: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.pl-\[24px\] {
|
||||||
|
padding-left: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pr-\[24px\] {
|
||||||
|
padding-right: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
.pt-16 {
|
.pt-16 {
|
||||||
padding-top: 4rem;
|
padding-top: 4rem;
|
||||||
}
|
}
|
||||||
@@ -2202,16 +2041,16 @@ select {
|
|||||||
line-height: 1.75rem;
|
line-height: 1.75rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.text-2xl {
|
|
||||||
font-size: 1.5rem;
|
|
||||||
line-height: 2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.text-base {
|
.text-base {
|
||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
line-height: 1.5rem;
|
line-height: 1.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.text-2xl {
|
||||||
|
font-size: 1.5rem;
|
||||||
|
line-height: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
.text-xs {
|
.text-xs {
|
||||||
font-size: 0.75rem;
|
font-size: 0.75rem;
|
||||||
line-height: 1rem;
|
line-height: 1rem;
|
||||||
@@ -2311,6 +2150,11 @@ select {
|
|||||||
color: rgba(var(--color-neutral), var(--tw-text-opacity)) !important;
|
color: rgba(var(--color-neutral), var(--tw-text-opacity)) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.text-primary-800 {
|
||||||
|
--tw-text-opacity: 1;
|
||||||
|
color: rgba(var(--color-primary-800), var(--tw-text-opacity));
|
||||||
|
}
|
||||||
|
|
||||||
.text-neutral-200 {
|
.text-neutral-200 {
|
||||||
--tw-text-opacity: 1;
|
--tw-text-opacity: 1;
|
||||||
color: rgba(var(--color-neutral-200), var(--tw-text-opacity));
|
color: rgba(var(--color-neutral-200), var(--tw-text-opacity));
|
||||||
@@ -3111,6 +2955,14 @@ body:has(#menu-controller:checked) {
|
|||||||
box-shadow: 5px 5px 20px 1px rgba(0, 0, 0, 0.3);
|
box-shadow: 5px 5px 20px 1px rgba(0, 0, 0, 0.3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.anchor {
|
||||||
|
display: block;
|
||||||
|
position: relative;
|
||||||
|
top: -100px;
|
||||||
|
height: 0px;
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
@media (min-width: 640px) {
|
@media (min-width: 640px) {
|
||||||
.thumbnail {
|
.thumbnail {
|
||||||
min-width: 100%;
|
min-width: 100%;
|
||||||
@@ -3487,16 +3339,16 @@ body:has(#menu-controller:checked) {
|
|||||||
color: rgba(var(--color-primary-400), var(--tw-text-opacity));
|
color: rgba(var(--color-primary-400), var(--tw-text-opacity));
|
||||||
}
|
}
|
||||||
|
|
||||||
.dark .dark\:text-neutral-300 {
|
|
||||||
--tw-text-opacity: 1;
|
|
||||||
color: rgba(var(--color-neutral-300), var(--tw-text-opacity));
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .dark\:text-neutral-400 {
|
.dark .dark\:text-neutral-400 {
|
||||||
--tw-text-opacity: 1;
|
--tw-text-opacity: 1;
|
||||||
color: rgba(var(--color-neutral-400), var(--tw-text-opacity));
|
color: rgba(var(--color-neutral-400), var(--tw-text-opacity));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.dark .dark\:text-neutral-300 {
|
||||||
|
--tw-text-opacity: 1;
|
||||||
|
color: rgba(var(--color-neutral-300), var(--tw-text-opacity));
|
||||||
|
}
|
||||||
|
|
||||||
.dark .dark\:text-neutral-800 {
|
.dark .dark\:text-neutral-800 {
|
||||||
--tw-text-opacity: 1;
|
--tw-text-opacity: 1;
|
||||||
color: rgba(var(--color-neutral-800), var(--tw-text-opacity));
|
color: rgba(var(--color-neutral-800), var(--tw-text-opacity));
|
||||||
@@ -3512,9 +3364,9 @@ body:has(#menu-controller:checked) {
|
|||||||
color: rgba(var(--color-neutral-200), var(--tw-text-opacity));
|
color: rgba(var(--color-neutral-200), var(--tw-text-opacity));
|
||||||
}
|
}
|
||||||
|
|
||||||
.dark .dark\:text-primary-300 {
|
.dark .dark\:text-primary-200 {
|
||||||
--tw-text-opacity: 1;
|
--tw-text-opacity: 1;
|
||||||
color: rgba(var(--color-primary-300), var(--tw-text-opacity));
|
color: rgba(var(--color-primary-200), var(--tw-text-opacity));
|
||||||
}
|
}
|
||||||
|
|
||||||
.dark .dark\:opacity-60 {
|
.dark .dark\:opacity-60 {
|
||||||
@@ -3671,8 +3523,8 @@ body:has(#menu-controller:checked) {
|
|||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.md\:h-\[300px\] {
|
.md\:h-\[200px\] {
|
||||||
height: 300px;
|
height: 200px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.md\:h-56 {
|
.md\:h-56 {
|
||||||
@@ -3718,6 +3570,10 @@ body:has(#menu-controller:checked) {
|
|||||||
top: 2.5rem;
|
top: 2.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.lg\:top-\[140px\] {
|
||||||
|
top: 140px;
|
||||||
|
}
|
||||||
|
|
||||||
.lg\:left-0 {
|
.lg\:left-0 {
|
||||||
left: 0px;
|
left: 0px;
|
||||||
}
|
}
|
||||||
@@ -3760,10 +3616,6 @@ body:has(#menu-controller:checked) {
|
|||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.lg\:h-\[350px\] {
|
|
||||||
height: 350px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.lg\:h-72 {
|
.lg\:h-72 {
|
||||||
height: 18rem;
|
height: 18rem;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/*! Blowfish v0.0.1 | MIT License | https://github.com/nunocoracao/blowfish */
|
/*! Blowfish | MIT License | https://github.com/nunocoracao/blowfish */
|
||||||
|
|
||||||
@tailwind base;
|
@tailwind base;
|
||||||
@tailwind components;
|
@tailwind components;
|
||||||
@@ -383,6 +383,14 @@ body:has(#menu-controller:checked) {
|
|||||||
box-shadow: 5px 5px 20px 1px rgba(0, 0, 0, 0.3);
|
box-shadow: 5px 5px 20px 1px rgba(0, 0, 0, 0.3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.anchor {
|
||||||
|
display: block;
|
||||||
|
position: relative;
|
||||||
|
top: -100px;
|
||||||
|
height: 0px;
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
@screen sm {
|
@screen sm {
|
||||||
.thumbnail {
|
.thumbnail {
|
||||||
min-width: 100%;
|
min-width: 100%;
|
||||||
|
|||||||
|
After Width: | Height: | Size: 519 KiB |
@@ -2,4 +2,4 @@
|
|||||||
[module.hugoVersion]
|
[module.hugoVersion]
|
||||||
extended = true
|
extended = true
|
||||||
min = "0.87.0 "
|
min = "0.87.0 "
|
||||||
max = "0.105.0"
|
max = "0.106.0"
|
||||||
@@ -15,6 +15,9 @@ enableCodeCopy = true
|
|||||||
# mainSections = ["section1", "section2"]
|
# mainSections = ["section1", "section2"]
|
||||||
# robots = ""
|
# robots = ""
|
||||||
|
|
||||||
|
[header]
|
||||||
|
layout = "basic" # valid options: basic, fixed
|
||||||
|
|
||||||
[footer]
|
[footer]
|
||||||
# showMenu = true
|
# showMenu = true
|
||||||
showCopyright = true
|
showCopyright = true
|
||||||
@@ -31,6 +34,7 @@ enableCodeCopy = true
|
|||||||
showMoreLinkDest = "/posts"
|
showMoreLinkDest = "/posts"
|
||||||
cardView = false
|
cardView = false
|
||||||
cardViewScreenWidth = false
|
cardViewScreenWidth = false
|
||||||
|
layoutBackgroundBlur = false # only used when layout equals background
|
||||||
|
|
||||||
[article]
|
[article]
|
||||||
showDate = true
|
showDate = true
|
||||||
@@ -40,6 +44,7 @@ enableCodeCopy = true
|
|||||||
showAuthor = true
|
showAuthor = true
|
||||||
showHero = true
|
showHero = true
|
||||||
heroStyle = "basic" # valid options: basic, big, background
|
heroStyle = "basic" # valid options: basic, big, background
|
||||||
|
layoutBackgroundBlur = false # only used when heroStyle equals background
|
||||||
showBreadcrumbs = true
|
showBreadcrumbs = true
|
||||||
showDraftLabel = true
|
showDraftLabel = true
|
||||||
showEdit = true
|
showEdit = true
|
||||||
@@ -58,8 +63,12 @@ enableCodeCopy = true
|
|||||||
sharingLinks = [ "linkedin", "twitter", "whatsapp", "pinterest", "reddit", "facebook", "email"]
|
sharingLinks = [ "linkedin", "twitter", "whatsapp", "pinterest", "reddit", "facebook", "email"]
|
||||||
|
|
||||||
[list]
|
[list]
|
||||||
|
#showHero = true
|
||||||
|
#heroStyle = "background" # valid options: basic, big, background
|
||||||
showBreadcrumbs = false
|
showBreadcrumbs = false
|
||||||
showSummary = false
|
showSummary = false
|
||||||
|
#showViews = true
|
||||||
|
#showLikes = true
|
||||||
showTableOfContents = false
|
showTableOfContents = false
|
||||||
showCards = false
|
showCards = false
|
||||||
groupByYear = true
|
groupByYear = true
|
||||||
@@ -85,6 +94,13 @@ enableCodeCopy = true
|
|||||||
# site = "ABC12345"
|
# site = "ABC12345"
|
||||||
# domain = "llama.yoursite.com"
|
# domain = "llama.yoursite.com"
|
||||||
|
|
||||||
|
[buymeacoffee]
|
||||||
|
# identifier = ""
|
||||||
|
# globalWidget = true
|
||||||
|
# globalWidgetMessage = "Hello"
|
||||||
|
# globalWidgetColor = "#FFDD00"
|
||||||
|
# globalWidgetPosition = "Right"
|
||||||
|
|
||||||
[verification]
|
[verification]
|
||||||
# google = ""
|
# google = ""
|
||||||
# bing = ""
|
# bing = ""
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
{
|
{
|
||||||
|
"links": {
|
||||||
"email": {
|
"email": {
|
||||||
"icon": "email",
|
"icon": "email",
|
||||||
"title": "sharing.email",
|
"title": "sharing.email",
|
||||||
@@ -30,3 +31,4 @@
|
|||||||
"url": "https://twitter.com/intent/tweet/?url=%s&text=%s"
|
"url": "https://twitter.com/intent/tweet/?url=%s&text=%s"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -20,22 +20,32 @@
|
|||||||
pageRef = "samples"
|
pageRef = "samples"
|
||||||
weight = 20
|
weight = 20
|
||||||
|
|
||||||
|
[[main]]
|
||||||
|
name = "Showcase"
|
||||||
|
pageRef = "examples"
|
||||||
|
weight = 30
|
||||||
|
|
||||||
[[main]]
|
[[main]]
|
||||||
name = "Users"
|
name = "Users"
|
||||||
pageRef = "users"
|
pageRef = "users"
|
||||||
weight = 30
|
weight = 40
|
||||||
|
|
||||||
|
[[main]]
|
||||||
|
name = "Merch"
|
||||||
|
url = "http://tee.pub/lic/qwSlWVBL5zc"
|
||||||
|
weight = 50
|
||||||
|
|
||||||
[[main]]
|
[[main]]
|
||||||
identifier = "github"
|
identifier = "github"
|
||||||
pre = "github"
|
pre = "github"
|
||||||
url = "https://github.com/nunocoracao/blowfish"
|
url = "https://github.com/nunocoracao/blowfish"
|
||||||
weight = 40
|
weight = 60
|
||||||
|
|
||||||
[[main]]
|
[[main]]
|
||||||
identifier = "twitter"
|
identifier = "twitter"
|
||||||
pre = "twitter"
|
pre = "twitter"
|
||||||
url = "https://twitter.com/burufugu"
|
url = "https://twitter.com/burufugu"
|
||||||
weight = 50
|
weight = 70
|
||||||
|
|
||||||
|
|
||||||
# -- Footer Menu --
|
# -- Footer Menu --
|
||||||
|
|||||||
@@ -15,6 +15,9 @@ enableCodeCopy = true
|
|||||||
mainSections = ["docs"]
|
mainSections = ["docs"]
|
||||||
# robots = ""
|
# robots = ""
|
||||||
|
|
||||||
|
[header]
|
||||||
|
layout = "fixed" # valid options: basic, fixed
|
||||||
|
|
||||||
[footer]
|
[footer]
|
||||||
showMenu = true
|
showMenu = true
|
||||||
showCopyright = true
|
showCopyright = true
|
||||||
@@ -31,7 +34,7 @@ mainSections = ["docs"]
|
|||||||
showMoreLinkDest = "docs"
|
showMoreLinkDest = "docs"
|
||||||
cardView = true
|
cardView = true
|
||||||
cardViewScreenWidth = false
|
cardViewScreenWidth = false
|
||||||
|
layoutBackgroundBlur = true # only used when layout equals background
|
||||||
|
|
||||||
[article]
|
[article]
|
||||||
showDate = false
|
showDate = false
|
||||||
@@ -41,6 +44,7 @@ mainSections = ["docs"]
|
|||||||
showAuthor = true
|
showAuthor = true
|
||||||
showHero = true
|
showHero = true
|
||||||
heroStyle = "background" # valid options: basic, big, background
|
heroStyle = "background" # valid options: basic, big, background
|
||||||
|
layoutBackgroundBlur = true # only used when heroStyle equals background
|
||||||
showBreadcrumbs = true
|
showBreadcrumbs = true
|
||||||
showDraftLabel = true
|
showDraftLabel = true
|
||||||
showEdit = true
|
showEdit = true
|
||||||
@@ -59,8 +63,12 @@ mainSections = ["docs"]
|
|||||||
sharingLinks = [ "linkedin", "twitter", "whatsapp", "pinterest", "reddit", "facebook", "email"]
|
sharingLinks = [ "linkedin", "twitter", "whatsapp", "pinterest", "reddit", "facebook", "email"]
|
||||||
|
|
||||||
[list]
|
[list]
|
||||||
|
showHero = true
|
||||||
|
heroStyle = "background" # valid options: basic, big, background
|
||||||
showBreadcrumbs = false
|
showBreadcrumbs = false
|
||||||
showSummary = false
|
showSummary = false
|
||||||
|
showViews = true
|
||||||
|
showLikes = true
|
||||||
showTableOfContents = true
|
showTableOfContents = true
|
||||||
showCards = true
|
showCards = true
|
||||||
groupByYear = false
|
groupByYear = false
|
||||||
@@ -86,6 +94,13 @@ mainSections = ["docs"]
|
|||||||
# site = "ABC12345"
|
# site = "ABC12345"
|
||||||
# domain = "llama.yoursite.com"
|
# domain = "llama.yoursite.com"
|
||||||
|
|
||||||
|
[buymeacoffee]
|
||||||
|
identifier = "nunocoracao"
|
||||||
|
globalWidget = true
|
||||||
|
globalWidgetMessage = ""
|
||||||
|
globalWidgetColor = "#FFDD00"
|
||||||
|
globalWidgetPosition = "Right"
|
||||||
|
|
||||||
[verification]
|
[verification]
|
||||||
# google = ""
|
# google = ""
|
||||||
# bing = ""
|
# bing = ""
|
||||||
|
|||||||
@@ -3,6 +3,12 @@ title: "Welcome to Blowfish! :tada:"
|
|||||||
description: "This is a demo of the Blowfish theme for Hugo."
|
description: "This is a demo of the Blowfish theme for Hugo."
|
||||||
---
|
---
|
||||||
|
|
||||||
|
<!--center style="display:flex;align-items:center;flex-wrap:wrap;justify-content:space-evenly;">
|
||||||
|
<a target="_blank" href="https://www.buymeacoffee.com/nunocoracao"><img class="nozoom" src="https://img.buymeacoffee.com/button-api/?text=Buy me a coffee&emoji=&slug=nunocoracao&button_colour=FFDD00&font_colour=000000&font_family=Cookie&outline_colour=000000&coffee_colour=ffffff" /></a>
|
||||||
|
|
||||||
|
<a target="_blank" href="http://tee.pub/lic/qwSlWVBL5zc"><img class="nozoom" src="https://img.buymeacoffee.com/button-api/?text=Merch Store &emoji=💎&slug=nunocoracao&button_colour=5F7FFF&font_colour=ffffff&font_family=Lato&outline_colour=000000&coffee_colour=FFDD00" /></a>
|
||||||
|
</center-->
|
||||||
|
|
||||||
This is a demo site built entirely using Blowfish. It also contains a complete set of [theme documentation]({{< ref "docs" >}}). Blowfish is flexible and is great for both static page-based content (like this demo) or a traditional blog with a feed of recent posts.
|
This is a demo site built entirely using Blowfish. It also contains a complete set of [theme documentation]({{< ref "docs" >}}). Blowfish is flexible and is great for both static page-based content (like this demo) or a traditional blog with a feed of recent posts.
|
||||||
|
|
||||||
<div class="flex px-4 py-2 mb-8 text-base rounded-md bg-primary-100 dark:bg-primary-900">
|
<div class="flex px-4 py-2 mb-8 text-base rounded-md bg-primary-100 dark:bg-primary-900">
|
||||||
|
|||||||
@@ -12,8 +12,6 @@ cascade:
|
|||||||
Simple, yet powerful. Learn how to use Blowfish and its features.
|
Simple, yet powerful. Learn how to use Blowfish and its features.
|
||||||
{{< /lead >}}
|
{{< /lead >}}
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
This section contains everything you need to know about Blowfish. If you're new, check out the [Installation]({{< ref "docs/installation" >}}) guide to begin or visit the [Samples]({{< ref "samples" >}}) section to see what Blowfish can do.
|
This section contains everything you need to know about Blowfish. If you're new, check out the [Installation]({{< ref "docs/installation" >}}) guide to begin or visit the [Samples]({{< ref "samples" >}}) section to see what Blowfish can do.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 98 KiB After Width: | Height: | Size: 98 KiB |
@@ -125,7 +125,7 @@ Many of the article defaults here can be overridden on a per article basis by sp
|
|||||||
|
|
||||||
<!-- prettier-ignore-start -->
|
<!-- prettier-ignore-start -->
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
| ------------------------------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
| ----------------------------------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||||
| `colorScheme` | `"blowfish"` | The theme colour scheme to use. Valid values are `blowfish` (default), `avocado`, `ocean`, `fire` and `slate`. Refer to the [Colour Schemes]({{< ref "getting-started#colour-schemes" >}}) section for more details. |
|
| `colorScheme` | `"blowfish"` | The theme colour scheme to use. Valid values are `blowfish` (default), `avocado`, `ocean`, `fire` and `slate`. Refer to the [Colour Schemes]({{< ref "getting-started#colour-schemes" >}}) section for more details. |
|
||||||
| `defaultAppearance` | `"light"` | The default theme appearance, either `light` or `dark`. |
|
| `defaultAppearance` | `"light"` | The default theme appearance, either `light` or `dark`. |
|
||||||
| `autoSwitchAppearance` | `true` | Whether the theme appearance automatically switches based upon the visitor's operating system preference. Set to `false` to force the site to always use the `defaultAppearance`. |
|
| `autoSwitchAppearance` | `true` | Whether the theme appearance automatically switches based upon the visitor's operating system preference. Set to `false` to force the site to always use the `defaultAppearance`. |
|
||||||
@@ -133,8 +133,12 @@ Many of the article defaults here can be overridden on a per article basis by sp
|
|||||||
| `enableCodeCopy` | `false` | Whether copy-to-clipboard buttons are enabled for `<code>` blocks. The `highlight.noClasses` parameter must be set to `false` for code copy to function correctly. Read more about [other configuration files](#other-configuration-files) below. |
|
| `enableCodeCopy` | `false` | Whether copy-to-clipboard buttons are enabled for `<code>` blocks. The `highlight.noClasses` parameter must be set to `false` for code copy to function correctly. Read more about [other configuration files](#other-configuration-files) below. |
|
||||||
| `logo` | _Not set_ | The relative path to the site logo file within the `assets/` folder. The logo file should be provided at 2x resolution and supports any image dimensions. |
|
| `logo` | _Not set_ | The relative path to the site logo file within the `assets/` folder. The logo file should be provided at 2x resolution and supports any image dimensions. |
|
||||||
| `mainSections` | _Not set_ | The sections that should be displayed in the recent articles list. If not provided the section with the greatest number of articles is used. |
|
| `mainSections` | _Not set_ | The sections that should be displayed in the recent articles list. If not provided the section with the greatest number of articles is used. |
|
||||||
|
| `showViews` | _Not set_ | Whether or not articles and list views are displayed. This requires firebase integrations to be enabled, look below. |
|
||||||
|
| `showLikes` | _Not set_ | Whether or not articles and list likes are displayed. This requires firebase integrations to be enabled, look below. |
|
||||||
| `robots` | _Not set_ | String that indicates how robots should handle your site. If set, it will be output in the page head. Refer to [Google's docs](https://developers.google.com/search/docs/advanced/robots/robots_meta_tag#directives) for valid values. |
|
| `robots` | _Not set_ | String that indicates how robots should handle your site. If set, it will be output in the page head. Refer to [Google's docs](https://developers.google.com/search/docs/advanced/robots/robots_meta_tag#directives) for valid values. |
|
||||||
| `disableImageZoom` | `false` | Disables image zoom feature across all the images in the site. |
|
| `disableImageZoom` | `false` | Disables image zoom feature across all the images in the site. |
|
||||||
|
| `defaultBackgroundImage` | _Not set_ | Default background image for both `background` homepage layout and `background` hero style |
|
||||||
|
| `header.layout` | `"basic"` | Defines the header for the entire site, supported values are `basic` and `fixed`. |
|
||||||
| `footer.showMenu` | `true` | Show/hide the footer menu, which can be configured in the `[[footer]]` section of the `config/_default/menus.en.toml` file. |
|
| `footer.showMenu` | `true` | Show/hide the footer menu, which can be configured in the `[[footer]]` section of the `config/_default/menus.en.toml` file. |
|
||||||
| `footer.showCopyright` | `true` | Whether or not to show the copyright string in the site footer. Note that the string itself can be customised using the `copyright` parameter in the [languages configuration](#language-and-i18n). |
|
| `footer.showCopyright` | `true` | Whether or not to show the copyright string in the site footer. Note that the string itself can be customised using the `copyright` parameter in the [languages configuration](#language-and-i18n). |
|
||||||
| `footer.showThemeAttribution` | `true` | Whether or not to show the "powered by" theme attribution in the site footer. If you choose to disable this message, please consider attributing the theme somewhere else on your site (for example, on your about page). |
|
| `footer.showThemeAttribution` | `true` | Whether or not to show the "powered by" theme attribution in the site footer. If you choose to disable this message, please consider attributing the theme somewhere else on your site (for example, on your about page). |
|
||||||
@@ -148,13 +152,15 @@ Many of the article defaults here can be overridden on a per article basis by sp
|
|||||||
| `homepage.showMoreLinkDest` | '/posts' | The destination of the show more button. |
|
| `homepage.showMoreLinkDest` | '/posts' | The destination of the show more button. |
|
||||||
| `homepage.cardView` | `false` | Display recent articles as a gallery of cards. |
|
| `homepage.cardView` | `false` | Display recent articles as a gallery of cards. |
|
||||||
| `homepage.cardViewScreenWidth` | `false` | Enhance the width of the recent articles card gallery to take the full width available. |
|
| `homepage.cardViewScreenWidth` | `false` | Enhance the width of the recent articles card gallery to take the full width available. |
|
||||||
|
| `homepage.layoutBackgroundBlur` | `false` | Makes the background image in the homepage layout blur with the scroll |
|
||||||
| `article.showDate` | `true` | Whether or not article dates are displayed. |
|
| `article.showDate` | `true` | Whether or not article dates are displayed. |
|
||||||
| `article.showViews` | `false` | Whether or not article views are displayed. This requires firebase integrations to be enabled, look below. |
|
| `article.showViews` | `false` | Whether or not article views are displayed. This requires firebase integrations to be enabled, look below. |
|
||||||
| `article.showLikes` | `false` | Whether or not article likes are displayed. This requires firebase integrations to be enabled, look below. |
|
| `article.showLikes` | `false` | Whether or not article likes are displayed. This requires firebase integrations to be enabled, look below. |
|
||||||
| `article.showDateUpdated` | `false` | Whether or not the dates articles were updated are displayed. |
|
| `article.showDateUpdated` | `false` | Whether or not the dates articles were updated are displayed. |
|
||||||
| `article.showAuthor` | `true` | Whether or not the author box is displayed in the article footer. |
|
| `article.showAuthor` | `true` | Whether or not the author box is displayed in the article footer. |
|
||||||
| `article.showHero` | `true` | Whether the thumbnail image will be shown as a hero image within each article page. |
|
| `article.showHero` | `false` | Whether the thumbnail image will be shown as a hero image within each article page. |
|
||||||
| `heroStyle` | `basic` | Style to display the hero image, valid options are: `basic`, `big`, `background`. |
|
| `article.heroStyle` | _Not set_ | Style to display the hero image, valid options are: `basic`, `big`, `background`. |
|
||||||
|
| `article.layoutBackgroundBlur` | `false` | Makes the background image in the background article heroStyle blur with the scroll |
|
||||||
| `article.showBreadcrumbs` | `false` | Whether or not breadcrumbs are displayed in the article header. |
|
| `article.showBreadcrumbs` | `false` | Whether or not breadcrumbs are displayed in the article header. |
|
||||||
| `article.showDraftLabel` | `true` | Whether or not the draft indicator is shown next to articles when site is built with `--buildDrafts`. |
|
| `article.showDraftLabel` | `true` | Whether or not the draft indicator is shown next to articles when site is built with `--buildDrafts`. |
|
||||||
| `article.showEdit` | `false` | Whether or not the link to edit the article content should be displayed. |
|
| `article.showEdit` | `false` | Whether or not the link to edit the article content should be displayed. |
|
||||||
@@ -171,24 +177,33 @@ Many of the article defaults here can be overridden on a per article basis by sp
|
|||||||
| `article.showWordCount` | `false` | Whether or not article word counts are displayed. |
|
| `article.showWordCount` | `false` | Whether or not article word counts are displayed. |
|
||||||
| `article.showComments` | `false` | Whether or not the [comments partial]({{< ref "partials#comments" >}}) is included after the article footer. |
|
| `article.showComments` | `false` | Whether or not the [comments partial]({{< ref "partials#comments" >}}) is included after the article footer. |
|
||||||
| `article.sharingLinks` | _Not set_ | Which sharing links to display at the end of each article. When not provided, or set to `false` no links will be displayed. |
|
| `article.sharingLinks` | _Not set_ | Which sharing links to display at the end of each article. When not provided, or set to `false` no links will be displayed. |
|
||||||
|
| `list.showHero` | `false` | Whether the thumbnail image will be shown as a hero image within each list page. |
|
||||||
|
| `list.heroStyle` | _Not set_ | Style to display the hero image, valid options are: `basic`, `big`, `background`. |
|
||||||
| `list.showBreadcrumbs` | `false` | Whether or not breadcrumbs are displayed in the header on list pages. |
|
| `list.showBreadcrumbs` | `false` | Whether or not breadcrumbs are displayed in the header on list pages. |
|
||||||
| `list.showTableOfContents` | `false` | Whether or not the table of contents is displayed on list pages. |
|
| `list.showTableOfContents` | `false` | Whether or not the table of contents is displayed on list pages. |
|
||||||
| `list.showSummary` | `false` | Whether or not article summaries are displayed on list pages. If a summary is not provided in the [front matter]({{< ref "front-matter" >}}), one will be auto generated using the `summaryLength` parameter in the [site configuration](#site-configuration). |
|
| `list.showSummary` | `false` | Whether or not article summaries are displayed on list pages. If a summary is not provided in the [front matter]({{< ref "front-matter" >}}), one will be auto generated using the `summaryLength` parameter in the [site configuration](#site-configuration). |
|
||||||
|
| `list.showViews` | `false` | Whether or not list views are displayed. This requires firebase integrations to be enabled, look below. |
|
||||||
|
| `list.showLikes` | `false` | Whether or not list likes are displayed. This requires firebase integrations to be enabled, look below. |
|
||||||
| `list.showCards` | `false` | Whether or not each article is displayed as a card or as simple inline text. |
|
| `list.showCards` | `false` | Whether or not each article is displayed as a card or as simple inline text. |
|
||||||
| `list.groupByYear` | `true` | Whether or not articles are grouped by year on list pages. |
|
| `list.groupByYear` | `true` | Whether or not articles are grouped by year on list pages. |
|
||||||
| `list.cardView` | `false` | Display lists as a gallery of cards. |
|
| `list.cardView` | `false` | Display lists as a gallery of cards. |
|
||||||
| `list.cardViewScreenWidth` | `false` | Enhance the width of card galleries in lists to take the full width available. |
|
| `list.cardViewScreenWidth` | `false` | Enhance the width of card galleries in lists to take the full width available. |
|
||||||
| `sitemap.excludedKinds` | `["taxonomy", "term"]` | Kinds of content that should be excluded from the generated `/sitemap.xml` file. Refer to the [Hugo docs](https://gohugo.io/templates/section-templates/#page-kinds) for acceptable values. |
|
| `sitemap.excludedKinds` | `["taxonomy", "term"]` | Kinds of content that should be excluded from the generated `/sitemap.xml` file. Refer to the [Hugo docs](https://gohugo.io/templates/section-templates/#page-kinds) for acceptable values. |
|
||||||
| `taxonomy.showTermCount` | `true` | Whether or not the number of articles within a taxonomy term is displayed on the taxonomy listing. |
|
| `taxonomy.showTermCount` | `true` | Whether or not the number of articles within a taxonomy term is displayed on the taxonomy listing. |
|
||||||
| `firebase.apiKey` | _Not set_ | Firebase apiKey, required to integrate against Firebase. Check [this page]({{< ref "firebase-views" >}}) for a guide on how to integrate Firebase into Blowfish |
|
| `firebase.apiKey` | _Not set_ | Firebase apiKey, required to integrate against Firebase. Check [this page]({{< ref "firebase-views" >}}) for a guide on how to integrate Firebase into Blowfish. |
|
||||||
| `firebase.authDomain` | _Not set_ | Firebase authDomain, required to integrate against Firebase. Check [this page]({{< ref "firebase-views" >}}) for a guide on how to integrate Firebase into Blowfish |
|
| `firebase.authDomain` | _Not set_ | Firebase authDomain, required to integrate against Firebase. Check [this page]({{< ref "firebase-views" >}}) for a guide on how to integrate Firebase into Blowfish. |
|
||||||
| `firebase.projectId` | _Not set_ | Firebase projectId, required to integrate against Firebase. Check [this page]({{< ref "firebase-views" >}}) for a guide on how to integrate Firebase into Blowfish |
|
| `firebase.projectId` | _Not set_ | Firebase projectId, required to integrate against Firebase. Check [this page]({{< ref "firebase-views" >}}) for a guide on how to integrate Firebase into Blowfish. |
|
||||||
| `firebase.storageBucket` | _Not set_ | Firebase storageBucket, required to integrate against Firebase. Check [this page]({{< ref "firebase-views" >}}) for a guide on how to integrate Firebase into Blowfish |
|
| `firebase.storageBucket` | _Not set_ | Firebase storageBucket, required to integrate against Firebase. Check [this page]({{< ref "firebase-views" >}}) for a guide on how to integrate Firebase into Blowfish. |
|
||||||
| `firebase.messagingSenderId` | _Not set_ | Firebase messagingSenderId, required to integrate against Firebase. Check [this page]({{< ref "firebase-views" >}}) for a guide on how to integrate Firebase into Blowfish |
|
| `firebase.messagingSenderId` | _Not set_ | Firebase messagingSenderId, required to integrate against Firebase. Check [this page]({{< ref "firebase-views" >}}) for a guide on how to integrate Firebase into Blowfish. |
|
||||||
| `firebase.appId` | _Not set_ | Firebase appId, required to integrate against Firebase. Check [this page]({{< ref "firebase-views" >}}) for a guide on how to integrate Firebase into Blowfish |
|
| `firebase.appId` | _Not set_ | Firebase appId, required to integrate against Firebase. Check [this page]({{< ref "firebase-views" >}}) for a guide on how to integrate Firebase into Blowfish. |
|
||||||
| `firebase.measurementId` | _Not set_ | Firebase measurementId, required to integrate against Firebase. Check [this page]({{< ref "firebase-views" >}}) for a guide on how to integrate Firebase into Blowfish |
|
| `firebase.measurementId` | _Not set_ | Firebase measurementId, required to integrate against Firebase. Check [this page]({{< ref "firebase-views" >}}) for a guide on how to integrate Firebase into Blowfish. |
|
||||||
| `fathomAnalytics.site` | _Not set_ | The site code generated by Fathom Analytics for the website. Refer to the [Analytics docs]({{< ref "partials#analytics" >}}) for more details. |
|
| `fathomAnalytics.site` | _Not set_ | The site code generated by Fathom Analytics for the website. Refer to the [Analytics docs]({{< ref "partials#analytics" >}}) for more details. |
|
||||||
| `fathomAnalytics.domain` | _Not set_ | If using a custom domain with Fathom Analytics, provide it here to serve `script.js` from the custom domain. |
|
| `fathomAnalytics.domain` | _Not set_ | If using a custom domain with Fathom Analytics, provide it here to serve `script.js` from the custom domain. |
|
||||||
|
| `buymeacoffee.identifier` | _Not set_ | The identifier to the target buymeacoffee account. |
|
||||||
|
| `buymeacoffee.globalWidget` | _Not set_ | Activate the global buymeacoffee widget. |
|
||||||
|
| `buymeacoffee.globalWidgetMessage` | _Not set_ | Message what will be displayed the first time a new user lands on the site. |
|
||||||
|
| `buymeacoffee.globalWidgetColor` | _Not set_ | Widget color in hex format. |
|
||||||
|
| `buymeacoffee.globalWidgetPosition` | _Not set_ | Position of the widget, i.e. "Left" or "Right" |
|
||||||
| `verification.google` | _Not set_ | The site verification string provided by Google to be included in the site metadata. |
|
| `verification.google` | _Not set_ | The site verification string provided by Google to be included in the site metadata. |
|
||||||
| `verification.bing` | _Not set_ | The site verification string provided by Bing to be included in the site metadata. |
|
| `verification.bing` | _Not set_ | The site verification string provided by Bing to be included in the site metadata. |
|
||||||
| `verification.pinterest` | _Not set_ | The site verification string provided by Pinterest to be included in the site metadata. |
|
| `verification.pinterest` | _Not set_ | The site verification string provided by Pinterest to be included in the site metadata. |
|
||||||
|
|||||||
|
After Width: | Height: | Size: 4.8 MiB |
@@ -0,0 +1,22 @@
|
|||||||
|
---
|
||||||
|
title: "Showcase"
|
||||||
|
description: "See what's possible with Blowfish."
|
||||||
|
|
||||||
|
showLikes: true
|
||||||
|
showViews: true
|
||||||
|
|
||||||
|
cascade:
|
||||||
|
showEdit: false
|
||||||
|
showReadingTime: false
|
||||||
|
showSummary: false
|
||||||
|
showLikes: false
|
||||||
|
showViews: false
|
||||||
|
---
|
||||||
|
|
||||||
|
{{< lead >}}
|
||||||
|
See what's possible with Blowfish.
|
||||||
|
{{< /lead >}}
|
||||||
|
|
||||||
|
This section contains links to example templates and pages created using Blowfish to get you inspired.
|
||||||
|
|
||||||
|
---
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
title: "Blowfish Artist"
|
||||||
|
date: 2022-11-06
|
||||||
|
externalUrl: "https://nunocoracao.github.io/blowfish_artist/"
|
||||||
|
---
|
||||||
|
After Width: | Height: | Size: 1.0 MiB |
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
title: "Blowfish Lite"
|
||||||
|
date: 2022-11-07
|
||||||
|
externalUrl: "https://nunocoracao.github.io/blowfish_lite/"
|
||||||
|
---
|
||||||
|
After Width: | Height: | Size: 107 KiB |
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
title: "Blowfish Lowkey"
|
||||||
|
date: 2022-11-06
|
||||||
|
externalUrl: "https://nunocoracao.github.io/blowfish_lowkey/"
|
||||||
|
---
|
||||||
|
After Width: | Height: | Size: 703 KiB |
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
title: "Blowfish Template - GitHub Repo"
|
||||||
|
date: 2020-11-06
|
||||||
|
externalUrl: "https://github.com/nunocoracao/blowfish_template"
|
||||||
|
---
|
||||||
|
After Width: | Height: | Size: 50 KiB |
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
title: "Blowfish Template"
|
||||||
|
date: 2020-11-06
|
||||||
|
externalUrl: "https://nunocoracao.github.io/blowfish_template/"
|
||||||
|
---
|
||||||
|
After Width: | Height: | Size: 50 KiB |
|
After Width: | Height: | Size: 4.8 MiB |
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
title: "Blowfish Artist - Repo"
|
||||||
|
date: 2021-11-06
|
||||||
|
externalUrl: "https://github.com/nunocoracao/blowfish_artist/"
|
||||||
|
---
|
||||||
|
After Width: | Height: | Size: 1.0 MiB |
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
title: "Blowfish Lite - Repo"
|
||||||
|
date: 2021-11-07
|
||||||
|
externalUrl: "https://github.com/nunocoracao/blowfish_lite/"
|
||||||
|
---
|
||||||
|
After Width: | Height: | Size: 107 KiB |
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
title: "Blowfish Lowkey - Repo"
|
||||||
|
date: 2021-11-06
|
||||||
|
externalUrl: "https://github.com/nunocoracao/blowfish_lowkey/"
|
||||||
|
---
|
||||||
|
After Width: | Height: | Size: 703 KiB |
|
After Width: | Height: | Size: 4.8 MiB |
|
After Width: | Height: | Size: 4.8 MiB |
@@ -16,12 +16,12 @@
|
|||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="CardViewProse" class="hidden h-full">
|
<div id="CardViewScreenWidth" class="">
|
||||||
<section class="w-full">
|
<section class="relative w-screen max-w-[1600px]" style="left: calc(max(-50vw,-800px) + 50%);">
|
||||||
<div class="flex flex-wrap">
|
<div class="flex flex-wrap pl-8 pr-8">
|
||||||
{{ range first $recentArticles (.Paginate (where .Site.RegularPages "Type" "in"
|
{{ range first $recentArticles (.Paginate (where .Site.RegularPages "Type" "in"
|
||||||
.Site.Params.mainSections)).Pages }}
|
.Site.Params.mainSections)).Pages }}
|
||||||
<div class="flex flex-wrap w-full p-4 sm:w-1/2 md:w-1/3">
|
<div class="flex flex-wrap w-full p-4 sm:w-1/2 md:w-1/3 xl:w-1/4 2xl:w-1/5">
|
||||||
{{ partial "article-link-card.html" . }}
|
{{ partial "article-link-card.html" . }}
|
||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
@@ -29,12 +29,12 @@
|
|||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="CardViewScreenWidth" class="">
|
<div id="CardViewProse" class="hidden h-full">
|
||||||
<section class="relative w-screen max-w-[1600px]" style="left: calc(max(-50vw,-800px) + 50%);">
|
<section class="w-full">
|
||||||
<div class="flex flex-wrap pl-8 pr-8">
|
<div class="flex flex-wrap">
|
||||||
{{ range first $recentArticles (.Paginate (where .Site.RegularPages "Type" "in"
|
{{ range first $recentArticles (.Paginate (where .Site.RegularPages "Type" "in"
|
||||||
.Site.Params.mainSections)).Pages }}
|
.Site.Params.mainSections)).Pages }}
|
||||||
<div class="flex flex-wrap w-full p-4 sm:w-1/2 md:w-1/3 xl:w-1/4 2xl:w-1/5">
|
<div class="flex flex-wrap w-full p-4 sm:w-1/2 md:w-1/3">
|
||||||
{{ partial "article-link-card.html" . }}
|
{{ partial "article-link-card.html" . }}
|
||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|||||||
|
After Width: | Height: | Size: 126 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 373 KiB |
|
After Width: | Height: | Size: 373 KiB |
|
After Width: | Height: | Size: 80 KiB |
|
After Width: | Height: | Size: 373 KiB |
|
After Width: | Height: | Size: 589 KiB |
|
After Width: | Height: | Size: 154 KiB |
|
After Width: | Height: | Size: 490 KiB |
|
After Width: | Height: | Size: 147 KiB |
|
After Width: | Height: | Size: 589 KiB |
|
After Width: | Height: | Size: 154 KiB |
|
After Width: | Height: | Size: 87 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 87 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 490 KiB |
|
After Width: | Height: | Size: 147 KiB |
|
After Width: | Height: | Size: 490 KiB |
|
After Width: | Height: | Size: 147 KiB |
|
After Width: | Height: | Size: 87 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 34 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 34 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 80 KiB |
|
After Width: | Height: | Size: 31 KiB |
|
After Width: | Height: | Size: 34 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 373 KiB |
|
After Width: | Height: | Size: 589 KiB |
|
After Width: | Height: | Size: 154 KiB |
|
After Width: | Height: | Size: 87 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 490 KiB |
|
After Width: | Height: | Size: 147 KiB |
|
After Width: | Height: | Size: 373 KiB |
|
After Width: | Height: | Size: 373 KiB |
|
After Width: | Height: | Size: 373 KiB |
|
After Width: | Height: | Size: 85 KiB |
@@ -12,6 +12,12 @@ article:
|
|||||||
word_count:
|
word_count:
|
||||||
one: "{{ .Count }} টি শব্দ"
|
one: "{{ .Count }} টি শব্দ"
|
||||||
other: "{{ .Count }} টি শব্দ"
|
other: "{{ .Count }} টি শব্দ"
|
||||||
|
views:
|
||||||
|
one: "{{ .Count }} বার দেখা হয়েছে"
|
||||||
|
other: "{{ .Count }} বার দেখা হয়েছে"
|
||||||
|
likes:
|
||||||
|
one: "{{ .Count }} বার পছন্দ করা হয়েছে"
|
||||||
|
other: "{{ .Count }} বার পছন্দ করা হয়েছে"
|
||||||
|
|
||||||
author:
|
author:
|
||||||
byline_title: "লেখক"
|
byline_title: "লেখক"
|
||||||
@@ -53,3 +59,6 @@ sharing:
|
|||||||
|
|
||||||
shortcode:
|
shortcode:
|
||||||
recent_articles: "সাম্প্রতিক"
|
recent_articles: "সাম্প্রতিক"
|
||||||
|
|
||||||
|
recent:
|
||||||
|
show_more: "আরো দেখুন"
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ nav:
|
|||||||
search:
|
search:
|
||||||
open_button_title: "検索 (/)"
|
open_button_title: "検索 (/)"
|
||||||
close_button_title: "閉じる (Esc)"
|
close_button_title: "閉じる (Esc)"
|
||||||
input_placeholder: "Search"
|
input_placeholder: "検索"
|
||||||
|
|
||||||
sharing:
|
sharing:
|
||||||
email: " Eメールを送る"
|
email: " Eメールを送る"
|
||||||
@@ -55,4 +55,4 @@ shortcode:
|
|||||||
recent_articles: "最近の記事"
|
recent_articles: "最近の記事"
|
||||||
|
|
||||||
recent:
|
recent:
|
||||||
show_more: "もっと見せる"
|
show_more: "もっと見る"
|
||||||
|
|||||||
@@ -0,0 +1,64 @@
|
|||||||
|
article:
|
||||||
|
anchor_label: "Якорь"
|
||||||
|
date: "{{ .Date }}"
|
||||||
|
date_updated: "Обновлено: {{ .Date }}"
|
||||||
|
draft: "Черновик"
|
||||||
|
edit_title: "Редактировать содержимое"
|
||||||
|
reading_time:
|
||||||
|
one: "{{ .Count }} минута"
|
||||||
|
other: "{{ .Count }} минут"
|
||||||
|
reading_time_title: "Время чтения"
|
||||||
|
table_of_contents: "Оглавление"
|
||||||
|
word_count:
|
||||||
|
one: "{{ .Count }} слово"
|
||||||
|
other: "{{ .Count }} слов"
|
||||||
|
views:
|
||||||
|
one: "{{ .Count }} просмотр"
|
||||||
|
other: "{{ .Count }} просмотров"
|
||||||
|
likes:
|
||||||
|
one: "{{ .Count }} нравится"
|
||||||
|
other: "{{ .Count }} нравится"
|
||||||
|
|
||||||
|
author:
|
||||||
|
byline_title: "Автор"
|
||||||
|
|
||||||
|
code:
|
||||||
|
copy: "Копировать"
|
||||||
|
copied: "Скопировано"
|
||||||
|
|
||||||
|
error:
|
||||||
|
404_title: "Страница не найдена: в замешательстве:"
|
||||||
|
404_error: "Ошибка 404"
|
||||||
|
404_description: "Похоже, запрошенная вами страница не существует."
|
||||||
|
|
||||||
|
footer:
|
||||||
|
dark_appearance: "Переключить на темный вид"
|
||||||
|
light_appearance: "Переключить на светлый вид"
|
||||||
|
powered_by: "Работает на {{ .Hugo }} & {{ .Theme }}"
|
||||||
|
|
||||||
|
list:
|
||||||
|
externalurl_title: "Ссылка на внешний сайт"
|
||||||
|
no_articles: "Здесь пока нет статей."
|
||||||
|
|
||||||
|
nav:
|
||||||
|
scroll_to_top_title: "Пролистать наверх"
|
||||||
|
skip_to_main: "Перейти к основному содержимому"
|
||||||
|
|
||||||
|
search:
|
||||||
|
open_button_title: "Поиск (/)"
|
||||||
|
close_button_title: "Закрыть (Esc)"
|
||||||
|
input_placeholder: "Поиск"
|
||||||
|
|
||||||
|
sharing:
|
||||||
|
email: "Отправить по электронной почте"
|
||||||
|
facebook: "Поделиться через Facebook"
|
||||||
|
linkedin: "Поделиться через LinkedIn"
|
||||||
|
pinterest: "PДобавить в Pinterest"
|
||||||
|
reddit: "Отправить в Reddit"
|
||||||
|
twitter: "Твитнуть в Twitter"
|
||||||
|
|
||||||
|
shortcode:
|
||||||
|
recent_articles: "Недавние"
|
||||||
|
|
||||||
|
recent:
|
||||||
|
show_more: "Показать еще"
|
||||||
@@ -1 +1,8 @@
|
|||||||
<h{{ .Level }} id="{{ .Anchor | safeURL }}" class="relative group">{{ .Text | safeHTML }} {{ if .Page.Params.showHeadingAnchors | default (.Page.Site.Params.article.showHeadingAnchors | default true) }}<span class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100"><a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#{{ .Anchor | safeURL }}" aria-label="{{ i18n "article.anchor_label" }}">#</a></span>{{ end }}</h{{ .Level }}>
|
<div id="{{ .Anchor | safeURL }}" class="anchor">{{ .Text | safeHTML }}></div>
|
||||||
|
<h{{ .Level }} class="relative group">{{ .Text | safeHTML }}
|
||||||
|
{{ if.Page.Params.showHeadingAnchors | default (.Page.Site.Params.article.showHeadingAnchors | default true) }}<span
|
||||||
|
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
|
||||||
|
<a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700"
|
||||||
|
style="text-decoration-line: none !important;" href="#{{ .Anchor | safeURL }}" aria-label="{{ i18n "article.anchor_label" }}">#</a></span>
|
||||||
|
{{ end }}
|
||||||
|
</h{{ .Level }}>
|
||||||
@@ -1,30 +1,20 @@
|
|||||||
{{- partial "partials/functions/warnings.html" .Site -}}
|
{{- partial "partials/functions/warnings.html" .Site -}}
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html
|
<html lang="{{ with .Site.Params.isoCode | default (.Site.LanguageCode | default " en") }} {{- . -}} {{ end }}" dir="{{ if .Site.Params.rtl | default false -}}
|
||||||
lang="{{ with .Site.Params.isoCode | default (.Site.LanguageCode | default "en") }}
|
|
||||||
{{- . -}}
|
|
||||||
{{ end }}"
|
|
||||||
dir="{{ if .Site.Params.rtl | default false -}}
|
|
||||||
rtl
|
rtl
|
||||||
{{- else -}}
|
{{- else -}}
|
||||||
ltr
|
ltr
|
||||||
{{- end }}"
|
{{- end }}" class="scroll-smooth" data-default-appearance="{{ .Site.Params.defaultAppearance | default " light" }}"
|
||||||
class="scroll-smooth"
|
data-auto-appearance="{{ .Site.Params.autoSwitchAppearance | default " true" }}">
|
||||||
data-default-appearance="{{ .Site.Params.defaultAppearance | default "light" }}"
|
|
||||||
data-auto-appearance="{{ .Site.Params.autoSwitchAppearance | default "true" }}"
|
|
||||||
>
|
|
||||||
{{- partial "head.html" . -}}
|
{{- partial "head.html" . -}}
|
||||||
|
|
||||||
<body
|
<body
|
||||||
class="flex flex-col h-screen px-6 m-auto text-lg leading-7 max-w-7xl bg-neutral text-neutral-900 dark:bg-neutral-800 dark:text-neutral sm:px-14 md:px-24 lg:px-32"
|
class="flex flex-col h-screen px-6 m-auto text-lg leading-7 max-w-7xl bg-neutral text-neutral-900 dark:bg-neutral-800 dark:text-neutral sm:px-14 md:px-24 lg:px-32">
|
||||||
>
|
|
||||||
<div id="the-top" class="absolute flex self-center">
|
<div id="the-top" class="absolute flex self-center">
|
||||||
<a
|
<a class="px-3 py-1 text-sm -translate-y-8 rounded-b-lg bg-primary-200 focus:translate-y-0 dark:bg-neutral-600"
|
||||||
class="px-3 py-1 text-sm -translate-y-8 rounded-b-lg bg-primary-200 focus:translate-y-0 dark:bg-neutral-600"
|
href="#main-content"><span
|
||||||
href="#main-content"
|
class="font-bold text-primary-600 ltr:pr-2 rtl:pl-2 dark:text-primary-400">↓</span>{{ i18n
|
||||||
><span class="font-bold text-primary-600 ltr:pr-2 rtl:pl-2 dark:text-primary-400"
|
"nav.skip_to_main" }}</a>
|
||||||
>↓</span
|
|
||||||
>{{ i18n "nav.skip_to_main" }}</a
|
|
||||||
>
|
|
||||||
</div>
|
</div>
|
||||||
{{ $header := print "partials/header/" .Site.Params.header.layout ".html" }}
|
{{ $header := print "partials/header/" .Site.Params.header.layout ".html" }}
|
||||||
{{ if templates.Exists $header }}
|
{{ if templates.Exists $header }}
|
||||||
@@ -36,15 +26,10 @@
|
|||||||
<main id="main-content" class="grow">
|
<main id="main-content" class="grow">
|
||||||
{{ block "main" . }}{{ end }}
|
{{ block "main" . }}{{ end }}
|
||||||
{{ if and (.Site.Params.footer.showScrollToTop | default true) (gt .WordCount 200) }}
|
{{ if and (.Site.Params.footer.showScrollToTop | default true) (gt .WordCount 200) }}
|
||||||
<div
|
<div class="pointer-events-none absolute top-[100vh] bottom-0 w-12 ltr:right-0 rtl:left-0">
|
||||||
class="pointer-events-none absolute top-[100vh] bottom-0 w-12 ltr:right-0 rtl:left-0"
|
<a href="#the-top"
|
||||||
>
|
|
||||||
<a
|
|
||||||
href="#the-top"
|
|
||||||
class="pointer-events-auto sticky top-[calc(100vh-5.5rem)] flex h-12 w-12 items-center justify-center rounded-full bg-neutral/50 text-xl text-neutral-700 backdrop-blur hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral dark:hover:text-primary-400"
|
class="pointer-events-auto sticky top-[calc(100vh-5.5rem)] flex h-12 w-12 items-center justify-center rounded-full bg-neutral/50 text-xl text-neutral-700 backdrop-blur hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral dark:hover:text-primary-400"
|
||||||
aria-label="{{ i18n "nav.scroll_to_top_title" }}"
|
aria-label="{{ i18n " nav.scroll_to_top_title" }}" title="{{ i18n " nav.scroll_to_top_title" }}">
|
||||||
title="{{ i18n "nav.scroll_to_top_title" }}"
|
|
||||||
>
|
|
||||||
↑
|
↑
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@@ -56,4 +41,9 @@
|
|||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
|
{{ if .Site.Params.buymeacoffee.globalWidget | default false }}
|
||||||
|
<script data-name="BMC-Widget" data-cfasync="false" src="https://cdnjs.buymeacoffee.com/1.0.0/widget.prod.min.js"
|
||||||
|
data-id="{{ .Site.Params.buymeacoffee.identifier }}" data-description="Support me on Buy me a coffee!" data-message="{{ .Site.Params.buymeacoffee.globalWidgetMessage | default "" }}"
|
||||||
|
data-color="{{ .Site.Params.buymeacoffee.globalWidgetColor | default "#FFDD00" }}" data-position="{{ .Site.Params.buymeacoffee.globalWidgetPosition | default "Left" }}" data-x_margin="18" data-y_margin="18"></script>
|
||||||
|
{{ end }}
|
||||||
</html>
|
</html>
|
||||||
@@ -1,10 +1,23 @@
|
|||||||
{{ define "main" }}
|
{{ define "main" }}
|
||||||
|
|
||||||
|
{{ if .Site.Params.list.showHero | default false }}
|
||||||
|
{{ $heroStyle := print "partials/hero/" .Site.Params.list.heroStyle ".html" }}
|
||||||
|
{{ if templates.Exists $heroStyle }}
|
||||||
|
{{ partial $heroStyle . }}
|
||||||
|
{{ else }}
|
||||||
|
{{ partial "partials/hero/basic.html" . }}
|
||||||
|
{{ end }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
{{ $toc := and (.Params.showTableOfContents | default (.Site.Params.list.showTableOfContents | default false)) (in
|
{{ $toc := and (.Params.showTableOfContents | default (.Site.Params.list.showTableOfContents | default false)) (in
|
||||||
.TableOfContents "<ul") }} <header>
|
.TableOfContents "<ul") }} <header>
|
||||||
{{ if .Params.showBreadcrumbs | default (.Site.Params.list.showBreadcrumbs | default false) }}
|
{{ if .Params.showBreadcrumbs | default (.Site.Params.list.showBreadcrumbs | default false) }}
|
||||||
{{ partial "breadcrumbs.html" . }}
|
{{ partial "breadcrumbs.html" . }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<h1 class="mt-0 text-4xl font-extrabold text-neutral-900 dark:text-neutral">{{ .Title }}</h1>
|
<h1 class="mt-5 text-4xl font-extrabold text-neutral-900 dark:text-neutral">{{ .Title }}</h1>
|
||||||
|
<div class="mt-1 mb-2 text-base text-neutral-500 dark:text-neutral-400 print:hidden">
|
||||||
|
{{ partial "article-meta-list.html" (dict "context" . "scope" "single") }}
|
||||||
|
</div>
|
||||||
</header>
|
</header>
|
||||||
<section class="{{ if $toc -}}
|
<section class="{{ if $toc -}}
|
||||||
mt-12
|
mt-12
|
||||||
@@ -21,10 +34,125 @@
|
|||||||
<div class="min-w-0 min-h-0 max-w-prose">
|
<div class="min-w-0 min-h-0 max-w-prose">
|
||||||
{{ .Content | emojify }}
|
{{ .Content | emojify }}
|
||||||
</div>
|
</div>
|
||||||
|
<script>
|
||||||
|
|
||||||
|
var liked_article = false
|
||||||
|
|
||||||
|
if (typeof auth !== 'undefined') {
|
||||||
|
var oid = "views_{{ .File.Path }}"
|
||||||
|
var id = oid ? oid.replaceAll("/", "-") : oid
|
||||||
|
|
||||||
|
var viewed = localStorage.getItem(id);
|
||||||
|
|
||||||
|
if (!viewed) {
|
||||||
|
auth.signInAnonymously()
|
||||||
|
.then(() => {
|
||||||
|
var docRef = db.collection('views').doc(id)
|
||||||
|
localStorage.setItem(id, true);
|
||||||
|
docRef.get().then((doc) => {
|
||||||
|
if (doc.exists) {
|
||||||
|
db.collection('views').doc(id).update({
|
||||||
|
views: firebase.firestore.FieldValue.increment(1)
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
db.collection('views').doc(id).set({ views: 1 })
|
||||||
|
}
|
||||||
|
}).catch((error) => {
|
||||||
|
console.log("Error getting document:", error);
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
var errorCode = error.code;
|
||||||
|
var errorMessage = error.message;
|
||||||
|
console.error(errorCode, errorMessage)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
var oid_likes = "likes_{{ .File.Path }}"
|
||||||
|
var id_likes = oid_likes ? oid_likes.replaceAll("/", "-") : oid_likes
|
||||||
|
|
||||||
|
var liked = localStorage.getItem(id_likes);
|
||||||
|
|
||||||
|
if (liked) {
|
||||||
|
liked_article = true
|
||||||
|
document.querySelectorAll("span[id='likes_button_heart']")[0].style.display = ""
|
||||||
|
document.querySelectorAll("span[id='likes_button_emtpty_heart']")[0].style.display = "none"
|
||||||
|
document.querySelectorAll("span[id='likes_button_text']")[0].innerText = ""
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function like_article(id_likes) {
|
||||||
|
auth.signInAnonymously()
|
||||||
|
.then(() => {
|
||||||
|
var docRef = db.collection('likes').doc(id_likes)
|
||||||
|
docRef.get().then((doc) => {
|
||||||
|
liked_article = true
|
||||||
|
localStorage.setItem(id_likes, true);
|
||||||
|
document.querySelectorAll("span[id='likes_button_heart']")[0].style.display = ""
|
||||||
|
document.querySelectorAll("span[id='likes_button_emtpty_heart']")[0].style.display = "none"
|
||||||
|
document.querySelectorAll("span[id='likes_button_text']")[0].innerText = ""
|
||||||
|
if (doc.exists) {
|
||||||
|
db.collection('likes').doc(id_likes).update({
|
||||||
|
likes: firebase.firestore.FieldValue.increment(1)
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
db.collection('likes').doc(id_likes).set({ likes: 1 })
|
||||||
|
}
|
||||||
|
}).catch((error) => {
|
||||||
|
console.log("Error getting document:", error);
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
var errorCode = error.code;
|
||||||
|
var errorMessage = error.message;
|
||||||
|
console.error(errorCode, errorMessage)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function remove_like_article(id_likes) {
|
||||||
|
auth.signInAnonymously()
|
||||||
|
.then(() => {
|
||||||
|
var docRef = db.collection('likes').doc(id_likes)
|
||||||
|
docRef.get().then((doc) => {
|
||||||
|
liked_article = false
|
||||||
|
localStorage.removeItem(id_likes);
|
||||||
|
document.querySelectorAll("span[id='likes_button_heart']")[0].style.display = "none"
|
||||||
|
document.querySelectorAll("span[id='likes_button_emtpty_heart']")[0].style.display = ""
|
||||||
|
document.querySelectorAll("span[id='likes_button_text']")[0].innerText = "\xa0Like"
|
||||||
|
if (doc.exists) {
|
||||||
|
db.collection('likes').doc(id_likes).update({
|
||||||
|
likes: firebase.firestore.FieldValue.increment(-1)
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
db.collection('likes').doc(id_likes).set({ likes: 0 })
|
||||||
|
}
|
||||||
|
}).catch((error) => {
|
||||||
|
console.log("Error getting document:", error);
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
var errorCode = error.code;
|
||||||
|
var errorMessage = error.message;
|
||||||
|
console.error(errorCode, errorMessage)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function process_article() {
|
||||||
|
var oid_likes = "likes_{{ .File.Path }}"
|
||||||
|
var id_likes = oid_likes ? oid_likes.replaceAll("/", "-") : oid_likes
|
||||||
|
if (!liked_article) {
|
||||||
|
like_article(id_likes)
|
||||||
|
} else {
|
||||||
|
remove_like_article(id_likes)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
</section>
|
</section>
|
||||||
{{ if gt .Pages 0 }}
|
{{ if gt .Pages 0 }}
|
||||||
|
|
||||||
{{ if .Site.Params.list.cardView | default false }}
|
{{ if .Params.cardView | default (.Site.Params.list.cardView | default false) }}
|
||||||
|
|
||||||
{{ $cardViewScreenWidth := .Site.Params.list.cardViewScreenWidth}}
|
{{ $cardViewScreenWidth := .Site.Params.list.cardViewScreenWidth}}
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
{{ if and (.Params.showTableOfContents | default (.Site.Params.article.showTableOfContents | default false)) (in
|
{{ if and (.Params.showTableOfContents | default (.Site.Params.article.showTableOfContents | default false)) (in
|
||||||
.TableOfContents "<ul") }}
|
.TableOfContents "<ul") }}
|
||||||
<div class="order-first sm:max-w-prose lg:ml-auto px-0 lg:order-last lg:max-w-xs ltr:lg:pl-8 rtl:lg:pr-8">
|
<div class="order-first sm:max-w-prose lg:ml-auto px-0 lg:order-last lg:max-w-xs ltr:lg:pl-8 rtl:lg:pr-8">
|
||||||
<div class="toc ltr:pl-5 rtl:pr-5 print:hidden lg:sticky lg:top-10">
|
<div class="toc ltr:pl-5 rtl:pr-5 print:hidden lg:sticky {{ if eq .Site.Params.header.layout "fixed" }} lg:top-[140px] {{ else }} lg:top-10 {{ end }}">
|
||||||
{{ partial "toc.html" . }}
|
{{ partial "toc.html" . }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
{{ $articleClasses := "flex flex-wrap article backdrop-blur" }}
|
{{ $articleClasses := "flex flex-wrap article" }}
|
||||||
{{ if .Site.Params.list.showCards }}
|
{{ if .Site.Params.list.showCards }}
|
||||||
{{ $articleClasses = delimit (slice $articleClasses "border" "border-neutral-200 dark:border-neutral-700 border-2 rounded-md") " " }}
|
{{ $articleClasses = delimit (slice $articleClasses "border border-neutral-200 dark:border-neutral-700 border-2 rounded-md") " " }}
|
||||||
|
{{ else }}
|
||||||
|
{{ $articleClasses = delimit (slice $articleClasses "") " " }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{ $articleImageClasses := "w-full md:w-auto h-full thumbnail nozoom" }}
|
{{ $articleImageClasses := "w-full md:w-auto h-full thumbnail nozoom" }}
|
||||||
|
|||||||
@@ -0,0 +1,36 @@
|
|||||||
|
{{/* Determine the correct context and scope */}}
|
||||||
|
{{/* This allows for different logic depending on where the partial is called */}}
|
||||||
|
{{ $context := . }}
|
||||||
|
{{ $scope := default nil }}
|
||||||
|
|
||||||
|
{{ if (reflect.IsMap . ) }}
|
||||||
|
{{ $context = .context }}
|
||||||
|
{{ $scope = cond (not .scope) nil .scope }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ with $context }}
|
||||||
|
{{ $meta := newScratch }}
|
||||||
|
|
||||||
|
{{/* Gather partials for this context */}}
|
||||||
|
|
||||||
|
{{ if (.Params.showViews | default (.Site.Params.list.showViews | default false)) }}
|
||||||
|
{{ $meta.Add "partials" (slice (partial "meta/views.html" .)) }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ if (.Params.showLikes | default (.Site.Params.list.showLikes | default false)) }}
|
||||||
|
{{ $meta.Add "partials" (slice (partial "meta/likes.html" .)) }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ if and (eq $scope "single") (.Params.showLikes | default (.Site.Params.list.showLikes | default false)) }}
|
||||||
|
{{ $meta.Add "partials" (slice (partial "meta/likes_button.html" .)) }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
|
||||||
|
<div class="flex flex-row flex-wrap items-center">
|
||||||
|
{{/* Output partials */}}
|
||||||
|
{{ with ($meta.Get "partials") }}
|
||||||
|
{{ delimit . "<span class=\"px-2 text-primary-500\">·</span>" }}
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{{ end }}
|
||||||
@@ -25,7 +25,7 @@
|
|||||||
{{ range .data.social }}
|
{{ range .data.social }}
|
||||||
{{ range $name, $link := . }}
|
{{ range $name, $link := . }}
|
||||||
<a class="px-1 hover:text-primary-700 dark:hover:text-primary-400" href="{{ $link }}" target="_blank"
|
<a class="px-1 hover:text-primary-700 dark:hover:text-primary-400" href="{{ $link }}" target="_blank"
|
||||||
aria-label="{{ $name | title }}" rel="me noopener noreferrer">{{ partial "icon.html" $name }}</a>
|
aria-label="{{ $name | title }}" rel="me noopener noreferrer"><span class="inline-block align-text-bottom">{{ partial "icon.html" $name }}</span></a>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
target="_blank"
|
target="_blank"
|
||||||
aria-label="{{ $name | title }}"
|
aria-label="{{ $name | title }}"
|
||||||
rel="me noopener noreferrer"
|
rel="me noopener noreferrer"
|
||||||
>{{ partial "icon.html" $name }}</a
|
><span class="inline-block align-text-bottom">{{ partial "icon.html" $name }}</span></a
|
||||||
>
|
>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|||||||
@@ -122,30 +122,3 @@
|
|||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="mobile-menu"
|
|
||||||
class="fixed inset-0 z-30 invisible w-screen h-screen m-auto overflow-auto transition-opacity opacity-0 cursor-default bg-neutral-100/50 backdrop-blur-sm dark:bg-neutral-900/50">
|
|
||||||
<ul
|
|
||||||
class="flex movedown flex-col w-full px-6 py-6 mx-auto overflow-visible list-none ltr:text-right rtl:text-left max-w-7xl sm:px-14 md:px-24 lg:px-32 sm:py-10 sm:pt-10">
|
|
||||||
<li class="mb-1">
|
|
||||||
<span class="cursor-pointer hover:text-primary-600 dark:hover:text-primary-400">{{ partial "icon.html"
|
|
||||||
"xmark" }}</span>
|
|
||||||
</li>
|
|
||||||
{{ if .Site.Menus.main }}
|
|
||||||
{{ range .Site.Menus.main }}
|
|
||||||
<li class="mb-1">
|
|
||||||
<a class="decoration-primary-500 hover:underline hover:decoration-2 hover:underline-offset-2"
|
|
||||||
href="{{ .URL }}" title="{{ .Title }}">{{ .Name | markdownify | emojify }}</a>
|
|
||||||
</li>
|
|
||||||
{{ end }}
|
|
||||||
{{ end }}
|
|
||||||
{{ if .Site.Params.enableSearch | default false }}
|
|
||||||
<li>
|
|
||||||
<button id="search-button-mobile" class="text-base hover:text-primary-600 dark:hover:text-primary-400">
|
|
||||||
{{ partial "icon.html" "search" }}
|
|
||||||
</button>
|
|
||||||
</li>
|
|
||||||
{{ end }}
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
@@ -0,0 +1,145 @@
|
|||||||
|
<div class="min-h-[148px]"></div>
|
||||||
|
<div class="fixed inset-x-0 h-[120px] pl-[24px] pr-[24px] sbackdrop-blur-xl sshadown-2xl" style="z-index:100">
|
||||||
|
<div id="menu-blur" class="absolute opacity-0 inset-x-0 top-0 h-full single_hero_background nozoom backdrop-blur-2xl shadow-2xl"></div>
|
||||||
|
<div class="relative max-w-[64rem] h-[100px] ml-auto mr-auto">
|
||||||
|
<div style="padding-left:0;padding-right:0"
|
||||||
|
class="flex items-center justify-between px-4 py-6 sm:px-6 md:justify-start space-x-3">
|
||||||
|
{{ if .Site.Params.Logo -}}
|
||||||
|
{{ $logo := resources.Get .Site.Params.Logo }}
|
||||||
|
{{ if $logo }}
|
||||||
|
<div>
|
||||||
|
<a href="{{ "" | relLangURL }}" class="flex">
|
||||||
|
<span class="sr-only">{{ .Site.Title | markdownify | emojify }}</span>
|
||||||
|
|
||||||
|
<img src="{{ $logo.RelPermalink }}" width="{{ div $logo.Width 2 }}"
|
||||||
|
height="{{ div $logo.Height 2 }}"
|
||||||
|
class="max-h-[5rem] max-w-[5rem] object-scale-down object-left nozoom"
|
||||||
|
alt="{{ .Site.Title }}" />
|
||||||
|
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
{{- end }}
|
||||||
|
<div class="flex flex-1 items-center justify-between">
|
||||||
|
<nav class="flex space-x-3">
|
||||||
|
|
||||||
|
<a href="{{ "" | relLangURL }}"
|
||||||
|
class="text-base font-medium text-gray-500 hover:text-gray-900">{{ .Site.Title | markdownify
|
||||||
|
| emojify }}</a>
|
||||||
|
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
<div class="hidden md:flex items-center space-x-5 md:ml-12">
|
||||||
|
|
||||||
|
{{ if .Site.Menus.main }}
|
||||||
|
{{ range .Site.Menus.main }}
|
||||||
|
<a href="{{ .URL }}" {{ if or (strings.HasPrefix .URL "http:" ) (strings.HasPrefix .URL "https:"
|
||||||
|
) }} target="_blank" {{ end }}
|
||||||
|
class="text-base font-medium text-gray-500 hover:text-gray-900" title="{{ .Title }}">
|
||||||
|
{{ partial "icon.html" .Pre }}
|
||||||
|
{{ if and .Pre .Name }} {{ end }}
|
||||||
|
{{ .Name | markdownify | emojify }}
|
||||||
|
</a>
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ partial "translations.html" . }}
|
||||||
|
|
||||||
|
{{ if .Site.Params.enableSearch | default false }}
|
||||||
|
<button id="search-button" class="text-base hover:text-primary-600 dark:hover:text-primary-400"
|
||||||
|
title="{{ i18n " search.open_button_title" }}">
|
||||||
|
{{ partial "icon.html" "search" }}
|
||||||
|
</button>
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
|
||||||
|
{{/* Appearance switch */}}
|
||||||
|
{{ if .Site.Params.footer.showAppearanceSwitcher | default false }}
|
||||||
|
<div
|
||||||
|
class="{{ if .Site.Params.footer.showScrollToTop | default true -}} ltr:mr-14 rtl:ml-14 {{- end }} cursor-pointer text-sm text-neutral-700 hover:text-primary-600 dark:text-neutral dark:hover:text-primary-400">
|
||||||
|
<button id="appearance-switcher" type="button">
|
||||||
|
<div class="flex items-center justify-center h-12 dark:hidden">
|
||||||
|
{{ partial "icon.html" "moon" }}
|
||||||
|
</div>
|
||||||
|
<div class="items-center justify-center hidden h-12 dark:flex">
|
||||||
|
{{ partial "icon.html" "sun" }}
|
||||||
|
</div>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="flex md:hidden items-center space-x-5 md:ml-12">
|
||||||
|
|
||||||
|
<span></span>
|
||||||
|
|
||||||
|
{{ partial "translations.html" . }}
|
||||||
|
|
||||||
|
{{ if .Site.Params.enableSearch | default false }}
|
||||||
|
<button id="search-button-mobile"
|
||||||
|
class="text-base hover:text-primary-600 dark:hover:text-primary-400" title="{{ i18n "search.open_button_title" }}">
|
||||||
|
{{ partial "icon.html" "search" }}
|
||||||
|
</button>
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{/* Appearance switch */}}
|
||||||
|
{{ if .Site.Params.footer.showAppearanceSwitcher | default false }}
|
||||||
|
<button id="appearance-switcher-mobile" type="button" style="margin-right:5px">
|
||||||
|
<div class="flex items-center justify-center h-12 dark:hidden">
|
||||||
|
{{ partial "icon.html" "moon" }}
|
||||||
|
</div>
|
||||||
|
<div class="items-center justify-center hidden h-12 dark:flex">
|
||||||
|
{{ partial "icon.html" "sun" }}
|
||||||
|
</div>
|
||||||
|
</button>
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="-my-2 -mr-2 md:hidden">
|
||||||
|
|
||||||
|
<label id="menu-button" for="menu-controller" class="block">
|
||||||
|
<input type="checkbox" id="menu-controller" class="hidden" />
|
||||||
|
<div class="cursor-pointer hover:text-primary-600 dark:hover:text-primary-400">
|
||||||
|
{{ partial "icon.html" "bars" }}
|
||||||
|
</div>
|
||||||
|
<div id="menu-wrapper" style="padding-top:25px;"
|
||||||
|
class="fixed inset-0 z-30 invisible w-screen h-screen m-auto overflow-auto transition-opacity opacity-0 cursor-default bg-neutral-100/50 backdrop-blur-sm dark:bg-neutral-900/50">
|
||||||
|
<ul
|
||||||
|
class="flex movedown flex-col w-full px-6 py-6 mx-auto overflow-visible list-none ltr:text-right rtl:text-left max-w-7xl sm:px-14 md:px-24 lg:px-32 sm:py-10 sm:pt-10">
|
||||||
|
<li class="mb-1">
|
||||||
|
<span class="cursor-pointer hover:text-primary-600 dark:hover:text-primary-400">{{
|
||||||
|
partial
|
||||||
|
"icon.html"
|
||||||
|
"xmark" }}</span>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
{{ if .Site.Menus.main }}
|
||||||
|
{{ range .Site.Menus.main }}
|
||||||
|
<li class="mb-1">
|
||||||
|
<a {{ if or (strings.HasPrefix .URL "http:" ) (strings.HasPrefix .URL "https:" ) }}
|
||||||
|
target="_blank" {{ end }}
|
||||||
|
class="decoration-primary-500 hover:underline hover:decoration-2 hover:underline-offset-2"
|
||||||
|
href="{{ .URL }}" title="{{ .Title }}">
|
||||||
|
{{ partial "icon.html" .Pre }}
|
||||||
|
{{ if and .Pre .Name }} {{ end }}
|
||||||
|
{{ .Name | markdownify | emojify }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
window.addEventListener('scroll', function (e) {
|
||||||
|
var scroll = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
|
||||||
|
var background_blur = document.getElementById('menu-blur');
|
||||||
|
background_blur.style.opacity = (scroll / 300)
|
||||||
|
});
|
||||||
|
</script>
|
||||||
@@ -1,10 +1,11 @@
|
|||||||
{{- $images := .Resources.ByType "image" -}}
|
{{- $images := .Resources.ByType "image" -}}
|
||||||
{{- $featured := $images.GetMatch "*feature*" -}}
|
{{- $featured := $images.GetMatch "*feature*" -}}
|
||||||
{{- if not $featured }}{{ $featured = $images.GetMatch "{*cover*,*thumbnail*}" }}{{ end -}}
|
{{- if not $featured }}{{ $featured = $images.GetMatch "{*cover*,*thumbnail*}" }}{{ end -}}
|
||||||
|
{{- if not $featured }}{{ with .Site.Params.defaultBackgroundImage }}{{ $featured = resources.Get . }}{{ end }}{{ end -}}
|
||||||
{{- with $featured -}}
|
{{- with $featured -}}
|
||||||
{{ with .Resize "1200x" }}
|
{{ with .Resize "1200x" }}
|
||||||
<div id="hero" class="h-[250px] md:h-[300px] lg:h-[350px]"></div>
|
<div id="hero" class="h-[150px] md:h-[200px]"></div>
|
||||||
<div class="fixed inset-x-0 top-0 h-[900px] single_hero_background nozoom"
|
<div class="fixed inset-x-0 top-0 h-[800px] single_hero_background nozoom"
|
||||||
style="background-image:url({{ .RelPermalink }});">
|
style="background-image:url({{ .RelPermalink }});">
|
||||||
<div class="absolute inset-0 bg-gradient-to-t from-neutral dark:from-neutral-800 to-transparent mix-blend-normal">
|
<div class="absolute inset-0 bg-gradient-to-t from-neutral dark:from-neutral-800 to-transparent mix-blend-normal">
|
||||||
</div>
|
</div>
|
||||||
@@ -12,13 +13,15 @@
|
|||||||
class="absolute inset-0 opacity-30 dark:opacity-60 bg-gradient-to-t from-neutral dark:from-neutral-800 to-neutral dark:to-neutral-800 mix-blend-normal">
|
class="absolute inset-0 opacity-30 dark:opacity-60 bg-gradient-to-t from-neutral dark:from-neutral-800 to-neutral dark:to-neutral-800 mix-blend-normal">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{{ if $.Site.Params.article.layoutBackgroundBlur | default false }}
|
||||||
<div id="background-blur" class="fixed opacity-0 inset-x-0 top-0 h-full single_hero_background nozoom backdrop-blur-2xl"></div>
|
<div id="background-blur" class="fixed opacity-0 inset-x-0 top-0 h-full single_hero_background nozoom backdrop-blur-2xl"></div>
|
||||||
<script>
|
<script>
|
||||||
window.addEventListener('scroll', function (e) {
|
window.addEventListener('scroll', function (e) {
|
||||||
var scroll = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
|
var scroll = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
|
||||||
var background_blur = document.getElementById('background-blur');
|
var background_blur = document.getElementById('background-blur');
|
||||||
background_blur.style.opacity = (scroll / 150.0)
|
background_blur.style.opacity = (scroll / 300)
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
@@ -4,9 +4,10 @@
|
|||||||
<div class="mx-auto max-w-7xl p-0">
|
<div class="mx-auto max-w-7xl p-0">
|
||||||
<div class="relative sm:overflow-hidden">
|
<div class="relative sm:overflow-hidden">
|
||||||
<div class="fixed inset-x-0 top-0" style="z-index:-10">
|
<div class="fixed inset-x-0 top-0" style="z-index:-10">
|
||||||
{{ with .Site.Params.homepage.homepageImage }}
|
{{ $homepageImage := "" }}
|
||||||
{{ $homepageImage := resources.Get . }}
|
{{ with .Site.Params.defaultBackgroundImage }}{{ $homepageImage = resources.Get . }}{{ end }}
|
||||||
{{ if $homepageImage }}
|
{{ with .Site.Params.homepage.homepageImage }}{{ $homepageImage = resources.Get . }}{{ end }}
|
||||||
|
{{ if not (eq $homepageImage "") }}
|
||||||
<img class="w-full h-[1000px] object-cover m-0 nozoom" src="{{ $homepageImage.RelPermalink }}">
|
<img class="w-full h-[1000px] object-cover m-0 nozoom" src="{{ $homepageImage.RelPermalink }}">
|
||||||
<div
|
<div
|
||||||
class="absolute inset-0 h-[1000px] bg-gradient-to-t from-neutral dark:from-neutral-800 to-transparent mix-blend-normal">
|
class="absolute inset-0 h-[1000px] bg-gradient-to-t from-neutral dark:from-neutral-800 to-transparent mix-blend-normal">
|
||||||
@@ -15,7 +16,6 @@
|
|||||||
class="opacity-70 absolute inset-0 h-[1000px] bg-gradient-to-t from-neutral dark:from-neutral-800 to-neutral dark:to-neutral-800 mix-blend-normal">
|
class="opacity-70 absolute inset-0 h-[1000px] bg-gradient-to-t from-neutral dark:from-neutral-800 to-neutral dark:to-neutral-800 mix-blend-normal">
|
||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
|
||||||
</div>
|
</div>
|
||||||
<div class="relative px-4 py-16 sm:px-6 sm:py-24 lg:py-32 lg:px-8 flex flex-col items-center justify-center text-center">
|
<div class="relative px-4 py-16 sm:px-6 sm:py-24 lg:py-32 lg:px-8 flex flex-col items-center justify-center text-center">
|
||||||
{{ with .Site.Author.image }}
|
{{ with .Site.Author.image }}
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
<div class="flex flex-wrap">
|
<div class="flex flex-wrap">
|
||||||
{{ range $links := . }}
|
{{ range $links := . }}
|
||||||
{{ range $name, $url := $links }}
|
{{ range $name, $url := $links }}
|
||||||
<a class="px-1 hover:text-primary-400 text-primary-700 dark:text-primary-300" href="{{ $url }}" target="_blank"
|
<a class="px-1 hover:text-primary-400 text-primary-800 dark:text-primary-200" href="{{ $url }}" target="_blank"
|
||||||
aria-label="{{ $name | title }}" rel="me noopener noreferrer">{{ partial
|
aria-label="{{ $name | title }}" rel="me noopener noreferrer">{{ partial
|
||||||
"icon.html" $name }}</a>
|
"icon.html" $name }}</a>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
@@ -56,3 +56,13 @@
|
|||||||
<section>
|
<section>
|
||||||
{{ partial "recent-articles.html" . }}
|
{{ partial "recent-articles.html" . }}
|
||||||
</section>
|
</section>
|
||||||
|
{{ if .Site.Params.homepage.layoutBackgroundBlur | default false }}
|
||||||
|
<div id="background-blur" class="fixed opacity-0 inset-x-0 top-0 h-full single_hero_background nozoom backdrop-blur-2xl"></div>
|
||||||
|
<script>
|
||||||
|
window.addEventListener('scroll', function (e) {
|
||||||
|
var scroll = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
|
||||||
|
var background_blur = document.getElementById('background-blur');
|
||||||
|
background_blur.style.opacity = (scroll / 300)
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
{{ end }}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{{ $icon := resources.Get (print "icons/" . ".svg") }}
|
{{ $icon := resources.Get (print "icons/" . ".svg") }}
|
||||||
{{ if $icon }}
|
{{ if $icon }}
|
||||||
<span class="relative inline-block align-text-bottom icon">
|
<span class="relative block icon">
|
||||||
{{ $icon.Content | safeHTML }}
|
{{ $icon.Content | safeHTML }}
|
||||||
</span>
|
</span>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
title="{{ i18n "article.edit_title" }}"
|
title="{{ i18n "article.edit_title" }}"
|
||||||
>{{ partial "icon.html" "edit" }}</a
|
><span class="inline-block align-text-bottom">{{ partial "icon.html" "edit" }}</span></a
|
||||||
>
|
>
|
||||||
</span>
|
</span>
|
||||||
{{- /* Trim EOF */ -}}
|
{{- /* Trim EOF */ -}}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<span>
|
<span>
|
||||||
<span id="likes_{{ .File.Path }}" title="likes">0</span>
|
<span id="likes_{{ .File.Path }}" title="likes">0</span>
|
||||||
<span>{{ partial "icon.html" "heart" }}</span>
|
<span class="inline-block align-text-bottom">{{ partial "icon.html" "heart" }}</span>
|
||||||
</span>
|
</span>
|
||||||
{{- /* Trim EOF */ -}}
|
{{- /* Trim EOF */ -}}
|
||||||