Compare commits

...

273 Commits

Author SHA1 Message Date
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
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
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
Mark Dumay
055614e6ee Merge pull request #999 from gethinode/develop
Fix SEO thumbnail handling
2024-06-16 10:08:05 +02:00
Mark Dumay
7d712b13fe Merge branch 'main' into develop 2024-06-16 10:01:18 +02:00
Mark Dumay
5ee8383868 Fix SEO thumbnail handling 2024-06-16 10:00:31 +02:00
Mark Dumay
54f012f5be Merge pull request #998 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2024-06-16 08:14:19 +02:00
markdumay
d28a642283 fix: update Hugo module dependencies 2024-06-16 05:57:29 +00:00
Mark Dumay
91becdeeb5 Merge pull request #997 from gethinode/develop
Fix handling of external links in sidebar
2024-06-16 07:56:40 +02:00
Mark Dumay
b7c5b8a47e Bump package release 2024-06-16 07:45:31 +02:00
Mark Dumay
776aad8427 Fix #996 2024-06-16 07:44:26 +02:00
Mark Dumay
bcf9b8aa7c Merge pull request #993 from gethinode/develop
Use image helpers for SEO thumbnail
2024-06-12 08:07:19 +02:00
Mark Dumay
15d0161240 Merge branch 'main' into develop 2024-06-12 08:01:05 +02:00
Mark Dumay
998db85994 Use image helpers for SEO thumbnail 2024-06-12 08:00:46 +02:00
Mark Dumay
e6586b52cd Merge pull request #992 from gethinode/develop
Remove spacing from pagination buttons
2024-06-10 07:05:06 +02:00
Mark Dumay
937964a02b Merge branch 'main' into develop 2024-06-10 06:56:39 +02:00
Mark Dumay
9b4afdfb35 Merge pull request #985 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2024-06-10 06:56:15 +02:00
Mark Dumay
2121e663a0 Bump package release 2024-06-10 06:55:59 +02:00
Mark Dumay
46699664dc Remove spacing from pagination buttons 2024-06-10 06:55:00 +02:00
markdumay
98ec788fb3 fix: update Hugo module dependencies 2024-06-07 03:06:28 +00:00
github-actions[bot]
e248862905 Merge pull request #989 from gethinode/dependabot/npm_and_yarn/hugo-bin-0.124.0
Bump hugo-bin from 0.123.3 to 0.124.0
2024-06-06 13:13:31 +00:00
dependabot[bot]
8ba8acf675 Bump hugo-bin from 0.123.3 to 0.124.0
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.123.3 to 0.124.0.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.123.3...v0.124.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-06 13:07:40 +00:00
github-actions[bot]
a7cf1ad918 Merge pull request #988 from gethinode/dependabot/npm_and_yarn/cssnano-7.0.2
Bump cssnano from 7.0.1 to 7.0.2
2024-06-05 14:12:55 +00:00
dependabot[bot]
492ce3e38b Bump cssnano from 7.0.1 to 7.0.2
Bumps [cssnano](https://github.com/cssnano/cssnano) from 7.0.1 to 7.0.2.
- [Release notes](https://github.com/cssnano/cssnano/releases)
- [Commits](https://github.com/cssnano/cssnano/compare/cssnano@7.0.1...cssnano@7.0.2)

---
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-05 14:08:02 +00:00
github-actions[bot]
eaa5c217db Merge pull request #987 from gethinode/dependabot/npm_and_yarn/cssnano-preset-advanced-7.0.2
Bump cssnano-preset-advanced from 7.0.1 to 7.0.2
2024-06-05 14:07:17 +00:00
dependabot[bot]
410d681d23 Bump cssnano-preset-advanced from 7.0.1 to 7.0.2
Bumps [cssnano-preset-advanced](https://github.com/cssnano/cssnano) from 7.0.1 to 7.0.2.
- [Release notes](https://github.com/cssnano/cssnano/releases)
- [Commits](https://github.com/cssnano/cssnano/compare/cssnano-preset-advanced@7.0.1...cssnano-preset-advanced@7.0.2)

---
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-05 14:02:55 +00:00
Mark Dumay
deaf9f0fec Merge pull request #983 from gethinode/develop
Fix external links in navbar
2024-06-04 09:12:15 +02:00
Mark Dumay
7ed3313c55 Merge branch 'main' into develop 2024-06-04 09:06:15 +02:00
Mark Dumay
1477ff7bb2 Bump package release 2024-06-04 09:05:47 +02:00
Mark Dumay
7e2f6606bf Fix external links in navbar 2024-06-04 09:05:11 +02:00
Mark Dumay
2acc8fc737 Merge pull request #982 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2024-06-04 06:19:46 +02:00
markdumay
96fe90ce9d fix: update Hugo module dependencies 2024-06-04 03:06:36 +00:00
github-actions[bot]
acf25e5375 Merge pull request #979 from gethinode/dependabot/npm_and_yarn/hugo-bin-0.123.3
Bump hugo-bin from 0.123.2 to 0.123.3
2024-06-03 13:58:51 +00:00
dependabot[bot]
aa35e03692 Bump hugo-bin from 0.123.2 to 0.123.3
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.123.2 to 0.123.3.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.123.2...v0.123.3)

---
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-06-03 13:51:57 +00:00
Mark Dumay
31cf9eb577 Merge pull request #978 from gethinode/develop
Publish v0.24.0 release
2024-06-03 13:14:41 +02:00
Mark Dumay
9a8ebd3558 Update release tag for plain images support 2024-06-03 13:08:22 +02:00
Mark Dumay
148c587283 Merge branch 'main' into develop 2024-06-03 13:06:01 +02:00
Mark Dumay
7c9c4cbabb Publish v0.24.0 release 2024-06-03 13:05:15 +02:00
Mark Dumay
20f14934c2 Merge pull request #977 from gethinode/develop
Bump package release
2024-06-03 12:52:10 +02:00
Mark Dumay
840e67d12d Merge branch 'main' into develop 2024-06-03 12:45:05 +02:00
Mark Dumay
8ef57a265e Bump package release 2024-06-03 12:43:19 +02:00
Mark Dumay
8677357450 Merge pull request #976 from gethinode/develop
Sync color mode when navigating browser history
2024-06-03 11:59:43 +02:00
Mark Dumay
79ac2dae4f Merge branch 'main' into develop 2024-06-03 11:32:15 +02:00
Mark Dumay
20cad07a0b Sync color mode when navigating browser history 2024-06-03 11:31:10 +02:00
Mark Dumay
2c97af2fef Merge pull request #975 from gethinode/develop
Smoothen transition between color modes
2024-06-03 11:30:49 +02:00
Mark Dumay
95ded6296c Merge branch 'main' into develop 2024-06-03 10:16:28 +02:00
Mark Dumay
3b46095821 Sync release numbering 2024-06-03 10:04:34 +02:00
Mark Dumay
1bf4e74e56 Smoothen transition between color modes 2024-06-03 10:02:58 +02:00
Mark Dumay
9b75b46c49 Merge pull request #974 from gethinode/develop
Fix color-mode switcher
2024-06-03 09:44:51 +02:00
Mark Dumay
107077f5ec Fix color-mode switcher 2024-06-03 09:36:48 +02:00
Mark Dumay
528b70bfa2 Merge branch 'main' into develop 2024-06-03 07:27:40 +02:00
Mark Dumay
75ab4625b1 Isolate production dependencies 2024-06-03 07:27:05 +02:00
Mark Dumay
bac3054ec2 Merge pull request #972 from gethinode/switch
Replace color-mode switcher
2024-06-03 06:23:02 +02:00
Mark Dumay
d63fd5f212 Merge branch 'main' into switch 2024-06-02 19:50:01 +02:00
Mark Dumay
c8b9df7ae5 Merge pull request #973 from gethinode/develop
Fix color-mode aware logo
2024-06-02 19:49:48 +02:00
Mark Dumay
12daa88f39 Bump package release 2024-06-02 19:42:05 +02:00
Mark Dumay
c5d895388b Fix color-mode aware logo 2024-06-02 19:41:21 +02:00
Mark Dumay
5678d2cab5 Replace color-mode switcher 2024-06-02 17:13:04 +02:00
Mark Dumay
99d939a3a0 Merge pull request #971 from gethinode/develop
Fix sidebar links
2024-06-02 12:02:05 +02:00
Mark Dumay
c9a87e8514 Fix sidebar links 2024-06-02 11:26:43 +02:00
Mark Dumay
af08829f7d Merge pull request #970 from gethinode/subfolder
Support deployments to subfolder
2024-06-02 07:41:21 +02:00
Mark Dumay
28a59a4eac Merge branch 'main' into subfolder 2024-06-02 07:27:55 +02:00
Mark Dumay
727387931c Support deployments to subfolder 2024-06-02 07:26:47 +02:00
github-actions[bot]
13a085099c Merge pull request #968 from gethinode/dependabot/npm_and_yarn/hugo-bin-0.123.2
Bump hugo-bin from 0.123.1 to 0.123.2
2024-05-31 13:33:46 +00:00
dependabot[bot]
473f390ee6 Bump hugo-bin from 0.123.1 to 0.123.2
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.123.1 to 0.123.2.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.123.1...v0.123.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-31 13:28:03 +00:00
Mark Dumay
65cfc0933a Merge pull request #966 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2024-05-30 08:56:14 +02:00
markdumay
321e7f6df5 fix: update Hugo module dependencies 2024-05-30 05:39:32 +00:00
Mark Dumay
dda623f040 Merge pull request #965 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2024-05-30 06:50:03 +02:00
markdumay
80d1147d08 fix: update Hugo module dependencies 2024-05-30 03:05:37 +00:00
Mark Dumay
b28abcd6f2 Merge pull request #964 from gethinode/develop
Enable rewrite of CDN origin images
2024-05-29 10:57:47 +02:00
Mark Dumay
93885492d7 Merge branch 'main' into develop 2024-05-29 10:50:19 +02:00
Mark Dumay
ed5daa780d Enable rewrite of CDN origin images 2024-05-29 10:49:40 +02:00
Mark Dumay
00501edadd Merge pull request #963 from gethinode/develop
Suppress additional image warning
2024-05-29 10:48:20 +02:00
Mark Dumay
fdb1472f9e Merge branch 'main' into develop 2024-05-29 10:41:52 +02:00
Mark Dumay
b176fbd365 Suppress additional image warning 2024-05-29 10:41:19 +02:00
github-actions[bot]
f2b0e49aa9 Merge pull request #962 from gethinode/dependabot/npm_and_yarn/stylelint-16.6.1
Bump stylelint from 16.6.0 to 16.6.1
2024-05-28 13:54:51 +00:00
dependabot[bot]
5b8df68db5 Bump stylelint from 16.6.0 to 16.6.1
Bumps [stylelint](https://github.com/stylelint/stylelint) from 16.6.0 to 16.6.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.6.0...16.6.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-28 13:48:47 +00:00
Mark Dumay
fce4b7dde9 Merge pull request #961 from gethinode/develop
Prevent processing of plain images
2024-05-28 15:48:03 +02:00
Mark Dumay
ba43672bf6 Merge branch 'main' into develop 2024-05-28 15:41:06 +02:00
Mark Dumay
1b93485064 Prevent processing of plain images 2024-05-28 15:40:38 +02:00
Mark Dumay
8d9f12d676 Merge pull request #960 from gethinode/develop
Use latest resource handling
2024-05-28 12:42:32 +02:00
Mark Dumay
1a89aa39c2 Merge branch 'main' into develop 2024-05-28 11:59:14 +02:00
Mark Dumay
6b60188702 Use latest resource handling 2024-05-28 11:58:42 +02:00
Mark Dumay
5e410040cc Merge pull request #959 from gethinode/develop
Support plain images
2024-05-28 11:50:07 +02:00
Mark Dumay
b00f39f850 Merge branch 'main' into develop 2024-05-28 11:41:16 +02:00
Mark Dumay
7e396c5a4d Support plain images 2024-05-28 11:40:38 +02:00
github-actions[bot]
4d43f0bb9b Merge pull request #958 from gethinode/dependabot/npm_and_yarn/eslint-plugin-promise-6.2.0
Bump eslint-plugin-promise from 6.1.1 to 6.2.0
2024-05-27 13:20:07 +00:00
dependabot[bot]
3512bb9dfe Bump eslint-plugin-promise from 6.1.1 to 6.2.0
Bumps [eslint-plugin-promise](https://github.com/eslint-community/eslint-plugin-promise) from 6.1.1 to 6.2.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.1.1...v6.2.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-05-27 13:15:06 +00:00
Mark Dumay
7dde897e41 Merge pull request #957 from gethinode/develop
Improve image handling
2024-05-27 11:01:32 +02:00
Mark Dumay
f2cad0fe88 Merge branch 'main' into develop 2024-05-27 10:55:17 +02:00
Mark Dumay
eed2d8f68d Merge pull request #956 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2024-05-27 10:54:48 +02:00
Mark Dumay
d1aebe2fbe Bump package release 2024-05-27 10:48:23 +02:00
markdumay
013614b149 fix: update Hugo module dependencies 2024-05-27 08:48:19 +00:00
Mark Dumay
d55446d5cc Improve image handling 2024-05-27 10:35:06 +02:00
Mark Dumay
80a225e814 Merge pull request #955 from gethinode/develop
Fix image color mode
2024-05-26 19:29:27 +02:00
Mark Dumay
c7e63308c5 Bump package release 2024-05-26 19:22:10 +02:00
Mark Dumay
7bc712b5f3 Merge branch 'main' into develop 2024-05-26 19:15:44 +02:00
Mark Dumay
cf95a84f2a Fix image color mode 2024-05-26 19:14:59 +02:00
Mark Dumay
b1e35836f9 Merge pull request #954 from gethinode/develop
Use default module configuration
2024-05-26 13:18:46 +02:00
Mark Dumay
a794ab5c52 Update release in deprecation message 2024-05-26 13:10:20 +02:00
Mark Dumay
8fd7d9cde9 Use default module configuration 2024-05-26 12:52:36 +02:00
Mark Dumay
93f2f04bae Merge branch 'main' into develop 2024-05-26 12:43:19 +02:00
Mark Dumay
b2a8d78c73 Merge pull request #953 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2024-05-26 12:13:06 +02:00
markdumay
025afc37d4 fix: update Hugo module dependencies 2024-05-26 10:04:48 +00:00
github-actions[bot]
be5ca21019 Merge pull request #949 from gethinode/dependabot/npm_and_yarn/stylelint-16.6.0
Bump stylelint from 16.5.0 to 16.6.0
2024-05-26 06:05:11 +00:00
Mark Dumay
69584215b8 Disable debugging 2024-05-26 08:04:12 +02:00
Mark Dumay
e6cef96a03 Merge branch 'main' into dependabot/npm_and_yarn/stylelint-16.6.0 2024-05-26 08:01:05 +02:00
Mark Dumay
a6d4a71500 Merge pull request #952 from gethinode/modconfig
Make module configurations loosely coupled
2024-05-26 08:00:49 +02:00
Mark Dumay
388d8a7e27 Merge branch 'main' into modconfig 2024-05-26 07:54:21 +02:00
Mark Dumay
9df1b1b981 Merge branch 'main' into dependabot/npm_and_yarn/stylelint-16.6.0 2024-05-25 19:43:46 +02:00
Mark Dumay
82d426c14b Merge pull request #951 from gethinode/image
Fix linting issue
2024-05-25 19:43:35 +02:00
Mark Dumay
a2c5073a3d Merge branch 'main' into image 2024-05-25 19:36:59 +02:00
Mark Dumay
11077b9178 Merge pull request #945 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2024-05-25 19:36:37 +02:00
Mark Dumay
6e8011f111 Fix linting issue 2024-05-25 19:36:08 +02:00
dependabot[bot]
c6e23b58c5 Bump stylelint from 16.5.0 to 16.6.0
Bumps [stylelint](https://github.com/stylelint/stylelint) from 16.5.0 to 16.6.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.5.0...16.6.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-05-25 17:21:06 +00:00
Mark Dumay
3267f1165e Merge branch 'main' into hugo-mod-dependencies 2024-05-25 19:20:39 +02:00
Mark Dumay
e46d4764fd Merge pull request #950 from gethinode/image
Extend image adapters
2024-05-25 19:20:10 +02:00
Mark Dumay
2fb4829f68 Merge branch 'main' into image 2024-05-25 19:12:59 +02:00
Mark Dumay
6009c45e5a Bump package release 2024-05-25 19:11:21 +02:00
Mark Dumay
69505a1dca Make image adapters configurable 2024-05-25 19:10:53 +02:00
Mark Dumay
c195d903c7 Add examples 2024-05-25 19:10:32 +02:00
Mark Dumay
07c1422bbb Update build stats 2024-05-25 19:10:08 +02:00
Mark Dumay
6be688515d Adjust CSP 2024-05-25 19:10:00 +02:00
Mark Dumay
5d83f12b35 Add imagekit.io adapter 2024-05-25 19:09:15 +02:00
Mark Dumay
008c6a099a Add imgix adapter 2024-05-25 19:09:05 +02:00
Mark Dumay
125b72177c Test if image adapter is available 2024-05-25 19:08:43 +02:00
Mark Dumay
75054731f4 Make module configurations loosely coupled 2024-05-25 12:53:10 +02:00
markdumay
d36ce74eae fix: update Hugo module dependencies 2024-05-23 03:05:50 +00:00
Mark Dumay
2433fa8a66 Merge pull request #943 from gethinode/image
Refine CDN image handling
2024-05-20 15:26:53 +02:00
Mark Dumay
adbff26d18 Merge branch 'main' into image 2024-05-20 14:49:16 +02:00
Mark Dumay
bdcdeb9b55 Bump package release 2024-05-20 14:48:39 +02:00
Mark Dumay
0636708dac Add DAM provider config 2024-05-20 14:48:10 +02:00
Mark Dumay
eb65b94ef4 Fix fallback URL of Cloudinary images 2024-05-20 14:47:10 +02:00
Mark Dumay
01b51f6ef1 Provide default dimensions when site data is unavailable 2024-05-20 14:46:30 +02:00
Mark Dumay
89b81cf1b8 Handle undefined dimensions 2024-05-20 14:46:06 +02:00
Mark Dumay
54396f4dc0 Fix dimensions rounding errors 2024-05-20 13:23:26 +02:00
76 changed files with 1945 additions and 3332 deletions

2
.gitignore vendored
View File

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

View File

@@ -9,44 +9,49 @@
(() => { (() => {
'use strict' 'use strict'
const supportedThemes = ['auto', 'dark', 'light'];
// retrieves the currently stored theme from local storage (cookie)
const storedTheme = localStorage.getItem('theme') const storedTheme = localStorage.getItem('theme')
const getPreferredTheme = () => { // retrieves the theme preferred by the client, defaults to light
if (storedTheme) { function getPreferredTheme() {
return storedTheme
}
return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light' return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'
} }
const setTheme = function (theme) { // retrieves the current theme, either from local storage or client's preferences
if (theme === 'auto') { function getTheme() {
document.documentElement.setAttribute('data-bs-theme', (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light')) if (storedTheme) {
return storedTheme
} else { } else {
document.documentElement.setAttribute('data-bs-theme', theme) const preference = getPreferredTheme()
localStorage.setItem('theme', preference)
return preference
} }
} }
setTheme(getPreferredTheme()) // applies and stores requested theme
function setTheme(theme) {
const showActiveTheme = theme => { if (!supportedThemes.includes(theme)) {
const activeSelectors = document.querySelectorAll('.theme-icon-active') theme = 'auto'
const activeButtons = document.querySelectorAll(`[data-bs-theme-value="${theme}"]`)
if (activeButtons.length > 0) {
const activeIcon = activeButtons[0].querySelector('span')
document.querySelectorAll('[data-bs-theme-value]').forEach(element => {
element.classList.remove('active')
})
for (let i = 0; i < activeSelectors.length; ++i) {
activeSelectors[i].innerHTML = activeIcon.innerHTML
}
for (let i = 0; i < activeButtons.length; ++i) {
activeButtons[i].classList.add('active')
}
} }
localStorage.setItem('theme', theme)
if (theme === 'auto') {
document.documentElement.setAttribute('data-bs-theme', (getPreferredTheme()))
} else {
document.documentElement.setAttribute('data-bs-theme', theme)
}
document.querySelectorAll('.navbar-mode-selector').forEach(chk => {
chk.checked = (document.documentElement.getAttribute('data-bs-theme') === 'light')
})
}
// alternates the currently active theme
function toggleTheme() {
const target = document.documentElement.getAttribute('data-bs-theme') === 'dark' ? 'light' : 'dark'
setTheme(target)
} }
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => { window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => {
@@ -56,18 +61,32 @@
}) })
window.addEventListener('DOMContentLoaded', () => { window.addEventListener('DOMContentLoaded', () => {
showActiveTheme(getPreferredTheme()) setTheme(getTheme())
const light = (document.documentElement.getAttribute('data-bs-theme') === 'light')
document.querySelectorAll('[data-bs-theme-value]') document.querySelectorAll('.ball').forEach(ball => {
.forEach(toggle => { ball.classList.add('notransition');
toggle.addEventListener('click', () => { })
const theme = toggle.getAttribute('data-bs-theme-value')
localStorage.setItem('theme', theme) document.querySelectorAll('.navbar-mode-selector').forEach(chk => {
setTheme(theme) chk.checked = light
showActiveTheme(theme) chk.addEventListener('change', function () {
}) 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
})
});
})() })()
{{- end -}} {{- end -}}

View File

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

View File

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

View File

@@ -1,25 +1,25 @@
// scss-docs-start icons // scss-docs-start icons
$form-check-input-checked-bg-image: url("/icons/form-check-input-checked-bg-image.svg") !default; $form-check-input-checked-bg-image: url("#{$base-url}icons/form-check-input-checked-bg-image.svg") !default;
$form-check-radio-checked-bg-image: url("/icons/form-check-radio-checked-bg-image.svg") !default; $form-check-radio-checked-bg-image: url("#{$base-url}icons/form-check-radio-checked-bg-image.svg") !default;
$form-check-input-indeterminate-bg-image: url("/icons/form-check-input-indeterminate-bg-image.svg") !default; $form-check-input-indeterminate-bg-image: url("#{$base-url}icons/form-check-input-indeterminate-bg-image.svg") !default;
$form-switch-bg-image: url("/icons/form-switch-bg-image.svg") !default; $form-switch-bg-image: url("#{$base-url}icons/form-switch-bg-image.svg") !default;
$form-switch-bg-image-dark: url("/icons/form-switch-bg-image-dark.svg") !default; $form-switch-bg-image-dark: url("#{$base-url}icons/form-switch-bg-image-dark.svg") !default;
$form-switch-focus-bg-image: url("/icons/form-switch-focus-bg-image.svg") !default; $form-switch-focus-bg-image: url("#{$base-url}icons/form-switch-focus-bg-image.svg") !default;
$form-switch-checked-bg-image: url("/icons/form-switch-checked-bg-image.svg") !default; $form-switch-checked-bg-image: url("#{$base-url}icons/form-switch-checked-bg-image.svg") !default;
$form-select-indicator: url("/icons/form-select-indicator.svg") !default; $form-select-indicator: url("#{$base-url}icons/form-select-indicator.svg") !default;
$form-select-indicator-dark: url("/icons/form-select-indicator-dark.svg") !default; $form-select-indicator-dark: url("#{$base-url}icons/form-select-indicator-dark.svg") !default;
$form-feedback-icon-valid: url("/icons/form-feedback-icon-valid.svg") !default; $form-feedback-icon-valid: url("#{$base-url}icons/form-feedback-icon-valid.svg") !default;
$form-feedback-icon-invalid: url("/icons/form-feedback-icon-invalid.svg") !default; $form-feedback-icon-invalid: url("#{$base-url}icons/form-feedback-icon-invalid.svg") !default;
$navbar-light-toggler-icon-bg: url("/icons/navbar-light-toggler-icon-bg.svg") !default; $navbar-light-toggler-icon-bg: url("#{$base-url}icons/navbar-light-toggler-icon-bg.svg") !default;
$navbar-dark-toggler-icon-bg: url("/icons/navbar-dark-toggler-icon-bg.svg") !default; $navbar-dark-toggler-icon-bg: url("#{$base-url}icons/navbar-dark-toggler-icon-bg.svg") !default;
$accordion-button-icon: url("/icons/accordion-button-icon.svg") !default; $accordion-button-icon: url("#{$base-url}icons/accordion-button-icon.svg") !default;
$accordion-button-icon-dark: url("/icons/accordion-button-icon-dark.svg") !default; $accordion-button-icon-dark: url("#{$base-url}icons/accordion-button-icon-dark.svg") !default;
$accordion-button-active-icon: url("/icons/accordion-button-active-icon.svg") !default; $accordion-button-active-icon: url("#{$base-url}icons/accordion-button-active-icon.svg") !default;
$accordion-button-active-icon-dark: url("/icons/accordion-button-active-icon-dark.svg") !default; $accordion-button-active-icon-dark: url("#{$base-url}icons/accordion-button-active-icon-dark.svg") !default;
$carousel-control-prev-icon-bg: url("/icons/carousel-control-prev-icon-bg.svg") !default; $carousel-control-prev-icon-bg: url("#{$base-url}icons/carousel-control-prev-icon-bg.svg") !default;
$carousel-control-next-icon-bg: url("/icons/carousel-control-next-icon-bg.svg") !default; $carousel-control-next-icon-bg: url("#{$base-url}icons/carousel-control-next-icon-bg.svg") !default;
$btn-close-bg: url("/icons/btn-close-bg.svg") !default; $btn-close-bg: url("#{$base-url}icons/btn-close-bg.svg") !default;
$btn-toggle: url("/icons/btn-toggle.svg") !default; $btn-toggle: url("#{$base-url}icons/btn-toggle.svg") !default;
$btn-toggle-dark: url("/icons/btn-toggle-dark.svg") !default; $btn-toggle-dark: url("#{$base-url}icons/btn-toggle-dark.svg") !default;
// scss-docs-end icons // scss-docs-end icons

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,3 +1,9 @@
@if $enable-dark-mode {
body {
transition: background-color 0.5s, color 0.5s;
}
}
// //
// Remove underline from all links // Remove underline from all links
// //
@@ -140,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: map-merge(
$utilities, $utilities,
( (

View File

@@ -5,6 +5,8 @@ $enable-important-utilities: true !default;
// Remove the border from the focused navigation toggler // Remove the border from the focused navigation toggler
$navbar-toggler-focus-width: 0 !default; $navbar-toggler-focus-width: 0 !default;
$base-url: h.$base-url;
$font-family-sans-serif: h.$theme-font, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default; $font-family-sans-serif: h.$theme-font, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
$font-size-base: h.$font-size-base !default; $font-size-base: h.$font-size-base !default;
$headings-font-weight: 600 !default; $headings-font-weight: 600 !default;

View File

@@ -5,6 +5,8 @@ $enable-important-utilities: true !default;
// Remove the border from the focused navigation toggler // Remove the border from the focused navigation toggler
$navbar-toggler-focus-width: 0 !default; $navbar-toggler-focus-width: 0 !default;
$base-url: $base-url;
// scss-docs-start font // scss-docs-start font
$font-family-sans-serif: $theme-font, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default; $font-family-sans-serif: $theme-font, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
$font-size-base: $font-size-base !default;; $font-size-base: $font-size-base !default;;

View File

@@ -68,8 +68,7 @@
} }
} }
.card-zoom card-body-link, .card-zoom .card-body-link {
.card-body-link {
&:hover, &:hover,
&:focus { &:focus {
color: shade-color($primary, $link-shade-percentage) if($enable-important-utilities, !important, null); color: shade-color($primary, $link-shade-percentage) if($enable-important-utilities, !important, null);
@@ -78,8 +77,7 @@
@if $enable-dark-mode { @if $enable-dark-mode {
@include color-mode(dark) { @include color-mode(dark) {
.card-zoom card-body-link, .card-zoom .card-body-link {
.card-body-link {
&:hover, &:hover,
&:focus { &:focus {
color: $primary-bg-subtle-dark if($enable-important-utilities, !important, null); color: $primary-bg-subtle-dark if($enable-important-utilities, !important, null);
@@ -99,3 +97,56 @@
.card-button-link { .card-button-link {
text-decoration: underline if($enable-important-utilities, !important, null); 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,8 +1,6 @@
// stylelint-disable annotation-no-unknown // stylelint-disable annotation-no-unknown
// Source: https://jsfiddle.net/njhgr40m/ // Source: https://jsfiddle.net/njhgr40m/
.navbar { .navbar {
--bs-navbar-expanded-color: var(--bs-body-bg); --bs-navbar-expanded-color: var(--bs-body-bg);
--bs-navbar-toggler-color: var(--bs-navbar-hover-color); --bs-navbar-toggler-color: var(--bs-navbar-hover-color);
@@ -236,3 +234,61 @@
} }
} }
} }
// 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 { @if $enable-dark-mode {
@include color-mode(dark) { @include color-mode(dark) {
.table-striped, .table-striped-columns { .table-striped, .table-striped-columns {
@@ -9,5 +22,13 @@
--bs-table-hover-bg: var(--bs-tertiary-bg); --bs-table-hover-bg: var(--bs-tertiary-bg);
--bs-table-striped-color: var(--bs-body-color); --bs-table-striped-color: var(--bs-body-color);
} }
.datatable-pagination-list-item {
&:hover,
&:focus,
&.datatable-active {
color: var(--bs-body-bg) !important;
}
}
} }
} }

View File

@@ -134,6 +134,8 @@ home = ["HTML", "RSS", "REDIR"]
path = "github.com/gethinode/mod-leaflet" path = "github.com/gethinode/mod-leaflet"
[[module.imports]] [[module.imports]]
path = "github.com/gethinode/mod-lottie" path = "github.com/gethinode/mod-lottie"
[[module.imports]]
path = "github.com/gethinode/mod-simple-datatables"
[[module.imports]] [[module.imports]]
path = "github.com/gethinode/mod-utils/v2" path = "github.com/gethinode/mod-utils/v2"
# toml-docs-end modules # toml-docs-end modules

View File

@@ -16,25 +16,15 @@
transpiler = "libsass" transpiler = "libsass"
# toml-docs-end main # toml-docs-end main
# toml-docs-start modules # toml-docs-start images
[modules] [images]
core = ["bootstrap", "flexsearch", "fontawesome"] [images.cloudinary]
optional = ["leaflet", "katex", "lottie"] host = "cloudinary"
excludeSCSS = ["bootstrap"] [images.imagekit]
disableTemplate = ["katex"] host = "imagekit"
[modules.katex] [images.imgix]
state = "defer" host = "imgix"
[modules.flexsearch] # toml-docs-end images
frontmatter = false
filter = ""
[modules.fontawesome]
inline = true
debug = true
skipMissing = false
[modules.utils]
filter = "[^0-9A-Za-zŽžÀ-ÿ ;.,\\/'\"]-"
raw = false
# toml-docs-end modules
# toml-docs-start debugging # toml-docs-start debugging
[debugging] [debugging]

View File

@@ -15,7 +15,7 @@ for = '/**'
https://*.google-analytics.com https://*.analytics.google.com https://*.googletagmanager.com; \ https://*.google-analytics.com https://*.analytics.google.com https://*.googletagmanager.com; \
font-src 'self' https://fonts.gstatic.com; \ font-src 'self' https://fonts.gstatic.com; \
frame-src 'self' https://www.youtube-nocookie.com https://www.youtube.com; \ frame-src 'self' https://www.youtube-nocookie.com https://www.youtube.com; \
img-src 'self' data: https://*.cloudinary.com https://i.vimeocdn.com https://i.ytimg.com https://*.google-analytics.com https://*.googletagmanager.com https://tile.openstreetmap.org; \ img-src 'self' data: https://*.imgix.net https://*.imagekit.io https://*.cloudinary.com https://i.vimeocdn.com https://i.ytimg.com https://*.google-analytics.com https://*.googletagmanager.com https://tile.openstreetmap.org; \
manifest-src 'self'; \ manifest-src 'self'; \
media-src 'self' \ media-src 'self' \
""" """

View File

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

View File

@@ -13,7 +13,7 @@
- 992x661 - 992x661
- 1200x800 - 1200x800
- 1400x933 - 1400x933
- 2800x1866 - 2800x1867
- ratio: 1x1 - ratio: 1x1
dimensions: dimensions:
- 576x576 - 576x576
@@ -29,7 +29,7 @@
- 992x558 - 992x558
- 1200x675 - 1200x675
- 1400x788 - 1400x788
- 2800x1576 - 2800x1575
- ratio: 21x9 - ratio: 21x9
dimensions: dimensions:
- 576x247 - 576x247

View File

@@ -92,7 +92,8 @@ arguments:
type: bool type: bool
optional: true optional: true
comment: >- 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: wrapper:
type: string type: string
optional: true optional: true
@@ -102,7 +103,8 @@ arguments:
type: bool type: bool
optional: true optional: true
comment: >- 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: buttonType:
type: select type: select
optional: true optional: true
@@ -113,6 +115,20 @@ arguments:
values: values:
- link - link
- button - 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: hook:
type: string type: string
optional: true optional: true

View File

@@ -90,6 +90,18 @@ arguments:
- publication - publication
- tags - tags
- none - none
body:
type: select
optional: true
default: full
parent: cascade
release: v0.24.16
comment: >-
Body of the card.
options:
values:
- full
- none
footer: footer:
type: select type: select
optional: true optional: true
@@ -146,6 +158,16 @@ arguments:
- 16x9 - 16x9
- 21x9 - 21x9
group: partial 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: alt:
type: string type: string
optional: true optional: true
@@ -157,6 +179,12 @@ arguments:
optional: true optional: true
comment: >- comment: >-
Font Awesome icon, displayed on top or the left of the card. 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: align:
type: select type: select
parent: cascade parent: cascade
@@ -169,6 +197,19 @@ arguments:
- start - start
- end - end
- center - 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: style:
type: string type: string
parent: cascade parent: cascade
@@ -230,6 +271,25 @@ arguments:
One or more strings separated by commas, indicating the source sizes of an One or more strings separated by commas, indicating the source sizes of an
image set. image set.
group: partial 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: body:
optional: true optional: true
comment: >- comment: >-

View File

@@ -0,0 +1,29 @@
comment: >-
Rewrites an origin URL to a target URL as supported by a CDN image adapter.
arguments:
account:
type: string
optional: true
comment: Account name of the origin server.
container:
type: string
optional: true
comment: Container name of the origin server.
host:
type: string
optional: true
comment: >-
Host of an URL. For example, the host of the URL
'https://example.com/first/second/third.webp' equals 'example.com'.
dir:
type: string
optional: true
comment: >-
All but the last element of an URL extension. For example, the dir of the
URL 'https://example.com/first/second/third.webp' equals '/first/second/'.
file:
type: string
optional: false
comment: >-
The last element of an URL extension. For example, the file of the
URL 'https://example.com/first/second/third.webp' equals 'third.webp'.

View File

@@ -60,3 +60,20 @@ arguments:
type: int type: int
optional: false optional: false
comment: Width of the image in pixels. 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

@@ -19,7 +19,9 @@ comment: >-
reference. reference.
arguments: arguments:
url: url:
type: string type:
- string
- template.URL
optional: true optional: true
comment: >- comment: >-
Path or url of the image, e.g. `img/example.jpg`. Images with multiple Path or url of the image, e.g. `img/example.jpg`. Images with multiple
@@ -128,3 +130,30 @@ arguments:
optional: true optional: true
comment: Class attribute of the figure caption, e.g. `px-4`. comment: Class attribute of the figure caption, e.g. `px-4`.
release: v0.23.0 release: v0.23.0
plain:
type: bool
default: false
optional: true
comment:
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

@@ -32,3 +32,8 @@ arguments:
comment: >- comment: >-
Flag to indicate if an external link should open in a new tab, defaults Flag to indicate if an external link should open in a new tab, defaults
to setting `main.externalLinks.tab` in the site's parameters. 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

@@ -1,6 +1,7 @@
comment: >- comment: >-
Makes a markdown table responsive. Responsive tables scroll horizontally to 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: arguments:
breakpoint: breakpoint:
type: select type: select
@@ -24,6 +25,21 @@ arguments:
type: string type: string
optional: true optional: true
comment: Class attribute of the table element, e.g. `table-striped-columns w-auto`. 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: body:
type: string type: string
optional: false optional: false

View File

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

View File

@@ -13,21 +13,6 @@
[main.build] [main.build]
transpiler = "dartsass" transpiler = "dartsass"
[modules]
core = ["bootstrap", "flexsearch", "fontawesome"]
optional = ["leaflet", "katex", "lottie"]
excludeSCSS = ["bootstrap"]
disableTemplate = ["katex"]
[modules.katex]
state = "defer"
[modules.flexsearch]
frontmatter = false
filter = ""
[modules.fontawesome]
inline = true
debug = true
skipMissing = false
[debugging] [debugging]
showJS = false showJS = false
showSCSS = false showSCSS = false
@@ -70,6 +55,14 @@
[messages] [messages]
placement = "bottom-right" placement = "bottom-right"
[dam]
dimensions = "dimensions.yml"
[[dam.providers]]
name = "Cloudinary"
pattern = "cloudinary"
adapter = "assets/adapters/cloudinary.html"
[sharing] [sharing]
enabled = true enabled = true
sort = "weight" sort = "weight"

View File

@@ -15,7 +15,7 @@ for = '/**'
https://*.google-analytics.com https://*.analytics.google.com https://*.googletagmanager.com; \ https://*.google-analytics.com https://*.analytics.google.com https://*.googletagmanager.com; \
font-src 'self' https://fonts.gstatic.com; \ font-src 'self' https://fonts.gstatic.com; \
frame-src 'self' https://www.youtube-nocookie.com https://www.youtube.com; \ frame-src 'self' https://www.youtube-nocookie.com https://www.youtube.com; \
img-src 'self' data: https://*.cloudinary.com https://i.vimeocdn.com https://i.ytimg.com https://*.google-analytics.com https://*.googletagmanager.com https://tile.openstreetmap.org; \ img-src 'self' data: https://*.imgix.net https://*.imagekit.io https://*.cloudinary.com https://i.vimeocdn.com https://i.ytimg.com https://*.google-analytics.com https://*.googletagmanager.com https://tile.openstreetmap.org; \
manifest-src 'self'; \ manifest-src 'self'; \
media-src 'self' \ media-src 'self' \
""" """

View File

@@ -136,7 +136,7 @@ As an example, the following shortcode displays a card group of three elements.
<!-- markdownlint-disable MD037 --> <!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}} {{< 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" */>}} {{</* card title="Bootstrap framework" icon="fab bootstrap" */>}}
Build fast, responsive sites with Bootstrap 5. Easily customize your site with the source Build fast, responsive sites with Bootstrap 5. Easily customize your site with the source
Sass files. Sass files.
@@ -255,11 +255,12 @@ As an example, the following shortcodes show a square check, a brand logo, a cir
## Image ## 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 --> <!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}} {{< 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 >}} {{< /example >}}
<!-- markdownlint-enable MD037 --> <!-- markdownlint-enable MD037 -->

View File

@@ -10,7 +10,7 @@ thumbnail:
authorURL: https://unsplash.com/@ryoji__iwata authorURL: https://unsplash.com/@ryoji__iwata
origin: Unsplash origin: Unsplash
originURL: https://unsplash.com/photos/5siQcvSxCP8 originURL: https://unsplash.com/photos/5siQcvSxCP8
modules: ["katex", "leaflet", "lottie"] modules: ["katex", "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.
@@ -25,6 +25,49 @@ As an example, the following shortcode shows an animation that plays on hover.
{{< /example >}} {{< /example >}}
<!-- markdownlint-enable MD037 --> <!-- 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) ## 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 the KaTeX typesetting library.

View File

@@ -5,11 +5,7 @@ date: 2024-05-19
description: Include responsive images from local sources and selected CDN image providers. description: Include responsive images from local sources and selected CDN image providers.
tags: ["blog"] tags: ["blog"]
thumbnail: thumbnail:
url: https://res.cloudinary.com/demo/image/upload/v1689803100/ai/hiker.jpg url: https://assets.imgix.net/examples/bluehat.jpg
author: Nathan Dumlao
authorURL: https://unsplash.com/@nate_dumlao
origin: Unsplash
originURL: https://unsplash.com/photos/QLPWQvHvmII
--- ---
## Cloudinary ## Cloudinary
@@ -19,6 +15,28 @@ As an example, the following shortcode displays an image with rounded corners an
<!-- markdownlint-disable MD037 --> <!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}} {{< example lang="hugo" >}}
{{</* image src="https://res.cloudinary.com/demo/image/upload/dog.webp" {{</* image src="https://res.cloudinary.com/demo/image/upload/dog.webp"
ratio="21x9" caption="Cloudinary image" class="rounded" */>}} ratio="21x9" caption="Cloudinary image" class="rounded" plain=true */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## ImageKit.io
As an example, the following shortcode displays an image with rounded corners and a 21x9 aspect ratio.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* image src="https://ik.imagekit.io/demo/default-image.jpg"
ratio="21x9" caption="ImageKit.io image" class="rounded" anchor="Center" */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Imgix
As an example, the following shortcode displays an image with rounded corners and a 21x9 aspect ratio.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* image src="https://assets.imgix.net/examples/bluehat.jpg"
ratio="21x9" caption="imgix image" class="rounded" anchor="Top" */>}}
{{< /example >}} {{< /example >}}
<!-- markdownlint-enable MD037 --> <!-- markdownlint-enable MD037 -->

View File

@@ -22,6 +22,7 @@
"i", "i",
"img", "img",
"input", "input",
"label",
"li", "li",
"link", "link",
"mark", "mark",
@@ -69,6 +70,7 @@
"align-self-end", "align-self-end",
"anchor", "anchor",
"badge", "badge",
"ball",
"bg-body", "bg-body",
"bg-body-tertiary", "bg-body-tertiary",
"bg-danger", "bg-danger",
@@ -101,11 +103,14 @@
"btn-sm", "btn-sm",
"btn-social", "btn-social",
"card", "card",
"card-block-2",
"card-body", "card-body",
"card-body-link", "card-body-link",
"card-body-margin", "card-body-margin",
"card-button", "card-button",
"card-button-link", "card-button-link",
"card-container",
"card-container-wrapper",
"card-emphasize", "card-emphasize",
"card-icon", "card-icon",
"card-img-bg", "card-img-bg",
@@ -123,6 +128,7 @@
"carousel-indicators", "carousel-indicators",
"carousel-inner", "carousel-inner",
"carousel-item", "carousel-item",
"checkbox",
"chroma", "chroma",
"col", "col",
"col-10", "col-10",
@@ -131,22 +137,24 @@
"col-3", "col-3",
"col-4", "col-4",
"col-6", "col-6",
"col-8",
"col-9", "col-9",
"col-auto", "col-auto",
"col-lg-2", "col-lg-2",
"col-lg-4", "col-lg-4",
"col-lg-8", "col-lg-8",
"col-md-10",
"col-md-2", "col-md-2",
"col-md-3", "col-md-3",
"col-md-4", "col-md-4",
"col-md-6",
"col-md-8", "col-md-8",
"col-md-9", "col-md-9",
"col-md-auto", "col-md-auto",
"col-sm-12", "col-sm-12",
"col-sm-3", "col-sm-3",
"col-sm-6", "col-sm-6",
"col-sm-9",
"col-xl-10",
"col-xl-2",
"collapse", "collapse",
"collapsed", "collapsed",
"container", "container",
@@ -167,6 +175,7 @@
"d-none-light", "d-none-light",
"d-sm-block", "d-sm-block",
"d-sm-none", "d-sm-none",
"data-table",
"display-1", "display-1",
"display-4", "display-4",
"dropdown", "dropdown",
@@ -188,7 +197,6 @@
"fa-arrow-right", "fa-arrow-right",
"fa-bootstrap", "fa-bootstrap",
"fa-circle-check", "fa-circle-check",
"fa-circle-half-stroke",
"fa-code", "fa-code",
"fa-docker", "fa-docker",
"fa-ellipsis", "fa-ellipsis",
@@ -223,12 +231,15 @@
"flex-fill", "flex-fill",
"flex-grow-1", "flex-grow-1",
"flex-md-grow-0", "flex-md-grow-0",
"flex-nowrap",
"flex-row",
"font-monospace", "font-monospace",
"footer", "footer",
"form-control", "form-control",
"fs-3", "fs-3",
"fs-5", "fs-5",
"fs-6", "fs-6",
"fs-lg-5",
"fs-md-5", "fs-md-5",
"fw-30", "fw-30",
"fw-bold", "fw-bold",
@@ -257,6 +268,7 @@
"justify-content-center", "justify-content-center",
"justify-content-end", "justify-content-end",
"justify-content-start", "justify-content-start",
"label",
"lead", "lead",
"leaflet-map", "leaflet-map",
"link-bg-body", "link-bg-body",
@@ -278,6 +290,7 @@
"me-auto", "me-auto",
"middle-bar", "middle-bar",
"min-vh-100", "min-vh-100",
"mode-switch",
"ms-1", "ms-1",
"ms-3", "ms-3",
"ms-auto", "ms-auto",
@@ -309,6 +322,7 @@
"navbar-contrast", "navbar-contrast",
"navbar-expand-md", "navbar-expand-md",
"navbar-fixed-top", "navbar-fixed-top",
"navbar-mode-selector",
"navbar-nav", "navbar-nav",
"navbar-nav-scroll", "navbar-nav-scroll",
"navbar-title", "navbar-title",
@@ -376,6 +390,7 @@
"row-cols-md-3", "row-cols-md-3",
"row-cols-sm-2", "row-cols-sm-2",
"row-cols-sm-3", "row-cols-sm-3",
"scrollbar-horizontal",
"search", "search",
"search-input", "search-input",
"search-suggestions", "search-suggestions",
@@ -391,7 +406,6 @@
"sticky-top", "sticky-top",
"stretched-link", "stretched-link",
"svg-inline--fa", "svg-inline--fa",
"switch-mode-collapsed",
"syntax-highlight", "syntax-highlight",
"tab-content", "tab-content",
"tab-pane", "tab-pane",
@@ -419,8 +433,6 @@
"text-sm-start", "text-sm-start",
"text-start", "text-start",
"text-uppercase", "text-uppercase",
"theme-icon",
"theme-icon-active",
"tickmark", "tickmark",
"timeline", "timeline",
"timeline-bg-dark", "timeline-bg-dark",
@@ -459,8 +471,6 @@
"w-50" "w-50"
], ],
"ids": [ "ids": [
"-theme",
"-theme-collapsed",
"TableOfContents", "TableOfContents",
"abbr", "abbr",
"accordion", "accordion",
@@ -496,6 +506,7 @@
"collapse", "collapse",
"collapse-1", "collapse-1",
"command-prompt", "command-prompt",
"data-tables",
"docs", "docs",
"documentation", "documentation",
"example", "example",
@@ -511,6 +522,8 @@
"groupe-de-cartes", "groupe-de-cartes",
"icon", "icon",
"image", "image",
"imagekitio",
"imgix",
"indicateur-de-chargement", "indicateur-de-chargement",
"infobulle", "infobulle",
"invite-de-commandes", "invite-de-commandes",
@@ -530,6 +543,8 @@
"nav-0-btn-2", "nav-0-btn-2",
"navbar", "navbar",
"navbar-0-collapse", "navbar-0-collapse",
"navbar-mode",
"navbar-mode-checkbox",
"navbar-sample-collapse", "navbar-sample-collapse",
"navigation", "navigation",
"notification", "notification",

15
go.mod
View File

@@ -4,13 +4,14 @@ go 1.19
require ( require (
github.com/airbnb/lottie-web v5.12.2+incompatible // indirect github.com/airbnb/lottie-web v5.12.2+incompatible // indirect
github.com/gethinode/mod-bootstrap v1.2.8 // indirect github.com/gethinode/mod-bootstrap v1.3.0 // indirect
github.com/gethinode/mod-flexsearch v1.11.3 // indirect github.com/gethinode/mod-flexsearch v1.12.0 // indirect
github.com/gethinode/mod-fontawesome v1.8.2 // indirect github.com/gethinode/mod-fontawesome v1.9.0 // indirect
github.com/gethinode/mod-katex v1.0.9 // indirect github.com/gethinode/mod-katex v1.1.0 // indirect
github.com/gethinode/mod-leaflet v1.0.1 // indirect github.com/gethinode/mod-leaflet v1.1.0 // indirect
github.com/gethinode/mod-lottie v1.4.6 // indirect github.com/gethinode/mod-lottie v1.5.5 // indirect
github.com/gethinode/mod-utils/v2 v2.2.2 // indirect github.com/gethinode/mod-simple-datatables v1.0.3 // indirect
github.com/gethinode/mod-utils/v2 v2.3.10 // indirect
github.com/nextapps-de/flexsearch v0.0.0-20240110101704-4c3966709f85 // indirect github.com/nextapps-de/flexsearch v0.0.0-20240110101704-4c3966709f85 // indirect
github.com/twbs/bootstrap v5.3.3+incompatible // indirect github.com/twbs/bootstrap v5.3.3+incompatible // indirect
) )

52
go.sum
View File

@@ -20,6 +20,8 @@ github.com/gethinode/mod-bootstrap v1.2.6 h1:joKKVqWzPgitPbUFlU4oIRj72YXsEHkVun3
github.com/gethinode/mod-bootstrap v1.2.6/go.mod h1:CL9IDot6nbXIWJYE/KxfsTdYYEJIGL17BXbAYPn+wVQ= github.com/gethinode/mod-bootstrap v1.2.6/go.mod h1:CL9IDot6nbXIWJYE/KxfsTdYYEJIGL17BXbAYPn+wVQ=
github.com/gethinode/mod-bootstrap v1.2.8 h1:kIKSO6qqE8xA0KQC5s6kkEv5UDc8oT17HalGIwB+dSc= github.com/gethinode/mod-bootstrap v1.2.8 h1:kIKSO6qqE8xA0KQC5s6kkEv5UDc8oT17HalGIwB+dSc=
github.com/gethinode/mod-bootstrap v1.2.8/go.mod h1:CL9IDot6nbXIWJYE/KxfsTdYYEJIGL17BXbAYPn+wVQ= 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-flexsearch v1.0.1 h1:FJkRsUzSnQTXl3MWCigT4E6vfff870UWTnkGqaDGIhA= 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.0.1/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
github.com/gethinode/mod-flexsearch v1.1.0 h1:7BCMyQDlYlskNXuazt8Jg/jg9WREexu2xVkYqThkAX4= github.com/gethinode/mod-flexsearch v1.1.0 h1:7BCMyQDlYlskNXuazt8Jg/jg9WREexu2xVkYqThkAX4=
@@ -64,6 +66,8 @@ github.com/gethinode/mod-flexsearch v1.11.1 h1:TtaE6Dv0lH4x73SHDaZpQJLjk52lRu/Vo
github.com/gethinode/mod-flexsearch v1.11.1/go.mod h1:L8hrnpupx27cez2ObMX8gWnhbW6qss4HGH1Ea4UaBRQ= github.com/gethinode/mod-flexsearch v1.11.1/go.mod h1:L8hrnpupx27cez2ObMX8gWnhbW6qss4HGH1Ea4UaBRQ=
github.com/gethinode/mod-flexsearch v1.11.3 h1:ykxpUg8M4vr1C4QzxJOPGt+1ZmPAD/gOCZoFcZxWoWw= github.com/gethinode/mod-flexsearch v1.11.3 h1:ykxpUg8M4vr1C4QzxJOPGt+1ZmPAD/gOCZoFcZxWoWw=
github.com/gethinode/mod-flexsearch v1.11.3/go.mod h1:L8hrnpupx27cez2ObMX8gWnhbW6qss4HGH1Ea4UaBRQ= 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-fontawesome v1.0.2 h1:ZSK6D20/w4y5GnfYfTBB58uHD0ChIfkpKfRGwioS9rg= github.com/gethinode/mod-fontawesome v1.0.2 h1:ZSK6D20/w4y5GnfYfTBB58uHD0ChIfkpKfRGwioS9rg=
github.com/gethinode/mod-fontawesome v1.0.2/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI= github.com/gethinode/mod-fontawesome v1.0.2/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
github.com/gethinode/mod-fontawesome v1.1.0 h1:rsDzUI+3ZlS/do2ff3ne8/z3KwHeysmuA+WsXlumXXk= github.com/gethinode/mod-fontawesome v1.1.0 h1:rsDzUI+3ZlS/do2ff3ne8/z3KwHeysmuA+WsXlumXXk=
@@ -102,6 +106,8 @@ github.com/gethinode/mod-fontawesome v1.8.1 h1:iyvULrpaGizQoI5Vl9WjFYcMGWefdyG90
github.com/gethinode/mod-fontawesome v1.8.1/go.mod h1:xBKsZH3WJtMOItZVlp9SbO51uaBy6IbvUZSKpNu3b6Y= github.com/gethinode/mod-fontawesome v1.8.1/go.mod h1:xBKsZH3WJtMOItZVlp9SbO51uaBy6IbvUZSKpNu3b6Y=
github.com/gethinode/mod-fontawesome v1.8.2 h1:LAzLytyh9c9gLzBWMju6Gtp3uEojhBQEYw0o38EUKZY= github.com/gethinode/mod-fontawesome v1.8.2 h1:LAzLytyh9c9gLzBWMju6Gtp3uEojhBQEYw0o38EUKZY=
github.com/gethinode/mod-fontawesome v1.8.2/go.mod h1:xBKsZH3WJtMOItZVlp9SbO51uaBy6IbvUZSKpNu3b6Y= 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-katex v1.0.0 h1:me/3dIIZBkfk1mRIFt8QiAGYwYDoSG5bc2hHRtIutFc= github.com/gethinode/mod-katex v1.0.0 h1:me/3dIIZBkfk1mRIFt8QiAGYwYDoSG5bc2hHRtIutFc=
github.com/gethinode/mod-katex v1.0.0/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg= github.com/gethinode/mod-katex v1.0.0/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
github.com/gethinode/mod-katex v1.0.1 h1:809QUztxmKgMNchU+v03iMO7Ma+ISc3ZzhXYauc21rs= github.com/gethinode/mod-katex v1.0.1 h1:809QUztxmKgMNchU+v03iMO7Ma+ISc3ZzhXYauc21rs=
@@ -120,6 +126,8 @@ github.com/gethinode/mod-katex v1.0.8 h1:tFGFz/JIEogCz4wvUsUncrOsOupPxsjP+TwU/3N
github.com/gethinode/mod-katex v1.0.8/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg= github.com/gethinode/mod-katex v1.0.8/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
github.com/gethinode/mod-katex v1.0.9 h1:cCJoR28tZwkDvXps17o9Jwfe3aQQAZ3Rxk0jCNRQdbU= github.com/gethinode/mod-katex v1.0.9 h1:cCJoR28tZwkDvXps17o9Jwfe3aQQAZ3Rxk0jCNRQdbU=
github.com/gethinode/mod-katex v1.0.9/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg= 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-leaflet v0.2.3 h1:QQI4h+IH0jZ7fx4q0um2YIEiYBoW3OAfW8qHzbRCDPk= github.com/gethinode/mod-leaflet v0.2.3 h1:QQI4h+IH0jZ7fx4q0um2YIEiYBoW3OAfW8qHzbRCDPk=
github.com/gethinode/mod-leaflet v0.2.3/go.mod h1:uGggt87x4Fw7wBoJpSiUvNkYg+s/Ujne7klAX2rxMRk= github.com/gethinode/mod-leaflet v0.2.3/go.mod h1:uGggt87x4Fw7wBoJpSiUvNkYg+s/Ujne7klAX2rxMRk=
github.com/gethinode/mod-leaflet v0.3.1 h1:H5MaOa+BB1KuVw7abTqfIn/SNzzRsAyx/WQoSe+2Ykc= github.com/gethinode/mod-leaflet v0.3.1 h1:H5MaOa+BB1KuVw7abTqfIn/SNzzRsAyx/WQoSe+2Ykc=
@@ -136,6 +144,8 @@ github.com/gethinode/mod-leaflet v1.0.0 h1:HdnWafOGkkK1hYGfqLYF3pp9dAFS/caxlzML9
github.com/gethinode/mod-leaflet v1.0.0/go.mod h1:Ei0x9WiL7Dbi4JeG6yI1CE63bT1QJ8sKi67Jea1wFSE= github.com/gethinode/mod-leaflet v1.0.0/go.mod h1:Ei0x9WiL7Dbi4JeG6yI1CE63bT1QJ8sKi67Jea1wFSE=
github.com/gethinode/mod-leaflet v1.0.1 h1:L4Coe6HTD9O0Txs1S8AtVg+6/TEneSF9i6fJK8jdWUw= github.com/gethinode/mod-leaflet v1.0.1 h1:L4Coe6HTD9O0Txs1S8AtVg+6/TEneSF9i6fJK8jdWUw=
github.com/gethinode/mod-leaflet v1.0.1/go.mod h1:Ei0x9WiL7Dbi4JeG6yI1CE63bT1QJ8sKi67Jea1wFSE= 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-lottie v1.0.0 h1:1CUZMcgN5FAyjjyuP3qkaOQ6M5sv6HUAbosW4sIT5VE= 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.0/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=
github.com/gethinode/mod-lottie v1.0.1 h1:+IE7xtnSVQpJS56oBJq9RWKZeFEfxrOZAqE3BSrS/u0= github.com/gethinode/mod-lottie v1.0.1 h1:+IE7xtnSVQpJS56oBJq9RWKZeFEfxrOZAqE3BSrS/u0=
@@ -160,6 +170,26 @@ github.com/gethinode/mod-lottie v1.4.4 h1:Lv7J+lAMx++aK9h0L7vAgsjyOZgrjux4xPz4Tp
github.com/gethinode/mod-lottie v1.4.4/go.mod h1:7tsZjlFgMlj2iWBIS9uOtHHsCrfx9W7S8OsBrZeSVGU= github.com/gethinode/mod-lottie v1.4.4/go.mod h1:7tsZjlFgMlj2iWBIS9uOtHHsCrfx9W7S8OsBrZeSVGU=
github.com/gethinode/mod-lottie v1.4.6 h1:L6zvfbq+FQUWTG3X/wWFCvb91WOxJuIkJUlZOd+QJ1Q= github.com/gethinode/mod-lottie v1.4.6 h1:L6zvfbq+FQUWTG3X/wWFCvb91WOxJuIkJUlZOd+QJ1Q=
github.com/gethinode/mod-lottie v1.4.6/go.mod h1:1/+7U/Q5IuaqkzTrvXK1CnPE7ANnTRsG5k+KaXQUQwE= github.com/gethinode/mod-lottie v1.4.6/go.mod h1:1/+7U/Q5IuaqkzTrvXK1CnPE7ANnTRsG5k+KaXQUQwE=
github.com/gethinode/mod-lottie v1.4.7 h1:5Hes0xY/l8ygzJ8YQIzdqCmvGrDQs8D8qZ/vR1fQh/Q=
github.com/gethinode/mod-lottie v1.4.7/go.mod h1:FvcG3NjXOBOnwou0QvXYNPHpybxwT6yxmSh4N+nBD9s=
github.com/gethinode/mod-lottie v1.5.0 h1:LwEEY+p+sPrN01yz7GyVOsF5lZ4qMln69+gAxJs1DDA=
github.com/gethinode/mod-lottie v1.5.0/go.mod h1:FvcG3NjXOBOnwou0QvXYNPHpybxwT6yxmSh4N+nBD9s=
github.com/gethinode/mod-lottie v1.5.1 h1:84ZmOTKJH75wsd/YjPaaBRkTeLnmRROv9iFlQVMC+jA=
github.com/gethinode/mod-lottie v1.5.1/go.mod h1:z0Q6EADM7pN7gmhCzDx2VR4uG5mxn9qbsphtxjIkssY=
github.com/gethinode/mod-lottie v1.5.2 h1:UvrNAQeD/97Q5fbv3uKIY48fY3IWJeLy/v206Gb0F6Y=
github.com/gethinode/mod-lottie v1.5.2/go.mod h1:HM1pA85EiPO7RtNysw/a2ZzRqktO2WvB/KyWLOuynzg=
github.com/gethinode/mod-lottie v1.5.3 h1:fvCjCoZoCEhY2aou30oEsEo6N4tVSI0ijFyXS3wNib0=
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-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-utils v1.0.0 h1:cqHm2xS5uDiJzRm1KfHaNbq6uMVDKLhQa8/BuTZ1nhY= 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.0/go.mod h1:ONJm3pHCq7nvaPNjusLZNCeCbhOhSBH4HVKHwK1FdYE=
github.com/gethinode/mod-utils v1.0.1 h1:jhZGlGFHHL1f5HXbBMXfiZ2gCz4TVafAzjnRPTIBSEE= github.com/gethinode/mod-utils v1.0.1 h1:jhZGlGFHHL1f5HXbBMXfiZ2gCz4TVafAzjnRPTIBSEE=
@@ -184,6 +214,28 @@ github.com/gethinode/mod-utils/v2 v2.1.1 h1:aLBcS9Zbx+dqnu5oBsTM01AkkN5nwwifgbV4
github.com/gethinode/mod-utils/v2 v2.1.1/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY= github.com/gethinode/mod-utils/v2 v2.1.1/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
github.com/gethinode/mod-utils/v2 v2.2.2 h1:ZRxWIJKmZIDYsoMS3WhxxC+BWJrkd1dcZ8rz/cLZExc= github.com/gethinode/mod-utils/v2 v2.2.2 h1:ZRxWIJKmZIDYsoMS3WhxxC+BWJrkd1dcZ8rz/cLZExc=
github.com/gethinode/mod-utils/v2 v2.2.2/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY= github.com/gethinode/mod-utils/v2 v2.2.2/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
github.com/gethinode/mod-utils/v2 v2.3.0 h1:e3uhlAGasvXe+cgvcmzRe05Zo4UEx86uk0TbnxtyB6U=
github.com/gethinode/mod-utils/v2 v2.3.0/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
github.com/gethinode/mod-utils/v2 v2.3.1 h1:blqynoRJ+H2SPfSU28iYheYWPH39MKNtK5HKJPghL3M=
github.com/gethinode/mod-utils/v2 v2.3.1/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
github.com/gethinode/mod-utils/v2 v2.3.2 h1:QxYtHqeiLfAg+38ULFr3qYwNuypcnV1KzsmmNUjbX+U=
github.com/gethinode/mod-utils/v2 v2.3.2/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
github.com/gethinode/mod-utils/v2 v2.3.3 h1:dewgQgAyPJJ1lA2WhowHaFqVaeLjUNYgxDO4mE3v0F0=
github.com/gethinode/mod-utils/v2 v2.3.3/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
github.com/gethinode/mod-utils/v2 v2.3.4 h1:4OmUsLW7FyQL7vJhg/Iy9E7nFXWL955qCtsj6yWU51M=
github.com/gethinode/mod-utils/v2 v2.3.4/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
github.com/gethinode/mod-utils/v2 v2.3.5 h1:r8V330xQkHTjzAFNCde1Kpz6fgidzmMRW82eIonUnOo=
github.com/gethinode/mod-utils/v2 v2.3.5/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
github.com/gethinode/mod-utils/v2 v2.3.6 h1:Ta+WKc83sK9ZROKmUwS4pA32Qm0bQqoMmWHEOzDvZ5Y=
github.com/gethinode/mod-utils/v2 v2.3.6/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
github.com/gethinode/mod-utils/v2 v2.3.7 h1:FFsUPO7NBp9Bhjovf0Ki5hnDGfeMKV/3RNz1Qpv7+oQ=
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 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-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 h1:re7L8FxbXQpnX8BgzkdUnDpsUmloGNyLmiy2ZCln8pg=

View File

@@ -11,6 +11,7 @@
"html", "html",
"img", "img",
"input", "input",
"label",
"li", "li",
"link", "link",
"meta", "meta",
@@ -31,6 +32,7 @@
"align-items-center", "align-items-center",
"align-self-center", "align-self-center",
"align-self-end", "align-self-end",
"ball",
"bg-body", "bg-body",
"bg-opacity-10", "bg-opacity-10",
"bg-primary", "bg-primary",
@@ -41,6 +43,7 @@
"btn", "btn",
"btn-close", "btn-close",
"btn-primary", "btn-primary",
"checkbox",
"col", "col",
"col-12", "col-12",
"col-6", "col-6",
@@ -57,22 +60,15 @@
"d-flex", "d-flex",
"d-inline", "d-inline",
"d-md-block", "d-md-block",
"d-md-none",
"d-none", "d-none",
"display-1", "display-1",
"display-4", "display-4",
"dropdown",
"dropdown-item",
"dropdown-menu",
"dropdown-menu-end",
"dropdown-toggle",
"emphasis", "emphasis",
"end-0", "end-0",
"fa", "fa",
"fa-10x", "fa-10x",
"fa-2x", "fa-2x",
"fa-book-open", "fa-book-open",
"fa-circle-half-stroke",
"fa-ellipsis", "fa-ellipsis",
"fa-face-frown", "fa-face-frown",
"fa-fw", "fa-fw",
@@ -100,6 +96,7 @@
"justify-content-center", "justify-content-center",
"justify-content-end", "justify-content-end",
"justify-content-start", "justify-content-start",
"label",
"link-bg-footer", "link-bg-footer",
"link-secondary", "link-secondary",
"main-content", "main-content",
@@ -107,6 +104,7 @@
"me-auto", "me-auto",
"middle-bar", "middle-bar",
"min-vh-100", "min-vh-100",
"mode-switch",
"ms-auto", "ms-auto",
"ms-md-3", "ms-md-3",
"mt-3", "mt-3",
@@ -123,6 +121,7 @@
"navbar-container", "navbar-container",
"navbar-expand-md", "navbar-expand-md",
"navbar-fixed-top", "navbar-fixed-top",
"navbar-mode-selector",
"navbar-nav", "navbar-nav",
"navbar-toggler", "navbar-toggler",
"no-js", "no-js",
@@ -156,15 +155,12 @@
"search-suggestions", "search-suggestions",
"shadow", "shadow",
"svg-inline--fa", "svg-inline--fa",
"switch-mode-collapsed",
"text-center", "text-center",
"text-decoration-none", "text-decoration-none",
"text-muted", "text-muted",
"text-secondary", "text-secondary",
"text-sm-start", "text-sm-start",
"text-start", "text-start",
"theme-icon",
"theme-icon-active",
"toast", "toast",
"toast-body", "toast-body",
"toast-container", "toast-container",
@@ -173,9 +169,9 @@
"top-bar" "top-bar"
], ],
"ids": [ "ids": [
"-theme",
"-theme-collapsed",
"navbar-0-collapse", "navbar-0-collapse",
"navbar-mode",
"navbar-mode-checkbox",
"toast-container", "toast-container",
"toast-copied-code-message" "toast-copied-code-message"
] ]

View File

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

View File

@@ -1,4 +1,5 @@
{{ define "main" }} {{ define "main" }}
{{ $base := partial "utilities/GetStaticURL" (dict "url" "/") }}
<div class="d-flex flex-fill"> <div class="d-flex flex-fill">
<div class="container-xxl my-auto"> <div class="container-xxl my-auto">
<div class="text-center"> <div class="text-center">
@@ -7,7 +8,7 @@
<p class="display-1 mt-3 fw-bold">404</p> <p class="display-1 mt-3 fw-bold">404</p>
<p class="fs-3">{{ T "pageNotFoundTitle" }}</p> <p class="fs-3">{{ T "pageNotFoundTitle" }}</p>
</span> </span>
{{- $home := printf "<a href=\"%s\">%s</a>" ("/" | relLangURL) (T "pageNotFoundHome") -}} {{- $home := printf "<a href=\"%s\">%s</a>" $base (T "pageNotFoundHome") -}}
<p>{{ T "pageNotFound" $home | safeHTML }}</p> <p>{{ T "pageNotFound" $home | safeHTML }}</p>
</div> </div>
</div> </div>

View File

@@ -13,10 +13,9 @@
{{- end -}} {{- end -}}
{{- end -}} {{- end -}}
{{- /* Validate module configuration */ -}} {{- /* Initialize module configuration */ -}}
{{- if and .IsPage (not (in .Site.Params.modules.core "bootstrap")) -}} {{- $modules := partial "utilities/InitModules.html" (dict "page" .) -}}
{{- errorf "Bootstrap is a required module, please add it to 'modules.core' in your site parameters" -}} {{- $.Scratch.Set "modules" $modules -}}
{{- end -}}
{{- $fullCover := or (or (and .IsHome .Site.Params.home.fullCover) .Page.Params.fullCover) .Site.Params.main.footerBelowFold }} {{- $fullCover := or (or (and .IsHome .Site.Params.home.fullCover) .Page.Params.fullCover) .Site.Params.main.footerBelowFold }}
{{- $.Scratch.Set "fullCover" $fullCover -}} {{- $.Scratch.Set "fullCover" $fullCover -}}
@@ -30,6 +29,10 @@
{{- /* Define main breakpoint */ -}} {{- /* Define main breakpoint */ -}}
{{- $.Scratch.Set "breakpoint" (partial "utilities/GetBreakpoint.html") }} {{- $.Scratch.Set "breakpoint" (partial "utilities/GetBreakpoint.html") }}
{{- /* Define base URL */ -}}
{{ $lang := site.LanguageCode | default site.Language.Lang }}
{{ $.Scratch.Set "baseURL" (strings.TrimSuffix (printf "%s/" $lang) site.Home.RelPermalink) }}
<!doctype html> <!doctype html>
<html lang="{{ .Site.Language.Lang }}" class="no-js"> <html lang="{{ .Site.Language.Lang }}" class="no-js">
<head> <head>

View File

@@ -32,7 +32,7 @@
<div class="d-none-dark"> <div class="d-none-dark">
<div class="hstack gap-1"> <div class="hstack gap-1">
{{ range (.GetTerms "tags") -}} {{ range (.GetTerms "tags") -}}
{{- $url := (path.Join .Page.RelPermalink) | relLangURL -}} {{- $url := .Page.RelPermalink -}}
{{ partial "assets/button.html" (dict "href" $url "title" .LinkTitle "color" "light" "size" "sm") }} {{ partial "assets/button.html" (dict "href" $url "title" .LinkTitle "color" "light" "size" "sm") }}
{{ end -}} {{ end -}}
</div> </div>
@@ -41,7 +41,7 @@
<div class="d-none-light"> <div class="d-none-light">
<div class="hstack gap-1"> <div class="hstack gap-1">
{{ range (.GetTerms "tags") -}} {{ range (.GetTerms "tags") -}}
{{- $url := (path.Join .Page.RelPermalink) | relLangURL -}} {{- $url := .Page.RelPermalink -}}
{{ partial "assets/button.html" (dict "href" $url "title" .LinkTitle "color" "primary" "size" "sm" "outline" "true") }} {{ partial "assets/button.html" (dict "href" $url "title" .LinkTitle "color" "primary" "size" "sm" "outline" "true") }}
{{ end -}} {{ end -}}
</div> </div>

View File

@@ -1,11 +1,12 @@
{{ $lang := site.LanguageCode | default site.Language.Lang }}
<!DOCTYPE html> <!DOCTYPE html>
<html{{ with site.LanguageCode | default site.Language.Lang }} lang="{{ . }}"{{ end }}> <html {{ with $lang }}lang="{{ . }}"{{ end }}>
<head> <head>
<title>{{ .Permalink }}</title> <title>{{ .Permalink }}</title>
<link rel="canonical" href="{{ .Permalink }}"> <link rel="canonical" href="{{ .Permalink }}">
<meta name="robots" content="noindex"> <meta name="robots" content="noindex">
<meta charset="utf-8"> <meta charset="utf-8">
<noscript><meta http-equiv="refresh" content="0; url={{ .Permalink }}"></noscript> <noscript><meta http-equiv="refresh" content="0; url={{ .Permalink }}"></noscript>
<script src="/js/alias.js"></script> <script src='{{ partial "utilities/GetStaticURL" (dict "url" "js/alias.js") }}'></script>
</head> </head>
</html> </html>

View File

@@ -6,6 +6,19 @@
{{ $error := false }} {{ $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 --> <!-- Validate arguments -->
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "image-adapter" "args" . "group" "partial") }} {{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "image-adapter" "args" . "group" "partial") }}
{{ errorf "partial [assets/adapter/cloudinary.html] - Invalid arguments" -}} {{ errorf "partial [assets/adapter/cloudinary.html] - Invalid arguments" -}}
@@ -20,6 +33,8 @@
{{ $transform := .transform }} {{ $transform := .transform }}
{{ $height := .height }} {{ $height := .height }}
{{ $width := .width }} {{ $width := .width }}
{{ $anchor := "" }}
{{ with .anchor }}{{ $anchor = index $anchorMap . }}{{ end }}
{{ if eq $transform "fill" }}{{ $transform = "c_fill" }}{{ else }}{{ $transform = "c_fit" }}{{ end }} {{ if eq $transform "fill" }}{{ $transform = "c_fill" }}{{ else }}{{ $transform = "c_fit" }}{{ end }}
{{ $element := "" }} {{ $element := "" }}
@@ -33,10 +48,13 @@
{{ $operation := "" }} {{ $operation := "" }}
{{ if $format }} {{ if $format }}
{{ $operation = printf "%s,h_%d,w_%d" $transform $height $width }} {{ $operation = printf "%s,h_%d,w_%d" $transform $height $width }}
{{ $file = printf "%s.%s" (path.BaseName $file) $format }} {{ $file = printf "%s.%s" (strings.TrimSuffix (path.Ext $file) $file) $format }}
{{ else }} {{ else }}
{{ $operation = printf "f_auto,%s,h_%d,w_%d" $transform $height $width }} {{ $operation = printf "f_auto,%s,h_%d,w_%d" $transform $height $width }}
{{ end }} {{ end }}
{{ with $anchor }}
{{ $operation = printf "%s,g_%s" $operation . }}
{{ end }}
{{- $element = urls.JoinPath (slice "https://" $host $dir $operation $file) -}} {{- $element = urls.JoinPath (slice "https://" $host $dir $operation $file) -}}
{{ end }} {{ end }}

View File

@@ -20,6 +20,7 @@
{{ $transform := .transform }} {{ $transform := .transform }}
{{ $height := .height }} {{ $height := .height }}
{{ $width := .width }} {{ $width := .width }}
{{ $anchor := .anchor | default "" }}
{{ $element := "" }} {{ $element := "" }}
{{ $absoluteURL := .absoluteURL }} {{ $absoluteURL := .absoluteURL }}
{{ $url := urls.JoinPath $dir $file }} {{ $url := urls.JoinPath $dir $file }}
@@ -27,7 +28,7 @@
{{ $url = urls.JoinPath "https://" $host $url }} {{ $url = urls.JoinPath "https://" $host $url }}
{{ end }} {{ end }}
<!-- Initialize image if needed --> <!-- Initialize image if needed, do not raise additional warnings -->
{{ $format := .format | default "webp" }} {{ $format := .format | default "webp" }}
{{ if and (not $img) (ne $format "svg") }} {{ if and (not $img) (ne $format "svg") }}
{{- $res := partial "utilities/GetImage.html" (dict "url" $url "page" page) -}} {{- $res := partial "utilities/GetImage.html" (dict "url" $url "page" page) -}}
@@ -37,7 +38,6 @@
{{ end }} {{ end }}
{{ if not $img }} {{ if not $img }}
{{ errorf "partial [assets/adapter/hugo.html] - Expected 'img' argument" -}}
{{ $error = true }} {{ $error = true }}
{{ end }} {{ end }}
{{ end }} {{ end }}
@@ -47,13 +47,20 @@
{{ if not $error }} {{ if not $error }}
{{ $scaled := "" }} {{ $scaled := "" }}
{{ if eq $transform "fill" }} {{ 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 }} {{ else }}
{{- $scaled = $img.Fit (printf "%dx%d %s" $width $height $format) -}} {{- $scaled = $img.Fit (printf "%dx%d %s" $width $height $format) -}}
{{ end }} {{ end }}
{{- $clean := path.Ext $img.RelPermalink -}} {{- $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 -}} {{- if $absoluteURL -}}
{{- $element = $scaled.Permalink -}} {{- $element = $scaled.Permalink -}}
{{- else -}} {{- else -}}

View File

@@ -0,0 +1,30 @@
<!--
Copyright © 2024 The Hinode Team / Mark Dumay. All rights reserved.
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
Visit gethinode.com/license for more details.
-->
{{ $error := false }}
<!-- Validate arguments -->
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "image-adapter-rewrite" "args" . "group" "partial") }}
{{ errorf "partial [assets/adapter/imagekit-rewrite.html] - Invalid arguments" -}}
{{ $error = true }}
{{ end }}
<!-- Initialize arguments -->
{{ $account := .account }}
{{ $container := trim .container "/" }}
{{ $host := .host }}
{{ $dir := .dir }}
{{ $file := .file }}
{{ $element := "" }}
{{ with $container }}{{ $dir = strings.TrimPrefix (printf "/%s" .) $dir }}{{ end }}
{{ if ne $host "ik.imagekit.io" }}
{{ $element = urls.JoinPath (slice "https://ik.imagekit.io" $account $dir $file) }}
{{ else }}
{{ $element = urls.JoinPath (slice "https://" $host $dir $file) }}
{{ end }}
{{ return $element }}

View File

@@ -0,0 +1,66 @@
<!--
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 }}
{{ $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" -}}
{{ $error = true }}
{{ end }}
<!-- Initialize arguments -->
{{ $host := .host }}
{{ $dir := .dir }}
{{ $file := .file }}
{{ $format := .format }}
{{ $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 := "" }}
<!-- Validate image format is supported -->
{{ if and $format (not (in (slice "jpg" "jpeg" "webp" "avif" "png") $format)) }}
{{ warnf "Image format not supported by ImageKit.io: %s.%s" (path.BaseName $file) $format }}
{{ $format = "jpg" }}
{{ end }}
<!-- Split path between end point and image path -->
{{ $newdir := printf "/%s" (index (split $dir "/") 1) }}
{{ $file = urls.JoinPath (strings.TrimPrefix $newdir $dir) $file }}
{{ $dir = $newdir }}
<!-- Generate image URL -->
{{ if not $error }}
{{ $operation := "" }}
{{ if $format }}
{{ $operation = printf "tr:f-%s,%s,h-%d,w-%d" $format $transform $height $width }}
{{ 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 }}
{{ return $element }}

View File

@@ -0,0 +1,61 @@
<!--
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 }}
{{ $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" -}}
{{ $error = true }}
{{ end }}
<!-- Initialize arguments -->
{{ $host := .host }}
{{ $dir := .dir }}
{{ $file := .file }}
{{ $format := .format }}
{{ $transform := .transform }}
{{ $height := .height }}
{{ $width := .width }}
{{ $anchor := "" }}
{{ with .anchor }}{{ $anchor = index $anchorMap . }}{{ end }}
{{ if eq $transform "fill" }}{{ $transform = "crop" }}{{ else }}{{ $transform = "max" }}{{ end }}
{{ $element := "" }}
<!-- Validate image format is supported -->
{{ if and $format (not (in (slice "avif" "gif" "jp2" "jpg" "json" "jxr" "pjpg" "mp4" "png" "png8" "png32" "webm" "webp" "blurhash") $format)) }}
{{ warnf "Image format not supported by imgix: %s.%s" (path.BaseName $file) $format }}
{{ $format = "jpg" }}
{{ end }}
<!-- Generate image URL -->
{{ if not $error }}
{{ $operation := "" }}
{{ if $format }}
{{ $operation = printf "fm=%s&fit=%s&h=%d&w=%d" $format $transform $height $width }}
{{ 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 }}
{{ return $element }}

View File

@@ -22,7 +22,7 @@
{{- range $index, $item := $page.Ancestors.Reverse -}} {{- range $index, $item := $page.Ancestors.Reverse -}}
{{- $title := .LinkTitle -}} {{- $title := .LinkTitle -}}
{{- if .IsHome }}{{ $title = T "home" }}{{ end -}} {{- if .IsHome }}{{ $title = T "home" }}{{ end -}}
{{- $address := or .RelPermalink (.Params.Redirect | relLangURL) -}} {{- $address := or .RelPermalink .Params.Redirect -}}
{{ if $address }} {{ if $address }}
<li class="breadcrumb-item"><a href="{{ $address }}">{{ $title }}</a></li> <li class="breadcrumb-item"><a href="{{ $address }}">{{ $title }}</a></li>
{{ else }} {{ else }}

View File

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

View File

@@ -11,15 +11,18 @@
<!-- Initialize arguments and default values --> <!-- Initialize arguments and default values -->
{{- $alt := .alt -}} {{- $alt := .alt -}}
{{- $wrapper := .wrapper -}}
{{- $class := .class -}} {{- $class := .class -}}
{{- $color := .color -}} {{- $color := .color -}}
{{- $description := .description -}} {{- $description := .description -}}
{{- $body := .body | default "full" -}}
{{- $footer := .footer | default "none" -}} {{- $footer := .footer | default "none" -}}
{{- $gutter := .gutter | default "0" -}} {{- $gutter := .gutter | default "0" -}}
{{- $header := .header | default "full" -}} {{- $header := .header | default "full" -}}
{{- $href := .href -}} {{- $href := .href -}}
{{- $icon := .icon -}} {{- $icon := .icon -}}
{{- $iconStyle := "" -}} {{- $iconStyle := "" -}}
{{- $iconRounded := .iconRounded | default false -}}
{{- $align := .align | default "start" -}} {{- $align := .align | default "start" -}}
{{- $style := .style | default "" -}} {{- $style := .style | default "" -}}
{{- $sizes := .sizes | default "100vw" -}} {{- $sizes := .sizes | default "100vw" -}}
@@ -27,7 +30,9 @@
{{- $orientation := .orientation | default "stacked" -}} {{- $orientation := .orientation | default "stacked" -}}
{{- $padding := (string .padding) | default "auto" -}} {{- $padding := (string .padding) | default "auto" -}}
{{- $ratio := .ratio -}} {{- $ratio := .ratio -}}
{{- $portrait := .portrait | default false -}}
{{- $thumbnail := .thumbnail -}} {{- $thumbnail := .thumbnail -}}
{{- $anchor := .anchor | default "" -}}
{{- $title := .title -}} {{- $title := .title -}}
{{- $subtle := .subtle -}} {{- $subtle := .subtle -}}
{{- $button := .button -}} {{- $button := .button -}}
@@ -55,8 +60,12 @@
{{- if not $title }}{{ $title = .Title }}{{ end -}} {{- if not $title }}{{ $title = .Title }}{{ end -}}
{{- if not $href }}{{ $href = .RelPermalink }}{{ end -}} {{- if not $href }}{{ $href = .RelPermalink }}{{ end -}}
{{- if not $description }}{{ $description = partial "utilities/GetDescription.html" (dict "page" .) }}{{ 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 $icon }}{{ $icon = .Params.icon }}{{ end -}}
{{- if not $anchor }}{{ $anchor = (or (and (reflect.IsMap .Params.Thumbnail) .Params.Thumbnail.anchor) "") }}{{ end -}}
{{- end -}} {{- end -}}
{{ if (hasPrefix $orientation "horizontal") }} {{ if (hasPrefix $orientation "horizontal") }}
@@ -67,6 +76,7 @@
{{ end }} {{ end }}
{{- if eq $orientation "none" }}{{ $thumbnail = "" }}{{ $icon = "" }}{{ end -}} {{- if eq $orientation "none" }}{{ $thumbnail = "" }}{{ $icon = "" }}{{ end -}}
{{- if eq $body "none" }}{{ $description = "" }}{{ end -}}
<!-- Inline partial to render the card's body --> <!-- Inline partial to render the card's body -->
{{- define "partials/card-body.html" -}} {{- define "partials/card-body.html" -}}
@@ -78,7 +88,7 @@
{{- if $href -}} {{- if $href -}}
<a href="{{ $href }}" class="{{ if $color }}link-bg-{{ $color }}{{ else }}card-body-link{{ end }} stretched-link"> <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 }} {{ with $description }}
<div class="card-text {{ if $color }}link-bg-{{ $color }}{{ else }}card-body-link{{ end }}"> <div class="card-text {{ if $color }}link-bg-{{ $color }}{{ else }}card-body-link{{ end }}">
{{ . | safeHTML }} {{ . | safeHTML }}
@@ -87,7 +97,7 @@
</a> </a>
{{- else -}} {{- else -}}
<div> <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 -}} {{ with $description }}<div class="card-text">{{ . | safeHTML }}</div>{{ end -}}
</div> </div>
{{- end -}} {{- end -}}
@@ -119,28 +129,61 @@
{{- range $index, $tag := first $maxTags ($page.GetTerms "tags") -}} {{- range $index, $tag := first $maxTags ($page.GetTerms "tags") -}}
{{- if gt $index 0 }}&nbsp;&bull;&nbsp;{{ end -}} {{- if gt $index 0 }}&nbsp;&bull;&nbsp;{{ end -}}
<a href="{{ (path.Join $tag.Page.RelPermalink) | relLangURL }}" class="{{ $link }} tag-link" aria-label="tag: {{ $tag.LinkTitle }}">{{ $tag.LinkTitle }}</a> <a href="{{ $tag.Page.RelPermalink }}" class="{{ $link }} tag-link" aria-label="tag: {{ $tag.LinkTitle }}">{{ $tag.LinkTitle }}</a>
{{- end -}} {{- end -}}
</small></p> </small></p>
{{- end -}} {{- end -}}
<!-- Main code --> <!-- 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" -}} {{- 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 --> <!-- Render horizontal card -->
<div class="card {{ $colorStyle }} {{ $class }}"> <div class="card {{ $colorStyle }} {{ $class }}">
<div class="row g-0 row-cols-1 h-100{{ if $button }} pb-5{{ end }}"> <div class="row g-0 row-cols-2 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 -}}
{{- if $thumbnail -}} <div class="{{ $col1 }}">
{{- 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) -}} {{- 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) -}}
{{- else if $icon -}} </div>
<div class="card-icon p-{{ $padding }} h-100 fa-wrapper d-flex align-items-{{ $align}} justify-content-center {{ $iconStyle }}"> {{- else if $icon -}}
{{- partial "assets/icon.html" (dict "icon" (printf "%s %s" $icon $style)) -}} <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> </div>
{{- end -}} </div>
</div> {{- end -}}
<div class="{{ if eq $orientation "horizontal-sm" }}col-8 col-md-10{{ else }}col-8{{ end }}"> <div class="{{ $col2 }}">
<div class="card-body d-flex p-{{ $padding }} flex-column h-100 flex-fill"> <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 }} {{ if $page }}<div>{{ partial "card-caption.html" (dict "page" $page "keywords" $header "color" $color) }}</div>{{ end }}
<div class="flex-fill"> <div class="flex-fill">
@@ -171,10 +214,15 @@
<!-- Render stacked / default card --> <!-- Render stacked / default card -->
<div class="card {{ $colorStyle }} {{ $class }} text-{{ $align }}"> <div class="card {{ $colorStyle }} {{ $class }} text-{{ $align }}">
{{- if $thumbnail -}} {{- 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 -}} {{- else if $icon -}}
<div class="card-icon p-{{ $padding }} {{ $iconStyle }} text-{{ $align }}"> <div class="card-icon p-{{ $padding }} {{ $iconStyle }} text-{{ $align }} {{ if $iconRounded }}fa-stack {{ $stack }}{{ end }} w-100">
{{- partial "assets/icon.html" (dict "icon" (printf "%s %s" $icon $style)) -}} {{ 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> </div>
{{- end -}} {{- end -}}
<div class="card-body d-flex flex-column p-{{ $padding }}"> <div class="card-body d-flex flex-column p-{{ $padding }}">
@@ -204,4 +252,4 @@
</div> </div>
{{- end -}} {{- end -}}
{{ if ne $gutter "0" }}</div>{{ end }} {{ if or (ne $gutter "0") ($wrapper) }}</div>{{ end }}

View File

@@ -3,11 +3,23 @@
--> -->
{{ $ratio := .ratio }} {{ $ratio := .ratio }}
{{ $dim := "" }} {{ $dim := "" }}
{{ $matches := first 1 (where site.Data.dimensions "ratio" $ratio) }} {{ $default := dict "4x3" "1400x1050" "3x2" "1400x933" "1x1" "1400x1400" "16x9" "1400x788" "21x9" "1400x600" "auto" "1400" }}
{{ if eq ($matches | len) 1 }}
{{ $dim = (index $matches 0).dimensions }} <!-- Initialize dimensions data - stripping unsupported file extension -->
{{ $config := "dimensions" }}
{{ with index site.Params "dam" }}{{ with index . "dimensions" }}{{ $config = . }}{{ end }}{{ end }}
{{ $config = path.Join (path.Dir $config) (path.BaseName $config) }}
{{ with index site.Data $config }}
{{ $matches := first 1 (where . "ratio" $ratio) }}
{{ if eq ($matches | len) 1 }}
{{ $dim = (index $matches 0).dimensions }}
{{ end }}
{{ end }}
{{ if not $dim }}
{{ $dim = slice (index $default $ratio) }}
{{ end }} {{ end }}
{{ return $dim }} {{ return $dim }}

View File

@@ -14,76 +14,33 @@
{{- $url := .url -}} {{- $url := .url -}}
{{- $mode := .mode -}} {{- $mode := .mode -}}
{{- $modes := .modes -}} {{- $modes := .modes -}}
{{- $plain := .plain | default false }}
{{- $fallbackURL := "" -}} {{- $anchor := .anchor }}
{{- $anchor := "" -}}
{{- $imgset := "" -}}
{{- $isVector := false -}}
<!-- Split url into base and anchor when applicable (only relevant for vector images) --> <!-- Split url into base and anchor when applicable (only relevant for vector images) -->
{{- $fileAnchor := "" -}}
{{- $segments := split $url "#" -}} {{- $segments := split $url "#" -}}
{{- if gt (len $segments) 2 -}} {{- if gt (len $segments) 2 -}}
{{- errorf "Invalid path or url: %q" $url -}} {{- errorf "Invalid path or url: %q" $url -}}
{{- else if eq (len $segments) 2 }} {{- else if eq (len $segments) 2 }}
{{- $url = index $segments 0 -}} {{- $url = index $segments 0 -}}
{{- $anchor = index $segments 1 -}} {{- $fileAnchor = index $segments 1 -}}
{{- end -}} {{- end -}}
<!-- TODO: improve CDN detection / handling --> <!-- Obtain fallback URL and imageset definition -->
{{ $hook := "hugo" }} {{ $target := partial "assets/helpers/image-dimension.html" (dict
{{ if findRE "cloudinary" (urls.Parse $url).Hostname }} "page" $page
{{ $hook = "cloudinary" }} "url" .url
{{- end -}} "ratio" $ratio
"portrait" $portrait
<!-- Define image dimensions --> "plain" $plain
{{ $dims := slice }} "imageset" true
{{- $res := "" -}} "anchor" $anchor
{{- $img := "" -}} ) }}
{{ $transform := "" }} {{ $fallbackURL := index $target "target" }}
{{- if hasSuffix $url "svg" -}} {{ $imgset := index $target "set" }}
{{- $res = partial "utilities/GetResource.html" (dict "url" $url "page" $page) -}} {{ $height := index $target "height" }}
{{ if not $res }} {{ $width := index $target "width" }}
{{- if not (fileExists (path.Join "/static" $url)) -}}
{{ 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) }}
{{ end }}
{{ end }}
{{ else if $ratio }}
{{ $transform = "fill" }}
{{ $dims = partial "assets/helpers/GetDimension.html" (dict "ratio" $ratio) }}
{{ if not $dims }}{{ errorf "partial [assets/image.html] - Cannot find dimension data: %s" $ratio }}{{ end }}
{{ else }}
{{ $transform = "fit" }}
{{- $res := partial "utilities/GetImage.html" (dict "url" $url "page" $page) -}}
{{ with $res }}
{{ $img = $res.resource }}
{{ if $res.mirror }}{{ $class = printf "%s mirrorred" $class }}{{ end }}
{{ end }}
{{ $widths := partial "assets/helpers/GetDimension.html" (dict "ratio" "auto") }}
{{ range $width := $widths -}}
{{- $dims = $dims | append (printf "%dx%d" (int $width) (int (math.Round (mul (div (float $width) $img.Width) $img.Height)))) -}}
{{- end -}}
{{ end }}
<!-- Derive image width and height -->
{{ $width := "" }}
{{ $height := "" }}
{{ range $dim := ($dims | last 1) }}
{{ $width = (int (index (split $dim "x") 0)) }}
{{ $height = (int (index (split $dim "x") 1)) }}
{{ end }}
<!-- Generate image urls -->
{{ if hasSuffix $url "svg" }}
{{- $fallbackURL = $url -}}
{{ else }}
{{- $fallbackURL = partial "assets/helpers/image-set.html" (dict "url" $url "img" $img "dims" ($dims | last 1) "transform" $transform "hook" $hook "format" "jpg" "includeWidth" false) -}}
{{- $imgset = partial "assets/helpers/image-set.html" (dict "url" $url "img" $img "dims" $dims "transform" $transform "hook" $hook) -}}
{{ end }}
<!-- Add color modes --> <!-- Add color modes -->
{{- range $none := $modes -}} {{- range $none := $modes -}}
@@ -95,24 +52,26 @@
<!-- Generate image definition --> <!-- Generate image definition -->
{{- if $caption -}} {{- if $caption -}}
<figure {{ with $wrapper }}class="{{ . }}"{{ end }}> <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 }} {{ 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 -}} {{- if $caption -}}
<figcaption class="figure-caption{{ with $figclass }} {{ . }}{{ end }}">{{ $caption | safeHTML }}</figcaption> <figcaption class="figure-caption{{ with $figclass }} {{ . }}{{ end }}">{{ $caption | safeHTML }}</figcaption>
</figure> </figure>
{{ else if $wrapper }}
</div>
{{- end -}} {{- end -}}

