mirror of
https://github.com/gethinode/hinode.git
synced 2025-10-07 18:14:28 +00:00
Compare commits
298 Commits
v0.19.0-be
...
v0.21.0-be
Author | SHA1 | Date | |
---|---|---|---|
![]() |
bcf22f193c | ||
![]() |
6272f08d3a | ||
![]() |
14cf7a3f6f | ||
![]() |
51a92ecbe7 | ||
![]() |
567235ff3c | ||
![]() |
3a7f30474d | ||
![]() |
2f8a7c412e | ||
![]() |
f338da681b | ||
![]() |
80a2a2da3b | ||
![]() |
1b660ebd80 | ||
![]() |
43b9854190 | ||
![]() |
3779237f6a | ||
![]() |
e94d9b3b1a | ||
![]() |
8ec4bcfa5e | ||
![]() |
962835fc80 | ||
![]() |
cdd7e63e46 | ||
![]() |
1ae4678cdb | ||
![]() |
ec6dcbe049 | ||
![]() |
58e609c6f3 | ||
![]() |
128e52266f | ||
![]() |
576e50822f | ||
![]() |
5ff61d44d7 | ||
![]() |
7b1b2ecb42 | ||
![]() |
70b09a5265 | ||
![]() |
54ec23c85a | ||
![]() |
d97b88bcdd | ||
![]() |
6f5c7626c8 | ||
![]() |
0e1525ca7f | ||
![]() |
f6b520fb30 | ||
![]() |
a1849663cf | ||
![]() |
d4d0b075ed | ||
![]() |
e90bb990e8 | ||
![]() |
a9808cab34 | ||
![]() |
a40bb78a07 | ||
![]() |
8111ee0c76 | ||
![]() |
7191b57318 | ||
![]() |
f44670d2ca | ||
![]() |
9671f0c2eb | ||
![]() |
6ad6eef347 | ||
![]() |
43ed4d411e | ||
![]() |
7c8d5453cc | ||
![]() |
f4a40367f6 | ||
![]() |
e786ef279a | ||
![]() |
a6684e1bb5 | ||
![]() |
4fbe389245 | ||
![]() |
04b0af5d58 | ||
![]() |
7f797af3eb | ||
![]() |
4a3a0fb0bb | ||
![]() |
f9e9eec611 | ||
![]() |
cb71742a91 | ||
![]() |
638c7054d0 | ||
![]() |
fb21633f8c | ||
![]() |
9bb7cf1825 | ||
![]() |
e00ad4498b | ||
![]() |
a0f7e62616 | ||
![]() |
11653015ab | ||
![]() |
e6a37cab0f | ||
![]() |
7fcc6713a4 | ||
![]() |
5694938b81 | ||
![]() |
b6d3c17a87 | ||
![]() |
40ba175409 | ||
![]() |
bcc98d507b | ||
![]() |
ce1c32c930 | ||
![]() |
08d462f698 | ||
![]() |
d32e615837 | ||
![]() |
83368cdf3a | ||
![]() |
45525a6e3c | ||
![]() |
75a082c8df | ||
![]() |
d3d4d99fe4 | ||
![]() |
f05764d4a8 | ||
![]() |
a7822fcd55 | ||
![]() |
f0a0d2022a | ||
![]() |
2ccc85926e | ||
![]() |
b9699ab8bc | ||
![]() |
02ca7271fc | ||
![]() |
9dbe4bc8a1 | ||
![]() |
2ca20096a0 | ||
![]() |
1d7e8e3adb | ||
![]() |
88c897e09c | ||
![]() |
f1a1ec128f | ||
![]() |
b0bc03f251 | ||
![]() |
0f57e9ad1d | ||
![]() |
8b27c8986b | ||
![]() |
1210117922 | ||
![]() |
3a1e310e22 | ||
![]() |
918c043f10 | ||
![]() |
fbfb02d7ca | ||
![]() |
3026837946 | ||
![]() |
f7ccdad1df | ||
![]() |
4b4f70e6e0 | ||
![]() |
c28e9861ba | ||
![]() |
15c2b5466e | ||
![]() |
58bcdff782 | ||
![]() |
a08cdeeeb6 | ||
![]() |
9be2f7712d | ||
![]() |
f59e34758c | ||
![]() |
fc3846424d | ||
![]() |
11a0e4943a | ||
![]() |
5d95eb0420 | ||
![]() |
ef0b797e60 | ||
![]() |
dfa34a1838 | ||
![]() |
d58a32e283 | ||
![]() |
5fa1abe7bc | ||
![]() |
251dec084c | ||
![]() |
52ef24a5f6 | ||
![]() |
0a7fc04fa5 | ||
![]() |
612dbcc868 | ||
![]() |
850a92bee9 | ||
![]() |
5664e98d89 | ||
![]() |
1bd6f0f04e | ||
![]() |
58e3e0f53e | ||
![]() |
a3d8585276 | ||
![]() |
882269bf72 | ||
![]() |
c71e21ca0b | ||
![]() |
890ab25210 | ||
![]() |
81687c19ef | ||
![]() |
c98165c61e | ||
![]() |
0ee3ddef1d | ||
![]() |
06af1481e6 | ||
![]() |
740108432b | ||
![]() |
331959e3da | ||
![]() |
679e49e55f | ||
![]() |
5ae69f2466 | ||
![]() |
15c7d53acc | ||
![]() |
a1d93fca52 | ||
![]() |
56af6dda1d | ||
![]() |
7c62e115c3 | ||
![]() |
5f13e2d7ab | ||
![]() |
0186b3db8b | ||
![]() |
db4e353d8a | ||
![]() |
30468c2dab | ||
![]() |
3afe0a8a99 | ||
![]() |
fc626dc4c0 | ||
![]() |
7e4f582445 | ||
![]() |
f740443f73 | ||
![]() |
d43da60e8e | ||
![]() |
d29759da9b | ||
![]() |
4b3a2e441b | ||
![]() |
a8b8d07bf4 | ||
![]() |
34410446f3 | ||
![]() |
13098a351d | ||
![]() |
d071fa03a6 | ||
![]() |
6ff65c37ac | ||
![]() |
e03396490e | ||
![]() |
ad453b6400 | ||
![]() |
500a572a9c | ||
![]() |
f3bffcb5fb | ||
![]() |
30305ffd1c | ||
![]() |
62f2e33b64 | ||
![]() |
24d655ec76 | ||
![]() |
7668f795da | ||
![]() |
96a5853333 | ||
![]() |
6b767410dc | ||
![]() |
3f8dd1d457 | ||
![]() |
8cb501186a | ||
![]() |
bdfe42b22f | ||
![]() |
37c4fbdec0 | ||
![]() |
9af109d23d | ||
![]() |
3322e3337a | ||
![]() |
6ede71d164 | ||
![]() |
da2e41d59d | ||
![]() |
c08af69752 | ||
![]() |
1a3b438bfb | ||
![]() |
f15ee8cc5b | ||
![]() |
d65897ad09 | ||
![]() |
607f9690cc | ||
![]() |
3cbdc511c8 | ||
![]() |
e21ab89f89 | ||
![]() |
c50e0153f6 | ||
![]() |
bd3c2f9d78 | ||
![]() |
57bcc6d1ac | ||
![]() |
8331cb9f38 | ||
![]() |
1ef0f32ad9 | ||
![]() |
c9cab7f43d | ||
![]() |
73d8efcea7 | ||
![]() |
e9c45a45d7 | ||
![]() |
5b94307559 | ||
![]() |
ee03b65f2d | ||
![]() |
7920512f2b | ||
![]() |
928e355618 | ||
![]() |
efac0a7026 | ||
![]() |
42d10ed012 | ||
![]() |
b0655adff4 | ||
![]() |
c1b025d04b | ||
![]() |
3cf5884e10 | ||
![]() |
ce0acb9547 | ||
![]() |
777c54f6a1 | ||
![]() |
8e17d093c7 | ||
![]() |
33ba9d6e59 | ||
![]() |
f6a1751efe | ||
![]() |
00372947fa | ||
![]() |
c86167851f | ||
![]() |
6a90952319 | ||
![]() |
02f135eec3 | ||
![]() |
daa9bcc471 | ||
![]() |
5072fd6a07 | ||
![]() |
20f5868759 | ||
![]() |
db0297e898 | ||
![]() |
1efb03f3be | ||
![]() |
4e00d967a6 | ||
![]() |
266ca8db68 | ||
![]() |
2b976a3eec | ||
![]() |
962429ad33 | ||
![]() |
5d5c645308 | ||
![]() |
f1c7792f87 | ||
![]() |
fe86a21303 | ||
![]() |
33cccd76b3 | ||
![]() |
1f90c552a7 | ||
![]() |
614e789ce4 | ||
![]() |
07f2f82675 | ||
![]() |
d28d2be7c5 | ||
![]() |
a3250b31c2 | ||
![]() |
eae97e2017 | ||
![]() |
7983a52de9 | ||
![]() |
92b1b81b25 | ||
![]() |
f91fe303fb | ||
![]() |
529b0db71d | ||
![]() |
bd142ac66d | ||
![]() |
3749937799 | ||
![]() |
16d309cc34 | ||
![]() |
5315bc950a | ||
![]() |
2dbf6a9faf | ||
![]() |
a67e38bd1b | ||
![]() |
4688176216 | ||
![]() |
dbee9aafd7 | ||
![]() |
8c20617b1a | ||
![]() |
9e2ed6480d | ||
![]() |
7ef1b1aba9 | ||
![]() |
b74071d4cf | ||
![]() |
dc7578a5c3 | ||
![]() |
2227cf5fe2 | ||
![]() |
1296595ff7 | ||
![]() |
94f0b7599d | ||
![]() |
481d3099eb | ||
![]() |
d9a718d934 | ||
![]() |
e396bcce82 | ||
![]() |
b80b45f126 | ||
![]() |
b9a9a84982 | ||
![]() |
32a582dc66 | ||
![]() |
ce7362a6f5 | ||
![]() |
c3541f0368 | ||
![]() |
fa9da5147d | ||
![]() |
9905581b63 | ||
![]() |
4fe871d5c1 | ||
![]() |
4e5e39624b | ||
![]() |
7174c8ac39 | ||
![]() |
37c26de1ce | ||
![]() |
a56030eb53 | ||
![]() |
686a54b666 | ||
![]() |
3f3c19aeaa | ||
![]() |
0ff114b51d | ||
![]() |
f8deb13215 | ||
![]() |
b4669878a6 | ||
![]() |
68210961be | ||
![]() |
6af0d9b062 | ||
![]() |
ad401a8747 | ||
![]() |
e0ca123aa2 | ||
![]() |
ef3636befe | ||
![]() |
5635f895df | ||
![]() |
779f9b11a7 | ||
![]() |
b0b8e9d684 | ||
![]() |
b4f7163913 | ||
![]() |
6ef4738619 | ||
![]() |
333e4c3e07 | ||
![]() |
705900dd27 | ||
![]() |
363b6293af | ||
![]() |
97ef22d3fb | ||
![]() |
f7fa573347 | ||
![]() |
971b61fe8a | ||
![]() |
303a611913 | ||
![]() |
066a9f1722 | ||
![]() |
ac5cddf448 | ||
![]() |
d6bea30b24 | ||
![]() |
ac05154eec | ||
![]() |
ff579b0cfc | ||
![]() |
13ede1b2a4 | ||
![]() |
51c7706af2 | ||
![]() |
5a3c2c298b | ||
![]() |
608e8609c6 | ||
![]() |
60edf6d444 | ||
![]() |
28c79f30a2 | ||
![]() |
89fcd7413f | ||
![]() |
5741027a54 | ||
![]() |
6598ca5335 | ||
![]() |
5024bac01e | ||
![]() |
499a481baa | ||
![]() |
7d4ab6ff58 | ||
![]() |
9c93d5e336 | ||
![]() |
19af20457e | ||
![]() |
1cdc165b1c | ||
![]() |
ede8fe8066 | ||
![]() |
51046d9646 | ||
![]() |
f2fd933f50 | ||
![]() |
8d16d50171 | ||
![]() |
3e3e2486ee | ||
![]() |
780707d821 | ||
![]() |
8ac0f752ba | ||
![]() |
180641a72b |
2
.github/release.yml
vendored
2
.github/release.yml
vendored
@@ -14,7 +14,7 @@ changelog:
|
|||||||
labels:
|
labels:
|
||||||
- Semver-Minor
|
- Semver-Minor
|
||||||
- enhancement
|
- enhancement
|
||||||
- title: 🐛 Bug fixes
|
- title: 🐛 Bug Fixes
|
||||||
labels:
|
labels:
|
||||||
- fix
|
- fix
|
||||||
- bugfix
|
- bugfix
|
||||||
|
13
.github/workflows/lint-build.yml
vendored
13
.github/workflows/lint-build.yml
vendored
@@ -43,7 +43,7 @@ jobs:
|
|||||||
matrix:
|
matrix:
|
||||||
os: [macos-latest, windows-latest, ubuntu-latest]
|
os: [macos-latest, windows-latest, ubuntu-latest]
|
||||||
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
|
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
|
||||||
node-version: [16.x, 18.x, 20.x]
|
node-version: [18.x, 20.x]
|
||||||
|
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
|
|
||||||
@@ -58,6 +58,17 @@ jobs:
|
|||||||
cache: 'npm'
|
cache: 'npm'
|
||||||
cache-dependency-path: '**/package-lock.json'
|
cache-dependency-path: '**/package-lock.json'
|
||||||
|
|
||||||
|
- name: Install Dart Sass
|
||||||
|
run: |
|
||||||
|
if [ "$RUNNER_OS" == "Linux" ]; then
|
||||||
|
sudo snap install dart-sass
|
||||||
|
elif [ "$RUNNER_OS" == "macOS" ]; then
|
||||||
|
brew install sass/sass/sass
|
||||||
|
elif [ "$RUNNER_OS" == "Windows" ]; then
|
||||||
|
choco install sass
|
||||||
|
fi
|
||||||
|
shell: bash
|
||||||
|
|
||||||
# [24/AUG/23] Adjusted from npm ci for non-macOS to prevent EBADPLATFORM error due to fsevents
|
# [24/AUG/23] Adjusted from npm ci for non-macOS to prevent EBADPLATFORM error due to fsevents
|
||||||
- name: Perform clean install of npm
|
- name: Perform clean install of npm
|
||||||
run: |
|
run: |
|
||||||
|
@@ -3,5 +3,6 @@ assets/scss/components/_syntax-dark.scss
|
|||||||
assets/scss/components/_syntax-light.scss
|
assets/scss/components/_syntax-light.scss
|
||||||
assets/scss/vendor
|
assets/scss/vendor
|
||||||
assets/scss/theme/fonts.scss
|
assets/scss/theme/fonts.scss
|
||||||
|
assets/scss/app-dart.scss
|
||||||
assets/scss/app.scss
|
assets/scss/app.scss
|
||||||
node_modules
|
node_modules
|
||||||
|
57
assets/scss/app-dart.scss
Normal file
57
assets/scss/app-dart.scss
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
@use "sass:meta";
|
||||||
|
|
||||||
|
// Define template variables
|
||||||
|
@use "hugo:vars" as h; // note: modified for dart-sass
|
||||||
|
|
||||||
|
// Include default variable overrides
|
||||||
|
@import "common/variables-dart.scss"; // note: modified for dart-sass
|
||||||
|
@import "common/icons.scss";
|
||||||
|
|
||||||
|
// Import Bootstrap configuration (mounted by core Bootstrap module)
|
||||||
|
@import "bootstrap-dart.scss"; // note: modified for dart-sass
|
||||||
|
|
||||||
|
// Include dark mode overrides
|
||||||
|
@import "common/variables-dark.scss";
|
||||||
|
|
||||||
|
// Import Hinode theme styles
|
||||||
|
@import "components/abbr.scss";
|
||||||
|
@import "components/alert.scss";
|
||||||
|
@import "components/blockquote.scss";
|
||||||
|
@import "components/breadcrumb.scss";
|
||||||
|
@import "components/button.scss";
|
||||||
|
@import "components/card.scss";
|
||||||
|
@import "components/carousel.scss";
|
||||||
|
@import "components/clipboard.scss";
|
||||||
|
@import "components/command.scss";
|
||||||
|
@import "components/comments.scss";
|
||||||
|
@import "components/feature.scss";
|
||||||
|
@import "components/footer.scss";
|
||||||
|
@import "components/navbar.scss";
|
||||||
|
@import "components/img.scss";
|
||||||
|
@import "components/pagination.scss";
|
||||||
|
@import "components/persona.scss";
|
||||||
|
@import "components/popover.scss";
|
||||||
|
@import "components/sidebar.scss";
|
||||||
|
@import "components/syntax-dart.scss"; // note: modified for dart-sass
|
||||||
|
@import "components/table.scss";
|
||||||
|
@import "components/timeline.scss";
|
||||||
|
@import "components/toc.scss";
|
||||||
|
@import "components/vimeo.scss";
|
||||||
|
@import "common/animation.scss";
|
||||||
|
@import "common/styles.scss";
|
||||||
|
@import "layouts/reboot.scss";
|
||||||
|
@import "layouts/type.scss";
|
||||||
|
@import "common/export.scss";
|
||||||
|
@import "helpers/colored-links.scss";
|
||||||
|
@import "helpers/display.scss";
|
||||||
|
|
||||||
|
// note: modified for dart-sass
|
||||||
|
@if h.$import-fonts {
|
||||||
|
@include meta.load-css(theme/fonts);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Import theme placeholder
|
||||||
|
@import "theme/theme.scss";
|
||||||
|
|
||||||
|
// Import Bootstrap utilities API (mounted by core Bootstrap module)
|
||||||
|
@import "modules/bootstrap/utilities/api";
|
@@ -12,10 +12,11 @@
|
|||||||
@import "common/variables-dark.scss";
|
@import "common/variables-dark.scss";
|
||||||
|
|
||||||
// Import Hinode theme styles
|
// Import Hinode theme styles
|
||||||
|
@import "components/abbr.scss";
|
||||||
@import "components/alert.scss";
|
@import "components/alert.scss";
|
||||||
@import "components/blockquote.scss";
|
@import "components/blockquote.scss";
|
||||||
@import "components/breadcrumb.scss";
|
@import "components/breadcrumb.scss";
|
||||||
@import "components/buttons.scss";
|
@import "components/button.scss";
|
||||||
@import "components/card.scss";
|
@import "components/card.scss";
|
||||||
@import "components/carousel.scss";
|
@import "components/carousel.scss";
|
||||||
@import "components/clipboard.scss";
|
@import "components/clipboard.scss";
|
||||||
|
@@ -15,6 +15,34 @@ a:active {
|
|||||||
min-height: 100vh;
|
min-height: 100vh;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.fullcover {
|
||||||
|
--navbar-height: #{$navbar-height};
|
||||||
|
|
||||||
|
min-height: calc(100vh - var(--navbar-height));
|
||||||
|
}
|
||||||
|
|
||||||
|
.fullscreen {
|
||||||
|
--navbar-offset: #{$navbar-offset};
|
||||||
|
|
||||||
|
min-height: calc(100vh - var(--navbar-offset));
|
||||||
|
}
|
||||||
|
|
||||||
|
.main-content {
|
||||||
|
margin-top: $navbar-offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
$utilities: map-merge(
|
||||||
|
$utilities,
|
||||||
|
(
|
||||||
|
"cursor": (
|
||||||
|
property: margin-left margin-right,
|
||||||
|
class: mx,
|
||||||
|
responsive: true,
|
||||||
|
values: auto 0,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
.tickmark li::marker {
|
.tickmark li::marker {
|
||||||
content: "✓ ";
|
content: "✓ ";
|
||||||
}
|
}
|
||||||
|
43
assets/scss/common/_variables-dart.scss
Normal file
43
assets/scss/common/_variables-dart.scss
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
// Bootstrap variables overrides for theme
|
||||||
|
$enable-negative-margins: true;
|
||||||
|
$enable-important-utilities: true !default;
|
||||||
|
|
||||||
|
// Remove the border from the focused navigation toggler
|
||||||
|
$navbar-toggler-focus-width: 0 !default;
|
||||||
|
|
||||||
|
$font-family-sans-serif: h.$theme-font, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
|
||||||
|
$font-size-base: h.$font-size-base !default;
|
||||||
|
$headings-font-weight: 600 !default;
|
||||||
|
$font-weight-lighter: lighter !default;
|
||||||
|
$font-weight-light: 200 !default;
|
||||||
|
$font-weight-normal: 300 !default;
|
||||||
|
$font-weight-bold: 600 !default;
|
||||||
|
$font-weight-bolder: bolder !default;
|
||||||
|
|
||||||
|
strong {
|
||||||
|
font-weight: 600 if($enable-important-utilities, !important, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
$navbar-height: h.$navbar-height;
|
||||||
|
$navbar-offset: h.$navbar-offset;
|
||||||
|
$primary: h.$primary;
|
||||||
|
$secondary: h.$secondary;
|
||||||
|
$success: h.$success;
|
||||||
|
$info: h.$info;
|
||||||
|
$warning: h.$warning;
|
||||||
|
$danger: h.$danger;
|
||||||
|
$light: h.$light;
|
||||||
|
$dark: h.$dark;
|
||||||
|
|
||||||
|
$black: #000 !default;
|
||||||
|
$btn-toggle-color: $black !default;
|
||||||
|
|
||||||
|
$carousel-dark-indicator-active-bg: #fff !default;
|
||||||
|
$carousel-dark-caption-color: #fff !default;
|
||||||
|
$carousel-dark-control-icon-filter: invert(0) grayscale(100) !default;
|
||||||
|
|
||||||
|
$primary-text-emphasis-dark: mix(white, h.$primary, h.$dark-mode-tint) !default;
|
||||||
|
$secondary-text-emphasis-dark: mix(white, h.$secondary, h.$dark-mode-tint) !default;
|
||||||
|
$link-color-dark: mix(white, h.$primary, h.$dark-mode-tint) !default;
|
||||||
|
$primary-bg-subtle-dark: mix(black, h.$primary, h.$dark-mode-shade) !default;
|
||||||
|
$primary-border-subtle-dark: mix(black, h.$primary, calc(h.$dark-mode-shade / 2)) !default;
|
@@ -7,6 +7,7 @@ $navbar-toggler-focus-width: 0 !default;
|
|||||||
|
|
||||||
// scss-docs-start font
|
// scss-docs-start font
|
||||||
$font-family-sans-serif: $theme-font, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
|
$font-family-sans-serif: $theme-font, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
|
||||||
|
$font-size-base: $font-size-base !default;;
|
||||||
$headings-font-weight: 600 !default;
|
$headings-font-weight: 600 !default;
|
||||||
$font-weight-lighter: lighter !default;
|
$font-weight-lighter: lighter !default;
|
||||||
$font-weight-light: 200 !default;
|
$font-weight-light: 200 !default;
|
||||||
@@ -22,8 +23,8 @@ strong {
|
|||||||
$black: #000 !default;
|
$black: #000 !default;
|
||||||
$btn-toggle-color: $black !default;
|
$btn-toggle-color: $black !default;
|
||||||
|
|
||||||
$carousel-dark-indicator-active-bg: #ffffff !default;
|
$carousel-dark-indicator-active-bg: #fff !default;
|
||||||
$carousel-dark-caption-color: #ffffff !default;
|
$carousel-dark-caption-color: #fff !default;
|
||||||
$carousel-dark-control-icon-filter: invert(0) grayscale(100) !default;
|
$carousel-dark-control-icon-filter: invert(0) grayscale(100) !default;
|
||||||
|
|
||||||
// scss-docs-start color-mode
|
// scss-docs-start color-mode
|
||||||
|
22
assets/scss/components/_abbr.scss
Normal file
22
assets/scss/components/_abbr.scss
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
@media (hover: none) {
|
||||||
|
abbr[title] {
|
||||||
|
position: relative;
|
||||||
|
text-decoration: underline dotted;
|
||||||
|
}
|
||||||
|
|
||||||
|
abbr[title]:hover::after,
|
||||||
|
abbr[title]:focus::after {
|
||||||
|
content: attr(title);
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
bottom: -30px;
|
||||||
|
width: auto;
|
||||||
|
white-space: nowrap;
|
||||||
|
background-color: var(--bs-body-bg);
|
||||||
|
color: var(--bs-tooltip-color);
|
||||||
|
border-radius: 3px;
|
||||||
|
box-shadow: 1px 1px 5px 0 rgba(0,0,0,0.4);
|
||||||
|
font-size: 14px;
|
||||||
|
padding: 3px 5px;
|
||||||
|
}
|
||||||
|
}
|
@@ -28,3 +28,16 @@
|
|||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
color: var(--bs-primary) if($enable-important-utilities, !important, null);
|
color: var(--bs-primary) if($enable-important-utilities, !important, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
a.btn {
|
||||||
|
margin-top: $spacer * .25;
|
||||||
|
margin-bottom: $spacer * .25;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-close {
|
||||||
|
background-color: transparent if($enable-important-utilities, !important, null);
|
||||||
|
background-image: var(--#{$prefix}btn-close-bg) if($enable-important-utilities, !important, null);
|
||||||
|
background-position: center if($enable-important-utilities, !important, null);
|
||||||
|
background-repeat: no-repeat if($enable-important-utilities, !important, null);
|
||||||
|
background-size: $btn-close-width if($enable-important-utilities, !important, null);
|
||||||
|
}
|
@@ -15,6 +15,10 @@
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.card-icon {
|
||||||
|
color: $secondary;
|
||||||
|
}
|
||||||
|
|
||||||
.card-zoom::after .card-img-wrap img {
|
.card-zoom::after .card-img-wrap img {
|
||||||
content: "";
|
content: "";
|
||||||
position: absolute;
|
position: absolute;
|
||||||
|
@@ -108,7 +108,7 @@
|
|||||||
background-color: $white if($enable-important-utilities, !important, null);
|
background-color: $white if($enable-important-utilities, !important, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
.emphasis, {
|
.emphasis {
|
||||||
background-color: $black if($enable-important-utilities, !important, null);
|
background-color: $black if($enable-important-utilities, !important, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -119,3 +119,75 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 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-transition: opacity .15s ease-in-out !default;
|
||||||
|
|
||||||
|
.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: calc((-1.5 * $spacer) - 2px);
|
||||||
|
padding-top: calc(1 * $spacer + 2px);
|
||||||
|
padding-bottom: 1 * $spacer;
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
49
assets/scss/components/_syntax-dart.scss
Normal file
49
assets/scss/components/_syntax-dart.scss
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
// stylelint-disable annotation-no-unknown
|
||||||
|
@import "syntax-light";
|
||||||
|
|
||||||
|
.bg,
|
||||||
|
.chroma,
|
||||||
|
.chroma .err {
|
||||||
|
// set to transparent background to avoid rendering issues with example shortcode
|
||||||
|
background-color: transparent if($enable-important-utilities, !important, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
.chroma {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chroma code {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.syntax-highlight {
|
||||||
|
background-color: var(--bs-light) if($enable-important-utilities, !important, null);
|
||||||
|
overflow-x: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
@if $enable-dark-mode {
|
||||||
|
[data-bs-theme="dark"] {
|
||||||
|
@include meta.load-css(syntax-dark);
|
||||||
|
|
||||||
|
.bg,
|
||||||
|
.chroma,
|
||||||
|
.chroma .err {
|
||||||
|
// set to transparent background to avoid rendering issues with example shortcode
|
||||||
|
background-color: transparent if($enable-important-utilities, !important, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
.syntax-highlight {
|
||||||
|
background-color: var(--bs-tertiary-bg) if($enable-important-utilities, !important, null);
|
||||||
|
overflow-x: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg,
|
||||||
|
.chroma,
|
||||||
|
.chroma .ge,
|
||||||
|
.chroma .gl,
|
||||||
|
.chroma .gs {
|
||||||
|
color: #c9d1d9 if($enable-important-utilities, !important, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// stylelint-enable annotation-no-unknown
|
@@ -1,11 +1,13 @@
|
|||||||
@if $enable-dark-mode {
|
@if $enable-dark-mode {
|
||||||
@include color-mode(dark) {
|
@include color-mode(dark) {
|
||||||
.table-striped, .table-striped-columns {
|
.table-striped, .table-striped-columns {
|
||||||
--bs-table-striped-bg: var(--bs-tertiary-color);
|
--bs-table-striped-bg: var(--bs-tertiary-bg);
|
||||||
|
--bs-table-striped-color: var(--bs-body-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
.table-hover {
|
.table-hover {
|
||||||
--bs-table-hover-bg: var(--bs-tertiary-color);
|
--bs-table-hover-bg: var(--bs-tertiary-bg);
|
||||||
|
--bs-table-striped-color: var(--bs-body-color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -75,6 +75,10 @@
|
|||||||
.toc-button {
|
.toc-button {
|
||||||
--bs-btn-color: var(--bs-body-color);
|
--bs-btn-color: var(--bs-body-color);
|
||||||
--bs-btn-border-color: var(--bs-body-color);
|
--bs-btn-border-color: var(--bs-body-color);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#toc-collapse {
|
#toc-collapse {
|
||||||
|
@@ -30,3 +30,7 @@ h6 {
|
|||||||
margin-top: $spacer;
|
margin-top: $spacer;
|
||||||
scroll-margin-top: $navbar-offset;
|
scroll-margin-top: $navbar-offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.display-1, .display-2, .display-3, .display-4, .display-5, .display-6 {
|
||||||
|
scroll-margin-top: $navbar-offset;
|
||||||
|
}
|
||||||
|
@@ -120,4 +120,6 @@ home = ["HTML", "RSS", "REDIR"]
|
|||||||
path = "github.com/gethinode/mod-katex"
|
path = "github.com/gethinode/mod-katex"
|
||||||
[[module.imports]]
|
[[module.imports]]
|
||||||
path = "github.com/gethinode/mod-leaflet"
|
path = "github.com/gethinode/mod-leaflet"
|
||||||
|
[[module.imports]]
|
||||||
|
path = "github.com/gethinode/mod-lottie"
|
||||||
# toml-docs-end modules
|
# toml-docs-end modules
|
||||||
|
@@ -6,17 +6,23 @@
|
|||||||
modes = ["light", "dark"]
|
modes = ["light", "dark"]
|
||||||
canonifyAssetsURLs = false
|
canonifyAssetsURLs = false
|
||||||
endorse = true
|
endorse = true
|
||||||
|
footerBelowFold = false
|
||||||
|
loading = "lazy"
|
||||||
[main.externalLinks]
|
[main.externalLinks]
|
||||||
cue = false
|
cue = false
|
||||||
tab = false
|
tab = false
|
||||||
|
[main.build]
|
||||||
|
transpiler = "libsass"
|
||||||
# toml-docs-end main
|
# toml-docs-end main
|
||||||
|
|
||||||
# toml-docs-start modules
|
# toml-docs-start modules
|
||||||
[modules]
|
[modules]
|
||||||
core = ["bootstrap", "flexsearch", "fontawesome"]
|
core = ["bootstrap", "flexsearch", "fontawesome"]
|
||||||
optional = ["leaflet", "katex"]
|
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
|
||||||
@@ -43,6 +49,11 @@
|
|||||||
fullCover = false
|
fullCover = false
|
||||||
centerHeadline = false
|
centerHeadline = false
|
||||||
style = ""
|
style = ""
|
||||||
|
[home.feature]
|
||||||
|
orientation = "horizontal"
|
||||||
|
color = "primary"
|
||||||
|
width = 4
|
||||||
|
align = "start"
|
||||||
# toml-docs-end home
|
# toml-docs-end home
|
||||||
|
|
||||||
# toml-docs-start navigation
|
# toml-docs-start navigation
|
||||||
@@ -51,8 +62,10 @@
|
|||||||
logo = "/img/logo_icon.svg"
|
logo = "/img/logo_icon.svg"
|
||||||
color = "body"
|
color = "body"
|
||||||
fixed = true
|
fixed = true
|
||||||
offset = "3.8em"
|
horizontal = false
|
||||||
|
offset = "5.5rem"
|
||||||
search = true
|
search = true
|
||||||
|
searchModal = false
|
||||||
breadcrumb = true
|
breadcrumb = true
|
||||||
toc = true
|
toc = true
|
||||||
sidebar = true
|
sidebar = true
|
||||||
@@ -143,6 +156,7 @@
|
|||||||
themeFont = "Inter"
|
themeFont = "Inter"
|
||||||
# themeFontPath = "https://fonts.googleapis.com/css2?family=Inter:wght@200;300;600&display=swap" # external path
|
# themeFontPath = "https://fonts.googleapis.com/css2?family=Inter:wght@200;300;600&display=swap" # external path
|
||||||
themeFontPath = "/fonts" # local path
|
themeFontPath = "/fonts" # local path
|
||||||
|
fontSizeBase = "1rem" # assumes the browser default, typically '16px'
|
||||||
# toml-docs-end font
|
# toml-docs-end font
|
||||||
# toml-docs-start build
|
# toml-docs-start build
|
||||||
purge = false
|
purge = false
|
||||||
|
@@ -1,13 +1,15 @@
|
|||||||
---
|
---
|
||||||
title: Welcome to Hinode!
|
title: Welcome to Hinode!
|
||||||
|
description: A clean documentation and blog theme for your Hugo site based on Bootstrap 5.
|
||||||
thumbnail:
|
thumbnail:
|
||||||
url: /img/sunrise.jpg
|
url: /img/sunrise.jpg
|
||||||
author: Harris Vo
|
author: Harris Vo
|
||||||
authorURL: https://unsplash.com/@hoanvokim
|
authorURL: https://unsplash.com/@hoanvokim
|
||||||
origin: https://unsplash.com/photos/ZX6BPboJrYk
|
origin: https://unsplash.com/photos/ZX6BPboJrYk
|
||||||
originName: Unsplash
|
originName: Unsplash
|
||||||
|
actions:
|
||||||
|
get-started:
|
||||||
|
url: "https://gethinode.com/docs"
|
||||||
|
title: "Get started"
|
||||||
|
icon: "fas book-open"
|
||||||
---
|
---
|
||||||
|
|
||||||
A clean documentation and blog theme for your Hugo site based on Bootstrap 5.
|
|
||||||
|
|
||||||
{{< button href="https://gethinode.com/docs" icon="fas book-open" order="first" >}}Get Started{{< /button>}}
|
|
||||||
|
3
exampleSite/assets/svgs/custom/activity.svg
Normal file
3
exampleSite/assets/svgs/custom/activity.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-activity" viewBox="0 0 16 16">
|
||||||
|
<path fill-rule="evenodd" d="M6 2a.5.5 0 0 1 .47.33L10 12.036l1.53-4.208A.5.5 0 0 1 12 7.5h3.5a.5.5 0 0 1 0 1h-3.15l-1.88 5.17a.5.5 0 0 1-.94 0L6 3.964 4.47 8.171A.5.5 0 0 1 4 8.5H.5a.5.5 0 0 1 0-1h3.15l1.88-5.17A.5.5 0 0 1 6 2Z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 367 B |
@@ -4,13 +4,17 @@
|
|||||||
enableDarkMode = true
|
enableDarkMode = true
|
||||||
modes = ["light", "dark"]
|
modes = ["light", "dark"]
|
||||||
canonifyAssetsURLs = false
|
canonifyAssetsURLs = false
|
||||||
|
footerBelowFold = false
|
||||||
|
loading = "lazy"
|
||||||
[main.externalLinks]
|
[main.externalLinks]
|
||||||
cue = true
|
cue = true
|
||||||
tab = true
|
tab = true
|
||||||
|
[main.build]
|
||||||
|
transpiler = "dartsass"
|
||||||
|
|
||||||
[modules]
|
[modules]
|
||||||
core = ["bootstrap", "flexsearch", "fontawesome"]
|
core = ["bootstrap", "flexsearch", "fontawesome"]
|
||||||
optional = ["leaflet", "katex"]
|
optional = ["leaflet", "katex", "lottie"]
|
||||||
excludeSCSS = ["bootstrap"]
|
excludeSCSS = ["bootstrap"]
|
||||||
disableTemplate = ["katex"]
|
disableTemplate = ["katex"]
|
||||||
[modules.fontawesome]
|
[modules.fontawesome]
|
||||||
@@ -34,14 +38,21 @@
|
|||||||
fullCover = false
|
fullCover = false
|
||||||
centerHeadline = false
|
centerHeadline = false
|
||||||
style = ""
|
style = ""
|
||||||
|
[home.feature]
|
||||||
|
orientation = "horizontal"
|
||||||
|
color = "primary"
|
||||||
|
width = 4
|
||||||
|
align = "start"
|
||||||
|
|
||||||
[navigation]
|
[navigation]
|
||||||
anchor = true
|
anchor = true
|
||||||
logo = "/img/logo_icon.svg"
|
logo = "/img/logo_icon.svg"
|
||||||
color = "body"
|
color = "body"
|
||||||
fixed = true
|
fixed = true
|
||||||
offset = "3.8em"
|
horizontal = false
|
||||||
|
offset = "5.5rem"
|
||||||
search = true
|
search = true
|
||||||
|
searchModal = false
|
||||||
breadcrumb = true
|
breadcrumb = true
|
||||||
toc = true
|
toc = true
|
||||||
sidebar = true
|
sidebar = true
|
||||||
|
44
exampleSite/config/postcss.config.js
Normal file
44
exampleSite/config/postcss.config.js
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
const autoprefixer = require('autoprefixer')({})
|
||||||
|
const cssnano = require('cssnano')({
|
||||||
|
preset: 'advanced'
|
||||||
|
})
|
||||||
|
const whitelister = require('purgecss-whitelister')
|
||||||
|
const purgecss = require('@fullhuman/postcss-purgecss')({
|
||||||
|
content: ['./exampleSite/hugo_stats.json'],
|
||||||
|
defaultExtractor: (content) => {
|
||||||
|
const els = JSON.parse(content).htmlElements
|
||||||
|
return [...(els.tags || []), ...(els.classes || []), ...(els.ids || [])]
|
||||||
|
},
|
||||||
|
dynamicAttributes: ['data-bs-theme'],
|
||||||
|
safelist: [
|
||||||
|
...whitelister([
|
||||||
|
'./assets/scss/components/_clipboard.scss',
|
||||||
|
'./assets/scss/components/_command.scss',
|
||||||
|
'./assets/scss/components/_navbar.scss',
|
||||||
|
'./assets/scss/components/_search.scss',
|
||||||
|
'./assets/scss/components/_syntax.scss',
|
||||||
|
'./assets/scss/components/_syntax-dark.scss',
|
||||||
|
'./assets/scss/components/_syntax-light.scss',
|
||||||
|
'./assets/scss/components/_table.scss',
|
||||||
|
'./assets/scss/theme/fonts.scss',
|
||||||
|
'./assets/scss/theme/theme.scss',
|
||||||
|
'./_vendor/github.com/gethinode/mod-flexsearch/assets/scss/modules/flexsearch/flexsearch.scss',
|
||||||
|
'./_vendor/github.com/gethinode/mod-katex/dist/katex.scss',
|
||||||
|
'./_vendor/github.com/gethinode/mod-leaflet/dist/leaflet.scss',
|
||||||
|
'./_vendor/github.com/twbs/bootstrap/scss/_carousel.scss',
|
||||||
|
'./_vendor/github.com/twbs/bootstrap/scss/_dropdown.scss',
|
||||||
|
'./_vendor/github.com/twbs/bootstrap/scss/_reboot.scss',
|
||||||
|
'./_vendor/github.com/twbs/bootstrap/scss/_tooltip.scss',
|
||||||
|
'./_vendor/github.com/twbs/bootstrap/scss/_transitions.scss',
|
||||||
|
'./_vendor/github.com/twbs/bootstrap/scss/_utilities.scss'
|
||||||
|
])
|
||||||
|
]
|
||||||
|
})
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
plugins: [
|
||||||
|
autoprefixer,
|
||||||
|
cssnano,
|
||||||
|
purgecss
|
||||||
|
]
|
||||||
|
}
|
@@ -1,14 +1,15 @@
|
|||||||
---
|
---
|
||||||
author: Mark Dumay
|
author: Mark Dumay
|
||||||
title: Welcome to Hinode!
|
title: Welcome to Hinode!
|
||||||
|
description: A clean documentation and blog theme for your Hugo site based on Bootstrap 5.
|
||||||
thumbnail:
|
thumbnail:
|
||||||
url: /img/sunrise.jpg
|
url: /img/sunrise.jpg
|
||||||
author: Harris Vo
|
author: Harris Vo
|
||||||
authorURL: https://unsplash.com/@hoanvokim
|
authorURL: https://unsplash.com/@hoanvokim
|
||||||
origin: https://unsplash.com/photos/ZX6BPboJrYk
|
origin: https://unsplash.com/photos/ZX6BPboJrYk
|
||||||
originName: Unsplash
|
originName: Unsplash
|
||||||
|
actions:
|
||||||
|
about:
|
||||||
|
url: "about"
|
||||||
|
title: "About"
|
||||||
---
|
---
|
||||||
|
|
||||||
A clean documentation and blog theme for your Hugo site based on Bootstrap 5.
|
|
||||||
|
|
||||||
{{< button href="about" >}}About{{< /button>}}
|
|
||||||
|
@@ -241,13 +241,14 @@ Use the `file` shortcode to print and highlight the full content of a given inpu
|
|||||||
|
|
||||||
## Icon
|
## Icon
|
||||||
|
|
||||||
As an example, the following shortcodes show a square check, a brand logo, and a circle check.
|
As an example, the following shortcodes show a square check, a brand logo, a circle check, and a custom icon.
|
||||||
|
|
||||||
<!-- markdownlint-disable MD037 -->
|
<!-- markdownlint-disable MD037 -->
|
||||||
{{< example lang="hugo" >}}
|
{{< example lang="hugo" >}}
|
||||||
{{</* fa square-check */>}}
|
{{</* fa square-check */>}}
|
||||||
{{</* fab linkedin */>}}
|
{{</* fab linkedin */>}}
|
||||||
{{</* fas circle-check */>}}
|
{{</* fas circle-check */>}}
|
||||||
|
{{</* icon custom activity */>}}
|
||||||
{{< /example >}}
|
{{< /example >}}
|
||||||
<!-- markdownlint-enable MD037 -->
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
@@ -293,9 +294,9 @@ As an example, the following shortcodes render links in different formats.
|
|||||||
- {{</* link url="projects/another-project" /*/>}}
|
- {{</* link url="projects/another-project" /*/>}}
|
||||||
- {{</* link url="/projects/another-project" /*/>}}
|
- {{</* link url="/projects/another-project" /*/>}}
|
||||||
- {{</* link url="../projects/another-project" case=false /*/>}}
|
- {{</* link url="../projects/another-project" case=false /*/>}}
|
||||||
- {{</* link "/about/" /*/>}}
|
- {{</* link "about" /*/>}}
|
||||||
- {{</* link "/fr/about/" /*/>}}
|
- {{</* link "/fr/a-propos/" /*/>}}
|
||||||
- {{</* link "/fr/about" >}}About (French){{< /link */>}}
|
- {{</* link "/fr/a-propos" >}}About (French){{< /link */>}}
|
||||||
- {{</* link "#image" /*/>}}
|
- {{</* link "#image" /*/>}}
|
||||||
- {{</* link "components/#map" /*/>}}
|
- {{</* link "components/#map" /*/>}}
|
||||||
|
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
author: Mark Dumay
|
author: Mark Dumay
|
||||||
title: Components
|
title: Components
|
||||||
date: 2023-07-21
|
date: 2023-09-23
|
||||||
description: Use shortcodes to add predefined components powered by external libraries.
|
description: Use shortcodes to add predefined components powered by external libraries.
|
||||||
tags: ["bootstrap", "shortcode"]
|
tags: ["bootstrap", "shortcode"]
|
||||||
thumbnail:
|
thumbnail:
|
||||||
@@ -10,11 +10,21 @@ thumbnail:
|
|||||||
authorURL: https://unsplash.com/@ryoji__iwata
|
authorURL: https://unsplash.com/@ryoji__iwata
|
||||||
origin: Unsplash
|
origin: Unsplash
|
||||||
originURL: https://unsplash.com/photos/5siQcvSxCP8
|
originURL: https://unsplash.com/photos/5siQcvSxCP8
|
||||||
modules: ["katex", "leaflet"]
|
modules: ["katex", "leaflet", "lottie"]
|
||||||
---
|
---
|
||||||
|
|
||||||
Hinode provides several shortcodes on top of the common [Bootstrap elements]({{< relref "bootstrap-elements" >}}). Refer to the [official documentation]({{< param "links.hinode_docs" >}}) for more details.
|
Hinode provides several shortcodes on top of the common [Bootstrap elements]({{< relref "bootstrap-elements" >}}). Refer to the [official documentation]({{< param "links.hinode_docs" >}}) for more details.
|
||||||
|
|
||||||
|
## Animation
|
||||||
|
|
||||||
|
As an example, the following shortcode shows an animation that plays on hover.
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example lang="hugo" >}}
|
||||||
|
{{</* animation data="gatin.json" auto=false hover=true class="col-6 mx-auto" */>}}
|
||||||
|
{{< /example >}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
## Formula (KaTeX)
|
## Formula (KaTeX)
|
||||||
|
|
||||||
As an example, the following markdown renders two formulas using the KaTeX typesetting library.
|
As an example, the following markdown renders two formulas using the KaTeX typesetting library.
|
||||||
|
@@ -1,14 +1,15 @@
|
|||||||
---
|
---
|
||||||
author: Mark Dumay
|
author: Mark Dumay
|
||||||
title: Bienvenue sur Hinode!
|
title: Bienvenue sur Hinode!
|
||||||
|
description: Un thème de blog et de documentation pour Hugo basé sur Bootstrap 5.
|
||||||
thumbnail:
|
thumbnail:
|
||||||
url: /img/sunrise.jpg
|
url: /img/sunrise.jpg
|
||||||
author: Harris Vo
|
author: Harris Vo
|
||||||
authorURL: https://unsplash.com/@hoanvokim
|
authorURL: https://unsplash.com/@hoanvokim
|
||||||
origin: https://unsplash.com/photos/ZX6BPboJrYk
|
origin: https://unsplash.com/photos/ZX6BPboJrYk
|
||||||
originName: Unsplash
|
originName: Unsplash
|
||||||
|
actions:
|
||||||
|
about:
|
||||||
|
url: "a-propos"
|
||||||
|
title: "À propos"
|
||||||
---
|
---
|
||||||
|
|
||||||
Un thème de blog et de documentation pour Hugo basé sur Bootstrap 5.
|
|
||||||
|
|
||||||
{{< button href="a-propos" >}}À propos{{< /button>}}
|
|
||||||
|
@@ -31,9 +31,4 @@ Les fonctionnalités supplémentaires incluent:
|
|||||||
- Gestion d'images adaptatives pour plusieurs tailles d'écran et résolutions.
|
- Gestion d'images adaptatives pour plusieurs tailles d'écran et résolutions.
|
||||||
- Résultats de recherche optimisés, obtenant un score de 100 points pour le référencement (SEO) sur [PageSpeed Insights]({{< param "links.pagespeed" >}}).
|
- Résultats de recherche optimisés, obtenant un score de 100 points pour le référencement (SEO) sur [PageSpeed Insights]({{< param "links.pagespeed" >}}).
|
||||||
- Sécurisé par défaut, obtenant un score A+ au test [Mozilla Observatory]({{< param "links.observatory" >}})
|
- Sécurisé par défaut, obtenant un score A+ au test [Mozilla Observatory]({{< param "links.observatory" >}})
|
||||||
{.tickmark}
|
{.tickmark}
|
||||||
|
|
||||||
Hinode est inspiré par les thèmes suivants:
|
|
||||||
|
|
||||||
- [Blist](https://github.com/apvarun/blist-hugo-theme) - Un thème de blog pour Hugo basé sur Tailwind CSS.
|
|
||||||
- [Doks](https://github.com/h-enk/doks) - Un thème Hugo pour la création de sites de documentation sécurisés, rapides et optimisés pour le référencement (SEO), que vous pouvez facilement mettre à jour et personnaliser.
|
|
||||||
|
@@ -295,7 +295,7 @@ Utilisez le shortcode `file` pour afficher et mettre en évidence le contenu com
|
|||||||
- {{</* link url="projects/another-project" /*/>}}
|
- {{</* link url="projects/another-project" /*/>}}
|
||||||
- {{</* link url="/projects/another-project" /*/>}}
|
- {{</* link url="/projects/another-project" /*/>}}
|
||||||
- {{</* link url="../projects/another-project" case=false /*/>}}
|
- {{</* link url="../projects/another-project" case=false /*/>}}
|
||||||
- {{</* link "/about/" /*/>}}
|
- {{</* link "about" /*/>}}
|
||||||
- {{</* link "/en/about/" /*/>}}
|
- {{</* link "/en/about/" /*/>}}
|
||||||
- {{</* link "/en/about" >}}About (Anglais){{< /link */>}}
|
- {{</* link "/en/about" >}}About (Anglais){{< /link */>}}
|
||||||
- {{</* link "#image" /*/>}}
|
- {{</* link "#image" /*/>}}
|
||||||
@@ -404,11 +404,11 @@ H{{</* sub 2 */>}}O est un liquide.
|
|||||||
<!-- markdownlint-disable MD037 -->
|
<!-- markdownlint-disable MD037 -->
|
||||||
{{< example lang="hugo" >}}
|
{{< example lang="hugo" >}}
|
||||||
{{</* button toast="toast-example-1" */>}}
|
{{</* button toast="toast-example-1" */>}}
|
||||||
Affiche la notifiaction #1
|
Affiche la notification #1
|
||||||
{{</* /button */>}}
|
{{</* /button */>}}
|
||||||
|
|
||||||
{{</* button toast="toast-example-2" */>}}
|
{{</* button toast="toast-example-2" */>}}
|
||||||
Affiche la notifiaction #1
|
Affiche la notification #1
|
||||||
{{</* /button */>}}
|
{{</* /button */>}}
|
||||||
|
|
||||||
{{</* toast id="toast-example-1" header="Premier titre" */>}}
|
{{</* toast id="toast-example-1" header="Premier titre" */>}}
|
||||||
|
@@ -11,11 +11,21 @@ thumbnail:
|
|||||||
authorURL: https://unsplash.com/@ryoji__iwata
|
authorURL: https://unsplash.com/@ryoji__iwata
|
||||||
origin: Unsplash
|
origin: Unsplash
|
||||||
originURL: https://unsplash.com/photos/5siQcvSxCP8
|
originURL: https://unsplash.com/photos/5siQcvSxCP8
|
||||||
modules: ["katex", "leaflet"]
|
modules: ["katex", "leaflet", "lottie"]
|
||||||
---
|
---
|
||||||
|
|
||||||
Hinode propose plusieurs shortcodes en plus des [éléments Bootstrap]({{< relref "bootstrap-elements" >}}) courants. Consultez la [documentation officielle]({{< param "links.hinode_docs" >}}) pour plus de détails.
|
Hinode propose plusieurs shortcodes en plus des [éléments Bootstrap]({{< relref "bootstrap-elements" >}}) courants. Consultez la [documentation officielle]({{< param "links.hinode_docs" >}}) pour plus de détails.
|
||||||
|
|
||||||
|
## Animation
|
||||||
|
|
||||||
|
À titre d'exemple, le shortcode suivant affiche une animation qui se déclenche au survol.
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example lang="hugo" >}}
|
||||||
|
{{</* animation data="gatin.json" auto=false hover=true class="col-6 mx-auto" */>}}
|
||||||
|
{{< /example >}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
## Formule (KaTeX)
|
## Formule (KaTeX)
|
||||||
|
|
||||||
À titre d'exemple, le markdown suivant affiche deux formules en utilisant la bibliothèque de composition typographique KaTeX.
|
À titre d'exemple, le markdown suivant affiche deux formules en utilisant la bibliothèque de composition typographique KaTeX.
|
||||||
|
@@ -1,14 +1,15 @@
|
|||||||
---
|
---
|
||||||
author: Mark Dumay
|
author: Mark Dumay
|
||||||
title: Welkom bij Hinode!
|
title: Welkom bij Hinode!
|
||||||
|
description: Een documentatie en blog thema voor Hugo gebaseerd op Bootstrap 5.
|
||||||
thumbnail:
|
thumbnail:
|
||||||
url: /img/sunrise.jpg
|
url: /img/sunrise.jpg
|
||||||
author: Harris Vo
|
author: Harris Vo
|
||||||
authorURL: https://unsplash.com/@hoanvokim
|
authorURL: https://unsplash.com/@hoanvokim
|
||||||
origin: https://unsplash.com/photos/ZX6BPboJrYk
|
origin: https://unsplash.com/photos/ZX6BPboJrYk
|
||||||
originName: Unsplash
|
originName: Unsplash
|
||||||
|
actions:
|
||||||
|
about:
|
||||||
|
url: "over-mij"
|
||||||
|
title: "Over mij"
|
||||||
---
|
---
|
||||||
|
|
||||||
Een documentatie en blog thema voor Hugo gebaseerd op Bootstrap 5.
|
|
||||||
|
|
||||||
{{< button href="over-mij" >}}Over mij{{< /button>}}
|
|
||||||
|
@@ -33,8 +33,3 @@ Overige functies:
|
|||||||
* Optimale zoekresultaten, met 100 punten voor SEO volgens [PageSpeed Insights]({{< param "links.pagespeed" >}})
|
* Optimale zoekresultaten, met 100 punten voor SEO volgens [PageSpeed Insights]({{< param "links.pagespeed" >}})
|
||||||
* Veilige communicatie, met een score van A+ volgens [Mozilla Observatory]({{< param "links.observatory" >}})
|
* Veilige communicatie, met een score van A+ volgens [Mozilla Observatory]({{< param "links.observatory" >}})
|
||||||
{.tickmark}
|
{.tickmark}
|
||||||
|
|
||||||
Hinode is geinspireerd door de volgende thema's:
|
|
||||||
|
|
||||||
* [Blist](https://github.com/apvarun/blist-hugo-theme) - een blog thema voor Hugo op basis van Tailwind CSS.
|
|
||||||
* [Doks](https://github.com/h-enk/doks) - een Hugo thema voor het bouwen van veilige, snelle, en SEO-geoptimaliseerde documentatiesites, die je eenvoudig kunt actualiseren en aanpassen.
|
|
||||||
|
@@ -8,4 +8,4 @@
|
|||||||
long: "Scalable Vector Graphics"
|
long: "Scalable Vector Graphics"
|
||||||
|
|
||||||
- id: ci/cd
|
- id: ci/cd
|
||||||
long: "Continous Integration/Continuous Deployment"
|
long: "Continuous Integration/Continuous Deployment"
|
||||||
|
@@ -1,11 +1,23 @@
|
|||||||
github.com/gethinode/mod-bootstrap v1.1.1 h1:Tx4M5hGVOFrEaxnUONDAm6N9xuRi5UphKlT7F26HujU=
|
github.com/gethinode/mod-bootstrap v1.1.1 h1:Tx4M5hGVOFrEaxnUONDAm6N9xuRi5UphKlT7F26HujU=
|
||||||
github.com/gethinode/mod-bootstrap v1.1.1/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
|
github.com/gethinode/mod-bootstrap v1.1.1/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
|
||||||
|
github.com/gethinode/mod-bootstrap v1.2.0 h1:JkTcImU3qpi25WgKvUxUYiMoiXtrxrG+Wf/utRB5UbU=
|
||||||
|
github.com/gethinode/mod-bootstrap v1.2.0/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
|
||||||
|
github.com/gethinode/mod-bootstrap v1.2.1 h1:z54dgsbhShhlri+X77Z+yLrg0wz/f8C8ojA/wnlhsJc=
|
||||||
|
github.com/gethinode/mod-bootstrap v1.2.1/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
|
||||||
|
github.com/gethinode/mod-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=
|
||||||
github.com/gethinode/mod-flexsearch v1.3.0/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
github.com/gethinode/mod-flexsearch v1.3.0/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
||||||
github.com/gethinode/mod-flexsearch v1.4.0 h1:5e/NVRLyWzUZ9fO/fNsM5o+O7nw+xyln2rfEOtbgfWc=
|
github.com/gethinode/mod-flexsearch v1.4.0 h1:5e/NVRLyWzUZ9fO/fNsM5o+O7nw+xyln2rfEOtbgfWc=
|
||||||
github.com/gethinode/mod-flexsearch v1.4.0/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
github.com/gethinode/mod-flexsearch v1.4.0/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
||||||
|
github.com/gethinode/mod-flexsearch v1.4.1 h1:z+GKvhJ4v6BsZsWVZRgbO9WcmSZEVUkb3Q9a09yXtd8=
|
||||||
|
github.com/gethinode/mod-flexsearch v1.4.1/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
||||||
|
github.com/gethinode/mod-flexsearch v1.5.1 h1:9fYlnHgiEXckL0EoC0zlSNO7BWZf5yiOroSWT13Kphc=
|
||||||
|
github.com/gethinode/mod-flexsearch v1.5.1/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
||||||
|
github.com/gethinode/mod-flexsearch v1.6.0 h1:Rjx+GLOByFLmaWD9hZXwmuKN8A89te6BZAIq2c9QBKg=
|
||||||
|
github.com/gethinode/mod-flexsearch v1.6.0/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
||||||
github.com/gethinode/mod-fontawesome v1.2.4 h1:SqE3CQ+boaBIhrVh3MPu4nz0uoHPfEH5t60nNY1CfsI=
|
github.com/gethinode/mod-fontawesome v1.2.4 h1:SqE3CQ+boaBIhrVh3MPu4nz0uoHPfEH5t60nNY1CfsI=
|
||||||
github.com/gethinode/mod-fontawesome v1.2.4/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
github.com/gethinode/mod-fontawesome v1.2.4/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||||
github.com/gethinode/mod-fontawesome v1.2.5 h1:RqkLRj6+s+gM4nKd0IwNMMDA8cRmxfp0fxkVH4FdAGU=
|
github.com/gethinode/mod-fontawesome v1.2.5 h1:RqkLRj6+s+gM4nKd0IwNMMDA8cRmxfp0fxkVH4FdAGU=
|
||||||
@@ -14,8 +26,32 @@ github.com/gethinode/mod-fontawesome v1.3.0 h1:oudeDBlAKu8vqYxumWuq5SG5F5itm33Ng
|
|||||||
github.com/gethinode/mod-fontawesome v1.3.0/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
github.com/gethinode/mod-fontawesome v1.3.0/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||||
github.com/gethinode/mod-fontawesome v1.3.1 h1:EdnBuG2B+bi06OcYmcL1NfSxHpRMEGu8TXUqEEpVH4g=
|
github.com/gethinode/mod-fontawesome v1.3.1 h1:EdnBuG2B+bi06OcYmcL1NfSxHpRMEGu8TXUqEEpVH4g=
|
||||||
github.com/gethinode/mod-fontawesome v1.3.1/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
github.com/gethinode/mod-fontawesome v1.3.1/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||||
|
github.com/gethinode/mod-fontawesome v1.3.2 h1:qLJSbAFR2T33BuBtC2Iulm9wZql3cy7AhXjxc2YGzBU=
|
||||||
|
github.com/gethinode/mod-fontawesome v1.3.2/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||||
|
github.com/gethinode/mod-fontawesome v1.4.0 h1:JfmVYwQl19jmZxgxY64yvGqJAAEiFkKf2dbZ5Iv08Qw=
|
||||||
|
github.com/gethinode/mod-fontawesome v1.4.0/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||||
|
github.com/gethinode/mod-fontawesome v1.5.0 h1:3mW5dnWauuF9wSWXNIY+PPgTNPlc/xQOQoG7XGic1Yk=
|
||||||
|
github.com/gethinode/mod-fontawesome v1.5.0/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||||
github.com/gethinode/mod-katex v1.0.1/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
|
github.com/gethinode/mod-katex v1.0.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=
|
||||||
|
github.com/gethinode/mod-katex v1.0.3 h1:fvlUWqcUQqv2zRNM2kfmJ6GhXA816Tl1nfVrUkmBStI=
|
||||||
|
github.com/gethinode/mod-katex v1.0.3/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
|
||||||
|
github.com/gethinode/mod-katex v1.0.4 h1:NozgWPFnHhx1W+E9DnwMTRpvxPbdqdANEtwp9N3/mj8=
|
||||||
|
github.com/gethinode/mod-katex v1.0.4/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
|
||||||
github.com/gethinode/mod-leaflet v0.3.4 h1:oY+YQ0JiJuhFQNrk9XgFdg0NMsTUQPXNfnILp4ia4r4=
|
github.com/gethinode/mod-leaflet v0.3.4 h1:oY+YQ0JiJuhFQNrk9XgFdg0NMsTUQPXNfnILp4ia4r4=
|
||||||
github.com/gethinode/mod-leaflet v0.3.4/go.mod h1:uGggt87x4Fw7wBoJpSiUvNkYg+s/Ujne7klAX2rxMRk=
|
github.com/gethinode/mod-leaflet v0.3.4/go.mod h1:uGggt87x4Fw7wBoJpSiUvNkYg+s/Ujne7klAX2rxMRk=
|
||||||
|
github.com/gethinode/mod-leaflet v0.3.5 h1:69Bv/6zRXhbcTzo7TMr58h3ry47srHRpM1k81LrLbYU=
|
||||||
|
github.com/gethinode/mod-leaflet v0.3.5/go.mod h1:uGggt87x4Fw7wBoJpSiUvNkYg+s/Ujne7klAX2rxMRk=
|
||||||
|
github.com/gethinode/mod-lottie v1.0.0 h1:1CUZMcgN5FAyjjyuP3qkaOQ6M5sv6HUAbosW4sIT5VE=
|
||||||
|
github.com/gethinode/mod-lottie v1.0.0/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=
|
||||||
|
github.com/gethinode/mod-lottie v1.0.1 h1:+IE7xtnSVQpJS56oBJq9RWKZeFEfxrOZAqE3BSrS/u0=
|
||||||
|
github.com/gethinode/mod-lottie v1.0.1/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=
|
||||||
|
github.com/gethinode/mod-lottie v1.0.2 h1:QM/PJqEl1UhNNoPx6y7pVtwev/mDxUyWNHLqDB76YzI=
|
||||||
|
github.com/gethinode/mod-lottie v1.0.2/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=
|
||||||
|
github.com/gethinode/mod-lottie v1.1.0 h1:KnfOQ45xdv1tpsKCkF5OiE3QuT29ycppBfY6o+rWl/4=
|
||||||
|
github.com/gethinode/mod-lottie v1.1.0/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=
|
||||||
|
github.com/gethinode/mod-lottie v1.2.0 h1:9S0Y4PlEO66dIvFxayatmDEf8WWxqbLNLi4z563i2gM=
|
||||||
|
github.com/gethinode/mod-lottie v1.2.0/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=
|
||||||
|
github.com/gethinode/mod-lottie v1.3.0 h1:vQ8CXkjdp2IeFskTzu+ZnKOEio8GtN08urVK+oCH81E=
|
||||||
|
github.com/gethinode/mod-lottie v1.3.0/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=
|
||||||
|
@@ -54,21 +54,22 @@
|
|||||||
"alert",
|
"alert",
|
||||||
"alert-danger",
|
"alert-danger",
|
||||||
"alert-dismissible",
|
"alert-dismissible",
|
||||||
"align-content-center",
|
|
||||||
"align-items-center",
|
"align-items-center",
|
||||||
"align-items-end",
|
"align-items-end",
|
||||||
"align-items-start",
|
"align-items-start",
|
||||||
"align-middle",
|
"align-middle",
|
||||||
"align-self-center",
|
"align-self-center",
|
||||||
|
"align-self-end",
|
||||||
"anchor",
|
"anchor",
|
||||||
"badge",
|
"badge",
|
||||||
"bg-body",
|
"bg-body",
|
||||||
"bg-body-tertiary",
|
"bg-body-tertiary",
|
||||||
"bg-danger",
|
"bg-danger",
|
||||||
"bg-info",
|
|
||||||
"bg-opacity-10",
|
"bg-opacity-10",
|
||||||
"bg-primary",
|
"bg-primary",
|
||||||
"bg-primary-subtle",
|
"bg-primary-subtle",
|
||||||
|
"bi",
|
||||||
|
"bi-activity",
|
||||||
"border",
|
"border",
|
||||||
"border-0",
|
"border-0",
|
||||||
"border-1",
|
"border-1",
|
||||||
@@ -96,6 +97,7 @@
|
|||||||
"card-body-link",
|
"card-body-link",
|
||||||
"card-body-margin",
|
"card-body-margin",
|
||||||
"card-emphasize",
|
"card-emphasize",
|
||||||
|
"card-icon",
|
||||||
"card-img-top",
|
"card-img-top",
|
||||||
"card-img-wrap",
|
"card-img-wrap",
|
||||||
"card-text",
|
"card-text",
|
||||||
@@ -118,7 +120,6 @@
|
|||||||
"col-6",
|
"col-6",
|
||||||
"col-8",
|
"col-8",
|
||||||
"col-9",
|
"col-9",
|
||||||
"col-lg-2",
|
|
||||||
"col-lg-4",
|
"col-lg-4",
|
||||||
"col-lg-8",
|
"col-lg-8",
|
||||||
"col-md-10",
|
"col-md-10",
|
||||||
@@ -134,12 +135,12 @@
|
|||||||
"container",
|
"container",
|
||||||
"container-fluid",
|
"container-fluid",
|
||||||
"container-xxl",
|
"container-xxl",
|
||||||
|
"custom",
|
||||||
"d-block",
|
"d-block",
|
||||||
"d-flex",
|
"d-flex",
|
||||||
"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",
|
||||||
@@ -164,6 +165,7 @@
|
|||||||
"fa-2x",
|
"fa-2x",
|
||||||
"fa-2xs",
|
"fa-2xs",
|
||||||
"fa-4x",
|
"fa-4x",
|
||||||
|
"fa-activity",
|
||||||
"fa-arrow-left",
|
"fa-arrow-left",
|
||||||
"fa-arrow-right",
|
"fa-arrow-right",
|
||||||
"fa-bootstrap",
|
"fa-bootstrap",
|
||||||
@@ -197,26 +199,26 @@
|
|||||||
"fab",
|
"fab",
|
||||||
"fade",
|
"fade",
|
||||||
"fas",
|
"fas",
|
||||||
"feature",
|
|
||||||
"figure-caption",
|
"figure-caption",
|
||||||
"fixed-top",
|
"fixed-top",
|
||||||
"flex-column",
|
"flex-column",
|
||||||
"flex-fill",
|
"flex-fill",
|
||||||
"flex-grow-1",
|
"flex-grow-1",
|
||||||
"flex-wrap",
|
|
||||||
"font-monospace",
|
"font-monospace",
|
||||||
"footer",
|
"footer",
|
||||||
"form-control",
|
"form-control",
|
||||||
"fs-3",
|
"fs-3",
|
||||||
"fs-5",
|
"fs-5",
|
||||||
|
"fullcover",
|
||||||
|
"fullscreen",
|
||||||
"fw-30",
|
"fw-30",
|
||||||
"fw-bold",
|
"fw-bold",
|
||||||
"fw-semibold",
|
"fw-semibold",
|
||||||
"g-0",
|
"g-0",
|
||||||
"g-3",
|
"g-3",
|
||||||
"g-4",
|
"g-4",
|
||||||
|
"gap-1",
|
||||||
"gap-2",
|
"gap-2",
|
||||||
"gap-3",
|
|
||||||
"gradient",
|
"gradient",
|
||||||
"h-100",
|
"h-100",
|
||||||
"h1",
|
"h1",
|
||||||
@@ -245,11 +247,12 @@
|
|||||||
"link-secondary",
|
"link-secondary",
|
||||||
"link-success",
|
"link-success",
|
||||||
"link-warning",
|
"link-warning",
|
||||||
|
"lottie-animation",
|
||||||
"m-0",
|
"m-0",
|
||||||
|
"main-content",
|
||||||
"main-nav-toggler",
|
"main-nav-toggler",
|
||||||
"mb-0",
|
"mb-0",
|
||||||
"mb-3",
|
"mb-3",
|
||||||
"mb-4",
|
|
||||||
"mb-5",
|
"mb-5",
|
||||||
"mb-lg-5",
|
"mb-lg-5",
|
||||||
"me-3",
|
"me-3",
|
||||||
@@ -264,14 +267,15 @@
|
|||||||
"mt-3",
|
"mt-3",
|
||||||
"mt-5",
|
"mt-5",
|
||||||
"mt-auto",
|
"mt-auto",
|
||||||
"multi-docs-collapse-14",
|
|
||||||
"multi-docs-collapse-15",
|
"multi-docs-collapse-15",
|
||||||
"multi-file-collapse-1",
|
"multi-file-collapse-1",
|
||||||
"mx-auto",
|
"mx-auto",
|
||||||
|
"mx-md-0",
|
||||||
"mx-md-2",
|
"mx-md-2",
|
||||||
"my-2",
|
"my-2",
|
||||||
"my-auto",
|
"my-auto",
|
||||||
"my-md-0",
|
"my-md-0",
|
||||||
|
"my-md-auto",
|
||||||
"nav",
|
"nav",
|
||||||
"nav-item",
|
"nav-item",
|
||||||
"nav-link",
|
"nav-link",
|
||||||
@@ -282,18 +286,17 @@
|
|||||||
"navbar-collapse",
|
"navbar-collapse",
|
||||||
"navbar-contrast",
|
"navbar-contrast",
|
||||||
"navbar-expand-md",
|
"navbar-expand-md",
|
||||||
|
"navbar-fixed-top",
|
||||||
"navbar-nav",
|
"navbar-nav",
|
||||||
"navbar-nav-scroll",
|
"navbar-nav-scroll",
|
||||||
"navbar-toggler",
|
"navbar-toggler",
|
||||||
"next",
|
"next",
|
||||||
"no-js",
|
"no-js",
|
||||||
|
"order-0",
|
||||||
"order-1",
|
"order-1",
|
||||||
"order-2",
|
|
||||||
"order-3",
|
|
||||||
"order-4",
|
|
||||||
"order-first",
|
"order-first",
|
||||||
"order-sm-2",
|
"order-md-0",
|
||||||
"order-sm-3",
|
"order-md-1",
|
||||||
"p-0",
|
"p-0",
|
||||||
"p-1",
|
"p-1",
|
||||||
"p-2",
|
"p-2",
|
||||||
@@ -301,7 +304,9 @@
|
|||||||
"p-4",
|
"p-4",
|
||||||
"pb-2",
|
"pb-2",
|
||||||
"pb-3",
|
"pb-3",
|
||||||
|
"pb-4",
|
||||||
"pb-5",
|
"pb-5",
|
||||||
|
"pb-md-0",
|
||||||
"pe-3",
|
"pe-3",
|
||||||
"position-absolute",
|
"position-absolute",
|
||||||
"position-fixed",
|
"position-fixed",
|
||||||
@@ -311,7 +316,8 @@
|
|||||||
"ps-1",
|
"ps-1",
|
||||||
"ps-3",
|
"ps-3",
|
||||||
"ps-xl-3",
|
"ps-xl-3",
|
||||||
"px-3",
|
"pt-5",
|
||||||
|
"pt-md-3",
|
||||||
"px-4",
|
"px-4",
|
||||||
"px-xxl-0",
|
"px-xxl-0",
|
||||||
"py-1",
|
"py-1",
|
||||||
@@ -329,10 +335,10 @@
|
|||||||
"row",
|
"row",
|
||||||
"row-cols-1",
|
"row-cols-1",
|
||||||
"row-cols-2",
|
"row-cols-2",
|
||||||
|
"row-cols-md-2",
|
||||||
"row-cols-md-3",
|
"row-cols-md-3",
|
||||||
"row-cols-sm-2",
|
"row-cols-sm-2",
|
||||||
"row-cols-sm-3",
|
"row-cols-sm-3",
|
||||||
"row-cols-sm-4",
|
|
||||||
"search",
|
"search",
|
||||||
"search-input",
|
"search-input",
|
||||||
"search-suggestions",
|
"search-suggestions",
|
||||||
@@ -364,10 +370,12 @@
|
|||||||
"text-decoration-none",
|
"text-decoration-none",
|
||||||
"text-end",
|
"text-end",
|
||||||
"text-info",
|
"text-info",
|
||||||
|
"text-muted",
|
||||||
"text-nowrap",
|
"text-nowrap",
|
||||||
"text-right",
|
"text-right",
|
||||||
"text-secondary",
|
"text-secondary",
|
||||||
"text-sm-start",
|
"text-sm-start",
|
||||||
|
"text-start",
|
||||||
"text-uppercase",
|
"text-uppercase",
|
||||||
"theme-icon",
|
"theme-icon",
|
||||||
"theme-icon-active",
|
"theme-icon-active",
|
||||||
@@ -421,9 +429,10 @@
|
|||||||
"accordéon",
|
"accordéon",
|
||||||
"alert",
|
"alert",
|
||||||
"alerte",
|
"alerte",
|
||||||
|
"animation",
|
||||||
"badge",
|
"badge",
|
||||||
"barre-de-navigation",
|
"barre-de-navigation",
|
||||||
"body-docs-collapse-14",
|
"blog",
|
||||||
"body-docs-collapse-15",
|
"body-docs-collapse-15",
|
||||||
"body-file-collapse-1",
|
"body-file-collapse-1",
|
||||||
"bouton",
|
"bouton",
|
||||||
@@ -448,7 +457,6 @@
|
|||||||
"fichier",
|
"fichier",
|
||||||
"fil-dariane",
|
"fil-dariane",
|
||||||
"file",
|
"file",
|
||||||
"footer-docs-collapse-14",
|
|
||||||
"footer-docs-collapse-15",
|
"footer-docs-collapse-15",
|
||||||
"footer-file-collapse-1",
|
"footer-file-collapse-1",
|
||||||
"formula-katex",
|
"formula-katex",
|
||||||
@@ -463,6 +471,7 @@
|
|||||||
"leaflet-map-0",
|
"leaflet-map-0",
|
||||||
"lien",
|
"lien",
|
||||||
"link",
|
"link",
|
||||||
|
"lottie-animation-0",
|
||||||
"map",
|
"map",
|
||||||
"mark",
|
"mark",
|
||||||
"nav",
|
"nav",
|
||||||
@@ -478,6 +487,9 @@
|
|||||||
"navbar-sample-collapse",
|
"navbar-sample-collapse",
|
||||||
"navigation",
|
"navigation",
|
||||||
"notification",
|
"notification",
|
||||||
|
"projecten",
|
||||||
|
"projects",
|
||||||
|
"projets",
|
||||||
"publication",
|
"publication",
|
||||||
"release",
|
"release",
|
||||||
"réduire",
|
"réduire",
|
||||||
@@ -495,4 +507,4 @@
|
|||||||
"tooltip"
|
"tooltip"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
1
exampleSite/static/gatin.json
Normal file
1
exampleSite/static/gatin.json
Normal file
File diff suppressed because one or more lines are too long
11
go.mod
11
go.mod
@@ -3,9 +3,10 @@ module github.com/gethinode/hinode
|
|||||||
go 1.19
|
go 1.19
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/gethinode/mod-bootstrap v1.1.1 // indirect
|
github.com/gethinode/mod-bootstrap v1.2.2 // indirect
|
||||||
github.com/gethinode/mod-flexsearch v1.4.0 // indirect
|
github.com/gethinode/mod-flexsearch v1.6.0 // indirect
|
||||||
github.com/gethinode/mod-fontawesome v1.3.1 // indirect
|
github.com/gethinode/mod-fontawesome v1.5.0 // indirect
|
||||||
github.com/gethinode/mod-katex v1.0.2 // indirect
|
github.com/gethinode/mod-katex v1.0.4 // indirect
|
||||||
github.com/gethinode/mod-leaflet v0.3.4 // indirect
|
github.com/gethinode/mod-leaflet v0.3.5 // indirect
|
||||||
|
github.com/gethinode/mod-lottie v1.3.0 // indirect
|
||||||
)
|
)
|
||||||
|
36
go.sum
36
go.sum
@@ -4,6 +4,12 @@ github.com/gethinode/mod-bootstrap v1.1.0 h1:BbalsW8kmFhv+J+dcc41TGcjIlM/p69AB0h
|
|||||||
github.com/gethinode/mod-bootstrap v1.1.0/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
|
github.com/gethinode/mod-bootstrap v1.1.0/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
|
||||||
github.com/gethinode/mod-bootstrap v1.1.1 h1:Tx4M5hGVOFrEaxnUONDAm6N9xuRi5UphKlT7F26HujU=
|
github.com/gethinode/mod-bootstrap v1.1.1 h1:Tx4M5hGVOFrEaxnUONDAm6N9xuRi5UphKlT7F26HujU=
|
||||||
github.com/gethinode/mod-bootstrap v1.1.1/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
|
github.com/gethinode/mod-bootstrap v1.1.1/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
|
||||||
|
github.com/gethinode/mod-bootstrap v1.2.0 h1:JkTcImU3qpi25WgKvUxUYiMoiXtrxrG+Wf/utRB5UbU=
|
||||||
|
github.com/gethinode/mod-bootstrap v1.2.0/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
|
||||||
|
github.com/gethinode/mod-bootstrap v1.2.1 h1:z54dgsbhShhlri+X77Z+yLrg0wz/f8C8ojA/wnlhsJc=
|
||||||
|
github.com/gethinode/mod-bootstrap v1.2.1/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
|
||||||
|
github.com/gethinode/mod-bootstrap v1.2.2 h1:Q8E04OKWr9owk7nhQ/NBukUgSFhsECxZsOLEaf5oeiQ=
|
||||||
|
github.com/gethinode/mod-bootstrap v1.2.2/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
|
||||||
github.com/gethinode/mod-flexsearch v1.0.1 h1:FJkRsUzSnQTXl3MWCigT4E6vfff870UWTnkGqaDGIhA=
|
github.com/gethinode/mod-flexsearch v1.0.1 h1:FJkRsUzSnQTXl3MWCigT4E6vfff870UWTnkGqaDGIhA=
|
||||||
github.com/gethinode/mod-flexsearch v1.0.1/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
github.com/gethinode/mod-flexsearch v1.0.1/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
||||||
github.com/gethinode/mod-flexsearch v1.1.0 h1:7BCMyQDlYlskNXuazt8Jg/jg9WREexu2xVkYqThkAX4=
|
github.com/gethinode/mod-flexsearch v1.1.0 h1:7BCMyQDlYlskNXuazt8Jg/jg9WREexu2xVkYqThkAX4=
|
||||||
@@ -22,6 +28,12 @@ github.com/gethinode/mod-flexsearch v1.3.0 h1:RbfEDw219Y1rOVp9lHmy5ePdF9lyPalDu2
|
|||||||
github.com/gethinode/mod-flexsearch v1.3.0/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
github.com/gethinode/mod-flexsearch v1.3.0/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
||||||
github.com/gethinode/mod-flexsearch v1.4.0 h1:5e/NVRLyWzUZ9fO/fNsM5o+O7nw+xyln2rfEOtbgfWc=
|
github.com/gethinode/mod-flexsearch v1.4.0 h1:5e/NVRLyWzUZ9fO/fNsM5o+O7nw+xyln2rfEOtbgfWc=
|
||||||
github.com/gethinode/mod-flexsearch v1.4.0/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
github.com/gethinode/mod-flexsearch v1.4.0/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
||||||
|
github.com/gethinode/mod-flexsearch v1.4.1 h1:z+GKvhJ4v6BsZsWVZRgbO9WcmSZEVUkb3Q9a09yXtd8=
|
||||||
|
github.com/gethinode/mod-flexsearch v1.4.1/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
||||||
|
github.com/gethinode/mod-flexsearch v1.5.1 h1:9fYlnHgiEXckL0EoC0zlSNO7BWZf5yiOroSWT13Kphc=
|
||||||
|
github.com/gethinode/mod-flexsearch v1.5.1/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
||||||
|
github.com/gethinode/mod-flexsearch v1.6.0 h1:Rjx+GLOByFLmaWD9hZXwmuKN8A89te6BZAIq2c9QBKg=
|
||||||
|
github.com/gethinode/mod-flexsearch v1.6.0/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
||||||
github.com/gethinode/mod-fontawesome v1.0.2 h1:ZSK6D20/w4y5GnfYfTBB58uHD0ChIfkpKfRGwioS9rg=
|
github.com/gethinode/mod-fontawesome v1.0.2 h1:ZSK6D20/w4y5GnfYfTBB58uHD0ChIfkpKfRGwioS9rg=
|
||||||
github.com/gethinode/mod-fontawesome v1.0.2/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
github.com/gethinode/mod-fontawesome v1.0.2/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||||
github.com/gethinode/mod-fontawesome v1.1.0 h1:rsDzUI+3ZlS/do2ff3ne8/z3KwHeysmuA+WsXlumXXk=
|
github.com/gethinode/mod-fontawesome v1.1.0 h1:rsDzUI+3ZlS/do2ff3ne8/z3KwHeysmuA+WsXlumXXk=
|
||||||
@@ -42,12 +54,22 @@ github.com/gethinode/mod-fontawesome v1.3.0 h1:oudeDBlAKu8vqYxumWuq5SG5F5itm33Ng
|
|||||||
github.com/gethinode/mod-fontawesome v1.3.0/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
github.com/gethinode/mod-fontawesome v1.3.0/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||||
github.com/gethinode/mod-fontawesome v1.3.1 h1:EdnBuG2B+bi06OcYmcL1NfSxHpRMEGu8TXUqEEpVH4g=
|
github.com/gethinode/mod-fontawesome v1.3.1 h1:EdnBuG2B+bi06OcYmcL1NfSxHpRMEGu8TXUqEEpVH4g=
|
||||||
github.com/gethinode/mod-fontawesome v1.3.1/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
github.com/gethinode/mod-fontawesome v1.3.1/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||||
|
github.com/gethinode/mod-fontawesome v1.3.2 h1:qLJSbAFR2T33BuBtC2Iulm9wZql3cy7AhXjxc2YGzBU=
|
||||||
|
github.com/gethinode/mod-fontawesome v1.3.2/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||||
|
github.com/gethinode/mod-fontawesome v1.4.0 h1:JfmVYwQl19jmZxgxY64yvGqJAAEiFkKf2dbZ5Iv08Qw=
|
||||||
|
github.com/gethinode/mod-fontawesome v1.4.0/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||||
|
github.com/gethinode/mod-fontawesome v1.5.0 h1:3mW5dnWauuF9wSWXNIY+PPgTNPlc/xQOQoG7XGic1Yk=
|
||||||
|
github.com/gethinode/mod-fontawesome v1.5.0/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||||
github.com/gethinode/mod-katex v1.0.0 h1:me/3dIIZBkfk1mRIFt8QiAGYwYDoSG5bc2hHRtIutFc=
|
github.com/gethinode/mod-katex v1.0.0 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=
|
||||||
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=
|
||||||
|
github.com/gethinode/mod-katex v1.0.3 h1:fvlUWqcUQqv2zRNM2kfmJ6GhXA816Tl1nfVrUkmBStI=
|
||||||
|
github.com/gethinode/mod-katex v1.0.3/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
|
||||||
|
github.com/gethinode/mod-katex v1.0.4 h1:NozgWPFnHhx1W+E9DnwMTRpvxPbdqdANEtwp9N3/mj8=
|
||||||
|
github.com/gethinode/mod-katex v1.0.4/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
|
||||||
github.com/gethinode/mod-leaflet v0.2.3 h1:QQI4h+IH0jZ7fx4q0um2YIEiYBoW3OAfW8qHzbRCDPk=
|
github.com/gethinode/mod-leaflet v0.2.3 h1:QQI4h+IH0jZ7fx4q0um2YIEiYBoW3OAfW8qHzbRCDPk=
|
||||||
github.com/gethinode/mod-leaflet v0.2.3/go.mod h1:uGggt87x4Fw7wBoJpSiUvNkYg+s/Ujne7klAX2rxMRk=
|
github.com/gethinode/mod-leaflet v0.2.3/go.mod h1:uGggt87x4Fw7wBoJpSiUvNkYg+s/Ujne7klAX2rxMRk=
|
||||||
github.com/gethinode/mod-leaflet v0.3.1 h1:H5MaOa+BB1KuVw7abTqfIn/SNzzRsAyx/WQoSe+2Ykc=
|
github.com/gethinode/mod-leaflet v0.3.1 h1:H5MaOa+BB1KuVw7abTqfIn/SNzzRsAyx/WQoSe+2Ykc=
|
||||||
@@ -56,3 +78,17 @@ github.com/gethinode/mod-leaflet v0.3.3 h1:isnjja6VRFvVWBatYSouh46TXSJg2C4/E2BQT
|
|||||||
github.com/gethinode/mod-leaflet v0.3.3/go.mod h1:uGggt87x4Fw7wBoJpSiUvNkYg+s/Ujne7klAX2rxMRk=
|
github.com/gethinode/mod-leaflet v0.3.3/go.mod h1:uGggt87x4Fw7wBoJpSiUvNkYg+s/Ujne7klAX2rxMRk=
|
||||||
github.com/gethinode/mod-leaflet v0.3.4 h1:oY+YQ0JiJuhFQNrk9XgFdg0NMsTUQPXNfnILp4ia4r4=
|
github.com/gethinode/mod-leaflet v0.3.4 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/go.mod h1:uGggt87x4Fw7wBoJpSiUvNkYg+s/Ujne7klAX2rxMRk=
|
||||||
|
github.com/gethinode/mod-lottie v1.0.0 h1:1CUZMcgN5FAyjjyuP3qkaOQ6M5sv6HUAbosW4sIT5VE=
|
||||||
|
github.com/gethinode/mod-lottie v1.0.0/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=
|
||||||
|
github.com/gethinode/mod-lottie v1.0.1 h1:+IE7xtnSVQpJS56oBJq9RWKZeFEfxrOZAqE3BSrS/u0=
|
||||||
|
github.com/gethinode/mod-lottie v1.0.1/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=
|
||||||
|
github.com/gethinode/mod-lottie v1.0.2 h1:QM/PJqEl1UhNNoPx6y7pVtwev/mDxUyWNHLqDB76YzI=
|
||||||
|
github.com/gethinode/mod-lottie v1.0.2/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=
|
||||||
|
github.com/gethinode/mod-lottie v1.1.0 h1:KnfOQ45xdv1tpsKCkF5OiE3QuT29ycppBfY6o+rWl/4=
|
||||||
|
github.com/gethinode/mod-lottie v1.1.0/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=
|
||||||
|
github.com/gethinode/mod-lottie v1.2.0 h1:9S0Y4PlEO66dIvFxayatmDEf8WWxqbLNLi4z563i2gM=
|
||||||
|
github.com/gethinode/mod-lottie v1.2.0/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=
|
||||||
|
github.com/gethinode/mod-lottie v1.3.0 h1:vQ8CXkjdp2IeFskTzu+ZnKOEio8GtN08urVK+oCH81E=
|
||||||
|
github.com/gethinode/mod-lottie v1.3.0/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=
|
||||||
|
@@ -8,7 +8,6 @@
|
|||||||
"footer",
|
"footer",
|
||||||
"form",
|
"form",
|
||||||
"head",
|
"head",
|
||||||
"hr",
|
|
||||||
"html",
|
"html",
|
||||||
"img",
|
"img",
|
||||||
"input",
|
"input",
|
||||||
@@ -16,7 +15,6 @@
|
|||||||
"link",
|
"link",
|
||||||
"meta",
|
"meta",
|
||||||
"nav",
|
"nav",
|
||||||
"ol",
|
|
||||||
"p",
|
"p",
|
||||||
"path",
|
"path",
|
||||||
"script",
|
"script",
|
||||||
@@ -29,48 +27,35 @@
|
|||||||
],
|
],
|
||||||
"classes": [
|
"classes": [
|
||||||
"active",
|
"active",
|
||||||
"align-content-center",
|
|
||||||
"align-items-center",
|
"align-items-center",
|
||||||
"align-self-center",
|
"align-self-center",
|
||||||
"bg-body",
|
"bg-body",
|
||||||
"bg-info",
|
|
||||||
"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",
|
||||||
"btn-social",
|
|
||||||
"col",
|
"col",
|
||||||
"col-12",
|
"col-12",
|
||||||
"col-lg-2",
|
"col-6",
|
||||||
"col-lg-4",
|
|
||||||
"col-md-2",
|
"col-md-2",
|
||||||
"col-md-4",
|
"col-md-4",
|
||||||
"col-md-8",
|
"col-md-8",
|
||||||
"col-md-auto",
|
|
||||||
"col-sm-12",
|
"col-sm-12",
|
||||||
"col-sm-6",
|
|
||||||
"collapse",
|
"collapse",
|
||||||
"collapsed",
|
"collapsed",
|
||||||
"container-fluid",
|
"container-fluid",
|
||||||
"container-xxl",
|
"container-xxl",
|
||||||
"d-block",
|
|
||||||
"d-flex",
|
"d-flex",
|
||||||
"d-inline",
|
"d-inline",
|
||||||
"d-lg-block",
|
|
||||||
"d-md-block",
|
"d-md-block",
|
||||||
"d-md-flex",
|
|
||||||
"d-md-none",
|
"d-md-none",
|
||||||
"d-none",
|
"d-none",
|
||||||
"d-sm-none",
|
|
||||||
"display-1",
|
"display-1",
|
||||||
"display-4",
|
"display-4",
|
||||||
"dropdown",
|
"dropdown",
|
||||||
"dropdown-divider-bg",
|
|
||||||
"dropdown-item",
|
"dropdown-item",
|
||||||
"dropdown-menu",
|
"dropdown-menu",
|
||||||
"dropdown-menu-end",
|
"dropdown-menu-end",
|
||||||
@@ -84,45 +69,36 @@
|
|||||||
"fa-circle-half-stroke",
|
"fa-circle-half-stroke",
|
||||||
"fa-ellipsis",
|
"fa-ellipsis",
|
||||||
"fa-face-frown",
|
"fa-face-frown",
|
||||||
"fa-facebook",
|
|
||||||
"fa-fw",
|
"fa-fw",
|
||||||
"fa-github",
|
"fa-github",
|
||||||
"fa-link",
|
|
||||||
"fa-linkedin",
|
"fa-linkedin",
|
||||||
"fa-medium",
|
"fa-medium",
|
||||||
"fa-moon",
|
"fa-moon",
|
||||||
"fa-share-nodes",
|
|
||||||
"fa-sun",
|
"fa-sun",
|
||||||
"fa-whatsapp",
|
|
||||||
"fa-x-twitter",
|
|
||||||
"fab",
|
"fab",
|
||||||
"fas",
|
"fas",
|
||||||
"feature",
|
|
||||||
"fixed-top",
|
"fixed-top",
|
||||||
"flex-column",
|
"flex-column",
|
||||||
"flex-fill",
|
"flex-fill",
|
||||||
"flex-grow-1",
|
"flex-grow-1",
|
||||||
"flex-wrap",
|
|
||||||
"footer",
|
"footer",
|
||||||
"form-control",
|
"form-control",
|
||||||
"fs-3",
|
"fs-3",
|
||||||
|
"fs-5",
|
||||||
"fw-30",
|
"fw-30",
|
||||||
"fw-bold",
|
"fw-bold",
|
||||||
"gap-2",
|
|
||||||
"h-100",
|
|
||||||
"hstack",
|
"hstack",
|
||||||
"img-fluid",
|
"img-fluid",
|
||||||
"img-wrap",
|
"img-wrap",
|
||||||
"invisible",
|
"invisible",
|
||||||
"is-search",
|
"is-search",
|
||||||
"justify-content-center",
|
"justify-content-center",
|
||||||
"lead",
|
"justify-content-end",
|
||||||
|
"justify-content-start",
|
||||||
"link-bg-footer",
|
"link-bg-footer",
|
||||||
"link-secondary",
|
"link-secondary",
|
||||||
|
"main-content",
|
||||||
"main-nav-toggler",
|
"main-nav-toggler",
|
||||||
"mb-3",
|
|
||||||
"mb-4",
|
|
||||||
"mb-5",
|
|
||||||
"me-auto",
|
"me-auto",
|
||||||
"middle-bar",
|
"middle-bar",
|
||||||
"min-vh-100",
|
"min-vh-100",
|
||||||
@@ -131,58 +107,57 @@
|
|||||||
"mt-3",
|
"mt-3",
|
||||||
"mt-5",
|
"mt-5",
|
||||||
"mx-auto",
|
"mx-auto",
|
||||||
"mx-md-2",
|
"mx-md-0",
|
||||||
"my-auto",
|
"my-auto",
|
||||||
|
"my-md-auto",
|
||||||
"nav-item",
|
"nav-item",
|
||||||
"nav-link",
|
"nav-link",
|
||||||
"navbar",
|
"navbar",
|
||||||
"navbar-brand",
|
"navbar-brand",
|
||||||
"navbar-collapse",
|
"navbar-collapse",
|
||||||
"navbar-expand-md",
|
"navbar-expand-md",
|
||||||
|
"navbar-fixed-top",
|
||||||
"navbar-nav",
|
"navbar-nav",
|
||||||
"navbar-toggler",
|
"navbar-toggler",
|
||||||
"no-js",
|
"no-js",
|
||||||
|
"order-0",
|
||||||
"order-1",
|
"order-1",
|
||||||
"order-2",
|
"order-md-0",
|
||||||
"order-3",
|
"order-md-1",
|
||||||
"order-4",
|
|
||||||
"order-first",
|
|
||||||
"order-sm-2",
|
|
||||||
"order-sm-3",
|
|
||||||
"p-0",
|
"p-0",
|
||||||
"p-2",
|
"p-2",
|
||||||
"p-3",
|
"p-3",
|
||||||
"p-4",
|
"p-4",
|
||||||
"pb-5",
|
"pb-4",
|
||||||
"pe-1",
|
"pb-md-0",
|
||||||
"position-fixed",
|
"position-fixed",
|
||||||
"position-relative",
|
"position-relative",
|
||||||
"px-3",
|
"ps-1",
|
||||||
|
"pt-4",
|
||||||
|
"pt-5",
|
||||||
|
"pt-md-3",
|
||||||
"px-4",
|
"px-4",
|
||||||
"px-xxl-0",
|
"px-xxl-0",
|
||||||
"py-2",
|
|
||||||
"py-3",
|
"py-3",
|
||||||
"py-5",
|
|
||||||
"py-md-1",
|
|
||||||
"rounded",
|
"rounded",
|
||||||
"row",
|
"row",
|
||||||
"row-cols-1",
|
"row-cols-1",
|
||||||
"row-cols-2",
|
"row-cols-2",
|
||||||
|
"row-cols-md-2",
|
||||||
|
"row-cols-sm-2",
|
||||||
"row-cols-sm-3",
|
"row-cols-sm-3",
|
||||||
"row-cols-sm-4",
|
|
||||||
"search",
|
"search",
|
||||||
"search-input",
|
"search-input",
|
||||||
"search-suggestions",
|
"search-suggestions",
|
||||||
"shadow",
|
"shadow",
|
||||||
"svg-inline--fa",
|
"svg-inline--fa",
|
||||||
"switch-mode-collapsed",
|
"switch-mode-collapsed",
|
||||||
"text-body-secondary",
|
|
||||||
"text-center",
|
"text-center",
|
||||||
"text-decoration-none",
|
"text-decoration-none",
|
||||||
"text-end",
|
"text-muted",
|
||||||
"text-secondary",
|
"text-secondary",
|
||||||
"text-sm-start",
|
"text-sm-start",
|
||||||
"text-uppercase",
|
"text-start",
|
||||||
"theme-icon",
|
"theme-icon",
|
||||||
"theme-icon-active",
|
"theme-icon-active",
|
||||||
"toast",
|
"toast",
|
||||||
@@ -190,18 +165,14 @@
|
|||||||
"toast-container",
|
"toast-container",
|
||||||
"toast-header",
|
"toast-header",
|
||||||
"toggler-icon",
|
"toggler-icon",
|
||||||
"top-bar",
|
"top-bar"
|
||||||
"vr",
|
|
||||||
"w-100"
|
|
||||||
],
|
],
|
||||||
"ids": [
|
"ids": [
|
||||||
"-theme",
|
"-theme",
|
||||||
"-theme-collapsed",
|
"-theme-collapsed",
|
||||||
"btn-webshare",
|
|
||||||
"navbar-0-collapse",
|
"navbar-0-collapse",
|
||||||
"toast-container",
|
"toast-container",
|
||||||
"toast-copied-code-message",
|
"toast-copied-code-message"
|
||||||
"toast-message-email-4"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -65,6 +65,8 @@
|
|||||||
translation: "Startseite"
|
translation: "Startseite"
|
||||||
- id: languageSwitcherLabel
|
- id: languageSwitcherLabel
|
||||||
translation: "Sprache"
|
translation: "Sprache"
|
||||||
|
- id: close
|
||||||
|
translation: "Schließen"
|
||||||
|
|
||||||
# Table of contents
|
# Table of contents
|
||||||
- id: toc
|
- id: toc
|
||||||
|
@@ -25,6 +25,8 @@
|
|||||||
translation: "Articles"
|
translation: "Articles"
|
||||||
- id: more
|
- id: more
|
||||||
translation: "More {{ . }}"
|
translation: "More {{ . }}"
|
||||||
|
- id: emptyList
|
||||||
|
translation: "No articles found"
|
||||||
|
|
||||||
# Sharing
|
# Sharing
|
||||||
- id: shareLink
|
- id: shareLink
|
||||||
@@ -39,6 +41,8 @@
|
|||||||
translation: "Link"
|
translation: "Link"
|
||||||
- id: code
|
- id: code
|
||||||
translation: "Code"
|
translation: "Code"
|
||||||
|
- id: download
|
||||||
|
translation: "Download article"
|
||||||
|
|
||||||
# Pagination
|
# Pagination
|
||||||
- id: paginationNav
|
- id: paginationNav
|
||||||
@@ -67,6 +71,8 @@
|
|||||||
translation: "Home"
|
translation: "Home"
|
||||||
- id: languageSwitcherLabel
|
- id: languageSwitcherLabel
|
||||||
translation: "Language"
|
translation: "Language"
|
||||||
|
- id: close
|
||||||
|
translation: "Close"
|
||||||
|
|
||||||
# Table of contents
|
# Table of contents
|
||||||
- id: toc
|
- id: toc
|
||||||
|
@@ -67,6 +67,8 @@
|
|||||||
translation: "Accueil"
|
translation: "Accueil"
|
||||||
- id: languageSwitcherLabel
|
- id: languageSwitcherLabel
|
||||||
translation: "Langage"
|
translation: "Langage"
|
||||||
|
- id: close
|
||||||
|
translation: "Fermer"
|
||||||
|
|
||||||
# Table of contents
|
# Table of contents
|
||||||
- id: toc
|
- id: toc
|
||||||
|
@@ -23,6 +23,8 @@
|
|||||||
translation: "Artikelen"
|
translation: "Artikelen"
|
||||||
- id: more
|
- id: more
|
||||||
translation: "Meer {{ . }}"
|
translation: "Meer {{ . }}"
|
||||||
|
- id: emptyList
|
||||||
|
translation: "Geen artikelen gevonden"
|
||||||
|
|
||||||
# Sharing
|
# Sharing
|
||||||
- id: shareLink
|
- id: shareLink
|
||||||
@@ -37,6 +39,8 @@
|
|||||||
translation: "Link"
|
translation: "Link"
|
||||||
- id: code
|
- id: code
|
||||||
translation: "Code"
|
translation: "Code"
|
||||||
|
- id: download
|
||||||
|
translation: "Download artikel"
|
||||||
|
|
||||||
# Pagination
|
# Pagination
|
||||||
- id: paginationNav
|
- id: paginationNav
|
||||||
@@ -65,6 +69,8 @@
|
|||||||
translation: "Home"
|
translation: "Home"
|
||||||
- id: languageSwitcherLabel
|
- id: languageSwitcherLabel
|
||||||
translation: "Taal"
|
translation: "Taal"
|
||||||
|
- id: close
|
||||||
|
translation: "Sluiten"
|
||||||
|
|
||||||
# Table of contents
|
# Table of contents
|
||||||
- id: toc
|
- id: toc
|
||||||
|
@@ -1,13 +1,15 @@
|
|||||||
{{ define "main"}}
|
{{ define "main"}}
|
||||||
<div class="container-xxl flex-fill d-flex align-content-center flex-wrap feature">
|
<div class="d-flex flex-fill">
|
||||||
<div class="w-100 text-center">
|
<div class="container-xxl my-auto">
|
||||||
<span class="text-secondary fw-bold">
|
<div class="text-center">
|
||||||
{{ partial "assets/icon.html" (dict "icon" "fa face-frown fa-10x") }}
|
<span class="text-secondary fw-bold">
|
||||||
<p class="display-1 mt-3 fw-bold">404</p>
|
{{ partial "assets/icon.html" (dict "icon" "fa face-frown fa-10x") }}
|
||||||
<p class="fs-3">{{ T "pageNotFoundTitle" }}</p>
|
<p class="display-1 mt-3 fw-bold">404</p>
|
||||||
</span>
|
<p class="fs-3">{{ T "pageNotFoundTitle" }}</p>
|
||||||
{{- $home := printf "<a href=\"%s\">%s</a>" ("/" | relLangURL) (T "pageNotFoundHome") -}}
|
</span>
|
||||||
<p>{{ T "pageNotFound" $home | safeHTML }}</p>
|
{{- $home := printf "<a href=\"%s\">%s</a>" ("/" | relLangURL) (T "pageNotFoundHome") -}}
|
||||||
|
<p>{{ T "pageNotFound" $home | safeHTML }}</p>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
@@ -1,8 +1,30 @@
|
|||||||
{{- $section := .Section }}
|
{{- define "partials/optional-scripts.html" -}}
|
||||||
|
{{- $modules := site.Params.modules.optional | intersect .Params.modules -}}
|
||||||
|
{{- range $index, $mod := $modules -}}
|
||||||
|
{{- $filename := printf "js/%s.bundle.js" $mod -}}
|
||||||
|
{{- $match := printf "js/modules/%s/**.js" $mod -}}
|
||||||
|
{{- $skipTemplate := false -}}
|
||||||
|
{{- if reflect.IsSlice site.Params.modules.disableTemplate -}}
|
||||||
|
{{- if in site.Params.modules.disableTemplate $mod}}
|
||||||
|
{{- $skipTemplate = true -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{ $state := "" }}
|
||||||
|
{{- with (index site.Params.modules $mod) -}}
|
||||||
|
{{- with index . "state" }}{{ $state = . }}{{ end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- partial "footer/scripts.html" (dict "filename" $filename "match" $match "header" false "skipTemplate" $skipTemplate "state" $state "page" .) }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- /* Set version-aware sidebar menu */ -}}
|
||||||
{{- $version := partial "utilities/GetVersion.html" (dict "page" . "base" true) -}}
|
{{- $version := partial "utilities/GetVersion.html" (dict "page" . "base" true) -}}
|
||||||
{{- $.Scratch.Set "version" $version -}}
|
{{- $.Scratch.Set "version" $version -}}
|
||||||
{{ with partial "utilities/GetMenu" (dict "page" . "version" $version) }}{{ $.Scratch.Set "sidebar" . }}{{ end }}
|
{{ with partial "utilities/GetMenu" (dict "page" . "version" $version) }}{{ $.Scratch.Set "sidebar" . }}{{ end }}
|
||||||
|
|
||||||
|
{{- /* Validate if current version is latest */ -}}
|
||||||
{{- if and site.Params.docs.checkVersion $version -}}
|
{{- if and site.Params.docs.checkVersion $version -}}
|
||||||
{{- if ne $version "latest" -}}
|
{{- if ne $version "latest" -}}
|
||||||
{{- if partial "utilities/IsOlder" (dict "current" $version) -}}
|
{{- if partial "utilities/IsOlder" (dict "current" $version) -}}
|
||||||
@@ -12,10 +34,20 @@
|
|||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- /* Validate module configuration */ -}}
|
||||||
{{- if and .IsPage (not (in .Site.Params.modules.core "bootstrap")) -}}
|
{{- if and .IsPage (not (in .Site.Params.modules.core "bootstrap")) -}}
|
||||||
{{- errorf "Bootstrap is a required module, please add it to 'modules.core' in your site parameters" -}}
|
{{- 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 */ -}}
|
||||||
|
{{- $loading := "" -}}
|
||||||
|
{{- if $fullCover }}{{ $loading = .Site.Params.main.loading }}{{ end -}}
|
||||||
|
{{ $sections := partial "utilities/GetSections.html" (dict "page" . "loading" $loading) }}
|
||||||
|
{{- $.Scratch.Set "sections" $sections -}}
|
||||||
|
|
||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="{{ .Site.Language.Lang }}" class="no-js">
|
<html lang="{{ .Site.Language.Lang }}" class="no-js">
|
||||||
<head>
|
<head>
|
||||||
@@ -24,77 +56,37 @@
|
|||||||
|
|
||||||
<body>
|
<body>
|
||||||
{{- partial "footer/scripts.html" (dict "filename" "js/critical.bundle.js" "match" "js/critical/**.js" "header" true "page" .) -}}
|
{{- partial "footer/scripts.html" (dict "filename" "js/critical.bundle.js" "match" "js/critical/**.js" "header" true "page" .) -}}
|
||||||
<div class="d-flex flex-column min-vh-100{{ if and .IsHome .Site.Params.home.style }} {{ .Site.Params.home.style }}{{ end }}">
|
<div class="d-flex flex-column min-vh-100">
|
||||||
<div class="{{ if .Site.Params.navigation.fixed }}mb-4{{ end }}">
|
<div class="d-flex flex-column {{ if $fullCover }} fullscreen{{ end }}{{ if .IsHome }} {{ .Site.Params.home.style }}{{ end }}">
|
||||||
{{- partial "assets/navbar.html" (dict
|
{{- partial "assets/navbar.html" (dict
|
||||||
"page" .
|
"page" .
|
||||||
"fixed" (string .Site.Params.navigation.fixed)
|
"fixed" (string site.Params.navigation.fixed)
|
||||||
"color" (.Site.Params.navigation.color)
|
"color" site.Params.navigation.color
|
||||||
"style" (default "light" .Site.Params.navigation.style)
|
"style" (default "light" site.Params.navigation.style)
|
||||||
"size" (default "md" .Site.Params.navigation.size))
|
"size" (default "md" site.Params.navigation.size))
|
||||||
-}}
|
-}}
|
||||||
</div>
|
<div class="main-content">
|
||||||
{{ if .IsHome -}}
|
{{ block "featured" . }}{{ end -}}
|
||||||
{{ if .Site.Params.home.fullCover -}}
|
|
||||||
<div class="d-flex flex-fill {{ if .Site.Params.navigation.fixed }}mt-5{{ end }}">
|
|
||||||
{{ block "featured" . }}{{ end -}}
|
|
||||||
</div>
|
|
||||||
{{ else -}}
|
|
||||||
<div class="{{ if .Site.Params.navigation.fixed }}mt-5{{ end }}">
|
|
||||||
{{ block "featured" . }}{{ end -}}
|
|
||||||
</div>
|
|
||||||
<div class="d-flex flex-column flex-fill">
|
|
||||||
{{ block "main" . }}{{ end -}}
|
|
||||||
</div>
|
|
||||||
{{ if not .Site.Params.main.footerBelowFold }}
|
|
||||||
<div class="">
|
|
||||||
{{- partial "footer/social.html" . -}}
|
|
||||||
{{- partial "footer/footer.html" . -}}
|
|
||||||
</div>
|
|
||||||
{{ end }}
|
|
||||||
{{ end -}}
|
|
||||||
{{ else -}}
|
|
||||||
<div class="d-flex flex-column flex-fill {{ if .Site.Params.navigation.fixed }}mt-5{{ end }}">
|
|
||||||
{{ block "main" . }}{{ end -}}
|
|
||||||
</div>
|
</div>
|
||||||
{{ if not .Site.Params.main.footerBelowFold }}
|
{{ if .Site.Params.main.footerBelowFold }}
|
||||||
<div class="">
|
{{ block "main" . }}{{ end -}}
|
||||||
{{- partial "footer/social.html" . -}}
|
|
||||||
{{- partial "footer/footer.html" . -}}
|
|
||||||
</div>
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end -}}
|
</div>
|
||||||
|
|
||||||
|
{{ if not .Site.Params.main.footerBelowFold }}
|
||||||
|
{{ block "main" . }}{{ end -}}
|
||||||
|
{{- partial "footer/social.html" . -}}
|
||||||
|
{{- partial "footer/footer.html" . -}}
|
||||||
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{ if and .IsHome .Site.Params.home.fullCover -}}
|
{{ if .Site.Params.main.footerBelowFold }}
|
||||||
<div class="">
|
{{- partial "footer/social.html" . -}}
|
||||||
{{ block "main" . }}{{ end -}}
|
{{- partial "footer/footer.html" . -}}
|
||||||
</div>
|
|
||||||
<div class="">
|
|
||||||
{{- partial "footer/social.html" . -}}
|
|
||||||
{{- partial "footer/footer.html" . -}}
|
|
||||||
</div>
|
|
||||||
{{ else if .Site.Params.main.footerBelowFold }}
|
|
||||||
<div class="">
|
|
||||||
{{- partial "footer/social.html" . -}}
|
|
||||||
{{- partial "footer/footer.html" . -}}
|
|
||||||
</div>
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{- partial "footer/toast-container.html" . -}}
|
{{- partial "footer/toast-container.html" . -}}
|
||||||
{{- partialCached "footer/scripts.html" (dict "header" false "page" . "core" true) }}
|
{{- partialCached "footer/scripts.html" (dict "header" false "page" . "core" true) }}
|
||||||
{{- $modules := site.Params.modules.optional | intersect .Params.modules -}}
|
{{- partial "partials/optional-scripts.html" . -}}
|
||||||
{{- range $index, $mod := $modules -}}
|
|
||||||
{{- $filename := printf "js/%s.bundle.js" $mod -}}
|
|
||||||
{{- $match := printf "js/modules/%s/**.js" $mod -}}
|
|
||||||
{{- $skipTemplate := false -}}
|
|
||||||
{{- if reflect.IsSlice site.Params.modules.disableTemplate -}}
|
|
||||||
{{- if in site.Params.modules.disableTemplate $mod}}
|
|
||||||
{{- $skipTemplate = true -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{- partial "footer/scripts.html" (dict "filename" $filename "match" $match "header" false "skipTemplate" $skipTemplate "page" .) }}
|
|
||||||
{{- end -}}
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@@ -1,15 +1,96 @@
|
|||||||
|
{{- define "featured" }}
|
||||||
|
{{- $sections := $.Scratch.Get "sections" -}}
|
||||||
|
{{- $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 }}
|
||||||
|
|
||||||
{{- define "main" -}}
|
{{- define "main" -}}
|
||||||
<!-- Ignore empty content, see https://github.com/gohugoio/hugo/issues/11406 -->
|
{{- $page := . -}}
|
||||||
{{- $content := "" -}}
|
{{- $sections := $.Scratch.Get "sections" -}}
|
||||||
{{- if .Content }}{{ $content = partial "utilities/ProcessContent" (dict "page" .Page "raw" .RawContent) }}{{ end -}}
|
{{- $fullCover := $.Scratch.Get "fullCover" -}}
|
||||||
{{- partial "assets/section-list.html" (dict
|
{{- $layout := $page.Params.layout -}}
|
||||||
"page" .
|
|
||||||
"section" .Type
|
<div class="container-xxl px-4 px-xxl-0">
|
||||||
"home" false
|
{{- if ne $layout "featured" -}}
|
||||||
"nested" .Params.Nested
|
{{ if and (not $page.IsHome) site.Params.navigation.breadcrumb }}
|
||||||
"title" (or .Title .Type)
|
<div>{{ partial "assets/breadcrumb.html" $page }}</div>
|
||||||
"description" .Description
|
{{ end -}}
|
||||||
"content" $content
|
{{- end -}}
|
||||||
"paginate" true)
|
|
||||||
-}}
|
<div class="row row-cols-1 row-cols-sm-2">
|
||||||
{{- end -}}
|
<div class="col col-sm-12 col-md-8">
|
||||||
|
{{ if not $page.IsHome }}
|
||||||
|
{{ with $page.Title }}<p id="{{ anchorize . }}" class="display-4 mt-5{{ if and page.IsHome site.Params.home.centerHeadline }} text-center{{ end }}">{{ . }}</p>{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ if ($page.Params.menu) }}
|
||||||
|
{{- partial "assets/section-menu.html" $page -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- $loading := "" -}}
|
||||||
|
{{- if or (eq $layout "featured") $page.IsHome -}}
|
||||||
|
{{- if $fullCover}}{{ $loading = site.Params.main.loading }}{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{- $content := partial "utilities/ProcessContent" (dict "page" $page "raw" $page.RawContent "loading" $loading) -}}
|
||||||
|
{{ $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>
|
||||||
|
|
||||||
|
{{/* Display generated sections */}}
|
||||||
|
{{ range $sections }}
|
||||||
|
{{ .content | safeHTML }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{/* Fill remaining space to push footer to viewport bottom */}}
|
||||||
|
<div class="container-fluid flex-fill"></div>
|
||||||
|
{{- end -}}
|
||||||
|
@@ -1,119 +1,15 @@
|
|||||||
{{- define "partials/header.html" -}}
|
{{- define "partials/single-main.html" -}}
|
||||||
{{ if site.Params.navigation.breadcrumb }}{{ partial "assets/breadcrumb.html" . }}{{ end -}}
|
{{ if .Site.Params.navigation.breadcrumb }}{{ partial "assets/breadcrumb.html" . }}{{ end -}}
|
||||||
{{ if in (slice "docs" "minimal") .Layout }}
|
|
||||||
{{ with .Title }}<p class="display-4 mt-5">{{ . }}</p>{{ end }}
|
|
||||||
{{ partial "assets/sharing.html" . }}
|
|
||||||
<p class="lead mb-5">{{ .Description }}</p>
|
|
||||||
{{ else }}
|
|
||||||
{{ $lastmodstr := (partial "utilities/date.html" (dict "date" .Lastmod "format" "long")) -}}
|
|
||||||
{{ $datestr := (partial "utilities/date.html" (dict "date" .Date "format" "long")) -}}
|
|
||||||
{{ with .Title }}<p class="display-4 mt-5">{{ . }}</p>{{ end }}
|
|
||||||
<small class="text-body-secondary text-uppercase">
|
|
||||||
{{ $datestr | i18n "postedOnDate" -}}
|
|
||||||
{{ if ne $datestr $lastmodstr -}} ({{ $lastmodstr | i18n "lastModified" }}){{ end }} •
|
|
||||||
{{ .ReadingTime | lang.FormatNumber 0 }} {{ i18n "minutesShort" }} {{ i18n "read" }} •
|
|
||||||
{{ .WordCount | lang.FormatNumber 0 }} {{ i18n "words" }}
|
|
||||||
</small>
|
|
||||||
|
|
||||||
{{- if gt (len (.GetTerms "tags")) 0 -}}
|
{{ .Render "single/header" }}
|
||||||
<div class="mt-3">
|
|
||||||
<div class="d-none-dark">
|
|
||||||
<div class="hstack gap-3">
|
|
||||||
{{ range (.GetTerms "tags") -}}
|
|
||||||
{{- $url := (path.Join .Page.RelPermalink) | relLangURL -}}
|
|
||||||
{{ partial "assets/button.html" (dict "href" $url "title" .LinkTitle "color" "light" "size" "sm") }}
|
|
||||||
{{ end -}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="d-none-light">
|
|
||||||
<div class="hstack gap-3">
|
|
||||||
{{ range (.GetTerms "tags") -}}
|
|
||||||
{{- $url := (path.Join .Page.RelPermalink) | relLangURL -}}
|
|
||||||
{{ partial "assets/button.html" (dict "href" $url "title" .LinkTitle "color" "primary" "size" "sm" "outline" "true") }}
|
|
||||||
{{ end -}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{- end -}}
|
|
||||||
{{ partial "assets/sharing.html" . }}
|
|
||||||
<p class="lead mb-5 mt-3">{{ .Description }}</p>
|
|
||||||
{{ end }}
|
|
||||||
{{ end -}}
|
|
||||||
|
|
||||||
{{ define "partials/body.html" -}}
|
|
||||||
{{- if and .Site.Params.navigation.toc .Params.includeToc | default true -}}
|
{{- if and .Site.Params.navigation.toc .Params.includeToc | default true -}}
|
||||||
<div class="d-md-none pb-5">{{ partial "assets/toc-dropdown.html" . }}</div>
|
<div class="d-md-none pb-5">{{ partial "assets/toc-dropdown.html" . }}</div>
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
{{ .Render "single/body" }}
|
||||||
|
{{ partial "utilities/ProcessContent" (dict "page" .Page "raw" .RawContent) }}
|
||||||
|
|
||||||
{{ if not (in (slice "docs" "minimal") .Layout) }}
|
{{ .Render "single/footer" }}
|
||||||
{{- $thumbnail := "" -}}
|
|
||||||
{{- $credits := "" -}}
|
|
||||||
|
|
||||||
{{- if reflect.IsMap .Params.Thumbnail -}}
|
|
||||||
{{- $thumbnail = .Params.Thumbnail.url -}}
|
|
||||||
{{- $author := "" -}}
|
|
||||||
{{- if and .Params.Thumbnail.authorURL "text" .Params.Thumbnail.author }}
|
|
||||||
{{- $author = partial "utilities/link" (dict "destination" .Params.Thumbnail.authorURL "text" .Params.Thumbnail.author) -}}
|
|
||||||
{{- else if .Params.Thumbnail.author }}
|
|
||||||
{{- $author = .Params.Thumbnail.author -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{- $origin := "" -}}
|
|
||||||
{{- if and .Params.Thumbnail.originURL "text" .Params.Thumbnail.origin }}
|
|
||||||
{{- $origin = partial "utilities/link" (dict "destination" .Params.Thumbnail.originURL "text" .Params.Thumbnail.origin) -}}
|
|
||||||
{{- else if .Params.Thumbnail.origin }}
|
|
||||||
{{- $origin = .Params.Thumbnail.origin -}}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{- if and $author $origin }}
|
|
||||||
{{ $credits = printf (T "photoFull") $author $origin }}
|
|
||||||
{{ else if $author }}
|
|
||||||
{{ $credits = T "photoShort" $author }}
|
|
||||||
{{ end }}
|
|
||||||
{{ else }}
|
|
||||||
{{- $thumbnail = .Params.Thumbnail -}}
|
|
||||||
{{ if or .Params.photoCredits .Params.photoSource }}
|
|
||||||
{{ warnf "DEPRECATED: frontmatter variables `photoCredits` and `photoSource` have been deprecated in release v0.18: %s" .RelPermalink }}
|
|
||||||
{{ end }}
|
|
||||||
{{- if and .Params.photoCredits .Params.PhotoSource }}{{ $credits = printf (T "photoFull") .Params.photoCredits .Params.PhotoSource }}{{ end -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{ if $thumbnail -}}
|
|
||||||
{{- partial "assets/image.html" (dict "url" $thumbnail "ratio" "21x9" "outerClass" "img-wrap" "innerClass" "rounded" "title" .Params.title "caption" $credits) -}}
|
|
||||||
{{ end -}}
|
|
||||||
{{ end }}
|
|
||||||
|
|
||||||
<!-- Ignore empty content, see https://github.com/gohugoio/hugo/issues/11406 -->
|
|
||||||
{{- if .Content }}{{ partial "utilities/ProcessContent" (dict "page" .Page "raw" .RawContent) }}{{ end -}}
|
|
||||||
{{ end -}}
|
|
||||||
|
|
||||||
{{ define "partials/footer.html" -}}
|
|
||||||
{{ if eq .Layout "docs" }}
|
|
||||||
<div class="mt-5 small">
|
|
||||||
{{ partial "utilities/git.html" . }}
|
|
||||||
</div>
|
|
||||||
{{ else if ne .Layout "minimal" }}
|
|
||||||
<div class="row row-cols-2 mt-5 mb-3">
|
|
||||||
<div class="col">
|
|
||||||
{{ with .NextInSection -}}
|
|
||||||
{{ $next := . -}}
|
|
||||||
{{ with .OutputFormats.Get "html" -}}
|
|
||||||
<a class="next" href="{{ $next.RelPermalink }}">
|
|
||||||
{{- partial "assets/icon.html" (dict "icon" "fas arrow-left") }} {{ $next.Title }}</a>
|
|
||||||
{{- end -}}
|
|
||||||
{{ end -}}
|
|
||||||
</div>
|
|
||||||
<div class="col text-end">
|
|
||||||
{{ with .PrevInSection -}}
|
|
||||||
{{ $prev := . -}}
|
|
||||||
{{ with .OutputFormats.Get "html" -}}
|
|
||||||
<a class="previous" href="{{ $prev.RelPermalink }}">{{ $prev.Title }} {{- partial "assets/icon.html" (dict "icon" "fas arrow-right") }}</a>
|
|
||||||
{{- end -}}
|
|
||||||
{{ end -}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{ end }}
|
|
||||||
{{- if and .Site.Params.comments.enabled .Params.showComments | default true -}}
|
{{- if and .Site.Params.comments.enabled .Params.showComments | default true -}}
|
||||||
<hr>
|
<hr>
|
||||||
{{ partial "assets/comments.html" . }}
|
{{ partial "assets/comments.html" . }}
|
||||||
@@ -121,52 +17,66 @@
|
|||||||
{{ 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" -}}
|
||||||
{{- $sidebar := .Site.Params.navigation.sidebar | default true -}}
|
|
||||||
{{ if and $menu $sidebar -}}
|
{{ $sidebar := "" }}
|
||||||
|
{{- $hasSidebar := .Site.Params.navigation.sidebar | default true -}}
|
||||||
|
{{ if and $menu $hasSidebar }}{{ $sidebar = partial "assets/sidebar.html" (dict "page" . "menu" $menu "version" $version) }}{{ end }}
|
||||||
|
|
||||||
|
{{ $toc := "" }}
|
||||||
|
{{- $hasTOC := and .Site.Params.navigation.toc .Params.includeToc | default true -}}
|
||||||
|
{{ if $hasTOC }}{{ $toc = partial "assets/toc.html" (dict "page" . "download" $download) }}{{ end -}}
|
||||||
|
|
||||||
|
{{ with $sidebar -}}
|
||||||
<div class="offcanvas offcanvas-start" tabindex="-1" id="offcanvass-sidebar" aria-inledby="offcanvas-label">
|
<div class="offcanvas offcanvas-start" tabindex="-1" id="offcanvass-sidebar" aria-inledby="offcanvas-label">
|
||||||
<div class="offcanvas-header">
|
<div class="offcanvas-header">
|
||||||
<h5 class="offcanvas-title" id="offcanvas-label">{{ strings.FirstUpper .Section }}</h5>
|
<h5 class="offcanvas-title" id="offcanvas-label">{{ strings.FirstUpper $.Section }}</h5>
|
||||||
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
|
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="{{ T "close" }}"></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="offcanvas-body">
|
<div class="offcanvas-body">
|
||||||
{{ partial "assets/sidebar" (dict "page" . "menu" $menu "version" $version) }}
|
{{ . | safeHTML }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{{ end }}
|
||||||
<div class="container-xxl px-3 px-xxl-0">
|
|
||||||
|
<div class="container-xxl flex-fill p-4 px-xxl-0">
|
||||||
|
{{ if and $menu $hasSidebar -}}
|
||||||
<div class="row row-cols-md-2 row-cols-lg-3">
|
<div class="row row-cols-md-2 row-cols-lg-3">
|
||||||
<div class="col col-md-3 col-lg-2 d-none pt-5 d-md-block sidebar-overflow sticky-top">
|
<div class="col col-md-3 col-lg-2 d-none pt-5 d-md-block sidebar-overflow sticky-top">
|
||||||
{{ partial "assets/sidebar" (dict "page" . "menu" $menu "version" $version) }}
|
{{ $sidebar | safeHTML }}
|
||||||
</div>
|
</div>
|
||||||
<div class="col col-md-9 col-lg-8 mb-5 p-4">
|
<div class="col col-md-9 col-lg-8 mb-5 p-4">
|
||||||
{{ partial "partials/header.html" . }}
|
{{ partial "partials/single-main.html" . }}
|
||||||
{{ partial "partials/body.html" . }}
|
|
||||||
{{ partial "partials/footer.html" . }}
|
|
||||||
</div>
|
</div>
|
||||||
<div class="col col-lg-2 d-none d-lg-block pt-5">
|
<div class="col col-lg-2 d-none d-lg-block pt-5">
|
||||||
{{- if and .Site.Params.navigation.toc .Params.includeToc | default true -}}
|
{{ $toc | safeHTML }}
|
||||||
{{ partial "assets/toc.html" . -}}
|
|
||||||
{{ end -}}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
{{ else if $hasSidebar }}
|
||||||
{{ else }}
|
|
||||||
<div class="container-xxl px-3 px-xxl-0">
|
|
||||||
<div class="row row-cols-1 row-cols-sm-3">
|
<div class="row row-cols-1 row-cols-sm-3">
|
||||||
<div class="col col-md-2 d-none d-md-block"></div>
|
<div class="col col-md-2 d-none d-md-block"></div>
|
||||||
<div class="col col-sm-12 col-md-8">
|
<div class="col col-sm-12 col-md-8">
|
||||||
{{ partial "partials/header.html" . }}
|
{{ partial "partials/single-main.html" . }}
|
||||||
{{ partial "partials/body.html" . }}
|
|
||||||
{{ partial "partials/footer.html" . }}
|
|
||||||
</div>
|
</div>
|
||||||
<div class="col col-md-2 d-none d-md-block">
|
<div class="col col-md-2 d-none d-md-block">
|
||||||
{{- if and .Site.Params.navigation.toc .Params.includeToc | default true -}}
|
{{ $toc | safeHTML }}
|
||||||
{{ partial "assets/toc.html" . -}}
|
|
||||||
{{ end -}}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
{{ else }}
|
||||||
{{ end -}}
|
<div class="row row-cols-1 row-cols-sm-2">
|
||||||
|
<div class="col col-sm-12 col-md-9">
|
||||||
|
{{ partial "partials/single-main.html" . }}
|
||||||
|
</div>
|
||||||
|
<div class="col col-md-3 d-none d-md-block">
|
||||||
|
{{ $toc | safeHTML }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{ end -}}
|
||||||
|
</div>
|
||||||
{{ end -}}
|
{{ end -}}
|
1
layouts/_default/single/body.html
Normal file
1
layouts/_default/single/body.html
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{{- partial "single/thumbnail.html" . -}}
|
20
layouts/_default/single/footer.html
Normal file
20
layouts/_default/single/footer.html
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<div class="row row-cols-2 mt-5 mb-3">
|
||||||
|
<div class="col">
|
||||||
|
{{ with .NextInSection -}}
|
||||||
|
{{ if .OutputFormats.Get "html" -}}
|
||||||
|
<a class="next" href="{{ .RelPermalink }}">
|
||||||
|
{{- partial "assets/icon.html" (dict "icon" "fas arrow-left" "spacing" false) }} {{ .LinkTitle }}
|
||||||
|
</a>
|
||||||
|
{{- end -}}
|
||||||
|
{{ end -}}
|
||||||
|
</div>
|
||||||
|
<div class="col text-end">
|
||||||
|
{{ with .PrevInSection -}}
|
||||||
|
{{ if .OutputFormats.Get "html" -}}
|
||||||
|
<a class="previous" href="{{ .RelPermalink }}">
|
||||||
|
{{ .LinkTitle }} {{- partial "assets/icon.html" (dict "icon" "fas arrow-right" "spacing" false) }}
|
||||||
|
</a>
|
||||||
|
{{- end -}}
|
||||||
|
{{ end -}}
|
||||||
|
</div>
|
||||||
|
</div>
|
33
layouts/_default/single/header.html
Normal file
33
layouts/_default/single/header.html
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
{{ $lastmodstr := (partial "utilities/date.html" (dict "date" .Lastmod "format" "long")) -}}
|
||||||
|
{{ $datestr := (partial "utilities/date.html" (dict "date" .Date "format" "long")) -}}
|
||||||
|
{{ with .Title }}<p class="display-4 mt-5">{{ . }}</p>{{ end }}
|
||||||
|
<small class="text-body-secondary text-uppercase">
|
||||||
|
{{ $datestr | i18n "postedOnDate" -}}
|
||||||
|
{{ if ne $datestr $lastmodstr -}} ({{ $lastmodstr | i18n "lastModified" }}){{ end }} •
|
||||||
|
{{ .ReadingTime | lang.FormatNumber 0 }} {{ i18n "minutesShort" }} {{ i18n "read" }} •
|
||||||
|
{{ .WordCount | lang.FormatNumber 0 }} {{ i18n "words" }}
|
||||||
|
</small>
|
||||||
|
|
||||||
|
{{- if gt (len (.GetTerms "tags")) 0 -}}
|
||||||
|
<div class="mt-3">
|
||||||
|
<div class="d-none-dark">
|
||||||
|
<div class="hstack gap-1">
|
||||||
|
{{ range (.GetTerms "tags") -}}
|
||||||
|
{{- $url := (path.Join .Page.RelPermalink) | relLangURL -}}
|
||||||
|
{{ partial "assets/button.html" (dict "href" $url "title" .LinkTitle "color" "light" "size" "sm") }}
|
||||||
|
{{ end -}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="d-none-light">
|
||||||
|
<div class="hstack gap-1">
|
||||||
|
{{ range (.GetTerms "tags") -}}
|
||||||
|
{{- $url := (path.Join .Page.RelPermalink) | relLangURL -}}
|
||||||
|
{{ partial "assets/button.html" (dict "href" $url "title" .LinkTitle "color" "primary" "size" "sm" "outline" "true") }}
|
||||||
|
{{ end -}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{- end -}}
|
||||||
|
{{ partial "assets/sharing.html" . }}
|
||||||
|
<p class="lead mb-5 mt-3">{{ .Description }}</p>
|
1
layouts/docs/single/body.html
Normal file
1
layouts/docs/single/body.html
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{{/* Intentionally left blank to suppress thumbnail */}}
|
3
layouts/docs/single/footer.html
Normal file
3
layouts/docs/single/footer.html
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<div class="mt-5 small">
|
||||||
|
{{ partial "utilities/git.html" . }}
|
||||||
|
</div>
|
3
layouts/docs/single/header.html
Normal file
3
layouts/docs/single/header.html
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{{ with .Title }}<p class="display-4 mt-5">{{ . }}</p>{{ end }}
|
||||||
|
{{ partial "assets/sharing.html" . }}
|
||||||
|
<p class="lead mb-5">{{ .Description }}</p>
|
@@ -1,40 +0,0 @@
|
|||||||
{{- define "featured" -}}
|
|
||||||
{{- partial "home/featured.html" . -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{- define "main" -}}
|
|
||||||
{{- $page := . -}}
|
|
||||||
{{- $sections := site.Params.home.sections -}}
|
|
||||||
{{- if not $sections -}}
|
|
||||||
{{ range $section := site.Sections }}
|
|
||||||
{{ $sections = $sections | append $section.Type }}
|
|
||||||
{{ end }}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{- range $index, $section := $sections -}}
|
|
||||||
{{- $sectionPage := site.GetPage "section" $section -}}
|
|
||||||
{{- $sectionURL := $sectionPage.RelPermalink -}}
|
|
||||||
{{- $title := or $sectionPage.Title $sectionPage.Type -}}
|
|
||||||
{{- $thumbnail := (or (and (reflect.IsMap $sectionPage.Params.Thumbnail) $sectionPage.Params.Thumbnail.url) $sectionPage.Params.Thumbnail) -}}
|
|
||||||
{{- $icon := $sectionPage.Params.Icon -}}
|
|
||||||
{{- $content := $sectionPage.Content -}}
|
|
||||||
{{- $sectionTitle := strings.FirstUpper $sectionPage.Type -}}
|
|
||||||
{{- $moreTitle := "" -}}
|
|
||||||
{{- with (index site.Params.sections $section) -}}
|
|
||||||
{{- with index . "reference" }}{{ $moreTitle = . }}{{ end -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- $moreTitle = or $moreTitle (printf (T "more" (pluralize $sectionTitle))) -}}
|
|
||||||
|
|
||||||
{{- partial "assets/section-list.html" (dict
|
|
||||||
"page" $page
|
|
||||||
"section" $section
|
|
||||||
"home" true
|
|
||||||
"nested" true
|
|
||||||
"thumbnail" $thumbnail
|
|
||||||
"icon" $icon
|
|
||||||
"content" $content
|
|
||||||
"moreTitle" $moreTitle
|
|
||||||
"sectionURL" $sectionURL)
|
|
||||||
-}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
1
layouts/minimal/single/body.html
Normal file
1
layouts/minimal/single/body.html
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{{/* Intentionally left blank to suppress thumbnail */}}
|
1
layouts/minimal/single/footer.html
Normal file
1
layouts/minimal/single/footer.html
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{{/* Intentionally left blank to suppress page navigation */}}
|
3
layouts/minimal/single/header.html
Normal file
3
layouts/minimal/single/header.html
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{{ with .Title }}<p class="display-4 mt-5">{{ . }}</p>{{ end }}
|
||||||
|
{{ partial "assets/sharing.html" . }}
|
||||||
|
<p class="lead mb-5">{{ .Description }}</p>
|
@@ -1,7 +1,7 @@
|
|||||||
<nav aria-label="breadcrumb">
|
<nav aria-label="breadcrumb">
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
{{- range $index, $item := .Page.Ancestors.Reverse -}}
|
{{- range $index, $item := .Page.Ancestors.Reverse -}}
|
||||||
{{- $title := .Title -}}
|
{{- $title := .LinkTitle -}}
|
||||||
{{- if .IsHome }}{{ $title = T "home" }}{{ end -}}
|
{{- if .IsHome }}{{ $title = T "home" }}{{ end -}}
|
||||||
{{- $address := or .RelPermalink (.Params.Redirect | relLangURL) -}}
|
{{- $address := or .RelPermalink (.Params.Redirect | relLangURL) -}}
|
||||||
{{ if $address }}
|
{{ if $address }}
|
||||||
@@ -10,6 +10,6 @@
|
|||||||
<li class="breadcrumb-item">{{ $title }}</li>
|
<li class="breadcrumb-item">{{ $title }}</li>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
<li class="breadcrumb-item active" aria-current="page">{{ .Page.Title }}</li>
|
<li class="breadcrumb-item active" aria-current="page">{{ .Page.LinkTitle }}</li>
|
||||||
</ol>
|
</ol>
|
||||||
</nav>
|
</nav>
|
||||||
|
@@ -28,6 +28,7 @@
|
|||||||
"tab" Optional flag to indicate if an external link should open in a new tab, defaults to setting
|
"tab" Optional flag to indicate if an external link should open in a new tab, defaults to setting
|
||||||
"main.externalLinks.tab" in the site's parameters.
|
"main.externalLinks.tab" in the site's parameters.
|
||||||
"attributes" Optional dictionary of key-value pairs added as custom attributes to the button element ('<a>').
|
"attributes" Optional dictionary of key-value pairs added as custom attributes to the button element ('<a>').
|
||||||
|
"spacing" Optional flag to add spacing to the inline button, defaults to "true".
|
||||||
-->
|
-->
|
||||||
|
|
||||||
{{- $title := trim .title " \r\n" -}}
|
{{- $title := trim .title " \r\n" -}}
|
||||||
@@ -126,6 +127,8 @@
|
|||||||
{{- $target := "" -}}
|
{{- $target := "" -}}
|
||||||
{{- $rel := "" -}}
|
{{- $rel := "" -}}
|
||||||
|
|
||||||
|
{{- $spacing := .spacing | default true -}}
|
||||||
|
|
||||||
{{- if $isExternal -}}
|
{{- if $isExternal -}}
|
||||||
{{- if $tab -}}
|
{{- if $tab -}}
|
||||||
{{- $target = "_blank" -}}
|
{{- $target = "_blank" -}}
|
||||||
@@ -140,7 +143,7 @@
|
|||||||
|
|
||||||
{{- $attributes := .attributes -}}
|
{{- $attributes := .attributes -}}
|
||||||
|
|
||||||
<a aria-label="{{ or $label $title }}" {{ if ne $state "disabled" }}{{ with $href }}href="{{ . }}"{{ end }}{{ end -}}
|
<a aria-label="{{ (or $label $title) | safeHTML }}" {{ if ne $state "disabled" }}{{ with $href }}href="{{ . }}"{{ end }}{{ end -}}
|
||||||
{{- with $id }} id="{{ . }}"{{ end -}}
|
{{- with $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 -}}
|
||||||
@@ -157,8 +160,8 @@
|
|||||||
{{- end -}}
|
{{- end -}}
|
||||||
>
|
>
|
||||||
<div class="d-flex justify-content-{{ $justify }}">
|
<div class="d-flex justify-content-{{ $justify }}">
|
||||||
<div class="my-auto">{{ $title }}</div>
|
<div class="my-auto">{{ $title | safeHTML }}</div>
|
||||||
{{- with $icon }}<div class="align-self-center{{ if $title }}{{ if eq $order "first" }} order-first pe-1{{ else }} ps-1{{ end }}{{ end }}">{{ partial "assets/icon.html" (dict "icon" $icon) }}</div>{{ end }}
|
{{- with $icon }}<div class="align-self-center{{ if $title }}{{ if eq $order "first" }} order-first pe-1{{ else }} ps-1{{ end }}{{ end }}">{{ partial "assets/icon.html" (dict "icon" $icon "spacing" false) }}</div>{{ end }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{- with $badge }}
|
{{- with $badge }}
|
||||||
@@ -167,4 +170,4 @@
|
|||||||
{{ with $label }}<span class="visually-hidden">{{ . }}</span>{{ end }}
|
{{ with $label }}<span class="visually-hidden">{{ . }}</span>{{ end }}
|
||||||
</span>
|
</span>
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
</a>
|
</a>{{ if $spacing }} {{- end }}
|
||||||
|
@@ -31,6 +31,8 @@
|
|||||||
"footer" Optional footer components of the card, displayed in small caps. Supported values are "full",
|
"footer" Optional footer components of the card, displayed in small caps. Supported values are "full",
|
||||||
"publication", "tags", and "none" (default).
|
"publication", "tags", and "none" (default).
|
||||||
"orientation" Optional placecement of the thumbnail, either "stacked" (default), "horizontal", or "none".
|
"orientation" Optional placecement of the thumbnail, either "stacked" (default), "horizontal", or "none".
|
||||||
|
"ratio" Optional ratio of the thumbnail image, defaults to "16x9" (stacked orientation) or "1x1" (horizontal
|
||||||
|
orientation).
|
||||||
-->
|
-->
|
||||||
|
|
||||||
{{- $page := .page -}}
|
{{- $page := .page -}}
|
||||||
@@ -139,7 +141,16 @@
|
|||||||
{{- $header := .header -}}
|
{{- $header := .header -}}
|
||||||
{{- $footer := .footer -}}
|
{{- $footer := .footer -}}
|
||||||
{{- $orientation := .orientation -}}
|
{{- $orientation := .orientation -}}
|
||||||
{{- $wrapper := .wrapper | default "p-4 px-xxl-0" -}}
|
{{- $ratio := .ratio -}}
|
||||||
|
{{- $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 -}}
|
||||||
|
|
||||||
@@ -153,6 +164,8 @@
|
|||||||
"header" $header
|
"header" $header
|
||||||
"footer" $footer
|
"footer" $footer
|
||||||
"orientation" $orientation
|
"orientation" $orientation
|
||||||
|
"ratio" $ratio
|
||||||
|
"loading" $loading
|
||||||
) -}}
|
) -}}
|
||||||
{{- $params = merge $params $element }}
|
{{- $params = merge $params $element }}
|
||||||
|
|
||||||
|
@@ -18,6 +18,8 @@
|
|||||||
"publication", "tags", and "none" (default).
|
"publication", "tags", and "none" (default).
|
||||||
"description" Optional description of the card.
|
"description" Optional description of the card.
|
||||||
"thumbnail" Optional thumbnail image url, displayed on top or the left 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.
|
"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.
|
"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",
|
"orientation" Optional placecement of the thumbnail or icon, either "stacked" (default), "horizontal",
|
||||||
@@ -88,6 +90,7 @@
|
|||||||
{{- $href := .href -}}
|
{{- $href := .href -}}
|
||||||
{{- $description := .description -}}
|
{{- $description := .description -}}
|
||||||
{{- $thumbnail := .thumbnail -}}
|
{{- $thumbnail := .thumbnail -}}
|
||||||
|
{{- $ratio := .ratio -}}
|
||||||
{{- $icon := .icon -}}
|
{{- $icon := .icon -}}
|
||||||
|
|
||||||
{{- $color := "" -}}
|
{{- $color := "" -}}
|
||||||
@@ -143,16 +146,24 @@
|
|||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- if eq $orientation "none" }}{{ $thumbnail = "" }}{{ $icon = "" }}{{ end -}}
|
{{- if eq $orientation "none" }}{{ $thumbnail = "" }}{{ $icon = "" }}{{ end -}}
|
||||||
|
|
||||||
|
{{- $loading := .loading -}}
|
||||||
|
{{- $validSettings := slice "lazy" "eager" -}}
|
||||||
|
{{- if $loading -}}
|
||||||
|
{{ if not (in $validSettings $loading) -}}
|
||||||
|
{{- errorf "partial [assets/card.html] - Invalid value for param 'loading': %s" $loading -}}
|
||||||
|
{{ end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
{{ if ne $gutter "0" }}<div class="g-{{ $gutter }}">{{ end }}
|
{{ if ne $gutter "0" }}<div class="g-{{ $gutter }}">{{ end }}
|
||||||
{{- if hasPrefix $orientation "horizontal" -}}
|
{{- if hasPrefix $orientation "horizontal" -}}
|
||||||
<div class="card {{ with $color }}bg-{{ . }} text-bg-{{ . }}{{ end }} {{ $class }}">
|
<div class="card {{ with $color }}bg-{{ . }} text-bg-{{ . }}{{ end }} {{ $class }}">
|
||||||
<div class="row g-0 row-cols-1 h-100">
|
<div class="row g-0 row-cols-1 h-100">
|
||||||
<div class="col-4{{ if eq $orientation "horizontal-sm" }} col-md-2{{ end }}">
|
<div class="col-4{{ if eq $orientation "horizontal-sm" }} col-md-2{{ end }}">
|
||||||
{{- if $thumbnail -}}
|
{{- if $thumbnail -}}
|
||||||
{{- partial "assets/image.html" (dict "url" $thumbnail "ratio" "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="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 text-secondary fa-fw" $icon)) -}}
|
{{- partial "assets/icon.html" (dict "icon" (printf "%s fa-fluid fa-fw" $icon)) -}}
|
||||||
</div>
|
</div>
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
</div>
|
</div>
|
||||||
@@ -170,10 +181,10 @@
|
|||||||
{{- else -}}
|
{{- else -}}
|
||||||
<div class="card {{ with $color }}bg-{{ . }} text-bg-{{ . }}{{ end }} {{ $class }}">
|
<div class="card {{ with $color }}bg-{{ . }} text-bg-{{ . }}{{ end }} {{ $class }}">
|
||||||
{{- if $thumbnail -}}
|
{{- if $thumbnail -}}
|
||||||
{{- partial "assets/image.html" (dict "url" $thumbnail "ratio" "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="p-{{ $padding }}">
|
<div class="card-icon p-{{ $padding }}">
|
||||||
{{- partial "assets/icon.html" (dict "icon" (printf "%s fa-4x text-secondary" $icon)) -}}
|
{{- partial "assets/icon.html" (dict "icon" (printf "%s fa-4x" $icon)) -}}
|
||||||
</div>
|
</div>
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
<div class="card-body d-flex flex-column p-{{ $padding }}">
|
<div class="card-body d-flex flex-column p-{{ $padding }}">
|
||||||
|
@@ -5,8 +5,16 @@
|
|||||||
{{- $ratio := .ratio -}}
|
{{- $ratio := .ratio -}}
|
||||||
{{- $portrait := .portrait -}}
|
{{- $portrait := .portrait -}}
|
||||||
|
|
||||||
|
{{- $loading := .loading -}}
|
||||||
|
{{- $validSettings := slice "lazy" "eager" -}}
|
||||||
|
{{- if $loading -}}
|
||||||
|
{{ if not (in $validSettings $loading) -}}
|
||||||
|
{{- errorf "partial [assets/carousel-item.html] - Invalid value for param 'loading': %s" $loading -}}
|
||||||
|
{{ end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
<div class="carousel-item{{ if $active }} active{{ end }}">
|
<div class="carousel-item{{ if $active }} active{{ end }}">
|
||||||
{{ partial "assets/image.html" (dict "url" $src "ratio" $ratio "page" $page "innerClass" "d-block w-100" "portrait" $portrait) }}
|
{{ partial "assets/image.html" (dict "url" $src "ratio" $ratio "page" $page "innerClass" "d-block w-100" "portrait" $portrait "loading" $loading) }}
|
||||||
<div class="carousel-caption gradient"></div>
|
<div class="carousel-caption gradient"></div>
|
||||||
{{ with $caption }}
|
{{ with $caption }}
|
||||||
<div class="carousel-caption d-none d-md-block">
|
<div class="carousel-caption d-none d-md-block">
|
||||||
|
@@ -21,6 +21,10 @@
|
|||||||
applicable to vector graphics.
|
applicable to vector graphics.
|
||||||
"portrait": Optional flag to adjust the ratio from landscape to portrait. The image itself is not rotated, only
|
"portrait": Optional flag to adjust the ratio from landscape to portrait. The image itself is not rotated, only
|
||||||
the crop area is adjusted. Not applicable to vector graphics.
|
the crop area is adjusted. Not applicable to vector graphics.
|
||||||
|
"loading": Optional loading behavior of the image, either "eager" (default) or "lazy". The loading of lazily
|
||||||
|
loaded images is deferred until the image is within scrolling range of the viewport. This should
|
||||||
|
reduce the initial loading time of the website. It is recommended to lazily load only those images
|
||||||
|
that are below the page fold.
|
||||||
"outerClass": Optional class attribute of the outer div element, e.g. "img-wrap".
|
"outerClass": Optional class attribute of the outer div element, e.g. "img-wrap".
|
||||||
"innerClass": Optional class attribute of the inner img element, e.g. "rounded".
|
"innerClass": Optional class attribute of the inner img element, e.g. "rounded".
|
||||||
"title": Optional alternate text of the image.
|
"title": Optional alternate text of the image.
|
||||||
@@ -40,9 +44,7 @@
|
|||||||
{{- $url := .url -}}
|
{{- $url := .url -}}
|
||||||
|
|
||||||
{{- $mode := false -}}
|
{{- $mode := false -}}
|
||||||
{{- with .mode -}}
|
{{- with .mode }}{{ $mode = . }}{{ end -}}
|
||||||
{{ $mode = . -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- $outerClass := .outerClass -}}
|
{{- $outerClass := .outerClass -}}
|
||||||
{{- $innerClass := .innerClass -}}
|
{{- $innerClass := .innerClass -}}
|
||||||
{{- $title := .title -}}
|
{{- $title := .title -}}
|
||||||
@@ -53,6 +55,14 @@
|
|||||||
{{- $modes := site.Params.main.modes | default (slice "light" "dark") -}}
|
{{- $modes := site.Params.main.modes | default (slice "light" "dark") -}}
|
||||||
{{- $page := .page -}}
|
{{- $page := .page -}}
|
||||||
|
|
||||||
|
{{- $loading := .loading -}}
|
||||||
|
{{- $validSettings := slice "lazy" "eager" -}}
|
||||||
|
{{- if $loading -}}
|
||||||
|
{{ if not (in $validSettings $loading) -}}
|
||||||
|
{{- errorf "partial [assets/image.html] - Invalid value for param 'loading'" -}}
|
||||||
|
{{ end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- $lazy := eq $loading "lazy" -}}
|
||||||
|
|
||||||
{{- define "partials/image-portrait.html" -}}
|
{{- define "partials/image-portrait.html" -}}
|
||||||
{{- $dimensions := slice }}
|
{{- $dimensions := slice }}
|
||||||
@@ -68,12 +78,14 @@
|
|||||||
{{- $portraits = $portraits | append (printf "%sx%s" (index $p 1) (index $p 0)) -}}
|
{{- $portraits = $portraits | append (printf "%sx%s" (index $p 1) (index $p 0)) -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
{{- $ret := "" }}
|
{{- $ret := "" }}
|
||||||
{{- if reflect.IsSlice $dim -}}
|
{{- if reflect.IsSlice $dim -}}
|
||||||
{{ $ret = $portraits -}}
|
{{ $ret = $portraits -}}
|
||||||
{{- else if gt (len $portraits) 0 -}}
|
{{- else if gt (len $portraits) 0 -}}
|
||||||
{{- $ret = index $portraits 0 -}}
|
{{- $ret = index $portraits 0 -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
{{- return $ret -}}
|
{{- return $ret -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
@@ -87,29 +99,23 @@
|
|||||||
{{- $fallback := "" -}}
|
{{- $fallback := "" -}}
|
||||||
|
|
||||||
{{- with $img -}}
|
{{- with $img -}}
|
||||||
{{- if eq $ratio "4x3" -}}
|
{{- if eq $ratio "4x3" -}}{{- $dim = "1400x1050" }}
|
||||||
{{- $dim = "1400x1050" }}
|
{{- else if eq $ratio "3x2" -}}{{- $dim = "1400x933" }}
|
||||||
{{- else if eq $ratio "3x2" -}}
|
{{- else if eq $ratio "1x1" -}}{{- $dim = "1400x1400" }}
|
||||||
{{- $dim = "1400x933" }}
|
{{- else if eq $ratio "16x9" -}}{{- $dim = "1400x788" -}}
|
||||||
{{- else if eq $ratio "1x1" -}}
|
{{- else if eq $ratio "21x9" -}}{{- $dim = "1400x600" -}}
|
||||||
{{- $dim = "1400x1400" }}
|
|
||||||
{{- else if eq $ratio "16x9" -}}
|
|
||||||
{{- $dim = "1400x788" -}}
|
|
||||||
{{- else if eq $ratio "21x9" -}}
|
|
||||||
{{- $dim = "1400x600" -}}
|
|
||||||
{{- else -}}
|
{{- else -}}
|
||||||
{{- $dim = printf "%sx%d" $width (int (math.Round (mul (div (float $width) $img.Width) $img.Height))) -}}
|
{{- $dim = printf "%sx%d" $width (int (math.Round (mul (div (float $width) $img.Width) $img.Height))) -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
{{- if $portrait -}}
|
{{- if $portrait -}}{{- $dim = partial "partials/image-portrait.html" (dict "dim" $dim) -}}{{- end -}}
|
||||||
{{- $dim = partial "partials/image-portrait.html" (dict "dim" $dim) -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{- if $ratio -}}
|
{{- if $ratio -}}
|
||||||
{{- $fallback = ($img.Fill (printf "%s jpg" $dim)) -}}
|
{{- $fallback = ($img.Fill (printf "%s jpg" $dim)) -}}
|
||||||
{{- else -}}
|
{{- else -}}
|
||||||
{{- $fallback = ($img.Fit (printf "%s jpg" $dim)) -}}
|
{{- $fallback = ($img.Fit (printf "%s jpg" $dim)) -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
{{- $clean := path.Ext $img.RelPermalink -}}
|
{{- $clean := path.Ext $img.RelPermalink -}}
|
||||||
{{- $ext := path.Ext $img.RelPermalink -}}
|
{{- $ext := path.Ext $img.RelPermalink -}}
|
||||||
{{- $fallback = $fallback | resources.Copy (replace $img.RelPermalink $clean (printf "-%s%s" $dim $ext)) -}}
|
{{- $fallback = $fallback | resources.Copy (replace $img.RelPermalink $clean (printf "-%s%s" $dim $ext)) -}}
|
||||||
@@ -131,7 +137,7 @@
|
|||||||
{{- $dims := slice -}}
|
{{- $dims := slice -}}
|
||||||
{{- with $img -}}
|
{{- with $img -}}
|
||||||
{{- if eq $ratio "4x3" -}}
|
{{- if eq $ratio "4x3" -}}
|
||||||
{{- $dims = slice "576x432" "768x576" "992x744" "1200x900" "1400x1050" -}}
|
{{- $dims = slice "576x432" "768x576" "992x744" "1200x900" "1400x1050" -}}
|
||||||
{{- else if eq $ratio "3x2" -}}
|
{{- else if eq $ratio "3x2" -}}
|
||||||
{{- $dims = slice "576x384" "768x512" "992x661" "1200x800" "1400x933" -}}
|
{{- $dims = slice "576x384" "768x512" "992x661" "1200x800" "1400x933" -}}
|
||||||
{{- else if eq $ratio "1x1" -}}
|
{{- else if eq $ratio "1x1" -}}
|
||||||
@@ -158,6 +164,7 @@
|
|||||||
{{- else -}}
|
{{- else -}}
|
||||||
{{- $scaled = $img.Fit (printf "%s webp" $dim) -}}
|
{{- $scaled = $img.Fit (printf "%s webp" $dim) -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
{{- $scaled = $scaled | resources.Copy (replace $img.RelPermalink $clean (printf "-%s.webp" $dim)) -}}
|
{{- $scaled = $scaled | resources.Copy (replace $img.RelPermalink $clean (printf "-%s.webp" $dim)) -}}
|
||||||
{{- if $absoluteURL -}}
|
{{- if $absoluteURL -}}
|
||||||
{{- $imgset = printf "%s, %s %sw" $imgset $scaled.Permalink (index $widths $index) -}}
|
{{- $imgset = printf "%s, %s %sw" $imgset $scaled.Permalink (index $widths $index) -}}
|
||||||
@@ -165,6 +172,7 @@
|
|||||||
{{- $imgset = printf "%s, %s %sw" $imgset $scaled.RelPermalink (index $widths $index) -}}
|
{{- $imgset = printf "%s, %s %sw" $imgset $scaled.RelPermalink (index $widths $index) -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
{{- $imgset = strings.TrimPrefix ", " $imgset -}}
|
{{- $imgset = strings.TrimPrefix ", " $imgset -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
@@ -186,6 +194,7 @@
|
|||||||
{{- $imgset := "" -}}
|
{{- $imgset := "" -}}
|
||||||
{{- $mode := .mode -}}
|
{{- $mode := .mode -}}
|
||||||
{{- $modes := .modes -}}
|
{{- $modes := .modes -}}
|
||||||
|
{{- $lazy := .lazy -}}
|
||||||
{{- $page := .page -}}
|
{{- $page := .page -}}
|
||||||
{{- $isVector := false -}}
|
{{- $isVector := false -}}
|
||||||
|
|
||||||
@@ -204,11 +213,11 @@
|
|||||||
{{- $img := partial "utilities/GetImage.html" (dict "url" $url "page" $page) -}}
|
{{- $img := partial "utilities/GetImage.html" (dict "url" $url "page" $page) -}}
|
||||||
{{- if $img -}}
|
{{- if $img -}}
|
||||||
{{- $fallback := partial "partials/image-default.html" (dict "img" $img "ratio" $ratio "portrait" $portrait) -}}
|
{{- $fallback := partial "partials/image-default.html" (dict "img" $img "ratio" $ratio "portrait" $portrait) -}}
|
||||||
{{- if $absoluteURL -}}
|
{{- if $absoluteURL -}}
|
||||||
{{- $fallbackURL = $fallback.Permalink -}}
|
{{- $fallbackURL = $fallback.Permalink -}}
|
||||||
{{- else -}}
|
{{- else -}}
|
||||||
{{- $fallbackURL = $fallback.RelPermalink -}}
|
{{- $fallbackURL = $fallback.RelPermalink -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- $imgset = partial "partials/image-scaled.html " (dict "img" $img "ratio" $ratio "portrait" $portrait) -}}
|
{{- $imgset = partial "partials/image-scaled.html " (dict "img" $img "ratio" $ratio "portrait" $portrait) -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
@@ -219,18 +228,32 @@
|
|||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- $width := "" -}}
|
||||||
|
{{- $height := "" -}}
|
||||||
|
{{- $input := (split (path.BaseName $fallbackURL) "-") | collections.Reverse -}}
|
||||||
|
{{ if $isVector }}
|
||||||
|
{{- $height = "500" -}}
|
||||||
|
{{ $width = string (partial "utilities/GetWidth.html" (dict "path" $fallbackURL "height" 500)) }}
|
||||||
|
{{- else if gt ($input | len) 1 -}}
|
||||||
|
{{- $dim := (split (index $input 0) "x") -}}
|
||||||
|
{{- if eq ($dim | len) 2 -}}
|
||||||
|
{{- $width = index $dim 0 -}}
|
||||||
|
{{- $height = index $dim 1 -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
{{- if $caption -}}
|
{{- if $caption -}}
|
||||||
<figure {{ with $outerClass }}class="{{ . }}"{{ end }}>
|
<figure {{ with $outerClass }}class="{{ . }}"{{ end }}>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<div class="{{ if not $caption }}{{ $outerClass }}{{ end }}">
|
<div class="{{ if not $caption }}{{ $outerClass }}{{ end }}">
|
||||||
{{- if not $anchor -}}
|
{{- if not $anchor -}}
|
||||||
<img class="img-fluid {{ $innerClass }}"
|
<img class="img-fluid {{ $innerClass }}"
|
||||||
{{ with $imgset -}}
|
|
||||||
srcset="{{ . }}"
|
|
||||||
sizes="100vw"
|
|
||||||
{{- end }}
|
|
||||||
src="{{ $fallbackURL }}"
|
src="{{ $fallbackURL }}"
|
||||||
alt="{{ $title }}">
|
{{ if $lazy }}loading="lazy"{{ end }}
|
||||||
|
{{ with $imgset -}}srcset="{{ . }}" sizes="100vw"{{- end }}
|
||||||
|
{{ with $height }}height="{{ . }}"{{ end }}
|
||||||
|
{{ with $width }}width="{{ . }}"{{ end }}
|
||||||
|
{{ with $title }}alt="{{ . }}"{{ end }}>
|
||||||
{{- else }}
|
{{- else }}
|
||||||
<svg class="{{ $innerClass }}">
|
<svg class="{{ $innerClass }}">
|
||||||
<use href="{{ $fallbackURL }}#{{ $anchor }}"></use>
|
<use href="{{ $fallbackURL }}#{{ $anchor }}"></use>
|
||||||
@@ -238,12 +261,25 @@
|
|||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
{{- if $caption -}}
|
{{- if $caption -}}
|
||||||
<figcaption class="figure-caption">{{ $caption | safeHTML }}</figcaption>
|
<figcaption class="figure-caption">{{ $caption | safeHTML }}</figcaption>
|
||||||
</figure>
|
</figure>
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
|
|
||||||
<!-- Initiate the regular or color-mode image -->
|
<!-- Initiate the regular or color-mode image -->
|
||||||
|
{{ $params := dict }}
|
||||||
|
{{- $params = merge $params (dict
|
||||||
|
"ratio" $ratio
|
||||||
|
"portrait" $portrait
|
||||||
|
"outerClass" $outerClass
|
||||||
|
"innerClass" $innerClass
|
||||||
|
"title" $title
|
||||||
|
"caption" $caption
|
||||||
|
"lazy" $lazy
|
||||||
|
"page" $page)
|
||||||
|
-}}
|
||||||
|
|
||||||
{{- if $mode -}}
|
{{- if $mode -}}
|
||||||
{{- $ext := path.Ext $url -}}
|
{{- $ext := path.Ext $url -}}
|
||||||
{{- $base := strings.TrimSuffix $ext $url -}}
|
{{- $base := strings.TrimSuffix $ext $url -}}
|
||||||
@@ -253,28 +289,14 @@
|
|||||||
|
|
||||||
{{- range $suffix := $modes -}}
|
{{- range $suffix := $modes -}}
|
||||||
{{- $image := printf "%s-%s%s" $base $suffix $ext -}}
|
{{- $image := printf "%s-%s%s" $base $suffix $ext -}}
|
||||||
{{- partial "partials/image-definition.html" (dict
|
{{- $params = merge $params (dict
|
||||||
"ratio" $ratio
|
|
||||||
"portrait" $portrait
|
|
||||||
"url" $image
|
"url" $image
|
||||||
"outerClass" $outerClass
|
|
||||||
"innerClass" $innerClass
|
|
||||||
"title" $title
|
|
||||||
"caption" $caption
|
|
||||||
"mode" $suffix
|
"mode" $suffix
|
||||||
"modes" $modes
|
"modes" $modes)
|
||||||
"page" $page)
|
|
||||||
-}}
|
-}}
|
||||||
|
{{- partial "partials/image-definition.html" $params -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- else -}}
|
{{ else }}
|
||||||
{{- partial "partials/image-definition.html" (dict
|
{{- $params = merge $params (dict "url" $url) -}}
|
||||||
"ratio" $ratio
|
{{- partial "partials/image-definition.html" $params -}}
|
||||||
"portrait" $portrait
|
|
||||||
"url" $url
|
|
||||||
"outerClass" $outerClass
|
|
||||||
"innerClass" $innerClass
|
|
||||||
"title" $title
|
|
||||||
"caption" $caption
|
|
||||||
"page" $page)
|
|
||||||
-}}
|
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
@@ -28,7 +28,8 @@
|
|||||||
{{- $thumbnail := .thumbnail -}}
|
{{- $thumbnail := .thumbnail -}}
|
||||||
{{- $style := .style -}}
|
{{- $style := .style -}}
|
||||||
{{- $mode := .mode -}}
|
{{- $mode := .mode -}}
|
||||||
{{- partial "assets/image.html" (dict "url" $thumbnail "outerClass" $style "mode" $mode) -}}
|
{{- $loading := .loading -}}
|
||||||
|
{{- partial "assets/image.html" (dict "url" $thumbnail "outerClass" $style "mode" $mode "loading" $loading) -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
{{- $page := .page -}}
|
{{- $page := .page -}}
|
||||||
@@ -49,6 +50,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 +70,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 "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 +87,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 "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)) }}
|
||||||
|
@@ -9,6 +9,7 @@
|
|||||||
"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".
|
||||||
"width" Optional responsive width of the tab group, either "50" or "100" (default).
|
"width" Optional responsive width of the tab group, either "50" or "100" (default).
|
||||||
|
"wrap" Optional flag to enable word wrapping of tab titles, defaults to false.
|
||||||
|
|
||||||
In addition, the following arguments are passed to the individual tabs.
|
In addition, the following arguments are passed to the individual tabs.
|
||||||
"class" Optional class attribute of the tab element, e.g. “w-50”.
|
"class" Optional class attribute of the tab element, e.g. “w-50”.
|
||||||
@@ -54,6 +55,7 @@
|
|||||||
{{- $title := .title -}}
|
{{- $title := .title -}}
|
||||||
{{- $class := .class -}}
|
{{- $class := .class -}}
|
||||||
{{- $color := .color -}}
|
{{- $color := .color -}}
|
||||||
|
{{- $wrap := .wrap | default false -}}
|
||||||
|
|
||||||
{{ $supportedFlags := slice "true" "false" -}}
|
{{ $supportedFlags := slice "true" "false" -}}
|
||||||
{{ $verticalParam := "false" -}}
|
{{ $verticalParam := "false" -}}
|
||||||
@@ -76,12 +78,20 @@
|
|||||||
{{ end -}}
|
{{ end -}}
|
||||||
{{ end -}}
|
{{ end -}}
|
||||||
|
|
||||||
|
{{- $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 pt-5 pb-5">
|
<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">
|
||||||
{{ if $vertical }}<div class="d-flex align-items-start">{{ end }}
|
{{ if $vertical }}<div class="d-flex align-items-start">{{ 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}}
|
||||||
<button class="nav-link text-nowrap{{ if $show }} active{{ end }}" id="nav-{{ $id }}-btn-{{ $index }}" data-bs-toggle="pill" data-bs-target="#nav-{{ $id }}-{{ $index }}"
|
<button class="nav-link {{ if not $wrap }} text-nowrap{{ end }}{{ if $show }} active{{ end }}" id="nav-{{ $id }}-btn-{{ $index }}" data-bs-toggle="pill" data-bs-target="#nav-{{ $id }}-{{ $index }}"
|
||||||
type="button" role="tab" aria-controls="nav-{{ $id }}-{{ $index }}" aria-selected="{{ if eq $index 0 }}true{{ else }}false{{ end }}">
|
type="button" role="tab" aria-controls="nav-{{ $id }}-{{ $index }}" aria-selected="{{ if eq $index 0 }}true{{ else }}false{{ end }}">
|
||||||
{{ $item.Title }}
|
{{ $item.Title }}
|
||||||
</button>
|
</button>
|
||||||
@@ -102,6 +112,7 @@
|
|||||||
"color" $color
|
"color" $color
|
||||||
"content" (partial "utilities/GetDescription.html" $item)
|
"content" (partial "utilities/GetDescription.html" $item)
|
||||||
"thumbnail" $thumbnail
|
"thumbnail" $thumbnail
|
||||||
|
"loading" $loading
|
||||||
) -}}
|
) -}}
|
||||||
{{- else -}}
|
{{- else -}}
|
||||||
{{- (or $item.Description $item.Content) -}}
|
{{- (or $item.Description $item.Content) -}}
|
||||||
|
@@ -14,7 +14,7 @@
|
|||||||
"logo" Optional address of the logo image, defaults to the parameter "logo" set in the "main" section of
|
"logo" Optional address of the logo image, defaults to the parameter "logo" set in the "main" section of
|
||||||
the site's parameter configuration.
|
the site's parameter configuration.
|
||||||
"title" Optional brand title, displayed when the logo is not set. Defaults to the site's title.
|
"title" Optional brand title, displayed when the logo is not set. Defaults to the site's title.
|
||||||
"class": Optional class attribute of the navbar container.
|
"class" Optional class attribute of the navbar container.
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<!-- Inline partial to render the color mode switcher -->
|
<!-- Inline partial to render the color mode switcher -->
|
||||||
@@ -25,25 +25,25 @@
|
|||||||
|
|
||||||
<li class="nav-item dropdown {{ if $collapsed }}d-{{ $size }}-none{{ else }}d-none d-{{ $size }}-block{{ end }}">
|
<li class="nav-item dropdown {{ if $collapsed }}d-{{ $size }}-none{{ else }}d-none d-{{ $size }}-block{{ end }}">
|
||||||
<a class="nav-link dropdown-toggle" href="#!" role="button" data-bs-toggle="dropdown" aria-label="{{ T "colorMode" }}" aria-expanded="false" id="{{ $id }}-theme{{ if $collapsed }}-collapsed{{ end }}">
|
<a class="nav-link dropdown-toggle" href="#!" role="button" data-bs-toggle="dropdown" aria-label="{{ T "colorMode" }}" aria-expanded="false" id="{{ $id }}-theme{{ if $collapsed }}-collapsed{{ end }}">
|
||||||
<span class="theme-icon-active">{{- partial "assets/icon.html" (dict "icon" "fas sun fa-fw") }}</span>{{ if $collapsed }} {{ T "colorMode" }} {{ end }}
|
<span class="theme-icon-active">{{- partial "assets/icon.html" (dict "icon" "fas sun fa-fw") }}</span>{{ if $collapsed }} {{ T "colorMode" }} {{ end }}
|
||||||
<span class="d-md-none"></span>
|
<span class="d-md-none"></span>
|
||||||
</a>
|
</a>
|
||||||
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="{{ $id }}-theme{{ if $collapsed }}-collapsed{{ end }}">
|
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="{{ $id }}-theme{{ if $collapsed }}-collapsed{{ end }}">
|
||||||
<li>
|
<li>
|
||||||
<a class="dropdown-item{{ if $collapsed }} switch-mode-collapsed{{ end }}" data-bs-theme-value="light" href="#!">
|
<a class="dropdown-item{{ if $collapsed }} switch-mode-collapsed{{ end }}" data-bs-theme-value="light" href="#!">
|
||||||
<span class="theme-icon">{{- partial "assets/icon.html" (dict "icon" "fas sun fa-fw") }}</span>
|
<span class="theme-icon">{{- partial "assets/icon.html" (dict "icon" "fas sun fa-fw" "spacing" false) }}</span>
|
||||||
{{ T "colorLight" }}
|
{{ T "colorLight" }}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a class="dropdown-item{{ if $collapsed }} switch-mode-collapsed{{ end }}" data-bs-theme-value="dark" href="#!">
|
<a class="dropdown-item{{ if $collapsed }} switch-mode-collapsed{{ end }}" data-bs-theme-value="dark" href="#!">
|
||||||
<span class="theme-icon">{{- partial "assets/icon.html" (dict "icon" "fas moon fa-fw") }}</span>
|
<span class="theme-icon">{{- partial "assets/icon.html" (dict "icon" "fas moon fa-fw" "spacing" false) }}</span>
|
||||||
{{ T "colorDark" }}
|
{{ T "colorDark" }}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a class="dropdown-item{{ if $collapsed }} switch-mode-collapsed{{ end }}" data-bs-theme-value="auto" href="#!">
|
<a class="dropdown-item{{ if $collapsed }} switch-mode-collapsed{{ end }}" data-bs-theme-value="auto" href="#!">
|
||||||
<span class="theme-icon">{{- partial "assets/icon.html" (dict "icon" "fas circle-half-stroke fa-fw" ) }}</span>
|
<span class="theme-icon">{{- partial "assets/icon.html" (dict "icon" "fas circle-half-stroke fa-fw" "spacing" false) }}</span>
|
||||||
{{ T "colorAuto" }}
|
{{ T "colorAuto" }}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
@@ -154,6 +154,7 @@
|
|||||||
{{- errorf "partial [assets/navbar.html] - Invalid value for param 'search': %s" $searchParam -}}
|
{{- errorf "partial [assets/navbar.html] - Invalid value for param 'search': %s" $searchParam -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
{{- $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 -}}
|
||||||
@@ -173,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 := "" -}}
|
||||||
@@ -221,7 +224,7 @@
|
|||||||
|
|
||||||
<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 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">
|
||||||
@@ -238,12 +241,14 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Insert the brand logo or name -->
|
<!-- Insert the brand logo or name -->
|
||||||
<a class="navbar-brand mx-auto" href="{{ site.Home.RelPermalink }}">
|
<a class="navbar-brand mx-auto" href="{{ site.Home.RelPermalink }}" aria-label="{{ T "home" }}">
|
||||||
{{- if (and $logoLight $logoDark) -}}
|
{{- if (and $logoLight $logoDark) -}}
|
||||||
<img src="{{if $absoluteURL }}{{ absURL $logoLight }}{{ else }}{{ $logoLight }}{{ end }}" class="d-none-dark" alt="{{ $title }} logo" height="30">
|
{{ $width := partial "utilities/GetWidth.html" (dict "path" $logoLight "height" 30) }}
|
||||||
<img src="{{if $absoluteURL }}{{ absURL $logoDark }}{{ else }}{{ $logoDark }}{{ end }}" class="d-none-light" alt="{{ $title }} logo" height="30">
|
<img src="{{if $absoluteURL }}{{ absURL $logoLight }}{{ else }}{{ $logoLight }}{{ end }}" class="d-none-dark" alt="{{ $title }} logo" height="30"{{ with $width }} width="{{ . }}"{{ end }}>
|
||||||
|
<img src="{{if $absoluteURL }}{{ absURL $logoDark }}{{ else }}{{ $logoDark }}{{ end }}" class="d-none-light" alt="{{ $title }} logo" height="30"{{ with $width }} width="{{ . }}"{{ end }}>
|
||||||
{{- else if $logo -}}
|
{{- else if $logo -}}
|
||||||
<img src="{{if $absoluteURL }}{{ absURL $logo }}{{ else }}{{ $logo }}{{ end }}" alt="{{ $title }} logo" height="30">
|
{{ $width := partial "utilities/GetWidth.html" (dict "path" $logo "height" 30) }}
|
||||||
|
<img src="{{if $absoluteURL }}{{ absURL $logo }}{{ else }}{{ $logo }}{{ end }}" alt="{{ $title }} logo" height="30"{{ with $width }} width="{{ . }}"{{ end }}>
|
||||||
{{- else -}}
|
{{- else -}}
|
||||||
<span class="fw-bold">{{ $title }}</span>
|
<span class="fw-bold">{{ $title }}</span>
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
@@ -261,15 +266,15 @@
|
|||||||
|
|
||||||
<div class="navbar-collapse collapse" id="{{ $id }}-collapse">
|
<div class="navbar-collapse collapse" id="{{ $id }}-collapse">
|
||||||
<!-- Insert search input -->
|
<!-- Insert search input -->
|
||||||
{{- if $search }}{{ partial "assets/search-input.html" -}}{{ end -}}
|
{{- if and $search (not $searchModal) }}{{ partial "assets/search-input.html" }}{{ end -}}
|
||||||
|
|
||||||
<!-- Render top-menu items (maximum depth of 2) -->
|
<!-- 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 -}}
|
||||||
@@ -286,15 +291,21 @@
|
|||||||
<li><hr class="dropdown-divider-bg"></li>
|
<li><hr class="dropdown-divider-bg"></li>
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
|
<!-- Insert version switcher -->
|
||||||
|
{{- if $enableVersions -}}
|
||||||
|
{{- partial "partials/navbar-versions.html" (dict "page" $page "size" $size "collapsed" true "id" .id) -}}
|
||||||
|
{{- partial "partials/navbar-versions.html" (dict "page" $page "size" $size "collapsed" false "id" .id) -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
<!-- Insert language switcher if applicable -->
|
<!-- Insert language switcher if applicable -->
|
||||||
{{- if $enableLanguage -}}
|
{{- if $enableLanguage -}}
|
||||||
{{- $currentLang := $page.Language.Lang -}}
|
{{- $currentLang := $page.Language.Lang -}}
|
||||||
<li class="nav-item dropdown">
|
<li class="nav-item dropdown">
|
||||||
<a class="nav-link dropdown-toggle d-{{ $size }}-none" href="#!" role="button" data-bs-toggle="dropdown" aria-label="{{ T "languageSwitcherLabel" }}" aria-expanded="false">
|
<a class="nav-link dropdown-toggle d-{{ $size }}-none" href="#!" role="button" data-bs-toggle="dropdown" aria-label="{{ T "languageSwitcherLabel" }}" aria-expanded="false">
|
||||||
{{- partial "assets/icon.html" (dict "icon" "fas globe fa-fw") }} {{ T "languageSwitcherLabel" }}
|
{{- partial "assets/icon.html" (dict "icon" "fas globe fa-fw" "spacing" false) }} {{ T "languageSwitcherLabel" }}
|
||||||
</a>
|
</a>
|
||||||
<a class="nav-link dropdown-toggle d-none d-{{ $size }}-block" href="#!" role="button" data-bs-toggle="dropdown" aria-label="{{ T "languageSwitcherLabel" }}" aria-expanded="false">
|
<a class="nav-link dropdown-toggle d-none d-{{ $size }}-block" href="#!" role="button" data-bs-toggle="dropdown" aria-label="{{ T "languageSwitcherLabel" }}" aria-expanded="false">
|
||||||
{{- partial "assets/icon.html" (dict "icon" "fas globe fa-fw") }}
|
{{- partial "assets/icon.html" (dict "icon" "fas globe fa-fw" "spacing" true) }}
|
||||||
</a>
|
</a>
|
||||||
<ul class="dropdown-menu dropdown-menu-end ">
|
<ul class="dropdown-menu dropdown-menu-end ">
|
||||||
{{- if $page.IsTranslated -}}
|
{{- if $page.IsTranslated -}}
|
||||||
@@ -310,25 +321,49 @@
|
|||||||
</li>
|
</li>
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
<!-- Insert version switcher -->
|
|
||||||
{{- if $enableVersions -}}
|
|
||||||
{{- partial "partials/navbar-versions.html" (dict "page" $page "size" $size "collapsed" true "id" .id) -}}
|
|
||||||
{{- partial "partials/navbar-versions.html" (dict "page" $page "size" $size "collapsed" false "id" .id) -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
<!-- Insert color mode switcher -->
|
<!-- Insert color mode switcher -->
|
||||||
{{- if $enableDarkMode -}}
|
{{- if $enableDarkMode -}}
|
||||||
<!-- Insert divider -->
|
{{- partial "partials/navbar-mode.html" (dict "size" $size "collapsed" true "id" .id) -}}
|
||||||
|
{{- partial "partials/navbar-mode.html" (dict "size" $size "collapsed" false "id" .id) -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
<!-- Insert modal search button -->
|
||||||
|
{{- if $searchModal }}
|
||||||
<li class="nav-item py-2 py-md-1 col-12 col-md-auto d-none d-{{ $size }}-block">
|
<li class="nav-item py-2 py-md-1 col-12 col-md-auto d-none d-{{ $size }}-block">
|
||||||
<div class="vr d-none d-md-flex h-100 mx-md-2"></div>
|
<div class="vr d-none d-md-flex h-100 mx-md-2"></div>
|
||||||
</li>
|
</li>
|
||||||
<li><hr class="dropdown-divider-bg"></li>
|
<li><hr class="dropdown-divider-bg"></li>
|
||||||
|
|
||||||
{{- partial "partials/navbar-mode.html" (dict "size" $size "collapsed" true "id" .id) -}}
|
<a class="nav-link d-{{ $size }}-none" href="#!" role="button" data-bs-toggle="modal" data-bs-target="#search-modal" aria-label="{{ T "ui_search" }}" aria-expanded="false">
|
||||||
{{- partial "partials/navbar-mode.html" (dict "size" $size "collapsed" false "id" .id) -}}
|
{{ partial "assets/icon.html" (dict "icon" "fas magnifying-glass fa-fw") }} {{ T "ui_search" }}
|
||||||
{{- end -}}
|
</a>
|
||||||
|
<a class="nav-link d-none d-{{ $size }}-block" href="#!" role="button" data-bs-toggle="modal" data-bs-target="#search-modal" aria-label="{{ T "ui_search" }}" aria-expanded="false">
|
||||||
|
{{ partial "assets/icon.html" (dict "icon" "fas magnifying-glass fa-fw") }}
|
||||||
|
</a>
|
||||||
|
{{ end -}}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{{/* Insert modal search element */}}
|
||||||
|
{{- if $searchModal }}
|
||||||
|
<div class="modal fade search-modal" tabindex="-1" id="search-modal" aria-labelledby="searchModalLabel" aria-hidden="true">
|
||||||
|
<div class="modal-dialog modal-dialog-centered modal-dialog-scrollable modal-lg">
|
||||||
|
<div class="modal-content h-50">
|
||||||
|
<div class="modal-header">
|
||||||
|
<div class="w-100">
|
||||||
|
<form class="search position-relative me-auto">
|
||||||
|
<input id="search-input-modal" class="search-input form-control is-search" tabindex="1" type="search" placeholder="{{ T "ui_search" }}..." aria-label="{{ T "ui_search" }}" autocomplete="off">
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="{{ T "close" }}"></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body p-2 search-background">
|
||||||
|
<div class="search-suggestions" data-no-results="{{ T "ui_no_results" }}"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{ end -}}
|
||||||
|
@@ -10,6 +10,6 @@
|
|||||||
{{- if $pageAlertMsg -}}
|
{{- if $pageAlertMsg -}}
|
||||||
<div id="page-alert" class="alert alert-primary alert-no-decoration fade show d-flex align-items-center small m-0 py-1" data-page-alert-version="{{ $version }}">
|
<div id="page-alert" class="alert alert-primary alert-no-decoration fade show d-flex align-items-center small m-0 py-1" data-page-alert-version="{{ $version }}">
|
||||||
<a href="{{ with $pageAlertURL }}{{ . }}{{ else }}#!{{ end }}" class="text-decoration-none flex-grow-1 text-center">{{ $pageAlertMsg }}</a>
|
<a href="{{ with $pageAlertURL }}{{ . }}{{ else }}#!{{ end }}" class="text-decoration-none flex-grow-1 text-center">{{ $pageAlertMsg }}</a>
|
||||||
<button id="page-alert-btn-close" type="button" class="btn-close" data-bs-dismiss="alert"></button>
|
<button id="page-alert-btn-close" type="button" class="btn-close" data-bs-dismiss="alert" aria-label="{{ T "close" }}"></button>
|
||||||
</div>
|
</div>
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
@@ -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 "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 "ratio" "1x1" "innerClass" "rounded-5" "loading" $loading) -}}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -20,27 +20,6 @@
|
|||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
<div class="container-fluid p-4 px-xxl-0">
|
{{ with $title }}<p id="{{ anchorize . }}" class="display-4 py-5{{ if and page.IsHome site.Params.home.centerHeadline }} text-center{{ end }}">{{ . }}</p>{{ end }}
|
||||||
{{ with $title }}<p class="display-4 mt-3{{ if and page.IsHome site.Params.home.centerHeadline }} text-center{{ end }}">{{ . }}</p>{{ end }}
|
{{ with $description }} <p class="lead mb-5">{{ . }}</p>{{ end }}
|
||||||
{{ with $description }} <p class="lead mb-5">{{ . }}</p>{{ end }}
|
{{ $content }}
|
||||||
{{- if $content -}}
|
|
||||||
<div class="row row-cols-1 row-cols-lg-3 pt-5">
|
|
||||||
<div class="col col-lg-3 d-none d-lg-block"></div>
|
|
||||||
<div class="col col-sm-12 col-lg-6 text-center">
|
|
||||||
<div class="row row-cols-1{{ if ne $sectionHeader "justify-content-center" }} row-cols-sm-2{{ end }} row-gap-5 p-0 align-items-center flex-fill">
|
|
||||||
{{- if eq $sectionHeader "justify-content-center" -}}
|
|
||||||
<div class="col p-0 w-50 mx-auto pb-5">{{ partial "partials/section-header-img.html" (dict "title" $title "thumbnail" $thumbnail "icon" $icon )}}</div>
|
|
||||||
<div class="col fs-md-5 fs-6">{{ $content }}</div>
|
|
||||||
{{- else if eq $sectionHeader "justify-content-end" -}}
|
|
||||||
<div class="col p-0">{{ partial "partials/section-header-img.html" (dict "title" $title "thumbnail" $thumbnail "icon" $icon )}}</div>
|
|
||||||
<div class="col fs-md-5 fs-6 text-sm-start">{{ $content }}</div>
|
|
||||||
{{- else -}}
|
|
||||||
<div class="col fs-md-5 fs-6 text-sm-start">{{ $content }}</div>
|
|
||||||
<div class="col p-0">{{ partial "partials/section-header-img.html" (dict "title" $title "thumbnail" $thumbnail "icon" $icon )}}</div>
|
|
||||||
{{- end -}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col col-lg-3 d-none d-lg-block"></div>
|
|
||||||
</div>
|
|
||||||
{{- end -}}
|
|
||||||
</div>
|
|
||||||
|
@@ -14,7 +14,9 @@
|
|||||||
{{- $moreTitle := .moreTitle -}}
|
{{- $moreTitle := .moreTitle -}}
|
||||||
{{- $sectionURL := .sectionURL -}}
|
{{- $sectionURL := .sectionURL -}}
|
||||||
{{- $nested := .nested | default true -}}
|
{{- $nested := .nested | default true -}}
|
||||||
|
{{- $simple := .simple | default false -}}
|
||||||
{{- $paginate := true -}}
|
{{- $paginate := true -}}
|
||||||
|
{{- $kind := .kind | default "regular" -}}
|
||||||
{{- $sort := "date" -}}
|
{{- $sort := "date" -}}
|
||||||
{{- $order := "desc" -}}
|
{{- $order := "desc" -}}
|
||||||
{{- $separator := false -}}
|
{{- $separator := false -}}
|
||||||
@@ -32,6 +34,9 @@
|
|||||||
{{- $type := "pills" -}}
|
{{- $type := "pills" -}}
|
||||||
{{- $vertical := "false" -}}
|
{{- $vertical := "false" -}}
|
||||||
{{- $width := 100 -}}
|
{{- $width := 100 -}}
|
||||||
|
{{- $ratio := "" -}}
|
||||||
|
{{- $wrap := false -}}
|
||||||
|
{{- $loading := .loading -}}
|
||||||
|
|
||||||
{{- with (index site.Params.sections $section) -}}
|
{{- with (index site.Params.sections $section) -}}
|
||||||
{{- with index . "title" }}{{ $title = or $.title . }}{{ end -}}
|
{{- with index . "title" }}{{ $title = or $.title . }}{{ end -}}
|
||||||
@@ -54,13 +59,25 @@
|
|||||||
{{- with index . "type" }}{{ $type = . }}{{ end -}}
|
{{- with index . "type" }}{{ $type = . }}{{ end -}}
|
||||||
{{- with index . "vertical" }}{{ $vertical = . }}{{ end -}}
|
{{- with index . "vertical" }}{{ $vertical = . }}{{ end -}}
|
||||||
{{- with index . "width" }}{{ $width = . }}{{ end -}}
|
{{- with index . "width" }}{{ $width = . }}{{ end -}}
|
||||||
|
{{- with index . "kind" }}{{ $kind = . }}{{ end -}}
|
||||||
|
{{- with index . "ratio" }}{{ $ratio = . }}{{ end -}}
|
||||||
|
{{- with index . "wrap" }}{{ $wrap = . }}{{ end -}}
|
||||||
{{- end -}}
|
{{- 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 }}
|
||||||
|
|
||||||
{{ $list := "" }}
|
{{ $list := slice }}
|
||||||
{{ if $nested }}
|
{{ if eq $kind "taxonomy" }}
|
||||||
|
{{ $filter := page.Params.filter }}
|
||||||
|
{{ with $filter }}
|
||||||
|
{{ with index site.Taxonomies $section $filter }}
|
||||||
|
{{ $list = .Pages }}
|
||||||
|
{{ end }}
|
||||||
|
{{ else }}
|
||||||
|
{{ $list = where site.Pages (printf ".Params.%s" $section) "!=" nil }}
|
||||||
|
{{ end }}
|
||||||
|
{{ else if $nested }}
|
||||||
{{ $list = where site.RegularPages "Type" "in" $section }}
|
{{ $list = where site.RegularPages "Type" "in" $section }}
|
||||||
{{ else if $home }}
|
{{ else if $home }}
|
||||||
{{ $sectionPage := site.GetPage "section" $section }}
|
{{ $sectionPage := site.GetPage "section" $section }}
|
||||||
@@ -88,23 +105,30 @@
|
|||||||
{{- $max = int (math.Min $homepage $max) -}}
|
{{- $max = int (math.Min $homepage $max) -}}
|
||||||
{{ end -}}
|
{{ end -}}
|
||||||
|
|
||||||
|
{{ if $simple }}
|
||||||
|
{{ $title = "" }}
|
||||||
|
{{ $background = "" }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
{{- $params := (dict
|
{{- $params := (dict
|
||||||
"page" $page
|
"page" $page
|
||||||
"list" $list
|
"list" $list
|
||||||
"title" $title
|
"title" $title
|
||||||
"icon" $icon
|
"icon" $icon
|
||||||
"thumbnail" $thumbnail
|
"thumbnail" $thumbnail
|
||||||
|
"ratio" $ratio
|
||||||
"sectionHeader" $sectionHeader
|
"sectionHeader" $sectionHeader
|
||||||
"description" $description
|
"description" $description
|
||||||
"content" $content
|
"content" $content
|
||||||
"class" $style
|
"class" $style
|
||||||
"color" $color
|
"color" $color
|
||||||
|
"loading" $loading
|
||||||
)
|
)
|
||||||
-}}
|
-}}
|
||||||
{{- $partial := "" -}}
|
{{- $partial := "" -}}
|
||||||
|
|
||||||
<div class="container-fluid {{ with $background }} bg-{{ . }}{{ end }}">
|
<div class="container-fluid {{ with $background }} bg-{{ . }}{{ end }} p-0">
|
||||||
<div class="container-xxl flex-fill p-0">
|
<div class="container-xxl p-4 px-xxl-0 pb-5">
|
||||||
{{- partial "assets/section-header.html" $params -}}
|
{{- partial "assets/section-header.html" $params -}}
|
||||||
|
|
||||||
{{ if eq $layout "card" }}
|
{{ if eq $layout "card" }}
|
||||||
@@ -131,6 +155,7 @@
|
|||||||
"type" $type
|
"type" $type
|
||||||
"vertical" $vertical
|
"vertical" $vertical
|
||||||
"width" $width
|
"width" $width
|
||||||
|
"wrap" $wrap
|
||||||
)
|
)
|
||||||
-}}
|
-}}
|
||||||
{{- else -}}
|
{{- else -}}
|
||||||
|
20
layouts/partials/assets/section-menu.html
Normal file
20
layouts/partials/assets/section-menu.html
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
{{- $page := . -}}
|
||||||
|
{{ $items := $page.Parent.Sections }}
|
||||||
|
{{ if not $page.Parent.Section }}
|
||||||
|
{{ $items = $page.Sections }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{- if gt (len $items) 0 }}
|
||||||
|
<nav class="navbar navbar-expand navbar-services p-0 fs-5">
|
||||||
|
<div class="container-fluid p-0 pb-3">
|
||||||
|
<div class="collapse navbar-collapse" id="navbarNav">
|
||||||
|
<ul class="navbar-nav">
|
||||||
|
{{- range $items }}
|
||||||
|
{{ $active := eq $page.RelPermalink .RelPermalink }}
|
||||||
|
<li class="nav-item"><a class="nav-link{{ if $active }} active{{ end }}" href="{{ .RelPermalink }}">{{ .Title }}</a></li>
|
||||||
|
{{- end }}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
{{- end }}
|
@@ -6,7 +6,7 @@
|
|||||||
{{- 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 -}}
|
||||||
<div class="py-3 text-body-secondary hstack gap-2">
|
<div class="py-3 text-body-secondary hstack gap-1">
|
||||||
{{ T "shareLink" "" }}
|
{{ T "shareLink" "" }}
|
||||||
{{- range $index, $item := $list -}}
|
{{- range $index, $item := $list -}}
|
||||||
{{- $url := $item.url -}}
|
{{- $url := $item.url -}}
|
||||||
@@ -21,11 +21,11 @@
|
|||||||
{{- $url = "#!" -}}
|
{{- $url = "#!" -}}
|
||||||
{{- partial "assets/toast.html" (dict "id" $target "message" (printf "%s %s" (T "link") (T "copiedToClipboard"))) -}}
|
{{- partial "assets/toast.html" (dict "id" $target "message" (printf "%s %s" (T "link") (T "copiedToClipboard"))) -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{ partial "assets/button.html" (dict "toast" $target "clipboard" $clipboard "href" $url "icon" (printf "%s fa-fw" $item.icon) "class" "btn-social p-0" "label" (T "shareLink" $item.name)) }}
|
{{ partial "assets/button.html" (dict "toast" $target "clipboard" $clipboard "href" $url "icon" (printf "%s fa-fw" $item.icon) "class" "btn-social p-0" "label" (T "shareLink" $item.name) "spacing" false) }}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{ if .Site.Params.sharing.webshare }}
|
{{ if .Site.Params.sharing.webshare }}
|
||||||
{{ $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"))) }}
|
{{ 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 -}}
|
||||||
</div>
|
</div>
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
@@ -9,9 +9,10 @@
|
|||||||
{{- $level := .level -}}
|
{{- $level := .level -}}
|
||||||
{{- $baseURL := .baseURL -}}
|
{{- $baseURL := .baseURL -}}
|
||||||
{{- $group := .group -}}
|
{{- $group := .group -}}
|
||||||
|
{{- $data := .menu -}}
|
||||||
|
|
||||||
{{- $doc_slug := $group.title | urlize -}}
|
{{- $doc_slug := $group.title | urlize -}}
|
||||||
{{- $href := printf "%s/" (relLangURL (path.Join $baseURL $doc_slug)) -}}
|
{{- $href := or $group.link (printf "%s/" (relLangURL (path.Join $baseURL $doc_slug))) -}}
|
||||||
{{- $collapsed := strings.HasPrefix $page.RelPermalink $href -}}
|
{{- $collapsed := strings.HasPrefix $page.RelPermalink $href -}}
|
||||||
|
|
||||||
<li class="mb-1">
|
<li class="mb-1">
|
||||||
@@ -28,6 +29,7 @@
|
|||||||
"level" (add $level 1)
|
"level" (add $level 1)
|
||||||
"baseURL" $href
|
"baseURL" $href
|
||||||
"group" $item
|
"group" $item
|
||||||
|
"menu" $data
|
||||||
)
|
)
|
||||||
}}
|
}}
|
||||||
{{- else -}}
|
{{- else -}}
|
||||||
@@ -37,6 +39,8 @@
|
|||||||
"level" $level
|
"level" $level
|
||||||
"baseURL" $href
|
"baseURL" $href
|
||||||
"title" $item.title
|
"title" $item.title
|
||||||
|
"href" $item.link
|
||||||
|
"menu" $data
|
||||||
)
|
)
|
||||||
}}
|
}}
|
||||||
{{ end -}}
|
{{ end -}}
|
||||||
@@ -47,15 +51,17 @@
|
|||||||
{{ end -}}
|
{{ end -}}
|
||||||
|
|
||||||
{{- define "partials/sidebar/item.html" -}}
|
{{- define "partials/sidebar/item.html" -}}
|
||||||
{{ $page := .page }}
|
{{- $page := .page -}}
|
||||||
{{ $sectionBreak := .sectionBreak }}
|
{{- $sectionBreak := .sectionBreak -}}
|
||||||
{{- $level := .level -}}
|
{{- $level := .level -}}
|
||||||
{{ $baseURL := .baseURL}}
|
{{- $baseURL := .baseURL -}}
|
||||||
{{ $title := .title}}
|
{{- $title := .title -}}
|
||||||
|
{{- $href := .href -}}
|
||||||
|
{{- $data := .menu -}}
|
||||||
|
|
||||||
{{- $doc_slug := $title | urlize -}}
|
{{- $doc_slug := $title | urlize -}}
|
||||||
{{- $href := printf "%s/" (relLangURL (path.Join $baseURL $doc_slug)) -}}
|
{{- $href := or $href (printf "%s/" (relLangURL (path.Join $baseURL $doc_slug))) -}}
|
||||||
{{ $active := eq $page.RelPermalink $href }}
|
{{- $active := eq (strings.TrimSuffix "/" $page.RelPermalink) (strings.TrimSuffix "/" $href) -}}
|
||||||
|
|
||||||
{{ if eq $level 0}}
|
{{ if eq $level 0}}
|
||||||
<li class="mt-1 mb-1 {{ if $sectionBreak }}border-top{{ end }}"></li>
|
<li class="mt-1 mb-1 {{ if $sectionBreak }}border-top{{ end }}"></li>
|
||||||
@@ -63,17 +69,27 @@
|
|||||||
<li>
|
<li>
|
||||||
<ul class="btn-toggle-nav list-unstyled fw-bold pb-1">
|
<ul class="btn-toggle-nav list-unstyled fw-bold pb-1">
|
||||||
<li>
|
<li>
|
||||||
<a href="{{ $href }}" class="sidebar-item text-decoration-none rounded {{ if $active }}active{{ end }}">
|
{{ $class := "sidebar-item text-decoration-none rounded" }}
|
||||||
{{ $title }}
|
{{ if $active }}{{ $class = printf "%s active" $class }}{{ end }}
|
||||||
</a>
|
{{ $link := partial "utilities/link.html" (dict "destination" $href "text" $title "class" $class "page" $page) }}
|
||||||
|
{{ if $link }}
|
||||||
|
{{ print $link | safeHTML }}
|
||||||
|
{{ else }}
|
||||||
|
{{- errorf "partial [utilities/sidebar.html] - Invalid link in file: %s" ($page.Scratch.Get "sidebarFilename") -}}
|
||||||
|
{{ end }}
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
{{ else }}
|
{{ else }}
|
||||||
<li>
|
<li>
|
||||||
<a href="{{ $href }}" class="sidebar-item text-decoration-none rounded small {{ if $active }}active{{ end }}">
|
{{ $class := "sidebar-item text-decoration-none rounded small" }}
|
||||||
{{ $title }}
|
{{ if $active }}{{ $class = printf "%s active" $class }}{{ end }}
|
||||||
</a>
|
{{ $link := partial "utilities/link.html" (dict "destination" $href "text" $title "class" $class "page" $page) }}
|
||||||
|
{{ if $link }}
|
||||||
|
{{ print $link | safeHTML }}
|
||||||
|
{{ else }}
|
||||||
|
{{- errorf "partial [utilities/sidebar.html] - Invalid link in file: %s" ($page.Scratch.Get "sidebarFilename") -}}
|
||||||
|
{{ end }}
|
||||||
</li>
|
</li>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end -}}
|
{{ end -}}
|
||||||
@@ -94,6 +110,7 @@
|
|||||||
"level" (add $level 1)
|
"level" (add $level 1)
|
||||||
"baseURL" $baseURL
|
"baseURL" $baseURL
|
||||||
"group" $item
|
"group" $item
|
||||||
|
"menu" $data
|
||||||
)
|
)
|
||||||
}}
|
}}
|
||||||
{{- else }}
|
{{- else }}
|
||||||
@@ -103,6 +120,8 @@
|
|||||||
"level" $level
|
"level" $level
|
||||||
"baseURL" $baseURL
|
"baseURL" $baseURL
|
||||||
"title" $item.title
|
"title" $item.title
|
||||||
|
"href" $item.link
|
||||||
|
"menu" $data
|
||||||
)
|
)
|
||||||
}}
|
}}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
@@ -25,7 +25,7 @@
|
|||||||
<div id="{{ $id }}" class="toast{{ with $class }} {{ . }}{{ end }}" role="alert" aria-live="assertive" aria-atomic="true">
|
<div id="{{ $id }}" class="toast{{ with $class }} {{ . }}{{ end }}" role="alert" aria-live="assertive" aria-atomic="true">
|
||||||
<div class="toast-header">
|
<div class="toast-header">
|
||||||
{{ with $header }}<strong class="me-auto">{{ . }}</strong>{{ end }}
|
{{ with $header }}<strong class="me-auto">{{ . }}</strong>{{ end }}
|
||||||
<button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>
|
<button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="{{ T "close" }}"></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="toast-body">{{ $message }}</div>
|
<div class="toast-body">{{ $message }}</div>
|
||||||
</div>
|
</div>
|
||||||
|
20
layouts/partials/assets/toc-main.html
Normal file
20
layouts/partials/assets/toc-main.html
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
{{ $headings := .headings | default slice }}
|
||||||
|
{{- range .Fragments.Headings }}
|
||||||
|
{{- range .Headings }}
|
||||||
|
{{- $headings = $headings | append .Title -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- if gt (len $headings) 1 }}
|
||||||
|
<nav class="navbar navbar-expand navbar-services p-0 fs-5">
|
||||||
|
<div class="container-fluid p-0 pb-3 border-bottom">
|
||||||
|
<div class="collapse navbar-collapse" id="navbarNav">
|
||||||
|
<ul class="navbar-nav">
|
||||||
|
{{- range $headings }}
|
||||||
|
<li class="nav-item"><a class="nav-link" href="#{{ anchorize . }}">{{ . }}</a></li>
|
||||||
|
{{- end }}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
{{- end }}
|
@@ -1,7 +1,17 @@
|
|||||||
{{ $items := len (findRE "<li.*?>(.|\n)*?</li>" .TableOfContents) -}}
|
{{- $page := .page -}}
|
||||||
{{ if (gt $items 1) -}}
|
{{- $download := .download -}}
|
||||||
|
|
||||||
|
{{ $items := len (findRE "<li.*?>(.|\n)*?</li>" $page.TableOfContents) -}}
|
||||||
|
{{ if or $download (gt $items 1) -}}
|
||||||
<div class="toc toc-sidebar mb-5 my-md-0 ps-xl-3 mb-lg-5 p-3 text-body-secondary sticky-top">
|
<div class="toc toc-sidebar mb-5 my-md-0 ps-xl-3 mb-lg-5 p-3 text-body-secondary sticky-top">
|
||||||
|
{{ with $download }}
|
||||||
|
<div class="mb-5">
|
||||||
|
{{ $attr := dict "download" (path.Base .) }}
|
||||||
|
{{ partial "assets/button.html" (dict "href" . "title" (T "download" ) "color" "primary" "outline" "true" "icon" "fas download" "attributes" $attr) }}
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
<strong class="d-block h6 my-2 pb-2 border-bottom">{{ T "toc" }}</strong>
|
<strong class="d-block h6 my-2 pb-2 border-bottom">{{ T "toc" }}</strong>
|
||||||
{{ .TableOfContents }}
|
{{ $page.TableOfContents }}
|
||||||
</div>
|
</div>
|
||||||
{{ end -}}
|
{{ end -}}
|
@@ -6,6 +6,14 @@
|
|||||||
{{- $core := .core | default false -}}
|
{{- $core := .core | default false -}}
|
||||||
{{- $skipTemplate := .skipTemplate | default false -}}
|
{{- $skipTemplate := .skipTemplate | default false -}}
|
||||||
|
|
||||||
|
{{- $state := "async" -}}
|
||||||
|
{{- with .state }}{{ $state = . }}{{ end -}}
|
||||||
|
{{- if or $header (eq $state "immediate") }}{{ $state = "" }}{{ end -}}
|
||||||
|
{{- $supportedStates := slice "defer" "async" "immediate" -}}
|
||||||
|
{{- if and $state (not (in $supportedStates $state)) -}}
|
||||||
|
{{- errorf "partial [footer/script.html] - Invalid value for param 'processing': %s" $state -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
{{- $modules := "" -}}
|
{{- $modules := "" -}}
|
||||||
{{ if $core }}
|
{{ if $core }}
|
||||||
{{- $modules = site.Params.modules.core -}}
|
{{- $modules = site.Params.modules.core -}}
|
||||||
@@ -26,9 +34,9 @@
|
|||||||
|
|
||||||
{{- if gt (len $js.Content) 0 -}}
|
{{- if gt (len $js.Content) 0 -}}
|
||||||
{{- if not hugo.IsProduction -}}
|
{{- if not hugo.IsProduction -}}
|
||||||
<script src="{{ if $absoluteURL }}{{ $js.Permalink }}{{ else }}{{ $js.RelPermalink }}{{ end }}"></script>
|
<script src="{{ if $absoluteURL }}{{ $js.Permalink }}{{ else }}{{ $js.RelPermalink }}{{ end }}"{{ with $state }} {{ . | safeHTMLAttr }}{{ end }}></script>
|
||||||
{{ else -}}
|
{{ else -}}
|
||||||
{{ $js = $js | minify | fingerprint -}}
|
{{ $js = $js | minify | fingerprint -}}
|
||||||
<script src="{{ if $absoluteURL }}{{ $js.Permalink }}{{ else }}{{ $js.RelPermalink }}{{ end }}" integrity="{{ $js.Data.Integrity }}" crossorigin="anonymous"></script>
|
<script src="{{ if $absoluteURL }}{{ $js.Permalink }}{{ else }}{{ $js.RelPermalink }}{{ end }}" integrity="{{ $js.Data.Integrity }}" crossorigin="anonymous"{{ with $state}} {{ . | safeHTMLAttr }}{{ end }}></script>
|
||||||
{{ end -}}
|
{{ end -}}
|
||||||
{{ end -}}
|
{{ end -}}
|
||||||
|
@@ -7,27 +7,29 @@
|
|||||||
|
|
||||||
{{ if gt .Site.Menus.social 0 }}
|
{{ if gt .Site.Menus.social 0 }}
|
||||||
{{- $tab := site.Params.main.externalLinks.tab -}}
|
{{- $tab := site.Params.main.externalLinks.tab -}}
|
||||||
<div class="container-fluid">
|
<div class="container-fluid bg-primary bg-opacity-{{ .Site.Params.style.themeOpacity | default "25" | safeHTML }}">
|
||||||
<div class="row row-cols-1 row-cols-sm-4 bg-primary p-3 bg-opacity-{{ .Site.Params.style.themeOpacity | default "25" | safeHTML }} align-items-center">
|
<div class="container-xxl px-4 px-xxl-0">
|
||||||
<div class="col col-md-2 d-none d-md-block"></div>
|
<div class="row row-cols-2 py-3 align-items-center">
|
||||||
<div class="col col-sm-6 col-md-4">
|
<div class="col col-6">
|
||||||
{{ if gt .Site.Menus.social 0 }}
|
<div class="row justify-content-end p-0">
|
||||||
<div class="fs-3 fw-bold">{{ or .Site.Params.footer.socialTitle .Site.Params.social.title }}</div>
|
<div class="col-12 col-md-8 p-0">
|
||||||
<p>{{ or .Site.Params.footer.socialCaption .Site.Params.social.caption }}</p>
|
<div class="fs-3 fw-bold">{{ or .Site.Params.footer.socialTitle .Site.Params.social.title }}</div>
|
||||||
{{ end }}
|
<p>{{ or .Site.Params.footer.socialCaption .Site.Params.social.caption }}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col col-6 text-sm-start">
|
||||||
|
{{ range .Site.Menus.social -}}
|
||||||
|
<a href="{{ .URL }}" {{ if $tab }} target="_blank" rel="noopener noreferrer"{{ end }} aria-label="{{ .Name | safeHTML }}" class="text-decoration-none link-secondary d-inline p-2">
|
||||||
|
{{ if hasPrefix .Pre "<i" }}
|
||||||
|
{{ .Pre | safeHTML }}
|
||||||
|
{{ else }}
|
||||||
|
{{ partial "assets/icon.html" (dict "icon" (printf "%s fa-2x" .Pre) )}}
|
||||||
|
{{ end }}
|
||||||
|
</a>
|
||||||
|
{{ end -}}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col text-sm-start text-center col-sm-6 col-md-4">
|
|
||||||
{{ range .Site.Menus.social -}}
|
|
||||||
<a href="{{ .URL }}" {{ if $tab }} target="_blank" rel="noopener noreferrer"{{ end }} aria-label="{{ .Name | safeHTML }}" class="text-decoration-none link-secondary d-inline p-2">
|
|
||||||
{{ if hasPrefix .Pre "<i" }}
|
|
||||||
{{ .Pre | safeHTML }}
|
|
||||||
{{ else }}
|
|
||||||
{{ partial "assets/icon.html" (dict "icon" (printf "%s fa-2x" .Pre) )}}
|
|
||||||
{{ end }}
|
|
||||||
</a>
|
|
||||||
{{ end -}}
|
|
||||||
</div>
|
|
||||||
<div class="col col-md-2 d-none d-md-block"></div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
@@ -3,7 +3,7 @@
|
|||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
{{ hugo.Generator}}
|
{{ hugo.Generator}}
|
||||||
{{ partial "head/stylesheet.html" -}}
|
{{ partialCached "head/stylesheet-core.html" . -}}
|
||||||
{{- $modules := site.Params.modules.optional | intersect .Page.Params.modules -}}
|
{{- $modules := site.Params.modules.optional | intersect .Page.Params.modules -}}
|
||||||
{{- range $index, $mod := $modules -}}
|
{{- range $index, $mod := $modules -}}
|
||||||
{{- $source := printf "scss/%s.scss" $mod -}}
|
{{- $source := printf "scss/%s.scss" $mod -}}
|
||||||
|
3
layouts/partials/head/stylesheet-core.html
Normal file
3
layouts/partials/head/stylesheet-core.html
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{{/* Wrapper for the stylesheet partial with default arguments. */}}
|
||||||
|
{{/* Added to avoid interference with the argument of partialCached. */}}
|
||||||
|
{{ partial "head/stylesheet.html" -}}
|
@@ -1,5 +1,14 @@
|
|||||||
|
{{- $transpiler := site.Params.main.build.transpiler | default "libsass" -}}
|
||||||
|
{{- $supportedTranspilers := slice "libsass" "dartsass" -}}
|
||||||
|
{{- if not (in $supportedTranspilers $transpiler) -}}
|
||||||
|
{{- errorf "partial [head/stylesheet.html] - Invalid value for param 'transpiler': %s" $transpiler -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
|
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
|
||||||
{{- $source := .source | default "scss/app.scss" -}}
|
{{- $source := .source }}
|
||||||
|
{{- if not $source -}}
|
||||||
|
{{- if eq $transpiler "dartsass" }}{{ $source = "scss/app-dart.scss" }}{{ else }}{{ $source = "scss/app.scss" }}{{ end -}}
|
||||||
|
{{- end -}}
|
||||||
{{- $target := .target | default "css/main.css" -}}
|
{{- $target := .target | default "css/main.css" -}}
|
||||||
{{- $page := .page -}}
|
{{- $page := .page -}}
|
||||||
{{- $core := .core | default true -}}
|
{{- $core := .core | default true -}}
|
||||||
@@ -21,6 +30,7 @@
|
|||||||
{{- if site.Params.navigation.fixed }}{{ $navbarOffset = site.Params.navigation.offset | default "4em" }}{{ end }}
|
{{- if site.Params.navigation.fixed }}{{ $navbarOffset = site.Params.navigation.offset | default "4em" }}{{ end }}
|
||||||
{{- $vars := dict
|
{{- $vars := dict
|
||||||
"theme-font" (default "Inter" site.Params.style.themeFont)
|
"theme-font" (default "Inter" site.Params.style.themeFont)
|
||||||
|
"font-size-base" (default "1rem" site.Params.style.fontSizeBase)
|
||||||
"primary" (default "#007bff" site.Params.style.primary)
|
"primary" (default "#007bff" site.Params.style.primary)
|
||||||
"secondary" (default "#6c757d" site.Params.style.secondary)
|
"secondary" (default "#6c757d" site.Params.style.secondary)
|
||||||
"success" (default "#198754" site.Params.style.success)
|
"success" (default "#198754" site.Params.style.success)
|
||||||
@@ -29,6 +39,7 @@
|
|||||||
"danger" (default "#dc3545" site.Params.style.danger)
|
"danger" (default "#dc3545" site.Params.style.danger)
|
||||||
"light" (default "#f8f9fa" site.Params.style.light)
|
"light" (default "#f8f9fa" site.Params.style.light)
|
||||||
"dark" (default "#212529" site.Params.style.dark)
|
"dark" (default "#212529" site.Params.style.dark)
|
||||||
|
"navbar-height" (site.Params.navigation.offset | default "4em")
|
||||||
"navbar-offset" $navbarOffset
|
"navbar-offset" $navbarOffset
|
||||||
"enable-dark-mode" (printf "%t" ((default true site.Params.main.enableDarkMode)))
|
"enable-dark-mode" (printf "%t" ((default true site.Params.main.enableDarkMode)))
|
||||||
"import-fonts" (printf "%t" (not (hasPrefix (lower site.Params.style.themeFontPath) "http")))
|
"import-fonts" (printf "%t" (not (hasPrefix (lower site.Params.style.themeFontPath) "http")))
|
||||||
@@ -36,22 +47,24 @@
|
|||||||
"dark-mode-tint" (default "0%" site.Params.style.darkModeTint)
|
"dark-mode-tint" (default "0%" site.Params.style.darkModeTint)
|
||||||
-}}
|
-}}
|
||||||
|
|
||||||
{{- $options := (dict "transpiler" "libsass" "targetPath" $target "enableSourceMap" (not hugo.IsProduction) "vars" $vars) -}}
|
{{- $options := (dict "transpiler" $transpiler "targetPath" $target "enableSourceMap" (not hugo.IsProduction) "vars" $vars) -}}
|
||||||
{{- $bundle := partial "utilities/bundle" (dict "match" $source "filename" (printf "scss/bundle-%d.scss" now.UnixNano) "modules" $modules "basepath" "scss" "debugging" site.Params.debugging.showSCSS) -}}
|
{{- $bundle := partial "utilities/bundle" (dict "match" $source "filename" (printf "scss/bundle-%d.scss" now.UnixNano) "modules" $modules "basepath" "scss" "debugging" site.Params.debugging.showSCSS) -}}
|
||||||
|
|
||||||
{{- $css := $bundle | resources.ExecuteAsTemplate $target . | toCSS $options -}}
|
{{- if gt ($bundle.Content | len) 0 }}
|
||||||
|
{{- $css := $bundle | resources.ExecuteAsTemplate $target . | toCSS $options -}}
|
||||||
|
|
||||||
{{ if $core }}
|
{{ if $core }}
|
||||||
{{- partial "head/icons.html" (dict "css" $css) -}}
|
{{- partial "head/icons.html" (dict "css" $css) -}}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{- if site.Params.style.purge -}}
|
{{- if site.Params.style.purge -}}
|
||||||
{{- $post_options := dict "config" "config" -}}
|
{{- $post_options := dict "config" "config" "noMap" hugo.IsProduction -}}
|
||||||
{{- $css = $css | resources.PostCSS $post_options -}}
|
{{- $css = $css | resources.PostCSS $post_options -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
{{- if not hugo.IsProduction -}}
|
{{- if not hugo.IsProduction -}}
|
||||||
<link rel="stylesheet" href="{{ if $absoluteURL }}{{ $css.Permalink }}{{ else }}{{ $css.RelPermalink }}{{ end }}">
|
<link rel="stylesheet" href="{{ if $absoluteURL }}{{ $css.Permalink }}{{ else }}{{ $css.RelPermalink }}{{ end }}">
|
||||||
{{- else -}}
|
{{- else -}}
|
||||||
{{- $css = $css | fingerprint | resources.PostProcess -}}
|
{{- $css = $css | minify | fingerprint | resources.PostProcess -}}
|
||||||
<link rel="stylesheet" href="{{ if $absoluteURL }}{{ $css.Permalink }}{{ else }}{{ $css.RelPermalink }}{{ end }}" integrity="{{ $css.Data.Integrity }}" crossorigin="anonymous">
|
<link rel="stylesheet" href="{{ if $absoluteURL }}{{ $css.Permalink }}{{ else }}{{ $css.RelPermalink }}{{ end }}" integrity="{{ $css.Data.Integrity }}" crossorigin="anonymous">
|
||||||
|
{{- end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
@@ -1,21 +0,0 @@
|
|||||||
<div class="container-fluid flex-fill feature">
|
|
||||||
<div class="row row-cols-1 row-cols-sm-4 h-100 bg-primary px-4 py-5 bg-opacity-{{ .Site.Params.style.themeOpacity | default "25" | safeHTML }} align-items-center">
|
|
||||||
<div class="col col-lg-2 d-none d-lg-block bg-info order-1"></div>
|
|
||||||
<div class="col col-sm-6 col-lg-4 text-center text-sm-start order-3 order-sm-2">
|
|
||||||
<p class="display-4">{{ .Title }}</p>
|
|
||||||
<p>{{ .Content }}<p>
|
|
||||||
</div>
|
|
||||||
<div class="col text-sm-start text-center col-sm-6 col-lg-4 order-2 order-sm-3">
|
|
||||||
{{- $thumbnail := (or (and (reflect.IsMap .Params.Thumbnail) .Params.Thumbnail.url) .Params.Thumbnail) -}}
|
|
||||||
{{- $thumbnail = or $thumbnail .Site.Params.home.featurePhoto -}}
|
|
||||||
{{ if .Site.Params.home.featurePhoto }}
|
|
||||||
{{ warnf "DEPRECATED: parameter `Params.home.featurePhoto` has been deprecated in release v0.18"}}
|
|
||||||
{{ end }}
|
|
||||||
{{- if $thumbnail -}}
|
|
||||||
{{- partial "assets/image.html" (dict "url" $thumbnail "ratio" "16x9" "outerClass" "img-wrap" "innerClass" "rounded" "title" .Site.Title) -}}
|
|
||||||
{{ end }}
|
|
||||||
<div class="pb-5 d-block d-sm-none"></div>
|
|
||||||
</div>
|
|
||||||
<div class="col col-lg-2 d-none d-lg-block bg-info order-4"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
94
layouts/partials/list/featured.html
Normal file
94
layouts/partials/list/featured.html
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
{{- $page := .page -}}
|
||||||
|
{{- $headings := .headings -}}
|
||||||
|
{{- $orientation := .orientation | default "stacked" -}}
|
||||||
|
{{- $actions := .actions -}}
|
||||||
|
{{- $width := .width | default 6 }}
|
||||||
|
{{- if or (lt $width 1) (gt $width 12) -}}
|
||||||
|
{{- $width = 6 -}}
|
||||||
|
{{- warnf "partial [list/featured.html] - Invalid column width: %d" $width -}}
|
||||||
|
{{ end -}}
|
||||||
|
{{- $justify := .justify | default "center" -}}
|
||||||
|
{{- $supportedJustify := slice "start" "end" "center" "between" "around" "evenly" -}}
|
||||||
|
{{- if not (in $supportedJustify $justify) -}}
|
||||||
|
{{- errorf "partial [list/featured.html] - Invalid value for param 'justify': %s" $justify -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- $align := .align | default "center" -}}
|
||||||
|
{{- $supportedAlign := slice "start" "end" "center" -}}
|
||||||
|
{{- if not (in $supportedAlign $align) -}}
|
||||||
|
{{- errorf "partial [list/featured.html] - Invalid value for param 'align': %s" $align -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- $breadcrumb := and (not $page.IsHome) site.Params.navigation.breadcrumb -}}
|
||||||
|
|
||||||
|
{{- define "partials/list/featured-body.html" }}
|
||||||
|
{{- $page := .page -}}
|
||||||
|
{{- $headings := .headings -}}
|
||||||
|
{{- $orientation := .orientation | default "stacked" -}}
|
||||||
|
{{- $actions := .actions -}}
|
||||||
|
{{- $align := .align | default "center" -}}
|
||||||
|
|
||||||
|
<div class="text-{{ $align }}">
|
||||||
|
{{ with $page.Title }}<p class="display-4">{{ . }}</p>{{ end }}
|
||||||
|
<span class="fs-5 text-muted">{{ $page.Description }}</span>
|
||||||
|
|
||||||
|
{{ if $actions }}
|
||||||
|
{{- $actions = sort $actions "weight" "asc" -}}
|
||||||
|
<div class="hstack{{ if gt (len $actions) 1 }} gap-1{{ end }} justify-content-{{ $align}} pt-5 pt-md-3">
|
||||||
|
{{ range $actions }}
|
||||||
|
{{ partial "assets/button.html" (dict "href" .url "icon" .icon "title" .title "outline" .outline "order" "last" "justify" "start") }}
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- define "partials/list/featured-illustration.html" }}
|
||||||
|
{{- $page := .page -}}
|
||||||
|
{{- $style := printf "img-wrap mx-auto mx-md-0 %s" .style -}}
|
||||||
|
|
||||||
|
{{ if $page.Params.icon }}
|
||||||
|
{{- $icon := (or (and (reflect.IsMap $page.Params.Icon) $page.Params.Icon.url) $page.Params.Icon) -}}
|
||||||
|
{{- $mode := and (reflect.IsMap $page.Params.Icon) $page.Params.Icon.mode -}}
|
||||||
|
{{ if eq (lower (path.Ext $icon)) ".json" }}
|
||||||
|
{{ partial "assets/animation.html" (dict "data" $icon "mode" $mode "loop" false "hover" true "class" "col-6 mx-auto text-center") }}
|
||||||
|
{{ else }}
|
||||||
|
{{ partial "assets/icon.html" (dict "icon" "mode" $mode $icon "wrapper" "col-6 mx-auto text-center")}}
|
||||||
|
{{ end }}
|
||||||
|
{{ else }}
|
||||||
|
{{- $thumbnail := (or (and (reflect.IsMap $page.Params.Thumbnail) $page.Params.Thumbnail.url) $page.Params.Thumbnail) -}}
|
||||||
|
{{- if $thumbnail }}
|
||||||
|
{{ partial "assets/image.html" (dict "url" $thumbnail "ratio" "16x9" "outerClass" $style "innerClass" "rounded" "title" $page.Site.Title) }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
<div class="container-fluid p-0 {{ with site.Params.home.feature.color }} bg-{{ . }} bg-opacity-{{ site.Params.style.themeOpacity | default "25" | safeHTML }}{{ end }}">
|
||||||
|
<div class="container-xxl {{ if $breadcrumb }} pb-4 px-4 {{ else }} p-4 {{ end }} px-xxl-0 {{ if site.Params.home.fullCover }} fullcover{{ end }} d-flex flex-column">
|
||||||
|
{{ if $breadcrumb }}
|
||||||
|
<div>{{ partial "assets/breadcrumb.html" $page }}</div>
|
||||||
|
{{ end -}}
|
||||||
|
|
||||||
|
{{ if eq $orientation "stacked" }}
|
||||||
|
<div class="row justify-content-center flex-fill">
|
||||||
|
<div class="col-12 col-md-{{ $width }} m-auto text-center">
|
||||||
|
{{ partial "partials/list/featured-illustration.html" (dict "page" $page "style" "pb-4") }}
|
||||||
|
{{ partial "partials/list/featured-body.html" (dict "page" $page "headings" $headings "orientation" $orientation "actions" $actions) }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{ else }}
|
||||||
|
<div class="row row-cols-1 row-cols-md-2 justify-content-{{ $justify }} flex-fill">
|
||||||
|
<div class="col col-12 col-md-{{ $width }} order-1 order-md-0 my-md-auto">
|
||||||
|
{{ partial "partials/list/featured-body.html" (dict "page" $page "headings" $headings "orientation" $orientation "actions" $actions "align" $align) }}
|
||||||
|
</div>
|
||||||
|
<div class="col col-12 col-md-{{ if gt $width 6 }}{{ sub 12 $width }}{{ else }}{{ $width }}{{ end }} order-0 order-md-1 text-center my-md-auto align-self-end">
|
||||||
|
{{ partial "partials/list/featured-illustration.html" (dict "page" $page "style" "pb-4 pb-md-0") }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ with $headings }}
|
||||||
|
<div class="col col-12 p-0 pt-5">
|
||||||
|
{{ partial "assets/toc-main.html" (dict "headings" .) }}
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
</div>
|
35
layouts/partials/single/thumbnail.html
Normal file
35
layouts/partials/single/thumbnail.html
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
{{- $thumbnail := "" -}}
|
||||||
|
{{- $credits := "" -}}
|
||||||
|
|
||||||
|
{{- if reflect.IsMap .Params.Thumbnail -}}
|
||||||
|
{{- $thumbnail = .Params.Thumbnail.url -}}
|
||||||
|
{{- $author := "" -}}
|
||||||
|
{{- if and .Params.Thumbnail.authorURL "text" .Params.Thumbnail.author }}
|
||||||
|
{{- $author = partial "utilities/link" (dict "destination" .Params.Thumbnail.authorURL "text" .Params.Thumbnail.author) -}}
|
||||||
|
{{- else if .Params.Thumbnail.author }}
|
||||||
|
{{- $author = .Params.Thumbnail.author -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- $origin := "" -}}
|
||||||
|
{{- if and .Params.Thumbnail.originURL "text" .Params.Thumbnail.origin }}
|
||||||
|
{{- $origin = partial "utilities/link" (dict "destination" .Params.Thumbnail.originURL "text" .Params.Thumbnail.origin) -}}
|
||||||
|
{{- else if .Params.Thumbnail.origin }}
|
||||||
|
{{- $origin = .Params.Thumbnail.origin -}}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- if and $author $origin }}
|
||||||
|
{{ $credits = printf (T "photoFull") $author $origin }}
|
||||||
|
{{ else if $author }}
|
||||||
|
{{ $credits = T "photoShort" $author }}
|
||||||
|
{{ end }}
|
||||||
|
{{ else }}
|
||||||
|
{{- $thumbnail = .Params.Thumbnail -}}
|
||||||
|
{{ if or .Params.photoCredits .Params.photoSource }}
|
||||||
|
{{ warnf "DEPRECATED: frontmatter variables `photoCredits` and `photoSource` have been deprecated in release v0.18: %s" .RelPermalink }}
|
||||||
|
{{ end }}
|
||||||
|
{{- if and .Params.photoCredits .Params.PhotoSource }}{{ $credits = printf (T "photoFull") .Params.photoCredits .Params.PhotoSource }}{{ end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{ if $thumbnail -}}
|
||||||
|
{{- partial "assets/image.html" (dict "url" $thumbnail "ratio" "21x9" "outerClass" "img-wrap" "innerClass" "rounded" "title" .Params.title "caption" $credits) -}}
|
||||||
|
{{ end -}}
|
@@ -1,12 +1,17 @@
|
|||||||
{{- $page := .page -}}
|
{{- $page := .page -}}
|
||||||
{{- $version := .version -}}
|
{{- $version := .version -}}
|
||||||
|
{{- $sidebarFilename := "" -}}
|
||||||
|
|
||||||
{{- $menu := "" -}}
|
{{- $menu := "" -}}
|
||||||
{{- if $page.IsPage -}}
|
{{- if $page.IsPage -}}
|
||||||
{{- $menu = index site.Data (printf "%s-%s" $page.Section $version) -}}
|
{{- $sidebarFilename = printf "%s-%s" $page.Section $version -}}
|
||||||
|
{{- $menu = index site.Data $sidebarFilename -}}
|
||||||
{{ if not $menu }}
|
{{ if not $menu }}
|
||||||
{{ $menu = index site.Data $page.Section }}
|
{{- $sidebarFilename = $page.Section -}}
|
||||||
|
{{ $menu = index site.Data $sidebarFilename }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
|
{{ if $menu }}{{ with $sidebarFilename }}{{ $page.Scratch.Set "sidebarFilename" (path.Join "data" .) }}{{ end }}{{ end -}}
|
||||||
|
|
||||||
{{- return $menu -}}
|
{{- return $menu -}}
|
33
layouts/partials/utilities/GetPage.html
Normal file
33
layouts/partials/utilities/GetPage.html
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
{{- $ref := "" -}}
|
||||||
|
{{- $anchor := "" -}}
|
||||||
|
|
||||||
|
{{ $url := .url }}
|
||||||
|
{{ if not $url }}
|
||||||
|
{{- errorf "partial [utilities/GetPage.html] - Expected param 'url'" -}}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ $page := .page }}
|
||||||
|
{{ if not $page }}
|
||||||
|
{{- errorf "partial [utilities/GetPage.html] - Expected param 'page'" -}}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{- $isExternal := ne (urls.Parse (absURL $url)).Host (urls.Parse site.BaseURL).Host -}}
|
||||||
|
{{- if not $isExternal -}}
|
||||||
|
{{- $ref = $page.GetPage $url -}}
|
||||||
|
{{ if not $ref }}
|
||||||
|
{{ $ref = (index (where $page.Site.AllPages "RelPermalink" (printf "%s/" (strings.TrimSuffix "/" $url))) 0)}}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{- if not $ref }}
|
||||||
|
{{- $segments := split $url "/" -}}
|
||||||
|
{{- if and (hasPrefix $url "/") (gt (len $segments) 1) -}}
|
||||||
|
{{- $prefix := index $segments 1 -}}
|
||||||
|
{{ with index (where site.Sites "Language.Lang" $prefix) 0 }}
|
||||||
|
{{- $path := printf "/%s" (strings.TrimPrefix (printf "/%s/" $prefix) $url) }}
|
||||||
|
{{- $ref = .GetPage $path -}}
|
||||||
|
{{ end }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{ return $ref }}
|
78
layouts/partials/utilities/GetSections.html
Normal file
78
layouts/partials/utilities/GetSections.html
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
{{- $page := .page -}}
|
||||||
|
{{- $loading := .loading -}}
|
||||||
|
|
||||||
|
{{/* Add title for current page */}}
|
||||||
|
{{- $items := slice -}}
|
||||||
|
{{ $items = $items | append (dict "title" .Title "content" "" )}}
|
||||||
|
|
||||||
|
{{/* Identify page sections */}}
|
||||||
|
{{- $sections := slice -}}
|
||||||
|
{{- $sections = $sections | append $page.Type -}}
|
||||||
|
{{ with $page.Params.sections }}
|
||||||
|
{{ $sections = $sections | append . }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ if $page.IsHome }}
|
||||||
|
{{- if not $page.Params.sections -}}
|
||||||
|
{{- with site.Params.home.sections }}
|
||||||
|
{{ $sections = $sections | append . }}
|
||||||
|
{{ else }}
|
||||||
|
{{ range $section := site.Sections }}
|
||||||
|
{{ $sections = $sections | append $section.Type }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{- end -}}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{/* Generate title and content for each section */}}
|
||||||
|
{{- range $index, $section := $sections -}}
|
||||||
|
{{- $sectionPage := site.GetPage "section" $section -}}
|
||||||
|
{{- $sectionURL := $sectionPage.RelPermalink -}}
|
||||||
|
{{ with $sectionPage.Params.redirect}}
|
||||||
|
{{ $target := partial "utilities/GetPage.html" (dict "url" . "page" $page) }}
|
||||||
|
{{- if not $target -}}
|
||||||
|
{{ if eq (printf "%T" $page.File) "*hugolib.fileInfo"}}
|
||||||
|
{{- errorf "Cannot find redirect target on page '%s': %s" $page.File . -}}
|
||||||
|
{{ else }}
|
||||||
|
{{- errorf "Cannot find redirect target: %s" . -}}
|
||||||
|
{{ end }}
|
||||||
|
{{ else }}
|
||||||
|
{{- $sectionURL = $target.RelPermalink -}}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{- $title := or $sectionPage.Title $sectionPage.Type -}}
|
||||||
|
|
||||||
|
{{- with (index site.Params.sections $section) -}}
|
||||||
|
{{- with index . "title" }}{{ $title = or . $title }}{{ end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- $thumbnail := (or (and (reflect.IsMap $sectionPage.Params.Thumbnail) $sectionPage.Params.Thumbnail.url) $sectionPage.Params.Thumbnail) -}}
|
||||||
|
{{- $icon := $sectionPage.Params.Icon -}}
|
||||||
|
{{- $content := $sectionPage.Content -}}
|
||||||
|
{{- $sectionTitle := strings.FirstUpper $sectionPage.Type -}}
|
||||||
|
{{- $moreTitle := "" -}}
|
||||||
|
{{- with (index site.Params.sections $section) -}}
|
||||||
|
{{- with index . "reference" }}{{ $moreTitle = . }}{{ end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- $moreTitle = or $moreTitle (printf (T "more" (pluralize $sectionTitle))) -}}
|
||||||
|
|
||||||
|
{{- $sectionContent := trim (partial "assets/section-list.html" (dict
|
||||||
|
"page" $page
|
||||||
|
"section" $section
|
||||||
|
"home" $page.IsHome
|
||||||
|
"simple" (eq (len $sections) 1)
|
||||||
|
"nested" (and $page.IsHome (eq $section $page.Section))
|
||||||
|
"thumbnail" $thumbnail
|
||||||
|
"icon" $icon
|
||||||
|
"content" $content
|
||||||
|
"moreTitle" $moreTitle
|
||||||
|
"sectionURL" $sectionURL
|
||||||
|
"loading" $loading)) " \r\n"
|
||||||
|
-}}
|
||||||
|
|
||||||
|
{{ if $sectionContent }}
|
||||||
|
{{ $items = $items | append (dict "title" $title "content" $sectionContent)}}
|
||||||
|
{{ end }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{ return $items }}
|
17
layouts/partials/utilities/GetWidth.html
Normal file
17
layouts/partials/utilities/GetWidth.html
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{{ $path := .path }}
|
||||||
|
{{ $height := .height }}
|
||||||
|
{{ $width := "" }}
|
||||||
|
|
||||||
|
{{ if eq (path.Ext $path) ".svg" }}
|
||||||
|
{{ $path := path.Join "static" .path }}
|
||||||
|
{{ if fileExists $path }}
|
||||||
|
{{ with findRE `viewBox="\d*\.?\d+[\s,]\d*\.?\d+[\s,]\d*\.?\d+[\s,]\d*\.?\d+"` (readFile $path) 1 }}
|
||||||
|
{{ $content := split (index (split (index . 0) `"`) 1) " " }}
|
||||||
|
{{ $viewbox_width := float (index $content 2) }}
|
||||||
|
{{ $viewbox_height := float (index $content 3) }}
|
||||||
|
{{ $width = int (math.Round (mul (div $height $viewbox_height) $viewbox_width)) }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ return $width }}
|
@@ -3,6 +3,7 @@
|
|||||||
{{- errorf "partial [utilities/link.html] - Missing param 'destination'" -}}
|
{{- errorf "partial [utilities/link.html] - Missing param 'destination'" -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- $error := false -}}
|
||||||
{{- $target := "" -}}
|
{{- $target := "" -}}
|
||||||
{{- $rel := "" -}}
|
{{- $rel := "" -}}
|
||||||
{{- $case := .case | default true }}
|
{{- $case := .case | default true }}
|
||||||
@@ -25,7 +26,7 @@
|
|||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
{{- if $cue -}}
|
{{- if $cue -}}
|
||||||
{{ $suffix := partial "assets/icon.html" (dict "icon" "fas up-right-from-square fa-2xs") }}
|
{{ $suffix := partial "assets/icon.html" (dict "icon" "fas up-right-from-square fa-2xs" "spacing" false) }}
|
||||||
{{- $text = printf "%s %s" $text $suffix | safeHTML -}}
|
{{- $text = printf "%s %s" $text $suffix | safeHTML -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- else -}}
|
{{- else -}}
|
||||||
@@ -34,27 +35,15 @@
|
|||||||
{{- if ne (len $segments) 2 }}
|
{{- if ne (len $segments) 2 }}
|
||||||
{{- errorf "partial [utilities/link.html] - Malformed path, expected one anchor '#' only: %s" $destination -}}
|
{{- errorf "partial [utilities/link.html] - Malformed path, expected one anchor '#' only: %s" $destination -}}
|
||||||
{{ else }}
|
{{ else }}
|
||||||
{{- $destination = index $segments 0 -}}
|
{{- $destination = index $segments 0 -}}
|
||||||
{{- $anchor = index $segments 1 -}}
|
{{- $anchor = index $segments 1 -}}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{- $destination = strings.TrimSuffix "/" $destination -}}
|
|
||||||
{{- $ref := $page.GetPage $destination -}}
|
|
||||||
|
|
||||||
{{- if not $ref }}
|
|
||||||
{{- $segments := split $destination "/" -}}
|
|
||||||
{{- if and (hasPrefix $destination "/") (gt (len $segments) 1) -}}
|
|
||||||
{{- $prefix := index $segments 1 -}}
|
|
||||||
{{- $page := .Page -}}
|
|
||||||
{{ with index (where site.Sites "Language.Lang" $prefix) 0 }}
|
|
||||||
{{- $path := printf "/%s" (strings.TrimPrefix (printf "/%s/" $prefix) $destination) }}
|
|
||||||
{{- $ref = .GetPage $path -}}
|
|
||||||
{{ end }}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
|
{{ $ref := partial "utilities/GetPage.html" (dict "url" $destination "page" $page) }}
|
||||||
{{- if not $ref -}}
|
{{- if not $ref -}}
|
||||||
{{- errorf "partial [utilities/link.html] - Cannot find page: %s" $destination -}}
|
{{- errorf "partial [utilities/link.html] - Cannot find page: %s" $destination -}}
|
||||||
|
{{- $error = true -}}
|
||||||
{{- else -}}
|
{{- else -}}
|
||||||
{{- $destination = $ref.RelPermalink -}}
|
{{- $destination = $ref.RelPermalink -}}
|
||||||
{{- with $anchor }}{{ $destination = printf "%s#%s" (strings.TrimSuffix "/" $destination) . -}}{{ end -}}
|
{{- with $anchor }}{{ $destination = printf "%s#%s" (strings.TrimSuffix "/" $destination) . -}}{{ end -}}
|
||||||
@@ -69,4 +58,6 @@
|
|||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
<a {{ with $class }}class="{{ . }}" {{ end }}href="{{ $destination | safeURL }}"{{ with $target }} target="{{ . }}"{{ end }}{{ with $rel }} rel="{{ . }}"{{ end }}>{{ $text }}</a>
|
{{ if not $error -}}
|
||||||
|
<a {{ with $class }}class="{{ . }}" {{ end }}href="{{ $destination | safeURL }}"{{ with $target }} target="{{ . }}"{{ end }}{{ with $rel }} rel="{{ . }}"{{ end }}>{{ $text }}</a>
|
||||||
|
{{- end }}
|
@@ -63,6 +63,6 @@
|
|||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{ if not $error }}
|
{{ if not $error }}
|
||||||
<abbr {{ with $class }}class="{{ . }}"{{ end }} title="{{ $title }}">{{ $key }}</abbr>
|
<abbr {{ with $class }}class="{{ . }}"{{ end }} title="{{ $title }}" tabindex="0">{{ $key }}</abbr>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
@@ -56,7 +56,7 @@
|
|||||||
{{ with $icon }}<div class="pt-1 pe-2">{{ . }}</div>{{ end }}
|
{{ with $icon }}<div class="pt-1 pe-2">{{ . }}</div>{{ end }}
|
||||||
<div class="flex-grow-1 my-auto">
|
<div class="flex-grow-1 my-auto">
|
||||||
{{ trim .Inner " \r\n" | .Page.RenderString | safeHTML -}}
|
{{ trim .Inner " \r\n" | .Page.RenderString | safeHTML -}}
|
||||||
{{ if $dismissible }}<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>{{ end }}
|
{{ if $dismissible }}<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="{{ T "close" }}"></button>{{ end }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{- end -}}
|
{{- end -}}
|
@@ -26,6 +26,8 @@
|
|||||||
"main.externalLinks.cue" in the site's parameters.
|
"main.externalLinks.cue" in the site's parameters.
|
||||||
"tab" Optional flag to indicate if an external link should open in a new tab, defaults to setting
|
"tab" Optional flag to indicate if an external link should open in a new tab, defaults to setting
|
||||||
"main.externalLinks.tab" in the site's parameters.
|
"main.externalLinks.tab" in the site's parameters.
|
||||||
|
"spacing" Optional flag to add spacing to the inline button, defaults to "true".
|
||||||
|
"wrapper" Optional element to wrap the button.
|
||||||
-->
|
-->
|
||||||
|
|
||||||
{{ $error := false }}
|
{{ $error := false }}
|
||||||
@@ -112,6 +114,8 @@
|
|||||||
{{- $cue := .Get "cue" | default site.Params.main.externalLinks.cue -}}
|
{{- $cue := .Get "cue" | default site.Params.main.externalLinks.cue -}}
|
||||||
{{- $tab := .Get "tab" | default site.Params.main.externalLinks.tab -}}
|
{{- $tab := .Get "tab" | default site.Params.main.externalLinks.tab -}}
|
||||||
|
|
||||||
|
{{- $spacing := .Get "spacing" | default (not .Parent) -}}
|
||||||
|
|
||||||
{{ if not $error }}
|
{{ if not $error }}
|
||||||
{{- $output := partial "assets/button.html" (dict
|
{{- $output := partial "assets/button.html" (dict
|
||||||
"type" $type
|
"type" $type
|
||||||
@@ -133,9 +137,14 @@
|
|||||||
"justify" $justify
|
"justify" $justify
|
||||||
"cue" $cue
|
"cue" $cue
|
||||||
"tab" $tab
|
"tab" $tab
|
||||||
"toast" $toast)
|
"toast" $toast
|
||||||
|
"spacing" $spacing)
|
||||||
-}}
|
-}}
|
||||||
|
|
||||||
|
{{ with .Get "wrapper" }}
|
||||||
|
{{ $output = printf `<div class="%s">%s</div>` . $output }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
{{- if .Parent -}}
|
{{- if .Parent -}}
|
||||||
{{ $current := .Parent.Scratch.Get "inner" }}
|
{{ $current := .Parent.Scratch.Get "inner" }}
|
||||||
{{ if $current }}
|
{{ if $current }}
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
Displays a Bootstrap card that links to a page. Any inner text is used as description The shortcode supports the
|
Displays a Bootstrap card that links to a page. Any inner text is used as description. The shortcode supports the
|
||||||
following arguments:
|
following arguments:
|
||||||
"path" Optional path of the page. If omitted, specify the title, icon, thumbnail, and body as needed.
|
"path" Optional path of the page. If omitted, specify the title, icon, thumbnail, and body as needed.
|
||||||
"title" Optional title of the card.
|
"title" Optional title of the card.
|
||||||
@@ -87,11 +87,15 @@
|
|||||||
{{ $icon := .Get "icon" | default "" -}}
|
{{ $icon := .Get "icon" | default "" -}}
|
||||||
{{ $thumbnail := .Get "thumbnail" | default "" -}}
|
{{ $thumbnail := .Get "thumbnail" | default "" -}}
|
||||||
|
|
||||||
|
{{ if .Parent }}
|
||||||
|
{{ $class = (printf "h-100 %s" $class) }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
{{ if not $error -}}
|
{{ if not $error -}}
|
||||||
{{- $output := partial "assets/card.html" (dict
|
{{- $output := partial "assets/card.html" (dict
|
||||||
"path" $path
|
"path" $path
|
||||||
"title" $title
|
"title" $title
|
||||||
"class" (printf "h-100 %s" $class)
|
"class" $class
|
||||||
"gutter" $gutter
|
"gutter" $gutter
|
||||||
"color" $color
|
"color" $color
|
||||||
"padding" $padding
|
"padding" $padding
|
||||||
|
@@ -8,6 +8,10 @@
|
|||||||
original aspect ratio of the image.
|
original aspect ratio of the image.
|
||||||
"portrait": Optional flag to adjust the ratio from landscape to portrait. The image itself is not rotated, only
|
"portrait": Optional flag to adjust the ratio from landscape to portrait. The image itself is not rotated, only
|
||||||
the crop area is adjusted.
|
the crop area is adjusted.
|
||||||
|
"loading": Optional loading behavior of the image, either "eager" (default) or "lazy". The loading of lazily
|
||||||
|
loaded images is deferred until the image is within scrolling range of the viewport. This should
|
||||||
|
reduce the initial loading time of the website. It is recommended to lazily load only those images
|
||||||
|
that are below the page fold.
|
||||||
"wrapper": Optional class attributes of the wrapper element, e.g. "mx-auto".
|
"wrapper": Optional class attributes of the wrapper element, e.g. "mx-auto".
|
||||||
"class": Optional class attribute of the inner img element, e.g. "rounded".
|
"class": Optional class attribute of the inner img element, e.g. "rounded".
|
||||||
"title": Optional alternate text of the image.
|
"title": Optional alternate text of the image.
|
||||||
@@ -16,19 +20,33 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
{{- if isset .Params "src" -}}
|
{{- if isset .Params "src" -}}
|
||||||
|
{{ $error := false -}}
|
||||||
{{ $url := .Get "src" | default "" -}}
|
{{ $url := .Get "src" | default "" -}}
|
||||||
{{- $validRatios := slice "1x1" "3x2" "4x3" "16x9" "21x9" -}}
|
{{- $validRatios := slice "1x1" "3x2" "4x3" "16x9" "21x9" -}}
|
||||||
{{ $ratio := .Get "ratio" | default "" -}}
|
{{ $ratio := .Get "ratio" | default "" -}}
|
||||||
{{ if $ratio -}}
|
{{ if $ratio -}}
|
||||||
{{ if not (in $validRatios $ratio) -}}
|
{{ if not (in $validRatios $ratio) -}}
|
||||||
{{ errorf "Invalid value for param 'ratio': %s" .Position -}}
|
{{ errorf "Invalid value for param 'ratio': %s" .Position -}}
|
||||||
|
{{ $error = true -}}
|
||||||
{{ end -}}
|
{{ end -}}
|
||||||
{{ end -}}
|
{{ end -}}
|
||||||
|
|
||||||
{{- $class := .Get "class" | default "" -}}
|
{{- $class := .Get "class" | default "" -}}
|
||||||
{{- $wrapper := .Get "wrapper" | default "" -}}
|
{{- $wrapper := .Get "wrapper" | default "" -}}
|
||||||
|
|
||||||
|
{{- $loading := .Get "loading" | default "" -}}
|
||||||
|
{{- $validSettings := slice "lazy" "eager" -}}
|
||||||
|
{{- if $loading -}}
|
||||||
|
{{ if not (in $validSettings $loading) -}}
|
||||||
|
{{ errorf "Invalid value for param 'loading': %s" .Position -}}
|
||||||
|
{{ $error = true -}}
|
||||||
|
{{ end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- $lazy := eq $loading "lazy" -}}
|
||||||
|
|
||||||
{{ $title := .Get "title" | default "" -}}
|
{{ $title := .Get "title" | default "" -}}
|
||||||
{{ $caption := .Get "caption" | default "" -}}
|
{{ $caption := .Get "caption" | default "" -}}
|
||||||
|
|
||||||
{{ $supportedFlags := slice "true" "false" -}}
|
{{ $supportedFlags := slice "true" "false" -}}
|
||||||
{{ $modeParam := "false" -}}
|
{{ $modeParam := "false" -}}
|
||||||
{{ $mode := false -}}
|
{{ $mode := false -}}
|
||||||
@@ -37,7 +55,9 @@
|
|||||||
{{ if eq $modeParam "true" }}{{ $mode = true }}{{ else }}{{ $mode = false }}{{ end -}}
|
{{ if eq $modeParam "true" }}{{ $mode = true }}{{ else }}{{ $mode = false }}{{ end -}}
|
||||||
{{ else -}}
|
{{ else -}}
|
||||||
{{ errorf "Invalid value for param 'mode': %s" $modeParam -}}
|
{{ errorf "Invalid value for param 'mode': %s" $modeParam -}}
|
||||||
|
{{ $error = true -}}
|
||||||
{{ end -}}
|
{{ end -}}
|
||||||
|
|
||||||
{{ $portraitParam := "false" -}}
|
{{ $portraitParam := "false" -}}
|
||||||
{{ $portrait := false -}}
|
{{ $portrait := false -}}
|
||||||
{{ with .Get "portrait" }}{{ $portraitParam = . }}{{ end -}}
|
{{ with .Get "portrait" }}{{ $portraitParam = . }}{{ end -}}
|
||||||
@@ -45,19 +65,23 @@
|
|||||||
{{ if eq $portraitParam "true" }}{{ $portrait = true }}{{ else }}{{ $portrait = false }}{{ end -}}
|
{{ if eq $portraitParam "true" }}{{ $portrait = true }}{{ else }}{{ $portrait = false }}{{ end -}}
|
||||||
{{ else -}}
|
{{ else -}}
|
||||||
{{ errorf "Invalid value for param 'portrait': %s" $portraitParam -}}
|
{{ errorf "Invalid value for param 'portrait': %s" $portraitParam -}}
|
||||||
|
{{ $error = true -}}
|
||||||
{{ end -}}
|
{{ end -}}
|
||||||
|
|
||||||
{{- partial "assets/image.html" (dict
|
{{- if not $error -}}
|
||||||
"url" $url
|
{{- partial "assets/image.html" (dict
|
||||||
"ratio" $ratio
|
"url" $url
|
||||||
"outerClass" $wrapper
|
"ratio" $ratio
|
||||||
"innerClass" $class
|
"outerClass" $wrapper
|
||||||
"title" $title
|
"innerClass" $class
|
||||||
"caption" $caption
|
"title" $title
|
||||||
"mode" $mode
|
"caption" $caption
|
||||||
"portrait" $portrait
|
"mode" $mode
|
||||||
"page" .Page)
|
"portrait" $portrait
|
||||||
-}}
|
"loading" $loading
|
||||||
|
"page" .Page)
|
||||||
|
-}}
|
||||||
|
{{- end -}}
|
||||||
{{ else -}}
|
{{ else -}}
|
||||||
{{ errorf "Missing value for param 'src': %s" .Position -}}
|
{{ errorf "Missing value for param 'src': %s" .Position -}}
|
||||||
{{ end -}}
|
{{ end -}}
|
@@ -30,13 +30,13 @@
|
|||||||
{{- $anchor := "" -}}
|
{{- $anchor := "" -}}
|
||||||
|
|
||||||
{{ if .IsNamedParams }}
|
{{ if .IsNamedParams }}
|
||||||
{{ $href = .Get "href" | default "" -}}
|
{{- $href = .Get "href" | default "" -}}
|
||||||
{{ $name = .Get "name" | default "" -}}
|
{{- $name = .Get "name" | default "" -}}
|
||||||
{{ $url = .Get "url" | default "" -}}
|
{{- $url = .Get "url" | default "" -}}
|
||||||
{{ $cue = .Get "cue" | default site.Params.main.externalLinks.cue -}}
|
{{- $cue = .Get "cue" | default site.Params.main.externalLinks.cue -}}
|
||||||
{{ $tab = .Get "tab" | default site.Params.main.externalLinks.tab -}}
|
{{- $tab = .Get "tab" | default site.Params.main.externalLinks.tab -}}
|
||||||
{{ $case = .Get "case" | default true }}
|
{{- $case = .Get "case" | default true -}}
|
||||||
{{- $class := .Get "class" | default "" -}}
|
{{- $class = .Get "class" | default "" -}}
|
||||||
{{ else }}
|
{{ else }}
|
||||||
{{ $href = .Get 0 }}
|
{{ $href = .Get 0 }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
@@ -73,27 +73,9 @@
|
|||||||
|
|
||||||
{{- $isExternal := ne (urls.Parse (absURL $url)).Host (urls.Parse site.BaseURL).Host -}}
|
{{- $isExternal := ne (urls.Parse (absURL $url)).Host (urls.Parse site.BaseURL).Host -}}
|
||||||
{{- if not $isExternal -}}
|
{{- if not $isExternal -}}
|
||||||
{{- $url = strings.TrimSuffix "/" $url -}}
|
{{ $ref := partial "utilities/GetPage.html" (dict "url" $url "page" .Page) }}
|
||||||
|
|
||||||
{{- $ref := "" -}}
|
|
||||||
{{- if not $ref -}}
|
{{- if not $ref -}}
|
||||||
{{- $ref = .Page.GetPage $url -}}
|
{{- errorf "Cannot find page: '%s' at %s" $url .Position -}}
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{- if not $ref }}
|
|
||||||
{{- $segments := split $url "/" -}}
|
|
||||||
{{- if and (hasPrefix $url "/") (gt (len $segments) 1) -}}
|
|
||||||
{{- $prefix := index $segments 1 -}}
|
|
||||||
{{- $page := .Page -}}
|
|
||||||
{{ with index (where site.Sites "Language.Lang" $prefix) 0 }}
|
|
||||||
{{- $path := printf "/%s" (strings.TrimPrefix (printf "/%s/" $prefix) $url) }}
|
|
||||||
{{- $ref = .GetPage $path -}}
|
|
||||||
{{ end }}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{- if not $ref -}}
|
|
||||||
{{- errorf "Cannot find page: '%s' at %s" $href .Position -}}
|
|
||||||
{{- $error = true -}}
|
{{- $error = true -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
@@ -101,9 +83,7 @@
|
|||||||
{{ with $anchor }}
|
{{ with $anchor }}
|
||||||
{{ $url = printf "%s#%s" $url .}}
|
{{ $url = printf "%s#%s" $url .}}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{- if not $error -}}
|
{{- if not $error -}}
|
||||||
{{ partial "utilities/link.html" (dict "destination" $url "text" $text "cue" $cue "tab" $tab "case" $case "class" $class "page" .Page) }}
|
{{ partial "utilities/link.html" (dict "destination" $url "text" $text "cue" $cue "tab" $tab "case" $case "class" $class "page" .Page) }}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -4,7 +4,8 @@
|
|||||||
"type" Optional type of the tab group, either "tabs", "pills", or "underline".
|
"type" Optional type of the tab group, either "tabs", "pills", or "underline".
|
||||||
"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”.
|
||||||
|
"wrap" Optional flag to enable word wrapping of tab titles, defaults to false.
|
||||||
-->
|
-->
|
||||||
|
|
||||||
{{- $id := printf "nav-%d" .Ordinal -}}
|
{{- $id := printf "nav-%d" .Ordinal -}}
|
||||||
@@ -37,6 +38,13 @@
|
|||||||
{{ errorf "Invalid value for param 'fade': %s" $fadeParam -}}
|
{{ errorf "Invalid value for param 'fade': %s" $fadeParam -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
|
{{ $wrapParam := "false" -}}
|
||||||
|
{{- $wrap := false -}}
|
||||||
|
{{ with .Get "wrap" }}{{ $wrapParam = . }}{{ end -}}
|
||||||
|
{{ if not (in $supportedFlags $wrapParam) -}}
|
||||||
|
{{ errorf "Invalid value for param 'wrap': %s" $wrapParam -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
{{- if and (eq $type "tabs") $vertical -}}
|
{{- if and (eq $type "tabs") $vertical -}}
|
||||||
{{- errorf "Tabs do not support vertical layout" -}}
|
{{- errorf "Tabs do not support vertical layout" -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
@@ -68,7 +76,7 @@
|
|||||||
{{- 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 -}}
|
||||||
<button class="nav-link text-nowrap{{ if eq $index $showID }} active{{ end }} {{ if $itemDisabled}} disabled {{end }}" id="{{ $id }}-btn-{{ $index }}" data-bs-toggle="pill" data-bs-target="#{{ $id }}-{{ $index }}"
|
<button class="nav-link{{ if not $wrap }} text-nowrap{{ end }}{{ if eq $index $showID }} active{{ end }}{{ if $itemDisabled}} disabled {{end }}" id="{{ $id }}-btn-{{ $index }}" data-bs-toggle="pill" data-bs-target="#{{ $id }}-{{ $index }}"
|
||||||
type="button" role="tab" aria-controls="{{ $id }}-{{ $index }}" aria-selected="{{ if eq $index 0 }}true{{ else }}false{{ end }}">
|
type="button" role="tab" aria-controls="{{ $id }}-{{ $index }}" aria-selected="{{ if eq $index 0 }}true{{ else }}false{{ end }}">
|
||||||
{{ $header }}
|
{{ $header }}
|
||||||
</button>
|
</button>
|
||||||
|
@@ -97,7 +97,8 @@
|
|||||||
"icon" $icon
|
"icon" $icon
|
||||||
"tooltip" $tooltip
|
"tooltip" $tooltip
|
||||||
"order" "first"
|
"order" "first"
|
||||||
"class" (trim (printf "rounded-2 fw-semibold %s" $class) " "))
|
"class" (trim (printf "rounded-2 fw-semibold %s" $class) " ")
|
||||||
|
"spacing" $inline)
|
||||||
-}}
|
-}}
|
||||||
{{- if not $inline }}</div>{{ end -}}
|
{{- if not $inline }}</div>{{ end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
@@ -6,6 +6,7 @@
|
|||||||
"href" Required address for the button or hyperlink.
|
"href" Required address for the button or hyperlink.
|
||||||
"placement" Optional position of the tooltip: "top" (default), "bottom", "left", or "right".
|
"placement" Optional position of the tooltip: "top" (default), "bottom", "left", or "right".
|
||||||
"class" Optional class attribute of the tooltip's button element.
|
"class" Optional class attribute of the tooltip's button element.
|
||||||
|
"spacing" Optional flag to add spacing to the inline tooltip, defaults to "true".
|
||||||
-->
|
-->
|
||||||
|
|
||||||
{{ $error := false }}
|
{{ $error := false }}
|
||||||
@@ -43,8 +44,19 @@
|
|||||||
|
|
||||||
{{- $class := .Get "class" | default "" -}}
|
{{- $class := .Get "class" | default "" -}}
|
||||||
|
|
||||||
|
{{- $spacing := .Get "spacing" | default true -}}
|
||||||
|
|
||||||
{{ if not $error }}
|
{{ if not $error }}
|
||||||
<div class="d-inline-flex">
|
<div class="d-inline-flex">
|
||||||
{{- partial "assets/button.html" (dict "type" $type "title" $title "color" $color "tooltip" $tooltip "href" $href "placement" $placement "class" $class) -}}
|
{{- partial "assets/button.html" (dict
|
||||||
|
"type" $type
|
||||||
|
"title" $title
|
||||||
|
"color" $color
|
||||||
|
"tooltip" $tooltip
|
||||||
|
"href" $href
|
||||||
|
"placement" $placement
|
||||||
|
"class" $class
|
||||||
|
"spacing" $spacing)
|
||||||
|
-}}
|
||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
@@ -1,5 +1,5 @@
|
|||||||
{{ define "main" }}
|
{{ define "main" }}
|
||||||
<div class="container-xxl px-3 px-xxl-0">
|
<div class="container-xxl flex-fill px-4 px-xxl-0">
|
||||||
<div class="row row-cols-1 row-cols-sm-3">
|
<div class="row row-cols-1 row-cols-sm-3">
|
||||||
<div class="col col-md-2 d-none d-md-block"></div>
|
<div class="col col-md-2 d-none d-md-block"></div>
|
||||||
<div class="col col-sm-12 col-md-8">
|
<div class="col col-sm-12 col-md-8">
|
||||||
@@ -34,7 +34,7 @@
|
|||||||
<p class="text-body-secondary mt-5">{{ $year }}</p>
|
<p class="text-body-secondary mt-5">{{ $year }}</p>
|
||||||
{{ $.Scratch.Set "lastYear" $year }}
|
{{ $.Scratch.Set "lastYear" $year }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<a href="{{ (path.Join .Page.RelPermalink) | relLangURL }}">{{ if .Draft }}{{ T "draft" | upper }}: {{end}}{{ .Title | .Page.RenderString }}</a>
|
<a href="{{ (path.Join .Page.RelPermalink) | relLangURL }}">{{ if .Draft }}{{ T "draft" | upper }}: {{ end }}{{ .Title | .Page.RenderString }}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
32
netlify.toml
32
netlify.toml
@@ -1,19 +1,15 @@
|
|||||||
# toml-docs-start netlify
|
# toml-docs-start netlify
|
||||||
[build]
|
[build]
|
||||||
publish = "exampleSite/public"
|
publish = "exampleSite/public"
|
||||||
# functions = "functions"
|
|
||||||
|
|
||||||
[build.environment]
|
|
||||||
NODE_VERSION = "18.17.0"
|
|
||||||
NPM_VERSION = "9.6.7"
|
|
||||||
|
|
||||||
[context.production]
|
|
||||||
command = "npm run build:example"
|
command = "npm run build:example"
|
||||||
|
|
||||||
[context.production.environment]
|
[build.environment]
|
||||||
HUGO_VERSION = "0.110.0"
|
DART_SASS_VERSION = "1.69.0"
|
||||||
|
HUGO_VERSION = "0.119.0"
|
||||||
HUGO_ENV = "production"
|
HUGO_ENV = "production"
|
||||||
HUGO_ENABLEGITINFO = "true"
|
HUGO_ENABLEGITINFO = "true"
|
||||||
|
NODE_VERSION = "18.18.2"
|
||||||
|
NPM_VERSION = "9.8.1"
|
||||||
# toml-docs-end netlify
|
# toml-docs-end netlify
|
||||||
|
|
||||||
[[headers]]
|
[[headers]]
|
||||||
@@ -74,4 +70,20 @@
|
|||||||
targetPort = 1313
|
targetPort = 1313
|
||||||
port = 8888
|
port = 8888
|
||||||
publish = "public"
|
publish = "public"
|
||||||
autoLaunch = false
|
autoLaunch = false
|
||||||
|
|
||||||
|
# toml-docs-start plugins
|
||||||
|
[[plugins]]
|
||||||
|
package = "@gethinode/netlify-plugin-dartsass"
|
||||||
|
|
||||||
|
[[plugins]]
|
||||||
|
package = "netlify-plugin-hugo-cache-resources"
|
||||||
|
[plugins.inputs]
|
||||||
|
# Redirected in exampleSite/config/_default/hugo.toml
|
||||||
|
# srcdir = ""
|
||||||
|
|
||||||
|
[[plugins]]
|
||||||
|
package = "@netlify/plugin-lighthouse"
|
||||||
|
# [plugins.inputs]
|
||||||
|
# output_path = "reports/lighthouse.html"
|
||||||
|
# toml-docs-end plugins
|
||||||
|
4479
package-lock.json
generated
4479
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user