mirror of
https://github.com/gethinode/hinode.git
synced 2025-10-07 10:04:22 +00:00
Compare commits
220 Commits
v0.21.3
...
v0.22.0-be
Author | SHA1 | Date | |
---|---|---|---|
![]() |
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 | ||
![]() |
d93bbe4fe3 | ||
![]() |
3a2d062e22 | ||
![]() |
c3ef897a71 | ||
![]() |
73964e6be4 | ||
![]() |
520c000d3b | ||
![]() |
e3c1db7b88 | ||
![]() |
9ba3218f61 | ||
![]() |
a912d65608 | ||
![]() |
ffd6bb9c46 | ||
![]() |
6a238c3a11 | ||
![]() |
3210d72068 | ||
![]() |
add57592cd | ||
![]() |
584131c8c4 | ||
![]() |
9e8a1b4e3d | ||
![]() |
61efc2de16 | ||
![]() |
ce1f688b38 | ||
![]() |
088464bf13 | ||
![]() |
936ca3ffc2 | ||
![]() |
4f6320f7cf | ||
![]() |
ccf3169381 | ||
![]() |
54d66d2b02 | ||
![]() |
25aeb94364 | ||
![]() |
5657ef5b40 | ||
![]() |
c8818d104f | ||
![]() |
ed239034bf | ||
![]() |
774f936d3b | ||
![]() |
905c28886a | ||
![]() |
ad430074f7 | ||
![]() |
6449f01185 | ||
![]() |
0c3488472c | ||
![]() |
ee7990ec1e | ||
![]() |
b892b48388 | ||
![]() |
340213e4ff | ||
![]() |
989f2eed4c | ||
![]() |
4fadb7a6ab | ||
![]() |
8f1fd120eb | ||
![]() |
f2fc3b60a4 | ||
![]() |
c0735f71ef | ||
![]() |
858f9b3430 | ||
![]() |
402a7a85b8 | ||
![]() |
97fbc6087c | ||
![]() |
cc4a4766a9 | ||
![]() |
6821ac2b60 | ||
![]() |
06e10655ec | ||
![]() |
d32fdfa987 | ||
![]() |
9e97f063e5 | ||
![]() |
627f174ae4 | ||
![]() |
c349c28f08 | ||
![]() |
e73f96ffe9 | ||
![]() |
bd4ab51aff | ||
![]() |
81823c35ec | ||
![]() |
c567949205 | ||
![]() |
def136cb1b | ||
![]() |
889dc2e5ef | ||
![]() |
371323f929 | ||
![]() |
1694702d11 | ||
![]() |
048f50ddc4 | ||
![]() |
488cfc576b | ||
![]() |
1d8e564acf | ||
![]() |
6e94bc279b | ||
![]() |
90ee15cccf | ||
![]() |
751ff334ac | ||
![]() |
c200af1ad2 | ||
![]() |
5232afa812 | ||
![]() |
ad8e2f51d7 | ||
![]() |
ff708cf580 | ||
![]() |
f93ee9f01b | ||
![]() |
611320e661 | ||
![]() |
8a56d82cb9 | ||
![]() |
c052086388 | ||
![]() |
d4bfbf925a | ||
![]() |
b6b7e7be4f | ||
![]() |
61ef48798b | ||
![]() |
d65382e80d | ||
![]() |
e97d3e6fe9 | ||
![]() |
5cb189d545 | ||
![]() |
7897fe5f00 | ||
![]() |
6c4e0e8992 |
36
README.md
36
README.md
@@ -9,32 +9,32 @@
|
|||||||
|
|
||||||
<!-- Badges -->
|
<!-- Badges -->
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://gohugo.io" alt="Hugo website">
|
<a href="https://gohugo.io">
|
||||||
<img src="https://img.shields.io/badge/generator-hugo-brightgreen">
|
<img src="https://img.shields.io/badge/generator-hugo-brightgreen" alt="Hugo website">
|
||||||
</a>
|
</a>
|
||||||
<a href="https://gethinode.com" alt="Hinode theme">
|
<a href="https://gethinode.com">
|
||||||
<img src="https://img.shields.io/badge/theme-hinode-blue">
|
<img src="https://img.shields.io/badge/theme-hinode-blue" alt="Hinode theme">
|
||||||
</a>
|
</a>
|
||||||
<a href="https://www.npmjs.com/package/%40gethinode/hinode" alt="npm package">
|
<a href="https://www.npmjs.com/package/%40gethinode/hinode">
|
||||||
<img src="https://img.shields.io/npm/v/%40gethinode/hinode">
|
<img src="https://img.shields.io/npm/v/%40gethinode/hinode" alt="npm package">
|
||||||
</a>
|
</a>
|
||||||
<a href="https://app.netlify.com/sites/gethinode-demo/deploys" alt="Netlify Status">
|
<a href="https://app.netlify.com/sites/gethinode-demo/deploys">
|
||||||
<img src="https://img.shields.io/netlify/0ad42e3e-fdfa-4d37-8e26-58badd429a67">
|
<img src="https://img.shields.io/netlify/0ad42e3e-fdfa-4d37-8e26-58badd429a67" alt="Netlify Status">
|
||||||
</a>
|
</a>
|
||||||
<a href="https://stats.uptimerobot.com/xyGVYhLJmV" alt="UptimeRobot Status">
|
<a href="https://stats.uptimerobot.com/xyGVYhLJmV">
|
||||||
<img src="https://img.shields.io/uptimerobot/status/m791334689-73d9dfc82030f4f955b2d6bb">
|
<img src="https://img.shields.io/uptimerobot/status/m791334689-73d9dfc82030f4f955b2d6bb" alt="UptimeRobot Status">
|
||||||
</a>
|
</a>
|
||||||
<a href="https://github.com/gethinode/hinode/commits/main" alt="Last commit">
|
<a href="https://github.com/gethinode/hinode/commits/main">
|
||||||
<img src="https://img.shields.io/github/last-commit/gethinode/hinode.svg">
|
<img src="https://img.shields.io/github/last-commit/gethinode/hinode.svg" alt="Last commit">
|
||||||
</a>
|
</a>
|
||||||
<a href="https://github.com/gethinode/hinode/issues" alt="Issues">
|
<a href="https://github.com/gethinode/hinode/issues">
|
||||||
<img src="https://img.shields.io/github/issues/gethinode/hinode.svg">
|
<img src="https://img.shields.io/github/issues/gethinode/hinode.svg" alt="Issues">
|
||||||
</a>
|
</a>
|
||||||
<a href="https://github.com/gethinode/hinode/pulls" alt="Pulls">
|
<a href="https://github.com/gethinode/hinode/pulls">
|
||||||
<img src="https://img.shields.io/github/issues-pr-raw/gethinode/hinode.svg">
|
<img src="https://img.shields.io/github/issues-pr-raw/gethinode/hinode.svg" alt="Pulls">
|
||||||
</a>
|
</a>
|
||||||
<a href="https://github.com/gethinode/hinode/blob/main/LICENSE" alt="License">
|
<a href="https://github.com/gethinode/hinode/blob/main/LICENSE">
|
||||||
<img src="https://img.shields.io/github/license/gethinode/hinode">
|
<img src="https://img.shields.io/github/license/gethinode/hinode" alt="License">
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
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 |
@@ -38,7 +38,7 @@
|
|||||||
@import "components/table.scss";
|
@import "components/table.scss";
|
||||||
@import "components/timeline.scss";
|
@import "components/timeline.scss";
|
||||||
@import "components/toc.scss";
|
@import "components/toc.scss";
|
||||||
@import "components/vimeo.scss";
|
@import "components/video.scss";
|
||||||
@import "common/animation.scss";
|
@import "common/animation.scss";
|
||||||
@import "common/styles.scss";
|
@import "common/styles.scss";
|
||||||
@import "layouts/reboot.scss";
|
@import "layouts/reboot.scss";
|
||||||
|
@@ -36,7 +36,7 @@
|
|||||||
@import "components/table.scss";
|
@import "components/table.scss";
|
||||||
@import "components/timeline.scss";
|
@import "components/timeline.scss";
|
||||||
@import "components/toc.scss";
|
@import "components/toc.scss";
|
||||||
@import "components/vimeo.scss";
|
@import "components/video.scss";
|
||||||
@import "common/animation.scss";
|
@import "common/animation.scss";
|
||||||
@import "common/styles.scss";
|
@import "common/styles.scss";
|
||||||
@import "layouts/reboot.scss";
|
@import "layouts/reboot.scss";
|
||||||
|
@@ -1,3 +1,19 @@
|
|||||||
|
.youtube-embedded {
|
||||||
|
position: relative;
|
||||||
|
padding-bottom: 56.25%;
|
||||||
|
height: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.youtube-embedded > iframe {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
border:0;
|
||||||
|
}
|
||||||
|
|
||||||
// Adapted from https://github.com/gohugoio/hugo/tpl/tplimpl/embedded/templates/shortcodes/vimeo_simple.html
|
// Adapted from https://github.com/gohugoio/hugo/tpl/tplimpl/embedded/templates/shortcodes/vimeo_simple.html
|
||||||
.__h_video {
|
.__h_video {
|
||||||
position: relative;
|
position: relative;
|
@@ -104,6 +104,9 @@ home = ["HTML", "RSS", "REDIR"]
|
|||||||
[[module.mounts]]
|
[[module.mounts]]
|
||||||
source = "content"
|
source = "content"
|
||||||
target = "content"
|
target = "content"
|
||||||
|
[[module.mounts]]
|
||||||
|
source = "data"
|
||||||
|
target = "data"
|
||||||
[[module.mounts]]
|
[[module.mounts]]
|
||||||
source = "i18n"
|
source = "i18n"
|
||||||
target = "i18n"
|
target = "i18n"
|
||||||
|
@@ -8,6 +8,7 @@
|
|||||||
endorse = true
|
endorse = true
|
||||||
footerBelowFold = false
|
footerBelowFold = false
|
||||||
loading = "lazy"
|
loading = "lazy"
|
||||||
|
breakpoint = "md"
|
||||||
[main.externalLinks]
|
[main.externalLinks]
|
||||||
cue = false
|
cue = false
|
||||||
tab = false
|
tab = false
|
||||||
|
33
data/structures/abbr.yml
Normal file
33
data/structures/abbr.yml
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
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`).
|
31
data/structures/badge.yml
Normal file
31
data/structures/badge.yml
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
comment: >-
|
||||||
|
Use the badge shortcode to enrich headings.
|
||||||
|
arguments:
|
||||||
|
title:
|
||||||
|
type: string
|
||||||
|
optional: true
|
||||||
|
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.
|
187
data/structures/button.yml
Normal file
187
data/structures/button.yml
Normal file
@@ -0,0 +1,187 @@
|
|||||||
|
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: ID 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: string
|
||||||
|
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 aria-label is its title.
|
||||||
|
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: string
|
||||||
|
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: string
|
||||||
|
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: 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>').
|
||||||
|
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
|
80
data/structures/card-group.yml
Normal file
80
data/structures/card-group.yml
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
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.
|
||||||
|
title:
|
||||||
|
type: string
|
||||||
|
optional: true
|
||||||
|
comment: >-
|
||||||
|
Title of the card, replaces the title of the referenced page (if any).
|
||||||
|
gutter:
|
||||||
|
type: int
|
||||||
|
optional: true
|
||||||
|
default: 4
|
||||||
|
comment: Gutter between columns in a group.
|
||||||
|
options:
|
||||||
|
min: 0
|
||||||
|
max: 5
|
||||||
|
list:
|
||||||
|
type:
|
||||||
|
- page.Pages
|
||||||
|
- resource.Resources
|
||||||
|
optional: true
|
||||||
|
comment: Array of pages to be rendered as cards.
|
||||||
|
cards:
|
||||||
|
type: string
|
||||||
|
optional: true
|
||||||
|
comment: String of rendered cards.
|
||||||
|
max:
|
||||||
|
type: int
|
||||||
|
optional: true
|
||||||
|
comment: Maximum number of cards to display.
|
||||||
|
cols:
|
||||||
|
type: int
|
||||||
|
optional: true
|
||||||
|
default: 3
|
||||||
|
comment: Number of grid columns.
|
||||||
|
options:
|
||||||
|
min: 1
|
||||||
|
max: 5
|
||||||
|
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.
|
||||||
|
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.
|
||||||
|
hrefTitle:
|
||||||
|
type: string
|
||||||
|
optional: true
|
||||||
|
comment: >-
|
||||||
|
Title of the button or hyperlink as companion to href.
|
||||||
|
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`.
|
180
data/structures/card.yml
Normal file
180
data/structures/card.yml
Normal file
@@ -0,0 +1,180 @@
|
|||||||
|
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
|
||||||
|
parent: cascade
|
||||||
|
comment: >-
|
||||||
|
Description of the card.
|
||||||
|
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
|
||||||
|
thumbnail:
|
||||||
|
type: path
|
||||||
|
optional: true
|
||||||
|
parent: cascade
|
||||||
|
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
|
||||||
|
parent: cascade
|
||||||
|
comment: >-
|
||||||
|
Font Awesome icon, displayed on top or the left of the card.
|
||||||
|
orientation:
|
||||||
|
type: select
|
||||||
|
optional: true
|
||||||
|
default: stacked
|
||||||
|
parent: cascade
|
||||||
|
comment: >-
|
||||||
|
Placement of the thumbnail or icon.
|
||||||
|
options:
|
||||||
|
values:
|
||||||
|
- stacked
|
||||||
|
- horizontal
|
||||||
|
- horizontal-sm
|
||||||
|
- none
|
||||||
|
body:
|
||||||
|
optional: true
|
||||||
|
comment: >-
|
||||||
|
Description of the card.
|
||||||
|
group: shortcode
|
57
data/structures/carousel-item.yml
Normal file
57
data/structures/carousel-item.yml
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
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
|
||||||
|
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.
|
||||||
|
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.
|
38
data/structures/carousel.yml
Normal file
38
data/structures/carousel.yml
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
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-` with a sequential number.
|
||||||
|
ratio:
|
||||||
|
type: string
|
||||||
|
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.
|
||||||
|
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
|
40
data/structures/docs.yml
Normal file
40
data/structures/docs.yml
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
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 full relative 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`.
|
27
data/structures/example.yml
Normal file
27
data/structures/example.yml
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
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:
|
||||||
|
lang:
|
||||||
|
type: string
|
||||||
|
optional: true
|
||||||
|
default: markdown
|
||||||
|
comment: Language used to display the code.
|
||||||
|
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.
|
39
data/structures/file.yml
Normal file
39
data/structures/file.yml
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
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: string
|
||||||
|
optional: true
|
||||||
|
comment: >-
|
||||||
|
If unset, shows the filename only. By default, the full relative path is
|
||||||
|
shown.
|
||||||
|
id:
|
||||||
|
type: string
|
||||||
|
optional: true
|
||||||
|
comment: >-
|
||||||
|
ID of the collapse panel, defaults to `file-collapse-n` with a sequential
|
||||||
|
number `n` starting at 1.
|
||||||
|
class:
|
||||||
|
type: string
|
||||||
|
optional: true
|
||||||
|
comment: Class argument of the tab control.
|
108
data/structures/image.yml
Normal file
108
data/structures/image.yml
Normal file
@@ -0,0 +1,108 @@
|
|||||||
|
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`.
|
||||||
|
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.
|
||||||
|
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. 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.
|
||||||
|
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
|
||||||
|
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`.
|
||||||
|
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.
|
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.
|
||||||
|
options:
|
||||||
|
values:
|
||||||
|
- primary
|
||||||
|
- secondary
|
||||||
|
- success
|
||||||
|
- danger
|
||||||
|
- warning
|
||||||
|
- info
|
||||||
|
- light
|
||||||
|
- dark
|
||||||
|
- white
|
||||||
|
- black
|
||||||
|
body:
|
||||||
|
optional: false
|
||||||
|
comment: Text to be marked.
|
56
data/structures/nav-item.yml
Normal file
56
data/structures/nav-item.yml
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
comment: >-
|
||||||
|
Defines an individual nav item.
|
||||||
|
arguments:
|
||||||
|
id:
|
||||||
|
type: string
|
||||||
|
optional: true
|
||||||
|
comment: ID of the nav-item.
|
||||||
|
parent: cascade
|
||||||
|
parentID:
|
||||||
|
type: string
|
||||||
|
optional: false
|
||||||
|
comment: ID of the parent (e.g. nav control).
|
||||||
|
group: partial
|
||||||
|
header:
|
||||||
|
type: string
|
||||||
|
optional: false
|
||||||
|
comment: Header of the nav item.
|
||||||
|
show:
|
||||||
|
type: bool
|
||||||
|
optional: true
|
||||||
|
comment: >-
|
||||||
|
Flag to indicate the nav 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 nav item.
|
||||||
|
body:
|
||||||
|
type:
|
||||||
|
- string
|
||||||
|
- template.HTML
|
||||||
|
optional: true
|
||||||
|
comment: The body content of the nav-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
|
||||||
|
body:
|
||||||
|
optional: false
|
||||||
|
comment: Content of the nav 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
|
102
data/structures/navbar.yml
Normal file
102
data/structures/navbar.yml
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
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.
|
||||||
|
options:
|
||||||
|
values:
|
||||||
|
- primary
|
||||||
|
- secondary
|
||||||
|
- success
|
||||||
|
- danger
|
||||||
|
- warning
|
||||||
|
- info
|
||||||
|
- light
|
||||||
|
- dark
|
||||||
|
- white
|
||||||
|
- black
|
||||||
|
- body
|
||||||
|
- body-tertiary
|
||||||
|
id:
|
||||||
|
type: string
|
||||||
|
optional: true
|
||||||
|
comment: >-
|
||||||
|
ID 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
|
||||||
|
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
|
||||||
|
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.
|
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
|
39
data/structures/release.yml
Normal file
39
data/structures/release.yml
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
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
|
||||||
|
comment: Flag to render the release button inline (defaults to false).
|
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.
|
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.
|
26
data/structures/table.yml
Normal file
26
data/structures/table.yml
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
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
|
||||||
|
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.
|
28
data/structures/toast.yml
Normal file
28
data/structures/toast.yml
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
comment: >-
|
||||||
|
Prepares a toast message. Use a trigger to display the message.
|
||||||
|
arguments:
|
||||||
|
id:
|
||||||
|
type: string
|
||||||
|
optional: true
|
||||||
|
comment: >-
|
||||||
|
ID 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
|
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: ID of the video to be embedded.
|
||||||
|
autoplay:
|
||||||
|
type: bool
|
||||||
|
optional: true
|
||||||
|
default: false
|
||||||
|
comment: Flag indicating the video should start playing immediately when loaded.
|
@@ -6,6 +6,7 @@
|
|||||||
canonifyAssetsURLs = false
|
canonifyAssetsURLs = false
|
||||||
footerBelowFold = false
|
footerBelowFold = false
|
||||||
loading = "lazy"
|
loading = "lazy"
|
||||||
|
breakpoint = "md"
|
||||||
[main.externalLinks]
|
[main.externalLinks]
|
||||||
cue = true
|
cue = true
|
||||||
tab = true
|
tab = true
|
||||||
|
@@ -344,6 +344,24 @@ As an example, the following shortcode displays a light navigation header.
|
|||||||
{{< /example >}}
|
{{< /example >}}
|
||||||
<!-- markdownlint-enable MD037 -->
|
<!-- 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
|
## Release
|
||||||
|
|
||||||
As an example, the following shortcode displays a default release button.
|
As an example, the following shortcode displays a default release button.
|
||||||
|
@@ -1,9 +1,10 @@
|
|||||||
---
|
---
|
||||||
author: Mark Dumay
|
author: Mark Dumay
|
||||||
title: Fourth post
|
title: Fourth post (excluded from search)
|
||||||
date: 2023-01-01
|
date: 2023-01-01
|
||||||
description: This is my fourth blog post.
|
description: This is my fourth blog post. It is excluded from the search index.
|
||||||
tags: ["blog"]
|
tags: ["blog"]
|
||||||
|
searchExclude: true
|
||||||
thumbnail:
|
thumbnail:
|
||||||
url: img/flowers.jpg
|
url: img/flowers.jpg
|
||||||
author: Arvee Marie
|
author: Arvee Marie
|
||||||
|
@@ -1,10 +1,11 @@
|
|||||||
---
|
---
|
||||||
author: Mark Dumay
|
author: Mark Dumay
|
||||||
title: Quatrième article
|
title: Quatrième article (exclu de la recherche)
|
||||||
slug: quatrieme-article
|
slug: quatrieme-article
|
||||||
date: 2023-01-01
|
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"]
|
tags: ["blog"]
|
||||||
|
searchExclude: true
|
||||||
thumbnail:
|
thumbnail:
|
||||||
url: img/flowers.jpg
|
url: img/flowers.jpg
|
||||||
author: Arvee Marie
|
author: Arvee Marie
|
||||||
|
@@ -18,6 +18,10 @@ github.com/gethinode/mod-flexsearch v1.5.1 h1:9fYlnHgiEXckL0EoC0zlSNO7BWZf5yiOro
|
|||||||
github.com/gethinode/mod-flexsearch v1.5.1/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
github.com/gethinode/mod-flexsearch v1.5.1/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
||||||
github.com/gethinode/mod-flexsearch v1.6.0 h1:Rjx+GLOByFLmaWD9hZXwmuKN8A89te6BZAIq2c9QBKg=
|
github.com/gethinode/mod-flexsearch v1.6.0 h1:Rjx+GLOByFLmaWD9hZXwmuKN8A89te6BZAIq2c9QBKg=
|
||||||
github.com/gethinode/mod-flexsearch v1.6.0/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
github.com/gethinode/mod-flexsearch v1.6.0/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
||||||
|
github.com/gethinode/mod-flexsearch v1.7.0 h1:VFTf6iUyT9b47jTDAxh8nVHU1eUBrdxlykaC90lTfqk=
|
||||||
|
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-fontawesome v1.2.4 h1:SqE3CQ+boaBIhrVh3MPu4nz0uoHPfEH5t60nNY1CfsI=
|
github.com/gethinode/mod-fontawesome v1.2.4 h1:SqE3CQ+boaBIhrVh3MPu4nz0uoHPfEH5t60nNY1CfsI=
|
||||||
github.com/gethinode/mod-fontawesome v1.2.4/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
github.com/gethinode/mod-fontawesome v1.2.4/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||||
github.com/gethinode/mod-fontawesome v1.2.5 h1:RqkLRj6+s+gM4nKd0IwNMMDA8cRmxfp0fxkVH4FdAGU=
|
github.com/gethinode/mod-fontawesome v1.2.5 h1:RqkLRj6+s+gM4nKd0IwNMMDA8cRmxfp0fxkVH4FdAGU=
|
||||||
@@ -34,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.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 h1:C7goQY4HrEua/lpjC++laydNKBuYo1+307ngn5tyXeM=
|
||||||
github.com/gethinode/mod-fontawesome v1.5.1/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
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.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 h1:pIG4n3qLl/IVe7BEiwn+GL8r5lOCtF6FDxlcrPKdAXk=
|
||||||
github.com/gethinode/mod-katex v1.0.2/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
|
github.com/gethinode/mod-katex v1.0.2/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
|
||||||
@@ -41,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.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 h1:NozgWPFnHhx1W+E9DnwMTRpvxPbdqdANEtwp9N3/mj8=
|
||||||
github.com/gethinode/mod-katex v1.0.4/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
|
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 h1:oY+YQ0JiJuhFQNrk9XgFdg0NMsTUQPXNfnILp4ia4r4=
|
||||||
github.com/gethinode/mod-leaflet v0.3.4/go.mod h1:uGggt87x4Fw7wBoJpSiUvNkYg+s/Ujne7klAX2rxMRk=
|
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 h1:69Bv/6zRXhbcTzo7TMr58h3ry47srHRpM1k81LrLbYU=
|
||||||
|
@@ -14,6 +14,7 @@
|
|||||||
"footer",
|
"footer",
|
||||||
"form",
|
"form",
|
||||||
"h2",
|
"h2",
|
||||||
|
"h3",
|
||||||
"head",
|
"head",
|
||||||
"hr",
|
"hr",
|
||||||
"html",
|
"html",
|
||||||
@@ -38,8 +39,14 @@
|
|||||||
"sub",
|
"sub",
|
||||||
"sup",
|
"sup",
|
||||||
"svg",
|
"svg",
|
||||||
|
"table",
|
||||||
|
"tbody",
|
||||||
|
"td",
|
||||||
|
"th",
|
||||||
|
"thead",
|
||||||
"time",
|
"time",
|
||||||
"title",
|
"title",
|
||||||
|
"tr",
|
||||||
"ul",
|
"ul",
|
||||||
"use"
|
"use"
|
||||||
],
|
],
|
||||||
@@ -113,19 +120,24 @@
|
|||||||
"carousel-item",
|
"carousel-item",
|
||||||
"chroma",
|
"chroma",
|
||||||
"col",
|
"col",
|
||||||
|
"col-10",
|
||||||
"col-12",
|
"col-12",
|
||||||
|
"col-2",
|
||||||
"col-3",
|
"col-3",
|
||||||
"col-4",
|
"col-4",
|
||||||
"col-6",
|
"col-6",
|
||||||
"col-8",
|
"col-8",
|
||||||
"col-9",
|
"col-9",
|
||||||
"col-auto",
|
"col-auto",
|
||||||
|
"col-lg-2",
|
||||||
"col-lg-4",
|
"col-lg-4",
|
||||||
"col-lg-8",
|
"col-lg-8",
|
||||||
"col-md-10",
|
"col-md-10",
|
||||||
"col-md-2",
|
"col-md-2",
|
||||||
|
"col-md-3",
|
||||||
"col-md-4",
|
"col-md-4",
|
||||||
"col-md-8",
|
"col-md-8",
|
||||||
|
"col-md-9",
|
||||||
"col-md-auto",
|
"col-md-auto",
|
||||||
"col-sm-12",
|
"col-sm-12",
|
||||||
"col-sm-3",
|
"col-sm-3",
|
||||||
@@ -141,6 +153,7 @@
|
|||||||
"d-grid",
|
"d-grid",
|
||||||
"d-inline",
|
"d-inline",
|
||||||
"d-inline-flex",
|
"d-inline-flex",
|
||||||
|
"d-lg-block",
|
||||||
"d-md-block",
|
"d-md-block",
|
||||||
"d-md-flex",
|
"d-md-flex",
|
||||||
"d-md-none",
|
"d-md-none",
|
||||||
@@ -209,6 +222,8 @@
|
|||||||
"form-control",
|
"form-control",
|
||||||
"fs-3",
|
"fs-3",
|
||||||
"fs-5",
|
"fs-5",
|
||||||
|
"fs-6",
|
||||||
|
"fs-md-5",
|
||||||
"fw-bold",
|
"fw-bold",
|
||||||
"fw-semibold",
|
"fw-semibold",
|
||||||
"g-0",
|
"g-0",
|
||||||
@@ -270,6 +285,7 @@
|
|||||||
"mx-md-0",
|
"mx-md-0",
|
||||||
"mx-md-2",
|
"mx-md-2",
|
||||||
"my-2",
|
"my-2",
|
||||||
|
"my-4",
|
||||||
"my-auto",
|
"my-auto",
|
||||||
"my-md-0",
|
"my-md-0",
|
||||||
"my-md-auto",
|
"my-md-auto",
|
||||||
@@ -305,6 +321,8 @@
|
|||||||
"pb-5",
|
"pb-5",
|
||||||
"pb-md-0",
|
"pb-md-0",
|
||||||
"pe-3",
|
"pe-3",
|
||||||
|
"pe-5",
|
||||||
|
"persona",
|
||||||
"position-absolute",
|
"position-absolute",
|
||||||
"position-fixed",
|
"position-fixed",
|
||||||
"position-relative",
|
"position-relative",
|
||||||
@@ -315,6 +333,10 @@
|
|||||||
"ps-xl-3",
|
"ps-xl-3",
|
||||||
"pt-5",
|
"pt-5",
|
||||||
"pt-md-3",
|
"pt-md-3",
|
||||||
|
"ptw-3",
|
||||||
|
"ptw-5",
|
||||||
|
"ptw-lg-5",
|
||||||
|
"ptw-sm-4",
|
||||||
"px-4",
|
"px-4",
|
||||||
"px-xxl-0",
|
"px-xxl-0",
|
||||||
"py-1",
|
"py-1",
|
||||||
@@ -326,12 +348,14 @@
|
|||||||
"ratio-16x9",
|
"ratio-16x9",
|
||||||
"rounded",
|
"rounded",
|
||||||
"rounded-2",
|
"rounded-2",
|
||||||
|
"rounded-5",
|
||||||
"rounded-bottom",
|
"rounded-bottom",
|
||||||
"rounded-pill",
|
"rounded-pill",
|
||||||
"rounded-top",
|
"rounded-top",
|
||||||
"row",
|
"row",
|
||||||
"row-cols-1",
|
"row-cols-1",
|
||||||
"row-cols-2",
|
"row-cols-2",
|
||||||
|
"row-cols-lg-3",
|
||||||
"row-cols-md-2",
|
"row-cols-md-2",
|
||||||
"row-cols-md-3",
|
"row-cols-md-3",
|
||||||
"row-cols-sm-2",
|
"row-cols-sm-2",
|
||||||
@@ -341,10 +365,13 @@
|
|||||||
"search-suggestions",
|
"search-suggestions",
|
||||||
"shadow",
|
"shadow",
|
||||||
"show",
|
"show",
|
||||||
|
"sidebar-overflow",
|
||||||
"slide",
|
"slide",
|
||||||
"small",
|
"small",
|
||||||
"spinner-border",
|
"spinner-border",
|
||||||
|
"start-0",
|
||||||
"start-100",
|
"start-100",
|
||||||
|
"start-50",
|
||||||
"sticky-top",
|
"sticky-top",
|
||||||
"stretched-link",
|
"stretched-link",
|
||||||
"svg-inline--fa",
|
"svg-inline--fa",
|
||||||
@@ -352,6 +379,8 @@
|
|||||||
"syntax-highlight",
|
"syntax-highlight",
|
||||||
"tab-content",
|
"tab-content",
|
||||||
"tab-pane",
|
"tab-pane",
|
||||||
|
"table",
|
||||||
|
"table-responsive",
|
||||||
"tag-link",
|
"tag-link",
|
||||||
"text-bg-body",
|
"text-bg-body",
|
||||||
"text-bg-body-tertiary",
|
"text-bg-body-tertiary",
|
||||||
@@ -403,8 +432,11 @@
|
|||||||
"toc-sidebar",
|
"toc-sidebar",
|
||||||
"toggler-icon",
|
"toggler-icon",
|
||||||
"top-0",
|
"top-0",
|
||||||
|
"top-25",
|
||||||
|
"top-50",
|
||||||
"top-bar",
|
"top-bar",
|
||||||
"translate-middle",
|
"translate-middle",
|
||||||
|
"translate-middle-y",
|
||||||
"visually-hidden",
|
"visually-hidden",
|
||||||
"vr",
|
"vr",
|
||||||
"w-100",
|
"w-100",
|
||||||
@@ -484,6 +516,7 @@
|
|||||||
"navbar-sample-collapse",
|
"navbar-sample-collapse",
|
||||||
"navigation",
|
"navigation",
|
||||||
"notification",
|
"notification",
|
||||||
|
"persona",
|
||||||
"projecten",
|
"projecten",
|
||||||
"projects",
|
"projects",
|
||||||
"projets",
|
"projets",
|
||||||
|
6
go.mod
6
go.mod
@@ -5,9 +5,9 @@ go 1.19
|
|||||||
require (
|
require (
|
||||||
github.com/airbnb/lottie-web v5.12.2+incompatible // indirect
|
github.com/airbnb/lottie-web v5.12.2+incompatible // indirect
|
||||||
github.com/gethinode/mod-bootstrap v1.2.2 // indirect
|
github.com/gethinode/mod-bootstrap v1.2.2 // indirect
|
||||||
github.com/gethinode/mod-flexsearch v1.6.0 // indirect
|
github.com/gethinode/mod-flexsearch v1.7.1 // indirect
|
||||||
github.com/gethinode/mod-fontawesome v1.5.1 // indirect
|
github.com/gethinode/mod-fontawesome v1.7.3 // indirect
|
||||||
github.com/gethinode/mod-katex v1.0.4 // indirect
|
github.com/gethinode/mod-katex v1.0.5 // indirect
|
||||||
github.com/gethinode/mod-leaflet v0.3.5 // indirect
|
github.com/gethinode/mod-leaflet v0.3.5 // indirect
|
||||||
github.com/gethinode/mod-lottie v1.3.0 // indirect
|
github.com/gethinode/mod-lottie v1.3.0 // indirect
|
||||||
github.com/nextapps-de/flexsearch v0.0.0-20230711092928-1243fd883ec3 // indirect
|
github.com/nextapps-de/flexsearch v0.0.0-20230711092928-1243fd883ec3 // indirect
|
||||||
|
10
go.sum
10
go.sum
@@ -36,6 +36,10 @@ github.com/gethinode/mod-flexsearch v1.5.1 h1:9fYlnHgiEXckL0EoC0zlSNO7BWZf5yiOro
|
|||||||
github.com/gethinode/mod-flexsearch v1.5.1/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
github.com/gethinode/mod-flexsearch v1.5.1/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
||||||
github.com/gethinode/mod-flexsearch v1.6.0 h1:Rjx+GLOByFLmaWD9hZXwmuKN8A89te6BZAIq2c9QBKg=
|
github.com/gethinode/mod-flexsearch v1.6.0 h1:Rjx+GLOByFLmaWD9hZXwmuKN8A89te6BZAIq2c9QBKg=
|
||||||
github.com/gethinode/mod-flexsearch v1.6.0/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
github.com/gethinode/mod-flexsearch v1.6.0/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
||||||
|
github.com/gethinode/mod-flexsearch v1.7.0 h1:VFTf6iUyT9b47jTDAxh8nVHU1eUBrdxlykaC90lTfqk=
|
||||||
|
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-fontawesome v1.0.2 h1:ZSK6D20/w4y5GnfYfTBB58uHD0ChIfkpKfRGwioS9rg=
|
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.0.2/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||||
github.com/gethinode/mod-fontawesome v1.1.0 h1:rsDzUI+3ZlS/do2ff3ne8/z3KwHeysmuA+WsXlumXXk=
|
github.com/gethinode/mod-fontawesome v1.1.0 h1:rsDzUI+3ZlS/do2ff3ne8/z3KwHeysmuA+WsXlumXXk=
|
||||||
@@ -64,6 +68,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.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 h1:C7goQY4HrEua/lpjC++laydNKBuYo1+307ngn5tyXeM=
|
||||||
github.com/gethinode/mod-fontawesome v1.5.1/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
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.0 h1:me/3dIIZBkfk1mRIFt8QiAGYwYDoSG5bc2hHRtIutFc=
|
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.0/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
|
||||||
github.com/gethinode/mod-katex v1.0.1 h1:809QUztxmKgMNchU+v03iMO7Ma+ISc3ZzhXYauc21rs=
|
github.com/gethinode/mod-katex v1.0.1 h1:809QUztxmKgMNchU+v03iMO7Ma+ISc3ZzhXYauc21rs=
|
||||||
@@ -74,6 +82,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.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 h1:NozgWPFnHhx1W+E9DnwMTRpvxPbdqdANEtwp9N3/mj8=
|
||||||
github.com/gethinode/mod-katex v1.0.4/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
|
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 h1:QQI4h+IH0jZ7fx4q0um2YIEiYBoW3OAfW8qHzbRCDPk=
|
||||||
github.com/gethinode/mod-leaflet v0.2.3/go.mod h1:uGggt87x4Fw7wBoJpSiUvNkYg+s/Ujne7klAX2rxMRk=
|
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=
|
github.com/gethinode/mod-leaflet v0.3.1 h1:H5MaOa+BB1KuVw7abTqfIn/SNzzRsAyx/WQoSe+2Ykc=
|
||||||
|
@@ -45,8 +45,10 @@
|
|||||||
"col-12",
|
"col-12",
|
||||||
"col-6",
|
"col-6",
|
||||||
"col-md-2",
|
"col-md-2",
|
||||||
|
"col-md-3",
|
||||||
"col-md-4",
|
"col-md-4",
|
||||||
"col-md-8",
|
"col-md-8",
|
||||||
|
"col-md-9",
|
||||||
"col-sm-12",
|
"col-sm-12",
|
||||||
"collapse",
|
"collapse",
|
||||||
"collapsed",
|
"collapsed",
|
||||||
@@ -147,7 +149,6 @@
|
|||||||
"row-cols-1",
|
"row-cols-1",
|
||||||
"row-cols-2",
|
"row-cols-2",
|
||||||
"row-cols-md-2",
|
"row-cols-md-2",
|
||||||
"row-cols-sm-2",
|
|
||||||
"row-cols-sm-3",
|
"row-cols-sm-3",
|
||||||
"search",
|
"search",
|
||||||
"search-input",
|
"search-input",
|
||||||
|
@@ -30,9 +30,9 @@
|
|||||||
- id: shareSystem
|
- id: shareSystem
|
||||||
translation: "Betriebssystem"
|
translation: "Betriebssystem"
|
||||||
- id: copyToClipboard
|
- id: copyToClipboard
|
||||||
translation: "In Zwischenablage kopieren"
|
translation: "In die Zwischenablage kopieren"
|
||||||
- id: copiedToClipboard
|
- id: copiedToClipboard
|
||||||
translation: "Der Text befindet sich in die Zwischenablage"
|
translation: "befindet sich in der Zwischenablage"
|
||||||
- id: link
|
- id: link
|
||||||
translation: "Link zur Webseite"
|
translation: "Link zur Webseite"
|
||||||
- id: code
|
- id: code
|
||||||
|
24
i18n/en.yaml
24
i18n/en.yaml
@@ -30,6 +30,16 @@
|
|||||||
- id: emptyTags
|
- id: emptyTags
|
||||||
translation: "No tags found"
|
translation: "No tags found"
|
||||||
|
|
||||||
|
# Languages
|
||||||
|
- id: lang_de
|
||||||
|
translation: "German"
|
||||||
|
- id: lang_en
|
||||||
|
translation: "English"
|
||||||
|
- id: lang_nl
|
||||||
|
translation: "Dutch"
|
||||||
|
- id: lang_fr
|
||||||
|
translation: "French"
|
||||||
|
|
||||||
# Sharing
|
# Sharing
|
||||||
- id: shareLink
|
- id: shareLink
|
||||||
translation: "Share via {{ . }}"
|
translation: "Share via {{ . }}"
|
||||||
@@ -123,3 +133,17 @@
|
|||||||
translation: "Show"
|
translation: "Show"
|
||||||
- id: comments
|
- id: comments
|
||||||
translation: "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"
|
translation: "Articles"
|
||||||
- id: more
|
- id: more
|
||||||
translation: "Plus {{ . }}"
|
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
|
# Sharing
|
||||||
- id: shareLink
|
- id: shareLink
|
||||||
@@ -39,6 +53,8 @@
|
|||||||
translation: "Lien"
|
translation: "Lien"
|
||||||
- id: code
|
- id: code
|
||||||
translation: "Code"
|
translation: "Code"
|
||||||
|
- id: download
|
||||||
|
translation: "Télécharger l'article"
|
||||||
|
|
||||||
# Pagination
|
# Pagination
|
||||||
- id: paginationNav
|
- id: paginationNav
|
||||||
@@ -75,6 +91,8 @@
|
|||||||
translation: "Sur cette page"
|
translation: "Sur cette page"
|
||||||
- id: seeAlso
|
- id: seeAlso
|
||||||
translation: "Voir également"
|
translation: "Voir également"
|
||||||
|
- id: sectionMenu
|
||||||
|
translation: "Selectionner un topic"
|
||||||
|
|
||||||
# Sidebar
|
# Sidebar
|
||||||
- id: toggleSidebar
|
- id: toggleSidebar
|
||||||
@@ -115,3 +133,17 @@
|
|||||||
translation: "Afficher"
|
translation: "Afficher"
|
||||||
- id: comments
|
- id: comments
|
||||||
translation: "Commentaires"
|
translation: "Commentaires"
|
||||||
|
|
||||||
|
# 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"
|
||||||
|
25
i18n/nl.yaml
25
i18n/nl.yaml
@@ -28,6 +28,16 @@
|
|||||||
- id: emptyTags
|
- id: emptyTags
|
||||||
translation: "Geen tags gevonden"
|
translation: "Geen tags gevonden"
|
||||||
|
|
||||||
|
# Languages
|
||||||
|
- id: lang_de
|
||||||
|
translation: "Duits"
|
||||||
|
- id: lang_en
|
||||||
|
translation: "Engels"
|
||||||
|
- id: lang_nl
|
||||||
|
translation: "Nederlands"
|
||||||
|
- id: lang_fr
|
||||||
|
translation: "Frans"
|
||||||
|
|
||||||
# Sharing
|
# Sharing
|
||||||
- id: shareLink
|
- id: shareLink
|
||||||
translation: "Delen via {{ . }}"
|
translation: "Delen via {{ . }}"
|
||||||
@@ -121,3 +131,18 @@
|
|||||||
translation: "Tonen"
|
translation: "Tonen"
|
||||||
- id: comments
|
- id: comments
|
||||||
translation: "Reacties"
|
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,5 +1,12 @@
|
|||||||
{{- define "partials/optional-scripts.html" -}}
|
{{- 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 -}}
|
{{- range $index, $mod := $modules -}}
|
||||||
{{- $filename := printf "js/%s.bundle.js" $mod -}}
|
{{- $filename := printf "js/%s.bundle.js" $mod -}}
|
||||||
{{- $match := printf "js/modules/%s/**.js" $mod -}}
|
{{- $match := printf "js/modules/%s/**.js" $mod -}}
|
||||||
@@ -48,6 +55,9 @@
|
|||||||
{{ $sections := partial "utilities/GetSections.html" (dict "page" . "loading" $loading) }}
|
{{ $sections := partial "utilities/GetSections.html" (dict "page" . "loading" $loading) }}
|
||||||
{{- $.Scratch.Set "sections" $sections -}}
|
{{- $.Scratch.Set "sections" $sections -}}
|
||||||
|
|
||||||
|
{{- /* Define main breakpoint */ -}}
|
||||||
|
{{- $.Scratch.Set "breakpoint" (partial "utilities/GetBreakpoint.html") }}
|
||||||
|
|
||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="{{ .Site.Language.Lang }}" class="no-js">
|
<html lang="{{ .Site.Language.Lang }}" class="no-js">
|
||||||
<head>
|
<head>
|
||||||
|
@@ -11,7 +11,7 @@
|
|||||||
<div class="container-xxl p-4 px-xxl-0">
|
<div class="container-xxl p-4 px-xxl-0">
|
||||||
{{- if ne $layout "featured" -}}
|
{{- if ne $layout "featured" -}}
|
||||||
{{ if and (not $page.IsHome) site.Params.navigation.breadcrumb }}
|
{{ 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 -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
|
@@ -1,9 +1,10 @@
|
|||||||
{{- $sections := $.Scratch.Get "sections" -}}
|
{{- $sections := $.Scratch.Get "sections" -}}
|
||||||
{{- $fullCover := $.Scratch.Get "fullCover" -}}
|
{{- $fullCover := $.Scratch.Get "fullCover" -}}
|
||||||
|
{{- $breakpoint := $.Scratch.Get "breakpoint" -}}
|
||||||
{{- $layout := .Params.layout -}}
|
{{- $layout := .Params.layout -}}
|
||||||
|
|
||||||
<div class="row row-cols-1 row-cols-sm-2">
|
<div class="row row-cols-1 row-cols-{{ $breakpoint.current }}-2">
|
||||||
<div class="col col-sm-12 col-md-8">
|
<div class="col-12 col-{{ $breakpoint.current }}-9">
|
||||||
{{ if not .IsHome }}
|
{{ if not .IsHome }}
|
||||||
{{ with .Title }}<p id="{{ anchorize . }}" class="display-4 mt-5{{ if and $.IsHome site.Params.home.centerHeadline }} text-center{{ end }}">{{ . }}</p>{{ end }}
|
{{ with .Title }}<p id="{{ anchorize . }}" class="display-4 mt-5{{ if and $.IsHome site.Params.home.centerHeadline }} text-center{{ end }}">{{ . }}</p>{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
@@ -15,9 +16,12 @@
|
|||||||
{{- if $fullCover }}{{ $loading = site.Params.main.loading }}{{ end }}
|
{{- if $fullCover }}{{ $loading = site.Params.main.loading }}{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{- $content := partial "utilities/ProcessContent" (dict "page" . "raw" .RawContent "loading" $loading) -}}
|
{{- $content := partial "utilities/ProcessContent" (dict "page" . "raw" .RawContent "loading" $loading) -}}
|
||||||
{{ $content | safeHTML }}
|
{{- $content | safeHTML -}}
|
||||||
{{ if and (and $sections (eq (len $sections) 1)) (not $content) }}
|
{{ if and (and $sections (eq (len $sections) 1)) (not $content) }}
|
||||||
<p class="pt-4">{{- T "emptyList" }}.</p>
|
<p class="pt-4">{{- T "emptyList" }}.</p>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col col-{{ $breakpoint.current }}-3 d-none d-{{ $breakpoint.current }}-block">
|
||||||
|
{{/* Empty in default layout */}}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -1,10 +1,11 @@
|
|||||||
{{- define "partials/single-main.html" -}}
|
{{- define "partials/single-main.html" -}}
|
||||||
{{ if .Site.Params.navigation.breadcrumb }}{{ partial "assets/breadcrumb.html" . }}{{ end -}}
|
{{- $breakpoint := $.Scratch.Get "breakpoint" -}}
|
||||||
|
{{ if .Site.Params.navigation.breadcrumb }}{{ partial "assets/breadcrumb.html" (dict "page" .) }}{{ end -}}
|
||||||
|
|
||||||
{{ .Render "single/header" }}
|
{{ .Render "single/header" }}
|
||||||
|
|
||||||
{{- if and .Site.Params.navigation.toc .Params.includeToc | default true -}}
|
{{- if and .Site.Params.navigation.toc .Params.includeToc | default true -}}
|
||||||
<div class="d-md-none pb-5">{{ partial "assets/toc-dropdown.html" . }}</div>
|
<div class="d-{{ $breakpoint.current }}-none pb-5">{{ partial "assets/toc-dropdown.html" . }}</div>
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{ .Render "single/body" }}
|
{{ .Render "single/body" }}
|
||||||
|
|
||||||
@@ -18,6 +19,7 @@
|
|||||||
{{ define "main" -}}
|
{{ define "main" -}}
|
||||||
{{- $menu := .Scratch.Get "sidebar" -}}
|
{{- $menu := .Scratch.Get "sidebar" -}}
|
||||||
{{- $version := .Scratch.Get "version" -}}
|
{{- $version := .Scratch.Get "version" -}}
|
||||||
|
{{- $breakpoint := $.Scratch.Get "breakpoint" -}}
|
||||||
|
|
||||||
{{ $sidebar := "" }}
|
{{ $sidebar := "" }}
|
||||||
{{- $hasSidebar := .Site.Params.navigation.sidebar | default true -}}
|
{{- $hasSidebar := .Site.Params.navigation.sidebar | default true -}}
|
||||||
@@ -38,34 +40,24 @@
|
|||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
<div class="container-xxl flex-fill p-4 px-xxl-0">
|
<div class="container-xxl flex-fill p-4 px-xxl-0">
|
||||||
{{ if and $menu $hasSidebar -}}
|
{{ if $hasSidebar -}}
|
||||||
<div class="row row-cols-md-2 row-cols-lg-3">
|
<div class="row row-cols-1 row-cols-{{ $breakpoint.current }}-2 row-cols-{{ $breakpoint.next }}-3">
|
||||||
<div class="col col-md-3 col-lg-2 d-none pt-5 d-md-block sidebar-overflow sticky-top">
|
<div class="col col-{{ $breakpoint.next }}-2 d-none d-{{ $breakpoint.next }}-block sidebar-overflow sticky-top pt-5">
|
||||||
{{ $sidebar | safeHTML }}
|
{{ $sidebar | safeHTML }}
|
||||||
</div>
|
</div>
|
||||||
<div class="col col-md-9 col-lg-8 mb-5 p-4">
|
<div class="col-12 col-{{ $breakpoint.current }}-9 col-{{ $breakpoint.next }}-8 mb-5 p-4">
|
||||||
{{ partial "partials/single-main.html" . }}
|
{{ partial "partials/single-main.html" . }}
|
||||||
</div>
|
</div>
|
||||||
<div class="col col-lg-2 d-none d-lg-block pt-5">
|
<div class="col col-{{ $breakpoint.current }}-3 col-{{ $breakpoint.next }}-2 d-none d-{{ $breakpoint.current }}-block pt-5">
|
||||||
{{ $toc | safeHTML }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{ else if $hasSidebar }}
|
|
||||||
<div class="row row-cols-1 row-cols-sm-3">
|
|
||||||
<div class="col col-md-2 d-none d-md-block"></div>
|
|
||||||
<div class="col col-sm-12 col-md-8">
|
|
||||||
{{ partial "partials/single-main.html" . }}
|
|
||||||
</div>
|
|
||||||
<div class="col col-md-2 d-none d-md-block">
|
|
||||||
{{ $toc | safeHTML }}
|
{{ $toc | safeHTML }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{ else }}
|
{{ else }}
|
||||||
<div class="row row-cols-1 row-cols-sm-2">
|
<div class="row row-cols-1 row-cols-{{ $breakpoint.current }}-2">
|
||||||
<div class="col col-sm-12 col-md-9">
|
<div class="col col-{{ $breakpoint.prev }}-12 col-{{ $breakpoint.current }}-9">
|
||||||
{{ partial "partials/single-main.html" . }}
|
{{ partial "partials/single-main.html" . }}
|
||||||
</div>
|
</div>
|
||||||
<div class="col col-md-3 d-none d-md-block">
|
<div class="col col-{{ $breakpoint.current }}-3 d-none d-{{ $breakpoint.current }}-block">
|
||||||
{{ $toc | safeHTML }}
|
{{ $toc | safeHTML }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -21,9 +21,18 @@
|
|||||||
|
|
||||||
<div class="toc toc-sidebar mb-5 my-md-0 ps-xl-3 mb-lg-5 p-3 text-body-secondary sticky-top">
|
<div class="toc toc-sidebar mb-5 my-md-0 ps-xl-3 mb-lg-5 p-3 text-body-secondary sticky-top">
|
||||||
{{ with $download }}
|
{{ with $download }}
|
||||||
|
{{ $title := (T "download" ) }}
|
||||||
|
{{ $lang := strings.TrimPrefix "." (path.Ext (path.BaseName .)) }}
|
||||||
|
{{ if and $lang (ne (string site.LanguageCode) $lang) }}
|
||||||
|
{{ range site.Languages }}
|
||||||
|
{{ if eq .LanguageCode $lang }}
|
||||||
|
{{ $title = printf "%s (%s)" (T "download") (T (printf "lang_%s" .LanguageCode)) }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
<div class="mb-5 text-center">
|
<div class="mb-5 text-center">
|
||||||
{{ $attr := dict "download" (path.Base .) }}
|
{{ $attr := dict "download" (path.Base .) }}
|
||||||
{{ partial "assets/button.html" (dict "href" . "title" (T "download" ) "color" "primary" "outline" "true" "icon" "fas download" "size" "sm" "attributes" $attr) }}
|
{{ partial "assets/button.html" (dict "href" . "title" $title "color" "primary" "outline" "true" "icon" "fas download" "size" "sm" "attributes" $attr) }}
|
||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
|
@@ -1,6 +1,24 @@
|
|||||||
|
<!--
|
||||||
|
Copyright © 2023 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">
|
<nav aria-label="breadcrumb">
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
{{- range $index, $item := .Page.Ancestors.Reverse -}}
|
{{- range $index, $item := $page.Ancestors.Reverse -}}
|
||||||
{{- $title := .LinkTitle -}}
|
{{- $title := .LinkTitle -}}
|
||||||
{{- if .IsHome }}{{ $title = T "home" }}{{ end -}}
|
{{- if .IsHome }}{{ $title = T "home" }}{{ end -}}
|
||||||
{{- $address := or .RelPermalink (.Params.Redirect | relLangURL) -}}
|
{{- $address := or .RelPermalink (.Params.Redirect | relLangURL) -}}
|
||||||
@@ -10,6 +28,6 @@
|
|||||||
<li class="breadcrumb-item">{{ $title }}</li>
|
<li class="breadcrumb-item">{{ $title }}</li>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{- 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>
|
</ol>
|
||||||
</nav>
|
</nav>
|
||||||
|
@@ -1,73 +1,32 @@
|
|||||||
<!--
|
<!--
|
||||||
Displays a button. The shortcode supports the following arguments:
|
Copyright © 2023 The Hinode Team / Mark Dumay. All rights reserved.
|
||||||
"title" Title of the button, required unless icon is set.
|
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
|
||||||
"href" Optional address for the button or hyperlink.
|
Visit gethinode.com/license for more details.
|
||||||
"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".
|
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
{{ $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" -}}
|
{{- $title := trim .title " \r\n" -}}
|
||||||
{{- $icon := .icon }}
|
{{- $icon := .icon }}
|
||||||
{{- if not (or $title $icon) -}}
|
{{- if not (or $title $icon) -}}
|
||||||
{{- errorf "partial [assets/button.html] - Missing element title or icon" -}}
|
{{- errorf "partial [assets/button.html] - Missing element title or icon" -}}
|
||||||
|
{{ $error = true }}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
{{- $id := .id }}
|
{{- $id := .id }}
|
||||||
|
{{- $state := .state | default "enabled" -}}
|
||||||
{{- $state := "enabled" -}}
|
{{- $size := .size | default "md" -}}
|
||||||
{{- with .state }}{{ $state = . }}{{ end -}}
|
{{- $color := .color | default "primary" -}}
|
||||||
{{- $supportedStates := slice "enabled" "disabled" "active" "inactive" -}}
|
{{- $outline := .outline | default false -}}
|
||||||
{{- if not (in $supportedStates $state) -}}
|
{{- $badge := .badge | default "" -}}
|
||||||
{{- errorf "partial [assets/button.html] - Invalid value for param 'state': %s" $state -}}
|
{{- $label := .label | default $title -}}
|
||||||
{{- 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 -}}
|
|
||||||
|
|
||||||
{{- $tooltip := "" -}}
|
{{- $tooltip := "" -}}
|
||||||
{{- if not (strings.HasSuffix $state "active") -}}
|
{{- if not (strings.HasSuffix $state "active") -}}
|
||||||
@@ -75,58 +34,28 @@
|
|||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
{{- $href := .href -}}
|
{{- $href := .href -}}
|
||||||
|
|
||||||
{{- $collapse := "" -}}
|
{{- $collapse := "" -}}
|
||||||
{{- if not (strings.HasSuffix $state "active") -}}
|
{{- if not (strings.HasSuffix $state "active") -}}
|
||||||
{{- with .collapse }}{{ $collapse = . }}{{ $href = printf "#%s" . }}{{ end -}}
|
{{- with .collapse }}{{ $collapse = . }}{{ $href = printf "#%s" . }}{{ end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
{{- if $tooltip -}}
|
{{- if and $tooltip $collapse -}}
|
||||||
{{- if $collapse -}}
|
{{- errorf "partial [assets/button.html] - Cannot use tooltip and collapse at the same time" -}}
|
||||||
{{- errorf "partial [assets/button.html] - Cannot use tooltip and collapse at the same time" -}}
|
{{ $error = true }}
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
{{- $type := .type | default "button" -}}
|
||||||
{{- $type := "button" -}}
|
{{- $placement := .placement | default "top" -}}
|
||||||
{{- with .type }}{{ $type = . }}{{ end -}}
|
{{- $class := .class | default "" }}
|
||||||
{{- $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 }}
|
|
||||||
{{ with $badge }}{{ $class = printf "%s me-3" $class }}{{ end }}
|
{{ with $badge }}{{ $class = printf "%s me-3" $class }}{{ end }}
|
||||||
|
{{- $order := .order | default "last" -}}
|
||||||
{{- $order := "last" -}}
|
{{- $justify := .justify | default "center" -}}
|
||||||
{{- 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 -}}
|
|
||||||
|
|
||||||
{{- $toast := .toast -}}
|
{{- $toast := .toast -}}
|
||||||
{{- $clipboard := .clipboard -}}
|
{{- $clipboard := .clipboard -}}
|
||||||
|
|
||||||
{{- $cue := .cue | default site.Params.main.externalLinks.cue -}}
|
{{- $cue := .cue | default site.Params.main.externalLinks.cue -}}
|
||||||
{{- $tab := .tab | default site.Params.main.externalLinks.tab -}}
|
{{- $tab := .tab | default site.Params.main.externalLinks.tab -}}
|
||||||
{{- $isExternal := ne (urls.Parse (absURL $href)).Host (urls.Parse site.BaseURL).Host -}}
|
{{- $isExternal := ne (urls.Parse (absURL $href)).Host (urls.Parse site.BaseURL).Host -}}
|
||||||
{{- $target := "" -}}
|
{{- $target := "" -}}
|
||||||
{{- $rel := "" -}}
|
{{- $rel := "" -}}
|
||||||
|
|
||||||
{{- $spacing := .spacing | default true -}}
|
{{- $spacing := .spacing | default true -}}
|
||||||
|
|
||||||
{{- if $isExternal -}}
|
{{- if $isExternal -}}
|
||||||
@@ -143,31 +72,35 @@
|
|||||||
|
|
||||||
{{- $attributes := .attributes -}}
|
{{- $attributes := .attributes -}}
|
||||||
|
|
||||||
<a aria-label="{{ (or $label $title) | safeHTML }}" {{ if ne $state "disabled" }}{{ with $href }}href="{{ . }}"{{ end }}{{ end -}}
|
<!-- Main code -->
|
||||||
{{- with $id }} id="{{ . }}"{{ end -}}
|
{{ if not $error }}
|
||||||
{{- with $target }} target="{{ . }}"{{ end }}{{ with $rel }} rel="{{ . }}"{{ end -}}
|
<a aria-label="{{ (or $label $title) | safeHTML }}"
|
||||||
{{- with $toast }} data-toast-target="{{ $toast }}"{{ end -}}
|
{{ if ne $state "disabled" }}{{ with $href }}href="{{ . }}"{{ end }}{{ end -}}
|
||||||
{{- with $clipboard }} data-clipboard="{{ $clipboard }}"{{ end -}}
|
{{- with $id }} id="{{ . }}"{{ 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 -}}"
|
{{- with $target }} target="{{ . }}"{{ end }}{{ with $rel }} rel="{{ . }}"{{ end -}}
|
||||||
role="button" {{ if eq $state "disabled" }}aria-disabled="true"{{ end -}}
|
{{- with $toast }} data-toast-target="{{ $toast }}"{{ end -}}
|
||||||
{{- else }} class="link-{{ $color }} position-relative {{ $class }}"{{ end -}}
|
{{- with $clipboard }} data-clipboard="{{ $clipboard }}"{{ end -}}
|
||||||
{{- with $tooltip }} data-bs-toggle="tooltip" data-bs-title="{{ . }}" data-bs-placement="{{ $placement }}"{{ 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 -}}"
|
||||||
{{- with $collapse }} data-bs-toggle="collapse" aria-expanded="false" aria-controls="{{ . }}"{{ end -}}
|
role="button" {{ if eq $state "disabled" }}aria-disabled="true"{{ end -}}
|
||||||
{{- if eq $state "active" }} data-bs-toggle="button" aria-pressed="true"{{ end -}}
|
{{- else }} class="link-{{ $color }} position-relative {{ $class }}"{{ end -}}
|
||||||
{{- if eq $state "inactive" }} data-bs-toggle="button" aria-pressed="false"{{ end -}}
|
{{- with $tooltip }} data-bs-toggle="tooltip" data-bs-title="{{ . }}" data-bs-placement="{{ $placement }}"{{ end -}}
|
||||||
{{- range $key, $val := $attributes -}}
|
{{- with $collapse }} data-bs-toggle="collapse" aria-expanded="false" aria-controls="{{ . }}"{{ end -}}
|
||||||
{{ printf " %s=\"%s\"" $key $val | safeHTMLAttr }}
|
{{- if eq $state "active" }} data-bs-toggle="button" aria-pressed="true"{{ end -}}
|
||||||
{{- end -}}
|
{{- if eq $state "inactive" }} data-bs-toggle="button" aria-pressed="false"{{ end -}}
|
||||||
>
|
{{- range $key, $val := $attributes -}}
|
||||||
<div class="d-flex justify-content-{{ $justify }}">
|
{{ printf " %s=\"%s\"" $key $val | safeHTMLAttr }}
|
||||||
<div class="my-auto">{{ $title | safeHTML }}</div>
|
{{- end -}}
|
||||||
{{- 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>
|
<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 }}
|
{{- with $badge }}
|
||||||
<span class="position-absolute top-0 start-100 translate-middle badge rounded-pill bg-danger">
|
<span class="position-absolute top-0 start-100 translate-middle badge rounded-pill bg-danger">
|
||||||
{{ . }}
|
{{ . }}
|
||||||
{{ with $label }}<span class="visually-hidden">{{ . }}</span>{{ end }}
|
{{ with $label }}<span class="visually-hidden">{{ . }}</span>{{ end }}
|
||||||
</span>
|
</span>
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
</a>{{ if $spacing }} {{- end }}
|
</a>{{ if $spacing }} {{- end }}
|
||||||
|
{{ end }}
|
@@ -1,72 +1,46 @@
|
|||||||
<!--
|
<!--
|
||||||
Displays a grid of Bootstrap cards with 1 to 5 columns. The cards are rendered using a provided list of pages.
|
Copyright © 2023 The Hinode Team / Mark Dumay. All rights reserved.
|
||||||
Cards on the same row are aligned to each other. The grid renders pages up to a provided maximum amount. The
|
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
|
||||||
remaining items are accessible via either a paginator or button to a list page (default behavior). Be aware a page
|
Visit gethinode.com/license for more details.
|
||||||
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).
|
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
<!-- Validate arguments -->
|
||||||
|
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "card-group" "child" "card" "args" .) }}
|
||||||
|
{{- errorf "partial [assets/card.html] - Invalid arguments" -}}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
<!-- Initialize arguments and default values -->
|
||||||
{{- $page := .page -}}
|
{{- $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 }}
|
{{ $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 }}
|
{{ $cards := .cards }}
|
||||||
|
{{- $paginate := .paginate | default false -}}
|
||||||
|
{{- $moreURL := .href -}}
|
||||||
|
{{- $moreTitle := .hrefTitle -}}
|
||||||
|
{{- $gutter := .gutter | default 4 -}}
|
||||||
|
{{- $separator := .separator | default false -}}
|
||||||
|
{{- $class := .class -}}
|
||||||
|
{{- $color := .color -}}
|
||||||
|
{{- $padding := .padding -}}
|
||||||
|
{{- $header := .header -}}
|
||||||
|
{{- $footer := .footer -}}
|
||||||
|
{{- $orientation := .orientation -}}
|
||||||
|
{{- $ratio := .ratio -}}
|
||||||
|
{{- $wrapper := .wrapper | default "p-0" -}}
|
||||||
|
{{- $loading := .loading -}}
|
||||||
|
|
||||||
{{- $paginate := false -}}
|
<!-- Override arguments -->
|
||||||
{{- with .paginate -}}
|
|
||||||
{{- if ne (printf "%T" .) "bool" -}}
|
|
||||||
{{- errorf "partial [assets/card-group.html] - Invalid value for param 'paginate'" -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- $paginate = . -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{ $paginator := "" }}
|
{{ $paginator := "" }}
|
||||||
{{ if $paginate }}
|
{{ if $paginate }}
|
||||||
{{ $paginator = $page.Paginate $pages }}
|
{{ $paginator = $page.Paginate $pages }}
|
||||||
{{ $pages = first $paginator.PageSize (after (mul (sub $paginator.PageNumber 1) $paginator.PageSize) $pages) }}
|
{{ $pages = first $paginator.PageSize (after (mul (sub $paginator.PageNumber 1) $paginator.PageSize) $pages) }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{ $list := slice }}
|
{{ $list := slice }}
|
||||||
{{ range $index, $element := $pages }}
|
{{ range $index, $element := $pages }}
|
||||||
{{ $params := dict }}
|
{{ $params := dict }}
|
||||||
<!-- regular page -->
|
<!-- regular page -->
|
||||||
{{- if $element.RelPermalink -}}
|
{{- if and $element.RelPermalink $element.File -}}
|
||||||
{{- $params = merge $params (dict "path" $element.File.Path) -}}
|
{{- $params = merge $params (dict "path" $element.File.Path) -}}
|
||||||
<!-- headless page -->
|
<!-- headless page -->
|
||||||
{{- else -}}
|
{{- else -}}
|
||||||
@@ -85,75 +59,25 @@
|
|||||||
|
|
||||||
{{- $count := len $list -}}
|
{{- $count := len $list -}}
|
||||||
{{- $max := $count -}}
|
{{- $max := $count -}}
|
||||||
{{- with .max }}
|
{{- $max = math.Min (.max | default $count) $count -}}
|
||||||
{{- 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 -}}
|
{{- $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" -}}
|
{{- $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 := "" -}}
|
{{- $colGrid := "" -}}
|
||||||
{{- if eq $cols "1" }}{{ $colGrid = "row-cols-1" -}}
|
{{- if eq $cols "1" }}{{ $colGrid = "row-cols-1" -}}
|
||||||
{{- else if eq $cols "2" }}{{ if $responsive }}{{ $colGrid = "row-cols-1 row-cols-sm-1 row-cols-md-2" }}{{ else }}{{ $colGrid = "row-cols-2" }}{{ end -}}
|
{{- 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 = "row-cols-1 row-cols-sm-2 row-cols-md-3" }}{{ else }}{{ $colGrid = "row-cols-3" }}{{ 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 = "row-cols-1 row-cols-sm-2 row-cols-md-4" }}{{ else }}{{ $colGrid = "row-cols-4" }}{{ 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 = "row-cols-1 row-cols-sm-3 row-cols-md-5" }}{{ else }}{{ $colGrid = "row-cols-5" }}{{ 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 -}}
|
{{ 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 -}}
|
{{- if not $paginate -}}
|
||||||
{{- $list = first $max $list -}}
|
{{- $list = first $max $list -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
{{- $moreURL := .href -}}
|
{{- if and (eq $cols "1") (eq $orientation "horizontal") }}{{ $orientation = "horizontal-sm" }}{{ end -}}
|
||||||
{{- $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 -}}
|
|
||||||
|
|
||||||
{{- $class := .class -}}
|
|
||||||
{{- $color := .color -}}
|
|
||||||
{{- $padding := .padding -}}
|
|
||||||
{{- $header := .header -}}
|
|
||||||
{{- $footer := .footer -}}
|
|
||||||
{{- $orientation := .orientation -}}
|
|
||||||
{{- $ratio := .ratio -}}
|
|
||||||
{{- $wrapper := .wrapper | default "p-0" -}}
|
|
||||||
|
|
||||||
{{- $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 -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{- if and (eq $cols 1) (eq $orientation "horizontal") }}{{ $orientation = "horizontal-sm" }}{{ end -}}
|
|
||||||
|
|
||||||
|
<!-- Main code -->
|
||||||
<div class="container-fluid {{ $wrapper }}">
|
<div class="container-fluid {{ $wrapper }}">
|
||||||
<div class="row {{ $colGrid }} g-{{ $gutter }}">
|
<div class="row {{ $colGrid }} g-{{ $gutter }}">
|
||||||
{{ range $index, $element := $list }}
|
{{ range $index, $element := $list }}
|
||||||
|
@@ -1,31 +1,49 @@
|
|||||||
<!--
|
<!--
|
||||||
Displays a Bootstrap card. Either specify a valid path, or set the arguments title, href, header, description, and
|
Copyright © 2023 The Hinode Team / Mark Dumay. All rights reserved.
|
||||||
thumbnail individually. The latter arguments override any page attributes.
|
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.
|
||||||
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".
|
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
<!-- 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 -}}
|
||||||
|
{{- $loading := .loading -}}
|
||||||
|
{{- $orientation := .orientation | default "stacked" -}}
|
||||||
|
{{- $padding := .padding | default "auto" -}}
|
||||||
|
{{- $ratio := .ratio -}}
|
||||||
|
{{- $thumbnail := .thumbnail -}}
|
||||||
|
{{- $title := .title -}}
|
||||||
|
|
||||||
|
<!-- 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 eq $orientation "none" }}{{ $thumbnail = "" }}{{ $icon = "" }}{{ end -}}
|
||||||
|
|
||||||
<!-- Inline partial to render the card's body -->
|
<!-- Inline partial to render the card's body -->
|
||||||
{{- define "partials/card-body.html" -}}
|
{{- define "partials/card-body.html" -}}
|
||||||
{{- $title := .title -}}
|
{{- $title := .title -}}
|
||||||
@@ -77,90 +95,16 @@
|
|||||||
</small></p>
|
</small></p>
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
{{- $page := "" }}
|
<!-- Main code -->
|
||||||
{{- 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 -}}
|
|
||||||
|
|
||||||
{{ if ne $gutter "0" }}<div class="g-{{ $gutter }}">{{ end }}
|
{{ if ne $gutter "0" }}<div class="g-{{ $gutter }}">{{ end }}
|
||||||
|
|
||||||
{{- if hasPrefix $orientation "horizontal" -}}
|
{{- if hasPrefix $orientation "horizontal" -}}
|
||||||
|
<!-- Render horizontal card -->
|
||||||
<div class="card {{ with $color }}bg-{{ . }} text-bg-{{ . }}{{ end }} {{ $class }}">
|
<div class="card {{ with $color }}bg-{{ . }} text-bg-{{ . }}{{ end }} {{ $class }}">
|
||||||
<div class="row g-0 row-cols-1 h-100">
|
<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="col-4{{ if eq $orientation "horizontal-sm" }} col-md-2{{ end }}">
|
||||||
{{- if $thumbnail -}}
|
{{- 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 -}}
|
{{- else if $icon -}}
|
||||||
<div class="card-icon p-{{ $padding }} h-100 fa-wrapper d-flex align-items-center justify-content-center">
|
<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)) -}}
|
{{- partial "assets/icon.html" (dict "icon" (printf "%s fa-fluid fa-fw" $icon)) -}}
|
||||||
@@ -179,9 +123,10 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{- else -}}
|
{{- else -}}
|
||||||
|
<!-- Render stacked / default card -->
|
||||||
<div class="card {{ with $color }}bg-{{ . }} text-bg-{{ . }}{{ end }} {{ $class }}">
|
<div class="card {{ with $color }}bg-{{ . }} text-bg-{{ . }}{{ end }} {{ $class }}">
|
||||||
{{- if $thumbnail -}}
|
{{- 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 -}}
|
{{- else if $icon -}}
|
||||||
<div class="card-icon p-{{ $padding }}">
|
<div class="card-icon p-{{ $padding }}">
|
||||||
{{- partial "assets/icon.html" (dict "icon" (printf "%s fa-4x" $icon)) -}}
|
{{- partial "assets/icon.html" (dict "icon" (printf "%s fa-4x" $icon)) -}}
|
||||||
@@ -194,4 +139,5 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
{{ if ne $gutter "0" }}</div>{{ end }}
|
{{ if ne $gutter "0" }}</div>{{ end }}
|
||||||
|
@@ -1,20 +1,29 @@
|
|||||||
|
<!--
|
||||||
|
Copyright © 2023 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 -}}
|
{{- $page := .page -}}
|
||||||
{{- $active := .active -}}
|
{{- $active := .active -}}
|
||||||
{{- $src := .src -}}
|
{{- $src := .src -}}
|
||||||
{{- $caption := .caption -}}
|
{{- $caption := .caption -}}
|
||||||
{{- $ratio := .ratio -}}
|
{{- $ratio := .ratio -}}
|
||||||
{{- $portrait := .portrait -}}
|
{{- $portrait := .portrait -}}
|
||||||
|
{{- $loading := .loading | default "eager" -}}
|
||||||
|
|
||||||
{{- $loading := .loading -}}
|
<!-- Main code -->
|
||||||
{{- $validSettings := slice "lazy" "eager" -}}
|
<div class="carousel-item{{ if $active }} active{{ end }}" {{ if not $active }} fetchpriority="low"{{ end }}>
|
||||||
{{- if $loading -}}
|
{{ partial "assets/image.html" (dict "url" $src "ratio" $ratio "page" $page "class" "d-block w-100" "portrait" $portrait "loading" $loading) }}
|
||||||
{{ if not (in $validSettings $loading) -}}
|
|
||||||
{{- errorf "partial [assets/carousel-item.html] - Invalid value for param 'loading': %s" $loading -}}
|
|
||||||
{{ end -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
<div class="carousel-item{{ if $active }} active{{ end }}">
|
|
||||||
{{ partial "assets/image.html" (dict "url" $src "ratio" $ratio "page" $page "innerClass" "d-block w-100" "portrait" $portrait "loading" $loading) }}
|
|
||||||
<div class="carousel-caption gradient"></div>
|
<div class="carousel-caption gradient"></div>
|
||||||
{{ with $caption }}
|
{{ with $caption }}
|
||||||
<div class="carousel-caption d-none d-md-block">
|
<div class="carousel-caption d-none d-md-block">
|
||||||
|
@@ -1,68 +1,38 @@
|
|||||||
<!--
|
<!--
|
||||||
Render a local or remote image with responsive image sizing. Images are resized using default media breakpoints
|
Copyright © 2023 The Hinode Team / Mark Dumay. All rights reserved.
|
||||||
and are converted to webp format. The image is processed using the quality setting specified in the [imaging]
|
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
|
||||||
section of the main config file (defaults to 75). A fallback image is provided for older browsers. The image is
|
Visit gethinode.com/license for more details.
|
||||||
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.
|
|
||||||
"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.
|
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
{{ $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 -}}
|
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
|
||||||
{{- $validRatios := slice "1x1" "3x2" "4x3" "16x9" "21x9" -}}
|
|
||||||
{{- $ratio := .ratio -}}
|
{{- $ratio := .ratio -}}
|
||||||
{{- if $ratio -}}
|
|
||||||
{{ if not (in $validRatios $ratio) -}}
|
|
||||||
{{- errorf "partial [assets/image.html] - Invalid value for param 'ratio'" -}}
|
|
||||||
{{ end -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- $portrait := .portrait -}}
|
{{- $portrait := .portrait -}}
|
||||||
{{- $url := .url -}}
|
{{- $url := .url -}}
|
||||||
|
|
||||||
{{- $mode := false -}}
|
{{- $mode := .mode -}}
|
||||||
{{- with .mode }}{{ $mode = . }}{{ end -}}
|
{{- $modes := site.Params.main.modes | default (slice "light" "dark") -}}
|
||||||
{{- $outerClass := .outerClass -}}
|
{{- $wrapper := .wrapper -}}
|
||||||
{{- $innerClass := .innerClass -}}
|
{{- $class := .class -}}
|
||||||
{{- $title := .title -}}
|
{{- $title := .title -}}
|
||||||
{{- $caption := .caption -}}
|
{{- $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 -}}
|
{{- $page := .page -}}
|
||||||
|
|
||||||
{{- $loading := .loading -}}
|
{{- $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" -}}
|
{{- $lazy := eq $loading "lazy" -}}
|
||||||
|
{{- $priority := .priority -}}
|
||||||
|
{{- if eq $priority "auto" }}{{ $priority = "" }}{{ end -}}
|
||||||
|
|
||||||
{{- define "partials/image-portrait.html" -}}
|
{{- define "partials/image-portrait.html" -}}
|
||||||
{{- $dimensions := slice }}
|
{{- $dimensions := slice }}
|
||||||
@@ -124,7 +94,6 @@
|
|||||||
{{- return $fallback -}}
|
{{- return $fallback -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
|
|
||||||
<!-- Generate a image set of type webp -->
|
<!-- Generate a image set of type webp -->
|
||||||
{{- define "partials/image-scaled.html " -}}
|
{{- define "partials/image-scaled.html " -}}
|
||||||
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
|
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
|
||||||
@@ -185,8 +154,8 @@
|
|||||||
{{- $ratio := .ratio -}}
|
{{- $ratio := .ratio -}}
|
||||||
{{- $portrait := .portrait -}}
|
{{- $portrait := .portrait -}}
|
||||||
{{- $url := .url -}}
|
{{- $url := .url -}}
|
||||||
{{- $outerClass := .outerClass -}}
|
{{- $wrapper := .wrapper -}}
|
||||||
{{- $innerClass := .innerClass -}}
|
{{- $class := .class -}}
|
||||||
{{- $title := .title -}}
|
{{- $title := .title -}}
|
||||||
{{- $caption := .caption -}}
|
{{- $caption := .caption -}}
|
||||||
{{- $fallbackURL := "" -}}
|
{{- $fallbackURL := "" -}}
|
||||||
@@ -196,6 +165,7 @@
|
|||||||
{{- $modes := .modes -}}
|
{{- $modes := .modes -}}
|
||||||
{{- $lazy := .lazy -}}
|
{{- $lazy := .lazy -}}
|
||||||
{{- $page := .page -}}
|
{{- $page := .page -}}
|
||||||
|
{{- $priority := .priority -}}
|
||||||
{{- $isVector := false -}}
|
{{- $isVector := false -}}
|
||||||
|
|
||||||
{{- $segments := split $url "#" -}}
|
{{- $segments := split $url "#" -}}
|
||||||
@@ -209,12 +179,18 @@
|
|||||||
{{- if hasSuffix $url "svg" -}}
|
{{- if hasSuffix $url "svg" -}}
|
||||||
{{- $fallbackURL = $url -}}
|
{{- $fallbackURL = $url -}}
|
||||||
{{- $isVector = true -}}
|
{{- $isVector = true -}}
|
||||||
|
{{- $res := partial "utilities/GetResource.html" (dict "url" $url "page" $page) -}}
|
||||||
|
{{ if not $res }}
|
||||||
|
{{- if not (fileExists (path.Join "/static" $url)) -}}
|
||||||
|
{{ warnf "Cannot find vector image resource: %q" $url -}}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
{{- else -}}
|
{{- else -}}
|
||||||
{{- $res := partial "utilities/GetImage.html" (dict "url" $url "page" $page) -}}
|
{{- $res := partial "utilities/GetImage.html" (dict "url" $url "page" $page) -}}
|
||||||
{{- $img := "" -}}
|
{{- $img := "" -}}
|
||||||
{{ with $res }}
|
{{ with $res }}
|
||||||
{{ $img = $res.resource }}
|
{{ $img = $res.resource }}
|
||||||
{{ if $res.mirror }}{{ $innerClass = printf "%s mirrorred" $innerClass }}{{ end }}
|
{{ if $res.mirror }}{{ $class = printf "%s mirrorred" $class }}{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{- if $img -}}
|
{{- if $img -}}
|
||||||
{{- $fallback := partial "partials/image-default.html" (dict "img" $img "ratio" $ratio "portrait" $portrait) -}}
|
{{- $fallback := partial "partials/image-default.html" (dict "img" $img "ratio" $ratio "portrait" $portrait) -}}
|
||||||
@@ -229,7 +205,7 @@
|
|||||||
|
|
||||||
{{- range $none := $modes -}}
|
{{- range $none := $modes -}}
|
||||||
{{- if ne $none $mode -}}
|
{{- if ne $none $mode -}}
|
||||||
{{- $outerClass = printf "%s d-none-%s" (or $outerClass "") $none -}}
|
{{- $wrapper = printf "%s d-none-%s" (or $wrapper "") $none -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
@@ -248,19 +224,20 @@
|
|||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
||||||
{{- if $caption -}}
|
{{- if $caption -}}
|
||||||
<figure {{ with $outerClass }}class="{{ . }}"{{ end }}>
|
<figure {{ with $wrapper }}class="{{ . }}"{{ end }}>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<div class="{{ if not $caption }}{{ $outerClass }}{{ end }}">
|
<div class="{{ if not $caption }}{{ $wrapper }}{{ end }}">
|
||||||
{{- if not $anchor -}}
|
{{- if not $anchor -}}
|
||||||
<img class="img-fluid {{ $innerClass }}"
|
<img class="img-fluid {{ $class }}"
|
||||||
src="{{ $fallbackURL }}"
|
src="{{ $fallbackURL }}"
|
||||||
{{ if $lazy }}loading="lazy"{{ end }}
|
{{ if $lazy }}loading="lazy"{{ end }}
|
||||||
|
{{ with $priority }}fetchpriority="{{ . }}"{{ end }}
|
||||||
{{ with $imgset -}}srcset="{{ . }}" sizes="100vw"{{- end }}
|
{{ with $imgset -}}srcset="{{ . }}" sizes="100vw"{{- end }}
|
||||||
{{ with $height }}height="{{ . }}"{{ end }}
|
{{ with $height }}height="{{ . }}"{{ end }}
|
||||||
{{ with $width }}width="{{ . }}"{{ end }}
|
{{ with $width }}width="{{ . }}"{{ end }}
|
||||||
{{ with $title }}alt="{{ . }}"{{ end }}>
|
{{ with $title }}alt="{{ . }}"{{ end }}>
|
||||||
{{- else }}
|
{{- else }}
|
||||||
<svg class="{{ $innerClass }}">
|
<svg class="{{ $class }}">
|
||||||
<use href="{{ $fallbackURL }}#{{ $anchor }}"></use>
|
<use href="{{ $fallbackURL }}#{{ $anchor }}"></use>
|
||||||
</svg>
|
</svg>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
@@ -271,17 +248,17 @@
|
|||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
|
|
||||||
<!-- Initiate the regular or color-mode image -->
|
<!-- Initiate the regular or color-mode image -->
|
||||||
{{ $params := dict }}
|
{{ $params := dict }}
|
||||||
{{- $params = merge $params (dict
|
{{- $params = merge $params (dict
|
||||||
"ratio" $ratio
|
"ratio" $ratio
|
||||||
"portrait" $portrait
|
"portrait" $portrait
|
||||||
"outerClass" $outerClass
|
"wrapper" $wrapper
|
||||||
"innerClass" $innerClass
|
"class" $class
|
||||||
"title" $title
|
"title" $title
|
||||||
"caption" $caption
|
"caption" $caption
|
||||||
"lazy" $lazy
|
"lazy" $lazy
|
||||||
|
"priority" $priority
|
||||||
"page" $page)
|
"page" $page)
|
||||||
-}}
|
-}}
|
||||||
|
|
||||||
|
@@ -1,9 +1,20 @@
|
|||||||
{{ $destination := .destination }}
|
<!--
|
||||||
{{- if not $destination -}}
|
Copyright © 2023 The Hinode Team / Mark Dumay. All rights reserved.
|
||||||
{{- errorf "partial [utilities/link.html] - Missing param 'destination'" -}}
|
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
|
||||||
{{- end -}}
|
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 := "" -}}
|
{{- $target := "" -}}
|
||||||
{{- $rel := "" -}}
|
{{- $rel := "" -}}
|
||||||
{{- $case := .case | default true }}
|
{{- $case := .case | default true }}
|
||||||
@@ -15,6 +26,7 @@
|
|||||||
{{- $text := .text -}}
|
{{- $text := .text -}}
|
||||||
{{- $class := .class -}}
|
{{- $class := .class -}}
|
||||||
|
|
||||||
|
<!-- Main code -->
|
||||||
{{- if $isExternal -}}
|
{{- if $isExternal -}}
|
||||||
{{- if not $text -}}
|
{{- if not $text -}}
|
||||||
{{- $text = (urls.Parse (absURL $destination)).Host -}}
|
{{- $text = (urls.Parse (absURL $destination)).Host -}}
|
||||||
@@ -33,7 +45,7 @@
|
|||||||
{{- if strings.Contains $destination "#" }}
|
{{- if strings.Contains $destination "#" }}
|
||||||
{{ $segments := split $destination "#" }}
|
{{ $segments := split $destination "#" }}
|
||||||
{{- if ne (len $segments) 2 }}
|
{{- 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 }}
|
{{ else }}
|
||||||
{{- $destination = index $segments 0 -}}
|
{{- $destination = index $segments 0 -}}
|
||||||
{{- $anchor = index $segments 1 -}}
|
{{- $anchor = index $segments 1 -}}
|
||||||
@@ -42,7 +54,7 @@
|
|||||||
|
|
||||||
{{ $ref := partial "utilities/GetPage.html" (dict "url" $destination "page" $page) }}
|
{{ $ref := partial "utilities/GetPage.html" (dict "url" $destination "page" $page) }}
|
||||||
{{- if not $ref -}}
|
{{- 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 -}}
|
{{- $error = true -}}
|
||||||
{{- else -}}
|
{{- else -}}
|
||||||
{{- $destination = $ref.RelPermalink -}}
|
{{- $destination = $ref.RelPermalink -}}
|
@@ -1,19 +1,19 @@
|
|||||||
<!--
|
|
||||||
Defines an individual nav item. The shortcode supports the following arguments:
|
|
||||||
|
|
||||||
"id" Required unique ID of the nav-item.
|
<!--
|
||||||
"parentID" Required ID of the parent (e.g. nav control).
|
Copyright © 2023 The Hinode Team / Mark Dumay. All rights reserved.
|
||||||
"class" Optional class attributes to be added to the nav-item.
|
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
|
||||||
"fade" Optional flag to make the tab pane fade in.
|
Visit gethinode.com/license for more details.
|
||||||
"header" Required header of the nav item.
|
|
||||||
"class" Optional class attribute of the nav item.
|
|
||||||
"body" The body content of the nav-item, supports Markdown and HTML (if enabled).
|
|
||||||
"show" Optional flag to indicate the item should be shown as expanded (only one can be shown at a time).
|
|
||||||
"disabled" Optional flag to indicate the item should be in a disabled state.
|
|
||||||
"type" Optional type of the item to render, supports "accordion" as alternative format. Defaults to
|
|
||||||
"tab-pane".
|
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
{{ $error := false -}}
|
||||||
|
|
||||||
|
<!-- Validate arguments -->
|
||||||
|
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "nav-item" "args" . "group" "partial") }}
|
||||||
|
{{ errorf "partial [assets/nav-item.html] - Invalid arguments" -}}
|
||||||
|
{{ $error = true }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
<!-- Initialize arguments -->
|
||||||
{{- $id := .id -}}
|
{{- $id := .id -}}
|
||||||
{{- $parentID := .parentID -}}
|
{{- $parentID := .parentID -}}
|
||||||
{{- $class := .class -}}
|
{{- $class := .class -}}
|
||||||
@@ -23,9 +23,10 @@
|
|||||||
{{- $body := .body -}}
|
{{- $body := .body -}}
|
||||||
{{- $show := .show -}}
|
{{- $show := .show -}}
|
||||||
{{- $disabled := .disabled -}}
|
{{- $disabled := .disabled -}}
|
||||||
{{- $type := .type -}}
|
{{- $type := .item_type -}}
|
||||||
{{- $illustration := .illustration -}}
|
{{- $illustration := .illustration -}}
|
||||||
|
|
||||||
|
<!-- Main code -->
|
||||||
{{ if eq $type "accordion" }}
|
{{ if eq $type "accordion" }}
|
||||||
<div class="accordion-item{{ if $show }} show{{ end }}{{ with $class }} {{ . }}{{ end }}">
|
<div class="accordion-item{{ if $show }} show{{ end }}{{ with $class }} {{ . }}{{ end }}">
|
||||||
{{- with $header -}}
|
{{- with $header -}}
|
||||||
|
@@ -1,98 +1,39 @@
|
|||||||
<!--
|
<!--
|
||||||
Displays a tab group of multiple items. Each provided page resource is rendered as a tab pane. The shortcode
|
Copyright © 2023 The Hinode Team / Mark Dumay. All rights reserved.
|
||||||
supports the following arguments:
|
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
|
||||||
"page" Required context of the current page.
|
Visit gethinode.com/license for more details.
|
||||||
"list" Required array of pages.
|
|
||||||
"title" Optional title of the tab group.
|
|
||||||
"type" Optional type of the tab group, either "tabs", "pills" (default), "underline" or "callout".
|
|
||||||
"vertical" Optional flag to show vertical tabs instead of horizontal tabs (default).
|
|
||||||
"class" Optional class attribute of the tab group, e.g. “nav-fill”.
|
|
||||||
"pane" Optional style of the panes, either "none" (default) or "persona".
|
|
||||||
"width" Optional responsive width of the tab group, either "50" or "100" (default).
|
|
||||||
"wrap" Optional flag to enable word wrapping of tab titles, defaults to false.
|
|
||||||
|
|
||||||
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.
|
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
{{ $error := false }}
|
||||||
|
|
||||||
|
<!-- Validate arguments -->
|
||||||
|
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "nav" "args" . "group" "partial") }}
|
||||||
|
{{ errorf "Invalid arguments: %s" .Position -}}
|
||||||
|
{{ $error = true }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
<!-- Initialize arguments -->
|
||||||
{{- $page := .page -}}
|
{{- $page := .page -}}
|
||||||
{{- if ne (printf "%T" $page) "*hugolib.pageState" -}}
|
{{- $id := .id | default "0" -}}
|
||||||
{{- errorf "partial [assets/nav.html] - Invalid value for param 'page'" -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{- $id := "0" -}}
|
|
||||||
{{- with .id -}}
|
|
||||||
{{ $id = . }}
|
|
||||||
{{ end }}
|
|
||||||
|
|
||||||
{{- $supportedTypes := slice "page.Pages" "resource.Resources" -}}
|
|
||||||
{{ $list := .list }}
|
{{ $list := .list }}
|
||||||
{{- if not (in $supportedTypes (printf "%T" $list)) -}}
|
{{ $pane := .pane | default "none" }}
|
||||||
{{- errorf "partial [assets/nav.html] - Invalid value for param 'list'" -}}
|
{{ $width := .width | default 100 }}
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{ $pane := "none" }}
|
|
||||||
{{ with .pane }}
|
|
||||||
{{- $supportedPanes := slice "none" "persona" -}}
|
|
||||||
{{- $pane = . }}
|
|
||||||
{{- if not (in $supportedPanes $pane) -}}
|
|
||||||
{{- errorf "partial [assets/nav.html] - Invalid value for param 'pane'" -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{ end }}
|
|
||||||
|
|
||||||
{{ $supportedWidths := slice 50 100 -}}
|
|
||||||
{{ $widthParam := 100 -}}
|
|
||||||
{{ $width := 100 }}
|
|
||||||
{{ with .width }}{{ $widthParam = . }}{{ end -}}
|
|
||||||
{{ if in $supportedWidths $widthParam -}}
|
|
||||||
{{ $width = int $widthParam }}
|
|
||||||
{{ else -}}
|
|
||||||
{{ errorf "partial [assets/nav.html] - Invalid value for param 'width': %s" $widthParam -}}
|
|
||||||
{{ end -}}
|
|
||||||
|
|
||||||
{{- $title := .title -}}
|
{{- $title := .title -}}
|
||||||
{{- $class := .class -}}
|
{{- $class := .class -}}
|
||||||
{{- $color := .color -}}
|
{{- $color := .color -}}
|
||||||
{{- $wrap := .wrap | default false -}}
|
{{- $wrap := .wrap | default false -}}
|
||||||
|
{{ $vertical := .vertical | default false }}
|
||||||
|
{{ $type := .type | default "pills" }}
|
||||||
|
{{- $loading := .loading | default "eager" -}}
|
||||||
|
|
||||||
{{ $supportedFlags := slice "true" "false" -}}
|
<!-- Main code -->
|
||||||
{{ $verticalParam := "false" -}}
|
|
||||||
{{ $vertical := false }}
|
|
||||||
{{ with .vertical }}{{ $verticalParam = . }}{{ end -}}
|
|
||||||
{{ if in $supportedFlags $verticalParam -}}
|
|
||||||
{{ if eq $verticalParam "true" }}{{ $vertical = true }}{{ else }}{{ $vertical = false }}{{ end -}}
|
|
||||||
{{ else -}}
|
|
||||||
{{ errorf "partial [assets/nav.html] - Invalid value for param 'vertical': %s" $verticalParam -}}
|
|
||||||
{{ end -}}
|
|
||||||
|
|
||||||
{{ $type := "pills" }}
|
|
||||||
{{ with .type }}
|
|
||||||
{{ $type = . -}}
|
|
||||||
{{ $supportedNavTypes := slice "tabs" "pills" "underline" "callout" -}}
|
|
||||||
{{ if $type }}
|
|
||||||
{{ if not (in $supportedNavTypes $type) -}}
|
|
||||||
{{ errorf "partial [assets/nav.html] - Invalid value for param 'type': %s" $type -}}
|
|
||||||
{{ end -}}
|
|
||||||
{{ end -}}
|
|
||||||
{{ end -}}
|
|
||||||
|
|
||||||
{{- $loading := .loading -}}
|
|
||||||
{{- $validSettings := slice "lazy" "eager" -}}
|
|
||||||
{{- if $loading -}}
|
|
||||||
{{ if not (in $validSettings $loading) -}}
|
|
||||||
{{- errorf "partial [assets/nav.html] - Invalid value for param 'loading': %s" $loading -}}
|
|
||||||
{{ end -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
<div class="{{ if eq $width 50 }}col-sm-12 col-md-10 col-lg-8 col-xl-6{{ else }}col-12{{ end }} mx-auto">
|
<div class="{{ if eq $width 50 }}col-sm-12 col-md-10 col-lg-8 col-xl-6{{ else }}col-12{{ end }} mx-auto">
|
||||||
{{ if $vertical }}<div class="d-flex align-items-start">{{ end }}
|
{{ if $vertical }}<div class="d-flex align-items-start">{{ end }}
|
||||||
{{ if eq $type "callout" }}
|
{{ if eq $type "callout" }}
|
||||||
<div class="d-lg-none">
|
<div class="d-lg-none">
|
||||||
<div id="accordion-{{ $id }}" class="accordion mb-3{{ with $class }} {{ . }}{{ end }} nav-callout">
|
<div id="accordion-{{ $id }}" class="accordion mb-3{{ with $class }} {{ . }}{{ end }} nav-callout">
|
||||||
{{- range $index, $item := $list -}}
|
{{- range $index, $item := $list -}}
|
||||||
{{ partial "assets/nav-item" (dict
|
{{ partial "assets/nav-item.html" (dict
|
||||||
"id" $index
|
"id" $index
|
||||||
"parentID" $id
|
"parentID" $id
|
||||||
"fade" false
|
"fade" false
|
||||||
@@ -101,7 +42,7 @@
|
|||||||
"body" (or $item.Description $item.Content)
|
"body" (or $item.Description $item.Content)
|
||||||
"show" false
|
"show" false
|
||||||
"disabled" false
|
"disabled" false
|
||||||
"type" "accordion"
|
"item_type" "accordion"
|
||||||
"illustration" (partial "utilities/GetIllustration.html" (dict "item" $item "size" "col-12"))
|
"illustration" (partial "utilities/GetIllustration.html" (dict "item" $item "size" "col-12"))
|
||||||
)
|
)
|
||||||
}}
|
}}
|
||||||
|
@@ -1,22 +1,17 @@
|
|||||||
<!--
|
<!--
|
||||||
Displays a navigation header with a toggler. The partial supports the following arguments:
|
Copyright © 2023 The Hinode Team / Mark Dumay. All rights reserved.
|
||||||
"id" Optional id of the navbar, defaults to "navbar-0". The id is used by several child elements,
|
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
|
||||||
including a color mode switcher, version switcher, and collapse panel.
|
Visit gethinode.com/license for more details.
|
||||||
"page" Required object reference to the current page.
|
|
||||||
"menus" Optional name of the menu configuration, defaults to "main".
|
|
||||||
"size" Optional breakpoint of the navbar toggler, either "xs", "sm", "md" (default), "lg", or "xl".
|
|
||||||
"fixed" Optional flag to indicate the navbar should stick to the top, defaults to false.
|
|
||||||
"color" Optional background color of the navbar, either "primary", "secondary", "success",
|
|
||||||
"danger", "warning", "info", "white", "black", "body", or "body-tertiary". The default color is
|
|
||||||
none.
|
|
||||||
"mode" Optional flag to include a color mode switcher, default is "true" (if dark mode is enabled).
|
|
||||||
"search" Optional flag to include a search input, default is "true".
|
|
||||||
"logo" Optional address of the logo image, defaults to the parameter "logo" set in the "main" section of
|
|
||||||
the site's parameter configuration.
|
|
||||||
"title" Optional brand title, displayed when the logo is not set. Defaults to the site's title.
|
|
||||||
"class" Optional class attribute of the navbar container.
|
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
{{ $error := false }}
|
||||||
|
|
||||||
|
<!-- Validate arguments -->
|
||||||
|
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "navbar" "args" . "group" "partial") }}
|
||||||
|
{{ errorf "Invalid arguments: %s" .Position -}}
|
||||||
|
{{ $error = true }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
<!-- Inline partial to render the color mode switcher -->
|
<!-- Inline partial to render the color mode switcher -->
|
||||||
{{- define "partials/navbar-mode.html" -}}
|
{{- define "partials/navbar-mode.html" -}}
|
||||||
{{- $size := .size -}}
|
{{- $size := .size -}}
|
||||||
@@ -97,22 +92,13 @@
|
|||||||
</li>
|
</li>
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
|
<!-- Initialize arguments -->
|
||||||
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
|
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
|
||||||
{{- $supportedFlags := slice "true" "false" -}}
|
{{- $id := .id | default (printf "navbar-%d" 0) -}}
|
||||||
|
|
||||||
{{- $id := printf "navbar-%d" 0 -}}
|
|
||||||
{{ with .id }}
|
|
||||||
{{ $id = . }}
|
|
||||||
{{ end }}
|
|
||||||
|
|
||||||
{{- $page := .page -}}
|
{{- $page := .page -}}
|
||||||
{{- if not $page -}}
|
|
||||||
{{- errorf "partial [assets/navbar.html] - Missing value for param 'page'" -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{- $defaultMenu := "main" }}
|
{{- $defaultMenu := "main" -}}
|
||||||
{{- $menuName := $defaultMenu }}
|
{{- $menuName := .menus | default $defaultMenu }}
|
||||||
{{- with .menus }}{{ $menuName = . }}{{ end -}}
|
|
||||||
{{- $menus := index site.Menus $menuName -}}
|
{{- $menus := index site.Menus $menuName -}}
|
||||||
{{- if or (ne (printf "%T" $menus) "navigation.Menu") (ne (index $menus 0).Menu $menuName) -}}
|
{{- if or (ne (printf "%T" $menus) "navigation.Menu") (ne (index $menus 0).Menu $menuName) -}}
|
||||||
{{- if ne $menuName $defaultMenu }}
|
{{- if ne $menuName $defaultMenu }}
|
||||||
@@ -120,51 +106,12 @@
|
|||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
{{- $size := "md" -}}
|
{{- $size := .size | default "md" -}}
|
||||||
{{- with .size }}{{ $size = . }}{{ end -}}
|
{{- $fixed := .fixed | default false -}}
|
||||||
{{- $supportedSizes := slice "xs" "sm" "md" "lg" "xl" -}}
|
{{- $color := .color | default "" -}}
|
||||||
{{- if not (in $supportedSizes $size) -}}
|
{{- $search := .search | default site.Params.navigation.search -}}
|
||||||
{{- errorf "partial [assets/navbar.html] - Invalid value for param 'size': %s" $size -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{- $fixedParam := "false" -}}
|
|
||||||
{{- $fixed := false -}}
|
|
||||||
{{- with .fixed }}{{ $fixedParam = . }}{{ end -}}
|
|
||||||
{{- if in $supportedFlags $fixedParam -}}
|
|
||||||
{{- if eq $fixedParam "true" }}{{ $fixed = true }}{{ else }}{{ $fixed = false }}{{ end -}}
|
|
||||||
{{- else -}}
|
|
||||||
{{- errorf "partial [assets/navbar.html] - Invalid value for param 'fixed': %s" $fixedParam -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{- $color := "" -}}
|
|
||||||
{{- with .color -}}
|
|
||||||
{{- $color = . -}}
|
|
||||||
{{- $supportedColors := slice "primary" "secondary" "success" "danger" "warning" "info" "white" "black" "body" "body-tertiary" -}}
|
|
||||||
{{- if not (in $supportedColors $color) -}}
|
|
||||||
{{- errorf "partial [assets/navbar.html] - Invalid value for param 'color': %s" $color -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{- $search := default true site.Params.navigation.search -}}
|
|
||||||
{{- with .search -}}
|
|
||||||
{{- $searchParam := . -}}
|
|
||||||
{{- if in $supportedFlags $searchParam -}}
|
|
||||||
{{- if eq $searchParam "true" }}{{ $search = true }}{{ else }}{{ $search = false }}{{ end -}}
|
|
||||||
{{- else -}}
|
|
||||||
{{- errorf "partial [assets/navbar.html] - Invalid value for param 'search': %s" $searchParam -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- $searchModal := and $search site.Params.navigation.searchModal -}}
|
{{- $searchModal := and $search site.Params.navigation.searchModal -}}
|
||||||
|
{{- $enableDarkMode := .mode | default site.Params.main.enableDarkMode -}}
|
||||||
{{- $enableDarkMode := default false site.Params.main.enableDarkMode -}}
|
|
||||||
{{- with .mode -}}
|
|
||||||
{{- $darkModeParam := . -}}
|
|
||||||
{{- if in $supportedFlags $darkModeParam -}}
|
|
||||||
{{- if eq $darkModeParam "true" }}{{ $enableDarkMode = site.Params.main.enableDarkMode }}{{ else }}{{ $enableDarkMode = false }}{{ end -}}
|
|
||||||
{{- else -}}
|
|
||||||
{{- errorf "partial [assets/navbar.html] - Invalid value for param 'darkMode': %s" $darkModeParam -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{- $enableVersions := false -}}
|
{{- $enableVersions := false -}}
|
||||||
{{ $list := site.Params.docs.releases }}
|
{{ $list := site.Params.docs.releases }}
|
||||||
@@ -173,15 +120,11 @@
|
|||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{- $enableLanguage := or $page.IsTranslated site.IsMultiLingual -}}
|
{{- $enableLanguage := or $page.IsTranslated site.IsMultiLingual -}}
|
||||||
|
|
||||||
{{- $horizontal := default false site.Params.navigation.horizontal -}}
|
{{- $horizontal := default false site.Params.navigation.horizontal -}}
|
||||||
|
|
||||||
{{- $logo := site.Params.navigation.logo -}}
|
{{- $logo := .logo | default site.Params.navigation.logo -}}
|
||||||
{{- $logoLight := "" -}}
|
{{- $logoLight := "" -}}
|
||||||
{{- $logoDark := "" -}}
|
{{- $logoDark := "" -}}
|
||||||
{{- with .logo }}
|
|
||||||
{{ $logo = . }}
|
|
||||||
{{- end -}}
|
|
||||||
{{- if $enableDarkMode -}}
|
{{- if $enableDarkMode -}}
|
||||||
{{ $ext := path.Ext $logo -}}
|
{{ $ext := path.Ext $logo -}}
|
||||||
{{- $logoLight = printf "%s-light%s" (strings.TrimSuffix $ext $logo) $ext -}}
|
{{- $logoLight = printf "%s-light%s" (strings.TrimSuffix $ext $logo) $ext -}}
|
||||||
@@ -222,6 +165,7 @@
|
|||||||
{{- $contrast := false -}}
|
{{- $contrast := false -}}
|
||||||
{{- if in (slice "primary" "secondary" "success" "danger") $color }}{{ $contrast = true }}{{ end -}}
|
{{- if in (slice "primary" "secondary" "success" "danger") $color }}{{ $contrast = true }}{{ end -}}
|
||||||
|
|
||||||
|
<!-- Main code -->
|
||||||
<div class="container-fluid {{ if $fixed }}fixed-top{{ end }} p-0{{ with $class }} {{ . }}{{ end }}">
|
<div class="container-fluid {{ if $fixed }}fixed-top{{ end }} p-0{{ with $class }} {{ . }}{{ end }}">
|
||||||
{{- partial "assets/page-alert.html" (dict "page" $page) -}}
|
{{- partial "assets/page-alert.html" (dict "page" $page) -}}
|
||||||
<nav class="navbar {{ if $fixed }}navbar-fixed-top{{ end }} navbar-expand-{{ $size }}{{ if $contrast }} navbar-contrast{{ end }}{{ with $color }} bg-{{ . }}{{ end }} p-4"{{ with $theme }} data-bs-theme="{{ . }}"{{ end }}>
|
<nav class="navbar {{ if $fixed }}navbar-fixed-top{{ end }} navbar-expand-{{ $size }}{{ if $contrast }} navbar-contrast{{ end }}{{ with $color }} bg-{{ . }}{{ end }} p-4"{{ with $theme }} data-bs-theme="{{ . }}"{{ end }}>
|
||||||
|
@@ -1,30 +1,18 @@
|
|||||||
<!--
|
<!--
|
||||||
Displays a custom persona card. Either specify a valid path, or set the arguments title, href, content, and
|
Copyright © 2023 The Hinode Team / Mark Dumay. All rights reserved.
|
||||||
thumbnail individually. The latter arguments override any page attributes.
|
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.
|
||||||
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.
|
|
||||||
"content" Optional content of the card.
|
|
||||||
"thumbnail" Optional thumbnail image url, displayed on top or the left of the card.
|
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<!-- Inline partial to render the card's body -->
|
{{ $error := false }}
|
||||||
{{- define "partials/persona-body.html" -}}
|
|
||||||
{{- $title := .title -}}
|
|
||||||
{{- $href := .href -}}
|
|
||||||
{{- $color := .color -}}
|
|
||||||
{{- $content := .content -}}
|
|
||||||
|
|
||||||
<h3>{{ $title }}</h3>
|
<!-- Validate arguments -->
|
||||||
{{ with $content }}<p>{{ . }}</p>{{ end -}}
|
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "persona" "args" . "group" "partial") }}
|
||||||
{{- end -}}
|
{{ errorf "Invalid arguments: %s" .Position -}}
|
||||||
|
{{ $error = true }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
<!-- Initialize arguments -->
|
||||||
{{- $page := "" }}
|
{{- $page := "" }}
|
||||||
{{- if .path }}
|
{{- if .path }}
|
||||||
{{- $page = site.GetPage .path }}
|
{{- $page = site.GetPage .path }}
|
||||||
@@ -38,14 +26,7 @@
|
|||||||
{{- $content := .content -}}
|
{{- $content := .content -}}
|
||||||
{{- $thumbnail := .thumbnail -}}
|
{{- $thumbnail := .thumbnail -}}
|
||||||
|
|
||||||
{{- $color := "" -}}
|
{{- $color := .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/persona.html] - Invalid value for param 'color': %s" $color -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{- with $page -}}
|
{{- with $page -}}
|
||||||
{{- if not $title }}{{ $title = .Title }}{{ end -}}
|
{{- if not $title }}{{ $title = .Title }}{{ end -}}
|
||||||
@@ -55,48 +36,68 @@
|
|||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
{{- $class := .class -}}
|
{{- $class := .class -}}
|
||||||
|
|
||||||
{{- $loading := .loading -}}
|
{{- $loading := .loading -}}
|
||||||
{{- $validSettings := slice "lazy" "eager" -}}
|
{{- $tab := site.Params.main.externalLinks.tab -}}
|
||||||
{{- if $loading -}}
|
{{- $isExternal := ne (urls.Parse (absURL $href)).Host (urls.Parse site.BaseURL).Host -}}
|
||||||
{{ if not (in $validSettings $loading) -}}
|
{{- $target := "" -}}
|
||||||
{{- errorf "partial [assets/persona.html] - Invalid value for param 'loading': %s" $loading -}}
|
{{- $rel := "" -}}
|
||||||
{{ end -}}
|
{{- if and $isExternal $tab -}}
|
||||||
|
{{- $target = "_blank" -}}
|
||||||
|
{{- $rel = "noopener noreferrer" -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
<div class="d-none d-md-block">
|
<!-- Inline partial to render the card's body -->
|
||||||
<div class="persona position-relative row mt-5 align-middle p-3">
|
{{- define "partials/persona-body.html" -}}
|
||||||
<div class="col-2">
|
{{- $title := .title -}}
|
||||||
<div class="position-absolute top-50 start-0 translate-middle-y col-4 ps-3">
|
{{- $content := .content -}}
|
||||||
{{- if $thumbnail -}}
|
|
||||||
{{- partial "assets/image.html" (dict "url" $thumbnail "title" $title "ratio" "1x1" "innerClass" "rounded-5" "loading" $loading) -}}
|
<h3>{{ $title }}</h3>
|
||||||
{{ end }}
|
{{ with $content }}<p>{{ . }}</p>{{ end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
<!-- Main code -->
|
||||||
|
{{- if not $error -}}
|
||||||
|
{{ with $href }}
|
||||||
|
<a href="{{ . }}" aria-label="{{ $title | safeHTML }}"
|
||||||
|
{{- with $target }} target="{{ . }}"{{ end }}
|
||||||
|
{{ with $rel }} rel="{{ . }}"{{ end -}}
|
||||||
|
>
|
||||||
|
{{ end }}
|
||||||
|
<div class="d-none d-md-block">
|
||||||
|
<div class="persona position-relative row mt-5 align-middle p-3">
|
||||||
|
<div class="col-2">
|
||||||
|
<div class="position-absolute top-50 start-0 translate-middle-y col-4 ps-3">
|
||||||
|
{{- if $thumbnail -}}
|
||||||
|
{{- partial "assets/image.html" (dict "url" $thumbnail "title" $title "ratio" "1x1" "class" "rounded-5" "loading" $loading) -}}
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="col-10 {{ with $color }}bg-{{ . }} text-bg-{{ . }}{{ end }} rounded-5 fs-md-5 fs-6 pe-5 pb-3">
|
||||||
<div class="col-10 {{ with $color }}bg-{{ . }} text-bg-{{ . }}{{ end }} rounded-5 fs-md-5 fs-6 pe-5 pb-3">
|
<div class="row">
|
||||||
<div class="row">
|
<div class="col-3"></div>
|
||||||
<div class="col-3"></div>
|
<div class="col-9">
|
||||||
<div class="col-9">
|
{{- partial "persona-body.html" (dict "title" $title "content" $content) -}}
|
||||||
{{- partial "persona-body.html" (dict "title" $title "href" $href "color" $color "content" $content) -}}
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="d-md-none">
|
<div class="d-md-none">
|
||||||
<div class="persona position-relative row mt-5 align-middle p-3 ptw-5">
|
<div class="persona position-relative row mt-5 align-middle p-3 ptw-5">
|
||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
<div class="position-absolute top-25 start-50 translate-middle col-6">
|
<div class="position-absolute top-25 start-50 translate-middle col-6">
|
||||||
{{- if $thumbnail -}}
|
{{- if $thumbnail -}}
|
||||||
{{- partial "assets/image.html" (dict "url" $thumbnail "title" $title "ratio" "1x1" "innerClass" "rounded-5" "loading" $loading) -}}
|
{{- partial "assets/image.html" (dict "url" $thumbnail "title" $title "ratio" "1x1" "class" "rounded-5" "loading" $loading) -}}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="col-12 {{ with $color }}bg-{{ . }} text-bg-{{ . }}{{ end }} rounded-5 ptw-lg-5 ptw-3 ptw-sm-4 fs-md-5 fs-6 pb-3">
|
||||||
<div class="col-12 {{ with $color }}bg-{{ . }} text-bg-{{ . }}{{ end }} rounded-5 ptw-lg-5 ptw-3 ptw-sm-4 fs-md-5 fs-6 pb-3">
|
<div class="p-3">
|
||||||
<div class="p-5">
|
{{- partial "persona-body.html" (dict "title" $title "content" $content) -}}
|
||||||
{{- partial "persona-body.html" (dict "title" $title "href" $href "color" $color "content" $content) -}}
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
{{ if $href }}</a>{{ end }}
|
||||||
|
{{ end }}
|
@@ -12,7 +12,7 @@
|
|||||||
{{ $padding := 5 }}
|
{{ $padding := 5 }}
|
||||||
|
|
||||||
{{- if $thumbnail -}}
|
{{- if $thumbnail -}}
|
||||||
{{- partial "assets/image.html" (dict "url" $thumbnail "ratio" "1x1" "outerClass" "h-100 card-img-wrap" "innerClass" "rounded-start card-img-h100" "title" $title) -}}
|
{{- partial "assets/image.html" (dict "url" $thumbnail "ratio" "1x1" "wrapper" "h-100 card-img-wrap" "class" "rounded-start card-img-h100" "title" $title) -}}
|
||||||
{{- else if $icon -}}
|
{{- else if $icon -}}
|
||||||
<div class="text-secondary fw-bold">
|
<div class="text-secondary fw-bold">
|
||||||
{{- partial "assets/icon.html" (dict "icon" (printf "%s fa-10x" $icon)) -}}
|
{{- partial "assets/icon.html" (dict "icon" (printf "%s fa-10x" $icon)) -}}
|
||||||
|
@@ -44,7 +44,7 @@
|
|||||||
{{- with index . "sectionHeader" }}{{ $sectionHeader = . }}{{ end -}}
|
{{- with index . "sectionHeader" }}{{ $sectionHeader = . }}{{ end -}}
|
||||||
{{- with index . "sort" }}{{ $sort = . }}{{ end -}}
|
{{- with index . "sort" }}{{ $sort = . }}{{ end -}}
|
||||||
{{- if (index . "reverse") }}{{ $order = "desc" }}{{ else }}{{ $order = "asc" }}{{ end -}}
|
{{- if (index . "reverse") }}{{ $order = "desc" }}{{ else }}{{ $order = "asc" }}{{ end -}}
|
||||||
{{- if $home }}{{- if (isset . "nested") }}{{ $nested = (index . "nested") }}{{ end -}}{{ end -}}
|
{{- if (isset . "nested") }}{{ $nested = (index . "nested") }}{{ end -}}
|
||||||
{{- if (index . "separator") }}{{ $separator = true }}{{ else }}{{ $separator = false }}{{ end -}}
|
{{- if (index . "separator") }}{{ $separator = true }}{{ else }}{{ $separator = false }}{{ end -}}
|
||||||
{{- with index . "orientation" }}{{ $orientation = . }}{{ end -}}
|
{{- with index . "orientation" }}{{ $orientation = . }}{{ end -}}
|
||||||
{{- with index . "cols" }}{{ $cols = . }}{{ end -}}
|
{{- with index . "cols" }}{{ $cols = . }}{{ end -}}
|
||||||
@@ -64,6 +64,10 @@
|
|||||||
{{- with index . "ratio" }}{{ $ratio = . }}{{ end -}}
|
{{- with index . "ratio" }}{{ $ratio = . }}{{ end -}}
|
||||||
{{- with index . "wrap" }}{{ $wrap = . }}{{ end -}}
|
{{- with index . "wrap" }}{{ $wrap = . }}{{ end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
|
{{ if isset $page.Params "nested" }}
|
||||||
|
{{ $nested = $page.Params.nested }}
|
||||||
|
{{ end }}
|
||||||
{{ if ne (printf "%T" $nested) "bool" }}
|
{{ if ne (printf "%T" $nested) "bool" }}
|
||||||
{{ errorf "partial [assets/section-list.html] - Invalid value for param 'nested'"}}
|
{{ errorf "partial [assets/section-list.html] - Invalid value for param 'nested'"}}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
@@ -84,13 +88,19 @@
|
|||||||
{{ $opts := dict "namedSlices" (slice $keywords) }}
|
{{ $opts := dict "namedSlices" (slice $keywords) }}
|
||||||
{{ $list = site.RegularPages.Related $opts }}
|
{{ $list = site.RegularPages.Related $opts }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ else if $nested }}
|
|
||||||
{{ $list = where site.RegularPages "Type" "in" $section }}
|
|
||||||
{{ else if $home }}
|
{{ else if $home }}
|
||||||
{{ $sectionPage := site.GetPage "section" $section }}
|
{{ $sectionPage := site.GetPage "section" $section }}
|
||||||
{{ $list = $sectionPage.RegularPages }}
|
{{ if $nested }}
|
||||||
|
{{ $list = $sectionPage.RegularPagesRecursive }}
|
||||||
|
{{ else }}
|
||||||
|
{{ $list = $sectionPage.Pages }}
|
||||||
|
{{ end }}
|
||||||
{{ else }}
|
{{ else }}
|
||||||
{{ $list = $page.RegularPages }}
|
{{ if $nested }}
|
||||||
|
{{ $list = $page.RegularPagesRecursive }}
|
||||||
|
{{ else }}
|
||||||
|
{{ $list = $page.Pages }}
|
||||||
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{ $max := (len $list) -}}
|
{{ $max := (len $list) -}}
|
||||||
@@ -138,6 +148,20 @@
|
|||||||
<div class="container-xxl {{ $wrapper }}">
|
<div class="container-xxl {{ $wrapper }}">
|
||||||
{{- partial "assets/section-header.html" $params -}}
|
{{- partial "assets/section-header.html" $params -}}
|
||||||
|
|
||||||
|
{{- $params := (dict
|
||||||
|
"page" $page
|
||||||
|
"list" $list
|
||||||
|
"title" $title
|
||||||
|
"icon" $icon
|
||||||
|
"thumbnail" $thumbnail
|
||||||
|
"ratio" $ratio
|
||||||
|
"description" $description
|
||||||
|
"class" $style
|
||||||
|
"color" $color
|
||||||
|
"loading" $loading
|
||||||
|
)
|
||||||
|
-}}
|
||||||
|
|
||||||
{{ if eq $layout "card" }}
|
{{ if eq $layout "card" }}
|
||||||
{{- $partial = "assets/card-group.html" -}}
|
{{- $partial = "assets/card-group.html" -}}
|
||||||
{{- $params = merge $params (dict
|
{{- $params = merge $params (dict
|
||||||
|
@@ -36,7 +36,7 @@
|
|||||||
{{- $target = (printf "toast-message-%s-%d" (anchorize $item.name) $index ) -}}
|
{{- $target = (printf "toast-message-%s-%d" (anchorize $item.name) $index ) -}}
|
||||||
{{- $clipboard = $url -}}
|
{{- $clipboard = $url -}}
|
||||||
{{- $url = "#!" -}}
|
{{- $url = "#!" -}}
|
||||||
{{- partial "assets/toast.html" (dict "id" $target "message" (printf "%s %s" (T "link") (T "copiedToClipboard"))) -}}
|
{{- partial "assets/toast.html" (dict "id" $target "message" (printf "%s %s" (T "link") (T "copiedToClipboard"))) -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{ partial "assets/button.html" (dict "toast" $target "clipboard" $clipboard "href" $url "icon" (printf "%s fa-fw" $item.icon) "class" "btn-social p-0" "label" (T "shareLink" $item.name) "spacing" false) }}
|
{{ partial "assets/button.html" (dict "toast" $target "clipboard" $clipboard "href" $url "icon" (printf "%s fa-fw" $item.icon) "class" "btn-social p-0" "label" (T "shareLink" $item.name) "spacing" false) }}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
@@ -71,7 +71,7 @@
|
|||||||
<li>
|
<li>
|
||||||
{{ $class := "sidebar-item text-decoration-none rounded" }}
|
{{ $class := "sidebar-item text-decoration-none rounded" }}
|
||||||
{{ if $active }}{{ $class = printf "%s active" $class }}{{ end }}
|
{{ if $active }}{{ $class = printf "%s active" $class }}{{ end }}
|
||||||
{{ $link := partial "utilities/link.html" (dict "destination" $href "text" $title "class" $class "page" $page) }}
|
{{ $link := partial "assets/link.html" (dict "destination" $href "text" $title "class" $class "page" $page) }}
|
||||||
{{ if $link }}
|
{{ if $link }}
|
||||||
{{ print $link | safeHTML }}
|
{{ print $link | safeHTML }}
|
||||||
{{ else }}
|
{{ else }}
|
||||||
@@ -84,7 +84,7 @@
|
|||||||
<li>
|
<li>
|
||||||
{{ $class := "sidebar-item text-decoration-none rounded small" }}
|
{{ $class := "sidebar-item text-decoration-none rounded small" }}
|
||||||
{{ if $active }}{{ $class = printf "%s active" $class }}{{ end }}
|
{{ if $active }}{{ $class = printf "%s active" $class }}{{ end }}
|
||||||
{{ $link := partial "utilities/link.html" (dict "destination" $href "text" $title "class" $class "page" $page) }}
|
{{ $link := partial "assets/link.html" (dict "destination" $href "text" $title "class" $class "page" $page) }}
|
||||||
{{ if $link }}
|
{{ if $link }}
|
||||||
{{ print $link | safeHTML }}
|
{{ print $link | safeHTML }}
|
||||||
{{ else }}
|
{{ else }}
|
||||||
|
25
layouts/partials/assets/table.html
Normal file
25
layouts/partials/assets/table.html
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
{{ $page := .page }}
|
||||||
|
{{ $input := .input }}
|
||||||
|
{{ $args := .args }}
|
||||||
|
|
||||||
|
{{- $responsiveVals := slice "table-responsive" "table-responsive-none" "table-responsive-sm" "table-responsive-md" "table-responsive-lg" "table-responsive-xl" "table-responsive-xxl" -}}
|
||||||
|
{{- $responsive := intersect $args $responsiveVals -}}
|
||||||
|
{{- $main := complement $responsive $args -}}
|
||||||
|
|
||||||
|
{{- if in $responsive "table-responsive-none" -}}
|
||||||
|
{{- $responsive = "" -}}
|
||||||
|
{{- else if not $responsive -}}
|
||||||
|
{{ $responsive = (slice "table-responsive") -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- $input := $input | $page.RenderString }}
|
||||||
|
{{- $input = replace $input "style=\"text-align:left\"" "class=\"text-start\"" -}}
|
||||||
|
{{- $input = replace $input "style=\"text-align:center\"" "class=\"text-center\"" -}}
|
||||||
|
{{- $input = replace $input "style=\"text-align:right\"" "class=\"text-end\"" -}}
|
||||||
|
{{- $class := delimit $main " " -}}
|
||||||
|
{{- $old := "<table>" -}}
|
||||||
|
{{- $new := printf "<table class=\"table %s\">" $class -}}
|
||||||
|
{{ $input := replace $input $old $new -}}
|
||||||
|
{{- with $responsive }}<div class="{{ delimit . " " }}">{{ end -}}
|
||||||
|
{{ $input | safeHTML }}
|
||||||
|
{{- with $responsive }}</div>{{ end -}}
|
@@ -1,27 +1,24 @@
|
|||||||
<!--
|
<!--
|
||||||
Prepares a toast message. Use a trigger to display the message. The shortcode supports the following arguments:
|
Copyright © 2023 The Hinode Team / Mark Dumay. All rights reserved.
|
||||||
"id" Optional id of the toast message, defaults to "toast-message-0".
|
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
|
||||||
"header": Optional header of the toast message.
|
Visit gethinode.com/license for more details.
|
||||||
"message": Required toast message.
|
|
||||||
"class": Optional class attribute of the toast element.
|
|
||||||
-->
|
-->
|
||||||
|
|
||||||
{{- $id := printf "toast-message-%d" 0 -}}
|
{{ $error := false }}
|
||||||
{{ with .id }}
|
|
||||||
{{ $id = . }}
|
<!-- Validate arguments -->
|
||||||
|
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "toast" "args" . "group" "partial") }}
|
||||||
|
{{- errorf "partial [assets/toast.html] - Invalid arguments" -}}
|
||||||
|
{{ $error = true }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{ $header := .header -}}
|
<!-- Initialize arguments -->
|
||||||
{{ if not $header -}}
|
{{- $id := .id | default (printf "toast-message-%d" 0) -}}
|
||||||
{{ $header = site.Title -}}
|
{{ $header := .header | default site.Title -}}
|
||||||
{{ end -}}
|
|
||||||
{{- $message := .message -}}
|
{{- $message := .message -}}
|
||||||
{{ if not $message -}}
|
|
||||||
{{- errorf "partial [assets/toast.html] - Missing message text" -}}
|
|
||||||
{{ end -}}
|
|
||||||
|
|
||||||
{{- $class := .class -}}
|
{{- $class := .class -}}
|
||||||
|
|
||||||
|
<!-- Main code -->
|
||||||
<div id="{{ $id }}" class="toast{{ with $class }} {{ . }}{{ end }}" role="alert" aria-live="assertive" aria-atomic="true">
|
<div id="{{ $id }}" class="toast{{ with $class }} {{ . }}{{ end }}" role="alert" aria-live="assertive" aria-atomic="true">
|
||||||
<div class="toast-header">
|
<div class="toast-header">
|
||||||
{{ with $header }}<strong class="me-auto">{{ . }}</strong>{{ end }}
|
{{ with $header }}<strong class="me-auto">{{ . }}</strong>{{ end }}
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
<!--
|
<!--
|
||||||
Returns the current version defined in 'package.json` in the repository root, or in the documentation base path
|
Copyright © 2023 The Hinode Team / Mark Dumay. All rights reserved.
|
||||||
('params.docs.basePath') if specified. The returned version includes a 'v' prefix. The partial returns nothing
|
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
|
||||||
when no match is found. The partial does not require any arguments.
|
Visit gethinode.com/license for more details.
|
||||||
-->
|
-->
|
||||||
|
|
||||||
{{- $file := "package.json" -}}
|
{{- $file := "package.json" -}}
|
||||||
|
@@ -5,7 +5,7 @@
|
|||||||
{{ cond (gt (len .Site.Copyright) 0) .Site.Copyright $copyright }}
|
{{ cond (gt (len .Site.Copyright) 0) .Site.Copyright $copyright }}
|
||||||
{{ .Site.Params.footer.license | safeHTML }}
|
{{ .Site.Params.footer.license | safeHTML }}
|
||||||
{{ if .Site.Params.main.endorse }}
|
{{ if .Site.Params.main.endorse }}
|
||||||
{{ $link := partial "utilities/link" (dict "destination" (index site.Params.links "hinode") "text" "Hinode" "class" "link-bg-footer") }}
|
{{ $link := partial "assets/link.html" (dict "destination" (index site.Params.links "hinode") "text" "Hinode" "class" "link-bg-footer" "page" .Page) }}
|
||||||
{{ T "poweredBy" $link | safeHTML }}
|
{{ T "poweredBy" $link | safeHTML }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</small>
|
</small>
|
||||||
|
@@ -56,7 +56,7 @@
|
|||||||
{{ else }}
|
{{ else }}
|
||||||
{{- $thumbnail := (or (and (reflect.IsMap $page.Params.Thumbnail) $page.Params.Thumbnail.url) $page.Params.Thumbnail) -}}
|
{{- $thumbnail := (or (and (reflect.IsMap $page.Params.Thumbnail) $page.Params.Thumbnail.url) $page.Params.Thumbnail) -}}
|
||||||
{{- if $thumbnail }}
|
{{- if $thumbnail }}
|
||||||
{{ partial "assets/image.html" (dict "url" $thumbnail "ratio" "16x9" "outerClass" $style "innerClass" "rounded" "title" $page.Site.Title) }}
|
{{ partial "assets/image.html" (dict "url" $thumbnail "ratio" "16x9" "wrapper" $style "class" "rounded" "title" $page.Site.Title "priority" "high") }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
@@ -64,7 +64,7 @@
|
|||||||
<div class="container-fluid p-0 {{ with site.Params.home.feature.color }} bg-{{ . }} bg-opacity-{{ site.Params.style.themeOpacity | default "25" | safeHTML }}{{ end }}">
|
<div class="container-fluid p-0 {{ with site.Params.home.feature.color }} bg-{{ . }} bg-opacity-{{ site.Params.style.themeOpacity | default "25" | safeHTML }}{{ end }}">
|
||||||
<div class="container-xxl p-4 px-xxl-0 {{ if site.Params.home.fullCover }} fullcover{{ end }} d-flex flex-column">
|
<div class="container-xxl p-4 px-xxl-0 {{ if site.Params.home.fullCover }} fullcover{{ end }} d-flex flex-column">
|
||||||
{{ if $breadcrumb }}
|
{{ if $breadcrumb }}
|
||||||
<div>{{ partial "assets/breadcrumb.html" $page }}</div>
|
<div>{{ partial "assets/breadcrumb.html" (dict "page" $page) }}</div>
|
||||||
{{ end -}}
|
{{ end -}}
|
||||||
|
|
||||||
{{ if eq $orientation "stacked" }}
|
{{ if eq $orientation "stacked" }}
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
{{- $page := .page -}}
|
{{- $page := .page -}}
|
||||||
{{- $class := printf "img-wrap" -}}
|
{{- $class := printf "img-wrap" -}}
|
||||||
{{- with .class }}{{ $class := printf "img-wrap %s" . }}{{ end -}}
|
{{- with .class }}{{ $class = printf "img-wrap %s" . }}{{ end -}}
|
||||||
{{- $ratio := .ratio | default "21x9" -}}
|
{{- $ratio := .ratio | default "21x9" -}}
|
||||||
{{- $thumbnail := "" -}}
|
{{- $thumbnail := "" -}}
|
||||||
{{- $credits := "" -}}
|
{{- $credits := "" -}}
|
||||||
@@ -9,14 +9,14 @@
|
|||||||
{{- $thumbnail = $page.Params.Thumbnail.url -}}
|
{{- $thumbnail = $page.Params.Thumbnail.url -}}
|
||||||
{{- $author := "" -}}
|
{{- $author := "" -}}
|
||||||
{{- if and $page.Params.Thumbnail.authorURL "text" $page.Params.Thumbnail.author }}
|
{{- if and $page.Params.Thumbnail.authorURL "text" $page.Params.Thumbnail.author }}
|
||||||
{{- $author = partial "utilities/link" (dict "destination" $page.Params.Thumbnail.authorURL "text" $page.Params.Thumbnail.author) -}}
|
{{- $author = partial "assets/link.html" (dict "destination" $page.Params.Thumbnail.authorURL "text" $page.Params.Thumbnail.author "page" $page) -}}
|
||||||
{{- else if $page.Params.Thumbnail.author }}
|
{{- else if $page.Params.Thumbnail.author }}
|
||||||
{{- $author = $page.Params.Thumbnail.author -}}
|
{{- $author = $page.Params.Thumbnail.author -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
{{- $origin := "" -}}
|
{{- $origin := "" -}}
|
||||||
{{- if and $page.Params.Thumbnail.originURL "text" $page.Params.Thumbnail.origin }}
|
{{- if and $page.Params.Thumbnail.originURL "text" $page.Params.Thumbnail.origin }}
|
||||||
{{- $origin = partial "utilities/link" (dict "destination" $page.Params.Thumbnail.originURL "text" $page.Params.Thumbnail.origin) -}}
|
{{- $origin = partial "assets/link.html" (dict "destination" $page.Params.Thumbnail.originURL "text" $page.Params.Thumbnail.origin "page" $page) -}}
|
||||||
{{- else if $page.Params.Thumbnail.origin }}
|
{{- else if $page.Params.Thumbnail.origin }}
|
||||||
{{- $origin = $page.Params.Thumbnail.origin -}}
|
{{- $origin = $page.Params.Thumbnail.origin -}}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
@@ -35,5 +35,5 @@
|
|||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
{{ if $thumbnail -}}
|
{{ if $thumbnail -}}
|
||||||
{{- partial "assets/image.html" (dict "url" $thumbnail "ratio" $ratio "outerClass" $class "innerClass" "rounded" "title" $page.Params.title "caption" $credits) -}}
|
{{- partial "assets/image.html" (dict "url" $thumbnail "ratio" $ratio "wrapper" $class "class" "rounded" "title" $page.Params.title "caption" $credits "priority" "high") -}}
|
||||||
{{ end -}}
|
{{ end -}}
|
14
layouts/partials/utilities/CastBool.html
Normal file
14
layouts/partials/utilities/CastBool.html
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
{{ $input := . }}
|
||||||
|
{{ $output := "" }}
|
||||||
|
|
||||||
|
{{ if eq (printf "%T" $input) "bool" }}
|
||||||
|
{{ $output = $input }}
|
||||||
|
{{ else if eq $input "true" }}
|
||||||
|
{{ $output = true }}
|
||||||
|
{{ else if eq $input "false" }}
|
||||||
|
{{ $output = false }}
|
||||||
|
{{ else }}
|
||||||
|
{{ errorf "Cannot cast '%s' to bool" $input }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ return $output }}
|
21
layouts/partials/utilities/GetBreakpoint.html
Normal file
21
layouts/partials/utilities/GetBreakpoint.html
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
{{- /* Define main breakpoint */ -}}
|
||||||
|
{{ $prev := 0 }}
|
||||||
|
{{ $next := 0 }}
|
||||||
|
{{ $result := dict }}
|
||||||
|
{{- $breakpoints := slice "xs" "sm" "md" "lg" "xl" "xxl" }}
|
||||||
|
{{- $breakpoint := site.Params.main.breakpoint | default "md" -}}
|
||||||
|
{{- if not (in $breakpoints $breakpoint) -}}
|
||||||
|
{{- errorf "layout [_default/baseof.html] - Invalid value for param 'breakpoint': %s" $breakpoint -}}
|
||||||
|
{{ else }}
|
||||||
|
{{ range $index, $item := $breakpoints }}
|
||||||
|
{{ if eq $item $breakpoint }}
|
||||||
|
{{ $prev = sub $index 1 }}
|
||||||
|
{{ $next = add $index 1 }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ if lt $prev 0 }}{{ $prev = 0 }}{{ end }}
|
||||||
|
{{ if ge $next (len $breakpoints) }}{{ $next = sub (len $breakpoints) 1 }}{{ end }}
|
||||||
|
{{ $result = dict "prev" (index $breakpoints $prev) "current" $breakpoint "next" (index $breakpoints $next) }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{ return $result }}
|
13
layouts/partials/utilities/GetI18nData.html
Normal file
13
layouts/partials/utilities/GetI18nData.html
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{{ $path := .data }}
|
||||||
|
{{ $page := .page }}
|
||||||
|
|
||||||
|
{{/* Try language-specific file first */}}
|
||||||
|
{{ $i18nPath := path.Join (path.Dir $path) (printf "%s.%s" (path.BaseName $path) $page.Language.Lang) (path.Ext $path) }}
|
||||||
|
{{ $data := index site.Data $i18nPath }}
|
||||||
|
|
||||||
|
{{/* Use exact provided path as backup */}}
|
||||||
|
{{ if not $data -}}
|
||||||
|
{{ $data = index site.Data $path }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ return $data }}
|
@@ -14,7 +14,7 @@
|
|||||||
{{ else }}
|
{{ else }}
|
||||||
{{- $thumbnail := (or (and (reflect.IsMap $item.Params.Thumbnail) $item.Params.Thumbnail.url) $item.Params.Thumbnail) -}}
|
{{- $thumbnail := (or (and (reflect.IsMap $item.Params.Thumbnail) $item.Params.Thumbnail.url) $item.Params.Thumbnail) -}}
|
||||||
{{- if $thumbnail }}
|
{{- if $thumbnail }}
|
||||||
{{ $illustration = partial "assets/image.html" (dict "url" $thumbnail "ratio" "16x9" "outerClass" $style "innerClass" "rounded" "title" $item.Site.Title) }}
|
{{ $illustration = partial "assets/image.html" (dict "url" $thumbnail "ratio" "16x9" "wrapper" $style "inner" "rounded" "title" $item.Site.Title) }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
|
@@ -13,18 +13,8 @@
|
|||||||
{{ $mirror := false }}
|
{{ $mirror := false }}
|
||||||
|
|
||||||
{{ $supportedMediaTypes := slice "image/png" "image/jpeg" "image/gif" "image/tiff" "image/bmp" "image/webp" -}}
|
{{ $supportedMediaTypes := slice "image/png" "image/jpeg" "image/gif" "image/tiff" "image/bmp" "image/webp" -}}
|
||||||
{{ $img := "" }}
|
|
||||||
{{ $remote := hasPrefix (lower $url) "http" }}
|
{{ $remote := hasPrefix (lower $url) "http" }}
|
||||||
{{ if $remote }}
|
{{- $img := partial "utilities/GetResource.html" (dict "url" $url "page" $page) -}}
|
||||||
{{ $img = resources.GetRemote $url -}}
|
|
||||||
{{ else }}
|
|
||||||
{{ if $page }}
|
|
||||||
{{ $img = $page.Resources.Get $url -}}
|
|
||||||
{{ end }}
|
|
||||||
{{ if not $img }}
|
|
||||||
{{ $img = resources.GetMatch $url }}
|
|
||||||
{{ end }}
|
|
||||||
{{ end }}
|
|
||||||
|
|
||||||
{{ with $img -}}
|
{{ with $img -}}
|
||||||
{{ if in $supportedMediaTypes (string $img.MediaType) -}}
|
{{ if in $supportedMediaTypes (string $img.MediaType) -}}
|
||||||
|
40
layouts/partials/utilities/GetResource.html
Normal file
40
layouts/partials/utilities/GetResource.html
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
<!--
|
||||||
|
Retrieve a local or remote resource. If the url starts with 'http', the resource is retrieved from an external
|
||||||
|
location. Else, the url is matched with a page resource and site asset (in that order).
|
||||||
|
|
||||||
|
This partial supports both relative and absolute paths. Hugo has different methods to retrieve page bundle assets
|
||||||
|
and site assets. Absolute paths are converted to a relative path to make them compatible with Hugo's methods. The
|
||||||
|
prefix of an absolute path is truncated if it matches either with the page bundle folder (starting with "/content/")
|
||||||
|
or the assets folder ("/assets/").
|
||||||
|
|
||||||
|
The partial returns nil if the resource cannot be found. The partial supports the following arguments:
|
||||||
|
"url" Required path or url of the resource, e.g. "img/example.jpg" or "https://example.com/img.jpg"
|
||||||
|
"page" Optional page context, used to retrieve a resource from page resources.
|
||||||
|
-->
|
||||||
|
|
||||||
|
{{ $url := .url -}}
|
||||||
|
{{ $page := .page -}}
|
||||||
|
{{ if hasPrefix $url "/" }}
|
||||||
|
{{ $pageContext := (path.Join "/content" $page.File.Dir) -}}
|
||||||
|
{{ if hasPrefix $url $pageContext }}
|
||||||
|
{{ $url = strings.TrimPrefix $pageContext $url -}}
|
||||||
|
{{ else if hasPrefix $url "/assets/" }}
|
||||||
|
{{ $url = strings.TrimPrefix "/assets/" $url -}}
|
||||||
|
{{ end }}
|
||||||
|
{{ $url = strings.TrimPrefix "/" $url -}}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ $res := "" }}
|
||||||
|
{{ $remote := hasPrefix (lower $url) "http" }}
|
||||||
|
{{ if $remote }}
|
||||||
|
{{ $res = resources.GetRemote $url -}}
|
||||||
|
{{ else }}
|
||||||
|
{{ if $page }}
|
||||||
|
{{ $res = $page.Resources.Get $url -}}
|
||||||
|
{{ end }}
|
||||||
|
{{ if not $res }}
|
||||||
|
{{ $res = resources.GetMatch $url }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ return $res -}}
|
@@ -48,7 +48,8 @@
|
|||||||
|
|
||||||
{{- $thumbnail := (or (and (reflect.IsMap $sectionPage.Params.Thumbnail) $sectionPage.Params.Thumbnail.url) $sectionPage.Params.Thumbnail) -}}
|
{{- $thumbnail := (or (and (reflect.IsMap $sectionPage.Params.Thumbnail) $sectionPage.Params.Thumbnail.url) $sectionPage.Params.Thumbnail) -}}
|
||||||
{{- $icon := $sectionPage.Params.Icon -}}
|
{{- $icon := $sectionPage.Params.Icon -}}
|
||||||
{{- $content := $sectionPage.Content -}}
|
{{- $content := "" -}}
|
||||||
|
{{ if not $sectionPage.IsSection }}{{ $content = $sectionPage.Content }}{{ end -}}
|
||||||
{{- $sectionTitle := strings.FirstUpper $sectionPage.Type -}}
|
{{- $sectionTitle := strings.FirstUpper $sectionPage.Type -}}
|
||||||
{{- $moreTitle := "" -}}
|
{{- $moreTitle := "" -}}
|
||||||
{{- with (index site.Params.sections $section) -}}
|
{{- with (index site.Params.sections $section) -}}
|
||||||
@@ -61,7 +62,6 @@
|
|||||||
"section" $section
|
"section" $section
|
||||||
"home" $page.IsHome
|
"home" $page.IsHome
|
||||||
"simple" (eq (len $sections) 1)
|
"simple" (eq (len $sections) 1)
|
||||||
"nested" (and $page.IsHome (eq $section $page.Section))
|
|
||||||
"thumbnail" $thumbnail
|
"thumbnail" $thumbnail
|
||||||
"icon" $icon
|
"icon" $icon
|
||||||
"content" $content
|
"content" $content
|
||||||
|
146
layouts/partials/utilities/IsInvalidArgs.html
Normal file
146
layouts/partials/utilities/IsInvalidArgs.html
Normal file
@@ -0,0 +1,146 @@
|
|||||||
|
<!--
|
||||||
|
Copyright © 2023 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 }}
|
||||||
|
|
||||||
|
{{ $aliases := dict "path" "string" "select" "string" "url" "string" }}
|
||||||
|
|
||||||
|
{{ $structure := .structure }}
|
||||||
|
{{ if not $structure }}
|
||||||
|
{{- errorf "partial [utilities/ValidateArgs.html] - Missing value for param 'structure'" -}}
|
||||||
|
{{ $error = true }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ $args := .args | default dict }}
|
||||||
|
|
||||||
|
{{ $definitions := (index site.Data.structures $structure).arguments }}
|
||||||
|
{{ if not $definitions }}
|
||||||
|
{{- errorf "partial [utilities/ValidateArgs.html] - Missing definitions: %s" $structure -}}
|
||||||
|
{{ $error = true }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ $child := .child }}
|
||||||
|
{{ if $child }}
|
||||||
|
{{ $extra_def := (index site.Data.structures $child).arguments }}
|
||||||
|
{{ if not $extra_def }}
|
||||||
|
{{- errorf "partial [utilities/ValidateArgs.html] - Missing definitions: %s" $child -}}
|
||||||
|
{{ $error = true }}
|
||||||
|
{{ else }}
|
||||||
|
{{ range $key, $val := $extra_def }}
|
||||||
|
{{ if $val.parent }}{{ $definitions = merge $definitions (dict $key $val) }}{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ $group := .group }}
|
||||||
|
{{ $namedArgs := true }}
|
||||||
|
|
||||||
|
{{ if not $error }}
|
||||||
|
{{ range $key, $val := $args }}
|
||||||
|
{{ $def := "" }}
|
||||||
|
{{ if eq (printf "%T" $key) "string" }}
|
||||||
|
{{ $def = index $definitions $key }}
|
||||||
|
{{ else }}
|
||||||
|
{{ $namedArgs = false }}
|
||||||
|
{{ range $d := $definitions }}
|
||||||
|
{{ if eq $d.position $key }}{{ $def = $d }}{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ if $def }}
|
||||||
|
{{ $groups := slice | append $def.group }}
|
||||||
|
{{ if and $group $def.group }}
|
||||||
|
{{ if not (in $groups $group )}}{{ $def = "" }}{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ if not $def }}
|
||||||
|
{{ if eq (printf "%T" $key) "string" }}
|
||||||
|
{{ warnf "[%s] unsupported argument '%s'" $structure $key }}
|
||||||
|
{{ else if eq (printf "%T" $key) "int" }}
|
||||||
|
{{ warnf "[%s] unsupported argument at index %d (value: '%s')" $structure $key $val }}
|
||||||
|
{{ else }}
|
||||||
|
{{ warnf "[%s] unsupported argument value '%s'" $structure $val }}
|
||||||
|
{{ end }}
|
||||||
|
{{ $error = true }}
|
||||||
|
{{ else }}
|
||||||
|
{{ if and (not $val) $def.default }}{{ $val = $def.default }}{{ end }}
|
||||||
|
|
||||||
|
{{/* validate type */}}
|
||||||
|
{{ $expected := slice | append $def.type }}
|
||||||
|
{{ $extra := slice }}
|
||||||
|
{{ range $expected }}
|
||||||
|
{{ $alias := index $aliases . }}
|
||||||
|
{{ if $alias }}{{ $extra = $extra | append $alias }}{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ if $extra }}{{ $expected = $expected | append $extra }}{{ end }}
|
||||||
|
{{ $actual := printf "%T" $val }}
|
||||||
|
|
||||||
|
{{/* cast supported types from/to string */}}
|
||||||
|
{{ if and (in $expected "bool") (in (slice "true" "false") $val) }}
|
||||||
|
{{ $actual = "bool" }}
|
||||||
|
{{ else if and (in $expected "int") (findRE `^-?\d+$` $val) }}
|
||||||
|
{{ $actual = "int" }}
|
||||||
|
{{ else if and (in $expected "float") (findRE `^(?:[1-9]\d*|0)?(?:\.\d+)?$` $val) }}
|
||||||
|
{{ $actual = "float" }}
|
||||||
|
{{ else if and (in $expected "string") (in (slice "bool" "int" "float" "float64") $actual) }}
|
||||||
|
{{ $actual = "string" }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ if and $val (not (in $expected $actual)) }}
|
||||||
|
{{ warnf "[%s] argument '%s': expected type '%s', got '%s'" $structure (string $key) (delimit $expected ", ") $actual }}
|
||||||
|
{{ $error = true }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{/* validate permitted values */}}
|
||||||
|
{{ if and $def.options.values (eq $actual "string") }}
|
||||||
|
{{ if and $val (not (in $def.options.values $val)) }}
|
||||||
|
{{ warnf "[%s] argument '%s': unexpected value '%s'" $structure (string $key) $val }}
|
||||||
|
{{ $error = true }}
|
||||||
|
{{ end }}
|
||||||
|
{{ else if and $def.options.min (in (slice "int" "float" "float64") $actual) }}
|
||||||
|
{{ if lt $val $def.options.min }}
|
||||||
|
{{ warnf "[%s] argument '%s': value '%s' out of range [$d, $d]" $structure (string $key) $val $def.options.min $def.options.max}}
|
||||||
|
{{ $error = true }}
|
||||||
|
{{ end }}
|
||||||
|
{{ else if and $def.options.max (in (slice "int" "float" "float64") $actual) }}
|
||||||
|
{{ if (gt $val $def.options.max) }}
|
||||||
|
{{ warnf "[%s] argument '%s': value '%s' out of range [$d, $d]" $structure (string $key) $val $def.options.min $def.options.max}}
|
||||||
|
{{ $error = true }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{/* validate required arguments */}}
|
||||||
|
{{ $max := len $args }}
|
||||||
|
{{ $expected := 0 }}
|
||||||
|
{{ range $key, $val := $definitions }}
|
||||||
|
{{ $skip := false }}
|
||||||
|
{{ $groups := slice | append $val.group }}
|
||||||
|
{{ if and $group $val.group }}
|
||||||
|
{{ $skip = not (in $groups $group )}}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ if and (not $skip) (not $val.optional) }}
|
||||||
|
{{ if $namedArgs }}
|
||||||
|
{{ if not (isset $args $key) }}
|
||||||
|
{{ warnf "[%s] argument '%s': expected value" $structure $key }}
|
||||||
|
{{ $error = true }}
|
||||||
|
{{ end }}
|
||||||
|
{{ else }}
|
||||||
|
{{ $expected = add $expected 1 }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ if lt $max $expected }}
|
||||||
|
{{ warnf "[%s] expected '%d' args, got '%d'" $structure $expected $max }}
|
||||||
|
{{ $error = true }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ return $error }}
|
@@ -1,46 +1,37 @@
|
|||||||
<!--
|
<!--
|
||||||
Creates an HTML element that shows the long form of an abbrevitation. The abbreviation data is centrally stored in a
|
Copyright © 2023 The Hinode Team / Mark Dumay. All rights reserved.
|
||||||
data file. By default, the shortcode uses "abbr.yaml" with translation support.
|
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.
|
||||||
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"
|
|
||||||
|
|
||||||
The shortcode supports the following arguments:
|
|
||||||
"key" Required case-insensitive key of the abbreviation. In shorthand notation, this is the first (and
|
|
||||||
only) matched argument.
|
|
||||||
"data" Optional filename of the abbrevation input. It defaults to "abbr.yaml" with translation support.
|
|
||||||
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" Optional class attribute of the abbr element. For example, specify "initialism" for a slightly
|
|
||||||
smaller font size.
|
|
||||||
-->
|
-->
|
||||||
|
|
||||||
{{ $error := false }}
|
{{ $error := false }}
|
||||||
|
|
||||||
|
<!-- Validate and initialize arguments -->
|
||||||
|
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "abbr" "args" .Params) }}
|
||||||
|
{{ errorf "Invalid arguments: %s" .Position -}}
|
||||||
|
{{ $error = true }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
<!-- Initialize arguments and default values -->
|
||||||
{{ $key := "" }}
|
{{ $key := "" }}
|
||||||
{{- if .IsNamedParams }}{{ $key = .Get "key" }}{{ else }}{{ $key = .Get 0 }}{{ end }}
|
{{ $data := "abbr" }}
|
||||||
|
{{ $class := "" }}
|
||||||
|
{{ $title := "" }}
|
||||||
|
{{ $entries := slice }}
|
||||||
|
|
||||||
{{ if not $key -}}
|
{{- if .IsNamedParams }}
|
||||||
{{ errorf "Missing param 'key': %s" .Position -}}
|
{{ $key = .Get "key" }}
|
||||||
{{ $error = true }}
|
{{- $data := .Get "data" | default "abbr" -}}
|
||||||
{{ end -}}
|
{{- $class := .Get "class" | default "" -}}
|
||||||
|
{{ else }}
|
||||||
{{- $data := .Get "data" | default "abbr" -}}
|
{{ $key = .Get 0 }}
|
||||||
{{ if not $data -}}
|
{{ end }}
|
||||||
{{ errorf "Missing param 'data': %s" .Position -}}
|
|
||||||
{{ $error = true }}
|
|
||||||
{{ end -}}
|
|
||||||
|
|
||||||
{{- $class := .Get "class" | default "" -}}
|
|
||||||
|
|
||||||
|
<!-- Main code -->
|
||||||
{{ if not $error }}
|
{{ if not $error }}
|
||||||
{{/* Try language-specific file first */}}
|
{{/* Try language-specific file first */}}
|
||||||
{{ $path := path.Join (path.Dir $data) (printf "%s.%s" (path.BaseName $data) .Page.Language.Lang) (path.Ext $data) }}
|
{{ $path := path.Join (path.Dir $data) (printf "%s.%s" (path.BaseName $data) .Page.Language.Lang) (path.Ext $data) }}
|
||||||
{{ $entries := index site.Data $path }}
|
{{ $entries = index site.Data $path }}
|
||||||
{{/* Use exact provided path as backup */}}
|
{{/* Use exact provided path as backup */}}
|
||||||
{{ if not $entries -}}
|
{{ if not $entries -}}
|
||||||
{{ $entries = index site.Data $data }}
|
{{ $entries = index site.Data $data }}
|
||||||
@@ -49,20 +40,19 @@
|
|||||||
{{ errorf "Invalid abbrevation data '%s': %s" $data .Position -}}
|
{{ errorf "Invalid abbrevation data '%s': %s" $data .Position -}}
|
||||||
{{ $error = true }}
|
{{ $error = true }}
|
||||||
{{ end -}}
|
{{ end -}}
|
||||||
|
{{ end }}
|
||||||
{{ $title := "" }}
|
|
||||||
{{ if not $error }}
|
{{ if not $error }}
|
||||||
{{ $elements := (where $entries "id" (lower $key)) }}
|
{{ $elements := (where $entries "id" (lower $key)) }}
|
||||||
{{ if gt (len $elements) 0 }}
|
{{ if gt (len $elements) 0 }}
|
||||||
{{ $title = index (index $elements 0) "long" }}
|
{{ $title = index (index $elements 0) "long" }}
|
||||||
{{ end -}}
|
{{ end -}}
|
||||||
{{ if not $title -}}
|
{{ if not $title -}}
|
||||||
{{ errorf "Cannot find value for '%s': %s" $key .Position -}}
|
{{ errorf "Cannot find value for '%s': %s" $key .Position -}}
|
||||||
{{ $error = true }}
|
{{ $error = true }}
|
||||||
{{ end -}}
|
{{ end -}}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{ if not $error }}
|
{{ if not $error }}
|
||||||
<abbr {{ with $class }}class="{{ . }}"{{ end }} title="{{ $title }}" tabindex="0">{{ $key }}</abbr>
|
<abbr {{ with $class }}class="{{ . }}"{{ end }} title="{{ $title }}" tabindex="0">{{ $key }}</abbr>
|
||||||
{{ end }}
|
|
||||||
{{ end }}
|
{{ end }}
|
@@ -1,27 +1,41 @@
|
|||||||
<!--
|
<!--
|
||||||
Defines an individual accordion item. The shortcode supports the following arguments:
|
Copyright © 2023 The Hinode Team / Mark Dumay. All rights reserved.
|
||||||
"header" Required header of the accordion element.
|
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
|
||||||
"class" Optional class attribute of the inner accordion element.
|
Visit gethinode.com/license for more details.
|
||||||
"show" Optional flag to indicate an item should be shown as collapsed.
|
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
{{ $error := false }}
|
||||||
|
|
||||||
|
<!-- Validate arguments -->
|
||||||
|
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "accordion-item" "args" .Params) }}
|
||||||
|
{{ if .Parent }}
|
||||||
|
{{ errorf "Invalid arguments: %s" .Parent.Position -}}
|
||||||
|
{{ else }}
|
||||||
|
{{ errorf "Invalid arguments: %s" .Position -}}
|
||||||
|
{{ end }}
|
||||||
|
{{ $error = true }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ if not .Parent }}
|
||||||
|
{{ errorf "Cannot use isolated accordion-item, wrap it in an accordion: %s" .Position -}}
|
||||||
|
{{ $error = true }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
<!-- Initialize arguments and default values -->
|
||||||
|
|
||||||
{{- $id := .Ordinal -}}
|
{{- $id := .Ordinal -}}
|
||||||
{{- $parent := printf "accordion-%d" .Parent.Ordinal -}}
|
{{ $parent := "" }}
|
||||||
{{- with (.Parent.Get "id") -}}
|
{{ if not $error }}
|
||||||
{{- $parent = . -}}
|
{{- $parent = printf "accordion-%d" .Parent.Ordinal -}}
|
||||||
|
{{- with (.Parent.Get "id") -}}
|
||||||
|
{{- $parent = . -}}
|
||||||
|
{{- end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
{{- $id := .Ordinal -}}
|
{{- $id := .Ordinal -}}
|
||||||
{{ $header := .Get "header" | default "" -}}
|
{{ $header := .Get "header" -}}
|
||||||
{{ if not $header -}}
|
|
||||||
{{ if .Parent }}
|
|
||||||
{{ errorf "Missing value for param 'header': %s" .Parent.Position -}}
|
|
||||||
{{ else }}
|
|
||||||
{{ errorf "Missing value for param 'header': %s" .Position -}}
|
|
||||||
{{ end }}
|
|
||||||
{{ end -}}
|
|
||||||
|
|
||||||
{{ $class := .Get "class" | default "" -}}
|
{{ $class := .Get "class" | default "" -}}
|
||||||
|
|
||||||
{{ $body := trim .Inner " \r\n" -}}
|
{{ $body := trim .Inner " \r\n" -}}
|
||||||
{{ if not $body -}}
|
{{ if not $body -}}
|
||||||
{{ if .Parent }}
|
{{ if .Parent }}
|
||||||
@@ -29,27 +43,24 @@
|
|||||||
{{ else }}
|
{{ else }}
|
||||||
{{ errorf "Missing inner element text: %s" .Position -}}
|
{{ errorf "Missing inner element text: %s" .Position -}}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
{{ $error = true }}
|
||||||
{{ end -}}
|
{{ end -}}
|
||||||
|
|
||||||
{{ $supportedFlags := slice "true" "false" -}}
|
<!-- Main code -->
|
||||||
{{ $showParam := "false" -}}
|
|
||||||
{{ $show := false -}}
|
{{ $show := false -}}
|
||||||
{{ with .Get "show" }}{{ $showParam = . }}{{ end -}}
|
{{ if not $error }}
|
||||||
{{ if in $supportedFlags $showParam -}}
|
{{ with .Get "show" }}{{ $show = partial "utilities/CastBool.html" . }}{{ end -}}
|
||||||
{{ if eq $showParam "true" }}{{ $show = true }}{{ else }}{{ $show = false }}{{ end -}}
|
|
||||||
{{ else -}}
|
|
||||||
{{ errorf "Invalid value for param 'show': %s" $showParam -}}
|
|
||||||
{{ end -}}
|
|
||||||
|
|
||||||
<div class="accordion-item">
|
<div class="accordion-item">
|
||||||
{{- with $header -}}
|
{{- with $header -}}
|
||||||
<h2 class="accordion-header m-0" id="{{ $parent }}-heading-{{ $id }}">
|
<h2 class="accordion-header m-0" id="{{ $parent }}-heading-{{ $id }}">
|
||||||
<button class="accordion-button{{ if not $show }} collapsed{{ end }}" type="button" data-bs-toggle="collapse" data-bs-target="#{{ $parent }}-item-{{ $id }}" aria-expanded="false" aria-controls="{{ $parent }}-item-{{ $id }}">
|
<button class="accordion-button{{ if not $show }} collapsed{{ end }}" type="button" data-bs-toggle="collapse" data-bs-target="#{{ $parent }}-item-{{ $id }}" aria-expanded="false" aria-controls="{{ $parent }}-item-{{ $id }}">
|
||||||
{{ . }}
|
{{ . }}
|
||||||
</button>
|
</button>
|
||||||
</h2>
|
</h2>
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
<div id="{{ $parent }}-item-{{ $id }}" class="accordion-collapse collapse{{ if $show }} show{{ end }}{{ with $class }} {{ . }}{{ end }}" aria-labelledby="{{ $parent }}-heading-{{ $id }}" data-bs-parent="#{{ $parent }}">
|
<div id="{{ $parent }}-item-{{ $id }}" class="accordion-collapse collapse{{ if $show }} show{{ end }}{{ with $class }} {{ . }}{{ end }}" aria-labelledby="{{ $parent }}-heading-{{ $id }}" data-bs-parent="#{{ $parent }}">
|
||||||
<div class="accordion-body">{{ $body | .Page.RenderString | safeHTML }}</div>
|
<div class="accordion-body">{{ $body | .Page.RenderString | safeHTML }}</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
{{ end }}
|
@@ -1,34 +1,31 @@
|
|||||||
<!--
|
<!--
|
||||||
Displays a group of vertically collapsing and expanding items. Add accordion-item inner elements for each accordion
|
Copyright © 2023 The Hinode Team / Mark Dumay. All rights reserved.
|
||||||
item. The shortcode supports the following arguments:
|
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
|
||||||
"id": Optional id of the accordion, defaults to "accordion-" with a sequential number.
|
Visit gethinode.com/license for more details.
|
||||||
"always-open": Optional flag to make accordion items stay open when another item is opened.
|
|
||||||
"class": Optional class attribute of the accordion element, e.g. “w-50”.
|
|
||||||
-->
|
-->
|
||||||
|
|
||||||
{{- $id := printf "accordion-%d" .Ordinal -}}
|
{{ $error := false }}
|
||||||
{{ with .Get "id" }}
|
|
||||||
{{ $id = . }}
|
<!-- Validate arguments -->
|
||||||
|
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "accordion" "args" .Params) }}
|
||||||
|
{{ errorf "Invalid arguments: %s" .Position -}}
|
||||||
|
{{ $error = true }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{- $class := .Get "class" | default "" -}}
|
|
||||||
|
|
||||||
{{- $openParam := "false" -}}
|
<!-- Main code -->
|
||||||
{{- $open := false -}}
|
{{ if not $error }}
|
||||||
{{- with .Get "always-open" }}{{ $openParam = . }}{{ end -}}
|
{{- $id := printf "accordion-%d" .Ordinal -}}
|
||||||
{{- $supportedFlags := slice "true" "false" -}}
|
{{ with .Get "id" }}{{ $id = . }}{{ end }}
|
||||||
{{- if in $supportedFlags $openParam -}}
|
{{- $class := .Get "class" | default "" -}}
|
||||||
{{- if eq $openParam "true" }}{{ $open = true }}{{ end -}}
|
{{- $open := false -}}
|
||||||
{{- else -}}
|
{{ with .Get "always-open" }}{{ $open = partial "utilities/CastBool.html" . }}{{ end -}}
|
||||||
{{- errorf "Invalid value for param 'always-open': %s" .Position -}}
|
{{- $body := .Inner -}}
|
||||||
{{- $error = true -}}
|
{{- if $open -}}
|
||||||
{{- end -}}
|
{{- $pattern := printf "data-bs-parent=\"#%s\"" $id -}}
|
||||||
|
{{- $body = (replace .Inner $pattern "") | .Page.RenderString | safeHTML }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
{{- $body := .Inner -}}
|
<div id="{{ $id }}" class="accordion mb-3{{ with $class }} {{ . }}{{ end }}">
|
||||||
{{- if $open -}}
|
{{- $body -}}
|
||||||
{{- $pattern := printf "data-bs-parent=\"#%s\"" $id -}}
|
</div>
|
||||||
{{- $body = (replace .Inner $pattern "") | .Page.RenderString | safeHTML }}
|
{{ end }}
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
<div id="{{ $id }}" class="accordion mb-3{{ with $class }} {{ . }}{{ end }}">
|
|
||||||
{{- $body -}}
|
|
||||||
</div>
|
|
@@ -1,61 +1,41 @@
|
|||||||
<!--
|
<!--
|
||||||
Displays an alert. The shortcode supports the following arguments:
|
Copyright © 2023 The Hinode Team / Mark Dumay. All rights reserved.
|
||||||
"color": Optional theme color of the alert, either "primary" (default), "secondary", "success", "danger",
|
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
|
||||||
"warning", "info", "light", "dark", "white" or "black".
|
Visit gethinode.com/license for more details.
|
||||||
"dismissible" Optional flag to indicate the alert is dismissible, defaults to false.
|
|
||||||
"icon" Optional class and name of a Font Awesome icon to include.
|
|
||||||
"type" Optional type of the alert, either "danger" or "info". Generates an alert with related color and
|
|
||||||
icon.
|
|
||||||
"class": Optional class attribute of the alert element.
|
|
||||||
-->
|
-->
|
||||||
|
|
||||||
{{- $error := false -}}
|
{{ $error := false }}
|
||||||
{{ $color := "primary" -}}
|
|
||||||
{{ $icon := "" }}
|
|
||||||
{{ $type := "" -}}
|
|
||||||
|
|
||||||
{{ with .Get "type" }}{{ $type = . }}{{ end -}}
|
<!-- Validate arguments -->
|
||||||
{{ $supportedTypes := slice "danger" "info" -}}
|
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "alert" "args" .Params) }}
|
||||||
{{ if $type }}
|
{{ errorf "Invalid arguments: %s" .Position -}}
|
||||||
{{ if not (in $supportedTypes $type) -}}
|
{{ $error = true }}
|
||||||
{{ errorf "Invalid value for param 'type': %s" .Position -}}
|
{{ end }}
|
||||||
{{ $error = true -}}
|
|
||||||
{{ else }}
|
|
||||||
{{ $color = $type }}
|
|
||||||
{{ if eq $type "danger" }}{{ $icon = "fas triangle-exclamation" }}{{ else }}{{ $icon = "fa lightbulb" }}{{ end }}
|
|
||||||
{{ end -}}
|
|
||||||
{{ end -}}
|
|
||||||
|
|
||||||
{{ with .Get "color" }}{{ $color = . }}{{ end -}}
|
<!-- Initialize arguments -->
|
||||||
{{ $supportedColors := slice "primary" "secondary" "success" "danger" "warning" "info" "light" "dark" -}}
|
{{ $color := .Get "color" | default "danger" -}}
|
||||||
{{ if not (in $supportedColors $color) -}}
|
{{ $icon := .Get "icon" | default "" }}
|
||||||
{{ errorf "Invalid value for param 'color': %s" .Position -}}
|
{{ $type := .Get "type" | default "" -}}
|
||||||
{{ $error = true -}}
|
{{ if eq $type "danger" }}{{ $icon = "fas triangle-exclamation" }}{{ else if eq $type "info" }}{{ $icon = "fa lightbulb" }}{{ end }}
|
||||||
{{ end -}}
|
|
||||||
|
|
||||||
{{ with .Get "icon" }}{{ $icon = . }}{{ end }}
|
|
||||||
{{ with $icon }}
|
{{ with $icon }}
|
||||||
{{ $icon = partial "assets/icon.html" (dict "icon" (printf "%s fa-2x fa-fw" .)) }}
|
{{ $icon = partial "assets/icon.html" (dict "icon" (printf "%s fa-2x fa-fw" .)) }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{ $dismissibleParam := "false" -}}
|
|
||||||
{{ $dismissible := false -}}
|
{{ $dismissible := false -}}
|
||||||
{{ with .Get "dismissible" }}{{ $dismissibleParam = . }}{{ end -}}
|
{{ with .Get "dismissible" }}{{ $dismissible = partial "utilities/CastBool.html" . }}{{ end -}}
|
||||||
{{ $supportedFlags := slice "true" "false" -}}
|
|
||||||
{{ if in $supportedFlags $dismissibleParam -}}
|
|
||||||
{{ if eq $dismissibleParam "true" }}{{ $dismissible = true }}{{ end -}}
|
|
||||||
{{ else -}}
|
|
||||||
{{ errorf "Invalid value for param 'dismissible': %s" .Position -}}
|
|
||||||
{{ $error = true -}}
|
|
||||||
{{ end -}}
|
|
||||||
|
|
||||||
{{- $class := .Get "class" | default "" -}}
|
{{- $class := .Get "class" | default "" -}}
|
||||||
|
|
||||||
|
{{ $body := trim .Inner " \r\n" -}}
|
||||||
|
{{ if not $body -}}
|
||||||
|
{{ errorf "Missing inner element text: %s" .Position -}}
|
||||||
|
{{ $error = true }}
|
||||||
|
{{ end -}}
|
||||||
|
|
||||||
|
<!-- Main code -->
|
||||||
{{- if not $error -}}
|
{{- if not $error -}}
|
||||||
<div class="d-flex alert alert-{{ $color }} {{ if $dismissible }}alert-dismissible fade show{{ end }}{{ with $class }} {{ . }}{{ end }}" role="alert">
|
<div class="d-flex alert alert-{{ $color }} {{ if $dismissible }}alert-dismissible fade show{{ end }}{{ with $class }} {{ . }}{{ end }}" role="alert">
|
||||||
{{ with $icon }}<div class="pt-1 pe-2">{{ . }}</div>{{ end }}
|
{{ with $icon }}<div class="pt-1 pe-2">{{ . }}</div>{{ end }}
|
||||||
<div class="flex-grow-1 my-auto">
|
<div class="flex-grow-1 my-auto">
|
||||||
{{ trim .Inner " \r\n" | .Page.RenderString | safeHTML -}}
|
{{ $body | .Page.RenderString | safeHTML -}}
|
||||||
{{ if $dismissible }}<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="{{ T "close" }}"></button>{{ end }}
|
{{ if $dismissible }}<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="{{ T "close" }}"></button>{{ end }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
84
layouts/shortcodes/args.html
Normal file
84
layouts/shortcodes/args.html
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
<!--
|
||||||
|
Copyright © 2023 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" "args" "args" .Params) }}
|
||||||
|
{{ errorf "Invalid arguments: %s" .Position -}}
|
||||||
|
{{ $error = true }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
<!-- Initialize arguments -->
|
||||||
|
{{ $structure := "" }}
|
||||||
|
{{- if .IsNamedParams }}{{ $structure = .Get "structure" }}{{ else }}{{ $structure = .Get 0 }}{{ end }}
|
||||||
|
{{ $group := "" }}
|
||||||
|
{{- if .IsNamedParams }}{{ $group = .Get "group" | default "" }}{{ else }}{{ $group = .Get 1 | default "" }}{{ end }}
|
||||||
|
{{ $definitions := "" }}
|
||||||
|
|
||||||
|
{{ if not $error }}
|
||||||
|
{{ $definitions = (index site.Data.structures $structure).arguments }}
|
||||||
|
{{ if not $definitions }}
|
||||||
|
{{- errorf "Cannot find data structure '%s': %s" $structure .Position -}}
|
||||||
|
{{ $error = true }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ $parent := false -}}
|
||||||
|
{{ with .Get "parent" }}{{ $parent = partial "utilities/CastBool.html" . }}{{ end -}}
|
||||||
|
|
||||||
|
<!-- Main code -->
|
||||||
|
{{ if not $error }}
|
||||||
|
{{ $table := printf "| %s | %s | %s | %s | %s |\n| --- | --- | --- | --- | --- |"
|
||||||
|
(T "name") (T "type") (T "required") (T "default") (T "comment")
|
||||||
|
}}
|
||||||
|
|
||||||
|
{{ range $key, $val := $definitions }}
|
||||||
|
{{ $skip := false }}
|
||||||
|
{{ $groups := slice | append $val.group }}
|
||||||
|
{{ if and $group $val.group }}
|
||||||
|
{{ $skip = not (in $groups $group )}}
|
||||||
|
{{ end }}
|
||||||
|
{{ if $parent }}{{ $skip = not (in (slice "cascade" "merge") $val.parent) }}{{ end }}
|
||||||
|
|
||||||
|
{{ if not $skip }}
|
||||||
|
{{ $type := $val.type }}
|
||||||
|
{{ if reflect.IsSlice $val.type }}{{ $type = delimit $val.type ", " }}{{ end }}
|
||||||
|
|
||||||
|
{{ $required := "" }}
|
||||||
|
{{ if not $val.optional }}{{ $required = "yes" }}{{ end }}
|
||||||
|
|
||||||
|
{{ $comment := $val.comment }}
|
||||||
|
{{ if $val.deprecated }}
|
||||||
|
{{ $comment = printf `{{< release version="%s" short="true" size="sm" inline="true" state="deprecated" >}} %s` $val.deprecated $comment }}
|
||||||
|
{{ end }}
|
||||||
|
{{ if $val.release }}
|
||||||
|
{{ $comment = printf `{{< release version="%s" short="true" size="sm" inline="true" >}} %s` $val.release $comment }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ $min := "" }}
|
||||||
|
{{ $max := "" }}
|
||||||
|
{{ if and $val.options.values (eq $type "select") }}
|
||||||
|
{{ $comment = printf "%s %s: [%s]." $comment (T "supportedValues") (delimit $val.options.values ", ") }}
|
||||||
|
{{ else if and $val.options.min (in (slice "int" "float" "float64") $type) }}
|
||||||
|
{{ $min = $val.options.min }}
|
||||||
|
{{ else if and $val.options.max (in (slice "int" "float" "float64") $type) }}
|
||||||
|
{{ $max = $val.options.max }}
|
||||||
|
{{ end }}
|
||||||
|
{{ if and $min $max }}
|
||||||
|
{{ $comment = printf "%s %s: [%d, %d]." $comment (T "supportedValues") $min $max }}
|
||||||
|
{{ else if $min }}
|
||||||
|
{{ $comment = printf "%s %s: >=%d." $comment (T "supportedValues") $min }}
|
||||||
|
{{ else if $max }}
|
||||||
|
{{ $comment = printf "%s %s: <=%d." $comment (T "supportedValues") $max }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ $table = printf "%s\n| %s | %s | %s | %s | %s |" $table $key $type $required (or (string $val.default) "") $comment }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ partial "assets/table.html" (dict "page" .Page "input" $table "args" slice) }}
|
||||||
|
{{ end }}
|
@@ -1,23 +1,23 @@
|
|||||||
<!--
|
<!--
|
||||||
Adds an inline badge. The shortcode supports the following arguments:
|
Copyright © 2023 The Hinode Team / Mark Dumay. All rights reserved.
|
||||||
"title" Required title of the badge.
|
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
|
||||||
"class" Optional class attributes of the badge element.
|
Visit gethinode.com/license for more details.
|
||||||
"color" Optional theme color of the element, either "primary", "secondary" (default), "success",
|
|
||||||
"danger", "warning", "info", "light", "dark", "white", or "black".
|
|
||||||
-->
|
-->
|
||||||
|
|
||||||
{{- $error := false -}}
|
{{ $error := false }}
|
||||||
|
|
||||||
|
<!-- Validate arguments -->
|
||||||
|
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "badge" "args" .Params) }}
|
||||||
|
{{ errorf "Invalid arguments: %s" .Position -}}
|
||||||
|
{{ $error = true }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
<!-- Initialize arguments -->
|
||||||
{{- $title := .Get "title" | default "" -}}
|
{{- $title := .Get "title" | default "" -}}
|
||||||
{{- $class := .Get "class" | default "" -}}
|
{{- $class := .Get "class" | default "" -}}
|
||||||
{{- $color := "secondary" -}}
|
{{- $color := .Get "color" | default "secondary" -}}
|
||||||
{{- with .Get "color" }}{{ $color = . }}{{ end -}}
|
|
||||||
{{- $supportedColors := slice "primary" "secondary" "success" "danger" "warning" "info" "light" "dark" "white" "black" -}}
|
|
||||||
{{- if not (in $supportedColors $color) -}}
|
|
||||||
{{- errorf "Invalid value for param 'color': %s" .Position -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{- if not $title }}
|
<!-- Main code -->
|
||||||
{{ errorf "Missing title: %s" .Position -}}
|
{{- if not $error }}
|
||||||
{{ else -}}
|
|
||||||
<span class="badge text-bg-{{ $color }}{{ with $class }} {{ . }}{{ end }}">{{ $title | plainify }}</span>
|
<span class="badge text-bg-{{ $color }}{{ with $class }} {{ . }}{{ end }}">{{ $title | plainify }}</span>
|
||||||
{{ end -}}
|
{{ end -}}
|
||||||
|
@@ -1,11 +1,20 @@
|
|||||||
<!--
|
<!--
|
||||||
Displays a breadcrum for a specific page. The shortcode supports the following arguments:
|
Copyright © 2023 The Hinode Team / Mark Dumay. All rights reserved.
|
||||||
"path" Optional path of the page, defaults to current page.
|
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 -}}
|
{{ $error := false }}
|
||||||
|
|
||||||
|
<!-- Validate arguments -->
|
||||||
|
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "breadcrumb" "args" .Params "group" "shortcode") }}
|
||||||
|
{{ errorf "Invalid arguments: %s" .Position -}}
|
||||||
|
{{ $error = true }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
<!-- Initialize arguments -->
|
||||||
{{- $page := . -}}
|
{{- $page := . -}}
|
||||||
{{- $path := .Get "path" | default "" }}
|
{{- $path := .Get "path" }}
|
||||||
{{- if $path -}}
|
{{- if $path -}}
|
||||||
{{- $page = .Site.GetPage $path -}}
|
{{- $page = .Site.GetPage $path -}}
|
||||||
{{- if not $page -}}
|
{{- if not $page -}}
|
||||||
@@ -14,6 +23,7 @@
|
|||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
|
<!-- Main code -->
|
||||||
{{- if not $error -}}
|
{{- if not $error -}}
|
||||||
{{- partial "assets/breadcrumb.html" $page -}}
|
{{- partial "assets/breadcrumb.html" (dict "page" $page) -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user