View File

@@ -0,0 +1,140 @@
<!-- Initialize arguments -->
{{- $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 "#" -}}
{{- if gt (len $segments) 2 -}}
{{- errorf "Invalid path or url: %q" $url -}}
{{- else if eq (len $segments) 2 }}
{{- $url = index $segments 0 -}}
{{- end -}}
<!-- Identify image provider -->
{{ $hook := "" }}
{{ $account := "" }}
{{ $container := "" }}
{{ $rewrite := false }}
{{ range $provider, $val := site.Params.images }}
{{ if not $hook }}
{{ with index $val "host" }}
{{ if (findRE . (urls.Parse $url).Hostname) }}
{{ $hook = $provider }}
{{ with index $val "account" }}{{ $account = . }}{{ end }}
{{ with index $val "rewrite" }}{{ $rewrite = . }}{{ end }}
{{ with index $val "container" }}{{ $container = . }}{{ end }}
{{ end }}
{{ end }}
{{ end }}
{{ end }}
{{ if not $hook }}{{ $hook = "hugo" }}{{ end }}
<!-- Rewrite the origin URL if applicable -->
{{ if $rewrite }}
{{ $url = partial "assets/helpers/image-rewrite.html" (dict "url" $url "account" $account "container" $container "hook" $hook) }}
{{ end }}
<!-- Define image dimensions -->
{{ $dims := slice }}
{{- $res := "" -}}
{{- $img := "" -}}
{{ $transform := "" }}
{{- if hasSuffix $url "svg" -}}
{{- $res = partial "utilities/GetResource.html" (dict "url" $url "page" $page) -}}
{{ if not $res }}
{{- if not (fileExists (path.Join "/static" $url)) -}}
{{ warnf "Cannot find vector image resource: %q" $url -}}
{{ else }}
{{ $width := string (partial "utilities/GetWidth.html" (dict "path" $url "height" 500)) }}
{{ if $width }}
{{ $dims = $dims | append (printf "%sx500" $width) }}
{{ else }}
{{ $dims = $dims | append "500" }}
{{ end }}
{{ end }}
{{ end }}
{{ else if $ratio }}
{{ $transform = "fill" }}
{{ $dims = partial "assets/helpers/GetDimension.html" (dict "ratio" $ratio) }}
{{ if not $dims }}{{ errorf "partial [assets/image.html] - Cannot find dimension data: %s" $ratio }}{{ end }}
{{ else if (and $height $width) }}
{{ $transform = "fill" }}
{{ $dims = slice (printf "%dx%d" $width $height) }}
{{ else if not $plain }}
{{ $transform = "fit" }}
{{- $res := partial "utilities/GetImage.html" (dict "url" $url "page" $page) -}}
{{ if and $res $res.resource }}
{{ $img = $res.resource }}
{{ if $res.mirror }}{{ $class = printf "%s mirrorred" $class }}{{ end }}
{{ $widths := partial "assets/helpers/GetDimension.html" (dict "ratio" "auto") }}
{{ range $w := $widths -}}
{{ $height = int (math.Round (mul (div (float $w) $img.Width) $img.Height)) }}
{{- $dims = $dims | append (printf "%dx%d" (int $w) $height ) -}}
{{- end -}}
{{ end }}
{{ end }}
<!-- Derive image width and height -->
{{ if not $plain }}
{{ 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 }}
<!-- Generate image url -->
{{ if or (hasSuffix $url "svg") $plain }}
{{- $targetURL = partial "utilities/GetStaticURL" (dict "url" $url) -}}
{{ else }}
{{- $targetURL = partial "assets/helpers/image-set.html" (dict
"url" $url
"img" $img
"dims" ($dims | last 1)
"anchor" $anchor
"transform" $transform
"hook" $hook
"format" "png"
"includeWidth" false
)}}
{{ if $imageset }}
{{- $set = partial "assets/helpers/image-set.html" (dict
"url" $url
"img" $img
"dims" $dims
"anchor" $anchor
"transform" $transform
"hook" $hook
) -}}
{{ end }}
{{ end }}
{{ return (dict "target" $targetURL "set" $set "height" $height "width" $width) }}

