Compare commits

...

245 Commits

Author SHA1 Message Date
Mark Dumay
6661434c35 Merge pull request #671 from gethinode/validation
Improve argument validation and documentation
2023-12-24 14:57:51 +01:00
Mark Dumay
aee6b3a32d Merge branch 'main' into validation 2023-12-24 14:50:16 +01:00
mark
4b0cc260cb Bump package release 2023-12-24 14:48:24 +01:00
mark
7611315941 Remove redundant comments 2023-12-24 14:47:47 +01:00
mark
3b1f71a601 Update build stats 2023-12-24 14:47:20 +01:00
mark
fead3555fc Support release info 2023-12-24 14:47:01 +01:00
mark
cd3f99fc90 Fix aria label 2023-12-24 14:27:21 +01:00
mark
a2e6855117 Refactor required args check 2023-12-24 14:27:04 +01:00
mark
1e4cd3a5da Handle empty args 2023-12-24 14:26:51 +01:00
Mark Dumay
865898ac4f Merge pull request #670 from gethinode/validation
Refactor argument validation and documentation
2023-12-24 12:03:50 +01:00
Mark Dumay
44ace26cde Merge branch 'main' into validation 2023-12-24 11:55:17 +01:00
mark
d0350c7672 Bump package release 2023-12-24 11:54:25 +01:00
mark
943a115ef0 Update build stats 2023-12-24 11:53:19 +01:00
mark
745322b3fe Add args shortcode to render structured arguments 2023-12-24 11:53:10 +01:00
mark
90ea2cb760 Refactor card args validation 2023-12-24 11:52:18 +01:00
Mark Dumay
2d6c3c7d64 Merge pull request #667 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2023-12-22 06:51:30 +01:00
markdumay
4401c49c54 fix: update Hugo module dependencies 2023-12-22 05:46:02 +00:00
github-actions[bot]
fa3bfa7008 Merge pull request #665 from gethinode/dependabot/npm_and_yarn/eslint-plugin-n-16.5.0
Bump eslint-plugin-n from 16.4.0 to 16.5.0
2023-12-20 13:58:37 +00:00
dependabot[bot]
14c2ddc725 Bump eslint-plugin-n from 16.4.0 to 16.5.0
Bumps [eslint-plugin-n](https://github.com/eslint-community/eslint-plugin-n) from 16.4.0 to 16.5.0.
- [Release notes](https://github.com/eslint-community/eslint-plugin-n/releases)
- [Commits](https://github.com/eslint-community/eslint-plugin-n/compare/16.4.0...16.5.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-20 13:52:36 +00:00
Mark Dumay
1e55dc8f65 Merge pull request #664 from uvham521/feature/chinese-support
Add Chinese translation files
2023-12-19 14:09:32 +01:00
uvham521
78980dde3f Add Chinese translation files 2023-12-19 11:59:48 +00:00
github-actions[bot]
3a770b6f40 Merge pull request #662 from gethinode/dependabot/npm_and_yarn/eslint-8.56.0
Bump eslint from 8.55.0 to 8.56.0
2023-12-18 13:25:07 +00:00
dependabot[bot]
b271adef3f Bump eslint from 8.55.0 to 8.56.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.55.0 to 8.56.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.55.0...v8.56.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-12-18 13:19:12 +00:00
Mark Dumay
639c9770b8 Merge pull request #661 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2023-12-17 06:34:31 +01:00
markdumay
e6b29666ad fix: update Hugo module dependencies 2023-12-17 03:16:31 +00:00
Mark Dumay
dd052250f6 Merge pull request #660 from gethinode/develop
Add support for absolute paths
2023-12-16 08:12:10 +01:00
mark
1223a22d7e Bump package version 2023-12-16 08:03:31 +01:00
mark
b6f034f8e3 Add support for absolute paths 2023-12-16 08:03:07 +01:00
mark
ca01b67396 Mount data folder 2023-12-16 07:53:12 +01:00
Mark Dumay
eb3a2b0bb1 Merge pull request #659 from gethinode/main
Sync with main
2023-12-16 07:42:47 +01:00
Mark Dumay
41711fb527 Merge pull request #658 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2023-12-16 07:32:09 +01:00
markdumay
6e7a9a8796 fix: update Hugo module dependencies 2023-12-16 06:25:10 +00:00
github-actions[bot]
92838c0572 Merge pull request #657 from gethinode/dependabot/npm_and_yarn/cssnano-6.0.2
Bump cssnano from 6.0.1 to 6.0.2
2023-12-15 13:37:12 +00:00
dependabot[bot]
3f71da19ee Bump cssnano from 6.0.1 to 6.0.2
Bumps [cssnano](https://github.com/cssnano/cssnano) from 6.0.1 to 6.0.2.
- [Release notes](https://github.com/cssnano/cssnano/releases)
- [Commits](https://github.com/cssnano/cssnano/compare/cssnano@6.0.1...cssnano@6.0.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-15 13:30:07 +00:00
github-actions[bot]
43a6dd2b79 Merge pull request #655 from gethinode/dependabot/npm_and_yarn/cssnano-preset-advanced-6.0.2
Bump cssnano-preset-advanced from 6.0.1 to 6.0.2
2023-12-15 13:29:26 +00:00
dependabot[bot]
806fac97db Bump cssnano-preset-advanced from 6.0.1 to 6.0.2
Bumps [cssnano-preset-advanced](https://github.com/cssnano/cssnano) from 6.0.1 to 6.0.2.
- [Release notes](https://github.com/cssnano/cssnano/releases)
- [Commits](https://github.com/cssnano/cssnano/compare/cssnano-preset-advanced@6.0.1...cssnano-preset-advanced@6.0.2)

---
updated-dependencies:
- dependency-name: cssnano-preset-advanced
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-15 13:24:01 +00:00
github-actions[bot]
9fd07827db Merge pull request #656 from gethinode/dependabot/npm_and_yarn/eslint-plugin-import-2.29.1
Bump eslint-plugin-import from 2.29.0 to 2.29.1
2023-12-15 13:23:20 +00:00
dependabot[bot]
28cdcec7ee Bump eslint-plugin-import from 2.29.0 to 2.29.1
Bumps [eslint-plugin-import](https://github.com/import-js/eslint-plugin-import) from 2.29.0 to 2.29.1.
- [Release notes](https://github.com/import-js/eslint-plugin-import/releases)
- [Changelog](https://github.com/import-js/eslint-plugin-import/blob/main/CHANGELOG.md)
- [Commits](https://github.com/import-js/eslint-plugin-import/compare/v2.29.0...v2.29.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-15 13:18:05 +00:00
github-actions[bot]
cb2e946435 Merge pull request #654 from gethinode/dependabot/npm_and_yarn/eslint-plugin-n-16.4.0
Bump eslint-plugin-n from 16.3.1 to 16.4.0
2023-12-11 13:57:51 +00:00
dependabot[bot]
2e7bb50d43 Bump eslint-plugin-n from 16.3.1 to 16.4.0
Bumps [eslint-plugin-n](https://github.com/eslint-community/eslint-plugin-n) from 16.3.1 to 16.4.0.
- [Release notes](https://github.com/eslint-community/eslint-plugin-n/releases)
- [Commits](https://github.com/eslint-community/eslint-plugin-n/compare/16.3.1...16.4.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-11 13:52:03 +00:00
github-actions[bot]
3d7875ba18 Merge pull request #653 from gethinode/dependabot/npm_and_yarn/hugo-bin-0.117.1
Bump hugo-bin from 0.117.0 to 0.117.1
2023-12-08 13:20:14 +00:00
dependabot[bot]
29ab88d581 Bump hugo-bin from 0.117.0 to 0.117.1
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.117.0 to 0.117.1.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.117.0...v0.117.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-08 13:14:49 +00:00
Mark Dumay
d93bbe4fe3 Merge pull request #652 from gethinode/develop
Update Netlify build environment
2023-12-07 06:20:19 +01:00
mark
3a2d062e22 Update netlify env 2023-12-07 06:01:29 +01:00
mark
c3ef897a71 Bump package version 2023-12-07 05:58:21 +01:00
Mark Dumay
73964e6be4 Merge pull request #651 from gethinode/main
Sync with main
2023-12-07 05:50:40 +01:00
Mark Dumay
520c000d3b Merge pull request #648 from gethinode/nested
Fix nesting behavior
2023-12-07 05:42:43 +01:00
Mark Dumay
e3c1db7b88 Merge branch 'main' into nested 2023-12-07 05:27:09 +01:00
github-actions[bot]
9ba3218f61 Merge pull request #650 from gethinode/dependabot/npm_and_yarn/hugo-bin-0.117.0
Bump hugo-bin from 0.116.4 to 0.117.0
2023-12-06 14:03:21 +00:00
dependabot[bot]
a912d65608 Bump hugo-bin from 0.116.4 to 0.117.0
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.116.4 to 0.117.0.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.116.4...v0.117.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-06 13:57:08 +00:00
github-actions[bot]
ffd6bb9c46 Merge pull request #649 from gethinode/dependabot/npm_and_yarn/postcss-cli-11.0.0
Bump postcss-cli from 10.1.0 to 11.0.0
2023-12-06 13:55:58 +00:00
dependabot[bot]
6a238c3a11 Bump postcss-cli from 10.1.0 to 11.0.0
Bumps [postcss-cli](https://github.com/postcss/postcss-cli) from 10.1.0 to 11.0.0.
- [Release notes](https://github.com/postcss/postcss-cli/releases)
- [Changelog](https://github.com/postcss/postcss-cli/blob/master/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss-cli/compare/10.1.0...11.0.0)

---
updated-dependencies:
- dependency-name: postcss-cli
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-06 13:50:57 +00:00
Mark Dumay
3210d72068 Merge branch 'main' into nested 2023-12-06 11:18:25 +01:00
mark
add57592cd Fix default nested behavior 2023-12-06 06:30:04 +01:00
Mark Dumay
584131c8c4 Merge pull request #647 from florianloewen/fix-clipboard-typos
Fix German translations for clipboard interactions
2023-12-05 06:41:39 +01:00
Florian Loewen
9e8a1b4e3d Update German translations for clipboard interactions 2023-12-05 00:32:16 +01:00
github-actions[bot]
61efc2de16 Merge pull request #646 from gethinode/dependabot/npm_and_yarn/eslint-8.55.0
Bump eslint from 8.54.0 to 8.55.0
2023-12-04 14:05:19 +00:00
dependabot[bot]
ce1f688b38 Bump eslint from 8.54.0 to 8.55.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.54.0 to 8.55.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.54.0...v8.55.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-12-04 13:58:36 +00:00
mark
088464bf13 Improve nested behavior 2023-11-25 08:28:28 +01:00
Mark Dumay
936ca3ffc2 Merge pull request #643 from gethinode/develop
Fix flexsearch index
2023-11-24 16:24:01 +01:00
mark
4f6320f7cf Bump package release 2023-11-24 16:15:29 +01:00
mark
ccf3169381 Update build stats 2023-11-24 16:15:21 +01:00
Mark Dumay
54d66d2b02 Merge pull request #642 from gethinode/main
Sync with main
2023-11-24 16:12:12 +01:00
Mark Dumay
25aeb94364 Merge pull request #641 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2023-11-24 16:03:58 +01:00
markdumay
5657ef5b40 fix: update Hugo module dependencies 2023-11-24 14:32:59 +00:00
Mark Dumay
c8818d104f Merge pull request #640 from gethinode/develop
Add option to exclude pages from search index
2023-11-23 12:15:40 +01:00
mark
ed239034bf Bump package version 2023-11-23 10:53:54 +01:00
mark
774f936d3b Add example to exclude page from search index 2023-11-23 10:53:15 +01:00
Mark Dumay
905c28886a Merge pull request #639 from gethinode/main
Sync with main
2023-11-23 10:46:46 +01:00
Mark Dumay
ad430074f7 Merge pull request #637 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2023-11-23 10:33:34 +01:00
Mark Dumay
6449f01185 Merge branch 'main' into hugo-mod-dependencies 2023-11-23 07:46:15 +01:00
github-actions[bot]
0c3488472c Merge pull request #634 from gethinode/dependabot/npm_and_yarn/markdownlint-cli2-0.11.0
Bump markdownlint-cli2 from 0.10.0 to 0.11.0
2023-11-23 06:36:39 +00:00
Mark Dumay
ee7990ec1e Merge branch 'main' into dependabot/npm_and_yarn/markdownlint-cli2-0.11.0 2023-11-23 07:30:55 +01:00
Mark Dumay
b892b48388 Merge pull request #638 from gethinode/develop
Fix linting issues
2023-11-23 07:30:43 +01:00
Mark Dumay
340213e4ff Merge branch 'main' into develop 2023-11-23 07:22:06 +01:00
mark
989f2eed4c Fix linting issues 2023-11-23 07:21:16 +01:00
markdumay
4fadb7a6ab fix: update Hugo module dependencies 2023-11-23 03:16:45 +00:00
dependabot[bot]
8f1fd120eb Bump markdownlint-cli2 from 0.10.0 to 0.11.0
Bumps [markdownlint-cli2](https://github.com/DavidAnson/markdownlint-cli2) from 0.10.0 to 0.11.0.
- [Changelog](https://github.com/DavidAnson/markdownlint-cli2/blob/main/CHANGELOG.md)
- [Commits](https://github.com/DavidAnson/markdownlint-cli2/compare/v0.10.0...v0.11.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-20 13:16:20 +00:00
github-actions[bot]
f2fc3b60a4 Merge pull request #635 from gethinode/dependabot/npm_and_yarn/eslint-8.54.0
Bump eslint from 8.53.0 to 8.54.0
2023-11-20 13:15:34 +00:00
dependabot[bot]
c0735f71ef Bump eslint from 8.53.0 to 8.54.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.53.0 to 8.54.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.53.0...v8.54.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-11-20 13:09:54 +00:00
Mark Dumay
858f9b3430 Merge pull request #632 from gethinode/develop
Make tags page sidebar aware
2023-11-14 14:47:27 +01:00
Mark Dumay
402a7a85b8 Merge branch 'main' into develop 2023-11-14 13:54:26 +01:00
mark
97fbc6087c Make tags page sidebar aware 2023-11-14 13:53:37 +01:00
Mark Dumay
cc4a4766a9 Merge pull request #631 from gethinode/develop
Make page breakpoint configurable
2023-11-14 13:01:08 +01:00
Mark Dumay
6821ac2b60 Merge branch 'main' into develop 2023-11-14 12:10:40 +01:00
mark
06e10655ec Bump package release 2023-11-14 12:10:07 +01:00
mark
d32fdfa987 Make page breakpoint configurable 2023-11-14 12:09:16 +01:00
mark
9e97f063e5 Update build stats 2023-11-14 12:06:41 +01:00
mark
627f174ae4 Fix duplicate rendering of section body 2023-11-14 12:06:26 +01:00
Mark Dumay
c349c28f08 Merge pull request #630 from gethinode/develop
Improve list overview of subsections
2023-11-13 12:49:40 +01:00
Mark Dumay
e73f96ffe9 Merge branch 'main' into develop 2023-11-13 11:53:02 +01:00
mark
bd4ab51aff Improve list overview of subsections 2023-11-13 11:52:15 +01:00
Mark Dumay
81823c35ec Merge pull request #629 from gethinode/develop
Fix variable scope error
2023-11-12 17:55:05 +01:00
Mark Dumay
c567949205 Merge branch 'main' into develop 2023-11-12 15:32:19 +01:00
mark
def136cb1b Fix variable scope error 2023-11-12 15:31:55 +01:00
Mark Dumay
889dc2e5ef Merge pull request #628 from gethinode/develop
Fix spacing of timeline icons
2023-11-11 17:01:08 +01:00
Mark Dumay
371323f929 Merge branch 'main' into develop 2023-11-11 16:56:03 +01:00
mark
1694702d11 Fix spacing of timeline icons 2023-11-11 16:55:36 +01:00
Mark Dumay
048f50ddc4 Merge pull request #627 from gethinode/develop
Add check for vector image availability
2023-11-10 19:34:22 +01:00
Mark Dumay
488cfc576b Merge branch 'main' into develop 2023-11-10 18:25:39 +01:00
mark
1d8e564acf Update package version 2023-11-10 18:25:02 +01:00
mark
6e94bc279b Add check for vector image availability 2023-11-10 18:24:31 +01:00
github-actions[bot]
90ee15cccf Merge pull request #626 from gethinode/dependabot/npm_and_yarn/eslint-plugin-n-16.3.1
Bump eslint-plugin-n from 16.3.0 to 16.3.1
2023-11-10 13:46:56 +00:00
dependabot[bot]
751ff334ac Bump eslint-plugin-n from 16.3.0 to 16.3.1
Bumps [eslint-plugin-n](https://github.com/eslint-community/eslint-plugin-n) from 16.3.0 to 16.3.1.
- [Release notes](https://github.com/eslint-community/eslint-plugin-n/releases)
- [Commits](https://github.com/eslint-community/eslint-plugin-n/compare/16.3.0...16.3.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-10 13:41:17 +00:00
Mark Dumay
c200af1ad2 Merge pull request #625 from gethinode/develop
Add fetch priority support for images
2023-11-10 07:10:18 +01:00
Mark Dumay
5232afa812 Merge branch 'main' into develop 2023-11-10 06:57:17 +01:00
mark
ad8e2f51d7 Add fetch priority support for images
The priority provides a hint to the browser on how it should prioritize the fetch of an image relative to other
images. The implementation is experimental and currently only supported by Chrome, Edge, and Opera.

Hinode sets a high priority for the thumbnail image. On list pages, this image is included in the featured section. For single pages, the thumbnail is included in the page header. Carousel images that are not active will receive a low fetch priority. All other images are unchanged.

See https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/fetchpriority#browser_compatibility for browser compatibility.
2023-11-10 06:56:30 +01:00
Mark Dumay
ff708cf580 Merge pull request #624 from gethinode/develop
Fix styles of embedded youtube videos
2023-11-09 18:31:19 +01:00
Mark Dumay
f93ee9f01b Merge branch 'main' into develop 2023-11-09 18:18:22 +01:00
mark
611320e661 Bump package release 2023-11-09 18:17:47 +01:00
mark
8a56d82cb9 Fix styles of embedded youtube videos 2023-11-09 18:16:59 +01:00
Mark Dumay
c052086388 Merge pull request #623 from gethinode/develop
Add language to download title if applicable
2023-11-09 17:27:37 +01:00
Mark Dumay
d4bfbf925a Merge branch 'main' into develop 2023-11-09 17:02:28 +01:00
mark
b6b7e7be4f Add language to download title if applicable 2023-11-09 16:59:18 +01:00
github-actions[bot]
61ef48798b Merge pull request #622 from gethinode/dependabot/npm_and_yarn/hugo-bin-0.116.4
Bump hugo-bin from 0.116.3 to 0.116.4
2023-11-09 13:32:04 +00:00
dependabot[bot]
d65382e80d Bump hugo-bin from 0.116.3 to 0.116.4
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.116.3 to 0.116.4.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.116.3...v0.116.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-09 13:24:53 +00:00
Mark Dumay
e97d3e6fe9 Merge pull request #621 from gethinode/develop
Fix incorrect class init of thumbnails
2023-11-07 16:28:01 +01:00
Mark Dumay
5cb189d545 Merge branch 'main' into develop 2023-11-07 16:14:38 +01:00
mark
7897fe5f00 Bump package release 2023-11-07 16:13:45 +01:00
mark
6c4e0e8992 Fix incorrect class init 2023-11-07 16:13:10 +01:00
Mark Dumay
3c6a533236 Merge pull request #620 from gethinode/develop
Fix empty class attributes
2023-11-07 15:53:21 +01:00
Mark Dumay
69a9108655 Merge branch 'main' into develop 2023-11-07 15:42:02 +01:00
mark
4fdc7bb7d3 Bump release version and adjust optional dependencies 2023-11-07 15:41:05 +01:00
mark
170bd7034a Update build stats 2023-11-07 15:40:42 +01:00
mark
2bc99753d6 Fix empty class attributes 2023-11-07 15:31:54 +01:00
Mark Dumay
3ae1671b46 Merge pull request #619 from gethinode/develop
Improve configurability of single pages
2023-11-07 14:54:33 +01:00
Mark Dumay
4b9f137d41 Merge branch 'main' into develop 2023-11-07 14:44:37 +01:00
mark
651f733622 Update build environment 2023-11-07 14:43:09 +01:00
github-actions[bot]
a2b0c2c05f Merge pull request #618 from gethinode/dependabot/npm_and_yarn/eslint-plugin-n-16.3.0
Bump eslint-plugin-n from 16.2.0 to 16.3.0
2023-11-07 13:38:06 +00:00
mark
21476927ef Update build stats 2023-11-07 14:27:25 +01:00
mark
8c86081271 Support configurable thumbnail ratio 2023-11-07 14:27:17 +01:00
mark
fe5e94d277 Add download option to sharing buttons 2023-11-07 14:26:57 +01:00
mark
585db8094e Support related content 2023-11-07 14:26:22 +01:00
mark
4bcc536d42 Suppress empty more button 2023-11-07 14:26:00 +01:00
mark
b22c2e5ca5 Make metadata of single page header configurable 2023-11-07 14:25:43 +01:00
mark
715b714781 Make rendering of single page content configurable 2023-11-07 14:24:13 +01:00
mark
1d4b95a827 Refactor TOC for single pages 2023-11-07 14:22:38 +01:00
dependabot[bot]
0530a01445 Bump eslint-plugin-n from 16.2.0 to 16.3.0
Bumps [eslint-plugin-n](https://github.com/eslint-community/eslint-plugin-n) from 16.2.0 to 16.3.0.
- [Release notes](https://github.com/eslint-community/eslint-plugin-n/releases)
- [Commits](https://github.com/eslint-community/eslint-plugin-n/compare/16.2.0...16.3.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-07 13:22:19 +00:00
mark
2a29eba66e Bump package release 2023-11-07 14:10:10 +01:00
mark
e93b66f4b8 Update build stats 2023-11-07 06:29:33 +01:00
mark
44bb9d7f12 Add message when no tags are found 2023-11-07 06:29:27 +01:00
Mark Dumay
4f58f20b94 Merge pull request #616 from gethinode/develop
Use EXIF values to rotate and flip images
2023-11-06 15:02:18 +01:00
Mark Dumay
cd047ea6fe Merge branch 'main' into develop 2023-11-06 14:51:15 +01:00
github-actions[bot]
7d6526f291 Merge pull request #615 from gethinode/dependabot/npm_and_yarn/eslint-8.53.0
Bump eslint from 8.52.0 to 8.53.0
2023-11-06 13:50:20 +00:00
mark
ede17bdae8 Bump package release 2023-11-06 14:48:19 +01:00
mark
876315613e Use EXIF values to rotate and flip images 2023-11-06 14:47:45 +01:00
dependabot[bot]
b2c5efb4bd Bump eslint from 8.52.0 to 8.53.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.52.0 to 8.53.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.52.0...v8.53.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-11-06 13:43:25 +00:00
Mark Dumay
74047866e5 Merge pull request #613 from gethinode/main
Sync with main
2023-11-06 09:30:00 +01:00
Mark Dumay
6fb25c2111 Merge pull request #612 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2023-11-06 09:20:55 +01:00
markdumay
db3fc0014e fix: update Hugo module dependencies 2023-11-06 08:07:37 +00:00
Mark Dumay
7105f8e719 Merge pull request #610 from gethinode/develop
Improve tag handling
2023-11-06 07:38:54 +01:00
Mark Dumay
96ab7df306 Merge branch 'main' into develop 2023-11-05 12:39:02 +01:00
mark
1a964adabb Preserve original tag name 2023-11-05 12:38:13 +01:00
mark
9f4adc0777 Keep article count on small screens 2023-11-05 12:38:02 +01:00
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
81 changed files with 3490 additions and 8565 deletions

View File

@@ -9,32 +9,32 @@
<!-- Badges --> <!-- Badges -->
<p align="center"> <p align="center">
<a href="https://gohugo.io" alt="Hugo website"> <a href="https://gohugo.io">
<img src="https://img.shields.io/badge/generator-hugo-brightgreen"> <img src="https://img.shields.io/badge/generator-hugo-brightgreen" alt="Hugo website">
</a> </a>
<a href="https://gethinode.com" alt="Hinode theme"> <a href="https://gethinode.com">
<img src="https://img.shields.io/badge/theme-hinode-blue"> <img src="https://img.shields.io/badge/theme-hinode-blue" alt="Hinode theme">
</a> </a>
<a href="https://www.npmjs.com/package/%40gethinode/hinode" alt="npm package"> <a href="https://www.npmjs.com/package/%40gethinode/hinode">
<img src="https://img.shields.io/npm/v/%40gethinode/hinode"> <img src="https://img.shields.io/npm/v/%40gethinode/hinode" alt="npm package">
</a> </a>
<a href="https://app.netlify.com/sites/gethinode-demo/deploys" alt="Netlify Status"> <a href="https://app.netlify.com/sites/gethinode-demo/deploys">
<img src="https://img.shields.io/netlify/0ad42e3e-fdfa-4d37-8e26-58badd429a67"> <img src="https://img.shields.io/netlify/0ad42e3e-fdfa-4d37-8e26-58badd429a67" alt="Netlify Status">
</a> </a>
<a href="https://stats.uptimerobot.com/xyGVYhLJmV" alt="UptimeRobot Status"> <a href="https://stats.uptimerobot.com/xyGVYhLJmV">
<img src="https://img.shields.io/uptimerobot/status/m791334689-73d9dfc82030f4f955b2d6bb"> <img src="https://img.shields.io/uptimerobot/status/m791334689-73d9dfc82030f4f955b2d6bb" alt="UptimeRobot Status">
</a> </a>
<a href="https://github.com/gethinode/hinode/commits/main" alt="Last commit"> <a href="https://github.com/gethinode/hinode/commits/main">
<img src="https://img.shields.io/github/last-commit/gethinode/hinode.svg"> <img src="https://img.shields.io/github/last-commit/gethinode/hinode.svg" alt="Last commit">
</a> </a>
<a href="https://github.com/gethinode/hinode/issues" alt="Issues"> <a href="https://github.com/gethinode/hinode/issues">
<img src="https://img.shields.io/github/issues/gethinode/hinode.svg"> <img src="https://img.shields.io/github/issues/gethinode/hinode.svg" alt="Issues">
</a> </a>
<a href="https://github.com/gethinode/hinode/pulls" alt="Pulls"> <a href="https://github.com/gethinode/hinode/pulls">
<img src="https://img.shields.io/github/issues-pr-raw/gethinode/hinode.svg"> <img src="https://img.shields.io/github/issues-pr-raw/gethinode/hinode.svg" alt="Pulls">
</a> </a>
<a href="https://github.com/gethinode/hinode/blob/main/LICENSE" alt="License"> <a href="https://github.com/gethinode/hinode/blob/main/LICENSE">
<img src="https://img.shields.io/github/license/gethinode/hinode"> <img src="https://img.shields.io/github/license/gethinode/hinode" alt="License">
</a> </a>
</p> </p>

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)
@@ -26,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";
@@ -36,7 +38,7 @@
@import "components/table.scss"; @import "components/table.scss";
@import "components/timeline.scss"; @import "components/timeline.scss";
@import "components/toc.scss"; @import "components/toc.scss";
@import "components/vimeo.scss"; @import "components/video.scss";
@import "common/animation.scss"; @import "common/animation.scss";
@import "common/styles.scss"; @import "common/styles.scss";
@import "layouts/reboot.scss"; @import "layouts/reboot.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)
@@ -24,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";
@@ -34,7 +36,7 @@
@import "components/table.scss"; @import "components/table.scss";
@import "components/timeline.scss"; @import "components/timeline.scss";
@import "components/toc.scss"; @import "components/toc.scss";
@import "components/vimeo.scss"; @import "components/video.scss";
@import "common/animation.scss"; @import "common/animation.scss";
@import "common/styles.scss"; @import "common/styles.scss";
@import "layouts/reboot.scss"; @import "layouts/reboot.scss";

View File

@@ -40,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

@@ -14,3 +14,8 @@
height: 100%; height: 100%;
object-fit: cover; object-fit: cover;
} }
.mirrorred {
-webkit-transform: scaleX(-1);
transform: scaleX(-1);
}

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

@@ -93,4 +93,8 @@
} }
} }
} }
} }
.section-menu > .nav-link.active, .section-menu > .nav-link:hover {
color: var(--bs-primary);
}

View File

@@ -1,3 +1,19 @@
.youtube-embedded {
position: relative;
padding-bottom: 56.25%;
height: 0;
overflow: hidden;
}
.youtube-embedded > iframe {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
border:0;
}
// Adapted from https://github.com/gohugoio/hugo/tpl/tplimpl/embedded/templates/shortcodes/vimeo_simple.html // Adapted from https://github.com/gohugoio/hugo/tpl/tplimpl/embedded/templates/shortcodes/vimeo_simple.html
.__h_video { .__h_video {
position: relative; position: relative;

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"
@@ -97,6 +104,9 @@ home = ["HTML", "RSS", "REDIR"]
[[module.mounts]] [[module.mounts]]
source = "content" source = "content"
target = "content" target = "content"
[[module.mounts]]
source = "data"
target = "data"
[[module.mounts]] [[module.mounts]]
source = "i18n" source = "i18n"
target = "i18n" target = "i18n"

View File

@@ -7,6 +7,8 @@
canonifyAssetsURLs = false canonifyAssetsURLs = false
endorse = true endorse = true
footerBelowFold = false footerBelowFold = false
loading = "lazy"
breakpoint = "md"
[main.externalLinks] [main.externalLinks]
cue = false cue = false
tab = false tab = false
@@ -61,6 +63,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',

174
data/structures/card.yml Normal file
View File

@@ -0,0 +1,174 @@
comment: >-
Displays a Bootstrap card. Either specify a valid path, or set the arguments
title, href, header, description, and thumbnail individually. The latter
arguments override any page attributes.
arguments:
title:
type: string
optional: true
comment: >-
Title of the card.
path:
type: path
optional: true
comment: >-
Path of the page, override with other parameters.
href:
type: url
optional: true
comment: >-
Address for the button or hyperlink.
group: partial
class:
type: string
optional: true
parent: merge
comment: >-
Class attribute of the card element, e.g. “w-50”.
color:
type: select
optional: true
parent: cascade
comment: >-
Theme color of the card. By default, no color is specified.
options:
values:
- primary
- secondary
- success
- danger
- warning
- info
- light
- dark
- white
- black
- body
- body-tertiary
padding:
type: select
optional: true
default: auto
parent: cascade
comment: >-
Padding of the content.
options:
values:
- "0"
- "1"
- "2"
- "3"
- "4"
- "5"
- "auto"
gutter:
type: select
optional: true
default: "0"
parent: cascade
comment: >-
Gutter between columns in a group.
options:
values:
- "0"
- "1"
- "2"
- "3"
- "4"
- "5"
header:
type: select
optional: true
default: full
parent: cascade
comment: >-
Header components of the card, displayed in small caps.
options:
values:
- full
- publication
- tags
- none
footer:
type: select
optional: true
default: none
parent: cascade
comment: >-
Footer components of the card, displayed in small caps.
options:
values:
- full
- publication
- tags
- none
description:
type:
- string
- template.HTML
optional: true
comment: >-
Description of the card.
group: partial
loading:
type: select
optional: true
default: eager
comment: >-
Loading behavior of the image. 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.
options:
values:
- lazy
- eager
group: partial
thumbnail:
type: path
optional: true
comment: >-
Thumbnail image url, displayed on top or the left of the card.
ratio:
type: select
optional: true
comment: >-
Ratio of the thumbnail image, defaults to "16x9" (stacked orientation)
or "1x1" (horizontal orientation).
options:
values:
- 1x1
- 3x2
- 4x3
- 16x9
- 21x9
group: partial
alt:
type: string
optional: true
release: v0.19.0
comment: >-
Alternate text for the thumbnail, uses "title" by default.
icon:
type: string
optional: true
comment: >-
Font Awesome icon, displayed on top or the left of the card.
orientation:
type: select
optional: true
default: stacked
parent: cascade
comment: >-
Placement of the thumbnail or icon.
options:
values:
- stacked
- horizontal
- horizontal-sm
- none
body:
optional: true
comment: >-
Description of the card.
group: shortcode

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

@@ -5,6 +5,8 @@
modes = ["light", "dark"] modes = ["light", "dark"]
canonifyAssetsURLs = false canonifyAssetsURLs = false
footerBelowFold = false footerBelowFold = false
loading = "lazy"
breakpoint = "md"
[main.externalLinks] [main.externalLinks]
cue = true cue = true
tab = true tab = true
@@ -16,6 +18,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
@@ -48,6 +52,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

@@ -1,9 +1,10 @@
--- ---
author: Mark Dumay author: Mark Dumay
title: Fourth post title: Fourth post (excluded from search)
date: 2023-01-01 date: 2023-01-01
description: This is my fourth blog post. description: This is my fourth blog post. It is excluded from the search index.
tags: ["blog"] tags: ["blog"]
searchExclude: true
thumbnail: thumbnail:
url: img/flowers.jpg url: img/flowers.jpg
author: Arvee Marie author: Arvee Marie

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,12 @@ 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-flexsearch v1.7.0 h1:VFTf6iUyT9b47jTDAxh8nVHU1eUBrdxlykaC90lTfqk=
github.com/gethinode/mod-flexsearch v1.7.0/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
github.com/gethinode/mod-flexsearch v1.7.1 h1:f4rjKkhleDVzqwUmwP1xZdhjru5VQ9g0MRDz0G6oLyY=
github.com/gethinode/mod-flexsearch v1.7.1/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
github.com/gethinode/mod-fontawesome v1.2.4 h1:SqE3CQ+boaBIhrVh3MPu4nz0uoHPfEH5t60nNY1CfsI= github.com/gethinode/mod-fontawesome v1.2.4 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=
@@ -28,6 +36,12 @@ github.com/gethinode/mod-fontawesome v1.4.0 h1:JfmVYwQl19jmZxgxY64yvGqJAAEiFkKf2
github.com/gethinode/mod-fontawesome v1.4.0/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI= github.com/gethinode/mod-fontawesome v1.4.0/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
github.com/gethinode/mod-fontawesome v1.5.0 h1:3mW5dnWauuF9wSWXNIY+PPgTNPlc/xQOQoG7XGic1Yk= github.com/gethinode/mod-fontawesome v1.5.0 h1:3mW5dnWauuF9wSWXNIY+PPgTNPlc/xQOQoG7XGic1Yk=
github.com/gethinode/mod-fontawesome v1.5.0/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI= github.com/gethinode/mod-fontawesome v1.5.0/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
github.com/gethinode/mod-fontawesome v1.5.1 h1:C7goQY4HrEua/lpjC++laydNKBuYo1+307ngn5tyXeM=
github.com/gethinode/mod-fontawesome v1.5.1/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
github.com/gethinode/mod-fontawesome v1.6.1 h1:iqOgDGdw7Bs4hnzjF/8JsUn10omyKQZTglLqNenT1K0=
github.com/gethinode/mod-fontawesome v1.6.1/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
github.com/gethinode/mod-fontawesome v1.7.3 h1:YzRCYSasVRIcImVmTJYjqNJ+KmyNWfm/bMgtM0slvzs=
github.com/gethinode/mod-fontawesome v1.7.3/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
github.com/gethinode/mod-katex v1.0.1/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg= github.com/gethinode/mod-katex v1.0.1/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
github.com/gethinode/mod-katex v1.0.2 h1:pIG4n3qLl/IVe7BEiwn+GL8r5lOCtF6FDxlcrPKdAXk= github.com/gethinode/mod-katex v1.0.2 h1:pIG4n3qLl/IVe7BEiwn+GL8r5lOCtF6FDxlcrPKdAXk=
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=
@@ -35,6 +49,8 @@ github.com/gethinode/mod-katex v1.0.3 h1:fvlUWqcUQqv2zRNM2kfmJ6GhXA816Tl1nfVrUkm
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 h1:NozgWPFnHhx1W+E9DnwMTRpvxPbdqdANEtwp9N3/mj8=
github.com/gethinode/mod-katex v1.0.4/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg= github.com/gethinode/mod-katex v1.0.4/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
github.com/gethinode/mod-katex v1.0.5 h1:AVhcTINYory0ygChQERf8PcyJkbT1oqhmLRF6ESnWOY=
github.com/gethinode/mod-katex v1.0.5/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

@@ -38,8 +38,14 @@
"sub", "sub",
"sup", "sup",
"svg", "svg",
"table",
"tbody",
"td",
"th",
"thead",
"time", "time",
"title", "title",
"tr",
"ul", "ul",
"use" "use"
], ],
@@ -56,9 +62,9 @@
"alert-dismissible", "alert-dismissible",
"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",
@@ -119,12 +125,16 @@
"col-6", "col-6",
"col-8", "col-8",
"col-9", "col-9",
"col-auto",
"col-lg-2",
"col-lg-4", "col-lg-4",
"col-lg-8", "col-lg-8",
"col-md-10", "col-md-10",
"col-md-2", "col-md-2",
"col-md-3",
"col-md-4", "col-md-4",
"col-md-8", "col-md-8",
"col-md-9",
"col-md-auto", "col-md-auto",
"col-sm-12", "col-sm-12",
"col-sm-3", "col-sm-3",
@@ -140,6 +150,7 @@
"d-grid", "d-grid",
"d-inline", "d-inline",
"d-inline-flex", "d-inline-flex",
"d-lg-block",
"d-md-block", "d-md-block",
"d-md-flex", "d-md-flex",
"d-md-none", "d-md-none",
@@ -165,10 +176,6 @@
"fa-2xs", "fa-2xs",
"fa-4x", "fa-4x",
"fa-activity", "fa-activity",
"fa-angle-left",
"fa-angle-right",
"fa-angles-left",
"fa-angles-right",
"fa-arrow-left", "fa-arrow-left",
"fa-arrow-right", "fa-arrow-right",
"fa-bootstrap", "fa-bootstrap",
@@ -212,7 +219,6 @@
"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",
@@ -303,15 +309,12 @@
"p-2", "p-2",
"p-3", "p-3",
"p-4", "p-4",
"page-item",
"page-link",
"pagination",
"pagination-terse",
"pb-2", "pb-2",
"pb-3", "pb-3",
"pb-4", "pb-4",
"pb-5", "pb-5",
"pb-md-0", "pb-md-0",
"pe-1",
"pe-3", "pe-3",
"position-absolute", "position-absolute",
"position-fixed", "position-fixed",
@@ -321,7 +324,6 @@
"ps-1", "ps-1",
"ps-3", "ps-3",
"ps-xl-3", "ps-xl-3",
"pt-3",
"pt-5", "pt-5",
"pt-md-3", "pt-md-3",
"px-4", "px-4",
@@ -341,6 +343,7 @@
"row", "row",
"row-cols-1", "row-cols-1",
"row-cols-2", "row-cols-2",
"row-cols-lg-3",
"row-cols-md-2", "row-cols-md-2",
"row-cols-md-3", "row-cols-md-3",
"row-cols-sm-2", "row-cols-sm-2",
@@ -350,6 +353,7 @@
"search-suggestions", "search-suggestions",
"shadow", "shadow",
"show", "show",
"sidebar-overflow",
"slide", "slide",
"small", "small",
"spinner-border", "spinner-border",
@@ -361,6 +365,8 @@
"syntax-highlight", "syntax-highlight",
"tab-content", "tab-content",
"tab-pane", "tab-pane",
"table",
"table-responsive",
"tag-link", "tag-link",
"text-bg-body", "text-bg-body",
"text-bg-body-tertiary", "text-bg-body-tertiary",

9
go.mod
View File

@@ -3,10 +3,13 @@ module github.com/gethinode/hinode
go 1.19 go 1.19
require ( require (
github.com/airbnb/lottie-web v5.12.2+incompatible // indirect
github.com/gethinode/mod-bootstrap v1.2.2 // indirect github.com/gethinode/mod-bootstrap v1.2.2 // indirect
github.com/gethinode/mod-flexsearch v1.5.1 // indirect github.com/gethinode/mod-flexsearch v1.7.1 // indirect
github.com/gethinode/mod-fontawesome v1.5.0 // indirect github.com/gethinode/mod-fontawesome v1.7.3 // indirect
github.com/gethinode/mod-katex v1.0.4 // indirect github.com/gethinode/mod-katex v1.0.5 // 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
) )

20
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=
@@ -32,6 +34,12 @@ 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-flexsearch v1.7.0 h1:VFTf6iUyT9b47jTDAxh8nVHU1eUBrdxlykaC90lTfqk=
github.com/gethinode/mod-flexsearch v1.7.0/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
github.com/gethinode/mod-flexsearch v1.7.1 h1:f4rjKkhleDVzqwUmwP1xZdhjru5VQ9g0MRDz0G6oLyY=
github.com/gethinode/mod-flexsearch v1.7.1/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
github.com/gethinode/mod-fontawesome v1.0.2 h1:ZSK6D20/w4y5GnfYfTBB58uHD0ChIfkpKfRGwioS9rg= github.com/gethinode/mod-fontawesome v1.0.2 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=
@@ -58,6 +66,12 @@ github.com/gethinode/mod-fontawesome v1.4.0 h1:JfmVYwQl19jmZxgxY64yvGqJAAEiFkKf2
github.com/gethinode/mod-fontawesome v1.4.0/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI= github.com/gethinode/mod-fontawesome v1.4.0/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
github.com/gethinode/mod-fontawesome v1.5.0 h1:3mW5dnWauuF9wSWXNIY+PPgTNPlc/xQOQoG7XGic1Yk= github.com/gethinode/mod-fontawesome v1.5.0 h1:3mW5dnWauuF9wSWXNIY+PPgTNPlc/xQOQoG7XGic1Yk=
github.com/gethinode/mod-fontawesome v1.5.0/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI= github.com/gethinode/mod-fontawesome v1.5.0/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
github.com/gethinode/mod-fontawesome v1.5.1 h1:C7goQY4HrEua/lpjC++laydNKBuYo1+307ngn5tyXeM=
github.com/gethinode/mod-fontawesome v1.5.1/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
github.com/gethinode/mod-fontawesome v1.6.1 h1:iqOgDGdw7Bs4hnzjF/8JsUn10omyKQZTglLqNenT1K0=
github.com/gethinode/mod-fontawesome v1.6.1/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
github.com/gethinode/mod-fontawesome v1.7.3 h1:YzRCYSasVRIcImVmTJYjqNJ+KmyNWfm/bMgtM0slvzs=
github.com/gethinode/mod-fontawesome v1.7.3/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
github.com/gethinode/mod-katex v1.0.0 h1:me/3dIIZBkfk1mRIFt8QiAGYwYDoSG5bc2hHRtIutFc= github.com/gethinode/mod-katex v1.0.0 h1:me/3dIIZBkfk1mRIFt8QiAGYwYDoSG5bc2hHRtIutFc=
github.com/gethinode/mod-katex v1.0.0/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg= github.com/gethinode/mod-katex v1.0.0/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
github.com/gethinode/mod-katex v1.0.1 h1:809QUztxmKgMNchU+v03iMO7Ma+ISc3ZzhXYauc21rs= github.com/gethinode/mod-katex v1.0.1 h1:809QUztxmKgMNchU+v03iMO7Ma+ISc3ZzhXYauc21rs=
@@ -68,6 +82,8 @@ github.com/gethinode/mod-katex v1.0.3 h1:fvlUWqcUQqv2zRNM2kfmJ6GhXA816Tl1nfVrUkm
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 h1:NozgWPFnHhx1W+E9DnwMTRpvxPbdqdANEtwp9N3/mj8=
github.com/gethinode/mod-katex v1.0.4/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg= github.com/gethinode/mod-katex v1.0.4/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
github.com/gethinode/mod-katex v1.0.5 h1:AVhcTINYory0ygChQERf8PcyJkbT1oqhmLRF6ESnWOY=
github.com/gethinode/mod-katex v1.0.5/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=
@@ -90,3 +106,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

@@ -15,6 +15,7 @@
"link", "link",
"meta", "meta",
"nav", "nav",
"ol",
"p", "p",
"path", "path",
"script", "script",
@@ -29,11 +30,14 @@
"active", "active",
"align-items-center", "align-items-center",
"align-self-center", "align-self-center",
"align-self-end",
"bg-body", "bg-body",
"bg-opacity-10", "bg-opacity-10",
"bg-primary", "bg-primary",
"bottom-0", "bottom-0",
"bottom-bar", "bottom-bar",
"breadcrumb",
"breadcrumb-item",
"btn", "btn",
"btn-close", "btn-close",
"btn-primary", "btn-primary",
@@ -41,8 +45,10 @@
"col-12", "col-12",
"col-6", "col-6",
"col-md-2", "col-md-2",
"col-md-3",
"col-md-4", "col-md-4",
"col-md-8", "col-md-8",
"col-md-9",
"col-sm-12", "col-sm-12",
"collapse", "collapse",
"collapsed", "collapsed",
@@ -85,7 +91,6 @@
"form-control", "form-control",
"fs-3", "fs-3",
"fs-5", "fs-5",
"fw-30",
"fw-bold", "fw-bold",
"hstack", "hstack",
"img-fluid", "img-fluid",
@@ -144,7 +149,6 @@
"row-cols-1", "row-cols-1",
"row-cols-2", "row-cols-2",
"row-cols-md-2", "row-cols-md-2",
"row-cols-sm-2",
"row-cols-sm-3", "row-cols-sm-3",
"search", "search",
"search-input", "search-input",

View File

@@ -30,9 +30,9 @@
- id: shareSystem - id: shareSystem
translation: "Betriebssystem" translation: "Betriebssystem"
- id: copyToClipboard - id: copyToClipboard
translation: "In Zwischenablage kopieren" translation: "In die Zwischenablage kopieren"
- id: copiedToClipboard - id: copiedToClipboard
translation: "Der Text befindet sich in die Zwischenablage" translation: "befindet sich in der Zwischenablage"
- id: link - id: link
translation: "Link zur Webseite" translation: "Link zur Webseite"
- id: code - id: code

View File

@@ -27,6 +27,18 @@
translation: "More {{ . }}" translation: "More {{ . }}"
- id: emptyList - id: emptyList
translation: "No articles found" translation: "No articles found"
- id: emptyTags
translation: "No tags found"
# Languages
- id: lang_de
translation: "German"
- id: lang_en
translation: "English"
- id: lang_nl
translation: "Dutch"
- id: lang_fr
translation: "French"
# Sharing # Sharing
- id: shareLink - id: shareLink
@@ -79,6 +91,8 @@
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
@@ -119,3 +133,17 @@
translation: "Show" translation: "Show"
- id: comments - id: comments
translation: "Comments" translation: "Comments"
# Arguments
- id: name
translation: "Name"
- id: type
translation: "Type"
- id: required
translation: "Required"
- id: default
translation: "Default"
- id: comment
translation: "Comment"
- id: supportedValues
translation: "Supported values"

View File

@@ -25,6 +25,18 @@
translation: "Meer {{ . }}" translation: "Meer {{ . }}"
- id: emptyList - id: emptyList
translation: "Geen artikelen gevonden" translation: "Geen artikelen gevonden"
- id: emptyTags
translation: "Geen tags gevonden"
# Languages
- id: lang_de
translation: "Duits"
- id: lang_en
translation: "Engels"
- id: lang_nl
translation: "Nederlands"
- id: lang_fr
translation: "Frans"
# Sharing # Sharing
- id: shareLink - id: shareLink
@@ -77,6 +89,8 @@
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
@@ -117,3 +131,18 @@
translation: "Tonen" translation: "Tonen"
- id: comments - id: comments
translation: "Reacties" translation: "Reacties"
# Arguments
- id: name
translation: "Naam"
- id: type
translation: "Type"
- id: required
translation: "Verplicht"
- id: default
translation: "Standaardwaarde"
- id: comment
translation: "Toelichting"
- id: supportedValues
translation: "Toegestane waarden"

135
i18n/zh-hans.yaml Normal file
View File

@@ -0,0 +1,135 @@
# Single pages
- id: postedOnDate
translation: "发布于 {{ . }}"
- id: lastModified
translation: "最后修改于 {{ . }}"
- id: read
translation: "阅读"
- id: minutesShort
translation: "分钟"
- id: words
translation: "字"
- id: photoFull
translation: "照片由 %s 于 %s 拍摄"
- id: photoShort
translation: "照片由 {{ . }} 拍摄"
- id: photoOn
translation: "于"
- id: draft
translation: "草稿"
# List pages
- id: article
translation: "文章"
- id: articles
translation: "文章"
- id: more
translation: "更多 {{ . }}"
- id: emptyList
translation: "没有找到文章"
- id: emptyTags
translation: "没有找到标签"
# Languages
- id: lang_de
translation: "German"
- id: lang_en
translation: "English"
- id: lang_nl
translation: "Dutch"
- id: lang_fr
translation: "French"
# Sharing
- id: shareLink
translation: "分享至 {{ . }}"
- id: shareSystem
translation: "系统"
- id: copyToClipboard
translation: "复制到剪贴板"
- id: copiedToClipboard
translation: "已复制到剪贴板"
- id: link
translation: "链接"
- id: code
translation: "代码"
- id: download
translation: "下载文章"
# Pagination
- id: paginationNav
translation: "页面导航"
- id: paginationPrevious
translation: "上一页"
- id: paginationNext
translation: "下一页"
- id: paginationFirst
translation: "第一页"
- id: paginationLast
translation: "最后一页"
# Navigation
- id: colorMode
translation: "切换主题"
- id: colorLight
translation: "亮色"
- id: colorDark
translation: "暗色"
- id: colorAuto
translation: "自动"
- id: toggleMainNav
translation: "切换主导航"
- id: home
translation: "首页"
- id: languageSwitcherLabel
translation: "语言"
- id: close
translation: "关闭"
# Table of contents
- id: toc
translation: "本页目录"
- id: seeAlso
translation: "参见"
- id: sectionMenu
translation: "选择一个主题"
# Sidebar
- id: toggleSidebar
translation: "切换侧边栏导航"
# Feature
- id: addedFeature
translation: "新增于 {{ . }}"
- id: deprecatedFeature
translation: "已弃用于 {{ . }}"
# Versioning
- id: latest
translation: "最新"
- id: allVersions
translation: "所有版本"
- id: newerVersionAlert
translation: "有一个更新版本的 {{ . }}!"
# 404 page
- id: pageNotFound
translation: "您访问的页面不存在或发生了其他错误。请返回我们的{{ . }}。"
- id: pageNotFoundTitle
translation: "页面未找到"
- id: pageNotFoundHome
translation: "首页"
# Footer
- id: copyright
translation: "Copyright"
- id: rights
translation: "版权所有"
- id: poweredBy
translation: "由 {{ . }} 提供支持。"
# Comments
- id: show
translation: "显示"
- id: comments
translation: "评论"

135
i18n/zh-hant.yaml Normal file
View File

@@ -0,0 +1,135 @@
# Single pages
- id: postedOnDate
translation: "發佈於 {{ . }}"
- id: lastModified
translation: "最後修改於 {{ . }}"
- id: read
translation: "閱讀"
- id: minutesShort
translation: "分鐘"
- id: words
translation: "字"
- id: photoFull
translation: "照片由 %s 於 %s 拍攝"
- id: photoShort
translation: "照片由 {{ . }} 拍攝"
- id: photoOn
translation: "於"
- id: draft
translation: "草稿"
# List pages
- id: article
translation: "文章"
- id: articles
translation: "文章"
- id: more
translation: "更多 {{ . }}"
- id: emptyList
translation: "沒有找到文章"
- id: emptyTags
translation: "沒有找到標籤"
# Languages
- id: lang_de
translation: "German"
- id: lang_en
translation: "English"
- id: lang_nl
translation: "Dutch"
- id: lang_fr
translation: "French"
# Sharing
- id: shareLink
translation: "分享至 {{ . }}"
- id: shareSystem
translation: "系統"
- id: copyToClipboard
translation: "複製到剪貼板"
- id: copiedToClipboard
translation: "已複製到剪貼板"
- id: link
translation: "連結"
- id: code
translation: "程式碼"
- id: download
translation: "下載文章"
# Pagination
- id: paginationNav
translation: "頁面導航"
- id: paginationPrevious
translation: "上一頁"
- id: paginationNext
translation: "下一頁"
- id: paginationFirst
translation: "第一頁"
- id: paginationLast
translation: "最後一頁"
# Navigation
- id: colorMode
translation: "切換主題"
- id: colorLight
translation: "亮色"
- id: colorDark
translation: "暗色"
- id: colorAuto
translation: "自動"
- id: toggleMainNav
translation: "切換主導航"
- id: home
translation: "首頁"
- id: languageSwitcherLabel
translation: "語言"
- id: close
translation: "關閉"
# Table of contents
- id: toc
translation: "本頁目錄"
- id: seeAlso
translation: "參見"
- id: sectionMenu
translation: "選擇一個主題"
# Sidebar
- id: toggleSidebar
translation: "切換側邊欄導航"
# Feature
- id: addedFeature
translation: "新增於 {{ . }}"
- id: deprecatedFeature
translation: "已棄用於 {{ . }}"
# Versioning
- id: latest
translation: "最新"
- id: allVersions
translation: "所有版本"
- id: newerVersionAlert
translation: "有一個更新版本的 {{ . }}!"
# 404 page
- id: pageNotFound
translation: "您訪問的頁面不存在或發生了其他錯誤。請返回我們的{{ . }}。"
- id: pageNotFoundTitle
translation: "頁面未找到"
- id: pageNotFoundHome
translation: "首頁"
# Footer
- id: copyright
translation: "Copyright"
- id: rights
translation: "版權所有"
- id: poweredBy
translation: "由 {{ . }} 提供支持。"
# Comments
- id: show
translation: "顯示"
- id: comments
translation: "評論"

View File

@@ -39,11 +39,17 @@
{{- 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 -}}
{{- $fullCover := or (or (and .IsHome .Site.Params.home.fullCover) .Page.Params.fullCover) .Site.Params.main.footerBelowFold }}
{{- $.Scratch.Set "fullCover" $fullCover -}}
{{- /* Define section headings */ -}} {{- /* Define section headings */ -}}
{{ $sections := partial "utilities/GetSections.html" . }} {{- $loading := "" -}}
{{- if $fullCover }}{{ $loading = .Site.Params.main.loading }}{{ end -}}
{{ $sections := partial "utilities/GetSections.html" (dict "page" . "loading" $loading) }}
{{- $.Scratch.Set "sections" $sections -}} {{- $.Scratch.Set "sections" $sections -}}
{{- $fullCover := or (or (and .IsHome .Site.Params.home.fullCover) .Page.Params.fullCover) .Site.Params.main.footerBelowFold }} {{- /* Define main breakpoint */ -}}
{{- $.Scratch.Set "breakpoint" (partial "utilities/GetBreakpoint.html") }}
<!doctype html> <!doctype html>
<html lang="{{ .Site.Language.Lang }}" class="no-js"> <html lang="{{ .Site.Language.Lang }}" class="no-js">

View File

@@ -1,88 +1,30 @@
{{- define "featured" }} {{- define "featured" }}
{{- $sections := $.Scratch.Get "sections" -}} {{ .Render "list/header" }}
{{- $headings := slice }}
{{ if .Params.sectionMenu }}
{{ range $sections }}
{{ $headings = $headings | append .title }}
{{ end }}
{{ end }}
{{- $page := . -}}
{{- $orientation := site.Params.list.feature.orientation | default "horizontal" -}}
{{- $width := site.Params.list.feature.width | default 6 -}}
{{- $justify := site.Params.list.feature.justify | default "center" -}}
{{- $align := site.Params.list.feature.align | default "center" -}}
{{- $actions := $page.Params.actions -}}
{{- $layout := $page.Params.layout -}}
{{ if $page.IsHome }}
{{- $orientation = or site.Params.home.feature.orientation $orientation -}}
{{- $width = or site.Params.home.feature.width $width -}}
{{- $justify = or site.Params.home.feature.justify $justify -}}
{{- $align = or site.Params.home.feature.align $align -}}
{{- $actions = (or $actions site.Params.featured.actions) -}}
{{ 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 -}}
{{ end }} {{ end }}
{{- define "main" -}} {{- define "main" -}}
{{- $page := . -}} {{- $page := . -}}
{{- $sections := $.Scratch.Get "sections" -}} {{- $sections := $.Scratch.Get "sections" -}}
{{- $fullCover := $.Scratch.Get "fullCover" -}}
{{- $layout := $page.Params.layout -}} {{- $layout := $page.Params.layout -}}
<div class="container-xxl flex-fill px-4 px-xxl-0"> <div class="container-xxl p-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 $sections (eq (len $sections) 1)) (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 */}}
{{ range $sections }} {{ range $sections }}
{{ .content | safeHTML }} {{ .content | safeHTML }}
{{ end }} {{ 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,27 @@
{{- $sections := $.Scratch.Get "sections" -}}
{{- $fullCover := $.Scratch.Get "fullCover" -}}
{{- $breakpoint := $.Scratch.Get "breakpoint" -}}
{{- $layout := .Params.layout -}}
<div class="row row-cols-1 row-cols-{{ $breakpoint.current }}-2">
<div class="col-12 col-{{ $breakpoint.current }}-9">
{{ 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 class="col col-{{ $breakpoint.current }}-3 d-none d-{{ $breakpoint.current }}-block">
{{/* Empty in default layout */}}
</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,13 +1,13 @@
{{- define "partials/single-main.html" -}} {{- define "partials/single-main.html" -}}
{{- $breakpoint := $.Scratch.Get "breakpoint" -}}
{{ if .Site.Params.navigation.breadcrumb }}{{ partial "assets/breadcrumb.html" . }}{{ end -}} {{ if .Site.Params.navigation.breadcrumb }}{{ partial "assets/breadcrumb.html" . }}{{ end -}}
{{ .Render "single/header" }} {{ .Render "single/header" }}
{{- 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-{{ $breakpoint.current }}-none pb-5">{{ partial "assets/toc-dropdown.html" . }}</div>
{{- end -}} {{- end -}}
{{ .Render "single/body" }} {{ .Render "single/body" }}
{{ partial "utilities/ProcessContent" (dict "page" .Page "raw" .RawContent) }}
{{ .Render "single/footer" }} {{ .Render "single/footer" }}
{{- if and .Site.Params.comments.enabled .Params.showComments | default true -}} {{- if and .Site.Params.comments.enabled .Params.showComments | default true -}}
@@ -17,21 +17,15 @@
{{ end -}} {{ end -}}
{{ define "main" -}} {{ define "main" -}}
{{- $download := .Params.download -}}
{{- if and $download (not (fileExists (path.Join "static" $download))) -}}
{{- errorf "Cannot find download file for page '%s': %s" .File.Path $download -}}
{{- end -}}
{{- $menu := .Scratch.Get "sidebar" -}} {{- $menu := .Scratch.Get "sidebar" -}}
{{- $version := .Scratch.Get "version" -}} {{- $version := .Scratch.Get "version" -}}
{{- $breakpoint := $.Scratch.Get "breakpoint" -}}
{{ $sidebar := "" }} {{ $sidebar := "" }}
{{- $hasSidebar := .Site.Params.navigation.sidebar | default true -}} {{- $hasSidebar := .Site.Params.navigation.sidebar | default true -}}
{{ if and $menu $hasSidebar }}{{ $sidebar = partial "assets/sidebar.html" (dict "page" . "menu" $menu "version" $version) }}{{ end }} {{ if and $menu $hasSidebar }}{{ $sidebar = partial "assets/sidebar.html" (dict "page" . "menu" $menu "version" $version) }}{{ end }}
{{ $toc := "" }} {{ $toc := .Render "single/panel-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 -}} {{ 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">
@@ -46,34 +40,24 @@
{{ end }} {{ end }}
<div class="container-xxl flex-fill p-4 px-xxl-0"> <div class="container-xxl flex-fill p-4 px-xxl-0">
{{ if and $menu $hasSidebar -}} {{ if $hasSidebar -}}
<div class="row row-cols-md-2 row-cols-lg-3"> <div class="row row-cols-1 row-cols-{{ $breakpoint.current }}-2 row-cols-{{ $breakpoint.next }}-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-{{ $breakpoint.next }}-2 d-none d-{{ $breakpoint.next }}-block sidebar-overflow sticky-top pt-5">
{{ $sidebar | safeHTML }} {{ $sidebar | safeHTML }}
</div> </div>
<div class="col col-md-9 col-lg-8 mb-5 p-4"> <div class="col-12 col-{{ $breakpoint.current }}-9 col-{{ $breakpoint.next }}-8 mb-5 p-4">
{{ partial "partials/single-main.html" . }} {{ partial "partials/single-main.html" . }}
</div> </div>
<div class="col col-lg-2 d-none d-lg-block pt-5"> <div class="col col-{{ $breakpoint.current }}-3 col-{{ $breakpoint.next }}-2 d-none d-{{ $breakpoint.current }}-block pt-5">
{{ $toc | safeHTML }} {{ $toc | safeHTML }}
</div> </div>
</div> </div>
{{ else if $hasSidebar }}
<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-sm-12 col-md-8">
{{ partial "partials/single-main.html" . }}
</div>
<div class="col col-md-2 d-none d-md-block">
{{ $toc | safeHTML }}
</div>
</div>
{{ else }} {{ else }}
<div class="row row-cols-1 row-cols-sm-2"> <div class="row row-cols-1 row-cols-{{ $breakpoint.current }}-2">
<div class="col col-sm-12 col-md-9"> <div class="col col-{{ $breakpoint.prev }}-12 col-{{ $breakpoint.current }}-9">
{{ partial "partials/single-main.html" . }} {{ partial "partials/single-main.html" . }}
</div> </div>
<div class="col col-md-3 d-none d-md-block"> <div class="col col-{{ $breakpoint.current }}-3 d-none d-{{ $breakpoint.current }}-block">
{{ $toc | safeHTML }} {{ $toc | safeHTML }}
</div> </div>
</div> </div>

View File

@@ -1 +1,3 @@
{{- partial "single/thumbnail.html" . -}} {{- partial "single/thumbnail.html" (dict "page" . "class" "mb-5") -}}
{{ partial "utilities/ProcessContent" (dict "page" .Page "raw" .RawContent) }}

View File

@@ -1,12 +1,31 @@
{{ $lastmodstr := (partial "utilities/date.html" (dict "date" .Lastmod "format" "long")) -}} {{- $metadata := "full" -}}
{{ $datestr := (partial "utilities/date.html" (dict "date" .Date "format" "long")) -}} {{ if isset .Params "metadata" }}
{{ $metadata = .Params.metadata }}
{{ else }}
{{- with (index site.Params.pages .Type ) -}}
{{ if isset . "metadata" }}{{ $metadata = (index . "metadata") }}{{ end }}
{{- end -}}
{{ end }}
{{- $supportedStates := slice "full" "original" "none" -}}
{{- if not (in $supportedStates $metadata) -}}
{{- errorf "layout [_default/single/header.html] - Invalid value for param 'metadata': %s" $metadata -}}
{{- end -}}
{{ with .Title }}<p class="display-4 mt-5">{{ . }}</p>{{ end }} {{ with .Title }}<p class="display-4 mt-5">{{ . }}</p>{{ end }}
<small class="text-body-secondary text-uppercase"> {{ if ne $metadata "none" }}
{{ $datestr | i18n "postedOnDate" -}} {{ $lastmodstr := (partial "utilities/date.html" (dict "date" .Lastmod "format" "long")) -}}
{{ if ne $datestr $lastmodstr -}}&nbsp;({{ $lastmodstr | i18n "lastModified" }}){{ end }} &bull; {{ $datestr := (partial "utilities/date.html" (dict "date" .Date "format" "long")) -}}
{{ .ReadingTime | lang.FormatNumber 0 }}&nbsp;{{ i18n "minutesShort" }} {{ i18n "read" }} &bull; <small class="text-body-secondary text-uppercase">
{{ .WordCount | lang.FormatNumber 0 }}&nbsp;{{ i18n "words" }} {{ $datestr | i18n "postedOnDate" -}}
</small> {{ if eq $metadata "full" }}
{{ if ne $datestr $lastmodstr -}}&nbsp;({{ $lastmodstr | i18n "lastModified" }}){{ end }}
{{ end }}
&bull;
{{ .ReadingTime | lang.FormatNumber 0 }}&nbsp;{{ i18n "minutesShort" }} {{ i18n "read" }} &bull;
{{ .WordCount | lang.FormatNumber 0 }}&nbsp;{{ i18n "words" }}
</small>
{{ end }}
{{- if gt (len (.GetTerms "tags")) 0 -}} {{- if gt (len (.GetTerms "tags")) 0 -}}
<div class="mt-3"> <div class="mt-3">

View File

@@ -0,0 +1,42 @@
{{- $download := .Params.download -}}
{{- if and $download (not (fileExists (path.Join "static" $download))) -}}
{{- errorf "Cannot find download file for page '%s': %s" .File.Path $download -}}
{{- end -}}
{{- $toc := .Site.Params.navigation.toc -}}
{{ if $toc }}
{{ if isset .Params "includeToc" }}
{{ $toc = .Params.includeToc }}
{{ else }}
{{- with (index site.Params.pages .Type) -}}
{{ if isset . "includetoc" }}
{{ $toc = index . "includetoc" }}
{{ if ne (printf "%T" $toc) "bool" }}
{{ errorf "Expected bool value in site parameters: pages.%s.includeToc" $.Type }}
{{ end }}
{{ end }}
{{- end -}}
{{ end }}
{{ end }}
<div class="toc toc-sidebar mb-5 my-md-0 ps-xl-3 mb-lg-5 p-3 text-body-secondary sticky-top">
{{ with $download }}
{{ $title := (T "download" ) }}
{{ $lang := strings.TrimPrefix "." (path.Ext (path.BaseName .)) }}
{{ if and $lang (ne (string site.LanguageCode) $lang) }}
{{ range site.Languages }}
{{ if eq .LanguageCode $lang }}
{{ $title = printf "%s (%s)" (T "download") (T (printf "lang_%s" .LanguageCode)) }}
{{ end }}
{{ end }}
{{ end }}
<div class="mb-5 text-center">
{{ $attr := dict "download" (path.Base .) }}
{{ partial "assets/button.html" (dict "href" . "title" $title "color" "primary" "outline" "true" "icon" "fas download" "size" "sm" "attributes" $attr) }}
</div>
{{ end }}
{{ if $toc }}
{{ partial "assets/toc.html" (dict "page" . "download" $download) }}
{{ end -}}
</div>

View File

@@ -1 +1 @@
{{/* Intentionally left blank to suppress thumbnail */}} {{ partial "utilities/ProcessContent" (dict "page" .Page "raw" .RawContent) }}

View File

@@ -1 +1 @@
{{/* Intentionally left blank to suppress thumbnail */}} {{ partial "utilities/ProcessContent" (dict "page" .Page "raw" .RawContent) }}

View File

@@ -67,7 +67,7 @@
{{- with .badge }}{{ $badge = . }}{{ end -}} {{- with .badge }}{{ $badge = . }}{{ end -}}
{{- $label := "" -}} {{- $label := "" -}}
{{- with .label }}{{ $label = . }}{{ end -}} {{- if .label }}{{ $label = .label }}{{ else }}{{ $label = $title }}{{ end -}}
{{- $tooltip := "" -}} {{- $tooltip := "" -}}
{{- if not (strings.HasSuffix $state "active") -}} {{- if not (strings.HasSuffix $state "active") -}}
@@ -143,7 +143,8 @@
{{- $attributes := .attributes -}} {{- $attributes := .attributes -}}
<a aria-label="{{ (or $label $title) | safeHTML }}" {{ if ne $state "disabled" }}{{ with $href }}href="{{ . }}"{{ end }}{{ end -}} <a aria-label="{{ (or $label $title) | safeHTML }}"
{{ if ne $state "disabled" }}{{ with $href }}href="{{ . }}"{{ end }}{{ end -}}
{{- with $id }} id="{{ . }}"{{ end -}} {{- with $id }} id="{{ . }}"{{ end -}}
{{- with $target }} target="{{ . }}"{{ end }}{{ with $rel }} rel="{{ . }}"{{ end -}} {{- with $target }} target="{{ . }}"{{ end }}{{ with $rel }} rel="{{ . }}"{{ end -}}
{{- with $toast }} data-toast-target="{{ $toast }}"{{ end -}} {{- with $toast }} data-toast-target="{{ $toast }}"{{ end -}}

View File

@@ -36,6 +36,7 @@
--> -->
{{- $page := .page -}} {{- $page := .page -}}
{{- $breakpoint := partial "utilities/GetBreakpoint.html" -}}
{{- if not (in (slice "*hugolib.pageState" "*hugolib.pageForShortcode") (printf "%T" $page)) -}} {{- if not (in (slice "*hugolib.pageState" "*hugolib.pageForShortcode") (printf "%T" $page)) -}}
{{- errorf "partial [assets/card-group.html] - Invalid value for param 'page': %T" $page -}} {{- errorf "partial [assets/card-group.html] - Invalid value for param 'page': %T" $page -}}
@@ -66,7 +67,7 @@
{{ range $index, $element := $pages }} {{ range $index, $element := $pages }}
{{ $params := dict }} {{ $params := dict }}
<!-- regular page --> <!-- regular page -->
{{- if $element.RelPermalink -}} {{- if and $element.RelPermalink $element.File -}}
{{- $params = merge $params (dict "path" $element.File.Path) -}} {{- $params = merge $params (dict "path" $element.File.Path) -}}
<!-- headless page --> <!-- headless page -->
{{- else -}} {{- else -}}
@@ -108,10 +109,10 @@
{{- end -}} {{- end -}}
{{- $colGrid := "" -}} {{- $colGrid := "" -}}
{{- if eq $cols "1" }}{{ $colGrid = "row-cols-1" -}} {{- if eq $cols "1" }}{{ $colGrid = "row-cols-1" -}}
{{- else if eq $cols "2" }}{{ if $responsive }}{{ $colGrid = "row-cols-1 row-cols-sm-1 row-cols-md-2" }}{{ else }}{{ $colGrid = "row-cols-2" }}{{ end -}} {{- else if eq $cols "2" }}{{ if $responsive }}{{ $colGrid = printf "row-cols-1 row-cols-%s-1 row-cols-%s-2" $breakpoint.prev $breakpoint.current }}{{ else }}{{ $colGrid = "row-cols-2" }}{{ end -}}
{{- else if eq $cols "3" }}{{ if $responsive }}{{ $colGrid = "row-cols-1 row-cols-sm-2 row-cols-md-3" }}{{ else }}{{ $colGrid = "row-cols-3" }}{{ end -}} {{- else if eq $cols "3" }}{{ if $responsive }}{{ $colGrid = printf "row-cols-1 row-cols-%s-2 row-cols-%s-3" $breakpoint.prev $breakpoint.current }}{{ else }}{{ $colGrid = "row-cols-3" }}{{ end -}}
{{- else if eq $cols "4" }}{{ if $responsive }}{{ $colGrid = "row-cols-1 row-cols-sm-2 row-cols-md-4" }}{{ else }}{{ $colGrid = "row-cols-4" }}{{ end -}} {{- else if eq $cols "4" }}{{ if $responsive }}{{ $colGrid = printf "row-cols-1 row-cols-%s-2 row-cols-%s-4" $breakpoint.prev $breakpoint.current }}{{ else }}{{ $colGrid = "row-cols-4" }}{{ end -}}
{{- else if eq $cols "5" }}{{ if $responsive }}{{ $colGrid = "row-cols-1 row-cols-sm-3 row-cols-md-5" }}{{ else }}{{ $colGrid = "row-cols-5" }}{{ end -}} {{- else if eq $cols "5" }}{{ if $responsive }}{{ $colGrid = printf "row-cols-1 row-cols-%s-3 row-cols-%s-5" $breakpoint.prev $breakpoint.current }}{{ else }}{{ $colGrid = "row-cols-5" }}{{ end -}}
{{ end -}} {{ end -}}
{{- $gutter := .gutter | default "4" -}} {{- $gutter := .gutter | default "4" -}}
@@ -144,6 +145,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 +166,7 @@
"footer" $footer "footer" $footer
"orientation" $orientation "orientation" $orientation
"ratio" $ratio "ratio" $ratio
"loading" $loading
) -}} ) -}}
{{- $params = merge $params $element }} {{- $params = merge $params $element }}
@@ -177,7 +187,7 @@
<div class="pt-3">{{ partial "assets/pagination.html" (dict "page" $page "format" "terse") }}</div> <div class="pt-3">{{ partial "assets/pagination.html" (dict "page" $page "format" "terse") }}</div>
{{- end -}} {{- end -}}
{{ else }} {{ else }}
{{ if gt $count $max }} {{ if and (gt $count $max) $moreTitle }}
<a class="btn btn-outline-primary" href="{{ $moreURL| safeURL }}" role="button">{{ $moreTitle }}</a> <a class="btn btn-outline-primary" href="{{ $moreURL| safeURL }}" role="button">{{ $moreTitle }}</a>
{{ end }} {{ end }}
{{ end }} {{ end }}

View File

@@ -1,31 +1,49 @@
<!-- <!--
Displays a Bootstrap card. Either specify a valid path, or set the arguments title, href, header, description, and Copyright © 2023 The Hinode Team / Mark Dumay. All rights reserved.
thumbnail individually. The latter arguments override any page attributes. Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
Visit gethinode.com/license for more details.
The shortcode supports the following arguments:
"path" Optional path of the page, override with other parameters.
"title" Required title of the card.
"href" Optional address for the button or hyperlink.
"class" Optional class attribute of the card element, e.g. “w-50”.
"color": Optional theme color of the card, either "primary", "secondary", "success", "danger",
"warning", "info", "light", "dark", "white", "black", "body", or "body-tertiary". By default, no
color is specified.
"padding": Optional padding of the content, either "0", "1", "2", "3", "4", "5", or "auto" (default).
"gutter" Gutter between columns in a group, either "0" (default), "1", "2", "3", "4", or "5".
"header" Optional header components of the card, displayed in small caps. Supported values are "full"
(default), "publication", "tags", and "none".
"footer" Optional footer components of the card, displayed in small caps. Supported values are "full",
"publication", "tags", and "none" (default).
"description" Optional description of the card.
"thumbnail" Optional thumbnail image url, displayed on top or the left of the card.
"ratio" Optional ratio of the thumbnail image, defaults to "16x9" (stacked orientation) or "1x1" (horizontal
orientation).
"alt" Optional alternate text for the thumbnail, uses "title" by default.
"icon" Optional Font Awesome icon, displayed on top or the left of the card.
"orientation" Optional placecement of the thumbnail or icon, either "stacked" (default), "horizontal",
"horizontal-sm" or "none".
--> -->
<!-- Validate and initialize arguments -->
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "card" "args" .) }}
{{- errorf "partial [assets/card.html] - Invalid arguments" -}}
{{ end }}
<!-- Initialize arguments and default values -->
{{- $alt := .alt -}}
{{- $class := .class -}}
{{- $color := .color -}}
{{- $description := .description -}}
{{- $footer := .footer | default "none" -}}
{{- $gutter := .gutter | default "0" -}}
{{- $header := .header | default "full" -}}
{{- $href := .href -}}
{{- $icon := .icon -}}
{{- $loading := .loading -}}
{{- $orientation := .orientation | default "stacked" -}}
{{- $padding := .padding | default "auto" -}}
{{- $ratio := .ratio -}}
{{- $thumbnail := .thumbnail -}}
{{- $title := .title -}}
<!-- Override arguments -->
{{- $page := "" }}
{{- if .path }}
{{- $page = site.GetPage .path }}
{{- if not $page }}
{{- errorf "partial [assets/card.html] - Cannot find page: %s" .path -}}
{{- end }}
{{- end }}
{{- with $page -}}
{{- if not $title }}{{ $title = .Title }}{{ end -}}
{{- if not $href }}{{ $href = .RelPermalink }}{{ end -}}
{{- if not $description }}{{ $description = partial "utilities/GetDescription.html" . }}{{ end -}}
{{- if not $thumbnail }}{{ $thumbnail = (or (and (reflect.IsMap .Params.Thumbnail) .Params.Thumbnail.url) .Params.Thumbnail) }}{{ end -}}
{{- if not $icon }}{{ $icon = .Params.icon }}{{ end -}}
{{- end -}}
{{- if eq $orientation "none" }}{{ $thumbnail = "" }}{{ $icon = "" }}{{ end -}}
<!-- Inline partial to render the card's body --> <!-- Inline partial to render the card's body -->
{{- define "partials/card-body.html" -}} {{- define "partials/card-body.html" -}}
{{- $title := .title -}} {{- $title := .title -}}
@@ -77,82 +95,16 @@
</small></p> </small></p>
{{- end -}} {{- end -}}
{{- $page := "" }} <!-- Main code -->
{{- if .path }}
{{- $page = site.GetPage .path }}
{{- if not $page }}
{{- errorf "partial [assets/card.html] - Cannot find page: %s" .path -}}
{{- end }}
{{- end }}
{{- $title := .title -}}
{{- $alt := .alt -}}
{{- $href := .href -}}
{{- $description := .description -}}
{{- $thumbnail := .thumbnail -}}
{{- $ratio := .ratio -}}
{{- $icon := .icon -}}
{{- $color := "" -}}
{{- with .color }}{{ $color = . }}{{ end -}}
{{- if $color -}}
{{- $supportedColors := slice "primary" "secondary" "success" "danger" "warning" "info" "light" "dark" "white" "black" "body" "body-tertiary" -}}
{{- if not (in $supportedColors $color) -}}
{{- errorf "partial [assets/card.html] - Invalid value for param 'color': %s" $color -}}
{{- end -}}
{{- end -}}
{{- $header := "full" -}}
{{- with .header }}{{ $header = . }}{{ end -}}
{{- $supportedKeywords := slice "full" "publication" "tags" "none" -}}
{{- if not (in $supportedKeywords $header) -}}
{{- errorf "partial [assets/card.html] - Invalid value for param 'header': %s" $header -}}
{{- end -}}
{{- $footer := "none" -}}
{{- with .footer }}{{ $footer = . }}{{ end -}}
{{- if not (in $supportedKeywords $footer) -}}
{{- errorf "partial [assets/card.html] - Invalid value for param 'footer': %s" $footer -}}
{{- end -}}
{{- with $page -}}
{{- if not $title }}{{ $title = .Title }}{{ end -}}
{{- if not $href }}{{ $href = .RelPermalink }}{{ end -}}
{{- if not $description }}{{ $description = partial "utilities/GetDescription.html" . }}{{ end -}}
{{- if not $thumbnail }}{{ $thumbnail = (or (and (reflect.IsMap .Params.Thumbnail) .Params.Thumbnail.url) .Params.Thumbnail) }}{{ end -}}
{{- if not $icon }}{{ $icon = .Params.icon }}{{ end -}}
{{- end -}}
{{- $class := .class -}}
{{- $padding := "auto" -}}
{{- with .padding }}{{ $padding = . }}{{ end -}}
{{- $supportedPaddings := slice "0" "1" "2" "3" "4" "5" "auto" -}}
{{- if not (in $supportedPaddings $padding) -}}
{{- errorf "partial [assets/card.html] - Invalid value for param 'padding': %s" $padding -}}
{{- end -}}
{{- $gutter := .gutter | default "0" -}}
{{ $supportedGutters:= slice "0" "1" "2" "3" "4" "5" -}}
{{ if not (in $supportedGutters $gutter) -}}
{{- errorf "partial [assets/card.html] - Invalid value for param 'gutter': %s" $gutter -}}
{{ end -}}
{{- $orientation := "stacked" -}}
{{- with .orientation }}{{ $orientation = . }}{{ end -}}
{{- $supportedOrientations := slice "stacked" "horizontal" "horizontal-sm" "none" -}}
{{- if not (in $supportedOrientations $orientation) -}}
{{- errorf "partial [assets/card.html] - Invalid value for param 'orientation': %s" $orientation -}}
{{- end -}}
{{- if eq $orientation "none" }}{{ $thumbnail = "" }}{{ $icon = "" }}{{ end -}}
{{ if 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" -}}
<!-- Render horizontal card -->
<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)) -}}
@@ -171,9 +123,10 @@
</div> </div>
</div> </div>
{{- else -}} {{- else -}}
<!-- Render stacked / default card -->
<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)) -}}
@@ -186,4 +139,5 @@
</div> </div>
</div> </div>
{{- end -}} {{- end -}}
{{ if ne $gutter "0" }}</div>{{ end }} {{ if ne $gutter "0" }}</div>{{ end }}

View File

@@ -5,8 +5,16 @@
{{- $ratio := .ratio -}} {{- $ratio := .ratio -}}
{{- $portrait := .portrait -}} {{- $portrait := .portrait -}}
<div class="carousel-item{{ if $active }} active{{ end }}"> {{- $loading := .loading -}}
{{ partial "assets/image.html" (dict "url" $src "ratio" $ratio "page" $page "innerClass" "d-block w-100" "portrait" $portrait) }} {{- $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 }}" {{ if not $active }} fetchpriority="low"{{ end }}>
{{ 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,14 @@
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.
"priority": Optional fetch priority of the image, either "high", "low", or "auto" (default). The priority
provides a hint to the browser on how it should prioritize the fetch of the image relative to other
images. The implementation is experimental and currently only supported by Chrome, Edge, and Opera.
(https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/fetchpriority#browser_compatibility).
"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 +48,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 +59,23 @@
{{- $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" -}}
{{- $priority := .priority -}}
{{- $validPriorities := slice "high" "low" "auto" -}}
{{- if $priority -}}
{{ if not (in $validPriorities $priority) -}}
{{- errorf "partial [assets/image.html] - Invalid value for param 'priority'" -}}
{{ end -}}
{{- end -}}
{{- if eq $priority "auto" }}{{ $priority = "" }}{{ end -}}
{{- define "partials/image-portrait.html" -}} {{- define "partials/image-portrait.html" -}}
{{- $dimensions := slice }} {{- $dimensions := slice }}
@@ -68,12 +91,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 +112,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 +177,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 +185,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,7 +207,9 @@
{{- $imgset := "" -}} {{- $imgset := "" -}}
{{- $mode := .mode -}} {{- $mode := .mode -}}
{{- $modes := .modes -}} {{- $modes := .modes -}}
{{- $lazy := .lazy -}}
{{- $page := .page -}} {{- $page := .page -}}
{{- $priority := .priority -}}
{{- $isVector := false -}} {{- $isVector := false -}}
{{- $segments := split $url "#" -}} {{- $segments := split $url "#" -}}
@@ -200,15 +223,26 @@
{{- if hasSuffix $url "svg" -}} {{- if hasSuffix $url "svg" -}}
{{- $fallbackURL = $url -}} {{- $fallbackURL = $url -}}
{{- $isVector = true -}} {{- $isVector = true -}}
{{- $res := partial "utilities/GetResource.html" (dict "url" $url "page" $page) -}}
{{ if not $res }}
{{- if not (fileExists (path.Join "/static" $url)) -}}
{{ warnf "Cannot find vector image resource: %q" $url -}}
{{ end }}
{{ end }}
{{- else -}} {{- else -}}
{{- $img := partial "utilities/GetImage.html" (dict "url" $url "page" $page) -}} {{- $res := partial "utilities/GetImage.html" (dict "url" $url "page" $page) -}}
{{- $img := "" -}}
{{ with $res }}
{{ $img = $res.resource }}
{{ if $res.mirror }}{{ $innerClass = printf "%s mirrorred" $innerClass }}{{ end }}
{{ end }}
{{- 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 +253,33 @@
{{- 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 $priority }}fetchpriority="{{ . }}"{{ 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 +287,26 @@
{{ 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
"priority" $priority
"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 +316,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 -->
@@ -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,24 +224,24 @@
<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) -}}
{{ $width := partial "utilities/GetWidth.html" (dict "path" $logoLight "height" 30) }} {{ $width := partial "utilities/GetWidth.html" (dict "path" $logoLight "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 $logoLight }}{{ else }}{{ $logoLight }}{{ end }}" class="d-none-dark" alt="{{ $title }} logo" height="30"{{ with $width }} width="{{ . }}"{{ end }}>
@@ -254,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>
@@ -270,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 -}}
@@ -359,8 +360,8 @@
</div> </div>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="{{ T "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

@@ -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

@@ -1,7 +1,7 @@
{{- $page := .page }} {{- $page := .page }}
{{- $section := .section }} {{- $section := .section }}
{{- if not $section }}{{ errorf "partial [assets/section-list.html] - Missing value for param 'section'" }}{{ end -}} {{- if not $section }}{{ errorf "partial [assets/section-list.html] - Missing value for param 'section'" }}{{ end -}}
{{- $home := .home }} {{- $home := .home | default false }}
{{ if ne (printf "%T" $home) "bool" }} {{ if ne (printf "%T" $home) "bool" }}
{{ errorf "partial [assets/section-list.html] - Invalid value for param 'home'"}} {{ errorf "partial [assets/section-list.html] - Invalid value for param 'home'"}}
{{ end }} {{ end }}
@@ -36,13 +36,15 @@
{{- $width := 100 -}} {{- $width := 100 -}}
{{- $ratio := "" -}} {{- $ratio := "" -}}
{{- $wrap := false -}} {{- $wrap := false -}}
{{- $loading := .loading -}}
{{- $wrapper := .wrapper | default "p-4 px-xxl-0 pb-5" -}}
{{- 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 -}}
{{- with index . "sectionHeader" }}{{ $sectionHeader = . }}{{ end -}} {{- with index . "sectionHeader" }}{{ $sectionHeader = . }}{{ end -}}
{{- with index . "sort" }}{{ $sort = . }}{{ end -}} {{- with index . "sort" }}{{ $sort = . }}{{ end -}}
{{- if (index . "reverse") }}{{ $order = "desc" }}{{ else }}{{ $order = "asc" }}{{ end -}} {{- if (index . "reverse") }}{{ $order = "desc" }}{{ else }}{{ $order = "asc" }}{{ end -}}
{{- if $home }}{{- if (isset . "nested") }}{{ $nested = (index . "nested") }}{{ end -}}{{ end -}} {{- if (isset . "nested") }}{{ $nested = (index . "nested") }}{{ end -}}
{{- if (index . "separator") }}{{ $separator = true }}{{ else }}{{ $separator = false }}{{ end -}} {{- if (index . "separator") }}{{ $separator = true }}{{ else }}{{ $separator = false }}{{ end -}}
{{- with index . "orientation" }}{{ $orientation = . }}{{ end -}} {{- with index . "orientation" }}{{ $orientation = . }}{{ end -}}
{{- with index . "cols" }}{{ $cols = . }}{{ end -}} {{- with index . "cols" }}{{ $cols = . }}{{ end -}}
@@ -62,6 +64,10 @@
{{- with index . "ratio" }}{{ $ratio = . }}{{ end -}} {{- with index . "ratio" }}{{ $ratio = . }}{{ end -}}
{{- with index . "wrap" }}{{ $wrap = . }}{{ end -}} {{- with index . "wrap" }}{{ $wrap = . }}{{ end -}}
{{- end -}} {{- end -}}
{{ if isset $page.Params "nested" }}
{{ $nested = $page.Params.nested }}
{{ end }}
{{ if ne (printf "%T" $nested) "bool" }} {{ if ne (printf "%T" $nested) "bool" }}
{{ errorf "partial [assets/section-list.html] - Invalid value for param 'nested'"}} {{ errorf "partial [assets/section-list.html] - Invalid value for param 'nested'"}}
{{ end }} {{ end }}
@@ -76,13 +82,25 @@
{{ else }} {{ else }}
{{ $list = where site.Pages (printf ".Params.%s" $section) "!=" nil }} {{ $list = where site.Pages (printf ".Params.%s" $section) "!=" nil }}
{{ end }} {{ end }}
{{ else if $nested }} {{ else if eq $kind "related" }}
{{ $list = where site.RegularPages "Type" "in" $section }} {{ if $page.Keywords}}
{{ $keywords := keyVals "tags" $page.Keywords }}
{{ $opts := dict "namedSlices" (slice $keywords) }}
{{ $list = site.RegularPages.Related $opts }}
{{ end }}
{{ else if $home }} {{ else if $home }}
{{ $sectionPage := site.GetPage "section" $section }} {{ $sectionPage := site.GetPage "section" $section }}
{{ $list = $sectionPage.RegularPages }} {{ if $nested }}
{{ $list = $sectionPage.RegularPagesRecursive }}
{{ else }}
{{ $list = $sectionPage.Pages }}
{{ end }}
{{ else }} {{ else }}
{{ $list = $page.RegularPages }} {{ if $nested }}
{{ $list = $page.RegularPagesRecursive }}
{{ else }}
{{ $list = $page.Pages }}
{{ end }}
{{ end }} {{ end }}
{{ $max := (len $list) -}} {{ $max := (len $list) -}}
@@ -99,7 +117,7 @@
{{- end -}} {{- end -}}
{{ if gt $max 0 }} {{ if gt $max 0 }}
{{- if $home -}} {{- if or $home (eq $kind "related") -}}
{{- $paginate = false -}} {{- $paginate = false -}}
{{- $max = int (math.Min $homepage $max) -}} {{- $max = int (math.Min $homepage $max) -}}
{{ end -}} {{ end -}}
@@ -121,12 +139,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 {{ $wrapper }}">
{{- 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

@@ -1,11 +1,28 @@
{{- if .Site.Params.sharing.enabled -}} {{- if .Site.Params.sharing.enabled -}}
{{- if or .Params.sharing (not (isset .Params "sharing")) -}} {{- $sharing := true -}}
{{ if isset .Params "sharing" }}
{{ $sharing = .Params.sharing }}
{{ else }}
{{- with (index site.Params.pages .Type ) -}}
{{ if isset . "sharing" }}
{{ $sharing = (index . "sharing") }}
{{ end }}
{{- end -}}
{{ end }}
{{- if $sharing -}}
{{- $page := . -}} {{- $page := . -}}
{{- $order := "asc" -}} {{- $order := "asc" -}}
{{- $list := .Site.Params.sharing.providers -}} {{- $list := .Site.Params.sharing.providers -}}
{{- if .Site.Params.sharing.reverse }}{{ $order = "desc" }}{{ else }}{{ $order = "asc" }}{{ end -}} {{- if .Site.Params.sharing.reverse }}{{ $order = "desc" }}{{ else }}{{ $order = "asc" }}{{ end -}}
{{- $sort := .Site.Params.sharing.sort | default "weight" -}} {{- $sort := .Site.Params.sharing.sort | default "weight" -}}
{{- $list = sort $list $sort $order -}} {{- $list = sort $list $sort $order -}}
{{- $download := .Params.download -}}
{{- if and $download (not (fileExists (path.Join "static" $download))) -}}
{{- errorf "Cannot find download file for page '%s': %s" .File.Path $download -}}
{{- end -}}
<div class="py-3 text-body-secondary hstack gap-1"> <div class="py-3 text-body-secondary hstack gap-1">
{{ T "shareLink" "" }} {{ T "shareLink" "" }}
{{- range $index, $item := $list -}} {{- range $index, $item := $list -}}
@@ -27,6 +44,10 @@
{{ $attr := dict "data-sharing-title" .Title "data-sharing-description" .Description "data-sharing-url" .Permalink }} {{ $attr := dict "data-sharing-title" .Title "data-sharing-description" .Description "data-sharing-url" .Permalink }}
{{ partial "assets/button.html" (dict "href" "#!" "icon" "fas share-nodes fa-fw" "id" "btn-webshare" "class" "btn-social p-0" "attributes" $attr "label" (T "shareLink" (T "shareSystem")) "spacing" false) }} {{ partial "assets/button.html" (dict "href" "#!" "icon" "fas share-nodes fa-fw" "id" "btn-webshare" "class" "btn-social p-0" "attributes" $attr "label" (T "shareLink" (T "shareSystem")) "spacing" false) }}
{{- end -}} {{- end -}}
{{ with $download }}
{{ $attr := dict "download" (path.Base .) }}
{{ partial "assets/button.html" (dict "href" . "icon" "fas download fa-fw" "class" "btn-social p-0" "attributes" $attr "spacing" false) }}
{{- end -}}
</div> </div>
{{- end -}} {{- end -}}
{{- end -}} {{- end -}}

View File

@@ -0,0 +1,25 @@
{{ $page := .page }}
{{ $input := .input }}
{{ $args := .args }}
{{- $responsiveVals := slice "table-responsive" "table-responsive-none" "table-responsive-sm" "table-responsive-md" "table-responsive-lg" "table-responsive-xl" "table-responsive-xxl" -}}
{{- $responsive := intersect $args $responsiveVals -}}
{{- $main := complement $responsive $args -}}
{{- if in $responsive "table-responsive-none" -}}
{{- $responsive = "" -}}
{{- else if not $responsive -}}
{{ $responsive = (slice "table-responsive") -}}
{{- end -}}
{{- $input := $input | $page.RenderString }}
{{- $input = replace $input "style=\"text-align:left\"" "class=\"text-start\"" -}}
{{- $input = replace $input "style=\"text-align:center\"" "class=\"text-center\"" -}}
{{- $input = replace $input "style=\"text-align:right\"" "class=\"text-end\"" -}}
{{- $class := delimit $main " " -}}
{{- $old := "<table>" -}}
{{- $new := printf "<table class=\"table %s\">" $class -}}
{{ $input := replace $input $old $new -}}
{{- with $responsive }}<div class="{{ delimit . " " }}">{{ end -}}
{{ $input | safeHTML }}
{{- with $responsive }}</div>{{ end -}}

View File

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

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

@@ -12,8 +12,10 @@
{{- $thumbnail := (or (and (reflect.IsMap .Params.Thumbnail) .Params.Thumbnail.url) .Params.Thumbnail) -}} {{- $thumbnail := (or (and (reflect.IsMap .Params.Thumbnail) .Params.Thumbnail.url) .Params.Thumbnail) -}}
{{ with $thumbnail -}} {{ with $thumbnail -}}
{{ $img := partial "utilities/GetImage.html" (dict "url" .) -}} {{- $res := partial "utilities/GetImage.html" (dict "url" .) -}}
{{ with $img -}} {{- $img := "" -}}
{{ with $res }}{{ $img = $res.resource }}{{ end }}
{{ with $img -}}
{{ $dim := "1280x640" -}} {{ $dim := "1280x640" -}}
{{ $scaled := (.Fill (printf "%s jpg" $dim)) -}} {{ $scaled := (.Fill (printf "%s jpg" $dim)) -}}
{{- $scaled = $scaled | resources.Copy (replace $img.RelPermalink ".jpg" (printf "-%s.jpg" $dim)) -}} {{- $scaled = $scaled | resources.Copy (replace $img.RelPermalink ".jpg" (printf "-%s.jpg" $dim)) -}}

View File

@@ -56,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 "priority" "high") }}
{{ 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 }} fullcover{{ 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 -}}
@@ -79,7 +79,7 @@
<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

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

View File

@@ -0,0 +1,21 @@
{{- /* Define main breakpoint */ -}}
{{ $prev := 0 }}
{{ $next := 0 }}
{{ $result := dict }}
{{- $breakpoints := slice "xs" "sm" "md" "lg" "xl" "xxl" }}
{{- $breakpoint := site.Params.main.breakpoint | default "md" -}}
{{- if not (in $breakpoints $breakpoint) -}}
{{- errorf "layout [_default/baseof.html] - Invalid value for param 'breakpoint': %s" $breakpoint -}}
{{ else }}
{{ range $index, $item := $breakpoints }}
{{ if eq $item $breakpoint }}
{{ $prev = sub $index 1 }}
{{ $next = add $index 1 }}
{{ end }}
{{ end }}
{{ if lt $prev 0 }}{{ $prev = 0 }}{{ end }}
{{ if ge $next (len $breakpoints) }}{{ $next = sub (len $breakpoints) 1 }}{{ end }}
{{ $result = dict "prev" (index $breakpoints $prev) "current" $breakpoint "next" (index $breakpoints $next) }}
{{- end -}}
{{ return $result }}

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

@@ -10,20 +10,11 @@
{{ $url := .url -}} {{ $url := .url -}}
{{ $page := .page -}} {{ $page := .page -}}
{{ $mirror := false }}
{{ $supportedMediaTypes := slice "image/png" "image/jpeg" "image/gif" "image/tiff" "image/bmp" "image/webp" -}} {{ $supportedMediaTypes := slice "image/png" "image/jpeg" "image/gif" "image/tiff" "image/bmp" "image/webp" -}}
{{ $img := "" }}
{{ $remote := hasPrefix (lower $url) "http" }} {{ $remote := hasPrefix (lower $url) "http" }}
{{ if $remote }} {{- $img := partial "utilities/GetResource.html" (dict "url" $url "page" $page) -}}
{{ $img = resources.GetRemote $url -}}
{{ else }}
{{ if $page }}
{{ $img = $page.Resources.Get $url -}}
{{ end }}
{{ if not $img }}
{{ $img = resources.GetMatch $url }}
{{ end }}
{{ end }}
{{ with $img -}} {{ with $img -}}
{{ if in $supportedMediaTypes (string $img.MediaType) -}} {{ if in $supportedMediaTypes (string $img.MediaType) -}}
@@ -38,6 +29,34 @@
{{ end -}} {{ end -}}
{{ $img = $img.Content | resources.FromString (printf "/img/%s" $filename) -}} {{ $img = $img.Content | resources.FromString (printf "/img/%s" $filename) -}}
{{ end -}} {{ end -}}
<!--
Rotate the image if needed based on EXIF orientation. EXIF defines the following values:
(source: https://sirv.com/help/articles/rotate-photos-to-be-upright/#EXIF_orientation_values)
1 = 0 degrees: the correct orientation, no adjustment is required.
2 = 0 degrees, mirrored: image has been flipped back-to-front.
3 = 180 degrees: image is upside down.
4 = 180 degrees, mirrored: image has been flipped back-to-front and is upside down.
5 = 90 degrees: image has been flipped back-to-front and is on its side.
6 = 90 degrees, mirrored: image is on its side.
7 = 270 degrees: image has been flipped back-to-front and is on its far side.
8 = 270 degrees, mirrored: image is on its far side.
-->
{{ with $img.Exif }}
{{ $filter := "" }}
{{ $orientation := .Tags.Orientation }}
{{ if or (eq $orientation 3) (eq $orientation 4) }}
{{ $filter = images.Process "r180" }}
{{ else if or (eq $orientation 5) (eq $orientation 6) }}
{{ $filter = images.Process "r270" }}
{{ else if or (eq $orientation 7) (eq $orientation 8) }}
{{ $filter = images.Process "r90" }}
{{ end }}
{{ with $filter }}{{ $img = $img.Filter . }}{{ end }}
{{- $isMirrored := slice 2 4 5 7 -}}
{{- if (in $isMirrored $orientation) }}{{ $mirror = true }}{{ end -}}
{{ end }}
{{ else -}} {{ else -}}
{{ warnf "Image type '%s' is not supported: %s" $img.MediaType $url -}} {{ warnf "Image type '%s' is not supported: %s" $img.MediaType $url -}}
{{ $img = "" -}} {{ $img = "" -}}
@@ -46,4 +65,4 @@
{{ warnf "Cannot find image resource: %q" $url -}} {{ warnf "Cannot find image resource: %q" $url -}}
{{ end -}} {{ end -}}
{{ return $img -}} {{ return (dict "resource" $img "mirror" $mirror) -}}

View File

@@ -0,0 +1,40 @@
<!--
Retrieve a local or remote resource. If the url starts with 'http', the resource is retrieved from an external
location. Else, the url is matched with a page resource and site asset (in that order).
This partial supports both relative and absolute paths. Hugo has different methods to retrieve page bundle assets
and site assets. Absolute paths are converted to a relative path to make them compatible with Hugo's methods. The
prefix of an absolute path is truncated if it matches either with the page bundle folder (starting with "/content/")
or the assets folder ("/assets/").
The partial returns nil if the resource cannot be found. The partial supports the following arguments:
"url" Required path or url of the resource, e.g. "img/example.jpg" or "https://example.com/img.jpg"
"page" Optional page context, used to retrieve a resource from page resources.
-->
{{ $url := .url -}}
{{ $page := .page -}}
{{ if hasPrefix $url "/" }}
{{ $pageContext := (path.Join "/content" $page.File.Dir) -}}
{{ if hasPrefix $url $pageContext }}
{{ $url = strings.TrimPrefix $pageContext $url -}}
{{ else if hasPrefix $url "/assets/" }}
{{ $url = strings.TrimPrefix "/assets/" $url -}}
{{ end }}
{{ $url = strings.TrimPrefix "/" $url -}}
{{ end }}
{{ $res := "" }}
{{ $remote := hasPrefix (lower $url) "http" }}
{{ if $remote }}
{{ $res = resources.GetRemote $url -}}
{{ else }}
{{ if $page }}
{{ $res = $page.Resources.Get $url -}}
{{ end }}
{{ if not $res }}
{{ $res = resources.GetMatch $url }}
{{ end }}
{{ end }}
{{ return $res -}}

View File

@@ -1,8 +1,9 @@
{{- $page := . -}} {{- $page := .page -}}
{{- $loading := .loading -}}
{{/* Add title for current page */}} {{/* Add title for current page */}}
{{- $items := slice -}} {{- $items := slice -}}
{{ $items = $items | append (dict "title" .Title "content" "" )}} {{ $items = $items | append (dict "title" $page.Title "content" "" )}}
{{/* Identify page sections */}} {{/* Identify page sections */}}
{{- $sections := slice -}} {{- $sections := slice -}}
@@ -47,7 +48,8 @@
{{- $thumbnail := (or (and (reflect.IsMap $sectionPage.Params.Thumbnail) $sectionPage.Params.Thumbnail.url) $sectionPage.Params.Thumbnail) -}} {{- $thumbnail := (or (and (reflect.IsMap $sectionPage.Params.Thumbnail) $sectionPage.Params.Thumbnail.url) $sectionPage.Params.Thumbnail) -}}
{{- $icon := $sectionPage.Params.Icon -}} {{- $icon := $sectionPage.Params.Icon -}}
{{- $content := $sectionPage.Content -}} {{- $content := "" -}}
{{ if not $sectionPage.IsSection }}{{ $content = $sectionPage.Content }}{{ end -}}
{{- $sectionTitle := strings.FirstUpper $sectionPage.Type -}} {{- $sectionTitle := strings.FirstUpper $sectionPage.Type -}}
{{- $moreTitle := "" -}} {{- $moreTitle := "" -}}
{{- with (index site.Params.sections $section) -}} {{- with (index site.Params.sections $section) -}}
@@ -60,12 +62,12 @@
"section" $section "section" $section
"home" $page.IsHome "home" $page.IsHome
"simple" (eq (len $sections) 1) "simple" (eq (len $sections) 1)
"nested" (and $page.IsHome (eq $section $page.Section))
"thumbnail" $thumbnail "thumbnail" $thumbnail
"icon" $icon "icon" $icon
"content" $content "content" $content
"moreTitle" $moreTitle "moreTitle" $moreTitle
"sectionURL" $sectionURL)) " \r\n" "sectionURL" $sectionURL
"loading" $loading)) " \r\n"
-}} -}}
{{ if $sectionContent }} {{ if $sectionContent }}

View File

@@ -0,0 +1,76 @@
<!--
Copyright © 2023 The Hinode Team / Mark Dumay. All rights reserved.
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
Visit gethinode.com/license for more details.
-->
{{ $error := false }}
{{ $aliases := dict "path" "string" "select" "string" "url" "string" }}
{{ $structure := .structure }}
{{ if not $structure }}
{{- errorf "partial [utilities/ValidateArgs.html] - Missing value for param 'structure'" -}}
{{ $error = true }}
{{ end }}
{{ $args := .args | default slice }}
{{ $definitions := (index site.Data.structures $structure).arguments }}
{{ if not $definitions }}
{{- errorf "partial [utilities/ValidateArgs.html] - Missing definitions: %s" $structure -}}
{{ $error = true }}
{{ end }}
{{ if not $error }}
{{ range $key, $val := $args }}
{{ $def := index $definitions $key }}
{{ if and (not $val) $def.default }}{{ $val = $def.default }}{{ end }}
{{/* validate type */}}
{{ $expected := slice | append $def.type }}
{{ $extra := slice }}
{{ range $expected }}
{{ $alias := index $aliases . }}
{{ if $alias }}{{ $extra = $extra | append $alias }}{{ end }}
{{ end }}
{{ if $extra }}{{ $expected = $expected | append $extra }}{{ end }}
{{ $actual := printf "%T" $val }}
{{ if $val }}
{{ if not (in $expected $actual ) }}
{{ warnf "[%s] argument '%s': expected type '%s', got '%s'" $structure $key (delimit $expected ", ") $actual }}
{{ $error = true }}
{{ end }}
{{ end }}
{{/* validate permitted values */}}
{{ if and $def.options.values (eq $actual "select") }}
{{ if and (not $def.optional) (not (in $def.options.values $val)) }}
{{ warnf "[%s] argument '%s': unexpected value '%s'" $structure $key $val }}
{{ $error = true }}
{{ end }}
{{ else if and $def.options.min (in (slice "int" "float" "float64") $actual) }}
{{ if lt $val $def.options.min }}
{{ warnf "[%s] argument '%s': value '%s' out of range [$d, $d]" $structure $key $val $def.options.min $def.options.max}}
{{ $error = true }}
{{ end }}
{{ else if and $def.options.max (in (slice "int" "float" "float64") $actual) }}
{{ if (gt $val $def.options.max) }}
{{ warnf "[%s] argument '%s': value '%s' out of range [$d, $d]" $structure $key $val $def.options.min $def.options.max}}
{{ $error = true }}
{{ end }}
{{ end }}
{{ end }}
{{/* validate required arguments */}}
{{ range $key, $val := $definitions }}
{{ if not $val.optional }}
{{ if not (in $args $key )}}
{{ warnf "[%s] argument '%s': expected value" $structure $key }}
{{ $error = true }}
{{ end }}
{{ end }}
{{ end }}
{{ end }}
{{ return $error }}

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

@@ -0,0 +1,68 @@
{{ $error := false }}
{{ $structure := "" }}
{{- if .IsNamedParams }}{{ $structure = .Get "structure" }}{{ else }}{{ $structure = .Get 0 }}{{ end }}
{{ if not $structure }}
{{- errorf "Invalid or missing value for param 'structure': %s" .Position -}}
{{ $error = true }}
{{ end }}
{{ $definitions := (index site.Data.structures $structure).arguments }}
{{ if not $definitions }}
{{- errorf "Cannot find data structure '%s': %s" $structure .Position -}}
{{ $error = true }}
{{ end }}
{{ $group := "" }}
{{- if .IsNamedParams }}{{ $group = .Get "group" }}{{ else }}{{ $group = .Get 1 }}{{ end }}
{{ if not $error }}
{{ $table := printf "| %s | %s | %s | %s | %s |\n| --- | --- | --- | --- | --- |"
(T "name") (T "type") (T "required") (T "default") (T "comment")
}}
{{ range $key, $val := $definitions }}
{{ $skip := false }}
{{ $groups := slice | append $val.group }}
{{ if and $group $val.group }}
{{ $skip = not (in $groups $group )}}
{{ end }}
{{ if not $skip }}
{{ $type := $val.type }}
{{ if reflect.IsSlice $val.type }}{{ $type = delimit $val.type ", " }}{{ end }}
{{ $required := "" }}
{{ if not $val.optional }}{{ $required = "yes" }}{{ end }}
{{ $comment := $val.comment }}
{{ if $val.deprecated }}
{{ $comment = printf `{{< release version="%s" short="true" size="sm" inline="true" state="deprecated" >}} %s` $val.deprecated $comment }}
{{ end }}
{{ if $val.release }}
{{ $comment = printf `{{< release version="%s" short="true" size="sm" inline="true" >}} %s` $val.release $comment }}
{{ end }}
{{ $min := "" }}
{{ $max := "" }}
{{ if and $val.options.values (eq $type "select") }}
{{ $comment = printf "%s %s: [%s]." $comment (T "supportedValues") (delimit $val.options.values ", ") }}
{{ else if $val.options.min (in (slice "int" "float" "float64") $type) }}
{{ $min = $val.options.min }}
{{ else if $val.options.max (in (slice "int" "float" "float64") $type) }}
{{ $max = $val.options.max }}
{{ end }}
{{ if and $min $max }}
{{ $comment = printf "%s %s: [%d, %d]." $comment (T "supportedValues") $min $max }}
{{ else if $min }}
{{ $comment = printf "%s %s: >=%d." $comment (T "supportedValues") $min }}
{{ else if $max }}
{{ $comment = printf "%s %s: <=%d." $comment (T "supportedValues") $max }}
{{ end }}
{{ $table = printf "%s\n| %s | %s | %s | %s | %s |" $table $key $type $required (or $val.default "") $comment }}
{{ end }}
{{ end }}
{{ partial "assets/table.html" (dict "page" .Page "input" $table "args" slice) }}
{{ end }}

View File

@@ -1,29 +1,35 @@
<!-- <!--
Displays a Bootstrap card that links to a page. Any inner text is used as description. The shortcode supports the Copyright © 2023 The Hinode Team / Mark Dumay. All rights reserved.
following arguments: Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
"path" Optional path of the page. If omitted, specify the title, icon, thumbnail, and body as needed. Visit gethinode.com/license for more details.
"title" Optional title of the card.
"class" Optional class attribute of the card element, e.g. “w-50”.
"color" Optional theme color of the card, either "primary", "secondary", "success", "danger",
"warning", "info", "light", "dark", "white", "black", "body", or "body-tertiary". By default, no
color is specified.
"padding" Optional padding of the content, either "0", "1", "2", "3", "4", "5", or "auto" (default).
"gutter" Gutter between columns in a group, either "0" (default), "1", "2", "3", "4", or "5".
"header" Optional header components of the card, displayed in small caps. Supported values are "full"
(default), "publication", "tags", and "none".
"footer" Optional footer components of the card, displayed in small caps. Supported values are "full",
"publication", "tags", and "none" (default).
"orientation" Optional placecement of the thumbnail, either "stacked" (default), "horizontal", or "none".
"thumbnail" Optional thumbnail image url, displayed on top or the left of the card.
"alt" Optional alternate text for the thumbnail, uses "title" by default.
"icon" Optional Font Awesome icon, displayed on top or the left of the card.
--> -->
{{ $error := false }} {{ $error := false }}
{{ $path := or (.Get "path") "" }} <!-- Validate and initialize arguments -->
{{ $page := .Page }} {{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "card" "args" .Params) }}
{{ with $path }} {{ errorf "Invalid arguments: %s" .Position -}}
{{ $error = true }}
{{ end }}
<!-- Initialize arguments and default values -->
{{- $alt := .Get "alt" -}}
{{- $class := partial "utilities/GetArgParent" (dict "page" . "arg" "class" "merge" true) -}}
{{- $color := partial "utilities/GetArgParent" (dict "page" . "arg" "color") -}}
{{- $description := trim .Inner " \r\n" | .Page.RenderString | safeHTML -}}
{{- $footer := partial "utilities/GetArgParent" (dict "page" . "arg" "footer") | default "none" -}}
{{- $gutter := partial "utilities/GetArgParent" (dict "page" . "arg" "gutter") | default "0" -}}
{{- $header := partial "utilities/GetArgParent" (dict "page" . "arg" "header") | default "full" -}}
{{- $icon := .Get "icon" -}}
{{- $orientation := partial "utilities/GetArgParent" (dict "page" . "arg" "orientation") | default "stacked" -}}
{{- $padding := partial "utilities/GetArgParent" (dict "page" . "arg" "padding") | default "auto" -}}
{{- $page := .Page -}}
{{- $path := .Get "path" -}}
{{- $thumbnail := .Get "thumbnail" -}}
{{- $title := .Get "title" -}}
<!-- Override arguments -->
{{ if $path }}
{{ $page = $.Site.GetPage $path }} {{ $page = $.Site.GetPage $path }}
{{ if not $page }} {{ if not $page }}
{{ errorf "Invalid or missing value for param 'path': %s" .Position -}} {{ errorf "Invalid or missing value for param 'path': %s" .Position -}}
@@ -31,67 +37,13 @@
{{ end }} {{ end }}
{{ end }} {{ end }}
{{- $class := partial "utilities/GetArg" (dict "page" . "arg" "class" "merge" true) -}}
{{- $color := partial "utilities/GetArg" (dict "page" . "arg" "color") -}}
{{ if $color }}
{{ $supportedColors := slice "primary" "secondary" "success" "danger" "warning" "info" "light" "dark" "white" "black" "body" "body-tertiary" -}}
{{ if not (in $supportedColors $color) -}}
{{ errorf "Invalid value for param 'color': %s" .Position -}}
{{ $error = true -}}
{{ end -}}
{{ end -}}
{{- $header := partial "utilities/GetArg" (dict "page" . "arg" "header") | default "full" -}}
{{ $supportedKeywords := slice "full" "publication" "tags" "none" -}}
{{ if not (in $supportedKeywords $header) -}}
{{ errorf "Invalid value for param 'header': %s" .Position -}}
{{ end -}}
{{- $footer := partial "utilities/GetArg" (dict "page" . "arg" "footer") | default "none" -}}
{{ if not (in $supportedKeywords $footer) -}}
{{ errorf "Invalid value for param 'footer': %s" .Position -}}
{{ end -}}
{{- $padding := partial "utilities/GetArg" (dict "page" . "arg" "padding") | default "auto" -}}
{{ $supportedPaddings := slice "0" "1" "2" "3" "4" "5" "auto" -}}
{{ if not (in $supportedPaddings $padding) -}}
{{ errorf "Invalid value for param 'padding': %s" .Position -}}
{{ $error = true -}}
{{ end -}}
{{- $gutter := partial "utilities/GetArg" (dict "page" . "arg" "gutter") | default "0" -}}
{{ $supportedGutters:= slice "0" "1" "2" "3" "4" "5" -}}
{{ if not (in $supportedGutters $gutter) -}}
{{ errorf "Invalid value for param 'gutter': %s" .Position -}}
{{ $error = true -}}
{{ end -}}
{{- $orientation := partial "utilities/GetArg" (dict "page" . "arg" "orientation") | default "stacked" -}}
{{ $supportedOrientations := slice "stacked" "horizontal" "none" -}}
{{ if not (in $supportedOrientations $orientation) -}}
{{ errorf "Invalid value for param 'orientation': %s" .Position -}}
{{ $error = true -}}
{{ end -}}
{{- $layout := partial "utilities/GetArg" (dict "page" . "arg" "layout") | default "rich" -}}
{{ $supportedLayouts := slice "rich" "minimal" -}}
{{ if not (in $supportedLayouts $layout) -}}
{{ errorf "Invalid value for param 'layout': %s" .Position -}}
{{ $error = true -}}
{{ end -}}
{{ $description := trim .Inner " \r\n" | .Page.RenderString | safeHTML }}
{{ $title := .Get "title" | default "" -}}
{{ $alt := .Get "alt" | default "" -}}
{{ $icon := .Get "icon" | default "" -}}
{{ $thumbnail := .Get "thumbnail" | default "" -}}
{{ if .Parent }} {{ if .Parent }}
{{ $class = (printf "h-100 %s" $class) }} {{ $class = (printf "h-100 %s" $class) }}
{{ end }} {{ end }}
<!-- Main code -->
{{ if not $error -}} {{ if not $error -}}
<!-- Render card -->
{{- $output := partial "assets/card.html" (dict {{- $output := partial "assets/card.html" (dict
"path" $path "path" $path
"title" $title "title" $title
@@ -108,6 +60,7 @@
"alt" $alt "alt" $alt
) -}} ) -}}
<!-- Pass output to parent or current stream -->
{{ with .Parent }} {{ with .Parent }}
{{ $current := .Scratch.Get "inner" }} {{ $current := .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.
@@ -15,38 +19,72 @@
"mode": Optional flag indicating if the image should support color modes. "mode": Optional flag indicating if the image should support color modes.
--> -->
{{- if isset .Params "src" -}} {{- $url := "" -}}
{{ $url := .Get "src" | default "" -}} {{- $ratio := "" -}}
{{- $wrapper := "" -}}
{{- $class := "" -}}
{{- $title := "" -}}
{{- $caption := "" -}}
{{- $mode := false -}}
{{- $portrait := false -}}
{{- $loading := "" -}}
{{- $error := false -}}
{{- if .IsNamedParams -}}
{{ $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 "" -}}
{{ $title := .Get "title" | default "" -}}
{{ $caption := .Get "caption" | 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 -}}
{{ $title = .Get "title" | default "" -}}
{{ $caption = .Get "caption" | default "" -}}
{{ $supportedFlags := slice "true" "false" -}} {{ $supportedFlags := slice "true" "false" -}}
{{ $modeParam := "false" -}} {{ $modeParam := "false" -}}
{{ $mode := false -}}
{{ with .Get "mode" }}{{ $modeParam = . }}{{ end -}} {{ with .Get "mode" }}{{ $modeParam = . }}{{ end -}}
{{ if in $supportedFlags $modeParam -}} {{ if in $supportedFlags $modeParam -}}
{{ 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 -}}
{{ with .Get "portrait" }}{{ $portraitParam = . }}{{ end -}} {{ with .Get "portrait" }}{{ $portraitParam = . }}{{ end -}}
{{ if in $supportedFlags $portraitParam -}} {{ if in $supportedFlags $portraitParam -}}
{{ 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 -}}
{{ else -}}
{{ $url = .Get 0 }}
{{ end -}}
{{ if not $url }}
{{ errorf "Missing value for param 'src': %s" .Position -}}
{{- $error = true -}}
{{ end }}
{{- if not $error -}}
{{- partial "assets/image.html" (dict {{- partial "assets/image.html" (dict
"url" $url "url" $url
"ratio" $ratio "ratio" $ratio
@@ -56,8 +94,7 @@
"caption" $caption "caption" $caption
"mode" $mode "mode" $mode
"portrait" $portrait "portrait" $portrait
"loading" $loading
"page" .Page) "page" .Page)
-}} -}}
{{ else -}} {{- end -}}
{{ errorf "Missing value for param 'src': %s" .Position -}}
{{ end -}}

View File

@@ -15,8 +15,8 @@
{{- $src := .Get "src" | default "" -}} {{- $src := .Get "src" | default "" -}}
{{- if $src -}} {{- if $src -}}
{{- $caption := .Get "caption" | default "" -}} {{- $caption := .Get "caption" | default "" -}}
{{- $ratio := partial "utilities/GetArg" (dict "page" . "arg" "ratio") -}} {{- $ratio := partial "utilities/GetArgParent" (dict "page" . "arg" "ratio") -}}
{{- $portrait := partial "utilities/GetArg" (dict "page" . "arg" "portrait") | default false -}} {{- $portrait := partial "utilities/GetArgParent" (dict "page" . "arg" "portrait") | default false -}}
{{- $active := eq .Ordinal 0 -}} {{- $active := eq .Ordinal 0 -}}
{{- $output := partial "assets/carousel-item" (dict {{- $output := partial "assets/carousel-item" (dict
"page" .Page "page" .Page

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

@@ -50,7 +50,7 @@
<div class="col-{{ $col }} d-flex justify-content-{{ $direction }} align-items-center"> <div class="col-{{ $col }} d-flex justify-content-{{ $direction }} align-items-center">
<div class="d-flex"> <div class="d-flex">
<div class="d-flex timeline-semi-circle-{{ $direction }} fa-wrapper align-items-center justify-content-center"> <div class="d-flex timeline-semi-circle-{{ $direction }} fa-wrapper align-items-center justify-content-center">
{{ partial "assets/icon.html" (dict "icon" (printf "%s fa-fluid" $icon)) }} {{ partial "assets/icon.html" (dict "icon" (printf "%s fa-fluid" $icon) "spacing" false) }}
</div> </div>
<div class="timeline-connector-{{ $direction }} {{ if eq $direction "start" }} order-first{{ end }}"></div> <div class="timeline-connector-{{ $direction }} {{ if eq $direction "start" }} order-first{{ end }}"></div>
</div> </div>

View File

@@ -4,7 +4,7 @@
{{- $id := .Get "id" | default (.Get 0) -}} {{- $id := .Get "id" | default (.Get 0) -}}
{{- $class := .Get "class" | default (.Get 1) -}} {{- $class := .Get "class" | default (.Get 1) -}}
{{- $title := .Get "title" | default "YouTube Video" }} {{- $title := .Get "title" | default "YouTube Video" }}
<div {{ with $class }}class="{{ . }}"{{ else }}style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"{{ end }}> <div class="youtube-embedded {{ $class }}">
<iframe src="https://{{ $ytHost }}/embed/{{ $id }}?origin={{ .Site.BaseURL }}{{ with .Get "autoplay" }}{{ if eq . "true" }}&autoplay=1{{ end }}{{ end }}" {{ if not $class }}style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" {{ end }}allowfullscreen title="{{ $title }}"></iframe> <iframe src="https://{{ $ytHost }}/embed/{{ $id }}?origin={{ .Site.BaseURL }}{{ with .Get "autoplay" }}{{ if eq . "true" }}&autoplay=1{{ end }}{{ end }}" allowfullscreen title="{{ $title }}"></iframe>
</div> </div>
{{ end -}} {{ end -}}

View File

@@ -1,22 +1,36 @@
{{ define "main" }} {{ define "main" }}
<div class="container-xxl flex-fill px-4 px-xxl-0"> {{- $page := . -}}
<div class="row row-cols-1 row-cols-sm-3"> {{- $layout := $page.Params.layout -}}
<div class="col col-md-2 d-none d-md-block"></div> {{- $breakpoint := $.Scratch.Get "breakpoint" -}}
<div class="col col-sm-12 col-md-8"> {{- $hasSidebar := site.Params.navigation.sidebar | default true -}}
<p class="display-4 mt-5">{{ .Name | humanize }}</p>
<div class="container-xxl flex-fill p-4 px-xxl-0">
<div class="row row-cols-1 row-cols-{{ $breakpoint.prev }}-{{ if $hasSidebar }}3{{ else }}2{{ end }}">
{{ if $hasSidebar }}<div class="col col-{{ $breakpoint.current }}-2 d-none d-{{ $breakpoint.current }}-block"></div>{{ end }}
<div class="col col-{{ $breakpoint.prev }}-12 col-{{ $breakpoint.current }}-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">{{ .Page.Title }}</p>
{{ if eq .Kind "taxonomy" }} {{ if eq .Kind "taxonomy" }}
<div class="row mt-5"></div> <div class="row mt-5"></div>
{{ range $.Site.Taxonomies.tags.ByCount }} {{ range $.Site.Taxonomies.tags.ByCount }}
<div class="row mt-2"> <div class="row mt-2">
<div class="d-none d-sm-block col-sm-3 mt-auto text-right"> <div class="col-3 mt-auto text-right">
{{ .Count }} {{ if gt .Count 1 }} {{ T "articles" }} {{ else }} {{ T "article" }} {{ end }} {{ .Count }} {{ if gt .Count 1 }} {{ T "articles" }} {{ else }} {{ T "article" }} {{ end }}
</div> </div>
<div class="col"> <div class="col-9">
<a href="{{ (path.Join .Page.RelPermalink) | relLangURL }}">{{ .Name | .Page.RenderString }}</a> <a href="{{ (path.Join .Page.RelPermalink) | relLangURL }}">{{ .Page.Title | .Page.RenderString }}</a>
</div> </div>
</div> </div>
{{ end }} {{ end }}
{{ if eq $.Site.Taxonomies.tags 0 }}
<p class="pt-4">{{- T "emptyTags" }}.</p>
{{ end }}
{{ else }} {{ else }}
{{ $dateFormat := default "Jan 2" (index .Site.Params "date_format") }} {{ $dateFormat := default "Jan 2" (index .Site.Params "date_format") }}
{{ $.Scratch.Set "lastYear" ""}} {{ $.Scratch.Set "lastYear" ""}}
@@ -24,7 +38,7 @@
{{ $year := .Date.Year }} {{ $year := .Date.Year }}
{{ $lastYear := $.Scratch.Get "lastYear"}} {{ $lastYear := $.Scratch.Get "lastYear"}}
<div class="row mt-2"> <div class="row mt-2">
<div class="d-none d-sm-block col-sm-3 mt-auto text-right"> <div class="d-none d-{{ $breakpoint.prev }}-block col-{{ $breakpoint.prev }}-3 mt-auto text-right">
<time class="post-date" datetime="{{ .Date.Format "2006-01-02T15:04:05Z07:00" | safeHTML }}"> <time class="post-date" datetime="{{ .Date.Format "2006-01-02T15:04:05Z07:00" | safeHTML }}">
{{ (partial "utilities/date.html" (dict "date" .Date "format" "medium")) }} {{ (partial "utilities/date.html" (dict "date" .Date "format" "medium")) }}
</time> </time>
@@ -40,7 +54,7 @@
{{ end }} {{ end }}
{{ end }} {{ end }}
</div> </div>
<div class="col col-md-2 d-none d-md-block"></div> <div class="col col-{{ $breakpoint.current }}-2 d-none d-{{ $breakpoint.current }}-block"></div>
</div> </div>
</div> </div>
{{ end }} {{ end }}

View File

@@ -4,12 +4,12 @@
command = "npm run build:example" command = "npm run build:example"
[build.environment] [build.environment]
DART_SASS_VERSION = "1.69.0" DART_SASS_VERSION = "1.69.5"
HUGO_VERSION = "0.119.0" HUGO_VERSION = "0.121.0"
HUGO_ENV = "production" HUGO_ENV = "production"
HUGO_ENABLEGITINFO = "true" HUGO_ENABLEGITINFO = "true"
NODE_VERSION = "18.18.2" NODE_VERSION = "18.19.0"
NPM_VERSION = "9.8.1" NPM_VERSION = "10.2.3"
# toml-docs-end netlify # toml-docs-end netlify
[[headers]] [[headers]]

9604
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-beta5", "version": "0.22.0-alpha2",
"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",
@@ -71,27 +71,30 @@
"@gethinode/netlify-plugin-dartsass": "^0.2.0", "@gethinode/netlify-plugin-dartsass": "^0.2.0",
"@netlify/plugin-lighthouse": "^5.0.0", "@netlify/plugin-lighthouse": "^5.0.0",
"autoprefixer": "^10.4.16", "autoprefixer": "^10.4.16",
"cssnano": "^6.0.1", "cssnano": "^6.0.2",
"cssnano-preset-advanced": "^6.0.1", "cssnano-preset-advanced": "^6.0.2",
"eslint": "^8.51.0", "eslint": "^8.56.0",
"eslint-config-standard": "^17.1.0", "eslint-config-standard": "^17.1.0",
"eslint-plugin-import": "^2.28.1", "eslint-plugin-import": "^2.29.1",
"eslint-plugin-n": "^16.2.0", "eslint-plugin-n": "^16.5.0",
"eslint-plugin-promise": "^6.1.1", "eslint-plugin-promise": "^6.1.1",
"hugo-bin": "^0.115.0", "hugo-bin": "^0.117.1",
"markdownlint-cli2": "^0.10.0", "markdownlint-cli2": "^0.11.0",
"netlify-plugin-hugo-cache-resources": "^0.2.1", "netlify-plugin-hugo-cache-resources": "^0.2.1",
"npm-run-all": "^4.1.5", "npm-run-all": "^4.1.5",
"postcss-cli": "^10.1.0", "postcss-cli": "^11.0.0",
"purgecss-whitelister": "^2.4.0", "purgecss-whitelister": "^2.4.0",
"replace-in-files-cli": "^2.2.0", "replace-in-files-cli": "^2.2.0",
"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": "*" "@gethinode/netlify-plugin-dartsass": "^0.2.0",
"@netlify/plugin-lighthouse": "*",
"fsevents": "*",
"netlify-plugin-hugo-cache-resources": "^0.2.1"
}, },
"hugo-bin": { "hugo-bin": {
"buildTags": "extended" "buildTags": "extended"

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"