Compare commits

...

146 Commits

Author SHA1 Message Date
Mark Dumay
da1edce3aa Merge pull request #608 from gethinode/develop
Bump package release
2023-11-05 07:29:29 +01:00
Mark Dumay
863012256f Merge branch 'main' into develop 2023-11-05 07:19:13 +01:00
mark
faecbf7f45 Bump package release 2023-11-05 07:18:32 +01:00
Mark Dumay
49581b6749 Merge pull request #607 from gethinode/develop
Adjust thumbnail margins
2023-11-05 06:51:09 +01:00
Mark Dumay
d795d506dd Merge branch 'main' into develop 2023-11-05 06:41:17 +01:00
mark
6348b8ed3f Add bottom margin to cover images 2023-11-05 06:32:43 +01:00
github-actions[bot]
aa2ec54189 Merge pull request #603 from gethinode/dependabot/npm_and_yarn/stylelint-config-standard-scss-11.1.0
Bump stylelint-config-standard-scss from 11.0.0 to 11.1.0
2023-11-03 13:39:12 +00:00
dependabot[bot]
a8fdd78b21 Bump stylelint-config-standard-scss from 11.0.0 to 11.1.0
Bumps [stylelint-config-standard-scss](https://github.com/stylelint-scss/stylelint-config-standard-scss) from 11.0.0 to 11.1.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/v11.0.0...v11.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-03 13:27:12 +00:00
mark
e1170b8a95 Update minimum version requirement
Depends on Hugo #11510
2023-11-03 11:16:58 +01:00
mark
400ef7d2c5 Update minimum version requirement
Depends on Hugo #11510
2023-11-03 10:41:30 +01:00
Mark Dumay
02fec2c512 Merge pull request #602 from gethinode/develop
Fix KaTeX script in production environment
2023-11-03 07:39:35 +01:00
Mark Dumay
8f4ec5e8d6 Merge branch 'main' into develop 2023-11-03 07:28:07 +01:00
mark
e16e10a8e8 Fix KaTeX script in production environment
Adjust js minification settings to keep variable names.
The built in minifier causes a reference error to an
undefined variable name.
2023-11-03 07:27:34 +01:00
Mark Dumay
15764b7642 Merge pull request #601 from gethinode/develop
Add callout nav
2023-11-03 06:53:26 +01:00
Mark Dumay
a4247c6c6a Merge branch 'main' into develop 2023-11-03 06:12:28 +01:00
mark
1fcfc7c874 Fix linting issues 2023-11-03 06:11:40 +01:00
mark
0a885188a8 Add callout nav 2023-11-03 06:06:30 +01:00
github-actions[bot]
213a78c864 Merge pull request #600 from gethinode/dependabot/npm_and_yarn/hugo-bin-0.116.3
Bump hugo-bin from 0.116.2 to 0.116.3
2023-11-02 13:27:16 +00:00
dependabot[bot]
767d0d0efe Bump hugo-bin from 0.116.2 to 0.116.3
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.116.2 to 0.116.3.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.116.2...v0.116.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-02 13:20:38 +00:00
github-actions[bot]
51ac0e4c33 Merge pull request #599 from gethinode/dependabot/npm_and_yarn/hugo-bin-0.116.2
Bump hugo-bin from 0.116.1 to 0.116.2
2023-11-01 13:14:45 +00:00
dependabot[bot]
f3d1f2a84b Bump hugo-bin from 0.116.1 to 0.116.2
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.116.1 to 0.116.2.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.116.1...v0.116.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-01 13:07:10 +00:00
Mark Dumay
856fcdd9f2 Merge pull request #597 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2023-11-01 10:32:37 +01:00
markdumay
3aaef99bb3 fix: update Hugo module dependencies 2023-11-01 03:16:35 +00:00
Mark Dumay
fed96e723f Merge pull request #596 from gethinode/develop
Make section menu responsive
2023-10-31 14:19:17 +01:00
mark
58ba3c1838 Add breadcrumb to tags page 2023-10-31 14:01:47 +01:00
mark
d6b233da3e Align padding 2023-10-31 13:46:46 +01:00
Mark Dumay
8bf7668cc5 Merge branch 'main' into develop 2023-10-31 12:43:41 +01:00
mark
632badddb5 Make section menu responsive 2023-10-31 12:42:58 +01:00
Mark Dumay
c2e1cd370a Merge pull request #595 from gethinode/develop
Address Hugo v0.120.0 deprecation warnings
2023-10-31 11:39:32 +01:00
mark
4ac787bef0 Adapt IsServer check revised in hugo v0.120.0 2023-10-31 11:00:01 +01:00
mark
678b9502ff Adapt new Google Analytics ID config 2023-10-31 10:54:51 +01:00
mark
e2222be7b8 Bump dependencies 2023-10-31 10:53:59 +01:00
Mark Dumay
4c5c2eef73 Merge pull request #594 from gethinode/main
Sync with main
2023-10-31 07:37:59 +01:00
Mark Dumay
064baae07d Merge pull request #593 from gethinode/list
Bump package release
2023-10-30 20:06:13 +01:00
Mark Dumay
a3a0f0fe6c Merge branch 'main' into list 2023-10-30 18:59:27 +01:00
mark
c5dd3c39d9 Bump package release 2023-10-30 18:58:46 +01:00
Mark Dumay
7bb0853525 Merge pull request #592 from gethinode/list
Support layout types for list pages
2023-10-30 18:56:34 +01:00
Mark Dumay
25928bf38a Merge branch 'main' into list 2023-10-30 17:00:47 +01:00
Mark Dumay
09e516db93 Merge pull request #591 from gethinode/develop
Fix section title and modal search
2023-10-30 17:00:17 +01:00
mark
0bf26224df Support layout types for list pages 2023-10-30 16:59:42 +01:00
mark
347704fc8e Remove obsolete debugging statement 2023-10-30 16:58:05 +01:00
Mark Dumay
829795f3fe Merge branch 'main' into develop 2023-10-30 16:42:50 +01:00
mark
5f25b5458e Fix section title of current page 2023-10-30 16:41:40 +01:00
mark
d3e80198a8 Fix purge settings of modal search 2023-10-30 15:31:13 +01:00
Mark Dumay
5afb2936b8 Merge pull request #590 from gethinode/develop
Add horizontal navigation styling parameters
2023-10-30 14:40:59 +01:00
Mark Dumay
2da3f2a2b8 Merge branch 'main' into develop 2023-10-30 14:32:09 +01:00
mark
acebdc610f Bump package release 2023-10-30 14:31:30 +01:00
mark
490df18d60 Add horizontal navigation styling parameters 2023-10-30 14:31:08 +01:00
Mark Dumay
9f963bdd2d Merge pull request #589 from gethinode/develop
Fix thumbnail titles and sidebar toggler positioning
2023-10-30 13:26:57 +01:00
Mark Dumay
104d19e203 Merge branch 'main' into develop 2023-10-30 13:16:56 +01:00
mark
261981ca23 Bump package release 2023-10-30 13:15:26 +01:00
mark
1acc469ba2 Fix thumbnail title 2023-10-30 13:14:51 +01:00
mark
64287d42b8 Fix positioning of sidebar toggler 2023-10-30 11:40:10 +01:00
Mark Dumay
bcf22f193c Merge pull request #588 from gethinode/develop
Fix alignment of featured image in full cover mode
2023-10-30 11:22:58 +01:00
mark
6272f08d3a Fix typo 2023-10-30 11:15:23 +01:00
Mark Dumay
14cf7a3f6f Merge branch 'main' into develop 2023-10-30 11:08:56 +01:00
mark
51a92ecbe7 Update build stats 2023-10-30 11:08:26 +01:00
mark
567235ff3c Fix alignment of featured image in full cover mode 2023-10-30 11:08:01 +01:00
Mark Dumay
3a7f30474d Merge pull request #587 from gethinode/develop
Support lazy loading of images
2023-10-30 11:06:16 +01:00
Mark Dumay
2f8a7c412e Merge branch 'main' into develop 2023-10-30 10:55:41 +01:00
mark
f338da681b Support lazy loading of images 2023-10-30 10:52:08 +01:00
Mark Dumay
80a2a2da3b Merge pull request #586 from gethinode/develop
Fix positioning of footer in list pages
2023-10-30 09:27:25 +01:00
Mark Dumay
1b660ebd80 Merge branch 'main' into develop 2023-10-30 09:11:55 +01:00
mark
43b9854190 Fix positioning of footer in list pages 2023-10-30 09:11:01 +01:00
Mark Dumay
3779237f6a Merge pull request #585 from gethinode/develop
Add support for horizontal navbar
2023-10-29 15:49:22 +01:00
Mark Dumay
e94d9b3b1a Merge branch 'main' into develop 2023-10-29 15:06:10 +01:00
mark
8ec4bcfa5e Add support for horizontal navbar 2023-10-29 15:05:42 +01:00
Mark Dumay
962835fc80 Merge pull request #584 from gethinode/develop
Fix search background placeholder
2023-10-29 14:20:04 +01:00
Mark Dumay
cdd7e63e46 Merge branch 'main' into develop 2023-10-29 14:10:25 +01:00
mark
1ae4678cdb Bump package release 2023-10-23 18:36:56 +02:00
mark
ec6dcbe049 Fix search background placeholder 2023-10-23 18:36:34 +02:00
Mark Dumay
58e609c6f3 Merge pull request #581 from gethinode/develop
Improve modal search
2023-10-23 18:08:01 +02:00
Mark Dumay
128e52266f Merge branch 'main' into develop 2023-10-23 17:46:56 +02:00
github-actions[bot]
576e50822f Merge pull request #582 from gethinode/dependabot/npm_and_yarn/eslint-8.52.0
Bump eslint from 8.51.0 to 8.52.0
2023-10-23 13:49:16 +00:00
dependabot[bot]
5ff61d44d7 Bump eslint from 8.51.0 to 8.52.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.51.0 to 8.52.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.51.0...v8.52.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-23 13:41:48 +00:00
github-actions[bot]
7b1b2ecb42 Merge pull request #583 from gethinode/dependabot/npm_and_yarn/eslint-plugin-import-2.29.0
Bump eslint-plugin-import from 2.28.1 to 2.29.0
2023-10-23 13:40:43 +00:00
dependabot[bot]
70b09a5265 Bump eslint-plugin-import from 2.28.1 to 2.29.0
Bumps [eslint-plugin-import](https://github.com/import-js/eslint-plugin-import) from 2.28.1 to 2.29.0.
- [Release notes](https://github.com/import-js/eslint-plugin-import/releases)
- [Changelog](https://github.com/import-js/eslint-plugin-import/blob/main/CHANGELOG.md)
- [Commits](https://github.com/import-js/eslint-plugin-import/compare/v2.28.1...v2.29.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-23 13:33:16 +00:00
Mark Dumay
54ec23c85a Merge branch 'main' into develop 2023-10-23 13:44:21 +02:00
mark
d97b88bcdd Bump package release 2023-10-23 13:43:50 +02:00
mark
6f5c7626c8 Improve modal search 2023-10-23 13:43:12 +02:00
Mark Dumay
0e1525ca7f Merge pull request #580 from gethinode/develop
Refactor image partial
2023-10-23 11:45:43 +02:00
Mark Dumay
f6b520fb30 Merge branch 'main' into develop 2023-10-23 11:35:41 +02:00
mark
a1849663cf Refactor image partial 2023-10-23 11:35:12 +02:00
Mark Dumay
d4d0b075ed Merge pull request #579 from gethinode/develop
Fix accessibility of featured thumbnail
2023-10-23 11:34:52 +02:00
Mark Dumay
e90bb990e8 Merge branch 'main' into develop 2023-10-23 11:25:53 +02:00
mark
a9808cab34 Fix accessibility of featured thumbnail 2023-10-23 11:25:06 +02:00
Mark Dumay
a40bb78a07 Merge pull request #578 from gethinode/develop
Improve brand logo accessibility
2023-10-23 11:24:10 +02:00
Mark Dumay
8111ee0c76 Merge branch 'main' into develop 2023-10-23 11:16:04 +02:00
Mark Dumay
7191b57318 Merge pull request #577 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2023-10-23 11:15:41 +02:00
mark
f44670d2ca Improve brand logo accessibility 2023-10-23 11:14:52 +02:00
markdumay
9671f0c2eb fix: update Hugo module dependencies 2023-10-23 03:16:26 +00:00
Mark Dumay
6ad6eef347 Merge pull request #576 from gethinode/develop
Fix buttons
2023-10-22 15:27:55 +02:00
Mark Dumay
43ed4d411e Merge branch 'main' into develop 2023-10-22 15:20:11 +02:00
mark
7c8d5453cc Update dependencies 2023-10-22 15:19:24 +02:00
mark
f4a40367f6 Fix close button image 2023-10-22 15:19:12 +02:00
mark
e786ef279a Fix close button aria labels 2023-10-22 14:39:24 +02:00
mark
a6684e1bb5 Fix close button aria label 2023-10-22 14:28:51 +02:00
Mark Dumay
4fbe389245 Merge pull request #575 from gethinode/develop
Improve layout
2023-10-22 13:42:32 +02:00
Mark Dumay
04b0af5d58 Merge branch 'main' into develop 2023-10-22 12:55:37 +02:00
mark
7f797af3eb Sort actions by weight 2023-10-22 12:52:33 +02:00
mark
4a3a0fb0bb Fix gap between CTA buttons 2023-10-22 12:39:33 +02:00
mark
f9e9eec611 Fix vertical centering of button icon 2023-10-22 12:38:10 +02:00
mark
cb71742a91 Fix spacing between button rows 2023-10-22 12:32:13 +02:00
mark
638c7054d0 Bump package release 2023-10-22 08:43:14 +02:00
mark
fb21633f8c Fix support of floating numbers 2023-10-22 08:42:45 +02:00
mark
9bb7cf1825 Set dimensions of vector image in light/dark mode 2023-10-22 08:42:18 +02:00
Mark Dumay
e00ad4498b Merge pull request #574 from gethinode/develop
Fix section menu initialization
2023-10-21 15:14:40 +02:00
Mark Dumay
a0f7e62616 Merge branch 'main' into develop 2023-10-21 14:56:17 +02:00
mark
11653015ab Fix section menu initialization 2023-10-21 14:55:38 +02:00
mark
e6a37cab0f Fix typos 2023-10-21 14:53:39 +02:00
Mark Dumay
7fcc6713a4 Merge pull request #573 from gethinode/develop
Fix alignment of 404 message
2023-10-21 08:19:52 +02:00
Mark Dumay
5694938b81 Merge branch 'main' into develop 2023-10-21 07:53:05 +02:00
mark
b6d3c17a87 Bump package release 2023-10-21 07:52:33 +02:00
mark
40ba175409 Fix alignment of 404 message 2023-10-21 07:51:37 +02:00
Mark Dumay
bcc98d507b Merge pull request #571 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2023-10-21 06:16:48 +02:00
Mark Dumay
ce1c32c930 Merge branch 'main' into hugo-mod-dependencies 2023-10-21 05:58:14 +02:00
Mark Dumay
08d462f698 Merge pull request #572 from gethinode/develop
Refine base layout
2023-10-21 05:57:20 +02:00
Mark Dumay
d32e615837 Merge branch 'main' into develop 2023-10-21 05:49:58 +02:00
mark
83368cdf3a Bump package version 2023-10-21 05:49:14 +02:00
mark
45525a6e3c Set explicit default values 2023-10-21 05:48:33 +02:00
mark
75a082c8df Update build stats 2023-10-21 05:48:24 +02:00
mark
d3d4d99fe4 Set explicit default values 2023-10-21 05:48:19 +02:00
mark
f05764d4a8 Update build stats 2023-10-21 05:48:08 +02:00
mark
a7822fcd55 Refine base layout 2023-10-21 05:48:00 +02:00
mark
f0a0d2022a Enable wrapper for button 2023-10-20 14:53:13 +02:00
markdumay
2ccc85926e fix: update Hugo module dependencies 2023-10-20 03:15:48 +00:00
Mark Dumay
b9699ab8bc Merge pull request #570 from gethinode/develop
Support content view templates for single pages
2023-10-18 15:20:09 +02:00
Mark Dumay
02ca7271fc Merge branch 'main' into develop 2023-10-18 15:09:50 +02:00
mark
9dbe4bc8a1 Support content view templates for single pages 2023-10-18 15:09:14 +02:00
Mark Dumay
2ca20096a0 Merge pull request #569 from gethinode/develop
Use redirect for more button when applicable
2023-10-18 13:35:29 +02:00
Mark Dumay
1d7e8e3adb Merge branch 'main' into develop 2023-10-18 13:18:13 +02:00
mark
88c897e09c Use redirect for more button when applicable 2023-10-18 13:17:28 +02:00
Mark Dumay
f1a1ec128f Merge pull request #568 from gethinode/develop
Refactor link partial and shortcode
2023-10-18 13:15:05 +02:00
Mark Dumay
b0bc03f251 Merge branch 'main' into develop 2023-10-18 13:08:35 +02:00
mark
0f57e9ad1d Bump package release 2023-10-18 13:07:39 +02:00
mark
8b27c8986b Refactor link partial and shortcode 2023-10-18 13:06:57 +02:00
mark
1210117922 Standardize padding 2023-10-18 13:00:49 +02:00
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
81 changed files with 2348 additions and 8264 deletions

View File

@@ -11,8 +11,8 @@
{{- end -}} {{- end -}}
{{- $pc := .Site.Config.Privacy.GoogleAnalytics -}} {{- $pc := .Site.Config.Privacy.GoogleAnalytics -}}
{{- if (and (not .Site.IsServer) (not $pc.Disable)) -}} {{- if (and (not hugo.IsServer) (not $pc.Disable)) -}}
{{ with .Site.GoogleAnalytics -}} {{ with .Site.Config.Services.GoogleAnalytics.ID -}}
{{ if hasPrefix . "G-"}} {{ if hasPrefix . "G-"}}
{{ template "__ga_js_set_doNotTrack" $ }} {{ template "__ga_js_set_doNotTrack" $ }}

View File

@@ -5,6 +5,7 @@
// Include default variable overrides // Include default variable overrides
@import "common/variables-dart.scss"; // note: modified for dart-sass @import "common/variables-dart.scss"; // note: modified for dart-sass
@import "theme/variables.scss";
@import "common/icons.scss"; @import "common/icons.scss";
// Import Bootstrap configuration (mounted by core Bootstrap module) // Import Bootstrap configuration (mounted by core Bootstrap module)
@@ -14,10 +15,11 @@
@import "common/variables-dark.scss"; @import "common/variables-dark.scss";
// Import Hinode theme styles // Import Hinode theme styles
@import "components/abbr.scss";
@import "components/alert.scss"; @import "components/alert.scss";
@import "components/blockquote.scss"; @import "components/blockquote.scss";
@import "components/breadcrumb.scss"; @import "components/breadcrumb.scss";
@import "components/buttons.scss"; @import "components/button.scss";
@import "components/card.scss"; @import "components/card.scss";
@import "components/carousel.scss"; @import "components/carousel.scss";
@import "components/clipboard.scss"; @import "components/clipboard.scss";
@@ -25,6 +27,7 @@
@import "components/comments.scss"; @import "components/comments.scss";
@import "components/feature.scss"; @import "components/feature.scss";
@import "components/footer.scss"; @import "components/footer.scss";
@import "components/nav.scss";
@import "components/navbar.scss"; @import "components/navbar.scss";
@import "components/img.scss"; @import "components/img.scss";
@import "components/pagination.scss"; @import "components/pagination.scss";

View File

@@ -3,6 +3,7 @@
// Include default variable overrides // Include default variable overrides
@import "common/variables.scss"; @import "common/variables.scss";
@import "theme/variables.scss";
@import "common/icons.scss"; @import "common/icons.scss";
// Import Bootstrap configuration (mounted by core Bootstrap module) // Import Bootstrap configuration (mounted by core Bootstrap module)
@@ -12,10 +13,11 @@
@import "common/variables-dark.scss"; @import "common/variables-dark.scss";
// Import Hinode theme styles // Import Hinode theme styles
@import "components/abbr.scss";
@import "components/alert.scss"; @import "components/alert.scss";
@import "components/blockquote.scss"; @import "components/blockquote.scss";
@import "components/breadcrumb.scss"; @import "components/breadcrumb.scss";
@import "components/buttons.scss"; @import "components/button.scss";
@import "components/card.scss"; @import "components/card.scss";
@import "components/carousel.scss"; @import "components/carousel.scss";
@import "components/clipboard.scss"; @import "components/clipboard.scss";
@@ -23,6 +25,7 @@
@import "components/comments.scss"; @import "components/comments.scss";
@import "components/feature.scss"; @import "components/feature.scss";
@import "components/footer.scss"; @import "components/footer.scss";
@import "components/nav.scss";
@import "components/navbar.scss"; @import "components/navbar.scss";
@import "components/img.scss"; @import "components/img.scss";
@import "components/pagination.scss"; @import "components/pagination.scss";

View File

@@ -15,6 +15,12 @@ a:active {
min-height: 100vh; min-height: 100vh;
} }
.fullcover {
--navbar-height: #{$navbar-height};
min-height: calc(100vh - var(--navbar-height));
}
.fullscreen { .fullscreen {
--navbar-offset: #{$navbar-offset}; --navbar-offset: #{$navbar-offset};

View File

@@ -18,6 +18,7 @@ strong {
font-weight: 600 if($enable-important-utilities, !important, null); font-weight: 600 if($enable-important-utilities, !important, null);
} }
$navbar-height: h.$navbar-height;
$navbar-offset: h.$navbar-offset; $navbar-offset: h.$navbar-offset;
$primary: h.$primary; $primary: h.$primary;
$secondary: h.$secondary; $secondary: h.$secondary;
@@ -39,4 +40,8 @@ $primary-text-emphasis-dark: mix(white, h.$primary, h.$dark-mode-tint) !d
$secondary-text-emphasis-dark: mix(white, h.$secondary, 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; $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-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; $primary-border-subtle-dark: mix(black, h.$primary, calc(h.$dark-mode-shade / 2)) !default;
$dropdown-transition: opacity .15s ease-in-out !default;
$dropdown-horizontal-margin-top: calc((-1.5 * 1rem) - 2px);
$dropdown-horizontal-padding-y: calc(1rem + 2px);

View File

@@ -33,4 +33,10 @@ $secondary-text-emphasis-dark: mix(white, $secondary, $dark-mode-tint) !def
$link-color-dark: mix(white, $primary, $dark-mode-tint) !default; $link-color-dark: mix(white, $primary, $dark-mode-tint) !default;
$primary-bg-subtle-dark: mix(black, $primary, $dark-mode-shade) !default; $primary-bg-subtle-dark: mix(black, $primary, $dark-mode-shade) !default;
$primary-border-subtle-dark: mix(black, $primary, $dark-mode-shade / 2) !default; $primary-border-subtle-dark: mix(black, $primary, $dark-mode-shade / 2) !default;
// scss-docs-end color-mode // scss-docs-end color-mode
// scss-docs-start horizontal-nav
$dropdown-transition: opacity .15s ease-in-out !default;
$dropdown-horizontal-margin-top: calc((-1.5 * 1rem) - 2px);
$dropdown-horizontal-padding-y: calc(1rem + 2px);
// scss-docs-end horizontal-nav

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

@@ -28,3 +28,16 @@
background-color: transparent; background-color: transparent;
color: var(--bs-primary) if($enable-important-utilities, !important, null); color: var(--bs-primary) if($enable-important-utilities, !important, null);
} }
a.btn {
margin-top: $spacer * .25;
margin-bottom: $spacer * .25;
}
.btn-close {
background-color: transparent if($enable-important-utilities, !important, null);
background-image: var(--#{$prefix}btn-close-bg) if($enable-important-utilities, !important, null);
background-position: center if($enable-important-utilities, !important, null);
background-repeat: no-repeat if($enable-important-utilities, !important, null);
background-size: $btn-close-width if($enable-important-utilities, !important, null);
}

View File

@@ -0,0 +1,103 @@
.nav-tabs > .nav-link.active {
border-bottom-color: var(--bs-body-bg) !important;
border-bottom-style: solid !important;
z-index: 1;
}
.nav-callout {
--#{$prefix}nav-callout-bg: var(--#{$prefix}light);
--#{$prefix}nav-callout-active-bg: var(--bs-primary-bg-subtle);
--#{$prefix}nav-callout-gap: #{$nav-underline-gap};
column-gap: var(--#{$prefix}nav-callout-gap) !important;
}
.nav-callout > .tab-content {
background-color: var(--#{$prefix}nav-callout-bg);
padding: 2 * $spacer;
margin-top: 0 !important;
}
.nav-callout > .nav-link {
display: flex;
text-align: start;
vertical-align: text-top;
border-radius: 0;
padding: 0 0 (4 * $spacer) 0;
border-bottom: none;
}
.nav-callout > .nav-link.active {
background-image: linear-gradient(to top right, var(--#{$prefix}nav-callout-bg) 50%, transparent 0);
background-size: 50% (3 * $spacer);
background-repeat: no-repeat;
background-position: 50% bottom;
font-weight: 600;
color: var(--bs-nav-underline-link-active-color);
}
.nav-callout .accordion-button {
background-color: var(--#{$prefix}nav-callout-bg) !important;
border: solid;
border-color: var(--#{$prefix}border-color);
border-radius: var(--#{$prefix}accordion-inner-border-radius) !important;
margin-bottom: 0;
&:focus {
border-bottom: none !important;
box-shadow: none;
}
&:not(.collapsed) {
box-shadow: none;
}
}
.nav-callout > .accordion-item {
margin-top: 2 * $spacer;
margin-bottom: 2 * $spacer;
border: none;
}
.nav-callout .accordion-button[aria-expanded="false"] {
border-bottom: solid !important;
border-color: var(--#{$prefix}border-color) !important;
border-radius: var(--#{$prefix}accordion-inner-border-radius);
}
.nav-callout .accordion-button[aria-expanded="true"] {
border-color: var(--#{$prefix}border-color) !important;
border-bottom: none !important;
border-radius: var(--#{$prefix}accordion-inner-border-radius) var(--#{$prefix}accordion-inner-border-radius) 0 0 !important;
padding-bottom: 3 * $spacer;
background-image: linear-gradient(to top right, var(--#{$prefix}nav-callout-active-bg) 50%, transparent 0);
background-size: 10% (2.5 * $spacer);
background-repeat: no-repeat;
background-position: 10% bottom;
}
.nav-callout .accordion-collapse {
background-color: var(--#{$prefix}nav-callout-active-bg) !important;
border-radius: 0 0 var(--#{$prefix}accordion-inner-border-radius) var(--#{$prefix}accordion-inner-border-radius);
border-top: none !important;
border-left: solid;
border-right: solid;
border-bottom: solid;
border-color: var(--#{$prefix}border-color);
}
@if $enable-dark-mode {
@include color-mode(dark) {
.nav-callout {
--#{$prefix}nav-callout-bg: var(--#{$prefix}tertiary-bg);
}
.nav-callout .accordion-button[aria-expanded="true"] {
background-image: linear-gradient(to top right, shade-color($primary, 70%) 50%, transparent 0);
}
.nav-callout .accordion-collapse {
background-color: shade-color($primary, 70%) !important;
}
}
}

View File

@@ -119,3 +119,73 @@
} }
// stylelint-enable annotation-no-unknown // stylelint-enable annotation-no-unknown
:root {
--dropdown-horizontal-bg: var(--#{$prefix}light);
}
@if $enable-dark-mode {
@include color-mode(dark) {
--dropdown-horizontal-bg: var(--#{$prefix}tertiary-bg);
}
}
.dropdown-horizontal {
@each $breakpoint in map-keys($grid-breakpoints) {
$next: breakpoint-next($breakpoint, $grid-breakpoints);
$infix: breakpoint-infix($next, $grid-breakpoints);
@include media-breakpoint-up($next) {
&#{$infix} {
position: static !important;
}
&#{$infix} > .dropdown-menu {
opacity: 0;
display: block;
visibility: hidden;
background-color: var(--dropdown-horizontal-bg) if($enable-important-utilities, !important, null);
width: 100%;
height: auto;
text-align: center;
border-radius: 0;
border: 0;
margin-top: $dropdown-horizontal-margin-top;
padding-top: $dropdown-horizontal-padding-y;
padding-bottom: $dropdown-horizontal-padding-y;
box-shadow: 0.125rem 0.25rem rgba(0, 0, 0, .075);
@include transition($dropdown-transition);
}
&#{$infix} > .dropdown-menu.show {
visibility: visible;
opacity: 1;
}
&#{$infix} > .dropdown-menu > li {
display: inline-block;
padding-left: $spacer;
padding-right: $spacer;
}
&#{$infix} > .dropdown-menu > li > a {
padding-left: .25 * $spacer;
padding-right: .25 * $spacer;
&.active,
&:hover,
&:focus {
color: var(--bs-body-color);
border-bottom: solid 1px var(--bs-navbar-hover-color);
margin-bottom: -1px;
background-color: transparent;
}
}
&#{$infix} > .nav-link.show {
background-color: var(--dropdown-horizontal-bg) if($enable-important-utilities, !important, null);
}
}
}
}

View File

@@ -75,6 +75,10 @@
.toc-button { .toc-button {
--bs-btn-color: var(--bs-body-color); --bs-btn-color: var(--bs-body-color);
--bs-btn-border-color: var(--bs-body-color); --bs-btn-border-color: var(--bs-body-color);
&:hover {
background-color: transparent;
}
} }
#toc-collapse { #toc-collapse {
@@ -89,4 +93,8 @@
} }
} }
} }
} }
.section-menu > .nav-link.active, .section-menu > .nav-link:hover {
color: var(--bs-primary);
}

View File

@@ -0,0 +1,2 @@
// Placeholder to quickly add your own theme variable overrides
// The file is included at the beginning of the build pipeline

View File

@@ -6,7 +6,6 @@ enableGitInfo = true
# toml-docs-end main # toml-docs-end main
# additional settings # additional settings
# googleAnalytics = "G-xxxxxxxxxx"
baseURL = "https://example.com/" baseURL = "https://example.com/"
canonifyURLs = false canonifyURLs = false
enableEmoji = true enableEmoji = true
@@ -73,6 +72,8 @@ home = ["HTML", "RSS", "REDIR"]
disableInlineCSS = true disableInlineCSS = true
[services.twitter] [services.twitter]
disableInlineCSS = true disableInlineCSS = true
[services.googleAnalytics]
# ID = "G-xxxxxxxxxx"
[outputFormats] [outputFormats]
[outputFormats.XML] [outputFormats.XML]
@@ -83,10 +84,16 @@ home = ["HTML", "RSS", "REDIR"]
permalinkable = false permalinkable = false
name = "xml" name = "xml"
[minify]
[minify.tdewolff.js]
keepVarNames = true
precision = 0
version = 2022
[module] [module]
[module.hugoVersion] [module.hugoVersion]
extended = true extended = true
min = "0.110.0" min = "0.120.0"
max = "" max = ""
[[module.mounts]] [[module.mounts]]
source = "archetypes" source = "archetypes"

View File

@@ -6,6 +6,8 @@
modes = ["light", "dark"] modes = ["light", "dark"]
canonifyAssetsURLs = false canonifyAssetsURLs = false
endorse = true endorse = true
footerBelowFold = false
loading = "lazy"
[main.externalLinks] [main.externalLinks]
cue = false cue = false
tab = false tab = false
@@ -59,6 +61,8 @@
anchor = true anchor = true
logo = "/img/logo_icon.svg" logo = "/img/logo_icon.svg"
color = "body" color = "body"
fixed = true
horizontal = false
offset = "5.5rem" offset = "5.5rem"
search = true search = true
searchModal = false searchModal = false

View File

@@ -14,6 +14,7 @@ const purgecss = require('@fullhuman/postcss-purgecss')({
...whitelister([ ...whitelister([
'./assets/scss/components/_clipboard.scss', './assets/scss/components/_clipboard.scss',
'./assets/scss/components/_command.scss', './assets/scss/components/_command.scss',
'./assets/scss/components/_nav.scss',
'./assets/scss/components/_navbar.scss', './assets/scss/components/_navbar.scss',
'./assets/scss/components/_search.scss', './assets/scss/components/_search.scss',
'./assets/scss/components/_syntax.scss', './assets/scss/components/_syntax.scss',
@@ -27,6 +28,7 @@ const purgecss = require('@fullhuman/postcss-purgecss')({
'./_vendor/github.com/gethinode/mod-leaflet/dist/leaflet.scss', './_vendor/github.com/gethinode/mod-leaflet/dist/leaflet.scss',
'./_vendor/github.com/twbs/bootstrap/scss/_carousel.scss', './_vendor/github.com/twbs/bootstrap/scss/_carousel.scss',
'./_vendor/github.com/twbs/bootstrap/scss/_dropdown.scss', './_vendor/github.com/twbs/bootstrap/scss/_dropdown.scss',
'./_vendor/github.com/twbs/bootstrap/scss/_modal.scss',
'./_vendor/github.com/twbs/bootstrap/scss/_reboot.scss', './_vendor/github.com/twbs/bootstrap/scss/_reboot.scss',
'./_vendor/github.com/twbs/bootstrap/scss/_tooltip.scss', './_vendor/github.com/twbs/bootstrap/scss/_tooltip.scss',
'./_vendor/github.com/twbs/bootstrap/scss/_transitions.scss', './_vendor/github.com/twbs/bootstrap/scss/_transitions.scss',

View File

@@ -5,7 +5,6 @@ paginate = 9
enableGitInfo = true enableGitInfo = true
# additional settings # additional settings
googleAnalytics = "G-T85PPZ36GN"
baseURL = "https://demo.gethinode.com/" baseURL = "https://demo.gethinode.com/"
canonifyURLs = false canonifyURLs = false
enableEmoji = true enableEmoji = true
@@ -63,6 +62,8 @@ home = ["HTML", "RSS", "REDIR"]
disableInlineCSS = true disableInlineCSS = true
[services.twitter] [services.twitter]
disableInlineCSS = true disableInlineCSS = true
[services.googleAnalytics]
ID = "G-T85PPZ36GN"
[outputFormats] [outputFormats]
[outputFormats.XML] [outputFormats.XML]
@@ -73,6 +74,12 @@ home = ["HTML", "RSS", "REDIR"]
permalinkable = false permalinkable = false
name = "xml" name = "xml"
[minify]
[minify.tdewolff.js]
keepVarNames = true
precision = 0
version = 2022
[module] [module]
replacements = 'github.com/gethinode/hinode -> ../..' replacements = 'github.com/gethinode/hinode -> ../..'
[[module.imports]] [[module.imports]]

View File

@@ -4,6 +4,8 @@
enableDarkMode = true enableDarkMode = true
modes = ["light", "dark"] modes = ["light", "dark"]
canonifyAssetsURLs = false canonifyAssetsURLs = false
footerBelowFold = false
loading = "lazy"
[main.externalLinks] [main.externalLinks]
cue = true cue = true
tab = true tab = true
@@ -15,6 +17,8 @@
optional = ["leaflet", "katex", "lottie"] optional = ["leaflet", "katex", "lottie"]
excludeSCSS = ["bootstrap"] excludeSCSS = ["bootstrap"]
disableTemplate = ["katex"] disableTemplate = ["katex"]
[modules.katex]
state = "defer"
[modules.fontawesome] [modules.fontawesome]
inline = true inline = true
debug = true debug = true
@@ -47,6 +51,7 @@
logo = "/img/logo_icon.svg" logo = "/img/logo_icon.svg"
color = "body" color = "body"
fixed = true fixed = true
horizontal = false
offset = "5.5rem" offset = "5.5rem"
search = true search = true
searchModal = false searchModal = false

View File

@@ -14,6 +14,7 @@ const purgecss = require('@fullhuman/postcss-purgecss')({
...whitelister([ ...whitelister([
'./assets/scss/components/_clipboard.scss', './assets/scss/components/_clipboard.scss',
'./assets/scss/components/_command.scss', './assets/scss/components/_command.scss',
'./assets/scss/components/_nav.scss',
'./assets/scss/components/_navbar.scss', './assets/scss/components/_navbar.scss',
'./assets/scss/components/_search.scss', './assets/scss/components/_search.scss',
'./assets/scss/components/_syntax.scss', './assets/scss/components/_syntax.scss',
@@ -27,6 +28,7 @@ const purgecss = require('@fullhuman/postcss-purgecss')({
'./_vendor/github.com/gethinode/mod-leaflet/dist/leaflet.scss', './_vendor/github.com/gethinode/mod-leaflet/dist/leaflet.scss',
'./_vendor/github.com/twbs/bootstrap/scss/_carousel.scss', './_vendor/github.com/twbs/bootstrap/scss/_carousel.scss',
'./_vendor/github.com/twbs/bootstrap/scss/_dropdown.scss', './_vendor/github.com/twbs/bootstrap/scss/_dropdown.scss',
'./_vendor/github.com/twbs/bootstrap/scss/_modal.scss',
'./_vendor/github.com/twbs/bootstrap/scss/_reboot.scss', './_vendor/github.com/twbs/bootstrap/scss/_reboot.scss',
'./_vendor/github.com/twbs/bootstrap/scss/_tooltip.scss', './_vendor/github.com/twbs/bootstrap/scss/_tooltip.scss',
'./_vendor/github.com/twbs/bootstrap/scss/_transitions.scss', './_vendor/github.com/twbs/bootstrap/scss/_transitions.scss',

View File

@@ -294,9 +294,9 @@ As an example, the following shortcodes render links in different formats.
- {{</* link url="projects/another-project" /*/>}} - {{</* link url="projects/another-project" /*/>}}
- {{</* link url="/projects/another-project" /*/>}} - {{</* link url="/projects/another-project" /*/>}}
- {{</* link url="../projects/another-project" case=false /*/>}} - {{</* link url="../projects/another-project" case=false /*/>}}
- {{</* link "/about/" /*/>}} - {{</* link "about" /*/>}}
- {{</* link "/fr/about/" /*/>}} - {{</* link "/fr/a-propos/" /*/>}}
- {{</* link "/fr/about" >}}About (French){{< /link */>}} - {{</* link "/fr/a-propos" >}}About (French){{< /link */>}}
- {{</* link "#image" /*/>}} - {{</* link "#image" /*/>}}
- {{</* link "components/#map" /*/>}} - {{</* link "components/#map" /*/>}}

View File

@@ -295,7 +295,7 @@ Utilisez le shortcode `file` pour afficher et mettre en évidence le contenu com
- {{</* link url="projects/another-project" /*/>}} - {{</* link url="projects/another-project" /*/>}}
- {{</* link url="/projects/another-project" /*/>}} - {{</* link url="/projects/another-project" /*/>}}
- {{</* link url="../projects/another-project" case=false /*/>}} - {{</* link url="../projects/another-project" case=false /*/>}}
- {{</* link "/about/" /*/>}} - {{</* link "about" /*/>}}
- {{</* link "/en/about/" /*/>}} - {{</* link "/en/about/" /*/>}}
- {{</* link "/en/about" >}}About (Anglais){{< /link */>}} - {{</* link "/en/about" >}}About (Anglais){{< /link */>}}
- {{</* link "#image" /*/>}} - {{</* link "#image" /*/>}}
@@ -404,11 +404,11 @@ H{{</* sub 2 */>}}O est un liquide.
<!-- markdownlint-disable MD037 --> <!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}} {{< example lang="hugo" >}}
{{</* button toast="toast-example-1" */>}} {{</* button toast="toast-example-1" */>}}
Affiche la notifiaction #1 Affiche la notification #1
{{</* /button */>}} {{</* /button */>}}
{{</* button toast="toast-example-2" */>}} {{</* button toast="toast-example-2" */>}}
Affiche la notifiaction #1 Affiche la notification #1
{{</* /button */>}} {{</* /button */>}}
{{</* toast id="toast-example-1" header="Premier titre" */>}} {{</* toast id="toast-example-1" header="Premier titre" */>}}

View File

@@ -4,6 +4,8 @@ github.com/gethinode/mod-bootstrap v1.2.0 h1:JkTcImU3qpi25WgKvUxUYiMoiXtrxrG+Wf/
github.com/gethinode/mod-bootstrap v1.2.0/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8= 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 h1:z54dgsbhShhlri+X77Z+yLrg0wz/f8C8ojA/wnlhsJc=
github.com/gethinode/mod-bootstrap v1.2.1/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8= github.com/gethinode/mod-bootstrap v1.2.1/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
github.com/gethinode/mod-bootstrap v1.2.2 h1:Q8E04OKWr9owk7nhQ/NBukUgSFhsECxZsOLEaf5oeiQ=
github.com/gethinode/mod-bootstrap v1.2.2/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
github.com/gethinode/mod-flexsearch v1.2.0 h1:SSMpWzK9SMbi9QRYfil9PJZLLWWLHWzlTc69UxtSWAA= 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.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 h1:RbfEDw219Y1rOVp9lHmy5ePdF9lyPalDu2J5oVeejrU=
@@ -14,6 +16,8 @@ github.com/gethinode/mod-flexsearch v1.4.1 h1:z+GKvhJ4v6BsZsWVZRgbO9WcmSZEVUkb3Q
github.com/gethinode/mod-flexsearch v1.4.1/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4= 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 h1:9fYlnHgiEXckL0EoC0zlSNO7BWZf5yiOroSWT13Kphc=
github.com/gethinode/mod-flexsearch v1.5.1/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4= github.com/gethinode/mod-flexsearch v1.5.1/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
github.com/gethinode/mod-flexsearch v1.6.0 h1:Rjx+GLOByFLmaWD9hZXwmuKN8A89te6BZAIq2c9QBKg=
github.com/gethinode/mod-flexsearch v1.6.0/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
github.com/gethinode/mod-fontawesome v1.2.4 h1:SqE3CQ+boaBIhrVh3MPu4nz0uoHPfEH5t60nNY1CfsI= github.com/gethinode/mod-fontawesome v1.2.4 h1:SqE3CQ+boaBIhrVh3MPu4nz0uoHPfEH5t60nNY1CfsI=
github.com/gethinode/mod-fontawesome v1.2.4/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI= 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 h1:RqkLRj6+s+gM4nKd0IwNMMDA8cRmxfp0fxkVH4FdAGU=
@@ -33,6 +37,8 @@ github.com/gethinode/mod-katex v1.0.2 h1:pIG4n3qLl/IVe7BEiwn+GL8r5lOCtF6FDxlcrPK
github.com/gethinode/mod-katex v1.0.2/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg= 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 h1:fvlUWqcUQqv2zRNM2kfmJ6GhXA816Tl1nfVrUkmBStI=
github.com/gethinode/mod-katex v1.0.3/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg= github.com/gethinode/mod-katex v1.0.3/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
github.com/gethinode/mod-katex v1.0.4 h1:NozgWPFnHhx1W+E9DnwMTRpvxPbdqdANEtwp9N3/mj8=
github.com/gethinode/mod-katex v1.0.4/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
github.com/gethinode/mod-leaflet v0.3.4 h1:oY+YQ0JiJuhFQNrk9XgFdg0NMsTUQPXNfnILp4ia4r4= 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.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 h1:69Bv/6zRXhbcTzo7TMr58h3ry47srHRpM1k81LrLbYU=

View File

@@ -54,12 +54,11 @@
"alert", "alert",
"alert-danger", "alert-danger",
"alert-dismissible", "alert-dismissible",
"align-content-center",
"align-items-center", "align-items-center",
"align-items-end", "align-items-end",
"align-items-start",
"align-middle", "align-middle",
"align-self-center", "align-self-center",
"align-self-end",
"anchor", "anchor",
"badge", "badge",
"bg-body", "bg-body",
@@ -120,6 +119,7 @@
"col-6", "col-6",
"col-8", "col-8",
"col-9", "col-9",
"col-auto",
"col-lg-4", "col-lg-4",
"col-lg-8", "col-lg-8",
"col-md-10", "col-md-10",
@@ -199,19 +199,16 @@
"fab", "fab",
"fade", "fade",
"fas", "fas",
"feature",
"figure-caption", "figure-caption",
"fixed-top", "fixed-top",
"flex-column", "flex-column",
"flex-fill", "flex-fill",
"flex-grow-1", "flex-grow-1",
"flex-wrap",
"font-monospace", "font-monospace",
"footer", "footer",
"form-control", "form-control",
"fs-3", "fs-3",
"fs-5", "fs-5",
"fw-30",
"fw-bold", "fw-bold",
"fw-semibold", "fw-semibold",
"g-0", "g-0",
@@ -219,7 +216,6 @@
"g-4", "g-4",
"gap-1", "gap-1",
"gap-2", "gap-2",
"gap-3",
"gradient", "gradient",
"h-100", "h-100",
"h1", "h1",
@@ -317,7 +313,6 @@
"ps-1", "ps-1",
"ps-3", "ps-3",
"ps-xl-3", "ps-xl-3",
"pt-4",
"pt-5", "pt-5",
"pt-md-3", "pt-md-3",
"px-4", "px-4",
@@ -325,6 +320,7 @@
"py-1", "py-1",
"py-2", "py-2",
"py-3", "py-3",
"py-5",
"py-md-1", "py-md-1",
"ratio", "ratio",
"ratio-16x9", "ratio-16x9",

9
go.mod
View File

@@ -3,10 +3,13 @@ module github.com/gethinode/hinode
go 1.19 go 1.19
require ( require (
github.com/gethinode/mod-bootstrap v1.2.1 // indirect github.com/airbnb/lottie-web v5.12.2+incompatible // indirect
github.com/gethinode/mod-flexsearch v1.5.1 // indirect github.com/gethinode/mod-bootstrap v1.2.2 // indirect
github.com/gethinode/mod-flexsearch v1.6.0 // indirect
github.com/gethinode/mod-fontawesome v1.5.0 // indirect github.com/gethinode/mod-fontawesome v1.5.0 // indirect
github.com/gethinode/mod-katex v1.0.3 // indirect github.com/gethinode/mod-katex v1.0.4 // indirect
github.com/gethinode/mod-leaflet v0.3.5 // indirect github.com/gethinode/mod-leaflet v0.3.5 // indirect
github.com/gethinode/mod-lottie v1.3.0 // indirect github.com/gethinode/mod-lottie v1.3.0 // indirect
github.com/nextapps-de/flexsearch v0.0.0-20230711092928-1243fd883ec3 // indirect
github.com/twbs/bootstrap v5.3.2+incompatible // indirect
) )

12
go.sum
View File

@@ -1,3 +1,5 @@
github.com/airbnb/lottie-web v5.12.2+incompatible h1:Ldogtlhiucf7mMsgisyxSBY0qunV44+lpa9Icy2KoQc=
github.com/airbnb/lottie-web v5.12.2+incompatible/go.mod h1:nTss557UK9FGnp8QYlCMO29tjUHwbdAHG/DprbGfHGE=
github.com/gethinode/mod-bootstrap v1.0.1 h1:NDZar+UEL42YHCvzzO+jVgqkZU5INA12BpjX3y6U4I4= github.com/gethinode/mod-bootstrap v1.0.1 h1:NDZar+UEL42YHCvzzO+jVgqkZU5INA12BpjX3y6U4I4=
github.com/gethinode/mod-bootstrap v1.0.1/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8= github.com/gethinode/mod-bootstrap v1.0.1/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
github.com/gethinode/mod-bootstrap v1.1.0 h1:BbalsW8kmFhv+J+dcc41TGcjIlM/p69AB0h0oGhAXIU= github.com/gethinode/mod-bootstrap v1.1.0 h1:BbalsW8kmFhv+J+dcc41TGcjIlM/p69AB0h0oGhAXIU=
@@ -8,6 +10,8 @@ github.com/gethinode/mod-bootstrap v1.2.0 h1:JkTcImU3qpi25WgKvUxUYiMoiXtrxrG+Wf/
github.com/gethinode/mod-bootstrap v1.2.0/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8= 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 h1:z54dgsbhShhlri+X77Z+yLrg0wz/f8C8ojA/wnlhsJc=
github.com/gethinode/mod-bootstrap v1.2.1/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8= github.com/gethinode/mod-bootstrap v1.2.1/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
github.com/gethinode/mod-bootstrap v1.2.2 h1:Q8E04OKWr9owk7nhQ/NBukUgSFhsECxZsOLEaf5oeiQ=
github.com/gethinode/mod-bootstrap v1.2.2/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
github.com/gethinode/mod-flexsearch v1.0.1 h1:FJkRsUzSnQTXl3MWCigT4E6vfff870UWTnkGqaDGIhA= github.com/gethinode/mod-flexsearch v1.0.1 h1:FJkRsUzSnQTXl3MWCigT4E6vfff870UWTnkGqaDGIhA=
github.com/gethinode/mod-flexsearch v1.0.1/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4= github.com/gethinode/mod-flexsearch v1.0.1/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
github.com/gethinode/mod-flexsearch v1.1.0 h1:7BCMyQDlYlskNXuazt8Jg/jg9WREexu2xVkYqThkAX4= github.com/gethinode/mod-flexsearch v1.1.0 h1:7BCMyQDlYlskNXuazt8Jg/jg9WREexu2xVkYqThkAX4=
@@ -30,6 +34,8 @@ github.com/gethinode/mod-flexsearch v1.4.1 h1:z+GKvhJ4v6BsZsWVZRgbO9WcmSZEVUkb3Q
github.com/gethinode/mod-flexsearch v1.4.1/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4= 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 h1:9fYlnHgiEXckL0EoC0zlSNO7BWZf5yiOroSWT13Kphc=
github.com/gethinode/mod-flexsearch v1.5.1/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4= github.com/gethinode/mod-flexsearch v1.5.1/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
github.com/gethinode/mod-flexsearch v1.6.0 h1:Rjx+GLOByFLmaWD9hZXwmuKN8A89te6BZAIq2c9QBKg=
github.com/gethinode/mod-flexsearch v1.6.0/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
github.com/gethinode/mod-fontawesome v1.0.2 h1:ZSK6D20/w4y5GnfYfTBB58uHD0ChIfkpKfRGwioS9rg= github.com/gethinode/mod-fontawesome v1.0.2 h1:ZSK6D20/w4y5GnfYfTBB58uHD0ChIfkpKfRGwioS9rg=
github.com/gethinode/mod-fontawesome v1.0.2/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI= github.com/gethinode/mod-fontawesome v1.0.2/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
github.com/gethinode/mod-fontawesome v1.1.0 h1:rsDzUI+3ZlS/do2ff3ne8/z3KwHeysmuA+WsXlumXXk= github.com/gethinode/mod-fontawesome v1.1.0 h1:rsDzUI+3ZlS/do2ff3ne8/z3KwHeysmuA+WsXlumXXk=
@@ -64,6 +70,8 @@ github.com/gethinode/mod-katex v1.0.2 h1:pIG4n3qLl/IVe7BEiwn+GL8r5lOCtF6FDxlcrPK
github.com/gethinode/mod-katex v1.0.2/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg= 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 h1:fvlUWqcUQqv2zRNM2kfmJ6GhXA816Tl1nfVrUkmBStI=
github.com/gethinode/mod-katex v1.0.3/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg= github.com/gethinode/mod-katex v1.0.3/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
github.com/gethinode/mod-katex v1.0.4 h1:NozgWPFnHhx1W+E9DnwMTRpvxPbdqdANEtwp9N3/mj8=
github.com/gethinode/mod-katex v1.0.4/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
github.com/gethinode/mod-leaflet v0.2.3 h1:QQI4h+IH0jZ7fx4q0um2YIEiYBoW3OAfW8qHzbRCDPk= github.com/gethinode/mod-leaflet v0.2.3 h1:QQI4h+IH0jZ7fx4q0um2YIEiYBoW3OAfW8qHzbRCDPk=
github.com/gethinode/mod-leaflet v0.2.3/go.mod h1:uGggt87x4Fw7wBoJpSiUvNkYg+s/Ujne7klAX2rxMRk= github.com/gethinode/mod-leaflet v0.2.3/go.mod h1:uGggt87x4Fw7wBoJpSiUvNkYg+s/Ujne7klAX2rxMRk=
github.com/gethinode/mod-leaflet v0.3.1 h1:H5MaOa+BB1KuVw7abTqfIn/SNzzRsAyx/WQoSe+2Ykc= github.com/gethinode/mod-leaflet v0.3.1 h1:H5MaOa+BB1KuVw7abTqfIn/SNzzRsAyx/WQoSe+2Ykc=
@@ -86,3 +94,7 @@ github.com/gethinode/mod-lottie v1.2.0 h1:9S0Y4PlEO66dIvFxayatmDEf8WWxqbLNLi4z56
github.com/gethinode/mod-lottie v1.2.0/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs= 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 h1:vQ8CXkjdp2IeFskTzu+ZnKOEio8GtN08urVK+oCH81E=
github.com/gethinode/mod-lottie v1.3.0/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs= github.com/gethinode/mod-lottie v1.3.0/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=
github.com/nextapps-de/flexsearch v0.0.0-20230711092928-1243fd883ec3 h1:H/qVR5O4BXjRjD+5PZB+r4ug2BSJ2Of4RtwOntd+OKo=
github.com/nextapps-de/flexsearch v0.0.0-20230711092928-1243fd883ec3/go.mod h1:5GdMfPAXzbA2gXBqTjC6l27kioSYzHlqDMh0+wyx7sU=
github.com/twbs/bootstrap v5.3.2+incompatible h1:tuiO5acc6xnZUR77Sbi5aKWXxjYxbmsSbJwYrhAKoQQ=
github.com/twbs/bootstrap v5.3.2+incompatible/go.mod h1:fZTSrkpSf0/HkL0IIJzvVspTt1r9zuf7XlZau8kpcY0=

View File

@@ -27,7 +27,6 @@
], ],
"classes": [ "classes": [
"active", "active",
"align-content-center",
"align-items-center", "align-items-center",
"align-self-center", "align-self-center",
"bg-body", "bg-body",
@@ -78,11 +77,10 @@
"fa-sun", "fa-sun",
"fab", "fab",
"fas", "fas",
"feature", "fixed-top",
"flex-column", "flex-column",
"flex-fill", "flex-fill",
"flex-grow-1", "flex-grow-1",
"flex-wrap",
"footer", "footer",
"form-control", "form-control",
"fs-3", "fs-3",
@@ -118,6 +116,7 @@
"navbar-brand", "navbar-brand",
"navbar-collapse", "navbar-collapse",
"navbar-expand-md", "navbar-expand-md",
"navbar-fixed-top",
"navbar-nav", "navbar-nav",
"navbar-toggler", "navbar-toggler",
"no-js", "no-js",
@@ -166,8 +165,7 @@
"toast-container", "toast-container",
"toast-header", "toast-header",
"toggler-icon", "toggler-icon",
"top-bar", "top-bar"
"w-100"
], ],
"ids": [ "ids": [
"-theme", "-theme",

View File

@@ -65,6 +65,8 @@
translation: "Startseite" translation: "Startseite"
- id: languageSwitcherLabel - id: languageSwitcherLabel
translation: "Sprache" translation: "Sprache"
- id: close
translation: "Schließen"
# Table of contents # Table of contents
- id: toc - id: toc

View File

@@ -71,12 +71,16 @@
translation: "Home" translation: "Home"
- id: languageSwitcherLabel - id: languageSwitcherLabel
translation: "Language" translation: "Language"
- id: close
translation: "Close"
# Table of contents # Table of contents
- id: toc - id: toc
translation: "On this page" translation: "On this page"
- id: seeAlso - id: seeAlso
translation: "See also" translation: "See also"
- id: sectionMenu
translation: "Select a topic"
# Sidebar # Sidebar
- id: toggleSidebar - id: toggleSidebar

View File

@@ -67,6 +67,8 @@
translation: "Accueil" translation: "Accueil"
- id: languageSwitcherLabel - id: languageSwitcherLabel
translation: "Langage" translation: "Langage"
- id: close
translation: "Fermer"
# Table of contents # Table of contents
- id: toc - id: toc

View File

@@ -69,12 +69,16 @@
translation: "Home" translation: "Home"
- id: languageSwitcherLabel - id: languageSwitcherLabel
translation: "Taal" translation: "Taal"
- id: close
translation: "Sluiten"
# Table of contents # Table of contents
- id: toc - id: toc
translation: "Inhoudsopgave" translation: "Inhoudsopgave"
- id: seeAlso - id: seeAlso
translation: "Zie ook" translation: "Zie ook"
- id: sectionMenu
translation: "Selecteer een onderwerp"
# Sidebar # Sidebar
- id: toggleSidebar - id: toggleSidebar

View File

@@ -1,13 +1,15 @@
{{ define "main"}} {{ define "main"}}
<div class="container-xxl flex-fill d-flex align-content-center flex-wrap feature"> <div class="d-flex flex-fill">
<div class="w-100 text-center"> <div class="container-xxl my-auto">
<span class="text-secondary fw-bold"> <div class="text-center">
{{ partial "assets/icon.html" (dict "icon" "fa face-frown fa-10x") }} <span class="text-secondary fw-bold">
<p class="display-1 mt-3 fw-bold">404</p> {{ partial "assets/icon.html" (dict "icon" "fa face-frown fa-10x") }}
<p class="fs-3">{{ T "pageNotFoundTitle" }}</p> <p class="display-1 mt-3 fw-bold">404</p>
</span> <p class="fs-3">{{ T "pageNotFoundTitle" }}</p>
{{- $home := printf "<a href=\"%s\">%s</a>" ("/" | relLangURL) (T "pageNotFoundHome") -}} </span>
<p>{{ T "pageNotFound" $home | safeHTML }}</p> {{- $home := printf "<a href=\"%s\">%s</a>" ("/" | relLangURL) (T "pageNotFoundHome") -}}
<p>{{ T "pageNotFound" $home | safeHTML }}</p>
</div>
</div> </div>
</div> </div>
{{ end }} {{ end }}

View File

@@ -39,7 +39,14 @@
{{- errorf "Bootstrap is a required module, please add it to 'modules.core' in your site parameters" -}} {{- errorf "Bootstrap is a required module, please add it to 'modules.core' in your site parameters" -}}
{{- end -}} {{- end -}}
{{- $section := .Section }} {{- $fullCover := or (or (and .IsHome .Site.Params.home.fullCover) .Page.Params.fullCover) .Site.Params.main.footerBelowFold }}
{{- $.Scratch.Set "fullCover" $fullCover -}}
{{- /* Define section headings */ -}}
{{- $loading := "" -}}
{{- if $fullCover }}{{ $loading = .Site.Params.main.loading }}{{ end -}}
{{ $sections := partial "utilities/GetSections.html" (dict "page" . "loading" $loading) }}
{{- $.Scratch.Set "sections" $sections -}}
<!doctype html> <!doctype html>
<html lang="{{ .Site.Language.Lang }}" class="no-js"> <html lang="{{ .Site.Language.Lang }}" class="no-js">
@@ -49,22 +56,34 @@
<body> <body>
{{- partial "footer/scripts.html" (dict "filename" "js/critical.bundle.js" "match" "js/critical/**.js" "header" true "page" .) -}} {{- 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 .IsHome }}{{ with .Site.Params.home.style }} {{ . }}{{ end }}{{ end }}"> <div class="d-flex flex-column min-vh-100">
{{- partial "assets/navbar.html" (dict <div class="d-flex flex-column {{ if $fullCover }} fullscreen{{ end }}{{ if .IsHome }} {{ .Site.Params.home.style }}{{ end }}">
"page" . {{- partial "assets/navbar.html" (dict
"fixed" (string site.Params.navigation.fixed) "page" .
"color" site.Params.navigation.color "fixed" (string site.Params.navigation.fixed)
"style" (default "light" site.Params.navigation.style) "color" site.Params.navigation.color
"size" (default "md" site.Params.navigation.size)) "style" (default "light" site.Params.navigation.style)
-}} "size" (default "md" site.Params.navigation.size))
-}}
<div class="flex-fill main-content{{ if .Site.Params.main.footerBelowFold }} fullscreen{{ end }} pb-4"> <div class="main-content">
{{ block "main" . }}{{ end -}} {{ block "featured" . }}{{ end -}}
</div>
{{ if .Site.Params.main.footerBelowFold }}
{{ block "main" . }}{{ end -}}
{{ end }}
</div> </div>
{{ if not .Site.Params.main.footerBelowFold }}
{{ block "main" . }}{{ end -}}
{{- partial "footer/social.html" . -}}
{{- partial "footer/footer.html" . -}}
{{ end }}
</div>
{{ if .Site.Params.main.footerBelowFold }}
{{- partial "footer/social.html" . -}} {{- partial "footer/social.html" . -}}
{{- partial "footer/footer.html" . -}} {{- partial "footer/footer.html" . -}}
</div> {{ end }}
{{- partial "footer/toast-container.html" . -}} {{- partial "footer/toast-container.html" . -}}
{{- partialCached "footer/scripts.html" (dict "header" false "page" . "core" true) }} {{- partialCached "footer/scripts.html" (dict "header" false "page" . "core" true) }}

View File

@@ -1,135 +1,30 @@
{{- define "featured" }}
{{ .Render "list/header" }}
{{ end }}
{{- define "main" -}} {{- define "main" -}}
{{- $page := . -}} {{- $page := . -}}
{{- $orientation := site.Params.list.feature.orientation | default "horizontal" -}} {{- $sections := $.Scratch.Get "sections" -}}
{{- $width := site.Params.list.feature.width | default 6 -}} {{- $fullCover := $.Scratch.Get "fullCover" -}}
{{- $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 -}} {{- $layout := $page.Params.layout -}}
{{ if $page.IsHome }} <div class="container-xxl p-4 px-xxl-0">
{{- $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 ne $layout "featured" -}}
{{ if and (not $page.IsHome) site.Params.navigation.breadcrumb }} {{ if and (not $page.IsHome) site.Params.navigation.breadcrumb }}
<div>{{ partial "assets/breadcrumb.html" $page }}</div> <div>{{ partial "assets/breadcrumb.html" $page }}</div>
{{ end -}} {{ end -}}
{{- end -}} {{- end -}}
<div class="row row-cols-1 row-cols-sm-2"> {{ .Render "list/body" }}
<div class="col col-sm-12 col-md-8">
{{ if not $page.IsHome }} {{ .Render "list/footer" }}
{{ 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> </div>
{{/* Display generated sections */}} {{/* Display generated sections */}}
{{ $body | safeHTML }} {{ range $sections }}
{{ .content | safeHTML }}
{{ end }}
{{/* Fill remaining space to push page footer to viewport bottom */}}
<div class="container-fluid flex-fill"></div>
{{- end -}} {{- end -}}

View File

@@ -0,0 +1,23 @@
{{- $sections := $.Scratch.Get "sections" -}}
{{- $fullCover := $.Scratch.Get "fullCover" -}}
{{- $layout := .Params.layout -}}
<div class="row row-cols-1 row-cols-sm-2">
<div class="col col-sm-12 col-md-8">
{{ if not .IsHome }}
{{ with .Title }}<p id="{{ anchorize . }}" class="display-4 mt-5{{ if and $.IsHome site.Params.home.centerHeadline }} text-center{{ end }}">{{ . }}</p>{{ end }}
{{ end }}
{{ if (.Params.menu) }}
{{- partial "assets/section-menu.html" . -}}
{{- end -}}
{{- $loading := "" -}}
{{- if or (eq $layout "featured") .IsHome -}}
{{- if $fullCover }}{{ $loading = site.Params.main.loading }}{{ end }}
{{ end }}
{{- $content := partial "utilities/ProcessContent" (dict "page" . "raw" .RawContent "loading" $loading) -}}
{{ $content | safeHTML }}
{{ if and (and $sections (eq (len $sections) 1)) (not $content) }}
<p class="pt-4">{{- T "emptyList" }}.</p>
{{ end }}
</div>
</div>

View File

@@ -0,0 +1 @@
{{/* Adds a custom footer directly below the list body */}}

View File

@@ -0,0 +1,35 @@
{{- $sections := $.Scratch.Get "sections" -}}
{{- $headings := slice }}
{{ if .Params.sectionMenu }}
{{ range $sections }}
{{ $headings = $headings | append .title }}
{{ end }}
{{ end }}
{{- $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" -}}
{{- $actions := .Params.actions -}}
{{- $layout := .Params.layout -}}
{{ if .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) -}}
{{ end }}
{{/* Display featured section */}}
{{- if or (eq $layout "featured") .IsHome -}}
{{- partial "list/featured.html" (dict
"page" .
"headings" $headings
"actions" $actions
"orientation" $orientation
"width" $width
"justify" $justify
"align" $align)
-}}
{{- end -}}

View File

@@ -1,118 +1,15 @@
{{- define "partials/header.html" -}} {{- define "partials/single-main.html" -}}
{{ if site.Params.navigation.breadcrumb }}{{ partial "assets/breadcrumb.html" . }}{{ end -}} {{ if .Site.Params.navigation.breadcrumb }}{{ partial "assets/breadcrumb.html" . }}{{ end -}}
{{ if in (slice "docs" "minimal") .Layout }}
{{ with .Title }}<p class="display-4 mt-5">{{ . }}</p>{{ end }}
{{ partial "assets/sharing.html" . }}
<p class="lead mb-5">{{ .Description }}</p>
{{ else }}
{{ $lastmodstr := (partial "utilities/date.html" (dict "date" .Lastmod "format" "long")) -}}
{{ $datestr := (partial "utilities/date.html" (dict "date" .Date "format" "long")) -}}
{{ with .Title }}<p class="display-4 mt-5">{{ . }}</p>{{ end }}
<small class="text-body-secondary text-uppercase">
{{ $datestr | i18n "postedOnDate" -}}
{{ if ne $datestr $lastmodstr -}}&nbsp;({{ $lastmodstr | i18n "lastModified" }}){{ end }} &bull;
{{ .ReadingTime | lang.FormatNumber 0 }}&nbsp;{{ i18n "minutesShort" }} {{ i18n "read" }} &bull;
{{ .WordCount | lang.FormatNumber 0 }}&nbsp;{{ i18n "words" }}
</small>
{{- if gt (len (.GetTerms "tags")) 0 -}} {{ .Render "single/header" }}
<div class="mt-3">
<div class="d-none-dark">
<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") }}
{{ end -}}
</div>
</div>
<div class="d-none-light">
<div class="hstack gap-3">
{{ range (.GetTerms "tags") -}}
{{- $url := (path.Join .Page.RelPermalink) | relLangURL -}}
{{ partial "assets/button.html" (dict "href" $url "title" .LinkTitle "color" "primary" "size" "sm" "outline" "true") }}
{{ end -}}
</div>
</div>
</div>
{{- end -}}
{{ partial "assets/sharing.html" . }}
<p class="lead mb-5 mt-3">{{ .Description }}</p>
{{ end }}
{{ end -}}
{{ define "partials/body.html" -}}
{{- if and .Site.Params.navigation.toc .Params.includeToc | default true -}} {{- if and .Site.Params.navigation.toc .Params.includeToc | default true -}}
<div class="d-md-none pb-5">{{ partial "assets/toc-dropdown.html" . }}</div> <div class="d-md-none pb-5">{{ partial "assets/toc-dropdown.html" . }}</div>
{{- end -}} {{- end -}}
{{ .Render "single/body" }}
{{ if not (in (slice "docs" "minimal") .Layout) }}
{{- $thumbnail := "" -}}
{{- $credits := "" -}}
{{- if reflect.IsMap .Params.Thumbnail -}}
{{- $thumbnail = .Params.Thumbnail.url -}}
{{- $author := "" -}}
{{- if and .Params.Thumbnail.authorURL "text" .Params.Thumbnail.author }}
{{- $author = partial "utilities/link" (dict "destination" .Params.Thumbnail.authorURL "text" .Params.Thumbnail.author) -}}
{{- else if .Params.Thumbnail.author }}
{{- $author = .Params.Thumbnail.author -}}
{{- end -}}
{{- $origin := "" -}}
{{- if and .Params.Thumbnail.originURL "text" .Params.Thumbnail.origin }}
{{- $origin = partial "utilities/link" (dict "destination" .Params.Thumbnail.originURL "text" .Params.Thumbnail.origin) -}}
{{- else if .Params.Thumbnail.origin }}
{{- $origin = .Params.Thumbnail.origin -}}
{{- end }}
{{- if and $author $origin }}
{{ $credits = printf (T "photoFull") $author $origin }}
{{ else if $author }}
{{ $credits = T "photoShort" $author }}
{{ end }}
{{ else }}
{{- $thumbnail = .Params.Thumbnail -}}
{{ if or .Params.photoCredits .Params.photoSource }}
{{ warnf "DEPRECATED: frontmatter variables `photoCredits` and `photoSource` have been deprecated in release v0.18: %s" .RelPermalink }}
{{ end }}
{{- if and .Params.photoCredits .Params.PhotoSource }}{{ $credits = printf (T "photoFull") .Params.photoCredits .Params.PhotoSource }}{{ end -}}
{{- end -}}
{{ if $thumbnail -}}
{{- partial "assets/image.html" (dict "url" $thumbnail "ratio" "21x9" "outerClass" "img-wrap" "innerClass" "rounded" "title" .Params.title "caption" $credits) -}}
{{ end -}}
{{ end }}
{{ partial "utilities/ProcessContent" (dict "page" .Page "raw" .RawContent) }} {{ partial "utilities/ProcessContent" (dict "page" .Page "raw" .RawContent) }}
{{ end -}}
{{ define "partials/footer.html" -}} {{ .Render "single/footer" }}
{{ if eq .Layout "docs" }}
<div class="mt-5 small">
{{ partial "utilities/git.html" . }}
</div>
{{ else if ne .Layout "minimal" }}
<div class="row row-cols-2 mt-5 mb-3">
<div class="col">
{{ with .NextInSection -}}
{{ $next := . -}}
{{ with .OutputFormats.Get "html" -}}
<a class="next" href="{{ $next.RelPermalink }}">
{{- partial "assets/icon.html" (dict "icon" "fas arrow-left") }}&nbsp;{{ $next.LinkTitle }}</a>
{{- end -}}
{{ end -}}
</div>
<div class="col text-end">
{{ with .PrevInSection -}}
{{ $prev := . -}}
{{ with .OutputFormats.Get "html" -}}
<a class="previous" href="{{ $prev.RelPermalink }}">{{ $prev.LinkTitle }}&nbsp;{{- partial "assets/icon.html" (dict "icon" "fas arrow-right") }}</a>
{{- end -}}
{{ end -}}
</div>
</div>
{{ end }}
{{- if and .Site.Params.comments.enabled .Params.showComments | default true -}} {{- if and .Site.Params.comments.enabled .Params.showComments | default true -}}
<hr> <hr>
{{ partial "assets/comments.html" . }} {{ partial "assets/comments.html" . }}
@@ -127,65 +24,59 @@
{{- $menu := .Scratch.Get "sidebar" -}} {{- $menu := .Scratch.Get "sidebar" -}}
{{- $version := .Scratch.Get "version" -}} {{- $version := .Scratch.Get "version" -}}
{{- $sidebar := .Site.Params.navigation.sidebar | default true -}}
{{ if and $menu $sidebar -}} {{ $sidebar := "" }}
{{- $hasSidebar := .Site.Params.navigation.sidebar | default true -}}
{{ if and $menu $hasSidebar }}{{ $sidebar = partial "assets/sidebar.html" (dict "page" . "menu" $menu "version" $version) }}{{ end }}
{{ $toc := "" }}
{{- $hasTOC := and .Site.Params.navigation.toc .Params.includeToc | default true -}}
{{ if $hasTOC }}{{ $toc = partial "assets/toc.html" (dict "page" . "download" $download) }}{{ end -}}
{{ with $sidebar -}}
<div class="offcanvas offcanvas-start" tabindex="-1" id="offcanvass-sidebar" aria-inledby="offcanvas-label"> <div class="offcanvas offcanvas-start" tabindex="-1" id="offcanvass-sidebar" aria-inledby="offcanvas-label">
<div class="offcanvas-header"> <div class="offcanvas-header">
<h5 class="offcanvas-title" id="offcanvas-label">{{ strings.FirstUpper .Section }}</h5> <h5 class="offcanvas-title" id="offcanvas-label">{{ strings.FirstUpper $.Section }}</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button> <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="{{ T "close" }}"></button>
</div> </div>
<div class="offcanvas-body"> <div class="offcanvas-body">
{{ partial "assets/sidebar" (dict "page" . "menu" $menu "version" $version) }} {{ . | safeHTML }}
</div> </div>
</div> </div>
{{ end }}
<div class="container-xxl p-4 px-xxl-0">
<div class="container-xxl flex-fill p-4 px-xxl-0">
{{ if and $menu $hasSidebar -}}
<div class="row row-cols-md-2 row-cols-lg-3"> <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"> <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) }} {{ $sidebar | safeHTML }}
</div> </div>
<div class="col col-md-9 col-lg-8 mb-5 p-4"> <div class="col col-md-9 col-lg-8 mb-5 p-4">
{{ partial "partials/header.html" . }} {{ partial "partials/single-main.html" . }}
{{ partial "partials/body.html" . }}
{{ partial "partials/footer.html" . }}
</div> </div>
<div class="col col-lg-2 d-none d-lg-block pt-5"> <div class="col col-lg-2 d-none d-lg-block pt-5">
{{- if and .Site.Params.navigation.toc .Params.includeToc | default true -}} {{ $toc | safeHTML }}
{{ partial "assets/toc.html" (dict "page" . "download" $download) -}}
{{ end -}}
</div> </div>
</div> </div>
</div> {{ else if $hasSidebar }}
{{ else if $sidebar }}
<div class="container-xxl px-3 px-xxl-0">
<div class="row row-cols-1 row-cols-sm-3"> <div class="row row-cols-1 row-cols-sm-3">
<div class="col col-md-2 d-none d-md-block"></div> <div class="col col-md-2 d-none d-md-block"></div>
<div class="col col-sm-12 col-md-8"> <div class="col col-sm-12 col-md-8">
{{ partial "partials/header.html" . }} {{ partial "partials/single-main.html" . }}
{{ partial "partials/body.html" . }}
{{ partial "partials/footer.html" . }}
</div> </div>
<div class="col col-md-2 d-none d-md-block"> <div class="col col-md-2 d-none d-md-block">
{{- if and .Site.Params.navigation.toc .Params.includeToc | default true -}} {{ $toc | safeHTML }}
{{ partial "assets/toc.html" (dict "page" . "download" $download) -}}
{{ end -}}
</div> </div>
</div> </div>
</div> {{ else }}
{{ else }}
<div class="container-xxl px-3 px-xxl-0">
<div class="row row-cols-1 row-cols-sm-2"> <div class="row row-cols-1 row-cols-sm-2">
<div class="col col-sm-12 col-md-9"> <div class="col col-sm-12 col-md-9">
{{ partial "partials/header.html" . }} {{ partial "partials/single-main.html" . }}
{{ partial "partials/body.html" . }}
{{ partial "partials/footer.html" . }}
</div> </div>
<div class="col col-md-3 d-none d-md-block"> <div class="col col-md-3 d-none d-md-block">
{{- if and .Site.Params.navigation.toc .Params.includeToc | default true -}} {{ $toc | safeHTML }}
{{ partial "assets/toc.html" (dict "page" . "download" $download) -}}
{{ end -}}
</div> </div>
</div> </div>
</div> {{ end -}}
{{ end -}} </div>
{{ end -}} {{ end -}}

View File

@@ -0,0 +1,2 @@
{{- partial "single/thumbnail.html" (dict "page" . "class" "mb-5") -}}

View File

@@ -0,0 +1,20 @@
<div class="row row-cols-2 mt-5 mb-3">
<div class="col">
{{ with .NextInSection -}}
{{ if .OutputFormats.Get "html" -}}
<a class="next" href="{{ .RelPermalink }}">
{{- partial "assets/icon.html" (dict "icon" "fas arrow-left" "spacing" false) }}&nbsp;{{ .LinkTitle }}
</a>
{{- end -}}
{{ end -}}
</div>
<div class="col text-end">
{{ with .PrevInSection -}}
{{ if .OutputFormats.Get "html" -}}
<a class="previous" href="{{ .RelPermalink }}">
{{ .LinkTitle }}&nbsp;{{- partial "assets/icon.html" (dict "icon" "fas arrow-right" "spacing" false) }}
</a>
{{- end -}}
{{ end -}}
</div>
</div>

View File

@@ -0,0 +1,33 @@
{{ $lastmodstr := (partial "utilities/date.html" (dict "date" .Lastmod "format" "long")) -}}
{{ $datestr := (partial "utilities/date.html" (dict "date" .Date "format" "long")) -}}
{{ with .Title }}<p class="display-4 mt-5">{{ . }}</p>{{ end }}
<small class="text-body-secondary text-uppercase">
{{ $datestr | i18n "postedOnDate" -}}
{{ if ne $datestr $lastmodstr -}}&nbsp;({{ $lastmodstr | i18n "lastModified" }}){{ end }} &bull;
{{ .ReadingTime | lang.FormatNumber 0 }}&nbsp;{{ i18n "minutesShort" }} {{ i18n "read" }} &bull;
{{ .WordCount | lang.FormatNumber 0 }}&nbsp;{{ i18n "words" }}
</small>
{{- if gt (len (.GetTerms "tags")) 0 -}}
<div class="mt-3">
<div class="d-none-dark">
<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") }}
{{ end -}}
</div>
</div>
<div class="d-none-light">
<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") }}
{{ end -}}
</div>
</div>
</div>
{{- end -}}
{{ partial "assets/sharing.html" . }}
<p class="lead mb-5 mt-3">{{ .Description }}</p>

View File

@@ -0,0 +1 @@
{{/* Intentionally left blank to suppress thumbnail */}}

View File

@@ -0,0 +1,3 @@
<div class="mt-5 small">
{{ partial "utilities/git.html" . }}
</div>

View File

@@ -0,0 +1,3 @@
{{ with .Title }}<p class="display-4 mt-5">{{ . }}</p>{{ end }}
{{ partial "assets/sharing.html" . }}
<p class="lead mb-5">{{ .Description }}</p>

View File

@@ -0,0 +1 @@
{{/* Intentionally left blank to suppress thumbnail */}}

View File

@@ -0,0 +1 @@
{{/* Intentionally left blank to suppress page navigation */}}

View File

@@ -0,0 +1,3 @@
{{ with .Title }}<p class="display-4 mt-5">{{ . }}</p>{{ end }}
{{ partial "assets/sharing.html" . }}
<p class="lead mb-5">{{ .Description }}</p>

View File

@@ -161,7 +161,7 @@
> >
<div class="d-flex justify-content-{{ $justify }}"> <div class="d-flex justify-content-{{ $justify }}">
<div class="my-auto">{{ $title | safeHTML }}</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 }} {{- with $icon }}<div class="align-self-center{{ if $title }}{{ if eq $order "first" }} order-first pe-1{{ else }} ps-1{{ end }}{{ end }}">{{ partial "assets/icon.html" (dict "icon" $icon "spacing" false) }}</div>{{ end }}
</div> </div>
{{- with $badge }} {{- with $badge }}

View File

@@ -144,6 +144,14 @@
{{- $ratio := .ratio -}} {{- $ratio := .ratio -}}
{{- $wrapper := .wrapper | default "p-0" -}} {{- $wrapper := .wrapper | default "p-0" -}}
{{- $loading := .loading -}}
{{- $validSettings := slice "lazy" "eager" -}}
{{- if $loading -}}
{{ if not (in $validSettings $loading) -}}
{{- errorf "partial [assets/card-group.html] - Invalid value for param 'loading': %s" $loading -}}
{{ end -}}
{{- end -}}
{{- if and (eq $cols 1) (eq $orientation "horizontal") }}{{ $orientation = "horizontal-sm" }}{{ end -}} {{- if and (eq $cols 1) (eq $orientation "horizontal") }}{{ $orientation = "horizontal-sm" }}{{ end -}}
<div class="container-fluid {{ $wrapper }}"> <div class="container-fluid {{ $wrapper }}">
@@ -157,6 +165,7 @@
"footer" $footer "footer" $footer
"orientation" $orientation "orientation" $orientation
"ratio" $ratio "ratio" $ratio
"loading" $loading
) -}} ) -}}
{{- $params = merge $params $element }} {{- $params = merge $params $element }}

View File

@@ -146,13 +146,21 @@
{{- end -}} {{- end -}}
{{- if eq $orientation "none" }}{{ $thumbnail = "" }}{{ $icon = "" }}{{ end -}} {{- if eq $orientation "none" }}{{ $thumbnail = "" }}{{ $icon = "" }}{{ end -}}
{{- $loading := .loading -}}
{{- $validSettings := slice "lazy" "eager" -}}
{{- if $loading -}}
{{ if not (in $validSettings $loading) -}}
{{- errorf "partial [assets/card.html] - Invalid value for param 'loading': %s" $loading -}}
{{ end -}}
{{- end -}}
{{ if ne $gutter "0" }}<div class="g-{{ $gutter }}">{{ end }} {{ if ne $gutter "0" }}<div class="g-{{ $gutter }}">{{ end }}
{{- if hasPrefix $orientation "horizontal" -}} {{- if hasPrefix $orientation "horizontal" -}}
<div class="card {{ with $color }}bg-{{ . }} text-bg-{{ . }}{{ end }} {{ $class }}"> <div class="card {{ with $color }}bg-{{ . }} text-bg-{{ . }}{{ end }} {{ $class }}">
<div class="row g-0 row-cols-1 h-100"> <div class="row g-0 row-cols-1 h-100">
<div class="col-4{{ if eq $orientation "horizontal-sm" }} col-md-2{{ end }}"> <div class="col-4{{ if eq $orientation "horizontal-sm" }} col-md-2{{ end }}">
{{- if $thumbnail -}} {{- if $thumbnail -}}
{{- 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) -}} {{- 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 "loading" $loading) -}}
{{- else if $icon -}} {{- else if $icon -}}
<div class="card-icon p-{{ $padding }} h-100 fa-wrapper d-flex align-items-center justify-content-center"> <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)) -}} {{- partial "assets/icon.html" (dict "icon" (printf "%s fa-fluid fa-fw" $icon)) -}}
@@ -173,7 +181,7 @@
{{- else -}} {{- else -}}
<div class="card {{ with $color }}bg-{{ . }} text-bg-{{ . }}{{ end }} {{ $class }}"> <div class="card {{ with $color }}bg-{{ . }} text-bg-{{ . }}{{ end }} {{ $class }}">
{{- if $thumbnail -}} {{- if $thumbnail -}}
{{- partial "assets/image.html" (dict "url" $thumbnail "ratio" (or $ratio "16x9") "outerClass" "card-img-wrap" "innerClass" "card-img-top" "title" (or $alt $title)) -}} {{- partial "assets/image.html" (dict "url" $thumbnail "ratio" (or $ratio "16x9") "outerClass" "card-img-wrap" "innerClass" "card-img-top" "title" (or $alt $title) "loading" $loading) -}}
{{- else if $icon -}} {{- else if $icon -}}
<div class="card-icon p-{{ $padding }}"> <div class="card-icon p-{{ $padding }}">
{{- partial "assets/icon.html" (dict "icon" (printf "%s fa-4x" $icon)) -}} {{- partial "assets/icon.html" (dict "icon" (printf "%s fa-4x" $icon)) -}}

View File

@@ -5,8 +5,16 @@
{{- $ratio := .ratio -}} {{- $ratio := .ratio -}}
{{- $portrait := .portrait -}} {{- $portrait := .portrait -}}
{{- $loading := .loading -}}
{{- $validSettings := slice "lazy" "eager" -}}
{{- if $loading -}}
{{ if not (in $validSettings $loading) -}}
{{- errorf "partial [assets/carousel-item.html] - Invalid value for param 'loading': %s" $loading -}}
{{ end -}}
{{- end -}}
<div class="carousel-item{{ if $active }} active{{ end }}"> <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) }} {{ partial "assets/image.html" (dict "url" $src "ratio" $ratio "page" $page "innerClass" "d-block w-100" "portrait" $portrait "loading" $loading) }}
<div class="carousel-caption gradient"></div> <div class="carousel-caption gradient"></div>
{{ with $caption }} {{ with $caption }}
<div class="carousel-caption d-none d-md-block"> <div class="carousel-caption d-none d-md-block">

View File

@@ -21,6 +21,10 @@
applicable to vector graphics. applicable to vector graphics.
"portrait": Optional flag to adjust the ratio from landscape to portrait. The image itself is not rotated, only "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. the crop area is adjusted. Not applicable to vector graphics.
"loading": Optional loading behavior of the image, either "eager" (default) or "lazy". The loading of lazily
loaded images is deferred until the image is within scrolling range of the viewport. This should
reduce the initial loading time of the website. It is recommended to lazily load only those images
that are below the page fold.
"outerClass": Optional class attribute of the outer div element, e.g. "img-wrap". "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". "innerClass": Optional class attribute of the inner img element, e.g. "rounded".
"title": Optional alternate text of the image. "title": Optional alternate text of the image.
@@ -40,9 +44,7 @@
{{- $url := .url -}} {{- $url := .url -}}
{{- $mode := false -}} {{- $mode := false -}}
{{- with .mode -}} {{- with .mode }}{{ $mode = . }}{{ end -}}
{{ $mode = . -}}
{{- end -}}
{{- $outerClass := .outerClass -}} {{- $outerClass := .outerClass -}}
{{- $innerClass := .innerClass -}} {{- $innerClass := .innerClass -}}
{{- $title := .title -}} {{- $title := .title -}}
@@ -53,6 +55,14 @@
{{- $modes := site.Params.main.modes | default (slice "light" "dark") -}} {{- $modes := site.Params.main.modes | default (slice "light" "dark") -}}
{{- $page := .page -}} {{- $page := .page -}}
{{- $loading := .loading -}}
{{- $validSettings := slice "lazy" "eager" -}}
{{- if $loading -}}
{{ if not (in $validSettings $loading) -}}
{{- errorf "partial [assets/image.html] - Invalid value for param 'loading'" -}}
{{ end -}}
{{- end -}}
{{- $lazy := eq $loading "lazy" -}}
{{- define "partials/image-portrait.html" -}} {{- define "partials/image-portrait.html" -}}
{{- $dimensions := slice }} {{- $dimensions := slice }}
@@ -68,12 +78,14 @@
{{- $portraits = $portraits | append (printf "%sx%s" (index $p 1) (index $p 0)) -}} {{- $portraits = $portraits | append (printf "%sx%s" (index $p 1) (index $p 0)) -}}
{{- end -}} {{- end -}}
{{- end -}} {{- end -}}
{{- $ret := "" }} {{- $ret := "" }}
{{- if reflect.IsSlice $dim -}} {{- if reflect.IsSlice $dim -}}
{{ $ret = $portraits -}} {{ $ret = $portraits -}}
{{- else if gt (len $portraits) 0 -}} {{- else if gt (len $portraits) 0 -}}
{{- $ret = index $portraits 0 -}} {{- $ret = index $portraits 0 -}}
{{- end -}} {{- end -}}
{{- return $ret -}} {{- return $ret -}}
{{- end -}} {{- end -}}
@@ -87,29 +99,23 @@
{{- $fallback := "" -}} {{- $fallback := "" -}}
{{- with $img -}} {{- with $img -}}
{{- if eq $ratio "4x3" -}} {{- if eq $ratio "4x3" -}}{{- $dim = "1400x1050" }}
{{- $dim = "1400x1050" }} {{- else if eq $ratio "3x2" -}}{{- $dim = "1400x933" }}
{{- else if eq $ratio "3x2" -}} {{- else if eq $ratio "1x1" -}}{{- $dim = "1400x1400" }}
{{- $dim = "1400x933" }} {{- else if eq $ratio "16x9" -}}{{- $dim = "1400x788" -}}
{{- else if eq $ratio "1x1" -}} {{- else if eq $ratio "21x9" -}}{{- $dim = "1400x600" -}}
{{- $dim = "1400x1400" }}
{{- else if eq $ratio "16x9" -}}
{{- $dim = "1400x788" -}}
{{- else if eq $ratio "21x9" -}}
{{- $dim = "1400x600" -}}
{{- else -}} {{- else -}}
{{- $dim = printf "%sx%d" $width (int (math.Round (mul (div (float $width) $img.Width) $img.Height))) -}} {{- $dim = printf "%sx%d" $width (int (math.Round (mul (div (float $width) $img.Width) $img.Height))) -}}
{{- end -}} {{- end -}}
{{- if $portrait -}} {{- if $portrait -}}{{- $dim = partial "partials/image-portrait.html" (dict "dim" $dim) -}}{{- end -}}
{{- $dim = partial "partials/image-portrait.html" (dict "dim" $dim) -}}
{{- end -}}
{{- if $ratio -}} {{- if $ratio -}}
{{- $fallback = ($img.Fill (printf "%s jpg" $dim)) -}} {{- $fallback = ($img.Fill (printf "%s jpg" $dim)) -}}
{{- else -}} {{- else -}}
{{- $fallback = ($img.Fit (printf "%s jpg" $dim)) -}} {{- $fallback = ($img.Fit (printf "%s jpg" $dim)) -}}
{{- end -}} {{- end -}}
{{- $clean := path.Ext $img.RelPermalink -}} {{- $clean := path.Ext $img.RelPermalink -}}
{{- $ext := path.Ext $img.RelPermalink -}} {{- $ext := path.Ext $img.RelPermalink -}}
{{- $fallback = $fallback | resources.Copy (replace $img.RelPermalink $clean (printf "-%s%s" $dim $ext)) -}} {{- $fallback = $fallback | resources.Copy (replace $img.RelPermalink $clean (printf "-%s%s" $dim $ext)) -}}
@@ -158,6 +164,7 @@
{{- else -}} {{- else -}}
{{- $scaled = $img.Fit (printf "%s webp" $dim) -}} {{- $scaled = $img.Fit (printf "%s webp" $dim) -}}
{{- end -}} {{- end -}}
{{- $scaled = $scaled | resources.Copy (replace $img.RelPermalink $clean (printf "-%s.webp" $dim)) -}} {{- $scaled = $scaled | resources.Copy (replace $img.RelPermalink $clean (printf "-%s.webp" $dim)) -}}
{{- if $absoluteURL -}} {{- if $absoluteURL -}}
{{- $imgset = printf "%s, %s %sw" $imgset $scaled.Permalink (index $widths $index) -}} {{- $imgset = printf "%s, %s %sw" $imgset $scaled.Permalink (index $widths $index) -}}
@@ -165,6 +172,7 @@
{{- $imgset = printf "%s, %s %sw" $imgset $scaled.RelPermalink (index $widths $index) -}} {{- $imgset = printf "%s, %s %sw" $imgset $scaled.RelPermalink (index $widths $index) -}}
{{- end -}} {{- end -}}
{{- end -}} {{- end -}}
{{- $imgset = strings.TrimPrefix ", " $imgset -}} {{- $imgset = strings.TrimPrefix ", " $imgset -}}
{{- end -}} {{- end -}}
@@ -186,6 +194,7 @@
{{- $imgset := "" -}} {{- $imgset := "" -}}
{{- $mode := .mode -}} {{- $mode := .mode -}}
{{- $modes := .modes -}} {{- $modes := .modes -}}
{{- $lazy := .lazy -}}
{{- $page := .page -}} {{- $page := .page -}}
{{- $isVector := false -}} {{- $isVector := false -}}
@@ -204,11 +213,11 @@
{{- $img := partial "utilities/GetImage.html" (dict "url" $url "page" $page) -}} {{- $img := partial "utilities/GetImage.html" (dict "url" $url "page" $page) -}}
{{- if $img -}} {{- if $img -}}
{{- $fallback := partial "partials/image-default.html" (dict "img" $img "ratio" $ratio "portrait" $portrait) -}} {{- $fallback := partial "partials/image-default.html" (dict "img" $img "ratio" $ratio "portrait" $portrait) -}}
{{- if $absoluteURL -}} {{- if $absoluteURL -}}
{{- $fallbackURL = $fallback.Permalink -}} {{- $fallbackURL = $fallback.Permalink -}}
{{- else -}} {{- else -}}
{{- $fallbackURL = $fallback.RelPermalink -}} {{- $fallbackURL = $fallback.RelPermalink -}}
{{- end -}} {{- end -}}
{{- $imgset = partial "partials/image-scaled.html " (dict "img" $img "ratio" $ratio "portrait" $portrait) -}} {{- $imgset = partial "partials/image-scaled.html " (dict "img" $img "ratio" $ratio "portrait" $portrait) -}}
{{- end -}} {{- end -}}
{{- end -}} {{- end -}}
@@ -219,30 +228,32 @@
{{- end -}} {{- end -}}
{{- end -}} {{- end -}}
{{- $width := "" -}}
{{- $height := "" -}}
{{- $input := (split (path.BaseName $fallbackURL) "-") | collections.Reverse -}}
{{ if $isVector }}
{{- $height = "500" -}}
{{ $width = string (partial "utilities/GetWidth.html" (dict "path" $fallbackURL "height" 500)) }}
{{- else 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 }}
{{- if $caption -}} {{- if $caption -}}
<figure {{ with $outerClass }}class="{{ . }}"{{ end }}> <figure {{ with $outerClass }}class="{{ . }}"{{ end }}>
{{ end }} {{ end }}
<div class="{{ if not $caption }}{{ $outerClass }}{{ end }}"> <div class="{{ if not $caption }}{{ $outerClass }}{{ end }}">
{{- if not $anchor -}} {{- 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 }}" <img class="img-fluid {{ $innerClass }}"
{{ with $imgset -}}
srcset="{{ . }}"
sizes="100vw"
{{- end }}
src="{{ $fallbackURL }}" src="{{ $fallbackURL }}"
{{ if $lazy }}loading="lazy"{{ end }}
{{ with $imgset -}}srcset="{{ . }}" sizes="100vw"{{- end }}
{{ with $height }}height="{{ . }}"{{ end }} {{ with $height }}height="{{ . }}"{{ end }}
{{ with $width }}width="{{ . }}"{{ end }} {{ with $width }}width="{{ . }}"{{ end }}
alt="{{ $title }}"> {{ with $title }}alt="{{ . }}"{{ end }}>
{{- else }} {{- else }}
<svg class="{{ $innerClass }}"> <svg class="{{ $innerClass }}">
<use href="{{ $fallbackURL }}#{{ $anchor }}"></use> <use href="{{ $fallbackURL }}#{{ $anchor }}"></use>
@@ -250,12 +261,25 @@
{{ end }} {{ end }}
</div> </div>
{{- if $caption -}} {{- if $caption -}}
<figcaption class="figure-caption">{{ $caption | safeHTML }}</figcaption> <figcaption class="figure-caption">{{ $caption | safeHTML }}</figcaption>
</figure> </figure>
{{- end -}} {{- end -}}
{{- end -}} {{- end -}}
<!-- Initiate the regular or color-mode image --> <!-- Initiate the regular or color-mode image -->
{{ $params := dict }}
{{- $params = merge $params (dict
"ratio" $ratio
"portrait" $portrait
"outerClass" $outerClass
"innerClass" $innerClass
"title" $title
"caption" $caption
"lazy" $lazy
"page" $page)
-}}
{{- if $mode -}} {{- if $mode -}}
{{- $ext := path.Ext $url -}} {{- $ext := path.Ext $url -}}
{{- $base := strings.TrimSuffix $ext $url -}} {{- $base := strings.TrimSuffix $ext $url -}}
@@ -265,28 +289,14 @@
{{- range $suffix := $modes -}} {{- range $suffix := $modes -}}
{{- $image := printf "%s-%s%s" $base $suffix $ext -}} {{- $image := printf "%s-%s%s" $base $suffix $ext -}}
{{- partial "partials/image-definition.html" (dict {{- $params = merge $params (dict
"ratio" $ratio
"portrait" $portrait
"url" $image "url" $image
"outerClass" $outerClass
"innerClass" $innerClass
"title" $title
"caption" $caption
"mode" $suffix "mode" $suffix
"modes" $modes "modes" $modes)
"page" $page)
-}} -}}
{{- partial "partials/image-definition.html" $params -}}
{{- end -}} {{- end -}}
{{- else -}} {{ else }}
{{- partial "partials/image-definition.html" (dict {{- $params = merge $params (dict "url" $url) -}}
"ratio" $ratio {{- partial "partials/image-definition.html" $params -}}
"portrait" $portrait
"url" $url
"outerClass" $outerClass
"innerClass" $innerClass
"title" $title
"caption" $caption
"page" $page)
-}}
{{- end -}} {{- end -}}

View File

@@ -28,7 +28,9 @@
{{- $thumbnail := .thumbnail -}} {{- $thumbnail := .thumbnail -}}
{{- $style := .style -}} {{- $style := .style -}}
{{- $mode := .mode -}} {{- $mode := .mode -}}
{{- partial "assets/image.html" (dict "url" $thumbnail "outerClass" $style "mode" $mode) -}} {{- $title := .title -}}
{{- $loading := .loading -}}
{{- partial "assets/image.html" (dict "url" $thumbnail "title" $title "outerClass" $style "mode" $mode "loading" $loading) -}}
{{- end -}} {{- end -}}
{{- $page := .page -}} {{- $page := .page -}}
@@ -49,6 +51,14 @@
{{ $vertical := false }} {{ $vertical := false }}
{{ $type := "pills" }} {{ $type := "pills" }}
{{- $loading := .loading -}}
{{- $validSettings := slice "lazy" "eager" -}}
{{- if $loading -}}
{{ if not (in $validSettings $loading) -}}
{{- errorf "partial [assets/list.html] - Invalid value for param 'loading': %s" $loading -}}
{{ end -}}
{{- end -}}
<div class="d-none d-md-block p-0"> <div class="d-none d-md-block p-0">
{{- range $index, $item := $list -}} {{- range $index, $item := $list -}}
{{- $odd := eq (mod $index 2) 1 -}} {{- $odd := eq (mod $index 2) 1 -}}
@@ -61,7 +71,7 @@
{{- $style = "reveal fade-bottom-n5 rotate-n5 ps-3" -}} {{- $style = "reveal fade-bottom-n5 rotate-n5 ps-3" -}}
{{- if $odd }}{{ $style = "reveal fade-bottom-5 rotate-5 pe-3" }}{{ end }} {{- if $odd }}{{ $style = "reveal fade-bottom-5 rotate-5 pe-3" }}{{ end }}
{{ end }} {{ end }}
{{ partial "partials/list-img.html" (dict "thumbnail" $thumbnail "style" $style "mode" $item.Params.colormode) }} {{ partial "partials/list-img.html" (dict "thumbnail" $thumbnail "title" $item.Title "style" $style "mode" $item.Params.colormode "loading" $loading) }}
</div> </div>
<div class="col-6{{ if $odd }} order-first{{ end }} psw-lg-5 p-5"> <div class="col-6{{ if $odd }} order-first{{ end }} psw-lg-5 p-5">
{{ partial "partials/list-content.html" (dict "title" $item.Title "content" (or $item.Description $item.Content)) }} {{ partial "partials/list-content.html" (dict "title" $item.Title "content" (or $item.Description $item.Content)) }}
@@ -78,7 +88,7 @@
<div class="container d-flex flex-column"> <div class="container d-flex flex-column">
<div class="row pt-5 pb-5 align-items-center flex-fill row-cols-2"> <div class="row pt-5 pb-5 align-items-center flex-fill row-cols-2">
<div class="col-12 text-center"> <div class="col-12 text-center">
{{ partial "partials/list-img.html" (dict "thumbnail" $thumbnail "mode" $item.Params.colormode) }} {{ partial "partials/list-img.html" (dict "thumbnail" $thumbnail "title" $item.Title "mode" $item.Params.colormode "loading" $loading) }}
</div> </div>
<div class="col-12 p-3"> <div class="col-12 p-3">
{{ partial "partials/list-content.html" (dict "title" $item.Title "content" (partial "utilities/GetDescription.html" $item)) }} {{ partial "partials/list-content.html" (dict "title" $item.Title "content" (partial "utilities/GetDescription.html" $item)) }}

View File

@@ -10,6 +10,8 @@
"body" The body content of the nav-item, supports Markdown and HTML (if enabled). "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). "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. "disabled" Optional flag to indicate the item should be in a disabled state.
"type" Optional type of the item to render, supports "accordion" as alternative format. Defaults to
"tab-pane".
--> -->
{{- $id := .id -}} {{- $id := .id -}}
@@ -21,9 +23,33 @@
{{- $body := .body -}} {{- $body := .body -}}
{{- $show := .show -}} {{- $show := .show -}}
{{- $disabled := .disabled -}} {{- $disabled := .disabled -}}
{{- $type := .type -}}
{{- $illustration := .illustration -}}
<div class="tab-pane{{ if $show }} active {{ if $fade }}show{{ end }}{{ end }} {{ if $fade}}fade{{ end }}{{ with $class }} {{ . }}{{ end }}" id="{{ $parentID }}-{{ $id }}" {{ if eq $type "accordion" }}
role="tabpanel" aria-labelledby="{{ $parentID }}-btn-{{ $id }}" tabindex="0" data-header="{{ $header }}" {{ if $show }}data-show-id="{{ $id }}"{{ end }} <div class="accordion-item{{ if $show }} show{{ end }}{{ with $class }} {{ . }}{{ end }}">
data-has-content="{{ gt (len $body) 0 }}" {{ if $disabled }} data-disabled-id="{{ $id }}"{{ end }}> {{- with $header -}}
{{ $body }} <h2 class="accordion-header m-0" id="accordion-{{ $parentID }}-heading-{{ $id }}">
</div> <button class="accordion-button collapsed {{ if $disabled }} text-secondary{{ end }}" type="button" data-bs-toggle="collapse" data-bs-target="#accordion-{{ $parentID }}-item-{{ $id }}" aria-expanded="false" aria-controls="accordion-{{ $parentID }}-item-{{ $id }}"{{ if $disabled }} disabled{{ end }}>
{{ if $illustration }}
<div class="row">
<div class="col-3 col-sm-2 my-auto">{{ $illustration | safeHTML }}</div>
<div class="col-9 col-sm-10 fs-6 fs-sm-5 my-auto">{{ . }}</div>
</div>
{{ else }}
{{ . }}
{{ end }}
</button>
</h2>
{{- end -}}
<div id="accordion-{{ $parentID }}-item-{{ $id }}" class="accordion-collapse collapse{{ with $class }} {{ . }}{{ end }}" aria-labelledby="{{ $parentID }}-heading-{{ $id }}" data-bs-parent="#accordion-{{ $parentID }}">
<div class="accordion-body">{{- $body | safeHTML -}}</div>
</div>
</div>
{{ else }}
<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>
{{ end }}

View File

@@ -4,7 +4,7 @@
"page" Required context of the current page. "page" Required context of the current page.
"list" Required array of pages. "list" Required array of pages.
"title" Optional title of the tab group. "title" Optional title of the tab group.
"type" Optional type of the tab group, either "tabs", "pills" (default), or "underline". "type" Optional type of the tab group, either "tabs", "pills" (default), "underline" or "callout".
"vertical" Optional flag to show vertical tabs instead of horizontal tabs (default). "vertical" Optional flag to show vertical tabs instead of horizontal tabs (default).
"class" Optional class attribute of the tab group, e.g. “nav-fill”. "class" Optional class attribute of the tab group, e.g. “nav-fill”.
"pane" Optional style of the panes, either "none" (default) or "persona". "pane" Optional style of the panes, either "none" (default) or "persona".
@@ -70,7 +70,7 @@
{{ $type := "pills" }} {{ $type := "pills" }}
{{ with .type }} {{ with .type }}
{{ $type = . -}} {{ $type = . -}}
{{ $supportedNavTypes := slice "tabs" "pills" "underline" -}} {{ $supportedNavTypes := slice "tabs" "pills" "underline" "callout" -}}
{{ if $type }} {{ if $type }}
{{ if not (in $supportedNavTypes $type) -}} {{ if not (in $supportedNavTypes $type) -}}
{{ errorf "partial [assets/nav.html] - Invalid value for param 'type': %s" $type -}} {{ errorf "partial [assets/nav.html] - Invalid value for param 'type': %s" $type -}}
@@ -78,8 +78,39 @@
{{ end -}} {{ end -}}
{{ end -}} {{ end -}}
<div class="{{ if eq $width 50 }}col-sm-12 col-md-10 col-lg-8 col-xl-6{{ else }}col-12{{ end }} mx-auto pt-5 pb-5"> {{- $loading := .loading -}}
{{- $validSettings := slice "lazy" "eager" -}}
{{- if $loading -}}
{{ if not (in $validSettings $loading) -}}
{{- errorf "partial [assets/nav.html] - Invalid value for param 'loading': %s" $loading -}}
{{ end -}}
{{- end -}}
<div class="{{ if eq $width 50 }}col-sm-12 col-md-10 col-lg-8 col-xl-6{{ else }}col-12{{ end }} mx-auto">
{{ if $vertical }}<div class="d-flex align-items-start">{{ end }} {{ if $vertical }}<div class="d-flex align-items-start">{{ end }}
{{ if eq $type "callout" }}
<div class="d-lg-none">
<div id="accordion-{{ $id }}" class="accordion mb-3{{ with $class }} {{ . }}{{ end }} nav-callout">
{{- range $index, $item := $list -}}
{{ partial "assets/nav-item" (dict
"id" $index
"parentID" $id
"fade" false
"header" $item.Title
"class" $class
"body" (or $item.Description $item.Content)
"show" false
"disabled" false
"type" "accordion"
"illustration" (partial "utilities/GetIllustration.html" (dict "item" $item "size" "col-12"))
)
}}
{{ end -}}
</div>
</div>
<div class="d-none d-lg-block">
{{ end }}
<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 }}> <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 -}} {{- range $index, $item := $list -}}
{{ $show := eq $index 0}} {{ $show := eq $index 0}}
@@ -88,28 +119,39 @@
{{ $item.Title }} {{ $item.Title }}
</button> </button>
{{ end -}} {{ end -}}
<div class="tab-content {{ if eq $type "tabs" }}border border-bottom-0 p-3{{ else if $vertical }}ms-3{{ else }}mt-3{{ end }}">
{{ range $index, $item := $list }}
{{ $header := $item.Title }}
{{ $body := $item.Content }}
{{ $show := eq $index 0}}
{{- $thumbnail := (or (and (reflect.IsMap $item.Params.Thumbnail) $item.Params.Thumbnail.url) $item.Params.Thumbnail) -}}
<div class="tab-pane{{ if $show }} active{{ end }}" id="nav-{{ $id }}-{{ $index }}" role="tabpanel" aria-labelledby="{{ $id }}-btn-{{ $index }}" tabindex="0">
{{- if eq $pane "persona" -}}
{{- partial "assets/persona.html" (dict
"title" $item.Title
"class" $class
"color" $color
"content" (partial "utilities/GetDescription.html" $item)
"thumbnail" $thumbnail
"loading" $loading
) -}}
{{- else -}}
{{ $illustration := (partial "utilities/GetIllustration.html" (dict "item" $item)) }}
{{ if $illustration }}
<div class="row">
<div class="col-12 col-lg-10 order-1 order-lg-0">{{- (or $item.Description $item.Content) -}}</div>
<div class="col-12 col-lg-2 order-0 order-lg-1">{{ $illustration | safeHTML }}</div>
</div>
{{ else }}
{{- (or $item.Description $item.Content) -}}
{{ end }}
{{- end -}}
</div>
{{ end }}
</div>
</div> </div>
<div class="tab-content {{ if eq $type "tabs" }}border border-top-0 p-3{{ else if $vertical }}ms-3{{ else }}mt-3{{ end }}"> {{ if eq $type "callout" }}</div>{{ end }}
{{ range $index, $item := $list }}
{{ $header := $item.Title }}
{{ $body := $item.Content }}
{{ $show := eq $index 0}}
{{- $thumbnail := (or (and (reflect.IsMap $item.Params.Thumbnail) $item.Params.Thumbnail.url) $item.Params.Thumbnail) -}}
<div class="tab-pane{{ if $show }} active{{ end }}" id="nav-{{ $id }}-{{ $index }}" role="tabpanel" aria-labelledby="{{ $id }}-btn-{{ $index }}" tabindex="0">
{{- if eq $pane "persona" -}}
{{- partial "assets/persona.html" (dict
"title" $item.Title
"class" $class
"color" $color
"content" (partial "utilities/GetDescription.html" $item)
"thumbnail" $thumbnail
) -}}
{{- else -}}
{{- (or $item.Description $item.Content) -}}
{{- end -}}
</div>
{{ end }}
</div>
{{ if $vertical }}</div>{{ end }} {{ if $vertical }}</div>{{ end }}
</div> </div>

View File

@@ -14,7 +14,7 @@
"logo" Optional address of the logo image, defaults to the parameter "logo" set in the "main" section of "logo" Optional address of the logo image, defaults to the parameter "logo" set in the "main" section of
the site's parameter configuration. the site's parameter configuration.
"title" Optional brand title, displayed when the logo is not set. Defaults to the site's title. "title" Optional brand title, displayed when the logo is not set. Defaults to the site's title.
"class": Optional class attribute of the navbar container. "class" Optional class attribute of the navbar container.
--> -->
<!-- Inline partial to render the color mode switcher --> <!-- Inline partial to render the color mode switcher -->
@@ -25,7 +25,7 @@
<li class="nav-item dropdown {{ if $collapsed }}d-{{ $size }}-none{{ else }}d-none d-{{ $size }}-block{{ end }}"> <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 }}"> <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> <span class="d-md-none"></span>
</a> </a>
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="{{ $id }}-theme{{ if $collapsed }}-collapsed{{ end }}"> <ul class="dropdown-menu dropdown-menu-end" aria-labelledby="{{ $id }}-theme{{ if $collapsed }}-collapsed{{ end }}">
@@ -68,7 +68,7 @@
{{- range $index, $item := $list -}} {{- range $index, $item := $list -}}
{{- $active := eq $item.label $version -}} {{- $active := eq $item.label $version -}}
{{- $disabled := false -}} {{- $disabled := false -}}
{{- if site.IsServer }} {{- if hugo.IsServer }}
{{- $disabled = and $item.redirect (gt (len $item.redirect) 0) -}} {{- $disabled = and $item.redirect (gt (len $item.redirect) 0) -}}
{{- end -}} {{- end -}}
{{ if $item.url }} {{ if $item.url }}
@@ -156,7 +156,6 @@
{{- end -}} {{- end -}}
{{- $searchModal := and $search site.Params.navigation.searchModal -}} {{- $searchModal := and $search site.Params.navigation.searchModal -}}
{{- $enableDarkMode := default false site.Params.main.enableDarkMode -}} {{- $enableDarkMode := default false site.Params.main.enableDarkMode -}}
{{- with .mode -}} {{- with .mode -}}
{{- $darkModeParam := . -}} {{- $darkModeParam := . -}}
@@ -175,6 +174,8 @@
{{- $enableLanguage := or $page.IsTranslated site.IsMultiLingual -}} {{- $enableLanguage := or $page.IsTranslated site.IsMultiLingual -}}
{{- $horizontal := default false site.Params.navigation.horizontal -}}
{{- $logo := site.Params.navigation.logo -}} {{- $logo := site.Params.navigation.logo -}}
{{- $logoLight := "" -}} {{- $logoLight := "" -}}
{{- $logoDark := "" -}} {{- $logoDark := "" -}}
@@ -223,27 +224,28 @@
<div class="container-fluid {{ if $fixed }}fixed-top{{ end }} p-0{{ with $class }} {{ . }}{{ end }}"> <div class="container-fluid {{ if $fixed }}fixed-top{{ end }} p-0{{ with $class }} {{ . }}{{ end }}">
{{- partial "assets/page-alert.html" (dict "page" $page) -}} {{- partial "assets/page-alert.html" (dict "page" $page) -}}
<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 }}> <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"> <div class="container-xxl p-0">
<!-- Insert sidebar toggler when applicable --> <!-- Insert sidebar toggler when applicable -->
<div class="d-flex"> <div class="d-flex align-items-center">
{{- if $page.Scratch.Get "sidebar" -}} {{- if $page.Scratch.Get "sidebar" -}}
<button class="navbar-toggler fw-30 collapsed p-0 mx-auto" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvass-sidebar" aria-controls="offcanvass-sidebar" aria-label="{{ T "toggleSidebar" }}"> <button class="navbar-toggler collapsed p-0 mx-auto" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvass-sidebar" aria-controls="offcanvass-sidebar" aria-label="{{ T "toggleSidebar" }}">
{{- partial "assets/icon.html" (dict "icon" "fas ellipsis fa-fw") -}} {{- partial "assets/icon.html" (dict "icon" "fas ellipsis fa-fw") -}}
</button> </button>
{{- else -}} {{- else -}}
<!-- Insert invisible sidebar toggler to center logo correctly on smaller screens --> <!-- Insert invisible sidebar toggler to center logo correctly on smaller screens -->
<button class="navbar-toggler fw-30 collapsed p-0 mx-auto invisible" type="button"> <button class="navbar-toggler collapsed p-0 mx-auto invisible" type="button">
{{- partial "assets/icon.html" (dict "icon" "fas ellipsis fa-fw") -}} {{- partial "assets/icon.html" (dict "icon" "fas ellipsis fa-fw") -}}
</button> </button>
{{- end -}} {{- end -}}
</div> </div>
<!-- Insert the brand logo or name --> <!-- Insert the brand logo or name -->
<a class="navbar-brand mx-auto" href="{{ site.Home.RelPermalink }}"> <a class="navbar-brand mx-auto" href="{{ site.Home.RelPermalink }}" aria-label="{{ T "home" }}">
{{- if (and $logoLight $logoDark) -}} {{- if (and $logoLight $logoDark) -}}
<img src="{{if $absoluteURL }}{{ absURL $logoLight }}{{ else }}{{ $logoLight }}{{ end }}" class="d-none-dark" alt="{{ $title }} logo" height="30"> {{ $width := partial "utilities/GetWidth.html" (dict "path" $logoLight "height" 30) }}
<img src="{{if $absoluteURL }}{{ absURL $logoDark }}{{ else }}{{ $logoDark }}{{ end }}" class="d-none-light" alt="{{ $title }} logo" height="30"> <img src="{{if $absoluteURL }}{{ absURL $logoLight }}{{ else }}{{ $logoLight }}{{ end }}" class="d-none-dark" alt="{{ $title }} logo" height="30"{{ with $width }} width="{{ . }}"{{ end }}>
<img src="{{if $absoluteURL }}{{ absURL $logoDark }}{{ else }}{{ $logoDark }}{{ end }}" class="d-none-light" alt="{{ $title }} logo" height="30"{{ with $width }} width="{{ . }}"{{ end }}>
{{- else if $logo -}} {{- else if $logo -}}
{{ $width := partial "utilities/GetWidth.html" (dict "path" $logo "height" 30) }} {{ $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 }}> <img src="{{if $absoluteURL }}{{ absURL $logo }}{{ else }}{{ $logo }}{{ end }}" alt="{{ $title }} logo" height="30"{{ with $width }} width="{{ . }}"{{ end }}>
@@ -253,7 +255,7 @@
</a> </a>
<!-- Insert main navigation toggler --> <!-- Insert main navigation toggler -->
<div class="d-flex fw-30"> <div class="d-flex">
<button class="navbar-toggler main-nav-toggler collapsed p-0" type="button" data-bs-toggle="collapse" data-bs-target="#{{ $id }}-collapse" <button class="navbar-toggler main-nav-toggler collapsed p-0" type="button" data-bs-toggle="collapse" data-bs-target="#{{ $id }}-collapse"
aria-controls="{{ $id }}" aria-expanded="false" aria-label="{{ T "toggleMainNav" }}"> aria-controls="{{ $id }}" aria-expanded="false" aria-label="{{ T "toggleMainNav" }}">
<span class="toggler-icon top-bar emphasis{{ with $theme }}-{{ . }}{{ end }}"></span> <span class="toggler-icon top-bar emphasis{{ with $theme }}-{{ . }}{{ end }}"></span>
@@ -269,10 +271,10 @@
<!-- Render top-menu items (maximum depth of 2) --> <!-- Render top-menu items (maximum depth of 2) -->
<ul class="navbar-nav ms-auto"> <ul class="navbar-nav ms-auto">
{{- range $menu := $menus -}} {{- range $menu := $menus -}}
<li class="nav-item{{ if .HasChildren }} dropdown{{ end }}"> <li class="nav-item{{ if .HasChildren }} dropdown{{ if $horizontal }} dropdown-horizontal-{{ $size }}{{ end }}{{ end }}">
{{- partial "assets/navbar-item.html" (dict "menu" $menu "page" $page) -}} {{- partial "assets/navbar-item.html" (dict "menu" $menu "page" $page) -}}
{{- if .HasChildren -}} {{- if .HasChildren -}}
<ul class="dropdown-menu dropdown-menu-end"> <ul class="dropdown-menu">
{{- range .Children -}} {{- range .Children -}}
<li>{{- partial "assets/navbar-item.html" (dict "menu" . "parent" $menu "page" $page) -}}</li> <li>{{- partial "assets/navbar-item.html" (dict "menu" . "parent" $menu "page" $page) -}}</li>
{{- end -}} {{- end -}}
@@ -300,10 +302,10 @@
{{- $currentLang := $page.Language.Lang -}} {{- $currentLang := $page.Language.Lang -}}
<li class="nav-item dropdown"> <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"> <a class="nav-link dropdown-toggle d-{{ $size }}-none" href="#!" role="button" data-bs-toggle="dropdown" aria-label="{{ T "languageSwitcherLabel" }}" aria-expanded="false">
{{- partial "assets/icon.html" (dict "icon" "fas globe fa-fw" "spacing" false) }} {{ T "languageSwitcherLabel" }} {{- partial "assets/icon.html" (dict "icon" "fas globe fa-fw" "spacing" false) }}&nbsp;{{ T "languageSwitcherLabel" }}&nbsp;
</a> </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"> <a class="nav-link dropdown-toggle d-none d-{{ $size }}-block" href="#!" role="button" data-bs-toggle="dropdown" aria-label="{{ T "languageSwitcherLabel" }}" aria-expanded="false">
{{- partial "assets/icon.html" (dict "icon" "fas globe fa-fw" "spacing" false) }} {{- partial "assets/icon.html" (dict "icon" "fas globe fa-fw" "spacing" true) }}
</a> </a>
<ul class="dropdown-menu dropdown-menu-end "> <ul class="dropdown-menu dropdown-menu-end ">
{{- if $page.IsTranslated -}} {{- if $page.IsTranslated -}}
@@ -356,10 +358,10 @@
<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"> <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> </form>
</div> </div>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="{{ T "close" }}"></button>
</div> </div>
<div class="modal-body p-2"> <div class="modal-body p-2 search-background">
<div class="search-suggestions bg-body" data-no-results="{{ T "ui_no_results" }}"></div> <div class="search-suggestions" data-no-results="{{ T "ui_no_results" }}"></div>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -10,6 +10,6 @@
{{- if $pageAlertMsg -}} {{- if $pageAlertMsg -}}
<div id="page-alert" class="alert alert-primary alert-no-decoration fade show d-flex align-items-center small m-0 py-1" data-page-alert-version="{{ $version }}"> <div id="page-alert" class="alert alert-primary alert-no-decoration fade show d-flex align-items-center small m-0 py-1" data-page-alert-version="{{ $version }}">
<a href="{{ with $pageAlertURL }}{{ . }}{{ else }}#!{{ end }}" class="text-decoration-none flex-grow-1 text-center">{{ $pageAlertMsg }}</a> <a href="{{ with $pageAlertURL }}{{ . }}{{ else }}#!{{ end }}" class="text-decoration-none flex-grow-1 text-center">{{ $pageAlertMsg }}</a>
<button id="page-alert-btn-close" type="button" class="btn-close" data-bs-dismiss="alert"></button> <button id="page-alert-btn-close" type="button" class="btn-close" data-bs-dismiss="alert" aria-label="{{ T "close" }}"></button>
</div> </div>
{{- end -}} {{- end -}}