View File

@@ -0,0 +1,29 @@
{{- $url := .url -}}
{{- $account := .account -}}
{{- $container := .container -}}
{{ $hook := .hook }}
{{ $host := (urls.Parse $url).Hostname }}
{{ $dir := (urls.Parse $url).Path }}
{{ $file := index ((split $dir "/") | collections.Reverse) 0 }}
{{ $dir = strings.TrimSuffix $file $dir }}
{{ $error := false }}
{{ $adapter := (printf "assets/adapters/%s-rewrite.html" $hook) }}
{{ if not (fileExists (path.Join "/layouts/partials" $adapter)) }}
{{ warnf "Cannot find adapter: %s" (path.Join "/layouts/partials" $adapter) }}
{{ $error = true }}
{{ end }}
{{ $result := $url }}
{{ if not $error }}
{{ $result = partial $adapter (dict
"account" $account
"container" $container
"host" $host
"dir" $dir
"file" $file
)}}
{{ end }}
{{ return $result }}

View File

@@ -7,18 +7,26 @@
{{ $transform := .transform }} {{ $transform := .transform }}
{{ $format := .format }} {{ $format := .format }}
{{ $includeWidth := .includeWidth | default true }} {{ $includeWidth := .includeWidth | default true }}
{{ $anchor := .anchor | default "" }}
{{ $host := (urls.Parse $url).Hostname }} {{ $host := (urls.Parse $url).Hostname }}
{{ $dir := (urls.Parse $url).Path }} {{ $dir := (urls.Parse $url).Path }}
{{ $file := index ((split $dir "/") | collections.Reverse) 0 }} {{ $file := index ((split $dir "/") | collections.Reverse) 0 }}
{{ $dir = strings.TrimSuffix $file $dir }} {{ $dir = strings.TrimSuffix $file $dir }}
{{ $adapter := (printf "assets/adapters/%s.html" $hook) }}
{{ if not (fileExists (path.Join "/layouts/partials" $adapter)) }}
{{ warnf "Cannot find adapter: %s" (path.Join "/layouts/partials" $adapter) }}
{{ $hook = "hugo" }}
{{ $adapter = "assets/adapters/hugo.html" }}
{{ end }}
{{ $imgset := slice }} {{ $imgset := slice }}
{{- range $index, $dim := $dims -}} {{- range $index, $dim := $dims -}}
{{ $width := (int (index (split $dim "x") 0)) }} {{ $width := (int (index (split $dim "x") 0)) }}
{{ $height := (int (index (split $dim "x") 1)) }} {{ $height := (int (index (split $dim "x") 1)) }}
{{- $element := partial (printf "assets/adapters/%s.html" $hook) (dict {{- $element := partial $adapter (dict
"host" $host "host" $host
"dir" $dir "dir" $dir
"file" $file "file" $file
@@ -28,6 +36,7 @@
"width" $width "width" $width
"height" $height "height" $height
"format" $format "format" $format
"anchor" $anchor
)}} )}}
{{ if $includeWidth }} {{ if $includeWidth }}
{{ $imgset = $imgset | append (printf "%s %dw" $element $width) }} {{ $imgset = $imgset | append (printf "%s %dw" $element $width) }}

