Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f6f6aa9577 | ||
|
|
43dcc375d6 | ||
|
|
8db2442743 | ||
|
|
452bdd408b | ||
|
|
80746a1fce | ||
|
|
b29c6614dc | ||
|
|
1597b4b356 | ||
|
|
6e5a0769d3 | ||
|
|
f441e653fb | ||
|
|
ad5295d335 | ||
|
|
edab149fca | ||
|
|
fcd9b6cc89 | ||
|
|
01dafef575 | ||
|
|
7f4e044464 | ||
|
|
7094f95a27 | ||
|
|
cc7989614a | ||
|
|
f2fd7a35cc | ||
|
|
9b6ed820e9 | ||
|
|
1a86ce0bd7 | ||
|
|
ce18bf1134 | ||
|
|
719e505d01 | ||
|
|
cac66e0fd7 | ||
|
|
fba28d5274 | ||
|
|
c714e91685 | ||
|
|
831af00253 | ||
|
|
f153250887 | ||
|
|
eef77a4a80 | ||
|
|
2e4e97c5b8 | ||
|
|
b91653687b | ||
|
|
b4a13da6d8 | ||
|
|
9c5ecfb45b | ||
|
|
4a19b81bd5 | ||
|
|
faeb1e1dea | ||
|
|
925065a5bd | ||
|
|
792ec9a601 | ||
|
|
8bfa9926c7 | ||
|
|
90e553541e | ||
|
|
a19edf471b | ||
|
|
40eea78d8c | ||
|
|
4550723e94 | ||
|
|
c9c8a36c16 | ||
|
|
6c8e0d7933 | ||
|
|
9a043d83ab | ||
|
|
9b35cc2bae | ||
|
|
d8ea1d81b5 | ||
|
|
751856fcc2 | ||
|
|
ba45e11207 | ||
|
|
de43ea47cb | ||
|
|
eb01381598 | ||
|
|
9665fe953c | ||
|
|
d4620d5318 | ||
|
|
2c6a95a755 | ||
|
|
fefb7d2fb5 | ||
|
|
ba8aac3a14 | ||
|
|
908c988d06 | ||
|
|
d517626b4e | ||
|
|
e608898f83 | ||
|
|
c47160936b | ||
|
|
44e02bbc13 | ||
|
|
cfa5c6f32d | ||
|
|
4afe06a57d | ||
|
|
f02776ff4f | ||
|
|
60ed15f97c | ||
|
|
0eba74c3c6 | ||
|
|
1802b07e29 | ||
|
|
3918571644 | ||
|
|
a27d65ad36 | ||
|
|
84185205e1 | ||
|
|
4417b41319 | ||
|
|
57b5c2cf6e | ||
|
|
4a9363b1bf | ||
|
|
b993c203d3 | ||
|
|
30a1bd281e | ||
|
|
af3893546a | ||
|
|
c7ed2261a3 | ||
|
|
0ce00113cb | ||
|
|
9cd5e2e575 | ||
|
|
a073bd45d9 | ||
|
|
e52cc05f63 | ||
|
|
0048f8b6dd | ||
|
|
da627a0cc7 | ||
|
|
98a73acbfa | ||
|
|
7305c4ae0b | ||
|
|
94c6132efe | ||
|
|
d7471833a9 | ||
|
|
3aa845e5cc | ||
|
|
f8124a6ac9 | ||
|
|
3344870b90 | ||
|
|
c599c3489e | ||
|
|
62a3ccc041 | ||
|
|
2c39e2654c | ||
|
|
9b6544fa09 | ||
|
|
435c1050f9 | ||
|
|
b9a45ea2a9 | ||
|
|
8b41f89455 | ||
|
|
374a0f51f7 | ||
|
|
b3bc04cfc3 | ||
|
|
7b694613da | ||
|
|
2c9f1af5b2 | ||
|
|
e619196b81 | ||
|
|
d8dc422205 | ||
|
|
ec8d9297f9 | ||
|
|
f827f8e8d8 | ||
|
|
8e1c70b5f6 | ||
|
|
8823610faf | ||
|
|
132e932bd4 | ||
|
|
45c084afa0 | ||
|
|
22f097f92a | ||
|
|
9eebb5b2aa | ||
|
|
e6968d877f | ||
|
|
4b9e63fd99 | ||
|
|
d7fc5acd05 | ||
|
|
44c20b3cf0 | ||
|
|
ab16811839 | ||
|
|
3d2ffada0f | ||
|
|
98f5b2c3b4 | ||
|
|
7cb8dcc4a1 | ||
|
|
e26666c001 | ||
|
|
646d1eca82 | ||
|
|
6f0238652b | ||
|
|
619fe502dc | ||
|
|
1159e78cc3 | ||
|
|
545febc7c0 | ||
|
|
17292857a7 | ||
|
|
7c4c740b25 | ||
|
|
65ab50a901 | ||
|
|
bcc9cf9f6c | ||
|
|
c330c17215 | ||
|
|
b777d4e59e | ||
|
|
019388def8 | ||
|
|
843677c383 | ||
|
|
d35cb4012b | ||
|
|
16bbb0f464 | ||
|
|
b96e5120ef | ||
|
|
97b2f5c851 | ||
|
|
84163ad4ea | ||
|
|
8c1365d819 | ||
|
|
f1a11b3357 | ||
|
|
ab385ef0e7 | ||
|
|
e1f59b6108 | ||
|
|
cfeab47b1b | ||
|
|
f04b850966 | ||
|
|
1cb5e9ab2f | ||
|
|
cfa6913496 | ||
|
|
ad7bac5432 | ||
|
|
f68b90589c | ||
|
|
97fa4b4970 | ||
|
|
1bbe7b5173 | ||
|
|
9872eebdde | ||
|
|
df859f1d70 | ||
|
|
6f6584e83a | ||
|
|
cd93ec0708 | ||
|
|
3f0dc1d6e1 | ||
|
|
340364f31a | ||
|
|
d21a4e6e4a | ||
|
|
01b998e070 | ||
|
|
5bab41062a | ||
|
|
b1b7aa1f42 | ||
|
|
8911ac843a | ||
|
|
cb479d5693 | ||
|
|
9c1d56e0e7 | ||
|
|
6d6b5d3946 | ||
|
|
ff3a6b4253 | ||
|
|
0f7f27b916 | ||
|
|
c8ee5fc657 | ||
|
|
e3194eca1e | ||
|
|
d25ec813f3 | ||
|
|
5fe9f56561 | ||
|
|
ade5f2c6d6 | ||
|
|
bf85845bc2 | ||
|
|
c648324aca | ||
|
|
479e2efff4 | ||
|
|
4fa6542bf2 |
No files matched your search
@@ -0,0 +1 @@
|
|||||||
|
* @nunocoracao
|
||||||
@@ -1,5 +1,7 @@
|
|||||||
## How to contribute to Blowfish
|
## How to contribute to Blowfish
|
||||||
|
|
||||||
|
All development occurs on the `dev` branch and new PRs should be forked from here.
|
||||||
|
|
||||||
### Bugs & other issues
|
### Bugs & other issues
|
||||||
|
|
||||||
#### Found a bug? 🐛
|
#### Found a bug? 🐛
|
||||||
@@ -11,7 +13,6 @@
|
|||||||
#### Have a patch that fixes an issue?
|
#### Have a patch that fixes an issue?
|
||||||
|
|
||||||
- Great! Open a new GitHub pull request with the patch.
|
- Great! Open a new GitHub pull request with the patch.
|
||||||
- All development occurs on the `dev` branch and new PRs should be forked from here.
|
|
||||||
- The commands `npm run example`, `npm run example:core`, and `npm run example:production` can be used to test local changes using the example site.
|
- The commands `npm run example`, `npm run example:core`, and `npm run example:production` can be used to test local changes using the example site.
|
||||||
- Ensure the PR description clearly describes the problem and solution. Include the relevant issue number, if applicable.
|
- Ensure the PR description clearly describes the problem and solution. Include the relevant issue number, if applicable.
|
||||||
- **Before submitting**, check the [coding conventions](#coding-conventions) section below to learn more about coding and commit message expectations.
|
- **Before submitting**, check the [coding conventions](#coding-conventions) section below to learn more about coding and commit message expectations.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/*! tailwindcss v4.1.12 | MIT License | https://tailwindcss.com */
|
/*! tailwindcss v4.1.14 | MIT License | https://tailwindcss.com */
|
||||||
/*! Blowfish | MIT License | https://github.com/nunocoracao/blowfish */
|
/*! Blowfish | MIT License | https://github.com/nunocoracao/blowfish */
|
||||||
@layer properties;
|
@layer properties;
|
||||||
#zen-mode-button {
|
#zen-mode-button {
|
||||||
@@ -245,6 +245,7 @@ body.zen-mode-enable {
|
|||||||
--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono",
|
--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono",
|
||||||
"Courier New", monospace;
|
"Courier New", monospace;
|
||||||
--spacing: 0.25rem;
|
--spacing: 0.25rem;
|
||||||
|
--container-2xs: 18rem;
|
||||||
--container-xs: 20rem;
|
--container-xs: 20rem;
|
||||||
--container-xl: 36rem;
|
--container-xl: 36rem;
|
||||||
--container-3xl: 48rem;
|
--container-3xl: 48rem;
|
||||||
@@ -463,7 +464,7 @@ body.zen-mode-enable {
|
|||||||
padding: 0;
|
padding: 0;
|
||||||
margin: -1px;
|
margin: -1px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
clip: rect(0, 0, 0, 0);
|
clip-path: inset(50%);
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
border-width: 0;
|
border-width: 0;
|
||||||
}
|
}
|
||||||
@@ -497,6 +498,9 @@ body.zen-mode-enable {
|
|||||||
.start-\[calc\(max\(-50vw\,-800px\)\+50\%\)\] {
|
.start-\[calc\(max\(-50vw\,-800px\)\+50\%\)\] {
|
||||||
inset-inline-start: calc(max(-50vw, -800px) + 50%);
|
inset-inline-start: calc(max(-50vw, -800px) + 50%);
|
||||||
}
|
}
|
||||||
|
.end-6 {
|
||||||
|
inset-inline-end: calc(var(--spacing) * 6);
|
||||||
|
}
|
||||||
.top-0 {
|
.top-0 {
|
||||||
top: calc(var(--spacing) * 0);
|
top: calc(var(--spacing) * 0);
|
||||||
}
|
}
|
||||||
@@ -506,18 +510,18 @@ body.zen-mode-enable {
|
|||||||
.top-20 {
|
.top-20 {
|
||||||
top: calc(var(--spacing) * 20);
|
top: calc(var(--spacing) * 20);
|
||||||
}
|
}
|
||||||
.top-\[110vh\] {
|
|
||||||
top: 110vh;
|
|
||||||
}
|
|
||||||
.top-\[calc\(100vh-5\.5rem\)\] {
|
|
||||||
top: calc(100vh - 5.5rem);
|
|
||||||
}
|
|
||||||
.right-0 {
|
.right-0 {
|
||||||
right: calc(var(--spacing) * 0);
|
right: calc(var(--spacing) * 0);
|
||||||
}
|
}
|
||||||
.bottom-0 {
|
.bottom-0 {
|
||||||
bottom: calc(var(--spacing) * 0);
|
bottom: calc(var(--spacing) * 0);
|
||||||
}
|
}
|
||||||
|
.bottom-6 {
|
||||||
|
bottom: calc(var(--spacing) * 6);
|
||||||
|
}
|
||||||
|
.bottom-24 {
|
||||||
|
bottom: calc(var(--spacing) * 24);
|
||||||
|
}
|
||||||
.left-0 {
|
.left-0 {
|
||||||
left: calc(var(--spacing) * 0);
|
left: calc(var(--spacing) * 0);
|
||||||
}
|
}
|
||||||
@@ -536,6 +540,9 @@ body.zen-mode-enable {
|
|||||||
.z-30 {
|
.z-30 {
|
||||||
z-index: 30;
|
z-index: 30;
|
||||||
}
|
}
|
||||||
|
.z-50 {
|
||||||
|
z-index: 50;
|
||||||
|
}
|
||||||
.z-80 {
|
.z-80 {
|
||||||
z-index: 80;
|
z-index: 80;
|
||||||
}
|
}
|
||||||
@@ -650,6 +657,9 @@ body.zen-mode-enable {
|
|||||||
.me-4 {
|
.me-4 {
|
||||||
margin-inline-end: calc(var(--spacing) * 4);
|
margin-inline-end: calc(var(--spacing) * 4);
|
||||||
}
|
}
|
||||||
|
.me-6 {
|
||||||
|
margin-inline-end: calc(var(--spacing) * 6);
|
||||||
|
}
|
||||||
.prose {
|
.prose {
|
||||||
color: var(--tw-prose-body);
|
color: var(--tw-prose-body);
|
||||||
max-width: 65ch;
|
max-width: 65ch;
|
||||||
@@ -741,7 +751,7 @@ body.zen-mode-enable {
|
|||||||
}
|
}
|
||||||
:where(hr):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
|
:where(hr):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
|
||||||
border-color: var(--tw-prose-hr);
|
border-color: var(--tw-prose-hr);
|
||||||
border-top-width: 1;
|
border-top-width: 1px;
|
||||||
margin-top: 3em;
|
margin-top: 3em;
|
||||||
margin-bottom: 3em;
|
margin-bottom: 3em;
|
||||||
}
|
}
|
||||||
@@ -826,7 +836,7 @@ body.zen-mode-enable {
|
|||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
font-family: inherit;
|
font-family: inherit;
|
||||||
color: var(--tw-prose-kbd);
|
color: var(--tw-prose-kbd);
|
||||||
box-shadow: 0 0 0 1px rgb(var(--tw-prose-kbd-shadows) / 10%), 0 3px 0 rgb(var(--tw-prose-kbd-shadows) / 10%);
|
box-shadow: 0 0 0 1px var(--tw-prose-kbd-shadows), 0 3px 0 var(--tw-prose-kbd-shadows);
|
||||||
font-size: 0.9rem;
|
font-size: 0.9rem;
|
||||||
border-radius: 0.25rem;
|
border-radius: 0.25rem;
|
||||||
padding-top: 0.1875em;
|
padding-top: 0.1875em;
|
||||||
@@ -972,7 +982,7 @@ body.zen-mode-enable {
|
|||||||
--tw-prose-quote-borders: rgba(var(--color-primary-200), 1);
|
--tw-prose-quote-borders: rgba(var(--color-primary-200), 1);
|
||||||
--tw-prose-captions: rgba(var(--color-neutral-500), 1);
|
--tw-prose-captions: rgba(var(--color-neutral-500), 1);
|
||||||
--tw-prose-kbd: oklch(21% 0.034 264.665);
|
--tw-prose-kbd: oklch(21% 0.034 264.665);
|
||||||
--tw-prose-kbd-shadows: NaN NaN NaN;
|
--tw-prose-kbd-shadows: color-mix(in oklab, oklch(21% 0.034 264.665) 10%, transparent);
|
||||||
--tw-prose-code: rgba(var(--color-secondary-700), 1);
|
--tw-prose-code: rgba(var(--color-secondary-700), 1);
|
||||||
--tw-prose-pre-code: rgba(var(--color-neutral-700), 1);
|
--tw-prose-pre-code: rgba(var(--color-neutral-700), 1);
|
||||||
--tw-prose-pre-bg: rgba(var(--color-neutral-50), 1);
|
--tw-prose-pre-bg: rgba(var(--color-neutral-50), 1);
|
||||||
@@ -990,7 +1000,7 @@ body.zen-mode-enable {
|
|||||||
--tw-prose-invert-quote-borders: rgba(var(--color-primary-900), 1);
|
--tw-prose-invert-quote-borders: rgba(var(--color-primary-900), 1);
|
||||||
--tw-prose-invert-captions: rgba(var(--color-neutral-400), 1);
|
--tw-prose-invert-captions: rgba(var(--color-neutral-400), 1);
|
||||||
--tw-prose-invert-kbd: #fff;
|
--tw-prose-invert-kbd: #fff;
|
||||||
--tw-prose-invert-kbd-shadows: 255 255 255;
|
--tw-prose-invert-kbd-shadows: rgb(255 255 255 / 10%);
|
||||||
--tw-prose-invert-code: rgba(var(--color-secondary-400), 1);
|
--tw-prose-invert-code: rgba(var(--color-secondary-400), 1);
|
||||||
--tw-prose-invert-pre-code: rgba(var(--color-neutral-200), 1);
|
--tw-prose-invert-pre-code: rgba(var(--color-neutral-200), 1);
|
||||||
--tw-prose-invert-pre-bg: rgba(var(--color-neutral-700), 1);
|
--tw-prose-invert-pre-bg: rgba(var(--color-neutral-700), 1);
|
||||||
@@ -1141,9 +1151,6 @@ body.zen-mode-enable {
|
|||||||
.mt-20 {
|
.mt-20 {
|
||||||
margin-top: calc(var(--spacing) * 20);
|
margin-top: calc(var(--spacing) * 20);
|
||||||
}
|
}
|
||||||
.mt-\[0\.1rem\] {
|
|
||||||
margin-top: 0.1rem;
|
|
||||||
}
|
|
||||||
.mt-\[0\.5rem\] {
|
.mt-\[0\.5rem\] {
|
||||||
margin-top: 0.5rem;
|
margin-top: 0.5rem;
|
||||||
}
|
}
|
||||||
@@ -1165,9 +1172,6 @@ body.zen-mode-enable {
|
|||||||
.mr-5 {
|
.mr-5 {
|
||||||
margin-right: calc(var(--spacing) * 5);
|
margin-right: calc(var(--spacing) * 5);
|
||||||
}
|
}
|
||||||
.mr-auto {
|
|
||||||
margin-right: auto;
|
|
||||||
}
|
|
||||||
.\!mb-0 {
|
.\!mb-0 {
|
||||||
margin-bottom: calc(var(--spacing) * 0) !important;
|
margin-bottom: calc(var(--spacing) * 0) !important;
|
||||||
}
|
}
|
||||||
@@ -1204,9 +1208,6 @@ body.zen-mode-enable {
|
|||||||
.mb-12 {
|
.mb-12 {
|
||||||
margin-bottom: calc(var(--spacing) * 12);
|
margin-bottom: calc(var(--spacing) * 12);
|
||||||
}
|
}
|
||||||
.mb-16 {
|
|
||||||
margin-bottom: calc(var(--spacing) * 16);
|
|
||||||
}
|
|
||||||
.mb-20 {
|
.mb-20 {
|
||||||
margin-bottom: calc(var(--spacing) * 20);
|
margin-bottom: calc(var(--spacing) * 20);
|
||||||
}
|
}
|
||||||
@@ -1219,12 +1220,6 @@ body.zen-mode-enable {
|
|||||||
.ml-2 {
|
.ml-2 {
|
||||||
margin-left: calc(var(--spacing) * 2);
|
margin-left: calc(var(--spacing) * 2);
|
||||||
}
|
}
|
||||||
.ml-3 {
|
|
||||||
margin-left: calc(var(--spacing) * 3);
|
|
||||||
}
|
|
||||||
.ml-auto {
|
|
||||||
margin-left: auto;
|
|
||||||
}
|
|
||||||
.box-border {
|
.box-border {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
@@ -1452,9 +1447,6 @@ body.zen-mode-enable {
|
|||||||
.max-w-\[5rem\] {
|
.max-w-\[5rem\] {
|
||||||
max-width: 5rem;
|
max-width: 5rem;
|
||||||
}
|
}
|
||||||
.max-w-\[64rem\] {
|
|
||||||
max-width: 64rem;
|
|
||||||
}
|
|
||||||
.max-w-\[200px\] {
|
.max-w-\[200px\] {
|
||||||
max-width: 200px;
|
max-width: 200px;
|
||||||
}
|
}
|
||||||
@@ -1538,6 +1530,14 @@ body.zen-mode-enable {
|
|||||||
--tw-translate-y: calc(var(--spacing) * -8);
|
--tw-translate-y: calc(var(--spacing) * -8);
|
||||||
translate: var(--tw-translate-x) var(--tw-translate-y);
|
translate: var(--tw-translate-x) var(--tw-translate-y);
|
||||||
}
|
}
|
||||||
|
.translate-y-0 {
|
||||||
|
--tw-translate-y: calc(var(--spacing) * 0);
|
||||||
|
translate: var(--tw-translate-x) var(--tw-translate-y);
|
||||||
|
}
|
||||||
|
.translate-y-4 {
|
||||||
|
--tw-translate-y: calc(var(--spacing) * 4);
|
||||||
|
translate: var(--tw-translate-x) var(--tw-translate-y);
|
||||||
|
}
|
||||||
.scale-0 {
|
.scale-0 {
|
||||||
--tw-scale-x: 0%;
|
--tw-scale-x: 0%;
|
||||||
--tw-scale-y: 0%;
|
--tw-scale-y: 0%;
|
||||||
@@ -1972,9 +1972,6 @@ body.zen-mode-enable {
|
|||||||
.p-1\.5 {
|
.p-1\.5 {
|
||||||
padding: calc(var(--spacing) * 1.5);
|
padding: calc(var(--spacing) * 1.5);
|
||||||
}
|
}
|
||||||
.p-2\.5 {
|
|
||||||
padding: calc(var(--spacing) * 2.5);
|
|
||||||
}
|
|
||||||
.p-4 {
|
.p-4 {
|
||||||
padding: calc(var(--spacing) * 4);
|
padding: calc(var(--spacing) * 4);
|
||||||
}
|
}
|
||||||
@@ -2080,18 +2077,12 @@ body.zen-mode-enable {
|
|||||||
.pt-\[5px\] {
|
.pt-\[5px\] {
|
||||||
padding-top: 5px;
|
padding-top: 5px;
|
||||||
}
|
}
|
||||||
.pr-0 {
|
.pr-2 {
|
||||||
padding-right: calc(var(--spacing) * 0);
|
padding-right: calc(var(--spacing) * 2);
|
||||||
}
|
}
|
||||||
.pr-8 {
|
.pr-8 {
|
||||||
padding-right: calc(var(--spacing) * 8);
|
padding-right: calc(var(--spacing) * 8);
|
||||||
}
|
}
|
||||||
.pr-\[24px\] {
|
|
||||||
padding-right: 24px;
|
|
||||||
}
|
|
||||||
.pb-0 {
|
|
||||||
padding-bottom: calc(var(--spacing) * 0);
|
|
||||||
}
|
|
||||||
.pb-2 {
|
.pb-2 {
|
||||||
padding-bottom: calc(var(--spacing) * 2);
|
padding-bottom: calc(var(--spacing) * 2);
|
||||||
}
|
}
|
||||||
@@ -2113,12 +2104,6 @@ body.zen-mode-enable {
|
|||||||
.pl-0 {
|
.pl-0 {
|
||||||
padding-left: calc(var(--spacing) * 0);
|
padding-left: calc(var(--spacing) * 0);
|
||||||
}
|
}
|
||||||
.pl-4 {
|
|
||||||
padding-left: calc(var(--spacing) * 4);
|
|
||||||
}
|
|
||||||
.pl-\[24px\] {
|
|
||||||
padding-left: 24px;
|
|
||||||
}
|
|
||||||
.text-center {
|
.text-center {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
@@ -2424,7 +2409,7 @@ body.zen-mode-enable {
|
|||||||
backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
|
backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
|
||||||
}
|
}
|
||||||
.transition {
|
.transition {
|
||||||
transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, visibility, content-visibility, overlay, pointer-events;
|
transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, content-visibility, overlay, pointer-events;
|
||||||
transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
|
transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
|
||||||
transition-duration: var(--tw-duration, var(--default-transition-duration));
|
transition-duration: var(--tw-duration, var(--default-transition-duration));
|
||||||
}
|
}
|
||||||
@@ -2522,34 +2507,6 @@ body.zen-mode-enable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.group-hover\:text-primary-600 {
|
|
||||||
&:is(:where(.group):hover *) {
|
|
||||||
@media (hover: hover) {
|
|
||||||
color: rgba(var(--color-primary-600), 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.group-hover\:underline {
|
|
||||||
&:is(:where(.group):hover *) {
|
|
||||||
@media (hover: hover) {
|
|
||||||
text-decoration-line: underline;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.group-hover\:decoration-primary-500 {
|
|
||||||
&:is(:where(.group):hover *) {
|
|
||||||
@media (hover: hover) {
|
|
||||||
text-decoration-color: rgba(var(--color-primary-500), 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.group-hover\:underline-offset-2 {
|
|
||||||
&:is(:where(.group):hover *) {
|
|
||||||
@media (hover: hover) {
|
|
||||||
text-underline-offset: 2px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.group-hover\:opacity-100 {
|
.group-hover\:opacity-100 {
|
||||||
&:is(:where(.group):hover *) {
|
&:is(:where(.group):hover *) {
|
||||||
@media (hover: hover) {
|
@media (hover: hover) {
|
||||||
@@ -2640,6 +2597,18 @@ body.zen-mode-enable {
|
|||||||
border-top-color: transparent;
|
border-top-color: transparent;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.before\:absolute {
|
||||||
|
&::before {
|
||||||
|
content: var(--tw-content);
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.before\:inset-0 {
|
||||||
|
&::before {
|
||||||
|
content: var(--tw-content);
|
||||||
|
inset: calc(var(--spacing) * 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
.after\:clear-both {
|
.after\:clear-both {
|
||||||
&::after {
|
&::after {
|
||||||
content: var(--tw-content);
|
content: var(--tw-content);
|
||||||
@@ -2654,7 +2623,6 @@ body.zen-mode-enable {
|
|||||||
}
|
}
|
||||||
.after\:content-\[\'\'\] {
|
.after\:content-\[\'\'\] {
|
||||||
&::after {
|
&::after {
|
||||||
content: var(--tw-content);
|
|
||||||
--tw-content: '';
|
--tw-content: '';
|
||||||
content: var(--tw-content);
|
content: var(--tw-content);
|
||||||
}
|
}
|
||||||
@@ -3014,9 +2982,9 @@ body.zen-mode-enable {
|
|||||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.md\:flex-nowrap {
|
.md\:flex-row {
|
||||||
@media (width >= 853px) {
|
@media (width >= 853px) {
|
||||||
flex-wrap: nowrap;
|
flex-direction: row;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.md\:justify-start {
|
.md\:justify-start {
|
||||||
@@ -3034,6 +3002,11 @@ body.zen-mode-enable {
|
|||||||
padding-inline: calc(var(--spacing) * 24);
|
padding-inline: calc(var(--spacing) * 24);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.md\:pr-4 {
|
||||||
|
@media (width >= 853px) {
|
||||||
|
padding-right: calc(var(--spacing) * 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
.lg\:absolute {
|
.lg\:absolute {
|
||||||
@media (width >= 1024px) {
|
@media (width >= 1024px) {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
@@ -3124,6 +3097,11 @@ body.zen-mode-enable {
|
|||||||
width: auto;
|
width: auto;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.lg\:max-w-2xs {
|
||||||
|
@media (width >= 1024px) {
|
||||||
|
max-width: var(--container-2xs);
|
||||||
|
}
|
||||||
|
}
|
||||||
.lg\:max-w-7xl {
|
.lg\:max-w-7xl {
|
||||||
@media (width >= 1024px) {
|
@media (width >= 1024px) {
|
||||||
max-width: var(--container-7xl);
|
max-width: var(--container-7xl);
|
||||||
@@ -3209,16 +3187,6 @@ body.zen-mode-enable {
|
|||||||
grid-template-columns: repeat(5, minmax(0, 1fr));
|
grid-template-columns: repeat(5, minmax(0, 1fr));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.ltr\:right-0 {
|
|
||||||
&:where(:dir(ltr), [dir="ltr"], [dir="ltr"] *) {
|
|
||||||
right: calc(var(--spacing) * 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.ltr\:mr-4 {
|
|
||||||
&:where(:dir(ltr), [dir="ltr"], [dir="ltr"] *) {
|
|
||||||
margin-right: calc(var(--spacing) * 4);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.ltr\:-ml-12 {
|
.ltr\:-ml-12 {
|
||||||
&:where(:dir(ltr), [dir="ltr"], [dir="ltr"] *) {
|
&:where(:dir(ltr), [dir="ltr"], [dir="ltr"] *) {
|
||||||
margin-left: calc(var(--spacing) * -12);
|
margin-left: calc(var(--spacing) * -12);
|
||||||
@@ -3239,11 +3207,6 @@ body.zen-mode-enable {
|
|||||||
display: inline;
|
display: inline;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.ltr\:text-right {
|
|
||||||
&:where(:dir(ltr), [dir="ltr"], [dir="ltr"] *) {
|
|
||||||
text-align: right;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.rtl\:left-0 {
|
.rtl\:left-0 {
|
||||||
&:where(:dir(rtl), [dir="rtl"], [dir="rtl"] *) {
|
&:where(:dir(rtl), [dir="rtl"], [dir="rtl"] *) {
|
||||||
left: calc(var(--spacing) * 0);
|
left: calc(var(--spacing) * 0);
|
||||||
@@ -3254,11 +3217,6 @@ body.zen-mode-enable {
|
|||||||
margin-right: calc(79px * -1);
|
margin-right: calc(79px * -1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.rtl\:ml-4 {
|
|
||||||
&:where(:dir(rtl), [dir="rtl"], [dir="rtl"] *) {
|
|
||||||
margin-left: calc(var(--spacing) * 4);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.rtl\:block {
|
.rtl\:block {
|
||||||
&:where(:dir(rtl), [dir="rtl"], [dir="rtl"] *) {
|
&:where(:dir(rtl), [dir="rtl"], [dir="rtl"] *) {
|
||||||
display: block;
|
display: block;
|
||||||
@@ -3269,9 +3227,9 @@ body.zen-mode-enable {
|
|||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.rtl\:inline {
|
.rtl\:rotate-180 {
|
||||||
&:where(:dir(rtl), [dir="rtl"], [dir="rtl"] *) {
|
&:where(:dir(rtl), [dir="rtl"], [dir="rtl"] *) {
|
||||||
display: inline;
|
rotate: 180deg;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.dark\:flex {
|
.dark\:flex {
|
||||||
@@ -3517,15 +3475,6 @@ body.zen-mode-enable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.dark\:group-hover\:text-primary-400 {
|
|
||||||
&:is(.dark *) {
|
|
||||||
&:is(:where(.group):hover *) {
|
|
||||||
@media (hover: hover) {
|
|
||||||
color: rgba(var(--color-primary-400), 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.dark\:hover\:\!bg-primary-700 {
|
.dark\:hover\:\!bg-primary-700 {
|
||||||
&:is(.dark *) {
|
&:is(.dark *) {
|
||||||
&:hover {
|
&:hover {
|
||||||
@@ -3657,11 +3606,6 @@ button, [role="button"] {
|
|||||||
.prose div.min-w-0.max-w-prose > *:first-child {
|
.prose div.min-w-0.max-w-prose > *:first-child {
|
||||||
margin-top: calc(var(--spacing) * 3);
|
margin-top: calc(var(--spacing) * 3);
|
||||||
}
|
}
|
||||||
#TableOfContents {
|
|
||||||
@media (width >= 1024px) {
|
|
||||||
max-width: 25vw;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#TOCView {
|
#TOCView {
|
||||||
max-height: calc(100vh - 150px);
|
max-height: calc(100vh - 150px);
|
||||||
min-height: 0;
|
min-height: 0;
|
||||||
@@ -3712,9 +3656,7 @@ button, [role="button"] {
|
|||||||
z-index: 10;
|
z-index: 10;
|
||||||
width: calc(var(--spacing) * 20);
|
width: calc(var(--spacing) * 20);
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
overflow: hidden;
|
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
white-space: nowrap;
|
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
border-top-right-radius: var(--radius-md);
|
border-top-right-radius: var(--radius-md);
|
||||||
border-bottom-left-radius: var(--radius-md);
|
border-bottom-left-radius: var(--radius-md);
|
||||||
@@ -3748,8 +3690,8 @@ button, [role="button"] {
|
|||||||
overflow: auto hidden;
|
overflow: auto hidden;
|
||||||
}
|
}
|
||||||
.katex-display {
|
.katex-display {
|
||||||
padding-right: 2px;
|
padding: 1em;
|
||||||
width: calc(100% - 2px);
|
width: calc(100% - 1em);
|
||||||
}
|
}
|
||||||
table {
|
table {
|
||||||
display: block;
|
display: block;
|
||||||
@@ -3770,36 +3712,35 @@ a {
|
|||||||
pre {
|
pre {
|
||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
.thumbnail, .thumbnail_card, .thumbnail_card_related, .thumbnail_card_term, .single_hero_basic, .single_hero_background {
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-size: cover;
|
|
||||||
background-position: center;
|
|
||||||
}
|
|
||||||
.thumbnail {
|
|
||||||
min-width: 300px;
|
|
||||||
height: 180px;
|
|
||||||
}
|
|
||||||
.thumbnail_card {
|
|
||||||
height: 200px;
|
|
||||||
}
|
|
||||||
.thumbnail_card_related {
|
|
||||||
height: 150px;
|
|
||||||
}
|
|
||||||
.thumbnail_card_term {
|
|
||||||
height: 150px;
|
|
||||||
}
|
|
||||||
.single_hero_round {
|
.single_hero_round {
|
||||||
max-height: 50vh;
|
max-height: 50vh;
|
||||||
object-fit: cover;
|
object-fit: cover;
|
||||||
}
|
}
|
||||||
.single_hero_background {
|
.single_hero_background {
|
||||||
|
width: calc(100% + 1px);
|
||||||
z-index: -10;
|
z-index: -10;
|
||||||
}
|
}
|
||||||
.hero_gradient {
|
.hero_gradient {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
.thumbnailshadow {
|
.thumbnail_card {
|
||||||
|
min-width: 300px;
|
||||||
|
height: 200px;
|
||||||
|
}
|
||||||
|
.thumbnail_card_related {
|
||||||
|
height: 150px;
|
||||||
|
}
|
||||||
|
.thumbnail {
|
||||||
|
width: 300px;
|
||||||
|
min-height: 180px;
|
||||||
|
}
|
||||||
|
@media (width < 853px) {
|
||||||
|
.thumbnail {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.thumbnail-shadow {
|
||||||
box-shadow: 5px 5px 20px 1px rgba(0, 0, 0, 0.3);
|
box-shadow: 5px 5px 20px 1px rgba(0, 0, 0, 0.3);
|
||||||
}
|
}
|
||||||
.anchor {
|
.anchor {
|
||||||
@@ -3812,21 +3753,15 @@ pre {
|
|||||||
[id^="fn"], [id^="fnref"] {
|
[id^="fn"], [id^="fnref"] {
|
||||||
scroll-margin-top: 145px;
|
scroll-margin-top: 145px;
|
||||||
}
|
}
|
||||||
|
#main-content {
|
||||||
|
scroll-margin-top: -125px;
|
||||||
|
}
|
||||||
@media (width >= 640px) {
|
@media (width >= 640px) {
|
||||||
.thumbnail {
|
|
||||||
min-width: 100%;
|
|
||||||
height: 180px;
|
|
||||||
}
|
|
||||||
.article {
|
.article {
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@media (width >= 853px) {
|
@media (width >= 853px) {
|
||||||
.thumbnail {
|
|
||||||
min-width: 300px;
|
|
||||||
min-height: 180px;
|
|
||||||
height: auto;
|
|
||||||
}
|
|
||||||
.article {
|
.article {
|
||||||
flex-wrap: nowrap;
|
flex-wrap: nowrap;
|
||||||
}
|
}
|
||||||
@@ -3855,9 +3790,6 @@ pre {
|
|||||||
text-decoration-thickness: 3px;
|
text-decoration-thickness: 3px;
|
||||||
text-underline-offset: 4px;
|
text-underline-offset: 4px;
|
||||||
}
|
}
|
||||||
.group-hover-card:hover:has(.group-hover-cancel:hover) .group-hover-card-title {
|
|
||||||
text-decoration: none !important;
|
|
||||||
}
|
|
||||||
@layer base {
|
@layer base {
|
||||||
[type='text'],input:where(:not([type])),[type='email'],[type='url'],[type='password'],[type='number'],[type='date'],[type='datetime-local'],[type='month'],[type='search'],[type='tel'],[type='time'],[type='week'],[multiple],textarea,select {
|
[type='text'],input:where(:not([type])),[type='email'],[type='url'],[type='password'],[type='number'],[type='date'],[type='datetime-local'],[type='month'],[type='search'],[type='tel'],[type='time'],[type='week'],[multiple],textarea,select {
|
||||||
appearance: none;
|
appearance: none;
|
||||||
|
|||||||
@@ -66,10 +66,6 @@ button,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Table of Contents */
|
/* Table of Contents */
|
||||||
#TableOfContents {
|
|
||||||
@apply lg:max-w-[25vw];
|
|
||||||
}
|
|
||||||
|
|
||||||
#TOCView {
|
#TOCView {
|
||||||
max-height: calc(100vh - 150px);
|
max-height: calc(100vh - 150px);
|
||||||
min-height: 0;
|
min-height: 0;
|
||||||
@@ -130,8 +126,8 @@ button,
|
|||||||
|
|
||||||
/* Fix katex overflow https://github.com/nunocoracao/blowfish/issues/2138 */
|
/* Fix katex overflow https://github.com/nunocoracao/blowfish/issues/2138 */
|
||||||
.katex-display {
|
.katex-display {
|
||||||
padding-right: 2px;
|
padding: 1em;
|
||||||
width: calc(100% - 2px);
|
width: calc(100% - 1em);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Fix long tables breaking out of article on mobile */
|
/* Fix long tables breaking out of article on mobile */
|
||||||
@@ -163,40 +159,13 @@ pre {
|
|||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
.thumbnail,
|
|
||||||
.thumbnail_card,
|
|
||||||
.thumbnail_card_related,
|
|
||||||
.thumbnail_card_term,
|
|
||||||
.single_hero_basic,
|
|
||||||
.single_hero_background {
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-size: cover;
|
|
||||||
background-position: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.thumbnail {
|
|
||||||
min-width: 300px;
|
|
||||||
height: 180px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.thumbnail_card {
|
|
||||||
height: 200px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.thumbnail_card_related {
|
|
||||||
height: 150px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.thumbnail_card_term {
|
|
||||||
height: 150px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.single_hero_round {
|
.single_hero_round {
|
||||||
max-height: 50vh;
|
max-height: 50vh;
|
||||||
object-fit: cover;
|
object-fit: cover;
|
||||||
}
|
}
|
||||||
|
|
||||||
.single_hero_background {
|
.single_hero_background {
|
||||||
|
width: calc(100% + 1px); /* patch for very small gap at right edge on mobile devices */
|
||||||
z-index: -10;
|
z-index: -10;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -205,7 +174,27 @@ pre {
|
|||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.thumbnailshadow {
|
.thumbnail_card {
|
||||||
|
min-width: 300px;
|
||||||
|
height: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.thumbnail_card_related {
|
||||||
|
height: 150px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.thumbnail {
|
||||||
|
width: 300px;
|
||||||
|
min-height: 180px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@variant max-md {
|
||||||
|
.thumbnail {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.thumbnail-shadow {
|
||||||
box-shadow: 5px 5px 20px 1px rgba(0, 0, 0, 0.3);
|
box-shadow: 5px 5px 20px 1px rgba(0, 0, 0, 0.3);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -223,22 +212,18 @@ pre {
|
|||||||
scroll-margin-top: 145px;
|
scroll-margin-top: 145px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* patch for skip to main content */
|
||||||
|
#main-content {
|
||||||
|
scroll-margin-top: -125px;
|
||||||
|
}
|
||||||
|
|
||||||
@variant sm {
|
@variant sm {
|
||||||
.thumbnail {
|
|
||||||
min-width: 100%;
|
|
||||||
height: 180px;
|
|
||||||
}
|
|
||||||
.article {
|
.article {
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@variant md {
|
@variant md {
|
||||||
.thumbnail {
|
|
||||||
min-width: 300px;
|
|
||||||
min-height: 180px;
|
|
||||||
height: auto;
|
|
||||||
}
|
|
||||||
.article {
|
.article {
|
||||||
flex-wrap: nowrap;
|
flex-wrap: nowrap;
|
||||||
}
|
}
|
||||||
@@ -278,8 +263,3 @@ pre {
|
|||||||
text-decoration-thickness: 3px;
|
text-decoration-thickness: 3px;
|
||||||
text-underline-offset: 4px;
|
text-underline-offset: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Cancel group hover if .group-hover-card contains .group-hover-cancel*/
|
|
||||||
.group-hover-card:hover:has(.group-hover-cancel:hover) .group-hover-card-title {
|
|
||||||
text-decoration: none !important;
|
|
||||||
}
|
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><path fill="currentColor" d="M495.8 0c5.5 0 10.9 .2 16.3 .7c7 .6 12.8 5.7 14.3 12.5s-1.6 13.9-7.7 17.3c-44.4 25.2-74.4 73-74.4 127.8c0 81 65.5 146.6 146.2 146.6c8.6 0 17-.7 25.1-2.1c6.9-1.2 13.8 2.2 17 8.5s1.9 13.8-3.1 18.7c-34.5 33.6-81.7 54.4-133.6 54.4c-9.3 0-18.4-.7-27.4-1.9c-11.2-22.6-29.8-40.9-52.6-51.7c-2.7-58.5-50.3-105.3-109.2-106.7c-1.7-10.4-2.6-21-2.6-31.8C304 86.1 389.8 0 495.8 0zM447.9 431.9c0 44.2-35.8 80-80 80L96 511.9c-53 0-96-43-96-96c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7z"/></svg>
|
||||||
|
After Width: | Height: | Size: 700 B |
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><path fill="currentColor" d="M0 336c0 79.5 64.5 144 144 144l368 0c70.7 0 128-57.3 128-128c0-61.9-44-113.6-102.4-125.4c4.1-10.7 6.4-22.4 6.4-34.6c0-53-43-96-96-96c-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32C167.6 32 96 103.6 96 192c0 2.7 .1 5.4 .2 8.1C40.2 219.8 0 273.2 0 336z"/></svg>
|
||||||
|
After Width: | Height: | Size: 353 B |
@@ -22,6 +22,34 @@ if (document.documentElement.getAttribute("data-auto-appearance") === "true") {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Mermaid dark mode support
|
||||||
|
var updateMermaidTheme = () => {
|
||||||
|
if (typeof mermaid !== 'undefined') {
|
||||||
|
const isDark = document.documentElement.classList.contains("dark");
|
||||||
|
|
||||||
|
const mermaids = document.querySelectorAll('pre.mermaid');
|
||||||
|
mermaids.forEach(e => {
|
||||||
|
if (e.getAttribute('data-processed')) {
|
||||||
|
// Already rendered, clean the processed attributes
|
||||||
|
e.removeAttribute('data-processed');
|
||||||
|
// Replace the rendered HTML with the stored text
|
||||||
|
e.innerHTML = e.getAttribute('data-graph');
|
||||||
|
} else {
|
||||||
|
// First time, store the text
|
||||||
|
e.setAttribute('data-graph', e.textContent);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (isDark) {
|
||||||
|
initMermaidDark();
|
||||||
|
mermaid.run();
|
||||||
|
} else {
|
||||||
|
initMermaidLight();
|
||||||
|
mermaid.run();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
window.addEventListener("DOMContentLoaded", (event) => {
|
window.addEventListener("DOMContentLoaded", (event) => {
|
||||||
const switcher = document.getElementById("appearance-switcher");
|
const switcher = document.getElementById("appearance-switcher");
|
||||||
const switcherMobile = document.getElementById("appearance-switcher-mobile");
|
const switcherMobile = document.getElementById("appearance-switcher-mobile");
|
||||||
@@ -29,6 +57,9 @@ window.addEventListener("DOMContentLoaded", (event) => {
|
|||||||
updateMeta();
|
updateMeta();
|
||||||
this.updateLogo?.(getTargetAppearance());
|
this.updateLogo?.(getTargetAppearance());
|
||||||
|
|
||||||
|
// Initialize mermaid theme on page load
|
||||||
|
updateMermaidTheme();
|
||||||
|
|
||||||
if (switcher) {
|
if (switcher) {
|
||||||
switcher.addEventListener("click", () => {
|
switcher.addEventListener("click", () => {
|
||||||
document.documentElement.classList.toggle("dark");
|
document.documentElement.classList.toggle("dark");
|
||||||
@@ -38,6 +69,7 @@ window.addEventListener("DOMContentLoaded", (event) => {
|
|||||||
targetAppearance
|
targetAppearance
|
||||||
);
|
);
|
||||||
updateMeta();
|
updateMeta();
|
||||||
|
updateMermaidTheme();
|
||||||
this.updateLogo?.(targetAppearance);
|
this.updateLogo?.(targetAppearance);
|
||||||
});
|
});
|
||||||
switcher.addEventListener("contextmenu", (event) => {
|
switcher.addEventListener("contextmenu", (event) => {
|
||||||
@@ -54,6 +86,7 @@ window.addEventListener("DOMContentLoaded", (event) => {
|
|||||||
targetAppearance
|
targetAppearance
|
||||||
);
|
);
|
||||||
updateMeta();
|
updateMeta();
|
||||||
|
updateMermaidTheme();
|
||||||
this.updateLogo?.(targetAppearance);
|
this.updateLogo?.(targetAppearance);
|
||||||
});
|
});
|
||||||
switcherMobile.addEventListener("contextmenu", (event) => {
|
switcherMobile.addEventListener("contextmenu", (event) => {
|
||||||
|
|||||||
@@ -2,18 +2,8 @@ function css(name) {
|
|||||||
return "rgb(" + getComputedStyle(document.documentElement).getPropertyValue(name) + ")";
|
return "rgb(" + getComputedStyle(document.documentElement).getPropertyValue(name) + ")";
|
||||||
}
|
}
|
||||||
|
|
||||||
document.addEventListener("DOMContentLoaded", () => {
|
function initMermaidLight() {
|
||||||
const mermaidDivs = document.querySelectorAll("div.mermaid");
|
mermaid.initialize({
|
||||||
|
|
||||||
for (const div of mermaidDivs) {
|
|
||||||
const preElement = div.querySelector("pre");
|
|
||||||
if (preElement) {
|
|
||||||
div.textContent = preElement.textContent;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
mermaid.initialize({
|
|
||||||
theme: "base",
|
theme: "base",
|
||||||
themeVariables: {
|
themeVariables: {
|
||||||
background: css("--color-neutral"),
|
background: css("--color-neutral"),
|
||||||
@@ -28,4 +18,16 @@ mermaid.initialize({
|
|||||||
"ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif",
|
"ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif",
|
||||||
fontSize: "16px",
|
fontSize: "16px",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function initMermaidDark() {
|
||||||
|
mermaid.initialize({
|
||||||
|
theme: "dark",
|
||||||
|
themeVariables: {
|
||||||
|
fontFamily:
|
||||||
|
"ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif",
|
||||||
|
fontSize: "16px",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
function scrollToTop() {
|
||||||
|
const scrollToTop = document.getElementById("scroll-to-top");
|
||||||
|
if (window.scrollY > window.innerHeight * 0.5) {
|
||||||
|
scrollToTop.classList.remove("translate-y-4", "opacity-0");
|
||||||
|
scrollToTop.classList.add("translate-y-0", "opacity-100");
|
||||||
|
} else {
|
||||||
|
scrollToTop.classList.remove("translate-y-0", "opacity-100");
|
||||||
|
scrollToTop.classList.add("translate-y-4", "opacity-0");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
window.addEventListener("scroll", scrollToTop);
|
||||||
|
window.addEventListener("load", scrollToTop);
|
||||||
@@ -1 +1 @@
|
|||||||
@font-face{font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(fonts/KaTeX_AMS-Regular.woff2) format("woff2"),url(fonts/KaTeX_AMS-Regular.woff) format("woff"),url(fonts/KaTeX_AMS-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Caligraphic-Bold.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Bold.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Caligraphic-Regular.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Regular.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Fraktur-Bold.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Bold.woff) format("woff"),url(fonts/KaTeX_Fraktur-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Fraktur-Regular.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Regular.woff) format("woff"),url(fonts/KaTeX_Fraktur-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Main-Bold.woff2) format("woff2"),url(fonts/KaTeX_Main-Bold.woff) format("woff"),url(fonts/KaTeX_Main-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(fonts/KaTeX_Main-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Main-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Main-BoldItalic.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(fonts/KaTeX_Main-Italic.woff2) format("woff2"),url(fonts/KaTeX_Main-Italic.woff) format("woff"),url(fonts/KaTeX_Main-Italic.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Main-Regular.woff2) format("woff2"),url(fonts/KaTeX_Main-Regular.woff) format("woff"),url(fonts/KaTeX_Main-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(fonts/KaTeX_Math-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Math-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Math-BoldItalic.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(fonts/KaTeX_Math-Italic.woff2) format("woff2"),url(fonts/KaTeX_Math-Italic.woff) format("woff"),url(fonts/KaTeX_Math-Italic.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:700;src:url(fonts/KaTeX_SansSerif-Bold.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Bold.woff) format("woff"),url(fonts/KaTeX_SansSerif-Bold.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:italic;font-weight:400;src:url(fonts/KaTeX_SansSerif-Italic.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Italic.woff) format("woff"),url(fonts/KaTeX_SansSerif-Italic.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:400;src:url(fonts/KaTeX_SansSerif-Regular.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Regular.woff) format("woff"),url(fonts/KaTeX_SansSerif-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Script-Regular.woff2) format("woff2"),url(fonts/KaTeX_Script-Regular.woff) format("woff"),url(fonts/KaTeX_Script-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size1-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size1-Regular.woff) format("woff"),url(fonts/KaTeX_Size1-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size2-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size2-Regular.woff) format("woff"),url(fonts/KaTeX_Size2-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size3-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size3-Regular.woff) format("woff"),url(fonts/KaTeX_Size3-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size4-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size4-Regular.woff) format("woff"),url(fonts/KaTeX_Size4-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Typewriter-Regular.woff2) format("woff2"),url(fonts/KaTeX_Typewriter-Regular.woff) format("woff"),url(fonts/KaTeX_Typewriter-Regular.ttf) format("truetype")}.katex{font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.22"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1pLine truncated
|
@font-face{font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(fonts/KaTeX_AMS-Regular.woff2) format("woff2"),url(fonts/KaTeX_AMS-Regular.woff) format("woff"),url(fonts/KaTeX_AMS-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Caligraphic-Bold.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Bold.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Caligraphic-Regular.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Regular.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Fraktur-Bold.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Bold.woff) format("woff"),url(fonts/KaTeX_Fraktur-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Fraktur-Regular.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Regular.woff) format("woff"),url(fonts/KaTeX_Fraktur-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Main-Bold.woff2) format("woff2"),url(fonts/KaTeX_Main-Bold.woff) format("woff"),url(fonts/KaTeX_Main-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(fonts/KaTeX_Main-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Main-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Main-BoldItalic.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(fonts/KaTeX_Main-Italic.woff2) format("woff2"),url(fonts/KaTeX_Main-Italic.woff) format("woff"),url(fonts/KaTeX_Main-Italic.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Main-Regular.woff2) format("woff2"),url(fonts/KaTeX_Main-Regular.woff) format("woff"),url(fonts/KaTeX_Main-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(fonts/KaTeX_Math-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Math-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Math-BoldItalic.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(fonts/KaTeX_Math-Italic.woff2) format("woff2"),url(fonts/KaTeX_Math-Italic.woff) format("woff"),url(fonts/KaTeX_Math-Italic.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:700;src:url(fonts/KaTeX_SansSerif-Bold.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Bold.woff) format("woff"),url(fonts/KaTeX_SansSerif-Bold.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:italic;font-weight:400;src:url(fonts/KaTeX_SansSerif-Italic.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Italic.woff) format("woff"),url(fonts/KaTeX_SansSerif-Italic.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:400;src:url(fonts/KaTeX_SansSerif-Regular.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Regular.woff) format("woff"),url(fonts/KaTeX_SansSerif-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Script-Regular.woff2) format("woff2"),url(fonts/KaTeX_Script-Regular.woff) format("woff"),url(fonts/KaTeX_Script-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size1-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size1-Regular.woff) format("woff"),url(fonts/KaTeX_Size1-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size2-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size2-Regular.woff) format("woff"),url(fonts/KaTeX_Size2-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size3-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size3-Regular.woff) format("woff"),url(fonts/KaTeX_Size3-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size4-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size4-Regular.woff) format("woff"),url(fonts/KaTeX_Size4-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Typewriter-Regular.woff2) format("woff2"),url(fonts/KaTeX_Typewriter-Regular.woff) format("woff"),url(fonts/KaTeX_Typewriter-Regular.ttf) format("truetype")}.katex{font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.23"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1pLine truncated
|
||||||
@@ -1 +1 @@
|
|||||||
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.katex=t():e.katex=t()}("undefined"!=typeof self?self:this,(function(){return function(){"use strict";var e={d:function(t,r){for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}},t={};e.d(t,{default:function(){return Wn}});class r{constructor(e,t){this.name=void 0,this.position=void 0,this.length=void 0,this.rawMessage=void 0;let n,o,s="KaTeX parse error: "+e;const i=t&&t.loc;if(i&&i.start<=i.end){const e=i.lexer.input;n=i.start,o=i.end,n===e.length?s+=" at end of input: ":s+=" at position "+(n+1)+": ";const t=e.slice(n,o).replace(/[^]/g,"$&\u0332");let r,a;r=n>15?"\u2026"+e.slice(n-15,n):e.slice(0,n),a=o+15<e.length?e.slice(o,o+15)+"\u2026":e.slice(o),s+=r+t+a}const a=new Error(s);return a.name="ParseError",a.__proto__=r.prototype,a.position=n,null!=n&&null!=o&&(a.length=o-n),a.rawMessage=e,a}}r.prototype.__proto__=Error.prototype;var n=r;const o=/([A-Z])/g,s={"&":"&",">":">","<":"<",'"':""","'":"'"},i=/[&><"']/g;const a=function(e){return"ordgroup"===e.type||"color"===e.type?1===e.body.length?a(e.body[0]):e:"font"===e.type?a(e.body):e};var l={contains:function(e,t){return-1!==e.indexOf(t)},deflt:function(e,t){return void 0===e?t:e},escape:function(e){return String(e).replace(i,(e=>s[e]))},hyphenate:function(e){return e.replace(o,"-$1").toLowerCase()},getBaseElem:a,isCharacterBox:function(e){const t=a(e);return"mathord"===t.type||"textord"===t.type||"atom"===t.type},protocolFromUrl:function(e){const t=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(e);return t?":"!==t[2]?null:/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(t[1])?t[1].toLowerCase():null:"_relative"}};const h={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format <type>"},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color <color>",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:e=>"#"+e},macros:{type:"object",cli:"-m, --macro <def>",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:(e,t)=>(t.push(e),t)},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:e=>Math.max(0,e),cli:"--min-rule-thickness <size>",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:e=>Math.max(0,e),cli:"-s, --max-size <n>",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:e=>Math.max(0,e),cli:"-e, --max-expand <n>",cliProcessor:e=>"Infinity"===e?1/0:parseInt(e)},globalGroup:{type:"boolean",cli:!1}};function c(e){if(e.default)return e.default;const t=e.type,r=Array.isArray(t)?t[0]:t;if("string"!=typeof r)return r.enum[0];switch(r){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}}class m{constructor(e){this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0Line truncated
|
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.katex=t():e.katex=t()}("undefined"!=typeof self?self:this,(function(){return function(){"use strict";var e={d:function(t,r){for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}},t={};e.d(t,{default:function(){return Wn}});class r{constructor(e,t){this.name=void 0,this.position=void 0,this.length=void 0,this.rawMessage=void 0;let n,o,s="KaTeX parse error: "+e;const i=t&&t.loc;if(i&&i.start<=i.end){const e=i.lexer.input;n=i.start,o=i.end,n===e.length?s+=" at end of input: ":s+=" at position "+(n+1)+": ";const t=e.slice(n,o).replace(/[^]/g,"$&\u0332");let r,a;r=n>15?"\u2026"+e.slice(n-15,n):e.slice(0,n),a=o+15<e.length?e.slice(o,o+15)+"\u2026":e.slice(o),s+=r+t+a}const a=new Error(s);return a.name="ParseError",a.__proto__=r.prototype,a.position=n,null!=n&&null!=o&&(a.length=o-n),a.rawMessage=e,a}}r.prototype.__proto__=Error.prototype;var n=r;const o=/([A-Z])/g,s={"&":"&",">":">","<":"<",'"':""","'":"'"},i=/[&><"']/g;const a=function(e){return"ordgroup"===e.type||"color"===e.type?1===e.body.length?a(e.body[0]):e:"font"===e.type?a(e.body):e};var l={contains:function(e,t){return-1!==e.indexOf(t)},deflt:function(e,t){return void 0===e?t:e},escape:function(e){return String(e).replace(i,(e=>s[e]))},hyphenate:function(e){return e.replace(o,"-$1").toLowerCase()},getBaseElem:a,isCharacterBox:function(e){const t=a(e);return"mathord"===t.type||"textord"===t.type||"atom"===t.type},protocolFromUrl:function(e){const t=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(e);return t?":"!==t[2]?null:/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(t[1])?t[1].toLowerCase():null:"_relative"}};const h={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format <type>"},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color <color>",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:e=>"#"+e},macros:{type:"object",cli:"-m, --macro <def>",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:(e,t)=>(t.push(e),t)},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:e=>Math.max(0,e),cli:"--min-rule-thickness <size>",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:e=>Math.max(0,e),cli:"-s, --max-size <n>",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:e=>Math.max(0,e),cli:"-e, --max-expand <n>",cliProcessor:e=>"Infinity"===e?1/0:parseInt(e)},globalGroup:{type:"boolean",cli:!1}};function c(e){if(e.default)return e.default;const t=e.type,r=Array.isArray(t)?t[0]:t;if("string"!=typeof r)return r.enum[0];switch(r){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}}class m{constructor(e){this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0Line truncated
|
||||||
@@ -2,4 +2,4 @@
|
|||||||
[module.hugoVersion]
|
[module.hugoVersion]
|
||||||
extended = true
|
extended = true
|
||||||
min = "0.141.0"
|
min = "0.141.0"
|
||||||
max = "0.150.0"
|
max = "0.151.0"
|
||||||
@@ -2,6 +2,9 @@
|
|||||||
# These settings are required for the theme to function.
|
# These settings are required for the theme to function.
|
||||||
|
|
||||||
[goldmark]
|
[goldmark]
|
||||||
|
[goldmark.parser]
|
||||||
|
wrapStandAloneImageWithinParagraph = false
|
||||||
|
|
||||||
[goldmark.renderer]
|
[goldmark.renderer]
|
||||||
unsafe = true
|
unsafe = true
|
||||||
|
|
||||||
|
|||||||
@@ -26,6 +26,8 @@ disableTextInHeader = false
|
|||||||
# defaultBackgroundImage = "IMAGE.jpg" # used as default for background images
|
# defaultBackgroundImage = "IMAGE.jpg" # used as default for background images
|
||||||
# defaultFeaturedImage = "IMAGE.jpg" # used as default for featured images in all articles
|
# defaultFeaturedImage = "IMAGE.jpg" # used as default for featured images in all articles
|
||||||
# defaultSocialImage = "/android-chrome-512x512.png" # used as default for social media sharing (Open Graph and Twitter)
|
# defaultSocialImage = "/android-chrome-512x512.png" # used as default for social media sharing (Open Graph and Twitter)
|
||||||
|
hotlinkFeatureImage = false
|
||||||
|
# imagePosition = "50% 50%"
|
||||||
|
|
||||||
# highlightCurrentMenuArea = true
|
# highlightCurrentMenuArea = true
|
||||||
# smartTOC = true
|
# smartTOC = true
|
||||||
@@ -160,7 +162,7 @@ forgejoDefaultServer = "https://v11.next.forgejo.org"
|
|||||||
# globalWidget = true
|
# globalWidget = true
|
||||||
# globalWidgetMessage = "Hello"
|
# globalWidgetMessage = "Hello"
|
||||||
# globalWidgetColor = "#FFDD00"
|
# globalWidgetColor = "#FFDD00"
|
||||||
# globalWidgetPosition = "Right"
|
# globalWidgetPosition = "right"
|
||||||
|
|
||||||
[verification]
|
[verification]
|
||||||
# google = ""
|
# google = ""
|
||||||
|
|||||||
@@ -2,6 +2,9 @@
|
|||||||
# These settings are required for the theme to function.
|
# These settings are required for the theme to function.
|
||||||
|
|
||||||
[goldmark]
|
[goldmark]
|
||||||
|
[goldmark.parser]
|
||||||
|
wrapStandAloneImageWithinParagraph = false
|
||||||
|
|
||||||
[goldmark.renderer]
|
[goldmark.renderer]
|
||||||
unsafe = true
|
unsafe = true
|
||||||
|
|
||||||
|
|||||||
@@ -26,6 +26,8 @@ disableTextInHeader = false
|
|||||||
defaultBackgroundImage = "/img/background.svg"
|
defaultBackgroundImage = "/img/background.svg"
|
||||||
defaultFeaturedImage = "/img/featured.svg"
|
defaultFeaturedImage = "/img/featured.svg"
|
||||||
defaultSocialImage = "/img/blowfish_banner.png"
|
defaultSocialImage = "/img/blowfish_banner.png"
|
||||||
|
hotlinkFeatureImage = false
|
||||||
|
# imagePosition = "50% 50%"
|
||||||
|
|
||||||
highlightCurrentMenuArea = true
|
highlightCurrentMenuArea = true
|
||||||
smartTOC = true
|
smartTOC = true
|
||||||
@@ -159,7 +161,7 @@ fingerprintAlgorithm = "sha512" # Valid values are "sha512" (default), "sha384",
|
|||||||
globalWidget = true
|
globalWidget = true
|
||||||
globalWidgetMessage = ""
|
globalWidgetMessage = ""
|
||||||
globalWidgetColor = "#FFDD00"
|
globalWidgetColor = "#FFDD00"
|
||||||
globalWidgetPosition = "Right"
|
globalWidgetPosition = "right"
|
||||||
|
|
||||||
[verification]
|
[verification]
|
||||||
# google = ""
|
# google = ""
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ description: "Questa pagina è stata creata utilizzando il tema Blowfish per Hug
|
|||||||
<span class="prose dark:prose-invert">Questa è una demo del layout <code id="layout">background</code>.</span>
|
<span class="prose dark:prose-invert">Questa è una demo del layout <code id="layout">background</code>.</span>
|
||||||
<button
|
<button
|
||||||
id="switch-layout-button"
|
id="switch-layout-button"
|
||||||
class="px-4 !text-neutral !no-underline rounded-md bg-primary-600 hover:!bg-primary-500 dark:bg-primary-800 dark:hover:!bg-primary-700"
|
class="px-4 mx-[3px] !text-neutral !no-underline rounded-md bg-primary-600 hover:!bg-primary-500 dark:bg-primary-800 dark:hover:!bg-primary-700"
|
||||||
>
|
>
|
||||||
Cambia layout ↻
|
Cambia layout ↻
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ description: "このページは Hugo の Blowfish テーマを利用して構
|
|||||||
<span class="prose dark:prose-invert">こちらは <code id="layout">background</code> レイアウトのデモです。</span>
|
<span class="prose dark:prose-invert">こちらは <code id="layout">background</code> レイアウトのデモです。</span>
|
||||||
<button
|
<button
|
||||||
id="switch-layout-button"
|
id="switch-layout-button"
|
||||||
class="px-4 !text-neutral !no-underline rounded-md bg-primary-600 hover:!bg-primary-500 dark:bg-primary-800 dark:hover:!bg-primary-700"
|
class="px-4 mx-[3px] !text-neutral !no-underline rounded-md bg-primary-600 hover:!bg-primary-500 dark:bg-primary-800 dark:hover:!bg-primary-700"
|
||||||
>
|
>
|
||||||
レイアウトを変更する↻
|
レイアウトを変更する↻
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ description: "This page was built using the Blowfish theme for Hugo."
|
|||||||
<span class="prose dark:prose-invert">This is a demo of the <code id="layout">background</code> layout.</span>
|
<span class="prose dark:prose-invert">This is a demo of the <code id="layout">background</code> layout.</span>
|
||||||
<button
|
<button
|
||||||
id="switch-layout-button"
|
id="switch-layout-button"
|
||||||
class="px-4 !text-neutral !no-underline rounded-md bg-primary-600 hover:!bg-primary-500 dark:bg-primary-800 dark:hover:!bg-primary-700"
|
class="px-4 mx-[3px] !text-neutral !no-underline rounded-md bg-primary-600 hover:!bg-primary-500 dark:bg-primary-800 dark:hover:!bg-primary-700"
|
||||||
>
|
>
|
||||||
Switch layout ↻
|
Switch layout ↻
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ description: "此页面是使用 Hugo 的 Blowfish 主题搭建的"
|
|||||||
<span class="prose dark:prose-invert"> 这是 <code id="layout">background</code> 的样式示例。</span>
|
<span class="prose dark:prose-invert"> 这是 <code id="layout">background</code> 的样式示例。</span>
|
||||||
<button
|
<button
|
||||||
id="switch-layout-button"
|
id="switch-layout-button"
|
||||||
class="px-4 !text-neutral !no-underline rounded-md bg-primary-600 hover:!bg-primary-500 dark:bg-primary-800 dark:hover:!bg-primary-700"
|
class="px-4 mx-[3px] !text-neutral !no-underline rounded-md bg-primary-600 hover:!bg-primary-500 dark:bg-primary-800 dark:hover:!bg-primary-700"
|
||||||
>
|
>
|
||||||
切换 layout ↻
|
切换 layout ↻
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ Tieni presente che i nomi delle variabili forniti in questa tabella utilizzano i
|
|||||||
|
|
||||||
<!-- prettier-ignore-start -->
|
<!-- prettier-ignore-start -->
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
| ------------------------ | ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `theme` | `"blowfish"` | Quando si utilizzano i moduli Hugo, questo valore di configurazione deve essere rimosso. Per tutti gli altri tipi di installazione, questo deve essere impostato su "blowfish" affinché il tema funzioni. |
|
| `theme` | `"blowfish"` | Quando si utilizzano i moduli Hugo, questo valore di configurazione deve essere rimosso. Per tutti gli altri tipi di installazione, questo deve essere impostato su "blowfish" affinché il tema funzioni. |
|
||||||
| `baseURL` | _Not set_ | The URL to the root of the website. |
|
| `baseURL` | _Not set_ | The URL to the root of the website. |
|
||||||
| `defaultContentLanguage` | `"en"` | This value determines the default language of theme components and content. Refer to the [language and i18n](#lingua-e-i18n) section below for supported language codes. |
|
| `defaultContentLanguage` | `"en"` | This value determines the default language of theme components and content. Refer to the [language and i18n](#lingua-e-i18n) section below for supported language codes. |
|
||||||
@@ -114,7 +114,7 @@ Il file predefinito può essere utilizzato come modello per creare lingue aggiun
|
|||||||
|
|
||||||
<!-- prettier-ignore-start -->
|
<!-- prettier-ignore-start -->
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
| -------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
| --- | --- | --- |
|
||||||
| `languageCode` | `"en"` | Il codice della lingua Hugo per questo file. Può essere una lingua di livello superiore (ad esempio "en") o una variante secondaria (ad esempio "en-au") e deve corrispondere al codice della lingua nel nome del file. Hugo si aspetta che questo valore sia sempre in minuscolo. Per una corretta conformità HTML, imposta il parametro "isoCode" che fa distinzione tra maiuscole e minuscole. |
|
| `languageCode` | `"en"` | Il codice della lingua Hugo per questo file. Può essere una lingua di livello superiore (ad esempio "en") o una variante secondaria (ad esempio "en-au") e deve corrispondere al codice della lingua nel nome del file. Hugo si aspetta che questo valore sia sempre in minuscolo. Per una corretta conformità HTML, imposta il parametro "isoCode" che fa distinzione tra maiuscole e minuscole. |
|
||||||
| `languageName` | `"English"` | Il nome della lingua. |
|
| `languageName` | `"English"` | Il nome della lingua. |
|
||||||
| `weight` | `1` | Il peso determina l'ordine delle lingue durante la creazione di siti multilingue. |
|
| `weight` | `1` | Il peso determina l'ordine delle lingue durante la creazione di siti multilingue. |
|
||||||
@@ -125,7 +125,7 @@ Il file predefinito può essere utilizzato come modello per creare lingue aggiun
|
|||||||
|
|
||||||
<!-- prettier-ignore-start -->
|
<!-- prettier-ignore-start -->
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
| ---------------------- | ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `params.displayName` | `"EN"` | Il nome utilizzato quando la lingua appare sul sito web. |
|
| `params.displayName` | `"EN"` | Il nome utilizzato quando la lingua appare sul sito web. |
|
||||||
| `params.isoCode` | `"en"` | Il codice della lingua ISO per scopi di metadati HTML. Può essere una lingua di livello superiore (es. `en`) o una sottovariante (es. `en-AU`). |
|
| `params.isoCode` | `"en"` | Il codice della lingua ISO per scopi di metadati HTML. Può essere una lingua di livello superiore (es. `en`) o una sottovariante (es. `en-AU`). |
|
||||||
| `params.rtl` | `false` | Se si tratta o meno di un linguaggio RTL. Imposta su "true" per ridisporre il contenuto da destra a sinistra. Blowfish supporta pienamente l'uso simultaneo dei linguaggi RTL e LTR e si adatterà dinamicamente ad entrambi. |
|
| `params.rtl` | `false` | Se si tratta o meno di un linguaggio RTL. Imposta su "true" per ridisporre il contenuto da destra a sinistra. Blowfish supporta pienamente l'uso simultaneo dei linguaggi RTL e LTR e si adatterà dinamicamente ad entrambi. |
|
||||||
@@ -140,7 +140,7 @@ Il file predefinito può essere utilizzato come modello per creare lingue aggiun
|
|||||||
#### Author
|
#### Author
|
||||||
|
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
| ----------------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `author.name` | _Not set_ | The author's name. This will be displayed in article footers, and on the homepage when the profile layout is used. |
|
| `author.name` | _Not set_ | The author's name. This will be displayed in article footers, and on the homepage when the profile layout is used. |
|
||||||
| `author.image` | _Not set_ | Path to the image file of the author. The image should be a 1:1 aspect ratio. The image can be placed in the site's `assets/` folder or can be external url. |
|
| `author.image` | _Not set_ | Path to the image file of the author. The image should be a 1:1 aspect ratio. The image can be placed in the site's `assets/` folder or can be external url. |
|
||||||
| `author.headline` | _Not set_ | A Markdown string containing the author's headline. It will be displayed on the profile homepage under the author's name. |
|
| `author.headline` | _Not set_ | A Markdown string containing the author's headline. It will be displayed on the profile homepage under the author's name. |
|
||||||
@@ -167,7 +167,7 @@ Many of the article defaults here can be overridden on a per article basis by sp
|
|||||||
### Global
|
### Global
|
||||||
|
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
| ------------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `colorScheme` | `"blowfish"` | The theme colour scheme to use. Valid values are `blowfish` (default), `avocado`, `fire`, `ocean`, `forest`, `princess`, `neon`, `bloody`, `terminal`, `marvel`, `noir`, `autumn`, `congo`, and`slate`. Refer to the [Colour Schemes]({{< ref "getting-started#colour-schemes" >}}) section for more details. |
|
| `colorScheme` | `"blowfish"` | The theme colour scheme to use. Valid values are `blowfish` (default), `avocado`, `fire`, `ocean`, `forest`, `princess`, `neon`, `bloody`, `terminal`, `marvel`, `noir`, `autumn`, `congo`, and`slate`. Refer to the [Colour Schemes]({{< ref "getting-started#colour-schemes" >}}) section for more details. |
|
||||||
| `defaultAppearance` | `"light"` | The default theme appearance, either `light` or `dark`. |
|
| `defaultAppearance` | `"light"` | The default theme appearance, either `light` or `dark`. |
|
||||||
| `autoSwitchAppearance` | `true` | Whether the theme appearance automatically switches based upon the visitor's operating system preference. Set to `false` to force the site to always use the `defaultAppearance`. |
|
| `autoSwitchAppearance` | `true` | Whether the theme appearance automatically switches based upon the visitor's operating system preference. Set to `false` to force the site to always use the `defaultAppearance`. |
|
||||||
@@ -185,6 +185,8 @@ Many of the article defaults here can be overridden on a per article basis by sp
|
|||||||
| `defaultBackgroundImage` | _Not set_ | Default background image for both `background` homepage layout and `background` hero style |
|
| `defaultBackgroundImage` | _Not set_ | Default background image for both `background` homepage layout and `background` hero style |
|
||||||
| `defaultFeaturedImage` | _Not set_ | Default background image for all `featured` images across articles, will be overridden by a local `featured` image. |
|
| `defaultFeaturedImage` | _Not set_ | Default background image for all `featured` images across articles, will be overridden by a local `featured` image. |
|
||||||
| `defaultSocialImage` | _Not set_ | Default image for social media sharing (Open Graph and Twitter). Will be overridden by a local `feature` image if available. |
|
| `defaultSocialImage` | _Not set_ | Default image for social media sharing (Open Graph and Twitter). Will be overridden by a local `feature` image if available. |
|
||||||
|
| `hotlinkFeatureImage` | `false` | Hotlink external images in article feature images and article cards. Those images will not be processed by Hugo. |
|
||||||
|
| `imagePosition` | _Not set_ | Sets the position of the default image using `object-position` attribute. Valid values are as specified in the [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/CSS/object-position#try_it). |
|
||||||
| `highlightCurrentMenuArea` | _Not set_ | Marks menu entries in the main menu when selected |
|
| `highlightCurrentMenuArea` | _Not set_ | Marks menu entries in the main menu when selected |
|
||||||
| `smartTOC` | _Not set_ | Activate smart Table of Contents, items in view will be highlighted. |
|
| `smartTOC` | _Not set_ | Activate smart Table of Contents, items in view will be highlighted. |
|
||||||
| `smartTOCHideUnfocusedChildren` | _Not set_ | When smart Table of Contents is turned on, this will hide deeper levels of the table when they are not in focus. |
|
| `smartTOCHideUnfocusedChildren` | _Not set_ | When smart Table of Contents is turned on, this will hide deeper levels of the table when they are not in focus. |
|
||||||
@@ -193,13 +195,13 @@ Many of the article defaults here can be overridden on a per article basis by sp
|
|||||||
### Header
|
### Header
|
||||||
|
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
| --------------- | --------- | ------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `header.layout` | `"basic"` | Defines the header for the entire site, supported values are `basic`, `fixed`, `fixed-fill`, and `fixed-fill-blur`. |
|
| `header.layout` | `"basic"` | Defines the header for the entire site, supported values are `basic`, `fixed`, `fixed-fill`, and `fixed-fill-blur`. |
|
||||||
|
|
||||||
### Footer
|
### Footer
|
||||||
|
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
| ------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `footer.showMenu` | `true` | Show/hide the footer menu, which can be configured in the `[[footer]]` section of the `config/_default/menus.en.toml` file. |
|
| `footer.showMenu` | `true` | Show/hide the footer menu, which can be configured in the `[[footer]]` section of the `config/_default/menus.en.toml` file. |
|
||||||
| `footer.showCopyright` | `true` | Whether or not to show the copyright string in the site footer. Note that the string itself can be customised using the `copyright` parameter in the [languages configuration](#lingua-e-i18n). |
|
| `footer.showCopyright` | `true` | Whether or not to show the copyright string in the site footer. Note that the string itself can be customised using the `copyright` parameter in the [languages configuration](#lingua-e-i18n). |
|
||||||
| `footer.showThemeAttribution` | `true` | Whether or not to show the "powered by" theme attribution in the site footer. If you choose to disable this message, please consider attributing the theme somewhere else on your site (for example, on your about page). |
|
| `footer.showThemeAttribution` | `true` | Whether or not to show the "powered by" theme attribution in the site footer. If you choose to disable this message, please consider attributing the theme somewhere else on your site (for example, on your about page). |
|
||||||
@@ -209,7 +211,7 @@ Many of the article defaults here can be overridden on a per article basis by sp
|
|||||||
### Homepage
|
### Homepage
|
||||||
|
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
| ------------------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
| --- | --- | --- |
|
||||||
| `homepage.layout` | `"profile"` | The layout of the homepage. Valid values are `page`, `profile`, `hero`, `card`, `background`, or `custom`. When set to `custom`, you must provide your own layout by creating a `/layouts/partials/home/custom.html` file. Refer to the [Homepage Layout]({{< ref "homepage-layout" >}}) section for more details. |
|
| `homepage.layout` | `"profile"` | The layout of the homepage. Valid values are `page`, `profile`, `hero`, `card`, `background`, or `custom`. When set to `custom`, you must provide your own layout by creating a `/layouts/partials/home/custom.html` file. Refer to the [Homepage Layout]({{< ref "homepage-layout" >}}) section for more details. |
|
||||||
| `homepage.homepageImage` | _Not set_ | Image to be used in `hero` and `card` layouts. Can be set as local image from asset directory or external image url. Refer to the [Homepage Layout]({{< ref "homepage-layout" >}}) section for more details. |
|
| `homepage.homepageImage` | _Not set_ | Image to be used in `hero` and `card` layouts. Can be set as local image from asset directory or external image url. Refer to the [Homepage Layout]({{< ref "homepage-layout" >}}) section for more details. |
|
||||||
| `homepage.showRecent` | `false` | Whether or not to display the recent articles list on the homepage. |
|
| `homepage.showRecent` | `false` | Whether or not to display the recent articles list on the homepage. |
|
||||||
@@ -224,7 +226,7 @@ Many of the article defaults here can be overridden on a per article basis by sp
|
|||||||
### Article
|
### Article
|
||||||
|
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
| ------------------------------------- | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `article.showDate` | `true` | Whether or not article dates are displayed. |
|
| `article.showDate` | `true` | Whether or not article dates are displayed. |
|
||||||
| `article.showViews` | `false` | Whether or not article views are displayed. This requires firebase integrations to be enabled, look below. |
|
| `article.showViews` | `false` | Whether or not article views are displayed. This requires firebase integrations to be enabled, look below. |
|
||||||
| `article.showLikes` | `false` | Whether or not article likes are displayed. This requires firebase integrations to be enabled, look below. |
|
| `article.showLikes` | `false` | Whether or not article likes are displayed. This requires firebase integrations to be enabled, look below. |
|
||||||
@@ -259,7 +261,7 @@ Many of the article defaults here can be overridden on a per article basis by sp
|
|||||||
### List
|
### List
|
||||||
|
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
| ---------------------------------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `list.showHero` | `false` | Whether the thumbnail image will be shown as a hero image within each list page. |
|
| `list.showHero` | `false` | Whether the thumbnail image will be shown as a hero image within each list page. |
|
||||||
| `list.heroStyle` | _Not set_ | Style to display the hero image, valid options are: `basic`, `big`, `background`, `thumbAndBackground`. |
|
| `list.heroStyle` | _Not set_ | Style to display the hero image, valid options are: `basic`, `big`, `background`, `thumbAndBackground`. |
|
||||||
| `list.showBreadcrumbs` | `false` | Whether or not breadcrumbs are displayed in the header on list pages. |
|
| `list.showBreadcrumbs` | `false` | Whether or not breadcrumbs are displayed in the header on list pages. |
|
||||||
@@ -280,13 +282,13 @@ Many of the article defaults here can be overridden on a per article basis by sp
|
|||||||
### Sitemap
|
### Sitemap
|
||||||
|
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
| ----------------------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `sitemap.excludedKinds` | `["taxonomy", "term"]` | Kinds of content that should be excluded from the generated `/sitemap.xml` file. Refer to the [Hugo docs](https://gohugo.io/methods/page/kind/) for acceptable values. |
|
| `sitemap.excludedKinds` | `["taxonomy", "term"]` | Kinds of content that should be excluded from the generated `/sitemap.xml` file. Refer to the [Hugo docs](https://gohugo.io/methods/page/kind/) for acceptable values. |
|
||||||
|
|
||||||
### Taxonomy
|
### Taxonomy
|
||||||
|
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
| ------------------------------ | --------- | ---------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `taxonomy.showTermCount` | `true` | Whether or not the number of articles within a taxonomy term is displayed on the taxonomy listing. |
|
| `taxonomy.showTermCount` | `true` | Whether or not the number of articles within a taxonomy term is displayed on the taxonomy listing. |
|
||||||
| `taxonomy.showHero` | `false` | Whether the thumbnail image will be shown as a hero image within each taxonomy page. |
|
| `taxonomy.showHero` | `false` | Whether the thumbnail image will be shown as a hero image within each taxonomy page. |
|
||||||
| `taxonomy.heroStyle` | _Not set_ | Style to display the hero image, valid options are: `basic`, `big`, `background`, `thumbAndBackground`. |
|
| `taxonomy.heroStyle` | _Not set_ | Style to display the hero image, valid options are: `basic`, `big`, `background`, `thumbAndBackground`. |
|
||||||
@@ -299,7 +301,7 @@ Many of the article defaults here can be overridden on a per article basis by sp
|
|||||||
### Term
|
### Term
|
||||||
|
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
| -------------------------- | --------- | ---------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `term.showHero` | `false` | Whether the thumbnail image will be shown as a hero image within each term page. |
|
| `term.showHero` | `false` | Whether the thumbnail image will be shown as a hero image within each term page. |
|
||||||
| `term.heroStyle` | _Not set_ | Style to display the hero image, valid options are: `basic`, `big`, `background`, `thumbAndBackground`. |
|
| `term.heroStyle` | _Not set_ | Style to display the hero image, valid options are: `basic`, `big`, `background`, `thumbAndBackground`. |
|
||||||
| `term.showBreadcrumbs` | `false` | Whether or not breadcrumbs are displayed in the term header. |
|
| `term.showBreadcrumbs` | `false` | Whether or not breadcrumbs are displayed in the term header. |
|
||||||
@@ -313,7 +315,7 @@ Many of the article defaults here can be overridden on a per article basis by sp
|
|||||||
### Firebase
|
### Firebase
|
||||||
|
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
| ---------------------------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `firebase.apiKey` | _Not set_ | Firebase apiKey, required to integrate against Firebase. Check [this page]({{< ref "firebase-views" >}}) for a guide on how to integrate Firebase into Blowfish. |
|
| `firebase.apiKey` | _Not set_ | Firebase apiKey, required to integrate against Firebase. Check [this page]({{< ref "firebase-views" >}}) for a guide on how to integrate Firebase into Blowfish. |
|
||||||
| `firebase.authDomain` | _Not set_ | Firebase authDomain, required to integrate against Firebase. Check [this page]({{< ref "firebase-views" >}}) for a guide on how to integrate Firebase into Blowfish. |
|
| `firebase.authDomain` | _Not set_ | Firebase authDomain, required to integrate against Firebase. Check [this page]({{< ref "firebase-views" >}}) for a guide on how to integrate Firebase into Blowfish. |
|
||||||
| `firebase.projectId` | _Not set_ | Firebase projectId, required to integrate against Firebase. Check [this page]({{< ref "firebase-views" >}}) for a guide on how to integrate Firebase into Blowfish. |
|
| `firebase.projectId` | _Not set_ | Firebase projectId, required to integrate against Firebase. Check [this page]({{< ref "firebase-views" >}}) for a guide on how to integrate Firebase into Blowfish. |
|
||||||
@@ -325,14 +327,14 @@ Many of the article defaults here can be overridden on a per article basis by sp
|
|||||||
### Fathom Analytics
|
### Fathom Analytics
|
||||||
|
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
| ------------------------ | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `fathomAnalytics.site` | _Not set_ | The site code generated by Fathom Analytics for the website. Refer to the [Analytics docs]({{< ref "partials#analytics" >}}) for more details. |
|
| `fathomAnalytics.site` | _Not set_ | The site code generated by Fathom Analytics for the website. Refer to the [Analytics docs]({{< ref "partials#analytics" >}}) for more details. |
|
||||||
| `fathomAnalytics.domain` | _Not set_ | If using a custom domain with Fathom Analytics, provide it here to serve `script.js` from the custom domain. |
|
| `fathomAnalytics.domain` | _Not set_ | If using a custom domain with Fathom Analytics, provide it here to serve `script.js` from the custom domain. |
|
||||||
|
|
||||||
### Umami Analytics
|
### Umami Analytics
|
||||||
|
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
| -------------------------- | --------- |----------------------------------------------------------------------------------------------------------------------------------------------------|
|
| --- | --- | --- |
|
||||||
| `umamiAnalytics.websiteid` | _Not set_ | The site code generated by Umami Analytics for the website. Refer to the [Analytics docs]({{< ref "partials#analytics" >}}) for more details. |
|
| `umamiAnalytics.websiteid` | _Not set_ | The site code generated by Umami Analytics for the website. Refer to the [Analytics docs]({{< ref "partials#analytics" >}}) for more details. |
|
||||||
| `umamiAnalytics.domain` | _Not set_ | If using a custom domain with Umami Analytics, provide it here to serve `script.js` from the custom domain. |
|
| `umamiAnalytics.domain` | _Not set_ | If using a custom domain with Umami Analytics, provide it here to serve `script.js` from the custom domain. |
|
||||||
| `umamiAnalytics.dataDomains` | _Not set_ | If you want the tracker to only run on specific domains, provide it for your tracker script. This is a comma delimited list of domain names. Such as "yoursite.com,yoursite2.com". |
|
| `umamiAnalytics.dataDomains` | _Not set_ | If you want the tracker to only run on specific domains, provide it for your tracker script. This is a comma delimited list of domain names. Such as "yoursite.com,yoursite2.com". |
|
||||||
@@ -342,24 +344,24 @@ Many of the article defaults here can be overridden on a per article basis by sp
|
|||||||
### Seline Analytics
|
### Seline Analytics
|
||||||
|
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
|-----------------------------------|-----------|-------------------------------------------------------------------------------------------------------------------------------------------|
|
| --- | --- | --- |
|
||||||
| `selineAnalytics.token` | _Not set_ | The token generated by Seline Analytics for the website. Refer to the [Analytics docs]({{< ref "partials#analytics" >}}) for more details. |
|
| `selineAnalytics.token` | _Not set_ | The token generated by Seline Analytics for the website. Refer to the [Analytics docs]({{< ref "partials#analytics" >}}) for more details. |
|
||||||
| `selineAnalytics.enableTrackEvent` | true | When set to `true` track event will add automatically. If you do not want to add track event, set it to `false`. |
|
| `selineAnalytics.enableTrackEvent` | true | When set to `true` track event will add automatically. If you do not want to add track event, set it to `false`. |
|
||||||
|
|
||||||
### BuyMeACoffee
|
### BuyMeACoffee
|
||||||
|
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
| ----------------------------------- | --------- | --------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `buymeacoffee.identifier` | _Not set_ | The identifier to the target buymeacoffee account. |
|
| `buymeacoffee.identifier` | _Not set_ | The identifier to the target buymeacoffee account. |
|
||||||
| `buymeacoffee.globalWidget` | _Not set_ | Activate the global buymeacoffee widget. |
|
| `buymeacoffee.globalWidget` | _Not set_ | Activate the global buymeacoffee widget. |
|
||||||
| `buymeacoffee.globalWidgetMessage` | _Not set_ | Message what will be displayed the first time a new user lands on the site. |
|
| `buymeacoffee.globalWidgetMessage` | _Not set_ | Message what will be displayed the first time a new user lands on the site. |
|
||||||
| `buymeacoffee.globalWidgetColor` | _Not set_ | Widget color in hex format. |
|
| `buymeacoffee.globalWidgetColor` | `#FFDD00` | Widget color in hex format. |
|
||||||
| `buymeacoffee.globalWidgetPosition` | _Not set_ | Position of the widget, i.e. "Left" or "Right" |
|
| `buymeacoffee.globalWidgetPosition` | _Not set_ | Position of the widget, i.e. "left" or "right" |
|
||||||
|
|
||||||
### Verifications
|
### Verifications
|
||||||
|
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
| ------------------------ | --------- | --------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `verification.google` | _Not set_ | The site verification string provided by Google to be included in the site metadata. |
|
| `verification.google` | _Not set_ | The site verification string provided by Google to be included in the site metadata. |
|
||||||
| `verification.bing` | _Not set_ | The site verification string provided by Bing to be included in the site metadata. |
|
| `verification.bing` | _Not set_ | The site verification string provided by Bing to be included in the site metadata. |
|
||||||
| `verification.pinterest` | _Not set_ | The site verification string provided by Pinterest to be included in the site metadata. |
|
| `verification.pinterest` | _Not set_ | The site verification string provided by Pinterest to be included in the site metadata. |
|
||||||
@@ -369,7 +371,7 @@ Many of the article defaults here can be overridden on a per article basis by sp
|
|||||||
### RSSNext
|
### RSSNext
|
||||||
|
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
| ------------------------ | --------- |--------------------------------------------------------------------------------------------------------------------------------------|
|
| --- | --- | --- |
|
||||||
| `rssnext.feedId` | _Not set_ | The rss `feedId` string provided by [RSSNext/Follow](https://follow.is/) to be included in the `rss.xml`, which can helps to claim rss feed as your own. |
|
| `rssnext.feedId` | _Not set_ | The rss `feedId` string provided by [RSSNext/Follow](https://follow.is/) to be included in the `rss.xml`, which can helps to claim rss feed as your own. |
|
||||||
| `rssnext.userId` | _Not set_ | The rss `userId` string provided by [RSSNext/Follow](https://follow.is/) to be included in the `rss.xml`, which can helps to claim rss feed as your own. |
|
| `rssnext.userId` | _Not set_ | The rss `userId` string provided by [RSSNext/Follow](https://follow.is/) to be included in the `rss.xml`, which can helps to claim rss feed as your own. |
|
||||||
|
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ npx blowfish-tools
|
|||||||
|
|
||||||
<!-- prettier-ignore-start -->
|
<!-- prettier-ignore-start -->
|
||||||
| 名前 | デフォルト | 説明 |
|
| 名前 | デフォルト | 説明 |
|
||||||
| ------------------------ | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `theme` | `"blowfish"` | Hugo Modules を使用している場合は、この設定値を削除する必要があります。 他のすべてのインストールタイプでは、テーマが機能するためにこれを `blowfish` に設定する必要があります。 |
|
| `theme` | `"blowfish"` | Hugo Modules を使用している場合は、この設定値を削除する必要があります。 他のすべてのインストールタイプでは、テーマが機能するためにこれを `blowfish` に設定する必要があります。 |
|
||||||
| `baseURL` | _未設定_ | ウェブサイトのルートへの URL です。 |
|
| `baseURL` | _未設定_ | ウェブサイトのルートへの URL です。 |
|
||||||
| `defaultContentLanguage` | `"en"` | この値は、テーマコンポーネントとコンテンツのデフォルト言語を決定します。 サポートされている言語コードについては、以下の[言語と i18n](#言語と-i18n) セクションを参照してください。 |
|
| `defaultContentLanguage` | `"en"` | この値は、テーマコンポーネントとコンテンツのデフォルト言語を決定します。 サポートされている言語コードについては、以下の[言語と i18n](#言語と-i18n) セクションを参照してください。 |
|
||||||
@@ -113,7 +113,7 @@ Blowfish は多言語ウェブサイト向けに最適化されており、テ
|
|||||||
|
|
||||||
<!-- prettier-ignore-start -->
|
<!-- prettier-ignore-start -->
|
||||||
| 名前 | デフォルト | 説明 |
|
| 名前 | デフォルト | 説明 |
|
||||||
| -------------- | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `languageCode` | `"en"` | このファイルの Hugo 言語コードです。トップレベル言語(例: `en`)またはサブバリアント(例: `en-au`)にすることができ、ファイル名の言語コードと一致する必要があります。Hugo はこの値が常に小文字であることを想定しています。適切な HTML 準拠のために、大文字と小文字を区別する `isoCode` パラメータを設定します。 |
|
| `languageCode` | `"en"` | このファイルの Hugo 言語コードです。トップレベル言語(例: `en`)またはサブバリアント(例: `en-au`)にすることができ、ファイル名の言語コードと一致する必要があります。Hugo はこの値が常に小文字であることを想定しています。適切な HTML 準拠のために、大文字と小文字を区別する `isoCode` パラメータを設定します。 |
|
||||||
| `languageName` | `"English"` | 言語の名前です。 |
|
| `languageName` | `"English"` | 言語の名前です。 |
|
||||||
| `weight` | `1` | 重みは、多言語サイトを構築するときの言語の順序を決定します。 |
|
| `weight` | `1` | 重みは、多言語サイトを構築するときの言語の順序を決定します。 |
|
||||||
@@ -124,7 +124,7 @@ Blowfish は多言語ウェブサイト向けに最適化されており、テ
|
|||||||
|
|
||||||
<!-- prettier-ignore-start -->
|
<!-- prettier-ignore-start -->
|
||||||
| 名前 | デフォルト | 説明 |
|
| 名前 | デフォルト | 説明 |
|
||||||
| ---------------------- | ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `params.displayName` | `"EN"` | ウェブサイトに言語が表示されるときに使用される名前です。 |
|
| `params.displayName` | `"EN"` | ウェブサイトに言語が表示されるときに使用される名前です。 |
|
||||||
| `params.isoCode` | `"en"` | HTML メタデータ用の ISO 言語コードです。トップレベル言語(例: `en`)またはサブバリアント(例: `en-AU`)にすることができます。 |
|
| `params.isoCode` | `"en"` | HTML メタデータ用の ISO 言語コードです。トップレベル言語(例: `en`)またはサブバリアント(例: `en-AU`)にすることができます。 |
|
||||||
| `params.rtl` | `false` | これが RTL 言語かどうかです。`true` に設定すると、コンテンツが右から左に並べ替えられます。 Blowfish は RTL 言語と LTR 言語の同時使用を完全にサポートしており、両方に動的に調整されます。 |
|
| `params.rtl` | `false` | これが RTL 言語かどうかです。`true` に設定すると、コンテンツが右から左に並べ替えられます。 Blowfish は RTL 言語と LTR 言語の同時使用を完全にサポートしており、両方に動的に調整されます。 |
|
||||||
@@ -140,7 +140,7 @@ Blowfish は多言語ウェブサイト向けに最適化されており、テ
|
|||||||
|
|
||||||
<!-- prettier-ignore-start -->
|
<!-- prettier-ignore-start -->
|
||||||
| 名前 | デフォルト | 説明 |
|
| 名前 | デフォルト | 説明 |
|
||||||
| ----------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `author.name` | _未設定_ | 著者の名前です。これは、記事のフッターと、プロフィールレイアウトが使用されている場合はホームページに表示されます。 |
|
| `author.name` | _未設定_ | 著者の名前です。これは、記事のフッターと、プロフィールレイアウトが使用されている場合はホームページに表示されます。 |
|
||||||
| `author.image` | _未設定_ | 著者の画像ファイルへのパスです。画像は縦横比 1:1 である必要があります。画像は、サイトの `assets/` フォルダに配置することも、外部 URL にすることもできます。 |
|
| `author.image` | _未設定_ | 著者の画像ファイルへのパスです。画像は縦横比 1:1 である必要があります。画像は、サイトの `assets/` フォルダに配置することも、外部 URL にすることもできます。 |
|
||||||
| `author.headline` | _未設定_ | 著者の見出しを含む Markdown 文字列です。プロフィールホームページの著者の名前に下に表示されます。 |
|
| `author.headline` | _未設定_ | 著者の見出しを含む Markdown 文字列です。プロフィールホームページの著者の名前に下に表示されます。 |
|
||||||
@@ -167,7 +167,7 @@ Blowfish は、テーマの機能を制御する多数の設定パラメータ
|
|||||||
### グローバル
|
### グローバル
|
||||||
|
|
||||||
| 名前 | デフォルト | 説明 |
|
| 名前 | デフォルト | 説明 |
|
||||||
| ------------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `colorScheme` | `"blowfish"` | 使用するテーマのカラースキームです。有効な値は、`blowfish`(デフォルト)、`avocado`、`fire`、`ocean`、`forest`、`princess`、`neon`、`bloody`、`terminal`、`marvel`、`noir`、`autumn`、`congo`、`slate` です。詳細については、[カラースキーム]({{< ref "getting-started#カラースキーム" >}})セクションを参照してください。 |
|
| `colorScheme` | `"blowfish"` | 使用するテーマのカラースキームです。有効な値は、`blowfish`(デフォルト)、`avocado`、`fire`、`ocean`、`forest`、`princess`、`neon`、`bloody`、`terminal`、`marvel`、`noir`、`autumn`、`congo`、`slate` です。詳細については、[カラースキーム]({{< ref "getting-started#カラースキーム" >}})セクションを参照してください。 |
|
||||||
| `defaultAppearance` | `"light"` | デフォルトのテーマの外観です。`light` または `dark` のいずれかです。 |
|
| `defaultAppearance` | `"light"` | デフォルトのテーマの外観です。`light` または `dark` のいずれかです。 |
|
||||||
| `autoSwitchAppearance` | `true` | 訪問者のオペレーティングシステムの設定に基づいてテーマの外観を自動的に切り替えるかどうかです。`false` に設定すると、サイトは常に `defaultAppearance` を使用します。 |
|
| `autoSwitchAppearance` | `true` | 訪問者のオペレーティングシステムの設定に基づいてテーマの外観を自動的に切り替えるかどうかです。`false` に設定すると、サイトは常に `defaultAppearance` を使用します。 |
|
||||||
@@ -185,6 +185,8 @@ Blowfish は、テーマの機能を制御する多数の設定パラメータ
|
|||||||
| `defaultBackgroundImage` | _未設定_ | `background` ホームページレイアウトと `background` ヒーロースタイルの両方のデフォルトの背景画像です。 |
|
| `defaultBackgroundImage` | _未設定_ | `background` ホームページレイアウトと `background` ヒーロースタイルの両方のデフォルトの背景画像です。 |
|
||||||
| `defaultFeaturedImage` | _未設定_ | 記事全体のすべての `featured` 画像のデフォルトの背景画像です。ローカルの `featured` 画像によってオーバーライドされます。 |
|
| `defaultFeaturedImage` | _未設定_ | 記事全体のすべての `featured` 画像のデフォルトの背景画像です。ローカルの `featured` 画像によってオーバーライドされます。 |
|
||||||
| `defaultSocialImage` | _未設定_ | ソーシャルメディア共有(Open Graph と Twitter)用のデフォルト画像。ローカルの `featured` 画像によってオーバーライドされます。 |
|
| `defaultSocialImage` | _未設定_ | ソーシャルメディア共有(Open Graph と Twitter)用のデフォルト画像。ローカルの `featured` 画像によってオーバーライドされます。 |
|
||||||
|
| `hotlinkFeatureImage` | `false` | 記事のアイキャッチ画像や記事カードで外部画像をホットリンクします。これらの画像は Hugo によって処理されません。 |
|
||||||
|
| `imagePosition` | _未設定_ | `object-position` 属性を使用してデフォルト画像の位置を設定します。有効な値は [MDN ドキュメント](https://developer.mozilla.org/en-US/docs/Web/CSS/object-position#try_it) に記載されています。 |
|
||||||
| `highlightCurrentMenuArea` | _未設定_ | メインメニューのメニュー項目が選択されているときにマークを付けます。 |
|
| `highlightCurrentMenuArea` | _未設定_ | メインメニューのメニュー項目が選択されているときにマークを付けます。 |
|
||||||
| `smartTOC` | _未設定_ | スマート目次をアクティブにします。表示されている項目が強調表示されます。 |
|
| `smartTOC` | _未設定_ | スマート目次をアクティブにします。表示されている項目が強調表示されます。 |
|
||||||
| `smartTOCHideUnfocusedChildren` | _未設定_ | スマート目次がオンになっている場合、フォーカスされていないときに、テーブルのより深いレベルが非表示になります。 |
|
| `smartTOCHideUnfocusedChildren` | _未設定_ | スマート目次がオンになっている場合、フォーカスされていないときに、テーブルのより深いレベルが非表示になります。 |
|
||||||
@@ -193,13 +195,13 @@ Blowfish は、テーマの機能を制御する多数の設定パラメータ
|
|||||||
### ヘッダー(Header)
|
### ヘッダー(Header)
|
||||||
|
|
||||||
| 名前 | デフォルト | 説明 |
|
| 名前 | デフォルト | 説明 |
|
||||||
| --------------- | ---------- | ------------------------------------------------------------------------------------------------------------------ |
|
| --- | --- | --- |
|
||||||
| `header.layout` | `"basic"` | サイト全体のヘッダーを定義します。サポートされている値は、`basic`、`fixed`、`fixed-fill`、`fixed-fill-blur` です。 |
|
| `header.layout` | `"basic"` | サイト全体のヘッダーを定義します。サポートされている値は、`basic`、`fixed`、`fixed-fill`、`fixed-fill-blur` です。 |
|
||||||
|
|
||||||
### フッター(Footer)
|
### フッター(Footer)
|
||||||
|
|
||||||
| 名前 | デフォルト | 説明 |
|
| 名前 | デフォルト | 説明 |
|
||||||
| ------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `footer.showMenu` | `true` | フッターメニューを表示/非表示にします。これは、`config/_default/menus.en.toml` ファイルの `[[footer]]` セクションで設定できます。 |
|
| `footer.showMenu` | `true` | フッターメニューを表示/非表示にします。これは、`config/_default/menus.en.toml` ファイルの `[[footer]]` セクションで設定できます。 |
|
||||||
| `footer.showCopyright` | `true` | サイトのフッターに著作権文字列を表示するかどうかです。文字列自体は、[言語設定](#言語と-i18n) の `copyright` パラメータを使用してカスタマイズできることに注意してください。 |
|
| `footer.showCopyright` | `true` | サイトのフッターに著作権文字列を表示するかどうかです。文字列自体は、[言語設定](#言語と-i18n) の `copyright` パラメータを使用してカスタマイズできることに注意してください。 |
|
||||||
| `footer.showThemeAttribution` | `true` | サイトのフッターに「powered by」というテーマの帰属を表示するかどうかです。このメッセージを無効にする場合は、サイトの他の場所(たとえば、about ページ)でテーマの帰属を検討してください。 |
|
| `footer.showThemeAttribution` | `true` | サイトのフッターに「powered by」というテーマの帰属を表示するかどうかです。このメッセージを無効にする場合は、サイトの他の場所(たとえば、about ページ)でテーマの帰属を検討してください。 |
|
||||||
@@ -209,7 +211,7 @@ Blowfish は、テーマの機能を制御する多数の設定パラメータ
|
|||||||
### ホームページ(Homepage)
|
### ホームページ(Homepage)
|
||||||
|
|
||||||
| 名前 | デフォルト | 説明 |
|
| 名前 | デフォルト | 説明 |
|
||||||
| --------------------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
| --- | --- | --- |
|
||||||
| `homepage.layout` | `"profile"` | ホームページのレイアウトです。有効な値は、`page`、`profile`、`hero`、`card`、`background`、`custom` です。`custom` に設定した場合、`/layouts/partials/home/custom.html` ファイルを作成して独自のレイアウトを提供する必要があります。詳細については、[ホームページレイアウト]({{< ref "homepage-layout" >}}) セクションを参照してください。 |
|
| `homepage.layout` | `"profile"` | ホームページのレイアウトです。有効な値は、`page`、`profile`、`hero`、`card`、`background`、`custom` です。`custom` に設定した場合、`/layouts/partials/home/custom.html` ファイルを作成して独自のレイアウトを提供する必要があります。詳細については、[ホームページレイアウト]({{< ref "homepage-layout" >}}) セクションを参照してください。 |
|
||||||
| `homepage.homepageImage` | _未設定_ | `hero` レイアウトと `card` レイアウトで使用される画像です。アセットディレクトリからのローカル画像または外部画像 URL として設定できます。詳細については、[ホームページレイアウト]({{< ref "homepage-layout" >}}) セクションを参照してください。 |
|
| `homepage.homepageImage` | _未設定_ | `hero` レイアウトと `card` レイアウトで使用される画像です。アセットディレクトリからのローカル画像または外部画像 URL として設定できます。詳細については、[ホームページレイアウト]({{< ref "homepage-layout" >}}) セクションを参照してください。 |
|
||||||
| `homepage.showRecent` | `false` | ホームページに最近の記事リストを表示するかどうかです。 |
|
| `homepage.showRecent` | `false` | ホームページに最近の記事リストを表示するかどうかです。 |
|
||||||
@@ -224,7 +226,7 @@ Blowfish は、テーマの機能を制御する多数の設定パラメータ
|
|||||||
### 記事(Article)
|
### 記事(Article)
|
||||||
|
|
||||||
| 名前 | デフォルト | 説明 |
|
| 名前 | デフォルト | 説明 |
|
||||||
| ------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `article.showDate` | `true` | 記事の日付を表示するかどうかです。 |
|
| `article.showDate` | `true` | 記事の日付を表示するかどうかです。 |
|
||||||
| `article.showViews` | `false` | 記事の表示回数を表示するかどうかです。これには Firebase 統合を有効にする必要があります。以下をご覧ください。 |
|
| `article.showViews` | `false` | 記事の表示回数を表示するかどうかです。これには Firebase 統合を有効にする必要があります。以下をご覧ください。 |
|
||||||
| `article.showLikes` | `false` | 記事のいいねを表示するかどうかです。これには Firebase 統合を有効にする必要があります。以下をご覧ください。 |
|
| `article.showLikes` | `false` | 記事のいいねを表示するかどうかです。これには Firebase 統合を有効にする必要があります。以下をご覧ください。 |
|
||||||
@@ -259,7 +261,7 @@ Blowfish は、テーマの機能を制御する多数の設定パラメータ
|
|||||||
### リスト(List)
|
### リスト(List)
|
||||||
|
|
||||||
| 名前 | デフォルト | 説明 |
|
| 名前 | デフォルト | 説明 |
|
||||||
| ---------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `list.showHero` | `false` | 各リストページ内でサムネイル画像をヒーロー画像として表示するかどうか。 |
|
| `list.showHero` | `false` | 各リストページ内でサムネイル画像をヒーロー画像として表示するかどうか。 |
|
||||||
| `list.heroStyle` | _未設定_ | ヒーロー画像の表示スタイル。有効なオプションは `basic`、`big`、`background`、`thumbAndBackground` です。 |
|
| `list.heroStyle` | _未設定_ | ヒーロー画像の表示スタイル。有効なオプションは `basic`、`big`、`background`、`thumbAndBackground` です。 |
|
||||||
| `list.showBreadcrumbs` | `false` | リストページのヘッダーにパンくずリストを表示するかどうか。 |
|
| `list.showBreadcrumbs` | `false` | リストページのヘッダーにパンくずリストを表示するかどうか。 |
|
||||||
@@ -280,13 +282,13 @@ Blowfish は、テーマの機能を制御する多数の設定パラメータ
|
|||||||
### サイトマップ(Sitemap)
|
### サイトマップ(Sitemap)
|
||||||
|
|
||||||
| 名前 | デフォルト | 説明 |
|
| 名前 | デフォルト | 説明 |
|
||||||
| ----------------------- | ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `sitemap.excludedKinds` | `["taxonomy", "term"]` | 生成された `/sitemap.xml` ファイルから除外するコンテンツの種類。許容される値については、[Hugo のドキュメント](https://gohugo.io/methods/page/kind/)を参照してください。 |
|
| `sitemap.excludedKinds` | `["taxonomy", "term"]` | 生成された `/sitemap.xml` ファイルから除外するコンテンツの種類。許容される値については、[Hugo のドキュメント](https://gohugo.io/methods/page/kind/)を参照してください。 |
|
||||||
|
|
||||||
### タクソノミー(Taxonomy)
|
### タクソノミー(Taxonomy)
|
||||||
|
|
||||||
| 名前 | デフォルト | 説明 |
|
| 名前 | デフォルト | 説明 |
|
||||||
| ------------------------------ | ---------- | ----------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `taxonomy.showTermCount` | `true` | タクソノミーリストにタクソノミー用語内の記事数を表示するかどうか。 |
|
| `taxonomy.showTermCount` | `true` | タクソノミーリストにタクソノミー用語内の記事数を表示するかどうか。 |
|
||||||
| `taxonomy.showHero` | `false` | 各タクソノミーページ内でサムネイル画像をヒーロー画像として表示するかどうか。 |
|
| `taxonomy.showHero` | `false` | 各タクソノミーページ内でサムネイル画像をヒーロー画像として表示するかどうか。 |
|
||||||
| `taxonomy.heroStyle` | _未設定_ | ヒーロー画像の表示スタイル。有効なオプションは `basic`、`big`、`background`、`thumbAndBackground` です。 |
|
| `taxonomy.heroStyle` | _未設定_ | ヒーロー画像の表示スタイル。有効なオプションは `basic`、`big`、`background`、`thumbAndBackground` です。 |
|
||||||
@@ -299,7 +301,7 @@ Blowfish は、テーマの機能を制御する多数の設定パラメータ
|
|||||||
### ターム(Term)
|
### ターム(Term)
|
||||||
|
|
||||||
| 名前 | デフォルト | 説明 |
|
| 名前 | デフォルト | 説明 |
|
||||||
| -------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `term.showHero` | `false` | 各タームページ内でサムネイル画像をヒーロー画像として表示するかどうか。 |
|
| `term.showHero` | `false` | 各タームページ内でサムネイル画像をヒーロー画像として表示するかどうか。 |
|
||||||
| `term.heroStyle` | _未設定_ | ヒーロー画像の表示スタイル。有効なオプションは `basic`、`big`、`background`、`thumbAndBackground` です。 |
|
| `term.heroStyle` | _未設定_ | ヒーロー画像の表示スタイル。有効なオプションは `basic`、`big`、`background`、`thumbAndBackground` です。 |
|
||||||
| `term.showBreadcrumbs` | `false` | タームのヘッダーにパンくずリストを表示するかどうか。 |
|
| `term.showBreadcrumbs` | `false` | タームのヘッダーにパンくずリストを表示するかどうか。 |
|
||||||
@@ -313,7 +315,7 @@ Blowfish は、テーマの機能を制御する多数の設定パラメータ
|
|||||||
### Firebase
|
### Firebase
|
||||||
|
|
||||||
| 名前 | デフォルト | 説明 |
|
| 名前 | デフォルト | 説明 |
|
||||||
| ---------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `firebase.apiKey` | _未設定_ | Firebase との統合に必要な Firebase API キー。Firebase を Blowfish に統合する方法については、[このページ]({{< ref "firebase-views" >}})を参照してください。 |
|
| `firebase.apiKey` | _未設定_ | Firebase との統合に必要な Firebase API キー。Firebase を Blowfish に統合する方法については、[このページ]({{< ref "firebase-views" >}})を参照してください。 |
|
||||||
| `firebase.authDomain` | _未設定_ | Firebase との統合に必要な Firebase 認証ドメイン。Firebase を Blowfish に統合する方法については、[このページ]({{< ref "firebase-views" >}})を参照してください。 |
|
| `firebase.authDomain` | _未設定_ | Firebase との統合に必要な Firebase 認証ドメイン。Firebase を Blowfish に統合する方法については、[このページ]({{< ref "firebase-views" >}})を参照してください。 |
|
||||||
| `firebase.projectId` | _未設定_ | Firebase との統合に必要な Firebase プロジェクト ID。Firebase を Blowfish に統合する方法については、[このページ]({{< ref "firebase-views" >}})を参照してください。 |
|
| `firebase.projectId` | _未設定_ | Firebase との統合に必要な Firebase プロジェクト ID。Firebase を Blowfish に統合する方法については、[このページ]({{< ref "firebase-views" >}})を参照してください。 |
|
||||||
@@ -325,14 +327,14 @@ Blowfish は、テーマの機能を制御する多数の設定パラメータ
|
|||||||
### Fathom Analytics
|
### Fathom Analytics
|
||||||
|
|
||||||
| 名前 | デフォルト | 説明 |
|
| 名前 | デフォルト | 説明 |
|
||||||
| ------------------------ | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `fathomAnalytics.site` | _未設定_ | ウェブサイト用に Fathom Analytics によって生成されたサイトコード。詳細については、[Analytics のドキュメント]({{< ref "partials#アナリティクス" >}})を参照してください。 |
|
| `fathomAnalytics.site` | _未設定_ | ウェブサイト用に Fathom Analytics によって生成されたサイトコード。詳細については、[Analytics のドキュメント]({{< ref "partials#アナリティクス" >}})を参照してください。 |
|
||||||
| `fathomAnalytics.domain` | _未設定_ | Fathom Analytics でカスタムドメインを使用している場合、ここに指定して、`script.js` をカスタムドメインから配信します。 |
|
| `fathomAnalytics.domain` | _未設定_ | Fathom Analytics でカスタムドメインを使用している場合、ここに指定して、`script.js` をカスタムドメインから配信します。 |
|
||||||
|
|
||||||
### Umami Analytics
|
### Umami Analytics
|
||||||
|
|
||||||
| 名前 | デフォルト | 説明 |
|
| 名前 | デフォルト | 説明 |
|
||||||
| --------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `umamiAnalytics.websiteid` | _未設定_ | ウェブサイト用に Umami Analytics によって生成されたサイトコード。詳細については、[Analytics のドキュメント]({{< ref "partials#アナリティクス" >}})を参照してください。 |
|
| `umamiAnalytics.websiteid` | _未設定_ | ウェブサイト用に Umami Analytics によって生成されたサイトコード。詳細については、[Analytics のドキュメント]({{< ref "partials#アナリティクス" >}})を参照してください。 |
|
||||||
| `umamiAnalytics.domain` | _未設定_ | Umami Analytics でカスタムドメインを使用している場合、ここに指定して、`script.js` をカスタムドメインから配信します。 |
|
| `umamiAnalytics.domain` | _未設定_ | Umami Analytics でカスタムドメインを使用している場合、ここに指定して、`script.js` をカスタムドメインから配信します。 |
|
||||||
| `umamiAnalytics.dataDomains` | _未設定_ | トラッカーを特定のドメインでのみ実行したい場合は、トラッカースクリプトに指定します。これは、ドメイン名のカンマ区切りリストです。例えば "yoursite.com,yoursite2.com" のようになります。 |
|
| `umamiAnalytics.dataDomains` | _未設定_ | トラッカーを特定のドメインでのみ実行したい場合は、トラッカースクリプトに指定します。これは、ドメイン名のカンマ区切りリストです。例えば "yoursite.com,yoursite2.com" のようになります。 |
|
||||||
@@ -342,19 +344,19 @@ Blowfish は、テーマの機能を制御する多数の設定パラメータ
|
|||||||
### Seline Analytics
|
### Seline Analytics
|
||||||
|
|
||||||
| 名前 | デフォルト | 説明 |
|
| 名前 | デフォルト | 説明 |
|
||||||
| ---------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `selineAnalytics.token` | _未設定_ | ウェブサイト用に Seline Analytics によって生成されたトークン。詳細については、[Analytics のドキュメント]({{< ref "partials#アナリティクス" >}})を参照してください。 |
|
| `selineAnalytics.token` | _未設定_ | ウェブサイト用に Seline Analytics によって生成されたトークン。詳細については、[Analytics のドキュメント]({{< ref "partials#アナリティクス" >}})を参照してください。 |
|
||||||
| `selineAnalytics.enableTrackEvent` | `true` | `true` に設定すると、トラックイベントが自動的に追加されます。トラックイベントを追加したくない場合は、`false` に設定してください。 |
|
| `selineAnalytics.enableTrackEvent` | `true` | `true` に設定すると、トラックイベントが自動的に追加されます。トラックイベントを追加したくない場合は、`false` に設定してください。 |
|
||||||
|
|
||||||
### BuyMeACoffee
|
### BuyMeACoffee
|
||||||
|
|
||||||
| 名前 | デフォルト | 説明 |
|
| 名前 | デフォルト | 説明 |
|
||||||
| ----------------------------------- | ---------- | ---------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `buymeacoffee.identifier` | _未設定_ | ターゲットの buymeacoffee アカウントの識別子。 |
|
| `buymeacoffee.identifier` | _未設定_ | ターゲットの buymeacoffee アカウントの識別子。 |
|
||||||
| `buymeacoffee.globalWidget` | _未設定_ | グローバル buymeacoffee ウィジェットを有効にします。 |
|
| `buymeacoffee.globalWidget` | _未設定_ | グローバル buymeacoffee ウィジェットを有効にします。 |
|
||||||
| `buymeacoffee.globalWidgetMessage` | _未設定_ | 新しいユーザーが初めてサイトにアクセスしたときに表示されるメッセージ。 |
|
| `buymeacoffee.globalWidgetMessage` | _未設定_ | 新しいユーザーが初めてサイトにアクセスしたときに表示されるメッセージ。 |
|
||||||
| `buymeacoffee.globalWidgetColor` | _未設定_ | ウィジェットの色(16進数形式)。 |
|
| `buymeacoffee.globalWidgetColor` | `#FFDD00` | ウィジェットの色(16進数形式)。 |
|
||||||
| `buymeacoffee.globalWidgetPosition` | _未設定_ | ウィジェットの位置。例えば "Left" または "Right" |
|
| `buymeacoffee.globalWidgetPosition` | _未設定_ | ウィジェットの位置。例えば "left" または "right" |
|
||||||
|
|
||||||
### verification
|
### verification
|
||||||
|
|
||||||
@@ -369,7 +371,7 @@ Blowfish は、テーマの機能を制御する多数の設定パラメータ
|
|||||||
### RSSNext
|
### RSSNext
|
||||||
|
|
||||||
| 名前 | デフォルト | 説明 |
|
| 名前 | デフォルト | 説明 |
|
||||||
| ---------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `rssnext.feedId` | _未設定_ | [RSSNext/Follow](https://follow.is/) によって提供される rss `feedId` 文字列。`rss.xml` に含まれ、rss フィードを自身のものとしてクレームするのに役立ちます。 |
|
| `rssnext.feedId` | _未設定_ | [RSSNext/Follow](https://follow.is/) によって提供される rss `feedId` 文字列。`rss.xml` に含まれ、rss フィードを自身のものとしてクレームするのに役立ちます。 |
|
||||||
| `rssnext.userId` | _未設定_ | [RSSNext/Follow](https://follow.is/) によって提供される rss `userId` 文字列。`rss.xml` に含まれ、rss フィードを自身のものとしてクレームするのに役立ちます。 |
|
| `rssnext.userId` | _未設定_ | [RSSNext/Follow](https://follow.is/) によって提供される rss `userId` 文字列。`rss.xml` に含まれ、rss フィードを自身のものとしてクレームするのに役立ちます。 |
|
||||||
|
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ Note that the variable names provided in this table use dot notation to simplify
|
|||||||
|
|
||||||
<!-- prettier-ignore-start -->
|
<!-- prettier-ignore-start -->
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
| ------------------------ | ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `theme` | `"blowfish"` | When using Hugo Modules this config value should be removed. For all other installation types, this must be set to `blowfish` for the theme to function. |
|
| `theme` | `"blowfish"` | When using Hugo Modules this config value should be removed. For all other installation types, this must be set to `blowfish` for the theme to function. |
|
||||||
| `baseURL` | _Not set_ | The URL to the root of the website. |
|
| `baseURL` | _Not set_ | The URL to the root of the website. |
|
||||||
| `defaultContentLanguage` | `"en"` | This value determines the default language of theme components and content. Refer to the [language and i18n](#language-and-i18n) section below for supported language codes. |
|
| `defaultContentLanguage` | `"en"` | This value determines the default language of theme components and content. Refer to the [language and i18n](#language-and-i18n) section below for supported language codes. |
|
||||||
@@ -114,7 +114,7 @@ The default file can be used as a template to create additional languages, or re
|
|||||||
|
|
||||||
<!-- prettier-ignore-start -->
|
<!-- prettier-ignore-start -->
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
| -------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
| --- | --- | --- |
|
||||||
| `languageCode` | `"en"` | The Hugo language code for this file. It can be a top-level language (ie. `en`) or a sub-variant (ie. `en-au`) and should match the language code in the filename. Hugo expects this value to always be in lowercase. For proper HTML compliance, set the `isoCode` parameter which is case-sensitive. |
|
| `languageCode` | `"en"` | The Hugo language code for this file. It can be a top-level language (ie. `en`) or a sub-variant (ie. `en-au`) and should match the language code in the filename. Hugo expects this value to always be in lowercase. For proper HTML compliance, set the `isoCode` parameter which is case-sensitive. |
|
||||||
| `languageName` | `"English"` | The name of the language. |
|
| `languageName` | `"English"` | The name of the language. |
|
||||||
| `weight` | `1` | The weight determines the order of languages when building multilingual sites. |
|
| `weight` | `1` | The weight determines the order of languages when building multilingual sites. |
|
||||||
@@ -125,7 +125,7 @@ The default file can be used as a template to create additional languages, or re
|
|||||||
|
|
||||||
<!-- prettier-ignore-start -->
|
<!-- prettier-ignore-start -->
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
| ---------------------- | ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `params.displayName` | `"EN"` | The name used when the language appears on the website. |
|
| `params.displayName` | `"EN"` | The name used when the language appears on the website. |
|
||||||
| `params.isoCode` | `"en"` | The ISO language code for HTML metadata purposes. It can be a top-level language (ie. `en`) or a sub-variant (ie. `en-AU`). |
|
| `params.isoCode` | `"en"` | The ISO language code for HTML metadata purposes. It can be a top-level language (ie. `en`) or a sub-variant (ie. `en-AU`). |
|
||||||
| `params.rtl` | `false` | Whether or not this is a RTL language. Set to `true` to reflow content from right-to-left. Blowfish fully supports using RTL and LTR languages at the same time and will dynamically adjust to both. |
|
| `params.rtl` | `false` | Whether or not this is a RTL language. Set to `true` to reflow content from right-to-left. Blowfish fully supports using RTL and LTR languages at the same time and will dynamically adjust to both. |
|
||||||
@@ -140,7 +140,7 @@ The default file can be used as a template to create additional languages, or re
|
|||||||
##### Author
|
##### Author
|
||||||
|
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
| ---------------------------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `params.author.name` | _Not set_ | The author's name. This will be displayed in article footers, and on the homepage when the profile layout is used. |
|
| `params.author.name` | _Not set_ | The author's name. This will be displayed in article footers, and on the homepage when the profile layout is used. |
|
||||||
| `params.author.email` | _Not set_ | The author's email. This will be used if the reply-via-email functionality is enabled. |
|
| `params.author.email` | _Not set_ | The author's email. This will be used if the reply-via-email functionality is enabled. |
|
||||||
| `params.author.image` | _Not set_ | Path to the image file of the author. The image should be a 1:1 aspect ratio. The image can be placed in the site's `assets/` folder or can be external url. |
|
| `params.author.image` | _Not set_ | Path to the image file of the author. The image should be a 1:1 aspect ratio. The image can be placed in the site's `assets/` folder or can be external url. |
|
||||||
@@ -169,7 +169,7 @@ Many of the article defaults here can be overridden on a per article basis by sp
|
|||||||
### Global
|
### Global
|
||||||
|
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
| ------------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `colorScheme` | `"blowfish"` | The theme colour scheme to use. Valid values are `blowfish` (default), `avocado`, `fire`, `ocean`, `forest`, `princess`, `neon`, `bloody`, `terminal`, `marvel`, `noir`, `autumn`, `congo`, and`slate`. Refer to the [Colour Schemes]({{< ref "getting-started#colour-schemes" >}}) section for more details. |
|
| `colorScheme` | `"blowfish"` | The theme colour scheme to use. Valid values are `blowfish` (default), `avocado`, `fire`, `ocean`, `forest`, `princess`, `neon`, `bloody`, `terminal`, `marvel`, `noir`, `autumn`, `congo`, and`slate`. Refer to the [Colour Schemes]({{< ref "getting-started#colour-schemes" >}}) section for more details. |
|
||||||
| `defaultAppearance` | `"light"` | The default theme appearance, either `light` or `dark`. |
|
| `defaultAppearance` | `"light"` | The default theme appearance, either `light` or `dark`. |
|
||||||
| `autoSwitchAppearance` | `true` | Whether the theme appearance automatically switches based upon the visitor's operating system preference. Set to `false` to force the site to always use the `defaultAppearance`. |
|
| `autoSwitchAppearance` | `true` | Whether the theme appearance automatically switches based upon the visitor's operating system preference. Set to `false` to force the site to always use the `defaultAppearance`. |
|
||||||
@@ -191,6 +191,8 @@ Many of the article defaults here can be overridden on a per article basis by sp
|
|||||||
| `defaultBackgroundImage` | _Not set_ | Default background image for both `background` homepage layout and `background` hero style |
|
| `defaultBackgroundImage` | _Not set_ | Default background image for both `background` homepage layout and `background` hero style |
|
||||||
| `defaultFeaturedImage` | _Not set_ | Default background image for all `featured` images across articles, will be overridden by a local `featured` image. |
|
| `defaultFeaturedImage` | _Not set_ | Default background image for all `featured` images across articles, will be overridden by a local `featured` image. |
|
||||||
| `defaultSocialImage` | _Not set_ | Default image for social media sharing (Open Graph and Twitter). Will be overridden by a local `feature` image. |
|
| `defaultSocialImage` | _Not set_ | Default image for social media sharing (Open Graph and Twitter). Will be overridden by a local `feature` image. |
|
||||||
|
| `hotlinkFeatureImage` | `false` | Hotlink external images in article feature images and article cards. Those images will not be processed by Hugo. |
|
||||||
|
| `imagePosition` | _Not set_ | Sets the position of the default image using `object-position` attribute. Valid values are as specified in the [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/CSS/object-position#try_it). |
|
||||||
| `highlightCurrentMenuArea` | _Not set_ | Marks menu entries in the main menu when selected |
|
| `highlightCurrentMenuArea` | _Not set_ | Marks menu entries in the main menu when selected |
|
||||||
| `smartTOC` | _Not set_ | Activate smart Table of Contents, items in view will be highlighted. |
|
| `smartTOC` | _Not set_ | Activate smart Table of Contents, items in view will be highlighted. |
|
||||||
| `smartTOCHideUnfocusedChildren` | _Not set_ | When smart Table of Contents is turned on, this will hide deeper levels of the table when they are not in focus. |
|
| `smartTOCHideUnfocusedChildren` | _Not set_ | When smart Table of Contents is turned on, this will hide deeper levels of the table when they are not in focus. |
|
||||||
@@ -199,13 +201,13 @@ Many of the article defaults here can be overridden on a per article basis by sp
|
|||||||
### Header
|
### Header
|
||||||
|
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
| --------------- | --------- | ------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `header.layout` | `"basic"` | Defines the header for the entire site, supported values are `basic`, `fixed`, `fixed-fill`, and `fixed-fill-blur`. |
|
| `header.layout` | `"basic"` | Defines the header for the entire site, supported values are `basic`, `fixed`, `fixed-fill`, and `fixed-fill-blur`. |
|
||||||
|
|
||||||
### Footer
|
### Footer
|
||||||
|
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
| ------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `footer.showMenu` | `true` | Show/hide the footer menu, which can be configured in the `[[footer]]` section of the `config/_default/menus.en.toml` file. |
|
| `footer.showMenu` | `true` | Show/hide the footer menu, which can be configured in the `[[footer]]` section of the `config/_default/menus.en.toml` file. |
|
||||||
| `footer.showCopyright` | `true` | Whether or not to show the copyright string in the site footer. Note that the string itself can be customised using the `copyright` parameter in the [languages configuration](#language-and-i18n). |
|
| `footer.showCopyright` | `true` | Whether or not to show the copyright string in the site footer. Note that the string itself can be customised using the `copyright` parameter in the [languages configuration](#language-and-i18n). |
|
||||||
| `footer.showThemeAttribution` | `true` | Whether or not to show the "powered by" theme attribution in the site footer. If you choose to disable this message, please consider attributing the theme somewhere else on your site (for example, on your about page). |
|
| `footer.showThemeAttribution` | `true` | Whether or not to show the "powered by" theme attribution in the site footer. If you choose to disable this message, please consider attributing the theme somewhere else on your site (for example, on your about page). |
|
||||||
@@ -215,7 +217,7 @@ Many of the article defaults here can be overridden on a per article basis by sp
|
|||||||
### Homepage
|
### Homepage
|
||||||
|
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
| ------------------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
| --- | --- | --- |
|
||||||
| `homepage.layout` | `"profile"` | The layout of the homepage. Valid values are `page`, `profile`, `hero`, `card`, `background`, or `custom`. When set to `custom`, you must provide your own layout by creating a `/layouts/partials/home/custom.html` file. Refer to the [Homepage Layout]({{< ref "homepage-layout" >}}) section for more details. |
|
| `homepage.layout` | `"profile"` | The layout of the homepage. Valid values are `page`, `profile`, `hero`, `card`, `background`, or `custom`. When set to `custom`, you must provide your own layout by creating a `/layouts/partials/home/custom.html` file. Refer to the [Homepage Layout]({{< ref "homepage-layout" >}}) section for more details. |
|
||||||
| `homepage.homepageImage` | _Not set_ | Image to be used in `hero` and `card` layouts. Can be set as local image from asset directory or external image url. Refer to the [Homepage Layout]({{< ref "homepage-layout" >}}) section for more details. |
|
| `homepage.homepageImage` | _Not set_ | Image to be used in `hero` and `card` layouts. Can be set as local image from asset directory or external image url. Refer to the [Homepage Layout]({{< ref "homepage-layout" >}}) section for more details. |
|
||||||
| `homepage.showRecent` | `false` | Whether or not to display the recent articles list on the homepage. |
|
| `homepage.showRecent` | `false` | Whether or not to display the recent articles list on the homepage. |
|
||||||
@@ -230,7 +232,7 @@ Many of the article defaults here can be overridden on a per article basis by sp
|
|||||||
### Article
|
### Article
|
||||||
|
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
| ------------------------------------- | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `article.showDate` | `true` | Whether or not article dates are displayed. |
|
| `article.showDate` | `true` | Whether or not article dates are displayed. |
|
||||||
| `article.showViews` | `false` | Whether or not article views are displayed. This requires firebase integrations to be enabled, look below. |
|
| `article.showViews` | `false` | Whether or not article views are displayed. This requires firebase integrations to be enabled, look below. |
|
||||||
| `article.showLikes` | `false` | Whether or not article likes are displayed. This requires firebase integrations to be enabled, look below. |
|
| `article.showLikes` | `false` | Whether or not article likes are displayed. This requires firebase integrations to be enabled, look below. |
|
||||||
@@ -266,7 +268,7 @@ Many of the article defaults here can be overridden on a per article basis by sp
|
|||||||
### List
|
### List
|
||||||
|
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
| ---------------------------------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `list.showHero` | `false` | Whether the thumbnail image will be shown as a hero image within each list page. |
|
| `list.showHero` | `false` | Whether the thumbnail image will be shown as a hero image within each list page. |
|
||||||
| `list.heroStyle` | _Not set_ | Style to display the hero image, valid options are: `basic`, `big`, `background`, `thumbAndBackground`. |
|
| `list.heroStyle` | _Not set_ | Style to display the hero image, valid options are: `basic`, `big`, `background`, `thumbAndBackground`. |
|
||||||
| `list.showBreadcrumbs` | `false` | Whether or not breadcrumbs are displayed in the header on list pages. |
|
| `list.showBreadcrumbs` | `false` | Whether or not breadcrumbs are displayed in the header on list pages. |
|
||||||
@@ -287,13 +289,13 @@ Many of the article defaults here can be overridden on a per article basis by sp
|
|||||||
### Sitemap
|
### Sitemap
|
||||||
|
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
| ----------------------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `sitemap.excludedKinds` | `["taxonomy", "term"]` | Kinds of content that should be excluded from the generated `/sitemap.xml` file. Refer to the [Hugo docs](https://gohugo.io/methods/page/kind/) for acceptable values. |
|
| `sitemap.excludedKinds` | `["taxonomy", "term"]` | Kinds of content that should be excluded from the generated `/sitemap.xml` file. Refer to the [Hugo docs](https://gohugo.io/methods/page/kind/) for acceptable values. |
|
||||||
|
|
||||||
### Taxonomy
|
### Taxonomy
|
||||||
|
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
| ------------------------------ | --------- | ---------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `taxonomy.showTermCount` | `true` | Whether or not the number of articles within a taxonomy term is displayed on the taxonomy listing. |
|
| `taxonomy.showTermCount` | `true` | Whether or not the number of articles within a taxonomy term is displayed on the taxonomy listing. |
|
||||||
| `taxonomy.showHero` | `false` | Whether the thumbnail image will be shown as a hero image within each taxonomy page. |
|
| `taxonomy.showHero` | `false` | Whether the thumbnail image will be shown as a hero image within each taxonomy page. |
|
||||||
| `taxonomy.heroStyle` | _Not set_ | Style to display the hero image, valid options are: `basic`, `big`, `background`, `thumbAndBackground`. |
|
| `taxonomy.heroStyle` | _Not set_ | Style to display the hero image, valid options are: `basic`, `big`, `background`, `thumbAndBackground`. |
|
||||||
@@ -306,7 +308,7 @@ Many of the article defaults here can be overridden on a per article basis by sp
|
|||||||
### Term
|
### Term
|
||||||
|
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
| -------------------------- | --------- | ---------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `term.showHero` | `false` | Whether the thumbnail image will be shown as a hero image within each term page. |
|
| `term.showHero` | `false` | Whether the thumbnail image will be shown as a hero image within each term page. |
|
||||||
| `term.heroStyle` | _Not set_ | Style to display the hero image, valid options are: `basic`, `big`, `background`, `thumbAndBackground`. |
|
| `term.heroStyle` | _Not set_ | Style to display the hero image, valid options are: `basic`, `big`, `background`, `thumbAndBackground`. |
|
||||||
| `term.showBreadcrumbs` | `false` | Whether or not breadcrumbs are displayed in the term header. |
|
| `term.showBreadcrumbs` | `false` | Whether or not breadcrumbs are displayed in the term header. |
|
||||||
@@ -320,7 +322,7 @@ Many of the article defaults here can be overridden on a per article basis by sp
|
|||||||
### Firebase
|
### Firebase
|
||||||
|
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
| ---------------------------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `firebase.apiKey` | _Not set_ | Firebase apiKey, required to integrate against Firebase. Check [this page]({{< ref "firebase-views" >}}) for a guide on how to integrate Firebase into Blowfish. |
|
| `firebase.apiKey` | _Not set_ | Firebase apiKey, required to integrate against Firebase. Check [this page]({{< ref "firebase-views" >}}) for a guide on how to integrate Firebase into Blowfish. |
|
||||||
| `firebase.authDomain` | _Not set_ | Firebase authDomain, required to integrate against Firebase. Check [this page]({{< ref "firebase-views" >}}) for a guide on how to integrate Firebase into Blowfish. |
|
| `firebase.authDomain` | _Not set_ | Firebase authDomain, required to integrate against Firebase. Check [this page]({{< ref "firebase-views" >}}) for a guide on how to integrate Firebase into Blowfish. |
|
||||||
| `firebase.projectId` | _Not set_ | Firebase projectId, required to integrate against Firebase. Check [this page]({{< ref "firebase-views" >}}) for a guide on how to integrate Firebase into Blowfish. |
|
| `firebase.projectId` | _Not set_ | Firebase projectId, required to integrate against Firebase. Check [this page]({{< ref "firebase-views" >}}) for a guide on how to integrate Firebase into Blowfish. |
|
||||||
@@ -332,14 +334,14 @@ Many of the article defaults here can be overridden on a per article basis by sp
|
|||||||
### Fathom Analytics
|
### Fathom Analytics
|
||||||
|
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
| ------------------------ | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `fathomAnalytics.site` | _Not set_ | The site code generated by Fathom Analytics for the website. Refer to the [Analytics docs]({{< ref "partials#analytics" >}}) for more details. |
|
| `fathomAnalytics.site` | _Not set_ | The site code generated by Fathom Analytics for the website. Refer to the [Analytics docs]({{< ref "partials#analytics" >}}) for more details. |
|
||||||
| `fathomAnalytics.domain` | _Not set_ | If using a custom domain with Fathom Analytics, provide it here to serve `script.js` from the custom domain. |
|
| `fathomAnalytics.domain` | _Not set_ | If using a custom domain with Fathom Analytics, provide it here to serve `script.js` from the custom domain. |
|
||||||
|
|
||||||
### Umami Analytics
|
### Umami Analytics
|
||||||
|
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
| --------------------------------- | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `umamiAnalytics.websiteid` | _Not set_ | The site code generated by Umami Analytics for the website. Refer to the [Analytics docs]({{< ref "partials#analytics" >}}) for more details. |
|
| `umamiAnalytics.websiteid` | _Not set_ | The site code generated by Umami Analytics for the website. Refer to the [Analytics docs]({{< ref "partials#analytics" >}}) for more details. |
|
||||||
| `umamiAnalytics.domain` | _Not set_ | If using a custom domain with Umami Analytics, provide it here to serve `script.js` from the custom domain. |
|
| `umamiAnalytics.domain` | _Not set_ | If using a custom domain with Umami Analytics, provide it here to serve `script.js` from the custom domain. |
|
||||||
| `umamiAnalytics.dataDomains` | _Not set_ | If you want the tracker to only run on specific domains, provide it for your tracker script. This is a comma delimited list of domain names. Such as "yoursite.com,yoursite2.com". |
|
| `umamiAnalytics.dataDomains` | _Not set_ | If you want the tracker to only run on specific domains, provide it for your tracker script. This is a comma delimited list of domain names. Such as "yoursite.com,yoursite2.com". |
|
||||||
@@ -349,24 +351,24 @@ Many of the article defaults here can be overridden on a per article basis by sp
|
|||||||
### Seline Analytics
|
### Seline Analytics
|
||||||
|
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
| ---------------------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
|
| --- | --- | --- |
|
||||||
| `selineAnalytics.token` | _Not set_ | The token generated by Seline Analytics for the website. Refer to the [Analytics docs]({{< ref "partials#analytics" >}}) for more details. |
|
| `selineAnalytics.token` | _Not set_ | The token generated by Seline Analytics for the website. Refer to the [Analytics docs]({{< ref "partials#analytics" >}}) for more details. |
|
||||||
| `selineAnalytics.enableTrackEvent` | true | When set to `true` track event will add automatically. If you do not want to add track event, set it to `false`. |
|
| `selineAnalytics.enableTrackEvent` | true | When set to `true` track event will add automatically. If you do not want to add track event, set it to `false`. |
|
||||||
|
|
||||||
### BuyMeACoffee
|
### BuyMeACoffee
|
||||||
|
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
| ----------------------------------- | --------- | --------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `buymeacoffee.identifier` | _Not set_ | The identifier to the target buymeacoffee account. |
|
| `buymeacoffee.identifier` | _Not set_ | The identifier to the target buymeacoffee account. |
|
||||||
| `buymeacoffee.globalWidget` | _Not set_ | Activate the global buymeacoffee widget. |
|
| `buymeacoffee.globalWidget` | _Not set_ | Activate the global buymeacoffee widget. |
|
||||||
| `buymeacoffee.globalWidgetMessage` | _Not set_ | Message what will be displayed the first time a new user lands on the site. |
|
| `buymeacoffee.globalWidgetMessage` | _Not set_ | Message what will be displayed the first time a new user lands on the site. |
|
||||||
| `buymeacoffee.globalWidgetColor` | _Not set_ | Widget color in hex format. |
|
| `buymeacoffee.globalWidgetColor` | `#FFDD00` | Widget color in hex format. |
|
||||||
| `buymeacoffee.globalWidgetPosition` | _Not set_ | Position of the widget, i.e. "Left" or "Right" |
|
| `buymeacoffee.globalWidgetPosition` | _Not set_ | Position of the widget, i.e. "left" or "right" |
|
||||||
|
|
||||||
### Verifications
|
### Verifications
|
||||||
|
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
| ------------------------ | --------- | --------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `verification.google` | _Not set_ | The site verification string provided by Google to be included in the site metadata. |
|
| `verification.google` | _Not set_ | The site verification string provided by Google to be included in the site metadata. |
|
||||||
| `verification.bing` | _Not set_ | The site verification string provided by Bing to be included in the site metadata. |
|
| `verification.bing` | _Not set_ | The site verification string provided by Bing to be included in the site metadata. |
|
||||||
| `verification.pinterest` | _Not set_ | The site verification string provided by Pinterest to be included in the site metadata. |
|
| `verification.pinterest` | _Not set_ | The site verification string provided by Pinterest to be included in the site metadata. |
|
||||||
@@ -377,7 +379,7 @@ Many of the article defaults here can be overridden on a per article basis by sp
|
|||||||
### RSSNext
|
### RSSNext
|
||||||
|
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
| ------------------------ | --------- |--------------------------------------------------------------------------------------------------------------------------------------|
|
| --- | --- | --- |
|
||||||
| `rssnext.feedId` | _Not set_ | The rss `feedId` string provided by [RSSNext/Follow](https://follow.is/) to be included in the `rss.xml`, which can helps to claim rss feed as your own. |
|
| `rssnext.feedId` | _Not set_ | The rss `feedId` string provided by [RSSNext/Follow](https://follow.is/) to be included in the `rss.xml`, which can helps to claim rss feed as your own. |
|
||||||
| `rssnext.userId` | _Not set_ | The rss `userId` string provided by [RSSNext/Follow](https://follow.is/) to be included in the `rss.xml`, which can helps to claim rss feed as your own. |
|
| `rssnext.userId` | _Not set_ | The rss `userId` string provided by [RSSNext/Follow](https://follow.is/) to be included in the `rss.xml`, which can helps to claim rss feed as your own. |
|
||||||
|
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ Blowfish 主题支持了 Hugo 框架中定义的所有标准配置变量。但
|
|||||||
|
|
||||||
<!-- prettier-ignore-start -->
|
<!-- prettier-ignore-start -->
|
||||||
| 名称 | 默认值 | 描述 |
|
| 名称 | 默认值 | 描述 |
|
||||||
| ------------------------ | ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `theme` | `"blowfish"` | 当你使用 Hugo 模块安装时,应该移除这个配置项。但对 Git 子模块或本地文件复制的安装方式,必须将其设置为 blowfish 才能正常工作。 |
|
| `theme` | `"blowfish"` | 当你使用 Hugo 模块安装时,应该移除这个配置项。但对 Git 子模块或本地文件复制的安装方式,必须将其设置为 blowfish 才能正常工作。 |
|
||||||
| `baseURL` | 无 | 网站 URL 根地址。 |
|
| `baseURL` | 无 | 网站 URL 根地址。 |
|
||||||
| `defaultContentLanguage` | `"en"` | 这个值决定了主题中组件和内容所使用的默认语言。 参考 [语言和 i18n](#语言和i18n) 部分来了解 blowfish 支持的所有语言代码。 |
|
| `defaultContentLanguage` | `"en"` | 这个值决定了主题中组件和内容所使用的默认语言。 参考 [语言和 i18n](#语言和i18n) 部分来了解 blowfish 支持的所有语言代码。 |
|
||||||
@@ -112,7 +112,7 @@ Blowfish 主题目前默认支持了以下语言:
|
|||||||
|
|
||||||
<!-- prettier-ignore-start -->
|
<!-- prettier-ignore-start -->
|
||||||
| 名称 | 默认值 | 描述 |
|
| 名称 | 默认值 | 描述 |
|
||||||
| -------------- | ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `languageCode` | `"en"` | Hugo 中的默认语言代码。他可以是一个高层级语言(例如 `en`),也可以是一个变体子语言(例如 `en-au`),但一定需要和语言配置文件中的语言代码相匹配。为了符合 HTML 的规范并设置设置大小写敏感的 `isoCode`,Hugo希望这个值最好是小写。 |
|
| `languageCode` | `"en"` | Hugo 中的默认语言代码。他可以是一个高层级语言(例如 `en`),也可以是一个变体子语言(例如 `en-au`),但一定需要和语言配置文件中的语言代码相匹配。为了符合 HTML 的规范并设置设置大小写敏感的 `isoCode`,Hugo希望这个值最好是小写。 |
|
||||||
| `languageName` | `"English"` | 语言名称。 |
|
| `languageName` | `"English"` | 语言名称。 |
|
||||||
| `weight` | `1` | 权重决定了在构建多语言时的语言顺序。 |
|
| `weight` | `1` | 权重决定了在构建多语言时的语言顺序。 |
|
||||||
@@ -123,7 +123,7 @@ Blowfish 主题目前默认支持了以下语言:
|
|||||||
|
|
||||||
<!-- prettier-ignore-start -->
|
<!-- prettier-ignore-start -->
|
||||||
| 名称 | 默认值 | 描述 |
|
| 名称 | 默认值 | 描述 |
|
||||||
| ---------------------- | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
| --- | --- | --- |
|
||||||
| `params.displayName` | `"EN"` | 语言在网站中的展示名。 |
|
| `params.displayName` | `"EN"` | 语言在网站中的展示名。 |
|
||||||
| `params.isoCode` | `"en"` | 用于 HTML 元数据的 ISO 语言代码。他可以是一个高层级语言(例如 `en`),也可以是一个变体子语言(例如 `en-au`)。 |
|
| `params.isoCode` | `"en"` | 用于 HTML 元数据的 ISO 语言代码。他可以是一个高层级语言(例如 `en`),也可以是一个变体子语言(例如 `en-au`)。 |
|
||||||
| `params.rtl` | `false` | 用于指定是否是 RTL 语言。设置为 `true` 则网站会从右向左重拍内容。Blowfish 完全支持同时使用 RTL 和 LTR 语言,并将动态调整。 |
|
| `params.rtl` | `false` | 用于指定是否是 RTL 语言。设置为 `true` 则网站会从右向左重拍内容。Blowfish 完全支持同时使用 RTL 和 LTR 语言,并将动态调整。 |
|
||||||
@@ -138,7 +138,7 @@ Blowfish 主题目前默认支持了以下语言:
|
|||||||
#### 作者
|
#### 作者
|
||||||
|
|
||||||
| 名称 | 默认值 | 描述 |
|
| 名称 | 默认值 | 描述 |
|
||||||
| ----------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
| --- | --- | --- |
|
||||||
| `params.author.name` | 无 | 作者名。此参数将展示在文章页脚。并且如果主页使用了个人资料布局,也会展示此值。 |
|
| `params.author.name` | 无 | 作者名。此参数将展示在文章页脚。并且如果主页使用了个人资料布局,也会展示此值。 |
|
||||||
| `params.author.email` | 无 | 作者邮箱。如果启用了“通过邮件回复”功能,则会启用此值。 |
|
| `params.author.email` | 无 | 作者邮箱。如果启用了“通过邮件回复”功能,则会启用此值。 |
|
||||||
| `params.author.image` | 无 | 作者头像的文件路径。图像应该是 1:1 的宽高比。可以放在网站的 `assets/` 文件夹中,也可以是外部 URL。 |
|
| `params.author.image` | 无 | 作者头像的文件路径。图像应该是 1:1 的宽高比。可以放在网站的 `assets/` 文件夹中,也可以是外部 URL。 |
|
||||||
@@ -167,7 +167,7 @@ Blowfish 提供了大量控制主题功能的配置参数,下面的表格中
|
|||||||
### 全局
|
### 全局
|
||||||
|
|
||||||
| 名称 | 默认值 | 描述 |
|
| 名称 | 默认值 | 描述 |
|
||||||
| ------------------------------- | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `colorScheme` | `"blowfish"` | 主题使用的颜色方案。合法的值有: `blowfish` (默认)、`avocado`、`fire`、`ocean`、`forest`、`princess`、`neon`、`bloody`、`terminal`、`marvel`、`noir`、`autumn`、`congo` 和 `slate`。 具体参考[颜色方案]({{< ref "getting-started#colour-schemes" >}})以获取更多信息。 |
|
| `colorScheme` | `"blowfish"` | 主题使用的颜色方案。合法的值有: `blowfish` (默认)、`avocado`、`fire`、`ocean`、`forest`、`princess`、`neon`、`bloody`、`terminal`、`marvel`、`noir`、`autumn`、`congo` 和 `slate`。 具体参考[颜色方案]({{< ref "getting-started#colour-schemes" >}})以获取更多信息。 |
|
||||||
| `defaultAppearance` | `"light"` | 默认的主题外观,可以是 `light` 或者 `dark`。 |
|
| `defaultAppearance` | `"light"` | 默认的主题外观,可以是 `light` 或者 `dark`。 |
|
||||||
| `autoSwitchAppearance` | `true` | 主题外观是否根据访问者操作系统的偏好自动切换。设置为 `false` 会强制网站始终使用 `defaultAppearance`。 |
|
| `autoSwitchAppearance` | `true` | 主题外观是否根据访问者操作系统的偏好自动切换。设置为 `false` 会强制网站始终使用 `defaultAppearance`。 |
|
||||||
@@ -189,6 +189,8 @@ Blowfish 提供了大量控制主题功能的配置参数,下面的表格中
|
|||||||
| `defaultBackgroundImage` | 无 | 设置默认背景图,用于 `background` 和 `hero` 布局下的主页。 |
|
| `defaultBackgroundImage` | 无 | 设置默认背景图,用于 `background` 和 `hero` 布局下的主页。 |
|
||||||
| `defaultFeaturedImage` | 无 | 设置默认背景图片,用于所有文章的`featured`图片,可以通过文章目录中的 `featured` 图片替换。 |
|
| `defaultFeaturedImage` | 无 | 设置默认背景图片,用于所有文章的`featured`图片,可以通过文章目录中的 `featured` 图片替换。 |
|
||||||
| `defaultSocialImage` | 无 | 社交媒体分享(Open Graph 和 Twitter)使用的默认图片,可以通过文章目录中的 `featured` 图片替换。 |
|
| `defaultSocialImage` | 无 | 社交媒体分享(Open Graph 和 Twitter)使用的默认图片,可以通过文章目录中的 `featured` 图片替换。 |
|
||||||
|
| `hotlinkFeatureImage` | `false` | 在文章特色图片和文章卡片中外链图片。这些图片不会被 Hugo 处理。 |
|
||||||
|
| `imagePosition` | 无 | 使用 `object-position` 属性设置默认图像的位置。有效值如 [MDN 文档](https://developer.mozilla.org/en-US/docs/Web/CSS/object-position#try_it) 所示。 |
|
||||||
| `highlightCurrentMenuArea` | 无 | 当菜单被选择时,标记主菜单中的菜单项。 |
|
| `highlightCurrentMenuArea` | 无 | 当菜单被选择时,标记主菜单中的菜单项。 |
|
||||||
| `smartTOC` | 无 | 开启智能目录,视图中的项目将会被高亮显示。 |
|
| `smartTOC` | 无 | 开启智能目录,视图中的项目将会被高亮显示。 |
|
||||||
| `smartTOCHideUnfocusedChildren` | 无 | 当开启智能目录,如果目录级别不再被聚焦时,将会隐藏更深层次的目录。 |
|
| `smartTOCHideUnfocusedChildren` | 无 | 当开启智能目录,如果目录级别不再被聚焦时,将会隐藏更深层次的目录。 |
|
||||||
@@ -197,13 +199,13 @@ Blowfish 提供了大量控制主题功能的配置参数,下面的表格中
|
|||||||
### 页头
|
### 页头
|
||||||
|
|
||||||
| 名称 | 默认值 | 描述 |
|
| 名称 | 默认值 | 描述 |
|
||||||
| --------------- | --------- | --------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `header.layout` | `"basic"` | 定义整个站点的页头的布局,支持的参数有 `basic`、`fixed`、`fixed-fill`、and `fixed-fill-blur`. |
|
| `header.layout` | `"basic"` | 定义整个站点的页头的布局,支持的参数有 `basic`、`fixed`、`fixed-fill`、and `fixed-fill-blur`. |
|
||||||
|
|
||||||
### 页脚
|
### 页脚
|
||||||
|
|
||||||
| 名称 | 默认值 | 描述 |
|
| 名称 | 默认值 | 描述 |
|
||||||
| ------------------------------- | ------- | --------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `footer.showMenu` | `true` | 显示/隐藏页面底部菜单,该菜单可以在 `config/_default/menus.en.toml` 文件中的 `[[footer]]` 部分进行配置。 |
|
| `footer.showMenu` | `true` | 显示/隐藏页面底部菜单,该菜单可以在 `config/_default/menus.en.toml` 文件中的 `[[footer]]` 部分进行配置。 |
|
||||||
| `footer.showCopyright` | `true` | 是否在底部显示 copyright 版权信息。请注意,如果你想定制,可以在[语言配置](#语言和i18n)中使用 `copyright` 参数。 |
|
| `footer.showCopyright` | `true` | 是否在底部显示 copyright 版权信息。请注意,如果你想定制,可以在[语言配置](#语言和i18n)中使用 `copyright` 参数。 |
|
||||||
| `footer.showThemeAttribution` | `true` | 是否在网站底部中显示"powered by" 的主题归属信息。如果禁用此参数,请考虑在你网站的其他位置设置主题归属信息,例如在关于页面。 |
|
| `footer.showThemeAttribution` | `true` | 是否在网站底部中显示"powered by" 的主题归属信息。如果禁用此参数,请考虑在你网站的其他位置设置主题归属信息,例如在关于页面。 |
|
||||||
@@ -213,7 +215,7 @@ Blowfish 提供了大量控制主题功能的配置参数,下面的表格中
|
|||||||
### 主页
|
### 主页
|
||||||
|
|
||||||
| 名称 | 默认值 | 描述 |
|
| 名称 | 默认值 | 描述 |
|
||||||
| ------------------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `homepage.layout` | `"profile"` | 首页布局参数。合法的参数值有: `page`、`profile`、`hero`、`card`、`background` 或 `custom`。当你设置为 `custom` 时,你必须创建 `/layouts/partials/home/custom.html` 文件以定制自己的布局。参考[主页布局]({{< ref "homepage-layout" >}})来获取更多信息。 |
|
| `homepage.layout` | `"profile"` | 首页布局参数。合法的参数值有: `page`、`profile`、`hero`、`card`、`background` 或 `custom`。当你设置为 `custom` 时,你必须创建 `/layouts/partials/home/custom.html` 文件以定制自己的布局。参考[主页布局]({{< ref "homepage-layout" >}})来获取更多信息。 |
|
||||||
| `homepage.homepageImage` | 无 | 在 `hero` 和 `card` 布局中使用的图像。图片可以来自于本地的资源目录,也可以是外部图像 URL。参考 [主页布局]({{< ref "homepage-layout" >}}) 来获取更多信息。 |
|
| `homepage.homepageImage` | 无 | 在 `hero` 和 `card` 布局中使用的图像。图片可以来自于本地的资源目录,也可以是外部图像 URL。参考 [主页布局]({{< ref "homepage-layout" >}}) 来获取更多信息。 |
|
||||||
| `homepage.showRecent` | `false` | 是否在主页展示最新文章列表。 |
|
| `homepage.showRecent` | `false` | 是否在主页展示最新文章列表。 |
|
||||||
@@ -228,7 +230,7 @@ Blowfish 提供了大量控制主题功能的配置参数,下面的表格中
|
|||||||
### 文章页
|
### 文章页
|
||||||
|
|
||||||
| 名称 | 默认值 | 描述 |
|
| 名称 | 默认值 | 描述 |
|
||||||
| ------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
| --- | --- | --- |
|
||||||
| `article.showDate` | `true` | 是否显示日期。 |
|
| `article.showDate` | `true` | 是否显示日期。 |
|
||||||
| `article.showViews` | `false` | 是否显示文章阅读量。这需要集成 firebase ,具体可以看下面。 |
|
| `article.showViews` | `false` | 是否显示文章阅读量。这需要集成 firebase ,具体可以看下面。 |
|
||||||
| `article.showLikes` | `false` | 是否显示文章点赞量。这需要集成 firebase ,具体可以看下面。 |
|
| `article.showLikes` | `false` | 是否显示文章点赞量。这需要集成 firebase ,具体可以看下面。 |
|
||||||
@@ -263,7 +265,7 @@ Blowfish 提供了大量控制主题功能的配置参数,下面的表格中
|
|||||||
### 列表页
|
### 列表页
|
||||||
|
|
||||||
| 名称 | 默认值 | 描述 |
|
| 名称 | 默认值 | 描述 |
|
||||||
| ---------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `list.showHero` | `false` | 缩略图是否会在每个页面中作为 hero 图像显示。 |
|
| `list.showHero` | `false` | 缩略图是否会在每个页面中作为 hero 图像显示。 |
|
||||||
| `list.heroStyle` | 无 | hero 图像的展示样式,可选的参数值有:`basic`、`big`、`background`、`thumbAndBackground`。 |
|
| `list.heroStyle` | 无 | hero 图像的展示样式,可选的参数值有:`basic`、`big`、`background`、`thumbAndBackground`。 |
|
||||||
| `list.showBreadcrumbs` | `false` | 是否在标题栏显示面包屑导航。 |
|
| `list.showBreadcrumbs` | `false` | 是否在标题栏显示面包屑导航。 |
|
||||||
@@ -284,13 +286,13 @@ Blowfish 提供了大量控制主题功能的配置参数,下面的表格中
|
|||||||
### 网站地图
|
### 网站地图
|
||||||
|
|
||||||
| 名称 | 默认值 | 描述 |
|
| 名称 | 默认值 | 描述 |
|
||||||
| ----------------------- | ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `sitemap.excludedKinds` | `["taxonomy", "term"]` | 从生成的 `/sitemap.xml` 文件中排除的内容。 具体的配置请参考[Hugo 文档](https://gohugo.io/methods/page/kind/)。 |
|
| `sitemap.excludedKinds` | `["taxonomy", "term"]` | 从生成的 `/sitemap.xml` 文件中排除的内容。 具体的配置请参考[Hugo 文档](https://gohugo.io/methods/page/kind/)。 |
|
||||||
|
|
||||||
### 分类法
|
### 分类法
|
||||||
|
|
||||||
| 名称 | 默认值 | 描述 |
|
| 名称 | 默认值 | 描述 |
|
||||||
| ------------------------------ | ------- | ----------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `taxonomy.showTermCount` | `true` | 是否在分类列表总显示对应的数量。 |
|
| `taxonomy.showTermCount` | `true` | 是否在分类列表总显示对应的数量。 |
|
||||||
| `taxonomy.showHero` | `false` | 缩略图是否会在每个页面中作为 hero 图像显示。 |
|
| `taxonomy.showHero` | `false` | 缩略图是否会在每个页面中作为 hero 图像显示。 |
|
||||||
| `taxonomy.heroStyle` | 无 | hero 图像的展示样式,可选的参数值有:`basic`、`big`、`background`、`thumbAndBackground`。 |
|
| `taxonomy.heroStyle` | 无 | hero 图像的展示样式,可选的参数值有:`basic`、`big`、`background`、`thumbAndBackground`。 |
|
||||||
@@ -303,7 +305,7 @@ Blowfish 提供了大量控制主题功能的配置参数,下面的表格中
|
|||||||
### 术语
|
### 术语
|
||||||
|
|
||||||
| 名称 | 默认值 | 描述 |
|
| 名称 | 默认值 | 描述 |
|
||||||
| -------------------------- | ------- | ------------------------------------------------------------------------------------------ |
|
| --- | --- | --- |
|
||||||
| `term.showHero` | `false` | 缩略图是否会在每个页面中作为 hero 图像显示。 |
|
| `term.showHero` | `false` | 缩略图是否会在每个页面中作为 hero 图像显示。 |
|
||||||
| `term.heroStyle` | 无 | hero 图像的展示样式,可选的参数值有: `basic`、`big`、`background`、`thumbAndBackground`。 |
|
| `term.heroStyle` | 无 | hero 图像的展示样式,可选的参数值有: `basic`、`big`、`background`、`thumbAndBackground`。 |
|
||||||
| `term.showBreadcrumbs` | `false` | 是否在标题栏显示面包屑导航。 |
|
| `term.showBreadcrumbs` | `false` | 是否在标题栏显示面包屑导航。 |
|
||||||
@@ -317,7 +319,7 @@ Blowfish 提供了大量控制主题功能的配置参数,下面的表格中
|
|||||||
### Firebase(Firebase 平台)
|
### Firebase(Firebase 平台)
|
||||||
|
|
||||||
| 名称 | 默认值 | 描述 |
|
| 名称 | 默认值 | 描述 |
|
||||||
| ---------------------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `firebase.apiKey` | 无 | Firebase apiKey, 与 Firebase 集成的必填参数。了解如何将 Firebase 集成进 Blowfish 请参考 [这个页面]({{< ref "firebase-views" >}})。 |
|
| `firebase.apiKey` | 无 | Firebase apiKey, 与 Firebase 集成的必填参数。了解如何将 Firebase 集成进 Blowfish 请参考 [这个页面]({{< ref "firebase-views" >}})。 |
|
||||||
| `firebase.authDomain` | 无 | Firebase authDomain,与 Firebase 集成的必填参数。了解如何将 Firebase 集成进 Blowfish 请参考 [这个页面]({{< ref "firebase-views" >}})。 |
|
| `firebase.authDomain` | 无 | Firebase authDomain,与 Firebase 集成的必填参数。了解如何将 Firebase 集成进 Blowfish 请参考 [这个页面]({{< ref "firebase-views" >}})。 |
|
||||||
| `firebase.projectId` | 无 | Firebase projectId,与 Firebase 集成的必填参数。了解如何将 Firebase 集成进 Blowfish 请参考 [这个页面]({{< ref "firebase-views" >}})。 |
|
| `firebase.projectId` | 无 | Firebase projectId,与 Firebase 集成的必填参数。了解如何将 Firebase 集成进 Blowfish 请参考 [这个页面]({{< ref "firebase-views" >}})。 |
|
||||||
@@ -329,14 +331,14 @@ Blowfish 提供了大量控制主题功能的配置参数,下面的表格中
|
|||||||
### Fathom Analytics(一种网站分析工具)
|
### Fathom Analytics(一种网站分析工具)
|
||||||
|
|
||||||
| 名称 | 默认值 | 描述 |
|
| 名称 | 默认值 | 描述 |
|
||||||
| ------------------------ | ------ | ------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `fathomAnalytics.site` | 无 | 支持 Fathom 站点分析平台。更多详细内容请参考 [分析文档]({{< ref "partials#analytics" >}})。 |
|
| `fathomAnalytics.site` | 无 | 支持 Fathom 站点分析平台。更多详细内容请参考 [分析文档]({{< ref "partials#analytics" >}})。 |
|
||||||
| `fathomAnalytics.domain` | 无 | 如果使用自定义域名的 Fathom Analytics,请在此提供,以便从自定义域名获取 `script.js`。 |
|
| `fathomAnalytics.domain` | 无 | 如果使用自定义域名的 Fathom Analytics,请在此提供,以便从自定义域名获取 `script.js`。 |
|
||||||
|
|
||||||
### Umami Analytics(一种网站分析工具)
|
### Umami Analytics(一种网站分析工具)
|
||||||
|
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
|------------------------------|-----------|-------------------------------------------------------------------------------------|
|
| --- | --- | --- |
|
||||||
| `umamiAnalytics.websiteid` | 无 | 支持 Umami 站点分析平台。更多详细内容请参考 [分析文档]({{< ref "partials#analytics" >}})。 |
|
| `umamiAnalytics.websiteid` | 无 | 支持 Umami 站点分析平台。更多详细内容请参考 [分析文档]({{< ref "partials#analytics" >}})。 |
|
||||||
| `umamiAnalytics.domain` | 无 | 如果使用自定义域名的 Umami Analytics,请在此提供,以便从自定义域名获取 `script.js`。 |
|
| `umamiAnalytics.domain` | 无 | 如果使用自定义域名的 Umami Analytics,请在此提供,以便从自定义域名获取 `script.js`。 |
|
||||||
| `umamiAnalytics.dataDomains` | 无 | 如果你只想在特别的数个域名中使用 tracker 功能,那么你需要设置它。这个参数的值是逗号分隔的域名列表,如:yoursite.com,yoursite2.com。 |
|
| `umamiAnalytics.dataDomains` | 无 | 如果你只想在特别的数个域名中使用 tracker 功能,那么你需要设置它。这个参数的值是逗号分隔的域名列表,如:yoursite.com,yoursite2.com。 |
|
||||||
@@ -346,19 +348,19 @@ Blowfish 提供了大量控制主题功能的配置参数,下面的表格中
|
|||||||
### Seline Analytics
|
### Seline Analytics
|
||||||
|
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
|-----------------------------------|---------|--------------------------------------------------------------------------|
|
| --- | --- | --- |
|
||||||
| `selineAnalytics.token` | 无 | Seline 站点分析平台的 token。更多详细内容请参考 [分析文档]({{< ref "partials#analytics" >}})。 |
|
| `selineAnalytics.token` | 无 | Seline 站点分析平台的 token。更多详细内容请参考 [分析文档]({{< ref "partials#analytics" >}})。 |
|
||||||
| `selineAnalytics.enableTrackEvent` | true | 默认会自动添加 Umami Track Event。如果你不想添加 Event,那学需要设置为 `false`。 |
|
| `selineAnalytics.enableTrackEvent` | true | 默认会自动添加 Umami Track Event。如果你不想添加 Event,那学需要设置为 `false`。 |
|
||||||
|
|
||||||
### BuyMeACoffee(赞助平台)
|
### BuyMeACoffee(赞助平台)
|
||||||
|
|
||||||
| 名称 | 默认值 | 描述 |
|
| 名称 | 默认值 | 描述 |
|
||||||
| ----------------------------------- | ------ | ---------------------------------- |
|
| ----------------------------------- | --------- | ---------------------------------- |
|
||||||
| `buymeacoffee.identifier` | 无 | buymeacoffee 账号的用户名。 |
|
| `buymeacoffee.identifier` | 无 | buymeacoffee 账号的用户名。 |
|
||||||
| `buymeacoffee.globalWidget` | 无 | 激活位于全局的 buymeacoffee 组件。 |
|
| `buymeacoffee.globalWidget` | 无 | 激活位于全局的 buymeacoffee 组件。 |
|
||||||
| `buymeacoffee.globalWidgetMessage` | 无 | 新用户首次访问网站时显示的消息。 |
|
| `buymeacoffee.globalWidgetMessage` | 无 | 新用户首次访问网站时显示的消息。 |
|
||||||
| `buymeacoffee.globalWidgetColor` | 无 | 组件颜色,使用 HEX 格式。 |
|
| `buymeacoffee.globalWidgetColor` | `#FFDD00` | 组件颜色,使用 HEX 格式。 |
|
||||||
| `buymeacoffee.globalWidgetPosition` | 无 | 组件位置,例如 "Left" 或 "Right"。 |
|
| `buymeacoffee.globalWidgetPosition` | 无 | 组件位置,例如 "left" 或 "right"。 |
|
||||||
|
|
||||||
### 验证
|
### 验证
|
||||||
|
|
||||||
@@ -374,7 +376,7 @@ Blowfish 提供了大量控制主题功能的配置参数,下面的表格中
|
|||||||
### RSSNext
|
### RSSNext
|
||||||
|
|
||||||
| 名称 | 默认值 | 描述 |
|
| 名称 | 默认值 | 描述 |
|
||||||
| ------------------------ | --------- |---------------------------------------------------------------------------------------------|
|
| --- | --- | --- |
|
||||||
| `rssnext.feedId` | _无_ | [RSSNext/Follow](https://follow.is) 提供的 `feeId`,这将被自动添加在 `rss.xml` 中以便完成订阅源所有权验证,证明该源属于你自己。 |
|
| `rssnext.feedId` | _无_ | [RSSNext/Follow](https://follow.is) 提供的 `feeId`,这将被自动添加在 `rss.xml` 中以便完成订阅源所有权验证,证明该源属于你自己。 |
|
||||||
| `rssnext.userId` | _无_ | [RSSNext/Follow](https://follow.is) 提供的 `userId`,这将被自动添加在 `rss.xml` 中以便完成订阅源所有权验证,证明该源属于你自己 |
|
| `rssnext.userId` | _无_ | [RSSNext/Follow](https://follow.is) 提供的 `userId`,这将被自动添加在 `rss.xml` 中以便完成订阅源所有权验证,证明该源属于你自己 |
|
||||||
|
|
||||||
|
|||||||
@@ -55,7 +55,6 @@ _这个例子设置了一个自定义标题,并在页面正文中添加了一
|
|||||||
列表页将所有页面聚合到一个目录下,并为访问者提供了一种浏览页面的方式。博客或者作品集是一个典型案例,因为这两种类型的网站会将帖子或项目整合到一个列表页中。
|
列表页将所有页面聚合到一个目录下,并为访问者提供了一种浏览页面的方式。博客或者作品集是一个典型案例,因为这两种类型的网站会将帖子或项目整合到一个列表页中。
|
||||||
|
|
||||||
创建一个列表页就如同创建子目录一样简单。例如,要创建一个 "Projects" 列表页,你可以创建`content/projects/`。然后为你的项目创建一个 Markdown 文件。
|
创建一个列表页就如同创建子目录一样简单。例如,要创建一个 "Projects" 列表页,你可以创建`content/projects/`。然后为你的项目创建一个 Markdown 文件。
|
||||||
Creating a list page is as simple as making a sub-directory in the content folder. For example, to create a "Projects" section, you would create `content/projects/`. Then create a Markdown file for each of your projects.
|
|
||||||
|
|
||||||
列表页面默认会自动生成,如果你想在列表添加一些页自定义内容,还需要在此目录创建一个 `_index.md` 文件。
|
列表页面默认会自动生成,如果你想在列表添加一些页自定义内容,还需要在此目录创建一个 `_index.md` 文件。
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ I valori predefiniti dei parametri del front metter vengono ereditati dalla [con
|
|||||||
|
|
||||||
<!-- prettier-ignore-start -->
|
<!-- prettier-ignore-start -->
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
| ----------------------------- | --------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
| --- | --- | --- |
|
||||||
| `title` | _Not set_ | Il nome dell'articolo. |
|
| `title` | _Not set_ | Il nome dell'articolo. |
|
||||||
| `description` | _Not set_ | La descrizione testuale dell'articolo. Viene utilizzato nei metadati HTML. |
|
| `description` | _Not set_ | La descrizione testuale dell'articolo. Viene utilizzato nei metadati HTML. |
|
||||||
| `externalUrl` | _Not set_ | Se questo articolo è pubblicato su un sito Web di terze parti, l'URL di questo articolo. Fornire un URL impedirà la generazione di una pagina di contenuto e qualsiasi riferimento a questo articolo si collegherà direttamente al sito Web di terze parti. |
|
| `externalUrl` | _Not set_ | Se questo articolo è pubblicato su un sito Web di terze parti, l'URL di questo articolo. Fornire un URL impedirà la generazione di una pagina di contenuto e qualsiasi riferimento a questo articolo si collegherà direttamente al sito Web di terze parti. |
|
||||||
@@ -28,14 +28,15 @@ I valori predefiniti dei parametri del front metter vengono ereditati dalla [con
|
|||||||
| `showAuthor` | `article.showAuthor` | Se la casella dell'autore predefinito viene visualizzata o meno nel piè di pagina dell'articolo. |
|
| `showAuthor` | `article.showAuthor` | Se la casella dell'autore predefinito viene visualizzata o meno nel piè di pagina dell'articolo. |
|
||||||
| `authors` | _Not set_ | Matrice di valori per gli autori, se impostata sovrascrive le impostazioni di "showAuthor" per la pagina o il sito. Utilizzato nella funzionalità per più autori, controlla [questa pagina]({{< ref "multi-author" >}}) per maggiori dettagli su come configurare tale funzionalità. |
|
| `authors` | _Not set_ | Matrice di valori per gli autori, se impostata sovrascrive le impostazioni di "showAuthor" per la pagina o il sito. Utilizzato nella funzionalità per più autori, controlla [questa pagina]({{< ref "multi-author" >}}) per maggiori dettagli su come configurare tale funzionalità. |
|
||||||
| `showAuthorsBadges` | `article.showAuthorsBadges` | Se le tassonomie degli "autori" vengono visualizzate nell'articolo o nell'intestazione dell'elenco. Ciò richiede l'impostazione di "autori multipli" e la tassonomia degli "autori". Controlla [questa pagina]({{< ref "multi-author" >}}) per maggiori dettagli su come configurare questa funzione. |
|
| `showAuthorsBadges` | `article.showAuthorsBadges` | Se le tassonomie degli "autori" vengono visualizzate nell'articolo o nell'intestazione dell'elenco. Ciò richiede l'impostazione di "autori multipli" e la tassonomia degli "autori". Controlla [questa pagina]({{< ref "multi-author" >}}) per maggiori dettagli su come configurare questa funzione. |
|
||||||
| `featureimage` | _Not set_ | URL esterno per l'immagine in primo piano
|
| `featureimage` | _Not set_ | Link per l'immagine in primo piano |
|
||||||
| `featureimagecaption` | _Not set_ | Didascalia per l'immagine in primo piano. Visualizzato solo in heroStyle "big".
|
| `featureimagecaption` | _Not set_ | Didascalia per l'immagine in primo piano. Visualizzato solo in heroStyle "big". |
|
||||||
| `showHero` | `article.showHero` | Se l'immagine in miniatura verrà mostrata come immagine hero all'interno della pagina dell'articolo. |
|
| `showHero` | `article.showHero` | Se l'immagine in miniatura verrà mostrata come immagine hero all'interno della pagina dell'articolo. |
|
||||||
| `heroStyle` | `article.heroStyle` | Stile per visualizzare l'immagine hero, le opzioni valide sono: `basic`, `big`, ` background`, `thumbAndBackground`. |
|
| `heroStyle` | `article.heroStyle` | Stile per visualizzare l'immagine hero, le opzioni valide sono: `basic`, `big`, `background`, `thumbAndBackground`. |
|
||||||
|
| `imagePosition` | _Not set_ | Imposta la posizione dell'immagine in evidenza utilizzando l'attributo `object-position`. I valori validi sono specificati nella [documentazione MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/object-position#try_it). |
|
||||||
| `showBreadcrumbs` | `article.showBreadcrumbs` or `list.showBreadcrumbs` | Se i breadcrumb vengono visualizzati nell'articolo o nell'intestazione dell'elenco. |
|
| `showBreadcrumbs` | `article.showBreadcrumbs` or `list.showBreadcrumbs` | Se i breadcrumb vengono visualizzati nell'articolo o nell'intestazione dell'elenco. |
|
||||||
| `showDate` | `article.showDate` | Se viene visualizzata o meno la data dell'articolo. La data viene impostata utilizzando il parametro "data". |
|
| `showDate` | `article.showDate` | Se viene visualizzata o meno la data dell'articolo. La data viene impostata utilizzando il parametro "data". |
|
||||||
| `showDateUpdated` | `article.showDateUpdated` | Se viene visualizzata o meno la data di aggiornamento dell'articolo. La data viene impostata utilizzando il parametro "lastmod". |
|
| `showDateUpdated` | `article.showDateUpdated` | Se viene visualizzata o meno la data di aggiornamento dell'articolo. La data viene impostata utilizzando il parametro "lastmod". |
|
||||||
| `showEdit` | `article.showEdit` |Se deve essere visualizzato o meno il collegamento per modificare il contenuto dell'articolo. |
|
| `showEdit` | `article.showEdit` | Se deve essere visualizzato o meno il collegamento per modificare il contenuto dell'articolo. |
|
||||||
| `showHeadingAnchors` | `article.showHeadingAnchors` | Se i collegamenti di ancoraggio dei titoli vengono visualizzati o meno insieme ai titoli all'interno di questo articolo. |
|
| `showHeadingAnchors` | `article.showHeadingAnchors` | Se i collegamenti di ancoraggio dei titoli vengono visualizzati o meno insieme ai titoli all'interno di questo articolo. |
|
||||||
| `showPagination` | `article.showPagination` | Se i collegamenti all'articolo successivo/precedente vengono visualizzati o meno nel piè di pagina dell'articolo. |
|
| `showPagination` | `article.showPagination` | Se i collegamenti all'articolo successivo/precedente vengono visualizzati o meno nel piè di pagina dell'articolo. |
|
||||||
| `invertPagination` | `article.invertPagination` | Se invertire o meno la direzione dei collegamenti all'articolo successivo/precedente. |
|
| `invertPagination` | `article.invertPagination` | Se invertire o meno la direzione dei collegamenti all'articolo successivo/precedente. |
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ series_order: 7
|
|||||||
|
|
||||||
<!-- prettier-ignore-start -->
|
<!-- prettier-ignore-start -->
|
||||||
| 名前 | デフォルト | 説明 |
|
| 名前 | デフォルト | 説明 |
|
||||||
| ----------------------------- | --------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
| --- | --- | --- |
|
||||||
| `title` | _未設定_ | 記事の名前。 |
|
| `title` | _未設定_ | 記事の名前。 |
|
||||||
| `description` | _未設定_ | 記事のテキスト説明。HTML メタデータで使用されます。 |
|
| `description` | _未設定_ | 記事のテキスト説明。HTML メタデータで使用されます。 |
|
||||||
| `externalUrl` | _未設定_ | この記事がサードパーティのウェブサイトで公開されている場合、この記事への URL。URL を指定すると、コンテンツページの生成が妨げられ、この記事への参照はすべてサードパーティのウェブサイトに直接リンクされます。 |
|
| `externalUrl` | _未設定_ | この記事がサードパーティのウェブサイトで公開されている場合、この記事への URL。URL を指定すると、コンテンツページの生成が妨げられ、この記事への参照はすべてサードパーティのウェブサイトに直接リンクされます。 |
|
||||||
@@ -29,10 +29,11 @@ series_order: 7
|
|||||||
| `showAuthorBottom` | `article.showAuthorBottom` | 著者ボックスは、各ページの上部ではなく下部に表示されます。 |
|
| `showAuthorBottom` | `article.showAuthorBottom` | 著者ボックスは、各ページの上部ではなく下部に表示されます。 |
|
||||||
| `authors` | _未設定_ | 著者の値の配列。設定されている場合、ページまたはサイトの `showAuthor` 設定を上書きします。複数人の著者機能で使用されます。この機能の設定方法の詳細については、[このページ]({{< ref "multi-author" >}})をご覧ください。 |
|
| `authors` | _未設定_ | 著者の値の配列。設定されている場合、ページまたはサイトの `showAuthor` 設定を上書きします。複数人の著者機能で使用されます。この機能の設定方法の詳細については、[このページ]({{< ref "multi-author" >}})をご覧ください。 |
|
||||||
| `showAuthorsBadges` | `article.showAuthorsBadges` | 記事またはリストヘッダーに `authors` タクソノミーを表示するかどうか。これには、`複数人の著者` と `authors` タクソノミーの設定が必要です。この機能の設定方法の詳細については、[このページ]({{< ref "multi-author" >}})をご覧ください。 |
|
| `showAuthorsBadges` | `article.showAuthorsBadges` | 記事またはリストヘッダーに `authors` タクソノミーを表示するかどうか。これには、`複数人の著者` と `authors` タクソノミーの設定が必要です。この機能の設定方法の詳細については、[このページ]({{< ref "multi-author" >}})をご覧ください。 |
|
||||||
| `featureimage` | _未設定_ | フィーチャー画像の外部 URL。 |
|
| `featureimage` | _未設定_ | フィーチャー画像の外部リンク。 |
|
||||||
| `featureimagecaption` | _未設定_ | フィーチャー画像のキャプション。heroStyle `big` でのみ表示されます。 |
|
| `featureimagecaption` | _未設定_ | フィーチャー画像のキャプション。heroStyle `big` でのみ表示されます。 |
|
||||||
| `showHero` | `article.showHero` | 記事ページ内でサムネイル画像をヒーロー画像として表示するかどうか。 |
|
| `showHero` | `article.showHero` | 記事ページ内でサムネイル画像をヒーロー画像として表示するかどうか。 |
|
||||||
| `heroStyle` | `article.heroStyle` | ヒーロー画像の表示スタイル。有効なオプションは、`basic`、`big`、`background`、`thumbAndBackground` です。 |
|
| `heroStyle` | `article.heroStyle` | ヒーロー画像の表示スタイル。有効なオプションは、`basic`、`big`、`background`、`thumbAndBackground` です。 |
|
||||||
|
| `imagePosition` | _未設定_ | `object-position` 属性を使用してフィーチャー画像の位置を設定します。有効な値は [MDN ドキュメント](https://developer.mozilla.org/en-US/docs/Web/CSS/object-position#try_it) に記載されています。 |
|
||||||
| `showBreadcrumbs` | `article.showBreadcrumbs` <br/>または `list.showBreadcrumbs` | 記事またはリストヘッダーにパンくずリストを表示するかどうか。 |
|
| `showBreadcrumbs` | `article.showBreadcrumbs` <br/>または `list.showBreadcrumbs` | 記事またはリストヘッダーにパンくずリストを表示するかどうか。 |
|
||||||
| `showDate` | `article.showDate` | 記事の日付を表示するかどうか。日付は `date` パラメータを使用して設定されます。 |
|
| `showDate` | `article.showDate` | 記事の日付を表示するかどうか。日付は `date` パラメータを使用して設定されます。 |
|
||||||
| `showDateUpdated` | `article.showDateUpdated` | 記事が更新された日付を表示するかどうか。日付は `lastmod` パラメータを使用して設定されます。 |
|
| `showDateUpdated` | `article.showDateUpdated` | 記事が更新された日付を表示するかどうか。日付は `lastmod` パラメータを使用して設定されます。 |
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ Front matter parameter default values are inherited from the theme's [base confi
|
|||||||
|
|
||||||
<!-- prettier-ignore-start -->
|
<!-- prettier-ignore-start -->
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
| ----------------------------- | --------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
| --- | --- | --- |
|
||||||
| `title` | _Not set_ | The name of the article. |
|
| `title` | _Not set_ | The name of the article. |
|
||||||
| `description` | _Not set_ | The text description for the article. It is used in the HTML metadata. |
|
| `description` | _Not set_ | The text description for the article. It is used in the HTML metadata. |
|
||||||
| `externalUrl` | _Not set_ | If this article is published on a third-party website, the URL to this article. Providing a URL will prevent a content page being generated and any references to this article will link directly to the third-party website. |
|
| `externalUrl` | _Not set_ | If this article is published on a third-party website, the URL to this article. Providing a URL will prevent a content page being generated and any references to this article will link directly to the third-party website. |
|
||||||
@@ -29,10 +29,11 @@ Front matter parameter default values are inherited from the theme's [base confi
|
|||||||
| `showAuthorBottom` | `article.showAuthorBottom` | Author boxes are displayed at the bottom of each page instead of the top. |
|
| `showAuthorBottom` | `article.showAuthorBottom` | Author boxes are displayed at the bottom of each page instead of the top. |
|
||||||
| `authors` | _Not set_ | Array of values for authors, if set it overrides `showAuthor` settings for page or site. Used on the multiple authors feature, check [this page]({{< ref "multi-author" >}}) for more details on how to configure that feature. |
|
| `authors` | _Not set_ | Array of values for authors, if set it overrides `showAuthor` settings for page or site. Used on the multiple authors feature, check [this page]({{< ref "multi-author" >}}) for more details on how to configure that feature. |
|
||||||
| `showAuthorsBadges` | `article.showAuthorsBadges` | Whether the `authors` taxonomies are are displayed in the article or list header. This requires the setup of `multiple authors` and the `authors` taxonomy. Check [this page]({{< ref "multi-author" >}}) for more details on how to configure that feature. |
|
| `showAuthorsBadges` | `article.showAuthorsBadges` | Whether the `authors` taxonomies are are displayed in the article or list header. This requires the setup of `multiple authors` and the `authors` taxonomy. Check [this page]({{< ref "multi-author" >}}) for more details on how to configure that feature. |
|
||||||
| `featureimage` | _Not set_ | External URL for feature image |
|
| `featureimage` | _Not set_ | Link for feature image |
|
||||||
| `featureimagecaption` | _Not set_ | Caption for feature image. Only displayed in heroStyle `big` |
|
| `featureimagecaption` | _Not set_ | Caption for feature image. Only displayed in heroStyle `big` |
|
||||||
| `showHero` | `article.showHero` | Whether the thumbnail image will be shown as a hero image within the article page. |
|
| `showHero` | `article.showHero` | Whether the thumbnail image will be shown as a hero image within the article page. |
|
||||||
| `heroStyle` | `article.heroStyle` | Style to display the hero image, valid options are: `basic`, `big`, `background`, `thumbAndBackground`. |
|
| `heroStyle` | `article.heroStyle` | Style to display the hero image, valid options are: `basic`, `big`, `background`, `thumbAndBackground`. |
|
||||||
|
| `imagePosition` | _Not set_ | Sets the position of the feature image using `object-position` attribute. Valid values are as specified in the [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/CSS/object-position#try_it). |
|
||||||
| `showBreadcrumbs` | `article.showBreadcrumbs` or `list.showBreadcrumbs` | Whether the breadcrumbs are displayed in the article or list header. |
|
| `showBreadcrumbs` | `article.showBreadcrumbs` or `list.showBreadcrumbs` | Whether the breadcrumbs are displayed in the article or list header. |
|
||||||
| `showDate` | `article.showDate` | Whether or not the article date is displayed. The date is set using the `date` parameter. |
|
| `showDate` | `article.showDate` | Whether or not the article date is displayed. The date is set using the `date` parameter. |
|
||||||
| `showDateUpdated` | `article.showDateUpdated` | Whether or not the date the article was updated is displayed. The date is set using the `lastmod` parameter. |
|
| `showDateUpdated` | `article.showDateUpdated` | Whether or not the date the article was updated is displayed. The date is set using the `lastmod` parameter. |
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ front matter 参数中的默认值是从[基础配置]({{< ref "configuration" >
|
|||||||
|
|
||||||
<!-- prettier-ignore-start -->
|
<!-- prettier-ignore-start -->
|
||||||
| 名称 | 默认值 | 描述 |
|
| 名称 | 默认值 | 描述 |
|
||||||
| ----------------------------- | --------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- |
|
||||||
| `title` | 无 | 文章名称。 |
|
| `title` | 无 | 文章名称。 |
|
||||||
| `description` | 无 | 文章的描述信息,它会被添加在 HTML 的 `<meta>` 元数据中。 |
|
| `description` | 无 | 文章的描述信息,它会被添加在 HTML 的 `<meta>` 元数据中。 |
|
||||||
| `externalUrl` | 无 | 如果文章发布在第三方网站上,这里提供只想对应文章的 URL 地址。提供 URL 将会组织生成内容页面,对这篇文章的任何引用都会直接跳转到第三方网站的 URL 上面。 |
|
| `externalUrl` | 无 | 如果文章发布在第三方网站上,这里提供只想对应文章的 URL 地址。提供 URL 将会组织生成内容页面,对这篇文章的任何引用都会直接跳转到第三方网站的 URL 上面。 |
|
||||||
@@ -29,10 +29,11 @@ front matter 参数中的默认值是从[基础配置]({{< ref "configuration" >
|
|||||||
| `showAuthorBottom` | `article.showAuthorBottom` | 作者框显示在每页的底部而不是顶部。 |
|
| `showAuthorBottom` | `article.showAuthorBottom` | 作者框显示在每页的底部而不是顶部。 |
|
||||||
| `authors` | 无 | 用于展示多创作者的数组,如果设置了将会覆盖 `showAuthor` 设置。这里使用了多作者的特性,查看[这个页面]({{< ref "multi-author" >}})来获取更多信息。 |
|
| `authors` | 无 | 用于展示多创作者的数组,如果设置了将会覆盖 `showAuthor` 设置。这里使用了多作者的特性,查看[这个页面]({{< ref "multi-author" >}})来获取更多信息。 |
|
||||||
| `showAuthorsBadges` | `article.showAuthorsBadges` | 是否在文章和列表页展示`authors`作者分类。想是它生效需要开启`multiple authors`多创作者和 `authors` 作者分类。 查看[这个页面]({{< ref "multi-author" >}})来获取更多信息。 |
|
| `showAuthorsBadges` | `article.showAuthorsBadges` | 是否在文章和列表页展示`authors`作者分类。想是它生效需要开启`multiple authors`多创作者和 `authors` 作者分类。 查看[这个页面]({{< ref "multi-author" >}})来获取更多信息。 |
|
||||||
| `featureimage` | 无 | 基于外部 URL 的特征图片链接。 |
|
| `featureimage` | 无 | 基于连结的特征图片链接。 |
|
||||||
| `featureimagecaption` | 无 | 特征图片的说明,仅在 hero 样式的 `big` 风格下展示。 |
|
| `featureimagecaption` | 无 | 特征图片的说明,仅在 hero 样式的 `big` 风格下展示。 |
|
||||||
| `showHero` | `article.showHero` | 是否在文章页面将所裸土作为文章页面内的 hero 图片显示。 |
|
| `showHero` | `article.showHero` | 是否在文章页面将所裸土作为文章页面内的 hero 图片显示。 |
|
||||||
| `heroStyle` | `article.heroStyle` | hero 图片的风格,合法的值有: `basic`、`big`、`background`、`thumbAndBackground`。 |
|
| `heroStyle` | `article.heroStyle` | hero 图片的风格,合法的值有: `basic`、`big`、`background`、`thumbAndBackground`。 |
|
||||||
|
| `imagePosition` | 无 | 使用 `object-position` 属性设置特色图片的位置。有效值如 [MDN 文档](https://developer.mozilla.org/en-US/docs/Web/CSS/object-position#try_it) 所示。 |
|
||||||
| `showBreadcrumbs` | `article.showBreadcrumbs` or `list.showBreadcrumbs` | 是否在文章或列表页面显示面包屑导航。 |
|
| `showBreadcrumbs` | `article.showBreadcrumbs` or `list.showBreadcrumbs` | 是否在文章或列表页面显示面包屑导航。 |
|
||||||
| `showDate` | `article.showDate` | 是否显示文章的日期。具体日期使用 `date` 参数设置。 |
|
| `showDate` | `article.showDate` | 是否显示文章的日期。具体日期使用 `date` 参数设置。 |
|
||||||
| `showDateUpdated` | `article.showDateUpdated` | 是否显示文章的更新日期。具体日期使用 `lastmod` 参数设置。 |
|
| `showDateUpdated` | `article.showDateUpdated` | 是否显示文章的更新日期。具体日期使用 `lastmod` 参数设置。 |
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ npx blowfish-tools
|
|||||||
```
|
```
|
||||||
{{< /alert >}}
|
{{< /alert >}}
|
||||||
|
|
||||||
|
|
||||||
The config files that ship with Blowfish contain all of the possible settings that the theme recognises. By default, many of these are commented out but you can simply uncomment them to activate or change a specific feature.
|
The config files that ship with Blowfish contain all of the possible settings that the theme recognises. By default, many of these are commented out but you can simply uncomment them to activate or change a specific feature.
|
||||||
|
|
||||||
## Basic configuration
|
## Basic configuration
|
||||||
@@ -74,48 +73,61 @@ colorScheme = "blowfish"
|
|||||||
|
|
||||||
Blowfish defines a three-colour palette that is used throughout the theme. Each main colour contains ten shades which are based upon the colours that are included in [Tailwind](https://tailwindcss.com/docs/customizing-colors#color-palette-reference). The three main colours are used for the header, footer, and accent colours. Here are the colors for each scheme:
|
Blowfish defines a three-colour palette that is used throughout the theme. Each main colour contains ten shades which are based upon the colours that are included in [Tailwind](https://tailwindcss.com/docs/customizing-colors#color-palette-reference). The three main colours are used for the header, footer, and accent colours. Here are the colors for each scheme:
|
||||||
|
|
||||||
#### Blowfish (default)
|
### Blowfish (default)
|
||||||
|
|
||||||
{{< swatches "#64748b" "#3b82f6" "#06b6d4" >}}
|
{{< swatches "#64748b" "#3b82f6" "#06b6d4" >}}
|
||||||
|
|
||||||
#### Avocado
|
### Avocado
|
||||||
|
|
||||||
{{< swatches "#78716c" "#84cc16" "#10b981" >}}
|
{{< swatches "#78716c" "#84cc16" "#10b981" >}}
|
||||||
|
|
||||||
#### Fire
|
### Fire
|
||||||
|
|
||||||
{{< swatches "#78716c" "#f97316" "#f43f5e" >}}
|
{{< swatches "#78716c" "#f97316" "#f43f5e" >}}
|
||||||
|
|
||||||
#### Ocean
|
### Ocean
|
||||||
|
|
||||||
{{< swatches "#64748b" "#3b82f6" "#06b6d4" >}}
|
{{< swatches "#64748b" "#3b82f6" "#06b6d4" >}}
|
||||||
|
|
||||||
#### Forest
|
### Forest
|
||||||
|
|
||||||
{{< swatches "#658c86" "#3bf5df" "#06d45c" >}}
|
{{< swatches "#658c86" "#3bf5df" "#06d45c" >}}
|
||||||
|
|
||||||
#### Princess
|
### Princess
|
||||||
|
|
||||||
{{< swatches "#8c658c" "#f53bf2" "#7706d4" >}}
|
{{< swatches "#8c658c" "#f53bf2" "#7706d4" >}}
|
||||||
|
|
||||||
#### Neon
|
### Neon
|
||||||
|
|
||||||
{{< swatches "#8338ec" "#ff006e" "#3a86ff" >}}
|
{{< swatches "#8338ec" "#ff006e" "#3a86ff" >}}
|
||||||
|
|
||||||
#### Bloody
|
### Bloody
|
||||||
|
|
||||||
{{< swatches "#d90429" "#8d99ae" "#457b9d" >}}
|
{{< swatches "#d90429" "#8d99ae" "#457b9d" >}}
|
||||||
|
|
||||||
#### Terminal
|
### Terminal
|
||||||
|
|
||||||
{{< swatches "#004b23" "#38b000" "#1a759f" >}}
|
{{< swatches "#004b23" "#38b000" "#1a759f" >}}
|
||||||
|
|
||||||
#### Marvel
|
### Marvel
|
||||||
|
|
||||||
{{< swatches "#2541b2" "#d81159" "#ffbc42" >}}
|
{{< swatches "#2541b2" "#d81159" "#ffbc42" >}}
|
||||||
|
|
||||||
#### Noir
|
### Noir
|
||||||
|
|
||||||
{{< swatches "#5c6b73" "#9db4c0" "#00a5cf" >}}
|
{{< swatches "#5c6b73" "#9db4c0" "#00a5cf" >}}
|
||||||
|
|
||||||
#### Autumn
|
### Autumn
|
||||||
|
|
||||||
{{< swatches "#0a9396" "#ee9b00" "#bb3e03" >}}
|
{{< swatches "#0a9396" "#ee9b00" "#bb3e03" >}}
|
||||||
|
|
||||||
#### Congo
|
### Congo
|
||||||
|
|
||||||
{{< swatches "#71717a" "#8b5cf6" "#d946ef" >}}
|
{{< swatches "#71717a" "#8b5cf6" "#d946ef" >}}
|
||||||
|
|
||||||
#### Slate
|
### Slate
|
||||||
{{< swatches "#6B7280" "#64748b" "#6B7280" >}}
|
|
||||||
|
|
||||||
|
{{< swatches "#6B7280" "#64748b" "#6B7280" >}}
|
||||||
|
|
||||||
Although these are the default schemes, you can also create your own. Refer to the [Advanced Customisation]({{< ref "advanced-customisation#colour-schemes" >}}) section for details.
|
Although these are the default schemes, you can also create your own. Refer to the [Advanced Customisation]({{< ref "advanced-customisation#colour-schemes" >}}) section for details.
|
||||||
|
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 737 KiB After Width: | Height: | Size: 3.6 MiB |
|
Before Width: | Height: | Size: 811 KiB After Width: | Height: | Size: 3.5 MiB |
|
Before Width: | Height: | Size: 892 KiB After Width: | Height: | Size: 4.2 MiB |
|
Before Width: | Height: | Size: 499 KiB After Width: | Height: | Size: 1.4 MiB |
|
Before Width: | Height: | Size: 509 KiB After Width: | Height: | Size: 1.3 MiB |
|
Before Width: | Height: | Size: 504 KiB After Width: | Height: | Size: 1.6 MiB |
@@ -79,7 +79,7 @@ Blowfish 提供了一个完全灵活的主页布局。你可以选择两种主
|
|||||||
|
|
||||||
## 缩略图
|
## 缩略图
|
||||||
|
|
||||||
Blowfish 为你的文章提供了视觉支持。如果你熟悉 Hugo 的文章结构,只需要在你的文章对应的文件夹中防止一个以`feature*`开头的图像文件即可,图像类型几乎支持所有格式,更推荐使用`.png` 或者 `.jpg`。这样一来,Blowfish 将会在你的网站内使用该图片作为缩略图,并用在社交媒体平台上的 <a target="_blank" href="https://oembed.com/">oEmbed</a> 卡片中。
|
Blowfish 为你的文章提供了视觉支持。如果你熟悉 Hugo 的文章结构,只需要在你的文章对应的文件夹中放置一个以`feature*`开头的图像文件即可,图像类型几乎支持所有格式,更推荐使用`.png` 或者 `.jpg`。这样一来,Blowfish 将会在你的网站内使用该图片作为缩略图,并用在社交媒体平台上的 <a target="_blank" href="https://oembed.com/">oEmbed</a> 卡片中。
|
||||||
|
|
||||||
[这是]({{< ref "thumbnails" >}})有更多详细内容,并且有一个便于理解的[示例]({{< ref "thumbnail_sample" >}})。
|
[这是]({{< ref "thumbnails" >}})有更多详细内容,并且有一个便于理解的[示例]({{< ref "thumbnail_sample" >}})。
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ In addition to all the [default Hugo shortcodes](https://gohugo.io/content-manag
|
|||||||
|
|
||||||
<!-- prettier-ignore-start -->
|
<!-- prettier-ignore-start -->
|
||||||
| Parameter | Description |
|
| Parameter | Description |
|
||||||
| ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- |
|
||||||
| `icon` | **Optional.** the icon to display on the left side.<br>**Default:** `triangle-exclamation` (Check out the [icon shortcode](#icon) for more details on using icons.) |
|
| `icon` | **Optional.** the icon to display on the left side.<br>**Default:** `triangle-exclamation` (Check out the [icon shortcode](#icon) for more details on using icons.) |
|
||||||
| `iconColor` | **Optional.** the color for the icon in basic CSS style.<br>Can be either hex values (`#FFFFFF`) or color names (`white`)<br>By default chosen based on the current color theme . |
|
| `iconColor` | **Optional.** the color for the icon in basic CSS style.<br>Can be either hex values (`#FFFFFF`) or color names (`white`)<br>By default chosen based on the current color theme . |
|
||||||
| `cardColor` | **Optional.** the color for the card background in basic CSS style.<br>Can be either hex values (`#FFFFFF`) or color names (`white`)<br>By default chosen based on the current color theme . |
|
| `cardColor` | **Optional.** the color for the card background in basic CSS style.<br>Can be either hex values (`#FFFFFF`) or color names (`white`)<br>By default chosen based on the current color theme . |
|
||||||
@@ -128,7 +128,7 @@ Call to action
|
|||||||
|
|
||||||
<!-- prettier-ignore-start -->
|
<!-- prettier-ignore-start -->
|
||||||
| Parameter | Description |
|
| Parameter | Description |
|
||||||
| ------------- | ----------------------------------------------------------------------------------------------------------------- |
|
| --- | --- |
|
||||||
| `images` | **Required.** A regex string to match image names or URLs. |
|
| `images` | **Required.** A regex string to match image names or URLs. |
|
||||||
| `aspectRatio` | **Optional.** The aspect ratio for the carousel. Either `16-9`, `21-9` or `32-9`. It is set to `16-9` by default. |
|
| `aspectRatio` | **Optional.** The aspect ratio for the carousel. Either `16-9`, `21-9` or `32-9`. It is set to `16-9` by default. |
|
||||||
| `interval` | **Optional.** The interval for the auto-scrooling, specified in milliseconds. Defaults to `2000` (2s) |
|
| `interval` | **Optional.** The interval for the auto-scrooling, specified in milliseconds. Defaults to `2000` (2s) |
|
||||||
@@ -252,7 +252,7 @@ The `figure` shortcode accepts six parameters:
|
|||||||
|
|
||||||
<!-- prettier-ignore-start -->
|
<!-- prettier-ignore-start -->
|
||||||
| Parameter | Description |
|
| Parameter | Description |
|
||||||
| --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- |
|
||||||
| `src` | **Required.** The local path/filename or URL of the image. When providing a path and filename, the theme will attempt to locate the image using the following lookup order: Firstly, as a [page resource](https://gohugo.io/content-management/page-resources/) bundled with the page; then an asset in the `assets/` directory; then finally, a static image in the `static/` directory. |
|
| `src` | **Required.** The local path/filename or URL of the image. When providing a path and filename, the theme will attempt to locate the image using the following lookup order: Firstly, as a [page resource](https://gohugo.io/content-management/page-resources/) bundled with the page; then an asset in the `assets/` directory; then finally, a static image in the `static/` directory. |
|
||||||
| `alt` | [Alternative text description](https://moz.com/learn/seo/alt-text) for the image. |
|
| `alt` | [Alternative text description](https://moz.com/learn/seo/alt-text) for the image. |
|
||||||
| `caption` | Markdown for the image caption, which will be displayed below the image. |
|
| `caption` | Markdown for the image caption, which will be displayed below the image. |
|
||||||
@@ -594,7 +594,7 @@ When life gives you lemons, make lemonade.
|
|||||||
|
|
||||||
<!-- prettier-ignore-start -->
|
<!-- prettier-ignore-start -->
|
||||||
| Parameter | Description |
|
| Parameter | Description |
|
||||||
| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- |
|
||||||
| `limit` | **Required.** the number of recent articles to display. |
|
| `limit` | **Required.** the number of recent articles to display. |
|
||||||
| `title` | Optional title for the list, default is `Recent` |
|
| `title` | Optional title for the list, default is `Recent` |
|
||||||
| `cardView` | Optional card view enabled for the list, default is `false` |
|
| `cardView` | Optional card view enabled for the list, default is `false` |
|
||||||
@@ -810,7 +810,7 @@ Blowfish implements a sub-set of TypeIt features using a `shortcode`. Write your
|
|||||||
|
|
||||||
<!-- prettier-ignore-start -->
|
<!-- prettier-ignore-start -->
|
||||||
| Parameter | Description |
|
| Parameter | Description |
|
||||||
| ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- |
|
||||||
| `tag` | [String] `html` tag that will be used to render the strings. |
|
| `tag` | [String] `html` tag that will be used to render the strings. |
|
||||||
| `classList` | [String] List of `css` classes to apply to the `html` element. |
|
| `classList` | [String] List of `css` classes to apply to the `html` element. |
|
||||||
| `initialString` | [String] Initial string that will appear written and will be replaced. |
|
| `initialString` | [String] Initial string that will appear written and will be replaced. |
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ series_order: 8
|
|||||||
|
|
||||||
<!-- prettier-ignore-start -->
|
<!-- prettier-ignore-start -->
|
||||||
| パラメータ | 説明 |
|
| パラメータ | 説明 |
|
||||||
| ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- |
|
||||||
| `icon` | **オプション** 左端に表示するアイコン。<br>**デフォルト:** `exclamation triangle icon` (アイコンの使用方法の詳細については、[アイコンショートコード](#アイコン)をご覧ください。) |
|
| `icon` | **オプション** 左端に表示するアイコン。<br>**デフォルト:** `exclamation triangle icon` (アイコンの使用方法の詳細については、[アイコンショートコード](#アイコン)をご覧ください。) |
|
||||||
| `iconColor` | **オプション** 基本的な CSS スタイルのアイコンの色。<br>HEX値 (`#FFFFFF`) または色の名前 (`white`) のいずれかで指定できます。<br>デフォルトでは、現在のカラースキームに基づいて選択されます。 |
|
| `iconColor` | **オプション** 基本的な CSS スタイルのアイコンの色。<br>HEX値 (`#FFFFFF`) または色の名前 (`white`) のいずれかで指定できます。<br>デフォルトでは、現在のカラースキームに基づいて選択されます。 |
|
||||||
| `cardColor` | **オプション** 基本的な CSS スタイルのカードの背景色。<br>HEX値 (`#FFFFFF`) または色の名前 (`white`) のいずれかを指定できます。<br>デフォルトでは、現在のカラースキームに基づいて選択されます。 |
|
| `cardColor` | **オプション** 基本的な CSS スタイルのカードの背景色。<br>HEX値 (`#FFFFFF`) または色の名前 (`white`) のいずれかを指定できます。<br>デフォルトでは、現在のカラースキームに基づいて選択されます。 |
|
||||||
@@ -128,7 +128,7 @@ Twitter で私を[フォロー](https://twitter.com/nunocoracao)するのを忘
|
|||||||
|
|
||||||
<!-- prettier-ignore-start -->
|
<!-- prettier-ignore-start -->
|
||||||
| パラメータ | 説明 |
|
| パラメータ | 説明 |
|
||||||
| ------------- | ----------------------------------------------------------------------------------------------------------------- |
|
| --- | --- |
|
||||||
| `images` | **必須** 画像名または URL に一致する正規表現文字列。 |
|
| `images` | **必須** 画像名または URL に一致する正規表現文字列。 |
|
||||||
| `aspectRatio` | **オプション** カルーセルのアスペクト比。`16-9`、`21-9`、または `32-9` のいずれか。デフォルトでは `16-9` に設定されています。 |
|
| `aspectRatio` | **オプション** カルーセルのアスペクト比。`16-9`、`21-9`、または `32-9` のいずれか。デフォルトでは `16-9` に設定されています。 |
|
||||||
| `interval` | **オプション** 自動スクロールの間隔。ミリ秒単位で指定します。デフォルトは `2000` (2秒) です。 |
|
| `interval` | **オプション** 自動スクロールの間隔。ミリ秒単位で指定します。デフォルトは `2000` (2秒) です。 |
|
||||||
@@ -251,7 +251,7 @@ Blowfish には、コンテンツに画像を追加するための `figure` シ
|
|||||||
|
|
||||||
<!-- prettier-ignore-start -->
|
<!-- prettier-ignore-start -->
|
||||||
| パラメータ | 説明 |
|
| パラメータ | 説明 |
|
||||||
| --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- |
|
||||||
| `src` | **必須** 画像のローカルパス/ファイル名または URL。パスとファイル名を指定すると、テーマは次の優先順位を使用して画像の特定を試みます。まず、ページにバンドルされた[ページリソース](https://gohugo.io/content-management/page-resources/)として、次に `assets/` ディレクトリ内のアセット、最後に `static/` ディレクトリ内の静的画像。 |
|
| `src` | **必須** 画像のローカルパス/ファイル名または URL。パスとファイル名を指定すると、テーマは次の優先順位を使用して画像の特定を試みます。まず、ページにバンドルされた[ページリソース](https://gohugo.io/content-management/page-resources/)として、次に `assets/` ディレクトリ内のアセット、最後に `static/` ディレクトリ内の静的画像。 |
|
||||||
| `alt` | 画像の[代替テキスト](https://moz.com/learn/seo/alt-text)。 |
|
| `alt` | 画像の[代替テキスト](https://moz.com/learn/seo/alt-text)。 |
|
||||||
| `caption` | 画像の下に表示される画像キャプションの Markdown。 |
|
| `caption` | 画像の下に表示される画像キャプションの Markdown。 |
|
||||||
@@ -591,7 +591,7 @@ Blowfish も、標準の Markdown 構文を使用して含まれる画像の自
|
|||||||
|
|
||||||
<!-- prettier-ignore-start -->
|
<!-- prettier-ignore-start -->
|
||||||
| パラメータ | 説明 |
|
| パラメータ | 説明 |
|
||||||
| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- |
|
||||||
| `limit` | **必須** 表示する最近の記事の数。 |
|
| `limit` | **必須** 表示する最近の記事の数。 |
|
||||||
| `title` | オプションのリストのタイトル。デフォルトは `Recent` です。 |
|
| `title` | オプションのリストのタイトル。デフォルトは `Recent` です。 |
|
||||||
| `cardView` | オプションのカードビュー。リストに対して有効化されます。デフォルトは `false` です。 |
|
| `cardView` | オプションのカードビュー。リストに対して有効化されます。デフォルトは `false` です。 |
|
||||||
@@ -806,7 +806,7 @@ Blowfish は、`shortcode` を使用して TypeIt 機能のサブセットを実
|
|||||||
|
|
||||||
<!-- prettier-ignore-start -->
|
<!-- prettier-ignore-start -->
|
||||||
| パラメータ | 説明 |
|
| パラメータ | 説明 |
|
||||||
| ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- |
|
||||||
| `tag` | [文字列] 文字列のレンダリングに使用される `html` タグ。 |
|
| `tag` | [文字列] 文字列のレンダリングに使用される `html` タグ。 |
|
||||||
| `classList` | [文字列] `html` 要素に適用する `css` クラスのリスト。 |
|
| `classList` | [文字列] `html` 要素に適用する `css` クラスのリスト。 |
|
||||||
| `initialString` | [文字列] 書き込まれて表示され、置き換えられる初期文字列。 |
|
| `initialString` | [文字列] 書き込まれて表示され、置き換えられる初期文字列。 |
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ In addition to all the [default Hugo shortcodes](https://gohugo.io/content-manag
|
|||||||
|
|
||||||
<!-- prettier-ignore-start -->
|
<!-- prettier-ignore-start -->
|
||||||
| Parameter | Description |
|
| Parameter | Description |
|
||||||
| ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- |
|
||||||
| `icon` | **Optional.** the icon to display on the left side.<br>**Default:** `triangle-exclamation` (Check out the [icon shortcode](#icon) for more details on using icons.) |
|
| `icon` | **Optional.** the icon to display on the left side.<br>**Default:** `triangle-exclamation` (Check out the [icon shortcode](#icon) for more details on using icons.) |
|
||||||
| `iconColor` | **Optional.** the color for the icon in basic CSS style.<br>Can be either hex values (`#FFFFFF`) or color names (`white`)<br>By default chosen based on the current color theme . |
|
| `iconColor` | **Optional.** the color for the icon in basic CSS style.<br>Can be either hex values (`#FFFFFF`) or color names (`white`)<br>By default chosen based on the current color theme . |
|
||||||
| `cardColor` | **Optional.** the color for the card background in basic CSS style.<br>Can be either hex values (`#FFFFFF`) or color names (`white`)<br>By default chosen based on the current color theme . |
|
| `cardColor` | **Optional.** the color for the card background in basic CSS style.<br>Can be either hex values (`#FFFFFF`) or color names (`white`)<br>By default chosen based on the current color theme . |
|
||||||
@@ -124,13 +124,13 @@ Call to action
|
|||||||
|
|
||||||
## Carousel
|
## Carousel
|
||||||
|
|
||||||
`carousel` is used to showcase multiple images in an interactive and visually appealing way. This allows a user to slide through multiple images while only taking up the vertical space of a single one. All images are displayed using the full width of the parent component and using one of the predefined aspect ratios of `16:9`, `21:9` or `32:9`.
|
`carousel` is used to showcase multiple images in an interactive and visually appealing way. This allows a user to slide through multiple images while only taking up the vertical space of a single one. All images are displayed using the full width of the parent component and the aspect ratio you set with a default of `16:9`.
|
||||||
|
|
||||||
<!-- prettier-ignore-start -->
|
<!-- prettier-ignore-start -->
|
||||||
| Parameter | Description |
|
| Parameter | Description |
|
||||||
| ------------- | ----------------------------------------------------------------------------------------------------------------- |
|
| --- | --- |
|
||||||
| `images` | **Required.** A regex string to match image names or URLs. |
|
| `images` | **Required.** A regex string to match image names or URLs. |
|
||||||
| `aspectRatio` | **Optional.** The aspect ratio for the carousel. Either `16-9`, `21-9` or `32-9`. It is set to `16-9` by default. |
|
| `aspectRatio` | **Optional.** The aspect ratio for the carousel. It is set to `16-9` by default. |
|
||||||
| `interval` | **Optional.** The interval for the auto-scrooling, specified in milliseconds. Defaults to `2000` (2s) |
|
| `interval` | **Optional.** The interval for the auto-scrooling, specified in milliseconds. Defaults to `2000` (2s) |
|
||||||
<!-- prettier-ignore-end -->
|
<!-- prettier-ignore-end -->
|
||||||
|
|
||||||
@@ -253,7 +253,7 @@ The `figure` shortcode accepts six parameters:
|
|||||||
|
|
||||||
<!-- prettier-ignore-start -->
|
<!-- prettier-ignore-start -->
|
||||||
| Parameter | Description |
|
| Parameter | Description |
|
||||||
| --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- |
|
||||||
| `src` | **Required.** The local path/filename or URL of the image. When providing a path and filename, the theme will attempt to locate the image using the following lookup order: Firstly, as a [page resource](https://gohugo.io/content-management/page-resources/) bundled with the page; then an asset in the `assets/` directory; then finally, a static image in the `static/` directory. |
|
| `src` | **Required.** The local path/filename or URL of the image. When providing a path and filename, the theme will attempt to locate the image using the following lookup order: Firstly, as a [page resource](https://gohugo.io/content-management/page-resources/) bundled with the page; then an asset in the `assets/` directory; then finally, a static image in the `static/` directory. |
|
||||||
| `alt` | [Alternative text description](https://moz.com/learn/seo/alt-text) for the image. |
|
| `alt` | [Alternative text description](https://moz.com/learn/seo/alt-text) for the image. |
|
||||||
| `caption` | Markdown for the image caption, which will be displayed below the image. |
|
| `caption` | Markdown for the image caption, which will be displayed below the image. |
|
||||||
@@ -597,7 +597,7 @@ When life gives you lemons, make lemonade.
|
|||||||
|
|
||||||
<!-- prettier-ignore-start -->
|
<!-- prettier-ignore-start -->
|
||||||
| Parameter | Description |
|
| Parameter | Description |
|
||||||
| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- |
|
||||||
| `limit` | **Required.** the number of recent articles to display. |
|
| `limit` | **Required.** the number of recent articles to display. |
|
||||||
| `title` | Optional title for the list, default is `Recent` |
|
| `title` | Optional title for the list, default is `Recent` |
|
||||||
| `cardView` | Optional card view enabled for the list, default is `false` |
|
| `cardView` | Optional card view enabled for the list, default is `false` |
|
||||||
@@ -820,7 +820,7 @@ Blowfish implements a sub-set of TypeIt features using a `shortcode`. Write your
|
|||||||
|
|
||||||
<!-- prettier-ignore-start -->
|
<!-- prettier-ignore-start -->
|
||||||
| Parameter | Description |
|
| Parameter | Description |
|
||||||
| ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- |
|
||||||
| `tag` | [String] `html` tag that will be used to render the strings. |
|
| `tag` | [String] `html` tag that will be used to render the strings. |
|
||||||
| `classList` | [String] List of `css` classes to apply to the `html` element. |
|
| `classList` | [String] List of `css` classes to apply to the `html` element. |
|
||||||
| `initialString` | [String] Initial string that will appear written and will be replaced. |
|
| `initialString` | [String] Initial string that will appear written and will be replaced. |
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ series_order: 8
|
|||||||
|
|
||||||
<!-- prettier-ignore-start -->
|
<!-- prettier-ignore-start -->
|
||||||
| 参数 | 功能 |
|
| 参数 | 功能 |
|
||||||
| ----------- | -------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- |
|
||||||
| `icon` | **可选** 显示在左侧的图标。<br>**默认:** `exclaimation triangle icon` (查看[图标简码](#图标),了解有关使用图标的更多详细信息。) |
|
| `icon` | **可选** 显示在左侧的图标。<br>**默认:** `exclaimation triangle icon` (查看[图标简码](#图标),了解有关使用图标的更多详细信息。) |
|
||||||
| `iconColor` | **可选** 基本 CSS 样式中图标的颜色。<br>可以是十六进制值 (`#FFFFFF`) 或颜色名称 (`white`)<br>默认情况下由当前配色方案决定。 |
|
| `iconColor` | **可选** 基本 CSS 样式中图标的颜色。<br>可以是十六进制值 (`#FFFFFF`) 或颜色名称 (`white`)<br>默认情况下由当前配色方案决定。 |
|
||||||
| `cardColor` | **可选** 基本 CSS 样式中卡片背景的颜色。<br>可以是十六进制值 (`#FFFFFF`) 或颜色名称 (`white`)<br>默认情况下由当前配色方案决定。 |
|
| `cardColor` | **可选** 基本 CSS 样式中卡片背景的颜色。<br>可以是十六进制值 (`#FFFFFF`) 或颜色名称 (`white`)<br>默认情况下由当前配色方案决定。 |
|
||||||
@@ -254,7 +254,7 @@ Blowfish 包含一个 `figure` 简码,用于将图像添加到内容中。该
|
|||||||
|
|
||||||
<!-- prettier-ignore-start -->
|
<!-- prettier-ignore-start -->
|
||||||
| 参数 | 功能 |
|
| 参数 | 功能 |
|
||||||
| --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- |
|
||||||
| `src` | **必填** 图像的本地路径/文件名或 URL。当提供路径和文件名时,主题将尝试使用以下查找顺序来查找图像:首先,作为与页面绑定的[页面资源](https://gohugo.io/content-management/page-resources/);然后是 `assets/` 目录中的文件;最后是,`static/`目录中的文件。 |
|
| `src` | **必填** 图像的本地路径/文件名或 URL。当提供路径和文件名时,主题将尝试使用以下查找顺序来查找图像:首先,作为与页面绑定的[页面资源](https://gohugo.io/content-management/page-resources/);然后是 `assets/` 目录中的文件;最后是,`static/`目录中的文件。 |
|
||||||
| `alt` | 图像的[替代文本描述](https://moz.com/learn/seo/alt-text)。 |
|
| `alt` | 图像的[替代文本描述](https://moz.com/learn/seo/alt-text)。 |
|
||||||
| `caption` | Markdown 格式的图像标题,将显示在图像下方。 |
|
| `caption` | Markdown 格式的图像标题,将显示在图像下方。 |
|
||||||
@@ -601,7 +601,7 @@ When life gives you lemons, make lemonade.
|
|||||||
|
|
||||||
<!-- prettier-ignore-start -->
|
<!-- prettier-ignore-start -->
|
||||||
| 参数 | 功能 |
|
| 参数 | 功能 |
|
||||||
| ---------- | ------------------------------------------------------------------------------------------------------ |
|
| --- | --- |
|
||||||
| `limit` | **必填** 要显示的最近文章数量。 |
|
| `limit` | **必填** 要显示的最近文章数量。 |
|
||||||
| `title` | **可选** 列表标题,默认为 `Recent` |
|
| `title` | **可选** 列表标题,默认为 `Recent` |
|
||||||
| `cardView` | **可选** 列表启用卡片视图,默认为 `false` |
|
| `cardView` | **可选** 列表启用卡片视图,默认为 `false` |
|
||||||
|
|||||||
@@ -275,7 +275,7 @@ The only thing missing is to ship your site. I will be using [Firebase](https://
|
|||||||
|
|
||||||
Let’s install firebase’s CLI - if not on Mac check [install instructions on Firebase](https://firebase.google.com/docs/cli).
|
Let’s install firebase’s CLI - if not on Mac check [install instructions on Firebase](https://firebase.google.com/docs/cli).
|
||||||
```bash
|
```bash
|
||||||
brew install firebase
|
brew install firebase-cli
|
||||||
```
|
```
|
||||||
|
|
||||||
Now log in and init firebase hosting for the project.
|
Now log in and init firebase hosting for the project.
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ cascade:
|
|||||||
showEdit: false
|
showEdit: false
|
||||||
showSummary: false
|
showSummary: false
|
||||||
hideFeatureImage: true
|
hideFeatureImage: true
|
||||||
|
invertPagination: true
|
||||||
---
|
---
|
||||||
{{< lead >}}
|
{{< lead >}}
|
||||||
Blowfish dà vita ai tuoi contenuti. :heart_eyes:
|
Blowfish dà vita ai tuoi contenuti. :heart_eyes:
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ cascade:
|
|||||||
showEdit: false
|
showEdit: false
|
||||||
showSummary: false
|
showSummary: false
|
||||||
hideFeatureImage: true
|
hideFeatureImage: true
|
||||||
|
invertPagination: true
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< lead >}}
|
{{< lead >}}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ cascade:
|
|||||||
showEdit: false
|
showEdit: false
|
||||||
showSummary: false
|
showSummary: false
|
||||||
hideFeatureImage: true
|
hideFeatureImage: true
|
||||||
|
invertPagination: true
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< lead >}}
|
{{< lead >}}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ cascade:
|
|||||||
showEdit: false
|
showEdit: false
|
||||||
showSummary: false
|
showSummary: false
|
||||||
hideFeatureImage: true
|
hideFeatureImage: true
|
||||||
|
invertPagination: true
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< lead >}}
|
{{< lead >}}
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ The examples below are a small selection taken from the [official Mermaid docs](
|
|||||||
|
|
||||||
## Flowchart
|
## Flowchart
|
||||||
|
|
||||||
<div style="background-color:white; padding: 20px">
|
|
||||||
{{< mermaid >}}
|
{{< mermaid >}}
|
||||||
graph TD
|
graph TD
|
||||||
A[Christmas] -->|Get money| B(Go shopping)
|
A[Christmas] -->|Get money| B(Go shopping)
|
||||||
@@ -32,11 +31,9 @@ F
|
|||||||
G
|
G
|
||||||
end
|
end
|
||||||
{{< /mermaid >}}
|
{{< /mermaid >}}
|
||||||
</div>
|
|
||||||
|
|
||||||
## Sequence diagram
|
## Sequence diagram
|
||||||
|
|
||||||
<div style="background-color:white; padding: 20px">
|
|
||||||
{{< mermaid >}}
|
{{< mermaid >}}
|
||||||
sequenceDiagram
|
sequenceDiagram
|
||||||
autonumber
|
autonumber
|
||||||
@@ -54,11 +51,9 @@ loop Every minute
|
|||||||
John-->Alice: Great!
|
John-->Alice: Great!
|
||||||
end
|
end
|
||||||
{{< /mermaid >}}
|
{{< /mermaid >}}
|
||||||
</div>
|
|
||||||
|
|
||||||
## Class diagram
|
## Class diagram
|
||||||
|
|
||||||
<div style="background-color:white; padding: 20px">
|
|
||||||
{{< mermaid >}}
|
{{< mermaid >}}
|
||||||
classDiagram
|
classDiagram
|
||||||
Animal "1" <|-- Duck
|
Animal "1" <|-- Duck
|
||||||
@@ -82,11 +77,9 @@ class Zebra{
|
|||||||
+run()
|
+run()
|
||||||
}
|
}
|
||||||
{{< /mermaid >}}
|
{{< /mermaid >}}
|
||||||
</div>
|
|
||||||
|
|
||||||
## Entity relationship diagram
|
## Entity relationship diagram
|
||||||
|
|
||||||
<div style="background-color:white; padding: 20px">
|
|
||||||
{{< mermaid >}}
|
{{< mermaid >}}
|
||||||
erDiagram
|
erDiagram
|
||||||
CUSTOMER }|..|{ DELIVERY-ADDRESS : has
|
CUSTOMER }|..|{ DELIVERY-ADDRESS : has
|
||||||
@@ -98,5 +91,3 @@ ORDER ||--|{ ORDER-ITEM : includes
|
|||||||
PRODUCT-CATEGORY ||--|{ PRODUCT : contains
|
PRODUCT-CATEGORY ||--|{ PRODUCT : contains
|
||||||
PRODUCT ||--o{ ORDER-ITEM : "ordered in"
|
PRODUCT ||--o{ ORDER-ITEM : "ordered in"
|
||||||
{{< /mermaid >}}
|
{{< /mermaid >}}
|
||||||
</div>
|
|
||||||
|
|
||||||
@@ -15,7 +15,6 @@ Mermaid 図は `mermaid` ショートコードを使うことで Blowfish でサ
|
|||||||
|
|
||||||
## フローチャート
|
## フローチャート
|
||||||
|
|
||||||
<div style="background-color:white; padding: 20px">
|
|
||||||
{{< mermaid >}}
|
{{< mermaid >}}
|
||||||
graph TD
|
graph TD
|
||||||
A[クリスマス] -->|収入| B(買い物にいく)
|
A[クリスマス] -->|収入| B(買い物にいく)
|
||||||
@@ -32,11 +31,9 @@ F
|
|||||||
G
|
G
|
||||||
end
|
end
|
||||||
{{< /mermaid >}}
|
{{< /mermaid >}}
|
||||||
</div>
|
|
||||||
|
|
||||||
## 順序図
|
## 順序図
|
||||||
|
|
||||||
<div style="background-color:white; padding: 20px">
|
|
||||||
{{< mermaid >}}
|
{{< mermaid >}}
|
||||||
sequenceDiagram
|
sequenceDiagram
|
||||||
autonumber
|
autonumber
|
||||||
@@ -54,11 +51,9 @@ loop 毎分
|
|||||||
ジョン-->アリス: すばらしい!
|
ジョン-->アリス: すばらしい!
|
||||||
end
|
end
|
||||||
{{< /mermaid >}}
|
{{< /mermaid >}}
|
||||||
</div>
|
|
||||||
|
|
||||||
## クラス図
|
## クラス図
|
||||||
|
|
||||||
<div style="background-color:white; padding: 20px">
|
|
||||||
{{< mermaid >}}
|
{{< mermaid >}}
|
||||||
classDiagram
|
classDiagram
|
||||||
Animal "1" <|-- Duck
|
Animal "1" <|-- Duck
|
||||||
@@ -82,11 +77,9 @@ class Zebra{
|
|||||||
+run()
|
+run()
|
||||||
}
|
}
|
||||||
{{< /mermaid >}}
|
{{< /mermaid >}}
|
||||||
</div>
|
|
||||||
|
|
||||||
## 主従関係図
|
## 主従関係図
|
||||||
|
|
||||||
<div style="background-color:white; padding: 20px">
|
|
||||||
{{< mermaid >}}
|
{{< mermaid >}}
|
||||||
erDiagram
|
erDiagram
|
||||||
CUSTOMER }|..|{ DELIVERY-ADDRESS : has
|
CUSTOMER }|..|{ DELIVERY-ADDRESS : has
|
||||||
@@ -98,5 +91,3 @@ ORDER ||--|{ ORDER-ITEM : includes
|
|||||||
PRODUCT-CATEGORY ||--|{ PRODUCT : contains
|
PRODUCT-CATEGORY ||--|{ PRODUCT : contains
|
||||||
PRODUCT ||--o{ ORDER-ITEM : "ordered in"
|
PRODUCT ||--o{ ORDER-ITEM : "ordered in"
|
||||||
{{< /mermaid >}}
|
{{< /mermaid >}}
|
||||||
</div>
|
|
||||||
|
|
||||||
@@ -15,7 +15,6 @@ The examples below are a small selection taken from the [official Mermaid docs](
|
|||||||
|
|
||||||
## Flowchart
|
## Flowchart
|
||||||
|
|
||||||
<div style="background-color:white; padding: 20px">
|
|
||||||
{{< mermaid >}}
|
{{< mermaid >}}
|
||||||
graph TD
|
graph TD
|
||||||
A[Christmas] -->|Get money| B(Go shopping)
|
A[Christmas] -->|Get money| B(Go shopping)
|
||||||
@@ -32,11 +31,9 @@ F
|
|||||||
G
|
G
|
||||||
end
|
end
|
||||||
{{< /mermaid >}}
|
{{< /mermaid >}}
|
||||||
</div>
|
|
||||||
|
|
||||||
## Sequence diagram
|
## Sequence diagram
|
||||||
|
|
||||||
<div style="background-color:white; padding: 20px">
|
|
||||||
{{< mermaid >}}
|
{{< mermaid >}}
|
||||||
sequenceDiagram
|
sequenceDiagram
|
||||||
autonumber
|
autonumber
|
||||||
@@ -54,11 +51,9 @@ loop Every minute
|
|||||||
John-->Alice: Great!
|
John-->Alice: Great!
|
||||||
end
|
end
|
||||||
{{< /mermaid >}}
|
{{< /mermaid >}}
|
||||||
</div>
|
|
||||||
|
|
||||||
## Class diagram
|
## Class diagram
|
||||||
|
|
||||||
<div style="background-color:white; padding: 20px">
|
|
||||||
{{< mermaid >}}
|
{{< mermaid >}}
|
||||||
classDiagram
|
classDiagram
|
||||||
Animal "1" <|-- Duck
|
Animal "1" <|-- Duck
|
||||||
@@ -82,11 +77,9 @@ class Zebra{
|
|||||||
+run()
|
+run()
|
||||||
}
|
}
|
||||||
{{< /mermaid >}}
|
{{< /mermaid >}}
|
||||||
</div>
|
|
||||||
|
|
||||||
## Entity relationship diagram
|
## Entity relationship diagram
|
||||||
|
|
||||||
<div style="background-color:white; padding: 20px">
|
|
||||||
{{< mermaid >}}
|
{{< mermaid >}}
|
||||||
erDiagram
|
erDiagram
|
||||||
CUSTOMER }|..|{ DELIVERY-ADDRESS : has
|
CUSTOMER }|..|{ DELIVERY-ADDRESS : has
|
||||||
@@ -98,5 +91,3 @@ ORDER ||--|{ ORDER-ITEM : includes
|
|||||||
PRODUCT-CATEGORY ||--|{ PRODUCT : contains
|
PRODUCT-CATEGORY ||--|{ PRODUCT : contains
|
||||||
PRODUCT ||--o{ ORDER-ITEM : "ordered in"
|
PRODUCT ||--o{ ORDER-ITEM : "ordered in"
|
||||||
{{< /mermaid >}}
|
{{< /mermaid >}}
|
||||||
</div>
|
|
||||||
|
|
||||||
@@ -15,7 +15,6 @@ Blowfish 使用 `mermaid` 简码可以调用。Blowfish 会根据配置的 `colo
|
|||||||
|
|
||||||
## 流程图
|
## 流程图
|
||||||
|
|
||||||
<div style="background-color:white; padding: 20px">
|
|
||||||
{{< mermaid >}}
|
{{< mermaid >}}
|
||||||
graph TD
|
graph TD
|
||||||
A[Christmas] -->|Get money| B(Go shopping)
|
A[Christmas] -->|Get money| B(Go shopping)
|
||||||
@@ -32,11 +31,9 @@ F
|
|||||||
G
|
G
|
||||||
end
|
end
|
||||||
{{< /mermaid >}}
|
{{< /mermaid >}}
|
||||||
</div>
|
|
||||||
|
|
||||||
## 时序图
|
## 时序图
|
||||||
|
|
||||||
<div style="background-color:white; padding: 20px">
|
|
||||||
{{< mermaid >}}
|
{{< mermaid >}}
|
||||||
sequenceDiagram
|
sequenceDiagram
|
||||||
autonumber
|
autonumber
|
||||||
@@ -54,11 +51,9 @@ loop Every minute
|
|||||||
John-->Alice: Great!
|
John-->Alice: Great!
|
||||||
end
|
end
|
||||||
{{< /mermaid >}}
|
{{< /mermaid >}}
|
||||||
</div>
|
|
||||||
|
|
||||||
## 类图
|
## 类图
|
||||||
|
|
||||||
<div style="background-color:white; padding: 20px">
|
|
||||||
{{< mermaid >}}
|
{{< mermaid >}}
|
||||||
classDiagram
|
classDiagram
|
||||||
Animal "1" <|-- Duck
|
Animal "1" <|-- Duck
|
||||||
@@ -82,11 +77,9 @@ class Zebra{
|
|||||||
+run()
|
+run()
|
||||||
}
|
}
|
||||||
{{< /mermaid >}}
|
{{< /mermaid >}}
|
||||||
</div>
|
|
||||||
|
|
||||||
## 实体关系图
|
## 实体关系图
|
||||||
|
|
||||||
<div style="background-color:white; padding: 20px">
|
|
||||||
{{< mermaid >}}
|
{{< mermaid >}}
|
||||||
erDiagram
|
erDiagram
|
||||||
CUSTOMER }|..|{ DELIVERY-ADDRESS : has
|
CUSTOMER }|..|{ DELIVERY-ADDRESS : has
|
||||||
@@ -98,5 +91,3 @@ ORDER ||--|{ ORDER-ITEM : includes
|
|||||||
PRODUCT-CATEGORY ||--|{ PRODUCT : contains
|
PRODUCT-CATEGORY ||--|{ PRODUCT : contains
|
||||||
PRODUCT ||--o{ ORDER-ITEM : "ordered in"
|
PRODUCT ||--o{ ORDER-ITEM : "ordered in"
|
||||||
{{< /mermaid >}}
|
{{< /mermaid >}}
|
||||||
</div>
|
|
||||||
|
|
||||||
@@ -27,6 +27,8 @@ The full list of built-in icons and their corresponding names can referenced bel
|
|||||||
| bug | {{< icon bug >}} |
|
| bug | {{< icon bug >}} |
|
||||||
| check | {{< icon check >}} |
|
| check | {{< icon check >}} |
|
||||||
| circle-info | {{< icon circle-info >}} |
|
| circle-info | {{< icon circle-info >}} |
|
||||||
|
| cloud | {{< icon cloud >}} |
|
||||||
|
| cloud-moon | {{< icon cloud-moon >}} |
|
||||||
| code | {{< icon code>}} |
|
| code | {{< icon code>}} |
|
||||||
| codeberg | {{< icon codeberg >}} |
|
| codeberg | {{< icon codeberg >}} |
|
||||||
| codepen | {{< icon codepen >}} |
|
| codepen | {{< icon codepen >}} |
|
||||||
@@ -42,6 +44,7 @@ The full list of built-in icons and their corresponding names can referenced bel
|
|||||||
| expand | {{< icon expand >}} |
|
| expand | {{< icon expand >}} |
|
||||||
| eye | {{< icon eye >}} |
|
| eye | {{< icon eye >}} |
|
||||||
| facebook | {{< icon facebook >}} |
|
| facebook | {{< icon facebook >}} |
|
||||||
|
| fediverse | {{< icon fediverse >}} |
|
||||||
| fire | {{< icon fire >}} |
|
| fire | {{< icon fire >}} |
|
||||||
| flickr | {{< icon flickr >}} |
|
| flickr | {{< icon flickr >}} |
|
||||||
| fork | {{< icon fork >}} |
|
| fork | {{< icon fork >}} |
|
||||||
@@ -62,6 +65,7 @@ The full list of built-in icons and their corresponding names can referenced bel
|
|||||||
| instagram | {{< icon instagram >}} |
|
| instagram | {{< icon instagram >}} |
|
||||||
| itch-io | {{< icon itch-io >}} |
|
| itch-io | {{< icon itch-io >}} |
|
||||||
| keybase | {{< icon keybase >}} |
|
| keybase | {{< icon keybase >}} |
|
||||||
|
| keyoxide | {{< icon keyoxide >}} |
|
||||||
| kickstarter | {{< icon kickstarter >}} |
|
| kickstarter | {{< icon kickstarter >}} |
|
||||||
| ko-fi | {{< icon ko-fi >}} |
|
| ko-fi | {{< icon ko-fi >}} |
|
||||||
| language | {{< icon language >}} |
|
| language | {{< icon language >}} |
|
||||||
@@ -74,6 +78,7 @@ The full list of built-in icons and their corresponding names can referenced bel
|
|||||||
| location-dot | {{< icon location-dot >}} |
|
| location-dot | {{< icon location-dot >}} |
|
||||||
| lock | {{< icon lock >}} |
|
| lock | {{< icon lock >}} |
|
||||||
| mastodon | {{< icon mastodon >}} |
|
| mastodon | {{< icon mastodon >}} |
|
||||||
|
| matrix | {{< icon matrix >}} |
|
||||||
| medium | {{< icon medium >}} |
|
| medium | {{< icon medium >}} |
|
||||||
| microsoft | {{< icon microsoft >}} |
|
| microsoft | {{< icon microsoft >}} |
|
||||||
| moon | {{< icon moon >}} |
|
| moon | {{< icon moon >}} |
|
||||||
@@ -96,6 +101,7 @@ The full list of built-in icons and their corresponding names can referenced bel
|
|||||||
| scale-balanced | {{< icon scale-balanced >}} |
|
| scale-balanced | {{< icon scale-balanced >}} |
|
||||||
| search | {{< icon search >}} |
|
| search | {{< icon search >}} |
|
||||||
| shield | {{< icon shield >}} |
|
| shield | {{< icon shield >}} |
|
||||||
|
| signal | {{< icon signal >}} |
|
||||||
| skull-crossbones | {{< icon skull-crossbones >}} |
|
| skull-crossbones | {{< icon skull-crossbones >}} |
|
||||||
| slack | {{< icon slack >}} |
|
| slack | {{< icon slack >}} |
|
||||||
| snapchat | {{< icon snapchat >}} |
|
| snapchat | {{< icon snapchat >}} |
|
||||||
|
|||||||
@@ -27,6 +27,8 @@ Blowfish はいくつもの [FontAwesome 6](https://fontawesome.com/icons) の
|
|||||||
| bug | {{< icon bug >}} |
|
| bug | {{< icon bug >}} |
|
||||||
| check | {{< icon check >}} |
|
| check | {{< icon check >}} |
|
||||||
| circle-info | {{< icon circle-info >}} |
|
| circle-info | {{< icon circle-info >}} |
|
||||||
|
| cloud | {{< icon cloud >}} |
|
||||||
|
| cloud-moon | {{< icon cloud-moon >}} |
|
||||||
| code | {{< icon code>}} |
|
| code | {{< icon code>}} |
|
||||||
| codeberg | {{< icon codeberg >}} |
|
| codeberg | {{< icon codeberg >}} |
|
||||||
| codepen | {{< icon codepen >}} |
|
| codepen | {{< icon codepen >}} |
|
||||||
@@ -42,6 +44,7 @@ Blowfish はいくつもの [FontAwesome 6](https://fontawesome.com/icons) の
|
|||||||
| expand | {{< icon expand >}} |
|
| expand | {{< icon expand >}} |
|
||||||
| eye | {{< icon eye >}} |
|
| eye | {{< icon eye >}} |
|
||||||
| facebook | {{< icon facebook >}} |
|
| facebook | {{< icon facebook >}} |
|
||||||
|
| fediverse | {{< icon fediverse >}} |
|
||||||
| fire | {{< icon fire >}} |
|
| fire | {{< icon fire >}} |
|
||||||
| flickr | {{< icon flickr >}} |
|
| flickr | {{< icon flickr >}} |
|
||||||
| fork | {{< icon fork >}} |
|
| fork | {{< icon fork >}} |
|
||||||
@@ -62,6 +65,7 @@ Blowfish はいくつもの [FontAwesome 6](https://fontawesome.com/icons) の
|
|||||||
| instagram | {{< icon instagram >}} |
|
| instagram | {{< icon instagram >}} |
|
||||||
| itch-io | {{< icon itch-io >}} |
|
| itch-io | {{< icon itch-io >}} |
|
||||||
| keybase | {{< icon keybase >}} |
|
| keybase | {{< icon keybase >}} |
|
||||||
|
| keyoxide | {{< icon keyoxide >}} |
|
||||||
| kickstarter | {{< icon kickstarter >}} |
|
| kickstarter | {{< icon kickstarter >}} |
|
||||||
| ko-fi | {{< icon ko-fi >}} |
|
| ko-fi | {{< icon ko-fi >}} |
|
||||||
| language | {{< icon language >}} |
|
| language | {{< icon language >}} |
|
||||||
@@ -74,6 +78,7 @@ Blowfish はいくつもの [FontAwesome 6](https://fontawesome.com/icons) の
|
|||||||
| location-dot | {{< icon location-dot >}} |
|
| location-dot | {{< icon location-dot >}} |
|
||||||
| lock | {{< icon lock >}} |
|
| lock | {{< icon lock >}} |
|
||||||
| mastodon | {{< icon mastodon >}} |
|
| mastodon | {{< icon mastodon >}} |
|
||||||
|
| matrix | {{< icon matrix >}} |
|
||||||
| medium | {{< icon medium >}} |
|
| medium | {{< icon medium >}} |
|
||||||
| microsoft | {{< icon microsoft >}} |
|
| microsoft | {{< icon microsoft >}} |
|
||||||
| moon | {{< icon moon >}} |
|
| moon | {{< icon moon >}} |
|
||||||
@@ -96,6 +101,7 @@ Blowfish はいくつもの [FontAwesome 6](https://fontawesome.com/icons) の
|
|||||||
| scale-balanced | {{< icon scale-balanced >}} |
|
| scale-balanced | {{< icon scale-balanced >}} |
|
||||||
| search | {{< icon search >}} |
|
| search | {{< icon search >}} |
|
||||||
| shield | {{< icon shield >}} |
|
| shield | {{< icon shield >}} |
|
||||||
|
| signal | {{< icon signal >}} |
|
||||||
| skull-crossbones | {{< icon skull-crossbones >}} |
|
| skull-crossbones | {{< icon skull-crossbones >}} |
|
||||||
| slack | {{< icon slack >}} |
|
| slack | {{< icon slack >}} |
|
||||||
| snapchat | {{< icon snapchat >}} |
|
| snapchat | {{< icon snapchat >}} |
|
||||||
@@ -117,6 +123,7 @@ Blowfish はいくつもの [FontAwesome 6](https://fontawesome.com/icons) の
|
|||||||
| twitter | {{< icon twitter >}} |
|
| twitter | {{< icon twitter >}} |
|
||||||
| wand-magic-sparkles | {{< icon wand-magic-sparkles >}} |
|
| wand-magic-sparkles | {{< icon wand-magic-sparkles >}} |
|
||||||
| whatsapp | {{< icon whatsapp >}} |
|
| whatsapp | {{< icon whatsapp >}} |
|
||||||
|
| worktree | {{< icon worktree >}} |
|
||||||
| x-twitter | {{< icon x-twitter >}} |
|
| x-twitter | {{< icon x-twitter >}} |
|
||||||
| xing | {{< icon xing >}} |
|
| xing | {{< icon xing >}} |
|
||||||
| xmark | {{< icon xmark >}} |
|
| xmark | {{< icon xmark >}} |
|
||||||
|
|||||||
@@ -27,6 +27,8 @@ The full list of built-in icons and their corresponding names can referenced bel
|
|||||||
| bug | {{< icon bug >}} |
|
| bug | {{< icon bug >}} |
|
||||||
| check | {{< icon check >}} |
|
| check | {{< icon check >}} |
|
||||||
| circle-info | {{< icon circle-info >}} |
|
| circle-info | {{< icon circle-info >}} |
|
||||||
|
| cloud | {{< icon cloud >}} |
|
||||||
|
| cloud-moon | {{< icon cloud-moon >}} |
|
||||||
| code | {{< icon code>}} |
|
| code | {{< icon code>}} |
|
||||||
| codeberg | {{< icon codeberg >}} |
|
| codeberg | {{< icon codeberg >}} |
|
||||||
| codepen | {{< icon codepen >}} |
|
| codepen | {{< icon codepen >}} |
|
||||||
|
|||||||
@@ -27,6 +27,8 @@ Blowfish 内置了许多 [FontAwesome 6](https://fontawesome.com/icons) 中的
|
|||||||
| bug | {{< icon bug >}} |
|
| bug | {{< icon bug >}} |
|
||||||
| check | {{< icon check >}} |
|
| check | {{< icon check >}} |
|
||||||
| circle-info | {{< icon circle-info >}} |
|
| circle-info | {{< icon circle-info >}} |
|
||||||
|
| cloud | {{< icon cloud >}} |
|
||||||
|
| cloud-moon | {{< icon cloud-moon >}} |
|
||||||
| code | {{< icon code>}} |
|
| code | {{< icon code>}} |
|
||||||
| codeberg | {{< icon codeberg >}} |
|
| codeberg | {{< icon codeberg >}} |
|
||||||
| codepen | {{< icon codepen >}} |
|
| codepen | {{< icon codepen >}} |
|
||||||
@@ -42,6 +44,7 @@ Blowfish 内置了许多 [FontAwesome 6](https://fontawesome.com/icons) 中的
|
|||||||
| expand | {{< icon expand >}} |
|
| expand | {{< icon expand >}} |
|
||||||
| eye | {{< icon eye >}} |
|
| eye | {{< icon eye >}} |
|
||||||
| facebook | {{< icon facebook >}} |
|
| facebook | {{< icon facebook >}} |
|
||||||
|
| fediverse | {{< icon fediverse >}} |
|
||||||
| fire | {{< icon fire >}} |
|
| fire | {{< icon fire >}} |
|
||||||
| flickr | {{< icon flickr >}} |
|
| flickr | {{< icon flickr >}} |
|
||||||
| fork | {{< icon fork >}} |
|
| fork | {{< icon fork >}} |
|
||||||
@@ -62,6 +65,7 @@ Blowfish 内置了许多 [FontAwesome 6](https://fontawesome.com/icons) 中的
|
|||||||
| instagram | {{< icon instagram >}} |
|
| instagram | {{< icon instagram >}} |
|
||||||
| itch-io | {{< icon itch-io >}} |
|
| itch-io | {{< icon itch-io >}} |
|
||||||
| keybase | {{< icon keybase >}} |
|
| keybase | {{< icon keybase >}} |
|
||||||
|
| keyoxide | {{< icon keyoxide >}} |
|
||||||
| kickstarter | {{< icon kickstarter >}} |
|
| kickstarter | {{< icon kickstarter >}} |
|
||||||
| ko-fi | {{< icon ko-fi >}} |
|
| ko-fi | {{< icon ko-fi >}} |
|
||||||
| language | {{< icon language >}} |
|
| language | {{< icon language >}} |
|
||||||
@@ -74,6 +78,7 @@ Blowfish 内置了许多 [FontAwesome 6](https://fontawesome.com/icons) 中的
|
|||||||
| location-dot | {{< icon location-dot >}} |
|
| location-dot | {{< icon location-dot >}} |
|
||||||
| lock | {{< icon lock >}} |
|
| lock | {{< icon lock >}} |
|
||||||
| mastodon | {{< icon mastodon >}} |
|
| mastodon | {{< icon mastodon >}} |
|
||||||
|
| matrix | {{< icon matrix >}} |
|
||||||
| medium | {{< icon medium >}} |
|
| medium | {{< icon medium >}} |
|
||||||
| microsoft | {{< icon microsoft >}} |
|
| microsoft | {{< icon microsoft >}} |
|
||||||
| moon | {{< icon moon >}} |
|
| moon | {{< icon moon >}} |
|
||||||
@@ -96,6 +101,7 @@ Blowfish 内置了许多 [FontAwesome 6](https://fontawesome.com/icons) 中的
|
|||||||
| scale-balanced | {{< icon scale-balanced >}} |
|
| scale-balanced | {{< icon scale-balanced >}} |
|
||||||
| search | {{< icon search >}} |
|
| search | {{< icon search >}} |
|
||||||
| shield | {{< icon shield >}} |
|
| shield | {{< icon shield >}} |
|
||||||
|
| signal | {{< icon signal >}} |
|
||||||
| skull-crossbones | {{< icon skull-crossbones >}} |
|
| skull-crossbones | {{< icon skull-crossbones >}} |
|
||||||
| slack | {{< icon slack >}} |
|
| slack | {{< icon slack >}} |
|
||||||
| snapchat | {{< icon snapchat >}} |
|
| snapchat | {{< icon snapchat >}} |
|
||||||
@@ -117,6 +123,7 @@ Blowfish 内置了许多 [FontAwesome 6](https://fontawesome.com/icons) 中的
|
|||||||
| twitter | {{< icon twitter >}} |
|
| twitter | {{< icon twitter >}} |
|
||||||
| wand-magic-sparkles | {{< icon wand-magic-sparkles >}} |
|
| wand-magic-sparkles | {{< icon wand-magic-sparkles >}} |
|
||||||
| whatsapp | {{< icon whatsapp >}} |
|
| whatsapp | {{< icon whatsapp >}} |
|
||||||
|
| worktree | {{< icon worktree >}} |
|
||||||
| x-twitter | {{< icon x-twitter >}} |
|
| x-twitter | {{< icon x-twitter >}} |
|
||||||
| xing | {{< icon xing >}} |
|
| xing | {{< icon xing >}} |
|
||||||
| xmark | {{< icon xmark >}} |
|
| xmark | {{< icon xmark >}} |
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ type: 'sample'
|
|||||||
这是一个在你的文章使用缩略图的快速示例。
|
这是一个在你的文章使用缩略图的快速示例。
|
||||||
|
|
||||||
如果你的文章目录看起来像这样:
|
如果你的文章目录看起来像这样:
|
||||||
If your average directory for an article looks like this:
|
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
content
|
content
|
||||||
|
|||||||
@@ -881,5 +881,38 @@
|
|||||||
"Personal site",
|
"Personal site",
|
||||||
"Technology Blog"
|
"Technology Blog"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "tbsch.de | Smart Home, Technik, Kram",
|
||||||
|
"url": "https://tbsch.de",
|
||||||
|
"source": "n/a",
|
||||||
|
"tags": [
|
||||||
|
"Personal site"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "metalhearf.fr",
|
||||||
|
"url": "https://metalhearf.fr",
|
||||||
|
"source": "n/a",
|
||||||
|
"tags": [
|
||||||
|
"Blog",
|
||||||
|
"Personal site"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "encelo.github.io",
|
||||||
|
"url": "https://encelo.github.io/",
|
||||||
|
"source": "https://github.com/encelo/encelo.github.io",
|
||||||
|
"tags": [
|
||||||
|
"Personal site",
|
||||||
|
"Blog"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "ncine.github.io",
|
||||||
|
"url": "https://ncine.github.io/",
|
||||||
|
"source": "https://github.com/nCine/nCine-site",
|
||||||
|
"tags": [
|
||||||
|
"Project site"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
|
||||||
@@ -1 +1,8 @@
|
|||||||
<a rel="me" href="https://masto.ai/@blowfish"></a>
|
{{/* example of extend-footer */}}
|
||||||
|
{{/*
|
||||||
|
<p class="text-sm text-neutral-500 dark:text-neutral-400">
|
||||||
|
<a class="hover:underline hover:decoration-primary-400 hover:text-primary-500" rel="me" href="https://masto.ai/@blowfish">
|
||||||
|
Follow me on Mastodon
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
*/}}
|
||||||
@@ -4,12 +4,12 @@ global:
|
|||||||
article:
|
article:
|
||||||
anchor_label: "Àncora"
|
anchor_label: "Àncora"
|
||||||
date: "{{ .Date }}"
|
date: "{{ .Date }}"
|
||||||
date_updated: "Actualitzat: {{ .Date }}"
|
date_updated: "Actualització: {{ .Date }}"
|
||||||
draft: "Esborrany"
|
draft: "Esborrany"
|
||||||
edit_title: "Editar contingut"
|
edit_title: "Edita el contingut"
|
||||||
reading_time:
|
reading_time:
|
||||||
one: "{{ .Count }} min"
|
one: "{{ .Count }} min"
|
||||||
other: "{{ .Count }} mins"
|
other: "{{ .Count }} min"
|
||||||
reading_time_title: "Temps de lectura"
|
reading_time_title: "Temps de lectura"
|
||||||
table_of_contents: "Taula de contingut"
|
table_of_contents: "Taula de contingut"
|
||||||
word_count:
|
word_count:
|
||||||
@@ -26,13 +26,13 @@ article:
|
|||||||
this_article: "Aquest article"
|
this_article: "Aquest article"
|
||||||
related_articles: "Relacionats"
|
related_articles: "Relacionats"
|
||||||
zen_mode_title:
|
zen_mode_title:
|
||||||
enable: "Activar mode zen"
|
enable: "Habilita el mode zen"
|
||||||
disable: "Desactivar mode zen"
|
disable: "Inhabilita el mode zen"
|
||||||
|
|
||||||
a11y:
|
a11y:
|
||||||
title: "Configuració d'accessibilitat"
|
title: "Paràmetres d'accessibilitat"
|
||||||
disable_blur: "Desactiva el desenfocament"
|
disable_blur: "Inhabilita el desenfocament"
|
||||||
disable_images: "Desactiva les imatges"
|
disable_images: "Inhabilita les imatges"
|
||||||
show_link_underline: "Mostra el subratllat dels enllaços"
|
show_link_underline: "Mostra el subratllat dels enllaços"
|
||||||
font_size: "Mida de la lletra"
|
font_size: "Mida de la lletra"
|
||||||
|
|
||||||
@@ -40,43 +40,47 @@ author:
|
|||||||
byline_title: "Autor"
|
byline_title: "Autor"
|
||||||
|
|
||||||
code:
|
code:
|
||||||
copy: "Copiar"
|
copy: "Copia"
|
||||||
copied: "Copiat"
|
copied: "S'ha copiat"
|
||||||
|
|
||||||
error:
|
error:
|
||||||
404_title: "Pàgina no trobada :confused:"
|
404_title: "No s'ha trobat la pàgina :confused:"
|
||||||
404_error: "Error 404"
|
404_error: "Error 404"
|
||||||
404_description: "Sembla que la pàgina sol·licitada no existeix."
|
404_description: "Sembla que la pàgina que heu sol·licitat no existeix."
|
||||||
|
|
||||||
footer:
|
footer:
|
||||||
dark_appearance: "Canviar a mode fosc"
|
dark_appearance: "Canvia al mode fosc"
|
||||||
light_appearance: "Canviar a mode clar"
|
light_appearance: "Canvia al mode clar"
|
||||||
powered_by: "Desenvolupat amb {{ .Hugo }} & {{ .Theme }}"
|
powered_by: "Desenvolupat amb {{ .Hugo }} i {{ .Theme }}"
|
||||||
|
|
||||||
list:
|
list:
|
||||||
externalurl_title: "Enllaç a pàgina externa"
|
externalurl_title: "Enllaç a un lloc extern"
|
||||||
no_articles: "Encara no hi ha cap article per a mostrar."
|
no_articles: "Encara no hi ha cap article per mostrar."
|
||||||
|
|
||||||
nav:
|
nav:
|
||||||
scroll_to_top_title: "Tornar a l'inici"
|
scroll_to_top_title: "Torna a l'inici"
|
||||||
skip_to_main: "Anar al contingut"
|
skip_to_main: "Ves al contingut"
|
||||||
|
|
||||||
search:
|
search:
|
||||||
open_button_title: "Cercar (/)"
|
open_button_title: "Cerca (/)"
|
||||||
close_button_title: "Tancar (Esc)"
|
close_button_title: "Tanca (Esc)"
|
||||||
input_placeholder: "Cercar"
|
input_placeholder: "Cerca"
|
||||||
|
|
||||||
sharing:
|
sharing:
|
||||||
email: "Enviar per correu electrònic"
|
email: "Envia per correu electrònic"
|
||||||
facebook: "Compartir amb Facebook"
|
facebook: "Comparteix a Facebook"
|
||||||
line: "Compartir amb LINE"
|
line: "Comparteix a LINE"
|
||||||
linkedin: "Compartir amb LinkedIn"
|
linkedin: "Comparteix a LinkedIn"
|
||||||
pinterest: "Compartir amb Pinterest"
|
pinterest: "Comparteix a Pinterest"
|
||||||
reddit: "Publicar a Reddit"
|
reddit: "Envia a Reddit"
|
||||||
twitter: "Tuitejar a Twitter"
|
twitter: "Publica a Twitter"
|
||||||
|
bluesky: "Publica a Bluesky"
|
||||||
|
whatsapp: "Comparteix per WhatsApp"
|
||||||
|
telegram: "Comparteix per Telegram"
|
||||||
|
mastodon: "Comparteix a Mastodon"
|
||||||
|
|
||||||
shortcode:
|
shortcode:
|
||||||
recent_articles: "Recent"
|
recent_articles: "Recents"
|
||||||
|
|
||||||
recent:
|
recent:
|
||||||
show_more: "Mostrar més"
|
show_more: "Mostra'n més"
|
||||||
@@ -0,0 +1,86 @@
|
|||||||
|
global:
|
||||||
|
language: "DA"
|
||||||
|
|
||||||
|
article:
|
||||||
|
anchor_label: "Anker"
|
||||||
|
date: "{{ .Date }}"
|
||||||
|
date_updated: "Opdateret: {{ .Date }}"
|
||||||
|
draft: "Kladde"
|
||||||
|
edit_title: "Redigér indhold"
|
||||||
|
reading_time:
|
||||||
|
one: "{{ .Count }} minut"
|
||||||
|
other: "{{ .Count }} minutter"
|
||||||
|
reading_time_title: "Læsetid"
|
||||||
|
table_of_contents: "Indholdsfortegnelse"
|
||||||
|
word_count:
|
||||||
|
one: "{{ .Count }} ord"
|
||||||
|
other: "{{ .Count }} ord"
|
||||||
|
views:
|
||||||
|
one: "{{ .Count }} visning"
|
||||||
|
other: "{{ .Count }} visninger"
|
||||||
|
likes:
|
||||||
|
one: "{{ .Count }} like"
|
||||||
|
other: "{{ .Count }} likes"
|
||||||
|
part_of_series: "Denne artikel er en del af en serie."
|
||||||
|
part: "Del"
|
||||||
|
this_article: "Denne artikel"
|
||||||
|
related_articles: "Relateret"
|
||||||
|
zen_mode_title:
|
||||||
|
enable: "Aktiver zen mode"
|
||||||
|
disable: "Deaktiver zen mode"
|
||||||
|
|
||||||
|
a11y:
|
||||||
|
title: "Tilgængelighedsindstillinger"
|
||||||
|
disable_blur: "Deaktiver uskarphed"
|
||||||
|
disable_images: "Deaktiver billeder"
|
||||||
|
show_link_underline: "Vis link-understregning"
|
||||||
|
font_size: "Skrift størrelse"
|
||||||
|
|
||||||
|
author:
|
||||||
|
byline_title: "Forfatter"
|
||||||
|
|
||||||
|
code:
|
||||||
|
copy: "Kopi"
|
||||||
|
copied: "Kopieret"
|
||||||
|
|
||||||
|
error:
|
||||||
|
404_title: "Siden kunne ikke findes :confused:"
|
||||||
|
404_error: "Fejl 404"
|
||||||
|
404_description: "Det ser ud til at den side du søger ikke eksisterer."
|
||||||
|
|
||||||
|
footer:
|
||||||
|
dark_appearance: "Skift til mørk udseende"
|
||||||
|
light_appearance: "Skift til lys udseende"
|
||||||
|
powered_by: "Genereret af {{ .Hugo }} & {{ .Theme }}"
|
||||||
|
|
||||||
|
list:
|
||||||
|
externalurl_title: "Link til ekstern hjemmeside"
|
||||||
|
no_articles: "Der er ikke nogle artikler her, endnu."
|
||||||
|
|
||||||
|
nav:
|
||||||
|
scroll_to_top_title: "scrol til top"
|
||||||
|
skip_to_main: "Gå til hovedindhold"
|
||||||
|
|
||||||
|
search:
|
||||||
|
open_button_title: "Søg (/)"
|
||||||
|
close_button_title: "Luk (Esc)"
|
||||||
|
input_placeholder: "Søg"
|
||||||
|
|
||||||
|
sharing:
|
||||||
|
email: "Send via email"
|
||||||
|
facebook: "Del via Facebook"
|
||||||
|
line: "Del via LINE"
|
||||||
|
linkedin: "Del via LinkedIn"
|
||||||
|
pinterest: "Pin på Pinterest"
|
||||||
|
reddit: "Send til Reddit"
|
||||||
|
twitter: "Tweet via Twitter"
|
||||||
|
bluesky: "Post via Bluesky"
|
||||||
|
whatsapp: "Del via WhatsApp"
|
||||||
|
telegram: "Del via Telegram"
|
||||||
|
mastodon: "Del via Mastodon"
|
||||||
|
|
||||||
|
shortcode:
|
||||||
|
recent_articles: "Seneste"
|
||||||
|
|
||||||
|
recent:
|
||||||
|
show_more: "Vis mere"
|
||||||
@@ -4,7 +4,7 @@
|
|||||||
{{ if .Page.Params.showHeadingAnchors | default (.Page.Site.Params.article.showHeadingAnchors | default true) }}
|
{{ if .Page.Params.showHeadingAnchors | default (.Page.Site.Params.article.showHeadingAnchors | default true) }}
|
||||||
<span
|
<span
|
||||||
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
|
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
|
||||||
<a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#{{ $anchor }}" aria-label="{{ i18n "article.anchor_label" }}">#</a>
|
<a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#{{ $anchor }}" aria-label="{{ i18n "article.anchor_label" }}">#</a>
|
||||||
</span>
|
</span>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</h{{ .Level }}>
|
</h{{ .Level }}>
|
||||||
@@ -1,56 +1,109 @@
|
|||||||
{{ define "RenderImageSimple" -}}
|
{{- define "RenderImageSimple" -}}
|
||||||
<img class="my-0 rounded-md" loading="lazy" alt="{{ .alt }}" src="{{ .src }}">
|
{{- $imgObj := .imgObj -}}
|
||||||
{{- end }}
|
{{- $src := .src -}}
|
||||||
|
{{- $alt := .alt -}}
|
||||||
{{ define "RenderImageResponsive" -}}
|
|
||||||
<img
|
<img
|
||||||
class="my-0 rounded-md"
|
class="my-0 rounded-md"
|
||||||
loading="lazy"
|
loading="lazy"
|
||||||
decoding="async"
|
decoding="async"
|
||||||
fetchpriority="low"
|
fetchpriority="low"
|
||||||
alt="{{ .alt }}"
|
alt="{{ $alt }}"
|
||||||
srcset="
|
src="{{ $src }}"
|
||||||
{{ (.resource.Resize "330x").RelPermalink }} 330w,
|
{{ with $imgObj -}}
|
||||||
{{ (.resource.Resize "660x").RelPermalink }} 660w,
|
{{ with $imgObj.Width }}width="{{ . }}"{{ end }}
|
||||||
{{ (.resource.Resize "1280x").RelPermalink }} 1280w
|
{{ with $imgObj.Height }}height="{{ . }}"{{ end }}
|
||||||
"
|
{{- end }}>
|
||||||
data-zoom-src="{{ .resource.RelPermalink }}"
|
{{- end -}}
|
||||||
src="{{ .resource.RelPermalink }}">
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{ define "RenderImageCaption" -}}
|
{{- define "RenderImageResponsive" -}}
|
||||||
{{- with .caption }}
|
{{/* Responsive Image
|
||||||
|
The current setting sizes="(min-width: 768px) 50vw, 65vw" makes the iPhone 16 and 16 Pro
|
||||||
|
select a smaller image, while the iPhone 16 Pro Max selects a larger image.
|
||||||
|
|
||||||
|
Steps:
|
||||||
|
1. Check the media queries in the `sizes` property.
|
||||||
|
2. Find the first matching value. For example, on a mobile device with a CSS pixel width
|
||||||
|
of 390px and DPR = 3 (iPhone 13), given setting sizes="(min-width: 768px) 50vw, 100vw",
|
||||||
|
it matches the `100vw` option.
|
||||||
|
3. Calculate the optimal image size: 390 × 3 × 100% (100vw) = 1170.
|
||||||
|
4. Find the corresponding match in the `srcset`.
|
||||||
|
|
||||||
|
To make the browser select a smaller image on mobile devices
|
||||||
|
override the template and change the `sizes` property to "(min-width: 768px) 50vw, 30vw"
|
||||||
|
|
||||||
|
The sizes="auto" is valid only when loading="lazy".
|
||||||
|
*/}}
|
||||||
|
{{- $imgObj := .imgObj -}}
|
||||||
|
{{- $alt := .alt -}}
|
||||||
|
{{- $originalWidth := $imgObj.Width -}}
|
||||||
|
|
||||||
|
{{- $img800 := $imgObj -}}
|
||||||
|
{{- $img1280 := $imgObj -}}
|
||||||
|
{{- if gt $originalWidth 800 -}}
|
||||||
|
{{- $img800 = $imgObj.Resize "800x" -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- if gt $originalWidth 1280 -}}
|
||||||
|
{{- $img1280 = $imgObj.Resize "1280x" -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- $srcset := printf "%s 800w, %s 1280w" $img800.RelPermalink $img1280.RelPermalink -}}
|
||||||
|
|
||||||
|
|
||||||
|
<img
|
||||||
|
class="my-0 rounded-md"
|
||||||
|
loading="lazy"
|
||||||
|
decoding="async"
|
||||||
|
fetchpriority="auto"
|
||||||
|
alt="{{ $alt }}"
|
||||||
|
{{ with $imgObj.Width }}width="{{ . }}"{{ end }}
|
||||||
|
{{ with $imgObj.Height }}height="{{ . }}"{{ end }}
|
||||||
|
src="{{ $img800.RelPermalink }}"
|
||||||
|
srcset="{{ $srcset }}"
|
||||||
|
sizes="(min-width: 768px) 50vw, 65vw"
|
||||||
|
data-zoom-src="{{ $imgObj.RelPermalink }}">
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- define "RenderImageCaption" -}}
|
||||||
|
{{- with .caption -}}
|
||||||
<figcaption>{{ . | markdownify }}</figcaption>
|
<figcaption>{{ . | markdownify }}</figcaption>
|
||||||
{{- end }}
|
{{- end -}}
|
||||||
{{- end }}
|
{{- end -}}
|
||||||
|
|
||||||
{{- $disableImageOptimizationMD := .Page.Site.Params.disableImageOptimizationMD | default false }}
|
{{- $disableImageOptimizationMD := .Page.Site.Params.disableImageOptimizationMD | default false -}}
|
||||||
{{- $urlStr := .Destination | safeURL -}}
|
{{- $urlStr := .Destination | safeURL -}}
|
||||||
{{- $url := urls.Parse $urlStr -}}
|
{{- $url := urls.Parse $urlStr -}}
|
||||||
{{- $altText := .Text }}
|
{{- $altText := .Text -}}
|
||||||
{{- $caption := .Title }}
|
{{- $caption := .Title -}}
|
||||||
{{- $isRemote := findRE "^(https?|data)" $url.Scheme }}
|
{{- $isRemote := findRE "^(https?|data)" $url.Scheme -}}
|
||||||
{{- $resource := "" }}
|
{{- $resource := "" -}}
|
||||||
|
|
||||||
{{- if not $isRemote }}
|
{{- if not $isRemote -}}
|
||||||
{{- $resource = or ($.Page.Resources.GetMatch $urlStr) (resources.Get $urlStr) }}
|
{{- $resource = or ($.Page.Resources.GetMatch $urlStr) (resources.Get $urlStr) -}}
|
||||||
{{- end }}
|
{{- end -}}
|
||||||
|
|
||||||
|
|
||||||
<figure>
|
<figure>
|
||||||
{{- if $isRemote }}
|
{{- if $isRemote -}}
|
||||||
{{ template "RenderImageSimple" (dict "src" $urlStr "alt" $altText) }}
|
{{- template "RenderImageSimple" (dict "imgObj" "" "src" $urlStr "alt" $altText) -}}
|
||||||
{{- else if $resource }}
|
{{- else if $resource -}}
|
||||||
{{- $isSVG := eq $resource.MediaType.SubType "svg" }}
|
{{- $isSVG := eq $resource.MediaType.SubType "svg" -}}
|
||||||
{{- $shouldOptimize := and (not $disableImageOptimizationMD) (not $isSVG) }}
|
{{- $shouldOptimize := and (not $disableImageOptimizationMD) (not $isSVG) -}}
|
||||||
{{- if $shouldOptimize }}
|
{{- if $shouldOptimize -}}
|
||||||
{{ template "RenderImageResponsive" (dict "resource" $resource "alt" $altText) }}
|
{{- template "RenderImageResponsive" (dict "imgObj" $resource "alt" $altText) -}}
|
||||||
{{- else }}
|
{{- else -}}
|
||||||
{{ template "RenderImageSimple" (dict "src" $resource.RelPermalink "alt" $altText) }}
|
{{/* Not optimize image
|
||||||
{{- end }}
|
If it is an SVG file, pass the permalink
|
||||||
{{- else }}
|
Otherwise, pass the resource to allow width and height attributes
|
||||||
{{ template "RenderImageSimple" (dict "src" $urlStr "alt" $altText) }}
|
*/}}
|
||||||
{{- end }}
|
{{- if $isSVG -}}
|
||||||
|
{{- template "RenderImageSimple" (dict "imgObj" "" "src" $resource.RelPermalink "alt" $altText) -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- template "RenderImageSimple" (dict "imgObj" $resource "src" $resource.RelPermalink "alt" $altText) -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- template "RenderImageSimple" (dict "imgObj" "" "src" $urlStr "alt" $altText) -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
{{ template "RenderImageCaption" (dict "caption" $caption) }}
|
{{- template "RenderImageCaption" (dict "caption" $caption) -}}
|
||||||
</figure>
|
</figure>
|
||||||
@@ -1,19 +1,17 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html
|
<html
|
||||||
lang="{{ with site.Params.isoCode | default (site.LanguageCode | default " en") }}{{- . -}}{{ end }}"
|
lang="{{ with site.Params.isoCode | default (site.LanguageCode | default `en`) }}{{- . -}}{{ end }}"
|
||||||
dir="{{ if site.Params.rtl | default false -}}
|
dir="{{ cond (site.Params.rtl | default false) `rtl` `ltr` }}"
|
||||||
rtl
|
|
||||||
{{- else -}}
|
|
||||||
ltr
|
|
||||||
{{- end }}"
|
|
||||||
class="scroll-smooth"
|
class="scroll-smooth"
|
||||||
data-default-appearance="{{ site.Params.defaultAppearance | default " light" }}"
|
data-default-appearance="{{ site.Params.defaultAppearance | default `light` }}"
|
||||||
data-auto-appearance="{{ site.Params.autoSwitchAppearance | default " true" }}">
|
data-auto-appearance="{{ site.Params.autoSwitchAppearance | default `true` }}">
|
||||||
{{- partial "head.html" . -}}
|
{{- partial "head.html" . -}}
|
||||||
|
{{- partialCached "init.html" . -}}
|
||||||
|
|
||||||
|
{{ $bodyLayout := "flex flex-col h-screen m-auto leading-7 max-w-7xl px-6 sm:px-14 md:px-24 lg:px-32" }}
|
||||||
<body
|
{{ $bodyColor := "text-lg bg-neutral text-neutral-900 dark:bg-neutral-800 dark:text-neutral" }}
|
||||||
class="flex flex-col h-screen px-6 m-auto text-lg leading-7 max-w-7xl bg-neutral text-neutral-900 dark:bg-neutral-800 dark:text-neutral sm:px-14 md:px-24 lg:px-32 scrollbar-thin scrollbar-track-neutral-200 scrollbar-thumb-neutral-400 dark:scrollbar-track-neutral-800 dark:scrollbar-thumb-neutral-600">
|
{{ $bodyScrollbar := "scrollbar-thin scrollbar-track-neutral-200 scrollbar-thumb-neutral-400 dark:scrollbar-track-neutral-800 dark:scrollbar-thumb-neutral-600" }}
|
||||||
|
<body class="{{ $bodyLayout }} {{ $bodyColor }} {{ $bodyScrollbar }}">
|
||||||
<div id="the-top" class="absolute flex self-center">
|
<div id="the-top" class="absolute flex self-center">
|
||||||
<a
|
<a
|
||||||
class="px-3 py-1 text-sm -translate-y-8 rounded-b-lg bg-primary-200 focus:translate-y-0 dark:bg-neutral-600"
|
class="px-3 py-1 text-sm -translate-y-8 rounded-b-lg bg-primary-200 focus:translate-y-0 dark:bg-neutral-600"
|
||||||
@@ -31,7 +29,7 @@
|
|||||||
<div class="relative flex flex-col grow">
|
<div class="relative flex flex-col grow">
|
||||||
<main id="main-content" class="grow">
|
<main id="main-content" class="grow">
|
||||||
{{ block "main" . }}{{ end }}
|
{{ block "main" . }}{{ end }}
|
||||||
{{ if and (site.Params.footer.showScrollToTop | default true) (gt .WordCount 1) }}
|
{{ if and (site.Params.footer.showScrollToTop | default true) }}
|
||||||
{{- partial "scroll-to-top.html" . -}}
|
{{- partial "scroll-to-top.html" . -}}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</main>
|
</main>
|
||||||
@@ -48,9 +46,9 @@
|
|||||||
src="https://cdnjs.buymeacoffee.com/1.0.0/widget.prod.min.js"
|
src="https://cdnjs.buymeacoffee.com/1.0.0/widget.prod.min.js"
|
||||||
data-id="{{ site.Params.buymeacoffee.identifier }}"
|
data-id="{{ site.Params.buymeacoffee.identifier }}"
|
||||||
data-description="Support me on Buy me a coffee!"
|
data-description="Support me on Buy me a coffee!"
|
||||||
data-message="{{ site.Params.buymeacoffee.globalWidgetMessage | default "" }}"
|
{{ with site.Params.buymeacoffee.globalWidgetMessage }}data-message="{{ . }}"{{ end }}
|
||||||
data-color="{{ site.Params.buymeacoffee.globalWidgetColor | default "#FFDD00" }}"
|
{{ with site.Params.buymeacoffee.globalWidgetColor | default `#FFDD00` }}data-color="{{ . }}"{{ end }}
|
||||||
data-position="{{ site.Params.buymeacoffee.globalWidgetPosition | default "Left" }}"
|
{{ with site.Params.buymeacoffee.globalWidgetPosition }}data-position="{{ . }}"{{ end }}
|
||||||
data-x_margin="18"
|
data-x_margin="18"
|
||||||
data-y_margin="18"></script>
|
data-y_margin="18"></script>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|||||||
@@ -34,17 +34,13 @@
|
|||||||
{{ $enableToc := site.Params.article.showTableOfContents | default false }}
|
{{ $enableToc := site.Params.article.showTableOfContents | default false }}
|
||||||
{{ $enableToc = .Params.showTableOfContents | default $enableToc }}
|
{{ $enableToc = .Params.showTableOfContents | default $enableToc }}
|
||||||
{{ $showToc := and $enableToc (in .TableOfContents "<ul") }}
|
{{ $showToc := and $enableToc (in .TableOfContents "<ul") }}
|
||||||
{{ $showRelated := site.Params.article.showRelatedPosts | default false }}
|
|
||||||
{{ $topClass := cond (hasPrefix site.Params.header.layout "fixed") "lg:top-[140px]" "lg:top-10" }}
|
{{ $topClass := cond (hasPrefix site.Params.header.layout "fixed") "lg:top-[140px]" "lg:top-10" }}
|
||||||
{{ if or $showToc $showRelated }}
|
{{ if $showToc }}
|
||||||
<div class="order-first lg:ml-auto px-0 lg:order-last lg:ps-8">
|
<div class="order-first lg:ml-auto px-0 lg:order-last lg:ps-8 lg:max-w-2xs">
|
||||||
<div class="toc ps-5 print:hidden lg:sticky {{ $topClass }}">
|
<div class="toc ps-5 print:hidden lg:sticky {{ $topClass }}">
|
||||||
{{ if $showToc }}
|
{{ if $showToc }}
|
||||||
{{ partial "toc.html" . }}
|
{{ partial "toc.html" . }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ if $showRelated }}
|
|
||||||
sd
|
|
||||||
{{ end }}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
{{ define "main" }}
|
{{ define "main" }}
|
||||||
{{ .Scratch.Set "scope" "term" }}
|
{{ .Scratch.Set "scope" "term" }}
|
||||||
{{ if site.Params.term.showHero | default false }}
|
{{ $showHero := .Params.showHero | default site.Params.term.showHero | default false }}
|
||||||
|
{{ if $showHero }}
|
||||||
{{ $heroStyle := print "hero/" site.Params.term.heroStyle ".html" }}
|
{{ $heroStyle := print "hero/" site.Params.term.heroStyle ".html" }}
|
||||||
{{ if templates.Exists ( printf "partials/%s" $heroStyle ) }}
|
{{ if templates.Exists ( printf "partials/%s" $heroStyle ) }}
|
||||||
{{ partial $heroStyle . }}
|
{{ partial $heroStyle . }}
|
||||||
@@ -10,7 +11,7 @@
|
|||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
|
|
||||||
<header>
|
<header class="mt-5">
|
||||||
{{ if .Params.showBreadcrumbs | default (site.Params.term.showBreadcrumbs | default false) }}
|
{{ if .Params.showBreadcrumbs | default (site.Params.term.showBreadcrumbs | default false) }}
|
||||||
{{ partial "breadcrumbs.html" . }}
|
{{ partial "breadcrumbs.html" . }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
{{ define "main" }}
|
{{ define "main" }}
|
||||||
{{ .Scratch.Set "scope" "list" }}
|
{{ .Scratch.Set "scope" "list" }}
|
||||||
{{ if site.Params.taxonomy.showHero | default false }}
|
{{ $showHero := .Params.showHero | default site.Params.taxonomy.showHero | default false }}
|
||||||
|
{{ if $showHero }}
|
||||||
{{ $heroStyle := print "hero/" site.Params.taxonomy.heroStyle ".html" }}
|
{{ $heroStyle := print "hero/" site.Params.taxonomy.heroStyle ".html" }}
|
||||||
{{ if templates.Exists ( printf "partials/%s" $heroStyle ) }}
|
{{ if templates.Exists ( printf "partials/%s" $heroStyle ) }}
|
||||||
{{ partial $heroStyle . }}
|
{{ partial $heroStyle . }}
|
||||||
@@ -10,7 +11,7 @@
|
|||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
|
|
||||||
<header>
|
<header class="mt-5">
|
||||||
{{ if .Params.showBreadcrumbs | default (site.Params.taxonomy.showBreadcrumbs | default false) }}
|
{{ if .Params.showBreadcrumbs | default (site.Params.taxonomy.showBreadcrumbs | default false) }}
|
||||||
{{ partial "breadcrumbs.html" . }}
|
{{ partial "breadcrumbs.html" . }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
{{ with site.Params.fathomAnalytics.site }}
|
{{ if site.Params.fathomAnalytics.site }}
|
||||||
{{ partial "analytics/fathom.html" }}
|
{{ partial "analytics/fathom.html" . }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ with site.Config.Services.GoogleAnalytics.ID }}
|
{{ if site.Config.Services.GoogleAnalytics.ID }}
|
||||||
{{ partial "analytics/ga.html" }}
|
{{ partial "analytics/ga.html" . }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ with site.Params.umamiAnalytics.websiteid }}
|
{{ if site.Params.umamiAnalytics.websiteid }}
|
||||||
{{ partial "analytics/umami.html" }}
|
{{ partial "analytics/umami.html" . }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ with site.Params.selineAnalytics.token }}
|
{{ if site.Params.selineAnalytics.token }}
|
||||||
{{ partial "analytics/seline.html" }}
|
{{ partial "analytics/seline.html" . }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
{{ with .Params.externalUrl }}
|
|
||||||
href="{{ . }}" target="_blank" rel="external"
|
|
||||||
{{ else }}
|
|
||||||
href="{{ .RelPermalink }}"
|
|
||||||
{{- end -}}
|
|
||||||
@@ -1,95 +1,115 @@
|
|||||||
|
{{/* Used by
|
||||||
|
1. article shortcode
|
||||||
|
|
||||||
|
The four variants of article-link are very similar. Despite appearances, as of df859f:
|
||||||
|
- _shortcode.html uses $page := $target, while the others use $page := .Page
|
||||||
|
- card-related.html does not have the hideFeatureImage option, while the others do
|
||||||
|
|
||||||
|
$page is added intentionally to prevent small differences inside
|
||||||
|
*/}}
|
||||||
{{ $target := .target }}
|
{{ $target := .target }}
|
||||||
{{ $shortcodeShowSummary := .showSummary }}
|
{{ $shortcodeShowSummary := .showSummary }}
|
||||||
{{ $shortcodeCompactSummary := .compactSummary }}
|
{{ $shortcodeCompactSummary := .compactSummary }}
|
||||||
{{ $constrainItemsWidth := site.Params.list.constrainItemsWidth | default false }}
|
{{ $constrainItemsWidth := site.Params.list.constrainItemsWidth | default false }}
|
||||||
{{ $disableImageOptimization := site.Params.disableImageOptimization | default false }}
|
{{ $disableImageOptimization := site.Store.Get "disableImageOptimization" }}
|
||||||
|
|
||||||
{{ $articleClasses := "group-hover-card group flex flex-wrap md:flex-nowrap article relative" }}
|
{{ $cardClasses := "flex flex-col md:flex-row relative" }}
|
||||||
{{ if site.Params.list.showCards }}
|
{{ $imgWrapperClasses := "" }}
|
||||||
{{ $articleClasses = delimit (slice $articleClasses "border border-neutral-200 dark:border-neutral-700 border-2 rounded-md overflow-hidden") " " }}
|
{{ $cardContentClasses := "" }}
|
||||||
{{ else }}
|
|
||||||
{{ $articleClasses = delimit (slice $articleClasses "") " " }}
|
|
||||||
{{ end }}
|
|
||||||
|
|
||||||
{{ $articleImageClasses := "w-full md:w-auto h-full thumbnail nozoom" }}
|
|
||||||
{{ if site.Params.list.showCards }}
|
{{ if site.Params.list.showCards }}
|
||||||
{{ $articleImageClasses = delimit (slice $articleImageClasses "") " " }}
|
{{ $cardClasses = printf "%s overflow-hidden rounded-md border-2 border-neutral-200 dark:border-neutral-700" $cardClasses }}
|
||||||
|
{{ $imgWrapperClasses = "" }}
|
||||||
|
{{ $cardContentClasses = printf "%s p-4 pt-2" $cardContentClasses }}
|
||||||
{{ else }}
|
{{ else }}
|
||||||
{{ $articleImageClasses = delimit (slice $articleImageClasses "thumbnailshadow md:mr-7") " " }}
|
{{ $cardClasses = printf "%s" $cardClasses }}
|
||||||
{{ end }}
|
{{ $imgWrapperClasses = printf "%s thumbnail-shadow md:mr-7" $imgWrapperClasses }}
|
||||||
|
{{ $cardContentClasses = printf "%s mt-3 md:mt-0" $cardContentClasses }}
|
||||||
{{ $articleInnerClasses := "" }}
|
|
||||||
{{ if site.Params.list.showCards }}
|
|
||||||
{{ $articleInnerClasses = delimit (slice $articleInnerClasses "p-2.5 pl-4 pb-0") " " }}
|
|
||||||
{{ else }}
|
|
||||||
{{ $articleInnerClasses = delimit (slice $articleInnerClasses "mt-3 md:mt-0") " " }}
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{ if $constrainItemsWidth }}
|
{{ if $constrainItemsWidth }}
|
||||||
{{ $articleClasses = delimit (slice $articleClasses "max-w-prose") " " }}
|
{{ $cardClasses = printf "%s max-w-prose" $cardClasses }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ $page := $target }}
|
||||||
|
{{ $featured := "" }}
|
||||||
|
{{ $featuredURL := "" }}
|
||||||
|
{{ if not $target.Params.hideFeatureImage }}
|
||||||
|
{{/* frontmatter */}}
|
||||||
|
{{ with $page }}
|
||||||
|
{{ with .Params.featureimage }}
|
||||||
|
{{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
|
||||||
|
{{ if site.Params.hotlinkFeatureImage }}
|
||||||
|
{{ $featuredURL = . }}
|
||||||
|
{{ else }}
|
||||||
|
{{ $featured = resources.GetRemote . }}
|
||||||
|
{{ end }}
|
||||||
|
{{ else }}
|
||||||
|
{{ $featured = resources.Get . }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{/* page resources */}}
|
||||||
|
{{ if not (or $featured $featuredURL) }}
|
||||||
|
{{ $images := .Resources.ByType "image" }}
|
||||||
|
{{ range slice "*feature*" "*cover*" "*thumbnail*" }}
|
||||||
|
{{ if not $featured }}{{ $featured = $images.GetMatch . }}{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{/* fallback to default */}}
|
||||||
|
{{ if not (or $featured $featuredURL) }}
|
||||||
|
{{ $default := site.Store.Get "defaultFeaturedImage" }}
|
||||||
|
{{ if $default.url }}
|
||||||
|
{{ $featuredURL = $default.url }}
|
||||||
|
{{ else if $default.obj }}
|
||||||
|
{{ $featured = $default.obj }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{/* generate image URL if not hotlink */}}
|
||||||
|
{{ if not $featuredURL }}
|
||||||
|
{{ with $featured }}
|
||||||
|
{{ $featuredURL = .RelPermalink }}
|
||||||
|
{{ if not (or $disableImageOptimization (eq .MediaType.SubType "svg")) }}
|
||||||
|
{{ $featuredURL = (.Resize "600x").RelPermalink }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
|
|
||||||
<div class="{{ $articleClasses }}">
|
<article class="{{ $cardClasses }}">
|
||||||
|
{{ with $featuredURL }}
|
||||||
|
<div class="flex-none relative overflow-hidden {{ $imgWrapperClasses }} thumbnail">
|
||||||
|
<img
|
||||||
|
src="{{ . }}"
|
||||||
|
alt="{{ with $target.Params.featuredImageAlt }}{{ . }}{{ else }}{{ $target.Title | emojify }}{{ end }}"
|
||||||
|
loading="lazy"
|
||||||
|
decoding="async"
|
||||||
|
class="not-prose absolute inset-0 w-full h-full object-cover">
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
<div class="{{ $cardContentClasses }}">
|
||||||
|
<header class="items-center text-start text-xl font-semibold">
|
||||||
<a
|
<a
|
||||||
{{ partial "article-link/_external-link.html" $target | safeHTMLAttr }}
|
{{ with .Params.externalUrl }}
|
||||||
class="absolute inset-0"
|
href="{{ . }}" target="_blank" rel="external"
|
||||||
aria-label="{{ $.Title }}"></a>
|
|
||||||
|
|
||||||
{{- with $target.Params.images -}}
|
|
||||||
{{- range first 6 . }}
|
|
||||||
<meta property="og:image" content="{{ . | absURL }}">
|
|
||||||
{{ end -}}
|
|
||||||
{{- else -}}
|
|
||||||
{{- $images := $target.Resources.ByType "image" -}}
|
|
||||||
{{- $featured := $images.GetMatch "*feature*" -}}
|
|
||||||
{{- if not $featured }}{{ $featured = $images.GetMatch "{*cover*,*thumbnail*}" }}{{ end -}}
|
|
||||||
{{ if and $target.Params.featureimage (not $featured) }}
|
|
||||||
{{- $url:= $target.Params.featureimage -}}
|
|
||||||
{{ $featured = resources.GetRemote $url }}
|
|
||||||
{{ end }}
|
|
||||||
{{- if not $featured }}
|
|
||||||
{{ with site.Params.defaultFeaturedImage }}{{ $featured = resources.Get . }}{{ end }}
|
|
||||||
{{ end -}}
|
|
||||||
{{ if $target.Params.hideFeatureImage }}{{ $featured = false }}{{ end }}
|
|
||||||
{{- with $featured -}}
|
|
||||||
{{ if or $disableImageOptimization (strings.HasSuffix $featured ".svg") }}
|
|
||||||
{{ with . }}
|
|
||||||
<div class="{{ $articleImageClasses }}" style="background-image:url({{ .RelPermalink }});"></div>
|
|
||||||
{{ end }}
|
|
||||||
{{ else }}
|
{{ else }}
|
||||||
{{ with .Resize "600x" }}
|
href="{{ .RelPermalink }}"
|
||||||
<div class="{{ $articleImageClasses }}" style="background-image:url({{ .RelPermalink }});"></div>
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
class="not-prose before:absolute before:inset-0 decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 hover:underline hover:underline-offset-2">
|
||||||
{{- else -}}
|
<h2>
|
||||||
{{- with site.Params.images }}
|
|
||||||
<meta property="og:image" content="{{ index . 0 | absURL }}">
|
|
||||||
{{ end -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
|
|
||||||
<div class="{{ $articleInnerClasses }}">
|
|
||||||
<div class="items-center text-start text-xl font-semibold">
|
|
||||||
{{ with $target.Params.externalUrl }}
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="group-hover-card-title decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 group-hover:underline group-hover:underline-offset-2">
|
|
||||||
{{ $target.Title | emojify }}
|
{{ $target.Title | emojify }}
|
||||||
|
{{ if $target.Params.externalUrl }}
|
||||||
<span class="cursor-default align-top text-xs text-neutral-400 dark:text-neutral-500">
|
<span class="cursor-default align-top text-xs text-neutral-400 dark:text-neutral-500">
|
||||||
<span class="rtl:hidden">↗</span>
|
<span class="rtl:hidden">↗</span>
|
||||||
<span class="ltr:hidden">↖</span>
|
<span class="ltr:hidden">↖</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{ else }}
|
|
||||||
<div
|
|
||||||
class="group-hover-card-title decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 group-hover:underline group-hover:underline-offset-2"
|
|
||||||
href="{{ $target.RelPermalink }}">
|
|
||||||
{{ $target.Title | emojify }}
|
|
||||||
</div>
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
</h2>
|
||||||
|
</a>
|
||||||
{{ if and $target.Draft site.Params.article.showDraftLabel }}
|
{{ if and $target.Draft site.Params.article.showDraftLabel }}
|
||||||
<div class="ms-2">
|
<div class="ms-2">
|
||||||
{{ partial "badge.html" (i18n "article.draft" | emojify) }}
|
{{ partial "badge.html" (i18n "article.draft" | emojify) }}
|
||||||
@@ -98,8 +118,8 @@
|
|||||||
{{ if templates.Exists "partials/extend-article-link.html" }}
|
{{ if templates.Exists "partials/extend-article-link.html" }}
|
||||||
{{ partial "extend-article-link.html" $target }}
|
{{ partial "extend-article-link.html" $target }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</header>
|
||||||
<div class="group-hover-cancel text-sm text-neutral-500 dark:text-neutral-400">
|
<div class="text-sm text-neutral-500 dark:text-neutral-400">
|
||||||
{{ partial "article-meta/basic.html" $target }}
|
{{ partial "article-meta/basic.html" $target }}
|
||||||
</div>
|
</div>
|
||||||
{{ $showSummary := false }}
|
{{ $showSummary := false }}
|
||||||
@@ -122,4 +142,4 @@
|
|||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</article>
|
||||||
@@ -1,67 +1,94 @@
|
|||||||
{{ $disableImageOptimization := .Page.Site.Params.disableImageOptimization | default false }}
|
{{/* Used by
|
||||||
<div
|
1. layouts/partials/related.html (related articles in single page)
|
||||||
class="group-hover-card group relative min-h-full min-w-full overflow-hidden rounded border border-2 border-neutral-200 shadow-2xl dark:border-neutral-700">
|
*/}}
|
||||||
<a
|
{{ $disableImageOptimization := site.Store.Get "disableImageOptimization" }}
|
||||||
{{ partial "article-link/_external-link.html" . | safeHTMLAttr }}
|
|
||||||
class="absolute inset-0"
|
{{ $page := .Page }}
|
||||||
aria-label="{{ $.Title }}"></a>
|
{{ $featured := "" }}
|
||||||
{{- with $.Params.images -}}
|
{{ $featuredURL := "" }}
|
||||||
{{- range first 6 . }}
|
{{/* frontmatter */}}
|
||||||
<meta property="og:image" content="{{ . | absURL }}">
|
{{ with $page }}
|
||||||
{{ end -}}
|
{{ with .Params.featureimage }}
|
||||||
{{- else -}}
|
{{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
|
||||||
{{- $images := $.Resources.ByType "image" -}}
|
{{ if site.Params.hotlinkFeatureImage }}
|
||||||
{{- $featured := $images.GetMatch "*feature*" -}}
|
{{ $featuredURL = . }}
|
||||||
{{- if not $featured }}{{ $featured = $images.GetMatch "{*cover*,*thumbnail*}" }}{{ end -}}
|
{{ else }}
|
||||||
{{ if and .Params.featureimage (not $featured) }}
|
{{ $featured = resources.GetRemote . }}
|
||||||
{{- $url:= .Params.featureimage -}}
|
|
||||||
{{ $featured = resources.GetRemote $url }}
|
|
||||||
{{ end }}
|
|
||||||
{{- if not $featured }}
|
|
||||||
{{ with .Site.Params.defaultFeaturedImage }}{{ $featured = resources.Get . }}{{ end }}
|
|
||||||
{{ end -}}
|
|
||||||
{{- with $featured -}}
|
|
||||||
{{ if or $disableImageOptimization (strings.HasSuffix $featured ".svg") }}
|
|
||||||
{{ with . }}
|
|
||||||
<div
|
|
||||||
class="thumbnail_card_related nozoom w-full"
|
|
||||||
style="background-image:url({{ .RelPermalink }});"></div>
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ else }}
|
{{ else }}
|
||||||
{{ with .Resize "600x" }}
|
{{ $featured = resources.Get . }}
|
||||||
<div
|
|
||||||
class="thumbnail_card_related nozoom w-full"
|
|
||||||
style="background-image:url({{ .RelPermalink }});"></div>
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{- else -}}
|
|
||||||
{{- with $.Site.Params.images }}
|
{{/* page resources */}}
|
||||||
<meta property="og:image" content="{{ index . 0 | absURL }}">
|
{{ if not (or $featured $featuredURL) }}
|
||||||
{{ end -}}
|
{{ $images := .Resources.ByType "image" }}
|
||||||
{{- end -}}
|
{{ range slice "*feature*" "*cover*" "*thumbnail*" }}
|
||||||
{{- end -}}
|
{{ if not $featured }}{{ $featured = $images.GetMatch . }}{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{/* fallback to default */}}
|
||||||
|
{{ if not (or $featured $featuredURL) }}
|
||||||
|
{{ $default := site.Store.Get "defaultFeaturedImage" }}
|
||||||
|
{{ if $default.url }}
|
||||||
|
{{ $featuredURL = $default.url }}
|
||||||
|
{{ else if $default.obj }}
|
||||||
|
{{ $featured = $default.obj }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{/* generate image URL if not hotlink */}}
|
||||||
|
{{ if not $featuredURL }}
|
||||||
|
{{ with $featured }}
|
||||||
|
{{ $featuredURL = .RelPermalink }}
|
||||||
|
{{ if not (or $disableImageOptimization (eq .MediaType.SubType "svg")) }}
|
||||||
|
{{ $featuredURL = (.Resize "600x").RelPermalink }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
|
||||||
|
<article
|
||||||
|
class="relative min-h-full min-w-full overflow-hidden rounded border border-2 border-neutral-200 shadow-2xl dark:border-neutral-700">
|
||||||
|
{{ with $featuredURL }}
|
||||||
|
<div class="flex-none relative overflow-hidden thumbnail_card_related">
|
||||||
|
<img
|
||||||
|
src="{{ . }}"
|
||||||
|
alt="{{ $page.Title }}"
|
||||||
|
loading="lazy"
|
||||||
|
decoding="async"
|
||||||
|
fetchpriority="low"
|
||||||
|
class="not-prose absolute inset-0 w-full h-full object-cover">
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
{{ if and .Draft .Site.Params.article.showDraftLabel }}
|
{{ if and .Draft .Site.Params.article.showDraftLabel }}
|
||||||
<span class="absolute top-0 right-0 m-2">
|
<span class="absolute top-0 right-0 m-2">
|
||||||
{{ partial "badge.html" (i18n "article.draft" | emojify) }}
|
{{ partial "badge.html" (i18n "article.draft" | emojify) }}
|
||||||
</span>
|
</span>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<div class="px-6 py-4">
|
<div class="px-6 py-4">
|
||||||
|
<header>
|
||||||
|
<a
|
||||||
{{ with .Params.externalUrl }}
|
{{ with .Params.externalUrl }}
|
||||||
<div
|
href="{{ . }}" target="_blank" rel="external"
|
||||||
class="group-hover-card-title decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 group-hover:underline group-hover:underline-offset-2">
|
{{ else }}
|
||||||
{{ $.Title | emojify }}
|
href="{{ .RelPermalink }}"
|
||||||
|
{{ end }}
|
||||||
|
class="not-prose before:absolute before:inset-0 decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 hover:underline hover:underline-offset-2">
|
||||||
|
<h2>
|
||||||
|
{{ .Title | emojify }}
|
||||||
|
{{ if .Params.externalUrl }}
|
||||||
<span class="cursor-default align-top text-xs text-neutral-400 dark:text-neutral-500">
|
<span class="cursor-default align-top text-xs text-neutral-400 dark:text-neutral-500">
|
||||||
<span class="rtl:hidden">↗</span>
|
<span class="rtl:hidden">↗</span>
|
||||||
<span class="ltr:hidden">↖</span>
|
<span class="ltr:hidden">↖</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
|
||||||
{{ else }}
|
|
||||||
<div
|
|
||||||
class="group-hover-card-title decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 group-hover:underline group-hover:underline-offset-2">
|
|
||||||
{{ .Title | emojify }}
|
|
||||||
</div>
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<div class="group-hover-cancel text-sm text-neutral-500 dark:text-neutral-400">
|
</h2>
|
||||||
|
</a>
|
||||||
|
</header>
|
||||||
|
<div class="text-sm text-neutral-500 dark:text-neutral-400">
|
||||||
{{ partial "article-meta/basic.html" . }}
|
{{ partial "article-meta/basic.html" . }}
|
||||||
</div>
|
</div>
|
||||||
{{ if .Params.showSummary | default (.Site.Params.list.showSummary | default false) }}
|
{{ if .Params.showSummary | default (.Site.Params.list.showSummary | default false) }}
|
||||||
@@ -69,4 +96,4 @@
|
|||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
<div class="px-6 pt-4 pb-2"></div>
|
<div class="px-6 pt-4 pb-2"></div>
|
||||||
</div>
|
</article>
|
||||||
@@ -1,64 +1,97 @@
|
|||||||
{{ $disableImageOptimization := .Page.Site.Params.disableImageOptimization | default false }}
|
{{/* Used by
|
||||||
<div
|
1. list.html and term.html (when the cardView option is enabled)
|
||||||
class="group-hover-card group relative min-h-full min-w-full overflow-hidden rounded border border-2 border-neutral-200 shadow-2xl dark:border-neutral-700">
|
2. Recent articles template (when the cardView option is enabled)
|
||||||
<a
|
3. Shortcode list.html
|
||||||
{{ partial "article-link/_external-link.html" . | safeHTMLAttr }}
|
*/}}
|
||||||
class="absolute inset-0"
|
{{ $disableImageOptimization := site.Store.Get "disableImageOptimization" }}
|
||||||
aria-label="{{ $.Title }}"></a>
|
|
||||||
{{- with $.Params.images -}}
|
{{ $page := .Page }}
|
||||||
{{- range first 6 . }}
|
{{ $featured := "" }}
|
||||||
<meta property="og:image" content="{{ . | absURL }}">
|
{{ $featuredURL := "" }}
|
||||||
{{ end -}}
|
{{ if not .Params.hideFeatureImage }}
|
||||||
{{- else -}}
|
{{/* frontmatter */}}
|
||||||
{{- $images := $.Resources.ByType "image" -}}
|
{{ with $page }}
|
||||||
{{- $featured := $images.GetMatch "*feature*" -}}
|
{{ with .Params.featureimage }}
|
||||||
{{- if not $featured }}{{ $featured = $images.GetMatch "{*cover*,*thumbnail*}" }}{{ end -}}
|
{{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
|
||||||
{{ if and .Params.featureimage (not $featured) }}
|
{{ if site.Params.hotlinkFeatureImage }}
|
||||||
{{- $url:= .Params.featureimage -}}
|
{{ $featuredURL = . }}
|
||||||
{{ $featured = resources.GetRemote $url }}
|
{{ else }}
|
||||||
{{ end }}
|
{{ $featured = resources.GetRemote . }}
|
||||||
{{- if not $featured }}
|
|
||||||
{{ with .Site.Params.defaultFeaturedImage }}{{ $featured = resources.Get . }}{{ end }}
|
|
||||||
{{ end -}}
|
|
||||||
{{ if .Params.hideFeatureImage }}{{ $featured = false }}{{ end }}
|
|
||||||
{{- with $featured -}}
|
|
||||||
{{ if or $disableImageOptimization (strings.HasSuffix $featured ".svg") }}
|
|
||||||
{{ with . }}
|
|
||||||
<div class="thumbnail_card nozoom w-full" style="background-image:url({{ .RelPermalink }});"></div>
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ else }}
|
{{ else }}
|
||||||
{{ with .Resize "600x" }}
|
{{ $featured = resources.Get . }}
|
||||||
<div class="thumbnail_card nozoom w-full" style="background-image:url({{ .RelPermalink }});"></div>
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{- else -}}
|
|
||||||
{{- with $.Site.Params.images }}
|
{{/* page resources */}}
|
||||||
<meta property="og:image" content="{{ index . 0 | absURL }}">
|
{{ if not (or $featured $featuredURL) }}
|
||||||
{{ end -}}
|
{{ $images := .Resources.ByType "image" }}
|
||||||
{{- end -}}
|
{{ range slice "*feature*" "*cover*" "*thumbnail*" }}
|
||||||
{{- end -}}
|
{{ if not $featured }}{{ $featured = $images.GetMatch . }}{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{/* fallback to default */}}
|
||||||
|
{{ if not (or $featured $featuredURL) }}
|
||||||
|
{{ $default := site.Store.Get "defaultFeaturedImage" }}
|
||||||
|
{{ if $default.url }}
|
||||||
|
{{ $featuredURL = $default.url }}
|
||||||
|
{{ else if $default.obj }}
|
||||||
|
{{ $featured = $default.obj }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{/* generate image URL if not hotlink */}}
|
||||||
|
{{ if not $featuredURL }}
|
||||||
|
{{ with $featured }}
|
||||||
|
{{ $featuredURL = .RelPermalink }}
|
||||||
|
{{ if not (or $disableImageOptimization (eq .MediaType.SubType "svg")) }}
|
||||||
|
{{ $featuredURL = (.Resize "600x").RelPermalink }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
|
||||||
|
<article
|
||||||
|
class="relative min-h-full min-w-full overflow-hidden rounded border border-2 border-neutral-200 shadow-2xl dark:border-neutral-700">
|
||||||
|
{{ with $featuredURL }}
|
||||||
|
<div class="flex-none relative overflow-hidden thumbnail_card">
|
||||||
|
<img
|
||||||
|
src="{{ . }}"
|
||||||
|
alt="{{ $page.Title | plainify }}"
|
||||||
|
loading="lazy"
|
||||||
|
decoding="async"
|
||||||
|
class="not-prose absolute inset-0 w-full h-full object-cover">
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
{{ if and .Draft .Site.Params.article.showDraftLabel }}
|
{{ if and .Draft .Site.Params.article.showDraftLabel }}
|
||||||
<span class="absolute top-0 right-0 m-2">
|
<span class="absolute top-0 right-0 m-2">
|
||||||
{{ partial "badge.html" (i18n "article.draft" | emojify) }}
|
{{ partial "badge.html" (i18n "article.draft" | emojify) }}
|
||||||
</span>
|
</span>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<div class="px-6 py-4">
|
<div class="px-6 py-4">
|
||||||
|
<header>
|
||||||
|
<a
|
||||||
{{ with .Params.externalUrl }}
|
{{ with .Params.externalUrl }}
|
||||||
<div
|
href="{{ . }}" target="_blank" rel="external"
|
||||||
class="group-hover-card-title decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 group-hover:underline group-hover:underline-offset-2">
|
{{ else }}
|
||||||
{{ $.Title | emojify }}
|
href="{{ .RelPermalink }}"
|
||||||
|
{{ end }}
|
||||||
|
class="not-prose before:absolute before:inset-0 decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 hover:underline hover:underline-offset-2">
|
||||||
|
<h2>
|
||||||
|
{{ .Title | emojify }}
|
||||||
|
{{ if .Params.externalUrl }}
|
||||||
<span class="cursor-default align-top text-xs text-neutral-400 dark:text-neutral-500">
|
<span class="cursor-default align-top text-xs text-neutral-400 dark:text-neutral-500">
|
||||||
<span class="rtl:hidden">↗</span>
|
<span class="rtl:hidden">↗</span>
|
||||||
<span class="ltr:hidden">↖</span>
|
<span class="ltr:hidden">↖</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
|
||||||
{{ else }}
|
|
||||||
<div
|
|
||||||
class="group-hover-card-title decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 group-hover:underline group-hover:underline-offset-2">
|
|
||||||
{{ .Title | emojify }}
|
|
||||||
</div>
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<div class="group-hover-cancel text-sm text-neutral-500 dark:text-neutral-400">
|
</h2>
|
||||||
|
</a>
|
||||||
|
</header>
|
||||||
|
<div class="text-sm text-neutral-500 dark:text-neutral-400">
|
||||||
{{ partial "article-meta/basic.html" . }}
|
{{ partial "article-meta/basic.html" . }}
|
||||||
</div>
|
</div>
|
||||||
{{ if .Params.showSummary | default (.Site.Params.list.showSummary | default false) }}
|
{{ if .Params.showSummary | default (.Site.Params.list.showSummary | default false) }}
|
||||||
@@ -66,4 +99,4 @@
|
|||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
<div class="px-6 pt-4 pb-2"></div>
|
<div class="px-6 pt-4 pb-2"></div>
|
||||||
</div>
|
</article>
|
||||||
@@ -1,97 +1,116 @@
|
|||||||
{{ $constrainItemsWidth := .Page.Site.Params.list.constrainItemsWidth | default false }}
|
{{/* Used by
|
||||||
|
1. list.html and term.html (when the cardView option is not enabled)
|
||||||
|
2. Recent articles template (when the cardView option is not enabled)
|
||||||
|
3. Shortcode list.html
|
||||||
|
*/}}
|
||||||
|
{{ $constrainItemsWidth := site.Params.list.constrainItemsWidth | default false }}
|
||||||
|
{{ $disableImageOptimization := site.Store.Get "disableImageOptimization" }}
|
||||||
|
|
||||||
{{ $articleClasses := "group-hover-card group flex flex-wrap md:flex-nowrap article relative" }}
|
{{ $cardClasses := "flex flex-col md:flex-row relative" }}
|
||||||
{{ if .Site.Params.list.showCards }}
|
{{ $imgWrapperClasses := "" }}
|
||||||
{{ $articleClasses = delimit (slice $articleClasses "border border-neutral-200 dark:border-neutral-700 border-2 rounded-md overflow-hidden") " " }}
|
{{ $cardContentClasses := "" }}
|
||||||
|
|
||||||
|
{{ if site.Params.list.showCards }}
|
||||||
|
{{ $cardClasses = printf "%s overflow-hidden rounded-md border-2 border-neutral-200 dark:border-neutral-700" $cardClasses }}
|
||||||
|
{{ $imgWrapperClasses = "" }}
|
||||||
|
{{ $cardContentClasses = printf "%s p-4" $cardContentClasses }}
|
||||||
{{ else }}
|
{{ else }}
|
||||||
{{ $articleClasses = delimit (slice $articleClasses "") " " }}
|
{{ $cardClasses = $cardClasses }}
|
||||||
{{ end }}
|
{{ $imgWrapperClasses = printf "%s thumbnail-shadow md:mr-7" $imgWrapperClasses }}
|
||||||
|
{{ $cardContentClasses = printf "%s mt-3 md:mt-0" $cardContentClasses }}
|
||||||
{{ $articleImageClasses := "w-full md:w-auto h-full thumbnail nozoom" }}
|
|
||||||
{{ if .Site.Params.list.showCards }}
|
|
||||||
{{ $articleImageClasses = delimit (slice $articleImageClasses "") " " }}
|
|
||||||
{{ else }}
|
|
||||||
{{ $articleImageClasses = delimit (slice $articleImageClasses "thumbnailshadow md:mr-7") " " }}
|
|
||||||
{{ end }}
|
|
||||||
|
|
||||||
{{ $disableImageOptimization := .Page.Site.Params.disableImageOptimization | default false }}
|
|
||||||
|
|
||||||
{{ $articleInnerClasses := "" }}
|
|
||||||
{{ if .Site.Params.list.showCards }}
|
|
||||||
{{ $articleInnerClasses = delimit (slice $articleInnerClasses "p-4") " " }}
|
|
||||||
{{ else }}
|
|
||||||
{{ $articleInnerClasses = delimit (slice $articleInnerClasses "mt-3 md:mt-0") " " }}
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{ if $constrainItemsWidth }}
|
{{ if $constrainItemsWidth }}
|
||||||
{{ $articleClasses = delimit (slice $articleClasses "max-w-prose") " " }}
|
{{ $cardClasses = printf "%s max-w-prose" $cardClasses }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ $page := .Page }}
|
||||||
|
{{ $featured := "" }}
|
||||||
|
{{ $featuredURL := "" }}
|
||||||
|
{{ if not .Params.hideFeatureImage }}
|
||||||
|
{{/* frontmatter */}}
|
||||||
|
{{ with $page }}
|
||||||
|
{{ with .Params.featureimage }}
|
||||||
|
{{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
|
||||||
|
{{ if site.Params.hotlinkFeatureImage }}
|
||||||
|
{{ $featuredURL = . }}
|
||||||
|
{{ else }}
|
||||||
|
{{ $featured = resources.GetRemote . }}
|
||||||
|
{{ end }}
|
||||||
|
{{ else }}
|
||||||
|
{{ $featured = resources.Get . }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{/* page resources */}}
|
||||||
|
{{ if not (or $featured $featuredURL) }}
|
||||||
|
{{ $images := .Resources.ByType "image" }}
|
||||||
|
{{ range slice "*feature*" "*cover*" "*thumbnail*" }}
|
||||||
|
{{ if not $featured }}{{ $featured = $images.GetMatch . }}{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{/* fallback to default */}}
|
||||||
|
{{ if not (or $featured $featuredURL) }}
|
||||||
|
{{ $default := site.Store.Get "defaultFeaturedImage" }}
|
||||||
|
{{ if $default.url }}
|
||||||
|
{{ $featuredURL = $default.url }}
|
||||||
|
{{ else if $default.obj }}
|
||||||
|
{{ $featured = $default.obj }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{/* generate image URL if not hotlink */}}
|
||||||
|
{{ if not $featuredURL }}
|
||||||
|
{{ with $featured }}
|
||||||
|
{{ $featuredURL = .RelPermalink }}
|
||||||
|
{{ if not (or $disableImageOptimization (eq .MediaType.SubType "svg")) }}
|
||||||
|
{{ $featuredURL = (.Resize "600x").RelPermalink }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
|
|
||||||
<div class="{{ $articleClasses }}">
|
<article class="{{ $cardClasses }}">
|
||||||
|
{{ with $featuredURL }}
|
||||||
|
<div class="flex-none relative overflow-hidden {{ $imgWrapperClasses }} thumbnail">
|
||||||
|
<img
|
||||||
|
src="{{ . }}"
|
||||||
|
alt="{{ $.Params.featuredImageAlt | default ($.Title | emojify) }}"
|
||||||
|
loading="lazy"
|
||||||
|
decoding="async"
|
||||||
|
class="not-prose absolute inset-0 w-full h-full object-cover">
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
<div class="{{ $cardContentClasses }}">
|
||||||
|
<header class="items-center text-start text-xl font-semibold">
|
||||||
<a
|
<a
|
||||||
{{ partial "article-link/_external-link.html" . | safeHTMLAttr }}
|
|
||||||
class="absolute inset-0"
|
|
||||||
aria-label="{{ $.Title }}"></a>
|
|
||||||
{{- with $.Params.images -}}
|
|
||||||
{{- range first 6 . }}
|
|
||||||
<meta property="og:image" content="{{ . | absURL }}">
|
|
||||||
{{ end -}}
|
|
||||||
{{- else -}}
|
|
||||||
{{- $images := $.Resources.ByType "image" -}}
|
|
||||||
{{- $featured := $images.GetMatch "*feature*" -}}
|
|
||||||
{{- if not $featured }}{{ $featured = $images.GetMatch "{*cover*,*thumbnail*}" }}{{ end -}}
|
|
||||||
{{ if and .Params.featureimage (not $featured) }}
|
|
||||||
{{- $url:= .Params.featureimage -}}
|
|
||||||
{{ $featured = resources.GetRemote $url }}
|
|
||||||
{{ end }}
|
|
||||||
{{- if not $featured }}
|
|
||||||
{{ with .Site.Params.defaultFeaturedImage }}{{ $featured = resources.Get . }}{{ end }}
|
|
||||||
{{ end -}}
|
|
||||||
{{ if .Params.hideFeatureImage }}{{ $featured = false }}{{ end }}
|
|
||||||
{{- with $featured -}}
|
|
||||||
{{ if or $disableImageOptimization (strings.HasSuffix $featured ".svg") }}
|
|
||||||
{{ with . }}
|
|
||||||
<div class="{{ $articleImageClasses }}" style="background-image:url({{ .RelPermalink }});"></div>
|
|
||||||
{{ end }}
|
|
||||||
{{ else }}
|
|
||||||
{{ with .Resize "600x" }}
|
|
||||||
<div class="{{ $articleImageClasses }}" style="background-image:url({{ .RelPermalink }});"></div>
|
|
||||||
{{ end }}
|
|
||||||
{{ end }}
|
|
||||||
{{- else -}}
|
|
||||||
{{- with $.Site.Params.images }}
|
|
||||||
<meta property="og:image" content="{{ index . 0 | absURL }}">
|
|
||||||
{{ end -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
|
|
||||||
<div class="{{ $articleInnerClasses }}">
|
|
||||||
<div class="items-center text-start text-xl font-semibold">
|
|
||||||
{{ with .Params.externalUrl }}
|
{{ with .Params.externalUrl }}
|
||||||
<div
|
href="{{ . }}" target="_blank" rel="external"
|
||||||
class="group-hover-card-title decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 group-hover:underline group-hover:underline-offset-2">
|
{{ else }}
|
||||||
{{ $.Title | emojify }}
|
href="{{ .RelPermalink }}"
|
||||||
|
{{ end }}
|
||||||
|
class="not-prose before:absolute before:inset-0 decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 hover:underline hover:underline-offset-2">
|
||||||
|
<h2>
|
||||||
|
{{ .Title | emojify }}
|
||||||
|
{{ if .Params.externalUrl }}
|
||||||
<span class="cursor-default align-top text-xs text-neutral-400 dark:text-neutral-500">
|
<span class="cursor-default align-top text-xs text-neutral-400 dark:text-neutral-500">
|
||||||
<span class="rtl:hidden">↗</span>
|
<span class="rtl:hidden">↗</span>
|
||||||
<span class="ltr:hidden">↖</span>
|
<span class="ltr:hidden">↖</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
|
||||||
{{ else }}
|
|
||||||
<div
|
|
||||||
class="group-hover-card-title decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 group-hover:underline group-hover:underline-offset-2">
|
|
||||||
{{ .Title | emojify }}
|
|
||||||
</div>
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
</h2>
|
||||||
|
</a>
|
||||||
{{ if and .Draft .Site.Params.article.showDraftLabel }}
|
{{ if and .Draft .Site.Params.article.showDraftLabel }}
|
||||||
<div class="ms-2">{{ partial "badge.html" (i18n "article.draft" | emojify) }}</div>
|
<div class="ms-2">{{ partial "badge.html" (i18n "article.draft" | emojify) }}</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ if templates.Exists "partials/extend-article-link.html" }}
|
{{ if templates.Exists "partials/extend-article-link.html" }}
|
||||||
{{ partial "extend-article-link.html" . }}
|
{{ partial "extend-article-link.html" . }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</header>
|
||||||
<div class="group-hover-cancel text-sm text-neutral-500 dark:text-neutral-400">
|
<div class="text-sm text-neutral-500 dark:text-neutral-400">
|
||||||
{{ partial "article-meta/basic.html" . }}
|
{{ partial "article-meta/basic.html" . }}
|
||||||
</div>
|
</div>
|
||||||
{{ if .Params.showSummary | default (.Site.Params.list.showSummary | default false) }}
|
{{ if .Params.showSummary | default (.Site.Params.list.showSummary | default false) }}
|
||||||
@@ -99,4 +118,4 @@
|
|||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
<div class="px-6 pt-4 pb-2"></div>
|
<div class="px-6 pt-4 pb-2"></div>
|
||||||
</div>
|
</article>
|
||||||
@@ -9,52 +9,36 @@
|
|||||||
<div class="pt-8">
|
<div class="pt-8">
|
||||||
<hr class="border-dotted border-neutral-300 dark:border-neutral-600">
|
<hr class="border-dotted border-neutral-300 dark:border-neutral-600">
|
||||||
<div class="flex justify-between pt-3">
|
<div class="flex justify-between pt-3">
|
||||||
<span>
|
<span class="flex flex-col">
|
||||||
{{ if $prev }}
|
{{ if $prev }}
|
||||||
<a class="flex group mr-3" href="{{ $prev.RelPermalink }}">
|
<a
|
||||||
<span
|
class="flex text-neutral-700 hover:text-primary-600 dark:text-neutral dark:hover:text-primary-400"
|
||||||
class="mr-3 text-neutral-700 group-hover:text-primary-600 ltr:inline rtl:hidden dark:text-neutral dark:group-hover:text-primary-400"
|
href="{{ $prev.RelPermalink }}">
|
||||||
>←</span
|
<span class="leading-6">
|
||||||
>
|
<span class="inline-block rtl:rotate-180">←</span> {{ $prev.Title | emojify }}
|
||||||
<span
|
</span>
|
||||||
class="ml-3 text-neutral-700 group-hover:text-primary-600 ltr:hidden rtl:inline dark:text-neutral dark:group-hover:text-primary-400"
|
</a>
|
||||||
>→</span
|
|
||||||
>
|
|
||||||
<span class="flex flex-col">
|
|
||||||
<span class="mt-[0.1rem] leading-6 group-hover:underline group-hover:decoration-primary-500"
|
|
||||||
>{{ $prev.Title | emojify }}</span
|
|
||||||
>
|
|
||||||
<span class="mt-[0.1rem] text-xs text-neutral-500 dark:text-neutral-400">
|
|
||||||
{{ if .Params.showDate | default (.Site.Params.article.showDate | default true) }}
|
{{ if .Params.showDate | default (.Site.Params.article.showDate | default true) }}
|
||||||
|
<span class="ms-6 mt-1 text-xs text-neutral-500 dark:text-neutral-400">
|
||||||
{{ partial "meta/date.html" $prev.Date }}
|
{{ partial "meta/date.html" $prev.Date }}
|
||||||
|
</span>
|
||||||
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</span>
|
</span>
|
||||||
</span>
|
<span class="flex flex-col items-end">
|
||||||
</a>
|
|
||||||
{{ end }}
|
|
||||||
</span>
|
|
||||||
<span>
|
|
||||||
{{ if $next }}
|
{{ if $next }}
|
||||||
<a class="flex text-right group ml-3" href="{{ $next.RelPermalink }}">
|
<a
|
||||||
<span class="flex flex-col">
|
class="flex text-right text-neutral-700 hover:text-primary-600 dark:text-neutral dark:hover:text-primary-400"
|
||||||
<span class="mt-[0.1rem] leading-6 group-hover:underline group-hover:decoration-primary-500"
|
href="{{ $next.RelPermalink }}">
|
||||||
>{{ $next.Title | emojify }}</span
|
<span class="leading-6">
|
||||||
>
|
{{ $next.Title | emojify }} <span class="inline-block rtl:rotate-180">→</span>
|
||||||
<span class="mt-[0.1rem] text-xs text-neutral-500 dark:text-neutral-400">
|
|
||||||
{{ if .Params.showDate | default (.Site.Params.article.showDate | default true) }}
|
|
||||||
{{ partial "meta/date.html" $next.Date }}
|
|
||||||
{{ end }}
|
|
||||||
</span>
|
</span>
|
||||||
</span>
|
|
||||||
<span
|
|
||||||
class="ml-3 text-neutral-700 group-hover:text-primary-600 ltr:inline rtl:hidden dark:text-neutral dark:group-hover:text-primary-400"
|
|
||||||
>→</span
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="mr-3 text-neutral-700 group-hover:text-primary-600 ltr:hidden rtl:inline dark:text-neutral dark:group-hover:text-primary-400"
|
|
||||||
>←</span
|
|
||||||
>
|
|
||||||
</a>
|
</a>
|
||||||
|
{{ if .Params.showDate | default (.Site.Params.article.showDate | default true) }}
|
||||||
|
<span class="me-6 mt-1 text-xs text-neutral-500 dark:text-neutral-400">
|
||||||
|
{{ partial "meta/date.html" $next.Date }}
|
||||||
|
</span>
|
||||||
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -8,14 +8,16 @@
|
|||||||
{{ $authorImage = resources.Get . }}
|
{{ $authorImage = resources.Get . }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ if $authorImage }}
|
{{ if $authorImage }}
|
||||||
|
{{ $final := $authorImage }}
|
||||||
{{ if not $disableImageOptimization }}
|
{{ if not $disableImageOptimization }}
|
||||||
{{ $authorImage = $authorImage.Fill "192x192" }}
|
{{ $final = $authorImage.Fill "192x192" }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<img
|
<img
|
||||||
class="!mt-0 !mb-0 h-24 w-24 rounded-full me-4"
|
class="!mt-0 !mb-0 h-24 w-24 rounded-full me-4"
|
||||||
width="96"
|
width="96"
|
||||||
height="96"
|
height="96"
|
||||||
src="{{ $authorImage.RelPermalink }}">
|
src="{{ $final.RelPermalink }}"
|
||||||
|
data-zoom-src="{{ $authorImage.RelPermalink }}">
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<div class="place-self-center">
|
<div class="place-self-center">
|
||||||
@@ -42,9 +44,12 @@
|
|||||||
href="{{ $link }}"
|
href="{{ $link }}"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
aria-label="{{ $name | title }}"
|
aria-label="{{ $name | title }}"
|
||||||
rel="me noopener noreferrer"
|
title="{{ $name | title }}"
|
||||||
><span class="inline-block align-text-bottom">{{ partial "icon.html" $name }}</span></a
|
rel="me noopener noreferrer">
|
||||||
>
|
<span class="inline-block align-text-bottom">
|
||||||
|
{{ partial "icon.html" $name }}
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -8,26 +8,30 @@
|
|||||||
{{ $authorImage = resources.Get . }}
|
{{ $authorImage = resources.Get . }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ if $authorImage }}
|
{{ if $authorImage }}
|
||||||
|
{{ $final := $authorImage }}
|
||||||
{{ if not $disableImageOptimization }}
|
{{ if not $disableImageOptimization }}
|
||||||
{{ $authorImage = $authorImage.Fill "192x192" }}
|
{{ $final = $authorImage.Fill "192x192" }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<img
|
<img
|
||||||
class="!mt-0 !mb-0 h-24 w-24 rounded-full me-4"
|
class="!mt-0 !mb-0 h-24 w-24 rounded-full me-4"
|
||||||
width="96"
|
width="96"
|
||||||
height="96"
|
height="96"
|
||||||
alt="{{ $.Site.Params.Author.name | default " Author" }}"
|
alt="{{ $.Site.Params.Author.name | default " Author" }}"
|
||||||
src="{{ $authorImage.RelPermalink }}">
|
src="{{ $final.RelPermalink }}"
|
||||||
|
data-zoom-src="{{ $authorImage.RelPermalink }}">
|
||||||
{{ else }}
|
{{ else }}
|
||||||
{{ $authorImage := resources.GetRemote . }}
|
{{ $authorImage := resources.GetRemote . }}
|
||||||
|
{{ $final := $authorImage }}
|
||||||
{{ if not $disableImageOptimization }}
|
{{ if not $disableImageOptimization }}
|
||||||
{{ $authorImage = $authorImage.Fill "192x192" }}
|
{{ $final = $authorImage.Fill "192x192" }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<img
|
<img
|
||||||
class="!mt-0 !mb-0 h-24 w-24 rounded-full me-4"
|
class="!mt-0 !mb-0 h-24 w-24 rounded-full me-4"
|
||||||
width="96"
|
width="96"
|
||||||
height="96"
|
height="96"
|
||||||
alt="{{ $.Site.Params.Author.name | default " Author" }}"
|
alt="{{ $.Site.Params.Author.name | default " Author" }}"
|
||||||
src="{{ $authorImage.RelPermalink }}">
|
src="{{ $authorImage.RelPermalink }}"
|
||||||
|
data-zoom-src="{{ $authorImage.RelPermalink }}">
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<div class="place-self-center">
|
<div class="place-self-center">
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
{{ end }}
|
{{ end }}
|
||||||
{{ $navClass := printf "flex flex-row pb-4 text-base font-medium text-neutral-500 dark:text-neutral-400 %s" (cond $onlyIcon "overflow-x-auto py-2" "") }}
|
{{ $navClass := printf "flex flex-row pb-4 text-base font-medium text-neutral-500 dark:text-neutral-400 %s" (cond $onlyIcon "overflow-x-auto py-2" "") }}
|
||||||
{{ $ulClass := printf "flex list-none %s" (cond $onlyIcon "flex-row" "flex-col sm:flex-row") }}
|
{{ $ulClass := printf "flex list-none %s" (cond $onlyIcon "flex-row" "flex-col sm:flex-row") }}
|
||||||
{{ $liClass := printf "flex mb-1 text-end sm:mb-0 sm:me-7 sm:last:me-0 %s" (cond $onlyIcon "ltr:mr-4 rtl:ml-4" "") }}
|
{{ $liClass := printf "flex mb-1 text-end sm:mb-0 sm:me-7 sm:last:me-0 %s" (cond $onlyIcon "me-4" "") }}
|
||||||
<nav class="{{ $navClass }}">
|
<nav class="{{ $navClass }}">
|
||||||
<ul class="{{ $ulClass }}">
|
<ul class="{{ $ulClass }}">
|
||||||
{{ range .Site.Menus.footer }}
|
{{ range .Site.Menus.footer }}
|
||||||
|
|||||||
@@ -8,21 +8,21 @@
|
|||||||
<meta name="theme-color">
|
<meta name="theme-color">
|
||||||
|
|
||||||
{{/* Title */}}
|
{{/* Title */}}
|
||||||
{{ if .IsHome -}}
|
{{ if .IsHome }}
|
||||||
<title>{{ .Site.Title | emojify }}</title>
|
<title>{{ .Site.Title | emojify }}</title>
|
||||||
<meta name="title" content="{{ .Site.Title | emojify }}">
|
<meta name="title" content="{{ .Site.Title | emojify }}">
|
||||||
{{- else -}}
|
{{ else }}
|
||||||
<title>{{ .Title | emojify }} · {{ .Site.Title | emojify }}</title>
|
<title>{{ .Title | emojify }} · {{ .Site.Title | emojify }}</title>
|
||||||
<meta name="title" content="{{ .Title | emojify }} · {{ .Site.Title | emojify }}">
|
<meta name="title" content="{{ .Title | emojify }} · {{ .Site.Title | emojify }}">
|
||||||
{{- end }}
|
{{ end }}
|
||||||
|
|
||||||
{{/* Metadata */}}
|
{{/* Metadata */}}
|
||||||
{{ with (.Params.Summary | default .Params.Description) | default .Site.Params.description -}}
|
{{ with (.Params.Summary | default .Params.Description) | default .Site.Params.description }}
|
||||||
<meta name="description" content="{{ . }}">
|
<meta name="description" content="{{ . }}">
|
||||||
{{- end }}
|
{{ end }}
|
||||||
{{ with .Params.Tags | default .Site.Params.keywords -}}
|
{{ with .Params.Tags | default .Site.Params.keywords }}
|
||||||
<meta name="keywords" content="{{ range . }}{{ . }},{{ end -}}">
|
<meta name="keywords" content="{{ range . }}{{ . }},{{ end }}">
|
||||||
{{- end }}
|
{{ end }}
|
||||||
{{ with .Site.Params.robots }}
|
{{ with .Site.Params.robots }}
|
||||||
<meta name="robots" content="{{ . }}">
|
<meta name="robots" content="{{ . }}">
|
||||||
{{ end }}
|
{{ end }}
|
||||||
@@ -30,104 +30,51 @@
|
|||||||
<meta name="robots" content="{{ . }}">
|
<meta name="robots" content="{{ . }}">
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<link rel="canonical" href="{{ .Permalink }}">
|
<link rel="canonical" href="{{ .Permalink }}">
|
||||||
{{ range .AlternativeOutputFormats -}}
|
{{ range .AlternativeOutputFormats }}
|
||||||
{{ printf `
|
{{ printf `
|
||||||
<link rel="%s" type="%s" href="%s" title="%s" />` .Rel .MediaType.Type .RelPermalink ($.Site.Title | emojify) |
|
<link rel="%s" type="%s" href="%s" title="%s" />` .Rel .MediaType.Type .RelPermalink ($.Site.Title | emojify) |
|
||||||
safeHTML
|
safeHTML
|
||||||
}}
|
}}
|
||||||
{{ end -}}
|
|
||||||
|
|
||||||
{{/* Asset bundles */}}
|
|
||||||
{{ $assets := newScratch }}
|
|
||||||
{{ $cssScheme := resources.Get (printf "css/schemes/%s.css" (.Site.Params.colorScheme | default "blowfish")) }}
|
|
||||||
{{ if not $cssScheme }}
|
|
||||||
{{ $cssScheme = resources.Get "css/schemes/blowfish.css" }}
|
|
||||||
{{ end }}
|
|
||||||
{{ $assets.Add "css" (slice $cssScheme) }}
|
|
||||||
{{ $cssMain := resources.Get "css/compiled/main.css" }}
|
|
||||||
{{ $assets.Add "css" (slice $cssMain) }}
|
|
||||||
{{ $cssCustom := resources.Get "css/custom.css" }}
|
|
||||||
{{ if $cssCustom }}
|
|
||||||
{{ $assets.Add "css" (slice $cssCustom) }}
|
|
||||||
{{ end }}
|
|
||||||
{{ if not .Site.Params.disableImageZoom | default true }}
|
|
||||||
{{ $cssZoom := resources.Get "lib/zoom/style.css" }}
|
|
||||||
{{ $assets.Add "css" (slice $cssZoom) }}
|
|
||||||
{{ end }}
|
|
||||||
{{ $bundleCSS := $assets.Get "css" | resources.Concat "css/main.bundle.css" | resources.Minify | resources.Fingerprint
|
|
||||||
(.Site.Params.fingerprintAlgorithm | default "sha512")
|
|
||||||
}}
|
|
||||||
<link
|
|
||||||
type="text/css"
|
|
||||||
rel="stylesheet"
|
|
||||||
href="{{ $bundleCSS.RelPermalink }}"
|
|
||||||
integrity="{{ $bundleCSS.Data.Integrity }}">
|
|
||||||
|
|
||||||
{{ $jsAppearance := resources.Get "js/appearance.js" }}
|
|
||||||
{{ $jsAppearance = $jsAppearance | resources.ExecuteAsTemplate "js/appearance.js" . | resources.Minify | resources.Fingerprint (.Site.Params.fingerprintAlgorithm | default "sha512") }}
|
|
||||||
<script
|
|
||||||
type="text/javascript"
|
|
||||||
src="{{ $jsAppearance.RelPermalink }}"
|
|
||||||
integrity="{{ $jsAppearance.Data.Integrity }}"></script>
|
|
||||||
{{ if .Site.Params.enableA11y | default false }}
|
|
||||||
{{ $jsA11y := resources.Get "js/a11y.js" }}
|
|
||||||
{{ $jsA11y = $jsA11y | resources.Minify | resources.Fingerprint (site.Params.fingerprintAlgorithm | default "sha512") }}
|
|
||||||
<script src="{{ $jsA11y.RelPermalink }}" integrity="{{ $jsA11y.Data.Integrity }}"></script>
|
|
||||||
{{ end }}
|
|
||||||
{{ $shouldIncludeZenMode := or (.Site.Params.enableA11y | default false) (.Params.showZenMode | default (.Site.Params.article.showZenMode | default false)) }}
|
|
||||||
{{ if and .IsPage $shouldIncludeZenMode }}
|
|
||||||
{{ $jsZenMode := resources.Get "js/zen-mode.js" }}
|
|
||||||
{{ $jsZenMode = $jsZenMode | resources.Minify | resources.Fingerprint (.Site.Params.fingerprintAlgorithm | default "sha512") }}
|
|
||||||
<script
|
|
||||||
type="text/javascript"
|
|
||||||
src="{{ $jsZenMode.RelPermalink }}"
|
|
||||||
integrity="{{ $jsZenMode.Data.Integrity }}"></script>
|
|
||||||
{{ end }}
|
|
||||||
{{ if .Site.Params.enableSearch | default false }}
|
|
||||||
{{ $jsFuse := resources.Get "lib/fuse/fuse.min.js" }}
|
|
||||||
{{ $jsSearch := resources.Get "js/search.js" }}
|
|
||||||
{{ $assets.Add "js" (slice $jsFuse $jsSearch) }}
|
|
||||||
{{ end }}
|
|
||||||
{{ if .Site.Params.enableCodeCopy | default false }}
|
|
||||||
{{ $jsCode := resources.Get "js/code.js" }}
|
|
||||||
{{ $assets.Add "js" (slice $jsCode) }}
|
|
||||||
{{ end }}
|
|
||||||
{{ if .Site.Params.rtl | default false }}
|
|
||||||
{{ $jsRTL := resources.Get "js/rtl.js" }}
|
|
||||||
{{ $assets.Add "js" (slice $jsRTL) }}
|
|
||||||
{{ end }}
|
|
||||||
{{ $jsMobileMenu := resources.Get "js/mobilemenu.js" }}
|
|
||||||
{{ $assets.Add "js" (slice $jsMobileMenu) }}
|
|
||||||
{{ $buttonLikes := resources.Get "js/button-likes.js" }}
|
|
||||||
{{ $assets.Add "js" (slice $buttonLikes) }}
|
|
||||||
{{ $katexRender := resources.Get "js/katex-render.js" }}
|
|
||||||
{{ $assets.Add "js" (slice $katexRender) }}
|
|
||||||
{{ if $assets.Get "js" }}
|
|
||||||
{{ $bundleJS := $assets.Get "js" | resources.Concat "js/main.bundle.js" | resources.Minify | resources.Fingerprint
|
|
||||||
(.Site.Params.fingerprintAlgorithm | default "sha512")
|
|
||||||
}}
|
|
||||||
<script
|
|
||||||
defer
|
|
||||||
type="text/javascript"
|
|
||||||
id="script-bundle"
|
|
||||||
src="{{ $bundleJS.RelPermalink }}"
|
|
||||||
integrity="{{ $bundleJS.Data.Integrity }}"
|
|
||||||
data-copy="{{ i18n "code.copy" }}"
|
|
||||||
data-copied="{{ i18n "code.copied" }}"></script>
|
|
||||||
{{ end }}
|
|
||||||
{{ if not .Site.Params.disableImageZoom | default true }}
|
|
||||||
{{ $zoomJS := resources.Get "lib/zoom/zoom.min.umd.js" | resources.Fingerprint (.Site.Params.fingerprintAlgorithm | default "sha512") }}
|
|
||||||
<script src="{{ $zoomJS.RelPermalink }}" integrity="{{ $zoomJS.Data.Integrity }}"></script>
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{/* Icons */}}
|
{{/* Me */}}
|
||||||
{{ if templates.Exists "partials/favicons.html" }}
|
{{ with .Site.Params.Author.name }}
|
||||||
{{ partialCached "favicons.html" .Site }}
|
<meta name="author" content="{{ . }}">
|
||||||
|
{{ end }}
|
||||||
|
{{ with .Site.Params.Author.links }}
|
||||||
|
{{ range $links := . }}
|
||||||
|
{{ range $name, $url := $links }}
|
||||||
|
{{ if not (strings.HasPrefix $url "mailto:") }}
|
||||||
|
<link href="{{ $url }}" rel="me">
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{/* Social */}}
|
||||||
|
{{ template "_internal/opengraph.html" . }}
|
||||||
|
{{ template "_internal/twitter_cards.html" . }}
|
||||||
|
{{/* Use defaultSocialImage if feature image does not exist */}}
|
||||||
|
{{ $featureImage := "" }}
|
||||||
|
{{ $pageImages := .Resources.ByType "image" }}
|
||||||
|
{{ range slice "*featured*" "*cover*" "*thumbnail*" }}
|
||||||
|
{{ if not $featureImage }}
|
||||||
|
{{ $featureImage = $pageImages.GetMatch . }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ if not $featureImage }}
|
||||||
|
{{ with .Site.Params.defaultSocialImage }}
|
||||||
|
{{ $socialImage := "" }}
|
||||||
|
{{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
|
||||||
|
{{ $socialImage = resources.GetRemote . }}
|
||||||
{{ else }}
|
{{ else }}
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="{{ "apple-touch-icon.png" | relURL }}">
|
{{ $socialImage = resources.Get . }}
|
||||||
<link rel="icon" type="image/png" sizes="32x32" href="{{ "favicon-32x32.png" | relURL }}">
|
{{ end }}
|
||||||
<link rel="icon" type="image/png" sizes="16x16" href="{{ "favicon-16x16.png" | relURL }}">
|
{{ with $socialImage }}
|
||||||
<link rel="manifest" href="{{ "site.webmanifest" | relURL }}">
|
<meta name="twitter:image" content="{{ .RelPermalink | absURL }}">
|
||||||
|
<meta property="og:image" content="{{ .RelPermalink | absURL }}">
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{/* Site Verification */}}
|
{{/* Site Verification */}}
|
||||||
@@ -147,52 +94,101 @@
|
|||||||
<meta name="fediverse:creator" content="{{ . }}">
|
<meta name="fediverse:creator" content="{{ . }}">
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{/* Social */}}
|
{{ $alg := .Site.Params.fingerprintAlgorithm | default "sha512" }}
|
||||||
{{ template "_internal/opengraph.html" . }}
|
|
||||||
{{ template "_internal/twitter_cards.html" . }}
|
|
||||||
|
|
||||||
{{- /* Main page always uses this; fallback elsewhere if no feature image */ -}}
|
{{/* CSS */}}
|
||||||
{{- /* See https://gohugo.io/templates/embedded/#open-graph */ -}}
|
{{ $cssResources := slice }}
|
||||||
{{- $images := .Resources.ByType "image" -}}
|
{{ $schemeName := .Site.Params.colorScheme | default "blowfish" }}
|
||||||
{{- $socialImage := $images.GetMatch "*feature*" -}}
|
{{ $cssScheme := resources.Get (printf "css/schemes/%s.css" $schemeName) | default (resources.Get "css/schemes/blowfish.css") }}
|
||||||
|
{{ $cssResources = $cssResources | append $cssScheme }}
|
||||||
|
{{ $cssResources = $cssResources | append (resources.Get "css/compiled/main.css") }}
|
||||||
|
{{ with resources.Get "css/custom.css" }}
|
||||||
|
{{ $cssResources = $cssResources | append . }}
|
||||||
|
{{ end }}
|
||||||
|
{{ if not .Site.Params.disableImageZoom | default true }}
|
||||||
|
{{ $cssResources = $cssResources | append (resources.Get "lib/zoom/style.css") }}
|
||||||
|
{{ end }}
|
||||||
|
{{ $bundleCSS := $cssResources | resources.Concat "css/main.bundle.css" | resources.Minify | resources.Fingerprint $alg }}
|
||||||
|
<link
|
||||||
|
type="text/css"
|
||||||
|
rel="stylesheet"
|
||||||
|
href="{{ $bundleCSS.RelPermalink }}"
|
||||||
|
integrity="{{ $bundleCSS.Data.Integrity }}">
|
||||||
|
|
||||||
{{- if not $socialImage -}}
|
{{/* JS loaded immediately */}}
|
||||||
{{- with .Site.Params.defaultSocialImage -}}
|
{{ $jsAppearance := resources.Get "js/appearance.js" | resources.ExecuteAsTemplate "js/appearance.js" . | resources.Minify | resources.Fingerprint $alg }}
|
||||||
{{- if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") -}}
|
<script
|
||||||
{{- $socialImage = resources.GetRemote . -}}
|
type="text/javascript"
|
||||||
{{- else -}}
|
src="{{ $jsAppearance.RelPermalink }}"
|
||||||
{{- $socialImage = resources.Get . -}}
|
integrity="{{ $jsAppearance.Data.Integrity }}"></script>
|
||||||
{{- end -}}
|
{{ $enableA11y := .Site.Params.enableA11y | default false }}
|
||||||
{{- end -}}
|
{{ if $enableA11y }}
|
||||||
{{- end -}}
|
{{ $jsA11y := resources.Get "js/a11y.js" | resources.Minify | resources.Fingerprint $alg }}
|
||||||
|
<script src="{{ $jsA11y.RelPermalink }}" integrity="{{ $jsA11y.Data.Integrity }}"></script>
|
||||||
|
{{ end }}
|
||||||
|
{{ $showZenMode := .Params.showZenMode | default (.Site.Params.article.showZenMode | default false) }}
|
||||||
|
{{ $shouldIncludeZenMode := or $enableA11y $showZenMode }}
|
||||||
|
{{ if and .IsPage $shouldIncludeZenMode }}
|
||||||
|
{{ $jsZenMode := resources.Get "js/zen-mode.js" | resources.Minify | resources.Fingerprint $alg }}
|
||||||
|
<script
|
||||||
|
type="text/javascript"
|
||||||
|
src="{{ $jsZenMode.RelPermalink }}"
|
||||||
|
integrity="{{ $jsZenMode.Data.Integrity }}"></script>
|
||||||
|
{{ end }}
|
||||||
|
{{ if not .Site.Params.disableImageZoom | default true }}
|
||||||
|
{{ $zoomJS := resources.Get "lib/zoom/zoom.min.umd.js" | resources.Fingerprint $alg }}
|
||||||
|
<script src="{{ $zoomJS.RelPermalink }}" integrity="{{ $zoomJS.Data.Integrity }}"></script>
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
{{- with $socialImage -}}
|
{{/* JS deferred */}}
|
||||||
<meta name="twitter:image" content="{{ .RelPermalink | absURL }}">
|
{{ $jsResources := slice }}
|
||||||
<meta property="og:image" content="{{ .RelPermalink | absURL }}">
|
{{ if site.Params.footer.showScrollToTop | default true }}
|
||||||
{{- end -}}
|
{{ $jsResources = $jsResources | append (resources.Get "js/scroll-to-top.js") }}
|
||||||
|
{{ end }}
|
||||||
|
{{ if .Site.Params.enableSearch | default false }}
|
||||||
|
{{ $jsResources = $jsResources | append (resources.Get "lib/fuse/fuse.min.js") | append (resources.Get "js/search.js") }}
|
||||||
|
{{ end }}
|
||||||
|
{{ if .Site.Params.enableCodeCopy | default false }}
|
||||||
|
{{ $jsResources = $jsResources | append (resources.Get "js/code.js") }}
|
||||||
|
{{ end }}
|
||||||
|
{{ if .Site.Params.rtl | default false }}
|
||||||
|
{{ $jsResources = $jsResources | append (resources.Get "js/rtl.js") }}
|
||||||
|
{{ end }}
|
||||||
|
{{ $jsResources = $jsResources | append (resources.Get "js/mobilemenu.js") }}
|
||||||
|
{{ $jsResources = $jsResources | append (resources.Get "js/button-likes.js") }}
|
||||||
|
{{ $jsResources = $jsResources | append (resources.Get "js/katex-render.js") }}
|
||||||
|
{{ if $jsResources }}
|
||||||
|
{{ $bundleJS := $jsResources | resources.Concat "js/main.bundle.js" | resources.Minify | resources.Fingerprint $alg }}
|
||||||
|
<script
|
||||||
|
defer
|
||||||
|
type="text/javascript"
|
||||||
|
id="script-bundle"
|
||||||
|
src="{{ $bundleJS.RelPermalink }}"
|
||||||
|
integrity="{{ $bundleJS.Data.Integrity }}"
|
||||||
|
data-copy="{{ i18n "code.copy" }}"
|
||||||
|
data-copied="{{ i18n "code.copied" }}"></script>
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{/* Conditional loaded resources */}}
|
||||||
|
{{ partial "vendor.html" . }}
|
||||||
|
|
||||||
|
{{/* Icons */}}
|
||||||
|
{{ if templates.Exists "partials/favicons.html" }}
|
||||||
|
{{ partialCached "favicons.html" .Site }}
|
||||||
|
{{ else }}
|
||||||
|
<link rel="apple-touch-icon" sizes="180x180" href="{{ "apple-touch-icon.png" | relURL }}">
|
||||||
|
<link rel="icon" type="image/png" sizes="32x32" href="{{ "favicon-32x32.png" | relURL }}">
|
||||||
|
<link rel="icon" type="image/png" sizes="16x16" href="{{ "favicon-16x16.png" | relURL }}">
|
||||||
|
<link rel="manifest" href="{{ "site.webmanifest" | relURL }}">
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
{{/* Schema */}}
|
{{/* Schema */}}
|
||||||
{{ partial "schema.html" . }}
|
{{ partial "schema.html" . }}
|
||||||
|
|
||||||
{{/* Me */}}
|
|
||||||
{{ with .Site.Params.Author.name }}
|
|
||||||
<meta name="author" content="{{ . }}">
|
|
||||||
{{ end }}
|
|
||||||
{{ with .Site.Params.Author.links }}
|
|
||||||
{{ range $links := . }}
|
|
||||||
{{ range $name, $url := $links }}
|
|
||||||
{{ if not (strings.HasPrefix $url "mailto:") }}
|
|
||||||
<link href="{{ $url }}" rel="me">
|
|
||||||
{{ end }}
|
|
||||||
{{ end }}
|
|
||||||
{{ end }}
|
|
||||||
{{ end }}
|
|
||||||
|
|
||||||
{{/* Vendor */}}
|
|
||||||
{{ partial "vendor.html" . }}
|
|
||||||
|
|
||||||
{{/* Analytics */}}
|
{{/* Analytics */}}
|
||||||
{{ partial "analytics/main.html" .Site }}
|
{{ if hugo.IsProduction }}
|
||||||
|
{{ partial "analytics/main.html" . }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
{{/* Extend head - eg. for custom analytics scripts, etc. */}}
|
{{/* Extend head - eg. for custom analytics scripts, etc. */}}
|
||||||
{{ if templates.Exists "partials/extend-head.html" }}
|
{{ if templates.Exists "partials/extend-head.html" }}
|
||||||
@@ -214,7 +210,7 @@
|
|||||||
|
|
||||||
const firebaseConfig = {
|
const firebaseConfig = {
|
||||||
apiKey: {{ $.Site.Params.firebase.apiKey }},
|
apiKey: {{ $.Site.Params.firebase.apiKey }},
|
||||||
authDomain: {{ $.Site.Params.firebase.apiKey }},
|
authDomain: {{ $.Site.Params.firebase.authDomain }},
|
||||||
projectId: {{ $.Site.Params.firebase.projectId }},
|
projectId: {{ $.Site.Params.firebase.projectId }},
|
||||||
storageBucket: {{ $.Site.Params.firebase.storageBucket }},
|
storageBucket: {{ $.Site.Params.firebase.storageBucket }},
|
||||||
messagingSenderId: {{ $.Site.Params.firebase.messagingSenderId }},
|
messagingSenderId: {{ $.Site.Params.firebase.messagingSenderId }},
|
||||||
@@ -233,7 +229,9 @@
|
|||||||
{{/* Advertisement */}}
|
{{/* Advertisement */}}
|
||||||
{{ with .Site.Params.advertisement.adsense }}
|
{{ with .Site.Params.advertisement.adsense }}
|
||||||
<meta name="google-adsense-account" content="{{ . }}">
|
<meta name="google-adsense-account" content="{{ . }}">
|
||||||
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client={{ . }}"
|
<script
|
||||||
|
async
|
||||||
|
src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client={{ . }}"
|
||||||
crossorigin="anonymous"></script>
|
crossorigin="anonymous"></script>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</head>
|
</head>
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
width="{{ div $logo.Width 2 }}"
|
width="{{ div $logo.Width 2 }}"
|
||||||
height="{{ div $logo.Height 2 }}"
|
height="{{ div $logo.Height 2 }}"
|
||||||
class="logo max-h-[5rem] max-w-[5rem] object-scale-down object-left nozoom"
|
class="logo max-h-[5rem] max-w-[5rem] object-scale-down object-left nozoom"
|
||||||
alt="{{ .Site.Title }}">
|
alt="">
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@@ -68,7 +68,7 @@
|
|||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{/* Mobile navigation */}}
|
{{/* Mobile navigation */}}
|
||||||
{{ define "HeaderMobileNavigation" }}
|
{{ define "HeaderMobileToolbar" }}
|
||||||
<div class="flex md:hidden items-center gap-x-5 md:ml-12 h-12">
|
<div class="flex md:hidden items-center gap-x-5 md:ml-12 h-12">
|
||||||
<span></span>
|
<span></span>
|
||||||
|
|
||||||
@@ -104,7 +104,7 @@
|
|||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{ define "HeaderMobileMenu" }}
|
{{ define "HeaderMobileNavigation" }}
|
||||||
<div class="-my-2 md:hidden">
|
<div class="-my-2 md:hidden">
|
||||||
<div id="menu-button" class="block">
|
<div id="menu-button" class="block">
|
||||||
{{ if .Site.Menus.main }}
|
{{ if .Site.Menus.main }}
|
||||||
@@ -243,7 +243,7 @@
|
|||||||
|
|
||||||
{{/* ========== Render HTML ========== */}}
|
{{/* ========== Render HTML ========== */}}
|
||||||
<div
|
<div
|
||||||
class="main-menu flex items-center justify-between px-4 py-6 sm:px-6 md:justify-start gap-x-3 pt-[2px] pr-0 pb-[3px] pl-0">
|
class="main-menu flex items-center justify-between py-6 md:justify-start gap-x-3 pt-[2px] pr-2 md:pr-4 pb-[3px] pl-0">
|
||||||
{{ template "HeaderLogo" . }}
|
{{ template "HeaderLogo" . }}
|
||||||
<div class="flex flex-1 items-center justify-between">
|
<div class="flex flex-1 items-center justify-between">
|
||||||
<nav class="flex space-x-3">
|
<nav class="flex space-x-3">
|
||||||
@@ -254,9 +254,9 @@
|
|||||||
{{ end }}
|
{{ end }}
|
||||||
</nav>
|
</nav>
|
||||||
{{ template "HeaderDesktopNavigation" . }}
|
{{ template "HeaderDesktopNavigation" . }}
|
||||||
{{ template "HeaderMobileNavigation" . }}
|
{{ template "HeaderMobileToolbar" . }}
|
||||||
</div>
|
</div>
|
||||||
{{ template "HeaderMobileMenu" . }}
|
{{ template "HeaderMobileNavigation" . }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{ if .Site.Menus.subnavigation }}
|
{{ if .Site.Menus.subnavigation }}
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
<div class="min-h-[148px]"></div>
|
<div class="min-h-[148px]"></div>
|
||||||
<div class="fixed inset-x-0 pl-[24px] pr-[24px] z-100">
|
<div class="fixed inset-x-0 z-100">
|
||||||
<div
|
<div
|
||||||
id="menu-blur"
|
id="menu-blur"
|
||||||
class="absolute opacity-0 inset-x-0 top-0 h-full single_hero_background nozoom bg-neutral dark:bg-neutral-800"></div>
|
class="absolute opacity-0 inset-x-0 top-0 h-full single_hero_background nozoom bg-neutral dark:bg-neutral-800"></div>
|
||||||
<div class="relative max-w-[64rem] ml-auto mr-auto">
|
<div class="relative m-auto leading-7 max-w-7xl px-6 sm:px-14 md:px-24 lg:px-32">
|
||||||
{{ partial "header/basic.html" . }}
|
{{ partial "header/basic.html" . }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<div class="min-h-[148px]"></div>
|
<div class="min-h-[148px]"></div>
|
||||||
<div class="fixed inset-x-0 pl-[24px] pr-[24px] bg-neutral dark:bg-neutral-800 z-100">
|
<div class="fixed inset-x-0 bg-neutral dark:bg-neutral-800 z-100">
|
||||||
<div class="relative max-w-[64rem] ml-auto mr-auto">
|
<div class="relative m-auto leading-7 max-w-7xl px-6 sm:px-14 md:px-24 lg:px-32">
|
||||||
{{ partial "header/basic.html" . }}
|
{{ partial "header/basic.html" . }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
<div class="min-h-[148px]"></div>
|
<div class="min-h-[148px]"></div>
|
||||||
<div
|
<div
|
||||||
class="fixed inset-x-0 min-h-[130px] opacity-65 pl-[24px] pr-[24px] bg-gradient-to-b from-neutral from-60% dark:from-neutral-800 to-transparent mix-blend-normal z-80"></div>
|
class="fixed inset-x-0 min-h-[130px] opacity-65 bg-gradient-to-b from-neutral from-60% dark:from-neutral-800 to-transparent mix-blend-normal z-80"></div>
|
||||||
<div class="fixed inset-x-0 pl-[24px] pr-[24px] z-100">
|
<div class="fixed inset-x-0 z-100">
|
||||||
<div
|
<div
|
||||||
id="menu-blur"
|
id="menu-blur"
|
||||||
class="absolute opacity-0 inset-x-0 top-0 h-full single_hero_background nozoom backdrop-blur-2xl shadow-2xl"></div>
|
class="absolute opacity-0 inset-x-0 top-0 h-full single_hero_background nozoom backdrop-blur-2xl shadow-2xl"></div>
|
||||||
<div class="relative max-w-[64rem] ml-auto mr-auto">
|
<div class="relative m-auto leading-7 max-w-7xl px-6 sm:px-14 md:px-24 lg:px-32">
|
||||||
{{ partial "header/basic.html" . }}
|
{{ partial "header/basic.html" . }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
<div class="min-h-[148px]"></div>
|
<div class="min-h-[148px]"></div>
|
||||||
<div class="fixed inset-x-0 pl-[24px] pr-[24px] z-100">
|
<div class="fixed inset-x-0 z-100">
|
||||||
<div
|
<div
|
||||||
id="menu-blur"
|
id="menu-blur"
|
||||||
class="absolute opacity-0 inset-x-0 top-0 h-full single_hero_background nozoom backdrop-blur-2xl shadow-2xl"></div>
|
class="absolute opacity-0 inset-x-0 top-0 h-full single_hero_background nozoom backdrop-blur-2xl shadow-2xl"></div>
|
||||||
<div class="relative max-w-[64rem] ml-auto mr-auto">
|
<div class="relative m-auto leading-7 max-w-7xl px-6 sm:px-14 md:px-24 lg:px-32">
|
||||||
{{ partial "header/basic.html" . }}
|
{{ partial "header/basic.html" . }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
<li class="mt-1">
|
<li class="mt-1">
|
||||||
<a
|
<a
|
||||||
href="{{ .URL }}"
|
href="{{ .URL }}"
|
||||||
|
{{ with or .Name .Pre }}aria-label="{{ . }}"{{ end }}
|
||||||
class="flex items-center hover:text-primary-600 dark:hover:text-primary-400">
|
class="flex items-center hover:text-primary-600 dark:hover:text-primary-400">
|
||||||
{{ if .Pre }}
|
{{ if .Pre }}
|
||||||
<span {{ if and .Pre .Name }}class="mr-1"{{ end }}>
|
<span {{ if and .Pre .Name }}class="mr-1"{{ end }}>
|
||||||
@@ -24,6 +25,7 @@
|
|||||||
}}
|
}}
|
||||||
target="_blank"
|
target="_blank"
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
{{ with or .Name .Pre }}aria-label="{{ . }}"{{ end }}
|
||||||
class="flex items-center hover:text-primary-600 dark:hover:text-primary-400">
|
class="flex items-center hover:text-primary-600 dark:hover:text-primary-400">
|
||||||
{{ if .Pre }}
|
{{ if .Pre }}
|
||||||
<span {{ if and .Pre .Name }}class="mr-1"{{ end }}>
|
<span {{ if and .Pre .Name }}class="mr-1"{{ end }}>
|
||||||
|
|||||||
@@ -6,14 +6,18 @@
|
|||||||
}}
|
}}
|
||||||
target="_blank"
|
target="_blank"
|
||||||
{{ end }}
|
{{ end }}
|
||||||
class="flex items-center hover:text-primary-600 dark:hover:text-primary-400">
|
class="flex items-center hover:text-primary-600 dark:hover:text-primary-400"
|
||||||
|
{{ with or .Name .Pre }}aria-label="{{ . }}"{{ end }}
|
||||||
|
title="{{ .Title }}">
|
||||||
{{ if .Pre }}
|
{{ if .Pre }}
|
||||||
<div {{ if and .Pre .Name }}class="mr-2"{{ end }}>
|
<div {{ if and .Pre .Name }}class="mr-2"{{ end }}>
|
||||||
{{ partial "icon.html" .Pre }}
|
{{ partial "icon.html" .Pre }}
|
||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<p class="text-bg font-bg" title="{{ .Title }}">
|
{{ if .Name }}
|
||||||
|
<p class="text-bg font-bg">
|
||||||
{{ .Name | markdownify }}
|
{{ .Name | markdownify }}
|
||||||
</p>
|
</p>
|
||||||
|
{{ end }}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
@@ -12,6 +12,7 @@
|
|||||||
target="_blank"
|
target="_blank"
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
{{ with or .Name .Pre }}aria-label="{{ . }}"{{ end }}
|
||||||
class="text-base font-medium hover:text-primary-600 dark:hover:text-primary-400"
|
class="text-base font-medium hover:text-primary-600 dark:hover:text-primary-400"
|
||||||
title="{{ .Title }}">
|
title="{{ .Title }}">
|
||||||
<p>
|
<p>
|
||||||
@@ -31,6 +32,7 @@
|
|||||||
{{ if or (strings.HasPrefix .URL "http:" ) (strings.HasPrefix .URL "https:" ) }}
|
{{ if or (strings.HasPrefix .URL "http:" ) (strings.HasPrefix .URL "https:" ) }}
|
||||||
target="_blank"
|
target="_blank"
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
{{ with or .Name .Pre }}aria-label="{{ . }}"{{ end }}
|
||||||
class="flex items-center hover:text-primary-600 dark:hover:text-primary-400">
|
class="flex items-center hover:text-primary-600 dark:hover:text-primary-400">
|
||||||
{{ if .Pre }}
|
{{ if .Pre }}
|
||||||
<span {{ if and .Pre .Name }}class="mr-1"{{ end }}>
|
<span {{ if and .Pre .Name }}class="mr-1"{{ end }}>
|
||||||
|
|||||||
@@ -1,13 +1,17 @@
|
|||||||
<a
|
<a
|
||||||
href="{{ .URL }}"
|
href="{{ .URL }}"
|
||||||
{{ if or (strings.HasPrefix .URL "http:" ) (strings.HasPrefix .URL "https:" ) }}target="_blank"{{ end }}
|
{{ if or (strings.HasPrefix .URL "http:" ) (strings.HasPrefix .URL "https:" ) }}target="_blank"{{ end }}
|
||||||
class="flex items-center hover:text-primary-600 dark:hover:text-primary-400">
|
class="flex items-center hover:text-primary-600 dark:hover:text-primary-400"
|
||||||
|
{{ with or .Name .Pre }}aria-label="{{ . }}"{{ end }}
|
||||||
|
title="{{ .Title }}">
|
||||||
{{ if .Pre }}
|
{{ if .Pre }}
|
||||||
<span {{ if and .Pre .Name }}class="mr-1"{{ end }}>
|
<span {{ if and .Pre .Name }}class="mr-1"{{ end }}>
|
||||||
{{ partial "icon.html" .Pre }}
|
{{ partial "icon.html" .Pre }}
|
||||||
</span>
|
</span>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<p class="text-base font-medium" title="{{ .Title }}">
|
{{ if .Name }}
|
||||||
|
<p class="text-base font-medium">
|
||||||
{{ .Name | markdownify }}
|
{{ .Name | markdownify }}
|
||||||
</p>
|
</p>
|
||||||
|
{{ end }}
|
||||||
</a>
|
</a>
|
||||||
@@ -1,24 +1,48 @@
|
|||||||
{{ $disableImageOptimization := .Page.Site.Params.disableImageOptimization | default false }}
|
{{ $disableImageOptimization := site.Store.Get "disableImageOptimization" }}
|
||||||
|
|
||||||
{{- $images := .Resources.ByType "image" -}}
|
{{ $useDefault := false }}
|
||||||
{{- $featured := $images.GetMatch "*background*" -}}
|
{{ $featured := "" }}
|
||||||
{{- if not $featured }}{{ $featured = $images.GetMatch "*feature*" }}{{ end -}}
|
{{ $featuredURL := "" }}
|
||||||
{{- if not $featured }}{{ $featured = $images.GetMatch "{*cover*,*thumbnail*}" }}{{ end -}}
|
{{ with .Params.featureimage }}
|
||||||
|
|
||||||
{{ if and .Params.featureimage (not $featured) }}
|
|
||||||
{{- $url:= .Params.featureimage -}}
|
|
||||||
{{ $featured = resources.GetRemote $url }}
|
|
||||||
{{ end }}
|
|
||||||
|
|
||||||
{{- if not $featured }}
|
|
||||||
{{ with .Site.Params.defaultBackgroundImage }}
|
|
||||||
{{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
|
{{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
|
||||||
|
{{ if site.Params.hotlinkFeatureImage }}
|
||||||
|
{{ $featuredURL = . }}
|
||||||
|
{{ else }}
|
||||||
{{ $featured = resources.GetRemote . }}
|
{{ $featured = resources.GetRemote . }}
|
||||||
|
{{ end }}
|
||||||
{{ else }}
|
{{ else }}
|
||||||
{{ $featured = resources.Get . }}
|
{{ $featured = resources.Get . }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ if not (or $featured $featuredURL) }}
|
||||||
|
{{ $images := .Resources.ByType "image" }}
|
||||||
|
{{ range slice "*background*" "*feature*" "*cover*" "*thumbnail*" }}
|
||||||
|
{{ if not $featured }}{{ $featured = $images.GetMatch . }}{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end -}}
|
{{ end }}
|
||||||
|
|
||||||
|
{{ if not (or $featured $featuredURL) }}
|
||||||
|
{{ $default := site.Store.Get "defaultBackgroundImage" }}
|
||||||
|
{{ if $default.url }}
|
||||||
|
{{ $featuredURL = $default.url }}
|
||||||
|
{{ $useDefault = true }}
|
||||||
|
{{ else if $default.obj }}
|
||||||
|
{{ $featured = $default.obj }}
|
||||||
|
{{ $useDefault = true }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{/* generate image URL if not hotlink */}}
|
||||||
|
{{ if not $featuredURL }}
|
||||||
|
{{ with $featured }}
|
||||||
|
{{ $featuredURL = .RelPermalink }}
|
||||||
|
{{ if not (or $disableImageOptimization (eq .MediaType.SubType "svg")) }}
|
||||||
|
{{ $size := site.Store.Get "backgroundImageWidth" }}
|
||||||
|
{{ $featuredURL = (.Resize $size).RelPermalink }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
{{ $isParentList := eq (.Scratch.Get "scope") "list" }}
|
{{ $isParentList := eq (.Scratch.Get "scope") "list" }}
|
||||||
{{ $shouldBlur := $.Params.layoutBackgroundBlur | default (or
|
{{ $shouldBlur := $.Params.layoutBackgroundBlur | default (or
|
||||||
@@ -32,20 +56,25 @@
|
|||||||
)
|
)
|
||||||
}}
|
}}
|
||||||
|
|
||||||
{{- with $featured -}}
|
{{- with $featuredURL -}}
|
||||||
{{ if $shouldAddHeaderSpace | default true }}
|
{{ if $shouldAddHeaderSpace | default true }}
|
||||||
<div id="hero" class="h-[150px] md:h-[200px]"></div>
|
<div id="hero" class="h-[150px] md:h-[200px]"></div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<div class="fixed inset-x-0 top-0 h-[800px] single_hero_background nozoom">
|
<div class="fixed inset-x-0 top-0 h-[800px] single_hero_background nozoom">
|
||||||
{{ $imageURL := .RelPermalink }}
|
{{ $style := "" }}
|
||||||
{{ if not (or $disableImageOptimization (eq .MediaType.SubType "svg")) }}
|
{{ $defaultPosition := cond $useDefault site.Params.imagePosition false }}
|
||||||
{{ $imageURL = (.Resize (print ($.Site.Params.backgroundImageWidth | default "1200") "x")).RelPermalink }}
|
{{ with $.Params.imagePosition | default $defaultPosition }}
|
||||||
|
{{ $style = printf "object-position: %s;" . }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<img
|
<img
|
||||||
id="background-image"
|
id="background-image"
|
||||||
src="{{ $imageURL }}"
|
src="{{ . }}"
|
||||||
alt="Background Image"
|
alt="{{ $.Title }}"
|
||||||
class="absolute inset-0 w-full h-full object-cover">
|
loading="eager"
|
||||||
|
decoding="async"
|
||||||
|
fetchpriority="high"
|
||||||
|
class="absolute inset-0 w-full h-full object-cover"
|
||||||
|
{{ if $style }}style="{{ $style | safeCSS }}"{{ end }}>
|
||||||
<div
|
<div
|
||||||
class="absolute inset-0 bg-gradient-to-t from-neutral dark:from-neutral-800 to-transparent mix-blend-normal"></div>
|
class="absolute inset-0 bg-gradient-to-t from-neutral dark:from-neutral-800 to-transparent mix-blend-normal"></div>
|
||||||
<div
|
<div
|
||||||
@@ -64,6 +93,6 @@
|
|||||||
integrity="{{ $backgroundBlur.Data.Integrity }}"
|
integrity="{{ $backgroundBlur.Data.Integrity }}"
|
||||||
data-blur-id="background-blur"
|
data-blur-id="background-blur"
|
||||||
data-image-id="background-image"
|
data-image-id="background-image"
|
||||||
data-image-url="{{ .RelPermalink }}"></script>
|
data-image-url="{{ . }}"></script>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
@@ -1,37 +1,63 @@
|
|||||||
{{ $disableImageOptimization := .Page.Site.Params.disableImageOptimization | default false }}
|
{{ $disableImageOptimization := site.Store.Get "disableImageOptimization" }}
|
||||||
|
|
||||||
{{- $images := .Resources.ByType "image" -}}
|
{{ $useDefault := false }}
|
||||||
{{- $featured := $images.GetMatch "*background*" -}}
|
{{ $featured := "" }}
|
||||||
{{- if not $featured }}{{ $featured = $images.GetMatch "*feature*" }}{{ end -}}
|
{{ $featuredURL := "" }}
|
||||||
{{- if not $featured }}{{ $featured = $images.GetMatch "{*cover*,*thumbnail*}" }}{{ end -}}
|
{{ with .Params.featureimage }}
|
||||||
|
|
||||||
{{ if and .Params.featureimage (not $featured) }}
|
|
||||||
{{- $url:= .Params.featureimage -}}
|
|
||||||
{{ $featured = resources.GetRemote $url }}
|
|
||||||
{{ end }}
|
|
||||||
|
|
||||||
{{- if not $featured }}
|
|
||||||
{{ with .Site.Params.defaultBackgroundImage }}
|
|
||||||
{{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
|
{{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
|
||||||
|
{{ if site.Params.hotlinkFeatureImage }}
|
||||||
|
{{ $featuredURL = . }}
|
||||||
|
{{ else }}
|
||||||
{{ $featured = resources.GetRemote . }}
|
{{ $featured = resources.GetRemote . }}
|
||||||
|
{{ end }}
|
||||||
{{ else }}
|
{{ else }}
|
||||||
{{ $featured = resources.Get . }}
|
{{ $featured = resources.Get . }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end -}}
|
|
||||||
|
|
||||||
{{- with $featured -}}
|
{{ if not (or $featured $featuredURL) }}
|
||||||
{{ if or $disableImageOptimization (strings.HasSuffix $featured ".svg") }}
|
{{ $images := .Resources.ByType "image" }}
|
||||||
{{ with . }}
|
{{ range slice "*background*" "*feature*" "*cover*" "*thumbnail*" }}
|
||||||
<div
|
{{ if not $featured }}{{ $featured = $images.GetMatch . }}{{ end }}
|
||||||
class="w-full h-36 md:h-56 lg:h-72 single_hero_basic nozoom"
|
|
||||||
style="background-image:url({{ .RelPermalink }});"></div>
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ else }}
|
{{ end }}
|
||||||
{{ with .Resize (print ($.Site.Params.backgroundImageWidth | default "1200") "x") }}
|
|
||||||
<div
|
{{ if not (or $featured $featuredURL) }}
|
||||||
class="w-full h-36 md:h-56 lg:h-72 single_hero_basic nozoom"
|
{{ $default := site.Store.Get "defaultBackgroundImage" }}
|
||||||
style="background-image:url({{ .RelPermalink }});"></div>
|
{{ if $default.url }}
|
||||||
|
{{ $featuredURL = $default.url }}
|
||||||
|
{{ $useDefault = true }}
|
||||||
|
{{ else if $default.obj }}
|
||||||
|
{{ $featured = $default.obj }}
|
||||||
|
{{ $useDefault = true }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{/* generate image URL if not hotlink */}}
|
||||||
|
{{ if not $featuredURL }}
|
||||||
|
{{ with $featured }}
|
||||||
|
{{ $featuredURL = .RelPermalink }}
|
||||||
|
{{ if not (or $disableImageOptimization (eq .MediaType.SubType "svg")) }}
|
||||||
|
{{ $size := site.Store.Get "backgroundImageWidth" }}
|
||||||
|
{{ $featuredURL = (.Resize $size).RelPermalink }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{- end -}}
|
{{ end }}
|
||||||
|
|
||||||
|
{{ with $featuredURL }}
|
||||||
|
{{ $style := "" }}
|
||||||
|
{{ $defaultPosition := cond $useDefault site.Params.imagePosition false }}
|
||||||
|
{{ with $.Params.imagePosition | default $defaultPosition }}
|
||||||
|
{{ $style = printf "object-position: %s;" . }}
|
||||||
|
{{ end }}
|
||||||
|
<div class="overflow-hidden h-36 md:h-56 lg:h-72">
|
||||||
|
<img
|
||||||
|
src="{{ . }}"
|
||||||
|
alt="{{ with $.Params.featureimagealt }}{{ . }}{{ else }}{{ with $.Title }}Featured image for {{ . }}{{ else }}Featured image{{ end }}{{ end }}"
|
||||||
|
loading="eager"
|
||||||
|
decoding="async"
|
||||||
|
fetchpriority="high"
|
||||||
|
class="w-full h-full nozoom object-cover"
|
||||||
|
{{ if $style }}style="{{ $style | safeCSS }}"{{ end }}>
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
@@ -1,24 +1,48 @@
|
|||||||
{{ $disableImageOptimization := .Page.Site.Params.disableImageOptimization | default false }}
|
{{ $disableImageOptimization := site.Store.Get "disableImageOptimization" }}
|
||||||
|
|
||||||
{{- $images := .Resources.ByType "image" -}}
|
{{ $useDefault := false }}
|
||||||
{{- $featured := $images.GetMatch "*background*" -}}
|
{{ $featured := "" }}
|
||||||
{{- if not $featured }}{{ $featured = $images.GetMatch "*feature*" }}{{ end -}}
|
{{ $featuredURL := "" }}
|
||||||
{{- if not $featured }}{{ $featured = $images.GetMatch "{*cover*,*thumbnail*}" }}{{ end -}}
|
{{ with .Params.featureimage }}
|
||||||
|
|
||||||
{{ if .Params.featureimage }}
|
|
||||||
{{- $url:= .Params.featureimage -}}
|
|
||||||
{{- if not $featured }}{{ $featured = resources.GetRemote $url }}{{ end -}}
|
|
||||||
{{ end }}
|
|
||||||
|
|
||||||
{{- if not $featured }}
|
|
||||||
{{ with .Site.Params.defaultBackgroundImage }}
|
|
||||||
{{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
|
{{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
|
||||||
|
{{ if site.Params.hotlinkFeatureImage }}
|
||||||
|
{{ $featuredURL = . }}
|
||||||
|
{{ else }}
|
||||||
{{ $featured = resources.GetRemote . }}
|
{{ $featured = resources.GetRemote . }}
|
||||||
|
{{ end }}
|
||||||
{{ else }}
|
{{ else }}
|
||||||
{{ $featured = resources.Get . }}
|
{{ $featured = resources.Get . }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ if not (or $featured $featuredURL) }}
|
||||||
|
{{ $images := .Resources.ByType "image" }}
|
||||||
|
{{ range slice "*background*" "*feature*" "*cover*" "*thumbnail*" }}
|
||||||
|
{{ if not $featured }}{{ $featured = $images.GetMatch . }}{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end -}}
|
{{ end }}
|
||||||
|
|
||||||
|
{{ if not (or $featured $featuredURL) }}
|
||||||
|
{{ $default := site.Store.Get "defaultBackgroundImage" }}
|
||||||
|
{{ if $default.url }}
|
||||||
|
{{ $featuredURL = $default.url }}
|
||||||
|
{{ $useDefault = true }}
|
||||||
|
{{ else if $default.obj }}
|
||||||
|
{{ $featured = $default.obj }}
|
||||||
|
{{ $useDefault = true }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{/* generate image URL if not hotlink */}}
|
||||||
|
{{ if not $featuredURL }}
|
||||||
|
{{ with $featured }}
|
||||||
|
{{ $featuredURL = .RelPermalink }}
|
||||||
|
{{ if not (or $disableImageOptimization (eq .MediaType.SubType "svg")) }}
|
||||||
|
{{ $size := site.Store.Get "backgroundImageWidth" }}
|
||||||
|
{{ $featuredURL = (.Resize $size).RelPermalink }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
{{ $caption := "" }}
|
{{ $caption := "" }}
|
||||||
{{ if .Params.featureimagecaption }}
|
{{ if .Params.featureimagecaption }}
|
||||||
@@ -28,49 +52,25 @@
|
|||||||
{{- $alt := .Page.Title -}}
|
{{- $alt := .Page.Title -}}
|
||||||
{{- with .Page.Params.alt }}{{ $alt = . }}{{ end -}}
|
{{- with .Page.Params.alt }}{{ $alt = . }}{{ end -}}
|
||||||
|
|
||||||
{{- with $featured -}}
|
{{ with $featuredURL }}
|
||||||
{{ if strings.HasSuffix $featured ".svg" }}
|
{{ $style := "" }}
|
||||||
{{ with . }}
|
{{ $defaultPosition := cond $useDefault site.Params.imagePosition false }}
|
||||||
<figure>
|
{{ with $.Params.imagePosition | default $defaultPosition }}
|
||||||
<img class="w-full rounded-lg single_hero_round nozoom" alt="{{ $alt }}" src="{{ .RelPermalink }}">
|
{{ $style = printf "object-position: %s;" . }}
|
||||||
{{ if $caption }}
|
|
||||||
<figcaption class="text-sm text-neutral-700 dark:text-neutral-400 hover:underline text-center">
|
|
||||||
{{ $caption | markdownify }}
|
|
||||||
</figcaption>
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</figure>
|
|
||||||
{{ end }}
|
|
||||||
{{ else if $disableImageOptimization }}
|
|
||||||
{{ with . }}
|
|
||||||
<figure>
|
<figure>
|
||||||
<img
|
<img
|
||||||
class="w-full rounded-lg single_hero_round nozoom"
|
src="{{ . }}"
|
||||||
alt="{{ $alt }}"
|
alt="{{ $alt }}"
|
||||||
width="{{ .Width }}"
|
loading="eager"
|
||||||
height="{{ .Height }}"
|
decoding="async"
|
||||||
src="{{ .RelPermalink }}">
|
fetchpriority="high"
|
||||||
|
class="w-full rounded-lg single_hero_round nozoom"
|
||||||
|
{{ if $style }}style="{{ $style | safeCSS }}"{{ end }}>
|
||||||
{{ if $caption }}
|
{{ if $caption }}
|
||||||
<figcaption class="text-sm text-neutral-700 dark:text-neutral-400 hover:underline text-center">
|
<figcaption class="text-sm text-neutral-700 dark:text-neutral-400 hover:underline text-center">
|
||||||
{{ $caption | markdownify }}
|
{{ $caption | markdownify }}
|
||||||
</figcaption>
|
</figcaption>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</figure>
|
</figure>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ else }}
|
|
||||||
{{ with .Resize (print ($.Site.Params.backgroundImageWidth | default "1200") "x") }}
|
|
||||||
<figure>
|
|
||||||
<img
|
|
||||||
class="w-full rounded-lg single_hero_round nozoom"
|
|
||||||
alt="{{ $alt }}"
|
|
||||||
width="{{ .Width }}"
|
|
||||||
height="{{ .Height }}"
|
|
||||||
src="{{ .RelPermalink }}">
|
|
||||||
{{ if $caption }}
|
|
||||||
<figcaption class="text-sm text-neutral-700 dark:text-neutral-400 hover:underline text-center">
|
|
||||||
{{ $caption | markdownify }}
|
|
||||||
</figcaption>
|
|
||||||
{{ end }}
|
|
||||||
</figure>
|
|
||||||
{{ end }}
|
|
||||||
{{ end }}
|
|
||||||
{{- end -}}
|
|
||||||
@@ -1,37 +1,80 @@
|
|||||||
{{ $disableImageOptimization := .Page.Site.Params.disableImageOptimization | default false }}
|
{{ $disableImageOptimization := site.Store.Get "disableImageOptimization" }}
|
||||||
|
|
||||||
{{- $images := .Resources.ByType "image" -}}
|
{{/* === Background === */}}
|
||||||
{{- $background := $images.GetMatch "*background*" -}}
|
{{ $useDefault := false }}
|
||||||
|
{{ $images := .Resources.ByType "image" }}
|
||||||
|
{{ $background := $images.GetMatch "*background*" }}
|
||||||
|
{{ $backgroundURL := "" }}
|
||||||
|
|
||||||
{{- if not $background }}
|
{{ if not (or $background $backgroundURL) }}
|
||||||
{{ with .Site.Params.defaultBackgroundImage }}
|
{{ $default := site.Store.Get "defaultBackgroundImage" }}
|
||||||
{{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
|
{{ if $default.url }}
|
||||||
{{ $background = resources.GetRemote . }}
|
{{ $backgroundURL = $default.url }}
|
||||||
{{ else }}
|
{{ $useDefault = true }}
|
||||||
{{ $background = resources.Get . }}
|
{{ else if $default.obj }}
|
||||||
|
{{ $background = $default.obj }}
|
||||||
|
{{ $useDefault = true }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
|
||||||
{{ end -}}
|
|
||||||
|
|
||||||
{{- if not $background }}{{ $background = $images.GetMatch "{*cover*,*thumbnail*}" }}{{ end -}}
|
|
||||||
{{- if not $background }}{{ $background = $images.GetMatch "*feature*" }}{{ end -}}
|
|
||||||
{{- $featured := $images.GetMatch "*feature*" -}}
|
|
||||||
{{- if not $featured }}{{ $featured = $images.GetMatch "{*cover*,*thumbnail*}" }}{{ end -}}
|
|
||||||
{{ if .Params.featureimage }}
|
|
||||||
{{- $url:= .Params.featureimage -}}
|
|
||||||
{{- if not $featured }}{{ $featured = resources.GetRemote $url }}{{ end -}}
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{- if not $featured }}{{ $featured = $images.GetMatch "*background*" }}{{ end -}}
|
|
||||||
|
|
||||||
{{- if not $featured }}
|
{{ if not (or $background $backgroundURL) }}
|
||||||
{{ with .Site.Params.defaultFeaturedImage }}
|
{{ range slice "*cover*" "*thumbnail*" "*feature*" }}
|
||||||
|
{{ if not $background }}{{ $background = $images.GetMatch . }}{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{/* generate image URL if not hotlink */}}
|
||||||
|
{{ if not $backgroundURL }}
|
||||||
|
{{ with $background }}
|
||||||
|
{{ $backgroundURL = .RelPermalink }}
|
||||||
|
{{ if not (or $disableImageOptimization (eq .MediaType.SubType "svg")) }}
|
||||||
|
{{ $size := site.Store.Get "backgroundImageWidth" }}
|
||||||
|
{{ $backgroundURL = (.Resize $size).RelPermalink }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{/* === Featured === */}}
|
||||||
|
{{ $featured := "" }}
|
||||||
|
{{ $featuredURL := "" }}
|
||||||
|
{{ with .Params.featureimage }}
|
||||||
{{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
|
{{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
|
||||||
|
{{ if site.Params.hotlinkFeatureImage }}
|
||||||
|
{{ $featuredURL = . }}
|
||||||
|
{{ else }}
|
||||||
{{ $featured = resources.GetRemote . }}
|
{{ $featured = resources.GetRemote . }}
|
||||||
|
{{ end }}
|
||||||
{{ else }}
|
{{ else }}
|
||||||
{{ $featured = resources.Get . }}
|
{{ $featured = resources.Get . }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ if not (or $featured $featuredURL) }}
|
||||||
|
{{ $images := $.Resources.ByType "image" }}
|
||||||
|
{{ range slice "*feature*" "*cover*" "*thumbnail*" "*background*" }}
|
||||||
|
{{ if not $featured }}{{ $featured = $images.GetMatch . }}{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end -}}
|
{{ end }}
|
||||||
|
|
||||||
|
{{ if not (or $featured $featuredURL) }}
|
||||||
|
{{ $default := site.Store.Get "defaultFeaturedImage" }}
|
||||||
|
{{ if $default.url }}
|
||||||
|
{{ $featuredURL = $default.url }}
|
||||||
|
{{ else if $default.obj }}
|
||||||
|
{{ $featured = $default.obj }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{/* generate image URL if not hotlink */}}
|
||||||
|
{{ if not $featuredURL }}
|
||||||
|
{{ with $featured }}
|
||||||
|
{{ $featuredURL = .RelPermalink }}
|
||||||
|
{{ if not (or $disableImageOptimization (eq .MediaType.SubType "svg")) }}
|
||||||
|
{{ $size := site.Store.Get "backgroundImageWidth" }}
|
||||||
|
{{ $featuredURL = (.Resize $size).RelPermalink }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
{{ $isParentList := eq (.Scratch.Get "scope") "list" }}
|
{{ $isParentList := eq (.Scratch.Get "scope") "list" }}
|
||||||
{{ $shouldBlur := $.Params.layoutBackgroundBlur | default (or
|
{{ $shouldBlur := $.Params.layoutBackgroundBlur | default (or
|
||||||
@@ -40,40 +83,43 @@
|
|||||||
)
|
)
|
||||||
}}
|
}}
|
||||||
|
|
||||||
{{- with $featured -}}
|
{{ with $featuredURL }}
|
||||||
{{ if or $disableImageOptimization (strings.HasSuffix . ".svg") }}
|
<div class="overflow-hidden rounded-md h-36 md:h-56 lg:h-72 nozoom">
|
||||||
{{ with . }}
|
<img
|
||||||
<div
|
src="{{ . }}"
|
||||||
class="w-full rounded-md h-36 md:h-56 lg:h-72 single_hero_basic nozoom"
|
alt="{{ $.Title }}"
|
||||||
style="background-image:url({{ .RelPermalink }});"></div>
|
loading="eager"
|
||||||
{{ end }}
|
decoding="async"
|
||||||
{{ else }}
|
fetchpriority="high"
|
||||||
{{ with .Resize (print ($.Site.Params.backgroundImageWidth | default "1200") "x") }}
|
class="w-full h-full nozoom object-cover"
|
||||||
<div
|
{{ with $.Params.imagePositionFeature }}style="object-position: {{ . }};"{{ end }}>
|
||||||
class="w-full rounded-md h-36 md:h-56 lg:h-72 single_hero_basic nozoom"
|
</div>
|
||||||
style="background-image:url({{ .RelPermalink }});"></div>
|
{{ end }}
|
||||||
{{ end }}
|
|
||||||
{{ end }}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{- with $background -}}
|
|
||||||
|
|
||||||
<div class="single_hero_background nozoom fixed inset-x-0 top-0 h-[800px]">
|
<div class="single_hero_background nozoom fixed inset-x-0 top-0 h-[800px]">
|
||||||
{{ $imageURL := .RelPermalink }}
|
{{ with $backgroundURL }}
|
||||||
{{ if not (or $disableImageOptimization (eq .MediaType.SubType "svg")) }}
|
{{ $style := "" }}
|
||||||
{{ $imageURL = (.Resize (print ($.Site.Params.backgroundImageWidth | default "1200") "x")).RelPermalink }}
|
{{ $defaultPosition := cond $useDefault site.Params.imagePosition false }}
|
||||||
|
{{ with $.Params.imagePosition | default $defaultPosition }}
|
||||||
|
{{ $style = printf "object-position: %s;" . }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<img
|
<img
|
||||||
id="background-image"
|
id="background-image-main"
|
||||||
src="{{ $imageURL }}"
|
src="{{ . }}"
|
||||||
alt="Background Image"
|
alt=""
|
||||||
class="absolute inset-0 h-full w-full object-cover">
|
role="presentation"
|
||||||
|
loading="eager"
|
||||||
|
decoding="async"
|
||||||
|
fetchpriority="high"
|
||||||
|
class="absolute inset-0 h-full w-full object-cover"
|
||||||
|
{{ if $style }}style="{{ $style | safeCSS }}"{{ end }}>
|
||||||
|
{{ end }}
|
||||||
<div
|
<div
|
||||||
class="from-neutral absolute inset-0 bg-gradient-to-t to-transparent mix-blend-normal dark:from-neutral-800"></div>
|
class="from-neutral absolute inset-0 bg-gradient-to-t to-transparent mix-blend-normal dark:from-neutral-800"></div>
|
||||||
<div
|
<div
|
||||||
class="from-neutral to-neutral absolute inset-0 bg-gradient-to-t opacity-30 mix-blend-normal dark:from-neutral-800 dark:to-neutral-800 dark:opacity-60"></div>
|
class="from-neutral to-neutral absolute inset-0 bg-gradient-to-t opacity-30 mix-blend-normal dark:from-neutral-800 dark:to-neutral-800 dark:opacity-60"></div>
|
||||||
</div>
|
</div>
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{ if $shouldBlur | default false }}
|
{{ if $shouldBlur | default false }}
|
||||||
<div
|
<div
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
<div class="mx-auto max-w-7xl p-0">
|
<div class="mx-auto max-w-7xl p-0">
|
||||||
<div class="relative sm:overflow-hidden">
|
<div class="relative sm:overflow-hidden">
|
||||||
<div class="fixed inset-x-0 top-0 -z-10">
|
<div class="fixed inset-x-0 top-0 -z-10">
|
||||||
|
{{ $useDefault := true }}
|
||||||
{{ $homepageImage := "" }}
|
{{ $homepageImage := "" }}
|
||||||
{{ with .Site.Params.defaultBackgroundImage }}
|
{{ with .Site.Params.defaultBackgroundImage }}
|
||||||
{{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
|
{{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
|
||||||
@@ -16,16 +17,24 @@
|
|||||||
{{ with .Site.Params.homepage.homepageImage }}
|
{{ with .Site.Params.homepage.homepageImage }}
|
||||||
{{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
|
{{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
|
||||||
{{ $homepageImage = resources.GetRemote . }}
|
{{ $homepageImage = resources.GetRemote . }}
|
||||||
|
{{ $useDefault = false }}
|
||||||
{{ else }}
|
{{ else }}
|
||||||
{{ $homepageImage = resources.Get . }}
|
{{ $homepageImage = resources.Get . }}
|
||||||
|
{{ $useDefault = false }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ if $homepageImage }}
|
{{ if $homepageImage }}
|
||||||
|
{{ $style := "" }}
|
||||||
|
{{ $defaultPosition := cond $useDefault site.Params.imagePosition false }}
|
||||||
|
{{ with $.Params.imagePosition | default $defaultPosition }}
|
||||||
|
{{ $style = printf "object-position: %s;" . }}
|
||||||
|
{{ end }}
|
||||||
<img
|
<img
|
||||||
id="background-image"
|
id="background-image"
|
||||||
class="nozoom mt-0 mr-0 mb-0 ml-0 h-[1000px] w-full object-cover"
|
class="nozoom mt-0 mr-0 mb-0 ml-0 h-[1000px] w-full object-cover"
|
||||||
src="{{ $homepageImage.RelPermalink }}"
|
src="{{ $homepageImage.RelPermalink }}"
|
||||||
role="presentation">
|
role="presentation"
|
||||||
|
{{ if $style }}style="{{ $style | safeCSS }}"{{ end }}>
|
||||||
<div
|
<div
|
||||||
class="from-neutral absolute inset-0 h-[1000px] bg-gradient-to-t to-transparent mix-blend-normal dark:from-neutral-800"></div>
|
class="from-neutral absolute inset-0 h-[1000px] bg-gradient-to-t to-transparent mix-blend-normal dark:from-neutral-800"></div>
|
||||||
<div
|
<div
|
||||||
@@ -41,15 +50,17 @@
|
|||||||
{{ $authorImage = resources.Get . }}
|
{{ $authorImage = resources.Get . }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ if $authorImage }}
|
{{ if $authorImage }}
|
||||||
|
{{ $final := $authorImage }}
|
||||||
{{ if not $disableImageOptimization }}
|
{{ if not $disableImageOptimization }}
|
||||||
{{ $authorImage = $authorImage.Fill (print "288x288 q" ( $.Site.Params.Author.imagequality | default "96" )) }}
|
{{ $final = $authorImage.Fill (print "288x288 q" ( $.Site.Params.Author.imagequality | default "96" )) }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<img
|
<img
|
||||||
class="mb-2 h-36 w-36 rounded-full"
|
class="mb-2 h-36 w-36 rounded-full"
|
||||||
width="144"
|
width="144"
|
||||||
height="144"
|
height="144"
|
||||||
alt="{{ $.Site.Params.Author.name | default " Author" }}"
|
alt="{{ $.Site.Params.Author.name | default `Author` }}"
|
||||||
src="{{ $authorImage.RelPermalink }}">
|
src="{{ $final.RelPermalink }}"
|
||||||
|
data-zoom-src="{{ $authorImage.RelPermalink }}">
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<h1 class="mb-2 text-4xl font-extrabold text-neutral-800 dark:text-neutral-200">
|
<h1 class="mb-2 text-4xl font-extrabold text-neutral-800 dark:text-neutral-200">
|
||||||
@@ -70,11 +81,10 @@
|
|||||||
href="{{ $url }}"
|
href="{{ $url }}"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
aria-label="{{ $name | title }}"
|
aria-label="{{ $name | title }}"
|
||||||
rel="me noopener noreferrer"
|
title="{{ $name | title }}"
|
||||||
>{{ partial
|
rel="me noopener noreferrer">
|
||||||
"icon.html" $name
|
{{ partial "icon.html" $name }}
|
||||||
}}</a
|
</a>
|
||||||
>
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="mt-6 sm:mt-16 lg:mt-0 mx-auto max-w-xl px-4 sm:px-6 lg:mx-0 lg:max-w-none lg:py-16 lg:px-0">
|
<div class="mt-6 sm:mt-16 lg:mt-0 mx-auto max-w-xl px-4 sm:px-6 lg:mx-0 lg:max-w-none lg:py-16 lg:px-0">
|
||||||
<div class="-me-48 md:-me-16 lg:relative lg:m-0 lg:h-full lg:px-0 w-full">
|
<div class="-me-48 md:-me-16 lg:relative lg:m-0 lg:h-full lg:px-0 w-full">
|
||||||
|
{{ $useDefault := true }}
|
||||||
{{ $homepageImage := "" }}
|
{{ $homepageImage := "" }}
|
||||||
{{ with .Site.Params.defaultBackgroundImage }}
|
{{ with .Site.Params.defaultBackgroundImage }}
|
||||||
{{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
|
{{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
|
||||||
@@ -25,14 +26,22 @@
|
|||||||
{{ with .Site.Params.homepage.homepageImage }}
|
{{ with .Site.Params.homepage.homepageImage }}
|
||||||
{{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
|
{{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
|
||||||
{{ $homepageImage = resources.GetRemote . }}
|
{{ $homepageImage = resources.GetRemote . }}
|
||||||
|
{{ $useDefault = false }}
|
||||||
{{ else }}
|
{{ else }}
|
||||||
{{ $homepageImage = resources.Get . }}
|
{{ $homepageImage = resources.Get . }}
|
||||||
|
{{ $useDefault = false }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ if $homepageImage }}
|
{{ if $homepageImage }}
|
||||||
|
{{ $style := "" }}
|
||||||
|
{{ $defaultPosition := cond $useDefault site.Params.imagePosition false }}
|
||||||
|
{{ with $.Params.imagePosition | default $defaultPosition }}
|
||||||
|
{{ $style = printf "object-position: %s;" . }}
|
||||||
|
{{ end }}
|
||||||
<img
|
<img
|
||||||
class="w-full rounded-xl shadow-xl lg:absolute lg:h-full lg:w-auto lg:max-w-none"
|
class="w-full rounded-xl shadow-xl lg:absolute lg:h-full lg:w-auto lg:max-w-none"
|
||||||
src="{{ $homepageImage.RelPermalink }}">
|
src="{{ $homepageImage.RelPermalink }}"
|
||||||
|
{{ if $style }}style="{{ $style | safeCSS }}"{{ end }}>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
<div class="mx-auto max-w-7xl p-0">
|
<div class="mx-auto max-w-7xl p-0">
|
||||||
<div class="relative shadow-xl sm:overflow-hidden rounded-2xl">
|
<div class="relative shadow-xl sm:overflow-hidden rounded-2xl">
|
||||||
<div class="absolute inset-0">
|
<div class="absolute inset-0">
|
||||||
|
{{ $useDefault := true }}
|
||||||
{{ $homepageImage := "" }}
|
{{ $homepageImage := "" }}
|
||||||
{{ with .Site.Params.defaultBackgroundImage }}
|
{{ with .Site.Params.defaultBackgroundImage }}
|
||||||
{{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
|
{{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
|
||||||
@@ -17,12 +18,22 @@
|
|||||||
{{ with .Site.Params.homepage.homepageImage }}
|
{{ with .Site.Params.homepage.homepageImage }}
|
||||||
{{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
|
{{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
|
||||||
{{ $homepageImage = resources.GetRemote . }}
|
{{ $homepageImage = resources.GetRemote . }}
|
||||||
|
{{ $useDefault = false }}
|
||||||
{{ else }}
|
{{ else }}
|
||||||
{{ $homepageImage = resources.Get . }}
|
{{ $homepageImage = resources.Get . }}
|
||||||
|
{{ $useDefault = false }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ if $homepageImage }}
|
{{ if $homepageImage }}
|
||||||
<img class="h-full w-full object-cover nozoom mt-0 mr-0 mb-0 ml-0" src="{{ $homepageImage.RelPermalink }}">
|
{{ $style := "" }}
|
||||||
|
{{ $defaultPosition := cond $useDefault site.Params.imagePosition false }}
|
||||||
|
{{ with $.Params.imagePosition | default $defaultPosition }}
|
||||||
|
{{ $style = printf "object-position: %s;" . }}
|
||||||
|
{{ end }}
|
||||||
|
<img
|
||||||
|
class="h-full w-full object-cover nozoom mt-0 mr-0 mb-0 ml-0"
|
||||||
|
src="{{ $homepageImage.RelPermalink }}"
|
||||||
|
{{ if $style }}style="{{ $style | safeCSS }}"{{ end }}>
|
||||||
{{ if not $disableHeroImageFilter }}
|
{{ if not $disableHeroImageFilter }}
|
||||||
<div
|
<div
|
||||||
class="absolute inset-0 bg-gradient-to-r from-primary-500 to-secondary-600 dark:from-primary-600 dark:to-secondary-800 mix-blend-multiply"></div>
|
class="absolute inset-0 bg-gradient-to-r from-primary-500 to-secondary-600 dark:from-primary-600 dark:to-secondary-800 mix-blend-multiply"></div>
|
||||||
@@ -42,15 +53,17 @@
|
|||||||
{{ $authorImage = resources.Get . }}
|
{{ $authorImage = resources.Get . }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ if $authorImage }}
|
{{ if $authorImage }}
|
||||||
|
{{ $final := $authorImage }}
|
||||||
{{ if not $disableImageOptimization }}
|
{{ if not $disableImageOptimization }}
|
||||||
{{ $authorImage = $authorImage.Fill (print "288x288 q" ( $.Site.Params.Author.imagequality | default "96" )) }}
|
{{ $final = $authorImage.Fill (print "288x288 q" ( $.Site.Params.Author.imagequality | default "96" )) }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<img
|
<img
|
||||||
class="mb-2 rounded-full h-36 w-36"
|
class="mb-2 h-36 w-36 rounded-full"
|
||||||
width="144"
|
width="144"
|
||||||
height="144"
|
height="144"
|
||||||
alt="{{ $.Site.Params.Author.name | default " Author" }}"
|
alt="{{ $.Site.Params.Author.name | default `Author` }}"
|
||||||
src="{{ $authorImage.RelPermalink }}">
|
src="{{ $final.RelPermalink }}"
|
||||||
|
data-zoom-src="{{ $authorImage.RelPermalink }}">
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ if not $disableHeroImageFilter }}
|
{{ if not $disableHeroImageFilter }}
|
||||||
@@ -83,22 +96,20 @@
|
|||||||
href="{{ $url }}"
|
href="{{ $url }}"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
aria-label="{{ $name | title }}"
|
aria-label="{{ $name | title }}"
|
||||||
rel="me noopener noreferrer"
|
title="{{ $name | title }}"
|
||||||
>{{ partial
|
rel="me noopener noreferrer">
|
||||||
"icon.html" $name
|
{{ partial "icon.html" $name }}
|
||||||
}}</a
|
</a>
|
||||||
>
|
|
||||||
{{ else }}
|
{{ else }}
|
||||||
<a
|
<a
|
||||||
class="px-1 hover:text-primary-400 text-primary-800 dark:text-primary-200"
|
class="px-1 hover:text-primary-400 text-primary-800 dark:text-primary-200"
|
||||||
href="{{ $url }}"
|
href="{{ $url }}"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
aria-label="{{ $name | title }}"
|
aria-label="{{ $name | title }}"
|
||||||
rel="me noopener noreferrer"
|
title="{{ $name | title }}"
|
||||||
>{{ partial
|
rel="me noopener noreferrer">
|
||||||
"icon.html" $name
|
{{ partial "icon.html" $name }}
|
||||||
}}</a
|
</a>
|
||||||
>
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|||||||
@@ -12,15 +12,17 @@
|
|||||||
{{ $authorImage = resources.Get . }}
|
{{ $authorImage = resources.Get . }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ if $authorImage }}
|
{{ if $authorImage }}
|
||||||
|
{{ $final := $authorImage }}
|
||||||
{{ if not $disableImageOptimization }}
|
{{ if not $disableImageOptimization }}
|
||||||
{{ $authorImage = $authorImage.Fill (print "288x288 q" ( $.Site.Params.Author.imagequality | default "96" )) }}
|
{{ $final = $authorImage.Fill (print "288x288 q" ( $.Site.Params.Author.imagequality | default "96" )) }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<img
|
<img
|
||||||
class="mb-2 rounded-full h-36 w-36"
|
class="mb-2 h-36 w-36 rounded-full"
|
||||||
width="144"
|
width="144"
|
||||||
height="144"
|
height="144"
|
||||||
alt="{{ $.Site.Params.Author.name | default " Author" }}"
|
alt="{{ $.Site.Params.Author.name | default `Author` }}"
|
||||||
src="{{ $authorImage.RelPermalink }}">
|
src="{{ $final.RelPermalink }}"
|
||||||
|
data-zoom-src="{{ $authorImage.RelPermalink }}">
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<h1 class="text-4xl font-extrabold">
|
<h1 class="text-4xl font-extrabold">
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
{{/* disableImageOptimization */}}
|
||||||
|
{{ site.Store.Set "disableImageOptimization" (site.Params.disableImageOptimization | default false) }}
|
||||||
|
|
||||||
|
{{/* defaultFeaturedImage */}}
|
||||||
|
{{ $defaultFeaturedImage := "" }}
|
||||||
|
{{ $defaultFeaturedImageURL := "" }}
|
||||||
|
{{ with site.Params.defaultFeaturedImage }}
|
||||||
|
{{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
|
||||||
|
{{ if site.Params.hotlinkFeatureImage }}
|
||||||
|
{{ $defaultFeaturedImageURL = . }}
|
||||||
|
{{ else }}
|
||||||
|
{{ $defaultFeaturedImage = resources.GetRemote . }}
|
||||||
|
{{ end }}
|
||||||
|
{{ else }}
|
||||||
|
{{ $defaultFeaturedImage = resources.Get . }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ site.Store.Set "defaultFeaturedImage" (dict "url" $defaultFeaturedImageURL "obj" $defaultFeaturedImage) }}
|
||||||
|
|
||||||
|
{{/* defaultBackgroundImage */}}
|
||||||
|
{{ $defaultBackgroundImage := "" }}
|
||||||
|
{{ $defaultBackgroundImageURL := "" }}
|
||||||
|
{{ with site.Params.defaultBackgroundImage }}
|
||||||
|
{{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
|
||||||
|
{{ if site.Params.hotlinkFeatureImage }}
|
||||||
|
{{ $defaultBackgroundImageURL = . }}
|
||||||
|
{{ else }}
|
||||||
|
{{ $defaultBackgroundImage = resources.GetRemote . }}
|
||||||
|
{{ end }}
|
||||||
|
{{ else }}
|
||||||
|
{{ $defaultBackgroundImage = resources.Get . }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ site.Store.Set "defaultBackgroundImage" (dict "url" $defaultBackgroundImageURL "obj" $defaultBackgroundImage) }}
|
||||||
|
|
||||||
|
{{/* backgroundImageWidth */}}
|
||||||
|
{{ site.Store.Set "backgroundImageWidth" (print (site.Params.backgroundImageWidth | default "1200") "x") }}
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
{{ $showMoreLinkDest = .Site.Params.homepage.showMoreLinkDest }}
|
{{ $showMoreLinkDest = .Site.Params.homepage.showMoreLinkDest }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<div class="mt-10 flex justify-center">
|
<div class="mt-10 flex justify-center">
|
||||||
<a href="{{ $showMoreLinkDest }}">
|
<a href="{{ $showMoreLinkDest | relLangURL }}">
|
||||||
<button
|
<button
|
||||||
class="bg-transparent hover:text-primary-500 prose dark:prose-invert font-semibold py-2 px-4 border border-primary-500 hover:border-transparent rounded">
|
class="bg-transparent hover:text-primary-500 prose dark:prose-invert font-semibold py-2 px-4 border border-primary-500 hover:border-transparent rounded">
|
||||||
{{ i18n "recent.show_more" | markdownify }}
|
{{ i18n "recent.show_more" | markdownify }}
|
||||||
|
|||||||
@@ -1,7 +1,15 @@
|
|||||||
<div id="top-scroller" class="pointer-events-none absolute top-[110vh] bottom-0 w-12 ltr:right-0 rtl:left-0 z-10">
|
{{ $coffeeIsRight := and .Site.Params.buymeacoffee.globalWidget (eq (lower site.Params.buymeacoffee.globalWidgetPosition) "right") }}
|
||||||
|
{{ $isRTL := .Site.Params.rtl | default false }}
|
||||||
|
{{ $needAvoidCoffee := ne $coffeeIsRight $isRTL }}
|
||||||
|
{{ $toTopYOffset := cond $needAvoidCoffee "bottom-24" "bottom-6" }}
|
||||||
|
|
||||||
|
|
||||||
|
<div
|
||||||
|
id="scroll-to-top"
|
||||||
|
class="fixed {{ $toTopYOffset }} end-6 z-50 transform translate-y-4 opacity-0 duration-200">
|
||||||
<a
|
<a
|
||||||
href="#the-top"
|
href="#the-top"
|
||||||
class="pointer-events-auto sticky top-[calc(100vh-5.5rem)] flex h-12 w-12 mb-16 items-center justify-center rounded-full bg-neutral/50 text-xl text-neutral-700 hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral dark:hover:text-primary-400"
|
class="pointer-events-auto flex h-12 w-12 items-center justify-center rounded-full bg-neutral/50 text-xl text-neutral-700 hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral dark:hover:text-primary-400"
|
||||||
aria-label="{{ i18n "nav.scroll_to_top_title" }}"
|
aria-label="{{ i18n "nav.scroll_to_top_title" }}"
|
||||||
title="{{ i18n "nav.scroll_to_top_title" }}">
|
title="{{ i18n "nav.scroll_to_top_title" }}">
|
||||||
↑
|
↑
|
||||||
|
|||||||
@@ -1,33 +1,43 @@
|
|||||||
<a href="{{ .Page.RelPermalink }}" class="min-w-full">
|
{{ $disableImageOptimization := .Page.Site.Params.disableImageOptimization | default false }}
|
||||||
<div
|
|
||||||
class="border border-neutral-200 dark:border-neutral-700 border-2 rounded overflow-hidden shadow-2xl relative">
|
|
||||||
{{ $disableImageOptimization := .Page.Site.Params.disableImageOptimization | default false }}
|
|
||||||
|
|
||||||
{{- with site.Params.images -}}
|
{{ $featured := "" }}
|
||||||
{{- range first 6 . }}
|
{{ $featuredURL := "" }}
|
||||||
<meta property="og:image" content="{{ . | absURL }}">
|
{{ with .Page.Params.featureimage }}
|
||||||
{{ end -}}
|
{{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }}
|
||||||
{{- else -}}
|
{{ $featured = resources.GetRemote . }}
|
||||||
{{- $images := .Page.Resources.ByType "image" -}}
|
|
||||||
{{- $featured := $images.GetMatch "*feature*" -}}
|
|
||||||
{{- if not $featured }}{{ $featured = $images.GetMatch "{*cover*,*thumbnail*}" }}{{ end -}}
|
|
||||||
{{- with $featured -}}
|
|
||||||
{{ if $disableImageOptimization }}
|
|
||||||
{{ with . }}
|
|
||||||
<div class="w-full thumbnail_card nozoom" style="background-image:url({{ .RelPermalink }});"></div>
|
|
||||||
{{ end }}
|
|
||||||
{{ else }}
|
{{ else }}
|
||||||
{{ with .Resize "600x" }}
|
{{ $featured = resources.Get . }}
|
||||||
<div class="w-full thumbnail_card nozoom" style="background-image:url({{ .RelPermalink }});"></div>
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{- else -}}
|
|
||||||
{{- with site.Params.images }}
|
|
||||||
<meta property="og:image" content="{{ index . 0 | absURL }}">
|
|
||||||
{{ end -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
|
{{ if not $featured }}
|
||||||
|
{{ $images := .Page.Resources.ByType "image" }}
|
||||||
|
{{ range slice "*feature*" "*cover*" "*thumbnail*" }}
|
||||||
|
{{ if not $featured }}{{ $featured = $images.GetMatch . }}{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ with $featured }}
|
||||||
|
{{ $featuredURL = .RelPermalink }}
|
||||||
|
{{ if not (or $disableImageOptimization (eq .MediaType.SubType "svg")) }}
|
||||||
|
{{ $featuredURL = (.Resize "600x").RelPermalink }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
|
||||||
|
<div class="min-w-full">
|
||||||
|
<div class="border-neutral-200 dark:border-neutral-700 border-2 rounded overflow-hidden shadow-2xl relative">
|
||||||
|
{{ with $featuredURL }}
|
||||||
|
<figure class="not-prose flex-none relative overflow-hidden thumbnail_card">
|
||||||
|
<img
|
||||||
|
src="{{ . }}"
|
||||||
|
alt="{{ $.Page.Title }}"
|
||||||
|
loading="lazy"
|
||||||
|
decoding="async"
|
||||||
|
fetchpriority="low"
|
||||||
|
class="not-prose absolute inset-0 w-full h-full object-cover">
|
||||||
|
</figure>
|
||||||
|
{{ end }}
|
||||||
{{ if site.Params.taxonomy.showTermCount | default true }}
|
{{ if site.Params.taxonomy.showTermCount | default true }}
|
||||||
<span class="absolute bottom-0 right-0 m-2">
|
<span class="absolute bottom-0 right-0 m-2">
|
||||||
<span class="flex">
|
<span class="flex">
|
||||||
@@ -38,14 +48,16 @@
|
|||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
|
|
||||||
<div class="px-6 py-4">
|
<div class="px-6 py-4">
|
||||||
|
<a
|
||||||
|
{{ partial "article-link/_external-link.html" .Page | safeHTMLAttr }}
|
||||||
|
class="not-prose before:absolute before:inset-0 decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 hover:underline hover:underline-offset-2">
|
||||||
<div
|
<div
|
||||||
class="font-bold text-xl text-neutral-800 decoration-primary-500 hover:underline hover:underline-offset-2 dark:text-neutral">
|
class="font-bold text-xl text-neutral-800 decoration-primary-500 hover:underline hover:underline-offset-2 dark:text-neutral">
|
||||||
{{ .Page.Title | emojify }}
|
{{ .Page.Title | emojify }}
|
||||||
</div>
|
</div>
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="px-6 pt-4 pb-2"></div>
|
<div class="px-6 pt-4 pb-2"></div>
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</div>
|
||||||
@@ -33,12 +33,24 @@
|
|||||||
const TOC_LINK_SELECTOR = 'a[href^="#"]'
|
const TOC_LINK_SELECTOR = 'a[href^="#"]'
|
||||||
const NESTED_LIST_SELECTOR = 'li ul'
|
const NESTED_LIST_SELECTOR = 'li ul'
|
||||||
const ACTIVE_CLASS = 'active'
|
const ACTIVE_CLASS = 'active'
|
||||||
|
let isJumpingToAnchor = false
|
||||||
|
|
||||||
function getActiveAnchorId(anchors, offsetRatio) {
|
function getActiveAnchorId(anchors, offsetRatio) {
|
||||||
const threshold = window.scrollY + window.innerHeight * offsetRatio
|
const threshold = window.scrollY + window.innerHeight * offsetRatio
|
||||||
const tocLinks = [...document.querySelectorAll('#TableOfContents a[href^="#"]')]
|
const tocLinks = [...document.querySelectorAll('#TableOfContents a[href^="#"]')]
|
||||||
const tocIds = new Set(tocLinks.map(link => link.getAttribute('href').substring(1)))
|
const tocIds = new Set(tocLinks.map(link => link.getAttribute('href').substring(1)))
|
||||||
|
|
||||||
|
if (isJumpingToAnchor) {
|
||||||
|
for (let i = 0; i < anchors.length; i++) {
|
||||||
|
const anchor = anchors[i]
|
||||||
|
if (!tocIds.has(anchor.id)) continue
|
||||||
|
const top = anchor.getBoundingClientRect().top + window.scrollY
|
||||||
|
if (Math.abs(window.scrollY - top) < 100) {
|
||||||
|
return anchor.id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for (let i = anchors.length - 1; i >= 0; i--) {
|
for (let i = anchors.length - 1; i >= 0; i--) {
|
||||||
const top = anchors[i].getBoundingClientRect().top + window.scrollY
|
const top = anchors[i].getBoundingClientRect().top + window.scrollY
|
||||||
if (top <= threshold && tocIds.has(anchors[i].id)) {
|
if (top <= threshold && tocIds.has(anchors[i].id)) {
|
||||||
@@ -85,6 +97,12 @@
|
|||||||
toc.querySelectorAll(NESTED_LIST_SELECTOR).forEach(ul => ul.style.display = 'none')
|
toc.querySelectorAll(NESTED_LIST_SELECTOR).forEach(ul => ul.style.display = 'none')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
links.forEach(link => {
|
||||||
|
link.addEventListener('click', () => {
|
||||||
|
isJumpingToAnchor = true
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
const config = {
|
const config = {
|
||||||
toc,
|
toc,
|
||||||
anchors,
|
anchors,
|
||||||
|
|||||||
@@ -149,8 +149,9 @@
|
|||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{ $repoCardCSS := resources.FromString "css/repo-cards.css" (delimit $cssRules "\n")
|
{{ $cssContent := delimit $cssRules "\n" }}
|
||||||
| minify | resources.Fingerprint (.Site.Params.fingerprintAlgorithm | default "sha512")
|
{{ $outputPath := path.Join .Page.RelPermalink "repo-cards.css" }}
|
||||||
}}
|
{{ $repoCardCSS := resources.FromString $outputPath $cssContent | minify | resources.Fingerprint (.Site.Params.fingerprintAlgorithm | default "sha512") }}
|
||||||
|
|
||||||
<link rel="stylesheet" href="{{ $repoCardCSS.RelPermalink }}" integrity="{{ $repoCardCSS.Data.Integrity }}">
|
<link rel="stylesheet" href="{{ $repoCardCSS.RelPermalink }}" integrity="{{ $repoCardCSS.Data.Integrity }}">
|
||||||
{{ end }}
|
{{ end }}
|
||||||