View File

@@ -56,12 +56,20 @@
{{- $class := .class -}} {{- $class := .class -}}
{{- $loading := .loading -}}
{{- $validSettings := slice "lazy" "eager" -}}
{{- if $loading -}}
{{ if not (in $validSettings $loading) -}}
{{- errorf "partial [assets/persona.html] - Invalid value for param 'loading': %s" $loading -}}
{{ end -}}
{{- end -}}
<div class="d-none d-md-block"> <div class="d-none d-md-block">
<div class="persona position-relative row mt-5 align-middle p-3"> <div class="persona position-relative row mt-5 align-middle p-3">
<div class="col-2"> <div class="col-2">
<div class="position-absolute top-50 start-0 translate-middle-y col-4 ps-3"> <div class="position-absolute top-50 start-0 translate-middle-y col-4 ps-3">
{{- if $thumbnail -}} {{- if $thumbnail -}}
{{- partial "assets/image.html" (dict "url" $thumbnail "ratio" "1x1" "innerClass" "rounded-5") -}} {{- partial "assets/image.html" (dict "url" $thumbnail "title" $title "ratio" "1x1" "innerClass" "rounded-5" "loading" $loading) -}}
{{ end }} {{ end }}
</div> </div>
</div> </div>
@@ -81,7 +89,7 @@
<div class="col-12"> <div class="col-12">
<div class="position-absolute top-25 start-50 translate-middle col-6"> <div class="position-absolute top-25 start-50 translate-middle col-6">
{{- if $thumbnail -}} {{- if $thumbnail -}}
{{- partial "assets/image.html" (dict "url" $thumbnail "ratio" "1x1" "innerClass" "rounded-5") -}} {{- partial "assets/image.html" (dict "url" $thumbnail "title" $title "ratio" "1x1" "innerClass" "rounded-5" "loading" $loading) -}}
{{ end }} {{ end }}
</div> </div>
</div> </div>

