Compare commits

...
173 Commits
Author SHA1 Message Date
Nuno C. f6f6aa9577 Merge pull request #2542 from nunocoracao/dev
Dev
2025-10-14 10:22:14 +01:00
Nuno Coração 43dcc375d6 small fixes 2025-10-14 10:21:43 +01:00
Nuno C. 8db2442743 Merge pull request #2541 from nunocoracao/main
Sync
2025-10-14 10:16:29 +01:00
Nuno C. 452bdd408b Merge branch 'dev' into main 2025-10-14 10:16:20 +01:00
Nuno C. 80746a1fce Merge pull request #2515 from ZhenShuo2021/feat/image-position
✨ Feat: add `imagePosition` to allow align image
2025-10-14 10:14:27 +01:00
Nuno C. b29c6614dc Merge branch 'dev' into feat/image-position 2025-10-14 10:14:18 +01:00
Nuno C. 1597b4b356 Merge pull request #2525 from nunocoracao/dependabot/npm_and_yarn/tar-fs-3.1.1
chore(deps-dev): bump tar-fs from 3.1.0 to 3.1.1
2025-10-14 10:11:42 +01:00
Nuno C. 6e5a0769d3 Merge pull request #2539 from Flexicon/fix-heading-anchor-colour-flicker
🐛 Fix(render-heading): prevent colour flicker on anchor links
2025-10-14 10:11:19 +01:00
Nuno C. f441e653fb Merge pull request #2538 from thetorminal/patch-2
relLangUrl in $showMoreLinkDest
2025-10-14 10:10:48 +01:00
Nuno C. ad5295d335 Merge pull request #2537 from tveyben/add-danish
Adds danish translation
2025-10-14 10:10:07 +01:00
Nuno C. edab149fca Merge pull request #2536 from ZhenShuo2021/chore/contributing
🔧 Chore: CONTRIBUTING.md
2025-10-14 10:09:39 +01:00
Nuno C. fcd9b6cc89 Merge pull request #2535 from ZhenShuo2021/docs/patches
📝 Docs: small patches
2025-10-14 10:09:19 +01:00
Nuno C. 01dafef575 Merge pull request #2533 from ZhenShuo2021/feat/mermaid-dark
✨ Feat(mermaid): support dark mode
2025-10-14 10:08:26 +01:00
Nuno C. 7f4e044464 Merge pull request #2532 from ZhenShuo2021/fix/render-image
🐛 Fix(render-image): correct srcset and HTML structure
2025-10-14 10:07:52 +01:00
Nuno C. 7094f95a27 Merge pull request #2531 from ghlrobin/patch-1
Update Firebase CLI installation command
2025-10-14 10:07:10 +01:00
Nuno C. cc7989614a Merge pull request #2520 from Sunrongguo2008/patch-1
Update index.zh-cn.md
2025-10-14 10:06:03 +01:00
Nuno C. f2fd7a35cc Merge pull request #2519 from Sunrongguo2008/main
Update index.zh-cn.md
2025-10-14 10:05:34 +01:00
Nuno C. 9b6ed820e9 Merge pull request #2509 from ZhenShuo2021/fix/terms-typo
🐛 Fix: multiple small patches
2025-10-14 09:55:46 +01:00
Nuno C. 1a86ce0bd7 Merge pull request #2507 from tekdahl/carousel-aspectratio
Carousel support any aspect ratio
2025-10-14 09:53:15 +01:00
Nuno C. ce18bf1134 Merge pull request #2505 from ZhenShuo2021/feat/hotlink
✨ Feat: support `hotlinkFeatureImage`
2025-10-14 09:50:21 +01:00
Nuno C.andCopilot 719e505d01 Update layouts/partials/article-link/_shortcode.html
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-14 09:50:02 +01:00
Nuno C.andCopilot cac66e0fd7 Update layouts/partials/article-link/card-related.html
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-14 09:49:50 +01:00
Nuno C.andCopilot fba28d5274 Update layouts/partials/article-link/card.html
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-14 09:49:38 +01:00
Nuno C.andCopilot c714e91685 Update layouts/partials/article-link/simple.html
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-14 09:49:29 +01:00
Nuno C.andCopilot 831af00253 Update layouts/partials/hero/background.html
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-14 09:49:15 +01:00
Nuno C.andCopilot f153250887 Update layouts/partials/hero/basic.html
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-14 09:48:58 +01:00
Nuno C.andCopilot eef77a4a80 Update layouts/partials/hero/thumbAndBackground.html
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-14 09:48:32 +01:00
Nuno C.andCopilot 2e4e97c5b8 Update layouts/partials/hero/thumbAndBackground.html
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-14 09:48:02 +01:00
Nuno C. b91653687b Merge pull request #2499 from quasialex/main
Update head.html
2025-10-14 09:46:26 +01:00
Mike Repec b4a13da6d8 🐛 Fix(render-heading): prevent colour flicker on anchor links
The group-hover prefix is redundant and cause the colour to flicker
for the anchor link tag - the colour should actually stay the same
and only have it's opacity (visibility really) controlled via group-hover.
2025-10-13 09:18:45 +02:00
torminal 9c5ecfb45b relLangUrl in $showMoreLinkDest
Currently, the show more button doesnt support multilingual websites. Fixed with "| relLangURL"
2025-10-11 14:43:42 +02:00
TvE 4a19b81bd5 Adds danish translation 2025-10-11 11:19:49 +02:00
ZhenShuo Leo faeb1e1dea chore: move dev branch description to the front 2025-10-11 15:41:27 +08:00
ZhenShuo Leo 925065a5bd feat(mermaid): support dark mode 2025-10-11 15:24:21 +08:00
ZhenShuo Leo 792ec9a601 refactor(render-image): see detail
- trim white spaces which can't be eliminated by minify
- unify dict input usages
2025-10-11 15:07:20 +08:00
ZhenShuo Leo 8bfa9926c7 fix(render-image): improper srcset usage
- correct srcset image w descriptor value
- use compressed image for src fallback
2025-10-11 15:07:20 +08:00
ZhenShuo Leo 90e553541e fix: enable wrapStandAloneImageWithinParagraph by default
This fixes invalid HTML where figure tag is inside p tag.
However, this does not fix linked images, e.g., `[![alt](image)](url)`.
The cleanest way to resolve linked images is using markdown-attributes,
but markdown-attributes is not recommended by CommonMark.

See:

- https://discourse.gohugo.io/t/how-to-do-wrap-img-with-a-inside-figure-with-render-image-html/44843
- https://github.com/gohugoio/hugo/blob/master/markup/goldmark/images/transform.go
- https://gohugo.io/content-management/markdown-attributes/
- https://github.com/commonmark/commonmark-spec/wiki/Deployed-Extensions#attributes
2025-10-11 15:07:20 +08:00
ZhenShuo Leo a19edf471b chore(header): correct template naming 2025-10-11 03:11:00 +08:00
ZhenShuo Leo 40eea78d8c chore(footer): use logical properties 2025-10-11 03:10:00 +08:00
ZhenShuo Leo 4550723e94 fix: carousel CSS build path (#1545) 2025-10-11 15:19:36 +08:00
ZhenShuo Leo c9c8a36c16 fix: article-pagination
- simplify html
- fix rtl item alignment
- fix empty span tag when showDate is false
- align hover effect with other element, removes group hover underline
2025-10-11 15:19:36 +08:00
ZhenShuo Leo 6c8e0d7933 fix(header): add aria-label for icons 2025-10-11 15:19:36 +08:00
ZhenShuo Leo 9a043d83ab fix(single.html): toc not controlled by frontmatter (redo #2428) 2025-10-11 15:19:36 +08:00
ZhenShuo Leo 9b35cc2bae fix(toc): too wide when no related contents 2025-10-11 15:19:36 +08:00
ZhenShuo Leo d8ea1d81b5 fix: article shortcode padding 2025-10-11 15:19:35 +08:00
ZhenShuo Leo 751856fcc2 fix: show full size author image when zooming 2025-10-11 15:19:35 +08:00
ZhenShuo Leo ba45e11207 fix: repo card css output path conflict 2025-10-11 15:19:35 +08:00
ZhenShuo Leo de43ea47cb fix: scroll to top height offset on rtl sites 2025-10-11 15:19:35 +08:00
ZhenShuo Leo eb01381598 fix(header): remove logo alt 2025-10-11 15:19:35 +08:00
ZhenShuo Leo 9665fe953c fix(header): align width with body
remove all horizontal padding
align layout padding settings with body
split body classes into three variables
2025-10-11 15:19:35 +08:00
ZhenShuo Leo d4620d5318 fix(blur): remove small right-edge gap of blur on mobile devices 2025-10-11 15:19:35 +08:00
ZhenShuo Leo 2c6a95a755 fix(toc): incorrect active link in short paragraph 2025-10-11 15:19:35 +08:00
ZhenShuo Leo fefb7d2fb5 fix(katex): content hidden at container edges 2025-10-11 15:19:35 +08:00
ZhenShuo Leo ba8aac3a14 fix(terms): typo term -> taxonomy 2025-10-11 15:19:35 +08:00
Nuno C. 908c988d06 Merge pull request #2528 from nunocoracao/dependabot/npm_and_yarn/dev/puppeteer-24.23.0 2025-10-10 18:03:08 +01:00
Ganghyeok Lee (Robin) d517626b4e Update Firebase CLI installation command 2025-10-10 14:56:05 +09:00
dependabot[bot] e608898f83 📌 Bump puppeteer from 24.22.3 to 24.23.0
Bumps [puppeteer](https://github.com/puppeteer/puppeteer) from 24.22.3 to 24.23.0.
- [Release notes](https://github.com/puppeteer/puppeteer/releases)
- [Changelog](https://github.com/puppeteer/puppeteer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/puppeteer/puppeteer/compare/puppeteer-v24.22.3...puppeteer-v24.23.0)

---
updated-dependencies:
- dependency-name: puppeteer
  dependency-version: 24.23.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-09 12:29:27 +00:00
Nuno C. c47160936b Merge pull request #2529 from nunocoracao/dependabot/npm_and_yarn/dev/katex-0.16.23 2025-10-09 13:28:40 +01:00
Nuno C. 44e02bbc13 Merge pull request #2527 from nunocoracao/dependabot/npm_and_yarn/dev/tailwindcss/cli-4.1.14 2025-10-09 13:28:19 +01:00
Nuno C. cfa5c6f32d Merge pull request #2526 from nunocoracao/dependabot/npm_and_yarn/dev/tailwindcss-4.1.14 2025-10-09 13:28:04 +01:00
ZhenShuo Leo 4afe06a57d docs: add margin to homepage switch button 2025-10-09 15:51:35 +08:00
ZhenShuo Leo f02776ff4f docs: add invertPagination to samples section 2025-10-09 15:51:34 +08:00
ZhenShuo Leo 60ed15f97c docs: headings not in descending order 2025-10-09 15:51:34 +08:00
ZhenShuo Leo 0eba74c3c6 docs: remove empty link from document site 2025-10-09 15:51:34 +08:00
ZhenShuo Leo 1802b07e29 docs: restore high-resolution images from old commit
Since the images are already in the commit history,
using new low-quality images does not help reduce the repo size

Images are from commit 37118381a6
2025-10-09 15:51:34 +08:00
ZhenShuo Leo 3918571644 chore(article-link): use old naming of css class name
though the new thumbnail--xxx naming is cleaner
but this kind of change should be postponed until a major release
2025-10-08 13:15:31 +08:00
ZhenShuo Leo a27d65ad36 fix(article-link): replace figure tag to div
this is not needed for decorative images
2025-10-08 13:06:24 +08:00
dependabot[bot] 84185205e1 📦 Update packaged KaTeX 2025-10-08 05:02:53 +00:00
dependabot[bot] 4417b41319 💄 Rebuild CSS 2025-10-08 05:02:33 +00:00
dependabot[bot] 57b5c2cf6e 📌 Bump katex from 0.16.22 to 0.16.23
Bumps [katex](https://github.com/KaTeX/KaTeX) from 0.16.22 to 0.16.23.
- [Release notes](https://github.com/KaTeX/KaTeX/releases)
- [Changelog](https://github.com/KaTeX/KaTeX/blob/main/CHANGELOG.md)
- [Commits](https://github.com/KaTeX/KaTeX/compare/v0.16.22...v0.16.23)

---
updated-dependencies:
- dependency-name: katex
  dependency-version: 0.16.23
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-08 05:02:26 +00:00
dependabot[bot] 4a9363b1bf 📌 Bump @tailwindcss/cli from 4.1.13 to 4.1.14
Bumps [@tailwindcss/cli](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-cli) from 4.1.13 to 4.1.14.
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.1.14/packages/@tailwindcss-cli)

---
updated-dependencies:
- dependency-name: "@tailwindcss/cli"
  dependency-version: 4.1.14
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-08 05:02:02 +00:00
dependabot[bot] b993c203d3 📌 Bump tailwindcss from 4.1.13 to 4.1.14
Bumps [tailwindcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss) from 4.1.13 to 4.1.14.
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.1.14/packages/tailwindcss)

---
updated-dependencies:
- dependency-name: tailwindcss
  dependency-version: 4.1.14
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-08 05:01:52 +00:00
dependabot[bot] 30a1bd281e 💄 Rebuild CSS 2025-10-07 22:16:33 +00:00
dependabot[bot] af3893546a chore(deps-dev): bump tar-fs from 3.1.0 to 3.1.1
Bumps [tar-fs](https://github.com/mafintosh/tar-fs) from 3.1.0 to 3.1.1.
- [Commits](https://github.com/mafintosh/tar-fs/compare/v3.1.0...v3.1.1)

---
updated-dependencies:
- dependency-name: tar-fs
  dependency-version: 3.1.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-07 22:16:08 +00:00
Nuno C. c7ed2261a3 Merge pull request #2467 from ZhenShuo2021/fix/head
🐛 Fix(head): meta handling and conditional analytics loading
2025-10-07 23:14:09 +01:00
Nuno C. 0ce00113cb Merge pull request #2510 from encelo/new-users
Add two new sites made with Blowfish
2025-10-07 23:13:40 +01:00
Nuno C. 9cd5e2e575 Merge branch 'dev' into new-users 2025-10-07 23:13:25 +01:00
Nuno C. a073bd45d9 Merge pull request #2511 from Metalhearf/Metalhearf-patch-1
Update users.json
2025-10-07 23:11:39 +01:00
Nuno C. e52cc05f63 Merge branch 'dev' into Metalhearf-patch-1 2025-10-07 23:11:33 +01:00
Nuno C. 0048f8b6dd Merge pull request #2517 from nunocoracao/dependabot/npm_and_yarn/dev/tailwindcss/typography-0.5.19
📌 Bump @tailwindcss/typography from 0.5.16 to 0.5.19
2025-10-07 23:10:00 +01:00
dependabot[bot] da627a0cc7 💄 Rebuild CSS 2025-10-07 17:42:10 +00:00
dependabot[bot] 98a73acbfa 📌 Bump @tailwindcss/typography from 0.5.16 to 0.5.19
Bumps [@tailwindcss/typography](https://github.com/tailwindlabs/tailwindcss-typography) from 0.5.16 to 0.5.19.
- [Release notes](https://github.com/tailwindlabs/tailwindcss-typography/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss-typography/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss-typography/compare/v0.5.16...v0.5.19)

---
updated-dependencies:
- dependency-name: "@tailwindcss/typography"
  dependency-version: 0.5.19
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-07 17:41:41 +00:00
Nuno C. 7305c4ae0b Merge pull request #2518 from nunocoracao/dependabot/npm_and_yarn/dev/puppeteer-24.22.3
📌 Bump puppeteer from 24.21.0 to 24.22.3
2025-10-07 18:40:49 +01:00
Nuno C. 94c6132efe Merge pull request #2516 from nunocoracao/dependabot/npm_and_yarn/dev/headlessui/react-2.2.9
📌 Bump @headlessui/react from 2.2.8 to 2.2.9
2025-10-07 18:40:07 +01:00
Nuno C. d7471833a9 Merge pull request #2504 from nunocoracao/hugo-new-version
⚙️ Update Hugo supported version
2025-10-07 18:39:56 +01:00
Nuno C. 3aa845e5cc Merge pull request #2502 from nunocoracao/dependabot/npm_and_yarn/dev/mermaid-11.12.0
📌 Bump mermaid from 11.11.0 to 11.12.0
2025-10-07 18:39:41 +01:00
Nuno C. f8124a6ac9 Merge pull request #2500 from nunocoracao/dependabot/npm_and_yarn/dev/tailwindcss/typography-0.5.18
📌 Bump @tailwindcss/typography from 0.5.16 to 0.5.18
2025-10-07 18:39:30 +01:00
Nuno C. 3344870b90 Add CODEOWNERS file for repository ownership 2025-10-07 18:29:15 +01:00
ZhenShuo Leo c599c3489e fix(head): scroll to top element not found error 2025-10-04 07:36:22 +08:00
nunocoracao 62a3ccc041 Update Hugo supported version 2025-10-03 06:06:58 +00:00
Sunong2008 2c39e2654c Update index.zh-cn.md 2025-10-02 09:07:57 +08:00
Sunong2008 9b6544fa09 Update index.zh-cn.md 2025-10-02 07:06:56 +08:00
Sunong2008 435c1050f9 Update index.zh-cn.md 2025-10-02 06:59:07 +08:00
ZhenShuo Leo b9a45ea2a9 fix(head): pass current context to analytics 2025-10-01 17:00:58 +08:00
ZhenShuo Leo 8b41f89455 fix(head): only load analytics when IsProduction 2025-10-01 17:00:58 +08:00
ZhenShuo Leo 374a0f51f7 fix(head): social image meta duplication 2025-10-01 17:00:58 +08:00
ZhenShuo Leo b3bc04cfc3 refactor(head): move meta to the front 2025-10-01 17:00:58 +08:00
ZhenShuo Leo 7b694613da refactor(head): remove unnecessary space trim 2025-10-01 17:00:58 +08:00
ZhenShuo Leo 2c9f1af5b2 refactor(head): remove unnecessary newScratch 2025-10-01 13:36:11 +08:00
dependabot[bot] e619196b81 📌 Bump puppeteer from 24.21.0 to 24.22.3
Bumps [puppeteer](https://github.com/puppeteer/puppeteer) from 24.21.0 to 24.22.3.
- [Release notes](https://github.com/puppeteer/puppeteer/releases)
- [Changelog](https://github.com/puppeteer/puppeteer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/puppeteer/puppeteer/compare/puppeteer-v24.21.0...puppeteer-v24.22.3)

---
updated-dependencies:
- dependency-name: puppeteer
  dependency-version: 24.22.3
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-01 05:02:16 +00:00
dependabot[bot] d8dc422205 📌 Bump @headlessui/react from 2.2.8 to 2.2.9
Bumps [@headlessui/react](https://github.com/tailwindlabs/headlessui/tree/HEAD/packages/@headlessui-react) from 2.2.8 to 2.2.9.
- [Release notes](https://github.com/tailwindlabs/headlessui/releases)
- [Changelog](https://github.com/tailwindlabs/headlessui/blob/main/packages/@headlessui-react/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/headlessui/commits/@headlessui/react@v2.2.9/packages/@headlessui-react)

---
updated-dependencies:
- dependency-name: "@headlessui/react"
  dependency-version: 2.2.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-01 05:01:55 +00:00
ZhenShuo Leo ec8d9297f9 docs: add support for imagePosition config 2025-09-30 23:35:51 +08:00
ZhenShuo Leo f827f8e8d8 feat: add support for imagePosition config 2025-09-30 23:09:43 +08:00
Metalhearf 8e1c70b5f6 Add new user entry for metalhearf.fr 2025-09-29 17:30:17 +02:00
Angelo Theodorou 8823610faf Add two new sites made with Blowfish 2025-09-29 03:02:42 +02:00
Ted 132e932bd4 update shortcode carousel documentation 2025-09-28 09:55:21 -05:00
Ted 45c084afa0 Update carousel.html to support arbitrary aspect ratios 2025-09-28 09:29:30 -05:00
ZhenShuo Leo 22f097f92a chore: hotlinkFeatureImages -> hotlinkFeatureImage 2025-09-27 09:12:58 +08:00
ZhenShuo Leo 9eebb5b2aa fix: img attribute
add loading/decoding/fetchpriority

remove alt for decorative images
2025-09-26 22:37:56 +08:00
ZhenShuo Leo e6968d877f feat(hero): add support for hotlinkFeatureImages 2025-09-26 22:07:26 +08:00
ZhenShuo Leo 4b9e63fd99 feat(article-link): add support for hotlinkFeatureImages 2025-09-26 22:06:53 +08:00
dependabot[bot] d7fc5acd05 📦 Update packaged Mermaid 2025-09-24 05:02:36 +00:00
dependabot[bot] 44c20b3cf0 💄 Rebuild CSS 2025-09-24 05:02:17 +00:00
dependabot[bot] ab16811839 📌 Bump mermaid from 11.11.0 to 11.12.0
Bumps [mermaid](https://github.com/mermaid-js/mermaid) from 11.11.0 to 11.12.0.
- [Release notes](https://github.com/mermaid-js/mermaid/releases)
- [Commits](https://github.com/mermaid-js/mermaid/compare/mermaid@11.11.0...mermaid@11.12.0)

---
updated-dependencies:
- dependency-name: mermaid
  dependency-version: 11.12.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-24 05:02:07 +00:00
dependabot[bot] 3d2ffada0f 📌 Bump @tailwindcss/typography from 0.5.16 to 0.5.18
Bumps [@tailwindcss/typography](https://github.com/tailwindlabs/tailwindcss-typography) from 0.5.16 to 0.5.18.
- [Release notes](https://github.com/tailwindlabs/tailwindcss-typography/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss-typography/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss-typography/compare/v0.5.16...v0.5.18)

---
updated-dependencies:
- dependency-name: "@tailwindcss/typography"
  dependency-version: 0.5.18
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-24 05:01:42 +00:00
quasialex 98f5b2c3b4 Update head.html
Correction: firebaseConfig authDomain
2025-09-23 20:28:50 +03:00
ZhenShuo Leo 7cb8dcc4a1 chore(article-link): remove _external-link.html
we don't need this anymore
2025-09-23 23:02:17 +08:00
Nuno C. e26666c001 Merge pull request #2497 from ZhenShuo2021/chore/icon-title
🔧 Chore: add title to icons
2025-09-23 15:56:36 +01:00
Nuno C. 646d1eca82 Merge pull request #2496 from ZhenShuo2021/fix/term
🐛 Fix(term): allow controled by frontmatter
2025-09-23 15:56:06 +01:00
Nuno C. 6f0238652b Merge pull request #2495 from ZhenShuo2021/fix/page-widget
🐛 Fix: page widget
2025-09-23 15:55:25 +01:00
Nuno C. 619fe502dc Merge pull request #2478 from milesbarr/dev
Fix HTML for menu items that only have an icon
2025-09-23 15:54:04 +01:00
ZhenShuo Leo 1159e78cc3 chore: rebuild css 2025-09-23 18:32:59 +08:00
ZhenShuo Leo 545febc7c0 chore: add title to icons 2025-09-23 18:01:19 +08:00
ZhenShuo Leo 17292857a7 fix(term): add margin to header 2025-09-23 18:01:08 +08:00
ZhenShuo Leo 7c4c740b25 fix(term): allow controled by frontmatter 2025-09-23 18:01:08 +08:00
ZhenShuo Leo 65ab50a901 fix(baseof): add offset to skip to main content 2025-09-23 17:57:58 +08:00
ZhenShuo Leo bcc9cf9f6c fix(baseof): correct typo 2025-09-23 17:57:58 +08:00
ZhenShuo Leo c330c17215 fix(buymeacoffee): widget position letter case and default value 2025-09-23 17:57:58 +08:00
ZhenShuo Leo b777d4e59e fix(scroll-to-top): resolve overlap with buy me a coffee button 2025-09-23 17:57:58 +08:00
Nuno C. 019388def8 Merge pull request #2493 from ZhenShuo2021/fix/carousel
🐛 Fix(carousel): prevent generating duplicate CSS files
2025-09-22 18:53:27 +01:00
Nuno C. 843677c383 Merge pull request #2489 from ZhenShuo2021/docs/lint
📝 DX(docs): remove extra spaces in long table
2025-09-22 18:52:25 +01:00
Nuno C. d35cb4012b Merge pull request #2487 from nunocoracao/dependabot/npm_and_yarn/dev/commander-14.0.1
📌 Bump commander from 14.0.0 to 14.0.1
2025-09-22 18:51:46 +01:00
Nuno C. 16bbb0f464 Merge pull request #2486 from nunocoracao/dependabot/npm_and_yarn/dev/puppeteer-24.21.0
📌 Bump puppeteer from 24.19.0 to 24.21.0
2025-09-22 18:51:28 +01:00
Nuno C. b96e5120ef Merge pull request #2490 from marcriera/i18n-ca
🌐 Update Catalan i18n
2025-09-22 18:51:17 +01:00
Nuno C. 97b2f5c851 Merge pull request #2494 from tb1337/tb1337-update-users
Update users.json
2025-09-22 18:50:57 +01:00
Nuno C. 84163ad4ea Merge pull request #2485 from nunocoracao/dependabot/npm_and_yarn/dev/tailwindcss/cli-4.1.13
📌 Bump @tailwindcss/cli from 4.1.12 to 4.1.13
2025-09-22 18:47:34 +01:00
Nuno C. 8c1365d819 Merge pull request #2484 from nunocoracao/dependabot/npm_and_yarn/dev/headlessui/react-2.2.8
📌 Bump @headlessui/react from 2.2.7 to 2.2.8
2025-09-22 18:47:21 +01:00
Nuno C. f1a11b3357 Merge pull request #2483 from nunocoracao/dependabot/npm_and_yarn/dev/tailwindcss-4.1.13
📌 Bump tailwindcss from 4.1.12 to 4.1.13
2025-09-22 18:47:07 +01:00
tb ab385ef0e7 Update users.json 2025-09-21 19:38:47 +02:00
ZhenShuo Leo e1f59b6108 fix(carousel): prevent generating duplicate CSS files
use inline CSS to avoid extra workarounds
2025-09-20 01:09:15 +08:00
Marc Riera cfeab47b1b Update Catalan i18n 2025-09-18 11:13:02 +02:00
ZhenShuo Leo f04b850966 docs: remove extra spaces 2025-09-18 15:22:42 +08:00
dependabot[bot] 1cb5e9ab2f 💄 Rebuild CSS 2025-09-17 05:02:38 +00:00
dependabot[bot] cfa6913496 📌 Bump commander from 14.0.0 to 14.0.1
Bumps [commander](https://github.com/tj/commander.js) from 14.0.0 to 14.0.1.
- [Release notes](https://github.com/tj/commander.js/releases)
- [Changelog](https://github.com/tj/commander.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tj/commander.js/compare/v14.0.0...v14.0.1)

---
updated-dependencies:
- dependency-name: commander
  dependency-version: 14.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-17 05:02:27 +00:00
dependabot[bot] ad7bac5432 📌 Bump puppeteer from 24.19.0 to 24.21.0
Bumps [puppeteer](https://github.com/puppeteer/puppeteer) from 24.19.0 to 24.21.0.
- [Release notes](https://github.com/puppeteer/puppeteer/releases)
- [Changelog](https://github.com/puppeteer/puppeteer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/puppeteer/puppeteer/compare/puppeteer-v24.19.0...puppeteer-v24.21.0)

---
updated-dependencies:
- dependency-name: puppeteer
  dependency-version: 24.21.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-17 05:02:21 +00:00
dependabot[bot] f68b90589c 📌 Bump @tailwindcss/cli from 4.1.12 to 4.1.13
Bumps [@tailwindcss/cli](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-cli) from 4.1.12 to 4.1.13.
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.1.13/packages/@tailwindcss-cli)

---
updated-dependencies:
- dependency-name: "@tailwindcss/cli"
  dependency-version: 4.1.13
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-17 05:02:10 +00:00
dependabot[bot] 97fa4b4970 📌 Bump @headlessui/react from 2.2.7 to 2.2.8
Bumps [@headlessui/react](https://github.com/tailwindlabs/headlessui/tree/HEAD/packages/@headlessui-react) from 2.2.7 to 2.2.8.
- [Release notes](https://github.com/tailwindlabs/headlessui/releases)
- [Changelog](https://github.com/tailwindlabs/headlessui/blob/main/packages/@headlessui-react/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/headlessui/commits/@headlessui/react@v2.2.8/packages/@headlessui-react)

---
updated-dependencies:
- dependency-name: "@headlessui/react"
  dependency-version: 2.2.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-17 05:02:01 +00:00
dependabot[bot] 1bbe7b5173 📌 Bump tailwindcss from 4.1.12 to 4.1.13
Bumps [tailwindcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss) from 4.1.12 to 4.1.13.
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.1.13/packages/tailwindcss)

---
updated-dependencies:
- dependency-name: tailwindcss
  dependency-version: 4.1.13
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-17 05:01:50 +00:00
Miles Barr 9872eebdde Merge branch 'dev' into dev 2025-09-16 07:56:02 -07:00
Nuno C. df859f1d70 Merge pull request #2482 from iunn-sh/main
✨ Feat: add cloud & cloud-moon icon
2025-09-16 11:11:08 +01:00
Nuno C. 6f6584e83a Merge pull request #2455 from ZhenShuo2021/feat/img-background
✨ Feat: Replace all background-image CSS with <img> tags
2025-09-16 11:10:32 +01:00
Nuno C. cd93ec0708 Merge pull request #2451 from ZhenShuo2021/feat/image-process
✨ Feat(article-link, hero): improve image handling
2025-09-16 11:10:04 +01:00
ZhenShuo Leo 3f0dc1d6e1 feat(hero): replace div with img tag
Changed: basic and thumbAndBackground layout
2025-09-16 15:08:36 +08:00
ZhenShuo Leo 340364f31a feat(article-link): use semantic HTML 2025-09-16 15:08:36 +08:00
ZhenShuo Leo d21a4e6e4a feat(term-link): implement the same behavior as article-link in term-link/card.html
use new hover logic
replace div with img tag
2025-09-16 15:08:36 +08:00
ZhenShuo Leo 01b998e070 feat(article-link): replace background div with img tag 2025-09-16 15:08:36 +08:00
ZhenShuo Leo 5bab41062a refactor(article-link): remove unnecessary with syntax 2025-09-16 15:08:35 +08:00
ZhenShuo Leo b1b7aa1f42 feat(article-link): reimplement card hover using ::before method
The previous method was not intuitive since there was nothing in the <a> tag,
and required group-xxx classes for every element.

The new pseudo element method fixes those problems, see:

https://kittygiraudel.com/2022/04/02/accessible-cards/
2025-09-16 15:08:35 +08:00
ZhenShuo Leo 8911ac843a chore(term-link): remove unused .Params.images 2025-09-16 15:08:35 +08:00
ZhenShuo Leo cb479d5693 feat(hero): support internal links for featureimage
This commit also gives the `featureimage` frontmatter the highest priority, preventing it from being overridden by hidden logic.
2025-09-16 15:08:35 +08:00
ZhenShuo Leo 9c1d56e0e7 feat(article-link): support internal links for featureimage
This commit also gives the `featureimage` frontmatter the highest priority, preventing it from being overridden by hidden logic.
2025-09-16 15:08:35 +08:00
ZhenShuo Leo 6d6b5d3946 fix(article-link): skip fetching images when hideFeatureImage is true 2025-09-16 15:08:35 +08:00
ZhenShuo Leo ff3a6b4253 fix(article-link): explicitly set featured priority 2025-09-16 15:08:35 +08:00
ZhenShuo Leo 0f7f27b916 refactor(article-link): separate Go templates from HTML rendering
Add descriptions for the purpose of each template.
It takes time to figure out their use every time.
2025-09-16 15:08:35 +08:00
ZhenShuo Leo c8ee5fc657 refactor(article-link): unify featured image rendering with MediaType check 2025-09-16 15:08:35 +08:00
ZhenShuo Leo e3194eca1e chore(article-link): remove unused .Params.images
The `.Params.images` and `.Site.Params.images` have existed since the creation of the files
but have never been referenced in the documentation since their initial commit (3cc1569fc1)

Also, Meta tags are not valid inside card elements
2025-09-16 15:08:22 +08:00
ish d25ec813f3 revert unrelated change 2025-09-16 10:10:40 +08:00
ish 5fe9f56561 Merge branch 'nunocoracao:main' into main 2025-09-16 10:00:05 +08:00
Nuno Coração ade5f2c6d6 🔖 v2.91.0 2025-09-15 23:30:30 +01:00
Miles Barr bf85845bc2 Fix HTML for menu items that only have an icon 2025-09-14 09:03:43 -07:00
ish c648324aca fix current color 2025-09-10 13:08:39 +08:00
ish 479e2efff4 fix conflict with dev 2025-09-10 13:03:47 +08:00
ish 4fa6542bf2 add icons: cloud, cloud-moon 2025-09-10 12:58:58 +08:00
107 changed files with 2425 additions and 1841 deletions

No files matched your search

+1
View File
@@ -0,0 +1 @@
* @nunocoracao
+2 -1
View File
@@ -1,5 +1,7 @@
## How to contribute to Blowfish ## How to contribute to Blowfish
All development occurs on the `dev` branch and new PRs should be forked from here.
### Bugs & other issues ### Bugs & other issues
#### Found a bug? 🐛 #### Found a bug? 🐛
@@ -11,7 +13,6 @@
#### Have a patch that fixes an issue? #### Have a patch that fixes an issue?
- Great! Open a new GitHub pull request with the patch. - Great! Open a new GitHub pull request with the patch.
- All development occurs on the `dev` branch and new PRs should be forked from here.
- The commands `npm run example`, `npm run example:core`, and `npm run example:production` can be used to test local changes using the example site. - The commands `npm run example`, `npm run example:core`, and `npm run example:production` can be used to test local changes using the example site.
- Ensure the PR description clearly describes the problem and solution. Include the relevant issue number, if applicable. - Ensure the PR description clearly describes the problem and solution. Include the relevant issue number, if applicable.
- **Before submitting**, check the [coding conventions](#coding-conventions) section below to learn more about coding and commit message expectations. - **Before submitting**, check the [coding conventions](#coding-conventions) section below to learn more about coding and commit message expectations.
+82 -150
View File
@@ -1,4 +1,4 @@
/*! tailwindcss v4.1.12 | MIT License | https://tailwindcss.com */ /*! tailwindcss v4.1.14 | MIT License | https://tailwindcss.com */
/*! Blowfish | MIT License | https://github.com/nunocoracao/blowfish */ /*! Blowfish | MIT License | https://github.com/nunocoracao/blowfish */
@layer properties; @layer properties;
#zen-mode-button { #zen-mode-button {
@@ -245,6 +245,7 @@ body.zen-mode-enable {
--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono",
"Courier New", monospace; "Courier New", monospace;
--spacing: 0.25rem; --spacing: 0.25rem;
--container-2xs: 18rem;
--container-xs: 20rem; --container-xs: 20rem;
--container-xl: 36rem; --container-xl: 36rem;
--container-3xl: 48rem; --container-3xl: 48rem;
@@ -463,7 +464,7 @@ body.zen-mode-enable {
padding: 0; padding: 0;
margin: -1px; margin: -1px;
overflow: hidden; overflow: hidden;
clip: rect(0, 0, 0, 0); clip-path: inset(50%);
white-space: nowrap; white-space: nowrap;
border-width: 0; border-width: 0;
} }
@@ -497,6 +498,9 @@ body.zen-mode-enable {
.start-\[calc\(max\(-50vw\,-800px\)\+50\%\)\] { .start-\[calc\(max\(-50vw\,-800px\)\+50\%\)\] {
inset-inline-start: calc(max(-50vw, -800px) + 50%); inset-inline-start: calc(max(-50vw, -800px) + 50%);
} }
.end-6 {
inset-inline-end: calc(var(--spacing) * 6);
}
.top-0 { .top-0 {
top: calc(var(--spacing) * 0); top: calc(var(--spacing) * 0);
} }
@@ -506,18 +510,18 @@ body.zen-mode-enable {
.top-20 { .top-20 {
top: calc(var(--spacing) * 20); top: calc(var(--spacing) * 20);
} }
.top-\[110vh\] {
top: 110vh;
}
.top-\[calc\(100vh-5\.5rem\)\] {
top: calc(100vh - 5.5rem);
}
.right-0 { .right-0 {
right: calc(var(--spacing) * 0); right: calc(var(--spacing) * 0);
} }
.bottom-0 { .bottom-0 {
bottom: calc(var(--spacing) * 0); bottom: calc(var(--spacing) * 0);
} }
.bottom-6 {
bottom: calc(var(--spacing) * 6);
}
.bottom-24 {
bottom: calc(var(--spacing) * 24);
}
.left-0 { .left-0 {
left: calc(var(--spacing) * 0); left: calc(var(--spacing) * 0);
} }
@@ -536,6 +540,9 @@ body.zen-mode-enable {
.z-30 { .z-30 {
z-index: 30; z-index: 30;
} }
.z-50 {
z-index: 50;
}
.z-80 { .z-80 {
z-index: 80; z-index: 80;
} }
@@ -650,6 +657,9 @@ body.zen-mode-enable {
.me-4 { .me-4 {
margin-inline-end: calc(var(--spacing) * 4); margin-inline-end: calc(var(--spacing) * 4);
} }
.me-6 {
margin-inline-end: calc(var(--spacing) * 6);
}
.prose { .prose {
color: var(--tw-prose-body); color: var(--tw-prose-body);
max-width: 65ch; max-width: 65ch;
@@ -741,7 +751,7 @@ body.zen-mode-enable {
} }
:where(hr):not(:where([class~="not-prose"],[class~="not-prose"] *)) { :where(hr):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
border-color: var(--tw-prose-hr); border-color: var(--tw-prose-hr);
border-top-width: 1; border-top-width: 1px;
margin-top: 3em; margin-top: 3em;
margin-bottom: 3em; margin-bottom: 3em;
} }
@@ -826,7 +836,7 @@ body.zen-mode-enable {
font-weight: 600; font-weight: 600;
font-family: inherit; font-family: inherit;
color: var(--tw-prose-kbd); color: var(--tw-prose-kbd);
box-shadow: 0 0 0 1px rgb(var(--tw-prose-kbd-shadows) / 10%), 0 3px 0 rgb(var(--tw-prose-kbd-shadows) / 10%); box-shadow: 0 0 0 1px var(--tw-prose-kbd-shadows), 0 3px 0 var(--tw-prose-kbd-shadows);
font-size: 0.9rem; font-size: 0.9rem;
border-radius: 0.25rem; border-radius: 0.25rem;
padding-top: 0.1875em; padding-top: 0.1875em;
@@ -972,7 +982,7 @@ body.zen-mode-enable {
--tw-prose-quote-borders: rgba(var(--color-primary-200), 1); --tw-prose-quote-borders: rgba(var(--color-primary-200), 1);
--tw-prose-captions: rgba(var(--color-neutral-500), 1); --tw-prose-captions: rgba(var(--color-neutral-500), 1);
--tw-prose-kbd: oklch(21% 0.034 264.665); --tw-prose-kbd: oklch(21% 0.034 264.665);
--tw-prose-kbd-shadows: NaN NaN NaN; --tw-prose-kbd-shadows: color-mix(in oklab, oklch(21% 0.034 264.665) 10%, transparent);
--tw-prose-code: rgba(var(--color-secondary-700), 1); --tw-prose-code: rgba(var(--color-secondary-700), 1);
--tw-prose-pre-code: rgba(var(--color-neutral-700), 1); --tw-prose-pre-code: rgba(var(--color-neutral-700), 1);
--tw-prose-pre-bg: rgba(var(--color-neutral-50), 1); --tw-prose-pre-bg: rgba(var(--color-neutral-50), 1);
@@ -990,7 +1000,7 @@ body.zen-mode-enable {
--tw-prose-invert-quote-borders: rgba(var(--color-primary-900), 1); --tw-prose-invert-quote-borders: rgba(var(--color-primary-900), 1);
--tw-prose-invert-captions: rgba(var(--color-neutral-400), 1); --tw-prose-invert-captions: rgba(var(--color-neutral-400), 1);
--tw-prose-invert-kbd: #fff; --tw-prose-invert-kbd: #fff;
--tw-prose-invert-kbd-shadows: 255 255 255; --tw-prose-invert-kbd-shadows: rgb(255 255 255 / 10%);
--tw-prose-invert-code: rgba(var(--color-secondary-400), 1); --tw-prose-invert-code: rgba(var(--color-secondary-400), 1);
--tw-prose-invert-pre-code: rgba(var(--color-neutral-200), 1); --tw-prose-invert-pre-code: rgba(var(--color-neutral-200), 1);
--tw-prose-invert-pre-bg: rgba(var(--color-neutral-700), 1); --tw-prose-invert-pre-bg: rgba(var(--color-neutral-700), 1);
@@ -1141,9 +1151,6 @@ body.zen-mode-enable {
.mt-20 { .mt-20 {
margin-top: calc(var(--spacing) * 20); margin-top: calc(var(--spacing) * 20);
} }
.mt-\[0\.1rem\] {
margin-top: 0.1rem;
}
.mt-\[0\.5rem\] { .mt-\[0\.5rem\] {
margin-top: 0.5rem; margin-top: 0.5rem;
} }
@@ -1165,9 +1172,6 @@ body.zen-mode-enable {
.mr-5 { .mr-5 {
margin-right: calc(var(--spacing) * 5); margin-right: calc(var(--spacing) * 5);
} }
.mr-auto {
margin-right: auto;
}
.\!mb-0 { .\!mb-0 {
margin-bottom: calc(var(--spacing) * 0) !important; margin-bottom: calc(var(--spacing) * 0) !important;
} }
@@ -1204,9 +1208,6 @@ body.zen-mode-enable {
.mb-12 { .mb-12 {
margin-bottom: calc(var(--spacing) * 12); margin-bottom: calc(var(--spacing) * 12);
} }
.mb-16 {
margin-bottom: calc(var(--spacing) * 16);
}
.mb-20 { .mb-20 {
margin-bottom: calc(var(--spacing) * 20); margin-bottom: calc(var(--spacing) * 20);
} }
@@ -1219,12 +1220,6 @@ body.zen-mode-enable {
.ml-2 { .ml-2 {
margin-left: calc(var(--spacing) * 2); margin-left: calc(var(--spacing) * 2);
} }
.ml-3 {
margin-left: calc(var(--spacing) * 3);
}
.ml-auto {
margin-left: auto;
}
.box-border { .box-border {
box-sizing: border-box; box-sizing: border-box;
} }
@@ -1452,9 +1447,6 @@ body.zen-mode-enable {
.max-w-\[5rem\] { .max-w-\[5rem\] {
max-width: 5rem; max-width: 5rem;
} }
.max-w-\[64rem\] {
max-width: 64rem;
}
.max-w-\[200px\] { .max-w-\[200px\] {
max-width: 200px; max-width: 200px;
} }
@@ -1538,6 +1530,14 @@ body.zen-mode-enable {
--tw-translate-y: calc(var(--spacing) * -8); --tw-translate-y: calc(var(--spacing) * -8);
translate: var(--tw-translate-x) var(--tw-translate-y); translate: var(--tw-translate-x) var(--tw-translate-y);
} }
.translate-y-0 {
--tw-translate-y: calc(var(--spacing) * 0);
translate: var(--tw-translate-x) var(--tw-translate-y);
}
.translate-y-4 {
--tw-translate-y: calc(var(--spacing) * 4);
translate: var(--tw-translate-x) var(--tw-translate-y);
}
.scale-0 { .scale-0 {
--tw-scale-x: 0%; --tw-scale-x: 0%;
--tw-scale-y: 0%; --tw-scale-y: 0%;
@@ -1972,9 +1972,6 @@ body.zen-mode-enable {
.p-1\.5 { .p-1\.5 {
padding: calc(var(--spacing) * 1.5); padding: calc(var(--spacing) * 1.5);
} }
.p-2\.5 {
padding: calc(var(--spacing) * 2.5);
}
.p-4 { .p-4 {
padding: calc(var(--spacing) * 4); padding: calc(var(--spacing) * 4);
} }
@@ -2080,18 +2077,12 @@ body.zen-mode-enable {
.pt-\[5px\] { .pt-\[5px\] {
padding-top: 5px; padding-top: 5px;
} }
.pr-0 { .pr-2 {
padding-right: calc(var(--spacing) * 0); padding-right: calc(var(--spacing) * 2);
} }
.pr-8 { .pr-8 {
padding-right: calc(var(--spacing) * 8); padding-right: calc(var(--spacing) * 8);
} }
.pr-\[24px\] {
padding-right: 24px;
}
.pb-0 {
padding-bottom: calc(var(--spacing) * 0);
}
.pb-2 { .pb-2 {
padding-bottom: calc(var(--spacing) * 2); padding-bottom: calc(var(--spacing) * 2);
} }
@@ -2113,12 +2104,6 @@ body.zen-mode-enable {
.pl-0 { .pl-0 {
padding-left: calc(var(--spacing) * 0); padding-left: calc(var(--spacing) * 0);
} }
.pl-4 {
padding-left: calc(var(--spacing) * 4);
}
.pl-\[24px\] {
padding-left: 24px;
}
.text-center { .text-center {
text-align: center; text-align: center;
} }
@@ -2424,7 +2409,7 @@ body.zen-mode-enable {
backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,); backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
} }
.transition { .transition {
transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, visibility, content-visibility, overlay, pointer-events; transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, content-visibility, overlay, pointer-events;
transition-timing-function: var(--tw-ease, var(--default-transition-timing-function)); transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
transition-duration: var(--tw-duration, var(--default-transition-duration)); transition-duration: var(--tw-duration, var(--default-transition-duration));
} }
@@ -2522,34 +2507,6 @@ body.zen-mode-enable {
} }
} }
} }
.group-hover\:text-primary-600 {
&:is(:where(.group):hover *) {
@media (hover: hover) {
color: rgba(var(--color-primary-600), 1);
}
}
}
.group-hover\:underline {
&:is(:where(.group):hover *) {
@media (hover: hover) {
text-decoration-line: underline;
}
}
}
.group-hover\:decoration-primary-500 {
&:is(:where(.group):hover *) {
@media (hover: hover) {
text-decoration-color: rgba(var(--color-primary-500), 1);
}
}
}
.group-hover\:underline-offset-2 {
&:is(:where(.group):hover *) {
@media (hover: hover) {
text-underline-offset: 2px;
}
}
}
.group-hover\:opacity-100 { .group-hover\:opacity-100 {
&:is(:where(.group):hover *) { &:is(:where(.group):hover *) {
@media (hover: hover) { @media (hover: hover) {
@@ -2640,6 +2597,18 @@ body.zen-mode-enable {
border-top-color: transparent; border-top-color: transparent;
} }
} }
.before\:absolute {
&::before {
content: var(--tw-content);
position: absolute;
}
}
.before\:inset-0 {
&::before {
content: var(--tw-content);
inset: calc(var(--spacing) * 0);
}
}
.after\:clear-both { .after\:clear-both {
&::after { &::after {
content: var(--tw-content); content: var(--tw-content);
@@ -2654,7 +2623,6 @@ body.zen-mode-enable {
} }
.after\:content-\[\'\'\] { .after\:content-\[\'\'\] {
&::after { &::after {
content: var(--tw-content);
--tw-content: ''; --tw-content: '';
content: var(--tw-content); content: var(--tw-content);
} }
@@ -3014,9 +2982,9 @@ body.zen-mode-enable {
grid-template-columns: repeat(3, minmax(0, 1fr)); grid-template-columns: repeat(3, minmax(0, 1fr));
} }
} }
.md\:flex-nowrap { .md\:flex-row {
@media (width >= 853px) { @media (width >= 853px) {
flex-wrap: nowrap; flex-direction: row;
} }
} }
.md\:justify-start { .md\:justify-start {
@@ -3034,6 +3002,11 @@ body.zen-mode-enable {
padding-inline: calc(var(--spacing) * 24); padding-inline: calc(var(--spacing) * 24);
} }
} }
.md\:pr-4 {
@media (width >= 853px) {
padding-right: calc(var(--spacing) * 4);
}
}
.lg\:absolute { .lg\:absolute {
@media (width >= 1024px) { @media (width >= 1024px) {
position: absolute; position: absolute;
@@ -3124,6 +3097,11 @@ body.zen-mode-enable {
width: auto; width: auto;
} }
} }
.lg\:max-w-2xs {
@media (width >= 1024px) {
max-width: var(--container-2xs);
}
}
.lg\:max-w-7xl { .lg\:max-w-7xl {
@media (width >= 1024px) { @media (width >= 1024px) {
max-width: var(--container-7xl); max-width: var(--container-7xl);
@@ -3209,16 +3187,6 @@ body.zen-mode-enable {
grid-template-columns: repeat(5, minmax(0, 1fr)); grid-template-columns: repeat(5, minmax(0, 1fr));
} }
} }
.ltr\:right-0 {
&:where(:dir(ltr), [dir="ltr"], [dir="ltr"] *) {
right: calc(var(--spacing) * 0);
}
}
.ltr\:mr-4 {
&:where(:dir(ltr), [dir="ltr"], [dir="ltr"] *) {
margin-right: calc(var(--spacing) * 4);
}
}
.ltr\:-ml-12 { .ltr\:-ml-12 {
&:where(:dir(ltr), [dir="ltr"], [dir="ltr"] *) { &:where(:dir(ltr), [dir="ltr"], [dir="ltr"] *) {
margin-left: calc(var(--spacing) * -12); margin-left: calc(var(--spacing) * -12);
@@ -3239,11 +3207,6 @@ body.zen-mode-enable {
display: inline; display: inline;
} }
} }
.ltr\:text-right {
&:where(:dir(ltr), [dir="ltr"], [dir="ltr"] *) {
text-align: right;
}
}
.rtl\:left-0 { .rtl\:left-0 {
&:where(:dir(rtl), [dir="rtl"], [dir="rtl"] *) { &:where(:dir(rtl), [dir="rtl"], [dir="rtl"] *) {
left: calc(var(--spacing) * 0); left: calc(var(--spacing) * 0);
@@ -3254,11 +3217,6 @@ body.zen-mode-enable {
margin-right: calc(79px * -1); margin-right: calc(79px * -1);
} }
} }
.rtl\:ml-4 {
&:where(:dir(rtl), [dir="rtl"], [dir="rtl"] *) {
margin-left: calc(var(--spacing) * 4);
}
}
.rtl\:block { .rtl\:block {
&:where(:dir(rtl), [dir="rtl"], [dir="rtl"] *) { &:where(:dir(rtl), [dir="rtl"], [dir="rtl"] *) {
display: block; display: block;
@@ -3269,9 +3227,9 @@ body.zen-mode-enable {
display: none; display: none;
} }
} }
.rtl\:inline { .rtl\:rotate-180 {
&:where(:dir(rtl), [dir="rtl"], [dir="rtl"] *) { &:where(:dir(rtl), [dir="rtl"], [dir="rtl"] *) {
display: inline; rotate: 180deg;
} }
} }
.dark\:flex { .dark\:flex {
@@ -3517,15 +3475,6 @@ body.zen-mode-enable {
} }
} }
} }
.dark\:group-hover\:text-primary-400 {
&:is(.dark *) {
&:is(:where(.group):hover *) {
@media (hover: hover) {
color: rgba(var(--color-primary-400), 1);
}
}
}
}
.dark\:hover\:\!bg-primary-700 { .dark\:hover\:\!bg-primary-700 {
&:is(.dark *) { &:is(.dark *) {
&:hover { &:hover {
@@ -3657,11 +3606,6 @@ button, [role="button"] {
.prose div.min-w-0.max-w-prose > *:first-child { .prose div.min-w-0.max-w-prose > *:first-child {
margin-top: calc(var(--spacing) * 3); margin-top: calc(var(--spacing) * 3);
} }
#TableOfContents {
@media (width >= 1024px) {
max-width: 25vw;
}
}
#TOCView { #TOCView {
max-height: calc(100vh - 150px); max-height: calc(100vh - 150px);
min-height: 0; min-height: 0;
@@ -3712,9 +3656,7 @@ button, [role="button"] {
z-index: 10; z-index: 10;
width: calc(var(--spacing) * 20); width: calc(var(--spacing) * 20);
cursor: pointer; cursor: pointer;
overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden; overflow: hidden;
border-top-right-radius: var(--radius-md); border-top-right-radius: var(--radius-md);
border-bottom-left-radius: var(--radius-md); border-bottom-left-radius: var(--radius-md);
@@ -3748,8 +3690,8 @@ button, [role="button"] {
overflow: auto hidden; overflow: auto hidden;
} }
.katex-display { .katex-display {
padding-right: 2px; padding: 1em;
width: calc(100% - 2px); width: calc(100% - 1em);
} }
table { table {
display: block; display: block;
@@ -3770,36 +3712,35 @@ a {
pre { pre {
text-align: left; text-align: left;
} }
.thumbnail, .thumbnail_card, .thumbnail_card_related, .thumbnail_card_term, .single_hero_basic, .single_hero_background {
background-repeat: no-repeat;
background-size: cover;
background-position: center;
}
.thumbnail {
min-width: 300px;
height: 180px;
}
.thumbnail_card {
height: 200px;
}
.thumbnail_card_related {
height: 150px;
}
.thumbnail_card_term {
height: 150px;
}
.single_hero_round { .single_hero_round {
max-height: 50vh; max-height: 50vh;
object-fit: cover; object-fit: cover;
} }
.single_hero_background { .single_hero_background {
width: calc(100% + 1px);
z-index: -10; z-index: -10;
} }
.hero_gradient { .hero_gradient {
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
.thumbnailshadow { .thumbnail_card {
min-width: 300px;
height: 200px;
}
.thumbnail_card_related {
height: 150px;
}
.thumbnail {
width: 300px;
min-height: 180px;
}
@media (width < 853px) {
.thumbnail {
width: 100%;
}
}
.thumbnail-shadow {
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 { .anchor {
@@ -3812,21 +3753,15 @@ pre {
[id^="fn"], [id^="fnref"] { [id^="fn"], [id^="fnref"] {
scroll-margin-top: 145px; scroll-margin-top: 145px;
} }
#main-content {
scroll-margin-top: -125px;
}
@media (width >= 640px) { @media (width >= 640px) {
.thumbnail {
min-width: 100%;
height: 180px;
}
.article { .article {
flex-wrap: wrap; flex-wrap: wrap;
} }
} }
@media (width >= 853px) { @media (width >= 853px) {
.thumbnail {
min-width: 300px;
min-height: 180px;
height: auto;
}
.article { .article {
flex-wrap: nowrap; flex-wrap: nowrap;
} }
@@ -3855,9 +3790,6 @@ pre {
text-decoration-thickness: 3px; text-decoration-thickness: 3px;
text-underline-offset: 4px; text-underline-offset: 4px;
} }
.group-hover-card:hover:has(.group-hover-cancel:hover) .group-hover-card-title {
text-decoration: none !important;
}
@layer base { @layer base {
[type='text'],input:where(:not([type])),[type='email'],[type='url'],[type='password'],[type='number'],[type='date'],[type='datetime-local'],[type='month'],[type='search'],[type='tel'],[type='time'],[type='week'],[multiple],textarea,select { [type='text'],input:where(:not([type])),[type='email'],[type='url'],[type='password'],[type='number'],[type='date'],[type='datetime-local'],[type='month'],[type='search'],[type='tel'],[type='time'],[type='week'],[multiple],textarea,select {
appearance: none; appearance: none;
+29 -49
View File
@@ -66,10 +66,6 @@ button,
} }
/* Table of Contents */ /* Table of Contents */
#TableOfContents {
@apply lg:max-w-[25vw];
}
#TOCView { #TOCView {
max-height: calc(100vh - 150px); max-height: calc(100vh - 150px);
min-height: 0; min-height: 0;
@@ -130,8 +126,8 @@ button,
/* Fix katex overflow https://github.com/nunocoracao/blowfish/issues/2138 */ /* Fix katex overflow https://github.com/nunocoracao/blowfish/issues/2138 */
.katex-display { .katex-display {
padding-right: 2px; padding: 1em;
width: calc(100% - 2px); width: calc(100% - 1em);
} }
/* Fix long tables breaking out of article on mobile */ /* Fix long tables breaking out of article on mobile */
@@ -163,40 +159,13 @@ pre {
text-align: left; text-align: left;
} }
.thumbnail,
.thumbnail_card,
.thumbnail_card_related,
.thumbnail_card_term,
.single_hero_basic,
.single_hero_background {
background-repeat: no-repeat;
background-size: cover;
background-position: center;
}
.thumbnail {
min-width: 300px;
height: 180px;
}
.thumbnail_card {
height: 200px;
}
.thumbnail_card_related {
height: 150px;
}
.thumbnail_card_term {
height: 150px;
}
.single_hero_round { .single_hero_round {
max-height: 50vh; max-height: 50vh;
object-fit: cover; object-fit: cover;
} }
.single_hero_background { .single_hero_background {
width: calc(100% + 1px); /* patch for very small gap at right edge on mobile devices */
z-index: -10; z-index: -10;
} }
@@ -205,7 +174,27 @@ pre {
height: 100%; height: 100%;
} }
.thumbnailshadow { .thumbnail_card {
min-width: 300px;
height: 200px;
}
.thumbnail_card_related {
height: 150px;
}
.thumbnail {
width: 300px;
min-height: 180px;
}
@variant max-md {
.thumbnail {
width: 100%;
}
}
.thumbnail-shadow {
box-shadow: 5px 5px 20px 1px rgba(0, 0, 0, 0.3); box-shadow: 5px 5px 20px 1px rgba(0, 0, 0, 0.3);
} }
@@ -223,22 +212,18 @@ pre {
scroll-margin-top: 145px; scroll-margin-top: 145px;
} }
/* patch for skip to main content */
#main-content {
scroll-margin-top: -125px;
}
@variant sm { @variant sm {
.thumbnail {
min-width: 100%;
height: 180px;
}
.article { .article {
flex-wrap: wrap; flex-wrap: wrap;
} }
} }
@variant md { @variant md {
.thumbnail {
min-width: 300px;
min-height: 180px;
height: auto;
}
.article { .article {
flex-wrap: nowrap; flex-wrap: nowrap;
} }
@@ -278,8 +263,3 @@ pre {
text-decoration-thickness: 3px; text-decoration-thickness: 3px;
text-underline-offset: 4px; text-underline-offset: 4px;
} }
/* Cancel group hover if .group-hover-card contains .group-hover-cancel*/
.group-hover-card:hover:has(.group-hover-cancel:hover) .group-hover-card-title {
text-decoration: none !important;
}
+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><path fill="currentColor" d="M495.8 0c5.5 0 10.9 .2 16.3 .7c7 .6 12.8 5.7 14.3 12.5s-1.6 13.9-7.7 17.3c-44.4 25.2-74.4 73-74.4 127.8c0 81 65.5 146.6 146.2 146.6c8.6 0 17-.7 25.1-2.1c6.9-1.2 13.8 2.2 17 8.5s1.9 13.8-3.1 18.7c-34.5 33.6-81.7 54.4-133.6 54.4c-9.3 0-18.4-.7-27.4-1.9c-11.2-22.6-29.8-40.9-52.6-51.7c-2.7-58.5-50.3-105.3-109.2-106.7c-1.7-10.4-2.6-21-2.6-31.8C304 86.1 389.8 0 495.8 0zM447.9 431.9c0 44.2-35.8 80-80 80L96 511.9c-53 0-96-43-96-96c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7z"/></svg>

After

Width:  |  Height:  |  Size: 700 B

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><path fill="currentColor" d="M0 336c0 79.5 64.5 144 144 144l368 0c70.7 0 128-57.3 128-128c0-61.9-44-113.6-102.4-125.4c4.1-10.7 6.4-22.4 6.4-34.6c0-53-43-96-96-96c-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32C167.6 32 96 103.6 96 192c0 2.7 .1 5.4 .2 8.1C40.2 219.8 0 273.2 0 336z"/></svg>

After

Width:  |  Height:  |  Size: 353 B

+33
View File
@@ -22,6 +22,34 @@ if (document.documentElement.getAttribute("data-auto-appearance") === "true") {
}); });
} }
// Mermaid dark mode support
var updateMermaidTheme = () => {
if (typeof mermaid !== 'undefined') {
const isDark = document.documentElement.classList.contains("dark");
const mermaids = document.querySelectorAll('pre.mermaid');
mermaids.forEach(e => {
if (e.getAttribute('data-processed')) {
// Already rendered, clean the processed attributes
e.removeAttribute('data-processed');
// Replace the rendered HTML with the stored text
e.innerHTML = e.getAttribute('data-graph');
} else {
// First time, store the text
e.setAttribute('data-graph', e.textContent);
}
});
if (isDark) {
initMermaidDark();
mermaid.run();
} else {
initMermaidLight();
mermaid.run();
}
}
}
window.addEventListener("DOMContentLoaded", (event) => { window.addEventListener("DOMContentLoaded", (event) => {
const switcher = document.getElementById("appearance-switcher"); const switcher = document.getElementById("appearance-switcher");
const switcherMobile = document.getElementById("appearance-switcher-mobile"); const switcherMobile = document.getElementById("appearance-switcher-mobile");
@@ -29,6 +57,9 @@ window.addEventListener("DOMContentLoaded", (event) => {
updateMeta(); updateMeta();
this.updateLogo?.(getTargetAppearance()); this.updateLogo?.(getTargetAppearance());
// Initialize mermaid theme on page load
updateMermaidTheme();
if (switcher) { if (switcher) {
switcher.addEventListener("click", () => { switcher.addEventListener("click", () => {
document.documentElement.classList.toggle("dark"); document.documentElement.classList.toggle("dark");
@@ -38,6 +69,7 @@ window.addEventListener("DOMContentLoaded", (event) => {
targetAppearance targetAppearance
); );
updateMeta(); updateMeta();
updateMermaidTheme();
this.updateLogo?.(targetAppearance); this.updateLogo?.(targetAppearance);
}); });
switcher.addEventListener("contextmenu", (event) => { switcher.addEventListener("contextmenu", (event) => {
@@ -54,6 +86,7 @@ window.addEventListener("DOMContentLoaded", (event) => {
targetAppearance targetAppearance
); );
updateMeta(); updateMeta();
updateMermaidTheme();
this.updateLogo?.(targetAppearance); this.updateLogo?.(targetAppearance);
}); });
switcherMobile.addEventListener("contextmenu", (event) => { switcherMobile.addEventListener("contextmenu", (event) => {
+15 -13
View File
@@ -2,18 +2,8 @@ function css(name) {
return "rgb(" + getComputedStyle(document.documentElement).getPropertyValue(name) + ")"; return "rgb(" + getComputedStyle(document.documentElement).getPropertyValue(name) + ")";
} }
document.addEventListener("DOMContentLoaded", () => { function initMermaidLight() {
const mermaidDivs = document.querySelectorAll("div.mermaid"); mermaid.initialize({
for (const div of mermaidDivs) {
const preElement = div.querySelector("pre");
if (preElement) {
div.textContent = preElement.textContent;
}
}
});
mermaid.initialize({
theme: "base", theme: "base",
themeVariables: { themeVariables: {
background: css("--color-neutral"), background: css("--color-neutral"),
@@ -28,4 +18,16 @@ mermaid.initialize({
"ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif", "ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif",
fontSize: "16px", fontSize: "16px",
}, },
}); });
}
function initMermaidDark() {
mermaid.initialize({
theme: "dark",
themeVariables: {
fontFamily:
"ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif",
fontSize: "16px",
},
});
}
+13
View File
@@ -0,0 +1,13 @@
function scrollToTop() {
const scrollToTop = document.getElementById("scroll-to-top");
if (window.scrollY > window.innerHeight * 0.5) {
scrollToTop.classList.remove("translate-y-4", "opacity-0");
scrollToTop.classList.add("translate-y-0", "opacity-100");
} else {
scrollToTop.classList.remove("translate-y-0", "opacity-100");
scrollToTop.classList.add("translate-y-4", "opacity-0");
}
}
window.addEventListener("scroll", scrollToTop);
window.addEventListener("load", scrollToTop);
+1 -1
View File
@@ -1 +1 @@
@font-face{font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(fonts/KaTeX_AMS-Regular.woff2) format("woff2"),url(fonts/KaTeX_AMS-Regular.woff) format("woff"),url(fonts/KaTeX_AMS-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Caligraphic-Bold.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Bold.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Caligraphic-Regular.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Regular.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Fraktur-Bold.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Bold.woff) format("woff"),url(fonts/KaTeX_Fraktur-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Fraktur-Regular.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Regular.woff) format("woff"),url(fonts/KaTeX_Fraktur-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Main-Bold.woff2) format("woff2"),url(fonts/KaTeX_Main-Bold.woff) format("woff"),url(fonts/KaTeX_Main-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(fonts/KaTeX_Main-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Main-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Main-BoldItalic.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(fonts/KaTeX_Main-Italic.woff2) format("woff2"),url(fonts/KaTeX_Main-Italic.woff) format("woff"),url(fonts/KaTeX_Main-Italic.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Main-Regular.woff2) format("woff2"),url(fonts/KaTeX_Main-Regular.woff) format("woff"),url(fonts/KaTeX_Main-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(fonts/KaTeX_Math-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Math-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Math-BoldItalic.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(fonts/KaTeX_Math-Italic.woff2) format("woff2"),url(fonts/KaTeX_Math-Italic.woff) format("woff"),url(fonts/KaTeX_Math-Italic.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:700;src:url(fonts/KaTeX_SansSerif-Bold.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Bold.woff) format("woff"),url(fonts/KaTeX_SansSerif-Bold.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:italic;font-weight:400;src:url(fonts/KaTeX_SansSerif-Italic.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Italic.woff) format("woff"),url(fonts/KaTeX_SansSerif-Italic.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:400;src:url(fonts/KaTeX_SansSerif-Regular.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Regular.woff) format("woff"),url(fonts/KaTeX_SansSerif-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Script-Regular.woff2) format("woff2"),url(fonts/KaTeX_Script-Regular.woff) format("woff"),url(fonts/KaTeX_Script-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size1-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size1-Regular.woff) format("woff"),url(fonts/KaTeX_Size1-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size2-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size2-Regular.woff) format("woff"),url(fonts/KaTeX_Size2-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size3-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size3-Regular.woff) format("woff"),url(fonts/KaTeX_Size3-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size4-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size4-Regular.woff) format("woff"),url(fonts/KaTeX_Size4-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Typewriter-Regular.woff2) format("woff2"),url(fonts/KaTeX_Typewriter-Regular.woff) format("woff"),url(fonts/KaTeX_Typewriter-Regular.ttf) format("truetype")}.katex{font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.22"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1pLine truncated @font-face{font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(fonts/KaTeX_AMS-Regular.woff2) format("woff2"),url(fonts/KaTeX_AMS-Regular.woff) format("woff"),url(fonts/KaTeX_AMS-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Caligraphic-Bold.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Bold.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Caligraphic-Regular.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Regular.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Fraktur-Bold.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Bold.woff) format("woff"),url(fonts/KaTeX_Fraktur-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Fraktur-Regular.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Regular.woff) format("woff"),url(fonts/KaTeX_Fraktur-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Main-Bold.woff2) format("woff2"),url(fonts/KaTeX_Main-Bold.woff) format("woff"),url(fonts/KaTeX_Main-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(fonts/KaTeX_Main-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Main-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Main-BoldItalic.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(fonts/KaTeX_Main-Italic.woff2) format("woff2"),url(fonts/KaTeX_Main-Italic.woff) format("woff"),url(fonts/KaTeX_Main-Italic.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Main-Regular.woff2) format("woff2"),url(fonts/KaTeX_Main-Regular.woff) format("woff"),url(fonts/KaTeX_Main-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(fonts/KaTeX_Math-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Math-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Math-BoldItalic.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(fonts/KaTeX_Math-Italic.woff2) format("woff2"),url(fonts/KaTeX_Math-Italic.woff) format("woff"),url(fonts/KaTeX_Math-Italic.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:700;src:url(fonts/KaTeX_SansSerif-Bold.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Bold.woff) format("woff"),url(fonts/KaTeX_SansSerif-Bold.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:italic;font-weight:400;src:url(fonts/KaTeX_SansSerif-Italic.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Italic.woff) format("woff"),url(fonts/KaTeX_SansSerif-Italic.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:400;src:url(fonts/KaTeX_SansSerif-Regular.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Regular.woff) format("woff"),url(fonts/KaTeX_SansSerif-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Script-Regular.woff2) format("woff2"),url(fonts/KaTeX_Script-Regular.woff) format("woff"),url(fonts/KaTeX_Script-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size1-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size1-Regular.woff) format("woff"),url(fonts/KaTeX_Size1-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size2-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size2-Regular.woff) format("woff"),url(fonts/KaTeX_Size2-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size3-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size3-Regular.woff) format("woff"),url(fonts/KaTeX_Size3-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size4-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size4-Regular.woff) format("woff"),url(fonts/KaTeX_Size4-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Typewriter-Regular.woff2) format("woff2"),url(fonts/KaTeX_Typewriter-Regular.woff) format("woff"),url(fonts/KaTeX_Typewriter-Regular.ttf) format("truetype")}.katex{font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.23"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1pLine truncated
+1 -1
View File
@@ -1 +1 @@
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.katex=t():e.katex=t()}("undefined"!=typeof self?self:this,(function(){return function(){"use strict";var e={d:function(t,r){for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}},t={};e.d(t,{default:function(){return Wn}});class r{constructor(e,t){this.name=void 0,this.position=void 0,this.length=void 0,this.rawMessage=void 0;let n,o,s="KaTeX parse error: "+e;const i=t&&t.loc;if(i&&i.start<=i.end){const e=i.lexer.input;n=i.start,o=i.end,n===e.length?s+=" at end of input: ":s+=" at position "+(n+1)+": ";const t=e.slice(n,o).replace(/[^]/g,"$&\u0332");let r,a;r=n>15?"\u2026"+e.slice(n-15,n):e.slice(0,n),a=o+15<e.length?e.slice(o,o+15)+"\u2026":e.slice(o),s+=r+t+a}const a=new Error(s);return a.name="ParseError",a.__proto__=r.prototype,a.position=n,null!=n&&null!=o&&(a.length=o-n),a.rawMessage=e,a}}r.prototype.__proto__=Error.prototype;var n=r;const o=/([A-Z])/g,s={"&":"&amp;",">":"&gt;","<":"&lt;",'"':"&quot;","'":"&#x27;"},i=/[&><"']/g;const a=function(e){return"ordgroup"===e.type||"color"===e.type?1===e.body.length?a(e.body[0]):e:"font"===e.type?a(e.body):e};var l={contains:function(e,t){return-1!==e.indexOf(t)},deflt:function(e,t){return void 0===e?t:e},escape:function(e){return String(e).replace(i,(e=>s[e]))},hyphenate:function(e){return e.replace(o,"-$1").toLowerCase()},getBaseElem:a,isCharacterBox:function(e){const t=a(e);return"mathord"===t.type||"textord"===t.type||"atom"===t.type},protocolFromUrl:function(e){const t=/^[\x00-\x20]*([^\\/#?]*?)(:|&#0*58|&#x0*3a|&colon)/i.exec(e);return t?":"!==t[2]?null:/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(t[1])?t[1].toLowerCase():null:"_relative"}};const h={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format <type>"},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color <color>",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:e=>"#"+e},macros:{type:"object",cli:"-m, --macro <def>",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:(e,t)=>(t.push(e),t)},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:e=>Math.max(0,e),cli:"--min-rule-thickness <size>",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:e=>Math.max(0,e),cli:"-s, --max-size <n>",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:e=>Math.max(0,e),cli:"-e, --max-expand <n>",cliProcessor:e=>"Infinity"===e?1/0:parseInt(e)},globalGroup:{type:"boolean",cli:!1}};function c(e){if(e.default)return e.default;const t=e.type,r=Array.isArray(t)?t[0]:t;if("string"!=typeof r)return r.enum[0];switch(r){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}}class m{constructor(e){this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0Line truncated !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.katex=t():e.katex=t()}("undefined"!=typeof self?self:this,(function(){return function(){"use strict";var e={d:function(t,r){for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}},t={};e.d(t,{default:function(){return Wn}});class r{constructor(e,t){this.name=void 0,this.position=void 0,this.length=void 0,this.rawMessage=void 0;let n,o,s="KaTeX parse error: "+e;const i=t&&t.loc;if(i&&i.start<=i.end){const e=i.lexer.input;n=i.start,o=i.end,n===e.length?s+=" at end of input: ":s+=" at position "+(n+1)+": ";const t=e.slice(n,o).replace(/[^]/g,"$&\u0332");let r,a;r=n>15?"\u2026"+e.slice(n-15,n):e.slice(0,n),a=o+15<e.length?e.slice(o,o+15)+"\u2026":e.slice(o),s+=r+t+a}const a=new Error(s);return a.name="ParseError",a.__proto__=r.prototype,a.position=n,null!=n&&null!=o&&(a.length=o-n),a.rawMessage=e,a}}r.prototype.__proto__=Error.prototype;var n=r;const o=/([A-Z])/g,s={"&":"&amp;",">":"&gt;","<":"&lt;",'"':"&quot;","'":"&#x27;"},i=/[&><"']/g;const a=function(e){return"ordgroup"===e.type||"color"===e.type?1===e.body.length?a(e.body[0]):e:"font"===e.type?a(e.body):e};var l={contains:function(e,t){return-1!==e.indexOf(t)},deflt:function(e,t){return void 0===e?t:e},escape:function(e){return String(e).replace(i,(e=>s[e]))},hyphenate:function(e){return e.replace(o,"-$1").toLowerCase()},getBaseElem:a,isCharacterBox:function(e){const t=a(e);return"mathord"===t.type||"textord"===t.type||"atom"===t.type},protocolFromUrl:function(e){const t=/^[\x00-\x20]*([^\\/#?]*?)(:|&#0*58|&#x0*3a|&colon)/i.exec(e);return t?":"!==t[2]?null:/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(t[1])?t[1].toLowerCase():null:"_relative"}};const h={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format <type>"},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color <color>",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:e=>"#"+e},macros:{type:"object",cli:"-m, --macro <def>",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:(e,t)=>(t.push(e),t)},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:e=>Math.max(0,e),cli:"--min-rule-thickness <size>",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:e=>Math.max(0,e),cli:"-s, --max-size <n>",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:e=>Math.max(0,e),cli:"-e, --max-expand <n>",cliProcessor:e=>"Infinity"===e?1/0:parseInt(e)},globalGroup:{type:"boolean",cli:!1}};function c(e){if(e.default)return e.default;const t=e.type,r=Array.isArray(t)?t[0]:t;if("string"!=typeof r)return r.enum[0];switch(r){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}}class m{constructor(e){this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0Line truncated
+500 -383
View File
File diff suppressed because it is too large. Load diff
+1 -1
View File
@@ -2,4 +2,4 @@
[module.hugoVersion] [module.hugoVersion]
extended = true extended = true
min = "0.141.0" min = "0.141.0"
max = "0.150.0" max = "0.151.0"
+3
View File
@@ -2,6 +2,9 @@
# These settings are required for the theme to function. # These settings are required for the theme to function.
[goldmark] [goldmark]
[goldmark.parser]
wrapStandAloneImageWithinParagraph = false
[goldmark.renderer] [goldmark.renderer]
unsafe = true unsafe = true
+3 -1
View File
@@ -26,6 +26,8 @@ disableTextInHeader = false
# defaultBackgroundImage = "IMAGE.jpg" # used as default for background images # defaultBackgroundImage = "IMAGE.jpg" # used as default for background images
# defaultFeaturedImage = "IMAGE.jpg" # used as default for featured images in all articles # defaultFeaturedImage = "IMAGE.jpg" # used as default for featured images in all articles
# defaultSocialImage = "/android-chrome-512x512.png" # used as default for social media sharing (Open Graph and Twitter) # defaultSocialImage = "/android-chrome-512x512.png" # used as default for social media sharing (Open Graph and Twitter)
hotlinkFeatureImage = false
# imagePosition = "50% 50%"
# highlightCurrentMenuArea = true # highlightCurrentMenuArea = true
# smartTOC = true # smartTOC = true
@@ -160,7 +162,7 @@ forgejoDefaultServer = "https://v11.next.forgejo.org"
# globalWidget = true # globalWidget = true
# globalWidgetMessage = "Hello" # globalWidgetMessage = "Hello"
# globalWidgetColor = "#FFDD00" # globalWidgetColor = "#FFDD00"
# globalWidgetPosition = "Right" # globalWidgetPosition = "right"
[verification] [verification]
# google = "" # google = ""
+3
View File
@@ -2,6 +2,9 @@
# These settings are required for the theme to function. # These settings are required for the theme to function.
[goldmark] [goldmark]
[goldmark.parser]
wrapStandAloneImageWithinParagraph = false
[goldmark.renderer] [goldmark.renderer]
unsafe = true unsafe = true
+3 -1
View File
@@ -26,6 +26,8 @@ disableTextInHeader = false
defaultBackgroundImage = "/img/background.svg" defaultBackgroundImage = "/img/background.svg"
defaultFeaturedImage = "/img/featured.svg" defaultFeaturedImage = "/img/featured.svg"
defaultSocialImage = "/img/blowfish_banner.png" defaultSocialImage = "/img/blowfish_banner.png"
hotlinkFeatureImage = false
# imagePosition = "50% 50%"
highlightCurrentMenuArea = true highlightCurrentMenuArea = true
smartTOC = true smartTOC = true
@@ -159,7 +161,7 @@ fingerprintAlgorithm = "sha512" # Valid values are "sha512" (default), "sha384",
globalWidget = true globalWidget = true
globalWidgetMessage = "" globalWidgetMessage = ""
globalWidgetColor = "#FFDD00" globalWidgetColor = "#FFDD00"
globalWidgetPosition = "Right" globalWidgetPosition = "right"
[verification] [verification]
# google = "" # google = ""
+1 -1
View File
@@ -10,7 +10,7 @@ description: "Questa pagina è stata creata utilizzando il tema Blowfish per Hug
<span class="prose dark:prose-invert">Questa è una demo del layout <code id="layout">background</code>.</span> <span class="prose dark:prose-invert">Questa è una demo del layout <code id="layout">background</code>.</span>
<button <button
id="switch-layout-button" id="switch-layout-button"
class="px-4 !text-neutral !no-underline rounded-md bg-primary-600 hover:!bg-primary-500 dark:bg-primary-800 dark:hover:!bg-primary-700" class="px-4 mx-[3px] !text-neutral !no-underline rounded-md bg-primary-600 hover:!bg-primary-500 dark:bg-primary-800 dark:hover:!bg-primary-700"
> >
Cambia layout &orarr; Cambia layout &orarr;
</button> </button>
+1 -1
View File
@@ -12,7 +12,7 @@ description: "このページは Hugo の Blowfish テーマを利用して構
<span class="prose dark:prose-invert">こちらは <code id="layout">background</code> レイアウトのデモです。</span> <span class="prose dark:prose-invert">こちらは <code id="layout">background</code> レイアウトのデモです。</span>
<button <button
id="switch-layout-button" id="switch-layout-button"
class="px-4 !text-neutral !no-underline rounded-md bg-primary-600 hover:!bg-primary-500 dark:bg-primary-800 dark:hover:!bg-primary-700" class="px-4 mx-[3px] !text-neutral !no-underline rounded-md bg-primary-600 hover:!bg-primary-500 dark:bg-primary-800 dark:hover:!bg-primary-700"
> >
レイアウトを変更する&orarr; レイアウトを変更する&orarr;
</button> </button>
+1 -1
View File
@@ -12,7 +12,7 @@ description: "This page was built using the Blowfish theme for Hugo."
<span class="prose dark:prose-invert">This is a demo of the <code id="layout">background</code> layout.</span> <span class="prose dark:prose-invert">This is a demo of the <code id="layout">background</code> layout.</span>
<button <button
id="switch-layout-button" id="switch-layout-button"
class="px-4 !text-neutral !no-underline rounded-md bg-primary-600 hover:!bg-primary-500 dark:bg-primary-800 dark:hover:!bg-primary-700" class="px-4 mx-[3px] !text-neutral !no-underline rounded-md bg-primary-600 hover:!bg-primary-500 dark:bg-primary-800 dark:hover:!bg-primary-700"
> >
Switch layout &orarr; Switch layout &orarr;
</button> </button>
+1 -1
View File
@@ -12,7 +12,7 @@ description: "此页面是使用 Hugo 的 Blowfish 主题搭建的"
<span class="prose dark:prose-invert"> 这是 <code id="layout">background</code> 的样式示例。</span> <span class="prose dark:prose-invert"> 这是 <code id="layout">background</code> 的样式示例。</span>
<button <button
id="switch-layout-button" id="switch-layout-button"
class="px-4 !text-neutral !no-underline rounded-md bg-primary-600 hover:!bg-primary-500 dark:bg-primary-800 dark:hover:!bg-primary-700" class="px-4 mx-[3px] !text-neutral !no-underline rounded-md bg-primary-600 hover:!bg-primary-500 dark:bg-primary-800 dark:hover:!bg-primary-700"
> >
切换 layout &orarr; 切换 layout &orarr;
</button> </button>
@@ -41,7 +41,7 @@ Tieni presente che i nomi delle variabili forniti in questa tabella utilizzano i
<!-- prettier-ignore-start --> <!-- prettier-ignore-start -->
| Name | Default | Description | | Name | Default | Description |
| ------------------------ | ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `theme` | `"blowfish"` | Quando si utilizzano i moduli Hugo, questo valore di configurazione deve essere rimosso. Per tutti gli altri tipi di installazione, questo deve essere impostato su "blowfish" affinché il tema funzioni. | | `theme` | `"blowfish"` | Quando si utilizzano i moduli Hugo, questo valore di configurazione deve essere rimosso. Per tutti gli altri tipi di installazione, questo deve essere impostato su "blowfish" affinché il tema funzioni. |
| `baseURL` | _Not set_ | The URL to the root of the website. | | `baseURL` | _Not set_ | The URL to the root of the website. |
| `defaultContentLanguage` | `"en"` | This value determines the default language of theme components and content. Refer to the [language and i18n](#lingua-e-i18n) section below for supported language codes. | | `defaultContentLanguage` | `"en"` | This value determines the default language of theme components and content. Refer to the [language and i18n](#lingua-e-i18n) section below for supported language codes. |
@@ -114,7 +114,7 @@ Il file predefinito può essere utilizzato come modello per creare lingue aggiun
<!-- prettier-ignore-start --> <!-- prettier-ignore-start -->
| Name | Default | Description | | Name | Default | Description |
| -------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | --- | --- | --- |
| `languageCode` | `"en"` | Il codice della lingua Hugo per questo file. Può essere una lingua di livello superiore (ad esempio "en") o una variante secondaria (ad esempio "en-au") e deve corrispondere al codice della lingua nel nome del file. Hugo si aspetta che questo valore sia sempre in minuscolo. Per una corretta conformità HTML, imposta il parametro "isoCode" che fa distinzione tra maiuscole e minuscole. | | `languageCode` | `"en"` | Il codice della lingua Hugo per questo file. Può essere una lingua di livello superiore (ad esempio "en") o una variante secondaria (ad esempio "en-au") e deve corrispondere al codice della lingua nel nome del file. Hugo si aspetta che questo valore sia sempre in minuscolo. Per una corretta conformità HTML, imposta il parametro "isoCode" che fa distinzione tra maiuscole e minuscole. |
| `languageName` | `"English"` | Il nome della lingua. | | `languageName` | `"English"` | Il nome della lingua. |
| `weight` | `1` | Il peso determina l'ordine delle lingue durante la creazione di siti multilingue. | | `weight` | `1` | Il peso determina l'ordine delle lingue durante la creazione di siti multilingue. |
@@ -125,7 +125,7 @@ Il file predefinito può essere utilizzato come modello per creare lingue aggiun
<!-- prettier-ignore-start --> <!-- prettier-ignore-start -->
| Name | Default | Description | | Name | Default | Description |
| ---------------------- | ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `params.displayName` | `"EN"` | Il nome utilizzato quando la lingua appare sul sito web. | | `params.displayName` | `"EN"` | Il nome utilizzato quando la lingua appare sul sito web. |
| `params.isoCode` | `"en"` | Il codice della lingua ISO per scopi di metadati HTML. Può essere una lingua di livello superiore (es. `en`) o una sottovariante (es. `en-AU`). | | `params.isoCode` | `"en"` | Il codice della lingua ISO per scopi di metadati HTML. Può essere una lingua di livello superiore (es. `en`) o una sottovariante (es. `en-AU`). |
| `params.rtl` | `false` | Se si tratta o meno di un linguaggio RTL. Imposta su "true" per ridisporre il contenuto da destra a sinistra. Blowfish supporta pienamente l'uso simultaneo dei linguaggi RTL e LTR e si adatterà dinamicamente ad entrambi. | | `params.rtl` | `false` | Se si tratta o meno di un linguaggio RTL. Imposta su "true" per ridisporre il contenuto da destra a sinistra. Blowfish supporta pienamente l'uso simultaneo dei linguaggi RTL e LTR e si adatterà dinamicamente ad entrambi. |
@@ -140,7 +140,7 @@ Il file predefinito può essere utilizzato come modello per creare lingue aggiun
#### Author #### Author
| Name | Default | Description | | Name | Default | Description |
| ----------------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `author.name` | _Not set_ | The author's name. This will be displayed in article footers, and on the homepage when the profile layout is used. | | `author.name` | _Not set_ | The author's name. This will be displayed in article footers, and on the homepage when the profile layout is used. |
| `author.image` | _Not set_ | Path to the image file of the author. The image should be a 1:1 aspect ratio. The image can be placed in the site's `assets/` folder or can be external url. | | `author.image` | _Not set_ | Path to the image file of the author. The image should be a 1:1 aspect ratio. The image can be placed in the site's `assets/` folder or can be external url. |
| `author.headline` | _Not set_ | A Markdown string containing the author's headline. It will be displayed on the profile homepage under the author's name. | | `author.headline` | _Not set_ | A Markdown string containing the author's headline. It will be displayed on the profile homepage under the author's name. |
@@ -167,7 +167,7 @@ Many of the article defaults here can be overridden on a per article basis by sp
### Global ### Global
| Name | Default | Description | | Name | Default | Description |
| ------------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `colorScheme` | `"blowfish"` | The theme colour scheme to use. Valid values are `blowfish` (default), `avocado`, `fire`, `ocean`, `forest`, `princess`, `neon`, `bloody`, `terminal`, `marvel`, `noir`, `autumn`, `congo`, 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`, `fire`, `ocean`, `forest`, `princess`, `neon`, `bloody`, `terminal`, `marvel`, `noir`, `autumn`, `congo`, 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`. |
@@ -185,6 +185,8 @@ Many of the article defaults here can be overridden on a per article basis by sp
| `defaultBackgroundImage` | _Not set_ | Default background image for both `background` homepage layout and `background` hero style | | `defaultBackgroundImage` | _Not set_ | Default background image for both `background` homepage layout and `background` hero style |
| `defaultFeaturedImage` | _Not set_ | Default background image for all `featured` images across articles, will be overridden by a local `featured` image. | | `defaultFeaturedImage` | _Not set_ | Default background image for all `featured` images across articles, will be overridden by a local `featured` image. |
| `defaultSocialImage` | _Not set_ | Default image for social media sharing (Open Graph and Twitter). Will be overridden by a local `feature` image if available. | | `defaultSocialImage` | _Not set_ | Default image for social media sharing (Open Graph and Twitter). Will be overridden by a local `feature` image if available. |
| `hotlinkFeatureImage` | `false` | Hotlink external images in article feature images and article cards. Those images will not be processed by Hugo. |
| `imagePosition` | _Not set_ | Sets the position of the default image using `object-position` attribute. Valid values are as specified in the [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/CSS/object-position#try_it). |
| `highlightCurrentMenuArea` | _Not set_ | Marks menu entries in the main menu when selected | | `highlightCurrentMenuArea` | _Not set_ | Marks menu entries in the main menu when selected |
| `smartTOC` | _Not set_ | Activate smart Table of Contents, items in view will be highlighted. | | `smartTOC` | _Not set_ | Activate smart Table of Contents, items in view will be highlighted. |
| `smartTOCHideUnfocusedChildren` | _Not set_ | When smart Table of Contents is turned on, this will hide deeper levels of the table when they are not in focus. | | `smartTOCHideUnfocusedChildren` | _Not set_ | When smart Table of Contents is turned on, this will hide deeper levels of the table when they are not in focus. |
@@ -193,13 +195,13 @@ Many of the article defaults here can be overridden on a per article basis by sp
### Header ### Header
| Name | Default | Description | | Name | Default | Description |
| --------------- | --------- | ------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `header.layout` | `"basic"` | Defines the header for the entire site, supported values are `basic`, `fixed`, `fixed-fill`, and `fixed-fill-blur`. | | `header.layout` | `"basic"` | Defines the header for the entire site, supported values are `basic`, `fixed`, `fixed-fill`, and `fixed-fill-blur`. |
### Footer ### Footer
| Name | Default | Description | | Name | Default | Description |
| ------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `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](#lingua-e-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](#lingua-e-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). |
@@ -209,7 +211,7 @@ Many of the article defaults here can be overridden on a per article basis by sp
### Homepage ### Homepage
| Name | Default | Description | | Name | Default | Description |
| ------------------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | --- | --- | --- |
| `homepage.layout` | `"profile"` | The layout of the homepage. Valid values are `page`, `profile`, `hero`, `card`, `background`, or `custom`. When set to `custom`, you must provide your own layout by creating a `/layouts/partials/home/custom.html` file. Refer to the [Homepage Layout]({{< ref "homepage-layout" >}}) section for more details. | | `homepage.layout` | `"profile"` | The layout of the homepage. Valid values are `page`, `profile`, `hero`, `card`, `background`, or `custom`. When set to `custom`, you must provide your own layout by creating a `/layouts/partials/home/custom.html` file. Refer to the [Homepage Layout]({{< ref "homepage-layout" >}}) section for more details. |
| `homepage.homepageImage` | _Not set_ | Image to be used in `hero` and `card` layouts. Can be set as local image from asset directory or external image url. Refer to the [Homepage Layout]({{< ref "homepage-layout" >}}) section for more details. | | `homepage.homepageImage` | _Not set_ | Image to be used in `hero` and `card` layouts. Can be set as local image from asset directory or external image url. Refer to the [Homepage Layout]({{< ref "homepage-layout" >}}) section for more details. |
| `homepage.showRecent` | `false` | Whether or not to display the recent articles list on the homepage. | | `homepage.showRecent` | `false` | Whether or not to display the recent articles list on the homepage. |
@@ -224,7 +226,7 @@ Many of the article defaults here can be overridden on a per article basis by sp
### Article ### Article
| Name | Default | Description | | Name | Default | Description |
| ------------------------------------- | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `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. |
@@ -259,7 +261,7 @@ Many of the article defaults here can be overridden on a per article basis by sp
### List ### List
| Name | Default | Description | | Name | Default | Description |
| ---------------------------------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `list.showHero` | `false` | Whether the thumbnail image will be shown as a hero image within each list page. | | `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`, `thumbAndBackground`. | | `list.heroStyle` | _Not set_ | Style to display the hero image, valid options are: `basic`, `big`, `background`, `thumbAndBackground`. |
| `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. |
@@ -280,13 +282,13 @@ Many of the article defaults here can be overridden on a per article basis by sp
### Sitemap ### Sitemap
| Name | Default | Description | | Name | Default | Description |
| ----------------------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `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/methods/page/kind/) 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/methods/page/kind/) for acceptable values. |
### Taxonomy ### Taxonomy
| Name | Default | Description | | Name | Default | Description |
| ------------------------------ | --------- | ---------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `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. |
| `taxonomy.showHero` | `false` | Whether the thumbnail image will be shown as a hero image within each taxonomy page. | | `taxonomy.showHero` | `false` | Whether the thumbnail image will be shown as a hero image within each taxonomy page. |
| `taxonomy.heroStyle` | _Not set_ | Style to display the hero image, valid options are: `basic`, `big`, `background`, `thumbAndBackground`. | | `taxonomy.heroStyle` | _Not set_ | Style to display the hero image, valid options are: `basic`, `big`, `background`, `thumbAndBackground`. |
@@ -299,7 +301,7 @@ Many of the article defaults here can be overridden on a per article basis by sp
### Term ### Term
| Name | Default | Description | | Name | Default | Description |
| -------------------------- | --------- | ---------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `term.showHero` | `false` | Whether the thumbnail image will be shown as a hero image within each term page. | | `term.showHero` | `false` | Whether the thumbnail image will be shown as a hero image within each term page. |
| `term.heroStyle` | _Not set_ | Style to display the hero image, valid options are: `basic`, `big`, `background`, `thumbAndBackground`. | | `term.heroStyle` | _Not set_ | Style to display the hero image, valid options are: `basic`, `big`, `background`, `thumbAndBackground`. |
| `term.showBreadcrumbs` | `false` | Whether or not breadcrumbs are displayed in the term header. | | `term.showBreadcrumbs` | `false` | Whether or not breadcrumbs are displayed in the term header. |
@@ -313,7 +315,7 @@ Many of the article defaults here can be overridden on a per article basis by sp
### Firebase ### Firebase
| Name | Default | Description | | Name | Default | Description |
| ---------------------------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `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. |
@@ -325,14 +327,14 @@ Many of the article defaults here can be overridden on a per article basis by sp
### Fathom Analytics ### Fathom Analytics
| Name | Default | Description | | Name | Default | Description |
| ------------------------ | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `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. |
### Umami Analytics ### Umami Analytics
| Name | Default | Description | | Name | Default | Description |
| -------------------------- | --------- |----------------------------------------------------------------------------------------------------------------------------------------------------| | --- | --- | --- |
| `umamiAnalytics.websiteid` | _Not set_ | The site code generated by Umami Analytics for the website. Refer to the [Analytics docs]({{< ref "partials#analytics" >}}) for more details. | | `umamiAnalytics.websiteid` | _Not set_ | The site code generated by Umami Analytics for the website. Refer to the [Analytics docs]({{< ref "partials#analytics" >}}) for more details. |
| `umamiAnalytics.domain` | _Not set_ | If using a custom domain with Umami Analytics, provide it here to serve `script.js` from the custom domain. | | `umamiAnalytics.domain` | _Not set_ | If using a custom domain with Umami Analytics, provide it here to serve `script.js` from the custom domain. |
| `umamiAnalytics.dataDomains` | _Not set_ | If you want the tracker to only run on specific domains, provide it for your tracker script. This is a comma delimited list of domain names. Such as "yoursite.com,yoursite2.com". | | `umamiAnalytics.dataDomains` | _Not set_ | If you want the tracker to only run on specific domains, provide it for your tracker script. This is a comma delimited list of domain names. Such as "yoursite.com,yoursite2.com". |
@@ -342,24 +344,24 @@ Many of the article defaults here can be overridden on a per article basis by sp
### Seline Analytics ### Seline Analytics
| Name | Default | Description | | Name | Default | Description |
|-----------------------------------|-----------|-------------------------------------------------------------------------------------------------------------------------------------------| | --- | --- | --- |
| `selineAnalytics.token` | _Not set_ | The token generated by Seline Analytics for the website. Refer to the [Analytics docs]({{< ref "partials#analytics" >}}) for more details. | | `selineAnalytics.token` | _Not set_ | The token generated by Seline Analytics for the website. Refer to the [Analytics docs]({{< ref "partials#analytics" >}}) for more details. |
| `selineAnalytics.enableTrackEvent` | true | When set to `true` track event will add automatically. If you do not want to add track event, set it to `false`. | | `selineAnalytics.enableTrackEvent` | true | When set to `true` track event will add automatically. If you do not want to add track event, set it to `false`. |
### BuyMeACoffee ### BuyMeACoffee
| Name | Default | Description | | Name | Default | Description |
| ----------------------------------- | --------- | --------------------------------------------------------------------------- | | --- | --- | --- |
| `buymeacoffee.identifier` | _Not set_ | The identifier to the target buymeacoffee account. | | `buymeacoffee.identifier` | _Not set_ | The identifier to the target buymeacoffee account. |
| `buymeacoffee.globalWidget` | _Not set_ | Activate the global buymeacoffee widget. | | `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.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.globalWidgetColor` | `#FFDD00` | Widget color in hex format. |
| `buymeacoffee.globalWidgetPosition` | _Not set_ | Position of the widget, i.e. "Left" or "Right" | | `buymeacoffee.globalWidgetPosition` | _Not set_ | Position of the widget, i.e. "left" or "right" |
### Verifications ### Verifications
| Name | Default | Description | | Name | Default | Description |
| ------------------------ | --------- | --------------------------------------------------------------------------------------- | | --- | --- | --- |
| `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. |
@@ -369,7 +371,7 @@ Many of the article defaults here can be overridden on a per article basis by sp
### RSSNext ### RSSNext
| Name | Default | Description | | Name | Default | Description |
| ------------------------ | --------- |--------------------------------------------------------------------------------------------------------------------------------------| | --- | --- | --- |
| `rssnext.feedId` | _Not set_ | The rss `feedId` string provided by [RSSNext/Follow](https://follow.is/) to be included in the `rss.xml`, which can helps to claim rss feed as your own. | | `rssnext.feedId` | _Not set_ | The rss `feedId` string provided by [RSSNext/Follow](https://follow.is/) to be included in the `rss.xml`, which can helps to claim rss feed as your own. |
| `rssnext.userId` | _Not set_ | The rss `userId` string provided by [RSSNext/Follow](https://follow.is/) to be included in the `rss.xml`, which can helps to claim rss feed as your own. | | `rssnext.userId` | _Not set_ | The rss `userId` string provided by [RSSNext/Follow](https://follow.is/) to be included in the `rss.xml`, which can helps to claim rss feed as your own. |
@@ -40,7 +40,7 @@ npx blowfish-tools
<!-- prettier-ignore-start --> <!-- prettier-ignore-start -->
| 名前 | デフォルト | 説明 | | 名前 | デフォルト | 説明 |
| ------------------------ | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `theme` | `"blowfish"` | Hugo Modules を使用している場合は、この設定値を削除する必要があります。 他のすべてのインストールタイプでは、テーマが機能するためにこれを `blowfish` に設定する必要があります。 | | `theme` | `"blowfish"` | Hugo Modules を使用している場合は、この設定値を削除する必要があります。 他のすべてのインストールタイプでは、テーマが機能するためにこれを `blowfish` に設定する必要があります。 |
| `baseURL` | _未設定_ | ウェブサイトのルートへの URL です。 | | `baseURL` | _未設定_ | ウェブサイトのルートへの URL です。 |
| `defaultContentLanguage` | `"en"` | この値は、テーマコンポーネントとコンテンツのデフォルト言語を決定します。 サポートされている言語コードについては、以下の[言語と i18n](#言語と-i18n) セクションを参照してください。 | | `defaultContentLanguage` | `"en"` | この値は、テーマコンポーネントとコンテンツのデフォルト言語を決定します。 サポートされている言語コードについては、以下の[言語と i18n](#言語と-i18n) セクションを参照してください。 |
@@ -113,7 +113,7 @@ Blowfish は多言語ウェブサイト向けに最適化されており、テ
<!-- prettier-ignore-start --> <!-- prettier-ignore-start -->
| 名前 | デフォルト | 説明 | | 名前 | デフォルト | 説明 |
| -------------- | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `languageCode` | `"en"` | このファイルの Hugo 言語コードです。トップレベル言語(例: `en`)またはサブバリアント(例: `en-au`)にすることができ、ファイル名の言語コードと一致する必要があります。Hugo はこの値が常に小文字であることを想定しています。適切な HTML 準拠のために、大文字と小文字を区別する `isoCode` パラメータを設定します。 | | `languageCode` | `"en"` | このファイルの Hugo 言語コードです。トップレベル言語(例: `en`)またはサブバリアント(例: `en-au`)にすることができ、ファイル名の言語コードと一致する必要があります。Hugo はこの値が常に小文字であることを想定しています。適切な HTML 準拠のために、大文字と小文字を区別する `isoCode` パラメータを設定します。 |
| `languageName` | `"English"` | 言語の名前です。 | | `languageName` | `"English"` | 言語の名前です。 |
| `weight` | `1` | 重みは、多言語サイトを構築するときの言語の順序を決定します。 | | `weight` | `1` | 重みは、多言語サイトを構築するときの言語の順序を決定します。 |
@@ -124,7 +124,7 @@ Blowfish は多言語ウェブサイト向けに最適化されており、テ
<!-- prettier-ignore-start --> <!-- prettier-ignore-start -->
| 名前 | デフォルト | 説明 | | 名前 | デフォルト | 説明 |
| ---------------------- | ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `params.displayName` | `"EN"` | ウェブサイトに言語が表示されるときに使用される名前です。 | | `params.displayName` | `"EN"` | ウェブサイトに言語が表示されるときに使用される名前です。 |
| `params.isoCode` | `"en"` | HTML メタデータ用の ISO 言語コードです。トップレベル言語(例: `en`)またはサブバリアント(例: `en-AU`)にすることができます。 | | `params.isoCode` | `"en"` | HTML メタデータ用の ISO 言語コードです。トップレベル言語(例: `en`)またはサブバリアント(例: `en-AU`)にすることができます。 |
| `params.rtl` | `false` | これが RTL 言語かどうかです。`true` に設定すると、コンテンツが右から左に並べ替えられます。 Blowfish は RTL 言語と LTR 言語の同時使用を完全にサポートしており、両方に動的に調整されます。 | | `params.rtl` | `false` | これが RTL 言語かどうかです。`true` に設定すると、コンテンツが右から左に並べ替えられます。 Blowfish は RTL 言語と LTR 言語の同時使用を完全にサポートしており、両方に動的に調整されます。 |
@@ -140,7 +140,7 @@ Blowfish は多言語ウェブサイト向けに最適化されており、テ
<!-- prettier-ignore-start --> <!-- prettier-ignore-start -->
| 名前 | デフォルト | 説明 | | 名前 | デフォルト | 説明 |
| ----------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `author.name` | _未設定_ | 著者の名前です。これは、記事のフッターと、プロフィールレイアウトが使用されている場合はホームページに表示されます。 | | `author.name` | _未設定_ | 著者の名前です。これは、記事のフッターと、プロフィールレイアウトが使用されている場合はホームページに表示されます。 |
| `author.image` | _未設定_ | 著者の画像ファイルへのパスです。画像は縦横比 1:1 である必要があります。画像は、サイトの `assets/` フォルダに配置することも、外部 URL にすることもできます。 | | `author.image` | _未設定_ | 著者の画像ファイルへのパスです。画像は縦横比 1:1 である必要があります。画像は、サイトの `assets/` フォルダに配置することも、外部 URL にすることもできます。 |
| `author.headline` | _未設定_ | 著者の見出しを含む Markdown 文字列です。プロフィールホームページの著者の名前に下に表示されます。 | | `author.headline` | _未設定_ | 著者の見出しを含む Markdown 文字列です。プロフィールホームページの著者の名前に下に表示されます。 |
@@ -167,7 +167,7 @@ Blowfish は、テーマの機能を制御する多数の設定パラメータ
### グローバル ### グローバル
| 名前 | デフォルト | 説明 | | 名前 | デフォルト | 説明 |
| ------------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `colorScheme` | `"blowfish"` | 使用するテーマのカラースキームです。有効な値は、`blowfish`(デフォルト)、`avocado`、`fire`、`ocean`、`forest`、`princess`、`neon`、`bloody`、`terminal`、`marvel`、`noir`、`autumn`、`congo`、`slate` です。詳細については、[カラースキーム]({{< ref "getting-started#カラースキーム" >}})セクションを参照してください。 | | `colorScheme` | `"blowfish"` | 使用するテーマのカラースキームです。有効な値は、`blowfish`(デフォルト)、`avocado`、`fire`、`ocean`、`forest`、`princess`、`neon`、`bloody`、`terminal`、`marvel`、`noir`、`autumn`、`congo`、`slate` です。詳細については、[カラースキーム]({{< ref "getting-started#カラースキーム" >}})セクションを参照してください。 |
| `defaultAppearance` | `"light"` | デフォルトのテーマの外観です。`light` または `dark` のいずれかです。 | | `defaultAppearance` | `"light"` | デフォルトのテーマの外観です。`light` または `dark` のいずれかです。 |
| `autoSwitchAppearance` | `true` | 訪問者のオペレーティングシステムの設定に基づいてテーマの外観を自動的に切り替えるかどうかです。`false` に設定すると、サイトは常に `defaultAppearance` を使用します。 | | `autoSwitchAppearance` | `true` | 訪問者のオペレーティングシステムの設定に基づいてテーマの外観を自動的に切り替えるかどうかです。`false` に設定すると、サイトは常に `defaultAppearance` を使用します。 |
@@ -185,6 +185,8 @@ Blowfish は、テーマの機能を制御する多数の設定パラメータ
| `defaultBackgroundImage` | _未設定_ | `background` ホームページレイアウトと `background` ヒーロースタイルの両方のデフォルトの背景画像です。 | | `defaultBackgroundImage` | _未設定_ | `background` ホームページレイアウトと `background` ヒーロースタイルの両方のデフォルトの背景画像です。 |
| `defaultFeaturedImage` | _未設定_ | 記事全体のすべての `featured` 画像のデフォルトの背景画像です。ローカルの `featured` 画像によってオーバーライドされます。 | | `defaultFeaturedImage` | _未設定_ | 記事全体のすべての `featured` 画像のデフォルトの背景画像です。ローカルの `featured` 画像によってオーバーライドされます。 |
| `defaultSocialImage` | _未設定_ | ソーシャルメディア共有(Open Graph と Twitter)用のデフォルト画像。ローカルの `featured` 画像によってオーバーライドされます。 | | `defaultSocialImage` | _未設定_ | ソーシャルメディア共有(Open Graph と Twitter)用のデフォルト画像。ローカルの `featured` 画像によってオーバーライドされます。 |
| `hotlinkFeatureImage` | `false` | 記事のアイキャッチ画像や記事カードで外部画像をホットリンクします。これらの画像は Hugo によって処理されません。 |
| `imagePosition` | _未設定_ | `object-position` 属性を使用してデフォルト画像の位置を設定します。有効な値は [MDN ドキュメント](https://developer.mozilla.org/en-US/docs/Web/CSS/object-position#try_it) に記載されています。 |
| `highlightCurrentMenuArea` | _未設定_ | メインメニューのメニュー項目が選択されているときにマークを付けます。 | | `highlightCurrentMenuArea` | _未設定_ | メインメニューのメニュー項目が選択されているときにマークを付けます。 |
| `smartTOC` | _未設定_ | スマート目次をアクティブにします。表示されている項目が強調表示されます。 | | `smartTOC` | _未設定_ | スマート目次をアクティブにします。表示されている項目が強調表示されます。 |
| `smartTOCHideUnfocusedChildren` | _未設定_ | スマート目次がオンになっている場合、フォーカスされていないときに、テーブルのより深いレベルが非表示になります。 | | `smartTOCHideUnfocusedChildren` | _未設定_ | スマート目次がオンになっている場合、フォーカスされていないときに、テーブルのより深いレベルが非表示になります。 |
@@ -193,13 +195,13 @@ Blowfish は、テーマの機能を制御する多数の設定パラメータ
### ヘッダー(Header) ### ヘッダー(Header)
| 名前 | デフォルト | 説明 | | 名前 | デフォルト | 説明 |
| --------------- | ---------- | ------------------------------------------------------------------------------------------------------------------ | | --- | --- | --- |
| `header.layout` | `"basic"` | サイト全体のヘッダーを定義します。サポートされている値は、`basic`、`fixed`、`fixed-fill`、`fixed-fill-blur` です。 | | `header.layout` | `"basic"` | サイト全体のヘッダーを定義します。サポートされている値は、`basic`、`fixed`、`fixed-fill`、`fixed-fill-blur` です。 |
### フッター(Footer) ### フッター(Footer)
| 名前 | デフォルト | 説明 | | 名前 | デフォルト | 説明 |
| ------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `footer.showMenu` | `true` | フッターメニューを表示/非表示にします。これは、`config/_default/menus.en.toml` ファイルの `[[footer]]` セクションで設定できます。 | | `footer.showMenu` | `true` | フッターメニューを表示/非表示にします。これは、`config/_default/menus.en.toml` ファイルの `[[footer]]` セクションで設定できます。 |
| `footer.showCopyright` | `true` | サイトのフッターに著作権文字列を表示するかどうかです。文字列自体は、[言語設定](#言語と-i18n) の `copyright` パラメータを使用してカスタマイズできることに注意してください。 | | `footer.showCopyright` | `true` | サイトのフッターに著作権文字列を表示するかどうかです。文字列自体は、[言語設定](#言語と-i18n) の `copyright` パラメータを使用してカスタマイズできることに注意してください。 |
| `footer.showThemeAttribution` | `true` | サイトのフッターに「powered by」というテーマの帰属を表示するかどうかです。このメッセージを無効にする場合は、サイトの他の場所(たとえば、about ページ)でテーマの帰属を検討してください。 | | `footer.showThemeAttribution` | `true` | サイトのフッターに「powered by」というテーマの帰属を表示するかどうかです。このメッセージを無効にする場合は、サイトの他の場所(たとえば、about ページ)でテーマの帰属を検討してください。 |
@@ -209,7 +211,7 @@ Blowfish は、テーマの機能を制御する多数の設定パラメータ
### ホームページ(Homepage) ### ホームページ(Homepage)
| 名前 | デフォルト | 説明 | | 名前 | デフォルト | 説明 |
| --------------------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | --- | --- | --- |
| `homepage.layout` | `"profile"` | ホームページのレイアウトです。有効な値は、`page`、`profile`、`hero`、`card`、`background`、`custom` です。`custom` に設定した場合、`/layouts/partials/home/custom.html` ファイルを作成して独自のレイアウトを提供する必要があります。詳細については、[ホームページレイアウト]({{< ref "homepage-layout" >}}) セクションを参照してください。 | | `homepage.layout` | `"profile"` | ホームページのレイアウトです。有効な値は、`page`、`profile`、`hero`、`card`、`background`、`custom` です。`custom` に設定した場合、`/layouts/partials/home/custom.html` ファイルを作成して独自のレイアウトを提供する必要があります。詳細については、[ホームページレイアウト]({{< ref "homepage-layout" >}}) セクションを参照してください。 |
| `homepage.homepageImage` | _未設定_ | `hero` レイアウトと `card` レイアウトで使用される画像です。アセットディレクトリからのローカル画像または外部画像 URL として設定できます。詳細については、[ホームページレイアウト]({{< ref "homepage-layout" >}}) セクションを参照してください。 | | `homepage.homepageImage` | _未設定_ | `hero` レイアウトと `card` レイアウトで使用される画像です。アセットディレクトリからのローカル画像または外部画像 URL として設定できます。詳細については、[ホームページレイアウト]({{< ref "homepage-layout" >}}) セクションを参照してください。 |
| `homepage.showRecent` | `false` | ホームページに最近の記事リストを表示するかどうかです。 | | `homepage.showRecent` | `false` | ホームページに最近の記事リストを表示するかどうかです。 |
@@ -224,7 +226,7 @@ Blowfish は、テーマの機能を制御する多数の設定パラメータ
### 記事(Article) ### 記事(Article)
| 名前 | デフォルト | 説明 | | 名前 | デフォルト | 説明 |
| ------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `article.showDate` | `true` | 記事の日付を表示するかどうかです。 | | `article.showDate` | `true` | 記事の日付を表示するかどうかです。 |
| `article.showViews` | `false` | 記事の表示回数を表示するかどうかです。これには Firebase 統合を有効にする必要があります。以下をご覧ください。 | | `article.showViews` | `false` | 記事の表示回数を表示するかどうかです。これには Firebase 統合を有効にする必要があります。以下をご覧ください。 |
| `article.showLikes` | `false` | 記事のいいねを表示するかどうかです。これには Firebase 統合を有効にする必要があります。以下をご覧ください。 | | `article.showLikes` | `false` | 記事のいいねを表示するかどうかです。これには Firebase 統合を有効にする必要があります。以下をご覧ください。 |
@@ -259,7 +261,7 @@ Blowfish は、テーマの機能を制御する多数の設定パラメータ
### リスト(List) ### リスト(List)
| 名前 | デフォルト | 説明 | | 名前 | デフォルト | 説明 |
| ---------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `list.showHero` | `false` | 各リストページ内でサムネイル画像をヒーロー画像として表示するかどうか。 | | `list.showHero` | `false` | 各リストページ内でサムネイル画像をヒーロー画像として表示するかどうか。 |
| `list.heroStyle` | _未設定_ | ヒーロー画像の表示スタイル。有効なオプションは `basic`、`big`、`background`、`thumbAndBackground` です。 | | `list.heroStyle` | _未設定_ | ヒーロー画像の表示スタイル。有効なオプションは `basic`、`big`、`background`、`thumbAndBackground` です。 |
| `list.showBreadcrumbs` | `false` | リストページのヘッダーにパンくずリストを表示するかどうか。 | | `list.showBreadcrumbs` | `false` | リストページのヘッダーにパンくずリストを表示するかどうか。 |
@@ -280,13 +282,13 @@ Blowfish は、テーマの機能を制御する多数の設定パラメータ
### サイトマップ(Sitemap) ### サイトマップ(Sitemap)
| 名前 | デフォルト | 説明 | | 名前 | デフォルト | 説明 |
| ----------------------- | ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `sitemap.excludedKinds` | `["taxonomy", "term"]` | 生成された `/sitemap.xml` ファイルから除外するコンテンツの種類。許容される値については、[Hugo のドキュメント](https://gohugo.io/methods/page/kind/)を参照してください。 | | `sitemap.excludedKinds` | `["taxonomy", "term"]` | 生成された `/sitemap.xml` ファイルから除外するコンテンツの種類。許容される値については、[Hugo のドキュメント](https://gohugo.io/methods/page/kind/)を参照してください。 |
### タクソノミー(Taxonomy) ### タクソノミー(Taxonomy)
| 名前 | デフォルト | 説明 | | 名前 | デフォルト | 説明 |
| ------------------------------ | ---------- | ----------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `taxonomy.showTermCount` | `true` | タクソノミーリストにタクソノミー用語内の記事数を表示するかどうか。 | | `taxonomy.showTermCount` | `true` | タクソノミーリストにタクソノミー用語内の記事数を表示するかどうか。 |
| `taxonomy.showHero` | `false` | 各タクソノミーページ内でサムネイル画像をヒーロー画像として表示するかどうか。 | | `taxonomy.showHero` | `false` | 各タクソノミーページ内でサムネイル画像をヒーロー画像として表示するかどうか。 |
| `taxonomy.heroStyle` | _未設定_ | ヒーロー画像の表示スタイル。有効なオプションは `basic`、`big`、`background`、`thumbAndBackground` です。 | | `taxonomy.heroStyle` | _未設定_ | ヒーロー画像の表示スタイル。有効なオプションは `basic`、`big`、`background`、`thumbAndBackground` です。 |
@@ -299,7 +301,7 @@ Blowfish は、テーマの機能を制御する多数の設定パラメータ
### ターム(Term) ### ターム(Term)
| 名前 | デフォルト | 説明 | | 名前 | デフォルト | 説明 |
| -------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `term.showHero` | `false` | 各タームページ内でサムネイル画像をヒーロー画像として表示するかどうか。 | | `term.showHero` | `false` | 各タームページ内でサムネイル画像をヒーロー画像として表示するかどうか。 |
| `term.heroStyle` | _未設定_ | ヒーロー画像の表示スタイル。有効なオプションは `basic`、`big`、`background`、`thumbAndBackground` です。 | | `term.heroStyle` | _未設定_ | ヒーロー画像の表示スタイル。有効なオプションは `basic`、`big`、`background`、`thumbAndBackground` です。 |
| `term.showBreadcrumbs` | `false` | タームのヘッダーにパンくずリストを表示するかどうか。 | | `term.showBreadcrumbs` | `false` | タームのヘッダーにパンくずリストを表示するかどうか。 |
@@ -313,7 +315,7 @@ Blowfish は、テーマの機能を制御する多数の設定パラメータ
### Firebase ### Firebase
| 名前 | デフォルト | 説明 | | 名前 | デフォルト | 説明 |
| ---------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `firebase.apiKey` | _未設定_ | Firebase との統合に必要な Firebase API キー。Firebase を Blowfish に統合する方法については、[このページ]({{< ref "firebase-views" >}})を参照してください。 | | `firebase.apiKey` | _未設定_ | Firebase との統合に必要な Firebase API キー。Firebase を Blowfish に統合する方法については、[このページ]({{< ref "firebase-views" >}})を参照してください。 |
| `firebase.authDomain` | _未設定_ | Firebase との統合に必要な Firebase 認証ドメイン。Firebase を Blowfish に統合する方法については、[このページ]({{< ref "firebase-views" >}})を参照してください。 | | `firebase.authDomain` | _未設定_ | Firebase との統合に必要な Firebase 認証ドメイン。Firebase を Blowfish に統合する方法については、[このページ]({{< ref "firebase-views" >}})を参照してください。 |
| `firebase.projectId` | _未設定_ | Firebase との統合に必要な Firebase プロジェクト ID。Firebase を Blowfish に統合する方法については、[このページ]({{< ref "firebase-views" >}})を参照してください。 | | `firebase.projectId` | _未設定_ | Firebase との統合に必要な Firebase プロジェクト ID。Firebase を Blowfish に統合する方法については、[このページ]({{< ref "firebase-views" >}})を参照してください。 |
@@ -325,14 +327,14 @@ Blowfish は、テーマの機能を制御する多数の設定パラメータ
### Fathom Analytics ### Fathom Analytics
| 名前 | デフォルト | 説明 | | 名前 | デフォルト | 説明 |
| ------------------------ | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `fathomAnalytics.site` | _未設定_ | ウェブサイト用に Fathom Analytics によって生成されたサイトコード。詳細については、[Analytics のドキュメント]({{< ref "partials#アナリティクス" >}})を参照してください。 | | `fathomAnalytics.site` | _未設定_ | ウェブサイト用に Fathom Analytics によって生成されたサイトコード。詳細については、[Analytics のドキュメント]({{< ref "partials#アナリティクス" >}})を参照してください。 |
| `fathomAnalytics.domain` | _未設定_ | Fathom Analytics でカスタムドメインを使用している場合、ここに指定して、`script.js` をカスタムドメインから配信します。 | | `fathomAnalytics.domain` | _未設定_ | Fathom Analytics でカスタムドメインを使用している場合、ここに指定して、`script.js` をカスタムドメインから配信します。 |
### Umami Analytics ### Umami Analytics
| 名前 | デフォルト | 説明 | | 名前 | デフォルト | 説明 |
| --------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `umamiAnalytics.websiteid` | _未設定_ | ウェブサイト用に Umami Analytics によって生成されたサイトコード。詳細については、[Analytics のドキュメント]({{< ref "partials#アナリティクス" >}})を参照してください。 | | `umamiAnalytics.websiteid` | _未設定_ | ウェブサイト用に Umami Analytics によって生成されたサイトコード。詳細については、[Analytics のドキュメント]({{< ref "partials#アナリティクス" >}})を参照してください。 |
| `umamiAnalytics.domain` | _未設定_ | Umami Analytics でカスタムドメインを使用している場合、ここに指定して、`script.js` をカスタムドメインから配信します。 | | `umamiAnalytics.domain` | _未設定_ | Umami Analytics でカスタムドメインを使用している場合、ここに指定して、`script.js` をカスタムドメインから配信します。 |
| `umamiAnalytics.dataDomains` | _未設定_ | トラッカーを特定のドメインでのみ実行したい場合は、トラッカースクリプトに指定します。これは、ドメイン名のカンマ区切りリストです。例えば "yoursite.com,yoursite2.com" のようになります。 | | `umamiAnalytics.dataDomains` | _未設定_ | トラッカーを特定のドメインでのみ実行したい場合は、トラッカースクリプトに指定します。これは、ドメイン名のカンマ区切りリストです。例えば "yoursite.com,yoursite2.com" のようになります。 |
@@ -342,19 +344,19 @@ Blowfish は、テーマの機能を制御する多数の設定パラメータ
### Seline Analytics ### Seline Analytics
| 名前 | デフォルト | 説明 | | 名前 | デフォルト | 説明 |
| ---------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `selineAnalytics.token` | _未設定_ | ウェブサイト用に Seline Analytics によって生成されたトークン。詳細については、[Analytics のドキュメント]({{< ref "partials#アナリティクス" >}})を参照してください。 | | `selineAnalytics.token` | _未設定_ | ウェブサイト用に Seline Analytics によって生成されたトークン。詳細については、[Analytics のドキュメント]({{< ref "partials#アナリティクス" >}})を参照してください。 |
| `selineAnalytics.enableTrackEvent` | `true` | `true` に設定すると、トラックイベントが自動的に追加されます。トラックイベントを追加したくない場合は、`false` に設定してください。 | | `selineAnalytics.enableTrackEvent` | `true` | `true` に設定すると、トラックイベントが自動的に追加されます。トラックイベントを追加したくない場合は、`false` に設定してください。 |
### BuyMeACoffee ### BuyMeACoffee
| 名前 | デフォルト | 説明 | | 名前 | デフォルト | 説明 |
| ----------------------------------- | ---------- | ---------------------------------------------------------------------- | | --- | --- | --- |
| `buymeacoffee.identifier` | _未設定_ | ターゲットの buymeacoffee アカウントの識別子。 | | `buymeacoffee.identifier` | _未設定_ | ターゲットの buymeacoffee アカウントの識別子。 |
| `buymeacoffee.globalWidget` | _未設定_ | グローバル buymeacoffee ウィジェットを有効にします。 | | `buymeacoffee.globalWidget` | _未設定_ | グローバル buymeacoffee ウィジェットを有効にします。 |
| `buymeacoffee.globalWidgetMessage` | _未設定_ | 新しいユーザーが初めてサイトにアクセスしたときに表示されるメッセージ。 | | `buymeacoffee.globalWidgetMessage` | _未設定_ | 新しいユーザーが初めてサイトにアクセスしたときに表示されるメッセージ。 |
| `buymeacoffee.globalWidgetColor` | _未設定_ | ウィジェットの色(16進数形式)。 | | `buymeacoffee.globalWidgetColor` | `#FFDD00` | ウィジェットの色(16進数形式)。 |
| `buymeacoffee.globalWidgetPosition` | _未設定_ | ウィジェットの位置。例えば "Left" または "Right" | | `buymeacoffee.globalWidgetPosition` | _未設定_ | ウィジェットの位置。例えば "left" または "right" |
### verification ### verification
@@ -369,7 +371,7 @@ Blowfish は、テーマの機能を制御する多数の設定パラメータ
### RSSNext ### RSSNext
| 名前 | デフォルト | 説明 | | 名前 | デフォルト | 説明 |
| ---------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `rssnext.feedId` | _未設定_ | [RSSNext/Follow](https://follow.is/) によって提供される rss `feedId` 文字列。`rss.xml` に含まれ、rss フィードを自身のものとしてクレームするのに役立ちます。 | | `rssnext.feedId` | _未設定_ | [RSSNext/Follow](https://follow.is/) によって提供される rss `feedId` 文字列。`rss.xml` に含まれ、rss フィードを自身のものとしてクレームするのに役立ちます。 |
| `rssnext.userId` | _未設定_ | [RSSNext/Follow](https://follow.is/) によって提供される rss `userId` 文字列。`rss.xml` に含まれ、rss フィードを自身のものとしてクレームするのに役立ちます。 | | `rssnext.userId` | _未設定_ | [RSSNext/Follow](https://follow.is/) によって提供される rss `userId` 文字列。`rss.xml` に含まれ、rss フィードを自身のものとしてクレームするのに役立ちます。 |
+24 -22
View File
@@ -40,7 +40,7 @@ Note that the variable names provided in this table use dot notation to simplify
<!-- prettier-ignore-start --> <!-- prettier-ignore-start -->
| Name | Default | Description | | Name | Default | Description |
| ------------------------ | ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `theme` | `"blowfish"` | When using Hugo Modules this config value should be removed. For all other installation types, this must be set to `blowfish` for the theme to function. | | `theme` | `"blowfish"` | When using Hugo Modules this config value should be removed. For all other installation types, this must be set to `blowfish` for the theme to function. |
| `baseURL` | _Not set_ | The URL to the root of the website. | | `baseURL` | _Not set_ | The URL to the root of the website. |
| `defaultContentLanguage` | `"en"` | This value determines the default language of theme components and content. Refer to the [language and i18n](#language-and-i18n) section below for supported language codes. | | `defaultContentLanguage` | `"en"` | This value determines the default language of theme components and content. Refer to the [language and i18n](#language-and-i18n) section below for supported language codes. |
@@ -114,7 +114,7 @@ The default file can be used as a template to create additional languages, or re
<!-- prettier-ignore-start --> <!-- prettier-ignore-start -->
| Name | Default | Description | | Name | Default | Description |
| -------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | --- | --- | --- |
| `languageCode` | `"en"` | The Hugo language code for this file. It can be a top-level language (ie. `en`) or a sub-variant (ie. `en-au`) and should match the language code in the filename. Hugo expects this value to always be in lowercase. For proper HTML compliance, set the `isoCode` parameter which is case-sensitive. | | `languageCode` | `"en"` | The Hugo language code for this file. It can be a top-level language (ie. `en`) or a sub-variant (ie. `en-au`) and should match the language code in the filename. Hugo expects this value to always be in lowercase. For proper HTML compliance, set the `isoCode` parameter which is case-sensitive. |
| `languageName` | `"English"` | The name of the language. | | `languageName` | `"English"` | The name of the language. |
| `weight` | `1` | The weight determines the order of languages when building multilingual sites. | | `weight` | `1` | The weight determines the order of languages when building multilingual sites. |
@@ -125,7 +125,7 @@ The default file can be used as a template to create additional languages, or re
<!-- prettier-ignore-start --> <!-- prettier-ignore-start -->
| Name | Default | Description | | Name | Default | Description |
| ---------------------- | ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `params.displayName` | `"EN"` | The name used when the language appears on the website. | | `params.displayName` | `"EN"` | The name used when the language appears on the website. |
| `params.isoCode` | `"en"` | The ISO language code for HTML metadata purposes. It can be a top-level language (ie. `en`) or a sub-variant (ie. `en-AU`). | | `params.isoCode` | `"en"` | The ISO language code for HTML metadata purposes. It can be a top-level language (ie. `en`) or a sub-variant (ie. `en-AU`). |
| `params.rtl` | `false` | Whether or not this is a RTL language. Set to `true` to reflow content from right-to-left. Blowfish fully supports using RTL and LTR languages at the same time and will dynamically adjust to both. | | `params.rtl` | `false` | Whether or not this is a RTL language. Set to `true` to reflow content from right-to-left. Blowfish fully supports using RTL and LTR languages at the same time and will dynamically adjust to both. |
@@ -140,7 +140,7 @@ The default file can be used as a template to create additional languages, or re
##### Author ##### Author
| Name | Default | Description | | Name | Default | Description |
| ---------------------------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `params.author.name` | _Not set_ | The author's name. This will be displayed in article footers, and on the homepage when the profile layout is used. | | `params.author.name` | _Not set_ | The author's name. This will be displayed in article footers, and on the homepage when the profile layout is used. |
| `params.author.email` | _Not set_ | The author's email. This will be used if the reply-via-email functionality is enabled. | | `params.author.email` | _Not set_ | The author's email. This will be used if the reply-via-email functionality is enabled. |
| `params.author.image` | _Not set_ | Path to the image file of the author. The image should be a 1:1 aspect ratio. The image can be placed in the site's `assets/` folder or can be external url. | | `params.author.image` | _Not set_ | Path to the image file of the author. The image should be a 1:1 aspect ratio. The image can be placed in the site's `assets/` folder or can be external url. |
@@ -169,7 +169,7 @@ Many of the article defaults here can be overridden on a per article basis by sp
### Global ### Global
| Name | Default | Description | | Name | Default | Description |
| ------------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `colorScheme` | `"blowfish"` | The theme colour scheme to use. Valid values are `blowfish` (default), `avocado`, `fire`, `ocean`, `forest`, `princess`, `neon`, `bloody`, `terminal`, `marvel`, `noir`, `autumn`, `congo`, 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`, `fire`, `ocean`, `forest`, `princess`, `neon`, `bloody`, `terminal`, `marvel`, `noir`, `autumn`, `congo`, 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`. |
@@ -191,6 +191,8 @@ Many of the article defaults here can be overridden on a per article basis by sp
| `defaultBackgroundImage` | _Not set_ | Default background image for both `background` homepage layout and `background` hero style | | `defaultBackgroundImage` | _Not set_ | Default background image for both `background` homepage layout and `background` hero style |
| `defaultFeaturedImage` | _Not set_ | Default background image for all `featured` images across articles, will be overridden by a local `featured` image. | | `defaultFeaturedImage` | _Not set_ | Default background image for all `featured` images across articles, will be overridden by a local `featured` image. |
| `defaultSocialImage` | _Not set_ | Default image for social media sharing (Open Graph and Twitter). Will be overridden by a local `feature` image. | | `defaultSocialImage` | _Not set_ | Default image for social media sharing (Open Graph and Twitter). Will be overridden by a local `feature` image. |
| `hotlinkFeatureImage` | `false` | Hotlink external images in article feature images and article cards. Those images will not be processed by Hugo. |
| `imagePosition` | _Not set_ | Sets the position of the default image using `object-position` attribute. Valid values are as specified in the [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/CSS/object-position#try_it). |
| `highlightCurrentMenuArea` | _Not set_ | Marks menu entries in the main menu when selected | | `highlightCurrentMenuArea` | _Not set_ | Marks menu entries in the main menu when selected |
| `smartTOC` | _Not set_ | Activate smart Table of Contents, items in view will be highlighted. | | `smartTOC` | _Not set_ | Activate smart Table of Contents, items in view will be highlighted. |
| `smartTOCHideUnfocusedChildren` | _Not set_ | When smart Table of Contents is turned on, this will hide deeper levels of the table when they are not in focus. | | `smartTOCHideUnfocusedChildren` | _Not set_ | When smart Table of Contents is turned on, this will hide deeper levels of the table when they are not in focus. |
@@ -199,13 +201,13 @@ Many of the article defaults here can be overridden on a per article basis by sp
### Header ### Header
| Name | Default | Description | | Name | Default | Description |
| --------------- | --------- | ------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `header.layout` | `"basic"` | Defines the header for the entire site, supported values are `basic`, `fixed`, `fixed-fill`, and `fixed-fill-blur`. | | `header.layout` | `"basic"` | Defines the header for the entire site, supported values are `basic`, `fixed`, `fixed-fill`, and `fixed-fill-blur`. |
### Footer ### Footer
| Name | Default | Description | | Name | Default | Description |
| ------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `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). |
@@ -215,7 +217,7 @@ Many of the article defaults here can be overridden on a per article basis by sp
### Homepage ### Homepage
| Name | Default | Description | | Name | Default | Description |
| ------------------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | --- | --- | --- |
| `homepage.layout` | `"profile"` | The layout of the homepage. Valid values are `page`, `profile`, `hero`, `card`, `background`, or `custom`. When set to `custom`, you must provide your own layout by creating a `/layouts/partials/home/custom.html` file. Refer to the [Homepage Layout]({{< ref "homepage-layout" >}}) section for more details. | | `homepage.layout` | `"profile"` | The layout of the homepage. Valid values are `page`, `profile`, `hero`, `card`, `background`, or `custom`. When set to `custom`, you must provide your own layout by creating a `/layouts/partials/home/custom.html` file. Refer to the [Homepage Layout]({{< ref "homepage-layout" >}}) section for more details. |
| `homepage.homepageImage` | _Not set_ | Image to be used in `hero` and `card` layouts. Can be set as local image from asset directory or external image url. Refer to the [Homepage Layout]({{< ref "homepage-layout" >}}) section for more details. | | `homepage.homepageImage` | _Not set_ | Image to be used in `hero` and `card` layouts. Can be set as local image from asset directory or external image url. Refer to the [Homepage Layout]({{< ref "homepage-layout" >}}) section for more details. |
| `homepage.showRecent` | `false` | Whether or not to display the recent articles list on the homepage. | | `homepage.showRecent` | `false` | Whether or not to display the recent articles list on the homepage. |
@@ -230,7 +232,7 @@ Many of the article defaults here can be overridden on a per article basis by sp
### Article ### Article
| Name | Default | Description | | Name | Default | Description |
| ------------------------------------- | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `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. |
@@ -266,7 +268,7 @@ Many of the article defaults here can be overridden on a per article basis by sp
### List ### List
| Name | Default | Description | | Name | Default | Description |
| ---------------------------------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `list.showHero` | `false` | Whether the thumbnail image will be shown as a hero image within each list page. | | `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`, `thumbAndBackground`. | | `list.heroStyle` | _Not set_ | Style to display the hero image, valid options are: `basic`, `big`, `background`, `thumbAndBackground`. |
| `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. |
@@ -287,13 +289,13 @@ Many of the article defaults here can be overridden on a per article basis by sp
### Sitemap ### Sitemap
| Name | Default | Description | | Name | Default | Description |
| ----------------------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `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/methods/page/kind/) 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/methods/page/kind/) for acceptable values. |
### Taxonomy ### Taxonomy
| Name | Default | Description | | Name | Default | Description |
| ------------------------------ | --------- | ---------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `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. |
| `taxonomy.showHero` | `false` | Whether the thumbnail image will be shown as a hero image within each taxonomy page. | | `taxonomy.showHero` | `false` | Whether the thumbnail image will be shown as a hero image within each taxonomy page. |
| `taxonomy.heroStyle` | _Not set_ | Style to display the hero image, valid options are: `basic`, `big`, `background`, `thumbAndBackground`. | | `taxonomy.heroStyle` | _Not set_ | Style to display the hero image, valid options are: `basic`, `big`, `background`, `thumbAndBackground`. |
@@ -306,7 +308,7 @@ Many of the article defaults here can be overridden on a per article basis by sp
### Term ### Term
| Name | Default | Description | | Name | Default | Description |
| -------------------------- | --------- | ---------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `term.showHero` | `false` | Whether the thumbnail image will be shown as a hero image within each term page. | | `term.showHero` | `false` | Whether the thumbnail image will be shown as a hero image within each term page. |
| `term.heroStyle` | _Not set_ | Style to display the hero image, valid options are: `basic`, `big`, `background`, `thumbAndBackground`. | | `term.heroStyle` | _Not set_ | Style to display the hero image, valid options are: `basic`, `big`, `background`, `thumbAndBackground`. |
| `term.showBreadcrumbs` | `false` | Whether or not breadcrumbs are displayed in the term header. | | `term.showBreadcrumbs` | `false` | Whether or not breadcrumbs are displayed in the term header. |
@@ -320,7 +322,7 @@ Many of the article defaults here can be overridden on a per article basis by sp
### Firebase ### Firebase
| Name | Default | Description | | Name | Default | Description |
| ---------------------------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `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. |
@@ -332,14 +334,14 @@ Many of the article defaults here can be overridden on a per article basis by sp
### Fathom Analytics ### Fathom Analytics
| Name | Default | Description | | Name | Default | Description |
| ------------------------ | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `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. |
### Umami Analytics ### Umami Analytics
| Name | Default | Description | | Name | Default | Description |
| --------------------------------- | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `umamiAnalytics.websiteid` | _Not set_ | The site code generated by Umami Analytics for the website. Refer to the [Analytics docs]({{< ref "partials#analytics" >}}) for more details. | | `umamiAnalytics.websiteid` | _Not set_ | The site code generated by Umami Analytics for the website. Refer to the [Analytics docs]({{< ref "partials#analytics" >}}) for more details. |
| `umamiAnalytics.domain` | _Not set_ | If using a custom domain with Umami Analytics, provide it here to serve `script.js` from the custom domain. | | `umamiAnalytics.domain` | _Not set_ | If using a custom domain with Umami Analytics, provide it here to serve `script.js` from the custom domain. |
| `umamiAnalytics.dataDomains` | _Not set_ | If you want the tracker to only run on specific domains, provide it for your tracker script. This is a comma delimited list of domain names. Such as "yoursite.com,yoursite2.com". | | `umamiAnalytics.dataDomains` | _Not set_ | If you want the tracker to only run on specific domains, provide it for your tracker script. This is a comma delimited list of domain names. Such as "yoursite.com,yoursite2.com". |
@@ -349,24 +351,24 @@ Many of the article defaults here can be overridden on a per article basis by sp
### Seline Analytics ### Seline Analytics
| Name | Default | Description | | Name | Default | Description |
| ---------------------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------ | | --- | --- | --- |
| `selineAnalytics.token` | _Not set_ | The token generated by Seline Analytics for the website. Refer to the [Analytics docs]({{< ref "partials#analytics" >}}) for more details. | | `selineAnalytics.token` | _Not set_ | The token generated by Seline Analytics for the website. Refer to the [Analytics docs]({{< ref "partials#analytics" >}}) for more details. |
| `selineAnalytics.enableTrackEvent` | true | When set to `true` track event will add automatically. If you do not want to add track event, set it to `false`. | | `selineAnalytics.enableTrackEvent` | true | When set to `true` track event will add automatically. If you do not want to add track event, set it to `false`. |
### BuyMeACoffee ### BuyMeACoffee
| Name | Default | Description | | Name | Default | Description |
| ----------------------------------- | --------- | --------------------------------------------------------------------------- | | --- | --- | --- |
| `buymeacoffee.identifier` | _Not set_ | The identifier to the target buymeacoffee account. | | `buymeacoffee.identifier` | _Not set_ | The identifier to the target buymeacoffee account. |
| `buymeacoffee.globalWidget` | _Not set_ | Activate the global buymeacoffee widget. | | `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.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.globalWidgetColor` | `#FFDD00` | Widget color in hex format. |
| `buymeacoffee.globalWidgetPosition` | _Not set_ | Position of the widget, i.e. "Left" or "Right" | | `buymeacoffee.globalWidgetPosition` | _Not set_ | Position of the widget, i.e. "left" or "right" |
### Verifications ### Verifications
| Name | Default | Description | | Name | Default | Description |
| ------------------------ | --------- | --------------------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `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. |
@@ -377,7 +379,7 @@ Many of the article defaults here can be overridden on a per article basis by sp
### RSSNext ### RSSNext
| Name | Default | Description | | Name | Default | Description |
| ------------------------ | --------- |--------------------------------------------------------------------------------------------------------------------------------------| | --- | --- | --- |
| `rssnext.feedId` | _Not set_ | The rss `feedId` string provided by [RSSNext/Follow](https://follow.is/) to be included in the `rss.xml`, which can helps to claim rss feed as your own. | | `rssnext.feedId` | _Not set_ | The rss `feedId` string provided by [RSSNext/Follow](https://follow.is/) to be included in the `rss.xml`, which can helps to claim rss feed as your own. |
| `rssnext.userId` | _Not set_ | The rss `userId` string provided by [RSSNext/Follow](https://follow.is/) to be included in the `rss.xml`, which can helps to claim rss feed as your own. | | `rssnext.userId` | _Not set_ | The rss `userId` string provided by [RSSNext/Follow](https://follow.is/) to be included in the `rss.xml`, which can helps to claim rss feed as your own. |
@@ -40,7 +40,7 @@ Blowfish 主题支持了 Hugo 框架中定义的所有标准配置变量。但
<!-- prettier-ignore-start --> <!-- prettier-ignore-start -->
| 名称 | 默认值 | 描述 | | 名称 | 默认值 | 描述 |
| ------------------------ | ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `theme` | `"blowfish"` | 当你使用 Hugo 模块安装时,应该移除这个配置项。但对 Git 子模块或本地文件复制的安装方式,必须将其设置为 blowfish 才能正常工作。 | | `theme` | `"blowfish"` | 当你使用 Hugo 模块安装时,应该移除这个配置项。但对 Git 子模块或本地文件复制的安装方式,必须将其设置为 blowfish 才能正常工作。 |
| `baseURL` | 无 | 网站 URL 根地址。 | | `baseURL` | 无 | 网站 URL 根地址。 |
| `defaultContentLanguage` | `"en"` | 这个值决定了主题中组件和内容所使用的默认语言。 参考 [语言和 i18n](#语言和i18n) 部分来了解 blowfish 支持的所有语言代码。 | | `defaultContentLanguage` | `"en"` | 这个值决定了主题中组件和内容所使用的默认语言。 参考 [语言和 i18n](#语言和i18n) 部分来了解 blowfish 支持的所有语言代码。 |
@@ -112,7 +112,7 @@ Blowfish 主题目前默认支持了以下语言:
<!-- prettier-ignore-start --> <!-- prettier-ignore-start -->
| 名称 | 默认值 | 描述 | | 名称 | 默认值 | 描述 |
| -------------- | ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `languageCode` | `"en"` | Hugo 中的默认语言代码。他可以是一个高层级语言(例如 `en`),也可以是一个变体子语言(例如 `en-au`),但一定需要和语言配置文件中的语言代码相匹配。为了符合 HTML 的规范并设置设置大小写敏感的 `isoCode`,Hugo希望这个值最好是小写。 | | `languageCode` | `"en"` | Hugo 中的默认语言代码。他可以是一个高层级语言(例如 `en`),也可以是一个变体子语言(例如 `en-au`),但一定需要和语言配置文件中的语言代码相匹配。为了符合 HTML 的规范并设置设置大小写敏感的 `isoCode`,Hugo希望这个值最好是小写。 |
| `languageName` | `"English"` | 语言名称。 | | `languageName` | `"English"` | 语言名称。 |
| `weight` | `1` | 权重决定了在构建多语言时的语言顺序。 | | `weight` | `1` | 权重决定了在构建多语言时的语言顺序。 |
@@ -123,7 +123,7 @@ Blowfish 主题目前默认支持了以下语言:
<!-- prettier-ignore-start --> <!-- prettier-ignore-start -->
| 名称 | 默认值 | 描述 | | 名称 | 默认值 | 描述 |
| ---------------------- | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | --- | --- | --- |
| `params.displayName` | `"EN"` | 语言在网站中的展示名。 | | `params.displayName` | `"EN"` | 语言在网站中的展示名。 |
| `params.isoCode` | `"en"` | 用于 HTML 元数据的 ISO 语言代码。他可以是一个高层级语言(例如 `en`),也可以是一个变体子语言(例如 `en-au`)。 | | `params.isoCode` | `"en"` | 用于 HTML 元数据的 ISO 语言代码。他可以是一个高层级语言(例如 `en`),也可以是一个变体子语言(例如 `en-au`)。 |
| `params.rtl` | `false` | 用于指定是否是 RTL 语言。设置为 `true` 则网站会从右向左重拍内容。Blowfish 完全支持同时使用 RTL 和 LTR 语言,并将动态调整。 | | `params.rtl` | `false` | 用于指定是否是 RTL 语言。设置为 `true` 则网站会从右向左重拍内容。Blowfish 完全支持同时使用 RTL 和 LTR 语言,并将动态调整。 |
@@ -138,7 +138,7 @@ Blowfish 主题目前默认支持了以下语言:
#### 作者 #### 作者
| 名称 | 默认值 | 描述 | | 名称 | 默认值 | 描述 |
| ----------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | --- | --- | --- |
| `params.author.name` | 无 | 作者名。此参数将展示在文章页脚。并且如果主页使用了个人资料布局,也会展示此值。 | | `params.author.name` | 无 | 作者名。此参数将展示在文章页脚。并且如果主页使用了个人资料布局,也会展示此值。 |
| `params.author.email` | 无 | 作者邮箱。如果启用了“通过邮件回复”功能,则会启用此值。 | | `params.author.email` | 无 | 作者邮箱。如果启用了“通过邮件回复”功能,则会启用此值。 |
| `params.author.image` | 无 | 作者头像的文件路径。图像应该是 1:1 的宽高比。可以放在网站的 `assets/` 文件夹中,也可以是外部 URL。 | | `params.author.image` | 无 | 作者头像的文件路径。图像应该是 1:1 的宽高比。可以放在网站的 `assets/` 文件夹中,也可以是外部 URL。 |
@@ -167,7 +167,7 @@ Blowfish 提供了大量控制主题功能的配置参数,下面的表格中
### 全局 ### 全局
| 名称 | 默认值 | 描述 | | 名称 | 默认值 | 描述 |
| ------------------------------- | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `colorScheme` | `"blowfish"` | 主题使用的颜色方案。合法的值有: `blowfish` (默认)、`avocado`、`fire`、`ocean`、`forest`、`princess`、`neon`、`bloody`、`terminal`、`marvel`、`noir`、`autumn`、`congo` 和 `slate`。 具体参考[颜色方案]({{< ref "getting-started#colour-schemes" >}})以获取更多信息。 | | `colorScheme` | `"blowfish"` | 主题使用的颜色方案。合法的值有: `blowfish` (默认)、`avocado`、`fire`、`ocean`、`forest`、`princess`、`neon`、`bloody`、`terminal`、`marvel`、`noir`、`autumn`、`congo` 和 `slate`。 具体参考[颜色方案]({{< ref "getting-started#colour-schemes" >}})以获取更多信息。 |
| `defaultAppearance` | `"light"` | 默认的主题外观,可以是 `light` 或者 `dark`。 | | `defaultAppearance` | `"light"` | 默认的主题外观,可以是 `light` 或者 `dark`。 |
| `autoSwitchAppearance` | `true` | 主题外观是否根据访问者操作系统的偏好自动切换。设置为 `false` 会强制网站始终使用 `defaultAppearance`。 | | `autoSwitchAppearance` | `true` | 主题外观是否根据访问者操作系统的偏好自动切换。设置为 `false` 会强制网站始终使用 `defaultAppearance`。 |
@@ -189,6 +189,8 @@ Blowfish 提供了大量控制主题功能的配置参数,下面的表格中
| `defaultBackgroundImage` | 无 | 设置默认背景图,用于 `background` 和 `hero` 布局下的主页。 | | `defaultBackgroundImage` | 无 | 设置默认背景图,用于 `background` 和 `hero` 布局下的主页。 |
| `defaultFeaturedImage` | 无 | 设置默认背景图片,用于所有文章的`featured`图片,可以通过文章目录中的 `featured` 图片替换。 | | `defaultFeaturedImage` | 无 | 设置默认背景图片,用于所有文章的`featured`图片,可以通过文章目录中的 `featured` 图片替换。 |
| `defaultSocialImage` | 无 | 社交媒体分享(Open Graph 和 Twitter)使用的默认图片,可以通过文章目录中的 `featured` 图片替换。 | | `defaultSocialImage` | 无 | 社交媒体分享(Open Graph 和 Twitter)使用的默认图片,可以通过文章目录中的 `featured` 图片替换。 |
| `hotlinkFeatureImage` | `false` | 在文章特色图片和文章卡片中外链图片。这些图片不会被 Hugo 处理。 |
| `imagePosition` | 无 | 使用 `object-position` 属性设置默认图像的位置。有效值如 [MDN 文档](https://developer.mozilla.org/en-US/docs/Web/CSS/object-position#try_it) 所示。 |
| `highlightCurrentMenuArea` | 无 | 当菜单被选择时,标记主菜单中的菜单项。 | | `highlightCurrentMenuArea` | 无 | 当菜单被选择时,标记主菜单中的菜单项。 |
| `smartTOC` | 无 | 开启智能目录,视图中的项目将会被高亮显示。 | | `smartTOC` | 无 | 开启智能目录,视图中的项目将会被高亮显示。 |
| `smartTOCHideUnfocusedChildren` | 无 | 当开启智能目录,如果目录级别不再被聚焦时,将会隐藏更深层次的目录。 | | `smartTOCHideUnfocusedChildren` | 无 | 当开启智能目录,如果目录级别不再被聚焦时,将会隐藏更深层次的目录。 |
@@ -197,13 +199,13 @@ Blowfish 提供了大量控制主题功能的配置参数,下面的表格中
### 页头 ### 页头
| 名称 | 默认值 | 描述 | | 名称 | 默认值 | 描述 |
| --------------- | --------- | --------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `header.layout` | `"basic"` | 定义整个站点的页头的布局,支持的参数有 `basic`、`fixed`、`fixed-fill`、and `fixed-fill-blur`. | | `header.layout` | `"basic"` | 定义整个站点的页头的布局,支持的参数有 `basic`、`fixed`、`fixed-fill`、and `fixed-fill-blur`. |
### 页脚 ### 页脚
| 名称 | 默认值 | 描述 | | 名称 | 默认值 | 描述 |
| ------------------------------- | ------- | --------------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `footer.showMenu` | `true` | 显示/隐藏页面底部菜单,该菜单可以在 `config/_default/menus.en.toml` 文件中的 `[[footer]]` 部分进行配置。 | | `footer.showMenu` | `true` | 显示/隐藏页面底部菜单,该菜单可以在 `config/_default/menus.en.toml` 文件中的 `[[footer]]` 部分进行配置。 |
| `footer.showCopyright` | `true` | 是否在底部显示 copyright 版权信息。请注意,如果你想定制,可以在[语言配置](#语言和i18n)中使用 `copyright` 参数。 | | `footer.showCopyright` | `true` | 是否在底部显示 copyright 版权信息。请注意,如果你想定制,可以在[语言配置](#语言和i18n)中使用 `copyright` 参数。 |
| `footer.showThemeAttribution` | `true` | 是否在网站底部中显示"powered by" 的主题归属信息。如果禁用此参数,请考虑在你网站的其他位置设置主题归属信息,例如在关于页面。 | | `footer.showThemeAttribution` | `true` | 是否在网站底部中显示"powered by" 的主题归属信息。如果禁用此参数,请考虑在你网站的其他位置设置主题归属信息,例如在关于页面。 |
@@ -213,7 +215,7 @@ Blowfish 提供了大量控制主题功能的配置参数,下面的表格中
### 主页 ### 主页
| 名称 | 默认值 | 描述 | | 名称 | 默认值 | 描述 |
| ------------------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `homepage.layout` | `"profile"` | 首页布局参数。合法的参数值有: `page`、`profile`、`hero`、`card`、`background` 或 `custom`。当你设置为 `custom` 时,你必须创建 `/layouts/partials/home/custom.html` 文件以定制自己的布局。参考[主页布局]({{< ref "homepage-layout" >}})来获取更多信息。 | | `homepage.layout` | `"profile"` | 首页布局参数。合法的参数值有: `page`、`profile`、`hero`、`card`、`background` 或 `custom`。当你设置为 `custom` 时,你必须创建 `/layouts/partials/home/custom.html` 文件以定制自己的布局。参考[主页布局]({{< ref "homepage-layout" >}})来获取更多信息。 |
| `homepage.homepageImage` | 无 | 在 `hero` 和 `card` 布局中使用的图像。图片可以来自于本地的资源目录,也可以是外部图像 URL。参考 [主页布局]({{< ref "homepage-layout" >}}) 来获取更多信息。 | | `homepage.homepageImage` | 无 | 在 `hero` 和 `card` 布局中使用的图像。图片可以来自于本地的资源目录,也可以是外部图像 URL。参考 [主页布局]({{< ref "homepage-layout" >}}) 来获取更多信息。 |
| `homepage.showRecent` | `false` | 是否在主页展示最新文章列表。 | | `homepage.showRecent` | `false` | 是否在主页展示最新文章列表。 |
@@ -228,7 +230,7 @@ Blowfish 提供了大量控制主题功能的配置参数,下面的表格中
### 文章页 ### 文章页
| 名称 | 默认值 | 描述 | | 名称 | 默认值 | 描述 |
| ------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | --- | --- | --- |
| `article.showDate` | `true` | 是否显示日期。 | | `article.showDate` | `true` | 是否显示日期。 |
| `article.showViews` | `false` | 是否显示文章阅读量。这需要集成 firebase ,具体可以看下面。 | | `article.showViews` | `false` | 是否显示文章阅读量。这需要集成 firebase ,具体可以看下面。 |
| `article.showLikes` | `false` | 是否显示文章点赞量。这需要集成 firebase ,具体可以看下面。 | | `article.showLikes` | `false` | 是否显示文章点赞量。这需要集成 firebase ,具体可以看下面。 |
@@ -263,7 +265,7 @@ Blowfish 提供了大量控制主题功能的配置参数,下面的表格中
### 列表页 ### 列表页
| 名称 | 默认值 | 描述 | | 名称 | 默认值 | 描述 |
| ---------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `list.showHero` | `false` | 缩略图是否会在每个页面中作为 hero 图像显示。 | | `list.showHero` | `false` | 缩略图是否会在每个页面中作为 hero 图像显示。 |
| `list.heroStyle` | 无 | hero 图像的展示样式,可选的参数值有:`basic`、`big`、`background`、`thumbAndBackground`。 | | `list.heroStyle` | 无 | hero 图像的展示样式,可选的参数值有:`basic`、`big`、`background`、`thumbAndBackground`。 |
| `list.showBreadcrumbs` | `false` | 是否在标题栏显示面包屑导航。 | | `list.showBreadcrumbs` | `false` | 是否在标题栏显示面包屑导航。 |
@@ -284,13 +286,13 @@ Blowfish 提供了大量控制主题功能的配置参数,下面的表格中
### 网站地图 ### 网站地图
| 名称 | 默认值 | 描述 | | 名称 | 默认值 | 描述 |
| ----------------------- | ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `sitemap.excludedKinds` | `["taxonomy", "term"]` | 从生成的 `/sitemap.xml` 文件中排除的内容。 具体的配置请参考[Hugo 文档](https://gohugo.io/methods/page/kind/)。 | | `sitemap.excludedKinds` | `["taxonomy", "term"]` | 从生成的 `/sitemap.xml` 文件中排除的内容。 具体的配置请参考[Hugo 文档](https://gohugo.io/methods/page/kind/)。 |
### 分类法 ### 分类法
| 名称 | 默认值 | 描述 | | 名称 | 默认值 | 描述 |
| ------------------------------ | ------- | ----------------------------------------------------------------------------------------- | | --- | --- | --- |
| `taxonomy.showTermCount` | `true` | 是否在分类列表总显示对应的数量。 | | `taxonomy.showTermCount` | `true` | 是否在分类列表总显示对应的数量。 |
| `taxonomy.showHero` | `false` | 缩略图是否会在每个页面中作为 hero 图像显示。 | | `taxonomy.showHero` | `false` | 缩略图是否会在每个页面中作为 hero 图像显示。 |
| `taxonomy.heroStyle` | 无 | hero 图像的展示样式,可选的参数值有:`basic`、`big`、`background`、`thumbAndBackground`。 | | `taxonomy.heroStyle` | 无 | hero 图像的展示样式,可选的参数值有:`basic`、`big`、`background`、`thumbAndBackground`。 |
@@ -303,7 +305,7 @@ Blowfish 提供了大量控制主题功能的配置参数,下面的表格中
### 术语 ### 术语
| 名称 | 默认值 | 描述 | | 名称 | 默认值 | 描述 |
| -------------------------- | ------- | ------------------------------------------------------------------------------------------ | | --- | --- | --- |
| `term.showHero` | `false` | 缩略图是否会在每个页面中作为 hero 图像显示。 | | `term.showHero` | `false` | 缩略图是否会在每个页面中作为 hero 图像显示。 |
| `term.heroStyle` | 无 | hero 图像的展示样式,可选的参数值有: `basic`、`big`、`background`、`thumbAndBackground`。 | | `term.heroStyle` | 无 | hero 图像的展示样式,可选的参数值有: `basic`、`big`、`background`、`thumbAndBackground`。 |
| `term.showBreadcrumbs` | `false` | 是否在标题栏显示面包屑导航。 | | `term.showBreadcrumbs` | `false` | 是否在标题栏显示面包屑导航。 |
@@ -317,7 +319,7 @@ Blowfish 提供了大量控制主题功能的配置参数,下面的表格中
### Firebase(Firebase 平台) ### Firebase(Firebase 平台)
| 名称 | 默认值 | 描述 | | 名称 | 默认值 | 描述 |
| ---------------------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `firebase.apiKey` | 无 | Firebase apiKey, 与 Firebase 集成的必填参数。了解如何将 Firebase 集成进 Blowfish 请参考 [这个页面]({{< ref "firebase-views" >}})。 | | `firebase.apiKey` | 无 | Firebase apiKey, 与 Firebase 集成的必填参数。了解如何将 Firebase 集成进 Blowfish 请参考 [这个页面]({{< ref "firebase-views" >}})。 |
| `firebase.authDomain` | 无 | Firebase authDomain,与 Firebase 集成的必填参数。了解如何将 Firebase 集成进 Blowfish 请参考 [这个页面]({{< ref "firebase-views" >}})。 | | `firebase.authDomain` | 无 | Firebase authDomain,与 Firebase 集成的必填参数。了解如何将 Firebase 集成进 Blowfish 请参考 [这个页面]({{< ref "firebase-views" >}})。 |
| `firebase.projectId` | 无 | Firebase projectId,与 Firebase 集成的必填参数。了解如何将 Firebase 集成进 Blowfish 请参考 [这个页面]({{< ref "firebase-views" >}})。 | | `firebase.projectId` | 无 | Firebase projectId,与 Firebase 集成的必填参数。了解如何将 Firebase 集成进 Blowfish 请参考 [这个页面]({{< ref "firebase-views" >}})。 |
@@ -329,14 +331,14 @@ Blowfish 提供了大量控制主题功能的配置参数,下面的表格中
### Fathom Analytics(一种网站分析工具) ### Fathom Analytics(一种网站分析工具)
| 名称 | 默认值 | 描述 | | 名称 | 默认值 | 描述 |
| ------------------------ | ------ | ------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `fathomAnalytics.site` | 无 | 支持 Fathom 站点分析平台。更多详细内容请参考 [分析文档]({{< ref "partials#analytics" >}})。 | | `fathomAnalytics.site` | 无 | 支持 Fathom 站点分析平台。更多详细内容请参考 [分析文档]({{< ref "partials#analytics" >}})。 |
| `fathomAnalytics.domain` | 无 | 如果使用自定义域名的 Fathom Analytics,请在此提供,以便从自定义域名获取 `script.js`。 | | `fathomAnalytics.domain` | 无 | 如果使用自定义域名的 Fathom Analytics,请在此提供,以便从自定义域名获取 `script.js`。 |
### Umami Analytics(一种网站分析工具) ### Umami Analytics(一种网站分析工具)
| Name | Default | Description | | Name | Default | Description |
|------------------------------|-----------|-------------------------------------------------------------------------------------| | --- | --- | --- |
| `umamiAnalytics.websiteid` | 无 | 支持 Umami 站点分析平台。更多详细内容请参考 [分析文档]({{< ref "partials#analytics" >}})。 | | `umamiAnalytics.websiteid` | 无 | 支持 Umami 站点分析平台。更多详细内容请参考 [分析文档]({{< ref "partials#analytics" >}})。 |
| `umamiAnalytics.domain` | 无 | 如果使用自定义域名的 Umami Analytics,请在此提供,以便从自定义域名获取 `script.js`。 | | `umamiAnalytics.domain` | 无 | 如果使用自定义域名的 Umami Analytics,请在此提供,以便从自定义域名获取 `script.js`。 |
| `umamiAnalytics.dataDomains` | 无 | 如果你只想在特别的数个域名中使用 tracker 功能,那么你需要设置它。这个参数的值是逗号分隔的域名列表,如:yoursite.com,yoursite2.com。 | | `umamiAnalytics.dataDomains` | 无 | 如果你只想在特别的数个域名中使用 tracker 功能,那么你需要设置它。这个参数的值是逗号分隔的域名列表,如:yoursite.com,yoursite2.com。 |
@@ -346,19 +348,19 @@ Blowfish 提供了大量控制主题功能的配置参数,下面的表格中
### Seline Analytics ### Seline Analytics
| Name | Default | Description | | Name | Default | Description |
|-----------------------------------|---------|--------------------------------------------------------------------------| | --- | --- | --- |
| `selineAnalytics.token` | 无 | Seline 站点分析平台的 token。更多详细内容请参考 [分析文档]({{< ref "partials#analytics" >}})。 | | `selineAnalytics.token` | 无 | Seline 站点分析平台的 token。更多详细内容请参考 [分析文档]({{< ref "partials#analytics" >}})。 |
| `selineAnalytics.enableTrackEvent` | true | 默认会自动添加 Umami Track Event。如果你不想添加 Event,那学需要设置为 `false`。 | | `selineAnalytics.enableTrackEvent` | true | 默认会自动添加 Umami Track Event。如果你不想添加 Event,那学需要设置为 `false`。 |
### BuyMeACoffee(赞助平台) ### BuyMeACoffee(赞助平台)
| 名称 | 默认值 | 描述 | | 名称 | 默认值 | 描述 |
| ----------------------------------- | ------ | ---------------------------------- | | ----------------------------------- | --------- | ---------------------------------- |
| `buymeacoffee.identifier` | 无 | buymeacoffee 账号的用户名。 | | `buymeacoffee.identifier` | 无 | buymeacoffee 账号的用户名。 |
| `buymeacoffee.globalWidget` | 无 | 激活位于全局的 buymeacoffee 组件。 | | `buymeacoffee.globalWidget` | 无 | 激活位于全局的 buymeacoffee 组件。 |
| `buymeacoffee.globalWidgetMessage` | 无 | 新用户首次访问网站时显示的消息。 | | `buymeacoffee.globalWidgetMessage` | 无 | 新用户首次访问网站时显示的消息。 |
| `buymeacoffee.globalWidgetColor` | 无 | 组件颜色,使用 HEX 格式。 | | `buymeacoffee.globalWidgetColor` | `#FFDD00` | 组件颜色,使用 HEX 格式。 |
| `buymeacoffee.globalWidgetPosition` | 无 | 组件位置,例如 "Left" 或 "Right"。 | | `buymeacoffee.globalWidgetPosition` | 无 | 组件位置,例如 "left" 或 "right"。 |
### 验证 ### 验证
@@ -374,7 +376,7 @@ Blowfish 提供了大量控制主题功能的配置参数,下面的表格中
### RSSNext ### RSSNext
| 名称 | 默认值 | 描述 | | 名称 | 默认值 | 描述 |
| ------------------------ | --------- |---------------------------------------------------------------------------------------------| | --- | --- | --- |
| `rssnext.feedId` | _无_ | [RSSNext/Follow](https://follow.is) 提供的 `feeId`,这将被自动添加在 `rss.xml` 中以便完成订阅源所有权验证,证明该源属于你自己。 | | `rssnext.feedId` | _无_ | [RSSNext/Follow](https://follow.is) 提供的 `feeId`,这将被自动添加在 `rss.xml` 中以便完成订阅源所有权验证,证明该源属于你自己。 |
| `rssnext.userId` | _无_ | [RSSNext/Follow](https://follow.is) 提供的 `userId`,这将被自动添加在 `rss.xml` 中以便完成订阅源所有权验证,证明该源属于你自己 | | `rssnext.userId` | _无_ | [RSSNext/Follow](https://follow.is) 提供的 `userId`,这将被自动添加在 `rss.xml` 中以便完成订阅源所有权验证,证明该源属于你自己 |
@@ -55,7 +55,6 @@ _这个例子设置了一个自定义标题,并在页面正文中添加了一
列表页将所有页面聚合到一个目录下,并为访问者提供了一种浏览页面的方式。博客或者作品集是一个典型案例,因为这两种类型的网站会将帖子或项目整合到一个列表页中。 列表页将所有页面聚合到一个目录下,并为访问者提供了一种浏览页面的方式。博客或者作品集是一个典型案例,因为这两种类型的网站会将帖子或项目整合到一个列表页中。
创建一个列表页就如同创建子目录一样简单。例如,要创建一个 "Projects" 列表页,你可以创建`content/projects/`。然后为你的项目创建一个 Markdown 文件。 创建一个列表页就如同创建子目录一样简单。例如,要创建一个 "Projects" 列表页,你可以创建`content/projects/`。然后为你的项目创建一个 Markdown 文件。
Creating a list page is as simple as making a sub-directory in the content folder. For example, to create a "Projects" section, you would create `content/projects/`. Then create a Markdown file for each of your projects.
列表页面默认会自动生成,如果你想在列表添加一些页自定义内容,还需要在此目录创建一个 `_index.md` 文件。 列表页面默认会自动生成,如果你想在列表添加一些页自定义内容,还需要在此目录创建一个 `_index.md` 文件。
@@ -15,7 +15,7 @@ I valori predefiniti dei parametri del front metter vengono ereditati dalla [con
<!-- prettier-ignore-start --> <!-- prettier-ignore-start -->
| Name | Default | Description | | Name | Default | Description |
| ----------------------------- | --------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | --- | --- | --- |
| `title` | _Not set_ | Il nome dell'articolo. | | `title` | _Not set_ | Il nome dell'articolo. |
| `description` | _Not set_ | La descrizione testuale dell'articolo. Viene utilizzato nei metadati HTML. | | `description` | _Not set_ | La descrizione testuale dell'articolo. Viene utilizzato nei metadati HTML. |
| `externalUrl` | _Not set_ | Se questo articolo è pubblicato su un sito Web di terze parti, l'URL di questo articolo. Fornire un URL impedirà la generazione di una pagina di contenuto e qualsiasi riferimento a questo articolo si collegherà direttamente al sito Web di terze parti. | | `externalUrl` | _Not set_ | Se questo articolo è pubblicato su un sito Web di terze parti, l'URL di questo articolo. Fornire un URL impedirà la generazione di una pagina di contenuto e qualsiasi riferimento a questo articolo si collegherà direttamente al sito Web di terze parti. |
@@ -28,14 +28,15 @@ I valori predefiniti dei parametri del front metter vengono ereditati dalla [con
| `showAuthor` | `article.showAuthor` | Se la casella dell'autore predefinito viene visualizzata o meno nel piè di pagina dell'articolo. | | `showAuthor` | `article.showAuthor` | Se la casella dell'autore predefinito viene visualizzata o meno nel piè di pagina dell'articolo. |
| `authors` | _Not set_ | Matrice di valori per gli autori, se impostata sovrascrive le impostazioni di "showAuthor" per la pagina o il sito. Utilizzato nella funzionalità per più autori, controlla [questa pagina]({{< ref "multi-author" >}}) per maggiori dettagli su come configurare tale funzionalità. | | `authors` | _Not set_ | Matrice di valori per gli autori, se impostata sovrascrive le impostazioni di "showAuthor" per la pagina o il sito. Utilizzato nella funzionalità per più autori, controlla [questa pagina]({{< ref "multi-author" >}}) per maggiori dettagli su come configurare tale funzionalità. |
| `showAuthorsBadges` | `article.showAuthorsBadges` | Se le tassonomie degli "autori" vengono visualizzate nell'articolo o nell'intestazione dell'elenco. Ciò richiede l'impostazione di "autori multipli" e la tassonomia degli "autori". Controlla [questa pagina]({{< ref "multi-author" >}}) per maggiori dettagli su come configurare questa funzione. | | `showAuthorsBadges` | `article.showAuthorsBadges` | Se le tassonomie degli "autori" vengono visualizzate nell'articolo o nell'intestazione dell'elenco. Ciò richiede l'impostazione di "autori multipli" e la tassonomia degli "autori". Controlla [questa pagina]({{< ref "multi-author" >}}) per maggiori dettagli su come configurare questa funzione. |
| `featureimage` | _Not set_ | URL esterno per l'immagine in primo piano | `featureimage` | _Not set_ | Link per l'immagine in primo piano |
| `featureimagecaption` | _Not set_ | Didascalia per l'immagine in primo piano. Visualizzato solo in heroStyle "big". | `featureimagecaption` | _Not set_ | Didascalia per l'immagine in primo piano. Visualizzato solo in heroStyle "big". |
| `showHero` | `article.showHero` | Se l'immagine in miniatura verrà mostrata come immagine hero all'interno della pagina dell'articolo. | | `showHero` | `article.showHero` | Se l'immagine in miniatura verrà mostrata come immagine hero all'interno della pagina dell'articolo. |
| `heroStyle` | `article.heroStyle` | Stile per visualizzare l'immagine hero, le opzioni valide sono: `basic`, `big`, ` background`, `thumbAndBackground`. | | `heroStyle` | `article.heroStyle` | Stile per visualizzare l'immagine hero, le opzioni valide sono: `basic`, `big`, `background`, `thumbAndBackground`. |
| `imagePosition` | _Not set_ | Imposta la posizione dell'immagine in evidenza utilizzando l'attributo `object-position`. I valori validi sono specificati nella [documentazione MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/object-position#try_it). |
| `showBreadcrumbs` | `article.showBreadcrumbs` or `list.showBreadcrumbs` | Se i breadcrumb vengono visualizzati nell'articolo o nell'intestazione dell'elenco. | | `showBreadcrumbs` | `article.showBreadcrumbs` or `list.showBreadcrumbs` | Se i breadcrumb vengono visualizzati nell'articolo o nell'intestazione dell'elenco. |
| `showDate` | `article.showDate` | Se viene visualizzata o meno la data dell'articolo. La data viene impostata utilizzando il parametro "data". | | `showDate` | `article.showDate` | Se viene visualizzata o meno la data dell'articolo. La data viene impostata utilizzando il parametro "data". |
| `showDateUpdated` | `article.showDateUpdated` | Se viene visualizzata o meno la data di aggiornamento dell'articolo. La data viene impostata utilizzando il parametro "lastmod". | | `showDateUpdated` | `article.showDateUpdated` | Se viene visualizzata o meno la data di aggiornamento dell'articolo. La data viene impostata utilizzando il parametro "lastmod". |
| `showEdit` | `article.showEdit` |Se deve essere visualizzato o meno il collegamento per modificare il contenuto dell'articolo. | | `showEdit` | `article.showEdit` | Se deve essere visualizzato o meno il collegamento per modificare il contenuto dell'articolo. |
| `showHeadingAnchors` | `article.showHeadingAnchors` | Se i collegamenti di ancoraggio dei titoli vengono visualizzati o meno insieme ai titoli all'interno di questo articolo. | | `showHeadingAnchors` | `article.showHeadingAnchors` | Se i collegamenti di ancoraggio dei titoli vengono visualizzati o meno insieme ai titoli all'interno di questo articolo. |
| `showPagination` | `article.showPagination` | Se i collegamenti all'articolo successivo/precedente vengono visualizzati o meno nel piè di pagina dell'articolo. | | `showPagination` | `article.showPagination` | Se i collegamenti all'articolo successivo/precedente vengono visualizzati o meno nel piè di pagina dell'articolo. |
| `invertPagination` | `article.invertPagination` | Se invertire o meno la direzione dei collegamenti all'articolo successivo/precedente. | | `invertPagination` | `article.invertPagination` | Se invertire o meno la direzione dei collegamenti all'articolo successivo/precedente. |
@@ -15,7 +15,7 @@ series_order: 7
<!-- prettier-ignore-start --> <!-- prettier-ignore-start -->
| 名前 | デフォルト | 説明 | | 名前 | デフォルト | 説明 |
| ----------------------------- | --------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | --- | --- | --- |
| `title` | _未設定_ | 記事の名前。 | | `title` | _未設定_ | 記事の名前。 |
| `description` | _未設定_ | 記事のテキスト説明。HTML メタデータで使用されます。 | | `description` | _未設定_ | 記事のテキスト説明。HTML メタデータで使用されます。 |
| `externalUrl` | _未設定_ | この記事がサードパーティのウェブサイトで公開されている場合、この記事への URL。URL を指定すると、コンテンツページの生成が妨げられ、この記事への参照はすべてサードパーティのウェブサイトに直接リンクされます。 | | `externalUrl` | _未設定_ | この記事がサードパーティのウェブサイトで公開されている場合、この記事への URL。URL を指定すると、コンテンツページの生成が妨げられ、この記事への参照はすべてサードパーティのウェブサイトに直接リンクされます。 |
@@ -29,10 +29,11 @@ series_order: 7
| `showAuthorBottom` | `article.showAuthorBottom` | 著者ボックスは、各ページの上部ではなく下部に表示されます。 | | `showAuthorBottom` | `article.showAuthorBottom` | 著者ボックスは、各ページの上部ではなく下部に表示されます。 |
| `authors` | _未設定_ | 著者の値の配列。設定されている場合、ページまたはサイトの `showAuthor` 設定を上書きします。複数人の著者機能で使用されます。この機能の設定方法の詳細については、[このページ]({{< ref "multi-author" >}})をご覧ください。 | | `authors` | _未設定_ | 著者の値の配列。設定されている場合、ページまたはサイトの `showAuthor` 設定を上書きします。複数人の著者機能で使用されます。この機能の設定方法の詳細については、[このページ]({{< ref "multi-author" >}})をご覧ください。 |
| `showAuthorsBadges` | `article.showAuthorsBadges` | 記事またはリストヘッダーに `authors` タクソノミーを表示するかどうか。これには、`複数人の著者` と `authors` タクソノミーの設定が必要です。この機能の設定方法の詳細については、[このページ]({{< ref "multi-author" >}})をご覧ください。 | | `showAuthorsBadges` | `article.showAuthorsBadges` | 記事またはリストヘッダーに `authors` タクソノミーを表示するかどうか。これには、`複数人の著者` と `authors` タクソノミーの設定が必要です。この機能の設定方法の詳細については、[このページ]({{< ref "multi-author" >}})をご覧ください。 |
| `featureimage` | _未設定_ | フィーチャー画像の外部 URL。 | | `featureimage` | _未設定_ | フィーチャー画像の外部リンク。 |
| `featureimagecaption` | _未設定_ | フィーチャー画像のキャプション。heroStyle `big` でのみ表示されます。 | | `featureimagecaption` | _未設定_ | フィーチャー画像のキャプション。heroStyle `big` でのみ表示されます。 |
| `showHero` | `article.showHero` | 記事ページ内でサムネイル画像をヒーロー画像として表示するかどうか。 | | `showHero` | `article.showHero` | 記事ページ内でサムネイル画像をヒーロー画像として表示するかどうか。 |
| `heroStyle` | `article.heroStyle` | ヒーロー画像の表示スタイル。有効なオプションは、`basic`、`big`、`background`、`thumbAndBackground` です。 | | `heroStyle` | `article.heroStyle` | ヒーロー画像の表示スタイル。有効なオプションは、`basic`、`big`、`background`、`thumbAndBackground` です。 |
| `imagePosition` | _未設定_ | `object-position` 属性を使用してフィーチャー画像の位置を設定します。有効な値は [MDN ドキュメント](https://developer.mozilla.org/en-US/docs/Web/CSS/object-position#try_it) に記載されています。 |
| `showBreadcrumbs` | `article.showBreadcrumbs` <br/>または `list.showBreadcrumbs` | 記事またはリストヘッダーにパンくずリストを表示するかどうか。 | | `showBreadcrumbs` | `article.showBreadcrumbs` <br/>または `list.showBreadcrumbs` | 記事またはリストヘッダーにパンくずリストを表示するかどうか。 |
| `showDate` | `article.showDate` | 記事の日付を表示するかどうか。日付は `date` パラメータを使用して設定されます。 | | `showDate` | `article.showDate` | 記事の日付を表示するかどうか。日付は `date` パラメータを使用して設定されます。 |
| `showDateUpdated` | `article.showDateUpdated` | 記事が更新された日付を表示するかどうか。日付は `lastmod` パラメータを使用して設定されます。 | | `showDateUpdated` | `article.showDateUpdated` | 記事が更新された日付を表示するかどうか。日付は `lastmod` パラメータを使用して設定されます。 |
@@ -15,7 +15,7 @@ Front matter parameter default values are inherited from the theme's [base confi
<!-- prettier-ignore-start --> <!-- prettier-ignore-start -->
| Name | Default | Description | | Name | Default | Description |
| ----------------------------- | --------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | --- | --- | --- |
| `title` | _Not set_ | The name of the article. | | `title` | _Not set_ | The name of the article. |
| `description` | _Not set_ | The text description for the article. It is used in the HTML metadata. | | `description` | _Not set_ | The text description for the article. It is used in the HTML metadata. |
| `externalUrl` | _Not set_ | If this article is published on a third-party website, the URL to this article. Providing a URL will prevent a content page being generated and any references to this article will link directly to the third-party website. | | `externalUrl` | _Not set_ | If this article is published on a third-party website, the URL to this article. Providing a URL will prevent a content page being generated and any references to this article will link directly to the third-party website. |
@@ -29,10 +29,11 @@ Front matter parameter default values are inherited from the theme's [base confi
| `showAuthorBottom` | `article.showAuthorBottom` | Author boxes are displayed at the bottom of each page instead of the top. | | `showAuthorBottom` | `article.showAuthorBottom` | Author boxes are displayed at the bottom of each page instead of the top. |
| `authors` | _Not set_ | Array of values for authors, if set it overrides `showAuthor` settings for page or site. Used on the multiple authors feature, check [this page]({{< ref "multi-author" >}}) for more details on how to configure that feature. | | `authors` | _Not set_ | Array of values for authors, if set it overrides `showAuthor` settings for page or site. Used on the multiple authors feature, check [this page]({{< ref "multi-author" >}}) for more details on how to configure that feature. |
| `showAuthorsBadges` | `article.showAuthorsBadges` | Whether the `authors` taxonomies are are displayed in the article or list header. This requires the setup of `multiple authors` and the `authors` taxonomy. Check [this page]({{< ref "multi-author" >}}) for more details on how to configure that feature. | | `showAuthorsBadges` | `article.showAuthorsBadges` | Whether the `authors` taxonomies are are displayed in the article or list header. This requires the setup of `multiple authors` and the `authors` taxonomy. Check [this page]({{< ref "multi-author" >}}) for more details on how to configure that feature. |
| `featureimage` | _Not set_ | External URL for feature image | | `featureimage` | _Not set_ | Link for feature image |
| `featureimagecaption` | _Not set_ | Caption for feature image. Only displayed in heroStyle `big` | | `featureimagecaption` | _Not set_ | Caption for feature image. Only displayed in heroStyle `big` |
| `showHero` | `article.showHero` | Whether the thumbnail image will be shown as a hero image within the article page. | | `showHero` | `article.showHero` | Whether the thumbnail image will be shown as a hero image within the article page. |
| `heroStyle` | `article.heroStyle` | Style to display the hero image, valid options are: `basic`, `big`, `background`, `thumbAndBackground`. | | `heroStyle` | `article.heroStyle` | Style to display the hero image, valid options are: `basic`, `big`, `background`, `thumbAndBackground`. |
| `imagePosition` | _Not set_ | Sets the position of the feature image using `object-position` attribute. Valid values are as specified in the [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/CSS/object-position#try_it). |
| `showBreadcrumbs` | `article.showBreadcrumbs` or `list.showBreadcrumbs` | Whether the breadcrumbs are displayed in the article or list header. | | `showBreadcrumbs` | `article.showBreadcrumbs` or `list.showBreadcrumbs` | Whether the breadcrumbs are displayed in the article or list header. |
| `showDate` | `article.showDate` | Whether or not the article date is displayed. The date is set using the `date` parameter. | | `showDate` | `article.showDate` | Whether or not the article date is displayed. The date is set using the `date` parameter. |
| `showDateUpdated` | `article.showDateUpdated` | Whether or not the date the article was updated is displayed. The date is set using the `lastmod` parameter. | | `showDateUpdated` | `article.showDateUpdated` | Whether or not the date the article was updated is displayed. The date is set using the `lastmod` parameter. |
@@ -15,7 +15,7 @@ front matter 参数中的默认值是从[基础配置]({{< ref "configuration" >
<!-- prettier-ignore-start --> <!-- prettier-ignore-start -->
| 名称 | 默认值 | 描述 | | 名称 | 默认值 | 描述 |
| ----------------------------- | --------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- | --- |
| `title` | 无 | 文章名称。 | | `title` | 无 | 文章名称。 |
| `description` | 无 | 文章的描述信息,它会被添加在 HTML 的 `<meta>` 元数据中。 | | `description` | 无 | 文章的描述信息,它会被添加在 HTML 的 `<meta>` 元数据中。 |
| `externalUrl` | 无 | 如果文章发布在第三方网站上,这里提供只想对应文章的 URL 地址。提供 URL 将会组织生成内容页面,对这篇文章的任何引用都会直接跳转到第三方网站的 URL 上面。 | | `externalUrl` | 无 | 如果文章发布在第三方网站上,这里提供只想对应文章的 URL 地址。提供 URL 将会组织生成内容页面,对这篇文章的任何引用都会直接跳转到第三方网站的 URL 上面。 |
@@ -29,10 +29,11 @@ front matter 参数中的默认值是从[基础配置]({{< ref "configuration" >
| `showAuthorBottom` | `article.showAuthorBottom` | 作者框显示在每页的底部而不是顶部。 | | `showAuthorBottom` | `article.showAuthorBottom` | 作者框显示在每页的底部而不是顶部。 |
| `authors` | 无 | 用于展示多创作者的数组,如果设置了将会覆盖 `showAuthor` 设置。这里使用了多作者的特性,查看[这个页面]({{< ref "multi-author" >}})来获取更多信息。 | | `authors` | 无 | 用于展示多创作者的数组,如果设置了将会覆盖 `showAuthor` 设置。这里使用了多作者的特性,查看[这个页面]({{< ref "multi-author" >}})来获取更多信息。 |
| `showAuthorsBadges` | `article.showAuthorsBadges` | 是否在文章和列表页展示`authors`作者分类。想是它生效需要开启`multiple authors`多创作者和 `authors` 作者分类。 查看[这个页面]({{< ref "multi-author" >}})来获取更多信息。 | | `showAuthorsBadges` | `article.showAuthorsBadges` | 是否在文章和列表页展示`authors`作者分类。想是它生效需要开启`multiple authors`多创作者和 `authors` 作者分类。 查看[这个页面]({{< ref "multi-author" >}})来获取更多信息。 |
| `featureimage` | 无 | 基于外部 URL 的特征图片链接。 | | `featureimage` | 无 | 基于连结的特征图片链接。 |
| `featureimagecaption` | 无 | 特征图片的说明,仅在 hero 样式的 `big` 风格下展示。 | | `featureimagecaption` | 无 | 特征图片的说明,仅在 hero 样式的 `big` 风格下展示。 |
| `showHero` | `article.showHero` | 是否在文章页面将所裸土作为文章页面内的 hero 图片显示。 | | `showHero` | `article.showHero` | 是否在文章页面将所裸土作为文章页面内的 hero 图片显示。 |
| `heroStyle` | `article.heroStyle` | hero 图片的风格,合法的值有: `basic`、`big`、`background`、`thumbAndBackground`。 | | `heroStyle` | `article.heroStyle` | hero 图片的风格,合法的值有: `basic`、`big`、`background`、`thumbAndBackground`。 |
| `imagePosition` | 无 | 使用 `object-position` 属性设置特色图片的位置。有效值如 [MDN 文档](https://developer.mozilla.org/en-US/docs/Web/CSS/object-position#try_it) 所示。 |
| `showBreadcrumbs` | `article.showBreadcrumbs` or `list.showBreadcrumbs` | 是否在文章或列表页面显示面包屑导航。 | | `showBreadcrumbs` | `article.showBreadcrumbs` or `list.showBreadcrumbs` | 是否在文章或列表页面显示面包屑导航。 |
| `showDate` | `article.showDate` | 是否显示文章的日期。具体日期使用 `date` 参数设置。 | | `showDate` | `article.showDate` | 是否显示文章的日期。具体日期使用 `date` 参数设置。 |
| `showDateUpdated` | `article.showDateUpdated` | 是否显示文章的更新日期。具体日期使用 `lastmod` 参数设置。 | | `showDateUpdated` | `article.showDateUpdated` | 是否显示文章的更新日期。具体日期使用 `lastmod` 参数设置。 |
@@ -21,7 +21,6 @@ npx blowfish-tools
``` ```
{{< /alert >}} {{< /alert >}}
The config files that ship with Blowfish contain all of the possible settings that the theme recognises. By default, many of these are commented out but you can simply uncomment them to activate or change a specific feature. The config files that ship with Blowfish contain all of the possible settings that the theme recognises. By default, many of these are commented out but you can simply uncomment them to activate or change a specific feature.
## Basic configuration ## Basic configuration
@@ -74,48 +73,61 @@ colorScheme = "blowfish"
Blowfish defines a three-colour palette that is used throughout the theme. Each main colour contains ten shades which are based upon the colours that are included in [Tailwind](https://tailwindcss.com/docs/customizing-colors#color-palette-reference). The three main colours are used for the header, footer, and accent colours. Here are the colors for each scheme: Blowfish defines a three-colour palette that is used throughout the theme. Each main colour contains ten shades which are based upon the colours that are included in [Tailwind](https://tailwindcss.com/docs/customizing-colors#color-palette-reference). The three main colours are used for the header, footer, and accent colours. Here are the colors for each scheme:
#### Blowfish (default) ### Blowfish (default)
{{< swatches "#64748b" "#3b82f6" "#06b6d4" >}} {{< swatches "#64748b" "#3b82f6" "#06b6d4" >}}
#### Avocado ### Avocado
{{< swatches "#78716c" "#84cc16" "#10b981" >}} {{< swatches "#78716c" "#84cc16" "#10b981" >}}
#### Fire ### Fire
{{< swatches "#78716c" "#f97316" "#f43f5e" >}} {{< swatches "#78716c" "#f97316" "#f43f5e" >}}
#### Ocean ### Ocean
{{< swatches "#64748b" "#3b82f6" "#06b6d4" >}} {{< swatches "#64748b" "#3b82f6" "#06b6d4" >}}
#### Forest ### Forest
{{< swatches "#658c86" "#3bf5df" "#06d45c" >}} {{< swatches "#658c86" "#3bf5df" "#06d45c" >}}
#### Princess ### Princess
{{< swatches "#8c658c" "#f53bf2" "#7706d4" >}} {{< swatches "#8c658c" "#f53bf2" "#7706d4" >}}
#### Neon ### Neon
{{< swatches "#8338ec" "#ff006e" "#3a86ff" >}} {{< swatches "#8338ec" "#ff006e" "#3a86ff" >}}
#### Bloody ### Bloody
{{< swatches "#d90429" "#8d99ae" "#457b9d" >}} {{< swatches "#d90429" "#8d99ae" "#457b9d" >}}
#### Terminal ### Terminal
{{< swatches "#004b23" "#38b000" "#1a759f" >}} {{< swatches "#004b23" "#38b000" "#1a759f" >}}
#### Marvel ### Marvel
{{< swatches "#2541b2" "#d81159" "#ffbc42" >}} {{< swatches "#2541b2" "#d81159" "#ffbc42" >}}
#### Noir ### Noir
{{< swatches "#5c6b73" "#9db4c0" "#00a5cf" >}} {{< swatches "#5c6b73" "#9db4c0" "#00a5cf" >}}
#### Autumn ### Autumn
{{< swatches "#0a9396" "#ee9b00" "#bb3e03" >}} {{< swatches "#0a9396" "#ee9b00" "#bb3e03" >}}
#### Congo ### Congo
{{< swatches "#71717a" "#8b5cf6" "#d946ef" >}} {{< swatches "#71717a" "#8b5cf6" "#d946ef" >}}
#### Slate ### Slate
{{< swatches "#6B7280" "#64748b" "#6B7280" >}}
{{< swatches "#6B7280" "#64748b" "#6B7280" >}}
Although these are the default schemes, you can also create your own. Refer to the [Advanced Customisation]({{< ref "advanced-customisation#colour-schemes" >}}) section for details. Although these are the default schemes, you can also create your own. Refer to the [Advanced Customisation]({{< ref "advanced-customisation#colour-schemes" >}}) section for details.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 737 KiB

After

Width:  |  Height:  |  Size: 3.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 811 KiB

After

Width:  |  Height:  |  Size: 3.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 892 KiB

After

Width:  |  Height:  |  Size: 4.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 499 KiB

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 509 KiB

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 504 KiB

After

Width:  |  Height:  |  Size: 1.6 MiB

@@ -79,7 +79,7 @@ Blowfish 提供了一个完全灵活的主页布局。你可以选择两种主
## 缩略图 ## 缩略图
Blowfish 为你的文章提供了视觉支持。如果你熟悉 Hugo 的文章结构,只需要在你的文章对应的文件夹中防止一个以`feature*`开头的图像文件即可,图像类型几乎支持所有格式,更推荐使用`.png` 或者 `.jpg`。这样一来,Blowfish 将会在你的网站内使用该图片作为缩略图,并用在社交媒体平台上的 <a target="_blank" href="https://oembed.com/">oEmbed</a> 卡片中。 Blowfish 为你的文章提供了视觉支持。如果你熟悉 Hugo 的文章结构,只需要在你的文章对应的文件夹中放置一个以`feature*`开头的图像文件即可,图像类型几乎支持所有格式,更推荐使用`.png` 或者 `.jpg`。这样一来,Blowfish 将会在你的网站内使用该图片作为缩略图,并用在社交媒体平台上的 <a target="_blank" href="https://oembed.com/">oEmbed</a> 卡片中。
[这是]({{< ref "thumbnails" >}})有更多详细内容,并且有一个便于理解的[示例]({{< ref "thumbnail_sample" >}})。 [这是]({{< ref "thumbnails" >}})有更多详细内容,并且有一个便于理解的[示例]({{< ref "thumbnail_sample" >}})。
@@ -17,7 +17,7 @@ In addition to all the [default Hugo shortcodes](https://gohugo.io/content-manag
<!-- prettier-ignore-start --> <!-- prettier-ignore-start -->
| Parameter | Description | | Parameter | Description |
| ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- |
| `icon` | **Optional.** the icon to display on the left side.<br>**Default:** `triangle-exclamation` (Check out the [icon shortcode](#icon) for more details on using icons.) | | `icon` | **Optional.** the icon to display on the left side.<br>**Default:** `triangle-exclamation` (Check out the [icon shortcode](#icon) for more details on using icons.) |
| `iconColor` | **Optional.** the color for the icon in basic CSS style.<br>Can be either hex values (`#FFFFFF`) or color names (`white`)<br>By default chosen based on the current color theme . | | `iconColor` | **Optional.** the color for the icon in basic CSS style.<br>Can be either hex values (`#FFFFFF`) or color names (`white`)<br>By default chosen based on the current color theme . |
| `cardColor` | **Optional.** the color for the card background in basic CSS style.<br>Can be either hex values (`#FFFFFF`) or color names (`white`)<br>By default chosen based on the current color theme . | | `cardColor` | **Optional.** the color for the card background in basic CSS style.<br>Can be either hex values (`#FFFFFF`) or color names (`white`)<br>By default chosen based on the current color theme . |
@@ -128,7 +128,7 @@ Call to action
<!-- prettier-ignore-start --> <!-- prettier-ignore-start -->
| Parameter | Description | | Parameter | Description |
| ------------- | ----------------------------------------------------------------------------------------------------------------- | | --- | --- |
| `images` | **Required.** A regex string to match image names or URLs. | | `images` | **Required.** A regex string to match image names or URLs. |
| `aspectRatio` | **Optional.** The aspect ratio for the carousel. Either `16-9`, `21-9` or `32-9`. It is set to `16-9` by default. | | `aspectRatio` | **Optional.** The aspect ratio for the carousel. Either `16-9`, `21-9` or `32-9`. It is set to `16-9` by default. |
| `interval` | **Optional.** The interval for the auto-scrooling, specified in milliseconds. Defaults to `2000` (2s) | | `interval` | **Optional.** The interval for the auto-scrooling, specified in milliseconds. Defaults to `2000` (2s) |
@@ -252,7 +252,7 @@ The `figure` shortcode accepts six parameters:
<!-- prettier-ignore-start --> <!-- prettier-ignore-start -->
| Parameter | Description | | Parameter | Description |
| --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- |
| `src` | **Required.** The local path/filename or URL of the image. When providing a path and filename, the theme will attempt to locate the image using the following lookup order: Firstly, as a [page resource](https://gohugo.io/content-management/page-resources/) bundled with the page; then an asset in the `assets/` directory; then finally, a static image in the `static/` directory. | | `src` | **Required.** The local path/filename or URL of the image. When providing a path and filename, the theme will attempt to locate the image using the following lookup order: Firstly, as a [page resource](https://gohugo.io/content-management/page-resources/) bundled with the page; then an asset in the `assets/` directory; then finally, a static image in the `static/` directory. |
| `alt` | [Alternative text description](https://moz.com/learn/seo/alt-text) for the image. | | `alt` | [Alternative text description](https://moz.com/learn/seo/alt-text) for the image. |
| `caption` | Markdown for the image caption, which will be displayed below the image. | | `caption` | Markdown for the image caption, which will be displayed below the image. |
@@ -594,7 +594,7 @@ When life gives you lemons, make lemonade.
<!-- prettier-ignore-start --> <!-- prettier-ignore-start -->
| Parameter | Description | | Parameter | Description |
| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- |
| `limit` | **Required.** the number of recent articles to display. | | `limit` | **Required.** the number of recent articles to display. |
| `title` | Optional title for the list, default is `Recent` | | `title` | Optional title for the list, default is `Recent` |
| `cardView` | Optional card view enabled for the list, default is `false` | | `cardView` | Optional card view enabled for the list, default is `false` |
@@ -810,7 +810,7 @@ Blowfish implements a sub-set of TypeIt features using a `shortcode`. Write your
<!-- prettier-ignore-start --> <!-- prettier-ignore-start -->
| Parameter | Description | | Parameter | Description |
| ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- |
| `tag` | [String] `html` tag that will be used to render the strings. | | `tag` | [String] `html` tag that will be used to render the strings. |
| `classList` | [String] List of `css` classes to apply to the `html` element. | | `classList` | [String] List of `css` classes to apply to the `html` element. |
| `initialString` | [String] Initial string that will appear written and will be replaced. | | `initialString` | [String] Initial string that will appear written and will be replaced. |
@@ -17,7 +17,7 @@ series_order: 8
<!-- prettier-ignore-start --> <!-- prettier-ignore-start -->
| パラメータ | 説明 | | パラメータ | 説明 |
| ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- |
| `icon` | **オプション** 左端に表示するアイコン。<br>**デフォルト:** `exclamation triangle icon` (アイコンの使用方法の詳細については、[アイコンショートコード](#アイコン)をご覧ください。) | | `icon` | **オプション** 左端に表示するアイコン。<br>**デフォルト:** `exclamation triangle icon` (アイコンの使用方法の詳細については、[アイコンショートコード](#アイコン)をご覧ください。) |
| `iconColor` | **オプション** 基本的な CSS スタイルのアイコンの色。<br>HEX値 (`#FFFFFF`) または色の名前 (`white`) のいずれかで指定できます。<br>デフォルトでは、現在のカラースキームに基づいて選択されます。 | | `iconColor` | **オプション** 基本的な CSS スタイルのアイコンの色。<br>HEX値 (`#FFFFFF`) または色の名前 (`white`) のいずれかで指定できます。<br>デフォルトでは、現在のカラースキームに基づいて選択されます。 |
| `cardColor` | **オプション** 基本的な CSS スタイルのカードの背景色。<br>HEX値 (`#FFFFFF`) または色の名前 (`white`) のいずれかを指定できます。<br>デフォルトでは、現在のカラースキームに基づいて選択されます。 | | `cardColor` | **オプション** 基本的な CSS スタイルのカードの背景色。<br>HEX値 (`#FFFFFF`) または色の名前 (`white`) のいずれかを指定できます。<br>デフォルトでは、現在のカラースキームに基づいて選択されます。 |
@@ -128,7 +128,7 @@ Twitter で私を[フォロー](https://twitter.com/nunocoracao)するのを忘
<!-- prettier-ignore-start --> <!-- prettier-ignore-start -->
| パラメータ | 説明 | | パラメータ | 説明 |
| ------------- | ----------------------------------------------------------------------------------------------------------------- | | --- | --- |
| `images` | **必須** 画像名または URL に一致する正規表現文字列。 | | `images` | **必須** 画像名または URL に一致する正規表現文字列。 |
| `aspectRatio` | **オプション** カルーセルのアスペクト比。`16-9`、`21-9`、または `32-9` のいずれか。デフォルトでは `16-9` に設定されています。 | | `aspectRatio` | **オプション** カルーセルのアスペクト比。`16-9`、`21-9`、または `32-9` のいずれか。デフォルトでは `16-9` に設定されています。 |
| `interval` | **オプション** 自動スクロールの間隔。ミリ秒単位で指定します。デフォルトは `2000` (2秒) です。 | | `interval` | **オプション** 自動スクロールの間隔。ミリ秒単位で指定します。デフォルトは `2000` (2秒) です。 |
@@ -251,7 +251,7 @@ Blowfish には、コンテンツに画像を追加するための `figure` シ
<!-- prettier-ignore-start --> <!-- prettier-ignore-start -->
| パラメータ | 説明 | | パラメータ | 説明 |
| --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- |
| `src` | **必須** 画像のローカルパス/ファイル名または URL。パスとファイル名を指定すると、テーマは次の優先順位を使用して画像の特定を試みます。まず、ページにバンドルされた[ページリソース](https://gohugo.io/content-management/page-resources/)として、次に `assets/` ディレクトリ内のアセット、最後に `static/` ディレクトリ内の静的画像。 | | `src` | **必須** 画像のローカルパス/ファイル名または URL。パスとファイル名を指定すると、テーマは次の優先順位を使用して画像の特定を試みます。まず、ページにバンドルされた[ページリソース](https://gohugo.io/content-management/page-resources/)として、次に `assets/` ディレクトリ内のアセット、最後に `static/` ディレクトリ内の静的画像。 |
| `alt` | 画像の[代替テキスト](https://moz.com/learn/seo/alt-text)。 | | `alt` | 画像の[代替テキスト](https://moz.com/learn/seo/alt-text)。 |
| `caption` | 画像の下に表示される画像キャプションの Markdown。 | | `caption` | 画像の下に表示される画像キャプションの Markdown。 |
@@ -591,7 +591,7 @@ Blowfish も、標準の Markdown 構文を使用して含まれる画像の自
<!-- prettier-ignore-start --> <!-- prettier-ignore-start -->
| パラメータ | 説明 | | パラメータ | 説明 |
| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- |
| `limit` | **必須** 表示する最近の記事の数。 | | `limit` | **必須** 表示する最近の記事の数。 |
| `title` | オプションのリストのタイトル。デフォルトは `Recent` です。 | | `title` | オプションのリストのタイトル。デフォルトは `Recent` です。 |
| `cardView` | オプションのカードビュー。リストに対して有効化されます。デフォルトは `false` です。 | | `cardView` | オプションのカードビュー。リストに対して有効化されます。デフォルトは `false` です。 |
@@ -806,7 +806,7 @@ Blowfish は、`shortcode` を使用して TypeIt 機能のサブセットを実
<!-- prettier-ignore-start --> <!-- prettier-ignore-start -->
| パラメータ | 説明 | | パラメータ | 説明 |
| ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- |
| `tag` | [文字列] 文字列のレンダリングに使用される `html` タグ。 | | `tag` | [文字列] 文字列のレンダリングに使用される `html` タグ。 |
| `classList` | [文字列] `html` 要素に適用する `css` クラスのリスト。 | | `classList` | [文字列] `html` 要素に適用する `css` クラスのリスト。 |
| `initialString` | [文字列] 書き込まれて表示され、置き換えられる初期文字列。 | | `initialString` | [文字列] 書き込まれて表示され、置き換えられる初期文字列。 |
+7 -7
View File
@@ -17,7 +17,7 @@ In addition to all the [default Hugo shortcodes](https://gohugo.io/content-manag
<!-- prettier-ignore-start --> <!-- prettier-ignore-start -->
| Parameter | Description | | Parameter | Description |
| ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- |
| `icon` | **Optional.** the icon to display on the left side.<br>**Default:** `triangle-exclamation` (Check out the [icon shortcode](#icon) for more details on using icons.) | | `icon` | **Optional.** the icon to display on the left side.<br>**Default:** `triangle-exclamation` (Check out the [icon shortcode](#icon) for more details on using icons.) |
| `iconColor` | **Optional.** the color for the icon in basic CSS style.<br>Can be either hex values (`#FFFFFF`) or color names (`white`)<br>By default chosen based on the current color theme . | | `iconColor` | **Optional.** the color for the icon in basic CSS style.<br>Can be either hex values (`#FFFFFF`) or color names (`white`)<br>By default chosen based on the current color theme . |
| `cardColor` | **Optional.** the color for the card background in basic CSS style.<br>Can be either hex values (`#FFFFFF`) or color names (`white`)<br>By default chosen based on the current color theme . | | `cardColor` | **Optional.** the color for the card background in basic CSS style.<br>Can be either hex values (`#FFFFFF`) or color names (`white`)<br>By default chosen based on the current color theme . |
@@ -124,13 +124,13 @@ Call to action
## Carousel ## Carousel
`carousel` is used to showcase multiple images in an interactive and visually appealing way. This allows a user to slide through multiple images while only taking up the vertical space of a single one. All images are displayed using the full width of the parent component and using one of the predefined aspect ratios of `16:9`, `21:9` or `32:9`. `carousel` is used to showcase multiple images in an interactive and visually appealing way. This allows a user to slide through multiple images while only taking up the vertical space of a single one. All images are displayed using the full width of the parent component and the aspect ratio you set with a default of `16:9`.
<!-- prettier-ignore-start --> <!-- prettier-ignore-start -->
| Parameter | Description | | Parameter | Description |
| ------------- | ----------------------------------------------------------------------------------------------------------------- | | --- | --- |
| `images` | **Required.** A regex string to match image names or URLs. | | `images` | **Required.** A regex string to match image names or URLs. |
| `aspectRatio` | **Optional.** The aspect ratio for the carousel. Either `16-9`, `21-9` or `32-9`. It is set to `16-9` by default. | | `aspectRatio` | **Optional.** The aspect ratio for the carousel. It is set to `16-9` by default. |
| `interval` | **Optional.** The interval for the auto-scrooling, specified in milliseconds. Defaults to `2000` (2s) | | `interval` | **Optional.** The interval for the auto-scrooling, specified in milliseconds. Defaults to `2000` (2s) |
<!-- prettier-ignore-end --> <!-- prettier-ignore-end -->
@@ -253,7 +253,7 @@ The `figure` shortcode accepts six parameters:
<!-- prettier-ignore-start --> <!-- prettier-ignore-start -->
| Parameter | Description | | Parameter | Description |
| --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- |
| `src` | **Required.** The local path/filename or URL of the image. When providing a path and filename, the theme will attempt to locate the image using the following lookup order: Firstly, as a [page resource](https://gohugo.io/content-management/page-resources/) bundled with the page; then an asset in the `assets/` directory; then finally, a static image in the `static/` directory. | | `src` | **Required.** The local path/filename or URL of the image. When providing a path and filename, the theme will attempt to locate the image using the following lookup order: Firstly, as a [page resource](https://gohugo.io/content-management/page-resources/) bundled with the page; then an asset in the `assets/` directory; then finally, a static image in the `static/` directory. |
| `alt` | [Alternative text description](https://moz.com/learn/seo/alt-text) for the image. | | `alt` | [Alternative text description](https://moz.com/learn/seo/alt-text) for the image. |
| `caption` | Markdown for the image caption, which will be displayed below the image. | | `caption` | Markdown for the image caption, which will be displayed below the image. |
@@ -597,7 +597,7 @@ When life gives you lemons, make lemonade.
<!-- prettier-ignore-start --> <!-- prettier-ignore-start -->
| Parameter | Description | | Parameter | Description |
| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- |
| `limit` | **Required.** the number of recent articles to display. | | `limit` | **Required.** the number of recent articles to display. |
| `title` | Optional title for the list, default is `Recent` | | `title` | Optional title for the list, default is `Recent` |
| `cardView` | Optional card view enabled for the list, default is `false` | | `cardView` | Optional card view enabled for the list, default is `false` |
@@ -820,7 +820,7 @@ Blowfish implements a sub-set of TypeIt features using a `shortcode`. Write your
<!-- prettier-ignore-start --> <!-- prettier-ignore-start -->
| Parameter | Description | | Parameter | Description |
| ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- |
| `tag` | [String] `html` tag that will be used to render the strings. | | `tag` | [String] `html` tag that will be used to render the strings. |
| `classList` | [String] List of `css` classes to apply to the `html` element. | | `classList` | [String] List of `css` classes to apply to the `html` element. |
| `initialString` | [String] Initial string that will appear written and will be replaced. | | `initialString` | [String] Initial string that will appear written and will be replaced. |
@@ -17,7 +17,7 @@ series_order: 8
<!-- prettier-ignore-start --> <!-- prettier-ignore-start -->
| 参数 | 功能 | | 参数 | 功能 |
| ----------- | -------------------------------------------------------------------------------------------------------------------------------- | | --- | --- |
| `icon` | **可选** 显示在左侧的图标。<br>**默认:** `exclaimation triangle icon` (查看[图标简码](#图标),了解有关使用图标的更多详细信息。) | | `icon` | **可选** 显示在左侧的图标。<br>**默认:** `exclaimation triangle icon` (查看[图标简码](#图标),了解有关使用图标的更多详细信息。) |
| `iconColor` | **可选** 基本 CSS 样式中图标的颜色。<br>可以是十六进制值 (`#FFFFFF`) 或颜色名称 (`white`)<br>默认情况下由当前配色方案决定。 | | `iconColor` | **可选** 基本 CSS 样式中图标的颜色。<br>可以是十六进制值 (`#FFFFFF`) 或颜色名称 (`white`)<br>默认情况下由当前配色方案决定。 |
| `cardColor` | **可选** 基本 CSS 样式中卡片背景的颜色。<br>可以是十六进制值 (`#FFFFFF`) 或颜色名称 (`white`)<br>默认情况下由当前配色方案决定。 | | `cardColor` | **可选** 基本 CSS 样式中卡片背景的颜色。<br>可以是十六进制值 (`#FFFFFF`) 或颜色名称 (`white`)<br>默认情况下由当前配色方案决定。 |
@@ -254,7 +254,7 @@ Blowfish 包含一个 `figure` 简码,用于将图像添加到内容中。该
<!-- prettier-ignore-start --> <!-- prettier-ignore-start -->
| 参数 | 功能 | | 参数 | 功能 |
| --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --- | --- |
| `src` | **必填** 图像的本地路径/文件名或 URL。当提供路径和文件名时,主题将尝试使用以下查找顺序来查找图像:首先,作为与页面绑定的[页面资源](https://gohugo.io/content-management/page-resources/);然后是 `assets/` 目录中的文件;最后是,`static/`目录中的文件。 | | `src` | **必填** 图像的本地路径/文件名或 URL。当提供路径和文件名时,主题将尝试使用以下查找顺序来查找图像:首先,作为与页面绑定的[页面资源](https://gohugo.io/content-management/page-resources/);然后是 `assets/` 目录中的文件;最后是,`static/`目录中的文件。 |
| `alt` | 图像的[替代文本描述](https://moz.com/learn/seo/alt-text)。 | | `alt` | 图像的[替代文本描述](https://moz.com/learn/seo/alt-text)。 |
| `caption` | Markdown 格式的图像标题,将显示在图像下方。 | | `caption` | Markdown 格式的图像标题,将显示在图像下方。 |
@@ -601,7 +601,7 @@ When life gives you lemons, make lemonade.
<!-- prettier-ignore-start --> <!-- prettier-ignore-start -->
| 参数 | 功能 | | 参数 | 功能 |
| ---------- | ------------------------------------------------------------------------------------------------------ | | --- | --- |
| `limit` | **必填** 要显示的最近文章数量。 | | `limit` | **必填** 要显示的最近文章数量。 |
| `title` | **可选** 列表标题,默认为 `Recent` | | `title` | **可选** 列表标题,默认为 `Recent` |
| `cardView` | **可选** 列表启用卡片视图,默认为 `false` | | `cardView` | **可选** 列表启用卡片视图,默认为 `false` |
@@ -275,7 +275,7 @@ The only thing missing is to ship your site. I will be using [Firebase](https://
Let’s install firebase’s CLI - if not on Mac check [install instructions on Firebase](https://firebase.google.com/docs/cli). Let’s install firebase’s CLI - if not on Mac check [install instructions on Firebase](https://firebase.google.com/docs/cli).
```bash ```bash
brew install firebase brew install firebase-cli
``` ```
Now log in and init firebase hosting for the project. Now log in and init firebase hosting for the project.
+1 -1
View File
@@ -6,7 +6,7 @@ cascade:
showEdit: false showEdit: false
showSummary: false showSummary: false
hideFeatureImage: true hideFeatureImage: true
invertPagination: true
--- ---
{{< lead >}} {{< lead >}}
Blowfish dà vita ai tuoi contenuti. :heart_eyes: Blowfish dà vita ai tuoi contenuti. :heart_eyes:
+1
View File
@@ -6,6 +6,7 @@ cascade:
showEdit: false showEdit: false
showSummary: false showSummary: false
hideFeatureImage: true hideFeatureImage: true
invertPagination: true
--- ---
{{< lead >}} {{< lead >}}
+1
View File
@@ -6,6 +6,7 @@ cascade:
showEdit: false showEdit: false
showSummary: false showSummary: false
hideFeatureImage: true hideFeatureImage: true
invertPagination: true
--- ---
{{< lead >}} {{< lead >}}
@@ -6,6 +6,7 @@ cascade:
showEdit: false showEdit: false
showSummary: false showSummary: false
hideFeatureImage: true hideFeatureImage: true
invertPagination: true
--- ---
{{< lead >}} {{< lead >}}
@@ -15,7 +15,6 @@ The examples below are a small selection taken from the [official Mermaid docs](
## Flowchart ## Flowchart
<div style="background-color:white; padding: 20px">
{{< mermaid >}} {{< mermaid >}}
graph TD graph TD
A[Christmas] -->|Get money| B(Go shopping) A[Christmas] -->|Get money| B(Go shopping)
@@ -32,11 +31,9 @@ F
G G
end end
{{< /mermaid >}} {{< /mermaid >}}
</div>
## Sequence diagram ## Sequence diagram
<div style="background-color:white; padding: 20px">
{{< mermaid >}} {{< mermaid >}}
sequenceDiagram sequenceDiagram
autonumber autonumber
@@ -54,11 +51,9 @@ loop Every minute
John-->Alice: Great! John-->Alice: Great!
end end
{{< /mermaid >}} {{< /mermaid >}}
</div>
## Class diagram ## Class diagram
<div style="background-color:white; padding: 20px">
{{< mermaid >}} {{< mermaid >}}
classDiagram classDiagram
Animal "1" <|-- Duck Animal "1" <|-- Duck
@@ -82,11 +77,9 @@ class Zebra{
+run() +run()
} }
{{< /mermaid >}} {{< /mermaid >}}
</div>
## Entity relationship diagram ## Entity relationship diagram
<div style="background-color:white; padding: 20px">
{{< mermaid >}} {{< mermaid >}}
erDiagram erDiagram
CUSTOMER }|..|{ DELIVERY-ADDRESS : has CUSTOMER }|..|{ DELIVERY-ADDRESS : has
@@ -98,5 +91,3 @@ ORDER ||--|{ ORDER-ITEM : includes
PRODUCT-CATEGORY ||--|{ PRODUCT : contains PRODUCT-CATEGORY ||--|{ PRODUCT : contains
PRODUCT ||--o{ ORDER-ITEM : "ordered in" PRODUCT ||--o{ ORDER-ITEM : "ordered in"
{{< /mermaid >}} {{< /mermaid >}}
</div>
@@ -15,7 +15,6 @@ Mermaid 図は `mermaid` ショートコードを使うことで Blowfish でサ
## フローチャート ## フローチャート
<div style="background-color:white; padding: 20px">
{{< mermaid >}} {{< mermaid >}}
graph TD graph TD
A[クリスマス] -->|収入| B(買い物にいく) A[クリスマス] -->|収入| B(買い物にいく)
@@ -32,11 +31,9 @@ F
G G
end end
{{< /mermaid >}} {{< /mermaid >}}
</div>
## 順序図 ## 順序図
<div style="background-color:white; padding: 20px">
{{< mermaid >}} {{< mermaid >}}
sequenceDiagram sequenceDiagram
autonumber autonumber
@@ -54,11 +51,9 @@ loop 毎分
ジョン-->アリス: すばらしい! ジョン-->アリス: すばらしい!
end end
{{< /mermaid >}} {{< /mermaid >}}
</div>
## クラス図 ## クラス図
<div style="background-color:white; padding: 20px">
{{< mermaid >}} {{< mermaid >}}
classDiagram classDiagram
Animal "1" <|-- Duck Animal "1" <|-- Duck
@@ -82,11 +77,9 @@ class Zebra{
+run() +run()
} }
{{< /mermaid >}} {{< /mermaid >}}
</div>
## 主従関係図 ## 主従関係図
<div style="background-color:white; padding: 20px">
{{< mermaid >}} {{< mermaid >}}
erDiagram erDiagram
CUSTOMER }|..|{ DELIVERY-ADDRESS : has CUSTOMER }|..|{ DELIVERY-ADDRESS : has
@@ -98,5 +91,3 @@ ORDER ||--|{ ORDER-ITEM : includes
PRODUCT-CATEGORY ||--|{ PRODUCT : contains PRODUCT-CATEGORY ||--|{ PRODUCT : contains
PRODUCT ||--o{ ORDER-ITEM : "ordered in" PRODUCT ||--o{ ORDER-ITEM : "ordered in"
{{< /mermaid >}} {{< /mermaid >}}
</div>
@@ -15,7 +15,6 @@ The examples below are a small selection taken from the [official Mermaid docs](
## Flowchart ## Flowchart
<div style="background-color:white; padding: 20px">
{{< mermaid >}} {{< mermaid >}}
graph TD graph TD
A[Christmas] -->|Get money| B(Go shopping) A[Christmas] -->|Get money| B(Go shopping)
@@ -32,11 +31,9 @@ F
G G
end end
{{< /mermaid >}} {{< /mermaid >}}
</div>
## Sequence diagram ## Sequence diagram
<div style="background-color:white; padding: 20px">
{{< mermaid >}} {{< mermaid >}}
sequenceDiagram sequenceDiagram
autonumber autonumber
@@ -54,11 +51,9 @@ loop Every minute
John-->Alice: Great! John-->Alice: Great!
end end
{{< /mermaid >}} {{< /mermaid >}}
</div>
## Class diagram ## Class diagram
<div style="background-color:white; padding: 20px">
{{< mermaid >}} {{< mermaid >}}
classDiagram classDiagram
Animal "1" <|-- Duck Animal "1" <|-- Duck
@@ -82,11 +77,9 @@ class Zebra{
+run() +run()
} }
{{< /mermaid >}} {{< /mermaid >}}
</div>
## Entity relationship diagram ## Entity relationship diagram
<div style="background-color:white; padding: 20px">
{{< mermaid >}} {{< mermaid >}}
erDiagram erDiagram
CUSTOMER }|..|{ DELIVERY-ADDRESS : has CUSTOMER }|..|{ DELIVERY-ADDRESS : has
@@ -98,5 +91,3 @@ ORDER ||--|{ ORDER-ITEM : includes
PRODUCT-CATEGORY ||--|{ PRODUCT : contains PRODUCT-CATEGORY ||--|{ PRODUCT : contains
PRODUCT ||--o{ ORDER-ITEM : "ordered in" PRODUCT ||--o{ ORDER-ITEM : "ordered in"
{{< /mermaid >}} {{< /mermaid >}}
</div>
@@ -15,7 +15,6 @@ Blowfish 使用 `mermaid` 简码可以调用。Blowfish 会根据配置的 `colo
## 流程图 ## 流程图
<div style="background-color:white; padding: 20px">
{{< mermaid >}} {{< mermaid >}}
graph TD graph TD
A[Christmas] -->|Get money| B(Go shopping) A[Christmas] -->|Get money| B(Go shopping)
@@ -32,11 +31,9 @@ F
G G
end end
{{< /mermaid >}} {{< /mermaid >}}
</div>
## 时序图 ## 时序图
<div style="background-color:white; padding: 20px">
{{< mermaid >}} {{< mermaid >}}
sequenceDiagram sequenceDiagram
autonumber autonumber
@@ -54,11 +51,9 @@ loop Every minute
John-->Alice: Great! John-->Alice: Great!
end end
{{< /mermaid >}} {{< /mermaid >}}
</div>
## 类图 ## 类图
<div style="background-color:white; padding: 20px">
{{< mermaid >}} {{< mermaid >}}
classDiagram classDiagram
Animal "1" <|-- Duck Animal "1" <|-- Duck
@@ -82,11 +77,9 @@ class Zebra{
+run() +run()
} }
{{< /mermaid >}} {{< /mermaid >}}
</div>
## 实体关系图 ## 实体关系图
<div style="background-color:white; padding: 20px">
{{< mermaid >}} {{< mermaid >}}
erDiagram erDiagram
CUSTOMER }|..|{ DELIVERY-ADDRESS : has CUSTOMER }|..|{ DELIVERY-ADDRESS : has
@@ -98,5 +91,3 @@ ORDER ||--|{ ORDER-ITEM : includes
PRODUCT-CATEGORY ||--|{ PRODUCT : contains PRODUCT-CATEGORY ||--|{ PRODUCT : contains
PRODUCT ||--o{ ORDER-ITEM : "ordered in" PRODUCT ||--o{ ORDER-ITEM : "ordered in"
{{< /mermaid >}} {{< /mermaid >}}
</div>
@@ -27,6 +27,8 @@ The full list of built-in icons and their corresponding names can referenced bel
| bug | {{< icon bug >}} | | bug | {{< icon bug >}} |
| check | {{< icon check >}} | | check | {{< icon check >}} |
| circle-info | {{< icon circle-info >}} | | circle-info | {{< icon circle-info >}} |
| cloud | {{< icon cloud >}} |
| cloud-moon | {{< icon cloud-moon >}} |
| code | {{< icon code>}} | | code | {{< icon code>}} |
| codeberg | {{< icon codeberg >}} | | codeberg | {{< icon codeberg >}} |
| codepen | {{< icon codepen >}} | | codepen | {{< icon codepen >}} |
@@ -42,6 +44,7 @@ The full list of built-in icons and their corresponding names can referenced bel
| expand | {{< icon expand >}} | | expand | {{< icon expand >}} |
| eye | {{< icon eye >}} | | eye | {{< icon eye >}} |
| facebook | {{< icon facebook >}} | | facebook | {{< icon facebook >}} |
| fediverse | {{< icon fediverse >}} |
| fire | {{< icon fire >}} | | fire | {{< icon fire >}} |
| flickr | {{< icon flickr >}} | | flickr | {{< icon flickr >}} |
| fork | {{< icon fork >}} | | fork | {{< icon fork >}} |
@@ -62,6 +65,7 @@ The full list of built-in icons and their corresponding names can referenced bel
| instagram | {{< icon instagram >}} | | instagram | {{< icon instagram >}} |
| itch-io | {{< icon itch-io >}} | | itch-io | {{< icon itch-io >}} |
| keybase | {{< icon keybase >}} | | keybase | {{< icon keybase >}} |
| keyoxide | {{< icon keyoxide >}} |
| kickstarter | {{< icon kickstarter >}} | | kickstarter | {{< icon kickstarter >}} |
| ko-fi | {{< icon ko-fi >}} | | ko-fi | {{< icon ko-fi >}} |
| language | {{< icon language >}} | | language | {{< icon language >}} |
@@ -74,6 +78,7 @@ The full list of built-in icons and their corresponding names can referenced bel
| location-dot | {{< icon location-dot >}} | | location-dot | {{< icon location-dot >}} |
| lock | {{< icon lock >}} | | lock | {{< icon lock >}} |
| mastodon | {{< icon mastodon >}} | | mastodon | {{< icon mastodon >}} |
| matrix | {{< icon matrix >}} |
| medium | {{< icon medium >}} | | medium | {{< icon medium >}} |
| microsoft | {{< icon microsoft >}} | | microsoft | {{< icon microsoft >}} |
| moon | {{< icon moon >}} | | moon | {{< icon moon >}} |
@@ -96,6 +101,7 @@ The full list of built-in icons and their corresponding names can referenced bel
| scale-balanced | {{< icon scale-balanced >}} | | scale-balanced | {{< icon scale-balanced >}} |
| search | {{< icon search >}} | | search | {{< icon search >}} |
| shield | {{< icon shield >}} | | shield | {{< icon shield >}} |
| signal | {{< icon signal >}} |
| skull-crossbones | {{< icon skull-crossbones >}} | | skull-crossbones | {{< icon skull-crossbones >}} |
| slack | {{< icon slack >}} | | slack | {{< icon slack >}} |
| snapchat | {{< icon snapchat >}} | | snapchat | {{< icon snapchat >}} |
@@ -27,6 +27,8 @@ Blowfish はいくつもの [FontAwesome 6](https://fontawesome.com/icons) の
| bug | {{< icon bug >}} | | bug | {{< icon bug >}} |
| check | {{< icon check >}} | | check | {{< icon check >}} |
| circle-info | {{< icon circle-info >}} | | circle-info | {{< icon circle-info >}} |
| cloud | {{< icon cloud >}} |
| cloud-moon | {{< icon cloud-moon >}} |
| code | {{< icon code>}} | | code | {{< icon code>}} |
| codeberg | {{< icon codeberg >}} | | codeberg | {{< icon codeberg >}} |
| codepen | {{< icon codepen >}} | | codepen | {{< icon codepen >}} |
@@ -42,6 +44,7 @@ Blowfish はいくつもの [FontAwesome 6](https://fontawesome.com/icons) の
| expand | {{< icon expand >}} | | expand | {{< icon expand >}} |
| eye | {{< icon eye >}} | | eye | {{< icon eye >}} |
| facebook | {{< icon facebook >}} | | facebook | {{< icon facebook >}} |
| fediverse | {{< icon fediverse >}} |
| fire | {{< icon fire >}} | | fire | {{< icon fire >}} |
| flickr | {{< icon flickr >}} | | flickr | {{< icon flickr >}} |
| fork | {{< icon fork >}} | | fork | {{< icon fork >}} |
@@ -62,6 +65,7 @@ Blowfish はいくつもの [FontAwesome 6](https://fontawesome.com/icons) の
| instagram | {{< icon instagram >}} | | instagram | {{< icon instagram >}} |
| itch-io | {{< icon itch-io >}} | | itch-io | {{< icon itch-io >}} |
| keybase | {{< icon keybase >}} | | keybase | {{< icon keybase >}} |
| keyoxide | {{< icon keyoxide >}} |
| kickstarter | {{< icon kickstarter >}} | | kickstarter | {{< icon kickstarter >}} |
| ko-fi | {{< icon ko-fi >}} | | ko-fi | {{< icon ko-fi >}} |
| language | {{< icon language >}} | | language | {{< icon language >}} |
@@ -74,6 +78,7 @@ Blowfish はいくつもの [FontAwesome 6](https://fontawesome.com/icons) の
| location-dot | {{< icon location-dot >}} | | location-dot | {{< icon location-dot >}} |
| lock | {{< icon lock >}} | | lock | {{< icon lock >}} |
| mastodon | {{< icon mastodon >}} | | mastodon | {{< icon mastodon >}} |
| matrix | {{< icon matrix >}} |
| medium | {{< icon medium >}} | | medium | {{< icon medium >}} |
| microsoft | {{< icon microsoft >}} | | microsoft | {{< icon microsoft >}} |
| moon | {{< icon moon >}} | | moon | {{< icon moon >}} |
@@ -96,6 +101,7 @@ Blowfish はいくつもの [FontAwesome 6](https://fontawesome.com/icons) の
| scale-balanced | {{< icon scale-balanced >}} | | scale-balanced | {{< icon scale-balanced >}} |
| search | {{< icon search >}} | | search | {{< icon search >}} |
| shield | {{< icon shield >}} | | shield | {{< icon shield >}} |
| signal | {{< icon signal >}} |
| skull-crossbones | {{< icon skull-crossbones >}} | | skull-crossbones | {{< icon skull-crossbones >}} |
| slack | {{< icon slack >}} | | slack | {{< icon slack >}} |
| snapchat | {{< icon snapchat >}} | | snapchat | {{< icon snapchat >}} |
@@ -117,6 +123,7 @@ Blowfish はいくつもの [FontAwesome 6](https://fontawesome.com/icons) の
| twitter | {{< icon twitter >}} | | twitter | {{< icon twitter >}} |
| wand-magic-sparkles | {{< icon wand-magic-sparkles >}} | | wand-magic-sparkles | {{< icon wand-magic-sparkles >}} |
| whatsapp | {{< icon whatsapp >}} | | whatsapp | {{< icon whatsapp >}} |
| worktree | {{< icon worktree >}} |
| x-twitter | {{< icon x-twitter >}} | | x-twitter | {{< icon x-twitter >}} |
| xing | {{< icon xing >}} | | xing | {{< icon xing >}} |
| xmark | {{< icon xmark >}} | | xmark | {{< icon xmark >}} |
@@ -27,6 +27,8 @@ The full list of built-in icons and their corresponding names can referenced bel
| bug | {{< icon bug >}} | | bug | {{< icon bug >}} |
| check | {{< icon check >}} | | check | {{< icon check >}} |
| circle-info | {{< icon circle-info >}} | | circle-info | {{< icon circle-info >}} |
| cloud | {{< icon cloud >}} |
| cloud-moon | {{< icon cloud-moon >}} |
| code | {{< icon code>}} | | code | {{< icon code>}} |
| codeberg | {{< icon codeberg >}} | | codeberg | {{< icon codeberg >}} |
| codepen | {{< icon codepen >}} | | codepen | {{< icon codepen >}} |
@@ -27,6 +27,8 @@ Blowfish 内置了许多 [FontAwesome 6](https://fontawesome.com/icons) 中的
| bug | {{< icon bug >}} | | bug | {{< icon bug >}} |
| check | {{< icon check >}} | | check | {{< icon check >}} |
| circle-info | {{< icon circle-info >}} | | circle-info | {{< icon circle-info >}} |
| cloud | {{< icon cloud >}} |
| cloud-moon | {{< icon cloud-moon >}} |
| code | {{< icon code>}} | | code | {{< icon code>}} |
| codeberg | {{< icon codeberg >}} | | codeberg | {{< icon codeberg >}} |
| codepen | {{< icon codepen >}} | | codepen | {{< icon codepen >}} |
@@ -42,6 +44,7 @@ Blowfish 内置了许多 [FontAwesome 6](https://fontawesome.com/icons) 中的
| expand | {{< icon expand >}} | | expand | {{< icon expand >}} |
| eye | {{< icon eye >}} | | eye | {{< icon eye >}} |
| facebook | {{< icon facebook >}} | | facebook | {{< icon facebook >}} |
| fediverse | {{< icon fediverse >}} |
| fire | {{< icon fire >}} | | fire | {{< icon fire >}} |
| flickr | {{< icon flickr >}} | | flickr | {{< icon flickr >}} |
| fork | {{< icon fork >}} | | fork | {{< icon fork >}} |
@@ -62,6 +65,7 @@ Blowfish 内置了许多 [FontAwesome 6](https://fontawesome.com/icons) 中的
| instagram | {{< icon instagram >}} | | instagram | {{< icon instagram >}} |
| itch-io | {{< icon itch-io >}} | | itch-io | {{< icon itch-io >}} |
| keybase | {{< icon keybase >}} | | keybase | {{< icon keybase >}} |
| keyoxide | {{< icon keyoxide >}} |
| kickstarter | {{< icon kickstarter >}} | | kickstarter | {{< icon kickstarter >}} |
| ko-fi | {{< icon ko-fi >}} | | ko-fi | {{< icon ko-fi >}} |
| language | {{< icon language >}} | | language | {{< icon language >}} |
@@ -74,6 +78,7 @@ Blowfish 内置了许多 [FontAwesome 6](https://fontawesome.com/icons) 中的
| location-dot | {{< icon location-dot >}} | | location-dot | {{< icon location-dot >}} |
| lock | {{< icon lock >}} | | lock | {{< icon lock >}} |
| mastodon | {{< icon mastodon >}} | | mastodon | {{< icon mastodon >}} |
| matrix | {{< icon matrix >}} |
| medium | {{< icon medium >}} | | medium | {{< icon medium >}} |
| microsoft | {{< icon microsoft >}} | | microsoft | {{< icon microsoft >}} |
| moon | {{< icon moon >}} | | moon | {{< icon moon >}} |
@@ -96,6 +101,7 @@ Blowfish 内置了许多 [FontAwesome 6](https://fontawesome.com/icons) 中的
| scale-balanced | {{< icon scale-balanced >}} | | scale-balanced | {{< icon scale-balanced >}} |
| search | {{< icon search >}} | | search | {{< icon search >}} |
| shield | {{< icon shield >}} | | shield | {{< icon shield >}} |
| signal | {{< icon signal >}} |
| skull-crossbones | {{< icon skull-crossbones >}} | | skull-crossbones | {{< icon skull-crossbones >}} |
| slack | {{< icon slack >}} | | slack | {{< icon slack >}} |
| snapchat | {{< icon snapchat >}} | | snapchat | {{< icon snapchat >}} |
@@ -117,6 +123,7 @@ Blowfish 内置了许多 [FontAwesome 6](https://fontawesome.com/icons) 中的
| twitter | {{< icon twitter >}} | | twitter | {{< icon twitter >}} |
| wand-magic-sparkles | {{< icon wand-magic-sparkles >}} | | wand-magic-sparkles | {{< icon wand-magic-sparkles >}} |
| whatsapp | {{< icon whatsapp >}} | | whatsapp | {{< icon whatsapp >}} |
| worktree | {{< icon worktree >}} |
| x-twitter | {{< icon x-twitter >}} | | x-twitter | {{< icon x-twitter >}} |
| xing | {{< icon xing >}} | | xing | {{< icon xing >}} |
| xmark | {{< icon xmark >}} | | xmark | {{< icon xmark >}} |
@@ -12,7 +12,6 @@ type: 'sample'
这是一个在你的文章使用缩略图的快速示例。 这是一个在你的文章使用缩略图的快速示例。
如果你的文章目录看起来像这样: 如果你的文章目录看起来像这样:
If your average directory for an article looks like this:
```shell ```shell
content content
+34 -1
View File
@@ -881,5 +881,38 @@
"Personal site", "Personal site",
"Technology Blog" "Technology Blog"
] ]
},
{
"title": "tbsch.de | Smart Home, Technik, Kram",
"url": "https://tbsch.de",
"source": "n/a",
"tags": [
"Personal site"
]
},
{
"title": "metalhearf.fr",
"url": "https://metalhearf.fr",
"source": "n/a",
"tags": [
"Blog",
"Personal site"
]
},
{
"title": "encelo.github.io",
"url": "https://encelo.github.io/",
"source": "https://github.com/encelo/encelo.github.io",
"tags": [
"Personal site",
"Blog"
]
},
{
"title": "ncine.github.io",
"url": "https://ncine.github.io/",
"source": "https://github.com/nCine/nCine-site",
"tags": [
"Project site"
]
} }
]
@@ -1 +1,8 @@
<a rel="me" href="https://masto.ai/@blowfish"></a> {{/* example of extend-footer */}}
{{/*
<p class="text-sm text-neutral-500 dark:text-neutral-400">
<a class="hover:underline hover:decoration-primary-400 hover:text-primary-500" rel="me" href="https://masto.ai/@blowfish">
Follow me on Mastodon
</a>
</p>
*/}}
+35 -31
View File
@@ -4,12 +4,12 @@ global:
article: article:
anchor_label: "Àncora" anchor_label: "Àncora"
date: "{{ .Date }}" date: "{{ .Date }}"
date_updated: "Actualitzat: {{ .Date }}" date_updated: "Actualització: {{ .Date }}"
draft: "Esborrany" draft: "Esborrany"
edit_title: "Editar contingut" edit_title: "Edita el contingut"
reading_time: reading_time:
one: "{{ .Count }} min" one: "{{ .Count }} min"
other: "{{ .Count }} mins" other: "{{ .Count }} min"
reading_time_title: "Temps de lectura" reading_time_title: "Temps de lectura"
table_of_contents: "Taula de contingut" table_of_contents: "Taula de contingut"
word_count: word_count:
@@ -26,13 +26,13 @@ article:
this_article: "Aquest article" this_article: "Aquest article"
related_articles: "Relacionats" related_articles: "Relacionats"
zen_mode_title: zen_mode_title:
enable: "Activar mode zen" enable: "Habilita el mode zen"
disable: "Desactivar mode zen" disable: "Inhabilita el mode zen"
a11y: a11y:
title: "Configuració d'accessibilitat" title: "Paràmetres d'accessibilitat"
disable_blur: "Desactiva el desenfocament" disable_blur: "Inhabilita el desenfocament"
disable_images: "Desactiva les imatges" disable_images: "Inhabilita les imatges"
show_link_underline: "Mostra el subratllat dels enllaços" show_link_underline: "Mostra el subratllat dels enllaços"
font_size: "Mida de la lletra" font_size: "Mida de la lletra"
@@ -40,43 +40,47 @@ author:
byline_title: "Autor" byline_title: "Autor"
code: code:
copy: "Copiar" copy: "Copia"
copied: "Copiat" copied: "S'ha copiat"
error: error:
404_title: "Pàgina no trobada :confused:" 404_title: "No s'ha trobat la pàgina :confused:"
404_error: "Error 404" 404_error: "Error 404"
404_description: "Sembla que la pàgina sol·licitada no existeix." 404_description: "Sembla que la pàgina que heu sol·licitat no existeix."
footer: footer:
dark_appearance: "Canviar a mode fosc" dark_appearance: "Canvia al mode fosc"
light_appearance: "Canviar a mode clar" light_appearance: "Canvia al mode clar"
powered_by: "Desenvolupat amb {{ .Hugo }} &amp; {{ .Theme }}" powered_by: "Desenvolupat amb {{ .Hugo }} i {{ .Theme }}"
list: list:
externalurl_title: "Enllaç a pàgina externa" externalurl_title: "Enllaç a un lloc extern"
no_articles: "Encara no hi ha cap article per a mostrar." no_articles: "Encara no hi ha cap article per mostrar."
nav: nav:
scroll_to_top_title: "Tornar a l'inici" scroll_to_top_title: "Torna a l'inici"
skip_to_main: "Anar al contingut" skip_to_main: "Ves al contingut"
search: search:
open_button_title: "Cercar (/)" open_button_title: "Cerca (/)"
close_button_title: "Tancar (Esc)" close_button_title: "Tanca (Esc)"
input_placeholder: "Cercar" input_placeholder: "Cerca"
sharing: sharing:
email: "Enviar per correu electrònic" email: "Envia per correu electrònic"
facebook: "Compartir amb Facebook" facebook: "Comparteix a Facebook"
line: "Compartir amb LINE" line: "Comparteix a LINE"
linkedin: "Compartir amb LinkedIn" linkedin: "Comparteix a LinkedIn"
pinterest: "Compartir amb Pinterest" pinterest: "Comparteix a Pinterest"
reddit: "Publicar a Reddit" reddit: "Envia a Reddit"
twitter: "Tuitejar a Twitter" twitter: "Publica a Twitter"
bluesky: "Publica a Bluesky"
whatsapp: "Comparteix per WhatsApp"
telegram: "Comparteix per Telegram"
mastodon: "Comparteix a Mastodon"
shortcode: shortcode:
recent_articles: "Recent" recent_articles: "Recents"
recent: recent:
show_more: "Mostrar més" show_more: "Mostra'n més"
+86
View File
@@ -0,0 +1,86 @@
global:
language: "DA"
article:
anchor_label: "Anker"
date: "{{ .Date }}"
date_updated: "Opdateret: {{ .Date }}"
draft: "Kladde"
edit_title: "Redigér indhold"
reading_time:
one: "{{ .Count }} minut"
other: "{{ .Count }} minutter"
reading_time_title: "Læsetid"
table_of_contents: "Indholdsfortegnelse"
word_count:
one: "{{ .Count }} ord"
other: "{{ .Count }} ord"
views:
one: "{{ .Count }} visning"
other: "{{ .Count }} visninger"
likes:
one: "{{ .Count }} like"
other: "{{ .Count }} likes"
part_of_series: "Denne artikel er en del af en serie."
part: "Del"
this_article: "Denne artikel"
related_articles: "Relateret"
zen_mode_title:
enable: "Aktiver zen mode"
disable: "Deaktiver zen mode"
a11y:
title: "Tilgængelighedsindstillinger"
disable_blur: "Deaktiver uskarphed"
disable_images: "Deaktiver billeder"
show_link_underline: "Vis link-understregning"
font_size: "Skrift størrelse"
author:
byline_title: "Forfatter"
code:
copy: "Kopi"
copied: "Kopieret"
error:
404_title: "Siden kunne ikke findes :confused:"
404_error: "Fejl 404"
404_description: "Det ser ud til at den side du søger ikke eksisterer."
footer:
dark_appearance: "Skift til mørk udseende"
light_appearance: "Skift til lys udseende"
powered_by: "Genereret af {{ .Hugo }} &amp; {{ .Theme }}"
list:
externalurl_title: "Link til ekstern hjemmeside"
no_articles: "Der er ikke nogle artikler her, endnu."
nav:
scroll_to_top_title: "scrol til top"
skip_to_main: "Gå til hovedindhold"
search:
open_button_title: "Søg (/)"
close_button_title: "Luk (Esc)"
input_placeholder: "Søg"
sharing:
email: "Send via email"
facebook: "Del via Facebook"
line: "Del via LINE"
linkedin: "Del via LinkedIn"
pinterest: "Pin på Pinterest"
reddit: "Send til Reddit"
twitter: "Tweet via Twitter"
bluesky: "Post via Bluesky"
whatsapp: "Del via WhatsApp"
telegram: "Del via Telegram"
mastodon: "Del via Mastodon"
shortcode:
recent_articles: "Seneste"
recent:
show_more: "Vis mere"
+1 -1
View File
@@ -4,7 +4,7 @@
{{ if .Page.Params.showHeadingAnchors | default (.Page.Site.Params.article.showHeadingAnchors | default true) }} {{ if .Page.Params.showHeadingAnchors | default (.Page.Site.Params.article.showHeadingAnchors | default true) }}
<span <span
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"> class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
<a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#{{ $anchor }}" aria-label="{{ i18n "article.anchor_label" }}">#</a> <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#{{ $anchor }}" aria-label="{{ i18n "article.anchor_label" }}">#</a>
</span> </span>
{{ end }} {{ end }}
</h{{ .Level }}> </h{{ .Level }}>
+93 -40
View File
@@ -1,56 +1,109 @@
{{ define "RenderImageSimple" -}} {{- define "RenderImageSimple" -}}
<img class="my-0 rounded-md" loading="lazy" alt="{{ .alt }}" src="{{ .src }}"> {{- $imgObj := .imgObj -}}
{{- end }} {{- $src := .src -}}
{{- $alt := .alt -}}
{{ define "RenderImageResponsive" -}}
<img <img
class="my-0 rounded-md" class="my-0 rounded-md"
loading="lazy" loading="lazy"
decoding="async" decoding="async"
fetchpriority="low" fetchpriority="low"
alt="{{ .alt }}" alt="{{ $alt }}"
srcset=" src="{{ $src }}"
{{ (.resource.Resize "330x").RelPermalink }} 330w, {{ with $imgObj -}}
{{ (.resource.Resize "660x").RelPermalink }} 660w, {{ with $imgObj.Width }}width="{{ . }}"{{ end }}
{{ (.resource.Resize "1280x").RelPermalink }} 1280w {{ with $imgObj.Height }}height="{{ . }}"{{ end }}
" {{- end }}>
data-zoom-src="{{ .resource.RelPermalink }}" {{- end -}}
src="{{ .resource.RelPermalink }}">
{{- end }}
{{ define "RenderImageCaption" -}} {{- define "RenderImageResponsive" -}}
{{- with .caption }} {{/* Responsive Image
The current setting sizes="(min-width: 768px) 50vw, 65vw" makes the iPhone 16 and 16 Pro
select a smaller image, while the iPhone 16 Pro Max selects a larger image.
Steps:
1. Check the media queries in the `sizes` property.
2. Find the first matching value. For example, on a mobile device with a CSS pixel width
of 390px and DPR = 3 (iPhone 13), given setting sizes="(min-width: 768px) 50vw, 100vw",
it matches the `100vw` option.
3. Calculate the optimal image size: 390 × 3 × 100% (100vw) = 1170.
4. Find the corresponding match in the `srcset`.
To make the browser select a smaller image on mobile devices
override the template and change the `sizes` property to "(min-width: 768px) 50vw, 30vw"
The sizes="auto" is valid only when loading="lazy".
*/}}
{{- $imgObj := .imgObj -}}
{{- $alt := .alt -}}
{{- $originalWidth := $imgObj.Width -}}
{{- $img800 := $imgObj -}}
{{- $img1280 := $imgObj -}}
{{- if gt $originalWidth 800 -}}
{{- $img800 = $imgObj.Resize "800x" -}}
{{- end -}}
{{- if gt $originalWidth 1280 -}}
{{- $img1280 = $imgObj.Resize "1280x" -}}
{{- end -}}
{{- $srcset := printf "%s 800w, %s 1280w" $img800.RelPermalink $img1280.RelPermalink -}}
<img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="auto"
alt="{{ $alt }}"
{{ with $imgObj.Width }}width="{{ . }}"{{ end }}
{{ with $imgObj.Height }}height="{{ . }}"{{ end }}
src="{{ $img800.RelPermalink }}"
srcset="{{ $srcset }}"
sizes="(min-width: 768px) 50vw, 65vw"
data-zoom-src="{{ $imgObj.RelPermalink }}">
{{- end -}}
{{- define "RenderImageCaption" -}}
{{- with .caption -}}
<figcaption>{{ . | markdownify }}</figcaption> <figcaption>{{ . | markdownify }}</figcaption>
{{- end }} {{- end -}}
{{- end }} {{- end -}}
{{- $disableImageOptimizationMD := .Page.Site.Params.disableImageOptimizationMD | default false }} {{- $disableImageOptimizationMD := .Page.Site.Params.disableImageOptimizationMD | default false -}}
{{- $urlStr := .Destination | safeURL -}} {{- $urlStr := .Destination | safeURL -}}
{{- $url := urls.Parse $urlStr -}} {{- $url := urls.Parse $urlStr -}}
{{- $altText := .Text }} {{- $altText := .Text -}}
{{- $caption := .Title }} {{- $caption := .Title -}}
{{- $isRemote := findRE "^(https?|data)" $url.Scheme }} {{- $isRemote := findRE "^(https?|data)" $url.Scheme -}}
{{- $resource := "" }} {{- $resource := "" -}}
{{- if not $isRemote }} {{- if not $isRemote -}}
{{- $resource = or ($.Page.Resources.GetMatch $urlStr) (resources.Get $urlStr) }} {{- $resource = or ($.Page.Resources.GetMatch $urlStr) (resources.Get $urlStr) -}}
{{- end }} {{- end -}}
<figure> <figure>
{{- if $isRemote }} {{- if $isRemote -}}
{{ template "RenderImageSimple" (dict "src" $urlStr "alt" $altText) }} {{- template "RenderImageSimple" (dict "imgObj" "" "src" $urlStr "alt" $altText) -}}
{{- else if $resource }} {{- else if $resource -}}
{{- $isSVG := eq $resource.MediaType.SubType "svg" }} {{- $isSVG := eq $resource.MediaType.SubType "svg" -}}
{{- $shouldOptimize := and (not $disableImageOptimizationMD) (not $isSVG) }} {{- $shouldOptimize := and (not $disableImageOptimizationMD) (not $isSVG) -}}
{{- if $shouldOptimize }} {{- if $shouldOptimize -}}
{{ template "RenderImageResponsive" (dict "resource" $resource "alt" $altText) }} {{- template "RenderImageResponsive" (dict "imgObj" $resource "alt" $altText) -}}
{{- else }} {{- else -}}
{{ template "RenderImageSimple" (dict "src" $resource.RelPermalink "alt" $altText) }} {{/* Not optimize image
{{- end }} If it is an SVG file, pass the permalink
{{- else }} Otherwise, pass the resource to allow width and height attributes
{{ template "RenderImageSimple" (dict "src" $urlStr "alt" $altText) }} */}}
{{- end }} {{- if $isSVG -}}
{{- template "RenderImageSimple" (dict "imgObj" "" "src" $resource.RelPermalink "alt" $altText) -}}
{{- else -}}
{{- template "RenderImageSimple" (dict "imgObj" $resource "src" $resource.RelPermalink "alt" $altText) -}}
{{- end -}}
{{- end -}}
{{- else -}}
{{- template "RenderImageSimple" (dict "imgObj" "" "src" $urlStr "alt" $altText) -}}
{{- end -}}
{{ template "RenderImageCaption" (dict "caption" $caption) }} {{- template "RenderImageCaption" (dict "caption" $caption) -}}
</figure> </figure>
+13 -15
View File
@@ -1,19 +1,17 @@
<!doctype html> <!doctype html>
<html <html
lang="{{ with site.Params.isoCode | default (site.LanguageCode | default " en") }}{{- . -}}{{ end }}" lang="{{ with site.Params.isoCode | default (site.LanguageCode | default `en`) }}{{- . -}}{{ end }}"
dir="{{ if site.Params.rtl | default false -}} dir="{{ cond (site.Params.rtl | default false) `rtl` `ltr` }}"
rtl
{{- else -}}
ltr
{{- end }}"
class="scroll-smooth" class="scroll-smooth"
data-default-appearance="{{ site.Params.defaultAppearance | default " light" }}" data-default-appearance="{{ site.Params.defaultAppearance | default `light` }}"
data-auto-appearance="{{ site.Params.autoSwitchAppearance | default " true" }}"> data-auto-appearance="{{ site.Params.autoSwitchAppearance | default `true` }}">
{{- partial "head.html" . -}} {{- partial "head.html" . -}}
{{- partialCached "init.html" . -}}
{{ $bodyLayout := "flex flex-col h-screen m-auto leading-7 max-w-7xl px-6 sm:px-14 md:px-24 lg:px-32" }}
<body {{ $bodyColor := "text-lg bg-neutral text-neutral-900 dark:bg-neutral-800 dark:text-neutral" }}
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 scrollbar-thin scrollbar-track-neutral-200 scrollbar-thumb-neutral-400 dark:scrollbar-track-neutral-800 dark:scrollbar-thumb-neutral-600"> {{ $bodyScrollbar := "scrollbar-thin scrollbar-track-neutral-200 scrollbar-thumb-neutral-400 dark:scrollbar-track-neutral-800 dark:scrollbar-thumb-neutral-600" }}
<body class="{{ $bodyLayout }} {{ $bodyColor }} {{ $bodyScrollbar }}">
<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"
@@ -31,7 +29,7 @@
<div class="relative flex flex-col grow"> <div class="relative flex flex-col grow">
<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 1) }} {{ if and (site.Params.footer.showScrollToTop | default true) }}
{{- partial "scroll-to-top.html" . -}} {{- partial "scroll-to-top.html" . -}}
{{ end }} {{ end }}
</main> </main>
@@ -48,9 +46,9 @@
src="https://cdnjs.buymeacoffee.com/1.0.0/widget.prod.min.js" src="https://cdnjs.buymeacoffee.com/1.0.0/widget.prod.min.js"
data-id="{{ site.Params.buymeacoffee.identifier }}" data-id="{{ site.Params.buymeacoffee.identifier }}"
data-description="Support me on Buy me a coffee!" data-description="Support me on Buy me a coffee!"
data-message="{{ site.Params.buymeacoffee.globalWidgetMessage | default "" }}" {{ with site.Params.buymeacoffee.globalWidgetMessage }}data-message="{{ . }}"{{ end }}
data-color="{{ site.Params.buymeacoffee.globalWidgetColor | default "#FFDD00" }}" {{ with site.Params.buymeacoffee.globalWidgetColor | default `#FFDD00` }}data-color="{{ . }}"{{ end }}
data-position="{{ site.Params.buymeacoffee.globalWidgetPosition | default "Left" }}" {{ with site.Params.buymeacoffee.globalWidgetPosition }}data-position="{{ . }}"{{ end }}
data-x_margin="18" data-x_margin="18"
data-y_margin="18"></script> data-y_margin="18"></script>
{{ end }} {{ end }}
+2 -6
View File
@@ -34,17 +34,13 @@
{{ $enableToc := site.Params.article.showTableOfContents | default false }} {{ $enableToc := site.Params.article.showTableOfContents | default false }}
{{ $enableToc = .Params.showTableOfContents | default $enableToc }} {{ $enableToc = .Params.showTableOfContents | default $enableToc }}
{{ $showToc := and $enableToc (in .TableOfContents "<ul") }} {{ $showToc := and $enableToc (in .TableOfContents "<ul") }}
{{ $showRelated := site.Params.article.showRelatedPosts | default false }}
{{ $topClass := cond (hasPrefix site.Params.header.layout "fixed") "lg:top-[140px]" "lg:top-10" }} {{ $topClass := cond (hasPrefix site.Params.header.layout "fixed") "lg:top-[140px]" "lg:top-10" }}
{{ if or $showToc $showRelated }} {{ if $showToc }}
<div class="order-first lg:ml-auto px-0 lg:order-last lg:ps-8"> <div class="order-first lg:ml-auto px-0 lg:order-last lg:ps-8 lg:max-w-2xs">
<div class="toc ps-5 print:hidden lg:sticky {{ $topClass }}"> <div class="toc ps-5 print:hidden lg:sticky {{ $topClass }}">
{{ if $showToc }} {{ if $showToc }}
{{ partial "toc.html" . }} {{ partial "toc.html" . }}
{{ end }} {{ end }}
{{ if $showRelated }}
sd
{{ end }}
</div> </div>
</div> </div>
{{ end }} {{ end }}
+3 -2
View File
@@ -1,6 +1,7 @@
{{ define "main" }} {{ define "main" }}
{{ .Scratch.Set "scope" "term" }} {{ .Scratch.Set "scope" "term" }}
{{ if site.Params.term.showHero | default false }} {{ $showHero := .Params.showHero | default site.Params.term.showHero | default false }}
{{ if $showHero }}
{{ $heroStyle := print "hero/" site.Params.term.heroStyle ".html" }} {{ $heroStyle := print "hero/" site.Params.term.heroStyle ".html" }}
{{ if templates.Exists ( printf "partials/%s" $heroStyle ) }} {{ if templates.Exists ( printf "partials/%s" $heroStyle ) }}
{{ partial $heroStyle . }} {{ partial $heroStyle . }}
@@ -10,7 +11,7 @@
{{- end -}} {{- end -}}
<header> <header class="mt-5">
{{ if .Params.showBreadcrumbs | default (site.Params.term.showBreadcrumbs | default false) }} {{ if .Params.showBreadcrumbs | default (site.Params.term.showBreadcrumbs | default false) }}
{{ partial "breadcrumbs.html" . }} {{ partial "breadcrumbs.html" . }}
{{ end }} {{ end }}
+3 -2
View File
@@ -1,6 +1,7 @@
{{ define "main" }} {{ define "main" }}
{{ .Scratch.Set "scope" "list" }} {{ .Scratch.Set "scope" "list" }}
{{ if site.Params.taxonomy.showHero | default false }} {{ $showHero := .Params.showHero | default site.Params.taxonomy.showHero | default false }}
{{ if $showHero }}
{{ $heroStyle := print "hero/" site.Params.taxonomy.heroStyle ".html" }} {{ $heroStyle := print "hero/" site.Params.taxonomy.heroStyle ".html" }}
{{ if templates.Exists ( printf "partials/%s" $heroStyle ) }} {{ if templates.Exists ( printf "partials/%s" $heroStyle ) }}
{{ partial $heroStyle . }} {{ partial $heroStyle . }}
@@ -10,7 +11,7 @@
{{- end -}} {{- end -}}
<header> <header class="mt-5">
{{ if .Params.showBreadcrumbs | default (site.Params.taxonomy.showBreadcrumbs | default false) }} {{ if .Params.showBreadcrumbs | default (site.Params.taxonomy.showBreadcrumbs | default false) }}
{{ partial "breadcrumbs.html" . }} {{ partial "breadcrumbs.html" . }}
{{ end }} {{ end }}
+8 -8
View File
@@ -1,12 +1,12 @@
{{ with site.Params.fathomAnalytics.site }} {{ if site.Params.fathomAnalytics.site }}
{{ partial "analytics/fathom.html" }} {{ partial "analytics/fathom.html" . }}
{{ end }} {{ end }}
{{ with site.Config.Services.GoogleAnalytics.ID }} {{ if site.Config.Services.GoogleAnalytics.ID }}
{{ partial "analytics/ga.html" }} {{ partial "analytics/ga.html" . }}
{{ end }} {{ end }}
{{ with site.Params.umamiAnalytics.websiteid }} {{ if site.Params.umamiAnalytics.websiteid }}
{{ partial "analytics/umami.html" }} {{ partial "analytics/umami.html" . }}
{{ end }} {{ end }}
{{ with site.Params.selineAnalytics.token }} {{ if site.Params.selineAnalytics.token }}
{{ partial "analytics/seline.html" }} {{ partial "analytics/seline.html" . }}
{{ end }} {{ end }}
@@ -1,5 +0,0 @@
{{ with .Params.externalUrl }}
href="{{ . }}" target="_blank" rel="external"
{{ else }}
href="{{ .RelPermalink }}"
{{- end -}}
+92 -72
View File
@@ -1,95 +1,115 @@
{{/* Used by
1. article shortcode
The four variants of article-link are very similar. Despite appearances, as of df859f:
- _shortcode.html uses $page := $target, while the others use $page := .Page
- card-related.html does not have the hideFeatureImage option, while the others do
$page is added intentionally to prevent small differences inside
*/}}
{{ $target := .target }} {{ $target := .target }}
{{ $shortcodeShowSummary := .showSummary }} {{ $shortcodeShowSummary := .showSummary }}
{{ $shortcodeCompactSummary := .compactSummary }} {{ $shortcodeCompactSummary := .compactSummary }}
{{ $constrainItemsWidth := site.Params.list.constrainItemsWidth | default false }} {{ $constrainItemsWidth := site.Params.list.constrainItemsWidth | default false }}
{{ $disableImageOptimization := site.Params.disableImageOptimization | default false }} {{ $disableImageOptimization := site.Store.Get "disableImageOptimization" }}
{{ $articleClasses := "group-hover-card group flex flex-wrap md:flex-nowrap article relative" }} {{ $cardClasses := "flex flex-col md:flex-row relative" }}
{{ if site.Params.list.showCards }} {{ $imgWrapperClasses := "" }}
{{ $articleClasses = delimit (slice $articleClasses "border border-neutral-200 dark:border-neutral-700 border-2 rounded-md overflow-hidden") " " }} {{ $cardContentClasses := "" }}
{{ else }}
{{ $articleClasses = delimit (slice $articleClasses "") " " }}
{{ end }}
{{ $articleImageClasses := "w-full md:w-auto h-full thumbnail nozoom" }}
{{ if site.Params.list.showCards }} {{ if site.Params.list.showCards }}
{{ $articleImageClasses = delimit (slice $articleImageClasses "") " " }} {{ $cardClasses = printf "%s overflow-hidden rounded-md border-2 border-neutral-200 dark:border-neutral-700" $cardClasses }}
{{ $imgWrapperClasses = "" }}
{{ $cardContentClasses = printf "%s p-4 pt-2" $cardContentClasses }}
{{ else }} {{ else }}
{{ $articleImageClasses = delimit (slice $articleImageClasses "thumbnailshadow md:mr-7") " " }} {{ $cardClasses = printf "%s" $cardClasses }}
{{ end }} {{ $imgWrapperClasses = printf "%s thumbnail-shadow md:mr-7" $imgWrapperClasses }}
{{ $cardContentClasses = printf "%s mt-3 md:mt-0" $cardContentClasses }}
{{ $articleInnerClasses := "" }}
{{ if site.Params.list.showCards }}
{{ $articleInnerClasses = delimit (slice $articleInnerClasses "p-2.5 pl-4 pb-0") " " }}
{{ else }}
{{ $articleInnerClasses = delimit (slice $articleInnerClasses "mt-3 md:mt-0") " " }}
{{ end }} {{ end }}
{{ if $constrainItemsWidth }} {{ if $constrainItemsWidth }}
{{ $articleClasses = delimit (slice $articleClasses "max-w-prose") " " }} {{ $cardClasses = printf "%s max-w-prose" $cardClasses }}
{{ end }}
{{ $page := $target }}
{{ $featured := "" }}
{{ $featuredURL := "" }}
{{ if not $target.Params.hideFeatureImage }}
{{/* frontmatter */}}
{{ with $page }}
{{ with .Params.featureimage }}
{{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
{{ if site.Params.hotlinkFeatureImage }}
{{ $featuredURL = . }}
{{ else }}
{{ $featured = resources.GetRemote . }}
{{ end }}
{{ else }}
{{ $featured = resources.Get . }}
{{ end }}
{{ end }}
{{/* page resources */}}
{{ if not (or $featured $featuredURL) }}
{{ $images := .Resources.ByType "image" }}
{{ range slice "*feature*" "*cover*" "*thumbnail*" }}
{{ if not $featured }}{{ $featured = $images.GetMatch . }}{{ end }}
{{ end }}
{{ end }}
{{/* fallback to default */}}
{{ if not (or $featured $featuredURL) }}
{{ $default := site.Store.Get "defaultFeaturedImage" }}
{{ if $default.url }}
{{ $featuredURL = $default.url }}
{{ else if $default.obj }}
{{ $featured = $default.obj }}
{{ end }}
{{ end }}
{{/* generate image URL if not hotlink */}}
{{ if not $featuredURL }}
{{ with $featured }}
{{ $featuredURL = .RelPermalink }}
{{ if not (or $disableImageOptimization (eq .MediaType.SubType "svg")) }}
{{ $featuredURL = (.Resize "600x").RelPermalink }}
{{ end }}
{{ end }}
{{ end }}
{{ end }}
{{ end }} {{ end }}
<div class="{{ $articleClasses }}"> <article class="{{ $cardClasses }}">
{{ with $featuredURL }}
<div class="flex-none relative overflow-hidden {{ $imgWrapperClasses }} thumbnail">
<img
src="{{ . }}"
alt="{{ with $target.Params.featuredImageAlt }}{{ . }}{{ else }}{{ $target.Title | emojify }}{{ end }}"
loading="lazy"
decoding="async"
class="not-prose absolute inset-0 w-full h-full object-cover">
</div>
{{ end }}
<div class="{{ $cardContentClasses }}">
<header class="items-center text-start text-xl font-semibold">
<a <a
{{ partial "article-link/_external-link.html" $target | safeHTMLAttr }} {{ with .Params.externalUrl }}
class="absolute inset-0" href="{{ . }}" target="_blank" rel="external"
aria-label="{{ $.Title }}"></a>
{{- with $target.Params.images -}}
{{- range first 6 . }}
<meta property="og:image" content="{{ . | absURL }}">
{{ end -}}
{{- else -}}
{{- $images := $target.Resources.ByType "image" -}}
{{- $featured := $images.GetMatch "*feature*" -}}
{{- if not $featured }}{{ $featured = $images.GetMatch "{*cover*,*thumbnail*}" }}{{ end -}}
{{ if and $target.Params.featureimage (not $featured) }}
{{- $url:= $target.Params.featureimage -}}
{{ $featured = resources.GetRemote $url }}
{{ end }}
{{- if not $featured }}
{{ with site.Params.defaultFeaturedImage }}{{ $featured = resources.Get . }}{{ end }}
{{ end -}}
{{ if $target.Params.hideFeatureImage }}{{ $featured = false }}{{ end }}
{{- with $featured -}}
{{ if or $disableImageOptimization (strings.HasSuffix $featured ".svg") }}
{{ with . }}
<div class="{{ $articleImageClasses }}" style="background-image:url({{ .RelPermalink }});"></div>
{{ end }}
{{ else }} {{ else }}
{{ with .Resize "600x" }} href="{{ .RelPermalink }}"
<div class="{{ $articleImageClasses }}" style="background-image:url({{ .RelPermalink }});"></div>
{{ end }} {{ end }}
{{ end }} class="not-prose before:absolute before:inset-0 decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 hover:underline hover:underline-offset-2">
{{- else -}} <h2>
{{- with site.Params.images }}
<meta property="og:image" content="{{ index . 0 | absURL }}">
{{ end -}}
{{- end -}}
{{- end -}}
<div class="{{ $articleInnerClasses }}">
<div class="items-center text-start text-xl font-semibold">
{{ with $target.Params.externalUrl }}
<div>
<div
class="group-hover-card-title decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 group-hover:underline group-hover:underline-offset-2">
{{ $target.Title | emojify }} {{ $target.Title | emojify }}
{{ if $target.Params.externalUrl }}
<span class="cursor-default align-top text-xs text-neutral-400 dark:text-neutral-500"> <span class="cursor-default align-top text-xs text-neutral-400 dark:text-neutral-500">
<span class="rtl:hidden">&#8599;</span> <span class="rtl:hidden">&#8599;</span>
<span class="ltr:hidden">&#8598;</span> <span class="ltr:hidden">&#8598;</span>
</span> </span>
</div>
</div>
{{ else }}
<div
class="group-hover-card-title decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 group-hover:underline group-hover:underline-offset-2"
href="{{ $target.RelPermalink }}">
{{ $target.Title | emojify }}
</div>
{{ end }} {{ end }}
</h2>
</a>
{{ if and $target.Draft site.Params.article.showDraftLabel }} {{ if and $target.Draft site.Params.article.showDraftLabel }}
<div class="ms-2"> <div class="ms-2">
{{ partial "badge.html" (i18n "article.draft" | emojify) }} {{ partial "badge.html" (i18n "article.draft" | emojify) }}
@@ -98,8 +118,8 @@
{{ if templates.Exists "partials/extend-article-link.html" }} {{ if templates.Exists "partials/extend-article-link.html" }}
{{ partial "extend-article-link.html" $target }} {{ partial "extend-article-link.html" $target }}
{{ end }} {{ end }}
</div> </header>
<div class="group-hover-cancel text-sm text-neutral-500 dark:text-neutral-400"> <div class="text-sm text-neutral-500 dark:text-neutral-400">
{{ partial "article-meta/basic.html" $target }} {{ partial "article-meta/basic.html" $target }}
</div> </div>
{{ $showSummary := false }} {{ $showSummary := false }}
@@ -122,4 +142,4 @@
</div> </div>
{{ end }} {{ end }}
</div> </div>
</div> </article>
+76 -49
View File
@@ -1,67 +1,94 @@
{{ $disableImageOptimization := .Page.Site.Params.disableImageOptimization | default false }} {{/* Used by
<div 1. layouts/partials/related.html (related articles in single page)
class="group-hover-card group relative min-h-full min-w-full overflow-hidden rounded border border-2 border-neutral-200 shadow-2xl dark:border-neutral-700"> */}}
<a {{ $disableImageOptimization := site.Store.Get "disableImageOptimization" }}
{{ partial "article-link/_external-link.html" . | safeHTMLAttr }}
class="absolute inset-0" {{ $page := .Page }}
aria-label="{{ $.Title }}"></a> {{ $featured := "" }}
{{- with $.Params.images -}} {{ $featuredURL := "" }}
{{- range first 6 . }} {{/* frontmatter */}}
<meta property="og:image" content="{{ . | absURL }}"> {{ with $page }}
{{ end -}} {{ with .Params.featureimage }}
{{- else -}} {{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
{{- $images := $.Resources.ByType "image" -}} {{ if site.Params.hotlinkFeatureImage }}
{{- $featured := $images.GetMatch "*feature*" -}} {{ $featuredURL = . }}
{{- if not $featured }}{{ $featured = $images.GetMatch "{*cover*,*thumbnail*}" }}{{ end -}} {{ else }}
{{ if and .Params.featureimage (not $featured) }} {{ $featured = resources.GetRemote . }}
{{- $url:= .Params.featureimage -}}
{{ $featured = resources.GetRemote $url }}
{{ end }}
{{- if not $featured }}
{{ with .Site.Params.defaultFeaturedImage }}{{ $featured = resources.Get . }}{{ end }}
{{ end -}}
{{- with $featured -}}
{{ if or $disableImageOptimization (strings.HasSuffix $featured ".svg") }}
{{ with . }}
<div
class="thumbnail_card_related nozoom w-full"
style="background-image:url({{ .RelPermalink }});"></div>
{{ end }} {{ end }}
{{ else }} {{ else }}
{{ with .Resize "600x" }} {{ $featured = resources.Get . }}
<div
class="thumbnail_card_related nozoom w-full"
style="background-image:url({{ .RelPermalink }});"></div>
{{ end }} {{ end }}
{{ end }} {{ end }}
{{- else -}}
{{- with $.Site.Params.images }} {{/* page resources */}}
<meta property="og:image" content="{{ index . 0 | absURL }}"> {{ if not (or $featured $featuredURL) }}
{{ end -}} {{ $images := .Resources.ByType "image" }}
{{- end -}} {{ range slice "*feature*" "*cover*" "*thumbnail*" }}
{{- end -}} {{ if not $featured }}{{ $featured = $images.GetMatch . }}{{ end }}
{{ end }}
{{ end }}
{{/* fallback to default */}}
{{ if not (or $featured $featuredURL) }}
{{ $default := site.Store.Get "defaultFeaturedImage" }}
{{ if $default.url }}
{{ $featuredURL = $default.url }}
{{ else if $default.obj }}
{{ $featured = $default.obj }}
{{ end }}
{{ end }}
{{/* generate image URL if not hotlink */}}
{{ if not $featuredURL }}
{{ with $featured }}
{{ $featuredURL = .RelPermalink }}
{{ if not (or $disableImageOptimization (eq .MediaType.SubType "svg")) }}
{{ $featuredURL = (.Resize "600x").RelPermalink }}
{{ end }}
{{ end }}
{{ end }}
{{ end }}
<article
class="relative min-h-full min-w-full overflow-hidden rounded border border-2 border-neutral-200 shadow-2xl dark:border-neutral-700">
{{ with $featuredURL }}
<div class="flex-none relative overflow-hidden thumbnail_card_related">
<img
src="{{ . }}"
alt="{{ $page.Title }}"
loading="lazy"
decoding="async"
fetchpriority="low"
class="not-prose absolute inset-0 w-full h-full object-cover">
</div>
{{ end }}
{{ if and .Draft .Site.Params.article.showDraftLabel }} {{ if and .Draft .Site.Params.article.showDraftLabel }}
<span class="absolute top-0 right-0 m-2"> <span class="absolute top-0 right-0 m-2">
{{ partial "badge.html" (i18n "article.draft" | emojify) }} {{ partial "badge.html" (i18n "article.draft" | emojify) }}
</span> </span>
{{ end }} {{ end }}
<div class="px-6 py-4"> <div class="px-6 py-4">
<header>
<a
{{ with .Params.externalUrl }} {{ with .Params.externalUrl }}
<div href="{{ . }}" target="_blank" rel="external"
class="group-hover-card-title decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 group-hover:underline group-hover:underline-offset-2"> {{ else }}
{{ $.Title | emojify }} href="{{ .RelPermalink }}"
{{ end }}
class="not-prose before:absolute before:inset-0 decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 hover:underline hover:underline-offset-2">
<h2>
{{ .Title | emojify }}
{{ if .Params.externalUrl }}
<span class="cursor-default align-top text-xs text-neutral-400 dark:text-neutral-500"> <span class="cursor-default align-top text-xs text-neutral-400 dark:text-neutral-500">
<span class="rtl:hidden">&#8599;</span> <span class="rtl:hidden">&#8599;</span>
<span class="ltr:hidden">&#8598;</span> <span class="ltr:hidden">&#8598;</span>
</span> </span>
</div>
{{ else }}
<div
class="group-hover-card-title decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 group-hover:underline group-hover:underline-offset-2">
{{ .Title | emojify }}
</div>
{{ end }} {{ end }}
<div class="group-hover-cancel text-sm text-neutral-500 dark:text-neutral-400"> </h2>
</a>
</header>
<div class="text-sm text-neutral-500 dark:text-neutral-400">
{{ partial "article-meta/basic.html" . }} {{ partial "article-meta/basic.html" . }}
</div> </div>
{{ if .Params.showSummary | default (.Site.Params.list.showSummary | default false) }} {{ if .Params.showSummary | default (.Site.Params.list.showSummary | default false) }}
@@ -69,4 +96,4 @@
{{ end }} {{ end }}
</div> </div>
<div class="px-6 pt-4 pb-2"></div> <div class="px-6 pt-4 pb-2"></div>
</div> </article>
+79 -46
View File
@@ -1,64 +1,97 @@
{{ $disableImageOptimization := .Page.Site.Params.disableImageOptimization | default false }} {{/* Used by
<div 1. list.html and term.html (when the cardView option is enabled)
class="group-hover-card group relative min-h-full min-w-full overflow-hidden rounded border border-2 border-neutral-200 shadow-2xl dark:border-neutral-700"> 2. Recent articles template (when the cardView option is enabled)
<a 3. Shortcode list.html
{{ partial "article-link/_external-link.html" . | safeHTMLAttr }} */}}
class="absolute inset-0" {{ $disableImageOptimization := site.Store.Get "disableImageOptimization" }}
aria-label="{{ $.Title }}"></a>
{{- with $.Params.images -}} {{ $page := .Page }}
{{- range first 6 . }} {{ $featured := "" }}
<meta property="og:image" content="{{ . | absURL }}"> {{ $featuredURL := "" }}
{{ end -}} {{ if not .Params.hideFeatureImage }}
{{- else -}} {{/* frontmatter */}}
{{- $images := $.Resources.ByType "image" -}} {{ with $page }}
{{- $featured := $images.GetMatch "*feature*" -}} {{ with .Params.featureimage }}
{{- if not $featured }}{{ $featured = $images.GetMatch "{*cover*,*thumbnail*}" }}{{ end -}} {{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
{{ if and .Params.featureimage (not $featured) }} {{ if site.Params.hotlinkFeatureImage }}
{{- $url:= .Params.featureimage -}} {{ $featuredURL = . }}
{{ $featured = resources.GetRemote $url }} {{ else }}
{{ end }} {{ $featured = resources.GetRemote . }}
{{- if not $featured }}
{{ with .Site.Params.defaultFeaturedImage }}{{ $featured = resources.Get . }}{{ end }}
{{ end -}}
{{ if .Params.hideFeatureImage }}{{ $featured = false }}{{ end }}
{{- with $featured -}}
{{ if or $disableImageOptimization (strings.HasSuffix $featured ".svg") }}
{{ with . }}
<div class="thumbnail_card nozoom w-full" style="background-image:url({{ .RelPermalink }});"></div>
{{ end }} {{ end }}
{{ else }} {{ else }}
{{ with .Resize "600x" }} {{ $featured = resources.Get . }}
<div class="thumbnail_card nozoom w-full" style="background-image:url({{ .RelPermalink }});"></div>
{{ end }} {{ end }}
{{ end }} {{ end }}
{{- else -}}
{{- with $.Site.Params.images }} {{/* page resources */}}
<meta property="og:image" content="{{ index . 0 | absURL }}"> {{ if not (or $featured $featuredURL) }}
{{ end -}} {{ $images := .Resources.ByType "image" }}
{{- end -}} {{ range slice "*feature*" "*cover*" "*thumbnail*" }}
{{- end -}} {{ if not $featured }}{{ $featured = $images.GetMatch . }}{{ end }}
{{ end }}
{{ end }}
{{/* fallback to default */}}
{{ if not (or $featured $featuredURL) }}
{{ $default := site.Store.Get "defaultFeaturedImage" }}
{{ if $default.url }}
{{ $featuredURL = $default.url }}
{{ else if $default.obj }}
{{ $featured = $default.obj }}
{{ end }}
{{ end }}
{{/* generate image URL if not hotlink */}}
{{ if not $featuredURL }}
{{ with $featured }}
{{ $featuredURL = .RelPermalink }}
{{ if not (or $disableImageOptimization (eq .MediaType.SubType "svg")) }}
{{ $featuredURL = (.Resize "600x").RelPermalink }}
{{ end }}
{{ end }}
{{ end }}
{{ end }}
{{ end }}
<article
class="relative min-h-full min-w-full overflow-hidden rounded border border-2 border-neutral-200 shadow-2xl dark:border-neutral-700">
{{ with $featuredURL }}
<div class="flex-none relative overflow-hidden thumbnail_card">
<img
src="{{ . }}"
alt="{{ $page.Title | plainify }}"
loading="lazy"
decoding="async"
class="not-prose absolute inset-0 w-full h-full object-cover">
</div>
{{ end }}
{{ if and .Draft .Site.Params.article.showDraftLabel }} {{ if and .Draft .Site.Params.article.showDraftLabel }}
<span class="absolute top-0 right-0 m-2"> <span class="absolute top-0 right-0 m-2">
{{ partial "badge.html" (i18n "article.draft" | emojify) }} {{ partial "badge.html" (i18n "article.draft" | emojify) }}
</span> </span>
{{ end }} {{ end }}
<div class="px-6 py-4"> <div class="px-6 py-4">
<header>
<a
{{ with .Params.externalUrl }} {{ with .Params.externalUrl }}
<div href="{{ . }}" target="_blank" rel="external"
class="group-hover-card-title decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 group-hover:underline group-hover:underline-offset-2"> {{ else }}
{{ $.Title | emojify }} href="{{ .RelPermalink }}"
{{ end }}
class="not-prose before:absolute before:inset-0 decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 hover:underline hover:underline-offset-2">
<h2>
{{ .Title | emojify }}
{{ if .Params.externalUrl }}
<span class="cursor-default align-top text-xs text-neutral-400 dark:text-neutral-500"> <span class="cursor-default align-top text-xs text-neutral-400 dark:text-neutral-500">
<span class="rtl:hidden">&#8599;</span> <span class="rtl:hidden">&#8599;</span>
<span class="ltr:hidden">&#8598;</span> <span class="ltr:hidden">&#8598;</span>
</span> </span>
</div>
{{ else }}
<div
class="group-hover-card-title decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 group-hover:underline group-hover:underline-offset-2">
{{ .Title | emojify }}
</div>
{{ end }} {{ end }}
<div class="group-hover-cancel text-sm text-neutral-500 dark:text-neutral-400"> </h2>
</a>
</header>
<div class="text-sm text-neutral-500 dark:text-neutral-400">
{{ partial "article-meta/basic.html" . }} {{ partial "article-meta/basic.html" . }}
</div> </div>
{{ if .Params.showSummary | default (.Site.Params.list.showSummary | default false) }} {{ if .Params.showSummary | default (.Site.Params.list.showSummary | default false) }}
@@ -66,4 +99,4 @@
{{ end }} {{ end }}
</div> </div>
<div class="px-6 pt-4 pb-2"></div> <div class="px-6 pt-4 pb-2"></div>
</div> </article>
+93 -74
View File
@@ -1,97 +1,116 @@
{{ $constrainItemsWidth := .Page.Site.Params.list.constrainItemsWidth | default false }} {{/* Used by
1. list.html and term.html (when the cardView option is not enabled)
2. Recent articles template (when the cardView option is not enabled)
3. Shortcode list.html
*/}}
{{ $constrainItemsWidth := site.Params.list.constrainItemsWidth | default false }}
{{ $disableImageOptimization := site.Store.Get "disableImageOptimization" }}
{{ $articleClasses := "group-hover-card group flex flex-wrap md:flex-nowrap article relative" }} {{ $cardClasses := "flex flex-col md:flex-row relative" }}
{{ if .Site.Params.list.showCards }} {{ $imgWrapperClasses := "" }}
{{ $articleClasses = delimit (slice $articleClasses "border border-neutral-200 dark:border-neutral-700 border-2 rounded-md overflow-hidden") " " }} {{ $cardContentClasses := "" }}
{{ if site.Params.list.showCards }}
{{ $cardClasses = printf "%s overflow-hidden rounded-md border-2 border-neutral-200 dark:border-neutral-700" $cardClasses }}
{{ $imgWrapperClasses = "" }}
{{ $cardContentClasses = printf "%s p-4" $cardContentClasses }}
{{ else }} {{ else }}
{{ $articleClasses = delimit (slice $articleClasses "") " " }} {{ $cardClasses = $cardClasses }}
{{ end }} {{ $imgWrapperClasses = printf "%s thumbnail-shadow md:mr-7" $imgWrapperClasses }}
{{ $cardContentClasses = printf "%s mt-3 md:mt-0" $cardContentClasses }}
{{ $articleImageClasses := "w-full md:w-auto h-full thumbnail nozoom" }}
{{ if .Site.Params.list.showCards }}
{{ $articleImageClasses = delimit (slice $articleImageClasses "") " " }}
{{ else }}
{{ $articleImageClasses = delimit (slice $articleImageClasses "thumbnailshadow md:mr-7") " " }}
{{ end }}
{{ $disableImageOptimization := .Page.Site.Params.disableImageOptimization | default false }}
{{ $articleInnerClasses := "" }}
{{ if .Site.Params.list.showCards }}
{{ $articleInnerClasses = delimit (slice $articleInnerClasses "p-4") " " }}
{{ else }}
{{ $articleInnerClasses = delimit (slice $articleInnerClasses "mt-3 md:mt-0") " " }}
{{ end }} {{ end }}
{{ if $constrainItemsWidth }} {{ if $constrainItemsWidth }}
{{ $articleClasses = delimit (slice $articleClasses "max-w-prose") " " }} {{ $cardClasses = printf "%s max-w-prose" $cardClasses }}
{{ end }}
{{ $page := .Page }}
{{ $featured := "" }}
{{ $featuredURL := "" }}
{{ if not .Params.hideFeatureImage }}
{{/* frontmatter */}}
{{ with $page }}
{{ with .Params.featureimage }}
{{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
{{ if site.Params.hotlinkFeatureImage }}
{{ $featuredURL = . }}
{{ else }}
{{ $featured = resources.GetRemote . }}
{{ end }}
{{ else }}
{{ $featured = resources.Get . }}
{{ end }}
{{ end }}
{{/* page resources */}}
{{ if not (or $featured $featuredURL) }}
{{ $images := .Resources.ByType "image" }}
{{ range slice "*feature*" "*cover*" "*thumbnail*" }}
{{ if not $featured }}{{ $featured = $images.GetMatch . }}{{ end }}
{{ end }}
{{ end }}
{{/* fallback to default */}}
{{ if not (or $featured $featuredURL) }}
{{ $default := site.Store.Get "defaultFeaturedImage" }}
{{ if $default.url }}
{{ $featuredURL = $default.url }}
{{ else if $default.obj }}
{{ $featured = $default.obj }}
{{ end }}
{{ end }}
{{/* generate image URL if not hotlink */}}
{{ if not $featuredURL }}
{{ with $featured }}
{{ $featuredURL = .RelPermalink }}
{{ if not (or $disableImageOptimization (eq .MediaType.SubType "svg")) }}
{{ $featuredURL = (.Resize "600x").RelPermalink }}
{{ end }}
{{ end }}
{{ end }}
{{ end }}
{{ end }} {{ end }}
<div class="{{ $articleClasses }}"> <article class="{{ $cardClasses }}">
{{ with $featuredURL }}
<div class="flex-none relative overflow-hidden {{ $imgWrapperClasses }} thumbnail">
<img
src="{{ . }}"
alt="{{ $.Params.featuredImageAlt | default ($.Title | emojify) }}"
loading="lazy"
decoding="async"
class="not-prose absolute inset-0 w-full h-full object-cover">
</div>
{{ end }}
<div class="{{ $cardContentClasses }}">
<header class="items-center text-start text-xl font-semibold">
<a <a
{{ partial "article-link/_external-link.html" . | safeHTMLAttr }}
class="absolute inset-0"
aria-label="{{ $.Title }}"></a>
{{- with $.Params.images -}}
{{- range first 6 . }}
<meta property="og:image" content="{{ . | absURL }}">
{{ end -}}
{{- else -}}
{{- $images := $.Resources.ByType "image" -}}
{{- $featured := $images.GetMatch "*feature*" -}}
{{- if not $featured }}{{ $featured = $images.GetMatch "{*cover*,*thumbnail*}" }}{{ end -}}
{{ if and .Params.featureimage (not $featured) }}
{{- $url:= .Params.featureimage -}}
{{ $featured = resources.GetRemote $url }}
{{ end }}
{{- if not $featured }}
{{ with .Site.Params.defaultFeaturedImage }}{{ $featured = resources.Get . }}{{ end }}
{{ end -}}
{{ if .Params.hideFeatureImage }}{{ $featured = false }}{{ end }}
{{- with $featured -}}
{{ if or $disableImageOptimization (strings.HasSuffix $featured ".svg") }}
{{ with . }}
<div class="{{ $articleImageClasses }}" style="background-image:url({{ .RelPermalink }});"></div>
{{ end }}
{{ else }}
{{ with .Resize "600x" }}
<div class="{{ $articleImageClasses }}" style="background-image:url({{ .RelPermalink }});"></div>
{{ end }}
{{ end }}
{{- else -}}
{{- with $.Site.Params.images }}
<meta property="og:image" content="{{ index . 0 | absURL }}">
{{ end -}}
{{- end -}}
{{- end -}}
<div class="{{ $articleInnerClasses }}">
<div class="items-center text-start text-xl font-semibold">
{{ with .Params.externalUrl }} {{ with .Params.externalUrl }}
<div href="{{ . }}" target="_blank" rel="external"
class="group-hover-card-title decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 group-hover:underline group-hover:underline-offset-2"> {{ else }}
{{ $.Title | emojify }} href="{{ .RelPermalink }}"
{{ end }}
class="not-prose before:absolute before:inset-0 decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 hover:underline hover:underline-offset-2">
<h2>
{{ .Title | emojify }}
{{ if .Params.externalUrl }}
<span class="cursor-default align-top text-xs text-neutral-400 dark:text-neutral-500"> <span class="cursor-default align-top text-xs text-neutral-400 dark:text-neutral-500">
<span class="rtl:hidden">&#8599;</span> <span class="rtl:hidden">&#8599;</span>
<span class="ltr:hidden">&#8598;</span> <span class="ltr:hidden">&#8598;</span>
</span> </span>
</div>
{{ else }}
<div
class="group-hover-card-title decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 group-hover:underline group-hover:underline-offset-2">
{{ .Title | emojify }}
</div>
{{ end }} {{ end }}
</h2>
</a>
{{ if and .Draft .Site.Params.article.showDraftLabel }} {{ if and .Draft .Site.Params.article.showDraftLabel }}
<div class="ms-2">{{ partial "badge.html" (i18n "article.draft" | emojify) }}</div> <div class="ms-2">{{ partial "badge.html" (i18n "article.draft" | emojify) }}</div>
{{ end }} {{ end }}
{{ if templates.Exists "partials/extend-article-link.html" }} {{ if templates.Exists "partials/extend-article-link.html" }}
{{ partial "extend-article-link.html" . }} {{ partial "extend-article-link.html" . }}
{{ end }} {{ end }}
</div> </header>
<div class="group-hover-cancel text-sm text-neutral-500 dark:text-neutral-400"> <div class="text-sm text-neutral-500 dark:text-neutral-400">
{{ partial "article-meta/basic.html" . }} {{ partial "article-meta/basic.html" . }}
</div> </div>
{{ if .Params.showSummary | default (.Site.Params.list.showSummary | default false) }} {{ if .Params.showSummary | default (.Site.Params.list.showSummary | default false) }}
@@ -99,4 +118,4 @@
{{ end }} {{ end }}
</div> </div>
<div class="px-6 pt-4 pb-2"></div> <div class="px-6 pt-4 pb-2"></div>
</div> </article>
+22 -38
View File
@@ -9,52 +9,36 @@
<div class="pt-8"> <div class="pt-8">
<hr class="border-dotted border-neutral-300 dark:border-neutral-600"> <hr class="border-dotted border-neutral-300 dark:border-neutral-600">
<div class="flex justify-between pt-3"> <div class="flex justify-between pt-3">
<span> <span class="flex flex-col">
{{ if $prev }} {{ if $prev }}
<a class="flex group mr-3" href="{{ $prev.RelPermalink }}"> <a
<span class="flex text-neutral-700 hover:text-primary-600 dark:text-neutral dark:hover:text-primary-400"
class="mr-3 text-neutral-700 group-hover:text-primary-600 ltr:inline rtl:hidden dark:text-neutral dark:group-hover:text-primary-400" href="{{ $prev.RelPermalink }}">
>&larr;</span <span class="leading-6">
> <span class="inline-block rtl:rotate-180">&larr;</span>&ensp;{{ $prev.Title | emojify }}
<span </span>
class="ml-3 text-neutral-700 group-hover:text-primary-600 ltr:hidden rtl:inline dark:text-neutral dark:group-hover:text-primary-400" </a>
>&rarr;</span
>
<span class="flex flex-col">
<span class="mt-[0.1rem] leading-6 group-hover:underline group-hover:decoration-primary-500"
>{{ $prev.Title | emojify }}</span
>
<span class="mt-[0.1rem] text-xs text-neutral-500 dark:text-neutral-400">
{{ if .Params.showDate | default (.Site.Params.article.showDate | default true) }} {{ if .Params.showDate | default (.Site.Params.article.showDate | default true) }}
<span class="ms-6 mt-1 text-xs text-neutral-500 dark:text-neutral-400">
{{ partial "meta/date.html" $prev.Date }} {{ partial "meta/date.html" $prev.Date }}
</span>
{{ end }}
{{ end }} {{ end }}
</span> </span>
</span> <span class="flex flex-col items-end">
</a>
{{ end }}
</span>
<span>
{{ if $next }} {{ if $next }}
<a class="flex text-right group ml-3" href="{{ $next.RelPermalink }}"> <a
<span class="flex flex-col"> class="flex text-right text-neutral-700 hover:text-primary-600 dark:text-neutral dark:hover:text-primary-400"
<span class="mt-[0.1rem] leading-6 group-hover:underline group-hover:decoration-primary-500" href="{{ $next.RelPermalink }}">
>{{ $next.Title | emojify }}</span <span class="leading-6">
> {{ $next.Title | emojify }}&ensp;<span class="inline-block rtl:rotate-180">&rarr;</span>
<span class="mt-[0.1rem] text-xs text-neutral-500 dark:text-neutral-400">
{{ if .Params.showDate | default (.Site.Params.article.showDate | default true) }}
{{ partial "meta/date.html" $next.Date }}
{{ end }}
</span> </span>
</span>
<span
class="ml-3 text-neutral-700 group-hover:text-primary-600 ltr:inline rtl:hidden dark:text-neutral dark:group-hover:text-primary-400"
>&rarr;</span
>
<span
class="mr-3 text-neutral-700 group-hover:text-primary-600 ltr:hidden rtl:inline dark:text-neutral dark:group-hover:text-primary-400"
>&larr;</span
>
</a> </a>
{{ if .Params.showDate | default (.Site.Params.article.showDate | default true) }}
<span class="me-6 mt-1 text-xs text-neutral-500 dark:text-neutral-400">
{{ partial "meta/date.html" $next.Date }}
</span>
{{ end }}
{{ end }} {{ end }}
</span> </span>
</div> </div>
+10 -5
View File
@@ -8,14 +8,16 @@
{{ $authorImage = resources.Get . }} {{ $authorImage = resources.Get . }}
{{ end }} {{ end }}
{{ if $authorImage }} {{ if $authorImage }}
{{ $final := $authorImage }}
{{ if not $disableImageOptimization }} {{ if not $disableImageOptimization }}
{{ $authorImage = $authorImage.Fill "192x192" }} {{ $final = $authorImage.Fill "192x192" }}
{{ end }} {{ end }}
<img <img
class="!mt-0 !mb-0 h-24 w-24 rounded-full me-4" class="!mt-0 !mb-0 h-24 w-24 rounded-full me-4"
width="96" width="96"
height="96" height="96"
src="{{ $authorImage.RelPermalink }}"> src="{{ $final.RelPermalink }}"
data-zoom-src="{{ $authorImage.RelPermalink }}">
{{ end }} {{ end }}
{{ end }} {{ end }}
<div class="place-self-center"> <div class="place-self-center">
@@ -42,9 +44,12 @@
href="{{ $link }}" href="{{ $link }}"
target="_blank" target="_blank"
aria-label="{{ $name | title }}" aria-label="{{ $name | title }}"
rel="me noopener noreferrer" title="{{ $name | title }}"
><span class="inline-block align-text-bottom">{{ partial "icon.html" $name }}</span></a rel="me noopener noreferrer">
> <span class="inline-block align-text-bottom">
{{ partial "icon.html" $name }}
</span>
</a>
{{ end }} {{ end }}
{{ end }} {{ end }}
</div> </div>
+8 -4
View File
@@ -8,26 +8,30 @@
{{ $authorImage = resources.Get . }} {{ $authorImage = resources.Get . }}
{{ end }} {{ end }}
{{ if $authorImage }} {{ if $authorImage }}
{{ $final := $authorImage }}
{{ if not $disableImageOptimization }} {{ if not $disableImageOptimization }}
{{ $authorImage = $authorImage.Fill "192x192" }} {{ $final = $authorImage.Fill "192x192" }}
{{ end }} {{ end }}
<img <img
class="!mt-0 !mb-0 h-24 w-24 rounded-full me-4" class="!mt-0 !mb-0 h-24 w-24 rounded-full me-4"
width="96" width="96"
height="96" height="96"
alt="{{ $.Site.Params.Author.name | default " Author" }}" alt="{{ $.Site.Params.Author.name | default " Author" }}"
src="{{ $authorImage.RelPermalink }}"> src="{{ $final.RelPermalink }}"
data-zoom-src="{{ $authorImage.RelPermalink }}">
{{ else }} {{ else }}
{{ $authorImage := resources.GetRemote . }} {{ $authorImage := resources.GetRemote . }}
{{ $final := $authorImage }}
{{ if not $disableImageOptimization }} {{ if not $disableImageOptimization }}
{{ $authorImage = $authorImage.Fill "192x192" }} {{ $final = $authorImage.Fill "192x192" }}
{{ end }} {{ end }}
<img <img
class="!mt-0 !mb-0 h-24 w-24 rounded-full me-4" class="!mt-0 !mb-0 h-24 w-24 rounded-full me-4"
width="96" width="96"
height="96" height="96"
alt="{{ $.Site.Params.Author.name | default " Author" }}" alt="{{ $.Site.Params.Author.name | default " Author" }}"
src="{{ $authorImage.RelPermalink }}"> src="{{ $authorImage.RelPermalink }}"
data-zoom-src="{{ $authorImage.RelPermalink }}">
{{ end }} {{ end }}
{{ end }} {{ end }}
<div class="place-self-center"> <div class="place-self-center">
+1 -1
View File
@@ -11,7 +11,7 @@
{{ end }} {{ end }}
{{ $navClass := printf "flex flex-row pb-4 text-base font-medium text-neutral-500 dark:text-neutral-400 %s" (cond $onlyIcon "overflow-x-auto py-2" "") }} {{ $navClass := printf "flex flex-row pb-4 text-base font-medium text-neutral-500 dark:text-neutral-400 %s" (cond $onlyIcon "overflow-x-auto py-2" "") }}
{{ $ulClass := printf "flex list-none %s" (cond $onlyIcon "flex-row" "flex-col sm:flex-row") }} {{ $ulClass := printf "flex list-none %s" (cond $onlyIcon "flex-row" "flex-col sm:flex-row") }}
{{ $liClass := printf "flex mb-1 text-end sm:mb-0 sm:me-7 sm:last:me-0 %s" (cond $onlyIcon "ltr:mr-4 rtl:ml-4" "") }} {{ $liClass := printf "flex mb-1 text-end sm:mb-0 sm:me-7 sm:last:me-0 %s" (cond $onlyIcon "me-4" "") }}
<nav class="{{ $navClass }}"> <nav class="{{ $navClass }}">
<ul class="{{ $ulClass }}"> <ul class="{{ $ulClass }}">
{{ range .Site.Menus.footer }} {{ range .Site.Menus.footer }}
+137 -139
View File
@@ -8,21 +8,21 @@
<meta name="theme-color"> <meta name="theme-color">
{{/* Title */}} {{/* Title */}}
{{ if .IsHome -}} {{ if .IsHome }}
<title>{{ .Site.Title | emojify }}</title> <title>{{ .Site.Title | emojify }}</title>
<meta name="title" content="{{ .Site.Title | emojify }}"> <meta name="title" content="{{ .Site.Title | emojify }}">
{{- else -}} {{ else }}
<title>{{ .Title | emojify }} &middot; {{ .Site.Title | emojify }}</title> <title>{{ .Title | emojify }} &middot; {{ .Site.Title | emojify }}</title>
<meta name="title" content="{{ .Title | emojify }} &middot; {{ .Site.Title | emojify }}"> <meta name="title" content="{{ .Title | emojify }} &middot; {{ .Site.Title | emojify }}">
{{- end }} {{ end }}
{{/* Metadata */}} {{/* Metadata */}}
{{ with (.Params.Summary | default .Params.Description) | default .Site.Params.description -}} {{ with (.Params.Summary | default .Params.Description) | default .Site.Params.description }}
<meta name="description" content="{{ . }}"> <meta name="description" content="{{ . }}">
{{- end }} {{ end }}
{{ with .Params.Tags | default .Site.Params.keywords -}} {{ with .Params.Tags | default .Site.Params.keywords }}
<meta name="keywords" content="{{ range . }}{{ . }},{{ end -}}"> <meta name="keywords" content="{{ range . }}{{ . }},{{ end }}">
{{- end }} {{ end }}
{{ with .Site.Params.robots }} {{ with .Site.Params.robots }}
<meta name="robots" content="{{ . }}"> <meta name="robots" content="{{ . }}">
{{ end }} {{ end }}
@@ -30,104 +30,51 @@
<meta name="robots" content="{{ . }}"> <meta name="robots" content="{{ . }}">
{{ end }} {{ end }}
<link rel="canonical" href="{{ .Permalink }}"> <link rel="canonical" href="{{ .Permalink }}">
{{ range .AlternativeOutputFormats -}} {{ range .AlternativeOutputFormats }}
{{ printf ` {{ printf `
<link rel="%s" type="%s" href="%s" title="%s" />` .Rel .MediaType.Type .RelPermalink ($.Site.Title | emojify) | <link rel="%s" type="%s" href="%s" title="%s" />` .Rel .MediaType.Type .RelPermalink ($.Site.Title | emojify) |
safeHTML safeHTML
}} }}
{{ end -}}
{{/* Asset bundles */}}
{{ $assets := newScratch }}
{{ $cssScheme := resources.Get (printf "css/schemes/%s.css" (.Site.Params.colorScheme | default "blowfish")) }}
{{ if not $cssScheme }}
{{ $cssScheme = resources.Get "css/schemes/blowfish.css" }}
{{ end }}
{{ $assets.Add "css" (slice $cssScheme) }}
{{ $cssMain := resources.Get "css/compiled/main.css" }}
{{ $assets.Add "css" (slice $cssMain) }}
{{ $cssCustom := resources.Get "css/custom.css" }}
{{ if $cssCustom }}
{{ $assets.Add "css" (slice $cssCustom) }}
{{ end }}
{{ if not .Site.Params.disableImageZoom | default true }}
{{ $cssZoom := resources.Get "lib/zoom/style.css" }}
{{ $assets.Add "css" (slice $cssZoom) }}
{{ end }}
{{ $bundleCSS := $assets.Get "css" | resources.Concat "css/main.bundle.css" | resources.Minify | resources.Fingerprint
(.Site.Params.fingerprintAlgorithm | default "sha512")
}}
<link
type="text/css"
rel="stylesheet"
href="{{ $bundleCSS.RelPermalink }}"
integrity="{{ $bundleCSS.Data.Integrity }}">
{{ $jsAppearance := resources.Get "js/appearance.js" }}
{{ $jsAppearance = $jsAppearance | resources.ExecuteAsTemplate "js/appearance.js" . | resources.Minify | resources.Fingerprint (.Site.Params.fingerprintAlgorithm | default "sha512") }}
<script
type="text/javascript"
src="{{ $jsAppearance.RelPermalink }}"
integrity="{{ $jsAppearance.Data.Integrity }}"></script>
{{ if .Site.Params.enableA11y | default false }}
{{ $jsA11y := resources.Get "js/a11y.js" }}
{{ $jsA11y = $jsA11y | resources.Minify | resources.Fingerprint (site.Params.fingerprintAlgorithm | default "sha512") }}
<script src="{{ $jsA11y.RelPermalink }}" integrity="{{ $jsA11y.Data.Integrity }}"></script>
{{ end }}
{{ $shouldIncludeZenMode := or (.Site.Params.enableA11y | default false) (.Params.showZenMode | default (.Site.Params.article.showZenMode | default false)) }}
{{ if and .IsPage $shouldIncludeZenMode }}
{{ $jsZenMode := resources.Get "js/zen-mode.js" }}
{{ $jsZenMode = $jsZenMode | resources.Minify | resources.Fingerprint (.Site.Params.fingerprintAlgorithm | default "sha512") }}
<script
type="text/javascript"
src="{{ $jsZenMode.RelPermalink }}"
integrity="{{ $jsZenMode.Data.Integrity }}"></script>
{{ end }}
{{ if .Site.Params.enableSearch | default false }}
{{ $jsFuse := resources.Get "lib/fuse/fuse.min.js" }}
{{ $jsSearch := resources.Get "js/search.js" }}
{{ $assets.Add "js" (slice $jsFuse $jsSearch) }}
{{ end }}
{{ if .Site.Params.enableCodeCopy | default false }}
{{ $jsCode := resources.Get "js/code.js" }}
{{ $assets.Add "js" (slice $jsCode) }}
{{ end }}
{{ if .Site.Params.rtl | default false }}
{{ $jsRTL := resources.Get "js/rtl.js" }}
{{ $assets.Add "js" (slice $jsRTL) }}
{{ end }}
{{ $jsMobileMenu := resources.Get "js/mobilemenu.js" }}
{{ $assets.Add "js" (slice $jsMobileMenu) }}
{{ $buttonLikes := resources.Get "js/button-likes.js" }}
{{ $assets.Add "js" (slice $buttonLikes) }}
{{ $katexRender := resources.Get "js/katex-render.js" }}
{{ $assets.Add "js" (slice $katexRender) }}
{{ if $assets.Get "js" }}
{{ $bundleJS := $assets.Get "js" | resources.Concat "js/main.bundle.js" | resources.Minify | resources.Fingerprint
(.Site.Params.fingerprintAlgorithm | default "sha512")
}}
<script
defer
type="text/javascript"
id="script-bundle"
src="{{ $bundleJS.RelPermalink }}"
integrity="{{ $bundleJS.Data.Integrity }}"
data-copy="{{ i18n "code.copy" }}"
data-copied="{{ i18n "code.copied" }}"></script>
{{ end }}
{{ if not .Site.Params.disableImageZoom | default true }}
{{ $zoomJS := resources.Get "lib/zoom/zoom.min.umd.js" | resources.Fingerprint (.Site.Params.fingerprintAlgorithm | default "sha512") }}
<script src="{{ $zoomJS.RelPermalink }}" integrity="{{ $zoomJS.Data.Integrity }}"></script>
{{ end }} {{ end }}
{{/* Icons */}} {{/* Me */}}
{{ if templates.Exists "partials/favicons.html" }} {{ with .Site.Params.Author.name }}
{{ partialCached "favicons.html" .Site }} <meta name="author" content="{{ . }}">
{{ end }}
{{ with .Site.Params.Author.links }}
{{ range $links := . }}
{{ range $name, $url := $links }}
{{ if not (strings.HasPrefix $url "mailto:") }}
<link href="{{ $url }}" rel="me">
{{ end }}
{{ end }}
{{ end }}
{{ end }}
{{/* Social */}}
{{ template "_internal/opengraph.html" . }}
{{ template "_internal/twitter_cards.html" . }}
{{/* Use defaultSocialImage if feature image does not exist */}}
{{ $featureImage := "" }}
{{ $pageImages := .Resources.ByType "image" }}
{{ range slice "*featured*" "*cover*" "*thumbnail*" }}
{{ if not $featureImage }}
{{ $featureImage = $pageImages.GetMatch . }}
{{ end }}
{{ end }}
{{ if not $featureImage }}
{{ with .Site.Params.defaultSocialImage }}
{{ $socialImage := "" }}
{{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
{{ $socialImage = resources.GetRemote . }}
{{ else }} {{ else }}
<link rel="apple-touch-icon" sizes="180x180" href="{{ "apple-touch-icon.png" | relURL }}"> {{ $socialImage = resources.Get . }}
<link rel="icon" type="image/png" sizes="32x32" href="{{ "favicon-32x32.png" | relURL }}"> {{ end }}
<link rel="icon" type="image/png" sizes="16x16" href="{{ "favicon-16x16.png" | relURL }}"> {{ with $socialImage }}
<link rel="manifest" href="{{ "site.webmanifest" | relURL }}"> <meta name="twitter:image" content="{{ .RelPermalink | absURL }}">
<meta property="og:image" content="{{ .RelPermalink | absURL }}">
{{ end }}
{{ end }}
{{ end }} {{ end }}
{{/* Site Verification */}} {{/* Site Verification */}}
@@ -147,52 +94,101 @@
<meta name="fediverse:creator" content="{{ . }}"> <meta name="fediverse:creator" content="{{ . }}">
{{ end }} {{ end }}
{{/* Social */}} {{ $alg := .Site.Params.fingerprintAlgorithm | default "sha512" }}
{{ template "_internal/opengraph.html" . }}
{{ template "_internal/twitter_cards.html" . }}
{{- /* Main page always uses this; fallback elsewhere if no feature image */ -}} {{/* CSS */}}
{{- /* See https://gohugo.io/templates/embedded/#open-graph */ -}} {{ $cssResources := slice }}
{{- $images := .Resources.ByType "image" -}} {{ $schemeName := .Site.Params.colorScheme | default "blowfish" }}
{{- $socialImage := $images.GetMatch "*feature*" -}} {{ $cssScheme := resources.Get (printf "css/schemes/%s.css" $schemeName) | default (resources.Get "css/schemes/blowfish.css") }}
{{ $cssResources = $cssResources | append $cssScheme }}
{{ $cssResources = $cssResources | append (resources.Get "css/compiled/main.css") }}
{{ with resources.Get "css/custom.css" }}
{{ $cssResources = $cssResources | append . }}
{{ end }}
{{ if not .Site.Params.disableImageZoom | default true }}
{{ $cssResources = $cssResources | append (resources.Get "lib/zoom/style.css") }}
{{ end }}
{{ $bundleCSS := $cssResources | resources.Concat "css/main.bundle.css" | resources.Minify | resources.Fingerprint $alg }}
<link
type="text/css"
rel="stylesheet"
href="{{ $bundleCSS.RelPermalink }}"
integrity="{{ $bundleCSS.Data.Integrity }}">
{{- if not $socialImage -}} {{/* JS loaded immediately */}}
{{- with .Site.Params.defaultSocialImage -}} {{ $jsAppearance := resources.Get "js/appearance.js" | resources.ExecuteAsTemplate "js/appearance.js" . | resources.Minify | resources.Fingerprint $alg }}
{{- if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") -}} <script
{{- $socialImage = resources.GetRemote . -}} type="text/javascript"
{{- else -}} src="{{ $jsAppearance.RelPermalink }}"
{{- $socialImage = resources.Get . -}} integrity="{{ $jsAppearance.Data.Integrity }}"></script>
{{- end -}} {{ $enableA11y := .Site.Params.enableA11y | default false }}
{{- end -}} {{ if $enableA11y }}
{{- end -}} {{ $jsA11y := resources.Get "js/a11y.js" | resources.Minify | resources.Fingerprint $alg }}
<script src="{{ $jsA11y.RelPermalink }}" integrity="{{ $jsA11y.Data.Integrity }}"></script>
{{ end }}
{{ $showZenMode := .Params.showZenMode | default (.Site.Params.article.showZenMode | default false) }}
{{ $shouldIncludeZenMode := or $enableA11y $showZenMode }}
{{ if and .IsPage $shouldIncludeZenMode }}
{{ $jsZenMode := resources.Get "js/zen-mode.js" | resources.Minify | resources.Fingerprint $alg }}
<script
type="text/javascript"
src="{{ $jsZenMode.RelPermalink }}"
integrity="{{ $jsZenMode.Data.Integrity }}"></script>
{{ end }}
{{ if not .Site.Params.disableImageZoom | default true }}
{{ $zoomJS := resources.Get "lib/zoom/zoom.min.umd.js" | resources.Fingerprint $alg }}
<script src="{{ $zoomJS.RelPermalink }}" integrity="{{ $zoomJS.Data.Integrity }}"></script>
{{ end }}
{{- with $socialImage -}} {{/* JS deferred */}}
<meta name="twitter:image" content="{{ .RelPermalink | absURL }}"> {{ $jsResources := slice }}
<meta property="og:image" content="{{ .RelPermalink | absURL }}"> {{ if site.Params.footer.showScrollToTop | default true }}
{{- end -}} {{ $jsResources = $jsResources | append (resources.Get "js/scroll-to-top.js") }}
{{ end }}
{{ if .Site.Params.enableSearch | default false }}
{{ $jsResources = $jsResources | append (resources.Get "lib/fuse/fuse.min.js") | append (resources.Get "js/search.js") }}
{{ end }}
{{ if .Site.Params.enableCodeCopy | default false }}
{{ $jsResources = $jsResources | append (resources.Get "js/code.js") }}
{{ end }}
{{ if .Site.Params.rtl | default false }}
{{ $jsResources = $jsResources | append (resources.Get "js/rtl.js") }}
{{ end }}
{{ $jsResources = $jsResources | append (resources.Get "js/mobilemenu.js") }}
{{ $jsResources = $jsResources | append (resources.Get "js/button-likes.js") }}
{{ $jsResources = $jsResources | append (resources.Get "js/katex-render.js") }}
{{ if $jsResources }}
{{ $bundleJS := $jsResources | resources.Concat "js/main.bundle.js" | resources.Minify | resources.Fingerprint $alg }}
<script
defer
type="text/javascript"
id="script-bundle"
src="{{ $bundleJS.RelPermalink }}"
integrity="{{ $bundleJS.Data.Integrity }}"
data-copy="{{ i18n "code.copy" }}"
data-copied="{{ i18n "code.copied" }}"></script>
{{ end }}
{{/* Conditional loaded resources */}}
{{ partial "vendor.html" . }}
{{/* Icons */}}
{{ if templates.Exists "partials/favicons.html" }}
{{ partialCached "favicons.html" .Site }}
{{ else }}
<link rel="apple-touch-icon" sizes="180x180" href="{{ "apple-touch-icon.png" | relURL }}">
<link rel="icon" type="image/png" sizes="32x32" href="{{ "favicon-32x32.png" | relURL }}">
<link rel="icon" type="image/png" sizes="16x16" href="{{ "favicon-16x16.png" | relURL }}">
<link rel="manifest" href="{{ "site.webmanifest" | relURL }}">
{{ end }}
{{/* Schema */}} {{/* Schema */}}
{{ partial "schema.html" . }} {{ partial "schema.html" . }}
{{/* Me */}}
{{ with .Site.Params.Author.name }}
<meta name="author" content="{{ . }}">
{{ end }}
{{ with .Site.Params.Author.links }}
{{ range $links := . }}
{{ range $name, $url := $links }}
{{ if not (strings.HasPrefix $url "mailto:") }}
<link href="{{ $url }}" rel="me">
{{ end }}
{{ end }}
{{ end }}
{{ end }}
{{/* Vendor */}}
{{ partial "vendor.html" . }}
{{/* Analytics */}} {{/* Analytics */}}
{{ partial "analytics/main.html" .Site }} {{ if hugo.IsProduction }}
{{ partial "analytics/main.html" . }}
{{ end }}
{{/* Extend head - eg. for custom analytics scripts, etc. */}} {{/* Extend head - eg. for custom analytics scripts, etc. */}}
{{ if templates.Exists "partials/extend-head.html" }} {{ if templates.Exists "partials/extend-head.html" }}
@@ -214,7 +210,7 @@
const firebaseConfig = { const firebaseConfig = {
apiKey: {{ $.Site.Params.firebase.apiKey }}, apiKey: {{ $.Site.Params.firebase.apiKey }},
authDomain: {{ $.Site.Params.firebase.apiKey }}, authDomain: {{ $.Site.Params.firebase.authDomain }},
projectId: {{ $.Site.Params.firebase.projectId }}, projectId: {{ $.Site.Params.firebase.projectId }},
storageBucket: {{ $.Site.Params.firebase.storageBucket }}, storageBucket: {{ $.Site.Params.firebase.storageBucket }},
messagingSenderId: {{ $.Site.Params.firebase.messagingSenderId }}, messagingSenderId: {{ $.Site.Params.firebase.messagingSenderId }},
@@ -233,7 +229,9 @@
{{/* Advertisement */}} {{/* Advertisement */}}
{{ with .Site.Params.advertisement.adsense }} {{ with .Site.Params.advertisement.adsense }}
<meta name="google-adsense-account" content="{{ . }}"> <meta name="google-adsense-account" content="{{ . }}">
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client={{ . }}" <script
async
src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client={{ . }}"
crossorigin="anonymous"></script> crossorigin="anonymous"></script>
{{ end }} {{ end }}
</head> </head>
+6 -6
View File
@@ -16,7 +16,7 @@
width="{{ div $logo.Width 2 }}" width="{{ div $logo.Width 2 }}"
height="{{ div $logo.Height 2 }}" height="{{ div $logo.Height 2 }}"
class="logo max-h-[5rem] max-w-[5rem] object-scale-down object-left nozoom" class="logo max-h-[5rem] max-w-[5rem] object-scale-down object-left nozoom"
alt="{{ .Site.Title }}"> alt="">
{{ end }} {{ end }}
</a> </a>
</div> </div>
@@ -68,7 +68,7 @@
{{ end }} {{ end }}
{{/* Mobile navigation */}} {{/* Mobile navigation */}}
{{ define "HeaderMobileNavigation" }} {{ define "HeaderMobileToolbar" }}
<div class="flex md:hidden items-center gap-x-5 md:ml-12 h-12"> <div class="flex md:hidden items-center gap-x-5 md:ml-12 h-12">
<span></span> <span></span>
@@ -104,7 +104,7 @@
</div> </div>
{{ end }} {{ end }}
{{ define "HeaderMobileMenu" }} {{ define "HeaderMobileNavigation" }}
<div class="-my-2 md:hidden"> <div class="-my-2 md:hidden">
<div id="menu-button" class="block"> <div id="menu-button" class="block">
{{ if .Site.Menus.main }} {{ if .Site.Menus.main }}
@@ -243,7 +243,7 @@
{{/* ========== Render HTML ========== */}} {{/* ========== Render HTML ========== */}}
<div <div
class="main-menu flex items-center justify-between px-4 py-6 sm:px-6 md:justify-start gap-x-3 pt-[2px] pr-0 pb-[3px] pl-0"> class="main-menu flex items-center justify-between py-6 md:justify-start gap-x-3 pt-[2px] pr-2 md:pr-4 pb-[3px] pl-0">
{{ template "HeaderLogo" . }} {{ template "HeaderLogo" . }}
<div class="flex flex-1 items-center justify-between"> <div class="flex flex-1 items-center justify-between">
<nav class="flex space-x-3"> <nav class="flex space-x-3">
@@ -254,9 +254,9 @@
{{ end }} {{ end }}
</nav> </nav>
{{ template "HeaderDesktopNavigation" . }} {{ template "HeaderDesktopNavigation" . }}
{{ template "HeaderMobileNavigation" . }} {{ template "HeaderMobileToolbar" . }}
</div> </div>
{{ template "HeaderMobileMenu" . }} {{ template "HeaderMobileNavigation" . }}
</div> </div>
{{ if .Site.Menus.subnavigation }} {{ if .Site.Menus.subnavigation }}
+2 -2
View File
@@ -1,9 +1,9 @@
<div class="min-h-[148px]"></div> <div class="min-h-[148px]"></div>
<div class="fixed inset-x-0 pl-[24px] pr-[24px] z-100"> <div class="fixed inset-x-0 z-100">
<div <div
id="menu-blur" id="menu-blur"
class="absolute opacity-0 inset-x-0 top-0 h-full single_hero_background nozoom bg-neutral dark:bg-neutral-800"></div> class="absolute opacity-0 inset-x-0 top-0 h-full single_hero_background nozoom bg-neutral dark:bg-neutral-800"></div>
<div class="relative max-w-[64rem] ml-auto mr-auto"> <div class="relative m-auto leading-7 max-w-7xl px-6 sm:px-14 md:px-24 lg:px-32">
{{ partial "header/basic.html" . }} {{ partial "header/basic.html" . }}
</div> </div>
</div> </div>
+2 -2
View File
@@ -1,6 +1,6 @@
<div class="min-h-[148px]"></div> <div class="min-h-[148px]"></div>
<div class="fixed inset-x-0 pl-[24px] pr-[24px] bg-neutral dark:bg-neutral-800 z-100"> <div class="fixed inset-x-0 bg-neutral dark:bg-neutral-800 z-100">
<div class="relative max-w-[64rem] ml-auto mr-auto"> <div class="relative m-auto leading-7 max-w-7xl px-6 sm:px-14 md:px-24 lg:px-32">
{{ partial "header/basic.html" . }} {{ partial "header/basic.html" . }}
</div> </div>
</div> </div>
+3 -3
View File
@@ -1,11 +1,11 @@
<div class="min-h-[148px]"></div> <div class="min-h-[148px]"></div>
<div <div
class="fixed inset-x-0 min-h-[130px] opacity-65 pl-[24px] pr-[24px] bg-gradient-to-b from-neutral from-60% dark:from-neutral-800 to-transparent mix-blend-normal z-80"></div> class="fixed inset-x-0 min-h-[130px] opacity-65 bg-gradient-to-b from-neutral from-60% dark:from-neutral-800 to-transparent mix-blend-normal z-80"></div>
<div class="fixed inset-x-0 pl-[24px] pr-[24px] z-100"> <div class="fixed inset-x-0 z-100">
<div <div
id="menu-blur" id="menu-blur"
class="absolute opacity-0 inset-x-0 top-0 h-full single_hero_background nozoom backdrop-blur-2xl shadow-2xl"></div> 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] ml-auto mr-auto"> <div class="relative m-auto leading-7 max-w-7xl px-6 sm:px-14 md:px-24 lg:px-32">
{{ partial "header/basic.html" . }} {{ partial "header/basic.html" . }}
</div> </div>
</div> </div>
+2 -2
View File
@@ -1,9 +1,9 @@
<div class="min-h-[148px]"></div> <div class="min-h-[148px]"></div>
<div class="fixed inset-x-0 pl-[24px] pr-[24px] z-100"> <div class="fixed inset-x-0 z-100">
<div <div
id="menu-blur" id="menu-blur"
class="absolute opacity-0 inset-x-0 top-0 h-full single_hero_background nozoom backdrop-blur-2xl shadow-2xl"></div> 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] ml-auto mr-auto"> <div class="relative m-auto leading-7 max-w-7xl px-6 sm:px-14 md:px-24 lg:px-32">
{{ partial "header/basic.html" . }} {{ partial "header/basic.html" . }}
</div> </div>
</div> </div>
@@ -1,6 +1,7 @@
<li class="mt-1"> <li class="mt-1">
<a <a
href="{{ .URL }}" href="{{ .URL }}"
{{ with or .Name .Pre }}aria-label="{{ . }}"{{ end }}
class="flex items-center hover:text-primary-600 dark:hover:text-primary-400"> class="flex items-center hover:text-primary-600 dark:hover:text-primary-400">
{{ if .Pre }} {{ if .Pre }}
<span {{ if and .Pre .Name }}class="mr-1"{{ end }}> <span {{ if and .Pre .Name }}class="mr-1"{{ end }}>
@@ -24,6 +25,7 @@
}} }}
target="_blank" target="_blank"
{{ end }} {{ end }}
{{ with or .Name .Pre }}aria-label="{{ . }}"{{ end }}
class="flex items-center hover:text-primary-600 dark:hover:text-primary-400"> class="flex items-center hover:text-primary-600 dark:hover:text-primary-400">
{{ if .Pre }} {{ if .Pre }}
<span {{ if and .Pre .Name }}class="mr-1"{{ end }}> <span {{ if and .Pre .Name }}class="mr-1"{{ end }}>
@@ -6,14 +6,18 @@
}} }}
target="_blank" target="_blank"
{{ end }} {{ end }}
class="flex items-center hover:text-primary-600 dark:hover:text-primary-400"> class="flex items-center hover:text-primary-600 dark:hover:text-primary-400"
{{ with or .Name .Pre }}aria-label="{{ . }}"{{ end }}
title="{{ .Title }}">
{{ if .Pre }} {{ if .Pre }}
<div {{ if and .Pre .Name }}class="mr-2"{{ end }}> <div {{ if and .Pre .Name }}class="mr-2"{{ end }}>
{{ partial "icon.html" .Pre }} {{ partial "icon.html" .Pre }}
</div> </div>
{{ end }} {{ end }}
<p class="text-bg font-bg" title="{{ .Title }}"> {{ if .Name }}
<p class="text-bg font-bg">
{{ .Name | markdownify }} {{ .Name | markdownify }}
</p> </p>
{{ end }}
</a> </a>
</li> </li>
@@ -12,6 +12,7 @@
target="_blank" target="_blank"
{{ end }} {{ end }}
{{ end }} {{ end }}
{{ with or .Name .Pre }}aria-label="{{ . }}"{{ end }}
class="text-base font-medium hover:text-primary-600 dark:hover:text-primary-400" class="text-base font-medium hover:text-primary-600 dark:hover:text-primary-400"
title="{{ .Title }}"> title="{{ .Title }}">
<p> <p>
@@ -31,6 +32,7 @@
{{ if or (strings.HasPrefix .URL "http:" ) (strings.HasPrefix .URL "https:" ) }} {{ if or (strings.HasPrefix .URL "http:" ) (strings.HasPrefix .URL "https:" ) }}
target="_blank" target="_blank"
{{ end }} {{ end }}
{{ with or .Name .Pre }}aria-label="{{ . }}"{{ end }}
class="flex items-center hover:text-primary-600 dark:hover:text-primary-400"> class="flex items-center hover:text-primary-600 dark:hover:text-primary-400">
{{ if .Pre }} {{ if .Pre }}
<span {{ if and .Pre .Name }}class="mr-1"{{ end }}> <span {{ if and .Pre .Name }}class="mr-1"{{ end }}>
@@ -1,13 +1,17 @@
<a <a
href="{{ .URL }}" href="{{ .URL }}"
{{ if or (strings.HasPrefix .URL "http:" ) (strings.HasPrefix .URL "https:" ) }}target="_blank"{{ end }} {{ if or (strings.HasPrefix .URL "http:" ) (strings.HasPrefix .URL "https:" ) }}target="_blank"{{ end }}
class="flex items-center hover:text-primary-600 dark:hover:text-primary-400"> class="flex items-center hover:text-primary-600 dark:hover:text-primary-400"
{{ with or .Name .Pre }}aria-label="{{ . }}"{{ end }}
title="{{ .Title }}">
{{ if .Pre }} {{ if .Pre }}
<span {{ if and .Pre .Name }}class="mr-1"{{ end }}> <span {{ if and .Pre .Name }}class="mr-1"{{ end }}>
{{ partial "icon.html" .Pre }} {{ partial "icon.html" .Pre }}
</span> </span>
{{ end }} {{ end }}
<p class="text-base font-medium" title="{{ .Title }}"> {{ if .Name }}
<p class="text-base font-medium">
{{ .Name | markdownify }} {{ .Name | markdownify }}
</p> </p>
{{ end }}
</a> </a>
+51 -22
View File
@@ -1,24 +1,48 @@
{{ $disableImageOptimization := .Page.Site.Params.disableImageOptimization | default false }} {{ $disableImageOptimization := site.Store.Get "disableImageOptimization" }}
{{- $images := .Resources.ByType "image" -}} {{ $useDefault := false }}
{{- $featured := $images.GetMatch "*background*" -}} {{ $featured := "" }}
{{- if not $featured }}{{ $featured = $images.GetMatch "*feature*" }}{{ end -}} {{ $featuredURL := "" }}
{{- if not $featured }}{{ $featured = $images.GetMatch "{*cover*,*thumbnail*}" }}{{ end -}} {{ with .Params.featureimage }}
{{ if and .Params.featureimage (not $featured) }}
{{- $url:= .Params.featureimage -}}
{{ $featured = resources.GetRemote $url }}
{{ end }}
{{- if not $featured }}
{{ with .Site.Params.defaultBackgroundImage }}
{{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }} {{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
{{ if site.Params.hotlinkFeatureImage }}
{{ $featuredURL = . }}
{{ else }}
{{ $featured = resources.GetRemote . }} {{ $featured = resources.GetRemote . }}
{{ end }}
{{ else }} {{ else }}
{{ $featured = resources.Get . }} {{ $featured = resources.Get . }}
{{ end }} {{ end }}
{{ end }}
{{ if not (or $featured $featuredURL) }}
{{ $images := .Resources.ByType "image" }}
{{ range slice "*background*" "*feature*" "*cover*" "*thumbnail*" }}
{{ if not $featured }}{{ $featured = $images.GetMatch . }}{{ end }}
{{ end }} {{ end }}
{{ end -}} {{ end }}
{{ if not (or $featured $featuredURL) }}
{{ $default := site.Store.Get "defaultBackgroundImage" }}
{{ if $default.url }}
{{ $featuredURL = $default.url }}
{{ $useDefault = true }}
{{ else if $default.obj }}
{{ $featured = $default.obj }}
{{ $useDefault = true }}
{{ end }}
{{ end }}
{{/* generate image URL if not hotlink */}}
{{ if not $featuredURL }}
{{ with $featured }}
{{ $featuredURL = .RelPermalink }}
{{ if not (or $disableImageOptimization (eq .MediaType.SubType "svg")) }}
{{ $size := site.Store.Get "backgroundImageWidth" }}
{{ $featuredURL = (.Resize $size).RelPermalink }}
{{ end }}
{{ end }}
{{ end }}
{{ $isParentList := eq (.Scratch.Get "scope") "list" }} {{ $isParentList := eq (.Scratch.Get "scope") "list" }}
{{ $shouldBlur := $.Params.layoutBackgroundBlur | default (or {{ $shouldBlur := $.Params.layoutBackgroundBlur | default (or
@@ -32,20 +56,25 @@
) )
}} }}
{{- with $featured -}} {{- with $featuredURL -}}
{{ if $shouldAddHeaderSpace | default true }} {{ if $shouldAddHeaderSpace | default true }}
<div id="hero" class="h-[150px] md:h-[200px]"></div> <div id="hero" class="h-[150px] md:h-[200px]"></div>
{{ end }} {{ end }}
<div class="fixed inset-x-0 top-0 h-[800px] single_hero_background nozoom"> <div class="fixed inset-x-0 top-0 h-[800px] single_hero_background nozoom">
{{ $imageURL := .RelPermalink }} {{ $style := "" }}
{{ if not (or $disableImageOptimization (eq .MediaType.SubType "svg")) }} {{ $defaultPosition := cond $useDefault site.Params.imagePosition false }}
{{ $imageURL = (.Resize (print ($.Site.Params.backgroundImageWidth | default "1200") "x")).RelPermalink }} {{ with $.Params.imagePosition | default $defaultPosition }}
{{ $style = printf "object-position: %s;" . }}
{{ end }} {{ end }}
<img <img
id="background-image" id="background-image"
src="{{ $imageURL }}" src="{{ . }}"
alt="Background Image" alt="{{ $.Title }}"
class="absolute inset-0 w-full h-full object-cover"> loading="eager"
decoding="async"
fetchpriority="high"
class="absolute inset-0 w-full h-full object-cover"
{{ if $style }}style="{{ $style | safeCSS }}"{{ end }}>
<div <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 <div
@@ -64,6 +93,6 @@
integrity="{{ $backgroundBlur.Data.Integrity }}" integrity="{{ $backgroundBlur.Data.Integrity }}"
data-blur-id="background-blur" data-blur-id="background-blur"
data-image-id="background-image" data-image-id="background-image"
data-image-url="{{ .RelPermalink }}"></script> data-image-url="{{ . }}"></script>
{{ end }} {{ end }}
{{- end -}} {{- end -}}
+53 -27
View File
@@ -1,37 +1,63 @@
{{ $disableImageOptimization := .Page.Site.Params.disableImageOptimization | default false }} {{ $disableImageOptimization := site.Store.Get "disableImageOptimization" }}
{{- $images := .Resources.ByType "image" -}} {{ $useDefault := false }}
{{- $featured := $images.GetMatch "*background*" -}} {{ $featured := "" }}
{{- if not $featured }}{{ $featured = $images.GetMatch "*feature*" }}{{ end -}} {{ $featuredURL := "" }}
{{- if not $featured }}{{ $featured = $images.GetMatch "{*cover*,*thumbnail*}" }}{{ end -}} {{ with .Params.featureimage }}
{{ if and .Params.featureimage (not $featured) }}
{{- $url:= .Params.featureimage -}}
{{ $featured = resources.GetRemote $url }}
{{ end }}
{{- if not $featured }}
{{ with .Site.Params.defaultBackgroundImage }}
{{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }} {{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
{{ if site.Params.hotlinkFeatureImage }}
{{ $featuredURL = . }}
{{ else }}
{{ $featured = resources.GetRemote . }} {{ $featured = resources.GetRemote . }}
{{ end }}
{{ else }} {{ else }}
{{ $featured = resources.Get . }} {{ $featured = resources.Get . }}
{{ end }} {{ end }}
{{ end }} {{ end }}
{{ end -}}
{{- with $featured -}} {{ if not (or $featured $featuredURL) }}
{{ if or $disableImageOptimization (strings.HasSuffix $featured ".svg") }} {{ $images := .Resources.ByType "image" }}
{{ with . }} {{ range slice "*background*" "*feature*" "*cover*" "*thumbnail*" }}
<div {{ if not $featured }}{{ $featured = $images.GetMatch . }}{{ end }}
class="w-full h-36 md:h-56 lg:h-72 single_hero_basic nozoom"
style="background-image:url({{ .RelPermalink }});"></div>
{{ end }} {{ end }}
{{ else }} {{ end }}
{{ with .Resize (print ($.Site.Params.backgroundImageWidth | default "1200") "x") }}
<div {{ if not (or $featured $featuredURL) }}
class="w-full h-36 md:h-56 lg:h-72 single_hero_basic nozoom" {{ $default := site.Store.Get "defaultBackgroundImage" }}
style="background-image:url({{ .RelPermalink }});"></div> {{ if $default.url }}
{{ $featuredURL = $default.url }}
{{ $useDefault = true }}
{{ else if $default.obj }}
{{ $featured = $default.obj }}
{{ $useDefault = true }}
{{ end }}
{{ end }}
{{/* generate image URL if not hotlink */}}
{{ if not $featuredURL }}
{{ with $featured }}
{{ $featuredURL = .RelPermalink }}
{{ if not (or $disableImageOptimization (eq .MediaType.SubType "svg")) }}
{{ $size := site.Store.Get "backgroundImageWidth" }}
{{ $featuredURL = (.Resize $size).RelPermalink }}
{{ end }} {{ end }}
{{ end }} {{ end }}
{{- end -}} {{ end }}
{{ with $featuredURL }}
{{ $style := "" }}
{{ $defaultPosition := cond $useDefault site.Params.imagePosition false }}
{{ with $.Params.imagePosition | default $defaultPosition }}
{{ $style = printf "object-position: %s;" . }}
{{ end }}
<div class="overflow-hidden h-36 md:h-56 lg:h-72">
<img
src="{{ . }}"
alt="{{ with $.Params.featureimagealt }}{{ . }}{{ else }}{{ with $.Title }}Featured image for {{ . }}{{ else }}Featured image{{ end }}{{ end }}"
loading="eager"
decoding="async"
fetchpriority="high"
class="w-full h-full nozoom object-cover"
{{ if $style }}style="{{ $style | safeCSS }}"{{ end }}>
</div>
{{ end }}
+50 -50
View File
@@ -1,24 +1,48 @@
{{ $disableImageOptimization := .Page.Site.Params.disableImageOptimization | default false }} {{ $disableImageOptimization := site.Store.Get "disableImageOptimization" }}
{{- $images := .Resources.ByType "image" -}} {{ $useDefault := false }}
{{- $featured := $images.GetMatch "*background*" -}} {{ $featured := "" }}
{{- if not $featured }}{{ $featured = $images.GetMatch "*feature*" }}{{ end -}} {{ $featuredURL := "" }}
{{- if not $featured }}{{ $featured = $images.GetMatch "{*cover*,*thumbnail*}" }}{{ end -}} {{ with .Params.featureimage }}
{{ if .Params.featureimage }}
{{- $url:= .Params.featureimage -}}
{{- if not $featured }}{{ $featured = resources.GetRemote $url }}{{ end -}}
{{ end }}
{{- if not $featured }}
{{ with .Site.Params.defaultBackgroundImage }}
{{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }} {{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
{{ if site.Params.hotlinkFeatureImage }}
{{ $featuredURL = . }}
{{ else }}
{{ $featured = resources.GetRemote . }} {{ $featured = resources.GetRemote . }}
{{ end }}
{{ else }} {{ else }}
{{ $featured = resources.Get . }} {{ $featured = resources.Get . }}
{{ end }} {{ end }}
{{ end }}
{{ if not (or $featured $featuredURL) }}
{{ $images := .Resources.ByType "image" }}
{{ range slice "*background*" "*feature*" "*cover*" "*thumbnail*" }}
{{ if not $featured }}{{ $featured = $images.GetMatch . }}{{ end }}
{{ end }} {{ end }}
{{ end -}} {{ end }}
{{ if not (or $featured $featuredURL) }}
{{ $default := site.Store.Get "defaultBackgroundImage" }}
{{ if $default.url }}
{{ $featuredURL = $default.url }}
{{ $useDefault = true }}
{{ else if $default.obj }}
{{ $featured = $default.obj }}
{{ $useDefault = true }}
{{ end }}
{{ end }}
{{/* generate image URL if not hotlink */}}
{{ if not $featuredURL }}
{{ with $featured }}
{{ $featuredURL = .RelPermalink }}
{{ if not (or $disableImageOptimization (eq .MediaType.SubType "svg")) }}
{{ $size := site.Store.Get "backgroundImageWidth" }}
{{ $featuredURL = (.Resize $size).RelPermalink }}
{{ end }}
{{ end }}
{{ end }}
{{ $caption := "" }} {{ $caption := "" }}
{{ if .Params.featureimagecaption }} {{ if .Params.featureimagecaption }}
@@ -28,49 +52,25 @@
{{- $alt := .Page.Title -}} {{- $alt := .Page.Title -}}
{{- with .Page.Params.alt }}{{ $alt = . }}{{ end -}} {{- with .Page.Params.alt }}{{ $alt = . }}{{ end -}}
{{- with $featured -}} {{ with $featuredURL }}
{{ if strings.HasSuffix $featured ".svg" }} {{ $style := "" }}
{{ with . }} {{ $defaultPosition := cond $useDefault site.Params.imagePosition false }}
<figure> {{ with $.Params.imagePosition | default $defaultPosition }}
<img class="w-full rounded-lg single_hero_round nozoom" alt="{{ $alt }}" src="{{ .RelPermalink }}"> {{ $style = printf "object-position: %s;" . }}
{{ if $caption }}
<figcaption class="text-sm text-neutral-700 dark:text-neutral-400 hover:underline text-center">
{{ $caption | markdownify }}
</figcaption>
{{ end }} {{ end }}
</figure>
{{ end }}
{{ else if $disableImageOptimization }}
{{ with . }}
<figure> <figure>
<img <img
class="w-full rounded-lg single_hero_round nozoom" src="{{ . }}"
alt="{{ $alt }}" alt="{{ $alt }}"
width="{{ .Width }}" loading="eager"
height="{{ .Height }}" decoding="async"
src="{{ .RelPermalink }}"> fetchpriority="high"
class="w-full rounded-lg single_hero_round nozoom"
{{ if $style }}style="{{ $style | safeCSS }}"{{ end }}>
{{ if $caption }} {{ if $caption }}
<figcaption class="text-sm text-neutral-700 dark:text-neutral-400 hover:underline text-center"> <figcaption class="text-sm text-neutral-700 dark:text-neutral-400 hover:underline text-center">
{{ $caption | markdownify }} {{ $caption | markdownify }}
</figcaption> </figcaption>
{{ end }} {{ end }}
</figure> </figure>
{{ end }} {{ end }}
{{ else }}
{{ with .Resize (print ($.Site.Params.backgroundImageWidth | default "1200") "x") }}
<figure>
<img
class="w-full rounded-lg single_hero_round nozoom"
alt="{{ $alt }}"
width="{{ .Width }}"
height="{{ .Height }}"
src="{{ .RelPermalink }}">
{{ if $caption }}
<figcaption class="text-sm text-neutral-700 dark:text-neutral-400 hover:underline text-center">
{{ $caption | markdownify }}
</figcaption>
{{ end }}
</figure>
{{ end }}
{{ end }}
{{- end -}}
+95 -49
View File
@@ -1,37 +1,80 @@
{{ $disableImageOptimization := .Page.Site.Params.disableImageOptimization | default false }} {{ $disableImageOptimization := site.Store.Get "disableImageOptimization" }}
{{- $images := .Resources.ByType "image" -}} {{/* === Background === */}}
{{- $background := $images.GetMatch "*background*" -}} {{ $useDefault := false }}
{{ $images := .Resources.ByType "image" }}
{{ $background := $images.GetMatch "*background*" }}
{{ $backgroundURL := "" }}
{{- if not $background }} {{ if not (or $background $backgroundURL) }}
{{ with .Site.Params.defaultBackgroundImage }} {{ $default := site.Store.Get "defaultBackgroundImage" }}
{{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }} {{ if $default.url }}
{{ $background = resources.GetRemote . }} {{ $backgroundURL = $default.url }}
{{ else }} {{ $useDefault = true }}
{{ $background = resources.Get . }} {{ else if $default.obj }}
{{ $background = $default.obj }}
{{ $useDefault = true }}
{{ end }} {{ end }}
{{ end }}
{{ end -}}
{{- if not $background }}{{ $background = $images.GetMatch "{*cover*,*thumbnail*}" }}{{ end -}}
{{- if not $background }}{{ $background = $images.GetMatch "*feature*" }}{{ end -}}
{{- $featured := $images.GetMatch "*feature*" -}}
{{- if not $featured }}{{ $featured = $images.GetMatch "{*cover*,*thumbnail*}" }}{{ end -}}
{{ if .Params.featureimage }}
{{- $url:= .Params.featureimage -}}
{{- if not $featured }}{{ $featured = resources.GetRemote $url }}{{ end -}}
{{ end }} {{ end }}
{{- if not $featured }}{{ $featured = $images.GetMatch "*background*" }}{{ end -}}
{{- if not $featured }} {{ if not (or $background $backgroundURL) }}
{{ with .Site.Params.defaultFeaturedImage }} {{ range slice "*cover*" "*thumbnail*" "*feature*" }}
{{ if not $background }}{{ $background = $images.GetMatch . }}{{ end }}
{{ end }}
{{ end }}
{{/* generate image URL if not hotlink */}}
{{ if not $backgroundURL }}
{{ with $background }}
{{ $backgroundURL = .RelPermalink }}
{{ if not (or $disableImageOptimization (eq .MediaType.SubType "svg")) }}
{{ $size := site.Store.Get "backgroundImageWidth" }}
{{ $backgroundURL = (.Resize $size).RelPermalink }}
{{ end }}
{{ end }}
{{ end }}
{{/* === Featured === */}}
{{ $featured := "" }}
{{ $featuredURL := "" }}
{{ with .Params.featureimage }}
{{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }} {{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
{{ if site.Params.hotlinkFeatureImage }}
{{ $featuredURL = . }}
{{ else }}
{{ $featured = resources.GetRemote . }} {{ $featured = resources.GetRemote . }}
{{ end }}
{{ else }} {{ else }}
{{ $featured = resources.Get . }} {{ $featured = resources.Get . }}
{{ end }} {{ end }}
{{ end }}
{{ if not (or $featured $featuredURL) }}
{{ $images := $.Resources.ByType "image" }}
{{ range slice "*feature*" "*cover*" "*thumbnail*" "*background*" }}
{{ if not $featured }}{{ $featured = $images.GetMatch . }}{{ end }}
{{ end }} {{ end }}
{{ end -}} {{ end }}
{{ if not (or $featured $featuredURL) }}
{{ $default := site.Store.Get "defaultFeaturedImage" }}
{{ if $default.url }}
{{ $featuredURL = $default.url }}
{{ else if $default.obj }}
{{ $featured = $default.obj }}
{{ end }}
{{ end }}
{{/* generate image URL if not hotlink */}}
{{ if not $featuredURL }}
{{ with $featured }}
{{ $featuredURL = .RelPermalink }}
{{ if not (or $disableImageOptimization (eq .MediaType.SubType "svg")) }}
{{ $size := site.Store.Get "backgroundImageWidth" }}
{{ $featuredURL = (.Resize $size).RelPermalink }}
{{ end }}
{{ end }}
{{ end }}
{{ $isParentList := eq (.Scratch.Get "scope") "list" }} {{ $isParentList := eq (.Scratch.Get "scope") "list" }}
{{ $shouldBlur := $.Params.layoutBackgroundBlur | default (or {{ $shouldBlur := $.Params.layoutBackgroundBlur | default (or
@@ -40,40 +83,43 @@
) )
}} }}
{{- with $featured -}} {{ with $featuredURL }}
{{ if or $disableImageOptimization (strings.HasSuffix . ".svg") }} <div class="overflow-hidden rounded-md h-36 md:h-56 lg:h-72 nozoom">
{{ with . }} <img
<div src="{{ . }}"
class="w-full rounded-md h-36 md:h-56 lg:h-72 single_hero_basic nozoom" alt="{{ $.Title }}"
style="background-image:url({{ .RelPermalink }});"></div> loading="eager"
{{ end }} decoding="async"
{{ else }} fetchpriority="high"
{{ with .Resize (print ($.Site.Params.backgroundImageWidth | default "1200") "x") }} class="w-full h-full nozoom object-cover"
<div {{ with $.Params.imagePositionFeature }}style="object-position: {{ . }};"{{ end }}>
class="w-full rounded-md h-36 md:h-56 lg:h-72 single_hero_basic nozoom" </div>
style="background-image:url({{ .RelPermalink }});"></div> {{ end }}
{{ end }}
{{ end }}
{{- end -}}
{{- with $background -}}
<div class="single_hero_background nozoom fixed inset-x-0 top-0 h-[800px]"> <div class="single_hero_background nozoom fixed inset-x-0 top-0 h-[800px]">
{{ $imageURL := .RelPermalink }} {{ with $backgroundURL }}
{{ if not (or $disableImageOptimization (eq .MediaType.SubType "svg")) }} {{ $style := "" }}
{{ $imageURL = (.Resize (print ($.Site.Params.backgroundImageWidth | default "1200") "x")).RelPermalink }} {{ $defaultPosition := cond $useDefault site.Params.imagePosition false }}
{{ with $.Params.imagePosition | default $defaultPosition }}
{{ $style = printf "object-position: %s;" . }}
{{ end }} {{ end }}
<img <img
id="background-image" id="background-image-main"
src="{{ $imageURL }}" src="{{ . }}"
alt="Background Image" alt=""
class="absolute inset-0 h-full w-full object-cover"> role="presentation"
loading="eager"
decoding="async"
fetchpriority="high"
class="absolute inset-0 h-full w-full object-cover"
{{ if $style }}style="{{ $style | safeCSS }}"{{ end }}>
{{ end }}
<div <div
class="from-neutral absolute inset-0 bg-gradient-to-t to-transparent mix-blend-normal dark:from-neutral-800"></div> class="from-neutral absolute inset-0 bg-gradient-to-t to-transparent mix-blend-normal dark:from-neutral-800"></div>
<div <div
class="from-neutral to-neutral absolute inset-0 bg-gradient-to-t opacity-30 mix-blend-normal dark:from-neutral-800 dark:to-neutral-800 dark:opacity-60"></div> class="from-neutral to-neutral absolute inset-0 bg-gradient-to-t opacity-30 mix-blend-normal dark:from-neutral-800 dark:to-neutral-800 dark:opacity-60"></div>
</div> </div>
{{- end -}}
{{ if $shouldBlur | default false }} {{ if $shouldBlur | default false }}
<div <div
+19 -9
View File
@@ -5,6 +5,7 @@
<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 -z-10"> <div class="fixed inset-x-0 top-0 -z-10">
{{ $useDefault := true }}
{{ $homepageImage := "" }} {{ $homepageImage := "" }}
{{ with .Site.Params.defaultBackgroundImage }} {{ with .Site.Params.defaultBackgroundImage }}
{{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }} {{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
@@ -16,16 +17,24 @@
{{ with .Site.Params.homepage.homepageImage }} {{ with .Site.Params.homepage.homepageImage }}
{{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }} {{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
{{ $homepageImage = resources.GetRemote . }} {{ $homepageImage = resources.GetRemote . }}
{{ $useDefault = false }}
{{ else }} {{ else }}
{{ $homepageImage = resources.Get . }} {{ $homepageImage = resources.Get . }}
{{ $useDefault = false }}
{{ end }} {{ end }}
{{ end }} {{ end }}
{{ if $homepageImage }} {{ if $homepageImage }}
{{ $style := "" }}
{{ $defaultPosition := cond $useDefault site.Params.imagePosition false }}
{{ with $.Params.imagePosition | default $defaultPosition }}
{{ $style = printf "object-position: %s;" . }}
{{ end }}
<img <img
id="background-image" id="background-image"
class="nozoom mt-0 mr-0 mb-0 ml-0 h-[1000px] w-full object-cover" class="nozoom mt-0 mr-0 mb-0 ml-0 h-[1000px] w-full object-cover"
src="{{ $homepageImage.RelPermalink }}" src="{{ $homepageImage.RelPermalink }}"
role="presentation"> role="presentation"
{{ if $style }}style="{{ $style | safeCSS }}"{{ end }}>
<div <div
class="from-neutral absolute inset-0 h-[1000px] bg-gradient-to-t to-transparent mix-blend-normal dark:from-neutral-800"></div> class="from-neutral absolute inset-0 h-[1000px] bg-gradient-to-t to-transparent mix-blend-normal dark:from-neutral-800"></div>
<div <div
@@ -41,15 +50,17 @@
{{ $authorImage = resources.Get . }} {{ $authorImage = resources.Get . }}
{{ end }} {{ end }}
{{ if $authorImage }} {{ if $authorImage }}
{{ $final := $authorImage }}
{{ if not $disableImageOptimization }} {{ if not $disableImageOptimization }}
{{ $authorImage = $authorImage.Fill (print "288x288 q" ( $.Site.Params.Author.imagequality | default "96" )) }} {{ $final = $authorImage.Fill (print "288x288 q" ( $.Site.Params.Author.imagequality | default "96" )) }}
{{ end }} {{ end }}
<img <img
class="mb-2 h-36 w-36 rounded-full" class="mb-2 h-36 w-36 rounded-full"
width="144" width="144"
height="144" height="144"
alt="{{ $.Site.Params.Author.name | default " Author" }}" alt="{{ $.Site.Params.Author.name | default `Author` }}"
src="{{ $authorImage.RelPermalink }}"> src="{{ $final.RelPermalink }}"
data-zoom-src="{{ $authorImage.RelPermalink }}">
{{ end }} {{ end }}
{{ end }} {{ end }}
<h1 class="mb-2 text-4xl font-extrabold text-neutral-800 dark:text-neutral-200"> <h1 class="mb-2 text-4xl font-extrabold text-neutral-800 dark:text-neutral-200">
@@ -70,11 +81,10 @@
href="{{ $url }}" href="{{ $url }}"
target="_blank" target="_blank"
aria-label="{{ $name | title }}" aria-label="{{ $name | title }}"
rel="me noopener noreferrer" title="{{ $name | title }}"
>{{ partial rel="me noopener noreferrer">
"icon.html" $name {{ partial "icon.html" $name }}
}}</a </a>
>
{{ end }} {{ end }}
{{ end }} {{ end }}
</div> </div>
+10 -1
View File
@@ -14,6 +14,7 @@
</div> </div>
<div class="mt-6 sm:mt-16 lg:mt-0 mx-auto max-w-xl px-4 sm:px-6 lg:mx-0 lg:max-w-none lg:py-16 lg:px-0"> <div class="mt-6 sm:mt-16 lg:mt-0 mx-auto max-w-xl px-4 sm:px-6 lg:mx-0 lg:max-w-none lg:py-16 lg:px-0">
<div class="-me-48 md:-me-16 lg:relative lg:m-0 lg:h-full lg:px-0 w-full"> <div class="-me-48 md:-me-16 lg:relative lg:m-0 lg:h-full lg:px-0 w-full">
{{ $useDefault := true }}
{{ $homepageImage := "" }} {{ $homepageImage := "" }}
{{ with .Site.Params.defaultBackgroundImage }} {{ with .Site.Params.defaultBackgroundImage }}
{{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }} {{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
@@ -25,14 +26,22 @@
{{ with .Site.Params.homepage.homepageImage }} {{ with .Site.Params.homepage.homepageImage }}
{{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }} {{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
{{ $homepageImage = resources.GetRemote . }} {{ $homepageImage = resources.GetRemote . }}
{{ $useDefault = false }}
{{ else }} {{ else }}
{{ $homepageImage = resources.Get . }} {{ $homepageImage = resources.Get . }}
{{ $useDefault = false }}
{{ end }} {{ end }}
{{ end }} {{ end }}
{{ if $homepageImage }} {{ if $homepageImage }}
{{ $style := "" }}
{{ $defaultPosition := cond $useDefault site.Params.imagePosition false }}
{{ with $.Params.imagePosition | default $defaultPosition }}
{{ $style = printf "object-position: %s;" . }}
{{ end }}
<img <img
class="w-full rounded-xl shadow-xl lg:absolute lg:h-full lg:w-auto lg:max-w-none" class="w-full rounded-xl shadow-xl lg:absolute lg:h-full lg:w-auto lg:max-w-none"
src="{{ $homepageImage.RelPermalink }}"> src="{{ $homepageImage.RelPermalink }}"
{{ if $style }}style="{{ $style | safeCSS }}"{{ end }}>
{{ end }} {{ end }}
</div> </div>
</div> </div>
+26 -15
View File
@@ -6,6 +6,7 @@
<div class="mx-auto max-w-7xl p-0"> <div class="mx-auto max-w-7xl p-0">
<div class="relative shadow-xl sm:overflow-hidden rounded-2xl"> <div class="relative shadow-xl sm:overflow-hidden rounded-2xl">
<div class="absolute inset-0"> <div class="absolute inset-0">
{{ $useDefault := true }}
{{ $homepageImage := "" }} {{ $homepageImage := "" }}
{{ with .Site.Params.defaultBackgroundImage }} {{ with .Site.Params.defaultBackgroundImage }}
{{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }} {{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
@@ -17,12 +18,22 @@
{{ with .Site.Params.homepage.homepageImage }} {{ with .Site.Params.homepage.homepageImage }}
{{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }} {{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
{{ $homepageImage = resources.GetRemote . }} {{ $homepageImage = resources.GetRemote . }}
{{ $useDefault = false }}
{{ else }} {{ else }}
{{ $homepageImage = resources.Get . }} {{ $homepageImage = resources.Get . }}
{{ $useDefault = false }}
{{ end }} {{ end }}
{{ end }} {{ end }}
{{ if $homepageImage }} {{ if $homepageImage }}
<img class="h-full w-full object-cover nozoom mt-0 mr-0 mb-0 ml-0" src="{{ $homepageImage.RelPermalink }}"> {{ $style := "" }}
{{ $defaultPosition := cond $useDefault site.Params.imagePosition false }}
{{ with $.Params.imagePosition | default $defaultPosition }}
{{ $style = printf "object-position: %s;" . }}
{{ end }}
<img
class="h-full w-full object-cover nozoom mt-0 mr-0 mb-0 ml-0"
src="{{ $homepageImage.RelPermalink }}"
{{ if $style }}style="{{ $style | safeCSS }}"{{ end }}>
{{ if not $disableHeroImageFilter }} {{ if not $disableHeroImageFilter }}
<div <div
class="absolute inset-0 bg-gradient-to-r from-primary-500 to-secondary-600 dark:from-primary-600 dark:to-secondary-800 mix-blend-multiply"></div> class="absolute inset-0 bg-gradient-to-r from-primary-500 to-secondary-600 dark:from-primary-600 dark:to-secondary-800 mix-blend-multiply"></div>
@@ -42,15 +53,17 @@
{{ $authorImage = resources.Get . }} {{ $authorImage = resources.Get . }}
{{ end }} {{ end }}
{{ if $authorImage }} {{ if $authorImage }}
{{ $final := $authorImage }}
{{ if not $disableImageOptimization }} {{ if not $disableImageOptimization }}
{{ $authorImage = $authorImage.Fill (print "288x288 q" ( $.Site.Params.Author.imagequality | default "96" )) }} {{ $final = $authorImage.Fill (print "288x288 q" ( $.Site.Params.Author.imagequality | default "96" )) }}
{{ end }} {{ end }}
<img <img
class="mb-2 rounded-full h-36 w-36" class="mb-2 h-36 w-36 rounded-full"
width="144" width="144"
height="144" height="144"
alt="{{ $.Site.Params.Author.name | default " Author" }}" alt="{{ $.Site.Params.Author.name | default `Author` }}"
src="{{ $authorImage.RelPermalink }}"> src="{{ $final.RelPermalink }}"
data-zoom-src="{{ $authorImage.RelPermalink }}">
{{ end }} {{ end }}
{{ end }} {{ end }}
{{ if not $disableHeroImageFilter }} {{ if not $disableHeroImageFilter }}
@@ -83,22 +96,20 @@
href="{{ $url }}" href="{{ $url }}"
target="_blank" target="_blank"
aria-label="{{ $name | title }}" aria-label="{{ $name | title }}"
rel="me noopener noreferrer" title="{{ $name | title }}"
>{{ partial rel="me noopener noreferrer">
"icon.html" $name {{ partial "icon.html" $name }}
}}</a </a>
>
{{ else }} {{ else }}
<a <a
class="px-1 hover:text-primary-400 text-primary-800 dark:text-primary-200" class="px-1 hover:text-primary-400 text-primary-800 dark:text-primary-200"
href="{{ $url }}" href="{{ $url }}"
target="_blank" target="_blank"
aria-label="{{ $name | title }}" aria-label="{{ $name | title }}"
rel="me noopener noreferrer" title="{{ $name | title }}"
>{{ partial rel="me noopener noreferrer">
"icon.html" $name {{ partial "icon.html" $name }}
}}</a </a>
>
{{ end }} {{ end }}
{{ end }} {{ end }}
{{ end }} {{ end }}
+6 -4
View File
@@ -12,15 +12,17 @@
{{ $authorImage = resources.Get . }} {{ $authorImage = resources.Get . }}
{{ end }} {{ end }}
{{ if $authorImage }} {{ if $authorImage }}
{{ $final := $authorImage }}
{{ if not $disableImageOptimization }} {{ if not $disableImageOptimization }}
{{ $authorImage = $authorImage.Fill (print "288x288 q" ( $.Site.Params.Author.imagequality | default "96" )) }} {{ $final = $authorImage.Fill (print "288x288 q" ( $.Site.Params.Author.imagequality | default "96" )) }}
{{ end }} {{ end }}
<img <img
class="mb-2 rounded-full h-36 w-36" class="mb-2 h-36 w-36 rounded-full"
width="144" width="144"
height="144" height="144"
alt="{{ $.Site.Params.Author.name | default " Author" }}" alt="{{ $.Site.Params.Author.name | default `Author` }}"
src="{{ $authorImage.RelPermalink }}"> src="{{ $final.RelPermalink }}"
data-zoom-src="{{ $authorImage.RelPermalink }}">
{{ end }} {{ end }}
{{ end }} {{ end }}
<h1 class="text-4xl font-extrabold"> <h1 class="text-4xl font-extrabold">
+37
View File
@@ -0,0 +1,37 @@
{{/* disableImageOptimization */}}
{{ site.Store.Set "disableImageOptimization" (site.Params.disableImageOptimization | default false) }}
{{/* defaultFeaturedImage */}}
{{ $defaultFeaturedImage := "" }}
{{ $defaultFeaturedImageURL := "" }}
{{ with site.Params.defaultFeaturedImage }}
{{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
{{ if site.Params.hotlinkFeatureImage }}
{{ $defaultFeaturedImageURL = . }}
{{ else }}
{{ $defaultFeaturedImage = resources.GetRemote . }}
{{ end }}
{{ else }}
{{ $defaultFeaturedImage = resources.Get . }}
{{ end }}
{{ end }}
{{ site.Store.Set "defaultFeaturedImage" (dict "url" $defaultFeaturedImageURL "obj" $defaultFeaturedImage) }}
{{/* defaultBackgroundImage */}}
{{ $defaultBackgroundImage := "" }}
{{ $defaultBackgroundImageURL := "" }}
{{ with site.Params.defaultBackgroundImage }}
{{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
{{ if site.Params.hotlinkFeatureImage }}
{{ $defaultBackgroundImageURL = . }}
{{ else }}
{{ $defaultBackgroundImage = resources.GetRemote . }}
{{ end }}
{{ else }}
{{ $defaultBackgroundImage = resources.Get . }}
{{ end }}
{{ end }}
{{ site.Store.Set "defaultBackgroundImage" (dict "url" $defaultBackgroundImageURL "obj" $defaultBackgroundImage) }}
{{/* backgroundImageWidth */}}
{{ site.Store.Set "backgroundImageWidth" (print (site.Params.backgroundImageWidth | default "1200") "x") }}
+1 -1
View File
@@ -19,7 +19,7 @@
{{ $showMoreLinkDest = .Site.Params.homepage.showMoreLinkDest }} {{ $showMoreLinkDest = .Site.Params.homepage.showMoreLinkDest }}
{{ end }} {{ end }}
<div class="mt-10 flex justify-center"> <div class="mt-10 flex justify-center">
<a href="{{ $showMoreLinkDest }}"> <a href="{{ $showMoreLinkDest | relLangURL }}">
<button <button
class="bg-transparent hover:text-primary-500 prose dark:prose-invert font-semibold py-2 px-4 border border-primary-500 hover:border-transparent rounded"> class="bg-transparent hover:text-primary-500 prose dark:prose-invert font-semibold py-2 px-4 border border-primary-500 hover:border-transparent rounded">
{{ i18n "recent.show_more" | markdownify }} {{ i18n "recent.show_more" | markdownify }}
+10 -2
View File
@@ -1,7 +1,15 @@
<div id="top-scroller" class="pointer-events-none absolute top-[110vh] bottom-0 w-12 ltr:right-0 rtl:left-0 z-10"> {{ $coffeeIsRight := and .Site.Params.buymeacoffee.globalWidget (eq (lower site.Params.buymeacoffee.globalWidgetPosition) "right") }}
{{ $isRTL := .Site.Params.rtl | default false }}
{{ $needAvoidCoffee := ne $coffeeIsRight $isRTL }}
{{ $toTopYOffset := cond $needAvoidCoffee "bottom-24" "bottom-6" }}
<div
id="scroll-to-top"
class="fixed {{ $toTopYOffset }} end-6 z-50 transform translate-y-4 opacity-0 duration-200">
<a <a
href="#the-top" href="#the-top"
class="pointer-events-auto sticky top-[calc(100vh-5.5rem)] flex h-12 w-12 mb-16 items-center justify-center rounded-full bg-neutral/50 text-xl text-neutral-700 hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral dark:hover:text-primary-400" class="pointer-events-auto flex h-12 w-12 items-center justify-center rounded-full bg-neutral/50 text-xl text-neutral-700 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" }}">
&uarr; &uarr;
+41 -29
View File
@@ -1,33 +1,43 @@
<a href="{{ .Page.RelPermalink }}" class="min-w-full"> {{ $disableImageOptimization := .Page.Site.Params.disableImageOptimization | default false }}
<div
class="border border-neutral-200 dark:border-neutral-700 border-2 rounded overflow-hidden shadow-2xl relative">
{{ $disableImageOptimization := .Page.Site.Params.disableImageOptimization | default false }}
{{- with site.Params.images -}} {{ $featured := "" }}
{{- range first 6 . }} {{ $featuredURL := "" }}
<meta property="og:image" content="{{ . | absURL }}"> {{ with .Page.Params.featureimage }}
{{ end -}} {{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
{{- else -}} {{ $featured = resources.GetRemote . }}
{{- $images := .Page.Resources.ByType "image" -}}
{{- $featured := $images.GetMatch "*feature*" -}}
{{- if not $featured }}{{ $featured = $images.GetMatch "{*cover*,*thumbnail*}" }}{{ end -}}
{{- with $featured -}}
{{ if $disableImageOptimization }}
{{ with . }}
<div class="w-full thumbnail_card nozoom" style="background-image:url({{ .RelPermalink }});"></div>
{{ end }}
{{ else }} {{ else }}
{{ with .Resize "600x" }} {{ $featured = resources.Get . }}
<div class="w-full thumbnail_card nozoom" style="background-image:url({{ .RelPermalink }});"></div>
{{ end }} {{ end }}
{{ end }} {{ end }}
{{- else -}}
{{- with site.Params.images }}
<meta property="og:image" content="{{ index . 0 | absURL }}">
{{ end -}}
{{- end -}}
{{- end -}}
{{ if not $featured }}
{{ $images := .Page.Resources.ByType "image" }}
{{ range slice "*feature*" "*cover*" "*thumbnail*" }}
{{ if not $featured }}{{ $featured = $images.GetMatch . }}{{ end }}
{{ end }}
{{ end }}
{{ with $featured }}
{{ $featuredURL = .RelPermalink }}
{{ if not (or $disableImageOptimization (eq .MediaType.SubType "svg")) }}
{{ $featuredURL = (.Resize "600x").RelPermalink }}
{{ end }}
{{ end }}
<div class="min-w-full">
<div class="border-neutral-200 dark:border-neutral-700 border-2 rounded overflow-hidden shadow-2xl relative">
{{ with $featuredURL }}
<figure class="not-prose flex-none relative overflow-hidden thumbnail_card">
<img
src="{{ . }}"
alt="{{ $.Page.Title }}"
loading="lazy"
decoding="async"
fetchpriority="low"
class="not-prose absolute inset-0 w-full h-full object-cover">
</figure>
{{ end }}
{{ if site.Params.taxonomy.showTermCount | default true }} {{ if site.Params.taxonomy.showTermCount | default true }}
<span class="absolute bottom-0 right-0 m-2"> <span class="absolute bottom-0 right-0 m-2">
<span class="flex"> <span class="flex">
@@ -38,14 +48,16 @@
</span> </span>
</span> </span>
{{ end }} {{ end }}
<div class="px-6 py-4"> <div class="px-6 py-4">
<a
{{ partial "article-link/_external-link.html" .Page | safeHTMLAttr }}
class="not-prose before:absolute before:inset-0 decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 hover:underline hover:underline-offset-2">
<div <div
class="font-bold text-xl text-neutral-800 decoration-primary-500 hover:underline hover:underline-offset-2 dark:text-neutral"> class="font-bold text-xl text-neutral-800 decoration-primary-500 hover:underline hover:underline-offset-2 dark:text-neutral">
{{ .Page.Title | emojify }} {{ .Page.Title | emojify }}
</div> </div>
</a>
</div> </div>
<div class="px-6 pt-4 pb-2"></div> <div class="px-6 pt-4 pb-2"></div>
</div> </div>
</a> </div>
+18
View File
@@ -33,12 +33,24 @@
const TOC_LINK_SELECTOR = 'a[href^="#"]' const TOC_LINK_SELECTOR = 'a[href^="#"]'
const NESTED_LIST_SELECTOR = 'li ul' const NESTED_LIST_SELECTOR = 'li ul'
const ACTIVE_CLASS = 'active' const ACTIVE_CLASS = 'active'
let isJumpingToAnchor = false
function getActiveAnchorId(anchors, offsetRatio) { function getActiveAnchorId(anchors, offsetRatio) {
const threshold = window.scrollY + window.innerHeight * offsetRatio const threshold = window.scrollY + window.innerHeight * offsetRatio
const tocLinks = [...document.querySelectorAll('#TableOfContents a[href^="#"]')] const tocLinks = [...document.querySelectorAll('#TableOfContents a[href^="#"]')]
const tocIds = new Set(tocLinks.map(link => link.getAttribute('href').substring(1))) const tocIds = new Set(tocLinks.map(link => link.getAttribute('href').substring(1)))
if (isJumpingToAnchor) {
for (let i = 0; i < anchors.length; i++) {
const anchor = anchors[i]
if (!tocIds.has(anchor.id)) continue
const top = anchor.getBoundingClientRect().top + window.scrollY
if (Math.abs(window.scrollY - top) < 100) {
return anchor.id
}
}
}
for (let i = anchors.length - 1; i >= 0; i--) { for (let i = anchors.length - 1; i >= 0; i--) {
const top = anchors[i].getBoundingClientRect().top + window.scrollY const top = anchors[i].getBoundingClientRect().top + window.scrollY
if (top <= threshold && tocIds.has(anchors[i].id)) { if (top <= threshold && tocIds.has(anchors[i].id)) {
@@ -85,6 +97,12 @@
toc.querySelectorAll(NESTED_LIST_SELECTOR).forEach(ul => ul.style.display = 'none') toc.querySelectorAll(NESTED_LIST_SELECTOR).forEach(ul => ul.style.display = 'none')
} }
links.forEach(link => {
link.addEventListener('click', () => {
isJumpingToAnchor = true
})
})
const config = { const config = {
toc, toc,
anchors, anchors,
+4 -3
View File
@@ -149,8 +149,9 @@
{{ end }} {{ end }}
{{ end }} {{ end }}
{{ $repoCardCSS := resources.FromString "css/repo-cards.css" (delimit $cssRules "\n") {{ $cssContent := delimit $cssRules "\n" }}
| minify | resources.Fingerprint (.Site.Params.fingerprintAlgorithm | default "sha512") {{ $outputPath := path.Join .Page.RelPermalink "repo-cards.css" }}
}} {{ $repoCardCSS := resources.FromString $outputPath $cssContent | minify | resources.Fingerprint (.Site.Params.fingerprintAlgorithm | default "sha512") }}
<link rel="stylesheet" href="{{ $repoCardCSS.RelPermalink }}" integrity="{{ $repoCardCSS.Data.Integrity }}"> <link rel="stylesheet" href="{{ $repoCardCSS.RelPermalink }}" integrity="{{ $repoCardCSS.Data.Integrity }}">
{{ end }} {{ end }}
Loaded 100 of 107 files, more files were not shown because too many files have changed in this diff. Show more