Compare commits

...

60 Commits

Author SHA1 Message Date
Mark Dumay
dd80ee2bfe Merge pull request #1366 from gethinode/develop
Add wrapping support to tables
2025-01-16 13:56:31 +01:00
Mark Dumay
2e8b087c48 Merge branch 'main' into develop 2025-01-16 13:45:47 +01:00
Mark Dumay
03592cba67 Add wrapping support to tables 2025-01-16 13:45:10 +01:00
Mark Dumay
65a44637d5 Merge pull request #1365 from gethinode/develop
Upgrade to PurgeCSS v7
2025-01-14 15:10:59 +01:00
Mark Dumay
6bbdb813de Merge branch 'main' into develop 2025-01-14 15:02:17 +01:00
Mark Dumay
3ad358bb96 Upgrade to PurgeCSS v7
Fixes #1333
2025-01-14 15:01:19 +01:00
github-actions[bot]
2e1c05fa63 Merge pull request #1364 from gethinode/dependabot/npm_and_yarn/stylelint-16.13.2
Bump stylelint from 16.13.0 to 16.13.2
2025-01-14 13:41:13 +00:00
dependabot[bot]
d67fc81c87 Bump stylelint from 16.13.0 to 16.13.2
Bumps [stylelint](https://github.com/stylelint/stylelint) from 16.13.0 to 16.13.2.
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/16.13.0...16.13.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-14 13:34:58 +00:00
github-actions[bot]
8e532ce61b Merge pull request #1362 from gethinode/dependabot/npm_and_yarn/eslint-9.18.0
Bump eslint from 9.17.0 to 9.18.0
2025-01-13 13:19:44 +00:00
dependabot[bot]
dd7803110d Bump eslint from 9.17.0 to 9.18.0
Bumps [eslint](https://github.com/eslint/eslint) from 9.17.0 to 9.18.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.17.0...v9.18.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-13 13:13:04 +00:00
github-actions[bot]
8c05e15693 Merge pull request #1361 from gethinode/dependabot/npm_and_yarn/stylelint-16.13.0
Bump stylelint from 16.12.0 to 16.13.0
2025-01-13 13:11:48 +00:00
dependabot[bot]
b78d0a9912 Bump stylelint from 16.12.0 to 16.13.0
Bumps [stylelint](https://github.com/stylelint/stylelint) from 16.12.0 to 16.13.0.
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/16.12.0...16.13.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-13 13:06:35 +00:00
Mark Dumay
25aeaeb195 Merge pull request #1360 from gethinode/develop
Fix identification of active child navbar item
2025-01-12 13:29:56 +01:00
Mark Dumay
d8336200ef Merge branch 'main' into develop 2025-01-12 07:17:36 +01:00
Mark Dumay
2831b510d6 Fix identification of active child navbar item 2025-01-12 07:17:01 +01:00
Mark Dumay
ddc319e380 Merge pull request #1359 from gethinode/develop
Improve purge settings
2025-01-11 08:02:50 +01:00
Mark Dumay
0e4c493dd2 Merge branch 'main' into develop 2025-01-11 06:49:13 +01:00
Mark Dumay
48ceeb0b64 Improve purge settings 2025-01-11 06:48:47 +01:00
Mark Dumay
45bd45c5fa Merge pull request #1358 from gethinode/develop
Refine sidebar behavior
2025-01-10 19:32:49 +01:00
Mark Dumay
9f85b5bc93 Fix styles 2025-01-10 19:26:05 +01:00
Mark Dumay
41215fcc25 Merge branch 'main' into develop 2025-01-10 17:55:48 +01:00
Mark Dumay
912a34baa3 Merge pull request #1357 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2025-01-10 17:55:23 +01:00
Mark Dumay
db4fa60bff Refine sidebar behavior 2025-01-10 17:54:32 +01:00
markdumay
8ebc170e0e fix: update Hugo module dependencies 2025-01-10 03:11:55 +00:00
Mark Dumay
0b5a8756ad Merge pull request #1356 from gethinode/develop
Prettify language selector url when applicable
2025-01-09 14:01:51 +01:00
Mark Dumay
7cec88af78 Merge branch 'main' into develop 2025-01-09 13:54:48 +01:00
Mark Dumay
1681d9691e Merge pull request #1355 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2025-01-09 13:54:30 +01:00
Mark Dumay
5b661f8f7f Prettify language selector url when applicable 2025-01-09 13:53:09 +01:00
markdumay
3ca09592f7 fix: update Hugo module dependencies 2025-01-09 03:22:03 +00:00
Mark Dumay
2d701111aa Merge pull request #1353 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2025-01-06 07:38:25 +01:00
markdumay
dbb3b2026c fix: update Hugo module dependencies 2025-01-06 03:12:45 +00:00
Mark Dumay
7d724dbb1f Merge pull request #1354 from gethinode/develop
Improve handling of special links
2025-01-05 14:08:12 +01:00
Mark Dumay
7c436dcacd Merge branch 'main' into develop 2025-01-05 14:01:34 +01:00
Mark Dumay
1da69c08ae Improve handling of special links
Treats links that have a scheme other than http or https as special case.
2025-01-05 14:01:05 +01:00
Mark Dumay
1bca15042b Merge pull request #1351 from gethinode/develop
Update Netlify build env
2025-01-04 15:26:20 +01:00
Mark Dumay
40fd76988d Merge branch 'main' into develop 2025-01-04 15:17:10 +01:00
Mark Dumay
8190e77152 Update Netlify build env 2025-01-04 15:16:04 +01:00
Mark Dumay
d0d681a6a9 Merge pull request #1350 from gethinode/develop
Improve breadcrumb for small devices
2025-01-04 14:55:00 +01:00
Mark Dumay
0d6964c7ed Merge branch 'main' into develop 2025-01-04 14:47:30 +01:00
Mark Dumay
3090aaa810 Merge pull request #1349 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2025-01-04 14:47:06 +01:00
Mark Dumay
c7cf48a6c1 Improve breadcrumb for small devices 2025-01-04 14:45:34 +01:00
markdumay
300a473a37 fix: update Hugo module dependencies 2025-01-04 03:08:14 +00:00
Mark Dumay
dac09afbba Merge pull request #1348 from gethinode/develop
Update minimum required Hugo version
2025-01-03 06:56:56 +01:00
Mark Dumay
a35e59df3d Merge branch 'main' into develop 2025-01-03 06:47:05 +01:00
Mark Dumay
51b80d8820 Update minimum required Hugo version
Depends on [TrimSpace]( https://gohugo.io/functions/strings/trimspace/)
2025-01-03 06:45:51 +01:00
Mark Dumay
28c12e61e9 Merge pull request #1346 from gethinode/develop
Fix rendering of Hinode version in meta tags
2025-01-02 16:52:53 +01:00
Mark Dumay
c2d4782375 Merge branch 'main' into develop 2025-01-02 16:46:12 +01:00
Mark Dumay
4aa5723235 Fix rendering of Hinode version in meta tags 2025-01-02 16:45:49 +01:00
Mark Dumay
6d602df62d Merge pull request #1345 from gethinode/develop
Prevent switching to unavailable translation
2025-01-02 07:38:07 +01:00
Mark Dumay
336f32b4a4 Merge branch 'main' into develop 2025-01-02 07:28:53 +01:00
Mark Dumay
1792ee527d Prevent switching to unavailable translation 2025-01-02 07:28:25 +01:00
Mark Dumay
d750dcfb5a Merge pull request #1344 from gethinode/develop
Sync French card group example with English version
2025-01-02 07:27:32 +01:00
Mark Dumay
448ebdbaad Merge branch 'main' into develop 2025-01-02 07:21:50 +01:00
Mark Dumay
7b8152d84e Sync French card group example with English version 2025-01-02 07:20:37 +01:00
Mark Dumay
df00db0447 Merge pull request #1342 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2025-01-02 07:00:16 +01:00
Mark Dumay
658a02798e Merge branch 'main' into hugo-mod-dependencies 2025-01-02 06:46:24 +01:00
Mark Dumay
7329fdf3f9 Merge pull request #1343 from gethinode/develop
Fix handling of pagination
2025-01-02 06:46:12 +01:00
Mark Dumay
34550a3e00 Merge branch 'main' into develop 2025-01-02 06:32:46 +01:00
Mark Dumay
b88b17642d Fix handling of pagination 2025-01-02 06:30:46 +01:00
markdumay
ecb06164e0 fix: update Hugo module dependencies 2025-01-02 03:09:03 +00:00
32 changed files with 576 additions and 282 deletions

View File

@@ -25,7 +25,10 @@
window.location.href = href
}
} else {
window.location.href = folder + language + '/'
let target = folder + language + '/'
if (window.location.href !== target) {
window.location.href = target
}
}
}
}
@@ -42,7 +45,7 @@
// continue with regular code
const storedLanguage = getLanguage()
const languageItems = document.querySelectorAll('#language-selector .dropdown-item')
const languageItems = document.querySelectorAll('#language-selector[data-translated=true] .dropdown-item')
const link = document.querySelector("link[rel='canonical']")
let alias = ''
@@ -50,7 +53,7 @@
alias = link.getAttribute('href')
}
if (alias !== '') {
if ((alias !== '') && (window.location.href !== alias)) {
window.location.href = alias
} else if (languageItems.length > 0) {
// Redirect if the stored language differs from the active language
@@ -74,10 +77,8 @@
})
}
else {
// Redirect to the localized homepage
const defaultLang = '{{ site.LanguageCode | default site.Language.Lang }}'
let language = storedLanguage ? storedLanguage : defaultLang
window.location.href = folder + language + '/'
// overrule the current stored language when no translation is available
setLanguage(document.documentElement.lang)
}
})
})()

