Compare commits

...

253 Commits

Author SHA1 Message Date
github-actions[bot]
56eaa9d90b Merge pull request #1105 from gethinode/dependabot/npm_and_yarn/hugo-bin-0.129.2
Bump hugo-bin from 0.129.1 to 0.129.2
2024-08-15 13:42:51 +00:00
dependabot[bot]
492dbbec24 Bump hugo-bin from 0.129.1 to 0.129.2
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.129.1 to 0.129.2.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.129.1...v0.129.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-15 13:38:04 +00:00
Mark Dumay
d2fc5e3433 Merge pull request #1104 from gethinode/develop
Support markdown links
2024-08-15 15:15:30 +02:00
Mark Dumay
b5cc3f6d84 Merge branch 'main' into develop 2024-08-15 14:46:54 +02:00
Mark Dumay
e1e1041c1b Support markdown links
Closes #826
2024-08-15 14:46:10 +02:00
Mark Dumay
e1cac645a7 Merge pull request #1103 from gethinode/develop
Support markdown images
2024-08-15 13:14:35 +02:00
Mark Dumay
d23d533575 Merge branch 'main' into develop 2024-08-15 12:48:56 +02:00
Mark Dumay
d447a4a65a Support markdown images 2024-08-15 12:48:26 +02:00
Mark Dumay
3a466277e3 Merge pull request #1102 from gethinode/develop
Support server-side math rendering using KaTeX
2024-08-15 11:44:50 +02:00
Mark Dumay
2b09ceef93 Merge branch 'main' into develop 2024-08-15 10:22:46 +02:00
Mark Dumay
ee30409257 Support server-side math rendering using KaTeX 2024-08-15 10:22:12 +02:00
Mark Dumay
70583bdb33 Merge pull request #1101 from gethinode/develop
Fix rendering of theme toggle button
2024-08-14 16:57:34 +02:00
Mark Dumay
8e1a299a72 Merge branch 'main' into develop 2024-08-14 16:36:52 +02:00
Mark Dumay
e20aba4907 Improve initial state of theme toggle button 2024-08-14 16:33:04 +02:00
Mark Dumay
1aedf22923 Fix toggle button color in high-contrast mode 2024-08-14 14:47:10 +02:00
Mark Dumay
e77671ffef Merge pull request #1100 from gethinode/develop
Bump required Hugo version
2024-08-14 14:20:09 +02:00
Mark Dumay
433f8ef60d Merge branch 'main' into develop 2024-08-14 14:00:50 +02:00
Mark Dumay
acb261ba69 Bump required Hugo version
Hinode v0.25.5 uses the blockquote template and GitHub-style alerts introduced by Hugo v0.132.0
2024-08-14 13:33:41 +02:00
Mark Dumay
b04b5a136f Merge pull request #1099 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2024-08-14 07:04:31 +02:00
markdumay
953f4ba908 fix: update Hugo module dependencies 2024-08-14 03:06:36 +00:00
Mark Dumay
90e65b5614 Merge pull request #1096 from gethinode/develop
Add link type to release shortcode
2024-08-13 17:17:19 +02:00
Mark Dumay
944437ea4c Merge branch 'main' into develop 2024-08-13 17:07:25 +02:00
Mark Dumay
5d0593bf65 Add link type to release shortcode 2024-08-13 17:06:47 +02:00
Mark Dumay
4935e627f6 Merge pull request #1095 from gethinode/develop
Refine rendering of embedded buttons
2024-08-13 17:03:26 +02:00
Mark Dumay
f7d535d025 Merge branch 'main' into develop 2024-08-13 16:16:38 +02:00
Mark Dumay
67280d6ad0 Refine refining of embedded buttons 2024-08-13 16:16:00 +02:00
Mark Dumay
e21332d016 Merge pull request #1094 from gethinode/develop
Fix inline rendering of buttons
2024-08-13 16:11:20 +02:00
Mark Dumay
f306bc2b22 Merge branch 'main' into develop 2024-08-13 16:04:35 +02:00
github-actions[bot]
475745cc6c Merge pull request #1093 from gethinode/dependabot/npm_and_yarn/hugo-bin-0.129.1
Bump hugo-bin from 0.129.0 to 0.129.1
2024-08-13 14:03:22 +00:00
Mark Dumay
90c43c84e5 Bump package release 2024-08-13 16:00:25 +02:00
Mark Dumay
a81b672731 Fix inline rendering of buttons 2024-08-13 15:59:47 +02:00
dependabot[bot]
b86ec388b6 Bump hugo-bin from 0.129.0 to 0.129.1
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.129.0 to 0.129.1.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.129.0...v0.129.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-13 13:58:21 +00:00
Mark Dumay
5dd0fce394 Merge pull request #1091 from d-oit/main
Save and load the selected language on domain level
2024-08-13 13:48:55 +02:00
Mark Dumay
a66dc2f91c Disable language selection storage in default setup 2024-08-13 13:41:40 +02:00
Mark Dumay
0072292522 Refine layout 2024-08-13 13:39:39 +02:00
Mark Dumay
d3f534629d Restore scheduled updates 2024-08-13 13:35:18 +02:00
Mark Dumay
1407e1ba0d Merge branch 'main' into main 2024-08-13 11:43:29 +02:00
Mark Dumay
b9bce4800c Merge pull request #1092 from gethinode/develop
Support GitHub-style alerts
2024-08-13 11:35:28 +02:00
Mark Dumay
a5a424b6ed Merge branch 'main' into develop 2024-08-13 11:27:50 +02:00
Mark Dumay
9c8b21233c Support GitHub-style alerts
Fixes #1070
2024-08-13 11:27:05 +02:00
Mark Dumay
b564696728 Merge pull request #1090 from gethinode/develop
Bump hugo bin dependency
2024-08-13 10:19:46 +02:00
Mark Dumay
c669c82324 Merge branch 'main' into develop 2024-08-13 10:13:09 +02:00
Mark Dumay
8014f4d636 Bump hugo bin dependency 2024-08-13 10:12:39 +02:00
Mark Dumay
7f80f52294 Merge pull request #1089 from gethinode/develop
Fix color mode behavior of navbar
2024-08-13 10:09:40 +02:00
Mark Dumay
485db3808f Fix linting issue 2024-08-13 10:01:16 +02:00
Mark Dumay
7b10339aea Fix navbar title color in high-contrast mode 2024-08-13 09:43:04 +02:00
Mark Dumay
ed5c32a7a4 Merge branch 'main' into develop 2024-08-13 09:22:08 +02:00
Mark Dumay
c42a379ca0 Fix color mode behavior of navbar
Fixes #1083
2024-08-13 09:21:03 +02:00
Mark Dumay
22c17c3123 Merge pull request #1088 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2024-08-13 07:17:40 +02:00
markdumay
e4f82c1304 fix: update Hugo module dependencies 2024-08-13 03:06:04 +00:00
do
07fa46b9a6 prevent loading twice 2024-08-12 18:39:38 +02:00
github-actions[bot]
809ce0d4ad Merge pull request #1086 from gethinode/dependabot/npm_and_yarn/cssnano-preset-advanced-7.0.5
Bump cssnano-preset-advanced from 7.0.4 to 7.0.5
2024-08-12 13:45:04 +00:00
dependabot[bot]
deb97e0e29 Bump cssnano-preset-advanced from 7.0.4 to 7.0.5
Bumps [cssnano-preset-advanced](https://github.com/cssnano/cssnano) from 7.0.4 to 7.0.5.
- [Release notes](https://github.com/cssnano/cssnano/releases)
- [Commits](https://github.com/cssnano/cssnano/compare/cssnano-preset-advanced@7.0.4...cssnano-preset-advanced@7.0.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-12 13:39:15 +00:00
github-actions[bot]
14a89a2ff9 Merge pull request #1087 from gethinode/dependabot/npm_and_yarn/cssnano-7.0.5
Bump cssnano from 7.0.4 to 7.0.5
2024-08-12 13:38:09 +00:00
dependabot[bot]
81b40d145d Bump cssnano from 7.0.4 to 7.0.5
Bumps [cssnano](https://github.com/cssnano/cssnano) from 7.0.4 to 7.0.5.
- [Release notes](https://github.com/cssnano/cssnano/releases)
- [Commits](https://github.com/cssnano/cssnano/compare/cssnano@7.0.4...cssnano@7.0.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-12 13:33:05 +00:00
Mark Dumay
1dfce3d445 Merge pull request #1085 from gethinode/develop
Reduce screen flickering when using color mode
2024-08-12 15:00:47 +02:00
Mark Dumay
145b2c29d1 Merge branch 'main' into develop 2024-08-12 14:49:36 +02:00
Mark Dumay
77fe046bea Bump package release 2024-08-12 14:48:47 +02:00
Mark Dumay
63250c6ac9 Reduce screen flickering when using color mode 2024-08-12 14:48:21 +02:00
Mark Dumay
54e0f720bd Merge pull request #1082 from gethinode/develop
Fix argument handling
2024-08-11 16:40:44 +02:00
Mark Dumay
423670f95f Merge branch 'main' into develop 2024-08-11 16:34:17 +02:00
Mark Dumay
78560aa07a Bump package release 2024-08-11 16:33:42 +02:00
Mark Dumay
1c6ff7ac55 Fix argument handling 2024-08-11 16:32:56 +02:00
Mark Dumay
eb9b7ea8f0 Include autotitle release 2024-08-11 16:32:29 +02:00
Mark Dumay
753b949af2 Merge pull request #1081 from gethinode/develop
Simplify blockquote specification
2024-08-11 16:06:46 +02:00
Mark Dumay
2322cdcdc0 Merge branch 'main' into develop 2024-08-11 16:00:22 +02:00
Mark Dumay
edc8128395 Simplify blockquote specification 2024-08-11 15:59:39 +02:00
Mark Dumay
cc22f73f5c Merge pull request #1080 from gethinode/develop
Improve handling of unspecified post date
2024-08-11 15:36:16 +02:00
Mark Dumay
8312de35c8 Merge branch 'main' into develop 2024-08-11 15:24:34 +02:00
Mark Dumay
a3a8d7e08c Improve handling of unspecified post date 2024-08-11 15:23:50 +02:00
Mark Dumay
0513692cf5 Merge pull request #1079 from gethinode/develop
Bump Netlify build environment
2024-08-11 13:38:19 +02:00
Mark Dumay
bfa6e00c2f Adjust Dart Sass version 2024-08-11 13:07:17 +02:00
Mark Dumay
c61fa6b4c7 Merge branch 'main' into develop 2024-08-11 12:55:20 +02:00
Mark Dumay
c754451002 Bump Netlify build environment 2024-08-11 12:54:06 +02:00
Mark Dumay
8d4cb82863 Merge pull request #1078 from gethinode/develop
Refactor YouTube shortcode
2024-08-11 12:45:47 +02:00
Mark Dumay
ae18134218 Merge branch 'main' into develop 2024-08-11 12:06:21 +02:00
Mark Dumay
fb20543d88 Refactor YouTube shortcode
Includes the following changes:
 - Add support to retrieve the YouTube title from the video metadata
 - Adjusts autoplay configuration
 - Improve argument handling
2024-08-11 12:05:48 +02:00
Mark Dumay
14d1489b60 Merge pull request #1077 from gethinode/develop
Update node test strategy
2024-08-11 12:05:38 +02:00
Mark Dumay
e99ac83fbc Merge branch 'main' into develop 2024-08-11 11:57:59 +02:00
Mark Dumay
d96b103180 Update node test strategy 2024-08-11 11:57:06 +02:00
Mark Dumay
7f1dc95402 Merge pull request #1076 from gethinode/develop
Fix handling of bool shortcode arguments
2024-08-11 11:55:24 +02:00
Mark Dumay
e3420e357c Merge branch 'main' into develop 2024-08-11 11:49:29 +02:00
Mark Dumay
5ee51ebb18 Fix handling of bool shortcode arguments 2024-08-11 11:38:31 +02:00
Mark Dumay
684ec0f823 Merge pull request #1072 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2024-08-11 07:17:25 +02:00
Dominik Oswald
5335e3d607 Update remove-selected-language.md 2024-08-09 19:46:09 +02:00
Dominik Oswald
3fc51e6158 Update remove-selected-language.md 2024-08-09 19:42:07 +02:00
Dominik Oswald
4a20e8beef fix lint erros 2024-08-09 17:21:44 +02:00
Dominik Oswald
163ac52332 Store and load the selected language 2024-08-09 16:27:07 +02:00
Dominik Oswald
176c5447a8 Merge branch 'gethinode:main' into main 2024-08-09 15:18:33 +02:00
markdumay
1a88fa93bb fix: update Hugo module dependencies 2024-08-08 03:05:46 +00:00
github-actions[bot]
b0d266aedc Merge pull request #1068 from gethinode/dependabot/npm_and_yarn/autoprefixer-10.4.20
Bump autoprefixer from 10.4.19 to 10.4.20
2024-08-05 13:48:58 +00:00
dependabot[bot]
eba81c236a Bump autoprefixer from 10.4.19 to 10.4.20
Bumps [autoprefixer](https://github.com/postcss/autoprefixer) from 10.4.19 to 10.4.20.
- [Release notes](https://github.com/postcss/autoprefixer/releases)
- [Changelog](https://github.com/postcss/autoprefixer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/autoprefixer/compare/10.4.19...10.4.20)

---
updated-dependencies:
- dependency-name: autoprefixer
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-05 13:43:39 +00:00
github-actions[bot]
cdca92ea02 Merge pull request #1067 from gethinode/dependabot/npm_and_yarn/hugo-bin-0.128.0
Bump hugo-bin from 0.127.0 to 0.128.0
2024-08-05 13:42:28 +00:00
dependabot[bot]
a4743aabf5 Bump hugo-bin from 0.127.0 to 0.128.0
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.127.0 to 0.128.0.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.127.0...v0.128.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-05 13:37:01 +00:00
Mark Dumay
cf8465e627 Merge pull request #1066 from gethinode/develop
Fix FlexSearch purge settings
2024-08-02 10:40:15 +02:00
Mark Dumay
86941f05d0 Merge branch 'main' into develop 2024-08-02 10:35:11 +02:00
Mark Dumay
cbb777f524 Fix FlexSearch purge settings 2024-08-02 10:32:38 +02:00
Mark Dumay
d20d00e42f Merge pull request #1065 from gethinode/develop
Support localization of script bundles
2024-08-02 09:55:56 +02:00
Mark Dumay
348981a1a0 Support localization of script bundles 2024-08-02 09:49:10 +02:00
Mark Dumay
0942d79e2c Merge pull request #1062 from gethinode/develop
Bump package release
2024-07-31 14:16:48 +02:00
Mark Dumay
0251bd1838 Merge branch 'main' into develop 2024-07-31 14:10:24 +02:00
Mark Dumay
ae5e240cf1 Bump package release 2024-07-31 14:09:58 +02:00
Mark Dumay
dd127b973a Merge pull request #1061 from gethinode/develop
Optimize image size of scrollable card group
2024-07-31 07:43:59 +02:00
Mark Dumay
63b186a2e5 Merge branch 'main' into develop 2024-07-31 07:13:44 +02:00
github-actions[bot]
bc71ba1d19 Merge pull request #1059 from gethinode/dependabot/npm_and_yarn/hugo-bin-0.127.0
Bump hugo-bin from 0.126.0 to 0.127.0
2024-07-31 04:59:09 +00:00
Mark Dumay
9c3bd970a5 Merge branch 'main' into dependabot/npm_and_yarn/hugo-bin-0.127.0 2024-07-31 06:52:24 +02:00
Mark Dumay
9f143786af Optimize image size of scrollable card group 2024-07-31 06:51:52 +02:00
github-actions[bot]
e8ccada6f3 Merge pull request #1058 from gethinode/dependabot/npm_and_yarn/stylelint-16.8.1
Bump stylelint from 16.7.0 to 16.8.1
2024-07-30 14:07:33 +00:00
dependabot[bot]
a40092b1eb Bump hugo-bin from 0.126.0 to 0.127.0
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.126.0 to 0.127.0.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.126.0...v0.127.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-30 14:01:31 +00:00
dependabot[bot]
00965b5224 Bump stylelint from 16.7.0 to 16.8.1
Bumps [stylelint](https://github.com/stylelint/stylelint) from 16.7.0 to 16.8.1.
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/16.7.0...16.8.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-30 14:01:24 +00:00
Mark Dumay
92dc97d325 Merge pull request #1056 from gethinode/develop
Add anchor support to cards
2024-07-29 17:33:12 +02:00
Mark Dumay
2394f148e5 Merge branch 'main' into develop 2024-07-29 17:11:42 +02:00
Mark Dumay
8d259a3e3a Add anchor support to cards 2024-07-29 17:10:32 +02:00
Mark Dumay
1c8912e92e Merge pull request #1055 from gethinode/develop
Support image crop box placement
2024-07-29 11:05:05 +02:00
Mark Dumay
207c08431f Merge branch 'main' into develop 2024-07-29 08:33:16 +02:00
Mark Dumay
d2703d4885 Support image crop box placement 2024-07-29 08:32:37 +02:00
Mark Dumay
4728191370 Merge pull request #1054 from gethinode/develop
Adjust card title size on small screens
2024-07-28 08:16:23 +02:00
Mark Dumay
cd40d75962 Merge branch 'main' into develop 2024-07-28 08:10:15 +02:00
Mark Dumay
2d4732d03b Adjust card title size on small screens 2024-07-28 08:09:35 +02:00
Mark Dumay
e3c256b41f Merge pull request #1053 from gethinode/develop
Fix priority of card's thumbnail and icon args
2024-07-28 08:07:35 +02:00
Mark Dumay
f0a53f252c Merge branch 'main' into develop 2024-07-27 14:35:48 +02:00
Mark Dumay
a1273d99d5 Fix priority of card's thumbnail and icon args 2024-07-27 14:35:17 +02:00
Mark Dumay
4e62956c82 Merge pull request #1052 from gethinode/develop
Fix layout of scrollable card group
2024-07-27 14:32:52 +02:00
Mark Dumay
cf096a7f6a Merge branch 'main' into develop 2024-07-27 14:13:47 +02:00
Mark Dumay
ee790dc6fd Fix layout of scrollable card group 2024-07-27 14:13:20 +02:00
Mark Dumay
df9bc9ed6c Merge pull request #1050 from gethinode/develop
Adjust main cover style
2024-07-25 07:23:58 +02:00
Mark Dumay
69338b4abf Merge branch 'main' into develop 2024-07-25 07:16:28 +02:00
Mark Dumay
c206054dc8 Adjust main cover style 2024-07-25 07:15:57 +02:00
Mark Dumay
a2bcba5916 Merge pull request #1043 from d-oit/patch-3
Add missing params.opengraph locale for fr_FR, nl_NL
2024-07-25 07:11:26 +02:00
d.o.it
788b68f6bc add missing config for the meta tag og:locale nl + fr 2024-07-24 21:22:43 +02:00
Dominik Oswald
73697f43aa Merge branch 'gethinode:main' into patch-3 2024-07-24 20:27:53 +02:00
Mark Dumay
129df382cd Merge pull request #1048 from gethinode/develop
Add maximized cover style
2024-07-24 16:32:36 +02:00
Mark Dumay
c15eb4edc3 Make style compatible with libsass 2024-07-24 16:27:00 +02:00
Mark Dumay
12725caa1c Merge branch 'main' into develop 2024-07-24 13:39:26 +02:00
Mark Dumay
6077c33fcc Add maximized cover style 2024-07-24 13:38:10 +02:00
Mark Dumay
b944d818c8 Merge pull request #1047 from gethinode/develop
Suppress undefined navbar links
2024-07-23 12:16:34 +02:00
Mark Dumay
f25fbb3440 Merge branch 'main' into develop 2024-07-23 11:55:18 +02:00
Mark Dumay
0b9d43f130 Suppress undefined navbar links 2024-07-23 11:54:47 +02:00
github-actions[bot]
884da31fd0 Merge pull request #1046 from gethinode/dependabot/npm_and_yarn/eslint-plugin-promise-6.6.0
Bump eslint-plugin-promise from 6.4.0 to 6.6.0
2024-07-22 14:03:48 +00:00
dependabot[bot]
6dbfb0ac64 Bump eslint-plugin-promise from 6.4.0 to 6.6.0
Bumps [eslint-plugin-promise](https://github.com/eslint-community/eslint-plugin-promise) from 6.4.0 to 6.6.0.
- [Release notes](https://github.com/eslint-community/eslint-plugin-promise/releases)
- [Changelog](https://github.com/eslint-community/eslint-plugin-promise/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint-community/eslint-plugin-promise/compare/v6.4.0...v6.6.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-22 13:57:31 +00:00
Mark Dumay
3bef9579b4 Merge branch 'main' into patch-3 2024-07-22 11:01:37 +02:00
Mark Dumay
0ea1f92d4c Merge pull request #1039 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2024-07-22 11:01:22 +02:00
Mark Dumay
77d44d44c6 Merge branch 'main' into hugo-mod-dependencies 2024-07-22 10:50:04 +02:00
Mark Dumay
e8c1eac2af Merge pull request #1045 from gethinode/develop
Suppress image container when wrapper class is empty
2024-07-22 10:49:51 +02:00
Mark Dumay
2f992b82cf Merge branch 'main' into develop 2024-07-22 10:44:15 +02:00
Mark Dumay
fe70b24859 Suppress image container when wrapper class is empty 2024-07-22 10:41:52 +02:00
Dominik Oswald
d18f0469fc Add missing params.opengraph locale for fr_FR, nl_NL
Add missing "params.opengraph" > "locale" for fr_FR, nl_NL instead of the default en_US:
<meta property="og:locale" content="en_US" /
2024-07-21 10:05:46 +02:00
markdumay
497c5d0e5e fix: update Hugo module dependencies 2024-07-21 03:05:30 +00:00
Mark Dumay
834435db00 Adjust warning for invalid local url 2024-07-20 07:01:13 +02:00
Mark Dumay
3d8195e24b Merge pull request #1042 from gethinode/develop
Validate local url of menu entries
2024-07-20 06:59:18 +02:00
Mark Dumay
ce31587f22 Merge branch 'main' into develop 2024-07-20 06:52:50 +02:00
Mark Dumay
6342ae1a33 Validate local url of menu entries 2024-07-20 06:51:49 +02:00
Mark Dumay
88eb894fde Merge pull request #1041 from gethinode/develop
Develop
2024-07-18 16:40:26 +02:00
Mark Dumay
8870668c21 Merge branch 'main' into develop 2024-07-18 16:33:40 +02:00
Mark Dumay
cd379fa8d7 Extend card parameters 2024-07-18 16:32:53 +02:00
Mark Dumay
fd029492f7 Fix rendering of scrollable card group 2024-07-18 16:31:45 +02:00
github-actions[bot]
29b0d6f978 Merge pull request #1040 from gethinode/dependabot/npm_and_yarn/hugo-bin-0.126.0
Bump hugo-bin from 0.125.2 to 0.126.0
2024-07-18 13:25:34 +00:00
dependabot[bot]
bed2afe44d Bump hugo-bin from 0.125.2 to 0.126.0
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.125.2 to 0.126.0.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.125.2...v0.126.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-18 13:19:49 +00:00
Dominik Oswald
1922fc825e Update mod-update.yml 2024-07-17 09:53:24 +02:00
Mark Dumay
8c3ea99429 Merge pull request #1038 from gethinode/develop
Fix image portrait mode
2024-07-17 09:53:21 +02:00
Mark Dumay
d8929da5ec Merge branch 'main' into develop 2024-07-17 09:47:48 +02:00
Mark Dumay
4a5e8c7311 Fix image portrait mode 2024-07-17 09:47:18 +02:00
Mark Dumay
600b487f43 Merge pull request #1037 from d-oit/patch-1
Update de.yaml
2024-07-15 06:48:07 +02:00
Dominik Oswald
ed013e9b6f Update de.yaml 2024-07-14 15:44:15 +02:00
Mark Dumay
5a299a73dc Adjust datatable padding 2024-07-14 12:19:45 +02:00
Dominik Oswald
82f3837db1 Delete .github/workflows/hugo.yml 2024-07-13 20:23:42 +02:00
Dominik Oswald
69cf1ccf6c Create hugo.yml 2024-07-13 20:19:42 +02:00
Mark Dumay
bf76ee7108 Merge pull request #1036 from gethinode/develop
Fix purging of data tables styles
2024-07-13 09:13:01 +02:00
Mark Dumay
7a1c3970ea Merge branch 'main' into develop 2024-07-13 09:00:36 +02:00
Mark Dumay
a679b1c7e0 Fix purging of data tables styles 2024-07-13 09:00:03 +02:00
Mark Dumay
bb448f3194 Merge pull request #1035 from gethinode/develop
Fix table parameter initialization
2024-07-13 08:12:16 +02:00
Mark Dumay
b017a0a785 Merge branch 'main' into develop 2024-07-13 08:01:34 +02:00
Mark Dumay
00d141a4da Fix table parameter initialization 2024-07-13 08:00:11 +02:00
github-actions[bot]
88dfc50c50 Merge pull request #1034 from gethinode/dependabot/npm_and_yarn/stylelint-16.7.0
Bump stylelint from 16.6.1 to 16.7.0
2024-07-12 13:44:35 +00:00
dependabot[bot]
61ad1106c5 Bump stylelint from 16.6.1 to 16.7.0
Bumps [stylelint](https://github.com/stylelint/stylelint) from 16.6.1 to 16.7.0.
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/16.6.1...16.7.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-12 13:37:34 +00:00
Mark Dumay
f47d738577 Merge pull request #1033 from gethinode/develop
Fix dark mode of data table paginator
2024-07-12 12:08:53 +02:00
Mark Dumay
323f36a514 Fix dark mode of data table paginator 2024-07-12 11:56:21 +02:00
Mark Dumay
151b1d2230 Merge pull request #1032 from gethinode/develop
Add support for data tables
2024-07-12 11:48:41 +02:00
Mark Dumay
f58f8f1a0a Merge branch 'main' into develop 2024-07-12 11:44:28 +02:00
Mark Dumay
7c786048cc Remove debugging element 2024-07-12 11:43:51 +02:00
Mark Dumay
2c0a34c0e1 Add support for data tables 2024-07-12 11:42:20 +02:00
github-actions[bot]
b6320787e7 Merge pull request #1031 from gethinode/dependabot/npm_and_yarn/rimraf-6.0.1
Bump rimraf from 6.0.0 to 6.0.1
2024-07-11 13:50:56 +00:00
dependabot[bot]
c695e0a1f5 Bump rimraf from 6.0.0 to 6.0.1
Bumps [rimraf](https://github.com/isaacs/rimraf) from 6.0.0 to 6.0.1.
- [Changelog](https://github.com/isaacs/rimraf/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/rimraf/compare/v6.0.0...v6.0.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-11 13:44:56 +00:00
Mark Dumay
8acd6538a5 Merge pull request #1030 from gethinode/develop
Support module dependencies
2024-07-11 09:00:38 +02:00
Mark Dumay
e18bb8f1b2 Support module dependencies 2024-07-11 08:20:19 +02:00
github-actions[bot]
d74f9565e4 Merge pull request #1029 from gethinode/dependabot/npm_and_yarn/rimraf-6.0.0
Bump rimraf from 5.0.8 to 6.0.0
2024-07-09 14:08:02 +00:00
dependabot[bot]
3016267a7b Bump rimraf from 5.0.8 to 6.0.0
Bumps [rimraf](https://github.com/isaacs/rimraf) from 5.0.8 to 6.0.0.
- [Changelog](https://github.com/isaacs/rimraf/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/rimraf/compare/v5.0.8...v6.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-09 14:03:08 +00:00
github-actions[bot]
d1b347b46f Merge pull request #1028 from gethinode/dependabot/npm_and_yarn/rimraf-5.0.8
Bump rimraf from 5.0.7 to 5.0.8
2024-07-08 13:37:12 +00:00
dependabot[bot]
777440ef22 Bump rimraf from 5.0.7 to 5.0.8
Bumps [rimraf](https://github.com/isaacs/rimraf) from 5.0.7 to 5.0.8.
- [Changelog](https://github.com/isaacs/rimraf/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/rimraf/compare/v5.0.7...v5.0.8)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-08 13:31:23 +00:00
github-actions[bot]
f104ff1519 Merge pull request #1027 from gethinode/dependabot/npm_and_yarn/cssnano-preset-advanced-7.0.4
Bump cssnano-preset-advanced from 7.0.3 to 7.0.4
2024-07-05 13:30:17 +00:00
dependabot[bot]
a7a0d26b27 Bump cssnano-preset-advanced from 7.0.3 to 7.0.4
Bumps [cssnano-preset-advanced](https://github.com/cssnano/cssnano) from 7.0.3 to 7.0.4.
- [Release notes](https://github.com/cssnano/cssnano/releases)
- [Commits](https://github.com/cssnano/cssnano/compare/cssnano-preset-advanced@7.0.3...cssnano-preset-advanced@7.0.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-05 13:25:29 +00:00
github-actions[bot]
058cebb0b4 Merge pull request #1026 from gethinode/dependabot/npm_and_yarn/hugo-bin-0.125.2
Bump hugo-bin from 0.125.1 to 0.125.2
2024-07-05 13:24:47 +00:00
dependabot[bot]
af146e3989 Bump hugo-bin from 0.125.1 to 0.125.2
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.125.1 to 0.125.2.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.125.1...v0.125.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-05 13:20:04 +00:00
github-actions[bot]
69c306bb69 Merge pull request #1025 from gethinode/dependabot/npm_and_yarn/cssnano-7.0.4
Bump cssnano from 7.0.3 to 7.0.4
2024-07-05 13:19:21 +00:00
dependabot[bot]
1cfe6190b6 Bump cssnano from 7.0.3 to 7.0.4
Bumps [cssnano](https://github.com/cssnano/cssnano) from 7.0.3 to 7.0.4.
- [Release notes](https://github.com/cssnano/cssnano/releases)
- [Commits](https://github.com/cssnano/cssnano/compare/cssnano@7.0.3...cssnano@7.0.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-05 13:14:05 +00:00
github-actions[bot]
4b40e66534 Merge pull request #1022 from gethinode/dependabot/npm_and_yarn/hugo-bin-0.125.1
Bump hugo-bin from 0.125.0 to 0.125.1
2024-07-03 13:29:25 +00:00
dependabot[bot]
96af9412b3 Bump hugo-bin from 0.125.0 to 0.125.1
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.125.0 to 0.125.1.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.125.0...v0.125.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-03 13:23:55 +00:00
Mark Dumay
1ec9568997 Merge pull request #1021 from gethinode/develop
Add plain argument to navbar-item
2024-07-01 19:10:45 +02:00
Mark Dumay
9a0f907bd4 Merge branch 'main' into develop 2024-07-01 19:03:19 +02:00
Mark Dumay
1d59a914b8 Add plain argument to navbar-item 2024-07-01 19:02:40 +02:00
Mark Dumay
91090aa87e Merge pull request #1020 from gethinode/develop
Add initial support for masonry layout
2024-07-01 18:03:23 +02:00
Mark Dumay
e1a3109a95 Merge branch 'main' into develop 2024-07-01 17:54:46 +02:00
Mark Dumay
c53d653751 Bump package release 2024-07-01 17:54:10 +02:00
Mark Dumay
e95b99a742 Merge pull request #1018 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2024-07-01 16:34:40 +02:00
Mark Dumay
548f1f7107 Merge branch 'main' into hugo-mod-dependencies 2024-07-01 16:17:34 +02:00
Mark Dumay
0a59f1ea2b Add initial support for masonry layout 2024-07-01 16:16:41 +02:00
github-actions[bot]
4b96b405ec Merge pull request #1019 from gethinode/dependabot/npm_and_yarn/eslint-plugin-promise-6.4.0
Bump eslint-plugin-promise from 6.2.0 to 6.4.0
2024-07-01 13:24:46 +00:00
dependabot[bot]
aaa6ced022 Bump eslint-plugin-promise from 6.2.0 to 6.4.0
Bumps [eslint-plugin-promise](https://github.com/eslint-community/eslint-plugin-promise) from 6.2.0 to 6.4.0.
- [Release notes](https://github.com/eslint-community/eslint-plugin-promise/releases)
- [Changelog](https://github.com/eslint-community/eslint-plugin-promise/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint-community/eslint-plugin-promise/compare/v6.2.0...v6.4.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-01 13:19:34 +00:00
markdumay
0582716f19 fix: update Hugo module dependencies 2024-06-29 03:06:03 +00:00
Mark Dumay
71df26f256 Merge pull request #1017 from gethinode/develop
Refine layout of cards with icons
2024-06-28 09:41:28 +02:00
Mark Dumay
8db0f6585e Merge branch 'main' into develop 2024-06-28 09:32:53 +02:00
Mark Dumay
0d703ac531 Refine layout of cards with icons 2024-06-28 09:32:14 +02:00
Mark Dumay
55d73b3fbd Merge pull request #1015 from gethinode/develop
Support navbar buttons and spacing
2024-06-27 17:12:09 +02:00
Mark Dumay
741bff8a8a Fix default navbar alignment 2024-06-27 17:06:01 +02:00
Mark Dumay
f8dcebb14d Merge branch 'main' into develop 2024-06-27 16:53:13 +02:00
Mark Dumay
d054c3e07f Support navbar buttons and spacing 2024-06-27 16:52:48 +02:00
Mark Dumay
c962f93dda Merge pull request #1014 from gethinode/develop
Fix argument handling of card group
2024-06-27 06:49:18 +02:00
Mark Dumay
2bea049d20 Merge branch 'main' into develop 2024-06-27 06:34:33 +02:00
Mark Dumay
407a7b3703 Fix argument handling of card group 2024-06-27 06:34:00 +02:00
Mark Dumay
e57e8d32cb Merge pull request #1013 from gethinode/develop
Enable horizontally scrollable card groups
2024-06-27 06:31:17 +02:00
Mark Dumay
417475643c Merge branch 'main' into develop 2024-06-26 19:23:12 +02:00
Mark Dumay
99801eb90a Enable horizontally scrollable card groups 2024-06-26 19:22:38 +02:00
github-actions[bot]
28a061e4ee Merge pull request #1011 from gethinode/dependabot/npm_and_yarn/replace-in-files-cli-3.0.0
Bump replace-in-files-cli from 2.2.0 to 3.0.0
2024-06-26 14:04:10 +00:00
dependabot[bot]
be776f10a8 Bump replace-in-files-cli from 2.2.0 to 3.0.0
Bumps [replace-in-files-cli](https://github.com/sindresorhus/replace-in-files-cli) from 2.2.0 to 3.0.0.
- [Release notes](https://github.com/sindresorhus/replace-in-files-cli/releases)
- [Commits](https://github.com/sindresorhus/replace-in-files-cli/compare/v2.2.0...v3.0.0)

---
updated-dependencies:
- dependency-name: replace-in-files-cli
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-26 13:58:43 +00:00
github-actions[bot]
57bfea7b71 Merge pull request #1012 from gethinode/dependabot/npm_and_yarn/hugo-bin-0.125.0
Bump hugo-bin from 0.124.0 to 0.125.0
2024-06-26 13:57:54 +00:00
dependabot[bot]
9126df161a Bump hugo-bin from 0.124.0 to 0.125.0
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.124.0 to 0.125.0.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.124.0...v0.125.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-26 13:53:59 +00:00
Mark Dumay
6ced4573b0 Merge pull request #1010 from gethinode/develop
Fix passing of icon rounded arg to card partial
2024-06-23 06:36:24 +02:00
Mark Dumay
be38c8eab7 Merge branch 'main' into develop 2024-06-23 06:20:41 +02:00
Mark Dumay
cab8e0e9f1 Bump package release 2024-06-23 06:02:30 +02:00
Mark Dumay
e1378b9f92 Fix passing of icon rounded arg to card partial 2024-06-23 06:02:00 +02:00
Mark Dumay
23d051e6bc Merge pull request #1009 from gethinode/develop
Support rounding of card icons
2024-06-22 18:59:40 +02:00
Mark Dumay
c3c1b4b246 Merge branch 'main' into develop 2024-06-22 18:52:53 +02:00
Mark Dumay
caa3a2a7c7 Support rounding of card icons 2024-06-22 18:52:27 +02:00
Mark Dumay
f235eb42b6 Merge pull request #1007 from gethinode/develop
Improve vector handling
2024-06-22 12:33:42 +02:00
Mark Dumay
7aae640999 Merge branch 'main' into develop 2024-06-22 12:26:10 +02:00
Mark Dumay
7c606ef48c Bump package release 2024-06-22 12:25:44 +02:00
Mark Dumay
cca70f538c Improve vector handling 2024-06-22 12:24:47 +02:00
Mark Dumay
ac8f0c3e95 Fix handling of missing vector image width 2024-06-22 10:53:59 +02:00
Mark Dumay
7c1a19f6a1 Merge pull request #1006 from gethinode/develop
Disable lighthouse plugin to address high severity vulnerabilities
2024-06-20 20:03:06 +02:00
Mark Dumay
41e02bf064 Merge branch 'main' into develop 2024-06-20 19:56:18 +02:00
Mark Dumay
d8fcae856b Disable lighthouse plugin to address high severity vulnerabilities 2024-06-20 19:55:34 +02:00
Mark Dumay
c4c7f55334 Merge pull request #1005 from gethinode/develop
Fix missing translation of git footer
2024-06-20 19:52:49 +02:00
Mark Dumay
76c10271f3 Merge branch 'main' into develop 2024-06-20 19:43:56 +02:00
Mark Dumay
88a271cf9d Update utils module 2024-06-20 19:43:07 +02:00
Mark Dumay
fb74835018 Fix missing translation of git footer 2024-06-20 19:32:32 +02:00
github-actions[bot]
c801ff0241 Merge pull request #1003 from gethinode/dependabot/npm_and_yarn/cssnano-7.0.3
Bump cssnano from 7.0.2 to 7.0.3
2024-06-19 13:57:42 +00:00
dependabot[bot]
dfc3cd706a Bump cssnano from 7.0.2 to 7.0.3
Bumps [cssnano](https://github.com/cssnano/cssnano) from 7.0.2 to 7.0.3.
- [Release notes](https://github.com/cssnano/cssnano/releases)
- [Commits](https://github.com/cssnano/cssnano/compare/cssnano@7.0.2...cssnano@7.0.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-19 13:51:18 +00:00
github-actions[bot]
95a1a3b860 Merge pull request #1002 from gethinode/dependabot/npm_and_yarn/cssnano-preset-advanced-7.0.3
Bump cssnano-preset-advanced from 7.0.2 to 7.0.3
2024-06-19 13:50:26 +00:00
dependabot[bot]
f5462ca5ba Bump cssnano-preset-advanced from 7.0.2 to 7.0.3
Bumps [cssnano-preset-advanced](https://github.com/cssnano/cssnano) from 7.0.2 to 7.0.3.
- [Release notes](https://github.com/cssnano/cssnano/releases)
- [Commits](https://github.com/cssnano/cssnano/compare/cssnano-preset-advanced@7.0.2...cssnano-preset-advanced@7.0.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-19 13:45:12 +00:00
Mark Dumay
f42722c526 Merge pull request #1000 from gethinode/develop
Add support for subfolder deployment to sidebar
2024-06-19 08:41:53 +02:00
Mark Dumay
4d02900162 Refine base path 2024-06-19 08:30:14 +02:00
Mark Dumay
3ca8bdd0a5 Merge branch 'main' into develop 2024-06-18 07:44:13 +02:00
Mark Dumay
371b054302 Add support for subfolder deployment to sidebar 2024-06-18 07:43:45 +02:00
104 changed files with 1892 additions and 2981 deletions

View File

@@ -1,3 +1,4 @@
assets/js/critical/languageSelector.js
assets/js/critical/color.js
assets/js/analytics.js
assets/js/flexsearch.js

View File

@@ -43,7 +43,7 @@ jobs:
matrix:
os: [macos-latest, windows-latest, ubuntu-latest]
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
node-version: [18.x, 20.x]
node-version: [20.x, 22.x]
runs-on: ${{ matrix.os }}

2
.gitignore vendored
View File

@@ -1,4 +1,4 @@
/_vendor
_vendor/
public/
resources/
node_modules/

View File

@@ -61,32 +61,16 @@
})
window.addEventListener('DOMContentLoaded', () => {
setTheme(getTheme())
const light = (document.documentElement.getAttribute('data-bs-theme') === 'light')
document.querySelectorAll('.ball').forEach(ball => {
ball.classList.add('notransition');
})
document.querySelectorAll('.navbar-mode-selector').forEach(chk => {
chk.checked = light
chk.addEventListener('change', function () {
document.documentElement.setAttribute('data-bs-theme-animate', 'true')
toggleTheme()
})
})
document.querySelectorAll('.ball').forEach(ball => {
ball.offsetHeight; // flush css changes
ball.classList.remove('notransition');
})
})
window.addEventListener('load', () => {
const light = (document.documentElement.getAttribute('data-bs-theme') === 'light')
document.querySelectorAll('.navbar-mode-selector').forEach(chk => {
chk.checked = light
})
});
// initialize theme directly when script is invoked
setTheme(getTheme())
})()
{{- end -}}

View File

@@ -0,0 +1,65 @@
/* eslint-disable */
{{- if site.Params.main.enableLanguageSelectionStorage -}}
(() => {
'use strict'
// Function to get the selected language from localStorage
function getLanguage () {
return localStorage.getItem('selectedLanguage')
}
// Function to set the selected language in localStorage
function setLanguage (language) {
localStorage.setItem('selectedLanguage', language)
}
// Function to apply the selected language to the website
function applyLanguage (language, href) {
if (document.documentElement.lang !== language) {
if (href) {
if (window.location.pathname !== href) {
window.location.href = href
}
} else {
window.location.href = '/' + language + '/'
}
}
}
// Event listener for language selection
document.addEventListener('DOMContentLoaded', () => {
const storedLanguage = getLanguage()
const languageItems = document.querySelectorAll('#language-selector .dropdown-item')
if (languageItems.length > 0) {
// Redirect if the stored language differs from the active language
if ((storedLanguage) && (document.documentElement.lang !== storedLanguage)) {
languageItems.forEach(item => {
if (item.getAttribute('hreflang') === storedLanguage) {
applyLanguage(storedLanguage, item.getAttribute('href'))
}
})
}
// Update the stored language when the user selects a new one
languageItems.forEach(item => {
item.addEventListener('click', () => {
const selectedLanguage = item.getAttribute('hreflang')
if (selectedLanguage) {
setLanguage(selectedLanguage)
}
})
})
}
else {
// Redirect to the localized homepage
const defaultLang = '{{ site.LanguageCode | default site.Language.Lang }}'
let language = storedLanguage ? storedLanguage : defaultLang
window.location.href = '/' + language + '/'
}
})
})()
{{- end -}}
/* eslint-enable */

View File

@@ -11,7 +11,10 @@ function updateNavbar () {
} else {
navbar.classList.remove('nav-active')
const defaultTheme = navbar.getAttribute('data-bs-overlay')
navbar.setAttribute('data-bs-theme', defaultTheme)
if (defaultTheme) {
navbar.setAttribute('data-bs-theme', defaultTheme)
}
}
}

View File

@@ -39,6 +39,8 @@
@import "components/toc.scss";
@import "components/video.scss";
@import "common/animation.scss";
@import "common/masonry.scss";
@import "common/scrollbar.scss";
@import "common/styles.scss";
@import "layouts/reboot.scss";
@import "layouts/type.scss";

View File

@@ -37,6 +37,8 @@
@import "components/toc.scss";
@import "components/video.scss";
@import "common/animation.scss";
@import "common/masonry.scss";
@import "common/scrollbar.scss";
@import "common/styles.scss";
@import "layouts/reboot.scss";
@import "layouts/type.scss";

View File

@@ -0,0 +1,38 @@
.masonry {
--masonry-padding: 4px;
}
.m-row {
display: flex;
flex-wrap: wrap;
padding: 0 var(--masonry-padding);
}
.m-col {
flex: 100%;
max-width: 100%;
padding: 0 var(--masonry-padding);
}
.m-col div {
margin-top: calc(2 * var(--masonry-padding));
border-radius: 5px;
}
$utilities: map-merge(
$utilities,
(
"m-col": (
property: max-width,
responsive: true,
class: m-col,
values: (
1: 100%,
2: 50%,
3: 33.3%,
4: 25%,
5: 20%,
)
)
)
);

View File

@@ -0,0 +1,34 @@
@mixin scrollbar(
$foreground-color: var(--bs-primary),
$background-color: var(--bs-tertiary-bg),
$size: 10px
) {
// For Safari and Chrome (to force appearance in Chrome)
&::-webkit-scrollbar {
width: $size;
height: $size;
}
&::-webkit-scrollbar-thumb {
border-radius: calc($size / 2);
background: $foreground-color;
}
&::-webkit-scrollbar-track {
border-radius: calc($size / 2);
background: $background-color;
}
// Standard version (Firefox, only appears on scroll)
@supports (-moz-appearance:none) {
scrollbar-color: $foreground-color $background-color;
}
}
.scrollbar-horizontal
{
@include scrollbar;
overflow-x: scroll;
margin: auto;
}

View File

@@ -1,5 +1,5 @@
@if $enable-dark-mode {
body {
[data-bs-theme-animate="true"] body {
transition: background-color 0.5s, color 0.5s;
}
}
@@ -146,6 +146,24 @@ $utilities: map-merge(
}
}
.main-cover {
min-height: 100vh;
}
@include media-breakpoint-up(xxl) {
.main-cover {
min-height: calc(min(100vh, 1000px));
}
}
/* stylelint-disable media-feature-range-notation */
@media (min-height: 1400px) {
.main-cover {
min-height: calc(min(100vh, 1000px));
}
}
/* stylelint-enable media-feature-range-notation */
$utilities: map-merge(
$utilities,
(

View File

@@ -1,6 +1,54 @@
.blockquote {
// background: var(--bs-light);
border-left: 0.3rem solid;
border-color: $secondary;
padding: 1rem 1.5rem;
}
.blockquote-alert {
--bs-blockquote-alert-color: $secondary;
border-left: 0.3rem solid;
border-color: var(--bs-blockquote-alert-color);
padding: .5rem 1.5rem;
}
.blockquote-alert > p:nth-of-type(2) {
margin-bottom: 0;
}
.blockquote-alert-heading {
font-weight: bold;
color: var(--bs-blockquote-alert-color);
}
.blockquote-alert-caution {
--bs-blockquote-alert-color: var(--#{$prefix}danger);
}
.blockquote-alert-important {
--bs-blockquote-alert-color: var(--#{$prefix}primary);
}
.blockquote-alert-note {
--bs-blockquote-alert-color: var(--#{$prefix}info);
}
.blockquote-alert-tip {
--bs-blockquote-alert-color: var(--#{$prefix}success);
}
.blockquote-alert-warning {
--bs-blockquote-alert-color: var(--#{$prefix}warning);
}
.blockquote-alert a.btn-link {
--bs-link-color: var(--bs-blockquote-alert-color);
--bs-link-hover-color: color-mix(in srgb, var(--bs-link-color), black 20%);
color: var(--bs-link-color) !important;
&:hover,
&:focus {
color: var(--bs-link-hover-color) !important;
}
}

View File

@@ -44,4 +44,7 @@ a.btn {
.btn-link {
--bs-btn-padding-x: 0;
--bs-btn-padding-y: 0;
margin: 0 !important;
}

View File

@@ -97,3 +97,56 @@
.card-button-link {
text-decoration: underline if($enable-important-utilities, !important, null);
}
// support horizontally scrollable card groups
.card-container-wrapper {
position: relative;
}
div.card-container-wrapper::after {
content: "";
position: absolute;
inset: 0;
height: calc(100% - 2rem);
background: linear-gradient(
90deg,
var(--bs-body-bg) 0%,
transparent 1.5rem,
transparent calc(100% - 1.5rem),
var(--bs-body-bg) 100%
);
pointer-events: none;
}
.card-container {
padding-left: 1.5rem;
padding-right: 1.5rem;
gap: 1.5rem;
margin-bottom: 2rem;
scroll-snap-type: x proximity;
}
.card-block-1 {
width: 80%;
scroll-snap-align: center;
}
.card-block-2 {
width: 40%;
scroll-snap-align: center;
}
.card-block-3 {
width: 27%;
scroll-snap-align: center;
}
.card-block-4 {
width: 20%;
scroll-snap-align: center;
}
.card-block-5 {
width: 16%;
scroll-snap-align: center;
}

View File

@@ -1,11 +1,81 @@
// stylelint-disable annotation-no-unknown
// adapted from https://www.codeply.com/p/UsTEwDkzNp#
.checkbox {
opacity: 0;
position: absolute;
}
.mode-switch {
--#{$prefix}mode-switch-width: 50px;
}
.mode-switch .label {
border-color: var(--#{$prefix}border-color);
border-style: solid;
border-width: 1px;
border-radius: var(--#{$prefix}mode-switch-width);
cursor: pointer;
display: flex;
align-items: center;
justify-content: space-between;
padding: 5px;
position: relative;
height: calc(1px + var(--#{$prefix}mode-switch-width) / 2);
width: var(--#{$prefix}mode-switch-width);
transform: scale(0.9);
}
.notransition {
-webkit-transition: none !important;
-moz-transition: none !important;
-o-transition: none !important;
transition: none !important;
}
.mode-switch .label .ball {
background-color: var(--#{$prefix}border-color);
border-radius: 50%;
position: absolute;
top: 2px;
left: 2px;
height: calc((var(--#{$prefix}mode-switch-width) / 2) - 5px);
width: calc((var(--#{$prefix}mode-switch-width) / 2) - 5px);
transition: transform 0.2s linear;
}
.mode-switch .checkbox:checked + .label .ball {
transform: translateX(calc((var(--#{$prefix}mode-switch-width) / 2) - 1px));
}
@if $enable-dark-mode {
[data-bs-theme="light"] .mode-switch .ball {
transform: translateX(calc((var(--#{$prefix}mode-switch-width) / 2) - 1px));
}
}
.mode-switch .fa-moon {
color: $yellow;
transform: scale(0.8);
}
.mode-switch .fa-sun {
color: var(--#{$prefix}bs-body-color);
transform: scale(0.8);
}
// Source: https://jsfiddle.net/njhgr40m/
@if $enable-dark-mode {
[data-bs-theme-animate="true"] .navbar {
transition: 0.5s ease-in-out;
}
}
.navbar {
--bs-navbar-expanded-color: var(--bs-body-bg);
--bs-navbar-toggler-color: var(--bs-navbar-hover-color);
transition: 0.5s ease-in-out;
background-color: transparent;
@each $state, $val in $theme-colors {
@@ -22,6 +92,15 @@
margin: 0 .15rem;
}
.navbar-title {
display: inline-block;
white-space: normal;
text-align: center !important;
vertical-align: middle;
padding: 0 $spacer;
width: 100% !important;
}
.navbar-contrast .nav-link.active, .navbar-contrast .nav-link.show, .navbar-contrast .nav-link:hover {
border-bottom: solid 1px var(--bs-navbar-hover-color);
margin-bottom: -1px;
@@ -33,6 +112,16 @@
--bs-navbar-disabled-color: white !important;
--bs-navbar-active-color: white !important;
--bs-navbar-toggler-color: white;
.navbar-title, .mode-switch {
--#{$prefix}border-color: white;
color: white !important;
}
.mode-switch .fa-moon {
color: $white;
}
}
.navbar-expanded {
@@ -112,7 +201,7 @@
background-color: var(--bs-navbar-toggler-color);
}
.emphasis, .emphasis-dark, .emphasis-light {
.emphasis {
background-color: var(--bs-navbar-toggler-color);
}
@@ -133,15 +222,6 @@
--navbar-offset: #{$navbar-offset-xs};
}
.navbar-title {
display: inline-block;
white-space: normal;
text-align: center !important;
vertical-align: middle;
padding: 0 $spacer;
width: 100% !important;
}
.navbar-container {
width: 100% !important;
}
@@ -235,60 +315,3 @@
}
}
// adapted from https://www.codeply.com/p/UsTEwDkzNp#
.checkbox {
opacity: 0;
position: absolute;
}
.mode-switch {
--#{$prefix}mode-switch-width: 50px;
}
.mode-switch .label {
border-color: var(--#{$prefix}border-color);
border-style: solid;
border-width: 1px;
border-radius: var(--#{$prefix}mode-switch-width);
cursor: pointer;
display: flex;
align-items: center;
justify-content: space-between;
padding: 5px;
position: relative;
height: calc(1px + var(--#{$prefix}mode-switch-width) / 2);
width: var(--#{$prefix}mode-switch-width);
transform: scale(0.9);
}
.notransition {
-webkit-transition: none !important;
-moz-transition: none !important;
-o-transition: none !important;
transition: none !important;
}
.mode-switch .label .ball {
background-color: var(--#{$prefix}secondary-bg);
border-radius: 50%;
position: absolute;
top: 2px;
left: 2px;
height: calc((var(--#{$prefix}mode-switch-width) / 2) - 5px);
width: calc((var(--#{$prefix}mode-switch-width) / 2) - 5px);
transition: transform 0.2s linear;
}
.mode-switch .checkbox:checked + .label .ball {
transform: translateX(calc((var(--#{$prefix}mode-switch-width) / 2) - 1px));
}
.mode-switch .fa-moon {
color: $yellow;
transform: scale(0.8);
}
.mode-switch .fa-sun {
color: var(--#{$prefix}bs-body-color);
transform: scale(0.8);
}

View File

@@ -1,3 +1,16 @@
.datatable-container {
border-bottom: none if($enable-important-utilities, !important, null);
}
.datatable-bottom {
padding-top: 0 if($enable-important-utilities, !important, null);
}
.datatable-sorter {
padding-left: 0;
padding-right: 1rem;
}
@if $enable-dark-mode {
@include color-mode(dark) {
.table-striped, .table-striped-columns {
@@ -9,5 +22,13 @@
--bs-table-hover-bg: var(--bs-tertiary-bg);
--bs-table-striped-color: var(--bs-body-color);
}
.datatable-pagination-list-item {
&:hover,
&:focus,
&.datatable-active {
color: var(--bs-body-bg) !important;
}
}
}
}

View File

@@ -95,7 +95,7 @@ home = ["HTML", "RSS", "REDIR"]
[module]
[module.hugoVersion]
extended = true
min = "0.120.0"
min = "0.132.0"
max = ""
[[module.mounts]]
source = "archetypes"
@@ -125,7 +125,7 @@ home = ["HTML", "RSS", "REDIR"]
[[module.imports]]
path = "github.com/gethinode/mod-bootstrap"
[[module.imports]]
path = "github.com/gethinode/mod-flexsearch"
path = "github.com/gethinode/mod-flexsearch/v2"
[[module.imports]]
path = "github.com/gethinode/mod-fontawesome"
[[module.imports]]
@@ -134,6 +134,8 @@ 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-simple-datatables"
[[module.imports]]
path = "github.com/gethinode/mod-utils/v2"
# toml-docs-end modules

View File

@@ -24,9 +24,15 @@ defaultMarkdownHandler = "goldmark"
table = true
taskList = true
typographer = true
[goldmark.extensions.passthrough]
enable = true
[goldmark.extensions.passthrough.delimiters]
block = [['\[', '\]'], ['$$', '$$']]
inline = [['\(', '\)'], ['$', '$']]
[goldmark.parser]
autoHeadingID = true
autoHeadingIDType = 'github'
wrapStandAloneImageWithinParagraph = false
[goldmark.parser.attribute]
block = true
[goldmark.renderer]

View File

@@ -3,6 +3,7 @@
separator = "-"
description = "Hinode is a clean documentation and blog theme for your Hugo site based on Bootstrap 5."
enableDarkMode = true
enableLanguageSelectionStorage = false
modes = ["light", "dark"]
canonifyAssetsURLs = false
endorse = true

View File

@@ -24,9 +24,10 @@ const purgecss = require('@fullhuman/postcss-purgecss')({
'./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',
'./_vendor/github.com/gethinode/mod-flexsearch/v2/assets/scss/modules/flexsearch/flexsearch.scss',
'./_vendor/github.com/gethinode/mod-katex/dist/katex.scss',
'./_vendor/github.com/gethinode/mod-leaflet/dist/leaflet.scss',
'./_vendor/github.com/gethinode/mod-simple-datatables/dist/simple-datatables.scss',
'./_vendor/github.com/twbs/bootstrap/scss/_carousel.scss',
'./_vendor/github.com/twbs/bootstrap/scss/_dropdown.scss',
'./_vendor/github.com/twbs/bootstrap/scss/_modal.scss',

View File

@@ -92,7 +92,8 @@ arguments:
type: bool
optional: true
comment: >-
Flag to indicate a horizontal line should be added between items on small screens.
Flag to indicate a horizontal line should be added between items on small
screens.
wrapper:
type: string
optional: true
@@ -102,7 +103,8 @@ arguments:
type: bool
optional: true
comment: >-
Flag indicating if the number of columns should be responsive, defaults to `true`.
Flag indicating if the number of columns should be responsive, defaults to
`true`.
buttonType:
type: select
optional: true
@@ -113,6 +115,20 @@ arguments:
values:
- link
- button
scroll:
type: bool
optional: true
comment: >-
Enables horizontal scrolling of the cards. By default, the card group
wraps any cards beyond the amount of defined columns to a new line. When
`scroll` is set to true, a horizontal scroll bar is added instead.
spacer:
type: bool
optional: true
comment: >-
Inserts a spacer before the card.
release: v0.24.16
group: partial
hook:
type: string
optional: true

View File

@@ -90,6 +90,18 @@ arguments:
- publication
- tags
- none
body:
type: select
optional: true
default: full
parent: cascade
release: v0.24.16
comment: >-
Body of the card.
options:
values:
- full
- none
footer:
type: select
optional: true
@@ -146,6 +158,16 @@ arguments:
- 16x9
- 21x9
group: partial
portrait:
type: bool
parent: cascade
optional: true
default: false
release: v0.24.16
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.
alt:
type: string
optional: true
@@ -157,6 +179,12 @@ arguments:
optional: true
comment: >-
Font Awesome icon, displayed on top or the left of the card.
iconRounded:
type: bool
parent: cascade
optional: true
release: v0.24.8
comment: Stack the icon in a round container.
align:
type: select
parent: cascade
@@ -169,6 +197,19 @@ arguments:
- start
- end
- center
scroll:
type: bool
parent: cascade
optional: true
group: partial
comment: >-
Enables horizontal scrolling of the cards. By default, the card group
wraps any cards beyond the amount of defined columns to a new line. When
`scroll` is set to true, a horizontal scroll bar is added instead.
wrapper:
type: string
optional: true
comment: Element class of the card wrapper.
style:
type: string
parent: cascade
@@ -230,6 +271,25 @@ arguments:
One or more strings separated by commas, indicating the source sizes of an
image set.
group: partial
anchor:
type: select
optional: true
comment:
Anchor of the thumbnail's crop box, defaults to anchor value set in
`imaging` section of the site configuration (usually `Smart`).
options:
values:
- TopLeft
- Top
- TopRight
- Left
- Center
- Right
- BottomLeft
- Bottom
- BottomRight
- Smart
release: v0.24.23
body:
optional: true
comment: >-

View File

@@ -60,3 +60,20 @@ arguments:
type: int
optional: false
comment: Width of the image in pixels.
anchor:
type: select
optional: true
comment: Anchor of the crop box.
options:
values:
- TopLeft
- Top
- TopRight
- Left
- Center
- Right
- BottomLeft
- Bottom
- BottomRight
- Smart

View File

@@ -36,6 +36,7 @@ arguments:
page:
type:
- '*hugolib.pageState'
- '*hugolib.pageForRenderHooks'
- '*hugolib.pageForShortcode'
optional: true
comment: Page context, used to match page resources.
@@ -109,7 +110,9 @@ arguments:
image set.
group: partial
title:
type: string
type:
- string
- 'hstring.RenderedString'
optional: true
comment: Alternate text of the image.
caption:
@@ -138,3 +141,22 @@ arguments:
Flag to indicate if the image should render a plain image instead of an
image set. When set, no transformations are applied to the image.
release: v0.24.0
anchor:
type: select
optional: true
comment:
Anchor of the crop box, defaults to anchor value set in `imaging` section
of the site configuration (usually `Smart`).
options:
values:
- TopLeft
- Top
- TopRight
- Left
- Center
- Right
- BottomLeft
- Bottom
- BottomRight
- Smart
release: v0.24.22

View File

@@ -10,6 +10,7 @@ arguments:
page:
type:
- '*hugolib.pageState'
- '*hugolib.pageForRenderHooks'
- '*hugolib.pageForShortcode'
optional: false
group: partial
@@ -70,11 +71,17 @@ arguments:
type:
- string
- template.HTML
- hstring.RenderedString
optional: true
group: partial
comment: Link description.
title:
type: string
optional: true
comment: Link title.
release: v0.26.0
body:
type: string
optional: true
group: shortcode
comment: Link title.
comment: Link description.

View File

@@ -32,3 +32,8 @@ arguments:
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.
plain:
type: bool
optional: true
comment: >-
Renders the navigation item as plain item, ignoring any children.

View File

@@ -38,3 +38,12 @@ arguments:
optional: true
default: false
comment: Flag to render the release button inline.
type:
type: select
optional: true
default: button
comment: Type of the element.
options:
values:
- link
- button

View File

@@ -0,0 +1,69 @@
comment: >-
Bundles a JavaScript file for client-side processing. Scripts can be included
as critical, core, or optional file.
arguments:
page:
type:
- '*hugolib.pageState'
- '*hugolib.pageForShortcode'
optional: false
comment: Context of the current page.
core:
type: bool
default: false
optional: true
comment: >-
Trigger to include all core files in the script bundle. Core bundles are
loaded asynchronously in each page of the site.
filename:
type: string
default: js/main.bundle.js
optional: true
comment: >-
Path of the target bundle file, relative to the site root.
match:
type: string
default: {js/*.js,js/vendor/**.js}
optional: true
comment: >-
Regular expression that defines the pattern of source files to be included
in the bundle. The pattern is relative to the project's `asset` folder.
header:
type: bool
default: false
comment: >-
Trigger to consider the script as loaded in the page header. When enabled,
it includes a script to load Google Analytics adjacent to any bundle
input.
localize:
type: bool
default: false
optional: true
comment: >-
Triggers the creation of a language-specific bundle file. The language
code is appended as suffix to the base name. For example, the English
version of `js/main.bundle.js` becomes `js/main.bundle.en.js`.
skipTemplate:
type: bool
default: false
optional: true
comment: >-
Script source input can contain Go Template magic. As such, Hinode
processes all input files with `resources.ExecuteAsTemplate`. However,
certain input files may be incompatible. Set `skipTemplate` to true to
skip template processing.
state:
type: select
optional: true
default: async
comment: >-
Defines the loading behavior of the script bundle. By default, scripts are
processed in the background and loaded when ready (`async`). Set the state
to `immediate` to load the script immediately (such as critical scripts).
Use 'defer' to load the script in relative order when the DOM is fully
built.
options:
values:
- async
- defer
- immediate

View File

@@ -1,6 +1,7 @@
comment: >-
Makes a markdown table responsive. Responsive tables scroll horizontally to
improve their layout on smaller screens.
improve their layout on smaller screens. To features `sortable`, `paging`,
and `searchable` require the module `simple-datatables`.
arguments:
breakpoint:
type: select
@@ -24,6 +25,21 @@ arguments:
type: string
optional: true
comment: Class attribute of the table element, e.g. `table-striped-columns w-auto`.
sortable:
type: bool
optional: true
comment: Toggle the ability to sort the columns.
release: v0.24.13
paging:
type: bool
optional: true
comment: Whether paging is enabled for the table.
release: v0.24.13
searchable:
type: bool
optional: true
comment: Toggle the ability to search the dataset.
release: v0.24.13
body:
type: string
optional: false

View File

@@ -23,4 +23,13 @@ arguments:
type: bool
optional: true
default: false
comment: Flag indicating the video should start playing immediately when loaded.
comment: >-
Flag indicating the video should start playing immediately when loaded, if
supported by the browser. The audio will be muted.
autotitle:
type: bool
optional: true
default: false
release: v0.25.2
comment: >-
Trigger to retrieve the title from the video metadata.

View File

@@ -1,4 +1,5 @@
/_vendor
_vendor/
exampleSite/public/
public/
resources/

View File

@@ -22,6 +22,8 @@ reference = "More Projects"
languageName = "Nederlands"
contentDir = "content/nl"
weight = 2
[nl.params.opengraph]
locale = "nl_NL"
[nl.params.head]
tagline = "Een Hugo Thema"
[nl.params.social]
@@ -39,6 +41,8 @@ reference = "Meer projecten"
languageName = "Français"
contentDir = "content/fr"
weight = 2
[fr.params.opengraph]
locale = "fr_FR"
[fr.params.head]
tagline = "Un thème Hugo"
[fr.params.social]

View File

@@ -24,9 +24,15 @@ defaultMarkdownHandler = "goldmark"
table = true
taskList = true
typographer = true
[goldmark.extensions.passthrough]
enable = true
[goldmark.extensions.passthrough.delimiters]
block = [['\[', '\]'], ['$$', '$$']]
inline = [['\(', '\)'], ['$', '$']]
[goldmark.parser]
autoHeadingID = true
autoHeadingIDType = 'github'
wrapStandAloneImageWithinParagraph = false
[goldmark.parser.attribute]
block = true
[goldmark.renderer]

View File

@@ -2,6 +2,7 @@
separator = "-"
description = "Hinode is a clean documentation and blog theme for your Hugo site based on Bootstrap 5."
enableDarkMode = true
enableLanguageSelectionStorage = true
modes = ["light", "dark"]
canonifyAssetsURLs = false
footerBelowFold = false

View File

@@ -24,7 +24,7 @@ const purgecss = require('@fullhuman/postcss-purgecss')({
'./_vendor/github.com/gethinode/hinode/assets/scss/components/_video.scss',
'./_vendor/github.com/gethinode/hinode/assets/scss/theme/fonts.scss',
'./_vendor/github.com/gethinode/hinode/assets/scss/theme/theme.scss',
'./_vendor/github.com/gethinode/mod-flexsearch/assets/scss/modules/flexsearch/flexsearch.scss',
'./_vendor/github.com/gethinode/mod-flexsearch/v2/assets/scss/modules/flexsearch/flexsearch.scss',
'./_vendor/github.com/gethinode/mod-katex/dist/katex.scss',
'./_vendor/github.com/gethinode/mod-leaflet/dist/leaflet.scss',
'./_vendor/github.com/twbs/bootstrap/scss/_carousel.scss',

View File

@@ -27,6 +27,6 @@ Additional features include:
* Reusable Bootstrap components through configurable shortcodes and partials
* Versioned documentation, including sidebar navigation and version switcher
* Responsive 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" >}})
* 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" %}})
{.tickmark}

View File

@@ -12,7 +12,7 @@ thumbnail:
originURL: https://unsplash.com/photos/QLPWQvHvmII
---
Hinode provides several shortcodes that wrap common Bootstrap components. Refer to the [official documentation]({{< param "links.hinode_docs" >}}) for more details.
Hinode provides several shortcodes that wrap common Bootstrap components. Refer to the [official documentation]({{% param "links.hinode_docs" %}}) for more details.
## Abbr
@@ -121,7 +121,7 @@ As an example, the following shortcode displays a group of three buttons.
## Card
As an example, the following shortcode displays a stacked card that links to the [about]({{< ref "about" >}}) page. It includes a custom header.
As an example, the following shortcode displays a stacked card that links to the [about]({{% ref "about" %}}) page. It includes a custom header.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
@@ -136,7 +136,7 @@ As an example, the following shortcode displays a card group of three elements.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* card-group padding="3" gutter="3" button=true buttonType="link" */>}}
{{</* card-group padding="3" gutter="3" button=true buttonType="link" cols=2 scroll=true */>}}
{{</* card title="Bootstrap framework" icon="fab bootstrap" */>}}
Build fast, responsive sites with Bootstrap 5. Easily customize your site with the source
Sass files.
@@ -255,14 +255,22 @@ As an example, the following shortcodes show a square check, a brand logo, a cir
## Image
As an example, the following shortcode displays an image with rounded corners and a 21x9 aspect ratio.
As an example, the following shortcode displays an image with rounded corners and a 4x3 aspect ratio in portrait mode.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* image src="img/flowers.jpg" ratio="21x9" caption="Figure caption" class="rounded" */>}}
{{</* image src="img/flowers.jpg" ratio="4x3" caption="Figure caption" class="rounded col-md-6"
portrait=true wrapper="text-center" */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
The same image, but then using Markdown syntax:
{{< example lang="hugo" >}}
![Flowers](/img/flowers.jpg "Figure caption")
{class="rounded col-md-6" ratio="4x3" portrait=true wrapper="text-center"}
{{< /example >}}
As an example, the following shortcode displays a regular vector image.
<!-- markdownlint-disable MD037 -->
@@ -465,3 +473,13 @@ As an example, the following shortcode displays a tooltip for a colored hyperlin
{{</* tooltip color="primary" title="Tooltip caption" href="#!" */>}}Tooltip{{</* /tooltip */>}} demonstration
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Youtube
As an example, the following shortcode displays a Hugo quickstart guide.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* youtube id="w7Ft2ymGmfc" autoplay=true autotitle=true */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->

View File

@@ -10,10 +10,10 @@ thumbnail:
authorURL: https://unsplash.com/@ryoji__iwata
origin: Unsplash
originURL: https://unsplash.com/photos/5siQcvSxCP8
modules: ["katex", "leaflet", "lottie"]
modules: ["leaflet", "lottie", "simple-datatables"]
---
Hinode provides several shortcodes on top of the common [Bootstrap elements]({{< relref "bootstrap-elements" >}}). Refer to the [official documentation]({{< param "links.hinode_docs" >}}) for more details.
Hinode provides several shortcodes on top of the common [Bootstrap elements]({{% relref "bootstrap-elements" %}}). Refer to the [official documentation]({{% param "links.hinode_docs" %}}) for more details.
## Animation
@@ -25,9 +25,52 @@ As an example, the following shortcode shows an animation that plays on hover.
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Data tables
As an example, the following shortcode displays a responsive table that uses advanced controls.
<!-- markdownlint-disable MD037 -->
{{< example lang="markdown" >}}
{{</* table sortable="true" paging="true" searchable="true" */>}}
| # | Heading |
|-----|---------|
| 1. | Item 1 |
| 2. | Item 2 |
| 3. | Item 3 |
| 4. | Item 4 |
| 5. | Item 5 |
| 6. | Item 6 |
| 7. | Item 7 |
| 8. | Item 8 |
| 9. | Item 9 |
| 10. | Item 10 |
| 11. | Item 11 |
| 12. | Item 12 |
| 13. | Item 13 |
| 14. | Item 14 |
| 15. | Item 15 |
| 16. | Item 16 |
| 17. | Item 17 |
| 18. | Item 18 |
| 19. | Item 19 |
| 20. | Item 20 |
| 21. | Item 21 |
| 22. | Item 22 |
| 23. | Item 23 |
| 24. | Item 24 |
| 25. | Item 25 |
| 26. | Item 26 |
| 27. | Item 27 |
| 28. | Item 28 |
| 29. | Item 29 |
| 30. | Item 30 |
{{</* /table */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Formula (KaTeX)
As an example, the following markdown renders two formulas using the KaTeX typesetting library.
As an example, the following markdown renders two formulas using server-side math rendering using KaTeX.
{{< example lang="markdown" >}}
This is an inline $-b \pm \sqrt{b^2 - 4ac} \over 2a$ formula

View File

@@ -26,7 +26,7 @@ As an example, the following shortcode displays an image with rounded corners an
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* image src="https://ik.imagekit.io/demo/default-image.jpg"
ratio="21x9" caption="ImageKit.io image" class="rounded" */>}}
ratio="21x9" caption="ImageKit.io image" class="rounded" anchor="Center" */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
@@ -37,6 +37,6 @@ As an example, the following shortcode displays an image with rounded corners an
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* image src="https://assets.imgix.net/examples/bluehat.jpg"
ratio="21x9" caption="imgix image" class="rounded" */>}}
ratio="21x9" caption="imgix image" class="rounded" anchor="Top" */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->

View File

@@ -28,6 +28,6 @@ Les fonctionnalités supplémentaires incluent:
- Composants bootstrap réutilisables à travers des codes et partiels configurables
- Documentation versionnée, incluant une navigation latérale et un sélecteur de version.
- 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" >}})
- 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" %}})
{.tickmark}

View File

@@ -13,7 +13,7 @@ thumbnail:
originURL: https://unsplash.com/photos/QLPWQvHvmII
---
Hinode propose plusieurs shortcodes qui enveloppent des composants Bootstrap courants. Consultez la [documentation officielle]({{< param "links.hinode_docs" >}}) pour plus de détails.
Hinode propose plusieurs shortcodes qui enveloppent des composants Bootstrap courants. Consultez la [documentation officielle]({{% param "links.hinode_docs" %}}) pour plus de détails.
## Abbr
@@ -121,7 +121,7 @@ En-tête 6 {{</* badge title="Nouveau" */>}}
## Carte
À titre d'exemple, le shortcode suivant affiche une carte empilée qui renvoie à la page [à propos]({{< ref "about" >}}). Elle inclut un en-tête personnalisé.
À titre d'exemple, le shortcode suivant affiche une carte empilée qui renvoie à la page [à propos]({{% ref "about" %}}). Elle inclut un en-tête personnalisé.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}

View File

@@ -14,7 +14,7 @@ thumbnail:
modules: ["katex", "leaflet", "lottie"]
---
Hinode propose plusieurs shortcodes en plus des [éléments Bootstrap]({{< relref "bootstrap-elements" >}}) courants. Consultez la [documentation officielle]({{< param "links.hinode_docs" >}}) pour plus de détails.
Hinode propose plusieurs shortcodes en plus des [éléments Bootstrap]({{% relref "bootstrap-elements" %}}) courants. Consultez la [documentation officielle]({{% param "links.hinode_docs" %}}) pour plus de détails.
## Animation

View File

@@ -29,6 +29,6 @@ Overige functies:
* Herbruikbare Bootstrap componenten via shortcodes en partials
* Versiebeheer van documentatiepagina's, inclusief secundaire navigatie en selectie van versies
* 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" >}})
* 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" %}})
{.tickmark}

View File

@@ -3,8 +3,8 @@
"tags": [
"a",
"abbr",
"annotation",
"body",
"br",
"button",
"code",
"div",
@@ -20,13 +20,24 @@
"hr",
"html",
"i",
"iframe",
"img",
"input",
"label",
"li",
"link",
"mark",
"math",
"meta",
"mfrac",
"mi",
"mn",
"mo",
"mrow",
"mspace",
"msqrt",
"msub",
"msup",
"nav",
"noscript",
"ol",
@@ -34,6 +45,7 @@
"path",
"pre",
"script",
"semantics",
"small",
"span",
"strong",
@@ -103,11 +115,14 @@
"btn-sm",
"btn-social",
"card",
"card-block-2",
"card-body",
"card-body-link",
"card-body-margin",
"card-button",
"card-button-link",
"card-container",
"card-container-wrapper",
"card-emphasize",
"card-icon",
"card-img-bg",
@@ -134,22 +149,24 @@
"col-3",
"col-4",
"col-6",
"col-8",
"col-9",
"col-auto",
"col-lg-2",
"col-lg-4",
"col-lg-8",
"col-md-10",
"col-md-2",
"col-md-3",
"col-md-4",
"col-md-6",
"col-md-8",
"col-md-9",
"col-md-auto",
"col-sm-12",
"col-sm-3",
"col-sm-6",
"col-sm-9",
"col-xl-10",
"col-xl-2",
"collapse",
"collapsed",
"container",
@@ -170,6 +187,7 @@
"d-none-light",
"d-sm-block",
"d-sm-none",
"data-table",
"display-1",
"display-4",
"dropdown",
@@ -179,7 +197,6 @@
"dropdown-menu-end",
"dropdown-toggle",
"emphasis",
"emphasis-dark",
"end-0",
"fa",
"fa-10x",
@@ -225,12 +242,15 @@
"flex-fill",
"flex-grow-1",
"flex-md-grow-0",
"flex-nowrap",
"flex-row",
"font-monospace",
"footer",
"form-control",
"fs-3",
"fs-5",
"fs-6",
"fs-lg-5",
"fs-md-5",
"fw-30",
"fw-bold",
@@ -259,6 +279,7 @@
"justify-content-center",
"justify-content-end",
"justify-content-start",
"katex",
"label",
"lead",
"leaflet-map",
@@ -381,6 +402,7 @@
"row-cols-md-3",
"row-cols-sm-2",
"row-cols-sm-3",
"scrollbar-horizontal",
"search",
"search-input",
"search-suggestions",
@@ -458,7 +480,8 @@
"visually-hidden",
"vr",
"w-100",
"w-50"
"w-50",
"youtube-embedded"
],
"ids": [
"TableOfContents",
@@ -496,6 +519,7 @@
"collapse",
"collapse-1",
"command-prompt",
"data-tables",
"docs",
"documentation",
"example",
@@ -516,6 +540,7 @@
"indicateur-de-chargement",
"infobulle",
"invite-de-commandes",
"language-selector",
"leaflet-map-0",
"lien",
"link",
@@ -558,7 +583,8 @@
"toast-example-2",
"toast-message-email-4",
"toc-collapse",
"tooltip"
"tooltip",
"youtube"
]
}
}

17
go.mod
View File

@@ -4,13 +4,14 @@ go 1.19
require (
github.com/airbnb/lottie-web v5.12.2+incompatible // indirect
github.com/gethinode/mod-bootstrap v1.3.0 // indirect
github.com/gethinode/mod-flexsearch v1.12.0 // indirect
github.com/gethinode/mod-fontawesome v1.9.0 // indirect
github.com/gethinode/mod-katex v1.1.0 // indirect
github.com/gethinode/mod-leaflet v1.1.0 // indirect
github.com/gethinode/mod-lottie v1.5.4 // indirect
github.com/gethinode/mod-utils/v2 v2.3.8 // indirect
github.com/nextapps-de/flexsearch v0.0.0-20240110101704-4c3966709f85 // indirect
github.com/gethinode/mod-bootstrap v1.3.1 // indirect
github.com/gethinode/mod-flexsearch/v2 v2.0.1 // indirect
github.com/gethinode/mod-fontawesome v1.9.1 // indirect
github.com/gethinode/mod-katex v1.1.2 // indirect
github.com/gethinode/mod-leaflet v1.1.1 // indirect
github.com/gethinode/mod-lottie v1.5.6 // indirect
github.com/gethinode/mod-simple-datatables v1.0.7 // indirect
github.com/gethinode/mod-utils/v2 v2.3.10 // indirect
github.com/nextapps-de/flexsearch v0.0.0-20240501124520-961c3ae84a87 // indirect
github.com/twbs/bootstrap v5.3.3+incompatible // indirect
)

36
go.sum
View File

@@ -22,6 +22,8 @@ github.com/gethinode/mod-bootstrap v1.2.8 h1:kIKSO6qqE8xA0KQC5s6kkEv5UDc8oT17Hal
github.com/gethinode/mod-bootstrap v1.2.8/go.mod h1:CL9IDot6nbXIWJYE/KxfsTdYYEJIGL17BXbAYPn+wVQ=
github.com/gethinode/mod-bootstrap v1.3.0 h1:UxNmXgXo7gA8C8z1ar47+tSccmKYpaYBBN+txB0pwBk=
github.com/gethinode/mod-bootstrap v1.3.0/go.mod h1:CL9IDot6nbXIWJYE/KxfsTdYYEJIGL17BXbAYPn+wVQ=
github.com/gethinode/mod-bootstrap v1.3.1 h1:ZUX72St0WZ5tyXpEPBJlayX/dmCH3cGErzsozkUKCok=
github.com/gethinode/mod-bootstrap v1.3.1/go.mod h1:CL9IDot6nbXIWJYE/KxfsTdYYEJIGL17BXbAYPn+wVQ=
github.com/gethinode/mod-flexsearch v1.0.1 h1:FJkRsUzSnQTXl3MWCigT4E6vfff870UWTnkGqaDGIhA=
github.com/gethinode/mod-flexsearch v1.0.1/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
github.com/gethinode/mod-flexsearch v1.1.0 h1:7BCMyQDlYlskNXuazt8Jg/jg9WREexu2xVkYqThkAX4=
@@ -68,6 +70,10 @@ github.com/gethinode/mod-flexsearch v1.11.3 h1:ykxpUg8M4vr1C4QzxJOPGt+1ZmPAD/gOC
github.com/gethinode/mod-flexsearch v1.11.3/go.mod h1:L8hrnpupx27cez2ObMX8gWnhbW6qss4HGH1Ea4UaBRQ=
github.com/gethinode/mod-flexsearch v1.12.0 h1:zg1IHvc8VO9WEtQuQnuG6HeWFNByvyqC9JYWDtpsP6s=
github.com/gethinode/mod-flexsearch v1.12.0/go.mod h1:L8hrnpupx27cez2ObMX8gWnhbW6qss4HGH1Ea4UaBRQ=
github.com/gethinode/mod-flexsearch v1.12.1 h1:clkGUWaNPe9Dt/66Apy7oH9NwVQfnD6OpGSLffeC9sY=
github.com/gethinode/mod-flexsearch v1.12.1/go.mod h1:L8hrnpupx27cez2ObMX8gWnhbW6qss4HGH1Ea4UaBRQ=
github.com/gethinode/mod-flexsearch/v2 v2.0.1 h1:5unGUSb1tX1LBtKygnLfdt7CnVJuFKSt6VXiKRxdojc=
github.com/gethinode/mod-flexsearch/v2 v2.0.1/go.mod h1:d7MMkVlz0l6cEk76e0mkveEsDxGfu5Sv+HUIhoGguhE=
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=
@@ -108,6 +114,8 @@ github.com/gethinode/mod-fontawesome v1.8.2 h1:LAzLytyh9c9gLzBWMju6Gtp3uEojhBQEY
github.com/gethinode/mod-fontawesome v1.8.2/go.mod h1:xBKsZH3WJtMOItZVlp9SbO51uaBy6IbvUZSKpNu3b6Y=
github.com/gethinode/mod-fontawesome v1.9.0 h1:xqUB8AnezMHAt8lye4ksqvmHSVPCOkiHsHGUbqNoeP0=
github.com/gethinode/mod-fontawesome v1.9.0/go.mod h1:xBKsZH3WJtMOItZVlp9SbO51uaBy6IbvUZSKpNu3b6Y=
github.com/gethinode/mod-fontawesome v1.9.1 h1:cQk84vriqffM4fuUUoM9j3SSD+3ppeW2j4ta7AiToMU=
github.com/gethinode/mod-fontawesome v1.9.1/go.mod h1:xBKsZH3WJtMOItZVlp9SbO51uaBy6IbvUZSKpNu3b6Y=
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=
@@ -128,6 +136,10 @@ github.com/gethinode/mod-katex v1.0.9 h1:cCJoR28tZwkDvXps17o9Jwfe3aQQAZ3Rxk0jCNR
github.com/gethinode/mod-katex v1.0.9/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
github.com/gethinode/mod-katex v1.1.0 h1:PxST3HPUt6F2X/xKakTVeTkwWqCtEr53K1vYEOyQu3I=
github.com/gethinode/mod-katex v1.1.0/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
github.com/gethinode/mod-katex v1.1.1 h1:z8+mfVI6UTWcfpQMVPIzxQzt6Lp9BcmXxSOILQ84qFg=
github.com/gethinode/mod-katex v1.1.1/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
github.com/gethinode/mod-katex v1.1.2 h1:TbeVIWeG5TqldlVxpM1upOWj11RljXy4fhpOQIwOnS4=
github.com/gethinode/mod-katex v1.1.2/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=
@@ -146,6 +158,8 @@ github.com/gethinode/mod-leaflet v1.0.1 h1:L4Coe6HTD9O0Txs1S8AtVg+6/TEneSF9i6fJK
github.com/gethinode/mod-leaflet v1.0.1/go.mod h1:Ei0x9WiL7Dbi4JeG6yI1CE63bT1QJ8sKi67Jea1wFSE=
github.com/gethinode/mod-leaflet v1.1.0 h1:FXzPCic5XmUluxQ6e7LYUhhLnxuQOBwry8qjG9k30UY=
github.com/gethinode/mod-leaflet v1.1.0/go.mod h1:Ei0x9WiL7Dbi4JeG6yI1CE63bT1QJ8sKi67Jea1wFSE=
github.com/gethinode/mod-leaflet v1.1.1 h1:AIHR4k8SjmeoZxtjLgSS6/N3jKeZNZGdZTgu/7MwP4c=
github.com/gethinode/mod-leaflet v1.1.1/go.mod h1:Ei0x9WiL7Dbi4JeG6yI1CE63bT1QJ8sKi67Jea1wFSE=
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=
@@ -182,6 +196,22 @@ github.com/gethinode/mod-lottie v1.5.3 h1:fvCjCoZoCEhY2aou30oEsEo6N4tVSI0ijFyXS3
github.com/gethinode/mod-lottie v1.5.3/go.mod h1:XHVMuPsuJIm9/Eb2ql4jsT49/BQqMlBiirQoty4uHAo=
github.com/gethinode/mod-lottie v1.5.4 h1:+xbamSsjcnP2tyzGl0CA1enma7gkAp67wenmuP0XELY=
github.com/gethinode/mod-lottie v1.5.4/go.mod h1:gALqz48aYpoDLxJOI3LzIpdy0Eq/lOBNtlcOxABa9tg=
github.com/gethinode/mod-lottie v1.5.5 h1:uEJKsz+ovsZtbGkMhPONcIhtG6M3RjYiK+iVoScLOVo=
github.com/gethinode/mod-lottie v1.5.5/go.mod h1:VTvBxD8VokICwnEqM0VUZFZHBYxLf4/grDFQyEh1DL0=
github.com/gethinode/mod-lottie v1.5.6 h1:dxz5nmD0XXEt/DAOc1s5fIPynj5bhzDL32EEwLFCSmk=
github.com/gethinode/mod-lottie v1.5.6/go.mod h1:VTvBxD8VokICwnEqM0VUZFZHBYxLf4/grDFQyEh1DL0=
github.com/gethinode/mod-simple-datatables v1.0.0 h1:Dj4WGw12OkaimwkCpLn5Jhmd49dvNJW9O2P/W9F+HlQ=
github.com/gethinode/mod-simple-datatables v1.0.0/go.mod h1:K8T7fIdb8pMOB+OSW4A5lz5IW99+HyzcTgx764fvOGw=
github.com/gethinode/mod-simple-datatables v1.0.2 h1:zhqxHet3iLQWYCBbGROALpOY9zQlptMycFkz1Tto5bA=
github.com/gethinode/mod-simple-datatables v1.0.2/go.mod h1:mmrcvAJU2i3SMU56VmQ5PW43uDXBcsJKcZwCHrvl3Kc=
github.com/gethinode/mod-simple-datatables v1.0.3 h1:JL2nBlEHWMmkE7EZrpfpmzka47dklJUh23/xKJkOQoI=
github.com/gethinode/mod-simple-datatables v1.0.3/go.mod h1:mmrcvAJU2i3SMU56VmQ5PW43uDXBcsJKcZwCHrvl3Kc=
github.com/gethinode/mod-simple-datatables v1.0.5 h1:2Aa4k1Bd1WEYHbskFQj+1X35BB7abB8RXHE7Uk2N4pg=
github.com/gethinode/mod-simple-datatables v1.0.5/go.mod h1:mmrcvAJU2i3SMU56VmQ5PW43uDXBcsJKcZwCHrvl3Kc=
github.com/gethinode/mod-simple-datatables v1.0.6 h1:voKiwLAfC7kfD+atv7ah0sOf8OcPRyxEB/Q92gx1d00=
github.com/gethinode/mod-simple-datatables v1.0.6/go.mod h1:Y7AzIYAWpzDKLvH96eqBA/Gs3jompWCgxadLuoKZ/rc=
github.com/gethinode/mod-simple-datatables v1.0.7 h1:pfxWhgmn/njJcynNIDnUyeOBW0tsy2E4TP21sEYsqRs=
github.com/gethinode/mod-simple-datatables v1.0.7/go.mod h1:Y7AzIYAWpzDKLvH96eqBA/Gs3jompWCgxadLuoKZ/rc=
github.com/gethinode/mod-utils v1.0.0 h1:cqHm2xS5uDiJzRm1KfHaNbq6uMVDKLhQa8/BuTZ1nhY=
github.com/gethinode/mod-utils v1.0.0/go.mod h1:ONJm3pHCq7nvaPNjusLZNCeCbhOhSBH4HVKHwK1FdYE=
github.com/gethinode/mod-utils v1.0.1 h1:jhZGlGFHHL1f5HXbBMXfiZ2gCz4TVafAzjnRPTIBSEE=
@@ -224,12 +254,18 @@ github.com/gethinode/mod-utils/v2 v2.3.7 h1:FFsUPO7NBp9Bhjovf0Ki5hnDGfeMKV/3RNz1
github.com/gethinode/mod-utils/v2 v2.3.7/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
github.com/gethinode/mod-utils/v2 v2.3.8 h1:zAiDRCb3SsP9z6PUkCaiRLHOpqFhVf0xVhVOoTZNmAI=
github.com/gethinode/mod-utils/v2 v2.3.8/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
github.com/gethinode/mod-utils/v2 v2.3.9 h1:Z9uAr6S0wunlkfKHa2D/U83fBV6Ivtf+7sjBAcrddrg=
github.com/gethinode/mod-utils/v2 v2.3.9/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
github.com/gethinode/mod-utils/v2 v2.3.10 h1:+coUXdgAbLEE8Tvb3Rfk/1Nr6oDVreXI2sil0pa/n2Q=
github.com/gethinode/mod-utils/v2 v2.3.10/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
github.com/nextapps-de/flexsearch v0.0.0-20230711092928-1243fd883ec3 h1:H/qVR5O4BXjRjD+5PZB+r4ug2BSJ2Of4RtwOntd+OKo=
github.com/nextapps-de/flexsearch v0.0.0-20230711092928-1243fd883ec3/go.mod h1:5GdMfPAXzbA2gXBqTjC6l27kioSYzHlqDMh0+wyx7sU=
github.com/nextapps-de/flexsearch v0.0.0-20240108021025-afd75f742f22 h1:re7L8FxbXQpnX8BgzkdUnDpsUmloGNyLmiy2ZCln8pg=
github.com/nextapps-de/flexsearch v0.0.0-20240108021025-afd75f742f22/go.mod h1:5GdMfPAXzbA2gXBqTjC6l27kioSYzHlqDMh0+wyx7sU=
github.com/nextapps-de/flexsearch v0.0.0-20240110101704-4c3966709f85 h1:H6xa5YyCHr78M+qqCApM4Kvz/eMA7pfGskYmfkEBRCA=
github.com/nextapps-de/flexsearch v0.0.0-20240110101704-4c3966709f85/go.mod h1:5GdMfPAXzbA2gXBqTjC6l27kioSYzHlqDMh0+wyx7sU=
github.com/nextapps-de/flexsearch v0.0.0-20240501124520-961c3ae84a87 h1:6PNbL0/LxO8Xl8MZSe5uvCidYNpFTz9nlWTqj2qdlzA=
github.com/nextapps-de/flexsearch v0.0.0-20240501124520-961c3ae84a87/go.mod h1:5GdMfPAXzbA2gXBqTjC6l27kioSYzHlqDMh0+wyx7sU=
github.com/twbs/bootstrap v5.3.2+incompatible h1:tuiO5acc6xnZUR77Sbi5aKWXxjYxbmsSbJwYrhAKoQQ=
github.com/twbs/bootstrap v5.3.2+incompatible/go.mod h1:fZTSrkpSf0/HkL0IIJzvVspTt1r9zuf7XlZau8kpcY0=
github.com/twbs/bootstrap v5.3.3+incompatible h1:goFoqinzdHfkeegpFP7pvhbd0g+A3O2hbU3XCjuNrEQ=

View File

@@ -2,11 +2,13 @@
"htmlElements": {
"tags": [
"a",
"annotation",
"body",
"button",
"div",
"footer",
"form",
"h5",
"head",
"html",
"img",
@@ -14,12 +16,29 @@
"label",
"li",
"link",
"math",
"meta",
"mfrac",
"mi",
"mn",
"mo",
"mpadded",
"mphantom",
"mrow",
"mspace",
"msqrt",
"mstyle",
"msub",
"msup",
"mtext",
"munder",
"nav",
"noscript",
"ol",
"p",
"path",
"script",
"semantics",
"small",
"span",
"strong",
@@ -36,6 +55,7 @@
"bg-body",
"bg-opacity-10",
"bg-primary",
"border-0",
"bottom-0",
"bottom-bar",
"breadcrumb",
@@ -43,10 +63,19 @@
"btn",
"btn-close",
"btn-primary",
"btn-social",
"card",
"card-body",
"card-body-link",
"card-text",
"card-title",
"card-zoom",
"checkbox",
"col",
"col-12",
"col-6",
"col-lg-2",
"col-lg-8",
"col-md-2",
"col-md-3",
"col-md-4",
@@ -59,7 +88,9 @@
"container-xxl",
"d-flex",
"d-inline",
"d-lg-block",
"d-md-block",
"d-md-none",
"d-none",
"display-1",
"display-4",
@@ -71,12 +102,17 @@
"fa-book-open",
"fa-ellipsis",
"fa-face-frown",
"fa-facebook",
"fa-fw",
"fa-github",
"fa-link",
"fa-linkedin",
"fa-medium",
"fa-moon",
"fa-share-nodes",
"fa-sun",
"fa-whatsapp",
"fa-x-twitter",
"fab",
"fas",
"fixed-top",
@@ -86,8 +122,13 @@
"form-control",
"fs-3",
"fs-5",
"fs-6",
"fs-lg-5",
"fw-30",
"fw-bold",
"g-4",
"gap-1",
"h-100",
"hstack",
"img-fluid",
"img-wrap",
@@ -96,11 +137,17 @@
"justify-content-center",
"justify-content-end",
"justify-content-start",
"katex",
"label",
"lead",
"link-bg-footer",
"link-secondary",
"main-content",
"main-nav-toggler",
"mb-3",
"mb-4",
"mb-5",
"mb-lg-5",
"me-auto",
"middle-bar",
"min-vh-100",
@@ -112,6 +159,7 @@
"mx-auto",
"mx-md-0",
"my-auto",
"my-md-0",
"my-md-auto",
"nav-item",
"nav-link",
@@ -125,6 +173,11 @@
"navbar-nav",
"navbar-toggler",
"no-js",
"offcanvas",
"offcanvas-body",
"offcanvas-header",
"offcanvas-start",
"offcanvas-title",
"order-0",
"order-1",
"order-md-0",
@@ -134,11 +187,11 @@
"p-3",
"p-4",
"pb-4",
"pb-5",
"pb-md-0",
"position-fixed",
"position-relative",
"ps-1",
"pt-4",
"pt-5",
"pt-md-3",
"px-4",
@@ -148,32 +201,48 @@
"row",
"row-cols-1",
"row-cols-2",
"row-cols-lg-3",
"row-cols-md-2",
"row-cols-md-3",
"row-cols-sm-2",
"row-cols-sm-3",
"search",
"search-input",
"search-suggestions",
"shadow",
"sidebar-overflow",
"sticky-top",
"stretched-link",
"svg-inline--fa",
"text-body-secondary",
"text-center",
"text-decoration-none",
"text-end",
"text-muted",
"text-secondary",
"text-sm-start",
"text-start",
"text-uppercase",
"toast",
"toast-body",
"toast-container",
"toast-header",
"toc",
"toc-sidebar",
"toggler-icon",
"top-bar"
],
"ids": [
"blogs",
"btn-webshare",
"navbar-0-collapse",
"navbar-mode",
"navbar-mode-checkbox",
"offcanvas-label",
"offcanvass-sidebar",
"toast-container",
"toast-copied-code-message"
"toast-copied-code-message",
"toast-message-email-4"
]
}
}

View File

@@ -28,7 +28,7 @@
- id: shareLink
translation: "Diese Seite teilen per {{ . }}"
- id: shareSystem
translation: "Betriebssystem"
translation: "System"
- id: copyToClipboard
translation: "In die Zwischenablage kopieren"
- id: copiedToClipboard
@@ -52,7 +52,7 @@
# Navigation
- id: colorMode
translation: "Thema umschalten"
translation: "Modus umschalten"
- id: colorLight
translation: "Light"
- id: colorDark
@@ -76,7 +76,7 @@
# Sidebar
- id: toggleSidebar
translation: "Menünavigation anzuzeigen oder auszublenden"
translation: "Menünavigation anzeigen oder ausblenden"
# Feature
- id: addedFeature

View File

@@ -149,3 +149,15 @@
translation: "Comment"
- id: supportedValues
translation: "Supported values"
# Alerts
- id: caution
translation: Caution
- id: important
translation: Important
- id: note
translation: Note
- id: tip
translation: Tip
- id: warning
translation: Warning

View File

@@ -148,3 +148,15 @@
translation: "Toelichting"
- id: supportedValues
translation: "Toegestane waarden"
# Alerts
- id: caution
translation: Voorzichtig
- id: important
translation: Belangrijk
- id: note
translation: Opmerking
- id: tip
translation: Tip
- id: warning
translation: Waarschuwing

View File

@@ -0,0 +1,23 @@
{{/* Adapted from https://gohugo.io/render-hooks/blockquotes/#alerts */}}
{{ $icons := dict
"caution" "fa hand"
"important" "fas exclamation"
"note" "fas circle-info"
"tip" "fa lightbulb"
"warning" "fas triangle-exclamation"
}}
{{ if eq .Type "alert" }}
<blockquote class="blockquote-alert blockquote-alert-{{ .AlertType }}">
<p class="blockquote-alert-heading">
{{ partial "assets/icon.html" (dict "icon" (printf "%s fa-fw" (index $icons .AlertType))) }}
{{ or (i18n .AlertType) (title .AlertType) }}
</p>
{{ trim .Text "\n\r" | safeHTML }}
</blockquote>
{{ else }}
<blockquote class="blockquote">
{{ trim .Text "\n\r" | safeHTML }}
</blockquote>
{{ end }}

View File

@@ -0,0 +1,11 @@
{{ with transform.ToMath .Inner (dict "displayMode" true) }}
{{ with .Err }}
{{ errorf "Failed to render KaTeX: %q. See %s" . $.Position }}
{{ else }}
{{ if $.Attributes.class }}
<div class="{{ $.Attributes.class }}">{{ . }}</div>
{{ else }}
{{ . }}
{{ end }}
{{ end }}
{{ end }}

View File

@@ -0,0 +1,15 @@
{{ partial "assets/image.html" (dict
"url" .Destination
"page" .Page
"caption" .Title
"title" .Text
"anchor" .Attributes.anchor
"class" .Attributes.class
"figclass" .Attributes.figclass
"loading" .Attributes.loading
"mode" .Attributes.mode
"plain" .Attributes.plain
"portrait" .Attributes.portrait
"ratio" .Attributes.ratio
"wrapper" .Attributes.wrapper
) }}

View File

@@ -0,0 +1,13 @@
{{ if gt (findRE `^HAHAHUGO` .Destination 1) 0 }}
{{ errorf "Invalid markdown link destination, use '%s' syntax when using shortcodes as input. See '%s'"
("&#123;&#123;% %&#125;&#125;" | htmlUnescape)
.Page.File.Filename
}}
{{ else }}
{{ partial "assets/link.html" (dict
"destination" .Destination
"page" .Page
"text" .Text
"title" .Title
) }}
{{ end }}

View File

@@ -0,0 +1,13 @@
{{ $opts := dict }}
{{ if eq .Type "block" }}
{{ $opts = dict "displayMode" true }}
{{ end }}
{{ with transform.ToMath .Inner $opts }}
{{ with .Err }}
{{ errorf "Failed to render KaTeX: %q. See %s" . $.Position }}
{{ else }}
{{ . }}
{{ end }}
{{ end }}

View File

@@ -36,11 +36,11 @@
<!doctype html>
<html lang="{{ .Site.Language.Lang }}" class="no-js">
<head>
{{- partial "footer/scripts.html" (dict "filename" "js/critical.bundle.js" "match" "js/critical/**.js" "header" true "page" .) -}}
{{ block "head" . }}{{ end -}}
</head>
<body>
{{- partial "footer/scripts.html" (dict "filename" "js/critical.bundle.js" "match" "js/critical/**.js" "header" true "page" .) -}}
<div class="d-flex flex-column min-vh-100">
<div class="d-flex flex-column {{ if $fullCover }} fullscreen{{ end }}{{ if .IsHome }} {{ .Site.Params.home.style }}{{ end }}">
{{- partial "assets/navbar.html" (dict

View File

@@ -14,14 +14,16 @@
{{ with .Title }}<p class="display-4 mt-5">{{ . }}</p>{{ end }}
{{ if ne $metadata "none" }}
{{ $lastmodstr := (partial "utilities/date.html" (dict "date" .Lastmod "format" "long")) -}}
{{ $datestr := (partial "utilities/date.html" (dict "date" .Date "format" "long")) -}}
<small class="text-body-secondary text-uppercase">
{{ $datestr | i18n "postedOnDate" -}}
{{ if eq $metadata "full" }}
{{ if ne $datestr $lastmodstr -}}&nbsp;({{ $lastmodstr | i18n "lastModified" }}){{ end }}
{{ if .Date }}
{{ $lastmodstr := (partial "utilities/date.html" (dict "date" .Lastmod "format" "long")) -}}
{{ $datestr := (partial "utilities/date.html" (dict "date" .Date "format" "long")) -}}
{{ $datestr | i18n "postedOnDate" -}}
{{ if eq $metadata "full" }}
{{ if ne $datestr $lastmodstr -}}&nbsp;({{ $lastmodstr | i18n "lastModified" }}){{ end }}
{{ end }}
&bull;
{{ end }}
&bull;
{{ .ReadingTime | lang.FormatNumber 0 }}&nbsp;{{ i18n "minutesShort" }} {{ i18n "read" }} &bull;
{{ .WordCount | lang.FormatNumber 0 }}&nbsp;{{ i18n "words" }}
</small>

View File

@@ -7,6 +7,10 @@
<meta name="robots" content="noindex">
<meta charset="utf-8">
<noscript><meta http-equiv="refresh" content="0; url={{ .Permalink }}"></noscript>
<script src='{{ partial "utilities/GetStaticURL" (dict "url" "js/alias.js") }}'></script>
{{ if site.Params.main.enableLanguageSelectionStorage }}
{{- partial "footer/scripts.html" (dict "filename" "js/critical.bundle.js" "match" "js/critical/**.js" "header" true "page" page) -}}
{{ else }}
<script src='{{ partial "utilities/GetStaticURL" (dict "url" "js/alias.js") }}'></script>
{{ end }}
</head>
</html>

View File

@@ -6,6 +6,19 @@
{{ $error := false }}
{{ $anchorMap := dict
"TopLeft" "north_west"
"Top" "north"
"TopRight" "north_east"
"Left" "west"
"Center" "center"
"Right" "east"
"BottomLeft" "south_west"
"Bottom" "south"
"BottomRight" "south_east"
"Smart" "auto"
}}
<!-- Validate arguments -->
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "image-adapter" "args" . "group" "partial") }}
{{ errorf "partial [assets/adapter/cloudinary.html] - Invalid arguments" -}}
@@ -20,6 +33,8 @@
{{ $transform := .transform }}
{{ $height := .height }}
{{ $width := .width }}
{{ $anchor := "" }}
{{ with .anchor }}{{ $anchor = index $anchorMap . }}{{ end }}
{{ if eq $transform "fill" }}{{ $transform = "c_fill" }}{{ else }}{{ $transform = "c_fit" }}{{ end }}
{{ $element := "" }}
@@ -37,6 +52,9 @@
{{ else }}
{{ $operation = printf "f_auto,%s,h_%d,w_%d" $transform $height $width }}
{{ end }}
{{ with $anchor }}
{{ $operation = printf "%s,g_%s" $operation . }}
{{ end }}
{{- $element = urls.JoinPath (slice "https://" $host $dir $operation $file) -}}
{{ end }}

View File

@@ -20,6 +20,7 @@
{{ $transform := .transform }}
{{ $height := .height }}
{{ $width := .width }}
{{ $anchor := .anchor | default "" }}
{{ $element := "" }}
{{ $absoluteURL := .absoluteURL }}
{{ $url := urls.JoinPath $dir $file }}
@@ -46,13 +47,20 @@
{{ if not $error }}
{{ $scaled := "" }}
{{ if eq $transform "fill" }}
{{- $scaled = $img.Fill (printf "%dx%d %s" $width $height $format) -}}
{{- $scaled = $img.Fill (printf "%dx%d %s %s" $width $height $anchor $format) -}}
{{ else }}
{{- $scaled = $img.Fit (printf "%dx%d %s" $width $height $format) -}}
{{ end }}
{{- $clean := path.Ext $img.RelPermalink -}}
{{- $scaled = $scaled | resources.Copy (replace $img.RelPermalink $clean (printf "-%dx%d.%s" $width $height $format)) -}}
{{ $destination := "" }}
{{ if $anchor }}
{{ $destination = printf "-%dx%d-%s.%s" $width $height (lower $anchor) $format }}
{{ else }}
{{ $destination = printf "-%dx%d.%s" $width $height $format }}
{{ end }}
{{- $scaled = $scaled | resources.Copy (replace $img.RelPermalink $clean $destination) -}}
{{- if $absoluteURL -}}
{{- $element = $scaled.Permalink -}}
{{- else -}}

View File

@@ -6,6 +6,19 @@
{{ $error := false }}
{{ $anchorMap := dict
"TopLeft" "top_left"
"Top" "top"
"TopRight" "top_right"
"Left" "left"
"Center" "center"
"Right" "right"
"BottomLeft" "bottom_left"
"Bottom" "bottom"
"BottomRight" "bottom_right"
"Smart" "auto"
}}
<!-- Validate arguments -->
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "image-adapter" "args" . "group" "partial") }}
{{ errorf "partial [assets/adapter/imagekit.html] - Invalid arguments" -}}
@@ -20,6 +33,8 @@
{{ $transform := .transform }}
{{ $height := .height }}
{{ $width := .width }}
{{ $anchor := "" }}
{{ with .anchor }}{{ $anchor = index $anchorMap . }}{{ end }}
{{ if eq $transform "fill" }}{{ $transform = "c-maintain_ratio" }}{{ else }}{{ $transform = "c-at_max" }}{{ end }}
{{ $element := "" }}
@@ -42,6 +57,9 @@
{{ else }}
{{ $operation = printf "tr:f-auto,%s,h-%d,w-%d" $transform $height $width }}
{{ end }}
{{ with $anchor }}
{{ $operation = printf "%s,fo-%s" $operation . }}
{{ end }}
{{- $element = urls.JoinPath (slice "https://" $host $dir $operation $file) -}}
{{ end }}

View File

@@ -6,6 +6,19 @@
{{ $error := false }}
{{ $anchorMap := dict
"TopLeft" "top,left"
"Top" "top"
"TopRight" "top,right"
"Left" "left"
"Center" "center"
"Right" "right"
"BottomLeft" "bottom,left"
"Bottom" "bottom"
"BottomRight" "bottom,right"
"Smart" "faces,edges,center"
}}
<!-- Validate arguments -->
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "image-adapter" "args" . "group" "partial") }}
{{ errorf "partial [assets/adapter/imgix.html] - Invalid arguments" -}}
@@ -20,6 +33,8 @@
{{ $transform := .transform }}
{{ $height := .height }}
{{ $width := .width }}
{{ $anchor := "" }}
{{ with .anchor }}{{ $anchor = index $anchorMap . }}{{ end }}
{{ if eq $transform "fill" }}{{ $transform = "crop" }}{{ else }}{{ $transform = "max" }}{{ end }}
{{ $element := "" }}
@@ -37,6 +52,9 @@
{{ else }}
{{ $operation = printf "f_auto&fit=%s&h=%d&w=%d" $transform $height $width }}
{{ end }}
{{ with $anchor }}
{{ $operation = printf "%s&crop=%s" $operation . }}
{{ end }}
{{- $element = printf "%s?%s" (urls.JoinPath (slice "https://" $host $dir $file)) $operation -}}
{{ end }}

View File

@@ -95,10 +95,10 @@
{{- end -}}
role="button"
>
<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>
<span class="d-flex justify-content-{{ $justify }}">
<span class="my-auto">{{ $title | safeHTML }}</span>
{{- with $icon }}<span 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) }}</span>{{ end }}
</span>
{{- with $badge }}
<span class="position-absolute top-0 start-100 translate-middle badge rounded-pill bg-danger">

View File

@@ -23,9 +23,11 @@
{{- $color := .color -}}
{{- $padding := .padding -}}
{{- $header := .header -}}
{{- $body := .body -}}
{{- $footer := .footer -}}
{{- $orientation := .orientation -}}
{{- $ratio := .ratio -}}
{{- $portrait := .portrait | default false -}}
{{- $wrapper := .wrapper | default "p-0" -}}
{{- $style := .style -}}
{{- $align := .align -}}
@@ -34,7 +36,11 @@
{{- $button := .button -}}
{{- $buttonLabel := .buttonLabel -}}
{{- $buttonType := .buttonType -}}
{{- $iconRounded := .iconRounded }}
{{- $scroll := .scroll | default false }}
{{- $spacer := .spacer | default false }}
{{- $hook := .hook | default "assets/card.html" }}
{{- $cols := string .cols | default "3" -}}
<!-- Override arguments -->
{{ $isPages := in (slice "page.Pages" "resource.Resources") (printf "%T" $pages) }}
@@ -48,6 +54,13 @@
{{ $pages = first $paginator.PageSize (after (mul (sub $paginator.PageNumber 1) $paginator.PageSize) $pages) }}
{{ end }}
{{ $cardWrapper := "" }}
{{ if $scroll }}
{{ $cardWrapper = printf "card-block card-block-%d" (int $cols) }}
{{ end }}
{{ if not $spacer }}{{ $class = printf "%s h-100" $class }}{{ end }}
{{ $list := slice }}
{{ if $isPages }}
{{ range $index, $element := $pages }}
@@ -58,11 +71,13 @@
<!-- headless page -->
{{- else -}}
{{- $thumbnail := (or (and (reflect.IsMap $element.Params.Thumbnail) $element.Params.Thumbnail.url) $element.Params.Thumbnail) -}}
{{- $anchor := (or (and (reflect.IsMap $element.Params.Thumbnail) $element.Params.Thumbnail.anchor) "") -}}
{{- $params = merge $params (dict
"title" $element.Title
"href" $element.RelPermalink
"description" (partial "utilities/GetDescription.html" (dict "page" $element "raw" true))
"thumbnail" $thumbnail
"anchor" $anchor
"icon" $element.Params.icon
) -}}
{{- end -}}
@@ -77,41 +92,39 @@
{{- $max := $count -}}
{{- $max = math.Min (.max | default $count) $count -}}
{{- $responsive := .responsive | default true -}}
{{- $cols := string .cols | default "3" -}}
{{- $sizes := "100vw" }}
{{- $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" }}
{{ if not $scroll }}
{{ $colGrid = printf "row-cols-%s" $cols }}
{{- 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 }}
{{ end -}}
{{ $sizes = printf "(min-width: %s) 50vw, 100vw" $breakpoint.currentSize }}
{{- else if eq $cols "3" }}
{{ if $responsive }}
{{ $colGrid = printf "row-cols-1 row-cols-%s-2 row-cols-%s-3" $breakpoint.prev $breakpoint.current }}
{{ end -}}
{{ $sizes = printf "(min-width: %s) 33.3vw, (min-width: %s) 50vw, 100vw" $breakpoint.currentSize $breakpoint.prevSize }}
{{- else if eq $cols "4" }}
{{ if $responsive }}
{{ $colGrid = printf "row-cols-1 row-cols-%s-2 row-cols-%s-4" $breakpoint.prev $breakpoint.current }}
{{ end -}}
{{ $sizes = printf "(min-width: %s) 25vw, (min-width: %s) 50vw, 100vw" $breakpoint.currentSize $breakpoint.prevSize }}
{{- else if eq $cols "5" }}
{{ if $responsive }}
{{ $colGrid = printf "row-cols-1 row-cols-%s-3 row-cols-%s-5" $breakpoint.prev $breakpoint.current }}
{{ end -}}
{{ $sizes = printf "(min-width: %s) 20vw, (min-width: %s) 33.3vw, 100vw" $breakpoint.currentSize $breakpoint.prevSize }}
{{ end -}}
{{ $sizes = printf "(min-width: %s) 50vw, 100vw" $breakpoint.currentSize }}
{{- else if eq $cols "3" }}
{{ if $responsive }}
{{ $colGrid = printf "row-cols-1 row-cols-%s-2 row-cols-%s-3" $breakpoint.prev $breakpoint.current }}
{{ else }}
{{ $colGrid = "row-cols-3" }}
{{ end -}}
{{ $sizes = printf "(min-width: %s) 33.3vw, (min-width: %s) 50vw, 100vw" $breakpoint.currentSize $breakpoint.prevSize }}
{{- else if eq $cols "4" }}
{{ if $responsive }}
{{ $colGrid = printf "row-cols-1 row-cols-%s-2 row-cols-%s-4" $breakpoint.prev $breakpoint.current }}
{{ else }}
{{ $colGrid = "row-cols-4" }}
{{ end -}}
{{ $sizes = printf "(min-width: %s) 25vw, (min-width: %s) 50vw, 100vw" $breakpoint.currentSize $breakpoint.prevSize }}
{{- 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 -}}
{{ $sizes = printf "(min-width: %s) 20vw, (min-width: %s) 33.3vw, 100vw" $breakpoint.currentSize $breakpoint.prevSize }}
{{ end -}}
{{ else }}
{{ if in (slice "2" "3" "4" "5") $cols }}
{{ $sizes = replace (printf "%.1fvw" (div 100.0 (int $cols))) ".0" "" }}
{{ end }}
{{ end }}
{{- if not $paginate -}}
{{- $list = first $max $list -}}
@@ -120,29 +133,33 @@
{{- 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 }}">
<div class="container-fluid {{ $wrapper }} {{ if $scroll }}card-container-wrapper{{ end }}">
<div class="row g-{{ $gutter }} {{ if $scroll }}d-flex flex-row flex-nowrap card-container scrollbar-horizontal pb-4 w-100 {{ end }} {{ $colGrid }}">
{{ range $index, $element := $list }}
{{- $params := (dict
"class" (printf "h-100 %s" $class)
"class" (printf " %s" $class)
"color" $color
"footer" $footer
"body" $body
"header" $header
"loading" $loading
"sizes" $sizes
"orientation" $orientation
"padding" $padding
"ratio" $ratio
"portrait" $portrait
"subtle" $subtle
"style" $style
"align" $align
"button" $button
"buttonLabel" $buttonLabel
"buttonType" $buttonType
"iconRounded" $iconRounded
) -}}
{{- $params = merge $params $element }}
{{- $params = merge $element $params }}
<div class="col">
<div class="{{ with $cardWrapper }}{{ . }}{{ else }}col{{ end }}">
{{ if $spacer }}<div class="spacer"></div>{{ end }}
{{- partial $hook $params -}}
</div>
{{- if and (lt $index (sub $max 1)) $separator -}}
@@ -151,7 +168,7 @@
</div>
{{- end -}}
{{- end -}}
{{if $cards }}{{- print $cards | safeHTML }}{{ end }}
{{ if $cards }}{{- print $cards | safeHTML }}{{ end }}
</div>
{{ if $paginator }}

View File

@@ -11,15 +11,18 @@
<!-- Initialize arguments and default values -->
{{- $alt := .alt -}}
{{- $wrapper := .wrapper -}}
{{- $class := .class -}}
{{- $color := .color -}}
{{- $description := .description -}}
{{- $body := .body | default "full" -}}
{{- $footer := .footer | default "none" -}}
{{- $gutter := .gutter | default "0" -}}
{{- $header := .header | default "full" -}}
{{- $href := .href -}}
{{- $icon := .icon -}}
{{- $iconStyle := "" -}}
{{- $iconRounded := .iconRounded | default false -}}
{{- $align := .align | default "start" -}}
{{- $style := .style | default "" -}}
{{- $sizes := .sizes | default "100vw" -}}
@@ -27,7 +30,9 @@
{{- $orientation := .orientation | default "stacked" -}}
{{- $padding := (string .padding) | default "auto" -}}
{{- $ratio := .ratio -}}
{{- $portrait := .portrait | default false -}}
{{- $thumbnail := .thumbnail -}}
{{- $anchor := .anchor | default "" -}}
{{- $title := .title -}}
{{- $subtle := .subtle -}}
{{- $button := .button -}}
@@ -55,8 +60,12 @@
{{- if not $title }}{{ $title = .Title }}{{ end -}}
{{- if not $href }}{{ $href = .RelPermalink }}{{ end -}}
{{- if not $description }}{{ $description = partial "utilities/GetDescription.html" (dict "page" .) }}{{ end -}}
{{- if not $thumbnail }}{{ $thumbnail = (or (and (reflect.IsMap .Params.Thumbnail) .Params.Thumbnail.url) .Params.Thumbnail) }}{{ end -}}
{{- if and (not $thumbnail) (not $icon) }}{{ $thumbnail = (or (and (reflect.IsMap .Params.Thumbnail) .Params.Thumbnail.url) .Params.Thumbnail) }}{{ end -}}
{{ if not $ratio }}
{{- if and (reflect.IsMap .Params.Thumbnail) .Params.Thumbnail.ratio }}{{ $ratio = .Params.Thumbnail.ratio }}{{ end -}}
{{ end }}
{{- if not $icon }}{{ $icon = .Params.icon }}{{ end -}}
{{- if not $anchor }}{{ $anchor = (or (and (reflect.IsMap .Params.Thumbnail) .Params.Thumbnail.anchor) "") }}{{ end -}}
{{- end -}}
{{ if (hasPrefix $orientation "horizontal") }}
@@ -67,6 +76,7 @@
{{ end }}
{{- if eq $orientation "none" }}{{ $thumbnail = "" }}{{ $icon = "" }}{{ end -}}
{{- if eq $body "none" }}{{ $description = "" }}{{ end -}}
<!-- Inline partial to render the card's body -->
{{- define "partials/card-body.html" -}}
@@ -78,7 +88,7 @@
{{- if $href -}}
<a href="{{ $href }}" class="{{ if $color }}link-bg-{{ $color }}{{ else }}card-body-link{{ end }} stretched-link">
<p class="card-title fs-5 fw-bold">{{ $title }}</p>
<p class="card-title fs-lg-5 fs-6 fw-bold">{{ $title }}</p>
{{ with $description }}
<div class="card-text {{ if $color }}link-bg-{{ $color }}{{ else }}card-body-link{{ end }}">
{{ . | safeHTML }}
@@ -87,7 +97,7 @@
</a>
{{- else -}}
<div>
{{ with $title }}<p class="card-title fs-5 fw-bold">{{ . }}</p>{{ end -}}
{{ with $title }}<p class="card-title fs-lg-5 fs-6 fw-bold">{{ . }}</p>{{ end -}}
{{ with $description }}<div class="card-text">{{ . | safeHTML }}</div>{{ end -}}
</div>
{{- end -}}
@@ -106,7 +116,7 @@
<p class="card-text"><small class="{{ if $color }}text-bg-{{ $color }}{{ else }}text-body-secondary{{ end }} text-uppercase">
{{- if in (slice "full" "publication") $keywords -}}
{{- partial "utilities/date.html" (dict "date" $page.Date "format" "long") -}}&nbsp;&bull;
{{ with $page.Date }}{{ partial "utilities/date.html" (dict "date" . "format" "long") }}&nbsp;&bull;{{ end -}}
{{ $page.ReadingTime | lang.FormatNumber 0 }} {{ i18n "minutesShort" }} {{ i18n "read" -}}
{{- end -}}
@@ -125,22 +135,55 @@
{{- end -}}
<!-- Main code -->
{{ if ne $gutter "0" }}<div class="g-{{ $gutter }}">{{ end }}
{{ if or (ne $gutter "0") ($wrapper) }}<div class="g-{{ $gutter }} {{ $wrapper }}">{{ end }}
{{ $stack := "fa-2x" }}
{{- if hasPrefix $orientation "horizontal" -}}
{{ $col1 := "" }}
{{ $col2 := "" }}
{{ if $thumbnail }}
{{ if eq $orientation "horizontal-sm" }}
{{ $stack = "fa-1x" }}
{{ $col1 = "col-4 col-md-2" }}
{{ $col2 = "col-8 col-md-10" }}
{{ else }}
{{ $col1 = "col-4" }}
{{ $col2 = "col-8" }}
{{ end }}
{{ else if $icon }}
{{ if eq $orientation "horizontal-sm" }}
{{ $stack = "fa-1x" }}
{{ $col1 = "col-2 col-sm-3 col-md-4 col-xl-2" }}
{{ $col2 = "col-10 col-sm-9 col-md-8 col-xl-10" }}
{{ else }}
{{ $col1 = "col-4" }}
{{ $col2 = "col-8" }}
{{ end }}
{{ end }}
<!-- Render horizontal card -->
<div class="card {{ $colorStyle }} {{ $class }}">
<div class="row g-0 row-cols-1 h-100{{ if $button }} pb-5{{ end }}">
<div class="{{ if eq $orientation "horizontal-sm" }}col-4 col-md-2{{ else }}col-4{{ end }}">
{{- if $thumbnail -}}
{{- partial $hook (dict "url" $thumbnail "ratio" (or $ratio "1x1") "sizes" $sizes "wrapper" "h-100 card-img-wrap" "class" "rounded-start card-img-h100 card-img-bg" "title" $title "loading" $loading) -}}
{{- else if $icon -}}
<div class="card-icon p-{{ $padding }} h-100 fa-wrapper d-flex align-items-{{ $align}} justify-content-center {{ $iconStyle }}">
{{- partial "assets/icon.html" (dict "icon" (printf "%s %s" $icon $style)) -}}
<div class="row g-0 row-cols-2 h-100{{ if $button }} pb-5{{ end }}">
{{- if $thumbnail -}}
<div class="{{ $col1 }}">
{{- partial $hook (dict "url" $thumbnail "ratio" (or $ratio "1x1") "portrait" $portrait "sizes" $sizes "anchor" $anchor "wrapper" "h-100 card-img-wrap" "class" "rounded-start card-img-h100 card-img-bg" "title" $title "loading" $loading) -}}
</div>
{{- else if $icon -}}
<div class="{{ $col1 }} p-{{ $padding }}">
<div class="card-icon {{ if $iconRounded }}fa-stack {{ $stack }} mx-auto{{ else }}fa-wrapper h-100 {{ end }} d-flex align-items-{{ $align}} justify-content-center {{ $iconStyle }}">
{{ if $iconRounded }}
{{- partial "assets/icon.html" (dict "icon" "fas circle fa-stack-2x") -}}
{{- partial "assets/icon.html" (dict "icon" (printf "%s fa-stack-1x fa-inverse" $icon)) -}}
{{ else }}
{{- partial "assets/icon.html" (dict "icon" (printf "%s %s" $icon $style)) -}}
{{ end }}
</div>
{{- end -}}
</div>
<div class="{{ if eq $orientation "horizontal-sm" }}col-8 col-md-10{{ else }}col-8{{ end }}">
</div>
{{- end -}}
<div class="{{ $col2 }}">
<div class="card-body d-flex p-{{ $padding }} flex-column h-100 flex-fill">
{{ if $page }}<div>{{ partial "card-caption.html" (dict "page" $page "keywords" $header "color" $color) }}</div>{{ end }}
<div class="flex-fill">
@@ -171,10 +214,15 @@
<!-- Render stacked / default card -->
<div class="card {{ $colorStyle }} {{ $class }} text-{{ $align }}">
{{- if $thumbnail -}}
{{- partial $hook (dict "url" $thumbnail "ratio" (or $ratio "16x9") "sizes" $sizes "wrapper" "card-img-wrap" "class" "card-img-top card-img-bg" "title" (or $alt $title) "loading" $loading) -}}
{{- partial $hook (dict "url" $thumbnail "ratio" (or $ratio "16x9") "portrait" $portrait "anchor" $anchor "sizes" $sizes "wrapper" "card-img-wrap" "class" "card-img-top card-img-bg" "title" (or $alt $title) "loading" $loading) -}}
{{- else if $icon -}}
<div class="card-icon p-{{ $padding }} {{ $iconStyle }} text-{{ $align }}">
{{- partial "assets/icon.html" (dict "icon" (printf "%s %s" $icon $style)) -}}
<div class="card-icon p-{{ $padding }} {{ $iconStyle }} text-{{ $align }} {{ if $iconRounded }}fa-stack {{ $stack }}{{ end }} w-100">
{{ if $iconRounded }}
{{- partial "assets/icon.html" (dict "icon" (printf "fas circle fa-stack-2x %s")) -}}
{{- partial "assets/icon.html" (dict "icon" (printf "%s fa-stack-1x fa-inverse" $icon)) -}}
{{ else }}
{{- partial "assets/icon.html" (dict "icon" (printf "%s %s" $icon $style)) -}}
{{ end }}
</div>
{{- end -}}
<div class="card-body d-flex flex-column p-{{ $padding }}">
@@ -204,4 +252,4 @@
</div>
{{- end -}}
{{ if ne $gutter "0" }}</div>{{ end }}
{{ if or (ne $gutter "0") ($wrapper) }}</div>{{ end }}

View File

@@ -15,15 +15,16 @@
{{- $mode := .mode -}}
{{- $modes := .modes -}}
{{- $plain := .plain | default false }}
{{- $anchor := .anchor }}
<!-- Split url into base and anchor when applicable (only relevant for vector images) -->
{{- $anchor := "" -}}
{{- $fileAnchor := "" -}}
{{- $segments := split $url "#" -}}
{{- if gt (len $segments) 2 -}}
{{- errorf "Invalid path or url: %q" $url -}}
{{- else if eq (len $segments) 2 }}
{{- $url = index $segments 0 -}}
{{- $anchor = index $segments 1 -}}
{{- $fileAnchor = index $segments 1 -}}
{{- end -}}
<!-- Obtain fallback URL and imageset definition -->
@@ -31,8 +32,10 @@
"page" $page
"url" .url
"ratio" $ratio
"portrait" $portrait
"plain" $plain
"imageset" true
"anchor" $anchor
) }}
{{ $fallbackURL := index $target "target" }}
{{ $imgset := index $target "set" }}
@@ -49,24 +52,26 @@
<!-- Generate image definition -->
{{- if $caption -}}
<figure {{ with $wrapper }}class="{{ . }}"{{ end }}>
{{ else }}
{{ with $wrapper }}<div class="{{ . }}">{{ end }}
{{ end }}
{{- if not $fileAnchor -}}
<img class="img-fluid {{ $class }}"
src="{{ $fallbackURL }}"
{{ if $lazy }}loading="lazy"{{ end }}
{{ with $priority }}fetchpriority="{{ . }}"{{ end }}
{{ with $imgset -}}srcset="{{ . }}" sizes="{{ $sizes }}"{{- end }}
{{ with $height }}height="{{ . }}"{{ end }}
{{ with $width }}width="{{ . }}"{{ end }}
{{ with (or $title $caption) }}alt="{{ . }}"{{ end }}>
{{- else }}
<svg class="{{ $class }}">
<use href="{{ $fallbackURL }}#{{ $fileAnchor }}"></use>
</svg>
{{ end }}
<div class="{{ if not $caption }}{{ $wrapper }}{{ end }}">
{{- if not $anchor -}}
<img class="img-fluid {{ $class }}"
src="{{ $fallbackURL }}"
{{ if $lazy }}loading="lazy"{{ end }}
{{ with $priority }}fetchpriority="{{ . }}"{{ end }}
{{ with $imgset -}}srcset="{{ . }}" sizes="{{ $sizes }}"{{- end }}
{{ with $height }}height="{{ . }}"{{ end }}
{{ with $width }}width="{{ . }}"{{ end }}
{{ with (or $title $caption) }}alt="{{ . }}"{{ end }}>
{{- else }}
<svg class="{{ $class }}">
<use href="{{ $fallbackURL }}#{{ $anchor }}"></use>
</svg>
{{ end }}
</div>
{{- if $caption -}}
<figcaption class="figure-caption{{ with $figclass }} {{ . }}{{ end }}">{{ $caption | safeHTML }}</figcaption>
</figure>
{{ else if $wrapper }}
</div>
{{- end -}}

View File

@@ -2,12 +2,14 @@
{{- $page := .page -}}
{{- $url := .url -}}
{{- $ratio := .ratio -}}
{{- $portrait := .portrait -}}
{{- $height := .height -}}
{{- $width := .width -}}
{{- $plain := .plain | default false }}
{{- $targetURL := "" -}}
{{- $set := "" -}}
{{- $imageset := .imageset | default false }}
{{- $anchor := .anchor | default "" -}}
<!-- Split url into base and anchor when applicable (only relevant for vector images) -->
{{- $segments := split $url "#" -}}
@@ -53,7 +55,11 @@
{{ warnf "Cannot find vector image resource: %q" $url -}}
{{ else }}
{{ $width := string (partial "utilities/GetWidth.html" (dict "path" $url "height" 500)) }}
{{ $dims = $dims | append (printf "%sx500" $width) }}
{{ if $width }}
{{ $dims = $dims | append (printf "%sx500" $width) }}
{{ else }}
{{ $dims = $dims | append "500" }}
{{ end }}
{{ end }}
{{ end }}
{{ else if $ratio }}
@@ -80,10 +86,27 @@
<!-- Derive image width and height -->
{{ if not $plain }}
{{ with $dims }}
{{ range $dim := (. | last 1) }}
{{ $width = (int (index (split $dim "x") 0)) }}
{{ $height = (int (index (split $dim "x") 1)) }}
{{ if $portrait }}
{{ with $dims }}
{{ $newDims := slice }}
{{ range $dim := . }}
{{ $width = (int (index (split $dim "x") 1)) }}
{{ $height = (int (index (split $dim "x") 0)) }}
{{- $newDims = $newDims | append (printf "%dx%d" (int $width) $height ) -}}
{{ end }}
{{ $dims = $newDims }}
{{ end }}
{{ $newWidth := $height }}
{{ $newHeight := $width }}
{{ $width = $newWidth }}
{{ $height = $newHeight }}
{{ else }}
{{ with $dims }}
{{ range $dim := (. | last 1) }}
{{ $width = (int (index (split $dim "x") 0)) }}
{{ $height = (int (index (split $dim "x") 1)) }}
{{ end }}
{{ end }}
{{ end }}
{{ end }}
@@ -96,13 +119,21 @@
"url" $url
"img" $img
"dims" ($dims | last 1)
"anchor" $anchor
"transform" $transform
"hook" $hook
"format" "jpg"
"format" "png"
"includeWidth" false
)}}
{{ if $imageset }}
{{- $set = partial "assets/helpers/image-set.html" (dict "url" $url "img" $img "dims" $dims "transform" $transform "hook" $hook) -}}
{{- $set = partial "assets/helpers/image-set.html" (dict
"url" $url
"img" $img
"dims" $dims
"anchor" $anchor
"transform" $transform
"hook" $hook
) -}}
{{ end }}
{{ end }}

View File

@@ -7,6 +7,7 @@
{{ $transform := .transform }}
{{ $format := .format }}
{{ $includeWidth := .includeWidth | default true }}
{{ $anchor := .anchor | default "" }}
{{ $host := (urls.Parse $url).Hostname }}
{{ $dir := (urls.Parse $url).Path }}
@@ -35,6 +36,7 @@
"width" $width
"height" $height
"format" $format
"anchor" $anchor
)}}
{{ if $includeWidth }}
{{ $imgset = $imgset | append (printf "%s %dw" $element $width) }}

View File

@@ -27,6 +27,7 @@
{{- if eq $priority "auto" }}{{ $priority = "" }}{{ end -}}
{{- $sizes := .sizes | default "100vw" -}}
{{- $plain := .plain | default false -}}
{{- $anchor := .anchor | default "" -}}
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
{{- $url := .url -}}
@@ -49,6 +50,7 @@
"sizes" $sizes
"absoluteURL" $absoluteURL
"plain" $plain
"anchor" $anchor
)
-}}

View File

@@ -25,6 +25,7 @@
{{- $page := .page -}}
{{- $anchor := "" -}}
{{- $text := .text -}}
{{- $title := .title -}}
{{- $class := .class -}}
<!-- Main code -->
@@ -72,5 +73,13 @@
{{- end -}}
{{ if not $error -}}
<a {{ with $class }}class="{{ . }}" {{ end }}href="{{ $destination | safeURL }}"{{ with $target }} target="{{ . }}"{{ end }}{{ with $rel }} rel="{{ . }}"{{ end }}>{{ $text }}</a>
<a
{{- with $destination }} href="{{ . | safeURL }}"{{ end -}}
{{- with $class }}class="{{ . }}" {{ end -}}
{{- with $target }} target="{{ . }}"{{ end -}}
{{- with $rel }} rel="{{ . }}"{{ end -}}
{{- with $title }} title="{{ . }}"{{ end -}}
>
{{- $text -}}
</a>
{{- end }}

View File

@@ -16,6 +16,7 @@
{{- $page := .page -}}
{{- $menu := .menu -}}
{{- $parent := .parent -}}
{{- $plain := .plain | default false -}}
{{- $class := .class -}}
{{- $cue := .cue | default site.Params.main.externalLinks.cue -}}
{{- $tab := .tab | default site.Params.main.externalLinks.tab -}}
@@ -23,7 +24,7 @@
{{- $menuURL := "" -}}
{{ if or (strings.HasPrefix $menu.PageRef "http") (strings.HasPrefix $menu.URL "http") }}
{{ $menuURL = or $menu.PageRef $menu.URL }}
{{ else }}
{{ else if (or $menu.PageRef $menu.URL) }}
{{- $menuURL = urls.JoinPath $baseURL ((or $menu.PageRef $menu.URL) | relLangURL) -}}
{{ end }}
{{- $pageURL := $page.RelPermalink -}}
@@ -46,6 +47,11 @@
{{- if $cue -}}
{{ $suffix = partial "assets/icon.html" (dict "icon" "fas up-right-from-square fa-2xs") }}
{{- end -}}
{{ else if $menuURL }}
{{ $ref := partial "utilities/GetPage.html" (dict "url" $url.Path "page" $page) }}
{{- if not $ref -}}
{{- warnf "partial [assets/navbar-item.html] - Cannot find page of menu item '%s': %s" $menu.Name $url -}}
{{ end }}
{{ end -}}
{{- $mainNav := urlize (lower $menu.Name) -}}
@@ -56,7 +62,7 @@
{{- $mainNav = urlize (lower $parent.Name) -}}
{{- $childNav = urlize (lower $menu.Name) -}}
{{- $anchorClass = "dropdown-item" -}}
{{- else if $menu.HasChildren -}}
{{- else if and (not $plain) $menu.HasChildren -}}
{{- $anchorClass = "nav-link dropdown-toggle" -}}
{{- $button = " role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\"" -}}
{{- else -}}
@@ -70,20 +76,29 @@
<!-- 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>
{{ if $menu.Params.button }}
{{ partial "assets/button.html" (dict
"title" $menu.Name
"icon" $menu.Pre
"href" $menuURL
"size" "sm"
)}}
{{ else }}
<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 }}
{{ if $menuURL }} href="{{ $menuURL }}{{ $params | safeHTMLAttr }}"{{ with $externalHref }} {{ . | safeHTMLAttr }}{{ end }}{{ 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 or (not $isIcon) $plain }}{{ $menu.Name }}{{ end }}</span>
{{- with $menu.Post }}{{ . }}{{ end -}}
{{- if not $isIcon }}&nbsp;{{ $suffix }}{{ end -}}
</a>
{{ end }}
{{ end }}

View File

@@ -154,16 +154,16 @@
{{- $pre := .Pre -}}
{{- $post := .Post -}}
{{- $theme := "light" -}}
{{- if in (slice "primary" "secondary" "success" "danger" "black") $color }}{{ $theme = "dark" }}{{ end -}}
{{- if in (slice "body" "body-tertiary") $color }}{{ $theme = "" }}{{ end -}}
{{- if not $color }}{{ $theme = "" }}{{ end -}}
{{- $class := .class -}}
{{- $contrast := false -}}
{{- if in (slice "primary" "secondary" "success" "danger") $color }}{{ $contrast = true }}{{ end -}}
{{- $flex := false }}
{{ if gt (where $menus "Params.spacing" true | len) 0 }}
{{ $flex = 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) -}}
@@ -174,7 +174,7 @@
{{ if $overlay }}
data-bs-theme="{{ $overlayMode }}"
data-bs-overlay="{{ $overlayMode }}"
{{ else }}{{ with $theme }}data-bs-theme="{{ . }}"{{ end }}{{ end }}
{{ end }}
{{ if $overlay }}data-navbar-color="{{ $color }}"{{ end }}
>
<div class="container-xxl p-0">
@@ -213,9 +213,9 @@
<div class="d-flex align-items-center">
<button class="navbar-toggler main-nav-toggler collapsed p-0" type="button" data-bs-toggle="collapse" data-bs-target="#{{ $id }}-collapse"
aria-controls="{{ $id }}" aria-expanded="false" aria-label="{{ T "toggleMainNav" }}">
<span class="toggler-icon top-bar emphasis{{ with $theme }}-{{ . }}{{ end }}"></span>
<span class="toggler-icon middle-bar emphasis{{ with $theme }}-{{ . }}{{ end }}"></span>
<span class="toggler-icon bottom-bar emphasis{{ with $theme }}-{{ . }}{{ end }}"></span>
<span class="toggler-icon top-bar emphasis"></span>
<span class="toggler-icon middle-bar emphasis"></span>
<span class="toggler-icon bottom-bar emphasis"></span>
</button>
</div>
</div>
@@ -225,23 +225,27 @@
{{- if and $search (not $searchModal) }}{{ partial "assets/search-input.html" }}{{ end -}}
<!-- Render top-menu items (maximum depth of 2) -->
<ul class="navbar-nav ms-auto">
<ul class="navbar-nav {{ if $flex }}d-flex w-100{{ else }}ms-auto{{ end }}">
{{- range $menu := $menus -}}
<li class="nav-item{{ if .HasChildren }} dropdown{{ if $horizontal }} dropdown-horizontal-{{ $size }}{{ end }}{{ end }}">
{{- partial "assets/navbar-item.html" (dict "menu" $menu "page" $page) -}}
{{- if .HasChildren -}}
<ul class="dropdown-menu">
{{- range .Children -}}
<li>{{- partial "assets/navbar-item.html" (dict "menu" . "parent" $menu "page" $page) -}}</li>
{{- end -}}
</ul>
{{- end -}}
</li>
{{ if $menu.Params.spacing }}
<li class="nav-item flex-grow-1"></li>
{{ else }}
<li class="nav-item {{ if .HasChildren }} dropdown{{ if $horizontal }} dropdown-horizontal-{{ $size }}{{ end }}{{ end }}">
{{- partial "assets/navbar-item.html" (dict "menu" $menu "page" $page) -}}
{{- if .HasChildren -}}
<ul class="dropdown-menu">
{{- range .Children -}}
<li>{{- partial "assets/navbar-item.html" (dict "menu" . "parent" $menu "page" $page) -}}</li>
{{- end -}}
</ul>
{{- end -}}
</li>
{{- end -}}
{{- end -}}
<!-- Insert divider if applicable -->
{{- if and $menus (or $enableLanguage $enableVersions) -}}
<li class="nav-item py-2 py-md-1 col-12 col-md-auto d-none d-{{ $size }}-block">
<li class="nav-item py-2 py-md-1 col-12 col-md-auto d-none d-{{ $size }}-block me-auto">
<div class="vr d-none d-md-flex h-100 mx-md-2"></div>
</li>
<li><hr class="dropdown-divider-bg"></li>
@@ -256,21 +260,21 @@
<!-- Insert language switcher if applicable -->
{{- if $enableLanguage -}}
{{- $currentLang := $page.Language.Lang -}}
<li class="nav-item dropdown">
<li class="nav-item dropdown me-auto">
<a class="nav-link dropdown-toggle d-{{ $size }}-none" href="#!" role="button" data-bs-toggle="dropdown" aria-label="{{ T "languageSwitcherLabel" }}" aria-expanded="false">
{{- partial "assets/icon.html" (dict "icon" "fas globe fa-fw" "spacing" false) }}&nbsp;{{ T "languageSwitcherLabel" }}
</a>
<a class="nav-link dropdown-toggle d-none d-{{ $size }}-block" href="#!" role="button" data-bs-toggle="dropdown" aria-label="{{ T "languageSwitcherLabel" }}" aria-expanded="false">
{{- partial "assets/icon.html" (dict "icon" "fas globe fa-fw" "spacing" false) }}
</a>
<ul class="dropdown-menu dropdown-menu-end ">
<ul class="dropdown-menu dropdown-menu-end " id="language-selector">
{{- if $page.IsTranslated -}}
{{- range $page.AllTranslations -}}
<li><a class="dropdown-item {{ if eq .Language.Lang $currentLang }}active{{ end }}" href="{{ .RelPermalink }}">{{ .Language.LanguageName }}</a></li>
<li><a class="dropdown-item {{ if eq .Language.Lang $currentLang }}active{{ end }}" hreflang="{{.Language.Lang}}" href="{{ .RelPermalink }}">{{ .Language.LanguageName }}</a></li>
{{- end -}}
{{- else -}}
{{- range site.Languages -}}
<li><a class="dropdown-item" href="{{ urls.JoinPath $baseURL .Lang }}">{{ default .Lang .LanguageName }}</a></li>
<li><a class="dropdown-item" href="{{ urls.JoinPath $baseURL .Lang }}" hreflang="{{.Lang}}">{{ default .Lang .LanguageName }}</a></li>
{{- end -}}
{{- end -}}
</ul>
@@ -284,7 +288,7 @@
<!-- Insert modal search button -->
{{- if $searchModal }}
<li class="nav-item py-2 py-md-1 col-12 col-md-auto d-none d-{{ $size }}-block">
<li class="nav-item py-2 py-md-1 col-12 col-md-auto d-none d-{{ $size }}-block me-auto">
<div class="vr d-none d-md-flex h-100 mx-md-2"></div>
</li>
<li><hr class="dropdown-divider-bg"></li>

View File

@@ -64,11 +64,11 @@
{{- with index . "layout" }}{{ $layout = . }}{{ end -}}
{{- with index . "pane" }}{{ $pane = . }}{{ end -}}
{{- with index . "type" }}{{ $type = . }}{{ end -}}
{{- with index . "vertical" }}{{ $vertical = partial "utilities/CastBool.html" . }}{{ end -}}
{{- if (isset . "vertical") }}{{ $vertical = partial "utilities/CastBool.html" (index . "vertical") }}{{ end -}}
{{- with index . "width" }}{{ $width = . }}{{ end -}}
{{- with index . "kind" }}{{ $kind = . }}{{ end -}}
{{- with index . "ratio" }}{{ $ratio = . }}{{ end -}}
{{- with index . "wrap" }}{{ $wrap = partial "utilities/CastBool.html" . }}{{ end -}}
{{- if (isset . "wrap") }}{{ $wrap = partial "utilities/CastBool.html" (index . "wrap") }}{{ end -}}
{{- end -}}
{{ if isset $page.Params "nested" }}

View File

@@ -26,8 +26,8 @@
{{- $group := .group -}}
{{- $data := .menu -}}
{{- $doc_slug := urls.JoinPath $baseURL ($group.title | urlize) -}}
{{- $href := or $group.link (partial "utilities/GetStaticURL" (dict "url" $doc_slug)) -}}
{{- $doc_slug := urls.JoinPath $baseURL ($group.title | urlize) -}}
{{- $href := or $group.link $doc_slug -}}
{{- $collapsed := strings.HasPrefix $page.RelPermalink $href -}}
<li class="mb-1">
@@ -78,10 +78,10 @@
{{ if hasPrefix . "http" }}
{{ $href = . }}
{{ else }}
{{- $href = (partial "utilities/GetStaticURL" (dict "url" (urls.JoinPath $baseURL .))) -}}
{{- $href = urls.JoinPath $baseURL . -}}
{{ end }}
{{ else }}
{{- $href = partial "utilities/GetStaticURL" (dict "url" (urls.JoinPath $baseURL ($title | urlize))) -}}
{{- $href = urls.JoinPath $baseURL ($title | urlize) -}}
{{ end }}
{{- $active := eq (strings.TrimSuffix "/" $page.RelPermalink) (strings.TrimSuffix "/" $href) -}}
@@ -121,7 +121,8 @@
<nav class="sidebar flex-shrink-0 ps-1 pt-3" aria-label="{{ (strings.FirstUpper $section) }} navigation">
{{- $sectionBreak := false -}}
{{- $level := 0 -}}
{{- $baseURL := relLangURL (path.Join $section $version) }}
{{ $baseURL := $page.Scratch.Get "baseURL" | default "/" -}}
{{ $baseURL = urls.JoinPath "/" (strings.TrimPrefix $baseURL (urls.JoinPath $section $version | relLangURL)) }}
<ul class="list-unstyled ps-0">
{{- range $index, $item := $data -}}

View File

@@ -7,6 +7,9 @@
{{ $page := .page }}
{{ $input := .input }}
{{ $args := .args }}
{{ $sortable := .sortable | default false }}
{{ $paging := .paging | default false }}
{{ $searchable := .searchable | default false }}
{{- $responsiveVals := slice "table-responsive" "table-responsive-none" "table-responsive-sm" "table-responsive-md" "table-responsive-lg" "table-responsive-xl" "table-responsive-xxl" -}}
{{- $responsive := intersect $args $responsiveVals -}}
@@ -18,13 +21,21 @@
{{ $responsive = (slice "table-responsive") -}}
{{- end -}}
{{- $class := delimit $main " " -}}
{{ if or $sortable $paging $searchable }}{{ $class = trim (printf "%s data-table" $class) " " }}{{ end }}
{{- $input := $input | $page.RenderString }}
{{- $input = replace $input "style=\"text-align:left\"" "class=\"text-start\"" -}}
{{- $input = replace $input "style=\"text-align:center\"" "class=\"text-center\"" -}}
{{- $input = replace $input "style=\"text-align:right\"" "class=\"text-end\"" -}}
{{- $class := delimit $main " " -}}
{{ $attributes := "" }}
{{ if $sortable }}{{ $attributes = printf "%s data-table-sortable=true" $attributes }}{{ end }}
{{ if $paging }}{{ $attributes = printf "%s data-table-paging=true" $attributes }}{{ end }}
{{ if $searchable }}{{ $attributes = printf "%s data-table-searchable=true" $attributes }}{{ end }}
{{- $old := "<table>" -}}
{{- $new := printf "<table class=\"table %s\">" $class -}}
{{- $new := printf "<table class=\"table %s\" %s>" $class (trim $attributes " ") -}}
{{ $input := replace $input $old $new -}}
{{- with $responsive }}<div class="{{ delimit . " " }}">{{ end -}}
{{ $input | safeHTML }}

View File

@@ -4,6 +4,7 @@
{{ else }}
{{ $page_modules = $page_modules | append .Params.modules }}
{{ end }}
{{ with .Scratch.Get "dependencies" }}{{ $page_modules = append $page_modules . | uniq }}{{ end }}
{{ $config := page.Scratch.Get "modules" }}
{{ if not $config }}
@@ -26,5 +27,20 @@
{{- with index . "state" }}{{ $state = . }}{{ end -}}
{{- end -}}
{{- partial "footer/scripts.html" (dict "filename" $filename "match" $match "header" false "skipTemplate" $skipTemplate "state" $state "page" .) }}
{{ $localize := false }}
{{- if reflect.IsSlice $config.localize -}}
{{- if in $config.localize $mod}}
{{- $localize = true -}}
{{- end -}}
{{- end -}}
{{- partial "footer/scripts.html" (dict
"filename" $filename
"match" $match
"header" false
"skipTemplate" $skipTemplate
"state" $state
"localize" $localize
"page" page
) }}
{{- end -}}

View File

@@ -1,3 +1,18 @@
<!--
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" "scripts" "args" . "group" "partial") }}
{{- errorf "partial [footer/scripts.html] - Invalid arguments" -}}
{{ $error = true }}
{{ end }}
<!-- Initialize arguments -->
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
{{- $filename := .filename | default "js/main.bundle.js" -}}
{{- $match := .match | default "{js/*.js,js/vendor/**.js}" -}}
@@ -5,26 +20,41 @@
{{- $header := .header -}}
{{- $core := .core | default false -}}
{{- $skipTemplate := .skipTemplate | default false -}}
{{- $localize := .localize | default false }}
{{- $state := "async" -}}
{{- with .state }}{{ $state = . }}{{ end -}}
{{- $state := .state | default "async" -}}
{{- if or $header (eq $state "immediate") }}{{ $state = "" }}{{ end -}}
{{- $supportedStates := slice "defer" "async" "immediate" -}}
{{- if and $state (not (in $supportedStates $state)) -}}
{{- errorf "partial [footer/script.html] - Invalid value for param 'processing': %s" $state -}}
{{- end -}}
{{ $config := page.Scratch.Get "modules" }}
{{ if not $config }}
{{ errorf "partial [footer/scripts.html] - Cannot initialize module configuration" }}
{{ end }}
{{- $modules := "" -}}
{{ if $core }}
{{ $config := $page.Scratch.Get "modules" }}
{{ if not $config }}
{{ errorf "partial [footer/scripts.html] - Cannot initialize module configuration" }}
{{ end }}
{{- $modules = $config.core -}}
{{- if reflect.IsSlice $config.localize -}}
{{- range $index, $mod := $modules -}}
{{- if in $config.localize $mod}}
{{- $localize = true -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- $bundle := partial "utilities/bundle" (dict "match" $match "filename" $filename "modules" $modules "basepath" "js/modules" "all" true "debugging" site.Params.debugging.showJS) -}}
{{ if $localize }}
{{ $filename = path.Join (path.Dir $filename) (printf "%s.%s%s" (path.BaseName $filename) $page.Language.Lang (path.Ext $filename)) }}
{{ end }}
<!-- Main code -->
{{- $bundle := partial "utilities/bundle" (dict
"match" $match
"filename" $filename
"modules" $modules
"basepath" "js/modules"
"all" true
"debugging" site.Params.debugging.showJS
) -}}
{{- $js := $bundle -}}
{{- if not $skipTemplate -}}
{{- $js = $bundle | resources.ExecuteAsTemplate $filename $page -}}

View File

@@ -14,6 +14,7 @@
{{ end }}
{{ $page_modules := slice | append .Page.Params.modules }}
{{ with .Scratch.Get "dependencies" }}{{ $page_modules = append $page_modules . | uniq }}{{ end }}
{{- $modules := $config.optional | intersect $page_modules -}}
{{- range $index, $mod := $modules -}}
{{- $source := printf "scss/%s.scss" $mod -}}

View File

@@ -17,6 +17,8 @@
{{ end -}}
{{ end -}}
{{ $alt := slice .Site.Params.schema.twitter .Site.Params.schema.linkedin .Site.Params.schema.github }}
<script type="application/ld+json">
{
"@context": "https://schema.org",
@@ -31,17 +33,7 @@
{{ end -}}
"name": "{{ .Site.Params.schema.name }}",
"url": {{ print $baseURL }},
"sameAs": [
{{ with .Site.Params.schema.twitter -}}
{{ . }}
{{ end -}}
{{ with .Site.Params.schema.linkedin -}}
, {{ . }}
{{ end -}}
{{ with .Site.Params.schema.github -}}
, {{ . }}
{{ end -}}
],
"sameAs": {{ $alt | uniq | complement (slice "") }},
{{ if eq .Site.Params.schemaType "Organization" -}}
"logo": {
"@type": "ImageObject",
@@ -103,8 +95,8 @@
"@id": {{ print $baseURL "#/schema/person/1" }}
},
{{ end -}}
"datePublished": "{{ .Date.Format "2006-01-02T15:04:05CET" }}",
"dateModified": "{{ .Lastmod.Format "2006-01-02T15:04:05CET" }}",
{{ with .Date }}"datePublished": "{{ .Format "2006-01-02T15:04:05CET" }}",{{ end -}}
{{ with .Lastmod }}"dateModified": "{{ .Format "2006-01-02T15:04:05CET" }}",{{ end -}}
"breadcrumb": {
"@id": {{ print .Permalink "#/schema/breadcrumb/1" }}
},
@@ -151,8 +143,8 @@
"mainEntityOfPage": {
"@id": {{ .Permalink }}
},
"datePublished": "{{ .Date.Format "2006-01-02T15:04:05CET" }}",
"dateModified": "{{ .Lastmod.Format "2006-01-02T15:04:05CET" }}",
{{ with .Date }}"datePublished": "{{ .Format "2006-01-02T15:04:05CET" }}",{{ end -}}
{{ with .Lastmod }}"dateModified": "{{ .Format "2006-01-02T15:04:05CET" }}",{{ end -}}
"author": {
"@id": {{ print $baseURL "#/schema/person/2" }}
},

View File

@@ -0,0 +1,9 @@
{{ with .module }}
{{- $dependencies := page.Scratch.Get "dependencies" -}}
{{- if reflect.IsSlice $dependencies -}}
{{- $dependencies = complement $dependencies . -}}
{{ else }}
{{- $dependencies = slice . -}}
{{ end }}
{{- page.Scratch.Set "dependencies" $dependencies -}}
{{ end }}

View File

@@ -4,6 +4,7 @@
{{ $optional := slice }}
{{ $excludeSCSS := slice }}
{{ $disableTemplate := slice }}
{{ $localize := slice }}
{{ $modules := dict }}
{{ range $key, $mod := $page.Site.Params.modules }}
@@ -37,13 +38,24 @@
{{ $disableTemplate = $disableTemplate | append $key }}
{{ end }}
{{ if eq (index $mod "localize") true }}
{{ $localize = $localize | append $key }}
{{ end }}
{{ $modules = merge $modules (dict $key $mod) }}
{{ else }}
{{ warnf "Unsupported module parameter: %s" $key }}
{{ end }}
{{ end }}
{{ $modules := dict "modules" $modules "core" $core "optional" $optional "excludeSCSS" $excludeSCSS "disableTemplate" $disableTemplate }}
{{ $modules := dict
"modules" $modules
"core" $core
"optional" $optional
"excludeSCSS" $excludeSCSS
"disableTemplate" $disableTemplate
"localize" $localize
}}
{{- if and $page.IsPage (not (in $core "bootstrap")) -}}
{{- errorf "Bootstrap is a required module, please add it to 'modules.core' in your site parameters" -}}

View File

@@ -0,0 +1,3 @@
{{ with .GitInfo }}
&bull;&nbsp;<a href="{{ site.Params.docs.github | default site.Params.schema.github }}/commit/{{ .Hash }}">{{ .Subject }} ({{ .AbbreviatedHash }})</a>
{{ end -}}

View File

@@ -49,7 +49,7 @@
<!-- Main code -->
{{ $show := false -}}
{{ if not $error }}
{{ with .Get "show" }}{{ $show = partial "utilities/CastBool.html" . }}{{ end -}}
{{ if isset .Params "show" }}{{ $show = partial "utilities/CastBool.html" (.Get "show") }}{{ end -}}
<div class="accordion-item">
{{- with $header -}}

View File

@@ -12,19 +12,25 @@
{{ $error = true }}
{{ end }}
<!-- Initialize arguments and default values -->
{{- $id := printf "accordion-%d" .Ordinal -}}
{{- $class := "" -}}
{{- $open := false -}}
{{- $body := .Inner -}}
{{ if .IsNamedParams }}
{{ with .Get "id" }}{{ $id = . }}{{ end }}
{{ with .Get "class" }}{{ $class = . }}{{ end }}
{{ if isset .Params "always-open" }}{{ $open = partial "utilities/CastBool.html" (.Get "always-open") }}{{ end -}}
{{ end }}
{{- if $open -}}
{{- $pattern := printf "data-bs-parent=\"#%s\"" $id -}}
{{- $body = (replace .Inner $pattern "") }}
{{- end -}}
<!-- Main code -->
{{ if not $error }}
{{- $id := printf "accordion-%d" .Ordinal -}}
{{ with .Get "id" }}{{ $id = . }}{{ end }}
{{- $class := .Get "class" | default "" -}}
{{- $open := false -}}
{{ with .Get "always-open" }}{{ $open = partial "utilities/CastBool.html" . }}{{ end -}}
{{- $body := .Inner -}}
{{- if $open -}}
{{- $pattern := printf "data-bs-parent=\"#%s\"" $id -}}
{{- $body = (replace .Inner $pattern "") }}
{{- end -}}
<div id="{{ $id }}" class="accordion mb-3{{ with $class }} {{ . }}{{ end }}">
{{- $body | safeHTML -}}
</div>

View File

@@ -27,7 +27,9 @@
{{ $icon = partial "assets/icon.html" (dict "icon" (printf "%s fa-2x fa-fw" .)) }}
{{ end }}
{{ $dismissible := false -}}
{{ with .Get "dismissible" }}{{ $dismissible = partial "utilities/CastBool.html" . }}{{ end -}}
{{- if and .IsNamedParams (isset .Params "dismissible") }}
{{ $dismissible = partial "utilities/CastBool.html" (.Get "dismissible") }}
{{ end }}
{{- $class := .Get "class" | default "" -}}
{{ $body := trim .Inner " \r\n" -}}

View File

@@ -28,7 +28,9 @@
{{ end }}
{{ $parent := false -}}
{{ with .Get "parent" }}{{ $parent = partial "utilities/CastBool.html" . }}{{ end -}}
{{- if .IsNamedParams }}
{{ if isset .Params "parent" }}{{ $parent = partial "utilities/CastBool.html" (.Get "parent") }}{{ end -}}
{{ end }}
<!-- Main code -->
{{ if not $error }}

View File

@@ -26,7 +26,7 @@
{{ $size := .Get "size" | default "md" -}}
{{ $color := .Get "color" | default "primary" -}}
{{ $outline := false -}}
{{ with .Get "outline" }}{{ $outline = partial "utilities/CastBool.html" . }}{{ end -}}
{{ if isset .Params "outline" }}{{ $outline = partial "utilities/CastBool.html" (.Get "outline") }}{{ end -}}
{{ $badge := .Get "badge" | default "" -}}
{{ $label := or (.Get "label") (.Get "aria-label") | default "" -}}
{{ $tooltip := .Get "tooltip" | default "" -}}
@@ -43,11 +43,11 @@
{{- $order := .Get "order" | default "last" -}}
{{- $justify := .Get "justify" | default "center" -}}
{{- $cue := site.Params.main.externalLinks.cue -}}
{{ with .Get "cue" }}{{ $show = partial "utilities/CastBool.html" . }}{{ end -}}
{{ if isset .Params "cue" }}{{ $cue = partial "utilities/CastBool.html" (.Get "cue") }}{{ end -}}
{{- $tab := default site.Params.main.externalLinks.tab -}}
{{ with .Get "tab" }}{{ $show = partial "utilities/CastBool.html" . }}{{ end -}}
{{ if isset .Params "tab" }}{{ $tab = partial "utilities/CastBool.html" (.Get "tab") }}{{ end -}}
{{- $spacing := default (not .Parent) -}}
{{ with .Get "spacing" }}{{ $show = partial "utilities/CastBool.html" . }}{{ end -}}
{{ if isset .Params "spacing" }}{{ $spacing = partial "utilities/CastBool.html" (.Get "spacing") }}{{ end -}}
<!-- Main code -->
{{ if not $error }}

View File

@@ -29,6 +29,8 @@
{{- $subtle := .Get "subtle" | default false -}}
{{- $button := .Get "button" | default false -}}
{{- $buttonType := .Get "buttonType" | default "" -}}
{{- $iconRounded := .Get "iconRounded" | default false -}}
{{- $scroll := .Get "scroll" | default false -}}
{{ $inner := .Scratch.Get "inner" }}
{{ $input := trim .Inner " \r\n" }}
@@ -58,5 +60,7 @@
"subtle" $subtle
"button" $button
"buttonType" $buttonType
"iconRounded" $iconRounded
"scroll" $scroll
)
-}}

View File

@@ -21,6 +21,7 @@
{{- $gutter := partial "utilities/GetArgParent" (dict "page" . "arg" "gutter") | default "0" -}}
{{- $header := partial "utilities/GetArgParent" (dict "page" . "arg" "header") | default "full" -}}
{{- $icon := .Get "icon" -}}
{{- $iconRounded := partial "utilities/GetArgParent" (dict "page" . "arg" "iconRounded") | default false -}}
{{- $align := partial "utilities/GetArgParent" (dict "page" . "arg" "align") | default "start" -}}
{{- $style := partial "utilities/GetArgParent" (dict "page" . "arg" "style") | default "" -}}
{{- $subtle := partial "utilities/GetArgParent" (dict "page" . "arg" "subtle") | default false -}}
@@ -31,9 +32,13 @@
{{- $page := .Page -}}
{{- $path := .Get "path" -}}
{{- $thumbnail := .Get "thumbnail" -}}
{{- $anchor := .Get "anchor" -}}
{{- $title := .Get "title" -}}
{{- $button := partial "utilities/GetArgParent" (dict "page" . "arg" "button") | default false -}}
{{- $buttonType := partial "utilities/GetArgParent" (dict "page" . "arg" "buttonType") | default "" -}}
{{- $cols := partial "utilities/GetArgParent" (dict "page" . "arg" "cols") | default 3 -}}
{{- $scroll := partial "utilities/GetArgParent" (dict "page" . "arg" "scroll") | default false -}}
{{- $wrapper := "" -}}
<!-- Override arguments -->
{{ if $path }}
@@ -48,6 +53,11 @@
{{ $class = (printf "h-100 %s" $class) }}
{{ end }}
{{ if $scroll }}
{{ $wrapper = printf "card-block-%d p-0" $cols }}
{{ end }}
<!-- Main code -->
{{ if not $error -}}
<!-- Render card -->
@@ -64,11 +74,15 @@
"description" $description
"ratio" $ratio
"icon" $icon
"iconRounded" $iconRounded
"align" $align
"style" $style
"subtle" $subtle
"scroll" $scroll
"wrapper" $wrapper
"thumbnail" $thumbnail
"loading" $loading
"anchor" $anchor
"alt" $alt
"button" $button
"buttonType" $buttonType

View File

@@ -49,8 +49,10 @@
{{- errorf "File format not supported (line %s): %s" .Position $file -}}
{{- end -}}
{{ $show := .Get "show" | default true -}}
{{ $full := .Get "full" | default true -}}
{{- $show := true -}}
{{ if isset .Params "show" }}{{ $show = partial "utilities/CastBool.html" (.Get "show") }}{{ end -}}
{{- $full := true -}}
{{ if isset .Params "full" }}{{ $full = partial "utilities/CastBool.html" (.Get "full") }}{{ end -}}
{{- $class := .Get "class" | default "" -}}
<!-- Main code -->

View File

@@ -33,8 +33,10 @@
{{- $extension := strings.TrimLeft "." (path.Ext $file) }}
{{- $lang := .Get "lang" | default $extension -}}
{{- $id := .Get "id" | default (printf "file-collapse-%d" .Ordinal) -}}
{{ $show := .Get "show" | default true -}}
{{ $full := .Get "full" | default true -}}
{{- $show := true -}}
{{ if isset .Params "show" }}{{ $show = partial "utilities/CastBool.html" (.Get "show") }}{{ end -}}
{{- $full := true -}}
{{ if isset .Params "full" }}{{ $full = partial "utilities/CastBool.html" (.Get "full") }}{{ end -}}
{{- $class := .Get "class" | default "" -}}
<!-- Main code -->

View File

@@ -25,6 +25,7 @@
{{- $loading := "" -}}
{{- $error := false -}}
{{- $plain := false -}}
{{- $anchor := "" -}}
{{- if .IsNamedParams -}}
{{ $url = .Get "src" | default "" -}}
@@ -36,9 +37,10 @@
{{ $title = .Get "title" | default "" -}}
{{ $caption = .Get "caption" | default "" -}}
{{ $figclass = .Get "figclass" | default "" -}}
{{ with .Get "mode" }}{{ $mode = partial "utilities/CastBool.html" . }}{{ end -}}
{{ with .Get "portrait" }}{{ $portrait = partial "utilities/CastBool.html" . }}{{ end -}}
{{ with .Get "plain" }}{{ $plain = partial "utilities/CastBool.html" . }}{{ end -}}
{{ if isset .Params "mode" }}{{ $mode = partial "utilities/CastBool.html" (.Get "mode") }}{{ end -}}
{{ if isset .Params "portrait" }}{{ $portrait = partial "utilities/CastBool.html" (.Get "portrait") }}{{ end -}}
{{ if isset .Params "plain" }}{{ $plain = partial "utilities/CastBool.html" (.Get "plain") }}{{ end -}}
{{ $anchor = .Get "anchor" | default "" -}}
{{ else -}}
{{ $url = .Get 0 }}
{{ end -}}
@@ -61,6 +63,7 @@
"mode" $mode
"portrait" $portrait
"plain" $plain
"anchor" $anchor
"loading" $loading
"page" .Page)
-}}

View File

@@ -24,9 +24,9 @@
{{- end -}}
{{- $fade := false -}}
{{ with .Get "fade" }}{{ $fade = partial "utilities/CastBool.html" . }}{{ end -}}
{{ if isset .Params "fade" }}{{ $fade = partial "utilities/CastBool.html" (.Get "fade") }}{{ end -}}
{{- $parentFade := false }}
{{ with .Parent.Get "fade" }}{{ $parentFade = partial "utilities/CastBool.html" . }}{{ end -}}
{{ if isset .Parent.Params "fade" }}{{ $parentFade = partial "utilities/CastBool.html" (.Parent.Get "fade") }}{{ end -}}
{{ $fade = or $fade $parentFade }}
{{- $header := .Get "header" | default "" -}}
{{- $class := .Get "class" | default "" -}}

View File

@@ -19,9 +19,9 @@
{{ $supportedNavTypes := slice "tabs" "pills" "underline" "callout" -}}
{{ $vertical := false -}}
{{ with .Get "vertical" }}{{ $vertical = partial "utilities/CastBool.html" . }}{{ end -}}
{{ if isset .Params "vertical" }}{{ $vertical = partial "utilities/CastBool.html" (.Get "vertical") }}{{ end -}}
{{ $wrap := false -}}
{{ with .Get "wrap" }}{{ $wrap = partial "utilities/CastBool.html" . }}{{ end -}}
{{ if isset .Params "wrap" }}{{ $wrap = partial "utilities/CastBool.html" (.Get "wrap") }}{{ end -}}
{{- if and (eq $type "tabs") $vertical -}}
{{- errorf "Tabs do not support vertical layout" -}}

View File

@@ -29,9 +29,9 @@
{{ if eq $style "light" }}{{ $inverseStyle = "dark" }}{{ end -}}
{{ $color := .Get "color" | default "" -}}
{{ $searchParam := true -}}
{{ with .Get "search" }}{{ $searchParam = partial "utilities/CastBool.html" . }}{{ end -}}
{{ if isset .Params "search" }}{{ $searchParam = partial "utilities/CastBool.html" (.Get "search") }}{{ end -}}
{{ $modeParam := true -}}
{{ with .Get "mode" }}{{ $modeParam = partial "utilities/CastBool.html" . }}{{ end -}}
{{ if isset .Params "mode" }}{{ $modeParam = partial "utilities/CastBool.html" (.Get "mode") }}{{ end -}}
{{ $logo := .Get "logo" | default "" -}}
{{ $title := .Get "title" | default "" -}}
{{- $class := .Get "class" | default "" -}}

View File

@@ -16,9 +16,9 @@
{{- $version := .Get "version" | default "" -}}
{{- $state := .Get "state" | default "new" -}}
{{- $short := false -}}
{{ with .Get "short" }}{{ $short = partial "utilities/CastBool.html" . }}{{ end -}}
{{ if isset .Params "short" }}{{ $short = partial "utilities/CastBool.html" (.Get "short") }}{{ end -}}
{{- $inline := false -}}
{{ with .Get "inline" }}{{ $inline = partial "utilities/CastBool.html" . }}{{ end -}}
{{ if isset .Params "inline" }}{{ $inline = partial "utilities/CastBool.html" (.Get "inline") }}{{ end -}}
{{- $title := $version -}}
{{- $color := "primary" -}}
{{- if eq $state "deprecated" -}}
@@ -26,6 +26,7 @@
{{- end -}}
{{- $size := .Get "size" | default "md" -}}
{{- $class := .Get "class" | default "" -}}
{{- $type := .Get "type" | default "button" -}}
{{- $icon := "" -}}
{{- $tooltip := "" -}}
@@ -55,19 +56,24 @@
<!-- Main code -->
{{- if not $error -}}
{{- if not $inline }}<div class="pb-3">{{ end -}}
{{- partial "assets/button.html" (dict
"title" $title
"href" (partial "partials/utilities/URLJoin.html" (dict "base" site.Params.docs.release "path" $version))
"size" "sm"
"color" $color
"outline" "true"
"size" $size
"icon" $icon
"tooltip" $tooltip
"order" "first"
"class" (trim (printf "rounded-2 fw-semibold %s" $class) " ")
"spacing" $inline)
-}}
{{- if not $inline }}</div>{{ end -}}
{{ $href := partial "partials/utilities/URLJoin.html" (dict "base" site.Params.docs.release "path" $version) }}
{{ if eq $type "link" }}
{{ partial "assets/link.html" (dict "destination" $href "text" $title "page" .Page) }}
{{ else }}
{{- if not $inline }}<div class="pb-3">{{ end -}}
{{- partial "assets/button.html" (dict
"title" $title
"href" $href
"size" "sm"
"color" $color
"outline" "true"
"size" $size
"icon" $icon
"tooltip" $tooltip
"order" "first"
"class" (trim (printf "rounded-2 fw-semibold %s" $class) " ")
"spacing" $inline)
-}}
{{- if not $inline }}</div>{{ end -}}
{{ end }}
{{- end -}}

View File

@@ -15,7 +15,7 @@
<!-- Initialize arguments -->
{{ $color := .Get "color" | default "primary" -}}
{{ $grow := false -}}
{{ with .Get "grow" }}{{ $grow = partial "utilities/CastBool.html" . }}{{ end -}}
{{ if isset .Params "grow" }}{{ $grow = partial "utilities/CastBool.html" (.Get "grow") }}{{ end -}}
{{ $class := .Get "class" | default "" -}}
<!-- Main code -->

View File

@@ -15,22 +15,35 @@
<!-- Initialize arguments -->
{{ $breakpoint := "" }}
{{ $class := "" }}
{{ $sortable := false }}
{{ $paging := false }}
{{ $searchable := false }}
{{- if .IsNamedParams -}}
{{ $breakpoint = .Get "breakpoint" }}
{{ $class = .Get "class" | default "" }}
{{ if isset .Params "sortable" }}{{ $sortable = partial "utilities/CastBool.html" (.Get "sortable") }}{{ end }}
{{ if isset .Params "paging" }}{{ $paging = partial "utilities/CastBool.html" (.Get "paging") }}{{ end }}
{{ if isset .Params "searchable" }}{{ $searchable = partial "utilities/CastBool.html" (.Get "searchable") }}{{ end }}
{{ else }}
{{ $breakpoint = .Get 0 }}
{{ end }}
<!-- Main code -->
{{ if or $sortable $paging $searchable }}{{ $class = trim (printf "%s data-table" $class) " " }}{{ end }}
{{- $input := .Inner | .Page.RenderString }}
{{- $input = replace $input "style=\"text-align:left\"" "class=\"text-start\"" -}}
{{- $input = replace $input "style=\"text-align:center\"" "class=\"text-center\"" -}}
{{- $input = replace $input "style=\"text-align:right\"" "class=\"text-end\"" -}}
{{- $old := "<table>" -}}
{{- $new := printf "<table class=\"table %s\">" $class -}}
{{ $input := replace $input $old $new -}}
{{ $attributes := "" }}
{{ if $sortable }}{{ $attributes = printf "%s data-table-sortable=true" $attributes }}{{ end }}
{{ if $paging }}{{ $attributes = printf "%s data-table-paging=true" $attributes }}{{ end }}
{{ if $searchable }}{{ $attributes = printf "%s data-table-searchable=true" $attributes }}{{ end }}
{{- $old := "<table>" -}}
{{- $new := printf "<table class=\"table %s\" %s>" $class (trim $attributes " ") -}}
{{ $input := replace $input $old $new -}}
{{ if not $error }}
{{ if eq $breakpoint "none" }}
{{ $input | safeHTML }}

View File

@@ -7,6 +7,8 @@
following modifications:
- Isolated the styles to comply with the Content Security Policy
- Added validation of shortcode arguments
- Added support to retrieve the title from the video metadata
- Adjusted autoplay configuration
- Modified the layout
The original source code is available on:
@@ -16,26 +18,53 @@
{{- $pc := .Page.Site.Config.Privacy.YouTube -}}
{{- if not $pc.Disable -}}
{{ $error := false }}
{{ $error := false }}
<!-- Validate arguments -->
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "youtube" "args" .Params) }}
{{ errorf "Invalid arguments: %s" .Position -}}
{{ $error = true }}
{{ end }}
<!-- Validate arguments -->
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "youtube" "args" .Params) }}
{{ errorf "Invalid arguments: %s" .Position -}}
{{ $error = true }}
{{ end }}
<!-- Initialize arguments -->
{{- $id := "" -}}
{{- $class := "" -}}
{{- $title := "YouTube Video" }}
{{- $autoplay := false }}
{{- $autotitle := false }}
{{- $host := cond $pc.PrivacyEnhanced "www.youtube-nocookie.com" "www.youtube.com" -}}
{{- if .IsNamedParams }}
{{ with .Get "id" }}{{ $id = . }}{{ end }}
{{ with .Get "class" }}{{ $class = . }}{{ end }}
{{ with .Get "title" }}{{ $title = . }}{{ end }}
{{ if isset .Params "autoplay" }}{{ $autoplay = partial "utilities/CastBool.html" (.Get "autoplay") }}{{ end -}}
{{ if isset .Params "autotitle" }}{{ $autotitle = partial "utilities/CastBool.html" (.Get "autotitle") }}{{ end -}}
{{ else }}
{{- $id = .Get 0 -}}
{{- $class = .Get 1 -}}
{{ end }}
<!-- Initialize arguments -->
{{- $id := .Get "id" | default (.Get 0) -}}
{{- $class := .Get "class" | default (.Get 1) -}}
{{- $title := .Get "title" | default "YouTube Video" }}
{{- $autoplay := false }}
{{ with .Get "autoplay" }}{{ $autoplay = partial "utilities/CastBool.html" . }}{{ end -}}
{{- $host := cond $pc.PrivacyEnhanced "www.youtube-nocookie.com" "www.youtube.com" -}}
<!-- Main code -->
<div class="youtube-embedded {{ $class }}">
<iframe src="https://{{ $host }}/embed/{{ $id }}?origin={{ .Site.BaseURL }}{{ if $autoplay }}&autoplay=1{{ end }}"
allowfullscreen title="{{ $title }}">
{{ $url := printf "https://%s/embed/%s?origin=%s" $host $id .Site.BaseURL }}
{{ $api := printf "https://www.youtube.com/oembed?format=json&url=%s" (printf "https://www.youtube.com/watch?v=%s" $id) }}
{{ if $autotitle }}
{{ with resources.GetRemote $api }}
{{ with .Err }}
{{ errorf "Unable to parse video metadata '%q': %s\n %s" $api .Position . }}
{{ else }}
{{ $data := . | transform.Unmarshal }}
{{ with $data.title }}{{ $title = . }}{{ end }}
{{ end }}
{{ else }}
{{ errorf "Unable to get video metadata '%q': %s" $api .Position }}
{{ end }}
{{ end }}
<!-- Main code -->
<div class="youtube-embedded {{ $class }}">
<iframe src="{{ $url }}{{ if $autoplay }}&autoplay=1&mute=1{{ end }}"
allowfullscreen title="{{ $title }}" {{ if $autoplay }}allow="autoplay"{{ end }}>
</iframe>
</div>
</div>
{{ end -}}

View File

@@ -39,9 +39,13 @@
{{ $lastYear := $.Scratch.Get "lastYear"}}
<div class="row mt-2">
<div class="d-none d-{{ $breakpoint.prev }}-block col-{{ $breakpoint.prev }}-3 mt-auto text-right">
<time class="post-date" datetime="{{ .Date.Format "2006-01-02T15:04:05Z07:00" | safeHTML }}">
{{ (partial "utilities/date.html" (dict "date" .Date "format" "medium")) }}
</time>
{{ with .Date }}
<time class="post-date" datetime="{{ .Format "2006-01-02T15:04:05Z07:00" | safeHTML }}">
{{ (partial "utilities/date.html" (dict "date" . "format" "medium")) }}
</time>
{{ else }}
-
{{ end }}
</div>
<div class="col">
{{ if ne $year $lastYear }}

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