Compare commits

...

176 Commits

Author SHA1 Message Date
Mark Dumay
6f6908f30b Merge pull request #401 from gethinode/develop
Streamline initial setup
2023-08-09 17:19:58 +02:00
mark
1cf5fad731 Fix build example site 2023-08-09 15:40:36 +02:00
mark
75dc930abb Fix build command 2023-08-09 15:29:43 +02:00
mark
8d0adf5a28 Add example site 2023-08-09 15:21:20 +02:00
mark
7a981950f5 Update build env 2023-08-09 15:21:09 +02:00
Mark Dumay
da1c738671 Merge branch 'main' into develop 2023-08-09 15:10:22 +02:00
Mark Dumay
8fbdd27e1c Merge pull request #400 from markdumay/develop
Streamline initial setup
2023-08-09 15:09:06 +02:00
Mark Dumay
631cd979b0 Merge branch 'develop' into develop 2023-08-09 15:08:48 +02:00
mark
de9c00a6ec Reset package name 2023-08-09 15:06:05 +02:00
mark
4de1b7dce7 Update package release 2023-08-09 15:02:31 +02:00
mark
e0f464dc7d Ignore public files of example site 2023-08-09 15:01:44 +02:00
mark
5b91945824 Include example site in scripts 2023-08-09 15:01:26 +02:00
mark
e7bdd81136 Create example site 2023-08-09 15:00:55 +02:00
mark
dbd1b731bc Configure minimal initial site 2023-08-09 08:36:19 +02:00
mark
097f041765 Use all root sections by default 2023-08-09 08:16:03 +02:00
mark
f283e329a7 Applu default style to card group items 2023-08-09 08:15:23 +02:00
github-actions[bot]
ffbc775446 Merge pull request #397 from gethinode/dependabot/npm_and_yarn/hugo-bin-0.113.0
Bump hugo-bin from 0.112.1 to 0.113.0
2023-08-08 13:35:46 +00:00
dependabot[bot]
fedb652e1e Bump hugo-bin from 0.112.1 to 0.113.0
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.112.1 to 0.113.0.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.112.1...v0.113.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-08-08 13:29:37 +00:00
mark
503a7f7410 Adapt new social params 2023-08-08 12:58:57 +02:00
mark
a693508e24 Ignore empty tagline 2023-08-08 12:58:29 +02:00
mark
3ba3f13005 Use summary when description is unavailable 2023-08-08 12:57:56 +02:00
mark
66f5904893 Support new thumbnail metadata 2023-08-08 12:56:19 +02:00
mark
27848998d5 Add default archetype 2023-08-08 12:31:46 +02:00
mark
e2e9bb421f Rewrite featured partial to use markdown content 2023-08-08 10:19:15 +02:00
mark
5e32ac2a04 Add endorsement 2023-08-08 10:16:54 +02:00
mark
efbaa6ce4f Remove empty line 2023-08-08 10:13:08 +02:00
mark
60821fc0c3 Add default title for more button 2023-08-06 12:49:28 +02:00
mark
e25edd77b0 Use all sections by default 2023-08-06 12:20:14 +02:00
mark
2ac190723e Remove superfluous description variable 2023-08-06 12:19:55 +02:00
mark
775a4a4b2a Use summary when description is unavailable 2023-08-06 12:19:05 +02:00
mark
84d6758b7a Use summary when description is unavailable 2023-08-06 12:17:47 +02:00
mark
1031fbd660 Move content to example site 2023-08-06 11:44:06 +02:00
mark
80d43bed2d Fix NL translation of projects title 2023-08-06 08:55:42 +02:00
mark
094ba86f47 Update package name 2023-08-06 07:23:06 +02:00
Mark Dumay
244911614d Merge pull request #391 from gethinode/main
Sync with main
2023-08-05 17:39:45 +02:00
Mark Dumay
f9eedc7835 Merge pull request #390 from gethinode/refinement
Standardize shortcodes
2023-08-05 17:33:29 +02:00
Mark Dumay
cbfb33faf0 Merge branch 'main' into refinement 2023-08-05 17:26:22 +02:00
mark
2d9e89d40a Update shortcode examples 2023-08-05 17:24:34 +02:00
mark
266b3978fc Bump package version 2023-08-05 16:09:16 +02:00
mark
d2bfd1c48f Update dependencies 2023-08-05 16:08:27 +02:00
mark
633da32df5 Add id argument 2023-08-05 15:41:39 +02:00
mark
ea2c28f3fd Adjust indendation 2023-08-05 15:41:22 +02:00
mark
f66b519f51 Standardize header 2023-08-05 15:41:08 +02:00
mark
6bfb558f73 Standardize header 2023-08-05 13:26:04 +02:00
mark
f0a894091c Standardize header 2023-08-05 13:25:50 +02:00
mark
3bc14eb232 Add class argument 2023-08-05 13:19:09 +02:00
mark
e428666750 Standardize header 2023-08-05 13:18:55 +02:00
mark
2301ea8df6 Add class argument 2023-08-05 13:18:23 +02:00
mark
e9434b327a Standardize header 2023-08-05 13:09:41 +02:00
mark
3b1d5d838e Add class argument 2023-08-05 13:09:29 +02:00
mark
4e5ea23b66 Add class argument 2023-08-05 13:03:30 +02:00
mark
3ad19673a4 Improve rendering of example shortcode 2023-08-05 12:55:52 +02:00
mark
bb58394a43 Refine caching 2023-08-04 13:52:15 +02:00
mark
f574888563 Sanitize SEO thumbnail 2023-08-04 13:47:10 +02:00
mark
7339c262b5 Improve build cache 2023-08-04 13:46:53 +02:00
mark
51f9d204b9 Fix indentation 2023-08-04 13:46:01 +02:00
Mark Dumay
3d082a51a3 Merge pull request #388 from gethinode/develop
Update dependencies
2023-08-04 11:28:48 +02:00
mark
db6b6238c5 Update twitter logo 2023-08-04 10:21:32 +02:00
mark
6011e5637a Update package version 2023-08-04 10:13:43 +02:00
mark
855bf85be6 Bump dependencies 2023-08-04 10:13:01 +02:00
mark
ec37884f7a Clean up fontawesome package 2023-08-04 10:12:21 +02:00
mark
057720bca8 Bump dependencies 2023-08-04 10:11:22 +02:00
Mark Dumay
e3d607bd25 Merge pull request #387 from gethinode/main
Sync with main
2023-08-04 10:10:33 +02:00
Mark Dumay
a9e3a5ecbb Merge pull request #386 from gethinode/markdumay-patch-1
Update dependabot.yml
2023-08-04 08:45:27 +02:00
Mark Dumay
f9a3edbf30 Update dependabot.yml 2023-08-04 08:31:38 +02:00
github-actions[bot]
c199aa0902 Merge pull request #384 from gethinode/dependabot/npm_and_yarn/fortawesome/fontawesome-free-6.4.2
Bump @fortawesome/fontawesome-free from 6.4.0 to 6.4.2
2023-08-03 13:56:37 +00:00
dependabot[bot]
dfafdbb8af Bump @fortawesome/fontawesome-free from 6.4.0 to 6.4.2
Bumps [@fortawesome/fontawesome-free](https://github.com/FortAwesome/Font-Awesome) from 6.4.0 to 6.4.2.
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/6.x/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/compare/6.4.0...6.4.2)

