Merge pull request #2321 from nunocoracao/dev

🔖 v2.89.0
This commit is contained in:
Nuno C.
2025-08-03 02:12:14 +01:00
committed by GitHub
181 changed files with 3696 additions and 2795 deletions

113
.github/ISSUE_TEMPLATE/01-bug-report.yml vendored Normal file
View File

@@ -0,0 +1,113 @@
name: Bug Report
description: Create a report to help us improve
title: "[Bug]: "
labels: ["bug"]
body:
- type: markdown
attributes:
value: |
Thanks for raising a bug report! Please fill out the following template to help us understand the issue you are experiencing.
You can view the contributing guidelines for this project at: <https://github.com/nunocoracao/blowfish/blob/main/CONTRIBUTING.md>
- 🐛 **Bug reports & issues:** Use [GitHub Issues](https://github.com/nunocoracao/blowfish/issues)
- 💡 **Ideas for new features:** Open a discussion on [GitHub Discussions](https://github.com/nunocoracao/blowfish/discussions)
- 🙋‍♀️ **General questions:** Head to [GitHub Discussions](https://github.com/nunocoracao/blowfish/discussions)
- type: checkboxes
id: issue-check
attributes:
label: Issue Check
description: We ask that you [check existing Issues](https://github.com/nunocoracao/blowfish/issues) to see if your bug report has already been raised.
options:
- label: I have checked existing Issues and I feel this bug has not been raised
required: true
- type: textarea
id: describe-bug
attributes:
label: Describe the Bug
description: A clear and concise description of what the bug is.
validations:
required: true
- type: textarea
id: reproduce
attributes:
label: To Reproduce
description: |
Please provide the steps to reproduce the behaviour.
placeholder: |
1. Go to '...'
2. Click on '...'
3. Scroll down to '...'
4. *See error*
validations:
required: true
- type: textarea
id: expected
attributes:
label: Expected Behaviour
description: A clear and concise description of what you expected to happen.
validations:
required: true
- type: textarea
id: screenshots
attributes:
label: Screenshots
description: |
If applicable, add screenshots to help explain your problem.
*Click inside the textbox to highlight it, then you can upload screenshots by dragging them in.*
*Alternatively, you can click on "Paste, drop or click to add files" or "Add files" below the textbox.*
validations:
required: false
- type: textarea
id: platform
attributes:
label: Platform
description: |
Add information associated with the platform you are experience this bug on.
Example:
- OS: [e.g. iOS, MacOS, Windows, Linux]
- Browser: [e.g. chrome, safari, edge, firefox]
- Version [e.g. 22, Version 138.0.3351.77]
value: |
- OS:
- Browser:
- Version:
validations:
required: true
- type: textarea
id: hugo-version
attributes:
label: Hugo Version
description: Run `hugo version` and paste the output below.
placeholder: hugo v0.147.6-0a5fd8ebb8e2ca798515e8c564c14e32db3b4127 linux/amd64 BuildDate=2025-05-27T11:17:16Z VendorInfo=gohugoio
render: console
validations:
required: true
- type: textarea
id: blowfish-version
attributes:
label: Blowfish Version
description: Log the version of Blowfish you are running.
placeholder: v2.88.1
render: console
validations:
required: true
- type: textarea
id: additional-context
attributes:
label: Additional Context
description: |
Add any other context about the problem here. Are there existing GitHub Issues/Discussions that you feel are related?
validations:
required: false
- type: checkboxes
id: terms
attributes:
label: Code of Conduct
description: By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/nunocoracao/blowfish?tab=coc-ov-file#readme).
options:
- label: I agree to follow this project's Code of Conduct
required: true

View File

@@ -0,0 +1,60 @@
name: Feature Request
description: Suggest an idea for this project
title: "[Feature]: "
labels: ["enhancement"]
body:
- type: markdown
attributes:
value: |
Thanks for raising a feature request! Please fill out the following template to help us understand the feature you are requesting.
You can view the contributing guidelines for this project at: <https://github.com/nunocoracao/blowfish/blob/main/CONTRIBUTING.md>
- 🐛 **Bug reports & issues:** Use [GitHub Issues](https://github.com/nunocoracao/blowfish/issues)
- 💡 **Ideas for new features:** Open a discussion on [GitHub Discussions](https://github.com/nunocoracao/blowfish/discussions)
- 🙋‍♀️ **General questions:** Head to [GitHub Discussions](https://github.com/nunocoracao/blowfish/discussions)
- type: checkboxes
id: issue-check
attributes:
label: Issue Check
description: We ask that you [check existing Issues](https://github.com/nunocoracao/blowfish/issues) to see if your feature request has already been raised.
options:
- label: I have checked existing Issues and I feel this feature request has not been raised
required: true
- type: textarea
id: related-problem
attributes:
label: Is your feature request related to a problem?
description: A clear and concise description of what the problem is.
placeholder: Ex. I'm always frustrated when [...]
validations:
required: true
- type: textarea
id: solution
attributes:
label: Describe the solution you'd like
description: A clear and concise description of what you want to happen.
validations:
required: true
- type: textarea
id: alternatives
attributes:
label: Describe the alternatives you've considered
description: A clear and concise description of any alternative solutions or features you've considered.
validations:
required: false
- type: textarea
id: additional-context
attributes:
label: Additional context
description: Add any other context or screenshots about the feature request here. Are there existing GitHub Issues/Discussions that you feel are related?
validations:
required: false
- type: checkboxes
id: terms
attributes:
label: Code of Conduct
description: By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/nunocoracao/blowfish?tab=coc-ov-file#readme).
options:
- label: I agree to follow this project's Code of Conduct
required: true

View File

@@ -1,35 +0,0 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Desktop (please complete the following information):**
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]
**Hugo & Blowfish versions**
Which version of Hugo and Blowfish are you using?
**Additional context**
Add any other context about the problem here.

22
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@@ -0,0 +1,22 @@
blank_issues_enabled: true
contact_links:
- name: Contributing Guidelines
url: https://github.com/nunocoracao/blowfish/blob/main/CONTRIBUTING.md
about: Read the contributing guidelines for this project.
- name: Blowfish Code of Conduct
url: https://github.com/nunocoracao/blowfish?tab=coc-ov-file#readme
about: View the Code of Conduct for this project.
- name: Ideas for New Features
url: https://github.com/nunocoracao/blowfish/discussions
about: Open a discussion using GitHub Discussions.
- name: General Questions
url: https://github.com/nunocoracao/blowfish/discussions
about: Open a discussion using GitHub Discussions.
- name: Blowfish Homepage
url: https://blowfish.page/
about: Visit the homepage for more information about Blowfish.

View File

@@ -1,20 +0,0 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

View File

@@ -9,7 +9,7 @@ jobs:
issues: write
pull-requests: write
steps:
- uses: actions/first-interaction@v1
- uses: actions/first-interaction@v2
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
issue-message: "Thanks for contributing to Blowfish"

View File

@@ -27,7 +27,6 @@ static
layouts/_default/_markup/render-heading.html
layouts/_default/index.json
layouts/_default/list.html
layouts/shortcodes/screenshot.html
layouts/shortcodes/figure.html
layouts/partials/hugo-embedded/shortcodes/figure-default.html

View File

@@ -7,8 +7,7 @@
"proseWrap": "always",
"plugins": [
"@awmottaz/prettier-plugin-void-html",
"prettier-plugin-go-template",
"prettier-plugin-tailwindcss"
"prettier-plugin-go-template"
],
"overrides": [
{

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,77 @@
.a11y-panel-enter-active {
animation: slideInFromTop 0.3s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}
.a11y-panel-leave-active {
animation: slideOutToTop 0.3s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}
.ios-toggle {
position: relative;
width: 42px;
height: 24px;
background: #e5e5e5;
border-radius: 12px;
cursor: pointer;
transition: background-color 0.3s ease;
pointer-events: auto;
}
.ios-toggle input {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
opacity: 0;
cursor: pointer;
z-index: 1;
}
.ios-toggle::after {
content: "";
position: absolute;
top: 2px;
left: 2px;
width: 20px;
height: 20px;
background: white;
border-radius: 50%;
transition:
transform 0.3s ease,
background-color 0.3s ease;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
z-index: 0;
}
.ios-toggle input:checked + .toggle-track::after {
transform: translateX(18px);
}
.ios-toggle input:checked + .toggle-track {
background: rgba(var(--color-primary-500), 1);
}
.ios-toggle input:checked ~ .ios-toggle-ball {
transform: translateX(18px);
}
.ios-toggle.is-checked {
background: rgba(var(--color-primary-500), 1);
}
.ios-toggle:has(input:checked) {
background: rgba(var(--color-primary-500), 1);
}
.ios-toggle:has(input:checked)::after {
transform: translateX(18px);
}
.dark .ios-toggle {
background: #404040;
}
.dark .ios-toggle::after {
background: #f5f5f5;
}

View File

@@ -0,0 +1,65 @@
/* Carousel Specific Styles */
.ratio-16-9 {
padding-top: 56.25%;
}
.ratio-21-9 {
padding-top: 42.85%;
}
.ratio-32-9 {
padding-top: 28.125%;
}
@media (width >= 640px) {
.sm\:ratio-16-9 {
padding-top: 56.25%;
}
.sm\:ratio-21-9 {
padding-top: 42.85%;
}
.sm\:ratio-32-9 {
padding-top: 28.125%;
}
}
@media (width >= 853px) {
.md\:ratio-16-9 {
padding-top: 56.25%;
}
.md\:ratio-21-9 {
padding-top: 42.85%;
}
.md\:ratio-32-9 {
padding-top: 28.125%;
}
}
@media (width >= 1024px) {
.lg\:ratio-16-9 {
padding-top: 56.25%;
}
.lg\:ratio-21-9 {
padding-top: 42.85%;
}
.lg\:ratio-32-9 {
padding-top: 28.125%;
}
}
@media (width >= 1280px) {
.xl\:ratio-16-9 {
padding-top: 56.25%;
}
.xl\:ratio-21-9 {
padding-top: 42.85%;
}
.xl\:ratio-32-9 {
padding-top: 28.125%;
}
}
@media (width >= 1536px) {
.\32xl\:ratio-16-9 {
padding-top: 56.25%;
}
.\32xl\:ratio-21-9 {
padding-top: 42.85%;
}
.\32xl\:ratio-32-9 {
padding-top: 28.125%;
}
}

View File

@@ -0,0 +1,226 @@
/* -- Chroma Highlight -- */
/* Background */
.prose .chroma {
@apply static rounded-md text-neutral-700 bg-neutral-50 dark:bg-neutral-700 dark:text-neutral-200;
}
/* LineTableTD */
.chroma .lntd,
.chroma .lntd pre {
@apply p-0 m-0 align-top border-none;
}
/* LineTable */
.chroma .lntable {
@apply block w-auto px-4 py-3 overflow-hidden text-base;
border-spacing: 0;
}
/* LineHighlight */
.chroma .hl {
@apply block w-auto px-4 -mx-4 bg-primary-100 dark:bg-primary-900;
}
.chroma .lntd .hl {
@apply p-0 m-0;
}
/* LineNumbersTable */
/* LineNumbers */
.chroma .lnt,
.chroma .ln {
@apply text-neutral-600 dark:text-neutral-300 mr-[0.4em] px-[0.4em] py-0;
}
/* Keyword */
/* KeywordDeclaration */
/* KeywordNamespace */
/* KeywordPseudo */
/* KeywordReserved */
/* NameClass */
/* NameFunctionMagic */
/* NameNamespace */
/* NameVariableClass */
/* Operator */
.chroma .k,
.chroma .kd,
.chroma .kn,
.chroma .kp,
.chroma .kr,
.chroma .nc,
.chroma .fm,
.chroma .nn,
.chroma .vc,
.chroma .o {
@apply text-primary-600 dark:text-primary-300;
}
/* KeywordConstant */
.chroma .kc {
@apply font-semibold text-secondary-400 dark:text-secondary-500;
}
/* KeywordType */
/* NameVariable */
/* NameVariableInstance */
/* NameVariableMagic */
/* LiteralNumber */
/* LiteralNumberBin */
/* LiteralNumberFloat */
/* LiteralNumberHex */
/* LiteralNumberInteger */
/* LiteralNumberIntegerLong */
/* LiteralNumberOct */
.chroma .kt,
.chroma .nv,
.chroma .vi,
.chroma .vm,
.chroma .m,
.chroma .mb,
.chroma .mf,
.chroma .mh,
.chroma .mi,
.chroma .il,
.chroma .mo {
@apply text-secondary-400 dark:text-secondary-600;
}
/* Name */
/* NameDecorator */
/* NameEntity */
/* NameLabel */
.chroma .n,
.chroma .nd,
.chroma .ni,
.chroma .nl {
@apply text-secondary-900 dark:text-secondary-200;
}
/* NameAttribute */
/* NameBuiltin */
/* NameBuiltinPseudo */
/* NameOther */
/* NameProperty */
/* NameTag */
.chroma .na,
.chroma .nb,
.chroma .bp,
.chroma .nx,
.chroma .py,
.chroma .nt {
@apply text-secondary-800 dark:text-secondary-300;
}
/* NameConstant */
/* NameException */
/* NameVariableGlobal */
.chroma .no,
.chroma .ne,
.chroma .vg {
@apply font-semibold text-secondary-400 dark:text-secondary-500;
}
/* NameFunction */
.chroma .nf {
@apply text-secondary-600 dark:text-secondary-500;
}
/* Literal */
/* LiteralDate */
/* LiteralString */
/* LiteralStringAffix */
/* LiteralStringBacktick */
/* LiteralStringChar */
/* LiteralStringDelimiter */
/* LiteralStringDoc */
/* LiteralStringDouble */
/* LiteralStringHeredoc */
/* LiteralStringInterpol */
/* LiteralStringOther */
/* LiteralStringSingle */
/* GenericInserted */
/* GenericOutput */
/* GenericPrompt */
.chroma .l,
.chroma .ld,
.chroma .s,
.chroma .sa,
.chroma .sb,
.chroma .sc,
.chroma .dl,
.chroma .sd,
.chroma .s2,
.chroma .sh,
.chroma .si,
.chroma .sx,
.chroma .s1,
.chroma .gi,
.chroma .go,
.chroma .gp {
@apply text-primary-800 dark:text-primary-400;
}
/* LiteralStringEscape */
.chroma .se {
@apply font-semibold text-secondary-400 dark:text-secondary-500;
}
/* LiteralStringRegex */
/* LiteralStringSymbol */
.chroma .sr,
.chroma .ss {
@apply font-semibold text-primary-800 dark:text-primary-400;
}
/* OperatorWord */
.chroma .ow {
@apply font-semibold text-primary-400 dark:text-primary-600;
}
/* Comment */
/* CommentMultiline */
/* CommentSingle */
/* CommentSpecial */
/* CommentPreproc */
/* CommentPreprocFile */
.chroma .c,
.chroma .cm,
.chroma .c1,
.chroma .cs,
.chroma .cp,
.chroma .cpf {
@apply italic text-neutral-500 dark:text-neutral-400;
}
/* CommentHashbang */
.chroma .ch {
@apply italic font-semibold text-neutral-500 dark:text-neutral-400;
}
/* GenericEmph */
.chroma .ge {
@apply italic;
}
/* GenericHeading */
.chroma .gh {
@apply font-semibold text-neutral-500;
}
/* GenericStrong */
.chroma .gs {
@apply font-semibold;
}
/* GenericSubheading */
/* GenericTraceback */
.chroma .gu,
.chroma .gt {
@apply text-neutral-500;
}
/* GenericUnderline */
.chroma .gl {
@apply underline;
}

View File

@@ -0,0 +1,579 @@
/* Gallery Specific Styles */
.grid-w10 {
width: calc(10% - 5px);
margin: 0px !important;
}
.grid-w15 {
width: calc(15% - 5px);
margin: 0px !important;
}
.grid-w20 {
width: calc(20% - 5px);
margin: 0px !important;
}
.grid-w25 {
width: calc(25% - 5px);
margin: 0px !important;
}
.grid-w30 {
width: calc(30% - 5px);
margin: 0px !important;
}
.grid-w33 {
width: calc(33% - 5px);
margin: 0px !important;
}
.grid-w35 {
width: calc(35% - 5px);
margin: 0px !important;
}
.grid-w40 {
width: calc(40% - 5px);
margin: 0px !important;
}
.grid-w45 {
width: calc(45% - 5px);
margin: 0px !important;
}
.grid-w50 {
width: calc(50% - 5px);
margin: 0px !important;
}
.grid-w55 {
width: calc(55% - 5px);
margin: 0px !important;
}
.grid-w60 {
width: calc(60% - 5px);
margin: 0px !important;
}
.grid-w65 {
width: calc(65% - 5px);
margin: 0px !important;
}
.grid-w66 {
width: calc(66% - 5px);
margin: 0px !important;
}
.grid-w70 {
width: calc(70% - 5px);
margin: 0px !important;
}
.grid-w75 {
width: calc(75% - 5px);
margin: 0px !important;
}
.grid-w80 {
width: calc(80% - 5px);
margin: 0px !important;
}
.grid-w85 {
width: calc(85% - 5px);
margin: 0px !important;
}
.grid-w90 {
width: calc(90% - 5px);
margin: 0px !important;
}
.grid-w95 {
width: calc(95% - 5px);
margin: 0px !important;
}
.grid-w100 {
width: calc(100% - 5px);
margin: 0px !important;
}
@media (width >= 640px) {
.sm\:grid-w10 {
width: calc(10% - 5px);
margin: 0px !important;
}
.sm\:grid-w15 {
width: calc(15% - 5px);
margin: 0px !important;
}
.sm\:grid-w20 {
width: calc(20% - 5px);
margin: 0px !important;
}
.sm\:grid-w25 {
width: calc(25% - 5px);
margin: 0px !important;
}
.sm\:grid-w30 {
width: calc(30% - 5px);
margin: 0px !important;
}
.sm\:grid-w33 {
width: calc(33% - 5px);
margin: 0px !important;
}
.sm\:grid-w35 {
width: calc(35% - 5px);
margin: 0px !important;
}
.sm\:grid-w40 {
width: calc(40% - 5px);
margin: 0px !important;
}
.sm\:grid-w45 {
width: calc(45% - 5px);
margin: 0px !important;
}
.sm\:grid-w50 {
width: calc(50% - 5px);
margin: 0px !important;
}
.sm\:grid-w55 {
width: calc(55% - 5px);
margin: 0px !important;
}
.sm\:grid-w60 {
width: calc(60% - 5px);
margin: 0px !important;
}
.sm\:grid-w65 {
width: calc(65% - 5px);
margin: 0px !important;
}
.sm\:grid-w66 {
width: calc(66% - 5px);
margin: 0px !important;
}
.sm\:grid-w70 {
width: calc(70% - 5px);
margin: 0px !important;
}
.sm\:grid-w75 {
width: calc(75% - 5px);
margin: 0px !important;
}
.sm\:grid-w80 {
width: calc(80% - 5px);
margin: 0px !important;
}
.sm\:grid-w85 {
width: calc(85% - 5px);
margin: 0px !important;
}
.sm\:grid-w90 {
width: calc(90% - 5px);
margin: 0px !important;
}
.sm\:grid-w95 {
width: calc(95% - 5px);
margin: 0px !important;
}
.sm\:grid-w100 {
width: calc(100% - 5px);
margin: 0px !important;
}
}
@media (width >= 853px) {
.md\:grid-w10 {
width: calc(10% - 5px);
margin: 0px !important;
}
.md\:grid-w15 {
width: calc(15% - 5px);
margin: 0px !important;
}
.md\:grid-w20 {
width: calc(20% - 5px);
margin: 0px !important;
}
.md\:grid-w25 {
width: calc(25% - 5px);
margin: 0px !important;
}
.md\:grid-w30 {
width: calc(30% - 5px);
margin: 0px !important;
}
.md\:grid-w33 {
width: calc(33% - 5px);
margin: 0px !important;
}
.md\:grid-w35 {
width: calc(35% - 5px);
margin: 0px !important;
}
.md\:grid-w40 {
width: calc(40% - 5px);
margin: 0px !important;
}
.md\:grid-w45 {
width: calc(45% - 5px);
margin: 0px !important;
}
.md\:grid-w50 {
width: calc(50% - 5px);
margin: 0px !important;
}
.md\:grid-w55 {
width: calc(55% - 5px);
margin: 0px !important;
}
.md\:grid-w60 {
width: calc(60% - 5px);
margin: 0px !important;
}
.md\:grid-w65 {
width: calc(65% - 5px);
margin: 0px !important;
}
.md\:grid-w66 {
width: calc(66% - 5px);
margin: 0px !important;
}
.md\:grid-w70 {
width: calc(70% - 5px);
margin: 0px !important;
}
.md\:grid-w75 {
width: calc(75% - 5px);
margin: 0px !important;
}
.md\:grid-w80 {
width: calc(80% - 5px);
margin: 0px !important;
}
.md\:grid-w85 {
width: calc(85% - 5px);
margin: 0px !important;
}
.md\:grid-w90 {
width: calc(90% - 5px);
margin: 0px !important;
}
.md\:grid-w95 {
width: calc(95% - 5px);
margin: 0px !important;
}
.md\:grid-w100 {
width: calc(100% - 5px);
margin: 0px !important;
}
}
@media (width >= 1024px) {
.lg\:grid-w10 {
width: calc(10% - 5px);
margin: 0px !important;
}
.lg\:grid-w15 {
width: calc(15% - 5px);
margin: 0px !important;
}
.lg\:grid-w20 {
width: calc(20% - 5px);
margin: 0px !important;
}
.lg\:grid-w25 {
width: calc(25% - 5px);
margin: 0px !important;
}
.lg\:grid-w30 {
width: calc(30% - 5px);
margin: 0px !important;
}
.lg\:grid-w33 {
width: calc(33% - 5px);
margin: 0px !important;
}
.lg\:grid-w35 {
width: calc(35% - 5px);
margin: 0px !important;
}
.lg\:grid-w40 {
width: calc(40% - 5px);
margin: 0px !important;
}
.lg\:grid-w45 {
width: calc(45% - 5px);
margin: 0px !important;
}
.lg\:grid-w50 {
width: calc(50% - 5px);
margin: 0px !important;
}
.lg\:grid-w55 {
width: calc(55% - 5px);
margin: 0px !important;
}
.lg\:grid-w60 {
width: calc(60% - 5px);
margin: 0px !important;
}
.lg\:grid-w65 {
width: calc(65% - 5px);
margin: 0px !important;
}
.lg\:grid-w66 {
width: calc(66% - 5px);
margin: 0px !important;
}
.lg\:grid-w70 {
width: calc(70% - 5px);
margin: 0px !important;
}
.lg\:grid-w75 {
width: calc(75% - 5px);
margin: 0px !important;
}
.lg\:grid-w80 {
width: calc(80% - 5px);
margin: 0px !important;
}
.lg\:grid-w85 {
width: calc(85% - 5px);
margin: 0px !important;
}
.lg\:grid-w90 {
width: calc(90% - 5px);
margin: 0px !important;
}
.lg\:grid-w95 {
width: calc(95% - 5px);
margin: 0px !important;
}
.lg\:grid-w100 {
width: calc(100% - 5px);
margin: 0px !important;
}
}
@media (width >= 1280px) {
.xl\:grid-w10 {
width: calc(10% - 5px);
margin: 0px !important;
}
.xl\:grid-w15 {
width: calc(15% - 5px);
margin: 0px !important;
}
.xl\:grid-w20 {
width: calc(20% - 5px);
margin: 0px !important;
}
.xl\:grid-w25 {
width: calc(25% - 5px);
margin: 0px !important;
}
.xl\:grid-w30 {
width: calc(30% - 5px);
margin: 0px !important;
}
.xl\:grid-w33 {
width: calc(33% - 5px);
margin: 0px !important;
}
.xl\:grid-w35 {
width: calc(35% - 5px);
margin: 0px !important;
}
.xl\:grid-w40 {
width: calc(40% - 5px);
margin: 0px !important;
}
.xl\:grid-w45 {
width: calc(45% - 5px);
margin: 0px !important;
}
.xl\:grid-w50 {
width: calc(50% - 5px);
margin: 0px !important;
}
.xl\:grid-w55 {
width: calc(55% - 5px);
margin: 0px !important;
}
.xl\:grid-w60 {
width: calc(60% - 5px);
margin: 0px !important;
}
.xl\:grid-w65 {
width: calc(65% - 5px);
margin: 0px !important;
}
.xl\:grid-w66 {
width: calc(66% - 5px);
margin: 0px !important;
}
.xl\:grid-w70 {
width: calc(70% - 5px);
margin: 0px !important;
}
.xl\:grid-w75 {
width: calc(75% - 5px);
margin: 0px !important;
}
.xl\:grid-w80 {
width: calc(80% - 5px);
margin: 0px !important;
}
.xl\:grid-w85 {
width: calc(85% - 5px);
margin: 0px !important;
}
.xl\:grid-w90 {
width: calc(90% - 5px);
margin: 0px !important;
}
.xl\:grid-w95 {
width: calc(95% - 5px);
margin: 0px !important;
}
.xl\:grid-w100 {
width: calc(100% - 5px);
margin: 0px !important;
}
}
@media (width >= 1536px) {
.\32xl\:grid-w10 {
width: calc(10% - 5px);
margin: 0px !important;
}
.\32xl\:grid-w15 {
width: calc(15% - 5px);
margin: 0px !important;
}
.\32xl\:grid-w20 {
width: calc(20% - 5px);
margin: 0px !important;
}
.\32xl\:grid-w25 {
width: calc(25% - 5px);
margin: 0px !important;
}
.\32xl\:grid-w30 {
width: calc(30% - 5px);
margin: 0px !important;
}
.\32xl\:grid-w33 {
width: calc(33% - 5px);
margin: 0px !important;
}
.\32xl\:grid-w35 {
width: calc(35% - 5px);
margin: 0px !important;
}
.\32xl\:grid-w40 {
width: calc(40% - 5px);
margin: 0px !important;
}
.\32xl\:grid-w45 {
width: calc(45% - 5px);
margin: 0px !important;
}
.\32xl\:grid-w50 {
width: calc(50% - 5px);
margin: 0px !important;
}
.\32xl\:grid-w55 {
width: calc(55% - 5px);
margin: 0px !important;
}
.\32xl\:grid-w60 {
width: calc(60% - 5px);
margin: 0px !important;
}
.\32xl\:grid-w65 {
width: calc(65% - 5px);
margin: 0px !important;
}
.\32xl\:grid-w66 {
width: calc(66% - 5px);
margin: 0px !important;
}
.\32xl\:grid-w70 {
width: calc(70% - 5px);
margin: 0px !important;
}
.\32xl\:grid-w75 {
width: calc(75% - 5px);
margin: 0px !important;
}
.\32xl\:grid-w80 {
width: calc(80% - 5px);
margin: 0px !important;
}
.\32xl\:grid-w85 {
width: calc(85% - 5px);
margin: 0px !important;
}
.\32xl\:grid-w90 {
width: calc(90% - 5px);
margin: 0px !important;
}
.\32xl\:grid-w95 {
width: calc(95% - 5px);
margin: 0px !important;
}
.\32xl\:grid-w100 {
width: calc(100% - 5px);
margin: 0px !important;
}
}
.ratio-16-9 {
padding-top: 56.25%;
}
.ratio-21-9 {
padding-top: 42.85%;
}
.ratio-32-9 {
padding-top: 28.125%;
}
@media (width >= 640px) {
.sm\:ratio-16-9 {
padding-top: 56.25%;
}
.sm\:ratio-21-9 {
padding-top: 42.85%;
}
.sm\:ratio-32-9 {
padding-top: 28.125%;
}
}
@media (width >= 853px) {
.md\:ratio-16-9 {
padding-top: 56.25%;
}
.md\:ratio-21-9 {
padding-top: 42.85%;
}
.md\:ratio-32-9 {
padding-top: 28.125%;
}
}
@media (width >= 1024px) {
.lg\:ratio-16-9 {
padding-top: 56.25%;
}
.lg\:ratio-21-9 {
padding-top: 42.85%;
}
.lg\:ratio-32-9 {
padding-top: 28.125%;
}
}
@media (width >= 1280px) {
.xl\:ratio-16-9 {
padding-top: 56.25%;
}
.xl\:ratio-21-9 {
padding-top: 42.85%;
}
.xl\:ratio-32-9 {
padding-top: 28.125%;
}
}
@media (width >= 1536px) {
.\32xl\:ratio-16-9 {
padding-top: 56.25%;
}
.\32xl\:ratio-21-9 {
padding-top: 42.85%;
}
.\32xl\:ratio-32-9 {
padding-top: 28.125%;
}
}

View File

@@ -1,6 +1,8 @@
/*! Blowfish | MIT License | https://github.com/nunocoracao/blowfish */
@import "./components/zen-mode.css";
@import "./components/chroma.css";
@import "./components/a11y.css";
@import "tailwindcss";
@config "../../tailwind.config.js";
@@ -151,275 +153,42 @@ a {
overflow-wrap: break-word;
}
/* -- Chroma Highlight -- */
/* Background */
.prose .chroma {
@apply static rounded-md text-neutral-700 bg-neutral-50 dark:bg-neutral-700 dark:text-neutral-200;
}
.prose-invert .highlight pre > code {
background-color: unset;
}
/* LineTableTD */
.chroma .lntd,
.chroma .lntd pre {
@apply p-0 m-0 align-top border-none;
}
/* LineTable */
.chroma .lntable {
@apply block w-auto px-4 py-3 overflow-hidden text-base;
border-spacing: 0;
}
/* LineHighlight */
.chroma .hl {
@apply block w-auto px-4 -mx-4 bg-primary-100 dark:bg-primary-900;
}
.chroma .lntd .hl {
@apply p-0 m-0;
}
/* LineNumbersTable */
/* LineNumbers */
.chroma .lnt,
.chroma .ln {
@apply text-neutral-600 dark:text-neutral-300 mr-[0.4em] px-[0.4em] py-0;
}
/* Keyword */
/* KeywordDeclaration */
/* KeywordNamespace */
/* KeywordPseudo */
/* KeywordReserved */
/* NameClass */
/* NameFunctionMagic */
/* NameNamespace */
/* NameVariableClass */
/* Operator */
.chroma .k,
.chroma .kd,
.chroma .kn,
.chroma .kp,
.chroma .kr,
.chroma .nc,
.chroma .fm,
.chroma .nn,
.chroma .vc,
.chroma .o {
@apply text-primary-600 dark:text-primary-300;
}
/* KeywordConstant */
.chroma .kc {
@apply font-semibold text-secondary-400 dark:text-secondary-500;
}
/* KeywordType */
/* NameVariable */
/* NameVariableInstance */
/* NameVariableMagic */
/* LiteralNumber */
/* LiteralNumberBin */
/* LiteralNumberFloat */
/* LiteralNumberHex */
/* LiteralNumberInteger */
/* LiteralNumberIntegerLong */
/* LiteralNumberOct */
.chroma .kt,
.chroma .nv,
.chroma .vi,
.chroma .vm,
.chroma .m,
.chroma .mb,
.chroma .mf,
.chroma .mh,
.chroma .mi,
.chroma .il,
.chroma .mo {
@apply text-secondary-400 dark:text-secondary-600;
}
/* Name */
/* NameDecorator */
/* NameEntity */
/* NameLabel */
.chroma .n,
.chroma .nd,
.chroma .ni,
.chroma .nl {
@apply text-secondary-900 dark:text-secondary-200;
}
/* NameAttribute */
/* NameBuiltin */
/* NameBuiltinPseudo */
/* NameOther */
/* NameProperty */
/* NameTag */
.chroma .na,
.chroma .nb,
.chroma .bp,
.chroma .nx,
.chroma .py,
.chroma .nt {
@apply text-secondary-800 dark:text-secondary-300;
}
/* NameConstant */
/* NameException */
/* NameVariableGlobal */
.chroma .no,
.chroma .ne,
.chroma .vg {
@apply font-semibold text-secondary-400 dark:text-secondary-500;
}
/* NameFunction */
.chroma .nf {
@apply text-secondary-600 dark:text-secondary-500;
}
/* Literal */
/* LiteralDate */
/* LiteralString */
/* LiteralStringAffix */
/* LiteralStringBacktick */
/* LiteralStringChar */
/* LiteralStringDelimiter */
/* LiteralStringDoc */
/* LiteralStringDouble */
/* LiteralStringHeredoc */
/* LiteralStringInterpol */
/* LiteralStringOther */
/* LiteralStringSingle */
/* GenericInserted */
/* GenericOutput */
/* GenericPrompt */
.chroma .l,
.chroma .ld,
.chroma .s,
.chroma .sa,
.chroma .sb,
.chroma .sc,
.chroma .dl,
.chroma .sd,
.chroma .s2,
.chroma .sh,
.chroma .si,
.chroma .sx,
.chroma .s1,
.chroma .gi,
.chroma .go,
.chroma .gp {
@apply text-primary-800 dark:text-primary-400;
}
/* LiteralStringEscape */
.chroma .se {
@apply font-semibold text-secondary-400 dark:text-secondary-500;
}
/* LiteralStringRegex */
/* LiteralStringSymbol */
.chroma .sr,
.chroma .ss {
@apply font-semibold text-primary-800 dark:text-primary-400;
}
/* OperatorWord */
.chroma .ow {
@apply font-semibold text-primary-400 dark:text-primary-600;
}
/* Comment */
/* CommentMultiline */
/* CommentSingle */
/* CommentSpecial */
/* CommentPreproc */
/* CommentPreprocFile */
.chroma .c,
.chroma .cm,
.chroma .c1,
.chroma .cs,
.chroma .cp,
.chroma .cpf {
@apply italic text-neutral-500 dark:text-neutral-400;
}
/* CommentHashbang */
.chroma .ch {
@apply italic font-semibold text-neutral-500 dark:text-neutral-400;
}
/* GenericEmph */
.chroma .ge {
@apply italic;
}
/* GenericHeading */
.chroma .gh {
@apply font-semibold text-neutral-500;
}
/* GenericStrong */
.chroma .gs {
@apply font-semibold;
}
/* GenericSubheading */
/* GenericTraceback */
.chroma .gu,
.chroma .gt {
@apply text-neutral-500;
}
/* GenericUnderline */
.chroma .gl {
@apply underline;
}
/* Custom */
pre {
text-align: left;
}
.thumbnail {
min-width: 300px;
height: 180px;
.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;
background-repeat: no-repeat;
background-size: cover;
background-position: center;
}
.thumbnail_card_related {
height: 150px;
background-repeat: no-repeat;
background-size: cover;
background-position: center;
}
.thumbnail_card_term {
height: 150px;
background-repeat: no-repeat;
background-size: cover;
background-position: center;
}
.single_hero_basic {
background-repeat: no-repeat;
background-size: cover;
background-position: center;
}
.single_hero_round {
@@ -428,9 +197,6 @@ pre {
}
.single_hero_background {
background-repeat: no-repeat;
background-size: cover;
background-position: center;
z-index: -10;
}
@@ -457,7 +223,7 @@ pre {
scroll-margin-top: 145px;
}
@screen sm {
@variant sm {
.thumbnail {
min-width: 100%;
height: 180px;
@@ -467,7 +233,7 @@ pre {
}
}
@screen md {
@variant md {
.thumbnail {
min-width: 300px;
min-height: 180px;
@@ -513,594 +279,7 @@ pre {
text-underline-offset: 4px;
}
/* Gallery Specific Styles */
.grid-w10 {
width: calc(10% - 5px);
margin: 0px !important;
}
.grid-w15 {
width: calc(15% - 5px);
margin: 0px !important;
}
.grid-w20 {
width: calc(20% - 5px);
margin: 0px !important;
}
.grid-w25 {
width: calc(25% - 5px);
margin: 0px !important;
}
.grid-w30 {
width: calc(30% - 5px);
margin: 0px !important;
}
.grid-w33 {
width: calc(33% - 5px);
margin: 0px !important;
}
.grid-w35 {
width: calc(35% - 5px);
margin: 0px !important;
}
.grid-w40 {
width: calc(40% - 5px);
margin: 0px !important;
}
.grid-w45 {
width: calc(45% - 5px);
margin: 0px !important;
}
.grid-w50 {
width: calc(50% - 5px);
margin: 0px !important;
}
.grid-w55 {
width: calc(55% - 5px);
margin: 0px !important;
}
.grid-w60 {
width: calc(60% - 5px);
margin: 0px !important;
}
.grid-w65 {
width: calc(65% - 5px);
margin: 0px !important;
}
.grid-w66 {
width: calc(66% - 5px);
margin: 0px !important;
}
.grid-w70 {
width: calc(70% - 5px);
margin: 0px !important;
}
.grid-w75 {
width: calc(75% - 5px);
margin: 0px !important;
}
.grid-w80 {
width: calc(80% - 5px);
margin: 0px !important;
}
.grid-w85 {
width: calc(85% - 5px);
margin: 0px !important;
}
.grid-w90 {
width: calc(90% - 5px);
margin: 0px !important;
}
.grid-w95 {
width: calc(95% - 5px);
margin: 0px !important;
}
.grid-w100 {
width: calc(100% - 5px);
margin: 0px !important;
}
@screen sm {
.sm\:grid-w10 {
width: calc(10% - 5px);
margin: 0px !important;
}
.sm\:grid-w15 {
width: calc(15% - 5px);
margin: 0px !important;
}
.sm\:grid-w20 {
width: calc(20% - 5px);
margin: 0px !important;
}
.sm\:grid-w25 {
width: calc(25% - 5px);
margin: 0px !important;
}
.sm\:grid-w30 {
width: calc(30% - 5px);
margin: 0px !important;
}
.sm\:grid-w33 {
width: calc(33% - 5px);
margin: 0px !important;
}
.sm\:grid-w35 {
width: calc(35% - 5px);
margin: 0px !important;
}
.sm\:grid-w40 {
width: calc(40% - 5px);
margin: 0px !important;
}
.sm\:grid-w45 {
width: calc(45% - 5px);
margin: 0px !important;
}
.sm\:grid-w50 {
width: calc(50% - 5px);
margin: 0px !important;
}
.sm\:grid-w55 {
width: calc(55% - 5px);
margin: 0px !important;
}
.sm\:grid-w60 {
width: calc(60% - 5px);
margin: 0px !important;
}
.sm\:grid-w65 {
width: calc(65% - 5px);
margin: 0px !important;
}
.sm\:grid-w66 {
width: calc(66% - 5px);
margin: 0px !important;
}
.sm\:grid-w70 {
width: calc(70% - 5px);
margin: 0px !important;
}
.sm\:grid-w75 {
width: calc(75% - 5px);
margin: 0px !important;
}
.sm\:grid-w80 {
width: calc(80% - 5px);
margin: 0px !important;
}
.sm\:grid-w85 {
width: calc(85% - 5px);
margin: 0px !important;
}
.sm\:grid-w90 {
width: calc(90% - 5px);
margin: 0px !important;
}
.sm\:grid-w95 {
width: calc(95% - 5px);
margin: 0px !important;
}
.sm\:grid-w100 {
width: calc(100% - 5px);
margin: 0px !important;
}
}
@screen md {
.md\:grid-w10 {
width: calc(10% - 5px);
margin: 0px !important;
}
.md\:grid-w15 {
width: calc(15% - 5px);
margin: 0px !important;
}
.md\:grid-w20 {
width: calc(20% - 5px);
margin: 0px !important;
}
.md\:grid-w25 {
width: calc(25% - 5px);
margin: 0px !important;
}
.md\:grid-w30 {
width: calc(30% - 5px);
margin: 0px !important;
}
.md\:grid-w33 {
width: calc(33% - 5px);
margin: 0px !important;
}
.md\:grid-w35 {
width: calc(35% - 5px);
margin: 0px !important;
}
.md\:grid-w40 {
width: calc(40% - 5px);
margin: 0px !important;
}
.md\:grid-w45 {
width: calc(45% - 5px);
margin: 0px !important;
}
.md\:grid-w50 {
width: calc(50% - 5px);
margin: 0px !important;
}
.md\:grid-w55 {
width: calc(55% - 5px);
margin: 0px !important;
}
.md\:grid-w60 {
width: calc(60% - 5px);
margin: 0px !important;
}
.md\:grid-w65 {
width: calc(65% - 5px);
margin: 0px !important;
}
.md\:grid-w66 {
width: calc(66% - 5px);
margin: 0px !important;
}
.md\:grid-w70 {
width: calc(70% - 5px);
margin: 0px !important;
}
.md\:grid-w75 {
width: calc(75% - 5px);
margin: 0px !important;
}
.md\:grid-w80 {
width: calc(80% - 5px);
margin: 0px !important;
}
.md\:grid-w85 {
width: calc(85% - 5px);
margin: 0px !important;
}
.md\:grid-w90 {
width: calc(90% - 5px);
margin: 0px !important;
}
.md\:grid-w95 {
width: calc(95% - 5px);
margin: 0px !important;
}
.md\:grid-w100 {
width: calc(100% - 5px);
margin: 0px !important;
}
}
@screen lg {
.lg\:grid-w10 {
width: calc(10% - 5px);
margin: 0px !important;
}
.lg\:grid-w15 {
width: calc(15% - 5px);
margin: 0px !important;
}
.lg\:grid-w20 {
width: calc(20% - 5px);
margin: 0px !important;
}
.lg\:grid-w25 {
width: calc(25% - 5px);
margin: 0px !important;
}
.lg\:grid-w30 {
width: calc(30% - 5px);
margin: 0px !important;
}
.lg\:grid-w33 {
width: calc(33% - 5px);
margin: 0px !important;
}
.lg\:grid-w35 {
width: calc(35% - 5px);
margin: 0px !important;
}
.lg\:grid-w40 {
width: calc(40% - 5px);
margin: 0px !important;
}
.lg\:grid-w45 {
width: calc(45% - 5px);
margin: 0px !important;
}
.lg\:grid-w50 {
width: calc(50% - 5px);
margin: 0px !important;
}
.lg\:grid-w55 {
width: calc(55% - 5px);
margin: 0px !important;
}
.lg\:grid-w60 {
width: calc(60% - 5px);
margin: 0px !important;
}
.lg\:grid-w65 {
width: calc(65% - 5px);
margin: 0px !important;
}
.lg\:grid-w66 {
width: calc(66% - 5px);
margin: 0px !important;
}
.lg\:grid-w70 {
width: calc(70% - 5px);
margin: 0px !important;
}
.lg\:grid-w75 {
width: calc(75% - 5px);
margin: 0px !important;
}
.lg\:grid-w80 {
width: calc(80% - 5px);
margin: 0px !important;
}
.lg\:grid-w85 {
width: calc(85% - 5px);
margin: 0px !important;
}
.lg\:grid-w90 {
width: calc(90% - 5px);
margin: 0px !important;
}
.lg\:grid-w95 {
width: calc(95% - 5px);
margin: 0px !important;
}
.lg\:grid-w100 {
width: calc(100% - 5px);
margin: 0px !important;
}
}
@screen xl {
.xl\:grid-w10 {
width: calc(10% - 5px);
margin: 0px !important;
}
.xl\:grid-w15 {
width: calc(15% - 5px);
margin: 0px !important;
}
.xl\:grid-w20 {
width: calc(20% - 5px);
margin: 0px !important;
}
.xl\:grid-w25 {
width: calc(25% - 5px);
margin: 0px !important;
}
.xl\:grid-w30 {
width: calc(30% - 5px);
margin: 0px !important;
}
.xl\:grid-w33 {
width: calc(33% - 5px);
margin: 0px !important;
}
.xl\:grid-w35 {
width: calc(35% - 5px);
margin: 0px !important;
}
.xl\:grid-w40 {
width: calc(40% - 5px);
margin: 0px !important;
}
.xl\:grid-w45 {
width: calc(45% - 5px);
margin: 0px !important;
}
.xl\:grid-w50 {
width: calc(50% - 5px);
margin: 0px !important;
}
.xl\:grid-w55 {
width: calc(55% - 5px);
margin: 0px !important;
}
.xl\:grid-w60 {
width: calc(60% - 5px);
margin: 0px !important;
}
.xl\:grid-w65 {
width: calc(65% - 5px);
margin: 0px !important;
}
.xl\:grid-w66 {
width: calc(66% - 5px);
margin: 0px !important;
}
.xl\:grid-w70 {
width: calc(70% - 5px);
margin: 0px !important;
}
.xl\:grid-w75 {
width: calc(75% - 5px);
margin: 0px !important;
}
.xl\:grid-w80 {
width: calc(80% - 5px);
margin: 0px !important;
}
.xl\:grid-w85 {
width: calc(85% - 5px);
margin: 0px !important;
}
.xl\:grid-w90 {
width: calc(90% - 5px);
margin: 0px !important;
}
.xl\:grid-w95 {
width: calc(95% - 5px);
margin: 0px !important;
}
.xl\:grid-w100 {
width: calc(100% - 5px);
margin: 0px !important;
}
}
@screen 2xl {
.2xl\:grid-w10 {
width: calc(10% - 5px);
margin: 0px !important;
}
.2xl\:grid-w15 {
width: calc(15% - 5px);
margin: 0px !important;
}
.2xl\:grid-w20 {
width: calc(20% - 5px);
margin: 0px !important;
}
.2xl\:grid-w25 {
width: calc(25% - 5px);
margin: 0px !important;
}
.2xl\:grid-w30 {
width: calc(30% - 5px);
margin: 0px !important;
}
.2xl\:grid-w33 {
width: calc(33% - 5px);
margin: 0px !important;
}
.2xl\:grid-w35 {
width: calc(35% - 5px);
margin: 0px !important;
}
.2xl\:grid-w40 {
width: calc(40% - 5px);
margin: 0px !important;
}
.2xl\:grid-w45 {
width: calc(45% - 5px);
margin: 0px !important;
}
.2xl\:grid-w50 {
width: calc(50% - 5px);
margin: 0px !important;
}
.2xl\:grid-w55 {
width: calc(55% - 5px);
margin: 0px !important;
}
.2xl\:grid-w60 {
width: calc(60% - 5px);
margin: 0px !important;
}
.2xl\:grid-w65 {
width: calc(65% - 5px);
margin: 0px !important;
}
.2xl\:grid-w66 {
width: calc(66% - 5px);
margin: 0px !important;
}
.2xl\:grid-w70 {
width: calc(70% - 5px);
margin: 0px !important;
}
.2xl\:grid-w75 {
width: calc(75% - 5px);
margin: 0px !important;
}
.2xl\:grid-w80 {
width: calc(80% - 5px);
margin: 0px !important;
}
.2xl\:grid-w85 {
width: calc(85% - 5px);
margin: 0px !important;
}
.2xl\:grid-w90 {
width: calc(90% - 5px);
margin: 0px !important;
}
.2xl\:grid-w95 {
width: calc(95% - 5px);
margin: 0px !important;
}
.2xl\:grid-w100 {
width: calc(100% - 5px);
margin: 0px !important;
}
}
/* Carousel Specific Styles */
.ratio-16-9 {
padding-top: 56.25%;
} /* 16:9 Aspect Ratio */
.ratio-21-9 {
padding-top: 42.85%;
} /* 21:9 Aspect Ratio */
.ratio-32-9 {
padding-top: 28.125%;
} /* 32:9 Aspect Ratio */
@screen sm {
.sm\:ratio-16-9 {
padding-top: 56.25%;
} /* 16:9 Aspect Ratio */
.sm\:ratio-21-9 {
padding-top: 42.85%;
} /* 21:9 Aspect Ratio */
.sm\:ratio-32-9 {
padding-top: 28.125%;
} /* 32:9 Aspect Ratio */
}
@screen md {
.md\:ratio-16-9 {
padding-top: 56.25%;
} /* 16:9 Aspect Ratio */
.md\:ratio-21-9 {
padding-top: 42.85%;
} /* 21:9 Aspect Ratio */
.md\:ratio-32-9 {
padding-top: 28.125%;
} /* 32:9 Aspect Ratio */
}
@screen lg {
.lg\:ratio-16-9 {
padding-top: 56.25%;
} /* 16:9 Aspect Ratio */
.lg\:ratio-21-9 {
padding-top: 42.85%;
} /* 21:9 Aspect Ratio */
.lg\:ratio-32-9 {
padding-top: 28.125%;
} /* 32:9 Aspect Ratio */
}
@screen xl {
.xl\:ratio-16-9 {
padding-top: 56.25%;
} /* 16:9 Aspect Ratio */
.xl\:ratio-21-9 {
padding-top: 42.85%;
} /* 21:9 Aspect Ratio */
.xl\:ratio-32-9 {
padding-top: 28.125%;
} /* 32:9 Aspect Ratio */
}
@screen 2xl {
.2xl\:ratio-16-9 {
padding-top: 56.25%;
} /* 16:9 Aspect Ratio */
.2xl\:ratio-21-9 {
padding-top: 42.85%;
} /* 21:9 Aspect Ratio */
.2xl\:ratio-32-9 {
padding-top: 28.125%;
} /* 32:9 Aspect Ratio */
/* 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
assets/icons/a11y.svg Normal file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm161.5-86.1c-12.2-5.2-26.3 .4-31.5 12.6s.4 26.3 12.6 31.5l11.9 5.1c17.3 7.4 35.2 12.9 53.6 16.3l0 50.1c0 4.3-.7 8.6-2.1 12.6l-28.7 86.1c-4.2 12.6 2.6 26.2 15.2 30.4s26.2-2.6 30.4-15.2l24.4-73.2c1.3-3.8 4.8-6.4 8.8-6.4s7.6 2.6 8.8 6.4l24.4 73.2c4.2 12.6 17.8 19.4 30.4 15.2s19.4-17.8 15.2-30.4l-28.7-86.1c-1.4-4.1-2.1-8.3-2.1-12.6l0-50.1c18.4-3.5 36.3-8.9 53.6-16.3l11.9-5.1c12.2-5.2 17.8-19.3 12.6-31.5s-19.3-17.8-31.5-12.6L338.7 175c-26.1 11.2-54.2 17-82.7 17s-56.5-5.8-82.7-17l-11.9-5.1zM256 160a40 40 0 1 0 0-80 40 40 0 1 0 0 80z"/></svg>

After

Width:  |  Height:  |  Size: 680 B

View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" width="196.52mm" height="196.52mm" viewBox="0 0 196.52 196.52" version="1.1">
<g fill="currentColor" transform="translate(6.6789703,-32.495842) matrix(0.26458333,0,0,0.26458333,-6.6789703,32.495842)">
<path d="m 181.13086,275.13672 a 68.892408,68.892408 0 0 1 -29.46484,29.32812 l 161.75781,162.38868 38.99805,-19.76368 z m 213.36328,214.1875 -38.99805,19.76367 81.96289,82.2832 a 68.892409,68.892409 0 0 1 29.47071,-29.33203 z"/>
<path d="m 581.64648,339.39062 -91.57617,46.41016 6.75196,43.18945 103.61523,-52.51367 A 68.892409,68.892409 0 0 1 581.64648,339.39062 Z M 436.9082,412.74219 220.38281,522.47656 a 68.892408,68.892408 0 0 1 18.79492,37.08985 L 443.66016,455.93359 Z"/>
<path d="M 367.27539,142.4375 262.79492,346.4082 293.64258,377.375 404.26562,161.41797 A 68.892408,68.892408 0 0 1 367.27539,142.4375 Z m -131.6543,257.02148 -52.92187,103.31446 a 68.892409,68.892409 0 0 1 36.98633,18.97851 l 46.78125,-91.32812 z"/>
<path d="m 150.76758,304.91797 a 68.892408,68.892408 0 0 1 -34.41602,7.19531 68.892408,68.892408 0 0 1 -6.65039,-0.69531 l 30.90235,197.66211 a 68.892409,68.892409 0 0 1 34.41601,-7.19531 68.892409,68.892409 0 0 1 6.64649,0.69531 z"/>
<path d="m 239.3418,560.54492 a 68.892408,68.892408 0 0 1 0.7207,13.87696 68.892408,68.892408 0 0 1 -7.26758,27.17968 l 197.62891,31.71289 a 68.892409,68.892409 0 0 1 -0.72266,-13.8789 68.892409,68.892409 0 0 1 7.26953,-27.17774 z"/>
<path d="m 601.13281,377.19922 -91.21875,178.08203 a 68.892408,68.892408 0 0 1 36.99414,18.98242 L 638.125,396.18359 a 68.892409,68.892409 0 0 1 -36.99219,-18.98437 z"/>
<path d="m 476.72266,125.33008 a 68.892408,68.892408 0 0 1 -29.47071,29.33203 l 141.26563,141.81055 a 68.892409,68.892409 0 0 1 29.46875,-29.33204 z"/>
<path d="m 347.78711,104.63086 -178.57617,90.49805 a 68.892409,68.892409 0 0 1 18.79297,37.08593 l 178.57421,-90.50195 a 68.892408,68.892408 0 0 1 -18.79101,-37.08203 z"/>
<path d="m 446.92578,154.82617 a 68.892408,68.892408 0 0 1 -34.98242,7.48242 68.892408,68.892408 0 0 1 -6.0293,-0.63281 l 15.81836,101.29102 43.16211,6.92578 z m -16,167.02735 37.40039,239.48242 a 68.892409,68.892409 0 0 1 33.91406,-6.94336 68.892409,68.892409 0 0 1 7.20704,0.79101 L 474.08984,328.77734 Z"/>
<path d="m 188.13086,232.97461 a 68.892408,68.892408 0 0 1 0.75781,14.0957 68.892408,68.892408 0 0 1 -7.16015,26.98242 l 101.36914,16.28125 19.92382,-38.9082 z m 173.73633,27.90039 -19.92578,38.91211 239.51367,38.4668 a 68.892409,68.892409 0 0 1 -0.69531,-13.71875 68.892409,68.892409 0 0 1 7.34961,-27.32422 z"/>
</g>
<g fill="currentColor" transform="translate(6.6789703,-32.495842) rotate(3.1178174)">
<circle cx="106.26596" cy="51.535553" r="16.570711" />
<circle cx="171.42836" cy="110.19328" r="16.570711" />
<circle cx="135.76379" cy="190.27704" r="16.570711" />
<circle cx="48.559471" cy="181.1138" r="16.570711" />
<circle cx="30.328812" cy="95.366837" r="16.570711" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 360 385"><g><path fill="currentColor" d="M 323.28223,42.662430 V 15.430205 L 343.04720,0 H 129.15709 L 0,112.2736 h 85.656075 c -0.15534,2.12494 -0.21914,4.04644 -0.21914,6.22563 0,20.84472 7.2192,38.08662 21.67203,51.86089 14.45284,13.79702 32.25124,20.64784 53.32651,20.64784 4.92319,0 9.75059,-0.36794 14.43842,-1.02419 -2.90722,6.50082 -4.37457,12.52302 -4.37457,18.14228 0,9.87526 4.49924,20.4304 13.46715,31.6418 -39.23377,2.6705 -68.06112,9.73264 -86.43702,21.16322 -10.53108,6.49907 -19.000207,14.70396 -25.390349,24.5311 -6.390569,9.89933 -9.577754,20.51525 -9.577754,31.9616 0,9.64822 2.062375,18.33611 6.21907,26.06233 4.156694,7.7263 9.577757,14.07047 16.312223,18.98408 6.71825,4.96781 14.46899,9.10088 23.219,12.46874 8.73429,3.34378 17.40643,5.71858 26.06106,7.06258 8.62707,1.34222 17.20471,1.9985 25.70579,1.9985 13.46887,0 26.95353,-1.73428 40.54711,-5.18707 13.56165,-3.48461 26.28022,-8.64143 38.17105,-15.4927 11.85935,-6.80488 21.51545,-16.0865 28.9219,-27.7183 7.39024,-11.67998 11.09457,-24.80499 11.09457,-39.33613 0,-11.01584 -2.24964,-21.03852 -6.7502,-30.14073 -4.46864,-9.07202 -9.93785,-16.54102 -16.45271,-22.34403 -6.5008,-5.81263 -12.99987,-11.15539 -19.51512,-15.9679 -6.50083,-4.84488 -12.00021,-9.75058 -16.46884,-14.8129 -4.4848,-5.04657 -6.73444,-10.05419 -6.73444,-14.98395 0,-4.92145 1.73422,-9.67183 5.21588,-14.26559 3.45451,-4.6095 7.67376,-9.04795 12.60967,-13.30571 4.93756,-4.24944 9.87523,-8.96788 14.79665,-14.13302 4.92147,-5.14719 9.14072,-11.82739 12.60971,-20.00822 3.48467,-8.17907 5.20318,-17.44489 5.20318,-27.75679 0,-13.4527 -2.54714,-24.46065 -7.54735,-33.31348 -0.59369,-1.02243 -1.21757,-1.80338 -1.87511,-3.02225 l 56.90745,-46.672136 v 17.118526 c -7.39373,0.92969 -6.62422,5.34582 -6.62422,10.6352 v 128.66719 c 0,5.95832 4.8751,10.83382 10.83386,10.83382 h 3.98869 c 5.95835,0 10.83386,-4.87506 10.83386,-10.83382 V 53.29282 c 0,-5.27669 0.77741,-9.68801 -6.56167,-10.63039 z M 215.92220,265.14114 c 1.14099,0.7503 3.7039,2.78075 7.7184,6.03838 4.0495,3.24319 6.797,5.69582 8.26567,7.41432 1.43851,1.66381 3.5792,4.16501 6.37617,7.54734 2.81268,3.3744 4.7184,6.30394 5.71853,8.73425 1.00016,2.4767 2.01603,5.46089 3.04636,8.94556 0.98567,3.44488 1.48486,6.97595 1.48486,10.56169 0,17.04813 -6.56338,29.68007 -19.65604,37.85915 -13.125,8.18083 -28.76651,12.27368 -46.93767,12.27368 -9.18709,0 -18.2031,-1.09289 -27.06247,-3.1951 -8.84322,-2.11665 -17.31192,-5.3362 -25.39035,-9.60185 -8.07846,-4.25771 -14.57754,-10.20337 -19.50072,-17.79659 -4.93764,-7.64012 -7.40645,-16.41464 -7.40645,-26.24962 0,-10.32022 2.79692,-19.28987 8.42233,-26.90588 5.59343,-7.62564 12.93774,-13.3919 22.03208,-17.3154 9.0624,-3.94582 18.24946,-6.74232 27.56166,-8.39827 9.31221,-1.7023 18.79679,-2.555 28.43842,-2.555 4.46862,0 7.93582,0.25115 10.40465,0.69607 0.45456,0.21918 3.03188,2.07025 7.73456,5.56326 4.70401,3.46237 7.62565,5.59519 8.75047,6.38401 z m -3.35823,-100.5779 c -7.40648,8.85938 -17.73454,13.2882 -30.95363,13.2882 -11.85933,0 -22.29766,-4.76482 -31.26554,-14.31195 -8.99984,-9.52309 -15.42235,-20.32803 -19.34408,-32.43061 -3.93752,-12.10871 -5.90585,-23.98423 -5.90585,-35.648 0,-13.6942 3.59542,-25.35184 10.7809,-34.97598 7.18727,-9.64952 17.49915,-14.48477 30.93786,-14.48477 11.87507,0 22.37423,5.03825 31.43704,15.15677 9.09434,10.08482 15.60961,21.41303 19.5169,33.96799 3.92176,12.5392 5.87345,24.52979 5.87345,35.98399 0,13.44658 -3.70256,24.60984 -11.07663,33.45436 z"/></g></svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

16
assets/icons/keyoxide.svg Normal file
View File

@@ -0,0 +1,16 @@
<svg width="1024" height="1024" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg">
<path fill="currentColor" d="M512 11.375a500.25 500.25 0 1 0 0 1001.25 500.25 500.25 0 0 0 0-1001.25z" mask="url(#cutout)"/>
<defs>
<mask id="cutout">
<rect width="1024" height="1024" fill="white"/>
<g fill="black">
<path d="M596.1 176c-27.5 0-49.8 22.3-49.8 49.8 0 16.6 8.2 31.8 21.4 41 3.8 2.6 6 2.9 6.5 7.1 0.5 4.1-5.1 7.9-5.1 7.9L308.7 484.1c-23.4 18.2-37.1 46.2-37.1 75.8v191.9c0 53.1 43.1 96.1 96.1 96.1s96.1-43.1 96.1-96.1V607.3l251-195.1c36.8-28.6 47.4-79.2 26.5-119.8-1.6-3-2.1-4.1-5.3-5.4-3.3-1.3-5.9 0.2-9.1 1.4-4.5 1.7-9.2 2.6-14.1 2.6-22.1 0-40.1-17.9-40.1-40.1 0-3 0.5-4.8-0.4-6.6-0.9-1.9-3.2-3.1-5.6-3.3-3.9-0.4-7.7-0.6-11.6-0.6-3.8 0-6.7-0.3-8.4-3.1-1.6-2.8-0.8-6-0.8-11 0-27.5-22.3-49.8-49.8-49.8z"/>
<path d="M464 508.6l245.3 163.5c44.1 29.4 56 89 26.6 133.1-29.4 44.1-89 56-133.1 26.6l-288-192C288 622.1 272 592.1 272 560V336c0-53 43-96 96-96s96 43 96 96z"/>
<circle cx="503.5" cy="185.8" r="34"/>
<circle cx="536" cy="119.9" r="22.2"/>
<circle cx="475.6" cy="103.6" r="15.5"/>
<circle cx="712.9" cy="250.5" r="27.2"/>
</g>
</mask>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

1
assets/icons/matrix.svg Normal file
View File

@@ -0,0 +1 @@
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Matrix</title><path fill="currentColor" d="M.632.55v22.9H2.28V24H0V0h2.28v.55zm7.043 7.26v1.157h.033c.309-.443.683-.784 1.117-1.024.433-.245.936-.365 1.5-.365.54 0 1.033.107 1.481.314.448.208.785.582 1.02 1.108.254-.374.6-.706 1.034-.992.434-.287.95-.43 1.546-.43.453 0 .872.056 1.26.167.388.11.716.286.993.53.276.245.489.559.646.951.152.392.23.863.23 1.417v5.728h-2.349V11.52c0-.286-.01-.559-.032-.812a1.755 1.755 0 0 0-.18-.66 1.106 1.106 0 0 0-.438-.448c-.194-.11-.457-.166-.785-.166-.332 0-.6.064-.803.189a1.38 1.38 0 0 0-.48.499 1.946 1.946 0 0 0-.231.696 5.56 5.56 0 0 0-.06.785v4.768h-2.35v-4.8c0-.254-.004-.503-.018-.752a2.074 2.074 0 0 0-.143-.688 1.052 1.052 0 0 0-.415-.503c-.194-.125-.476-.19-.854-.19-.111 0-.259.024-.439.074-.18.051-.36.143-.53.282-.171.138-.319.337-.439.595-.12.259-.18.6-.18 1.02v4.966H5.46V7.81zm15.693 15.64V.55H21.72V0H24v24h-2.28v-.55z"/></svg>

After

Width:  |  Height:  |  Size: 959 B

1
assets/icons/signal.svg Normal file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path fill="currentColor" d="M256 0c13.3 0 26.3 1 39.1 3l-3.7 23.7C279.9 24.9 268 24 256 24s-23.9 .9-35.4 2.7L216.9 3C229.7 1 242.7 0 256 0zm60.8 7.3l-5.7 23.3c23.4 5.7 45.4 14.9 65.4 27.1l12.5-20.5c-22.1-13.4-46.4-23.6-72.2-29.9zm90.5 42.2L393.1 68.8c19.1 14 36 30.9 50.1 50.1l19.4-14.2C447 83.6 428.4 65 407.3 49.5zm67.5 73.6l-20.5 12.5c12.2 20 21.4 42 27.1 65.4l23.3-5.7c-6.3-25.8-16.5-50.1-29.9-72.2zM509 216.9l-23.7 3.7c1.8 11.5 2.7 23.4 2.7 35.4s-.9 23.9-2.7 35.4l23.7 3.7c1.9-12.7 3-25.8 3-39.1s-1-26.3-3-39.1zM454.3 376.5c12.2-20 21.4-42 27.1-65.4l23.3 5.7c-6.3 25.8-16.5 50.1-29.9 72.2l-20.5-12.5zm-11.1 16.6l19.4 14.2c-15.5 21.1-34.1 39.8-55.2 55.2l-14.2-19.4c19.1-14 36-30.9 50.1-50.1zm-66.7 61.2l12.5 20.5c-22.1 13.4-46.4 23.6-72.2 29.9l-5.7-23.3c23.4-5.7 45.4-14.9 65.4-27.1zm-85.1 31l3.7 23.7c-12.7 1.9-25.8 3-39.1 3s-26.3-1-39.1-3l3.7-23.7c11.5 1.8 23.4 2.7 35.4 2.7s23.9-.9 35.4-2.7zm-90.5-3.9l-5.7 23.3c-19.4-4.7-37.9-11.6-55.3-20.5l-24.3 5.7-5.5-23.4 32.8-7.7 7.8 4c15.7 8 32.5 14.3 50.1 18.6zM90 471.3l5.5 23.4-41.6 9.7C26 510.8 1.2 486 7.6 458.2l9.7-41.6L40.7 422 31 463.7c-2.4 10.4 6.9 19.7 17.3 17.3L90 471.3zM45.5 401.8l-23.4-5.5L27.8 372C18.9 354.7 12 336.1 7.3 316.7l23.3-5.7c4.3 17.6 10.6 34.4 18.6 50.1l4 7.8-7.7 32.8zM26.7 291.4L3 295.1C1 282.3 0 269.3 0 256s1-26.3 3-39.1l23.7 3.7C24.9 232.1 24 244 24 256s.9 23.9 2.7 35.4zm3.9-90.5L7.3 195.2c6.3-25.8 16.5-50.1 29.9-72.2l20.5 12.5c-12.2 20-21.4 42-27.1 65.4zm38.3-82.1L49.5 104.7C65 83.6 83.6 65 104.7 49.5l14.2 19.4c-19.1 14-36 30.9-50.1 50.1zm66.7-61.2L123.1 37.2c22.1-13.4 46.4-23.6 72.2-29.9l5.7 23.3c-23.4 5.7-45.4 14.9-65.4 27.1zM464 256c0 114.9-93.1 208-208 208c-36.4 0-70.7-9.4-100.5-25.8c-2.9-1.6-6.2-2.1-9.4-1.4L53.6 458.4l21.6-92.5c.7-3.2 .2-6.5-1.4-9.4C57.4 326.7 48 292.4 48 256C48 141.1 141.1 48 256 48s208 93.1 208 208z"/></svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

194
assets/js/a11y.js Normal file
View File

@@ -0,0 +1,194 @@
const getA11ySettings = () => {
const settings = localStorage.getItem("a11ySettings");
return settings
? JSON.parse(settings)
: {
disableBlur: false,
disableImages: false,
fontSize: "default",
underlineLinks: false,
zenMode: false,
};
};
const saveA11ySettings = (settings) => {
localStorage.setItem("a11ySettings", JSON.stringify(settings));
};
const applyImageState = (imageElement, imageUrl, disableImages) => {
if (!imageElement) return;
if (disableImages) {
imageElement.style.display = "none";
} else {
imageElement.style.display = "";
if (imageUrl && !imageElement.getAttribute("src")) {
imageElement.setAttribute("src", imageUrl);
}
}
};
const applyFontSize = (fontSizePx) => {
const isDefaultSettings = localStorage.getItem("a11ySettings") === null;
if (!isDefaultSettings && fontSizePx !== "default") {
document.documentElement.style.fontSize = fontSizePx;
}
};
const applyUnderlineLinks = (enabled) => {
let styleElement = document.getElementById("a11y-underline-links");
if (enabled) {
if (!styleElement) {
styleElement = document.createElement("style");
styleElement.id = "a11y-underline-links";
styleElement.textContent = "a { text-decoration: underline !important; }";
document.head.appendChild(styleElement);
}
} else {
if (styleElement) {
styleElement.remove();
}
}
};
const applyZenMode = (enabled) => {
const body = document.querySelector("body");
const isZenModeActive = body && body.classList.contains("zen-mode-enable");
// Toggle only if current state doesn't match desired state
if (enabled !== isZenModeActive) {
const zenModeCheckbox = document.querySelector('[id$="zen-mode"]');
if (zenModeCheckbox && typeof _toggleZenMode === "function") {
_toggleZenMode(zenModeCheckbox, { scrollToHeader: false });
}
}
};
const applyA11ySettings = () => {
const settings = getA11ySettings();
document.querySelectorAll("script[data-target-id]").forEach((script) => {
const targetId = script.getAttribute("data-target-id");
const scrollDivisor = Number(script.getAttribute("data-scroll-divisor") || 300);
const imageId = script.getAttribute("data-image-id");
const imageUrl = script.getAttribute("data-image-url");
const isMenuBlur = targetId === "menu-blur";
setBackgroundBlur(targetId, scrollDivisor, settings.disableBlur, isMenuBlur);
applyImageState(document.getElementById(imageId), imageUrl, settings.disableImages);
});
applyFontSize(settings.fontSize);
applyUnderlineLinks(settings.underlineLinks);
applyZenMode(settings.zenMode);
};
const updateA11ySetting = (key, value) => {
const settings = getA11ySettings();
settings[key] = value;
saveA11ySettings(settings);
applyA11ySettings();
};
const toggleA11yPanel = (prefix = "") => {
const panel = document.getElementById(`${prefix}a11y-panel`);
const overlay = document.getElementById(`${prefix}a11y-overlay`);
const button = document.getElementById(`${prefix}a11y-toggle`);
if (!panel || !overlay || !button) return;
if (overlay.classList.contains("hidden")) {
overlay.classList.remove("hidden");
panel.classList.remove("hidden");
button.setAttribute("aria-pressed", "true");
button.setAttribute("aria-expanded", "true");
} else {
overlay.classList.add("hidden");
panel.classList.add("hidden");
button.setAttribute("aria-pressed", "false");
button.setAttribute("aria-expanded", "false");
}
};
const initA11yPanel = (prefix = "") => {
const settings = getA11ySettings();
const checkboxBlur = document.getElementById(`${prefix}disable-blur`);
const checkboxImages = document.getElementById(`${prefix}disable-images`);
const checkboxUnderline = document.getElementById(`${prefix}underline-links`);
const checkboxZenMode = document.getElementById(`${prefix}zen-mode`);
const fontSizeSelect = document.getElementById(`${prefix}font-size-select`);
const toggleButton = document.getElementById(`${prefix}a11y-toggle`);
const closeButton = document.getElementById(`${prefix}a11y-close`);
const overlay = document.getElementById(`${prefix}a11y-overlay`);
if (
!checkboxBlur ||
!checkboxImages ||
!checkboxUnderline ||
!checkboxZenMode ||
!fontSizeSelect ||
!toggleButton ||
!closeButton ||
!overlay
) {
console.warn(`One or more a11y elements not found for prefix: ${prefix}`);
return;
}
checkboxBlur.checked = settings.disableBlur;
checkboxImages.checked = settings.disableImages;
checkboxUnderline.checked = settings.underlineLinks;
checkboxZenMode.checked = settings.zenMode;
fontSizeSelect.value = settings.fontSize;
checkboxBlur.addEventListener("change", (e) => updateA11ySetting("disableBlur", e.target.checked));
checkboxImages.addEventListener("change", (e) => updateA11ySetting("disableImages", e.target.checked));
checkboxUnderline.addEventListener("change", (e) => updateA11ySetting("underlineLinks", e.target.checked));
checkboxZenMode.addEventListener("change", (e) => {
// Only save setting, let applyZenMode handle the toggle logic
updateA11ySetting("zenMode", e.target.checked);
});
fontSizeSelect.addEventListener("change", (e) => {
// Remove fontSize from localStorage when default is selected
if (e.target.value === "default") {
const settings = getA11ySettings();
delete settings.fontSize;
saveA11ySettings(settings);
document.documentElement.style.fontSize = "";
} else {
updateA11ySetting("fontSize", e.target.value);
}
});
toggleButton.addEventListener("click", () => toggleA11yPanel(prefix));
closeButton.addEventListener("click", () => toggleA11yPanel(prefix));
overlay.addEventListener("click", (e) => {
if (e.target === overlay) {
toggleA11yPanel(prefix);
}
});
document.querySelectorAll(`.ios-toggle${prefix ? `[id^="${prefix}"]` : ""}`).forEach((toggle) => {
const checkbox = toggle.querySelector('input[type="checkbox"]');
if (!checkbox) return;
const newToggle = toggle.cloneNode(true);
toggle.parentNode.replaceChild(newToggle, toggle);
newToggle.addEventListener("click", () => {
const newCheckbox = newToggle.querySelector('input[type="checkbox"]');
if (newCheckbox) {
newCheckbox.checked = !newCheckbox.checked;
newCheckbox.dispatchEvent(new Event("change", { bubbles: true }));
}
});
});
};
document.querySelectorAll("script[data-target-id]").forEach((script) => {
const imageId = script.getAttribute("data-image-id");
const imageUrl = script.getAttribute("data-image-url");
const settings = getA11ySettings();
applyImageState(document.getElementById(imageId), imageUrl, settings.disableImages);
});
document.addEventListener("DOMContentLoaded", () => {
applyA11ySettings();
const allPanels = document.querySelectorAll('[id$="a11y-panel"]');
allPanels.forEach((panel) => {
const prefix = panel.id.replace("a11y-panel", "");
initA11yPanel(prefix);
});
});

View File

@@ -1,10 +1,52 @@
(() => {
const script = document.currentScript;
const targetId = script?.getAttribute("data-target-id");
function setBackgroundBlur(targetId, scrollDivisor = 300, disableBlur = false, isMenuBlur = false) {
if (!targetId) {
console.error("data-target-id is null");
return;
}
const blurElement = document.getElementById(targetId);
if (!blurElement) return;
if (disableBlur) {
blurElement.setAttribute("aria-hidden", "true");
if (!isMenuBlur) {
blurElement.style.display = "none";
blurElement.style.opacity = "0";
} else {
blurElement.style.display = "";
}
} else {
blurElement.style.display = "";
blurElement.removeAttribute("aria-hidden");
}
const updateBlur = () => {
if (!disableBlur || isMenuBlur) {
const scroll = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
blurElement.style.opacity = scroll / scrollDivisor;
}
};
blurElement.setAttribute("role", "presentation");
blurElement.setAttribute("tabindex", "-1");
window.addEventListener("scroll", updateBlur);
updateBlur();
}
window.addEventListener("scroll", () => {
const scroll = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
const backgroundBlur = document.getElementById(targetId);
backgroundBlur.style.opacity = scroll / 300;
});
document.querySelectorAll("script[data-target-id]").forEach((script) => {
const targetId = script.getAttribute("data-target-id");
const scrollDivisor = Number(script.getAttribute("data-scroll-divisor") || 300);
const isMenuBlur = targetId === "menu-blur";
const settings = JSON.parse(localStorage.getItem("a11ySettings") || "{}");
const disableBlur = settings.disableBlur || false;
setBackgroundBlur(targetId, scrollDivisor, disableBlur, isMenuBlur);
});
// Prevent disableImages FOUC
// Note: I tried putting this in a11y.js but it did not work, and placing it here prevents FOUC
(() => {
const settings = JSON.parse(localStorage.getItem("a11ySettings") || "{}");
if (settings.disableImages) {
document.querySelectorAll("script[data-image-id]").forEach((script) => {
const imageId = script.getAttribute("data-image-id");
const image = imageId && document.getElementById(imageId);
if (image) image.style.display = "none";
});
}
})();

View File

@@ -4,6 +4,12 @@
const repoId = script?.getAttribute("data-repo-id");
if (!repoURL || !repoId) return;
if (repoId.startsWith("forgejo")) {
console.log(
"fetch-repo.js: Forgejo server blocks cross-origin requests. Live JavaScript updates are not supported.",
);
return;
}
const platforms = {
github: {
@@ -36,6 +42,17 @@
stars_count: "stars_count",
forks_count: "forks_count",
},
huggingface: {
description: "description",
likes: "likes",
downloads: "downloads",
},
};
const processors = {
huggingface: {
description: (value) => value?.replace(/Dataset Card for .+?\s+Dataset Summary\s+/, "").trim() || value,
},
};
const platform = Object.keys(platforms).find((p) => repoId.startsWith(p)) || "github";
@@ -49,9 +66,15 @@
Object.entries(mapping).forEach(([dataField, elementSuffix]) => {
const element = document.getElementById(`${repoId}-${elementSuffix}`);
if (element) element.innerHTML = data[dataField];
if (element) {
let value = data[dataField];
if (processors[platform]?.[dataField]) {
value = processors[platform][dataField](value);
}
element.innerHTML = value;
}
});
} catch (error) {
console.error(error);
console.error(`fetch-repo.js: ${error}`);
}
})();

View File

@@ -1,4 +1,4 @@
function _toogleZenMode(zendModeButton) {
function _toggleZenMode(zendModeButton, options = { scrollToHeader: true }) {
// Nodes selection
const body = document.querySelector("body");
const footer = document.querySelector("footer");
@@ -35,11 +35,15 @@ function _toogleZenMode(zendModeButton) {
// Change title to enable
zendModeButton.setAttribute("title", titleI18nEnable);
// Auto-scroll to title article
window.scrollTo(window.scrollX, header.getBoundingClientRect().top - 90);
if (options.scrollToHeader) {
window.scrollTo(window.scrollX, header.getBoundingClientRect().top - 90);
}
} else {
//localStorage.setItem('blowfish-zen-mode-enabled', 'false');
zendModeButton.setAttribute("title", titleI18nDisable);
document.querySelector("body").scrollIntoView();
if (options.scrollToHeader) {
document.querySelector("body").scrollIntoView();
}
}
}
@@ -48,7 +52,7 @@ function _registerZendModeButtonClick(zendModeButton) {
event.preventDefault();
// Toggle zen-mode
_toogleZenMode(zendModeButton);
_toggleZenMode(zendModeButton);
});
}

File diff suppressed because one or more lines are too long

View File

@@ -1,5 +1,5 @@
[module]
[module.hugoVersion]
extended = true
min = "0.137.0"
max = "0.148.0"
min = "0.141.0"
max = "0.148.2"

View File

@@ -42,10 +42,12 @@ title = "Blowfish"
# { instagram = "https://instagram.com/username" },
# { itch-io = "https://username.itch.io" },
# { keybase = "https://keybase.io/username" },
# { keyoxide = "https://keyoxide.org/URI" },
# { kickstarter = "https://www.kickstarter.com/profile/username" },
# { lastfm = "https://lastfm.com/user/username" },
# { linkedin = "https://linkedin.com/in/username" },
# { mastodon = "https://mastodon.instance/@username" },
# { matrix = "https://matrix.to/#/URI" },
# { medium = "https://medium.com/username" },
# { microsoft = "https://www.microsoft.com/" },
# { orcid = "https://orcid.org/userid" },
@@ -53,6 +55,7 @@ title = "Blowfish"
# { pinterest = "https://pinterest.com/username" },
# { reddit = "https://reddit.com/user/username" },
# { researchgate = "https://www.researchgate.net/profile/username" },
# { signal = "https://signal.me/#eu/userid" },
# { slack = "https://workspace.url/team/userid" },
# { snapchat = "https://snapchat.com/add/username" },
# { soundcloud = "https://soundcloud.com/username" },

View File

@@ -9,6 +9,7 @@ colorScheme = "blowfish"
defaultAppearance = "light" # valid options: light or dark
autoSwitchAppearance = true
enableA11y = false
enableSearch = true
enableCodeCopy = false

View File

@@ -9,6 +9,7 @@ colorScheme = "blowfish"
defaultAppearance = "dark" # valid options: light or dark
autoSwitchAppearance = true
enableA11y = false
enableSearch = true
enableCodeCopy = true

View File

@@ -8,12 +8,12 @@ description: "Questa pagina è stata creata utilizzando il tema Blowfish per Hug
</span>
<span class="flex items-center justify-between grow dark:text-neutral-300">
<span class="prose dark:prose-invert">Questa è una demo del layout <code id="layout">background</code>.</span>
<pulsante
id="interruttore-layout-pulsante"
class="px-4 !text-neutral !no-underline round-md bg-primary-600 hover:!bg-primary-500 dark:bg-primary-800 dark:hover:!bg-primary-700"
<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"
>
Cambia layout &orarr;
</pulsante>
</button>
</span>
</div>

View File

@@ -171,6 +171,7 @@ Many of the article defaults here can be overridden on a per article basis by sp
| `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`. |
| `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`. |
| `enableA11y` | `false` | Whether to enable the accessibility toggle button. |
| `enableSearch` | `false` | Whether site search is enabled. Set to `true` to enable search functionality. Note that the search feature depends on the `outputs.home` setting in the [site configuration](#configurazioni-del-sito) being set correctly. |
| `enableCodeCopy` | `false` | Whether copy-to-clipboard buttons are enabled for `<code>` blocks. The `highlight.noClasses` parameter must be set to `false` for code copy to function correctly. Read more about [other configuration files](#other-configuration-files) below. |
| `mainSections` | _Not set_ | The sections that should be displayed in the recent articles list. If not provided the section with the greatest number of articles is used. |

View File

@@ -171,6 +171,7 @@ Blowfish は、テーマの機能を制御する多数の設定パラメータ
| `colorScheme` | `"blowfish"` | 使用するテーマのカラースキームです。有効な値は、`blowfish`(デフォルト)、`avocado``fire``ocean``forest``princess``neon``bloody``terminal``marvel``noir``autumn``congo``slate` です。詳細については、[カラースキーム]({{< ref "getting-started#カラースキーム" >}})セクションを参照してください。 |
| `defaultAppearance` | `"light"` | デフォルトのテーマの外観です。`light` または `dark` のいずれかです。 |
| `autoSwitchAppearance` | `true` | 訪問者のオペレーティングシステムの設定に基づいてテーマの外観を自動的に切り替えるかどうかです。`false` に設定すると、サイトは常に `defaultAppearance` を使用します。 |
| `enableA11y` | `false` | アクセシビリティ切り替えボタンを有効にするかどうか。 |
| `enableSearch` | `false` | サイト内検索が有効かどうかです。`true` に設定すると、検索機能が有効になります。検索機能は、[サイト設定](#サイト設定)の `outputs.home` 設定が正しく設定されているかどうかに依存することに注意してください。 |
| `enableCodeCopy` | `false` | `<code>` ブロックのクリップボードへのコピーボタンを有効にするかどうかです。コードコピーが正しく機能するには、`highlight.noClasses` パラメータを `false` に設定する必要があります。以下の[その他の設定ファイル](#その他の設定ファイル)について読んでください。 |
| `mainSections` | _未設定_ | 最近の記事リストに表示するセクションです。指定しない場合は、記事数が最も多いセクションが使用されます。 |

View File

@@ -173,6 +173,7 @@ Many of the article defaults here can be overridden on a per article basis by sp
| `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`. |
| `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`. |
| `enableA11y` | `false` | Whether to enable the accessibility toggle button. |
| `enableSearch` | `false` | Whether site search is enabled. Set to `true` to enable search functionality. Note that the search feature depends on the `outputs.home` setting in the [site configuration](#site-configuration) being set correctly. |
| `enableCodeCopy` | `false` | Whether copy-to-clipboard buttons are enabled for `<code>` blocks. The `highlight.noClasses` parameter must be set to `false` for code copy to function correctly. Read more about [other configuration files](#other-configuration-files) below. |
| `replyByEmail` | `false` | Whether the reply-by-email link is enabled after post. The `params.author.email` parameter in `config/_default/languages.en.toml` must be set. |

View File

@@ -171,6 +171,7 @@ Blowfish 提供了大量控制主题功能的配置参数,下面的表格中
| `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`。 |
| `autoSwitchAppearance` | `true` | 主题外观是否根据访问者操作系统的偏好自动切换。设置为 `false` 会强制网站始终使用 `defaultAppearance`。 |
| `enableA11y` | `false` | 是否启用无障碍切换按钮。 |
| `enableSearch` | `false` | 是否开启网站的搜索功能,设为 `true` 即为启用。注意,搜索功能依赖于[站点设置](#网站配置)中的 `outputs.home` 设置,请确保此值配置正确。 |
| `enableCodeCopy` | `false` | 是否可以将`<code>`代码块复制到剪贴板。想要使用代码复制功能,需要将 `highlight.noClasses` 参数设置为 `false`。 阅读 [其他配置文件](#其他配置文件) 以获取更多信息。 |
| `replyByEmail` | `false` | 是否在发布后启用“通过邮件回复”的链接。如果使用,则必须设置 `config/_default/languages.en.toml` 中的 `params.author.email` 参数。 |
@@ -277,7 +278,7 @@ Blowfish 提供了大量控制主题功能的配置参数,下面的表格中
| `list.groupByYear` | `true` | 是否根据年做聚合。 |
| `list.cardView` | `false` | 将列表展示为卡片容器。 |
| `list.cardViewScreenWidth` | `false` | 增强列表中卡片的宽度,使其可以占据可用的全部宽度。 |
| `list.constrainItemsWidth` | `false` | 将项目宽度限制为 `prose` 以提高可读性。在没有 featurn 图片的时候非常有用。 |
| `list.constrainItemsWidth` | `false` | 将项目宽度限制为 `prose` 以提高可读性。在没有 feature 图片的时候非常有用。 |
| `list.showTableOfContents` | `false` | 是否在文章中显示目录表。 |
### 网站地图

View File

@@ -72,15 +72,17 @@ This is an error!
| Parameter | Description |
| --------- | -------------------------------------------------------- |
| `link` | **Required.** the `.RelPermalink` to the target article. |
| `showSummary` | **Optional.** A boolean value indicating whether to show the article summary. If not set, the site's default configuration will be used. |
| `compactSummary` | **Optional.** A boolean value indicating whether to display the summary in compact mode. Default to false. |
<!-- prettier-ignore-end -->
**Example:**
```md
{{</* article link="/docs/welcome/" */>}}
{{</* article link="/it/docs/welcome/" showSummary=true compactSummary=true */>}}
```
{{< article link="/docs/welcome/" >}}
{{< article link="/it/docs/welcome/" showSummary=true compactSummary=true >}}
<br/><br/><br/>
@@ -200,16 +202,15 @@ This shortcode is for importing code from external sources easily without copyin
| `startLine` | **Optional** The line number to start the import from. |
| `endLine` | **Optional** The line number to end the import at. |
<!-- prettier-ignore-end -->
**Example:**
```md
{{</* codeimporter url="https://raw.githubusercontent.com/nunocoracao/blowfish/main/layouts/shortcodes/mdimporter.html" type="go" */>}}
```
{{< codeimporter url="https://raw.githubusercontent.com/nunocoracao/blowfish/main/layouts/shortcodes/mdimporter.html" type="go" >}}
```md
@@ -219,7 +220,6 @@ This shortcode is for importing code from external sources easily without copyin
{{< codeimporter url="https://raw.githubusercontent.com/nunocoracao/blowfish/main/config/_default/hugo.toml" type="toml" startLine="11" endLine="18">}}
<br/><br/>
## Codeberg Card
@@ -237,6 +237,7 @@ This shortcode is for importing code from external sources easily without copyin
```md
{{</* codeberg repo="forgejo/forgejo" */>}}
```
{{< codeberg repo="forgejo/forgejo" >}}
<br/><br/><br/>
@@ -302,6 +303,7 @@ Blowfish also supports automatic conversion of images included using standard Ma
```md
{{</* forgejo server="https://v11.next.forgejo.org" repo="a/mastodon" */>}}
```
{{< forgejo server="https://v11.next.forgejo.org" repo="a/mastodon" >}}
<br/><br/><br/>
@@ -338,7 +340,6 @@ In order to add images to the gallery, use `img` tags for each image and add `cl
<br/><br/><br/>
**Example 2: responsive gallery**
```md
@@ -381,6 +382,7 @@ In order to add images to the gallery, use `img` tags for each image and add `cl
{{</* gist "octocat" "6cad326836d38bd3a7ae" */>}}
````
{{< gist "octocat" "6cad326836d38bd3a7ae" >}}
**Example 2: Embed specific file from Gist**
@@ -388,6 +390,8 @@ In order to add images to the gallery, use `img` tags for each image and add `cl
{{</* gist "rauchg" "2052694" "README.md" */>}}
```
{{< gist "rauchg" "2052694" "README.md" >}}
<br/><br/><br/>
## Gitea Card
@@ -406,6 +410,7 @@ In order to add images to the gallery, use `img` tags for each image and add `cl
```md
{{</* gitea server="https://git.fsfe.org" repo="FSFE/fsfe-website" */>}}
```
{{< gitea server="https://git.fsfe.org" repo="FSFE/fsfe-website" >}}
<br/><br/><br/>
@@ -432,7 +437,7 @@ In order to add images to the gallery, use `img` tags for each image and add `cl
## GitLab Card
`gitlab` allows you to quickly link a GitLab Project (GitLab's jargon for repo).
`gitlab` allows you to quickly link a GitLab Project (GitLab's jargon for repo).
It displays realtime stats about it, such as the number of stars and forks it has.
Unlike `github` it can't display the main programming language of a project.
Finally, custom GitLab instance URL can be provided, as long as the `api/v4/projects/` endpoint is available, making this shortcode compatible with most self-hosted / enterprise deployments.
@@ -454,6 +459,35 @@ Finally, custom GitLab instance URL can be provided, as long as the `api/v4/proj
<br/><br/><br/>
## Hugging Face Card
`huggingface` allows you to quickly link a Hugging Face model or dataset, displaying real-time information such as the number of likes and downloads, along with type and description.
| Parameter | Description |
|------------|----------------------------------------------------------------|
| `model` | [String] Hugging Face model in the format of `username/model` |
| `dataset` | [String] Hugging Face dataset in the format of `username/dataset` |
**Note:** Use either `model` or `dataset` parameter, not both.
**Example 1 (Model):**
```md
{{</* huggingface model="google-bert/bert-base-uncased" */>}}
```
{{< huggingface model="google-bert/bert-base-uncased" >}}
**Example 2 (Dataset):**
```md
{{</* huggingface dataset="stanfordnlp/imdb" */>}}
```
{{< huggingface dataset="stanfordnlp/imdb" >}}
<br/><br/><br/>
## Icon
`icon` outputs an SVG icon and takes the icon name as its only parameter. The icon is scaled to match the current text size.
@@ -496,13 +530,10 @@ Check out the [mathematical notation samples]({{< ref "mathematical-notation" >}
<br/><br/><br/>
## Keyword
The `keyword` component can be used to visually highlight certain important words or phrases, e.g. professional skills etc. The `keywordList` shortcode can be used to group together multiple `keyword` items. Each item can have the following properties.
<!-- prettier-ignore-start -->
| Parameter | Description |
| --------- | --------------------------------------- |
@@ -554,7 +585,7 @@ When life gives you lemons, make lemonade.
When life gives you lemons, make lemonade.
{{< /lead >}}
<br/><br/><br/>
<br/><br/><br/>
## List
@@ -593,7 +624,7 @@ The `where` and `value` values are used in the following query `where .Site.Regu
<br/><br/><br/>
## LTR/RTL
## LTR/RTL
`ltr` and `rtl` allows you to mix your contents. Many RTL language users want to include parts of the content in LTR. Using this shortcode will let you do so, and by leveraging `%` as the outer-most dilemeter in the shortcode [Hugo shortcodes](https://gohugo.io/content-management/shortcodes/#shortcodes-with-markdown), any markdown inside will be rendered normally.
@@ -626,10 +657,8 @@ This shortcode allows you to import markdown files from external sources. This i
| --------- | ------------------------------------------------------- |
| `url` | **Required** URL to an externally hosted markdown file. |
<!-- prettier-ignore-end -->
**Example:**
```md
@@ -639,7 +668,6 @@ This shortcode allows you to import markdown files from external sources. This i
{{< mdimporter url="https://raw.githubusercontent.com/nunocoracao/nunocoracao/master/README.md" >}}
<br/><br/>
## Mermaid
@@ -689,7 +717,6 @@ You can see some additional Mermaid examples on the [diagrams and flowcharts sam
The `timeline` creates a visual timeline that can be used in different use-cases, e.g. professional experience, a project's achievements, etc. The `timeline` shortcode relies on the `timelineItem` sub-shortcode to define each item within the main timeline. Each item can have the following properties.
<!-- prettier-ignore-start -->
| Parameter | Description |
| ----------- | -------------------------------------------- |
@@ -739,14 +766,12 @@ With other shortcodes
{{</* /timeline */>}}
```
{{< timeline >}}
{{< timelineItem icon="github" header="header" badge="badge test" subheader="subheader" >}}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus non magna ex. Donec sollicitudin ut lorem quis lobortis. Nam ac ipsum libero. Sed a ex eget ipsum tincidunt venenatis quis sed nisl. Pellentesque sed urna vel odio consequat tincidunt id ut purus. Nam sollicitudin est sed dui interdum rhoncus.
{{</ timelineItem >}}
{{< timelineItem icon="code" header="Another Awesome Header" badge="date - present" subheader="Awesome Subheader">}}
With html code
<ul>
@@ -773,7 +798,6 @@ With other shortcodes
{{</ timelineItem >}}
{{</ timeline >}}
<br/><br/><br/>
## TypeIt
@@ -855,7 +879,6 @@ consectetur adipiscing elit.
"Toto, I've a feeling we're not in Kansas anymore." The Wizard of Oz (1939)
{{< /typeit >}}
<br/><br/><br/>
## Youtube Lite

View File

@@ -72,15 +72,17 @@ Twitter で私を[フォロー](https://twitter.com/nunocoracao)するのを忘
| パラメータ | 説明 |
| --------- | -------------------------------------------------------- |
| `link` | **必須** ターゲット記事への `.RelPermalink`。 |
| `showSummary` | **オプション** のブール値で、記事の要約を表示するかどうかを示します。設定されていない場合は、サイトのデフォルト設定が使用されます。 |
| `compactSummary` | **オプション** のブール値で、要約をコンパクトモードで表示するかどうかを示します。デフォルトは false です。 |
<!-- prettier-ignore-end -->
**例:**
```md
{{</* article link="/docs/welcome/" */>}}
{{</* article link="/ja/docs/welcome/" showSummary=true compactSummary=true */>}}
```
{{< article link="/docs/welcome/" >}}
{{< article link="/ja/docs/welcome/" showSummary=true compactSummary=true >}}
<br/><br/><br/>
@@ -454,6 +456,35 @@ Blowfish も、標準の Markdown 構文を使用して含まれる画像の自
<br/><br/><br/>
## Hugging Face カード
`huggingface` を使用すると、Hugging Face のモデルやデータセットを素早くリンクし、いいね数やダウンロード数などのリアルタイム情報を表示できます。
| パラメータ | 説明 |
|-----------|---------------------------------------------------------------|
| `model` | [文字列] `ユーザー名/モデル名` の形式での Hugging Face モデル |
| `dataset` | [文字列] `ユーザー名/データセット名` の形式での Hugging Face データセット |
**注意:** `model` または `dataset` パラメータのどちらか一方を使用してください。
**例1モデル:**
```md
{{</* huggingface model="google-bert/bert-base-uncased" */>}}
```
{{< huggingface model="google-bert/bert-base-uncased" >}}
**例2データセット:**
```md
{{</* huggingface dataset="stanfordnlp/imdb" */>}}
```
{{< huggingface dataset="stanfordnlp/imdb" >}}
<br/><br/><br/>
## アイコン
`icon` は SVG アイコンを出力し、アイコン名を唯一のパラメータとして受け取ります。アイコンは、現在のテキストサイズに合わせてスケーリングされます。

View File

@@ -72,15 +72,17 @@ This is an error!
| Parameter | Description |
| --------- | -------------------------------------------------------- |
| `link` | **Required.** the `.RelPermalink` to the target article. |
| `showSummary` | **Optional.** A boolean value indicating whether to show the article summary. If not set, the site's default configuration will be used. |
| `compactSummary` | **Optional.** A boolean value indicating whether to display the summary in compact mode. Default to false. |
<!-- prettier-ignore-end -->
**Example:**
```md
{{</* article link="/docs/welcome/" */>}}
{{</* article link="/docs/welcome/" showSummary=true compactSummary=true */>}}
```
{{< article link="/docs/welcome/" >}}
{{< article link="/docs/welcome/" showSummary=true compactSummary=true >}}
<br/><br/><br/>
@@ -458,6 +460,35 @@ Finally, custom GitLab instance URL can be provided, as long as the `api/v4/proj
<br/><br/><br/>
## Hugging Face Card
`huggingface` allows you to quickly link a Hugging Face model or dataset, displaying real-time information such as the number of likes and downloads, along with type and description.
| Parameter | Description |
|------------|----------------------------------------------------------------|
| `model` | [String] Hugging Face model in the format of `username/model` |
| `dataset` | [String] Hugging Face dataset in the format of `username/dataset` |
**Note:** Use either `model` or `dataset` parameter, not both.
**Example 1 (Model):**
```md
{{</* huggingface model="google-bert/bert-base-uncased" */>}}
```
{{< huggingface model="google-bert/bert-base-uncased" >}}
**Example 2 (Dataset):**
```md
{{</* huggingface dataset="stanfordnlp/imdb" */>}}
```
{{< huggingface dataset="stanfordnlp/imdb" >}}
<br/><br/><br/>
## Icon
`icon` outputs an SVG icon and takes the icon name as its only parameter. The icon is scaled to match the current text size.

View File

@@ -72,15 +72,17 @@ This is an error!
| 参数 | 功能 |
| ------ | ------------------------------------- |
| `link` | **必填** 要嵌入文章的 `.RelPermalink` |
| `showSummary` | **可选** 布尔值,指示是否显示文章摘要。如果未设置,将使用站点的默认配置。 |
| `compactSummary` | **可选** 布尔值,指示是否以紧凑模式显示摘要。默认为 false。 |
<!-- prettier-ignore-end -->
**例如:**
```md
{{</* article link="/zh-cn/docs/welcome/" */>}}
{{</* article link="/zh-cn/docs/welcome/" showSummary=true compactSummary=true */>}}
```
{{< article link="/zh-cn/docs/welcome/" >}}
{{< article link="/zh-cn/docs/welcome/" showSummary=true compactSummary=true >}}
<br/><br/><br/>
@@ -383,6 +385,7 @@ Blowfish 还支持使用标准 Markdown 语法自动转换图像。只需使用
{{</* gist "octocat" "6cad326836d38bd3a7ae" */>}}
```
{{< gist "octocat" "6cad326836d38bd3a7ae" >}}
**示例 2嵌入 Gist 中的特定文件**
@@ -390,6 +393,8 @@ Blowfish 还支持使用标准 Markdown 语法自动转换图像。只需使用
{{</* gist "rauchg" "2052694" "README.md" */>}}
```
{{< gist "rauchg" "2052694" "README.md" >}}
<br/><br/><br/>
@@ -458,6 +463,35 @@ Blowfish 还支持使用标准 Markdown 语法自动转换图像。只需使用
<br/><br/><br/>
## Hugging Face 卡片
`huggingface` 让您能够快速链接 Hugging Face 模型或数据集,显示实时信息如点赞数和下载量,以及类型和描述。
| 参数 | 描述 |
|-----------|--------------------------------------------------------------|
| `model` | [字符串] 格式为 `用户名/模型名` 的 Hugging Face 模型 |
| `dataset` | [字符串] 格式为 `用户名/数据集名` 的 Hugging Face 数据集 |
**注意:** 使用 `model``dataset` 参数中的一个,不要同时使用。
**示例1模型**
```md
{{</* huggingface model="google-bert/bert-base-uncased" */>}}
```
{{< huggingface model="google-bert/bert-base-uncased" >}}
**示例2数据集**
```md
{{</* huggingface dataset="stanfordnlp/imdb" */>}}
```
{{< huggingface dataset="stanfordnlp/imdb" >}}
<br/><br/><br/>
## 图标
`icon` 输出一个 SVG 图标并以图标名称作为其唯一参数。图标会自动缩放以匹配当前文本大小。

View File

@@ -52,6 +52,7 @@ The full list of built-in icons and their corresponding names can referenced bel
| globe | {{< icon globe >}} |
| goodreads | {{< icon goodreads >}} |
| google | {{< icon google >}} |
| google-scholar | {{< icon google-scholar >}} |
| graduation-cap | {{< icon graduation-cap >}} |
| hackernews | {{< icon hackernews >}} |
| hashnode | {{< icon hashnode >}} |

View File

@@ -52,6 +52,7 @@ Blowfish はいくつもの [FontAwesome 6](https://fontawesome.com/icons) の
| globe | {{< icon globe >}} |
| goodreads | {{< icon goodreads >}} |
| google | {{< icon google >}} |
| google-scholar | {{< icon google-scholar >}} |
| graduation-cap | {{< icon graduation-cap >}} |
| hackernews | {{< icon hackernews >}} |
| hashnode | {{< icon hashnode >}} |

View File

@@ -42,6 +42,7 @@ The full list of built-in icons and their corresponding names can referenced bel
| expand | {{< icon expand >}} |
| eye | {{< icon eye >}} |
| facebook | {{< icon facebook >}} |
| fediverse | {{< icon fediverse >}} |
| fire | {{< icon fire >}} |
| flickr | {{< icon flickr >}} |
| fork | {{< icon fork >}} |
@@ -52,6 +53,7 @@ The full list of built-in icons and their corresponding names can referenced bel
| globe | {{< icon globe >}} |
| goodreads | {{< icon goodreads >}} |
| google | {{< icon google >}} |
| google-scholar | {{< icon google-scholar >}} |
| graduation-cap | {{< icon graduation-cap >}} |
| hackernews | {{< icon hackernews >}} |
| hashnode | {{< icon hashnode >}} |
@@ -61,6 +63,7 @@ The full list of built-in icons and their corresponding names can referenced bel
| instagram | {{< icon instagram >}} |
| itch-io | {{< icon itch-io >}} |
| keybase | {{< icon keybase >}} |
| keyoxide | {{< icon keyoxide >}} |
| kickstarter | {{< icon kickstarter >}} |
| ko-fi | {{< icon ko-fi >}} |
| language | {{< icon language >}} |
@@ -73,6 +76,7 @@ The full list of built-in icons and their corresponding names can referenced bel
| location-dot | {{< icon location-dot >}} |
| lock | {{< icon lock >}} |
| mastodon | {{< icon mastodon >}} |
| matrix | {{< icon matrix >}} |
| medium | {{< icon medium >}} |
| microsoft | {{< icon microsoft >}} |
| moon | {{< icon moon >}} |
@@ -95,6 +99,7 @@ The full list of built-in icons and their corresponding names can referenced bel
| scale-balanced | {{< icon scale-balanced >}} |
| search | {{< icon search >}} |
| shield | {{< icon shield >}} |
| signal | {{< icon signal >}} |
| skull-crossbones | {{< icon skull-crossbones >}} |
| slack | {{< icon slack >}} |
| snapchat | {{< icon snapchat >}} |

View File

@@ -52,6 +52,7 @@ Blowfish 内置了许多 [FontAwesome 6](https://fontawesome.com/icons) 中的
| globe | {{< icon globe >}} |
| goodreads | {{< icon goodreads >}} |
| google | {{< icon google >}} |
| google-scholar | {{< icon google-scholar >}} |
| graduation-cap | {{< icon graduation-cap >}} |
| hackernews | {{< icon hackernews >}} |
| hashnode | {{< icon hashnode >}} |

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

View File

@@ -1,6 +1,6 @@
---
title: "Ignacio Conde"
tags: [个人网站, 投资组合网站, 软件开发人员, 视频游戏开发人员]
tags: [个人网站, 投资组合网站, 软件开发人员, 电子游戏开发人员]
externalUrl: "http://www.ignaciomconde.com/"
weight: 68
showDate: false

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 30 KiB

View File

@@ -1,8 +1,8 @@
---
title: "blog.francescopapini.com"
tags: [Sito personale, Blog]
tags: [Blog tecnologico, Sito personale, Blog]
externalUrl: "https://blog.francescopapini.com"
weight: 97
weight: 101
showDate: false
showAuthor: false
showReadingTime: false

View File

@@ -1,8 +1,8 @@
---
title: "blog.francescopapini.com"
tags: [パーソナルサイト, ブログ]
tags: [テクノロジーブログ, パーソナルサイト, ブログ]
externalUrl: "https://blog.francescopapini.com"
weight: 97
weight: 101
showDate: false
showAuthor: false
showReadingTime: false

View File

@@ -1,8 +1,8 @@
---
title: "blog.francescopapini.com"
tags: [Personal site,blog]
tags: [Technology Blog,Personal Site,Blog]
externalUrl: "https://blog.francescopapini.com"
weight: 97
weight: 101
showDate: false
showAuthor: false
showReadingTime: false

View File

@@ -1,8 +1,8 @@
---
title: "blog.francescopapini.com"
tags: [个人网站, 博客]
tags: [技术博客, 个人网站, 博客]
externalUrl: "https://blog.francescopapini.com"
weight: 97
weight: 101
showDate: false
showAuthor: false
showReadingTime: false

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View File

@@ -0,0 +1,14 @@
---
title: "caytejohn.xyz"
tags: [Sito personale]
externalUrl: "https://caytejohn.xyz"
weight: 105
showDate: false
showAuthor: false
showReadingTime: false
showEdit: false
showLikes: false
showViews: false
layoutBackgroundHeaderSpace: false
---

View File

@@ -0,0 +1,14 @@
---
title: "caytejohn.xyz"
tags: [パーソナルサイト]
externalUrl: "https://caytejohn.xyz"
weight: 105
showDate: false
showAuthor: false
showReadingTime: false
showEdit: false
showLikes: false
showViews: false
layoutBackgroundHeaderSpace: false
---

View File

@@ -0,0 +1,13 @@
---
title: "caytejohn.xyz"
tags: [Personal site]
externalUrl: "https://caytejohn.xyz"
weight: 105
showDate: false
showAuthor: false
showReadingTime: false
showEdit: false
showLikes: false
showViews: false
layoutBackgroundHeaderSpace: false

View File

@@ -0,0 +1,14 @@
---
title: "caytejohn.xyz"
tags: [个人网站]
externalUrl: "https://caytejohn.xyz"
weight: 105
showDate: false
showAuthor: false
showReadingTime: false
showEdit: false
showLikes: false
showViews: false
layoutBackgroundHeaderSpace: false
---

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Some files were not shown because too many files have changed in this diff Show More