mirror of
https://github.com/gethinode/hinode.git
synced 2025-10-07 18:14:28 +00:00
Compare commits
44 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
d1bedea219 | ||
![]() |
e21815d4d2 | ||
![]() |
8d38e6b8c2 | ||
![]() |
974b0db6ee | ||
![]() |
1aa0243bb5 | ||
![]() |
bff00ecca6 | ||
![]() |
fc436a1398 | ||
![]() |
60b06880f7 | ||
![]() |
3e986fa135 | ||
![]() |
3d7c877cec | ||
![]() |
f21a7bc0da | ||
![]() |
a4057ad498 | ||
![]() |
09d3294867 | ||
![]() |
7b167e32c4 | ||
![]() |
941698cc15 | ||
![]() |
1ec7d7477b | ||
![]() |
9ef702ef06 | ||
![]() |
5e41fddef3 | ||
![]() |
a620900c18 | ||
![]() |
cc25fe311d | ||
![]() |
c057b11094 | ||
![]() |
df6fb8f0ff | ||
![]() |
a6c3de6a7d | ||
![]() |
efb9c56b55 | ||
![]() |
7e3301d277 | ||
![]() |
068df86fd8 | ||
![]() |
4f57919a96 | ||
![]() |
21f90455d4 | ||
![]() |
50499a415a | ||
![]() |
e75c8cf40f | ||
![]() |
42529594b0 | ||
![]() |
73afeb13bd | ||
![]() |
23ece830e2 | ||
![]() |
41f5dbaea1 | ||
![]() |
5e368f2726 | ||
![]() |
2db3365115 | ||
![]() |
bf2235a96b | ||
![]() |
2ab8ee674f | ||
![]() |
e52d14e21a | ||
![]() |
46101e174e | ||
![]() |
d28b51aa63 | ||
![]() |
dd80ee2bfe | ||
![]() |
2e8b087c48 | ||
![]() |
03592cba67 |
@@ -11,6 +11,10 @@
|
|||||||
padding-right: 1rem;
|
padding-right: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.table-border-bottom-wrap {
|
||||||
|
border-bottom-style: none !important
|
||||||
|
}
|
||||||
|
|
||||||
@if $enable-dark-mode {
|
@if $enable-dark-mode {
|
||||||
@include color-mode(dark) {
|
@include color-mode(dark) {
|
||||||
.table-striped, .table-striped-columns {
|
.table-striped, .table-striped-columns {
|
||||||
|
@@ -75,6 +75,35 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
a.toc-item {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.toc-level-1 {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.toc-level-2 {
|
||||||
|
margin-left: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.toc-level-3 {
|
||||||
|
margin-left: 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.toc-level-4 {
|
||||||
|
margin-left: 3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.toc-level-5 {
|
||||||
|
margin-left: 4em;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.toc-level-6 {
|
||||||
|
margin-left: 5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@if $enable-dark-mode {
|
@if $enable-dark-mode {
|
||||||
[data-bs-theme="dark"] {
|
[data-bs-theme="dark"] {
|
||||||
.toc-button {
|
.toc-button {
|
||||||
|
@@ -116,7 +116,7 @@ home = ["HTML", "RSS", "REDIR", "netlify", "server"]
|
|||||||
[module]
|
[module]
|
||||||
[module.hugoVersion]
|
[module.hugoVersion]
|
||||||
extended = true
|
extended = true
|
||||||
min = "0.136.3"
|
min = "0.141.0"
|
||||||
[[module.mounts]]
|
[[module.mounts]]
|
||||||
source = "archetypes"
|
source = "archetypes"
|
||||||
target = "archetypes"
|
target = "archetypes"
|
||||||
|
@@ -10,6 +10,7 @@
|
|||||||
footerBelowFold = false
|
footerBelowFold = false
|
||||||
loading = "lazy"
|
loading = "lazy"
|
||||||
breakpoint = "md"
|
breakpoint = "md"
|
||||||
|
titleCase = false
|
||||||
[main.internalLinks]
|
[main.internalLinks]
|
||||||
validate = true
|
validate = true
|
||||||
pretty = false
|
pretty = false
|
||||||
@@ -41,6 +42,12 @@
|
|||||||
host = "youtube"
|
host = "youtube"
|
||||||
# toml-docs-end videos
|
# toml-docs-end videos
|
||||||
|
|
||||||
|
[dam]
|
||||||
|
videoCodecs = [
|
||||||
|
"webm/vp9",
|
||||||
|
"mp4/h265",
|
||||||
|
"mp4"
|
||||||
|
]
|
||||||
|
|
||||||
# toml-docs-start debugging
|
# toml-docs-start debugging
|
||||||
[debugging]
|
[debugging]
|
||||||
|
@@ -7,17 +7,17 @@
|
|||||||
Access-Control-Allow-Origin = '*'
|
Access-Control-Allow-Origin = '*'
|
||||||
Content-Security-Policy = """
|
Content-Security-Policy = """
|
||||||
base-uri 'self'; \
|
base-uri 'self'; \
|
||||||
connect-src 'self' *.google-analytics.com *.analytics.google.com *.googletagmanager.com; \
|
connect-src 'self' *.analytics.google.com *.google.com *.google-analytics.com *.googletagmanager.com; \
|
||||||
default-src 'none'; \
|
default-src 'none'; \
|
||||||
font-src 'self' fonts.gstatic.com; \
|
font-src 'self' fonts.gstatic.com data:; \
|
||||||
form-action 'self'; \
|
form-action 'self'; \
|
||||||
frame-src player.cloudinary.com www.youtube-nocookie.com www.youtube.com player.vimeo.com; \
|
frame-src *.googletagmanager.com player.cloudinary.com www.youtube-nocookie.com www.youtube.com player.vimeo.com; \
|
||||||
img-src 'self' *.google-analytics.com *.googletagmanager.com data: *.imgix.net *.imagekit.io *.cloudinary.com i.ytimg.com tile.openstreetmap.org i.vimeocdn.com; \
|
img-src 'self' *.google-analytics.com *.googletagmanager.com googletagmanager.com ssl.gstatic.com www.gstatic.com data: *.imgix.net *.imagekit.io *.cloudinary.com i.ytimg.com tile.openstreetmap.org i.vimeocdn.com; \
|
||||||
manifest-src 'self'; \
|
manifest-src 'self'; \
|
||||||
media-src 'self'; \
|
media-src 'self'; \
|
||||||
object-src 'none'; \
|
object-src 'none'; \
|
||||||
script-src 'self' *.google-analytics.com *.googletagmanager.com player.vimeo.com; \
|
script-src 'self' *.google-analytics.com *.googletagmanager.com *.analytics.google.com googletagmanager.com tagmanager.google.com player.vimeo.com; \
|
||||||
style-src 'self' www.youtube.com; \
|
style-src 'self' googletagmanager.com tagmanager.google.com fonts.googleapis.com www.youtube.com; \
|
||||||
"""
|
"""
|
||||||
Permissions-Policy = 'geolocation=(), midi=(), sync-xhr=(), microphone=(), camera=(), magnetometer=(), gyroscope=(), fullscreen=(), payment=() '
|
Permissions-Policy = 'geolocation=(), midi=(), sync-xhr=(), microphone=(), camera=(), magnetometer=(), gyroscope=(), fullscreen=(), payment=() '
|
||||||
Referrer-Policy = 'strict-origin'
|
Referrer-Policy = 'strict-origin'
|
||||||
|
@@ -3,6 +3,20 @@ comment: >-
|
|||||||
improve their layout on smaller screens. To features `sortable`, `paging`,
|
improve their layout on smaller screens. To features `sortable`, `paging`,
|
||||||
and `searchable` require the module `simple-datatables`.
|
and `searchable` require the module `simple-datatables`.
|
||||||
arguments:
|
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:
|
breakpoint:
|
||||||
type: select
|
type: select
|
||||||
optional: true
|
optional: true
|
||||||
@@ -55,6 +69,13 @@ arguments:
|
|||||||
optional: true
|
optional: true
|
||||||
comment: Toggle the ability to search the dataset.
|
comment: Toggle the ability to search the dataset.
|
||||||
release: v0.24.13
|
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:
|
body:
|
||||||
type: string
|
type: string
|
||||||
optional: false
|
optional: false
|
||||||
|
@@ -79,12 +79,10 @@ arguments:
|
|||||||
- 16x9
|
- 16x9
|
||||||
- 21x9
|
- 21x9
|
||||||
release: v0.26.5
|
release: v0.26.5
|
||||||
portrait:
|
options:
|
||||||
type: bool
|
type: string
|
||||||
optional: true
|
optional: true
|
||||||
default: false
|
release: v0.28.2
|
||||||
comment: >-
|
comment: >-
|
||||||
Flag to adjust the ratio from landscape to portrait. The image itself is
|
Optional query parameters to append to video asset's url. The query string
|
||||||
not rotated, only the crop area is adjusted. Not applicable to vector
|
is prepended with a `?` symbol. Only applicable to Cloudinary.
|
||||||
graphics.
|
|
||||||
release: v0.26.5
|
|
2
exampleSite/config/_default/params.fr.toml
Normal file
2
exampleSite/config/_default/params.fr.toml
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
[main]
|
||||||
|
titleCase = false
|
2
exampleSite/config/_default/params.nl.toml
Normal file
2
exampleSite/config/_default/params.nl.toml
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
[main]
|
||||||
|
titleCase = false
|
@@ -8,6 +8,7 @@
|
|||||||
footerBelowFold = false
|
footerBelowFold = false
|
||||||
loading = "lazy"
|
loading = "lazy"
|
||||||
breakpoint = "md"
|
breakpoint = "md"
|
||||||
|
titleCase = true
|
||||||
[main.internalLinks]
|
[main.internalLinks]
|
||||||
validate = true
|
validate = true
|
||||||
pretty = true
|
pretty = true
|
||||||
@@ -63,6 +64,11 @@
|
|||||||
|
|
||||||
[dam]
|
[dam]
|
||||||
dimensions = "dimensions.yml"
|
dimensions = "dimensions.yml"
|
||||||
|
videoCodecs = [
|
||||||
|
"webm/vp9",
|
||||||
|
"mp4/h265",
|
||||||
|
"mp4"
|
||||||
|
]
|
||||||
|
|
||||||
[[dam.providers]]
|
[[dam.providers]]
|
||||||
name = "Cloudinary"
|
name = "Cloudinary"
|
||||||
|
@@ -14,7 +14,6 @@
|
|||||||
"footer",
|
"footer",
|
||||||
"form",
|
"form",
|
||||||
"h2",
|
"h2",
|
||||||
"h3",
|
|
||||||
"head",
|
"head",
|
||||||
"hr",
|
"hr",
|
||||||
"html",
|
"html",
|
||||||
@@ -65,6 +64,7 @@
|
|||||||
"use"
|
"use"
|
||||||
],
|
],
|
||||||
"classes": [
|
"classes": [
|
||||||
|
"%!s(<nil>)",
|
||||||
"accordion",
|
"accordion",
|
||||||
"accordion-body",
|
"accordion-body",
|
||||||
"accordion-button",
|
"accordion-button",
|
||||||
@@ -251,6 +251,7 @@
|
|||||||
"font-monospace",
|
"font-monospace",
|
||||||
"footer",
|
"footer",
|
||||||
"form-control",
|
"form-control",
|
||||||
|
"fs-2",
|
||||||
"fs-3",
|
"fs-3",
|
||||||
"fs-5",
|
"fs-5",
|
||||||
"fs-6",
|
"fs-6",
|
||||||
@@ -356,7 +357,6 @@
|
|||||||
"p-2",
|
"p-2",
|
||||||
"p-3",
|
"p-3",
|
||||||
"p-4",
|
"p-4",
|
||||||
"pb-2",
|
|
||||||
"pb-3",
|
"pb-3",
|
||||||
"pb-4",
|
"pb-4",
|
||||||
"pb-5",
|
"pb-5",
|
||||||
@@ -372,6 +372,7 @@
|
|||||||
"ps-1",
|
"ps-1",
|
||||||
"ps-3",
|
"ps-3",
|
||||||
"pt-1",
|
"pt-1",
|
||||||
|
"pt-4",
|
||||||
"pt-5",
|
"pt-5",
|
||||||
"pt-md-3",
|
"pt-md-3",
|
||||||
"ptw-3",
|
"ptw-3",
|
||||||
@@ -468,6 +469,8 @@
|
|||||||
"toast-header",
|
"toast-header",
|
||||||
"toc",
|
"toc",
|
||||||
"toc-button",
|
"toc-button",
|
||||||
|
"toc-item",
|
||||||
|
"toc-level-1",
|
||||||
"toc-panel",
|
"toc-panel",
|
||||||
"toc-sidebar",
|
"toc-sidebar",
|
||||||
"toggler-icon",
|
"toggler-icon",
|
||||||
@@ -484,7 +487,6 @@
|
|||||||
"w-50"
|
"w-50"
|
||||||
],
|
],
|
||||||
"ids": [
|
"ids": [
|
||||||
"TableOfContents",
|
|
||||||
"abbr",
|
"abbr",
|
||||||
"accordion",
|
"accordion",
|
||||||
"accordion-0",
|
"accordion-0",
|
||||||
|
6
go.mod
6
go.mod
@@ -6,14 +6,14 @@ require (
|
|||||||
github.com/airbnb/lottie-web v5.12.2+incompatible // indirect
|
github.com/airbnb/lottie-web v5.12.2+incompatible // indirect
|
||||||
github.com/gethinode/mod-bootstrap v1.3.2 // indirect
|
github.com/gethinode/mod-bootstrap v1.3.2 // indirect
|
||||||
github.com/gethinode/mod-csp v1.0.7 // indirect
|
github.com/gethinode/mod-csp v1.0.7 // indirect
|
||||||
github.com/gethinode/mod-flexsearch/v2 v2.0.3 // indirect
|
github.com/gethinode/mod-flexsearch/v2 v2.1.0 // indirect
|
||||||
github.com/gethinode/mod-fontawesome v1.10.1 // indirect
|
github.com/gethinode/mod-fontawesome v1.10.1 // indirect
|
||||||
github.com/gethinode/mod-google-analytics v1.3.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-katex v1.1.3 // indirect
|
||||||
github.com/gethinode/mod-leaflet v1.2.1 // indirect
|
github.com/gethinode/mod-leaflet v1.2.1 // indirect
|
||||||
github.com/gethinode/mod-lottie v1.5.13 // indirect
|
github.com/gethinode/mod-lottie v1.5.13 // indirect
|
||||||
github.com/gethinode/mod-simple-datatables v1.1.6 // indirect
|
github.com/gethinode/mod-simple-datatables v1.1.7 // indirect
|
||||||
github.com/gethinode/mod-utils/v2 v2.8.6 // indirect
|
github.com/gethinode/mod-utils/v2 v2.10.0 // indirect
|
||||||
github.com/nextapps-de/flexsearch v0.0.0-20240501124520-961c3ae84a87 // indirect
|
github.com/nextapps-de/flexsearch v0.0.0-20240501124520-961c3ae84a87 // indirect
|
||||||
github.com/twbs/bootstrap v5.3.3+incompatible // indirect
|
github.com/twbs/bootstrap v5.3.3+incompatible // indirect
|
||||||
)
|
)
|
||||||
|
8
go.sum
8
go.sum
@@ -96,6 +96,8 @@ github.com/gethinode/mod-flexsearch/v2 v2.0.2 h1:5FkLbjORwKvK544H/yaAltyIB7eptRP
|
|||||||
github.com/gethinode/mod-flexsearch/v2 v2.0.2/go.mod h1:d7MMkVlz0l6cEk76e0mkveEsDxGfu5Sv+HUIhoGguhE=
|
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 h1:lC4UN9DPYyj3lsRm86Rt+kKx2DmAS10dOxbM/1H8fVw=
|
||||||
github.com/gethinode/mod-flexsearch/v2 v2.0.3/go.mod h1:d7MMkVlz0l6cEk76e0mkveEsDxGfu5Sv+HUIhoGguhE=
|
github.com/gethinode/mod-flexsearch/v2 v2.0.3/go.mod h1:d7MMkVlz0l6cEk76e0mkveEsDxGfu5Sv+HUIhoGguhE=
|
||||||
|
github.com/gethinode/mod-flexsearch/v2 v2.1.0 h1:NzCruYAKQBMM1DwFFoH7/tzqmItR6sKByMHZWRaRiRk=
|
||||||
|
github.com/gethinode/mod-flexsearch/v2 v2.1.0/go.mod h1:d7MMkVlz0l6cEk76e0mkveEsDxGfu5Sv+HUIhoGguhE=
|
||||||
github.com/gethinode/mod-fontawesome v1.0.2 h1:ZSK6D20/w4y5GnfYfTBB58uHD0ChIfkpKfRGwioS9rg=
|
github.com/gethinode/mod-fontawesome v1.0.2 h1:ZSK6D20/w4y5GnfYfTBB58uHD0ChIfkpKfRGwioS9rg=
|
||||||
github.com/gethinode/mod-fontawesome v1.0.2/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
github.com/gethinode/mod-fontawesome v1.0.2/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||||
github.com/gethinode/mod-fontawesome v1.1.0 h1:rsDzUI+3ZlS/do2ff3ne8/z3KwHeysmuA+WsXlumXXk=
|
github.com/gethinode/mod-fontawesome v1.1.0 h1:rsDzUI+3ZlS/do2ff3ne8/z3KwHeysmuA+WsXlumXXk=
|
||||||
@@ -308,6 +310,8 @@ github.com/gethinode/mod-simple-datatables v1.1.5 h1:DKJ+aR94mekzcDwOnm6MJ/+MjAz
|
|||||||
github.com/gethinode/mod-simple-datatables v1.1.5/go.mod h1:bvMdmQFk4Hvyltf/QhMqUaApvPbIGTnbI3JLjOEh8go=
|
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 h1:7nPeRwHlYbmlNEg7fBV6FyXqpxWW6ZAemaZyYxpIF8U=
|
||||||
github.com/gethinode/mod-simple-datatables v1.1.6/go.mod h1:bvMdmQFk4Hvyltf/QhMqUaApvPbIGTnbI3JLjOEh8go=
|
github.com/gethinode/mod-simple-datatables v1.1.6/go.mod h1:bvMdmQFk4Hvyltf/QhMqUaApvPbIGTnbI3JLjOEh8go=
|
||||||
|
github.com/gethinode/mod-simple-datatables v1.1.7 h1:wCY2bWFUxRHWbWzb/zefCACooCSbDPYKrZthfn+qAgM=
|
||||||
|
github.com/gethinode/mod-simple-datatables v1.1.7/go.mod h1:FjkIEuxqeLLEqqDcz/nHAGHsRfV7EJP5Uhk4kYD8okY=
|
||||||
github.com/gethinode/mod-utils v1.0.0 h1:cqHm2xS5uDiJzRm1KfHaNbq6uMVDKLhQa8/BuTZ1nhY=
|
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.0/go.mod h1:ONJm3pHCq7nvaPNjusLZNCeCbhOhSBH4HVKHwK1FdYE=
|
||||||
github.com/gethinode/mod-utils v1.0.1 h1:jhZGlGFHHL1f5HXbBMXfiZ2gCz4TVafAzjnRPTIBSEE=
|
github.com/gethinode/mod-utils v1.0.1 h1:jhZGlGFHHL1f5HXbBMXfiZ2gCz4TVafAzjnRPTIBSEE=
|
||||||
@@ -378,6 +382,10 @@ github.com/gethinode/mod-utils/v2 v2.8.5 h1:e71ncO2NYpum7JTdNTwb0lw8aDe8Zc64Ehja
|
|||||||
github.com/gethinode/mod-utils/v2 v2.8.5/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
|
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 h1:gtTtL37YPq1n/POIzbj40aYOg1VaZq8IjqwSf2V5yo0=
|
||||||
github.com/gethinode/mod-utils/v2 v2.8.6/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
|
github.com/gethinode/mod-utils/v2 v2.8.6/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
|
||||||
|
github.com/gethinode/mod-utils/v2 v2.9.0 h1:IGaYO+DNo7CcplyAUJASP1sf10/EqiG8sVVM1Q4SJKc=
|
||||||
|
github.com/gethinode/mod-utils/v2 v2.9.0/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
|
||||||
|
github.com/gethinode/mod-utils/v2 v2.10.0 h1:2GN6f3wcu/TlbzPD6DFlWyx+KomXz6LnBv7mfPIXB6o=
|
||||||
|
github.com/gethinode/mod-utils/v2 v2.10.0/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 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-20230711092928-1243fd883ec3/go.mod h1:5GdMfPAXzbA2gXBqTjC6l27kioSYzHlqDMh0+wyx7sU=
|
||||||
github.com/nextapps-de/flexsearch v0.0.0-20240108021025-afd75f742f22 h1:re7L8FxbXQpnX8BgzkdUnDpsUmloGNyLmiy2ZCln8pg=
|
github.com/nextapps-de/flexsearch v0.0.0-20240108021025-afd75f742f22 h1:re7L8FxbXQpnX8BgzkdUnDpsUmloGNyLmiy2ZCln8pg=
|
||||||
|
@@ -1,11 +1,11 @@
|
|||||||
{{ with transform.ToMath .Inner (dict "displayMode" true) }}
|
{{ with try (transform.ToMath .Inner (dict "displayMode" true)) }}
|
||||||
{{ with .Err }}
|
{{ with .Err }}
|
||||||
{{ errorf "Failed to render KaTeX: %q. See %s" . $.Position }}
|
{{ errorf "Failed to render KaTeX: %q. See %s" . $.Position }}
|
||||||
{{ else }}
|
{{ else }}
|
||||||
{{ if $.Attributes.class }}
|
{{ if $.Attributes.class }}
|
||||||
<div class="{{ $.Attributes.class }}">{{ . }}</div>
|
<div class="{{ $.Attributes.class | safeHTMLAttr }}">{{ .Value }}</div>
|
||||||
{{ else }}
|
{{ else }}
|
||||||
{{ . }}
|
{{ .Value }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
17
layouts/_default/_markup/render-heading-new.html
Normal file
17
layouts/_default/_markup/render-heading-new.html
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{{ $text := chomp .Text }}
|
||||||
|
{{ if site.Params.main.titleCase }}{{ $text = title $text }}{{ end }}
|
||||||
|
|
||||||
|
{{ if eq page.RelPermalink "/en/privacy/" }}
|
||||||
|
{{ warnf "title: %s" (.Text | safeHTML) }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ if and site.Params.navigation.anchor $text }}
|
||||||
|
<h{{ .Level }} id="{{ .Anchor | safeURL }}" class="heading">
|
||||||
|
{{- $text | safeHTML -}}
|
||||||
|
<a href="#{{ .Anchor | safeURL }}" aria-labelledby="{{ .Anchor | safeURL }}">
|
||||||
|
{{- partial "assets/icon.html" (dict "icon" "fas link anchor") }}
|
||||||
|
</a>
|
||||||
|
</h{{ .Level }}>
|
||||||
|
{{ else }}
|
||||||
|
<h{{ .Level }} id="{{ .Anchor | safeURL }}">{{ $text | safeHTML }}</h{{ .Level }}>
|
||||||
|
{{ end }}
|
@@ -1,12 +1,13 @@
|
|||||||
{{ $text := trim .Text " \n\r" }}
|
{{ $text := chomp .Text }}
|
||||||
|
{{ if site.Params.main.titleCase }}{{ $text = (title ($text | htmlUnescape)) | htmlEscape }}{{ end }}
|
||||||
|
|
||||||
{{ if and site.Params.navigation.anchor $text }}
|
{{ if and site.Params.navigation.anchor $text }}
|
||||||
<h{{ .Level }} id="{{ .Anchor | safeURL }}" class="heading">
|
<h{{ .Level }} id="{{ .Anchor | safeURL }}" class="heading">
|
||||||
{{- .Text | safeHTML -}}
|
{{- $text | safeHTML -}}
|
||||||
<a href="#{{ .Anchor | safeURL }}" aria-labelledby="{{ .Anchor | safeURL }}">
|
<a href="#{{ .Anchor | safeURL }}" aria-labelledby="{{ .Anchor | safeURL }}">
|
||||||
{{- partial "assets/icon.html" (dict "icon" "fas link anchor") }}
|
{{- partial "assets/icon.html" (dict "icon" "fas link anchor") }}
|
||||||
</a>
|
</a>
|
||||||
</h{{ .Level }}>
|
</h{{ .Level }}>
|
||||||
{{ else }}
|
{{ else }}
|
||||||
<h{{ .Level }} id="{{ .Anchor | safeURL }}">{{ .Text | safeHTML }}</h{{ .Level }}>
|
<h{{ .Level }} id="{{ .Anchor | safeURL }}">{{ $text | safeHTML }}</h{{ .Level }}>
|
||||||
{{ end }}
|
{{ end }}
|
@@ -4,10 +4,10 @@
|
|||||||
{{ $opts = dict "displayMode" true }}
|
{{ $opts = dict "displayMode" true }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{ with transform.ToMath .Inner $opts }}
|
{{ with try (transform.ToMath .Inner $opts) }}
|
||||||
{{ with .Err }}
|
{{ with .Err }}
|
||||||
{{ errorf "Failed to render KaTeX: %q. See %s" . $.Position }}
|
{{ errorf "Failed to render KaTeX: %q. See %s" . $.Position }}
|
||||||
{{ else }}
|
{{ else }}
|
||||||
{{ . }}
|
{{ .Value }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
@@ -7,8 +7,10 @@
|
|||||||
{{ $attr = merge $attr (dict "class" (trim (delimit ($class | append "table") " ") " ")) }}
|
{{ $attr = merge $attr (dict "class" (trim (delimit ($class | append "table") " ") " ")) }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
|
{{ $wrap := in $class "table-wrap" }}
|
||||||
{{ $align := dict "left" "start" "center" "center" "right" "end" }}
|
{{ $align := dict "left" "start" "center" "center" "right" "end" }}
|
||||||
|
|
||||||
|
{{ $header := "" }}
|
||||||
<table
|
<table
|
||||||
{{- range $k, $v := $attr }}
|
{{- range $k, $v := $attr }}
|
||||||
{{- if $v }}
|
{{- if $v }}
|
||||||
@@ -17,6 +19,19 @@
|
|||||||
{{- end }}>
|
{{- end }}>
|
||||||
<thead>
|
<thead>
|
||||||
{{- range .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>
|
<tr>
|
||||||
{{- range . }}
|
{{- range . }}
|
||||||
<th {{ with .Alignment }}class="text-{{ index $align . }}"{{ end }}>
|
<th {{ with .Alignment }}class="text-{{ index $align . }}"{{ end }}>
|
||||||
@@ -24,17 +39,36 @@
|
|||||||
</th>
|
</th>
|
||||||
{{- end }}
|
{{- end }}
|
||||||
</tr>
|
</tr>
|
||||||
|
{{ end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{{- range .TBody }}
|
{{- range .TBody }}
|
||||||
|
{{ $length := len . }}
|
||||||
|
{{ if $wrap }}
|
||||||
<tr>
|
<tr>
|
||||||
{{- range . }}
|
{{- range . | first (sub $length 1) }}
|
||||||
<td {{ with .Alignment }}class="text-{{ index $align . }}"{{ end }}>
|
<td class="{{ with .Alignment }}text-{{ index $align . }}{{ end }} table-border-bottom-wrap">
|
||||||
{{- .Text -}}
|
{{- .Text -}}
|
||||||
</td>
|
</td>
|
||||||
{{- end }}
|
{{- end }}
|
||||||
</tr>
|
</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 }}
|
{{- end }}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
@@ -2,11 +2,13 @@
|
|||||||
{{- $fullCover := $.Scratch.Get "fullCover" -}}
|
{{- $fullCover := $.Scratch.Get "fullCover" -}}
|
||||||
{{- $breakpoint := $.Scratch.Get "breakpoint" -}}
|
{{- $breakpoint := $.Scratch.Get "breakpoint" -}}
|
||||||
{{- $layout := .Params.layout -}}
|
{{- $layout := .Params.layout -}}
|
||||||
|
{{- $title := .Title }}
|
||||||
|
{{ if site.Params.main.titleCase }}{{ $title = title $title }}{{ end }}
|
||||||
|
|
||||||
<div class="row row-cols-1 row-cols-{{ $breakpoint.current }}-2">
|
<div class="row row-cols-1 row-cols-{{ $breakpoint.current }}-2">
|
||||||
<div class="col-12 col-{{ $breakpoint.current }}-9">
|
<div class="col-12 col-{{ $breakpoint.current }}-9">
|
||||||
{{ if not .IsHome }}
|
{{ if not .IsHome }}
|
||||||
{{ with .Title }}<p id="{{ anchorize . }}" class="display-4 mt-5{{ if and $.IsHome site.Params.home.centerHeadline }} text-center{{ end }}">{{ . }}</p>{{ end }}
|
{{ with $title }}<p id="{{ anchorize . }}" class="display-4 mt-5{{ if and $.IsHome site.Params.home.centerHeadline }} text-center{{ end }}">{{ . }}</p>{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ if (.Params.menu) }}
|
{{ if (.Params.menu) }}
|
||||||
{{- partial "assets/section-menu.html" (dict "page" .) -}}
|
{{- partial "assets/section-menu.html" (dict "page" .) -}}
|
||||||
|
@@ -12,7 +12,10 @@
|
|||||||
{{- errorf "layout [_default/single/header.html] - Invalid value for param 'metadata': %s" $metadata -}}
|
{{- errorf "layout [_default/single/header.html] - Invalid value for param 'metadata': %s" $metadata -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
{{ with .Title }}<p class="display-4 mt-5">{{ . }}</p>{{ end }}
|
{{ $title := .Title }}
|
||||||
|
{{ if site.Params.main.titleCase }}{{ $title = title $title }}{{ end }}
|
||||||
|
|
||||||
|
{{ with $title }}<p class="display-4 mt-5">{{ . }}</p>{{ end }}
|
||||||
{{ if ne $metadata "none" }}
|
{{ if ne $metadata "none" }}
|
||||||
<small class="text-body-secondary text-uppercase">
|
<small class="text-body-secondary text-uppercase">
|
||||||
{{ if .Date }}
|
{{ if .Date }}
|
||||||
|
@@ -1,3 +1,6 @@
|
|||||||
{{ with .Title }}<p class="display-4 mt-5">{{ . }}</p>{{ end }}
|
{{ $title := .Title }}
|
||||||
|
{{ if site.Params.main.titleCase }}{{ $title = title $title }}{{ end }}
|
||||||
|
|
||||||
|
{{ with $title }}<p class="display-4 mt-5">{{ . }}</p>{{ end }}
|
||||||
{{ partial "assets/sharing.html" (dict "page" .) }}
|
{{ partial "assets/sharing.html" (dict "page" .) }}
|
||||||
<p class="lead mb-5">{{ .Description }}</p>
|
<p class="lead mb-5">{{ .Description }}</p>
|
||||||
|
@@ -1,3 +1,6 @@
|
|||||||
{{ with .Title }}<p class="display-4 mt-5">{{ . }}</p>{{ end }}
|
{{ $title := .Title }}
|
||||||
|
{{ if site.Params.main.titleCase }}{{ $title = title $title }}{{ end }}
|
||||||
|
|
||||||
|
{{ with $title }}<p class="display-4 mt-5">{{ . }}</p>{{ end }}
|
||||||
{{ partial "assets/sharing.html" (dict "page" .) }}
|
{{ partial "assets/sharing.html" (dict "page" .) }}
|
||||||
<p class="lead mb-5">{{ .Description }}</p>
|
<p class="lead mb-5">{{ .Description }}</p>
|
||||||
|
@@ -30,7 +30,8 @@
|
|||||||
{{ $items := slice }}
|
{{ $items := slice }}
|
||||||
{{- range $index, $item := $page.Ancestors.Reverse -}}
|
{{- range $index, $item := $page.Ancestors.Reverse -}}
|
||||||
{{- $title := .LinkTitle -}}
|
{{- $title := .LinkTitle -}}
|
||||||
{{- if .IsHome }}{{ $title = T "home" }}{{ end -}}
|
{{- if .IsHome }}{{ $title = T "home" }}{{ end -}}
|
||||||
|
{{ if site.Params.main.titleCase }}{{ $title = title $title }}{{ end }}
|
||||||
{{- $address := or .RelPermalink .Params.Redirect -}}
|
{{- $address := or .RelPermalink .Params.Redirect -}}
|
||||||
{{ if and $title $address}}
|
{{ if and $title $address}}
|
||||||
{{ $items = $items | append (dict "title" $title "address" $address) }}
|
{{ $items = $items | append (dict "title" $title "address" $address) }}
|
||||||
@@ -57,9 +58,15 @@
|
|||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
{{- $length := len $items }}
|
{{- $length := len $items }}
|
||||||
{{- range $index, $item := $items -}}
|
{{- range $index, $item := $items -}}
|
||||||
<li class="breadcrumb-item"><a href="{{ $item.address }}">{{ $item.title }}</a></li>
|
{{ $title := $item.title }}
|
||||||
|
{{ if site.Params.main.titleCase }}{{ $title = title $title }}{{ end }}
|
||||||
|
<li class="breadcrumb-item"><a href="{{ $item.address }}">{{ $title }}</a></li>
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
<li class="breadcrumb-item active" aria-current="page">{{ $page.LinkTitle }}</li>
|
<li class="breadcrumb-item active" aria-current="page">
|
||||||
|
{{ $title := $page.LinkTitle }}
|
||||||
|
{{ if site.Params.main.titleCase }}{{ $title = title $title }}{{ end }}
|
||||||
|
{{ $title }}
|
||||||
|
</li>
|
||||||
</ol>
|
</ol>
|
||||||
</nav>
|
</nav>
|
||||||
{{ end }}
|
{{ end }}
|
@@ -86,6 +86,8 @@
|
|||||||
{{- if eq $body "title" }}{{ $description = "" }}{{ end -}}
|
{{- if eq $body "title" }}{{ $description = "" }}{{ end -}}
|
||||||
{{- if eq $body "none" }}{{ $title = "" }}{{ $description = "" }}{{ end -}}
|
{{- if eq $body "none" }}{{ $title = "" }}{{ $description = "" }}{{ end -}}
|
||||||
|
|
||||||
|
{{ if site.Params.main.titleCase }}{{ $title = title $title }}{{ end }}
|
||||||
|
|
||||||
<!-- Inline partial to render the card's body -->
|
<!-- Inline partial to render the card's body -->
|
||||||
{{- define "partials/card-body.html" -}}
|
{{- define "partials/card-body.html" -}}
|
||||||
{{- $title := .title -}}
|
{{- $title := .title -}}
|
||||||
|
@@ -33,6 +33,9 @@
|
|||||||
{{- $url := .url -}}
|
{{- $url := .url -}}
|
||||||
{{- $mode := .mode -}}
|
{{- $mode := .mode -}}
|
||||||
{{- $modes := site.Params.main.modes | default (slice "light" "dark") -}}
|
{{- $modes := site.Params.main.modes | default (slice "light" "dark") -}}
|
||||||
|
{{ if and site.Params.main.titleCase (eq $caption (plainify $caption)) }}
|
||||||
|
{{ $caption = title $caption }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
<!-- Main code -->
|
<!-- Main code -->
|
||||||
{{ $params := dict }}
|
{{ $params := dict }}
|
||||||
|
@@ -79,12 +79,16 @@
|
|||||||
{{ $pageContext = path.Dir (strings.TrimPrefix hugo.WorkingDir .Filename) }}
|
{{ $pageContext = path.Dir (strings.TrimPrefix hugo.WorkingDir .Filename) }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ $isPageRes := fileExists (path.Join $pageContext $destination) }}
|
{{ $isPageRes := fileExists (path.Join $pageContext $destination) }}
|
||||||
|
{{ $res := "" }}
|
||||||
|
{{ if $isPageRes }}
|
||||||
|
{{- $res = partial "utilities/GetResource.html" (dict "url" .destination "page" $page) -}}
|
||||||
|
{{ end }}
|
||||||
{{ $isStatic := fileExists (path.Join "static" $destination) }}
|
{{ $isStatic := fileExists (path.Join "static" $destination) }}
|
||||||
{{ if and (not $isPageRes) (not $isStatic) }}
|
{{ if and (not $res) (not $isStatic) }}
|
||||||
{{- errorf "partial [assets/link.html] - Cannot find page or asset: '%s' at '%s'" $destination $page.File.Path -}}
|
{{- errorf "partial [assets/link.html] - Cannot find page or asset: '%s' at '%s'" $destination $page.File.Path -}}
|
||||||
{{- $error = true -}}
|
{{- $error = true -}}
|
||||||
{{ else if $isPageRes }}
|
{{ else if $res }}
|
||||||
{{ $destination = partial "utilities/URLJoin.html" (dict "elements" (slice "/" (strings.TrimPrefix "/content" $pageContext) $destination)) }}
|
{{ $destination = $res.RelPermalink }}
|
||||||
{{ else if $isStatic }}
|
{{ else if $isStatic }}
|
||||||
{{ $destination = partial "utilities/URLJoin.html" (dict "base" "/" "path" $destination) }}
|
{{ $destination = partial "utilities/URLJoin.html" (dict "base" "/" "path" $destination) }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
@@ -106,7 +110,12 @@
|
|||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{- if not $case }}{{ $text = lower $text }}{{ end -}}
|
{{- if not $case }}
|
||||||
|
{{ $text = lower $text }}
|
||||||
|
{{ else if site.Params.main.titleCase }}
|
||||||
|
{{ $text = title $text }}
|
||||||
|
{{ end -}}
|
||||||
|
|
||||||
{{ if and $pretty (not (hasSuffix $destination "/" )) (not (strings.Contains $destination "#")) }}
|
{{ if and $pretty (not (hasSuffix $destination "/" )) (not (strings.Contains $destination "#")) }}
|
||||||
{{ $destination = printf "%s/" $destination }}
|
{{ $destination = printf "%s/" $destination }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
@@ -77,16 +77,19 @@
|
|||||||
|
|
||||||
<!-- Main code -->
|
<!-- Main code -->
|
||||||
{{ if not $error }}
|
{{ if not $error }}
|
||||||
|
{{ $title := $menu.Name }}
|
||||||
|
{{ if site.Params.main.titleCase }}{{ $title = title $title }}{{ end }}
|
||||||
|
|
||||||
{{ if $menu.Params.button }}
|
{{ if $menu.Params.button }}
|
||||||
{{ partial "assets/button.html" (dict
|
{{ partial "assets/button.html" (dict
|
||||||
"title" $menu.Name
|
"title" $title
|
||||||
"icon" $menu.Pre
|
"icon" $menu.Pre
|
||||||
"href" $menuURL
|
"href" $menuURL
|
||||||
"size" "sm"
|
"size" "sm"
|
||||||
)}}
|
)}}
|
||||||
{{ else }}
|
{{ else }}
|
||||||
{{ cond (ne $menuURL "") "<a" "<div" | safeHTML }} class="{{ $anchorClass }}{{ if $isActive }} active{{ end }}{{ with $class }} {{ . }}{{ end }}"
|
{{ cond (ne $menuURL "") "<a" "<div" | safeHTML }} class="{{ $anchorClass }}{{ if $isActive }} active{{ end }}{{ with $class }} {{ . }}{{ end }}"
|
||||||
{{ if $isIcon }}aria-label="{{ $menu.Name }}"{{ end }}
|
{{ if $isIcon }}aria-label="{{ $title }}"{{ end }}
|
||||||
data-nav="main" data-nav-main="{{ $mainNav }}"{{ with $childNav }} data-nav-child="{{ . }}"{{ 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 }}>
|
||||||
|
|
||||||
@@ -97,7 +100,7 @@
|
|||||||
{{ partial "assets/icon.html" (dict "icon" (string .) )}}
|
{{ partial "assets/icon.html" (dict "icon" (string .) )}}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end -}}
|
{{ end -}}
|
||||||
<span {{ if $isActive }} class="active"{{ end }}>{{ if or (not $isIcon) $plain }}{{ $menu.Name }}{{ end }}</span>
|
<span {{ if $isActive }} class="active"{{ end }}>{{ if or (not $isIcon) $plain }}{{ $title }}{{ end }}</span>
|
||||||
{{- with $menu.Post }}{{ . }}{{ end -}}
|
{{- with $menu.Post }}{{ . }}{{ end -}}
|
||||||
{{- if not $isIcon }} {{ $suffix }}{{ end -}}
|
{{- if not $isIcon }} {{ $suffix }}{{ end -}}
|
||||||
{{ cond (ne $menuURL "") "</a>" "</div>" | safeHTML }}
|
{{ cond (ne $menuURL "") "</a>" "</div>" | safeHTML }}
|
||||||
|
@@ -53,7 +53,7 @@
|
|||||||
{{- $title := .title -}}
|
{{- $title := .title -}}
|
||||||
{{- $content := .content -}}
|
{{- $content := .content -}}
|
||||||
|
|
||||||
<h3>{{ $title }}</h3>
|
<div class="fs-3 mt-4">{{ $title }}</div>
|
||||||
{{ with $content }}<p>{{ . }}</p>{{ end -}}
|
{{ with $content }}<p>{{ . }}</p>{{ end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
|
@@ -16,6 +16,7 @@
|
|||||||
{{- $title := .title -}}
|
{{- $title := .title -}}
|
||||||
{{- $description := .description -}}
|
{{- $description := .description -}}
|
||||||
{{- $content := .content -}}
|
{{- $content := .content -}}
|
||||||
|
{{ if site.Params.main.titleCase }}{{ $title = title $title }}{{ end }}
|
||||||
|
|
||||||
<!-- Main code -->
|
<!-- Main code -->
|
||||||
{{ with $title }}<p id="{{ anchorize . }}" class="display-4 py-5{{ if and page.IsHome site.Params.home.centerHeadline }} text-center{{ end }}">{{ . }}</p>{{ end }}
|
{{ with $title }}<p id="{{ anchorize . }}" class="display-4 py-5{{ if and page.IsHome site.Params.home.centerHeadline }} text-center{{ end }}">{{ . }}</p>{{ end }}
|
||||||
|
@@ -37,6 +37,9 @@
|
|||||||
<li class="mb-1">
|
<li class="mb-1">
|
||||||
<div class="d-flex w-100 p-0 sidebar-item-group">
|
<div class="d-flex w-100 p-0 sidebar-item-group">
|
||||||
<div class="text-start flex-grow-1 {{ if $current }}fw-bold{{ end }}">
|
<div class="text-start flex-grow-1 {{ if $current }}fw-bold{{ end }}">
|
||||||
|
{{- $groupTitle := $group.title -}}
|
||||||
|
{{ if site.Params.main.titleCase }}{{ $groupTitle = title $groupTitle }}{{ end }}
|
||||||
|
|
||||||
{{ $dest := $href }}
|
{{ $dest := $href }}
|
||||||
{{ $target := "" }}
|
{{ $target := "" }}
|
||||||
{{ if or $current (not $ref) }}
|
{{ if or $current (not $ref) }}
|
||||||
@@ -45,7 +48,7 @@
|
|||||||
<a {{ with $dest }} href="{{ . }}"{{ else }}
|
<a {{ with $dest }} href="{{ . }}"{{ else }}
|
||||||
data-bs-toggle="collapse"
|
data-bs-toggle="collapse"
|
||||||
data-bs-target="#sidebar-collapse-{{ $index }}-{{ $level }}"
|
data-bs-target="#sidebar-collapse-{{ $index }}-{{ $level }}"
|
||||||
{{ end }}>{{ $group.title }}</a>
|
{{ end }}>{{ $groupTitle }}</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
|
@@ -4,42 +4,86 @@
|
|||||||
Visit gethinode.com/license for more details.
|
Visit gethinode.com/license for more details.
|
||||||
-->
|
-->
|
||||||
|
|
||||||
{{ $page := .page }}
|
{{ define "partials/inline-table.html" }}
|
||||||
{{ $input := .input }}
|
{{ $page := .page }}
|
||||||
{{ $args := .args }}
|
{{ $input := .input }}
|
||||||
{{ $sortable := .sortable | default false }}
|
{{ $attributes := .attributes }}
|
||||||
{{ $paging := .paging | default false }}
|
{{ $class := .class }}
|
||||||
{{ $searchable := .searchable | default false }}
|
{{ $wrap := .wrap }}
|
||||||
{{ $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 -}}
|
|
||||||
|
|
||||||
{{- if in $responsive "table-responsive-none" -}}
|
{{ if $wrap }}{{ $input = printf "%s\n{.table-wrap}" (chomp $input) }}{{ end }}
|
||||||
{{- $responsive = "" -}}
|
{{- $input = $input | $page.RenderString }}
|
||||||
{{- else if not $responsive -}}
|
{{ $regex := `<table\s*class="(.+?)"` }}
|
||||||
{{ $responsive = (slice "table-responsive") -}}
|
{{ $current := (index (index (findRESubmatch $regex $input) 0) 1) }}
|
||||||
{{- end -}}
|
{{ $target := delimit (((split $current " ") | append "table" | append $class) | uniq) " " }}
|
||||||
|
|
||||||
{{- $class := delimit $main " " -}}
|
{{- $new := printf `<table class="%s" %s` $target (trim $attributes " ") -}}
|
||||||
{{ if or $sortable $paging $searchable }}{{ $class = trim (printf "%s data-table" $class) " " }}{{ end }}
|
{{ $input := replaceRE $regex $new $input 1 -}}
|
||||||
{{- $input := $input | $page.RenderString }}
|
|
||||||
{{ $regex := `<table\s*class="(.+?)"` }}
|
{{ return $input }}
|
||||||
{{ $current := (index (index (findRESubmatch $regex $input) 0) 1) }}
|
{{ end }}
|
||||||
{{ $target := delimit (((split $current " ") | append "table" | append $class) | uniq) " " }}
|
|
||||||
|
<!-- 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 := "" }}
|
{{ $attributes := "" }}
|
||||||
{{ if $sortable }}{{ $attributes = printf "%s data-table-sortable=true" $attributes }}{{ end }}
|
{{ if $args.sortable }}{{ $attributes = printf "%s data-table-sortable=true" $attributes }}{{ end }}
|
||||||
{{ if $paging }}
|
{{ if $args.paging }}
|
||||||
{{ $attributes = printf "%s data-table-paging=true" $attributes }}
|
{{ $attributes = printf "%s data-table-paging=true" $attributes }}
|
||||||
{{ $attributes := printf "%s data-table-paging-option-perPage=%s" $attributes $pagingOptionPerPage }}
|
{{ $attributes = printf "%s data-table-paging-option-perPage=%d" $attributes $args.pagingOptionPerPage }}
|
||||||
{{ if (ne $pagingOptionPerPageSelect "") }}{{ $attributes := printf "%s data-table-paging-option-perPageSelect=%d" $attributes $pagingOptionPerPageSelect }}{{ end }}
|
{{ if (ne $args.pagingOptionPerPageSelect "") }}
|
||||||
|
{{ $attributes = printf "%s data-table-paging-option-perPageSelect=%s" $attributes $args.pagingOptionPerPageSelect }}
|
||||||
|
{{ end }}
|
||||||
{{ 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 " ") -}}
|
<!-- Main code -->
|
||||||
{{ $input := replaceRE $regex $new $input 1 -}}
|
{{- $breakpoint := $args.page.Scratch.Get "breakpoint" -}}
|
||||||
{{- with $responsive }}<div class="{{ delimit . " " }}">{{ end -}}
|
{{ $regular := partial "partials/inline-table.html" (dict
|
||||||
{{ $input | safeHTML }}
|
"page" $args.page
|
||||||
{{- with $responsive }}</div>{{ end -}}
|
"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 }}
|
@@ -4,36 +4,60 @@
|
|||||||
Visit gethinode.com/license for more details.
|
Visit gethinode.com/license for more details.
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
<!-- Initialize arguments -->
|
||||||
{{ $error := false }}
|
{{ $error := false }}
|
||||||
|
{{ $args := partial "utilities/InitArgs.html" (dict "structure" "toc" "args" . "group" "partial") }}
|
||||||
<!-- Validate arguments -->
|
{{ if $args.err }}
|
||||||
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "toc" "args" . "group" "partial") }}
|
{{ partial "utilities/LogErr.html" (dict
|
||||||
{{- errorf "partial [assets/toc-dropdown.html] - Invalid arguments" -}}
|
"partial" "assets/schema.html"
|
||||||
|
"msg" "Invalid arguments"
|
||||||
|
"details" $args.errmsg
|
||||||
|
"file" page.File
|
||||||
|
)}}
|
||||||
{{ $error = true }}
|
{{ $error = true }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
<!-- Initialize arguments -->
|
<!-- Initialize local arguments -->
|
||||||
{{- $page := .page -}}
|
{{- $startLevel := or (.Site.Params.navigation.startLevel | int) 2 }}
|
||||||
{{ $items := len (findRE "<li.*?>(.|\n)*?</li>" $page.TableOfContents) -}}
|
{{- $endLevel := or (.Site.Params.navigation.endLevel | int) 3 }}
|
||||||
|
{{- $minNumHeadings := or (.Site.Params.navigation.minNumHeadings | int) 2 }}
|
||||||
|
|
||||||
{{ if and (not $error) (gt $items 1) -}}
|
<!-- Main code -->
|
||||||
<div class="d-grid gap-2 mx-auto">
|
{{ if not $error }}
|
||||||
{{ partial "assets/button.html" (dict
|
{{ $headings := partial "assets/toc-headings.html" $args.page }}
|
||||||
"title" (T "toc")
|
{{- with $headings }}
|
||||||
"color" "secondary"
|
{{- if and (not $error) (ge (len .) $minNumHeadings) }}
|
||||||
"outline" "true"
|
<div class="d-grid gap-2 mx-auto">
|
||||||
"class" "toc-button"
|
{{ partial "assets/button.html" (dict
|
||||||
"icon" "fas sort"
|
"title" (T "toc")
|
||||||
"justify" "between"
|
"color" "secondary"
|
||||||
"collapse" "toc-collapse"
|
"outline" "true"
|
||||||
"order" "last"
|
"class" "toc-button"
|
||||||
"spacing" false
|
"icon" "fas sort"
|
||||||
) -}}
|
"justify" "between"
|
||||||
</div>
|
"collapse" "toc-collapse"
|
||||||
|
"order" "last"
|
||||||
<div class="collapse border bg-body-tertiary rounded p-1 navbar-nav-scroll" id="toc-collapse">
|
"spacing" false
|
||||||
<div class="toc toc-panel text-body p-2">
|
) -}}
|
||||||
<small>{{ $page.TableOfContents }}</small>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
{{ end -}}
|
<div class="collapse border bg-body-tertiary rounded p-1 navbar-nav-scroll" id="toc-collapse">
|
||||||
|
<small>
|
||||||
|
<div class="toc toc-panel text-body p-2">
|
||||||
|
{{- range . }}
|
||||||
|
{{- $attrs := dict "class" (printf "toc-item toc-level-%d" (add 1 (sub .level $startLevel))) }}
|
||||||
|
{{- with .id }}
|
||||||
|
{{- $attrs = merge $attrs (dict "href" (printf "%s#%s" $args.page.RelPermalink .)) }}
|
||||||
|
{{- end }}
|
||||||
|
<a
|
||||||
|
{{- range $k, $v := $attrs }}
|
||||||
|
{{- printf " %s=%q" $k $v | safeHTMLAttr }}
|
||||||
|
{{- end -}}
|
||||||
|
>{{ .text }}</a>
|
||||||
|
{{- end }}
|
||||||
|
</div>
|
||||||
|
</small>
|
||||||
|
</div>
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
75
layouts/partials/assets/toc-headings.html
Normal file
75
layouts/partials/assets/toc-headings.html
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
{{- /*
|
||||||
|
Copyright 2023 Veriphor, LLC
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||||
|
use this file except in compliance with the License. You may obtain a copy of
|
||||||
|
the License at
|
||||||
|
|
||||||
|
https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
License for the specific language governing permissions and limitations under
|
||||||
|
the License.
|
||||||
|
*/}}
|
||||||
|
|
||||||
|
{{- /* Initialize. */}}
|
||||||
|
{{- $partialName := "toc-headings" }}
|
||||||
|
|
||||||
|
{{- /* Verify minimum required version. */}}
|
||||||
|
{{- $minHugoVersion := "0.125.6" }}
|
||||||
|
{{- if lt hugo.Version $minHugoVersion }}
|
||||||
|
{{- errorf "The %q partial requires Hugo v%s or later." $partialName $minHugoVersion }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- /* Determine content path for warning and error messages. */}}
|
||||||
|
{{- $contentPath := "" }}
|
||||||
|
{{- with .File }}
|
||||||
|
{{- $contentPath = .Path }}
|
||||||
|
{{- else }}
|
||||||
|
{{- $contentPath = .Path }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- /* Get configuration. */}}
|
||||||
|
{{- $startLevel := or (.Site.Params.navigation.startLevel | int) 2 }}
|
||||||
|
{{- $endLevel := or (.Site.Params.navigation.endLevel | int) 3 }}
|
||||||
|
|
||||||
|
{{- /* Get headings. */}}
|
||||||
|
{{- $headings := slice }}
|
||||||
|
{{- $ids := slice }}
|
||||||
|
{{- range findRE `(?is)<h\d.*?</h\d>` .Content }}
|
||||||
|
{{- $level := substr . 2 1 | int }}
|
||||||
|
{{- if and (ge $level $startLevel) (le $level $endLevel) }}
|
||||||
|
{{- $text := replaceRE `(?is)<h\d.*?>(.+?)</h\d>` "$1" . }}
|
||||||
|
{{- $text = trim $text " " | plainify | safeHTML }}
|
||||||
|
{{- $id := "" }}
|
||||||
|
{{- if findRE `\s+id=` . }}
|
||||||
|
{{- $id = replaceRE `(?is).+?\s+id=(?:\x22|\x27)?(.*?)(?:\x22|\x27)?[\s>].+` "$1" . }}
|
||||||
|
{{- $ids = $ids | append $id }}
|
||||||
|
{{- if not $id }}
|
||||||
|
{{- errorf "The %q partial detected that the %q heading has an empty ID attribute. See %s" $partialName $text $contentPath }}
|
||||||
|
{{- end }}
|
||||||
|
{{- else }}
|
||||||
|
{{- errorf "The %q partial detected that the %q heading does not have an ID attribute. See %s" $partialName $text $contentPath }}
|
||||||
|
{{- end }}
|
||||||
|
{{- $headings = $headings | append (dict "id" $id "level" $level "text" $text) }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- /* Check for duplicate heading IDs. */}}
|
||||||
|
{{- $unique := slice }}
|
||||||
|
{{- $duplicates := slice }}
|
||||||
|
{{- range $ids }}
|
||||||
|
{{- if in $unique . }}
|
||||||
|
{{- $duplicates = $duplicates | append . }}
|
||||||
|
{{- else }}
|
||||||
|
{{- $unique = $unique | append . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with $duplicates }}
|
||||||
|
{{- errorf "The %q partial detected duplicate heading IDs (%s) in %s" $partialName (delimit . ", ") $contentPath }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{ return $headings }}
|
||||||
|
|
107
layouts/partials/assets/toc-parse-content.html
Normal file
107
layouts/partials/assets/toc-parse-content.html
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
{{- /*
|
||||||
|
Copyright 2023 Veriphor, LLC
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||||
|
use this file except in compliance with the License. You may obtain a copy of
|
||||||
|
the License at
|
||||||
|
|
||||||
|
https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
License for the specific language governing permissions and limitations under
|
||||||
|
the License.
|
||||||
|
*/}}
|
||||||
|
|
||||||
|
{{- /*
|
||||||
|
Renders a table of contents by parsing rendered content.
|
||||||
|
|
||||||
|
In site configuration, set the default start level, end level, and the minimum
|
||||||
|
number of headings required to show the table of contents:
|
||||||
|
|
||||||
|
[params.toc]
|
||||||
|
startLevel = 2 # default is 2
|
||||||
|
endLevel = 3 # default is 3
|
||||||
|
minNumHeadings = 2 # default is 2
|
||||||
|
|
||||||
|
To display the table of contents on a page:
|
||||||
|
|
||||||
|
+++
|
||||||
|
title = 'Post 1'
|
||||||
|
toc = true
|
||||||
|
+++
|
||||||
|
|
||||||
|
To display the table of contents on a page, and override one or more of the
|
||||||
|
default settings:
|
||||||
|
|
||||||
|
+++
|
||||||
|
title = 'Post 1'
|
||||||
|
[toc]
|
||||||
|
startLevel = 2 # default is 2
|
||||||
|
endLevel = 3 # default is 3
|
||||||
|
minNumHeadings = 2 # default is 2
|
||||||
|
+++
|
||||||
|
|
||||||
|
Change or localize the title with a "toc_title" key in your i18n file(s).
|
||||||
|
|
||||||
|
Start with these basic CSS rules to style the table of contents:
|
||||||
|
|
||||||
|
a.toc-item {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
a.toc-level-1 {
|
||||||
|
margin-left: 0em;
|
||||||
|
}
|
||||||
|
a.toc-level-2 {
|
||||||
|
margin-left: 1em;
|
||||||
|
}
|
||||||
|
a.toc-level-3 {
|
||||||
|
margin-left: 2em;
|
||||||
|
}
|
||||||
|
a.toc-level-4 {
|
||||||
|
margin-left: 3em;
|
||||||
|
}
|
||||||
|
a.toc-level-5 {
|
||||||
|
margin-left: 4em;
|
||||||
|
}
|
||||||
|
a.toc-level-6 {
|
||||||
|
margin-left: 5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
@context {page} .
|
||||||
|
|
||||||
|
@returns {template.HTML}
|
||||||
|
|
||||||
|
@example {{ partial "toc-parse-content.html" . }}
|
||||||
|
*/}}
|
||||||
|
|
||||||
|
{{- /* Get configuration. */}}
|
||||||
|
{{- $startLevel := or (.Site.Params.navigation.startLevel | int) 2 }}
|
||||||
|
{{- $endLevel := or (.Site.Params.navigation.endLevel | int) 3 }}
|
||||||
|
{{- $minNumHeadings := or (.Site.Params.navigation.minNumHeadings | int) 2 }}
|
||||||
|
|
||||||
|
{{- /* Initialize. */}}
|
||||||
|
{{ $headings := partial "assets/toc-headings.html" . }}
|
||||||
|
|
||||||
|
{{- /* Render */}}
|
||||||
|
{{- if .Site.Params.navigation.toc }}
|
||||||
|
{{- with $headings }}
|
||||||
|
{{- if ge (len .) $minNumHeadings }}
|
||||||
|
<strong class="d-block h6 my-2 pt-4">{{ T "toc" }}:</strong>
|
||||||
|
<nav class="toc">
|
||||||
|
{{- range . }}
|
||||||
|
{{- $attrs := dict "class" (printf "toc-item toc-level-%d" (add 1 (sub .level $startLevel))) }}
|
||||||
|
{{- with .id }}
|
||||||
|
{{- $attrs = merge $attrs (dict "href" (printf "%s#%s" $.RelPermalink .)) }}
|
||||||
|
{{- end }}
|
||||||
|
<a
|
||||||
|
{{- range $k, $v := $attrs }}
|
||||||
|
{{- printf " %s=%q" $k $v | safeHTMLAttr }}
|
||||||
|
{{- end -}}
|
||||||
|
>{{ .text }}</a>
|
||||||
|
{{- end }}
|
||||||
|
</nav>
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
@@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
Copyright © 2022 - 2025 The Hinode Team / Mark Dumay. All rights reserved.
|
Copyright © 2024 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.
|
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.
|
Visit gethinode.com/license for more details.
|
||||||
-->
|
-->
|
||||||
@@ -14,10 +14,8 @@
|
|||||||
|
|
||||||
<!-- Initialize arguments -->
|
<!-- Initialize arguments -->
|
||||||
{{- $page := .page -}}
|
{{- $page := .page -}}
|
||||||
{{ $items := len (findRE "<li.*?>(.|\n)*?</li>" $page.TableOfContents) -}}
|
|
||||||
|
|
||||||
<!-- Main code -->
|
<!-- Main code -->
|
||||||
{{ if and (not $error) (gt $items 1) -}}
|
{{ if not $error -}}
|
||||||
<strong class="d-block h6 my-2 pb-2">{{ T "toc" }}:</strong>
|
{{ partial "assets/toc-parse-content.html" $page }}
|
||||||
{{ $page.TableOfContents }}
|
|
||||||
{{ end -}}
|
{{ end -}}
|
@@ -68,11 +68,11 @@
|
|||||||
{{ $api := printf "https://www.youtube.com/oembed?format=json&url=%s" (printf "https://www.youtube.com/watch?v=%s" $id) }}
|
{{ $api := printf "https://www.youtube.com/oembed?format=json&url=%s" (printf "https://www.youtube.com/watch?v=%s" $id) }}
|
||||||
{{ $padding := "56.25%" }}
|
{{ $padding := "56.25%" }}
|
||||||
|
|
||||||
{{ with resources.GetRemote $api }}
|
{{ with try (resources.GetRemote $api) }}
|
||||||
{{ with .Err }}
|
{{ with .Err }}
|
||||||
{{ errorf "Unable to parse video metadata '%q': %s\n %s" $api $origin . }}
|
{{ errorf "Unable to parse video metadata '%q': %s\n %s" $api $origin . }}
|
||||||
{{ else }}
|
{{ else }}
|
||||||
{{ $data := . | transform.Unmarshal }}
|
{{ $data := .Value | transform.Unmarshal }}
|
||||||
{{ if $autotitle }}{{ with $data.title }}{{ $title = . }}{{ end }}{{ end }}
|
{{ if $autotitle }}{{ with $data.title }}{{ $title = . }}{{ end }}{{ end }}
|
||||||
{{ $padding = printf "%.2f%%" (mul (div $data.height $data.width) 100) }}
|
{{ $padding = printf "%.2f%%" (mul (div $data.height $data.width) 100) }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
@@ -97,11 +97,11 @@
|
|||||||
{{- $dnt := cond $pc.EnableDNT 1 0 -}}
|
{{- $dnt := cond $pc.EnableDNT 1 0 -}}
|
||||||
{{- $query := querify "url" $url "dnt" $dnt -}}
|
{{- $query := querify "url" $url "dnt" $dnt -}}
|
||||||
{{- $api := printf "https://vimeo.com/api/oembed.json?%s" $query -}}
|
{{- $api := printf "https://vimeo.com/api/oembed.json?%s" $query -}}
|
||||||
{{- with resources.GetRemote $api -}}
|
{{- with try (resources.GetRemote $api) -}}
|
||||||
{{ with .Err }}
|
{{ with .Err }}
|
||||||
{{ errorf "Unable to parse video metadata '%q': %s\n %s" $api $origin . }}
|
{{ errorf "Unable to parse video metadata '%q': %s\n %s" $api $origin . }}
|
||||||
{{ else }}
|
{{ else }}
|
||||||
{{ $data := . | transform.Unmarshal }}
|
{{ $data := .Value | transform.Unmarshal }}
|
||||||
{{ if $autotitle }}{{ with $data.title }}{{ $title = . }}{{ end }}{{ end }}
|
{{ if $autotitle }}{{ with $data.title }}{{ $title = . }}{{ end }}{{ end }}
|
||||||
{{ $padding = printf "%.2f%%" (mul (div $data.height $data.width) 100) }}
|
{{ $padding = printf "%.2f%%" (mul (div $data.height $data.width) 100) }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
@@ -117,9 +117,21 @@
|
|||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{ $url := printf "https://player.cloudinary.com/embed/?cloud_name=%s&public_id=%s" $account $id }}
|
{{ $url := printf "https://player.cloudinary.com/embed/?cloud_name=%s&public_id=%s" $account $id }}
|
||||||
{{ $params := "&controls=true" }}
|
{{ $params := "" }}
|
||||||
{{ if $autoplay }}{{ $params = print $params "&autoplay=true&muted=true" }}{{ end }}
|
{{ if $autoplay }}{{ $params = print $params "&player[autoplay]=true&player[muted]=true" }}{{ end }}
|
||||||
{{ with $params }}{{ $url = print $url . }}{{ end }}
|
|
||||||
|
{{ $codecs := slice }}
|
||||||
|
{{ with index site.Params "dam" }}{{ with index . "videoCodecs" }}{{ $codecs = . }}{{ end }}{{ end }}
|
||||||
|
{{ range $k, $v := $codecs }}
|
||||||
|
{{ $params = printf "%s&source[source_types][%d]=%s" $params $k (urlquery $v) }}
|
||||||
|
{{ end }}
|
||||||
|
{{ if gt (len $codecs) 0 }}
|
||||||
|
{{ $params = print $params "&source[transformation][1][quality]=auto" }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ with .options }}{{ $params = print $params "&" . }}{{ end }}
|
||||||
|
{{ $params = strings.TrimLeft "?&" $params }}
|
||||||
|
{{ with $params }}{{ $url = print $url "&" . }}{{ end }}
|
||||||
{{ $padding := "56.25%" }}
|
{{ $padding := "56.25%" }}
|
||||||
|
|
||||||
{{ $thumbnail := partial "utilities/URLJoin.html" (dict "base" (path.Dir $id) "path" (printf "%s.jpg" (path.BaseName $id))) }}
|
{{ $thumbnail := partial "utilities/URLJoin.html" (dict "base" (path.Dir $id) "path" (printf "%s.jpg" (path.BaseName $id))) }}
|
||||||
@@ -136,7 +148,7 @@
|
|||||||
{{ if not $title }}{{ $title = printf "Cloudinary video '%s'" (path.BaseName $id) }}{{ end }}
|
{{ if not $title }}{{ $title = printf "Cloudinary video '%s'" (path.BaseName $id) }}{{ end }}
|
||||||
|
|
||||||
<div class="video-embedded {{ $class }}" data-video-padding="{{ $padding }}">
|
<div class="video-embedded {{ $class }}" data-video-padding="{{ $padding }}">
|
||||||
<iframe src="{{ $url | safeHTMLAttr }}" title="{{ $title }}" webkitallowfullscreen mozallowfullscreen allowfullscreen>
|
<iframe src="{{ $url | safeURL }}" title="{{ $title }}" allow="autoplay; fullscreen; encrypted-media" frameborder="0">
|
||||||
</iframe>
|
</iframe>
|
||||||
</div>
|
</div>
|
||||||
{{ else }}
|
{{ else }}
|
||||||
|
@@ -13,7 +13,9 @@
|
|||||||
<div class="col col-6">
|
<div class="col col-6">
|
||||||
<div class="row justify-content-end p-0">
|
<div class="row justify-content-end p-0">
|
||||||
<div class="col-12 col-md-8 p-0">
|
<div class="col-12 col-md-8 p-0">
|
||||||
<div class="fs-3 fw-bold">{{ or .Site.Params.footer.socialTitle .Site.Params.social.title }}</div>
|
{{- $title := or .Site.Params.footer.socialTitle .Site.Params.social.title }}
|
||||||
|
{{ if site.Params.main.titleCase }}{{ $title = title $title }}{{ end }}
|
||||||
|
<div class="fs-3 fw-bold">{{ $title }}</div>
|
||||||
<p>{{ or .Site.Params.footer.socialCaption .Site.Params.social.caption }}</p>
|
<p>{{ or .Site.Params.footer.socialCaption .Site.Params.social.caption }}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -2,13 +2,13 @@
|
|||||||
|
|
||||||
<!-- Adapted from doks -->
|
<!-- Adapted from doks -->
|
||||||
{{ with .Params.meta.title }}
|
{{ with .Params.meta.title }}
|
||||||
{{ $.Scratch.Set "title" . -}}
|
{{ $title := . }}
|
||||||
|
{{ if site.Params.main.titleCase }}{{ $title = title $title }}{{ end }}
|
||||||
|
{{ $.Scratch.Set "title" $title -}}
|
||||||
{{ else }}
|
{{ else }}
|
||||||
{{ with .Title -}}
|
{{ $title := .Title | default .Site.Title }}
|
||||||
{{ $.Scratch.Set "title" . -}}
|
{{ if site.Params.main.titleCase }}{{ $title = title $title }}{{ end }}
|
||||||
{{ else -}}
|
{{ $.Scratch.Set "title" $title -}}
|
||||||
{{ $.Scratch.Set "title" .Site.Title -}}
|
|
||||||
{{ end -}}
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{ $description := or (partial "utilities/GetDescription.html" (dict "page" . "meta" true)) .Site.Params.main.description }}
|
{{ $description := or (partial "utilities/GetDescription.html" (dict "page" . "meta" true)) .Site.Params.main.description }}
|
||||||
|
@@ -33,7 +33,10 @@
|
|||||||
{{- $align := .align | default "center" -}}
|
{{- $align := .align | default "center" -}}
|
||||||
|
|
||||||
<div class="text-{{ $align }}">
|
<div class="text-{{ $align }}">
|
||||||
{{ with $page.Title }}<p class="display-4">{{ . }}</p>{{ end }}
|
{{ $title := $page.Title }}
|
||||||
|
{{ if site.Params.main.titleCase }}{{ $title = title $title }}{{ end }}
|
||||||
|
|
||||||
|
{{ with $title }}<p class="display-4">{{ . }}</p>{{ end }}
|
||||||
<span class="fs-5 text-muted">{{ $page.Description }}</span>
|
<span class="fs-5 text-muted">{{ $page.Description }}</span>
|
||||||
|
|
||||||
{{ if $actions }}
|
{{ if $actions }}
|
||||||
|
@@ -46,6 +46,8 @@
|
|||||||
{{- with index . "title" }}{{ $title = or . $title }}{{ end -}}
|
{{- with index . "title" }}{{ $title = or . $title }}{{ end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
|
{{ if site.Params.main.titleCase }}{{ $title = title $title }}{{ end }}
|
||||||
|
|
||||||
{{- $thumbnail := "" -}}
|
{{- $thumbnail := "" -}}
|
||||||
{{ if reflect.IsMap $sectionPage.Params.Thumbnail }}{{ $thumbnail = $sectionPage.Params.Thumbnail.url }}{{ else }}{{ $thumbnail = $sectionPage.Params.Thumbnail }}{{ end }}
|
{{ if reflect.IsMap $sectionPage.Params.Thumbnail }}{{ $thumbnail = $sectionPage.Params.Thumbnail.url }}{{ else }}{{ $thumbnail = $sectionPage.Params.Thumbnail }}{{ end }}
|
||||||
{{- $icon := $sectionPage.Params.Icon -}}
|
{{- $icon := $sectionPage.Params.Icon -}}
|
||||||
|
@@ -53,11 +53,11 @@
|
|||||||
|
|
||||||
<div class="accordion-item">
|
<div class="accordion-item">
|
||||||
{{- with $header -}}
|
{{- with $header -}}
|
||||||
<h2 class="accordion-header m-0" id="{{ $parent }}-heading-{{ $id }}">
|
<div class="accordion-header m-0 fs-2" id="{{ $parent }}-heading-{{ $id }}">
|
||||||
<button class="accordion-button{{ if not $show }} collapsed{{ end }}" type="button" data-bs-toggle="collapse" data-bs-target="#{{ $parent }}-item-{{ $id }}" aria-expanded="false" aria-controls="{{ $parent }}-item-{{ $id }}">
|
<button class="accordion-button{{ if not $show }} collapsed{{ end }}" type="button" data-bs-toggle="collapse" data-bs-target="#{{ $parent }}-item-{{ $id }}" aria-expanded="false" aria-controls="{{ $parent }}-item-{{ $id }}">
|
||||||
{{ . }}
|
{{ . }}
|
||||||
</button>
|
</button>
|
||||||
</h2>
|
</div>
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
<div id="{{ $parent }}-item-{{ $id }}" class="accordion-collapse collapse{{ if $show }} show{{ end }}{{ with $class }} {{ . }}{{ end }}" aria-labelledby="{{ $parent }}-heading-{{ $id }}" data-bs-parent="#{{ $parent }}">
|
<div id="{{ $parent }}-item-{{ $id }}" class="accordion-collapse collapse{{ if $show }} show{{ end }}{{ with $class }} {{ . }}{{ end }}" aria-labelledby="{{ $parent }}-heading-{{ $id }}" data-bs-parent="#{{ $parent }}">
|
||||||
<div class="accordion-body">{{ $body | .Page.RenderString | safeHTML }}</div>
|
<div class="accordion-body">{{ $body | .Page.RenderString | safeHTML }}</div>
|
||||||
|
@@ -81,5 +81,5 @@
|
|||||||
{{ end }}
|
{{ end }}
|
||||||
{{ 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 }}
|
{{ end }}
|
@@ -22,7 +22,10 @@
|
|||||||
{{ $force := false }}
|
{{ $force := false }}
|
||||||
{{ $cue := site.Params.main.externalLinks.cue }}
|
{{ $cue := site.Params.main.externalLinks.cue }}
|
||||||
{{ $tab := site.Params.main.externalLinks.tab }}
|
{{ $tab := site.Params.main.externalLinks.tab }}
|
||||||
{{ $text := trim .Inner " \r\n" | .Page.RenderString | safeHTML }}
|
{{ $text := chomp .Inner }}
|
||||||
|
{{ if site.Params.main.titleCase }}{{ $text = title $text }}{{ end }}
|
||||||
|
{{ $text := $text | .Page.RenderString | safeHTML }}
|
||||||
|
|
||||||
{{- $anchor := "" -}}
|
{{- $anchor := "" -}}
|
||||||
|
|
||||||
{{ if .IsNamedParams }}
|
{{ if .IsNamedParams }}
|
||||||
|
@@ -5,63 +5,34 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
{{ $error := false }}
|
{{ $error := false }}
|
||||||
|
{{ $args := dict }}
|
||||||
<!-- Validate arguments -->
|
{{ $breakpoint := "" }}
|
||||||
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "table" "args" .Params) }}
|
|
||||||
{{ errorf "Invalid arguments: %s" .Position -}}
|
|
||||||
{{ $error = true }}
|
|
||||||
{{ end }}
|
|
||||||
|
|
||||||
<!-- Initialize arguments -->
|
<!-- Initialize arguments -->
|
||||||
{{ $breakpoint := "" }}
|
|
||||||
{{ $class := "" }}
|
|
||||||
{{ $sortable := false }}
|
|
||||||
{{ $paging := false }}
|
|
||||||
{{ $searchable := false }}
|
|
||||||
{{ $pagingOptionPerPage := 10 }}
|
|
||||||
{{ $pagingOptionPerPageSelect := "" }}
|
|
||||||
|
|
||||||
{{- if .IsNamedParams -}}
|
{{- if .IsNamedParams -}}
|
||||||
{{ $breakpoint = .Get "breakpoint" }}
|
{{ $args = partial "utilities/InitArgs.html" (dict "structure" "table" "args" .Params "group" "shortcode") }}
|
||||||
{{ $class = .Get "class" | default "" }}
|
{{ if $args.err }}
|
||||||
{{ if isset .Params "sortable" }}{{ $sortable = partial "utilities/CastBool.html" (.Get "sortable") }}{{ end }}
|
{{ partial "utilities/LogErr.html" (dict
|
||||||
{{ if isset .Params "paging" }}{{ $paging = partial "utilities/CastBool.html" (.Get "paging") }}{{ end }}
|
"partial" "shortcodes/table.html"
|
||||||
{{ if isset .Params "searchable" }}{{ $searchable = partial "utilities/CastBool.html" (.Get "searchable") }}{{ end }}
|
"msg" "Invalid arguments"
|
||||||
{{ if isset .Params "pagingOptionPerPage" }}{{ $pagingOptionPerPage = (.Get "pagingOptionPerPage") }}{{ end }}
|
"details" $args.errmsg
|
||||||
{{ if isset .Params "pagingOptionPerPageSelect" }}{{ $pagingOptionPerPageSelect = (.Get "OptionPerPageSelect") }}{{ end }}
|
"file" page.File
|
||||||
|
)}}
|
||||||
|
{{ end }}
|
||||||
{{ else }}
|
{{ else }}
|
||||||
{{ $breakpoint = .Get 0 }}
|
{{ $breakpoint = .Get 0 }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
<!-- Main code -->
|
<!-- Main code -->
|
||||||
{{ if or $sortable $paging $searchable }}{{ $class = trim (printf "%s data-table" $class) " " }}{{ end }}
|
{{ partial "assets/table.html" (dict
|
||||||
|
"page" .Page
|
||||||
{{- $input := .Inner | .Page.RenderString }}
|
"input" .Inner
|
||||||
{{ $regex := `<table\s*class="(.+?)"` }}
|
"breakpoint" (or $breakpoint $args.breakpoint)
|
||||||
{{ $current := (index (index (findRESubmatch $regex $input) 0) 1) }}
|
"class" $args.class
|
||||||
{{ $target := delimit (((split $current " ") | append "table" | append $class) | uniq) " " }}
|
"sortable" $args.sortable
|
||||||
|
"paging" $args.paging
|
||||||
{{ $attributes := "" }}
|
"pagingOptionPerPage" $args.pagingOptionPerPage
|
||||||
{{ if $sortable }}{{ $attributes = printf "%s data-table-sortable=true" $attributes }}{{ end }}
|
"pagingOptionPageSelect" $args.pagingOptionPageSelect
|
||||||
{{ if $paging }}
|
"searchable" $args.searchable
|
||||||
{{ $attributes = printf "%s data-table-paging=true" $attributes }}
|
"wrap" $args.wrap
|
||||||
{{ $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 }}
|
|
||||||
|
@@ -3,6 +3,8 @@
|
|||||||
{{- $layout := $page.Params.layout -}}
|
{{- $layout := $page.Params.layout -}}
|
||||||
{{- $breakpoint := $.Scratch.Get "breakpoint" -}}
|
{{- $breakpoint := $.Scratch.Get "breakpoint" -}}
|
||||||
{{- $hasSidebar := site.Params.navigation.sidebar | default true -}}
|
{{- $hasSidebar := site.Params.navigation.sidebar | default true -}}
|
||||||
|
{{- $pageTitle := .Page.Title }}
|
||||||
|
{{ if site.Params.main.titleCase }}{{ $pageTitle = title $pageTitle }}{{ end }}
|
||||||
|
|
||||||
<div class="container-xxl flex-fill p-4 px-xxl-0">
|
<div class="container-xxl flex-fill p-4 px-xxl-0">
|
||||||
<div class="row row-cols-1 row-cols-{{ $breakpoint.prev }}-{{ if $hasSidebar }}3{{ else }}2{{ end }}">
|
<div class="row row-cols-1 row-cols-{{ $breakpoint.prev }}-{{ if $hasSidebar }}3{{ else }}2{{ end }}">
|
||||||
@@ -14,17 +16,20 @@
|
|||||||
{{ end -}}
|
{{ end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
<p class="display-4 mt-5">{{ .Page.Title }}</p>
|
<p class="display-4 mt-5">{{ $pageTitle }}</p>
|
||||||
|
|
||||||
{{ if eq .Kind "taxonomy" }}
|
{{ if eq .Kind "taxonomy" }}
|
||||||
<div class="row mt-5"></div>
|
<div class="row mt-5"></div>
|
||||||
{{ range $.Site.Taxonomies.tags.ByCount }}
|
{{ range $.Site.Taxonomies.tags.ByCount }}
|
||||||
|
{{- $title := .Page.Title }}
|
||||||
|
{{ if site.Params.main.titleCase }}{{ $title = title $title }}{{ end }}
|
||||||
|
|
||||||
<div class="row mt-2">
|
<div class="row mt-2">
|
||||||
<div class="col-3 mt-auto text-right">
|
<div class="col-3 mt-auto text-right">
|
||||||
{{ .Count }} {{ if gt .Count 1 }} {{ T "articles" }} {{ else }} {{ T "article" }} {{ end }}
|
{{ .Count }} {{ if gt .Count 1 }} {{ T "articles" }} {{ else }} {{ T "article" }} {{ end }}
|
||||||
</div>
|
</div>
|
||||||
<div class="col-9">
|
<div class="col-9">
|
||||||
<a href="{{ .Page.RelPermalink }}">{{ .Page.Title | .Page.RenderString }}</a>
|
<a href="{{ .Page.RelPermalink }}">{{ $title | .Page.RenderString }}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
@@ -37,6 +42,8 @@
|
|||||||
{{ range .Pages }}
|
{{ range .Pages }}
|
||||||
{{ $year := .Date.Year }}
|
{{ $year := .Date.Year }}
|
||||||
{{ $lastYear := $.Scratch.Get "lastYear"}}
|
{{ $lastYear := $.Scratch.Get "lastYear"}}
|
||||||
|
{{- $title := .Title }}
|
||||||
|
{{ if site.Params.main.titleCase }}{{ $title = title $title }}{{ end }}
|
||||||
<div class="row mt-2">
|
<div class="row mt-2">
|
||||||
<div class="d-none d-{{ $breakpoint.prev }}-block col-{{ $breakpoint.prev }}-3 mt-auto text-right">
|
<div class="d-none d-{{ $breakpoint.prev }}-block col-{{ $breakpoint.prev }}-3 mt-auto text-right">
|
||||||
{{ with .Date }}
|
{{ with .Date }}
|
||||||
@@ -52,7 +59,7 @@
|
|||||||
<p class="text-body-secondary mt-5">{{ $year }}</p>
|
<p class="text-body-secondary mt-5">{{ $year }}</p>
|
||||||
{{ $.Scratch.Set "lastYear" $year }}
|
{{ $.Scratch.Set "lastYear" $year }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<a href="{{ .Page.RelPermalink }}">{{ if .Draft }}{{ T "draft" | upper }}: {{ end }}{{ .Title | .Page.RenderString }}</a>
|
<a href="{{ .Page.RelPermalink }}">{{ if .Draft }}{{ T "draft" | upper }}: {{ end }}{{ $title | .Page.RenderString }}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
80
package-lock.json
generated
80
package-lock.json
generated
@@ -1,26 +1,26 @@
|
|||||||
{
|
{
|
||||||
"name": "@gethinode/hinode",
|
"name": "@gethinode/hinode",
|
||||||
"version": "0.27.29",
|
"version": "0.29.3",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "@gethinode/hinode",
|
"name": "@gethinode/hinode",
|
||||||
"version": "0.27.29",
|
"version": "0.29.3",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@fullhuman/postcss-purgecss": "^7.0.2",
|
"@fullhuman/postcss-purgecss": "^7.0.2",
|
||||||
"autoprefixer": "^10.4.20",
|
"autoprefixer": "^10.4.20",
|
||||||
"cssnano": "^7.0.6",
|
"cssnano": "^7.0.6",
|
||||||
"cssnano-preset-advanced": "^7.0.6",
|
"cssnano-preset-advanced": "^7.0.6",
|
||||||
"hugo-bin": "0.137.2",
|
"hugo-bin": "0.139.0",
|
||||||
"purgecss-whitelister": "^2.4.0"
|
"purgecss-whitelister": "^2.4.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@gethinode/netlify-plugin-dartsass": "^0.3.0",
|
"@gethinode/netlify-plugin-dartsass": "^0.3.0",
|
||||||
"cpy-cli": "^5.0.0",
|
"cpy-cli": "^5.0.0",
|
||||||
"eslint": "^9.18.0",
|
"eslint": "^9.19.0",
|
||||||
"markdownlint-cli2": "^0.17.1",
|
"markdownlint-cli2": "^0.17.2",
|
||||||
"neostandard": "^0.12.0",
|
"neostandard": "^0.12.0",
|
||||||
"netlify-plugin-hugo-cache-resources": "^0.2.1",
|
"netlify-plugin-hugo-cache-resources": "^0.2.1",
|
||||||
"npm-run-all": "^4.1.5",
|
"npm-run-all": "^4.1.5",
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
"replace-in-files-cli": "^3.0.0",
|
"replace-in-files-cli": "^3.0.0",
|
||||||
"rimraf": "^6.0.1",
|
"rimraf": "^6.0.1",
|
||||||
"shx": "^0.3.4",
|
"shx": "^0.3.4",
|
||||||
"stylelint": "^16.13.2",
|
"stylelint": "^16.14.0",
|
||||||
"stylelint-config-standard-scss": "^14.0.0"
|
"stylelint-config-standard-scss": "^14.0.0"
|
||||||
},
|
},
|
||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
@@ -378,10 +378,11 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@eslint/js": {
|
"node_modules/@eslint/js": {
|
||||||
"version": "9.18.0",
|
"version": "9.19.0",
|
||||||
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.18.0.tgz",
|
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.19.0.tgz",
|
||||||
"integrity": "sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==",
|
"integrity": "sha512-rbq9/g38qjfqFLOVPvwjIvFFdNziEC5S65jmjPw5r6A//QH+W91akh9irMwjDN8zKUTak6W9EsAv4m/7Wnw0UQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
|
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
|
||||||
}
|
}
|
||||||
@@ -789,9 +790,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@types/ms": {
|
"node_modules/@types/ms": {
|
||||||
"version": "0.7.34",
|
"version": "2.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz",
|
"resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz",
|
||||||
"integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==",
|
"integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@types/unist": {
|
"node_modules/@types/unist": {
|
||||||
@@ -2792,17 +2793,18 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/eslint": {
|
"node_modules/eslint": {
|
||||||
"version": "9.18.0",
|
"version": "9.19.0",
|
||||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-9.18.0.tgz",
|
"resolved": "https://registry.npmjs.org/eslint/-/eslint-9.19.0.tgz",
|
||||||
"integrity": "sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA==",
|
"integrity": "sha512-ug92j0LepKlbbEv6hD911THhoRHmbdXt2gX+VDABAW/Ir7D3nqKdv5Pf5vtlyY6HQMTEP2skXY43ueqTCWssEA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@eslint-community/eslint-utils": "^4.2.0",
|
"@eslint-community/eslint-utils": "^4.2.0",
|
||||||
"@eslint-community/regexpp": "^4.12.1",
|
"@eslint-community/regexpp": "^4.12.1",
|
||||||
"@eslint/config-array": "^0.19.0",
|
"@eslint/config-array": "^0.19.0",
|
||||||
"@eslint/core": "^0.10.0",
|
"@eslint/core": "^0.10.0",
|
||||||
"@eslint/eslintrc": "^3.2.0",
|
"@eslint/eslintrc": "^3.2.0",
|
||||||
"@eslint/js": "9.18.0",
|
"@eslint/js": "9.19.0",
|
||||||
"@eslint/plugin-kit": "^0.2.5",
|
"@eslint/plugin-kit": "^0.2.5",
|
||||||
"@humanfs/node": "^0.16.6",
|
"@humanfs/node": "^0.16.6",
|
||||||
"@humanwhocodes/module-importer": "^1.0.1",
|
"@humanwhocodes/module-importer": "^1.0.1",
|
||||||
@@ -4172,9 +4174,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/hugo-bin": {
|
"node_modules/hugo-bin": {
|
||||||
"version": "0.137.2",
|
"version": "0.139.0",
|
||||||
"resolved": "https://registry.npmjs.org/hugo-bin/-/hugo-bin-0.137.2.tgz",
|
"resolved": "https://registry.npmjs.org/hugo-bin/-/hugo-bin-0.139.0.tgz",
|
||||||
"integrity": "sha512-tnq0BeOEHydDVboO3cVeq4aZ9ejzZA/iabSSuV346cQC8XwKH5rqZlA9xByJmijth4zZDeuvnDRpRVQf8NsHeA==",
|
"integrity": "sha512-ZjtVqatwvqCW6BSRNucj3xsNVoO3ZjuZDCg0NGQC0B/Wsvc6vwVfS7E6KD755XJ/N6o7raa3qXe+gIvJiew7cA==",
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"type": "github",
|
"type": "github",
|
||||||
@@ -4182,6 +4184,7 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"hasInstallScript": true,
|
"hasInstallScript": true,
|
||||||
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@xhmikosr/bin-wrapper": "^13.0.5",
|
"@xhmikosr/bin-wrapper": "^13.0.5",
|
||||||
"package-config": "^5.0.0"
|
"package-config": "^5.0.0"
|
||||||
@@ -4910,9 +4913,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/katex": {
|
"node_modules/katex": {
|
||||||
"version": "0.16.19",
|
"version": "0.16.21",
|
||||||
"resolved": "https://registry.npmjs.org/katex/-/katex-0.16.19.tgz",
|
"resolved": "https://registry.npmjs.org/katex/-/katex-0.16.21.tgz",
|
||||||
"integrity": "sha512-3IA6DYVhxhBabjSLTNO9S4+OliA3Qvb8pBQXMfC4WxXJgLwZgnfDl0BmB4z6nBMdznBsZ+CGM8DrGZ5hcguDZg==",
|
"integrity": "sha512-XvqR7FgOHtWupfMiigNzmh+MgUVmDGU2kXZm899ZkPfcuoPuFxyHmXsgATDpFZDAXCI8tvinaVcDo8PIIJSo4A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"funding": [
|
"funding": [
|
||||||
"https://opencollective.com/katex",
|
"https://opencollective.com/katex",
|
||||||
@@ -5111,9 +5114,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/markdownlint": {
|
"node_modules/markdownlint": {
|
||||||
"version": "0.37.3",
|
"version": "0.37.4",
|
||||||
"resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.37.3.tgz",
|
"resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.37.4.tgz",
|
||||||
"integrity": "sha512-eoQqH0291YCCjd+Pe1PUQ9AmWthlVmS0XWgcionkZ8q34ceZyRI+pYvsWksXJJL8OBkWCPwp1h/pnXxrPFC4oA==",
|
"integrity": "sha512-u00joA/syf3VhWh6/ybVFkib5Zpj2e5KB/cfCei8fkSRuums6nyisTWGqjTWIOFoFwuXoTBQQiqlB4qFKp8ncQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"markdown-it": "14.1.0",
|
"markdown-it": "14.1.0",
|
||||||
@@ -5134,15 +5137,15 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/markdownlint-cli2": {
|
"node_modules/markdownlint-cli2": {
|
||||||
"version": "0.17.1",
|
"version": "0.17.2",
|
||||||
"resolved": "https://registry.npmjs.org/markdownlint-cli2/-/markdownlint-cli2-0.17.1.tgz",
|
"resolved": "https://registry.npmjs.org/markdownlint-cli2/-/markdownlint-cli2-0.17.2.tgz",
|
||||||
"integrity": "sha512-n1Im9lhKJJE12/u2N0GWBwPqeb0HGdylN8XpSFg9hbj35+QalY9Vi6mxwUQdG6wlSrrIq9ZDQ0Q85AQG9V2WOg==",
|
"integrity": "sha512-XH06ZOi8wCrtOSSj3p8y3yJzwgzYOSa7lglNyS3fP05JPRzRGyjauBb5UvlLUSCGysMmULS1moxdRHHudV+g/Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"globby": "14.0.2",
|
"globby": "14.0.2",
|
||||||
"js-yaml": "4.1.0",
|
"js-yaml": "4.1.0",
|
||||||
"jsonc-parser": "3.3.1",
|
"jsonc-parser": "3.3.1",
|
||||||
"markdownlint": "0.37.3",
|
"markdownlint": "0.37.4",
|
||||||
"markdownlint-cli2-formatter-default": "0.0.5",
|
"markdownlint-cli2-formatter-default": "0.0.5",
|
||||||
"micromatch": "4.0.8"
|
"micromatch": "4.0.8"
|
||||||
},
|
},
|
||||||
@@ -6587,9 +6590,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/postcss": {
|
"node_modules/postcss": {
|
||||||
"version": "8.4.49",
|
"version": "8.5.1",
|
||||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz",
|
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.1.tgz",
|
||||||
"integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==",
|
"integrity": "sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==",
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"type": "opencollective",
|
"type": "opencollective",
|
||||||
@@ -6606,7 +6609,7 @@
|
|||||||
],
|
],
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"nanoid": "^3.3.7",
|
"nanoid": "^3.3.8",
|
||||||
"picocolors": "^1.1.1",
|
"picocolors": "^1.1.1",
|
||||||
"source-map-js": "^1.2.1"
|
"source-map-js": "^1.2.1"
|
||||||
},
|
},
|
||||||
@@ -8358,9 +8361,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/stylelint": {
|
"node_modules/stylelint": {
|
||||||
"version": "16.13.2",
|
"version": "16.14.0",
|
||||||
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.13.2.tgz",
|
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.14.0.tgz",
|
||||||
"integrity": "sha512-wDlgh0mRO9RtSa3TdidqHd0nOG8MmUyVKl+dxA6C1j8aZRzpNeEgdhFmU5y4sZx4Fc6r46p0fI7p1vR5O2DZqA==",
|
"integrity": "sha512-orePw2dKxzXC0hd1VmxrDBqgf1KUV9DYsZY4guKLE9XcQD7m0BxVnWMaoQqMNsQIG14MyyTHf6zoajvOnDra8g==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -8372,6 +8375,7 @@
|
|||||||
"url": "https://github.com/sponsors/stylelint"
|
"url": "https://github.com/sponsors/stylelint"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@csstools/css-parser-algorithms": "^3.0.4",
|
"@csstools/css-parser-algorithms": "^3.0.4",
|
||||||
"@csstools/css-tokenizer": "^3.0.3",
|
"@csstools/css-tokenizer": "^3.0.3",
|
||||||
@@ -8391,7 +8395,7 @@
|
|||||||
"globby": "^11.1.0",
|
"globby": "^11.1.0",
|
||||||
"globjoin": "^0.1.4",
|
"globjoin": "^0.1.4",
|
||||||
"html-tags": "^3.3.1",
|
"html-tags": "^3.3.1",
|
||||||
"ignore": "^7.0.1",
|
"ignore": "^7.0.3",
|
||||||
"imurmurhash": "^0.1.4",
|
"imurmurhash": "^0.1.4",
|
||||||
"is-plain-object": "^5.0.0",
|
"is-plain-object": "^5.0.0",
|
||||||
"known-css-properties": "^0.35.0",
|
"known-css-properties": "^0.35.0",
|
||||||
@@ -8400,7 +8404,7 @@
|
|||||||
"micromatch": "^4.0.8",
|
"micromatch": "^4.0.8",
|
||||||
"normalize-path": "^3.0.0",
|
"normalize-path": "^3.0.0",
|
||||||
"picocolors": "^1.1.1",
|
"picocolors": "^1.1.1",
|
||||||
"postcss": "^8.4.49",
|
"postcss": "^8.5.1",
|
||||||
"postcss-resolve-nested-selector": "^0.1.6",
|
"postcss-resolve-nested-selector": "^0.1.6",
|
||||||
"postcss-safe-parser": "^7.0.1",
|
"postcss-safe-parser": "^7.0.1",
|
||||||
"postcss-selector-parser": "^7.0.0",
|
"postcss-selector-parser": "^7.0.0",
|
||||||
|
10
package.json
10
package.json
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@gethinode/hinode",
|
"name": "@gethinode/hinode",
|
||||||
"version": "0.27.29",
|
"version": "0.29.3",
|
||||||
"description": "Hinode is a clean documentation and blog theme for Hugo, an open-source static site generator",
|
"description": "Hinode is a clean documentation and blog theme for Hugo, an open-source static site generator",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"hugo",
|
"hugo",
|
||||||
@@ -73,14 +73,14 @@
|
|||||||
"autoprefixer": "^10.4.20",
|
"autoprefixer": "^10.4.20",
|
||||||
"cssnano": "^7.0.6",
|
"cssnano": "^7.0.6",
|
||||||
"cssnano-preset-advanced": "^7.0.6",
|
"cssnano-preset-advanced": "^7.0.6",
|
||||||
"hugo-bin": "0.137.2",
|
"hugo-bin": "0.139.0",
|
||||||
"purgecss-whitelister": "^2.4.0"
|
"purgecss-whitelister": "^2.4.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@gethinode/netlify-plugin-dartsass": "^0.3.0",
|
"@gethinode/netlify-plugin-dartsass": "^0.3.0",
|
||||||
"cpy-cli": "^5.0.0",
|
"cpy-cli": "^5.0.0",
|
||||||
"eslint": "^9.18.0",
|
"eslint": "^9.19.0",
|
||||||
"markdownlint-cli2": "^0.17.1",
|
"markdownlint-cli2": "^0.17.2",
|
||||||
"neostandard": "^0.12.0",
|
"neostandard": "^0.12.0",
|
||||||
"netlify-plugin-hugo-cache-resources": "^0.2.1",
|
"netlify-plugin-hugo-cache-resources": "^0.2.1",
|
||||||
"npm-run-all": "^4.1.5",
|
"npm-run-all": "^4.1.5",
|
||||||
@@ -88,7 +88,7 @@
|
|||||||
"replace-in-files-cli": "^3.0.0",
|
"replace-in-files-cli": "^3.0.0",
|
||||||
"rimraf": "^6.0.1",
|
"rimraf": "^6.0.1",
|
||||||
"shx": "^0.3.4",
|
"shx": "^0.3.4",
|
||||||
"stylelint": "^16.13.2",
|
"stylelint": "^16.14.0",
|
||||||
"stylelint-config-standard-scss": "^14.0.0"
|
"stylelint-config-standard-scss": "^14.0.0"
|
||||||
},
|
},
|
||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
|
@@ -6,7 +6,7 @@ homepage = "https://gethinode.com"
|
|||||||
demosite = "https://demo.gethinode.com"
|
demosite = "https://demo.gethinode.com"
|
||||||
tags = ["blog", "documentation", "minimal", "modern", "customizable", "search", "bootstrap"]
|
tags = ["blog", "documentation", "minimal", "modern", "customizable", "search", "bootstrap"]
|
||||||
features = ["security aware", "fast by default", "seo-ready", "development tools", "bootstrap framework", "netlify-ready", "full text search", "page layouts", "versioned documentation"]
|
features = ["security aware", "fast by default", "seo-ready", "development tools", "bootstrap framework", "netlify-ready", "full text search", "page layouts", "versioned documentation"]
|
||||||
min_version = "0.139.0"
|
min_version = "0.141.0"
|
||||||
|
|
||||||
[author]
|
[author]
|
||||||
name = "Mark Dumay"
|
name = "Mark Dumay"
|
||||||
|
Reference in New Issue
Block a user