Compare commits

...

533 Commits

Author SHA1 Message Date
Mark Dumay
3a1e310e22 Merge pull request #567 from gethinode/develop
Refine layout
2023-10-18 07:31:09 +02:00
Mark Dumay
918c043f10 Merge branch 'main' into develop 2023-10-18 07:21:43 +02:00
mark
fbfb02d7ca Bump package release 2023-10-18 07:20:41 +02:00
mark
3026837946 Improve icon spacing 2023-10-18 07:20:07 +02:00
mark
f7ccdad1df Update build stats 2023-10-18 06:57:22 +02:00
mark
4b4f70e6e0 Fix abbr element on devices with touch screen 2023-10-18 06:57:03 +02:00
mark
c28e9861ba Enable keyboard focus for abbr element 2023-10-18 06:56:13 +02:00
mark
15c2b5466e Fix background color of TOC button on hover 2023-10-18 06:30:42 +02:00
mark
58bcdff782 Fix gap between tags in dark mode 2023-10-18 06:25:22 +02:00
Mark Dumay
a08cdeeeb6 Merge pull request #566 from gethinode/develop
Improve definition of image dimensions
2023-10-17 17:00:37 +02:00
Mark Dumay
9be2f7712d Merge branch 'main' into develop 2023-10-17 16:52:02 +02:00
mark
f59e34758c Add dimensions for vector brand logo 2023-10-17 16:51:06 +02:00
mark
fc3846424d Add image dimensions 2023-10-17 16:50:12 +02:00
github-actions[bot]
11a0e4943a Merge pull request #565 from gethinode/dependabot/npm_and_yarn/stylelint-15.11.0
Bump stylelint from 15.10.3 to 15.11.0
2023-10-17 13:57:57 +00:00
dependabot[bot]
5d95eb0420 Bump stylelint from 15.10.3 to 15.11.0
Bumps [stylelint](https://github.com/stylelint/stylelint) from 15.10.3 to 15.11.0.
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/15.10.3...15.11.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-17 13:50:11 +00:00
Mark Dumay
ef0b797e60 Merge pull request #564 from gethinode/develop
Optimize js and css handling
2023-10-17 14:54:02 +02:00
mark
dfa34a1838 Sync translated about pages 2023-10-17 14:40:00 +02:00
mark
d58a32e283 Support configuration of script processing 2023-10-17 13:55:20 +02:00
Mark Dumay
5fa1abe7bc Merge branch 'main' into develop 2023-10-17 13:11:13 +02:00
mark
251dec084c Update build stats 2023-10-17 13:09:31 +02:00
mark
52ef24a5f6 Fix alignment of featured content 2023-10-17 13:09:22 +02:00
mark
0a7fc04fa5 Fix purge settings for example site 2023-10-17 13:09:06 +02:00
mark
612dbcc868 Optimize css and js handling 2023-10-17 13:06:48 +02:00
Mark Dumay
850a92bee9 Merge pull request #563 from gethinode/develop
Add modal search support
2023-10-17 06:01:48 +02:00
Mark Dumay
5664e98d89 Merge branch 'main' into develop 2023-10-17 05:40:33 +02:00
mark
1bd6f0f04e Bump package release 2023-10-17 05:39:58 +02:00
mark
58e3e0f53e Add modal search support 2023-10-17 05:39:15 +02:00
mark
a3d8585276 Adjust icon spacing 2023-10-17 05:38:43 +02:00
mark
882269bf72 Update build stats 2023-10-17 05:38:01 +02:00
mark
c71e21ca0b Fix typo 2023-10-17 05:37:41 +02:00
Mark Dumay
890ab25210 Merge pull request #562 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2023-10-17 05:36:12 +02:00
markdumay
81687c19ef fix: update Hugo module dependencies 2023-10-17 03:16:24 +00:00
Mark Dumay
c98165c61e Merge pull request #561 from gethinode/develop
Standardize padding
2023-10-16 11:50:36 +02:00
Mark Dumay
0ee3ddef1d Merge branch 'main' into develop 2023-10-16 11:33:09 +02:00
mark
06af1481e6 Standardize padding 2023-10-16 11:32:43 +02:00
Mark Dumay
740108432b Merge pull request #560 from gethinode/develop
Refine section heading rendering
2023-10-16 11:31:39 +02:00
Mark Dumay
331959e3da Merge branch 'main' into develop 2023-10-16 11:24:36 +02:00
mark
679e49e55f Refine section heading rendering 2023-10-16 11:23:58 +02:00
Mark Dumay
5ae69f2466 Merge pull request #559 from gethinode/develop
Remove trailing whitespace from external link icon
2023-10-16 11:21:52 +02:00
Mark Dumay
15c7d53acc Merge branch 'main' into develop 2023-10-16 11:09:52 +02:00
mark
a1d93fca52 Remove trailing whitespace from external link icon 2023-10-16 11:07:18 +02:00
Mark Dumay
56af6dda1d Merge pull request #558 from gethinode/develop
Refine featured partial
2023-10-16 09:15:23 +02:00
Mark Dumay
7c62e115c3 Merge branch 'main' into develop 2023-10-16 08:53:04 +02:00
mark
5f13e2d7ab Fix featured padding 2023-10-16 08:52:16 +02:00
mark
0186b3db8b Support icon color modes 2023-10-16 08:51:58 +02:00
Mark Dumay
db4e353d8a Merge pull request #557 from gethinode/develop
Add color mode support for animations
2023-10-16 08:47:33 +02:00
Mark Dumay
30468c2dab Merge branch 'main' into develop 2023-10-16 07:34:40 +02:00
mark
3afe0a8a99 Add color mode support for animations 2023-10-16 07:33:46 +02:00
mark
fc626dc4c0 Bump package version 2023-10-15 07:52:50 +02:00
mark
7e4f582445 Fix alignment of breadcrumb 2023-10-15 07:52:09 +02:00
mark
f740443f73 Add section header for main list content 2023-10-15 07:28:03 +02:00
mark
d43da60e8e Update nodejs version 2023-10-14 07:51:13 +02:00
Mark Dumay
d29759da9b Merge pull request #555 from gethinode/develop
Refine base layout
2023-10-14 07:47:29 +02:00
Mark Dumay
4b3a2e441b Merge branch 'main' into develop 2023-10-14 07:31:42 +02:00
mark
a8b8d07bf4 Refine featured configuration 2023-10-14 07:31:07 +02:00
mark
34410446f3 Update build stats 2023-10-14 07:30:40 +02:00
mark
13098a351d Configure featured layout 2023-10-14 07:30:33 +02:00
mark
d071fa03a6 Update build stats 2023-10-14 07:30:13 +02:00
Mark Dumay
6ff65c37ac Merge pull request #551 from aefly/french-translation
Update French Translation with latest hinode version
2023-10-12 13:41:42 +02:00
aefly
e03396490e Update components.md 2023-10-12 13:16:41 +02:00
Mark Dumay
ad453b6400 Merge branch 'main' into develop 2023-10-12 13:11:03 +02:00
mark
500a572a9c Bump package release 2023-10-12 13:09:49 +02:00
mark
f3bffcb5fb Improve featured section layout 2023-10-12 13:08:33 +02:00
mark
30305ffd1c Fix scroll offset for display headings 2023-10-12 13:07:52 +02:00
mark
62f2e33b64 Fix anchorization of section titles 2023-10-12 13:07:13 +02:00
mark
24d655ec76 Fix typo 2023-10-12 13:06:45 +02:00
mark
7668f795da Support word wrap config of nav 2023-10-12 13:06:31 +02:00
Mark Dumay
96a5853333 Merge branch 'main' into french-translation 2023-10-12 07:05:30 +02:00
github-actions[bot]
6b767410dc Merge pull request #553 from gethinode/dependabot/npm_and_yarn/eslint-plugin-n-16.2.0
Bump eslint-plugin-n from 16.1.0 to 16.2.0
2023-10-11 13:41:24 +00:00
dependabot[bot]
3f8dd1d457 Bump eslint-plugin-n from 16.1.0 to 16.2.0
Bumps [eslint-plugin-n](https://github.com/eslint-community/eslint-plugin-n) from 16.1.0 to 16.2.0.
- [Release notes](https://github.com/eslint-community/eslint-plugin-n/releases)
- [Commits](https://github.com/eslint-community/eslint-plugin-n/compare/16.1.0...16.2.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-11 13:35:04 +00:00
aefly
8cb501186a Update components.md 2023-10-11 08:08:12 +02:00
Mark Dumay
bdfe42b22f Merge pull request #550 from gethinode/main
Sync with main
2023-10-10 10:21:37 +02:00
Mark Dumay
37c4fbdec0 Merge pull request #549 from gethinode/refactor
Refactor base layout
2023-10-10 10:10:10 +02:00
Mark Dumay
9af109d23d Merge branch 'main' into refactor 2023-10-10 08:43:58 +02:00
Mark Dumay
3322e3337a Merge pull request #548 from gethinode/taxonomy
Consolidate list page and home page
2023-10-10 08:43:07 +02:00
mark
6ede71d164 Fix linting issue 2023-10-10 08:42:12 +02:00
Mark Dumay
da2e41d59d Merge branch 'main' into taxonomy 2023-10-10 07:48:02 +02:00
mark
c08af69752 Add feature configuration 2023-10-10 07:46:41 +02:00
mark
1a3b438bfb Update build stats 2023-10-10 07:46:04 +02:00
mark
f15ee8cc5b Adapt refined featured format 2023-10-10 07:45:47 +02:00
mark
d65897ad09 Support taxonomies as list input 2023-10-10 07:45:07 +02:00
mark
607f9690cc Support custom card ratio 2023-10-10 07:44:30 +02:00
mark
3cbdc511c8 Support article downloads 2023-10-10 07:42:31 +02:00
mark
e21ab89f89 Fix navbar offset 2023-10-10 07:31:36 +02:00
mark
c50e0153f6 Adapt refined featured format 2023-10-10 07:30:33 +02:00
mark
bd3c2f9d78 Refactor base layout 2023-10-10 07:29:59 +02:00
mark
57bcc6d1ac Refactor featured section 2023-10-10 07:28:20 +02:00
mark
8331cb9f38 Add support for page menu 2023-10-10 07:25:36 +02:00
mark
1ef0f32ad9 Add support for section menu 2023-10-10 07:25:14 +02:00
mark
c9cab7f43d Refactor featured section 2023-10-10 07:24:15 +02:00
mark
73d8efcea7 Update build stats 2023-10-10 07:23:41 +02:00
mark
e9c45a45d7 Add support for downloads 2023-10-10 07:13:39 +02:00
mark
5b94307559 Consolidate list page and home page 2023-10-10 06:43:54 +02:00
Mark Dumay
ee03b65f2d Merge pull request #547 from gethinode/taxonomy
Support custom card ratio
2023-10-10 06:37:31 +02:00
Mark Dumay
7920512f2b Merge branch 'main' into taxonomy 2023-10-10 06:29:01 +02:00
mark
928e355618 Support configurable thumbnail ratio 2023-10-10 06:24:32 +02:00
mark
efac0a7026 Move color of card icon to stylesheet 2023-10-10 06:19:52 +02:00
github-actions[bot]
42d10ed012 Merge pull request #546 from gethinode/dependabot/npm_and_yarn/eslint-8.51.0
Bump eslint from 8.50.0 to 8.51.0
2023-10-09 14:00:56 +00:00
dependabot[bot]
b0655adff4 Bump eslint from 8.50.0 to 8.51.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.50.0 to 8.51.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.50.0...v8.51.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-10-09 13:53:44 +00:00
Mark Dumay
c1b025d04b Merge pull request #545 from gethinode/develop
Fix spacing of inline elements
2023-10-09 08:20:58 +02:00
Mark Dumay
3cf5884e10 Merge branch 'main' into develop 2023-10-09 07:47:22 +02:00
mark
ce0acb9547 Fix #501 2023-10-09 07:46:34 +02:00
Mark Dumay
777c54f6a1 Merge pull request #544 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2023-10-09 07:46:01 +02:00
markdumay
8e17d093c7 fix: update Hugo module dependencies 2023-10-09 03:16:22 +00:00
mark
33ba9d6e59 Fix typo 2023-10-08 14:43:03 +02:00
mark
f6a1751efe Bump package version 2023-10-08 06:29:08 +02:00
mark
00372947fa Remove redundant semicolon 2023-10-08 05:38:10 +02:00
mark
c86167851f Bump Dart Sass dependency 2023-10-08 05:37:32 +02:00
github-actions[bot]
6a90952319 Merge pull request #543 from gethinode/dependabot/npm_and_yarn/postcss-8.4.31
Bump postcss from 8.4.28 to 8.4.31
2023-10-08 01:54:53 +00:00
dependabot[bot]
02f135eec3 Bump postcss from 8.4.28 to 8.4.31
Bumps [postcss](https://github.com/postcss/postcss) from 8.4.28 to 8.4.31.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.4.28...8.4.31)

---
updated-dependencies:
- dependency-name: postcss
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-08 01:46:51 +00:00
Mark Dumay
daa9bcc471 Merge pull request #542 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2023-09-30 07:09:48 +02:00
markdumay
5072fd6a07 fix: update Hugo module dependencies 2023-09-30 03:15:07 +00:00
Mark Dumay
20f5868759 Merge pull request #541 from gethinode/develop
Add wrap argument for nav
2023-09-28 16:13:56 +02:00
mark
db0297e898 Bump package version 2023-09-28 16:02:49 +02:00
mark
1efb03f3be Add wrap argument 2023-09-28 16:02:24 +02:00
Mark Dumay
4e00d967a6 Merge pull request #540 from gethinode/main
Sync with main
2023-09-28 15:41:01 +02:00
Mark Dumay
266ca8db68 Merge pull request #539 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2023-09-28 15:15:16 +02:00
markdumay
2b976a3eec fix: update Hugo module dependencies 2023-09-28 12:40:19 +00:00
github-actions[bot]
962429ad33 Merge pull request #538 from gethinode/dependabot/npm_and_yarn/rimraf-5.0.5
Bump rimraf from 5.0.4 to 5.0.5
2023-09-27 14:02:24 +00:00
dependabot[bot]
5d5c645308 Bump rimraf from 5.0.4 to 5.0.5
Bumps [rimraf](https://github.com/isaacs/rimraf) from 5.0.4 to 5.0.5.
- [Changelog](https://github.com/isaacs/rimraf/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/rimraf/compare/v5.0.4...v5.0.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-27 13:54:54 +00:00
Mark Dumay
f1c7792f87 Merge pull request #537 from gethinode/develop
Bump package version
2023-09-27 07:41:58 +02:00
Mark Dumay
fe86a21303 Merge branch 'main' into develop 2023-09-27 07:31:15 +02:00
mark
33cccd76b3 Bump package version 2023-09-27 07:30:36 +02:00
Mark Dumay
1f90c552a7 Merge pull request #536 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2023-09-27 07:26:58 +02:00
markdumay
614e789ce4 fix: update Hugo module dependencies 2023-09-27 03:16:34 +00:00
github-actions[bot]
07f2f82675 Merge pull request #535 from gethinode/dependabot/npm_and_yarn/hugo-bin-0.115.0
Bump hugo-bin from 0.114.2 to 0.115.0
2023-09-26 13:39:08 +00:00
dependabot[bot]
d28d2be7c5 Bump hugo-bin from 0.114.2 to 0.115.0
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.114.2 to 0.115.0.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.114.2...v0.115.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-09-26 13:30:12 +00:00
github-actions[bot]
a3250b31c2 Merge pull request #534 from gethinode/dependabot/npm_and_yarn/rimraf-5.0.4
Bump rimraf from 5.0.1 to 5.0.4
2023-09-26 13:29:28 +00:00
dependabot[bot]
eae97e2017 Bump rimraf from 5.0.1 to 5.0.4
Bumps [rimraf](https://github.com/isaacs/rimraf) from 5.0.1 to 5.0.4.
- [Changelog](https://github.com/isaacs/rimraf/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/rimraf/compare/v5.0.1...v5.0.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-26 13:22:14 +00:00
github-actions[bot]
7983a52de9 Merge pull request #533 from gethinode/dependabot/npm_and_yarn/eslint-8.50.0
Bump eslint from 8.49.0 to 8.50.0
2023-09-26 06:32:49 +02:00
dependabot[bot]
92b1b81b25 Bump eslint from 8.49.0 to 8.50.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.49.0 to 8.50.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.49.0...v8.50.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-09-25 13:15:35 +00:00
Mark Dumay
f91fe303fb Drop Node 16.x 2023-09-25 08:46:36 +02:00
Mark Dumay
529b0db71d Merge pull request #532 from gethinode/develop
Support custom icons
2023-09-25 08:12:58 +02:00
mark
bd142ac66d Bump package version 2023-09-25 07:39:01 +02:00
mark
3749937799 Add custom icon example 2023-09-25 07:38:54 +02:00
mark
16d309cc34 Update build stats 2023-09-25 07:38:11 +02:00
Mark Dumay
5315bc950a Merge pull request #531 from gethinode/main
Sync with main
2023-09-25 07:34:08 +02:00
Mark Dumay
2dbf6a9faf Merge pull request #530 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2023-09-25 07:22:20 +02:00
markdumay
a67e38bd1b fix: update Hugo module dependencies 2023-09-25 05:14:37 +00:00
Mark Dumay
4688176216 Merge pull request #529 from gethinode/develop
Add animation support
2023-09-24 06:31:05 +02:00
mark
dbee9aafd7 Prevent processing of empty scss bundles 2023-09-24 05:58:27 +02:00
mark
8c20617b1a Bump dependencies 2023-09-23 17:27:24 +02:00
Mark Dumay
9e2ed6480d Merge branch 'main' into develop 2023-09-23 17:08:35 +02:00
mark
7ef1b1aba9 Remove newlines 2023-09-23 17:07:51 +02:00
mark
b74071d4cf Bump package release 2023-09-23 16:59:17 +02:00
mark
dc7578a5c3 Add animation support 2023-09-23 16:58:38 +02:00
Mark Dumay
2227cf5fe2 Standardize capitalization 2023-09-22 07:21:31 +02:00
Mark Dumay
1296595ff7 Merge pull request #528 from gethinode/develop
Support configurable font size
2023-09-22 07:19:59 +02:00
Mark Dumay
94f0b7599d Merge branch 'main' into develop 2023-09-22 07:07:04 +02:00
mark
481d3099eb Bump package release 2023-09-22 07:06:31 +02:00
mark
d9a718d934 Support configurable font size 2023-09-22 07:05:09 +02:00
github-actions[bot]
e396bcce82 Merge pull request #527 from gethinode/dependabot/npm_and_yarn/autoprefixer-10.4.16
Bump autoprefixer from 10.4.15 to 10.4.16
2023-09-21 13:59:34 +00:00
dependabot[bot]
b80b45f126 Bump autoprefixer from 10.4.15 to 10.4.16
Bumps [autoprefixer](https://github.com/postcss/autoprefixer) from 10.4.15 to 10.4.16.
- [Release notes](https://github.com/postcss/autoprefixer/releases)
- [Changelog](https://github.com/postcss/autoprefixer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/autoprefixer/compare/10.4.15...10.4.16)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-21 13:51:27 +00:00
Mark Dumay
b9a9a84982 Merge pull request #526 from gethinode/develop
Fix height for stand-alone cards
2023-09-20 15:57:30 +02:00
Mark Dumay
32a582dc66 Merge branch 'main' into develop 2023-09-20 06:58:50 +02:00
mark
ce7362a6f5 Fix height for stand-alone cards 2023-09-20 06:58:25 +02:00
Mark Dumay
c3541f0368 Merge pull request #525 from gethinode/develop
Use link title in navigation
2023-09-20 06:58:12 +02:00
Mark Dumay
fa9da5147d Merge branch 'main' into develop 2023-09-20 06:25:03 +02:00
mark
9905581b63 Use link title in navigation controls 2023-09-20 06:23:40 +02:00
mark
4fe871d5c1 Use link title in breadcrumb by default 2023-09-20 06:04:01 +02:00
mark
4e5e39624b Improve layout 2023-09-20 06:02:54 +02:00
github-actions[bot]
7174c8ac39 Merge pull request #524 from gethinode/dependabot/npm_and_yarn/markdownlint-cli2-0.10.0
Bump markdownlint-cli2 from 0.9.2 to 0.10.0
2023-09-18 13:57:58 +00:00
dependabot[bot]
37c26de1ce Bump markdownlint-cli2 from 0.9.2 to 0.10.0
Bumps [markdownlint-cli2](https://github.com/DavidAnson/markdownlint-cli2) from 0.9.2 to 0.10.0.
- [Changelog](https://github.com/DavidAnson/markdownlint-cli2/blob/main/CHANGELOG.md)
- [Commits](https://github.com/DavidAnson/markdownlint-cli2/compare/v0.9.2...v0.10.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-18 13:51:02 +00:00
Mark Dumay
a56030eb53 Merge pull request #523 from gethinode/develop
Fix rendering of button title
2023-09-16 19:53:53 +02:00
mark
686a54b666 Standardize args documentation 2023-09-16 14:51:28 +02:00
mark
3f3c19aeaa Bump package version 2023-09-16 14:51:23 +02:00
Mark Dumay
0ff114b51d Merge branch 'main' into develop 2023-09-16 14:48:21 +02:00
mark
f8deb13215 Fix rendering of button title 2023-09-16 07:12:27 +02:00
github-actions[bot]
b4669878a6 Merge pull request #521 from gethinode/dependabot/npm_and_yarn/eslint-8.49.0
Bump eslint from 8.48.0 to 8.49.0
2023-09-11 13:39:10 +00:00
dependabot[bot]
68210961be Bump eslint from 8.48.0 to 8.49.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.48.0 to 8.49.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.48.0...v8.49.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-09-11 13:31:01 +00:00
github-actions[bot]
6af0d9b062 Merge pull request #522 from gethinode/dependabot/npm_and_yarn/eslint-plugin-n-16.1.0
Bump eslint-plugin-n from 16.0.2 to 16.1.0
2023-09-11 13:30:16 +00:00
dependabot[bot]
ad401a8747 Bump eslint-plugin-n from 16.0.2 to 16.1.0
Bumps [eslint-plugin-n](https://github.com/eslint-community/eslint-plugin-n) from 16.0.2 to 16.1.0.
- [Release notes](https://github.com/eslint-community/eslint-plugin-n/releases)
- [Commits](https://github.com/eslint-community/eslint-plugin-n/compare/16.0.2...16.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-11 13:20:31 +00:00
Mark Dumay
e0ca123aa2 Merge pull request #520 from gethinode/develop
Support sidebar links
2023-09-08 12:53:52 +02:00
Mark Dumay
ef3636befe Merge branch 'main' into develop 2023-09-08 10:31:13 +02:00
mark
5635f895df Fix #510 2023-09-08 10:30:23 +02:00
Mark Dumay
779f9b11a7 Merge pull request #519 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2023-09-08 06:24:08 +02:00
markdumay
b0b8e9d684 fix: update Hugo module dependencies 2023-09-08 03:15:41 +00:00
Mark Dumay
b4f7163913 Merge pull request #518 from gethinode/develop
Bump package version
2023-09-07 06:39:09 +02:00
Mark Dumay
6ef4738619 Merge branch 'main' into develop 2023-09-07 06:28:24 +02:00
mark
333e4c3e07 Bump package version 2023-09-07 06:27:53 +02:00
Mark Dumay
705900dd27 Merge pull request #517 from gethinode/develop
Add Netlify plugins
2023-09-06 16:28:59 +02:00
Mark Dumay
363b6293af Merge branch 'main' into develop 2023-09-06 16:12:53 +02:00
mark
97ef22d3fb Bump package version 2023-09-06 16:10:12 +02:00
mark
f7fa573347 Configure plugins 2023-09-06 16:09:36 +02:00
Mark Dumay
971b61fe8a Merge pull request #516 from gethinode/develop
Fix base settings
2023-09-06 10:36:39 +02:00
mark
303a611913 Restore base settings 2023-09-06 10:28:34 +02:00
Mark Dumay
066a9f1722 Merge pull request #515 from gethinode/main
Sync with main
2023-09-06 10:27:23 +02:00
Mark Dumay
ac5cddf448 Merge pull request #512 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2023-09-06 10:15:39 +02:00
Mark Dumay
d6bea30b24 Merge branch 'main' into hugo-mod-dependencies 2023-09-06 08:09:48 +02:00
Mark Dumay
ac05154eec Merge pull request #514 from markdumay/dart
Add support for Dart Sass
2023-09-06 08:08:56 +02:00
Mark Dumay
ff579b0cfc Merge branch 'main' into dart 2023-09-06 07:43:30 +02:00
Mark Dumay
13ede1b2a4 Add Dart Sass installation 2023-09-06 07:42:50 +02:00
Mark Dumay
51c7706af2 Add Dart Installation 2023-09-06 07:41:39 +02:00
Mark Dumay
5a3c2c298b Merge branch 'main' into dart 2023-09-06 07:25:17 +02:00
mark
608e8609c6 Fix linting issues 2023-09-06 07:21:08 +02:00
mark
60edf6d444 Optimize stylesheet processing 2023-09-06 07:16:50 +02:00
mark
28c79f30a2 Address Dart Sass warnings and variable handling 2023-09-06 07:15:03 +02:00
mark
89fcd7413f Update dependencies 2023-09-06 07:11:20 +02:00
markdumay
5741027a54 fix: update Hugo module dependencies 2023-09-06 03:15:29 +00:00
github-actions[bot]
6598ca5335 Merge pull request #509 from gethinode/dependabot/npm_and_yarn/stylelint-config-standard-scss-11.0.0
Bump stylelint-config-standard-scss from 10.0.0 to 11.0.0
2023-09-04 13:19:24 +00:00
dependabot[bot]
5024bac01e Bump stylelint-config-standard-scss from 10.0.0 to 11.0.0
Bumps [stylelint-config-standard-scss](https://github.com/stylelint-scss/stylelint-config-standard-scss) from 10.0.0 to 11.0.0.
- [Release notes](https://github.com/stylelint-scss/stylelint-config-standard-scss/releases)
- [Changelog](https://github.com/stylelint-scss/stylelint-config-standard-scss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint-scss/stylelint-config-standard-scss/compare/v10.0.0...v11.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-04 13:14:00 +00:00
mark
499a481baa Set default transpiler 2023-09-03 13:05:17 +02:00
mark
7d4ab6ff58 Support configurable transpiler 2023-09-03 13:02:47 +02:00
mark
9c93d5e336 Adjust package version 2023-09-03 09:00:57 +02:00
mark
19af20457e Add dart-sass installation to build command 2023-09-03 08:49:22 +02:00
mark
1cdc165b1c Update base URL 2023-09-03 08:40:30 +02:00
Mark Dumay
ede8fe8066 Merge pull request #507 from gethinode/develop
Fix issues with table and link
2023-09-02 16:26:15 +02:00
mark
51046d9646 Bump package version 2023-09-02 15:44:31 +02:00
mark
f2fd933f50 Update build stats 2023-09-02 15:43:08 +02:00
mark
8d16d50171 Increase min required version of Hugo 2023-09-02 15:42:49 +02:00
mark
3e3e2486ee Remove workaround for incorrect raw content 2023-09-02 15:42:17 +02:00
Mark Dumay
780707d821 Merge branch 'main' into develop 2023-09-02 15:31:43 +02:00
mark
8ac0f752ba Fix class init of link shortcode 2023-09-02 09:36:54 +02:00
mark
180641a72b Refine table colors in dark mode 2023-09-02 09:06:07 +02:00
Mark Dumay
75126f27ed Merge pull request #503 from gethinode/develop
Improve cards and card-group
2023-09-01 16:40:46 +02:00
Mark Dumay
df683a3022 Merge branch 'main' into develop 2023-09-01 16:27:17 +02:00
mark
61373259e9 Bump package version 2023-09-01 16:26:19 +02:00
mark
481dffd8b6 Update build stats 2023-09-01 16:26:08 +02:00
mark
80a957d261 Refine project cards layout 2023-09-01 16:26:01 +02:00
mark
9df3b0f163 Adjust card-group gutter 2023-09-01 16:25:34 +02:00
mark
284cc53308 Add card-body-margin to example section config 2023-09-01 16:12:20 +02:00
mark
4c7075fdb8 Improve handling of inner content 2023-09-01 16:08:21 +02:00
mark
5d5a21ca4e Add gutter support 2023-09-01 16:07:24 +02:00
mark
9e6f14ed47 Add wrapper example 2023-09-01 16:07:05 +02:00
mark
c61c770c3e Document wrapper example value 2023-09-01 14:45:38 +02:00
mark
9595892444 Add gutter argument 2023-09-01 14:45:10 +02:00
mark
8c7867e14a Document cols arg 2023-09-01 14:44:26 +02:00
mark
a58b0dae6b Refine default wrapper value 2023-09-01 14:44:06 +02:00
mark
4385ef9f87 Add configurable gutter 2023-09-01 14:43:20 +02:00
mark
8f9ed014f2 Add bottom margin adjustment 2023-09-01 14:38:45 +02:00
mark
2f0ce05789 Refactor cols init 2023-09-01 13:17:18 +02:00
mark
6d700e6819 Adjust gutter behavior 2023-09-01 13:16:44 +02:00
mark
46c5ec3b44 Document auto-behavior 2023-09-01 13:16:08 +02:00
mark
de8d450a05 Add responsive argument 2023-09-01 13:05:28 +02:00
Mark Dumay
56f74e03ba Merge pull request #502 from aefly/french-translation
Update 'bootstrap-elements.md' with latest hinode version
2023-09-01 12:33:51 +02:00
aefly
0ce037675b Fix exemple - > example 2023-09-01 03:51:56 +02:00
aefly
aa472e6ffa Update 'bootstap-elements.md' with latest hinode version 2023-09-01 03:48:03 +02:00
github-actions[bot]
f05b45af02 Merge pull request #500 from gethinode/dependabot/npm_and_yarn/hugo-bin-0.114.2
Bump hugo-bin from 0.113.0 to 0.114.2
2023-08-31 14:06:54 +00:00
dependabot[bot]
69b4f6a4ca Bump hugo-bin from 0.113.0 to 0.114.2
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.113.0 to 0.114.2.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.113.0...v0.114.2)

---
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-31 14:01:00 +00:00
Mark Dumay
484d540ecb Merge pull request #499 from gethinode/develop
Improve cards
2023-08-31 14:41:27 +02:00
Mark Dumay
bb542efaa8 Merge branch 'main' into develop 2023-08-31 14:27:36 +02:00
Mark Dumay
49ac691b3e Merge pull request #498 from gethinode/develop
Improve argument handling
2023-08-31 14:25:41 +02:00
mark
95d757f826 Discard empty title 2023-08-31 14:24:27 +02:00
mark
c1fc156d75 Remove bottom margin 2023-08-31 14:24:03 +02:00
mark
35a5a25150 Add wrapper arg 2023-08-31 14:23:20 +02:00
Mark Dumay
9547ba316e Merge branch 'main' into develop 2023-08-31 13:35:41 +02:00
mark
0d48dec518 Improve initialization of default value 2023-08-31 13:34:23 +02:00
mark
f4852a4bdb Fix arg handling 2023-08-31 13:32:01 +02:00
mark
a7d515e76a Improve handling of nil args 2023-08-31 12:48:42 +02:00
Mark Dumay
37f6acc984 Merge pull request #497 from gethinode/develop
Improve contrast for accented tables
2023-08-31 12:14:56 +02:00
Mark Dumay
c87bd75334 Merge branch 'main' into develop 2023-08-31 11:56:20 +02:00
mark
77ffbb49a7 Improve contrast for accented tables 2023-08-31 11:55:51 +02:00
Mark Dumay
64533e5dbc Merge pull request #494 from aefly/french-translation
Add French slugs
2023-08-31 11:35:14 +02:00
Mark Dumay
d42b980496 Merge branch 'main' into french-translation 2023-08-31 11:25:50 +02:00
Mark Dumay
2b84def4d8 Merge pull request #496 from gethinode/develop
Fix #495
2023-08-31 11:24:37 +02:00
Mark Dumay
7ba75a04ad Merge branch 'main' into develop 2023-08-31 11:14:21 +02:00
mark
98b88a74ae Fix #495 2023-08-31 11:13:52 +02:00
aefly
31d98ef263 Merge branch 'gethinode:main' into french-translation 2023-08-31 10:09:58 +02:00
aefly
3f34ae2ab0 Add 'composents' slug 2023-08-31 10:07:02 +02:00
aefly
d8b52d8772 Add 'elements-bootstrap' slug 2023-08-31 10:06:39 +02:00
Mark Dumay
103fa52511 Merge pull request #492 from gethinode/develop
Bump package version
2023-08-31 07:31:06 +02:00
mark
cdb0a8e685 Bump package version 2023-08-31 07:20:51 +02:00
mark
6b217d6c02 Update build stats 2023-08-31 07:20:29 +02:00
Mark Dumay
490b0a32b2 Merge pull request #491 from gethinode/main
Sync with main
2023-08-31 07:17:49 +02:00
Mark Dumay
c0684f4486 Merge pull request #490 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2023-08-31 07:10:49 +02:00
markdumay
988c8dcb08 fix: update Hugo module dependencies 2023-08-31 05:02:09 +00:00
Mark Dumay
a1251de4e8 Merge pull request #489 from gethinode/main
Sync with main
2023-08-31 06:26:50 +02:00
Mark Dumay
a64e4f1d0d Merge pull request #455 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2023-08-31 06:19:54 +02:00
markdumay
72f13a2b66 fix: update Hugo module dependencies 2023-08-31 04:14:03 +00:00
Mark Dumay
a587119310 Merge pull request #488 from aefly/french-translation
Update French Translation
2023-08-31 05:13:38 +02:00
aefly
12e29f944a Update 'components.md' 2023-08-30 22:25:12 +02:00
aefly
19861ce3d4 Update 'bootstrap-elements.md' 2023-08-30 22:21:56 +02:00
aefly
d8647e4f16 Merge branch 'french-translation' of https://github.com/aefly/hinode into french-translation 2023-08-30 22:10:25 +02:00
aefly
60e9abecfe Update 'components.md'
Added 'slug' for French Translation.
2023-08-30 22:10:14 +02:00
aefly
1b45d2b564 Update 'bootstrap-elements.md'
Updated /fr/about to /en/about to illustrate the cross-language links. Added 'slug' for French Translation.
2023-08-30 22:09:35 +02:00
Mark Dumay
25d62a4755 Merge pull request #485 from gethinode/main
Sync with main
2023-08-30 13:58:15 +02:00
Mark Dumay
c0a8fbe86b Merge pull request #484 from gethinode/shortcode
Refine abbr shortcode
2023-08-30 13:13:50 +02:00
Mark Dumay
8a9e7b2d57 Merge branch 'main' into shortcode 2023-08-30 13:06:54 +02:00
Mark Dumay
dc85034aed Merge pull request #474 from aefly/french-translation
Update French Translation with latest hinode version
2023-08-30 09:07:51 +02:00
Mark Dumay
6b029098d9 Merge branch 'main' into french-translation 2023-08-30 08:56:57 +02:00
mark
9f754f93a0 Bump package release 2023-08-30 08:56:01 +02:00
mark
910240df67 Update build stats 2023-08-30 08:55:31 +02:00
mark
4f93a96e7e Add class support for abbr shortcode 2023-08-30 08:49:41 +02:00
mark
f93977ba24 Add mark shortcode example 2023-08-30 08:49:27 +02:00
Mark Dumay
9a260950ef Merge pull request #482 from gethinode/shortcode
Fix emoji support
2023-08-30 07:59:58 +02:00
Mark Dumay
66df7986e7 Merge branch 'main' into shortcode 2023-08-30 07:47:49 +02:00
mark
487da42baa Fix #469 2023-08-30 07:46:46 +02:00
Mark Dumay
64150de775 Merge pull request #481 from gethinode/shortcode
Add sub and sup shortcode
2023-08-30 06:29:25 +02:00
mark
2ded5a6fe5 Fix linting issues 2023-08-30 06:23:14 +02:00
Mark Dumay
feae17bffe Merge branch 'main' into shortcode 2023-08-30 06:16:11 +02:00
mark
0949023b81 Add sub and sup shortcode 2023-08-30 06:15:06 +02:00
aefly
aa096ed497 Update 'bootstrap-elements.md' 2023-08-29 23:06:58 +02:00
aefly
af08703c50 Update 'bootstrap-elements.md' 2023-08-29 22:53:37 +02:00
aefly
5c0939160a Update 'bootstrap-elements.md' 2023-08-29 22:51:06 +02:00
aefly
1a2497f745 Update 'bootstrap-elements.md' 2023-08-29 22:48:36 +02:00
aefly
ec1fb97c93 Merge branch 'gethinode:main' into french-translation 2023-08-29 22:47:10 +02:00
Mark Dumay
c83c3b7fd8 Merge pull request #480 from gethinode/develop
Add mark shortcode
2023-08-29 14:30:09 +02:00
Mark Dumay
158fd884ad Merge branch 'main' into develop 2023-08-29 14:08:46 +02:00
mark
a872cb977b Add mark shortcode 2023-08-29 13:54:16 +02:00
aefly
48d6ab035a Update 'bootstrap-elements.md' 2023-08-28 22:29:39 +02:00
aefly
27ed169c26 Merge branch 'gethinode:main' into french-translation 2023-08-28 22:18:22 +02:00
Mark Dumay
b3118bab80 Merge pull request #479 from gethinode/develop
Add kbd shortcode
2023-08-28 17:28:35 +02:00
Mark Dumay
73edc42408 Merge branch 'main' into develop 2023-08-28 17:20:48 +02:00
mark
a2a466cf2b Add kbd shortcode 2023-08-28 17:20:14 +02:00
Mark Dumay
c426340ed2 Merge pull request #478 from gethinode/develop
Support alt text arg for thumbnail
2023-08-28 17:19:22 +02:00
Mark Dumay
ae14943882 Merge branch 'main' into develop 2023-08-28 16:38:33 +02:00
mark
c4b43fd2ac Support alt text arg for thumbnail 2023-08-28 16:38:03 +02:00
Mark Dumay
df017d9d5d Merge pull request #475 from gethinode/develop
Fix timeline content
2023-08-28 15:56:11 +02:00
Mark Dumay
9c0ea3e564 Merge branch 'main' into develop 2023-08-28 15:47:06 +02:00
github-actions[bot]
eb5d4b3dec Merge pull request #477 from gethinode/dependabot/npm_and_yarn/eslint-8.48.0
Bump eslint from 8.47.0 to 8.48.0
2023-08-28 13:45:44 +00:00
Mark Dumay
8de7ad2d82 Merge branch 'main' into develop 2023-08-28 15:41:18 +02:00
dependabot[bot]
96fb918b7a Bump eslint from 8.47.0 to 8.48.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.47.0 to 8.48.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.47.0...v8.48.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-08-28 13:41:06 +00:00
github-actions[bot]
d2e81917d3 Merge pull request #476 from gethinode/dependabot/npm_and_yarn/markdownlint-cli2-0.9.2
Bump markdownlint-cli2 from 0.9.0 to 0.9.2
2023-08-28 13:40:10 +00:00
dependabot[bot]
020e11a06c Bump markdownlint-cli2 from 0.9.0 to 0.9.2
Bumps [markdownlint-cli2](https://github.com/DavidAnson/markdownlint-cli2) from 0.9.0 to 0.9.2.
- [Changelog](https://github.com/DavidAnson/markdownlint-cli2/blob/main/CHANGELOG.md)
- [Commits](https://github.com/DavidAnson/markdownlint-cli2/compare/v0.9.0...v0.9.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-28 13:34:18 +00:00
Mark Dumay
8470b4f809 Merge branch 'main' into develop 2023-08-28 14:50:11 +02:00
mark
12f29b765d Bump package release 2023-08-28 14:49:23 +02:00
mark
4bf56b9c99 Fix rendering of timeline content 2023-08-28 14:48:11 +02:00
mark
584a51a5bf Use quoted abbr example 2023-08-28 14:47:41 +02:00
mark
e36858d1e1 Exclude abbr data from mounts 2023-08-28 14:47:22 +02:00
Mark Dumay
860b12a63a Merge pull request #473 from gethinode/develop
Add abbr shortcode
2023-08-28 14:15:40 +02:00
mark
50708e2f89 Update package version 2023-08-28 14:02:01 +02:00
mark
ad24e44041 Fix abbr example 2023-08-28 14:00:56 +02:00
mark
ad143b87c9 Update build stats 2023-08-28 13:57:35 +02:00
mark
f17914a3ef Add abr shortcode 2023-08-28 13:57:29 +02:00
mark
3feeff793e Include data folder in module mounts 2023-08-28 13:57:10 +02:00
aefly
d9152fa8ea Add 'bootstrap-elements.md' for French Translation 2023-08-27 19:30:27 +02:00
aefly
77e3698b04 Add 'components.md' for French Translation 2023-08-27 15:20:37 +02:00
aefly
d6366618fd Add 'timeline-fr.yml' for French Translation 2023-08-27 15:14:44 +02:00
mark
fe603eca70 Fix timeline arg 2023-08-27 14:07:51 +02:00
Mark Dumay
7904caa902 Merge branch 'main' into develop 2023-08-27 13:53:12 +02:00
mark
f4dcb16d24 Add support for translated timeline data 2023-08-27 13:52:26 +02:00
Mark Dumay
cce017c646 Update npm-publish.yml 2023-08-27 09:41:35 +02:00
Mark Dumay
148615d4b6 Merge pull request #472 from gethinode/develop
Disable HTML support by default
2023-08-27 08:17:58 +02:00
mark
6db24d27c8 Update build stats 2023-08-27 07:55:16 +02:00
mark
f5ada35478 Fix syntax colors in dark mode 2023-08-27 07:55:08 +02:00
Mark Dumay
d229c84c91 Merge branch 'main' into develop 2023-08-27 07:30:46 +02:00
mark
7de46e9d46 Bump package release 2023-08-27 07:28:57 +02:00
mark
76b32c9138 Enable warning for inline HTML elements by default 2023-08-27 07:27:25 +02:00
mark
24148c053d Add markdownlint exceptions 2023-08-27 07:26:41 +02:00
mark
23cb30b31c Update build stats 2023-08-27 07:23:16 +02:00
mark
6c9e2dd0ab Convert collapse input to markdown 2023-08-27 07:23:01 +02:00
mark
a9db8747c1 Render example using Goldmark 2023-08-27 07:22:27 +02:00
mark
492d3f1a2a Render collapse using Goldmark 2023-08-27 07:19:37 +02:00
mark
fb6ce16433 Render button-group using Goldmark 2023-08-27 07:18:06 +02:00
mark
046a1acfb3 Render carousel using Goldmark 2023-08-27 07:10:57 +02:00
mark
f2ae017562 Fix linting errors 2023-08-27 06:35:41 +02:00
mark
0de916f4b7 Ensure text color has sufficient contrast 2023-08-27 06:32:36 +02:00
mark
ddc19e40ef Introduce badge shortcode to replace HTML code 2023-08-27 06:09:42 +02:00
mark
9f437c0576 Add goldmark renderer comment 2023-08-26 14:41:47 +02:00
mark
f27773c9cb Render nav and nav-item using Goldmark 2023-08-26 14:41:00 +02:00
mark
d1690611d9 Plainify assistive label for spinner 2023-08-26 12:59:52 +02:00
mark
6ba7c07a2c Add markdown example to toast message 2023-08-26 12:57:51 +02:00
mark
259c502bfc Render toast message using Goldmark 2023-08-26 12:57:36 +02:00
mark
f81762bcdc Distinguish tooltip from link title 2023-08-26 12:55:07 +02:00
mark
b27264b381 Plainify tooltip title 2023-08-26 12:54:35 +02:00
Mark Dumay
a1c7f32dc5 Update mod-update.yml 2023-08-26 11:50:58 +02:00
mark
9454c07019 Add additional image examples 2023-08-25 06:32:49 +02:00
mark
6e66a147e7 Fix #467 2023-08-25 06:32:38 +02:00
Mark Dumay
099c985617 Merge pull request #465 from gethinode/develop
Catch all fsversions as optional
2023-08-24 15:34:44 +02:00
Mark Dumay
a79a12131b Merge branch 'main' into develop 2023-08-24 15:25:08 +02:00
Mark Dumay
0f82471dab Update lint-build.yml 2023-08-24 15:24:46 +02:00
Mark Dumay
9dd947bbe5 Merge branch 'main' into develop 2023-08-24 15:18:41 +02:00
mark
6982e05fac Catch all fsversions as optional 2023-08-24 15:17:36 +02:00
Mark Dumay
edc30ad0cd Merge pull request #464 from gethinode/develop
Fix permissions and card content
2023-08-24 13:08:02 +02:00
mark
b9780c5515 Move fsevents to optional dependencies 2023-08-24 12:58:55 +02:00
mark
9bb6578c61 Add fsevents package 2023-08-24 12:52:18 +02:00
mark
f360bbf3c6 Bump package release 2023-08-24 11:23:35 +02:00
mark
b749367999 Enable markdown card content 2023-08-24 11:22:42 +02:00
mark
4bcb83a1a4 Refine argument docs 2023-08-24 10:42:53 +02:00
Mark Dumay
97e6ec8f99 Merge pull request #463 from gethinode/main
Sync with main
2023-08-24 07:46:07 +02:00
mark
023e552157 Fix permissions for private repos 2023-08-24 07:36:14 +02:00
Mark Dumay
17973c1090 Merge pull request #462 from gethinode/safehtml
Replace HTML with Markdown and shortcodes
2023-08-24 06:31:03 +02:00
mark
28b5bd8c58 Adjust card-group example 2023-08-24 06:11:37 +02:00
Mark Dumay
62f94369c9 Merge branch 'main' into safehtml 2023-08-24 05:19:09 +02:00
mark
c9fc53a546 Bump package release 2023-08-24 05:18:45 +02:00
mark
946f8ca938 Update build stats 2023-08-23 14:30:58 +02:00
mark
ffbeb3ede7 Replace HTML examples with Markdown syntax 2023-08-23 14:30:53 +02:00
mark
6dd4678339 Support purging of HTML comments 2023-08-23 14:30:18 +02:00
mark
82090571d6 Update build stats 2023-08-23 12:56:38 +02:00
mark
63bfe64e71 Use card-group in about page 2023-08-23 12:56:31 +02:00
mark
5121f92870 Add card closing element 2023-08-23 12:52:14 +02:00
mark
1b95b3a265 Add card-group shortcode 2023-08-23 12:51:38 +02:00
mark
e8d926eca8 Remove hover color for cards without href 2023-08-23 12:49:38 +02:00
mark
2076081405 Add anchor support for vector graphics 2023-08-23 06:30:53 +02:00
mark
da5b898250 Set unsafe html to false by default 2023-08-23 06:30:30 +02:00
Mark Dumay
cf2f806820 Merge pull request #460 from gethinode/develop
Enhance navbar and favicon
2023-08-23 06:27:18 +02:00
Mark Dumay
3ebbea542b Merge branch 'main' into develop 2023-08-23 06:13:47 +02:00
mark
cce963aaba Fix default path for logo 2023-08-23 05:13:57 +02:00
mark
4e6156cae0 Log proper error for missing favicon 2023-08-22 16:16:15 +02:00
github-actions[bot]
457f122861 Merge pull request #457 from gethinode/dependabot/npm_and_yarn/markdownlint-cli2-0.9.0
Bump markdownlint-cli2 from 0.8.1 to 0.9.0
2023-08-22 13:56:25 +00:00
dependabot[bot]
d94b54b90f Bump markdownlint-cli2 from 0.8.1 to 0.9.0
Bumps [markdownlint-cli2](https://github.com/DavidAnson/markdownlint-cli2) from 0.8.1 to 0.9.0.
- [Changelog](https://github.com/DavidAnson/markdownlint-cli2/blob/main/CHANGELOG.md)
- [Commits](https://github.com/DavidAnson/markdownlint-cli2/compare/v0.8.1...v0.9.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-22 13:50:37 +00:00
github-actions[bot]
834ac4744b Merge pull request #456 from gethinode/dependabot/npm_and_yarn/eslint-plugin-n-16.0.2
Bump eslint-plugin-n from 16.0.1 to 16.0.2
2023-08-22 13:36:49 +00:00
dependabot[bot]
2716af78be Bump eslint-plugin-n from 16.0.1 to 16.0.2
Bumps [eslint-plugin-n](https://github.com/eslint-community/eslint-plugin-n) from 16.0.1 to 16.0.2.
- [Release notes](https://github.com/eslint-community/eslint-plugin-n/releases)
- [Commits](https://github.com/eslint-community/eslint-plugin-n/compare/16.0.1...16.0.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-22 13:30:51 +00:00
mark
3d37a93336 Support logos with color mode 2023-08-22 14:52:07 +02:00
mark
1d976cb7df Fix incorrect size docs 2023-08-22 14:50:07 +02:00
mark
4e2a5a39e9 Support configurable navbar size 2023-08-22 14:46:49 +02:00
github-actions[bot]
63ef832ab4 Merge pull request #453 from gethinode/dependabot/npm_and_yarn/eslint-plugin-import-2.28.1
Bump eslint-plugin-import from 2.28.0 to 2.28.1
2023-08-21 13:48:08 +00:00
dependabot[bot]
f480dfa6b4 Bump eslint-plugin-import from 2.28.0 to 2.28.1
Bumps [eslint-plugin-import](https://github.com/import-js/eslint-plugin-import) from 2.28.0 to 2.28.1.
- [Release notes](https://github.com/import-js/eslint-plugin-import/releases)
- [Changelog](https://github.com/import-js/eslint-plugin-import/blob/main/CHANGELOG.md)
- [Commits](https://github.com/import-js/eslint-plugin-import/compare/v2.28.0...v2.28.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-21 13:31:42 +00:00
mark
bd85cabce9 Fix wording 2023-08-21 15:12:29 +02:00
mark
76a5408bda Fix wording 2023-08-21 15:06:55 +02:00
mark
61537afb93 Fix wording 2023-08-21 15:05:55 +02:00
Mark Dumay
12417340f2 Merge pull request #452 from gethinode/develop
Refine lint and build cache
2023-08-21 14:49:05 +02:00
Mark Dumay
b7533957b2 Merge branch 'main' into develop 2023-08-21 13:55:16 +02:00
mark
15512c9448 Fix macOS cache 2023-08-21 13:51:53 +02:00
mark
f69efa7ec8 Allow empty input for styles and scripts 2023-08-21 13:07:52 +02:00
Mark Dumay
f3c392760a Merge pull request #451 from gethinode/develop
Streamline workflows
2023-08-21 10:53:39 +02:00
mark
d59e6ea87b Adjust layout 2023-08-21 10:38:08 +02:00
mark
476d36d41c Simplify lint workflow 2023-08-21 10:37:16 +02:00
mark
0ccc0c64f4 Rename to mod-update 2023-08-20 14:02:53 +02:00
mark
c5b4db6141 Rename to lint-build 2023-08-20 14:02:49 +02:00
mark
6d0f917a0e Hold any major dependency update 2023-08-20 14:02:07 +02:00
Mark Dumay
497dbe6bce Merge pull request #449 from gethinode/main
Sync with main
2023-08-20 14:01:04 +02:00
Mark Dumay
1da8133e09 Merge branch 'develop' into main 2023-08-20 13:45:47 +02:00
Mark Dumay
b3354a35ad Merge pull request #448 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2023-08-20 13:19:55 +02:00
markdumay
827fe5b5e1 fix: update Hugo module dependencies 2023-08-20 10:12:49 +00:00
Mark Dumay
fc98b2d768 Merge pull request #447 from gethinode/refine
Remove draft status
2023-08-20 12:11:42 +02:00
Mark Dumay
dd5c6886cd Merge branch 'main' into refine 2023-08-20 12:03:27 +02:00
mark
72f6f5d260 Remove draft status 2023-08-20 12:02:38 +02:00
Mark Dumay
d54fd6abf8 Delete update-test.yml 2023-08-20 11:32:37 +02:00
Mark Dumay
5c75a78a3d Merge pull request #445 from gethinode/refine
Update author and committer
2023-08-20 11:32:01 +02:00
mark
653c2b9d4b Revert author and committer 2023-08-20 11:20:22 +02:00
mark
dba91ad560 Simplify environment 2023-08-20 11:00:30 +02:00
Mark Dumay
108672e9a1 Merge branch 'main' into refine 2023-08-20 10:53:00 +02:00
mark
18499d12c5 Update author and committer 2023-08-20 10:52:03 +02:00
Mark Dumay
79e97f0b5b Merge pull request #443 from gethinode/refine
Refine update workflow paths and body
2023-08-20 10:40:50 +02:00
Mark Dumay
dba7ad3e09 Merge branch 'main' into refine 2023-08-20 09:49:09 +02:00
mark
d260ada9ec Refine paths and body 2023-08-20 09:47:34 +02:00
Mark Dumay
1503937c48 Merge pull request #441 from gethinode/mod-update
Refactor update workflow
2023-08-20 09:41:11 +02:00
Mark Dumay
585f4d7c5c Merge branch 'main' into mod-update 2023-08-20 09:16:00 +02:00
mark
b125085315 Refactor update workflow 2023-08-20 09:15:10 +02:00
Mark Dumay
ee605fb4eb Update go.mod 2023-08-20 09:11:40 +02:00
Mark Dumay
2e14d200ed Update update-test.yml 2023-08-20 09:08:25 +02:00
Mark Dumay
de28b1b2e3 Update update-test.yml 2023-08-20 07:47:02 +02:00
Mark Dumay
467815e8d5 Update update-test.yml 2023-08-20 07:40:51 +02:00
Mark Dumay
98687a0ec1 Update update-test.yml 2023-08-20 07:29:46 +02:00
Mark Dumay
bc92818c53 Update update-test.yml 2023-08-20 07:20:53 +02:00
Mark Dumay
3fd6806549 Update update-test.yml 2023-08-20 06:01:03 +02:00
Mark Dumay
3f76ed2f59 Update update-test.yml 2023-08-20 05:55:00 +02:00
Mark Dumay
c4b9f91376 Update update-test.yml 2023-08-20 05:50:15 +02:00
Mark Dumay
c797a2f7a8 Update update-test.yml 2023-08-19 17:15:14 +02:00
Mark Dumay
c23ceafddd Update update-test.yml 2023-08-19 17:02:30 +02:00
Mark Dumay
e0b1b0250c Update update-test.yml 2023-08-19 16:10:04 +02:00
Mark Dumay
ce54758f36 Update update-test.yml 2023-08-19 16:06:52 +02:00
Mark Dumay
a80efa9578 Update update-test.yml 2023-08-19 15:31:26 +02:00
Mark Dumay
04bad29146 Update update-test.yml 2023-08-19 15:29:20 +02:00
Mark Dumay
8816c0c40e Update update-test.yml 2023-08-19 15:21:31 +02:00
Mark Dumay
b6c9ce4a9f Create update-test.yml 2023-08-19 15:19:15 +02:00
mark
c8d16104d5 Refine update workflow 2023-08-19 15:16:20 +02:00
mark
215d125032 Standardize update workflow 2023-08-19 14:36:54 +02:00
mark
ccdf4ab391 Refactor module installation and updates 2023-08-19 14:29:09 +02:00
mark
8bd7d68d2e Add ci config for example site 2023-08-19 14:02:55 +02:00
mark
03f1df615e Update build stats 2023-08-19 14:00:25 +02:00
mark
86ee2d3d2f Consolidate resource cache with parent cache 2023-08-19 14:00:12 +02:00
mark
9c608b0583 Update go.sum 2023-08-19 13:10:15 +02:00
mark
bdc84fb36d Update build stats 2023-08-19 13:05:35 +02:00
mark
4dda37ad3d Downgrade mod-katex to trigger update 2023-08-19 12:52:41 +02:00
mark
7559010b83 Downgrade mod-katex to trigger update 2023-08-19 12:51:27 +02:00
Mark Dumay
75644ae046 Merge pull request #438 from gethinode/footer
Suppress social footer when no media are defined
2023-08-19 09:56:38 +02:00
mark
994ffe5ab5 Bump package release 2023-08-19 09:43:20 +02:00
Mark Dumay
1dc016a6f8 Merge branch 'main' into footer 2023-08-19 09:33:45 +02:00
Mark Dumay
44e3b31c67 Adjust cache path
* Adjust env var reference

* Adjust cache path

* Adjust cache path

* Adjust cache path

* Adjust cache dir

* Show cachedir in worklfow log

* Show cachedir in worklfow log

* Update Windows cache dir

* Update Windows cache dir
2023-08-19 09:32:41 +02:00
mark
3cbfd60098 Update Windows cache dir 2023-08-19 09:19:46 +02:00
mark
fc0715aa97 Update Windows cache dir 2023-08-19 09:09:27 +02:00
mark
84fff0fe8b Show cachedir in worklfow log 2023-08-19 09:05:20 +02:00
mark
153ef9bf1f Show cachedir in worklfow log 2023-08-19 09:03:26 +02:00
mark
bbe8f3a32c Adjust cache dir 2023-08-19 08:53:19 +02:00
mark
eb7c9b5c3c Adjust cache path 2023-08-19 07:30:43 +02:00
mark
90e73ed010 Adjust cache path 2023-08-19 07:29:38 +02:00
mark
e613017c13 Adjust cache path 2023-08-19 07:28:22 +02:00
Mark Dumay
6404bb84ed Merge branch 'main' into develop 2023-08-19 07:05:19 +02:00
mark
55ec9acccf Adjust env var reference 2023-08-19 07:04:43 +02:00
Mark Dumay
0197b79427 Merge pull request #436 from gethinode/develop
Refactor workflows
2023-08-19 06:56:54 +02:00
mark
828e531b52 Adjust env var reference 2023-08-19 06:53:53 +02:00
mark
23279d9710 Adjust env var reference 2023-08-19 06:51:27 +02:00
mark
0caf473897 Consolidate env vars 2023-08-19 06:42:47 +02:00
mark
8e68534b28 Suppress social footer when no media are defined 2023-08-19 06:42:11 +02:00
Mark Dumay
0f07ccfd3f Merge branch 'main' into develop 2023-08-19 06:36:02 +02:00
mark
77fad02da7 Add cache to build commands 2023-08-19 06:14:00 +02:00
mark
7a9cb1b2ca Add ci build cache configuration 2023-08-19 06:13:10 +02:00
mark
d82ed79989 Refactor lint and build workflows 2023-08-19 06:12:45 +02:00
mark
ff82ded064 Refactor npm publish workflow 2023-08-19 05:38:56 +02:00
github-actions[bot]
78167f2d03 Merge pull request #434 from gethinode/dependabot/npm_and_yarn/stylelint-15.10.3
Bump stylelint from 15.10.2 to 15.10.3
2023-08-18 13:53:33 +00:00
dependabot[bot]
80f2084822 Bump stylelint from 15.10.2 to 15.10.3
Bumps [stylelint](https://github.com/stylelint/stylelint) from 15.10.2 to 15.10.3.
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/15.10.2...15.10.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-18 13:47:50 +00:00
Mark Dumay
a7d67e993f Merge pull request #432 from gethinode/main
Sync with main
2023-08-17 12:10:26 +02:00
Mark Dumay
317eab54f8 Merge pull request #431 from gethinode/relref
Refactor link shortcode
2023-08-17 09:39:36 +02:00
mark
cb90ef363b Bump package version 2023-08-17 09:27:45 +02:00
Mark Dumay
f31309f863 Merge branch 'main' into relref 2023-08-17 09:24:22 +02:00
mark
a76a692075 Update build stats 2023-08-17 09:22:45 +02:00
mark
f52f758962 Refactor link shortcode 2023-08-17 09:22:39 +02:00
mark
bcc3a7877e Use proper page context to render inner content 2023-08-17 09:22:22 +02:00
mark
7b52da5ce0 Add link shortcode 2023-08-17 09:21:29 +02:00
mark
e7403bd1a4 Add multilanguage support 2023-08-17 09:21:09 +02:00
mark
2881eb4546 Trim trailing '/' to improve finding the right page 2023-08-17 09:20:53 +02:00
Mark Dumay
c7cc2269ba Merge pull request #430 from gethinode/develop
Improve references and page resource handling
2023-08-16 16:10:22 +02:00
Mark Dumay
014158bc63 Merge branch 'main' into develop 2023-08-16 16:00:17 +02:00
Mark Dumay
8dcccb17ad Merge pull request #429 from aefly/french-translation
Adjusted spacing in French language
2023-08-16 16:00:05 +02:00
Mark Dumay
325a222386 Merge branch 'main' into develop 2023-08-16 15:55:50 +02:00
mark
9b4f4229f7 Bump package release 2023-08-16 15:52:07 +02:00
mark
3b719bf145 Update build stats 2023-08-16 15:51:18 +02:00
mark
136d5d2e15 Use context to identify references incl anchors 2023-08-16 15:51:07 +02:00
mark
1c10a00089 Use proper page context to render inner content 2023-08-16 15:47:53 +02:00
aefly
a8d9401de3 Adjusted spacing in French error message 2023-08-16 14:43:32 +02:00
mark
e77fa7dfbc Add support for wrapper argument 2023-08-16 13:05:42 +02:00
mark
8d3c0cc4ce Add support for portrait ratio 2023-08-16 13:05:30 +02:00
mark
87e04c8c4b Fix indentation 2023-08-16 13:04:15 +02:00
mark
e1f4228c31 Add support for 3x2 ratio 2023-08-16 13:04:02 +02:00
mark
4cb4bef579 Support page resources 2023-08-16 09:26:37 +02:00
Mark Dumay
744a0f7248 Merge pull request #426 from gethinode/develop
Clean up installation
2023-08-15 14:10:30 +02:00
mark
a1e48ade96 Fix linting issue 2023-08-15 14:01:34 +02:00
Mark Dumay
9a2540cf04 Merge branch 'main' into develop 2023-08-15 13:55:57 +02:00
mark
399f525a3f Bump package version 2023-08-15 13:55:14 +02:00
mark
f1c99b0ed7 Update installation and license 2023-08-15 13:55:07 +02:00
mark
6e14e50dfd Include build stats in repo 2023-08-15 13:18:49 +02:00
mark
a143f90a37 Clean up stylelint config 2023-08-15 13:18:34 +02:00
mark
e60b2ec4a1 Add build stats to repo 2023-08-15 13:18:14 +02:00
mark
0250ef68dd Expand all code lines horizontally 2023-08-15 08:41:38 +02:00
Mark Dumay
71c9c19480 Merge pull request #425 from gethinode/develop
Fix menu identification of home
2023-08-14 16:19:43 +02:00
Mark Dumay
fe108c2621 Merge branch 'main' into develop 2023-08-14 15:50:44 +02:00
github-actions[bot]
aa76036470 Merge pull request #423 from gethinode/dependabot/npm_and_yarn/autoprefixer-10.4.15
Bump autoprefixer from 10.4.14 to 10.4.15
2023-08-14 13:47:55 +00:00
Mark Dumay
1475782fa6 Merge branch 'main' into develop 2023-08-14 15:42:52 +02:00
Mark Dumay
aa201d561d Merge branch 'main' into dependabot/npm_and_yarn/autoprefixer-10.4.15 2023-08-14 15:42:23 +02:00
github-actions[bot]
35a8776bae Merge pull request #424 from gethinode/dependabot/npm_and_yarn/eslint-8.47.0
Bump eslint from 8.46.0 to 8.47.0
2023-08-14 13:42:09 +00:00
mark
1f000d4b23 Fix menu identification of home 2023-08-14 15:36:15 +02:00
dependabot[bot]
fa268f4541 Bump eslint from 8.46.0 to 8.47.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.46.0 to 8.47.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.46.0...v8.47.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-08-14 13:35:07 +00:00
dependabot[bot]
f9c8c85578 Bump autoprefixer from 10.4.14 to 10.4.15
Bumps [autoprefixer](https://github.com/postcss/autoprefixer) from 10.4.14 to 10.4.15.
- [Release notes](https://github.com/postcss/autoprefixer/releases)
- [Changelog](https://github.com/postcss/autoprefixer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/autoprefixer/compare/10.4.14...10.4.15)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-14 13:34:48 +00:00
Mark Dumay
f7274cd43d Merge pull request #422 from gethinode/main
Sync with main
2023-08-14 15:21:56 +02:00
Mark Dumay
b122c40148 Merge pull request #421 from gethinode/highlight
Fix line highlights
2023-08-14 15:14:57 +02:00
Mark Dumay
05fa3b795c Merge branch 'main' into highlight 2023-08-14 15:02:35 +02:00
Mark Dumay
5f329f9271 Merge pull request #420 from gethinode/develop
Mount initial placeholder content
2023-08-14 15:01:40 +02:00
mark
22f9b9ee68 Fix line highlights 2023-08-14 15:00:51 +02:00
Mark Dumay
3713f73da6 Merge branch 'main' into develop 2023-08-14 14:10:13 +02:00
mark
efa4933c77 Bump package version 2023-08-14 14:09:32 +02:00
mark
fc9be4cdcf Mount initial placeholder content 2023-08-14 14:04:34 +02:00
135 changed files with 7589 additions and 1335 deletions

2
.github/release.yml vendored
View File

@@ -14,7 +14,7 @@ changelog:
labels:
- Semver-Minor
- enhancement
- title: 🐛 Bug fixes
- title: 🐛 Bug Fixes
labels:
- fix
- bugfix

View File

@@ -16,27 +16,24 @@ jobs:
uses: dependabot/fetch-metadata@v1
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"
- name: Enable auto-merge for Dependabot PRs
run: gh pr merge --auto --merge "$PR_URL"
env:
PR_URL: ${{github.event.pull_request.html_url}}
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
- name: Approve patch and minor updates
if: ${{steps.dependabot-metadata.outputs.update-type == 'version-update:semver-patch' || steps.dependabot-metadata.outputs.update-type == 'version-update:semver-minor'}}
run: gh pr review $PR_URL --approve -b "I'm **approving** this pull request because **it includes a patch or minor update**"
env:
PR_URL: ${{github.event.pull_request.html_url}}
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
- name: Approve major updates of development dependencies
if: ${{steps.dependabot-metadata.outputs.update-type == 'version-update:semver-major' && steps.dependabot-metadata.outputs.dependency-type == 'direct:development'}}
run: gh pr review $PR_URL --approve -b "I'm **approving** this pull request because **it includes a major update of a dependency used only in development**"
env:
PR_URL: ${{github.event.pull_request.html_url}}
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
- name: Comment on major updates of non-development dependencies
if: ${{steps.dependabot-metadata.outputs.update-type == 'version-update:semver-major' && steps.dependabot-metadata.outputs.dependency-type == 'direct:production'}}
- name: Comment on major updates of any dependencies
if: ${{steps.dependabot-metadata.outputs.update-type == 'version-update:semver-major'}}
run: |
gh pr comment $PR_URL --body "I'm **not approving** this PR because **it includes a major update of a dependency used in production**"
gh pr comment $PR_URL --body "I'm **not approving** this PR because **it includes a major update of a dependency**"
gh pr edit $PR_URL --add-label "requires-manual-qa"
env:
PR_URL: ${{github.event.pull_request.html_url}}

View File

@@ -1,30 +0,0 @@
name: build
on:
push:
tags:
- v*
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
strategy:
matrix:
os: [macos-latest, windows-latest, ubuntu-latest]
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 }}
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
- run: npm run build
- run: npm run build:example

97
.github/workflows/lint-build.yml vendored Normal file
View File

@@ -0,0 +1,97 @@
name: Lint & build
on:
workflow_dispatch:
push:
tags:
- v*
branches: [ main ]
pull_request:
branches: [ main ]
env:
CACHE_KEY: 'hugo-hinode'
CACHE_PATH_DEBIAN: '/tmp/hugo_cache_runner'
CACHE_PATH_WIN: '~\AppData\Local\hugo_cache'
CACHE_PATH_MAC: '/Users/runner/Library/Caches/hugo_cache'
jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v3
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: lts/*
cache: 'npm'
cache-dependency-path: '**/package-lock.json'
# [24/AUG/23] Adjusted from npm ci to prevent EBADPLATFORM error due to fsevents
- name: Install npm
run: npm i
- name: Lint the source files
run: npm run lint
build:
needs: lint
strategy:
matrix:
os: [macos-latest, windows-latest, ubuntu-latest]
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
node-version: [18.x, 20.x]
runs-on: ${{ matrix.os }}
steps:
- name: Check out repository
uses: actions/checkout@v3
- name: Set up Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
cache-dependency-path: '**/package-lock.json'
- name: Install Dart Sass
run: |
if [ "$RUNNER_OS" == "Linux" ]; then
sudo snap install dart-sass
elif [ "$RUNNER_OS" == "macOS" ]; then
brew install sass/sass/sass
elif [ "$RUNNER_OS" == "Windows" ]; then
choco install sass
fi
shell: bash
# [24/AUG/23] Adjusted from npm ci for non-macOS to prevent EBADPLATFORM error due to fsevents
- name: Perform clean install of npm
run: |
if [ "$RUNNER_OS" == "macOS" ]; then
npm ci
else
npm i
fi
shell: bash
# Cache Hugo cachedir and resourcedir (configured in config/ci/hugo.toml) for each OS
# No additional cache invalidation is needed, Hugo uses checksums itself
- name: Use Hugo cache
uses: actions/cache@v3
with:
path: ${{ runner.os == 'Windows' && env.CACHE_PATH_WIN || runner.os == 'macOS' && env.CACHE_PATH_MAC || env.CACHE_PATH_DEBIAN }}
key: ${{ runner.os }}-${{ env.CACHE_KEY }}
restore-keys: |
${{ runner.os }}-${{ env.CACHE_KEY }}
- name: Build main site
run: npm run build:cache
# The example site is to be published to demo.gethinode.com
- name: Build example site
run: npm run build:example:ci

View File

@@ -1,31 +0,0 @@
name: lint
on:
push:
tags:
- v*
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
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

62
.github/workflows/mod-update.yml vendored Normal file
View File

@@ -0,0 +1,62 @@
name: Update Hugo dependencies
on:
workflow_dispatch:
schedule:
- cron: '0 3 * * *' # run daily at 03:00 AM
permissions:
contents: write
pull-requests: write
jobs:
update-mod:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: lts/*
cache: 'npm'
cache-dependency-path: '**/package-lock.json'
# [26/AUG/23] Adjusted from npm ci to prevent EBADPLATFORM error due to fsevents
- name: Install npm
run: npm i
- name: Update Hugo module dependencies
id: mod-updates
run: |
MOD_OUTPUT=$(npm run mod:update 2>&1)
echo "$MOD_OUTPUT"
MOD_UPDATES=$(echo "$MOD_OUTPUT" | grep '^go: upgraded' | sed 's/go: / - /' | sort -u)
echo 'MOD_UPDATES<<EOF' >> $GITHUB_OUTPUT
echo "$MOD_UPDATES" >> "$GITHUB_OUTPUT"
echo 'EOF' >> $GITHUB_OUTPUT
- name: Create Pull Request
uses: gethinode-actions/create-pull-request@v5
with:
token: ${{ secrets.HUGO_MOD_PR }}
commit-message: 'fix: update Hugo module dependencies'
committer: GitHub <noreply@github.com>
branch: hugo-mod-dependencies
delete-branch: true
title: 'Update Hugo module dependencies'
body: |
This PR is auto-generated by [create-pull-request][1].
Changes to go.mod:
${{ steps.mod-updates.outputs.MOD_UPDATES }}
[1]: https://github.com/peter-evans/create-pull-request
labels: dependencies
add-paths: |
go.mod
go.sum
**/go.mod
**/go.sum

View File

@@ -1,35 +1,41 @@
# This workflow will run tests using node and then publish a package to GitHub Packages when a release is created
# For more information see: https://help.github.com/actions/language-and-framework-guides/publishing-nodejs-packages
name: Node.js Package
# This workflow will run tests using node and then publish a package to npmjs.org when a release is created
# For more information see: https://docs.github.com/en/actions/publishing-packages/publishing-nodejs-packages
name: Publish package to npmjs
on:
workflow_dispatch:
branches: [ main ]
release:
types: [created]
types: [published]
env:
REGISTRY_URL: 'https://registry.npmjs.org/'
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 16
- run: npm ci
- run: npm test
strategy:
matrix:
os: [ubuntu-latest]
node-version: [20.x]
runs-on: ${{ matrix.os }}
publish-npm:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- name: Checkout repository
uses: actions/checkout@v3
- name: Setup .npmrc file to publish to npm
uses: actions/setup-node@v3
with:
node-version: 16
registry-url: https://registry.npmjs.org/
- run: npm ci
- run: npm publish
node-version: ${{ matrix.node-version }}
registry-url: ${{ env.REGISTRY_URL }}
cache: 'npm'
cache-dependency-path: '**/package-lock.json'
# [27/AUG/23] Adjusted from npm ci to prevent EBADPLATFORM error due to fsevents
- name: Install npm
run: npm i
- name: Publish package to npm
run: npm publish
env:
NODE_AUTH_TOKEN: ${{secrets.npm_token}}
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

View File

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

3
.gitignore vendored
View File

@@ -4,5 +4,4 @@ resources/
node_modules/
.DS_store
.hugo_build.lock
hugo_stats.json
.hugo_build.lock

View File

@@ -4,7 +4,6 @@
"MD013": false,
"MD024": false,
"MD026": false,
"MD033": false,
"MD034": false,
"MD051": false,
"MD053": false

View File

@@ -1,8 +1,8 @@
assets/scss/common/_variables.scss
assets/scss/components/_syntax-dark.scss
assets/scss/components/_syntax-light.scss
assets/scss/hotfix
assets/scss/vendor
assets/scss/theme/fonts.scss
assets/scss/app-dart.scss
assets/scss/app.scss
node_modules

View File

@@ -1,5 +1,6 @@
# Hugo Theme Hinode
<!-- markdownlint-disable MD033 -->
<!-- Tagline -->
<p align="center">
<b>A clean documentation and blog theme for your Hugo site based on Bootstrap 5</b>
@@ -47,6 +48,7 @@
<a href="#donate">Donate</a>
<a href="#license">License</a>
</p>
<!-- markdownlint-enable MD033 -->
## About
@@ -56,54 +58,42 @@
- [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 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
- Embedded comments through light-weight integration with GitHub via [utteranc.es][utterances]
- Integrated sidebar navigation for content-heavy sections, such as documentation pages
- Reponsive image handling for multiple screen sizes and resolutions
- Optimized search results, scoring 100 points for SEO on [PageSpeed Insights][pagespeed]
- Secure by default, scoring A+ on [Mozilla Observatory test][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 supports [Node Package Manager][npm] (npm) to automate the build process and to keep track of dependencies.
Detailed information about Hinode is available on the [official website][website].
## Prerequisites
Hinode requires Git, Node.js and npm for local development and testing. Download the Git binary from the [official website][git_download]. Next, download and install [Node.js][nodejs] (it includes npm) for your platform.
Hinode is a [Hugo theme that uses modules][hugo_modules] to install and maintain various components. It can be installed using either Hugo or npm. If you would like to take advantage of automation, the npm approach is recommended. Refer to the [Hinode template][repository_template] for installation instructions with npm.
The installation instructions in this readme install Hinode as a regular Hugo theme. Hinode requires the following software to be installed on your local machine.
- [Go binary][golang_download]
- [Hugo][nodejs] (extended version)
[Git][git_download] is recommended, but is not a strict requirement.
## Installation
Start a new Hinode project in three steps:
1. Create a new site
Hinode is available as a [template][repository_template], and a [main repository][repository]. The template [npm][npm] to link to the latest available version of Hinode. Unless you plan to customize a lot, it is recommended to use the template:
1. **Create a new site**
```bash
git clone https://github.com/gethinode/template.git my-hinode-site && cd my-hinode-site
hugo new site my-hinode-site && cd my-hinode-site
```
Use the main theme if you intend to customize the base code:
1. **Initialize the module system**
```bash
git clone https://github.com/gethinode/hinode.git my-hinode-site && cd my-hinode-site
hugo mod init example.com/my-hinode-site
echo "[[module.imports]]\npath = 'github.com/gethinode/hinode'" >> hugo.toml
```
1. Install dependencies
1. **Start a development server**
```bash
npm install
```
1. Start development server
```bash
npm run start
hugo server
```
## Configuration
@@ -123,11 +113,13 @@ Hinode is inspired by the following themes:
## Donate
<!-- markdownlint-disable MD033 -->
<a href="https://www.buymeacoffee.com/markdumay" target="_blank" rel="noopener noreferrer"><img src="https://cdn.buymeacoffee.com/buttons/lato-orange.png" alt="Buy Me A Coffee" style="height: 51px !important;width: 217px !important;"></a>
<!-- markdownlint-enable MD033 -->
## License
The `hinode` and `template` codebase is released under the [MIT license][license]. The documentation (including the "README" and `docs` codebase) is licensed under the Creative Commons [(CC BY-NC 4.0)][cc-by-nc-4.0] license.
The `hinode`, `docs`, and `template` codebase is released under the [MIT license][license]. The documentation of Hinode is licensed under the Creative Commons [(CC BY-NC 4.0)][cc-by-nc-4.0] license. This includes all files within the repository's `/content` and `/exampleSite/content` folders and their children, as well as the "README" in the repository root. This applies to all public repositories maintained by `gethinode` on GitHub, including the `gethinode/hinode`, `gethinode/template`, and `gethinode/docs` repositories, unless specified otherwise.
<!-- MARKDOWN PUBLIC LINKS -->
[blist]: https://github.com/apvarun/blist-hugo-theme
@@ -137,6 +129,8 @@ The `hinode` and `template` codebase is released under the [MIT license][license
[flexsearch]: https://github.com/nextapps-de/flexsearch
[git_download]: https://git-scm.com
[hugo]: https://gohugo.io
[hugo_download]: https://gohugo.io/installation
[hugo_modules]: https://gohugo.io/hugo-modules/
[netlify]: https://www.netlify.com
[nodejs]: https://nodejs.org
[npm]: https://www.npmjs.com
@@ -147,6 +141,7 @@ The `hinode` and `template` codebase is released under the [MIT license][license
<!-- MARKDOWN MAINTAINED LINKS -->
[contribute]: https://gethinode.com/contribute
[getstarted]: https://gethinode.com/docs
[golang_download]: https://go.dev/dl/
[demo]: https://demo.gethinode.com/
[license]: https://github.com/gethinode/hinode/blob/main/LICENSE
[repository]: https://github.com/gethinode/hinode.git

57
assets/scss/app-dart.scss Normal file
View File

@@ -0,0 +1,57 @@
@use "sass:meta";
// Define template variables
@use "hugo:vars" as h; // note: modified for dart-sass
// Include default variable overrides
@import "common/variables-dart.scss"; // note: modified for dart-sass
@import "common/icons.scss";
// Import Bootstrap configuration (mounted by core Bootstrap module)
@import "bootstrap-dart.scss"; // note: modified for dart-sass
// Include dark mode overrides
@import "common/variables-dark.scss";
// Import Hinode theme styles
@import "components/abbr.scss";
@import "components/alert.scss";
@import "components/blockquote.scss";
@import "components/breadcrumb.scss";
@import "components/buttons.scss";
@import "components/card.scss";
@import "components/carousel.scss";
@import "components/clipboard.scss";
@import "components/command.scss";
@import "components/comments.scss";
@import "components/feature.scss";
@import "components/footer.scss";
@import "components/navbar.scss";
@import "components/img.scss";
@import "components/pagination.scss";
@import "components/persona.scss";
@import "components/popover.scss";
@import "components/sidebar.scss";
@import "components/syntax-dart.scss"; // note: modified for dart-sass
@import "components/table.scss";
@import "components/timeline.scss";
@import "components/toc.scss";
@import "components/vimeo.scss";
@import "common/animation.scss";
@import "common/styles.scss";
@import "layouts/reboot.scss";
@import "layouts/type.scss";
@import "common/export.scss";
@import "helpers/colored-links.scss";
@import "helpers/display.scss";
// note: modified for dart-sass
@if h.$import-fonts {
@include meta.load-css(theme/fonts);
}
// Import theme placeholder
@import "theme/theme.scss";
// Import Bootstrap utilities API (mounted by core Bootstrap module)
@import "modules/bootstrap/utilities/api";

View File

@@ -12,6 +12,7 @@
@import "common/variables-dark.scss";
// Import Hinode theme styles
@import "components/abbr.scss";
@import "components/alert.scss";
@import "components/blockquote.scss";
@import "components/breadcrumb.scss";
@@ -30,6 +31,7 @@
@import "components/popover.scss";
@import "components/sidebar.scss";
@import "components/syntax.scss";
@import "components/table.scss";
@import "components/timeline.scss";
@import "components/toc.scss";
@import "components/vimeo.scss";

View File

@@ -15,6 +15,28 @@ a:active {
min-height: 100vh;
}
.fullscreen {
--navbar-offset: #{$navbar-offset};
min-height: calc(100vh - var(--navbar-offset));
}
.main-content {
margin-top: $navbar-offset;
}
$utilities: map-merge(
$utilities,
(
"cursor": (
property: margin-left margin-right,
class: mx,
responsive: true,
values: auto 0,
)
)
);
.tickmark li::marker {
content: "";
}

View File

@@ -0,0 +1,42 @@
// Bootstrap variables overrides for theme
$enable-negative-margins: true;
$enable-important-utilities: true !default;
// Remove the border from the focused navigation toggler
$navbar-toggler-focus-width: 0 !default;
$font-family-sans-serif: h.$theme-font, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
$font-size-base: h.$font-size-base !default;
$headings-font-weight: 600 !default;
$font-weight-lighter: lighter !default;
$font-weight-light: 200 !default;
$font-weight-normal: 300 !default;
$font-weight-bold: 600 !default;
$font-weight-bolder: bolder !default;
strong {
font-weight: 600 if($enable-important-utilities, !important, null);
}
$navbar-offset: h.$navbar-offset;
$primary: h.$primary;
$secondary: h.$secondary;
$success: h.$success;
$info: h.$info;
$warning: h.$warning;
$danger: h.$danger;
$light: h.$light;
$dark: h.$dark;
$black: #000 !default;
$btn-toggle-color: $black !default;
$carousel-dark-indicator-active-bg: #fff !default;
$carousel-dark-caption-color: #fff !default;
$carousel-dark-control-icon-filter: invert(0) grayscale(100) !default;
$primary-text-emphasis-dark: mix(white, h.$primary, h.$dark-mode-tint) !default;
$secondary-text-emphasis-dark: mix(white, h.$secondary, h.$dark-mode-tint) !default;
$link-color-dark: mix(white, h.$primary, h.$dark-mode-tint) !default;
$primary-bg-subtle-dark: mix(black, h.$primary, h.$dark-mode-shade) !default;
$primary-border-subtle-dark: mix(black, h.$primary, calc(h.$dark-mode-shade / 2)) !default;

View File

@@ -7,6 +7,7 @@ $navbar-toggler-focus-width: 0 !default;
// scss-docs-start font
$font-family-sans-serif: $theme-font, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
$font-size-base: $font-size-base !default;;
$headings-font-weight: 600 !default;
$font-weight-lighter: lighter !default;
$font-weight-light: 200 !default;
@@ -22,8 +23,8 @@ strong {
$black: #000 !default;
$btn-toggle-color: $black !default;
$carousel-dark-indicator-active-bg: #ffffff !default;
$carousel-dark-caption-color: #ffffff !default;
$carousel-dark-indicator-active-bg: #fff !default;
$carousel-dark-caption-color: #fff !default;
$carousel-dark-control-icon-filter: invert(0) grayscale(100) !default;
// scss-docs-start color-mode

View File

@@ -0,0 +1,22 @@
@media (hover: none) {
abbr[title] {
position: relative;
text-decoration: underline dotted;
}
abbr[title]:hover::after,
abbr[title]:focus::after {
content: attr(title);
position: absolute;
left: 0;
bottom: -30px;
width: auto;
white-space: nowrap;
background-color: var(--bs-body-bg);
color: var(--bs-tooltip-color);
border-radius: 3px;
box-shadow: 1px 1px 5px 0 rgba(0,0,0,0.4);
font-size: 14px;
padding: 3px 5px;
}
}

View File

@@ -15,6 +15,10 @@
width: 100%;
}
.card-icon {
color: $secondary;
}
.card-zoom::after .card-img-wrap img {
content: "";
position: absolute;
@@ -48,6 +52,10 @@
color: $body-color if($enable-important-utilities, !important, null);
}
.card-body-margin {
margin-bottom: $spacer * 1.5; // equals mb-4
}
@if $enable-dark-mode {
@include color-mode(dark) {
.card-body-link {

View File

@@ -108,7 +108,7 @@
background-color: $white if($enable-important-utilities, !important, null);
}
.emphasis, {
.emphasis {
background-color: $black if($enable-important-utilities, !important, null);
}

View File

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

View File

@@ -0,0 +1,49 @@
// stylelint-disable annotation-no-unknown
@import "syntax-light";
.bg,
.chroma,
.chroma .err {
// set to transparent background to avoid rendering issues with example shortcode
background-color: transparent if($enable-important-utilities, !important, null);
}
.chroma {
display: flex;
}
.chroma code {
flex: 1;
}
.syntax-highlight {
background-color: var(--bs-light) if($enable-important-utilities, !important, null);
overflow-x: auto;
}
@if $enable-dark-mode {
[data-bs-theme="dark"] {
@include meta.load-css(syntax-dark);
.bg,
.chroma,
.chroma .err {
// set to transparent background to avoid rendering issues with example shortcode
background-color: transparent if($enable-important-utilities, !important, null);
}
.syntax-highlight {
background-color: var(--bs-tertiary-bg) if($enable-important-utilities, !important, null);
overflow-x: auto;
}
.bg,
.chroma,
.chroma .ge,
.chroma .gl,
.chroma .gs {
color: #c9d1d9 if($enable-important-utilities, !important, null);
}
}
}
// stylelint-enable annotation-no-unknown

View File

@@ -8,6 +8,14 @@
background-color: transparent if($enable-important-utilities, !important, null);
}
.chroma {
display: flex;
}
.chroma code {
flex: 1;
}
.syntax-highlight {
background-color: var(--bs-light) if($enable-important-utilities, !important, null);
overflow-x: auto;
@@ -30,7 +38,10 @@
}
.bg,
.chroma {
.chroma,
.chroma .ge,
.chroma .gl,
.chroma .gs {
color: #c9d1d9 if($enable-important-utilities, !important, null);
}
}

View File

@@ -0,0 +1,13 @@
@if $enable-dark-mode {
@include color-mode(dark) {
.table-striped, .table-striped-columns {
--bs-table-striped-bg: var(--bs-tertiary-bg);
--bs-table-striped-color: var(--bs-body-color);
}
.table-hover {
--bs-table-hover-bg: var(--bs-tertiary-bg);
--bs-table-striped-color: var(--bs-body-color);
}
}
}

View File

@@ -75,6 +75,10 @@
.toc-button {
--bs-btn-color: var(--bs-body-color);
--bs-btn-border-color: var(--bs-body-color);
&:hover {
background-color: transparent;
}
}
#toc-collapse {

View File

@@ -30,3 +30,7 @@ h6 {
margin-top: $spacer;
scroll-margin-top: $navbar-offset;
}
.display-1, .display-2, .display-3, .display-4, .display-5, .display-6 {
scroll-margin-top: $navbar-offset;
}

View File

@@ -94,6 +94,9 @@ home = ["HTML", "RSS", "REDIR"]
[[module.mounts]]
source = "assets"
target = "assets"
[[module.mounts]]
source = "content"
target = "content"
[[module.mounts]]
source = "i18n"
target = "i18n"
@@ -117,4 +120,6 @@ home = ["HTML", "RSS", "REDIR"]
path = "github.com/gethinode/mod-katex"
[[module.imports]]
path = "github.com/gethinode/mod-leaflet"
[[module.imports]]
path = "github.com/gethinode/mod-lottie"
# toml-docs-end modules

View File

@@ -31,5 +31,5 @@ defaultMarkdownHandler = "goldmark"
block = true
[goldmark.renderer]
hardWraps = false
unsafe = true
unsafe = false
xhtml = false

View File

@@ -9,14 +9,18 @@
[main.externalLinks]
cue = false
tab = false
[main.build]
transpiler = "libsass"
# toml-docs-end main
# toml-docs-start modules
[modules]
core = ["bootstrap", "flexsearch", "fontawesome"]
optional = ["leaflet", "katex"]
optional = ["leaflet", "katex", "lottie"]
excludeSCSS = ["bootstrap"]
disableTemplate = ["katex"]
[modules.katex]
state = "defer"
[modules.fontawesome]
inline = true
debug = true
@@ -27,6 +31,7 @@
[debugging]
showJS = false
showSCSS = false
purgeHTMLComments = false
# toml-docs-end debugging
# toml-docs-start docs
@@ -42,6 +47,11 @@
fullCover = false
centerHeadline = false
style = ""
[home.feature]
orientation = "horizontal"
color = "primary"
width = 4
align = "start"
# toml-docs-end home
# toml-docs-start navigation
@@ -49,12 +59,13 @@
anchor = true
logo = "/img/logo_icon.svg"
color = "body"
fixed = true
offset = "3.8em"
offset = "5.5rem"
search = true
searchModal = false
breadcrumb = true
toc = true
sidebar = true
size = "md"
# toml-docs-end navigation
# toml-docs-start messages
@@ -114,7 +125,7 @@
# header = "full"
# footer = "none"
# orientation = "stacked"
# style = "border-0 card-zoom"
# style = "border-0 card-zoom card-body-margin"
# homepage = 3
# separator = true
# toml-docs-end sections
@@ -141,6 +152,7 @@
themeFont = "Inter"
# themeFontPath = "https://fonts.googleapis.com/css2?family=Inter:wght@200;300;600&display=swap" # external path
themeFontPath = "/fonts" # local path
fontSizeBase = "1rem" # assumes the browser default, typically '16px'
# toml-docs-end font
# toml-docs-start build
purge = false

23
config/ci/hugo.toml Normal file
View File

@@ -0,0 +1,23 @@
# cachedir default on POSIX: '/tmp/hugo_cache_runner'
# cachedir default on Windows: '~\AppData\Local\hugo_cache'
# cachedir default on macOS: '/Users/runner/Library/Caches/hugo_cache'
[caches]
[caches.assets]
dir = ':cacheDir/resources/_gen' # map to cacheDir instead of resourceDir to utilize GitHub action/cache
maxAge = -1
[caches.getcsv]
dir = ':cacheDir/:project'
maxAge = -1
[caches.getjson]
dir = ':cacheDir/:project'
maxAge = -1
[caches.getresource]
dir = ':cacheDir/:project'
maxAge = -1
[caches.images]
dir = ':cacheDir/resources/_gen' # map to cacheDir instead of resourceDir to utilize GitHub action/cache
maxAge = -1
[caches.modules]
dir = ':cacheDir/modules'
maxAge = -1

View File

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

View File

@@ -1,13 +1,15 @@
---
title: Welcome to Hinode!
description: A clean documentation and blog theme for your Hugo site based on Bootstrap 5.
thumbnail:
url: /img/sunrise.jpg
author: Harris Vo
authorURL: https://unsplash.com/@hoanvokim
origin: https://unsplash.com/photos/ZX6BPboJrYk
originName: Unsplash
actions:
get-started:
url: "https://gethinode.com/docs"
title: "Get started"
icon: "fas book-open"
---
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

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-activity" viewBox="0 0 16 16">
<path fill-rule="evenodd" d="M6 2a.5.5 0 0 1 .47.33L10 12.036l1.53-4.208A.5.5 0 0 1 12 7.5h3.5a.5.5 0 0 1 0 1h-3.15l-1.88 5.17a.5.5 0 0 1-.94 0L6 3.964 4.47 8.171A.5.5 0 0 1 4 8.5H.5a.5.5 0 0 1 0-1h3.15l1.88-5.17A.5.5 0 0 1 6 2Z"/>
</svg>

After

Width:  |  Height:  |  Size: 367 B

View File

@@ -1,3 +1,4 @@
resourcedir = '../resources/'
title = "Hinode"
copyright = "Copyright © 2023 Mark Dumay."
paginate = 9

View File

@@ -31,5 +31,5 @@ defaultMarkdownHandler = "goldmark"
block = true
[goldmark.renderer]
hardWraps = false
unsafe = true
unsafe = false
xhtml = false

View File

@@ -7,10 +7,12 @@
[main.externalLinks]
cue = true
tab = true
[main.build]
transpiler = "dartsass"
[modules]
core = ["bootstrap", "flexsearch", "fontawesome"]
optional = ["leaflet", "katex"]
optional = ["leaflet", "katex", "lottie"]
excludeSCSS = ["bootstrap"]
disableTemplate = ["katex"]
[modules.fontawesome]
@@ -21,6 +23,7 @@
[debugging]
showJS = false
showSCSS = false
purgeHTMLComments = true # prevents a Goldmark warning when processing HTML comments (as used by markdownlint)
[docs]
basePath = "/" # TODO: replace
@@ -33,17 +36,24 @@
fullCover = false
centerHeadline = false
style = ""
[home.feature]
orientation = "horizontal"
color = "primary"
width = 4
align = "start"
[navigation]
anchor = true
logo = "/img/logo_icon.svg"
color = "body"
fixed = true
offset = "3.8em"
offset = "5.5rem"
search = true
searchModal = false
breadcrumb = true
toc = true
sidebar = true
size = "md"
[messages]
placement = "bottom-right"
@@ -96,7 +106,7 @@
header = "full"
footer = "none"
orientation = "stacked"
style = "border-0 card-zoom"
style = "border-0 card-zoom card-body-margin"
homepage = 3
separator = true
[sections.projects]
@@ -111,7 +121,7 @@
padding = "3"
header = "none"
footer = "tags"
orientation = "horizontal"
orientation = "horizontal-sm"
style = "border-1 card-emphasize"
homepage = 3
separator = false

View File

@@ -0,0 +1,22 @@
# cachedir default on POSIX: '/tmp/hugo_cache_runner'
# cachedir default on Windows: '~\AppData\Local\hugo_cache'
[caches]
[caches.assets]
dir = ':cacheDir/resources/_gen' # map to cacheDir instead of resourceDir to utilize GitHub action/cache
maxAge = -1
[caches.getcsv]
dir = ':cacheDir/:project'
maxAge = -1
[caches.getjson]
dir = ':cacheDir/:project'
maxAge = -1
[caches.getresource]
dir = ':cacheDir/:project'
maxAge = -1
[caches.images]
dir = ':cacheDir/resources/_gen' # map to cacheDir instead of resourceDir to utilize GitHub action/cache
maxAge = -1
[caches.modules]
dir = ':cacheDir/modules'
maxAge = -1

View File

@@ -0,0 +1,44 @@
const autoprefixer = require('autoprefixer')({})
const cssnano = require('cssnano')({
preset: 'advanced'
})
const whitelister = require('purgecss-whitelister')
const purgecss = require('@fullhuman/postcss-purgecss')({
content: ['./exampleSite/hugo_stats.json'],
defaultExtractor: (content) => {
const els = JSON.parse(content).htmlElements
return [...(els.tags || []), ...(els.classes || []), ...(els.ids || [])]
},
dynamicAttributes: ['data-bs-theme'],
safelist: [
...whitelister([
'./assets/scss/components/_clipboard.scss',
'./assets/scss/components/_command.scss',
'./assets/scss/components/_navbar.scss',
'./assets/scss/components/_search.scss',
'./assets/scss/components/_syntax.scss',
'./assets/scss/components/_syntax-dark.scss',
'./assets/scss/components/_syntax-light.scss',
'./assets/scss/components/_table.scss',
'./assets/scss/theme/fonts.scss',
'./assets/scss/theme/theme.scss',
'./_vendor/github.com/gethinode/mod-flexsearch/assets/scss/modules/flexsearch/flexsearch.scss',
'./_vendor/github.com/gethinode/mod-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',
'./_vendor/github.com/twbs/bootstrap/scss/_reboot.scss',
'./_vendor/github.com/twbs/bootstrap/scss/_tooltip.scss',
'./_vendor/github.com/twbs/bootstrap/scss/_transitions.scss',
'./_vendor/github.com/twbs/bootstrap/scss/_utilities.scss'
])
]
})
module.exports = {
plugins: [
autoprefixer,
cssnano,
purgecss
]
}

View File

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

View File

@@ -6,29 +6,19 @@ updated: 2023-08-02
showComments: false
---
<p class="text-center"><svg class="img-fluid w-50"><use href="/img/logo_var.svg#logo"></use></svg></p>
{{< image src="/img/logo_var.svg#logo" class="img-fluid w-50" wrapper="text-center" >}}
<section class="section section-sm mt-5 mb-5">
<div class="container-fluid">
<div class="row justify-content-center text-center">
<div class="col-lg-4">
{{< 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">
{{< 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">
{{< 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>
</div>
</div>
</section>
{{< card-group class="text-center border-0" padding="3" >}}
{{< card title="Bootstrap framework" icon="fab bootstrap" >}}
Build fast, responsive sites with Bootstrap 5. Easily customize your site with the source Sass files.
{{< /card >}}
{{< card title="Full text search" icon="fas magnifying-glass" >}}
Search your site with FlexSearch, a full-text search library with zero dependencies.
{{< /card >}}
{{< card title="Development tools" icon="fas code" >}}
Use Node Package Manager to automate the build process and to keep track of dependencies.
{{< /card >}}
{{< /card-group >}}
Additional features include:

View File

@@ -14,6 +14,16 @@ thumbnail:
Hinode provides several shortcodes that wrap common Bootstrap components. Refer to the [official documentation]({{< param "links.hinode_docs" >}}) for more details.
## Abbr
As an example, the following shortcode displays the full text of an abbreviation on hover.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* abbr "CI/CD" */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Accordion
As an example, the following shortcode displays an accordion with three elements, of which the first element is expanded.
@@ -22,11 +32,11 @@ As an example, the following shortcode displays an accordion with three elements
{{< example lang="hugo" >}}
{{</* accordion */>}}
{{</* accordion-item header="Accordion Item #1" show="true" */>}}
This is the first item's accordion body. It supports HTML content. The item is shown by adding the value
<code>show</code> to the <code>class</code> argument.
This is the first item's accordion body. It supports HTML content, if enabled in the goldmark
renderer. The item is shown by adding the value `show` to the `class` argument.
{{</* /accordion-item */>}}
{{</* accordion-item header="Accordion Item #2" */>}}
This is the second item's accordion body. It supports HTML content too.
This is the second item's accordion body.
{{</* /accordion-item */>}}
{{</* accordion-item header="Accordion Item #3" */>}}
This is the third item's accordion body.
@@ -49,16 +59,29 @@ As an example, the following shortcode displays a simple alert.
## Badge
Use HTML code to display a badge for a heading. See the Bootstrap [documentation]({{< param "links.bs_badge_heading" >}}) for more options.
Use the badge shortcode to display a badge for a heading.
<!-- markdownlint-disable MD037 -->
{{< example >}}
<h1>Example heading of size one <span class="badge bg-secondary">New</span></h1>
<h2>Example heading of size two <span class="badge bg-secondary">New</span></h2>
<h3>Example heading of size three <span class="badge bg-secondary">New</span></h3>
<h4>Example heading of size four <span class="badge bg-secondary">New</span></h4>
<h5>Example heading of size five <span class="badge bg-secondary">New</span></h5>
<h6>Example heading of size six <span class="badge bg-secondary">New</span></h6>
Heading 1 {{</* badge title="New" */>}}
{.h1}
Heading 2 {{</* badge title="New" */>}}
{.h2}
Heading 3 {{</* badge title="New" */>}}
{.h3}
Heading 4 {{</* badge title="New" */>}}
{.h4}
Heading 5 {{</* badge title="New" */>}}
{.h5}
Heading 6 {{</* badge title="New" */>}}
{.h6}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Breadcrumb
@@ -102,7 +125,28 @@ As an example, the following shortcode displays a stacked card that links to the
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* card path="about" padding="3" class="w-50" color="body-tertiary" header="publication" footer="none" */>}}
{{</* card path="about" padding="3" class="col-6 mx-auto" color="body-tertiary" header="publication" footer="none" /*/>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Card group
As an example, the following shortcode displays a card group of three elements.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* card-group padding="3" gutter="3" */>}}
{{</* card title="Bootstrap framework" icon="fab bootstrap" */>}}
Build fast, responsive sites with Bootstrap 5. Easily customize your site with the source
Sass files.
{{</* /card */>}}
{{</* card title="Full text search" icon="fas magnifying-glass" */>}}
Search your site with FlexSearch, a full-text search library with zero dependencies.
{{</* /card */>}}
{{</* card title="Development tools" icon="fas code" */>}}
Use Node Package Manager to automate the build process and to keep track of dependencies.
{{</* /card */>}}
{{</* /card-group */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
@@ -131,7 +175,7 @@ As an example, the following shortcode displays a button that, when clicked, tri
{{</* /button */>}}
{{</* collapse id="collapse-1" class="p-3 border rounded bg-primary-subtle" */>}}
Some placeholder content for the collapse component. This panel is <i>hidden by default</i> but
Some placeholder content for the collapse component. This panel is *hidden by default* but
revealed when the user activates the relevant trigger.
{{</* /collapse */>}}
{{< /example >}}
@@ -197,13 +241,14 @@ Use the `file` shortcode to print and highlight the full content of a given inpu
## Icon
As an example, the following shortcodes show a square check, a brand logo, and a circle check.
As an example, the following shortcodes show a square check, a brand logo, a circle check, and a custom icon.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* fa square-check */>}}
{{</* fab linkedin */>}}
{{</* fas circle-check */>}}
{{</* icon custom activity */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
@@ -217,6 +262,57 @@ As an example, the following shortcode displays an image with rounded corners an
{{< /example >}}
<!-- markdownlint-enable MD037 -->
As an example, the following shortcode displays a regular vector image.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* image src="/img/logo_icon.svg" class="col-sm-6 col-lg-4" wrapper="text-center" */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
As an example, the following shortcode displays a vector image with a symbol reference.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* image src="/img/logo_var.svg#logo" class="col-sm-6 col-lg-4" wrapper="text-center" */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Link
As an example, the following shortcodes render links in different formats.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
- {{</* link hinode >}}Named link with default settings{{< /link */>}}
- {{</* link name=hinode cue=false tab=false >}}Named link opening in current tab w/o icon{{< /link */>}}
- {{</* link name=hinode cue=true tab=true >}}Named link opening in new tab with icon{{< /link */>}}
- {{</* link hinode /*/>}}
- {{</* link href="https://developer.mozilla.org" >}}External link{{< /link */>}}
- {{</* link "./projects/another-project" >}}Internal link with title{{< /link */>}}
- {{</* link url="projects/another-project" /*/>}}
- {{</* link url="/projects/another-project" /*/>}}
- {{</* link url="../projects/another-project" case=false /*/>}}
- {{</* link "/about/" /*/>}}
- {{</* link "/fr/about/" /*/>}}
- {{</* link "/fr/about" >}}About (French){{< /link */>}}
- {{</* link "#image" /*/>}}
- {{</* link "components/#map" /*/>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Mark
Use the `mark` shortcode to highlight text. The inner content is used as input.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
Use the mark shortcode to {{</* mark >}}highlight{{< /mark */>}} specific text.
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Nav
As an example, the following shortcode displays a tab group with vertically aligned pills.
@@ -225,11 +321,11 @@ As an example, the following shortcode displays a tab group with vertically alig
{{< example lang="hugo" >}}
{{</* nav type="pills" vertical="true" */>}}
{{</* nav-item header="Nav Item #1" show="true" */>}}
This is the first item's nav body. It supports HTML content. The item is shown by adding the value
<code>show</code> to the <code>class</code> argument.
This is the first item's nav body. It supports HTML content, if enabled in the goldmark
renderer. The item is shown by adding the value `show` to the `class` argument.
{{</* /nav-item */>}}
{{</* nav-item header="Nav Item #2" */>}}
This is the second item's nav body. It too supports HTML content.
This is the second item's nav body.
{{</* /nav-item */>}}
{{</* nav-item header="Nav Item #3" */>}}
This is the third item's nav body.
@@ -270,13 +366,33 @@ Loading...
{{< /example>}}
<!-- markdownlint-enable MD037 -->
## Sub
As an example, the following shortcode displays subscript text.
<!-- markdownlint-disable MD037 -->
{{< example >}}
H{{</* sub 2 */>}}O is a liquid.
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Sup
As an example, the following shortcode displays superscript text.
<!-- markdownlint-disable MD037 -->
{{< example >}}
2{{</* sup 10 */>}} is 1024.
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Timeline
As an example, the following shortcode displays a timeline with the file `data/timeline-en.yml` as data.
As an example, the following shortcode displays a timeline with the file `data/timeline.en.yml` as data.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* timeline data="timeline-en" background="dark" */>}}
{{</* timeline data="timeline" background="dark" */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
@@ -295,11 +411,11 @@ As an example, the following shortcode displays a button that, when clicked, tri
{{</* /button */>}}
{{</* toast id="toast-example-1" header="First title" */>}}
This is the first toast message.
This is the first toast message. It supports `markdown.`
{{</* /toast */>}}
{{</* toast id="toast-example-2" header="Second title" */>}}
This is the second toast message.
This is the second toast message. It supports `markdown.`
{{</* /toast */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
@@ -310,6 +426,6 @@ As an example, the following shortcode displays a tooltip for a colored hyperlin
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* tooltip color="primary" title="Tooltip" href="#!" */>}}Tooltip{{</* /tooltip */>}} demonstration
{{</* tooltip color="primary" title="Tooltip caption" href="#!" */>}}Tooltip{{</* /tooltip */>}} demonstration
{{< /example >}}
<!-- markdownlint-enable MD037 -->

View File

@@ -1,7 +1,7 @@
---
author: Mark Dumay
title: Components
date: 2023-07-21
date: 2023-09-23
description: Use shortcodes to add predefined components powered by external libraries.
tags: ["bootstrap", "shortcode"]
thumbnail:
@@ -10,11 +10,21 @@ thumbnail:
authorURL: https://unsplash.com/@ryoji__iwata
origin: Unsplash
originURL: https://unsplash.com/photos/5siQcvSxCP8
modules: ["katex", "leaflet"]
modules: ["katex", "leaflet", "lottie"]
---
Hinode provides several shortcodes on top of the common [Bootstrap elements]({{< relref "bootstrap-elements" >}}). Refer to the [official documentation]({{< param "links.hinode_docs" >}}) for more details.
## Animation
As an example, the following shortcode shows an animation that plays on hover.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* animation data="gatin.json" auto=false hover=true class="col-6 mx-auto" */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Formula (KaTeX)
As an example, the following markdown renders two formulas using the KaTeX typesetting library.

View File

@@ -1,14 +1,15 @@
---
author: Mark Dumay
title: Bienvenue sur Hinode!
description: Un thème de blog et de documentation pour Hugo basé sur Bootstrap 5.
thumbnail:
url: /img/sunrise.jpg
author: Harris Vo
authorURL: https://unsplash.com/@hoanvokim
origin: https://unsplash.com/photos/ZX6BPboJrYk
originName: Unsplash
actions:
about:
url: "a-propos"
title: "À propos"
---
Un thème de blog et de documentation pour Hugo basé sur Bootstrap 5.
{{< button href="a-propos" >}}À propos{{< /button>}}

View File

@@ -7,30 +7,19 @@ updated: 2023-08-02
showComments: false
---
<p class="text-center"><svg class="img-fluid w-50"><use href="/img/logo_var.svg#logo"></use></svg></p>
{{< image src="/img/logo_var.svg#logo" class="img-fluid w-50" wrapper="text-center" >}}
<section class="section section-sm mt-5">
<div class="container-fluid">
<div class="row justify-content-center text-center">
<div class="row justify-content-center text-center">
<div class="col-lg-4">
{{< icon fab bootstrap fa-2xl >}}
<h2 class="h4">Framework Bootstrap</h2>
<p>Créez des sites rapides et réactifs avec Bootstrap 5. Personnalisez facilement votre site avec les fichiers source Sass.</p>
</div>
<div class="col-lg-4">
{{< icon fas magnifying-glass fa-2xl >}}
<h2 class="h4">Recherche en texte intégral</h2>
<p>Recherchez votre site avec FlexSearch, une bibliothèque de recherche en texte intégral avec zéro dépendances.</p>
</div>
<div class="col-lg-4">
{{< icon fas code fa-2xl >}}
<h2 class="h4">Outils de développement</h2>
<p>Utilisez Node Package Manager pour automatiser le processus de construction et suivre les dépendances.</p>
</div>
</div>
</div>
</section>
{{< card-group class="text-center border-0" padding="3" >}}
{{< card title="Framework Bootstrap" icon="fab bootstrap" >}}
Créez des sites rapides et réactifs avec Bootstrap 5. Personnalisez facilement votre site avec les fichiers source Sass.
{{< /card >}}
{{< card title="Recherche en texte intégral" icon="fas magnifying-glass" >}}
Recherchez votre site avec FlexSearch, une bibliothèque de recherche en texte intégral avec zéro dépendances.
{{< /card >}}
{{< card title="Outils de développement" icon="fas code" >}}
Utilisez Node Package Manager pour automatiser le processus de construction et suivre les dépendances.
{{< /card >}}
{{< /card-group >}}
Les fonctionnalités supplémentaires incluent:
@@ -42,9 +31,4 @@ Les fonctionnalités supplémentaires incluent:
- Gestion d'images adaptatives pour plusieurs tailles d'écran et résolutions.
- Résultats de recherche optimisés, obtenant un score de 100 points pour le référencement (SEO) sur [PageSpeed Insights]({{< param "links.pagespeed" >}}).
- Sécurisé par défaut, obtenant un score A+ au test [Mozilla Observatory]({{< param "links.observatory" >}})
{.tickmark}
Hinode est inspiré par les thèmes suivants:
- [Blist](https://github.com/apvarun/blist-hugo-theme) - Un thème de blog pour Hugo basé sur Tailwind CSS.
- [Doks](https://github.com/h-enk/doks) - Un thème Hugo pour la création de sites de documentation sécurisés, rapides et optimisés pour le référencement (SEO), que vous pouvez facilement mettre à jour et personnaliser.
{.tickmark}

View File

@@ -0,0 +1,432 @@
---
author: Mark Dumay
title: Éléments Bootstrap
slug: elements-bootstrap
date: 2023-08-12
description: Utilisez des shortcodes pour ajouter facilement des éléments Bootstrap courants.
tags: ["bootstrap", "shortcode"]
thumbnail:
url: img/boots.jpg
author: Nathan Dumlao
authorURL: https://unsplash.com/@nate_dumlao
origin: Unsplash
originURL: https://unsplash.com/photos/QLPWQvHvmII
---
Hinode propose plusieurs shortcodes qui enveloppent des composants Bootstrap courants. Consultez la [documentation officielle]({{< param "links.hinode_docs" >}}) pour plus de détails.
## Abbr
À titre d'exemple, le shortcode suivant affiche le texte complet d'une abréviation lorsque survolé.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* abbr "CI/CD" */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Accordéon
À titre d'exemple, le shortcode suivant affiche un accordéon avec trois éléments, dont le premier élément est déplié.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* accordion */>}}
{{</* accordion-item header="Élément d'accordéon #1" show="true" */>}}
Il s'agit du contenu du corps du premier élément de l'accordéon. Il prend en charge le contenu HTML, s'il est activé dans le moteur de rendu goldmark. L'élément est affiché en ajoutant la valeur `show` à l'argument `class`.
{{</* /accordion-item */>}}
{{</* accordion-item header="Élément d'accordéon #2" */>}}
Il s'agit du contenu du corps du deuxième élément de l'accordéon.
{{</* /accordion-item */>}}
{{</* accordion-item header="Élément d'accordéon #3" */>}}
Il s'agit du contenu du corps du troisième élément de l'accordéon.
{{</* /accordion-item */>}}
{{</* /accordion */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Alerte
À titre d'exemple, le shortcode suivant affiche une alerte simple.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* alert color="danger" dismissible="true" */>}}
Une simple alerte de danger — vérifiez-la !
{{</* /alert */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Badge
Utilisez le shortcode "badge" pour afficher un badge avec un en-tête.
<!-- markdownlint-disable MD037 -->
{{< example >}}
En-tête 1 {{</* badge title="Nouveau" */>}}
{.h1}
En-tête 2 {{</* badge title="Nouveau" */>}}
{.h2}
En-tête 3 {{</* badge title="Nouveau" */>}}
{.h3}
En-tête 4 {{</* badge title="Nouveau" */>}}
{.h4}
En-tête 5 {{</* badge title="Nouveau" */>}}
{.h5}
En-tête 6 {{</* badge title="Nouveau" */>}}
{.h6}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Fil d'Ariane
À titre d'exemple, le shortcode suivant affiche un fil d'Ariane pour la page du blog.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* breadcrumb path="blog" */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Bouton
À titre d'exemple, le shortcode suivant affiche une infobulle pour un bouton sombre avec un badge.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* button color="secondary" tooltip="Cliquez sur la boîte de réception pour voir vos messages non lus." href="#!" badge="99+" */>}}
Boîte de réception
{{</* /button */>}}
{{< /example>}}
<!-- markdownlint-enable MD037 -->
## Groupe de boutons
À titre d'exemple, le shortcode suivant affiche un groupe de trois boutons.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* button-group aria-label="Basic example" */>}}
{{</* button color="primary" href="#!" */>}}Gauche{{</* /button */>}}
{{</* button color="primary" href="#!" */>}}Millieu{{</* /button */>}}
{{</* button color="primary" href="#!" */>}}Droite{{</* /button */>}}
{{</* /button-group */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Carte
À titre d'exemple, le shortcode suivant affiche une carte empilée qui renvoie à la page [à propos]({{< ref "about" >}}). Elle inclut un en-tête personnalisé.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* card path="about" padding="3" class="col-6 mx-auto" color="body-tertiary" header="publication" footer="none" /*/>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Groupe de cartes
À titre d'exemple, le shortcode suivant affiche un groupe de cartes avec trois éléments.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* card-group padding="3" gutter="3" */>}}
{{</* card title="Framework Bootstrap" icon="fab bootstrap" */>}}
Créez des sites rapides et réactifs avec Bootstrap 5. Personnalisez facilement votre site
avec les fichiers source Sass.
{{</* /card */>}}
{{</* card title="Recherche en texte intégral" icon="fas magnifying-glass" */>}}
Recherchez votre site avec FlexSearch, une bibliothèque de recherche en texte intégral
avec zéro dépendances.
{{</* /card */>}}
{{</* card title="Outils de développement" icon="fas code" */>}}
Utilisez Node Package Manager pour automatiser le processus de construction et suivre
les dépendances.
{{</* /card */>}}
{{</* /card-group */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Carrousel
À titre d'exemple, le shortcode suivant affiche un carrousel centré avec trois slides, un rapport hauteur/largeur de 16:9 et une largeur relative de 67 % sur les grands écrans.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* carousel ratio="16x9" class="col-sm-12 col-lg-8 mx-auto" */>}}
{{</* img src="img/coffee.jpg" caption="slide 1" */>}}
{{</* img src="img/phone.jpg" caption="slide 2" */>}}
{{</* img src="img/dunes.jpg" caption="slide 3" */>}}
{{</* /carousel */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Réduire
À titre d'exemple, le shortcode suivant affiche un bouton qui, lorsqu'il est cliqué, déclenche l'apparition ou la disparition d'un panneau.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* button collapse="collapse-1" */>}}
Déclencher le panneau
{{</* /button */>}}
{{</* collapse id="collapse-1" class="p-3 border rounded bg-primary-subtle" */>}}
Un contenu de remplacement destiné au composant de repliement. Ce panneau est initialement masqué, mais il
sera révélé lorsque l'utilisateur active le déclencheur correspondant.
{{</* /collapse */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Invite de commandes
Utilisez le shortcode `command` pour générer un bloc avec un invite de commandes bash par défaut.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* command */>}}
export MY_VAR=123
{{</* /command */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
Spécifiez `user` et `host` pour ajouter le contexte de l'utilisateur à l'invite. De plus, utilisez `(out)` pour spécifier une ligne de sortie et utilisez `\` pour indiquer une continuation de ligne.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* command user="user" host="localhost" */>}}
export MY_VAR=123
echo "hello"
(out)hello
echo one \
two \
three
(out)one two three
echo "goodbye"
(out)goodbye
{{</* /command */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Documentation
Utilisez le shortcode `docs` pour afficher le contenu d'un fichier `js`, `scss` ou `toml` :
{{< docs name="theme-colors" file="config/_default/params.toml" >}}
## Exemple
Utilisez le shortcode `example` pour afficher un exemple de code et pour afficher un aperçu de la même entrée.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* command */>}}
export MY_VAR=123
{{</* /command */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Fichier
Utilisez le shortcode `file` pour afficher et mettre en évidence le contenu complet d'un fichier d'entrée donné.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* file path="./config/_default/languages.toml" id="file-collapse-1" */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Icon
À titre d'exemple, les shortcodes suivants affichent une coche carrée, un logo de marque et une coche circulaire.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* fa square-check */>}}
{{</* fab linkedin */>}}
{{</* fas circle-check */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Image
À titre d'exemple, le shortcode suivant affiche une image avec des coins arrondis et un ratio d'aspect de 21:9.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* image src="img/flowers.jpg" ratio="21x9" caption="Légende de l'image" class="rounded" */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
À titre d'exemple, le shortcode suivant affiche une image vectorielle classique.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* image src="/img/logo_icon.svg" class="col-sm-6 col-lg-4" wrapper="text-center" */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
À titre d'exemple, le shortcode suivant affiche une image vectorielle avec une référence de symbole.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* image src="/img/logo_var.svg#logo" class="col-sm-6 col-lg-4" wrapper="text-center" */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Lien
À titre d'exemple, les shortcodes suivants rendent des liens dans différents formats.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
- {{</* link hinode >}}Lien nommé avec les paramètres par défaut{{< /link */>}}
- {{</* link name=hinode cue=false tab=false >}}Lien nommé s'ouvrant dans l'onglet actuel sans icône{{< /link */>}}
- {{</* link name=hinode cue=true tab=true >}}Lien nommé s'ouvrant dans un nouvel onglet avec icône{{< /link */>}}
- {{</* link hinode /*/>}}
- {{</* link href="https://developer.mozilla.org" >}}Lien externe{{< /link */>}}
- {{</* link "./projects/another-project" >}}Lien interne avec titre{{< /link */>}}
- {{</* link url="projects/another-project" /*/>}}
- {{</* link url="/projects/another-project" /*/>}}
- {{</* link url="../projects/another-project" case=false /*/>}}
- {{</* link "/about/" /*/>}}
- {{</* link "/en/about/" /*/>}}
- {{</* link "/en/about" >}}About (Anglais){{< /link */>}}
- {{</* link "#image" /*/>}}
- {{</* link "components/#map" /*/>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Mark
Utilisez le shortcode `mark` pour mettre en évidence le texte. Le contenu interne est utilisé en tant qu'entrée.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
Utilisez le shortcode `mark` pour {{</* mark >}}mettre en évidence{{< /mark */>}} un texte spécifique.
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Navigation
À titre d'exemple, le shortcode suivant affiche un groupe d'onglets avec des onglets alignés verticalement.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* nav type="pills" vertical="true" */>}}
{{</* nav-item header="Élément de navigation #1" show="true" */>}}
Voici le contenu de navigation du premier élément. Il prend en charge le contenu HTML, s'il est
activé dans le moteur de rendu Goldmark. L'élément est affiché en ajoutant la valeur `show` à l'argument `class`.
{{</* /nav-item */>}}
{{</* nav-item header="Élément de navigation #2" */>}}
Voici le contenu de navigation du deuxième élément.
{{</* /nav-item */>}}
{{</* nav-item header="Élément de navigation #3" */>}}
Voici le contenu de navigation du troisième élément.
{{</* /nav-item */>}}
{{</* /nav */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Barre de navigation
À titre d'exemple, le shortcode suivant affiche un en-tête de navigation clair.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* navbar id="navbar-sample" path="blog" color="primary" size="md" search="false" menus="sample" title="Marque" mode="false" */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Publication
À titre d'exemple, le shortcode suivant affiche un bouton de publication par défaut.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* release version="v0.14.1" */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Indicateur de chargement
À titre d'exemple, le raccourci suivant affiche un indicateur de chargement centré.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* spinner color="info" class="text-center" */>}}
Chargement...
{{</* /spinner */>}}
{{< /example>}}
<!-- markdownlint-enable MD037 -->
## Sub
À titre d'exemple, le shortcode suivant affiche du texte en indice.
<!-- markdownlint-disable MD037 -->
{{< example >}}
H{{</* sub 2 */>}}O est un liquide.
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Sup
À titre d'exemple, le shortcode suivant affiche du texte en exposant.
<!-- markdownlint-disable MD037 -->
{{< example >}}
2{{</* sup 10 */>}} équivaut à 1024.
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Chronologie
À titre d'exemple, le shortcode suivant affiche une chronologie avec le fichier `data/timeline-fr.yml` en tant que données.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* timeline data="timeline-fr" background="dark" */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Notification
À titre d'exemple, le shortcode suivant affiche un bouton qui, lorsqu'il est cliqué, déclenche le message de notification.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* button toast="toast-example-1" */>}}
Affiche la notifiaction #1
{{</* /button */>}}
{{</* button toast="toast-example-2" */>}}
Affiche la notifiaction #1
{{</* /button */>}}
{{</* toast id="toast-example-1" header="Premier titre" */>}}
Ceci est le premier message de notification. Il prend en charge le `markdown`.
{{</* /toast */>}}
{{</* toast id="toast-example-2" header="Deuxième titre" */>}}
Ceci est le deuxième message de notification. Il prend en charge le `markdown`.
{{</* /toast */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Infobulle
À titre d'exemple, le shortcode suivant affiche une infobulle pour un lien hypertexte coloré.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* tooltip color="primary" title="Légende de l'infobulle" href="#!" */>}}Démonstration{{</* /tooltip */>}} d'une infobulle
{{< /example >}}
<!-- markdownlint-enable MD037 -->

View File

@@ -0,0 +1,50 @@
---
author: Mark Dumay
title: Composents
slug: composents
date: 2023-07-21
description: Utilisez des shortcodes pour ajouter des composants prédéfinis alimentés par des bibliothèques externes.
tags: ["bootstrap", "shortcode"]
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", "lottie"]
---
Hinode propose plusieurs shortcodes en plus des [éléments Bootstrap]({{< relref "bootstrap-elements" >}}) courants. Consultez la [documentation officielle]({{< param "links.hinode_docs" >}}) pour plus de détails.
## Animation
À titre d'exemple, le shortcode suivant affiche une animation qui se déclenche au survol.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* animation data="gatin.json" auto=false hover=true class="col-6 mx-auto" */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Formule (KaTeX)
À titre d'exemple, le markdown suivant affiche deux formules en utilisant la bibliothèque de composition typographique KaTeX.
{{< example lang="markdown" >}}
Voici une formule en ligne $-b \pm \sqrt{b^2 - 4ac} \over 2a$.
Il s'agit d'une formule non en ligne:
$$x = a_0 + \frac{1}{a_1 + \frac{1}{a_2 + \frac{1}{a_3 + a_4}}}$$
$$\forall x \in X, \quad \exists y \leq \epsilon$$
{{< /example >}}
## Map
À titre d'exemple, le shortcode suivant affiche une carte interactive de la ville d'Amsterdam.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* map lat=52.377 long=4.90 zoom=13 popup="Gare centrale d'Amsterdam" popup-lat=52.378062 popup-long=4.900562 */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->

View File

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

View File

@@ -7,30 +7,20 @@ updated: 2023-08-02
showComments: false
---
<p class="text-center"><svg class="img-fluid w-50"><use href="/img/logo_var.svg#logo"></use></svg></p>
<section class="section section-sm mt-5">
<div class="container-fluid">
<div class="row justify-content-center text-center">
<div class="row justify-content-center text-center">
<div class="col-lg-4">
{{< 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">
{{< 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">
{{< 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>
</div>
</div>
</section>
{{< image src="/img/logo_var.svg#logo" class="img-fluid w-50" wrapper="text-center" >}}
{{< card-group class="text-center border-0" padding="3" >}}
{{< card title="Bootstrap raamwerk" icon="fab bootstrap" >}}
Bouw snelle websites geschikt voor mobiele en desktop schermen met Bootstrap 5. Pas de site eenvoudig aan met bronbestanden in Sass.
{{< /card >}}
{{< card title="Volledig doorzoekbaar" icon="fas magnifying-glass" >}}
Doorzoek je site met FlexSearch, een software bibliotheek zonder afhankelijkheden.
{{< /card >}}
{{< card title="Ontwikkelgereedschap" icon="fas code" >}}
Gebruik Node Package Manager om het bouwproces inclusief versiebeheer volledig te automatiseren.
{{< /card >}}
{{< /card-group >}}
Overige functies:
@@ -43,8 +33,3 @@ Overige functies:
* Optimale zoekresultaten, met 100 punten voor SEO volgens [PageSpeed Insights]({{< param "links.pagespeed" >}})
* Veilige communicatie, met een score van A+ volgens [Mozilla Observatory]({{< param "links.observatory" >}})
{.tickmark}
Hinode is geinspireerd door de volgende thema's:
* [Blist](https://github.com/apvarun/blist-hugo-theme) - een blog thema voor Hugo op basis van Tailwind CSS.
* [Doks](https://github.com/h-enk/doks) - een Hugo thema voor het bouwen van veilige, snelle, en SEO-geoptimaliseerde documentatiesites, die je eenvoudig kunt actualiseren en aanpassen.

11
exampleSite/data/abbr.yml Normal file
View File

@@ -0,0 +1,11 @@
- id: css
long: "Cascading Style Sheets"
- id: html
long: "HyperText Markup Language"
- id: svg
long: "Scalable Vector Graphics"
- id: ci/cd
long: "Continuous Integration/Continuous Deployment"

View File

@@ -0,0 +1,35 @@
# This file holds all menu entries for the docs sidebar
- title: Lancement de produit
icon: fas rocket
color: primary
date: 2023-07-01
url: https://github.com/gethinode/hinode/releases/tag/v0.15.2
content:
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Cupiditate ducimus officiis quod! Aperiam eveniet nam nostrum odit quasi ullam voluptatum.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Cupiditate ducimus officiis quod! Aperiam eveniet nam nostrum odit quasi ullam voluptatum.
- title: Prise en charge I18N
icon: fas globe
color: success
date: 2023-05-06
url: v0.14.0
content:
Lorem ipsum dolor sit amet.
- title: Nouvelle fonctionnalité
icon: fas house
color: warning
date: 2023-02-04
url: v0.8.1
content:
Cupiditate ducimus officiis quod!
- title: Version bêta
icon: fas heart
color: info
date: 2022-11-30
# url: v0.1
content:
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Cupiditate ducimus officiis quod! Aperiam eveniet nam nostrum odit quasi ullam voluptatum.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Cupiditate ducimus officiis quod! Aperiam eveniet nam nostrum odit quasi ullam voluptatum.

View File

@@ -3,9 +3,4 @@ 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.4.0 // indirect
github.com/gethinode/mod-fontawesome v1.2.5 // indirect
github.com/gethinode/mod-katex v1.0.2 // indirect
github.com/gethinode/mod-leaflet v0.3.4 // indirect
)

View File

@@ -1,16 +1,51 @@
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-bootstrap v1.2.0 h1:JkTcImU3qpi25WgKvUxUYiMoiXtrxrG+Wf/utRB5UbU=
github.com/gethinode/mod-bootstrap v1.2.0/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
github.com/gethinode/mod-bootstrap v1.2.1 h1:z54dgsbhShhlri+X77Z+yLrg0wz/f8C8ojA/wnlhsJc=
github.com/gethinode/mod-bootstrap v1.2.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-flexsearch v1.3.0 h1:RbfEDw219Y1rOVp9lHmy5ePdF9lyPalDu2J5oVeejrU=
github.com/gethinode/mod-flexsearch v1.3.0/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
github.com/gethinode/mod-flexsearch v1.4.0 h1:5e/NVRLyWzUZ9fO/fNsM5o+O7nw+xyln2rfEOtbgfWc=
github.com/gethinode/mod-flexsearch v1.4.0/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
github.com/gethinode/mod-flexsearch v1.4.1 h1:z+GKvhJ4v6BsZsWVZRgbO9WcmSZEVUkb3Q9a09yXtd8=
github.com/gethinode/mod-flexsearch v1.4.1/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
github.com/gethinode/mod-flexsearch v1.5.1 h1:9fYlnHgiEXckL0EoC0zlSNO7BWZf5yiOroSWT13Kphc=
github.com/gethinode/mod-flexsearch v1.5.1/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
github.com/gethinode/mod-fontawesome v1.2.4 h1:SqE3CQ+boaBIhrVh3MPu4nz0uoHPfEH5t60nNY1CfsI=
github.com/gethinode/mod-fontawesome v1.2.4/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
github.com/gethinode/mod-fontawesome v1.2.5 h1:RqkLRj6+s+gM4nKd0IwNMMDA8cRmxfp0fxkVH4FdAGU=
github.com/gethinode/mod-fontawesome v1.2.5/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
github.com/gethinode/mod-fontawesome v1.3.0 h1:oudeDBlAKu8vqYxumWuq5SG5F5itm33NgTrBLgvPulQ=
github.com/gethinode/mod-fontawesome v1.3.0/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
github.com/gethinode/mod-fontawesome v1.3.1 h1:EdnBuG2B+bi06OcYmcL1NfSxHpRMEGu8TXUqEEpVH4g=
github.com/gethinode/mod-fontawesome v1.3.1/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
github.com/gethinode/mod-fontawesome v1.3.2 h1:qLJSbAFR2T33BuBtC2Iulm9wZql3cy7AhXjxc2YGzBU=
github.com/gethinode/mod-fontawesome v1.3.2/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
github.com/gethinode/mod-fontawesome v1.4.0 h1:JfmVYwQl19jmZxgxY64yvGqJAAEiFkKf2dbZ5Iv08Qw=
github.com/gethinode/mod-fontawesome v1.4.0/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
github.com/gethinode/mod-fontawesome v1.5.0 h1:3mW5dnWauuF9wSWXNIY+PPgTNPlc/xQOQoG7XGic1Yk=
github.com/gethinode/mod-fontawesome v1.5.0/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
github.com/gethinode/mod-katex v1.0.1/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
github.com/gethinode/mod-katex v1.0.2 h1:pIG4n3qLl/IVe7BEiwn+GL8r5lOCtF6FDxlcrPKdAXk=
github.com/gethinode/mod-katex v1.0.2/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
github.com/gethinode/mod-katex v1.0.3 h1:fvlUWqcUQqv2zRNM2kfmJ6GhXA816Tl1nfVrUkmBStI=
github.com/gethinode/mod-katex v1.0.3/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
github.com/gethinode/mod-leaflet v0.3.4 h1:oY+YQ0JiJuhFQNrk9XgFdg0NMsTUQPXNfnILp4ia4r4=
github.com/gethinode/mod-leaflet v0.3.4/go.mod h1:uGggt87x4Fw7wBoJpSiUvNkYg+s/Ujne7klAX2rxMRk=
github.com/gethinode/mod-leaflet v0.3.5 h1:69Bv/6zRXhbcTzo7TMr58h3ry47srHRpM1k81LrLbYU=
github.com/gethinode/mod-leaflet v0.3.5/go.mod h1:uGggt87x4Fw7wBoJpSiUvNkYg+s/Ujne7klAX2rxMRk=
github.com/gethinode/mod-lottie v1.0.0 h1:1CUZMcgN5FAyjjyuP3qkaOQ6M5sv6HUAbosW4sIT5VE=
github.com/gethinode/mod-lottie v1.0.0/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=
github.com/gethinode/mod-lottie v1.0.1 h1:+IE7xtnSVQpJS56oBJq9RWKZeFEfxrOZAqE3BSrS/u0=
github.com/gethinode/mod-lottie v1.0.1/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=
github.com/gethinode/mod-lottie v1.0.2 h1:QM/PJqEl1UhNNoPx6y7pVtwev/mDxUyWNHLqDB76YzI=
github.com/gethinode/mod-lottie v1.0.2/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=
github.com/gethinode/mod-lottie v1.1.0 h1:KnfOQ45xdv1tpsKCkF5OiE3QuT29ycppBfY6o+rWl/4=
github.com/gethinode/mod-lottie v1.1.0/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=
github.com/gethinode/mod-lottie v1.2.0 h1:9S0Y4PlEO66dIvFxayatmDEf8WWxqbLNLi4z563i2gM=
github.com/gethinode/mod-lottie v1.2.0/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=
github.com/gethinode/mod-lottie v1.3.0 h1:vQ8CXkjdp2IeFskTzu+ZnKOEio8GtN08urVK+oCH81E=
github.com/gethinode/mod-lottie v1.3.0/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=

510
exampleSite/hugo_stats.json Normal file
View File

@@ -0,0 +1,510 @@
{
"htmlElements": {
"tags": [
"a",
"abbr",
"body",
"br",
"button",
"code",
"div",
"em",
"figcaption",
"figure",
"footer",
"form",
"h2",
"head",
"hr",
"html",
"i",
"img",
"input",
"li",
"link",
"mark",
"meta",
"nav",
"nil",
"noscript",
"ol",
"p",
"path",
"pre",
"script",
"small",
"span",
"strong",
"sub",
"sup",
"svg",
"time",
"title",
"ul",
"use"
],
"classes": [
"accordion",
"accordion-body",
"accordion-button",
"accordion-collapse",
"accordion-header",
"accordion-item",
"active",
"alert",
"alert-danger",
"alert-dismissible",
"align-content-center",
"align-items-center",
"align-items-end",
"align-items-start",
"align-middle",
"align-self-center",
"anchor",
"badge",
"bg-body",
"bg-body-tertiary",
"bg-danger",
"bg-opacity-10",
"bg-primary",
"bg-primary-subtle",
"bi",
"bi-activity",
"border",
"border-0",
"border-1",
"border-bottom",
"border-end",
"border-none",
"border-start",
"border-top",
"bottom-0",
"bottom-bar",
"breadcrumb",
"breadcrumb-item",
"btn",
"btn-close",
"btn-group",
"btn-light",
"btn-outline-primary",
"btn-outline-secondary",
"btn-primary",
"btn-secondary",
"btn-sm",
"btn-social",
"card",
"card-body",
"card-body-link",
"card-body-margin",
"card-emphasize",
"card-icon",
"card-img-top",
"card-img-wrap",
"card-text",
"card-title",
"card-zoom",
"carousel",
"carousel-caption",
"carousel-control-next",
"carousel-control-next-icon",
"carousel-control-prev",
"carousel-control-prev-icon",
"carousel-indicators",
"carousel-inner",
"carousel-item",
"chroma",
"col",
"col-12",
"col-3",
"col-4",
"col-6",
"col-8",
"col-9",
"col-lg-4",
"col-lg-8",
"col-md-10",
"col-md-2",
"col-md-4",
"col-md-8",
"col-md-auto",
"col-sm-12",
"col-sm-3",
"col-sm-6",
"collapse",
"collapsed",
"container",
"container-fluid",
"container-xxl",
"custom",
"d-block",
"d-flex",
"d-grid",
"d-inline",
"d-inline-flex",
"d-md-block",
"d-md-flex",
"d-md-none",
"d-none",
"d-none-dark",
"d-none-light",
"d-sm-block",
"d-sm-none",
"display-1",
"display-4",
"dropdown",
"dropdown-divider-bg",
"dropdown-item",
"dropdown-menu",
"dropdown-menu-end",
"dropdown-toggle",
"emphasis",
"emphasis-dark",
"end-0",
"fa",
"fa-10x",
"fa-2x",
"fa-2xs",
"fa-4x",
"fa-activity",
"fa-arrow-left",
"fa-arrow-right",
"fa-bootstrap",
"fa-circle-check",
"fa-circle-half-stroke",
"fa-code",
"fa-docker",
"fa-ellipsis",
"fa-face-frown",
"fa-facebook",
"fa-fluid",
"fa-fw",
"fa-github",
"fa-globe",
"fa-heart",
"fa-house",
"fa-link",
"fa-linkedin",
"fa-magnifying-glass",
"fa-medium",
"fa-moon",
"fa-rocket",
"fa-share-nodes",
"fa-sort",
"fa-square-check",
"fa-sun",
"fa-up-right-from-square",
"fa-whatsapp",
"fa-wrapper",
"fa-x-twitter",
"fab",
"fade",
"fas",
"feature",
"figure-caption",
"fixed-top",
"flex-column",
"flex-fill",
"flex-grow-1",
"flex-wrap",
"font-monospace",
"footer",
"form-control",
"fs-3",
"fs-5",
"fw-30",
"fw-bold",
"fw-semibold",
"g-0",
"g-3",
"g-4",
"gap-1",
"gap-2",
"gradient",
"h-100",
"h1",
"h2",
"h3",
"h4",
"h5",
"h6",
"heading",
"highlight",
"hstack",
"img-fluid",
"img-wrap",
"invisible",
"is-search",
"justify-content-between",
"justify-content-center",
"justify-content-end",
"justify-content-start",
"lead",
"leaflet-map",
"link-bg-body",
"link-bg-body-tertiary",
"link-bg-footer",
"link-primary",
"link-secondary",
"link-success",
"link-warning",
"lottie-animation",
"m-0",
"main-content",
"main-nav-toggler",
"mb-0",
"mb-3",
"mb-5",
"mb-lg-5",
"me-3",
"me-auto",
"middle-bar",
"min-vh-100",
"ms-1",
"ms-3",
"ms-auto",
"ms-md-3",
"mt-2",
"mt-3",
"mt-5",
"mt-auto",
"multi-docs-collapse-15",
"multi-file-collapse-1",
"mx-auto",
"mx-md-0",
"mx-md-2",
"my-2",
"my-auto",
"my-md-0",
"my-md-auto",
"nav",
"nav-item",
"nav-link",
"nav-pills",
"nav-tabs",
"navbar",
"navbar-brand",
"navbar-collapse",
"navbar-contrast",
"navbar-expand-md",
"navbar-fixed-top",
"navbar-nav",
"navbar-nav-scroll",
"navbar-toggler",
"next",
"no-js",
"order-0",
"order-1",
"order-first",
"order-md-0",
"order-md-1",
"p-0",
"p-1",
"p-2",
"p-3",
"p-4",
"pb-2",
"pb-3",
"pb-4",
"pb-5",
"pb-md-0",
"pe-3",
"position-absolute",
"position-fixed",
"position-relative",
"post-date",
"previous",
"ps-1",
"ps-3",
"ps-xl-3",
"pt-4",
"pt-5",
"pt-md-3",
"px-4",
"px-xxl-0",
"py-1",
"py-2",
"py-3",
"py-md-1",
"ratio",
"ratio-16x9",
"rounded",
"rounded-2",
"rounded-bottom",
"rounded-pill",
"rounded-top",
"row",
"row-cols-1",
"row-cols-2",
"row-cols-md-2",
"row-cols-md-3",
"row-cols-sm-2",
"row-cols-sm-3",
"search",
"search-input",
"search-suggestions",
"shadow",
"show",
"slide",
"small",
"spinner-border",
"start-100",
"sticky-top",
"stretched-link",
"svg-inline--fa",
"switch-mode-collapsed",
"syntax-highlight",
"tab-content",
"tab-pane",
"tag-link",
"text-bg-body",
"text-bg-body-tertiary",
"text-bg-info",
"text-bg-primary",
"text-bg-secondary",
"text-bg-success",
"text-bg-warning",
"text-body",
"text-body-secondary",
"text-break",
"text-center",
"text-decoration-none",
"text-end",
"text-info",
"text-muted",
"text-nowrap",
"text-right",
"text-secondary",
"text-sm-start",
"text-start",
"text-uppercase",
"theme-icon",
"theme-icon-active",
"tickmark",
"timeline",
"timeline-bg-dark",
"timeline-connector-end",
"timeline-connector-start",
"timeline-description-text-end",
"timeline-description-text-start",
"timeline-dot",
"timeline-info",
"timeline-panel-end",
"timeline-panel-start",
"timeline-primary",
"timeline-semi-circle-end",
"timeline-semi-circle-start",
"timeline-sm",
"timeline-success",
"timeline-warning",
"toast",
"toast-body",
"toast-container",
"toast-header",
"toc",
"toc-button",
"toc-panel",
"toc-sidebar",
"toggler-icon",
"top-0",
"top-bar",
"translate-middle",
"visually-hidden",
"vr",
"w-100",
"w-50"
],
"ids": [
"-theme",
"-theme-collapsed",
"TableOfContents",
"abbr",
"accordion",
"accordion-0",
"accordion-0-heading-0",
"accordion-0-heading-1",
"accordion-0-heading-2",
"accordion-0-item-0",
"accordion-0-item-1",
"accordion-0-item-2",
"accordéon",
"alert",
"alerte",
"animation",
"badge",
"barre-de-navigation",
"blog",
"body-docs-collapse-15",
"body-file-collapse-1",
"bouton",
"breadcrumb",
"btn-webshare",
"button",
"button-group",
"card",
"card-group",
"carousel",
"carousel-0",
"carrousel",
"carte",
"chronologie",
"collapse",
"collapse-1",
"command-prompt",
"docs",
"documentation",
"example",
"exemple",
"fichier",
"fil-dariane",
"file",
"footer-docs-collapse-15",
"footer-file-collapse-1",
"formula-katex",
"formule-katex",
"groupe-de-boutons",
"groupe-de-cartes",
"icon",
"image",
"indicateur-de-chargement",
"infobulle",
"invite-de-commandes",
"leaflet-map-0",
"lien",
"link",
"lottie-animation-0",
"map",
"mark",
"nav",
"nav-0",
"nav-0-0",
"nav-0-1",
"nav-0-2",
"nav-0-btn-0",
"nav-0-btn-1",
"nav-0-btn-2",
"navbar",
"navbar-0-collapse",
"navbar-sample-collapse",
"navigation",
"notification",
"projecten",
"projects",
"projets",
"publication",
"release",
"réduire",
"spinner",
"sub",
"sup",
"timeline",
"toast",
"toast-container",
"toast-copied-code-message",
"toast-example-1",
"toast-example-2",
"toast-message-email-4",
"toc-collapse",
"tooltip"
]
}
}

File diff suppressed because one or more lines are too long

11
go.mod
View File

@@ -3,9 +3,10 @@ module github.com/gethinode/hinode
go 1.19
require (
github.com/gethinode/mod-bootstrap v1.1.1 // indirect
github.com/gethinode/mod-flexsearch v1.4.0 // indirect
github.com/gethinode/mod-fontawesome v1.2.5 // indirect
github.com/gethinode/mod-katex v1.0.2 // indirect
github.com/gethinode/mod-leaflet v0.3.4 // indirect
github.com/gethinode/mod-bootstrap v1.2.1 // indirect
github.com/gethinode/mod-flexsearch v1.5.1 // indirect
github.com/gethinode/mod-fontawesome v1.5.0 // indirect
github.com/gethinode/mod-katex v1.0.3 // indirect
github.com/gethinode/mod-leaflet v0.3.5 // indirect
github.com/gethinode/mod-lottie v1.3.0 // indirect
)

34
go.sum
View File

@@ -4,6 +4,10 @@ github.com/gethinode/mod-bootstrap v1.1.0 h1:BbalsW8kmFhv+J+dcc41TGcjIlM/p69AB0h
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-bootstrap v1.2.0 h1:JkTcImU3qpi25WgKvUxUYiMoiXtrxrG+Wf/utRB5UbU=
github.com/gethinode/mod-bootstrap v1.2.0/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
github.com/gethinode/mod-bootstrap v1.2.1 h1:z54dgsbhShhlri+X77Z+yLrg0wz/f8C8ojA/wnlhsJc=
github.com/gethinode/mod-bootstrap v1.2.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=
@@ -22,6 +26,10 @@ github.com/gethinode/mod-flexsearch v1.3.0 h1:RbfEDw219Y1rOVp9lHmy5ePdF9lyPalDu2
github.com/gethinode/mod-flexsearch v1.3.0/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
github.com/gethinode/mod-flexsearch v1.4.0 h1:5e/NVRLyWzUZ9fO/fNsM5o+O7nw+xyln2rfEOtbgfWc=
github.com/gethinode/mod-flexsearch v1.4.0/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
github.com/gethinode/mod-flexsearch v1.4.1 h1:z+GKvhJ4v6BsZsWVZRgbO9WcmSZEVUkb3Q9a09yXtd8=
github.com/gethinode/mod-flexsearch v1.4.1/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
github.com/gethinode/mod-flexsearch v1.5.1 h1:9fYlnHgiEXckL0EoC0zlSNO7BWZf5yiOroSWT13Kphc=
github.com/gethinode/mod-flexsearch v1.5.1/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
github.com/gethinode/mod-fontawesome v1.0.2 h1:ZSK6D20/w4y5GnfYfTBB58uHD0ChIfkpKfRGwioS9rg=
github.com/gethinode/mod-fontawesome v1.0.2/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
github.com/gethinode/mod-fontawesome v1.1.0 h1:rsDzUI+3ZlS/do2ff3ne8/z3KwHeysmuA+WsXlumXXk=
@@ -38,12 +46,24 @@ github.com/gethinode/mod-fontawesome v1.2.4 h1:SqE3CQ+boaBIhrVh3MPu4nz0uoHPfEH5t
github.com/gethinode/mod-fontawesome v1.2.4/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
github.com/gethinode/mod-fontawesome v1.2.5 h1:RqkLRj6+s+gM4nKd0IwNMMDA8cRmxfp0fxkVH4FdAGU=
github.com/gethinode/mod-fontawesome v1.2.5/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
github.com/gethinode/mod-fontawesome v1.3.0 h1:oudeDBlAKu8vqYxumWuq5SG5F5itm33NgTrBLgvPulQ=
github.com/gethinode/mod-fontawesome v1.3.0/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
github.com/gethinode/mod-fontawesome v1.3.1 h1:EdnBuG2B+bi06OcYmcL1NfSxHpRMEGu8TXUqEEpVH4g=
github.com/gethinode/mod-fontawesome v1.3.1/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
github.com/gethinode/mod-fontawesome v1.3.2 h1:qLJSbAFR2T33BuBtC2Iulm9wZql3cy7AhXjxc2YGzBU=
github.com/gethinode/mod-fontawesome v1.3.2/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
github.com/gethinode/mod-fontawesome v1.4.0 h1:JfmVYwQl19jmZxgxY64yvGqJAAEiFkKf2dbZ5Iv08Qw=
github.com/gethinode/mod-fontawesome v1.4.0/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
github.com/gethinode/mod-fontawesome v1.5.0 h1:3mW5dnWauuF9wSWXNIY+PPgTNPlc/xQOQoG7XGic1Yk=
github.com/gethinode/mod-fontawesome v1.5.0/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
github.com/gethinode/mod-katex v1.0.0 h1:me/3dIIZBkfk1mRIFt8QiAGYwYDoSG5bc2hHRtIutFc=
github.com/gethinode/mod-katex v1.0.0/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
github.com/gethinode/mod-katex v1.0.1 h1:809QUztxmKgMNchU+v03iMO7Ma+ISc3ZzhXYauc21rs=
github.com/gethinode/mod-katex v1.0.1/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
github.com/gethinode/mod-katex v1.0.2 h1:pIG4n3qLl/IVe7BEiwn+GL8r5lOCtF6FDxlcrPKdAXk=
github.com/gethinode/mod-katex v1.0.2/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
github.com/gethinode/mod-katex v1.0.3 h1:fvlUWqcUQqv2zRNM2kfmJ6GhXA816Tl1nfVrUkmBStI=
github.com/gethinode/mod-katex v1.0.3/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
github.com/gethinode/mod-leaflet v0.2.3 h1:QQI4h+IH0jZ7fx4q0um2YIEiYBoW3OAfW8qHzbRCDPk=
github.com/gethinode/mod-leaflet v0.2.3/go.mod h1:uGggt87x4Fw7wBoJpSiUvNkYg+s/Ujne7klAX2rxMRk=
github.com/gethinode/mod-leaflet v0.3.1 h1:H5MaOa+BB1KuVw7abTqfIn/SNzzRsAyx/WQoSe+2Ykc=
@@ -52,3 +72,17 @@ github.com/gethinode/mod-leaflet v0.3.3 h1:isnjja6VRFvVWBatYSouh46TXSJg2C4/E2BQT
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=
github.com/gethinode/mod-leaflet v0.3.5 h1:69Bv/6zRXhbcTzo7TMr58h3ry47srHRpM1k81LrLbYU=
github.com/gethinode/mod-leaflet v0.3.5/go.mod h1:uGggt87x4Fw7wBoJpSiUvNkYg+s/Ujne7klAX2rxMRk=
github.com/gethinode/mod-lottie v1.0.0 h1:1CUZMcgN5FAyjjyuP3qkaOQ6M5sv6HUAbosW4sIT5VE=
github.com/gethinode/mod-lottie v1.0.0/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=
github.com/gethinode/mod-lottie v1.0.1 h1:+IE7xtnSVQpJS56oBJq9RWKZeFEfxrOZAqE3BSrS/u0=
github.com/gethinode/mod-lottie v1.0.1/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=
github.com/gethinode/mod-lottie v1.0.2 h1:QM/PJqEl1UhNNoPx6y7pVtwev/mDxUyWNHLqDB76YzI=
github.com/gethinode/mod-lottie v1.0.2/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=
github.com/gethinode/mod-lottie v1.1.0 h1:KnfOQ45xdv1tpsKCkF5OiE3QuT29ycppBfY6o+rWl/4=
github.com/gethinode/mod-lottie v1.1.0/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=
github.com/gethinode/mod-lottie v1.2.0 h1:9S0Y4PlEO66dIvFxayatmDEf8WWxqbLNLi4z563i2gM=
github.com/gethinode/mod-lottie v1.2.0/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=
github.com/gethinode/mod-lottie v1.3.0 h1:vQ8CXkjdp2IeFskTzu+ZnKOEio8GtN08urVK+oCH81E=
github.com/gethinode/mod-lottie v1.3.0/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=

180
hugo_stats.json Normal file
View File

@@ -0,0 +1,180 @@
{
"htmlElements": {
"tags": [
"a",
"body",
"button",
"div",
"footer",
"form",
"head",
"html",
"img",
"input",
"li",
"link",
"meta",
"nav",
"p",
"path",
"script",
"small",
"span",
"strong",
"svg",
"title",
"ul"
],
"classes": [
"active",
"align-content-center",
"align-items-center",
"align-self-center",
"bg-body",
"bg-opacity-10",
"bg-primary",
"bottom-0",
"bottom-bar",
"btn",
"btn-close",
"btn-primary",
"col",
"col-12",
"col-6",
"col-md-2",
"col-md-4",
"col-md-8",
"col-sm-12",
"collapse",
"collapsed",
"container-fluid",
"container-xxl",
"d-flex",
"d-inline",
"d-md-block",
"d-md-none",
"d-none",
"display-1",
"display-4",
"dropdown",
"dropdown-item",
"dropdown-menu",
"dropdown-menu-end",
"dropdown-toggle",
"emphasis",
"end-0",
"fa",
"fa-10x",
"fa-2x",
"fa-book-open",
"fa-circle-half-stroke",
"fa-ellipsis",
"fa-face-frown",
"fa-fw",
"fa-github",
"fa-linkedin",
"fa-medium",
"fa-moon",
"fa-sun",
"fab",
"fas",
"feature",
"flex-column",
"flex-fill",
"flex-grow-1",
"flex-wrap",
"footer",
"form-control",
"fs-3",
"fs-5",
"fw-30",
"fw-bold",
"hstack",
"img-fluid",
"img-wrap",
"invisible",
"is-search",
"justify-content-center",
"justify-content-end",
"justify-content-start",
"link-bg-footer",
"link-secondary",
"main-content",
"main-nav-toggler",
"me-auto",
"middle-bar",
"min-vh-100",
"ms-auto",
"ms-md-3",
"mt-3",
"mt-5",
"mx-auto",
"mx-md-0",
"my-auto",
"my-md-auto",
"nav-item",
"nav-link",
"navbar",
"navbar-brand",
"navbar-collapse",
"navbar-expand-md",
"navbar-nav",
"navbar-toggler",
"no-js",
"order-0",
"order-1",
"order-md-0",
"order-md-1",
"p-0",
"p-2",
"p-3",
"p-4",
"pb-4",
"pb-md-0",
"position-fixed",
"position-relative",
"ps-1",
"pt-4",
"pt-5",
"pt-md-3",
"px-4",
"px-xxl-0",
"py-3",
"rounded",
"row",
"row-cols-1",
"row-cols-2",
"row-cols-md-2",
"row-cols-sm-2",
"row-cols-sm-3",
"search",
"search-input",
"search-suggestions",
"shadow",
"svg-inline--fa",
"switch-mode-collapsed",
"text-center",
"text-decoration-none",
"text-muted",
"text-secondary",
"text-sm-start",
"text-start",
"theme-icon",
"theme-icon-active",
"toast",
"toast-body",
"toast-container",
"toast-header",
"toggler-icon",
"top-bar",
"w-100"
],
"ids": [
"-theme",
"-theme-collapsed",
"navbar-0-collapse",
"toast-container",
"toast-copied-code-message"
]
}
}

View File

@@ -25,6 +25,8 @@
translation: "Articles"
- id: more
translation: "More {{ . }}"
- id: emptyList
translation: "No articles found"
# Sharing
- id: shareLink
@@ -39,6 +41,8 @@
translation: "Link"
- id: code
translation: "Code"
- id: download
translation: "Download article"
# Pagination
- id: paginationNav

View File

@@ -94,7 +94,7 @@
# 404 page
- id: pageNotFound
translation: "La page que vous recherchez n'existe pas ou une autre erreur s'est produite.Essayez de revenir à notre {{ . }}."
translation: "La page que vous recherchez n'existe pas ou une autre erreur s'est produite. Essayez de revenir à notre {{ . }}."
- id: pageNotFoundTitle
translation: "Page non trouvée"
- id: pageNotFoundHome
@@ -112,4 +112,4 @@
- id: show
translation: "Afficher"
- id: comments
translation: "Commentaires"
translation: "Commentaires"

View File

@@ -23,6 +23,8 @@
translation: "Artikelen"
- id: more
translation: "Meer {{ . }}"
- id: emptyList
translation: "Geen artikelen gevonden"
# Sharing
- id: shareLink
@@ -37,6 +39,8 @@
translation: "Link"
- id: code
translation: "Code"
- id: download
translation: "Download artikel"
# Pagination
- id: paginationNav

View File

@@ -1,8 +1,30 @@
{{- $section := .Section }}
{{- define "partials/optional-scripts.html" -}}
{{- $modules := site.Params.modules.optional | intersect .Params.modules -}}
{{- range $index, $mod := $modules -}}
{{- $filename := printf "js/%s.bundle.js" $mod -}}
{{- $match := printf "js/modules/%s/**.js" $mod -}}
{{- $skipTemplate := false -}}
{{- if reflect.IsSlice site.Params.modules.disableTemplate -}}
{{- if in site.Params.modules.disableTemplate $mod}}
{{- $skipTemplate = true -}}
{{- end -}}
{{- end -}}
{{ $state := "" }}
{{- with (index site.Params.modules $mod) -}}
{{- with index . "state" }}{{ $state = . }}{{ end -}}
{{- end -}}
{{- partial "footer/scripts.html" (dict "filename" $filename "match" $match "header" false "skipTemplate" $skipTemplate "state" $state "page" .) }}
{{- end -}}
{{- end -}}
{{- /* Set version-aware sidebar menu */ -}}
{{- $version := partial "utilities/GetVersion.html" (dict "page" . "base" true) -}}
{{- $.Scratch.Set "version" $version -}}
{{ with partial "utilities/GetMenu" (dict "page" . "version" $version) }}{{ $.Scratch.Set "sidebar" . }}{{ end }}
{{- /* Validate if current version is latest */ -}}
{{- if and site.Params.docs.checkVersion $version -}}
{{- if ne $version "latest" -}}
{{- if partial "utilities/IsOlder" (dict "current" $version) -}}
@@ -12,10 +34,13 @@
{{- end -}}
{{- end -}}
{{- /* Validate module configuration */ -}}
{{- 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 -}}
{{- $section := .Section }}
<!doctype html>
<html lang="{{ .Site.Language.Lang }}" class="no-js">
<head>
@@ -24,76 +49,25 @@
<body>
{{- partial "footer/scripts.html" (dict "filename" "js/critical.bundle.js" "match" "js/critical/**.js" "header" true "page" .) -}}
<div class="d-flex flex-column min-vh-100{{ 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
"page" .
"fixed" (string .Site.Params.navigation.fixed)
"color" (.Site.Params.navigation.color)
"style" (default "light" .Site.Params.navigation.style))
-}}
</div>
{{ if .IsHome -}}
{{ if .Site.Params.home.fullCover -}}
<div class="d-flex flex-fill {{ if .Site.Params.navigation.fixed }}mt-5{{ end }}">
{{ block "featured" . }}{{ end -}}
</div>
{{ else -}}
<div class="{{ if .Site.Params.navigation.fixed }}mt-5{{ end }}">
{{ block "featured" . }}{{ end -}}
</div>
<div class="d-flex flex-column flex-fill">
{{ block "main" . }}{{ end -}}
</div>
{{ if not .Site.Params.main.footerBelowFold }}
<div class="">
{{- partial "footer/social.html" . -}}
{{- partial "footer/footer.html" . -}}
</div>
{{ end }}
{{ end -}}
{{ else -}}
<div class="d-flex flex-column flex-fill {{ if .Site.Params.navigation.fixed }}mt-5{{ end }}">
{{ block "main" . }}{{ end -}}
</div>
{{ if not .Site.Params.main.footerBelowFold }}
<div class="">
{{- partial "footer/social.html" . -}}
{{- partial "footer/footer.html" . -}}
</div>
{{ end }}
{{ end -}}
</div>
<div class="d-flex flex-column min-vh-100{{ if .IsHome }}{{ with .Site.Params.home.style }} {{ . }}{{ end }}{{ end }}">
{{- partial "assets/navbar.html" (dict
"page" .
"fixed" (string site.Params.navigation.fixed)
"color" site.Params.navigation.color
"style" (default "light" site.Params.navigation.style)
"size" (default "md" site.Params.navigation.size))
-}}
{{ if and .IsHome .Site.Params.home.fullCover -}}
<div class="">
<div class="flex-fill main-content{{ if .Site.Params.main.footerBelowFold }} fullscreen{{ end }} pb-4">
{{ block "main" . }}{{ end -}}
</div>
<div class="">
{{- partial "footer/social.html" . -}}
{{- partial "footer/footer.html" . -}}
</div>
{{ else if .Site.Params.main.footerBelowFold }}
<div class="">
{{- partial "footer/social.html" . -}}
{{- partial "footer/footer.html" . -}}
</div>
{{ end }}
{{- partial "footer/social.html" . -}}
{{- partial "footer/footer.html" . -}}
</div>
{{- partial "footer/toast-container.html" . -}}
{{- partialCached "footer/scripts.html" (dict "header" false "page" . "core" true) }}
{{- $modules := site.Params.modules.optional | intersect .Params.modules -}}
{{- range $index, $mod := $modules -}}
{{- $filename := printf "js/%s.bundle.js" $mod -}}
{{- $match := printf "js/modules/%s/**.js" $mod -}}
{{- $skipTemplate := false -}}
{{- if reflect.IsSlice site.Params.modules.disableTemplate -}}
{{- if in site.Params.modules.disableTemplate $mod}}
{{- $skipTemplate = true -}}
{{- end -}}
{{- end -}}
{{- partial "footer/scripts.html" (dict "filename" $filename "match" $match "header" false "skipTemplate" $skipTemplate "page" .) }}
{{- end -}}
{{- partial "partials/optional-scripts.html" . -}}
</body>
</html>

View File

@@ -1,12 +1,135 @@
{{- define "main" -}}
{{- partial "assets/section-list.html" (dict
"page" .
"section" .Type
"home" false
"nested" .Params.Nested
"title" (or .Title .Type)
"description" .Description
"content" .Content
"paginate" true)
-}}
{{- end -}}
{{- $page := . -}}
{{- $orientation := site.Params.list.feature.orientation | default "horizontal" -}}
{{- $width := site.Params.list.feature.width | default 6 -}}
{{- $justify := site.Params.list.feature.justify | default "center" -}}
{{- $align := site.Params.list.feature.align | default "center" -}}
{{- $sections := slice -}}
{{- $sections = $sections | append $page.Type -}}
{{ with $page.Params.sections }}
{{ $sections = $sections | append . }}
{{ end }}
{{- $actions := $page.Params.actions -}}
{{- $headings := slice -}}
{{- $layout := $page.Params.layout -}}
{{ if $page.IsHome }}
{{- $orientation = or site.Params.home.feature.orientation $orientation -}}
{{- $width = or site.Params.home.feature.width $width -}}
{{- $justify = or site.Params.home.feature.justify $justify -}}
{{- $align = or site.Params.home.feature.align $align -}}
{{- $actions = (or $actions site.Params.featured.actions) -}}
{{- if not $page.Params.sections -}}
{{- with site.Params.home.sections }}
{{ $sections = $sections | append . }}
{{ else }}
{{ range $section := site.Sections }}
{{ $sections = $sections | append $section.Type }}
{{ end }}
{{ end }}
{{- end -}}
{{ else }}
{{ $headings = $headings | append $page.Title }}
{{- range .Fragments.Headings }}
{{- range .Headings }}
{{- $headings = $headings | append .Title -}}
{{- end -}}
{{- end -}}
{{ end }}
{{/* Generate section content first to determine headings */}}
{{ $body := "" }}
{{- range $index, $section := $sections -}}
{{- $sectionPage := site.GetPage "section" $section -}}
{{- $sectionURL := $sectionPage.RelPermalink -}}
{{- $title := or $sectionPage.Title $sectionPage.Type -}}
{{- with (index site.Params.sections $section) -}}
{{- with index . "title" }}{{ $title = or . $title }}{{ end -}}
{{- end -}}
{{- $thumbnail := (or (and (reflect.IsMap $sectionPage.Params.Thumbnail) $sectionPage.Params.Thumbnail.url) $sectionPage.Params.Thumbnail) -}}
{{- $icon := $sectionPage.Params.Icon -}}
{{- $content := $sectionPage.Content -}}
{{- $sectionTitle := strings.FirstUpper $sectionPage.Type -}}
{{- $moreTitle := "" -}}
{{- with (index site.Params.sections $section) -}}
{{- with index . "reference" }}{{ $moreTitle = . }}{{ end -}}
{{- end -}}
{{- $moreTitle = or $moreTitle (printf (T "more" (pluralize $sectionTitle))) -}}
{{- $sectionContent := trim (partial "assets/section-list.html" (dict
"page" $page
"section" $section
"home" $page.IsHome
"simple" (eq (len $sections) 1)
"nested" (and $page.IsHome (eq $section $page.Section))
"thumbnail" $thumbnail
"icon" $icon
"content" $content
"moreTitle" $moreTitle
"sectionURL" $sectionURL)) " \r\n"
-}}
{{ if $sectionContent }}
{{- if not $page.IsHome }}{{ $headings = $headings | append $title }}{{ end -}}
{{- $body = printf "%s%s" $body $sectionContent }}
{{ end }}
{{- end -}}
{{/* Display featured section */}}
{{- if or (eq $layout "featured") $page.IsHome -}}
{{- partial "list/featured.html" (dict
"page" .
"headings" $headings
"actions" $actions
"orientation" $orientation
"width" $width
"justify" $justify
"align" $align)
-}}
{{- end -}}
{{/* Display main content */}}
<div class="container-xxl px-4 px-xxl-0">
{{- if ne $layout "featured" -}}
{{ if and (not $page.IsHome) site.Params.navigation.breadcrumb }}
<div>{{ partial "assets/breadcrumb.html" $page }}</div>
{{ end -}}
{{- end -}}
<div class="row row-cols-1 row-cols-sm-2">
<div class="col col-sm-12 col-md-8">
{{ if not $page.IsHome }}
{{ with $page.Title }}<p id="{{ anchorize . }}" class="display-4 mt-5{{ if and page.IsHome site.Params.home.centerHeadline }} text-center{{ end }}">{{ . }}</p>{{ end }}
{{ end }}
{{ if ($page.Params.menu) }}
{{- partial "assets/section-menu.html" $page -}}
{{- end -}}
{{- $content := partial "utilities/ProcessContent" (dict "page" $page "raw" $page.RawContent) -}}
{{ $content | safeHTML }}
{{ if and (and (and $sections (eq (len $sections) 1)) (not $body)) (not $content) }}
<p class="pt-4">{{- T "emptyList" }}.</p>
{{ end }}
</div>
{{ with $page.Params.contact }}
{{- $contact := site.GetPage . }}
{{- if not $contact }}
{{- errorf "Error processing content file '%s' - Cannot find contact: %s" $page.File . -}}
{{- else -}}
{{ $color := site.Params.contact.color | default "primary" }}
{{ $style := site.Params.contact.style | default "shadow" }}
<div class="col col-md-4 d-none d-md-block pt-5">
{{- partial "assets/card.html" (dict "path" $page.Params.contact "color" $color "header" "none" "footer" "none" "ratio" "1x1" "class" (printf "w-75 mx-auto mt-4 %s" $style)) -}}
</div>
<div class="col col-sm-12 d-md-none pt-5">
{{- partial "assets/card.html" (dict "path" $page.Params.contact "color" $color "header" "none" "footer" "none" "orientation" "horizontal" "class" $style) -}}
</div>
{{- end }}
{{ end }}
</div>
</div>
{{/* Display generated sections */}}
{{ $body | safeHTML }}
{{- end -}}

View File

@@ -18,7 +18,7 @@
{{- if gt (len (.GetTerms "tags")) 0 -}}
<div class="mt-3">
<div class="d-none-dark">
<div class="hstack gap-3">
<div class="hstack gap-1">
{{ range (.GetTerms "tags") -}}
{{- $url := (path.Join .Page.RelPermalink) | relLangURL -}}
{{ partial "assets/button.html" (dict "href" $url "title" .LinkTitle "color" "light" "size" "sm") }}
@@ -27,7 +27,7 @@
</div>
<div class="d-none-light">
<div class="hstack gap-3">
<div class="hstack gap-1">
{{ range (.GetTerms "tags") -}}
{{- $url := (path.Join .Page.RelPermalink) | relLangURL -}}
{{ partial "assets/button.html" (dict "href" $url "title" .LinkTitle "color" "primary" "size" "sm" "outline" "true") }}
@@ -83,7 +83,8 @@
{{- partial "assets/image.html" (dict "url" $thumbnail "ratio" "21x9" "outerClass" "img-wrap" "innerClass" "rounded" "title" .Params.title "caption" $credits) -}}
{{ end -}}
{{ end }}
{{ .Content }}
{{ partial "utilities/ProcessContent" (dict "page" .Page "raw" .RawContent) }}
{{ end -}}
{{ define "partials/footer.html" -}}
@@ -98,7 +99,7 @@
{{ $next := . -}}
{{ with .OutputFormats.Get "html" -}}
<a class="next" href="{{ $next.RelPermalink }}">
{{- partial "assets/icon.html" (dict "icon" "fas arrow-left") }}&nbsp;{{ $next.Title }}</a>
{{- partial "assets/icon.html" (dict "icon" "fas arrow-left") }}&nbsp;{{ $next.LinkTitle }}</a>
{{- end -}}
{{ end -}}
</div>
@@ -106,7 +107,7 @@
{{ with .PrevInSection -}}
{{ $prev := . -}}
{{ with .OutputFormats.Get "html" -}}
<a class="previous" href="{{ $prev.RelPermalink }}">{{ $prev.Title }}&nbsp;{{- partial "assets/icon.html" (dict "icon" "fas arrow-right") }}</a>
<a class="previous" href="{{ $prev.RelPermalink }}">{{ $prev.LinkTitle }}&nbsp;{{- partial "assets/icon.html" (dict "icon" "fas arrow-right") }}</a>
{{- end -}}
{{ end -}}
</div>
@@ -119,6 +120,11 @@
{{ end -}}
{{ define "main" -}}
{{- $download := .Params.download -}}
{{- if and $download (not (fileExists (path.Join "static" $download))) -}}
{{- errorf "Cannot find download file for page '%s': %s" .File.Path $download -}}
{{- end -}}
{{- $menu := .Scratch.Get "sidebar" -}}
{{- $version := .Scratch.Get "version" -}}
{{- $sidebar := .Site.Params.navigation.sidebar | default true -}}
@@ -133,7 +139,7 @@
</div>
</div>
<div class="container-xxl px-3 px-xxl-0">
<div class="container-xxl p-4 px-xxl-0">
<div class="row row-cols-md-2 row-cols-lg-3">
<div class="col col-md-3 col-lg-2 d-none pt-5 d-md-block sidebar-overflow sticky-top">
{{ partial "assets/sidebar" (dict "page" . "menu" $menu "version" $version) }}
@@ -145,12 +151,12 @@
</div>
<div class="col col-lg-2 d-none d-lg-block pt-5">
{{- if and .Site.Params.navigation.toc .Params.includeToc | default true -}}
{{ partial "assets/toc.html" . -}}
{{ partial "assets/toc.html" (dict "page" . "download" $download) -}}
{{ end -}}
</div>
</div>
</div>
{{ else }}
{{ else if $sidebar }}
<div class="container-xxl px-3 px-xxl-0">
<div class="row row-cols-1 row-cols-sm-3">
<div class="col col-md-2 d-none d-md-block"></div>
@@ -161,7 +167,22 @@
</div>
<div class="col col-md-2 d-none d-md-block">
{{- if and .Site.Params.navigation.toc .Params.includeToc | default true -}}
{{ partial "assets/toc.html" . -}}
{{ partial "assets/toc.html" (dict "page" . "download" $download) -}}
{{ end -}}
</div>
</div>
</div>
{{ else }}
<div class="container-xxl px-3 px-xxl-0">
<div class="row row-cols-1 row-cols-sm-2">
<div class="col col-sm-12 col-md-9">
{{ partial "partials/header.html" . }}
{{ partial "partials/body.html" . }}
{{ partial "partials/footer.html" . }}
</div>
<div class="col col-md-3 d-none d-md-block">
{{- if and .Site.Params.navigation.toc .Params.includeToc | default true -}}
{{ partial "assets/toc.html" (dict "page" . "download" $download) -}}
{{ end -}}
</div>
</div>

View File

@@ -1,40 +0,0 @@
{{- define "featured" -}}
{{- partial "home/featured.html" . -}}
{{- end -}}
{{- 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 := $sections -}}
{{- $sectionPage := site.GetPage "section" $section -}}
{{- $sectionURL := $sectionPage.RelPermalink -}}
{{- $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 -}}
{{- $content := $sectionPage.Content -}}
{{- $sectionTitle := strings.FirstUpper $sectionPage.Type -}}
{{- $moreTitle := "" -}}
{{- with (index site.Params.sections $section) -}}
{{- with index . "reference" }}{{ $moreTitle = . }}{{ end -}}
{{- end -}}
{{- $moreTitle = or $moreTitle (printf (T "more" (pluralize $sectionTitle))) -}}
{{- partial "assets/section-list.html" (dict
"page" $page
"section" $section
"home" true
"nested" true
"thumbnail" $thumbnail
"icon" $icon
"content" $content
"moreTitle" $moreTitle
"sectionURL" $sectionURL)
-}}
{{- end -}}
{{- end -}}

View File

@@ -1,7 +1,7 @@
<nav aria-label="breadcrumb">
<ol class="breadcrumb">
{{- range $index, $item := .Page.Ancestors.Reverse -}}
{{- $title := .Title -}}
{{- $title := .LinkTitle -}}
{{- if .IsHome }}{{ $title = T "home" }}{{ end -}}
{{- $address := or .RelPermalink (.Params.Redirect | relLangURL) -}}
{{ if $address }}
@@ -10,6 +10,6 @@
<li class="breadcrumb-item">{{ $title }}</li>
{{ end }}
{{- end -}}
<li class="breadcrumb-item active" aria-current="page">{{ .Page.Title }}</li>
<li class="breadcrumb-item active" aria-current="page">{{ .Page.LinkTitle }}</li>
</ol>
</nav>

View File

@@ -28,6 +28,7 @@
"tab" Optional flag to indicate if an external link should open in a new tab, defaults to setting
"main.externalLinks.tab" in the site's parameters.
"attributes" Optional dictionary of key-value pairs added as custom attributes to the button element ('<a>').
"spacing" Optional flag to add spacing to the inline button, defaults to "true".
-->
{{- $title := trim .title " \r\n" -}}
@@ -126,6 +127,8 @@
{{- $target := "" -}}
{{- $rel := "" -}}
{{- $spacing := .spacing | default true -}}
{{- if $isExternal -}}
{{- if $tab -}}
{{- $target = "_blank" -}}
@@ -140,7 +143,7 @@
{{- $attributes := .attributes -}}
<a aria-label="{{ or $label $title }}" {{ if ne $state "disabled" }}{{ with $href }}href="{{ . }}"{{ end }}{{ end -}}
<a aria-label="{{ (or $label $title) | safeHTML }}" {{ if ne $state "disabled" }}{{ with $href }}href="{{ . }}"{{ end }}{{ end -}}
{{- with $id }} id="{{ . }}"{{ end -}}
{{- with $target }} target="{{ . }}"{{ end }}{{ with $rel }} rel="{{ . }}"{{ end -}}
{{- with $toast }} data-toast-target="{{ $toast }}"{{ end -}}
@@ -157,7 +160,7 @@
{{- end -}}
>
<div class="d-flex justify-content-{{ $justify }}">
<div class="my-auto">{{ $title }}</div>
<div class="my-auto">{{ $title | safeHTML }}</div>
{{- with $icon }}<div class="align-self-center{{ if $title }}{{ if eq $order "first" }} order-first pe-1{{ else }} ps-1{{ end }}{{ end }}">{{ partial "assets/icon.html" (dict "icon" $icon) }}</div>{{ end }}
</div>
@@ -167,4 +170,4 @@
{{ with $label }}<span class="visually-hidden">{{ . }}</span>{{ end }}
</span>
{{- end -}}
</a>
</a>{{ if $spacing }}&nbsp;{{- end }}

View File

@@ -7,8 +7,10 @@
The shortcode supports the following arguments:
"page" Required context of the current page.
"list" Required array of pages.
"cards" Optional string of rendered cards.
"max" Required maximum number of cards to display.
"cols" Required number of columns for the grid, must be a value between 1 and 5.
"gutter" Gutter between columns in a group, either "0", "1", "2", "3", "4" (default), or "5".
"title" Optional title of the card group.
"paginate" Optional flag indicating if pagination should be added to the card group, if the list exceeds the
maximum number of cards to display.
@@ -16,6 +18,8 @@
maximum number of cards to display.
"hrefTitle" Optional title of the button or hyperlink as companion to href.
"separator" Optional flag to indicate a horizontal line should be added between items on small screens.
"wrapper" Optional class attributes of the wrapper element, e.g. "p-4 px-xxl-0".
"responsive" Optional flag if the number of columns should be responsive, defaults to "true".
In addition, the following arguments are passed to the individual cards.
"class" Optional class attribute of the card element, e.g. “w-50”.
@@ -27,36 +31,23 @@
"footer" Optional footer components of the card, displayed in small caps. Supported values are "full",
"publication", "tags", and "none" (default).
"orientation" Optional placecement of the thumbnail, either "stacked" (default), "horizontal", or "none".
"ratio" Optional ratio of the thumbnail image, defaults to "16x9" (stacked orientation) or "1x1" (horizontal
orientation).
-->
{{- $page := .page -}}
{{- if ne (printf "%T" $page) "*hugolib.pageState" -}}
{{- errorf "partial [assets/card-group.html] - Invalid value for param 'page'" -}}
{{- if not (in (slice "*hugolib.pageState" "*hugolib.pageForShortcode") (printf "%T" $page)) -}}
{{- errorf "partial [assets/card-group.html] - Invalid value for param 'page': %T" $page -}}
{{- end -}}
{{- $supportedTypes := slice "page.Pages" "resource.Resources" -}}
{{ $list := .list }}
{{- if not (in $supportedTypes (printf "%T" $list)) -}}
{{ warnf "Type: %T" $list }}
{{ $pages := .list }}
{{- if and $pages (not (in $supportedTypes (printf "%T" $pages))) -}}
{{ warnf "Type: %T" $pages }}
{{- errorf "partial [assets/card-group.html] - Invalid value for param 'list'" -}}
{{- end -}}
{{- $count := len $list -}}
{{- $max := .max -}}
{{- if ne (printf "%T" $max) "int" -}}
{{- errorf "partial [assets/card-group.html] - Invalid value for param 'max'" -}}
{{- end -}}
{{- $max = math.Min $max $count -}}
{{- $cols := .cols -}}
{{- if or (lt $cols 1) (gt $cols 5) -}}
{{- errorf "partial [assets/card-group.html] - Invalid value for param 'cols': %d" $cols -}}
{{- end -}}
{{- $colGrid := "row-cols-1" -}}
{{- if eq $cols 2 }}{{ $colGrid = "row-cols-1 row-cols-sm-1 row-cols-md-2" -}}
{{- else if eq $cols 3 }}{{ $colGrid = "row-cols-1 row-cols-sm-2 row-cols-md-3" -}}
{{- else if eq $cols 4 }}{{ $colGrid = "row-cols-1 row-cols-sm-2 row-cols-md-4" -}}
{{- else if eq $cols 5 }}{{ $colGrid = "row-cols-1 row-cols-sm-3 row-cols-md-5" }}{{ end -}}
{{ $cards := .cards }}
{{- $paginate := false -}}
{{- with .paginate -}}
@@ -65,6 +56,70 @@
{{- end -}}
{{- $paginate = . -}}
{{- end -}}
{{ $paginator := "" }}
{{ if $paginate }}
{{ $paginator = $page.Paginate $pages }}
{{ $pages = first $paginator.PageSize (after (mul (sub $paginator.PageNumber 1) $paginator.PageSize) $pages) }}
{{ end }}
{{ $list := slice }}
{{ range $index, $element := $pages }}
{{ $params := dict }}
<!-- regular page -->
{{- if $element.RelPermalink -}}
{{- $params = merge $params (dict "path" $element.File.Path) -}}
<!-- headless page -->
{{- 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.RelPermalink
"description" (partial "utilities/GetDescription.html" $element)
"thumbnail" $thumbnail
"icon" $element.Params.icon
) -}}
{{- end -}}
{{- $list = $list | append $params }}
{{ end }}
{{- $count := len $list -}}
{{- $max := $count -}}
{{- with .max }}
{{- if ne (printf "%T" .) "int" -}}
{{- warnf "partial [assets/card-group.html] - Invalid value for param 'max': %s" . -}}
{{- else -}}
{{- $max = . -}}
{{- end -}}
{{- end -}}
{{- $max = math.Min $max $count -}}
{{- $responsive := .responsive | default true -}}
{{- with .responsive -}}
{{- if ne (printf "%T" .) "bool" -}}
{{- errorf "partial [assets/card-group.html] - Invalid value for param 'responsive'" -}}
{{- end -}}
{{- end -}}
{{- $cols := string .cols | default "3" -}}
{{- $supportedCols := slice "0" "1" "2" "3" "4" "5" "auto" -}}
{{- if not (in $supportedCols $cols) -}}
{{- errorf "partial [assets/card-group.html] - Invalid value for param 'cols': %s" $cols -}}
{{- end -}}
{{- $colGrid := "" -}}
{{- if eq $cols "1" }}{{ $colGrid = "row-cols-1" -}}
{{- else if eq $cols "2" }}{{ if $responsive }}{{ $colGrid = "row-cols-1 row-cols-sm-1 row-cols-md-2" }}{{ else }}{{ $colGrid = "row-cols-2" }}{{ end -}}
{{- else if eq $cols "3" }}{{ if $responsive }}{{ $colGrid = "row-cols-1 row-cols-sm-2 row-cols-md-3" }}{{ else }}{{ $colGrid = "row-cols-3" }}{{ end -}}
{{- else if eq $cols "4" }}{{ if $responsive }}{{ $colGrid = "row-cols-1 row-cols-sm-2 row-cols-md-4" }}{{ else }}{{ $colGrid = "row-cols-4" }}{{ end -}}
{{- else if eq $cols "5" }}{{ if $responsive }}{{ $colGrid = "row-cols-1 row-cols-sm-3 row-cols-md-5" }}{{ else }}{{ $colGrid = "row-cols-5" }}{{ end -}}
{{ end -}}
{{- $gutter := .gutter | default "4" -}}
{{- $supportedGutters := slice "0" "1" "2" "3" "4" "5" -}}
{{- if not (in $supportedGutters $gutter) -}}
{{- errorf "partial [assets/card-group.html] - Invalid value for param 'gutter': %s" $gutter -}}
{{- end -}}
{{- if not $paginate -}}
{{- $list = first $max $list -}}
{{- end -}}
@@ -86,17 +141,13 @@
{{- $header := .header -}}
{{- $footer := .footer -}}
{{- $orientation := .orientation -}}
{{- $ratio := .ratio -}}
{{- $wrapper := .wrapper | default "p-0" -}}
{{- if and (eq $cols 1) (eq $orientation "horizontal") }}{{ $orientation = "horizontal-sm" }}{{ end -}}
<div class="container-fluid p-4 px-xxl-0">
{{ $paginator := "" }}
{{ if $paginate }}
{{ $paginator = $page.Paginate $list }}
{{ $list = first $paginator.PageSize (after (mul (sub $paginator.PageNumber 1) $paginator.PageSize) $list) }}
{{ end }}
<div class="row {{ $colGrid }}">
<div class="container-fluid {{ $wrapper }}">
<div class="row {{ $colGrid }} g-{{ $gutter }}">
{{ range $index, $element := $list }}
{{- $params := (dict
"class" (printf "h-100 %s" $class)
@@ -105,22 +156,11 @@
"header" $header
"footer" $footer
"orientation" $orientation
"ratio" $ratio
) -}}
{{- $params = merge $params $element }}
{{- 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.RelPermalink
"description" (partial "utilities/GetDescription.html" $element)
"thumbnail" $thumbnail
"icon" $element.Params.icon
) -}}
{{- end -}}
<div class="col pt-3 pb-3">
<div class="col">
{{- partial "assets/card.html" $params -}}
</div>
{{- if and (lt $index (sub $max 1)) $separator -}}
@@ -129,6 +169,7 @@
</div>
{{- end -}}
{{- end -}}
{{- print $cards | safeHTML }}
</div>
{{ if $paginate }}

View File

@@ -11,12 +11,16 @@
"warning", "info", "light", "dark", "white", "black", "body", or "body-tertiary". By default, no
color is specified.
"padding": Optional padding of the content, either "0", "1", "2", "3", "4", "5", or "auto" (default).
"gutter" Gutter between columns in a group, either "0" (default), "1", "2", "3", "4", or "5".
"header" Optional header components of the card, displayed in small caps. Supported values are "full"
(default), "publication", "tags", and "none".
"footer" Optional footer components of the card, displayed in small caps. Supported values are "full",
"publication", "tags", and "none" (default).
"description" Optional description of the card.
"thumbnail" Optional thumbnail image url, displayed on top or the left of the card.
"ratio" Optional ratio of the thumbnail image, defaults to "16x9" (stacked orientation) or "1x1" (horizontal
orientation).
"alt" Optional alternate text for the thumbnail, uses "title" by default.
"icon" Optional Font Awesome icon, displayed on top or the left of the card.
"orientation" Optional placecement of the thumbnail or icon, either "stacked" (default), "horizontal",
"horizontal-sm" or "none".
@@ -32,12 +36,12 @@
{{- if $href -}}
<a href="{{ $href }}" class="{{ if $color }}link-bg-{{ $color }}{{ else }}card-body-link{{ end }} stretched-link">
<p class="card-title fs-5 fw-bold">{{ $title }}</p>
{{ with $description }}<p class="card-text mb-4 {{ if $color }}link-bg-{{ $color }}{{ else }}card-body-link{{ end }}">{{ . }}</p>{{ end -}}
{{ with $description }}<p class="card-text {{ if $color }}link-bg-{{ $color }}{{ else }}card-body-link{{ end }}">{{ . }}</p>{{ end -}}
</a>
{{- else -}}
<div>
<p class="card-title fs-5 fw-bold">{{ $title }}</p>
{{ with $description }}<p class="card-text mb-4 {{ if $color }}link-bg-{{ $color }}{{ else }}card-body-link{{ end }}">{{ . }}</p>{{ end -}}
{{ with $title }}<p class="card-title fs-5 fw-bold">{{ . }}</p>{{ end -}}
{{ with $description }}<p class="card-text">{{ . }}</p>{{ end -}}
</div>
{{- end -}}
{{- end -}}
@@ -82,9 +86,11 @@
{{- end }}
{{- $title := .title -}}
{{- $alt := .alt -}}
{{- $href := .href -}}
{{- $description := .description -}}
{{- $thumbnail := .thumbnail -}}
{{- $ratio := .ratio -}}
{{- $icon := .icon -}}
{{- $color := "" -}}
@@ -126,6 +132,12 @@
{{- errorf "partial [assets/card.html] - Invalid value for param 'padding': %s" $padding -}}
{{- end -}}
{{- $gutter := .gutter | default "0" -}}
{{ $supportedGutters:= slice "0" "1" "2" "3" "4" "5" -}}
{{ if not (in $supportedGutters $gutter) -}}
{{- errorf "partial [assets/card.html] - Invalid value for param 'gutter': %s" $gutter -}}
{{ end -}}
{{- $orientation := "stacked" -}}
{{- with .orientation }}{{ $orientation = . }}{{ end -}}
{{- $supportedOrientations := slice "stacked" "horizontal" "horizontal-sm" "none" -}}
@@ -134,15 +146,16 @@
{{- end -}}
{{- if eq $orientation "none" }}{{ $thumbnail = "" }}{{ $icon = "" }}{{ end -}}
{{ if ne $gutter "0" }}<div class="g-{{ $gutter }}">{{ end }}
{{- if hasPrefix $orientation "horizontal" -}}
<div class="card {{ with $color }}bg-{{ . }} text-bg-{{ . }}{{ end }} {{ $class }}">
<div class="row g-0 row-cols-1 h-100">
<div class="col-4{{ if eq $orientation "horizontal-sm" }} col-md-2{{ end }}">
{{- if $thumbnail -}}
{{- partial "assets/image.html" (dict "url" $thumbnail "ratio" "1x1" "outerClass" "h-100 card-img-wrap" "innerClass" "rounded-start card-img-h100" "title" $title) -}}
{{- partial "assets/image.html" (dict "url" $thumbnail "ratio" (or $ratio "1x1") "outerClass" "h-100 card-img-wrap" "innerClass" "rounded-start card-img-h100" "title" $title) -}}
{{- else if $icon -}}
<div class="p-{{ $padding }} h-100 fa-wrapper d-flex align-items-center justify-content-center">
{{- partial "assets/icon.html" (dict "icon" (printf "%s fa-fluid text-secondary fa-fw" $icon)) -}}
<div class="card-icon p-{{ $padding }} h-100 fa-wrapper d-flex align-items-center justify-content-center">
{{- partial "assets/icon.html" (dict "icon" (printf "%s fa-fluid fa-fw" $icon)) -}}
</div>
{{- end -}}
</div>
@@ -160,10 +173,10 @@
{{- else -}}
<div class="card {{ with $color }}bg-{{ . }} text-bg-{{ . }}{{ end }} {{ $class }}">
{{- if $thumbnail -}}
{{- partial "assets/image.html" (dict "url" $thumbnail "ratio" "16x9" "outerClass" "card-img-wrap" "innerClass" "card-img-top" "title" $title) -}}
{{- partial "assets/image.html" (dict "url" $thumbnail "ratio" (or $ratio "16x9") "outerClass" "card-img-wrap" "innerClass" "card-img-top" "title" (or $alt $title)) -}}
{{- else if $icon -}}
<div class="p-{{ $padding }}">
{{- partial "assets/icon.html" (dict "icon" (printf "%s fa-4x text-secondary" $icon)) -}}
<div class="card-icon p-{{ $padding }}">
{{- partial "assets/icon.html" (dict "icon" (printf "%s fa-4x" $icon)) -}}
</div>
{{- end -}}
<div class="card-body d-flex flex-column p-{{ $padding }}">
@@ -173,3 +186,4 @@
</div>
</div>
{{- end -}}
{{ if ne $gutter "0" }}</div>{{ end }}

View File

@@ -0,0 +1,16 @@
{{- $page := .page -}}
{{- $active := .active -}}
{{- $src := .src -}}
{{- $caption := .caption -}}
{{- $ratio := .ratio -}}
{{- $portrait := .portrait -}}
<div class="carousel-item{{ if $active }} active{{ end }}">
{{ partial "assets/image.html" (dict "url" $src "ratio" $ratio "page" $page "innerClass" "d-block w-100" "portrait" $portrait) }}
<div class="carousel-caption gradient"></div>
{{ with $caption }}
<div class="carousel-caption d-none d-md-block">
<div class="d-flex justify-content-center align-items-end h-100 w-100 p-4">{{ . }}</div>
</div>
{{ end }}
</div>

View File

@@ -2,22 +2,43 @@
Render a local or remote image with responsive image sizing. Images are resized using default media breakpoints
and are converted to webp format. The image is processed using the quality setting specified in the [imaging]
section of the main config file (defaults to 75). A fallback image is provided for older browsers. The image is
wrapped in a figure if a caption is provided, else the image is wrapped in a div with a ratio constraint. The
partial supports the following arguments:
"url": Required relative url of the image, e.g. "img/example.jpg"
wrapped in a figure if a caption is provided, else the image is wrapped in a div with a ratio constraint.
If the url starts with 'http', the image is retrieved from an external location. Else, the url is matched with a
page resource and site asset (in that order). The path of a remote image is rewritten to ensure processed files are
stored in the final '/img' folder.
The partial supports the following bitmap image formats: "png", "jpeg", "gif", "tiff", "bmp", and "webp". Vector
graphics of type "svg" are supported too, although these images do no support additional processing. This means
the arguments "ratio" and "portrait" have no effect for vector images. Vector graphics support an optional anchor
"#" in their url to denote a styling reference.
The partial supports the following arguments:
"url": Required path or url of the image, e.g. "img/example.jpg"
"mode": Optional flag indicating if the image should support color modes.
"ratio": Optional ratio of the image, either "1x1", "4x3", "16x9", or "21x9". If set, the image is
resized and cropped to match the ratio. Else the original aspect ratio of the image is kept.
"ratio": Optional ratio of the image, either "1x1", "3x2", "4x3", "16x9", or "21x9". If set, the image is
resized and cropped to match the ratio. Else the original aspect ratio of the image is kept. Not
applicable to vector graphics.
"portrait": Optional flag to adjust the ratio from landscape to portrait. The image itself is not rotated, only
the crop area is adjusted. Not applicable to vector graphics.
"outerClass": Optional class attribute of the outer div element, e.g. "img-wrap".
"innerClass": Optional class attribute of the inner img element, e.g. "rounded".
"title": Optional alternate text of the image.
"caption": Optional figure caption.
"page": Optional page context, used to match page resources.
-->
{{- $validRatios := slice "1x1" "4x3" "16x9" "21x9" -}}
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
{{- $validRatios := slice "1x1" "3x2" "4x3" "16x9" "21x9" -}}
{{- $ratio := .ratio -}}
{{- if $ratio -}}
{{ if not (in $validRatios $ratio) -}}
{{- errorf "partial [assets/image.html] - Invalid value for param 'ratio'" -}}
{{ end -}}
{{- end -}}
{{- $portrait := .portrait -}}
{{- $url := .url -}}
{{- $mode := false -}}
{{- with .mode -}}
{{ $mode = . -}}
@@ -30,12 +51,37 @@
{{- errorf "partial [assets/image.html] - Invalid value for param 'mode'" -}}
{{- end -}}
{{- $modes := site.Params.main.modes | default (slice "light" "dark") -}}
{{- $page := .page -}}
{{- define "partials/image-portrait.html" -}}
{{- $dimensions := slice }}
{{- $dim := .dim -}}
{{- $dimensions = $dimensions | append $dim -}}
{{- $portraits := slice }}
{{- range $d := $dimensions -}}
{{- $p := split $d "x" }}
{{ if ne (len $p) 2 }}
{{- warnf "partial [assets/image.html] - Invalid dimension: %s" $d -}}
{{- $portraits = $portraits | append $d -}}
{{- else -}}
{{- $portraits = $portraits | append (printf "%sx%s" (index $p 1) (index $p 0)) -}}
{{- end -}}
{{- end -}}
{{- $ret := "" }}
{{- if reflect.IsSlice $dim -}}
{{ $ret = $portraits -}}
{{- else if gt (len $portraits) 0 -}}
{{- $ret = index $portraits 0 -}}
{{- end -}}
{{- return $ret -}}
{{- end -}}
<!-- Generate a fallback image of type jpg -->
{{- define "partials/image-default.html" -}}
{{- $img := .img -}}
{{- $ratio := .ratio -}}
{{- $portrait := and .portrait .ratio -}}
{{- $width := "1400" -}}
{{- $dim := "" -}}
{{- $fallback := "" -}}
@@ -43,6 +89,8 @@
{{- with $img -}}
{{- if eq $ratio "4x3" -}}
{{- $dim = "1400x1050" }}
{{- else if eq $ratio "3x2" -}}
{{- $dim = "1400x933" }}
{{- else if eq $ratio "1x1" -}}
{{- $dim = "1400x1400" }}
{{- else if eq $ratio "16x9" -}}
@@ -53,6 +101,10 @@
{{- $dim = printf "%sx%d" $width (int (math.Round (mul (div (float $width) $img.Width) $img.Height))) -}}
{{- end -}}
{{- if $portrait -}}
{{- $dim = partial "partials/image-portrait.html" (dict "dim" $dim) -}}
{{- end -}}
{{- if $ratio -}}
{{- $fallback = ($img.Fill (printf "%s jpg" $dim)) -}}
{{- else -}}
@@ -72,13 +124,16 @@
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
{{- $img := .img -}}
{{- $ratio := .ratio -}}
{{- $portrait := and .portrait .ratio -}}
{{- $imgset := "" -}}
{{- $widths := slice "576" "768" "992" "1200" "1400" -}}
{{- $dims := slice -}}
{{- with $img -}}
{{- if eq $ratio "4x3" -}}
{{- $dims = slice "576x432" "768x576" "992x744" "1200x900" "1400x1050" -}}
{{- $dims = slice "576x432" "768x576" "992x744" "1200x900" "1400x1050" -}}
{{- else if eq $ratio "3x2" -}}
{{- $dims = slice "576x384" "768x512" "992x661" "1200x800" "1400x933" -}}
{{- else if eq $ratio "1x1" -}}
{{- $dims = slice "576x576" "768x768" "992x992" "1200x1200" "1400x1400" -}}
{{- else if eq $ratio "16x9" -}}
@@ -91,6 +146,10 @@
{{- end -}}
{{- end -}}
{{- if $portrait -}}
{{- $dims = partial "partials/image-portrait.html" (dict "dim" $dims) -}}
{{- end -}}
{{- $scaled := "" -}}
{{- range $index, $dim := $dims -}}
{{- $clean := path.Ext $img.RelPermalink -}}
@@ -116,28 +175,41 @@
{{- define "partials/image-definition.html" -}}
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
{{- $ratio := .ratio -}}
{{- $portrait := .portrait -}}
{{- $url := .url -}}
{{- $outerClass := .outerClass -}}
{{- $innerClass := .innerClass -}}
{{- $title := .title -}}
{{- $caption := .caption -}}
{{- $fallbackURL := "" -}}
{{- $anchor := "" -}}
{{- $imgset := "" -}}
{{- $mode := .mode -}}
{{- $modes := .modes -}}
{{- $page := .page -}}
{{- $isVector := false -}}
{{- $segments := split $url "#" -}}
{{- if gt (len $segments) 2 -}}
{{- errorf "Invalid path or url: %q" $url -}}
{{- else if eq (len $segments) 2 }}
{{- $url = index $segments 0 -}}
{{- $anchor = index $segments 1 -}}
{{- end -}}
{{- if hasSuffix $url "svg" -}}
{{- $fallbackURL = $url -}}
{{- $isVector = true -}}
{{- else -}}
{{- $img := partial "utilities/GetImage.html" (dict "url" $url) -}}
{{- $img := partial "utilities/GetImage.html" (dict "url" $url "page" $page) -}}
{{- if $img -}}
{{- $fallback := partial "partials/image-default.html" (dict "img" $img "ratio" $ratio) -}}
{{- $fallback := partial "partials/image-default.html" (dict "img" $img "ratio" $ratio "portrait" $portrait) -}}
{{- if $absoluteURL -}}
{{- $fallbackURL = $fallback.Permalink -}}
{{- else -}}
{{- $fallbackURL = $fallback.RelPermalink -}}
{{- end -}}
{{- $imgset = partial "partials/image-scaled.html " (dict "img" $img "ratio" $ratio) -}}
{{- $imgset = partial "partials/image-scaled.html " (dict "img" $img "ratio" $ratio "portrait" $portrait) -}}
{{- end -}}
{{- end -}}
@@ -150,19 +222,37 @@
{{- if $caption -}}
<figure {{ with $outerClass }}class="{{ . }}"{{ end }}>
{{ end }}
<div class="{{ with $ratio }}ratio ratio-{{ . }}{{ end }}{{ if not $caption }} {{ $outerClass }}{{ end }}">
<div class="{{ if not $caption }}{{ $outerClass }}{{ end }}">
{{- if not $anchor -}}
{{- $input := (split (path.BaseName $fallbackURL) "-") | collections.Reverse -}}
{{- $width := "" -}}
{{- $height := "" -}}
{{- if gt ($input | len) 1 -}}
{{- $dim := (split (index $input 0) "x") -}}
{{- if eq ($dim | len) 2 -}}
{{- $width = index $dim 0 -}}
{{- $height = index $dim 1 -}}
{{- end -}}
{{- end }}
<img class="img-fluid {{ $innerClass }}"
{{ with $imgset -}}
srcset="{{ . }}"
sizes="100vw"
{{- end }}
src="{{ $fallbackURL }}"
{{ with $height }}height="{{ . }}"{{ end }}
{{ with $width }}width="{{ . }}"{{ end }}
alt="{{ $title }}">
</div>
{{- else }}
<svg class="{{ $innerClass }}">
<use href="{{ $fallbackURL }}#{{ $anchor }}"></use>
</svg>
{{ end }}
</div>
{{- if $caption -}}
<figcaption class="figure-caption">{{ $caption | safeHTML }}</figcaption>
</figure>
{{- end -}}
{{- end -}}
{{- end -}}
<!-- Initiate the regular or color-mode image -->
@@ -177,22 +267,26 @@
{{- $image := printf "%s-%s%s" $base $suffix $ext -}}
{{- partial "partials/image-definition.html" (dict
"ratio" $ratio
"portrait" $portrait
"url" $image
"outerClass" $outerClass
"innerClass" $innerClass
"title" $title
"caption" $caption
"mode" $suffix
"modes" $modes)
"modes" $modes
"page" $page)
-}}
{{- end -}}
{{- else -}}
{{- partial "partials/image-definition.html" (dict
"ratio" $ratio
"portrait" $portrait
"url" $url
"outerClass" $outerClass
"innerClass" $innerClass
"title" $title
"caption" $caption)
"caption" $caption
"page" $page)
-}}
{{- end -}}

View File

@@ -0,0 +1,29 @@
<!--
Defines an individual nav item. The shortcode supports the following arguments:
"id" Required unique ID of the nav-item.
"parentID" Required ID of the parent (e.g. nav control).
"class" Optional class attributes to be added to the nav-item.
"fade" Optional flag to make the tab pane fade in.
"header" Required header of the nav item.
"class" Optional class attribute of the nav item.
"body" The body content of the nav-item, supports Markdown and HTML (if enabled).
"show" Optional flag to indicate the item should be shown as expanded (only one can be shown at a time).
"disabled" Optional flag to indicate the item should be in a disabled state.
-->
{{- $id := .id -}}
{{- $parentID := .parentID -}}
{{- $class := .class -}}
{{- $fade := .fade -}}
{{- $header := .header -}}
{{- $class := .class -}}
{{- $body := .body -}}
{{- $show := .show -}}
{{- $disabled := .disabled -}}
<div class="tab-pane{{ if $show }} active {{ if $fade }}show{{ end }}{{ end }} {{ if $fade}}fade{{ end }}{{ with $class }} {{ . }}{{ end }}" id="{{ $parentID }}-{{ $id }}"
role="tabpanel" aria-labelledby="{{ $parentID }}-btn-{{ $id }}" tabindex="0" data-header="{{ $header }}" {{ if $show }}data-show-id="{{ $id }}"{{ end }}
data-has-content="{{ gt (len $body) 0 }}" {{ if $disabled }} data-disabled-id="{{ $id }}"{{ end }}>
{{ $body }}
</div>

View File

@@ -9,6 +9,7 @@
"class" Optional class attribute of the tab group, e.g. “nav-fill”.
"pane" Optional style of the panes, either "none" (default) or "persona".
"width" Optional responsive width of the tab group, either "50" or "100" (default).
"wrap" Optional flag to enable word wrapping of tab titles, defaults to false.
In addition, the following arguments are passed to the individual tabs.
"class" Optional class attribute of the tab element, e.g. “w-50”.
@@ -54,6 +55,7 @@
{{- $title := .title -}}
{{- $class := .class -}}
{{- $color := .color -}}
{{- $wrap := .wrap | default false -}}
{{ $supportedFlags := slice "true" "false" -}}
{{ $verticalParam := "false" -}}
@@ -81,7 +83,7 @@
<div class="nav{{ with $type }} nav-{{ . }}{{ end }}{{ with $class }} {{ . }}{{ end }}{{ if $vertical }} flex-column{{ end }}" id="nav-{{ $id }}" role="tablist"{{ if $vertical }} aria-orientation="vertical"{{ end }}>
{{- range $index, $item := $list -}}
{{ $show := eq $index 0}}
<button class="nav-link text-nowrap{{ if $show }} active{{ end }}" id="nav-{{ $id }}-btn-{{ $index }}" data-bs-toggle="pill" data-bs-target="#nav-{{ $id }}-{{ $index }}"
<button class="nav-link {{ if not $wrap }} text-nowrap{{ end }}{{ if $show }} active{{ end }}" id="nav-{{ $id }}-btn-{{ $index }}" data-bs-toggle="pill" data-bs-target="#nav-{{ $id }}-{{ $index }}"
type="button" role="tab" aria-controls="nav-{{ $id }}-{{ $index }}" aria-selected="{{ if eq $index 0 }}true{{ else }}false{{ end }}">
{{ $item.Title }}
</button>

View File

@@ -6,7 +6,7 @@
{{- $menuURL := (or $menu.PageRef $menu.URL) | relLangURL -}}
{{- $pageURL := $page.RelPermalink | relLangURL -}}
{{- $isActive := hasPrefix $pageURL $menuURL -}}
{{- $isActive := or (and (hasPrefix $pageURL $menuURL) (ne $menuURL ("/" | relLangURL))) (eq $pageURL $menuURL) -}}
{{- $isAlias := $menu.Params.alias -}}
{{- $isIcon := $menu.Params.icon -}}
{{- $cue := .cue | default site.Params.main.externalLinks.cue -}}

View File

@@ -4,7 +4,7 @@
including a color mode switcher, version switcher, and collapse panel.
"page" Required object reference to the current page.
"menus" Optional name of the menu configuration, defaults to "main".
"size" Optional size of the button, either "sm", "md" (default), or "lg".
"size" Optional breakpoint of the navbar toggler, either "xs", "sm", "md" (default), "lg", or "xl".
"fixed" Optional flag to indicate the navbar should stick to the top, defaults to false.
"color" Optional background color of the navbar, either "primary", "secondary", "success",
"danger", "warning", "info", "white", "black", "body", or "body-tertiary". The default color is
@@ -25,25 +25,25 @@
<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-label="{{ T "colorMode" }}" aria-expanded="false" id="{{ $id }}-theme{{ if $collapsed }}-collapsed{{ end }}">
<span class="theme-icon-active">{{- partial "assets/icon.html" (dict "icon" "fas sun fa-fw") }}</span>{{ if $collapsed }} {{ T "colorMode" }} {{ end }}
<span class="theme-icon-active">{{- partial "assets/icon.html" (dict "icon" "fas sun fa-fw") }}</span>{{ if $collapsed }}&nbsp;{{ T "colorMode" }} {{ end }}
<span class="d-md-none"></span>
</a>
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="{{ $id }}-theme{{ if $collapsed }}-collapsed{{ end }}">
<li>
<a class="dropdown-item{{ if $collapsed }} switch-mode-collapsed{{ end }}" data-bs-theme-value="light" href="#!">
<span class="theme-icon">{{- partial "assets/icon.html" (dict "icon" "fas sun fa-fw") }}</span>&nbsp;
<span class="theme-icon">{{- partial "assets/icon.html" (dict "icon" "fas sun fa-fw" "spacing" false) }}</span>&nbsp;
{{ T "colorLight" }}
</a>
</li>
<li>
<a class="dropdown-item{{ if $collapsed }} switch-mode-collapsed{{ end }}" data-bs-theme-value="dark" href="#!">
<span class="theme-icon">{{- partial "assets/icon.html" (dict "icon" "fas moon fa-fw") }}</span>&nbsp;
<span class="theme-icon">{{- partial "assets/icon.html" (dict "icon" "fas moon fa-fw" "spacing" false) }}</span>&nbsp;
{{ T "colorDark" }}
</a>
</li>
<li>
<a class="dropdown-item{{ if $collapsed }} switch-mode-collapsed{{ end }}" data-bs-theme-value="auto" href="#!">
<span class="theme-icon">{{- partial "assets/icon.html" (dict "icon" "fas circle-half-stroke fa-fw" ) }}</span>&nbsp;
<span class="theme-icon">{{- partial "assets/icon.html" (dict "icon" "fas circle-half-stroke fa-fw" "spacing" false) }}</span>&nbsp;
{{ T "colorAuto" }}
</a>
</li>
@@ -154,6 +154,8 @@
{{- errorf "partial [assets/navbar.html] - Invalid value for param 'search': %s" $searchParam -}}
{{- end -}}
{{- end -}}
{{- $searchModal := and $search site.Params.navigation.searchModal -}}
{{- $enableDarkMode := default false site.Params.main.enableDarkMode -}}
{{- with .mode -}}
@@ -174,7 +176,32 @@
{{- $enableLanguage := or $page.IsTranslated site.IsMultiLingual -}}
{{- $logo := site.Params.navigation.logo -}}
{{- with .logo }}{{ $logo = . }}{{ end -}}
{{- $logoLight := "" -}}
{{- $logoDark := "" -}}
{{- with .logo }}
{{ $logo = . }}
{{- end -}}
{{- if $enableDarkMode -}}
{{ $ext := path.Ext $logo -}}
{{- $logoLight = printf "%s-light%s" (strings.TrimSuffix $ext $logo) $ext -}}
{{- $logoDark = printf "%s-dark%s" (strings.TrimSuffix $ext $logo) $ext -}}
{{- $light := fileExists (path.Join "/static" $logoLight) -}}
{{- $dark := fileExists (path.Join "/static" $logoDark) -}}
{{- if and $light (not $dark) -}}
{{- warnf "partial [assets/navbar.html] - Missing file: %s" $logoDark -}}
{{- $logoLight = "" -}}
{{- $logoDark = "" -}}
{{- end -}}
{{- if and (not $light) $dark -}}
{{- warnf "partial [assets/navbar.html] - Missing file: %s" $logoLight -}}
{{- $logoLight = "" -}}
{{- $logoDark = "" -}}
{{- end -}}
{{- if not (or $light $dark) -}}
{{- $logoLight = "" -}}
{{- $logoDark = "" -}}
{{- end -}}
{{- end -}}
{{- $title := site.Title -}}
{{- if .title -}}
@@ -196,7 +223,7 @@
<div class="container-fluid {{ if $fixed }}fixed-top{{ end }} p-0{{ with $class }} {{ . }}{{ end }}">
{{- partial "assets/page-alert.html" (dict "page" $page) -}}
<nav class="navbar navbar-expand-{{ $size }}{{ if $contrast }} navbar-contrast{{ end }}{{ with $color }} bg-{{ . }}{{ end }} p-4"{{ with $theme }} data-bs-theme="{{ . }}"{{ end }}>
<nav class="navbar {{ if $fixed }}navbar-fixed-top{{ end }} navbar-expand-{{ $size }}{{ if $contrast }} navbar-contrast{{ end }}{{ with $color }} bg-{{ . }}{{ end }} p-4"{{ with $theme }} data-bs-theme="{{ . }}"{{ end }}>
<div class="container-xxl p-0">
<!-- Insert sidebar toggler when applicable -->
<div class="d-flex">
@@ -214,8 +241,12 @@
<!-- Insert the brand logo or name -->
<a class="navbar-brand mx-auto" href="{{ site.Home.RelPermalink }}">
{{- if $logo -}}
<img src="{{if $absoluteURL }}{{ absURL $logo }}{{ else }}{{ $logo }}{{ end }}" alt="{{ $title }} logo" height="30">
{{- if (and $logoLight $logoDark) -}}
<img src="{{if $absoluteURL }}{{ absURL $logoLight }}{{ else }}{{ $logoLight }}{{ end }}" class="d-none-dark" alt="{{ $title }} logo" height="30">
<img src="{{if $absoluteURL }}{{ absURL $logoDark }}{{ else }}{{ $logoDark }}{{ end }}" class="d-none-light" alt="{{ $title }} logo" height="30">
{{- else if $logo -}}
{{ $width := partial "utilities/GetWidth.html" (dict "path" $logo "height" 30) }}
<img src="{{if $absoluteURL }}{{ absURL $logo }}{{ else }}{{ $logo }}{{ end }}" alt="{{ $title }} logo" height="30"{{ with $width }} width="{{ . }}"{{ end }}>
{{- else -}}
<span class="fw-bold">{{ $title }}</span>
{{- end -}}
@@ -233,7 +264,7 @@
<div class="navbar-collapse collapse" id="{{ $id }}-collapse">
<!-- Insert search input -->
{{- if $search }}{{ partial "assets/search-input.html" -}}{{ end -}}
{{- if and $search (not $searchModal) }}{{ partial "assets/search-input.html" }}{{ end -}}
<!-- Render top-menu items (maximum depth of 2) -->
<ul class="navbar-nav ms-auto">
@@ -258,15 +289,21 @@
<li><hr class="dropdown-divider-bg"></li>
{{- end -}}
<!-- Insert version switcher -->
{{- if $enableVersions -}}
{{- partial "partials/navbar-versions.html" (dict "page" $page "size" $size "collapsed" true "id" .id) -}}
{{- partial "partials/navbar-versions.html" (dict "page" $page "size" $size "collapsed" false "id" .id) -}}
{{- end -}}
<!-- Insert language switcher if applicable -->
{{- if $enableLanguage -}}
{{- $currentLang := $page.Language.Lang -}}
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle d-{{ $size }}-none" href="#!" role="button" data-bs-toggle="dropdown" aria-label="{{ T "languageSwitcherLabel" }}" aria-expanded="false">
{{- partial "assets/icon.html" (dict "icon" "fas globe fa-fw") }} {{ T "languageSwitcherLabel" }}
{{- partial "assets/icon.html" (dict "icon" "fas globe fa-fw" "spacing" false) }}&nbsp;{{ T "languageSwitcherLabel" }}&nbsp;
</a>
<a class="nav-link dropdown-toggle d-none d-{{ $size }}-block" href="#!" role="button" data-bs-toggle="dropdown" aria-label="{{ T "languageSwitcherLabel" }}" aria-expanded="false">
{{- partial "assets/icon.html" (dict "icon" "fas globe fa-fw") }}
{{- partial "assets/icon.html" (dict "icon" "fas globe fa-fw" "spacing" true) }}
</a>
<ul class="dropdown-menu dropdown-menu-end ">
{{- if $page.IsTranslated -}}
@@ -282,25 +319,49 @@
</li>
{{- end -}}
<!-- Insert version switcher -->
{{- if $enableVersions -}}
{{- partial "partials/navbar-versions.html" (dict "page" $page "size" $size "collapsed" true "id" .id) -}}
{{- partial "partials/navbar-versions.html" (dict "page" $page "size" $size "collapsed" false "id" .id) -}}
{{- end -}}
<!-- Insert color mode switcher -->
{{- if $enableDarkMode -}}
<!-- Insert divider -->
{{- partial "partials/navbar-mode.html" (dict "size" $size "collapsed" true "id" .id) -}}
{{- partial "partials/navbar-mode.html" (dict "size" $size "collapsed" false "id" .id) -}}
{{- end -}}
<!-- Insert modal search button -->
{{- if $searchModal }}
<li class="nav-item py-2 py-md-1 col-12 col-md-auto d-none d-{{ $size }}-block">
<div class="vr d-none d-md-flex h-100 mx-md-2"></div>
</li>
<li><hr class="dropdown-divider-bg"></li>
{{- partial "partials/navbar-mode.html" (dict "size" $size "collapsed" true "id" .id) -}}
{{- partial "partials/navbar-mode.html" (dict "size" $size "collapsed" false "id" .id) -}}
{{- end -}}
<a class="nav-link d-{{ $size }}-none" href="#!" role="button" data-bs-toggle="modal" data-bs-target="#search-modal" aria-label="{{ T "ui_search" }}" aria-expanded="false">
{{ partial "assets/icon.html" (dict "icon" "fas magnifying-glass fa-fw") }} {{ T "ui_search" }}
</a>
<a class="nav-link d-none d-{{ $size }}-block" href="#!" role="button" data-bs-toggle="modal" data-bs-target="#search-modal" aria-label="{{ T "ui_search" }}" aria-expanded="false">
{{ partial "assets/icon.html" (dict "icon" "fas magnifying-glass fa-fw") }}
</a>
{{ end -}}
</ul>
</div>
</div>
</nav>
</div>
{{/* Insert modal search element */}}
{{- if $searchModal }}
<div class="modal fade search-modal" tabindex="-1" id="search-modal" aria-labelledby="searchModalLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered modal-dialog-scrollable modal-lg">
<div class="modal-content h-50">
<div class="modal-header">
<div class="w-100">
<form class="search position-relative me-auto">
<input id="search-input-modal" class="search-input form-control is-search" tabindex="1" type="search" placeholder="{{ T "ui_search" }}..." aria-label="{{ T "ui_search" }}" autocomplete="off">
</form>
</div>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body p-2">
<div class="search-suggestions bg-body" data-no-results="{{ T "ui_no_results" }}"></div>
</div>
</div>
</div>
</div>
{{ end -}}

View File

@@ -20,27 +20,6 @@
{{- end -}}
{{- end -}}
<div class="container-fluid p-4 px-xxl-0">
{{ with $title }}<p class="display-4 mt-3{{ if and page.IsHome site.Params.home.centerHeadline }} text-center{{ end }}">{{ . }}</p>{{ end }}
{{ with $description }} <p class="lead mb-5">{{ . }}</p>{{ end }}
{{- if $content -}}
<div class="row row-cols-1 row-cols-lg-3 pt-5">
<div class="col col-lg-3 d-none d-lg-block"></div>
<div class="col col-sm-12 col-lg-6 text-center">
<div class="row row-cols-1{{ if ne $sectionHeader "justify-content-center" }} row-cols-sm-2{{ end }} row-gap-5 p-0 align-items-center flex-fill">
{{- if eq $sectionHeader "justify-content-center" -}}
<div class="col p-0 w-50 mx-auto pb-5">{{ partial "partials/section-header-img.html" (dict "title" $title "thumbnail" $thumbnail "icon" $icon )}}</div>
<div class="col fs-md-5 fs-6">{{ $content }}</div>
{{- else if eq $sectionHeader "justify-content-end" -}}
<div class="col p-0">{{ partial "partials/section-header-img.html" (dict "title" $title "thumbnail" $thumbnail "icon" $icon )}}</div>
<div class="col fs-md-5 fs-6 text-sm-start">{{ $content }}</div>
{{- else -}}
<div class="col fs-md-5 fs-6 text-sm-start">{{ $content }}</div>
<div class="col p-0">{{ partial "partials/section-header-img.html" (dict "title" $title "thumbnail" $thumbnail "icon" $icon )}}</div>
{{- end -}}
</div>
</div>
<div class="col col-lg-3 d-none d-lg-block"></div>
</div>
{{- end -}}
</div>
{{ with $title }}<p id="{{ anchorize . }}" class="display-4 pt-4{{ if and page.IsHome site.Params.home.centerHeadline }} text-center{{ end }}">{{ . }}</p>{{ end }}
{{ with $description }} <p class="lead mb-5">{{ . }}</p>{{ end }}
{{ $content }}

View File

@@ -14,7 +14,9 @@
{{- $moreTitle := .moreTitle -}}
{{- $sectionURL := .sectionURL -}}
{{- $nested := .nested | default true -}}
{{- $simple := .simple | default false -}}
{{- $paginate := true -}}
{{- $kind := .kind | default "regular" -}}
{{- $sort := "date" -}}
{{- $order := "desc" -}}
{{- $separator := false -}}
@@ -32,6 +34,8 @@
{{- $type := "pills" -}}
{{- $vertical := "false" -}}
{{- $width := 100 -}}
{{- $ratio := "" -}}
{{- $wrap := false -}}
{{- with (index site.Params.sections $section) -}}
{{- with index . "title" }}{{ $title = or $.title . }}{{ end -}}
@@ -54,13 +58,25 @@
{{- with index . "type" }}{{ $type = . }}{{ end -}}
{{- with index . "vertical" }}{{ $vertical = . }}{{ end -}}
{{- with index . "width" }}{{ $width = . }}{{ end -}}
{{- with index . "kind" }}{{ $kind = . }}{{ end -}}
{{- with index . "ratio" }}{{ $ratio = . }}{{ end -}}
{{- with index . "wrap" }}{{ $wrap = . }}{{ end -}}
{{- end -}}
{{ if ne (printf "%T" $nested) "bool" }}
{{ errorf "partial [assets/section-list.html] - Invalid value for param 'nested'"}}
{{ end }}
{{ $list := "" }}
{{ if $nested }}
{{ $list := slice }}
{{ if eq $kind "taxonomy" }}
{{ $filter := page.Params.filter }}
{{ with $filter }}
{{ with index site.Taxonomies $section $filter }}
{{ $list = .Pages }}
{{ end }}
{{ else }}
{{ $list = where site.Pages (printf ".Params.%s" $section) "!=" nil }}
{{ end }}
{{ else if $nested }}
{{ $list = where site.RegularPages "Type" "in" $section }}
{{ else if $home }}
{{ $sectionPage := site.GetPage "section" $section }}
@@ -88,12 +104,18 @@
{{- $max = int (math.Min $homepage $max) -}}
{{ end -}}
{{ if $simple }}
{{ $title = "" }}
{{ $background = "" }}
{{ end }}
{{- $params := (dict
"page" $page
"list" $list
"title" $title
"icon" $icon
"thumbnail" $thumbnail
"ratio" $ratio
"sectionHeader" $sectionHeader
"description" $description
"content" $content
@@ -103,8 +125,8 @@
-}}
{{- $partial := "" -}}
<div class="container-fluid {{ with $background }} bg-{{ . }}{{ end }}">
<div class="container-xxl flex-fill p-0">
<div class="container-fluid {{ with $background }} bg-{{ . }}{{ end }} p-0">
<div class="container-xxl flex-fill p-4 px-xxl-0 pb-5">
{{- partial "assets/section-header.html" $params -}}
{{ if eq $layout "card" }}
@@ -131,6 +153,7 @@
"type" $type
"vertical" $vertical
"width" $width
"wrap" $wrap
)
-}}
{{- else -}}

View File

@@ -0,0 +1,20 @@
{{- $page := . -}}
{{ $items := $page.Parent.Sections }}
{{ if not $page.Parent.Section }}
{{ $items = $page.Sections }}
{{ end }}
{{- if gt (len $items) 0 }}
<nav class="navbar navbar-expand navbar-services p-0 fs-5">
<div class="container-fluid p-0 pb-3">
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav">
{{- range $items }}
{{ $active := eq $page.RelPermalink .RelPermalink }}
<li class="nav-item"><a class="nav-link{{ if $active }} active{{ end }}" href="{{ .RelPermalink }}">{{ .Title }}</a></li>
{{- end }}
</ul>
</div>
</div>
</nav>
{{- end }}

View File

@@ -6,7 +6,7 @@
{{- if .Site.Params.sharing.reverse }}{{ $order = "desc" }}{{ else }}{{ $order = "asc" }}{{ end -}}
{{- $sort := .Site.Params.sharing.sort | default "weight" -}}
{{- $list = sort $list $sort $order -}}
<div class="py-3 text-body-secondary hstack gap-2">
<div class="py-3 text-body-secondary hstack gap-1">
{{ T "shareLink" "" }}
{{- range $index, $item := $list -}}
{{- $url := $item.url -}}
@@ -21,11 +21,11 @@
{{- $url = "#!" -}}
{{- partial "assets/toast.html" (dict "id" $target "message" (printf "%s %s" (T "link") (T "copiedToClipboard"))) -}}
{{- end -}}
{{ partial "assets/button.html" (dict "toast" $target "clipboard" $clipboard "href" $url "icon" (printf "%s fa-fw" $item.icon) "class" "btn-social p-0" "label" (T "shareLink" $item.name)) }}
{{ partial "assets/button.html" (dict "toast" $target "clipboard" $clipboard "href" $url "icon" (printf "%s fa-fw" $item.icon) "class" "btn-social p-0" "label" (T "shareLink" $item.name) "spacing" false) }}
{{- 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 "label" (T "shareLink" (T "shareSystem"))) }}
{{ partial "assets/button.html" (dict "href" "#!" "icon" "fas share-nodes fa-fw" "id" "btn-webshare" "class" "btn-social p-0" "attributes" $attr "label" (T "shareLink" (T "shareSystem")) "spacing" false) }}
{{- end -}}
</div>
{{- end -}}

View File

@@ -9,9 +9,10 @@
{{- $level := .level -}}
{{- $baseURL := .baseURL -}}
{{- $group := .group -}}
{{- $data := .menu -}}
{{- $doc_slug := $group.title | urlize -}}
{{- $href := printf "%s/" (relLangURL (path.Join $baseURL $doc_slug)) -}}
{{- $href := or $group.link (printf "%s/" (relLangURL (path.Join $baseURL $doc_slug))) -}}
{{- $collapsed := strings.HasPrefix $page.RelPermalink $href -}}
<li class="mb-1">
@@ -28,6 +29,7 @@
"level" (add $level 1)
"baseURL" $href
"group" $item
"menu" $data
)
}}
{{- else -}}
@@ -37,6 +39,8 @@
"level" $level
"baseURL" $href
"title" $item.title
"href" $item.link
"menu" $data
)
}}
{{ end -}}
@@ -47,15 +51,17 @@
{{ end -}}
{{- define "partials/sidebar/item.html" -}}
{{ $page := .page }}
{{ $sectionBreak := .sectionBreak }}
{{- $page := .page -}}
{{- $sectionBreak := .sectionBreak -}}
{{- $level := .level -}}
{{ $baseURL := .baseURL}}
{{ $title := .title}}
{{- $baseURL := .baseURL -}}
{{- $title := .title -}}
{{- $href := .href -}}
{{- $data := .menu -}}
{{- $doc_slug := $title | urlize -}}
{{- $href := printf "%s/" (relLangURL (path.Join $baseURL $doc_slug)) -}}
{{ $active := eq $page.RelPermalink $href }}
{{- $href := or $href (printf "%s/" (relLangURL (path.Join $baseURL $doc_slug))) -}}
{{- $active := eq (strings.TrimSuffix "/" $page.RelPermalink) (strings.TrimSuffix "/" $href) -}}
{{ if eq $level 0}}
<li class="mt-1 mb-1 {{ if $sectionBreak }}border-top{{ end }}"></li>
@@ -63,17 +69,27 @@
<li>
<ul class="btn-toggle-nav list-unstyled fw-bold pb-1">
<li>
<a href="{{ $href }}" class="sidebar-item text-decoration-none rounded {{ if $active }}active{{ end }}">
{{ $title }}
</a>
{{ $class := "sidebar-item text-decoration-none rounded" }}
{{ if $active }}{{ $class = printf "%s active" $class }}{{ end }}
{{ $link := partial "utilities/link.html" (dict "destination" $href "text" $title "class" $class "page" $page) }}
{{ if $link }}
{{ print $link | safeHTML }}
{{ else }}
{{- errorf "partial [utilities/sidebar.html] - Invalid link in file: %s" ($page.Scratch.Get "sidebarFilename") -}}
{{ end }}
</li>
</ul>
</li>
{{ else }}
<li>
<a href="{{ $href }}" class="sidebar-item text-decoration-none rounded small {{ if $active }}active{{ end }}">
{{ $title }}
</a>
{{ $class := "sidebar-item text-decoration-none rounded small" }}
{{ if $active }}{{ $class = printf "%s active" $class }}{{ end }}
{{ $link := partial "utilities/link.html" (dict "destination" $href "text" $title "class" $class "page" $page) }}
{{ if $link }}
{{ print $link | safeHTML }}
{{ else }}
{{- errorf "partial [utilities/sidebar.html] - Invalid link in file: %s" ($page.Scratch.Get "sidebarFilename") -}}
{{ end }}
</li>
{{ end }}
{{ end -}}
@@ -94,6 +110,7 @@
"level" (add $level 1)
"baseURL" $baseURL
"group" $item
"menu" $data
)
}}
{{- else }}
@@ -103,6 +120,8 @@
"level" $level
"baseURL" $baseURL
"title" $item.title
"href" $item.link
"menu" $data
)
}}
{{- end }}

View File

@@ -0,0 +1,20 @@
{{ $headings := .headings | default slice }}
{{- range .Fragments.Headings }}
{{- range .Headings }}
{{- $headings = $headings | append .Title -}}
{{- end -}}
{{- end -}}
{{- if gt (len $headings) 1 }}
<nav class="navbar navbar-expand navbar-services p-0 fs-5">
<div class="container-fluid p-0 pb-3 border-bottom">
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav">
{{- range $headings }}
<li class="nav-item"><a class="nav-link" href="#{{ anchorize . }}">{{ . }}</a></li>
{{- end }}
</ul>
</div>
</div>
</nav>
{{- end }}

View File

@@ -1,7 +1,17 @@
{{ $items := len (findRE "<li.*?>(.|\n)*?</li>" .TableOfContents) -}}
{{ if (gt $items 1) -}}
{{- $page := .page -}}
{{- $download := .download -}}
{{ $items := len (findRE "<li.*?>(.|\n)*?</li>" $page.TableOfContents) -}}
{{ if or $download (gt $items 1) -}}
<div class="toc toc-sidebar mb-5 my-md-0 ps-xl-3 mb-lg-5 p-3 text-body-secondary sticky-top">
{{ with $download }}
<div class="mb-5">
{{ $attr := dict "download" (path.Base .) }}
{{ partial "assets/button.html" (dict "href" . "title" (T "download" ) "color" "primary" "outline" "true" "icon" "fas download" "attributes" $attr) }}
</div>
{{ end }}
<strong class="d-block h6 my-2 pb-2 border-bottom">{{ T "toc" }}</strong>
{{ .TableOfContents }}
{{ $page.TableOfContents }}
</div>
{{ end -}}

View File

@@ -6,6 +6,14 @@
{{- $core := .core | default false -}}
{{- $skipTemplate := .skipTemplate | default false -}}
{{- $state := "async" -}}
{{- with .state }}{{ $state = . }}{{ end -}}
{{- if or $header (eq $state "immediate") }}{{ $state = "" }}{{ end -}}
{{- $supportedStates := slice "defer" "async" "immediate" -}}
{{- if and $state (not (in $supportedStates $state)) -}}
{{- errorf "partial [footer/script.html] - Invalid value for param 'processing': %s" $state -}}
{{- end -}}
{{- $modules := "" -}}
{{ if $core }}
{{- $modules = site.Params.modules.core -}}
@@ -26,9 +34,9 @@
{{- if gt (len $js.Content) 0 -}}
{{- if not hugo.IsProduction -}}
<script src="{{ if $absoluteURL }}{{ $js.Permalink }}{{ else }}{{ $js.RelPermalink }}{{ end }}"></script>
<script src="{{ if $absoluteURL }}{{ $js.Permalink }}{{ else }}{{ $js.RelPermalink }}{{ end }}"{{ with $state }} {{ . | safeHTMLAttr }}{{ end }}></script>
{{ else -}}
{{ $js = $js | minify | fingerprint -}}
<script src="{{ if $absoluteURL }}{{ $js.Permalink }}{{ else }}{{ $js.RelPermalink }}{{ end }}" integrity="{{ $js.Data.Integrity }}" crossorigin="anonymous"></script>
<script src="{{ if $absoluteURL }}{{ $js.Permalink }}{{ else }}{{ $js.RelPermalink }}{{ end }}" integrity="{{ $js.Data.Integrity }}" crossorigin="anonymous"{{ with $state}} {{ . | safeHTMLAttr }}{{ end }}></script>
{{ end -}}
{{ end -}}

View File

@@ -5,27 +5,31 @@
{{ 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">
{{ 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 }}
{{ if gt .Site.Menus.social 0 }}
{{- $tab := site.Params.main.externalLinks.tab -}}
<div class="container-fluid bg-primary bg-opacity-{{ .Site.Params.style.themeOpacity | default "25" | safeHTML }}">
<div class="container-xxl px-4 px-xxl-0">
<div class="row row-cols-2 py-3 align-items-center">
<div class="col col-6">
<div class="row justify-content-end p-0">
<div class="col-12 col-md-8 p-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>
</div>
</div>
</div>
<div class="col col-6 text-sm-start">
{{ range .Site.Menus.social -}}
<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>
</div>
</div>
<div class="col text-sm-start text-center col-sm-6 col-md-4">
{{ range .Site.Menus.social -}}
<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>
<div class="col col-md-2 d-none d-md-block"></div>
</div>
</div>
{{ end }}

View File

@@ -2,10 +2,14 @@
{{- $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="{{ if $absoluteURL }}{{ $image.Permalink }}{{ else }}{{ $image.RelPermalink }}{{ end }}">
{{ end -}}
{{ $image := $favicon.Resize "180x CatmullRom" -}}
<link rel="apple-touch-icon" sizes="180x180" href="{{ if $absoluteURL }}{{ $image.Permalink }}{{ else }}{{ $image.RelPermalink }}{{ end }}">
{{- if $favicon -}}
{{ 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="{{ if $absoluteURL }}{{ $image.Permalink }}{{ else }}{{ $image.RelPermalink }}{{ end }}">
{{ end -}}
{{ $image := $favicon.Resize "180x CatmullRom" -}}
<link rel="apple-touch-icon" sizes="180x180" href="{{ if $absoluteURL }}{{ $image.Permalink }}{{ else }}{{ $image.RelPermalink }}{{ end }}">
{{ else }}
{{- errorf "partial [head/favicon.html] - Cannot find file: %s" .Site.Params.favicon.logo -}}
{{ end }}
{{ end -}}

View File

@@ -3,7 +3,7 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
{{ hugo.Generator}}
{{ partial "head/stylesheet.html" -}}
{{ partialCached "head/stylesheet-core.html" . -}}
{{- $modules := site.Params.modules.optional | intersect .Page.Params.modules -}}
{{- range $index, $mod := $modules -}}
{{- $source := printf "scss/%s.scss" $mod -}}

View File

@@ -0,0 +1,3 @@
{{/* Wrapper for the stylesheet partial with default arguments. */}}
{{/* Added to avoid interference with the argument of partialCached. */}}
{{ partial "head/stylesheet.html" -}}

View File

@@ -1,5 +1,14 @@
{{- $transpiler := site.Params.main.build.transpiler | default "libsass" -}}
{{- $supportedTranspilers := slice "libsass" "dartsass" -}}
{{- if not (in $supportedTranspilers $transpiler) -}}
{{- errorf "partial [head/stylesheet.html] - Invalid value for param 'transpiler': %s" $transpiler -}}
{{- end -}}
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
{{- $source := .source | default "scss/app.scss" -}}
{{- $source := .source }}
{{- if not $source -}}
{{- if eq $transpiler "dartsass" }}{{ $source = "scss/app-dart.scss" }}{{ else }}{{ $source = "scss/app.scss" }}{{ end -}}
{{- end -}}
{{- $target := .target | default "css/main.css" -}}
{{- $page := .page -}}
{{- $core := .core | default true -}}
@@ -21,6 +30,7 @@
{{- if site.Params.navigation.fixed }}{{ $navbarOffset = site.Params.navigation.offset | default "4em" }}{{ end }}
{{- $vars := dict
"theme-font" (default "Inter" site.Params.style.themeFont)
"font-size-base" (default "1rem" site.Params.style.fontSizeBase)
"primary" (default "#007bff" site.Params.style.primary)
"secondary" (default "#6c757d" site.Params.style.secondary)
"success" (default "#198754" site.Params.style.success)
@@ -36,22 +46,24 @@
"dark-mode-tint" (default "0%" site.Params.style.darkModeTint)
-}}
{{- $options := (dict "transpiler" "libsass" "targetPath" $target "enableSourceMap" (not hugo.IsProduction) "vars" $vars) -}}
{{- $options := (dict "transpiler" $transpiler "targetPath" $target "enableSourceMap" (not hugo.IsProduction) "vars" $vars) -}}
{{- $bundle := partial "utilities/bundle" (dict "match" $source "filename" (printf "scss/bundle-%d.scss" now.UnixNano) "modules" $modules "basepath" "scss" "debugging" site.Params.debugging.showSCSS) -}}
{{- $css := $bundle | resources.ExecuteAsTemplate $target . | toCSS $options -}}
{{- if gt ($bundle.Content | len) 0 }}
{{- $css := $bundle | resources.ExecuteAsTemplate $target . | toCSS $options -}}
{{ if $core }}
{{- partial "head/icons.html" (dict "css" $css) -}}
{{ end }}
{{- if site.Params.style.purge -}}
{{- $post_options := dict "config" "config" -}}
{{- $css = $css | resources.PostCSS $post_options -}}
{{- end -}}
{{ if $core }}
{{- partial "head/icons.html" (dict "css" $css) -}}
{{ end }}
{{- if site.Params.style.purge -}}
{{- $post_options := dict "config" "config" "noMap" hugo.IsProduction -}}
{{- $css = $css | resources.PostCSS $post_options -}}
{{- end -}}
{{- if not hugo.IsProduction -}}
<link rel="stylesheet" href="{{ if $absoluteURL }}{{ $css.Permalink }}{{ else }}{{ $css.RelPermalink }}{{ end }}">
{{- else -}}
{{- $css = $css | fingerprint | resources.PostProcess -}}
<link rel="stylesheet" href="{{ if $absoluteURL }}{{ $css.Permalink }}{{ else }}{{ $css.RelPermalink }}{{ end }}" integrity="{{ $css.Data.Integrity }}" crossorigin="anonymous">
{{- if not hugo.IsProduction -}}
<link rel="stylesheet" href="{{ if $absoluteURL }}{{ $css.Permalink }}{{ else }}{{ $css.RelPermalink }}{{ end }}">
{{- else -}}
{{- $css = $css | minify | fingerprint | resources.PostProcess -}}
<link rel="stylesheet" href="{{ if $absoluteURL }}{{ $css.Permalink }}{{ else }}{{ $css.RelPermalink }}{{ end }}" integrity="{{ $css.Data.Integrity }}" crossorigin="anonymous">
{{- end -}}
{{- end -}}

View File

@@ -1,21 +0,0 @@
<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>
</div>
<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 }}
{{ 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-lg-2 d-none d-lg-block bg-info order-4"></div>
</div>
</div>

View File

@@ -0,0 +1,93 @@
{{- $page := .page -}}
{{- $headings := .headings -}}
{{- $orientation := .orientation | default "stacked" -}}
{{- $actions := .actions -}}
{{- $width := .width | default 6 }}
{{- if or (lt $width 1) (gt $width 12) -}}
{{- $width = 6 -}}
{{- warnf "partial [list/featured.html] - Invalid column width: %d" $width -}}
{{ end -}}
{{- $justify := .justify | default "center" -}}
{{- $supportedJustify := slice "start" "end" "center" "between" "around" "evenly" -}}
{{- if not (in $supportedJustify $justify) -}}
{{- errorf "partial [list/featured.html] - Invalid value for param 'justify': %s" $justify -}}
{{- end -}}
{{- $align := .align | default "center" -}}
{{- $supportedAlign := slice "start" "end" "center" -}}
{{- if not (in $supportedAlign $align) -}}
{{- errorf "partial [list/featured.html] - Invalid value for param 'align': %s" $align -}}
{{- end -}}
{{- $breadcrumb := and (not $page.IsHome) site.Params.navigation.breadcrumb -}}
{{- define "partials/list/featured-body.html" }}
{{- $page := .page -}}
{{- $headings := .headings -}}
{{- $orientation := .orientation | default "stacked" -}}
{{- $actions := .actions -}}
{{- $align := .align | default "center" -}}
<div class="text-{{ $align }}">
{{ with $page.Title }}<p class="display-4">{{ . }}</p>{{ end }}
<span class="fs-5 text-muted">{{ $page.Description }}</span>
{{ if $actions }}
<div class="hstack{{ if gt (len $actions) 1 }} gap-3{{ end }} justify-content-{{ $align}} pt-5 pt-md-3">
{{ range $actions }}
{{ partial "assets/button.html" (dict "href" .url "icon" .icon "title" .title "outline" .outline "order" "last" "justify" "start") }}
{{ end }}
</div>
{{ end }}
</div>
{{- end -}}
{{- define "partials/list/featured-illustration.html" }}
{{- $page := .page -}}
{{- $style := printf "img-wrap mx-auto mx-md-0 %s" .style -}}
{{ if $page.Params.icon }}
{{- $icon := (or (and (reflect.IsMap $page.Params.Icon) $page.Params.Icon.url) $page.Params.Icon) -}}
{{- $mode := and (reflect.IsMap $page.Params.Icon) $page.Params.Icon.mode -}}
{{ if eq (lower (path.Ext $icon)) ".json" }}
{{ partial "assets/animation.html" (dict "data" $icon "mode" $mode "loop" false "hover" true "class" "col-6 mx-auto text-center") }}
{{ else }}
{{ partial "assets/icon.html" (dict "icon" "mode" $mode $icon "wrapper" "col-6 mx-auto text-center")}}
{{ end }}
{{ else }}
{{- $thumbnail := (or (and (reflect.IsMap $page.Params.Thumbnail) $page.Params.Thumbnail.url) $page.Params.Thumbnail) -}}
{{- if $thumbnail }}
{{ partial "assets/image.html" (dict "url" $thumbnail "ratio" "16x9" "outerClass" $style "innerClass" "rounded" "title" .Site.Title) }}
{{ end }}
{{ end }}
{{- end -}}
<div class="container-fluid p-0 {{ with site.Params.home.feature.color }} bg-{{ . }} bg-opacity-{{ site.Params.style.themeOpacity | default "25" | safeHTML }}{{ end }}">
<div class="container-xxl {{ if $breadcrumb }} pb-4 px-4 {{ else }} p-4 {{ end }} px-xxl-0 {{ if site.Params.home.fullCover }} fullscreen{{ end }} d-flex flex-column">
{{ if $breadcrumb }}
<div>{{ partial "assets/breadcrumb.html" $page }}</div>
{{ end -}}
{{ if eq $orientation "stacked" }}
<div class="row justify-content-center flex-fill">
<div class="col-12 col-md-{{ $width }} m-auto text-center">
{{ partial "partials/list/featured-illustration.html" (dict "page" $page "style" "pb-4") }}
{{ partial "partials/list/featured-body.html" (dict "page" $page "headings" $headings "orientation" $orientation "actions" $actions) }}
</div>
</div>
{{ else }}
<div class="flex-fill row row-cols-1 row-cols-md-2 justify-content-{{ $justify }}">
<div class="col col-12 col-md-{{ $width }} order-1 order-md-0 my-md-auto">
{{ partial "partials/list/featured-body.html" (dict "page" $page "headings" $headings "orientation" $orientation "actions" $actions "align" $align) }}
</div>
<div class="col col-12 col-md-{{ if gt $width 6 }}{{ sub 12 $width }}{{ else }}{{ $width }}{{ end }} order-0 order-md-1 text-center my-md-auto">
{{ partial "partials/list/featured-illustration.html" (dict "page" $page "style" "pb-4 pb-md-0") }}
</div>
</div>
{{ end }}
{{ with $headings }}
<div class="col col-12 p-0 pt-5">
{{ partial "assets/toc-main.html" (dict "headings" .) }}
</div>
{{ end }}
</div>
</div>

View File

@@ -0,0 +1,23 @@
<!--
Retrieve the value from a given argument within the shortcode context. If a parent is set and merge is false, the
value of the parent's argument is retrieved when the current context is unavailable. If merge is true, the parent's
value is merged with the value of the shortcode context, separated by a single space.
-->
{{ $page := .page -}}
{{ $arg := .arg -}}
{{ $merge := .merge -}}
{{ $val := "" }}
{{ with $page.Get $arg }}{{ $val = . }}{{ end }}
{{- with $page.Parent -}}
{{ with .Get $arg }}
{{ if $merge }}
{{ $val = trim (printf "%s %s" . $val) " " }}
{{ else if not $val }}
{{ $val = . }}
{{ end }}
{{ end }}
{{- end -}}
{{- return $val -}}

View File

@@ -1,18 +1,28 @@
<!--
Retrieve a local or remote resource compatible with Hugo's image processing. The path of a remote image is
rewritten to ensure processed files are stored in the final '/img' folder. The partial returns nil if the
resource cannot be found or is incompatibile. The partial supports the following arguments:
"url": Required path or url of the image, e.g. "img/example.jpg" or "https://example.com/img.jpg"
Retrieve a local or remote resource compatible with Hugo's image processing. If the url starts with 'http', the
image is retrieved from an external location. Else, the url is matched with a page resource and site asset (in that
order). The path of a remote image is rewritten to ensure processed files are stored in the final '/img' folder. The
partial returns nil if the resource cannot be found or is incompatibile. The partial supports the following
arguments:
"url" Required path or url of the image, e.g. "img/example.jpg" or "https://example.com/img.jpg"
"page" Optional page context, used to retrieve an image from page resources.
-->
{{ $url := .url -}}
{{ $page := .page -}}
{{ $supportedMediaTypes := slice "image/png" "image/jpeg" "image/gif" "image/tiff" "image/bmp" "image/webp" -}}
{{ $img := "" }}
{{ $remote := hasPrefix (lower $url) "http" }}
{{ if $remote }}
{{ $img = resources.GetRemote $url -}}
{{ else }}
{{ $img = resources.GetMatch $url -}}
{{ if $page }}
{{ $img = $page.Resources.Get $url -}}
{{ end }}
{{ if not $img }}
{{ $img = resources.GetMatch $url }}
{{ end }}
{{ end }}
{{ with $img -}}

View File

@@ -1,12 +1,17 @@
{{- $page := .page -}}
{{- $version := .version -}}
{{- $sidebarFilename := "" -}}
{{- $menu := "" -}}
{{- if $page.IsPage -}}
{{- $menu = index site.Data (printf "%s-%s" $page.Section $version) -}}
{{- $sidebarFilename = printf "%s-%s" $page.Section $version -}}
{{- $menu = index site.Data $sidebarFilename -}}
{{ if not $menu }}
{{ $menu = index site.Data $page.Section }}
{{- $sidebarFilename = $page.Section -}}
{{ $menu = index site.Data $sidebarFilename }}
{{ end }}
{{- end -}}
{{ if $menu }}{{ with $sidebarFilename }}{{ $page.Scratch.Set "sidebarFilename" (path.Join "data" .) }}{{ end }}{{ end -}}
{{- return $menu -}}

View File

@@ -0,0 +1,17 @@
{{ $path := .path }}
{{ $height := .height }}
{{ $width := "" }}
{{ if eq (path.Ext $path) ".svg" }}
{{ $path := path.Join "static" .path }}
{{ if fileExists $path }}
{{ with findRE `viewBox="\d+[\s,]\d+[\s,]\d+[\s,]\d+"` (readFile $path) 1 }}
{{ $content := split (index (split (index . 0) `"`) 1) " " }}
{{ $viewbox_width := float (index $content 2) }}
{{ $viewbox_height := float (index $content 3) }}
{{ $width = int (math.Round (mul (div $height $viewbox_height) $viewbox_width)) }}
{{ end }}
{{ end }}
{{ end }}
{{ return $width }}

View File

@@ -0,0 +1,13 @@
<!--
Purges any HTML comments from raw content, if applicable. The partial supports the following arguments:
"page" Required page context, used to render shortcodes properly.
"raw" Raw page content, e.g. .Page.RawContent.
-->
{{ $page := .page -}}
{{ $raw := .raw -}}
{{- if site.Params.debugging.purgeHTMLComments -}}
{{- $raw = replaceRE "<!--(.|\n)*?-->" "" $raw -}}
{{- end -}}
{{ $content := emojify $raw | $page.RenderString }}
{{ return $content }}

View File

@@ -3,43 +3,74 @@
{{- errorf "partial [utilities/link.html] - Missing param 'destination'" -}}
{{- end -}}
{{- $error := false -}}
{{- $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 -}}
{{- $page := .page -}}
{{- $anchor := "" -}}
{{- $text := .text -}}
{{- $class := .class -}}
{{- if $isExternal -}}
{{- if not $text -}}
{{- $text = (urls.Parse (absURL $destination)).Host -}}
{{- end -}}
{{- if $tab -}}
{{- $target = "_blank" -}}
{{- $rel = "noopener noreferrer" -}}
{{- end -}}
{{- if $cue -}}
{{ $suffix := partial "assets/icon.html" (dict "icon" "fas up-right-from-square fa-2xs") }}
{{ $suffix := partial "assets/icon.html" (dict "icon" "fas up-right-from-square fa-2xs" "spacing" false) }}
{{- $text = printf "%s&nbsp;%s" $text $suffix | safeHTML -}}
{{- end -}}
{{ else }}
{{ $destination = relLangURL $destination }}
{{- else -}}
{{- if strings.Contains $destination "#" }}
{{ $segments := split $destination "#" }}
{{- if ne (len $segments) 2 }}
{{- errorf "partial [utilities/link.html] - Malformed path, expected one anchor '#' only: %s" $destination -}}
{{ else }}
{{- $destination = index $segments 0 -}}
{{- $anchor = index $segments 1 -}}
{{ end }}
{{ end }}
{{- $destination = strings.TrimSuffix "/" $destination -}}
{{- $ref := $page.GetPage $destination -}}
{{- if not $ref }}
{{- $segments := split $destination "/" -}}
{{- if and (hasPrefix $destination "/") (gt (len $segments) 1) -}}
{{- $prefix := index $segments 1 -}}
{{- $page := .Page -}}
{{ with index (where site.Sites "Language.Lang" $prefix) 0 }}
{{- $path := printf "/%s" (strings.TrimPrefix (printf "/%s/" $prefix) $destination) }}
{{- $ref = .GetPage $path -}}
{{ end }}
{{- end -}}
{{- end -}}
{{- if not $ref -}}
{{- errorf "partial [utilities/link.html] - Cannot find page: %s" $destination -}}
{{- $error = true -}}
{{- else -}}
{{- $destination = $ref.RelPermalink -}}
{{- with $anchor }}{{ $destination = printf "%s#%s" (strings.TrimSuffix "/" $destination) . -}}{{ end -}}
{{- if not $text -}}
{{- if $anchor -}}
{{- $text = $anchor -}}
{{- else -}}
{{- $text = $ref.LinkTitle -}}
{{- end -}}
{{ end -}}
{{- if not $case }}{{ $text = lower $text }}{{ end -}}
{{- end -}}
{{- end -}}
{{- $class := .class -}}
<a {{ with $class }}class="{{ . }}" {{ end }}href="{{ $destination | safeURL }}"{{ with $target }} target="{{ . }}"{{ end }}{{ with $rel }} rel="{{ . }}"{{ end }}>{{ $text }}</a>
{{ if not $error -}}
<a {{ with $class }}class="{{ . }}" {{ end }}href="{{ $destination | safeURL }}"{{ with $target }} target="{{ . }}"{{ end }}{{ with $rel }} rel="{{ . }}"{{ end }}>{{ $text }}</a>
{{- end }}

View File

@@ -0,0 +1,68 @@
<!--
Creates an HTML element that shows the long form of an abbrevitation. The abbreviation data is centrally stored in a
data file. By default, the shortcode uses "abbr.yaml" with translation support.
The data file is expected to store key-value pairs, where "id" is the lower-case abbrevation and "long" its long
form. The following example illustrates this using YML:
- id: css
long: "Cascading Style Sheets"
The shortcode supports the following arguments:
"key" Required case-insensitive key of the abbreviation. In shorthand notation, this is the first (and
only) matched argument.
"data" Optional filename of the abbrevation input. It defaults to "abbr.yaml" with translation support.
You can omit the file extension. The file should reside in the "data" folder. The data supports
language extensions. For example, "abbr.en.yaml" refers to the English translation of the
abbrevation data. The filename "abbr.yaml" is used when no suitable translation is found.
"class" Optional class attribute of the abbr element. For example, specify "initialism" for a slightly
smaller font size.
-->
{{ $error := false }}
{{ $key := "" }}
{{- if .IsNamedParams }}{{ $key = .Get "key" }}{{ else }}{{ $key = .Get 0 }}{{ end }}
{{ if not $key -}}
{{ errorf "Missing param 'key': %s" .Position -}}
{{ $error = true }}
{{ end -}}
{{- $data := .Get "data" | default "abbr" -}}
{{ if not $data -}}
{{ errorf "Missing param 'data': %s" .Position -}}
{{ $error = true }}
{{ end -}}
{{- $class := .Get "class" | default "" -}}
{{ if not $error }}
{{/* Try language-specific file first */}}
{{ $path := path.Join (path.Dir $data) (printf "%s.%s" (path.BaseName $data) .Page.Language.Lang) (path.Ext $data) }}
{{ $entries := index site.Data $path }}
{{/* Use exact provided path as backup */}}
{{ if not $entries -}}
{{ $entries = index site.Data $data }}
{{ end }}
{{ if not $entries -}}
{{ errorf "Invalid abbrevation data '%s': %s" $data .Position -}}
{{ $error = true }}
{{ end -}}
{{ $title := "" }}
{{ if not $error }}
{{ $elements := (where $entries "id" (lower $key)) }}
{{ if gt (len $elements) 0 }}
{{ $title = index (index $elements 0) "long" }}
{{ end -}}
{{ if not $title -}}
{{ errorf "Cannot find value for '%s': %s" $key .Position -}}
{{ $error = true }}
{{ end -}}
{{ end }}
{{ if not $error }}
<abbr {{ with $class }}class="{{ . }}"{{ end }} title="{{ $title }}" tabindex="0">{{ $key }}</abbr>
{{ end }}
{{ end }}

View File

@@ -12,7 +12,7 @@
{{- end -}}
{{- $id := .Ordinal -}}
{{ $header := .Get "header" -}}
{{ $header := .Get "header" | default "" -}}
{{ if not $header -}}
{{ if .Parent }}
{{ errorf "Missing value for param 'header': %s" .Parent.Position -}}
@@ -21,7 +21,7 @@
{{ end }}
{{ end -}}
{{ $class := .Get "class" -}}
{{ $class := .Get "class" | default "" -}}
{{ $body := trim .Inner " \r\n" -}}
{{ if not $body -}}
{{ if .Parent }}
@@ -50,6 +50,6 @@
</h2>
{{- end -}}
<div id="{{ $parent }}-item-{{ $id }}" class="accordion-collapse collapse{{ if $show }} show{{ end }}{{ with $class }} {{ . }}{{ end }}" aria-labelledby="{{ $parent }}-heading-{{ $id }}" data-bs-parent="#{{ $parent }}">
<div class="accordion-body">{{ $body | markdownify | safeHTML }}</div>
<div class="accordion-body">{{ $body | .Page.RenderString | safeHTML }}</div>
</div>
</div>

View File

@@ -10,7 +10,7 @@
{{ with .Get "id" }}
{{ $id = . }}
{{ end }}
{{- $class := .Get "class" -}}
{{- $class := .Get "class" | default "" -}}
{{- $openParam := "false" -}}
{{- $open := false -}}
@@ -26,7 +26,7 @@
{{- $body := .Inner -}}
{{- if $open -}}
{{- $pattern := printf "data-bs-parent=\"#%s\"" $id -}}
{{- $body = (replace .Inner $pattern "") | markdownify | safeHTML }}
{{- $body = (replace .Inner $pattern "") | .Page.RenderString | safeHTML }}
{{- end -}}
<div id="{{ $id }}" class="accordion mb-3{{ with $class }} {{ . }}{{ end }}">

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