mirror of
https://github.com/gethinode/hinode.git
synced 2025-10-07 10:04:22 +00:00
Compare commits
352 Commits
v0.21.10
...
v0.23.0-al
Author | SHA1 | Date | |
---|---|---|---|
![]() |
e924bd96ec | ||
![]() |
e234240e74 | ||
![]() |
33473b0db1 | ||
![]() |
cfad29f9d4 | ||
![]() |
7ffdbea3ec | ||
![]() |
2c2fb4d305 | ||
![]() |
709172c506 | ||
![]() |
8727ee50ee | ||
![]() |
04d4d20ba6 | ||
![]() |
e77ea9358e | ||
![]() |
6263dc0649 | ||
![]() |
52eccfc384 | ||
![]() |
13085416e2 | ||
![]() |
f7efa99fc3 | ||
![]() |
32d6b8844a | ||
![]() |
1c4287a3ed | ||
![]() |
354fa85f38 | ||
![]() |
78fb0760f3 | ||
![]() |
dfdda4d27f | ||
![]() |
6d8f90bdce | ||
![]() |
3e531da29c | ||
![]() |
6065ebb6b4 | ||
![]() |
75373935f1 | ||
![]() |
1d5784a4d1 | ||
![]() |
5df94ffe33 | ||
![]() |
6aeaa8812a | ||
![]() |
b1f8044e02 | ||
![]() |
09fc0991bd | ||
![]() |
a7b70efef0 | ||
![]() |
4c3df8e769 | ||
![]() |
15418f7bdc | ||
![]() |
0a2bc468e5 | ||
![]() |
df8bcff315 | ||
![]() |
56e992ba7a | ||
![]() |
e7a6582229 | ||
![]() |
02946a9c9b | ||
![]() |
a5ca5fcff1 | ||
![]() |
b412c03b72 | ||
![]() |
22678d4ecc | ||
![]() |
d84099e41f | ||
![]() |
853aac57a6 | ||
![]() |
a5bddcb033 | ||
![]() |
3a7178166f | ||
![]() |
3f89bfb444 | ||
![]() |
e5ba3a94a4 | ||
![]() |
dc7af61a3a | ||
![]() |
da560a0275 | ||
![]() |
41cf694792 | ||
![]() |
59f42c0dbd | ||
![]() |
b2302e2e9f | ||
![]() |
8e6c0f8ade | ||
![]() |
ba92505daa | ||
![]() |
e6e93888f6 | ||
![]() |
e92598dc5b | ||
![]() |
697c6a1aae | ||
![]() |
2487001b0d | ||
![]() |
7cd722bcc2 | ||
![]() |
e0b7d7c3bb | ||
![]() |
23470b705d | ||
![]() |
70a624a9f3 | ||
![]() |
bce38385ab | ||
![]() |
8848b126ca | ||
![]() |
45a90fbe9d | ||
![]() |
d2929bf776 | ||
![]() |
3bab1c1250 | ||
![]() |
e59d4696da | ||
![]() |
f44f74f34c | ||
![]() |
22474722ad | ||
![]() |
99df503a90 | ||
![]() |
0df055db8c | ||
![]() |
f73936d056 | ||
![]() |
e1c976e09a | ||
![]() |
21579f7a40 | ||
![]() |
693882aff1 | ||
![]() |
6b42ed0845 | ||
![]() |
ed9373bc7e | ||
![]() |
0d2f5cc553 | ||
![]() |
12f6e9e552 | ||
![]() |
999c7a8fff | ||
![]() |
a5494f4681 | ||
![]() |
404a5500df | ||
![]() |
4442833c1b | ||
![]() |
4cb800d485 | ||
![]() |
f1598c3c4b | ||
![]() |
6b9915a425 | ||
![]() |
59befa908f | ||
![]() |
af68fb24b5 | ||
![]() |
73870663f6 | ||
![]() |
ac48cf6b57 | ||
![]() |
6a5d4a1363 | ||
![]() |
8be3996fb2 | ||
![]() |
bd7d2ffb09 | ||
![]() |
9375248a09 | ||
![]() |
713d1920a3 | ||
![]() |
adc1212cd7 | ||
![]() |
b8803d75fe | ||
![]() |
8006acb8c9 | ||
![]() |
7be7e3b7f0 | ||
![]() |
a6c18c91e5 | ||
![]() |
81c531e2b5 | ||
![]() |
d66910740f | ||
![]() |
3323bf500d | ||
![]() |
3cc34d18e0 | ||
![]() |
aeb050440f | ||
![]() |
a9a6bd0d31 | ||
![]() |
2b921def52 | ||
![]() |
f5a1a97383 | ||
![]() |
c87b96f8f0 | ||
![]() |
1def105bda | ||
![]() |
1d67a30ece | ||
![]() |
1a3d50ca17 | ||
![]() |
ce26722c96 | ||
![]() |
f2aab26b6e | ||
![]() |
10e086594b | ||
![]() |
30ea77182d | ||
![]() |
e899d7d39a | ||
![]() |
3b2e780a20 | ||
![]() |
d443d89616 | ||
![]() |
c981ac45d3 | ||
![]() |
ceabca3a43 | ||
![]() |
99b6fcbc42 | ||
![]() |
dde79bf5d0 | ||
![]() |
ff3e957558 | ||
![]() |
1466c7a927 | ||
![]() |
1a7c18d209 | ||
![]() |
2c8ed7c494 | ||
![]() |
0526b4c5e0 | ||
![]() |
c2f4e6bc48 | ||
![]() |
0cc5fcb33a | ||
![]() |
e461a9564f | ||
![]() |
183879d51c | ||
![]() |
cddae05b53 | ||
![]() |
67d831d898 | ||
![]() |
d726323220 | ||
![]() |
f76fea84cc | ||
![]() |
6ec24e12f7 | ||
![]() |
cf27cce44d | ||
![]() |
6ea22d121f | ||
![]() |
2d7bfaa9dc | ||
![]() |
0e62cc4fec | ||
![]() |
ae0307092f | ||
![]() |
2ebf6fe7fa | ||
![]() |
f9805de74c | ||
![]() |
20b7b6b95c | ||
![]() |
c2beca3504 | ||
![]() |
7414a1badf | ||
![]() |
cd5f7e08c4 | ||
![]() |
fd804fa29a | ||
![]() |
08c310c59e | ||
![]() |
46bde0918f | ||
![]() |
a77c3aa347 | ||
![]() |
d27c04dc64 | ||
![]() |
b0c8326255 | ||
![]() |
99a35a3ffd | ||
![]() |
c5673efea2 | ||
![]() |
c3b48e0033 | ||
![]() |
5aa57dd402 | ||
![]() |
d919d3f068 | ||
![]() |
38ad418005 | ||
![]() |
ba50786118 | ||
![]() |
aee3cb3e03 | ||
![]() |
61430b07e2 | ||
![]() |
5d393598c5 | ||
![]() |
4b0c075b53 | ||
![]() |
2b5b6434da | ||
![]() |
ae0877037a | ||
![]() |
64a12da2e6 | ||
![]() |
6865fa40f7 | ||
![]() |
79632aeed0 | ||
![]() |
6f03f3e5fd | ||
![]() |
df53150972 | ||
![]() |
9282cd630d | ||
![]() |
a3eb2fc7cc | ||
![]() |
4e39d03240 | ||
![]() |
8cadb30179 | ||
![]() |
d2c02ca016 | ||
![]() |
1bbfba32a5 | ||
![]() |
cf59cc3a49 | ||
![]() |
897db61ee2 | ||
![]() |
ac14ac23fb | ||
![]() |
0f1bc34d37 | ||
![]() |
26d318356f | ||
![]() |
9f4a0d35b6 | ||
![]() |
a201be6487 | ||
![]() |
380ebcd1d8 | ||
![]() |
c06499033d | ||
![]() |
0874957993 | ||
![]() |
6019c7412f | ||
![]() |
30c300cabf | ||
![]() |
46f11f02ab | ||
![]() |
71e6029117 | ||
![]() |
5c67da7882 | ||
![]() |
af4f6de4b9 | ||
![]() |
9b173d6c68 | ||
![]() |
2f4fb5230d | ||
![]() |
9144a1fec3 | ||
![]() |
4192af1d46 | ||
![]() |
0e72124cdc | ||
![]() |
8300b9afee | ||
![]() |
5f61e74dfb | ||
![]() |
44b3ccd21e | ||
![]() |
29e54ce7ec | ||
![]() |
f2835209c6 | ||
![]() |
a0a1b8a9c0 | ||
![]() |
83f6ec1cb9 | ||
![]() |
af5b07202e | ||
![]() |
0bcfa59a12 | ||
![]() |
e00095f68d | ||
![]() |
5cbd2a1a82 | ||
![]() |
9b5a45a3f6 | ||
![]() |
325500620a | ||
![]() |
134bfa1a0b | ||
![]() |
df593859fa | ||
![]() |
4204fae5a0 | ||
![]() |
cc12c49143 | ||
![]() |
f09694da70 | ||
![]() |
d923df2156 | ||
![]() |
71d1db456a | ||
![]() |
ec0eaa2faa | ||
![]() |
836cd21df2 | ||
![]() |
7a4c364b49 | ||
![]() |
79f10ba724 | ||
![]() |
d0ea4ecd1b | ||
![]() |
867e448e21 | ||
![]() |
50a07d368f | ||
![]() |
21e2435350 | ||
![]() |
0dab66f24c | ||
![]() |
827595ded2 | ||
![]() |
fda99f18e8 | ||
![]() |
c9b76c9bc4 | ||
![]() |
3e2e2de482 | ||
![]() |
d648873e21 | ||
![]() |
2490b26277 | ||
![]() |
66ccd7a71d | ||
![]() |
4ef440d499 | ||
![]() |
e334dd1d10 | ||
![]() |
c7e62acf9d | ||
![]() |
f44adf92b4 | ||
![]() |
87cd07801d | ||
![]() |
24e96e2724 | ||
![]() |
a5f5a9ff24 | ||
![]() |
dd19b8a236 | ||
![]() |
0a80f40c07 | ||
![]() |
772cc97a8b | ||
![]() |
ce7f1d6c26 | ||
![]() |
a41994fc0f | ||
![]() |
6e42a729e7 | ||
![]() |
33a634e4fc | ||
![]() |
fc61c52939 | ||
![]() |
5e4ff5b780 | ||
![]() |
2e5903abed | ||
![]() |
62db8f574f | ||
![]() |
d44ee41268 | ||
![]() |
6baadfef75 | ||
![]() |
fbec6a9b35 | ||
![]() |
197d9359dd | ||
![]() |
fa083e0bde | ||
![]() |
1cf427fddd | ||
![]() |
819e9e89dc | ||
![]() |
900632c5f5 | ||
![]() |
dc66a4334f | ||
![]() |
badbe334df | ||
![]() |
fa334d6e84 | ||
![]() |
9580d4e72e | ||
![]() |
252257be8b | ||
![]() |
04c253995f | ||
![]() |
8c007fd627 | ||
![]() |
afcd59e1a4 | ||
![]() |
bba0ecad63 | ||
![]() |
c1058ac665 | ||
![]() |
b891fcdc4f | ||
![]() |
3bea9dfc8f | ||
![]() |
4d99d7dfc4 | ||
![]() |
373b8eddeb | ||
![]() |
d463d1feb3 | ||
![]() |
48a96a8d79 | ||
![]() |
0e1128aba3 | ||
![]() |
c3be4957ba | ||
![]() |
3618aadf74 | ||
![]() |
74a8c36c74 | ||
![]() |
49aa52b36f | ||
![]() |
ee95a05b48 | ||
![]() |
134e544718 | ||
![]() |
306a767686 | ||
![]() |
47ca9d303a | ||
![]() |
6fc68fe540 | ||
![]() |
9195bd7f4e | ||
![]() |
4ef503e07f | ||
![]() |
4711139513 | ||
![]() |
fc56508b91 | ||
![]() |
232c78364f | ||
![]() |
d85e16f1fa | ||
![]() |
562b386cb5 | ||
![]() |
daab751299 | ||
![]() |
9e82ff8de5 | ||
![]() |
52b2c23565 | ||
![]() |
617fd688db | ||
![]() |
2cf7fff3ba | ||
![]() |
a34d3fde1f | ||
![]() |
be054a723e | ||
![]() |
fc43f6a52e | ||
![]() |
195d3cb69b | ||
![]() |
92c69b6011 | ||
![]() |
ea78805587 | ||
![]() |
76e90ea321 | ||
![]() |
b300758aa5 | ||
![]() |
68c44c55d4 | ||
![]() |
228a89f61d | ||
![]() |
2645453de2 | ||
![]() |
5ce069a4c0 | ||
![]() |
6661434c35 | ||
![]() |
aee6b3a32d | ||
![]() |
4b0cc260cb | ||
![]() |
7611315941 | ||
![]() |
3b1f71a601 | ||
![]() |
fead3555fc | ||
![]() |
cd3f99fc90 | ||
![]() |
a2e6855117 | ||
![]() |
1e4cd3a5da | ||
![]() |
865898ac4f | ||
![]() |
44ace26cde | ||
![]() |
d0350c7672 | ||
![]() |
943a115ef0 | ||
![]() |
745322b3fe | ||
![]() |
90ea2cb760 | ||
![]() |
2d6c3c7d64 | ||
![]() |
4401c49c54 | ||
![]() |
fa3bfa7008 | ||
![]() |
14c2ddc725 | ||
![]() |
1e55dc8f65 | ||
![]() |
78980dde3f | ||
![]() |
3a770b6f40 | ||
![]() |
b271adef3f | ||
![]() |
639c9770b8 | ||
![]() |
e6b29666ad | ||
![]() |
dd052250f6 | ||
![]() |
1223a22d7e | ||
![]() |
b6f034f8e3 | ||
![]() |
ca01b67396 | ||
![]() |
eb3a2b0bb1 | ||
![]() |
41711fb527 | ||
![]() |
6e7a9a8796 | ||
![]() |
92838c0572 | ||
![]() |
3f71da19ee | ||
![]() |
43a6dd2b79 | ||
![]() |
806fac97db | ||
![]() |
9fd07827db | ||
![]() |
28cdcec7ee | ||
![]() |
cb2e946435 | ||
![]() |
2e7bb50d43 | ||
![]() |
3d7875ba18 | ||
![]() |
29ab88d581 |
8
.github/workflows/lint-build.yml
vendored
8
.github/workflows/lint-build.yml
vendored
@@ -20,10 +20,10 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Check out repository
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Node.js
|
||||
uses: actions/setup-node@v3
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: lts/*
|
||||
cache: 'npm'
|
||||
@@ -49,10 +49,10 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Check out repository
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v3
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
cache: 'npm'
|
||||
|
4
.github/workflows/mod-update.yml
vendored
4
.github/workflows/mod-update.yml
vendored
@@ -14,10 +14,10 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v3
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: lts/*
|
||||
cache: 'npm'
|
||||
|
4
.github/workflows/npm-publish.yml
vendored
4
.github/workflows/npm-publish.yml
vendored
@@ -21,10 +21,10 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup .npmrc file to publish to npm
|
||||
uses: actions/setup-node@v3
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
registry-url: ${{ env.REGISTRY_URL }}
|
||||
|
@@ -6,7 +6,9 @@
|
||||
"MD026": false,
|
||||
"MD034": false,
|
||||
"MD051": false,
|
||||
"MD053": false
|
||||
"MD053": false,
|
||||
"MD055": false,
|
||||
"MD056": false
|
||||
},
|
||||
"ignores": ["node_modules", "CHANGELOG.md"]
|
||||
}
|
||||
|
2
LICENSE
2
LICENSE
@@ -1,6 +1,6 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2023 Mark Dumay
|
||||
Copyright (c) 2024 Mark Dumay
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
16
README.md
16
README.md
@@ -75,6 +75,14 @@ The installation instructions in this readme install Hinode as a regular Hugo th
|
||||
|
||||
## Installation
|
||||
|
||||
<!-- markdownlint-disable MD033 -->
|
||||
<details>
|
||||
<summary>Installation notes for Windows</summary>
|
||||
|
||||
The installation for Windows requires PowerShell v7. Download it from the Microsoft Store as needed. Check your current version with the command `$PSVersionTable`.
|
||||
</details>
|
||||
<!-- markdownlint-enable MD033 -->
|
||||
|
||||
Start a new Hinode project in three steps:
|
||||
|
||||
1. **Create a new site**
|
||||
@@ -83,14 +91,15 @@ Start a new Hinode project in three steps:
|
||||
hugo new site my-hinode-site && cd my-hinode-site
|
||||
```
|
||||
|
||||
1. **Initialize the module system**
|
||||
2. **Initialize the module system**
|
||||
|
||||
```bash
|
||||
hugo mod init example.com/my-hinode-site
|
||||
echo "[[module.imports]]\npath = 'github.com/gethinode/hinode'" >> hugo.toml
|
||||
echo "[[module.imports]]" >> hugo.toml
|
||||
echo "path = 'github.com/gethinode/hinode'" >> hugo.toml
|
||||
```
|
||||
|
||||
1. **Start a development server**
|
||||
3. **Start a development server**
|
||||
|
||||
```bash
|
||||
hugo server
|
||||
@@ -136,7 +145,6 @@ The `hinode`, `docs`, and `template` codebase is released under the [MIT license
|
||||
[npm]: https://www.npmjs.com
|
||||
[observatory]: https://observatory.mozilla.org/analyze/demo.gethinode.com
|
||||
[pagespeed]: https://pagespeed.web.dev/report?url=https%3A%2F%2Fdemo.gethinode.com%2F
|
||||
[utterances]: https://utteranc.es
|
||||
|
||||
<!-- MARKDOWN MAINTAINED LINKS -->
|
||||
[contribute]: https://gethinode.com/contribute
|
||||
|
BIN
assets/img/creator-1x1.jpg
Normal file
BIN
assets/img/creator-1x1.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.5 MiB |
@@ -1,8 +1,14 @@
|
||||
const navbar = document.querySelector('.navbar')
|
||||
const togglers = document.querySelectorAll('.main-nav-toggler')
|
||||
const modeSelectors = document.querySelectorAll('.switch-mode-collapsed')
|
||||
const colorsBG = ['body', 'secondary', 'tertiary']
|
||||
|
||||
if (navbar !== null && togglers !== null) {
|
||||
// initialize background color
|
||||
const color = (navbar.getAttribute('data-navbar-color') || 'body')
|
||||
const bg = colorsBG.includes(color) ? `var(--bs-${color}-bg)` : `var(--bs-navbar-color-${color})`
|
||||
navbar.style.setProperty('--bs-navbar-expanded-color', bg)
|
||||
|
||||
// set the navbar background color to opaque when scrolling past a breakpoint
|
||||
window.onscroll = () => {
|
||||
if (window.scrollY > 75) {
|
||||
|
@@ -24,7 +24,6 @@
|
||||
@import "components/carousel.scss";
|
||||
@import "components/clipboard.scss";
|
||||
@import "components/command.scss";
|
||||
@import "components/comments.scss";
|
||||
@import "components/feature.scss";
|
||||
@import "components/footer.scss";
|
||||
@import "components/nav.scss";
|
||||
|
@@ -22,7 +22,6 @@
|
||||
@import "components/carousel.scss";
|
||||
@import "components/clipboard.scss";
|
||||
@import "components/command.scss";
|
||||
@import "components/comments.scss";
|
||||
@import "components/feature.scss";
|
||||
@import "components/footer.scss";
|
||||
@import "components/nav.scss";
|
||||
|
@@ -22,13 +22,13 @@ a:active {
|
||||
}
|
||||
|
||||
.fullscreen {
|
||||
--navbar-offset: #{$navbar-offset};
|
||||
--overlay-offset: #{$overlay-offset};
|
||||
|
||||
min-height: calc(100vh - var(--navbar-offset));
|
||||
min-height: calc(100vh - var(--overlay-offset));
|
||||
}
|
||||
|
||||
.main-content {
|
||||
margin-top: $navbar-offset;
|
||||
margin-top: $overlay-offset;
|
||||
}
|
||||
|
||||
$utilities: map-merge(
|
||||
|
@@ -20,6 +20,7 @@ strong {
|
||||
|
||||
$navbar-height: h.$navbar-height;
|
||||
$navbar-offset: h.$navbar-offset;
|
||||
$overlay-offset: h.$overlay-offset;
|
||||
$primary: h.$primary;
|
||||
$secondary: h.$secondary;
|
||||
$success: h.$success;
|
||||
|
@@ -1,20 +0,0 @@
|
||||
.utterances {
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
max-width: 760px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.utterances-frame {
|
||||
color-scheme: light;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
right: 0;
|
||||
width: 1px;
|
||||
min-width: 100%;
|
||||
max-width: 100%;
|
||||
height: 100%;
|
||||
border: 0;
|
||||
}
|
@@ -19,3 +19,11 @@
|
||||
-webkit-transform: scaleX(-1);
|
||||
transform: scaleX(-1);
|
||||
}
|
||||
|
||||
.background-img {
|
||||
--overlay-offset: #{$overlay-offset};
|
||||
|
||||
height: calc(100vh - var(--overlay-offset));
|
||||
width: 100vw;
|
||||
object-fit: cover;
|
||||
}
|
||||
|
@@ -2,13 +2,21 @@
|
||||
|
||||
// Source: https://jsfiddle.net/njhgr40m/
|
||||
|
||||
|
||||
.navbar {
|
||||
--bs-navbar-expanded-color: var(--bs-body-bg);
|
||||
--bs-navbar-toggler-color: var(--bs-navbar-hover-color);
|
||||
|
||||
transition: 0.5s ease-in-out;
|
||||
background-color: transparent;
|
||||
|
||||
@each $state, $val in $theme-colors {
|
||||
--bs-navbar-color-#{$state}: #{$val};
|
||||
}
|
||||
}
|
||||
|
||||
.nav-active, .navbar-expanded {
|
||||
background-color: var(--bs-body-bg);
|
||||
background-color: var(--bs-navbar-expanded-color);
|
||||
}
|
||||
|
||||
.nav-link {
|
||||
@@ -25,12 +33,39 @@
|
||||
--bs-navbar-hover-color: white !important;
|
||||
--bs-navbar-disabled-color: white !important;
|
||||
--bs-navbar-active-color: white !important;
|
||||
--bs-navbar-toggler-color: white;
|
||||
}
|
||||
|
||||
.navbar-expanded {
|
||||
box-shadow: $box-shadow-sm;
|
||||
}
|
||||
|
||||
.navbar-overlay-dark {
|
||||
--bs-navbar-color: #{$navbar-dark-color};
|
||||
--bs-navbar-hover-color: #{$navbar-dark-hover-color};
|
||||
--bs-navbar-disabled-color: #{$navbar-dark-disabled-color};
|
||||
--bs-navbar-active-color: #{$navbar-dark-active-color};
|
||||
--bs-navbar-brand-color: #{$navbar-dark-brand-color};
|
||||
--bs-navbar-brand-hover-color: #{$navbar-dark-brand-hover-color};
|
||||
--bs-navbar-toggler-border-color: #{$navbar-dark-toggler-border-color};
|
||||
--bs-navbar-toggler-color: white;
|
||||
}
|
||||
|
||||
.navbar-overlay-light, .navbar-overlay-dark.nav-active, .navbar-overlay-dark.navbar-expanded {
|
||||
--bs-navbar-color: #{$navbar-light-color};
|
||||
--bs-navbar-hover-color: #{$navbar-light-hover-color};
|
||||
--bs-navbar-disabled-color: #{$navbar-light-disabled-color};
|
||||
--bs-navbar-active-color: #{$navbar-light-active-color};
|
||||
--bs-navbar-brand-color: #{$navbar-light-brand-color};
|
||||
--bs-navbar-brand-hover-color: #{$navbar-light-brand-hover-color};
|
||||
--bs-navbar-toggler-border-color: #{$navbar-light-toggler-border-color};
|
||||
--bs-navbar-toggler-color: black;
|
||||
}
|
||||
|
||||
.nav-item .vr {
|
||||
color: var(--bs-navbar-color);
|
||||
}
|
||||
|
||||
/* Remove border from toggler */
|
||||
.navbar-toggler {
|
||||
border: 0 if($enable-important-utilities, !important, null);
|
||||
@@ -97,19 +132,11 @@
|
||||
|
||||
/* Color of Toggler when collapsed */
|
||||
.navbar-toggler.collapsed .toggler-icon {
|
||||
background-color: #777;
|
||||
background-color: var(--bs-navbar-toggler-color);
|
||||
}
|
||||
|
||||
.emphasis-light {
|
||||
background-color: $black if($enable-important-utilities, !important, null);
|
||||
}
|
||||
|
||||
.emphasis-dark {
|
||||
background-color: $white if($enable-important-utilities, !important, null);
|
||||
}
|
||||
|
||||
.emphasis {
|
||||
background-color: $black if($enable-important-utilities, !important, null);
|
||||
.emphasis, .emphasis-dark, .emphasis-light {
|
||||
background-color: var(--bs-navbar-toggler-color);
|
||||
}
|
||||
|
||||
@include color-mode(dark) {
|
||||
|
@@ -1,6 +1,6 @@
|
||||
# toml-docs-start main
|
||||
title = "Hinode"
|
||||
copyright = "Copyright © 2023 Mark Dumay."
|
||||
copyright = "Copyright © 2024 Mark Dumay."
|
||||
paginate = 9
|
||||
enableGitInfo = true
|
||||
# toml-docs-end main
|
||||
@@ -89,6 +89,8 @@ home = ["HTML", "RSS", "REDIR"]
|
||||
keepVarNames = true
|
||||
precision = 0
|
||||
version = 2022
|
||||
[minify.tdewolff.html]
|
||||
keepWhitespace = true
|
||||
|
||||
[module]
|
||||
[module.hugoVersion]
|
||||
@@ -104,6 +106,9 @@ home = ["HTML", "RSS", "REDIR"]
|
||||
[[module.mounts]]
|
||||
source = "content"
|
||||
target = "content"
|
||||
[[module.mounts]]
|
||||
source = "data"
|
||||
target = "data"
|
||||
[[module.mounts]]
|
||||
source = "i18n"
|
||||
target = "i18n"
|
||||
@@ -129,4 +134,6 @@ home = ["HTML", "RSS", "REDIR"]
|
||||
path = "github.com/gethinode/mod-leaflet"
|
||||
[[module.imports]]
|
||||
path = "github.com/gethinode/mod-lottie"
|
||||
[[module.imports]]
|
||||
path = "github.com/gethinode/mod-utils"
|
||||
# toml-docs-end modules
|
||||
|
@@ -63,6 +63,8 @@
|
||||
logo = "/img/logo_icon.svg"
|
||||
color = "body"
|
||||
fixed = true
|
||||
overlay = false
|
||||
overlayMode = "dark"
|
||||
horizontal = false
|
||||
offset = "5.5rem"
|
||||
search = true
|
||||
@@ -189,14 +191,5 @@
|
||||
images = ["logo.png"]
|
||||
locale = "en_US"
|
||||
|
||||
[comments]
|
||||
enabled = false
|
||||
repo = "" # Replace with your repository.
|
||||
#issueTerm = "pathname" # pathname, url, title, og:title
|
||||
#label = "comment"
|
||||
# By default, light and dark mode correspond to github-light and github-dark, respectively.
|
||||
# Optional values: github-light, github-dark, preferred-color-scheme, github-dark-orange, icy-dark, dark-blue, photon-dark.
|
||||
#theme = ""
|
||||
|
||||
[links]
|
||||
hinode = "https://gethinode.com"
|
||||
|
@@ -7,15 +7,14 @@ for = '/**'
|
||||
X-XSS-Protection = "1; mode=block"
|
||||
Content-Security-Policy = """\
|
||||
default-src 'self'; \
|
||||
script-src 'self' \
|
||||
https://utteranc.es/client.js https://*.google-analytics.com https://*.googletagmanager.com; \
|
||||
style-src 'self' https://utteranc.es https://fonts.googleapis.com https://www.youtube.com; \
|
||||
script-src 'self' https://*.google-analytics.com https://*.googletagmanager.com; \
|
||||
style-src 'self' https://fonts.googleapis.com https://www.youtube.com; \
|
||||
object-src 'none'; \
|
||||
base-uri 'self'; \
|
||||
connect-src 'self'
|
||||
https://*.google-analytics.com https://*.analytics.google.com https://*.googletagmanager.com; \
|
||||
font-src 'self' https://fonts.gstatic.com; \
|
||||
frame-src 'self' https://utteranc.es https://www.youtube-nocookie.com https://www.youtube.com; \
|
||||
frame-src 'self' https://www.youtube-nocookie.com https://www.youtube.com; \
|
||||
img-src 'self' data: https://i.vimeocdn.com https://i.ytimg.com https://*.google-analytics.com https://*.googletagmanager.com https://tile.openstreetmap.org; \
|
||||
manifest-src 'self'; \
|
||||
media-src 'self' \
|
||||
|
@@ -21,6 +21,7 @@ const purgecss = require('@fullhuman/postcss-purgecss')({
|
||||
'./assets/scss/components/_syntax-dark.scss',
|
||||
'./assets/scss/components/_syntax-light.scss',
|
||||
'./assets/scss/components/_table.scss',
|
||||
'./assets/scss/components/_video.scss',
|
||||
'./assets/scss/theme/fonts.scss',
|
||||
'./assets/scss/theme/theme.scss',
|
||||
'./_vendor/github.com/gethinode/mod-flexsearch/assets/scss/modules/flexsearch/flexsearch.scss',
|
||||
|
35
data/structures/abbr.yml
Normal file
35
data/structures/abbr.yml
Normal file
@@ -0,0 +1,35 @@
|
||||
comment: >-
|
||||
Creates an HTML element that shows the long form of an abbrevitation. The
|
||||
abbreviation data is centrally stored in a data file. By default, the
|
||||
shortcode uses `abbr.yaml` with translation support.
|
||||
|
||||
The data file is expected to store key-value pairs, where `id` is the
|
||||
lower-case abbrevation and `long` its long form. The following example
|
||||
illustrates this using YML:
|
||||
|
||||
- id: css
|
||||
long: `Cascading Style Sheets`
|
||||
arguments:
|
||||
key:
|
||||
type: string
|
||||
position: 0
|
||||
optional: false
|
||||
comment: >-
|
||||
Case-insensitive key of the abbreviation. In shorthand notation, this is
|
||||
the first (and only) matched argument. Non-alphanumeric keys must be quoted.
|
||||
data:
|
||||
type: string
|
||||
default: abbr.yaml
|
||||
optional: true
|
||||
comment: >-
|
||||
Filename of the abbrevation input. You can omit the file extension. The
|
||||
file should reside in the `data` folder. The data supports language
|
||||
extensions. For example, `abbr.en.yaml` refers to the English translation
|
||||
of the abbrevation data. The filename `abbr.yaml` is used when no suitable
|
||||
translation is found.
|
||||
class:
|
||||
type: string
|
||||
optional: true
|
||||
comment: >-
|
||||
Class attribute of the abbr element. For example, specify `initialism` for
|
||||
a slightly smaller font size.
|
19
data/structures/accordion-item.yml
Normal file
19
data/structures/accordion-item.yml
Normal file
@@ -0,0 +1,19 @@
|
||||
comment: >-
|
||||
Defines an individual accordion item.
|
||||
arguments:
|
||||
header:
|
||||
type: string
|
||||
optional: false
|
||||
comment: Header of the accordion item.
|
||||
show:
|
||||
type: bool
|
||||
optional: true
|
||||
comment: Flag to indicate an item should be shown as collapsed.
|
||||
class:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Class attribute of the accordion item.
|
||||
body:
|
||||
optional: false
|
||||
comment: Content of the accordion item.
|
||||
group: shortcode
|
18
data/structures/accordion.yml
Normal file
18
data/structures/accordion.yml
Normal file
@@ -0,0 +1,18 @@
|
||||
comment: >-
|
||||
Use the accordion to show a group of vertically collapsing and expanding
|
||||
items. Add accordion-item inner elements for each accordion item.
|
||||
arguments:
|
||||
id:
|
||||
type: string
|
||||
optional: true
|
||||
comment: >-
|
||||
ID of the accordion, defaults to `accordion-n` with a sequential number n.
|
||||
always-open:
|
||||
type: bool
|
||||
optional: true
|
||||
comment: >-
|
||||
Flag to make accordion items stay open when another item is opened.
|
||||
class:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Class attribute of the accordion, e.g. `w-50`.
|
46
data/structures/alert.yml
Normal file
46
data/structures/alert.yml
Normal file
@@ -0,0 +1,46 @@
|
||||
comment: >-
|
||||
Use the alert shortcode to display a contextual feedback message. The inner
|
||||
content is used as alert text.
|
||||
arguments:
|
||||
class:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Class attribute of the alert element.
|
||||
color:
|
||||
type: select
|
||||
optional: true
|
||||
default: danger
|
||||
comment: Theme color of the alert.
|
||||
options:
|
||||
values:
|
||||
- primary
|
||||
- secondary
|
||||
- success
|
||||
- danger
|
||||
- warning
|
||||
- info
|
||||
- light
|
||||
- dark
|
||||
- white
|
||||
- black
|
||||
dismissible:
|
||||
type: bool
|
||||
optional: true
|
||||
default: false
|
||||
comment: Flag to indicate the alert is dismissible.
|
||||
icon:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Font Awesome icon to include.
|
||||
type:
|
||||
type: select
|
||||
optional: true
|
||||
comment: Type of the alert, generates an alert with related color and icon.
|
||||
options:
|
||||
values:
|
||||
- danger
|
||||
- info
|
||||
body:
|
||||
optional: false
|
||||
comment: Alert text.
|
||||
group: shortcode
|
27
data/structures/args.yml
Normal file
27
data/structures/args.yml
Normal file
@@ -0,0 +1,27 @@
|
||||
comment: >-
|
||||
Generates a markdown table of structured arguments. The argument definitions are
|
||||
expected to be defined in a data file identified by a provided structure name.
|
||||
arguments:
|
||||
structure:
|
||||
type: string
|
||||
position: 0
|
||||
optional: false
|
||||
comment: >-
|
||||
Name of the data file that contains argument definitions. Supported data
|
||||
formats include JSON, TOML, YAML, and XML. You can omit the file
|
||||
extension. The file should reside in the `data/structures` folder.
|
||||
group:
|
||||
type: string
|
||||
position: 1
|
||||
optional: true
|
||||
comment: >-
|
||||
Name of the group filter. This is typically used when a shortcode and
|
||||
partial have common arguments. The group filter binds a specific argument
|
||||
to a particular group. By default, an argument belongs to all groups.
|
||||
parent:
|
||||
type: bool
|
||||
position: 2
|
||||
optional: true
|
||||
comment: >-
|
||||
Flag to filter only arguments that have a parent attribute (either
|
||||
`cascade` or `merge`).
|
27
data/structures/badge.yml
Normal file
27
data/structures/badge.yml
Normal file
@@ -0,0 +1,27 @@
|
||||
comment: Use the badge shortcode to enrich headings.
|
||||
arguments:
|
||||
title:
|
||||
type: string
|
||||
optional: false
|
||||
comment: Title of the badge.
|
||||
class:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Class attribute of the badge element.
|
||||
color:
|
||||
type: select
|
||||
optional: true
|
||||
default: secondary
|
||||
comment: Theme color of the element.
|
||||
options:
|
||||
values:
|
||||
- primary
|
||||
- secondary
|
||||
- success
|
||||
- danger
|
||||
- warning
|
||||
- info
|
||||
- light
|
||||
- dark
|
||||
- white
|
||||
- black
|
16
data/structures/breadcrumb.yml
Normal file
16
data/structures/breadcrumb.yml
Normal file
@@ -0,0 +1,16 @@
|
||||
comment: Displays a breadcrumb for a specific page.
|
||||
arguments:
|
||||
page:
|
||||
type:
|
||||
- '*hugolib.pageState'
|
||||
- '*hugolib.pageForShortcode'
|
||||
optional: false
|
||||
comment: Page to display the breadcrumb for.
|
||||
group: partial
|
||||
path:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Path of the page to display the breadcrumb for.
|
||||
group: shortcode
|
||||
|
||||
|
15
data/structures/button-group.yml
Normal file
15
data/structures/button-group.yml
Normal file
@@ -0,0 +1,15 @@
|
||||
comment: >-
|
||||
Displays a group of buttons. Add inner <button> elements for each button.
|
||||
arguments:
|
||||
label:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Assistive label for the button group.
|
||||
aria-label:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Alias for label.
|
||||
body:
|
||||
type: string
|
||||
optional: false
|
||||
comment: Inner <button> elements for each button.
|
190
data/structures/button.yml
Normal file
190
data/structures/button.yml
Normal file
@@ -0,0 +1,190 @@
|
||||
comment: >-
|
||||
Display a button with a hyperlink.
|
||||
arguments:
|
||||
title:
|
||||
type:
|
||||
- string
|
||||
- template.HTML
|
||||
optional: true
|
||||
comment: Title of the button, required unless icon is set.
|
||||
class:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Class attribute of the button element, e.g. `p-5`.
|
||||
color:
|
||||
type: select
|
||||
optional: true
|
||||
default: primary
|
||||
comment: Theme color of the element.
|
||||
options:
|
||||
values:
|
||||
- primary
|
||||
- secondary
|
||||
- success
|
||||
- danger
|
||||
- warning
|
||||
- info
|
||||
- light
|
||||
- dark
|
||||
- white
|
||||
- black
|
||||
href:
|
||||
type:
|
||||
- string
|
||||
- template.URL
|
||||
optional: true
|
||||
comment: >-
|
||||
Address for the button or hyperlink. Automatically assigned when using
|
||||
collapse.
|
||||
relref:
|
||||
type: string
|
||||
optional: true
|
||||
comment: >-
|
||||
Name of the page to link to. Replaces `href` with a relative link if set.
|
||||
group: shortcode
|
||||
id:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Identifier of the button, to be used in the DOM.
|
||||
state:
|
||||
type: select
|
||||
optional: true
|
||||
default: enabled
|
||||
comment: State of the button.
|
||||
options:
|
||||
values:
|
||||
- enabled
|
||||
- disabled
|
||||
- active
|
||||
- inactive
|
||||
size:
|
||||
type: select
|
||||
optional: true
|
||||
default: md
|
||||
comment: Size of the button.
|
||||
options:
|
||||
values:
|
||||
- sm
|
||||
- md
|
||||
- lg
|
||||
outline:
|
||||
type: bool
|
||||
optional: true
|
||||
default: false
|
||||
comment: Flag indicating the button should be outlined.
|
||||
badge:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Positioned badge to display on top of the button.
|
||||
label:
|
||||
type: string
|
||||
optional: true
|
||||
comment: >-
|
||||
Assistive label for the button or badge. The label is applied
|
||||
to the badge instead of the button when a badge has been defined.
|
||||
The default value of the button's assistive label is its title.
|
||||
aria-label:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Alias for label.
|
||||
group: shortcode
|
||||
tooltip:
|
||||
type: string
|
||||
optional: true
|
||||
comment: >-
|
||||
Text to display in a tooltip. Cannot be used together with
|
||||
collapse. Ignored for active/inactive buttons.
|
||||
collapse:
|
||||
type: string
|
||||
optional: true
|
||||
comment: >-
|
||||
Panel to collapse. Cannot be used together with tooltip. Ignored for
|
||||
active/inactive buttons.
|
||||
type:
|
||||
type: select
|
||||
optional: true
|
||||
default: button
|
||||
comment: Type of the element.
|
||||
options:
|
||||
values:
|
||||
- link
|
||||
- button
|
||||
placement:
|
||||
type: select
|
||||
optional: true
|
||||
default: top
|
||||
comment: Position of the tooltip.
|
||||
options:
|
||||
values:
|
||||
- top
|
||||
- bottom
|
||||
- left
|
||||
- right
|
||||
icon:
|
||||
type: string
|
||||
optional: true
|
||||
comment: >-
|
||||
Font Awesome icon class attribute, required unless title is set. An
|
||||
example value is `fas sort`.
|
||||
order:
|
||||
type: select
|
||||
optional: true
|
||||
default: last
|
||||
comment: Order of the icon
|
||||
options:
|
||||
values:
|
||||
- first
|
||||
- last
|
||||
justify:
|
||||
type: select
|
||||
optional: true
|
||||
default: center
|
||||
comment: Justification of the button title and icon.
|
||||
options:
|
||||
values:
|
||||
- start
|
||||
- end
|
||||
- center
|
||||
- between
|
||||
- around
|
||||
- evenly
|
||||
toast:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Identifier (ID) of the toast to display when the button is clicked.
|
||||
clipboard:
|
||||
type:
|
||||
- string
|
||||
- template.URL
|
||||
optional: true
|
||||
comment: Text to be copied to the clipboard when the button is clicked.
|
||||
cue:
|
||||
type: bool
|
||||
optional: true
|
||||
comment: >-
|
||||
Flag to indicate if an external link should show a visual cue, defaults
|
||||
to the setting `main.externalLinks.cue` in the site's parameters.
|
||||
tab:
|
||||
type: bool
|
||||
optional: true
|
||||
comment: >-
|
||||
Flag to indicate if an external link should open in a new tab, defaults
|
||||
to setting `main.externalLinks.tab` in the site's parameters.
|
||||
attributes:
|
||||
type: map[string]interface {}
|
||||
optional: true
|
||||
comment: >-
|
||||
Dictionary of key-value pairs added as custom attributes to the button
|
||||
element ('<a>').
|
||||
group: partial
|
||||
spacing:
|
||||
type: bool
|
||||
optional: true
|
||||
default: true
|
||||
comment: >-
|
||||
Flag to add spacing to the inline button.
|
||||
wrapper:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Element class of the button wrapper.
|
||||
group: shortcode
|
94
data/structures/card-group.yml
Normal file
94
data/structures/card-group.yml
Normal file
@@ -0,0 +1,94 @@
|
||||
comment: >-
|
||||
Displays a grid of Bootstrap cards with 1 to 5 columns. The cards are rendered
|
||||
using a provided list of pages. Cards on the same row are aligned to each
|
||||
other. The grid renders pages up to a provided maximum amount. The remaining
|
||||
items are accessible via either a paginator or button to a list page (default
|
||||
behavior). Be aware a page can only contain one paginator at a time.
|
||||
arguments:
|
||||
page:
|
||||
type:
|
||||
- '*hugolib.pageState'
|
||||
- '*hugolib.pageForShortcode'
|
||||
optional: true
|
||||
comment: Context of the current page.
|
||||
group: partial
|
||||
title:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Title of the card group.
|
||||
gutter:
|
||||
type: int
|
||||
optional: true
|
||||
default: 4
|
||||
comment: Gutter between columns in a group.
|
||||
options:
|
||||
min: 0
|
||||
max: 5
|
||||
release: v0.19.0
|
||||
list:
|
||||
type:
|
||||
- 'page.Pages'
|
||||
- 'resource.Resources'
|
||||
- '[]map[string]interface {}'
|
||||
optional: true
|
||||
comment: Array of pages or structured content to be rendered as cards.
|
||||
group: partial
|
||||
cards:
|
||||
type: string
|
||||
optional: true
|
||||
comment: String of rendered cards.
|
||||
group: partial
|
||||
max:
|
||||
type: int
|
||||
optional: true
|
||||
comment: Maximum number of cards to display.
|
||||
group: partial
|
||||
cols:
|
||||
type: select
|
||||
optional: true
|
||||
default: "3"
|
||||
comment: Number of grid columns.
|
||||
options:
|
||||
values:
|
||||
- "1"
|
||||
- "2"
|
||||
- "3"
|
||||
- "4"
|
||||
- "5"
|
||||
- "auto"
|
||||
release: v0.19.0
|
||||
paginate:
|
||||
type: bool
|
||||
optional: true
|
||||
comment: >-
|
||||
Flag indicating if pagination should be added to the card group, if the
|
||||
list exceeds the maximum number of cards to display.
|
||||
group: partial
|
||||
href:
|
||||
type: string
|
||||
optional: true
|
||||
comment: >-
|
||||
Address for the button or hyperlink. If set, a button is added if the
|
||||
list exceeds the maximum number of cards to display.
|
||||
group: partial
|
||||
hrefTitle:
|
||||
type: string
|
||||
optional: true
|
||||
comment: >-
|
||||
Title of the button or hyperlink as companion to href.
|
||||
group: partial
|
||||
separator:
|
||||
type: bool
|
||||
optional: true
|
||||
comment: >-
|
||||
Flag to indicate a horizontal line should be added between items on small screens.
|
||||
wrapper:
|
||||
type: string
|
||||
optional: true
|
||||
comment: >-
|
||||
Class attributes of the wrapper element, e.g. `p-4 px-xxl-0`.
|
||||
responsive:
|
||||
type: bool
|
||||
optional: true
|
||||
comment: >-
|
||||
Flag indicating if the number of columns should be responsive, defaults to `true`.
|
200
data/structures/card.yml
Normal file
200
data/structures/card.yml
Normal file
@@ -0,0 +1,200 @@
|
||||
comment: >-
|
||||
Displays a Bootstrap card. Either specify a valid path, or set the arguments
|
||||
title, href, header, description, and thumbnail individually. The latter
|
||||
arguments override any page attributes.
|
||||
arguments:
|
||||
title:
|
||||
type: string
|
||||
optional: true
|
||||
comment: >-
|
||||
Title of the card, replaces the title of the referenced page (if any).
|
||||
path:
|
||||
type: path
|
||||
optional: true
|
||||
comment: >-
|
||||
Path of the page that the card reference to. If omitted, specify the
|
||||
title, icon, thumbnail, and description (inner content) as needed.
|
||||
href:
|
||||
type: url
|
||||
optional: true
|
||||
comment: >-
|
||||
Address for the button or hyperlink.
|
||||
group: partial
|
||||
class:
|
||||
type: string
|
||||
optional: true
|
||||
parent: merge
|
||||
comment: >-
|
||||
Class attribute of the card element, e.g. “w-50”.
|
||||
color:
|
||||
type: select
|
||||
optional: true
|
||||
parent: cascade
|
||||
comment: >-
|
||||
Theme color of the card. By default, no color is specified.
|
||||
options:
|
||||
values:
|
||||
- primary
|
||||
- secondary
|
||||
- success
|
||||
- danger
|
||||
- warning
|
||||
- info
|
||||
- light
|
||||
- dark
|
||||
- white
|
||||
- black
|
||||
- body
|
||||
- body-tertiary
|
||||
padding:
|
||||
type: select
|
||||
optional: true
|
||||
default: auto
|
||||
parent: cascade
|
||||
comment: >-
|
||||
Padding of the content.
|
||||
options:
|
||||
values:
|
||||
- "0"
|
||||
- "1"
|
||||
- "2"
|
||||
- "3"
|
||||
- "4"
|
||||
- "5"
|
||||
- "auto"
|
||||
gutter:
|
||||
type: select
|
||||
optional: true
|
||||
default: "0"
|
||||
parent: cascade
|
||||
comment: >-
|
||||
Gutter between columns in a group.
|
||||
options:
|
||||
values:
|
||||
- "0"
|
||||
- "1"
|
||||
- "2"
|
||||
- "3"
|
||||
- "4"
|
||||
- "5"
|
||||
header:
|
||||
type: select
|
||||
optional: true
|
||||
default: full
|
||||
parent: cascade
|
||||
comment: >-
|
||||
Header components of the card, displayed in small caps.
|
||||
options:
|
||||
values:
|
||||
- full
|
||||
- publication
|
||||
- tags
|
||||
- none
|
||||
footer:
|
||||
type: select
|
||||
optional: true
|
||||
default: none
|
||||
parent: cascade
|
||||
comment: >-
|
||||
Footer components of the card, displayed in small caps.
|
||||
options:
|
||||
values:
|
||||
- full
|
||||
- publication
|
||||
- tags
|
||||
- none
|
||||
description:
|
||||
type:
|
||||
- string
|
||||
- template.HTML
|
||||
optional: true
|
||||
comment: >-
|
||||
Description of the card.
|
||||
group: partial
|
||||
loading:
|
||||
type: select
|
||||
optional: true
|
||||
parent: cascade
|
||||
default: eager
|
||||
comment: >-
|
||||
Loading behavior of the image. The loading of lazily loaded images is
|
||||
deferred until the image is within scrolling range of the viewport. This
|
||||
should reduce the initial loading time of the website. It is recommended
|
||||
to lazily load only those images that are below the page fold.
|
||||
options:
|
||||
values:
|
||||
- lazy
|
||||
- eager
|
||||
group: partial
|
||||
thumbnail:
|
||||
type: path
|
||||
optional: true
|
||||
comment: >-
|
||||
Thumbnail image url, displayed on top or the left of the card.
|
||||
ratio:
|
||||
type: select
|
||||
optional: true
|
||||
parent: cascade
|
||||
comment: >-
|
||||
Ratio of the thumbnail image, defaults to `16x9` (stacked orientation)
|
||||
or `1x1` (horizontal orientation).
|
||||
options:
|
||||
values:
|
||||
- 1x1
|
||||
- 3x2
|
||||
- 4x3
|
||||
- 16x9
|
||||
- 21x9
|
||||
group: partial
|
||||
alt:
|
||||
type: string
|
||||
optional: true
|
||||
release: v0.19.0
|
||||
comment: >-
|
||||
Alternate text for the thumbnail, uses `title` by default.
|
||||
icon:
|
||||
type: string
|
||||
optional: true
|
||||
comment: >-
|
||||
Font Awesome icon, displayed on top or the left of the card.
|
||||
align:
|
||||
type: select
|
||||
parent: cascade
|
||||
optional: true
|
||||
default: start
|
||||
release: v0.23.0-alpha2
|
||||
comment: Icon alignment.
|
||||
options:
|
||||
values:
|
||||
- start
|
||||
- end
|
||||
- center
|
||||
style:
|
||||
type: string
|
||||
parent: cascade
|
||||
optional: true
|
||||
release: v0.23.0-alpha2
|
||||
comment: Icon style.
|
||||
orientation:
|
||||
type: select
|
||||
optional: true
|
||||
default: stacked
|
||||
parent: cascade
|
||||
comment: Placement of the thumbnail or icon.
|
||||
options:
|
||||
values:
|
||||
- stacked
|
||||
- horizontal
|
||||
- horizontal-sm
|
||||
- none
|
||||
subtle:
|
||||
type: bool
|
||||
parent: cascade
|
||||
optional: true
|
||||
release: v0.23.0-alpha2
|
||||
comment: Apply subtle background colors.
|
||||
body:
|
||||
optional: true
|
||||
comment: >-
|
||||
Description of the card.
|
||||
group: shortcode
|
59
data/structures/carousel-item.yml
Normal file
59
data/structures/carousel-item.yml
Normal file
@@ -0,0 +1,59 @@
|
||||
comment: Renders a carousel item with a responsive image.
|
||||
arguments:
|
||||
page:
|
||||
type:
|
||||
- '*hugolib.pageState'
|
||||
- '*hugolib.pageForShortcode'
|
||||
optional: false
|
||||
comment: Context of the current page.
|
||||
group: partial
|
||||
src:
|
||||
type: string
|
||||
optional: false
|
||||
comment: Path or url of the image, e.g. `img/example.jpg`.
|
||||
ratio:
|
||||
type: string
|
||||
optional: true
|
||||
comment: >-
|
||||
Ratio of the image. If set, the image is resized and cropped to match the
|
||||
ratio. Else the original aspect ratio of the image is kept.
|
||||
options:
|
||||
values:
|
||||
- 1x1
|
||||
- 3x2
|
||||
- 4x3
|
||||
- 16x9
|
||||
- 21x9
|
||||
group: partial
|
||||
portrait:
|
||||
type: bool
|
||||
optional: true
|
||||
default: false
|
||||
comment: >-
|
||||
Flag to adjust the ratio from landscape to portrait. The image itself
|
||||
is not rotated, only the crop area is adjusted. Not applicable to vector
|
||||
graphics.
|
||||
group: partial
|
||||
loading:
|
||||
type: select
|
||||
default: eager
|
||||
optional: true
|
||||
comment: >-
|
||||
Loading behavior of the image. The loading of lazily loaded images is
|
||||
deferred until the image is within scrolling range of the viewport. This
|
||||
should reduce the initial loading time of the website. It is recommended
|
||||
to lazily load only those images that are below the pagefold.
|
||||
options:
|
||||
values:
|
||||
- eager
|
||||
- lazy
|
||||
caption:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Carousel slide caption.
|
||||
active:
|
||||
type: bool
|
||||
optional: true
|
||||
comment: >-
|
||||
Sets the current carousel item as active (only one item at a time). By
|
||||
default, the first slide is made active.
|
39
data/structures/carousel.yml
Normal file
39
data/structures/carousel.yml
Normal file
@@ -0,0 +1,39 @@
|
||||
comment: >-
|
||||
Displays a carousel of several responsive images (see the image shortcode for
|
||||
more details). Add inner `img` elements to define individual image slides.
|
||||
arguments:
|
||||
id:
|
||||
type: string
|
||||
optional: true
|
||||
comment: >-
|
||||
ID of the carousel, defaults to `carousel-n` with a sequential number `n`.
|
||||
ratio:
|
||||
type: select
|
||||
optional: true
|
||||
comment: >-
|
||||
Ratio of the images. If set, the images are resized and cropped to match the
|
||||
ratio. Else the original aspect ratio of the image is kept.
|
||||
options:
|
||||
values:
|
||||
- 1x1
|
||||
- 3x2
|
||||
- 4x3
|
||||
- 16x9
|
||||
- 21x9
|
||||
portrait:
|
||||
type: bool
|
||||
optional: true
|
||||
default: false
|
||||
comment: >-
|
||||
Flag to adjust the ratio from landscape to portrait. The images themselves
|
||||
are not rotated, only the crop area is adjusted. Not applicable to vector
|
||||
graphics.
|
||||
release: v0.18.3
|
||||
class:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Class attribute of the carousel element, e.g. `w-75`.
|
||||
body:
|
||||
type: string
|
||||
optional: false
|
||||
comment: Inner `img` elements that define the individual image slides.
|
15
data/structures/collapse.yml
Normal file
15
data/structures/collapse.yml
Normal file
@@ -0,0 +1,15 @@
|
||||
comment: Defines a hidden panel that can be reveiled by a trigger.
|
||||
arguments:
|
||||
id:
|
||||
type: string
|
||||
optional: false
|
||||
comment: >-
|
||||
ID of the collapse element, e.g. `collapse-1`.
|
||||
class:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Class attribute of the inner panel element, e.g. `p-3`.
|
||||
body:
|
||||
type: string
|
||||
optional: false
|
||||
comment: Inner <img> elements that define the individual image slides.
|
40
data/structures/command.yml
Normal file
40
data/structures/command.yml
Normal file
@@ -0,0 +1,40 @@
|
||||
comment: >-
|
||||
Generates terminal output for either `bash`, `powershell`, or `sql` shell
|
||||
languages.
|
||||
arguments:
|
||||
user:
|
||||
type: string
|
||||
optional: true
|
||||
comment: User to add to the prompt, e.g. `user`.
|
||||
host:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Host to add to the prompt, e.g. `localhost`.
|
||||
prompt:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Prompt override, e.g. `PS C:\Users\User>`.
|
||||
shell:
|
||||
type: select
|
||||
optional: true
|
||||
default: bash
|
||||
comment: Type of shell.
|
||||
options:
|
||||
values:
|
||||
- bash
|
||||
- powershell
|
||||
- sql
|
||||
class:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Class attribute of the command element.
|
||||
body:
|
||||
type: string
|
||||
optional: false
|
||||
comment: >-
|
||||
The shell commands and their output. Start a line with `(out)` to specify
|
||||
an output line. Use the following line continuation characters for each
|
||||
supported language:
|
||||
- bash: backslash symbol
|
||||
- PowerShell: backtick symbol
|
||||
- sql: `(con)` line suffix
|
44
data/structures/docs.yml
Normal file
44
data/structures/docs.yml
Normal file
@@ -0,0 +1,44 @@
|
||||
comment: >-
|
||||
Capture a code snippet from a `toml` or `scss` input file. The shortcode scans for named markers in a local file:
|
||||
- For `.toml` files, use `# toml-docs-start` and `# toml-docs-end` followed by the snippet name
|
||||
- For `.scss` files, use `// scss-docs-start` and `// scss-docs-end` followed by the snippet name
|
||||
|
||||
The snippet between the two markers is then rendered using syntax highlighting.
|
||||
arguments:
|
||||
name:
|
||||
type: string
|
||||
optional: false
|
||||
comment: >-
|
||||
Name of the code snippet, used to identify the relevant section of the
|
||||
input file.
|
||||
file:
|
||||
type: string
|
||||
optional: false
|
||||
comment: >-
|
||||
Path of the input file. The path is relative to the `basePath` defined in
|
||||
the `docs` section of the site's parameters. If the file starts with `./`,
|
||||
the path of the repository is used as base path instead.
|
||||
show:
|
||||
type: bool
|
||||
optional: true
|
||||
default: true
|
||||
comment: >-
|
||||
If unset, shows the panel with the code snippet in collapsed state. By
|
||||
default, the panel is expanded.
|
||||
full:
|
||||
type: bool
|
||||
optional: true
|
||||
default: true
|
||||
comment: >-
|
||||
If unset, shows the filename only. By default, the entire path (relative
|
||||
to the base path) is shown.
|
||||
id:
|
||||
type: string
|
||||
optional: true
|
||||
comment: >-
|
||||
ID of the collapse panel holding the code snippet, defaults to
|
||||
`docs-collapse-n` with a sequential number `n` starting at `1`.
|
||||
class:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Class attribute of the tab control that wraps the docs element.
|
33
data/structures/example.yml
Normal file
33
data/structures/example.yml
Normal file
@@ -0,0 +1,33 @@
|
||||
comment: >-
|
||||
Display a code example and render a preview of the same input. The shortcode
|
||||
accepts the languages supported by Hugo's highlight function.
|
||||
arguments:
|
||||
id:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Identifier of the element’s container.
|
||||
lang:
|
||||
type: string
|
||||
optional: true
|
||||
default: markdown
|
||||
comment: >-
|
||||
Language used to display the code. Use `hugo` to process Hugo (escaped)
|
||||
shortcodes.
|
||||
show_markup:
|
||||
type: bool
|
||||
optional: true
|
||||
default: true
|
||||
comment: Indicates if the markup should be output in the HTML.
|
||||
show_preview:
|
||||
type: bool
|
||||
optional: true
|
||||
default: true
|
||||
comment: Indicates if the preview should be output in the HTML.
|
||||
class:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Class attributes of the element's container.
|
||||
body:
|
||||
type: string
|
||||
optional: false
|
||||
comment: The example input.
|
40
data/structures/file.yml
Normal file
40
data/structures/file.yml
Normal file
@@ -0,0 +1,40 @@
|
||||
comment: >-
|
||||
Print the full content of any given file supported by the Chroma syntax
|
||||
highlighter.
|
||||
arguments:
|
||||
path:
|
||||
type: string
|
||||
optional: false
|
||||
comment: >-
|
||||
Path of the input file. The path is relative to the `basePath` defined in
|
||||
the `docs` section of the site's parameters. If the file starts with `./`,
|
||||
the path of the repository is used as base path instead.
|
||||
lang:
|
||||
type: string
|
||||
optional: true
|
||||
comment: >-
|
||||
Language to be used by the syntax highlighter. If not set, the
|
||||
language is derived from the file extension.
|
||||
show:
|
||||
type: bool
|
||||
optional: true
|
||||
comment: >-
|
||||
If unset, shows the panel with the code in collapsed state. By default,
|
||||
the panel is expanded.
|
||||
full:
|
||||
type: bool
|
||||
optional: true
|
||||
default: true
|
||||
comment: >-
|
||||
If unset, shows the filename only. By default, the entire path (relative
|
||||
to the base path) is shown.
|
||||
id:
|
||||
type: string
|
||||
optional: true
|
||||
comment: >-
|
||||
Identifier of the collapse panel, defaults to `file-collapse-n` with a
|
||||
sequential number `n` starting at 1.
|
||||
class:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Class attribute of the tab control that wraps the file element.
|
117
data/structures/image.yml
Normal file
117
data/structures/image.yml
Normal file
@@ -0,0 +1,117 @@
|
||||
comment: >-
|
||||
Render a local or remote image with responsive image sizing. Images are
|
||||
resized using default media breakpoints and are converted to webp format. The
|
||||
image is processed using the quality setting specified in the [imaging]
|
||||
section of the main config file (defaults to 75). A fallback image is provided
|
||||
for older browsers. The image is wrapped in a figure if a caption is provided,
|
||||
else the image is wrapped in a div with a ratio constraint.
|
||||
|
||||
If the url starts with `http`, the image is retrieved from an external
|
||||
location. Else, the url is matched with a page resource and site asset (in
|
||||
that order). The path of a remote image is rewritten to ensure processed files
|
||||
are stored in the final '/img' folder.
|
||||
|
||||
The partial supports the following bitmap image formats: `png`, `jpeg`, `gif`,
|
||||
`tiff`, `bmp`, and `webp`. Vector graphics of type `svg` are supported too,
|
||||
although these images do no support additional processing. This means the
|
||||
arguments `ratio` and `portrait` have no effect for vector images. Vector
|
||||
graphics support an optional anchor `#` in their url to denote a symbol
|
||||
reference.
|
||||
arguments:
|
||||
url:
|
||||
type: string
|
||||
optional: true
|
||||
comment: >-
|
||||
Path or url of the image, e.g. `img/example.jpg`. Images with multiple
|
||||
color modes are expected to have a basename that ends with either `-dark`
|
||||
or `-light`.
|
||||
src:
|
||||
type: string
|
||||
optional: true
|
||||
position: 0
|
||||
comment: Alias for url.
|
||||
group: shortcode
|
||||
page:
|
||||
type:
|
||||
- '*hugolib.pageState'
|
||||
- '*hugolib.pageForShortcode'
|
||||
optional: true
|
||||
comment: Page context, used to match page resources.
|
||||
group: partial
|
||||
mode:
|
||||
type: bool
|
||||
default: false
|
||||
optional: true
|
||||
comment: >-
|
||||
Flag indicating if the image should support color modes. If set, the
|
||||
shortcode searches for images that having a matching color-mode suffix
|
||||
such as `-light` or `-dark`.
|
||||
ratio:
|
||||
type: select
|
||||
optional: true
|
||||
comment: >-
|
||||
Ratio of the image. If set, the image is resized and cropped to match the
|
||||
ratio. Else the original aspect ratio of the image is kept. Not applicable
|
||||
to vector graphics.
|
||||
options:
|
||||
values:
|
||||
- 1x1
|
||||
- 3x2
|
||||
- 4x3
|
||||
- 16x9
|
||||
- 21x9
|
||||
portrait:
|
||||
type: bool
|
||||
optional: true
|
||||
default: false
|
||||
comment: >-
|
||||
Flag to adjust the ratio from landscape to portrait. The image itself is
|
||||
not rotated, only the crop area is adjusted. Not applicable to vector
|
||||
graphics.
|
||||
release: v0.18.3
|
||||
loading:
|
||||
type: select
|
||||
default: eager
|
||||
optional: true
|
||||
comment: >-
|
||||
Loading behavior of the image. The loading of lazily loaded images is
|
||||
deferred until the image is within scrolling range of the viewport. This
|
||||
should reduce the initial loading time of the website. It is recommended
|
||||
to lazily load only those images that are below the pagefold.
|
||||
options:
|
||||
values:
|
||||
- eager
|
||||
- lazy
|
||||
release: v0.21.0
|
||||
priority:
|
||||
type: select
|
||||
default: auto
|
||||
optional: true
|
||||
comment: >-
|
||||
Fetch priority of the image. The priority provides a hint to the browser
|
||||
on how it should prioritize the fetching of the image relative to other
|
||||
images. The implementation is experimental and currently only supported by
|
||||
Chrome, Edge, and Opera.
|
||||
options:
|
||||
values:
|
||||
- high
|
||||
- low
|
||||
- auto
|
||||
group: partial
|
||||
title:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Alternate text of the image.
|
||||
caption:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Figure caption.
|
||||
wrapper:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Class attributes of the wrapper element, e.g. `mx-auto`.
|
||||
release: v0.18.3
|
||||
class:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Class attribute of the inner img element, e.g. `rounded`.
|
30
data/structures/kbd.yml
Normal file
30
data/structures/kbd.yml
Normal file
@@ -0,0 +1,30 @@
|
||||
comment: Adds a keyboard input element.
|
||||
arguments:
|
||||
title:
|
||||
type: string
|
||||
optional: false
|
||||
position: 0
|
||||
comment: >-
|
||||
Title of the keyboard input. In shorthand notation, this is the first (and
|
||||
only) matched argument.
|
||||
class:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Class attribute of the keyboard input element.
|
||||
color:
|
||||
type: select
|
||||
default: secondary
|
||||
optional: true
|
||||
comment: Theme color of the element.
|
||||
options:
|
||||
values:
|
||||
- primary
|
||||
- secondary
|
||||
- success
|
||||
- danger
|
||||
- warning
|
||||
- info
|
||||
- light
|
||||
- dark
|
||||
- white
|
||||
- black
|
74
data/structures/link.yml
Normal file
74
data/structures/link.yml
Normal file
@@ -0,0 +1,74 @@
|
||||
comment: >-
|
||||
Generates a link for a given named link or url. The shortcode supports a
|
||||
single unnamed parameter, or various named parameters. The unnamed parameter
|
||||
is recognized as a url if it starts with `http`, else it is treated as either
|
||||
a named link or internal reference (in that order). Any inner text is rendered
|
||||
as the link title, otherwise it uses the host name (for external links), link
|
||||
title (for internal links), or anchor name (for any local references
|
||||
containing a `#`).
|
||||
arguments:
|
||||
page:
|
||||
type:
|
||||
- '*hugolib.pageState'
|
||||
- '*hugolib.pageForShortcode'
|
||||
optional: false
|
||||
group: partial
|
||||
comment: Context of the current page.
|
||||
destination:
|
||||
type: string
|
||||
optional: false
|
||||
group: partial
|
||||
comment: >-
|
||||
Target destination.
|
||||
href:
|
||||
type: string
|
||||
position: 0
|
||||
optional: true
|
||||
comment: >-
|
||||
Reference to either an external link (if it starts with `http`), a named
|
||||
link (if it can be found in `params.links`), or internal reference.
|
||||
Both external and internal references may include an anchor `#`.
|
||||
name:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Alias of href.
|
||||
url:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Alias of href.
|
||||
cue:
|
||||
type: bool
|
||||
optional: true
|
||||
comment: >-
|
||||
Flag to indicate if an external link should show a visual cue, defaults to
|
||||
setting `main.externalLinks.cue` in the site's parameters.
|
||||
tab:
|
||||
type: bool
|
||||
optional: true
|
||||
comment: >-
|
||||
Flag to indicate if an external link should open in a new tab, defaults to
|
||||
setting `main.externalLinks.tab` in the site's parameters.
|
||||
case:
|
||||
type: bool
|
||||
optional: true
|
||||
default: true
|
||||
comment: >-
|
||||
Flag to indicate if the retrieved title (e.g. no inner text is provided)
|
||||
of an internal link should use its original case. If false, the title is
|
||||
set to lower case.
|
||||
class:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Class attribute of the anchor element.
|
||||
text:
|
||||
type:
|
||||
- string
|
||||
- template.HTML
|
||||
optional: true
|
||||
group: partial
|
||||
comment: Link title.
|
||||
body:
|
||||
type: string
|
||||
optional: true
|
||||
group: shortcode
|
||||
comment: Link title.
|
55
data/structures/list.yml
Normal file
55
data/structures/list.yml
Normal file
@@ -0,0 +1,55 @@
|
||||
comment: >-
|
||||
Displays a list of items with a thumbnail alternating between left and right
|
||||
alignment.
|
||||
arguments:
|
||||
page:
|
||||
type:
|
||||
- '*hugolib.pageState'
|
||||
- '*hugolib.pageForShortcode'
|
||||
optional: false
|
||||
comment: Required context of the current page.
|
||||
group: partial
|
||||
list:
|
||||
type:
|
||||
- 'page.Pages'
|
||||
- 'resource.Resources'
|
||||
optional: false
|
||||
comment: Required array of pages.
|
||||
group: partial
|
||||
title:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Optional title of the card group.
|
||||
loading:
|
||||
type: select
|
||||
default: eager
|
||||
optional: true
|
||||
comment: >-
|
||||
Loading behavior of the image. The loading of lazily loaded images is
|
||||
deferred until the image is within scrolling range of the viewport. This
|
||||
should reduce the initial loading time of the website. It is recommended
|
||||
to lazily load only those images that are below the pagefold.
|
||||
options:
|
||||
values:
|
||||
- eager
|
||||
- lazy
|
||||
class:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Class attribute of the tab element, e.g. “w-50”.
|
||||
color:
|
||||
type: select
|
||||
optional: true
|
||||
comment: >-
|
||||
Theme color of the element.
|
||||
options:
|
||||
values:
|
||||
- primary
|
||||
- secondary
|
||||
- success
|
||||
- danger
|
||||
- warning
|
||||
- info
|
||||
- light
|
||||
- dark
|
||||
- body
|
27
data/structures/mark.yml
Normal file
27
data/structures/mark.yml
Normal file
@@ -0,0 +1,27 @@
|
||||
comment: Highlights text by applying a background color.
|
||||
arguments:
|
||||
class:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Class attribute of the highlight element.
|
||||
color:
|
||||
type: select
|
||||
optional: true
|
||||
comment: >-
|
||||
Theme color of the highlight. By default, the highlight uses the color of
|
||||
the HTML mark function (usually yellow).
|
||||
options:
|
||||
values:
|
||||
- primary
|
||||
- secondary
|
||||
- success
|
||||
- danger
|
||||
- warning
|
||||
- info
|
||||
- light
|
||||
- dark
|
||||
- white
|
||||
- black
|
||||
body:
|
||||
optional: false
|
||||
comment: Text to be marked.
|
62
data/structures/nav-item.yml
Normal file
62
data/structures/nav-item.yml
Normal file
@@ -0,0 +1,62 @@
|
||||
comment: >-
|
||||
Defines an individual item.
|
||||
arguments:
|
||||
id:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Identification of the item.
|
||||
group: partial
|
||||
parentID:
|
||||
type: string
|
||||
optional: false
|
||||
comment: Identification of the parent (e.g. nav control).
|
||||
group: partial
|
||||
header:
|
||||
type: string
|
||||
optional: false
|
||||
comment: Header of the item.
|
||||
show:
|
||||
type: bool
|
||||
optional: true
|
||||
comment: >-
|
||||
Flag to indicate if the item should be shown. Only one can be shown at a
|
||||
time.
|
||||
disabled:
|
||||
type: bool
|
||||
optional: true
|
||||
comment: Flag to indicate the item should be in a disabled state.
|
||||
fade:
|
||||
type: bool
|
||||
optional: true
|
||||
comment: Flag to make the tab pane fade in.
|
||||
parent: cascade
|
||||
class:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Class attribute of the item.
|
||||
body:
|
||||
type:
|
||||
- string
|
||||
- template.HTML
|
||||
optional: true
|
||||
comment: The body content of the item, supports Markdown and HTML (if enabled).
|
||||
group: partial
|
||||
item_type:
|
||||
type: select
|
||||
optional: true
|
||||
comment: Type of the item to render.
|
||||
options:
|
||||
values:
|
||||
- accordion
|
||||
- tab-pane
|
||||
group: partial
|
||||
illustration:
|
||||
type:
|
||||
- string
|
||||
- template.HTML
|
||||
optional: true
|
||||
group: partial
|
||||
body:
|
||||
optional: false
|
||||
comment: Content of the item.
|
||||
group: shortcode
|
82
data/structures/nav.yml
Normal file
82
data/structures/nav.yml
Normal file
@@ -0,0 +1,82 @@
|
||||
comment: >-
|
||||
Displays a tab group of multiple items. Add nav-item inner elements for each
|
||||
tab pane.
|
||||
arguments:
|
||||
id:
|
||||
type: string
|
||||
optional: true
|
||||
comment: >-
|
||||
Identifier of the tab group, uses a generated sequence if not specified.
|
||||
page:
|
||||
type:
|
||||
- '*hugolib.pageState'
|
||||
- '*hugolib.pageForShortcode'
|
||||
optional: false
|
||||
comment: Context of the current page.
|
||||
group: partial
|
||||
list:
|
||||
type:
|
||||
- page.Pages
|
||||
- resource.Resources
|
||||
optional: true
|
||||
comment: Array of pages to be rendered as nav items.
|
||||
group: partial
|
||||
type:
|
||||
type: select
|
||||
optional: true
|
||||
comment: Type of the tab group.
|
||||
options:
|
||||
values:
|
||||
- tabs
|
||||
- pills
|
||||
- underline
|
||||
- callout
|
||||
vertical:
|
||||
type: bool
|
||||
default: false
|
||||
optional: true
|
||||
comment: Flag to show vertical tabs instead of horizontal tabs.
|
||||
wrap:
|
||||
type: bool
|
||||
default: false
|
||||
optional: true
|
||||
comment: Flag to enable word wrapping of tab titles.
|
||||
class:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Class attribute of the tab group, e.g. `nav-fill`.
|
||||
pane:
|
||||
type: select
|
||||
optional: true
|
||||
default: none
|
||||
comment: Style of the panes.
|
||||
options:
|
||||
values:
|
||||
- none
|
||||
- persona
|
||||
group: partial
|
||||
width:
|
||||
type: select
|
||||
optional: true
|
||||
default: "100"
|
||||
comment: Responsive width of the tab group.
|
||||
options:
|
||||
values:
|
||||
- "50"
|
||||
- "100"
|
||||
group: partial
|
||||
loading:
|
||||
type: select
|
||||
optional: true
|
||||
default: eager
|
||||
parent: cascade
|
||||
comment: >-
|
||||
Loading behavior of the image. The loading of lazily loaded images is
|
||||
deferred until the image is within scrolling range of the viewport. This
|
||||
should reduce the initial loading time of the website. It is recommended
|
||||
to lazily load only those images that are below the page fold.
|
||||
options:
|
||||
values:
|
||||
- lazy
|
||||
- eager
|
||||
group: partial
|
34
data/structures/navbar-item.yml
Normal file
34
data/structures/navbar-item.yml
Normal file
@@ -0,0 +1,34 @@
|
||||
comment: >-
|
||||
Defines an individual item of the navigation bar.
|
||||
arguments:
|
||||
page:
|
||||
type:
|
||||
- '*hugolib.pageState'
|
||||
- '*hugolib.pageForShortcode'
|
||||
optional: false
|
||||
comment: Context of the current page.
|
||||
group: partial
|
||||
menu:
|
||||
type: '*navigation.MenuEntry'
|
||||
optional: false
|
||||
comment: Menu data to use for the navbar item.
|
||||
parent:
|
||||
type: '*navigation.MenuEntry'
|
||||
optional: true
|
||||
comment: Parent of the current navbar item.
|
||||
class:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Class attribute of the item.
|
||||
cue:
|
||||
type: bool
|
||||
optional: true
|
||||
comment: >-
|
||||
Flag to indicate if an external link should show a visual cue, defaults
|
||||
to the setting `main.externalLinks.cue` in the site's parameters.
|
||||
tab:
|
||||
type: bool
|
||||
optional: true
|
||||
comment: >-
|
||||
Flag to indicate if an external link should open in a new tab, defaults
|
||||
to setting `main.externalLinks.tab` in the site's parameters.
|
128
data/structures/navbar.yml
Normal file
128
data/structures/navbar.yml
Normal file
@@ -0,0 +1,128 @@
|
||||
comment: >-
|
||||
Displays a navigation header with a toggler. The menu items are derived from
|
||||
the site's configuration. Nested items are supported at one-level depth. The
|
||||
navigation bar includes a search area and a language switcher if applicable.
|
||||
arguments:
|
||||
page:
|
||||
type:
|
||||
- '*hugolib.pageState'
|
||||
- '*hugolib.pageForShortcode'
|
||||
optional: false
|
||||
comment: Context of the current page.
|
||||
group: partial
|
||||
path:
|
||||
type: path
|
||||
optional: false
|
||||
comment: Path of the active page.
|
||||
group: shortcode
|
||||
title:
|
||||
type: string
|
||||
optional: true
|
||||
comment: >-
|
||||
Brand title, displayed when the logo is not set. Defaults to the site's
|
||||
title.
|
||||
class:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Class attribute of the navbar container.
|
||||
color:
|
||||
type: select
|
||||
optional: true
|
||||
comment: >-
|
||||
Background theme color of the navbar. Set the color to `body` or
|
||||
`body-tertiary` for the navbar to respond to color mode changes (e.g.
|
||||
switching between dark and light). The navigation bar is transparent when
|
||||
no color is set, but is set to the body color when scrolling to enhance
|
||||
the contrast.
|
||||
options:
|
||||
values:
|
||||
- primary
|
||||
- secondary
|
||||
- success
|
||||
- danger
|
||||
- warning
|
||||
- info
|
||||
- light
|
||||
- dark
|
||||
- white
|
||||
- black
|
||||
- body
|
||||
- body-tertiary
|
||||
id:
|
||||
type: string
|
||||
optional: true
|
||||
comment: >-
|
||||
Identification of the navbar, defaults to `navbar-0`. The id is used by
|
||||
several child elements, including a color mode switcher, version switcher,
|
||||
and collapse panel.
|
||||
menus:
|
||||
type: string
|
||||
optional: true
|
||||
default: main
|
||||
comment: Name of the menu configuration.
|
||||
size:
|
||||
type: select
|
||||
optional: true
|
||||
comment: Breakpoint of the navbar toggler.
|
||||
default: md
|
||||
options:
|
||||
values:
|
||||
- xs
|
||||
- sm
|
||||
- md
|
||||
- lg
|
||||
- xl
|
||||
style:
|
||||
type: select
|
||||
optional: true
|
||||
default: light
|
||||
comment: Style of the navbar.
|
||||
options:
|
||||
values:
|
||||
- light
|
||||
- dark
|
||||
group: partial
|
||||
mode:
|
||||
type: bool
|
||||
optional: true
|
||||
default: true
|
||||
comment: >-
|
||||
Flag to include a color mode switcher, defaults to `true` when dark mode
|
||||
is enabled.
|
||||
search:
|
||||
type: bool
|
||||
optional: true
|
||||
default: true
|
||||
comment: Flag to include a search input.
|
||||
fixed:
|
||||
type: bool
|
||||
optional: true
|
||||
default: false
|
||||
comment: Flag to indicate the navbar should stick to the top.
|
||||
group: partial
|
||||
overlay:
|
||||
type: bool
|
||||
optional: true
|
||||
default: false
|
||||
comment: >-
|
||||
Flag to indicate if the navbar should render as an overlay on the current
|
||||
page.
|
||||
group: partial
|
||||
release: v0.22.6
|
||||
overlayMode:
|
||||
type: select
|
||||
optional: true
|
||||
default: dark
|
||||
comment: Color mode of the overlay.
|
||||
options:
|
||||
values:
|
||||
- light
|
||||
- dark
|
||||
group: partial
|
||||
release: v0.23.0
|
||||
logo:
|
||||
type: path
|
||||
optional: true
|
||||
comment: >-
|
||||
Address of the logo image, defaults to the parameter `logo` set in the
|
||||
`main` section of the site's parameter configuration.
|
14
data/structures/page-alert.yml
Normal file
14
data/structures/page-alert.yml
Normal file
@@ -0,0 +1,14 @@
|
||||
comment: >-
|
||||
Adds a dismissible alert message to the top of the page, above the main menu.
|
||||
The alert uses the following scratch variables:
|
||||
- pageAlertMsg
|
||||
- pageAlertURL
|
||||
- version
|
||||
arguments:
|
||||
page:
|
||||
type:
|
||||
- '*hugolib.pageState'
|
||||
- '*hugolib.pageForShortcode'
|
||||
optional: false
|
||||
comment: Context of the current page.
|
||||
group: partial
|
21
data/structures/pagination.yml
Normal file
21
data/structures/pagination.yml
Normal file
@@ -0,0 +1,21 @@
|
||||
comment: >-
|
||||
Adds a pagination element to a page. This allows to split long lists across
|
||||
multiple pages to ease navigation. Set 'paginate' in the site configuration to
|
||||
define the maximum amount of items to display on a list page.
|
||||
arguments:
|
||||
page:
|
||||
type:
|
||||
- '*hugolib.pageState'
|
||||
- '*hugolib.pageForShortcode'
|
||||
optional: false
|
||||
comment: Context of the current page.
|
||||
group: partial
|
||||
format:
|
||||
type: select
|
||||
optional: true
|
||||
default: default
|
||||
comment:
|
||||
options:
|
||||
values:
|
||||
- default
|
||||
- terse
|
60
data/structures/persona.yml
Normal file
60
data/structures/persona.yml
Normal file
@@ -0,0 +1,60 @@
|
||||
comment: >-
|
||||
Display a custom persona card.
|
||||
arguments:
|
||||
path:
|
||||
type: path
|
||||
optional: true
|
||||
comment: >-
|
||||
Path of the page that defines the card content. You can set `title`,
|
||||
`href`, `thumbnail` and the inner content individually too.
|
||||
title:
|
||||
type:
|
||||
- string
|
||||
- template.HTML
|
||||
optional: true
|
||||
comment: Title of the card.
|
||||
class:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Class attribute of the card element, e.g. `w-50`.
|
||||
color:
|
||||
type: select
|
||||
optional: true
|
||||
default: primary
|
||||
comment: Theme color of the element.
|
||||
options:
|
||||
values:
|
||||
- primary
|
||||
- secondary
|
||||
- success
|
||||
- danger
|
||||
- warning
|
||||
- info
|
||||
- light
|
||||
- dark
|
||||
- white
|
||||
- black
|
||||
- body
|
||||
- body-tertiary
|
||||
href:
|
||||
type:
|
||||
- string
|
||||
- template.URL
|
||||
optional: true
|
||||
comment: Address for the button or hyperlink.
|
||||
content:
|
||||
type:
|
||||
- string
|
||||
- template.HTML
|
||||
optional: true
|
||||
comment: Content of the card.
|
||||
group: partial
|
||||
thumbnail:
|
||||
type: url
|
||||
optional: true
|
||||
comment: Thumbnail image url, displayed on top or the left of the card.
|
||||
body:
|
||||
optional: true
|
||||
comment: >-
|
||||
Description of the card.
|
||||
group: shortcode
|
40
data/structures/release.yml
Normal file
40
data/structures/release.yml
Normal file
@@ -0,0 +1,40 @@
|
||||
comment: >-
|
||||
Displays a release button that links to a specific release. Use the state to
|
||||
indicate if it is a new or deprecated feature.
|
||||
arguments:
|
||||
version:
|
||||
type: string
|
||||
optional: false
|
||||
comment: Version string, expects semver notation with a `v` prefix.
|
||||
state:
|
||||
type: select
|
||||
optional: true
|
||||
default: new
|
||||
comment: State of the feature.
|
||||
options:
|
||||
values:
|
||||
- new
|
||||
- deprecated
|
||||
short:
|
||||
type: bool
|
||||
optional: true
|
||||
comment: Flag to indicate the release button should use short notation.
|
||||
size:
|
||||
type: select
|
||||
optional: true
|
||||
default: md
|
||||
comment: Size of the button.
|
||||
options:
|
||||
values:
|
||||
- sm
|
||||
- md
|
||||
- lg
|
||||
class:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Class attribute of the button element.
|
||||
inline:
|
||||
type: bool
|
||||
optional: true
|
||||
default: false
|
||||
comment: Flag to render the release button inline.
|
16
data/structures/section-header.yml
Normal file
16
data/structures/section-header.yml
Normal file
@@ -0,0 +1,16 @@
|
||||
comment: Renders the header of a page section.
|
||||
arguments:
|
||||
title:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Title of the section.
|
||||
description:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Section description.
|
||||
content:
|
||||
type:
|
||||
- string
|
||||
- template.HTML
|
||||
optional: true
|
||||
comment: Section content.
|
9
data/structures/section-menu.yml
Normal file
9
data/structures/section-menu.yml
Normal file
@@ -0,0 +1,9 @@
|
||||
comment: Renders the section menu of a single page.
|
||||
arguments:
|
||||
page:
|
||||
type:
|
||||
- '*hugolib.pageState'
|
||||
- '*hugolib.pageForShortcode'
|
||||
optional: false
|
||||
comment: Context of the current page.
|
||||
group: partial
|
9
data/structures/sharing.yml
Normal file
9
data/structures/sharing.yml
Normal file
@@ -0,0 +1,9 @@
|
||||
comment: Renders the social sharing buttons for a single page.
|
||||
arguments:
|
||||
page:
|
||||
type:
|
||||
- '*hugolib.pageState'
|
||||
- '*hugolib.pageForShortcode'
|
||||
optional: false
|
||||
comment: Context of the current page.
|
||||
group: partial
|
24
data/structures/sidebar.yml
Normal file
24
data/structures/sidebar.yml
Normal file
@@ -0,0 +1,24 @@
|
||||
comment: >-
|
||||
Renders the sidebar navigation of a single page. It is intended to be used as
|
||||
companion to the main navigation and is typically used in content-heavy
|
||||
sections, such as documentation pages. On smaller screens, the sidebar is
|
||||
replaced with an offcanvas element. In this case, the main navigation receives
|
||||
an additional toggler on the left of the screen.
|
||||
arguments:
|
||||
page:
|
||||
type:
|
||||
- '*hugolib.pageState'
|
||||
- '*hugolib.pageForShortcode'
|
||||
optional: false
|
||||
comment: Context of the current page.
|
||||
group: partial
|
||||
menu:
|
||||
type: '[]interface {}'
|
||||
optional: true
|
||||
comment: Path of the sidebar navigation menu.
|
||||
version:
|
||||
type: string
|
||||
optional: true
|
||||
comment: >-
|
||||
Version of the sidebar navigation, used to define the base URL of
|
||||
generated links, together with the page's section.
|
36
data/structures/spinner.yml
Normal file
36
data/structures/spinner.yml
Normal file
@@ -0,0 +1,36 @@
|
||||
comment: >-
|
||||
Use the spinner shortcode to indicate the loading state of a component or
|
||||
page. The inner content is used as alternative description.
|
||||
arguments:
|
||||
class:
|
||||
type: string
|
||||
optional: true
|
||||
comment: >-
|
||||
Class attribute of the wrapping element, e.g. `text-center`.
|
||||
color:
|
||||
type: select
|
||||
optional: true
|
||||
default: primary
|
||||
comment: >-
|
||||
Theme color of the element.
|
||||
options:
|
||||
values:
|
||||
- primary
|
||||
- secondary
|
||||
- success
|
||||
- danger
|
||||
- warning
|
||||
- info
|
||||
- light
|
||||
- dark
|
||||
- white
|
||||
- black
|
||||
grow:
|
||||
type: bool
|
||||
optional: true
|
||||
default: false
|
||||
comment: Flag to indicate the spinner is growing instead of rotating.
|
||||
body:
|
||||
optional: false
|
||||
comment: >-
|
||||
Alternative description.
|
8
data/structures/sub.yml
Normal file
8
data/structures/sub.yml
Normal file
@@ -0,0 +1,8 @@
|
||||
comment: >-
|
||||
Displays text in subscript.
|
||||
arguments:
|
||||
text:
|
||||
type: string
|
||||
optional: false
|
||||
position: 0
|
||||
comment: Text to display in subscript. You can omit the argument name.
|
8
data/structures/sup.yml
Normal file
8
data/structures/sup.yml
Normal file
@@ -0,0 +1,8 @@
|
||||
comment: >-
|
||||
Displays text in superscript.
|
||||
arguments:
|
||||
text:
|
||||
type: string
|
||||
optional: false
|
||||
position: 0
|
||||
comment: Text to display in superscript. You can omit the argument name.
|
30
data/structures/table.yml
Normal file
30
data/structures/table.yml
Normal file
@@ -0,0 +1,30 @@
|
||||
comment: >-
|
||||
Makes a markdown table responsive. Responsive tables scroll horizontally to
|
||||
improve their layout on smaller screens.
|
||||
arguments:
|
||||
breakpoint:
|
||||
type: select
|
||||
optional: true
|
||||
position: 0
|
||||
comment: >-
|
||||
By default, the table shortcode is responsive for all viewports. When a
|
||||
breakpoint is set, the table will behave normally and not scroll
|
||||
horizontally from the provided breakpoint and up. Use `none` to disable
|
||||
this behavior. You can specify multiple breakpoints when using positional
|
||||
arguments.
|
||||
options:
|
||||
values:
|
||||
- none
|
||||
- sm
|
||||
- md
|
||||
- lg
|
||||
- xl
|
||||
- xxl
|
||||
class:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Class attribute of the table element, e.g. `table-striped-columns w-auto`.
|
||||
body:
|
||||
type: string
|
||||
optional: false
|
||||
comment: Table input in markdown format.
|
31
data/structures/timeline.yml
Normal file
31
data/structures/timeline.yml
Normal file
@@ -0,0 +1,31 @@
|
||||
comment: >-
|
||||
Shows items ordered on a vertical timelime.
|
||||
arguments:
|
||||
data:
|
||||
type: string
|
||||
optional: false
|
||||
comment: >-
|
||||
Filename of the timeline input data. You can omit the file extension. The
|
||||
file should reside in the data folder.
|
||||
background:
|
||||
type: select
|
||||
optional: true
|
||||
comment: >-
|
||||
Border color of the connector dots, defaults to the body background color.
|
||||
If set, uses a subtle background color that is adaptive to the current
|
||||
color mode.
|
||||
options:
|
||||
values:
|
||||
- primary
|
||||
- secondary
|
||||
- success
|
||||
- danger
|
||||
- warning
|
||||
- info
|
||||
- light
|
||||
- dark
|
||||
class:
|
||||
type: string
|
||||
optional: true
|
||||
comment: >-
|
||||
Class attribute of the timeline's container.
|
29
data/structures/toast.yml
Normal file
29
data/structures/toast.yml
Normal file
@@ -0,0 +1,29 @@
|
||||
comment: >-
|
||||
Prepares a toast message. Use a trigger to display the message.
|
||||
arguments:
|
||||
id:
|
||||
type: string
|
||||
optional: true
|
||||
comment: >-
|
||||
Unique identifier of the toast message, defaults to `toast-message-n`
|
||||
with sequence n.
|
||||
header:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Header of the toast message. Uses the site title by default.
|
||||
class:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Class attribute of the toast element.
|
||||
message:
|
||||
type:
|
||||
- string
|
||||
- template.HTML
|
||||
optional: false
|
||||
comment: Toast message.
|
||||
group: partial
|
||||
body:
|
||||
type: string
|
||||
optional: false
|
||||
comment: Toast mesage.
|
||||
group: shortcode
|
9
data/structures/toc.yml
Normal file
9
data/structures/toc.yml
Normal file
@@ -0,0 +1,9 @@
|
||||
comment: Renders the table of contents of a single page.
|
||||
arguments:
|
||||
page:
|
||||
type:
|
||||
- '*hugolib.pageState'
|
||||
- '*hugolib.pageForShortcode'
|
||||
optional: false
|
||||
comment: Context of the current page.
|
||||
group: partial
|
50
data/structures/tooltip.yml
Normal file
50
data/structures/tooltip.yml
Normal file
@@ -0,0 +1,50 @@
|
||||
comment: >-
|
||||
Displays a tooltip for a link. The inner content is used as hyperlink text.
|
||||
arguments:
|
||||
title:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Plain text to display in the tooltip.
|
||||
href:
|
||||
type: url
|
||||
optional: true
|
||||
comment: Address for the button or hyperlink.
|
||||
class:
|
||||
type: string
|
||||
optional: true
|
||||
parent: merge
|
||||
comment: Class attribute of the tooltip's button element.
|
||||
color:
|
||||
type: select
|
||||
optional: true
|
||||
default: dark
|
||||
comment: Theme color of the element.
|
||||
options:
|
||||
values:
|
||||
- primary
|
||||
- secondary
|
||||
- success
|
||||
- danger
|
||||
- warning
|
||||
- info
|
||||
- light
|
||||
- dark
|
||||
placement:
|
||||
type: select
|
||||
optional: true
|
||||
default: top
|
||||
comment: Position of the tooltip.
|
||||
options:
|
||||
values:
|
||||
- top
|
||||
- bottom
|
||||
- left
|
||||
- right
|
||||
spacing:
|
||||
type: bool
|
||||
optional: true
|
||||
default: true
|
||||
comment: Flag to add spacing to the inline tooltip.
|
||||
body:
|
||||
optional: false
|
||||
comment: Hyperlink text.
|
5
data/structures/version.yml
Normal file
5
data/structures/version.yml
Normal file
@@ -0,0 +1,5 @@
|
||||
comment: >-
|
||||
Returns the current version defined in 'package.json` in the repository root,
|
||||
or in the documentation base path ('params.docs.basePath') if specified. The
|
||||
returned version includes a 'v' prefix. The partial returns nothing when no
|
||||
match is found. The partial does not require any arguments.
|
26
data/structures/youtube.yml
Normal file
26
data/structures/youtube.yml
Normal file
@@ -0,0 +1,26 @@
|
||||
comment: >-
|
||||
Embeds a responsive video player for YouTube videos. Only the ID of the video
|
||||
is required. In privacy-enhanced mode, YouTube will not store information
|
||||
about visitors on your website unless the user plays the embedded video.
|
||||
arguments:
|
||||
title:
|
||||
type: string
|
||||
optional: true
|
||||
comment: >-
|
||||
Title of the video.
|
||||
class:
|
||||
type: string
|
||||
optional: true
|
||||
position: 1
|
||||
comment: >-
|
||||
Class attribute of the video wrapper element.
|
||||
id:
|
||||
type: string
|
||||
optional: false
|
||||
position: 0
|
||||
comment: Identifier of the video to be embedded.
|
||||
autoplay:
|
||||
type: bool
|
||||
optional: true
|
||||
default: false
|
||||
comment: Flag indicating the video should start playing immediately when loaded.
|
@@ -1,6 +1,6 @@
|
||||
resourcedir = '../resources/'
|
||||
title = "Hinode"
|
||||
copyright = "Copyright © 2023 Mark Dumay."
|
||||
copyright = "Copyright © 2024 Mark Dumay."
|
||||
paginate = 9
|
||||
enableGitInfo = true
|
||||
|
||||
@@ -79,6 +79,8 @@ home = ["HTML", "RSS", "REDIR"]
|
||||
keepVarNames = true
|
||||
precision = 0
|
||||
version = 2022
|
||||
[minify.tdewolff.html]
|
||||
keepWhitespace = true
|
||||
|
||||
[module]
|
||||
replacements = 'github.com/gethinode/hinode -> ../..'
|
||||
|
@@ -52,6 +52,8 @@
|
||||
logo = "/img/logo_icon.svg"
|
||||
color = "body"
|
||||
fixed = true
|
||||
overlay = false
|
||||
overlayMode = "dark"
|
||||
horizontal = false
|
||||
offset = "5.5rem"
|
||||
search = true
|
||||
@@ -127,7 +129,7 @@
|
||||
padding = "3"
|
||||
header = "none"
|
||||
footer = "tags"
|
||||
orientation = "horizontal-sm"
|
||||
orientation = "horizontal"
|
||||
style = "border-1 card-emphasize"
|
||||
homepage = 3
|
||||
separator = false
|
||||
@@ -181,15 +183,6 @@
|
||||
images = ["logo.png"]
|
||||
locale = "en_US"
|
||||
|
||||
[comments]
|
||||
enabled = false
|
||||
repo = "" # Replace with your repository.
|
||||
#issueTerm = "pathname" # pathname, url, title, og:title
|
||||
#label = "comment"
|
||||
# By default, light and dark mode correspond to github-light and github-dark, respectively.
|
||||
# Optional values: github-light, github-dark, preferred-color-scheme, github-dark-orange, icy-dark, dark-blue, photon-dark.
|
||||
#theme = ""
|
||||
|
||||
[links]
|
||||
bs_badge_heading = "https://getbootstrap.com/docs/5.3/components/badge/#headings"
|
||||
hinode_docs = "https://gethinode.com"
|
||||
@@ -197,5 +190,4 @@
|
||||
mozilla_image = "https://developer.mozilla.org/en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images"
|
||||
observatory = "https://observatory.mozilla.org/analyze/demo.gethinode.com"
|
||||
pagespeed = "https://pagespeed.web.dev/report?url=https%3A%2F%2Fdemo.gethinode.com%2F"
|
||||
utterances = "https://utteranc.es"
|
||||
hinode = "https://gethinode.com"
|
||||
|
@@ -7,15 +7,14 @@ for = '/**'
|
||||
X-XSS-Protection = "1; mode=block"
|
||||
Content-Security-Policy = """\
|
||||
default-src 'self'; \
|
||||
script-src 'self' \
|
||||
https://utteranc.es/client.js https://*.google-analytics.com https://*.googletagmanager.com; \
|
||||
style-src 'self' https://utteranc.es https://fonts.googleapis.com https://www.youtube.com; \
|
||||
script-src 'self' https://*.google-analytics.com https://*.googletagmanager.com; \
|
||||
style-src 'self' https://fonts.googleapis.com https://www.youtube.com; \
|
||||
object-src 'none'; \
|
||||
base-uri 'self'; \
|
||||
connect-src 'self'
|
||||
https://*.google-analytics.com https://*.analytics.google.com https://*.googletagmanager.com; \
|
||||
font-src 'self' https://fonts.gstatic.com; \
|
||||
frame-src 'self' https://utteranc.es https://www.youtube-nocookie.com https://www.youtube.com; \
|
||||
frame-src 'self' https://www.youtube-nocookie.com https://www.youtube.com; \
|
||||
img-src 'self' data: https://i.vimeocdn.com https://i.ytimg.com https://*.google-analytics.com https://*.googletagmanager.com https://tile.openstreetmap.org; \
|
||||
manifest-src 'self'; \
|
||||
media-src 'self' \
|
||||
|
@@ -21,6 +21,7 @@ const purgecss = require('@fullhuman/postcss-purgecss')({
|
||||
'./assets/scss/components/_syntax-dark.scss',
|
||||
'./assets/scss/components/_syntax-light.scss',
|
||||
'./assets/scss/components/_table.scss',
|
||||
'./assets/scss/components/_video.scss',
|
||||
'./assets/scss/theme/fonts.scss',
|
||||
'./assets/scss/theme/theme.scss',
|
||||
'./_vendor/github.com/gethinode/mod-flexsearch/assets/scss/modules/flexsearch/flexsearch.scss',
|
||||
|
@@ -8,7 +8,7 @@ showComments: false
|
||||
|
||||
{{< image src="/img/logo_var.svg#logo" class="img-fluid w-50" wrapper="text-center" >}}
|
||||
|
||||
{{< card-group class="text-center border-0" padding="3" >}}
|
||||
{{< card-group align="center" class="border-0" padding="3" >}}
|
||||
{{< card title="Bootstrap framework" icon="fab bootstrap" >}}
|
||||
Build fast, responsive sites with Bootstrap 5. Easily customize your site with the source Sass files.
|
||||
{{< /card >}}
|
||||
@@ -26,7 +26,6 @@ Additional features include:
|
||||
* Support for multiple languages
|
||||
* Reusable Bootstrap components through configurable shortcodes and partials
|
||||
* Versioned documentation, including sidebar navigation and version switcher
|
||||
* Embedded comments through light-weight integration with GitHub via [utteranc.es]({{< param "links.utterances" >}})
|
||||
* Reponsive image handling for multiple screen sizes and resolutions
|
||||
* Optimized search results, scoring 100 points for SEO on [PageSpeed Insights]({{< param "links.pagespeed" >}})
|
||||
* Secure by default, scoring A+ on [Mozilla Observatory test]({{< param "links.observatory" >}})
|
||||
|
@@ -344,6 +344,24 @@ As an example, the following shortcode displays a light navigation header.
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Persona
|
||||
|
||||
As an example, the following shortcode displays a persona card with a primary color.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* persona thumbnail="/img/creator-1x1.jpg" title="Creators" color="primary" */>}}
|
||||
As a content creator you value your independence. You like to take control of your
|
||||
online and offline presence. You want to focus on growing your audience, without
|
||||
limitations.
|
||||
|
||||
Hinode gives you the tools to publish your blog in the way that you want. You have
|
||||
full ownership and control of your content. That is why content creators choose
|
||||
Hinode.
|
||||
{{</* /persona */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Release
|
||||
|
||||
As an example, the following shortcode displays a default release button.
|
||||
@@ -386,6 +404,22 @@ As an example, the following shortcode displays superscript text.
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Table
|
||||
|
||||
As an example, the following shortcode displays a responsive table.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="markdown" >}}
|
||||
{{</* table */>}}
|
||||
| # | Heading | Heading | Heading | Heading | Heading | Heading | Heading | Heading | Heading |
|
||||
|----|---------|---------|---------|---------|---------|---------|---------|---------|---------|
|
||||
| 1. | cell | cel | cel | cel | cel | cel | cel | cel | cel |
|
||||
| 2. | cell | cel | cel | cel | cel | cel | cel | cel | cel |
|
||||
| 3. | cell | cel | cel | cel | cel | cel | cel | cel | cel |
|
||||
{{</* /table */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Timeline
|
||||
|
||||
As an example, the following shortcode displays a timeline with the file `data/timeline.en.yml` as data.
|
||||
|
@@ -9,7 +9,7 @@ showComments: false
|
||||
|
||||
{{< image src="/img/logo_var.svg#logo" class="img-fluid w-50" wrapper="text-center" >}}
|
||||
|
||||
{{< card-group class="text-center border-0" padding="3" >}}
|
||||
{{< card-group align="center" class="border-0" padding="3" >}}
|
||||
{{< card title="Framework Bootstrap" icon="fab bootstrap" >}}
|
||||
Créez des sites rapides et réactifs avec Bootstrap 5. Personnalisez facilement votre site avec les fichiers source Sass.
|
||||
{{< /card >}}
|
||||
@@ -27,7 +27,6 @@ Les fonctionnalités supplémentaires incluent:
|
||||
- Prise en charge de plusieurs langues
|
||||
- Composants bootstrap réutilisables à travers des codes et partiels configurables
|
||||
- Documentation versionnée, incluant une navigation latérale et un sélecteur de version.
|
||||
- Commentaires intégrés via une intégration légère avec GitHub via [utteranc.es]({{< param "links.utterances" >}})
|
||||
- Gestion d'images adaptatives pour plusieurs tailles d'écran et résolutions.
|
||||
- Résultats de recherche optimisés, obtenant un score de 100 points pour le référencement (SEO) sur [PageSpeed Insights]({{< param "links.pagespeed" >}}).
|
||||
- Sécurisé par défaut, obtenant un score A+ au test [Mozilla Observatory]({{< param "links.observatory" >}})
|
||||
|
@@ -1,10 +1,11 @@
|
||||
---
|
||||
author: Mark Dumay
|
||||
title: Quatrième article
|
||||
title: Quatrième article (exclu de la recherche)
|
||||
slug: quatrieme-article
|
||||
date: 2023-01-01
|
||||
description: Ceci est mon quatrième article.
|
||||
description: Ceci est mon quatrième article de blog. Il est exclu de l'index de recherche.
|
||||
tags: ["blog"]
|
||||
searchExclude: true
|
||||
thumbnail:
|
||||
url: img/flowers.jpg
|
||||
author: Arvee Marie
|
||||
|
@@ -10,7 +10,7 @@ showComments: false
|
||||
|
||||
{{< image src="/img/logo_var.svg#logo" class="img-fluid w-50" wrapper="text-center" >}}
|
||||
|
||||
{{< card-group class="text-center border-0" padding="3" >}}
|
||||
{{< card-group align="center" class="border-0" padding="3" >}}
|
||||
{{< card title="Bootstrap raamwerk" icon="fab bootstrap" >}}
|
||||
Bouw snelle websites geschikt voor mobiele en desktop schermen met Bootstrap 5. Pas de site eenvoudig aan met bronbestanden in Sass.
|
||||
{{< /card >}}
|
||||
@@ -28,7 +28,6 @@ Overige functies:
|
||||
* Ondersteuning voor meerdere talen
|
||||
* Herbruikbare Bootstrap componenten via shortcodes en partials
|
||||
* Versiebeheer van documentatiepagina's, inclusief secundaire navigatie en selectie van versies
|
||||
* Integreren van commentaar via [utteranc.es]({{< param "links.utterances" >}})
|
||||
* Optimalisering van foto's voor meerdere schermafmetingen en resoluties
|
||||
* Optimale zoekresultaten, met 100 punten voor SEO volgens [PageSpeed Insights]({{< param "links.pagespeed" >}})
|
||||
* Veilige communicatie, met een score van A+ volgens [Mozilla Observatory]({{< param "links.observatory" >}})
|
||||
|
@@ -38,6 +38,10 @@ github.com/gethinode/mod-fontawesome v1.5.0 h1:3mW5dnWauuF9wSWXNIY+PPgTNPlc/xQOQ
|
||||
github.com/gethinode/mod-fontawesome v1.5.0/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||
github.com/gethinode/mod-fontawesome v1.5.1 h1:C7goQY4HrEua/lpjC++laydNKBuYo1+307ngn5tyXeM=
|
||||
github.com/gethinode/mod-fontawesome v1.5.1/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||
github.com/gethinode/mod-fontawesome v1.6.1 h1:iqOgDGdw7Bs4hnzjF/8JsUn10omyKQZTglLqNenT1K0=
|
||||
github.com/gethinode/mod-fontawesome v1.6.1/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||
github.com/gethinode/mod-fontawesome v1.7.3 h1:YzRCYSasVRIcImVmTJYjqNJ+KmyNWfm/bMgtM0slvzs=
|
||||
github.com/gethinode/mod-fontawesome v1.7.3/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||
github.com/gethinode/mod-katex v1.0.1/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
|
||||
github.com/gethinode/mod-katex v1.0.2 h1:pIG4n3qLl/IVe7BEiwn+GL8r5lOCtF6FDxlcrPKdAXk=
|
||||
github.com/gethinode/mod-katex v1.0.2/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
|
||||
@@ -45,6 +49,8 @@ github.com/gethinode/mod-katex v1.0.3 h1:fvlUWqcUQqv2zRNM2kfmJ6GhXA816Tl1nfVrUkm
|
||||
github.com/gethinode/mod-katex v1.0.3/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
|
||||
github.com/gethinode/mod-katex v1.0.4 h1:NozgWPFnHhx1W+E9DnwMTRpvxPbdqdANEtwp9N3/mj8=
|
||||
github.com/gethinode/mod-katex v1.0.4/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
|
||||
github.com/gethinode/mod-katex v1.0.5 h1:AVhcTINYory0ygChQERf8PcyJkbT1oqhmLRF6ESnWOY=
|
||||
github.com/gethinode/mod-katex v1.0.5/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
|
||||
github.com/gethinode/mod-leaflet v0.3.4 h1:oY+YQ0JiJuhFQNrk9XgFdg0NMsTUQPXNfnILp4ia4r4=
|
||||
github.com/gethinode/mod-leaflet v0.3.4/go.mod h1:uGggt87x4Fw7wBoJpSiUvNkYg+s/Ujne7klAX2rxMRk=
|
||||
github.com/gethinode/mod-leaflet v0.3.5 h1:69Bv/6zRXhbcTzo7TMr58h3ry47srHRpM1k81LrLbYU=
|
||||
|
@@ -14,6 +14,7 @@
|
||||
"footer",
|
||||
"form",
|
||||
"h2",
|
||||
"h3",
|
||||
"head",
|
||||
"hr",
|
||||
"html",
|
||||
@@ -25,7 +26,6 @@
|
||||
"mark",
|
||||
"meta",
|
||||
"nav",
|
||||
"nil",
|
||||
"noscript",
|
||||
"ol",
|
||||
"p",
|
||||
@@ -38,8 +38,14 @@
|
||||
"sub",
|
||||
"sup",
|
||||
"svg",
|
||||
"table",
|
||||
"tbody",
|
||||
"td",
|
||||
"th",
|
||||
"thead",
|
||||
"time",
|
||||
"title",
|
||||
"tr",
|
||||
"ul",
|
||||
"use"
|
||||
],
|
||||
@@ -56,6 +62,7 @@
|
||||
"alert-dismissible",
|
||||
"align-items-center",
|
||||
"align-items-end",
|
||||
"align-items-start",
|
||||
"align-middle",
|
||||
"align-self-center",
|
||||
"align-self-end",
|
||||
@@ -113,17 +120,17 @@
|
||||
"carousel-item",
|
||||
"chroma",
|
||||
"col",
|
||||
"col-10",
|
||||
"col-12",
|
||||
"col-2",
|
||||
"col-3",
|
||||
"col-4",
|
||||
"col-6",
|
||||
"col-8",
|
||||
"col-9",
|
||||
"col-auto",
|
||||
"col-lg-2",
|
||||
"col-lg-4",
|
||||
"col-lg-8",
|
||||
"col-md-10",
|
||||
"col-md-2",
|
||||
"col-md-3",
|
||||
"col-md-4",
|
||||
@@ -213,6 +220,8 @@
|
||||
"form-control",
|
||||
"fs-3",
|
||||
"fs-5",
|
||||
"fs-6",
|
||||
"fs-md-5",
|
||||
"fw-bold",
|
||||
"fw-semibold",
|
||||
"g-0",
|
||||
@@ -274,6 +283,7 @@
|
||||
"mx-md-0",
|
||||
"mx-md-2",
|
||||
"my-2",
|
||||
"my-4",
|
||||
"my-auto",
|
||||
"my-md-0",
|
||||
"my-md-auto",
|
||||
@@ -309,6 +319,8 @@
|
||||
"pb-5",
|
||||
"pb-md-0",
|
||||
"pe-3",
|
||||
"pe-5",
|
||||
"persona",
|
||||
"position-absolute",
|
||||
"position-fixed",
|
||||
"position-relative",
|
||||
@@ -319,6 +331,10 @@
|
||||
"ps-xl-3",
|
||||
"pt-5",
|
||||
"pt-md-3",
|
||||
"ptw-3",
|
||||
"ptw-5",
|
||||
"ptw-lg-5",
|
||||
"ptw-sm-4",
|
||||
"px-4",
|
||||
"px-xxl-0",
|
||||
"py-1",
|
||||
@@ -330,6 +346,7 @@
|
||||
"ratio-16x9",
|
||||
"rounded",
|
||||
"rounded-2",
|
||||
"rounded-5",
|
||||
"rounded-bottom",
|
||||
"rounded-pill",
|
||||
"rounded-top",
|
||||
@@ -350,7 +367,9 @@
|
||||
"slide",
|
||||
"small",
|
||||
"spinner-border",
|
||||
"start-0",
|
||||
"start-100",
|
||||
"start-50",
|
||||
"sticky-top",
|
||||
"stretched-link",
|
||||
"svg-inline--fa",
|
||||
@@ -358,6 +377,8 @@
|
||||
"syntax-highlight",
|
||||
"tab-content",
|
||||
"tab-pane",
|
||||
"table",
|
||||
"table-responsive",
|
||||
"tag-link",
|
||||
"text-bg-body",
|
||||
"text-bg-body-tertiary",
|
||||
@@ -409,8 +430,11 @@
|
||||
"toc-sidebar",
|
||||
"toggler-icon",
|
||||
"top-0",
|
||||
"top-25",
|
||||
"top-50",
|
||||
"top-bar",
|
||||
"translate-middle",
|
||||
"translate-middle-y",
|
||||
"visually-hidden",
|
||||
"vr",
|
||||
"w-100",
|
||||
@@ -490,6 +514,7 @@
|
||||
"navbar-sample-collapse",
|
||||
"navigation",
|
||||
"notification",
|
||||
"persona",
|
||||
"projecten",
|
||||
"projects",
|
||||
"projets",
|
||||
@@ -499,6 +524,7 @@
|
||||
"spinner",
|
||||
"sub",
|
||||
"sup",
|
||||
"table",
|
||||
"timeline",
|
||||
"toast",
|
||||
"toast-container",
|
||||
|
13
go.mod
13
go.mod
@@ -5,11 +5,12 @@ go 1.19
|
||||
require (
|
||||
github.com/airbnb/lottie-web v5.12.2+incompatible // indirect
|
||||
github.com/gethinode/mod-bootstrap v1.2.2 // indirect
|
||||
github.com/gethinode/mod-flexsearch v1.7.1 // indirect
|
||||
github.com/gethinode/mod-fontawesome v1.5.1 // indirect
|
||||
github.com/gethinode/mod-katex v1.0.4 // indirect
|
||||
github.com/gethinode/mod-leaflet v0.3.5 // indirect
|
||||
github.com/gethinode/mod-lottie v1.3.0 // indirect
|
||||
github.com/nextapps-de/flexsearch v0.0.0-20230711092928-1243fd883ec3 // indirect
|
||||
github.com/gethinode/mod-flexsearch v1.8.1 // indirect
|
||||
github.com/gethinode/mod-fontawesome v1.8.0 // indirect
|
||||
github.com/gethinode/mod-katex v1.0.5 // indirect
|
||||
github.com/gethinode/mod-leaflet v0.4.0 // indirect
|
||||
github.com/gethinode/mod-lottie v1.4.1 // indirect
|
||||
github.com/gethinode/mod-utils v1.0.3 // indirect
|
||||
github.com/nextapps-de/flexsearch v0.0.0-20240108021025-afd75f742f22 // indirect
|
||||
github.com/twbs/bootstrap v5.3.2+incompatible // indirect
|
||||
)
|
||||
|
28
go.sum
28
go.sum
@@ -40,6 +40,10 @@ github.com/gethinode/mod-flexsearch v1.7.0 h1:VFTf6iUyT9b47jTDAxh8nVHU1eUBrdxlyk
|
||||
github.com/gethinode/mod-flexsearch v1.7.0/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
||||
github.com/gethinode/mod-flexsearch v1.7.1 h1:f4rjKkhleDVzqwUmwP1xZdhjru5VQ9g0MRDz0G6oLyY=
|
||||
github.com/gethinode/mod-flexsearch v1.7.1/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
||||
github.com/gethinode/mod-flexsearch v1.8.0 h1:rKu9ackmbGAD/CRJYUDUhy/3nDCEj0IgYDiL1bkwzDc=
|
||||
github.com/gethinode/mod-flexsearch v1.8.0/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
||||
github.com/gethinode/mod-flexsearch v1.8.1 h1:xwPvmmxd8Tdyxp8/rnd9KRGqIDtZs/YwAQJ1i9oQMiM=
|
||||
github.com/gethinode/mod-flexsearch v1.8.1/go.mod h1:L8hrnpupx27cez2ObMX8gWnhbW6qss4HGH1Ea4UaBRQ=
|
||||
github.com/gethinode/mod-fontawesome v1.0.2 h1:ZSK6D20/w4y5GnfYfTBB58uHD0ChIfkpKfRGwioS9rg=
|
||||
github.com/gethinode/mod-fontawesome v1.0.2/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||
github.com/gethinode/mod-fontawesome v1.1.0 h1:rsDzUI+3ZlS/do2ff3ne8/z3KwHeysmuA+WsXlumXXk=
|
||||
@@ -68,6 +72,12 @@ github.com/gethinode/mod-fontawesome v1.5.0 h1:3mW5dnWauuF9wSWXNIY+PPgTNPlc/xQOQ
|
||||
github.com/gethinode/mod-fontawesome v1.5.0/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||
github.com/gethinode/mod-fontawesome v1.5.1 h1:C7goQY4HrEua/lpjC++laydNKBuYo1+307ngn5tyXeM=
|
||||
github.com/gethinode/mod-fontawesome v1.5.1/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||
github.com/gethinode/mod-fontawesome v1.6.1 h1:iqOgDGdw7Bs4hnzjF/8JsUn10omyKQZTglLqNenT1K0=
|
||||
github.com/gethinode/mod-fontawesome v1.6.1/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||
github.com/gethinode/mod-fontawesome v1.7.3 h1:YzRCYSasVRIcImVmTJYjqNJ+KmyNWfm/bMgtM0slvzs=
|
||||
github.com/gethinode/mod-fontawesome v1.7.3/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||
github.com/gethinode/mod-fontawesome v1.8.0 h1:YEuCmvCdzcemF1eFK35Wnp1asKKO3/xbxGArnjq6PRY=
|
||||
github.com/gethinode/mod-fontawesome v1.8.0/go.mod h1:uvuC2YL8mdXNp6NRzFOu4TWsHvtY9AZ8YxJkF23/M/8=
|
||||
github.com/gethinode/mod-katex v1.0.0 h1:me/3dIIZBkfk1mRIFt8QiAGYwYDoSG5bc2hHRtIutFc=
|
||||
github.com/gethinode/mod-katex v1.0.0/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
|
||||
github.com/gethinode/mod-katex v1.0.1 h1:809QUztxmKgMNchU+v03iMO7Ma+ISc3ZzhXYauc21rs=
|
||||
@@ -78,6 +88,8 @@ github.com/gethinode/mod-katex v1.0.3 h1:fvlUWqcUQqv2zRNM2kfmJ6GhXA816Tl1nfVrUkm
|
||||
github.com/gethinode/mod-katex v1.0.3/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
|
||||
github.com/gethinode/mod-katex v1.0.4 h1:NozgWPFnHhx1W+E9DnwMTRpvxPbdqdANEtwp9N3/mj8=
|
||||
github.com/gethinode/mod-katex v1.0.4/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
|
||||
github.com/gethinode/mod-katex v1.0.5 h1:AVhcTINYory0ygChQERf8PcyJkbT1oqhmLRF6ESnWOY=
|
||||
github.com/gethinode/mod-katex v1.0.5/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
|
||||
github.com/gethinode/mod-leaflet v0.2.3 h1:QQI4h+IH0jZ7fx4q0um2YIEiYBoW3OAfW8qHzbRCDPk=
|
||||
github.com/gethinode/mod-leaflet v0.2.3/go.mod h1:uGggt87x4Fw7wBoJpSiUvNkYg+s/Ujne7klAX2rxMRk=
|
||||
github.com/gethinode/mod-leaflet v0.3.1 h1:H5MaOa+BB1KuVw7abTqfIn/SNzzRsAyx/WQoSe+2Ykc=
|
||||
@@ -88,6 +100,8 @@ github.com/gethinode/mod-leaflet v0.3.4 h1:oY+YQ0JiJuhFQNrk9XgFdg0NMsTUQPXNfnILp
|
||||
github.com/gethinode/mod-leaflet v0.3.4/go.mod h1:uGggt87x4Fw7wBoJpSiUvNkYg+s/Ujne7klAX2rxMRk=
|
||||
github.com/gethinode/mod-leaflet v0.3.5 h1:69Bv/6zRXhbcTzo7TMr58h3ry47srHRpM1k81LrLbYU=
|
||||
github.com/gethinode/mod-leaflet v0.3.5/go.mod h1:uGggt87x4Fw7wBoJpSiUvNkYg+s/Ujne7klAX2rxMRk=
|
||||
github.com/gethinode/mod-leaflet v0.4.0 h1:Xc6c1UTf4m1saQLFfFWT5sEpwj25xVGuS8csGC82UUI=
|
||||
github.com/gethinode/mod-leaflet v0.4.0/go.mod h1:yr+bUKAstifdB16mbYh69OayAmgPOlNUubAmVn5eL2M=
|
||||
github.com/gethinode/mod-lottie v1.0.0 h1:1CUZMcgN5FAyjjyuP3qkaOQ6M5sv6HUAbosW4sIT5VE=
|
||||
github.com/gethinode/mod-lottie v1.0.0/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=
|
||||
github.com/gethinode/mod-lottie v1.0.1 h1:+IE7xtnSVQpJS56oBJq9RWKZeFEfxrOZAqE3BSrS/u0=
|
||||
@@ -100,7 +114,21 @@ github.com/gethinode/mod-lottie v1.2.0 h1:9S0Y4PlEO66dIvFxayatmDEf8WWxqbLNLi4z56
|
||||
github.com/gethinode/mod-lottie v1.2.0/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=
|
||||
github.com/gethinode/mod-lottie v1.3.0 h1:vQ8CXkjdp2IeFskTzu+ZnKOEio8GtN08urVK+oCH81E=
|
||||
github.com/gethinode/mod-lottie v1.3.0/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=
|
||||
github.com/gethinode/mod-lottie v1.4.0 h1:0Ls1Q/8p0gQpuX9+dtfNGKcjBNeymjE7gERdnN3lCCE=
|
||||
github.com/gethinode/mod-lottie v1.4.0/go.mod h1:57eu6glS5oxkew2dB1P2zsbhw444aRX0XfuyDe7k/dk=
|
||||
github.com/gethinode/mod-lottie v1.4.1 h1:RzCjYsxFPqyBsYAcdPeUP0rvF+hD9eEl7NrxuaRiKQQ=
|
||||
github.com/gethinode/mod-lottie v1.4.1/go.mod h1:QjKlEmYbekrNGwa9EdFlPcXxwWWcraJUQ6xIL+syA60=
|
||||
github.com/gethinode/mod-utils v1.0.0 h1:cqHm2xS5uDiJzRm1KfHaNbq6uMVDKLhQa8/BuTZ1nhY=
|
||||
github.com/gethinode/mod-utils v1.0.0/go.mod h1:ONJm3pHCq7nvaPNjusLZNCeCbhOhSBH4HVKHwK1FdYE=
|
||||
github.com/gethinode/mod-utils v1.0.1 h1:jhZGlGFHHL1f5HXbBMXfiZ2gCz4TVafAzjnRPTIBSEE=
|
||||
github.com/gethinode/mod-utils v1.0.1/go.mod h1:ONJm3pHCq7nvaPNjusLZNCeCbhOhSBH4HVKHwK1FdYE=
|
||||
github.com/gethinode/mod-utils v1.0.2 h1:0b3i+/bBHY1Td9N6khDbL1nf3d5HGc4QzI4BbEWHoU4=
|
||||
github.com/gethinode/mod-utils v1.0.2/go.mod h1:ONJm3pHCq7nvaPNjusLZNCeCbhOhSBH4HVKHwK1FdYE=
|
||||
github.com/gethinode/mod-utils v1.0.3 h1:FF6lnam0Bcdj7G1E5P+qi5ByPrl1npL+3uS5YoPx1C0=
|
||||
github.com/gethinode/mod-utils v1.0.3/go.mod h1:ONJm3pHCq7nvaPNjusLZNCeCbhOhSBH4HVKHwK1FdYE=
|
||||
github.com/nextapps-de/flexsearch v0.0.0-20230711092928-1243fd883ec3 h1:H/qVR5O4BXjRjD+5PZB+r4ug2BSJ2Of4RtwOntd+OKo=
|
||||
github.com/nextapps-de/flexsearch v0.0.0-20230711092928-1243fd883ec3/go.mod h1:5GdMfPAXzbA2gXBqTjC6l27kioSYzHlqDMh0+wyx7sU=
|
||||
github.com/nextapps-de/flexsearch v0.0.0-20240108021025-afd75f742f22 h1:re7L8FxbXQpnX8BgzkdUnDpsUmloGNyLmiy2ZCln8pg=
|
||||
github.com/nextapps-de/flexsearch v0.0.0-20240108021025-afd75f742f22/go.mod h1:5GdMfPAXzbA2gXBqTjC6l27kioSYzHlqDMh0+wyx7sU=
|
||||
github.com/twbs/bootstrap v5.3.2+incompatible h1:tuiO5acc6xnZUR77Sbi5aKWXxjYxbmsSbJwYrhAKoQQ=
|
||||
github.com/twbs/bootstrap v5.3.2+incompatible/go.mod h1:fZTSrkpSf0/HkL0IIJzvVspTt1r9zuf7XlZau8kpcY0=
|
||||
|
14
i18n/en.yaml
14
i18n/en.yaml
@@ -133,3 +133,17 @@
|
||||
translation: "Show"
|
||||
- id: comments
|
||||
translation: "Comments"
|
||||
|
||||
# Arguments
|
||||
- id: name
|
||||
translation: "Name"
|
||||
- id: type
|
||||
translation: "Type"
|
||||
- id: required
|
||||
translation: "Required"
|
||||
- id: default
|
||||
translation: "Default"
|
||||
- id: comment
|
||||
translation: "Comment"
|
||||
- id: supportedValues
|
||||
translation: "Supported values"
|
||||
|
32
i18n/fr.yaml
32
i18n/fr.yaml
@@ -25,6 +25,20 @@
|
||||
translation: "Articles"
|
||||
- id: more
|
||||
translation: "Plus {{ . }}"
|
||||
- id: emptyList
|
||||
translation: "Aucun articles trouvé"
|
||||
- id: emptyTags
|
||||
translation: "Aucun tags trouvé"
|
||||
|
||||
# Languages
|
||||
- id: lang_de
|
||||
translation: "Allemand"
|
||||
- id: lang_en
|
||||
translation: "Anglais"
|
||||
- id: lang_nl
|
||||
translation: "Néerlandais"
|
||||
- id: lang_fr
|
||||
translation: "Français"
|
||||
|
||||
# Sharing
|
||||
- id: shareLink
|
||||
@@ -39,6 +53,8 @@
|
||||
translation: "Lien"
|
||||
- id: code
|
||||
translation: "Code"
|
||||
- id: download
|
||||
translation: "Télécharger l'article"
|
||||
|
||||
# Pagination
|
||||
- id: paginationNav
|
||||
@@ -75,6 +91,8 @@
|
||||
translation: "Sur cette page"
|
||||
- id: seeAlso
|
||||
translation: "Voir également"
|
||||
- id: sectionMenu
|
||||
translation: "Selectionner un topic"
|
||||
|
||||
# Sidebar
|
||||
- id: toggleSidebar
|
||||
@@ -115,3 +133,17 @@
|
||||
translation: "Afficher"
|
||||
- id: comments
|
||||
translation: "Commentaires"
|
||||
|
||||
# Arguments
|
||||
- id: name
|
||||
translation: "Nom"
|
||||
- id: type
|
||||
translation: "Type"
|
||||
- id: required
|
||||
translation: "Requis"
|
||||
- id: default
|
||||
translation: "Défaut"
|
||||
- id: comment
|
||||
translation: "Commentaire"
|
||||
- id: supportedValues
|
||||
translation: "Valeurs supportées"
|
||||
|
15
i18n/nl.yaml
15
i18n/nl.yaml
@@ -131,3 +131,18 @@
|
||||
translation: "Tonen"
|
||||
- id: comments
|
||||
translation: "Reacties"
|
||||
|
||||
|
||||
# Arguments
|
||||
- id: name
|
||||
translation: "Naam"
|
||||
- id: type
|
||||
translation: "Type"
|
||||
- id: required
|
||||
translation: "Verplicht"
|
||||
- id: default
|
||||
translation: "Standaardwaarde"
|
||||
- id: comment
|
||||
translation: "Toelichting"
|
||||
- id: supportedValues
|
||||
translation: "Toegestane waarden"
|
||||
|
135
i18n/zh-hans.yaml
Normal file
135
i18n/zh-hans.yaml
Normal file
@@ -0,0 +1,135 @@
|
||||
# Single pages
|
||||
- id: postedOnDate
|
||||
translation: "发布于 {{ . }}"
|
||||
- id: lastModified
|
||||
translation: "最后修改于 {{ . }}"
|
||||
- id: read
|
||||
translation: "阅读"
|
||||
- id: minutesShort
|
||||
translation: "分钟"
|
||||
- id: words
|
||||
translation: "字"
|
||||
- id: photoFull
|
||||
translation: "照片由 %s 于 %s 拍摄"
|
||||
- id: photoShort
|
||||
translation: "照片由 {{ . }} 拍摄"
|
||||
- id: photoOn
|
||||
translation: "于"
|
||||
- id: draft
|
||||
translation: "草稿"
|
||||
|
||||
# List pages
|
||||
- id: article
|
||||
translation: "文章"
|
||||
- id: articles
|
||||
translation: "文章"
|
||||
- id: more
|
||||
translation: "更多 {{ . }}"
|
||||
- id: emptyList
|
||||
translation: "没有找到文章"
|
||||
- id: emptyTags
|
||||
translation: "没有找到标签"
|
||||
|
||||
# Languages
|
||||
- id: lang_de
|
||||
translation: "German"
|
||||
- id: lang_en
|
||||
translation: "English"
|
||||
- id: lang_nl
|
||||
translation: "Dutch"
|
||||
- id: lang_fr
|
||||
translation: "French"
|
||||
|
||||
# Sharing
|
||||
- id: shareLink
|
||||
translation: "分享至 {{ . }}"
|
||||
- id: shareSystem
|
||||
translation: "系统"
|
||||
- id: copyToClipboard
|
||||
translation: "复制到剪贴板"
|
||||
- id: copiedToClipboard
|
||||
translation: "已复制到剪贴板"
|
||||
- id: link
|
||||
translation: "链接"
|
||||
- id: code
|
||||
translation: "代码"
|
||||
- id: download
|
||||
translation: "下载文章"
|
||||
|
||||
# Pagination
|
||||
- id: paginationNav
|
||||
translation: "页面导航"
|
||||
- id: paginationPrevious
|
||||
translation: "上一页"
|
||||
- id: paginationNext
|
||||
translation: "下一页"
|
||||
- id: paginationFirst
|
||||
translation: "第一页"
|
||||
- id: paginationLast
|
||||
translation: "最后一页"
|
||||
|
||||
# Navigation
|
||||
- id: colorMode
|
||||
translation: "切换主题"
|
||||
- id: colorLight
|
||||
translation: "亮色"
|
||||
- id: colorDark
|
||||
translation: "暗色"
|
||||
- id: colorAuto
|
||||
translation: "自动"
|
||||
- id: toggleMainNav
|
||||
translation: "切换主导航"
|
||||
- id: home
|
||||
translation: "首页"
|
||||
- id: languageSwitcherLabel
|
||||
translation: "语言"
|
||||
- id: close
|
||||
translation: "关闭"
|
||||
|
||||
# Table of contents
|
||||
- id: toc
|
||||
translation: "本页目录"
|
||||
- id: seeAlso
|
||||
translation: "参见"
|
||||
- id: sectionMenu
|
||||
translation: "选择一个主题"
|
||||
|
||||
# Sidebar
|
||||
- id: toggleSidebar
|
||||
translation: "切换侧边栏导航"
|
||||
|
||||
# Feature
|
||||
- id: addedFeature
|
||||
translation: "新增于 {{ . }}"
|
||||
- id: deprecatedFeature
|
||||
translation: "已弃用于 {{ . }}"
|
||||
|
||||
# Versioning
|
||||
- id: latest
|
||||
translation: "最新"
|
||||
- id: allVersions
|
||||
translation: "所有版本"
|
||||
- id: newerVersionAlert
|
||||
translation: "有一个更新版本的 {{ . }}!"
|
||||
|
||||
# 404 page
|
||||
- id: pageNotFound
|
||||
translation: "您访问的页面不存在或发生了其他错误。请返回我们的{{ . }}。"
|
||||
- id: pageNotFoundTitle
|
||||
translation: "页面未找到"
|
||||
- id: pageNotFoundHome
|
||||
translation: "首页"
|
||||
|
||||
# Footer
|
||||
- id: copyright
|
||||
translation: "Copyright"
|
||||
- id: rights
|
||||
translation: "版权所有"
|
||||
- id: poweredBy
|
||||
translation: "由 {{ . }} 提供支持。"
|
||||
|
||||
# Comments
|
||||
- id: show
|
||||
translation: "显示"
|
||||
- id: comments
|
||||
translation: "评论"
|
135
i18n/zh-hant.yaml
Normal file
135
i18n/zh-hant.yaml
Normal file
@@ -0,0 +1,135 @@
|
||||
# Single pages
|
||||
- id: postedOnDate
|
||||
translation: "發佈於 {{ . }}"
|
||||
- id: lastModified
|
||||
translation: "最後修改於 {{ . }}"
|
||||
- id: read
|
||||
translation: "閱讀"
|
||||
- id: minutesShort
|
||||
translation: "分鐘"
|
||||
- id: words
|
||||
translation: "字"
|
||||
- id: photoFull
|
||||
translation: "照片由 %s 於 %s 拍攝"
|
||||
- id: photoShort
|
||||
translation: "照片由 {{ . }} 拍攝"
|
||||
- id: photoOn
|
||||
translation: "於"
|
||||
- id: draft
|
||||
translation: "草稿"
|
||||
|
||||
# List pages
|
||||
- id: article
|
||||
translation: "文章"
|
||||
- id: articles
|
||||
translation: "文章"
|
||||
- id: more
|
||||
translation: "更多 {{ . }}"
|
||||
- id: emptyList
|
||||
translation: "沒有找到文章"
|
||||
- id: emptyTags
|
||||
translation: "沒有找到標籤"
|
||||
|
||||
# Languages
|
||||
- id: lang_de
|
||||
translation: "German"
|
||||
- id: lang_en
|
||||
translation: "English"
|
||||
- id: lang_nl
|
||||
translation: "Dutch"
|
||||
- id: lang_fr
|
||||
translation: "French"
|
||||
|
||||
# Sharing
|
||||
- id: shareLink
|
||||
translation: "分享至 {{ . }}"
|
||||
- id: shareSystem
|
||||
translation: "系統"
|
||||
- id: copyToClipboard
|
||||
translation: "複製到剪貼板"
|
||||
- id: copiedToClipboard
|
||||
translation: "已複製到剪貼板"
|
||||
- id: link
|
||||
translation: "連結"
|
||||
- id: code
|
||||
translation: "程式碼"
|
||||
- id: download
|
||||
translation: "下載文章"
|
||||
|
||||
# Pagination
|
||||
- id: paginationNav
|
||||
translation: "頁面導航"
|
||||
- id: paginationPrevious
|
||||
translation: "上一頁"
|
||||
- id: paginationNext
|
||||
translation: "下一頁"
|
||||
- id: paginationFirst
|
||||
translation: "第一頁"
|
||||
- id: paginationLast
|
||||
translation: "最後一頁"
|
||||
|
||||
# Navigation
|
||||
- id: colorMode
|
||||
translation: "切換主題"
|
||||
- id: colorLight
|
||||
translation: "亮色"
|
||||
- id: colorDark
|
||||
translation: "暗色"
|
||||
- id: colorAuto
|
||||
translation: "自動"
|
||||
- id: toggleMainNav
|
||||
translation: "切換主導航"
|
||||
- id: home
|
||||
translation: "首頁"
|
||||
- id: languageSwitcherLabel
|
||||
translation: "語言"
|
||||
- id: close
|
||||
translation: "關閉"
|
||||
|
||||
# Table of contents
|
||||
- id: toc
|
||||
translation: "本頁目錄"
|
||||
- id: seeAlso
|
||||
translation: "參見"
|
||||
- id: sectionMenu
|
||||
translation: "選擇一個主題"
|
||||
|
||||
# Sidebar
|
||||
- id: toggleSidebar
|
||||
translation: "切換側邊欄導航"
|
||||
|
||||
# Feature
|
||||
- id: addedFeature
|
||||
translation: "新增於 {{ . }}"
|
||||
- id: deprecatedFeature
|
||||
translation: "已棄用於 {{ . }}"
|
||||
|
||||
# Versioning
|
||||
- id: latest
|
||||
translation: "最新"
|
||||
- id: allVersions
|
||||
translation: "所有版本"
|
||||
- id: newerVersionAlert
|
||||
translation: "有一個更新版本的 {{ . }}!"
|
||||
|
||||
# 404 page
|
||||
- id: pageNotFound
|
||||
translation: "您訪問的頁面不存在或發生了其他錯誤。請返回我們的{{ . }}。"
|
||||
- id: pageNotFoundTitle
|
||||
translation: "頁面未找到"
|
||||
- id: pageNotFoundHome
|
||||
translation: "首頁"
|
||||
|
||||
# Footer
|
||||
- id: copyright
|
||||
translation: "Copyright"
|
||||
- id: rights
|
||||
translation: "版權所有"
|
||||
- id: poweredBy
|
||||
translation: "由 {{ . }} 提供支持。"
|
||||
|
||||
# Comments
|
||||
- id: show
|
||||
translation: "顯示"
|
||||
- id: comments
|
||||
translation: "評論"
|
@@ -1,4 +1,4 @@
|
||||
{{ define "main"}}
|
||||
{{ define "main" }}
|
||||
<div class="d-flex flex-fill">
|
||||
<div class="container-xxl my-auto">
|
||||
<div class="text-center">
|
||||
|
@@ -1,5 +1,12 @@
|
||||
{{- define "partials/optional-scripts.html" -}}
|
||||
{{- $modules := site.Params.modules.optional | intersect .Params.modules -}}
|
||||
{{ $page_modules := slice }}
|
||||
{{ if reflect.IsMap .Params.modules }}
|
||||
{{ $page_modules = .Params.modules }}
|
||||
{{ else }}
|
||||
{{ $page_modules = $page_modules | append .Params.modules }}
|
||||
{{ end }}
|
||||
|
||||
{{- $modules := site.Params.modules.optional | intersect $page_modules -}}
|
||||
{{- range $index, $mod := $modules -}}
|
||||
{{- $filename := printf "js/%s.bundle.js" $mod -}}
|
||||
{{- $match := printf "js/modules/%s/**.js" $mod -}}
|
||||
@@ -63,7 +70,9 @@
|
||||
<div class="d-flex flex-column {{ if $fullCover }} fullscreen{{ end }}{{ if .IsHome }} {{ .Site.Params.home.style }}{{ end }}">
|
||||
{{- partial "assets/navbar.html" (dict
|
||||
"page" .
|
||||
"fixed" (string site.Params.navigation.fixed)
|
||||
"fixed" site.Params.navigation.fixed
|
||||
"overlay" site.Params.navigation.overlay
|
||||
"overlayMode" site.Params.navigation.overlayMode
|
||||
"color" site.Params.navigation.color
|
||||
"style" (default "light" site.Params.navigation.style)
|
||||
"size" (default "md" site.Params.navigation.size))
|
||||
|
@@ -11,7 +11,7 @@
|
||||
<div class="container-xxl p-4 px-xxl-0">
|
||||
{{- if ne $layout "featured" -}}
|
||||
{{ if and (not $page.IsHome) site.Params.navigation.breadcrumb }}
|
||||
<div>{{ partial "assets/breadcrumb.html" $page }}</div>
|
||||
<div>{{ partial "assets/breadcrumb.html" (dict "page" $page) }}</div>
|
||||
{{ end -}}
|
||||
{{- end -}}
|
||||
|
||||
|
@@ -9,7 +9,7 @@
|
||||
{{ with .Title }}<p id="{{ anchorize . }}" class="display-4 mt-5{{ if and $.IsHome site.Params.home.centerHeadline }} text-center{{ end }}">{{ . }}</p>{{ end }}
|
||||
{{ end }}
|
||||
{{ if (.Params.menu) }}
|
||||
{{- partial "assets/section-menu.html" . -}}
|
||||
{{- partial "assets/section-menu.html" (dict "page" .) -}}
|
||||
{{- end -}}
|
||||
{{- $loading := "" -}}
|
||||
{{- if or (eq $layout "featured") .IsHome -}}
|
||||
|
@@ -1,19 +1,15 @@
|
||||
{{- define "partials/single-main.html" -}}
|
||||
{{- $breakpoint := $.Scratch.Get "breakpoint" -}}
|
||||
{{ if .Site.Params.navigation.breadcrumb }}{{ partial "assets/breadcrumb.html" . }}{{ end -}}
|
||||
{{ if .Site.Params.navigation.breadcrumb }}{{ partial "assets/breadcrumb.html" (dict "page" .) }}{{ end -}}
|
||||
|
||||
{{ .Render "single/header" }}
|
||||
|
||||
{{- if and .Site.Params.navigation.toc .Params.includeToc | default true -}}
|
||||
<div class="d-{{ $breakpoint.current }}-none pb-5">{{ partial "assets/toc-dropdown.html" . }}</div>
|
||||
<div class="d-{{ $breakpoint.current }}-none pb-5">{{ partial "assets/toc-dropdown.html" (dict "page" .) }}</div>
|
||||
{{- end -}}
|
||||
{{ .Render "single/body" }}
|
||||
|
||||
{{ .Render "single/footer" }}
|
||||
{{- if and .Site.Params.comments.enabled .Params.showComments | default true -}}
|
||||
<hr>
|
||||
{{ partial "assets/comments.html" . }}
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
|
||||
{{ define "main" -}}
|
||||
|
@@ -48,5 +48,5 @@
|
||||
</div>
|
||||
</div>
|
||||
{{- end -}}
|
||||
{{ partial "assets/sharing.html" . }}
|
||||
{{ partial "assets/sharing.html" (dict "page" .) }}
|
||||
<p class="lead mb-5 mt-3">{{ .Description }}</p>
|
||||
|
@@ -37,6 +37,6 @@
|
||||
{{ end }}
|
||||
|
||||
{{ if $toc }}
|
||||
{{ partial "assets/toc.html" (dict "page" . "download" $download) }}
|
||||
{{ partial "assets/toc.html" (dict "page" .) }}
|
||||
{{ end -}}
|
||||
</div>
|
||||
|
@@ -1,3 +1,3 @@
|
||||
{{ with .Title }}<p class="display-4 mt-5">{{ . }}</p>{{ end }}
|
||||
{{ partial "assets/sharing.html" . }}
|
||||
{{ partial "assets/sharing.html" (dict "page" .) }}
|
||||
<p class="lead mb-5">{{ .Description }}</p>
|
||||
|
@@ -1,3 +1,3 @@
|
||||
{{ with .Title }}<p class="display-4 mt-5">{{ . }}</p>{{ end }}
|
||||
{{ partial "assets/sharing.html" . }}
|
||||
{{ partial "assets/sharing.html" (dict "page" .) }}
|
||||
<p class="lead mb-5">{{ .Description }}</p>
|
||||
|
@@ -1,6 +1,24 @@
|
||||
<!--
|
||||
Copyright © 2024 The Hinode Team / Mark Dumay. All rights reserved.
|
||||
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
|
||||
Visit gethinode.com/license for more details.
|
||||
-->
|
||||
|
||||
{{ $error := false }}
|
||||
|
||||
<!-- Validate arguments -->
|
||||
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "breadcrumb" "args" . "group" "partial") }}
|
||||
{{- errorf "partial [assets/breadcrumb.html] - Invalid arguments" -}}
|
||||
{{ $error = true }}
|
||||
{{ end }}
|
||||
|
||||
<!-- Initialize arguments -->
|
||||
{{ $page := .page }}
|
||||
|
||||
<!-- Main code -->
|
||||
<nav aria-label="breadcrumb">
|
||||
<ol class="breadcrumb">
|
||||
{{- range $index, $item := .Page.Ancestors.Reverse -}}
|
||||
{{- range $index, $item := $page.Ancestors.Reverse -}}
|
||||
{{- $title := .LinkTitle -}}
|
||||
{{- if .IsHome }}{{ $title = T "home" }}{{ end -}}
|
||||
{{- $address := or .RelPermalink (.Params.Redirect | relLangURL) -}}
|
||||
@@ -10,6 +28,6 @@
|
||||
<li class="breadcrumb-item">{{ $title }}</li>
|
||||
{{ end }}
|
||||
{{- end -}}
|
||||
<li class="breadcrumb-item active" aria-current="page">{{ .Page.LinkTitle }}</li>
|
||||
<li class="breadcrumb-item active" aria-current="page">{{ $page.LinkTitle }}</li>
|
||||
</ol>
|
||||
</nav>
|
||||
|
@@ -1,73 +1,32 @@
|
||||
<!--
|
||||
Displays a button. The shortcode supports the following arguments:
|
||||
"title" Title of the button, required unless icon is set.
|
||||
"href" Optional address for the button or hyperlink.
|
||||
"id" Optional id of the button, to be used in the DOM.
|
||||
"state" Optional state of the button, either "enabled" (default), "disabled", "active", or "inactive".
|
||||
"size" Optional size of the button, either "sm", "md" (default), or "lg".
|
||||
"color" Optional theme color of the element, either "primary" (default), "secondary", "success",
|
||||
"danger", "warning", "info", "light", "dark", "white", or "black".
|
||||
"outline" Optional flag indicating the button should be outlined, either "false" (default) or "true".
|
||||
"badge" Optional positioned badge to display on top of the button.
|
||||
"label" Optional assistive label for the button or badge. The label is applied to the badge instead of the
|
||||
button when a badge has been defined. Default value of the button aria-label is its title.
|
||||
"tooltip" Optional text to display in a tooltip. Cannot be used together with collapse. Ignored for active/
|
||||
inactive buttons.
|
||||
"collapse" Optional panel to collapse. Cannot be used together with tooltip. Ignored for active/inactive buttons.
|
||||
"type" Optional type of the element, either "link" or "button" (default).
|
||||
"placement" Optional position of the tooltip: "top" (default), "bottom", "left", or "right".
|
||||
"class" Optional class attribute of the button element, e.g. “toc-button”.
|
||||
"icon" Font Awesome icon class attribute, required unless title is set. An example value is "fas sort".
|
||||
"order" Optional order of the icon, either "first" or "last" (default).
|
||||
"justify" Optional justification of the button title and icon, either "start", "end", "center" (default),
|
||||
"between", "around", or "evenly".
|
||||
"toast" Optional id of the toast to display when the button is clicked.
|
||||
"clipboard" Optional text to be copied to the clipboard when the button is clicked.
|
||||
"cue" Optional flag to indicate if an external link should show a visual cue, defaults to setting
|
||||
"main.externalLinks.cue" in the site's parameters.
|
||||
"tab" Optional flag to indicate if an external link should open in a new tab, defaults to setting
|
||||
"main.externalLinks.tab" in the site's parameters.
|
||||
"attributes" Optional dictionary of key-value pairs added as custom attributes to the button element ('<a>').
|
||||
"spacing" Optional flag to add spacing to the inline button, defaults to "true".
|
||||
Copyright © 2024 The Hinode Team / Mark Dumay. All rights reserved.
|
||||
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
|
||||
Visit gethinode.com/license for more details.
|
||||
-->
|
||||
|
||||
{{ $error := false }}
|
||||
|
||||
<!-- Validate arguments -->
|
||||
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "button" "args" . "group" "partial") }}
|
||||
{{- errorf "partial [assets/button.html] - Invalid arguments" -}}
|
||||
{{ $error = true }}
|
||||
{{ end }}
|
||||
|
||||
<!-- Initialize arguments -->
|
||||
{{- $title := trim .title " \r\n" -}}
|
||||
{{- $icon := .icon }}
|
||||
{{- if not (or $title $icon) -}}
|
||||
{{- errorf "partial [assets/button.html] - Missing element title or icon" -}}
|
||||
{{ $error = true }}
|
||||
{{- end -}}
|
||||
|
||||
{{- $id := .id }}
|
||||
|
||||
{{- $state := "enabled" -}}
|
||||
{{- with .state }}{{ $state = . }}{{ end -}}
|
||||
{{- $supportedStates := slice "enabled" "disabled" "active" "inactive" -}}
|
||||
{{- if not (in $supportedStates $state) -}}
|
||||
{{- errorf "partial [assets/button.html] - Invalid value for param 'state': %s" $state -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $size := "md" -}}
|
||||
{{- with .size }}{{ $size = . }}{{ end -}}
|
||||
{{- $supportedSizes := slice "sm" "md" "lg" -}}
|
||||
{{- if not (in $supportedSizes $size) -}}
|
||||
{{- errorf "partial [assets/button.html] - Invalid value for param 'size': %s" $size -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $color := "primary" -}}
|
||||
{{- with .color }}{{ $color = . }}{{ end -}}
|
||||
{{- $supportedColors := slice "primary" "secondary" "success" "danger" "warning" "info" "light" "dark" "white" "black" -}}
|
||||
{{- if not (in $supportedColors $color) -}}
|
||||
{{- errorf "partial [assets/button.html] - Invalid value for param 'color': %s" $color -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $outline := false -}}
|
||||
{{- with .outline }}{{ $outline = . }}{{ end -}}
|
||||
|
||||
{{- $badge := "" -}}
|
||||
{{- with .badge }}{{ $badge = . }}{{ end -}}
|
||||
|
||||
{{- $label := "" -}}
|
||||
{{- with .label }}{{ $label = . }}{{ end -}}
|
||||
{{- $state := .state | default "enabled" -}}
|
||||
{{- $size := .size | default "md" -}}
|
||||
{{- $color := .color | default "primary" -}}
|
||||
{{- $outline := .outline | default false -}}
|
||||
{{- $badge := .badge | default "" -}}
|
||||
{{- $label := .label | default $title -}}
|
||||
|
||||
{{- $tooltip := "" -}}
|
||||
{{- if not (strings.HasSuffix $state "active") -}}
|
||||
@@ -75,58 +34,28 @@
|
||||
{{- end -}}
|
||||
|
||||
{{- $href := .href -}}
|
||||
|
||||
{{- $collapse := "" -}}
|
||||
{{- if not (strings.HasSuffix $state "active") -}}
|
||||
{{- with .collapse }}{{ $collapse = . }}{{ $href = printf "#%s" . }}{{ end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if $tooltip -}}
|
||||
{{- if $collapse -}}
|
||||
{{- errorf "partial [assets/button.html] - Cannot use tooltip and collapse at the same time" -}}
|
||||
{{- end -}}
|
||||
{{- if and $tooltip $collapse -}}
|
||||
{{- errorf "partial [assets/button.html] - Cannot use tooltip and collapse at the same time" -}}
|
||||
{{ $error = true }}
|
||||
{{- end -}}
|
||||
|
||||
{{- $type := "button" -}}
|
||||
{{- with .type }}{{ $type = . }}{{ end -}}
|
||||
{{- $supportedTypes := slice "button" "link" -}}
|
||||
{{- if not (in $supportedTypes $type) -}}
|
||||
{{- errorf "partial [assets/button.html] - Invalid value for param 'type': %s" $type -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $placement := "top" -}}
|
||||
{{- with .placement }}{{ $placement = . }}{{ end -}}
|
||||
{{- $supportedPlacements := slice "top" "bottom" "left" "right" -}}
|
||||
{{- if not (in $supportedPlacements $placement) -}}
|
||||
{{- errorf "partial [assets/button.html] - Invalid value for param 'placement': %s" $placement -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $class := .class }}
|
||||
{{- $type := .type | default "button" -}}
|
||||
{{- $placement := .placement | default "top" -}}
|
||||
{{- $class := .class | default "" }}
|
||||
{{ with $badge }}{{ $class = printf "%s me-3" $class }}{{ end }}
|
||||
|
||||
{{- $order := "last" -}}
|
||||
{{- with .order }}{{ $order = . }}{{ end -}}
|
||||
{{- $supportedOrders := slice "first" "last" -}}
|
||||
{{- if not (in $supportedOrders $order) -}}
|
||||
{{- errorf "partial [assets/button.html] - Invalid value for param 'order': %s" $order -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $justify := "center" -}}
|
||||
{{- with .justify }}{{ $justify = . }}{{ end -}}
|
||||
{{- $supportedJustify := slice "start" "end" "center" "between" "around" "evenly" -}}
|
||||
{{- if not (in $supportedJustify $justify) -}}
|
||||
{{- errorf "partial [assets/button.html] - Invalid value for param 'justify': %s" $justify -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $order := .order | default "last" -}}
|
||||
{{- $justify := .justify | default "center" -}}
|
||||
{{- $toast := .toast -}}
|
||||
{{- $clipboard := .clipboard -}}
|
||||
|
||||
{{- $cue := .cue | default site.Params.main.externalLinks.cue -}}
|
||||
{{- $tab := .tab | default site.Params.main.externalLinks.tab -}}
|
||||
{{- $isExternal := ne (urls.Parse (absURL $href)).Host (urls.Parse site.BaseURL).Host -}}
|
||||
{{- $target := "" -}}
|
||||
{{- $rel := "" -}}
|
||||
|
||||
{{- $spacing := .spacing | default true -}}
|
||||
|
||||
{{- if $isExternal -}}
|
||||
@@ -143,31 +72,35 @@
|
||||
|
||||
{{- $attributes := .attributes -}}
|
||||
|
||||
<a aria-label="{{ (or $label $title) | safeHTML }}" {{ if ne $state "disabled" }}{{ with $href }}href="{{ . }}"{{ end }}{{ end -}}
|
||||
{{- with $id }} id="{{ . }}"{{ end -}}
|
||||
{{- with $target }} target="{{ . }}"{{ end }}{{ with $rel }} rel="{{ . }}"{{ end -}}
|
||||
{{- with $toast }} data-toast-target="{{ $toast }}"{{ end -}}
|
||||
{{- with $clipboard }} data-clipboard="{{ $clipboard }}"{{ end -}}
|
||||
{{- if eq $type "button" }} class="btn btn-{{ if $outline }}outline-{{ end }}{{ $color }} {{ if ne $size "md"}}btn-{{ $size }}{{ end }} position-relative {{ if in (slice "disabled" "active") $state }}{{ $state }}{{ end }} {{ $class -}}"
|
||||
role="button" {{ if eq $state "disabled" }}aria-disabled="true"{{ end -}}
|
||||
{{- else }} class="link-{{ $color }} position-relative {{ $class }}"{{ end -}}
|
||||
{{- with $tooltip }} data-bs-toggle="tooltip" data-bs-title="{{ . }}" data-bs-placement="{{ $placement }}"{{ end -}}
|
||||
{{- with $collapse }} data-bs-toggle="collapse" aria-expanded="false" aria-controls="{{ . }}"{{ end -}}
|
||||
{{- if eq $state "active" }} data-bs-toggle="button" aria-pressed="true"{{ end -}}
|
||||
{{- if eq $state "inactive" }} data-bs-toggle="button" aria-pressed="false"{{ end -}}
|
||||
{{- range $key, $val := $attributes -}}
|
||||
{{ printf " %s=\"%s\"" $key $val | safeHTMLAttr }}
|
||||
{{- end -}}
|
||||
>
|
||||
<div class="d-flex justify-content-{{ $justify }}">
|
||||
<div class="my-auto">{{ $title | safeHTML }}</div>
|
||||
{{- with $icon }}<div class="align-self-center{{ if $title }}{{ if eq $order "first" }} order-first pe-1{{ else }} ps-1{{ end }}{{ end }}">{{ partial "assets/icon.html" (dict "icon" $icon "spacing" false) }}</div>{{ end }}
|
||||
</div>
|
||||
<!-- Main code -->
|
||||
{{ if not $error }}
|
||||
<a aria-label="{{ (or $label $title) | safeHTML }}"
|
||||
{{ if ne $state "disabled" }}{{ with $href }}href="{{ . }}"{{ end }}{{ end -}}
|
||||
{{- with $id }} id="{{ . }}"{{ end -}}
|
||||
{{- with $target }} target="{{ . }}"{{ end }}{{ with $rel }} rel="{{ . }}"{{ end -}}
|
||||
{{- with $toast }} data-toast-target="{{ $toast }}"{{ end -}}
|
||||
{{- with $clipboard }} data-clipboard="{{ $clipboard }}"{{ end -}}
|
||||
{{- if eq $type "button" }} class="btn btn-{{ if $outline }}outline-{{ end }}{{ $color }} {{ if ne $size "md"}}btn-{{ $size }}{{ end }} position-relative {{ if in (slice "disabled" "active") $state }}{{ $state }}{{ end }} {{ $class -}}"
|
||||
role="button" {{ if eq $state "disabled" }}aria-disabled="true"{{ end -}}
|
||||
{{- else }} class="link-{{ $color }} position-relative {{ $class }}"{{ end -}}
|
||||
{{- with $tooltip }} data-bs-toggle="tooltip" data-bs-title="{{ . }}" data-bs-placement="{{ $placement }}"{{ end -}}
|
||||
{{- with $collapse }} data-bs-toggle="collapse" aria-expanded="false" aria-controls="{{ . }}"{{ end -}}
|
||||
{{- if eq $state "active" }} data-bs-toggle="button" aria-pressed="true"{{ end -}}
|
||||
{{- if eq $state "inactive" }} data-bs-toggle="button" aria-pressed="false"{{ end -}}
|
||||
{{- range $key, $val := $attributes -}}
|
||||
{{ printf " %s=\"%s\"" $key $val | safeHTMLAttr }}
|
||||
{{- end -}}
|
||||
>
|
||||
<div class="d-flex justify-content-{{ $justify }}">
|
||||
<div class="my-auto">{{ $title | safeHTML }}</div>
|
||||
{{- with $icon }}<div class="align-self-center{{ if $title }}{{ if eq $order "first" }} order-first pe-1{{ else }} ps-1{{ end }}{{ end }}">{{ partial "assets/icon.html" (dict "icon" $icon "spacing" false) }}</div>{{ end }}
|
||||
</div>
|
||||
|
||||
{{- with $badge }}
|
||||
<span class="position-absolute top-0 start-100 translate-middle badge rounded-pill bg-danger">
|
||||
{{ . }}
|
||||
{{ with $label }}<span class="visually-hidden">{{ . }}</span>{{ end }}
|
||||
</span>
|
||||
{{- end -}}
|
||||
</a>{{ if $spacing }} {{- end }}
|
||||
{{- with $badge }}
|
||||
<span class="position-absolute top-0 start-100 translate-middle badge rounded-pill bg-danger">
|
||||
{{ . }}
|
||||
{{ with $label }}<span class="visually-hidden">{{ . }}</span>{{ end }}
|
||||
</span>
|
||||
{{- end -}}
|
||||
</a>{{ if $spacing }} {{- end }}
|
||||
{{ end }}
|
@@ -1,141 +1,24 @@
|
||||
<!--
|
||||
Displays a grid of Bootstrap cards with 1 to 5 columns. The cards are rendered using a provided list of pages.
|
||||
Cards on the same row are aligned to each other. The grid renders pages up to a provided maximum amount. The
|
||||
remaining items are accessible via either a paginator or button to a list page (default behavior). Be aware a page
|
||||
can only contain one paginator at a time.
|
||||
|
||||
The shortcode supports the following arguments:
|
||||
"page" Required context of the current page.
|
||||
"list" Required array of pages.
|
||||
"cards" Optional string of rendered cards.
|
||||
"max" Required maximum number of cards to display.
|
||||
"cols" Required number of columns for the grid, must be a value between 1 and 5.
|
||||
"gutter" Gutter between columns in a group, either "0", "1", "2", "3", "4" (default), or "5".
|
||||
"title" Optional title of the card group.
|
||||
"paginate" Optional flag indicating if pagination should be added to the card group, if the list exceeds the
|
||||
maximum number of cards to display.
|
||||
"href" Optional address for the button or hyperlink. If set, a button is added if the list exceeds the
|
||||
maximum number of cards to display.
|
||||
"hrefTitle" Optional title of the button or hyperlink as companion to href.
|
||||
"separator" Optional flag to indicate a horizontal line should be added between items on small screens.
|
||||
"wrapper" Optional class attributes of the wrapper element, e.g. "p-4 px-xxl-0".
|
||||
"responsive" Optional flag if the number of columns should be responsive, defaults to "true".
|
||||
|
||||
In addition, the following arguments are passed to the individual cards.
|
||||
"class" Optional class attribute of the card element, e.g. “w-50”.
|
||||
"color": Optional theme color of the card, either "primary", "secondary", "success", "danger",
|
||||
"warning", "info", "light", "dark", or "body". By default, no color is specified.
|
||||
"padding": Optional padding of the content, either "0", "1", "2", "3", "4", "5", or "auto" (default).
|
||||
"header" Optional header components of the card, displayed in small caps. Supported values are "full"
|
||||
(default), "publication", "tags", and "none".
|
||||
"footer" Optional footer components of the card, displayed in small caps. Supported values are "full",
|
||||
"publication", "tags", and "none" (default).
|
||||
"orientation" Optional placecement of the thumbnail, either "stacked" (default), "horizontal", or "none".
|
||||
"ratio" Optional ratio of the thumbnail image, defaults to "16x9" (stacked orientation) or "1x1" (horizontal
|
||||
orientation).
|
||||
Copyright © 2024 The Hinode Team / Mark Dumay. All rights reserved.
|
||||
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
|
||||
Visit gethinode.com/license for more details.
|
||||
-->
|
||||
|
||||
<!-- Validate arguments -->
|
||||
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "card-group" "child" "card" "args" .) }}
|
||||
{{- errorf "partial [assets/card-group.html] - Invalid arguments" -}}
|
||||
{{ end }}
|
||||
|
||||
<!-- Initialize arguments and default values -->
|
||||
{{- $page := .page -}}
|
||||
{{- $breakpoint := partial "utilities/GetBreakpoint.html" -}}
|
||||
|
||||
{{- if not (in (slice "*hugolib.pageState" "*hugolib.pageForShortcode") (printf "%T" $page)) -}}
|
||||
{{- errorf "partial [assets/card-group.html] - Invalid value for param 'page': %T" $page -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $supportedTypes := slice "page.Pages" "resource.Resources" -}}
|
||||
{{ $pages := .list }}
|
||||
{{- if and $pages (not (in $supportedTypes (printf "%T" $pages))) -}}
|
||||
{{ warnf "Type: %T" $pages }}
|
||||
{{- errorf "partial [assets/card-group.html] - Invalid value for param 'list'" -}}
|
||||
{{- end -}}
|
||||
{{ $cards := .cards }}
|
||||
|
||||
{{- $paginate := false -}}
|
||||
{{- with .paginate -}}
|
||||
{{- if ne (printf "%T" .) "bool" -}}
|
||||
{{- errorf "partial [assets/card-group.html] - Invalid value for param 'paginate'" -}}
|
||||
{{- end -}}
|
||||
{{- $paginate = . -}}
|
||||
{{- end -}}
|
||||
|
||||
{{ $paginator := "" }}
|
||||
{{ if $paginate }}
|
||||
{{ $paginator = $page.Paginate $pages }}
|
||||
{{ $pages = first $paginator.PageSize (after (mul (sub $paginator.PageNumber 1) $paginator.PageSize) $pages) }}
|
||||
{{ end }}
|
||||
{{ $list := slice }}
|
||||
{{ range $index, $element := $pages }}
|
||||
{{ $params := dict }}
|
||||
<!-- regular page -->
|
||||
{{- if and $element.RelPermalink $element.File -}}
|
||||
{{- $params = merge $params (dict "path" $element.File.Path) -}}
|
||||
<!-- headless page -->
|
||||
{{- else -}}
|
||||
{{- $thumbnail := (or (and (reflect.IsMap $element.Params.Thumbnail) $element.Params.Thumbnail.url) $element.Params.Thumbnail) -}}
|
||||
{{- $params = merge $params (dict
|
||||
"title" $element.Title
|
||||
"href" $element.RelPermalink
|
||||
"description" (partial "utilities/GetDescription.html" $element)
|
||||
"thumbnail" $thumbnail
|
||||
"icon" $element.Params.icon
|
||||
) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $list = $list | append $params }}
|
||||
{{ end }}
|
||||
|
||||
{{- $count := len $list -}}
|
||||
{{- $max := $count -}}
|
||||
{{- with .max }}
|
||||
{{- if ne (printf "%T" .) "int" -}}
|
||||
{{- warnf "partial [assets/card-group.html] - Invalid value for param 'max': %s" . -}}
|
||||
{{- else -}}
|
||||
{{- $max = . -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- $max = math.Min $max $count -}}
|
||||
|
||||
{{- $responsive := .responsive | default true -}}
|
||||
{{- with .responsive -}}
|
||||
{{- if ne (printf "%T" .) "bool" -}}
|
||||
{{- errorf "partial [assets/card-group.html] - Invalid value for param 'responsive'" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $cols := string .cols | default "3" -}}
|
||||
{{- $supportedCols := slice "0" "1" "2" "3" "4" "5" "auto" -}}
|
||||
{{- if not (in $supportedCols $cols) -}}
|
||||
{{- errorf "partial [assets/card-group.html] - Invalid value for param 'cols': %s" $cols -}}
|
||||
{{- end -}}
|
||||
{{- $colGrid := "" -}}
|
||||
{{- if eq $cols "1" }}{{ $colGrid = "row-cols-1" -}}
|
||||
{{- else if eq $cols "2" }}{{ if $responsive }}{{ $colGrid = printf "row-cols-1 row-cols-%s-1 row-cols-%s-2" $breakpoint.prev $breakpoint.current }}{{ else }}{{ $colGrid = "row-cols-2" }}{{ end -}}
|
||||
{{- else if eq $cols "3" }}{{ if $responsive }}{{ $colGrid = printf "row-cols-1 row-cols-%s-2 row-cols-%s-3" $breakpoint.prev $breakpoint.current }}{{ else }}{{ $colGrid = "row-cols-3" }}{{ end -}}
|
||||
{{- else if eq $cols "4" }}{{ if $responsive }}{{ $colGrid = printf "row-cols-1 row-cols-%s-2 row-cols-%s-4" $breakpoint.prev $breakpoint.current }}{{ else }}{{ $colGrid = "row-cols-4" }}{{ end -}}
|
||||
{{- else if eq $cols "5" }}{{ if $responsive }}{{ $colGrid = printf "row-cols-1 row-cols-%s-3 row-cols-%s-5" $breakpoint.prev $breakpoint.current }}{{ else }}{{ $colGrid = "row-cols-5" }}{{ end -}}
|
||||
{{ end -}}
|
||||
|
||||
{{- $gutter := .gutter | default "4" -}}
|
||||
{{- $supportedGutters := slice "0" "1" "2" "3" "4" "5" -}}
|
||||
{{- if not (in $supportedGutters $gutter) -}}
|
||||
{{- errorf "partial [assets/card-group.html] - Invalid value for param 'gutter': %s" $gutter -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if not $paginate -}}
|
||||
{{- $list = first $max $list -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $paginate := .paginate | default false -}}
|
||||
{{- $moreURL := .href -}}
|
||||
{{- $moreTitle := .hrefTitle -}}
|
||||
|
||||
{{- $separator := false -}}
|
||||
{{- with .separator -}}
|
||||
{{- if ne (printf "%T" .) "bool" -}}
|
||||
{{- errorf "partial [assets/card-group.html] - Invalid value for param 'separator'" -}}
|
||||
{{- end -}}
|
||||
{{- $separator = . -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $gutter := .gutter | default 4 -}}
|
||||
{{- $separator := .separator | default false -}}
|
||||
{{- $class := .class -}}
|
||||
{{- $color := .color -}}
|
||||
{{- $padding := .padding -}}
|
||||
@@ -144,29 +27,80 @@
|
||||
{{- $orientation := .orientation -}}
|
||||
{{- $ratio := .ratio -}}
|
||||
{{- $wrapper := .wrapper | default "p-0" -}}
|
||||
|
||||
{{- $style := .style -}}
|
||||
{{- $align := .align -}}
|
||||
{{- $subtle := .subtle }}
|
||||
{{- $loading := .loading -}}
|
||||
{{- $validSettings := slice "lazy" "eager" -}}
|
||||
{{- if $loading -}}
|
||||
{{ if not (in $validSettings $loading) -}}
|
||||
{{- errorf "partial [assets/card-group.html] - Invalid value for param 'loading': %s" $loading -}}
|
||||
{{ end -}}
|
||||
|
||||
<!-- Override arguments -->
|
||||
{{ $isPages := in (slice "page.Pages" "resource.Resources") (printf "%T" $pages) }}
|
||||
{{ $paginator := "" }}
|
||||
{{ if and $isPages $paginate }}
|
||||
{{ $paginator = $page.Paginate $pages }}
|
||||
{{ $pages = first $paginator.PageSize (after (mul (sub $paginator.PageNumber 1) $paginator.PageSize) $pages) }}
|
||||
{{ end }}
|
||||
|
||||
{{ $list := slice }}
|
||||
{{ if $isPages }}
|
||||
{{ range $index, $element := $pages }}
|
||||
{{ $params := dict }}
|
||||
<!-- regular page -->
|
||||
{{- if and $element.RelPermalink $element.File -}}
|
||||
{{- $params = merge $params (dict "path" $element.File.Path) -}}
|
||||
<!-- headless page -->
|
||||
{{- else -}}
|
||||
{{- $thumbnail := (or (and (reflect.IsMap $element.Params.Thumbnail) $element.Params.Thumbnail.url) $element.Params.Thumbnail) -}}
|
||||
{{- $params = merge $params (dict
|
||||
"title" $element.Title
|
||||
"href" $element.RelPermalink
|
||||
"description" (partial "utilities/GetDescription.html" $element)
|
||||
"thumbnail" $thumbnail
|
||||
"icon" $element.Params.icon
|
||||
) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $list = $list | append $params }}
|
||||
{{ end }}
|
||||
{{ else if $pages }}
|
||||
{{ $list = $list | append $pages }}
|
||||
{{ end }}
|
||||
|
||||
{{- $count := len $list -}}
|
||||
{{- $max := $count -}}
|
||||
{{- $max = math.Min (.max | default $count) $count -}}
|
||||
{{- $responsive := .responsive | default true -}}
|
||||
{{- $cols := string .cols | default "3" -}}
|
||||
|
||||
{{- $colGrid := "" -}}
|
||||
{{- if eq $cols "1" }}{{ $colGrid = "row-cols-1" -}}
|
||||
{{- else if eq $cols "2" }}{{ if $responsive }}{{ $colGrid = printf "row-cols-1 row-cols-%s-1 row-cols-%s-2" $breakpoint.prev $breakpoint.current }}{{ else }}{{ $colGrid = "row-cols-2" }}{{ end -}}
|
||||
{{- else if eq $cols "3" }}{{ if $responsive }}{{ $colGrid = printf "row-cols-1 row-cols-%s-2 row-cols-%s-3" $breakpoint.prev $breakpoint.current }}{{ else }}{{ $colGrid = "row-cols-3" }}{{ end -}}
|
||||
{{- else if eq $cols "4" }}{{ if $responsive }}{{ $colGrid = printf "row-cols-1 row-cols-%s-2 row-cols-%s-4" $breakpoint.prev $breakpoint.current }}{{ else }}{{ $colGrid = "row-cols-4" }}{{ end -}}
|
||||
{{- else if eq $cols "5" }}{{ if $responsive }}{{ $colGrid = printf "row-cols-1 row-cols-%s-3 row-cols-%s-5" $breakpoint.prev $breakpoint.current }}{{ else }}{{ $colGrid = "row-cols-5" }}{{ end -}}
|
||||
{{ end -}}
|
||||
|
||||
{{- if not $paginate -}}
|
||||
{{- $list = first $max $list -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if and (eq $cols 1) (eq $orientation "horizontal") }}{{ $orientation = "horizontal-sm" }}{{ end -}}
|
||||
{{- if and (eq $cols "1") (eq $orientation "horizontal") }}{{ $orientation = "horizontal-sm" }}{{ end -}}
|
||||
|
||||
<!-- Main code -->
|
||||
<div class="container-fluid {{ $wrapper }}">
|
||||
<div class="row {{ $colGrid }} g-{{ $gutter }}">
|
||||
{{ range $index, $element := $list }}
|
||||
{{- $params := (dict
|
||||
"class" (printf "h-100 %s" $class)
|
||||
"color" $color
|
||||
"padding" $padding
|
||||
"header" $header
|
||||
"footer" $footer
|
||||
"orientation" $orientation
|
||||
"ratio" $ratio
|
||||
"header" $header
|
||||
"loading" $loading
|
||||
"orientation" $orientation
|
||||
"padding" $padding
|
||||
"ratio" $ratio
|
||||
"subtle" $subtle
|
||||
"style" $style
|
||||
"align" $align
|
||||
) -}}
|
||||
{{- $params = merge $params $element }}
|
||||
|
||||
@@ -179,7 +113,7 @@
|
||||
</div>
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- print $cards | safeHTML }}
|
||||
{{if $cards }}{{- print $cards | safeHTML }}{{ end }}
|
||||
</div>
|
||||
|
||||
{{ if $paginate }}
|
||||
|
@@ -1,31 +1,68 @@
|
||||
<!--
|
||||
Displays a Bootstrap card. Either specify a valid path, or set the arguments title, href, header, description, and
|
||||
thumbnail individually. The latter arguments override any page attributes.
|
||||
|
||||
The shortcode supports the following arguments:
|
||||
"path" Optional path of the page, override with other parameters.
|
||||
"title" Required title of the card.
|
||||
"href" Optional address for the button or hyperlink.
|
||||
"class" Optional class attribute of the card element, e.g. “w-50”.
|
||||
"color": Optional theme color of the card, either "primary", "secondary", "success", "danger",
|
||||
"warning", "info", "light", "dark", "white", "black", "body", or "body-tertiary". By default, no
|
||||
color is specified.
|
||||
"padding": Optional padding of the content, either "0", "1", "2", "3", "4", "5", or "auto" (default).
|
||||
"gutter" Gutter between columns in a group, either "0" (default), "1", "2", "3", "4", or "5".
|
||||
"header" Optional header components of the card, displayed in small caps. Supported values are "full"
|
||||
(default), "publication", "tags", and "none".
|
||||
"footer" Optional footer components of the card, displayed in small caps. Supported values are "full",
|
||||
"publication", "tags", and "none" (default).
|
||||
"description" Optional description of the card.
|
||||
"thumbnail" Optional thumbnail image url, displayed on top or the left of the card.
|
||||
"ratio" Optional ratio of the thumbnail image, defaults to "16x9" (stacked orientation) or "1x1" (horizontal
|
||||
orientation).
|
||||
"alt" Optional alternate text for the thumbnail, uses "title" by default.
|
||||
"icon" Optional Font Awesome icon, displayed on top or the left of the card.
|
||||
"orientation" Optional placecement of the thumbnail or icon, either "stacked" (default), "horizontal",
|
||||
"horizontal-sm" or "none".
|
||||
Copyright © 2024 The Hinode Team / Mark Dumay. All rights reserved.
|
||||
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
|
||||
Visit gethinode.com/license for more details.
|
||||
-->
|
||||
|
||||
<!-- Validate arguments -->
|
||||
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "card" "args" .) }}
|
||||
{{- errorf "partial [assets/card.html] - Invalid arguments" -}}
|
||||
{{ end }}
|
||||
|
||||
<!-- Initialize arguments and default values -->
|
||||
{{- $alt := .alt -}}
|
||||
{{- $class := .class -}}
|
||||
{{- $color := .color -}}
|
||||
{{- $description := .description -}}
|
||||
{{- $footer := .footer | default "none" -}}
|
||||
{{- $gutter := .gutter | default "0" -}}
|
||||
{{- $header := .header | default "full" -}}
|
||||
{{- $href := .href -}}
|
||||
{{- $icon := .icon -}}
|
||||
{{- $iconStyle := "" -}}
|
||||
{{- $align := .align | default "start" -}}
|
||||
{{- $style := .style | default "" -}}
|
||||
{{- $loading := .loading -}}
|
||||
{{- $orientation := .orientation | default "stacked" -}}
|
||||
{{- $padding := .padding | default "auto" -}}
|
||||
{{- $ratio := .ratio -}}
|
||||
{{- $thumbnail := .thumbnail -}}
|
||||
{{- $title := .title -}}
|
||||
{{- $subtle := .subtle -}}
|
||||
{{- $colorStyle := "" -}}
|
||||
{{ if $color }}
|
||||
{{ if $subtle }}
|
||||
{{- $colorStyle = printf "bg-%s-subtle text-%s-emphasis" $color $color -}}
|
||||
{{ else }}
|
||||
{{- $colorStyle = printf "bg-%s text-bg-%s" $color $color -}}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
<!-- Override arguments -->
|
||||
{{- $page := "" }}
|
||||
{{- if .path }}
|
||||
{{- $page = site.GetPage .path }}
|
||||
{{- if not $page }}
|
||||
{{- errorf "partial [assets/card.html] - Cannot find page: %s" .path -}}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- with $page -}}
|
||||
{{- if not $title }}{{ $title = .Title }}{{ end -}}
|
||||
{{- if not $href }}{{ $href = .RelPermalink }}{{ end -}}
|
||||
{{- if not $description }}{{ $description = partial "utilities/GetDescription.html" . }}{{ end -}}
|
||||
{{- if not $thumbnail }}{{ $thumbnail = (or (and (reflect.IsMap .Params.Thumbnail) .Params.Thumbnail.url) .Params.Thumbnail) }}{{ end -}}
|
||||
{{- if not $icon }}{{ $icon = .Params.icon }}{{ end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{ if (hasPrefix $orientation "horizontal") }}
|
||||
{{ if not $style }}{{ $style = "fa-fluid fa-fw" }}{{ end }}
|
||||
{{ else }}
|
||||
{{ if not $style }}{{ $style = "fa-4x" }}{{ end }}
|
||||
{{- $iconStyle = "pb-3" -}}
|
||||
{{ end }}
|
||||
|
||||
{{- if eq $orientation "none" }}{{ $thumbnail = "" }}{{ $icon = "" }}{{ end -}}
|
||||
|
||||
<!-- Inline partial to render the card's body -->
|
||||
{{- define "partials/card-body.html" -}}
|
||||
{{- $title := .title -}}
|
||||
@@ -77,97 +114,23 @@
|
||||
</small></p>
|
||||
{{- end -}}
|
||||
|
||||
{{- $page := "" }}
|
||||
{{- if .path }}
|
||||
{{- $page = site.GetPage .path }}
|
||||
{{- if not $page }}
|
||||
{{- errorf "partial [assets/card.html] - Cannot find page: %s" .path -}}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{- $title := .title -}}
|
||||
{{- $alt := .alt -}}
|
||||
{{- $href := .href -}}
|
||||
{{- $description := .description -}}
|
||||
{{- $thumbnail := .thumbnail -}}
|
||||
{{- $ratio := .ratio -}}
|
||||
{{- $icon := .icon -}}
|
||||
|
||||
{{- $color := "" -}}
|
||||
{{- with .color }}{{ $color = . }}{{ end -}}
|
||||
{{- if $color -}}
|
||||
{{- $supportedColors := slice "primary" "secondary" "success" "danger" "warning" "info" "light" "dark" "white" "black" "body" "body-tertiary" -}}
|
||||
{{- if not (in $supportedColors $color) -}}
|
||||
{{- errorf "partial [assets/card.html] - Invalid value for param 'color': %s" $color -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $header := "full" -}}
|
||||
{{- with .header }}{{ $header = . }}{{ end -}}
|
||||
{{- $supportedKeywords := slice "full" "publication" "tags" "none" -}}
|
||||
{{- if not (in $supportedKeywords $header) -}}
|
||||
{{- errorf "partial [assets/card.html] - Invalid value for param 'header': %s" $header -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $footer := "none" -}}
|
||||
{{- with .footer }}{{ $footer = . }}{{ end -}}
|
||||
{{- if not (in $supportedKeywords $footer) -}}
|
||||
{{- errorf "partial [assets/card.html] - Invalid value for param 'footer': %s" $footer -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- with $page -}}
|
||||
{{- if not $title }}{{ $title = .Title }}{{ end -}}
|
||||
{{- if not $href }}{{ $href = .RelPermalink }}{{ end -}}
|
||||
{{- if not $description }}{{ $description = partial "utilities/GetDescription.html" . }}{{ end -}}
|
||||
{{- if not $thumbnail }}{{ $thumbnail = (or (and (reflect.IsMap .Params.Thumbnail) .Params.Thumbnail.url) .Params.Thumbnail) }}{{ end -}}
|
||||
{{- if not $icon }}{{ $icon = .Params.icon }}{{ end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $class := .class -}}
|
||||
|
||||
{{- $padding := "auto" -}}
|
||||
{{- with .padding }}{{ $padding = . }}{{ end -}}
|
||||
{{- $supportedPaddings := slice "0" "1" "2" "3" "4" "5" "auto" -}}
|
||||
{{- if not (in $supportedPaddings $padding) -}}
|
||||
{{- errorf "partial [assets/card.html] - Invalid value for param 'padding': %s" $padding -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $gutter := .gutter | default "0" -}}
|
||||
{{ $supportedGutters:= slice "0" "1" "2" "3" "4" "5" -}}
|
||||
{{ if not (in $supportedGutters $gutter) -}}
|
||||
{{- errorf "partial [assets/card.html] - Invalid value for param 'gutter': %s" $gutter -}}
|
||||
{{ end -}}
|
||||
|
||||
{{- $orientation := "stacked" -}}
|
||||
{{- with .orientation }}{{ $orientation = . }}{{ end -}}
|
||||
{{- $supportedOrientations := slice "stacked" "horizontal" "horizontal-sm" "none" -}}
|
||||
{{- if not (in $supportedOrientations $orientation) -}}
|
||||
{{- errorf "partial [assets/card.html] - Invalid value for param 'orientation': %s" $orientation -}}
|
||||
{{- end -}}
|
||||
{{- if eq $orientation "none" }}{{ $thumbnail = "" }}{{ $icon = "" }}{{ end -}}
|
||||
|
||||
{{- $loading := .loading -}}
|
||||
{{- $validSettings := slice "lazy" "eager" -}}
|
||||
{{- if $loading -}}
|
||||
{{ if not (in $validSettings $loading) -}}
|
||||
{{- errorf "partial [assets/card.html] - Invalid value for param 'loading': %s" $loading -}}
|
||||
{{ end -}}
|
||||
{{- end -}}
|
||||
|
||||
<!-- Main code -->
|
||||
{{ if ne $gutter "0" }}<div class="g-{{ $gutter }}">{{ end }}
|
||||
|
||||
{{- if hasPrefix $orientation "horizontal" -}}
|
||||
<div class="card {{ with $color }}bg-{{ . }} text-bg-{{ . }}{{ end }} {{ $class }}">
|
||||
<!-- Render horizontal card -->
|
||||
<div class="card {{ $colorStyle }} {{ $class }}">
|
||||
<div class="row g-0 row-cols-1 h-100">
|
||||
<div class="col-4{{ if eq $orientation "horizontal-sm" }} col-md-2{{ end }}">
|
||||
<div class="{{ if eq $orientation "horizontal-sm" }}col-4 col-md-2{{ else }}col-4{{ end }}">
|
||||
{{- if $thumbnail -}}
|
||||
{{- partial "assets/image.html" (dict "url" $thumbnail "ratio" (or $ratio "1x1") "outerClass" "h-100 card-img-wrap" "innerClass" "rounded-start card-img-h100" "title" $title "loading" $loading) -}}
|
||||
{{- partial "assets/image.html" (dict "url" $thumbnail "ratio" (or $ratio "1x1") "wrapper" "h-100 card-img-wrap" "class" "rounded-start card-img-h100" "title" $title "loading" $loading) -}}
|
||||
{{- else if $icon -}}
|
||||
<div class="card-icon p-{{ $padding }} h-100 fa-wrapper d-flex align-items-center justify-content-center">
|
||||
{{- partial "assets/icon.html" (dict "icon" (printf "%s fa-fluid fa-fw" $icon)) -}}
|
||||
<div class="card-icon p-{{ $padding }} h-100 fa-wrapper d-flex align-items-{{ $align}} justify-content-center {{ $iconStyle }}">
|
||||
{{- partial "assets/icon.html" (dict "icon" (printf "%s %s" $icon $style)) -}}
|
||||
</div>
|
||||
{{- end -}}
|
||||
</div>
|
||||
<div class="col-8{{ if eq $orientation "horizontal-sm" }} col-md-10{{ end }}">
|
||||
<div class="{{ if eq $orientation "horizontal-sm" }}col-8 col-md-10{{ else }}col-8{{ end }}">
|
||||
<div class="card-body d-flex p-{{ $padding }} flex-column h-100">
|
||||
{{ if $page }}<div>{{ partial "card-caption.html" (dict "page" $page "keywords" $header "color" $color) }}</div>{{ end }}
|
||||
<div class="h-100">
|
||||
@@ -179,12 +142,13 @@
|
||||
</div>
|
||||
</div>
|
||||
{{- else -}}
|
||||
<div class="card {{ with $color }}bg-{{ . }} text-bg-{{ . }}{{ end }} {{ $class }}">
|
||||
<!-- Render stacked / default card -->
|
||||
<div class="card {{ $colorStyle }} {{ $class }} text-{{ $align }}">
|
||||
{{- if $thumbnail -}}
|
||||
{{- partial "assets/image.html" (dict "url" $thumbnail "ratio" (or $ratio "16x9") "outerClass" "card-img-wrap" "innerClass" "card-img-top" "title" (or $alt $title) "loading" $loading) -}}
|
||||
{{- partial "assets/image.html" (dict "url" $thumbnail "ratio" (or $ratio "16x9") "wrapper" "card-img-wrap" "class" "card-img-top" "title" (or $alt $title) "loading" $loading) -}}
|
||||
{{- else if $icon -}}
|
||||
<div class="card-icon p-{{ $padding }}">
|
||||
{{- partial "assets/icon.html" (dict "icon" (printf "%s fa-4x" $icon)) -}}
|
||||
<div class="card-icon p-{{ $padding }} {{ $iconStyle }} text-{{ $align }}">
|
||||
{{- partial "assets/icon.html" (dict "icon" (printf "%s %s" $icon $style)) -}}
|
||||
</div>
|
||||
{{- end -}}
|
||||
<div class="card-body d-flex flex-column p-{{ $padding }}">
|
||||
@@ -194,4 +158,5 @@
|
||||
</div>
|
||||
</div>
|
||||
{{- end -}}
|
||||
|
||||
{{ if ne $gutter "0" }}</div>{{ end }}
|
||||
|
@@ -1,20 +1,29 @@
|
||||
<!--
|
||||
Copyright © 2024 The Hinode Team / Mark Dumay. All rights reserved.
|
||||
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
|
||||
Visit gethinode.com/license for more details.
|
||||
-->
|
||||
|
||||
{{ $error := false }}
|
||||
|
||||
<!-- Validate arguments -->
|
||||
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "carousel-item" "args" . "group" "partial") }}
|
||||
{{- errorf "partial [assets/carousel-item.html] - Invalid arguments" -}}
|
||||
{{ $error = true }}
|
||||
{{ end }}
|
||||
|
||||
<!-- Initialize arguments -->
|
||||
{{- $page := .page -}}
|
||||
{{- $active := .active -}}
|
||||
{{- $src := .src -}}
|
||||
{{- $caption := .caption -}}
|
||||
{{- $ratio := .ratio -}}
|
||||
{{- $portrait := .portrait -}}
|
||||
{{- $loading := .loading | default "eager" -}}
|
||||
|
||||
{{- $loading := .loading -}}
|
||||
{{- $validSettings := slice "lazy" "eager" -}}
|
||||
{{- if $loading -}}
|
||||
{{ if not (in $validSettings $loading) -}}
|
||||
{{- errorf "partial [assets/carousel-item.html] - Invalid value for param 'loading': %s" $loading -}}
|
||||
{{ end -}}
|
||||
{{- end -}}
|
||||
|
||||
<!-- Main code -->
|
||||
<div class="carousel-item{{ if $active }} active{{ end }}" {{ if not $active }} fetchpriority="low"{{ end }}>
|
||||
{{ partial "assets/image.html" (dict "url" $src "ratio" $ratio "page" $page "innerClass" "d-block w-100" "portrait" $portrait "loading" $loading) }}
|
||||
{{ partial "assets/image.html" (dict "url" $src "ratio" $ratio "page" $page "class" "d-block w-100" "portrait" $portrait "loading" $loading) }}
|
||||
<div class="carousel-caption gradient"></div>
|
||||
{{ with $caption }}
|
||||
<div class="carousel-caption d-none d-md-block">
|
||||
|
@@ -1,12 +0,0 @@
|
||||
{{- $params := .Site.Params.comments -}}
|
||||
{{- with $params -}}
|
||||
<h2>{{ T "comments" }}</h2>
|
||||
<script src="https://utteranc.es/client.js"
|
||||
repo="{{ $params.repo }}"
|
||||
issue-term="{{ default "pathname" $params.issueTerm }}"
|
||||
label="{{ default "comment" $params.label }}"
|
||||
theme="{{ default "github-light" $params.theme }}"
|
||||
crossorigin="anonymous"
|
||||
async>
|
||||
</script>
|
||||
{{- end -}}
|
@@ -1,80 +1,37 @@
|
||||
<!--
|
||||
Render a local or remote image with responsive image sizing. Images are resized using default media breakpoints
|
||||
and are converted to webp format. The image is processed using the quality setting specified in the [imaging]
|
||||
section of the main config file (defaults to 75). A fallback image is provided for older browsers. The image is
|
||||
wrapped in a figure if a caption is provided, else the image is wrapped in a div with a ratio constraint.
|
||||
|
||||
If the url starts with 'http', the image is retrieved from an external location. Else, the url is matched with a
|
||||
page resource and site asset (in that order). The path of a remote image is rewritten to ensure processed files are
|
||||
stored in the final '/img' folder.
|
||||
|
||||
The partial supports the following bitmap image formats: "png", "jpeg", "gif", "tiff", "bmp", and "webp". Vector
|
||||
graphics of type "svg" are supported too, although these images do no support additional processing. This means
|
||||
the arguments "ratio" and "portrait" have no effect for vector images. Vector graphics support an optional anchor
|
||||
"#" in their url to denote a styling reference.
|
||||
|
||||
The partial supports the following arguments:
|
||||
"url": Required path or url of the image, e.g. "img/example.jpg"
|
||||
"mode": Optional flag indicating if the image should support color modes.
|
||||
"ratio": Optional ratio of the image, either "1x1", "3x2", "4x3", "16x9", or "21x9". If set, the image is
|
||||
resized and cropped to match the ratio. Else the original aspect ratio of the image is kept. Not
|
||||
applicable to vector graphics.
|
||||
"portrait": Optional flag to adjust the ratio from landscape to portrait. The image itself is not rotated, only
|
||||
the crop area is adjusted. Not applicable to vector graphics.
|
||||
"loading": Optional loading behavior of the image, either "eager" (default) or "lazy". The loading of lazily
|
||||
loaded images is deferred until the image is within scrolling range of the viewport. This should
|
||||
reduce the initial loading time of the website. It is recommended to lazily load only those images
|
||||
that are below the page fold.
|
||||
"priority": Optional fetch priority of the image, either "high", "low", or "auto" (default). The priority
|
||||
provides a hint to the browser on how it should prioritize the fetch of the image relative to other
|
||||
images. The implementation is experimental and currently only supported by Chrome, Edge, and Opera.
|
||||
(https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/fetchpriority#browser_compatibility).
|
||||
"outerClass": Optional class attribute of the outer div element, e.g. "img-wrap".
|
||||
"innerClass": Optional class attribute of the inner img element, e.g. "rounded".
|
||||
"title": Optional alternate text of the image.
|
||||
"caption": Optional figure caption.
|
||||
"page": Optional page context, used to match page resources.
|
||||
Copyright © 2024 The Hinode Team / Mark Dumay. All rights reserved.
|
||||
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
|
||||
Visit gethinode.com/license for more details.
|
||||
-->
|
||||
|
||||
{{ $error := false }}
|
||||
|
||||
<!-- Validate arguments -->
|
||||
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "image" "args" . "group" "partial") }}
|
||||
{{ errorf "partial [assets/image.html] - Invalid arguments" -}}
|
||||
{{ $error = true }}
|
||||
{{ end }}
|
||||
|
||||
<!-- Initialize arguments -->
|
||||
{{ $destination := .destination }}
|
||||
|
||||
<!-- Initialize arguments -->
|
||||
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
|
||||
{{- $validRatios := slice "1x1" "3x2" "4x3" "16x9" "21x9" -}}
|
||||
{{- $ratio := .ratio -}}
|
||||
{{- if $ratio -}}
|
||||
{{ if not (in $validRatios $ratio) -}}
|
||||
{{- errorf "partial [assets/image.html] - Invalid value for param 'ratio'" -}}
|
||||
{{ end -}}
|
||||
{{- end -}}
|
||||
{{- $portrait := .portrait -}}
|
||||
{{- $url := .url -}}
|
||||
|
||||
{{- $mode := false -}}
|
||||
{{- with .mode }}{{ $mode = . }}{{ end -}}
|
||||
{{- $outerClass := .outerClass -}}
|
||||
{{- $innerClass := .innerClass -}}
|
||||
{{- $mode := .mode -}}
|
||||
{{- $modes := site.Params.main.modes | default (slice "light" "dark") -}}
|
||||
{{- $wrapper := .wrapper -}}
|
||||
{{- $class := .class -}}
|
||||
{{- $title := .title -}}
|
||||
{{- $caption := .caption -}}
|
||||
{{- if ne (printf "%T" $mode) "bool" -}}
|
||||
{{- errorf "partial [assets/image.html] - Invalid value for param 'mode'" -}}
|
||||
{{- end -}}
|
||||
{{- $modes := site.Params.main.modes | default (slice "light" "dark") -}}
|
||||
{{- $page := .page -}}
|
||||
|
||||
{{- $loading := .loading -}}
|
||||
{{- $validSettings := slice "lazy" "eager" -}}
|
||||
{{- if $loading -}}
|
||||
{{ if not (in $validSettings $loading) -}}
|
||||
{{- errorf "partial [assets/image.html] - Invalid value for param 'loading'" -}}
|
||||
{{ end -}}
|
||||
{{- end -}}
|
||||
{{- $lazy := eq $loading "lazy" -}}
|
||||
|
||||
{{- $priority := .priority -}}
|
||||
{{- $validPriorities := slice "high" "low" "auto" -}}
|
||||
{{- if $priority -}}
|
||||
{{ if not (in $validPriorities $priority) -}}
|
||||
{{- errorf "partial [assets/image.html] - Invalid value for param 'priority'" -}}
|
||||
{{ end -}}
|
||||
{{- end -}}
|
||||
{{- if eq $priority "auto" }}{{ $priority = "" }}{{ end -}}
|
||||
|
||||
{{- define "partials/image-portrait.html" -}}
|
||||
@@ -137,7 +94,6 @@
|
||||
{{- return $fallback -}}
|
||||
{{- end -}}
|
||||
|
||||
|
||||
<!-- Generate a image set of type webp -->
|
||||
{{- define "partials/image-scaled.html " -}}
|
||||
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
|
||||
@@ -198,8 +154,8 @@
|
||||
{{- $ratio := .ratio -}}
|
||||
{{- $portrait := .portrait -}}
|
||||
{{- $url := .url -}}
|
||||
{{- $outerClass := .outerClass -}}
|
||||
{{- $innerClass := .innerClass -}}
|
||||
{{- $wrapper := .wrapper -}}
|
||||
{{- $class := .class -}}
|
||||
{{- $title := .title -}}
|
||||
{{- $caption := .caption -}}
|
||||
{{- $fallbackURL := "" -}}
|
||||
@@ -234,7 +190,7 @@
|
||||
{{- $img := "" -}}
|
||||
{{ with $res }}
|
||||
{{ $img = $res.resource }}
|
||||
{{ if $res.mirror }}{{ $innerClass = printf "%s mirrorred" $innerClass }}{{ end }}
|
||||
{{ if $res.mirror }}{{ $class = printf "%s mirrorred" $class }}{{ end }}
|
||||
{{ end }}
|
||||
{{- if $img -}}
|
||||
{{- $fallback := partial "partials/image-default.html" (dict "img" $img "ratio" $ratio "portrait" $portrait) -}}
|
||||
@@ -249,7 +205,7 @@
|
||||
|
||||
{{- range $none := $modes -}}
|
||||
{{- if ne $none $mode -}}
|
||||
{{- $outerClass = printf "%s d-none-%s" (or $outerClass "") $none -}}
|
||||
{{- $wrapper = printf "%s d-none-%s" (or $wrapper "") $none -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
@@ -268,11 +224,11 @@
|
||||
{{- end }}
|
||||
|
||||
{{- if $caption -}}
|
||||
<figure {{ with $outerClass }}class="{{ . }}"{{ end }}>
|
||||
<figure {{ with $wrapper }}class="{{ . }}"{{ end }}>
|
||||
{{ end }}
|
||||
<div class="{{ if not $caption }}{{ $outerClass }}{{ end }}">
|
||||
<div class="{{ if not $caption }}{{ $wrapper }}{{ end }}">
|
||||
{{- if not $anchor -}}
|
||||
<img class="img-fluid {{ $innerClass }}"
|
||||
<img class="img-fluid {{ $class }}"
|
||||
src="{{ $fallbackURL }}"
|
||||
{{ if $lazy }}loading="lazy"{{ end }}
|
||||
{{ with $priority }}fetchpriority="{{ . }}"{{ end }}
|
||||
@@ -281,7 +237,7 @@
|
||||
{{ with $width }}width="{{ . }}"{{ end }}
|
||||
{{ with $title }}alt="{{ . }}"{{ end }}>
|
||||
{{- else }}
|
||||
<svg class="{{ $innerClass }}">
|
||||
<svg class="{{ $class }}">
|
||||
<use href="{{ $fallbackURL }}#{{ $anchor }}"></use>
|
||||
</svg>
|
||||
{{ end }}
|
||||
@@ -292,14 +248,13 @@
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
|
||||
<!-- Initiate the regular or color-mode image -->
|
||||
{{ $params := dict }}
|
||||
{{- $params = merge $params (dict
|
||||
"ratio" $ratio
|
||||
"portrait" $portrait
|
||||
"outerClass" $outerClass
|
||||
"innerClass" $innerClass
|
||||
"wrapper" $wrapper
|
||||
"class" $class
|
||||
"title" $title
|
||||
"caption" $caption
|
||||
"lazy" $lazy
|
||||
|
@@ -1,9 +1,20 @@
|
||||
{{ $destination := .destination }}
|
||||
{{- if not $destination -}}
|
||||
{{- errorf "partial [utilities/link.html] - Missing param 'destination'" -}}
|
||||
{{- end -}}
|
||||
<!--
|
||||
Copyright © 2024 The Hinode Team / Mark Dumay. All rights reserved.
|
||||
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
|
||||
Visit gethinode.com/license for more details.
|
||||
-->
|
||||
|
||||
{{ $error := false -}}
|
||||
|
||||
<!-- Validate arguments -->
|
||||
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "link" "args" . "group" "partial") }}
|
||||
{{ errorf "partial [assets/link.html] - Invalid arguments" -}}
|
||||
{{ $error = true }}
|
||||
{{ end }}
|
||||
|
||||
<!-- Initialize arguments -->
|
||||
{{ $destination := .destination }}
|
||||
|
||||
{{- $error := false -}}
|
||||
{{- $target := "" -}}
|
||||
{{- $rel := "" -}}
|
||||
{{- $case := .case | default true }}
|
||||
@@ -15,6 +26,7 @@
|
||||
{{- $text := .text -}}
|
||||
{{- $class := .class -}}
|
||||
|
||||
<!-- Main code -->
|
||||
{{- if $isExternal -}}
|
||||
{{- if not $text -}}
|
||||
{{- $text = (urls.Parse (absURL $destination)).Host -}}
|
||||
@@ -33,7 +45,7 @@
|
||||
{{- if strings.Contains $destination "#" }}
|
||||
{{ $segments := split $destination "#" }}
|
||||
{{- if ne (len $segments) 2 }}
|
||||
{{- errorf "partial [utilities/link.html] - Malformed path, expected one anchor '#' only: %s" $destination -}}
|
||||
{{- errorf "partial [assets/link.html] - Malformed path, expected one anchor '#' only: %s" $destination -}}
|
||||
{{ else }}
|
||||
{{- $destination = index $segments 0 -}}
|
||||
{{- $anchor = index $segments 1 -}}
|
||||
@@ -42,7 +54,7 @@
|
||||
|
||||
{{ $ref := partial "utilities/GetPage.html" (dict "url" $destination "page" $page) }}
|
||||
{{- if not $ref -}}
|
||||
{{- errorf "partial [utilities/link.html] - Cannot find page: %s" $destination -}}
|
||||
{{- errorf "partial [assets/link.html] - Cannot find page: %s" $destination -}}
|
||||
{{- $error = true -}}
|
||||
{{- else -}}
|
||||
{{- $destination = $ref.RelPermalink -}}
|
@@ -1,17 +1,7 @@
|
||||
<!--
|
||||
Displays a list items with a thumbnail alternating between left and right alignment. The partial supports the
|
||||
following arguments:
|
||||
"page" Required context of the current page.
|
||||
"list" Required array of pages.
|
||||
"title" Optional title of the card group.
|
||||
"type" Optional type of the tab group, either "tabs", "pills", or "underline".
|
||||
"vertical" Optional flag to show vertical tabs instead of horizontal tabs (default).
|
||||
"class": Optional class attribute of the tab group, e.g. “nav-fill”.
|
||||
|
||||
In addition, the following arguments are passed to the individual tabs.
|
||||
"class" Optional class attribute of the tab element, e.g. “w-50”.
|
||||
"color": Optional theme color of the tab, either "primary", "secondary", "success", "danger",
|
||||
"warning", "info", "light", "dark", or "body". By default, no color is specified.
|
||||
Copyright © 2024 The Hinode Team / Mark Dumay. All rights reserved.
|
||||
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
|
||||
Visit gethinode.com/license for more details.
|
||||
-->
|
||||
|
||||
<!-- Inline partial to render the list item's content -->
|
||||
@@ -30,70 +20,66 @@
|
||||
{{- $mode := .mode -}}
|
||||
{{- $title := .title -}}
|
||||
{{- $loading := .loading -}}
|
||||
{{- partial "assets/image.html" (dict "url" $thumbnail "title" $title "outerClass" $style "mode" $mode "loading" $loading) -}}
|
||||
{{- partial "assets/image.html" (dict "url" $thumbnail "title" $title "wrapper" $style "mode" $mode "loading" $loading) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{ $error := false }}
|
||||
|
||||
<!-- Validate arguments -->
|
||||
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "list" "args" . "group" "partial") }}
|
||||
{{- errorf "partial [assets/list.html] - Invalid arguments" -}}
|
||||
{{ $error = true }}
|
||||
{{ end }}
|
||||
|
||||
<!-- Initialize arguments -->
|
||||
{{- $page := .page -}}
|
||||
{{- if ne (printf "%T" $page) "*hugolib.pageState" -}}
|
||||
{{- errorf "partial [assets/list.html] - Invalid value for param 'page'" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $supportedTypes := slice "page.Pages" "resource.Resources" -}}
|
||||
{{ $list := .list }}
|
||||
{{- if not (in $supportedTypes (printf "%T" $list)) -}}
|
||||
{{- errorf "partial [assets/list.html] - Invalid value for param 'list'" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $list := .list -}}
|
||||
{{- $title := .title -}}
|
||||
{{- $class := .class -}}
|
||||
{{- $color := .color -}}
|
||||
{{- $loading := .loading -}}
|
||||
|
||||
{{ $vertical := false }}
|
||||
{{ $type := "pills" }}
|
||||
|
||||
{{- $loading := .loading -}}
|
||||
{{- $validSettings := slice "lazy" "eager" -}}
|
||||
{{- if $loading -}}
|
||||
{{ if not (in $validSettings $loading) -}}
|
||||
{{- errorf "partial [assets/list.html] - Invalid value for param 'loading': %s" $loading -}}
|
||||
{{ end -}}
|
||||
{{- end -}}
|
||||
|
||||
<div class="d-none d-md-block p-0">
|
||||
{{- range $index, $item := $list -}}
|
||||
{{- $odd := eq (mod $index 2) 1 -}}
|
||||
{{- $thumbnail := (or (and (reflect.IsMap $item.Params.Thumbnail) $item.Params.Thumbnail.url) $item.Params.Thumbnail) -}}
|
||||
<div class="container ratio-section d-flex flex-column">
|
||||
<div class="row pt-5 pb-5 align-items-center flex-fill row-cols-2">
|
||||
<div class="col-6{{ if $odd }} order-last{{ end }}">
|
||||
{{- $style := "reveal fade-bottom" -}}
|
||||
{{ if $item.Params.tilted }}
|
||||
{{- $style = "reveal fade-bottom-n5 rotate-n5 ps-3" -}}
|
||||
{{- if $odd }}{{ $style = "reveal fade-bottom-5 rotate-5 pe-3" }}{{ end }}
|
||||
{{ end }}
|
||||
{{ partial "partials/list-img.html" (dict "thumbnail" $thumbnail "title" $item.Title "style" $style "mode" $item.Params.colormode "loading" $loading) }}
|
||||
</div>
|
||||
<div class="col-6{{ if $odd }} order-first{{ end }} psw-lg-5 p-5">
|
||||
{{ partial "partials/list-content.html" (dict "title" $item.Title "content" (or $item.Description $item.Content)) }}
|
||||
<!-- Main code -->
|
||||
{{ if not $error }}
|
||||
<div class="d-none d-md-block p-0">
|
||||
{{- range $index, $item := $list -}}
|
||||
{{- $odd := eq (mod $index 2) 1 -}}
|
||||
{{- $thumbnail := (or (and (reflect.IsMap $item.Params.Thumbnail) $item.Params.Thumbnail.url) $item.Params.Thumbnail) -}}
|
||||
<div class="container ratio-section d-flex flex-column">
|
||||
<div class="row pt-5 pb-5 align-items-center flex-fill row-cols-2">
|
||||
<div class="col-6{{ if $odd }} order-last{{ end }}">
|
||||
{{- $style := "reveal fade-bottom" -}}
|
||||
{{ if $item.Params.tilted }}
|
||||
{{- $style = "reveal fade-bottom-n5 rotate-n5 ps-3" -}}
|
||||
{{- if $odd }}{{ $style = "reveal fade-bottom-5 rotate-5 pe-3" }}{{ end }}
|
||||
{{ end }}
|
||||
{{ partial "partials/list-img.html" (dict "thumbnail" $thumbnail "title" $item.Title "style" $style "mode" $item.Params.colormode "loading" $loading) }}
|
||||
</div>
|
||||
<div class="col-6{{ if $odd }} order-first{{ end }} psw-lg-5 p-5">
|
||||
{{ partial "partials/list-content.html" (dict "title" $item.Title "content" (or $item.Description $item.Content)) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ end -}}
|
||||
</div>
|
||||
{{ end -}}
|
||||
</div>
|
||||
|
||||
<div class="d-md-none">
|
||||
{{- range $index, $item := $list -}}
|
||||
{{- $odd := eq (mod $index 2) 1 -}}
|
||||
{{- $thumbnail := (or (and (reflect.IsMap $item.Params.Thumbnail) $item.Params.Thumbnail.url) $item.Params.Thumbnail) -}}
|
||||
<div class="container d-flex flex-column">
|
||||
<div class="row pt-5 pb-5 align-items-center flex-fill row-cols-2">
|
||||
<div class="col-12 text-center">
|
||||
{{ partial "partials/list-img.html" (dict "thumbnail" $thumbnail "title" $item.Title "mode" $item.Params.colormode "loading" $loading) }}
|
||||
</div>
|
||||
<div class="col-12 p-3">
|
||||
{{ partial "partials/list-content.html" (dict "title" $item.Title "content" (partial "utilities/GetDescription.html" $item)) }}
|
||||
<div class="d-md-none">
|
||||
{{- range $index, $item := $list -}}
|
||||
{{- $odd := eq (mod $index 2) 1 -}}
|
||||
{{- $thumbnail := (or (and (reflect.IsMap $item.Params.Thumbnail) $item.Params.Thumbnail.url) $item.Params.Thumbnail) -}}
|
||||
<div class="container d-flex flex-column">
|
||||
<div class="row pt-5 pb-5 align-items-center flex-fill row-cols-2">
|
||||
<div class="col-12 text-center">
|
||||
{{ partial "partials/list-img.html" (dict "thumbnail" $thumbnail "title" $item.Title "mode" $item.Params.colormode "loading" $loading) }}
|
||||
</div>
|
||||
<div class="col-12 p-3">
|
||||
{{ partial "partials/list-content.html" (dict "title" $item.Title "content" (or $item.Description $item.Content)) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ end -}}
|
||||
</div>
|
||||
{{ end -}}
|
||||
</div>
|
||||
{{ end }}
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user