View File

@@ -20,6 +20,6 @@
{{- end -}} {{- end -}}
{{- end -}} {{- end -}}
{{ with $title }}<p id="{{ anchorize . }}" class="display-4 pt-4{{ if and page.IsHome site.Params.home.centerHeadline }} text-center{{ end }}">{{ . }}</p>{{ end }} {{ with $title }}<p id="{{ anchorize . }}" class="display-4 py-5{{ if and page.IsHome site.Params.home.centerHeadline }} text-center{{ end }}">{{ . }}</p>{{ end }}
{{ with $description }} <p class="lead mb-5">{{ . }}</p>{{ end }} {{ with $description }} <p class="lead mb-5">{{ . }}</p>{{ end }}
{{ $content }} {{ $content }}

View File

@@ -36,6 +36,7 @@
{{- $width := 100 -}} {{- $width := 100 -}}
{{- $ratio := "" -}} {{- $ratio := "" -}}
{{- $wrap := false -}} {{- $wrap := false -}}
{{- $loading := .loading -}}
{{- with (index site.Params.sections $section) -}} {{- with (index site.Params.sections $section) -}}
{{- with index . "title" }}{{ $title = or $.title . }}{{ end -}} {{- with index . "title" }}{{ $title = or $.title . }}{{ end -}}
@@ -121,12 +122,13 @@
"content" $content "content" $content
"class" $style "class" $style
"color" $color "color" $color
"loading" $loading
) )
-}} -}}
{{- $partial := "" -}} {{- $partial := "" -}}
<div class="container-fluid {{ with $background }} bg-{{ . }}{{ end }} 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"> <div class="container-xxl p-4 px-xxl-0 pb-5">
{{- partial "assets/section-header.html" $params -}} {{- partial "assets/section-header.html" $params -}}
{{ if eq $layout "card" }} {{ if eq $layout "card" }}