View File

@@ -26,6 +26,8 @@
{{- $priority := .priority -}} {{- $priority := .priority -}}
{{- if eq $priority "auto" }}{{ $priority = "" }}{{ end -}} {{- if eq $priority "auto" }}{{ $priority = "" }}{{ end -}}
{{- $sizes := .sizes | default "100vw" -}} {{- $sizes := .sizes | default "100vw" -}}
{{- $plain := .plain | default false -}}
{{- $anchor := .anchor | default "" -}}
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}} {{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
{{- $url := .url -}} {{- $url := .url -}}
@@ -47,28 +49,30 @@
"priority" $priority "priority" $priority
"sizes" $sizes "sizes" $sizes
"absoluteURL" $absoluteURL "absoluteURL" $absoluteURL
"plain" $plain
"anchor" $anchor
) )
-}} -}}
{{- if $mode -}}
{{- $ext := path.Ext $url -}}
{{- $base := strings.TrimSuffix $ext $url -}}
{{- range $suffix := $modes -}}
{{- $base = strings.TrimSuffix (printf "-%s" $suffix) $base -}}
{{- end -}}
{{- range $suffix := $modes -}}
{{- $image := printf "%s-%s%s" $base $suffix $ext -}}
{{- $params = merge $params (dict
"url" $image
"mode" $suffix
"modes" $modes)
-}}
{{- end -}}
{{ else }}
{{- $params = merge $params (dict "url" $url) -}}
{{- end -}}
{{ if not $error }} {{ if not $error }}
{{- partial "assets/helpers/image-definition.html" $params -}} {{- if $mode -}}
{{- $ext := path.Ext $url -}}
{{- $base := strings.TrimSuffix $ext $url -}}
{{- range $suffix := $modes -}}
{{- $base = strings.TrimSuffix (printf "-%s" $suffix) $base -}}
{{- end -}}
{{- range $suffix := $modes -}}
{{- $image := printf "%s-%s%s" $base $suffix $ext -}}
{{- $params = merge $params (dict
"url" $image
"mode" $suffix
"modes" $modes)
-}}
{{- partial "assets/helpers/image-definition.html" $params -}}
{{- end -}}
{{ else }}
{{- $params = merge $params (dict "url" $url) -}}
{{- partial "assets/helpers/image-definition.html" $params -}}
{{- end -}}
{{ end }} {{ end }}

