Compare commits

...

50 Commits

Author SHA1 Message Date
Mark Dumay
68c2cac3e0 Merge pull request #1559 from gethinode/develop
fix: correct layout of stacked video message
2025-09-01 16:12:30 +02:00
Mark Dumay
1c0ed71df9 Merge branch 'main' into develop 2025-09-01 16:07:04 +02:00
Mark Dumay
1e8791fdf0 fix: correct layout of stacked video message 2025-09-01 16:06:36 +02:00
Mark Dumay
8cfac32280 Merge pull request #1558 from gethinode/develop
feat: support generic site default values for partial/shortode arguments
2025-09-01 10:10:57 +02:00
Mark Dumay
6e7a1dcdb9 feat: support generic site default values for partial/shortode arguments 2025-09-01 08:59:37 +02:00
Mark Dumay
19cda9a986 Merge pull request #1556 from gethinode/develop
Develop
2025-08-30 16:05:16 +02:00
Mark Dumay
9ee9ebc960 fix: adjust width of dropdown items in collapsed navbar 2025-08-30 15:54:03 +02:00
Mark Dumay
6f7903a2f2 Merge branch 'main' into develop 2025-08-30 14:41:50 +02:00
Mark Dumay
82d12d693c fix: adjust button size when navbar is expanded on small screens 2025-08-30 14:41:10 +02:00
Mark Dumay
3ed64f59f1 fix: refine nav item layout 2025-08-30 14:40:33 +02:00
Mark Dumay
df8ea923c5 fix: add margin between search input and nav items 2025-08-30 14:37:17 +02:00
Mark Dumay
60872ea541 Merge pull request #1555 from gethinode/dependabot/npm_and_yarn/hugo-bin-0.146.0
build(deps): bump hugo-bin from 0.145.2 to 0.146.0
2025-08-29 19:00:46 +02:00
dependabot[bot]
52715cef21 build(deps): bump hugo-bin from 0.145.2 to 0.146.0
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.145.2 to 0.146.0.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.145.2...v0.146.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-28 14:01:38 +00:00
Mark Dumay
91f79e57ab refactor: reduce whitespace in featured illustration asset 2025-08-28 10:25:13 +02:00
Mark Dumay
fdd878241b Merge pull request #1554 from gethinode/develop
fix: improve nav-item layout
2025-08-28 08:20:07 +02:00
Mark Dumay
f32bd92efa Merge branch 'main' into develop 2025-08-28 08:10:34 +02:00
Mark Dumay
c31dca464a fix: improve nav-item layout 2025-08-28 08:10:03 +02:00
Mark Dumay
cb02c25ac4 Merge pull request #1553 from gethinode/develop
fix: remove navbar item suffix when displaying icon only
2025-08-27 19:37:49 +02:00
Mark Dumay
39ef3c5372 Merge branch 'main' into develop 2025-08-27 19:32:22 +02:00
Mark Dumay
546003c9d4 fix: remove navbar item suffix when displaying icon only 2025-08-27 19:31:50 +02:00
Mark Dumay
6b4a1334bb Merge pull request #1552 from gethinode/develop
TOC
2025-08-27 19:15:19 +02:00
Mark Dumay
90ee71a536 fix: adjust vertical scroll of TOC 2025-08-27 19:09:27 +02:00
Mark Dumay
0c6b2929dc Merge branch 'main' into develop 2025-08-27 18:41:39 +02:00
Mark Dumay
2cb60efc38 fix: remove incorrect tokens for nested TOC items beyond endLevel 2025-08-27 18:40:54 +02:00
github-actions[bot]
26f1bf3c7f Merge pull request #1547 from gethinode/dependabot/npm_and_yarn/cssnano-preset-advanced-7.0.9
build(deps): bump cssnano-preset-advanced from 7.0.8 to 7.0.9
2025-08-27 06:39:29 +00:00
dependabot[bot]
ec8176c1e3 build(deps): bump cssnano-preset-advanced from 7.0.8 to 7.0.9
Bumps [cssnano-preset-advanced](https://github.com/cssnano/cssnano) from 7.0.8 to 7.0.9.
- [Release notes](https://github.com/cssnano/cssnano/releases)
- [Commits](https://github.com/cssnano/cssnano/compare/cssnano-preset-advanced@7.0.8...cssnano-preset-advanced@7.0.9)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-27 06:33:47 +00:00
github-actions[bot]
20b1cfb59e Merge pull request #1548 from gethinode/dependabot/npm_and_yarn/cssnano-7.1.1
build(deps): bump cssnano from 7.1.0 to 7.1.1
2025-08-27 06:32:34 +00:00
Mark Dumay
09a6125834 Merge branch 'main' into dependabot/npm_and_yarn/cssnano-7.1.1 2025-08-27 08:26:53 +02:00
Mark Dumay
f30b30e48e Merge pull request #1549 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2025-08-27 08:26:22 +02:00
Mark Dumay
a0b89fd1a3 Merge branch 'main' into hugo-mod-dependencies 2025-08-27 08:21:02 +02:00
Mark Dumay
dccedfe42d Merge pull request #1550 from gethinode/develop
Develop
2025-08-27 08:11:33 +02:00
Mark Dumay
d3ee13584a fix: test for custom controls in navbar divider 2025-08-27 07:34:12 +02:00
Mark Dumay
03f4541b8a fix: correct translated homepages of example site 2025-08-27 07:14:48 +02:00
Mark Dumay
9b0f91a378 feat: improve navbar configuration 2025-08-27 06:57:46 +02:00
markdumay
d9487b77db fix: update Hugo module dependencies 2025-08-26 03:24:30 +00:00
dependabot[bot]
f543c012bd build(deps): bump cssnano from 7.1.0 to 7.1.1
Bumps [cssnano](https://github.com/cssnano/cssnano) from 7.1.0 to 7.1.1.
- [Release notes](https://github.com/cssnano/cssnano/releases)
- [Commits](https://github.com/cssnano/cssnano/compare/cssnano@7.1.0...cssnano@7.1.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-26 03:14:31 +00:00
github-actions[bot]
c068f7f4e6 Merge pull request #1546 from gethinode/dependabot/npm_and_yarn/eslint-9.34.0
build(deps-dev): bump eslint from 9.33.0 to 9.34.0
2025-08-26 00:38:32 +00:00
dependabot[bot]
0dfd5d6a2f build(deps-dev): bump eslint from 9.33.0 to 9.34.0
Bumps [eslint](https://github.com/eslint/eslint) from 9.33.0 to 9.34.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v9.33.0...v9.34.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-26 00:33:16 +00:00
Mark Dumay
0a6dbccb12 Merge pull request #1545 from gethinode/radius
fix: improve init of color mode icons
2025-08-24 14:02:11 +02:00
Mark Dumay
c012eb5358 Merge branch 'main' into radius 2025-08-24 13:56:27 +02:00
Mark Dumay
bb2f1b63cf fix: improve init of color mode icons 2025-08-24 13:55:43 +02:00
github-actions[bot]
d7facc353d Merge pull request #1543 from gethinode/dependabot/npm_and_yarn/brace-expansion-1.1.12
build(deps): bump brace-expansion from 1.1.11 to 1.1.12
2025-08-22 10:42:12 +00:00
Mark Dumay
4dcae71516 Merge branch 'main' into dependabot/npm_and_yarn/brace-expansion-1.1.12 2025-08-22 12:26:58 +02:00
github-actions[bot]
bac2bed6ad Merge pull request #1539 from gethinode/dependabot/github_actions/actions/checkout-5
build(deps): bump actions/checkout from 4 to 5
2025-08-22 10:09:14 +00:00
dependabot[bot]
56275d04dc build(deps): bump brace-expansion from 1.1.11 to 1.1.12
Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion) from 1.1.11 to 1.1.12.
- [Release notes](https://github.com/juliangruber/brace-expansion/releases)
- [Commits](https://github.com/juliangruber/brace-expansion/compare/1.1.11...v1.1.12)

---
updated-dependencies:
- dependency-name: brace-expansion
  dependency-version: 1.1.12
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-22 10:00:16 +00:00
Mark Dumay
f32a958cf9 Merge branch 'main' into dependabot/github_actions/actions/checkout-5 2025-08-22 11:59:25 +02:00
Mark Dumay
e00e04b40b Merge pull request #1540 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2025-08-22 11:58:56 +02:00
Mark Dumay
4970c604d9 Merge branch 'main' into hugo-mod-dependencies 2025-08-22 11:41:05 +02:00
markdumay
bdf9d84a72 fix: update Hugo module dependencies 2025-08-19 03:24:17 +00:00
dependabot[bot]
7386cf1fb9 build(deps): bump actions/checkout from 4 to 5
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-18 17:35:32 +00:00
38 changed files with 738 additions and 338 deletions

View File

@@ -57,7 +57,7 @@ jobs:
# your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v5
# Add any setup steps before running the `github/codeql-action/init` action.
# This includes steps like installing compilers or runtimes (`actions/setup-node`

View File

@@ -1,4 +1,4 @@
{{- if site.Params.main.enableDarkMode -}}
{{- if (or site.Params.main.enableDarkMode site.Params.main.colorMode.enabled) -}}
/*!
* Color mode toggler for Bootstrap's docs (https://getbootstrap.com/)
@@ -43,9 +43,7 @@
document.documentElement.setAttribute('data-bs-theme', theme)
}
document.querySelectorAll('.navbar-mode-selector').forEach(chk => {
chk.checked = (document.documentElement.getAttribute('data-bs-theme') === 'light')
})
updateSelectors()
}
// alternates the currently active theme
@@ -54,6 +52,12 @@
setTheme(target)
}
function updateSelectors() {
document.querySelectorAll('.navbar-mode-selector').forEach(chk => {
chk.checked = (document.documentElement.getAttribute('data-bs-theme') === 'light')
})
}
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => {
if (storedTheme !== 'light' || storedTheme !== 'dark') {
setTheme(getPreferredTheme())
@@ -69,7 +73,12 @@
})
})
// initialize theme directly when script is invoked
window.addEventListener('load', () => {
// update the selectors when all elements are ready
updateSelectors()
})
// initialize theme as soon as possible to reduce screen flickering
setTheme(getTheme())
})()

View File

@@ -7,7 +7,7 @@
}
.mode-switch {
--#{$prefix}mode-switch-width: 50px;
--#{$prefix}mode-switch-width: 3em;
}
.mode-switch .label {
@@ -64,6 +64,18 @@
transform: scale(0.8);
}
.mode-toggle > input {
z-index: 1;
cursor: pointer;
height: 25px;
width: 25px;
}
.mode-toggle > label {
z-index: 0;
cursor: pointer;
}
// Source: https://jsfiddle.net/njhgr40m/
@if $enable-dark-mode {
@@ -126,12 +138,60 @@
.navbar-expanded {
box-shadow: $box-shadow-sm;
min-height: 100vh;
align-items: start;
}
.navbar-expanded .navbar-collapse {
margin-top: 2rem;
}
@each $h, $size in $font-sizes {
.navbar-fs-#{$h} {
font-size: #{$size};
}
}
@each $breakpoint in map-keys($grid-breakpoints) {
$next: breakpoint-next($breakpoint, $grid-breakpoints);
$infix: breakpoint-infix($next, $grid-breakpoints);
@if $infix != '' {
@include media-breakpoint-up($next) {
.navbar#{$infix}-fs {
font-size: inherit;
}
}
}
}
.navbar-icon {
padding-right: var(--bs-navbar-nav-link-padding-x);
padding-left: var(--bs-navbar-nav-link-padding-x);
}
.nav-item .vr {
color: var(--bs-navbar-color);
}
.navbar .nav-item {
display: flex;
align-items: center;
}
.navbar-collapse .dropdown {
display: inline;
align-items: normal;
}
.navbar-expanded .btn {
font-size: 1em;
}
.navbar-expanded .search-input {
margin-bottom: 1rem;
}
/* Remove border from toggler */
.navbar-toggler {
border: 0 if($enable-important-utilities, !important, null);

View File

@@ -134,4 +134,6 @@
.dropdown-toggle {
outline: 0;
display: flex;
align-items: center;
}

View File

@@ -3,11 +3,11 @@
//
// scss-docs-start toc
.toc-sidebar {
grid-area: toc;
right: 0;
z-index: 2;
overflow-y: auto;
top: 5rem;
max-height: calc(100vh - var(--navbar-offset));
}
// scss-docs-end toc

View File

@@ -122,7 +122,7 @@
) -}}
{{ end }}
</div>
<div class="mt-{{ $padding.y }}">
<div class="mt-{{ $padding.y }} w-100">
{{- partial "inline/messages.html" (dict
"list" $list
"cols" $args.cols

View File

@@ -176,7 +176,7 @@ home = ["HTML", "RSS", "REDIR", "netlify", "server"]
[[module.imports]]
path = "github.com/gethinode/mod-csp"
[[module.imports]]
path = "github.com/gethinode/mod-flexsearch/v2"
path = "github.com/gethinode/mod-flexsearch/v3"
[[module.imports]]
path = "github.com/gethinode/mod-fontawesome/v2"
[[module.imports]]

View File

@@ -2,9 +2,7 @@
[main]
separator = "-"
description = "Hinode is a clean documentation and blog theme for your Hugo site based on Bootstrap 5."
enableDarkMode = true
enableLanguageSelectionStorage = false
modes = ["light", "dark"]
canonifyAssetsURLs = false
endorse = true
footerBelowFold = false
@@ -22,6 +20,12 @@
tab = false
[main.build]
transpiler = "libsass"
[main.colorMode]
enabled = true
modes = ["light", "dark"]
toggle = false
iconLight = "fas sun"
iconDark = "fas moon"
# toml-docs-end main
# toml-docs-start images
@@ -91,8 +95,6 @@
overlayMode = "dark"
horizontal = false
offset = "5.5rem"
search = true
searchModal = false
breadcrumb = true
toc = true
sidebar = true
@@ -103,6 +105,12 @@
[navigation.padding]
x = 4
y = 4
[navigation.language]
icon = "fas globe"
[navigation.search]
enabled = true
modal = true
icon = "fas magnifying-glass"
# toml-docs-end navigation
# toml-docs-start messages

View File

@@ -27,7 +27,7 @@ const purgecss = purgeCSSPlugin({
'./assets/scss/theme/fonts.scss',
'./assets/scss/theme/theme.scss',
'./_vendor/github.com/gethinode/mod-cookieyes/v2/assets/scss/cookieyes.scss',
'./_vendor/github.com/gethinode/mod-flexsearch/v2/assets/scss/modules/flexsearch/flexsearch.scss',
'./_vendor/github.com/gethinode/mod-flexsearch/v3/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/gethinode/mod-mermaid/v3/assets/scss/mermaid.scss',

View File

@@ -0,0 +1,8 @@
---
title: Modal elements
cascade:
- build:
list: local
publishResources: false
render: never
---

View File

@@ -9,7 +9,9 @@ arguments:
comment: Context of the current page.
group: partial
menu:
type: '*navigation.MenuEntry'
type:
- '*navigation.MenuEntry'
- 'map[string]interface {}'
optional: false
comment: Menu data to use for the navbar item.
parent:
@@ -37,3 +39,24 @@ arguments:
optional: true
comment: >-
Renders the navigation item as plain item, ignoring any children.
breakpoint:
release: v1.2.0
modal:
type: string
optional: true
release: v1.2.0
comment: >-
If set, toggles a modal control for the provided target.
id:
type: string
optional: true
release: v1.2.0
comment: >-
If set, adds an id attribute to the menu item.
fs:
type: int
optional: true
default: 6
release: v1.2.0
comment: >-
Sets the font size of the navigation items when the navbar is collapsed.

View File

@@ -115,7 +115,7 @@ home = ["HTML", "RSS", "REDIR", "netlify", "server"]
[[module.imports]]
path = "github.com/gethinode/mod-csp"
[[module.imports]]
path = "github.com/gethinode/mod-flexsearch/v2"
path = "github.com/gethinode/mod-flexsearch/v3"
[[module.imports]]
path = "github.com/gethinode/mod-fontawesome/v2"
[[module.imports]]

View File

@@ -1,9 +1,7 @@
[main]
separator = "-"
description = "Hinode is a clean documentation and blog theme for your Hugo site based on Bootstrap 5."
enableDarkMode = true
enableLanguageSelectionStorage = true
modes = ["light", "dark"]
canonifyAssetsURLs = false
footerBelowFold = false
loading = "lazy"
@@ -21,6 +19,12 @@
[main.build]
transpiler = "dartsass"
silenceDeprecations = true
[main.colorMode]
enabled = true
modes = ["light", "dark"]
toggle = true
iconLight = "fas sun"
iconDark = "fas moon"
[debugging]
showJS = false
@@ -45,18 +49,23 @@
horizontal = false
offset = "5.5rem"
offsetXS = "5.5rem"
search = true
searchModal = false
breadcrumb = true
toc = true
sidebar = true
size = "md"
fontsizeCollapsed = 6
startLevel = 2
endLevel = 3
maxNumHeadings = 9
[navigation.language]
icon = "fas globe"
[navigation.padding]
x = 4
y = 4
[navigation.search]
enabled = true
modal = false
icon = "fas magnifying-glass"
[messages]
placement = "bottom-right"

View File

@@ -27,7 +27,7 @@ const purgecss = purgeCSSPlugin({
'./assets/scss/theme/fonts.scss',
'./assets/scss/theme/theme.scss',
'./_vendor/github.com/gethinode/mod-cookieyes/v2/assets/scss/cookieyes.scss',
'./_vendor/github.com/gethinode/mod-flexsearch/v2/assets/scss/modules/flexsearch/flexsearch.scss',
'./_vendor/github.com/gethinode/mod-flexsearch/v3/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/gethinode/mod-mermaid/v3/assets/scss/mermaid.scss',

View File

@@ -4,7 +4,7 @@ title: Components
date: 2023-09-23
description: Use shortcodes to add predefined components powered by external libraries.
tags: ["bootstrap", "shortcode"]
keywords: ["featured"]
keywords: featured
thumbnail:
url: img/puzzle.jpg
author: Ryoji Iwata

View File

@@ -4,7 +4,7 @@ title: Content blocks
date: 2025-06-07
description: Quickly edit your webpages using reusable content blocks.
tags: ["bookshop", "blocks"]
keywords: ["featured"]
keywords: featured
thumbnail:
url: img/pj-accetturo-XpD6Dkui-yg-unsplash.jpg
author: Pj Accetturo

View File

@@ -2,14 +2,63 @@
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"
content_blocks:
- _bookshop_name: hero
heading:
title: Bienvenue sur Hinode!
content: |-
Un thème de blog et de documentation pour Hugo basé sur Bootstrap 5.
width: 6
background:
color: primary
subtle: true
illustration:
image: /img/sunrise.jpg
ratio: 16x9
width: 8
links:
- title: À propos
url: "/fr/a-propos/"
icon: fas chevron-right
orientation: horizontal
justify: center
- _bookshop_name: articles
heading:
title: Articles de blog
align: start
input:
section: blog
reverse: true
sort: date
keywords: featured
hide-empty: false
header-style: none
more:
title: Plus d'articles
padding: 0
limit: 3
class: border-0 card-zoom card-body-margin
- _bookshop_name: articles
heading:
title: Projets
align: start
background:
background: body-tertiary
hide-empty: false
input:
section: projects
reverse: false
sort: date
more:
title: Plus d'articles
cols: 1
padding: 4
limit: 2
icon-style: fa-5x
header-style: none
footer-style: tags
orientation: horizontal-sm
class: border-1 card-emphasize
---

View File

@@ -5,6 +5,7 @@ slug: elements-bootstrap
date: 2023-08-12
description: Utilisez des shortcodes pour ajouter facilement des éléments Bootstrap courants.
tags: ["bootstrap", "shortcode"]
keywords: featured
thumbnail:
url: img/boots.jpg
author: Nathan Dumlao

View File

@@ -5,6 +5,7 @@ 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"]
keywords: featured
thumbnail:
url: img/puzzle.jpg
author: Ryoji Iwata

View File

@@ -4,6 +4,7 @@ title: Images locales et distantes
date: 2024-05-19
description: Inclure des images responsives provenant de sources locales et de certains fournisseurs de CDN d'images.
tags: ["blog"]
keywords: featured
thumbnail:
url: https://assets.imgix.net/examples/bluehat.jpg
---

View File

@@ -2,14 +2,62 @@
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"
content_blocks:
- _bookshop_name: hero
heading:
title: Welkom bij Hinode!
content: |-
Een documentatie en blog thema voor Hugo gebaseerd op Bootstrap 5.
width: 6
background:
color: primary
subtle: true
illustration:
image: /img/sunrise.jpg
ratio: 16x9
width: 8
links:
- title: "Over mij"
url: "/nl/over-mij/"
icon: fas chevron-right
orientation: horizontal
justify: center
- _bookshop_name: articles
heading:
title: Blog
align: start
input:
section: blog
reverse: true
sort: date
hide-empty: false
header-style: none
more:
title: Meer artikelen
padding: 0
limit: 3
class: border-0 card-zoom card-body-margin
- _bookshop_name: articles
heading:
title: Projecten
align: start
background:
background: body-tertiary
hide-empty: false
input:
section: projects
reverse: false
sort: date
more:
title: Meer artikelen
cols: 1
padding: 4
limit: 2
icon-style: fa-5x
header-style: none
footer-style: tags
orientation: horizontal-sm
class: border-1 card-emphasize
---

View File

@@ -95,7 +95,6 @@
"background-container",
"background-img-fluid",
"badge",
"ball",
"bg-bg-body-tertiary",
"bg-bg-primary-subtle",
"bg-black",
@@ -331,10 +330,8 @@
"g-4",
"gap-1",
"gap-2",
"gap-4",
"gap-5",
"gradient",
"grid",
"h-100",
"h1",
"h2",
@@ -384,9 +381,11 @@
"me-1",
"me-3",
"me-auto",
"me-md-3",
"mermaid",
"middle-bar",
"mode-switch",
"mode-item",
"mode-toggle",
"ms-1",
"ms-3",
"ms-auto",
@@ -426,6 +425,8 @@
"navbar-contrast",
"navbar-expand-md",
"navbar-fixed-top",
"navbar-fs-6",
"navbar-md-fs",
"navbar-mode-selector",
"navbar-nav",
"navbar-nav-scroll",
@@ -616,9 +617,11 @@
"animation",
"args",
"arguments",
"articles-de-blog",
"background-type",
"badge",
"barre-de-navigation",
"bienvenue-sur-hinode",
"block-diagram",
"blog",
"body-docs-collapse-15",
@@ -654,11 +657,16 @@
"docs",
"documentation",
"dropdown-nav-0",
"dropdown-panel-559429f8ed9abd968d8178a39c12161e",
"dropdown-panel-83b60f1acfc59ebca2632e49adc142ea",
"dropdown-panel-905f7532046e86d10df934d0bb7e6973",
"dropdown-panel-96d18c1dcc343600bc916fe2c37fa4aa",
"dropdown-panel-f6ad6d3ba9fb32a749be0499120c5f22",
"dropdown-panel-0692e7e68c57d91164039f0f77cce9d8",
"dropdown-panel-0a5cb51ed9eea57f673dc25545175b8b",
"dropdown-panel-41fccc8aa490d4ea9d475a6d2d44be42",
"dropdown-panel-7aa9804adc5998a7a66cd8faf656c6f9",
"dropdown-panel-99dcbfb73d35cee704ca4ee9fb6a5e3c",
"dropdown-panel-b06517abb515d4c22a03ca07d577f3de",
"dropdown-panel-b434a05f655e7811ee71b4177747a1c0",
"dropdown-panel-ba696faaa3c3f34bebc3f1da67a7c8ad",
"dropdown-panel-d80f75f98e8a44fe4164fa76a6afd600",
"dropdown-panel-d8bdd6a5f6d88907f9d6e8b57d921196",
"elements-type",
"entity-relationship-diagram",
"example",
@@ -676,11 +684,16 @@
"fab-medium",
"fab-whatsapp",
"fab-x-twitter",
"faq-106714aa77d6de0ac39f269ae5995985",
"faq-106714aa77d6de0ac39f269ae5995985-heading-faq-106714aa77d6de0ac39f269ae5995985",
"faq-106714aa77d6de0ac39f269ae5995985-item-0",
"faq-106714aa77d6de0ac39f269ae5995985-item-1",
"faq-106714aa77d6de0ac39f269ae5995985-item-2",
"faq-1b8aefa895c57fc4fd5452748485b590",
"faq-1b8aefa895c57fc4fd5452748485b590-heading-faq-1b8aefa895c57fc4fd5452748485b590",
"faq-1b8aefa895c57fc4fd5452748485b590-item-0",
"faq-1b8aefa895c57fc4fd5452748485b590-item-1",
"faq-1b8aefa895c57fc4fd5452748485b590-item-2",
"faq-f18dc8d82722290aea32dc7f4423dea5",
"faq-f18dc8d82722290aea32dc7f4423dea5-heading-faq-f18dc8d82722290aea32dc7f4423dea5",
"faq-f18dc8d82722290aea32dc7f4423dea5-item-0",
"faq-f18dc8d82722290aea32dc7f4423dea5-item-1",
"faq-f18dc8d82722290aea32dc7f4423dea5-item-2",
"fas-1",
"fas-2",
"fas-3",
@@ -775,11 +788,16 @@
"nav-0-btn-1",
"nav-0-btn-2",
"nav-nav-0",
"nav-panel-559429f8ed9abd968d8178a39c12161e",
"nav-panel-83b60f1acfc59ebca2632e49adc142ea",
"nav-panel-905f7532046e86d10df934d0bb7e6973",
"nav-panel-96d18c1dcc343600bc916fe2c37fa4aa",
"nav-panel-f6ad6d3ba9fb32a749be0499120c5f22",
"nav-panel-0692e7e68c57d91164039f0f77cce9d8",
"nav-panel-0a5cb51ed9eea57f673dc25545175b8b",
"nav-panel-41fccc8aa490d4ea9d475a6d2d44be42",
"nav-panel-7aa9804adc5998a7a66cd8faf656c6f9",
"nav-panel-99dcbfb73d35cee704ca4ee9fb6a5e3c",
"nav-panel-b06517abb515d4c22a03ca07d577f3de",
"nav-panel-b434a05f655e7811ee71b4177747a1c0",
"nav-panel-ba696faaa3c3f34bebc3f1da67a7c8ad",
"nav-panel-d80f75f98e8a44fe4164fa76a6afd600",
"nav-panel-d8bdd6a5f6d88907f9d6e8b57d921196",
"navbar",
"navbar-0-collapse",
"navbar-mode",
@@ -788,36 +806,66 @@
"navigation",
"notification",
"overview",
"panel-559429f8ed9abd968d8178a39c12161e-0",
"panel-559429f8ed9abd968d8178a39c12161e-1",
"panel-559429f8ed9abd968d8178a39c12161e-2",
"panel-559429f8ed9abd968d8178a39c12161e-btn-0",
"panel-559429f8ed9abd968d8178a39c12161e-btn-1",
"panel-559429f8ed9abd968d8178a39c12161e-btn-2",
"panel-83b60f1acfc59ebca2632e49adc142ea-0",
"panel-83b60f1acfc59ebca2632e49adc142ea-1",
"panel-83b60f1acfc59ebca2632e49adc142ea-2",
"panel-83b60f1acfc59ebca2632e49adc142ea-btn-0",
"panel-83b60f1acfc59ebca2632e49adc142ea-btn-1",
"panel-83b60f1acfc59ebca2632e49adc142ea-btn-2",
"panel-905f7532046e86d10df934d0bb7e6973-0",
"panel-905f7532046e86d10df934d0bb7e6973-1",
"panel-905f7532046e86d10df934d0bb7e6973-2",
"panel-905f7532046e86d10df934d0bb7e6973-btn-0",
"panel-905f7532046e86d10df934d0bb7e6973-btn-1",
"panel-905f7532046e86d10df934d0bb7e6973-btn-2",
"panel-96d18c1dcc343600bc916fe2c37fa4aa-0",
"panel-96d18c1dcc343600bc916fe2c37fa4aa-1",
"panel-96d18c1dcc343600bc916fe2c37fa4aa-2",
"panel-96d18c1dcc343600bc916fe2c37fa4aa-btn-0",
"panel-96d18c1dcc343600bc916fe2c37fa4aa-btn-1",
"panel-96d18c1dcc343600bc916fe2c37fa4aa-btn-2",
"panel-f6ad6d3ba9fb32a749be0499120c5f22-0",
"panel-f6ad6d3ba9fb32a749be0499120c5f22-1",
"panel-f6ad6d3ba9fb32a749be0499120c5f22-2",
"panel-f6ad6d3ba9fb32a749be0499120c5f22-btn-0",
"panel-f6ad6d3ba9fb32a749be0499120c5f22-btn-1",
"panel-f6ad6d3ba9fb32a749be0499120c5f22-btn-2",
"panel-0692e7e68c57d91164039f0f77cce9d8-0",
"panel-0692e7e68c57d91164039f0f77cce9d8-1",
"panel-0692e7e68c57d91164039f0f77cce9d8-2",
"panel-0692e7e68c57d91164039f0f77cce9d8-btn-0",
"panel-0692e7e68c57d91164039f0f77cce9d8-btn-1",
"panel-0692e7e68c57d91164039f0f77cce9d8-btn-2",
"panel-0a5cb51ed9eea57f673dc25545175b8b-0",
"panel-0a5cb51ed9eea57f673dc25545175b8b-1",
"panel-0a5cb51ed9eea57f673dc25545175b8b-2",
"panel-0a5cb51ed9eea57f673dc25545175b8b-btn-0",
"panel-0a5cb51ed9eea57f673dc25545175b8b-btn-1",
"panel-0a5cb51ed9eea57f673dc25545175b8b-btn-2",
"panel-41fccc8aa490d4ea9d475a6d2d44be42-0",
"panel-41fccc8aa490d4ea9d475a6d2d44be42-1",
"panel-41fccc8aa490d4ea9d475a6d2d44be42-2",
"panel-41fccc8aa490d4ea9d475a6d2d44be42-btn-0",
"panel-41fccc8aa490d4ea9d475a6d2d44be42-btn-1",
"panel-41fccc8aa490d4ea9d475a6d2d44be42-btn-2",
"panel-7aa9804adc5998a7a66cd8faf656c6f9-0",
"panel-7aa9804adc5998a7a66cd8faf656c6f9-1",
"panel-7aa9804adc5998a7a66cd8faf656c6f9-2",
"panel-7aa9804adc5998a7a66cd8faf656c6f9-btn-0",
"panel-7aa9804adc5998a7a66cd8faf656c6f9-btn-1",
"panel-7aa9804adc5998a7a66cd8faf656c6f9-btn-2",
"panel-99dcbfb73d35cee704ca4ee9fb6a5e3c-0",
"panel-99dcbfb73d35cee704ca4ee9fb6a5e3c-1",
"panel-99dcbfb73d35cee704ca4ee9fb6a5e3c-2",
"panel-99dcbfb73d35cee704ca4ee9fb6a5e3c-btn-0",
"panel-99dcbfb73d35cee704ca4ee9fb6a5e3c-btn-1",
"panel-99dcbfb73d35cee704ca4ee9fb6a5e3c-btn-2",
"panel-b06517abb515d4c22a03ca07d577f3de-0",
"panel-b06517abb515d4c22a03ca07d577f3de-1",
"panel-b06517abb515d4c22a03ca07d577f3de-2",
"panel-b06517abb515d4c22a03ca07d577f3de-btn-0",
"panel-b06517abb515d4c22a03ca07d577f3de-btn-1",
"panel-b06517abb515d4c22a03ca07d577f3de-btn-2",
"panel-b434a05f655e7811ee71b4177747a1c0-0",
"panel-b434a05f655e7811ee71b4177747a1c0-1",
"panel-b434a05f655e7811ee71b4177747a1c0-2",
"panel-b434a05f655e7811ee71b4177747a1c0-btn-0",
"panel-b434a05f655e7811ee71b4177747a1c0-btn-1",
"panel-b434a05f655e7811ee71b4177747a1c0-btn-2",
"panel-ba696faaa3c3f34bebc3f1da67a7c8ad-0",
"panel-ba696faaa3c3f34bebc3f1da67a7c8ad-1",
"panel-ba696faaa3c3f34bebc3f1da67a7c8ad-2",
"panel-ba696faaa3c3f34bebc3f1da67a7c8ad-btn-0",
"panel-ba696faaa3c3f34bebc3f1da67a7c8ad-btn-1",
"panel-ba696faaa3c3f34bebc3f1da67a7c8ad-btn-2",
"panel-d80f75f98e8a44fe4164fa76a6afd600-0",
"panel-d80f75f98e8a44fe4164fa76a6afd600-1",
"panel-d80f75f98e8a44fe4164fa76a6afd600-2",
"panel-d80f75f98e8a44fe4164fa76a6afd600-btn-0",
"panel-d80f75f98e8a44fe4164fa76a6afd600-btn-1",
"panel-d80f75f98e8a44fe4164fa76a6afd600-btn-2",
"panel-d8bdd6a5f6d88907f9d6e8b57d921196-0",
"panel-d8bdd6a5f6d88907f9d6e8b57d921196-1",
"panel-d8bdd6a5f6d88907f9d6e8b57d921196-2",
"panel-d8bdd6a5f6d88907f9d6e8b57d921196-btn-0",
"panel-d8bdd6a5f6d88907f9d6e8b57d921196-btn-1",
"panel-d8bdd6a5f6d88907f9d6e8b57d921196-btn-2",
"persona",
"pie-chart",
"pills",
@@ -865,6 +913,7 @@
"vidéo",
"vos-droits",
"welcome-to-hinode",
"welkom-bij-hinode",
"what-are-cookies",
"xy-chart",
"your-rights"

8
go.mod
View File

@@ -4,10 +4,10 @@ go 1.19
require (
github.com/airbnb/lottie-web v5.12.2+incompatible // indirect
github.com/cloudcannon/bookshop/hugo/v3 v3.16.3 // indirect
github.com/cloudcannon/bookshop/hugo/v3 v3.16.4 // indirect
github.com/gethinode/mod-bootstrap v1.3.4 // indirect
github.com/gethinode/mod-csp v1.0.8 // indirect
github.com/gethinode/mod-flexsearch/v2 v2.1.3 // indirect
github.com/gethinode/mod-flexsearch/v3 v3.0.0 // indirect
github.com/gethinode/mod-fontawesome/v2 v2.1.2 // indirect
github.com/gethinode/mod-google-analytics v1.3.3 // indirect
github.com/gethinode/mod-katex v1.1.4 // indirect
@@ -15,7 +15,7 @@ require (
github.com/gethinode/mod-lottie v1.6.1 // indirect
github.com/gethinode/mod-mermaid/v3 v3.0.1 // indirect
github.com/gethinode/mod-simple-datatables/v2 v2.0.2 // indirect
github.com/gethinode/mod-utils/v4 v4.13.0 // indirect
github.com/gethinode/mod-utils/v4 v4.14.0 // indirect
github.com/nextapps-de/flexsearch v0.0.0-20250606060143-c28f52c09b7a // indirect
github.com/twbs/bootstrap v5.3.7+incompatible // indirect
github.com/twbs/bootstrap v5.3.8+incompatible // indirect
)

8
go.sum
View File

@@ -8,6 +8,8 @@ github.com/cloudcannon/bookshop/hugo/v3 v3.16.1 h1:WByz6rqg28h94VLVLscu77/CHhi2p
github.com/cloudcannon/bookshop/hugo/v3 v3.16.1/go.mod h1:s7mIonDhtsLcn10ZKuVXyqd6BDHI8vT1WQhZw8rPfY8=
github.com/cloudcannon/bookshop/hugo/v3 v3.16.3 h1:/Z66xKILl1SNGQePHZCnxo6vFgED7AGI600OSPotXj4=
github.com/cloudcannon/bookshop/hugo/v3 v3.16.3/go.mod h1:s7mIonDhtsLcn10ZKuVXyqd6BDHI8vT1WQhZw8rPfY8=
github.com/cloudcannon/bookshop/hugo/v3 v3.16.4 h1:k233xdD3ydE6iN8QB+c37//rSsFVtLIo5OUNRN4E3bc=
github.com/cloudcannon/bookshop/hugo/v3 v3.16.4/go.mod h1:s7mIonDhtsLcn10ZKuVXyqd6BDHI8vT1WQhZw8rPfY8=
github.com/gethinode/mod-bootstrap v1.0.1 h1:NDZar+UEL42YHCvzzO+jVgqkZU5INA12BpjX3y6U4I4=
github.com/gethinode/mod-bootstrap v1.0.1/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
github.com/gethinode/mod-bootstrap v1.1.0 h1:BbalsW8kmFhv+J+dcc41TGcjIlM/p69AB0h0oGhAXIU=
@@ -118,6 +120,8 @@ github.com/gethinode/mod-flexsearch/v2 v2.1.2 h1:B/onreHG/qzIqMo9YYiRk4WWM+GgFj1
github.com/gethinode/mod-flexsearch/v2 v2.1.2/go.mod h1:0IJGZQRv9X+th/gFmFRusEUSv0oJSr3aw5t1w3lfvYg=
github.com/gethinode/mod-flexsearch/v2 v2.1.3 h1:m5I9B7cA1SU99f90yO4OpOcKNPZ5zMF18pEhusLxa80=
github.com/gethinode/mod-flexsearch/v2 v2.1.3/go.mod h1:0IJGZQRv9X+th/gFmFRusEUSv0oJSr3aw5t1w3lfvYg=
github.com/gethinode/mod-flexsearch/v3 v3.0.0 h1:xFeo5ovZMIcUttvpOamPAMML5+5Au/hewZz/18C2H6Q=
github.com/gethinode/mod-flexsearch/v3 v3.0.0/go.mod h1:iYvaBF6Y62pjnCepYAqLxoX1ZdEBoD+9caj4cBC+MxY=
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=
@@ -498,6 +502,8 @@ github.com/gethinode/mod-utils/v4 v4.12.0 h1:5sSfYIxZCeQbXLoZdS//rl6thwLwtXuvM0u
github.com/gethinode/mod-utils/v4 v4.12.0/go.mod h1:bYmvRdAo4ICy5MpSGafDvO4p5bTDpsDKFCPL3bH0mN4=
github.com/gethinode/mod-utils/v4 v4.13.0 h1:VKAA+wKy4saayXfgJuVBRfhNVWQWmxOjO8LSpQCvLfw=
github.com/gethinode/mod-utils/v4 v4.13.0/go.mod h1:bYmvRdAo4ICy5MpSGafDvO4p5bTDpsDKFCPL3bH0mN4=
github.com/gethinode/mod-utils/v4 v4.14.0 h1:CF5dy+HWg22L306bWVhClWK9b1NVinEqtb4Qr2vcl9A=
github.com/gethinode/mod-utils/v4 v4.14.0/go.mod h1:bYmvRdAo4ICy5MpSGafDvO4p5bTDpsDKFCPL3bH0mN4=
github.com/nextapps-de/flexsearch v0.0.0-20230711092928-1243fd883ec3 h1:H/qVR5O4BXjRjD+5PZB+r4ug2BSJ2Of4RtwOntd+OKo=
github.com/nextapps-de/flexsearch v0.0.0-20230711092928-1243fd883ec3/go.mod h1:5GdMfPAXzbA2gXBqTjC6l27kioSYzHlqDMh0+wyx7sU=
github.com/nextapps-de/flexsearch v0.0.0-20240108021025-afd75f742f22 h1:re7L8FxbXQpnX8BgzkdUnDpsUmloGNyLmiy2ZCln8pg=
@@ -530,3 +536,5 @@ github.com/twbs/bootstrap v5.3.6+incompatible h1:efmXVyq839m5QQ0+JBUdQQ1TrmoBqvQ
github.com/twbs/bootstrap v5.3.6+incompatible/go.mod h1:fZTSrkpSf0/HkL0IIJzvVspTt1r9zuf7XlZau8kpcY0=
github.com/twbs/bootstrap v5.3.7+incompatible h1:ea1W8TOWZFkqSK2M0McpgzLiUQVru3bz8aHb0j/XtuM=
github.com/twbs/bootstrap v5.3.7+incompatible/go.mod h1:fZTSrkpSf0/HkL0IIJzvVspTt1r9zuf7XlZau8kpcY0=
github.com/twbs/bootstrap v5.3.8+incompatible h1:eK1fsXP7R/FWFt+sSNmmvUH9usPocf240nWVw7Dh02o=
github.com/twbs/bootstrap v5.3.8+incompatible/go.mod h1:fZTSrkpSf0/HkL0IIJzvVspTt1r9zuf7XlZau8kpcY0=

View File

@@ -8,6 +8,7 @@
"footer",
"form",
"head",
"hr",
"html",
"img",
"input",
@@ -56,6 +57,7 @@
"col-md-2",
"col-md-6",
"col-md-8",
"col-md-auto",
"col-sm-12",
"collapse",
"collapsed",
@@ -64,12 +66,14 @@
"d-flex",
"d-inline",
"d-md-block",
"d-md-flex",
"d-md-none",
"d-none",
"d-sm-block",
"d-sm-none",
"display-1",
"display-4",
"dropdown-divider-bg",
"emphasis",
"end-0",
"fa",
@@ -82,10 +86,12 @@
"fa-fw",
"fa-github",
"fa-linkedin",
"fa-magnifying-glass",
"fa-medium",
"fa-moon",
"fa-sun",
"fab",
"fade",
"fas",
"fixed-top",
"flex-column",
@@ -97,6 +103,7 @@
"fw-30",
"fw-bold",
"h-100",
"h-50",
"hero",
"hero-content",
"hero-image",
@@ -120,15 +127,21 @@
"main-nav-toggler",
"me-auto",
"middle-bar",
"modal",
"modal-body",
"modal-content",
"modal-dialog",
"modal-dialog-centered",
"modal-dialog-scrollable",
"modal-header",
"modal-lg",
"mode-switch",
"ms-auto",
"ms-md-3",
"mt-3",
"mt-4",
"mt-5",
"mt-md-0",
"mx-auto",
"mx-md-0",
"mx-md-2",
"my-auto",
"my-md-auto",
"nav-item",
@@ -139,8 +152,11 @@
"navbar-container",
"navbar-expand-md",
"navbar-fixed-top",
"navbar-fs-6",
"navbar-md-fs",
"navbar-mode-selector",
"navbar-nav",
"navbar-nav-scroll",
"navbar-toggler",
"no-js",
"order-0",
@@ -159,18 +175,21 @@
"pt-md-0",
"px-4",
"px-xxl-0",
"py-2",
"py-3",
"py-4",
"py-md-1",
"rounded",
"row",
"row-cols-1",
"row-cols-2",
"row-cols-sm-3",
"search",
"search-background",
"search-input",
"search-modal",
"search-suggestions",
"section-cover",
"shadow",
"svg-inline--fa",
"text-",
"text-body",
@@ -185,7 +204,9 @@
"toast-container",
"toast-header",
"toggler-icon",
"top-bar"
"top-bar",
"vr",
"w-100"
],
"ids": [
"container",
@@ -196,11 +217,14 @@
"fas-angle-left",
"fas-chevron-right",
"fas-ellipsis",
"fas-magnifying-glass",
"fas-moon",
"fas-sun",
"navbar-0-collapse",
"navbar-mode",
"navbar-mode-checkbox",
"search-input-modal",
"search-modal",
"toast-container",
"toast-copied-code-message",
"welcome-to-hinode"

View File

@@ -7,45 +7,45 @@
{{ $error := false }}
{{/* Initialize arguments */}}
{{ $args := partial "utilities/InitArgs.html" (dict "structure" "featured-illustration" "args" . "group" "partial") }}
{{ if or $args.err $args.warnmsg }}
{{ partial (cond $args.err "utilities/LogErr.html" "utilities/LogWarn.html") (dict
{{- $args := partial "utilities/InitArgs.html" (dict "structure" "featured-illustration" "args" . "group" "partial") -}}
{{- if or $args.err $args.warnmsg -}}
{{- partial (cond $args.err "utilities/LogErr.html" "utilities/LogWarn.html") (dict
"partial" "assets/featured-illustration.html"
"warnid" "warn-invalid-arguments"
"msg" "Invalid arguments"
"details" ($args.errmsg | append $args.warnmsg)
"file" page.File
)}}
{{ $error = $args.err }}
{{ end }}
) -}}
{{- $error = $args.err -}}
{{- end -}}
{{/* Initialize local arguments */}}
{{ $icon := partial "utilities/GetTargetPath.html" (dict "path" $args.icon "page" $args.page) }}
{{ $image := partial "utilities/GetTargetPath.html" (dict "path" $args.image "page" $args.page) }}
{{- $icon := partial "utilities/GetTargetPath.html" (dict "path" $args.icon "page" $args.page) -}}
{{- $image := partial "utilities/GetTargetPath.html" (dict "path" $args.image "page" $args.page) -}}
{{- $wrapper := $args.wrapper -}}
{{ if $image }}{{ $wrapper = print "img-wrap " (or $wrapper "mx-auto") }}{{ end -}}
{{- if $image }}{{ $wrapper = printf "img-wrap %s" (or $wrapper "mx-auto") }}{{ end -}}
{{- $class := $args.class -}}
{{ if $icon }}
{{ if eq (lower (path.Ext $icon)) ".json" }}
{{ if site.Params.env_bookshop_live }}
{{- if $icon -}}
{{- if eq (lower (path.Ext $icon)) ".json" -}}
{{- if site.Params.env_bookshop_live }}
<i>Animation preview not supported</i>
{{ else }}
{{ partial "assets/animation.html" (dict
{{- else }}
{{- partial "assets/animation.html" (dict
"data" $icon
"mode" $args.mode
"loop" false
"hover" true
"class" "col-6 mx-auto text-center"
) }}
{{ end }}
{{ else }}
{{ partial "assets/icon.html" (dict "icon" $icon "wrapper" $wrapper) }}
{{ end }}
{{ else if $image }}
{{ if not (hasSuffix $image "svg") }}{{ $class = printf "%s rounded" $class }}{{ end }}
{{ partial "assets/live-image.html" (dict
) -}}
{{- end -}}
{{- else }}
{{ partial "assets/icon.html" (dict "icon" $icon "wrapper" $wrapper) -}}
{{- end -}}
{{- else if $image -}}
{{- if not (hasSuffix $image "svg") }}{{ $class = printf "%s rounded" $class }}{{ end -}}
{{- partial "assets/live-image.html" (dict
"src" $image
"anchor" $args.anchor
"ratio" $args.ratio
@@ -55,5 +55,5 @@
"sizes" $args.sizes
"priority" "high"
"mode" $args.mode
) }}
{{ end }}
) -}}
{{- end -}}

View File

@@ -35,7 +35,7 @@
{{- $isActive := or (and (eq $pageURL $menuURL) (ne $menuURL ("/" | relLangURL))) (eq $pageURL $menuURL) -}}
{{ if not $menu.PageRef }}{{ $isActive = false }}{{ end }}
{{- $isAlias := $menu.Params.alias -}}
{{- $isIcon := $menu.Params.icon -}}
{{- $isIcon := or $menu.Params.icon $menu.Pre -}}
{{- $url := urls.Parse $menuURL -}}
{{- $baseURL := urls.Parse $.Site.Params.Baseurl -}}
@@ -63,6 +63,9 @@
{{- $childNav := "" -}}
{{- $button := "" -}}
{{- if $args.modal -}}
{{- $button = printf " role=%q data-bs-toggle=%q data-bs-target=%q" "button" "modal" $args.modal -}}
{{- end -}}
{{- if $args.parent -}}
{{- $mainNav = urlize (lower $args.parent.Name) -}}
{{- $childNav = urlize (lower $menu.Name) -}}
@@ -92,21 +95,34 @@
"button-size" "sm"
)}}
{{ else }}
{{ cond (ne $menuURL "") "<a" "<div" | safeHTML }} class="{{ $anchorClass }}{{ if $isActive }} active{{ end }}{{ with $args.class }} {{ . }}{{ end }}"
{{ cond (ne $menuURL "") "<a" "<div" | safeHTML }}
class="{{ $anchorClass }}{{ if $isActive }} active{{ end }}{{ with $args.class }} {{ . }}{{ end }}"
{{ if $isIcon }}aria-label="{{ $title }}"{{ end }}
data-nav="main" data-nav-main="{{ $mainNav }}"{{ with $childNav }} data-nav-child="{{ . }}"{{ end }}
{{ if $menuURL }} href="{{ $menuURL }}{{ $params | safeHTML }}"{{ with $externalHref }} {{ . | safeHTML }}{{ end }}{{ end }} {{ $button | safeHTML }}>
{{ if $menuURL }} href="{{ $menuURL }}{{ $params | safeHTML }}"{{ with $externalHref }} {{ . | safeHTML }}{{ end }}{{ end }}
{{ $button | safeHTML }}
{{ with $args.id }}id="{{ . }}"{{ end }}
>
{{- with $menu.Pre }}
{{ if hasPrefix . "<i" }}
{{ . | safeHTML }}
{{ else }}
{{ partial "assets/icon.html" (dict "icon" (string .) )}}
{{ partial "assets/icon.html" (dict "icon" (printf "%s fa-fw" .) "spacing" false )}}
{{ end }}
{{ end -}}
<span {{ if $isActive }} class="active"{{ end }}>{{ if or (not $isIcon) $args.plain }}{{ $title }}{{ end }}</span>
<span class="{{ if $isActive }}active{{ end }} {{ with $args.breakpoint }}d-{{ . }}-none {{ end }}">
{{- if $isIcon }}&nbsp;{{ end }}{{ $title }}
{{- with $menu.Post }}{{ . }}{{ end -}}
{{- if not $isIcon }}&nbsp;{{ $suffix }}{{ end -}}
{{- with $suffix }}&nbsp;{{ . }}{{ end -}}
</span>
{{ if not $isIcon }}
<span class="{{ if $isActive }}active{{ end }} {{ with $args.breakpoint }}d-none d-{{ . }}-block{{ end }}">
{{- if $isIcon }}&nbsp;{{ end }}{{ $title }}
{{- with $menu.Post }}{{ . }}{{ end -}}
{{- with $suffix }}&nbsp;{{ . }}{{ end -}}
</span>
{{ end }}
{{ cond (ne $menuURL "") "</a>" "</div>" | safeHTML }}
{{ end }}
{{ end }}

View File

@@ -0,0 +1,38 @@
{{- $page := .page -}}
{{- $baseURL := .baseURL -}}
{{- $breakpoint := .breakpoint -}}
{{- $pretty := .pretty -}}
{{- $icon := .icon | default "fas globe" -}}
{{- $fs := .fs | default 6 -}}
{{- $lang := $page.Language.Lang -}}
<li class="nav-item dropdown me-auto">
<a class="nav-link dropdown-toggle d-{{ $breakpoint }}-none" role="button" data-bs-toggle="dropdown"
aria-label="{{ T "languageSwitcherLabel" }}" aria-expanded="false">
{{- partial "assets/icon.html" (dict "icon" (printf "%s fa-fw" $icon) "spacing" true) }}{{ T "languageSwitcherLabel" }}
</a>
<a class="nav-link dropdown-toggle d-none d-{{ $breakpoint }}-block" role="button" data-bs-toggle="dropdown"
aria-label="{{ T "languageSwitcherLabel" }}" aria-expanded="false">
{{- partial "assets/icon.html" (dict "icon" (printf "%s fa-fw" $icon) "spacing" false) }}
</a>
<ul id="language-selector" class="dropdown-menu dropdown-menu-end navbar-fs-{{ $fs }} navbar-{{ $breakpoint }}-fs" data-translated="{{ $page.IsTranslated }}">
{{- if $page.IsTranslated -}}
{{- range $page.AllTranslations -}}
<li>
{{- $state := cond (eq .Language.Lang $lang) "active" "" }}
<a class="dropdown-item {{ $state }}" hreflang="{{ .Language.Lang }}" href="{{ .RelPermalink }}">
{{- .Language.LanguageName -}}
</a>
</li>
{{- end -}}
{{- else -}}
{{- range site.Languages -}}
{{ $dest := partial "utilities/URLJoin.html" (dict "base" $baseURL "path" .Lang) }}
{{ if and $pretty (not (hasSuffix $dest "/")) }}
{{ $dest = printf "%s/" $dest }}
{{ end }}
<li><a class="dropdown-item" href="{{ $dest }}" hreflang="{{ .Lang }}">{{ default .Lang .LanguageName }}</a></li>
{{- end -}}
{{- end -}}
</ul>
</li>

View File

@@ -0,0 +1,26 @@
{{- $id := .id | default "navbar-mode" -}}
{{- $toggle := .toggle | default false -}}
{{- $breakpoint := .breakpoint -}}
{{- $iconLight := site.Params.main.colorMode.iconLight | default "fas sun" -}}
{{- $iconDark := site.Params.main.colorMode.iconDark | default "fas moon" -}}
{{- $fs := .fs | default 6 -}}
<li class="nav-link navbar-fs-{{ $fs }} navbar-{{ $breakpoint }}-fs d-flex mode-{{ cond $toggle "toggle" "switch" }} align-items-center" id="{{ $id }}">
<input type="checkbox" class="checkbox navbar-mode-selector" id="{{ $id }}-checkbox" aria-label="{{ T "colorMode" }}" />
<label class="label" for="{{ $id }}-checkbox">
{{ if $toggle }}
<div class="mode-item d-none-dark">
{{- partial "assets/icon.html" (dict "icon" (printf "%s fa-fw" $iconLight) "spacing" false) }}
<span class="d-{{ $breakpoint }}-none">{{ T "colorMode" }}</span>
</div>
<div class="mode-item d-none-light">
{{- partial "assets/icon.html" (dict "icon" (printf "%s fa-fw" $iconDark) "spacing" false) }}
<span class="d-{{ $breakpoint }}-none">{{ T "colorMode" }}</span>
</div>
{{ else }}
{{- partial "assets/icon.html" (dict "icon" (printf "%s fa-fw" $iconLight) "spacing" false) }}
{{- partial "assets/icon.html" (dict "icon" (printf "%s fa-fw" $iconDark) "spacing" false) }}
<div class="ball"></div>
{{ end }}
</label>
</li>

View File

@@ -0,0 +1,35 @@
{{- $page := .page -}}
{{- $menus := .menus -}}
{{- $collapsed := .collapsed -}}
{{- $control := .control | default false -}}
{{- $horizontal := .horizontal | default false -}}
{{- $breakpoint := .breakpoint -}}
{{- $fs := .fs | default 6 -}}
{{- range $menu := $menus -}}
{{ if (eq $control ($menu.Params.control | default false)) }}
{{ if $menu.Params.spacing }}
<li class="nav-item flex-grow-1"></li>
{{ else }}
<li class="nav-item {{ if .HasChildren }} dropdown me-auto{{ if $horizontal }} dropdown-horizontal-{{ $breakpoint }}{{ end }}{{ end }}">
{{- partial "assets/helpers/navbar-item.html" (dict "menu" $menu "page" $page) -}}
{{- if .HasChildren -}}
<ul class="dropdown-menu{{ if $control }} dropdown-menu-end{{ end }}">
{{- range .Children -}}
<li>{{- partial "assets/helpers/navbar-item.html" (dict
"menu" .
"parent" $menu
"page" $page
"breakpoint" $breakpoint
"modal" .Params.modal
"id" .Params.id
"class" (printf "navbar-fs-%d navbar-%s-fs" $fs $breakpoint)
) -}}
</li>
{{- end -}}
</ul>
{{- end -}}
</li>
{{- end -}}
{{- end -}}
{{- end -}}

View File

@@ -0,0 +1,43 @@
{{- $breakpoint := .breakpoint -}}
{{- $collapsed := .collapsed -}}
{{- $page := .page -}}
{{- $baseURL := .baseURL -}}
{{- $list := site.Params.docs.releases -}}
{{- $id := .id -}}
{{- $version := partial "utilities/GetVersion.html" (dict "page" $page) -}}
<li class="nav-item dropdown {{ if $collapsed }}d-{{ $breakpoint }}-none{{ else }}d-none d-{{ $breakpoint }}-block{{ end }}">
<a class="nav-link dropdown-toggle" role="button" data-bs-toggle="dropdown" aria-expanded="false" id="{{ $id }}-version-switch">
{{ if $collapsed }}{{ site.Title }} {{ end }}{{ $version }}
</a>
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="{{ $id }}-version-switch">
{{- range $index, $item := $list -}}
{{- $active := eq $item.label $version -}}
{{- $disabled := false -}}
{{- if hugo.IsServer }}
{{- $disabled = and $item.redirect (gt (len $item.redirect) 0) -}}
{{- end -}}
{{ if $item.url }}
<li>
{{- $url := partial "utilities/URLJoin.html" (dict "base" $baseURL "path" $item.url) | relLangURL -}}
<a class="pe-5 dropdown-item{{ if $collapsed }} switch-mode-collapsed{{ end }}{{ if $active }} active{{ end }}{{ if $disabled }} disabled{{ end }}" href="{{ $url }}">{{ $item.label }}
{{ if $item.latest }}&nbsp;({{ T "latest" }}){{ end }}
{{ if $active }}
<span class="position-absolute end-0 me-3">{{- partial "assets/icon.html" (dict "icon" "fas check fa-fw") }}</span>
{{ end }}
</a>
</li>
{{ else }}
{{ if gt $index 0}}<li><hr class="dropdown-divider"></li>{{ end }}
<li><span class="dropdown-header fs-6">{{ $item.label }}</span></li>
{{ end }}
{{- end -}}
{{- if site.Params.docs.overview -}}
{{ if gt (len $list) 0 }}<li><hr class="dropdown-divider"></li>{{ end }}
<li>
{{- $url := partial "utilities/URLJoin.html" (dict "base" $baseURL "path" site.Params.docs.overview) | relLangURL -}}
<a class="dropdown-item{{ if $collapsed }} switch-mode-collapsed{{ end }}" href="{{ $url }}">{{ T "allVersions" }}</a>
</li>
{{- end -}}
</ul>
</li>

View File

@@ -0,0 +1,5 @@
{{ with .Site.GetPage "/_modals" }}
{{ range .Pages }}
{{ .Content }}
{{ end }}
{{ end }}

View File

@@ -6,65 +6,12 @@
{{/* TODO: consider to drop style arg */}}
{{/* Inline partial to render the color mode switcher */}}
{{- define "_partials/inline/navbar-mode.html" -}}
{{- $id := .id | default "navbar-mode" -}}
<li class="d-flex mode-switch align-items-center" id="{{ $id }}">
<input type="checkbox" class="checkbox navbar-mode-selector" id="{{ $id }}-checkbox" aria-label="{{ T "colorMode" }}" />
<label class="label" for="{{ $id }}-checkbox">
{{- partial "assets/icon.html" (dict "icon" "fas sun fa-fw" "spacing" false) }}
{{- partial "assets/icon.html" (dict "icon" "fas moon fa-fw" "spacing" false) }}
<div class="ball"></div>
</label>
</li>
{{- end -}}
{{/* Inline partial to render the version switcher */}}
{{- define "_partials/inline/navbar-versions.html" -}}
{{- define "_partials/inline/divider.html" -}}
{{- $breakpoint := .breakpoint -}}
{{- $collapsed := .collapsed -}}
{{- $page := .page -}}
{{- $baseURL := .baseURL -}}
{{- $list := site.Params.docs.releases -}}
{{- $id := .id -}}
{{- $version := partial "utilities/GetVersion.html" (dict "page" $page) -}}
<li class="nav-item dropdown {{ if $collapsed }}d-{{ $breakpoint }}-none{{ else }}d-none d-{{ $breakpoint }}-block{{ end }}">
<a class="nav-link dropdown-toggle" role="button" data-bs-toggle="dropdown" aria-expanded="false" id="{{ $id }}-version-switch">
{{ if $collapsed }}{{ site.Title }} {{ end }}{{ $version }}
</a>
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="{{ $id }}-version-switch">
{{- range $index, $item := $list -}}
{{- $active := eq $item.label $version -}}
{{- $disabled := false -}}
{{- if hugo.IsServer }}
{{- $disabled = and $item.redirect (gt (len $item.redirect) 0) -}}
{{- end -}}
{{ if $item.url }}
<li>
{{- $url := partial "utilities/URLJoin.html" (dict "base" $baseURL "path" $item.url) | relLangURL -}}
<a class="pe-5 dropdown-item{{ if $collapsed }} switch-mode-collapsed{{ end }}{{ if $active }} active{{ end }}{{ if $disabled }} disabled{{ end }}" href="{{ $url }}">{{ $item.label }}
{{ if $item.latest }}&nbsp;({{ T "latest" }}){{ end }}
{{ if $active }}
<span class="position-absolute end-0 me-3">{{- partial "assets/icon.html" (dict "icon" "fas check fa-fw") }}</span>
{{ end }}
</a>
</li>
{{ else }}
{{ if gt $index 0}}<li><hr class="dropdown-divider"></li>{{ end }}
<li><span class="dropdown-header fs-6">{{ $item.label }}</span></li>
{{ end }}
{{- end -}}
{{- if site.Params.docs.overview -}}
{{ if gt (len $list) 0 }}<li><hr class="dropdown-divider"></li>{{ end }}
<li>
{{- $url := partial "utilities/URLJoin.html" (dict "base" $baseURL "path" site.Params.docs.overview) | relLangURL -}}
<a class="dropdown-item{{ if $collapsed }} switch-mode-collapsed{{ end }}" href="{{ $url }}">{{ T "allVersions" }}</a>
</li>
{{- end -}}
</ul>
<li class="nav-item py-2 py-md-1 col-12 col-md-auto d-none d-{{ $breakpoint }}-block me-auto">
<div class="vr d-none d-md-flex h-100 mx-md-2"></div>
</li>
<li><hr class="dropdown-divider-bg"></li>
{{- end -}}
{{/* Initialize arguments */}}
@@ -81,6 +28,9 @@
{{/* Initialize global variables */}}
{{- $padding := partial "utilities/GetPadding.html" (dict "section" "navigation") -}}
{{- $search := partial "utilities/GetSearchConfig.html" (dict "search" $args.search) -}}
{{- $fs := site.Params.navigation.fontsizeCollapsed | default 6 -}}
{{- $langIcon := site.Params.navigation.language.icon | default "fas globe" -}}
{{/* Initialize local arguments */}}
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
@@ -103,10 +53,15 @@
{{- $overlayMode := $args.overlayMode | default "dark" -}}
{{- if eq $overlayMode "none" }}{{ $overlayMode = "" }}{{ end }}
{{- $color := $args.color | default "" -}}
{{- $search := $args.search | default site.Params.navigation.search -}}
{{- $searchModal := and $search site.Params.navigation.searchModal -}}
{{- $enableDarkMode := .mode | default site.Params.main.enableDarkMode -}}
{{- $enableDarkMode := .mode | default (or site.Params.main.enableDarkMode site.Params.main.colorMode.enabled) -}}
{{- $modes := site.Params.main.modes | default (slice "light" "dark") -}}
{{ if isset site.Params.main "enabledarkmode" }}
{{ warnf "site parameter %q: deprecated in v%s, use %q instead" "main.enableDarkMode" "1.12.0" "main.colorMode.enabled" }}
{{ end }}
{{ if isset site.Params.main "modes" }}
{{ warnf "site parameter %q: deprecated in v%s, use %q instead" "main.modes" "1.12.0" "main.colorMode.modes" }}
{{ end }}
{{- $enableVersions := false -}}
{{ $list := site.Params.docs.releases }}
@@ -128,8 +83,6 @@
{{ $logo = partial "assets/image.html" (dict "src" . "loading" "eager" "title" $title "image-height" $height) }}
{{ end }}
{{- $pre := $args.pre -}}
{{- $post := $args.post -}}
{{- $class := $args.class -}}
{{- $contrast := false -}}
@@ -143,7 +96,7 @@
{{/* Main code */}}
<div class="container-fluid {{ if $args.fixed }}fixed-top{{ else if $overlay }}navbar-overlay{{ end }} p-0{{ with $class }} {{ . }}{{ end }}">
{{- partial "assets/page-alert.html" (dict "page" $page) -}}
<nav class="navbar px-{{ $padding.x }} py-{{ $padding.y }}
<nav class="navbar px-{{ $padding.x }} py-{{ $padding.y }} navbar-fs-{{ $fs }} navbar-{{ $args.breakpoint }}-fs
{{- if not $overlay }}{{ with $color }} bg-{{ . }}{{ end }}{{ end -}}
{{ if $args.fixed }} navbar-fixed-top{{ end }} navbar-expand-{{ $args.breakpoint -}}
{{ if $contrast }} navbar-contrast{{ end }}"
@@ -158,7 +111,8 @@
{{/* Insert sidebar toggler when applicable */}}
<div class="d-flex align-items-center">
{{- if $page.Scratch.Get "sidebar" -}}
<button class="navbar-toggler collapsed p-0 mx-auto fw-30" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvass-sidebar" aria-controls="offcanvass-sidebar" aria-label="{{ T "toggleSidebar" }}">
<button class="navbar-toggler collapsed p-0 mx-auto fw-30" type="button" data-bs-toggle="offcanvas"
data-bs-target="#offcanvass-sidebar" aria-controls="offcanvass-sidebar" aria-label="{{ T "toggleSidebar" }}">
{{- partial "assets/icon.html" (dict "icon" "fas ellipsis fa-fw" "spacing" false) -}}
</button>
{{- else -}}
@@ -178,7 +132,8 @@
{{/* Insert main navigation toggler */}}
<div class="d-flex align-items-center">
<button class="navbar-toggler main-nav-toggler collapsed p-0" type="button" data-bs-toggle="collapse" data-bs-target="#{{ $id }}-collapse"
<button class="navbar-toggler main-nav-toggler collapsed p-0" type="button" data-bs-toggle="collapse"
data-bs-target="#{{ $id }}-collapse"
aria-controls="{{ $id }}" aria-expanded="false" aria-label="{{ T "toggleMainNav" }}">
<span class="toggler-icon top-bar emphasis"></span>
<span class="toggler-icon middle-bar emphasis"></span>
@@ -189,117 +144,94 @@
<div class="navbar-collapse collapse" id="{{ $id }}-collapse">
{{/* Insert search input */}}
{{- if and $search (not $searchModal) }}
{{ partial "assets/search-input.html" (dict "class" (printf "mt-4 mt-%s-0" $args.breakpoint)) }}
{{- if and $search.enabled (not $search.modal) }}
{{ partial "assets/search-input.html" (dict "class" (printf "mt-4 mt-%s-0 me-%s-3" $args.breakpoint $args.breakpoint)) }}
{{ end -}}
<ul class="navbar-nav navbar-nav-scroll {{ if $flex }}d-flex w-100{{ else }}ms-auto{{ end }}">
{{/* Render top-menu items (maximum depth of 2) */}}
<ul class="navbar-nav {{ if $flex }}d-flex w-100{{ else }}ms-auto{{ end }}">
{{- range $menu := $menus -}}
{{ if $menu.Params.spacing }}
<li class="nav-item flex-grow-1"></li>
{{ else }}
<li class="nav-item {{ if .HasChildren }} dropdown{{ if $horizontal }} dropdown-horizontal-{{ $args.breakpoint }}{{ end }}{{ end }}">
{{- partial "assets/navbar-item.html" (dict "menu" $menu "page" $page) -}}
{{- if .HasChildren -}}
<ul class="dropdown-menu">
{{- range .Children -}}
<li>{{- partial "assets/navbar-item.html" (dict "menu" . "parent" $menu "page" $page) -}}</li>
{{- end -}}
</ul>
{{- end -}}
</li>
{{- end -}}
{{- end -}}
{{- partial "assets/helpers/navbar-render-menu.html" (dict
"page" $page
"menus" $menus
"collapsed" $args.collapsed
"horizontal" $horizontal
"breakpoint" $args.breakpoint
"control" false
"fs" $fs
) }}
{{/* Insert divider if applicable */}}
{{- if and $menus (or $enableLanguage $enableVersions) -}}
<li class="nav-item py-2 py-md-1 col-12 col-md-auto d-none d-{{ $args.breakpoint }}-block me-auto">
<div class="vr d-none d-md-flex h-100 mx-md-2"></div>
</li>
<li><hr class="dropdown-divider-bg"></li>
{{ partial "inline/divider.html" (dict "breakpoint" $args.breakpoint) }}
{{- end -}}
{{/* Insert version switcher */}}
{{- if $enableVersions -}}
{{- partial "inline/navbar-versions.html" (dict "page" $page "breakpoint" $args.breakpoint "collapsed" true "id" .id "baseURL" $baseURL) -}}
{{- partial "inline/navbar-versions.html" (dict "page" $page "breakpoint" $args.breakpoint "collapsed" false "id" .id "baseURL" $baseURL) -}}
{{- partial "assets/helpers/navbar-versions.html" (dict
"page" $page
"breakpoint" $args.breakpoint
"collapsed" true
"id" .id
"baseURL" $baseURL
"fs" $fs
) -}}
{{- partial "assets/helpers/navbar-versions.html" (dict
"page" $page
"breakpoint" $args.breakpoint
"collapsed" false
"id" .id
"baseURL" $baseURL
"fs" $fs
) -}}
{{- end -}}
{{/* Insert language switcher if applicable */}}
{{- if $enableLanguage -}}
{{- $currentLang := $page.Language.Lang -}}
<li class="nav-item dropdown me-auto">
<a class="nav-link dropdown-toggle d-{{ $args.breakpoint }}-none" role="button" data-bs-toggle="dropdown" aria-label="{{ T "languageSwitcherLabel" }}" aria-expanded="false">
{{- partial "assets/icon.html" (dict "icon" "fas globe fa-fw" "spacing" false) }}&nbsp;{{ T "languageSwitcherLabel" }}
</a>
<a class="nav-link dropdown-toggle d-none d-{{ $args.breakpoint }}-block" role="button" data-bs-toggle="dropdown" aria-label="{{ T "languageSwitcherLabel" }}" aria-expanded="false">
{{- partial "assets/icon.html" (dict "icon" "fas globe fa-fw" "spacing" false) }}
</a>
<ul class="dropdown-menu dropdown-menu-end " id="language-selector" data-translated="{{ $page.IsTranslated }}">
{{- if $page.IsTranslated -}}
{{- range $page.AllTranslations -}}
<li><a class="dropdown-item {{ if eq .Language.Lang $currentLang }}active{{ end }}" hreflang="{{ .Language.Lang }}" href="{{ .RelPermalink }}">{{ .Language.LanguageName }}</a></li>
{{ partial "assets/helpers/navbar-languages.html" (dict
"page" $page
"baseURL" $baseURL
"breakpoint" $breakpoint
"pretty" $pretty
"fs" $fs
"icon" $langIcon
)}}
{{- end -}}
{{- else -}}
{{- range site.Languages -}}
{{ $dest := partial "utilities/URLJoin.html" (dict "base" $baseURL "path" .Lang) }}
{{ if and $pretty (not (hasSuffix $dest "/")) }}
{{ $dest = printf "%s/" $dest }}
{{/* Insert divider if applicable */}}
{{ $hasControls := gt (len (where $menus "Params.control" true)) 0 }}
{{ if and (or $menus $enableLanguage $enableVersions) (or $enableDarkMode $search.modal $hasControls) }}
{{ partial "inline/divider.html" (dict "breakpoint" $args.breakpoint) }}
{{ end }}
<li><a class="dropdown-item" href="{{ $dest }}" hreflang="{{ .Lang }}">{{ default .Lang .LanguageName }}</a></li>
{{- end -}}
{{- end -}}
</ul>
</li>
{{- end -}}
{{/* Insert color mode switcher */}}
{{- if $enableDarkMode -}}
{{- partial "inline/navbar-mode.html" (dict "size" $args.breakpoint "collapsed" true "id" .id) -}}
{{- partial "assets/helpers/navbar-mode.html" (dict
"breakpoint" $args.breakpoint
"collapsed" true
"id" .id
"toggle" (site.Params.main.colorMode.toggle)
"fs" $fs
) -}}
{{- end -}}
{{/* Insert modal search button */}}
{{- if $searchModal }}
<li class="nav-item py-2 py-md-1 col-12 col-md-auto d-none d-{{ $args.breakpoint }}-block me-auto">
<div class="vr d-none d-md-flex h-100 mx-md-2"></div>
</li>
<li><hr class="dropdown-divider-bg"></li>
<li class="d-{{ $args.breakpoint }}-none">
<a class="nav-link" 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") }}&nbsp;{{ T "ui_search" }}
</a>
</li>
<li class="d-none d-{{ $args.breakpoint }}-block">
<a class="nav-link" 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>
</li>
{{- if $search.modal }}
{{ $searchItem := dict "Name" (T "ui_search") "Menu" "Main" "Pre" $search.icon "Params" (dict "icon" true) }}
{{- partial "assets/helpers/navbar-item.html" (dict "menu" $searchItem "page" $page "modal" "#search-modal" "fs" $fs) -}}
{{ end -}}
{{/* Render custom controls */}}
{{- partial "assets/helpers/navbar-render-menu.html" (dict
"page" $page
"menus" $menus
"collapsed" $args.collapsed
"horizontal" $horizontal
"breakpoint" $args.breakpoint
"control" true
"fs" $fs
) }}
</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="{{ T "close" }}"></button>
</div>
<div class="modal-body p-2 search-background">
<div class="search-suggestions" data-no-results="{{ T "ui_no_results" }}"></div>
</div>
</div>
</div>
</div>
{{ end -}}

View File

@@ -24,6 +24,7 @@
{{ $result = $result | append $rendered }}
{{ end }}
{{ if lt $item.Level $endLevel }}
{{ range $item.Headings }}
{{ $result = $result | append (partial "inline/toc-item.html" (dict
"base" $base
@@ -33,6 +34,7 @@
"maxNumHeadings" $maxNumHeadings
)) }}
{{ end }}
{{ end }}
{{ return $result }}
{{ end }}

View File

@@ -60,7 +60,7 @@
"navbar-offset-xs" $navbarOffsetXS
"navbar-size" (site.Params.navigation.size | default "md")
"overlay-offset" $overlayOffset
"enable-dark-mode" (printf "%t" ((default true site.Params.main.enableDarkMode)))
"enable-dark-mode" (printf "%t" ((default true (or site.Params.main.enableDarkMode site.Params.main.colorMode.enabled))))
"import-fonts" (printf "%t" (not (hasPrefix (lower site.Params.style.themeFontPath) "http")))
"dark-mode-shade" (default "0%" site.Params.style.darkModeShade)
"dark-mode-tint" (default "0%" site.Params.style.darkModeTint)

View File

@@ -59,6 +59,7 @@
{{- partial "footer/footer.html" . -}}
{{- partial "footer/toast-container.html" . -}}
{{- partial "assets/symbols.html" . -}}
{{- partial "assets/modals.html" . -}}
{{- partialCached "footer/scripts.html" (dict "page" .) -}}
{{- partial "footer/scripts.html" (dict "page" . "type" "optional") -}}
</body>

80
package-lock.json generated
View File

@@ -11,9 +11,9 @@
"dependencies": {
"@fullhuman/postcss-purgecss": "^7.0.2",
"autoprefixer": "^10.4.21",
"cssnano": "^7.1.0",
"cssnano-preset-advanced": "^7.0.8",
"hugo-bin": "0.145.2",
"cssnano": "^7.1.1",
"cssnano-preset-advanced": "^7.0.9",
"hugo-bin": "0.146.0",
"purgecss-whitelister": "^2.4.0"
},
"devDependencies": {
@@ -25,7 +25,7 @@
"commitizen": "^4.3.1",
"cpy-cli": "^6.0.0",
"cz-conventional-changelog": "^3.3.0",
"eslint": "^9.33.0",
"eslint": "^9.34.0",
"husky": "^9.1.7",
"markdownlint-cli2": "^0.18.1",
"neostandard": "^0.12.2",
@@ -720,9 +720,9 @@
}
},
"node_modules/@eslint/js": {
"version": "9.33.0",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.33.0.tgz",
"integrity": "sha512-5K1/mKhWaMfreBGJTwval43JJmkip0RmM+3+IuqupeSKNC/Th2Kc7ucaq5ovTSra/OOKB9c58CGSz3QMVbWt0A==",
"version": "9.34.0",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.34.0.tgz",
"integrity": "sha512-EoyvqQnBNsV1CWaEJ559rxXL4c8V92gxirbawSmVUOWXlsRxxQXl6LmCpdUblgxgSkDIqKnhzba2SjRTI/A5Rw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -3431,9 +3431,10 @@
"license": "MIT"
},
"node_modules/brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"version": "1.1.12",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
"license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -4409,12 +4410,12 @@
}
},
"node_modules/cssnano": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/cssnano/-/cssnano-7.1.0.tgz",
"integrity": "sha512-Pu3rlKkd0ZtlCUzBrKL1Z4YmhKppjC1H9jo7u1o4qaKqyhvixFgu5qLyNIAOjSTg9DjVPtUqdROq2EfpVMEe+w==",
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/cssnano/-/cssnano-7.1.1.tgz",
"integrity": "sha512-fm4D8ti0dQmFPeF8DXSAA//btEmqCOgAc/9Oa3C1LW94h5usNrJEfrON7b4FkPZgnDEn6OUs5NdxiJZmAtGOpQ==",
"license": "MIT",
"dependencies": {
"cssnano-preset-default": "^7.0.8",
"cssnano-preset-default": "^7.0.9",
"lilconfig": "^3.1.3"
},
"engines": {
@@ -4429,14 +4430,14 @@
}
},
"node_modules/cssnano-preset-advanced": {
"version": "7.0.8",
"resolved": "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-7.0.8.tgz",
"integrity": "sha512-KYw7gH8xmIzTwHefuM/m3lkMz4jn5EbjxZO2RHVsOGvrXCxSjbc0/f/gELWW9ZIgbQdJMCkijEo76gBYGY4S3Q==",
"version": "7.0.9",
"resolved": "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-7.0.9.tgz",
"integrity": "sha512-nczUlcRbMuupYDIjlYTQ6nqWh2AjV1omdf5OkUEKpOqPuRb8CZp/KgpZjD2eelX/sfFh6V/aybfgu7lVJH7Z/w==",
"license": "MIT",
"dependencies": {
"autoprefixer": "^10.4.21",
"browserslist": "^4.25.1",
"cssnano-preset-default": "^7.0.8",
"cssnano-preset-default": "^7.0.9",
"postcss-discard-unused": "^7.0.4",
"postcss-merge-idents": "^7.0.1",
"postcss-reduce-idents": "^7.0.1",
@@ -4450,9 +4451,9 @@
}
},
"node_modules/cssnano-preset-default": {
"version": "7.0.8",
"resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-7.0.8.tgz",
"integrity": "sha512-d+3R2qwrUV3g4LEMOjnndognKirBZISylDZAF/TPeCWVjEwlXS2e4eN4ICkoobRe7pD3H6lltinKVyS1AJhdjQ==",
"version": "7.0.9",
"resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-7.0.9.tgz",
"integrity": "sha512-tCD6AAFgYBOVpMBX41KjbvRh9c2uUjLXRyV7KHSIrwHiq5Z9o0TFfUCoM3TwVrRsRteN3sVXGNvjVNxYzkpTsA==",
"license": "MIT",
"dependencies": {
"browserslist": "^4.25.1",
@@ -4460,7 +4461,7 @@
"cssnano-utils": "^5.0.1",
"postcss-calc": "^10.1.1",
"postcss-colormin": "^7.0.4",
"postcss-convert-values": "^7.0.6",
"postcss-convert-values": "^7.0.7",
"postcss-discard-comments": "^7.0.4",
"postcss-discard-duplicates": "^7.0.2",
"postcss-discard-empty": "^7.0.1",
@@ -5478,9 +5479,9 @@
}
},
"node_modules/eslint": {
"version": "9.33.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-9.33.0.tgz",
"integrity": "sha512-TS9bTNIryDzStCpJN93aC5VRSW3uTx9sClUn4B87pwiCaJh220otoI0X8mJKr+VcPtniMdN8GKjlwgWGUv5ZKA==",
"version": "9.34.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-9.34.0.tgz",
"integrity": "sha512-RNCHRX5EwdrESy3Jc9o8ie8Bog+PeYvvSR8sDGoZxNFTvZ4dlxUB3WzQ3bQMztFrSRODGrLLj8g6OFuGY/aiQg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5490,7 +5491,7 @@
"@eslint/config-helpers": "^0.3.1",
"@eslint/core": "^0.15.2",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "9.33.0",
"@eslint/js": "9.34.0",
"@eslint/plugin-kit": "^0.3.5",
"@humanfs/node": "^0.16.6",
"@humanwhocodes/module-importer": "^1.0.1",
@@ -7236,9 +7237,9 @@
}
},
"node_modules/hugo-bin": {
"version": "0.145.2",
"resolved": "https://registry.npmjs.org/hugo-bin/-/hugo-bin-0.145.2.tgz",
"integrity": "sha512-iI4HutM+45/xdNU8XW/mhV0QWwzuuzVzKQ0fhGZIh1e5QkqWvRGhRjE0UARUSU8pygGgkJalVJgNVIGL/lkZ9g==",
"version": "0.146.0",
"resolved": "https://registry.npmjs.org/hugo-bin/-/hugo-bin-0.146.0.tgz",
"integrity": "sha512-R7c7SEhxNekWIny2HF5uU5Xk0Veg8BsahuyLURojvascGLCjyOAUDmghKnWB8DDVXSUmeDQYW8XdypNvbEC/Vg==",
"funding": [
{
"type": "github",
@@ -7248,7 +7249,7 @@
"hasInstallScript": true,
"license": "MIT",
"dependencies": {
"@xhmikosr/bin-wrapper": "^13.1.0",
"@xhmikosr/bin-wrapper": "^13.2.0",
"package-config": "^5.0.0"
},
"bin": {
@@ -13283,9 +13284,9 @@
}
},
"node_modules/postcss-convert-values": {
"version": "7.0.6",
"resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-7.0.6.tgz",
"integrity": "sha512-MD/eb39Mr60hvgrqpXsgbiqluawYg/8K4nKsqRsuDX9f+xN1j6awZCUv/5tLH8ak3vYp/EMXwdcnXvfZYiejCQ==",
"version": "7.0.7",
"resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-7.0.7.tgz",
"integrity": "sha512-HR9DZLN04Xbe6xugRH6lS4ZQH2zm/bFh/ZyRkpedZozhvh+awAfbA0P36InO4fZfDhvYfNJeNvlTf1sjwGbw/A==",
"license": "MIT",
"dependencies": {
"browserslist": "^4.25.1",
@@ -14036,9 +14037,9 @@
}
},
"node_modules/purgecss/node_modules/brace-expansion": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
"integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
"license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0"
@@ -14652,10 +14653,11 @@
}
},
"node_modules/rimraf/node_modules/brace-expansion": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
"integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0"
}

View File

@@ -73,9 +73,9 @@
"dependencies": {
"@fullhuman/postcss-purgecss": "^7.0.2",
"autoprefixer": "^10.4.21",
"cssnano": "^7.1.0",
"cssnano-preset-advanced": "^7.0.8",
"hugo-bin": "0.145.2",
"cssnano": "^7.1.1",
"cssnano-preset-advanced": "^7.0.9",
"hugo-bin": "0.146.0",
"purgecss-whitelister": "^2.4.0"
},
"devDependencies": {
@@ -87,7 +87,7 @@
"commitizen": "^4.3.1",
"cpy-cli": "^6.0.0",
"cz-conventional-changelog": "^3.3.0",
"eslint": "^9.33.0",
"eslint": "^9.34.0",
"husky": "^9.1.7",
"markdownlint-cli2": "^0.18.1",
"neostandard": "^0.12.2",