View File

@@ -5,7 +5,31 @@
{{ end }} {{ end }}
{{- if gt (len $items) 0 }} {{- if gt (len $items) 0 }}
<nav class="navbar navbar-expand navbar-services p-0 fs-5"> <div class="d-grid gap-2 mx-auto d-md-none">
{{ partial "assets/button.html" (dict
"title" (T "sectionMenu")
"color" "secondary"
"outline" "true"
"class" "toc-button"
"icon" "fas sort"
"justify" "between"
"collapse" "toc-collapse"
"order" "last")
-}}
</div>
<p>
<div class="collapse border bg-body-tertiary rounded p-1 navbar-nav-scroll" id="toc-collapse">
<div class="toc toc-panel section-menu text-body p-2 fs-6">
{{- range $items }}
{{ $active := eq $page.RelPermalink .RelPermalink }}
<a class="nav-link{{ if $active }} active{{ end }}" href="{{ .RelPermalink }}">{{ .Title }}</a>
{{- end }}
</div>
</div>
</p>
<nav class="navbar navbar-expand navbar-services p-0 fs-5 d-none d-md-block">
<div class="container-fluid p-0 pb-3"> <div class="container-fluid p-0 pb-3">
<div class="collapse navbar-collapse" id="navbarNav"> <div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav"> <ul class="navbar-nav">

