mirror of
https://github.com/gethinode/hinode.git
synced 2025-10-07 10:04:22 +00:00
Compare commits
130 Commits
v0.16.0-be
...
v0.17.3
Author | SHA1 | Date | |
---|---|---|---|
![]() |
3d082a51a3 | ||
![]() |
db6b6238c5 | ||
![]() |
6011e5637a | ||
![]() |
855bf85be6 | ||
![]() |
ec37884f7a | ||
![]() |
057720bca8 | ||
![]() |
e3d607bd25 | ||
![]() |
a9e3a5ecbb | ||
![]() |
f9a3edbf30 | ||
![]() |
c199aa0902 | ||
![]() |
dfafdbb8af | ||
![]() |
c4d8507638 | ||
![]() |
44d5cfa4de | ||
![]() |
5aa3cfb80f | ||
![]() |
22b83dbcf9 | ||
![]() |
0a88ae04b9 | ||
![]() |
bf068977a6 | ||
![]() |
5dfc99efa0 | ||
![]() |
84f09f0dcb | ||
![]() |
65d9635f61 | ||
![]() |
452bd92029 | ||
![]() |
87fc26e289 | ||
![]() |
aad1335523 | ||
![]() |
a216b26857 | ||
![]() |
2c121c6cde | ||
![]() |
2bc4ff0233 | ||
![]() |
a76c80ba17 | ||
![]() |
6580955770 | ||
![]() |
38d6c01983 | ||
![]() |
af2ba38a86 | ||
![]() |
0242d388b5 | ||
![]() |
5a78dda34f | ||
![]() |
8564e3e2fc | ||
![]() |
913c6ad158 | ||
![]() |
5e676ee5fa | ||
![]() |
f1b4e556c4 | ||
![]() |
9856b670e6 | ||
![]() |
88ff187891 | ||
![]() |
5c54291eb8 | ||
![]() |
2a862034aa | ||
![]() |
56e0713582 | ||
![]() |
23a3f7ef71 | ||
![]() |
3418ac8d1d | ||
![]() |
c645024474 | ||
![]() |
f35c66c0ae | ||
![]() |
f479764542 | ||
![]() |
ab7cc04821 | ||
![]() |
6dd208f671 | ||
![]() |
833e438a23 | ||
![]() |
9d829b6d94 | ||
![]() |
0f42fae2c4 | ||
![]() |
a2f7749aa2 | ||
![]() |
ba87ccd4a5 | ||
![]() |
1c68399313 | ||
![]() |
30714ef6da | ||
![]() |
1ef92a0928 | ||
![]() |
8331a6ce7c | ||
![]() |
fd34766ffb | ||
![]() |
78573f8e51 | ||
![]() |
4a0cc8bc88 | ||
![]() |
8fd6f2af4e | ||
![]() |
0191e14a69 | ||
![]() |
1f8fb26278 | ||
![]() |
50548237c6 | ||
![]() |
7f35cf45ef | ||
![]() |
528f84c8c6 | ||
![]() |
33ab75ed84 | ||
![]() |
3010136585 | ||
![]() |
676a28c322 | ||
![]() |
a04ec4d73e | ||
![]() |
fcc93788a9 | ||
![]() |
f949a785a1 | ||
![]() |
becba931bc | ||
![]() |
03e3c5b3ee | ||
![]() |
311aa3b957 | ||
![]() |
62db3eb9db | ||
![]() |
56ea9eec47 | ||
![]() |
b845e210b7 | ||
![]() |
e8bba05213 | ||
![]() |
74d0d625c6 | ||
![]() |
9d98a3568c | ||
![]() |
dc55571f7a | ||
![]() |
b7ab9d5690 | ||
![]() |
5d20be19a8 | ||
![]() |
ecae077e2d | ||
![]() |
132c316ff0 | ||
![]() |
a3b9081b4d | ||
![]() |
8a689a95de | ||
![]() |
9bd04a5b2a | ||
![]() |
8dc884f846 | ||
![]() |
4cb558440b | ||
![]() |
0d78918aa4 | ||
![]() |
ba7ab907ef | ||
![]() |
af557ac054 | ||
![]() |
9ada0eee80 | ||
![]() |
ae3e20b596 | ||
![]() |
c49e6f14c1 | ||
![]() |
b4f6b1aa3d | ||
![]() |
962549f2ae | ||
![]() |
28601323c4 | ||
![]() |
a11ee72174 | ||
![]() |
8e91440261 | ||
![]() |
19879c4ecc | ||
![]() |
810dfef311 | ||
![]() |
c42fcefa73 | ||
![]() |
a3c417e378 | ||
![]() |
2bee381906 | ||
![]() |
244a3f7496 | ||
![]() |
563b526cea | ||
![]() |
fa7fad67b5 | ||
![]() |
966906778d | ||
![]() |
135128a5f9 | ||
![]() |
25663974ce | ||
![]() |
af5643f98f | ||
![]() |
743126d9b9 | ||
![]() |
b0187e3a75 | ||
![]() |
c7613ab7a8 | ||
![]() |
2a6a119762 | ||
![]() |
b556f4f4ec | ||
![]() |
9fa95da778 | ||
![]() |
3a07b36447 | ||
![]() |
ca5ed02bf9 | ||
![]() |
d19321af56 | ||
![]() |
142e21d792 | ||
![]() |
4c00655584 | ||
![]() |
38a2b9ff72 | ||
![]() |
efe8837eb3 | ||
![]() |
130e95ace5 | ||
![]() |
e6e38ac7c3 | ||
![]() |
3c0a6079af |
@@ -1,5 +1,6 @@
|
|||||||
|
assets/js/critical/color.js
|
||||||
assets/js/analytics.js
|
assets/js/analytics.js
|
||||||
assets/js/color.js
|
|
||||||
assets/js/flexsearch.js
|
assets/js/flexsearch.js
|
||||||
|
assets/js/sharing.js
|
||||||
assets/js/vendor
|
assets/js/vendor
|
||||||
node_modules
|
node_modules
|
||||||
|
1
.github/dependabot.yml
vendored
1
.github/dependabot.yml
vendored
@@ -7,3 +7,4 @@ updates:
|
|||||||
directory: "/"
|
directory: "/"
|
||||||
schedule:
|
schedule:
|
||||||
interval: "daily"
|
interval: "daily"
|
||||||
|
versioning-strategy: increase
|
||||||
|
2
.github/workflows/build.yml
vendored
2
.github/workflows/build.yml
vendored
@@ -12,7 +12,7 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
os: [macos-latest, windows-latest, ubuntu-latest]
|
os: [macos-latest, windows-latest, ubuntu-latest]
|
||||||
node-version: [14.x, 16.x, 18.x]
|
node-version: [16.x, 18.x, 20.x]
|
||||||
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
|
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
|
||||||
|
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
|
2
.github/workflows/lint.yml
vendored
2
.github/workflows/lint.yml
vendored
@@ -14,7 +14,7 @@ jobs:
|
|||||||
|
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
node-version: [14.x, 16.x, 18.x]
|
node-version: [16.x, 18.x, 20.x]
|
||||||
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
|
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
@@ -56,10 +56,11 @@
|
|||||||
- [PageSpeed Insights][pagespeed]
|
- [PageSpeed Insights][pagespeed]
|
||||||
- [Mozilla Observatory][observatory]
|
- [Mozilla Observatory][observatory]
|
||||||
|
|
||||||
Hinode is a clean documentation and blog theme for [Hugo][hugo], an open-source static site generator. Based on the [Bootstrap 5][bootstrap] framework, the rendered site is fast, secure, and responsive. Hinode uses [FlexSearch][flexsearch] to enable full text search across your site. Finally, the theme uses [Node Package Manager][npm] to automate the build process and to keep track of dependencies.
|
Hinode is a clean documentation and blog theme for [Hugo][hugo], an open-source static site generator. Based on the [Bootstrap 5][bootstrap] framework, the rendered site is fast, secure, and responsive. Hinode uses [FlexSearch][flexsearch] to enable full text search across your site. Finally, the theme supports [Node Package Manager][npm] to automate the build process and to keep track of dependencies.
|
||||||
|
|
||||||
Additional features include:
|
Additional features include:
|
||||||
|
|
||||||
|
- Flexible configuration of Hugo modules
|
||||||
- Switching between light mode and dark mode
|
- Switching between light mode and dark mode
|
||||||
- Support for multiple languages
|
- Support for multiple languages
|
||||||
- Reusable Bootstrap components through configurable shortcodes and partials
|
- Reusable Bootstrap components through configurable shortcodes and partials
|
||||||
|
@@ -1,3 +1,5 @@
|
|||||||
|
{{- if site.Params.main.enableDarkMode -}}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Color mode toggler for Bootstrap's docs (https://getbootstrap.com/)
|
* Color mode toggler for Bootstrap's docs (https://getbootstrap.com/)
|
||||||
* Copyright 2011-2022 The Bootstrap Authors
|
* Copyright 2011-2022 The Bootstrap Authors
|
||||||
@@ -31,7 +33,7 @@
|
|||||||
const activeSelectors = document.querySelectorAll('.theme-icon-active')
|
const activeSelectors = document.querySelectorAll('.theme-icon-active')
|
||||||
const activeButtons = document.querySelectorAll(`[data-bs-theme-value="${theme}"]`)
|
const activeButtons = document.querySelectorAll(`[data-bs-theme-value="${theme}"]`)
|
||||||
if (activeButtons.length > 0) {
|
if (activeButtons.length > 0) {
|
||||||
const activeIcon = activeButtons[0].querySelector('i')
|
const activeIcon = activeButtons[0].querySelector('span')
|
||||||
|
|
||||||
document.querySelectorAll('[data-bs-theme-value]').forEach(element => {
|
document.querySelectorAll('[data-bs-theme-value]').forEach(element => {
|
||||||
element.classList.remove('active')
|
element.classList.remove('active')
|
||||||
@@ -68,3 +70,5 @@
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
})()
|
})()
|
||||||
|
|
||||||
|
{{- end -}}
|
36
assets/js/sharing.js
Normal file
36
assets/js/sharing.js
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
{{- if site.Params.sharing.webshare -}}
|
||||||
|
|
||||||
|
// Adapted from: https://dev.to/j471n/how-to-share-anything-from-your-website-by-web-share-api-1h5g
|
||||||
|
|
||||||
|
// function for Web Share API
|
||||||
|
function webShareAPI (title, description, link) {
|
||||||
|
navigator
|
||||||
|
.share({
|
||||||
|
title,
|
||||||
|
text: description,
|
||||||
|
url: link
|
||||||
|
})
|
||||||
|
.then(() => console.log('Successful share'))
|
||||||
|
.catch((error) => console.log('Error sharing', error))
|
||||||
|
}
|
||||||
|
|
||||||
|
const shareBtn = document.getElementById('btn-webshare')
|
||||||
|
|
||||||
|
if (shareBtn !== null) {
|
||||||
|
if (navigator.share) {
|
||||||
|
const title = shareBtn.getAttribute('data-sharing-title')
|
||||||
|
const description = shareBtn.getAttribute('data-sharing-description')
|
||||||
|
const url = shareBtn.getAttribute('data-sharing-url')
|
||||||
|
|
||||||
|
// show button if it supports webShareAPI
|
||||||
|
shareBtn.style.display = 'block'
|
||||||
|
shareBtn.addEventListener('click', () =>
|
||||||
|
webShareAPI(title, description, url)
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
// hide button if host does not support Web Share API
|
||||||
|
shareBtn.style.display = 'none'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
{{- end -}}
|
@@ -5,10 +5,6 @@
|
|||||||
@import "common/variables.scss";
|
@import "common/variables.scss";
|
||||||
@import "common/icons.scss";
|
@import "common/icons.scss";
|
||||||
|
|
||||||
{{ if not (in site.Params.modules.core "bootstrap") }}
|
|
||||||
{{ errorf "Bootstrap is a required module, please add it to 'modules.core' in your site parameters" }}
|
|
||||||
{{ end }}
|
|
||||||
|
|
||||||
// Import Bootstrap configuration (mounted by core Bootstrap module)
|
// Import Bootstrap configuration (mounted by core Bootstrap module)
|
||||||
@import "bootstrap.scss";
|
@import "bootstrap.scss";
|
||||||
|
|
||||||
|
@@ -23,19 +23,3 @@ $btn-toggle: url("/icons/btn-toggle.svg") !de
|
|||||||
$btn-toggle-dark: url("/icons/btn-toggle-dark.svg") !default;
|
$btn-toggle-dark: url("/icons/btn-toggle-dark.svg") !default;
|
||||||
|
|
||||||
// scss-docs-end icons
|
// scss-docs-end icons
|
||||||
|
|
||||||
.fa-wrapper {
|
|
||||||
container: wrapper / inline-size;
|
|
||||||
}
|
|
||||||
|
|
||||||
// define fallback size for browsers not supporting containers
|
|
||||||
.fa-fluid {
|
|
||||||
font-size: 5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
// set size based on container width
|
|
||||||
@container (min-width: 0) {
|
|
||||||
.fa-wrapper .fa-fluid {
|
|
||||||
font-size: 60cqi;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@@ -6,9 +6,9 @@
|
|||||||
/* LineLink */ .chroma .lnlinks { outline: none; text-decoration: none; color: inherit }
|
/* LineLink */ .chroma .lnlinks { outline: none; text-decoration: none; color: inherit }
|
||||||
/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
|
/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
|
||||||
/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }
|
/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }
|
||||||
/* LineHighlight */ .chroma .hl { background-color: #ffffcc }
|
/* LineHighlight */ .chroma .hl { background-color: #b8b800 }
|
||||||
/* LineNumbersTable */ .chroma .lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #64686c }
|
/* LineNumbersTable */ .chroma .lnt { white-space: pre; -webkit-user-select: none; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #64686c }
|
||||||
/* LineNumbers */ .chroma .ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #6e7681 }
|
/* LineNumbers */ .chroma .ln { white-space: pre; -webkit-user-select: none; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #6e7681 }
|
||||||
/* Line */ .chroma .line { display: flex; }
|
/* Line */ .chroma .line { display: flex; }
|
||||||
/* Keyword */ .chroma .k { color: #ff7b72 }
|
/* Keyword */ .chroma .k { color: #ff7b72 }
|
||||||
/* KeywordConstant */ .chroma .kc { color: #79c0ff }
|
/* KeywordConstant */ .chroma .kc { color: #79c0ff }
|
||||||
|
@@ -7,8 +7,8 @@
|
|||||||
/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
|
/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
|
||||||
/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }
|
/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }
|
||||||
/* LineHighlight */ .chroma .hl { background-color: #ffffcc }
|
/* LineHighlight */ .chroma .hl { background-color: #ffffcc }
|
||||||
/* LineNumbersTable */ .chroma .lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
|
/* LineNumbersTable */ .chroma .lnt { white-space: pre; -webkit-user-select: none; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
|
||||||
/* LineNumbers */ .chroma .ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
|
/* LineNumbers */ .chroma .ln { white-space: pre; -webkit-user-select: none; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
|
||||||
/* Line */ .chroma .line { display: flex; }
|
/* Line */ .chroma .line { display: flex; }
|
||||||
/* Keyword */ .chroma .k { color: #000000; font-weight: bold }
|
/* Keyword */ .chroma .k { color: #000000; font-weight: bold }
|
||||||
/* KeywordConstant */ .chroma .kc { color: #000000; font-weight: bold }
|
/* KeywordConstant */ .chroma .kc { color: #000000; font-weight: bold }
|
||||||
|
@@ -10,6 +10,7 @@
|
|||||||
|
|
||||||
.syntax-highlight {
|
.syntax-highlight {
|
||||||
background-color: var(--bs-light) if($enable-important-utilities, !important, null);
|
background-color: var(--bs-light) if($enable-important-utilities, !important, null);
|
||||||
|
overflow-x: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.preview-background {
|
.preview-background {
|
||||||
@@ -29,6 +30,7 @@
|
|||||||
|
|
||||||
.syntax-highlight {
|
.syntax-highlight {
|
||||||
background-color: var(--bs-tertiary-bg) if($enable-important-utilities, !important, null);
|
background-color: var(--bs-tertiary-bg) if($enable-important-utilities, !important, null);
|
||||||
|
overflow-x: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bg,
|
.bg,
|
||||||
|
@@ -87,15 +87,24 @@ home = ["HTML", "RSS", "REDIR"]
|
|||||||
extended = true
|
extended = true
|
||||||
min = "0.110.0"
|
min = "0.110.0"
|
||||||
max = ""
|
max = ""
|
||||||
|
[[module.mounts]]
|
||||||
|
source = "archetypes"
|
||||||
|
target = "archetypes"
|
||||||
[[module.mounts]]
|
[[module.mounts]]
|
||||||
source = "assets"
|
source = "assets"
|
||||||
target = "assets"
|
target = "assets"
|
||||||
|
[[module.mounts]]
|
||||||
|
source = "i18n"
|
||||||
|
target = "i18n"
|
||||||
|
[[module.mounts]]
|
||||||
|
source = "layouts"
|
||||||
|
target = "layouts"
|
||||||
[[module.mounts]]
|
[[module.mounts]]
|
||||||
source = "static"
|
source = "static"
|
||||||
target = "static"
|
target = "static"
|
||||||
[[module.mounts]]
|
[[module.mounts]]
|
||||||
source = "static/fonts"
|
source = "netlify.toml"
|
||||||
target = "static/fonts"
|
target = "assets/config/netlify.toml"
|
||||||
# toml-docs-start modules
|
# toml-docs-start modules
|
||||||
[[module.imports]]
|
[[module.imports]]
|
||||||
path = "github.com/gethinode/mod-bootstrap"
|
path = "github.com/gethinode/mod-bootstrap"
|
||||||
|
@@ -32,19 +32,19 @@
|
|||||||
|
|
||||||
[[social]]
|
[[social]]
|
||||||
name = "LinkedIn"
|
name = "LinkedIn"
|
||||||
pre = "<i class=\"fab fa-linkedin fa-2x\"></i>"
|
pre = "fab linkedin"
|
||||||
url = "https://linkedin.com/"
|
url = "https://linkedin.com/"
|
||||||
weight = 10
|
weight = 10
|
||||||
|
|
||||||
[[social]]
|
[[social]]
|
||||||
name = "GitHub"
|
name = "GitHub"
|
||||||
pre = "<i class=\"fab fa-github fa-2x\"></i>"
|
pre = "fab fa-github"
|
||||||
url = "https://github.com/"
|
url = "https://github.com/"
|
||||||
weight = 20
|
weight = 20
|
||||||
|
|
||||||
[[social]]
|
[[social]]
|
||||||
name = "Medium"
|
name = "Medium"
|
||||||
pre = "<i class=\"fab fa-medium fa-2x\"></i>"
|
pre = "fab medium"
|
||||||
url = "https://medium.com/"
|
url = "https://medium.com/"
|
||||||
weight = 30
|
weight = 30
|
||||||
|
|
||||||
|
@@ -32,19 +32,19 @@
|
|||||||
|
|
||||||
[[social]]
|
[[social]]
|
||||||
name = "LinkedIn"
|
name = "LinkedIn"
|
||||||
pre = "<i class=\"fab fa-linkedin fa-2x\"></i>"
|
pre = "fab linkedin"
|
||||||
url = "https://linkedin.com/"
|
url = "https://linkedin.com/"
|
||||||
weight = 10
|
weight = 10
|
||||||
|
|
||||||
[[social]]
|
[[social]]
|
||||||
name = "GitHub"
|
name = "GitHub"
|
||||||
pre = "<i class=\"fab fa-github fa-2x\"></i>"
|
pre = "fab github"
|
||||||
url = "https://github.com/"
|
url = "https://github.com/"
|
||||||
weight = 20
|
weight = 20
|
||||||
|
|
||||||
[[social]]
|
[[social]]
|
||||||
name = "Medium"
|
name = "Medium"
|
||||||
pre = "<i class=\"fab fa-medium fa-2x\"></i>"
|
pre = "fab medium"
|
||||||
url = "https://medium.com/"
|
url = "https://medium.com/"
|
||||||
weight = 30
|
weight = 30
|
||||||
|
|
||||||
|
@@ -4,6 +4,10 @@
|
|||||||
description = "Hinode is a clean documentation and blog theme for your Hugo site based on Bootstrap 5."
|
description = "Hinode is a clean documentation and blog theme for your Hugo site based on Bootstrap 5."
|
||||||
enableDarkMode = true
|
enableDarkMode = true
|
||||||
modes = ["light", "dark"]
|
modes = ["light", "dark"]
|
||||||
|
canonifyAssetsURLs = false
|
||||||
|
[main.externalLinks]
|
||||||
|
cue = false
|
||||||
|
tab = false
|
||||||
# toml-docs-end main
|
# toml-docs-end main
|
||||||
|
|
||||||
# toml-docs-start modules
|
# toml-docs-start modules
|
||||||
@@ -12,8 +16,18 @@
|
|||||||
optional = ["leaflet", "katex"]
|
optional = ["leaflet", "katex"]
|
||||||
excludeSCSS = ["bootstrap"]
|
excludeSCSS = ["bootstrap"]
|
||||||
disableTemplate = ["katex"]
|
disableTemplate = ["katex"]
|
||||||
|
[modules.fontawesome]
|
||||||
|
inline = true
|
||||||
|
debug = true
|
||||||
|
skipMissing = false
|
||||||
# toml-docs-end modules
|
# toml-docs-end modules
|
||||||
|
|
||||||
|
# toml-docs-start debugging
|
||||||
|
[debugging]
|
||||||
|
showJS = false
|
||||||
|
showSCSS = false
|
||||||
|
# toml-docs-end debugging
|
||||||
|
|
||||||
# toml-docs-start docs
|
# toml-docs-start docs
|
||||||
[docs]
|
[docs]
|
||||||
github = "https://github.com/gethinode/hinode"
|
github = "https://github.com/gethinode/hinode"
|
||||||
@@ -53,6 +67,7 @@
|
|||||||
enabled = true
|
enabled = true
|
||||||
sort = "weight"
|
sort = "weight"
|
||||||
reverse = false
|
reverse = false
|
||||||
|
webshare = true
|
||||||
|
|
||||||
[[sharing.providers]]
|
[[sharing.providers]]
|
||||||
name = "LinkedIn"
|
name = "LinkedIn"
|
||||||
@@ -63,7 +78,7 @@
|
|||||||
[[sharing.providers]]
|
[[sharing.providers]]
|
||||||
name = "Twitter"
|
name = "Twitter"
|
||||||
url = "https://twitter.com/home?status={url}"
|
url = "https://twitter.com/home?status={url}"
|
||||||
icon = "fab twitter"
|
icon = "fab x-twitter"
|
||||||
weight = 20
|
weight = 20
|
||||||
|
|
||||||
[[sharing.providers]]
|
[[sharing.providers]]
|
||||||
|
@@ -21,12 +21,15 @@ const purgecss = require('@fullhuman/postcss-purgecss')({
|
|||||||
'./assets/scss/components/_syntax-light.scss',
|
'./assets/scss/components/_syntax-light.scss',
|
||||||
'./assets/scss/theme/fonts.scss',
|
'./assets/scss/theme/fonts.scss',
|
||||||
'./assets/scss/theme/theme.scss',
|
'./assets/scss/theme/theme.scss',
|
||||||
'./node_modules/bootstrap/scss/_carousel.scss',
|
'./_vendor/github.com/gethinode/mod-flexsearch/assets/scss/modules/flexsearch/flexsearch.scss',
|
||||||
'./node_modules/bootstrap/scss/_dropdown.scss',
|
'./_vendor/github.com/gethinode/mod-katex/dist/katex.scss',
|
||||||
'./node_modules/bootstrap/scss/_reboot.scss',
|
'./_vendor/github.com/gethinode/mod-leaflet/dist/leaflet.scss',
|
||||||
'./node_modules/bootstrap/scss/_tooltip.scss',
|
'./_vendor/github.com/twbs/bootstrap/scss/_carousel.scss',
|
||||||
'./node_modules/bootstrap/scss/_transitions.scss',
|
'./_vendor/github.com/twbs/bootstrap/scss/_dropdown.scss',
|
||||||
'./node_modules/bootstrap/scss/_utilities.scss'
|
'./_vendor/github.com/twbs/bootstrap/scss/_reboot.scss',
|
||||||
|
'./_vendor/github.com/twbs/bootstrap/scss/_tooltip.scss',
|
||||||
|
'./_vendor/github.com/twbs/bootstrap/scss/_transitions.scss',
|
||||||
|
'./_vendor/github.com/twbs/bootstrap/scss/_utilities.scss'
|
||||||
])
|
])
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
|
@@ -2,7 +2,7 @@
|
|||||||
title: About
|
title: About
|
||||||
description: Hinode is a clean documentation and blog theme for your Hugo site based on Bootstrap 5.
|
description: Hinode is a clean documentation and blog theme for your Hugo site based on Bootstrap 5.
|
||||||
date: 2022-04-11
|
date: 2022-04-11
|
||||||
updated: 2023-06-26
|
updated: 2023-08-02
|
||||||
showComments: false
|
showComments: false
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -12,17 +12,17 @@ showComments: false
|
|||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<div class="row justify-content-center text-center">
|
<div class="row justify-content-center text-center">
|
||||||
<div class="col-lg-4">
|
<div class="col-lg-4">
|
||||||
<i class="fa-brands fa-bootstrap fa-2xl"></i>
|
{{< icon fab bootstrap fa-2xl >}}
|
||||||
<h2 class="h4">Bootstrap framework</h2>
|
<h2 class="h4">Bootstrap framework</h2>
|
||||||
<p>Build fast, responsive sites with Bootstrap 5. Easily customize your site with the source Sass files.</p>
|
<p>Build fast, responsive sites with Bootstrap 5. Easily customize your site with the source Sass files.</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-lg-4">
|
<div class="col-lg-4">
|
||||||
<i class="fa-solid fa-magnifying-glass fa-2xl"></i>
|
{{< icon fas magnifying-glass fa-2xl >}}
|
||||||
<h2 class="h4">Full text search</h2>
|
<h2 class="h4">Full text search</h2>
|
||||||
<p>Search your site with FlexSearch, a full-text search library with zero dependencies.</p>
|
<p>Search your site with FlexSearch, a full-text search library with zero dependencies.</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-lg-4">
|
<div class="col-lg-4">
|
||||||
<i class="fa-solid fa-code fa-2xl"></i>
|
{{< icon fas code fa-2xl >}}
|
||||||
<h2 class="h4">Development tools</h2>
|
<h2 class="h4">Development tools</h2>
|
||||||
<p>Use Node Package Manager to automate the build process and to keep track of dependencies.</p>
|
<p>Use Node Package Manager to automate the build process and to keep track of dependencies.</p>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -3,7 +3,7 @@ slug: over-mij
|
|||||||
title: Over mij
|
title: Over mij
|
||||||
description: Een blog en documentatie thema voor Hugo gebaseerd op Bootstrap 5.
|
description: Een blog en documentatie thema voor Hugo gebaseerd op Bootstrap 5.
|
||||||
date: 2023-02-17
|
date: 2023-02-17
|
||||||
updated: 2023-06-26
|
updated: 2023-08-02
|
||||||
showComments: false
|
showComments: false
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -14,17 +14,17 @@ showComments: false
|
|||||||
<div class="row justify-content-center text-center">
|
<div class="row justify-content-center text-center">
|
||||||
<div class="row justify-content-center text-center">
|
<div class="row justify-content-center text-center">
|
||||||
<div class="col-lg-4">
|
<div class="col-lg-4">
|
||||||
<i class="fa-brands fa-bootstrap fa-2xl"></i>
|
{{< icon fab bootstrap fa-2xl >}}
|
||||||
<h2 class="h4">Bootstrap raamwerk</h2>
|
<h2 class="h4">Bootstrap raamwerk</h2>
|
||||||
<p>Bouw snelle websites geschikt voor mobiele en desktop schermen met Bootstrap 5. Pas de site eenvoudig aan met bronbestanden in Sass.</p>
|
<p>Bouw snelle websites geschikt voor mobiele en desktop schermen met Bootstrap 5. Pas de site eenvoudig aan met bronbestanden in Sass.</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-lg-4">
|
<div class="col-lg-4">
|
||||||
<i class="fa-solid fa-magnifying-glass fa-2xl"></i>
|
{{< icon fas magnifying-glass fa-2xl >}}
|
||||||
<h2 class="h4">Volledig doorzoekbaar</h2>
|
<h2 class="h4">Volledig doorzoekbaar</h2>
|
||||||
<p>Doorzoek je site met FlexSearch, een software bibliotheek zonder afhankelijkheden.</p>
|
<p>Doorzoek je site met FlexSearch, een software bibliotheek zonder afhankelijkheden.</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-lg-4">
|
<div class="col-lg-4">
|
||||||
<i class="fa-solid fa-code fa-2xl"></i>
|
{{< icon fas code fa-2xl >}}
|
||||||
<h2 class="h4">Ontwikkelgereedschap</h2>
|
<h2 class="h4">Ontwikkelgereedschap</h2>
|
||||||
<p>Gebruik Node Package Manager om het bouwproces inclusief versiebeheer volledig te automatiseren.</p>
|
<p>Gebruik Node Package Manager om het bouwproces inclusief versiebeheer volledig te automatiseren.</p>
|
||||||
</div>
|
</div>
|
||||||
|
8
go.mod
8
go.mod
@@ -3,9 +3,9 @@ module github.com/gethinode/hinode
|
|||||||
go 1.19
|
go 1.19
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/gethinode/mod-bootstrap v1.1.0 // indirect
|
github.com/gethinode/mod-bootstrap v1.1.1 // indirect
|
||||||
github.com/gethinode/mod-flexsearch v1.1.0 // indirect
|
github.com/gethinode/mod-flexsearch v1.1.4 // indirect
|
||||||
github.com/gethinode/mod-fontawesome v1.2.0 // indirect
|
github.com/gethinode/mod-fontawesome v1.2.4 // indirect
|
||||||
github.com/gethinode/mod-katex v1.0.2 // indirect
|
github.com/gethinode/mod-katex v1.0.2 // indirect
|
||||||
github.com/gethinode/mod-leaflet v0.3.1 // indirect
|
github.com/gethinode/mod-leaflet v0.3.4 // indirect
|
||||||
)
|
)
|
||||||
|
22
go.sum
22
go.sum
@@ -2,16 +2,34 @@ github.com/gethinode/mod-bootstrap v1.0.1 h1:NDZar+UEL42YHCvzzO+jVgqkZU5INA12Bpj
|
|||||||
github.com/gethinode/mod-bootstrap v1.0.1/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
|
github.com/gethinode/mod-bootstrap v1.0.1/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
|
||||||
github.com/gethinode/mod-bootstrap v1.1.0 h1:BbalsW8kmFhv+J+dcc41TGcjIlM/p69AB0h0oGhAXIU=
|
github.com/gethinode/mod-bootstrap v1.1.0 h1:BbalsW8kmFhv+J+dcc41TGcjIlM/p69AB0h0oGhAXIU=
|
||||||
github.com/gethinode/mod-bootstrap v1.1.0/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
|
github.com/gethinode/mod-bootstrap v1.1.0/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
|
||||||
|
github.com/gethinode/mod-bootstrap v1.1.1 h1:Tx4M5hGVOFrEaxnUONDAm6N9xuRi5UphKlT7F26HujU=
|
||||||
|
github.com/gethinode/mod-bootstrap v1.1.1/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
|
||||||
github.com/gethinode/mod-flexsearch v1.0.1 h1:FJkRsUzSnQTXl3MWCigT4E6vfff870UWTnkGqaDGIhA=
|
github.com/gethinode/mod-flexsearch v1.0.1 h1:FJkRsUzSnQTXl3MWCigT4E6vfff870UWTnkGqaDGIhA=
|
||||||
github.com/gethinode/mod-flexsearch v1.0.1/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
github.com/gethinode/mod-flexsearch v1.0.1/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
||||||
github.com/gethinode/mod-flexsearch v1.1.0 h1:7BCMyQDlYlskNXuazt8Jg/jg9WREexu2xVkYqThkAX4=
|
github.com/gethinode/mod-flexsearch v1.1.0 h1:7BCMyQDlYlskNXuazt8Jg/jg9WREexu2xVkYqThkAX4=
|
||||||
github.com/gethinode/mod-flexsearch v1.1.0/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
github.com/gethinode/mod-flexsearch v1.1.0/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
||||||
|
github.com/gethinode/mod-flexsearch v1.1.1 h1:zHypfKR/rWPAwqNXvo09Pp3vGqU4w3r7d2VtMudIzkI=
|
||||||
|
github.com/gethinode/mod-flexsearch v1.1.1/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
||||||
|
github.com/gethinode/mod-flexsearch v1.1.2 h1:vA/jHxLq9xxkYGS9cmAoLNIkEBW+iLVCcQ8qKyEa+R4=
|
||||||
|
github.com/gethinode/mod-flexsearch v1.1.2/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
||||||
|
github.com/gethinode/mod-flexsearch v1.1.3 h1:lzmSvnJL6ABjp03avYzSvJJ7hw01CpHap1JGUbDIELg=
|
||||||
|
github.com/gethinode/mod-flexsearch v1.1.3/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
||||||
|
github.com/gethinode/mod-flexsearch v1.1.4 h1:dJvwBxYlLe/VGlctLn8k89STJ5toATIjNnXIlNeanOY=
|
||||||
|
github.com/gethinode/mod-flexsearch v1.1.4/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
||||||
github.com/gethinode/mod-fontawesome v1.0.2 h1:ZSK6D20/w4y5GnfYfTBB58uHD0ChIfkpKfRGwioS9rg=
|
github.com/gethinode/mod-fontawesome v1.0.2 h1:ZSK6D20/w4y5GnfYfTBB58uHD0ChIfkpKfRGwioS9rg=
|
||||||
github.com/gethinode/mod-fontawesome v1.0.2/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
github.com/gethinode/mod-fontawesome v1.0.2/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||||
github.com/gethinode/mod-fontawesome v1.1.0 h1:rsDzUI+3ZlS/do2ff3ne8/z3KwHeysmuA+WsXlumXXk=
|
github.com/gethinode/mod-fontawesome v1.1.0 h1:rsDzUI+3ZlS/do2ff3ne8/z3KwHeysmuA+WsXlumXXk=
|
||||||
github.com/gethinode/mod-fontawesome v1.1.0/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
github.com/gethinode/mod-fontawesome v1.1.0/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||||
github.com/gethinode/mod-fontawesome v1.2.0 h1:2nWYEjpUKu6IJ6kOh2WDlDUqRQ/dUGw6mJWIdMTA3O0=
|
github.com/gethinode/mod-fontawesome v1.2.0 h1:2nWYEjpUKu6IJ6kOh2WDlDUqRQ/dUGw6mJWIdMTA3O0=
|
||||||
github.com/gethinode/mod-fontawesome v1.2.0/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
github.com/gethinode/mod-fontawesome v1.2.0/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||||
|
github.com/gethinode/mod-fontawesome v1.2.1 h1:k7z5ZRsNxCohZjlZm8jVAzmTPk17c6xMYBAjAXHs13I=
|
||||||
|
github.com/gethinode/mod-fontawesome v1.2.1/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||||
|
github.com/gethinode/mod-fontawesome v1.2.2 h1:rA9EtuE/LeFQmKSA7ampfUknxsR1mu7hpi4wpA89gX8=
|
||||||
|
github.com/gethinode/mod-fontawesome v1.2.2/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||||
|
github.com/gethinode/mod-fontawesome v1.2.3 h1:RHWd+E72+m29xaC45m/3CF35C201jehw0dcozVBdPrI=
|
||||||
|
github.com/gethinode/mod-fontawesome v1.2.3/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||||
|
github.com/gethinode/mod-fontawesome v1.2.4 h1:SqE3CQ+boaBIhrVh3MPu4nz0uoHPfEH5t60nNY1CfsI=
|
||||||
|
github.com/gethinode/mod-fontawesome v1.2.4/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||||
github.com/gethinode/mod-katex v1.0.0 h1:me/3dIIZBkfk1mRIFt8QiAGYwYDoSG5bc2hHRtIutFc=
|
github.com/gethinode/mod-katex v1.0.0 h1:me/3dIIZBkfk1mRIFt8QiAGYwYDoSG5bc2hHRtIutFc=
|
||||||
github.com/gethinode/mod-katex v1.0.0/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
|
github.com/gethinode/mod-katex v1.0.0/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
|
||||||
github.com/gethinode/mod-katex v1.0.1 h1:809QUztxmKgMNchU+v03iMO7Ma+ISc3ZzhXYauc21rs=
|
github.com/gethinode/mod-katex v1.0.1 h1:809QUztxmKgMNchU+v03iMO7Ma+ISc3ZzhXYauc21rs=
|
||||||
@@ -22,3 +40,7 @@ github.com/gethinode/mod-leaflet v0.2.3 h1:QQI4h+IH0jZ7fx4q0um2YIEiYBoW3OAfW8qHz
|
|||||||
github.com/gethinode/mod-leaflet v0.2.3/go.mod h1:uGggt87x4Fw7wBoJpSiUvNkYg+s/Ujne7klAX2rxMRk=
|
github.com/gethinode/mod-leaflet v0.2.3/go.mod h1:uGggt87x4Fw7wBoJpSiUvNkYg+s/Ujne7klAX2rxMRk=
|
||||||
github.com/gethinode/mod-leaflet v0.3.1 h1:H5MaOa+BB1KuVw7abTqfIn/SNzzRsAyx/WQoSe+2Ykc=
|
github.com/gethinode/mod-leaflet v0.3.1 h1:H5MaOa+BB1KuVw7abTqfIn/SNzzRsAyx/WQoSe+2Ykc=
|
||||||
github.com/gethinode/mod-leaflet v0.3.1/go.mod h1:uGggt87x4Fw7wBoJpSiUvNkYg+s/Ujne7klAX2rxMRk=
|
github.com/gethinode/mod-leaflet v0.3.1/go.mod h1:uGggt87x4Fw7wBoJpSiUvNkYg+s/Ujne7klAX2rxMRk=
|
||||||
|
github.com/gethinode/mod-leaflet v0.3.3 h1:isnjja6VRFvVWBatYSouh46TXSJg2C4/E2BQTrQw+yI=
|
||||||
|
github.com/gethinode/mod-leaflet v0.3.3/go.mod h1:uGggt87x4Fw7wBoJpSiUvNkYg+s/Ujne7klAX2rxMRk=
|
||||||
|
github.com/gethinode/mod-leaflet v0.3.4 h1:oY+YQ0JiJuhFQNrk9XgFdg0NMsTUQPXNfnILp4ia4r4=
|
||||||
|
github.com/gethinode/mod-leaflet v0.3.4/go.mod h1:uGggt87x4Fw7wBoJpSiUvNkYg+s/Ujne7klAX2rxMRk=
|
||||||
|
@@ -37,6 +37,8 @@
|
|||||||
translation: "Wörter"
|
translation: "Wörter"
|
||||||
- id: copyright
|
- id: copyright
|
||||||
translation: "Copyright"
|
translation: "Copyright"
|
||||||
|
- id: rights
|
||||||
|
translation: "Alle Rechte vorbehalten"
|
||||||
- id: photoBy
|
- id: photoBy
|
||||||
translation: "Foto von"
|
translation: "Foto von"
|
||||||
- id: photoOn
|
- id: photoOn
|
||||||
|
@@ -45,6 +45,8 @@
|
|||||||
translation: "words"
|
translation: "words"
|
||||||
- id: copyright
|
- id: copyright
|
||||||
translation: "Copyright"
|
translation: "Copyright"
|
||||||
|
- id: rights
|
||||||
|
translation: "All rights reserved"
|
||||||
- id: photoBy
|
- id: photoBy
|
||||||
translation: "Photo by"
|
translation: "Photo by"
|
||||||
- id: photoOn
|
- id: photoOn
|
||||||
@@ -138,7 +140,7 @@
|
|||||||
- id: show
|
- id: show
|
||||||
translation: "Show"
|
translation: "Show"
|
||||||
- id: comments
|
- id: comments
|
||||||
translation: "comments"
|
translation: "Comments"
|
||||||
|
|
||||||
# Related posts
|
# Related posts
|
||||||
- id: seeAlso
|
- id: seeAlso
|
||||||
|
@@ -37,6 +37,8 @@
|
|||||||
translation: "woorden"
|
translation: "woorden"
|
||||||
- id: copyright
|
- id: copyright
|
||||||
translation: "Copyright"
|
translation: "Copyright"
|
||||||
|
- id: rights
|
||||||
|
translation: "Alle rechten voorbehouden"
|
||||||
- id: photoBy
|
- id: photoBy
|
||||||
translation: "Foto van"
|
translation: "Foto van"
|
||||||
- id: photoOn
|
- id: photoOn
|
||||||
@@ -129,7 +131,7 @@
|
|||||||
- id: show
|
- id: show
|
||||||
translation: "Tonen"
|
translation: "Tonen"
|
||||||
- id: comments
|
- id: comments
|
||||||
translation: "commentaar"
|
translation: "Reacties"
|
||||||
|
|
||||||
# Related posts
|
# Related posts
|
||||||
- id: seeAlso
|
- id: seeAlso
|
||||||
|
@@ -2,7 +2,7 @@
|
|||||||
<div class="container-xxl flex-fill d-flex align-content-center flex-wrap">
|
<div class="container-xxl flex-fill d-flex align-content-center flex-wrap">
|
||||||
<div class="w-100 text-center">
|
<div class="w-100 text-center">
|
||||||
<span class="text-secondary fw-bold">
|
<span class="text-secondary fw-bold">
|
||||||
<i class="fa-regular fa-face-frown fa-10x"></i>
|
{{ partial "assets/icon.html" (dict "icon" "fa face-frown fa-10x") }}
|
||||||
<p class="display-1 mt-3 fw-bold">404</p>
|
<p class="display-1 mt-3 fw-bold">404</p>
|
||||||
<p class="fs-3">{{ T "pageNotFoundTitle" }}</p>
|
<p class="fs-3">{{ T "pageNotFoundTitle" }}</p>
|
||||||
</span>
|
</span>
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
{{ if site.Params.navigation.anchor }}
|
{{ if site.Params.navigation.anchor }}
|
||||||
<h{{ .Level }} id="{{ .Anchor | safeURL }}" class="heading">{{ .Text | safeHTML }} <a href="#{{ .Anchor | safeURL }}"><i class="fa-solid fa-link anchor"></i></a></h{{ .Level }}>
|
<h{{ .Level }} id="{{ .Anchor | safeURL }}" class="heading">{{ .Text | safeHTML }} <a href="#{{ .Anchor | safeURL }}">{{- partial "assets/icon.html" (dict "icon" "fas link anchor") }}</a></h{{ .Level }}>
|
||||||
{{ else }}
|
{{ else }}
|
||||||
<h{{ .Level }} id="{{ .Anchor | safeURL }}">{{ .Text | safeHTML }}</h{{ .Level }}>
|
<h{{ .Level }} id="{{ .Anchor | safeURL }}">{{ .Text | safeHTML }}</h{{ .Level }}>
|
||||||
{{ end }}
|
{{ end }}
|
@@ -12,6 +12,10 @@
|
|||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- if and .IsPage (not (in .Site.Params.modules.core "bootstrap")) -}}
|
||||||
|
{{- errorf "Bootstrap is a required module, please add it to 'modules.core' in your site parameters" -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="{{ .Site.Language.Lang }}" class="no-js">
|
<html lang="{{ .Site.Language.Lang }}" class="no-js">
|
||||||
<head>
|
<head>
|
||||||
@@ -19,9 +23,7 @@
|
|||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
{{- if site.Params.main.enableDarkMode -}}
|
{{- partial "footer/scripts.html" (dict "filename" "js/critical.bundle.js" "match" "js/critical/**.js" "header" true "page" .) -}}
|
||||||
{{- partial "footer/scripts.html" (dict "filename" "js/critical.bundle.js" "match" "js/critical/**.js" "header" true "page" .) -}}
|
|
||||||
{{- end -}}
|
|
||||||
<div class="d-flex flex-column min-vh-100{{ if and .IsHome .Site.Params.home.style }} {{ .Site.Params.home.style }}{{ end }}">
|
<div class="d-flex flex-column min-vh-100{{ if and .IsHome .Site.Params.home.style }} {{ .Site.Params.home.style }}{{ end }}">
|
||||||
<div class="{{ if .Site.Params.navigation.fixed }}mb-4{{ end }}">
|
<div class="{{ if .Site.Params.navigation.fixed }}mb-4{{ end }}">
|
||||||
{{- partial "assets/navbar.html" (dict
|
{{- partial "assets/navbar.html" (dict
|
||||||
|
@@ -67,7 +67,8 @@
|
|||||||
{{ with .NextInSection -}}
|
{{ with .NextInSection -}}
|
||||||
{{ $next := . -}}
|
{{ $next := . -}}
|
||||||
{{ with .OutputFormats.Get "html" -}}
|
{{ with .OutputFormats.Get "html" -}}
|
||||||
<a class="next" href="{{ $next.Permalink }}"><i class="fas fa-arrow-left"></i> {{ $next.Title }}</a>
|
<a class="next" href="{{ $next.RelPermalink }}">
|
||||||
|
{{- partial "assets/icon.html" (dict "icon" "fas arrow-left") }} {{ $next.Title }}</a>
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{ end -}}
|
{{ end -}}
|
||||||
</div>
|
</div>
|
||||||
@@ -75,7 +76,7 @@
|
|||||||
{{ with .PrevInSection -}}
|
{{ with .PrevInSection -}}
|
||||||
{{ $prev := . -}}
|
{{ $prev := . -}}
|
||||||
{{ with .OutputFormats.Get "html" -}}
|
{{ with .OutputFormats.Get "html" -}}
|
||||||
<a class="previous" href="{{ $prev.Permalink }}">{{ $prev.Title }} <i class="fas fa-arrow-right"></i></a>
|
<a class="previous" href="{{ $prev.RelPermalink }}">{{ $prev.Title }} {{- partial "assets/icon.html" (dict "icon" "fas arrow-right") }}</a>
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{ end -}}
|
{{ end -}}
|
||||||
</div>
|
</div>
|
||||||
|
@@ -7,10 +7,10 @@
|
|||||||
{{ $square150 := .Resize "150x150 CatmullRom" }}
|
{{ $square150 := .Resize "150x150 CatmullRom" }}
|
||||||
{{ $wide310 := .Fill "310x150 CatmullRom" }}
|
{{ $wide310 := .Fill "310x150 CatmullRom" }}
|
||||||
{{ $square310 := .Resize "310x310 CatmullRom" }}
|
{{ $square310 := .Resize "310x310 CatmullRom" }}
|
||||||
<square70x70logo src="{{ $square70.Permalink }}" />
|
<square70x70logo src="{{ $square70.RelPermalink }}" />
|
||||||
<square150x150logo src="{{ $square150.Permalink }}" />
|
<square150x150logo src="{{ $square150.RelPermalink }}" />
|
||||||
<wide310x150logo src="{{ $wide310.Permalink }}" />
|
<wide310x150logo src="{{ $wide310.RelPermalink }}" />
|
||||||
<square310x310logo src="{{ $square310.Permalink }}" />
|
<square310x310logo src="{{ $square310.RelPermalink }}" />
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<TileColor>#000000</TileColor>
|
<TileColor>#000000</TileColor>
|
||||||
</tile>
|
</tile>
|
||||||
|
@@ -3,7 +3,7 @@
|
|||||||
{{- range $index, $item := .Page.Ancestors.Reverse -}}
|
{{- range $index, $item := .Page.Ancestors.Reverse -}}
|
||||||
{{- $title := .Title -}}
|
{{- $title := .Title -}}
|
||||||
{{- if .IsHome }}{{ $title = T "home" }}{{ end -}}
|
{{- if .IsHome }}{{ $title = T "home" }}{{ end -}}
|
||||||
{{- $address := or .Permalink (.Params.Redirect | absLangURL) -}}
|
{{- $address := or .RelPermalink (.Params.Redirect | relLangURL) -}}
|
||||||
{{ if $address }}
|
{{ if $address }}
|
||||||
<li class="breadcrumb-item"><a href="{{ $address }}">{{ $title }}</a></li>
|
<li class="breadcrumb-item"><a href="{{ $address }}">{{ $title }}</a></li>
|
||||||
{{ else }}
|
{{ else }}
|
||||||
|
@@ -22,6 +22,11 @@
|
|||||||
"between", "around", or "evenly".
|
"between", "around", or "evenly".
|
||||||
"toast" Optional id of the toast to display when the button is clicked.
|
"toast" Optional id of the toast to display when the button is clicked.
|
||||||
"clipboard" Optional text to be copied to the clipboard when the button is clicked.
|
"clipboard" Optional text to be copied to the clipboard when the button is clicked.
|
||||||
|
"cue" Optional flag to indicate if an external link should show a visual cue, defaults to setting
|
||||||
|
"main.externalLinks.cue" in the site's parameters.
|
||||||
|
"tab" Optional flag to indicate if an external link should open in a new tab, defaults to setting
|
||||||
|
"main.externalLinks.tab" in the site's parameters.
|
||||||
|
"attributes" Optional dictionary of key-value pairs added as custom attributes to the button element ('<a>').
|
||||||
-->
|
-->
|
||||||
|
|
||||||
{{- $title := trim .title " \r\n" -}}
|
{{- $title := trim .title " \r\n" -}}
|
||||||
@@ -95,6 +100,7 @@
|
|||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
{{- $class := .class }}
|
{{- $class := .class }}
|
||||||
|
{{ with $badge }}{{ $class = printf "%s me-3" $class }}{{ end }}
|
||||||
|
|
||||||
{{- $order := "last" -}}
|
{{- $order := "last" -}}
|
||||||
{{- with .order }}{{ $order = . }}{{ end -}}
|
{{- with .order }}{{ $order = . }}{{ end -}}
|
||||||
@@ -113,8 +119,29 @@
|
|||||||
{{- $toast := .toast -}}
|
{{- $toast := .toast -}}
|
||||||
{{- $clipboard := .clipboard -}}
|
{{- $clipboard := .clipboard -}}
|
||||||
|
|
||||||
|
{{- $cue := .cue | default site.Params.main.externalLinks.cue -}}
|
||||||
|
{{- $tab := .tab | default site.Params.main.externalLinks.tab -}}
|
||||||
|
{{- $isExternal := ne (urls.Parse (absURL $href)).Host (urls.Parse site.BaseURL).Host -}}
|
||||||
|
{{- $target := "" -}}
|
||||||
|
{{- $rel := "" -}}
|
||||||
|
|
||||||
|
{{- if $isExternal -}}
|
||||||
|
{{- if $tab -}}
|
||||||
|
{{- $target = "_blank" -}}
|
||||||
|
{{- $rel = "noopener noreferrer" -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- if and $title $cue -}}
|
||||||
|
{{ $suffix := partial "assets/icon.html" (dict "icon" "fas up-right-from-square fa-2xs") }}
|
||||||
|
{{- $title = printf "%s %s" $title $suffix | safeHTML -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- $attributes := .attributes -}}
|
||||||
|
|
||||||
<a aria-label="{{ $title }}" {{ if ne $state "disabled" }}{{ with $href }}href="{{ . }}"{{ end }}{{ end }}
|
<a aria-label="{{ $title }}" {{ if ne $state "disabled" }}{{ with $href }}href="{{ . }}"{{ end }}{{ end }}
|
||||||
{{ with $id }}id="{{ . }}"{{ end }}
|
{{ with $id }}id="{{ . }}"{{ end }}
|
||||||
|
{{ with $target }}target="{{ . }}"{{ end }}{{ with $rel }} rel="{{ . }}"{{ end }}
|
||||||
{{ with $toast }}data-toast-target="{{ $toast }}"{{ end }}
|
{{ with $toast }}data-toast-target="{{ $toast }}"{{ end }}
|
||||||
{{ with $clipboard }}data-clipboard="{{ $clipboard }}"{{ end }}
|
{{ with $clipboard }}data-clipboard="{{ $clipboard }}"{{ end }}
|
||||||
{{ if eq $type "button" }}class="btn btn-{{ if $outline }}outline-{{ end }}{{ $color }} {{ if ne $size "md"}}btn-{{ $size }}{{ end }} position-relative {{ if in (slice "disabled" "active") $state }}{{ $state }}{{ end }} {{ $class }}"
|
{{ if eq $type "button" }}class="btn btn-{{ if $outline }}outline-{{ end }}{{ $color }} {{ if ne $size "md"}}btn-{{ $size }}{{ end }} position-relative {{ if in (slice "disabled" "active") $state }}{{ $state }}{{ end }} {{ $class }}"
|
||||||
@@ -124,11 +151,14 @@
|
|||||||
{{ with $collapse }}data-bs-toggle="collapse" aria-expanded="false" aria-controls="{{ . }}"{{ end }}
|
{{ with $collapse }}data-bs-toggle="collapse" aria-expanded="false" aria-controls="{{ . }}"{{ end }}
|
||||||
{{ if eq $state "active" }}data-bs-toggle="button" aria-pressed="true"{{ end }}
|
{{ if eq $state "active" }}data-bs-toggle="button" aria-pressed="true"{{ end }}
|
||||||
{{ if eq $state "inactive" }}data-bs-toggle="button" aria-pressed="false"{{ end }}
|
{{ if eq $state "inactive" }}data-bs-toggle="button" aria-pressed="false"{{ end }}
|
||||||
|
{{ range $key, $val := $attributes }}
|
||||||
|
{{ print $key | safeHTMLAttr }}="{{ $val }}"
|
||||||
|
{{ end }}
|
||||||
>
|
>
|
||||||
|
|
||||||
<div class="d-flex justify-content-{{ $justify }}">
|
<div class="d-flex justify-content-{{ $justify }}">
|
||||||
<div>{{ $title }}</div>
|
<div class="my-auto">{{ $title }}</div>
|
||||||
{{- with $icon }}<div class="align-self-center{{ if eq $order "first" }} order-first pe-1{{ else }} ps-1{{ end }}">{{ partial "assets/icon.html" (dict "icon" $icon) }}</div>{{ end }}
|
{{- with $icon }}<div class="align-self-center{{ if $title }}{{ if eq $order "first" }} order-first pe-1{{ else }} ps-1{{ end }}{{ end }}">{{ partial "assets/icon.html" (dict "icon" $icon) }}</div>{{ end }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{- with $badge }}
|
{{- with $badge }}
|
||||||
|
@@ -107,12 +107,12 @@
|
|||||||
"orientation" $orientation
|
"orientation" $orientation
|
||||||
) -}}
|
) -}}
|
||||||
|
|
||||||
{{- if $element.Permalink -}}
|
{{- if $element.RelPermalink -}}
|
||||||
{{- $params = merge $params (dict "path" $element.File.Path) -}}
|
{{- $params = merge $params (dict "path" $element.File.Path) -}}
|
||||||
{{- else -}}
|
{{- else -}}
|
||||||
{{- $params = merge $params (dict
|
{{- $params = merge $params (dict
|
||||||
"title" $element.Title
|
"title" $element.Title
|
||||||
"href" $element.Permalink
|
"href" $element.RelPermalink
|
||||||
"description" (or $element.Description $element.Content)
|
"description" (or $element.Description $element.Content)
|
||||||
"thumbnail" $element.Params.thumbnail
|
"thumbnail" $element.Params.thumbnail
|
||||||
"icon" $element.Params.icon
|
"icon" $element.Params.icon
|
||||||
|
@@ -111,7 +111,7 @@
|
|||||||
|
|
||||||
{{- with $page -}}
|
{{- with $page -}}
|
||||||
{{- if not $title }}{{ $title = .Title }}{{ end -}}
|
{{- if not $title }}{{ $title = .Title }}{{ end -}}
|
||||||
{{- if not $href }}{{ $href = .Permalink }}{{ end -}}
|
{{- if not $href }}{{ $href = .RelPermalink }}{{ end -}}
|
||||||
{{- if not $description }}{{ $description = .Description }}{{ end -}}
|
{{- if not $description }}{{ $description = .Description }}{{ end -}}
|
||||||
{{- if not $thumbnail }}{{ $thumbnail = .Params.thumbnail }}{{ end -}}
|
{{- if not $thumbnail }}{{ $thumbnail = .Params.thumbnail }}{{ end -}}
|
||||||
{{- if not $icon }}{{ $icon = .Params.icon }}{{ end -}}
|
{{- if not $icon }}{{ $icon = .Params.icon }}{{ end -}}
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
{{- $params := .Site.Params.comments -}}
|
{{- $params := .Site.Params.comments -}}
|
||||||
{{- with $params -}}
|
{{- with $params -}}
|
||||||
<h2>Comments</h2>
|
<h2>{{ T "comments" }}</h2>
|
||||||
<script src="https://utteranc.es/client.js"
|
<script src="https://utteranc.es/client.js"
|
||||||
repo="{{ $params.repo }}"
|
repo="{{ $params.repo }}"
|
||||||
issue-term="{{ default "pathname" $params.issueTerm }}"
|
issue-term="{{ default "pathname" $params.issueTerm }}"
|
||||||
|
@@ -1,16 +0,0 @@
|
|||||||
{{- $icon := .icon -}}
|
|
||||||
{{- if not $icon -}}
|
|
||||||
{{- errorf "partial [assets/icon.html] - Expected value for param 'icon'" -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{- $icon_class := split $icon " " -}}
|
|
||||||
{{- $attr := delimit (after 1 $icon_class) " " -}}
|
|
||||||
{{- if eq (index $icon_class 0) "fas" -}}
|
|
||||||
<i class="fa-solid fa-{{ $attr}}"></i>
|
|
||||||
{{- else if eq (index $icon_class 0) "fab" -}}
|
|
||||||
<i class="fa-brands fa-{{ $attr }}"></i>
|
|
||||||
{{- else if eq (index $icon_class 0) "fa" -}}
|
|
||||||
<i class="fa-regular fa-{{ $attr }}"></i>
|
|
||||||
{{- else -}}
|
|
||||||
{{- errorf "partial [assets/icon.html] - Unrecognized icon class: %s" $icon_class -}}
|
|
||||||
{{- end -}}
|
|
@@ -15,6 +15,7 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
{{- $validRatios := slice "1x1" "4x3" "16x9" "21x9" -}}
|
{{- $validRatios := slice "1x1" "4x3" "16x9" "21x9" -}}
|
||||||
|
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
|
||||||
{{- $ratio := .ratio -}}
|
{{- $ratio := .ratio -}}
|
||||||
{{- $url := .url -}}
|
{{- $url := .url -}}
|
||||||
{{- $mode := false -}}
|
{{- $mode := false -}}
|
||||||
@@ -68,6 +69,7 @@
|
|||||||
|
|
||||||
<!-- Generate a image set of type webp -->
|
<!-- Generate a image set of type webp -->
|
||||||
{{- define "partials/image-scaled.html " -}}
|
{{- define "partials/image-scaled.html " -}}
|
||||||
|
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
|
||||||
{{- $img := .img -}}
|
{{- $img := .img -}}
|
||||||
{{- $ratio := .ratio -}}
|
{{- $ratio := .ratio -}}
|
||||||
{{- $imgset := "" -}}
|
{{- $imgset := "" -}}
|
||||||
@@ -98,7 +100,11 @@
|
|||||||
{{- $scaled = $img.Fit (printf "%s webp" $dim) -}}
|
{{- $scaled = $img.Fit (printf "%s webp" $dim) -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- $scaled = $scaled | resources.Copy (replace $img.RelPermalink $clean (printf "-%s.webp" $dim)) -}}
|
{{- $scaled = $scaled | resources.Copy (replace $img.RelPermalink $clean (printf "-%s.webp" $dim)) -}}
|
||||||
{{- $imgset = printf "%s, %s %sw" $imgset $scaled.Permalink (index $widths $index) -}}
|
{{- if $absoluteURL -}}
|
||||||
|
{{- $imgset = printf "%s, %s %sw" $imgset $scaled.Permalink (index $widths $index) -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- $imgset = printf "%s, %s %sw" $imgset $scaled.RelPermalink (index $widths $index) -}}
|
||||||
|
{{- end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- $imgset = strings.TrimPrefix ", " $imgset -}}
|
{{- $imgset = strings.TrimPrefix ", " $imgset -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
@@ -108,6 +114,7 @@
|
|||||||
|
|
||||||
<!-- Define the img with optional caption -->
|
<!-- Define the img with optional caption -->
|
||||||
{{- define "partials/image-definition.html" -}}
|
{{- define "partials/image-definition.html" -}}
|
||||||
|
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
|
||||||
{{- $ratio := .ratio -}}
|
{{- $ratio := .ratio -}}
|
||||||
{{- $url := .url -}}
|
{{- $url := .url -}}
|
||||||
{{- $outerClass := .outerClass -}}
|
{{- $outerClass := .outerClass -}}
|
||||||
@@ -125,7 +132,11 @@
|
|||||||
{{- $img := partial "utilities/GetImage.html" (dict "url" $url) -}}
|
{{- $img := partial "utilities/GetImage.html" (dict "url" $url) -}}
|
||||||
{{- if $img -}}
|
{{- if $img -}}
|
||||||
{{- $fallback := partial "partials/image-default.html" (dict "img" $img "ratio" $ratio) -}}
|
{{- $fallback := partial "partials/image-default.html" (dict "img" $img "ratio" $ratio) -}}
|
||||||
{{- $fallbackURL = $fallback.RelPermalink -}}
|
{{- if $absoluteURL -}}
|
||||||
|
{{- $fallbackURL = $fallback.Permalink -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- $fallbackURL = $fallback.RelPermalink -}}
|
||||||
|
{{- end -}}
|
||||||
{{- $imgset = partial "partials/image-scaled.html " (dict "img" $img "ratio" $ratio) -}}
|
{{- $imgset = partial "partials/image-scaled.html " (dict "img" $img "ratio" $ratio) -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
@@ -145,7 +156,7 @@
|
|||||||
srcset="{{ . }}"
|
srcset="{{ . }}"
|
||||||
sizes="100vw"
|
sizes="100vw"
|
||||||
{{- end }}
|
{{- end }}
|
||||||
src="{{ absURL $fallbackURL }}"
|
src="{{ $fallbackURL }}"
|
||||||
alt="{{ $title }}">
|
alt="{{ $title }}">
|
||||||
</div>
|
</div>
|
||||||
{{- if $caption -}}
|
{{- if $caption -}}
|
||||||
|
@@ -9,12 +9,24 @@
|
|||||||
{{- $isActive := hasPrefix $pageURL $menuURL -}}
|
{{- $isActive := hasPrefix $pageURL $menuURL -}}
|
||||||
{{- $isAlias := $menu.Params.alias -}}
|
{{- $isAlias := $menu.Params.alias -}}
|
||||||
{{- $isIcon := $menu.Params.icon -}}
|
{{- $isIcon := $menu.Params.icon -}}
|
||||||
|
{{- $cue := .cue | default site.Params.main.externalLinks.cue -}}
|
||||||
|
{{- $tab := .tab | default site.Params.main.externalLinks.tab -}}
|
||||||
|
|
||||||
{{- $url := urls.Parse $menuURL -}}
|
{{- $url := urls.Parse $menuURL -}}
|
||||||
{{- $baseURL := urls.Parse $.Site.Params.Baseurl -}}
|
{{- $baseURL := urls.Parse $.Site.Params.Baseurl -}}
|
||||||
{{- $isExternal := ne $url.Host $baseURL.Host -}}
|
{{- $isExternal := ne $url.Host $baseURL.Host -}}
|
||||||
{{- $externalHref := "" }}
|
{{- $externalHref := "" }}
|
||||||
{{- if $isExternal }}{{ $externalHref = "target=\"_blank\" rel=\"noopener noreferrer\"" }}{{ end -}}
|
{{- $suffix := "" }}
|
||||||
|
|
||||||
|
{{- if $isExternal }}
|
||||||
|
{{- if $tab -}}
|
||||||
|
{{ $externalHref = "target=\"_blank\" rel=\"noopener noreferrer\"" }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- if $cue -}}
|
||||||
|
{{ $suffix = partial "assets/icon.html" (dict "icon" "fas up-right-from-square fa-2xs") }}
|
||||||
|
{{- end -}}
|
||||||
|
{{ end -}}
|
||||||
|
|
||||||
{{- $mainNav := urlize (lower $menu.Name) -}}
|
{{- $mainNav := urlize (lower $menu.Name) -}}
|
||||||
{{- $childNav := "" -}}
|
{{- $childNav := "" -}}
|
||||||
@@ -40,9 +52,14 @@
|
|||||||
{{ if $isIcon }}aria-label="{{ $menu.Name }}"{{ end }}
|
{{ if $isIcon }}aria-label="{{ $menu.Name }}"{{ 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 }}
|
||||||
href="{{ $menuURL }}{{ $params | safeHTMLAttr }}"{{ with $externalHref }} {{ . | safeHTMLAttr }}{{ end }} {{ $button | safeHTMLAttr }}>
|
href="{{ $menuURL }}{{ $params | safeHTMLAttr }}"{{ with $externalHref }} {{ . | safeHTMLAttr }}{{ end }} {{ $button | safeHTMLAttr }}>
|
||||||
|
{{- with $menu.Pre }}
|
||||||
{{- with $menu.Pre }}{{ . }}{{ end -}}
|
{{ if hasPrefix . "<i" }}
|
||||||
|
{{ . | safeHTML }}
|
||||||
|
{{ else }}
|
||||||
|
{{ partial "assets/icon.html" (dict "icon" . )}}
|
||||||
|
{{ end }}
|
||||||
|
{{ end -}}
|
||||||
<span {{ if $isActive }} class="active"{{ end }}>{{ if not $isIcon }}{{ $menu.Name }}{{ end }}</span>
|
<span {{ if $isActive }} class="active"{{ end }}>{{ if not $isIcon }}{{ $menu.Name }}{{ end }}</span>
|
||||||
{{- with $menu.Post }}{{ . }}{{ end -}}
|
{{- with $menu.Post }}{{ . }}{{ end -}}
|
||||||
{{- if and $isExternal (not $isIcon)}} {{ partial "assets/icon.html" (dict "icon" "fas up-right-from-square fa-2xs") }}{{ end -}}
|
{{- if not $isIcon }} {{ $suffix }}{{ end -}}
|
||||||
</a>
|
</a>
|
||||||
|
@@ -21,26 +21,26 @@
|
|||||||
{{- $collapsed := .collapsed -}}
|
{{- $collapsed := .collapsed -}}
|
||||||
|
|
||||||
<li class="nav-item dropdown {{ if $collapsed }}d-{{ $size }}-none{{ else }}d-none d-{{ $size }}-block{{ end }}">
|
<li class="nav-item dropdown {{ if $collapsed }}d-{{ $size }}-none{{ else }}d-none d-{{ $size }}-block{{ end }}">
|
||||||
<a class="nav-link dropdown-toggle" href="#!" role="button" data-bs-toggle="dropdown" aria-expanded="false" id="navbar-color-theme">
|
<a class="nav-link dropdown-toggle" href="#!" role="button" data-bs-toggle="dropdown" aria-expanded="false" id="navbar-color-theme{{ if $collapsed }}-collapsed{{ end }}">
|
||||||
{{- partial "assets/icon.html" (dict "icon" "fas sun theme-icon-active") }} {{ if $collapsed }} {{ T "colorMode" }} {{ end }}
|
<span class="theme-icon-active">{{- partial "assets/icon.html" (dict "icon" "fas sun fa-fw") }} {{ if $collapsed }} {{ T "colorMode" }} {{ end }}</span>
|
||||||
<span class="d-md-none"></span>
|
<span class="d-md-none"></span>
|
||||||
</a>
|
</a>
|
||||||
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="navbar-color-theme">
|
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="navbar-color-theme{{ if $collapsed }}-collapsed{{ end }}">
|
||||||
<li>
|
<li>
|
||||||
<a class="dropdown-item{{ if $collapsed }} switch-mode-collapsed{{ end }}" data-bs-theme-value="light" href="#!">
|
<a class="dropdown-item{{ if $collapsed }} switch-mode-collapsed{{ end }}" data-bs-theme-value="light" href="#!">
|
||||||
{{- partial "assets/icon.html" (dict "icon" "fas sun theme-icon") }}
|
<span class="theme-icon">{{- partial "assets/icon.html" (dict "icon" "fas sun fa-fw") }}</span>
|
||||||
{{ T "colorLight" }}
|
{{ T "colorLight" }}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a class="dropdown-item{{ if $collapsed }} switch-mode-collapsed{{ end }}" data-bs-theme-value="dark" href="#!">
|
<a class="dropdown-item{{ if $collapsed }} switch-mode-collapsed{{ end }}" data-bs-theme-value="dark" href="#!">
|
||||||
{{- partial "assets/icon.html" (dict "icon" "fas moon theme-icon") }}
|
<span class="theme-icon">{{- partial "assets/icon.html" (dict "icon" "fas moon fa-fw") }}</span>
|
||||||
{{ T "colorDark" }}
|
{{ T "colorDark" }}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a class="dropdown-item{{ if $collapsed }} switch-mode-collapsed{{ end }}" data-bs-theme-value="auto" href="#!">
|
<a class="dropdown-item{{ if $collapsed }} switch-mode-collapsed{{ end }}" data-bs-theme-value="auto" href="#!">
|
||||||
{{- partial "assets/icon.html" (dict "icon" "fas circle-half-stroke theme-icon" ) }}
|
<span class="theme-icon">{{- partial "assets/icon.html" (dict "icon" "fas circle-half-stroke fa-fw" ) }}</span>
|
||||||
{{ T "colorAuto" }}
|
{{ T "colorAuto" }}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
@@ -73,7 +73,7 @@
|
|||||||
<a class="pe-5 dropdown-item{{ if $collapsed }} switch-mode-collapsed{{ end }}{{ if $active }} active{{ end }}{{ if $disabled }} disabled{{ end }}" href="{{ $url }}">{{ $item.label }}
|
<a class="pe-5 dropdown-item{{ if $collapsed }} switch-mode-collapsed{{ end }}{{ if $active }} active{{ end }}{{ if $disabled }} disabled{{ end }}" href="{{ $url }}">{{ $item.label }}
|
||||||
{{ if $item.latest }} ({{ T "latest" }}){{ end }}
|
{{ if $item.latest }} ({{ T "latest" }}){{ end }}
|
||||||
{{ if $active }}
|
{{ if $active }}
|
||||||
<span class="position-absolute end-0 me-3">{{- partial "assets/icon.html" (dict "icon" "fas check") }}</span>
|
<span class="position-absolute end-0 me-3">{{- partial "assets/icon.html" (dict "icon" "fas check fa-fw") }}</span>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
@@ -93,6 +93,7 @@
|
|||||||
</li>
|
</li>
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
|
||||||
{{- $supportedFlags := slice "true" "false" -}}
|
{{- $supportedFlags := slice "true" "false" -}}
|
||||||
|
|
||||||
{{- $id := printf "navbar-collapse-%d" 0 -}}
|
{{- $id := printf "navbar-collapse-%d" 0 -}}
|
||||||
@@ -105,11 +106,14 @@
|
|||||||
{{- errorf "partial [assets/navbar.html] - Missing value for param 'page'" -}}
|
{{- errorf "partial [assets/navbar.html] - Missing value for param 'page'" -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
{{- $menuName := "main" }}
|
{{- $defaultMenu := "main" }}
|
||||||
{{- with .menus }}{{ $menuName = .}}{{ end -}}
|
{{- $menuName := $defaultMenu }}
|
||||||
|
{{- with .menus }}{{ $menuName = . }}{{ end -}}
|
||||||
{{- $menus := index site.Menus $menuName -}}
|
{{- $menus := index site.Menus $menuName -}}
|
||||||
{{- if or (ne (printf "%T" $menus) "navigation.Menu") (ne (index $menus 0).Menu $menuName) -}}
|
{{- if or (ne (printf "%T" $menus) "navigation.Menu") (ne (index $menus 0).Menu $menuName) -}}
|
||||||
{{- errorf "partial [assets/navbar.html] - Invalid value for param 'menus': %s" $menuName -}}
|
{{- if ne $menuName $defaultMenu }}
|
||||||
|
{{- errorf "partial [assets/navbar.html] - Invalid value for param 'menus': %s" $menuName -}}
|
||||||
|
{{- end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
{{- $size := "md" -}}
|
{{- $size := "md" -}}
|
||||||
@@ -147,7 +151,7 @@
|
|||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
{{- $enableDarkMode := default true site.Params.main.enableDarkMode -}}
|
{{- $enableDarkMode := default false site.Params.main.enableDarkMode -}}
|
||||||
{{- with .mode -}}
|
{{- with .mode -}}
|
||||||
{{- $darkModeParam := . -}}
|
{{- $darkModeParam := . -}}
|
||||||
{{- if in $supportedFlags $darkModeParam -}}
|
{{- if in $supportedFlags $darkModeParam -}}
|
||||||
@@ -189,12 +193,12 @@
|
|||||||
<div class="d-flex">
|
<div class="d-flex">
|
||||||
{{- if $page.Scratch.Get "sidebar" -}}
|
{{- if $page.Scratch.Get "sidebar" -}}
|
||||||
<button class="navbar-toggler fw-30 collapsed p-0 mx-auto" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvass-sidebar" aria-controls="offcanvass-sidebar" aria-label="{{ T "toggleSidebar" }}">
|
<button class="navbar-toggler fw-30 collapsed p-0 mx-auto" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvass-sidebar" aria-controls="offcanvass-sidebar" aria-label="{{ T "toggleSidebar" }}">
|
||||||
{{- partial "assets/icon.html" (dict "icon" "fas ellipsis") -}}
|
{{- partial "assets/icon.html" (dict "icon" "fas ellipsis fa-fw") -}}
|
||||||
</button>
|
</button>
|
||||||
{{- else -}}
|
{{- else -}}
|
||||||
<!-- Insert invisible sidebar toggler to center logo correctly on smaller screens -->
|
<!-- Insert invisible sidebar toggler to center logo correctly on smaller screens -->
|
||||||
<button class="navbar-toggler fw-30 collapsed p-0 mx-auto invisible" type="button">
|
<button class="navbar-toggler fw-30 collapsed p-0 mx-auto invisible" type="button">
|
||||||
{{- partial "assets/icon.html" (dict "icon" "fas ellipsis") -}}
|
{{- partial "assets/icon.html" (dict "icon" "fas ellipsis fa-fw") -}}
|
||||||
</button>
|
</button>
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
</div>
|
</div>
|
||||||
@@ -202,7 +206,7 @@
|
|||||||
<!-- Insert the brand logo or name -->
|
<!-- Insert the brand logo or name -->
|
||||||
<a class="navbar-brand mx-auto" href="{{ site.Home.RelPermalink }}">
|
<a class="navbar-brand mx-auto" href="{{ site.Home.RelPermalink }}">
|
||||||
{{- if $logo -}}
|
{{- if $logo -}}
|
||||||
<img src="{{ $logo }}" alt="{{ $title }} logo" height="30">
|
<img src="{{if $absoluteURL }}{{ absURL $logo }}{{ else }}{{ $logo }}{{ end }}" alt="{{ $title }} logo" height="30">
|
||||||
{{- else -}}
|
{{- else -}}
|
||||||
<span class="fw-bold">{{ $title }}</span>
|
<span class="fw-bold">{{ $title }}</span>
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
@@ -238,7 +242,7 @@
|
|||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
<!-- Insert divider if applicable -->
|
<!-- Insert divider if applicable -->
|
||||||
{{- if or $enableLanguage $enableVersions -}}
|
{{- if and $menus (or $enableLanguage $enableVersions) -}}
|
||||||
<li class="nav-item py-2 py-md-1 col-12 col-md-auto d-none d-{{ $size }}-block">
|
<li class="nav-item py-2 py-md-1 col-12 col-md-auto d-none d-{{ $size }}-block">
|
||||||
<div class="vr d-none d-md-flex h-100 mx-md-2"></div>
|
<div class="vr d-none d-md-flex h-100 mx-md-2"></div>
|
||||||
</li>
|
</li>
|
||||||
@@ -250,15 +254,15 @@
|
|||||||
{{- $currentLang := $page.Language.Lang -}}
|
{{- $currentLang := $page.Language.Lang -}}
|
||||||
<li class="nav-item dropdown">
|
<li class="nav-item dropdown">
|
||||||
<a class="nav-link dropdown-toggle d-{{ $size }}-none" href="#!" role="button" data-bs-toggle="dropdown" aria-expanded="false">
|
<a class="nav-link dropdown-toggle d-{{ $size }}-none" href="#!" role="button" data-bs-toggle="dropdown" aria-expanded="false">
|
||||||
{{- partial "assets/icon.html" (dict "icon" "fas globe") }} {{ T "languageSwitcherLabel" }}
|
{{- partial "assets/icon.html" (dict "icon" "fas globe fa-fw") }} {{ T "languageSwitcherLabel" }}
|
||||||
</a>
|
</a>
|
||||||
<a class="nav-link dropdown-toggle d-none d-{{ $size }}-block" href="#!" role="button" data-bs-toggle="dropdown" aria-expanded="false">
|
<a class="nav-link dropdown-toggle d-none d-{{ $size }}-block" href="#!" role="button" data-bs-toggle="dropdown" aria-expanded="false">
|
||||||
{{- partial "assets/icon.html" (dict "icon" "fas globe") }}
|
{{- partial "assets/icon.html" (dict "icon" "fas globe fa-fw") }}
|
||||||
</a>
|
</a>
|
||||||
<ul class="dropdown-menu dropdown-menu-end ">
|
<ul class="dropdown-menu dropdown-menu-end ">
|
||||||
{{- if $page.IsTranslated -}}
|
{{- if $page.IsTranslated -}}
|
||||||
{{- range $page.AllTranslations -}}
|
{{- range $page.AllTranslations -}}
|
||||||
<li><a class="dropdown-item {{ if eq .Language.Lang $currentLang }}active{{ end }}" href="{{ .Permalink }}">{{ .Language.LanguageName }}</a></li>
|
<li><a class="dropdown-item {{ if eq .Language.Lang $currentLang }}active{{ end }}" href="{{ .RelPermalink }}">{{ .Language.LanguageName }}</a></li>
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- else -}}
|
{{- else -}}
|
||||||
{{- range site.Languages -}}
|
{{- range site.Languages -}}
|
||||||
|
@@ -41,22 +41,22 @@
|
|||||||
{{- with .First }}
|
{{- with .First }}
|
||||||
{{- if ne $currentPageNumber .PageNumber }}
|
{{- if ne $currentPageNumber .PageNumber }}
|
||||||
<li class="page-item">
|
<li class="page-item">
|
||||||
<a href="{{ .URL }}" aria-label="{{ T "paginationFirst" }}" class="page-link" role="button"><span aria-hidden="true"><i class="fas fa-angle-double-left"></i></span></a>
|
<a href="{{ .URL }}" aria-label="{{ T "paginationFirst" }}" class="page-link" role="button"><span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angles-left") }}</span></a>
|
||||||
</li>
|
</li>
|
||||||
{{- else }}
|
{{- else }}
|
||||||
<li class="page-item disabled">
|
<li class="page-item disabled">
|
||||||
<a aria-disabled="true" aria-label="{{ T "paginationFirst" }}" class="page-link" role="button" tabindex="-1"><span aria-hidden="true"><i class="fas fa-angle-double-left"></i></span></a>
|
<a aria-disabled="true" aria-label="{{ T "paginationFirst" }}" class="page-link" role="button" tabindex="-1"><span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angles-left") }}</span></a>
|
||||||
</li>
|
</li>
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
||||||
{{- with .Prev }}
|
{{- with .Prev }}
|
||||||
<li class="page-item">
|
<li class="page-item">
|
||||||
<a href="{{ .URL }}" aria-label="{{ T "paginationPrevious" }}" class="page-link" role="button"><span aria-hidden="true"><i class="fas fa-angle-left"></i></span></a>
|
<a href="{{ .URL }}" aria-label="{{ T "paginationPrevious" }}" class="page-link" role="button"><span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angle-left") }}</span></a>
|
||||||
</li>
|
</li>
|
||||||
{{- else }}
|
{{- else }}
|
||||||
<li class="page-item disabled">
|
<li class="page-item disabled">
|
||||||
<a aria-disabled="true" aria-label="{{ T "paginationPrevious" }}" class="page-link" role="button" tabindex="-1"><span aria-hidden="true"><i class="fas fa-angle-left"></i></span></a>
|
<a aria-disabled="true" aria-label="{{ T "paginationPrevious" }}" class="page-link" role="button" tabindex="-1"><span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angle-left") }}</span></a>
|
||||||
</li>
|
</li>
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
||||||
@@ -81,22 +81,22 @@
|
|||||||
|
|
||||||
{{- with .Next }}
|
{{- with .Next }}
|
||||||
<li class="page-item">
|
<li class="page-item">
|
||||||
<a href="{{ .URL }}" aria-label="{{ T "paginationNext" }}" class="page-link" role="button"><span aria-hidden="true"><i class="fas fa-angle-right"></i></span></a>
|
<a href="{{ .URL }}" aria-label="{{ T "paginationNext" }}" class="page-link" role="button"><span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angle-right") }}</span></a>
|
||||||
</li>
|
</li>
|
||||||
{{- else }}
|
{{- else }}
|
||||||
<li class="page-item disabled">
|
<li class="page-item disabled">
|
||||||
<a aria-disabled="true" aria-label="{{ T "paginationNext" }}" class="page-link" role="button" tabindex="-1"><span aria-hidden="true"><i class="fas fa-angle-right"></i></span></a>
|
<a aria-disabled="true" aria-label="{{ T "paginationNext" }}" class="page-link" role="button" tabindex="-1"><span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angle-right") }}</span></a>
|
||||||
</li>
|
</li>
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
||||||
{{- with .Last }}
|
{{- with .Last }}
|
||||||
{{- if ne $currentPageNumber .PageNumber }}
|
{{- if ne $currentPageNumber .PageNumber }}
|
||||||
<li class="page-item">
|
<li class="page-item">
|
||||||
<a href="{{ .URL }}" aria-label="{{ T "paginationLast" }}" class="page-link" role="button"><span aria-hidden="true"><i class="fas fa-angle-double-right"></i></span></a>
|
<a href="{{ .URL }}" aria-label="{{ T "paginationLast" }}" class="page-link" role="button"><span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angles-right") }}</span></a>
|
||||||
</li>
|
</li>
|
||||||
{{- else }}
|
{{- else }}
|
||||||
<li class="page-item disabled">
|
<li class="page-item disabled">
|
||||||
<a aria-disabled="true" aria-label="{{ T "paginationLast" }}" class="page-link" role="button" tabindex="-1"><span aria-hidden="true"><i class="fas fa-angle-double-right"></i></span></a>
|
<a aria-disabled="true" aria-label="{{ T "paginationLast" }}" class="page-link" role="button" tabindex="-1"><span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angles-right") }}</span></a>
|
||||||
</li>
|
</li>
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
@@ -112,14 +112,14 @@
|
|||||||
{{- with .First }}
|
{{- with .First }}
|
||||||
{{- if ne $currentPageNumber .PageNumber }}
|
{{- if ne $currentPageNumber .PageNumber }}
|
||||||
<li class="page-item">
|
<li class="page-item">
|
||||||
<a href="{{ .URL }}" aria-label="{{ T "paginationFirst" }}" class="page-link" role="button"><span aria-hidden="true"><i class="fas fa-angle-double-left"></i></span></a>
|
<a href="{{ .URL }}" aria-label="{{ T "paginationFirst" }}" class="page-link" role="button"><span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angles-left") }}</span></a>
|
||||||
</li>
|
</li>
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
||||||
{{- with .Prev }}
|
{{- with .Prev }}
|
||||||
<li class="page-item">
|
<li class="page-item">
|
||||||
<a href="{{ .URL }}" aria-label="{{ T "paginationPrevious" }}" class="page-link" role="button"><span aria-hidden="true"><i class="fas fa-angle-left"></i></span></a>
|
<a href="{{ .URL }}" aria-label="{{ T "paginationPrevious" }}" class="page-link" role="button"><span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angle-left") }}</span></a>
|
||||||
</li>
|
</li>
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
||||||
@@ -144,14 +144,14 @@
|
|||||||
|
|
||||||
{{- with .Next }}
|
{{- with .Next }}
|
||||||
<li class="page-item">
|
<li class="page-item">
|
||||||
<a href="{{ .URL }}" aria-label="{{ T "paginationNext" }}" class="page-link" role="button"><span aria-hidden="true"><i class="fas fa-angle-right"></i></span></a>
|
<a href="{{ .URL }}" aria-label="{{ T "paginationNext" }}" class="page-link" role="button"><span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angle-right") }}</span></a>
|
||||||
</li>
|
</li>
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
||||||
{{- with .Last }}
|
{{- with .Last }}
|
||||||
{{- if ne $currentPageNumber .PageNumber }}
|
{{- if ne $currentPageNumber .PageNumber }}
|
||||||
<li class="page-item">
|
<li class="page-item">
|
||||||
<a href="{{ .URL }}" aria-label="{{ T "paginationLast" }}" class="page-link" role="button"><span aria-hidden="true"><i class="fas fa-angle-double-right"></i></span></a>
|
<a href="{{ .URL }}" aria-label="{{ T "paginationLast" }}" class="page-link" role="button"><span aria-hidden="true">{{ partial "assets/icon.html" (dict "icon" "fas angles-right") }}</span></a>
|
||||||
</li>
|
</li>
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
@@ -49,7 +49,7 @@
|
|||||||
|
|
||||||
{{- with $page -}}
|
{{- with $page -}}
|
||||||
{{- if not $title }}{{ $title = .Title }}{{ end -}}
|
{{- if not $title }}{{ $title = .Title }}{{ end -}}
|
||||||
{{- if not $href }}{{ $href = .Permalink }}{{ end -}}
|
{{- if not $href }}{{ $href = .RelPermalink }}{{ end -}}
|
||||||
{{- if not $content }}{{ $content = .Content }}{{ end -}}
|
{{- if not $content }}{{ $content = .Content }}{{ end -}}
|
||||||
{{- if not $thumbnail }}{{ $thumbnail = .Params.thumbnail }}{{ end -}}
|
{{- if not $thumbnail }}{{ $thumbnail = .Params.thumbnail }}{{ end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
@@ -23,6 +23,10 @@
|
|||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{ partial "assets/button.html" (dict "toast" $target "clipboard" $clipboard "href" $url "icon" (printf "%s fa-fw" $item.icon) "class" "btn-social p-0" )}}
|
{{ partial "assets/button.html" (dict "toast" $target "clipboard" $clipboard "href" $url "icon" (printf "%s fa-fw" $item.icon) "class" "btn-social p-0" )}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
{{ if .Site.Params.sharing.webshare }}
|
||||||
|
{{ $attr := dict "data-sharing-title" .Title "data-sharing-description" .Description "data-sharing-url" .Permalink }}
|
||||||
|
{{ partial "assets/button.html" (dict "href" "#!" "icon" "fas share-nodes fa-fw" "id" "btn-webshare" "class" "btn-social p-0" "attributes" $attr )}}
|
||||||
|
{{- end -}}
|
||||||
</div>
|
</div>
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
@@ -1,7 +1,7 @@
|
|||||||
<footer class="container-fluid text-center p-3">
|
<footer class="container-fluid text-center p-3">
|
||||||
<div class="container-xxl text-center">
|
<div class="container-xxl text-center">
|
||||||
<small class="text-secondary">
|
<small class="text-secondary">
|
||||||
{{- $copyright := printf "%s © %s %s All rights reserved." (i18n "copyright") (dateFormat "2006" now) .Site.Title }}
|
{{- $copyright := printf "%s © %s %s %s." (T "copyright") (dateFormat "2006" now) .Site.Title (T "rights") }}
|
||||||
{{ cond (gt (len .Site.Copyright) 0) .Site.Copyright $copyright }}
|
{{ cond (gt (len .Site.Copyright) 0) .Site.Copyright $copyright }}
|
||||||
{{ .Site.Params.footer.license | safeHTML }}
|
{{ .Site.Params.footer.license | safeHTML }}
|
||||||
</small>
|
</small>
|
||||||
|
@@ -1,3 +1,4 @@
|
|||||||
|
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
|
||||||
{{- $filename := .filename | default "js/main.bundle.js" -}}
|
{{- $filename := .filename | default "js/main.bundle.js" -}}
|
||||||
{{- $match := .match | default "{js/*.js,js/vendor/**.js}" -}}
|
{{- $match := .match | default "{js/*.js,js/vendor/**.js}" -}}
|
||||||
{{- $page := .page -}}
|
{{- $page := .page -}}
|
||||||
@@ -10,7 +11,7 @@
|
|||||||
{{- $modules = site.Params.modules.core -}}
|
{{- $modules = site.Params.modules.core -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
{{- $bundle := partial "utilities/bundle" (dict "match" $match "filename" $filename "modules" $modules "basepath" "js/modules" "all" true) -}}
|
{{- $bundle := partial "utilities/bundle" (dict "match" $match "filename" $filename "modules" $modules "basepath" "js/modules" "all" true "debugging" site.Params.debugging.showJS) -}}
|
||||||
{{- $js := $bundle -}}
|
{{- $js := $bundle -}}
|
||||||
{{- if not $skipTemplate -}}
|
{{- if not $skipTemplate -}}
|
||||||
{{- $js = $bundle | resources.ExecuteAsTemplate $filename $page -}}
|
{{- $js = $bundle | resources.ExecuteAsTemplate $filename $page -}}
|
||||||
@@ -23,9 +24,11 @@
|
|||||||
{{- end }}
|
{{- end }}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
{{- if not hugo.IsProduction -}}
|
{{- if gt (len $js.Content) 0 -}}
|
||||||
<script src="{{ $js.Permalink }}"></script>
|
{{- if not hugo.IsProduction -}}
|
||||||
{{ else -}}
|
<script src="{{ if $absoluteURL }}{{ $js.Permalink }}{{ else }}{{ $js.RelPermalink }}{{ end }}"></script>
|
||||||
{{ $js = $js | minify | fingerprint -}}
|
{{ else -}}
|
||||||
<script src="{{ $js.Permalink }}" integrity="{{ $js.Data.Integrity }}" crossorigin="anonymous"></script>
|
{{ $js = $js | minify | fingerprint -}}
|
||||||
|
<script src="{{ if $absoluteURL }}{{ $js.Permalink }}{{ else }}{{ $js.RelPermalink }}{{ end }}" integrity="{{ $js.Data.Integrity }}" crossorigin="anonymous"></script>
|
||||||
|
{{ end -}}
|
||||||
{{ end -}}
|
{{ end -}}
|
||||||
|
@@ -1,3 +1,4 @@
|
|||||||
|
{{- $tab := site.Params.main.externalLinks.tab -}}
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<div class="row row-cols-1 row-cols-sm-4 bg-primary p-3 bg-opacity-{{ .Site.Params.style.themeOpacity | default "25" | safeHTML }} align-items-center">
|
<div class="row row-cols-1 row-cols-sm-4 bg-primary p-3 bg-opacity-{{ .Site.Params.style.themeOpacity | default "25" | safeHTML }} align-items-center">
|
||||||
<div class="col col-md-2 d-none d-md-block"></div>
|
<div class="col col-md-2 d-none d-md-block"></div>
|
||||||
@@ -7,8 +8,12 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col text-sm-start text-center col-sm-6 col-md-4">
|
<div class="col text-sm-start text-center col-sm-6 col-md-4">
|
||||||
{{ range .Site.Menus.social -}}
|
{{ range .Site.Menus.social -}}
|
||||||
<a href="{{ .URL }}" target="_blank" rel="noopener noreferrer" aria-label="{{ .Name | safeHTML }}" class="text-decoration-none link-secondary d-inline p-2">
|
<a href="{{ .URL }}" {{ if $tab }} target="_blank" rel="noopener noreferrer"{{ end }} aria-label="{{ .Name | safeHTML }}" class="text-decoration-none link-secondary d-inline p-2">
|
||||||
{{ .Pre | safeHTML }}
|
{{ if hasPrefix .Pre "<i" }}
|
||||||
|
{{ .Pre | safeHTML }}
|
||||||
|
{{ else }}
|
||||||
|
{{ partial "assets/icon.html" (dict "icon" (printf "%s fa-2x" .Pre) )}}
|
||||||
|
{{ end }}
|
||||||
</a>
|
</a>
|
||||||
{{ end -}}
|
{{ end -}}
|
||||||
</div>
|
</div>
|
||||||
|
@@ -1,10 +1,11 @@
|
|||||||
<!-- Source: https://davelage.com/posts/hugo-favicons/ -->
|
<!-- Source: https://davelage.com/posts/hugo-favicons/ -->
|
||||||
|
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
|
||||||
{{ if .Site.Params.favicon.logo -}}
|
{{ if .Site.Params.favicon.logo -}}
|
||||||
{{ $favicon := resources.Get .Site.Params.favicon.logo -}}
|
{{ $favicon := resources.Get .Site.Params.favicon.logo -}}
|
||||||
{{ range $i := .Site.Params.favicon.sizes -}}
|
{{ range $i := .Site.Params.favicon.sizes -}}
|
||||||
{{ $image := $favicon.Resize (printf "%dx%d CatmullRom" $i $i) -}}
|
{{ $image := $favicon.Resize (printf "%dx%d CatmullRom" $i $i) -}}
|
||||||
<link rel="icon" type="image/png" sizes="{{$i}}x{{$i}}" href="{{ $image.Permalink }}">
|
<link rel="icon" type="image/png" sizes="{{$i}}x{{$i}}" href="{{ if $absoluteURL }}{{ $image.Permalink }}{{ else }}{{ $image.RelPermalink }}{{ end }}">
|
||||||
{{ end -}}
|
{{ end -}}
|
||||||
{{ $image := $favicon.Resize "180x CatmullRom" -}}
|
{{ $image := $favicon.Resize "180x CatmullRom" -}}
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="{{ $image.Permalink }}">
|
<link rel="apple-touch-icon" sizes="180x180" href="{{ if $absoluteURL }}{{ $image.Permalink }}{{ else }}{{ $image.RelPermalink }}{{ end }}">
|
||||||
{{ end -}}
|
{{ end -}}
|
@@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
Variable names are converted from kebab case to snake case to make them compatible with Hugo's variable naming
|
Variable names are converted from kebab case to snake case to make them compatible with Hugo's variable naming
|
||||||
convention. For example, the css variable '--accordion-icon-active-color' is available as
|
convention. For example, the css variable '--accordion-icon-active-color' is available as
|
||||||
''.accordion_icon_active_color' within the Hugo template. The processed svg files are published to the "icons"
|
'.accordion_icon_active_color' within the Hugo template. The processed svg files are published to the "icons"
|
||||||
folder.
|
folder.
|
||||||
|
|
||||||
The partial supports the following arguments:
|
The partial supports the following arguments:
|
||||||
|
@@ -1,3 +1,4 @@
|
|||||||
|
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
|
||||||
{{- $source := .source | default "scss/app.scss" -}}
|
{{- $source := .source | default "scss/app.scss" -}}
|
||||||
{{- $target := .target | default "css/main.css" -}}
|
{{- $target := .target | default "css/main.css" -}}
|
||||||
{{- $page := .page -}}
|
{{- $page := .page -}}
|
||||||
@@ -6,7 +7,7 @@
|
|||||||
{{- $modules := "" -}}
|
{{- $modules := "" -}}
|
||||||
{{ if $core }}
|
{{ if $core }}
|
||||||
{{- if reflect.IsSlice site.Params.modules.excludeSCSS -}}
|
{{- if reflect.IsSlice site.Params.modules.excludeSCSS -}}
|
||||||
{{- $modules = complement site.Params.modules.excludeSCSS site.Params.modules.core -}}
|
{{- $modules = complement site.Params.modules.excludeSCSS (or site.Params.modules.core slice) -}}
|
||||||
{{ else }}
|
{{ else }}
|
||||||
{{- $modules = site.Params.modules.core -}}
|
{{- $modules = site.Params.modules.core -}}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
@@ -29,17 +30,8 @@
|
|||||||
"import-fonts" (printf "%t" (not (hasPrefix (lower site.Params.style.themeFontPath) "http")))
|
"import-fonts" (printf "%t" (not (hasPrefix (lower site.Params.style.themeFontPath) "http")))
|
||||||
-}}
|
-}}
|
||||||
|
|
||||||
<!-- TODO: remove debug statement -->
|
|
||||||
{{ $match := "scss/**.scss" }}
|
|
||||||
{{ $files := sort (resources.Match $match) "Key" "asc" }}
|
|
||||||
{{ warnf "Processing pattern: %s" $match}}
|
|
||||||
{{- range $index, $file := $files -}}
|
|
||||||
{{/*- warnf " - Processing file: %s" $file.Key */}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{- $options := (dict "transpiler" "libsass" "targetPath" $target "enableSourceMap" (not hugo.IsProduction) "vars" $vars) -}}
|
{{- $options := (dict "transpiler" "libsass" "targetPath" $target "enableSourceMap" (not hugo.IsProduction) "vars" $vars) -}}
|
||||||
{{- $bundle := partial "utilities/bundle" (dict "match" $source "filename" (printf "scss/bundle-%d.scss" now.UnixNano) "modules" $modules "basepath" "scss") -}}
|
{{- $bundle := partial "utilities/bundle" (dict "match" $source "filename" (printf "scss/bundle-%d.scss" now.UnixNano) "modules" $modules "basepath" "scss" "debugging" site.Params.debugging.showSCSS) -}}
|
||||||
{{/* warnf "Bundle: %s" $bundle.Content */}}
|
|
||||||
|
|
||||||
{{- $css := $bundle | resources.ExecuteAsTemplate $target . | toCSS $options -}}
|
{{- $css := $bundle | resources.ExecuteAsTemplate $target . | toCSS $options -}}
|
||||||
|
|
||||||
@@ -52,8 +44,8 @@
|
|||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
{{- if not hugo.IsProduction -}}
|
{{- if not hugo.IsProduction -}}
|
||||||
<link rel="stylesheet" href="{{ $css.Permalink }}">
|
<link rel="stylesheet" href="{{ if $absoluteURL }}{{ $css.Permalink }}{{ else }}{{ $css.RelPermalink }}{{ end }}">
|
||||||
{{- else -}}
|
{{- else -}}
|
||||||
{{- $css = $css | fingerprint | resources.PostProcess -}}
|
{{- $css = $css | fingerprint | resources.PostProcess -}}
|
||||||
<link rel="stylesheet" href="{{ $css.Permalink }}" integrity="{{ $css.Data.Integrity }}" crossorigin="anonymous">
|
<link rel="stylesheet" href="{{ if $absoluteURL }}{{ $css.Permalink }}{{ else }}{{ $css.RelPermalink }}{{ end }}" integrity="{{ $css.Data.Integrity }}" crossorigin="anonymous">
|
||||||
{{- end -}}
|
{{- end -}}
|
@@ -18,6 +18,8 @@
|
|||||||
{{- errorf "partial [assets/bundle.html] - Cannot derive file extension of match pattern: %s" $match -}}
|
{{- errorf "partial [assets/bundle.html] - Cannot derive file extension of match pattern: %s" $match -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- $debugging := .debugging | default false -}}
|
||||||
|
|
||||||
{{- if $modules -}}
|
{{- if $modules -}}
|
||||||
{{- $match = trim $match "{}" -}}
|
{{- $match = trim $match "{}" -}}
|
||||||
{{- $matches := slice $match -}}
|
{{- $matches := slice $match -}}
|
||||||
@@ -46,10 +48,11 @@
|
|||||||
{{ $sorted = $sorted | append $file.resource }}
|
{{ $sorted = $sorted | append $file.resource }}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
<!-- TODO: remove temp debug statement -->
|
{{- if $debugging -}}
|
||||||
{{ warnf "Processing pattern: %s" $match}}
|
{{ warnf "Processing pattern: %s" $match}}
|
||||||
{{- range $index, $file := $sorted -}}
|
{{- range $index, $file := $sorted -}}
|
||||||
{{- warnf " - Processing file: %s" $file }}
|
{{- warnf " - Processing file: %s" $file }}
|
||||||
|
{{- end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
{{/* warnf "FILES: %s" $sorted */}}
|
{{/* warnf "FILES: %s" $sorted */}}
|
||||||
|
43
layouts/partials/utilities/link.html
Normal file
43
layouts/partials/utilities/link.html
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
{{ $destination := .destination }}
|
||||||
|
{{- if not $destination -}}
|
||||||
|
{{- errorf "partial [utilities/link.html] - Missing param 'destination'" -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- $target := "" -}}
|
||||||
|
{{- $rel := "" -}}
|
||||||
|
{{- $case := .case | default true }}
|
||||||
|
{{- $cue := .cue | default site.Params.main.externalLinks.cue -}}
|
||||||
|
{{- $tab := .tab | default site.Params.main.externalLinks.tab -}}
|
||||||
|
{{- $isExternal := ne (urls.Parse (absURL $destination)).Host (urls.Parse site.BaseURL).Host -}}
|
||||||
|
|
||||||
|
{{ $text := .text }}
|
||||||
|
{{- if not $text -}}
|
||||||
|
{{ if $isExternal }}
|
||||||
|
{{ $text = (urls.Parse (absURL $destination)).Host }}
|
||||||
|
{{ else }}
|
||||||
|
{{ $target := site.GetPage $destination }}
|
||||||
|
{{ if not $target }}
|
||||||
|
{{- errorf "partial [utilities/link.html] - Cannot find page: %s" $destination -}}
|
||||||
|
{{ else }}
|
||||||
|
{{ $text = $target.Title }}
|
||||||
|
{{ if not $case }}{{ $text = lower $text }}{{ end }}
|
||||||
|
{{ $destination = $target.RelPermalink }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- if $isExternal -}}
|
||||||
|
{{- if $tab -}}
|
||||||
|
{{- $target = "_blank" -}}
|
||||||
|
{{- $rel = "noopener noreferrer" -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- if $cue -}}
|
||||||
|
{{ $suffix := partial "assets/icon.html" (dict "icon" "fas up-right-from-square fa-2xs") }}
|
||||||
|
{{- $text = printf "%s %s" $text $suffix | safeHTML -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{ else }}
|
||||||
|
{{ $destination = relLangURL $destination }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
<a href="{{ $destination | safeURL }}"{{ with $target }} target="{{ . }}"{{ end }}{{ with $rel }} rel="{{ . }}"{{ end }}>{{ $text }}</a>
|
@@ -4,10 +4,27 @@
|
|||||||
"warning", "info", "light", "dark", "white" or "black".
|
"warning", "info", "light", "dark", "white" or "black".
|
||||||
"dismissible" Optional flag to indicate the alert is dismissible, defaults to false.
|
"dismissible" Optional flag to indicate the alert is dismissible, defaults to false.
|
||||||
"icon" Optional class and name of a Font Awesome icon to include.
|
"icon" Optional class and name of a Font Awesome icon to include.
|
||||||
|
"type" Optional type of the alert, either "danger" or "info". Generates an alert with related color and
|
||||||
|
icon.
|
||||||
-->
|
-->
|
||||||
|
|
||||||
{{- $error := false -}}
|
{{- $error := false -}}
|
||||||
{{ $color := "primary" -}}
|
{{ $color := "primary" -}}
|
||||||
|
{{ $icon := "" }}
|
||||||
|
{{ $type := "" -}}
|
||||||
|
|
||||||
|
{{ with .Get "type" }}{{ $type = . }}{{ end -}}
|
||||||
|
{{ $supportedTypes := slice "danger" "info" -}}
|
||||||
|
{{ if $type }}
|
||||||
|
{{ if not (in $supportedTypes $type) -}}
|
||||||
|
{{ errorf "Invalid value for param 'type': %s" .Position -}}
|
||||||
|
{{ $error = true -}}
|
||||||
|
{{ else }}
|
||||||
|
{{ $color = $type }}
|
||||||
|
{{ if eq $type "danger" }}{{ $icon = "fas triangle-exclamation" }}{{ else }}{{ $icon = "fa lightbulb" }}{{ end }}
|
||||||
|
{{ end -}}
|
||||||
|
{{ end -}}
|
||||||
|
|
||||||
{{ with .Get "color" }}{{ $color = . }}{{ end -}}
|
{{ with .Get "color" }}{{ $color = . }}{{ end -}}
|
||||||
{{ $supportedColors := slice "primary" "secondary" "success" "danger" "warning" "info" "light" "dark" -}}
|
{{ $supportedColors := slice "primary" "secondary" "success" "danger" "warning" "info" "light" "dark" -}}
|
||||||
{{ if not (in $supportedColors $color) -}}
|
{{ if not (in $supportedColors $color) -}}
|
||||||
@@ -15,9 +32,9 @@
|
|||||||
{{ $error = true -}}
|
{{ $error = true -}}
|
||||||
{{ end -}}
|
{{ end -}}
|
||||||
|
|
||||||
{{ $icon := "" }}
|
{{ with .Get "icon" }}{{ $icon = . }}{{ end }}
|
||||||
{{ with .Get "icon" }}
|
{{ with $icon }}
|
||||||
{{ $icon = partial "assets/icon.html" (dict "icon" (printf "%s fa-2x fa-pull-left" .)) }}
|
{{ $icon = partial "assets/icon.html" (dict "icon" (printf "%s fa-2x fa-fw" .)) }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{ $dismissibleParam := "false" -}}
|
{{ $dismissibleParam := "false" -}}
|
||||||
@@ -32,9 +49,11 @@
|
|||||||
{{ end -}}
|
{{ end -}}
|
||||||
|
|
||||||
{{- if not $error -}}
|
{{- if not $error -}}
|
||||||
<div class="alert alert-{{ $color }} {{ if $dismissible }}alert-dismissible fade show{{ end }}" role="alert">
|
<div class="d-flex alert alert-{{ $color }} {{ if $dismissible }}alert-dismissible fade show{{ end }}" role="alert">
|
||||||
{{ with $icon }}{{ . }}{{ end }}
|
{{ with $icon }}<div class="pt-1 pe-2">{{ . }}</div>{{ end }}
|
||||||
{{ trim .Inner " \r\n" | markdownify | safeHTML -}}
|
<div class="flex-grow-1 my-auto">
|
||||||
{{ if $dismissible }}<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>{{ end }}
|
{{ trim .Inner " \r\n" | markdownify | safeHTML -}}
|
||||||
|
{{ if $dismissible }}<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>{{ end }}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{- end -}}
|
{{- end -}}
|
@@ -12,17 +12,29 @@
|
|||||||
"aria-label" Optional label for the badge.
|
"aria-label" Optional label for the badge.
|
||||||
"tooltip" Optional text to display in a tooltip. Cannot be used together with collapse. Ignored for active/
|
"tooltip" Optional text to display in a tooltip. Cannot be used together with collapse. Ignored for active/
|
||||||
inactive buttons.
|
inactive buttons.
|
||||||
"collapse" Optional panel to collapse. Cannot be used together with tooltip. Ignored for active/inactive buttons.
|
"collapse" Optional panel to collapse. Cannot be used together with tooltip. Ignored for active/inactive
|
||||||
|
buttons.
|
||||||
"placement" Optional position of the tooltip: "top" (default), "bottom", "left", or "right".
|
"placement" Optional position of the tooltip: "top" (default), "bottom", "left", or "right".
|
||||||
|
"class" Optional class attribute of the button element, e.g. “p-5”.
|
||||||
|
"icon" Font Awesome icon class attribute, required unless button title is set. An example value is
|
||||||
|
"fas sort".
|
||||||
|
"order" Optional order of the icon, either "first" or "last" (default).
|
||||||
|
"justify" Optional justification of the button title and icon, either "start", "end", "center" (default),
|
||||||
|
"between", "around", or "evenly".
|
||||||
"toast" Optional id of the toast to display when the button is clicked.
|
"toast" Optional id of the toast to display when the button is clicked.
|
||||||
|
"cue" Optional flag to indicate if an external link should show a visual cue, defaults to setting
|
||||||
|
"main.externalLinks.cue" in the site's parameters.
|
||||||
|
"tab" Optional flag to indicate if an external link should open in a new tab, defaults to setting
|
||||||
|
"main.externalLinks.tab" in the site's parameters.
|
||||||
-->
|
-->
|
||||||
|
|
||||||
{{ $error := false }}
|
{{ $error := false }}
|
||||||
{{ $type := "button" -}}
|
{{ $type := "button" -}}
|
||||||
|
|
||||||
|
{{- $icon := .Get "icon" }}
|
||||||
{{ $title := trim .Inner " \r\n" -}}
|
{{ $title := trim .Inner " \r\n" -}}
|
||||||
{{ if not $title -}}
|
{{ if not (or $title $icon) -}}
|
||||||
{{ errorf "Missing inner element text: %s" .Position -}}
|
{{ errorf "Missing icon or inner element text: %s" .Position -}}
|
||||||
{{ $error = true }}
|
{{ $error = true }}
|
||||||
{{ end -}}
|
{{ end -}}
|
||||||
|
|
||||||
@@ -69,6 +81,7 @@
|
|||||||
{{ if $relref }}
|
{{ if $relref }}
|
||||||
{{ $href = relref . $relref }}
|
{{ $href = relref . $relref }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
{{ $class := .Get "class" -}}
|
||||||
|
|
||||||
{{ $placement := "top" -}}
|
{{ $placement := "top" -}}
|
||||||
{{ with .Get "placement" }}{{ $placement = . }}{{ end -}}
|
{{ with .Get "placement" }}{{ $placement = . }}{{ end -}}
|
||||||
@@ -80,6 +93,25 @@
|
|||||||
|
|
||||||
{{- $toast := .Get "toast" -}}
|
{{- $toast := .Get "toast" -}}
|
||||||
|
|
||||||
|
{{- $order := "last" -}}
|
||||||
|
{{- with .Get "order" }}{{ $order = . }}{{ end -}}
|
||||||
|
{{- $supportedOrders := slice "first" "last" -}}
|
||||||
|
{{- if not (in $supportedOrders $order) -}}
|
||||||
|
{{ errorf "Invalid value for param 'order': %s" .Position -}}
|
||||||
|
{{ $error = true }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- $justify := "center" -}}
|
||||||
|
{{- with .Get "justify" }}{{ $justify = . }}{{ end -}}
|
||||||
|
{{- $supportedJustify := slice "start" "end" "center" "between" "around" "evenly" -}}
|
||||||
|
{{- if not (in $supportedJustify $justify) -}}
|
||||||
|
{{ errorf "Invalid value for param 'justify': %s" .Position -}}
|
||||||
|
{{ $error = true }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- $cue := .Get "cue" | default site.Params.main.externalLinks.cue -}}
|
||||||
|
{{- $tab := .Get "tab" | default site.Params.main.externalLinks.tab -}}
|
||||||
|
|
||||||
{{ if not $error }}
|
{{ if not $error }}
|
||||||
{{- partial "assets/button.html" (dict
|
{{- partial "assets/button.html" (dict
|
||||||
"type" $type
|
"type" $type
|
||||||
@@ -94,7 +126,13 @@
|
|||||||
"href" $href
|
"href" $href
|
||||||
"id" $id
|
"id" $id
|
||||||
"state" $state
|
"state" $state
|
||||||
|
"class" $class
|
||||||
"placement" $placement
|
"placement" $placement
|
||||||
|
"icon" $icon
|
||||||
|
"order" $order
|
||||||
|
"justify" $justify
|
||||||
|
"cue" $cue
|
||||||
|
"tab" $tab
|
||||||
"toast" $toast)
|
"toast" $toast)
|
||||||
-}}
|
-}}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
@@ -44,13 +44,23 @@
|
|||||||
{{ errorf "Invalid value for param 'show': %s" $showParam -}}
|
{{ errorf "Invalid value for param 'show': %s" $showParam -}}
|
||||||
{{ end -}}
|
{{ end -}}
|
||||||
|
|
||||||
|
{{ $fullParam := "true" -}}
|
||||||
|
{{ $full := true -}}
|
||||||
|
{{ with .Get "full" }}{{ $fullParam = . }}{{ end -}}
|
||||||
|
{{ if in $supportedFlags $fullParam -}}
|
||||||
|
{{ if eq $fullParam "true" }}{{ $full = true }}{{ else }}{{ $full = false }}{{ end -}}
|
||||||
|
{{ else -}}
|
||||||
|
{{ errorf "Invalid value for param 'full': %s" $fullParam -}}
|
||||||
|
{{ end -}}
|
||||||
|
|
||||||
{{- /* If any parameters are missing, print an error and exit */ -}}
|
{{- /* If any parameters are missing, print an error and exit */ -}}
|
||||||
{{- if or (not $name) (not $file) -}}
|
{{- if or (not $name) (not $file) -}}
|
||||||
{{- errorf "%s: %q: Missing required parameters! Got: name=%q file=%q!" .Position .Name $name $file -}}
|
{{- errorf "%s: %q: Missing required parameters! Got: name=%q file=%q!" .Position .Name $name $file -}}
|
||||||
{{- else -}}
|
{{- else -}}
|
||||||
{{- $regex := printf `%s((?:.|\n)*)%s` $capture_start $capture_end -}}
|
{{- /* Force-check if the file exists */ -}}
|
||||||
|
{{ $tmp := os.Stat $file }}
|
||||||
|
|
||||||
|
{{- $regex := printf `%s((?:.|\n)*)%s` $capture_start $capture_end -}}
|
||||||
{{- $match := findRE $regex (readFile $file) -}}
|
{{- $match := findRE $regex (readFile $file) -}}
|
||||||
{{- $match = index $match 0 -}}
|
{{- $match = index $match 0 -}}
|
||||||
|
|
||||||
@@ -70,7 +80,7 @@
|
|||||||
data-bs-target=".multi-{{ $id }}"
|
data-bs-target=".multi-{{ $id }}"
|
||||||
aria-expanded="false"
|
aria-expanded="false"
|
||||||
aria-controls="body-{{ $id }} footer-{{ $id }}">
|
aria-controls="body-{{ $id }} footer-{{ $id }}">
|
||||||
<small>{{ strings.TrimPrefix $basePath $file }}</small>
|
<small>{{ if $full }}{{ strings.TrimPrefix $basePath $file }}{{ else }}{{ path.Base $file }}{{ end }}</small>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@@ -1,5 +0,0 @@
|
|||||||
{{- if not (.Get 0) -}}
|
|
||||||
{{- errorf "Expected icon name: %s" .Position -}}
|
|
||||||
{{- else -}}
|
|
||||||
{{- partial "assets/icon.html" (dict "icon" (printf "fa %s" (delimit .Params " "))) }}
|
|
||||||
{{- end -}}
|
|
@@ -1,5 +0,0 @@
|
|||||||
{{- if not (.Get 0) -}}
|
|
||||||
{{- errorf "Expected icon name: %s" .Position -}}
|
|
||||||
{{- else -}}
|
|
||||||
{{- partial "assets/icon.html" (dict "icon" (printf "fab %s" (delimit .Params " "))) }}
|
|
||||||
{{- end -}}
|
|
@@ -1,5 +0,0 @@
|
|||||||
{{- if not (.Get 0) -}}
|
|
||||||
{{- errorf "Expected icon name: %s" .Position -}}
|
|
||||||
{{- else -}}
|
|
||||||
{{- partial "assets/icon.html" (dict "icon" (printf "fas %s" (delimit .Params " "))) }}
|
|
||||||
{{- end -}}
|
|
68
layouts/shortcodes/file.html
Normal file
68
layouts/shortcodes/file.html
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
{{- /*
|
||||||
|
Source: https://github.com/twbs/bootstrap/blob/main/site/layouts/shortcodes/scss-docs.html
|
||||||
|
|
||||||
|
Usage: `file path="path/to/filename" lang="lang" show="true" full="true"`
|
||||||
|
|
||||||
|
Prints the full content of any given file supported by the Chroma syntax highlighter.
|
||||||
|
*/ -}}
|
||||||
|
|
||||||
|
{{- $basePath := .Site.Params.docs.basePath -}}
|
||||||
|
{{- $file := .Get "path" }}
|
||||||
|
{{- if hasPrefix $file "./" -}}
|
||||||
|
{{- $file = path.Clean $file -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- $file = path.Join $basePath (path.Clean $file) -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- $extension := strings.TrimLeft "." (path.Ext $file) }}
|
||||||
|
{{- $lang := .Get "lang" | default $extension -}}
|
||||||
|
{{- $id := printf "docs-collapse-%d" .Ordinal -}}
|
||||||
|
|
||||||
|
{{ $supportedFlags := slice "true" "false" -}}
|
||||||
|
{{ $showParam := "true" -}}
|
||||||
|
{{ $show := true -}}
|
||||||
|
{{ with .Get "show" }}{{ $showParam = . }}{{ end -}}
|
||||||
|
{{ if in $supportedFlags $showParam -}}
|
||||||
|
{{ if eq $showParam "true" }}{{ $show = true }}{{ else }}{{ $show = false }}{{ end -}}
|
||||||
|
{{ else -}}
|
||||||
|
{{ errorf "Invalid value for param 'show': %s" $showParam -}}
|
||||||
|
{{ end -}}
|
||||||
|
|
||||||
|
{{ $fullParam := "true" -}}
|
||||||
|
{{ $full := true -}}
|
||||||
|
{{ with .Get "full" }}{{ $fullParam = . }}{{ end -}}
|
||||||
|
{{ if in $supportedFlags $fullParam -}}
|
||||||
|
{{ if eq $fullParam "true" }}{{ $full = true }}{{ else }}{{ $full = false }}{{ end -}}
|
||||||
|
{{ else -}}
|
||||||
|
{{ errorf "Invalid value for param 'full': %s" $fullParam -}}
|
||||||
|
{{ end -}}
|
||||||
|
|
||||||
|
{{- /* If any parameters are missing, print an error and exit */ -}}
|
||||||
|
{{- if not $file -}}
|
||||||
|
{{- errorf "%s: %q: Missing required parameters! Got: path=%q!" .Position .Name $file -}}
|
||||||
|
{{- else -}}
|
||||||
|
|
||||||
|
{{- /* Force-check if the file exists */ -}}
|
||||||
|
{{ $tmp := os.Stat $file }}
|
||||||
|
{{- $content := readFile $file -}}
|
||||||
|
|
||||||
|
<ul class="nav nav-tabs">
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link active font-monospace"
|
||||||
|
href="#body-{{ $id }}"
|
||||||
|
aria-current="page"
|
||||||
|
data-bs-toggle="collapse"
|
||||||
|
data-bs-target=".multi-{{ $id }}"
|
||||||
|
aria-expanded="false"
|
||||||
|
aria-controls="body-{{ $id }} footer-{{ $id }}">
|
||||||
|
<small>{{ if $full }}{{ strings.TrimPrefix $basePath $file }}{{ else }}{{ path.Base $file }}{{ end }}</small>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<div class="border-start border-end border-bottom mb-3">
|
||||||
|
<div class="collapse multi-{{ $id }}{{ if $show }} show{{ end }} syntax-highlight" id="body-{{ $id }}">
|
||||||
|
{{- highlight (trim $content "\r\n") $lang "" -}}
|
||||||
|
</div>
|
||||||
|
<div class="collapse multi-{{ $id }}{{ if not $show }} show{{ end }} p-3" id="footer-{{ $id }}"><i>...</i></div>
|
||||||
|
</div>
|
||||||
|
{{- end -}}
|
55
layouts/shortcodes/link.html
Normal file
55
layouts/shortcodes/link.html
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
<!--
|
||||||
|
Generates a link for a given named link or url. The shortcode supports a single unnamed parameter, or various named
|
||||||
|
parameters. The unnamed parameter is recognized as a named link if it does not contain any "/", otherwise it is
|
||||||
|
treated as a url. Any inner text is rendered as the link title, otherwise it uses the host name (for external links)
|
||||||
|
or page name (for internal links). The shortcode supports the following named arguments:
|
||||||
|
"name" Optional name of the link maintained in the "links" section of the site's parameters. If omitted,
|
||||||
|
the "url" argument should be provided instead.
|
||||||
|
"url" Optional url of the link, including the scheme ("http" or "https"). If omitted, the "name" argument
|
||||||
|
should be provided instead.
|
||||||
|
"cue" Optional flag to indicate if an external link should show a visual cue, defaults to setting
|
||||||
|
"main.externalLinks.cue" in the site's parameters.
|
||||||
|
"tab" Optional flag to indicate if an external link should open in a new tab, defaults to setting
|
||||||
|
"main.externalLinks.tab" in the site's parameters.
|
||||||
|
"case" Optional flag to indicate if the retrieved title (e.g. no inner text is provided) of an internal
|
||||||
|
link should use its original case, defaults to true. If false, the title is set to lower case.
|
||||||
|
-->
|
||||||
|
|
||||||
|
{{- $error := false -}}
|
||||||
|
{{ $name := "" }}
|
||||||
|
{{ $url := "" }}
|
||||||
|
{{ $case := true }}
|
||||||
|
{{ $cue := site.Params.main.externalLinks.cue }}
|
||||||
|
{{ $tab := site.Params.main.externalLinks.tab }}
|
||||||
|
|
||||||
|
{{ if .IsNamedParams }}
|
||||||
|
{{ $name = .Get "name" }}
|
||||||
|
{{ $url = .Get "url" }}
|
||||||
|
{{ $cue = .Get "cue" | default site.Params.main.externalLinks.cue }}
|
||||||
|
{{ $tab = .Get "tab" | default site.Params.main.externalLinks.tab }}
|
||||||
|
{{ $case = .Get "case" | default true }}
|
||||||
|
{{ else if strings.Contains (.Get 0) "/" }}
|
||||||
|
{{ $url = .Get 0 }}
|
||||||
|
{{ else }}
|
||||||
|
{{ $name = .Get 0 }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ if not (or $name $url) }}
|
||||||
|
{{ errorf "Expected param 'name' or 'url': %s" .Position -}}
|
||||||
|
{{ $error = true -}}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ if $name }}
|
||||||
|
{{ $url = index site.Params.links $name }}
|
||||||
|
{{ if not $url }}
|
||||||
|
{{ errorf "Cannot find link '%s': %s" $name .Position -}}
|
||||||
|
{{ $error = true -}}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ $text := trim .Inner " \r\n" | markdownify | safeHTML }}
|
||||||
|
|
||||||
|
{{- if not $error -}}
|
||||||
|
{{ partial "utilities/link.html" (dict "destination" $url "text" $text "cue" $cue "tab" $tab "case" $case) }}
|
||||||
|
{{- end -}}
|
||||||
|
|
1107
package-lock.json
generated
1107
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
32
package.json
32
package.json
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@gethinode/hinode",
|
"name": "@gethinode/hinode",
|
||||||
"version": "0.16.0-beta",
|
"version": "0.17.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",
|
||||||
@@ -19,8 +19,8 @@
|
|||||||
"scripts": {
|
"scripts": {
|
||||||
"prestart": "npm run clean && npm run mod:vendor",
|
"prestart": "npm run clean && npm run mod:vendor",
|
||||||
"start": "hugo server --bind=0.0.0.0 --disableFastRender",
|
"start": "hugo server --bind=0.0.0.0 --disableFastRender",
|
||||||
"start:prod": "hugo server --bind=0.0.0.0 --disableFastRender -e production",
|
"start:prod": "hugo server --bind=0.0.0.0 --disableFastRender --printI18nWarnings -e production",
|
||||||
"prebuild": "npm run clean",
|
"prebuild": "npm run clean && npm run -s mod:install",
|
||||||
"build": "hugo --gc --minify",
|
"build": "hugo --gc --minify",
|
||||||
"build:debug": "hugo -e debug --debug",
|
"build:debug": "hugo -e debug --debug",
|
||||||
"build:preview": "npm run build -D -F",
|
"build:preview": "npm run build -D -F",
|
||||||
@@ -32,6 +32,7 @@
|
|||||||
"lint:markdown": "markdownlint-cli2 \"*.md\" \"content/**/*.md\"",
|
"lint:markdown": "markdownlint-cli2 \"*.md\" \"content/**/*.md\"",
|
||||||
"lint:markdown-fix": "markdownlint-cli2-fix \"*.md\" \"content/**/*.md\"",
|
"lint:markdown-fix": "markdownlint-cli2-fix \"*.md\" \"content/**/*.md\"",
|
||||||
"mod:clean": "hugo mod clean",
|
"mod:clean": "hugo mod clean",
|
||||||
|
"mod:install": "hugo mod get ./... && npm run -s mod:vendor && npm run -s mod:tidy",
|
||||||
"mod:update": "hugo mod get -u ./... && npm run -s mod:vendor && npm run -s mod:tidy",
|
"mod:update": "hugo mod get -u ./... && npm run -s mod:vendor && npm run -s mod:tidy",
|
||||||
"mod:tidy": "hugo mod tidy",
|
"mod:tidy": "hugo mod tidy",
|
||||||
"mod:vendor": "rimraf _vendor && hugo mod vendor",
|
"mod:vendor": "rimraf _vendor && hugo mod vendor",
|
||||||
@@ -39,10 +40,11 @@
|
|||||||
"env": "hugo env",
|
"env": "hugo env",
|
||||||
"precheck": "npm version",
|
"precheck": "npm version",
|
||||||
"check": "hugo version",
|
"check": "hugo version",
|
||||||
"create:syntax": "npm run -s create:syntax-light & npm run -s create:syntax-dark",
|
"create:syntax": "npm run -s create:syntax-light & npm run -s create:syntax-dark && npm run -s update:syntax-dark",
|
||||||
"create:syntax-light": "hugo gen chromastyles --style=github > ./assets/scss/components/_syntax-light.scss",
|
"create:syntax-light": "hugo gen chromastyles --style=github > ./assets/scss/components/_syntax-light.scss",
|
||||||
"create:syntax-dark": "hugo gen chromastyles --style=github-dark > ./assets/scss/components/_syntax-dark.scss",
|
"create:syntax-dark": "hugo gen chromastyles --style=github-dark > ./assets/scss/components/_syntax-dark.scss",
|
||||||
"upgrade": "npx npm-check-updates -u"
|
"update:syntax-dark": "replace-in-files --string=\"#ffffcc\" --replacement=\"#b8b800\" ./assets/scss/components/_syntax-dark.scss",
|
||||||
|
"upgrade": "npx npm-check-updates -u && npm run -s mod:update"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
@@ -55,23 +57,23 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://gethinode.com",
|
"homepage": "https://gethinode.com",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@fortawesome/fontawesome-free": "^6.4.0",
|
|
||||||
"@fullhuman/postcss-purgecss": "^5.0.0",
|
"@fullhuman/postcss-purgecss": "^5.0.0",
|
||||||
"autoprefixer": "^10.4.14",
|
"autoprefixer": "^10.4.14",
|
||||||
"cssnano": "^6.0.0",
|
"cssnano": "^6.0.1",
|
||||||
"cssnano-preset-advanced": "^6.0.0",
|
"cssnano-preset-advanced": "^6.0.1",
|
||||||
"eslint": "^8.39.0",
|
"eslint": "^8.46.0",
|
||||||
"eslint-config-standard": "^17.0.0",
|
"eslint-config-standard": "^17.1.0",
|
||||||
"eslint-plugin-import": "^2.27.5",
|
"eslint-plugin-import": "^2.28.0",
|
||||||
"eslint-plugin-n": "^16.0.0",
|
"eslint-plugin-n": "^16.0.1",
|
||||||
"eslint-plugin-promise": "^6.1.1",
|
"eslint-plugin-promise": "^6.1.1",
|
||||||
"hugo-bin": "^0.111.0",
|
"hugo-bin": "^0.112.1",
|
||||||
"markdownlint-cli2": "^0.8.1",
|
"markdownlint-cli2": "^0.8.1",
|
||||||
"postcss-cli": "^10.1.0",
|
"postcss-cli": "^10.1.0",
|
||||||
"purgecss-whitelister": "^2.4.0",
|
"purgecss-whitelister": "^2.4.0",
|
||||||
"rimraf": "^5.0.0",
|
"replace-in-files-cli": "^2.2.0",
|
||||||
|
"rimraf": "^5.0.1",
|
||||||
"shx": "^0.3.4",
|
"shx": "^0.3.4",
|
||||||
"stylelint": "^15.6.0",
|
"stylelint": "^15.10.2",
|
||||||
"stylelint-config-standard-scss": "^10.0.0"
|
"stylelint-config-standard-scss": "^10.0.0"
|
||||||
},
|
},
|
||||||
"hugo-bin": {
|
"hugo-bin": {
|
||||||
|
Reference in New Issue
Block a user