Compare commits

...

282 Commits

Author SHA1 Message Date
Mark Dumay
713d1920a3 Merge pull request #703 from gethinode/validation
Bump package release
2024-01-04 15:14:21 +01:00
Mark Dumay
adc1212cd7 Merge branch 'main' into validation 2024-01-04 14:56:10 +01:00
mark
b8803d75fe Bump package release 2024-01-04 14:55:34 +01:00
github-actions[bot]
8006acb8c9 Merge pull request #702 from gethinode/dependabot/npm_and_yarn/cssnano-preset-advanced-6.0.3
Bump cssnano-preset-advanced from 6.0.2 to 6.0.3
2024-01-04 13:38:16 +00:00
dependabot[bot]
7be7e3b7f0 Bump cssnano-preset-advanced from 6.0.2 to 6.0.3
Bumps [cssnano-preset-advanced](https://github.com/cssnano/cssnano) from 6.0.2 to 6.0.3.
- [Release notes](https://github.com/cssnano/cssnano/releases)
- [Commits](https://github.com/cssnano/cssnano/compare/cssnano-preset-advanced@6.0.2...cssnano-preset-advanced@6.0.3)

---
updated-dependencies:
- dependency-name: cssnano-preset-advanced
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-04 13:32:05 +00:00
github-actions[bot]
a6c18c91e5 Merge pull request #701 from gethinode/dependabot/npm_and_yarn/cssnano-6.0.3
Bump cssnano from 6.0.2 to 6.0.3
2024-01-04 13:31:17 +00:00
dependabot[bot]
81c531e2b5 Bump cssnano from 6.0.2 to 6.0.3
Bumps [cssnano](https://github.com/cssnano/cssnano) from 6.0.2 to 6.0.3.
- [Release notes](https://github.com/cssnano/cssnano/releases)
- [Commits](https://github.com/cssnano/cssnano/compare/cssnano@6.0.2...cssnano@6.0.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-04 13:24:59 +00:00
Mark Dumay
d66910740f Merge pull request #700 from gethinode/validation
Bump package release
2024-01-04 08:09:05 +01:00
Mark Dumay
3323bf500d Merge branch 'main' into validation 2024-01-03 19:00:21 +01:00
mark
3cc34d18e0 Bump package release 2024-01-03 18:59:49 +01:00
Mark Dumay
aeb050440f Merge pull request #699 from gethinode/validation
Fix alignment of cards in group
2024-01-03 17:34:29 +01:00
Mark Dumay
a9a6bd0d31 Merge branch 'main' into validation 2024-01-03 17:04:57 +01:00
Mark Dumay
2b921def52 Merge pull request #698 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2024-01-03 17:04:21 +01:00
mark
f5a1a97383 Fix alignment of cards in group 2024-01-03 16:59:05 +01:00
markdumay
c87b96f8f0 fix: update Hugo module dependencies 2024-01-03 15:57:10 +00:00
Mark Dumay
1def105bda Merge pull request #697 from gethinode/validation
Keep HTML whitespace to improve external cue visualization
2024-01-03 16:07:45 +01:00
Mark Dumay
1d67a30ece Merge branch 'main' into validation 2024-01-03 16:01:48 +01:00
mark
1a3d50ca17 Keep HTML whitespace to improve external cue visualiation 2024-01-03 15:40:30 +01:00
Mark Dumay
ce26722c96 Merge pull request #696 from gethinode/validation
Refactor argument validation of internal partials
2024-01-03 14:25:22 +01:00
Mark Dumay
f2aab26b6e Merge branch 'main' into validation 2024-01-03 14:15:39 +01:00
mark
10e086594b Structure validation of section-menu args 2024-01-03 14:11:37 +01:00
mark
30ea77182d Structure validation of sharing args 2024-01-03 14:06:53 +01:00
mark
e899d7d39a Structure validation of sidebar args 2024-01-03 13:39:48 +01:00
mark
3b2e780a20 Fix typo 2024-01-03 13:25:04 +01:00
mark
d443d89616 Structure validation of toc-dropdown args 2024-01-03 13:17:18 +01:00
mark
c981ac45d3 Structure validation of toc args 2024-01-03 13:11:15 +01:00
mark
ceabca3a43 Structure validation of section-header args 2024-01-03 13:03:04 +01:00
mark
99b6fcbc42 Adjust indentation 2024-01-03 12:59:06 +01:00
mark
dde79bf5d0 Structure validation of pagination args 2024-01-03 09:14:36 +01:00
mark
ff3e957558 Structure validation of page-alert args 2024-01-03 08:59:34 +01:00
mark
1466c7a927 Fix error message 2024-01-03 08:59:21 +01:00
mark
1a7c18d209 Structure validation of navbar-item args 2024-01-03 08:53:48 +01:00
mark
2c8ed7c494 Structure validation of list args 2024-01-03 08:02:42 +01:00
mark
0526b4c5e0 Adjust indentation 2024-01-03 08:02:04 +01:00
mark
c2f4e6bc48 Refine layout 2024-01-03 07:24:50 +01:00
mark
0cc5fcb33a Refine comments 2024-01-03 07:24:25 +01:00
mark
e461a9564f Adjust line breaks 2024-01-03 07:24:12 +01:00
Mark Dumay
183879d51c Merge pull request #695 from gethinode/validation
Drop built-in comments support
2024-01-02 15:53:53 +01:00
Mark Dumay
cddae05b53 Merge branch 'main' into validation 2024-01-02 15:44:49 +01:00
mark
67d831d898 Bump package release 2024-01-02 15:37:40 +01:00
mark
d726323220 Close #694 2024-01-02 15:36:45 +01:00
Mark Dumay
f76fea84cc Merge pull request #693 from gethinode/validation
Refine argument validation of modules
2024-01-02 15:23:00 +01:00
Mark Dumay
6ec24e12f7 Merge branch 'main' into validation 2024-01-02 15:07:11 +01:00
mark
cf27cce44d Bump package release 2024-01-02 15:05:31 +01:00
github-actions[bot]
6ea22d121f Merge pull request #692 from gethinode/dependabot/npm_and_yarn/eslint-plugin-n-16.6.1
Bump eslint-plugin-n from 16.6.0 to 16.6.1
2024-01-02 13:42:24 +00:00
dependabot[bot]
2d7bfaa9dc Bump eslint-plugin-n from 16.6.0 to 16.6.1
Bumps [eslint-plugin-n](https://github.com/eslint-community/eslint-plugin-n) from 16.6.0 to 16.6.1.
- [Release notes](https://github.com/eslint-community/eslint-plugin-n/releases)
- [Commits](https://github.com/eslint-community/eslint-plugin-n/compare/16.6.0...16.6.1)

---
updated-dependencies:
- dependency-name: eslint-plugin-n
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-02 13:37:06 +00:00
Mark Dumay
0e62cc4fec Merge pull request #691 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2024-01-02 12:59:52 +01:00
markdumay
ae0307092f fix: update Hugo module dependencies 2024-01-02 11:03:20 +00:00
Mark Dumay
2ebf6fe7fa Merge pull request #690 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2024-01-02 12:02:32 +01:00
mark
f9805de74c Adjust display of min-max range 2024-01-02 11:47:24 +01:00
mark
20b7b6b95c Fix type of pre menu 2024-01-02 06:59:05 +01:00
mark
c2beca3504 Update copyright notice 2024-01-01 12:32:39 +01:00
markdumay
7414a1badf fix: update Hugo module dependencies 2023-12-31 03:16:34 +00:00
Mark Dumay
cd5f7e08c4 Merge pull request #689 from gethinode/validation
Move utilities to separate module
2023-12-30 11:49:46 +01:00
Mark Dumay
fd804fa29a Merge branch 'main' into validation 2023-12-30 11:26:26 +01:00
mark
08c310c59e Update netlify build env 2023-12-30 11:25:35 +01:00
mark
46bde0918f Move utilities to separate module 2023-12-30 11:25:28 +01:00
mark
a77c3aa347 Improve persona args 2023-12-30 06:46:04 +01:00
Mark Dumay
d27c04dc64 Merge pull request #688 from gethinode/validation
Refine args handling
2023-12-30 06:36:59 +01:00
Mark Dumay
b0c8326255 Merge branch 'main' into validation 2023-12-30 06:26:40 +01:00
mark
99a35a3ffd Bump package release 2023-12-30 06:26:07 +01:00
mark
c5673efea2 Refine sub and sup args 2023-12-30 06:14:07 +01:00
mark
c3b48e0033 Refine spinner args 2023-12-30 06:09:09 +01:00
mark
5aa57dd402 Refine release args 2023-12-30 06:04:42 +01:00
mark
d919d3f068 Refina nav-item args 2023-12-30 05:59:41 +01:00
mark
38ad418005 Support individual fade arg 2023-12-30 05:59:30 +01:00
mark
ba50786118 Refine nav-item comments 2023-12-29 19:14:04 +01:00
mark
aee3cb3e03 Refine nav args 2023-12-29 19:12:05 +01:00
mark
61430b07e2 Refine navbar args 2023-12-29 18:01:36 +01:00
mark
5d393598c5 Refine the mark args 2023-12-29 15:10:16 +01:00
mark
4b0c075b53 Refine the link args 2023-12-29 15:06:13 +01:00
github-actions[bot]
2b5b6434da Merge pull request #687 from gethinode/dependabot/npm_and_yarn/eslint-plugin-n-16.6.0
Bump eslint-plugin-n from 16.5.0 to 16.6.0
2023-12-29 14:01:36 +00:00
mark
ae0877037a Refine the image args 2023-12-29 14:59:08 +01:00
dependabot[bot]
64a12da2e6 Bump eslint-plugin-n from 16.5.0 to 16.6.0
Bumps [eslint-plugin-n](https://github.com/eslint-community/eslint-plugin-n) from 16.5.0 to 16.6.0.
- [Release notes](https://github.com/eslint-community/eslint-plugin-n/releases)
- [Commits](https://github.com/eslint-community/eslint-plugin-n/compare/16.5.0...16.6.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-n
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-29 13:56:13 +00:00
mark
6865fa40f7 Refine the file args 2023-12-29 14:51:00 +01:00
mark
79632aeed0 Use long form for ID 2023-12-29 14:46:27 +01:00
mark
6f03f3e5fd Refine the example args 2023-12-29 14:46:05 +01:00
mark
df53150972 Refine the docs args 2023-12-29 14:38:29 +01:00
mark
9282cd630d Add missing punctuation 2023-12-29 11:04:12 +01:00
mark
a3eb2fc7cc Refine carousel-item definition 2023-12-29 10:58:05 +01:00
mark
4e39d03240 Refine carousel definition 2023-12-29 10:53:45 +01:00
mark
8cadb30179 Refine button definition 2023-12-29 10:46:45 +01:00
mark
d2c02ca016 Add label alias 2023-12-29 10:46:30 +01:00
mark
1bbfba32a5 Support label alias 2023-12-29 10:45:46 +01:00
mark
cf59cc3a49 Make badge title required 2023-12-29 08:07:06 +01:00
mark
897db61ee2 Fix color of info alert 2023-12-29 08:01:58 +01:00
mark
ac14ac23fb Improve styling of elements 2023-12-29 08:01:43 +01:00
mark
0f1bc34d37 Improve card and card-group arg handling 2023-12-29 07:40:32 +01:00
mark
26d318356f Fix int range init 2023-12-29 06:35:24 +01:00
mark
9f4a0d35b6 Fix inline arg init 2023-12-29 06:17:01 +01:00
mark
a201be6487 Remove debug statement 2023-12-28 17:36:27 +01:00
Mark Dumay
380ebcd1d8 Merge pull request #686 from gethinode/validation
Fix purge settings and arg init
2023-12-28 17:34:07 +01:00
Mark Dumay
c06499033d Merge branch 'main' into validation 2023-12-28 17:17:49 +01:00
mark
0874957993 Bump package release 2023-12-28 17:16:56 +01:00
mark
6019c7412f Update build stats 2023-12-28 17:16:24 +01:00
mark
30c300cabf Fix bool args init 2023-12-28 17:16:16 +01:00
mark
46f11f02ab Fix default color 2023-12-28 17:03:21 +01:00
mark
71e6029117 Exclude embedded video styles from purging 2023-12-28 15:45:49 +01:00
Mark Dumay
5c67da7882 Merge pull request #685 from gethinode/validation
Fix args validation
2023-12-28 15:16:26 +01:00
Mark Dumay
af4f6de4b9 Merge branch 'main' into validation 2023-12-28 15:05:45 +01:00
mark
9b173d6c68 Bump package version 2023-12-28 15:04:59 +01:00
mark
2f4fb5230d Fix type conversion 2023-12-28 15:04:10 +01:00
mark
9144a1fec3 Fix args 2023-12-28 15:03:48 +01:00
mark
4192af1d46 Fix width arg 2023-12-28 15:02:44 +01:00
mark
0e72124cdc Fix cols arg 2023-12-28 15:02:25 +01:00
Mark Dumay
8300b9afee Merge pull request #684 from gethinode/validation
Fix args validation
2023-12-28 14:46:59 +01:00
Mark Dumay
5f61e74dfb Merge branch 'main' into validation 2023-12-28 14:40:46 +01:00
mark
44b3ccd21e Bump package release 2023-12-28 14:39:44 +01:00
mark
29e54ce7ec Fix accordion rendering 2023-12-28 14:38:58 +01:00
mark
f2835209c6 Fix rendering 2023-12-28 14:38:47 +01:00
mark
a0a1b8a9c0 Refactor table shortcode 2023-12-28 14:37:38 +01:00
mark
83f6ec1cb9 Fix persona args 2023-12-28 13:33:17 +01:00
mark
af5b07202e Fix image args 2023-12-28 13:25:27 +01:00
mark
0bcfa59a12 Fix error message 2023-12-28 13:25:03 +01:00
mark
e00095f68d Improve navbar validation error message 2023-12-28 07:38:29 +01:00
mark
5cbd2a1a82 Fix validation error message 2023-12-28 07:28:42 +01:00
mark
9b5a45a3f6 Fix kb args validation 2023-12-28 07:16:18 +01:00
Mark Dumay
325500620a Merge pull request #683 from gethinode/validation
Refactor remaining shortcodes
2023-12-27 17:17:56 +01:00
Mark Dumay
134bfa1a0b Merge branch 'main' into validation 2023-12-27 17:01:06 +01:00
mark
df593859fa Bump package release 2023-12-27 17:00:20 +01:00
mark
4204fae5a0 Fix file 2023-12-27 16:59:51 +01:00
mark
cc12c49143 Update build stats 2023-12-27 16:57:46 +01:00
mark
f09694da70 Remove empty line 2023-12-27 16:57:39 +01:00
mark
d923df2156 Refactor file shortcode 2023-12-27 16:56:08 +01:00
mark
71d1db456a Update comments 2023-12-27 16:45:16 +01:00
mark
ec0eaa2faa Update comments 2023-12-27 16:45:06 +01:00
mark
836cd21df2 Refactor example shortcode 2023-12-27 16:44:57 +01:00
mark
7a4c364b49 Fix indentation 2023-12-27 16:32:20 +01:00
mark
79f10ba724 Improve readability 2023-12-27 16:30:54 +01:00
mark
d0ea4ecd1b Refactor docs shortcode 2023-12-27 16:30:18 +01:00
mark
867e448e21 Refactor command shortcode 2023-12-27 16:01:36 +01:00
mark
50a07d368f Refactor collapse shortcode 2023-12-27 15:44:33 +01:00
mark
21e2435350 Fix error check 2023-12-27 15:37:34 +01:00
mark
0dab66f24c Refactor button-group shortcode 2023-12-27 15:37:25 +01:00
mark
827595ded2 Refactor carousel partial and shortcode 2023-12-27 15:23:12 +01:00
mark
fda99f18e8 Update comments 2023-12-27 15:22:50 +01:00
mark
c9b76c9bc4 Refine comments 2023-12-27 15:22:31 +01:00
mark
3e2e2de482 Refactor kbd shortcode 2023-12-27 14:53:57 +01:00
Mark Dumay
d648873e21 Merge pull request #682 from gethinode/validation
Refactor image partial and shortcode
2023-12-27 14:47:35 +01:00
Mark Dumay
2490b26277 Merge branch 'main' into validation 2023-12-27 14:42:01 +01:00
mark
66ccd7a71d Refactor image partial and shortcode 2023-12-27 14:41:00 +01:00
mark
4ef440d499 Remove comments 2023-12-27 14:40:09 +01:00
Mark Dumay
e334dd1d10 Merge pull request #681 from gethinode/validation
Refactor sub, sup, spinner, release, persona, navbar, nav, mark, and link
2023-12-27 10:01:17 +01:00
Mark Dumay
c7e62acf9d Merge branch 'main' into validation 2023-12-27 09:47:24 +01:00
mark
f44adf92b4 Refactor link partial and shortcode 2023-12-27 09:45:28 +01:00
mark
87cd07801d Adjust indentation 2023-12-27 09:20:39 +01:00
mark
24e96e2724 Refactor mark shortcode 2023-12-27 09:20:29 +01:00
mark
a5f5a9ff24 Refactor nav partial and shortcode 2023-12-27 09:12:24 +01:00
mark
dd19b8a236 Adjust indentation 2023-12-27 09:11:55 +01:00
mark
0a80f40c07 Refactor navbar 2023-12-27 08:04:29 +01:00
mark
772cc97a8b Refine unsupported args test to consider groups 2023-12-27 07:27:27 +01:00
mark
ce7f1d6c26 Add persona example 2023-12-27 07:26:28 +01:00
mark
a41994fc0f Refactor persona shortcode and partial 2023-12-27 07:26:13 +01:00
mark
6e42a729e7 Adjust content padding on smaller screens 2023-12-27 07:25:35 +01:00
mark
33a634e4fc Refactor release shortcode 2023-12-26 17:45:45 +01:00
mark
fc61c52939 Refactor spinner 2023-12-26 17:11:24 +01:00
mark
5e4ff5b780 Fix spacing 2023-12-26 17:00:16 +01:00
mark
2e5903abed Refactor sub and sup shortcodes 2023-12-26 16:44:48 +01:00
Mark Dumay
62db8f574f Merge pull request #680 from gethinode/validation
Refactor table shortcode
2023-12-26 10:09:02 +01:00
Mark Dumay
d44ee41268 Merge branch 'main' into validation 2023-12-26 09:22:13 +01:00
mark
6baadfef75 Refactor table shortcode 2023-12-26 09:21:45 +01:00
Mark Dumay
fbec6a9b35 Merge pull request #679 from gethinode/validation
Refactor youtube, tooltip, toast, and timeline shortcodes / partials
2023-12-26 09:21:18 +01:00
Mark Dumay
197d9359dd Merge branch 'main' into validation 2023-12-26 09:14:00 +01:00
mark
fa083e0bde Update build stats 2023-12-26 09:12:30 +01:00
mark
1cf427fddd Improve display of positional args 2023-12-26 09:12:20 +01:00
mark
819e9e89dc Refine validation of permitted values 2023-12-26 09:12:01 +01:00
mark
900632c5f5 Refactor timeline shortcode 2023-12-26 09:10:20 +01:00
mark
dc66a4334f Refactor toast partial and shortcode 2023-12-26 07:42:16 +01:00
mark
badbe334df Improve layout 2023-12-26 07:42:00 +01:00
mark
fa334d6e84 Add license info 2023-12-26 07:20:08 +01:00
mark
9580d4e72e Add version partial comments 2023-12-26 07:19:55 +01:00
mark
252257be8b Change indentation 2023-12-26 07:19:41 +01:00
mark
04c253995f Refactor tooltip 2023-12-26 07:19:30 +01:00
mark
8c007fd627 Fix rendering of default values 2023-12-26 07:10:22 +01:00
mark
afcd59e1a4 Refactor youtube shortcode 2023-12-26 06:50:36 +01:00
mark
bba0ecad63 Fix typo 2023-12-26 06:50:21 +01:00
Mark Dumay
c1058ac665 Merge pull request #678 from aefly/french-translation
Update French translation
2023-12-26 06:05:41 +01:00
aefly
b891fcdc4f update fourth-post.md 2023-12-25 19:36:39 +01:00
aefly
3bea9dfc8f Update fourth-post.md with the latest hinode version 2023-12-25 19:32:20 +01:00
aefly
4d99d7dfc4 Update fr.yaml with the latest hinode version 2023-12-25 19:32:10 +01:00
Mark Dumay
373b8eddeb Merge pull request #677 from gethinode/validation
Refactor button
2023-12-25 15:49:29 +01:00
Mark Dumay
d463d1feb3 Merge branch 'main' into validation 2023-12-25 15:40:36 +01:00
mark
48a96a8d79 Refactor button 2023-12-25 15:39:57 +01:00
mark
0e1128aba3 Fix error message 2023-12-25 15:39:41 +01:00
Mark Dumay
c3be4957ba Merge pull request #675 from gethinode/validation
Refactor breadcrumb
2023-12-25 15:38:46 +01:00
Mark Dumay
3618aadf74 Merge branch 'main' into validation 2023-12-25 15:31:07 +01:00
github-actions[bot]
74a8c36c74 Merge pull request #676 from gethinode/dependabot/npm_and_yarn/hugo-bin-0.118.0
Bump hugo-bin from 0.117.1 to 0.118.0
2023-12-25 13:59:13 +00:00
dependabot[bot]
49aa52b36f Bump hugo-bin from 0.117.1 to 0.118.0
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.117.1 to 0.118.0.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.117.1...v0.118.0)

---
updated-dependencies:
- dependency-name: hugo-bin
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-25 13:54:02 +00:00
Mark Dumay
ee95a05b48 Merge branch 'main' into validation 2023-12-25 14:46:27 +01:00
mark
134e544718 Refactor breadcrumb 2023-12-25 14:45:30 +01:00
Mark Dumay
306a767686 Merge pull request #674 from gethinode/validation
Refactor badge and card-group
2023-12-25 14:43:49 +01:00
Mark Dumay
47ca9d303a Merge branch 'main' into validation 2023-12-25 14:31:05 +01:00
mark
6fc68fe540 Refactor badge 2023-12-25 14:10:39 +01:00
mark
9195bd7f4e Remove empty line 2023-12-25 14:10:29 +01:00
mark
4ef503e07f Remove unsupported args 2023-12-25 14:03:07 +01:00
mark
4711139513 Refine cascading args 2023-12-25 14:02:55 +01:00
mark
fc56508b91 Update code comments 2023-12-25 14:02:40 +01:00
mark
232c78364f Refactor card group 2023-12-25 14:02:29 +01:00
mark
d85e16f1fa Support child args 2023-12-25 14:02:05 +01:00
mark
562b386cb5 Add option to filter for args with parent 2023-12-25 12:45:47 +01:00
Mark Dumay
daab751299 Merge pull request #673 from gethinode/validation
Refactor alert and args shortcodes
2023-12-25 09:07:31 +01:00
Mark Dumay
9e82ff8de5 Merge branch 'main' into validation 2023-12-25 08:59:10 +01:00
mark
52b2c23565 Bump package release 2023-12-25 08:58:17 +01:00
mark
617fd688db Refactor args shortcode 2023-12-25 08:47:36 +01:00
mark
2cf7fff3ba Refactor alert 2023-12-25 08:31:27 +01:00
Mark Dumay
a34d3fde1f Merge pull request #672 from gethinode/validation
Refactor abbr and accordion shortcodes
2023-12-25 08:29:09 +01:00
Mark Dumay
be054a723e Merge branch 'main' into validation 2023-12-25 08:03:42 +01:00
mark
fc43f6a52e Refine comments 2023-12-25 08:03:13 +01:00
mark
195d3cb69b Refactor accordion 2023-12-25 08:03:06 +01:00
mark
92c69b6011 Fix empty args 2023-12-25 07:27:08 +01:00
mark
ea78805587 Support bool, int, and float represented as string 2023-12-25 06:53:16 +01:00
mark
76e90ea321 Fix required arguments test 2023-12-25 06:52:07 +01:00
mark
b300758aa5 Update build stats 2023-12-25 05:55:56 +01:00
mark
68c44c55d4 Refactor abbr shortcode 2023-12-25 05:55:47 +01:00
mark
228a89f61d Support unnamed args 2023-12-25 05:55:25 +01:00
mark
2645453de2 Update card comments 2023-12-25 04:57:56 +01:00
mark
5ce069a4c0 Improve handling of module args 2023-12-24 14:59:35 +01:00
Mark Dumay
6661434c35 Merge pull request #671 from gethinode/validation
Improve argument validation and documentation
2023-12-24 14:57:51 +01:00
Mark Dumay
aee6b3a32d Merge branch 'main' into validation 2023-12-24 14:50:16 +01:00
mark
4b0cc260cb Bump package release 2023-12-24 14:48:24 +01:00
mark
7611315941 Remove redundant comments 2023-12-24 14:47:47 +01:00
mark
3b1f71a601 Update build stats 2023-12-24 14:47:20 +01:00
mark
fead3555fc Support release info 2023-12-24 14:47:01 +01:00
mark
cd3f99fc90 Fix aria label 2023-12-24 14:27:21 +01:00
mark
a2e6855117 Refactor required args check 2023-12-24 14:27:04 +01:00
mark
1e4cd3a5da Handle empty args 2023-12-24 14:26:51 +01:00
Mark Dumay
865898ac4f Merge pull request #670 from gethinode/validation
Refactor argument validation and documentation
2023-12-24 12:03:50 +01:00
Mark Dumay
44ace26cde Merge branch 'main' into validation 2023-12-24 11:55:17 +01:00
mark
d0350c7672 Bump package release 2023-12-24 11:54:25 +01:00
mark
943a115ef0 Update build stats 2023-12-24 11:53:19 +01:00
mark
745322b3fe Add args shortcode to render structured arguments 2023-12-24 11:53:10 +01:00
mark
90ea2cb760 Refactor card args validation 2023-12-24 11:52:18 +01:00
Mark Dumay
2d6c3c7d64 Merge pull request #667 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2023-12-22 06:51:30 +01:00
markdumay
4401c49c54 fix: update Hugo module dependencies 2023-12-22 05:46:02 +00:00
github-actions[bot]
fa3bfa7008 Merge pull request #665 from gethinode/dependabot/npm_and_yarn/eslint-plugin-n-16.5.0
Bump eslint-plugin-n from 16.4.0 to 16.5.0
2023-12-20 13:58:37 +00:00
dependabot[bot]
14c2ddc725 Bump eslint-plugin-n from 16.4.0 to 16.5.0
Bumps [eslint-plugin-n](https://github.com/eslint-community/eslint-plugin-n) from 16.4.0 to 16.5.0.
- [Release notes](https://github.com/eslint-community/eslint-plugin-n/releases)
- [Commits](https://github.com/eslint-community/eslint-plugin-n/compare/16.4.0...16.5.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-n
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-20 13:52:36 +00:00
Mark Dumay
1e55dc8f65 Merge pull request #664 from uvham521/feature/chinese-support
Add Chinese translation files
2023-12-19 14:09:32 +01:00
uvham521
78980dde3f Add Chinese translation files 2023-12-19 11:59:48 +00:00
github-actions[bot]
3a770b6f40 Merge pull request #662 from gethinode/dependabot/npm_and_yarn/eslint-8.56.0
Bump eslint from 8.55.0 to 8.56.0
2023-12-18 13:25:07 +00:00
dependabot[bot]
b271adef3f Bump eslint from 8.55.0 to 8.56.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.55.0 to 8.56.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.55.0...v8.56.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-18 13:19:12 +00:00
Mark Dumay
639c9770b8 Merge pull request #661 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2023-12-17 06:34:31 +01:00
markdumay
e6b29666ad fix: update Hugo module dependencies 2023-12-17 03:16:31 +00:00
Mark Dumay
dd052250f6 Merge pull request #660 from gethinode/develop
Add support for absolute paths
2023-12-16 08:12:10 +01:00
mark
1223a22d7e Bump package version 2023-12-16 08:03:31 +01:00
mark
b6f034f8e3 Add support for absolute paths 2023-12-16 08:03:07 +01:00
mark
ca01b67396 Mount data folder 2023-12-16 07:53:12 +01:00
Mark Dumay
eb3a2b0bb1 Merge pull request #659 from gethinode/main
Sync with main
2023-12-16 07:42:47 +01:00
Mark Dumay
41711fb527 Merge pull request #658 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2023-12-16 07:32:09 +01:00
markdumay
6e7a9a8796 fix: update Hugo module dependencies 2023-12-16 06:25:10 +00:00
github-actions[bot]
92838c0572 Merge pull request #657 from gethinode/dependabot/npm_and_yarn/cssnano-6.0.2
Bump cssnano from 6.0.1 to 6.0.2
2023-12-15 13:37:12 +00:00
dependabot[bot]
3f71da19ee Bump cssnano from 6.0.1 to 6.0.2
Bumps [cssnano](https://github.com/cssnano/cssnano) from 6.0.1 to 6.0.2.
- [Release notes](https://github.com/cssnano/cssnano/releases)
- [Commits](https://github.com/cssnano/cssnano/compare/cssnano@6.0.1...cssnano@6.0.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-15 13:30:07 +00:00
github-actions[bot]
43a6dd2b79 Merge pull request #655 from gethinode/dependabot/npm_and_yarn/cssnano-preset-advanced-6.0.2
Bump cssnano-preset-advanced from 6.0.1 to 6.0.2
2023-12-15 13:29:26 +00:00
dependabot[bot]
806fac97db Bump cssnano-preset-advanced from 6.0.1 to 6.0.2
Bumps [cssnano-preset-advanced](https://github.com/cssnano/cssnano) from 6.0.1 to 6.0.2.
- [Release notes](https://github.com/cssnano/cssnano/releases)
- [Commits](https://github.com/cssnano/cssnano/compare/cssnano-preset-advanced@6.0.1...cssnano-preset-advanced@6.0.2)

---
updated-dependencies:
- dependency-name: cssnano-preset-advanced
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-15 13:24:01 +00:00
github-actions[bot]
9fd07827db Merge pull request #656 from gethinode/dependabot/npm_and_yarn/eslint-plugin-import-2.29.1
Bump eslint-plugin-import from 2.29.0 to 2.29.1
2023-12-15 13:23:20 +00:00
dependabot[bot]
28cdcec7ee Bump eslint-plugin-import from 2.29.0 to 2.29.1
Bumps [eslint-plugin-import](https://github.com/import-js/eslint-plugin-import) from 2.29.0 to 2.29.1.
- [Release notes](https://github.com/import-js/eslint-plugin-import/releases)
- [Changelog](https://github.com/import-js/eslint-plugin-import/blob/main/CHANGELOG.md)
- [Commits](https://github.com/import-js/eslint-plugin-import/compare/v2.29.0...v2.29.1)

---
updated-dependencies:
- dependency-name: eslint-plugin-import
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-15 13:18:05 +00:00
github-actions[bot]
cb2e946435 Merge pull request #654 from gethinode/dependabot/npm_and_yarn/eslint-plugin-n-16.4.0
Bump eslint-plugin-n from 16.3.1 to 16.4.0
2023-12-11 13:57:51 +00:00
dependabot[bot]
2e7bb50d43 Bump eslint-plugin-n from 16.3.1 to 16.4.0
Bumps [eslint-plugin-n](https://github.com/eslint-community/eslint-plugin-n) from 16.3.1 to 16.4.0.
- [Release notes](https://github.com/eslint-community/eslint-plugin-n/releases)
- [Commits](https://github.com/eslint-community/eslint-plugin-n/compare/16.3.1...16.4.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-n
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-11 13:52:03 +00:00
github-actions[bot]
3d7875ba18 Merge pull request #653 from gethinode/dependabot/npm_and_yarn/hugo-bin-0.117.1
Bump hugo-bin from 0.117.0 to 0.117.1
2023-12-08 13:20:14 +00:00
dependabot[bot]
29ab88d581 Bump hugo-bin from 0.117.0 to 0.117.1
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.117.0 to 0.117.1.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.117.0...v0.117.1)

---
updated-dependencies:
- dependency-name: hugo-bin
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-08 13:14:49 +00:00
Mark Dumay
d93bbe4fe3 Merge pull request #652 from gethinode/develop
Update Netlify build environment
2023-12-07 06:20:19 +01:00
mark
3a2d062e22 Update netlify env 2023-12-07 06:01:29 +01:00
mark
c3ef897a71 Bump package version 2023-12-07 05:58:21 +01:00
Mark Dumay
73964e6be4 Merge pull request #651 from gethinode/main
Sync with main
2023-12-07 05:50:40 +01:00
Mark Dumay
520c000d3b Merge pull request #648 from gethinode/nested
Fix nesting behavior
2023-12-07 05:42:43 +01:00
Mark Dumay
e3c1db7b88 Merge branch 'main' into nested 2023-12-07 05:27:09 +01:00
github-actions[bot]
9ba3218f61 Merge pull request #650 from gethinode/dependabot/npm_and_yarn/hugo-bin-0.117.0
Bump hugo-bin from 0.116.4 to 0.117.0
2023-12-06 14:03:21 +00:00
dependabot[bot]
a912d65608 Bump hugo-bin from 0.116.4 to 0.117.0
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.116.4 to 0.117.0.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.116.4...v0.117.0)

---
updated-dependencies:
- dependency-name: hugo-bin
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-06 13:57:08 +00:00
github-actions[bot]
ffd6bb9c46 Merge pull request #649 from gethinode/dependabot/npm_and_yarn/postcss-cli-11.0.0
Bump postcss-cli from 10.1.0 to 11.0.0
2023-12-06 13:55:58 +00:00
dependabot[bot]
6a238c3a11 Bump postcss-cli from 10.1.0 to 11.0.0
Bumps [postcss-cli](https://github.com/postcss/postcss-cli) from 10.1.0 to 11.0.0.
- [Release notes](https://github.com/postcss/postcss-cli/releases)
- [Changelog](https://github.com/postcss/postcss-cli/blob/master/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss-cli/compare/10.1.0...11.0.0)

---
updated-dependencies:
- dependency-name: postcss-cli
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-06 13:50:57 +00:00
Mark Dumay
3210d72068 Merge branch 'main' into nested 2023-12-06 11:18:25 +01:00
mark
add57592cd Fix default nested behavior 2023-12-06 06:30:04 +01:00
Mark Dumay
584131c8c4 Merge pull request #647 from florianloewen/fix-clipboard-typos
Fix German translations for clipboard interactions
2023-12-05 06:41:39 +01:00
Florian Loewen
9e8a1b4e3d Update German translations for clipboard interactions 2023-12-05 00:32:16 +01:00
github-actions[bot]
61efc2de16 Merge pull request #646 from gethinode/dependabot/npm_and_yarn/eslint-8.55.0
Bump eslint from 8.54.0 to 8.55.0
2023-12-04 14:05:19 +00:00
dependabot[bot]
ce1f688b38 Bump eslint from 8.54.0 to 8.55.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.54.0 to 8.55.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.54.0...v8.55.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-04 13:58:36 +00:00
mark
088464bf13 Improve nested behavior 2023-11-25 08:28:28 +01:00
Mark Dumay
936ca3ffc2 Merge pull request #643 from gethinode/develop
Fix flexsearch index
2023-11-24 16:24:01 +01:00
mark
4f6320f7cf Bump package release 2023-11-24 16:15:29 +01:00
mark
ccf3169381 Update build stats 2023-11-24 16:15:21 +01:00
Mark Dumay
54d66d2b02 Merge pull request #642 from gethinode/main
Sync with main
2023-11-24 16:12:12 +01:00
Mark Dumay
25aeb94364 Merge pull request #641 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2023-11-24 16:03:58 +01:00
markdumay
5657ef5b40 fix: update Hugo module dependencies 2023-11-24 14:32:59 +00:00
169 changed files with 4360 additions and 2909 deletions

View File

@@ -1,6 +1,6 @@
MIT License
Copyright (c) 2023 Mark Dumay
Copyright (c) 2024 Mark Dumay
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@@ -136,7 +136,6 @@ The `hinode`, `docs`, and `template` codebase is released under the [MIT license
[npm]: https://www.npmjs.com
[observatory]: https://observatory.mozilla.org/analyze/demo.gethinode.com
[pagespeed]: https://pagespeed.web.dev/report?url=https%3A%2F%2Fdemo.gethinode.com%2F
[utterances]: https://utteranc.es
<!-- MARKDOWN MAINTAINED LINKS -->
[contribute]: https://gethinode.com/contribute

BIN
assets/img/creator-1x1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 MiB

View File

@@ -24,7 +24,6 @@
@import "components/carousel.scss";
@import "components/clipboard.scss";
@import "components/command.scss";
@import "components/comments.scss";
@import "components/feature.scss";
@import "components/footer.scss";
@import "components/nav.scss";

View File

@@ -22,7 +22,6 @@
@import "components/carousel.scss";
@import "components/clipboard.scss";
@import "components/command.scss";
@import "components/comments.scss";
@import "components/feature.scss";
@import "components/footer.scss";
@import "components/nav.scss";

View File

@@ -1,20 +0,0 @@
.utterances {
position: relative;
box-sizing: border-box;
width: 100%;
max-width: 760px;
margin-left: auto;
margin-right: auto;
}
.utterances-frame {
color-scheme: light;
position: absolute;
left: 0;
right: 0;
width: 1px;
min-width: 100%;
max-width: 100%;
height: 100%;
border: 0;
}

View File

@@ -1,6 +1,6 @@
# toml-docs-start main
title = "Hinode"
copyright = "Copyright © 2023 Mark Dumay."
copyright = "Copyright © 2024 Mark Dumay."
paginate = 9
enableGitInfo = true
# toml-docs-end main
@@ -89,6 +89,8 @@ home = ["HTML", "RSS", "REDIR"]
keepVarNames = true
precision = 0
version = 2022
[minify.tdewolff.html]
keepWhitespace = true
[module]
[module.hugoVersion]
@@ -104,6 +106,9 @@ home = ["HTML", "RSS", "REDIR"]
[[module.mounts]]
source = "content"
target = "content"
[[module.mounts]]
source = "data"
target = "data"
[[module.mounts]]
source = "i18n"
target = "i18n"
@@ -129,4 +134,6 @@ home = ["HTML", "RSS", "REDIR"]
path = "github.com/gethinode/mod-leaflet"
[[module.imports]]
path = "github.com/gethinode/mod-lottie"
[[module.imports]]
path = "github.com/gethinode/mod-utils"
# toml-docs-end modules

View File

@@ -189,14 +189,5 @@
images = ["logo.png"]
locale = "en_US"
[comments]
enabled = false
repo = "" # Replace with your repository.
#issueTerm = "pathname" # pathname, url, title, og:title
#label = "comment"
# By default, light and dark mode correspond to github-light and github-dark, respectively.
# Optional values: github-light, github-dark, preferred-color-scheme, github-dark-orange, icy-dark, dark-blue, photon-dark.
#theme = ""
[links]
hinode = "https://gethinode.com"

View File

@@ -7,15 +7,14 @@ for = '/**'
X-XSS-Protection = "1; mode=block"
Content-Security-Policy = """\
default-src 'self'; \
script-src 'self' \
https://utteranc.es/client.js https://*.google-analytics.com https://*.googletagmanager.com; \
style-src 'self' https://utteranc.es https://fonts.googleapis.com https://www.youtube.com; \
script-src 'self' https://*.google-analytics.com https://*.googletagmanager.com; \
style-src 'self' https://fonts.googleapis.com https://www.youtube.com; \
object-src 'none'; \
base-uri 'self'; \
connect-src 'self'
https://*.google-analytics.com https://*.analytics.google.com https://*.googletagmanager.com; \
font-src 'self' https://fonts.gstatic.com; \
frame-src 'self' https://utteranc.es https://www.youtube-nocookie.com https://www.youtube.com; \
frame-src 'self' https://www.youtube-nocookie.com https://www.youtube.com; \
img-src 'self' data: https://i.vimeocdn.com https://i.ytimg.com https://*.google-analytics.com https://*.googletagmanager.com https://tile.openstreetmap.org; \
manifest-src 'self'; \
media-src 'self' \

View File

@@ -21,6 +21,7 @@ const purgecss = require('@fullhuman/postcss-purgecss')({
'./assets/scss/components/_syntax-dark.scss',
'./assets/scss/components/_syntax-light.scss',
'./assets/scss/components/_table.scss',
'./assets/scss/components/_video.scss',
'./assets/scss/theme/fonts.scss',
'./assets/scss/theme/theme.scss',
'./_vendor/github.com/gethinode/mod-flexsearch/assets/scss/modules/flexsearch/flexsearch.scss',

35
data/structures/abbr.yml Normal file
View File

@@ -0,0 +1,35 @@
comment: >-
Creates an HTML element that shows the long form of an abbrevitation. The
abbreviation data is centrally stored in a data file. By default, the
shortcode uses `abbr.yaml` with translation support.
The data file is expected to store key-value pairs, where `id` is the
lower-case abbrevation and `long` its long form. The following example
illustrates this using YML:
- id: css
long: `Cascading Style Sheets`
arguments:
key:
type: string
position: 0
optional: false
comment: >-
Case-insensitive key of the abbreviation. In shorthand notation, this is
the first (and only) matched argument. Non-alphanumeric keys must be quoted.
data:
type: string
default: abbr.yaml
optional: true
comment: >-
Filename of the abbrevation input. You can omit the file extension. The
file should reside in the `data` folder. The data supports language
extensions. For example, `abbr.en.yaml` refers to the English translation
of the abbrevation data. The filename `abbr.yaml` is used when no suitable
translation is found.
class:
type: string
optional: true
comment: >-
Class attribute of the abbr element. For example, specify `initialism` for
a slightly smaller font size.

View 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

View 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
View 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
View File

@@ -0,0 +1,27 @@
comment: >-
Generates a markdown table of structured arguments. The argument definitions are
expected to be defined in a data file identified by a provided structure name.
arguments:
structure:
type: string
position: 0
optional: false
comment: >-
Name of the data file that contains argument definitions. Supported data
formats include JSON, TOML, YAML, and XML. You can omit the file
extension. The file should reside in the `data/structures` folder.
group:
type: string
position: 1
optional: true
comment: >-
Name of the group filter. This is typically used when a shortcode and
partial have common arguments. The group filter binds a specific argument
to a particular group. By default, an argument belongs to all groups.
parent:
type: bool
position: 2
optional: true
comment: >-
Flag to filter only arguments that have a parent attribute (either
`cascade` or `merge`).

27
data/structures/badge.yml Normal file
View File

@@ -0,0 +1,27 @@
comment: Use the badge shortcode to enrich headings.
arguments:
title:
type: string
optional: false
comment: Title of the badge.
class:
type: string
optional: true
comment: Class attribute of the badge element.
color:
type: select
optional: true
default: secondary
comment: Theme color of the element.
options:
values:
- primary
- secondary
- success
- danger
- warning
- info
- light
- dark
- white
- black

View 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

View File

@@ -0,0 +1,15 @@
comment: >-
Displays a group of buttons. Add inner <button> elements for each button.
arguments:
label:
type: string
optional: true
comment: Assistive label for the button group.
aria-label:
type: string
optional: true
comment: Alias for label.
body:
type: string
optional: false
comment: Inner <button> elements for each button.

190
data/structures/button.yml Normal file
View File

@@ -0,0 +1,190 @@
comment: >-
Display a button with a hyperlink.
arguments:
title:
type:
- string
- template.HTML
optional: true
comment: Title of the button, required unless icon is set.
class:
type: string
optional: true
comment: Class attribute of the button element, e.g. `p-5`.
color:
type: select
optional: true
default: primary
comment: Theme color of the element.
options:
values:
- primary
- secondary
- success
- danger
- warning
- info
- light
- dark
- white
- black
href:
type:
- string
- template.URL
optional: true
comment: >-
Address for the button or hyperlink. Automatically assigned when using
collapse.
relref:
type: string
optional: true
comment: >-
Name of the page to link to. Replaces `href` with a relative link if set.
group: shortcode
id:
type: string
optional: true
comment: Identifier of the button, to be used in the DOM.
state:
type: select
optional: true
default: enabled
comment: State of the button.
options:
values:
- enabled
- disabled
- active
- inactive
size:
type: select
optional: true
default: md
comment: Size of the button.
options:
values:
- sm
- md
- lg
outline:
type: bool
optional: true
default: false
comment: Flag indicating the button should be outlined.
badge:
type: string
optional: true
comment: Positioned badge to display on top of the button.
label:
type: string
optional: true
comment: >-
Assistive label for the button or badge. The label is applied
to the badge instead of the button when a badge has been defined.
The default value of the button's assistive label is its title.
aria-label:
type: string
optional: true
comment: Alias for label.
group: shortcode
tooltip:
type: string
optional: true
comment: >-
Text to display in a tooltip. Cannot be used together with
collapse. Ignored for active/inactive buttons.
collapse:
type: string
optional: true
comment: >-
Panel to collapse. Cannot be used together with tooltip. Ignored for
active/inactive buttons.
type:
type: select
optional: true
default: button
comment: Type of the element.
options:
values:
- link
- button
placement:
type: select
optional: true
default: top
comment: Position of the tooltip.
options:
values:
- top
- bottom
- left
- right
icon:
type: string
optional: true
comment: >-
Font Awesome icon class attribute, required unless title is set. An
example value is `fas sort`.
order:
type: select
optional: true
default: last
comment: Order of the icon
options:
values:
- first
- last
justify:
type: select
optional: true
default: center
comment: Justification of the button title and icon.
options:
values:
- start
- end
- center
- between
- around
- evenly
toast:
type: string
optional: true
comment: Identifier (ID) of the toast to display when the button is clicked.
clipboard:
type:
- string
- template.URL
optional: true
comment: Text to be copied to the clipboard when the button is clicked.
cue:
type: bool
optional: true
comment: >-
Flag to indicate if an external link should show a visual cue, defaults
to the setting `main.externalLinks.cue` in the site's parameters.
tab:
type: bool
optional: true
comment: >-
Flag to indicate if an external link should open in a new tab, defaults
to setting `main.externalLinks.tab` in the site's parameters.
attributes:
type: map[string]interface {}
optional: true
comment: >-
Dictionary of key-value pairs added as custom attributes to the button
element ('<a>').
group: partial
spacing:
type: bool
optional: true
default: true
comment: >-
Flag to add spacing to the inline button.
wrapper:
type: string
optional: true
comment: Element class of the button wrapper.
group: shortcode

View File

@@ -0,0 +1,93 @@
comment: >-
Displays a grid of Bootstrap cards with 1 to 5 columns. The cards are rendered
using a provided list of pages. Cards on the same row are aligned to each
other. The grid renders pages up to a provided maximum amount. The remaining
items are accessible via either a paginator or button to a list page (default
behavior). Be aware a page can only contain one paginator at a time.
arguments:
page:
type:
- '*hugolib.pageState'
- '*hugolib.pageForShortcode'
optional: true
comment: Context of the current page.
group: partial
title:
type: string
optional: true
comment: Title of the card group.
gutter:
type: int
optional: true
default: 4
comment: Gutter between columns in a group.
options:
min: 0
max: 5
release: v0.19.0
list:
type:
- page.Pages
- resource.Resources
optional: true
comment: Array of pages to be rendered as cards.
group: partial
cards:
type: string
optional: true
comment: String of rendered cards.
group: partial
max:
type: int
optional: true
comment: Maximum number of cards to display.
group: partial
cols:
type: select
optional: true
default: "3"
comment: Number of grid columns.
options:
values:
- "1"
- "2"
- "3"
- "4"
- "5"
- "auto"
release: v0.19.0
paginate:
type: bool
optional: true
comment: >-
Flag indicating if pagination should be added to the card group, if the
list exceeds the maximum number of cards to display.
group: partial
href:
type: string
optional: true
comment: >-
Address for the button or hyperlink. If set, a button is added if the
list exceeds the maximum number of cards to display.
group: partial
hrefTitle:
type: string
optional: true
comment: >-
Title of the button or hyperlink as companion to href.
group: partial
separator:
type: bool
optional: true
comment: >-
Flag to indicate a horizontal line should be added between items on small screens.
wrapper:
type: string
optional: true
comment: >-
Class attributes of the wrapper element, e.g. `p-4 px-xxl-0`.
responsive:
type: bool
optional: true
comment: >-
Flag indicating if the number of columns should be responsive, defaults to `true`.

177
data/structures/card.yml Normal file
View File

@@ -0,0 +1,177 @@
comment: >-
Displays a Bootstrap card. Either specify a valid path, or set the arguments
title, href, header, description, and thumbnail individually. The latter
arguments override any page attributes.
arguments:
title:
type: string
optional: true
comment: >-
Title of the card, replaces the title of the referenced page (if any).
path:
type: path
optional: true
comment: >-
Path of the page that the card reference to. If omitted, specify the
title, icon, thumbnail, and description (inner content) as needed.
href:
type: url
optional: true
comment: >-
Address for the button or hyperlink.
group: partial
class:
type: string
optional: true
parent: merge
comment: >-
Class attribute of the card element, e.g. “w-50”.
color:
type: select
optional: true
parent: cascade
comment: >-
Theme color of the card. By default, no color is specified.
options:
values:
- primary
- secondary
- success
- danger
- warning
- info
- light
- dark
- white
- black
- body
- body-tertiary
padding:
type: select
optional: true
default: auto
parent: cascade
comment: >-
Padding of the content.
options:
values:
- "0"
- "1"
- "2"
- "3"
- "4"
- "5"
- "auto"
gutter:
type: select
optional: true
default: "0"
parent: cascade
comment: >-
Gutter between columns in a group.
options:
values:
- "0"
- "1"
- "2"
- "3"
- "4"
- "5"
header:
type: select
optional: true
default: full
parent: cascade
comment: >-
Header components of the card, displayed in small caps.
options:
values:
- full
- publication
- tags
- none
footer:
type: select
optional: true
default: none
parent: cascade
comment: >-
Footer components of the card, displayed in small caps.
options:
values:
- full
- publication
- tags
- none
description:
type:
- string
- template.HTML
optional: true
comment: >-
Description of the card.
group: partial
loading:
type: select
optional: true
parent: cascade
default: eager
comment: >-
Loading behavior of the image. The loading of lazily loaded images is
deferred until the image is within scrolling range of the viewport. This
should reduce the initial loading time of the website. It is recommended
to lazily load only those images that are below the page fold.
options:
values:
- lazy
- eager
group: partial
thumbnail:
type: path
optional: true
comment: >-
Thumbnail image url, displayed on top or the left of the card.
ratio:
type: select
optional: true
parent: cascade
comment: >-
Ratio of the thumbnail image, defaults to `16x9` (stacked orientation)
or `1x1` (horizontal orientation).
options:
values:
- 1x1
- 3x2
- 4x3
- 16x9
- 21x9
group: partial
alt:
type: string
optional: true
release: v0.19.0
comment: >-
Alternate text for the thumbnail, uses `title` by default.
icon:
type: string
optional: true
comment: >-
Font Awesome icon, displayed on top or the left of the card.
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

View File

@@ -0,0 +1,59 @@
comment: Renders a carousel item with a responsive image.
arguments:
page:
type:
- '*hugolib.pageState'
- '*hugolib.pageForShortcode'
optional: false
comment: Context of the current page.
group: partial
src:
type: string
optional: false
comment: Path or url of the image, e.g. `img/example.jpg`.
ratio:
type: string
optional: true
comment: >-
Ratio of the image. If set, the image is resized and cropped to match the
ratio. Else the original aspect ratio of the image is kept.
options:
values:
- 1x1
- 3x2
- 4x3
- 16x9
- 21x9
group: partial
portrait:
type: bool
optional: true
default: false
comment: >-
Flag to adjust the ratio from landscape to portrait. The image itself
is not rotated, only the crop area is adjusted. Not applicable to vector
graphics.
group: partial
loading:
type: select
default: eager
optional: true
comment: >-
Loading behavior of the image. The loading of lazily loaded images is
deferred until the image is within scrolling range of the viewport. This
should reduce the initial loading time of the website. It is recommended
to lazily load only those images that are below the pagefold.
options:
values:
- eager
- lazy
caption:
type: string
optional: true
comment: Carousel slide caption.
active:
type: bool
optional: true
comment: >-
Sets the current carousel item as active (only one item at a time). By
default, the first slide is made active.

View File

@@ -0,0 +1,39 @@
comment: >-
Displays a carousel of several responsive images (see the image shortcode for
more details). Add inner `img` elements to define individual image slides.
arguments:
id:
type: string
optional: true
comment: >-
ID of the carousel, defaults to `carousel-n` with a sequential number `n`.
ratio:
type: select
optional: true
comment: >-
Ratio of the images. If set, the images are resized and cropped to match the
ratio. Else the original aspect ratio of the image is kept.
options:
values:
- 1x1
- 3x2
- 4x3
- 16x9
- 21x9
portrait:
type: bool
optional: true
default: false
comment: >-
Flag to adjust the ratio from landscape to portrait. The images themselves
are not rotated, only the crop area is adjusted. Not applicable to vector
graphics.
release: v0.18.3
class:
type: string
optional: true
comment: Class attribute of the carousel element, e.g. `w-75`.
body:
type: string
optional: false
comment: Inner `img` elements that define the individual image slides.

View 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.

View File

@@ -0,0 +1,40 @@
comment: >-
Generates terminal output for either `bash`, `powershell`, or `sql` shell
languages.
arguments:
user:
type: string
optional: true
comment: User to add to the prompt, e.g. `user`.
host:
type: string
optional: true
comment: Host to add to the prompt, e.g. `localhost`.
prompt:
type: string
optional: true
comment: Prompt override, e.g. `PS C:\Users\User>`.
shell:
type: select
optional: true
default: bash
comment: Type of shell.
options:
values:
- bash
- powershell
- sql
class:
type: string
optional: true
comment: Class attribute of the command element.
body:
type: string
optional: false
comment: >-
The shell commands and their output. Start a line with `(out)` to specify
an output line. Use the following line continuation characters for each
supported language:
- bash: backslash symbol
- PowerShell: backtick symbol
- sql: `(con)` line suffix

44
data/structures/docs.yml Normal file
View File

@@ -0,0 +1,44 @@
comment: >-
Capture a code snippet from a `toml` or `scss` input file. The shortcode scans for named markers in a local file:
- For `.toml` files, use `# toml-docs-start` and `# toml-docs-end` followed by the snippet name
- For `.scss` files, use `// scss-docs-start` and `// scss-docs-end` followed by the snippet name
The snippet between the two markers is then rendered using syntax highlighting.
arguments:
name:
type: string
optional: false
comment: >-
Name of the code snippet, used to identify the relevant section of the
input file.
file:
type: string
optional: false
comment: >-
Path of the input file. The path is relative to the `basePath` defined in
the `docs` section of the site's parameters. If the file starts with `./`,
the path of the repository is used as base path instead.
show:
type: bool
optional: true
default: true
comment: >-
If unset, shows the panel with the code snippet in collapsed state. By
default, the panel is expanded.
full:
type: bool
optional: true
default: true
comment: >-
If unset, shows the filename only. By default, the entire path (relative
to the base path) is shown.
id:
type: string
optional: true
comment: >-
ID of the collapse panel holding the code snippet, defaults to
`docs-collapse-n` with a sequential number `n` starting at `1`.
class:
type: string
optional: true
comment: Class attribute of the tab control that wraps the docs element.

View File

@@ -0,0 +1,33 @@
comment: >-
Display a code example and render a preview of the same input. The shortcode
accepts the languages supported by Hugo's highlight function.
arguments:
id:
type: string
optional: true
comment: Identifier of the elements container.
lang:
type: string
optional: true
default: markdown
comment: >-
Language used to display the code. Use `hugo` to process Hugo (escaped)
shortcodes.
show_markup:
type: bool
optional: true
default: true
comment: Indicates if the markup should be output in the HTML.
show_preview:
type: bool
optional: true
default: true
comment: Indicates if the preview should be output in the HTML.
class:
type: string
optional: true
comment: Class attributes of the element's container.
body:
type: string
optional: false
comment: The example input.

40
data/structures/file.yml Normal file
View File

@@ -0,0 +1,40 @@
comment: >-
Print the full content of any given file supported by the Chroma syntax
highlighter.
arguments:
path:
type: string
optional: false
comment: >-
Path of the input file. The path is relative to the `basePath` defined in
the `docs` section of the site's parameters. If the file starts with `./`,
the path of the repository is used as base path instead.
lang:
type: string
optional: true
comment: >-
Language to be used by the syntax highlighter. If not set, the
language is derived from the file extension.
show:
type: bool
optional: true
comment: >-
If unset, shows the panel with the code in collapsed state. By default,
the panel is expanded.
full:
type: bool
optional: true
default: true
comment: >-
If unset, shows the filename only. By default, the entire path (relative
to the base path) is shown.
id:
type: string
optional: true
comment: >-
Identifier of the collapse panel, defaults to `file-collapse-n` with a
sequential number `n` starting at 1.
class:
type: string
optional: true
comment: Class attribute of the tab control that wraps the file element.

117
data/structures/image.yml Normal file
View File

@@ -0,0 +1,117 @@
comment: >-
Render a local or remote image with responsive image sizing. Images are
resized using default media breakpoints and are converted to webp format. The
image is processed using the quality setting specified in the [imaging]
section of the main config file (defaults to 75). A fallback image is provided
for older browsers. The image is wrapped in a figure if a caption is provided,
else the image is wrapped in a div with a ratio constraint.
If the url starts with `http`, the image is retrieved from an external
location. Else, the url is matched with a page resource and site asset (in
that order). The path of a remote image is rewritten to ensure processed files
are stored in the final '/img' folder.
The partial supports the following bitmap image formats: `png`, `jpeg`, `gif`,
`tiff`, `bmp`, and `webp`. Vector graphics of type `svg` are supported too,
although these images do no support additional processing. This means the
arguments `ratio` and `portrait` have no effect for vector images. Vector
graphics support an optional anchor `#` in their url to denote a symbol
reference.
arguments:
url:
type: string
optional: true
comment: >-
Path or url of the image, e.g. `img/example.jpg`. Images with multiple
color modes are expected to have a basename that ends with either `-dark`
or `-light`.
src:
type: string
optional: true
position: 0
comment: Alias for url.
group: shortcode
page:
type:
- '*hugolib.pageState'
- '*hugolib.pageForShortcode'
optional: true
comment: Page context, used to match page resources.
group: partial
mode:
type: bool
default: false
optional: true
comment: >-
Flag indicating if the image should support color modes. If set, the
shortcode searches for images that having a matching color-mode suffix
such as `-light` or `-dark`.
ratio:
type: select
optional: true
comment: >-
Ratio of the image. If set, the image is resized and cropped to match the
ratio. Else the original aspect ratio of the image is kept. Not applicable
to vector graphics.
options:
values:
- 1x1
- 3x2
- 4x3
- 16x9
- 21x9
portrait:
type: bool
optional: true
default: false
comment: >-
Flag to adjust the ratio from landscape to portrait. The image itself is
not rotated, only the crop area is adjusted. Not applicable to vector
graphics.
release: v0.18.3
loading:
type: select
default: eager
optional: true
comment: >-
Loading behavior of the image. The loading of lazily loaded images is
deferred until the image is within scrolling range of the viewport. This
should reduce the initial loading time of the website. It is recommended
to lazily load only those images that are below the pagefold.
options:
values:
- eager
- lazy
release: v0.21.0
priority:
type: select
default: auto
optional: true
comment: >-
Fetch priority of the image. The priority provides a hint to the browser
on how it should prioritize the fetching of the image relative to other
images. The implementation is experimental and currently only supported by
Chrome, Edge, and Opera.
options:
values:
- high
- low
- auto
group: partial
title:
type: string
optional: true
comment: Alternate text of the image.
caption:
type: string
optional: true
comment: Figure caption.
wrapper:
type: string
optional: true
comment: Class attributes of the wrapper element, e.g. `mx-auto`.
release: v0.18.3
class:
type: string
optional: true
comment: Class attribute of the inner img element, e.g. `rounded`.

30
data/structures/kbd.yml Normal file
View 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
View File

@@ -0,0 +1,74 @@
comment: >-
Generates a link for a given named link or url. The shortcode supports a
single unnamed parameter, or various named parameters. The unnamed parameter
is recognized as a url if it starts with `http`, else it is treated as either
a named link or internal reference (in that order). Any inner text is rendered
as the link title, otherwise it uses the host name (for external links), link
title (for internal links), or anchor name (for any local references
containing a `#`).
arguments:
page:
type:
- '*hugolib.pageState'
- '*hugolib.pageForShortcode'
optional: false
group: partial
comment: Context of the current page.
destination:
type: string
optional: false
group: partial
comment: >-
Target destination.
href:
type: string
position: 0
optional: true
comment: >-
Reference to either an external link (if it starts with `http`), a named
link (if it can be found in `params.links`), or internal reference.
Both external and internal references may include an anchor `#`.
name:
type: string
optional: true
comment: Alias of href.
url:
type: string
optional: true
comment: Alias of href.
cue:
type: bool
optional: true
comment: >-
Flag to indicate if an external link should show a visual cue, defaults to
setting `main.externalLinks.cue` in the site's parameters.
tab:
type: bool
optional: true
comment: >-
Flag to indicate if an external link should open in a new tab, defaults to
setting `main.externalLinks.tab` in the site's parameters.
case:
type: bool
optional: true
default: true
comment: >-
Flag to indicate if the retrieved title (e.g. no inner text is provided)
of an internal link should use its original case. If false, the title is
set to lower case.
class:
type: string
optional: true
comment: Class attribute of the anchor element.
text:
type:
- string
- template.HTML
optional: true
group: partial
comment: Link title.
body:
type: string
optional: true
group: shortcode
comment: Link title.

55
data/structures/list.yml Normal file
View File

@@ -0,0 +1,55 @@
comment: >-
Displays a list of items with a thumbnail alternating between left and right
alignment.
arguments:
page:
type:
- '*hugolib.pageState'
- '*hugolib.pageForShortcode'
optional: false
comment: Required context of the current page.
group: partial
list:
type:
- 'page.Pages'
- 'resource.Resources'
optional: false
comment: Required array of pages.
group: partial
title:
type: string
optional: true
comment: Optional title of the card group.
loading:
type: select
default: eager
optional: true
comment: >-
Loading behavior of the image. The loading of lazily loaded images is
deferred until the image is within scrolling range of the viewport. This
should reduce the initial loading time of the website. It is recommended
to lazily load only those images that are below the pagefold.
options:
values:
- eager
- lazy
class:
type: string
optional: true
comment: Class attribute of the tab element, e.g. “w-50”.
color:
type: select
optional: true
comment: >-
Theme color of the element.
options:
values:
- primary
- secondary
- success
- danger
- warning
- info
- light
- dark
- body

27
data/structures/mark.yml Normal file
View File

@@ -0,0 +1,27 @@
comment: Highlights text by applying a background color.
arguments:
class:
type: string
optional: true
comment: Class attribute of the highlight element.
color:
type: select
optional: true
comment: >-
Theme color of the highlight. By default, the highlight uses the color of
the HTML mark function (usually yellow).
options:
values:
- primary
- secondary
- success
- danger
- warning
- info
- light
- dark
- white
- black
body:
optional: false
comment: Text to be marked.

View File

@@ -0,0 +1,56 @@
comment: >-
Defines an individual item.
arguments:
id:
type: string
optional: true
comment: Identification of the item.
group: partial
parentID:
type: string
optional: false
comment: Identification of the parent (e.g. nav control).
group: partial
header:
type: string
optional: false
comment: Header of the item.
show:
type: bool
optional: true
comment: >-
Flag to indicate if the item should be shown. Only one can be shown at a
time.
disabled:
type: bool
optional: true
comment: Flag to indicate the item should be in a disabled state.
fade:
type: bool
optional: true
comment: Flag to make the tab pane fade in.
parent: cascade
class:
type: string
optional: true
comment: Class attribute of the item.
body:
type:
- string
- template.HTML
optional: true
comment: The body content of the item, supports Markdown and HTML (if enabled).
group: partial
item_type:
type: select
optional: true
comment: Type of the item to render.
options:
values:
- accordion
- tab-pane
group: partial
body:
optional: false
comment: Content of the item.
group: shortcode

82
data/structures/nav.yml Normal file
View 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

View File

@@ -0,0 +1,34 @@
comment: >-
Defines an individual item of the navigation bar.
arguments:
page:
type:
- '*hugolib.pageState'
- '*hugolib.pageForShortcode'
optional: false
comment: Context of the current page.
group: partial
menu:
type: '*navigation.MenuEntry'
optional: false
comment: Menu data to use for the navbar item.
parent:
type: '*navigation.MenuEntry'
optional: true
comment: Parent of the current navbar item.
class:
type: string
optional: true
comment: Class attribute of the item.
cue:
type: bool
optional: true
comment: >-
Flag to indicate if an external link should show a visual cue, defaults
to the setting `main.externalLinks.cue` in the site's parameters.
tab:
type: bool
optional: true
comment: >-
Flag to indicate if an external link should open in a new tab, defaults
to setting `main.externalLinks.tab` in the site's parameters.

108
data/structures/navbar.yml Normal file
View File

@@ -0,0 +1,108 @@
comment: >-
Displays a navigation header with a toggler. The menu items are derived from
the site's configuration. Nested items are supported at one-level depth. The
navigation bar includes a search area and a language switcher if applicable.
arguments:
page:
type:
- '*hugolib.pageState'
- '*hugolib.pageForShortcode'
optional: false
comment: Context of the current page.
group: partial
path:
type: path
optional: false
comment: Path of the active page.
group: shortcode
title:
type: string
optional: true
comment: >-
Brand title, displayed when the logo is not set. Defaults to the site's
title.
class:
type: string
optional: true
comment: Class attribute of the navbar container.
color:
type: select
optional: true
comment: >-
Background theme color of the navbar. Set the color to `body` or
`body-tertiary` for the navbar to respond to color mode changes (e.g.
switching between dark and light). The navigation bar is transparent when
no color is set, but is set to the body color when scrolling to enhance
the contrast.
options:
values:
- primary
- secondary
- success
- danger
- warning
- info
- light
- dark
- white
- black
- body
- body-tertiary
id:
type: string
optional: true
comment: >-
Identification of the navbar, defaults to `navbar-0`. The id is used by
several child elements, including a color mode switcher, version switcher,
and collapse panel.
menus:
type: string
optional: true
default: main
comment: Name of the menu configuration.
size:
type: select
optional: true
comment: Breakpoint of the navbar toggler.
default: md
options:
values:
- xs
- sm
- md
- lg
- xl
style:
type: select
optional: true
default: light
comment: Style of the navbar.
options:
values:
- light
- dark
group: partial
mode:
type: bool
optional: true
default: true
comment: >-
Flag to include a color mode switcher, defaults to `true` when dark mode
is enabled.
search:
type: bool
optional: true
default: true
comment: Flag to include a search input.
fixed:
type: bool
optional: true
default: false
comment: Flag to indicate the navbar should stick to the top.
group: partial
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.

View File

@@ -0,0 +1,14 @@
comment: >-
Adds a dismissible alert message to the top of the page, above the main menu.
The alert uses the following scratch variables:
- pageAlertMsg
- pageAlertURL
- version
arguments:
page:
type:
- '*hugolib.pageState'
- '*hugolib.pageForShortcode'
optional: false
comment: Context of the current page.
group: partial

View File

@@ -0,0 +1,21 @@
comment: >-
Adds a pagination element to a page. This allows to split long lists across
multiple pages to ease navigation. Set 'paginate' in the site configuration to
define the maximum amount of items to display on a list page.
arguments:
page:
type:
- '*hugolib.pageState'
- '*hugolib.pageForShortcode'
optional: false
comment: Context of the current page.
group: partial
format:
type: select
optional: true
default: default
comment:
options:
values:
- default
- terse

View 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

View File

@@ -0,0 +1,40 @@
comment: >-
Displays a release button that links to a specific release. Use the state to
indicate if it is a new or deprecated feature.
arguments:
version:
type: string
optional: false
comment: Version string, expects semver notation with a `v` prefix.
state:
type: select
optional: true
default: new
comment: State of the feature.
options:
values:
- new
- deprecated
short:
type: bool
optional: true
comment: Flag to indicate the release button should use short notation.
size:
type: select
optional: true
default: md
comment: Size of the button.
options:
values:
- sm
- md
- lg
class:
type: string
optional: true
comment: Class attribute of the button element.
inline:
type: bool
optional: true
default: false
comment: Flag to render the release button inline.

View File

@@ -0,0 +1,16 @@
comment: Renders the header of a page section.
arguments:
title:
type: string
optional: true
comment: Title of the section.
description:
type: string
optional: true
comment: Section description.
content:
type:
- string
- template.HTML
optional: true
comment: Section content.

View File

@@ -0,0 +1,9 @@
comment: Renders the section menu of a single page.
arguments:
page:
type:
- '*hugolib.pageState'
- '*hugolib.pageForShortcode'
optional: false
comment: Context of the current page.
group: partial

View File

@@ -0,0 +1,9 @@
comment: Renders the social sharing buttons for a single page.
arguments:
page:
type:
- '*hugolib.pageState'
- '*hugolib.pageForShortcode'
optional: false
comment: Context of the current page.
group: partial

View File

@@ -0,0 +1,24 @@
comment: >-
Renders the sidebar navigation of a single page. It is intended to be used as
companion to the main navigation and is typically used in content-heavy
sections, such as documentation pages. On smaller screens, the sidebar is
replaced with an offcanvas element. In this case, the main navigation receives
an additional toggler on the left of the screen.
arguments:
page:
type:
- '*hugolib.pageState'
- '*hugolib.pageForShortcode'
optional: false
comment: Context of the current page.
group: partial
menu:
type: '[]interface {}'
optional: true
comment: Path of the sidebar navigation menu.
version:
type: string
optional: true
comment: >-
Version of the sidebar navigation, used to define the base URL of
generated links, together with the page's section.

View 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
View File

@@ -0,0 +1,8 @@
comment: >-
Displays text in subscript.
arguments:
text:
type: string
optional: false
position: 0
comment: Text to display in subscript. You can omit the argument name.

8
data/structures/sup.yml Normal file
View File

@@ -0,0 +1,8 @@
comment: >-
Displays text in superscript.
arguments:
text:
type: string
optional: false
position: 0
comment: Text to display in superscript. You can omit the argument name.

30
data/structures/table.yml Normal file
View File

@@ -0,0 +1,30 @@
comment: >-
Makes a markdown table responsive. Responsive tables scroll horizontally to
improve their layout on smaller screens.
arguments:
breakpoint:
type: select
optional: true
position: 0
comment: >-
By default, the table shortcode is responsive for all viewports. When a
breakpoint is set, the table will behave normally and not scroll
horizontally from the provided breakpoint and up. Use `none` to disable
this behavior. You can specify multiple breakpoints when using positional
arguments.
options:
values:
- none
- sm
- md
- lg
- xl
- xxl
class:
type: string
optional: true
comment: Class attribute of the table element, e.g. “table-striped-columns w-auto”.
body:
type: string
optional: false
comment: Table input in markdown format.

View File

@@ -0,0 +1,31 @@
comment: >-
Shows items ordered on a vertical timelime.
arguments:
data:
type: string
optional: false
comment: >-
Filename of the timeline input data. You can omit the file extension. The
file should reside in the data folder.
background:
type: select
optional: true
comment: >-
Border color of the connector dots, defaults to the body background color.
If set, uses a subtle background color that is adaptive to the current
color mode.
options:
values:
- primary
- secondary
- success
- danger
- warning
- info
- light
- dark
class:
type: string
optional: true
comment: >-
Class attribute of the timeline's container.

29
data/structures/toast.yml Normal file
View File

@@ -0,0 +1,29 @@
comment: >-
Prepares a toast message. Use a trigger to display the message.
arguments:
id:
type: string
optional: true
comment: >-
Unique identifier of the toast message, defaults to `toast-message-n`
with sequence n.
header:
type: string
optional: true
comment: Header of the toast message. Uses the site title by default.
class:
type: string
optional: true
comment: Class attribute of the toast element.
message:
type:
- string
- template.HTML
optional: false
comment: Toast message.
group: partial
body:
type: string
optional: false
comment: Toast mesage.
group: shortcode

9
data/structures/toc.yml Normal file
View File

@@ -0,0 +1,9 @@
comment: Renders the table of contents of a single page.
arguments:
page:
type:
- '*hugolib.pageState'
- '*hugolib.pageForShortcode'
optional: false
comment: Context of the current page.
group: partial

View 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.

View 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.

View File

@@ -0,0 +1,26 @@
comment: >-
Embeds a responsive video player for YouTube videos. Only the ID of the video
is required. In privacy-enhanced mode, YouTube will not store information
about visitors on your website unless the user plays the embedded video.
arguments:
title:
type: string
optional: true
comment: >-
Title of the video.
class:
type: string
optional: true
position: 1
comment: >-
Class attribute of the video wrapper element.
id:
type: string
optional: false
position: 0
comment: Identifier of the video to be embedded.
autoplay:
type: bool
optional: true
default: false
comment: Flag indicating the video should start playing immediately when loaded.

View File

@@ -1,6 +1,6 @@
resourcedir = '../resources/'
title = "Hinode"
copyright = "Copyright © 2023 Mark Dumay."
copyright = "Copyright © 2024 Mark Dumay."
paginate = 9
enableGitInfo = true
@@ -79,6 +79,8 @@ home = ["HTML", "RSS", "REDIR"]
keepVarNames = true
precision = 0
version = 2022
[minify.tdewolff.html]
keepWhitespace = true
[module]
replacements = 'github.com/gethinode/hinode -> ../..'

View File

@@ -181,15 +181,6 @@
images = ["logo.png"]
locale = "en_US"
[comments]
enabled = false
repo = "" # Replace with your repository.
#issueTerm = "pathname" # pathname, url, title, og:title
#label = "comment"
# By default, light and dark mode correspond to github-light and github-dark, respectively.
# Optional values: github-light, github-dark, preferred-color-scheme, github-dark-orange, icy-dark, dark-blue, photon-dark.
#theme = ""
[links]
bs_badge_heading = "https://getbootstrap.com/docs/5.3/components/badge/#headings"
hinode_docs = "https://gethinode.com"
@@ -197,5 +188,4 @@
mozilla_image = "https://developer.mozilla.org/en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images"
observatory = "https://observatory.mozilla.org/analyze/demo.gethinode.com"
pagespeed = "https://pagespeed.web.dev/report?url=https%3A%2F%2Fdemo.gethinode.com%2F"
utterances = "https://utteranc.es"
hinode = "https://gethinode.com"

View File

@@ -7,15 +7,14 @@ for = '/**'
X-XSS-Protection = "1; mode=block"
Content-Security-Policy = """\
default-src 'self'; \
script-src 'self' \
https://utteranc.es/client.js https://*.google-analytics.com https://*.googletagmanager.com; \
style-src 'self' https://utteranc.es https://fonts.googleapis.com https://www.youtube.com; \
script-src 'self' https://*.google-analytics.com https://*.googletagmanager.com; \
style-src 'self' https://fonts.googleapis.com https://www.youtube.com; \
object-src 'none'; \
base-uri 'self'; \
connect-src 'self'
https://*.google-analytics.com https://*.analytics.google.com https://*.googletagmanager.com; \
font-src 'self' https://fonts.gstatic.com; \
frame-src 'self' https://utteranc.es https://www.youtube-nocookie.com https://www.youtube.com; \
frame-src 'self' https://www.youtube-nocookie.com https://www.youtube.com; \
img-src 'self' data: https://i.vimeocdn.com https://i.ytimg.com https://*.google-analytics.com https://*.googletagmanager.com https://tile.openstreetmap.org; \
manifest-src 'self'; \
media-src 'self' \

View File

@@ -21,6 +21,7 @@ const purgecss = require('@fullhuman/postcss-purgecss')({
'./assets/scss/components/_syntax-dark.scss',
'./assets/scss/components/_syntax-light.scss',
'./assets/scss/components/_table.scss',
'./assets/scss/components/_video.scss',
'./assets/scss/theme/fonts.scss',
'./assets/scss/theme/theme.scss',
'./_vendor/github.com/gethinode/mod-flexsearch/assets/scss/modules/flexsearch/flexsearch.scss',

View File

@@ -26,7 +26,6 @@ Additional features include:
* Support for multiple languages
* Reusable Bootstrap components through configurable shortcodes and partials
* Versioned documentation, including sidebar navigation and version switcher
* Embedded comments through light-weight integration with GitHub via [utteranc.es]({{< param "links.utterances" >}})
* Reponsive image handling for multiple screen sizes and resolutions
* Optimized search results, scoring 100 points for SEO on [PageSpeed Insights]({{< param "links.pagespeed" >}})
* Secure by default, scoring A+ on [Mozilla Observatory test]({{< param "links.observatory" >}})

View File

@@ -344,6 +344,24 @@ As an example, the following shortcode displays a light navigation header.
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Persona
As an example, the following shortcode displays a persona card with a primary color.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* persona thumbnail="/img/creator-1x1.jpg" title="Creators" color="primary" */>}}
As a content creator you value your independence. You like to take control of your
online and offline presence. You want to focus on growing your audience, without
limitations.
Hinode gives you the tools to publish your blog in the way that you want. You have
full ownership and control of your content. That is why content creators choose
Hinode.
{{</* /persona */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Release
As an example, the following shortcode displays a default release button.

View File

@@ -27,7 +27,6 @@ Les fonctionnalités supplémentaires incluent:
- Prise en charge de plusieurs langues
- Composants bootstrap réutilisables à travers des codes et partiels configurables
- Documentation versionnée, incluant une navigation latérale et un sélecteur de version.
- Commentaires intégrés via une intégration légère avec GitHub via [utteranc.es]({{< param "links.utterances" >}})
- Gestion d'images adaptatives pour plusieurs tailles d'écran et résolutions.
- Résultats de recherche optimisés, obtenant un score de 100 points pour le référencement (SEO) sur [PageSpeed Insights]({{< param "links.pagespeed" >}}).
- Sécurisé par défaut, obtenant un score A+ au test [Mozilla Observatory]({{< param "links.observatory" >}})

View File

@@ -1,10 +1,11 @@
---
author: Mark Dumay
title: Quatrième article
title: Quatrième article (exclu de la recherche)
slug: quatrieme-article
date: 2023-01-01
description: Ceci est mon quatrième article.
description: Ceci est mon quatrième article de blog. Il est exclu de l'index de recherche.
tags: ["blog"]
searchExclude: true
thumbnail:
url: img/flowers.jpg
author: Arvee Marie

View File

@@ -28,7 +28,6 @@ Overige functies:
* Ondersteuning voor meerdere talen
* Herbruikbare Bootstrap componenten via shortcodes en partials
* Versiebeheer van documentatiepagina's, inclusief secundaire navigatie en selectie van versies
* Integreren van commentaar via [utteranc.es]({{< param "links.utterances" >}})
* Optimalisering van foto's voor meerdere schermafmetingen en resoluties
* Optimale zoekresultaten, met 100 punten voor SEO volgens [PageSpeed Insights]({{< param "links.pagespeed" >}})
* Veilige communicatie, met een score van A+ volgens [Mozilla Observatory]({{< param "links.observatory" >}})

View File

@@ -20,6 +20,8 @@ github.com/gethinode/mod-flexsearch v1.6.0 h1:Rjx+GLOByFLmaWD9hZXwmuKN8A89te6BZA
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/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
github.com/gethinode/mod-fontawesome v1.2.5 h1:RqkLRj6+s+gM4nKd0IwNMMDA8cRmxfp0fxkVH4FdAGU=
@@ -36,6 +38,10 @@ github.com/gethinode/mod-fontawesome v1.5.0 h1:3mW5dnWauuF9wSWXNIY+PPgTNPlc/xQOQ
github.com/gethinode/mod-fontawesome v1.5.0/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
github.com/gethinode/mod-fontawesome v1.5.1 h1:C7goQY4HrEua/lpjC++laydNKBuYo1+307ngn5tyXeM=
github.com/gethinode/mod-fontawesome v1.5.1/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
github.com/gethinode/mod-fontawesome v1.6.1 h1:iqOgDGdw7Bs4hnzjF/8JsUn10omyKQZTglLqNenT1K0=
github.com/gethinode/mod-fontawesome v1.6.1/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
github.com/gethinode/mod-fontawesome v1.7.3 h1:YzRCYSasVRIcImVmTJYjqNJ+KmyNWfm/bMgtM0slvzs=
github.com/gethinode/mod-fontawesome v1.7.3/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
github.com/gethinode/mod-katex v1.0.1/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
github.com/gethinode/mod-katex v1.0.2 h1:pIG4n3qLl/IVe7BEiwn+GL8r5lOCtF6FDxlcrPKdAXk=
github.com/gethinode/mod-katex v1.0.2/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
@@ -43,6 +49,8 @@ github.com/gethinode/mod-katex v1.0.3 h1:fvlUWqcUQqv2zRNM2kfmJ6GhXA816Tl1nfVrUkm
github.com/gethinode/mod-katex v1.0.3/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
github.com/gethinode/mod-katex v1.0.4 h1:NozgWPFnHhx1W+E9DnwMTRpvxPbdqdANEtwp9N3/mj8=
github.com/gethinode/mod-katex v1.0.4/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
github.com/gethinode/mod-katex v1.0.5 h1:AVhcTINYory0ygChQERf8PcyJkbT1oqhmLRF6ESnWOY=
github.com/gethinode/mod-katex v1.0.5/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
github.com/gethinode/mod-leaflet v0.3.4 h1:oY+YQ0JiJuhFQNrk9XgFdg0NMsTUQPXNfnILp4ia4r4=
github.com/gethinode/mod-leaflet v0.3.4/go.mod h1:uGggt87x4Fw7wBoJpSiUvNkYg+s/Ujne7klAX2rxMRk=
github.com/gethinode/mod-leaflet v0.3.5 h1:69Bv/6zRXhbcTzo7TMr58h3ry47srHRpM1k81LrLbYU=

View File

@@ -14,6 +14,7 @@
"footer",
"form",
"h2",
"h3",
"head",
"hr",
"html",
@@ -113,7 +114,9 @@
"carousel-item",
"chroma",
"col",
"col-10",
"col-12",
"col-2",
"col-3",
"col-4",
"col-6",
@@ -213,6 +216,8 @@
"form-control",
"fs-3",
"fs-5",
"fs-6",
"fs-md-5",
"fw-bold",
"fw-semibold",
"g-0",
@@ -274,6 +279,7 @@
"mx-md-0",
"mx-md-2",
"my-2",
"my-4",
"my-auto",
"my-md-0",
"my-md-auto",
@@ -309,6 +315,8 @@
"pb-5",
"pb-md-0",
"pe-3",
"pe-5",
"persona",
"position-absolute",
"position-fixed",
"position-relative",
@@ -319,6 +327,10 @@
"ps-xl-3",
"pt-5",
"pt-md-3",
"ptw-3",
"ptw-5",
"ptw-lg-5",
"ptw-sm-4",
"px-4",
"px-xxl-0",
"py-1",
@@ -330,6 +342,7 @@
"ratio-16x9",
"rounded",
"rounded-2",
"rounded-5",
"rounded-bottom",
"rounded-pill",
"rounded-top",
@@ -350,7 +363,9 @@
"slide",
"small",
"spinner-border",
"start-0",
"start-100",
"start-50",
"sticky-top",
"stretched-link",
"svg-inline--fa",
@@ -409,8 +424,11 @@
"toc-sidebar",
"toggler-icon",
"top-0",
"top-25",
"top-50",
"top-bar",
"translate-middle",
"translate-middle-y",
"visually-hidden",
"vr",
"w-100",
@@ -490,6 +508,7 @@
"navbar-sample-collapse",
"navigation",
"notification",
"persona",
"projecten",
"projects",
"projets",

11
go.mod
View File

@@ -5,11 +5,12 @@ go 1.19
require (
github.com/airbnb/lottie-web v5.12.2+incompatible // indirect
github.com/gethinode/mod-bootstrap v1.2.2 // indirect
github.com/gethinode/mod-flexsearch v1.7.0 // indirect
github.com/gethinode/mod-fontawesome v1.5.1 // indirect
github.com/gethinode/mod-katex v1.0.4 // indirect
github.com/gethinode/mod-leaflet v0.3.5 // indirect
github.com/gethinode/mod-lottie v1.3.0 // indirect
github.com/gethinode/mod-flexsearch v1.8.0 // indirect
github.com/gethinode/mod-fontawesome v1.8.0 // indirect
github.com/gethinode/mod-katex v1.0.5 // indirect
github.com/gethinode/mod-leaflet v0.4.0 // indirect
github.com/gethinode/mod-lottie v1.4.0 // indirect
github.com/gethinode/mod-utils v1.0.0 // indirect
github.com/nextapps-de/flexsearch v0.0.0-20230711092928-1243fd883ec3 // indirect
github.com/twbs/bootstrap v5.3.2+incompatible // indirect
)

18
go.sum
View File

@@ -38,6 +38,10 @@ github.com/gethinode/mod-flexsearch v1.6.0 h1:Rjx+GLOByFLmaWD9hZXwmuKN8A89te6BZA
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-flexsearch v1.8.0 h1:rKu9ackmbGAD/CRJYUDUhy/3nDCEj0IgYDiL1bkwzDc=
github.com/gethinode/mod-flexsearch v1.8.0/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
github.com/gethinode/mod-fontawesome v1.0.2 h1:ZSK6D20/w4y5GnfYfTBB58uHD0ChIfkpKfRGwioS9rg=
github.com/gethinode/mod-fontawesome v1.0.2/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
github.com/gethinode/mod-fontawesome v1.1.0 h1:rsDzUI+3ZlS/do2ff3ne8/z3KwHeysmuA+WsXlumXXk=
@@ -66,6 +70,12 @@ github.com/gethinode/mod-fontawesome v1.5.0 h1:3mW5dnWauuF9wSWXNIY+PPgTNPlc/xQOQ
github.com/gethinode/mod-fontawesome v1.5.0/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
github.com/gethinode/mod-fontawesome v1.5.1 h1:C7goQY4HrEua/lpjC++laydNKBuYo1+307ngn5tyXeM=
github.com/gethinode/mod-fontawesome v1.5.1/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
github.com/gethinode/mod-fontawesome v1.6.1 h1:iqOgDGdw7Bs4hnzjF/8JsUn10omyKQZTglLqNenT1K0=
github.com/gethinode/mod-fontawesome v1.6.1/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
github.com/gethinode/mod-fontawesome v1.7.3 h1:YzRCYSasVRIcImVmTJYjqNJ+KmyNWfm/bMgtM0slvzs=
github.com/gethinode/mod-fontawesome v1.7.3/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
github.com/gethinode/mod-fontawesome v1.8.0 h1:YEuCmvCdzcemF1eFK35Wnp1asKKO3/xbxGArnjq6PRY=
github.com/gethinode/mod-fontawesome v1.8.0/go.mod h1:uvuC2YL8mdXNp6NRzFOu4TWsHvtY9AZ8YxJkF23/M/8=
github.com/gethinode/mod-katex v1.0.0 h1:me/3dIIZBkfk1mRIFt8QiAGYwYDoSG5bc2hHRtIutFc=
github.com/gethinode/mod-katex v1.0.0/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
github.com/gethinode/mod-katex v1.0.1 h1:809QUztxmKgMNchU+v03iMO7Ma+ISc3ZzhXYauc21rs=
@@ -76,6 +86,8 @@ github.com/gethinode/mod-katex v1.0.3 h1:fvlUWqcUQqv2zRNM2kfmJ6GhXA816Tl1nfVrUkm
github.com/gethinode/mod-katex v1.0.3/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
github.com/gethinode/mod-katex v1.0.4 h1:NozgWPFnHhx1W+E9DnwMTRpvxPbdqdANEtwp9N3/mj8=
github.com/gethinode/mod-katex v1.0.4/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
github.com/gethinode/mod-katex v1.0.5 h1:AVhcTINYory0ygChQERf8PcyJkbT1oqhmLRF6ESnWOY=
github.com/gethinode/mod-katex v1.0.5/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
github.com/gethinode/mod-leaflet v0.2.3 h1:QQI4h+IH0jZ7fx4q0um2YIEiYBoW3OAfW8qHzbRCDPk=
github.com/gethinode/mod-leaflet v0.2.3/go.mod h1:uGggt87x4Fw7wBoJpSiUvNkYg+s/Ujne7klAX2rxMRk=
github.com/gethinode/mod-leaflet v0.3.1 h1:H5MaOa+BB1KuVw7abTqfIn/SNzzRsAyx/WQoSe+2Ykc=
@@ -86,6 +98,8 @@ github.com/gethinode/mod-leaflet v0.3.4 h1:oY+YQ0JiJuhFQNrk9XgFdg0NMsTUQPXNfnILp
github.com/gethinode/mod-leaflet v0.3.4/go.mod h1:uGggt87x4Fw7wBoJpSiUvNkYg+s/Ujne7klAX2rxMRk=
github.com/gethinode/mod-leaflet v0.3.5 h1:69Bv/6zRXhbcTzo7TMr58h3ry47srHRpM1k81LrLbYU=
github.com/gethinode/mod-leaflet v0.3.5/go.mod h1:uGggt87x4Fw7wBoJpSiUvNkYg+s/Ujne7klAX2rxMRk=
github.com/gethinode/mod-leaflet v0.4.0 h1:Xc6c1UTf4m1saQLFfFWT5sEpwj25xVGuS8csGC82UUI=
github.com/gethinode/mod-leaflet v0.4.0/go.mod h1:yr+bUKAstifdB16mbYh69OayAmgPOlNUubAmVn5eL2M=
github.com/gethinode/mod-lottie v1.0.0 h1:1CUZMcgN5FAyjjyuP3qkaOQ6M5sv6HUAbosW4sIT5VE=
github.com/gethinode/mod-lottie v1.0.0/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=
github.com/gethinode/mod-lottie v1.0.1 h1:+IE7xtnSVQpJS56oBJq9RWKZeFEfxrOZAqE3BSrS/u0=
@@ -98,6 +112,10 @@ github.com/gethinode/mod-lottie v1.2.0 h1:9S0Y4PlEO66dIvFxayatmDEf8WWxqbLNLi4z56
github.com/gethinode/mod-lottie v1.2.0/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=
github.com/gethinode/mod-lottie v1.3.0 h1:vQ8CXkjdp2IeFskTzu+ZnKOEio8GtN08urVK+oCH81E=
github.com/gethinode/mod-lottie v1.3.0/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=
github.com/gethinode/mod-lottie v1.4.0 h1:0Ls1Q/8p0gQpuX9+dtfNGKcjBNeymjE7gERdnN3lCCE=
github.com/gethinode/mod-lottie v1.4.0/go.mod h1:57eu6glS5oxkew2dB1P2zsbhw444aRX0XfuyDe7k/dk=
github.com/gethinode/mod-utils v1.0.0 h1:cqHm2xS5uDiJzRm1KfHaNbq6uMVDKLhQa8/BuTZ1nhY=
github.com/gethinode/mod-utils v1.0.0/go.mod h1:ONJm3pHCq7nvaPNjusLZNCeCbhOhSBH4HVKHwK1FdYE=
github.com/nextapps-de/flexsearch v0.0.0-20230711092928-1243fd883ec3 h1:H/qVR5O4BXjRjD+5PZB+r4ug2BSJ2Of4RtwOntd+OKo=
github.com/nextapps-de/flexsearch v0.0.0-20230711092928-1243fd883ec3/go.mod h1:5GdMfPAXzbA2gXBqTjC6l27kioSYzHlqDMh0+wyx7sU=
github.com/twbs/bootstrap v5.3.2+incompatible h1:tuiO5acc6xnZUR77Sbi5aKWXxjYxbmsSbJwYrhAKoQQ=

View File

@@ -45,8 +45,10 @@
"col-12",
"col-6",
"col-md-2",
"col-md-3",
"col-md-4",
"col-md-8",
"col-md-9",
"col-sm-12",
"collapse",
"collapsed",
@@ -147,7 +149,6 @@
"row-cols-1",
"row-cols-2",
"row-cols-md-2",
"row-cols-sm-2",
"row-cols-sm-3",
"search",
"search-input",

View File

@@ -30,9 +30,9 @@
- id: shareSystem
translation: "Betriebssystem"
- id: copyToClipboard
translation: "In Zwischenablage kopieren"
translation: "In die Zwischenablage kopieren"
- id: copiedToClipboard
translation: "Der Text befindet sich in die Zwischenablage"
translation: "befindet sich in der Zwischenablage"
- id: link
translation: "Link zur Webseite"
- id: code

View File

@@ -133,3 +133,17 @@
translation: "Show"
- id: comments
translation: "Comments"
# Arguments
- id: name
translation: "Name"
- id: type
translation: "Type"
- id: required
translation: "Required"
- id: default
translation: "Default"
- id: comment
translation: "Comment"
- id: supportedValues
translation: "Supported values"

View File

@@ -25,6 +25,20 @@
translation: "Articles"
- id: more
translation: "Plus {{ . }}"
- id: emptyList
translation: "Aucun articles trouvé"
- id: emptyTags
translation: "Aucun tags trouvé"
# Languages
- id: lang_de
translation: "Allemand"
- id: lang_en
translation: "Anglais"
- id: lang_nl
translation: "Néerlandais"
- id: lang_fr
translation: "Français"
# Sharing
- id: shareLink
@@ -39,6 +53,8 @@
translation: "Lien"
- id: code
translation: "Code"
- id: download
translation: "Télécharger l'article"
# Pagination
- id: paginationNav
@@ -75,6 +91,8 @@
translation: "Sur cette page"
- id: seeAlso
translation: "Voir également"
- id: sectionMenu
translation: "Selectionner un topic"
# Sidebar
- id: toggleSidebar
@@ -115,3 +133,17 @@
translation: "Afficher"
- id: comments
translation: "Commentaires"
# Arguments
- id: name
translation: "Name"
- id: type
translation: "Type"
- id: required
translation: "Required"
- id: default
translation: "Default"
- id: comment
translation: "Comment"
- id: supportedValues
translation: "Supported values"

View File

@@ -131,3 +131,18 @@
translation: "Tonen"
- id: comments
translation: "Reacties"
# Arguments
- id: name
translation: "Naam"
- id: type
translation: "Type"
- id: required
translation: "Verplicht"
- id: default
translation: "Standaardwaarde"
- id: comment
translation: "Toelichting"
- id: supportedValues
translation: "Toegestane waarden"

135
i18n/zh-hans.yaml Normal file
View 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
View 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: "評論"

View File

@@ -1,5 +1,12 @@
{{- define "partials/optional-scripts.html" -}}
{{- $modules := site.Params.modules.optional | intersect .Params.modules -}}
{{ $page_modules := slice }}
{{ if reflect.IsMap .Params.modules }}
{{ $page_modules = .Params.modules }}
{{ else }}
{{ $page_modules = $page_modules | append .Params.modules }}
{{ end }}
{{- $modules := site.Params.modules.optional | intersect $page_modules -}}
{{- range $index, $mod := $modules -}}
{{- $filename := printf "js/%s.bundle.js" $mod -}}
{{- $match := printf "js/modules/%s/**.js" $mod -}}

View File

@@ -11,7 +11,7 @@
<div class="container-xxl p-4 px-xxl-0">
{{- if ne $layout "featured" -}}
{{ if and (not $page.IsHome) site.Params.navigation.breadcrumb }}
<div>{{ partial "assets/breadcrumb.html" $page }}</div>
<div>{{ partial "assets/breadcrumb.html" (dict "page" $page) }}</div>
{{ end -}}
{{- end -}}

View File

@@ -9,7 +9,7 @@
{{ with .Title }}<p id="{{ anchorize . }}" class="display-4 mt-5{{ if and $.IsHome site.Params.home.centerHeadline }} text-center{{ end }}">{{ . }}</p>{{ end }}
{{ end }}
{{ if (.Params.menu) }}
{{- partial "assets/section-menu.html" . -}}
{{- partial "assets/section-menu.html" (dict "page" .) -}}
{{- end -}}
{{- $loading := "" -}}
{{- if or (eq $layout "featured") .IsHome -}}

View File

@@ -1,19 +1,15 @@
{{- define "partials/single-main.html" -}}
{{- $breakpoint := $.Scratch.Get "breakpoint" -}}
{{ if .Site.Params.navigation.breadcrumb }}{{ partial "assets/breadcrumb.html" . }}{{ end -}}
{{ if .Site.Params.navigation.breadcrumb }}{{ partial "assets/breadcrumb.html" (dict "page" .) }}{{ end -}}
{{ .Render "single/header" }}
{{- if and .Site.Params.navigation.toc .Params.includeToc | default true -}}
<div class="d-{{ $breakpoint.current }}-none pb-5">{{ partial "assets/toc-dropdown.html" . }}</div>
<div class="d-{{ $breakpoint.current }}-none pb-5">{{ partial "assets/toc-dropdown.html" (dict "page" .) }}</div>
{{- end -}}
{{ .Render "single/body" }}
{{ .Render "single/footer" }}
{{- if and .Site.Params.comments.enabled .Params.showComments | default true -}}
<hr>
{{ partial "assets/comments.html" . }}
{{ end -}}
{{ end -}}
{{ define "main" -}}

View File

@@ -48,5 +48,5 @@
</div>
</div>
{{- end -}}
{{ partial "assets/sharing.html" . }}
{{ partial "assets/sharing.html" (dict "page" .) }}
<p class="lead mb-5 mt-3">{{ .Description }}</p>

View File

@@ -37,6 +37,6 @@
{{ end }}
{{ if $toc }}
{{ partial "assets/toc.html" (dict "page" . "download" $download) }}
{{ partial "assets/toc.html" (dict "page" .) }}
{{ end -}}
</div>

View File

@@ -1,3 +1,3 @@
{{ with .Title }}<p class="display-4 mt-5">{{ . }}</p>{{ end }}
{{ partial "assets/sharing.html" . }}
{{ partial "assets/sharing.html" (dict "page" .) }}
<p class="lead mb-5">{{ .Description }}</p>

View File

@@ -1,3 +1,3 @@
{{ with .Title }}<p class="display-4 mt-5">{{ . }}</p>{{ end }}
{{ partial "assets/sharing.html" . }}
{{ partial "assets/sharing.html" (dict "page" .) }}
<p class="lead mb-5">{{ .Description }}</p>

View File

@@ -1,6 +1,24 @@
<!--
Copyright © 2024 The Hinode Team / Mark Dumay. All rights reserved.
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
Visit gethinode.com/license for more details.
-->
{{ $error := false }}
<!-- Validate arguments -->
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "breadcrumb" "args" . "group" "partial") }}
{{- errorf "partial [assets/breadcrumb.html] - Invalid arguments" -}}
{{ $error = true }}
{{ end }}
<!-- Initialize arguments -->
{{ $page := .page }}
<!-- Main code -->
<nav aria-label="breadcrumb">
<ol class="breadcrumb">
{{- range $index, $item := .Page.Ancestors.Reverse -}}
{{- range $index, $item := $page.Ancestors.Reverse -}}
{{- $title := .LinkTitle -}}
{{- if .IsHome }}{{ $title = T "home" }}{{ end -}}
{{- $address := or .RelPermalink (.Params.Redirect | relLangURL) -}}
@@ -10,6 +28,6 @@
<li class="breadcrumb-item">{{ $title }}</li>
{{ end }}
{{- end -}}
<li class="breadcrumb-item active" aria-current="page">{{ .Page.LinkTitle }}</li>
<li class="breadcrumb-item active" aria-current="page">{{ $page.LinkTitle }}</li>
</ol>
</nav>

View File

@@ -1,73 +1,32 @@
<!--
Displays a button. The shortcode supports the following arguments:
"title" Title of the button, required unless icon is set.
"href" Optional address for the button or hyperlink.
"id" Optional id of the button, to be used in the DOM.
"state" Optional state of the button, either "enabled" (default), "disabled", "active", or "inactive".
"size" Optional size of the button, either "sm", "md" (default), or "lg".
"color" Optional theme color of the element, either "primary" (default), "secondary", "success",
"danger", "warning", "info", "light", "dark", "white", or "black".
"outline" Optional flag indicating the button should be outlined, either "false" (default) or "true".
"badge" Optional positioned badge to display on top of the button.
"label" Optional assistive label for the button or badge. The label is applied to the badge instead of the
button when a badge has been defined. Default value of the button aria-label is its title.
"tooltip" Optional text to display in a tooltip. Cannot be used together with collapse. Ignored for active/
inactive buttons.
"collapse" Optional panel to collapse. Cannot be used together with tooltip. Ignored for active/inactive buttons.
"type" Optional type of the element, either "link" or "button" (default).
"placement" Optional position of the tooltip: "top" (default), "bottom", "left", or "right".
"class" Optional class attribute of the button element, e.g. “toc-button”.
"icon" Font Awesome icon class attribute, required unless title is set. An example value is "fas sort".
"order" Optional order of the icon, either "first" or "last" (default).
"justify" Optional justification of the button title and icon, either "start", "end", "center" (default),
"between", "around", or "evenly".
"toast" Optional id of the toast to display when the button is clicked.
"clipboard" Optional text to be copied to the clipboard when the button is clicked.
"cue" Optional flag to indicate if an external link should show a visual cue, defaults to setting
"main.externalLinks.cue" in the site's parameters.
"tab" Optional flag to indicate if an external link should open in a new tab, defaults to setting
"main.externalLinks.tab" in the site's parameters.
"attributes" Optional dictionary of key-value pairs added as custom attributes to the button element ('<a>').
"spacing" Optional flag to add spacing to the inline button, defaults to "true".
Copyright © 2024 The Hinode Team / Mark Dumay. All rights reserved.
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
Visit gethinode.com/license for more details.
-->
{{ $error := false }}
<!-- Validate arguments -->
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "button" "args" . "group" "partial") }}
{{- errorf "partial [assets/button.html] - Invalid arguments" -}}
{{ $error = true }}
{{ end }}
<!-- Initialize arguments -->
{{- $title := trim .title " \r\n" -}}
{{- $icon := .icon }}
{{- if not (or $title $icon) -}}
{{- errorf "partial [assets/button.html] - Missing element title or icon" -}}
{{ $error = true }}
{{- end -}}
{{- $id := .id }}
{{- $state := "enabled" -}}
{{- with .state }}{{ $state = . }}{{ end -}}
{{- $supportedStates := slice "enabled" "disabled" "active" "inactive" -}}
{{- if not (in $supportedStates $state) -}}
{{- errorf "partial [assets/button.html] - Invalid value for param 'state': %s" $state -}}
{{- end -}}
{{- $size := "md" -}}
{{- with .size }}{{ $size = . }}{{ end -}}
{{- $supportedSizes := slice "sm" "md" "lg" -}}
{{- if not (in $supportedSizes $size) -}}
{{- errorf "partial [assets/button.html] - Invalid value for param 'size': %s" $size -}}
{{- end -}}
{{- $color := "primary" -}}
{{- with .color }}{{ $color = . }}{{ end -}}
{{- $supportedColors := slice "primary" "secondary" "success" "danger" "warning" "info" "light" "dark" "white" "black" -}}
{{- if not (in $supportedColors $color) -}}
{{- errorf "partial [assets/button.html] - Invalid value for param 'color': %s" $color -}}
{{- end -}}
{{- $outline := false -}}
{{- with .outline }}{{ $outline = . }}{{ end -}}
{{- $badge := "" -}}
{{- with .badge }}{{ $badge = . }}{{ end -}}
{{- $label := "" -}}
{{- with .label }}{{ $label = . }}{{ end -}}
{{- $state := .state | default "enabled" -}}
{{- $size := .size | default "md" -}}
{{- $color := .color | default "primary" -}}
{{- $outline := .outline | default false -}}
{{- $badge := .badge | default "" -}}
{{- $label := .label | default $title -}}
{{- $tooltip := "" -}}
{{- if not (strings.HasSuffix $state "active") -}}
@@ -75,58 +34,28 @@
{{- end -}}
{{- $href := .href -}}
{{- $collapse := "" -}}
{{- if not (strings.HasSuffix $state "active") -}}
{{- with .collapse }}{{ $collapse = . }}{{ $href = printf "#%s" . }}{{ end -}}
{{- end -}}
{{- if $tooltip -}}
{{- if $collapse -}}
{{- errorf "partial [assets/button.html] - Cannot use tooltip and collapse at the same time" -}}
{{- end -}}
{{- if and $tooltip $collapse -}}
{{- errorf "partial [assets/button.html] - Cannot use tooltip and collapse at the same time" -}}
{{ $error = true }}
{{- end -}}
{{- $type := "button" -}}
{{- with .type }}{{ $type = . }}{{ end -}}
{{- $supportedTypes := slice "button" "link" -}}
{{- if not (in $supportedTypes $type) -}}
{{- errorf "partial [assets/button.html] - Invalid value for param 'type': %s" $type -}}
{{- end -}}
{{- $placement := "top" -}}
{{- with .placement }}{{ $placement = . }}{{ end -}}
{{- $supportedPlacements := slice "top" "bottom" "left" "right" -}}
{{- if not (in $supportedPlacements $placement) -}}
{{- errorf "partial [assets/button.html] - Invalid value for param 'placement': %s" $placement -}}
{{- end -}}
{{- $class := .class }}
{{- $type := .type | default "button" -}}
{{- $placement := .placement | default "top" -}}
{{- $class := .class | default "" }}
{{ with $badge }}{{ $class = printf "%s me-3" $class }}{{ end }}
{{- $order := "last" -}}
{{- with .order }}{{ $order = . }}{{ end -}}
{{- $supportedOrders := slice "first" "last" -}}
{{- if not (in $supportedOrders $order) -}}
{{- errorf "partial [assets/button.html] - Invalid value for param 'order': %s" $order -}}
{{- end -}}
{{- $justify := "center" -}}
{{- with .justify }}{{ $justify = . }}{{ end -}}
{{- $supportedJustify := slice "start" "end" "center" "between" "around" "evenly" -}}
{{- if not (in $supportedJustify $justify) -}}
{{- errorf "partial [assets/button.html] - Invalid value for param 'justify': %s" $justify -}}
{{- end -}}
{{- $order := .order | default "last" -}}
{{- $justify := .justify | default "center" -}}
{{- $toast := .toast -}}
{{- $clipboard := .clipboard -}}
{{- $cue := .cue | default site.Params.main.externalLinks.cue -}}
{{- $tab := .tab | default site.Params.main.externalLinks.tab -}}
{{- $isExternal := ne (urls.Parse (absURL $href)).Host (urls.Parse site.BaseURL).Host -}}
{{- $target := "" -}}
{{- $rel := "" -}}
{{- $spacing := .spacing | default true -}}
{{- if $isExternal -}}
@@ -143,31 +72,35 @@
{{- $attributes := .attributes -}}
<a aria-label="{{ (or $label $title) | safeHTML }}" {{ if ne $state "disabled" }}{{ with $href }}href="{{ . }}"{{ end }}{{ end -}}
{{- with $id }} id="{{ . }}"{{ end -}}
{{- with $target }} target="{{ . }}"{{ end }}{{ with $rel }} rel="{{ . }}"{{ end -}}
{{- with $toast }} data-toast-target="{{ $toast }}"{{ end -}}
{{- with $clipboard }} data-clipboard="{{ $clipboard }}"{{ end -}}
{{- if eq $type "button" }} class="btn btn-{{ if $outline }}outline-{{ end }}{{ $color }} {{ if ne $size "md"}}btn-{{ $size }}{{ end }} position-relative {{ if in (slice "disabled" "active") $state }}{{ $state }}{{ end }} {{ $class -}}"
role="button" {{ if eq $state "disabled" }}aria-disabled="true"{{ end -}}
{{- else }} class="link-{{ $color }} position-relative {{ $class }}"{{ end -}}
{{- with $tooltip }} data-bs-toggle="tooltip" data-bs-title="{{ . }}" data-bs-placement="{{ $placement }}"{{ end -}}
{{- with $collapse }} data-bs-toggle="collapse" aria-expanded="false" aria-controls="{{ . }}"{{ end -}}
{{- if eq $state "active" }} data-bs-toggle="button" aria-pressed="true"{{ end -}}
{{- if eq $state "inactive" }} data-bs-toggle="button" aria-pressed="false"{{ end -}}
{{- range $key, $val := $attributes -}}
{{ printf " %s=\"%s\"" $key $val | safeHTMLAttr }}
{{- end -}}
>
<div class="d-flex justify-content-{{ $justify }}">
<div class="my-auto">{{ $title | safeHTML }}</div>
{{- with $icon }}<div class="align-self-center{{ if $title }}{{ if eq $order "first" }} order-first pe-1{{ else }} ps-1{{ end }}{{ end }}">{{ partial "assets/icon.html" (dict "icon" $icon "spacing" false) }}</div>{{ end }}
</div>
<!-- Main code -->
{{ if not $error }}
<a aria-label="{{ (or $label $title) | safeHTML }}"
{{ if ne $state "disabled" }}{{ with $href }}href="{{ . }}"{{ end }}{{ end -}}
{{- with $id }} id="{{ . }}"{{ end -}}
{{- with $target }} target="{{ . }}"{{ end }}{{ with $rel }} rel="{{ . }}"{{ end -}}
{{- with $toast }} data-toast-target="{{ $toast }}"{{ end -}}
{{- with $clipboard }} data-clipboard="{{ $clipboard }}"{{ end -}}
{{- if eq $type "button" }} class="btn btn-{{ if $outline }}outline-{{ end }}{{ $color }} {{ if ne $size "md"}}btn-{{ $size }}{{ end }} position-relative {{ if in (slice "disabled" "active") $state }}{{ $state }}{{ end }} {{ $class -}}"
role="button" {{ if eq $state "disabled" }}aria-disabled="true"{{ end -}}
{{- else }} class="link-{{ $color }} position-relative {{ $class }}"{{ end -}}
{{- with $tooltip }} data-bs-toggle="tooltip" data-bs-title="{{ . }}" data-bs-placement="{{ $placement }}"{{ end -}}
{{- with $collapse }} data-bs-toggle="collapse" aria-expanded="false" aria-controls="{{ . }}"{{ end -}}
{{- if eq $state "active" }} data-bs-toggle="button" aria-pressed="true"{{ end -}}
{{- if eq $state "inactive" }} data-bs-toggle="button" aria-pressed="false"{{ end -}}
{{- range $key, $val := $attributes -}}
{{ printf " %s=\"%s\"" $key $val | safeHTMLAttr }}
{{- end -}}
>
<div class="d-flex justify-content-{{ $justify }}">
<div class="my-auto">{{ $title | safeHTML }}</div>
{{- with $icon }}<div class="align-self-center{{ if $title }}{{ if eq $order "first" }} order-first pe-1{{ else }} ps-1{{ end }}{{ end }}">{{ partial "assets/icon.html" (dict "icon" $icon "spacing" false) }}</div>{{ end }}
</div>
{{- with $badge }}
<span class="position-absolute top-0 start-100 translate-middle badge rounded-pill bg-danger">
{{ . }}
{{ with $label }}<span class="visually-hidden">{{ . }}</span>{{ end }}
</span>
{{- end -}}
</a>{{ if $spacing }}&nbsp;{{- end }}
{{- with $badge }}
<span class="position-absolute top-0 start-100 translate-middle badge rounded-pill bg-danger">
{{ . }}
{{ with $label }}<span class="visually-hidden">{{ . }}</span>{{ end }}
</span>
{{- end -}}
</a>{{ if $spacing }}&nbsp;{{- end }}
{{ end }}

View File

@@ -1,73 +1,46 @@
<!--
Displays a grid of Bootstrap cards with 1 to 5 columns. The cards are rendered using a provided list of pages.
Cards on the same row are aligned to each other. The grid renders pages up to a provided maximum amount. The
remaining items are accessible via either a paginator or button to a list page (default behavior). Be aware a page
can only contain one paginator at a time.
The shortcode supports the following arguments:
"page" Required context of the current page.
"list" Required array of pages.
"cards" Optional string of rendered cards.
"max" Required maximum number of cards to display.
"cols" Required number of columns for the grid, must be a value between 1 and 5.
"gutter" Gutter between columns in a group, either "0", "1", "2", "3", "4" (default), or "5".
"title" Optional title of the card group.
"paginate" Optional flag indicating if pagination should be added to the card group, if the list exceeds the
maximum number of cards to display.
"href" Optional address for the button or hyperlink. If set, a button is added if the list exceeds the
maximum number of cards to display.
"hrefTitle" Optional title of the button or hyperlink as companion to href.
"separator" Optional flag to indicate a horizontal line should be added between items on small screens.
"wrapper" Optional class attributes of the wrapper element, e.g. "p-4 px-xxl-0".
"responsive" Optional flag if the number of columns should be responsive, defaults to "true".
In addition, the following arguments are passed to the individual cards.
"class" Optional class attribute of the card element, e.g. “w-50”.
"color": Optional theme color of the card, either "primary", "secondary", "success", "danger",
"warning", "info", "light", "dark", or "body". By default, no color is specified.
"padding": Optional padding of the content, either "0", "1", "2", "3", "4", "5", or "auto" (default).
"header" Optional header components of the card, displayed in small caps. Supported values are "full"
(default), "publication", "tags", and "none".
"footer" Optional footer components of the card, displayed in small caps. Supported values are "full",
"publication", "tags", and "none" (default).
"orientation" Optional placecement of the thumbnail, either "stacked" (default), "horizontal", or "none".
"ratio" Optional ratio of the thumbnail image, defaults to "16x9" (stacked orientation) or "1x1" (horizontal
orientation).
Copyright © 2024 The Hinode Team / Mark Dumay. All rights reserved.
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
Visit gethinode.com/license for more details.
-->
<!-- Validate arguments -->
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "card-group" "child" "card" "args" .) }}
{{- errorf "partial [assets/card-group.html] - Invalid arguments" -}}
{{ end }}
<!-- Initialize arguments and default values -->
{{- $page := .page -}}
{{- $breakpoint := partial "utilities/GetBreakpoint.html" -}}
{{- if not (in (slice "*hugolib.pageState" "*hugolib.pageForShortcode") (printf "%T" $page)) -}}
{{- errorf "partial [assets/card-group.html] - Invalid value for param 'page': %T" $page -}}
{{- end -}}
{{- $supportedTypes := slice "page.Pages" "resource.Resources" -}}
{{ $pages := .list }}
{{- if and $pages (not (in $supportedTypes (printf "%T" $pages))) -}}
{{ warnf "Type: %T" $pages }}
{{- errorf "partial [assets/card-group.html] - Invalid value for param 'list'" -}}
{{- end -}}
{{ $cards := .cards }}
{{- $paginate := .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 -}}
{{- with .paginate -}}
{{- if ne (printf "%T" .) "bool" -}}
{{- errorf "partial [assets/card-group.html] - Invalid value for param 'paginate'" -}}
{{- end -}}
{{- $paginate = . -}}
{{- end -}}
<!-- Override arguments -->
{{ $paginator := "" }}
{{ if $paginate }}
{{ $paginator = $page.Paginate $pages }}
{{ $pages = first $paginator.PageSize (after (mul (sub $paginator.PageNumber 1) $paginator.PageSize) $pages) }}
{{ end }}
{{ $list := slice }}
{{ range $index, $element := $pages }}
{{ $params := dict }}
<!-- regular page -->
{{- if $element.RelPermalink -}}
{{- if and $element.RelPermalink $element.File -}}
{{- $params = merge $params (dict "path" $element.File.Path) -}}
<!-- headless page -->
{{- else -}}
@@ -86,27 +59,10 @@
{{- $count := len $list -}}
{{- $max := $count -}}
{{- with .max }}
{{- if ne (printf "%T" .) "int" -}}
{{- warnf "partial [assets/card-group.html] - Invalid value for param 'max': %s" . -}}
{{- else -}}
{{- $max = . -}}
{{- end -}}
{{- end -}}
{{- $max = math.Min $max $count -}}
{{- $max = math.Min (.max | default $count) $count -}}
{{- $responsive := .responsive | default true -}}
{{- with .responsive -}}
{{- if ne (printf "%T" .) "bool" -}}
{{- errorf "partial [assets/card-group.html] - Invalid value for param 'responsive'" -}}
{{- end -}}
{{- end -}}
{{- $cols := string .cols | default "3" -}}
{{- $supportedCols := slice "0" "1" "2" "3" "4" "5" "auto" -}}
{{- if not (in $supportedCols $cols) -}}
{{- errorf "partial [assets/card-group.html] - Invalid value for param 'cols': %s" $cols -}}
{{- end -}}
{{- $colGrid := "" -}}
{{- if eq $cols "1" }}{{ $colGrid = "row-cols-1" -}}
{{- else if eq $cols "2" }}{{ if $responsive }}{{ $colGrid = printf "row-cols-1 row-cols-%s-1 row-cols-%s-2" $breakpoint.prev $breakpoint.current }}{{ else }}{{ $colGrid = "row-cols-2" }}{{ end -}}
@@ -115,58 +71,25 @@
{{- else if eq $cols "5" }}{{ if $responsive }}{{ $colGrid = printf "row-cols-1 row-cols-%s-3 row-cols-%s-5" $breakpoint.prev $breakpoint.current }}{{ else }}{{ $colGrid = "row-cols-5" }}{{ end -}}
{{ end -}}
{{- $gutter := .gutter | default "4" -}}
{{- $supportedGutters := slice "0" "1" "2" "3" "4" "5" -}}
{{- if not (in $supportedGutters $gutter) -}}
{{- errorf "partial [assets/card-group.html] - Invalid value for param 'gutter': %s" $gutter -}}
{{- end -}}
{{- if not $paginate -}}
{{- $list = first $max $list -}}
{{- end -}}
{{- $moreURL := .href -}}
{{- $moreTitle := .hrefTitle -}}
{{- $separator := false -}}
{{- with .separator -}}
{{- if ne (printf "%T" .) "bool" -}}
{{- errorf "partial [assets/card-group.html] - Invalid value for param 'separator'" -}}
{{- end -}}
{{- $separator = . -}}
{{- end -}}
{{- $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 -}}
{{- if and (eq $cols "1") (eq $orientation "horizontal") }}{{ $orientation = "horizontal-sm" }}{{ end -}}
<!-- Main code -->
<div class="container-fluid {{ $wrapper }}">
<div class="row {{ $colGrid }} g-{{ $gutter }}">
{{ range $index, $element := $list }}
{{- $params := (dict
"class" (printf "h-100 %s" $class)
"color" $color
"padding" $padding
"header" $header
"footer" $footer
"orientation" $orientation
"ratio" $ratio
"header" $header
"loading" $loading
"orientation" $orientation
"padding" $padding
"ratio" $ratio
) -}}
{{- $params = merge $params $element }}

View File

@@ -1,31 +1,49 @@
<!--
Displays a Bootstrap card. Either specify a valid path, or set the arguments title, href, header, description, and
thumbnail individually. The latter arguments override any page attributes.
The shortcode supports the following arguments:
"path" Optional path of the page, override with other parameters.
"title" Required title of the card.
"href" Optional address for the button or hyperlink.
"class" Optional class attribute of the card element, e.g. “w-50”.
"color": Optional theme color of the card, either "primary", "secondary", "success", "danger",
"warning", "info", "light", "dark", "white", "black", "body", or "body-tertiary". By default, no
color is specified.
"padding": Optional padding of the content, either "0", "1", "2", "3", "4", "5", or "auto" (default).
"gutter" Gutter between columns in a group, either "0" (default), "1", "2", "3", "4", or "5".
"header" Optional header components of the card, displayed in small caps. Supported values are "full"
(default), "publication", "tags", and "none".
"footer" Optional footer components of the card, displayed in small caps. Supported values are "full",
"publication", "tags", and "none" (default).
"description" Optional description of the card.
"thumbnail" Optional thumbnail image url, displayed on top or the left of the card.
"ratio" Optional ratio of the thumbnail image, defaults to "16x9" (stacked orientation) or "1x1" (horizontal
orientation).
"alt" Optional alternate text for the thumbnail, uses "title" by default.
"icon" Optional Font Awesome icon, displayed on top or the left of the card.
"orientation" Optional placecement of the thumbnail or icon, either "stacked" (default), "horizontal",
"horizontal-sm" or "none".
Copyright © 2024 The Hinode Team / Mark Dumay. All rights reserved.
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
Visit gethinode.com/license for more details.
-->
<!-- Validate arguments -->
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "card" "args" .) }}
{{- errorf "partial [assets/card.html] - Invalid arguments" -}}
{{ end }}
<!-- Initialize arguments and default values -->
{{- $alt := .alt -}}
{{- $class := .class -}}
{{- $color := .color -}}
{{- $description := .description -}}
{{- $footer := .footer | default "none" -}}
{{- $gutter := .gutter | default "0" -}}
{{- $header := .header | default "full" -}}
{{- $href := .href -}}
{{- $icon := .icon -}}
{{- $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 -->
{{- define "partials/card-body.html" -}}
{{- $title := .title -}}
@@ -77,90 +95,16 @@
</small></p>
{{- end -}}
{{- $page := "" }}
{{- if .path }}
{{- $page = site.GetPage .path }}
{{- if not $page }}
{{- errorf "partial [assets/card.html] - Cannot find page: %s" .path -}}
{{- end }}
{{- end }}
{{- $title := .title -}}
{{- $alt := .alt -}}
{{- $href := .href -}}
{{- $description := .description -}}
{{- $thumbnail := .thumbnail -}}
{{- $ratio := .ratio -}}
{{- $icon := .icon -}}
{{- $color := "" -}}
{{- with .color }}{{ $color = . }}{{ end -}}
{{- if $color -}}
{{- $supportedColors := slice "primary" "secondary" "success" "danger" "warning" "info" "light" "dark" "white" "black" "body" "body-tertiary" -}}
{{- if not (in $supportedColors $color) -}}
{{- errorf "partial [assets/card.html] - Invalid value for param 'color': %s" $color -}}
{{- end -}}
{{- end -}}
{{- $header := "full" -}}
{{- with .header }}{{ $header = . }}{{ end -}}
{{- $supportedKeywords := slice "full" "publication" "tags" "none" -}}
{{- if not (in $supportedKeywords $header) -}}
{{- errorf "partial [assets/card.html] - Invalid value for param 'header': %s" $header -}}
{{- end -}}
{{- $footer := "none" -}}
{{- with .footer }}{{ $footer = . }}{{ end -}}
{{- if not (in $supportedKeywords $footer) -}}
{{- errorf "partial [assets/card.html] - Invalid value for param 'footer': %s" $footer -}}
{{- end -}}
{{- with $page -}}
{{- if not $title }}{{ $title = .Title }}{{ end -}}
{{- if not $href }}{{ $href = .RelPermalink }}{{ end -}}
{{- if not $description }}{{ $description = partial "utilities/GetDescription.html" . }}{{ end -}}
{{- if not $thumbnail }}{{ $thumbnail = (or (and (reflect.IsMap .Params.Thumbnail) .Params.Thumbnail.url) .Params.Thumbnail) }}{{ end -}}
{{- if not $icon }}{{ $icon = .Params.icon }}{{ end -}}
{{- end -}}
{{- $class := .class -}}
{{- $padding := "auto" -}}
{{- with .padding }}{{ $padding = . }}{{ end -}}
{{- $supportedPaddings := slice "0" "1" "2" "3" "4" "5" "auto" -}}
{{- if not (in $supportedPaddings $padding) -}}
{{- errorf "partial [assets/card.html] - Invalid value for param 'padding': %s" $padding -}}
{{- end -}}
{{- $gutter := .gutter | default "0" -}}
{{ $supportedGutters:= slice "0" "1" "2" "3" "4" "5" -}}
{{ if not (in $supportedGutters $gutter) -}}
{{- errorf "partial [assets/card.html] - Invalid value for param 'gutter': %s" $gutter -}}
{{ end -}}
{{- $orientation := "stacked" -}}
{{- with .orientation }}{{ $orientation = . }}{{ end -}}
{{- $supportedOrientations := slice "stacked" "horizontal" "horizontal-sm" "none" -}}
{{- if not (in $supportedOrientations $orientation) -}}
{{- errorf "partial [assets/card.html] - Invalid value for param 'orientation': %s" $orientation -}}
{{- end -}}
{{- if eq $orientation "none" }}{{ $thumbnail = "" }}{{ $icon = "" }}{{ end -}}
{{- $loading := .loading -}}
{{- $validSettings := slice "lazy" "eager" -}}
{{- if $loading -}}
{{ if not (in $validSettings $loading) -}}
{{- errorf "partial [assets/card.html] - Invalid value for param 'loading': %s" $loading -}}
{{ end -}}
{{- end -}}
<!-- Main code -->
{{ if ne $gutter "0" }}<div class="g-{{ $gutter }}">{{ end }}
{{- if hasPrefix $orientation "horizontal" -}}
<!-- Render horizontal card -->
<div class="card {{ with $color }}bg-{{ . }} text-bg-{{ . }}{{ end }} {{ $class }}">
<div class="row g-0 row-cols-1 h-100">
<div class="col-4{{ if eq $orientation "horizontal-sm" }} col-md-2{{ end }}">
{{- if $thumbnail -}}
{{- partial "assets/image.html" (dict "url" $thumbnail "ratio" (or $ratio "1x1") "outerClass" "h-100 card-img-wrap" "innerClass" "rounded-start card-img-h100" "title" $title "loading" $loading) -}}
{{- partial "assets/image.html" (dict "url" $thumbnail "ratio" (or $ratio "1x1") "wrapper" "h-100 card-img-wrap" "class" "rounded-start card-img-h100" "title" $title "loading" $loading) -}}
{{- else if $icon -}}
<div class="card-icon p-{{ $padding }} h-100 fa-wrapper d-flex align-items-center justify-content-center">
{{- partial "assets/icon.html" (dict "icon" (printf "%s fa-fluid fa-fw" $icon)) -}}
@@ -179,9 +123,10 @@
</div>
</div>
{{- else -}}
<!-- Render stacked / default card -->
<div class="card {{ with $color }}bg-{{ . }} text-bg-{{ . }}{{ end }} {{ $class }}">
{{- if $thumbnail -}}
{{- partial "assets/image.html" (dict "url" $thumbnail "ratio" (or $ratio "16x9") "outerClass" "card-img-wrap" "innerClass" "card-img-top" "title" (or $alt $title) "loading" $loading) -}}
{{- partial "assets/image.html" (dict "url" $thumbnail "ratio" (or $ratio "16x9") "wrapper" "card-img-wrap" "class" "card-img-top" "title" (or $alt $title) "loading" $loading) -}}
{{- else if $icon -}}
<div class="card-icon p-{{ $padding }}">
{{- partial "assets/icon.html" (dict "icon" (printf "%s fa-4x" $icon)) -}}
@@ -194,4 +139,5 @@
</div>
</div>
{{- end -}}
{{ if ne $gutter "0" }}</div>{{ end }}

View File

@@ -1,20 +1,29 @@
<!--
Copyright © 2024 The Hinode Team / Mark Dumay. All rights reserved.
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
Visit gethinode.com/license for more details.
-->
{{ $error := false }}
<!-- Validate arguments -->
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "carousel-item" "args" . "group" "partial") }}
{{- errorf "partial [assets/carousel-item.html] - Invalid arguments" -}}
{{ $error = true }}
{{ end }}
<!-- Initialize arguments -->
{{- $page := .page -}}
{{- $active := .active -}}
{{- $src := .src -}}
{{- $caption := .caption -}}
{{- $ratio := .ratio -}}
{{- $portrait := .portrait -}}
{{- $loading := .loading | default "eager" -}}
{{- $loading := .loading -}}
{{- $validSettings := slice "lazy" "eager" -}}
{{- if $loading -}}
{{ if not (in $validSettings $loading) -}}
{{- errorf "partial [assets/carousel-item.html] - Invalid value for param 'loading': %s" $loading -}}
{{ end -}}
{{- end -}}
<!-- Main code -->
<div class="carousel-item{{ if $active }} active{{ end }}" {{ if not $active }} fetchpriority="low"{{ end }}>
{{ partial "assets/image.html" (dict "url" $src "ratio" $ratio "page" $page "innerClass" "d-block w-100" "portrait" $portrait "loading" $loading) }}
{{ partial "assets/image.html" (dict "url" $src "ratio" $ratio "page" $page "class" "d-block w-100" "portrait" $portrait "loading" $loading) }}
<div class="carousel-caption gradient"></div>
{{ with $caption }}
<div class="carousel-caption d-none d-md-block">

View File

@@ -1,12 +0,0 @@
{{- $params := .Site.Params.comments -}}
{{- with $params -}}
<h2>{{ T "comments" }}</h2>
<script src="https://utteranc.es/client.js"
repo="{{ $params.repo }}"
issue-term="{{ default "pathname" $params.issueTerm }}"
label="{{ default "comment" $params.label }}"
theme="{{ default "github-light" $params.theme }}"
crossorigin="anonymous"
async>
</script>
{{- end -}}

View File

@@ -1,80 +1,37 @@
<!--
Render a local or remote image with responsive image sizing. Images are resized using default media breakpoints
and are converted to webp format. The image is processed using the quality setting specified in the [imaging]
section of the main config file (defaults to 75). A fallback image is provided for older browsers. The image is
wrapped in a figure if a caption is provided, else the image is wrapped in a div with a ratio constraint.
If the url starts with 'http', the image is retrieved from an external location. Else, the url is matched with a
page resource and site asset (in that order). The path of a remote image is rewritten to ensure processed files are
stored in the final '/img' folder.
The partial supports the following bitmap image formats: "png", "jpeg", "gif", "tiff", "bmp", and "webp". Vector
graphics of type "svg" are supported too, although these images do no support additional processing. This means
the arguments "ratio" and "portrait" have no effect for vector images. Vector graphics support an optional anchor
"#" in their url to denote a styling reference.
The partial supports the following arguments:
"url": Required path or url of the image, e.g. "img/example.jpg"
"mode": Optional flag indicating if the image should support color modes.
"ratio": Optional ratio of the image, either "1x1", "3x2", "4x3", "16x9", or "21x9". If set, the image is
resized and cropped to match the ratio. Else the original aspect ratio of the image is kept. Not
applicable to vector graphics.
"portrait": Optional flag to adjust the ratio from landscape to portrait. The image itself is not rotated, only
the crop area is adjusted. Not applicable to vector graphics.
"loading": Optional loading behavior of the image, either "eager" (default) or "lazy". The loading of lazily
loaded images is deferred until the image is within scrolling range of the viewport. This should
reduce the initial loading time of the website. It is recommended to lazily load only those images
that are below the page fold.
"priority": Optional fetch priority of the image, either "high", "low", or "auto" (default). The priority
provides a hint to the browser on how it should prioritize the fetch of the image relative to other
images. The implementation is experimental and currently only supported by Chrome, Edge, and Opera.
(https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/fetchpriority#browser_compatibility).
"outerClass": Optional class attribute of the outer div element, e.g. "img-wrap".
"innerClass": Optional class attribute of the inner img element, e.g. "rounded".
"title": Optional alternate text of the image.
"caption": Optional figure caption.
"page": Optional page context, used to match page resources.
Copyright © 2024 The Hinode Team / Mark Dumay. All rights reserved.
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
Visit gethinode.com/license for more details.
-->
{{ $error := false }}
<!-- Validate arguments -->
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "image" "args" . "group" "partial") }}
{{ errorf "partial [assets/image.html] - Invalid arguments" -}}
{{ $error = true }}
{{ end }}
<!-- Initialize arguments -->
{{ $destination := .destination }}
<!-- Initialize arguments -->
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
{{- $validRatios := slice "1x1" "3x2" "4x3" "16x9" "21x9" -}}
{{- $ratio := .ratio -}}
{{- if $ratio -}}
{{ if not (in $validRatios $ratio) -}}
{{- errorf "partial [assets/image.html] - Invalid value for param 'ratio'" -}}
{{ end -}}
{{- end -}}
{{- $portrait := .portrait -}}
{{- $url := .url -}}
{{- $mode := false -}}
{{- with .mode }}{{ $mode = . }}{{ end -}}
{{- $outerClass := .outerClass -}}
{{- $innerClass := .innerClass -}}
{{- $mode := .mode -}}
{{- $modes := site.Params.main.modes | default (slice "light" "dark") -}}
{{- $wrapper := .wrapper -}}
{{- $class := .class -}}
{{- $title := .title -}}
{{- $caption := .caption -}}
{{- if ne (printf "%T" $mode) "bool" -}}
{{- errorf "partial [assets/image.html] - Invalid value for param 'mode'" -}}
{{- end -}}
{{- $modes := site.Params.main.modes | default (slice "light" "dark") -}}
{{- $page := .page -}}
{{- $loading := .loading -}}
{{- $validSettings := slice "lazy" "eager" -}}
{{- if $loading -}}
{{ if not (in $validSettings $loading) -}}
{{- errorf "partial [assets/image.html] - Invalid value for param 'loading'" -}}
{{ end -}}
{{- end -}}
{{- $lazy := eq $loading "lazy" -}}
{{- $priority := .priority -}}
{{- $validPriorities := slice "high" "low" "auto" -}}
{{- if $priority -}}
{{ if not (in $validPriorities $priority) -}}
{{- errorf "partial [assets/image.html] - Invalid value for param 'priority'" -}}
{{ end -}}
{{- end -}}
{{- if eq $priority "auto" }}{{ $priority = "" }}{{ end -}}
{{- define "partials/image-portrait.html" -}}
@@ -137,7 +94,6 @@
{{- return $fallback -}}
{{- end -}}
<!-- Generate a image set of type webp -->
{{- define "partials/image-scaled.html " -}}
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
@@ -198,8 +154,8 @@
{{- $ratio := .ratio -}}
{{- $portrait := .portrait -}}
{{- $url := .url -}}
{{- $outerClass := .outerClass -}}
{{- $innerClass := .innerClass -}}
{{- $wrapper := .wrapper -}}
{{- $class := .class -}}
{{- $title := .title -}}
{{- $caption := .caption -}}
{{- $fallbackURL := "" -}}
@@ -234,7 +190,7 @@
{{- $img := "" -}}
{{ with $res }}
{{ $img = $res.resource }}
{{ if $res.mirror }}{{ $innerClass = printf "%s mirrorred" $innerClass }}{{ end }}
{{ if $res.mirror }}{{ $class = printf "%s mirrorred" $class }}{{ end }}
{{ end }}
{{- if $img -}}
{{- $fallback := partial "partials/image-default.html" (dict "img" $img "ratio" $ratio "portrait" $portrait) -}}
@@ -249,7 +205,7 @@
{{- range $none := $modes -}}
{{- if ne $none $mode -}}
{{- $outerClass = printf "%s d-none-%s" (or $outerClass "") $none -}}
{{- $wrapper = printf "%s d-none-%s" (or $wrapper "") $none -}}
{{- end -}}
{{- end -}}
@@ -268,11 +224,11 @@
{{- end }}
{{- if $caption -}}
<figure {{ with $outerClass }}class="{{ . }}"{{ end }}>
<figure {{ with $wrapper }}class="{{ . }}"{{ end }}>
{{ end }}
<div class="{{ if not $caption }}{{ $outerClass }}{{ end }}">
<div class="{{ if not $caption }}{{ $wrapper }}{{ end }}">
{{- if not $anchor -}}
<img class="img-fluid {{ $innerClass }}"
<img class="img-fluid {{ $class }}"
src="{{ $fallbackURL }}"
{{ if $lazy }}loading="lazy"{{ end }}
{{ with $priority }}fetchpriority="{{ . }}"{{ end }}
@@ -281,7 +237,7 @@
{{ with $width }}width="{{ . }}"{{ end }}
{{ with $title }}alt="{{ . }}"{{ end }}>
{{- else }}
<svg class="{{ $innerClass }}">
<svg class="{{ $class }}">
<use href="{{ $fallbackURL }}#{{ $anchor }}"></use>
</svg>
{{ end }}
@@ -292,14 +248,13 @@
{{- end -}}
{{- end -}}
<!-- Initiate the regular or color-mode image -->
{{ $params := dict }}
{{- $params = merge $params (dict
"ratio" $ratio
"portrait" $portrait
"outerClass" $outerClass
"innerClass" $innerClass
"wrapper" $wrapper
"class" $class
"title" $title
"caption" $caption
"lazy" $lazy

View File

@@ -1,9 +1,20 @@
{{ $destination := .destination }}
{{- if not $destination -}}
{{- errorf "partial [utilities/link.html] - Missing param 'destination'" -}}
{{- end -}}
<!--
Copyright © 2024 The Hinode Team / Mark Dumay. All rights reserved.
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
Visit gethinode.com/license for more details.
-->
{{ $error := false -}}
<!-- Validate arguments -->
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "link" "args" . "group" "partial") }}
{{ errorf "partial [assets/link.html] - Invalid arguments" -}}
{{ $error = true }}
{{ end }}
<!-- Initialize arguments -->
{{ $destination := .destination }}
{{- $error := false -}}
{{- $target := "" -}}
{{- $rel := "" -}}
{{- $case := .case | default true }}
@@ -15,6 +26,7 @@
{{- $text := .text -}}
{{- $class := .class -}}
<!-- Main code -->
{{- if $isExternal -}}
{{- if not $text -}}
{{- $text = (urls.Parse (absURL $destination)).Host -}}
@@ -33,7 +45,7 @@
{{- if strings.Contains $destination "#" }}
{{ $segments := split $destination "#" }}
{{- if ne (len $segments) 2 }}
{{- errorf "partial [utilities/link.html] - Malformed path, expected one anchor '#' only: %s" $destination -}}
{{- errorf "partial [assets/link.html] - Malformed path, expected one anchor '#' only: %s" $destination -}}
{{ else }}
{{- $destination = index $segments 0 -}}
{{- $anchor = index $segments 1 -}}
@@ -42,7 +54,7 @@
{{ $ref := partial "utilities/GetPage.html" (dict "url" $destination "page" $page) }}
{{- if not $ref -}}
{{- errorf "partial [utilities/link.html] - Cannot find page: %s" $destination -}}
{{- errorf "partial [assets/link.html] - Cannot find page: %s" $destination -}}
{{- $error = true -}}
{{- else -}}
{{- $destination = $ref.RelPermalink -}}

View File

@@ -1,17 +1,7 @@
<!--
Displays a list items with a thumbnail alternating between left and right alignment. The partial supports the
following arguments:
"page" Required context of the current page.
"list" Required array of pages.
"title" Optional title of the card group.
"type" Optional type of the tab group, either "tabs", "pills", or "underline".
"vertical" Optional flag to show vertical tabs instead of horizontal tabs (default).
"class": Optional class attribute of the tab group, e.g. “nav-fill”.
In addition, the following arguments are passed to the individual tabs.
"class" Optional class attribute of the tab element, e.g. “w-50”.
"color": Optional theme color of the tab, either "primary", "secondary", "success", "danger",
"warning", "info", "light", "dark", or "body". By default, no color is specified.
Copyright © 2024 The Hinode Team / Mark Dumay. All rights reserved.
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
Visit gethinode.com/license for more details.
-->
<!-- Inline partial to render the list item's content -->
@@ -30,70 +20,66 @@
{{- $mode := .mode -}}
{{- $title := .title -}}
{{- $loading := .loading -}}
{{- partial "assets/image.html" (dict "url" $thumbnail "title" $title "outerClass" $style "mode" $mode "loading" $loading) -}}
{{- partial "assets/image.html" (dict "url" $thumbnail "title" $title "wrapper" $style "mode" $mode "loading" $loading) -}}
{{- end -}}
{{ $error := false }}
<!-- Validate arguments -->
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "list" "args" . "group" "partial") }}
{{- errorf "partial [assets/list.html] - Invalid arguments" -}}
{{ $error = true }}
{{ end }}
<!-- Initialize arguments -->
{{- $page := .page -}}
{{- if ne (printf "%T" $page) "*hugolib.pageState" -}}
{{- errorf "partial [assets/list.html] - Invalid value for param 'page'" -}}
{{- end -}}
{{- $supportedTypes := slice "page.Pages" "resource.Resources" -}}
{{ $list := .list }}
{{- if not (in $supportedTypes (printf "%T" $list)) -}}
{{- errorf "partial [assets/list.html] - Invalid value for param 'list'" -}}
{{- end -}}
{{- $list := .list -}}
{{- $title := .title -}}
{{- $class := .class -}}
{{- $color := .color -}}
{{- $loading := .loading -}}
{{ $vertical := false }}
{{ $type := "pills" }}
{{- $loading := .loading -}}
{{- $validSettings := slice "lazy" "eager" -}}
{{- if $loading -}}
{{ if not (in $validSettings $loading) -}}
{{- errorf "partial [assets/list.html] - Invalid value for param 'loading': %s" $loading -}}
{{ end -}}
{{- end -}}
<div class="d-none d-md-block p-0">
{{- range $index, $item := $list -}}
{{- $odd := eq (mod $index 2) 1 -}}
{{- $thumbnail := (or (and (reflect.IsMap $item.Params.Thumbnail) $item.Params.Thumbnail.url) $item.Params.Thumbnail) -}}
<div class="container ratio-section d-flex flex-column">
<div class="row pt-5 pb-5 align-items-center flex-fill row-cols-2">
<div class="col-6{{ if $odd }} order-last{{ end }}">
{{- $style := "reveal fade-bottom" -}}
{{ if $item.Params.tilted }}
{{- $style = "reveal fade-bottom-n5 rotate-n5 ps-3" -}}
{{- if $odd }}{{ $style = "reveal fade-bottom-5 rotate-5 pe-3" }}{{ end }}
{{ end }}
{{ partial "partials/list-img.html" (dict "thumbnail" $thumbnail "title" $item.Title "style" $style "mode" $item.Params.colormode "loading" $loading) }}
</div>
<div class="col-6{{ if $odd }} order-first{{ end }} psw-lg-5 p-5">
{{ partial "partials/list-content.html" (dict "title" $item.Title "content" (or $item.Description $item.Content)) }}
<!-- Main code -->
{{ if not $error }}
<div class="d-none d-md-block p-0">
{{- range $index, $item := $list -}}
{{- $odd := eq (mod $index 2) 1 -}}
{{- $thumbnail := (or (and (reflect.IsMap $item.Params.Thumbnail) $item.Params.Thumbnail.url) $item.Params.Thumbnail) -}}
<div class="container ratio-section d-flex flex-column">
<div class="row pt-5 pb-5 align-items-center flex-fill row-cols-2">
<div class="col-6{{ if $odd }} order-last{{ end }}">
{{- $style := "reveal fade-bottom" -}}
{{ if $item.Params.tilted }}
{{- $style = "reveal fade-bottom-n5 rotate-n5 ps-3" -}}
{{- if $odd }}{{ $style = "reveal fade-bottom-5 rotate-5 pe-3" }}{{ end }}
{{ end }}
{{ partial "partials/list-img.html" (dict "thumbnail" $thumbnail "title" $item.Title "style" $style "mode" $item.Params.colormode "loading" $loading) }}
</div>
<div class="col-6{{ if $odd }} order-first{{ end }} psw-lg-5 p-5">
{{ partial "partials/list-content.html" (dict "title" $item.Title "content" (or $item.Description $item.Content)) }}
</div>
</div>
</div>
</div>
{{ end -}}
</div>
{{ end -}}
</div>
<div class="d-md-none">
{{- range $index, $item := $list -}}
{{- $odd := eq (mod $index 2) 1 -}}
{{- $thumbnail := (or (and (reflect.IsMap $item.Params.Thumbnail) $item.Params.Thumbnail.url) $item.Params.Thumbnail) -}}
<div class="container d-flex flex-column">
<div class="row pt-5 pb-5 align-items-center flex-fill row-cols-2">
<div class="col-12 text-center">
{{ partial "partials/list-img.html" (dict "thumbnail" $thumbnail "title" $item.Title "mode" $item.Params.colormode "loading" $loading) }}
</div>
<div class="col-12 p-3">
{{ partial "partials/list-content.html" (dict "title" $item.Title "content" (partial "utilities/GetDescription.html" $item)) }}
<div class="d-md-none">
{{- range $index, $item := $list -}}
{{- $odd := eq (mod $index 2) 1 -}}
{{- $thumbnail := (or (and (reflect.IsMap $item.Params.Thumbnail) $item.Params.Thumbnail.url) $item.Params.Thumbnail) -}}
<div class="container d-flex flex-column">
<div class="row pt-5 pb-5 align-items-center flex-fill row-cols-2">
<div class="col-12 text-center">
{{ partial "partials/list-img.html" (dict "thumbnail" $thumbnail "title" $item.Title "mode" $item.Params.colormode "loading" $loading) }}
</div>
<div class="col-12 p-3">
{{ partial "partials/list-content.html" (dict "title" $item.Title "content" (partial "utilities/GetDescription.html" $item)) }}
</div>
</div>
</div>
</div>
{{ end -}}
</div>
{{ end -}}
</div>
{{ end }}

View File

@@ -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).
"class" Optional class attributes to be added to the nav-item.
"fade" Optional flag to make the tab pane fade in.
"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".
Copyright © 2024 The Hinode Team / Mark Dumay. All rights reserved.
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
Visit gethinode.com/license for more details.
-->
{{ $error := false -}}
<!-- Validate arguments -->
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "nav-item" "args" . "group" "partial") }}
{{ errorf "partial [assets/nav-item.html] - Invalid arguments" -}}
{{ $error = true }}
{{ end }}
<!-- Initialize arguments -->
{{- $id := .id -}}
{{- $parentID := .parentID -}}
{{- $class := .class -}}
@@ -23,9 +23,10 @@
{{- $body := .body -}}
{{- $show := .show -}}
{{- $disabled := .disabled -}}
{{- $type := .type -}}
{{- $type := .item_type -}}
{{- $illustration := .illustration -}}
<!-- Main code -->
{{ if eq $type "accordion" }}
<div class="accordion-item{{ if $show }} show{{ end }}{{ with $class }} {{ . }}{{ end }}">
{{- with $header -}}

View File

@@ -1,98 +1,39 @@
<!--
Displays a tab group of multiple items. Each provided page resource is rendered as a tab pane. The shortcode
supports the following arguments:
"page" Required context of the current page.
"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.
Copyright © 2024 The Hinode Team / Mark Dumay. All rights reserved.
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
Visit gethinode.com/license for more details.
-->
{{ $error := false }}
<!-- Validate arguments -->
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "nav" "args" . "group" "partial") }}
{{ errorf "partial [assets/nav.html] - Invalid arguments" -}}
{{ $error = true }}
{{ end }}
<!-- Initialize arguments -->
{{- $page := .page -}}
{{- if ne (printf "%T" $page) "*hugolib.pageState" -}}
{{- errorf "partial [assets/nav.html] - Invalid value for param 'page'" -}}
{{- end -}}
{{- $id := "0" -}}
{{- with .id -}}
{{ $id = . }}
{{ end }}
{{- $supportedTypes := slice "page.Pages" "resource.Resources" -}}
{{- $id := .id | default "0" -}}
{{ $list := .list }}
{{- if not (in $supportedTypes (printf "%T" $list)) -}}
{{- errorf "partial [assets/nav.html] - Invalid value for param 'list'" -}}
{{- 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 -}}
{{ $pane := .pane | default "none" }}
{{ $width := .width | default 100 }}
{{- $title := .title -}}
{{- $class := .class -}}
{{- $color := .color -}}
{{- $wrap := .wrap | default false -}}
{{ $vertical := .vertical | default false }}
{{ $type := .type | default "pills" }}
{{- $loading := .loading | default "eager" -}}
{{ $supportedFlags := slice "true" "false" -}}
{{ $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 -}}
<!-- Main code -->
<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 eq $type "callout" }}
<div class="d-lg-none">
<div id="accordion-{{ $id }}" class="accordion mb-3{{ with $class }} {{ . }}{{ end }} nav-callout">
{{- range $index, $item := $list -}}
{{ partial "assets/nav-item" (dict
{{ partial "assets/nav-item.html" (dict
"id" $index
"parentID" $id
"fade" false
@@ -101,7 +42,7 @@
"body" (or $item.Description $item.Content)
"show" false
"disabled" false
"type" "accordion"
"item_type" "accordion"
"illustration" (partial "utilities/GetIllustration.html" (dict "item" $item "size" "col-12"))
)
}}
@@ -134,7 +75,6 @@
"color" $color
"content" (partial "utilities/GetDescription.html" $item)
"thumbnail" $thumbnail
"loading" $loading
) -}}
{{- else -}}
{{ $illustration := (partial "utilities/GetIllustration.html" (dict "item" $item)) }}

View File

@@ -1,22 +1,37 @@
<!--
Copyright © 2024 The Hinode Team / Mark Dumay. All rights reserved.
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
Visit gethinode.com/license for more details.
-->
{{ $error := false }}
<!-- Validate arguments -->
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "navbar-item" "args" . "group" "partial") }}
{{- errorf "partial [assets/navbar-item.html] - Invalid arguments" -}}
{{ $error = true }}
{{ end }}
<!-- Initialize arguments -->
{{- $page := .page -}}
{{- $menu := .menu -}}
{{- $parent := .parent -}}
{{- $page := .page -}}
{{- $class := .class -}}
{{- $anchorClass := "" -}}
{{- $cue := .cue | default site.Params.main.externalLinks.cue -}}
{{- $tab := .tab | default site.Params.main.externalLinks.tab -}}
{{- $menuURL := (or $menu.PageRef $menu.URL) | relLangURL -}}
{{- $pageURL := $page.RelPermalink | relLangURL -}}
{{- $isActive := or (and (hasPrefix $pageURL $menuURL) (ne $menuURL ("/" | relLangURL))) (eq $pageURL $menuURL) -}}
{{- $isAlias := $menu.Params.alias -}}
{{- $isIcon := $menu.Params.icon -}}
{{- $cue := .cue | default site.Params.main.externalLinks.cue -}}
{{- $tab := .tab | default site.Params.main.externalLinks.tab -}}
{{- $url := urls.Parse $menuURL -}}
{{- $baseURL := urls.Parse $.Site.Params.Baseurl -}}
{{- $isExternal := ne $url.Host $baseURL.Host -}}
{{- $externalHref := "" }}
{{- $suffix := "" }}
{{- $anchorClass := "" -}}
{{- if $isExternal }}
{{- if $tab -}}
@@ -48,18 +63,22 @@
{{- with $childNav }}{{ $params = printf "%s&child=%s" $params . }}{{ end -}}
{{- end -}}
<a class="{{ $anchorClass }}{{ if $isActive }} active{{ end }}{{ with $class }} {{. }}{{ end }}"
{{ if $isIcon }}aria-label="{{ $menu.Name }}"{{ end }}
data-nav="main" data-nav-main="{{ $mainNav }}"{{ with $childNav }} data-nav-child="{{ . }}"{{ end }}
href="{{ $menuURL }}{{ $params | safeHTMLAttr }}"{{ with $externalHref }} {{ . | safeHTMLAttr }}{{ end }} {{ $button | safeHTMLAttr }}>
{{- with $menu.Pre }}
{{ if hasPrefix . "<i" }}
{{ . | safeHTML }}
{{ else }}
{{ partial "assets/icon.html" (dict "icon" . )}}
{{ end }}
{{ end -}}
<span {{ if $isActive }} class="active"{{ end }}>{{ if not $isIcon }}{{ $menu.Name }}{{ end }}</span>
{{- with $menu.Post }}{{ . }}{{ end -}}
{{- if not $isIcon }}&nbsp;{{ $suffix }}{{ end -}}
</a>
<!-- Main code -->
{{ if not $error }}
<a class="{{ $anchorClass }}{{ if $isActive }} active{{ end }}{{ with $class }} {{. }}{{ end }}"
{{ if $isIcon }}aria-label="{{ $menu.Name }}"{{ end }}
data-nav="main" data-nav-main="{{ $mainNav }}"{{ with $childNav }} data-nav-child="{{ . }}"{{ end }}
href="{{ $menuURL }}{{ $params | safeHTMLAttr }}"{{ with $externalHref }} {{ . | safeHTMLAttr }}{{ end }} {{ $button | safeHTMLAttr }}>
{{- with $menu.Pre }}
{{ if hasPrefix . "<i" }}
{{ . | safeHTML }}
{{ else }}
{{ partial "assets/icon.html" (dict "icon" (string .) )}}
{{ end }}
{{ end -}}
<span {{ if $isActive }} class="active"{{ end }}>{{ if not $isIcon }}{{ $menu.Name }}{{ end }}</span>
{{- with $menu.Post }}{{ . }}{{ end -}}
{{- if not $isIcon }}&nbsp;{{ $suffix }}{{ end -}}
</a>
{{ end }}

View File

@@ -1,22 +1,19 @@
<!--
Displays a navigation header with a toggler. The partial supports the following arguments:
"id" Optional 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.
"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.
Copyright © 2024 The Hinode Team / Mark Dumay. All rights reserved.
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
Visit gethinode.com/license for more details.
-->
<!-- TODO: consider to drop style arg -->
{{ $error := false }}
<!-- Validate arguments -->
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "navbar" "args" . "group" "partial") }}
{{ errorf "partial [assets/navbar.html] - Invalid arguments" -}}
{{ $error = true }}
{{ end }}
<!-- Inline partial to render the color mode switcher -->
{{- define "partials/navbar-mode.html" -}}
{{- $size := .size -}}
@@ -97,22 +94,13 @@
</li>
{{- end -}}
<!-- Initialize arguments -->
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
{{- $supportedFlags := slice "true" "false" -}}
{{- $id := printf "navbar-%d" 0 -}}
{{ with .id }}
{{ $id = . }}
{{ end }}
{{- $id := .id | default (printf "navbar-%d" 0) -}}
{{- $page := .page -}}
{{- if not $page -}}
{{- errorf "partial [assets/navbar.html] - Missing value for param 'page'" -}}
{{- end -}}
{{- $defaultMenu := "main" }}
{{- $menuName := $defaultMenu }}
{{- with .menus }}{{ $menuName = . }}{{ end -}}
{{- $defaultMenu := "main" -}}
{{- $menuName := .menus | default $defaultMenu }}
{{- $menus := index site.Menus $menuName -}}
{{- if or (ne (printf "%T" $menus) "navigation.Menu") (ne (index $menus 0).Menu $menuName) -}}
{{- if ne $menuName $defaultMenu }}
@@ -120,51 +108,12 @@
{{- end -}}
{{- end -}}
{{- $size := "md" -}}
{{- with .size }}{{ $size = . }}{{ end -}}
{{- $supportedSizes := slice "xs" "sm" "md" "lg" "xl" -}}
{{- if not (in $supportedSizes $size) -}}
{{- 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 -}}
{{- $size := .size | default "md" -}}
{{- $fixed := .fixed | default false -}}
{{- $color := .color | default "" -}}
{{- $search := .search | default site.Params.navigation.search -}}
{{- $searchModal := and $search site.Params.navigation.searchModal -}}
{{- $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 -}}
{{- $enableDarkMode := .mode | default site.Params.main.enableDarkMode -}}
{{- $enableVersions := false -}}
{{ $list := site.Params.docs.releases }}
@@ -173,15 +122,11 @@
{{ end }}
{{- $enableLanguage := or $page.IsTranslated site.IsMultiLingual -}}
{{- $horizontal := default false site.Params.navigation.horizontal -}}
{{- $logo := site.Params.navigation.logo -}}
{{- $logo := .logo | default site.Params.navigation.logo -}}
{{- $logoLight := "" -}}
{{- $logoDark := "" -}}
{{- with .logo }}
{{ $logo = . }}
{{- end -}}
{{- if $enableDarkMode -}}
{{ $ext := path.Ext $logo -}}
{{- $logoLight = printf "%s-light%s" (strings.TrimSuffix $ext $logo) $ext -}}
@@ -222,6 +167,7 @@
{{- $contrast := false -}}
{{- 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 }}">
{{- 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 }}>