View File

@@ -25,7 +25,7 @@
<div id="{{ $id }}" class="toast{{ with $class }} {{ . }}{{ end }}" role="alert" aria-live="assertive" aria-atomic="true"> <div id="{{ $id }}" class="toast{{ with $class }} {{ . }}{{ end }}" role="alert" aria-live="assertive" aria-atomic="true">
<div class="toast-header"> <div class="toast-header">
{{ with $header }}<strong class="me-auto">{{ . }}</strong>{{ end }} {{ with $header }}<strong class="me-auto">{{ . }}</strong>{{ end }}
<button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button> <button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="{{ T "close" }}"></button>
</div> </div>
<div class="toast-body">{{ $message }}</div> <div class="toast-body">{{ $message }}</div>
</div> </div>

View File

@@ -25,10 +25,10 @@
{{- $js = $bundle | resources.ExecuteAsTemplate $filename $page -}} {{- $js = $bundle | resources.ExecuteAsTemplate $filename $page -}}
{{- end -}} {{- end -}}
{{- if and (not site.IsServer) $header -}} {{- if and (not hugo.IsServer) $header -}}
{{- $pc := site.Config.Privacy.GoogleAnalytics -}} {{- $pc := site.Config.Privacy.GoogleAnalytics -}}
{{- if and (not $pc.Disable) (hasPrefix site.GoogleAnalytics "G-") }} {{- if and (not $pc.Disable) (hasPrefix site.Config.Services.GoogleAnalytics.ID "G-") }}
<script async src="https://www.googletagmanager.com/gtag/js?id={{ site.GoogleAnalytics }}"></script> <script async src="https://www.googletagmanager.com/gtag/js?id={{ site.Config.Services.GoogleAnalytics.ID }}"></script>
{{- end }} {{- end }}
{{- end -}} {{- end -}}