View File

@@ -7,22 +7,45 @@
top: var(--navbar-offset);
max-height: 90vh;
overflow-y: auto;
scrollbar-gutter: stable;
}
.sidebar-item {
color: rgba(0, 0, 0, 0.65);
margin-left: 0 !important;
padding-left: 0.85rem !important;
display: inline-block;
padding: 0.1875rem 0.5rem !important;
&.active {
color: $primary;
}
&.active,
&:hover,
&:focus {
color: black;
color: $primary;
background-color: tint-color($primary, 90%);
}
}
.btn-toggle {
.sidebar-item-group {
&:hover,
&:focus {
color: $primary;
background-color: tint-color($primary, 90%);
}
> div > a {
color: var(--bs-body-color) !important;
text-decoration: none;
cursor: pointer;
}
}
.sidebar-item-group > div {
padding: 0.1875rem 0.5rem !important;
}
.btn-toggle-group {
padding: 0.25rem 0.5rem;
font-weight: 600;
color: rgba(0, 0, 0, 0.65);
@@ -30,8 +53,7 @@
&:hover,
&:focus {
color: black;
background-color: tint-color($primary, 90%);
background-color: transparent;
}
&::before {
@@ -43,50 +65,49 @@
}
}
.btn-toggle[aria-expanded="true"] {
color: black;
.btn-toggle-group[aria-expanded="true"] {
&::before {
transform: rotate(90deg);
}
}
.btn-toggle-nav a {
padding: 0.1875rem 0.5rem;
margin-top: 0.125rem;
margin-left: 1.25rem;
&:hover,
&:focus {
background-color: tint-color($primary, 90%);
}
&.active {
font-weight: bold;
}
}
@if $enable-dark-mode {
@include color-mode(dark) {
.sidebar-item {
color: var(--bs-body-color);
margin-left: 0 !important;
padding-left: 0.85rem !important;
&.active,
&.active {
color: $primary-text-emphasis-dark !important;
}
&:hover,
&:focus {
color: $primary-text-emphasis-dark !important;
background-color: transparent;
box-shadow: inset 0 0 0 1px $primary-bg-subtle-dark;
}
}
.sidebar-item-group {
color: var(--bs-body-color) !important;
&.active {
color: $primary-text-emphasis-dark !important;
}
&:hover,
&:focus {
color: white !important;
background-color: transparent;
box-shadow: inset 0 0 0 1px $primary-bg-subtle-dark;
}
}
.btn-toggle {
.btn-toggle-group {
color: var(--bs-body-color);
&:hover,
&:focus {
color: white !important;
background-color: transparent;
}
@@ -95,26 +116,10 @@
}
}
.btn-toggle[aria-expanded="true"] {
.btn-toggle-group[aria-expanded="true"] {
color: var(--bs-secondary-color);
}
.btn-toggle-nav a {
padding: 0.1875rem 0.5rem;
margin-top: 0.125rem;
margin-left: 1.25rem;
&:hover,
&:focus {
color: white !important;
background-color: transparent;
}
&.active {
font-weight: bold;
}
}
}
}
}
// scss-docs-end sidebar

View File

@@ -11,6 +11,10 @@
padding-right: 1rem;
}
.table-border-bottom-wrap {
border-bottom-style: none !important
}
@if $enable-dark-mode {
@include color-mode(dark) {
.table-striped, .table-striped-columns {

View File

@@ -116,8 +116,7 @@ home = ["HTML", "RSS", "REDIR", "netlify", "server"]
[module]
[module.hugoVersion]
extended = true
min = "0.134.0"
max = ""
min = "0.136.3"
[[module.mounts]]
source = "archetypes"
target = "archetypes"
@@ -139,6 +138,11 @@ home = ["HTML", "RSS", "REDIR", "netlify", "server"]
[[module.mounts]]
source = "static"
target = "static"
# ensures main package.json is always available, even when using workspaces
# in workspaces, the package.json is pointing to the first imported module
[[module.mounts]]
source = "package.json"
target = "assets/data/package-hinode.json"
[[module.mounts]]
source = "netlify.toml"
target = "assets/config/netlify.toml"

View File

@@ -3,13 +3,15 @@ const cssnano = require('cssnano')({
preset: 'advanced'
})
const whitelister = require('purgecss-whitelister')
const purgecss = require('@fullhuman/postcss-purgecss')({
const purgeImport = require('@fullhuman/postcss-purgecss')
const purgeCSSPlugin = purgeImport.purgeCSSPlugin || purgeImport.default || purgeImport
const purgecss = purgeCSSPlugin({
content: ['./hugo_stats.json'],
defaultExtractor: (content) => {
const els = JSON.parse(content).htmlElements
return [...(els.tags || []), ...(els.classes || []), ...(els.ids || [])]
},
dynamicAttributes: ['data-bs-theme'],
dynamicAttributes: ['data-bs-theme', 'data-bs-theme-animate'],
safelist: ['was-validated',
...whitelister([
'./assets/scss/components/_clipboard.scss',

View File

@@ -4,12 +4,12 @@
command = "npm run build:example"
[build.environment]
DART_SASS_VERSION = "1.78.0"
HUGO_VERSION = "0.134.1"
DART_SASS_VERSION = "1.83.1"
HUGO_VERSION = "0.140.2"
HUGO_ENV = "production"
HUGO_ENABLEGITINFO = "true"
NODE_VERSION = "20.17.0"
NPM_VERSION = "10.8.2"
NODE_VERSION = "22.12.0"
NPM_VERSION = "10.9.0"
# toml-docs-end netlify
[context.deploy-preview]

View File

@@ -3,6 +3,20 @@ comment: >-
improve their layout on smaller screens. To features `sortable`, `paging`,
and `searchable` require the module `simple-datatables`.
arguments:
page:
type:
- '*hugolib.pageState'
- '*hugolib.pageForShortcode'
optional: false
comment: Page to display the breadcrumb for.
group: partial
input:
type:
- string
- template.HTML
optional: false
comment: Table input in markdown format.
group: partial
breakpoint:
type: select
optional: true
@@ -55,6 +69,13 @@ arguments:
optional: true
comment: Toggle the ability to search the dataset.
release: v0.24.13
wrap:
type: bool
optional: true
comment: >-
Toggle the last column to wrap to a new row on smaller devices. This
setting is not compatible with data tables.
release: v0.28.0
body:
type: string
optional: false

View File

@@ -158,7 +158,7 @@
# themeFontPath = "https://fonts.googleapis.com/css2?family=Inter:wght@200;300;600&display=swap" # external path
themeFontPath = "/fonts" # local path
themeFontPreload = "/fonts/inter-v12-latin-regular.woff2"
purge = false # TODO: fix purge setting of example site
purge = true
# toml-docs-end theme-colors
[schema]

View File

@@ -3,31 +3,34 @@ const cssnano = require('cssnano')({
preset: 'advanced'
})
const whitelister = require('purgecss-whitelister')
const purgecss = require('@fullhuman/postcss-purgecss')({
content: ['./hugo_stats.json'],
const purgeImport = require('@fullhuman/postcss-purgecss')
const purgeCSSPlugin = purgeImport.purgeCSSPlugin || purgeImport.default || purgeImport
const purgecss = purgeCSSPlugin({
content: ['./exampleSite/hugo_stats.json'],
defaultExtractor: (content) => {
const els = JSON.parse(content).htmlElements
return [...(els.tags || []), ...(els.classes || []), ...(els.ids || [])]
},
dynamicAttributes: ['data-bs-theme'],
dynamicAttributes: ['data-bs-theme', 'data-bs-theme-animate'],
safelist: ['was-validated',
...whitelister([
'./_vendor/github.com/gethinode/hinode/assets/scss/components/_clipboard.scss',
'./_vendor/github.com/gethinode/hinode/assets/scss/components/_command.scss',
'./_vendor/github.com/gethinode/hinode/assets/scss/components/_nav.scss',
'./_vendor/github.com/gethinode/hinode/assets/scss/components/_navbar.scss',
'./_vendor/github.com/gethinode/hinode/assets/scss/components/_search.scss',
'./_vendor/github.com/gethinode/hinode/assets/scss/components/_syntax.scss',
'./_vendor/github.com/gethinode/hinode/assets/scss/components/_syntax-dark.scss',
'./_vendor/github.com/gethinode/hinode/assets/scss/components/_syntax-light.scss',
'./_vendor/github.com/gethinode/hinode/assets/scss/components/_table.scss',
'./_vendor/github.com/gethinode/hinode/assets/scss/components/_video.scss',
'./_vendor/github.com/gethinode/hinode/assets/scss/theme/fonts.scss',
'./_vendor/github.com/gethinode/hinode/assets/scss/theme/theme.scss',
'./exampleSite/_vendor/github.com/gethinode/mod-cookieyes/v2/assets/scss/cookieyes.scss',
'./assets/scss/components/_clipboard.scss',
'./assets/scss/components/_command.scss',
'./assets/scss/components/_nav.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/components/_video.scss',
'./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-katex/dist/katex.scss',
'./_vendor/github.com/gethinode/mod-leaflet/dist/leaflet.scss',
'./_vendor/github.com/gethinode/mod-simple-datatables/dist/simple-datatables.scss',
'./_vendor/github.com/twbs/bootstrap/scss/_carousel.scss',
'./_vendor/github.com/twbs/bootstrap/scss/_dropdown.scss',
'./_vendor/github.com/twbs/bootstrap/scss/_modal.scss',

View File

@@ -136,7 +136,7 @@ En-tête 6 {{</* badge title="Nouveau" */>}}
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
{{< example lang="hugo" >}}
{{</* card-group padding="3" gutter="3" */>}}
{{</* card-group padding="3" gutter="3" button=true buttonType="link" cols=2 scroll=true */>}}
{{</* 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.

View File

@@ -3,5 +3,5 @@ module github.com/gethinode/hinode/exampleSite
go 1.19
require (
github.com/gethinode/mod-cookieyes/v2 v2.2.2 // indirect
github.com/gethinode/mod-cookieyes/v2 v2.2.4 // indirect
)

View File

@@ -1,2 +1,2 @@
github.com/gethinode/mod-cookieyes/v2 v2.2.2 h1:VNIdbZnzXw/0Jito/IcDNqQ9yRYLCGrDwyrMqtSJgE4=
github.com/gethinode/mod-cookieyes/v2 v2.2.2/go.mod h1:tULb7D7CoTycGUyL7ryqHJKaX11XuL2SN+XwP7/DI0Y=
github.com/gethinode/mod-cookieyes/v2 v2.2.4 h1:MxKKNSpX2cb9+4l3mH/xfZUqiJ1buaGLj0AFRnPci5M=
github.com/gethinode/mod-cookieyes/v2 v2.2.4/go.mod h1:tULb7D7CoTycGUyL7ryqHJKaX11XuL2SN+XwP7/DI0Y=

View File

@@ -65,6 +65,7 @@
"use"
],
"classes": [
"%!s(<nil>)",
"accordion",
"accordion-body",
"accordion-button",
@@ -207,6 +208,7 @@
"fa-2xs",
"fa-4x",
"fa-activity",
"fa-angle-left",
"fa-arrow-left",
"fa-arrow-right",
"fa-bootstrap",

20
go.mod
View File

@@ -4,16 +4,16 @@ go 1.19
require (
github.com/airbnb/lottie-web v5.12.2+incompatible // indirect
github.com/gethinode/mod-bootstrap v1.3.1 // indirect
github.com/gethinode/mod-csp v1.0.5 // indirect
github.com/gethinode/mod-flexsearch/v2 v2.0.2 // indirect
github.com/gethinode/mod-fontawesome v1.10.0 // indirect
github.com/gethinode/mod-google-analytics v1.1.5 // indirect
github.com/gethinode/mod-katex v1.1.2 // indirect
github.com/gethinode/mod-leaflet v1.2.0 // indirect
github.com/gethinode/mod-lottie v1.5.12 // indirect
github.com/gethinode/mod-simple-datatables v1.1.4 // indirect
github.com/gethinode/mod-utils/v2 v2.8.4 // indirect
github.com/gethinode/mod-bootstrap v1.3.2 // indirect
github.com/gethinode/mod-csp v1.0.7 // indirect
github.com/gethinode/mod-flexsearch/v2 v2.0.3 // indirect
github.com/gethinode/mod-fontawesome v1.10.1 // indirect
github.com/gethinode/mod-google-analytics v1.3.1 // indirect
github.com/gethinode/mod-katex v1.1.3 // indirect
github.com/gethinode/mod-leaflet v1.2.1 // indirect
github.com/gethinode/mod-lottie v1.5.13 // indirect
github.com/gethinode/mod-simple-datatables v1.1.6 // indirect
github.com/gethinode/mod-utils/v2 v2.8.6 // indirect
github.com/nextapps-de/flexsearch v0.0.0-20240501124520-961c3ae84a87 // indirect
github.com/twbs/bootstrap v5.3.3+incompatible // indirect
)

32
go.sum
View File

@@ -24,6 +24,8 @@ github.com/gethinode/mod-bootstrap v1.3.0 h1:UxNmXgXo7gA8C8z1ar47+tSccmKYpaYBBN+
github.com/gethinode/mod-bootstrap v1.3.0/go.mod h1:CL9IDot6nbXIWJYE/KxfsTdYYEJIGL17BXbAYPn+wVQ=
github.com/gethinode/mod-bootstrap v1.3.1 h1:ZUX72St0WZ5tyXpEPBJlayX/dmCH3cGErzsozkUKCok=
github.com/gethinode/mod-bootstrap v1.3.1/go.mod h1:CL9IDot6nbXIWJYE/KxfsTdYYEJIGL17BXbAYPn+wVQ=
github.com/gethinode/mod-bootstrap v1.3.2 h1:mf9Qgr+xHZeHjZGYFdurETfdEKKldB158fpjH0GoaNU=
github.com/gethinode/mod-bootstrap v1.3.2/go.mod h1:CL9IDot6nbXIWJYE/KxfsTdYYEJIGL17BXbAYPn+wVQ=
github.com/gethinode/mod-csp v1.0.0 h1:Obp0MVMBjIPZbKDh6Ejl5pImDG7yERMLf2or9UVnwPA=
github.com/gethinode/mod-csp v1.0.0/go.mod h1:Nb22QMicoUHgZQUKP5TCgVrSI8K3KU7jLuLBShmotjg=
github.com/gethinode/mod-csp v1.0.1 h1:IUUwPc41UNw7DAFuJ75nNPzhkPExenxXU7susdLaxdQ=
@@ -36,6 +38,10 @@ github.com/gethinode/mod-csp v1.0.4 h1:ChI+DMkkkCF5tKs+K9VSqdsXPS01/QANQiJ2LoJp1
github.com/gethinode/mod-csp v1.0.4/go.mod h1:Nb22QMicoUHgZQUKP5TCgVrSI8K3KU7jLuLBShmotjg=
github.com/gethinode/mod-csp v1.0.5 h1:Ypdzw26iQ9/4sAgHvwFY1mg/EMoLrcI2knvVmHq2Ffs=
github.com/gethinode/mod-csp v1.0.5/go.mod h1:Nb22QMicoUHgZQUKP5TCgVrSI8K3KU7jLuLBShmotjg=
github.com/gethinode/mod-csp v1.0.6 h1:ufEKQldQe9ZCXbENTpwqVlYnPRgVv3WDhPjur5OLUEA=
github.com/gethinode/mod-csp v1.0.6/go.mod h1:Nb22QMicoUHgZQUKP5TCgVrSI8K3KU7jLuLBShmotjg=
github.com/gethinode/mod-csp v1.0.7 h1:V4D8vYA/jJ2Nv9kPz5gt96fkVd3NtT7sBqVhnG5TvAU=
github.com/gethinode/mod-csp v1.0.7/go.mod h1:Nb22QMicoUHgZQUKP5TCgVrSI8K3KU7jLuLBShmotjg=
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=
@@ -88,6 +94,8 @@ github.com/gethinode/mod-flexsearch/v2 v2.0.1 h1:5unGUSb1tX1LBtKygnLfdt7CnVJuFKS
github.com/gethinode/mod-flexsearch/v2 v2.0.1/go.mod h1:d7MMkVlz0l6cEk76e0mkveEsDxGfu5Sv+HUIhoGguhE=
github.com/gethinode/mod-flexsearch/v2 v2.0.2 h1:5FkLbjORwKvK544H/yaAltyIB7eptRPxxh5VcfDDeqM=
github.com/gethinode/mod-flexsearch/v2 v2.0.2/go.mod h1:d7MMkVlz0l6cEk76e0mkveEsDxGfu5Sv+HUIhoGguhE=
github.com/gethinode/mod-flexsearch/v2 v2.0.3 h1:lC4UN9DPYyj3lsRm86Rt+kKx2DmAS10dOxbM/1H8fVw=
github.com/gethinode/mod-flexsearch/v2 v2.0.3/go.mod h1:d7MMkVlz0l6cEk76e0mkveEsDxGfu5Sv+HUIhoGguhE=
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=
@@ -132,6 +140,8 @@ github.com/gethinode/mod-fontawesome v1.9.1 h1:cQk84vriqffM4fuUUoM9j3SSD+3ppeW2j
github.com/gethinode/mod-fontawesome v1.9.1/go.mod h1:xBKsZH3WJtMOItZVlp9SbO51uaBy6IbvUZSKpNu3b6Y=
github.com/gethinode/mod-fontawesome v1.10.0 h1:Izs2AKc+YVBa1TywcH54OKLTNCUMXRoFIqOs+n0FgOo=
github.com/gethinode/mod-fontawesome v1.10.0/go.mod h1:xBKsZH3WJtMOItZVlp9SbO51uaBy6IbvUZSKpNu3b6Y=
github.com/gethinode/mod-fontawesome v1.10.1 h1:gXQ75VXI+a0W2ALkAFHd/QFQ/VoZR6eujX0Hm7DkG94=
github.com/gethinode/mod-fontawesome v1.10.1/go.mod h1:xBKsZH3WJtMOItZVlp9SbO51uaBy6IbvUZSKpNu3b6Y=
github.com/gethinode/mod-google-analytics v1.0.0 h1:fly42RQ69bdyJe8WFefsBIo7WMIXkd3wZn32kyAr4h4=
github.com/gethinode/mod-google-analytics v1.0.0/go.mod h1:dl628cFozpCvoIMCiV7ujzQipjxcm3eatXrSfLPWNII=
github.com/gethinode/mod-google-analytics v1.0.1 h1:zbmOdnAhhFCA7qWw7fnR46biWhqW2r06sIaTWyhB5R0=
@@ -150,6 +160,14 @@ github.com/gethinode/mod-google-analytics v1.1.4 h1:GkLzbSdVIMLWSQ4VOSaJZIKyofmV
github.com/gethinode/mod-google-analytics v1.1.4/go.mod h1:dl628cFozpCvoIMCiV7ujzQipjxcm3eatXrSfLPWNII=
github.com/gethinode/mod-google-analytics v1.1.5 h1:wlOcgwNEJAnIQmPJIo3cT06xnr1dxN/ydUIztoC/7rM=
github.com/gethinode/mod-google-analytics v1.1.5/go.mod h1:dl628cFozpCvoIMCiV7ujzQipjxcm3eatXrSfLPWNII=
github.com/gethinode/mod-google-analytics v1.1.6 h1:0eNIM4NTzXnnRHMM04IVnYPPGwbMAmit6fjuUuCQv2I=
github.com/gethinode/mod-google-analytics v1.1.6/go.mod h1:dl628cFozpCvoIMCiV7ujzQipjxcm3eatXrSfLPWNII=
github.com/gethinode/mod-google-analytics v1.1.9 h1:ld3bRGiJiUCfe/deH+4vOP3oZNhG6mPssT254EcK0Ro=
github.com/gethinode/mod-google-analytics v1.1.9/go.mod h1:dl628cFozpCvoIMCiV7ujzQipjxcm3eatXrSfLPWNII=
github.com/gethinode/mod-google-analytics v1.3.0 h1:R9oRB6nbFDwLsNmIhxlcmUVH4JE1kvcmbOloKSHhiIQ=
github.com/gethinode/mod-google-analytics v1.3.0/go.mod h1:dl628cFozpCvoIMCiV7ujzQipjxcm3eatXrSfLPWNII=
github.com/gethinode/mod-google-analytics v1.3.1 h1:WPXrsO6Kpp0k8PYY9a1JyiZgYGMlkBfHY8eEg6CfcL0=
github.com/gethinode/mod-google-analytics v1.3.1/go.mod h1:dl628cFozpCvoIMCiV7ujzQipjxcm3eatXrSfLPWNII=
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=
@@ -174,6 +192,8 @@ github.com/gethinode/mod-katex v1.1.1 h1:z8+mfVI6UTWcfpQMVPIzxQzt6Lp9BcmXxSOILQ8
github.com/gethinode/mod-katex v1.1.1/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
github.com/gethinode/mod-katex v1.1.2 h1:TbeVIWeG5TqldlVxpM1upOWj11RljXy4fhpOQIwOnS4=
github.com/gethinode/mod-katex v1.1.2/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
github.com/gethinode/mod-katex v1.1.3 h1:fRgoBZVCJeLUFqGrGweg4FhCcbGsyqNRmd9WezG/CUQ=
github.com/gethinode/mod-katex v1.1.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=
@@ -196,6 +216,8 @@ github.com/gethinode/mod-leaflet v1.1.1 h1:AIHR4k8SjmeoZxtjLgSS6/N3jKeZNZGdZTgu/
github.com/gethinode/mod-leaflet v1.1.1/go.mod h1:Ei0x9WiL7Dbi4JeG6yI1CE63bT1QJ8sKi67Jea1wFSE=
github.com/gethinode/mod-leaflet v1.2.0 h1:5q5LHmGNi9N4cdRDCsl/6oI8vY3oQ2ogNUjP3NCnk4Y=
github.com/gethinode/mod-leaflet v1.2.0/go.mod h1:Ei0x9WiL7Dbi4JeG6yI1CE63bT1QJ8sKi67Jea1wFSE=
github.com/gethinode/mod-leaflet v1.2.1 h1:p0bKi+F5vbXwYknBvFEN9KymK8PRqKaYhVz5O1QPs/c=
github.com/gethinode/mod-leaflet v1.2.1/go.mod h1:Ei0x9WiL7Dbi4JeG6yI1CE63bT1QJ8sKi67Jea1wFSE=
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=
@@ -248,6 +270,8 @@ github.com/gethinode/mod-lottie v1.5.11 h1:xhxBPDS0iyUY+C1ANaD5EeQV7fO1FG0wMoCjg
github.com/gethinode/mod-lottie v1.5.11/go.mod h1:6FKqk8c+Jkbk2udCxUKVLF1K1wrGwthPsOvRzeoPXRQ=
github.com/gethinode/mod-lottie v1.5.12 h1:ny+5DfxWpgRPszhrSUqg+BcNt05ai1OvPAEgCuioFnA=
github.com/gethinode/mod-lottie v1.5.12/go.mod h1:0WZP8x7duK/AIZ8fWdZNRnteG03kYfLtsaph7z1mdOg=
github.com/gethinode/mod-lottie v1.5.13 h1:Vth/OZDjfBZ9Kz5ew3tXGj9tU6w4StIta6qgfa1daZo=
github.com/gethinode/mod-lottie v1.5.13/go.mod h1:tMFSUW9z3kC8IvDfs1ph9MGjuZFRBrpCnpodrwY+L4w=
github.com/gethinode/mod-simple-datatables v1.0.0 h1:Dj4WGw12OkaimwkCpLn5Jhmd49dvNJW9O2P/W9F+HlQ=
github.com/gethinode/mod-simple-datatables v1.0.0/go.mod h1:K8T7fIdb8pMOB+OSW4A5lz5IW99+HyzcTgx764fvOGw=
github.com/gethinode/mod-simple-datatables v1.0.2 h1:zhqxHet3iLQWYCBbGROALpOY9zQlptMycFkz1Tto5bA=
@@ -280,6 +304,10 @@ github.com/gethinode/mod-simple-datatables v1.1.3 h1:a+uIfgc6c+9Zc38Q+Kzd3cWeFhC
github.com/gethinode/mod-simple-datatables v1.1.3/go.mod h1:8q/6f3uAPNTTP5NjEJOuXr6tEWelRFLJfzVJ3AODMlQ=
github.com/gethinode/mod-simple-datatables v1.1.4 h1:8+uwaEBoh8N2T2sHlcIcxqAGaHPqT0YhPBmr2SFWBCY=
github.com/gethinode/mod-simple-datatables v1.1.4/go.mod h1:8q/6f3uAPNTTP5NjEJOuXr6tEWelRFLJfzVJ3AODMlQ=
github.com/gethinode/mod-simple-datatables v1.1.5 h1:DKJ+aR94mekzcDwOnm6MJ/+MjAzal+GSYQXSdn0HRdc=
github.com/gethinode/mod-simple-datatables v1.1.5/go.mod h1:bvMdmQFk4Hvyltf/QhMqUaApvPbIGTnbI3JLjOEh8go=
github.com/gethinode/mod-simple-datatables v1.1.6 h1:7nPeRwHlYbmlNEg7fBV6FyXqpxWW6ZAemaZyYxpIF8U=
github.com/gethinode/mod-simple-datatables v1.1.6/go.mod h1:bvMdmQFk4Hvyltf/QhMqUaApvPbIGTnbI3JLjOEh8go=
github.com/gethinode/mod-utils v1.0.0 h1:cqHm2xS5uDiJzRm1KfHaNbq6uMVDKLhQa8/BuTZ1nhY=
github.com/gethinode/mod-utils v1.0.0/go.mod h1:ONJm3pHCq7nvaPNjusLZNCeCbhOhSBH4HVKHwK1FdYE=
github.com/gethinode/mod-utils v1.0.1 h1:jhZGlGFHHL1f5HXbBMXfiZ2gCz4TVafAzjnRPTIBSEE=
@@ -346,6 +374,10 @@ github.com/gethinode/mod-utils/v2 v2.8.3 h1:t1MJcIdFhYi0gCkm8f0DYZwyfq7pRdRc0eNp
github.com/gethinode/mod-utils/v2 v2.8.3/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
github.com/gethinode/mod-utils/v2 v2.8.4 h1:ZBkIxFezFz2IrbTt0Y3Nq5ac7klU5N8TY19Qnj5px4M=
github.com/gethinode/mod-utils/v2 v2.8.4/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
github.com/gethinode/mod-utils/v2 v2.8.5 h1:e71ncO2NYpum7JTdNTwb0lw8aDe8Zc64Ehjavy8x9xM=
github.com/gethinode/mod-utils/v2 v2.8.5/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
github.com/gethinode/mod-utils/v2 v2.8.6 h1:gtTtL37YPq1n/POIzbj40aYOg1VaZq8IjqwSf2V5yo0=
github.com/gethinode/mod-utils/v2 v2.8.6/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
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=

View File

@@ -63,6 +63,8 @@
"d-inline",
"d-md-block",
"d-none",
"d-sm-block",
"d-sm-none",
"display-1",
"display-4",
"emphasis",
@@ -70,6 +72,7 @@
"fa",
"fa-10x",
"fa-2x",
"fa-angle-left",
"fa-book-open",
"fa-ellipsis",
"fa-face-frown",
@@ -177,6 +180,7 @@
"fab-github",
"fab-linkedin",
"fab-medium",
"fas-angle-left",
"fas-book-open",
"fas-ellipsis",
"fas-moon",

View File

@@ -7,8 +7,10 @@
{{ $attr = merge $attr (dict "class" (trim (delimit ($class | append "table") " ") " ")) }}
{{ end }}
{{ $wrap := in $class "table-wrap" }}
{{ $align := dict "left" "start" "center" "center" "right" "end" }}
{{ $header := "" }}
<table
{{- range $k, $v := $attr }}
{{- if $v }}
@@ -17,6 +19,19 @@
{{- end }}>
<thead>
{{- range .THead }}
{{ $length := len . }}
{{ if $wrap }}
<tr>
{{- range . | first (sub $length 1) }}
<th {{ with .Alignment }}class="text-{{ index $align . }}"{{ end }}>
{{- .Text -}}
</th>
{{- end }}
{{- range . | last 1 }}
{{ $header = .Text }}
{{ end }}
</tr>
{{ else }}
<tr>
{{- range . }}
<th {{ with .Alignment }}class="text-{{ index $align . }}"{{ end }}>
@@ -24,17 +39,36 @@
</th>
{{- end }}
</tr>
{{ end }}
{{- end }}
</thead>
<tbody>
{{- range .TBody }}
{{ $length := len . }}
{{ if $wrap }}
<tr>
{{- range . }}
<td {{ with .Alignment }}class="text-{{ index $align . }}"{{ end }}>
{{- range . | first (sub $length 1) }}
<td class="{{ with .Alignment }}text-{{ index $align . }}{{ end }} table-border-bottom-wrap">
{{- .Text -}}
</td>
{{- end }}
</tr>
<tr>
{{- range . | last 1 }}
<td class="{{ with .Alignment }}text-{{ index $align . }}{{ end }}" colspan="{{ (sub $length 1) }}">
{{- .Text -}}
</td>
{{ end }}
</tr>
{{ else }}
<tr>
{{- range . }}
<td {{ with .Alignment }}class="text-{{ index $align . }}"{{ end }}>
{{- .Text -}}
</td>
{{- end }}
</tr>
{{ end }}
{{- end }}
</tbody>
</table>

View File

@@ -6,6 +6,16 @@
{{ $error := false }}
<!-- Limits a title to a maximum of 33 runes, adds a "..." suffix otherwise -->
{{ define "partials/short-title.html" }}
{{- $title := . -}}
{{ if gt (strings.RuneCount $title) 33 }}
{{ $title = print (substr $title 0 30) "..." }}
{{ end }}
{{ return $title }}
{{ end }}
<!-- Validate arguments -->
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "breadcrumb" "args" . "group" "partial") }}
{{- errorf "partial [assets/breadcrumb.html] - Invalid arguments" -}}
@@ -13,23 +23,41 @@
{{ end }}
<!-- Initialize arguments -->
{{ $page := .page }}
{{- $page := .page -}}
{{- $breakpoint := $page.Scratch.Get "breakpoint" -}}
<!-- Include breadcrumb items that have both a title and address -->
{{ $items := slice }}
{{- range $index, $item := $page.Ancestors.Reverse -}}
{{- $title := .LinkTitle -}}
{{- if .IsHome }}{{ $title = T "home" }}{{ end -}}
{{- $address := or .RelPermalink .Params.Redirect -}}
{{ if and $title $address}}
{{ $items = $items | append (dict "title" $title "address" $address) }}
{{ end }}
{{ end }}
<!-- Main code -->
{{ if not $error }}
<nav aria-label="breadcrumb">
<nav aria-label="breadcrumb" class="d-{{ $breakpoint.prev }}-none">
<ol class="breadcrumb">
{{- range $index, $item := $page.Ancestors.Reverse -}}
{{- $title := .LinkTitle -}}
{{- if .IsHome }}{{ $title = T "home" }}{{ end -}}
{{- $address := or .RelPermalink .Params.Redirect -}}
{{ if $title }}
{{ if $address }}
<li class="breadcrumb-item"><a href="{{ $address }}">{{ $title }}</a></li>
{{ else }}
<li class="breadcrumb-item">{{ $title }}</li>
{{ end }}
{{ end }}
{{- $length := len $items -}}
{{- if gt $length 0 -}}
{{ $item := index $items (sub $length 1) }}
<li class="breadcrumb-item">
<a href="{{ $item.address }}">
{{ partial "assets/icon.html" (dict "icon" "fas angle-left") }}&nbsp;{{ partial "short-title" $item.title }}
</a>
</li>
{{- end -}}
</ol>
</nav>
<nav aria-label="breadcrumb" class="d-none d-{{ $breakpoint.prev }}-block">
<ol class="breadcrumb">
{{- $length := len $items }}
{{- range $index, $item := $items -}}
<li class="breadcrumb-item"><a href="{{ $item.address }}">{{ $item.title }}</a></li>
{{- end -}}
<li class="breadcrumb-item active" aria-current="page">{{ $page.LinkTitle }}</li>
</ol>

View File

@@ -67,6 +67,8 @@
{{ $paginator = $args.page.Paginate $list }}
{{ end }}
{{ $list = first $paginator.PagerSize (after (mul (sub $paginator.PageNumber 1) $paginator.PagerSize) $list) }}
{{ page.Store.Set "paginator" $paginator }}
{{ end }}
<!-- Initialize list elements -->

View File

@@ -33,6 +33,7 @@
{{- $tab := .tab | default site.Params.main.externalLinks.tab -}}
{{- $pretty := site.Params.main.internalLinks.pretty | default false }}
{{- $isExternal := or (ne (urls.Parse (absURL $destination)).Host (urls.Parse site.BaseURL).Host) $external -}}
{{- $isSpecial := and $u.Scheme (not (in (slice "http" "https") $u.Scheme)) }}
{{- $isLocal := hasPrefix $destination "#" -}}
{{- $page := .page -}}
{{- $anchor := "" -}}
@@ -41,7 +42,11 @@
{{- $class := .class -}}
<!-- Main code -->
{{- if $isExternal -}}
{{- if $isSpecial -}}
{{- if not $text -}}
{{- $text = (urls.Parse (absURL $destination)).Host -}}
{{- end -}}
{{- else if $isExternal -}}
{{- if not $text -}}
{{- $text = (urls.Parse (absURL $destination)).Host -}}
{{- end -}}

View File

@@ -28,7 +28,7 @@
{{- $menuURL = partial "utilities/URLJoin.html" (dict "base" $baseURL "path" ((or $menu.PageRef $menu.URL) | relLangURL)) -}}
{{ end }}
{{- $pageURL := $page.RelPermalink -}}
{{- $isActive := or (and (hasPrefix $pageURL $menuURL) (ne $menuURL ("/" | relLangURL))) (eq $pageURL $menuURL) -}}
{{- $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 -}}

View File

@@ -77,6 +77,7 @@
<!-- Initialize arguments -->
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
{{- $pretty := site.Params.main.internalLinks.pretty | default false }}
{{- $id := .id | default (printf "navbar-%d" 0) -}}
{{- $page := .page -}}
{{- $baseURL := $page.Scratch.Get "baseURL" -}}
@@ -269,14 +270,18 @@
<a class="nav-link dropdown-toggle d-none d-{{ $size }}-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">
<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>
<li><a class="dropdown-item {{ if eq .Language.Lang $currentLang }}active{{ end }}" hreflang="{{ .Language.Lang }}" href="{{ .RelPermalink }}">{{ .Language.LanguageName }}</a></li>
{{- end -}}
{{- else -}}
{{- range site.Languages -}}
<li><a class="dropdown-item" href="{{ partial "utilities/URLJoin.html" (dict "base" $baseURL "path" .Lang) }}" hreflang="{{.Lang}}">{{ default .Lang .LanguageName }}</a></li>
{{ $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>

View File

@@ -28,12 +28,34 @@
{{- $doc_slug := partial "utilities/URLJoin.html" (dict "base" $baseURL "path" ($group.title | urlize)) -}}
{{- $href := or $group.link $doc_slug -}}
{{ $ref := partial "utilities/GetPage.html" (dict "url" $href "page" $page) }}
{{ if eq $group.link "#" }}{{ $href = $doc_slug }}{{ end }}
{{- $collapsed := strings.HasPrefix $page.RelPermalink $href -}}
{{ if not (hasSuffix $href "/") }}{{ $href = printf "%s/" $href }}{{ end }}
{{- $current := eq $href $page.RelPermalink }}
<li class="mb-1">
<button class="btn btn-toggle d-inline-flex align-items-center rounded border-0 collapsed" data-bs-toggle="collapse" data-bs-target="#sidebar-collapse-{{ $index }}-{{ $level }}" aria-expanded="{{ if $collapsed }}true{{ else }}false{{ end }}">
<div class="text-start flex-fill">{{ $group.title }}</div>
</button>
<div class="d-flex w-100 p-0 sidebar-item-group">
<div class="text-start flex-grow-1 {{ if $current }}fw-bold{{ end }}">
{{ $dest := $href }}
{{ $target := "" }}
{{ if or $current (not $ref) }}
{{ $dest = "" }}
{{ end }}
<a {{ with $dest }} href="{{ . }}"{{ else }}
data-bs-toggle="collapse"
data-bs-target="#sidebar-collapse-{{ $index }}-{{ $level }}"
{{ end }}>{{ $group.title }}</a>
</div>
<button
class="btn btn-toggle-group d-inline-flex align-items-center rounded border-0 collapsed"
data-bs-toggle="collapse"
data-bs-target="#sidebar-collapse-{{ $index }}-{{ $level }}"
aria-expanded="{{ if $collapsed }}true{{ else }}false{{ end }}"
>
</button>
</div>
<div class="collapse {{ if $collapsed }}show{{ end }}" id="sidebar-collapse-{{ $index }}-{{ $level }}">
<ul class="btn-toggle-nav list-unstyled fw-normal {{ if eq $level 0}} pb-1 {{ end }}ps-3">
{{- range $item := $group.pages -}}
@@ -79,9 +101,11 @@
{{ $href = . }}
{{ else }}
{{- $href = partial "utilities/URLJoin.html" (dict "base" $baseURL "path" .) -}}
{{ if not (hasSuffix $href "/") }}{{ $href = printf "%s/" $href }}{{ end }}
{{ end }}
{{ else }}
{{- $href = partial "utilities/URLJoin.html" (dict "base" $baseURL "path" ($title | urlize)) -}}
{{ if not (hasSuffix $href "/") }}{{ $href = printf "%s/" $href }}{{ end }}
{{ end }}
{{- $active := eq (strings.TrimSuffix "/" $page.RelPermalink) (strings.TrimSuffix "/" $href) -}}
@@ -91,7 +115,7 @@
<li>
<ul class="btn-toggle-nav list-unstyled fw-bold pb-1">
<li>
{{ $class := "sidebar-item text-decoration-none rounded" }}
{{ $class := "sidebar-item text-decoration-none rounded w-100" }}
{{ if $active }}{{ $class = printf "%s active" $class }}{{ end }}
{{ $link := partial "assets/link.html" (dict "destination" $href "text" $title "class" $class "page" $page) }}
{{ if $link }}
@@ -104,7 +128,7 @@
</li>
{{ else }}
<li>
{{ $class := "sidebar-item text-decoration-none rounded small" }}
{{ $class := "sidebar-item text-decoration-none rounded small w-100" }}
{{ if $active }}{{ $class = printf "%s active" $class }}{{ end }}
{{ $link := partial "assets/link.html" (dict "destination" $href "text" $title "class" $class "page" $page) }}
{{ if $link }}

View File

@@ -4,42 +4,86 @@
Visit gethinode.com/license for more details.
-->
{{ $page := .page }}
{{ $input := .input }}
{{ $args := .args }}
{{ $sortable := .sortable | default false }}
{{ $paging := .paging | default false }}
{{ $searchable := .searchable | default false }}
{{ $pagingOptionPerPage := .pagingOptionPerPage }}
{{ $pagingOptionPerPageSelect := .pagingOptionPerPageSelect }}
{{- $responsiveVals := slice "table-responsive" "table-responsive-none" "table-responsive-sm" "table-responsive-md" "table-responsive-lg" "table-responsive-xl" "table-responsive-xxl" -}}
{{- $responsive := intersect $args $responsiveVals -}}
{{- $main := complement $responsive $args -}}
{{ define "partials/inline-table.html" }}
{{ $page := .page }}
{{ $input := .input }}
{{ $attributes := .attributes }}
{{ $class := .class }}
{{ $wrap := .wrap }}
{{- if in $responsive "table-responsive-none" -}}
{{- $responsive = "" -}}
{{- else if not $responsive -}}
{{ $responsive = (slice "table-responsive") -}}
{{- end -}}
{{ if $wrap }}{{ $input = printf "%s\n{.table-wrap}" (chomp $input) }}{{ end }}
{{- $input = $input | $page.RenderString }}
{{ $regex := `<table\s*class="(.+?)"` }}
{{ $current := (index (index (findRESubmatch $regex $input) 0) 1) }}
{{ $target := delimit (((split $current " ") | append "table" | append $class) | uniq) " " }}
{{- $class := delimit $main " " -}}
{{ if or $sortable $paging $searchable }}{{ $class = trim (printf "%s data-table" $class) " " }}{{ end }}
{{- $input := $input | $page.RenderString }}
{{ $regex := `<table\s*class="(.+?)"` }}
{{ $current := (index (index (findRESubmatch $regex $input) 0) 1) }}
{{ $target := delimit (((split $current " ") | append "table" | append $class) | uniq) " " }}
{{- $new := printf `<table class="%s" %s` $target (trim $attributes " ") -}}
{{ $input := replaceRE $regex $new $input 1 -}}
{{ return $input }}
{{ end }}
<!-- Initialize arguments -->
{{ $error := false }}
{{ $args := partial "utilities/InitArgs.html" (dict "structure" "table" "args" .) }}
{{ if $args.err }}
{{ partial "utilities/LogErr.html" (dict
"partial" "assets/table.html"
"msg" "Invalid arguments"
"details" $args.errmsg
"file" page.File
)}}
{{ end }}
<!-- Initialize local variables -->
{{ $class := $args.class }}
{{ if or $args.sortable $args.paging $args.searchable }}{{ $class = trim (printf "%s data-table" $class) " " }}{{ end }}
{{ $attributes := "" }}
{{ if $sortable }}{{ $attributes = printf "%s data-table-sortable=true" $attributes }}{{ end }}
{{ if $paging }}
{{ if $args.sortable }}{{ $attributes = printf "%s data-table-sortable=true" $attributes }}{{ end }}
{{ if $args.paging }}
{{ $attributes = printf "%s data-table-paging=true" $attributes }}
{{ $attributes := printf "%s data-table-paging-option-perPage=%s" $attributes $pagingOptionPerPage }}
{{ if (ne $pagingOptionPerPageSelect "") }}{{ $attributes := printf "%s data-table-paging-option-perPageSelect=%d" $attributes $pagingOptionPerPageSelect }}{{ end }}
{{ $attributes = printf "%s data-table-paging-option-perPage=%d" $attributes $args.pagingOptionPerPage }}
{{ if (ne $args.pagingOptionPerPageSelect "") }}
{{ $attributes = printf "%s data-table-paging-option-perPageSelect=%s" $attributes $args.pagingOptionPerPageSelect }}
{{ end }}
{{ end }}
{{ if $searchable }}{{ $attributes = printf "%s data-table-searchable=true" $attributes }}{{ end }}
{{ if $args.searchable }}{{ $attributes = printf "%s data-table-searchable=true" $attributes }}{{ end }}
{{- $new := printf `<table class="%s" %s` $target (trim $attributes " ") -}}
{{ $input := replaceRE $regex $new $input 1 -}}
{{- with $responsive }}<div class="{{ delimit . " " }}">{{ end -}}
{{ $input | safeHTML }}
{{- with $responsive }}</div>{{ end -}}
<!-- Main code -->
{{- $breakpoint := $args.page.Scratch.Get "breakpoint" -}}
{{ $regular := partial "partials/inline-table.html" (dict
"page" $args.page
"input" $args.input
"attributes" $attributes
"class" $class
"wrap" false
) }}
{{ $wrapped := "" }}
{{ if $args.wrap }}
{{ $wrapped = partial "partials/inline-table.html" (dict
"page" $args.page
"input" $args.input
"attributes" $attributes
"class" $class
"wrap" true
) }}
{{ end }}
{{ if not $error }}
{{ if eq $args.breakpoint "none" }}
{{ $regular | safeHTML }}
{{ with $wrapped }}{{ . | safeHTML }}{{ end }}
{{ else }}
<div class="table-responsive{{- with $args.breakpoint }}-{{ . }}{{ end }} {{ if $wrapped }}d-none d-{{ $breakpoint.current }}-block{{ end }}">
{{ $regular | safeHTML }}
</div>
{{ with $wrapped }}
<div class="table-responsive{{- with $args.breakpoint }}-{{ . }}{{ end }} d-{{ $breakpoint.current }}-none">
{{ . | safeHTML }}
</div>
{{ end }}
{{ end }}
{{ end }}

View File

@@ -0,0 +1,41 @@
<!--
Copyright © 2022 - 2025 The Hinode Team / Mark Dumay. All rights reserved.
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
Visit gethinode.com/license for more details.
-->
<!-- TODO: merge with version.html -->
{{- define "partials/assets/version/mod.html" -}}
{{- $file := "go.mod" -}}
{{- $regex := printf `github.com/gethinode/hinode v.*(\r\n|\r|\n)` -}}
{{- $match := findRE $regex (readFile $file) -}}
{{- $result := "" -}}
{{- if gt (len $match) 0 -}}
{{- $result = (index (split (index $match 0) " ") 1) -}}
{{- $result = strings.TrimPrefix "v" $result -}}
{{- end -}}
{{- return $result -}}
{{- end -}}
{{- define "partials/assets/version/package.html" -}}
{{- $file := "data/package-hinode.json" -}}
{{ $data := dict }}
{{ $version := "" }}
{{ with resources.Get $file }}
{{ with . | transform.Unmarshal }}
{{ $data = . }}
{{ $version = index $data "version" }}
{{ end }}
{{ end }}
{{ return $version }}
{{- end -}}
{{- $version := partial "assets/version/mod.html" . -}}
{{ if not $version }}
{{- $version = partial "assets/version/package.html" . -}}
{{ end }}
{{- print $version -}}

View File

@@ -1,5 +1,5 @@
{{ define "head" }}
{{- $version := strings.TrimPrefix "v" (partialCached "assets/version.html" .) -}}
{{- $version := strings.TrimSpace (partial "assets/theme-version.html" .) -}}
{{ $desc := .Page.Description | default (.Page.Content | safeHTML | truncate 150) -}}
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
@@ -7,7 +7,6 @@
<meta name="theme" content="{{ printf "Hinode %s" $version }}">
{{ partialCached "head/stylesheet-core.html" . -}}
{{ $config := page.Scratch.Get "modules" }}
{{ if not $config }}
{{ errorf "partial [head/head.html] - Cannot initialize module configuration" }}

View File

@@ -3,9 +3,9 @@
<meta property="og:type" content="{{ if .IsPage }}article{{ else }}website{{ end }}">
<meta property="og:title" content="{{ $.Scratch.Get "title" }}">
<meta property="og:description" content="{{ $.Scratch.Get "description" }}">
{{ if $.Scratch.Get "paginator" -}}
{{ $paginator := .Paginate (where .Site.RegularPages.ByDate.Reverse "Section" "blog" ) -}}
<meta property="og:url" content="{{ .Paginator.URL | absURL }}">
{{ $paginator := $.Store.Get "paginator" }}
{{ if $paginator }}
<meta property="og:url" content="{{ $paginator.URL | absURL }}">
{{ else -}}
<meta property="og:url" content="{{ .Permalink }}">
{{ end -}}

View File

@@ -63,13 +63,15 @@
<meta name="description" content="{{ $.Scratch.Get "description" }}">
{{ if $.Scratch.Get "paginator" }}
<link rel="canonical" href="{{ .Paginator.URL | absURL }}">
{{ if .Paginator.HasPrev -}}
<link rel="prev" href="{{ .Paginator.Prev.URL | absURL }}">
{{ $paginator := $.Store.Get "paginator" }}
{{ if $paginator }}
<link rel="canonical" href="{{ $paginator.URL | absURL }}">
{{ if $paginator.HasPrev -}}
<link rel="prev" href="{{ $paginator.Prev.URL | absURL }}">
{{ end -}}
{{ if .Paginator.HasNext -}}
<link rel="next" href="{{ .Paginator.Next.URL | absURL }}">
{{ if $paginator.HasNext -}}
<link rel="next" href="{{ $paginator.Next.URL | absURL }}">
{{ end -}}
{{ end -}}

View File

@@ -81,5 +81,5 @@
{{ end }}
{{ end }}
{{ partial "assets/table.html" (dict "page" .Page "input" $table "args" slice) }}
{{ partial "assets/table.html" (dict "page" .Page "input" $table "wrap" true) }}
{{ end }}

View File

@@ -5,63 +5,34 @@
-->
{{ $error := false }}
<!-- Validate arguments -->
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "table" "args" .Params) }}
{{ errorf "Invalid arguments: %s" .Position -}}
{{ $error = true }}
{{ end }}
{{ $args := dict }}
{{ $breakpoint := "" }}
<!-- Initialize arguments -->
{{ $breakpoint := "" }}
{{ $class := "" }}
{{ $sortable := false }}
{{ $paging := false }}
{{ $searchable := false }}
{{ $pagingOptionPerPage := 10 }}
{{ $pagingOptionPerPageSelect := "" }}
{{- if .IsNamedParams -}}
{{ $breakpoint = .Get "breakpoint" }}
{{ $class = .Get "class" | default "" }}
{{ if isset .Params "sortable" }}{{ $sortable = partial "utilities/CastBool.html" (.Get "sortable") }}{{ end }}
{{ if isset .Params "paging" }}{{ $paging = partial "utilities/CastBool.html" (.Get "paging") }}{{ end }}
{{ if isset .Params "searchable" }}{{ $searchable = partial "utilities/CastBool.html" (.Get "searchable") }}{{ end }}
{{ if isset .Params "pagingOptionPerPage" }}{{ $pagingOptionPerPage = (.Get "pagingOptionPerPage") }}{{ end }}
{{ if isset .Params "pagingOptionPerPageSelect" }}{{ $pagingOptionPerPageSelect = (.Get "OptionPerPageSelect") }}{{ end }}
{{ $args = partial "utilities/InitArgs.html" (dict "structure" "table" "args" .Params "group" "shortcode") }}
{{ if $args.err }}
{{ partial "utilities/LogErr.html" (dict
"partial" "shortcodes/table.html"
"msg" "Invalid arguments"
"details" $args.errmsg
"file" page.File
)}}
{{ end }}
{{ else }}
{{ $breakpoint = .Get 0 }}
{{ end }}
<!-- Main code -->
{{ if or $sortable $paging $searchable }}{{ $class = trim (printf "%s data-table" $class) " " }}{{ end }}
{{- $input := .Inner | .Page.RenderString }}
{{ $regex := `<table\s*class="(.+?)"` }}
{{ $current := (index (index (findRESubmatch $regex $input) 0) 1) }}
{{ $target := delimit (((split $current " ") | append "table" | append $class) | uniq) " " }}
{{ $attributes := "" }}
{{ if $sortable }}{{ $attributes = printf "%s data-table-sortable=true" $attributes }}{{ end }}
{{ if $paging }}
{{ $attributes = printf "%s data-table-paging=true" $attributes }}
{{ $attributes = printf "%s data-table-paging-option-perPage=%d" $attributes $pagingOptionPerPage }}
{{ if (ne $pagingOptionPerPageSelect "") }}
{{ $attributes = printf "%s data-table-paging-option-perPageSelect=%s" $attributes $pagingOptionPerPageSelect }}
{{ end }}
{{ end }}
{{ if $searchable }}{{ $attributes = printf "%s data-table-searchable=true" $attributes }}{{ end }}
{{- $new := printf `<table class="%s" %s` $target (trim $attributes " ") -}}
{{ $input := replaceRE $regex $new $input 1 -}}
{{ if not $error }}
{{ if eq $breakpoint "none" }}
{{ $input | safeHTML }}
{{ else }}
<div class="table-responsive{{- with $breakpoint }}-{{ . }}{{ end -}}">
{{ $input | safeHTML }}
</div>
{{ end }}
{{ end }}
{{ partial "assets/table.html" (dict
"page" .Page
"input" .Inner
"breakpoint" (or $breakpoint $args.breakpoint)
"class" $args.class
"sortable" $args.sortable
"paging" $args.paging
"pagingOptionPerPage" $args.pagingOptionPerPage
"pagingOptionPageSelect" $args.pagingOptionPageSelect
"searchable" $args.searchable
"wrap" $args.wrap
) }}

189
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{
"name": "@gethinode/hinode",
"version": "0.27.20",
"version": "0.28.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@gethinode/hinode",
"version": "0.27.20",
"version": "0.28.0",
"license": "MIT",
"dependencies": {
"@fullhuman/postcss-purgecss": "^7.0.2",
@@ -19,7 +19,7 @@
"devDependencies": {
"@gethinode/netlify-plugin-dartsass": "^0.3.0",
"cpy-cli": "^5.0.0",
"eslint": "^9.17.0",
"eslint": "^9.18.0",
"markdownlint-cli2": "^0.17.1",
"neostandard": "^0.12.0",
"netlify-plugin-hugo-cache-resources": "^0.2.1",
@@ -28,7 +28,7 @@
"replace-in-files-cli": "^3.0.0",
"rimraf": "^6.0.1",
"shx": "^0.3.4",
"stylelint": "^16.12.0",
"stylelint": "^16.13.2",
"stylelint-config-standard-scss": "^14.0.0"
},
"optionalDependencies": {
@@ -343,10 +343,13 @@
}
},
"node_modules/@eslint/core": {
"version": "0.9.0",
"resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.0.tgz",
"integrity": "sha512-7ATR9F0e4W85D/0w7cU0SNj7qkAexMG+bAHEZOjo9akvGuhHE2m7umzWzfnpa0XAg5Kxc1BWmtPMV67jJ+9VUg==",
"version": "0.10.0",
"resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.10.0.tgz",
"integrity": "sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==",
"dev": true,
"dependencies": {
"@types/json-schema": "^7.0.15"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
}
@@ -375,9 +378,9 @@
}
},
"node_modules/@eslint/js": {
"version": "9.17.0",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.17.0.tgz",
"integrity": "sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==",
"version": "9.18.0",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.18.0.tgz",
"integrity": "sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==",
"dev": true,
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -393,11 +396,12 @@
}
},
"node_modules/@eslint/plugin-kit": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.3.tgz",
"integrity": "sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==",
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.5.tgz",
"integrity": "sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==",
"dev": true,
"dependencies": {
"@eslint/core": "^0.10.0",
"levn": "^0.4.1"
},
"engines": {
@@ -408,6 +412,7 @@
"version": "7.0.2",
"resolved": "https://registry.npmjs.org/@fullhuman/postcss-purgecss/-/postcss-purgecss-7.0.2.tgz",
"integrity": "sha512-U4zAXNaVztbDxO9EdcLp51F3UxxYsb/7DN89rFxFJhfk2Wua2pvw2Kf3HdspbPhW/wpHjSjsxWYoIlbTgRSjbQ==",
"license": "MIT",
"dependencies": {
"purgecss": "^7.0.2"
},
@@ -581,6 +586,39 @@
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
"node_modules/@keyv/serialize": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.0.2.tgz",
"integrity": "sha512-+E/LyaAeuABniD/RvUezWVXKpeuvwLEA9//nE9952zBaOdBd2mQ3pPoM8cUe2X6IcMByfuSLzmYqnYshG60+HQ==",
"dev": true,
"dependencies": {
"buffer": "^6.0.3"
}
},
"node_modules/@keyv/serialize/node_modules/buffer": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
"integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
"dev": true,
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/feross"
},
{
"type": "patreon",
"url": "https://www.patreon.com/feross"
},
{
"type": "consulting",
"url": "https://feross.org/support"
}
],
"dependencies": {
"base64-js": "^1.3.1",
"ieee754": "^1.2.1"
}
},
"node_modules/@nodelib/fs.scandir": {
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@@ -1600,6 +1638,16 @@
"node": "*"
}
},
"node_modules/cacheable": {
"version": "1.8.7",
"resolved": "https://registry.npmjs.org/cacheable/-/cacheable-1.8.7.tgz",
"integrity": "sha512-AbfG7dAuYNjYxFUtL1lAqmlWdxczCJ47w7cFjhGcnGnUdwSo6VgmSojfoW3tUI12HUkgTJ5kqj78yyq6TsFtlg==",
"dev": true,
"dependencies": {
"hookified": "^1.6.0",
"keyv": "^5.2.3"
}
},
"node_modules/cacheable-lookup": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz",
@@ -1625,6 +1673,15 @@
"node": ">=14.16"
}
},
"node_modules/cacheable/node_modules/keyv": {
"version": "5.2.3",
"resolved": "https://registry.npmjs.org/keyv/-/keyv-5.2.3.tgz",
"integrity": "sha512-AGKecUfzrowabUv0bH1RIR5Vf7w+l4S3xtQAypKaUpTdIR1EbrAcTxHCrpo9Q+IWeUlFE2palRtgIQcgm+PQJw==",
"dev": true,
"dependencies": {
"@keyv/serialize": "^1.0.2"
}
},
"node_modules/call-bind": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz",
@@ -2735,18 +2792,18 @@
}
},
"node_modules/eslint": {
"version": "9.17.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-9.17.0.tgz",
"integrity": "sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA==",
"version": "9.18.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-9.18.0.tgz",
"integrity": "sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA==",
"dev": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.12.1",
"@eslint/config-array": "^0.19.0",
"@eslint/core": "^0.9.0",
"@eslint/core": "^0.10.0",
"@eslint/eslintrc": "^3.2.0",
"@eslint/js": "9.17.0",
"@eslint/plugin-kit": "^0.2.3",
"@eslint/js": "9.18.0",
"@eslint/plugin-kit": "^0.2.5",
"@humanfs/node": "^0.16.6",
"@humanwhocodes/module-importer": "^1.0.1",
"@humanwhocodes/retry": "^0.4.1",
@@ -3256,16 +3313,16 @@
"integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ=="
},
"node_modules/fast-glob": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
"integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
"version": "3.3.3",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
"integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
"dev": true,
"dependencies": {
"@nodelib/fs.stat": "^2.0.2",
"@nodelib/fs.walk": "^1.2.3",
"glob-parent": "^5.1.2",
"merge2": "^1.3.0",
"micromatch": "^4.0.4"
"micromatch": "^4.0.8"
},
"engines": {
"node": ">=8.6.0"
@@ -3439,9 +3496,9 @@
}
},
"node_modules/flatted": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz",
"integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==",
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz",
"integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==",
"dev": true
},
"node_modules/for-each": {
@@ -4073,6 +4130,12 @@
"node": ">= 0.4"
}
},
"node_modules/hookified": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/hookified/-/hookified-1.6.0.tgz",
"integrity": "sha512-se7cpwTA+iA/eY548Bu03JJqBiEZAqU2jnyKdj5B5qurtBg64CZGHTgqCv4Yh7NWu6FGI09W61MCq+NoPj9GXA==",
"dev": true
},
"node_modules/hosted-git-info": {
"version": "2.8.9",
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
@@ -7219,6 +7282,7 @@
"version": "7.0.2",
"resolved": "https://registry.npmjs.org/purgecss/-/purgecss-7.0.2.tgz",
"integrity": "sha512-4Ku8KoxNhOWi9X1XJ73XY5fv+I+hhTRedKpGs/2gaBKU8ijUiIKF/uyyIyh7Wo713bELSICF5/NswjcuOqYouQ==",
"license": "MIT",
"dependencies": {
"commander": "^12.1.0",
"glob": "^11.0.0",
@@ -7243,6 +7307,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
"license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0"
}
@@ -7251,14 +7316,16 @@
"version": "12.1.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz",
"integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==",
"license": "MIT",
"engines": {
"node": ">=18"
}
},
"node_modules/purgecss/node_modules/glob": {
"version": "11.0.0",
"resolved": "https://registry.npmjs.org/glob/-/glob-11.0.0.tgz",
"integrity": "sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==",
"version": "11.0.1",
"resolved": "https://registry.npmjs.org/glob/-/glob-11.0.1.tgz",
"integrity": "sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==",
"license": "ISC",
"dependencies": {
"foreground-child": "^3.1.0",
"jackspeak": "^4.0.1",
@@ -7281,6 +7348,7 @@
"version": "10.0.1",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz",
"integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==",
"license": "ISC",
"dependencies": {
"brace-expansion": "^2.0.1"
},
@@ -8290,9 +8358,9 @@
}
},
"node_modules/stylelint": {
"version": "16.12.0",
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.12.0.tgz",
"integrity": "sha512-F8zZ3L/rBpuoBZRvI4JVT20ZanPLXfQLzMOZg1tzPflRVh9mKpOZ8qcSIhh1my3FjAjZWG4T2POwGnmn6a6hbg==",
"version": "16.13.2",
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.13.2.tgz",
"integrity": "sha512-wDlgh0mRO9RtSa3TdidqHd0nOG8MmUyVKl+dxA6C1j8aZRzpNeEgdhFmU5y4sZx4Fc6r46p0fI7p1vR5O2DZqA==",
"dev": true,
"funding": [
{
@@ -8314,16 +8382,16 @@
"colord": "^2.9.3",
"cosmiconfig": "^9.0.0",
"css-functions-list": "^3.2.3",
"css-tree": "^3.0.1",
"css-tree": "^3.1.0",
"debug": "^4.3.7",
"fast-glob": "^3.3.2",
"fast-glob": "^3.3.3",
"fastest-levenshtein": "^1.0.16",
"file-entry-cache": "^9.1.0",
"file-entry-cache": "^10.0.5",
"global-modules": "^2.0.0",
"globby": "^11.1.0",
"globjoin": "^0.1.4",
"html-tags": "^3.3.1",
"ignore": "^6.0.2",
"ignore": "^7.0.1",
"imurmurhash": "^0.1.4",
"is-plain-object": "^5.0.0",
"known-css-properties": "^0.35.0",
@@ -8551,13 +8619,12 @@
"dev": true
},
"node_modules/stylelint/node_modules/css-tree": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.0.1.tgz",
"integrity": "sha512-8Fxxv+tGhORlshCdCwnNJytvlvq46sOLSYEx2ZIGurahWvMucSRnyjPA3AmrMq4VPRYbHVpWj5VkiVasrM2H4Q==",
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz",
"integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==",
"dev": true,
"license": "MIT",
"dependencies": {
"mdn-data": "2.12.1",
"mdn-data": "2.12.2",
"source-map-js": "^1.0.1"
},
"engines": {
@@ -8565,28 +8632,23 @@
}
},
"node_modules/stylelint/node_modules/file-entry-cache": {
"version": "9.1.0",
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.1.0.tgz",
"integrity": "sha512-/pqPFG+FdxWQj+/WSuzXSDaNzxgTLr/OrR1QuqfEZzDakpdYE70PwUxL7BPUa8hpjbvY1+qvCl8k+8Tq34xJgg==",
"version": "10.0.5",
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-10.0.5.tgz",
"integrity": "sha512-umpQsJrBNsdMDgreSryMEXvJh66XeLtZUwA8Gj7rHGearGufUFv6rB/bcXRFsiGWw/VeSUgUofF4Rf2UKEOrTA==",
"dev": true,
"dependencies": {
"flat-cache": "^5.0.0"
},
"engines": {
"node": ">=18"
"flat-cache": "^6.1.5"
}
},
"node_modules/stylelint/node_modules/flat-cache": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-5.0.0.tgz",
"integrity": "sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ==",
"version": "6.1.5",
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.5.tgz",
"integrity": "sha512-QR+2kN38f8nMfiIQ1LHYjuDEmZNZVjxuxY+HufbS3BW0EX01Q5OnH7iduOYRutmgiXb797HAKcXUeXrvRjjgSQ==",
"dev": true,
"dependencies": {
"flatted": "^3.3.1",
"keyv": "^4.5.4"
},
"engines": {
"node": ">=18"
"cacheable": "^1.8.7",
"flatted": "^3.3.2",
"hookified": "^1.6.0"
}
},
"node_modules/stylelint/node_modules/globby": {
@@ -8619,20 +8681,19 @@
}
},
"node_modules/stylelint/node_modules/ignore": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-6.0.2.tgz",
"integrity": "sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A==",
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.3.tgz",
"integrity": "sha512-bAH5jbK/F3T3Jls4I0SO1hmPR0dKU0a7+SY6n1yzRtG54FLO8d6w/nxLFX2Nb7dBu6cCWXPaAME6cYqFUMmuCA==",
"dev": true,
"engines": {
"node": ">= 4"
}
},
"node_modules/stylelint/node_modules/mdn-data": {
"version": "2.12.1",
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.1.tgz",
"integrity": "sha512-rsfnCbOHjqrhWxwt5/wtSLzpoKTzW7OXdT5lLOIH1OTYhWu9rRJveGq0sKvDZODABH7RX+uoR+DYcpFnq4Tf6Q==",
"dev": true,
"license": "CC0-1.0"
"version": "2.12.2",
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz",
"integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==",
"dev": true
},
"node_modules/stylelint/node_modules/postcss-selector-parser": {
"version": "7.0.0",

View File

@@ -1,6 +1,6 @@
{
"name": "@gethinode/hinode",
"version": "0.27.20",
"version": "0.28.0",
"description": "Hinode is a clean documentation and blog theme for Hugo, an open-source static site generator",
"keywords": [
"hugo",
@@ -79,7 +79,7 @@
"devDependencies": {
"@gethinode/netlify-plugin-dartsass": "^0.3.0",
"cpy-cli": "^5.0.0",
"eslint": "^9.17.0",
"eslint": "^9.18.0",
"markdownlint-cli2": "^0.17.1",
"neostandard": "^0.12.0",
"netlify-plugin-hugo-cache-resources": "^0.2.1",
@@ -88,7 +88,7 @@
"replace-in-files-cli": "^3.0.0",
"rimraf": "^6.0.1",
"shx": "^0.3.4",
"stylelint": "^16.12.0",
"stylelint": "^16.13.2",
"stylelint-config-standard-scss": "^14.0.0"
},
"optionalDependencies": {