Compare commits

...

259 Commits

Author SHA1 Message Date
Mark Dumay
3a07b36447 Merge pull request #349 from gethinode/develop
Improve default mounts
2023-07-21 10:06:53 +02:00
mark
ca5ed02bf9 Bump package release 2023-07-21 09:59:34 +02:00
Mark Dumay
d19321af56 Merge branch 'main' into develop 2023-07-21 09:57:27 +02:00
mark
142e21d792 Adjust default mounts 2023-07-21 09:56:21 +02:00
mark
4c00655584 Add JS and SCSS debugging option 2023-07-21 09:45:21 +02:00
mark
38a2b9ff72 Improve syntax color 2023-07-21 09:32:53 +02:00
mark
efe8837eb3 Add leaflet to purge CSS safelist 2023-07-21 08:55:01 +02:00
mark
130e95ace5 Update mod-flexsearch 2023-07-21 08:38:12 +02:00
mark
e6e38ac7c3 Show I18n warnings when running prod server 2023-07-21 08:37:54 +02:00
mark
3c0a6079af Update purge script to use modules 2023-07-21 08:37:15 +02:00
Mark Dumay
4ae09056d3 Merge pull request #348 from gethinode/develop
Fix project icon
2023-07-21 06:12:32 +02:00
mark
c20f367894 Bump package release 2023-07-21 06:06:29 +02:00
Mark Dumay
4e41b5d233 Merge pull request #347 from gethinode/main
Sync with main
2023-07-21 06:02:32 +02:00
Mark Dumay
b78e9bd154 Merge pull request #346 from gethinode/leaflet
Add KaTeX support
2023-07-21 05:57:42 +02:00
mark
5caaeae073 Add KaTeX example 2023-07-21 05:51:56 +02:00
mark
df99d74a30 Fix linting issues 2023-07-21 05:51:45 +02:00
Mark Dumay
976c541b03 Merge branch 'main' into leaflet 2023-07-21 05:44:25 +02:00
mark
853a2f0ddd Update katex module 2023-07-21 05:42:34 +02:00
mark
e7b6216e4e Change create:syntax command to logical order 2023-07-21 05:42:21 +02:00
mark
5f3e3fca43 Clear local _vendor dir before vendor command 2023-07-21 05:41:45 +02:00
mark
3e2340a14a Add command to clean mod cache 2023-07-21 05:40:50 +02:00
mark
52f9dc5016 Add katex module 2023-07-21 04:59:10 +02:00
mark
542bf1103e Add KaTeX example 2023-07-20 17:14:09 +02:00
mark
04d1d24c7b Add skipTemplate feature 2023-07-20 17:13:46 +02:00
mark
398028858e Schedule daily Hugo module upgrade 2023-07-20 16:30:07 +02:00
mark
8658d02264 Add comments 2023-07-20 16:29:41 +02:00
github-actions[bot]
6adb066773 Merge pull request #345 from gethinode/dependabot/npm_and_yarn/hugo-bin-0.111.4
Bump hugo-bin from 0.111.3 to 0.111.4
2023-07-20 13:57:30 +00:00
dependabot[bot]
b68a632b63 Bump hugo-bin from 0.111.3 to 0.111.4
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.111.3 to 0.111.4.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.111.3...v0.111.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-20 13:52:49 +00:00
github-actions[bot]
20d9de6c0f Merge pull request #344 from gethinode/dependabot/npm_and_yarn/stylelint-15.10.2
Bump stylelint from 15.10.1 to 15.10.2
2023-07-19 13:36:29 +00:00
dependabot[bot]
51a26c4be8 Bump stylelint from 15.10.1 to 15.10.2
Bumps [stylelint](https://github.com/stylelint/stylelint) from 15.10.1 to 15.10.2.
- [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/15.10.1...15.10.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-19 13:31:00 +00:00
Mark Dumay
ef136b33da Merge pull request #342 from gethinode/leaflet
Add support for core and optional modules
2023-07-17 17:03:57 +02:00
mark
04262c00d2 Fix variable injection 2023-07-17 16:55:16 +02:00
mark
bc17718fb8 Fix navbar-offset var 2023-07-17 16:52:55 +02:00
mark
bd277e420c Add data directive to img-src 2023-07-17 16:43:47 +02:00
mark
69e196f8c2 Allow tile.openstreetmap.org as img-src 2023-07-17 16:35:01 +02:00
Mark Dumay
6663d8de58 Merge branch 'main' into leaflet 2023-07-17 15:42:32 +02:00
github-actions[bot]
99d457a091 Merge pull request #343 from gethinode/dependabot/npm_and_yarn/eslint-8.45.0
Bump eslint from 8.44.0 to 8.45.0
2023-07-17 13:30:54 +00:00
dependabot[bot]
4b1a72d1c0 Bump eslint from 8.44.0 to 8.45.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.44.0 to 8.45.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.44.0...v8.45.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-17 13:25:06 +00:00
Mark Dumay
02875e731f Merge branch 'main' into leaflet 2023-07-17 15:15:21 +02:00
mark
50664248ca Bump package release 2023-07-17 15:13:58 +02:00
mark
b3491cdadb Refactor bundling code 2023-07-17 15:07:52 +02:00
mark
fe822cccaf Improve handling of modules 2023-07-17 15:07:50 +02:00
mark
c0bcb96275 Add Hinode theme badge 2023-07-17 15:01:13 +02:00
mark
cb09aba813 Add mod vendor to scripts 2023-07-17 15:01:00 +02:00
mark
fac6581dc9 Add core modules 2023-07-17 15:00:36 +02:00
mark
3ef2392913 Exclude _vendor from Git repo 2023-07-17 14:53:30 +02:00
mark
8531bf988f Use search code from mod-flexsearch 2023-07-17 11:57:49 +02:00
github-actions[bot]
bb2d3e7eeb Merge pull request #341 from gethinode/dependabot/npm_and_yarn/hugo-bin-0.111.3
Bump hugo-bin from 0.111.2 to 0.111.3
2023-07-14 13:42:20 +00:00
dependabot[bot]
7892bd6afe Bump hugo-bin from 0.111.2 to 0.111.3
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.111.2 to 0.111.3.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.111.2...v0.111.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-14 13:39:11 +00:00
mark
733b8b6dc8 Support core and optional stylesheets 2023-07-11 16:50:47 +02:00
mark
b5fb0d3ea8 Support optional stylesheets 2023-07-11 16:50:26 +02:00
mark
31e3fdc534 Move fonts from stylesheet.html to head.html 2023-07-11 16:49:38 +02:00
mark
641f2ee1d1 Add optional folder 2023-07-11 16:47:36 +02:00
mark
951f595d29 Adjust CSP to support openstreetmap 2023-07-11 16:46:56 +02:00
mark
cab4338b23 Add debug statements 2023-07-11 16:46:30 +02:00
mark
0921b1467e Add initial Hugo modules 2023-07-11 16:45:52 +02:00
mark
23a1f2fed9 Remove obsolete Font Awesome import statements 2023-07-11 16:45:16 +02:00
mark
1acc1a5264 Enable leaflet module 2023-07-11 16:44:50 +02:00
mark
3c60c2c512 Add js support for optional modules 2023-07-11 16:41:36 +02:00
mark
9d3ac01de2 Add initial modules 2023-07-11 16:40:12 +02:00
mark
09973c5a23 Add module support 2023-07-11 16:39:55 +02:00
github-actions[bot]
2ed01bb499 Merge pull request #338 from gethinode/dependabot/npm_and_yarn/hugo-bin-0.111.2
Bump hugo-bin from 0.111.1 to 0.111.2
2023-07-10 13:31:02 +00:00
dependabot[bot]
bca302323a Bump hugo-bin from 0.111.1 to 0.111.2
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.111.1 to 0.111.2.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.111.1...v0.111.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>
2023-07-10 13:27:44 +00:00
mark
ac0152640b Fix typo 2023-07-10 12:04:41 +02:00
mark
5e15eb5dae Remove indentation of code example 2023-07-10 12:03:24 +02:00
mark
c1515325a8 Add components blog post 2023-07-10 12:01:47 +02:00
github-actions[bot]
6fbec8dbac Merge pull request #335 from gethinode/dependabot/npm_and_yarn/stylelint-15.10.1
Bump stylelint from 15.10.0 to 15.10.1
2023-07-06 13:16:43 +00:00
dependabot[bot]
6e20600893 Bump stylelint from 15.10.0 to 15.10.1
Bumps [stylelint](https://github.com/stylelint/stylelint) from 15.10.0 to 15.10.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/15.10.0...15.10.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-06 13:13:10 +00:00
github-actions[bot]
de7fb8927f Merge pull request #332 from gethinode/dependabot/npm_and_yarn/stylelint-15.10.0
Bump stylelint from 15.9.0 to 15.10.0
2023-07-05 13:44:39 +00:00
dependabot[bot]
c14e45ac49 Bump stylelint from 15.9.0 to 15.10.0
Bumps [stylelint](https://github.com/stylelint/stylelint) from 15.9.0 to 15.10.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/15.9.0...15.10.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-05 13:41:17 +00:00
github-actions[bot]
32fd291194 Merge pull request #330 from gethinode/dependabot/npm_and_yarn/hugo-bin-0.111.1
Bump hugo-bin from 0.111.0 to 0.111.1
2023-07-04 13:42:22 +00:00
dependabot[bot]
b45d0155ea Bump hugo-bin from 0.111.0 to 0.111.1
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.111.0 to 0.111.1.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.111.0...v0.111.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-04 13:38:22 +00:00
mark
0530b2ea1e Sync project icon with English version 2023-07-04 11:33:07 +02:00
Mark Dumay
8678741f72 Merge pull request #329 from gethinode/main
Sync with main
2023-07-04 11:13:13 +02:00
Mark Dumay
8c4e11b99f Merge pull request #328 from gethinode/timeline
Fix incorrectly joined URLs
2023-07-04 09:42:51 +02:00
Mark Dumay
00818cb91f Merge branch 'main' into timeline 2023-07-04 09:35:27 +02:00
mark
b3469d277c Bump package release 2023-07-04 09:34:41 +02:00
mark
3627059227 Refactor code to join URL 2023-07-04 09:34:13 +02:00
mark
4f92886b21 Fix joining of URL 2023-07-04 09:33:59 +02:00
mark
0c2f951b81 Adjust formatting 2023-07-04 09:06:15 +02:00
mark
300efb780c Fix link behavior for non-urls 2023-07-04 09:05:49 +02:00
Mark Dumay
42a4fc4618 Merge pull request #327 from gethinode/timeline
Enhance timeline component
2023-07-04 07:05:56 +02:00
Mark Dumay
683ffff1b2 Merge branch 'main' into timeline 2023-07-04 06:40:56 +02:00
mark
7738c06b6c Bump package release 2023-07-04 06:32:28 +02:00
mark
9aca661574 Change preview background color to dark subtle 2023-07-04 06:32:06 +02:00
mark
3d5440fa3d Add background color support 2023-07-04 06:31:33 +02:00
mark
4854d238b7 Add support for badges 2023-07-04 05:40:19 +02:00
github-actions[bot]
898764eb12 Merge pull request #325 from gethinode/dependabot/npm_and_yarn/eslint-8.44.0
Bump eslint from 8.43.0 to 8.44.0
2023-07-03 13:55:10 +00:00
dependabot[bot]
40e66bba8a Bump eslint from 8.43.0 to 8.44.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.43.0 to 8.44.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.43.0...v8.44.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-03 13:51:42 +00:00
Mark Dumay
a543db250f Merge pull request #324 from gethinode/timeline
Add timeline shortcode
2023-07-03 13:41:46 +02:00
mark
8d6b34716f Fix var typo 2023-07-03 13:33:26 +02:00
Mark Dumay
ea89e1c8b5 Merge branch 'main' into timeline 2023-07-03 13:20:57 +02:00
mark
fb6d47c33e Bump package release 2023-07-03 13:18:04 +02:00
mark
dc71f43faf Remove temp blog post 2023-07-03 13:16:07 +02:00
mark
78df40873f Fix highlight color of panels with limited text 2023-07-03 13:14:40 +02:00
mark
43f996acc3 Add internataional timeline examples 2023-07-03 13:14:12 +02:00
mark
dd51fbd542 Add support for smaller screens 2023-07-03 13:02:43 +02:00
mark
49df936f3b Refactor panel code 2023-07-03 11:08:12 +02:00
mark
b6643f12dd Refactor icon code 2023-07-03 10:59:39 +02:00
mark
2de996242a Add scss docs tags 2023-07-03 10:46:52 +02:00
mark
3b8611ebd0 Add initial timeline component 2023-07-03 07:25:47 +02:00
Mark Dumay
3274c7453e Merge pull request #320 from gethinode/develop
Fix breadcrumb hidden by fixed navbar
2023-07-01 06:09:45 +02:00
Mark Dumay
ff622c8080 Merge branch 'main' into develop 2023-07-01 06:03:18 +02:00
mark
455e77b3e9 Bump package release 2023-07-01 06:02:22 +02:00
mark
22c85f7997 Fix [BUG] Breadcrumbs are not visible #317 2023-07-01 05:56:50 +02:00
mark
d8799fabb5 Enable breadcrumb by default 2023-07-01 05:55:22 +02:00
github-actions[bot]
8ae01a2ce1 Merge pull request #319 from gethinode/dependabot/npm_and_yarn/hugo-bin-0.111.0
Bump hugo-bin from 0.110.1 to 0.111.0
2023-06-30 13:38:24 +00:00
dependabot[bot]
d9d3054f22 Bump hugo-bin from 0.110.1 to 0.111.0
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.110.1 to 0.111.0.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.110.1...v0.111.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-30 13:32:50 +00:00
github-actions[bot]
0bf25f7acd Merge pull request #318 from gethinode/dependabot/npm_and_yarn/stylelint-config-standard-scss-10.0.0
Bump stylelint-config-standard-scss from 9.0.0 to 10.0.0
2023-06-30 13:32:05 +00:00
dependabot[bot]
d5c228d43c Bump stylelint-config-standard-scss from 9.0.0 to 10.0.0
Bumps [stylelint-config-standard-scss](https://github.com/stylelint-scss/stylelint-config-standard-scss) from 9.0.0 to 10.0.0.
- [Release notes](https://github.com/stylelint-scss/stylelint-config-standard-scss/releases)
- [Changelog](https://github.com/stylelint-scss/stylelint-config-standard-scss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint-scss/stylelint-config-standard-scss/compare/v9.0.0...v10.0.0)

---
updated-dependencies:
- dependency-name: stylelint-config-standard-scss
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-30 13:28:31 +00:00
mark
96886e20d7 Refine img statement 2023-06-28 09:19:41 +02:00
Mark Dumay
171259fb29 Merge pull request #316 from gethinode/develop
Refine config
2023-06-28 09:13:30 +02:00
Mark Dumay
a706936849 Merge branch 'main' into develop 2023-06-28 07:42:06 +02:00
mark
f538f3b772 Bump bootstrap dependency 2023-06-28 07:40:15 +02:00
mark
a848fccec8 Bump package release 2023-06-28 07:37:27 +02:00
mark
69352dd60a Bump build dependencies 2023-06-28 07:31:23 +02:00
mark
e1c8641d41 Rename config.toml to hugo.toml 2023-06-28 07:20:57 +02:00
mark
deb8dfb3cb Adjust min Hugo version 2023-06-28 07:17:23 +02:00
mark
0dcd3f02c9 Add versioning feature 2023-06-28 07:17:03 +02:00
mark
d3105436a3 Add keyword 2023-06-28 07:16:43 +02:00
mark
38c982f7f4 Remove unused config 2023-06-28 07:08:44 +02:00
mark
9c19327e19 Shorten PR label 2023-06-28 06:40:35 +02:00
Mark Dumay
a9f2d56dd6 Merge pull request #315 from gethinode/develop
Fix post-processing of social URLs
2023-06-28 06:35:05 +02:00
mark
434e02e7f5 Add npm badge 2023-06-28 06:30:11 +02:00
Mark Dumay
7e44d71ecb Merge branch 'main' into develop 2023-06-28 06:11:28 +02:00
mark
be8c6d539b Fix post-processing of social URLs 2023-06-28 06:10:45 +02:00
Mark Dumay
3db2b1f734 Merge pull request #313 from gethinode/develop
Finalize versioned docs support
2023-06-26 17:34:24 +02:00
mark
6802524aac Fix typo 2023-06-26 17:24:44 +02:00
mark
71cdad17d3 Add versioned-documentation feature 2023-06-26 17:16:38 +02:00
mark
626b82a619 Disable version check by default 2023-06-26 17:07:24 +02:00
Mark Dumay
fbb60a0622 Merge branch 'main' into develop 2023-06-26 16:54:47 +02:00
mark
a0684a8a49 Bump package release 2023-06-26 16:53:20 +02:00
mark
55516602e5 Enable versioning for single docs sites 2023-06-26 16:47:21 +02:00
github-actions[bot]
fcab852216 Merge pull request #312 from gethinode/dependabot/npm_and_yarn/eslint-plugin-n-16.0.1
Bump eslint-plugin-n from 16.0.0 to 16.0.1
2023-06-26 14:11:18 +00:00
dependabot[bot]
cb714201bc Bump eslint-plugin-n from 16.0.0 to 16.0.1
Bumps [eslint-plugin-n](https://github.com/eslint-community/eslint-plugin-n) from 16.0.0 to 16.0.1.
- [Release notes](https://github.com/eslint-community/eslint-plugin-n/releases)
- [Commits](https://github.com/eslint-community/eslint-plugin-n/compare/16.0.0...16.0.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-26 14:08:20 +00:00
github-actions[bot]
c8de62f46b Merge pull request #310 from gethinode/dependabot/npm_and_yarn/hugo-bin-0.110.1
Bump hugo-bin from 0.110.0 to 0.110.1
2023-06-23 14:09:09 +00:00
dependabot[bot]
53ab00357e Bump hugo-bin from 0.110.0 to 0.110.1
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.110.0 to 0.110.1.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.110.0...v0.110.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-23 14:02:52 +00:00
github-actions[bot]
0cc246a79a Merge pull request #309 from gethinode/dependabot/npm_and_yarn/stylelint-15.9.0
Bump stylelint from 15.8.0 to 15.9.0
2023-06-23 13:15:04 +00:00
dependabot[bot]
21541b9f80 Bump stylelint from 15.8.0 to 15.9.0
Bumps [stylelint](https://github.com/stylelint/stylelint) from 15.8.0 to 15.9.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/15.8.0...15.9.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-23 13:11:28 +00:00
github-actions[bot]
e3d4339730 Merge pull request #308 from gethinode/dependabot/npm_and_yarn/hugo-bin-0.110.0
Bump hugo-bin from 0.109.0 to 0.110.0
2023-06-22 14:08:55 +00:00
dependabot[bot]
710efd0caa Bump hugo-bin from 0.109.0 to 0.110.0
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.109.0 to 0.110.0.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.109.0...v0.110.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-22 14:03:55 +00:00
github-actions[bot]
493ff64be0 Merge pull request #307 from gethinode/dependabot/npm_and_yarn/hugo-bin-0.109.0
Bump hugo-bin from 0.108.0 to 0.109.0
2023-06-21 14:14:36 +00:00
dependabot[bot]
f2e35074c2 Bump hugo-bin from 0.108.0 to 0.109.0
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.108.0 to 0.109.0.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.108.0...v0.109.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-21 14:11:13 +00:00
mark
7597710980 Add netlify.app to CSP config 2023-06-21 06:07:45 +02:00
Mark Dumay
c44340ef9e Merge pull request #306 from gethinode/develop
Bump release version
2023-06-20 09:51:06 +02:00
Mark Dumay
8dfe0cb9d4 Merge branch 'main' into develop 2023-06-20 09:20:08 +02:00
mark
fdb8287951 Bump release version 2023-06-20 09:19:32 +02:00
Mark Dumay
f4f9b7c754 Merge pull request #305 from gethinode/develop
Exclude 'latest' label from version check
2023-06-20 09:18:26 +02:00
Mark Dumay
4bb5ba728a Merge branch 'main' into develop 2023-06-20 09:08:34 +02:00
mark
bdb8c43fb9 Remove unused code 2023-06-20 09:07:26 +02:00
mark
63e51006ed Exclude 'latest' label from version check 2023-06-20 09:07:02 +02:00
Mark Dumay
37b623e48c Merge pull request #304 from gethinode/develop
Add optional alert when version is outdated
2023-06-20 08:33:55 +02:00
Mark Dumay
27019594ca Merge branch 'main' into develop 2023-06-20 08:17:18 +02:00
mark
d4ee11b7a5 Bump release version 2023-06-20 08:16:48 +02:00
mark
009314943b Add optional alert when version is outdated 2023-06-20 08:16:18 +02:00
github-actions[bot]
826b5f58d8 Merge pull request #303 from gethinode/dependabot/npm_and_yarn/eslint-8.43.0
Bump eslint from 8.42.0 to 8.43.0
2023-06-19 14:16:51 +00:00
dependabot[bot]
f6fb80d690 Bump eslint from 8.42.0 to 8.43.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.42.0 to 8.43.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.42.0...v8.43.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-19 14:12:40 +00:00
github-actions[bot]
8ed98bc5b4 Merge pull request #302 from gethinode/dependabot/npm_and_yarn/stylelint-15.8.0
Bump stylelint from 15.7.0 to 15.8.0
2023-06-19 14:12:10 +00:00
dependabot[bot]
0cc3775370 Bump stylelint from 15.7.0 to 15.8.0
Bumps [stylelint](https://github.com/stylelint/stylelint) from 15.7.0 to 15.8.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/15.7.0...15.8.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-19 14:09:11 +00:00
Mark Dumay
7be81f4393 Merge pull request #301 from gethinode/develop
Fix redirects
2023-06-19 10:42:20 +02:00
mark
869f696a67 Fix local image processing and renaming 2023-06-19 10:28:52 +02:00
Mark Dumay
c6d942b350 Merge branch 'main' into develop 2023-06-19 10:09:18 +02:00
mark
18275acc80 Bump package release 2023-06-19 10:08:08 +02:00
mark
a85540f8de Make script references absolute to support rewrites 2023-06-19 10:07:39 +02:00
mark
3c93828d4f Make image references absolute to support rewrites 2023-06-19 10:07:27 +02:00
mark
8ca629978f Make alias redirects relative 2023-06-19 10:03:17 +02:00
mark
d99d416838 Fix redirect newline 2023-06-19 10:03:01 +02:00
mark
b58a69b2ad Include aliases in redirect template 2023-06-19 09:08:11 +02:00
Mark Dumay
49d7736e1a Merge pull request #300 from gethinode/develop
Enable netlify redirects
2023-06-17 13:58:03 +02:00
mark
04531b6158 Bump package release 2023-06-17 13:50:29 +02:00
mark
b7fb9fb05b Enable netlify redirects 2023-06-17 13:49:23 +02:00
Mark Dumay
4a78bd9e6b Merge pull request #299 from gethinode/main
Sync branch
2023-06-17 12:41:54 +02:00
Mark Dumay
4d0007a26b Merge pull request #298 from gethinode/reedirect
Add support for version redirects
2023-06-17 12:33:45 +02:00
Mark Dumay
ac7e564857 Merge branch 'main' into reedirect 2023-06-17 12:27:34 +02:00
mark
f804ab747c Bump package release 2023-06-17 12:26:49 +02:00
mark
cfd292ddff Add support for version redirects 2023-06-17 12:21:11 +02:00
Mark Dumay
d4b0c379e2 Merge pull request #297 from gethinode/versioning
Add support for version overview
2023-06-17 06:27:38 +02:00
Mark Dumay
60ebd5fd41 Merge branch 'main' into versioning 2023-06-17 06:17:52 +02:00
mark
19a4398c90 Add support for optional version overview 2023-06-17 06:14:13 +02:00
mark
841c2e397f Make urls language aware 2023-06-17 06:13:59 +02:00
mark
3f42d781ec Fix overflow for large version menu entries 2023-06-17 06:13:20 +02:00
mark
dd9fcc6cbd Add support for optional version overview 2023-06-17 06:12:32 +02:00
mark
70aed1ed63 Add site title to version switch in collapsed menu 2023-06-17 05:14:22 +02:00
Mark Dumay
1c635c814c Merge pull request #296 from gethinode/develop
Fix latest label
2023-06-16 16:01:18 +02:00
Mark Dumay
ff1c8ff056 Merge branch 'main' into develop 2023-06-16 15:54:58 +02:00
mark
44c70f4036 Bump release version 2023-06-16 15:54:09 +02:00
mark
28f13f8385 Fix latest label 2023-06-16 15:53:36 +02:00
Mark Dumay
849d481cd6 Merge pull request #295 from gethinode/develop
Add versioning support
2023-06-16 15:43:11 +02:00
Mark Dumay
a0987e33a9 Merge branch 'main' into develop 2023-06-16 15:31:25 +02:00
mark
f5dae5caa2 Add latest label 2023-06-16 15:29:13 +02:00
mark
d640ed1f8e Add version dropdown 2023-06-16 15:29:02 +02:00
mark
0c46c0080e Load versioned menu data 2023-06-16 15:28:44 +02:00
mark
7319a3f9e3 Identify version based on path 2023-06-16 15:28:30 +02:00
mark
2e6ba557c8 Add version support for menu data 2023-06-16 15:27:56 +02:00
mark
1d24b8ff0e Bump package release 2023-06-16 15:27:01 +02:00
github-actions[bot]
df307be37c Merge pull request #293 from gethinode/dependabot/npm_and_yarn/markdownlint-cli2-0.8.1
Bump markdownlint-cli2 from 0.7.1 to 0.8.1
2023-06-13 14:08:00 +00:00
dependabot[bot]
5d09963bb5 Bump markdownlint-cli2 from 0.7.1 to 0.8.1
Bumps [markdownlint-cli2](https://github.com/DavidAnson/markdownlint-cli2) from 0.7.1 to 0.8.1.
- [Changelog](https://github.com/DavidAnson/markdownlint-cli2/blob/main/CHANGELOG.md)
- [Commits](https://github.com/DavidAnson/markdownlint-cli2/compare/v0.7.1...v0.8.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-13 14:03:56 +00:00
Mark Dumay
8ce05d0c41 Merge pull request #291 from gethinode/navbar
Support icon-only nav items
2023-06-07 10:41:33 +02:00
Mark Dumay
5e03d80944 Merge branch 'main' into navbar 2023-06-07 09:52:55 +02:00
mark
65bdc8bb32 Bump release version 2023-06-07 09:52:00 +02:00
mark
558eed95ef Support icon-only nav items 2023-06-07 09:51:27 +02:00
github-actions[bot]
a17ed9b14a Merge pull request #286 from gethinode/dependabot/npm_and_yarn/stylelint-15.7.0
Bump stylelint from 15.6.3 to 15.7.0
2023-06-06 14:13:15 +00:00
dependabot[bot]
06c5a97e3b Bump stylelint from 15.6.3 to 15.7.0
Bumps [stylelint](https://github.com/stylelint/stylelint) from 15.6.3 to 15.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/15.6.3...15.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>
2023-06-06 14:10:08 +00:00
github-actions[bot]
269d7c6bcf Merge pull request #285 from gethinode/dependabot/npm_and_yarn/hugo-bin-0.108.0
Bump hugo-bin from 0.106.1 to 0.108.0
2023-06-06 14:09:12 +00:00
dependabot[bot]
fc2a43b8b9 Bump hugo-bin from 0.106.1 to 0.108.0
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.106.1 to 0.108.0.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.106.1...v0.108.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-06 14:05:19 +00:00
github-actions[bot]
9c14411a3b Merge pull request #283 from gethinode/dependabot/npm_and_yarn/eslint-8.42.0
Bump eslint from 8.41.0 to 8.42.0
2023-06-05 13:28:23 +00:00
dependabot[bot]
529e402267 Bump eslint from 8.41.0 to 8.42.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.41.0 to 8.42.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.41.0...v8.42.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-05 13:25:05 +00:00
github-actions[bot]
4a8ecaad19 Merge pull request #284 from gethinode/dependabot/npm_and_yarn/stylelint-15.6.3
Bump stylelint from 15.6.2 to 15.6.3
2023-06-05 13:23:40 +00:00
dependabot[bot]
d13013189c Bump stylelint from 15.6.2 to 15.6.3
Bumps [stylelint](https://github.com/stylelint/stylelint) from 15.6.2 to 15.6.3.
- [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/15.6.2...15.6.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-05 13:19:19 +00:00
github-actions[bot]
b21b412f16 Merge pull request #281 from gethinode/dependabot/npm_and_yarn/hugo-bin-0.106.1
Bump hugo-bin from 0.105.1 to 0.106.1
2023-06-02 14:09:04 +00:00
dependabot[bot]
b3ad43768c Bump hugo-bin from 0.105.1 to 0.106.1
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.105.1 to 0.106.1.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.105.1...v0.106.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-02 14:05:25 +00:00
Mark Dumay
9ea9a6c616 Merge pull request #280 from gethinode/develop
Bump package release
2023-06-02 11:06:13 +02:00
Mark Dumay
188129f19b Merge branch 'main' into develop 2023-06-02 10:51:13 +02:00
mark
8a83f7345a Bump package release 2023-06-02 10:50:36 +02:00
Mark Dumay
65cd47b1db Merge pull request #279 from gethinode/develop
Change pagination style
2023-06-02 10:49:14 +02:00
Mark Dumay
7e7cc41603 Merge branch 'main' into develop 2023-06-02 09:31:55 +02:00
mark
7318d3cacb Change style of pagination control 2023-06-02 09:29:25 +02:00
github-actions[bot]
ff928d035a Merge pull request #278 from gethinode/dependabot/npm_and_yarn/hugo-bin-0.105.1
Bump hugo-bin from 0.104.0 to 0.105.1
2023-06-01 14:13:41 +00:00
dependabot[bot]
9341a98ab7 Bump hugo-bin from 0.104.0 to 0.105.1
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.104.0 to 0.105.1.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.104.0...v0.105.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-01 14:08:46 +00:00
github-actions[bot]
206558e21e Merge pull request #276 from gethinode/dependabot/npm_and_yarn/eslint-plugin-n-16.0.0
Bump eslint-plugin-n from 15.7.0 to 16.0.0
2023-05-31 14:17:51 +00:00
dependabot[bot]
8ecf38befc Bump eslint-plugin-n from 15.7.0 to 16.0.0
Bumps [eslint-plugin-n](https://github.com/eslint-community/eslint-plugin-n) from 15.7.0 to 16.0.0.
- [Release notes](https://github.com/eslint-community/eslint-plugin-n/releases)
- [Commits](https://github.com/eslint-community/eslint-plugin-n/compare/15.7.0...16.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-31 14:14:19 +00:00
github-actions[bot]
afb3bbff9d Merge pull request #277 from gethinode/dependabot/npm_and_yarn/bootstrap-5.3.0
Bump bootstrap from 5.3.0-alpha3 to 5.3.0
2023-05-31 14:13:42 +00:00
dependabot[bot]
a7f871f954 Bump bootstrap from 5.3.0-alpha3 to 5.3.0
Bumps [bootstrap](https://github.com/twbs/bootstrap) from 5.3.0-alpha3 to 5.3.0.
- [Release notes](https://github.com/twbs/bootstrap/releases)
- [Commits](https://github.com/twbs/bootstrap/compare/v5.3.0-alpha3...v5.3.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-31 14:09:55 +00:00
github-actions[bot]
5d368ecaaa Merge pull request #275 from gethinode/dependabot/npm_and_yarn/hugo-bin-0.104.0
Bump hugo-bin from 0.103.5 to 0.104.0
2023-05-31 14:09:17 +00:00
dependabot[bot]
2e40bd6be0 Bump hugo-bin from 0.103.5 to 0.104.0
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.103.5 to 0.104.0.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.103.5...v0.104.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-31 14:04:51 +00:00
github-actions[bot]
21ae80d491 Merge pull request #274 from gethinode/dependabot/npm_and_yarn/eslint-config-standard-17.1.0
Bump eslint-config-standard from 17.0.0 to 17.1.0
2023-05-30 14:08:57 +00:00
dependabot[bot]
6292be190e Bump eslint-config-standard from 17.0.0 to 17.1.0
Bumps [eslint-config-standard](https://github.com/standard/eslint-config-standard) from 17.0.0 to 17.1.0.
- [Changelog](https://github.com/standard/eslint-config-standard/blob/master/CHANGELOG.md)
- [Commits](https://github.com/standard/eslint-config-standard/compare/v17.0.0...v17.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-30 14:04:57 +00:00
Mark Dumay
a7c5c613c2 Create release.yml
Add default release format
2023-05-30 08:15:55 +02:00
mark
480981d867 Mount instead of copy Font Awesome fonts 2023-05-30 05:40:10 +02:00
github-actions[bot]
abfa80d5a2 Merge pull request #273 from gethinode/dependabot/npm_and_yarn/hugo-bin-0.103.5
Bump hugo-bin from 0.103.3 to 0.103.5
2023-05-29 14:11:41 +00:00
dependabot[bot]
08531514d3 Bump hugo-bin from 0.103.3 to 0.103.5
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.103.3 to 0.103.5.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.103.3...v0.103.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-29 14:08:07 +00:00
Mark Dumay
d4c321fee4 Merge pull request #272 from gethinode/main
Sync
2023-05-29 14:23:40 +02:00
Mark Dumay
b125be2e7d Merge pull request #271 from gethinode/card
Layout
2023-05-29 13:59:43 +02:00
mark
f075eb12ee Adjust font-size from cqw to to cqi 2023-05-29 13:53:11 +02:00
mark
c30dd39ce2 Fix icon width 2023-05-29 13:08:34 +02:00
mark
ad7cd18893 Fix linting issue 2023-05-29 08:22:36 +02:00
mark
cdc3accff3 Bump package release 2023-05-29 08:22:29 +02:00
Mark Dumay
5916a89979 Merge branch 'main' into card 2023-05-29 08:15:23 +02:00
mark
dbc253cbf2 Adjust spacing between sharing icons 2023-05-29 08:12:29 +02:00
mark
1fd8989ad3 Use horizontal stack to evenly distribute tags 2023-05-29 08:12:15 +02:00
mark
0a401775ff Fix horizontal card height 2023-05-29 07:30:24 +02:00
mark
3534d6daec Support fluid icons 2023-05-29 07:25:21 +02:00
mark
ada5ac3d5c Display projects as icon cards 2023-05-29 07:23:34 +02:00
mark
1630eabff8 Replace thumbnail with icon 2023-05-29 07:23:06 +02:00
mark
4a492d2de5 Improve thumbnail / icon ratio for single columns 2023-05-29 07:21:38 +02:00
Mark Dumay
20a492d9d9 Merge pull request #270 from gethinode/template
Rename child to template
2023-05-27 18:49:25 +02:00
Mark Dumay
179132964f Merge branch 'main' into template 2023-05-27 18:42:52 +02:00
mark
4768d6791f Rename child to template 2023-05-27 18:27:43 +02:00
Mark Dumay
c8e2d3410c Merge pull request #269 from gethinode/develop
Fixes
2023-05-27 10:38:56 +02:00
Mark Dumay
8d53c762d7 Merge branch 'main' into develop 2023-05-27 10:27:16 +02:00
mark
22d2e41601 Bump package release 2023-05-27 10:26:44 +02:00
mark
b462c31916 Remove redundant empty lines on copy 2023-05-27 09:45:28 +02:00
mark
dbb5b4be69 Add a toast message on copy 2023-05-27 09:21:35 +02:00
mark
4f288ec5dd Add subject to copy message 2023-05-27 09:21:11 +02:00
mark
8fb47e27af Remove debug statement 2023-05-27 09:07:37 +02:00
mark
a0d2063738 Set message placement to default value 2023-05-27 09:06:07 +02:00
mark
c17986bb49 Enable toast placement configuration 2023-05-27 09:03:44 +02:00
mark
bafd522530 Embed container in base to aid CSS purge 2023-05-27 09:03:14 +02:00
mark
930e151365 Embed container in base to aid CSS purge 2023-05-27 09:02:47 +02:00
79 changed files with 2793 additions and 2839 deletions

27
.github/release.yml vendored Normal file
View File

@@ -0,0 +1,27 @@
changelog:
exclude:
labels:
- skip-changelog
categories:
- title: ❗ Breaking Changes
labels:
- Semver-Major
- breaking-change
- title: 🚀 Highlights
labels:
- release-highlight
- title: 🎉 New Features
labels:
- Semver-Minor
- enhancement
- title: 🐛 Bug fixes
labels:
- fix
- bugfix
- bug
- title: 📦 Dependencies
labels:
- dependencies
- title: 🧰 Other Changes
labels:
- "*"

37
.github/workflows/update.yml vendored Normal file
View File

@@ -0,0 +1,37 @@
name: Update Hugo Dependencies
on:
workflow_dispatch:
schedule:
- cron: '0 3 * * *' # run daily at 03:00 AM
permissions:
pull-requests: write
jobs:
update-dep:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: "lts/*"
- name: Install dependencies
run: npm ci
- name: Update Hugo module dependencies
run: npm run mod:update
- name: Create Pull Request
uses: peter-evans/create-pull-request@v5
with:
token: ${{ secrets.HUGO_MOD_PR }}
commit-message: 'fix: update Hugo module dependencies'
branch: hugo-mod-dependencies
delete-branch: true
title: 'Update Hugo module dependencies'
body: >
This PR is auto-generated by
[create-pull-request](https://github.com/peter-evans/create-pull-request).
labels: dependencies

1
.gitignore vendored
View File

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

View File

@@ -9,25 +9,31 @@
<!-- Badges -->
<p align="center">
<a href="https://gohugo.io" alt="Hugo website">
<img src="https://img.shields.io/badge/generator-hugo-brightgreen" />
<img src="https://img.shields.io/badge/generator-hugo-brightgreen">
</a>
<a href="https://gethinode.com" alt="Hinode theme">
<img src="https://img.shields.io/badge/theme-hinode-blue">
</a>
<a href="https://www.npmjs.com/package/%40gethinode/hinode" alt="npm package">
<img src="https://img.shields.io/npm/v/%40gethinode/hinode">
</a>
<a href="https://app.netlify.com/sites/gethinode-demo/deploys" alt="Netlify Status">
<img src="https://img.shields.io/netlify/0ad42e3e-fdfa-4d37-8e26-58badd429a67" />
<img src="https://img.shields.io/netlify/0ad42e3e-fdfa-4d37-8e26-58badd429a67">
</a>
<a href="https://stats.uptimerobot.com/xyGVYhLJmV" alt="UptimeRobot Status">
<img src="https://img.shields.io/uptimerobot/status/m791334689-73d9dfc82030f4f955b2d6bb" />
<img src="https://img.shields.io/uptimerobot/status/m791334689-73d9dfc82030f4f955b2d6bb">
</a>
<a href="https://github.com/gethinode/hinode/commits/main" alt="Last commit">
<img src="https://img.shields.io/github/last-commit/gethinode/hinode.svg" />
<img src="https://img.shields.io/github/last-commit/gethinode/hinode.svg">
</a>
<a href="https://github.com/gethinode/hinode/issues" alt="Issues">
<img src="https://img.shields.io/github/issues/gethinode/hinode.svg" />
<img src="https://img.shields.io/github/issues/gethinode/hinode.svg">
</a>
<a href="https://github.com/gethinode/hinode/pulls" alt="Pulls">
<img src="https://img.shields.io/github/issues-pr-raw/gethinode/hinode.svg" />
<img src="https://img.shields.io/github/issues-pr-raw/gethinode/hinode.svg">
</a>
<a href="https://github.com/gethinode/hinode/blob/main/LICENSE" alt="License">
<img src="https://img.shields.io/github/license/gethinode/hinode" />
<img src="https://img.shields.io/github/license/gethinode/hinode">
</a>
</p>
@@ -75,10 +81,10 @@ Start a new Hinode project in three steps:
1. Create a new site
Hinode is available as a [child theme][repository_child], and a [main theme][repository]. The child theme uses [npm][npm] to link to the latest available version of Hinode. Unless you plan to customize a lot, it is recommended to use the child theme:
Hinode is available as a [template][repository_template], and a [main repository][repository]. The template [npm][npm] to link to the latest available version of Hinode. Unless you plan to customize a lot, it is recommended to use the template:
```bash
git clone https://github.com/gethinode/child.git my-hinode-site && cd my-hinode-site
git clone https://github.com/gethinode/template.git my-hinode-site && cd my-hinode-site
```
Use the main theme if you intend to customize the base code:
@@ -120,7 +126,7 @@ Hinode is inspired by the following themes:
## License
The `hinode` and `child` codebase is released under the [MIT license][license]. The documentation (including the "README" and `docs` codebase) is licensed under the Creative Commons ([CC BY-NC 4.0)][cc-by-nc-4.0] license.
The `hinode` and `template` codebase is released under the [MIT license][license]. The documentation (including the "README" and `docs` codebase) is licensed under the Creative Commons [(CC BY-NC 4.0)][cc-by-nc-4.0] license.
<!-- MARKDOWN PUBLIC LINKS -->
[blist]: https://github.com/apvarun/blist-hugo-theme
@@ -143,5 +149,5 @@ The `hinode` and `child` codebase is released under the [MIT license][license].
[demo]: https://demo.gethinode.com/
[license]: https://github.com/gethinode/hinode/blob/main/LICENSE
[repository]: https://github.com/gethinode/hinode.git
[repository_child]: https://github.com/gethinode/child.git
[repository_template]: https://github.com/gethinode/template.git
[website]: https://gethinode.com/

BIN
assets/img/puzzle.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

14
assets/js/alert.js Normal file
View File

@@ -0,0 +1,14 @@
const alert = document.getElementById('page-alert')
const closeBtn = document.getElementById('page-alert-btn-close')
if (alert !== null && closeBtn !== null) {
const version = alert.getAttribute('data-page-alert-version') || 'unknown'
const hideAlert = sessionStorage.getItem(`page-alert-${version}`) !== null
if (hideAlert) {
alert.classList.add('d-none')
}
closeBtn.addEventListener('click', () => {
sessionStorage.setItem(`page-alert-${version}`, 'seen')
alert.classList.add('d-none')
})
}

View File

@@ -14,10 +14,12 @@ const addCopyButtons = (clipboard) => {
// 2. Create a button that will trigger a copy operation
const button = document.createElement('button')
button.className = 'clipboard-button'
button.setAttribute('data-toast-target', 'toast-copied-code-message')
button.type = 'button'
button.innerHTML = svgCopy
button.addEventListener('click', () => {
clipboard.writeText(codeBlock.innerText).then(
const text = codeBlock.innerText.split('\n').filter(Boolean).join('\n')
clipboard.writeText(text).then(
() => {
button.blur()
button.innerHTML = svgCheck

View File

@@ -1,164 +0,0 @@
{{- $search := default true site.Params.navigation.search -}}
{{- if $search -}}
var search = document.getElementById('search');
var suggestions = document.getElementById('suggestions');
var index = new FlexSearch.Document({
tokenize: "forward",
cache: 100,
document: {
id: "id",
tag: "tag",
store: ["href", "title", "description"],
index: ["title", "description", "content"]
}
});
/*
Source:
- https://github.com/nextapps-de/flexsearch#index-documents-field-search
- https://raw.githack.com/nextapps-de/flexsearch/master/demo/autocomplete.html
*/
function initIndex() {
// https://discourse.gohugo.io/t/range-length-or-last-element/3803/2
// Note: uses .Site.AllPages as .Site.RegularPages only returns content for the current language;
// pages without a title (such as browserconfig.xml) are excluded
{{ $list := where (where site.AllPages "Kind" "in" "page") "Title" "!=" "" }}
{{ $len := (len $list) -}}
index.add(
{{ range $index, $element := $list -}}
{
id: {{ $index }},
tag: "{{ .Lang }}",
href: "{{ .RelPermalink }}",
title: {{ .Title | jsonify }},
{{ with .Description -}}
description: {{ . | jsonify }},
{{ else -}}
description: {{ .Summary | plainify | jsonify }},
{{ end -}}
content: {{ .Plain | jsonify }}
})
{{ if ne (add $index 1) $len -}}
.add(
{{ end -}}
{{ end -}}
;
search.addEventListener('input', showResults, true);
}
function hideSuggestions(e) {
var isClickInsideElement = suggestions.contains(e.target);
if (!isClickInsideElement) {
suggestions.classList.add('d-none');
}
}
/*
Source:
- https://raw.githubusercontent.com/h-enk/doks/master/assets/js/index.js
*/
function inputFocus(e) {
if (e.ctrlKey && e.key === '/' ) {
e.preventDefault();
search.focus();
}
if (e.key === 'Escape' ) {
search.blur();
suggestions.classList.add('d-none');
}
}
/*
Source:
- https://dev.to/shubhamprakash/trap-focus-using-javascript-6a3
*/
function suggestionFocus(e) {
const suggestionsHidden = suggestions.classList.contains('d-none');
if (suggestionsHidden) return;
const focusableSuggestions= [...suggestions.querySelectorAll('a')];
if (focusableSuggestions.length === 0) return;
const index = focusableSuggestions.indexOf(document.activeElement);
if (e.key === "ArrowUp") {
e.preventDefault();
const nextIndex = index > 0 ? index - 1 : 0;
focusableSuggestions[nextIndex].focus();
}
else if (e.key === "ArrowDown") {
e.preventDefault();
const nextIndex= index + 1 < focusableSuggestions.length ? index + 1 : index;
focusableSuggestions[nextIndex].focus();
}
}
/*
Source:
- https://github.com/nextapps-de/flexsearch#index-documents-field-search
- https://raw.githack.com/nextapps-de/flexsearch/master/demo/autocomplete.html
*/
function showResults() {
const maxResult = 5;
var searchQuery = this.value;
// filter the results for the currently tagged language
const lang = document.documentElement.lang;
var results = index.search(searchQuery, { index: ['title', 'description', 'content'], limit: maxResult, tag: lang, enrich: true });
// flatten results since index.search() returns results for each indexed field
const flatResults = new Map(); // keyed by href to dedupe results
for (const result of results.flatMap(r => r.result)) {
if (flatResults.has(result.doc.href)) continue;
flatResults.set(result.doc.href, result.doc);
}
suggestions.innerHTML = "";
suggestions.classList.remove('d-none');
// inform user that no results were found
if (flatResults.size === 0 && searchQuery) {
const msg = suggestions.dataset.noResults;
const noResultsMessage = document.createElement('div')
noResultsMessage.innerHTML = `${msg} "<strong>${searchQuery}</strong>"`
noResultsMessage.classList.add("suggestion__no-results");
suggestions.appendChild(noResultsMessage);
return;
}
// construct a list of suggestions
for (const [href, doc] of flatResults) {
const entry = document.createElement('div');
suggestions.appendChild(entry);
const a = document.createElement('a');
a.href = href;
entry.appendChild(a);
const title = document.createElement('span');
title.classList.add('text-start');
title.textContent = doc.title;
title.classList.add("suggestion__title");
a.appendChild(title);
const description = document.createElement('span');
description.textContent = doc.description;
description.classList.add("suggestion__description");
a.appendChild(description);
suggestions.appendChild(entry);
if (suggestions.childElementCount == maxResult) break;
}
}
if (search !== null && suggestions !== null) {
document.addEventListener('keydown', inputFocus);
document.addEventListener('keydown', suggestionFocus);
document.addEventListener('click', hideSuggestions);
initIndex();
}
{{- end -}}

View File

View File

@@ -1,37 +1,24 @@
// Script to move all embedded toast messages into a container. The container ensures multiple toast messages are
// stacked properly. The script targets all elements specified by a 'data-toast-target' and ensures the click event
// of the origin is linked as well.
// Script to move all embedded toast messages into a container with id 'toast-container'. The container ensures multiple
// toast messages are stacked properly. The script targets all elements specified by a 'data-toast-target' and ensures
// the click event of the origin is linked as well.
// create a HTML fragment
function createFragment (htmlStr) {
const fragment = document.createDocumentFragment()
const temp = document.createElement('div')
temp.innerHTML = htmlStr
while (temp.firstChild) {
fragment.appendChild(temp.firstChild)
}
return fragment
}
const container = document.getElementById('toast-container')
if (container !== null) {
// process all data-toast-target elements
document.querySelectorAll('[data-toast-target]').forEach(trigger => {
const target = document.getElementById(trigger.getAttribute('data-toast-target'))
if (target !== null) {
// move the element to the toast containr
container.appendChild(target)
// insert a toast container in the DOM
const container = '<div id="toast-container" class="toast-container position-fixed bottom-0 end-0 p-3"></div>'
document.body.appendChild(createFragment(container))
const parent = document.getElementById('toast-container')
// process all data-toast-target elements
document.querySelectorAll('[data-toast-target]').forEach(trigger => {
const target = document.getElementById(trigger.getAttribute('data-toast-target'))
if (target !== null) {
// move the element to the toast containr
parent.appendChild(target)
// eslint-disable-next-line no-undef
const toast = bootstrap.Toast.getOrCreateInstance(target)
if (toast !== null) {
// associate the click event of the origin with the toast element
trigger.addEventListener('click', () => {
toast.show()
})
// eslint-disable-next-line no-undef
const toast = bootstrap.Toast.getOrCreateInstance(target)
if (toast !== null) {
// associate the click event of the origin with the toast element
trigger.addEventListener('click', () => {
toast.show()
})
}
}
}
})
})
}

View File

@@ -5,64 +5,17 @@
@import "common/variables.scss";
@import "common/icons.scss";
// Import Bootstrap banner and functions
@import "bootstrap/scss/mixins/banner";
@include bsBanner("");
@import "bootstrap/scss/functions";
{{ if not (in site.Params.modules.core "bootstrap") }}
{{ errorf "Bootstrap is a required module, please add it to 'modules.core' in your site parameters" }}
{{ end }}
// Import Bootstrap configuration
@import "bootstrap/scss/variables";
@import "bootstrap/scss/variables-dark.scss";
@import "bootstrap/scss/maps";
@import "bootstrap/scss/mixins";
@import "bootstrap/scss/utilities";
// Import Bootstrap layout & components
@import "bootstrap/scss/root";
@import "bootstrap/scss/reboot";
@import "bootstrap/scss/type";
@import "bootstrap/scss/images";
@import "bootstrap/scss/containers";
@import "bootstrap/scss/grid";
@import "bootstrap/scss/tables";
@import "bootstrap/scss/forms";
@import "bootstrap/scss/buttons";
@import "bootstrap/scss/transitions";
@import "bootstrap/scss/dropdown";
@import "bootstrap/scss/button-group";
@import "bootstrap/scss/nav";
@import "bootstrap/scss/navbar";
@import "bootstrap/scss/card";
@import "bootstrap/scss/accordion";
@import "bootstrap/scss/breadcrumb";
@import "bootstrap/scss/pagination";
@import "bootstrap/scss/badge";
@import "bootstrap/scss/alert";
@import "bootstrap/scss/progress";
@import "bootstrap/scss/list-group";
@import "bootstrap/scss/close";
@import "bootstrap/scss/toasts";
@import "bootstrap/scss/modal";
@import "bootstrap/scss/tooltip";
@import "bootstrap/scss/popover";
@import "bootstrap/scss/carousel";
@import "bootstrap/scss/spinners";
@import "bootstrap/scss/offcanvas";
@import "bootstrap/scss/placeholders";
// Import Bootstrap helpers
@import "bootstrap/scss/helpers";
// Import Font Awesome
// scss-docs-start awesome
@import "@fortawesome/fontawesome-free/scss/fontawesome";
@import "@fortawesome/fontawesome-free/scss/regular";
@import "@fortawesome/fontawesome-free/scss/solid";
@import "@fortawesome/fontawesome-free/scss/brands";
// scss-docs-end awesome
// Import Bootstrap configuration (mounted by core Bootstrap module)
@import "bootstrap.scss";
// Import Hinode theme styles
@import "components/alert.scss";
@import "components/blockquote.scss";
@import "components/breadcrumb.scss";
@import "components/buttons.scss";
@import "components/card.scss";
@import "components/carousel.scss";
@@ -71,11 +24,12 @@
@import "components/comments.scss";
@import "components/navbar.scss";
@import "components/img.scss";
@import "components/pagination.scss";
@import "components/persona.scss";
@import "components/popover.scss";
@import "components/search.scss";
@import "components/sidebar.scss";
@import "components/syntax.scss";
@import "components/timeline.scss";
@import "components/toc.scss";
@import "components/vimeo.scss";
@import "common/animation.scss";
@@ -98,5 +52,5 @@
// Import theme placeholder
@import "theme/theme.scss";
// Import Bootstrap utilities API
@import "bootstrap/scss/utilities/api";
// Import Bootstrap utilities API (mounted by core Bootstrap module)
@import "modules/bootstrap/utilities/api";

View File

@@ -23,3 +23,19 @@ $btn-toggle: url("/icons/btn-toggle.svg") !de
$btn-toggle-dark: url("/icons/btn-toggle-dark.svg") !default;
// scss-docs-end icons
.fa-wrapper {
container: wrapper / inline-size;
}
// define fallback size for browsers not supporting containers
.fa-fluid {
font-size: 5rem;
}
// set size based on container width
@container (min-width: 0) {
.fa-wrapper .fa-fluid {
font-size: 60cqi;
}
}

View File

@@ -0,0 +1,3 @@
.alert-no-decoration {
--bs-alert-border-radius: none;
}

View File

@@ -0,0 +1,6 @@
// scss-docs-start breadcrumb
.breadcrumb {
padding-top: 0.3 * $navbar-offset;
}
// scss-docs-end breadcrumb

View File

@@ -0,0 +1,11 @@
.pagination {
--bs-pagination-bg: var(--bs-primary-bg-subtle);
--bs-pagination-border-color: none;
--bs-pagination-hover-color: var(--bs-pagination-active-color);
--bs-pagination-hover-bg: var(--bs-pagination-active-bg);
--bs-pagination-hover-border-color: none;
}
.pagination .page-item {
margin: 0.4rem;
}

View File

@@ -1,117 +0,0 @@
// Adapted from https://github.com/h-enk/doks
@include media-breakpoint-up(md) {
.search {
max-width: 20rem;
margin-top: 0.125rem;
margin-bottom: 0.125rem;
}
}
.form-control.is-search {
padding-right: 4rem;
border: 1px solid transparent;
background: var(--bs-tertiary-bg);
}
.form-control.is-search:focus {
border: 1px solid $primary;
}
.search::after {
position: absolute;
top: 0.4625rem;
right: 0.5375rem;
display: flex;
align-items: center;
justify-content: center;
height: 1.5rem;
padding-right: 0.3125rem;
padding-left: 0.3125rem;
font-size: $font-size-base * 0.75;
color: var(--bs-secondary-color);
content: "Ctrl + /";
border: 1px solid var(--bs-border-color);
border-radius: 0.25rem;
}
.navbar-form {
position: relative;
}
#suggestions {
position: absolute;
left: 0;
margin-top: 0.5rem;
width: calc(100vw - 3rem);
z-index: $zindex-dropdown;
}
#suggestions a,
.suggestion__no-results {
padding: 0.75rem;
margin: 0 0.5rem;
}
#suggestions a {
display: block;
text-decoration: none;
}
#suggestions a:focus {
background-color: var(--bs-tertiary-bg);
outline: 0;
}
#suggestions div:not(:first-child) {
border-top: 1px dashed var(--bs-border-color);
}
#suggestions div:first-child {
margin-top: 0.5rem;
}
#suggestions div:last-child {
margin-bottom: 0.5rem;
}
#suggestions a:hover {
background-color: var(--bs-tertiary-bg);
}
#suggestions span {
display: flex;
font-size: $font-size-base;
}
.suggestion__title {
font-weight: $headings-font-weight;
}
.suggestion__description,
.suggestion__no-results {
color: var(--bs-secondary-color);
}
@include media-breakpoint-up(sm) {
#suggestions {
width: 31.125rem;
}
#suggestions a {
display: flex;
}
.suggestion__title {
width: 9rem;
padding-right: 1rem;
border-right: 1px solid var(--bs-border-color);
display: inline-block;
text-align: right;
}
.suggestion__description {
width: 19rem;
padding-left: 1rem;
}
}

View File

@@ -6,9 +6,9 @@
/* LineLink */ .chroma .lnlinks { outline: none; text-decoration: none; color: inherit }
/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }
/* LineHighlight */ .chroma .hl { background-color: #ffffcc }
/* LineNumbersTable */ .chroma .lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #64686c }
/* LineNumbers */ .chroma .ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #6e7681 }
/* LineHighlight */ .chroma .hl { background-color: #b8b800 }
/* LineNumbersTable */ .chroma .lnt { white-space: pre; -webkit-user-select: none; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #64686c }
/* LineNumbers */ .chroma .ln { white-space: pre; -webkit-user-select: none; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #6e7681 }
/* Line */ .chroma .line { display: flex; }
/* Keyword */ .chroma .k { color: #ff7b72 }
/* KeywordConstant */ .chroma .kc { color: #79c0ff }

View File

@@ -7,8 +7,8 @@
/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }
/* LineHighlight */ .chroma .hl { background-color: #ffffcc }
/* LineNumbersTable */ .chroma .lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
/* LineNumbers */ .chroma .ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
/* LineNumbersTable */ .chroma .lnt { white-space: pre; -webkit-user-select: none; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
/* LineNumbers */ .chroma .ln { white-space: pre; -webkit-user-select: none; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
/* Line */ .chroma .line { display: flex; }
/* Keyword */ .chroma .k { color: #000000; font-weight: bold }
/* KeywordConstant */ .chroma .kc { color: #000000; font-weight: bold }

View File

@@ -1,5 +1,5 @@
// stylelint-disable annotation-no-unknown
@import "syntax-light";
@import "components/syntax-light";
.bg,
.chroma,
@@ -13,12 +13,12 @@
}
.preview-background {
background-color: var(--bs-secondary-bg) if($enable-important-utilities, !important, null);
background-color: var(--bs-dark-bg-subtle) if($enable-important-utilities, !important, null);
}
@if $enable-dark-mode {
[data-bs-theme="dark"] {
@import "syntax-dark"; // stylelint-disable-line no-invalid-position-at-import-rule
@import "components/syntax-dark"; // stylelint-disable-line no-invalid-position-at-import-rule
.bg,
.chroma,

View File

@@ -0,0 +1,165 @@
// scss-docs-start timeline
$connector-radius: 0.8rem;
$semi-circle-radius: 8rem;
$semi-circle-border: 0.2rem;
:root {
--timeline-highlight: var(--bs-primary);
--timeline-icon-radius: #{$semi-circle-radius};
--timeline-offset: 50%;
--timeline-connector-bg: var(--bs-body-bg);
}
@each $state in map-keys($theme-colors) {
.timeline-#{$state} {
--timeline-highlight: var(--#{$prefix}#{$state});
}
.timeline-bg-#{$state} {
--timeline-connector-bg: var(--#{$prefix}#{$state}-bg-subtle);
}
}
// scss-docs-end timeline
.timeline, .timeline-sm {
position: relative;
}
.timeline-sm {
--timeline-icon-radius: calc(#{$semi-circle-radius} / 2);
--timeline-offset: 25%
}
.timeline::before, .timeline-sm::before {
content: "";
width: 2 * $semi-circle-border;
margin: 0 auto;
background: var(--bs-body-color);
position: absolute;
inset: 0;
}
.timeline-sm::before {
margin: 0 calc(var(--timeline-offset) - #{$semi-circle-border});
}
.timeline-semi-circle-start, .timeline-semi-circle-end {
width: var(--timeline-icon-radius);
height: var(--timeline-icon-radius);
border-radius: 100%;
position: relative;
}
.timeline-semi-circle-start {
left: -$semi-circle-border;
}
.timeline-semi-circle-end {
left: $semi-circle-border;
}
.timeline-semi-circle-start::before {
content: "";
width: var(--timeline-icon-radius);
height: var(--timeline-icon-radius);
border-radius: 100%;
border: $semi-circle-border solid;
position: absolute;
border-color: transparent var(--timeline-highlight) var(--timeline-highlight) var(--timeline-highlight);
transform: rotate(-90deg);
}
.timeline-semi-circle-start::after {
content: "";
left: 0;
top: 0;
width: var(--timeline-icon-radius);
height: var(--timeline-icon-radius);
border-radius: 100%;
border: $semi-circle-border solid;
position: absolute;
border-color: var(--timeline-highlight) var(--timeline-highlight) var(--timeline-highlight) transparent;
transform: rotate(-45deg);
}
.timeline-semi-circle-end::before {
content: "";
width: var(--timeline-icon-radius);
height: var(--timeline-icon-radius);
border-radius: 100%;
border: $semi-circle-border solid;
position: absolute;
border-color: transparent var(--timeline-highlight) var(--timeline-highlight) var(--timeline-highlight);
transform: rotate(-225deg);
}
.timeline-semi-circle-end::after {
content: "";
left: 0;
top: 0;
width: var(--timeline-icon-radius);
height: var(--timeline-icon-radius);
border-radius: 100%;
border: $semi-circle-border solid;
position: absolute;
border-color: var(--timeline-highlight) var(--timeline-highlight) var(--timeline-highlight) transparent;
transform: rotate(-180deg);
}
.timeline-description-text-start {
border-bottom: $semi-circle-border solid var(--timeline-highlight);
margin-right: 2 * $connector-radius;
}
.timeline-description-text-end {
border-bottom: $semi-circle-border solid var(--timeline-highlight);
margin-left: 2 * $connector-radius;
}
.timeline-panel-start, .timeline-panel-end, .timeline-connector-start, .timeline-connector-end {
top: calc(var(--timeline-icon-radius) / 2);
position: relative;
width: calc(var(--timeline-icon-radius) / 2);
height: calc($semi-circle-border + var(--timeline-icon-radius) / 2);
border: $semi-circle-border solid var(--timeline-highlight);
border-bottom: none;
border-right: none;
border-left: none;
}
.timeline-panel-start {
top: 50%;
right: 50%;
position: absolute;
width: calc(var(--timeline-icon-radius) * 2);
width: 2 * $connector-radius;
height: 50%;
border-top: $semi-circle-border solid var(--timeline-highlight);
border-left: $semi-circle-border solid var(--timeline-highlight);
}
.timeline-panel-end {
top: 50%;
position: absolute;
width: calc(var(--timeline-icon-radius) * 2);
width: 2 * $connector-radius;
height: 50%;
border-top: $semi-circle-border solid var(--timeline-highlight);
border-right: $semi-circle-border solid var(--timeline-highlight);
}
.timeline-dot::after {
display: inline-block;
content: "";
position: absolute;
top: 50%;
left: var(--timeline-offset);
margin: (-$connector-radius) 0 0 (-$connector-radius);
width: 2 * $connector-radius;
height: 2 * $connector-radius;
border-radius: 100%;
border: ($semi-circle-border * 1.5) solid var(--timeline-connector-bg);
color: var(--timeline-highlight);
background: var(--timeline-highlight);
}

View File

@@ -27,6 +27,20 @@ defaultContentLanguage = "en"
defaultContentLanguageInSubdir = true
# toml-docs-end language
# toml-docs-start redirect
[outputFormats.REDIR]
mediaType = "text/netlify"
baseName = "_redirects"
isPlainText = true
notAlternative = true
[mediaTypes."text/netlify"]
delimiter = ""
[outputs]
home = ["HTML", "RSS", "REDIR"]
# toml-docs-end redirect
# toml-docs-start build
[build]
writeStats = true
@@ -71,21 +85,35 @@ defaultContentLanguageInSubdir = true
[module]
[module.hugoVersion]
extended = true
min = "0.81.0"
min = "0.110.0"
max = ""
[[module.mounts]]
source = "archetypes"
target = "archetypes"
[[module.mounts]]
source = "assets"
target = "assets"
[[module.mounts]]
source = "i18n"
target = "i18n"
[[module.mounts]]
source = "layouts"
target = "layouts"
[[module.mounts]]
source = "static"
target = "static"
# toml-docs-start javascript
[[module.mounts]]
source = "node_modules/bootstrap/dist/js"
target = "assets/js/vendor/bootstrap"
includeFiles = "*.bundle.js"
[[module.mounts]]
source = "node_modules/flexsearch/dist"
target = "assets/js/vendor/flexsearch"
includeFiles = "*.bundle.js"
# toml-docs-end javascript
source = "netlify.toml"
target = "assets/config/netlify.toml"
# toml-docs-start modules
[[module.imports]]
path = "github.com/gethinode/mod-bootstrap"
[[module.imports]]
path = "github.com/gethinode/mod-flexsearch"
[[module.imports]]
path = "github.com/gethinode/mod-fontawesome"
[[module.imports]]
path = "github.com/gethinode/mod-katex"
[[module.imports]]
path = "github.com/gethinode/mod-leaflet"
# toml-docs-end modules

View File

@@ -6,12 +6,25 @@
modes = ["light", "dark"]
# toml-docs-end main
# toml-docs-start modules
[modules]
core = ["bootstrap", "flexsearch", "fontawesome"]
optional = ["leaflet", "katex"]
excludeSCSS = ["bootstrap"]
disableTemplate = ["katex"]
# toml-docs-end modules
# toml-docs-start debugging
[debugging]
showJS = false
showSCSS = false
# toml-docs-end debugging
# toml-docs-start docs
[docs]
version = "0.8"
basePath = ""
github = "https://github.com/gethinode/hinode"
release = "https://github.com/gethinode/hinode/releases/tag/"
checkVersion = false
# toml-docs-end docs
# toml-docs-start home
@@ -31,11 +44,16 @@
fixed = true
offset = "3.8em"
search = true
breadcrumb = false
breadcrumb = true
toc = true
sidebar = true
# toml-docs-end navigation
# toml-docs-start messages
[messages]
placement = "bottom-right"
# toml-docs-end messages
# toml-docs-start sharing
[sharing]
enabled = true
@@ -92,6 +110,7 @@
separator = true
[sections.projects]
title = "Projects"
layout = "card"
sort = "title"
reverse = false
nested = true
@@ -101,7 +120,7 @@
padding = "3"
header = "none"
footer = "tags"
orientation = "none"
orientation = "horizontal"
style = "border-1 card-emphasize"
homepage = 3
separator = false

View File

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

View File

@@ -21,12 +21,14 @@ const purgecss = require('@fullhuman/postcss-purgecss')({
'./assets/scss/components/_syntax-light.scss',
'./assets/scss/theme/fonts.scss',
'./assets/scss/theme/theme.scss',
'./node_modules/bootstrap/scss/_carousel.scss',
'./node_modules/bootstrap/scss/_dropdown.scss',
'./node_modules/bootstrap/scss/_reboot.scss',
'./node_modules/bootstrap/scss/_tooltip.scss',
'./node_modules/bootstrap/scss/_transitions.scss',
'./node_modules/bootstrap/scss/_utilities.scss'
'./_vendor/github.com/gethinode/mod-flexsearch/assets/scss/modules/flexsearch/flexsearch.scss',
'./_vendor/github.com/gethinode/mod-leaflet/dist/leaflet.scss',
'./_vendor/github.com/twbs/bootstrap/scss/_carousel.scss',
'./_vendor/github.com/twbs/bootstrap/scss/_dropdown.scss',
'./_vendor/github.com/twbs/bootstrap/scss/_reboot.scss',
'./_vendor/github.com/twbs/bootstrap/scss/_tooltip.scss',
'./_vendor/github.com/twbs/bootstrap/scss/_transitions.scss',
'./_vendor/github.com/twbs/bootstrap/scss/_utilities.scss'
])
]
})

View File

@@ -1 +0,0 @@
canonifyURLs = false

View File

@@ -2,7 +2,7 @@
title: About
description: Hinode is a clean documentation and blog theme for your Hugo site based on Bootstrap 5.
date: 2022-04-11
updated: 2023-02-11
updated: 2023-06-26
showComments: false
---
@@ -35,8 +35,8 @@ Additional features include:
* Switching between light mode and dark mode
* Support for multiple languages
* Reusable Bootstrap components through configurable shortcodes and partials
* Versioned documentation, including sidebar navigation and version switcher
* Embedded comments through light-weight integration with GitHub via [utteranc.es]({{< param "links.utterances" >}})
* Integrated sidebar navigation for content-heavy sections, such as documentation pages
* Reponsive image handling for multiple screen sizes and resolutions
* Optimized search results, scoring 100 points for SEO on [PageSpeed Insights]({{< param "links.pagespeed" >}})
* Secure by default, scoring A+ on [Mozilla Observatory test]({{< param "links.observatory" >}})

View File

@@ -127,7 +127,7 @@ As an example, the following shortcode displays a button that, when clicked, tri
Trigger panel
{{</* /button */>}}
{{</* collapse id="collapse-1" class="p-3 border rounded" */>}}
{{</* collapse id="collapse-1" class="p-3 border rounded bg-primary-subtle" */>}}
Some placeholder content for the collapse component. This panel is <i>hidden by default</i> but
revealed when the user activates the relevant trigger.
{{</* /collapse */>}}
@@ -245,6 +245,16 @@ Loading...
{{< /example>}}
<!-- markdownlint-enable MD037 -->
## Timeline
As an example, the following shortcode displays a timeline with the file `data/timeline-en.yml` as data.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* timeline data="timeline-en" background="dark" */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Toast
As an example, the following shortcode displays a button that, when clicked, triggers the toast message.

View File

@@ -0,0 +1,36 @@
---
author: Mark Dumay
title: Components
date: 2023-07-21
description: Use shortcodes to add predefined components powered by external libraries.
tags: ["bootstrap", "shortcode"]
thumbnail: img/puzzle.jpg
photoCredits: <a href="https://unsplash.com/@ryoji__iwata">Ryoji Iwata</a>
photoSource: <a href="https://unsplash.com/photos/5siQcvSxCP8">Unsplash</a>
modules: ["katex", "leaflet"]
---
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.
## Formula (KaTeX)
As an example, the following markdown renders two formulas using the KaTeX typesetting library.
{{< example lang="markdown" >}}
This is an inline $-b \pm \sqrt{b^2 - 4ac} \over 2a$ formula
This is not an inline formula:
$$x = a_0 + \frac{1}{a_1 + \frac{1}{a_2 + \frac{1}{a_3 + a_4}}}$$
$$\forall x \in X, \quad \exists y \leq \epsilon$$
{{< /example >}}
## Map
As an example, the following shortcode displays an interactive map of the city of Amsterdam.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* map lat=52.377 long=4.90 zoom=13 popup="Amsterdam Central Station" popup-lat=52.378062 popup-long=4.900562 */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->

View File

@@ -4,9 +4,7 @@ title: Another project
date: 2021-07-15
description: Another project.
tags: ["javascript", "golang"]
thumbnail: img/coffee.jpg # https://picsum.photos/id/1060/5598/3732
photoCredits: <a href="https://unsplash.com/@kfred">Karl Fredrickson</a>
photoSource: <a href="https://unsplash.com/photos/TYIzeCiZ_60">Unsplash</a>
icon: fas rocket
---
Vivamus iaculis metus sed magna porta tincidunt. Aliquam molestie eget orci eu elementum. Integer pellentesque dolor sit amet suscipit maximus. Duis consequat, massa vitae volutpat rhoncus, erat augue venenatis velit, a auctor leo nulla nec turpis. Nunc ut libero sapien. Vivamus aliquam ultrices vestibulum. Sed sit amet vestibulum dolor, ut vehicula diam. Sed felis purus, feugiat vitae vulputate quis, sodales vitae dui. Pellentesque volutpat fringilla sapien varius condimentum. Integer odio massa, pharetra at bibendum vitae, aliquam nec erat.

View File

@@ -4,9 +4,7 @@ title: Sample project
date: 2021-07-15
description: A sample project.
tags: ["html", "css"]
thumbnail: img/laptop.jpg # https://picsum.photos/id/0/5616/3744
photoCredits: <a href="https://unsplash.com/@alejandroescamilla">Alejandro Escamilla</a>
photoSource: <a href="https://unsplash.com/photos/yC-Yzbqy7PY">Unsplash</a>
icon: fab docker
---
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

View File

@@ -3,6 +3,7 @@ slug: over-mij
title: Over mij
description: Een blog en documentatie thema voor Hugo gebaseerd op Bootstrap 5.
date: 2023-02-17
updated: 2023-06-26
showComments: false
---
@@ -36,8 +37,8 @@ Overige functies:
* Omschakelen tussen donkere en lichte modus
* Ondersteuning voor meerdere talen
* Herbruikbare Bootstrap componenten via shortcodes en partials
* Versiebeheer van documentatiepagina's, inclusief secundaire navigatie en selectie van versies
* Integreren van commentaar via [utteranc.es]({{< param "links.utterances" >}})
* Secundaire navigatie voor bijvoorbeeld documentatie
* Optimalisering van foto's voor meerdere schermafmetingen en resoluties
* Optimale zoekresultaten, met 100 punten voor SEO volgens [PageSpeed Insights]({{< param "links.pagespeed" >}})
* Veilige communicatie, met een score van A+ volgens [Mozilla Observatory]({{< param "links.observatory" >}})

View File

@@ -246,6 +246,16 @@ Loading...
{{< /example>}}
<!-- markdownlint-enable MD037 -->
## Timeline
De volgende shortcode toont een tijdslijn met het bestand `data/timeline-nl.yml` als input.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* timeline data="timeline-nl" */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Toast
De volgende shortcode toont een knop die een bericht laat verschijnen op het scherm.

View File

@@ -0,0 +1,37 @@
---
author: Mark Dumay
title: Componenten
slug: componenten
date: 2023-07-21
description: Gebruik shortcodes om voorgedefiniëerde componenten toe te voegen die gebruikmaken van externe libraries.
tags: ["bootstrap", "shortcode"]
thumbnail: img/puzzle.jpg
photoCredits: <a href="https://unsplash.com/@ryoji__iwata">Ryoji Iwata</a>
photoSource: <a href="https://unsplash.com/photos/5siQcvSxCP8">Unsplash</a>
modules: ["katex", "leaflet"]
---
Hinode biedt meerdere shortcodes aan bovenop de gebruikelijke [Bootstrap elementen]({{< relref "bootstrap-elements" >}}). Zie de [officiële documentatie]({{< param "links.hinode_docs" >}}) voor meer details.
## Formule (KaTeX)
De volgende markdown code genereert twee wiskundige formules met behulp van KaTeX.
{{< example lang="markdown" >}}
Dit is een inline $-b \pm \sqrt{b^2 - 4ac} \over 2a$ formule
Dit is geen inline formule:
$$x = a_0 + \frac{1}{a_1 + \frac{1}{a_2 + \frac{1}{a_3 + a_4}}}$$
$$\forall x \in X, \quad \exists y \leq \epsilon$$
{{< /example >}}
## Map
De volgende shortcode toont een interactieve kaart van Amsterdam.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* map lat=52.377 long=4.90 zoom=13 popup="Amsterdam CS" popup-lat=52.378062 popup-long=4.900562 */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->

View File

@@ -6,9 +6,7 @@ url: "projecten/ander-project"
date: 2021-07-15
description: "Een ander project."
tags: ["javascript", "golang"]
thumbnail: img/coffee.jpg # https://picsum.photos/id/1060/5598/3732
photoCredits: <a href="https://unsplash.com/@kfred">Karl Fredrickson</a>
photoSource: <a href="https://unsplash.com/photos/TYIzeCiZ_60">Unsplash</a>
icon: fas rocket
---
Vivamus iaculis metus sed magna porta tincidunt. Aliquam molestie eget orci eu elementum. Integer pellentesque dolor sit amet suscipit maximus. Duis consequat, massa vitae volutpat rhoncus, erat augue venenatis velit, a auctor leo nulla nec turpis. Nunc ut libero sapien. Vivamus aliquam ultrices vestibulum. Sed sit amet vestibulum dolor, ut vehicula diam. Sed felis purus, feugiat vitae vulputate quis, sodales vitae dui. Pellentesque volutpat fringilla sapien varius condimentum. Integer odio massa, pharetra at bibendum vitae, aliquam nec erat.

View File

@@ -6,9 +6,7 @@ url: "projecten/voorbeeldproject"
date: 2021-07-15
description: "Een voorbeeldproject."
tags: ["html", "css"]
thumbnail: img/laptop.jpg # https://picsum.photos/id/0/5616/3744
photoCredits: <a href="https://unsplash.com/@alejandroescamilla">Alejandro Escamilla</a>
photoSource: <a href="https://unsplash.com/photos/yC-Yzbqy7PY">Unsplash</a>
icon: fab docker
---
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

35
data/timeline-en.yml Normal file
View File

@@ -0,0 +1,35 @@
# This file holds all menu entries for the docs sidebar
- title: Product launch
icon: fas rocket
color: primary
date: 2023-07-01
url: https://github.com/gethinode/hinode/releases/tag/v0.15.2
content:
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Cupiditate ducimus officiis quod! Aperiam eveniet nam nostrum odit quasi ullam voluptatum.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Cupiditate ducimus officiis quod! Aperiam eveniet nam nostrum odit quasi ullam voluptatum.
- title: I18N support
icon: fas globe
color: success
date: 2023-05-06
url: v0.14.0
content:
Lorem ipsum dolor sit amet.
- title: New feature
icon: fas house
color: warning
date: 2023-02-04
url: v0.8.1
content:
Cupiditate ducimus officiis quod!
- title: Beta release
icon: fas heart
color: info
date: 2022-11-30
# url: v0.1
content:
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Cupiditate ducimus officiis quod! Aperiam eveniet nam nostrum odit quasi ullam voluptatum.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Cupiditate ducimus officiis quod! Aperiam eveniet nam nostrum odit quasi ullam voluptatum.

35
data/timeline-nl.yml Normal file
View File

@@ -0,0 +1,35 @@
# This file holds all menu entries for the docs sidebar
- title: Productlancering
icon: fas rocket
color: primary
date: 2023-07-01
url: https://github.com/gethinode/hinode/releases/tag/v0.15.2
content:
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Cupiditate ducimus officiis quod! Aperiam eveniet nam nostrum odit quasi ullam voluptatum.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Cupiditate ducimus officiis quod! Aperiam eveniet nam nostrum odit quasi ullam voluptatum.
- title: Internationalisering
icon: fas globe
color: success
date: 2023-05-06
url: v0.14.0
content:
Lorem ipsum dolor sit amet.
- title: Nieuwe functie
icon: fas house
color: warning
date: 2023-02-04
url: v0.8.1
content:
Cupiditate ducimus officiis quod!
- title: Beta release
icon: fas heart
color: info
date: 2022-11-30
# url: v0.1
content:
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Cupiditate ducimus officiis quod! Aperiam eveniet nam nostrum odit quasi ullam voluptatum.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Cupiditate ducimus officiis quod! Aperiam eveniet nam nostrum odit quasi ullam voluptatum.

11
go.mod Normal file
View File

@@ -0,0 +1,11 @@
module github.com/gethinode/hinode
go 1.19
require (
github.com/gethinode/mod-bootstrap v1.1.0 // indirect
github.com/gethinode/mod-flexsearch v1.1.1 // indirect
github.com/gethinode/mod-fontawesome v1.2.0 // indirect
github.com/gethinode/mod-katex v1.0.2 // indirect
github.com/gethinode/mod-leaflet v0.3.1 // indirect
)

26
go.sum Normal file
View File

@@ -0,0 +1,26 @@
github.com/gethinode/mod-bootstrap v1.0.1 h1:NDZar+UEL42YHCvzzO+jVgqkZU5INA12BpjX3y6U4I4=
github.com/gethinode/mod-bootstrap v1.0.1/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
github.com/gethinode/mod-bootstrap v1.1.0 h1:BbalsW8kmFhv+J+dcc41TGcjIlM/p69AB0h0oGhAXIU=
github.com/gethinode/mod-bootstrap v1.1.0/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
github.com/gethinode/mod-flexsearch v1.0.1 h1:FJkRsUzSnQTXl3MWCigT4E6vfff870UWTnkGqaDGIhA=
github.com/gethinode/mod-flexsearch v1.0.1/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
github.com/gethinode/mod-flexsearch v1.1.0 h1:7BCMyQDlYlskNXuazt8Jg/jg9WREexu2xVkYqThkAX4=
github.com/gethinode/mod-flexsearch v1.1.0/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
github.com/gethinode/mod-flexsearch v1.1.1 h1:zHypfKR/rWPAwqNXvo09Pp3vGqU4w3r7d2VtMudIzkI=
github.com/gethinode/mod-flexsearch v1.1.1/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
github.com/gethinode/mod-fontawesome v1.0.2 h1:ZSK6D20/w4y5GnfYfTBB58uHD0ChIfkpKfRGwioS9rg=
github.com/gethinode/mod-fontawesome v1.0.2/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/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
github.com/gethinode/mod-fontawesome v1.2.0 h1:2nWYEjpUKu6IJ6kOh2WDlDUqRQ/dUGw6mJWIdMTA3O0=
github.com/gethinode/mod-fontawesome v1.2.0/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
github.com/gethinode/mod-katex v1.0.0 h1:me/3dIIZBkfk1mRIFt8QiAGYwYDoSG5bc2hHRtIutFc=
github.com/gethinode/mod-katex v1.0.0/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
github.com/gethinode/mod-katex v1.0.1 h1:809QUztxmKgMNchU+v03iMO7Ma+ISc3ZzhXYauc21rs=
github.com/gethinode/mod-katex v1.0.1/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
github.com/gethinode/mod-katex v1.0.2 h1:pIG4n3qLl/IVe7BEiwn+GL8r5lOCtF6FDxlcrPKdAXk=
github.com/gethinode/mod-katex v1.0.2/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
github.com/gethinode/mod-leaflet v0.2.3 h1:QQI4h+IH0jZ7fx4q0um2YIEiYBoW3OAfW8qHzbRCDPk=
github.com/gethinode/mod-leaflet v0.2.3/go.mod h1:uGggt87x4Fw7wBoJpSiUvNkYg+s/Ujne7klAX2rxMRk=
github.com/gethinode/mod-leaflet v0.3.1 h1:H5MaOa+BB1KuVw7abTqfIn/SNzzRsAyx/WQoSe+2Ykc=
github.com/gethinode/mod-leaflet v0.3.1/go.mod h1:uGggt87x4Fw7wBoJpSiUvNkYg+s/Ujne7klAX2rxMRk=

View File

@@ -53,14 +53,16 @@
translation: "Article"
- id: articles
translation: "Articles"
- id: paginationNav
translation: "Page navigation"
- id: paginationPrevious
translation: "Previous"
translation: "Previous page"
- id: paginationNext
translation: "Next"
translation: "Next page"
- id: paginationFirst
translation: "First"
translation: "First page"
- id: paginationLast
translation: "Last"
translation: "Last page"
- id: toggleSidebar
translation: "Toggle sidebar navigation"
- id: colorMode
@@ -82,7 +84,17 @@
- id: shareLink
translation: "Share via"
- id: copiedToClipboard
translation: "Copied to clipboard"
translation: "copied to clipboard"
- id: link
translation: "Link"
- id: code
translation: "Code"
- id: latest
translation: "latest"
- id: allVersions
translation: "All versions"
- id: newerVersionAlert
translation: "There is a newer version of {{ . }}!"
# 404 page
- id: pageNotFound

View File

@@ -45,6 +45,8 @@
translation: "Artikel"
- id: articles
translation: "Artikelen"
- id: paginationNav
translation: "Pagina navigatie"
- id: paginationPrevious
translation: "Vorige"
- id: paginationNext
@@ -72,7 +74,17 @@
- id: shareLink
translation: "Delen via"
- id: copiedToClipboard
translation: "Gekopieerd naar clipboard"
translation: "gekopieerd naar clipboard"
- id: link
translation: "Link"
- id: code
translation: "Code"
- id: latest
translation: "meest recente"
- id: allVersions
translation: "Alle versies"
- id: newerVersionAlert
translation: "Er is een nieuwere versie van {{ . }}!"
# 404 page
- id: pageNotFound

View File

@@ -1,6 +1,16 @@
{{- $section := .Section }}
{{- with partial "utilities/GetMenu" . }}{{ $.Scratch.Set "sidebar" . }}{{ end -}}
{{ $.Scratch.Set "version" (site.Param (printf "%s.version" .Section)) }}
{{- $version := partial "utilities/GetVersion.html" (dict "page" . "base" true) -}}
{{- $.Scratch.Set "version" $version -}}
{{ with partial "utilities/GetMenu" (dict "page" . "version" $version) }}{{ $.Scratch.Set "sidebar" . }}{{ end }}
{{- if and site.Params.docs.checkVersion $version -}}
{{- if ne $version "latest" -}}
{{- if partial "utilities/IsOlder" (dict "current" $version) -}}
{{- $.Scratch.Set "pageAlertMsg" (T "newerVersionAlert" site.Title) -}}
{{- $.Scratch.Set "pageAlertURL" (or site.Params.docs.latestURL site.baseURL) -}}
{{- end -}}
{{- end -}}
{{- end -}}
<!doctype html>
<html lang="{{ .Site.Language.Lang }}" class="no-js">
@@ -68,6 +78,20 @@
</div>
{{ end }}
{{- partialCached "footer/scripts.html" (dict "header" false "page" .) }}
{{- partial "footer/toast-container.html" . -}}
{{- partialCached "footer/scripts.html" (dict "header" false "page" . "core" true) }}
{{- $modules := site.Params.modules.optional | intersect .Params.modules -}}
{{- range $index, $mod := $modules -}}
{{- $filename := printf "js/%s.bundle.js" $mod -}}
{{- $match := printf "js/modules/%s/**.js" $mod -}}
{{- $skipTemplate := false -}}
{{- if reflect.IsSlice site.Params.modules.disableTemplate -}}
{{- if in site.Params.modules.disableTemplate $mod}}
{{- $skipTemplate = true -}}
{{- end -}}
{{- end -}}
{{- partial "footer/scripts.html" (dict "filename" $filename "match" $match "header" false "skipTemplate" $skipTemplate "page" .) }}
{{- end -}}
</body>
</html>

View File

@@ -18,17 +18,21 @@
{{- if gt (len (.GetTerms "tags")) 0 -}}
<div class="mt-3">
<div class="d-none-dark">
{{ range (.GetTerms "tags") -}}
<a class="btn btn-light btn-sm" href="{{ (path.Join .Page.RelPermalink) | relLangURL }}" role="button">{{ .LinkTitle }}</a>
&nbsp;
{{ end -}}
<div class="hstack gap-3">
{{ range (.GetTerms "tags") -}}
{{- $url := (path.Join .Page.RelPermalink) | relLangURL -}}
{{ partial "assets/button.html" (dict "href" $url "title" .LinkTitle "color" "light" "size" "sm") }}
{{ end -}}
</div>
</div>
<div class="d-none-light">
{{ range (.GetTerms "tags") -}}
<a class="btn btn-outline-secondary btn-sm" href="{{ (path.Join .Page.RelPermalink) | relLangURL }}" role="button">{{ .LinkTitle }}</a>
&nbsp;
{{ end -}}
<div class="hstack gap-3">
{{ range (.GetTerms "tags") -}}
{{- $url := (path.Join .Page.RelPermalink) | relLangURL -}}
{{ partial "assets/button.html" (dict "href" $url "title" .LinkTitle "color" "secondary" "size" "sm" "outline" "true") }}
{{ end -}}
</div>
</div>
</div>
{{- end -}}

10
layouts/index.redir Normal file
View File

@@ -0,0 +1,10 @@
{{- range .Site.Params.docs.releases -}}
{{- if .redirect -}}
{{ urls.JoinPath .url "/*" }} {{ urls.JoinPath .redirect ":splat" }} 200
{{ end }}
{{- end -}}
{{ range $p := .Site.AllPages }}
{{- range .Aliases -}}
{{ if hasPrefix . "." }}{{ urls.JoinPath $p.RelPermalink . }}{{ else }}{{ . }}{{ end }} {{ $p.RelPermalink }}
{{ end }}
{{- end -}}

View File

@@ -87,6 +87,8 @@
{{- $footer := .footer -}}
{{- $orientation := .orientation -}}
{{- if and (eq $cols 1) (eq $orientation "horizontal") }}{{ $orientation = "horizontal-sm" }}{{ end -}}
<div class="container-fluid p-4 px-xxl-0">
{{ $paginator := "" }}
{{ if $paginate }}
@@ -130,7 +132,7 @@
{{ if $paginate }}
{{- if gt $paginator.TotalPages 1 -}}
<div class="pt-3">{{ partial "assets/pagination.html" $page }}</div>
<div class="pt-3">{{ partial "assets/pagination.html" (dict "page" $page "format" "terse") }}</div>
{{- end -}}
{{ else }}
{{ if gt $count $max }}

View File

@@ -18,7 +18,8 @@
"description" Optional description of the card.
"thumbnail" Optional thumbnail image url, displayed on top or the left of the card.
"icon" Optional Font Awesome icon, displayed on top or the left of the card.
"orientation" Optional placecement of the thumbnail, either "stacked" (default), "horizontal", or "none".
"orientation" Optional placecement of the thumbnail or icon, either "stacked" (default), "horizontal",
"horizontal-sm" or "none".
-->
<!-- Inline partial to render the card's body -->
@@ -127,25 +128,25 @@
{{- $orientation := "stacked" -}}
{{- with .orientation }}{{ $orientation = . }}{{ end -}}
{{- $supportedOrientations := slice "stacked" "horizontal" "none" -}}
{{- $supportedOrientations := slice "stacked" "horizontal" "horizontal-sm" "none" -}}
{{- if not (in $supportedOrientations $orientation) -}}
{{- errorf "partial [assets/card.html] - Invalid value for param 'orientation': %s" $orientation -}}
{{- end -}}
{{- if eq $orientation "none" }}{{ $thumbnail = "" }}{{ $icon = "" }}{{ end -}}
{{- if eq $orientation "horizontal" -}}
<div class="card mb-3 {{ with $color }}bg-{{ . }} text-bg-{{ . }}{{ end }} {{ $class }}">
<div class="row g-0 row-cols-1">
<div class="col-4">
{{- if hasPrefix $orientation "horizontal" -}}
<div class="card {{ with $color }}bg-{{ . }} text-bg-{{ . }}{{ end }} {{ $class }}">
<div class="row g-0 row-cols-1 h-100">
<div class="col-4{{ if eq $orientation "horizontal-sm" }} col-md-2{{ end }}">
{{- if $thumbnail -}}
{{- partial "assets/image.html" (dict "url" $thumbnail "ratio" "1x1" "outerClass" "h-100 card-img-wrap" "innerClass" "rounded-start card-img-h100" "title" $title) -}}
{{- else if $icon -}}
<div class="pt-{{ $padding }} ps-{{ $padding }} pe-{{ $padding }}">
{{- partial "assets/icon.html" (dict "icon" (printf "%s fa-4x text-secondary" $icon)) -}}
<div class="p-{{ $padding }} h-100 fa-wrapper d-flex align-items-center justify-content-center">
{{- partial "assets/icon.html" (dict "icon" (printf "%s fa-fluid text-secondary fa-fw" $icon)) -}}
</div>
{{- end -}}
</div>
<div class="col-8">
<div class="col-8{{ if eq $orientation "horizontal-sm" }} col-md-10{{ end }}">
<div class="card-body d-flex p-{{ $padding }} flex-column h-100">
{{ if $page }}<div>{{ partial "card-caption.html" (dict "page" $page "keywords" $header "color" $color) }}</div>{{ end }}
<div class="h-100">
@@ -161,7 +162,7 @@
{{- if $thumbnail -}}
{{- partial "assets/image.html" (dict "url" $thumbnail "ratio" "16x9" "outerClass" "card-img-wrap" "innerClass" "card-img-top" "title" $title) -}}
{{- else if $icon -}}
<div class="pt-{{ $padding }} ps-{{ $padding }} pe-{{ $padding }}">
<div class="p-{{ $padding }}">
{{- partial "assets/icon.html" (dict "icon" (printf "%s fa-4x text-secondary" $icon)) -}}
</div>
{{- end -}}

View File

@@ -98,7 +98,7 @@
{{- $scaled = $img.Fit (printf "%s webp" $dim) -}}
{{- end -}}
{{- $scaled = $scaled | resources.Copy (replace $img.RelPermalink $clean (printf "-%s.webp" $dim)) -}}
{{- $imgset = printf "%s, %s %sw" $imgset $scaled.RelPermalink (index $widths $index) -}}
{{- $imgset = printf "%s, %s %sw" $imgset $scaled.Permalink (index $widths $index) -}}
{{- end -}}
{{- $imgset = strings.TrimPrefix ", " $imgset -}}
{{- end -}}
@@ -145,7 +145,7 @@
srcset="{{ . }}"
sizes="100vw"
{{- end }}
src="{{ $fallbackURL }}"
src="{{ absURL $fallbackURL }}"
alt="{{ $title }}">
</div>
{{- if $caption -}}

View File

@@ -8,6 +8,7 @@
{{- $pageURL := $page.RelPermalink | relLangURL -}}
{{- $isActive := hasPrefix $pageURL $menuURL -}}
{{- $isAlias := $menu.Params.alias -}}
{{- $isIcon := $menu.Params.icon -}}
{{- $url := urls.Parse $menuURL -}}
{{- $baseURL := urls.Parse $.Site.Params.Baseurl -}}
@@ -36,11 +37,12 @@
{{- end -}}
<a class="{{ $anchorClass }}{{ if $isActive }} active{{ end }}{{ with $class }} {{. }}{{ end }}"
{{ if $isIcon }}aria-label="{{ $menu.Name }}"{{ end }}
data-nav="main" data-nav-main="{{ $mainNav }}"{{ with $childNav }} data-nav-child="{{ . }}"{{ end }}
href="{{ $menuURL }}{{ $params | safeHTMLAttr }}"{{ with $externalHref }} {{ . | safeHTMLAttr }}{{ end }} {{ $button | safeHTMLAttr }}>
{{- with $menu.Pre }}{{ . }}{{ end -}}
<span {{ if $isActive }} class="active"{{ end }}>{{ $menu.Name }}</span>
<span {{ if $isActive }} class="active"{{ end }}>{{ if not $isIcon }}{{ $menu.Name }}{{ end }}</span>
{{- with $menu.Post }}{{ . }}{{ end -}}
{{- if $isExternal }} {{ partial "assets/icon.html" (dict "icon" "fas up-right-from-square fa-2xs") }}{{ end -}}
{{- if and $isExternal (not $isIcon)}} {{ partial "assets/icon.html" (dict "icon" "fas up-right-from-square fa-2xs") }}{{ end -}}
</a>

View File

@@ -48,6 +48,51 @@
</li>
{{- end -}}
<!-- Inline partial to render the version switcher -->
{{- define "partials/navbar-versions.html" -}}
{{- $size := .size -}}
{{- $collapsed := .collapsed -}}
{{- $page := .page -}}
{{- $list := site.Params.docs.releases -}}
{{- $version := partial "utilities/GetVersion.html" (dict "page" $page) -}}
<li class="nav-item dropdown {{ if $collapsed }}d-{{ $size }}-none{{ else }}d-none d-{{ $size }}-block{{ end }}">
<a class="nav-link dropdown-toggle" href="#!" role="button" data-bs-toggle="dropdown" aria-expanded="false" id="navbar-version-switch">
{{ if $collapsed }}{{ site.Title }} {{ end }}{{ $version }}
</a>
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="navbar-version-switch">
{{- range $index, $item := $list -}}
{{- $active := eq $item.label $version -}}
{{- $disabled := false -}}
{{- if site.IsServer }}
{{- $disabled = and $item.redirect (gt (len $item.redirect) 0) -}}
{{- end -}}
{{ if $item.url }}
<li>
{{- $url := (path.Join $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 }}
{{ if $item.latest }} ({{ T "latest" }}){{ end }}
{{ if $active }}
<span class="position-absolute end-0 me-3">{{- partial "assets/icon.html" (dict "icon" "fas check") }}</span>
{{ end }}
</a>
</li>
{{ else }}
{{ if gt $index 0}}<li><hr class="dropdown-divider"></li>{{ end }}
<li><span class="dropdown-header fs-6">{{ $item.label }}</span></li>
{{ end }}
{{- end -}}
{{- if site.Params.docs.overview -}}
{{ if gt (len $list) 0 }}<li><hr class="dropdown-divider"></li>{{ end }}
<li>
{{- $url := (path.Join site.Params.docs.overview) | relLangURL -}}
<a class="dropdown-item{{ if $collapsed }} switch-mode-collapsed{{ end }}" href="{{ $url }}">{{ T "allVersions" }}</a>
</li>
{{- end -}}
</ul>
</li>
{{- end -}}
{{- $supportedFlags := slice "true" "false" -}}
{{- $id := printf "navbar-collapse-%d" 0 -}}
@@ -112,6 +157,12 @@
{{- end -}}
{{- end -}}
{{- $enableVersions := false -}}
{{ $list := site.Params.docs.releases }}
{{ if $list }}
{{- $enableVersions = gt (len $list ) 1 -}}
{{ end }}
{{- $enableLanguage := or $page.IsTranslated site.IsMultiLingual -}}
{{- $logo := site.Params.navigation.logo -}}
@@ -130,98 +181,113 @@
{{- if eq $color "black" }}{{ $theme = "dark" }}{{ end -}}
{{- if eq $color "white" }}{{ $theme = "light" }}{{ end -}}
<nav class="navbar navbar-expand-{{ $size }} {{ with $color }}bg-{{ . }}{{ end }} {{ if $fixed }}fixed-top{{ end }} p-4"{{ with $theme }} data-bs-theme="{{ . }}"{{ end }}>
<div class="container-xxl p-0">
<!-- Insert sidebar toggler when applicable -->
<div class="d-flex">
{{- if $page.Scratch.Get "sidebar" -}}
<button class="navbar-toggler fw-30 collapsed p-0 mx-auto" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvass-sidebar" aria-controls="offcanvass-sidebar" aria-label="{{ T "toggleSidebar" }}">
{{- partial "assets/icon.html" (dict "icon" "fas ellipsis") -}}
<div class="container-fluid {{ if $fixed }}fixed-top{{ end }} p-0"{{ with $theme }} data-bs-theme="{{ . }}"{{ end }}>
{{- partial "assets/page-alert.html" (dict "page" $page) -}}
<nav class="navbar navbar-expand-{{ $size }} {{ with $color }}bg-{{ . }}{{ end }} p-4"{{ with $theme }} data-bs-theme="{{ . }}"{{ end }}>
<div class="container-xxl p-0">
<!-- Insert sidebar toggler when applicable -->
<div class="d-flex">
{{- if $page.Scratch.Get "sidebar" -}}
<button class="navbar-toggler fw-30 collapsed p-0 mx-auto" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvass-sidebar" aria-controls="offcanvass-sidebar" aria-label="{{ T "toggleSidebar" }}">
{{- partial "assets/icon.html" (dict "icon" "fas ellipsis") -}}
</button>
{{- else -}}
<!-- Insert invisible sidebar toggler to center logo correctly on smaller screens -->
<button class="navbar-toggler fw-30 collapsed p-0 mx-auto invisible" type="button">
{{- partial "assets/icon.html" (dict "icon" "fas ellipsis") -}}
</button>
{{- end -}}
</div>
<!-- Insert the brand logo or name -->
<a class="navbar-brand mx-auto" href="{{ site.Home.RelPermalink }}">
{{- if $logo -}}
<img src="{{ $logo }}" alt="{{ $title }} logo" height="30">
{{- else -}}
<span class="fw-bold">{{ $title }}</span>
{{- end -}}
</a>
<!-- Insert main navigation toggler -->
<div class="d-flex fw-30">
<button id="main-nav-toggler" class="navbar-toggler collapsed p-0" type="button" data-bs-toggle="collapse" data-bs-target="#{{ $id }}"
aria-controls="{{ $id }}" aria-expanded="false" aria-label="{{ T "toggleMainNav" }}">
<span class="toggler-icon top-bar emphasis"></span>
<span class="toggler-icon middle-bar emphasis"></span>
<span class="toggler-icon bottom-bar emphasis"></span>
</button>
{{- else -}}
<!-- Insert invisible sidebar toggler to center logo correctly on smaller screens -->
<button class="navbar-toggler fw-30 collapsed p-0 mx-auto invisible" type="button">
{{- partial "assets/icon.html" (dict "icon" "fas ellipsis") -}}
</button>
{{- end -}}
</div>
<!-- Insert the brand logo or name -->
<a class="navbar-brand mx-auto" href="{{ site.Home.RelPermalink }}">
{{- if $logo -}}
<img src="{{ $logo }}" alt="{{ $title }} logo" height="30">
{{- else -}}
<span class="fw-bold">{{ $title }}</span>
{{- end -}}
</a>
<!-- Insert main navigation toggler -->
<div class="d-flex fw-30">
<button id="main-nav-toggler" class="navbar-toggler collapsed p-0" type="button" data-bs-toggle="collapse" data-bs-target="#{{ $id }}"
aria-controls="{{ $id }}" aria-expanded="false" aria-label="{{ T "toggleMainNav" }}">
<span class="toggler-icon top-bar emphasis"></span>
<span class="toggler-icon middle-bar emphasis"></span>
<span class="toggler-icon bottom-bar emphasis"></span>
</button>
</div>
<div class="navbar-collapse collapse" id="{{ $id }}">
<!-- Insert search input -->
{{- if $search }}{{ partial "assets/search-input.html" -}}{{ end -}}
<!-- Render top-menu items (maximum depth of 2) -->
<ul class="navbar-nav ms-auto">
{{- range $menu := $menus -}}
<li class="nav-item{{ if .HasChildren }} dropdown{{ end }}">
{{- partial "assets/navbar-item.html" (dict "menu" $menu "page" $page) -}}
{{- if .HasChildren -}}
<ul class="dropdown-menu dropdown-menu-end">
{{- range .Children -}}
{{- partial "assets/navbar-item.html" (dict "menu" . "parent" $menu "page" $page) -}}
</div>
<div class="navbar-collapse collapse" id="{{ $id }}">
<!-- Insert search input -->
{{- if $search }}{{ partial "assets/search-input.html" -}}{{ end -}}
<!-- Render top-menu items (maximum depth of 2) -->
<ul class="navbar-nav ms-auto">
{{- range $menu := $menus -}}
<li class="nav-item{{ if .HasChildren }} dropdown{{ end }}">
{{- partial "assets/navbar-item.html" (dict "menu" $menu "page" $page) -}}
{{- if .HasChildren -}}
<ul class="dropdown-menu dropdown-menu-end">
{{- range .Children -}}
{{- partial "assets/navbar-item.html" (dict "menu" . "parent" $menu "page" $page) -}}
{{- end -}}
</ul>
{{- end -}}
</li>
{{- end -}}
<!-- Insert divider if applicable -->
{{- if or $enableLanguage $enableVersions -}}
<li class="nav-item py-2 py-md-1 col-12 col-md-auto d-none d-{{ $size }}-block">
<div class="vr d-none d-md-flex h-100 mx-md-2"></div>
</li>
<li><hr class="dropdown-divider-bg"></li>
{{- end -}}
<!-- Insert language switcher if applicable -->
{{- if $enableLanguage -}}
{{- $currentLang := $page.Language.Lang -}}
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle d-{{ $size }}-none" href="#!" role="button" data-bs-toggle="dropdown" aria-expanded="false">
{{- partial "assets/icon.html" (dict "icon" "fas globe") }} {{ T "languageSwitcherLabel" }}
</a>
<a class="nav-link dropdown-toggle d-none d-{{ $size }}-block" href="#!" role="button" data-bs-toggle="dropdown" aria-expanded="false">
{{- partial "assets/icon.html" (dict "icon" "fas globe") }}
</a>
<ul class="dropdown-menu dropdown-menu-end ">
{{- if $page.IsTranslated -}}
{{- range $page.AllTranslations -}}
<li><a class="dropdown-item {{ if eq .Language.Lang $currentLang }}active{{ end }}" href="{{ .Permalink }}">{{ .Language.LanguageName }}</a></li>
{{- end -}}
{{- else -}}
{{- range site.Languages -}}
<li><a class="dropdown-item" href="/{{ .Lang }}">{{ default .Lang .LanguageName }}</a></li>
{{- end -}}
{{- end -}}
</ul>
{{- end -}}
</li>
{{- end -}}
<!-- Insert divider if applicable -->
{{- if or $enableLanguage $enableDarkMode -}}
<li class="nav-item py-2 py-md-1 col-12 col-md-auto d-none d-{{ $size }}-block">
<div class="vr d-none d-md-flex h-100 mx-md-2"></div>
</li>
<li><hr class="dropdown-divider-bg"></li>
{{- end -}}
<!-- Insert language switcher if applicable -->
{{- if $enableLanguage -}}
{{- $currentLang := $page.Language.Lang -}}
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle d-{{ $size }}-none" href="#!" role="button" data-bs-toggle="dropdown" aria-expanded="false">
{{- partial "assets/icon.html" (dict "icon" "fas globe") }} {{ T "languageSwitcherLabel" }}
</a>
<a class="nav-link dropdown-toggle d-none d-{{ $size }}-block" href="#!" role="button" data-bs-toggle="dropdown" aria-expanded="false">
{{- partial "assets/icon.html" (dict "icon" "fas globe") }}
</a>
<ul class="dropdown-menu dropdown-menu-end ">
{{- if $page.IsTranslated -}}
{{- range $page.AllTranslations -}}
<li><a class="dropdown-item {{ if eq .Language.Lang $currentLang }}active{{ end }}" href="{{ .Permalink }}">{{ .Language.LanguageName }}</a></li>
{{- end -}}
{{- else -}}
{{- range site.Languages -}}
<li><a class="dropdown-item" href="/{{ .Lang }}">{{ default .Lang .LanguageName }}</a></li>
{{- end -}}
{{- end -}}
</ul>
</li>
{{- end -}}
<!-- Insert color mode switcher -->
{{- if $enableDarkMode -}}
{{- partial "partials/navbar-mode.html" (dict "size" $size "collapsed" true) -}}
{{- partial "partials/navbar-mode.html" (dict "size" $size "collapsed" false) -}}
{{- end -}}
</ul>
</li>
{{- end -}}
<!-- Insert version switcher -->
{{- if $enableVersions -}}
{{- partial "partials/navbar-versions.html" (dict "page" $page "size" $size "collapsed" true ) -}}
{{- partial "partials/navbar-versions.html" (dict "page" $page "size" $size "collapsed" false) -}}
{{- end -}}
<!-- Insert color mode switcher -->
{{- if $enableDarkMode -}}
<!-- Insert divider -->
<li class="nav-item py-2 py-md-1 col-12 col-md-auto d-none d-{{ $size }}-block">
<div class="vr d-none d-md-flex h-100 mx-md-2"></div>
</li>
<li><hr class="dropdown-divider-bg"></li>
{{- partial "partials/navbar-mode.html" (dict "size" $size "collapsed" true) -}}
{{- partial "partials/navbar-mode.html" (dict "size" $size "collapsed" false) -}}
{{- end -}}
</ul>
</div>
</div>
</div>
</nav>
</nav>
</div>

View File

@@ -0,0 +1,15 @@
{{- $page := .page -}}
{{- if not $page -}}
{{- errorf "partial [assets/page-alert.html] - Missing value for param 'page'" -}}
{{- end -}}
{{- $pageAlertMsg := $page.Scratch.Get "pageAlertMsg" -}}
{{- $pageAlertURL := $page.Scratch.Get "pageAlertURL" -}}
{{- $version := $page.Scratch.Get "version" -}}
{{- if $pageAlertMsg -}}
<div id="page-alert" class="alert alert-primary alert-no-decoration fade show d-flex align-items-center small m-0 py-1" data-page-alert-version="{{ $version }}">
<a href="{{ with $pageAlertURL }}{{ . }}{{ else }}#!{{ end }}" class="text-decoration-none flex-grow-1 text-center">{{ $pageAlertMsg }}</a>
<button id="page-alert-btn-close" type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
{{- end -}}

View File

@@ -22,9 +22,11 @@
{{- if in $validFormats $format }}
{{- if gt $page.Paginator.TotalPages 1 }}
<ul class="pagination pagination-{{ $format }} justify-content-center">
{{- partial (printf "partials/inline/pagination/%s" $format) $page }}
</ul>
<nav aria-label="{{ T "paginationNav" }}">
<ul class="pagination pagination-{{ $format }} justify-content-center">
{{- partial (printf "partials/inline/pagination/%s" $format) $page }}
</ul>
</nav>
{{- end }}
{{- else }}
{{- errorf $msg2 (delimit $validFormats ", ") }}
@@ -50,11 +52,11 @@
{{- with .Prev }}
<li class="page-item">
<a href="{{ .URL }}" aria-label="{{ T "paginationPrevious" }}" class="page-link" role="button"><span aria-hidden="true">{{ T "paginationPrevious" }}</span></a>
<a href="{{ .URL }}" aria-label="{{ T "paginationPrevious" }}" class="page-link" role="button"><span aria-hidden="true"><i class="fas fa-angle-left"></i></span></a>
</li>
{{- else }}
<li class="page-item disabled">
<a aria-disabled="true" aria-label="{{ T "paginationPrevious" }}" class="page-link" role="button" tabindex="-1"><span aria-hidden="true">{{ T "paginationPrevious" }}</span></a>
<a aria-disabled="true" aria-label="{{ T "paginationPrevious" }}" class="page-link" role="button" tabindex="-1"><span aria-hidden="true"><i class="fas fa-angle-left"></i></span></a>
</li>
{{- end }}
@@ -79,11 +81,11 @@
{{- with .Next }}
<li class="page-item">
<a href="{{ .URL }}" aria-label="{{ T "paginationNext" }}" class="page-link" role="button"><span aria-hidden="true">{{ T "paginationNext" }}</span></a>
<a href="{{ .URL }}" aria-label="{{ T "paginationNext" }}" class="page-link" role="button"><span aria-hidden="true"><i class="fas fa-angle-right"></i></span></a>
</li>
{{- else }}
<li class="page-item disabled">
<a aria-disabled="true" aria-label="{{ T "paginationNext" }}" class="page-link" role="button" tabindex="-1"><span aria-hidden="true">{{ T "paginationNext" }}</span></a>
<a aria-disabled="true" aria-label="{{ T "paginationNext" }}" class="page-link" role="button" tabindex="-1"><span aria-hidden="true"><i class="fas fa-angle-right"></i></span></a>
</li>
{{- end }}
@@ -110,14 +112,14 @@
{{- with .First }}
{{- if ne $currentPageNumber .PageNumber }}
<li class="page-item">
<a href="{{ .URL }}" aria-label="{{ T "paginationFirst" }}" class="page-link" role="button"><span aria-hidden="true">{{ T "paginationFirst" }}</span></a>
<a href="{{ .URL }}" aria-label="{{ T "paginationFirst" }}" class="page-link" role="button"><span aria-hidden="true"><i class="fas fa-angle-double-left"></i></span></a>
</li>
{{- end }}
{{- end }}
{{- with .Prev }}
<li class="page-item">
<a href="{{ .URL }}" aria-label="{{ T "paginationPrevious" }}" class="page-link" role="button"><span aria-hidden="true">{{ T "paginationPrevious" }}</span></a>
<a href="{{ .URL }}" aria-label="{{ T "paginationPrevious" }}" class="page-link" role="button"><span aria-hidden="true"><i class="fas fa-angle-left"></i></span></a>
</li>
{{- end }}
@@ -142,7 +144,7 @@
{{- with .Next }}
<li class="page-item">
<a href="{{ .URL }}" aria-label="{{ T "paginationNext" }}" class="page-link" role="button"><span aria-hidden="true">{{ T "paginationNext" }}</span></a>
<a href="{{ .URL }}" aria-label="{{ T "paginationNext" }}" class="page-link" role="button"><span aria-hidden="true"><i class="fas fa-angle-right"></i></span></a>
</li>
{{- end }}

View File

@@ -1,6 +0,0 @@
<div class="d-flex ms-md-3">
<form class="search position-relative flex-grow-1 me-auto">
<input id="search" class="form-control is-search" type="search" placeholder="{{ T "ui_search" }}" aria-label="{{ T "ui_search" }}" autocomplete="off">
<div id="suggestions" class="shadow bg-body rounded d-none" data-no-results="{{ T "ui_no_results" }}"></div>
</form>
</div>

View File

@@ -6,7 +6,7 @@
{{- if .Site.Params.sharing.reverse }}{{ $order = "desc" }}{{ else }}{{ $order = "asc" }}{{ end -}}
{{- $sort := .Site.Params.sharing.sort | default "weight" -}}
{{- $list = sort $list $sort $order -}}
<div class="py-3 text-body-secondary">
<div class="py-3 text-body-secondary hstack gap-2">
{{ T "shareLink" }}
{{- range $index, $item := $list -}}
{{- $url := $item.url -}}
@@ -19,9 +19,9 @@
{{- $target = (printf "toast-message-%s-%d" (anchorize $item.name) $index ) -}}
{{- $clipboard = $url -}}
{{- $url = "#!" -}}
{{- partial "assets/toast.html" (dict "id" $target "message" (T "copiedToClipboard")) -}}
{{- partial "assets/toast.html" (dict "id" $target "message" (printf "%s %s" (T "link") (T "copiedToClipboard"))) -}}
{{- end -}}
{{ partial "assets/button.html" (dict "toast" $target "clipboard" $clipboard "href" $url "icon" $item.icon "class" "btn-social px-1" )}}
{{ partial "assets/button.html" (dict "toast" $target "clipboard" $clipboard "href" $url "icon" (printf "%s fa-fw" $item.icon) "class" "btn-social p-0" )}}
{{- end -}}
</div>
{{- end -}}

View File

@@ -1,28 +1,31 @@
{{ $filename := .filename | default "js/main.bundle.js" -}}
{{ $match := .match | default "{js/*.js,js/vendor/**.js}" }}
{{ $page := .page }}
{{ $header := .header }}
{{- $filename := .filename | default "js/main.bundle.js" -}}
{{- $match := .match | default "{js/*.js,js/vendor/**.js}" -}}
{{- $page := .page -}}
{{- $header := .header -}}
{{- $core := .core | default false -}}
{{- $skipTemplate := .skipTemplate | default false -}}
{{ $files := slice -}}
{{ range $index, $file := resources.Match $match -}}
{{ $files = $files | append $file -}}
{{- $modules := "" -}}
{{ if $core }}
{{- $modules = site.Params.modules.core -}}
{{- end -}}
{{- $bundle := partial "utilities/bundle" (dict "match" $match "filename" $filename "modules" $modules "basepath" "js/modules" "all" true "debugging" site.Params.debugging.showJS) -}}
{{- $js := $bundle -}}
{{- if not $skipTemplate -}}
{{- $js = $bundle | resources.ExecuteAsTemplate $filename $page -}}
{{- end -}}
{{- if and (not site.IsServer) $header -}}
{{- $pc := site.Config.Privacy.GoogleAnalytics -}}
{{- if and (not $pc.Disable) (hasPrefix site.GoogleAnalytics "G-") }}
<script async src="https://www.googletagmanager.com/gtag/js?id={{ site.GoogleAnalytics }}"></script>
{{- end }}
{{- end -}}
{{- if not hugo.IsProduction -}}
<script src="{{ $js.Permalink }}"></script>
{{ else -}}
{{ $js = $js | minify | fingerprint -}}
<script src="{{ $js.Permalink }}" integrity="{{ $js.Data.Integrity }}" crossorigin="anonymous"></script>
{{ end -}}
{{ if gt (len $files) 0 }}
{{ $bundle := $files | resources.Concat $filename -}}
{{ $js := $bundle | resources.ExecuteAsTemplate $filename $page -}}
{{- if and (not site.IsServer) $header -}}
{{- $pc := site.Config.Privacy.GoogleAnalytics -}}
{{- if and (not $pc.Disable) (hasPrefix site.GoogleAnalytics "G-") }}
<script async src="https://www.googletagmanager.com/gtag/js?id={{ site.GoogleAnalytics }}"></script>
{{- end }}
{{- end -}}
{{- if not hugo.IsProduction -}}
<script src="{{ $js.RelPermalink }}"></script>
{{ else -}}
{{ $js = $js | minify | fingerprint -}}
<script src="{{ $js.RelPermalink }}" integrity="{{ $js.Data.Integrity }}" crossorigin="anonymous"></script>
{{ end -}}
{{ end -}}

View File

@@ -7,7 +7,7 @@
</div>
<div class="col text-sm-start text-center col-sm-6 col-md-4">
{{ range .Site.Menus.social -}}
<a href="{{ .URL | relLangURL }}" target="_blank" rel="noopener noreferrer" aria-label="{{ .Name | safeHTML }}" class="text-decoration-none link-secondary d-inline p-2">
<a href="{{ .URL }}" target="_blank" rel="noopener noreferrer" aria-label="{{ .Name | safeHTML }}" class="text-decoration-none link-secondary d-inline p-2">
{{ .Pre | safeHTML }}
</a>
{{ end -}}

View File

@@ -0,0 +1,31 @@
<!--
Defines a container to stack toast messages. By default, toast messages are displayed in the bottom right of the
viewport. Multiple toast messages are stacked vertically. Adjust the configuration by adjusting 'messages' in the
site parameters. The following arguments are supported:
"placement" Optional position of the toast messages relative to the viewport: "top-left", "top-center",
"top-right", "middle-left", "middle-center", "middle-right", "bottom-left", "bottom-center", or
"bottom-right" (default).
-->
{{- $placement := "bottom-right" -}}
{{- $position := "bottom-0 end-0" -}}
{{- with site.Params.messages.placement }}{{ $placement = . }}{{ end -}}
{{- $supportedPlacements := slice "top-left" "top-center" "top-right" "middle-left" "middle-center" "middle-right" "bottom-left" "bottom-center" "bottom-right" -}}
{{- if not (in $supportedPlacements $placement) -}}
{{- errorf "partial [footer/toast-container.html] - Invalid value for param 'placement': %s" $placement -}}
{{- end -}}
{{- if eq $placement "top-left" }}{{ $position = "top-0 start-0" -}}
{{- else if eq $placement "top-center" }}{{ $position = "top-0 start-50 translate-middle-x" -}}
{{- else if eq $placement "top-right" }}{{ $position = "top-0 end-0" -}}
{{- else if eq $placement "middle-left" }}{{ $position = "top-50 start-0 translate-middle-y" -}}
{{- else if eq $placement "middle-center" }}{{ $position = "top-50 start-50 translate-middle" -}}
{{- else if eq $placement "middle-right" }}{{ $position = "top-50 end-0 translate-middle-y" -}}
{{- else if eq $placement "bottom-left" }}{{ $position = "bottom-0 start-0" -}}
{{- else if eq $placement "bottom-center" }}{{ $position = "bottom-0 start-50 translate-middle-x" -}}
{{- else if eq $placement "bottom-right" }}{{ $position = "bottom-0 end-0" -}}
{{- end -}}
<div id="toast-container" class="toast-container position-fixed {{ $position }} p-3">
{{- partial "assets/toast.html" (dict "id" "toast-copied-code-message" "message" (printf "%s %s" (T "code") (T "copiedToClipboard"))) -}}
</div>

View File

@@ -3,7 +3,18 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
{{ hugo.Generator}}
{{ partial "head/stylesheet.html" . -}}
{{ partial "head/stylesheet.html" -}}
{{- $modules := site.Params.modules.optional | intersect .Page.Params.modules -}}
{{- range $index, $mod := $modules -}}
{{- $source := printf "scss/%s.scss" $mod -}}
{{- $target := printf "css/%s.css" $mod -}}
{{- partial "head/stylesheet.html" (dict "source" $source "target" $target "core" false "page" .) }}
{{- end -}}
{{- if hasPrefix (lower .Site.Params.style.themeFontPath) "http" -}}
<link rel="preconnect" href="https://fonts.googleapis.com">
<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" }}">
{{- end -}}
{{ partial "head/seo.html" . }}
{{ partialCached "head/favicon.html" . -}}
{{ if gt (len .Site.Languages) 1}}

View File

@@ -1,30 +1,43 @@
{{- $source := .source | default "scss/app.scss" -}}
{{- $target := .target | default "css/main.css" -}}
{{- $page := .page -}}
{{- $core := .core | default true -}}
{{- $modules := "" -}}
{{ if $core }}
{{- if reflect.IsSlice site.Params.modules.excludeSCSS -}}
{{- $modules = complement site.Params.modules.excludeSCSS site.Params.modules.core -}}
{{ else }}
{{- $modules = site.Params.modules.core -}}
{{ end }}
{{- end -}}
{{- $navbarOffset := "0em" -}}
{{- if .Site.Params.navigation.fixed }}{{ $navbarOffset = site.Params.navigation.offset | default "4em" }}{{ end }}
{{- if site.Params.navigation.fixed }}{{ $navbarOffset = site.Params.navigation.offset | default "4em" }}{{ end }}
{{- $vars := dict
"theme-font" (default "Inter" .Site.Params.style.themeFont)
"primary" (default "#007bff" .Site.Params.style.primary)
"secondary" (default "#6c757d" .Site.Params.style.secondary)
"success" (default "#198754" .Site.Params.style.success)
"info" (default "#0dcaf0" .Site.Params.style.info)
"warning" (default "#ffc107" .Site.Params.style.warning)
"danger" (default "#dc3545" .Site.Params.style.danger)
"light" (default "#f8f9fa" .Site.Params.style.light)
"dark" (default "#212529" .Site.Params.style.dark)
"theme-font" (default "Inter" site.Params.style.themeFont)
"primary" (default "#007bff" site.Params.style.primary)
"secondary" (default "#6c757d" site.Params.style.secondary)
"success" (default "#198754" site.Params.style.success)
"info" (default "#0dcaf0" site.Params.style.info)
"warning" (default "#ffc107" site.Params.style.warning)
"danger" (default "#dc3545" site.Params.style.danger)
"light" (default "#f8f9fa" site.Params.style.light)
"dark" (default "#212529" site.Params.style.dark)
"navbar-offset" $navbarOffset
"enable-dark-mode" (printf "%t" ((default true .Site.Params.main.enableDarkMode)))
"import-fonts" (printf "%t" (not (hasPrefix (lower .Site.Params.style.themeFontPath) "http")))
"enable-dark-mode" (printf "%t" ((default true site.Params.main.enableDarkMode)))
"import-fonts" (printf "%t" (not (hasPrefix (lower site.Params.style.themeFontPath) "http")))
-}}
{{- $options := (dict "transpiler" "libsass" "targetPath" "css/main.css" "enableSourceMap" (not hugo.IsProduction) "includePaths" (slice "node_modules") "vars" $vars) -}}
{{/*- $options := (dict "transpiler" "dartsass" "targetPath" "css/main.css" "enableSourceMap" (not hugo.IsProduction) "includePaths" (slice "node_modules") "vars" $vars) -*/}}
{{- if hugo.IsProduction -}}
{{- $options = merge $options (dict "outputStyle" "compressed") -}}
{{- else -}}
{{- $options = merge $options (dict "outputStyle" "expanded") -}}
{{- end -}}
{{- $css := resources.Get "scss/app.scss" | resources.ExecuteAsTemplate "style.app.scss" . | toCSS $options -}}
{{- partial "head/icons.html" (dict "css" $css) -}}
{{- if .Site.Params.style.purge -}}
{{- $options := (dict "transpiler" "libsass" "targetPath" $target "enableSourceMap" (not hugo.IsProduction) "vars" $vars) -}}
{{- $bundle := partial "utilities/bundle" (dict "match" $source "filename" (printf "scss/bundle-%d.scss" now.UnixNano) "modules" $modules "basepath" "scss" "debugging" site.Params.debugging.showSCSS) -}}
{{- $css := $bundle | resources.ExecuteAsTemplate $target . | toCSS $options -}}
{{ if $core }}
{{- partial "head/icons.html" (dict "css" $css) -}}
{{ end }}
{{- if site.Params.style.purge -}}
{{- $post_options := dict "config" "config" -}}
{{- $css = $css | resources.PostCSS $post_options -}}
{{- end -}}
@@ -34,9 +47,4 @@
{{- else -}}
{{- $css = $css | fingerprint | resources.PostProcess -}}
<link rel="stylesheet" href="{{ $css.Permalink }}" integrity="{{ $css.Data.Integrity }}" crossorigin="anonymous">
{{- end -}}
{{- if hasPrefix (lower .Site.Params.style.themeFontPath) "http" -}}
<link rel="preconnect" href="https://fonts.googleapis.com">
<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" }}">
{{- end -}}

View File

@@ -1,6 +1,12 @@
{{- $page := .page -}}
{{- $version := .version -}}
{{- $menu := "" -}}
{{- if .IsPage -}}
{{- $menu = index .Site.Data .Section -}}
{{- if $page.IsPage -}}
{{- $menu = index site.Data (printf "%s-%s" $page.Section $version) -}}
{{ if not $menu }}
{{ $menu = index site.Data $page.Section }}
{{ end }}
{{- end -}}
{{- return $menu -}}

View File

@@ -0,0 +1,38 @@
<!--
Retrieve the docs version label of the current page. The path of the page's file is matched with the url of the
defined docs releases in the site's parameters. When no match is found it returns the latest label instead.
-->
{{- $page := .page -}}
{{- $base := .base -}}
{{- $version := "" -}}
{{- if and site.Params.docs.releases site.Params.docs.contentPath -}}
{{- $docsPath := strings.TrimPrefix "/" site.Params.docs.contentPath -}}
{{- if and $page.File (strings.HasPrefix $page.File.Dir $docsPath) -}}
{{- $currentPath := strings.TrimPrefix $docsPath $page.File.Dir -}}
{{- $currentVersion := index (split $currentPath "/") 0 -}}
{{- $versionPath := path.Join site.Params.docs.contentPath $currentVersion -}}
{{- $list := site.Params.docs.releases -}}
{{- range $index, $item := $list -}}
{{- $url := strings.TrimSuffix "/" $item.url -}}
{{- if eq $url $versionPath -}}
{{- if $base }}{{ $version = path.Base $item.url }}{{ else }}{{ $version = $item.label }}{{ end -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- if not $version -}}
{{- $list := site.Params.docs.releases -}}
{{- range $item := $list -}}
{{- if $item.latest -}}
{{- if $base }}{{ $version = path.Base $item.url }}{{ else }}{{ $version = $item.label }}{{ end -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- else -}}
{{- $version = site.Params.docs.version -}}
{{- end -}}
{{- return $version -}}

View File

@@ -0,0 +1,32 @@
<!--
Returns true if the current version is older than the latest version defined in the docs section of the site
parameters. The verification supports semver patterns MAJOR.MINOR.PATCH with an optional suffix.
Original code by solus on https://discourse.gohugo.io/t/sorting-semantic-version-numbers/40838/6.
-->
{{ $current := .current }}
{{ $latest := site.Params.docs.latest }}
{{- define "partials/padZeroPrefix.html" -}}
{{- $padSize := 6 }}
{{- $paddedString := replaceRE "(\\d+)" (print (strings.Repeat (sub $padSize 1) "0") "$1") . }}
{{- $trimmedString := replaceRE (print "0+(\\d{" $padSize "})") "$1" $paddedString }}
{{- return $trimmedString }}
{{- end -}}
{{- define "partials/trimZeroPrefix.html" -}}
{{- return replaceRE "0+(\\d+)" "$1" . }}
{{- end -}}
{{- $isOlder := false -}}
{{- if and $current $latest }}
{{- $versions := slice $current $latest }}
{{- $paddedVersions := apply $versions "partial" "padZeroPrefix" "." }}
{{- $sortedVersions := (sort $paddedVersions "value" "desc") }}
{{- $sortedVersions = apply $sortedVersions "partial" "trimZeroPrefix" "." }}
{{ $isOlder = ne (index $sortedVersions 0) $current }}
{{- end -}}
{{- return $isOlder -}}

View File

@@ -0,0 +1,16 @@
{{- $base := .base -}}
{{- if not $base }}
{{- errorf "partial [assets/utilities/URLJoin.html] - Expected param 'base'" -}}
{{- end -}}
{{- $path := .path -}}
{{- if not $path }}
{{- errorf "partial [assets/utilities/URLJoin.html] - Expected param 'path'" -}}
{{- end -}}
{{- $url := $path -}}
{{- if not (hasPrefix $path "http") -}}
{{- $url = printf "%s/%s" (strings.TrimSuffix "/" $base) $path -}}
{{- end }}
{{- return $url -}}

View File

@@ -0,0 +1,67 @@
{{- $match := .match -}}
{{- $filename := .filename -}}
{{- if not (or $match $filename) -}}
{{- errorf "partial [assets/bundle.html] - Expected match and filename" -}}
{{- end -}}
{{- $order := .order | default "asc"}}
{{- $supportedOrder := slice "asc" "desc" -}}
{{- if not (in $supportedOrder $order) -}}
{{- errorf "partial [assets/bundle.html] - Invalid value for param 'order': %s" $order -}}
{{- end -}}
{{- $modules := .modules -}}
{{- $all := .all }}
{{- $basepath := strings.TrimSuffix "/" .basepath -}}
{{- $ext := trim (path.Ext (trim $match "{}")) "." -}}
{{- if not $ext -}}
{{- errorf "partial [assets/bundle.html] - Cannot derive file extension of match pattern: %s" $match -}}
{{- end -}}
{{- $debugging := .debugging | default false -}}
{{- if $modules -}}
{{- $match = trim $match "{}" -}}
{{- $matches := slice $match -}}
{{- range $index, $mod := $modules -}}
{{- if $all }}
{{- $matches = $matches | append (printf "%s/%s/**.%s" $basepath $mod $ext) -}}
{{- else -}}
{{- $matches = $matches | append (printf "%s/%s.%s" $basepath $mod $ext) -}}
{{- end -}}
{{- end -}}
{{- $match = printf "{%s}" (delimit $matches ",") }}
{{- end -}}
<!-- TODO: concat by module, then sorted by filename -->
{{ $matches := resources.Match $match }}
{{ $files := slice }}
{{ range $index, $file := $matches }}
{{ $add := (dict "name" (strings.TrimSuffix (printf ".%s" $ext) $file.Name) "resource" $file ) }}
{{ $files = $files | append $add }}
{{ end }}
{{ $sorted := slice }}
{{ $files = sort $files "name" }}
{{- range $index, $file := $files -}}
{{ $sorted = $sorted | append $file.resource }}
{{- end -}}
{{- if $debugging -}}
{{ warnf "Processing pattern: %s" $match}}
{{- range $index, $file := $sorted -}}
{{- warnf " - Processing file: %s" $file }}
{{- end -}}
{{- end -}}
{{/* warnf "FILES: %s" $sorted */}}
{{ $bundle := "" }}
{{ if gt (len $sorted) 0 }}
{{ $bundle = $sorted | resources.Concat $filename -}}
{{ else }}
{{ $bundle = resources.FromString $filename "" }}
{{ end -}}
{{- return $bundle -}}

View File

@@ -58,7 +58,7 @@
<div class="pb-3">
{{- partial "assets/button.html" (dict
"title" $title
"href" (printf "%s/%s" (strings.TrimSuffix "/" site.Params.docs.release) $version)
"href" (partial "partials/utilities/URLJoin.html" (dict "base" site.Params.docs.release "path" $version))
"size" "sm"
"color" $color
"outline" "true"

View File

@@ -0,0 +1,101 @@
<!-- Inspired by the timeline snippet from Siddharth Panchal at https://bootsnipp.com/snippets/Q0ppE -->
{{ $error := false }}
{{- $data := .Get "data" -}}
{{ if not $data -}}
{{ errorf "Missing param 'data': %s" .Position -}}
{{ $error = true }}
{{ end -}}
{{ $entries := index site.Data $data }}
{{ if not $entries -}}
{{ errorf "Invalid timeline data '%s': %s" $data .Position -}}
{{ $error = true }}
{{ end -}}
{{ $background := "" -}}
{{ with .Get "background" }}{{ $background = . }}{{ end -}}
{{ $supportedColors := slice "primary" "secondary" "success" "danger" "warning" "info" "light" "dark" -}}
{{ if and $background (not (in $supportedColors $background)) -}}
{{ errorf "Invalid value for param 'background': %s" .Position -}}
{{ $error = true -}}
{{ end -}}
<!-- Inline partial to render icon -->
{{- define "partials/timeline-icon.html" -}}
{{- $col := default 6 .col -}}
{{- $icon := .icon -}}
{{- $direction := .direction -}}
<div class="col-{{ $col }} d-flex justify-content-{{ $direction }} align-items-center">
<div class="d-flex">
<div class="d-flex timeline-semi-circle-{{ $direction }} fa-wrapper align-items-center justify-content-center">
{{ partial "assets/icon.html" (dict "icon" (printf "%s fa-fluid" $icon)) }}
</div>
<div class="timeline-connector-{{ $direction }} {{ if eq $direction "start" }} order-first{{ end }}"></div>
</div>
</div>
{{- end -}}
<!-- Inline partial to render icon -->
{{- define "partials/timeline-panel.html" -}}
{{- $col := default 6 .col -}}
{{- $content := .content -}}
{{- $color := .color -}}
{{- $title := .title -}}
{{- $badge := .badge -}}
{{- $url := .url -}}
{{- $date := .date -}}
{{- if and $url (not (hasPrefix $url "http")) -}}
{{- $url = partial "partials/utilities/URLJoin.html" (dict "base" site.Params.docs.release "path" $url) }}
{{- end -}}
{{- $direction := .direction -}}
<div class="col-{{ $col }} d-flex align-items-center">
<div class="d-flex h-100 w-100">
<div class="timeline-panel-{{ $direction }}"></div>
<div class="timeline-description-text-{{ $direction }} p-3 w-100">
<div>
{{ with $url }}
<a class="fs-5 fw-bold text-uppercase link-{{ $color }} text-break align-middle" href="{{ . }}">{{ $title }}</a>
<span class="badge rounded-pill text-bg-{{ $color }} ms-1">{{ if $badge }}<a class="link-bg-{{ $color }}" href="{{ . }}">{{ $badge }}</a>{{ end }}</span>
{{ else}}
<span class="fs-5 fw-bold text-uppercase text-{{ $color }} text-break align-middle">{{ $title }}</span>
<span class="badge rounded-pill text-bg-{{ $color }} ms-1">{{ if $badge }}{{ $badge }}{{ end }}</span>
{{ end }}
</div>
{{ if $date }}
{{ $datestr := (partial "utilities/date.html" (dict "date" $date "format" "long")) -}}
<p class="mb-0"><small class="text-body-secondary text-uppercase">{{ $datestr -}}</small></p>
{{ end }}
<p class="mt-3 mb-0">{{ $content | markdownify }}</p>
</div>
</div>
</div>
{{- end -}}
<!-- Render default timeline -->
<div class="container p-0 d-none d-md-block mb-5 {{ with $background }} timeline-bg-{{ . }}{{ end }}">
{{ range $index, $item := $entries }}
<div class="row timeline timeline-{{ $item.color }} timeline-dot g-0 ">
{{ if eq (mod $index 2) 1 }}
{{ partial "partials/timeline-panel.html" (dict "content" $item.content "color" $item.color "title" $item.title "badge" $item.badge "date" $item.date "url" $item.url "direction" "start") }}
{{ partial "partials/timeline-icon.html" (dict "icon" $item.icon "direction" "start") }}
{{ else }}
{{ partial "partials/timeline-icon.html" (dict "icon" $item.icon "direction" "end") }}
{{ partial "partials/timeline-panel.html" (dict "content" $item.content "color" $item.color "title" $item.title "badge" $item.badge "date" $item.date "url" $item.url "direction" "end") }}
{{ end }}
</div>
<div class="row timeline g-0 p-3"> </div>
{{ end }}
</div>
<!-- Render timeline for smaller devices -->
<div class="container p-0 d-block d-md-none {{ with $background }} timeline-bg-{{ . }}{{ end }}">
{{ range $index, $item := $entries }}
<div class="row timeline-sm timeline-{{ $item.color }} timeline-dot g-0">
{{ partial "partials/timeline-icon.html" (dict "icon" $item.icon "direction" "end" "col" 3) }}
{{ partial "partials/timeline-panel.html" (dict "content" $item.content "color" $item.color "title" $item.title "badge" $item.badge "date" $item.date "url" $item.url "direction" "end" "col" 9) }}
</div>
<div class="row timeline-sm g-0 p-3"> </div>
{{ end }}
</div>

View File

@@ -4,6 +4,7 @@
"header": Optional header of the toast message. Uses the site title by default.
-->
{{- $error := false -}}
{{- $id := printf "toast-message-%d" .Ordinal -}}
{{- with .Get "id" }}{{ $id = . }}{{ end -}}
{{ $header := .Get "header" -}}
@@ -11,6 +12,6 @@
{{ if not $message -}}
{{ errorf "Missing inner element text: %s" .Position -}}
{{ else }}
{{ else if not $error -}}
{{ partial "assets/toast.html" (dict "id" $id "header" $header "message" $message) }}
{{ end -}}

View File

@@ -4,8 +4,8 @@
functions = "functions"
[build.environment]
NODE_VERSION = "18.13.0"
NPM_VERSION = "8.19.3"
NODE_VERSION = "18.16.1"
NPM_VERSION = "9.5.1"
[context.production]
command = "npm run build"
@@ -26,18 +26,18 @@
default-src 'self'; \
child-src 'self' app.netlify.com; \
script-src 'self' \
app.netlify.com netlify-cdp-loader.netlify.app \
https://*.netlify.app app.netlify.com netlify-cdp-loader.netlify.app \
https://utteranc.es/client.js https://*.google-analytics.com https://*.googletagmanager.com; \
style-src 'self' \
netlify.app https://utteranc.es https://fonts.googleapis.com https://www.youtube.com; \
https://*.netlify.app https://utteranc.es https://fonts.googleapis.com https://www.youtube.com; \
object-src 'none'; \
base-uri 'self'; \
connect-src 'self'
https://*.google-analytics.com https://*.analytics.google.com https://*.googletagmanager.com; \
font-src 'self' https://fonts.gstatic.com; \
font-src 'self' https://*.netlify.app https://fonts.gstatic.com; \
frame-src 'self' https://utteranc.es https://www.youtube-nocookie.com https://www.youtube.com \
app.netlify.com; \
img-src 'self' https://i.vimeocdn.com https://i.ytimg.com https://*.google-analytics.com https://*.googletagmanager.com; \
img-src 'self' data: 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'; \
media-src 'self' \
"""

3679
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{
"name": "@gethinode/hinode",
"version": "0.14.3",
"version": "0.16.0-beta2",
"description": "Hinode is a clean documentation and blog theme for Hugo, an open-source static site generator",
"keywords": [
"hugo",
@@ -8,7 +8,8 @@
"bootstrap",
"responsive",
"front-end",
"blog"
"blog",
"documentation"
],
"main": "index.js",
"publishConfig": {
@@ -16,9 +17,9 @@
"registry": "https://registry.npmjs.org/"
},
"scripts": {
"prestart": "npm run clean",
"prestart": "npm run clean && npm run mod:vendor",
"start": "hugo server --bind=0.0.0.0 --disableFastRender",
"start:prod": "hugo server --bind=0.0.0.0 --disableFastRender -e production",
"start:prod": "hugo server --bind=0.0.0.0 --disableFastRender --printI18nWarnings -e production",
"prebuild": "npm run clean",
"build": "hugo --gc --minify",
"build:debug": "hugo -e debug --debug",
@@ -30,14 +31,18 @@
"lint:styles": "stylelint \"assets/scss/**/*.{css,sass,scss,sss,less}\"",
"lint:markdown": "markdownlint-cli2 \"*.md\" \"content/**/*.md\"",
"lint:markdown-fix": "markdownlint-cli2-fix \"*.md\" \"content/**/*.md\"",
"mod:clean": "hugo mod clean",
"mod:update": "hugo mod get -u ./... && npm run -s mod:vendor && npm run -s mod:tidy",
"mod:tidy": "hugo mod tidy",
"mod:vendor": "rimraf _vendor && hugo mod vendor",
"test": "npm run -s lint",
"env": "hugo env",
"precheck": "npm version",
"check": "hugo version",
"copy:fonts": "shx cp ./node_modules/@fortawesome/fontawesome-free/webfonts/* ./static/fonts/",
"create:syntax": "npm run -s create:syntax-light & npm run -s create:syntax-dark && npm run -s update:syntax-dark",
"create:syntax-light": "hugo gen chromastyles --style=github > ./assets/scss/components/_syntax-light.scss",
"create:syntax-dark": "hugo gen chromastyles --style=github-dark > ./assets/scss/components/_syntax-dark.scss",
"create:syntax": "npm run -s create:syntax-light & npm run -s create:syntax-dark",
"update:syntax-dark": "replace-in-files --string=\"#ffffcc\" --replacement=\"#b8b800\" ./assets/scss/components/_syntax-dark.scss",
"upgrade": "npx npm-check-updates -u"
},
"repository": {
@@ -54,23 +59,22 @@
"@fortawesome/fontawesome-free": "^6.4.0",
"@fullhuman/postcss-purgecss": "^5.0.0",
"autoprefixer": "^10.4.14",
"bootstrap": "^5.3.0-alpha3",
"cssnano": "^6.0.0",
"cssnano-preset-advanced": "^6.0.0",
"eslint": "^8.39.0",
"eslint-config-standard": "^17.0.0",
"eslint-plugin-import": "^2.27.5",
"eslint-plugin-n": "^15.7.0",
"eslint-plugin-n": "^16.0.0",
"eslint-plugin-promise": "^6.1.1",
"flexsearch": "^0.7.31",
"hugo-bin": "^0.103.0",
"markdownlint-cli2": "^0.7.0",
"hugo-bin": "^0.111.0",
"markdownlint-cli2": "^0.8.1",
"postcss-cli": "^10.1.0",
"purgecss-whitelister": "^2.4.0",
"replace-in-files-cli": "^2.2.0",
"rimraf": "^5.0.0",
"shx": "^0.3.4",
"stylelint": "^15.6.0",
"stylelint-config-standard-scss": "^9.0.0"
"stylelint-config-standard-scss": "^10.0.0"
},
"hugo-bin": {
"buildTags": "extended"

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -5,8 +5,8 @@ description = "A clean documentation and blog theme for your Hugo site based on
homepage = "https://gethinode.com"
demosite = "https://demo.gethinode.com"
tags = ["blog", "documentation", "minimal", "modern", "customizable", "search", "bootstrap"]
features = ["security aware", "fast by default", "seo-ready", "development tools", "bootstrap framework", "netlify-ready", "full text search", "page layouts"]
min_version = "0.109.0"
features = ["security aware", "fast by default", "seo-ready", "development tools", "bootstrap framework", "netlify-ready", "full text search", "page layouts", "versioned documentation"]
min_version = "0.110.0"
[author]
name = "Mark Dumay"