View File

@@ -39,6 +39,7 @@
"danger" (default "#dc3545" site.Params.style.danger) "danger" (default "#dc3545" site.Params.style.danger)
"light" (default "#f8f9fa" site.Params.style.light) "light" (default "#f8f9fa" site.Params.style.light)
"dark" (default "#212529" site.Params.style.dark) "dark" (default "#212529" site.Params.style.dark)
"navbar-height" (site.Params.navigation.offset | default "4em")
"navbar-offset" $navbarOffset "navbar-offset" $navbarOffset
"enable-dark-mode" (printf "%t" ((default true site.Params.main.enableDarkMode))) "enable-dark-mode" (printf "%t" ((default true site.Params.main.enableDarkMode)))
"import-fonts" (printf "%t" (not (hasPrefix (lower site.Params.style.themeFontPath) "http"))) "import-fonts" (printf "%t" (not (hasPrefix (lower site.Params.style.themeFontPath) "http")))

View File

@@ -31,7 +31,8 @@
<span class="fs-5 text-muted">{{ $page.Description }}</span> <span class="fs-5 text-muted">{{ $page.Description }}</span>
{{ if $actions }} {{ if $actions }}
<div class="hstack{{ if gt (len $actions) 1 }} gap-3{{ end }} justify-content-{{ $align}} pt-5 pt-md-3"> {{- $actions = sort $actions "weight" "asc" -}}
<div class="hstack{{ if gt (len $actions) 1 }} gap-1{{ end }} justify-content-{{ $align}} pt-5 pt-md-3">
{{ range $actions }} {{ range $actions }}
{{ partial "assets/button.html" (dict "href" .url "icon" .icon "title" .title "outline" .outline "order" "last" "justify" "start") }} {{ partial "assets/button.html" (dict "href" .url "icon" .icon "title" .title "outline" .outline "order" "last" "justify" "start") }}
{{ end }} {{ end }}
@@ -55,13 +56,13 @@
{{ else }} {{ else }}
{{- $thumbnail := (or (and (reflect.IsMap $page.Params.Thumbnail) $page.Params.Thumbnail.url) $page.Params.Thumbnail) -}} {{- $thumbnail := (or (and (reflect.IsMap $page.Params.Thumbnail) $page.Params.Thumbnail.url) $page.Params.Thumbnail) -}}
{{- if $thumbnail }} {{- if $thumbnail }}
{{ partial "assets/image.html" (dict "url" $thumbnail "ratio" "16x9" "outerClass" $style "innerClass" "rounded" "title" .Site.Title) }} {{ partial "assets/image.html" (dict "url" $thumbnail "ratio" "16x9" "outerClass" $style "innerClass" "rounded" "title" $page.Site.Title) }}
{{ end }} {{ end }}
{{ end }} {{ 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-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"> <div class="container-xxl p-4 px-xxl-0 {{ if site.Params.home.fullCover }} fullcover{{ end }} d-flex flex-column">
{{ if $breadcrumb }} {{ if $breadcrumb }}
<div>{{ partial "assets/breadcrumb.html" $page }}</div> <div>{{ partial "assets/breadcrumb.html" $page }}</div>
{{ end -}} {{ end -}}
@@ -74,11 +75,11 @@
</div> </div>
</div> </div>
{{ else }} {{ else }}
<div class="flex-fill row row-cols-1 row-cols-md-2 justify-content-{{ $justify }}"> <div class="row row-cols-1 row-cols-md-2 justify-content-{{ $justify }} flex-fill">
<div class="col col-12 col-md-{{ $width }} order-1 order-md-0 my-md-auto"> <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) }} {{ partial "partials/list/featured-body.html" (dict "page" $page "headings" $headings "orientation" $orientation "actions" $actions "align" $align) }}
</div> </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"> <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 align-self-end">
{{ partial "partials/list/featured-illustration.html" (dict "page" $page "style" "pb-4 pb-md-0") }} {{ partial "partials/list/featured-illustration.html" (dict "page" $page "style" "pb-4 pb-md-0") }}
</div> </div>
</div> </div>