View File

@@ -1,13 +1,25 @@
{{- $page := .page -}}
{{- if not $page -}}
{{- errorf "partial [assets/page-alert.html] - Missing value for param 'page'" -}}
{{- end -}}
<!--
Copyright © 2024 The Hinode Team / Mark Dumay. All rights reserved.
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
Visit gethinode.com/license for more details.
-->
{{ $error := false }}
<!-- Validate arguments -->
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "page-alert" "args" . "group" "partial") }}
{{- errorf "partial [assets/page-alert.html] - Invalid arguments" -}}
{{ $error = true }}
{{ end }}
<!-- Initialize arguments -->
{{- $page := .page -}}
{{- $pageAlertMsg := $page.Scratch.Get "pageAlertMsg" -}}
{{- $pageAlertURL := $page.Scratch.Get "pageAlertURL" -}}
{{- $version := $page.Scratch.Get "version" -}}
{{- if $pageAlertMsg -}}
<!-- Main code -->
{{- if and (not $error) $pageAlertMsg -}}
<div id="page-alert" class="alert alert-primary alert-no-decoration fade show d-flex align-items-center small m-0 py-1" data-page-alert-version="{{ $version }}">
<a href="{{ with $pageAlertURL }}{{ . }}{{ else }}#!{{ end }}" class="text-decoration-none flex-grow-1 text-center">{{ $pageAlertMsg }}</a>
<button id="page-alert-btn-close" type="button" class="btn-close" data-bs-dismiss="alert" aria-label="{{ T "close" }}"></button>