---
updated-dependencies:
- dependency-name: "@fortawesome/fontawesome-free"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-03 13:51:18 +00:00
Mark Dumay
c4d8507638 Merge pull request #381 from gethinode/develop
Fix spacing for external link icons
2023-08-02 14:55:03 +02:00
Mark Dumay
44d5cfa4de Merge branch 'main' into develop 2023-08-02 14:41:00 +02:00
mark
5aa3cfb80f Bump package version 2023-08-02 14:40:28 +02:00
mark
22b83dbcf9 Fix spacing for external link icons 2023-08-02 14:37:51 +02:00
Mark Dumay
0a88ae04b9 Merge pull request #380 from gethinode/develop
Refine icon support
2023-08-02 13:57:47 +02:00
Mark Dumay
bf068977a6 Merge branch 'main' into develop 2023-08-02 13:51:20 +02:00
mark
5dfc99efa0 Bump package version 2023-08-02 13:50:16 +02:00
mark
84f09f0dcb Bump dependencies 2023-08-02 13:49:51 +02:00
mark
65d9635f61 Shift fa-fluid to mod-fontawesome 2023-08-02 13:49:39 +02:00
mark
452bd92029 Adjust layout 2023-08-02 13:33:20 +02:00
mark
87fc26e289 Support shorthand notation for menu icons 2023-08-02 13:33:11 +02:00
Mark Dumay
aad1335523 Merge pull request #378 from gethinode/develop
Enable inline icons
2023-08-02 09:24:07 +02:00
mark
a216b26857 Adjust spacing of theme icons 2023-08-02 09:10:45 +02:00
mark
2c121c6cde Adjust spacing of prev/next navigation 2023-08-02 09:02:07 +02:00
mark
2bc4ff0233 Remove superfluous closing tag 2023-08-02 08:59:55 +02:00
mark
a76c80ba17 Fix spacing of icons 2023-08-02 08:52:31 +02:00
mark
6580955770 Bump package version 2023-08-02 08:39:52 +02:00
mark
38d6c01983 Update icon references 2023-08-02 08:39:21 +02:00
Mark Dumay
af2ba38a86 Merge branch 'main' into develop 2023-08-02 07:38:57 +02:00
mark
0242d388b5 Bump package version 2023-08-02 07:38:04 +02:00
mark
5a78dda34f Enable inline icons 2023-08-02 07:37:22 +02:00
github-actions[bot]
8564e3e2fc Merge pull request #377 from gethinode/dependabot/npm_and_yarn/hugo-bin-0.112.1
Bump hugo-bin from 0.112.0 to 0.112.1
2023-08-01 13:59:31 +00:00
dependabot[bot]
913c6ad158 Bump hugo-bin from 0.112.0 to 0.112.1
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.112.0 to 0.112.1.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.112.0...v0.112.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-08-01 13:55:10 +00:00
github-actions[bot]
5e676ee5fa Merge pull request #375 from gethinode/dependabot/npm_and_yarn/hugo-bin-0.112.0
Bump hugo-bin from 0.111.4 to 0.112.0
2023-08-01 06:42:51 +00:00
dependabot[bot]
f1b4e556c4 Bump hugo-bin from 0.111.4 to 0.112.0
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.111.4 to 0.112.0.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.111.4...v0.112.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-07-31 13:42:22 +00:00
github-actions[bot]
9856b670e6 Merge pull request #374 from gethinode/dependabot/npm_and_yarn/eslint-8.46.0
Bump eslint from 8.45.0 to 8.46.0
2023-07-31 13:41:36 +00:00
dependabot[bot]
88ff187891 Bump eslint from 8.45.0 to 8.46.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.45.0 to 8.46.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.45.0...v8.46.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-31 13:36:55 +00:00
Mark Dumay
5c54291eb8 Merge pull request #372 from gethinode/develop
Implement web sharing
2023-07-31 07:57:59 +02:00
Mark Dumay
2a862034aa Merge branch 'main' into develop 2023-07-31 07:40:43 +02:00
mark
56e0713582 Exclude sharing.js from linting 2023-07-31 07:39:58 +02:00
mark
23a3f7ef71 Bump package version 2023-07-31 07:39:02 +02:00
mark
3418ac8d1d Implement Support Web Share API #294 2023-07-31 07:38:29 +02:00
mark
c645024474 Support custom attributes 2023-07-31 07:37:53 +02:00
Mark Dumay
f35c66c0ae Merge pull request #371 from gethinode/markdumay-patch-2
Update tested nodejs versions
2023-07-30 15:00:39 +02:00
Mark Dumay
f479764542 Update tested nodejs versions 2023-07-30 14:53:42 +02:00
Mark Dumay
ab7cc04821 Merge pull request #370 from gethinode/markdumay-patch-1
Update tested nodejs versions
2023-07-30 14:53:06 +02:00
Mark Dumay
6dd208f671 Merge pull request #369 from gethinode/main
Sync with main
2023-07-30 14:45:38 +02:00
Mark Dumay
833e438a23 Update tested nodejs versions 2023-07-30 14:44:02 +02:00
Mark Dumay
9d829b6d94 Merge pull request #368 from gethinode/link
Improve support for managed links
2023-07-30 14:38:33 +02:00
Mark Dumay
0f42fae2c4 Merge branch 'main' into link 2023-07-30 14:29:21 +02:00
mark
a2f7749aa2 Bump package version 2023-07-30 14:28:24 +02:00
mark
ba87ccd4a5 Set cue and tab to false by default 2023-07-30 14:19:04 +02:00
mark
1c68399313 Rename icon to cue 2023-07-30 14:18:25 +02:00
mark
30714ef6da Support class arg 2023-07-30 14:17:21 +02:00
mark
1ef92a0928 Adjust margin when using badges 2023-07-30 14:15:35 +02:00
mark
8331a6ce7c Sync button shortcode with partial 2023-07-30 12:05:05 +02:00
mark
fd34766ffb Add support for tab and cue args 2023-07-30 12:04:22 +02:00
mark
78573f8e51 Fix text and icon alignment 2023-07-30 12:03:40 +02:00
mark
4a0cc8bc88 Rename icon to cue 2023-07-30 12:02:38 +02:00
mark
8fd6f2af4e Support external links config 2023-07-29 14:00:26 +02:00
mark
0191e14a69 Add link shortcode and partial 2023-07-29 13:35:25 +02:00
github-actions[bot]
1f8fb26278 Merge pull request #367 from gethinode/dependabot/npm_and_yarn/eslint-plugin-import-2.28.0
Bump eslint-plugin-import from 2.27.5 to 2.28.0
2023-07-28 14:08:06 +00:00
dependabot[bot]
50548237c6 Bump eslint-plugin-import from 2.27.5 to 2.28.0
Bumps [eslint-plugin-import](https://github.com/import-js/eslint-plugin-import) from 2.27.5 to 2.28.0.
- [Release notes](https://github.com/import-js/eslint-plugin-import/releases)
- [Changelog](https://github.com/import-js/eslint-plugin-import/blob/main/CHANGELOG.md)
- [Commits](https://github.com/import-js/eslint-plugin-import/compare/v2.27.5...v2.28.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-28 14:04:01 +00:00
mark
7f35cf45ef Fix navbar aria ID 2023-07-28 12:42:56 +02:00
Mark Dumay
528f84c8c6 Merge pull request #366 from gethinode/develop
Add typed alerts
2023-07-28 12:21:35 +02:00
Mark Dumay
33ab75ed84 Merge branch 'main' into develop 2023-07-28 12:01:30 +02:00
mark
3010136585 Bump package version 2023-07-28 12:00:45 +02:00
Mark Dumay
676a28c322 Merge pull request #365 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2023-07-28 12:00:04 +02:00
mark
a04ec4d73e Support typed alerts 2023-07-28 11:59:33 +02:00
markdumay
fcc93788a9 fix: update Hugo module dependencies 2023-07-28 06:38:30 +00:00
mark
f949a785a1 Fix upgrade command 2023-07-26 17:53:23 +02:00
Mark Dumay
becba931bc Merge pull request #364 from gethinode/develop
Fix sharing links
2023-07-26 17:49:23 +02:00
Mark Dumay
03e3c5b3ee Merge branch 'main' into develop 2023-07-26 17:41:40 +02:00
mark
311aa3b957 Bump package release 2023-07-26 17:40:56 +02:00
mark
62db3eb9db Fix sharing links 2023-07-26 17:40:24 +02:00
Mark Dumay
56ea9eec47 Merge pull request #363 from gethinode/develop
Add canonifyAssetsURLs option
2023-07-26 17:31:55 +02:00
mark
b845e210b7 Add canonifyAssetsURLs option 2023-07-26 17:13:53 +02:00
Mark Dumay
e8bba05213 Merge pull request #362 from gethinode/main
Sync with main
2023-07-26 15:19:14 +02:00
Mark Dumay
74d0d625c6 Merge pull request #361 from gethinode/permalink
Use relative permalinks by default
2023-07-26 15:04:36 +02:00
mark
9d98a3568c Bump package release 2023-07-26 14:58:01 +02:00
Mark Dumay
dc55571f7a Merge pull request #360 from gethinode/main
Sync with main
2023-07-26 14:55:57 +02:00
Mark Dumay
b7ab9d5690 Merge pull request #359 from gethinode/develop
Refinement
2023-07-26 14:49:44 +02:00
mark
5d20be19a8 Update path for color script 2023-07-26 14:43:15 +02:00
mark
ecae077e2d Use relative permalinks by default 2023-07-26 14:41:55 +02:00
Mark Dumay
132c316ff0 Merge branch 'main' into develop 2023-07-26 14:38:08 +02:00
mark
a3b9081b4d Bump package version 2023-07-26 14:03:25 +02:00
mark
8a689a95de Bump dependencies 2023-07-26 14:02:44 +02:00
mark
9bd04a5b2a Fix complement error for undefined core modules 2023-07-26 09:19:30 +02:00
mark
8dc884f846 Add npm install command 2023-07-26 09:02:31 +02:00
Mark Dumay
4cb558440b Merge pull request #357 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2023-07-24 20:01:52 +02:00
mark
0d78918aa4 Set dark mode to disabled by default 2023-07-24 17:18:23 +02:00
mark
ba7ab907ef Fix behavior of critical scripts 2023-07-24 17:18:06 +02:00
markdumay
af557ac054 fix: update Hugo module dependencies 2023-07-23 03:15:51 +00:00
Mark Dumay
9ada0eee80 Merge pull request #355 from gethinode/develop
Fix behavior in default state
2023-07-22 14:57:41 +02:00
Mark Dumay
ae3e20b596 Merge branch 'main' into develop 2023-07-22 14:46:19 +02:00
mark
c49e6f14c1 Bump package version 2023-07-22 14:45:17 +02:00
mark
b4f6b1aa3d Move bootstrap mod check to base template 2023-07-22 14:44:46 +02:00
mark
962549f2ae Allow undefined main menu 2023-07-22 13:13:40 +02:00
Mark Dumay
28601323c4 Update README.md 2023-07-22 07:52:46 +02:00
Mark Dumay
a11ee72174 Merge pull request #354 from gethinode/develop
Bump package version
2023-07-22 06:31:01 +02:00
Mark Dumay
8e91440261 Merge branch 'main' into develop 2023-07-22 06:21:36 +02:00
mark
19879c4ecc Bump package version 2023-07-22 06:21:01 +02:00
Mark Dumay
810dfef311 Merge pull request #353 from gethinode/develop
Fix overflow of syntax highlight
2023-07-22 06:19:56 +02:00
Mark Dumay
c42fcefa73 Merge branch 'main' into develop 2023-07-22 06:12:58 +02:00
mark
a3c417e378 Fix overflow of syntax highlight 2023-07-22 06:10:11 +02:00
Mark Dumay
2bee381906 Merge pull request #352 from gethinode/develop
Enable filename-only in file and docs shortcode
2023-07-21 16:15:34 +02:00
Mark Dumay
244a3f7496 Merge branch 'main' into develop 2023-07-21 16:08:16 +02:00
mark
563b526cea Bump package release 2023-07-21 16:07:09 +02:00
mark
fa7fad67b5 Add full arg to shortcode 2023-07-21 16:06:32 +02:00
Mark Dumay
966906778d Merge pull request #350 from gethinode/develop
Clean-up after modules
2023-07-21 15:48:58 +02:00
mark
135128a5f9 Promote to v0.16 release 2023-07-21 15:27:07 +02:00
Mark Dumay
25663974ce Merge branch 'main' into develop 2023-07-21 15:11:26 +02:00
mark
af5643f98f fix #336 2023-07-21 14:59:18 +02:00
mark
743126d9b9 Remove obsolete files now part of mod-fontawesome 2023-07-21 14:51:27 +02:00
mark
b0187e3a75 Bump dependencies 2023-07-21 14:50:56 +02:00
mark
c7613ab7a8 Add force-check if file exists 2023-07-21 14:47:59 +02:00
mark
2a6a119762 Fix docs typo 2023-07-21 14:47:44 +02:00
mark
b556f4f4ec feat: add file shortcode 2023-07-21 14:47:29 +02:00
mark
9fa95da778 Add katex to safelist for css purge 2023-07-21 11:30:57 +02:00
114 changed files with 2200 additions and 626 deletions

View File

@@ -1,5 +1,6 @@
assets/js/critical/color.js
assets/js/analytics.js
assets/js/color.js
assets/js/flexsearch.js
assets/js/sharing.js
assets/js/vendor
node_modules

View File

@@ -7,3 +7,4 @@ updates:
directory: "/"
schedule:
interval: "daily"
versioning-strategy: increase

View File

@@ -12,7 +12,7 @@ jobs:
strategy:
matrix:
os: [macos-latest, windows-latest, ubuntu-latest]
node-version: [14.x, 16.x, 18.x]
node-version: [16.x, 18.x, 20.x]
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
runs-on: ${{ matrix.os }}
@@ -24,5 +24,7 @@ jobs:
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
cache-dependency-path: '**/package-lock.json'
- run: npm ci
- run: npm run build
- run: npm run build:example

View File

@@ -14,15 +14,18 @@ jobs:
strategy:
matrix:
node-version: [14.x, 16.x, 18.x]
node-version: [16.x, 18.x, 20.x]
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
steps:
- uses: actions/checkout@v3
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
cache-dependency-path: '**/package-lock.json'
- run: npm ci --ignore-scripts
- run: npm run lint

2
.gitignore vendored
View File

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

View File

@@ -56,10 +56,11 @@
- [PageSpeed Insights][pagespeed]
- [Mozilla Observatory][observatory]
Hinode is a clean documentation and blog theme for [Hugo][hugo], an open-source static site generator. Based on the [Bootstrap 5][bootstrap] framework, the rendered site is fast, secure, and responsive. Hinode uses [FlexSearch][flexsearch] to enable full text search across your site. Finally, the theme uses [Node Package Manager][npm] to automate the build process and to keep track of dependencies.
Hinode is a clean documentation and blog theme for [Hugo][hugo], an open-source static site generator. Based on the [Bootstrap 5][bootstrap] framework, the rendered site is fast, secure, and responsive. Hinode uses [FlexSearch][flexsearch] to enable full text search across your site. Finally, the theme supports [Node Package Manager][npm] to automate the build process and to keep track of dependencies.
Additional features include:
- Flexible configuration of Hugo modules
- Switching between light mode and dark mode
- Support for multiple languages
- Reusable Bootstrap components through configurable shortcodes and partials

View File

@@ -1,2 +1,16 @@
+++
+++
---
# author:
title: {{ replace .Name "-" " " | title }}
date: {{ .Date }}
draft: true
# layout:
# description:
# tags:
# icon:
# thumbnail:
# url:
# author:
# authorURL:
# origin:
# originURL:
---

View File

@@ -1,3 +1,5 @@
{{- if site.Params.main.enableDarkMode -}}
/*!
* Color mode toggler for Bootstrap's docs (https://getbootstrap.com/)
* Copyright 2011-2022 The Bootstrap Authors
@@ -31,7 +33,7 @@
const activeSelectors = document.querySelectorAll('.theme-icon-active')
const activeButtons = document.querySelectorAll(`[data-bs-theme-value="${theme}"]`)
if (activeButtons.length > 0) {
const activeIcon = activeButtons[0].querySelector('i')
const activeIcon = activeButtons[0].querySelector('span')
document.querySelectorAll('[data-bs-theme-value]').forEach(element => {
element.classList.remove('active')
@@ -68,3 +70,5 @@
})
})
})()
{{- end -}}

36
assets/js/sharing.js Normal file
View File

@@ -0,0 +1,36 @@
{{- if site.Params.sharing.webshare -}}
// Adapted from: https://dev.to/j471n/how-to-share-anything-from-your-website-by-web-share-api-1h5g
// function for Web Share API
function webShareAPI (title, description, link) {
navigator
.share({
title,
text: description,
url: link
})
.then(() => console.log('Successful share'))
.catch((error) => console.log('Error sharing', error))
}
const shareBtn = document.getElementById('btn-webshare')
if (shareBtn !== null) {
if (navigator.share) {
const title = shareBtn.getAttribute('data-sharing-title')
const description = shareBtn.getAttribute('data-sharing-description')
const url = shareBtn.getAttribute('data-sharing-url')
// show button if it supports webShareAPI
shareBtn.style.display = 'block'
shareBtn.addEventListener('click', () =>
webShareAPI(title, description, url)
)
} else {
// hide button if host does not support Web Share API
shareBtn.style.display = 'none'
}
}
{{- end -}}

View File

@@ -5,10 +5,6 @@
@import "common/variables.scss";
@import "common/icons.scss";
{{ 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 (mounted by core Bootstrap module)
@import "bootstrap.scss";
@@ -22,6 +18,7 @@
@import "components/clipboard.scss";
@import "components/command.scss";
@import "components/comments.scss";
@import "components/feature.scss";
@import "components/navbar.scss";
@import "components/img.scss";
@import "components/pagination.scss";

View File

@@ -23,19 +23,3 @@ $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 @@
.feature {
margin-top: 0.3 * $navbar-offset;
}

View File

@@ -10,6 +10,7 @@
.syntax-highlight {
background-color: var(--bs-light) if($enable-important-utilities, !important, null);
overflow-x: auto;
}
.preview-background {
@@ -29,6 +30,7 @@
.syntax-highlight {
background-color: var(--bs-tertiary-bg) if($enable-important-utilities, !important, null);
overflow-x: auto;
}
.bg,

View File

@@ -6,12 +6,13 @@ enableGitInfo = true
# toml-docs-end main
# additional settings
googleAnalytics = "G-T85PPZ36GN"
baseURL = "https://demo.gethinode.com/"
# googleAnalytics = "G-xxxxxxxxxx"
baseURL = "https://example.com/"
canonifyURLs = false
enableEmoji = true
enableRobotsTXT = true
enableInlineShortcodes = true
summaryLength = 20
# prevent build failures when using Hugo's Instagram shortcode due to deprecated Instagram API.
# See https://github.com/gohugoio/hugo/issues/7228#issuecomment-714490456
@@ -24,7 +25,7 @@ timeout = "180s"
# toml-docs-start language
languageCode = "en-us"
defaultContentLanguage = "en"
defaultContentLanguageInSubdir = true
defaultContentLanguageInSubdir = false
# toml-docs-end language
# toml-docs-start redirect

View File

@@ -1,31 +1,15 @@
# toml-docs-start lang-main
[en]
languageName = "English"
contentDir = "content/en"
contentDir = "content"
weight = 1
# toml-docs-end lang-main
# toml-docs-start lang-param
[en.params.head]
tagline = "A Hugo Theme"
[en.params.feature]
link = "about"
caption = "About"
[en.params.social]
title = "Follow me"
caption = "I work on everything coding and tweet developer memes"
[en.params.footer]
license = "Licensed under Creative Commons (<a href='https://creativecommons.org/licenses/by-nc-sa/4.0/' class='link-secondary' target='_blank' rel='noopener noreferrer'>CC BY-NC-SA 4.0</a>)."
socialTitle = "Follow me"
socialCaption = "I work on everything coding and tweet developer memes"
# license = "Licensed under Creative Commons (<a href='https://creativecommons.org/licenses/by-nc-sa/4.0/' class='link-secondary' target='_blank' rel='noopener noreferrer'>CC BY-NC-SA 4.0</a>)."
# toml-docs-end lang-param
[nl]
languageName = "Nederlands"
contentDir = "content/nl"
weight = 2
[nl.params.head]
tagline = "Een Hugo Thema"
[nl.params.feature]
link = "over-mij"
caption = "Over mij"
[nl.params.footer]
license = "Gelicenseerd onder Creative Commons (<a href='https://creativecommons.org/licenses/by-nc-sa/4.0/' class='link-secondary' target='_blank' rel='noopener noreferrer'>CC BY-NC-SA 4.0</a>)."
socialTitle = "Volg mij"
socialCaption = "Ik doe aan programmeren en tweet memes"

View File

@@ -1,50 +1,28 @@
[[main]]
name = "About"
pageRef = "/about/"
name = "Home"
pageRef = "/"
weight = 10
[[main]]
name = "Blog"
pageRef = "/blog/"
weight = 20
[[main]]
name = "Projects"
pageRef = "/projects/"
weight = 30
[[main]]
name = "Sample project"
pageRef = "/projects/sample-project/"
parent = "Projects"
weight = 1
[[main]]
name = "Another project"
pageRef = "/projects/another-project/"
parent = "Projects"
weight = 2
[[main]]
name = "Tags"
pageRef = "/tags/"
weight = 40
pageRef = "/tags"
weight = 20
[[social]]
name = "LinkedIn"
pre = "<i class=\"fab fa-linkedin fa-2x\"></i>"
pre = "fab linkedin"
url = "https://linkedin.com/"
weight = 10
[[social]]
name = "GitHub"
pre = "<i class=\"fab fa-github fa-2x\"></i>"
pre = "fab fa-github"
url = "https://github.com/"
weight = 20
[[social]]
name = "Medium"
pre = "<i class=\"fab fa-medium fa-2x\"></i>"
pre = "fab medium"
url = "https://medium.com/"
weight = 30

View File

@@ -4,6 +4,11 @@
description = "Hinode is a clean documentation and blog theme for your Hugo site based on Bootstrap 5."
enableDarkMode = true
modes = ["light", "dark"]
canonifyAssetsURLs = false
endorse = true
[main.externalLinks]
cue = false
tab = false
# toml-docs-end main
# toml-docs-start modules
@@ -12,6 +17,10 @@
optional = ["leaflet", "katex"]
excludeSCSS = ["bootstrap"]
disableTemplate = ["katex"]
[modules.fontawesome]
inline = true
debug = true
skipMissing = false
# toml-docs-end modules
# toml-docs-start debugging
@@ -29,8 +38,7 @@
# toml-docs-start home
[home]
sections = ["blog", "projects"]
featurePhoto = "/img/sunrise.jpg" # source: https://unsplash.com/photos/ZX6BPboJrYk
# sections = ["posts"]
fullCover = false
centerHeadline = false
style = ""
@@ -59,6 +67,7 @@
enabled = true
sort = "weight"
reverse = false
webshare = true
[[sharing.providers]]
name = "LinkedIn"
@@ -69,7 +78,7 @@
[[sharing.providers]]
name = "Twitter"
url = "https://twitter.com/home?status={url}"
icon = "fab twitter"
icon = "fab x-twitter"
weight = 20
[[sharing.providers]]
@@ -93,37 +102,21 @@
# toml-docs-end sharing
# toml-docs-start sections
[sections]
[sections.blog]
title = "Blog"
sort = "date"
reverse = true
nested = true
cols = 3
color = ""
padding = "0"
header = "full"
footer = "none"
orientation = "stacked"
style = "border-0 card-zoom"
homepage = 3
separator = true
[sections.projects]
title = "Projects"
layout = "card"
sort = "title"
reverse = false
nested = true
cols = 1
background = "body-tertiary"
color = "body"
padding = "3"
header = "none"
footer = "tags"
orientation = "horizontal"
style = "border-1 card-emphasize"
homepage = 3
separator = false
# [sections]
# [sections.posts]
# title = "Posts"
# sort = "date"
# reverse = true
# nested = true
# cols = 3
# color = ""
# padding = "0"
# header = "full"
# footer = "none"
# orientation = "stacked"
# style = "border-0 card-zoom"
# homepage = 3
# separator = true
# toml-docs-end sections
[favicon]
@@ -187,11 +180,4 @@
#theme = ""
[links]
bs_badge_heading = "https://getbootstrap.com/docs/5.2/components/badge/#headings"
hinode_docs = "https://gethinode.com/docs"
hugo_imaging = "https://gohugo.io/content-management/image-processing/#imaging-configuration"
mozilla_image = "https://developer.mozilla.org/en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images"
observatory = "https://observatory.mozilla.org/analyze/demo.gethinode.com"
pagespeed = "https://pagespeed.web.dev/report?url=https%3A%2F%2Fdemo.gethinode.com%2F"
utterances = "https://utteranc.es"
hinode = "https://gethinode.com"

View File

@@ -22,6 +22,7 @@ const purgecss = require('@fullhuman/postcss-purgecss')({
'./assets/scss/theme/fonts.scss',
'./assets/scss/theme/theme.scss',
'./_vendor/github.com/gethinode/mod-flexsearch/assets/scss/modules/flexsearch/flexsearch.scss',
'./_vendor/github.com/gethinode/mod-katex/dist/katex.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',

13
content/_index.md Normal file
View File

@@ -0,0 +1,13 @@
---
title: Welcome to Hinode!
thumbnail:
url: /img/sunrise.jpg
author: Harris Vo
authorURL: https://unsplash.com/@hoanvokim
origin: https://unsplash.com/photos/ZX6BPboJrYk
originName: Unsplash
---
A clean documentation and blog theme for your Hugo site based on Bootstrap 5.
{{< button href="https://gethinode.com/docs" icon="fas book-open" order="first" >}}Get Started{{< /button>}}

View File

@@ -1,6 +0,0 @@
---
author: Mark Dumay
title: Welcome to Hinode!
---
A clean documentation and blog theme for your Hugo site based on Bootstrap 5.

View File

@@ -1,6 +0,0 @@
---
author: Mark Dumay
title: Welkom bij Hinode!
---
Een documentatie en blog thema voor Hugo gebaseerd op Bootstrap 5.

View File

@@ -0,0 +1,78 @@
title = "Hinode"
copyright = "Copyright © 2023 Mark Dumay."
paginate = 9
enableGitInfo = true
# additional settings
googleAnalytics = "G-T85PPZ36GN"
baseURL = "https://demo.gethinode.com/"
canonifyURLs = false
enableEmoji = true
enableRobotsTXT = true
enableInlineShortcodes = true
# prevent build failures when using Hugo's Instagram shortcode due to deprecated Instagram API.
# See https://github.com/gohugoio/hugo/issues/7228#issuecomment-714490456
ignoreErrors = ["error-remote-getjson"]
timeout = "180s"
languageCode = "en-us"
defaultContentLanguage = "en"
defaultContentLanguageInSubdir = true
[outputFormats.REDIR]
mediaType = "text/netlify"
baseName = "_redirects"
isPlainText = true
notAlternative = true
[mediaTypes."text/netlify"]
delimiter = ""
[outputs]
home = ["HTML", "RSS", "REDIR"]
[build]
writeStats = true
[taxonomies]
tag = 'tags'
[privacy]
[privacy.vimeo]
disabled = false
simple = true
[privacy.twitter]
disabled = false
enableDNT = true
simple = true
[privacy.instagram]
disabled = false
simple = true
[privacy.youtube]
disabled = false
privacyEnhanced = true
[services]
[services.instagram]
disableInlineCSS = true
[services.twitter]
disableInlineCSS = true
[outputFormats]
[outputFormats.XML]
isPlainText = false
mediaType = "application/xml"
isHtml = false
noUgly = true
permalinkable = false
name = "xml"
[module]
replacements = 'github.com/gethinode/hinode -> ../..'
[[module.imports]]
path = "github.com/gethinode/hinode"

View File

@@ -0,0 +1,29 @@
# toml-docs-start lang-main
[en]
languageName = "English"
contentDir = "content/en"
weight = 1
# toml-docs-end lang-main
# toml-docs-start lang-param
[en.params.head]
tagline = "A Hugo Theme"
[en.params.social]
title = "Follow me"
caption = "I work on everything coding and tweet developer memes"
[en.params.footer]
# license = "Licensed under Creative Commons (<a href='https://creativecommons.org/licenses/by-nc-sa/4.0/' class='link-secondary' target='_blank' rel='noopener noreferrer'>CC BY-NC-SA 4.0</a>)."
# toml-docs-end lang-param
[nl]
languageName = "Nederlands"
contentDir = "content/nl"
weight = 2
[nl.params.head]
tagline = "Een Hugo Thema"
[nl.params.social]
title = "Volg mij"
caption = "Ik doe aan programmeren en tweet memes"
[nl.params.footer]
# license = "Gelicenseerd onder Creative Commons (<a href='https://creativecommons.org/licenses/by-nc-sa/4.0/' class='link-secondary' target='_blank' rel='noopener noreferrer'>CC BY-NC-SA 4.0</a>)."
[nl.params.sections.projects]
title = "Projecten"

View File

@@ -0,0 +1,35 @@
defaultMarkdownHandler = "goldmark"
[highlight]
anchorLineNos = false
codeFences = true
guessSyntax = true
hl_Lines = ""
lineAnchors = ""
lineNoStart = 1
lineNos = false
lineNumbersInTable = false
noClasses = false
tabWidth = 2
## Update the 'create:syntax' command in package.json to modify the style
## The first two lines have been modified to remove the background color
# style = "monokailight"
[goldmark]
[goldmark.extensions]
definitionList = true
footnote = true
linkify = true
strikethrough = true
table = true
taskList = true
typographer = true
[goldmark.parser]
autoHeadingID = true
autoHeadingIDType = 'github'
[goldmark.parser.attribute]
block = true
[goldmark.renderer]
hardWraps = false
unsafe = true
xhtml = false

View File

@@ -0,0 +1,73 @@
[[main]]
name = "About"
pageRef = "/about/"
weight = 10
[[main]]
name = "Blog"
pageRef = "/blog/"
weight = 20
[[main]]
name = "Projects"
pageRef = "/projects/"
weight = 30
[[main]]
name = "Sample project"
pageRef = "/projects/sample-project/"
parent = "Projects"
weight = 1
[[main]]
name = "Another project"
pageRef = "/projects/another-project/"
parent = "Projects"
weight = 2
[[main]]
name = "Tags"
pageRef = "/tags/"
weight = 40
[[social]]
name = "LinkedIn"
pre = "fab linkedin"
url = "https://linkedin.com/"
weight = 10
[[social]]
name = "GitHub"
pre = "fab fa-github"
url = "https://github.com/"
weight = 20
[[social]]
name = "Medium"
pre = "fab medium"
url = "https://medium.com/"
weight = 30
# toml-docs-start sample-navigation
[[sample]]
name = "Blog"
pageRef = "/blog/"
weight = 10
[[sample]]
name = "Projects"
pageRef = "/projects/"
weight = 20
[[sample]]
name = "Sample project"
pageRef = "/projects/sample-project/"
parent = "Projects"
weight = 1
[[sample]]
name = "Another project"
pageRef = "/projects/another-project/"
parent = "Projects"
weight = 2
# toml-docs-end sample-navigation

View File

@@ -32,19 +32,19 @@
[[social]]
name = "LinkedIn"
pre = "<i class=\"fab fa-linkedin fa-2x\"></i>"
pre = "fab linkedin"
url = "https://linkedin.com/"
weight = 10
[[social]]
name = "GitHub"
pre = "<i class=\"fab fa-github fa-2x\"></i>"
pre = "fab github"
url = "https://github.com/"
weight = 20
[[social]]
name = "Medium"
pre = "<i class=\"fab fa-medium fa-2x\"></i>"
pre = "fab medium"
url = "https://medium.com/"
weight = 30

View File

@@ -0,0 +1,183 @@
[main]
separator = "-"
description = "Hinode is a clean documentation and blog theme for your Hugo site based on Bootstrap 5."
enableDarkMode = true
modes = ["light", "dark"]
canonifyAssetsURLs = false
[main.externalLinks]
cue = true
tab = true
[modules]
core = ["bootstrap", "flexsearch", "fontawesome"]
optional = ["leaflet", "katex"]
excludeSCSS = ["bootstrap"]
disableTemplate = ["katex"]
[modules.fontawesome]
inline = true
debug = true
skipMissing = false
[debugging]
showJS = false
showSCSS = false
[docs]
basePath = "/" # TODO: replace
github = "https://github.com/gethinode/hinode"
release = "https://github.com/gethinode/hinode/releases/tag/"
checkVersion = false
[home]
sections = ["blog", "projects"]
fullCover = false
centerHeadline = false
style = ""
[navigation]
anchor = true
logo = "/img/logo_icon.svg"
color = "body"
fixed = true
offset = "3.8em"
search = true
breadcrumb = true
toc = true
sidebar = true
[messages]
placement = "bottom-right"
[sharing]
enabled = true
sort = "weight"
reverse = false
webshare = true
[[sharing.providers]]
name = "LinkedIn"
url = "https://www.linkedin.com/sharing/share-offsite/?url={url}"
icon = "fab linkedin"
weight = 10
[[sharing.providers]]
name = "Twitter"
url = "https://twitter.com/home?status={url}"
icon = "fab x-twitter"
weight = 20
[[sharing.providers]]
name = "Facebook"
url = "https://www.facebook.com/sharer.php?u={url}"
icon = "fab facebook"
weight = 30
[[sharing.providers]]
name = "WhatsApp"
url = "whatsapp://send?text={title}%20{url}"
icon = "fab whatsapp"
weight = 40
[[sharing.providers]]
name = "email"
url = "{url}"
icon = "fas link"
weight = 50
clipboard = true
[sections]
[sections.blog]
title = "Blog"
sort = "date"
reverse = true
cols = 3
color = ""
padding = "0"
header = "full"
footer = "none"
orientation = "stacked"
style = "border-0 card-zoom"
homepage = 3
separator = true
[sections.projects]
title = "Projects"
layout = "card"
sort = "title"
reverse = false
nested = true
cols = 1
background = "body-tertiary"
color = "body"
padding = "3"
header = "none"
footer = "tags"
orientation = "horizontal"
style = "border-1 card-emphasize"
homepage = 3
separator = false
[favicon]
logo = "img/favicon.png"
sizes = [16, 32, 48]
# toml-docs-start theme-colors
[style]
primary = "#d43900"
secondary = "#6c757d"
success = "#198754"
info = "#0dcaf0"
warning = "#ffc107"
danger = "#dc3545"
light = "#f8f9fa"
dark = "#212529"
themeOpacity = "10"
themeFont = "Inter"
# themeFontPath = "https://fonts.googleapis.com/css2?family=Inter:wght@200;300;600&display=swap" # external path
themeFontPath = "/fonts" # local path
purge = true
# toml-docs-end theme-colors
[schema]
type = "Organization"
name = "Hinode"
locale = "en-US"
# twitter = "https://twitter.com/gethinode"
# linkedIn = ""
github = "https://github.com/gethinode/hinode"
section = "blog"
[author]
name = "Mark Dumay"
# twitter = "https://twitter.com/markdumay"
linkedin = "https://www.linkedin.com/in/markdumay/"
github = "https://github.com/markdumay"
[logo]
url = "img/logo512x512.png"
width = 512
height = 512
[image]
url = "img/logo1280x640.png"
width = 1280
height = 640
[opengraph]
images = ["logo.png"]
locale = "en_US"
[comments]
enabled = false
repo = "" # Replace with your repository.
#issueTerm = "pathname" # pathname, url, title, og:title
#label = "comment"
# By default, light and dark mode correspond to github-light and github-dark, respectively.
# Optional values: github-light, github-dark, preferred-color-scheme, github-dark-orange, icy-dark, dark-blue, photon-dark.
#theme = ""
[links]
bs_badge_heading = "https://getbootstrap.com/docs/5.3/components/badge/#headings"
hinode_docs = "https://gethinode.com"
hugo_imaging = "https://gohugo.io/content-management/image-processing/#imaging-configuration"
mozilla_image = "https://developer.mozilla.org/en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images"
observatory = "https://observatory.mozilla.org/analyze/demo.gethinode.com"
pagespeed = "https://pagespeed.web.dev/report?url=https%3A%2F%2Fdemo.gethinode.com%2F"
utterances = "https://utteranc.es"
hinode = "https://gethinode.com"

View File

@@ -0,0 +1,43 @@
# toml-docs-start server-config
[[headers]]
for = '/**'
[headers.values]
Strict-Transport-Security = "max-age=31536000; includeSubDomains; preload"
X-Content-Type-Options = "nosniff"
X-XSS-Protection = "1; mode=block"
Content-Security-Policy = """\
default-src 'self'; \
script-src 'self' \
https://utteranc.es/client.js https://*.google-analytics.com https://*.googletagmanager.com; \
style-src 'self' https://utteranc.es https://fonts.googleapis.com https://www.youtube.com; \
object-src 'none'; \
base-uri 'self'; \
connect-src 'self'
https://*.google-analytics.com https://*.analytics.google.com https://*.googletagmanager.com; \
font-src 'self' https://fonts.gstatic.com; \
frame-src 'self' https://utteranc.es https://www.youtube-nocookie.com https://www.youtube.com; \
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' \
"""
X-Frame-Options = "SAMEORIGIN"
Referrer-Policy = "strict-origin"
Permissions-Policy = """\
geolocation=(), \
midi=(), \
sync-xhr=(), \
microphone=(), \
camera=(), \
magnetometer=(), \
gyroscope=(), \
fullscreen=(), \
payment=() \
"""
cache-control = """\
max-age=0, \
no-cache, \
no-store, \
must-revalidate \
"""
Access-Control-Allow-Origin = "*"
# toml-docs-end server-config

View File

@@ -0,0 +1,14 @@
---
author: Mark Dumay
title: Welcome to Hinode!
thumbnail:
url: /img/sunrise.jpg
author: Harris Vo
authorURL: https://unsplash.com/@hoanvokim
origin: https://unsplash.com/photos/ZX6BPboJrYk
originName: Unsplash
---
A clean documentation and blog theme for your Hugo site based on Bootstrap 5.
{{< button href="about" >}}About{{< /button>}}

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-06-26
updated: 2023-08-02
showComments: false
---
@@ -12,17 +12,17 @@ showComments: false
<div class="container-fluid">
<div class="row justify-content-center text-center">
<div class="col-lg-4">
<i class="fa-brands fa-bootstrap fa-2xl"></i>
{{< icon fab bootstrap fa-2xl >}}
<h2 class="h4">Bootstrap framework</h2>
<p>Build fast, responsive sites with Bootstrap 5. Easily customize your site with the source Sass files.</p>
</div>
<div class="col-lg-4">
<i class="fa-solid fa-magnifying-glass fa-2xl"></i>
{{< icon fas magnifying-glass fa-2xl >}}
<h2 class="h4">Full text search</h2>
<p>Search your site with FlexSearch, a full-text search library with zero dependencies.</p>
</div>
<div class="col-lg-4">
<i class="fa-solid fa-code fa-2xl"></i>
{{< icon fas code fa-2xl >}}
<h2 class="h4">Development tools</h2>
<p>Use Node Package Manager to automate the build process and to keep track of dependencies.</p>
</div>

View File

@@ -1,12 +1,15 @@
---
author: Mark Dumay
title: Bootstrap elements
date: 2023-05-20
date: 2023-08-05
description: Use shortcodes to add common Bootstrap elements with ease.
tags: ["bootstrap", "shortcode"]
thumbnail: img/boots.jpg
photoCredits: <a href="https://unsplash.com/@nate_dumlao">Nathan Dumlao</a>
photoSource: <a href="https://unsplash.com/photos/QLPWQvHvmII">Unsplash</a>
thumbnail:
url: img/boots.jpg
author: Nathan Dumlao
authorURL: https://unsplash.com/@nate_dumlao
origin: Unsplash
originURL: https://unsplash.com/photos/QLPWQvHvmII
---
Hinode provides several shortcodes that wrap common Bootstrap components. Refer to the [official documentation]({{< param "links.hinode_docs" >}}) for more details.
@@ -170,6 +173,28 @@ Use the `docs` shortcode to display the content of a `js`, `scss` or `toml` file
{{< docs name="theme-colors" file="config/_default/params.toml" >}}
## Example
Use the `example` shortcode to display a code example and to render a preview of the same input.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* command */>}}
export MY_VAR=123
{{</* /command */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## File
Use the `file` shortcode to print and highlight the full content of a given input file.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* file path="./config/_default/languages.toml" id="file-collapse-1" */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Icon
As an example, the following shortcodes show a square check, a brand logo, and a circle check.

View File

@@ -4,9 +4,12 @@ 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>
thumbnail:
url: img/puzzle.jpg
author: Ryoji Iwata
authorURL: https://unsplash.com/@ryoji__iwata
origin: Unsplash
originURL: https://unsplash.com/photos/5siQcvSxCP8
modules: ["katex", "leaflet"]
---

View File

@@ -4,9 +4,12 @@ title: First post
date: 2022-10-01
description: This is my first blog post.
tags: ["blog"]
thumbnail: img/notepad.jpg
photoCredits: <a href="https://unsplash.com/@frederickjmedina">Frederick Medina</a>
photoSource: <a href="https://unsplash.com/photos/PdfRE-xB--s">Unsplash</a>
thumbnail:
url: img/notepad.jpg
author: Frederick Medina
authorURL: https://unsplash.com/@frederickjmedina
origin: Unsplash
originURL: https://unsplash.com/photos/PdfRE-xB--s
---
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque vulputate, ante in luctus congue, leo risus semper justo, vel consequat sapien lectus quis ipsum. In imperdiet urna justo. Nulla vel pellentesque ipsum. Cras congue feugiat dolor ac aliquam. Pellentesque eget dui venenatis, ultrices urna ac, vehicula nibh. Curabitur est lectus, dapibus eu vehicula non, malesuada et dui. Nam enim nulla, egestas et nunc non, elementum aliquet justo. Mauris euismod mauris sapien, eget vestibulum odio dictum sit amet. Morbi nisl elit, placerat at auctor in, finibus ac neque. Curabitur placerat feugiat risus non vestibulum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque quis cursus est, nec posuere libero.

View File

@@ -4,9 +4,12 @@ title: Fourth post
date: 2023-01-01
description: This is my fourth blog post.
tags: ["blog"]
thumbnail: img/flowers.jpg # https://picsum.photos/id/106/2592/1728
photoCredits: <a href="https://unsplash.com/@flutterhappy">Arvee Marie</a>
photoSource: <a href="https://unsplash.com/photos/YnfGtpt2gf4">Unsplash</a>
thumbnail:
url: img/flowers.jpg
author: Arvee Marie
authorURL: https://unsplash.com/@flutterhappy
origin: Unsplash
originURL: https://unsplash.com/photos/YnfGtpt2gf4
---
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam finibus libero in felis accumsan, vitae imperdiet metus vehicula. Quisque nec dignissim purus. In id dui porta sapien posuere viverra nec vel nisi. Sed varius tincidunt lectus, quis sagittis felis interdum id. Proin purus odio, ultrices auctor libero convallis, volutpat gravida turpis. Ut commodo metus orci, quis sagittis lectus rhoncus non. Nulla et lectus tortor. Suspendisse quam felis, molestie non odio quis, consequat venenatis orci. Etiam sed turpis sit amet elit scelerisque imperdiet. Sed suscipit felis non nibh suscipit egestas. Nulla sodales libero non rhoncus consequat. Nunc in elit at est cursus congue ut ac velit. Cras luctus libero augue, id semper sapien volutpat ultrices.

View File

@@ -4,9 +4,12 @@ title: Second post
date: 2022-11-01
description: This is my second blog post.
tags: ["blog"]
thumbnail: img/phone.jpg # https://picsum.photos/id/160/3200/2119
photoCredits: <a href="https://unsplash.com/@thomweerd">Thom</a>
photoSource: <a href="https://unsplash.com/photos/Zdcq3iKly6g">Unsplash</a>
thumbnail:
url: img/phone.jpg
author: Thom
authorURL: https://unsplash.com/@thomweerd
origin: Unsplash
originURL: https://unsplash.com/photos/Zdcq3iKly6g
---
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non sollicitudin sapien. Ut porttitor lectus eu tempor ultricies. Sed semper tincidunt nibh pellentesque condimentum. Vivamus dictum sem eu rhoncus semper. Vestibulum convallis congue tincidunt. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Mauris magna urna, egestas sit amet ligula quis, viverra semper arcu. Praesent laoreet nunc vitae nulla posuere facilisis.

View File

@@ -4,9 +4,12 @@ title: Third post
date: 2022-12-01
description: This is my third blog post.
tags: ["blog"]
thumbnail: https://picsum.photos/id/184/4288/2848.jpg
photoCredits: <a href="https://unsplash.com/@timdegroot">Tim de Groot</a>
photoSource: <a href="https://unsplash.com/photos/yNGQ830uFB4">Unsplash</a>
thumbnail:
url: https://picsum.photos/id/184/4288/2848.jpg
author: Tim de Groot
authorURL: https://unsplash.com/@timdegroot
origin: Unsplash
originURL: https://unsplash.com/photos/yNGQ830uFB4
---
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent id scelerisque ligula. Vestibulum eu lorem tortor. Suspendisse tristique ultrices mauris, non maximus lorem faucibus in. Suspendisse sagittis eleifend dapibus. Curabitur dignissim luctus sapien eu consequat. Proin congue dui vel ipsum bibendum varius. Pellentesque cursus nisi metus, egestas eleifend ipsum sollicitudin vitae. Sed vitae erat elementum, semper turpis sed, molestie nulla.

View File

@@ -0,0 +1,14 @@
---
author: Mark Dumay
title: Welkom bij Hinode!
thumbnail:
url: /img/sunrise.jpg
author: Harris Vo
authorURL: https://unsplash.com/@hoanvokim
origin: https://unsplash.com/photos/ZX6BPboJrYk
originName: Unsplash
---
Een documentatie en blog thema voor Hugo gebaseerd op Bootstrap 5.
{{< button href="over-mij" >}}Over mij{{< /button>}}

View File

@@ -3,7 +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
updated: 2023-08-02
showComments: false
---
@@ -14,17 +14,17 @@ showComments: false
<div class="row justify-content-center text-center">
<div class="row justify-content-center text-center">
<div class="col-lg-4">
<i class="fa-brands fa-bootstrap fa-2xl"></i>
{{< icon fab bootstrap fa-2xl >}}
<h2 class="h4">Bootstrap raamwerk</h2>
<p>Bouw snelle websites geschikt voor mobiele en desktop schermen met Bootstrap 5. Pas de site eenvoudig aan met bronbestanden in Sass.</p>
</div>
<div class="col-lg-4">
<i class="fa-solid fa-magnifying-glass fa-2xl"></i>
{{< icon fas magnifying-glass fa-2xl >}}
<h2 class="h4">Volledig doorzoekbaar</h2>
<p>Doorzoek je site met FlexSearch, een software bibliotheek zonder afhankelijkheden.</p>
</div>
<div class="col-lg-4">
<i class="fa-solid fa-code fa-2xl"></i>
{{< icon fas code fa-2xl >}}
<h2 class="h4">Ontwikkelgereedschap</h2>
<p>Gebruik Node Package Manager om het bouwproces inclusief versiebeheer volledig te automatiseren.</p>
</div>

View File

@@ -2,12 +2,15 @@
author: Mark Dumay
title: Bootstrap elementen
slug: bootstrap-elementen
date: 2023-02-17
date: 2023-08-05
description: Gebruik shortcodes om eenvoudig Bootstrap elementen toe te voegen.
tags: ["bootstrap", "shortcode"]
thumbnail: img/boots.jpg
photoCredits: <a href="https://unsplash.com/@nate_dumlao">Nathan Dumlao</a>
photoSource: <a href="https://unsplash.com/photos/QLPWQvHvmII">Unsplash</a>
thumbnail:
url: img/boots.jpg
author: Nathan Dumlao
authorURL: https://unsplash.com/@nate_dumlao
origin: Unsplash
originURL: https://unsplash.com/photos/QLPWQvHvmII
---
Hinode beschikt over meerdere shortcodes om eenvoudig Bootstrap elementen toe te voegen aan je website. De [officiële documentatie]({{< param "links.hinode_docs" >}}) bevat meer details.
@@ -171,6 +174,28 @@ Gebruik de volgende shortcode om de inhoud van een `toml` of `scss` bestand te t
{{< docs name="theme-colors" file="config/_default/params.toml" >}}
## Example
Gebruik de `example` shortcode om zowel de input als een voorbeeld van code te tonen.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* command */>}}
export MY_VAR=123
{{</* /command */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## File
Gebruik de `file` shortcode om de volledige inhoud van een bestand te tonen, inclusief taalafhankelijke opmaak.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* file path="./config/_default/languages.toml" id="file-collapse-1" */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Icon
De volgende shortcodes tonen drie verschillende iconen:

View File

@@ -5,9 +5,12 @@ 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>
thumbnail:
url: img/puzzle.jpg
author: Ryoji Iwata
authorURL: https://unsplash.com/@ryoji__iwata
origin: Unsplash
originURL: https://unsplash.com/photos/5siQcvSxCP8
modules: ["katex", "leaflet"]
---
@@ -35,3 +38,5 @@ De volgende shortcode toont een interactieve kaart van Amsterdam.
{{</* map lat=52.377 long=4.90 zoom=13 popup="Amsterdam CS" popup-lat=52.378062 popup-long=4.900562 */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
[bar]({{< param "links" >}})

View File

@@ -5,9 +5,12 @@ slug: eerste-artikel
date: 2022-10-01
description: Dit is mijn eerste artikel.
tags: ["blog"]
thumbnail: img/notepad.jpg
photoCredits: <a href="https://unsplash.com/@frederickjmedina">Frederick Medina</a>
photoSource: <a href="https://unsplash.com/photos/PdfRE-xB--s">Unsplash</a>
thumbnail:
url: img/notepad.jpg
author: Frederick Medina
authorURL: https://unsplash.com/@frederickjmedina
origin: Unsplash
originURL: https://unsplash.com/photos/PdfRE-xB--s
---
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque vulputate, ante in luctus congue, leo risus semper justo, vel consequat sapien lectus quis ipsum. In imperdiet urna justo. Nulla vel pellentesque ipsum. Cras congue feugiat dolor ac aliquam. Pellentesque eget dui venenatis, ultrices urna ac, vehicula nibh. Curabitur est lectus, dapibus eu vehicula non, malesuada et dui. Nam enim nulla, egestas et nunc non, elementum aliquet justo. Mauris euismod mauris sapien, eget vestibulum odio dictum sit amet. Morbi nisl elit, placerat at auctor in, finibus ac neque. Curabitur placerat feugiat risus non vestibulum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque quis cursus est, nec posuere libero.

View File

@@ -5,9 +5,12 @@ slug: vierde-artikel
date: 2023-01-01
description: Dit is mijn vierde artikel.
tags: ["blog"]
thumbnail: img/flowers.jpg # https://picsum.photos/id/106/2592/1728
photoCredits: <a href="https://unsplash.com/@flutterhappy">Arvee Marie</a>
photoSource: <a href="https://unsplash.com/photos/YnfGtpt2gf4">Unsplash</a>
thumbnail:
url: img/flowers.jpg
author: Arvee Marie
authorURL: https://unsplash.com/@flutterhappy
origin: Unsplash
originURL: https://unsplash.com/photos/YnfGtpt2gf4
---
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam finibus libero in felis accumsan, vitae imperdiet metus vehicula. Quisque nec dignissim purus. In id dui porta sapien posuere viverra nec vel nisi. Sed varius tincidunt lectus, quis sagittis felis interdum id. Proin purus odio, ultrices auctor libero convallis, volutpat gravida turpis. Ut commodo metus orci, quis sagittis lectus rhoncus non. Nulla et lectus tortor. Suspendisse quam felis, molestie non odio quis, consequat venenatis orci. Etiam sed turpis sit amet elit scelerisque imperdiet. Sed suscipit felis non nibh suscipit egestas. Nulla sodales libero non rhoncus consequat. Nunc in elit at est cursus congue ut ac velit. Cras luctus libero augue, id semper sapien volutpat ultrices.

View File

@@ -5,9 +5,12 @@ slug: tweede-artikel
date: 2022-11-01
description: Dit is mijn tweede artikel.
tags: ["blog"]
thumbnail: img/phone.jpg # https://picsum.photos/id/160/3200/2119
photoCredits: <a href="https://unsplash.com/@thomweerd">Thom</a>
photoSource: <a href="https://unsplash.com/photos/Zdcq3iKly6g">Unsplash</a>
thumbnail:
url: img/phone.jpg
author: Thom
authorURL: https://unsplash.com/@thomweerd
origin: Unsplash
originURL: https://unsplash.com/photos/Zdcq3iKly6g
---
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non sollicitudin sapien. Ut porttitor lectus eu tempor ultricies. Sed semper tincidunt nibh pellentesque condimentum. Vivamus dictum sem eu rhoncus semper. Vestibulum convallis congue tincidunt. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Mauris magna urna, egestas sit amet ligula quis, viverra semper arcu. Praesent laoreet nunc vitae nulla posuere facilisis.

View File

@@ -5,9 +5,12 @@ slug: derde-artikel
date: 2022-12-01
description: Dit is mijn derde artikel.
tags: ["blog"]
thumbnail: https://picsum.photos/id/184/4288/2848.jpg
photoCredits: <a href="https://unsplash.com/@timdegroot">Tim de Groot</a>
photoSource: <a href="https://unsplash.com/photos/yNGQ830uFB4">Unsplash</a>
thumbnail:
url: https://picsum.photos/id/184/4288/2848.jpg
author: Tim de Groot
authorURL: https://unsplash.com/@timdegroot
origin: Unsplash
originURL: https://unsplash.com/photos/yNGQ830uFB4
---
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent id scelerisque ligula. Vestibulum eu lorem tortor. Suspendisse tristique ultrices mauris, non maximus lorem faucibus in. Suspendisse sagittis eleifend dapibus. Curabitur dignissim luctus sapien eu consequat. Proin congue dui vel ipsum bibendum varius. Pellentesque cursus nisi metus, egestas eleifend ipsum sollicitudin vitae. Sed vitae erat elementum, semper turpis sed, molestie nulla.

11
exampleSite/go.mod Normal file
View File

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

10
exampleSite/go.sum Normal file
View File

@@ -0,0 +1,10 @@
github.com/gethinode/mod-bootstrap v1.1.1 h1:Tx4M5hGVOFrEaxnUONDAm6N9xuRi5UphKlT7F26HujU=
github.com/gethinode/mod-bootstrap v1.1.1/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
github.com/gethinode/mod-flexsearch v1.2.0 h1:SSMpWzK9SMbi9QRYfil9PJZLLWWLHWzlTc69UxtSWAA=
github.com/gethinode/mod-flexsearch v1.2.0/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
github.com/gethinode/mod-fontawesome v1.2.4 h1:SqE3CQ+boaBIhrVh3MPu4nz0uoHPfEH5t60nNY1CfsI=
github.com/gethinode/mod-fontawesome v1.2.4/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
github.com/gethinode/mod-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.3.4 h1:oY+YQ0JiJuhFQNrk9XgFdg0NMsTUQPXNfnILp4ia4r4=
github.com/gethinode/mod-leaflet v0.3.4/go.mod h1:uGggt87x4Fw7wBoJpSiUvNkYg+s/Ujne7klAX2rxMRk=

8
go.mod
View File

@@ -3,9 +3,9 @@ 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-bootstrap v1.1.1 // indirect
github.com/gethinode/mod-flexsearch v1.2.0 // indirect
github.com/gethinode/mod-fontawesome v1.2.4 // indirect
github.com/gethinode/mod-katex v1.0.2 // indirect
github.com/gethinode/mod-leaflet v0.3.1 // indirect
github.com/gethinode/mod-leaflet v0.3.4 // indirect
)

22
go.sum
View File

@@ -2,18 +2,36 @@ github.com/gethinode/mod-bootstrap v1.0.1 h1:NDZar+UEL42YHCvzzO+jVgqkZU5INA12Bpj
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-bootstrap v1.1.1 h1:Tx4M5hGVOFrEaxnUONDAm6N9xuRi5UphKlT7F26HujU=
github.com/gethinode/mod-bootstrap v1.1.1/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-flexsearch v1.1.2 h1:vA/jHxLq9xxkYGS9cmAoLNIkEBW+iLVCcQ8qKyEa+R4=
github.com/gethinode/mod-flexsearch v1.1.2/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
github.com/gethinode/mod-flexsearch v1.1.3 h1:lzmSvnJL6ABjp03avYzSvJJ7hw01CpHap1JGUbDIELg=
github.com/gethinode/mod-flexsearch v1.1.3/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
github.com/gethinode/mod-flexsearch v1.1.4 h1:dJvwBxYlLe/VGlctLn8k89STJ5toATIjNnXIlNeanOY=
github.com/gethinode/mod-flexsearch v1.1.4/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
github.com/gethinode/mod-flexsearch v1.2.0 h1:SSMpWzK9SMbi9QRYfil9PJZLLWWLHWzlTc69UxtSWAA=
github.com/gethinode/mod-flexsearch v1.2.0/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
github.com/gethinode/mod-fontawesome v1.0.2 h1:ZSK6D20/w4y5GnfYfTBB58uHD0ChIfkpKfRGwioS9rg=
github.com/gethinode/mod-fontawesome v1.0.2/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
github.com/gethinode/mod-fontawesome v1.1.0 h1:rsDzUI+3ZlS/do2ff3ne8/z3KwHeysmuA+WsXlumXXk=
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-fontawesome v1.2.1 h1:k7z5ZRsNxCohZjlZm8jVAzmTPk17c6xMYBAjAXHs13I=
github.com/gethinode/mod-fontawesome v1.2.1/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
github.com/gethinode/mod-fontawesome v1.2.2 h1:rA9EtuE/LeFQmKSA7ampfUknxsR1mu7hpi4wpA89gX8=
github.com/gethinode/mod-fontawesome v1.2.2/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
github.com/gethinode/mod-fontawesome v1.2.3 h1:RHWd+E72+m29xaC45m/3CF35C201jehw0dcozVBdPrI=
github.com/gethinode/mod-fontawesome v1.2.3/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
github.com/gethinode/mod-fontawesome v1.2.4 h1:SqE3CQ+boaBIhrVh3MPu4nz0uoHPfEH5t60nNY1CfsI=
github.com/gethinode/mod-fontawesome v1.2.4/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
github.com/gethinode/mod-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=
@@ -24,3 +42,7 @@ github.com/gethinode/mod-leaflet v0.2.3 h1:QQI4h+IH0jZ7fx4q0um2YIEiYBoW3OAfW8qHz
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=
github.com/gethinode/mod-leaflet v0.3.3 h1:isnjja6VRFvVWBatYSouh46TXSJg2C4/E2BQTrQw+yI=
github.com/gethinode/mod-leaflet v0.3.3/go.mod h1:uGggt87x4Fw7wBoJpSiUvNkYg+s/Ujne7klAX2rxMRk=
github.com/gethinode/mod-leaflet v0.3.4 h1:oY+YQ0JiJuhFQNrk9XgFdg0NMsTUQPXNfnILp4ia4r4=
github.com/gethinode/mod-leaflet v0.3.4/go.mod h1:uGggt87x4Fw7wBoJpSiUvNkYg+s/Ujne7klAX2rxMRk=

View File

@@ -37,6 +37,8 @@
translation: "Wörter"
- id: copyright
translation: "Copyright"
- id: rights
translation: "Alle Rechte vorbehalten"
- id: photoBy
translation: "Foto von"
- id: photoOn
@@ -89,6 +91,9 @@
- id: home
translation: "Startseite"
- id: poweredBy
translation: "Ermöglicht durch {{ . }}."
# Staticman
- id: noComment
translation: "Kein Kommentar"

View File

@@ -45,6 +45,8 @@
translation: "words"
- id: copyright
translation: "Copyright"
- id: rights
translation: "All rights reserved"
- id: photoBy
translation: "Photo by"
- id: photoOn
@@ -118,6 +120,9 @@
- id: home
translation: "Home"
- id: poweredBy
translation: "Powered by {{ . }}."
# Staticman
- id: noComment
translation: "No comment"
@@ -138,7 +143,7 @@
- id: show
translation: "Show"
- id: comments
translation: "comments"
translation: "Comments"
# Related posts
- id: seeAlso

View File

@@ -37,6 +37,8 @@
translation: "woorden"
- id: copyright
translation: "Copyright"
- id: rights
translation: "Alle rechten voorbehouden"
- id: photoBy
translation: "Foto van"
- id: photoOn
@@ -109,6 +111,9 @@
- id: home
translation: "Home"
- id: poweredBy
translation: "Mede mogelijk gemaakt door {{ . }}."
# Staticman
- id: noComment
translation: "Geen commentaar"
@@ -129,7 +134,7 @@
- id: show
translation: "Tonen"
- id: comments
translation: "commentaar"
translation: "Reacties"
# Related posts
- id: seeAlso

View File

@@ -2,7 +2,7 @@
<div class="container-xxl flex-fill d-flex align-content-center flex-wrap">
<div class="w-100 text-center">
<span class="text-secondary fw-bold">
<i class="fa-regular fa-face-frown fa-10x"></i>
{{ partial "assets/icon.html" (dict "icon" "fa face-frown fa-10x") }}
<p class="display-1 mt-3 fw-bold">404</p>
<p class="fs-3">{{ T "pageNotFoundTitle" }}</p>
</span>

View File

@@ -1,5 +1,5 @@
{{ if site.Params.navigation.anchor }}
<h{{ .Level }} id="{{ .Anchor | safeURL }}" class="heading">{{ .Text | safeHTML }} <a href="#{{ .Anchor | safeURL }}"><i class="fa-solid fa-link anchor"></i></a></h{{ .Level }}>
<h{{ .Level }} id="{{ .Anchor | safeURL }}" class="heading">{{ .Text | safeHTML }} <a href="#{{ .Anchor | safeURL }}">{{- partial "assets/icon.html" (dict "icon" "fas link anchor") }}</a></h{{ .Level }}>
{{ else }}
<h{{ .Level }} id="{{ .Anchor | safeURL }}">{{ .Text | safeHTML }}</h{{ .Level }}>
{{ end }}

View File

@@ -12,6 +12,10 @@
{{- end -}}
{{- end -}}
{{- if and .IsPage (not (in .Site.Params.modules.core "bootstrap")) -}}
{{- errorf "Bootstrap is a required module, please add it to 'modules.core' in your site parameters" -}}
{{- end -}}
<!doctype html>
<html lang="{{ .Site.Language.Lang }}" class="no-js">
<head>
@@ -19,9 +23,7 @@
</head>
<body>
{{- if site.Params.main.enableDarkMode -}}
{{- partial "footer/scripts.html" (dict "filename" "js/critical.bundle.js" "match" "js/critical/**.js" "header" true "page" .) -}}
{{- end -}}
<div class="d-flex flex-column min-vh-100{{ if and .IsHome .Site.Params.home.style }} {{ .Site.Params.home.style }}{{ end }}">
<div class="{{ if .Site.Params.navigation.fixed }}mb-4{{ end }}">
{{- partial "assets/navbar.html" (dict

View File

@@ -4,7 +4,7 @@
"section" .Type
"home" false
"nested" .Params.Nested
"title" .Title
"title" (or .Title .Type)
"description" .Description
"content" .Content
"paginate" true)

View File

@@ -47,10 +47,40 @@
{{- end -}}
{{ if not (in (slice "docs" "minimal") .Layout) }}
{{ if .Params.thumbnail -}}
{{- $thumbnail := "" -}}
{{- $credits := "" -}}
{{- if .Params.photoCredits }}{{ if .Params.PhotoSource }}{{ $credits = printf "%s %s %s %s" (T "photoBy") .Params.photoCredits (T "photoOn") .Params.PhotoSource }}{{ end }}{{ end -}}
{{- partial "assets/image.html" (dict "url" .Params.thumbnail "ratio" "21x9" "outerClass" "img-wrap" "innerClass" "rounded" "title" .Params.title "caption" $credits) -}}
{{- if reflect.IsMap .Params.Thumbnail -}}
{{- $thumbnail = .Params.Thumbnail.url -}}
{{- $author := "" -}}
{{- if and .Params.Thumbnail.authorURL "text" .Params.Thumbnail.author }}
{{- $author = partial "utilities/link" (dict "destination" .Params.Thumbnail.authorURL "text" .Params.Thumbnail.author) -}}
{{- else if .Params.Thumbnail.author }}
{{- $author = .Params.Thumbnail.author -}}
{{- end -}}
{{- $origin := "" -}}
{{- if and .Params.Thumbnail.originURL "text" .Params.Thumbnail.origin }}
{{- $origin = partial "utilities/link" (dict "destination" .Params.Thumbnail.originURL "text" .Params.Thumbnail.origin) -}}
{{- else if .Params.Thumbnail.origin }}
{{- $origin = .Params.Thumbnail.origin -}}
{{- end }}
{{- if and $author $origin }}
{{ $credits = printf "%s %s %s %s" (T "photoBy") $author (T "photoOn") $origin }}
{{ else if $author }}
{{ $credits = printf "%s %s" (T "photoBy") $author }}
{{ end }}
{{ else }}
{{- $thumbnail = .Params.Thumbnail -}}
{{ if or .Params.photoCredits .Params.photoSource }}
{{ warnf "DEPRECATED: frontmatter variables `photoCredits` and `photoSource` have been deprecated in release v0.18: %s" .RelPermalink }}
{{ end }}
{{- if and .Params.photoCredits .Params.PhotoSource }}{{ $credits = printf "%s %s %s %s" (T "photoBy") .Params.photoCredits (T "photoOn") .Params.PhotoSource }}{{ end -}}
{{- end -}}
{{ if $thumbnail -}}
{{- partial "assets/image.html" (dict "url" $thumbnail "ratio" "21x9" "outerClass" "img-wrap" "innerClass" "rounded" "title" .Params.title "caption" $credits) -}}
{{ end -}}
{{ end }}
{{ .Content }}
@@ -67,7 +97,8 @@
{{ with .NextInSection -}}
{{ $next := . -}}
{{ with .OutputFormats.Get "html" -}}
<a class="next" href="{{ $next.Permalink }}"><i class="fas fa-arrow-left"></i> {{ $next.Title }}</a>
<a class="next" href="{{ $next.RelPermalink }}">
{{- partial "assets/icon.html" (dict "icon" "fas arrow-left") }}&nbsp;{{ $next.Title }}</a>
{{- end -}}
{{ end -}}
</div>
@@ -75,7 +106,7 @@
{{ with .PrevInSection -}}
{{ $prev := . -}}
{{ with .OutputFormats.Get "html" -}}
<a class="previous" href="{{ $prev.Permalink }}">{{ $prev.Title }} <i class="fas fa-arrow-right"></i></a>
<a class="previous" href="{{ $prev.RelPermalink }}">{{ $prev.Title }}&nbsp;{{- partial "assets/icon.html" (dict "icon" "fas arrow-right") }}</a>
{{- end -}}
{{ end -}}
</div>

View File

@@ -7,10 +7,10 @@
{{ $square150 := .Resize "150x150 CatmullRom" }}
{{ $wide310 := .Fill "310x150 CatmullRom" }}
{{ $square310 := .Resize "310x310 CatmullRom" }}
<square70x70logo src="{{ $square70.Permalink }}" />
<square150x150logo src="{{ $square150.Permalink }}" />
<wide310x150logo src="{{ $wide310.Permalink }}" />
<square310x310logo src="{{ $square310.Permalink }}" />
<square70x70logo src="{{ $square70.RelPermalink }}" />
<square150x150logo src="{{ $square150.RelPermalink }}" />
<wide310x150logo src="{{ $wide310.RelPermalink }}" />
<square310x310logo src="{{ $square310.RelPermalink }}" />
{{ end }}
<TileColor>#000000</TileColor>
</tile>

View File

@@ -4,17 +4,23 @@
{{- define "main" -}}
{{- $page := . -}}
{{- $sections := site.Params.home.sections -}}
{{- if not $sections -}}
{{ range $section := site.Sections }}
{{ $sections = $sections | append $section.Type }}
{{ end }}
{{- end -}}
{{- range $index, $section := site.Params.home.sections -}}
{{- range $index, $section := $sections -}}
{{- $sectionPage := site.GetPage "section" $section -}}
{{- $sectionURL := $sectionPage.RelPermalink -}}
{{- $title := $sectionPage.Title -}}
{{- $thumbnail := $sectionPage.Params.Thumbnail -}}
{{- $title := or $sectionPage.Title $sectionPage.Type -}}
{{- $thumbnail := (or (and (reflect.IsMap $sectionPage.Params.Thumbnail) $sectionPage.Params.Thumbnail.url) $sectionPage.Params.Thumbnail) -}}
{{- $icon := $sectionPage.Params.Icon -}}
{{- $description := $sectionPage.Description -}}
{{- $content := $sectionPage.Content -}}
{{- $moreTitle := (T (printf "more%s" (strings.FirstUpper $section))) -}}
{{- $sectionTitle := strings.FirstUpper $sectionPage.Type -}}
{{- $moreTitle := T (printf "more%s" $sectionTitle) }}
{{- $moreTitle = or $moreTitle (printf (T "more" (pluralize $sectionTitle))) -}}
{{- partial "assets/section-list.html" (dict
"page" $page

View File

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

View File

@@ -22,6 +22,11 @@
"between", "around", or "evenly".
"toast" Optional id of the toast to display when the button is clicked.
"clipboard" Optional text to be copied to the clipboard when the button is clicked.
"cue" Optional flag to indicate if an external link should show a visual cue, defaults to setting
"main.externalLinks.cue" in the site's parameters.
"tab" Optional flag to indicate if an external link should open in a new tab, defaults to setting
"main.externalLinks.tab" in the site's parameters.
"attributes" Optional dictionary of key-value pairs added as custom attributes to the button element ('<a>').
-->
{{- $title := trim .title " \r\n" -}}
@@ -95,6 +100,7 @@
{{- end -}}
{{- $class := .class }}
{{ with $badge }}{{ $class = printf "%s me-3" $class }}{{ end }}
{{- $order := "last" -}}
{{- with .order }}{{ $order = . }}{{ end -}}
@@ -113,8 +119,29 @@
{{- $toast := .toast -}}
{{- $clipboard := .clipboard -}}
{{- $cue := .cue | default site.Params.main.externalLinks.cue -}}
{{- $tab := .tab | default site.Params.main.externalLinks.tab -}}
{{- $isExternal := ne (urls.Parse (absURL $href)).Host (urls.Parse site.BaseURL).Host -}}
{{- $target := "" -}}
{{- $rel := "" -}}
{{- if $isExternal -}}
{{- if $tab -}}
{{- $target = "_blank" -}}
{{- $rel = "noopener noreferrer" -}}
{{- end -}}
{{- if and $title $cue -}}
{{ $suffix := partial "assets/icon.html" (dict "icon" "fas up-right-from-square fa-2xs") }}
{{- $title = printf "%s&nbsp;%s" $title $suffix | safeHTML -}}
{{- end -}}
{{- end -}}
{{- $attributes := .attributes -}}
<a aria-label="{{ $title }}" {{ if ne $state "disabled" }}{{ with $href }}href="{{ . }}"{{ end }}{{ end }}
{{ with $id }}id="{{ . }}"{{ end }}
{{ with $target }}target="{{ . }}"{{ end }}{{ with $rel }} rel="{{ . }}"{{ end }}
{{ with $toast }}data-toast-target="{{ $toast }}"{{ end }}
{{ with $clipboard }}data-clipboard="{{ $clipboard }}"{{ end }}
{{ if eq $type "button" }}class="btn btn-{{ if $outline }}outline-{{ end }}{{ $color }} {{ if ne $size "md"}}btn-{{ $size }}{{ end }} position-relative {{ if in (slice "disabled" "active") $state }}{{ $state }}{{ end }} {{ $class }}"
@@ -124,11 +151,14 @@
{{ with $collapse }}data-bs-toggle="collapse" aria-expanded="false" aria-controls="{{ . }}"{{ end }}
{{ if eq $state "active" }}data-bs-toggle="button" aria-pressed="true"{{ end }}
{{ if eq $state "inactive" }}data-bs-toggle="button" aria-pressed="false"{{ end }}
{{ range $key, $val := $attributes }}
{{ print $key | safeHTMLAttr }}="{{ $val }}"
{{ end }}
>
<div class="d-flex justify-content-{{ $justify }}">
<div>{{ $title }}</div>
{{- with $icon }}<div class="align-self-center{{ if eq $order "first" }} order-first pe-1{{ else }} ps-1{{ end }}">{{ partial "assets/icon.html" (dict "icon" $icon) }}</div>{{ end }}
<div class="my-auto">{{ $title }}</div>
{{- with $icon }}<div class="align-self-center{{ if $title }}{{ if eq $order "first" }} order-first pe-1{{ else }} ps-1{{ end }}{{ end }}">{{ partial "assets/icon.html" (dict "icon" $icon) }}</div>{{ end }}
</div>
{{- with $badge }}

View File

@@ -107,14 +107,15 @@
"orientation" $orientation
) -}}
{{- if $element.Permalink -}}
{{- if $element.RelPermalink -}}
{{- $params = merge $params (dict "path" $element.File.Path) -}}
{{- else -}}
{{- $thumbnail := (or (and (reflect.IsMap $element.Params.Thumbnail) $element.Params.Thumbnail.url) $element.Params.Thumbnail) -}}
{{- $params = merge $params (dict
"title" $element.Title
"href" $element.Permalink
"description" (or $element.Description $element.Content)
"thumbnail" $element.Params.thumbnail
"href" $element.RelPermalink
"description" (partial "utilities/GetDescription.html" $element)
"thumbnail" $thumbnail
"icon" $element.Params.icon
) -}}
{{- end -}}

View File

@@ -111,9 +111,9 @@
{{- with $page -}}
{{- if not $title }}{{ $title = .Title }}{{ end -}}
{{- if not $href }}{{ $href = .Permalink }}{{ end -}}
{{- if not $description }}{{ $description = .Description }}{{ end -}}
{{- if not $thumbnail }}{{ $thumbnail = .Params.thumbnail }}{{ end -}}
{{- if not $href }}{{ $href = .RelPermalink }}{{ end -}}
{{- if not $description }}{{ $description = partial "utilities/GetDescription.html" . }}{{ end -}}
{{- if not $thumbnail }}{{ $thumbnail = (or (and (reflect.IsMap .Params.Thumbnail) .Params.Thumbnail.url) .Params.Thumbnail) }}{{ end -}}
{{- if not $icon }}{{ $icon = .Params.icon }}{{ end -}}
{{- end -}}

View File

@@ -1,6 +1,6 @@
{{- $params := .Site.Params.comments -}}
{{- with $params -}}
<h2>Comments</h2>
<h2>{{ T "comments" }}</h2>
<script src="https://utteranc.es/client.js"
repo="{{ $params.repo }}"
issue-term="{{ default "pathname" $params.issueTerm }}"

View File

@@ -1,16 +0,0 @@
{{- $icon := .icon -}}
{{- if not $icon -}}
{{- errorf "partial [assets/icon.html] - Expected value for param 'icon'" -}}
{{- end -}}
{{- $icon_class := split $icon " " -}}
{{- $attr := delimit (after 1 $icon_class) " " -}}
{{- if eq (index $icon_class 0) "fas" -}}
<i class="fa-solid fa-{{ $attr}}"></i>
{{- else if eq (index $icon_class 0) "fab" -}}
<i class="fa-brands fa-{{ $attr }}"></i>
{{- else if eq (index $icon_class 0) "fa" -}}
<i class="fa-regular fa-{{ $attr }}"></i>
{{- else -}}
{{- errorf "partial [assets/icon.html] - Unrecognized icon class: %s" $icon_class -}}
{{- end -}}

View File

@@ -15,6 +15,7 @@
-->
{{- $validRatios := slice "1x1" "4x3" "16x9" "21x9" -}}
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
{{- $ratio := .ratio -}}
{{- $url := .url -}}
{{- $mode := false -}}
@@ -68,6 +69,7 @@
<!-- Generate a image set of type webp -->
{{- define "partials/image-scaled.html " -}}
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
{{- $img := .img -}}
{{- $ratio := .ratio -}}
{{- $imgset := "" -}}
@@ -98,7 +100,11 @@
{{- $scaled = $img.Fit (printf "%s webp" $dim) -}}
{{- end -}}
{{- $scaled = $scaled | resources.Copy (replace $img.RelPermalink $clean (printf "-%s.webp" $dim)) -}}
{{- if $absoluteURL -}}
{{- $imgset = printf "%s, %s %sw" $imgset $scaled.Permalink (index $widths $index) -}}
{{- else -}}
{{- $imgset = printf "%s, %s %sw" $imgset $scaled.RelPermalink (index $widths $index) -}}
{{- end -}}
{{- end -}}
{{- $imgset = strings.TrimPrefix ", " $imgset -}}
{{- end -}}
@@ -108,6 +114,7 @@
<!-- Define the img with optional caption -->
{{- define "partials/image-definition.html" -}}
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
{{- $ratio := .ratio -}}
{{- $url := .url -}}
{{- $outerClass := .outerClass -}}
@@ -125,7 +132,11 @@
{{- $img := partial "utilities/GetImage.html" (dict "url" $url) -}}
{{- if $img -}}
{{- $fallback := partial "partials/image-default.html" (dict "img" $img "ratio" $ratio) -}}
{{- if $absoluteURL -}}
{{- $fallbackURL = $fallback.Permalink -}}
{{- else -}}
{{- $fallbackURL = $fallback.RelPermalink -}}
{{- end -}}
{{- $imgset = partial "partials/image-scaled.html " (dict "img" $img "ratio" $ratio) -}}
{{- end -}}
{{- end -}}
@@ -145,7 +156,7 @@
srcset="{{ . }}"
sizes="100vw"
{{- end }}
src="{{ absURL $fallbackURL }}"
src="{{ $fallbackURL }}"
alt="{{ $title }}">
</div>
{{- if $caption -}}

View File

@@ -52,6 +52,7 @@
<div class="d-none d-md-block p-0">
{{- range $index, $item := $list -}}
{{- $odd := eq (mod $index 2) 1 -}}
{{- $thumbnail := (or (and (reflect.IsMap $item.Params.Thumbnail) $item.Params.Thumbnail.url) $item.Params.Thumbnail) -}}
<div class="container ratio-section d-flex flex-column">
<div class="row pt-5 pb-5 align-items-center flex-fill row-cols-2">
<div class="col-6{{ if $odd }} order-last{{ end }}">
@@ -60,7 +61,7 @@
{{- $style = "reveal fade-bottom-n5 rotate-n5 ps-3" -}}
{{- if $odd }}{{ $style = "reveal fade-bottom-5 rotate-5 pe-3" }}{{ end }}
{{ end }}
{{ partial "partials/list-img.html" (dict "thumbnail" $item.Params.Thumbnail "style" $style "mode" $item.Params.colormode) }}
{{ partial "partials/list-img.html" (dict "thumbnail" $thumbnail "style" $style "mode" $item.Params.colormode) }}
</div>
<div class="col-6{{ if $odd }} order-first{{ end }} psw-lg-5 p-5">
{{ partial "partials/list-content.html" (dict "title" $item.Title "content" (or $item.Description $item.Content)) }}
@@ -73,13 +74,14 @@
<div class="d-md-none">
{{- range $index, $item := $list -}}
{{- $odd := eq (mod $index 2) 1 -}}
{{- $thumbnail := (or (and (reflect.IsMap $item.Params.Thumbnail) $item.Params.Thumbnail.url) $item.Params.Thumbnail) -}}
<div class="container d-flex flex-column">
<div class="row pt-5 pb-5 align-items-center flex-fill row-cols-2">
<div class="col-12 text-center">
{{ partial "partials/list-img.html" (dict "thumbnail" $item.Params.Thumbnail "mode" $item.Params.colormode) }}
{{ partial "partials/list-img.html" (dict "thumbnail" $thumbnail "mode" $item.Params.colormode) }}
</div>
<div class="col-12 p-3">
{{ partial "partials/list-content.html" (dict "title" $item.Title "content" (or $item.Description $item.Content)) }}
{{ partial "partials/list-content.html" (dict "title" $item.Title "content" ($description = partial "utilities/GetDescription.html" $item)) }}
</div>
</div>
</div>

View File

@@ -93,14 +93,15 @@
{{ $header := $item.Title }}
{{ $body := $item.Content }}
{{ $show := eq $index 0}}
{{- $thumbnail := (or (and (reflect.IsMap $item.Params.Thumbnail) $item.Params.Thumbnail.url) $item.Params.Thumbnail) -}}
<div class="tab-pane{{ if $show }} active{{ end }}" id="nav-{{ $id }}-{{ $index }}" role="tabpanel" aria-labelledby="{{ $id }}-btn-{{ $index }}" tabindex="0">
{{- if eq $pane "persona" -}}
{{- partial "assets/persona.html" (dict
"title" $item.Title
"class" $class
"color" $color
"content" (or $item.Description $item.Content)
"thumbnail" $item.Params.Thumbnail
"content" (partial "utilities/GetDescription.html" $item)
"thumbnail" $thumbnail
) -}}
{{- else -}}
{{- (or $item.Description $item.Content) -}}

View File

@@ -9,12 +9,24 @@
{{- $isActive := hasPrefix $pageURL $menuURL -}}
{{- $isAlias := $menu.Params.alias -}}
{{- $isIcon := $menu.Params.icon -}}
{{- $cue := .cue | default site.Params.main.externalLinks.cue -}}
{{- $tab := .tab | default site.Params.main.externalLinks.tab -}}
{{- $url := urls.Parse $menuURL -}}
{{- $baseURL := urls.Parse $.Site.Params.Baseurl -}}
{{- $isExternal := ne $url.Host $baseURL.Host -}}
{{- $externalHref := "" }}
{{- if $isExternal }}{{ $externalHref = "target=\"_blank\" rel=\"noopener noreferrer\"" }}{{ end -}}
{{- $suffix := "" }}
{{- if $isExternal }}
{{- if $tab -}}
{{ $externalHref = "target=\"_blank\" rel=\"noopener noreferrer\"" }}
{{- end -}}
{{- if $cue -}}
{{ $suffix = partial "assets/icon.html" (dict "icon" "fas up-right-from-square fa-2xs") }}
{{- end -}}
{{ end -}}
{{- $mainNav := urlize (lower $menu.Name) -}}
{{- $childNav := "" -}}
@@ -40,9 +52,14 @@
{{ 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 -}}
{{- with $menu.Pre }}
{{ if hasPrefix . "<i" }}
{{ . | safeHTML }}
{{ else }}
{{ partial "assets/icon.html" (dict "icon" . )}}
{{ end }}
{{ end -}}
<span {{ if $isActive }} class="active"{{ end }}>{{ if not $isIcon }}{{ $menu.Name }}{{ end }}</span>
{{- with $menu.Post }}{{ . }}{{ end -}}
{{- if and $isExternal (not $isIcon)}} {{ partial "assets/icon.html" (dict "icon" "fas up-right-from-square fa-2xs") }}{{ end -}}
{{- if not $isIcon }}&nbsp;{{ $suffix }}{{ end -}}
</a>

View File

@@ -13,6 +13,7 @@
"logo" Optional address of the logo image, defaults to the parameter "logo" set in the "main" section of
the site's parameter configuration.
"title" Optional brand title, displayed when the logo is not set. Defaults to the site's title.
"class": Optional class attribute of the navbar container.
-->
<!-- Inline partial to render the color mode switcher -->
@@ -21,26 +22,26 @@
{{- $collapsed := .collapsed -}}
<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-color-theme">
{{- partial "assets/icon.html" (dict "icon" "fas sun theme-icon-active") }} {{ if $collapsed }} {{ T "colorMode" }} {{ end }}
<a class="nav-link dropdown-toggle" href="#!" role="button" data-bs-toggle="dropdown" aria-expanded="false" id="navbar-color-theme{{ if $collapsed }}-collapsed{{ end }}">
<span class="theme-icon-active">{{- partial "assets/icon.html" (dict "icon" "fas sun fa-fw") }} {{ if $collapsed }} {{ T "colorMode" }} {{ end }}</span>
<span class="d-md-none"></span>
</a>
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="navbar-color-theme">
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="navbar-color-theme{{ if $collapsed }}-collapsed{{ end }}">
<li>
<a class="dropdown-item{{ if $collapsed }} switch-mode-collapsed{{ end }}" data-bs-theme-value="light" href="#!">
{{- partial "assets/icon.html" (dict "icon" "fas sun theme-icon") }}
<span class="theme-icon">{{- partial "assets/icon.html" (dict "icon" "fas sun fa-fw") }}</span>&nbsp;
{{ T "colorLight" }}
</a>
</li>
<li>
<a class="dropdown-item{{ if $collapsed }} switch-mode-collapsed{{ end }}" data-bs-theme-value="dark" href="#!">
{{- partial "assets/icon.html" (dict "icon" "fas moon theme-icon") }}
<span class="theme-icon">{{- partial "assets/icon.html" (dict "icon" "fas moon fa-fw") }}</span>&nbsp;
{{ T "colorDark" }}
</a>
</li>
<li>
<a class="dropdown-item{{ if $collapsed }} switch-mode-collapsed{{ end }}" data-bs-theme-value="auto" href="#!">
{{- partial "assets/icon.html" (dict "icon" "fas circle-half-stroke theme-icon" ) }}
<span class="theme-icon">{{- partial "assets/icon.html" (dict "icon" "fas circle-half-stroke fa-fw" ) }}</span>&nbsp;
{{ T "colorAuto" }}
</a>
</li>
@@ -73,7 +74,7 @@
<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>
<span class="position-absolute end-0 me-3">{{- partial "assets/icon.html" (dict "icon" "fas check fa-fw") }}</span>
{{ end }}
</a>
</li>
@@ -93,6 +94,7 @@
</li>
{{- end -}}
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
{{- $supportedFlags := slice "true" "false" -}}
{{- $id := printf "navbar-collapse-%d" 0 -}}
@@ -105,12 +107,15 @@
{{- errorf "partial [assets/navbar.html] - Missing value for param 'page'" -}}
{{- end -}}
{{- $menuName := "main" }}
{{- $defaultMenu := "main" }}
{{- $menuName := $defaultMenu }}
{{- with .menus }}{{ $menuName = . }}{{ end -}}
{{- $menus := index site.Menus $menuName -}}
{{- if or (ne (printf "%T" $menus) "navigation.Menu") (ne (index $menus 0).Menu $menuName) -}}
{{- if ne $menuName $defaultMenu }}
{{- errorf "partial [assets/navbar.html] - Invalid value for param 'menus': %s" $menuName -}}
{{- end -}}
{{- end -}}
{{- $size := "md" -}}
{{- with .size }}{{ $size = . }}{{ end -}}
@@ -147,7 +152,7 @@
{{- end -}}
{{- end -}}
{{- $enableDarkMode := default true site.Params.main.enableDarkMode -}}
{{- $enableDarkMode := default false site.Params.main.enableDarkMode -}}
{{- with .mode -}}
{{- $darkModeParam := . -}}
{{- if in $supportedFlags $darkModeParam -}}
@@ -181,7 +186,9 @@
{{- if eq $color "black" }}{{ $theme = "dark" }}{{ end -}}
{{- if eq $color "white" }}{{ $theme = "light" }}{{ end -}}
<div class="container-fluid {{ if $fixed }}fixed-top{{ end }} p-0"{{ with $theme }} data-bs-theme="{{ . }}"{{ end }}>
{{- $class := .class -}}
<div class="container-fluid {{ if $fixed }}fixed-top{{ end }} p-0{{ with $class }} {{ . }}{{ end }}"{{ 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">
@@ -189,12 +196,12 @@
<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") -}}
{{- partial "assets/icon.html" (dict "icon" "fas ellipsis fa-fw") -}}
</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") -}}
{{- partial "assets/icon.html" (dict "icon" "fas ellipsis fa-fw") -}}
</button>
{{- end -}}
</div>
@@ -202,7 +209,7 @@
<!-- 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">
<img src="{{if $absoluteURL }}{{ absURL $logo }}{{ else }}{{ $logo }}{{ end }}" alt="{{ $title }} logo" height="30">
{{- else -}}
<span class="fw-bold">{{ $title }}</span>
{{- end -}}
@@ -238,7 +245,7 @@
{{- end -}}
<!-- Insert divider if applicable -->
{{- if or $enableLanguage $enableVersions -}}
{{- if and $menus (or $enableLanguage $enableVersions) -}}
<li class="nav-item py-2 py-md-1 col-12 col-md-auto d-none d-{{ $size }}-block">
<div class="vr d-none d-md-flex h-100 mx-md-2"></div>
</li>
@@ -250,15 +257,15 @@
{{- $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" }}
{{- partial "assets/icon.html" (dict "icon" "fas globe fa-fw") }} {{ 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") }}
{{- partial "assets/icon.html" (dict "icon" "fas globe fa-fw") }}
</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>
<li><a class="dropdown-item {{ if eq .Language.Lang $currentLang }}active{{ end }}" href="{{ .RelPermalink }}">{{ .Language.LanguageName }}</a></li>
{{- end -}}
{{- else -}}
{{- range site.Languages -}}

View File

@@ -41,22 +41,22 @@
{{- 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"><i class="fas fa-angle-double-left"></i></span></a>
<a href="{{ .URL }}" aria-label="{{ T "paginationFirst" }}" class="page-link" role="button"><span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angles-left") }}</span></a>
</li>
{{- else }}
<li class="page-item disabled">
<a aria-disabled="true" aria-label="{{ T "paginationFirst" }}" class="page-link" role="button" tabindex="-1"><span aria-hidden="true"><i class="fas fa-angle-double-left"></i></span></a>
<a aria-disabled="true" aria-label="{{ T "paginationFirst" }}" class="page-link" role="button" tabindex="-1"><span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angles-left") }}</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"><i class="fas fa-angle-left"></i></span></a>
<a href="{{ .URL }}" aria-label="{{ T "paginationPrevious" }}" class="page-link" role="button"><span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angle-left") }}</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"><i class="fas fa-angle-left"></i></span></a>
<a aria-disabled="true" aria-label="{{ T "paginationPrevious" }}" class="page-link" role="button" tabindex="-1"><span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angle-left") }}</span></a>
</li>
{{- end }}
@@ -81,22 +81,22 @@
{{- with .Next }}
<li class="page-item">
<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>
<a href="{{ .URL }}" aria-label="{{ T "paginationNext" }}" class="page-link" role="button"><span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angle-right") }}</span></a>
</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"><i class="fas fa-angle-right"></i></span></a>
<a aria-disabled="true" aria-label="{{ T "paginationNext" }}" class="page-link" role="button" tabindex="-1"><span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angle-right") }}</span></a>
</li>
{{- end }}
{{- with .Last }}
{{- if ne $currentPageNumber .PageNumber }}
<li class="page-item">
<a href="{{ .URL }}" aria-label="{{ T "paginationLast" }}" class="page-link" role="button"><span aria-hidden="true"><i class="fas fa-angle-double-right"></i></span></a>
<a href="{{ .URL }}" aria-label="{{ T "paginationLast" }}" class="page-link" role="button"><span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angles-right") }}</span></a>
</li>
{{- else }}
<li class="page-item disabled">
<a aria-disabled="true" aria-label="{{ T "paginationLast" }}" class="page-link" role="button" tabindex="-1"><span aria-hidden="true"><i class="fas fa-angle-double-right"></i></span></a>
<a aria-disabled="true" aria-label="{{ T "paginationLast" }}" class="page-link" role="button" tabindex="-1"><span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angles-right") }}</span></a>
</li>
{{- end }}
{{- end }}
@@ -112,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"><i class="fas fa-angle-double-left"></i></span></a>
<a href="{{ .URL }}" aria-label="{{ T "paginationFirst" }}" class="page-link" role="button"><span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angles-left") }}</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"><i class="fas fa-angle-left"></i></span></a>
<a href="{{ .URL }}" aria-label="{{ T "paginationPrevious" }}" class="page-link" role="button"><span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angle-left") }}</span></a>
</li>
{{- end }}
@@ -144,14 +144,14 @@
{{- with .Next }}
<li class="page-item">
<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>
<a href="{{ .URL }}" aria-label="{{ T "paginationNext" }}" class="page-link" role="button"><span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angle-right") }}</span></a>
</li>
{{- end }}
{{- with .Last }}
{{- if ne $currentPageNumber .PageNumber }}
<li class="page-item">
<a href="{{ .URL }}" aria-label="{{ T "paginationLast" }}" class="page-link" role="button"><span aria-hidden="true"><i class="fas fa-angle-double-right"></i></span></a>
<a href="{{ .URL }}" aria-label="{{ T "paginationLast" }}" class="page-link" role="button"><span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angles-right") }}</span></a>
</li>
{{- end }}
{{- end }}

View File

@@ -49,9 +49,9 @@
{{- with $page -}}
{{- if not $title }}{{ $title = .Title }}{{ end -}}
{{- if not $href }}{{ $href = .Permalink }}{{ end -}}
{{- if not $href }}{{ $href = .RelPermalink }}{{ end -}}
{{- if not $content }}{{ $content = .Content }}{{ end -}}
{{- if not $thumbnail }}{{ $thumbnail = .Params.thumbnail }}{{ end -}}
{{- if not $thumbnail }}{{ $thumbnail = (or (and (reflect.IsMap .Params.Thumbnail) .Params.Thumbnail.url) .Params.Thumbnail) }}{{ end -}}
{{- end -}}
{{- $class := .class -}}

View File

@@ -24,7 +24,7 @@
{{- $padding := "0" -}}
{{- $header := "full" -}}
{{- $footer := "none" -}}
{{- $style := "" -}}
{{- $style := "border-0 card-zoom" -}}
{{- $homepage := 3 -}}
{{- $background := "" -}}
{{- $layout := "card" -}}

View File

@@ -23,6 +23,10 @@
{{- end -}}
{{ partial "assets/button.html" (dict "toast" $target "clipboard" $clipboard "href" $url "icon" (printf "%s fa-fw" $item.icon) "class" "btn-social p-0" )}}
{{- end -}}
{{ if .Site.Params.sharing.webshare }}
{{ $attr := dict "data-sharing-title" .Title "data-sharing-description" .Description "data-sharing-url" .Permalink }}
{{ partial "assets/button.html" (dict "href" "#!" "icon" "fas share-nodes fa-fw" "id" "btn-webshare" "class" "btn-social p-0" "attributes" $attr )}}
{{- end -}}
</div>
{{- end -}}
{{- end -}}

View File

@@ -3,6 +3,7 @@
"id" Optional id of the toast message, defaults to "toast-message-0".
"header": Optional header of the toast message.
"message": Required toast message.
"class": Optional class attribute of the toast element.
-->
{{- $id := printf "toast-message-%d" 0 -}}
@@ -19,7 +20,9 @@
{{- errorf "partial [assets/toast.html] - Missing message text" -}}
{{ end -}}
<div id="{{ $id }}" class="toast" role="alert" aria-live="assertive" aria-atomic="true">
{{- $class := .class -}}
<div id="{{ $id }}" class="toast{{ with $class }} {{ . }}{{ end }}" role="alert" aria-live="assertive" aria-atomic="true">
<div class="toast-header">
{{ with $header }}<strong class="me-auto">{{ . }}</strong>{{ end }}
<button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>

View File

@@ -1,9 +1,13 @@
<footer class="container-fluid text-center p-3">
<div class="container-xxl text-center">
<small class="text-secondary">
{{- $copyright := printf "%s © %s %s All rights reserved." (i18n "copyright") (dateFormat "2006" now) .Site.Title }}
{{- $copyright := printf "%s © %s %s %s." (T "copyright") (dateFormat "2006" now) .Site.Title (T "rights") }}
{{ cond (gt (len .Site.Copyright) 0) .Site.Copyright $copyright }}
{{ .Site.Params.footer.license | safeHTML }}
{{ if .Site.Params.main.endorse }}
{{ $link := partial "utilities/link" (dict "destination" (index site.Params.links "hinode") "text" "Hinode" "class" "link-secondary") }}
{{ T "poweredBy" $link | safeHTML }}
{{ end }}
</small>
</div>
</footer>

View File

@@ -1,3 +1,4 @@
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
{{- $filename := .filename | default "js/main.bundle.js" -}}
{{- $match := .match | default "{js/*.js,js/vendor/**.js}" -}}
{{- $page := .page -}}
@@ -23,9 +24,11 @@
{{- end }}
{{- end -}}
{{- if gt (len $js.Content) 0 -}}
{{- if not hugo.IsProduction -}}
<script src="{{ $js.Permalink }}"></script>
<script src="{{ if $absoluteURL }}{{ $js.Permalink }}{{ else }}{{ $js.RelPermalink }}{{ end }}"></script>
{{ else -}}
{{ $js = $js | minify | fingerprint -}}
<script src="{{ $js.Permalink }}" integrity="{{ $js.Data.Integrity }}" crossorigin="anonymous"></script>
<script src="{{ if $absoluteURL }}{{ $js.Permalink }}{{ else }}{{ $js.RelPermalink }}{{ end }}" integrity="{{ $js.Data.Integrity }}" crossorigin="anonymous"></script>
{{ end -}}
{{ end -}}

View File

@@ -1,14 +1,28 @@
{{ if .Site.Params.footer.socialTitle }}
{{ warnf "DEPRECATED: parameter `Params.home.socialTitle` has been deprecated in release v0.18"}}
{{ end }}
{{ if .Site.Params.footer.socialCaption }}
{{ warnf "DEPRECATED: parameter `Params.home.socialCaption` has been deprecated in release v0.18"}}
{{ end }}
{{- $tab := site.Params.main.externalLinks.tab -}}
<div class="container-fluid">
<div class="row row-cols-1 row-cols-sm-4 bg-primary p-3 bg-opacity-{{ .Site.Params.style.themeOpacity | default "25" | safeHTML }} align-items-center">
<div class="col col-md-2 d-none d-md-block"></div>
<div class="col col-sm-6 col-md-4">
<div class="fs-3 fw-bold">{{ .Site.Params.footer.socialTitle }}</div>
<p>{{ .Site.Params.footer.socialCaption }}</p>
{{ if gt .Site.Menus.social 0 }}
<div class="fs-3 fw-bold">{{ or .Site.Params.footer.socialTitle .Site.Params.social.title }}</div>
<p>{{ or .Site.Params.footer.socialCaption .Site.Params.social.caption }}</p>
{{ end }}
</div>
<div class="col text-sm-start text-center col-sm-6 col-md-4">
{{ range .Site.Menus.social -}}
<a href="{{ .URL }}" target="_blank" rel="noopener noreferrer" aria-label="{{ .Name | safeHTML }}" class="text-decoration-none link-secondary d-inline p-2">
<a href="{{ .URL }}" {{ if $tab }} target="_blank" rel="noopener noreferrer"{{ end }} aria-label="{{ .Name | safeHTML }}" class="text-decoration-none link-secondary d-inline p-2">
{{ if hasPrefix .Pre "<i" }}
{{ .Pre | safeHTML }}
{{ else }}
{{ partial "assets/icon.html" (dict "icon" (printf "%s fa-2x" .Pre) )}}
{{ end }}
</a>
{{ end -}}
</div>

View File

@@ -1,10 +1,11 @@
<!-- Source: https://davelage.com/posts/hugo-favicons/ -->
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
{{ if .Site.Params.favicon.logo -}}
{{ $favicon := resources.Get .Site.Params.favicon.logo -}}
{{ range $i := .Site.Params.favicon.sizes -}}
{{ $image := $favicon.Resize (printf "%dx%d CatmullRom" $i $i) -}}
<link rel="icon" type="image/png" sizes="{{$i}}x{{$i}}" href="{{ $image.Permalink }}">
<link rel="icon" type="image/png" sizes="{{$i}}x{{$i}}" href="{{ if $absoluteURL }}{{ $image.Permalink }}{{ else }}{{ $image.RelPermalink }}{{ end }}">
{{ end -}}
{{ $image := $favicon.Resize "180x CatmullRom" -}}
<link rel="apple-touch-icon" sizes="180x180" href="{{ $image.Permalink }}">
<link rel="apple-touch-icon" sizes="180x180" href="{{ if $absoluteURL }}{{ $image.Permalink }}{{ else }}{{ $image.RelPermalink }}{{ end }}">
{{ end -}}

View File

@@ -11,7 +11,7 @@
Variable names are converted from kebab case to snake case to make them compatible with Hugo's variable naming
convention. For example, the css variable '--accordion-icon-active-color' is available as
''.accordion_icon_active_color' within the Hugo template. The processed svg files are published to the "icons"
'.accordion_icon_active_color' within the Hugo template. The processed svg files are published to the "icons"
folder.
The partial supports the following arguments:

View File

@@ -7,22 +7,17 @@
{{ $.Scratch.Set "title" .Site.Title -}}
{{ end -}}
{{ with .Description -}}
{{ $.Scratch.Set "description" . -}}
{{ else -}}
{{ with .Summary | plainify -}}
{{ $.Scratch.Set "description" . -}}
{{ else -}}
{{ $.Scratch.Set "description" .Site.Params.main.description -}}
{{ end -}}
{{ end -}}
{{ $description := or (partial "utilities/GetDescription.html" .) .Site.Params.main.description }}
{{ $.Scratch.Set "description" $description -}}
{{ with .Params.thumbnail -}}
{{ $source := partial "utilities/GetImage.html" (dict "url" .) -}}
{{ with $source -}}
{{- $thumbnail := (or (and (reflect.IsMap .Params.Thumbnail) .Params.Thumbnail.url) .Params.Thumbnail) -}}
{{ with $thumbnail -}}
{{ $img := partial "utilities/GetImage.html" (dict "url" .) -}}
{{ with $img -}}
{{ $dim := "1280x640" -}}
{{ $img := (.Fill (printf "%s jpg" $dim)) -}}
{{ $.Scratch.Set "thumbnail" ($img.Permalink | absURL) -}}
{{ $scaled := (.Fill (printf "%s jpg" $dim)) -}}
{{- $scaled = $scaled | resources.Copy (replace $img.RelPermalink ".jpg" (printf "-%s.jpg" $dim)) -}}
{{ $.Scratch.Set "thumbnail" ($scaled.Permalink | absURL) -}}
{{ end -}}
{{ else -}}
{{ with .Site.Params.schema.image.url -}}
@@ -57,7 +52,7 @@
{{ end -}}
{{ if .IsHome -}}
<title>{{ .Site.Title }} {{ .Site.Params.main.separator }} {{ .Site.Params.head.tagline }}</title>
<title>{{ .Site.Title }} {{ if .Site.Params.head.tagline }} {{ .Site.Params.main.separator }} {{ .Site.Params.head.tagline }}{{ end }}</title>
{{ else -}}
<title>{{ .Site.Title }} {{ .Site.Params.main.separator }} {{ .Title }}</title>
{{ end -}}

View File

@@ -1,3 +1,4 @@
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
{{- $source := .source | default "scss/app.scss" -}}
{{- $target := .target | default "css/main.css" -}}
{{- $page := .page -}}
@@ -6,7 +7,7 @@
{{- $modules := "" -}}
{{ if $core }}
{{- if reflect.IsSlice site.Params.modules.excludeSCSS -}}
{{- $modules = complement site.Params.modules.excludeSCSS site.Params.modules.core -}}
{{- $modules = complement site.Params.modules.excludeSCSS (or site.Params.modules.core slice) -}}
{{ else }}
{{- $modules = site.Params.modules.core -}}
{{ end }}
@@ -43,8 +44,8 @@
{{- end -}}
{{- if not hugo.IsProduction -}}
<link rel="stylesheet" href="{{ $css.Permalink }}">
<link rel="stylesheet" href="{{ if $absoluteURL }}{{ $css.Permalink }}{{ else }}{{ $css.RelPermalink }}{{ end }}">
{{- else -}}
{{- $css = $css | fingerprint | resources.PostProcess -}}
<link rel="stylesheet" href="{{ $css.Permalink }}" integrity="{{ $css.Data.Integrity }}" crossorigin="anonymous">
<link rel="stylesheet" href="{{ if $absoluteURL }}{{ $css.Permalink }}{{ else }}{{ $css.RelPermalink }}{{ end }}" integrity="{{ $css.Data.Integrity }}" crossorigin="anonymous">
{{- end -}}

View File

@@ -1,20 +1,21 @@
<div class="container-fluid flex-fill bg-primary bg-opacity-{{ .Site.Params.style.themeOpacity | default "25" | safeHTML }}">
<div class="container-xxl p-4">
<div class="row row-cols-1 row-cols-sm-3 align-items-center pt-5 pb-5 h-100">
<div class="col col-md-2 d-none d-md-block"></div>
<div class="col col-sm-6 col-md-4 text-center text-sm-start">
<div class="container-fluid flex-fill feature">
<div class="row row-cols-1 row-cols-sm-4 h-100 bg-primary px-4 py-5 bg-opacity-{{ .Site.Params.style.themeOpacity | default "25" | safeHTML }} align-items-center">
<div class="col col-lg-2 d-none d-lg-block bg-info order-1"></div>
<div class="col col-sm-6 col-lg-4 text-center text-sm-start order-3 order-sm-2">
<p class="display-4">{{ .Title }}</p>
<p>{{ .Content }}</p>
{{ if .Site.Params.feature.link }}
<p><a class="btn btn-primary" href="{{ .Site.Params.feature.link | safeURL }}" role="button">{{ .Site.Params.feature.caption | default (T "about") }}</a></p>
{{ end }}
<p>{{ .Content }}<p>
</div>
<div class="col col-sm-6 col-md-4">
<div class="col text-sm-start text-center col-sm-6 col-lg-4 order-2 order-sm-3">
{{- $thumbnail := (or (and (reflect.IsMap .Params.Thumbnail) .Params.Thumbnail.url) .Params.Thumbnail) -}}
{{- $thumbnail = or $thumbnail .Site.Params.home.featurePhoto -}}
{{ if .Site.Params.home.featurePhoto }}
{{- partial "assets/image.html" (dict "url" .Site.Params.home.featurePhoto "ratio" "4x3" "outerClass" "img-wrap" "innerClass" "rounded" "title" .Site.Title) -}}
{{ warnf "DEPRECATED: parameter `Params.home.featurePhoto` has been deprecated in release v0.18"}}
{{ end }}
{{- if $thumbnail -}}
{{- partial "assets/image.html" (dict "url" $thumbnail "ratio" "16x9" "outerClass" "img-wrap" "innerClass" "rounded" "title" .Site.Title) -}}
{{ end }}
<div class="pb-5 d-block d-sm-none"></div>
</div>
<div class="col col-md-2 d-none d-md-block"></div>
</div>
<div class="col col-lg-2 d-none d-lg-block bg-info order-4"></div>
</div>
</div>

View File

@@ -0,0 +1,12 @@
{{- $page := . -}}
{{- if ne (printf "%T" $page) "*hugolib.pageState" -}}
{{- errorf "partial [utilities/GetDescription.html] - Expected page context" -}}
{{- end -}}
{{- $decription := $page.Description -}}
{{- if not $decription -}}
{{- $decription = $page.Summary -}}
{{- if $page.Truncated }}{{ $decription = print $decription "..." }}{{ end -}}}
{{- end -}}
{{- return $decription -}}

View File

@@ -0,0 +1,45 @@
{{ $destination := .destination }}
{{- if not $destination -}}
{{- errorf "partial [utilities/link.html] - Missing param 'destination'" -}}
{{- end -}}
{{- $target := "" -}}
{{- $rel := "" -}}
{{- $case := .case | default true }}
{{- $cue := .cue | default site.Params.main.externalLinks.cue -}}
{{- $tab := .tab | default site.Params.main.externalLinks.tab -}}
{{- $isExternal := ne (urls.Parse (absURL $destination)).Host (urls.Parse site.BaseURL).Host -}}
{{ $text := .text }}
{{- if not $text -}}
{{ if $isExternal }}
{{ $text = (urls.Parse (absURL $destination)).Host }}
{{ else }}
{{ $target := site.GetPage $destination }}
{{ if not $target }}
{{- errorf "partial [utilities/link.html] - Cannot find page: %s" $destination -}}
{{ else }}
{{ $text = $target.Title }}
{{ if not $case }}{{ $text = lower $text }}{{ end }}
{{ $destination = $target.RelPermalink }}
{{ end }}
{{ end }}
{{- end -}}
{{- if $isExternal -}}
{{- if $tab -}}
{{- $target = "_blank" -}}
{{- $rel = "noopener noreferrer" -}}
{{- end -}}
{{- if $cue -}}
{{ $suffix := partial "assets/icon.html" (dict "icon" "fas up-right-from-square fa-2xs") }}
{{- $text = printf "%s&nbsp;%s" $text $suffix | safeHTML -}}
{{- end -}}
{{ else }}
{{ $destination = relLangURL $destination }}
{{- end -}}
{{- $class := .class -}}
<a {{ with $class }}class="{{ . }}" {{ end }}href="{{ $destination | safeURL }}"{{ with $target }} target="{{ . }}"{{ end }}{{ with $rel }} rel="{{ . }}"{{ end }}>{{ $text }}</a>

View File

@@ -4,10 +4,28 @@
"warning", "info", "light", "dark", "white" or "black".
"dismissible" Optional flag to indicate the alert is dismissible, defaults to false.
"icon" Optional class and name of a Font Awesome icon to include.
"type" Optional type of the alert, either "danger" or "info". Generates an alert with related color and
icon.
"class": Optional class attribute of the alert element.
-->
{{- $error := false -}}
{{ $color := "primary" -}}
{{ $icon := "" }}
{{ $type := "" -}}
{{ with .Get "type" }}{{ $type = . }}{{ end -}}
{{ $supportedTypes := slice "danger" "info" -}}
{{ if $type }}
{{ if not (in $supportedTypes $type) -}}
{{ errorf "Invalid value for param 'type': %s" .Position -}}
{{ $error = true -}}
{{ else }}
{{ $color = $type }}
{{ if eq $type "danger" }}{{ $icon = "fas triangle-exclamation" }}{{ else }}{{ $icon = "fa lightbulb" }}{{ end }}
{{ end -}}
{{ end -}}
{{ with .Get "color" }}{{ $color = . }}{{ end -}}
{{ $supportedColors := slice "primary" "secondary" "success" "danger" "warning" "info" "light" "dark" -}}
{{ if not (in $supportedColors $color) -}}
@@ -15,9 +33,9 @@
{{ $error = true -}}
{{ end -}}
{{ $icon := "" }}
{{ with .Get "icon" }}
{{ $icon = partial "assets/icon.html" (dict "icon" (printf "%s fa-2x fa-pull-left" .)) }}
{{ with .Get "icon" }}{{ $icon = . }}{{ end }}
{{ with $icon }}
{{ $icon = partial "assets/icon.html" (dict "icon" (printf "%s fa-2x fa-fw" .)) }}
{{ end }}
{{ $dismissibleParam := "false" -}}
@@ -31,10 +49,14 @@
{{ $error = true -}}
{{ end -}}
{{- $class := .Get "class" -}}
{{- if not $error -}}
<div class="alert alert-{{ $color }} {{ if $dismissible }}alert-dismissible fade show{{ end }}" role="alert">
{{ with $icon }}{{ . }}{{ end }}
<div class="d-flex alert alert-{{ $color }} {{ if $dismissible }}alert-dismissible fade show{{ end }}{{ with $class }} {{ . }}{{ end }}" role="alert">
{{ with $icon }}<div class="pt-1 pe-2">{{ . }}</div>{{ end }}
<div class="flex-grow-1 my-auto">
{{ trim .Inner " \r\n" | markdownify | safeHTML -}}
{{ if $dismissible }}<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>{{ end }}
</div>
</div>
{{- end -}}

View File

@@ -12,17 +12,29 @@
"aria-label" Optional label for the badge.
"tooltip" Optional text to display in a tooltip. Cannot be used together with collapse. Ignored for active/
inactive buttons.
"collapse" Optional panel to collapse. Cannot be used together with tooltip. Ignored for active/inactive buttons.
"collapse" Optional panel to collapse. Cannot be used together with tooltip. Ignored for active/inactive
buttons.
"placement" Optional position of the tooltip: "top" (default), "bottom", "left", or "right".
"class" Optional class attribute of the button element, e.g. “p-5”.
"icon" Font Awesome icon class attribute, required unless button title is set. An example value is
"fas sort".
"order" Optional order of the icon, either "first" or "last" (default).
"justify" Optional justification of the button title and icon, either "start", "end", "center" (default),
"between", "around", or "evenly".
"toast" Optional id of the toast to display when the button is clicked.
"cue" Optional flag to indicate if an external link should show a visual cue, defaults to setting
"main.externalLinks.cue" in the site's parameters.
"tab" Optional flag to indicate if an external link should open in a new tab, defaults to setting
"main.externalLinks.tab" in the site's parameters.
-->
{{ $error := false }}
{{ $type := "button" -}}
{{- $icon := .Get "icon" }}
{{ $title := trim .Inner " \r\n" -}}
{{ if not $title -}}
{{ errorf "Missing inner element text: %s" .Position -}}
{{ if not (or $title $icon) -}}
{{ errorf "Missing icon or inner element text: %s" .Position -}}
{{ $error = true }}
{{ end -}}
@@ -69,6 +81,7 @@
{{ if $relref }}
{{ $href = relref . $relref }}
{{ end }}
{{ $class := .Get "class" -}}
{{ $placement := "top" -}}
{{ with .Get "placement" }}{{ $placement = . }}{{ end -}}
@@ -80,6 +93,25 @@
{{- $toast := .Get "toast" -}}
{{- $order := "last" -}}
{{- with .Get "order" }}{{ $order = . }}{{ end -}}
{{- $supportedOrders := slice "first" "last" -}}
{{- if not (in $supportedOrders $order) -}}
{{ errorf "Invalid value for param 'order': %s" .Position -}}
{{ $error = true }}
{{- end -}}
{{- $justify := "center" -}}
{{- with .Get "justify" }}{{ $justify = . }}{{ end -}}
{{- $supportedJustify := slice "start" "end" "center" "between" "around" "evenly" -}}
{{- if not (in $supportedJustify $justify) -}}
{{ errorf "Invalid value for param 'justify': %s" .Position -}}
{{ $error = true }}
{{- end -}}
{{- $cue := .Get "cue" | default site.Params.main.externalLinks.cue -}}
{{- $tab := .Get "tab" | default site.Params.main.externalLinks.tab -}}
{{ if not $error }}
{{- partial "assets/button.html" (dict
"type" $type
@@ -94,7 +126,13 @@
"href" $href
"id" $id
"state" $state
"class" $class
"placement" $placement
"icon" $icon
"order" $order
"justify" $justify
"cue" $cue
"tab" $tab
"toast" $toast)
-}}
{{ end }}

View File

@@ -1,3 +1,13 @@
<!--
Generates terminal output for either `bash`, `powershell`, or `sql` shell languages. The shortcode supports the
following named arguments:
"user" Optional user to add to the prompt, e.g. "user".
"host" Optional host to add to the prompt, e.g. "localhost".
"prompt" Optional prompt override, e.g. "PS C:\Users\User>".
"shell" Type of shell, either "bash" (default), "powershell", or "sql".
"class" Optional class attribute of the command element.
-->
{{- $host := .Get "host" -}}
{{- $user := .Get "user" -}}
{{- $prompt := .Get "prompt" -}}
@@ -60,6 +70,8 @@
{{- $output = (replace $output "<span class=\"c\">#" "<span class=\"c\">" | safeHTML) -}}
{{- end -}}
<div class="mb-3 syntax-highlight">
{{- $class := .Get "class" -}}
<div class="mb-3 syntax-highlight{{ with $class }} {{ . }}{{ end }}">
{{- $output -}}
</div>

View File

@@ -1,11 +1,23 @@
{{- /*
<!--
Source: https://github.com/twbs/bootstrap/blob/main/site/layouts/shortcodes/scss-docs.html
Usage: `docs name="name" file="path/filename.<toml|scss>"`
Capture a code snippet from a `toml` or `scss` input file. The shortcode scans for named markers in a local file:
- For `.toml` files, use `# toml-docs-start` and `# toml-docs-end` followed by the snippet name
- For `.scss` files, use `// scss-docs-start` and `// scss-docs-end` followed by the snippet name
Prints everything between `# toml-docs-start "name"` and `# toml-docs-end "name"`
comments in the docs, or between `// scss-docs-start` and `// scss-docs-end`.
*/ -}}
The snippet between the two markers is then rendered using syntax highlighting. The shortcode supports the
following named arguments:
"name" Name of the code snippet, used to identify the relevant section of the input file.
"file" Path of the input file. The path is relative to the `basePath` defined in the `docs` section of the
site's parameters. If the file starts with `./`, the path of the repository is used as base path instead.
"show" If unset, shows the panel with the code snippet in collapsed state. By default, the panel is
expanded.
"full" If unset, shows the filename only. By default, the full relative path is shown.
"id" Optional id of the collapse panel, defaults to "docs-collapse-n" with a sequential number n
starting at 1.
"class" Optional class argument of the tab control.
-->
{{- $name := .Get "name" -}}
{{- $basePath := .Site.Params.docs.basePath -}}
@@ -20,6 +32,9 @@
{{- $capture_end := "" -}}
{{- $id := printf "docs-collapse-%d" .Ordinal -}}
{{ with .Get "id" }}
{{ $id = . }}
{{ end }}
{{- $supportedExtensions := slice "js" "scss" "toml" -}}
{{- if in $supportedExtensions $extension -}}
@@ -44,13 +59,25 @@
{{ errorf "Invalid value for param 'show': %s" $showParam -}}
{{ end -}}
{{ $fullParam := "true" -}}
{{ $full := true -}}
{{ with .Get "full" }}{{ $fullParam = . }}{{ end -}}
{{ if in $supportedFlags $fullParam -}}
{{ if eq $fullParam "true" }}{{ $full = true }}{{ else }}{{ $full = false }}{{ end -}}
{{ else -}}
{{ errorf "Invalid value for param 'full': %s" $fullParam -}}
{{ end -}}
{{- $class := .Get "class" -}}
{{- /* If any parameters are missing, print an error and exit */ -}}
{{- if or (not $name) (not $file) -}}
{{- errorf "%s: %q: Missing required parameters! Got: name=%q file=%q!" .Position .Name $name $file -}}
{{- else -}}
{{- $regex := printf `%s((?:.|\n)*)%s` $capture_start $capture_end -}}
{{- /* Force-check if the file exists */ -}}
{{ $tmp := os.Stat $file }}
{{- $regex := printf `%s((?:.|\n)*)%s` $capture_start $capture_end -}}
{{- $match := findRE $regex (readFile $file) -}}
{{- $match = index $match 0 -}}
@@ -61,7 +88,7 @@
{{- $match = replace $match $capture_start "" -}}
{{- $match = replace $match $capture_end "" -}}
<ul class="nav nav-tabs">
<ul class="nav nav-tabs{{ with $class }} {{ . }}{{ end }}">
<li class="nav-item">
<a class="nav-link active font-monospace"
href="#body-{{ $id }}"
@@ -70,7 +97,7 @@
data-bs-target=".multi-{{ $id }}"
aria-expanded="false"
aria-controls="body-{{ $id }} footer-{{ $id }}">
<small>{{ strings.TrimPrefix $basePath $file }}</small>
<small>{{ if $full }}{{ strings.TrimPrefix $basePath $file }}{{ else }}{{ path.Base $file }}{{ end }}</small>
</a>
</li>
</ul>

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