View File

@@ -0,0 +1,37 @@
{{- $page := .page -}}
{{- $class := printf "img-wrap %s" .class -}}
{{- $thumbnail := "" -}}
{{- $credits := "" -}}
{{- if reflect.IsMap $page.Params.Thumbnail -}}
{{- $thumbnail = $page.Params.Thumbnail.url -}}
{{- $author := "" -}}
{{- if and $page.Params.Thumbnail.authorURL "text" $page.Params.Thumbnail.author }}
{{- $author = partial "utilities/link" (dict "destination" $page.Params.Thumbnail.authorURL "text" $page.Params.Thumbnail.author) -}}
{{- else if $page.Params.Thumbnail.author }}
{{- $author = $page.Params.Thumbnail.author -}}
{{- end -}}
{{- $origin := "" -}}
{{- if and $page.Params.Thumbnail.originURL "text" $page.Params.Thumbnail.origin }}
{{- $origin = partial "utilities/link" (dict "destination" $page.Params.Thumbnail.originURL "text" $page.Params.Thumbnail.origin) -}}
{{- else if $page.Params.Thumbnail.origin }}
{{- $origin = $page.Params.Thumbnail.origin -}}
{{- end }}
{{- if and $author $origin }}
{{ $credits = printf (T "photoFull") $author $origin }}
{{ else if $author }}
{{ $credits = T "photoShort" $author }}
{{ end }}
{{ else }}
{{- $thumbnail = $page.Params.Thumbnail -}}
{{ if or $page.Params.photoCredits $page.Params.photoSource }}
{{ warnf "DEPRECATED: frontmatter variables `photoCredits` and `photoSource` have been deprecated in release v0.18: %s" $page.RelPermalink }}
{{ end }}
{{- if and $page.Params.photoCredits $page.Params.PhotoSource }}{{ $credits = printf (T "photoFull") $page.Params.photoCredits $page.Params.PhotoSource }}{{ end -}}
{{- end -}}
{{ if $thumbnail -}}
{{- partial "assets/image.html" (dict "url" $thumbnail "ratio" "21x9" "outerClass" $class "innerClass" "rounded" "title" $page.Params.title "caption" $credits) -}}
{{ end -}}

View File

@@ -0,0 +1,21 @@
{{- $item := .item -}}
{{- $illustration := "" -}}
{{- $style := "img-wrap mx-auto mx-md-0" -}}
{{- $size := .size | default "col-12 col-sm-4 col-lg-12" -}}
{{ if $item.Params.icon }}
{{- $icon := (or (and (reflect.IsMap $item.Params.Icon) $item.Params.Icon.url) $item.Params.Icon) -}}
{{- $mode := and (reflect.IsMap $item.Params.Icon) $item.Params.Icon.mode -}}
{{ if eq (lower (path.Ext $icon)) ".json" }}
{{ $illustration = partial "assets/animation.html" (dict "data" $icon "mode" $mode "loop" false "hover" true "class" (printf "mx-auto text-center %s" $size)) }}
{{ else }}
{{ $illustration = partial "assets/icon.html" (dict "icon" "mode" $mode $icon "wrapper" "mx-auto text-center")}}
{{ end }}
{{ else }}
{{- $thumbnail := (or (and (reflect.IsMap $item.Params.Thumbnail) $item.Params.Thumbnail.url) $item.Params.Thumbnail) -}}
{{- if $thumbnail }}
{{ $illustration = partial "assets/image.html" (dict "url" $thumbnail "ratio" "16x9" "outerClass" $style "innerClass" "rounded" "title" $item.Site.Title) }}
{{ end }}
{{ end }}
{{ return $illustration }}

View File

@@ -0,0 +1,33 @@
{{- $ref := "" -}}
{{- $anchor := "" -}}
{{ $url := .url }}
{{ if not $url }}
{{- errorf "partial [utilities/GetPage.html] - Expected param 'url'" -}}
{{ end }}
{{ $page := .page }}
{{ if not $page }}
{{- errorf "partial [utilities/GetPage.html] - Expected param 'page'" -}}
{{ end }}
{{- $isExternal := ne (urls.Parse (absURL $url)).Host (urls.Parse site.BaseURL).Host -}}
{{- if not $isExternal -}}
{{- $ref = $page.GetPage $url -}}
{{ if not $ref }}
{{ $ref = (index (where $page.Site.AllPages "RelPermalink" (printf "%s/" (strings.TrimSuffix "/" $url))) 0)}}
{{ end }}
{{- if not $ref }}
{{- $segments := split $url "/" -}}
{{- if and (hasPrefix $url "/") (gt (len $segments) 1) -}}
{{- $prefix := index $segments 1 -}}
{{ with index (where site.Sites "Language.Lang" $prefix) 0 }}
{{- $path := printf "/%s" (strings.TrimPrefix (printf "/%s/" $prefix) $url) }}
{{- $ref = .GetPage $path -}}
{{ end }}
{{- end -}}
{{- end -}}
{{- end -}}
{{ return $ref }}

View File

@@ -0,0 +1,78 @@
{{- $page := .page -}}
{{- $loading := .loading -}}
{{/* Add title for current page */}}
{{- $items := slice -}}
{{ $items = $items | append (dict "title" $page.Title "content" "" )}}
{{/* Identify page sections */}}
{{- $sections := slice -}}
{{- $sections = $sections | append $page.Type -}}
{{ with $page.Params.sections }}
{{ $sections = $sections | append . }}
{{ end }}
{{ if $page.IsHome }}
{{- 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 -}}
{{ end }}
{{/* Generate title and content for each section */}}
{{- range $index, $section := $sections -}}
{{- $sectionPage := site.GetPage "section" $section -}}
{{- $sectionURL := $sectionPage.RelPermalink -}}
{{ with $sectionPage.Params.redirect}}
{{ $target := partial "utilities/GetPage.html" (dict "url" . "page" $page) }}
{{- if not $target -}}
{{ if eq (printf "%T" $page.File) "*hugolib.fileInfo"}}
{{- errorf "Cannot find redirect target on page '%s': %s" $page.File . -}}
{{ else }}
{{- errorf "Cannot find redirect target: %s" . -}}
{{ end }}
{{ else }}
{{- $sectionURL = $target.RelPermalink -}}
{{ end }}
{{ end }}
{{- $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
"loading" $loading)) " \r\n"
-}}
{{ if $sectionContent }}
{{ $items = $items | append (dict "title" $title "content" $sectionContent)}}
{{ end }}
{{- end -}}
{{ return $items }}

View File

@@ -5,7 +5,7 @@
{{ if eq (path.Ext $path) ".svg" }} {{ if eq (path.Ext $path) ".svg" }}
{{ $path := path.Join "static" .path }} {{ $path := path.Join "static" .path }}
{{ if fileExists $path }} {{ if fileExists $path }}
{{ with findRE `viewBox="\d+[\s,]\d+[\s,]\d+[\s,]\d+"` (readFile $path) 1 }} {{ with findRE `viewBox="\d*\.?\d+[\s,]\d*\.?\d+[\s,]\d*\.?\d+[\s,]\d*\.?\d+"` (readFile $path) 1 }}
{{ $content := split (index (split (index . 0) `"`) 1) " " }} {{ $content := split (index (split (index . 0) `"`) 1) " " }}
{{ $viewbox_width := float (index $content 2) }} {{ $viewbox_width := float (index $content 2) }}
{{ $viewbox_height := float (index $content 3) }} {{ $viewbox_height := float (index $content 3) }}