View File

@@ -1,39 +1,19 @@
<!-- Source: https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/pagination.html -->
<!-- Modifications: centered pagination, replaced previous/next with text -->
<!--
Copyright © 2024 The Hinode Team / Mark Dumay. All rights reserved.
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
Visit gethinode.com/license for more details.
{{- $validFormats := slice "default" "terse" }}
This source code adapts the original partial as maintained by the Hugo repository. It introduces the
following modifications:
- Centered the pagination element
- Standardized validation of partial arguments
- Replaced previous / next navigation with text
The original source code is available on:
https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/pagination.html
Copyright 2022 The Hugo Authors. Licensed under the Apache License, Version 2.0.
-->
{{- $msg1 := "When passing a map to the internal pagination template, one of the elements must be named 'page', and it must be set to the context of the current page." }}
{{- $msg2 := "The 'format' specified in the map passed to the internal pagination template is invalid. Valid choices are: %s." }}
{{- $page := . }}
{{- $format := "default" }}
{{- if reflect.IsMap . }}
{{- with .page }}
{{- $page = . }}
{{- else }}
{{- errorf $msg1 }}
{{- end }}
{{- with .format }}
{{- $format = lower . }}
{{- end }}
{{- end }}
{{- if in $validFormats $format }}
{{- if gt $page.Paginator.TotalPages 1 }}
<nav aria-label="{{ T "paginationNav" }}">
<ul class="pagination pagination-{{ $format }} justify-content-center">
{{- partial (printf "partials/inline/pagination/%s" $format) $page }}
</ul>
</nav>
{{- end }}
{{- else }}
{{- errorf $msg2 (delimit $validFormats ", ") }}
{{- end -}}
{{/* Format: default
{{/* --------------------------------------------------------------------- */}}
{{- define "partials/inline/pagination/default" }}
{{- with .Paginator }}
{{- $currentPageNumber := .PageNumber }}
@@ -103,8 +83,6 @@
{{- end }}
{{- end -}}
{{/* Format: terse
{{/* --------------------------------------------------------------------- */}}
{{- define "partials/inline/pagination/terse" }}
{{- with .Paginator }}
{{- $currentPageNumber := .PageNumber }}
@@ -157,3 +135,24 @@
{{- end }}
{{- end }}
{{- end -}}
{{ $error := false }}
<!-- Validate arguments -->
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "pagination" "args" . "group" "partial") }}
{{- errorf "partial [assets/pagination.html] - Invalid arguments" -}}
{{ $error = true }}
{{ end }}
<!-- Initialize arguments -->
{{- $page := .page }}
{{- $format := .format | default "default" }}
<!-- Main code -->
{{- if and (not $error) (gt $page.Paginator.TotalPages 1) }}
<nav aria-label="{{ T "paginationNav" }}">
<ul class="pagination pagination-{{ $format }} justify-content-center">
{{- partial (printf "partials/inline/pagination/%s" $format) $page }}
</ul>
</nav>
{{- end }}