View File

@@ -16,12 +16,18 @@
{{- $page := .page -}} {{- $page := .page -}}
{{- $menu := .menu -}} {{- $menu := .menu -}}
{{- $parent := .parent -}} {{- $parent := .parent -}}
{{- $plain := .plain | default false -}}
{{- $class := .class -}} {{- $class := .class -}}
{{- $cue := .cue | default site.Params.main.externalLinks.cue -}} {{- $cue := .cue | default site.Params.main.externalLinks.cue -}}
{{- $tab := .tab | default site.Params.main.externalLinks.tab -}} {{- $tab := .tab | default site.Params.main.externalLinks.tab -}}
{{- $baseURL := $page.Scratch.Get "baseURL" | default "/" -}}
{{- $menuURL := (or $menu.PageRef $menu.URL) | relLangURL -}} {{- $menuURL := "" -}}
{{- $pageURL := $page.RelPermalink | relLangURL -}} {{ if or (strings.HasPrefix $menu.PageRef "http") (strings.HasPrefix $menu.URL "http") }}
{{ $menuURL = or $menu.PageRef $menu.URL }}
{{ else if (or $menu.PageRef $menu.URL) }}
{{- $menuURL = urls.JoinPath $baseURL ((or $menu.PageRef $menu.URL) | relLangURL) -}}
{{ end }}
{{- $pageURL := $page.RelPermalink -}}
{{- $isActive := or (and (hasPrefix $pageURL $menuURL) (ne $menuURL ("/" | relLangURL))) (eq $pageURL $menuURL) -}} {{- $isActive := or (and (hasPrefix $pageURL $menuURL) (ne $menuURL ("/" | relLangURL))) (eq $pageURL $menuURL) -}}
{{- $isAlias := $menu.Params.alias -}} {{- $isAlias := $menu.Params.alias -}}
{{- $isIcon := $menu.Params.icon -}} {{- $isIcon := $menu.Params.icon -}}
@@ -41,6 +47,11 @@
{{- if $cue -}} {{- if $cue -}}
{{ $suffix = partial "assets/icon.html" (dict "icon" "fas up-right-from-square fa-2xs") }} {{ $suffix = partial "assets/icon.html" (dict "icon" "fas up-right-from-square fa-2xs") }}
{{- end -}} {{- 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 -}} {{ end -}}
{{- $mainNav := urlize (lower $menu.Name) -}} {{- $mainNav := urlize (lower $menu.Name) -}}
@@ -51,7 +62,7 @@
{{- $mainNav = urlize (lower $parent.Name) -}} {{- $mainNav = urlize (lower $parent.Name) -}}
{{- $childNav = urlize (lower $menu.Name) -}} {{- $childNav = urlize (lower $menu.Name) -}}
{{- $anchorClass = "dropdown-item" -}} {{- $anchorClass = "dropdown-item" -}}
{{- else if $menu.HasChildren -}} {{- else if and (not $plain) $menu.HasChildren -}}
{{- $anchorClass = "nav-link dropdown-toggle" -}} {{- $anchorClass = "nav-link dropdown-toggle" -}}
{{- $button = " role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\"" -}} {{- $button = " role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\"" -}}
{{- else -}} {{- else -}}
@@ -65,20 +76,29 @@
<!-- Main code --> <!-- Main code -->
{{ if not $error }} {{ if not $error }}
<a class="{{ $anchorClass }}{{ if $isActive }} active{{ end }}{{ with $class }} {{. }}{{ end }}" {{ if $menu.Params.button }}
{{ if $isIcon }}aria-label="{{ $menu.Name }}"{{ end }} {{ partial "assets/button.html" (dict
data-nav="main" data-nav-main="{{ $mainNav }}"{{ with $childNav }} data-nav-child="{{ . }}"{{ end }} "title" $menu.Name
href="{{ $menuURL }}{{ $params | safeHTMLAttr }}"{{ with $externalHref }} {{ . | safeHTMLAttr }}{{ end }} {{ $button | safeHTMLAttr }}> "icon" $menu.Pre
"href" $menuURL
{{- with $menu.Pre }} "size" "sm"
{{ if hasPrefix . "<i" }} )}}
{{ . | safeHTML }} {{ else }}
{{ else }} <a class="{{ $anchorClass }}{{ if $isActive }} active{{ end }}{{ with $class }} {{ . }}{{ end }}"
{{ partial "assets/icon.html" (dict "icon" (string .) )}} {{ if $isIcon }}aria-label="{{ $menu.Name }}"{{ end }}
{{ end }} data-nav="main" data-nav-main="{{ $mainNav }}"{{ with $childNav }} data-nav-child="{{ . }}"{{ end }}
{{ end -}} {{ if $menuURL }} href="{{ $menuURL }}{{ $params | safeHTMLAttr }}"{{ with $externalHref }} {{ . | safeHTMLAttr }}{{ end }}{{ end }} {{ $button | safeHTMLAttr }}>
<span {{ if $isActive }} class="active"{{ end }}>{{ if not $isIcon }}{{ $menu.Name }}{{ end }}</span>
{{- with $menu.Post }}{{ . }}{{ end -}} {{- with $menu.Pre }}
{{- if not $isIcon }}&nbsp;{{ $suffix }}{{ end -}} {{ if hasPrefix . "<i" }}
</a> {{ . | 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 }} {{ end }}

