mirror of
https://github.com/gethinode/hinode.git
synced 2025-10-07 01:54:23 +00:00
Compare commits
287 Commits
v0.19.0-be
...
v0.21.0-be
Author | SHA1 | Date | |
---|---|---|---|
![]() |
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 | ||
![]() |
75126f27ed | ||
![]() |
df683a3022 | ||
![]() |
61373259e9 | ||
![]() |
481dffd8b6 | ||
![]() |
80a957d261 | ||
![]() |
9df3b0f163 | ||
![]() |
284cc53308 | ||
![]() |
4c7075fdb8 | ||
![]() |
5d5a21ca4e | ||
![]() |
9e6f14ed47 | ||
![]() |
c61c770c3e | ||
![]() |
9595892444 | ||
![]() |
8c7867e14a | ||
![]() |
a58b0dae6b | ||
![]() |
4385ef9f87 | ||
![]() |
8f9ed014f2 | ||
![]() |
2f0ce05789 | ||
![]() |
6d700e6819 | ||
![]() |
46c5ec3b44 | ||
![]() |
de8d450a05 | ||
![]() |
56f74e03ba | ||
![]() |
0ce037675b | ||
![]() |
aa472e6ffa | ||
![]() |
f05b45af02 | ||
![]() |
69b4f6a4ca | ||
![]() |
484d540ecb | ||
![]() |
bb542efaa8 | ||
![]() |
49ac691b3e | ||
![]() |
95d757f826 | ||
![]() |
c1fc156d75 | ||
![]() |
35a5a25150 | ||
![]() |
9547ba316e | ||
![]() |
0d48dec518 | ||
![]() |
f4852a4bdb | ||
![]() |
a7d515e76a | ||
![]() |
37f6acc984 | ||
![]() |
c87bd75334 | ||
![]() |
77ffbb49a7 | ||
![]() |
64533e5dbc | ||
![]() |
d42b980496 | ||
![]() |
2b84def4d8 | ||
![]() |
7ba75a04ad | ||
![]() |
98b88a74ae | ||
![]() |
31d98ef263 | ||
![]() |
3f34ae2ab0 | ||
![]() |
d8b52d8772 | ||
![]() |
103fa52511 | ||
![]() |
cdb0a8e685 | ||
![]() |
6b217d6c02 | ||
![]() |
490b0a32b2 | ||
![]() |
c0684f4486 | ||
![]() |
988c8dcb08 | ||
![]() |
a1251de4e8 | ||
![]() |
a64e4f1d0d | ||
![]() |
72f13a2b66 | ||
![]() |
a587119310 | ||
![]() |
12e29f944a | ||
![]() |
19861ce3d4 | ||
![]() |
d8647e4f16 | ||
![]() |
60e9abecfe | ||
![]() |
1b45d2b564 | ||
![]() |
25d62a4755 |
2
.github/release.yml
vendored
2
.github/release.yml
vendored
@@ -14,7 +14,7 @@ changelog:
|
||||
labels:
|
||||
- Semver-Minor
|
||||
- enhancement
|
||||
- title: 🐛 Bug fixes
|
||||
- title: 🐛 Bug Fixes
|
||||
labels:
|
||||
- fix
|
||||
- bugfix
|
||||
|
13
.github/workflows/lint-build.yml
vendored
13
.github/workflows/lint-build.yml
vendored
@@ -43,7 +43,7 @@ jobs:
|
||||
matrix:
|
||||
os: [macos-latest, windows-latest, ubuntu-latest]
|
||||
# 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 }}
|
||||
|
||||
@@ -58,6 +58,17 @@ jobs:
|
||||
cache: 'npm'
|
||||
cache-dependency-path: '**/package-lock.json'
|
||||
|
||||
- name: Install Dart Sass
|
||||
run: |
|
||||
if [ "$RUNNER_OS" == "Linux" ]; then
|
||||
sudo snap install dart-sass
|
||||
elif [ "$RUNNER_OS" == "macOS" ]; then
|
||||
brew install sass/sass/sass
|
||||
elif [ "$RUNNER_OS" == "Windows" ]; then
|
||||
choco install sass
|
||||
fi
|
||||
shell: bash
|
||||
|
||||
# [24/AUG/23] Adjusted from npm ci for non-macOS to prevent EBADPLATFORM error due to fsevents
|
||||
- name: Perform clean install of npm
|
||||
run: |
|
||||
|
@@ -3,5 +3,6 @@ assets/scss/components/_syntax-dark.scss
|
||||
assets/scss/components/_syntax-light.scss
|
||||
assets/scss/vendor
|
||||
assets/scss/theme/fonts.scss
|
||||
assets/scss/app-dart.scss
|
||||
assets/scss/app.scss
|
||||
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/buttons.scss";
|
||||
@import "components/card.scss";
|
||||
@import "components/carousel.scss";
|
||||
@import "components/clipboard.scss";
|
||||
@import "components/command.scss";
|
||||
@import "components/comments.scss";
|
||||
@import "components/feature.scss";
|
||||
@import "components/footer.scss";
|
||||
@import "components/navbar.scss";
|
||||
@import "components/img.scss";
|
||||
@import "components/pagination.scss";
|
||||
@import "components/persona.scss";
|
||||
@import "components/popover.scss";
|
||||
@import "components/sidebar.scss";
|
||||
@import "components/syntax-dart.scss"; // note: modified for dart-sass
|
||||
@import "components/table.scss";
|
||||
@import "components/timeline.scss";
|
||||
@import "components/toc.scss";
|
||||
@import "components/vimeo.scss";
|
||||
@import "common/animation.scss";
|
||||
@import "common/styles.scss";
|
||||
@import "layouts/reboot.scss";
|
||||
@import "layouts/type.scss";
|
||||
@import "common/export.scss";
|
||||
@import "helpers/colored-links.scss";
|
||||
@import "helpers/display.scss";
|
||||
|
||||
// note: modified for dart-sass
|
||||
@if h.$import-fonts {
|
||||
@include meta.load-css(theme/fonts);
|
||||
}
|
||||
|
||||
// Import theme placeholder
|
||||
@import "theme/theme.scss";
|
||||
|
||||
// Import Bootstrap utilities API (mounted by core Bootstrap module)
|
||||
@import "modules/bootstrap/utilities/api";
|
@@ -12,6 +12,7 @@
|
||||
@import "common/variables-dark.scss";
|
||||
|
||||
// Import Hinode theme styles
|
||||
@import "components/abbr.scss";
|
||||
@import "components/alert.scss";
|
||||
@import "components/blockquote.scss";
|
||||
@import "components/breadcrumb.scss";
|
||||
@@ -30,6 +31,7 @@
|
||||
@import "components/popover.scss";
|
||||
@import "components/sidebar.scss";
|
||||
@import "components/syntax.scss";
|
||||
@import "components/table.scss";
|
||||
@import "components/timeline.scss";
|
||||
@import "components/toc.scss";
|
||||
@import "components/vimeo.scss";
|
||||
|
@@ -15,6 +15,28 @@ a:active {
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
.fullscreen {
|
||||
--navbar-offset: #{$navbar-offset};
|
||||
|
||||
min-height: calc(100vh - var(--navbar-offset));
|
||||
}
|
||||
|
||||
.main-content {
|
||||
margin-top: $navbar-offset;
|
||||
}
|
||||
|
||||
$utilities: map-merge(
|
||||
$utilities,
|
||||
(
|
||||
"cursor": (
|
||||
property: margin-left margin-right,
|
||||
class: mx,
|
||||
responsive: true,
|
||||
values: auto 0,
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
.tickmark li::marker {
|
||||
content: "✓ ";
|
||||
}
|
||||
|
42
assets/scss/common/_variables-dart.scss
Normal file
42
assets/scss/common/_variables-dart.scss
Normal file
@@ -0,0 +1,42 @@
|
||||
// Bootstrap variables overrides for theme
|
||||
$enable-negative-margins: true;
|
||||
$enable-important-utilities: true !default;
|
||||
|
||||
// Remove the border from the focused navigation toggler
|
||||
$navbar-toggler-focus-width: 0 !default;
|
||||
|
||||
$font-family-sans-serif: h.$theme-font, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
|
||||
$font-size-base: h.$font-size-base !default;
|
||||
$headings-font-weight: 600 !default;
|
||||
$font-weight-lighter: lighter !default;
|
||||
$font-weight-light: 200 !default;
|
||||
$font-weight-normal: 300 !default;
|
||||
$font-weight-bold: 600 !default;
|
||||
$font-weight-bolder: bolder !default;
|
||||
|
||||
strong {
|
||||
font-weight: 600 if($enable-important-utilities, !important, null);
|
||||
}
|
||||
|
||||
$navbar-offset: h.$navbar-offset;
|
||||
$primary: h.$primary;
|
||||
$secondary: h.$secondary;
|
||||
$success: h.$success;
|
||||
$info: h.$info;
|
||||
$warning: h.$warning;
|
||||
$danger: h.$danger;
|
||||
$light: h.$light;
|
||||
$dark: h.$dark;
|
||||
|
||||
$black: #000 !default;
|
||||
$btn-toggle-color: $black !default;
|
||||
|
||||
$carousel-dark-indicator-active-bg: #fff !default;
|
||||
$carousel-dark-caption-color: #fff !default;
|
||||
$carousel-dark-control-icon-filter: invert(0) grayscale(100) !default;
|
||||
|
||||
$primary-text-emphasis-dark: mix(white, h.$primary, h.$dark-mode-tint) !default;
|
||||
$secondary-text-emphasis-dark: mix(white, h.$secondary, h.$dark-mode-tint) !default;
|
||||
$link-color-dark: mix(white, h.$primary, h.$dark-mode-tint) !default;
|
||||
$primary-bg-subtle-dark: mix(black, h.$primary, h.$dark-mode-shade) !default;
|
||||
$primary-border-subtle-dark: mix(black, h.$primary, calc(h.$dark-mode-shade / 2)) !default;
|
@@ -7,6 +7,7 @@ $navbar-toggler-focus-width: 0 !default;
|
||||
|
||||
// scss-docs-start font
|
||||
$font-family-sans-serif: $theme-font, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
|
||||
$font-size-base: $font-size-base !default;;
|
||||
$headings-font-weight: 600 !default;
|
||||
$font-weight-lighter: lighter !default;
|
||||
$font-weight-light: 200 !default;
|
||||
@@ -22,8 +23,8 @@ strong {
|
||||
$black: #000 !default;
|
||||
$btn-toggle-color: $black !default;
|
||||
|
||||
$carousel-dark-indicator-active-bg: #ffffff !default;
|
||||
$carousel-dark-caption-color: #ffffff !default;
|
||||
$carousel-dark-indicator-active-bg: #fff !default;
|
||||
$carousel-dark-caption-color: #fff !default;
|
||||
$carousel-dark-control-icon-filter: invert(0) grayscale(100) !default;
|
||||
|
||||
// scss-docs-start color-mode
|
||||
|
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;
|
||||
}
|
||||
}
|
@@ -15,6 +15,10 @@
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.card-icon {
|
||||
color: $secondary;
|
||||
}
|
||||
|
||||
.card-zoom::after .card-img-wrap img {
|
||||
content: "";
|
||||
position: absolute;
|
||||
@@ -48,6 +52,10 @@
|
||||
color: $body-color if($enable-important-utilities, !important, null);
|
||||
}
|
||||
|
||||
.card-body-margin {
|
||||
margin-bottom: $spacer * 1.5; // equals mb-4
|
||||
}
|
||||
|
||||
@if $enable-dark-mode {
|
||||
@include color-mode(dark) {
|
||||
.card-body-link {
|
||||
|
@@ -108,7 +108,7 @@
|
||||
background-color: $white if($enable-important-utilities, !important, null);
|
||||
}
|
||||
|
||||
.emphasis, {
|
||||
.emphasis {
|
||||
background-color: $black 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
|
13
assets/scss/components/_table.scss
Normal file
13
assets/scss/components/_table.scss
Normal file
@@ -0,0 +1,13 @@
|
||||
@if $enable-dark-mode {
|
||||
@include color-mode(dark) {
|
||||
.table-striped, .table-striped-columns {
|
||||
--bs-table-striped-bg: var(--bs-tertiary-bg);
|
||||
--bs-table-striped-color: var(--bs-body-color);
|
||||
}
|
||||
|
||||
.table-hover {
|
||||
--bs-table-hover-bg: var(--bs-tertiary-bg);
|
||||
--bs-table-striped-color: var(--bs-body-color);
|
||||
}
|
||||
}
|
||||
}
|
@@ -75,6 +75,10 @@
|
||||
.toc-button {
|
||||
--bs-btn-color: var(--bs-body-color);
|
||||
--bs-btn-border-color: var(--bs-body-color);
|
||||
|
||||
&:hover {
|
||||
background-color: transparent;
|
||||
}
|
||||
}
|
||||
|
||||
#toc-collapse {
|
||||
|
@@ -30,3 +30,7 @@ h6 {
|
||||
margin-top: $spacer;
|
||||
scroll-margin-top: $navbar-offset;
|
||||
}
|
||||
|
||||
.display-1, .display-2, .display-3, .display-4, .display-5, .display-6 {
|
||||
scroll-margin-top: $navbar-offset;
|
||||
}
|
||||
|
@@ -120,4 +120,6 @@ home = ["HTML", "RSS", "REDIR"]
|
||||
path = "github.com/gethinode/mod-katex"
|
||||
[[module.imports]]
|
||||
path = "github.com/gethinode/mod-leaflet"
|
||||
[[module.imports]]
|
||||
path = "github.com/gethinode/mod-lottie"
|
||||
# toml-docs-end modules
|
||||
|
@@ -9,14 +9,18 @@
|
||||
[main.externalLinks]
|
||||
cue = false
|
||||
tab = false
|
||||
[main.build]
|
||||
transpiler = "libsass"
|
||||
# toml-docs-end main
|
||||
|
||||
# toml-docs-start modules
|
||||
[modules]
|
||||
core = ["bootstrap", "flexsearch", "fontawesome"]
|
||||
optional = ["leaflet", "katex"]
|
||||
optional = ["leaflet", "katex", "lottie"]
|
||||
excludeSCSS = ["bootstrap"]
|
||||
disableTemplate = ["katex"]
|
||||
[modules.katex]
|
||||
state = "defer"
|
||||
[modules.fontawesome]
|
||||
inline = true
|
||||
debug = true
|
||||
@@ -43,6 +47,11 @@
|
||||
fullCover = false
|
||||
centerHeadline = false
|
||||
style = ""
|
||||
[home.feature]
|
||||
orientation = "horizontal"
|
||||
color = "primary"
|
||||
width = 4
|
||||
align = "start"
|
||||
# toml-docs-end home
|
||||
|
||||
# toml-docs-start navigation
|
||||
@@ -50,9 +59,9 @@
|
||||
anchor = true
|
||||
logo = "/img/logo_icon.svg"
|
||||
color = "body"
|
||||
fixed = true
|
||||
offset = "3.8em"
|
||||
offset = "5.5rem"
|
||||
search = true
|
||||
searchModal = false
|
||||
breadcrumb = true
|
||||
toc = true
|
||||
sidebar = true
|
||||
@@ -116,7 +125,7 @@
|
||||
# header = "full"
|
||||
# footer = "none"
|
||||
# orientation = "stacked"
|
||||
# style = "border-0 card-zoom"
|
||||
# style = "border-0 card-zoom card-body-margin"
|
||||
# homepage = 3
|
||||
# separator = true
|
||||
# toml-docs-end sections
|
||||
@@ -143,6 +152,7 @@
|
||||
themeFont = "Inter"
|
||||
# themeFontPath = "https://fonts.googleapis.com/css2?family=Inter:wght@200;300;600&display=swap" # external path
|
||||
themeFontPath = "/fonts" # local path
|
||||
fontSizeBase = "1rem" # assumes the browser default, typically '16px'
|
||||
# toml-docs-end font
|
||||
# toml-docs-start build
|
||||
purge = false
|
||||
|
@@ -19,6 +19,7 @@ const purgecss = require('@fullhuman/postcss-purgecss')({
|
||||
'./assets/scss/components/_syntax.scss',
|
||||
'./assets/scss/components/_syntax-dark.scss',
|
||||
'./assets/scss/components/_syntax-light.scss',
|
||||
'./assets/scss/components/_table.scss',
|
||||
'./assets/scss/theme/fonts.scss',
|
||||
'./assets/scss/theme/theme.scss',
|
||||
'./_vendor/github.com/gethinode/mod-flexsearch/assets/scss/modules/flexsearch/flexsearch.scss',
|
||||
|
@@ -1,13 +1,15 @@
|
||||
---
|
||||
title: Welcome to Hinode!
|
||||
description: A clean documentation and blog theme for your Hugo site based on Bootstrap 5.
|
||||
thumbnail:
|
||||
url: /img/sunrise.jpg
|
||||
author: Harris Vo
|
||||
authorURL: https://unsplash.com/@hoanvokim
|
||||
origin: https://unsplash.com/photos/ZX6BPboJrYk
|
||||
originName: Unsplash
|
||||
actions:
|
||||
get-started:
|
||||
url: "https://gethinode.com/docs"
|
||||
title: "Get started"
|
||||
icon: "fas book-open"
|
||||
---
|
||||
|
||||
A clean documentation and blog theme for your Hugo site based on Bootstrap 5.
|
||||
|
||||
{{< button href="https://gethinode.com/docs" icon="fas book-open" order="first" >}}Get Started{{< /button>}}
|
||||
|
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 |
@@ -7,10 +7,12 @@
|
||||
[main.externalLinks]
|
||||
cue = true
|
||||
tab = true
|
||||
[main.build]
|
||||
transpiler = "dartsass"
|
||||
|
||||
[modules]
|
||||
core = ["bootstrap", "flexsearch", "fontawesome"]
|
||||
optional = ["leaflet", "katex"]
|
||||
optional = ["leaflet", "katex", "lottie"]
|
||||
excludeSCSS = ["bootstrap"]
|
||||
disableTemplate = ["katex"]
|
||||
[modules.fontawesome]
|
||||
@@ -34,14 +36,20 @@
|
||||
fullCover = false
|
||||
centerHeadline = false
|
||||
style = ""
|
||||
[home.feature]
|
||||
orientation = "horizontal"
|
||||
color = "primary"
|
||||
width = 4
|
||||
align = "start"
|
||||
|
||||
[navigation]
|
||||
anchor = true
|
||||
logo = "/img/logo_icon.svg"
|
||||
color = "body"
|
||||
fixed = true
|
||||
offset = "3.8em"
|
||||
offset = "5.5rem"
|
||||
search = true
|
||||
searchModal = false
|
||||
breadcrumb = true
|
||||
toc = true
|
||||
sidebar = true
|
||||
@@ -98,7 +106,7 @@
|
||||
header = "full"
|
||||
footer = "none"
|
||||
orientation = "stacked"
|
||||
style = "border-0 card-zoom"
|
||||
style = "border-0 card-zoom card-body-margin"
|
||||
homepage = 3
|
||||
separator = true
|
||||
[sections.projects]
|
||||
@@ -113,7 +121,7 @@
|
||||
padding = "3"
|
||||
header = "none"
|
||||
footer = "tags"
|
||||
orientation = "horizontal"
|
||||
orientation = "horizontal-sm"
|
||||
style = "border-1 card-emphasize"
|
||||
homepage = 3
|
||||
separator = false
|
||||
|
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
|
||||
title: Welcome to Hinode!
|
||||
description: A clean documentation and blog theme for your Hugo site based on Bootstrap 5.
|
||||
thumbnail:
|
||||
url: /img/sunrise.jpg
|
||||
author: Harris Vo
|
||||
authorURL: https://unsplash.com/@hoanvokim
|
||||
origin: https://unsplash.com/photos/ZX6BPboJrYk
|
||||
originName: Unsplash
|
||||
actions:
|
||||
about:
|
||||
url: "about"
|
||||
title: "About"
|
||||
---
|
||||
|
||||
A clean documentation and blog theme for your Hugo site based on Bootstrap 5.
|
||||
|
||||
{{< button href="about" >}}About{{< /button>}}
|
||||
|
@@ -135,7 +135,7 @@ As an example, the following shortcode displays a card group of three elements.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* card-group padding="3" */>}}
|
||||
{{</* card-group padding="3" gutter="3" */>}}
|
||||
{{</* card title="Bootstrap framework" icon="fab bootstrap" */>}}
|
||||
Build fast, responsive sites with Bootstrap 5. Easily customize your site with the source
|
||||
Sass files.
|
||||
@@ -241,13 +241,14 @@ Use the `file` shortcode to print and highlight the full content of a given inpu
|
||||
|
||||
## Icon
|
||||
|
||||
As an example, the following shortcodes show a square check, a brand logo, and a circle check.
|
||||
As an example, the following shortcodes show a square check, a brand logo, a circle check, and a custom icon.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* fa square-check */>}}
|
||||
{{</* fab linkedin */>}}
|
||||
{{</* fas circle-check */>}}
|
||||
{{</* icon custom activity */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
@@ -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" case=false /*/>}}
|
||||
- {{</* link "/about/" /*/>}}
|
||||
- {{</* link "/fr/about/" /*/>}}
|
||||
- {{</* link "/fr/about" >}}About (French){{< /link */>}}
|
||||
- {{</* link "about" /*/>}}
|
||||
- {{</* link "/fr/a-propos/" /*/>}}
|
||||
- {{</* link "/fr/a-propos" >}}About (French){{< /link */>}}
|
||||
- {{</* link "#image" /*/>}}
|
||||
- {{</* link "components/#map" /*/>}}
|
||||
|
||||
|
@@ -1,7 +1,7 @@
|
||||
---
|
||||
author: Mark Dumay
|
||||
title: Components
|
||||
date: 2023-07-21
|
||||
date: 2023-09-23
|
||||
description: Use shortcodes to add predefined components powered by external libraries.
|
||||
tags: ["bootstrap", "shortcode"]
|
||||
thumbnail:
|
||||
@@ -10,11 +10,21 @@ thumbnail:
|
||||
authorURL: https://unsplash.com/@ryoji__iwata
|
||||
origin: Unsplash
|
||||
originURL: https://unsplash.com/photos/5siQcvSxCP8
|
||||
modules: ["katex", "leaflet"]
|
||||
modules: ["katex", "leaflet", "lottie"]
|
||||
---
|
||||
|
||||
Hinode provides several shortcodes on top of the common [Bootstrap elements]({{< relref "bootstrap-elements" >}}). Refer to the [official documentation]({{< param "links.hinode_docs" >}}) for more details.
|
||||
|
||||
## Animation
|
||||
|
||||
As an example, the following shortcode shows an animation that plays on hover.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* animation data="gatin.json" auto=false hover=true class="col-6 mx-auto" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Formula (KaTeX)
|
||||
|
||||
As an example, the following markdown renders two formulas using the KaTeX typesetting library.
|
||||
|
@@ -1,14 +1,15 @@
|
||||
---
|
||||
author: Mark Dumay
|
||||
title: Bienvenue sur Hinode!
|
||||
description: Un thème de blog et de documentation pour Hugo basé sur Bootstrap 5.
|
||||
thumbnail:
|
||||
url: /img/sunrise.jpg
|
||||
author: Harris Vo
|
||||
authorURL: https://unsplash.com/@hoanvokim
|
||||
origin: https://unsplash.com/photos/ZX6BPboJrYk
|
||||
originName: Unsplash
|
||||
actions:
|
||||
about:
|
||||
url: "a-propos"
|
||||
title: "À propos"
|
||||
---
|
||||
|
||||
Un thème de blog et de documentation pour Hugo basé sur Bootstrap 5.
|
||||
|
||||
{{< button href="a-propos" >}}À propos{{< /button>}}
|
||||
|
@@ -31,9 +31,4 @@ Les fonctionnalités supplémentaires incluent:
|
||||
- Gestion d'images adaptatives pour plusieurs tailles d'écran et résolutions.
|
||||
- Résultats de recherche optimisés, obtenant un score de 100 points pour le référencement (SEO) sur [PageSpeed Insights]({{< param "links.pagespeed" >}}).
|
||||
- Sécurisé par défaut, obtenant un score A+ au test [Mozilla Observatory]({{< param "links.observatory" >}})
|
||||
{.tickmark}
|
||||
|
||||
Hinode est inspiré par les thèmes suivants:
|
||||
|
||||
- [Blist](https://github.com/apvarun/blist-hugo-theme) - Un thème de blog pour Hugo basé sur Tailwind CSS.
|
||||
- [Doks](https://github.com/h-enk/doks) - Un thème Hugo pour la création de sites de documentation sécurisés, rapides et optimisés pour le référencement (SEO), que vous pouvez facilement mettre à jour et personnaliser.
|
||||
{.tickmark}
|
||||
|
@@ -1,6 +1,7 @@
|
||||
---
|
||||
author: Mark Dumay
|
||||
title: Éléments Bootstrap
|
||||
slug: elements-bootstrap
|
||||
date: 2023-08-12
|
||||
description: Utilisez des shortcodes pour ajouter facilement des éléments Bootstrap courants.
|
||||
tags: ["bootstrap", "shortcode"]
|
||||
@@ -14,6 +15,16 @@ thumbnail:
|
||||
|
||||
Hinode propose plusieurs shortcodes qui enveloppent des composants Bootstrap courants. Consultez la [documentation officielle]({{< param "links.hinode_docs" >}}) pour plus de détails.
|
||||
|
||||
## Abbr
|
||||
|
||||
À titre d'exemple, le shortcode suivant affiche le texte complet d'une abréviation lorsque survolé.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* abbr "CI/CD" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Accordéon
|
||||
|
||||
À titre d'exemple, le shortcode suivant affiche un accordéon avec trois éléments, dont le premier élément est déplié.
|
||||
@@ -124,7 +135,7 @@ En-tête 6 {{</* badge title="Nouveau" */>}}
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* card-group padding="3" */>}}
|
||||
{{</* card-group padding="3" gutter="3" */>}}
|
||||
{{</* card title="Framework Bootstrap" icon="fab bootstrap" */>}}
|
||||
Créez des sites rapides et réactifs avec Bootstrap 5. Personnalisez facilement votre site
|
||||
avec les fichiers source Sass.
|
||||
@@ -284,15 +295,25 @@ 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" case=false /*/>}}
|
||||
- {{</* link "/about/" /*/>}}
|
||||
- {{</* link "/fr/about/" /*/>}}
|
||||
- {{</* link "/fr/about" >}}About (French){{< /link */>}}
|
||||
- {{</* link "about" /*/>}}
|
||||
- {{</* link "/en/about/" /*/>}}
|
||||
- {{</* link "/en/about" >}}About (Anglais){{< /link */>}}
|
||||
- {{</* link "#image" /*/>}}
|
||||
- {{</* link "components/#map" /*/>}}
|
||||
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Mark
|
||||
|
||||
Utilisez le shortcode `mark` pour mettre en évidence le texte. Le contenu interne est utilisé en tant qu'entrée.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
Utilisez le shortcode `mark` pour {{</* mark >}}mettre en évidence{{< /mark */>}} un texte spécifique.
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Navigation
|
||||
|
||||
À titre d'exemple, le shortcode suivant affiche un groupe d'onglets avec des onglets alignés verticalement.
|
||||
@@ -346,6 +367,26 @@ Chargement...
|
||||
{{< /example>}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Sub
|
||||
|
||||
À titre d'exemple, le shortcode suivant affiche du texte en indice.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example >}}
|
||||
H{{</* sub 2 */>}}O est un liquide.
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Sup
|
||||
|
||||
À titre d'exemple, le shortcode suivant affiche du texte en exposant.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example >}}
|
||||
2{{</* sup 10 */>}} équivaut à 1024.
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Chronologie
|
||||
|
||||
À titre d'exemple, le shortcode suivant affiche une chronologie avec le fichier `data/timeline-fr.yml` en tant que données.
|
||||
|
@@ -1,6 +1,7 @@
|
||||
---
|
||||
author: Mark Dumay
|
||||
title: Components
|
||||
title: Composents
|
||||
slug: composents
|
||||
date: 2023-07-21
|
||||
description: Utilisez des shortcodes pour ajouter des composants prédéfinis alimentés par des bibliothèques externes.
|
||||
tags: ["bootstrap", "shortcode"]
|
||||
@@ -10,11 +11,21 @@ thumbnail:
|
||||
authorURL: https://unsplash.com/@ryoji__iwata
|
||||
origin: Unsplash
|
||||
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.
|
||||
|
||||
## Animation
|
||||
|
||||
À titre d'exemple, le shortcode suivant affiche une animation qui se déclenche au survol.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* animation data="gatin.json" auto=false hover=true class="col-6 mx-auto" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Formule (KaTeX)
|
||||
|
||||
À titre d'exemple, le markdown suivant affiche deux formules en utilisant la bibliothèque de composition typographique KaTeX.
|
||||
|
@@ -1,14 +1,15 @@
|
||||
---
|
||||
author: Mark Dumay
|
||||
title: Welkom bij Hinode!
|
||||
description: Een documentatie en blog thema voor Hugo gebaseerd op Bootstrap 5.
|
||||
thumbnail:
|
||||
url: /img/sunrise.jpg
|
||||
author: Harris Vo
|
||||
authorURL: https://unsplash.com/@hoanvokim
|
||||
origin: https://unsplash.com/photos/ZX6BPboJrYk
|
||||
originName: Unsplash
|
||||
actions:
|
||||
about:
|
||||
url: "over-mij"
|
||||
title: "Over mij"
|
||||
---
|
||||
|
||||
Een documentatie en blog thema voor Hugo gebaseerd op Bootstrap 5.
|
||||
|
||||
{{< button href="over-mij" >}}Over mij{{< /button>}}
|
||||
|
@@ -33,8 +33,3 @@ Overige functies:
|
||||
* Optimale zoekresultaten, met 100 punten voor SEO volgens [PageSpeed Insights]({{< param "links.pagespeed" >}})
|
||||
* Veilige communicatie, met een score van A+ volgens [Mozilla Observatory]({{< param "links.observatory" >}})
|
||||
{.tickmark}
|
||||
|
||||
Hinode is geinspireerd door de volgende thema's:
|
||||
|
||||
* [Blist](https://github.com/apvarun/blist-hugo-theme) - een blog thema voor Hugo op basis van Tailwind CSS.
|
||||
* [Doks](https://github.com/h-enk/doks) - een Hugo thema voor het bouwen van veilige, snelle, en SEO-geoptimaliseerde documentatiesites, die je eenvoudig kunt actualiseren en aanpassen.
|
||||
|
@@ -8,4 +8,4 @@
|
||||
long: "Scalable Vector Graphics"
|
||||
|
||||
- id: ci/cd
|
||||
long: "Continous Integration/Continuous Deployment"
|
||||
long: "Continuous Integration/Continuous Deployment"
|
||||
|
@@ -3,9 +3,4 @@ module github.com/gethinode/hinode-test
|
||||
go 1.19
|
||||
|
||||
require (
|
||||
github.com/gethinode/mod-bootstrap v1.1.1 // indirect
|
||||
github.com/gethinode/mod-flexsearch v1.4.0 // indirect
|
||||
github.com/gethinode/mod-fontawesome v1.2.5 // indirect
|
||||
github.com/gethinode/mod-katex v1.0.2 // indirect
|
||||
github.com/gethinode/mod-leaflet v0.3.4 // indirect
|
||||
)
|
||||
|
@@ -1,17 +1,51 @@
|
||||
github.com/gethinode/mod-bootstrap v1.1.1 h1:Tx4M5hGVOFrEaxnUONDAm6N9xuRi5UphKlT7F26HujU=
|
||||
github.com/gethinode/mod-bootstrap v1.1.1/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
|
||||
github.com/gethinode/mod-bootstrap v1.2.0 h1:JkTcImU3qpi25WgKvUxUYiMoiXtrxrG+Wf/utRB5UbU=
|
||||
github.com/gethinode/mod-bootstrap v1.2.0/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
|
||||
github.com/gethinode/mod-bootstrap v1.2.1 h1:z54dgsbhShhlri+X77Z+yLrg0wz/f8C8ojA/wnlhsJc=
|
||||
github.com/gethinode/mod-bootstrap v1.2.1/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
|
||||
github.com/gethinode/mod-flexsearch v1.2.0 h1:SSMpWzK9SMbi9QRYfil9PJZLLWWLHWzlTc69UxtSWAA=
|
||||
github.com/gethinode/mod-flexsearch v1.2.0/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
||||
github.com/gethinode/mod-flexsearch v1.3.0 h1:RbfEDw219Y1rOVp9lHmy5ePdF9lyPalDu2J5oVeejrU=
|
||||
github.com/gethinode/mod-flexsearch v1.3.0/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
||||
github.com/gethinode/mod-flexsearch v1.4.0 h1:5e/NVRLyWzUZ9fO/fNsM5o+O7nw+xyln2rfEOtbgfWc=
|
||||
github.com/gethinode/mod-flexsearch v1.4.0/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
||||
github.com/gethinode/mod-flexsearch v1.4.1 h1:z+GKvhJ4v6BsZsWVZRgbO9WcmSZEVUkb3Q9a09yXtd8=
|
||||
github.com/gethinode/mod-flexsearch v1.4.1/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
||||
github.com/gethinode/mod-flexsearch v1.5.1 h1:9fYlnHgiEXckL0EoC0zlSNO7BWZf5yiOroSWT13Kphc=
|
||||
github.com/gethinode/mod-flexsearch v1.5.1/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
||||
github.com/gethinode/mod-fontawesome v1.2.4 h1:SqE3CQ+boaBIhrVh3MPu4nz0uoHPfEH5t60nNY1CfsI=
|
||||
github.com/gethinode/mod-fontawesome v1.2.4/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||
github.com/gethinode/mod-fontawesome v1.2.5 h1:RqkLRj6+s+gM4nKd0IwNMMDA8cRmxfp0fxkVH4FdAGU=
|
||||
github.com/gethinode/mod-fontawesome v1.2.5/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||
github.com/gethinode/mod-fontawesome v1.3.0 h1:oudeDBlAKu8vqYxumWuq5SG5F5itm33NgTrBLgvPulQ=
|
||||
github.com/gethinode/mod-fontawesome v1.3.0/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||
github.com/gethinode/mod-fontawesome v1.3.1 h1:EdnBuG2B+bi06OcYmcL1NfSxHpRMEGu8TXUqEEpVH4g=
|
||||
github.com/gethinode/mod-fontawesome v1.3.1/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||
github.com/gethinode/mod-fontawesome v1.3.2 h1:qLJSbAFR2T33BuBtC2Iulm9wZql3cy7AhXjxc2YGzBU=
|
||||
github.com/gethinode/mod-fontawesome v1.3.2/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||
github.com/gethinode/mod-fontawesome v1.4.0 h1:JfmVYwQl19jmZxgxY64yvGqJAAEiFkKf2dbZ5Iv08Qw=
|
||||
github.com/gethinode/mod-fontawesome v1.4.0/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||
github.com/gethinode/mod-fontawesome v1.5.0 h1:3mW5dnWauuF9wSWXNIY+PPgTNPlc/xQOQoG7XGic1Yk=
|
||||
github.com/gethinode/mod-fontawesome v1.5.0/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||
github.com/gethinode/mod-katex v1.0.1/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
|
||||
github.com/gethinode/mod-katex v1.0.2 h1:pIG4n3qLl/IVe7BEiwn+GL8r5lOCtF6FDxlcrPKdAXk=
|
||||
github.com/gethinode/mod-katex v1.0.2/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
|
||||
github.com/gethinode/mod-katex v1.0.3 h1:fvlUWqcUQqv2zRNM2kfmJ6GhXA816Tl1nfVrUkmBStI=
|
||||
github.com/gethinode/mod-katex v1.0.3/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
|
||||
github.com/gethinode/mod-leaflet v0.3.4 h1:oY+YQ0JiJuhFQNrk9XgFdg0NMsTUQPXNfnILp4ia4r4=
|
||||
github.com/gethinode/mod-leaflet v0.3.4/go.mod h1:uGggt87x4Fw7wBoJpSiUvNkYg+s/Ujne7klAX2rxMRk=
|
||||
github.com/gethinode/mod-leaflet v0.3.5 h1:69Bv/6zRXhbcTzo7TMr58h3ry47srHRpM1k81LrLbYU=
|
||||
github.com/gethinode/mod-leaflet v0.3.5/go.mod h1:uGggt87x4Fw7wBoJpSiUvNkYg+s/Ujne7klAX2rxMRk=
|
||||
github.com/gethinode/mod-lottie v1.0.0 h1:1CUZMcgN5FAyjjyuP3qkaOQ6M5sv6HUAbosW4sIT5VE=
|
||||
github.com/gethinode/mod-lottie v1.0.0/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=
|
||||
github.com/gethinode/mod-lottie v1.0.1 h1:+IE7xtnSVQpJS56oBJq9RWKZeFEfxrOZAqE3BSrS/u0=
|
||||
github.com/gethinode/mod-lottie v1.0.1/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=
|
||||
github.com/gethinode/mod-lottie v1.0.2 h1:QM/PJqEl1UhNNoPx6y7pVtwev/mDxUyWNHLqDB76YzI=
|
||||
github.com/gethinode/mod-lottie v1.0.2/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=
|
||||
github.com/gethinode/mod-lottie v1.1.0 h1:KnfOQ45xdv1tpsKCkF5OiE3QuT29ycppBfY6o+rWl/4=
|
||||
github.com/gethinode/mod-lottie v1.1.0/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=
|
||||
github.com/gethinode/mod-lottie v1.2.0 h1:9S0Y4PlEO66dIvFxayatmDEf8WWxqbLNLi4z563i2gM=
|
||||
github.com/gethinode/mod-lottie v1.2.0/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=
|
||||
github.com/gethinode/mod-lottie v1.3.0 h1:vQ8CXkjdp2IeFskTzu+ZnKOEio8GtN08urVK+oCH81E=
|
||||
github.com/gethinode/mod-lottie v1.3.0/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=
|
||||
|
@@ -65,10 +65,11 @@
|
||||
"bg-body",
|
||||
"bg-body-tertiary",
|
||||
"bg-danger",
|
||||
"bg-info",
|
||||
"bg-opacity-10",
|
||||
"bg-primary",
|
||||
"bg-primary-subtle",
|
||||
"bi",
|
||||
"bi-activity",
|
||||
"border",
|
||||
"border-0",
|
||||
"border-1",
|
||||
@@ -94,7 +95,9 @@
|
||||
"card",
|
||||
"card-body",
|
||||
"card-body-link",
|
||||
"card-body-margin",
|
||||
"card-emphasize",
|
||||
"card-icon",
|
||||
"card-img-top",
|
||||
"card-img-wrap",
|
||||
"card-text",
|
||||
@@ -117,7 +120,6 @@
|
||||
"col-6",
|
||||
"col-8",
|
||||
"col-9",
|
||||
"col-lg-2",
|
||||
"col-lg-4",
|
||||
"col-lg-8",
|
||||
"col-md-10",
|
||||
@@ -133,12 +135,12 @@
|
||||
"container",
|
||||
"container-fluid",
|
||||
"container-xxl",
|
||||
"custom",
|
||||
"d-block",
|
||||
"d-flex",
|
||||
"d-grid",
|
||||
"d-inline",
|
||||
"d-inline-flex",
|
||||
"d-lg-block",
|
||||
"d-md-block",
|
||||
"d-md-flex",
|
||||
"d-md-none",
|
||||
@@ -163,6 +165,7 @@
|
||||
"fa-2x",
|
||||
"fa-2xs",
|
||||
"fa-4x",
|
||||
"fa-activity",
|
||||
"fa-arrow-left",
|
||||
"fa-arrow-right",
|
||||
"fa-bootstrap",
|
||||
@@ -213,8 +216,9 @@
|
||||
"fw-semibold",
|
||||
"g-0",
|
||||
"g-3",
|
||||
"g-4",
|
||||
"gap-1",
|
||||
"gap-2",
|
||||
"gap-3",
|
||||
"gradient",
|
||||
"h-100",
|
||||
"h1",
|
||||
@@ -243,11 +247,12 @@
|
||||
"link-secondary",
|
||||
"link-success",
|
||||
"link-warning",
|
||||
"lottie-animation",
|
||||
"m-0",
|
||||
"main-content",
|
||||
"main-nav-toggler",
|
||||
"mb-0",
|
||||
"mb-3",
|
||||
"mb-4",
|
||||
"mb-5",
|
||||
"mb-lg-5",
|
||||
"me-3",
|
||||
@@ -265,10 +270,12 @@
|
||||
"multi-docs-collapse-15",
|
||||
"multi-file-collapse-1",
|
||||
"mx-auto",
|
||||
"mx-md-0",
|
||||
"mx-md-2",
|
||||
"my-2",
|
||||
"my-auto",
|
||||
"my-md-0",
|
||||
"my-md-auto",
|
||||
"nav",
|
||||
"nav-item",
|
||||
"nav-link",
|
||||
@@ -279,18 +286,17 @@
|
||||
"navbar-collapse",
|
||||
"navbar-contrast",
|
||||
"navbar-expand-md",
|
||||
"navbar-fixed-top",
|
||||
"navbar-nav",
|
||||
"navbar-nav-scroll",
|
||||
"navbar-toggler",
|
||||
"next",
|
||||
"no-js",
|
||||
"order-0",
|
||||
"order-1",
|
||||
"order-2",
|
||||
"order-3",
|
||||
"order-4",
|
||||
"order-first",
|
||||
"order-sm-2",
|
||||
"order-sm-3",
|
||||
"order-md-0",
|
||||
"order-md-1",
|
||||
"p-0",
|
||||
"p-1",
|
||||
"p-2",
|
||||
@@ -298,7 +304,9 @@
|
||||
"p-4",
|
||||
"pb-2",
|
||||
"pb-3",
|
||||
"pb-4",
|
||||
"pb-5",
|
||||
"pb-md-0",
|
||||
"pe-3",
|
||||
"position-absolute",
|
||||
"position-fixed",
|
||||
@@ -308,14 +316,14 @@
|
||||
"ps-1",
|
||||
"ps-3",
|
||||
"ps-xl-3",
|
||||
"pt-3",
|
||||
"px-3",
|
||||
"pt-4",
|
||||
"pt-5",
|
||||
"pt-md-3",
|
||||
"px-4",
|
||||
"px-xxl-0",
|
||||
"py-1",
|
||||
"py-2",
|
||||
"py-3",
|
||||
"py-5",
|
||||
"py-md-1",
|
||||
"ratio",
|
||||
"ratio-16x9",
|
||||
@@ -327,10 +335,10 @@
|
||||
"row",
|
||||
"row-cols-1",
|
||||
"row-cols-2",
|
||||
"row-cols-md-2",
|
||||
"row-cols-md-3",
|
||||
"row-cols-sm-2",
|
||||
"row-cols-sm-3",
|
||||
"row-cols-sm-4",
|
||||
"search",
|
||||
"search-input",
|
||||
"search-suggestions",
|
||||
@@ -362,10 +370,12 @@
|
||||
"text-decoration-none",
|
||||
"text-end",
|
||||
"text-info",
|
||||
"text-muted",
|
||||
"text-nowrap",
|
||||
"text-right",
|
||||
"text-secondary",
|
||||
"text-sm-start",
|
||||
"text-start",
|
||||
"text-uppercase",
|
||||
"theme-icon",
|
||||
"theme-icon-active",
|
||||
@@ -416,10 +426,16 @@
|
||||
"accordion-0-item-0",
|
||||
"accordion-0-item-1",
|
||||
"accordion-0-item-2",
|
||||
"accordéon",
|
||||
"alert",
|
||||
"alerte",
|
||||
"animation",
|
||||
"badge",
|
||||
"barre-de-navigation",
|
||||
"blog",
|
||||
"body-docs-collapse-15",
|
||||
"body-file-collapse-1",
|
||||
"bouton",
|
||||
"breadcrumb",
|
||||
"btn-webshare",
|
||||
"button",
|
||||
@@ -428,19 +444,34 @@
|
||||
"card-group",
|
||||
"carousel",
|
||||
"carousel-0",
|
||||
"carrousel",
|
||||
"carte",
|
||||
"chronologie",
|
||||
"collapse",
|
||||
"collapse-1",
|
||||
"command-prompt",
|
||||
"docs",
|
||||
"documentation",
|
||||
"example",
|
||||
"exemple",
|
||||
"fichier",
|
||||
"fil-dariane",
|
||||
"file",
|
||||
"footer-docs-collapse-15",
|
||||
"footer-file-collapse-1",
|
||||
"formula-katex",
|
||||
"formule-katex",
|
||||
"groupe-de-boutons",
|
||||
"groupe-de-cartes",
|
||||
"icon",
|
||||
"image",
|
||||
"indicateur-de-chargement",
|
||||
"infobulle",
|
||||
"invite-de-commandes",
|
||||
"leaflet-map-0",
|
||||
"lien",
|
||||
"link",
|
||||
"lottie-animation-0",
|
||||
"map",
|
||||
"mark",
|
||||
"nav",
|
||||
@@ -454,7 +485,14 @@
|
||||
"navbar",
|
||||
"navbar-0-collapse",
|
||||
"navbar-sample-collapse",
|
||||
"navigation",
|
||||
"notification",
|
||||
"projecten",
|
||||
"projects",
|
||||
"projets",
|
||||
"publication",
|
||||
"release",
|
||||
"réduire",
|
||||
"spinner",
|
||||
"sub",
|
||||
"sup",
|
||||
@@ -469,4 +507,4 @@
|
||||
"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
|
||||
|
||||
require (
|
||||
github.com/gethinode/mod-bootstrap v1.1.1 // indirect
|
||||
github.com/gethinode/mod-flexsearch v1.4.0 // indirect
|
||||
github.com/gethinode/mod-fontawesome v1.2.5 // indirect
|
||||
github.com/gethinode/mod-katex v1.0.2 // indirect
|
||||
github.com/gethinode/mod-leaflet v0.3.4 // indirect
|
||||
github.com/gethinode/mod-bootstrap v1.2.1 // indirect
|
||||
github.com/gethinode/mod-flexsearch v1.5.1 // indirect
|
||||
github.com/gethinode/mod-fontawesome v1.5.0 // indirect
|
||||
github.com/gethinode/mod-katex v1.0.3 // indirect
|
||||
github.com/gethinode/mod-leaflet v0.3.5 // indirect
|
||||
github.com/gethinode/mod-lottie v1.3.0 // indirect
|
||||
)
|
||||
|
34
go.sum
34
go.sum
@@ -4,6 +4,10 @@ github.com/gethinode/mod-bootstrap v1.1.0 h1:BbalsW8kmFhv+J+dcc41TGcjIlM/p69AB0h
|
||||
github.com/gethinode/mod-bootstrap v1.1.0/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
|
||||
github.com/gethinode/mod-bootstrap v1.1.1 h1:Tx4M5hGVOFrEaxnUONDAm6N9xuRi5UphKlT7F26HujU=
|
||||
github.com/gethinode/mod-bootstrap v1.1.1/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
|
||||
github.com/gethinode/mod-bootstrap v1.2.0 h1:JkTcImU3qpi25WgKvUxUYiMoiXtrxrG+Wf/utRB5UbU=
|
||||
github.com/gethinode/mod-bootstrap v1.2.0/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
|
||||
github.com/gethinode/mod-bootstrap v1.2.1 h1:z54dgsbhShhlri+X77Z+yLrg0wz/f8C8ojA/wnlhsJc=
|
||||
github.com/gethinode/mod-bootstrap v1.2.1/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
|
||||
github.com/gethinode/mod-flexsearch v1.0.1 h1:FJkRsUzSnQTXl3MWCigT4E6vfff870UWTnkGqaDGIhA=
|
||||
github.com/gethinode/mod-flexsearch v1.0.1/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
||||
github.com/gethinode/mod-flexsearch v1.1.0 h1:7BCMyQDlYlskNXuazt8Jg/jg9WREexu2xVkYqThkAX4=
|
||||
@@ -22,6 +26,10 @@ github.com/gethinode/mod-flexsearch v1.3.0 h1:RbfEDw219Y1rOVp9lHmy5ePdF9lyPalDu2
|
||||
github.com/gethinode/mod-flexsearch v1.3.0/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
||||
github.com/gethinode/mod-flexsearch v1.4.0 h1:5e/NVRLyWzUZ9fO/fNsM5o+O7nw+xyln2rfEOtbgfWc=
|
||||
github.com/gethinode/mod-flexsearch v1.4.0/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
||||
github.com/gethinode/mod-flexsearch v1.4.1 h1:z+GKvhJ4v6BsZsWVZRgbO9WcmSZEVUkb3Q9a09yXtd8=
|
||||
github.com/gethinode/mod-flexsearch v1.4.1/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
||||
github.com/gethinode/mod-flexsearch v1.5.1 h1:9fYlnHgiEXckL0EoC0zlSNO7BWZf5yiOroSWT13Kphc=
|
||||
github.com/gethinode/mod-flexsearch v1.5.1/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
||||
github.com/gethinode/mod-fontawesome v1.0.2 h1:ZSK6D20/w4y5GnfYfTBB58uHD0ChIfkpKfRGwioS9rg=
|
||||
github.com/gethinode/mod-fontawesome v1.0.2/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||
github.com/gethinode/mod-fontawesome v1.1.0 h1:rsDzUI+3ZlS/do2ff3ne8/z3KwHeysmuA+WsXlumXXk=
|
||||
@@ -38,12 +46,24 @@ github.com/gethinode/mod-fontawesome v1.2.4 h1:SqE3CQ+boaBIhrVh3MPu4nz0uoHPfEH5t
|
||||
github.com/gethinode/mod-fontawesome v1.2.4/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||
github.com/gethinode/mod-fontawesome v1.2.5 h1:RqkLRj6+s+gM4nKd0IwNMMDA8cRmxfp0fxkVH4FdAGU=
|
||||
github.com/gethinode/mod-fontawesome v1.2.5/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||
github.com/gethinode/mod-fontawesome v1.3.0 h1:oudeDBlAKu8vqYxumWuq5SG5F5itm33NgTrBLgvPulQ=
|
||||
github.com/gethinode/mod-fontawesome v1.3.0/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||
github.com/gethinode/mod-fontawesome v1.3.1 h1:EdnBuG2B+bi06OcYmcL1NfSxHpRMEGu8TXUqEEpVH4g=
|
||||
github.com/gethinode/mod-fontawesome v1.3.1/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||
github.com/gethinode/mod-fontawesome v1.3.2 h1:qLJSbAFR2T33BuBtC2Iulm9wZql3cy7AhXjxc2YGzBU=
|
||||
github.com/gethinode/mod-fontawesome v1.3.2/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||
github.com/gethinode/mod-fontawesome v1.4.0 h1:JfmVYwQl19jmZxgxY64yvGqJAAEiFkKf2dbZ5Iv08Qw=
|
||||
github.com/gethinode/mod-fontawesome v1.4.0/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||
github.com/gethinode/mod-fontawesome v1.5.0 h1:3mW5dnWauuF9wSWXNIY+PPgTNPlc/xQOQoG7XGic1Yk=
|
||||
github.com/gethinode/mod-fontawesome v1.5.0/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||
github.com/gethinode/mod-katex v1.0.0 h1:me/3dIIZBkfk1mRIFt8QiAGYwYDoSG5bc2hHRtIutFc=
|
||||
github.com/gethinode/mod-katex v1.0.0/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
|
||||
github.com/gethinode/mod-katex v1.0.1 h1:809QUztxmKgMNchU+v03iMO7Ma+ISc3ZzhXYauc21rs=
|
||||
github.com/gethinode/mod-katex v1.0.1/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
|
||||
github.com/gethinode/mod-katex v1.0.2 h1:pIG4n3qLl/IVe7BEiwn+GL8r5lOCtF6FDxlcrPKdAXk=
|
||||
github.com/gethinode/mod-katex v1.0.2/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
|
||||
github.com/gethinode/mod-katex v1.0.3 h1:fvlUWqcUQqv2zRNM2kfmJ6GhXA816Tl1nfVrUkmBStI=
|
||||
github.com/gethinode/mod-katex v1.0.3/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
|
||||
github.com/gethinode/mod-leaflet v0.2.3 h1:QQI4h+IH0jZ7fx4q0um2YIEiYBoW3OAfW8qHzbRCDPk=
|
||||
github.com/gethinode/mod-leaflet v0.2.3/go.mod h1:uGggt87x4Fw7wBoJpSiUvNkYg+s/Ujne7klAX2rxMRk=
|
||||
github.com/gethinode/mod-leaflet v0.3.1 h1:H5MaOa+BB1KuVw7abTqfIn/SNzzRsAyx/WQoSe+2Ykc=
|
||||
@@ -52,3 +72,17 @@ github.com/gethinode/mod-leaflet v0.3.3 h1:isnjja6VRFvVWBatYSouh46TXSJg2C4/E2BQT
|
||||
github.com/gethinode/mod-leaflet v0.3.3/go.mod h1:uGggt87x4Fw7wBoJpSiUvNkYg+s/Ujne7klAX2rxMRk=
|
||||
github.com/gethinode/mod-leaflet v0.3.4 h1:oY+YQ0JiJuhFQNrk9XgFdg0NMsTUQPXNfnILp4ia4r4=
|
||||
github.com/gethinode/mod-leaflet v0.3.4/go.mod h1:uGggt87x4Fw7wBoJpSiUvNkYg+s/Ujne7klAX2rxMRk=
|
||||
github.com/gethinode/mod-leaflet v0.3.5 h1:69Bv/6zRXhbcTzo7TMr58h3ry47srHRpM1k81LrLbYU=
|
||||
github.com/gethinode/mod-leaflet v0.3.5/go.mod h1:uGggt87x4Fw7wBoJpSiUvNkYg+s/Ujne7klAX2rxMRk=
|
||||
github.com/gethinode/mod-lottie v1.0.0 h1:1CUZMcgN5FAyjjyuP3qkaOQ6M5sv6HUAbosW4sIT5VE=
|
||||
github.com/gethinode/mod-lottie v1.0.0/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=
|
||||
github.com/gethinode/mod-lottie v1.0.1 h1:+IE7xtnSVQpJS56oBJq9RWKZeFEfxrOZAqE3BSrS/u0=
|
||||
github.com/gethinode/mod-lottie v1.0.1/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=
|
||||
github.com/gethinode/mod-lottie v1.0.2 h1:QM/PJqEl1UhNNoPx6y7pVtwev/mDxUyWNHLqDB76YzI=
|
||||
github.com/gethinode/mod-lottie v1.0.2/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=
|
||||
github.com/gethinode/mod-lottie v1.1.0 h1:KnfOQ45xdv1tpsKCkF5OiE3QuT29ycppBfY6o+rWl/4=
|
||||
github.com/gethinode/mod-lottie v1.1.0/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=
|
||||
github.com/gethinode/mod-lottie v1.2.0 h1:9S0Y4PlEO66dIvFxayatmDEf8WWxqbLNLi4z563i2gM=
|
||||
github.com/gethinode/mod-lottie v1.2.0/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=
|
||||
github.com/gethinode/mod-lottie v1.3.0 h1:vQ8CXkjdp2IeFskTzu+ZnKOEio8GtN08urVK+oCH81E=
|
||||
github.com/gethinode/mod-lottie v1.3.0/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=
|
||||
|
@@ -8,7 +8,6 @@
|
||||
"footer",
|
||||
"form",
|
||||
"head",
|
||||
"hr",
|
||||
"html",
|
||||
"img",
|
||||
"input",
|
||||
@@ -16,7 +15,6 @@
|
||||
"link",
|
||||
"meta",
|
||||
"nav",
|
||||
"ol",
|
||||
"p",
|
||||
"path",
|
||||
"script",
|
||||
@@ -33,44 +31,32 @@
|
||||
"align-items-center",
|
||||
"align-self-center",
|
||||
"bg-body",
|
||||
"bg-info",
|
||||
"bg-opacity-10",
|
||||
"bg-primary",
|
||||
"bottom-0",
|
||||
"bottom-bar",
|
||||
"breadcrumb",
|
||||
"breadcrumb-item",
|
||||
"btn",
|
||||
"btn-close",
|
||||
"btn-primary",
|
||||
"btn-social",
|
||||
"col",
|
||||
"col-12",
|
||||
"col-lg-2",
|
||||
"col-lg-4",
|
||||
"col-6",
|
||||
"col-md-2",
|
||||
"col-md-4",
|
||||
"col-md-8",
|
||||
"col-md-auto",
|
||||
"col-sm-12",
|
||||
"col-sm-6",
|
||||
"collapse",
|
||||
"collapsed",
|
||||
"container-fluid",
|
||||
"container-xxl",
|
||||
"d-block",
|
||||
"d-flex",
|
||||
"d-inline",
|
||||
"d-lg-block",
|
||||
"d-md-block",
|
||||
"d-md-flex",
|
||||
"d-md-none",
|
||||
"d-none",
|
||||
"d-sm-none",
|
||||
"display-1",
|
||||
"display-4",
|
||||
"dropdown",
|
||||
"dropdown-divider-bg",
|
||||
"dropdown-item",
|
||||
"dropdown-menu",
|
||||
"dropdown-menu-end",
|
||||
@@ -84,21 +70,15 @@
|
||||
"fa-circle-half-stroke",
|
||||
"fa-ellipsis",
|
||||
"fa-face-frown",
|
||||
"fa-facebook",
|
||||
"fa-fw",
|
||||
"fa-github",
|
||||
"fa-link",
|
||||
"fa-linkedin",
|
||||
"fa-medium",
|
||||
"fa-moon",
|
||||
"fa-share-nodes",
|
||||
"fa-sun",
|
||||
"fa-whatsapp",
|
||||
"fa-x-twitter",
|
||||
"fab",
|
||||
"fas",
|
||||
"feature",
|
||||
"fixed-top",
|
||||
"flex-column",
|
||||
"flex-fill",
|
||||
"flex-grow-1",
|
||||
@@ -106,23 +86,21 @@
|
||||
"footer",
|
||||
"form-control",
|
||||
"fs-3",
|
||||
"fs-5",
|
||||
"fw-30",
|
||||
"fw-bold",
|
||||
"gap-2",
|
||||
"h-100",
|
||||
"hstack",
|
||||
"img-fluid",
|
||||
"img-wrap",
|
||||
"invisible",
|
||||
"is-search",
|
||||
"justify-content-center",
|
||||
"lead",
|
||||
"justify-content-end",
|
||||
"justify-content-start",
|
||||
"link-bg-footer",
|
||||
"link-secondary",
|
||||
"main-content",
|
||||
"main-nav-toggler",
|
||||
"mb-3",
|
||||
"mb-4",
|
||||
"mb-5",
|
||||
"me-auto",
|
||||
"middle-bar",
|
||||
"min-vh-100",
|
||||
@@ -131,8 +109,9 @@
|
||||
"mt-3",
|
||||
"mt-5",
|
||||
"mx-auto",
|
||||
"mx-md-2",
|
||||
"mx-md-0",
|
||||
"my-auto",
|
||||
"my-md-auto",
|
||||
"nav-item",
|
||||
"nav-link",
|
||||
"navbar",
|
||||
@@ -142,47 +121,44 @@
|
||||
"navbar-nav",
|
||||
"navbar-toggler",
|
||||
"no-js",
|
||||
"order-0",
|
||||
"order-1",
|
||||
"order-2",
|
||||
"order-3",
|
||||
"order-4",
|
||||
"order-first",
|
||||
"order-sm-2",
|
||||
"order-sm-3",
|
||||
"order-md-0",
|
||||
"order-md-1",
|
||||
"p-0",
|
||||
"p-2",
|
||||
"p-3",
|
||||
"p-4",
|
||||
"pb-5",
|
||||
"pe-1",
|
||||
"pb-4",
|
||||
"pb-md-0",
|
||||
"position-fixed",
|
||||
"position-relative",
|
||||
"px-3",
|
||||
"ps-1",
|
||||
"pt-4",
|
||||
"pt-5",
|
||||
"pt-md-3",
|
||||
"px-4",
|
||||
"px-xxl-0",
|
||||
"py-2",
|
||||
"py-3",
|
||||
"py-5",
|
||||
"py-md-1",
|
||||
"rounded",
|
||||
"row",
|
||||
"row-cols-1",
|
||||
"row-cols-2",
|
||||
"row-cols-md-2",
|
||||
"row-cols-sm-2",
|
||||
"row-cols-sm-3",
|
||||
"row-cols-sm-4",
|
||||
"search",
|
||||
"search-input",
|
||||
"search-suggestions",
|
||||
"shadow",
|
||||
"svg-inline--fa",
|
||||
"switch-mode-collapsed",
|
||||
"text-body-secondary",
|
||||
"text-center",
|
||||
"text-decoration-none",
|
||||
"text-end",
|
||||
"text-muted",
|
||||
"text-secondary",
|
||||
"text-sm-start",
|
||||
"text-uppercase",
|
||||
"text-start",
|
||||
"theme-icon",
|
||||
"theme-icon-active",
|
||||
"toast",
|
||||
@@ -191,17 +167,14 @@
|
||||
"toast-header",
|
||||
"toggler-icon",
|
||||
"top-bar",
|
||||
"vr",
|
||||
"w-100"
|
||||
],
|
||||
"ids": [
|
||||
"-theme",
|
||||
"-theme-collapsed",
|
||||
"btn-webshare",
|
||||
"navbar-0-collapse",
|
||||
"toast-container",
|
||||
"toast-copied-code-message",
|
||||
"toast-message-email-4"
|
||||
"toast-copied-code-message"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -25,6 +25,8 @@
|
||||
translation: "Articles"
|
||||
- id: more
|
||||
translation: "More {{ . }}"
|
||||
- id: emptyList
|
||||
translation: "No articles found"
|
||||
|
||||
# Sharing
|
||||
- id: shareLink
|
||||
@@ -39,6 +41,8 @@
|
||||
translation: "Link"
|
||||
- id: code
|
||||
translation: "Code"
|
||||
- id: download
|
||||
translation: "Download article"
|
||||
|
||||
# Pagination
|
||||
- id: paginationNav
|
||||
|
@@ -23,6 +23,8 @@
|
||||
translation: "Artikelen"
|
||||
- id: more
|
||||
translation: "Meer {{ . }}"
|
||||
- id: emptyList
|
||||
translation: "Geen artikelen gevonden"
|
||||
|
||||
# Sharing
|
||||
- id: shareLink
|
||||
@@ -37,6 +39,8 @@
|
||||
translation: "Link"
|
||||
- id: code
|
||||
translation: "Code"
|
||||
- id: download
|
||||
translation: "Download artikel"
|
||||
|
||||
# Pagination
|
||||
- id: paginationNav
|
||||
|
@@ -1,8 +1,30 @@
|
||||
{{- $section := .Section }}
|
||||
{{- define "partials/optional-scripts.html" -}}
|
||||
{{- $modules := site.Params.modules.optional | intersect .Params.modules -}}
|
||||
{{- range $index, $mod := $modules -}}
|
||||
{{- $filename := printf "js/%s.bundle.js" $mod -}}
|
||||
{{- $match := printf "js/modules/%s/**.js" $mod -}}
|
||||
{{- $skipTemplate := false -}}
|
||||
{{- if reflect.IsSlice site.Params.modules.disableTemplate -}}
|
||||
{{- if in site.Params.modules.disableTemplate $mod}}
|
||||
{{- $skipTemplate = true -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{ $state := "" }}
|
||||
{{- with (index site.Params.modules $mod) -}}
|
||||
{{- with index . "state" }}{{ $state = . }}{{ end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- partial "footer/scripts.html" (dict "filename" $filename "match" $match "header" false "skipTemplate" $skipTemplate "state" $state "page" .) }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* Set version-aware sidebar menu */ -}}
|
||||
{{- $version := partial "utilities/GetVersion.html" (dict "page" . "base" true) -}}
|
||||
{{- $.Scratch.Set "version" $version -}}
|
||||
{{ with partial "utilities/GetMenu" (dict "page" . "version" $version) }}{{ $.Scratch.Set "sidebar" . }}{{ end }}
|
||||
|
||||
{{- /* Validate if current version is latest */ -}}
|
||||
{{- if and site.Params.docs.checkVersion $version -}}
|
||||
{{- if ne $version "latest" -}}
|
||||
{{- if partial "utilities/IsOlder" (dict "current" $version) -}}
|
||||
@@ -12,10 +34,13 @@
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* Validate module configuration */ -}}
|
||||
{{- if and .IsPage (not (in .Site.Params.modules.core "bootstrap")) -}}
|
||||
{{- errorf "Bootstrap is a required module, please add it to 'modules.core' in your site parameters" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $section := .Section }}
|
||||
|
||||
<!doctype html>
|
||||
<html lang="{{ .Site.Language.Lang }}" class="no-js">
|
||||
<head>
|
||||
@@ -24,77 +49,25 @@
|
||||
|
||||
<body>
|
||||
{{- partial "footer/scripts.html" (dict "filename" "js/critical.bundle.js" "match" "js/critical/**.js" "header" true "page" .) -}}
|
||||
<div class="d-flex flex-column min-vh-100{{ if and .IsHome .Site.Params.home.style }} {{ .Site.Params.home.style }}{{ end }}">
|
||||
<div class="{{ if .Site.Params.navigation.fixed }}mb-4{{ end }}">
|
||||
{{- partial "assets/navbar.html" (dict
|
||||
"page" .
|
||||
"fixed" (string .Site.Params.navigation.fixed)
|
||||
"color" (.Site.Params.navigation.color)
|
||||
"style" (default "light" .Site.Params.navigation.style)
|
||||
"size" (default "md" .Site.Params.navigation.size))
|
||||
-}}
|
||||
</div>
|
||||
{{ if .IsHome -}}
|
||||
{{ if .Site.Params.home.fullCover -}}
|
||||
<div class="d-flex flex-fill {{ if .Site.Params.navigation.fixed }}mt-5{{ end }}">
|
||||
{{ block "featured" . }}{{ end -}}
|
||||
</div>
|
||||
{{ else -}}
|
||||
<div class="{{ if .Site.Params.navigation.fixed }}mt-5{{ end }}">
|
||||
{{ block "featured" . }}{{ end -}}
|
||||
</div>
|
||||
<div class="d-flex flex-column flex-fill">
|
||||
{{ block "main" . }}{{ end -}}
|
||||
</div>
|
||||
{{ if not .Site.Params.main.footerBelowFold }}
|
||||
<div class="">
|
||||
{{- partial "footer/social.html" . -}}
|
||||
{{- partial "footer/footer.html" . -}}
|
||||
</div>
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
{{ else -}}
|
||||
<div class="d-flex flex-column flex-fill {{ if .Site.Params.navigation.fixed }}mt-5{{ end }}">
|
||||
{{ block "main" . }}{{ end -}}
|
||||
</div>
|
||||
{{ if not .Site.Params.main.footerBelowFold }}
|
||||
<div class="">
|
||||
{{- partial "footer/social.html" . -}}
|
||||
{{- partial "footer/footer.html" . -}}
|
||||
</div>
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
</div>
|
||||
<div class="d-flex flex-column min-vh-100{{ if .IsHome }}{{ with .Site.Params.home.style }} {{ . }}{{ end }}{{ end }}">
|
||||
{{- partial "assets/navbar.html" (dict
|
||||
"page" .
|
||||
"fixed" (string site.Params.navigation.fixed)
|
||||
"color" site.Params.navigation.color
|
||||
"style" (default "light" site.Params.navigation.style)
|
||||
"size" (default "md" site.Params.navigation.size))
|
||||
-}}
|
||||
|
||||
{{ if and .IsHome .Site.Params.home.fullCover -}}
|
||||
<div class="">
|
||||
<div class="flex-fill main-content{{ if .Site.Params.main.footerBelowFold }} fullscreen{{ end }} pb-4">
|
||||
{{ block "main" . }}{{ end -}}
|
||||
</div>
|
||||
<div class="">
|
||||
{{- partial "footer/social.html" . -}}
|
||||
{{- partial "footer/footer.html" . -}}
|
||||
</div>
|
||||
{{ else if .Site.Params.main.footerBelowFold }}
|
||||
<div class="">
|
||||
{{- partial "footer/social.html" . -}}
|
||||
{{- partial "footer/footer.html" . -}}
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
{{- partial "footer/social.html" . -}}
|
||||
{{- partial "footer/footer.html" . -}}
|
||||
</div>
|
||||
|
||||
{{- partial "footer/toast-container.html" . -}}
|
||||
{{- partialCached "footer/scripts.html" (dict "header" false "page" . "core" true) }}
|
||||
{{- $modules := site.Params.modules.optional | intersect .Params.modules -}}
|
||||
{{- range $index, $mod := $modules -}}
|
||||
{{- $filename := printf "js/%s.bundle.js" $mod -}}
|
||||
{{- $match := printf "js/modules/%s/**.js" $mod -}}
|
||||
{{- $skipTemplate := false -}}
|
||||
{{- if reflect.IsSlice site.Params.modules.disableTemplate -}}
|
||||
{{- if in site.Params.modules.disableTemplate $mod}}
|
||||
{{- $skipTemplate = true -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- partial "footer/scripts.html" (dict "filename" $filename "match" $match "header" false "skipTemplate" $skipTemplate "page" .) }}
|
||||
{{- end -}}
|
||||
{{- partial "partials/optional-scripts.html" . -}}
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -1,15 +1,147 @@
|
||||
{{- define "main" -}}
|
||||
<!-- Ignore empty content, see https://github.com/gohugoio/hugo/issues/11406 -->
|
||||
{{- $content := "" -}}
|
||||
{{- if .Content }}{{ $content = partial "utilities/ProcessContent" (dict "page" .Page "raw" .RawContent) }}{{ end -}}
|
||||
{{- partial "assets/section-list.html" (dict
|
||||
"page" .
|
||||
"section" .Type
|
||||
"home" false
|
||||
"nested" .Params.Nested
|
||||
"title" (or .Title .Type)
|
||||
"description" .Description
|
||||
"content" $content
|
||||
"paginate" true)
|
||||
-}}
|
||||
{{- end -}}
|
||||
{{- $page := . -}}
|
||||
{{- $orientation := site.Params.list.feature.orientation | default "horizontal" -}}
|
||||
{{- $width := site.Params.list.feature.width | default 6 -}}
|
||||
{{- $justify := site.Params.list.feature.justify | default "center" -}}
|
||||
{{- $align := site.Params.list.feature.align | default "center" -}}
|
||||
{{- $sections := slice -}}
|
||||
{{- $sections = $sections | append $page.Type -}}
|
||||
{{ with $page.Params.sections }}
|
||||
{{ $sections = $sections | append . }}
|
||||
{{ end }}
|
||||
{{- $actions := $page.Params.actions -}}
|
||||
{{- $headings := slice -}}
|
||||
{{- $layout := $page.Params.layout -}}
|
||||
|
||||
{{ if $page.IsHome }}
|
||||
{{- $orientation = or site.Params.home.feature.orientation $orientation -}}
|
||||
{{- $width = or site.Params.home.feature.width $width -}}
|
||||
{{- $justify = or site.Params.home.feature.justify $justify -}}
|
||||
{{- $align = or site.Params.home.feature.align $align -}}
|
||||
{{- $actions = (or $actions site.Params.featured.actions) -}}
|
||||
{{- if not $page.Params.sections -}}
|
||||
{{- with site.Params.home.sections }}
|
||||
{{ $sections = $sections | append . }}
|
||||
{{ else }}
|
||||
{{ range $section := site.Sections }}
|
||||
{{ $sections = $sections | append $section.Type }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{- end -}}
|
||||
{{ else }}
|
||||
{{ $headings = $headings | append $page.Title }}
|
||||
{{- range .Fragments.Headings }}
|
||||
{{- range .Headings }}
|
||||
{{- $headings = $headings | append .Title -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{ end }}
|
||||
|
||||
{{/* Generate section content first to determine headings */}}
|
||||
{{ $body := "" }}
|
||||
{{- range $index, $section := $sections -}}
|
||||
{{- $sectionPage := site.GetPage "section" $section -}}
|
||||
{{- $sectionURL := $sectionPage.RelPermalink -}}
|
||||
{{ 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)) " \r\n"
|
||||
-}}
|
||||
|
||||
{{ if $sectionContent }}
|
||||
{{- if not $page.IsHome }}{{ $headings = $headings | append $title }}{{ end -}}
|
||||
{{- $body = printf "%s%s" $body $sectionContent }}
|
||||
{{ end }}
|
||||
{{- end -}}
|
||||
|
||||
{{/* Display featured section */}}
|
||||
{{- if or (eq $layout "featured") $page.IsHome -}}
|
||||
{{- partial "list/featured.html" (dict
|
||||
"page" .
|
||||
"headings" $headings
|
||||
"actions" $actions
|
||||
"orientation" $orientation
|
||||
"width" $width
|
||||
"justify" $justify
|
||||
"align" $align)
|
||||
-}}
|
||||
{{- end -}}
|
||||
|
||||
{{/* Display main content */}}
|
||||
<div class="container-xxl px-4 px-xxl-0">
|
||||
{{- if ne $layout "featured" -}}
|
||||
{{ if and (not $page.IsHome) site.Params.navigation.breadcrumb }}
|
||||
<div>{{ partial "assets/breadcrumb.html" $page }}</div>
|
||||
{{ end -}}
|
||||
{{- end -}}
|
||||
|
||||
<div class="row row-cols-1 row-cols-sm-2">
|
||||
<div class="col col-sm-12 col-md-8">
|
||||
{{ if not $page.IsHome }}
|
||||
{{ with $page.Title }}<p id="{{ anchorize . }}" class="display-4 mt-5{{ if and page.IsHome site.Params.home.centerHeadline }} text-center{{ end }}">{{ . }}</p>{{ end }}
|
||||
{{ end }}
|
||||
{{ if ($page.Params.menu) }}
|
||||
{{- partial "assets/section-menu.html" $page -}}
|
||||
{{- end -}}
|
||||
{{- $content := partial "utilities/ProcessContent" (dict "page" $page "raw" $page.RawContent) -}}
|
||||
{{ $content | safeHTML }}
|
||||
{{ if and (and (and $sections (eq (len $sections) 1)) (not $body)) (not $content) }}
|
||||
<p class="pt-4">{{- T "emptyList" }}.</p>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ with $page.Params.contact }}
|
||||
{{- $contact := site.GetPage . }}
|
||||
{{- if not $contact }}
|
||||
{{- errorf "Error processing content file '%s' - Cannot find contact: %s" $page.File . -}}
|
||||
{{- else -}}
|
||||
{{ $color := site.Params.contact.color | default "primary" }}
|
||||
{{ $style := site.Params.contact.style | default "shadow" }}
|
||||
<div class="col col-md-4 d-none d-md-block pt-5">
|
||||
{{- partial "assets/card.html" (dict "path" $page.Params.contact "color" $color "header" "none" "footer" "none" "ratio" "1x1" "class" (printf "w-75 mx-auto mt-4 %s" $style)) -}}
|
||||
</div>
|
||||
<div class="col col-sm-12 d-md-none pt-5">
|
||||
{{- partial "assets/card.html" (dict "path" $page.Params.contact "color" $color "header" "none" "footer" "none" "orientation" "horizontal" "class" $style) -}}
|
||||
</div>
|
||||
{{- end }}
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{/* Display generated sections */}}
|
||||
{{ $body | safeHTML }}
|
||||
{{- end -}}
|
||||
|
@@ -1,119 +1,15 @@
|
||||
{{- define "partials/header.html" -}}
|
||||
{{ 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>
|
||||
{{- define "partials/single-main.html" -}}
|
||||
{{ if .Site.Params.navigation.breadcrumb }}{{ partial "assets/breadcrumb.html" . }}{{ end -}}
|
||||
|
||||
{{- if gt (len (.GetTerms "tags")) 0 -}}
|
||||
<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 -}}
|
||||
{{ .Render "single/header" }}
|
||||
|
||||
{{ define "partials/body.html" -}}
|
||||
{{- if and .Site.Params.navigation.toc .Params.includeToc | default true -}}
|
||||
<div class="d-md-none pb-5">{{ partial "assets/toc-dropdown.html" . }}</div>
|
||||
{{- end -}}
|
||||
{{ .Render "single/body" }}
|
||||
{{ partial "utilities/ProcessContent" (dict "page" .Page "raw" .RawContent) }}
|
||||
|
||||
{{ if not (in (slice "docs" "minimal") .Layout) }}
|
||||
{{- $thumbnail := "" -}}
|
||||
{{- $credits := "" -}}
|
||||
|
||||
{{- if reflect.IsMap .Params.Thumbnail -}}
|
||||
{{- $thumbnail = .Params.Thumbnail.url -}}
|
||||
{{- $author := "" -}}
|
||||
{{- if and .Params.Thumbnail.authorURL "text" .Params.Thumbnail.author }}
|
||||
{{- $author = partial "utilities/link" (dict "destination" .Params.Thumbnail.authorURL "text" .Params.Thumbnail.author) -}}
|
||||
{{- else if .Params.Thumbnail.author }}
|
||||
{{- $author = .Params.Thumbnail.author -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $origin := "" -}}
|
||||
{{- if and .Params.Thumbnail.originURL "text" .Params.Thumbnail.origin }}
|
||||
{{- $origin = partial "utilities/link" (dict "destination" .Params.Thumbnail.originURL "text" .Params.Thumbnail.origin) -}}
|
||||
{{- else if .Params.Thumbnail.origin }}
|
||||
{{- $origin = .Params.Thumbnail.origin -}}
|
||||
{{- end }}
|
||||
|
||||
{{- if and $author $origin }}
|
||||
{{ $credits = printf (T "photoFull") $author $origin }}
|
||||
{{ else if $author }}
|
||||
{{ $credits = T "photoShort" $author }}
|
||||
{{ end }}
|
||||
{{ else }}
|
||||
{{- $thumbnail = .Params.Thumbnail -}}
|
||||
{{ if or .Params.photoCredits .Params.photoSource }}
|
||||
{{ warnf "DEPRECATED: frontmatter variables `photoCredits` and `photoSource` have been deprecated in release v0.18: %s" .RelPermalink }}
|
||||
{{ end }}
|
||||
{{- if and .Params.photoCredits .Params.PhotoSource }}{{ $credits = printf (T "photoFull") .Params.photoCredits .Params.PhotoSource }}{{ end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{ if $thumbnail -}}
|
||||
{{- partial "assets/image.html" (dict "url" $thumbnail "ratio" "21x9" "outerClass" "img-wrap" "innerClass" "rounded" "title" .Params.title "caption" $credits) -}}
|
||||
{{ end -}}
|
||||
{{ end }}
|
||||
|
||||
<!-- 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 }}
|
||||
{{ .Render "single/footer" }}
|
||||
{{- if and .Site.Params.comments.enabled .Params.showComments | default true -}}
|
||||
<hr>
|
||||
{{ partial "assets/comments.html" . }}
|
||||
@@ -121,52 +17,66 @@
|
||||
{{ end -}}
|
||||
|
||||
{{ define "main" -}}
|
||||
{{- $download := .Params.download -}}
|
||||
{{- if and $download (not (fileExists (path.Join "static" $download))) -}}
|
||||
{{- errorf "Cannot find download file for page '%s': %s" .File.Path $download -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $menu := .Scratch.Get "sidebar" -}}
|
||||
{{- $version := .Scratch.Get "version" -}}
|
||||
{{- $sidebar := .Site.Params.navigation.sidebar | default true -}}
|
||||
{{ 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-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>
|
||||
</div>
|
||||
<div class="offcanvas-body">
|
||||
{{ partial "assets/sidebar" (dict "page" . "menu" $menu "version" $version) }}
|
||||
{{ . | safeHTML }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container-xxl px-3 px-xxl-0">
|
||||
{{ end }}
|
||||
|
||||
<div class="container-xxl p-4 px-xxl-0">
|
||||
{{ if and $menu $hasSidebar -}}
|
||||
<div class="row row-cols-md-2 row-cols-lg-3">
|
||||
<div class="col col-md-3 col-lg-2 d-none pt-5 d-md-block sidebar-overflow sticky-top">
|
||||
{{ partial "assets/sidebar" (dict "page" . "menu" $menu "version" $version) }}
|
||||
{{ $sidebar | safeHTML }}
|
||||
</div>
|
||||
<div class="col col-md-9 col-lg-8 mb-5 p-4">
|
||||
{{ partial "partials/header.html" . }}
|
||||
{{ partial "partials/body.html" . }}
|
||||
{{ partial "partials/footer.html" . }}
|
||||
{{ partial "partials/single-main.html" . }}
|
||||
</div>
|
||||
<div class="col col-lg-2 d-none d-lg-block pt-5">
|
||||
{{- if and .Site.Params.navigation.toc .Params.includeToc | default true -}}
|
||||
{{ partial "assets/toc.html" . -}}
|
||||
{{ end -}}
|
||||
{{ $toc | safeHTML }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ else }}
|
||||
<div class="container-xxl px-3 px-xxl-0">
|
||||
{{ else if $hasSidebar }}
|
||||
<div class="row row-cols-1 row-cols-sm-3">
|
||||
<div class="col col-md-2 d-none d-md-block"></div>
|
||||
<div class="col col-sm-12 col-md-8">
|
||||
{{ partial "partials/header.html" . }}
|
||||
{{ partial "partials/body.html" . }}
|
||||
{{ partial "partials/footer.html" . }}
|
||||
{{ partial "partials/single-main.html" . }}
|
||||
</div>
|
||||
<div class="col col-md-2 d-none d-md-block">
|
||||
{{- if and .Site.Params.navigation.toc .Params.includeToc | default true -}}
|
||||
{{ partial "assets/toc.html" . -}}
|
||||
{{ end -}}
|
||||
{{ $toc | safeHTML }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ end -}}
|
||||
{{ else }}
|
||||
<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 -}}
|
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">
|
||||
<ol class="breadcrumb">
|
||||
{{- range $index, $item := .Page.Ancestors.Reverse -}}
|
||||
{{- $title := .Title -}}
|
||||
{{- $title := .LinkTitle -}}
|
||||
{{- if .IsHome }}{{ $title = T "home" }}{{ end -}}
|
||||
{{- $address := or .RelPermalink (.Params.Redirect | relLangURL) -}}
|
||||
{{ if $address }}
|
||||
@@ -10,6 +10,6 @@
|
||||
<li class="breadcrumb-item">{{ $title }}</li>
|
||||
{{ end }}
|
||||
{{- end -}}
|
||||
<li class="breadcrumb-item active" aria-current="page">{{ .Page.Title }}</li>
|
||||
<li class="breadcrumb-item active" aria-current="page">{{ .Page.LinkTitle }}</li>
|
||||
</ol>
|
||||
</nav>
|
||||
|
@@ -28,6 +28,7 @@
|
||||
"tab" Optional flag to indicate if an external link should open in a new tab, defaults to setting
|
||||
"main.externalLinks.tab" in the site's parameters.
|
||||
"attributes" Optional dictionary of key-value pairs added as custom attributes to the button element ('<a>').
|
||||
"spacing" Optional flag to add spacing to the inline button, defaults to "true".
|
||||
-->
|
||||
|
||||
{{- $title := trim .title " \r\n" -}}
|
||||
@@ -126,6 +127,8 @@
|
||||
{{- $target := "" -}}
|
||||
{{- $rel := "" -}}
|
||||
|
||||
{{- $spacing := .spacing | default true -}}
|
||||
|
||||
{{- if $isExternal -}}
|
||||
{{- if $tab -}}
|
||||
{{- $target = "_blank" -}}
|
||||
@@ -140,7 +143,7 @@
|
||||
|
||||
{{- $attributes := .attributes -}}
|
||||
|
||||
<a aria-label="{{ or $label $title }}" {{ if ne $state "disabled" }}{{ with $href }}href="{{ . }}"{{ end }}{{ end -}}
|
||||
<a aria-label="{{ (or $label $title) | safeHTML }}" {{ if ne $state "disabled" }}{{ with $href }}href="{{ . }}"{{ end }}{{ end -}}
|
||||
{{- with $id }} id="{{ . }}"{{ end -}}
|
||||
{{- with $target }} target="{{ . }}"{{ end }}{{ with $rel }} rel="{{ . }}"{{ end -}}
|
||||
{{- with $toast }} data-toast-target="{{ $toast }}"{{ end -}}
|
||||
@@ -157,7 +160,7 @@
|
||||
{{- end -}}
|
||||
>
|
||||
<div class="d-flex justify-content-{{ $justify }}">
|
||||
<div class="my-auto">{{ $title }}</div>
|
||||
<div class="my-auto">{{ $title | safeHTML }}</div>
|
||||
{{- with $icon }}<div class="align-self-center{{ if $title }}{{ if eq $order "first" }} order-first pe-1{{ else }} ps-1{{ end }}{{ end }}">{{ partial "assets/icon.html" (dict "icon" $icon) }}</div>{{ end }}
|
||||
</div>
|
||||
|
||||
@@ -167,4 +170,4 @@
|
||||
{{ with $label }}<span class="visually-hidden">{{ . }}</span>{{ end }}
|
||||
</span>
|
||||
{{- end -}}
|
||||
</a>
|
||||
</a>{{ if $spacing }} {{- end }}
|
||||
|
@@ -10,6 +10,7 @@
|
||||
"cards" Optional string of rendered cards.
|
||||
"max" Required maximum number of cards to display.
|
||||
"cols" Required number of columns for the grid, must be a value between 1 and 5.
|
||||
"gutter" Gutter between columns in a group, either "0", "1", "2", "3", "4" (default), or "5".
|
||||
"title" Optional title of the card group.
|
||||
"paginate" Optional flag indicating if pagination should be added to the card group, if the list exceeds the
|
||||
maximum number of cards to display.
|
||||
@@ -17,6 +18,8 @@
|
||||
maximum number of cards to display.
|
||||
"hrefTitle" Optional title of the button or hyperlink as companion to href.
|
||||
"separator" Optional flag to indicate a horizontal line should be added between items on small screens.
|
||||
"wrapper" Optional class attributes of the wrapper element, e.g. "p-4 px-xxl-0".
|
||||
"responsive" Optional flag if the number of columns should be responsive, defaults to "true".
|
||||
|
||||
In addition, the following arguments are passed to the individual cards.
|
||||
"class" Optional class attribute of the card element, e.g. “w-50”.
|
||||
@@ -28,6 +31,8 @@
|
||||
"footer" Optional footer components of the card, displayed in small caps. Supported values are "full",
|
||||
"publication", "tags", and "none" (default).
|
||||
"orientation" Optional placecement of the thumbnail, either "stacked" (default), "horizontal", or "none".
|
||||
"ratio" Optional ratio of the thumbnail image, defaults to "16x9" (stacked orientation) or "1x1" (horizontal
|
||||
orientation).
|
||||
-->
|
||||
|
||||
{{- $page := .page -}}
|
||||
@@ -89,15 +94,31 @@
|
||||
{{- end -}}
|
||||
{{- $max = math.Min $max $count -}}
|
||||
|
||||
{{- $cols := .cols -}}
|
||||
{{- if or (lt $cols 1) (gt $cols 5) -}}
|
||||
{{- errorf "partial [assets/card-group.html] - Invalid value for param 'cols': %d" $cols -}}
|
||||
{{- $responsive := .responsive | default true -}}
|
||||
{{- with .responsive -}}
|
||||
{{- if ne (printf "%T" .) "bool" -}}
|
||||
{{- errorf "partial [assets/card-group.html] - Invalid value for param 'responsive'" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $cols := string .cols | default "3" -}}
|
||||
{{- $supportedCols := slice "0" "1" "2" "3" "4" "5" "auto" -}}
|
||||
{{- if not (in $supportedCols $cols) -}}
|
||||
{{- errorf "partial [assets/card-group.html] - Invalid value for param 'cols': %s" $cols -}}
|
||||
{{- end -}}
|
||||
{{- $colGrid := "" -}}
|
||||
{{- if eq $cols "1" }}{{ $colGrid = "row-cols-1" -}}
|
||||
{{- else if eq $cols "2" }}{{ if $responsive }}{{ $colGrid = "row-cols-1 row-cols-sm-1 row-cols-md-2" }}{{ else }}{{ $colGrid = "row-cols-2" }}{{ end -}}
|
||||
{{- else if eq $cols "3" }}{{ if $responsive }}{{ $colGrid = "row-cols-1 row-cols-sm-2 row-cols-md-3" }}{{ else }}{{ $colGrid = "row-cols-3" }}{{ end -}}
|
||||
{{- else if eq $cols "4" }}{{ if $responsive }}{{ $colGrid = "row-cols-1 row-cols-sm-2 row-cols-md-4" }}{{ else }}{{ $colGrid = "row-cols-4" }}{{ end -}}
|
||||
{{- else if eq $cols "5" }}{{ if $responsive }}{{ $colGrid = "row-cols-1 row-cols-sm-3 row-cols-md-5" }}{{ else }}{{ $colGrid = "row-cols-5" }}{{ end -}}
|
||||
{{ end -}}
|
||||
|
||||
{{- $gutter := .gutter | default "4" -}}
|
||||
{{- $supportedGutters := slice "0" "1" "2" "3" "4" "5" -}}
|
||||
{{- if not (in $supportedGutters $gutter) -}}
|
||||
{{- errorf "partial [assets/card-group.html] - Invalid value for param 'gutter': %s" $gutter -}}
|
||||
{{- end -}}
|
||||
{{- $colGrid := "row-cols-1" -}}
|
||||
{{- if eq $cols 2 }}{{ $colGrid = "row-cols-1 row-cols-sm-1 row-cols-md-2" -}}
|
||||
{{- else if eq $cols 3 }}{{ $colGrid = "row-cols-1 row-cols-sm-2 row-cols-md-3" -}}
|
||||
{{- else if eq $cols 4 }}{{ $colGrid = "row-cols-1 row-cols-sm-2 row-cols-md-4" -}}
|
||||
{{- else if eq $cols 5 }}{{ $colGrid = "row-cols-1 row-cols-sm-3 row-cols-md-5" }}{{ end -}}
|
||||
|
||||
{{- if not $paginate -}}
|
||||
{{- $list = first $max $list -}}
|
||||
@@ -120,11 +141,13 @@
|
||||
{{- $header := .header -}}
|
||||
{{- $footer := .footer -}}
|
||||
{{- $orientation := .orientation -}}
|
||||
{{- $ratio := .ratio -}}
|
||||
{{- $wrapper := .wrapper | default "p-0" -}}
|
||||
|
||||
{{- if and (eq $cols 1) (eq $orientation "horizontal") }}{{ $orientation = "horizontal-sm" }}{{ end -}}
|
||||
|
||||
<div class="container-fluid p-4 px-xxl-0 ">
|
||||
<div class="row {{ $colGrid }}">
|
||||
<div class="container-fluid {{ $wrapper }}">
|
||||
<div class="row {{ $colGrid }} g-{{ $gutter }}">
|
||||
{{ range $index, $element := $list }}
|
||||
{{- $params := (dict
|
||||
"class" (printf "h-100 %s" $class)
|
||||
@@ -133,10 +156,11 @@
|
||||
"header" $header
|
||||
"footer" $footer
|
||||
"orientation" $orientation
|
||||
"ratio" $ratio
|
||||
) -}}
|
||||
{{- $params = merge $params $element }}
|
||||
|
||||
<div class="col pt-3 pb-3">
|
||||
<div class="col">
|
||||
{{- partial "assets/card.html" $params -}}
|
||||
</div>
|
||||
{{- if and (lt $index (sub $max 1)) $separator -}}
|
||||
|
@@ -11,12 +11,15 @@
|
||||
"warning", "info", "light", "dark", "white", "black", "body", or "body-tertiary". By default, no
|
||||
color is specified.
|
||||
"padding": Optional padding of the content, either "0", "1", "2", "3", "4", "5", or "auto" (default).
|
||||
"gutter" Gutter between columns in a group, either "0" (default), "1", "2", "3", "4", or "5".
|
||||
"header" Optional header components of the card, displayed in small caps. Supported values are "full"
|
||||
(default), "publication", "tags", and "none".
|
||||
"footer" Optional footer components of the card, displayed in small caps. Supported values are "full",
|
||||
"publication", "tags", and "none" (default).
|
||||
"description" Optional description of the card.
|
||||
"thumbnail" Optional thumbnail image url, displayed on top or the left of the card.
|
||||
"ratio" Optional ratio of the thumbnail image, defaults to "16x9" (stacked orientation) or "1x1" (horizontal
|
||||
orientation).
|
||||
"alt" Optional alternate text for the thumbnail, uses "title" by default.
|
||||
"icon" Optional Font Awesome icon, displayed on top or the left of the card.
|
||||
"orientation" Optional placecement of the thumbnail or icon, either "stacked" (default), "horizontal",
|
||||
@@ -33,12 +36,12 @@
|
||||
{{- if $href -}}
|
||||
<a href="{{ $href }}" class="{{ if $color }}link-bg-{{ $color }}{{ else }}card-body-link{{ end }} stretched-link">
|
||||
<p class="card-title fs-5 fw-bold">{{ $title }}</p>
|
||||
{{ with $description }}<p class="card-text mb-4 {{ if $color }}link-bg-{{ $color }}{{ else }}card-body-link{{ end }}">{{ . }}</p>{{ end -}}
|
||||
{{ with $description }}<p class="card-text {{ if $color }}link-bg-{{ $color }}{{ else }}card-body-link{{ end }}">{{ . }}</p>{{ end -}}
|
||||
</a>
|
||||
{{- else -}}
|
||||
<div>
|
||||
<p class="card-title fs-5 fw-bold">{{ $title }}</p>
|
||||
{{ with $description }}<p class="card-text mb-4">{{ . }}</p>{{ end -}}
|
||||
{{ with $title }}<p class="card-title fs-5 fw-bold">{{ . }}</p>{{ end -}}
|
||||
{{ with $description }}<p class="card-text">{{ . }}</p>{{ end -}}
|
||||
</div>
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
@@ -87,6 +90,7 @@
|
||||
{{- $href := .href -}}
|
||||
{{- $description := .description -}}
|
||||
{{- $thumbnail := .thumbnail -}}
|
||||
{{- $ratio := .ratio -}}
|
||||
{{- $icon := .icon -}}
|
||||
|
||||
{{- $color := "" -}}
|
||||
@@ -128,6 +132,12 @@
|
||||
{{- errorf "partial [assets/card.html] - Invalid value for param 'padding': %s" $padding -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $gutter := .gutter | default "0" -}}
|
||||
{{ $supportedGutters:= slice "0" "1" "2" "3" "4" "5" -}}
|
||||
{{ if not (in $supportedGutters $gutter) -}}
|
||||
{{- errorf "partial [assets/card.html] - Invalid value for param 'gutter': %s" $gutter -}}
|
||||
{{ end -}}
|
||||
|
||||
{{- $orientation := "stacked" -}}
|
||||
{{- with .orientation }}{{ $orientation = . }}{{ end -}}
|
||||
{{- $supportedOrientations := slice "stacked" "horizontal" "horizontal-sm" "none" -}}
|
||||
@@ -136,15 +146,16 @@
|
||||
{{- end -}}
|
||||
{{- if eq $orientation "none" }}{{ $thumbnail = "" }}{{ $icon = "" }}{{ end -}}
|
||||
|
||||
{{ if ne $gutter "0" }}<div class="g-{{ $gutter }}">{{ end }}
|
||||
{{- if hasPrefix $orientation "horizontal" -}}
|
||||
<div class="card {{ with $color }}bg-{{ . }} text-bg-{{ . }}{{ end }} {{ $class }}">
|
||||
<div class="row g-0 row-cols-1 h-100">
|
||||
<div class="col-4{{ if eq $orientation "horizontal-sm" }} col-md-2{{ end }}">
|
||||
{{- if $thumbnail -}}
|
||||
{{- partial "assets/image.html" (dict "url" $thumbnail "ratio" "1x1" "outerClass" "h-100 card-img-wrap" "innerClass" "rounded-start card-img-h100" "title" $title) -}}
|
||||
{{- partial "assets/image.html" (dict "url" $thumbnail "ratio" (or $ratio "1x1") "outerClass" "h-100 card-img-wrap" "innerClass" "rounded-start card-img-h100" "title" $title) -}}
|
||||
{{- else if $icon -}}
|
||||
<div class="p-{{ $padding }} h-100 fa-wrapper d-flex align-items-center justify-content-center">
|
||||
{{- partial "assets/icon.html" (dict "icon" (printf "%s fa-fluid text-secondary fa-fw" $icon)) -}}
|
||||
<div class="card-icon p-{{ $padding }} h-100 fa-wrapper d-flex align-items-center justify-content-center">
|
||||
{{- partial "assets/icon.html" (dict "icon" (printf "%s fa-fluid fa-fw" $icon)) -}}
|
||||
</div>
|
||||
{{- end -}}
|
||||
</div>
|
||||
@@ -162,10 +173,10 @@
|
||||
{{- else -}}
|
||||
<div class="card {{ with $color }}bg-{{ . }} text-bg-{{ . }}{{ end }} {{ $class }}">
|
||||
{{- if $thumbnail -}}
|
||||
{{- partial "assets/image.html" (dict "url" $thumbnail "ratio" "16x9" "outerClass" "card-img-wrap" "innerClass" "card-img-top" "title" (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)) -}}
|
||||
{{- else if $icon -}}
|
||||
<div class="p-{{ $padding }}">
|
||||
{{- partial "assets/icon.html" (dict "icon" (printf "%s fa-4x text-secondary" $icon)) -}}
|
||||
<div class="card-icon p-{{ $padding }}">
|
||||
{{- partial "assets/icon.html" (dict "icon" (printf "%s fa-4x" $icon)) -}}
|
||||
</div>
|
||||
{{- end -}}
|
||||
<div class="card-body d-flex flex-column p-{{ $padding }}">
|
||||
@@ -175,3 +186,4 @@
|
||||
</div>
|
||||
</div>
|
||||
{{- end -}}
|
||||
{{ if ne $gutter "0" }}</div>{{ end }}
|
||||
|
@@ -131,7 +131,7 @@
|
||||
{{- $dims := slice -}}
|
||||
{{- with $img -}}
|
||||
{{- if eq $ratio "4x3" -}}
|
||||
{{- $dims = slice "576x432" "768x576" "992x744" "1200x900" "1400x1050" -}}
|
||||
{{- $dims = slice "576x432" "768x576" "992x744" "1200x900" "1400x1050" -}}
|
||||
{{- else if eq $ratio "3x2" -}}
|
||||
{{- $dims = slice "576x384" "768x512" "992x661" "1200x800" "1400x933" -}}
|
||||
{{- else if eq $ratio "1x1" -}}
|
||||
@@ -224,12 +224,24 @@
|
||||
{{ end }}
|
||||
<div class="{{ if not $caption }}{{ $outerClass }}{{ end }}">
|
||||
{{- if not $anchor -}}
|
||||
{{- $input := (split (path.BaseName $fallbackURL) "-") | collections.Reverse -}}
|
||||
{{- $width := "" -}}
|
||||
{{- $height := "" -}}
|
||||
{{- if gt ($input | len) 1 -}}
|
||||
{{- $dim := (split (index $input 0) "x") -}}
|
||||
{{- if eq ($dim | len) 2 -}}
|
||||
{{- $width = index $dim 0 -}}
|
||||
{{- $height = index $dim 1 -}}
|
||||
{{- end -}}
|
||||
{{- end }}
|
||||
<img class="img-fluid {{ $innerClass }}"
|
||||
{{ with $imgset -}}
|
||||
srcset="{{ . }}"
|
||||
sizes="100vw"
|
||||
{{- end }}
|
||||
src="{{ $fallbackURL }}"
|
||||
{{ with $height }}height="{{ . }}"{{ end }}
|
||||
{{ with $width }}width="{{ . }}"{{ end }}
|
||||
alt="{{ $title }}">
|
||||
{{- else }}
|
||||
<svg class="{{ $innerClass }}">
|
||||
|
@@ -9,6 +9,7 @@
|
||||
"class" Optional class attribute of the tab group, e.g. “nav-fill”.
|
||||
"pane" Optional style of the panes, either "none" (default) or "persona".
|
||||
"width" Optional responsive width of the tab group, either "50" or "100" (default).
|
||||
"wrap" Optional flag to enable word wrapping of tab titles, defaults to false.
|
||||
|
||||
In addition, the following arguments are passed to the individual tabs.
|
||||
"class" Optional class attribute of the tab element, e.g. “w-50”.
|
||||
@@ -54,6 +55,7 @@
|
||||
{{- $title := .title -}}
|
||||
{{- $class := .class -}}
|
||||
{{- $color := .color -}}
|
||||
{{- $wrap := .wrap | default false -}}
|
||||
|
||||
{{ $supportedFlags := slice "true" "false" -}}
|
||||
{{ $verticalParam := "false" -}}
|
||||
@@ -81,7 +83,7 @@
|
||||
<div class="nav{{ with $type }} nav-{{ . }}{{ end }}{{ with $class }} {{ . }}{{ end }}{{ if $vertical }} flex-column{{ end }}" id="nav-{{ $id }}" role="tablist"{{ if $vertical }} aria-orientation="vertical"{{ end }}>
|
||||
{{- range $index, $item := $list -}}
|
||||
{{ $show := eq $index 0}}
|
||||
<button class="nav-link text-nowrap{{ if $show }} active{{ end }}" id="nav-{{ $id }}-btn-{{ $index }}" data-bs-toggle="pill" data-bs-target="#nav-{{ $id }}-{{ $index }}"
|
||||
<button class="nav-link {{ if not $wrap }} text-nowrap{{ end }}{{ if $show }} active{{ end }}" id="nav-{{ $id }}-btn-{{ $index }}" data-bs-toggle="pill" data-bs-target="#nav-{{ $id }}-{{ $index }}"
|
||||
type="button" role="tab" aria-controls="nav-{{ $id }}-{{ $index }}" aria-selected="{{ if eq $index 0 }}true{{ else }}false{{ end }}">
|
||||
{{ $item.Title }}
|
||||
</button>
|
||||
|
@@ -25,25 +25,25 @@
|
||||
|
||||
<li class="nav-item dropdown {{ if $collapsed }}d-{{ $size }}-none{{ else }}d-none d-{{ $size }}-block{{ end }}">
|
||||
<a class="nav-link dropdown-toggle" href="#!" role="button" data-bs-toggle="dropdown" aria-label="{{ T "colorMode" }}" aria-expanded="false" id="{{ $id }}-theme{{ if $collapsed }}-collapsed{{ end }}">
|
||||
<span class="theme-icon-active">{{- partial "assets/icon.html" (dict "icon" "fas sun fa-fw") }}</span>{{ if $collapsed }} {{ T "colorMode" }} {{ end }}
|
||||
<span class="theme-icon-active">{{- partial "assets/icon.html" (dict "icon" "fas sun fa-fw") }}</span>{{ if $collapsed }} {{ T "colorMode" }} {{ end }}
|
||||
<span class="d-md-none"></span>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="{{ $id }}-theme{{ if $collapsed }}-collapsed{{ end }}">
|
||||
<li>
|
||||
<a class="dropdown-item{{ if $collapsed }} switch-mode-collapsed{{ end }}" data-bs-theme-value="light" href="#!">
|
||||
<span class="theme-icon">{{- partial "assets/icon.html" (dict "icon" "fas sun fa-fw") }}</span>
|
||||
<span class="theme-icon">{{- partial "assets/icon.html" (dict "icon" "fas sun fa-fw" "spacing" false) }}</span>
|
||||
{{ T "colorLight" }}
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item{{ if $collapsed }} switch-mode-collapsed{{ end }}" data-bs-theme-value="dark" href="#!">
|
||||
<span class="theme-icon">{{- partial "assets/icon.html" (dict "icon" "fas moon fa-fw") }}</span>
|
||||
<span class="theme-icon">{{- partial "assets/icon.html" (dict "icon" "fas moon fa-fw" "spacing" false) }}</span>
|
||||
{{ T "colorDark" }}
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item{{ if $collapsed }} switch-mode-collapsed{{ end }}" data-bs-theme-value="auto" href="#!">
|
||||
<span class="theme-icon">{{- partial "assets/icon.html" (dict "icon" "fas circle-half-stroke fa-fw" ) }}</span>
|
||||
<span class="theme-icon">{{- partial "assets/icon.html" (dict "icon" "fas circle-half-stroke fa-fw" "spacing" false) }}</span>
|
||||
{{ T "colorAuto" }}
|
||||
</a>
|
||||
</li>
|
||||
@@ -154,6 +154,8 @@
|
||||
{{- errorf "partial [assets/navbar.html] - Invalid value for param 'search': %s" $searchParam -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- $searchModal := and $search site.Params.navigation.searchModal -}}
|
||||
|
||||
|
||||
{{- $enableDarkMode := default false site.Params.main.enableDarkMode -}}
|
||||
{{- with .mode -}}
|
||||
@@ -221,7 +223,7 @@
|
||||
|
||||
<div class="container-fluid {{ if $fixed }}fixed-top{{ end }} p-0{{ with $class }} {{ . }}{{ end }}">
|
||||
{{- partial "assets/page-alert.html" (dict "page" $page) -}}
|
||||
<nav class="navbar navbar-expand-{{ $size }}{{ if $contrast }} navbar-contrast{{ end }}{{ with $color }} bg-{{ . }}{{ end }} p-4"{{ with $theme }} data-bs-theme="{{ . }}"{{ end }}>
|
||||
<nav class="navbar {{ if $fixed }}navbar-fixed-top{{ end }} navbar-expand-{{ $size }}{{ if $contrast }} navbar-contrast{{ end }}{{ with $color }} bg-{{ . }}{{ end }} p-4"{{ with $theme }} data-bs-theme="{{ . }}"{{ end }}>
|
||||
<div class="container-xxl p-0">
|
||||
<!-- Insert sidebar toggler when applicable -->
|
||||
<div class="d-flex">
|
||||
@@ -243,7 +245,8 @@
|
||||
<img src="{{if $absoluteURL }}{{ absURL $logoLight }}{{ else }}{{ $logoLight }}{{ end }}" class="d-none-dark" alt="{{ $title }} logo" height="30">
|
||||
<img src="{{if $absoluteURL }}{{ absURL $logoDark }}{{ else }}{{ $logoDark }}{{ end }}" class="d-none-light" alt="{{ $title }} logo" height="30">
|
||||
{{- else if $logo -}}
|
||||
<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 -}}
|
||||
<span class="fw-bold">{{ $title }}</span>
|
||||
{{- end -}}
|
||||
@@ -261,7 +264,7 @@
|
||||
|
||||
<div class="navbar-collapse collapse" id="{{ $id }}-collapse">
|
||||
<!-- Insert search input -->
|
||||
{{- if $search }}{{ partial "assets/search-input.html" -}}{{ end -}}
|
||||
{{- if and $search (not $searchModal) }}{{ partial "assets/search-input.html" }}{{ end -}}
|
||||
|
||||
<!-- Render top-menu items (maximum depth of 2) -->
|
||||
<ul class="navbar-nav ms-auto">
|
||||
@@ -286,15 +289,21 @@
|
||||
<li><hr class="dropdown-divider-bg"></li>
|
||||
{{- end -}}
|
||||
|
||||
<!-- Insert version switcher -->
|
||||
{{- if $enableVersions -}}
|
||||
{{- partial "partials/navbar-versions.html" (dict "page" $page "size" $size "collapsed" true "id" .id) -}}
|
||||
{{- partial "partials/navbar-versions.html" (dict "page" $page "size" $size "collapsed" false "id" .id) -}}
|
||||
{{- end -}}
|
||||
|
||||
<!-- Insert language switcher if applicable -->
|
||||
{{- if $enableLanguage -}}
|
||||
{{- $currentLang := $page.Language.Lang -}}
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link dropdown-toggle d-{{ $size }}-none" href="#!" role="button" data-bs-toggle="dropdown" aria-label="{{ T "languageSwitcherLabel" }}" aria-expanded="false">
|
||||
{{- partial "assets/icon.html" (dict "icon" "fas globe fa-fw") }} {{ T "languageSwitcherLabel" }}
|
||||
{{- partial "assets/icon.html" (dict "icon" "fas globe fa-fw" "spacing" false) }} {{ T "languageSwitcherLabel" }}
|
||||
</a>
|
||||
<a class="nav-link dropdown-toggle d-none d-{{ $size }}-block" href="#!" role="button" data-bs-toggle="dropdown" aria-label="{{ T "languageSwitcherLabel" }}" aria-expanded="false">
|
||||
{{- partial "assets/icon.html" (dict "icon" "fas globe fa-fw") }}
|
||||
{{- partial "assets/icon.html" (dict "icon" "fas globe fa-fw" "spacing" true) }}
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-menu-end ">
|
||||
{{- if $page.IsTranslated -}}
|
||||
@@ -310,25 +319,49 @@
|
||||
</li>
|
||||
{{- end -}}
|
||||
|
||||
<!-- Insert version switcher -->
|
||||
{{- if $enableVersions -}}
|
||||
{{- partial "partials/navbar-versions.html" (dict "page" $page "size" $size "collapsed" true "id" .id) -}}
|
||||
{{- partial "partials/navbar-versions.html" (dict "page" $page "size" $size "collapsed" false "id" .id) -}}
|
||||
{{- end -}}
|
||||
|
||||
<!-- Insert color mode switcher -->
|
||||
{{- if $enableDarkMode -}}
|
||||
<!-- Insert divider -->
|
||||
{{- partial "partials/navbar-mode.html" (dict "size" $size "collapsed" true "id" .id) -}}
|
||||
{{- partial "partials/navbar-mode.html" (dict "size" $size "collapsed" false "id" .id) -}}
|
||||
{{- end -}}
|
||||
|
||||
<!-- Insert modal search button -->
|
||||
{{- if $searchModal }}
|
||||
<li class="nav-item py-2 py-md-1 col-12 col-md-auto d-none d-{{ $size }}-block">
|
||||
<div class="vr d-none d-md-flex h-100 mx-md-2"></div>
|
||||
</li>
|
||||
<li><hr class="dropdown-divider-bg"></li>
|
||||
|
||||
{{- partial "partials/navbar-mode.html" (dict "size" $size "collapsed" true "id" .id) -}}
|
||||
{{- partial "partials/navbar-mode.html" (dict "size" $size "collapsed" false "id" .id) -}}
|
||||
{{- end -}}
|
||||
<a class="nav-link d-{{ $size }}-none" href="#!" role="button" data-bs-toggle="modal" data-bs-target="#search-modal" aria-label="{{ T "ui_search" }}" aria-expanded="false">
|
||||
{{ partial "assets/icon.html" (dict "icon" "fas magnifying-glass fa-fw") }} {{ T "ui_search" }}
|
||||
</a>
|
||||
<a class="nav-link d-none d-{{ $size }}-block" href="#!" role="button" data-bs-toggle="modal" data-bs-target="#search-modal" aria-label="{{ T "ui_search" }}" aria-expanded="false">
|
||||
{{ partial "assets/icon.html" (dict "icon" "fas magnifying-glass fa-fw") }}
|
||||
</a>
|
||||
{{ end -}}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
{{/* Insert modal search element */}}
|
||||
{{- if $searchModal }}
|
||||
<div class="modal fade search-modal" tabindex="-1" id="search-modal" aria-labelledby="searchModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-dialog-centered modal-dialog-scrollable modal-lg">
|
||||
<div class="modal-content h-50">
|
||||
<div class="modal-header">
|
||||
<div class="w-100">
|
||||
<form class="search position-relative me-auto">
|
||||
<input id="search-input-modal" class="search-input form-control is-search" tabindex="1" type="search" placeholder="{{ T "ui_search" }}..." aria-label="{{ T "ui_search" }}" autocomplete="off">
|
||||
</form>
|
||||
</div>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="modal-body p-2">
|
||||
<div class="search-suggestions bg-body" data-no-results="{{ T "ui_no_results" }}"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ end -}}
|
||||
|
@@ -20,27 +20,6 @@
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
<div class="container-fluid p-4 px-xxl-0">
|
||||
{{ with $title }}<p class="display-4 mt-3{{ if and page.IsHome site.Params.home.centerHeadline }} text-center{{ end }}">{{ . }}</p>{{ end }}
|
||||
{{ with $description }} <p class="lead mb-5">{{ . }}</p>{{ end }}
|
||||
{{- if $content -}}
|
||||
<div class="row row-cols-1 row-cols-lg-3 pt-5">
|
||||
<div class="col col-lg-3 d-none d-lg-block"></div>
|
||||
<div class="col col-sm-12 col-lg-6 text-center">
|
||||
<div class="row row-cols-1{{ if ne $sectionHeader "justify-content-center" }} row-cols-sm-2{{ end }} row-gap-5 p-0 align-items-center flex-fill">
|
||||
{{- if eq $sectionHeader "justify-content-center" -}}
|
||||
<div class="col p-0 w-50 mx-auto pb-5">{{ partial "partials/section-header-img.html" (dict "title" $title "thumbnail" $thumbnail "icon" $icon )}}</div>
|
||||
<div class="col fs-md-5 fs-6">{{ $content }}</div>
|
||||
{{- else if eq $sectionHeader "justify-content-end" -}}
|
||||
<div class="col p-0">{{ partial "partials/section-header-img.html" (dict "title" $title "thumbnail" $thumbnail "icon" $icon )}}</div>
|
||||
<div class="col fs-md-5 fs-6 text-sm-start">{{ $content }}</div>
|
||||
{{- else -}}
|
||||
<div class="col fs-md-5 fs-6 text-sm-start">{{ $content }}</div>
|
||||
<div class="col p-0">{{ partial "partials/section-header-img.html" (dict "title" $title "thumbnail" $thumbnail "icon" $icon )}}</div>
|
||||
{{- end -}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col col-lg-3 d-none d-lg-block"></div>
|
||||
</div>
|
||||
{{- end -}}
|
||||
</div>
|
||||
{{ with $title }}<p id="{{ anchorize . }}" class="display-4 pt-4{{ if and page.IsHome site.Params.home.centerHeadline }} text-center{{ end }}">{{ . }}</p>{{ end }}
|
||||
{{ with $description }} <p class="lead mb-5">{{ . }}</p>{{ end }}
|
||||
{{ $content }}
|
||||
|
@@ -14,7 +14,9 @@
|
||||
{{- $moreTitle := .moreTitle -}}
|
||||
{{- $sectionURL := .sectionURL -}}
|
||||
{{- $nested := .nested | default true -}}
|
||||
{{- $simple := .simple | default false -}}
|
||||
{{- $paginate := true -}}
|
||||
{{- $kind := .kind | default "regular" -}}
|
||||
{{- $sort := "date" -}}
|
||||
{{- $order := "desc" -}}
|
||||
{{- $separator := false -}}
|
||||
@@ -32,6 +34,8 @@
|
||||
{{- $type := "pills" -}}
|
||||
{{- $vertical := "false" -}}
|
||||
{{- $width := 100 -}}
|
||||
{{- $ratio := "" -}}
|
||||
{{- $wrap := false -}}
|
||||
|
||||
{{- with (index site.Params.sections $section) -}}
|
||||
{{- with index . "title" }}{{ $title = or $.title . }}{{ end -}}
|
||||
@@ -54,13 +58,25 @@
|
||||
{{- with index . "type" }}{{ $type = . }}{{ end -}}
|
||||
{{- with index . "vertical" }}{{ $vertical = . }}{{ end -}}
|
||||
{{- with index . "width" }}{{ $width = . }}{{ end -}}
|
||||
{{- with index . "kind" }}{{ $kind = . }}{{ end -}}
|
||||
{{- with index . "ratio" }}{{ $ratio = . }}{{ end -}}
|
||||
{{- with index . "wrap" }}{{ $wrap = . }}{{ end -}}
|
||||
{{- end -}}
|
||||
{{ if ne (printf "%T" $nested) "bool" }}
|
||||
{{ errorf "partial [assets/section-list.html] - Invalid value for param 'nested'"}}
|
||||
{{ end }}
|
||||
|
||||
{{ $list := "" }}
|
||||
{{ if $nested }}
|
||||
{{ $list := slice }}
|
||||
{{ if eq $kind "taxonomy" }}
|
||||
{{ $filter := page.Params.filter }}
|
||||
{{ with $filter }}
|
||||
{{ with index site.Taxonomies $section $filter }}
|
||||
{{ $list = .Pages }}
|
||||
{{ end }}
|
||||
{{ else }}
|
||||
{{ $list = where site.Pages (printf ".Params.%s" $section) "!=" nil }}
|
||||
{{ end }}
|
||||
{{ else if $nested }}
|
||||
{{ $list = where site.RegularPages "Type" "in" $section }}
|
||||
{{ else if $home }}
|
||||
{{ $sectionPage := site.GetPage "section" $section }}
|
||||
@@ -88,12 +104,18 @@
|
||||
{{- $max = int (math.Min $homepage $max) -}}
|
||||
{{ end -}}
|
||||
|
||||
{{ if $simple }}
|
||||
{{ $title = "" }}
|
||||
{{ $background = "" }}
|
||||
{{ end }}
|
||||
|
||||
{{- $params := (dict
|
||||
"page" $page
|
||||
"list" $list
|
||||
"title" $title
|
||||
"icon" $icon
|
||||
"thumbnail" $thumbnail
|
||||
"ratio" $ratio
|
||||
"sectionHeader" $sectionHeader
|
||||
"description" $description
|
||||
"content" $content
|
||||
@@ -103,8 +125,8 @@
|
||||
-}}
|
||||
{{- $partial := "" -}}
|
||||
|
||||
<div class="container-fluid {{ with $background }} bg-{{ . }}{{ end }}">
|
||||
<div class="container-xxl flex-fill p-0">
|
||||
<div class="container-fluid {{ with $background }} bg-{{ . }}{{ end }} p-0">
|
||||
<div class="container-xxl flex-fill p-4 px-xxl-0 pb-5">
|
||||
{{- partial "assets/section-header.html" $params -}}
|
||||
|
||||
{{ if eq $layout "card" }}
|
||||
@@ -131,6 +153,7 @@
|
||||
"type" $type
|
||||
"vertical" $vertical
|
||||
"width" $width
|
||||
"wrap" $wrap
|
||||
)
|
||||
-}}
|
||||
{{- else -}}
|
||||
|
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 -}}
|
||||
{{- $sort := .Site.Params.sharing.sort | default "weight" -}}
|
||||
{{- $list = sort $list $sort $order -}}
|
||||
<div class="py-3 text-body-secondary hstack gap-2">
|
||||
<div class="py-3 text-body-secondary hstack gap-1">
|
||||
{{ T "shareLink" "" }}
|
||||
{{- range $index, $item := $list -}}
|
||||
{{- $url := $item.url -}}
|
||||
@@ -21,11 +21,11 @@
|
||||
{{- $url = "#!" -}}
|
||||
{{- partial "assets/toast.html" (dict "id" $target "message" (printf "%s %s" (T "link") (T "copiedToClipboard"))) -}}
|
||||
{{- end -}}
|
||||
{{ partial "assets/button.html" (dict "toast" $target "clipboard" $clipboard "href" $url "icon" (printf "%s fa-fw" $item.icon) "class" "btn-social p-0" "label" (T "shareLink" $item.name)) }}
|
||||
{{ partial "assets/button.html" (dict "toast" $target "clipboard" $clipboard "href" $url "icon" (printf "%s fa-fw" $item.icon) "class" "btn-social p-0" "label" (T "shareLink" $item.name) "spacing" false) }}
|
||||
{{- end -}}
|
||||
{{ if .Site.Params.sharing.webshare }}
|
||||
{{ $attr := dict "data-sharing-title" .Title "data-sharing-description" .Description "data-sharing-url" .Permalink }}
|
||||
{{ partial "assets/button.html" (dict "href" "#!" "icon" "fas share-nodes fa-fw" "id" "btn-webshare" "class" "btn-social p-0" "attributes" $attr "label" (T "shareLink" (T "shareSystem"))) }}
|
||||
{{ partial "assets/button.html" (dict "href" "#!" "icon" "fas share-nodes fa-fw" "id" "btn-webshare" "class" "btn-social p-0" "attributes" $attr "label" (T "shareLink" (T "shareSystem")) "spacing" false) }}
|
||||
{{- end -}}
|
||||
</div>
|
||||
{{- end -}}
|
||||
|
@@ -9,9 +9,10 @@
|
||||
{{- $level := .level -}}
|
||||
{{- $baseURL := .baseURL -}}
|
||||
{{- $group := .group -}}
|
||||
{{- $data := .menu -}}
|
||||
|
||||
{{- $doc_slug := $group.title | urlize -}}
|
||||
{{- $href := printf "%s/" (relLangURL (path.Join $baseURL $doc_slug)) -}}
|
||||
{{- $href := or $group.link (printf "%s/" (relLangURL (path.Join $baseURL $doc_slug))) -}}
|
||||
{{- $collapsed := strings.HasPrefix $page.RelPermalink $href -}}
|
||||
|
||||
<li class="mb-1">
|
||||
@@ -28,6 +29,7 @@
|
||||
"level" (add $level 1)
|
||||
"baseURL" $href
|
||||
"group" $item
|
||||
"menu" $data
|
||||
)
|
||||
}}
|
||||
{{- else -}}
|
||||
@@ -37,6 +39,8 @@
|
||||
"level" $level
|
||||
"baseURL" $href
|
||||
"title" $item.title
|
||||
"href" $item.link
|
||||
"menu" $data
|
||||
)
|
||||
}}
|
||||
{{ end -}}
|
||||
@@ -47,15 +51,17 @@
|
||||
{{ end -}}
|
||||
|
||||
{{- define "partials/sidebar/item.html" -}}
|
||||
{{ $page := .page }}
|
||||
{{ $sectionBreak := .sectionBreak }}
|
||||
{{- $page := .page -}}
|
||||
{{- $sectionBreak := .sectionBreak -}}
|
||||
{{- $level := .level -}}
|
||||
{{ $baseURL := .baseURL}}
|
||||
{{ $title := .title}}
|
||||
{{- $baseURL := .baseURL -}}
|
||||
{{- $title := .title -}}
|
||||
{{- $href := .href -}}
|
||||
{{- $data := .menu -}}
|
||||
|
||||
{{- $doc_slug := $title | urlize -}}
|
||||
{{- $href := printf "%s/" (relLangURL (path.Join $baseURL $doc_slug)) -}}
|
||||
{{ $active := eq $page.RelPermalink $href }}
|
||||
{{- $href := or $href (printf "%s/" (relLangURL (path.Join $baseURL $doc_slug))) -}}
|
||||
{{- $active := eq (strings.TrimSuffix "/" $page.RelPermalink) (strings.TrimSuffix "/" $href) -}}
|
||||
|
||||
{{ if eq $level 0}}
|
||||
<li class="mt-1 mb-1 {{ if $sectionBreak }}border-top{{ end }}"></li>
|
||||
@@ -63,17 +69,27 @@
|
||||
<li>
|
||||
<ul class="btn-toggle-nav list-unstyled fw-bold pb-1">
|
||||
<li>
|
||||
<a href="{{ $href }}" class="sidebar-item text-decoration-none rounded {{ if $active }}active{{ end }}">
|
||||
{{ $title }}
|
||||
</a>
|
||||
{{ $class := "sidebar-item text-decoration-none rounded" }}
|
||||
{{ if $active }}{{ $class = printf "%s active" $class }}{{ end }}
|
||||
{{ $link := partial "utilities/link.html" (dict "destination" $href "text" $title "class" $class "page" $page) }}
|
||||
{{ if $link }}
|
||||
{{ print $link | safeHTML }}
|
||||
{{ else }}
|
||||
{{- errorf "partial [utilities/sidebar.html] - Invalid link in file: %s" ($page.Scratch.Get "sidebarFilename") -}}
|
||||
{{ end }}
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
{{ else }}
|
||||
<li>
|
||||
<a href="{{ $href }}" class="sidebar-item text-decoration-none rounded small {{ if $active }}active{{ end }}">
|
||||
{{ $title }}
|
||||
</a>
|
||||
{{ $class := "sidebar-item text-decoration-none rounded small" }}
|
||||
{{ if $active }}{{ $class = printf "%s active" $class }}{{ end }}
|
||||
{{ $link := partial "utilities/link.html" (dict "destination" $href "text" $title "class" $class "page" $page) }}
|
||||
{{ if $link }}
|
||||
{{ print $link | safeHTML }}
|
||||
{{ else }}
|
||||
{{- errorf "partial [utilities/sidebar.html] - Invalid link in file: %s" ($page.Scratch.Get "sidebarFilename") -}}
|
||||
{{ end }}
|
||||
</li>
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
@@ -94,6 +110,7 @@
|
||||
"level" (add $level 1)
|
||||
"baseURL" $baseURL
|
||||
"group" $item
|
||||
"menu" $data
|
||||
)
|
||||
}}
|
||||
{{- else }}
|
||||
@@ -103,6 +120,8 @@
|
||||
"level" $level
|
||||
"baseURL" $baseURL
|
||||
"title" $item.title
|
||||
"href" $item.link
|
||||
"menu" $data
|
||||
)
|
||||
}}
|
||||
{{- end }}
|
||||
|
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) -}}
|
||||
{{ if (gt $items 1) -}}
|
||||
{{- $page := .page -}}
|
||||
{{- $download := .download -}}
|
||||
|
||||
{{ $items := len (findRE "<li.*?>(.|\n)*?</li>" $page.TableOfContents) -}}
|
||||
{{ if or $download (gt $items 1) -}}
|
||||
<div class="toc toc-sidebar mb-5 my-md-0 ps-xl-3 mb-lg-5 p-3 text-body-secondary sticky-top">
|
||||
{{ with $download }}
|
||||
<div class="mb-5">
|
||||
{{ $attr := dict "download" (path.Base .) }}
|
||||
{{ partial "assets/button.html" (dict "href" . "title" (T "download" ) "color" "primary" "outline" "true" "icon" "fas download" "attributes" $attr) }}
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
<strong class="d-block h6 my-2 pb-2 border-bottom">{{ T "toc" }}</strong>
|
||||
{{ .TableOfContents }}
|
||||
{{ $page.TableOfContents }}
|
||||
</div>
|
||||
{{ end -}}
|
@@ -6,6 +6,14 @@
|
||||
{{- $core := .core | default false -}}
|
||||
{{- $skipTemplate := .skipTemplate | default false -}}
|
||||
|
||||
{{- $state := "async" -}}
|
||||
{{- with .state }}{{ $state = . }}{{ end -}}
|
||||
{{- if or $header (eq $state "immediate") }}{{ $state = "" }}{{ end -}}
|
||||
{{- $supportedStates := slice "defer" "async" "immediate" -}}
|
||||
{{- if and $state (not (in $supportedStates $state)) -}}
|
||||
{{- errorf "partial [footer/script.html] - Invalid value for param 'processing': %s" $state -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $modules := "" -}}
|
||||
{{ if $core }}
|
||||
{{- $modules = site.Params.modules.core -}}
|
||||
@@ -26,9 +34,9 @@
|
||||
|
||||
{{- if gt (len $js.Content) 0 -}}
|
||||
{{- if not hugo.IsProduction -}}
|
||||
<script src="{{ if $absoluteURL }}{{ $js.Permalink }}{{ else }}{{ $js.RelPermalink }}{{ end }}"></script>
|
||||
<script src="{{ if $absoluteURL }}{{ $js.Permalink }}{{ else }}{{ $js.RelPermalink }}{{ end }}"{{ with $state }} {{ . | safeHTMLAttr }}{{ end }}></script>
|
||||
{{ else -}}
|
||||
{{ $js = $js | minify | fingerprint -}}
|
||||
<script src="{{ if $absoluteURL }}{{ $js.Permalink }}{{ else }}{{ $js.RelPermalink }}{{ end }}" integrity="{{ $js.Data.Integrity }}" crossorigin="anonymous"></script>
|
||||
<script src="{{ if $absoluteURL }}{{ $js.Permalink }}{{ else }}{{ $js.RelPermalink }}{{ end }}" integrity="{{ $js.Data.Integrity }}" crossorigin="anonymous"{{ with $state}} {{ . | safeHTMLAttr }}{{ end }}></script>
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
|
@@ -7,27 +7,29 @@
|
||||
|
||||
{{ if gt .Site.Menus.social 0 }}
|
||||
{{- $tab := site.Params.main.externalLinks.tab -}}
|
||||
<div class="container-fluid">
|
||||
<div class="row row-cols-1 row-cols-sm-4 bg-primary p-3 bg-opacity-{{ .Site.Params.style.themeOpacity | default "25" | safeHTML }} align-items-center">
|
||||
<div class="col col-md-2 d-none d-md-block"></div>
|
||||
<div class="col col-sm-6 col-md-4">
|
||||
{{ if gt .Site.Menus.social 0 }}
|
||||
<div class="fs-3 fw-bold">{{ or .Site.Params.footer.socialTitle .Site.Params.social.title }}</div>
|
||||
<p>{{ or .Site.Params.footer.socialCaption .Site.Params.social.caption }}</p>
|
||||
{{ end }}
|
||||
<div class="container-fluid bg-primary bg-opacity-{{ .Site.Params.style.themeOpacity | default "25" | safeHTML }}">
|
||||
<div class="container-xxl px-4 px-xxl-0">
|
||||
<div class="row row-cols-2 py-3 align-items-center">
|
||||
<div class="col col-6">
|
||||
<div class="row justify-content-end p-0">
|
||||
<div class="col-12 col-md-8 p-0">
|
||||
<div class="fs-3 fw-bold">{{ or .Site.Params.footer.socialTitle .Site.Params.social.title }}</div>
|
||||
<p>{{ or .Site.Params.footer.socialCaption .Site.Params.social.caption }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col col-6 text-sm-start">
|
||||
{{ range .Site.Menus.social -}}
|
||||
<a href="{{ .URL }}" {{ if $tab }} target="_blank" rel="noopener noreferrer"{{ end }} aria-label="{{ .Name | safeHTML }}" class="text-decoration-none link-secondary d-inline p-2">
|
||||
{{ if hasPrefix .Pre "<i" }}
|
||||
{{ .Pre | safeHTML }}
|
||||
{{ else }}
|
||||
{{ partial "assets/icon.html" (dict "icon" (printf "%s fa-2x" .Pre) )}}
|
||||
{{ end }}
|
||||
</a>
|
||||
{{ end -}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col text-sm-start text-center col-sm-6 col-md-4">
|
||||
{{ range .Site.Menus.social -}}
|
||||
<a href="{{ .URL }}" {{ if $tab }} target="_blank" rel="noopener noreferrer"{{ end }} aria-label="{{ .Name | safeHTML }}" class="text-decoration-none link-secondary d-inline p-2">
|
||||
{{ if hasPrefix .Pre "<i" }}
|
||||
{{ .Pre | safeHTML }}
|
||||
{{ else }}
|
||||
{{ partial "assets/icon.html" (dict "icon" (printf "%s fa-2x" .Pre) )}}
|
||||
{{ end }}
|
||||
</a>
|
||||
{{ end -}}
|
||||
</div>
|
||||
<div class="col col-md-2 d-none d-md-block"></div>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
@@ -3,7 +3,7 @@
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
{{ hugo.Generator}}
|
||||
{{ partial "head/stylesheet.html" -}}
|
||||
{{ partialCached "head/stylesheet-core.html" . -}}
|
||||
{{- $modules := site.Params.modules.optional | intersect .Page.Params.modules -}}
|
||||
{{- range $index, $mod := $modules -}}
|
||||
{{- $source := printf "scss/%s.scss" $mod -}}
|
||||
|
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 -}}
|
||||
{{- $source := .source | default "scss/app.scss" -}}
|
||||
{{- $source := .source }}
|
||||
{{- if not $source -}}
|
||||
{{- if eq $transpiler "dartsass" }}{{ $source = "scss/app-dart.scss" }}{{ else }}{{ $source = "scss/app.scss" }}{{ end -}}
|
||||
{{- end -}}
|
||||
{{- $target := .target | default "css/main.css" -}}
|
||||
{{- $page := .page -}}
|
||||
{{- $core := .core | default true -}}
|
||||
@@ -21,6 +30,7 @@
|
||||
{{- if site.Params.navigation.fixed }}{{ $navbarOffset = site.Params.navigation.offset | default "4em" }}{{ end }}
|
||||
{{- $vars := dict
|
||||
"theme-font" (default "Inter" site.Params.style.themeFont)
|
||||
"font-size-base" (default "1rem" site.Params.style.fontSizeBase)
|
||||
"primary" (default "#007bff" site.Params.style.primary)
|
||||
"secondary" (default "#6c757d" site.Params.style.secondary)
|
||||
"success" (default "#198754" site.Params.style.success)
|
||||
@@ -36,22 +46,24 @@
|
||||
"dark-mode-tint" (default "0%" site.Params.style.darkModeTint)
|
||||
-}}
|
||||
|
||||
{{- $options := (dict "transpiler" "libsass" "targetPath" $target "enableSourceMap" (not hugo.IsProduction) "vars" $vars) -}}
|
||||
{{- $options := (dict "transpiler" $transpiler "targetPath" $target "enableSourceMap" (not hugo.IsProduction) "vars" $vars) -}}
|
||||
{{- $bundle := partial "utilities/bundle" (dict "match" $source "filename" (printf "scss/bundle-%d.scss" now.UnixNano) "modules" $modules "basepath" "scss" "debugging" site.Params.debugging.showSCSS) -}}
|
||||
|
||||
{{- $css := $bundle | resources.ExecuteAsTemplate $target . | toCSS $options -}}
|
||||
{{- if gt ($bundle.Content | len) 0 }}
|
||||
{{- $css := $bundle | resources.ExecuteAsTemplate $target . | toCSS $options -}}
|
||||
|
||||
{{ if $core }}
|
||||
{{- partial "head/icons.html" (dict "css" $css) -}}
|
||||
{{ end }}
|
||||
{{- if site.Params.style.purge -}}
|
||||
{{- $post_options := dict "config" "config" -}}
|
||||
{{- $css = $css | resources.PostCSS $post_options -}}
|
||||
{{- end -}}
|
||||
{{ if $core }}
|
||||
{{- partial "head/icons.html" (dict "css" $css) -}}
|
||||
{{ end }}
|
||||
{{- if site.Params.style.purge -}}
|
||||
{{- $post_options := dict "config" "config" "noMap" hugo.IsProduction -}}
|
||||
{{- $css = $css | resources.PostCSS $post_options -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if not hugo.IsProduction -}}
|
||||
<link rel="stylesheet" href="{{ if $absoluteURL }}{{ $css.Permalink }}{{ else }}{{ $css.RelPermalink }}{{ end }}">
|
||||
{{- else -}}
|
||||
{{- $css = $css | fingerprint | resources.PostProcess -}}
|
||||
<link rel="stylesheet" href="{{ if $absoluteURL }}{{ $css.Permalink }}{{ else }}{{ $css.RelPermalink }}{{ end }}" integrity="{{ $css.Data.Integrity }}" crossorigin="anonymous">
|
||||
{{- if not hugo.IsProduction -}}
|
||||
<link rel="stylesheet" href="{{ if $absoluteURL }}{{ $css.Permalink }}{{ else }}{{ $css.RelPermalink }}{{ end }}">
|
||||
{{- else -}}
|
||||
{{- $css = $css | minify | fingerprint | resources.PostProcess -}}
|
||||
<link rel="stylesheet" href="{{ if $absoluteURL }}{{ $css.Permalink }}{{ else }}{{ $css.RelPermalink }}{{ end }}" integrity="{{ $css.Data.Integrity }}" crossorigin="anonymous">
|
||||
{{- end -}}
|
||||
{{- end -}}
|
@@ -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>
|
93
layouts/partials/list/featured.html
Normal file
93
layouts/partials/list/featured.html
Normal file
@@ -0,0 +1,93 @@
|
||||
{{- $page := .page -}}
|
||||
{{- $headings := .headings -}}
|
||||
{{- $orientation := .orientation | default "stacked" -}}
|
||||
{{- $actions := .actions -}}
|
||||
{{- $width := .width | default 6 }}
|
||||
{{- if or (lt $width 1) (gt $width 12) -}}
|
||||
{{- $width = 6 -}}
|
||||
{{- warnf "partial [list/featured.html] - Invalid column width: %d" $width -}}
|
||||
{{ end -}}
|
||||
{{- $justify := .justify | default "center" -}}
|
||||
{{- $supportedJustify := slice "start" "end" "center" "between" "around" "evenly" -}}
|
||||
{{- if not (in $supportedJustify $justify) -}}
|
||||
{{- errorf "partial [list/featured.html] - Invalid value for param 'justify': %s" $justify -}}
|
||||
{{- end -}}
|
||||
{{- $align := .align | default "center" -}}
|
||||
{{- $supportedAlign := slice "start" "end" "center" -}}
|
||||
{{- if not (in $supportedAlign $align) -}}
|
||||
{{- errorf "partial [list/featured.html] - Invalid value for param 'align': %s" $align -}}
|
||||
{{- end -}}
|
||||
{{- $breadcrumb := and (not $page.IsHome) site.Params.navigation.breadcrumb -}}
|
||||
|
||||
{{- define "partials/list/featured-body.html" }}
|
||||
{{- $page := .page -}}
|
||||
{{- $headings := .headings -}}
|
||||
{{- $orientation := .orientation | default "stacked" -}}
|
||||
{{- $actions := .actions -}}
|
||||
{{- $align := .align | default "center" -}}
|
||||
|
||||
<div class="text-{{ $align }}">
|
||||
{{ with $page.Title }}<p class="display-4">{{ . }}</p>{{ end }}
|
||||
<span class="fs-5 text-muted">{{ $page.Description }}</span>
|
||||
|
||||
{{ if $actions }}
|
||||
<div class="hstack{{ if gt (len $actions) 1 }} gap-3{{ end }} justify-content-{{ $align}} pt-5 pt-md-3">
|
||||
{{ range $actions }}
|
||||
{{ partial "assets/button.html" (dict "href" .url "icon" .icon "title" .title "outline" .outline "order" "last" "justify" "start") }}
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{- end -}}
|
||||
|
||||
{{- define "partials/list/featured-illustration.html" }}
|
||||
{{- $page := .page -}}
|
||||
{{- $style := printf "img-wrap mx-auto mx-md-0 %s" .style -}}
|
||||
|
||||
{{ if $page.Params.icon }}
|
||||
{{- $icon := (or (and (reflect.IsMap $page.Params.Icon) $page.Params.Icon.url) $page.Params.Icon) -}}
|
||||
{{- $mode := and (reflect.IsMap $page.Params.Icon) $page.Params.Icon.mode -}}
|
||||
{{ if eq (lower (path.Ext $icon)) ".json" }}
|
||||
{{ partial "assets/animation.html" (dict "data" $icon "mode" $mode "loop" false "hover" true "class" "col-6 mx-auto text-center") }}
|
||||
{{ else }}
|
||||
{{ partial "assets/icon.html" (dict "icon" "mode" $mode $icon "wrapper" "col-6 mx-auto text-center")}}
|
||||
{{ end }}
|
||||
{{ else }}
|
||||
{{- $thumbnail := (or (and (reflect.IsMap $page.Params.Thumbnail) $page.Params.Thumbnail.url) $page.Params.Thumbnail) -}}
|
||||
{{- if $thumbnail }}
|
||||
{{ partial "assets/image.html" (dict "url" $thumbnail "ratio" "16x9" "outerClass" $style "innerClass" "rounded" "title" .Site.Title) }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{- end -}}
|
||||
|
||||
<div class="container-fluid p-0 {{ with site.Params.home.feature.color }} bg-{{ . }} bg-opacity-{{ site.Params.style.themeOpacity | default "25" | safeHTML }}{{ end }}">
|
||||
<div class="container-xxl {{ if $breadcrumb }} pb-4 px-4 {{ else }} p-4 {{ end }} px-xxl-0 {{ if site.Params.home.fullCover }} fullscreen{{ end }} d-flex flex-column">
|
||||
{{ if $breadcrumb }}
|
||||
<div>{{ partial "assets/breadcrumb.html" $page }}</div>
|
||||
{{ end -}}
|
||||
|
||||
{{ if eq $orientation "stacked" }}
|
||||
<div class="row justify-content-center flex-fill">
|
||||
<div class="col-12 col-md-{{ $width }} m-auto text-center">
|
||||
{{ partial "partials/list/featured-illustration.html" (dict "page" $page "style" "pb-4") }}
|
||||
{{ partial "partials/list/featured-body.html" (dict "page" $page "headings" $headings "orientation" $orientation "actions" $actions) }}
|
||||
</div>
|
||||
</div>
|
||||
{{ else }}
|
||||
<div class="flex-fill row row-cols-1 row-cols-md-2 justify-content-{{ $justify }}">
|
||||
<div class="col col-12 col-md-{{ $width }} order-1 order-md-0 my-md-auto">
|
||||
{{ partial "partials/list/featured-body.html" (dict "page" $page "headings" $headings "orientation" $orientation "actions" $actions "align" $align) }}
|
||||
</div>
|
||||
<div class="col col-12 col-md-{{ if gt $width 6 }}{{ sub 12 $width }}{{ else }}{{ $width }}{{ end }} order-0 order-md-1 text-center my-md-auto">
|
||||
{{ partial "partials/list/featured-illustration.html" (dict "page" $page "style" "pb-4 pb-md-0") }}
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
{{ with $headings }}
|
||||
<div class="col col-12 p-0 pt-5">
|
||||
{{ partial "assets/toc-main.html" (dict "headings" .) }}
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
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 -}}
|
@@ -7,7 +7,8 @@
|
||||
{{ $page := .page -}}
|
||||
{{ $arg := .arg -}}
|
||||
{{ $merge := .merge -}}
|
||||
{{ $val := $page.Get $arg }}
|
||||
{{ $val := "" }}
|
||||
{{ with $page.Get $arg }}{{ $val = . }}{{ end }}
|
||||
|
||||
{{- with $page.Parent -}}
|
||||
{{ with .Get $arg }}
|
||||
|
@@ -1,12 +1,17 @@
|
||||
{{- $page := .page -}}
|
||||
{{- $version := .version -}}
|
||||
{{- $sidebarFilename := "" -}}
|
||||
|
||||
{{- $menu := "" -}}
|
||||
{{- if $page.IsPage -}}
|
||||
{{- $menu = index site.Data (printf "%s-%s" $page.Section $version) -}}
|
||||
{{- $sidebarFilename = printf "%s-%s" $page.Section $version -}}
|
||||
{{- $menu = index site.Data $sidebarFilename -}}
|
||||
{{ if not $menu }}
|
||||
{{ $menu = index site.Data $page.Section }}
|
||||
{{- $sidebarFilename = $page.Section -}}
|
||||
{{ $menu = index site.Data $sidebarFilename }}
|
||||
{{ end }}
|
||||
{{- end -}}
|
||||
|
||||
{{ if $menu }}{{ with $sidebarFilename }}{{ $page.Scratch.Set "sidebarFilename" (path.Join "data" .) }}{{ end }}{{ end -}}
|
||||
|
||||
{{- return $menu -}}
|
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 }}
|
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+[\s,]\d+[\s,]\d+[\s,]\d+"` (readFile $path) 1 }}
|
||||
{{ $content := split (index (split (index . 0) `"`) 1) " " }}
|
||||
{{ $viewbox_width := float (index $content 2) }}
|
||||
{{ $viewbox_height := float (index $content 3) }}
|
||||
{{ $width = int (math.Round (mul (div $height $viewbox_height) $viewbox_width)) }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{ return $width }}
|
@@ -3,6 +3,7 @@
|
||||
{{- errorf "partial [utilities/link.html] - Missing param 'destination'" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $error := false -}}
|
||||
{{- $target := "" -}}
|
||||
{{- $rel := "" -}}
|
||||
{{- $case := .case | default true }}
|
||||
@@ -25,7 +26,7 @@
|
||||
{{- end -}}
|
||||
|
||||
{{- if $cue -}}
|
||||
{{ $suffix := partial "assets/icon.html" (dict "icon" "fas up-right-from-square fa-2xs") }}
|
||||
{{ $suffix := partial "assets/icon.html" (dict "icon" "fas up-right-from-square fa-2xs" "spacing" false) }}
|
||||
{{- $text = printf "%s %s" $text $suffix | safeHTML -}}
|
||||
{{- end -}}
|
||||
{{- else -}}
|
||||
@@ -34,27 +35,15 @@
|
||||
{{- if ne (len $segments) 2 }}
|
||||
{{- errorf "partial [utilities/link.html] - Malformed path, expected one anchor '#' only: %s" $destination -}}
|
||||
{{ else }}
|
||||
{{- $destination = index $segments 0 -}}
|
||||
{{- $anchor = index $segments 1 -}}
|
||||
{{- $destination = index $segments 0 -}}
|
||||
{{- $anchor = index $segments 1 -}}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{- $destination = strings.TrimSuffix "/" $destination -}}
|
||||
{{- $ref := $page.GetPage $destination -}}
|
||||
|
||||
{{- if not $ref }}
|
||||
{{- $segments := split $destination "/" -}}
|
||||
{{- if and (hasPrefix $destination "/") (gt (len $segments) 1) -}}
|
||||
{{- $prefix := index $segments 1 -}}
|
||||
{{- $page := .Page -}}
|
||||
{{ with index (where site.Sites "Language.Lang" $prefix) 0 }}
|
||||
{{- $path := printf "/%s" (strings.TrimPrefix (printf "/%s/" $prefix) $destination) }}
|
||||
{{- $ref = .GetPage $path -}}
|
||||
{{ end }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{ $ref := partial "utilities/GetPage.html" (dict "url" $destination "page" $page) }}
|
||||
{{- if not $ref -}}
|
||||
{{- errorf "partial [utilities/link.html] - Cannot find page: %s" $destination -}}
|
||||
{{- $error = true -}}
|
||||
{{- else -}}
|
||||
{{- $destination = $ref.RelPermalink -}}
|
||||
{{- with $anchor }}{{ $destination = printf "%s#%s" (strings.TrimSuffix "/" $destination) . -}}{{ end -}}
|
||||
@@ -69,4 +58,6 @@
|
||||
{{- 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 }}
|
@@ -35,7 +35,7 @@
|
||||
{{ $error = true }}
|
||||
{{ end -}}
|
||||
|
||||
{{- $class := .Get "class" -}}
|
||||
{{- $class := .Get "class" | default "" -}}
|
||||
|
||||
{{ if not $error }}
|
||||
{{/* Try language-specific file first */}}
|
||||
@@ -63,6 +63,6 @@
|
||||
{{ end }}
|
||||
|
||||
{{ 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 }}
|
@@ -12,7 +12,7 @@
|
||||
{{- end -}}
|
||||
|
||||
{{- $id := .Ordinal -}}
|
||||
{{ $header := .Get "header" -}}
|
||||
{{ $header := .Get "header" | default "" -}}
|
||||
{{ if not $header -}}
|
||||
{{ if .Parent }}
|
||||
{{ errorf "Missing value for param 'header': %s" .Parent.Position -}}
|
||||
@@ -21,7 +21,7 @@
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
|
||||
{{ $class := .Get "class" -}}
|
||||
{{ $class := .Get "class" | default "" -}}
|
||||
{{ $body := trim .Inner " \r\n" -}}
|
||||
{{ if not $body -}}
|
||||
{{ if .Parent }}
|
||||
|
@@ -10,7 +10,7 @@
|
||||
{{ with .Get "id" }}
|
||||
{{ $id = . }}
|
||||
{{ end }}
|
||||
{{- $class := .Get "class" -}}
|
||||
{{- $class := .Get "class" | default "" -}}
|
||||
|
||||
{{- $openParam := "false" -}}
|
||||
{{- $open := false -}}
|
||||
|
@@ -49,7 +49,7 @@
|
||||
{{ $error = true -}}
|
||||
{{ end -}}
|
||||
|
||||
{{- $class := .Get "class" -}}
|
||||
{{- $class := .Get "class" | default "" -}}
|
||||
|
||||
{{- if not $error -}}
|
||||
<div class="d-flex alert alert-{{ $color }} {{ if $dismissible }}alert-dismissible fade show{{ end }}{{ with $class }} {{ . }}{{ end }}" role="alert">
|
||||
|
@@ -7,8 +7,8 @@
|
||||
-->
|
||||
|
||||
{{- $error := false -}}
|
||||
{{- $title := .Get "title" -}}
|
||||
{{- $class := .Get "class" -}}
|
||||
{{- $title := .Get "title" | default "" -}}
|
||||
{{- $class := .Get "class" | default "" -}}
|
||||
{{- $color := "secondary" -}}
|
||||
{{- with .Get "color" }}{{ $color = . }}{{ end -}}
|
||||
{{- $supportedColors := slice "primary" "secondary" "success" "danger" "warning" "info" "light" "dark" "white" "black" -}}
|
||||
|
@@ -5,7 +5,7 @@
|
||||
|
||||
{{- $error := false -}}
|
||||
{{- $page := . -}}
|
||||
{{- $path := .Get "path"}}
|
||||
{{- $path := .Get "path" | default "" }}
|
||||
{{- if $path -}}
|
||||
{{- $page = .Site.GetPage $path -}}
|
||||
{{- if not $page -}}
|
||||
|
@@ -26,12 +26,13 @@
|
||||
"main.externalLinks.cue" in the site's parameters.
|
||||
"tab" Optional flag to indicate if an external link should open in a new tab, defaults to setting
|
||||
"main.externalLinks.tab" in the site's parameters.
|
||||
"spacing" Optional flag to add spacing to the inline button, defaults to "true".
|
||||
-->
|
||||
|
||||
{{ $error := false }}
|
||||
{{ $type := "button" -}}
|
||||
|
||||
{{- $icon := .Get "icon" }}
|
||||
{{- $icon := .Get "icon" | default "" }}
|
||||
{{ $title := trim .Inner " \r\n" | .Page.RenderString -}}
|
||||
{{ if not (or $title $icon) -}}
|
||||
{{ errorf "Missing icon or inner element text: %s" .Position -}}
|
||||
@@ -71,17 +72,17 @@
|
||||
{{ errorf "Invalid value for param 'outline': %s" .Position -}}
|
||||
{{ end -}}
|
||||
|
||||
{{ $badge := .Get "badge" -}}
|
||||
{{ $label := .Get "aria-label" -}}
|
||||
{{ $tooltip := .Get "tooltip" -}}
|
||||
{{ $collapse := .Get "collapse" -}}
|
||||
{{ $href := .Get "href" -}}
|
||||
{{ $relref := .Get "relref" }}
|
||||
{{ $id := .Get "id" -}}
|
||||
{{ $badge := .Get "badge" | default "" -}}
|
||||
{{ $label := .Get "aria-label" | default "" -}}
|
||||
{{ $tooltip := .Get "tooltip" | default "" -}}
|
||||
{{ $collapse := .Get "collapse" | default "" -}}
|
||||
{{ $href := .Get "href" | default "" -}}
|
||||
{{ $relref := .Get "relref" | default "" -}}
|
||||
{{ $id := .Get "id" | default "" -}}
|
||||
{{ if $relref }}
|
||||
{{ $href = relref . $relref }}
|
||||
{{ end }}
|
||||
{{ $class := .Get "class" -}}
|
||||
{{ $class := .Get "class" | default "" -}}
|
||||
|
||||
{{ $placement := "top" -}}
|
||||
{{ with .Get "placement" }}{{ $placement = . }}{{ end -}}
|
||||
@@ -91,7 +92,7 @@
|
||||
{{ $error = true }}
|
||||
{{ end -}}
|
||||
|
||||
{{- $toast := .Get "toast" -}}
|
||||
{{- $toast := .Get "toast" | default "" -}}
|
||||
|
||||
{{- $order := "last" -}}
|
||||
{{- with .Get "order" }}{{ $order = . }}{{ end -}}
|
||||
@@ -112,6 +113,8 @@
|
||||
{{- $cue := .Get "cue" | default site.Params.main.externalLinks.cue -}}
|
||||
{{- $tab := .Get "tab" | default site.Params.main.externalLinks.tab -}}
|
||||
|
||||
{{- $spacing := .Get "spacing" | default (not .Parent) -}}
|
||||
|
||||
{{ if not $error }}
|
||||
{{- $output := partial "assets/button.html" (dict
|
||||
"type" $type
|
||||
@@ -133,7 +136,8 @@
|
||||
"justify" $justify
|
||||
"cue" $cue
|
||||
"tab" $tab
|
||||
"toast" $toast)
|
||||
"toast" $toast
|
||||
"spacing" $spacing)
|
||||
-}}
|
||||
|
||||
{{- if .Parent -}}
|
||||
|
@@ -8,7 +8,9 @@
|
||||
"cols" Required number of columns for the grid, must be a value between 1 and 5.
|
||||
"title" Optional title of the card group.
|
||||
"separator" Optional flag to indicate a horizontal line should be added between items on small screens.
|
||||
"gutter" Gutter between columns in a group, either "0", "1", "2", "3" (default), "4", or "5".
|
||||
"gutter" Gutter between columns in a group, either "0", "1", "2", "3", "4" (default), or "5".
|
||||
"wrapper" Optional class attributes of the wrapper element, e.g. "p-4 px-xxl-0".
|
||||
"responsive" Optional flag if the number of columns should be responsive, defaults to "true".
|
||||
|
||||
In addition, the following arguments are passed to the individual cards.
|
||||
"class" Optional class attribute of the card element, e.g. “w-50”.
|
||||
@@ -22,24 +24,35 @@
|
||||
"orientation" Optional placecement of the thumbnail, either "stacked" (default), "horizontal", or "none".
|
||||
-->
|
||||
|
||||
{{- $cols := 3 -}}
|
||||
{{ with .Get "cols" }}{{ $cols = int . }}{{ end -}}
|
||||
{{- $title := .Get "title" -}}
|
||||
{{- $separator := .Get "separator" -}}
|
||||
{{- $class := .Get "class" -}}
|
||||
{{- $wrapper := .Get "wrapper" -}}
|
||||
{{- $color := .Get "color" -}}
|
||||
{{- $cols := .Get "cols" | default "3" -}}
|
||||
{{- $gutter := .Get "gutter" | default "4" -}}
|
||||
{{- $title := .Get "title" | default "" -}}
|
||||
{{- $separator := .Get "separator" | default "" -}}
|
||||
{{- $class := .Get "class" | default "" -}}
|
||||
{{- $wrapper := .Get "wrapper" | default "" -}}
|
||||
{{- $responsive := .Get "responsive" | default true -}}
|
||||
{{- $color := .Get "color" | default "" -}}
|
||||
{{- $padding := .Get "padding" | default "3" -}}
|
||||
{{- $header := .Get "header" -}}
|
||||
{{- $footer := .Get "footer" -}}
|
||||
{{- $orientation := .Get "orientation" -}}
|
||||
{{- $header := .Get "header" | default "" -}}
|
||||
{{- $footer := .Get "footer" | default "" -}}
|
||||
{{- $orientation := .Get "orientation" | default "" -}}
|
||||
|
||||
{{ $inner := .Scratch.Get "inner" }}
|
||||
{{ $input := trim .Inner " \r\n" }}
|
||||
{{ if $input }}
|
||||
{{ $input = replace $input "\n" "\n " }}
|
||||
{{ warnf "Unexpected inner content: %s\r\n %s" .Position $input }}
|
||||
{{ end }}
|
||||
|
||||
{{- partial "assets/card-group.html" (dict
|
||||
"page" .Page
|
||||
"cards" .Inner
|
||||
"cards" $inner
|
||||
"cols" $cols
|
||||
"gutter" $gutter
|
||||
"title" $title
|
||||
"separator" $separator
|
||||
"wrapper" $wrapper
|
||||
"responsive" $responsive
|
||||
"class" $class
|
||||
"color" $color
|
||||
"padding" $padding
|
||||
|
@@ -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:
|
||||
"path" Optional path of the page. If omitted, specify the title, icon, thumbnail, and body as needed.
|
||||
"title" Optional title of the card.
|
||||
@@ -8,7 +8,7 @@
|
||||
"warning", "info", "light", "dark", "white", "black", "body", or "body-tertiary". By default, no
|
||||
color is specified.
|
||||
"padding" Optional padding of the content, either "0", "1", "2", "3", "4", "5", or "auto" (default).
|
||||
"gutter" Gutter between columns in a group, either "0", "1", "2", "3" (default), "4", or "5".
|
||||
"gutter" Gutter between columns in a group, either "0" (default), "1", "2", "3", "4", or "5".
|
||||
"header" Optional header components of the card, displayed in small caps. Supported values are "full"
|
||||
(default), "publication", "tags", and "none".
|
||||
"footer" Optional footer components of the card, displayed in small caps. Supported values are "full",
|
||||
@@ -21,7 +21,7 @@
|
||||
|
||||
{{ $error := false }}
|
||||
|
||||
{{ $path := .Get "path" }}
|
||||
{{ $path := or (.Get "path") "" }}
|
||||
{{ $page := .Page }}
|
||||
{{ with $path }}
|
||||
{{ $page = $.Site.GetPage $path }}
|
||||
@@ -60,7 +60,7 @@
|
||||
{{ $error = true -}}
|
||||
{{ end -}}
|
||||
|
||||
{{- $gutter := partial "utilities/GetArg" (dict "page" . "arg" "gutter") | default "3" -}}
|
||||
{{- $gutter := partial "utilities/GetArg" (dict "page" . "arg" "gutter") | default "0" -}}
|
||||
{{ $supportedGutters:= slice "0" "1" "2" "3" "4" "5" -}}
|
||||
{{ if not (in $supportedGutters $gutter) -}}
|
||||
{{ errorf "Invalid value for param 'gutter': %s" .Position -}}
|
||||
@@ -82,26 +82,40 @@
|
||||
{{ end -}}
|
||||
|
||||
{{ $description := trim .Inner " \r\n" | .Page.RenderString | safeHTML }}
|
||||
{{ $title := .Get "title" }}
|
||||
{{ $alt := .Get "alt" }}
|
||||
{{ $icon := .Get "icon" }}
|
||||
{{ $thumbnail := .Get "thumbnail" }}
|
||||
{{ $title := .Get "title" | default "" -}}
|
||||
{{ $alt := .Get "alt" | default "" -}}
|
||||
{{ $icon := .Get "icon" | default "" -}}
|
||||
{{ $thumbnail := .Get "thumbnail" | default "" -}}
|
||||
|
||||
{{ if .Parent }}
|
||||
{{ $class = (printf "h-100 %s" $class) }}
|
||||
{{ end }}
|
||||
|
||||
{{ if not $error -}}
|
||||
<div class="g-{{ $gutter }}">
|
||||
{{- partial "assets/card.html" (dict
|
||||
"path" $path
|
||||
"title" $title
|
||||
"class" (printf "h-100 %s" $class)
|
||||
"color" $color
|
||||
"padding" $padding
|
||||
"header" $header
|
||||
"footer" $footer
|
||||
"orientation" $orientation
|
||||
"description" $description
|
||||
"icon" $icon
|
||||
"thumbnail" $thumbnail
|
||||
"alt" $alt
|
||||
) -}}
|
||||
</div>
|
||||
{{- $output := partial "assets/card.html" (dict
|
||||
"path" $path
|
||||
"title" $title
|
||||
"class" $class
|
||||
"gutter" $gutter
|
||||
"color" $color
|
||||
"padding" $padding
|
||||
"header" $header
|
||||
"footer" $footer
|
||||
"orientation" $orientation
|
||||
"description" $description
|
||||
"icon" $icon
|
||||
"thumbnail" $thumbnail
|
||||
"alt" $alt
|
||||
) -}}
|
||||
|
||||
{{ with .Parent }}
|
||||
{{ $current := .Scratch.Get "inner" }}
|
||||
{{ if $current }}
|
||||
{{ .Scratch.Set "inner" (print $current $output) }}
|
||||
{{ else }}
|
||||
{{ .Scratch.Set "inner" $output }}
|
||||
{{ end }}
|
||||
{{ else }}
|
||||
{{ print $output | safeHTML }}
|
||||
{{ end }}
|
||||
{{ end -}}
|
@@ -14,7 +14,7 @@
|
||||
{{ $id = . }}
|
||||
{{ end }}
|
||||
|
||||
{{ $class := .Get "class" -}}
|
||||
{{ $class := .Get "class" | default "" -}}
|
||||
|
||||
{{ $inner := .Scratch.Get "inner" }}
|
||||
{{ $input := trim .Inner " \r\n" }}
|
||||
|
@@ -4,12 +4,12 @@
|
||||
"class" Optional class attribute of the inner panel element, e.g. “p-3”.
|
||||
-->
|
||||
|
||||
{{ $id := .Get "id" -}}
|
||||
{{ $id := .Get "id" | default "" -}}
|
||||
{{ if not $id -}}
|
||||
{{ errorf "Missing value for param 'id': %s" .Position -}}
|
||||
{{ end -}}
|
||||
|
||||
{{ $class := .Get "class" }}
|
||||
{{ $class := .Get "class" | default "" }}
|
||||
|
||||
{{- $body := trim .Inner " \r\n" -}}
|
||||
{{ if not $body -}}
|
||||
|
@@ -8,9 +8,9 @@
|
||||
"class" Optional class attribute of the command element.
|
||||
-->
|
||||
|
||||
{{- $host := .Get "host" -}}
|
||||
{{- $user := .Get "user" -}}
|
||||
{{- $prompt := .Get "prompt" -}}
|
||||
{{- $host := .Get "host" | default "" -}}
|
||||
{{- $user := .Get "user" | default "" -}}
|
||||
{{- $prompt := .Get "prompt" | default "" -}}
|
||||
{{- $filter := "(out)" -}}
|
||||
{{- $input := trim .Inner " \t\r\n" -}}
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
{{- $output = (replace $output "<span class=\"c\">#" "<span class=\"c\">" | safeHTML) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $class := .Get "class" -}}
|
||||
{{- $class := .Get "class" | default "" -}}
|
||||
|
||||
<div class="mb-3 syntax-highlight{{ with $class }} {{ . }}{{ end }}">
|
||||
{{- $output -}}
|
||||
|
@@ -19,9 +19,9 @@
|
||||
"class" Optional class argument of the tab control.
|
||||
-->
|
||||
|
||||
{{- $name := .Get "name" -}}
|
||||
{{- $name := .Get "name" | default "" -}}
|
||||
{{- $basePath := .Site.Params.docs.basePath -}}
|
||||
{{- $file := .Get "file" }}
|
||||
{{- $file := .Get "file" | default "" -}}
|
||||
{{- if hasPrefix $file "./" -}}
|
||||
{{- $file = path.Clean $file -}}
|
||||
{{- else -}}
|
||||
@@ -68,7 +68,7 @@
|
||||
{{ errorf "Invalid value for param 'full': %s" $fullParam -}}
|
||||
{{ end -}}
|
||||
|
||||
{{- $class := .Get "class" -}}
|
||||
{{- $class := .Get "class" | default "" -}}
|
||||
|
||||
{{- /* If any parameters are missing, print an error and exit */ -}}
|
||||
{{- if or (not $name) (not $file) -}}
|
||||
|
@@ -11,8 +11,8 @@
|
||||
"class" Optional class attributes of the element's container.
|
||||
-->
|
||||
|
||||
{{- $id := .Get "id" -}}
|
||||
{{- $class := .Get "class" -}}
|
||||
{{- $id := .Get "id" | default "" -}}
|
||||
{{- $class := .Get "class" | default "" -}}
|
||||
{{- $lang := .Get "lang" | default "markdown" -}}
|
||||
{{- $show_markup := .Get "show_markup" | default true -}}
|
||||
{{- $show_preview := .Get "show_preview" | default true -}}
|
||||
|
@@ -14,7 +14,7 @@
|
||||
-->
|
||||
|
||||
{{- $basePath := .Site.Params.docs.basePath -}}
|
||||
{{- $file := .Get "path" }}
|
||||
{{- $file := .Get "path" | default "" -}}
|
||||
{{- if hasPrefix $file "./" -}}
|
||||
{{- $file = path.Clean $file -}}
|
||||
{{- else -}}
|
||||
@@ -47,7 +47,7 @@
|
||||
{{ errorf "Invalid value for param 'full': %s" $fullParam -}}
|
||||
{{ end -}}
|
||||
|
||||
{{- $class := .Get "class" -}}
|
||||
{{- $class := .Get "class" | default "" -}}
|
||||
|
||||
{{- /* If any parameters are missing, print an error and exit */ -}}
|
||||
{{- if not $file -}}
|
||||
|
@@ -16,19 +16,19 @@
|
||||
-->
|
||||
|
||||
{{- if isset .Params "src" -}}
|
||||
{{ $url := .Get "src" -}}
|
||||
{{ $url := .Get "src" | default "" -}}
|
||||
{{- $validRatios := slice "1x1" "3x2" "4x3" "16x9" "21x9" -}}
|
||||
{{ $ratio := .Get "ratio" -}}
|
||||
{{ $ratio := .Get "ratio" | default "" -}}
|
||||
{{ if $ratio -}}
|
||||
{{ if not (in $validRatios $ratio) -}}
|
||||
{{ errorf "Invalid value for param 'ratio': %s" .Position -}}
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
|
||||
{{- $class := .Get "class" -}}
|
||||
{{- $wrapper := .Get "wrapper" -}}
|
||||
{{ $title := .Get "title" -}}
|
||||
{{ $caption := .Get "caption" -}}
|
||||
{{- $class := .Get "class" | default "" -}}
|
||||
{{- $wrapper := .Get "wrapper" | default "" -}}
|
||||
{{ $title := .Get "title" | default "" -}}
|
||||
{{ $caption := .Get "caption" | default "" -}}
|
||||
{{ $supportedFlags := slice "true" "false" -}}
|
||||
{{ $modeParam := "false" -}}
|
||||
{{ $mode := false -}}
|
||||
|
@@ -12,9 +12,9 @@
|
||||
{{ if not .Parent }}
|
||||
{{ errorf "The img shortcode should be contained within a carousel shortcode: %s" .Position }}
|
||||
{{ else }}
|
||||
{{- $src := .Get "src" -}}
|
||||
{{- $src := .Get "src" | default "" -}}
|
||||
{{- if $src -}}
|
||||
{{- $caption := .Get "caption" -}}
|
||||
{{- $caption := .Get "caption" | default "" -}}
|
||||
{{- $ratio := partial "utilities/GetArg" (dict "page" . "arg" "ratio") -}}
|
||||
{{- $portrait := partial "utilities/GetArg" (dict "page" . "arg" "portrait") | default false -}}
|
||||
{{- $active := eq .Ordinal 0 -}}
|
||||
|
@@ -10,7 +10,7 @@
|
||||
{{- $error := false -}}
|
||||
{{- $title := "" -}}
|
||||
{{- if .IsNamedParams }}{{ $title = .Get "title" }}{{ else }}{{ $title = .Get 0 }}{{ end }}
|
||||
{{- $class := .Get "class" -}}
|
||||
{{- $class := .Get "class" | default "" -}}
|
||||
{{- $color := "" -}}
|
||||
{{- with .Get "color" }}{{ $color = . }}{{ end -}}
|
||||
{{- $supportedColors := slice "primary" "secondary" "success" "danger" "warning" "info" "light" "dark" "white" "black" -}}
|
||||
|
@@ -30,13 +30,13 @@
|
||||
{{- $anchor := "" -}}
|
||||
|
||||
{{ if .IsNamedParams }}
|
||||
{{ $href = .Get "href" }}
|
||||
{{ $name = .Get "name" }}
|
||||
{{ $url = .Get "url" }}
|
||||
{{ $cue = .Get "cue" | default site.Params.main.externalLinks.cue }}
|
||||
{{ $tab = .Get "tab" | default site.Params.main.externalLinks.tab }}
|
||||
{{ $case = .Get "case" | default true }}
|
||||
{{- $class := .Get "class" -}}
|
||||
{{- $href = .Get "href" | default "" -}}
|
||||
{{- $name = .Get "name" | default "" -}}
|
||||
{{- $url = .Get "url" | default "" -}}
|
||||
{{- $cue = .Get "cue" | default site.Params.main.externalLinks.cue -}}
|
||||
{{- $tab = .Get "tab" | default site.Params.main.externalLinks.tab -}}
|
||||
{{- $case = .Get "case" | default true -}}
|
||||
{{- $class = .Get "class" | default "" -}}
|
||||
{{ else }}
|
||||
{{ $href = .Get 0 }}
|
||||
{{ end }}
|
||||
@@ -63,8 +63,7 @@
|
||||
{{- $url = index $segments 0 -}}
|
||||
{{- $anchor = index $segments 1 -}}
|
||||
{{ if not $url }}
|
||||
{{- $url = strings.TrimSuffix "/" .Page.RelPermalink -}}
|
||||
{{- with .Page.Language }}{{ $url = strings.TrimPrefix (path.Join "/" .Lang) $url}}{{ end -}}
|
||||
{{ $url = .Page.File.Path }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ else }}
|
||||
@@ -74,27 +73,9 @@
|
||||
|
||||
{{- $isExternal := ne (urls.Parse (absURL $url)).Host (urls.Parse site.BaseURL).Host -}}
|
||||
{{- if not $isExternal -}}
|
||||
{{- $url = strings.TrimSuffix "/" $url -}}
|
||||
|
||||
{{- $ref := "" -}}
|
||||
{{ $ref := partial "utilities/GetPage.html" (dict "url" $url "page" .Page) }}
|
||||
{{- if not $ref -}}
|
||||
{{- $ref = .Page.GetPage $url -}}
|
||||
{{- 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 -}}
|
||||
{{- errorf "Cannot find page: '%s' at %s" $url .Position -}}
|
||||
{{- $error = true -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
@@ -102,9 +83,7 @@
|
||||
{{ with $anchor }}
|
||||
{{ $url = printf "%s#%s" $url .}}
|
||||
{{ end }}
|
||||
|
||||
{{- if not $error -}}
|
||||
{{ partial "utilities/link.html" (dict "destination" $url "text" $text "cue" $cue "tab" $tab "case" $case "class" $class "page" .Page) }}
|
||||
{{- end -}}
|
||||
|
||||
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user