View File

@@ -1,30 +1,18 @@
<!--
Displays a custom persona card. Either specify a valid path, or set the arguments title, href, content, and
thumbnail individually. The latter arguments override any page attributes.
The shortcode supports the following arguments:
"path" Optional path of the page, override with other parameters.
"title" Required title of the card.
"href" Optional address for the button or hyperlink.
"class" Optional class attribute of the card element, e.g. “w-50”.
"color": Optional theme color of the card, either "primary", "secondary", "success", "danger",
"warning", "info", "light", "dark", "white", "black", "body", or "body-tertiary". By default, no
color is specified.
"content" Optional content of the card.
"thumbnail" Optional thumbnail image url, displayed on top or the left of the card.
Copyright © 2024 The Hinode Team / Mark Dumay. All rights reserved.
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
Visit gethinode.com/license for more details.
-->
<!-- Inline partial to render the card's body -->
{{- define "partials/persona-body.html" -}}
{{- $title := .title -}}
{{- $href := .href -}}
{{- $color := .color -}}
{{- $content := .content -}}
<h3>{{ $title }}</h3>
{{ with $content }}<p>{{ . }}</p>{{ end -}}
{{- end -}}
{{ $error := false }}
<!-- Validate arguments -->
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "persona" "args" . "group" "partial") }}
{{ errorf "partial [assets/persona.html] - Invalid arguments" -}}
{{ $error = true }}
{{ end }}
<!-- Initialize arguments -->
{{- $page := "" }}
{{- if .path }}
{{- $page = site.GetPage .path }}
@@ -38,14 +26,7 @@
{{- $content := .content -}}
{{- $thumbnail := .thumbnail -}}
{{- $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 -}}
{{- $color := .color | default "primary" -}}
{{- with $page -}}
{{- if not $title }}{{ $title = .Title }}{{ end -}}
@@ -55,48 +36,68 @@
{{- end -}}
{{- $class := .class -}}
{{- $loading := .loading -}}
{{- $validSettings := slice "lazy" "eager" -}}
{{- if $loading -}}
{{ if not (in $validSettings $loading) -}}
{{- errorf "partial [assets/persona.html] - Invalid value for param 'loading': %s" $loading -}}
{{ end -}}
{{- $tab := site.Params.main.externalLinks.tab -}}
{{- $isExternal := ne (urls.Parse (absURL $href)).Host (urls.Parse site.BaseURL).Host -}}
{{- $target := "" -}}
{{- $rel := "" -}}
{{- if and $isExternal $tab -}}
{{- $target = "_blank" -}}
{{- $rel = "noopener noreferrer" -}}
{{- 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" "innerClass" "rounded-5" "loading" $loading) -}}
{{ end }}
<!-- Inline partial to render the card's body -->
{{- define "partials/persona-body.html" -}}
{{- $title := .title -}}
{{- $content := .content -}}
<h3>{{ $title }}</h3>
{{ 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 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="col-3"></div>
<div class="col-9">
{{- partial "persona-body.html" (dict "title" $title "href" $href "color" $color "content" $content) -}}
<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="col-3"></div>
<div class="col-9">
{{- partial "persona-body.html" (dict "title" $title "content" $content) -}}
</div>
</div>
</div>
</div>
</div>
</div>
<div class="d-md-none">
<div class="persona position-relative row mt-5 align-middle p-3 ptw-5">
<div class="col-12">
<div class="position-absolute top-25 start-50 translate-middle col-6">
{{- if $thumbnail -}}
{{- partial "assets/image.html" (dict "url" $thumbnail "title" $title "ratio" "1x1" "innerClass" "rounded-5" "loading" $loading) -}}
{{ end }}
<div class="d-md-none">
<div class="persona position-relative row mt-5 align-middle p-3 ptw-5">
<div class="col-12">
<div class="position-absolute top-25 start-50 translate-middle col-6">
{{- if $thumbnail -}}
{{- partial "assets/image.html" (dict "url" $thumbnail "title" $title "ratio" "1x1" "class" "rounded-5" "loading" $loading) -}}
{{ end }}
</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="p-5">
{{- partial "persona-body.html" (dict "title" $title "href" $href "color" $color "content" $content) -}}
<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">
{{- partial "persona-body.html" (dict "title" $title "content" $content) -}}
</div>
</div>
</div>
</div>
</div>
{{ if $href }}</a>{{ end }}
{{ end }}

View File

@@ -1,25 +1,23 @@
<!--
Copyright © 2024 The Hinode Team / Mark Dumay. All rights reserved.
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
Visit gethinode.com/license for more details.
-->
{{ $error := false }}
<!-- Validate arguments -->
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "section-header" "args" . "group" "partial") }}
{{- errorf "partial [assets/section-header.html] - Invalid arguments" -}}
{{ $error = true }}
{{ end }}
<!-- Initialize arguments -->
{{- $title := .title -}}
{{- $thumbnail := .thumbnail -}}
{{- $icon := .icon -}}
{{- $sectionHeader := .sectionHeader -}}
{{- $description := .description -}}
{{- $content := .content -}}
{{- define "partials/section-header-img.html" -}}
{{- $title := .title -}}
{{- $thumbnail := .thumbnail -}}
{{- $icon := .icon -}}
{{ $padding := 5 }}
{{- 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) -}}
{{- else if $icon -}}
<div class="text-secondary fw-bold">
{{- partial "assets/icon.html" (dict "icon" (printf "%s fa-10x" $icon)) -}}
</div>
{{- end -}}
{{- end -}}
<!-- Main code -->
{{ with $title }}<p id="{{ anchorize . }}" class="display-4 py-5{{ if and page.IsHome site.Params.home.centerHeadline }} text-center{{ end }}">{{ . }}</p>{{ end }}
{{ with $description }} <p class="lead mb-5">{{ . }}</p>{{ end }}
{{ $content }}

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