View File

@@ -55,8 +55,6 @@
{{- end -}} {{- end -}}
{{- end -}} {{- end -}}
{{/* warnf "FILES: %s" $sorted */}}
{{ $bundle := "" }} {{ $bundle := "" }}
{{ if gt (len $sorted) 0 }} {{ if gt (len $sorted) 0 }}
{{ $bundle = $sorted | resources.Concat $filename -}} {{ $bundle = $sorted | resources.Concat $filename -}}

View File

@@ -35,25 +35,12 @@
{{- if ne (len $segments) 2 }} {{- if ne (len $segments) 2 }}
{{- errorf "partial [utilities/link.html] - Malformed path, expected one anchor '#' only: %s" $destination -}} {{- errorf "partial [utilities/link.html] - Malformed path, expected one anchor '#' only: %s" $destination -}}
{{ else }} {{ else }}
{{- $destination = index $segments 0 -}} {{- $destination = index $segments 0 -}}
{{- $anchor = index $segments 1 -}} {{- $anchor = index $segments 1 -}}
{{ end }} {{ end }}
{{ 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 -}}
{{ $ref := partial "utilities/GetPage.html" (dict "url" $destination "page" $page) }}
{{- if not $ref -}} {{- if not $ref -}}
{{- errorf "partial [utilities/link.html] - Cannot find page: %s" $destination -}} {{- errorf "partial [utilities/link.html] - Cannot find page: %s" $destination -}}
{{- $error = true -}} {{- $error = true -}}

View File

@@ -63,6 +63,6 @@
{{ end }} {{ end }}
{{ if not $error }} {{ if not $error }}
<abbr {{ with $class }}class="{{ . }}"{{ end }} title="{{ $title }}">{{ $key }}</abbr> <abbr {{ with $class }}class="{{ . }}"{{ end }} title="{{ $title }}" tabindex="0">{{ $key }}</abbr>
{{ end }} {{ end }}
{{ end }} {{ end }}

View File

@@ -56,7 +56,7 @@
{{ with $icon }}<div class="pt-1 pe-2">{{ . }}</div>{{ end }} {{ with $icon }}<div class="pt-1 pe-2">{{ . }}</div>{{ end }}
<div class="flex-grow-1 my-auto"> <div class="flex-grow-1 my-auto">
{{ trim .Inner " \r\n" | .Page.RenderString | safeHTML -}} {{ trim .Inner " \r\n" | .Page.RenderString | safeHTML -}}
{{ if $dismissible }}<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>{{ end }} {{ if $dismissible }}<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="{{ T "close" }}"></button>{{ end }}
</div> </div>
</div> </div>
{{- end -}} {{- end -}}

View File

@@ -27,6 +27,7 @@
"tab" Optional flag to indicate if an external link should open in a new tab, defaults to setting "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. "main.externalLinks.tab" in the site's parameters.
"spacing" Optional flag to add spacing to the inline button, defaults to "true". "spacing" Optional flag to add spacing to the inline button, defaults to "true".
"wrapper" Optional element to wrap the button.
--> -->
{{ $error := false }} {{ $error := false }}
@@ -140,6 +141,10 @@
"spacing" $spacing) "spacing" $spacing)
-}} -}}
{{ with .Get "wrapper" }}
{{ $output = printf `<div class="%s">%s</div>` . $output }}
{{ end }}
{{- if .Parent -}} {{- if .Parent -}}
{{ $current := .Parent.Scratch.Get "inner" }} {{ $current := .Parent.Scratch.Get "inner" }}
{{ if $current }} {{ if $current }}

View File

@@ -8,6 +8,10 @@
original aspect ratio of the image. original aspect ratio of the image.
"portrait": Optional flag to adjust the ratio from landscape to portrait. The image itself is not rotated, only "portrait": Optional flag to adjust the ratio from landscape to portrait. The image itself is not rotated, only
the crop area is adjusted. the crop area is adjusted.
"loading": Optional loading behavior of the image, either "eager" (default) or "lazy". The loading of lazily
loaded images is deferred until the image is within scrolling range of the viewport. This should
reduce the initial loading time of the website. It is recommended to lazily load only those images
that are below the page fold.
"wrapper": Optional class attributes of the wrapper element, e.g. "mx-auto". "wrapper": Optional class attributes of the wrapper element, e.g. "mx-auto".
"class": Optional class attribute of the inner img element, e.g. "rounded". "class": Optional class attribute of the inner img element, e.g. "rounded".
"title": Optional alternate text of the image. "title": Optional alternate text of the image.
@@ -16,19 +20,33 @@
--> -->
{{- if isset .Params "src" -}} {{- if isset .Params "src" -}}
{{ $error := false -}}
{{ $url := .Get "src" | default "" -}} {{ $url := .Get "src" | default "" -}}
{{- $validRatios := slice "1x1" "3x2" "4x3" "16x9" "21x9" -}} {{- $validRatios := slice "1x1" "3x2" "4x3" "16x9" "21x9" -}}
{{ $ratio := .Get "ratio" | default "" -}} {{ $ratio := .Get "ratio" | default "" -}}
{{ if $ratio -}} {{ if $ratio -}}
{{ if not (in $validRatios $ratio) -}} {{ if not (in $validRatios $ratio) -}}
{{ errorf "Invalid value for param 'ratio': %s" .Position -}} {{ errorf "Invalid value for param 'ratio': %s" .Position -}}
{{ $error = true -}}
{{ end -}} {{ end -}}
{{ end -}} {{ end -}}
{{- $class := .Get "class" | default "" -}} {{- $class := .Get "class" | default "" -}}
{{- $wrapper := .Get "wrapper" | default "" -}} {{- $wrapper := .Get "wrapper" | default "" -}}
{{- $loading := .Get "loading" | default "" -}}
{{- $validSettings := slice "lazy" "eager" -}}
{{- if $loading -}}
{{ if not (in $validSettings $loading) -}}
{{ errorf "Invalid value for param 'loading': %s" .Position -}}
{{ $error = true -}}
{{ end -}}
{{- end -}}
{{- $lazy := eq $loading "lazy" -}}
{{ $title := .Get "title" | default "" -}} {{ $title := .Get "title" | default "" -}}
{{ $caption := .Get "caption" | default "" -}} {{ $caption := .Get "caption" | default "" -}}
{{ $supportedFlags := slice "true" "false" -}} {{ $supportedFlags := slice "true" "false" -}}
{{ $modeParam := "false" -}} {{ $modeParam := "false" -}}
{{ $mode := false -}} {{ $mode := false -}}
@@ -37,7 +55,9 @@
{{ if eq $modeParam "true" }}{{ $mode = true }}{{ else }}{{ $mode = false }}{{ end -}} {{ if eq $modeParam "true" }}{{ $mode = true }}{{ else }}{{ $mode = false }}{{ end -}}
{{ else -}} {{ else -}}
{{ errorf "Invalid value for param 'mode': %s" $modeParam -}} {{ errorf "Invalid value for param 'mode': %s" $modeParam -}}
{{ $error = true -}}
{{ end -}} {{ end -}}
{{ $portraitParam := "false" -}} {{ $portraitParam := "false" -}}
{{ $portrait := false -}} {{ $portrait := false -}}
{{ with .Get "portrait" }}{{ $portraitParam = . }}{{ end -}} {{ with .Get "portrait" }}{{ $portraitParam = . }}{{ end -}}
@@ -45,19 +65,23 @@
{{ if eq $portraitParam "true" }}{{ $portrait = true }}{{ else }}{{ $portrait = false }}{{ end -}} {{ if eq $portraitParam "true" }}{{ $portrait = true }}{{ else }}{{ $portrait = false }}{{ end -}}
{{ else -}} {{ else -}}
{{ errorf "Invalid value for param 'portrait': %s" $portraitParam -}} {{ errorf "Invalid value for param 'portrait': %s" $portraitParam -}}
{{ $error = true -}}
{{ end -}} {{ end -}}
{{- partial "assets/image.html" (dict {{- if not $error -}}
"url" $url {{- partial "assets/image.html" (dict
"ratio" $ratio "url" $url
"outerClass" $wrapper "ratio" $ratio
"innerClass" $class "outerClass" $wrapper
"title" $title "innerClass" $class
"caption" $caption "title" $title
"mode" $mode "caption" $caption
"portrait" $portrait "mode" $mode
"page" .Page) "portrait" $portrait
-}} "loading" $loading
"page" .Page)
-}}
{{- end -}}
{{ else -}} {{ else -}}
{{ errorf "Missing value for param 'src': %s" .Position -}} {{ errorf "Missing value for param 'src': %s" .Position -}}
{{ end -}} {{ end -}}

View File

@@ -73,27 +73,9 @@
{{- $isExternal := ne (urls.Parse (absURL $url)).Host (urls.Parse site.BaseURL).Host -}} {{- $isExternal := ne (urls.Parse (absURL $url)).Host (urls.Parse site.BaseURL).Host -}}
{{- if not $isExternal -}} {{- if not $isExternal -}}
{{- $url = strings.TrimSuffix "/" $url -}} {{ $ref := partial "utilities/GetPage.html" (dict "url" $url "page" .Page) }}
{{- $ref := "" -}}
{{- if not $ref -}} {{- if not $ref -}}
{{- $ref = .Page.GetPage $url -}} {{- errorf "Cannot find page: '%s' at %s" $url .Position -}}
{{- end -}}
{{- if not $ref }}
{{- $segments := split $url "/" -}}
{{- if and (hasPrefix $url "/") (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) $url) }}
{{- $ref = .GetPage $path -}}
{{ end }}
{{- end -}}
{{- end -}}
{{- if not $ref -}}
{{- errorf "Cannot find page: '%s' at %s" $href .Position -}}
{{- $error = true -}} {{- $error = true -}}
{{- end -}} {{- end -}}
{{- end -}} {{- end -}}
@@ -101,9 +83,7 @@
{{ with $anchor }} {{ with $anchor }}
{{ $url = printf "%s#%s" $url .}} {{ $url = printf "%s#%s" $url .}}
{{ end }} {{ end }}
{{- if not $error -}} {{- if not $error -}}
{{ partial "utilities/link.html" (dict "destination" $url "text" $text "cue" $cue "tab" $tab "case" $case "class" $class "page" .Page) }} {{ partial "utilities/link.html" (dict "destination" $url "text" $text "cue" $cue "tab" $tab "case" $case "class" $class "page" .Page) }}
{{- end -}} {{- end -}}

View File

@@ -22,6 +22,8 @@
{{- $fade = true -}} {{- $fade = true -}}
{{- end -}} {{- end -}}
{{- $type := .Parent.Get "type" -}}
{{- $header := .Get "header" | default "" -}} {{- $header := .Get "header" | default "" -}}
{{- if not $header -}} {{- if not $header -}}
{{- errorf "Missing value for param 'header': %s" .Parent.Position -}} {{- errorf "Missing value for param 'header': %s" .Parent.Position -}}
@@ -58,6 +60,7 @@
"body" $body "body" $body
"show" $show "show" $show
"disabled" $disabled "disabled" $disabled
"type" $type
) )
}} }}
@@ -67,4 +70,24 @@
{{ else }} {{ else }}
{{ .Parent.Scratch.Set "inner" $output }} {{ .Parent.Scratch.Set "inner" $output }}
{{ end }} {{ end }}
{{ $alternative := partial "assets/nav-item" (dict
"id" $id
"parentID" $parent
"fade" $fade
"header" $header
"class" $class
"body" $body
"show" $show
"disabled" $disabled
"type" "accordion"
)
}}
{{ $current := .Parent.Scratch.Get "alternative" }}
{{ if $current }}
{{ .Parent.Scratch.Set "alternative" (print $current $alternative) }}
{{ else }}
{{ .Parent.Scratch.Set "alternative" $alternative }}
{{ end }}
{{ end }} {{ end }}

View File

@@ -1,7 +1,7 @@
<!-- <!--
Displays a tab group of multiple items. Add nav-item inner elements for each tab pane. The shortcode supports the Displays a tab group of multiple items. Add nav-item inner elements for each tab pane. The shortcode supports the
following arguments: following arguments:
"type" Optional type of the tab group, either "tabs", "pills", or "underline". "type" Optional type of the tab group, either "tabs", "pills", "underline", or "callout".
"vertical" Optional flag to show vertical tabs instead of horizontal tabs (default). "vertical" Optional flag to show vertical tabs instead of horizontal tabs (default).
"fade" Optional flag to make tab panes fade in. "fade" Optional flag to make tab panes fade in.
"class" Optional class attribute of the tab group, e.g. “nav-fill”. "class" Optional class attribute of the tab group, e.g. “nav-fill”.
@@ -15,7 +15,7 @@
{{- $class := .Get "class" | default "" -}} {{- $class := .Get "class" | default "" -}}
{{ $type := .Get "type" | default "" -}} {{ $type := .Get "type" | default "" -}}
{{ $supportedNavTypes := slice "tabs" "pills" "underline" -}} {{ $supportedNavTypes := slice "tabs" "pills" "underline" "callout" -}}
{{ if $type }} {{ if $type }}
{{ if not (in $supportedNavTypes $type) -}} {{ if not (in $supportedNavTypes $type) -}}
{{ errorf "Invalid value for param 'type': %s" $type -}} {{ errorf "Invalid value for param 'type': %s" $type -}}
@@ -71,8 +71,18 @@
{{- $hasContent := gt (len (findRE "data-has-content=\"true\"" $inner)) 0 -}} {{- $hasContent := gt (len (findRE "data-has-content=\"true\"" $inner)) 0 -}}
{{ if $vertical }}<div class="d-flex align-items-start">{{ end }} {{ $alternative := .Scratch.Get "alternative" }}
{{ if and (eq $type "callout") $alternative }}
<div class="d-lg-none">
<div id="accordion-{{ $id }}" class="accordion mb-3{{ with $class }} {{ . }}{{ end }} nav-callout">
{{- $alternative | safeHTML -}}
</div>
</div>
<div class="d-none d-lg-block">
{{ end }}
<div class="nav{{ with $type }} nav-{{ . }}{{ end }}{{ with $class }} {{ . }}{{ end }}{{ if $vertical }} flex-column{{ end }}" id="{{ $id }}" role="tablist"{{ if $vertical }} aria-orientation="vertical"{{ end }}> <div class="nav{{ with $type }} nav-{{ . }}{{ end }}{{ with $class }} {{ . }}{{ end }}{{ if $vertical }} flex-column{{ end }}" id="{{ $id }}" role="tablist"{{ if $vertical }} aria-orientation="vertical"{{ end }}>
{{ if $vertical }}<div class="row"><div class="col-auto">{{ end }}
{{- range $index, $item := $items -}} {{- range $index, $item := $items -}}
{{- $header := partial "utilities/GetVal.html" $item -}} {{- $header := partial "utilities/GetVal.html" $item -}}
{{- $itemDisabled := in $disabled $index -}} {{- $itemDisabled := in $disabled $index -}}
@@ -81,11 +91,13 @@
{{ $header }} {{ $header }}
</button> </button>
{{ end -}} {{ end -}}
</div> {{ if $vertical }}</div><div class="col">{{ end }}
{{- if $hasContent -}}
{{- if $hasContent -}} <div class="tab-content w-100 {{ if not $vertical }} {{ end }}{{ if eq $type "tabs" }}border border-bottom-0 p-3{{ else if $vertical }}ms-3{{ else }}mt-3{{ end }}">
<div class="tab-content {{ if eq $type "tabs" }}border border-top-0 p-3{{ else if $vertical }}ms-3{{ else }}mt-3{{ end }}"> {{- $inner | safeHTML -}}
{{- $inner | safeHTML -}} </div>
{{- end -}}
{{ if $vertical }}</div></div>{{ end }}
</div> </div>
{{- end -}}
{{ if $vertical }}</div>{{ end }} {{ if and (eq $type "callout") $alternative }}</div>{{ end }}

View File

@@ -1,8 +1,17 @@
{{ define "main" }} {{ define "main" }}
<div class="container-xxl px-4 px-xxl-0"> {{- $page := . -}}
{{- $layout := $page.Params.layout -}}
<div class="container-xxl flex-fill p-4 px-xxl-0">
<div class="row row-cols-1 row-cols-sm-3"> <div class="row row-cols-1 row-cols-sm-3">
<div class="col col-md-2 d-none d-md-block"></div> <div class="col col-md-2 d-none d-md-block"></div>
<div class="col col-sm-12 col-md-8"> <div class="col col-sm-12 col-md-8">
{{- if ne $layout "featured" -}}
{{ if and (not $page.IsHome) site.Params.navigation.breadcrumb }}
<div>{{ partial "assets/breadcrumb.html" $page }}</div>
{{ end -}}
{{- end -}}
<p class="display-4 mt-5">{{ .Name | humanize }}</p> <p class="display-4 mt-5">{{ .Name | humanize }}</p>
{{ if eq .Kind "taxonomy" }} {{ if eq .Kind "taxonomy" }}

8992
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{ {
"name": "@gethinode/hinode", "name": "@gethinode/hinode",
"version": "0.21.0-alpha4", "version": "0.21.0",
"description": "Hinode is a clean documentation and blog theme for Hugo, an open-source static site generator", "description": "Hinode is a clean documentation and blog theme for Hugo, an open-source static site generator",
"keywords": [ "keywords": [
"hugo", "hugo",
@@ -73,12 +73,12 @@
"autoprefixer": "^10.4.16", "autoprefixer": "^10.4.16",
"cssnano": "^6.0.1", "cssnano": "^6.0.1",
"cssnano-preset-advanced": "^6.0.1", "cssnano-preset-advanced": "^6.0.1",
"eslint": "^8.51.0", "eslint": "^8.52.0",
"eslint-config-standard": "^17.1.0", "eslint-config-standard": "^17.1.0",
"eslint-plugin-import": "^2.28.1", "eslint-plugin-import": "^2.29.0",
"eslint-plugin-n": "^16.2.0", "eslint-plugin-n": "^16.2.0",
"eslint-plugin-promise": "^6.1.1", "eslint-plugin-promise": "^6.1.1",
"hugo-bin": "^0.115.0", "hugo-bin": "^0.116.3",
"markdownlint-cli2": "^0.10.0", "markdownlint-cli2": "^0.10.0",
"netlify-plugin-hugo-cache-resources": "^0.2.1", "netlify-plugin-hugo-cache-resources": "^0.2.1",
"npm-run-all": "^4.1.5", "npm-run-all": "^4.1.5",
@@ -88,7 +88,7 @@
"rimraf": "^5.0.5", "rimraf": "^5.0.5",
"shx": "^0.3.4", "shx": "^0.3.4",
"stylelint": "^15.11.0", "stylelint": "^15.11.0",
"stylelint-config-standard-scss": "^11.0.0" "stylelint-config-standard-scss": "^11.1.0"
}, },
"optionalDependencies": { "optionalDependencies": {
"fsevents": "*" "fsevents": "*"

View File

@@ -6,7 +6,7 @@ homepage = "https://gethinode.com"
demosite = "https://demo.gethinode.com" demosite = "https://demo.gethinode.com"
tags = ["blog", "documentation", "minimal", "modern", "customizable", "search", "bootstrap"] tags = ["blog", "documentation", "minimal", "modern", "customizable", "search", "bootstrap"]
features = ["security aware", "fast by default", "seo-ready", "development tools", "bootstrap framework", "netlify-ready", "full text search", "page layouts", "versioned documentation"] features = ["security aware", "fast by default", "seo-ready", "development tools", "bootstrap framework", "netlify-ready", "full text search", "page layouts", "versioned documentation"]
min_version = "0.118.0" # fixes Hugo issue #11406 min_version = "0.120.0"
[author] [author]
name = "Mark Dumay" name = "Mark Dumay"