View File

@@ -16,36 +16,16 @@
<!-- Inline partial to render the color mode switcher --> <!-- Inline partial to render the color mode switcher -->
{{- define "partials/navbar-mode.html" -}} {{- define "partials/navbar-mode.html" -}}
{{- $size := .size -}} {{- $id := .id | default "navbar-mode" -}}
{{- $collapsed := .collapsed -}}
{{- $id := .id -}}
<li class="nav-item dropdown {{ if $collapsed }}d-{{ $size }}-none{{ else }}d-none d-{{ $size }}-block{{ end }}"> <div class="d-flex mode-switch align-items-center" id="{{ $id }}">
<a class="nav-link dropdown-toggle" href="#!" role="button" data-bs-toggle="dropdown" aria-label="{{ T "colorMode" }}" aria-expanded="false" id="{{ $id }}-theme{{ if $collapsed }}-collapsed{{ end }}"> <input type="checkbox" class="checkbox navbar-mode-selector" id="{{ $id }}-checkbox" />
<span class="theme-icon-active">{{- partial "assets/icon.html" (dict "icon" "fas sun fa-fw") }}</span>{{ if $collapsed }}&nbsp;{{ T "colorMode" }}{{ end }} <label class="label" for="{{ $id }}-checkbox">
<span class="d-md-none"></span> {{- partial "assets/icon.html" (dict "icon" "fas sun fa-fw" "spacing" false) }}
</a> {{- partial "assets/icon.html" (dict "icon" "fas moon fa-fw" "spacing" false) }}
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="{{ $id }}-theme{{ if $collapsed }}-collapsed{{ end }}"> <div class="ball"></div>
<li> </label>
<a class="dropdown-item{{ if $collapsed }} switch-mode-collapsed{{ end }}" data-bs-theme-value="light" href="#!"> </div>
<span class="theme-icon">{{- partial "assets/icon.html" (dict "icon" "fas sun fa-fw" "spacing" false) }}</span>&nbsp;
{{- T "colorLight" }}
</a>
</li>
<li>
<a class="dropdown-item{{ if $collapsed }} switch-mode-collapsed{{ end }}" data-bs-theme-value="dark" href="#!">
<span class="theme-icon">{{- partial "assets/icon.html" (dict "icon" "fas moon fa-fw" "spacing" false) }}</span>&nbsp;
{{- T "colorDark" }}
</a>
</li>
<li>
<a class="dropdown-item{{ if $collapsed }} switch-mode-collapsed{{ end }}" data-bs-theme-value="auto" href="#!">
<span class="theme-icon">{{- partial "assets/icon.html" (dict "icon" "fas circle-half-stroke fa-fw" "spacing" false) }}</span>&nbsp;
{{- T "colorAuto" }}
</a>
</li>
</ul>
</li>
{{- end -}} {{- end -}}
<!-- Inline partial to render the version switcher --> <!-- Inline partial to render the version switcher -->
@@ -53,6 +33,7 @@
{{- $size := .size -}} {{- $size := .size -}}
{{- $collapsed := .collapsed -}} {{- $collapsed := .collapsed -}}
{{- $page := .page -}} {{- $page := .page -}}
{{- $baseURL := .baseURL -}}
{{- $list := site.Params.docs.releases -}} {{- $list := site.Params.docs.releases -}}
{{- $id := .id -}} {{- $id := .id -}}
{{- $version := partial "utilities/GetVersion.html" (dict "page" $page) -}} {{- $version := partial "utilities/GetVersion.html" (dict "page" $page) -}}
@@ -70,7 +51,7 @@
{{- end -}} {{- end -}}
{{ if $item.url }} {{ if $item.url }}
<li> <li>
{{- $url := (path.Join $item.url) | relLangURL -}} {{- $url := (urls.JoinPath $baseURL $item.url) | relLangURL -}}
<a class="pe-5 dropdown-item{{ if $collapsed }} switch-mode-collapsed{{ end }}{{ if $active }} active{{ end }}{{ if $disabled }} disabled{{ end }}" href="{{ $url }}">{{ $item.label }} <a class="pe-5 dropdown-item{{ if $collapsed }} switch-mode-collapsed{{ end }}{{ if $active }} active{{ end }}{{ if $disabled }} disabled{{ end }}" href="{{ $url }}">{{ $item.label }}
{{ if $item.latest }}&nbsp;({{ T "latest" }}){{ end }} {{ if $item.latest }}&nbsp;({{ T "latest" }}){{ end }}
{{ if $active }} {{ if $active }}
@@ -86,7 +67,7 @@
{{- if site.Params.docs.overview -}} {{- if site.Params.docs.overview -}}
{{ if gt (len $list) 0 }}<li><hr class="dropdown-divider"></li>{{ end }} {{ if gt (len $list) 0 }}<li><hr class="dropdown-divider"></li>{{ end }}
<li> <li>
{{- $url := (path.Join site.Params.docs.overview) | relLangURL -}} {{- $url := (urls.JoinPath $baseURL site.Params.docs.overview) | relLangURL -}}
<a class="dropdown-item{{ if $collapsed }} switch-mode-collapsed{{ end }}" href="{{ $url }}">{{ T "allVersions" }}</a> <a class="dropdown-item{{ if $collapsed }} switch-mode-collapsed{{ end }}" href="{{ $url }}">{{ T "allVersions" }}</a>
</li> </li>
{{- end -}} {{- end -}}
@@ -98,6 +79,7 @@
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}} {{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
{{- $id := .id | default (printf "navbar-%d" 0) -}} {{- $id := .id | default (printf "navbar-%d" 0) -}}
{{- $page := .page -}} {{- $page := .page -}}
{{- $baseURL := $page.Scratch.Get "baseURL" -}}
{{- $defaultMenu := "main" -}} {{- $defaultMenu := "main" -}}
{{- $menuName := .menus | default $defaultMenu }} {{- $menuName := .menus | default $defaultMenu }}
@@ -117,6 +99,7 @@
{{- $search := .search | default site.Params.navigation.search -}} {{- $search := .search | default site.Params.navigation.search -}}
{{- $searchModal := and $search site.Params.navigation.searchModal -}} {{- $searchModal := and $search site.Params.navigation.searchModal -}}
{{- $enableDarkMode := .mode | default site.Params.main.enableDarkMode -}} {{- $enableDarkMode := .mode | default site.Params.main.enableDarkMode -}}
{{- $modes := site.Params.main.modes | default (slice "light" "dark") -}}
{{- $enableVersions := false -}} {{- $enableVersions := false -}}
{{ $list := site.Params.docs.releases }} {{ $list := site.Params.docs.releases }}
@@ -132,8 +115,15 @@
{{- $logoDark := "" -}} {{- $logoDark := "" -}}
{{- if $enableDarkMode -}} {{- if $enableDarkMode -}}
{{ $ext := path.Ext $logo -}} {{ $ext := path.Ext $logo -}}
{{- $logoLight = printf "%s-light%s" (strings.TrimSuffix $ext $logo) $ext -}} {{- $ext := path.Ext $logo -}}
{{- $logoDark = printf "%s-dark%s" (strings.TrimSuffix $ext $logo) $ext -}} {{- $base := strings.TrimSuffix $ext $logo -}}
{{- range $suffix := $modes -}}
{{- $base = strings.TrimSuffix (printf "-%s" $suffix) $base -}}
{{- end -}}
{{- $logoLight = printf "%s-light%s" $base $ext -}}
{{- $logoDark = printf "%s-dark%s" $base $ext -}}
{{- $light := fileExists (path.Join "/static" $logoLight) -}} {{- $light := fileExists (path.Join "/static" $logoLight) -}}
{{- $dark := fileExists (path.Join "/static" $logoDark) -}} {{- $dark := fileExists (path.Join "/static" $logoDark) -}}
{{- if and $light (not $dark) -}} {{- if and $light (not $dark) -}}
@@ -152,6 +142,10 @@
{{- end -}} {{- end -}}
{{- end -}} {{- end -}}
{{ if $logo }}{{ $logo = urls.JoinPath $baseURL $logo }}{{ end }}
{{ if $logoLight }}{{ $logoLight = urls.JoinPath $baseURL $logoLight }}{{ end }}
{{ if $logoDark }}{{ $logoDark = urls.JoinPath $baseURL $logoDark }}{{ end }}
{{- $title := site.Title -}} {{- $title := site.Title -}}
{{- if .title -}} {{- if .title -}}
{{- $title = .title -}} {{- $title = .title -}}
@@ -170,6 +164,11 @@
{{- $contrast := false -}} {{- $contrast := false -}}
{{- if in (slice "primary" "secondary" "success" "danger") $color }}{{ $contrast = true }}{{ end -}} {{- if in (slice "primary" "secondary" "success" "danger") $color }}{{ $contrast = true }}{{ end -}}
{{- $flex := false }}
{{ if gt (where $menus "Params.spacing" true | len) 0 }}
{{ $flex = true }}
{{ end }}
<!-- Main code --> <!-- Main code -->
<div class="container-fluid {{ if $fixed }}fixed-top{{ end }} p-0{{ with $class }} {{ . }}{{ end }}"> <div class="container-fluid {{ if $fixed }}fixed-top{{ end }} p-0{{ with $class }} {{ . }}{{ end }}">
{{- partial "assets/page-alert.html" (dict "page" $page) -}} {{- partial "assets/page-alert.html" (dict "page" $page) -}}
@@ -231,23 +230,27 @@
{{- if and $search (not $searchModal) }}{{ partial "assets/search-input.html" }}{{ end -}} {{- if and $search (not $searchModal) }}{{ partial "assets/search-input.html" }}{{ end -}}
<!-- Render top-menu items (maximum depth of 2) --> <!-- 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 -}} {{- range $menu := $menus -}}
<li class="nav-item{{ if .HasChildren }} dropdown{{ if $horizontal }} dropdown-horizontal-{{ $size }}{{ end }}{{ end }}"> {{ if $menu.Params.spacing }}
{{- partial "assets/navbar-item.html" (dict "menu" $menu "page" $page) -}} <li class="nav-item flex-grow-1"></li>
{{- if .HasChildren -}} {{ else }}
<ul class="dropdown-menu"> <li class="nav-item {{ if .HasChildren }} dropdown{{ if $horizontal }} dropdown-horizontal-{{ $size }}{{ end }}{{ end }}">
{{- range .Children -}} {{- partial "assets/navbar-item.html" (dict "menu" $menu "page" $page) -}}
<li>{{- partial "assets/navbar-item.html" (dict "menu" . "parent" $menu "page" $page) -}}</li> {{- if .HasChildren -}}
{{- end -}} <ul class="dropdown-menu">
</ul> {{- range .Children -}}
{{- end -}} <li>{{- partial "assets/navbar-item.html" (dict "menu" . "parent" $menu "page" $page) -}}</li>
</li> {{- end -}}
</ul>
{{- end -}}
</li>
{{- end -}}
{{- end -}} {{- end -}}
<!-- Insert divider if applicable --> <!-- Insert divider if applicable -->
{{- if and $menus (or $enableLanguage $enableVersions) -}} {{- 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> <div class="vr d-none d-md-flex h-100 mx-md-2"></div>
</li> </li>
<li><hr class="dropdown-divider-bg"></li> <li><hr class="dropdown-divider-bg"></li>
@@ -255,14 +258,14 @@
<!-- Insert version switcher --> <!-- Insert version switcher -->
{{- if $enableVersions -}} {{- if $enableVersions -}}
{{- partial "partials/navbar-versions.html" (dict "page" $page "size" $size "collapsed" true "id" .id) -}} {{- partial "partials/navbar-versions.html" (dict "page" $page "size" $size "collapsed" true "id" .id "baseURL" $baseURL) -}}
{{- partial "partials/navbar-versions.html" (dict "page" $page "size" $size "collapsed" false "id" .id) -}} {{- partial "partials/navbar-versions.html" (dict "page" $page "size" $size "collapsed" false "id" .id "baseURL" $baseURL) -}}
{{- end -}} {{- end -}}
<!-- Insert language switcher if applicable --> <!-- Insert language switcher if applicable -->
{{- if $enableLanguage -}} {{- if $enableLanguage -}}
{{- $currentLang := $page.Language.Lang -}} {{- $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"> <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" }} {{- partial "assets/icon.html" (dict "icon" "fas globe fa-fw" "spacing" false) }}&nbsp;{{ T "languageSwitcherLabel" }}
</a> </a>
@@ -276,7 +279,7 @@
{{- end -}} {{- end -}}
{{- else -}} {{- else -}}
{{- range site.Languages -}} {{- range site.Languages -}}
<li><a class="dropdown-item" href="/{{ .Lang }}">{{ default .Lang .LanguageName }}</a></li> <li><a class="dropdown-item" href="{{ urls.JoinPath $baseURL .Lang }}">{{ default .Lang .LanguageName }}</a></li>
{{- end -}} {{- end -}}
{{- end -}} {{- end -}}
</ul> </ul>
@@ -286,12 +289,11 @@
<!-- Insert color mode switcher --> <!-- Insert color mode switcher -->
{{- if $enableDarkMode -}} {{- if $enableDarkMode -}}
{{- partial "partials/navbar-mode.html" (dict "size" $size "collapsed" true "id" .id) -}} {{- partial "partials/navbar-mode.html" (dict "size" $size "collapsed" true "id" .id) -}}
{{- partial "partials/navbar-mode.html" (dict "size" $size "collapsed" false "id" .id) -}}
{{- end -}} {{- end -}}
<!-- Insert modal search button --> <!-- Insert modal search button -->
{{- if $searchModal }} {{- 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> <div class="vr d-none d-md-flex h-100 mx-md-2"></div>
</li> </li>
<li><hr class="dropdown-divider-bg"></li> <li><hr class="dropdown-divider-bg"></li>

View File

@@ -21,22 +21,30 @@
{{- with .First }} {{- with .First }}
{{- if ne $currentPageNumber .PageNumber }} {{- if ne $currentPageNumber .PageNumber }}
<li class="page-item"> <li class="page-item">
<a href="{{ .URL }}" aria-label="{{ T "paginationFirst" }}" class="page-link" role="button"><span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angles-left") }}</span></a> <a href="{{ .URL }}" aria-label="{{ T "paginationFirst" }}" class="page-link" role="button">
<span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angles-left" "spacing" false) }}</span>
</a>
</li> </li>
{{- else }} {{- else }}
<li class="page-item disabled"> <li class="page-item disabled">
<a aria-disabled="true" aria-label="{{ T "paginationFirst" }}" class="page-link" role="button" tabindex="-1"><span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angles-left") }}</span></a> <a aria-disabled="true" aria-label="{{ T "paginationFirst" }}" class="page-link" role="button" tabindex="-1">
<span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angles-left" "spacing" false) }}</span>
</a>
</li> </li>
{{- end }} {{- end }}
{{- end }} {{- end }}
{{- with .Prev }} {{- with .Prev }}
<li class="page-item"> <li class="page-item">
<a href="{{ .URL }}" aria-label="{{ T "paginationPrevious" }}" class="page-link" role="button"><span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angle-left") }}</span></a> <a href="{{ .URL }}" aria-label="{{ T "paginationPrevious" }}" class="page-link" role="button">
<span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angle-left" "spacing" false) }}</span>
</a>
</li> </li>
{{- else }} {{- else }}
<li class="page-item disabled"> <li class="page-item disabled">
<a aria-disabled="true" aria-label="{{ T "paginationPrevious" }}" class="page-link" role="button" tabindex="-1"><span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angle-left") }}</span></a> <a aria-disabled="true" aria-label="{{ T "paginationPrevious" }}" class="page-link" role="button" tabindex="-1">
<span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angle-left" "spacing" false) }}</span>
</a>
</li> </li>
{{- end }} {{- end }}
@@ -61,22 +69,30 @@
{{- with .Next }} {{- with .Next }}
<li class="page-item"> <li class="page-item">
<a href="{{ .URL }}" aria-label="{{ T "paginationNext" }}" class="page-link" role="button"><span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angle-right") }}</span></a> <a href="{{ .URL }}" aria-label="{{ T "paginationNext" }}" class="page-link" role="button">
<span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angle-right" "spacing" false) }}</span>
</a>
</li> </li>
{{- else }} {{- else }}
<li class="page-item disabled"> <li class="page-item disabled">
<a aria-disabled="true" aria-label="{{ T "paginationNext" }}" class="page-link" role="button" tabindex="-1"><span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angle-right") }}</span></a> <a aria-disabled="true" aria-label="{{ T "paginationNext" }}" class="page-link" role="button" tabindex="-1">
<span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angle-right" "spacing" false) }}</span>
</a>
</li> </li>
{{- end }} {{- end }}
{{- with .Last }} {{- with .Last }}
{{- if ne $currentPageNumber .PageNumber }} {{- if ne $currentPageNumber .PageNumber }}
<li class="page-item"> <li class="page-item">
<a href="{{ .URL }}" aria-label="{{ T "paginationLast" }}" class="page-link" role="button"><span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angles-right") }}</span></a> <a href="{{ .URL }}" aria-label="{{ T "paginationLast" }}" class="page-link" role="button">
<span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angles-right" "spacing" false) }}</span>
</a>
</li> </li>
{{- else }} {{- else }}
<li class="page-item disabled"> <li class="page-item disabled">
<a aria-disabled="true" aria-label="{{ T "paginationLast" }}" class="page-link" role="button" tabindex="-1"><span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angles-right") }}</span></a> <a aria-disabled="true" aria-label="{{ T "paginationLast" }}" class="page-link" role="button" tabindex="-1">
<span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angles-right" "spacing" false) }}</span>
</a>
</li> </li>
{{- end }} {{- end }}
{{- end }} {{- end }}
@@ -90,14 +106,18 @@
{{- with .First }} {{- with .First }}
{{- if ne $currentPageNumber .PageNumber }} {{- if ne $currentPageNumber .PageNumber }}
<li class="page-item"> <li class="page-item">
<a href="{{ .URL }}" aria-label="{{ T "paginationFirst" }}" class="page-link" role="button"><span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angles-left") }}</span></a> <a href="{{ .URL }}" aria-label="{{ T "paginationFirst" }}" class="page-link" role="button">
<span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angles-left" "spacing" false) }}</span>
</a>
</li> </li>
{{- end }} {{- end }}
{{- end }} {{- end }}
{{- with .Prev }} {{- with .Prev }}
<li class="page-item"> <li class="page-item">
<a href="{{ .URL }}" aria-label="{{ T "paginationPrevious" }}" class="page-link" role="button"><span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angle-left") }}</span></a> <a href="{{ .URL }}" aria-label="{{ T "paginationPrevious" }}" class="page-link" role="button">
<span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angle-left" "spacing" false) }}</span>
</a>
</li> </li>
{{- end }} {{- end }}
@@ -122,14 +142,18 @@
{{- with .Next }} {{- with .Next }}
<li class="page-item"> <li class="page-item">
<a href="{{ .URL }}" aria-label="{{ T "paginationNext" }}" class="page-link" role="button"><span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angle-right") }}</span></a> <a href="{{ .URL }}" aria-label="{{ T "paginationNext" }}" class="page-link" role="button">
<span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angle-right" "spacing" false) }}</span>
</a>
</li> </li>
{{- end }} {{- end }}
{{- with .Last }} {{- with .Last }}
{{- if ne $currentPageNumber .PageNumber }} {{- if ne $currentPageNumber .PageNumber }}
<li class="page-item"> <li class="page-item">
<a href="{{ .URL }}" aria-label="{{ T "paginationLast" }}" class="page-link" role="button"><span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angles-right") }}</span></a> <a href="{{ .URL }}" aria-label="{{ T "paginationLast" }}" class="page-link" role="button">
<span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angles-right" "spacing" false) }}</span>
</a>
</li> </li>
{{- end }} {{- end }}
{{- end }} {{- end }}

View File

@@ -26,8 +26,8 @@
{{- $group := .group -}} {{- $group := .group -}}
{{- $data := .menu -}} {{- $data := .menu -}}
{{- $doc_slug := $group.title | urlize -}} {{- $doc_slug := urls.JoinPath $baseURL ($group.title | urlize) -}}
{{- $href := or $group.link (printf "%s/" (relLangURL (path.Join $baseURL $doc_slug))) -}} {{- $href := or $group.link $doc_slug -}}
{{- $collapsed := strings.HasPrefix $page.RelPermalink $href -}} {{- $collapsed := strings.HasPrefix $page.RelPermalink $href -}}
<li class="mb-1"> <li class="mb-1">
@@ -71,11 +71,18 @@
{{- $level := .level -}} {{- $level := .level -}}
{{- $baseURL := .baseURL -}} {{- $baseURL := .baseURL -}}
{{- $title := .title -}} {{- $title := .title -}}
{{- $href := .href -}}
{{- $data := .menu -}} {{- $data := .menu -}}
{{ $href := "" }}
{{- $doc_slug := $title | urlize -}} {{ with .href }}
{{- $href := or $href (printf "%s/" (relLangURL (path.Join $baseURL $doc_slug))) -}} {{ if hasPrefix . "http" }}
{{ $href = . }}
{{ else }}
{{- $href = urls.JoinPath $baseURL . -}}
{{ end }}
{{ else }}
{{- $href = urls.JoinPath $baseURL ($title | urlize) -}}
{{ end }}
{{- $active := eq (strings.TrimSuffix "/" $page.RelPermalink) (strings.TrimSuffix "/" $href) -}} {{- $active := eq (strings.TrimSuffix "/" $page.RelPermalink) (strings.TrimSuffix "/" $href) -}}
{{ if eq $level 0}} {{ if eq $level 0}}
@@ -114,7 +121,8 @@
<nav class="sidebar flex-shrink-0 ps-1 pt-3" aria-label="{{ (strings.FirstUpper $section) }} navigation"> <nav class="sidebar flex-shrink-0 ps-1 pt-3" aria-label="{{ (strings.FirstUpper $section) }} navigation">
{{- $sectionBreak := false -}} {{- $sectionBreak := false -}}
{{- $level := 0 -}} {{- $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"> <ul class="list-unstyled ps-0">
{{- range $index, $item := $data -}} {{- range $index, $item := $data -}}

View File

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

View File

@@ -4,20 +4,26 @@
{{ else }} {{ else }}
{{ $page_modules = $page_modules | append .Params.modules }} {{ $page_modules = $page_modules | append .Params.modules }}
{{ end }} {{ end }}
{{ with .Scratch.Get "dependencies" }}{{ $page_modules = append $page_modules . | uniq }}{{ end }}
{{- $modules := site.Params.modules.optional | intersect $page_modules -}} {{ $config := page.Scratch.Get "modules" }}
{{ if not $config }}
{{ errorf "partial [footer/optional-scripts.html] - Cannot initialize module configuration" }}
{{ end }}
{{- $modules := $config.optional | intersect $page_modules -}}
{{- range $index, $mod := $modules -}} {{- range $index, $mod := $modules -}}
{{- $filename := printf "js/%s.bundle.js" $mod -}} {{- $filename := printf "js/%s.bundle.js" $mod -}}
{{- $match := printf "js/modules/%s/**.js" $mod -}} {{- $match := printf "js/modules/%s/**.js" $mod -}}
{{- $skipTemplate := false -}} {{- $skipTemplate := false -}}
{{- if reflect.IsSlice site.Params.modules.disableTemplate -}} {{- if reflect.IsSlice $config.disableTemplate -}}
{{- if in site.Params.modules.disableTemplate $mod}} {{- if in $config.disableTemplate $mod}}
{{- $skipTemplate = true -}} {{- $skipTemplate = true -}}
{{- end -}} {{- end -}}
{{- end -}} {{- end -}}
{{ $state := "" }} {{ $state := "" }}
{{- with (index site.Params.modules $mod) -}} {{- with (index $config.modules $mod) -}}
{{- with index . "state" }}{{ $state = . }}{{ end -}} {{- with index . "state" }}{{ $state = . }}{{ end -}}
{{- end -}} {{- end -}}

View File

@@ -14,9 +14,14 @@
{{- errorf "partial [footer/script.html] - Invalid value for param 'processing': %s" $state -}} {{- errorf "partial [footer/script.html] - Invalid value for param 'processing': %s" $state -}}
{{- end -}} {{- end -}}
{{ $config := page.Scratch.Get "modules" }}
{{ if not $config }}
{{ errorf "partial [footer/scripts.html] - Cannot initialize module configuration" }}
{{ end }}
{{- $modules := "" -}} {{- $modules := "" -}}
{{ if $core }} {{ if $core }}
{{- $modules = site.Params.modules.core -}} {{- $modules = $config.core -}}
{{- end -}} {{- end -}}
{{- $bundle := partial "utilities/bundle" (dict "match" $match "filename" $filename "modules" $modules "basepath" "js/modules" "all" true "debugging" site.Params.debugging.showJS) -}} {{- $bundle := partial "utilities/bundle" (dict "match" $match "filename" $filename "modules" $modules "basepath" "js/modules" "all" true "debugging" site.Params.debugging.showJS) -}}

View File

@@ -7,8 +7,15 @@
<meta name="theme" content="{{ printf "Hinode %s" $version }}"> <meta name="theme" content="{{ printf "Hinode %s" $version }}">
{{ partialCached "head/stylesheet-core.html" . -}} {{ partialCached "head/stylesheet-core.html" . -}}
{{ $config := page.Scratch.Get "modules" }}
{{ if not $config }}
{{ errorf "partial [head/head.html] - Cannot initialize module configuration" }}
{{ end }}
{{ $page_modules := slice | append .Page.Params.modules }} {{ $page_modules := slice | append .Page.Params.modules }}
{{- $modules := site.Params.modules.optional | intersect $page_modules -}} {{ with .Scratch.Get "dependencies" }}{{ $page_modules = append $page_modules . | uniq }}{{ end }}
{{- $modules := $config.optional | intersect $page_modules -}}
{{- range $index, $mod := $modules -}} {{- range $index, $mod := $modules -}}
{{- $source := printf "scss/%s.scss" $mod -}} {{- $source := printf "scss/%s.scss" $mod -}}
{{- $target := printf "css/%s.css" $mod -}} {{- $target := printf "css/%s.css" $mod -}}
@@ -19,7 +26,7 @@
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="{{ .Site.Params.style.themeFontPath | default "https://fonts.googleapis.com/css2?family=Inter:wght@200;300;600&display=swap" }}"> <link rel="stylesheet" href="{{ .Site.Params.style.themeFontPath | default "https://fonts.googleapis.com/css2?family=Inter:wght@200;300;600&display=swap" }}">
{{ else if .Site.Params.style.themeFontPreload }} {{ else if .Site.Params.style.themeFontPreload }}
{{ $font := .Site.Params.style.themeFontPreload }} {{ $font := partial "utilities/GetStaticURL" (dict "url" .Site.Params.style.themeFontPreload) }}
<link rel="preload" href="{{ $font }}" as="font" type="font/{{ strings.TrimPrefix "." (path.Ext $font) }}" crossorigin> <link rel="preload" href="{{ $font }}" as="font" type="font/{{ strings.TrimPrefix "." (path.Ext $font) }}" crossorigin>
{{- end -}} {{- end -}}
{{ partial "head/seo.html" . }} {{ partial "head/seo.html" . }}

View File

@@ -35,7 +35,9 @@
{{- end }} {{- end }}
{{- end -}} {{- end -}}
{{ $base := partial "utilities/GetStaticURL" (dict "url" "/") }}
{{- range resources.Match "icons/**.svg" -}} {{- range resources.Match "icons/**.svg" -}}
{{- $icon := . | resources.ExecuteAsTemplate .RelPermalink $params -}} {{- $target := strings.TrimPrefix $base .RelPermalink -}}
{{- $icon := . | resources.ExecuteAsTemplate $target $params -}}
{{- $icon.Publish -}} {{- $icon.Publish -}}
{{- end -}} {{- end -}}

View File

@@ -14,16 +14,9 @@
{{ $.Scratch.Set "description" $description -}} {{ $.Scratch.Set "description" $description -}}
{{- $thumbnail := (or (and (reflect.IsMap .Params.Thumbnail) .Params.Thumbnail.url) .Params.Thumbnail) -}} {{- $thumbnail := (or (and (reflect.IsMap .Params.Thumbnail) .Params.Thumbnail.url) .Params.Thumbnail) -}}
{{ with $thumbnail -}} {{ if $thumbnail -}}
{{- $res := partial "utilities/GetImage.html" (dict "url" .) -}} {{ $imgURL := index (partial "assets/helpers/image-dimension.html" (dict "url" $thumbnail "width" 1280 "height" 640 "page" .)) "target" }}
{{- $img := "" -}} {{ $.Scratch.Set "thumbnail" ($imgURL | absURL) -}}
{{ with $res }}{{ $img = $res.resource }}{{ end }}
{{ with $img -}}
{{ $dim := "1280x640" -}}
{{ $scaled := (.Fill (printf "%s jpg" $dim)) -}}
{{- $scaled = $scaled | resources.Copy (replace $img.RelPermalink ".jpg" (printf "-%s.jpg" $dim)) -}}
{{ $.Scratch.Set "thumbnail" ($scaled.Permalink | absURL) -}}
{{ end -}}
{{ else -}} {{ else -}}
{{ with .Site.Params.schema.image.url -}} {{ with .Site.Params.schema.image.url -}}
{{ $.Scratch.Set "thumbnail" (. | absURL) -}} {{ $.Scratch.Set "thumbnail" (. | absURL) -}}

View File

@@ -14,11 +14,16 @@
{{- $core := .core | default true -}} {{- $core := .core | default true -}}
{{- $modules := "" -}} {{- $modules := "" -}}
{{ $config := page.Scratch.Get "modules" }}
{{ if not $config }}
{{ errorf "partial [head/stylesheet.html] - Cannot initialize module configuration" }}
{{ end }}
{{ if $core }} {{ if $core }}
{{- if reflect.IsSlice site.Params.modules.excludeSCSS -}} {{- if reflect.IsSlice $config.excludeSCSS -}}
{{- $modules = complement site.Params.modules.excludeSCSS (or site.Params.modules.core slice) -}} {{- $modules = complement $config.excludeSCSS (or $config.core slice) -}}
{{ else }} {{ else }}
{{- $modules = site.Params.modules.core -}} {{- $modules = $config.core -}}
{{ end }} {{ end }}
{{- end -}} {{- end -}}
@@ -35,6 +40,7 @@
{{- $overlayOffset := $navbarOffset -}} {{- $overlayOffset := $navbarOffset -}}
{{- if site.Params.navigation.overlay }}{{ $overlayOffset = "0rem" }}{{ end }} {{- if site.Params.navigation.overlay }}{{ $overlayOffset = "0rem" }}{{ end }}
{{- $vars := dict {{- $vars := dict
"base-url" (page.Scratch.Get "baseURL" | default "/")
"theme-font" (default "Inter" site.Params.style.themeFont) "theme-font" (default "Inter" site.Params.style.themeFont)
"font-size-base" (default "1rem" site.Params.style.fontSizeBase) "font-size-base" (default "1rem" site.Params.style.fontSizeBase)
"primary" (default "#007bff" site.Params.style.primary) "primary" (default "#007bff" site.Params.style.primary)

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

@@ -0,0 +1,52 @@
{{ $page := .page }}
{{ $core := slice }}
{{ $optional := slice }}
{{ $excludeSCSS := slice }}
{{ $disableTemplate := slice }}
{{ $modules := dict }}
{{ range $key, $mod := $page.Site.Params.modules }}
{{ if eq $key "core" }}
{{ warnf "DEPRECATED: module parameter `core` has been deprecated in release v0.24.0" }}
{{ $core = $core | append $mod }}
{{ else if eq $key "optional" }}
{{ warnf "DEPRECATED: module parameter `optional` has been deprecated in release v0.24.0" }}
{{ $optional = $optional | append $mod }}
{{ else if eq $key "excludescss" }}
{{ warnf "DEPRECATED: module parameter `excludeSCSS` has been deprecated in release v0.24.0" }}
{{ $excludeSCSS = $excludeSCSS | append $mod }}
{{ else if eq $key "disabletemplate" }}
{{ warnf "DEPRECATED: module parameter `disableTemplate` has been deprecated in release v0.24.0" }}
{{ $disableTemplate = $disableTemplate | append $mod }}
{{ else if reflect.IsMap $mod }}
{{ $integration := index $mod "integration" }}
{{ if eq $integration "core" }}
{{ $core = $core | append $key }}
{{ else if eq $integration "optional" }}
{{ $optional = $optional | append $key }}
{{ else if $integration }}
{{ warnf "Unrecognized module integration setting: %s" $integration }}
{{ end }}
{{ if eq (index $mod "excludeSCSS") true }}
{{ $excludeSCSS = $excludeSCSS | append $key }}
{{ end }}
{{ if eq (index $mod "disableTemplate") true }}
{{ $disableTemplate = $disableTemplate | 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 }}
{{- if and $page.IsPage (not (in $core "bootstrap")) -}}
{{- errorf "Bootstrap is a required module, please add it to 'modules.core' in your site parameters" -}}
{{- end -}}
{{ return $modules }}

View File

@@ -0,0 +1,5 @@
{{ $lastmodstr := (partial "utilities/date.html" (dict "date" .Lastmod "format" "long")) -}}
{{ $lastmodstr | i18n "lastModified" -}}
{{ with .GitInfo }}
&bull;&nbsp;<a href="{{ site.Params.docs.github | default site.Params.schema.github }}/commit/{{ .Hash }}">{{ .Subject }} ({{ .AbbreviatedHash }})</a>
{{ end -}}

View File

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

View File

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

View File

@@ -24,6 +24,8 @@
{{- $portrait := false -}} {{- $portrait := false -}}
{{- $loading := "" -}} {{- $loading := "" -}}
{{- $error := false -}} {{- $error := false -}}
{{- $plain := false -}}
{{- $anchor := "" -}}
{{- if .IsNamedParams -}} {{- if .IsNamedParams -}}
{{ $url = .Get "src" | default "" -}} {{ $url = .Get "src" | default "" -}}
@@ -37,6 +39,8 @@
{{ $figclass = .Get "figclass" | default "" -}} {{ $figclass = .Get "figclass" | default "" -}}
{{ with .Get "mode" }}{{ $mode = partial "utilities/CastBool.html" . }}{{ end -}} {{ with .Get "mode" }}{{ $mode = partial "utilities/CastBool.html" . }}{{ end -}}
{{ with .Get "portrait" }}{{ $portrait = partial "utilities/CastBool.html" . }}{{ end -}} {{ with .Get "portrait" }}{{ $portrait = partial "utilities/CastBool.html" . }}{{ end -}}
{{ with .Get "plain" }}{{ $plain = partial "utilities/CastBool.html" . }}{{ end -}}
{{ $anchor = .Get "anchor" | default "" -}}
{{ else -}} {{ else -}}
{{ $url = .Get 0 }} {{ $url = .Get 0 }}
{{ end -}} {{ end -}}
@@ -58,6 +62,8 @@
"figclass" $figclass "figclass" $figclass
"mode" $mode "mode" $mode
"portrait" $portrait "portrait" $portrait
"plain" $plain
"anchor" $anchor
"loading" $loading "loading" $loading
"page" .Page) "page" .Page)
-}} -}}

View File

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

View File

@@ -24,7 +24,7 @@
{{ .Count }} {{ if gt .Count 1 }} {{ T "articles" }} {{ else }} {{ T "article" }} {{ end }} {{ .Count }} {{ if gt .Count 1 }} {{ T "articles" }} {{ else }} {{ T "article" }} {{ end }}
</div> </div>
<div class="col-9"> <div class="col-9">
<a href="{{ (path.Join .Page.RelPermalink) | relLangURL }}">{{ .Page.Title | .Page.RenderString }}</a> <a href="{{ .Page.RelPermalink }}">{{ .Page.Title | .Page.RenderString }}</a>
</div> </div>
</div> </div>
{{ end }} {{ end }}
@@ -48,7 +48,7 @@
<p class="text-body-secondary mt-5">{{ $year }}</p> <p class="text-body-secondary mt-5">{{ $year }}</p>
{{ $.Scratch.Set "lastYear" $year }} {{ $.Scratch.Set "lastYear" $year }}
{{ end }} {{ end }}
<a href="{{ (path.Join .Page.RelPermalink) | relLangURL }}">{{ if .Draft }}{{ T "draft" | upper }}: {{ end }}{{ .Title | .Page.RenderString }}</a> <a href="{{ .Page.RelPermalink }}">{{ if .Draft }}{{ T "draft" | upper }}: {{ end }}{{ .Title | .Page.RenderString }}</a>
</div> </div>
</div> </div>
{{ end }} {{ end }}

View File

@@ -33,7 +33,7 @@
font-src 'self' https://*.netlify.app https://fonts.gstatic.com; \ font-src 'self' https://*.netlify.app https://fonts.gstatic.com; \
frame-src 'self' https://www.youtube-nocookie.com https://www.youtube.com \ frame-src 'self' https://www.youtube-nocookie.com https://www.youtube.com \
app.netlify.com; \ app.netlify.com; \
img-src 'self' data: https://*.cloudinary.com https://*.netlify.app https://i.vimeocdn.com https://i.ytimg.com https://*.google-analytics.com https://*.googletagmanager.com https://tile.openstreetmap.org; \ img-src 'self' data: https://*.imgix.net https://*.imagekit.io https://*.cloudinary.com https://*.netlify.app https://i.vimeocdn.com https://i.ytimg.com https://*.google-analytics.com https://*.googletagmanager.com https://tile.openstreetmap.org; \
manifest-src 'self'; \ manifest-src 'self'; \
media-src 'self' \ media-src 'self' \
""" """
@@ -82,8 +82,8 @@
# Redirected in exampleSite/config/_default/hugo.toml # Redirected in exampleSite/config/_default/hugo.toml
# srcdir = "" # srcdir = ""
[[plugins]] # [[plugins]]
package = "@netlify/plugin-lighthouse" # package = "@netlify/plugin-lighthouse"
# [plugins.inputs] # [plugins.inputs]
# output_path = "reports/lighthouse.html" # output_path = "reports/lighthouse.html"
# toml-docs-end plugins # toml-docs-end plugins

3242
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{ {
"name": "@gethinode/hinode", "name": "@gethinode/hinode",
"version": "0.24.0-alpha2", "version": "0.24.23",
"description": "Hinode is a clean documentation and blog theme for Hugo, an open-source static site generator", "description": "Hinode is a clean documentation and blog theme for Hugo, an open-source static site generator",
"keywords": [ "keywords": [
"hugo", "hugo",
@@ -66,33 +66,33 @@
"url": "https://github.com/gethinode/hinode/issues" "url": "https://github.com/gethinode/hinode/issues"
}, },
"homepage": "https://gethinode.com", "homepage": "https://gethinode.com",
"devDependencies": { "dependencies": {
"@fullhuman/postcss-purgecss": "^6.0.0", "@fullhuman/postcss-purgecss": "^6.0.0",
"@gethinode/netlify-plugin-dartsass": "^0.3.0",
"@netlify/plugin-lighthouse": "^6.0.0",
"autoprefixer": "^10.4.19", "autoprefixer": "^10.4.19",
"cssnano": "^7.0.1", "cssnano": "^7.0.4",
"cssnano-preset-advanced": "^7.0.1", "cssnano-preset-advanced": "^7.0.4",
"hugo-bin": "0.126.0",
"purgecss-whitelister": "^2.4.0"
},
"devDependencies": {
"@gethinode/netlify-plugin-dartsass": "^0.3.0",
"eslint": "^8.57.0", "eslint": "^8.57.0",
"eslint-config-standard": "^17.1.0", "eslint-config-standard": "^17.1.0",
"eslint-plugin-import": "^2.29.1", "eslint-plugin-import": "^2.29.1",
"eslint-plugin-n": "^16.6.2", "eslint-plugin-n": "^16.6.2",
"eslint-plugin-promise": "^6.1.1", "eslint-plugin-promise": "^6.6.0",
"hugo-bin": "0.123.1",
"markdownlint-cli2": "^0.13.0", "markdownlint-cli2": "^0.13.0",
"netlify-plugin-hugo-cache-resources": "^0.2.1", "netlify-plugin-hugo-cache-resources": "^0.2.1",
"npm-run-all": "^4.1.5", "npm-run-all": "^4.1.5",
"postcss-cli": "^11.0.0", "postcss-cli": "^11.0.0",
"purgecss-whitelister": "^2.4.0", "replace-in-files-cli": "^3.0.0",
"replace-in-files-cli": "^2.2.0", "rimraf": "^6.0.1",
"rimraf": "^5.0.7",
"shx": "^0.3.4", "shx": "^0.3.4",
"stylelint": "^16.5.0", "stylelint": "^16.7.0",
"stylelint-config-standard-scss": "^13.1.0" "stylelint-config-standard-scss": "^13.1.0"
}, },
"optionalDependencies": { "optionalDependencies": {
"@gethinode/netlify-plugin-dartsass": "^0.3.0", "@gethinode/netlify-plugin-dartsass": "^0.3.0",
"@netlify/plugin-lighthouse": "*",
"fsevents": "*", "fsevents": "*",
"netlify-plugin-hugo-cache-resources": "^0.2.1" "netlify-plugin-hugo-cache-resources": "^0.2.1"
}, },