mirror of
https://github.com/gethinode/hinode.git
synced 2025-10-07 10:04:22 +00:00
Compare commits
360 Commits
v0.27.0-al
...
v0.27.17
Author | SHA1 | Date | |
---|---|---|---|
![]() |
a73268fea6 | ||
![]() |
413082a23d | ||
![]() |
2b15ff26dc | ||
![]() |
42db5b3f9b | ||
![]() |
d3e58591be | ||
![]() |
5c9187a5ed | ||
![]() |
1db2652304 | ||
![]() |
003f9a329c | ||
![]() |
c7bed9de24 | ||
![]() |
1de5aa70da | ||
![]() |
eb51223fa8 | ||
![]() |
4b732c02f8 | ||
![]() |
3193ff6e0d | ||
![]() |
d66f8eef93 | ||
![]() |
9bb9bb580a | ||
![]() |
c29b43866a | ||
![]() |
e3d88bdf37 | ||
![]() |
a35db80260 | ||
![]() |
3d19b57d5e | ||
![]() |
3bd8f99678 | ||
![]() |
a01c726de4 | ||
![]() |
fe74653749 | ||
![]() |
c143634c4a | ||
![]() |
58e0946636 | ||
![]() |
d2dd3a32d0 | ||
![]() |
045dfd5a13 | ||
![]() |
ecab03d15c | ||
![]() |
6972f71077 | ||
![]() |
92c87629a0 | ||
![]() |
a0dd30d2c7 | ||
![]() |
50c6c80d8a | ||
![]() |
548ba82abe | ||
![]() |
31e47ad940 | ||
![]() |
f04f5719ec | ||
![]() |
8ab0d2fb1e | ||
![]() |
9f83f33afd | ||
![]() |
e9789a420c | ||
![]() |
8459665fcf | ||
![]() |
75083fe543 | ||
![]() |
d5d29bab37 | ||
![]() |
46d2e57e4b | ||
![]() |
8a0658e931 | ||
![]() |
9be5b22911 | ||
![]() |
71181905c3 | ||
![]() |
61a00fd205 | ||
![]() |
71c2e4f5c6 | ||
![]() |
14c05f62ad | ||
![]() |
712634ec57 | ||
![]() |
d8070914f9 | ||
![]() |
8006143d3f | ||
![]() |
b56516b77b | ||
![]() |
ac6a47e528 | ||
![]() |
d6f86a0a4c | ||
![]() |
d950555d75 | ||
![]() |
231425dbdf | ||
![]() |
2cccbc499a | ||
![]() |
92572a21bc | ||
![]() |
261c174739 | ||
![]() |
fbdfd10969 | ||
![]() |
2c2cd595c1 | ||
![]() |
2b6fc61628 | ||
![]() |
40096611cf | ||
![]() |
937b16ca60 | ||
![]() |
64d7ff5d93 | ||
![]() |
b7fb5bee75 | ||
![]() |
63d7d4de85 | ||
![]() |
035387d8c1 | ||
![]() |
f7c5769817 | ||
![]() |
6853a455cb | ||
![]() |
190f849b5a | ||
![]() |
1165ffffe0 | ||
![]() |
214812b750 | ||
![]() |
20f1a87d8b | ||
![]() |
66f904c7fb | ||
![]() |
cdf9d39242 | ||
![]() |
98c53ccd6d | ||
![]() |
5409aa7a63 | ||
![]() |
10a69d6bfd | ||
![]() |
705967641a | ||
![]() |
a5b49bdf70 | ||
![]() |
44d46f92c9 | ||
![]() |
78a2caf728 | ||
![]() |
7f5bebacab | ||
![]() |
b95ce558a6 | ||
![]() |
e75533a0ae | ||
![]() |
19a45b4399 | ||
![]() |
e08178cfce | ||
![]() |
b24c6bc21f | ||
![]() |
d1e06588a5 | ||
![]() |
13fb13ec10 | ||
![]() |
ccca047155 | ||
![]() |
7443319ad9 | ||
![]() |
db4ba8babe | ||
![]() |
c7c03ebc8c | ||
![]() |
4bd1578724 | ||
![]() |
ecd16fa3cc | ||
![]() |
3ef8a16e18 | ||
![]() |
3fc30b9941 | ||
![]() |
8fb9610c84 | ||
![]() |
dc88861a43 | ||
![]() |
871edd7aa4 | ||
![]() |
b172a5021a | ||
![]() |
9ddd1983d0 | ||
![]() |
2f00f07a2f | ||
![]() |
c043f26268 | ||
![]() |
99d689a323 | ||
![]() |
ec7275913b | ||
![]() |
255456447b | ||
![]() |
004940d9bc | ||
![]() |
6b39b028fb | ||
![]() |
9a83550378 | ||
![]() |
792443c4cf | ||
![]() |
3d52162925 | ||
![]() |
80b28f7557 | ||
![]() |
43eebdf53f | ||
![]() |
b5062fe687 | ||
![]() |
51aa15266b | ||
![]() |
19f638a129 | ||
![]() |
aa2e5ca6f4 | ||
![]() |
04eea0db71 | ||
![]() |
4645f4ee7c | ||
![]() |
bb6421c70b | ||
![]() |
622c6ee1c0 | ||
![]() |
f1befb05cc | ||
![]() |
e146e3a559 | ||
![]() |
068e773ab0 | ||
![]() |
3ae91a78a1 | ||
![]() |
6627446961 | ||
![]() |
d4fd6ece60 | ||
![]() |
a746fd147c | ||
![]() |
d0410af879 | ||
![]() |
314f1a0ca4 | ||
![]() |
066c5ce8eb | ||
![]() |
bba9629f54 | ||
![]() |
d2d59ec3ef | ||
![]() |
c080be2872 | ||
![]() |
3c17234b33 | ||
![]() |
16884abcba | ||
![]() |
2abbe4f6de | ||
![]() |
c6f9de0a64 | ||
![]() |
39f104fa5f | ||
![]() |
437ad0dbf7 | ||
![]() |
2eb354d941 | ||
![]() |
5a7f46bca4 | ||
![]() |
0bc37ff426 | ||
![]() |
0d24f85e13 | ||
![]() |
d067171ba2 | ||
![]() |
09e649d432 | ||
![]() |
87c7bd4238 | ||
![]() |
19734f6a1f | ||
![]() |
12a5ebad9f | ||
![]() |
1b964777a4 | ||
![]() |
f910d1bbbb | ||
![]() |
86461c9739 | ||
![]() |
a730255eb6 | ||
![]() |
e940cc9931 | ||
![]() |
3a70d25f2e | ||
![]() |
9e72e5fe73 | ||
![]() |
561bdcac28 | ||
![]() |
11cd2bb167 | ||
![]() |
45a71fc1d1 | ||
![]() |
3f5c10319b | ||
![]() |
e4331c8ce7 | ||
![]() |
6166615629 | ||
![]() |
27c15b4e36 | ||
![]() |
c99e8c83d1 | ||
![]() |
a0cbdd0cbb | ||
![]() |
1ed825d7ca | ||
![]() |
09099eba58 | ||
![]() |
58b2eebea5 | ||
![]() |
46a2a6c994 | ||
![]() |
0dcec12256 | ||
![]() |
50a188e807 | ||
![]() |
400f27dcc9 | ||
![]() |
90bcc744ff | ||
![]() |
cf0fae6dc1 | ||
![]() |
1b39d23ddf | ||
![]() |
c94249408c | ||
![]() |
f4f207fa25 | ||
![]() |
307067629e | ||
![]() |
f9174e4505 | ||
![]() |
320d44c78d | ||
![]() |
091526a17b | ||
![]() |
9ec61d645d | ||
![]() |
0630043210 | ||
![]() |
2933d1d3bb | ||
![]() |
aa5118cdf6 | ||
![]() |
ec1c87070b | ||
![]() |
e806dc07a4 | ||
![]() |
9e7478f4c4 | ||
![]() |
686dd1c946 | ||
![]() |
548a2fa835 | ||
![]() |
1338df7b8a | ||
![]() |
150e438c59 | ||
![]() |
285f262a01 | ||
![]() |
7989dd17d4 | ||
![]() |
5f4070b481 | ||
![]() |
00160137e8 | ||
![]() |
51510ae047 | ||
![]() |
4fc95db0e9 | ||
![]() |
a1f899c1de | ||
![]() |
e358e737be | ||
![]() |
0e35d26f20 | ||
![]() |
ede04405d1 | ||
![]() |
30aa2df2d2 | ||
![]() |
47d582f855 | ||
![]() |
fa1fcc3dd0 | ||
![]() |
04bc95720b | ||
![]() |
5c539ec003 | ||
![]() |
b19201e561 | ||
![]() |
7e21c93e22 | ||
![]() |
c81efe61d0 | ||
![]() |
6fe8e12509 | ||
![]() |
44b243489b | ||
![]() |
548dca2bb1 | ||
![]() |
b3e47b85f3 | ||
![]() |
087d3666b8 | ||
![]() |
77f4354499 | ||
![]() |
362bf368ce | ||
![]() |
fc17256fd2 | ||
![]() |
887aff5c5b | ||
![]() |
6ec26f1216 | ||
![]() |
357c74e3e0 | ||
![]() |
4b419810ea | ||
![]() |
0a313172bd | ||
![]() |
93eec0ff5a | ||
![]() |
f9fc8d9a6a | ||
![]() |
c537b9cfe4 | ||
![]() |
c37fe75f0d | ||
![]() |
4034289a7f | ||
![]() |
9b5c572ab9 | ||
![]() |
10c6344493 | ||
![]() |
fc386fcad9 | ||
![]() |
a680a61825 | ||
![]() |
a075ca5f7b | ||
![]() |
a816d2be25 | ||
![]() |
52ff0fb71e | ||
![]() |
95fd919a6f | ||
![]() |
85778dd374 | ||
![]() |
3b65b2c87f | ||
![]() |
ee3a0ee8c4 | ||
![]() |
3b721690f1 | ||
![]() |
96b2ed2f4c | ||
![]() |
d6d39ad946 | ||
![]() |
f8db72ebad | ||
![]() |
9a8ee943a9 | ||
![]() |
520c5ba43b | ||
![]() |
4205c07993 | ||
![]() |
7cd1dc3c27 | ||
![]() |
d96ef8af35 | ||
![]() |
2defd83f0f | ||
![]() |
ba10e2115a | ||
![]() |
1d4a5d960f | ||
![]() |
ec492c005f | ||
![]() |
624d57c374 | ||
![]() |
e7dda56408 | ||
![]() |
c3e135de9e | ||
![]() |
b84fc502b5 | ||
![]() |
b18b662cef | ||
![]() |
3070e4abac | ||
![]() |
052033fe42 | ||
![]() |
c37bb67c09 | ||
![]() |
0728a148b8 | ||
![]() |
6bf687dbf8 | ||
![]() |
e656ec9f33 | ||
![]() |
d522fb07d5 | ||
![]() |
39d98b2b6c | ||
![]() |
6dfab4aa5f | ||
![]() |
c5bdae6466 | ||
![]() |
f79267a39e | ||
![]() |
ea05749f0e | ||
![]() |
2dd027028c | ||
![]() |
3a4b1c8670 | ||
![]() |
e2b92c9519 | ||
![]() |
1defbd32f9 | ||
![]() |
edd303bab1 | ||
![]() |
43041f42fc | ||
![]() |
250bfc33e6 | ||
![]() |
b7d4af7c0a | ||
![]() |
631d952923 | ||
![]() |
744dd361f0 | ||
![]() |
719b5893d7 | ||
![]() |
228f6f29dc | ||
![]() |
3ea24f7e7f | ||
![]() |
418069773f | ||
![]() |
0791000f10 | ||
![]() |
cee94a9664 | ||
![]() |
d42a6c4150 | ||
![]() |
73160b0cfe | ||
![]() |
2d5225e205 | ||
![]() |
d7e9f05588 | ||
![]() |
f936bdd117 | ||
![]() |
fc05a338c7 | ||
![]() |
367e2f78d3 | ||
![]() |
6af1df3862 | ||
![]() |
a1c124cb38 | ||
![]() |
07b1a0d0ce | ||
![]() |
a3f215c211 | ||
![]() |
c31fdae5e4 | ||
![]() |
c208bc8946 | ||
![]() |
6c285b203d | ||
![]() |
a867458f4b | ||
![]() |
973fbf6637 | ||
![]() |
367f209c73 | ||
![]() |
06f384a206 | ||
![]() |
2ce4001fa8 | ||
![]() |
fe2e3ba5f4 | ||
![]() |
0830e0da77 | ||
![]() |
195f0b192f | ||
![]() |
f98d2000e3 | ||
![]() |
54f49944cc | ||
![]() |
7525ecddc2 | ||
![]() |
09ab64c361 | ||
![]() |
2b3f87b885 | ||
![]() |
213bb31133 | ||
![]() |
b0130d9f7d | ||
![]() |
07a3be644c | ||
![]() |
262bc47260 | ||
![]() |
51553a05f0 | ||
![]() |
bd06ee211b | ||
![]() |
cc8e889825 | ||
![]() |
a6144122b2 | ||
![]() |
853e0c818f | ||
![]() |
1c5fb55d89 | ||
![]() |
d48fb1a300 | ||
![]() |
f2aa9d2661 | ||
![]() |
d721e1cfc2 | ||
![]() |
7f7bf2152c | ||
![]() |
a9543de1e7 | ||
![]() |
39e4073837 | ||
![]() |
d2782349d5 | ||
![]() |
fe97815460 | ||
![]() |
7bcaa69d5b | ||
![]() |
30ae3f6b3c | ||
![]() |
6540e11fa9 | ||
![]() |
14f2145239 | ||
![]() |
856a0aed08 | ||
![]() |
5c6b91f1ce | ||
![]() |
152b8ca060 | ||
![]() |
0f8870fed0 | ||
![]() |
742ae6784b | ||
![]() |
ce4c8c0a7c | ||
![]() |
40de449fed | ||
![]() |
4c27864248 | ||
![]() |
3efb2b7451 | ||
![]() |
721e222849 | ||
![]() |
77b9d62d76 | ||
![]() |
efe3c947c2 | ||
![]() |
beee2e40e0 | ||
![]() |
895d606175 | ||
![]() |
9a17df96f3 | ||
![]() |
d2e1a1678a | ||
![]() |
d8451e2699 | ||
![]() |
f98ab74905 | ||
![]() |
6e453ea2ab | ||
![]() |
d6ca890c80 | ||
![]() |
46aecfe65a | ||
![]() |
496c07ff7e | ||
![]() |
3a63f4fad7 | ||
![]() |
bbf99507d6 |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,4 +1,5 @@
|
||||
_vendor/
|
||||
prebuild/
|
||||
public/
|
||||
resources/
|
||||
node_modules/
|
||||
|
@@ -123,7 +123,7 @@ Hinode is inspired by the following themes:
|
||||
## Donate
|
||||
|
||||
<!-- markdownlint-disable MD033 -->
|
||||
<a href="https://www.buymeacoffee.com/markdumay" target="_blank" rel="noopener noreferrer"><img src="https://cdn.buymeacoffee.com/buttons/lato-orange.png" alt="Buy Me A Coffee" style="height: 51px !important;width: 217px !important;"></a>
|
||||
<a href="https://www.buymeacoffee.com/markdumay" target="_blank" rel="noopener noreferrer nofollow"><img src="https://cdn.buymeacoffee.com/buttons/lato-orange.png" alt="Buy Me A Coffee" style="height: 51px !important;width: 217px !important;"></a>
|
||||
<!-- markdownlint-enable MD033 -->
|
||||
|
||||
## License
|
||||
|
@@ -3,13 +3,13 @@ const alert = document.getElementById('page-alert')
|
||||
const closeBtn = document.getElementById('page-alert-btn-close')
|
||||
if (alert !== null && closeBtn !== null) {
|
||||
const version = alert.getAttribute('data-page-alert-version') || 'unknown'
|
||||
const hideAlert = sessionStorage.getItem(`page-alert-${version}`) !== null
|
||||
const hideAlert = getSessionStorage(`page-alert-${version}`, null, 'functional') !== null
|
||||
if (hideAlert) {
|
||||
alert.classList.add('d-none')
|
||||
}
|
||||
|
||||
closeBtn.addEventListener('click', () => {
|
||||
sessionStorage.setItem(`page-alert-${version}`, 'seen')
|
||||
setSessionStorage(`page-alert-${version}`, 'seen', 'functional')
|
||||
alert.classList.add('d-none')
|
||||
})
|
||||
}
|
||||
|
@@ -1,21 +0,0 @@
|
||||
// Adapted from https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/google_analytics.html
|
||||
|
||||
{{ if and (not hugo.IsServer) (not site.Config.Privacy.GoogleAnalytics.Disable) }}
|
||||
{{ with site.Config.Services.GoogleAnalytics.ID }}
|
||||
{{ if strings.HasPrefix (lower .) "ua-" }}
|
||||
{{ warnf "Google Analytics 4 (GA4) replaced Google Universal Analytics (UA) effective 1 July 2023. See https://support.google.com/analytics/answer/11583528. Create a GA4 property and data stream, then replace the Google Analytics ID in your site configuration with the new value." }}
|
||||
{{ else }}
|
||||
var doNotTrack = false;
|
||||
if ({{ site.Config.Privacy.GoogleAnalytics.RespectDoNotTrack }}) {
|
||||
var dnt = (navigator.doNotTrack || window.doNotTrack || navigator.msDoNotTrack);
|
||||
var doNotTrack = (dnt == "1" || dnt == "yes");
|
||||
}
|
||||
if (!doNotTrack) {
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', '{{ . }}');
|
||||
}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
33
assets/js/critical/_cookie.js
Normal file
33
assets/js/critical/_cookie.js
Normal file
@@ -0,0 +1,33 @@
|
||||
/* eslint-disable no-undef, no-unused-vars */
|
||||
function hasConsent (category) {
|
||||
// TODO: placeholder function
|
||||
return true
|
||||
}
|
||||
|
||||
function getLocalStorage (key, def, category) {
|
||||
if (hasConsent(category)) {
|
||||
return localStorage.getItem(key)
|
||||
} else {
|
||||
return def
|
||||
}
|
||||
}
|
||||
|
||||
function setLocalStorage (key, val, category) {
|
||||
if (hasConsent(category)) {
|
||||
localStorage.setItem(key, val)
|
||||
}
|
||||
}
|
||||
|
||||
function getSessionStorage (key, def, category) {
|
||||
if (hasConsent(category)) {
|
||||
return sessionStorage.getItem(key)
|
||||
} else {
|
||||
return def
|
||||
}
|
||||
}
|
||||
|
||||
function setSessionStorage (key, val, category) {
|
||||
if (hasConsent(category)) {
|
||||
sessionStorage.setItem(key, val)
|
||||
}
|
||||
}
|
@@ -11,8 +11,8 @@
|
||||
|
||||
const supportedThemes = ['auto', 'dark', 'light'];
|
||||
|
||||
// retrieves the currently stored theme from local storage (cookie)
|
||||
const storedTheme = localStorage.getItem('theme')
|
||||
// retrieves the currently stored theme from local storage
|
||||
const storedTheme = getLocalStorage('theme', 'auto', 'functional')
|
||||
|
||||
// retrieves the theme preferred by the client, defaults to light
|
||||
function getPreferredTheme() {
|
||||
@@ -25,7 +25,7 @@
|
||||
return storedTheme
|
||||
} else {
|
||||
const preference = getPreferredTheme()
|
||||
localStorage.setItem('theme', preference)
|
||||
setLocalStorage('theme', preference, 'functional')
|
||||
return preference
|
||||
}
|
||||
}
|
||||
@@ -35,7 +35,7 @@
|
||||
if (!supportedThemes.includes(theme)) {
|
||||
theme = 'auto'
|
||||
}
|
||||
localStorage.setItem('theme', theme)
|
||||
setLocalStorage('theme', theme, 'functional')
|
||||
|
||||
if (theme === 'auto') {
|
||||
document.documentElement.setAttribute('data-bs-theme', (getPreferredTheme()))
|
||||
|
@@ -1,17 +1,20 @@
|
||||
/* eslint-disable */
|
||||
{{- if site.Params.main.enableLanguageSelectionStorage -}}
|
||||
{{- $folder := (urls.Parse site.BaseURL).Path | default "/" -}}
|
||||
|
||||
(() => {
|
||||
'use strict'
|
||||
|
||||
// Function to get the selected language from localStorage
|
||||
const folder = '{{ $folder }}'
|
||||
|
||||
// Function to get the selected language from local storage
|
||||
function getLanguage () {
|
||||
return localStorage.getItem('selectedLanguage')
|
||||
return getLocalStorage('selectedLanguage', document.documentElement.lang, 'functional')
|
||||
}
|
||||
|
||||
// Function to set the selected language in localStorage
|
||||
// Function to set the selected language in local storage
|
||||
function setLanguage (language) {
|
||||
localStorage.setItem('selectedLanguage', language)
|
||||
setLocalStorage('selectedLanguage', language, 'functional')
|
||||
}
|
||||
|
||||
// Function to apply the selected language to the website
|
||||
@@ -22,7 +25,7 @@
|
||||
window.location.href = href
|
||||
}
|
||||
} else {
|
||||
window.location.href = '/' + language + '/'
|
||||
window.location.href = folder + language + '/'
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -32,7 +35,15 @@
|
||||
const storedLanguage = getLanguage()
|
||||
const languageItems = document.querySelectorAll('#language-selector .dropdown-item')
|
||||
|
||||
if (languageItems.length > 0) {
|
||||
const link = document.querySelector("link[rel='canonical']")
|
||||
let alias = ''
|
||||
if (link !== null) {
|
||||
alias = link.getAttribute('href')
|
||||
}
|
||||
|
||||
if (alias !== '') {
|
||||
window.location.href = alias
|
||||
} else if (languageItems.length > 0) {
|
||||
// Redirect if the stored language differs from the active language
|
||||
if ((storedLanguage) && (document.documentElement.lang !== storedLanguage)) {
|
||||
languageItems.forEach(item => {
|
||||
@@ -57,7 +68,7 @@
|
||||
// Redirect to the localized homepage
|
||||
const defaultLang = '{{ site.LanguageCode | default site.Language.Lang }}'
|
||||
let language = storedLanguage ? storedLanguage : defaultLang
|
||||
window.location.href = '/' + language + '/'
|
||||
window.location.href = folder + language + '/'
|
||||
}
|
||||
})
|
||||
})()
|
||||
|
@@ -5,15 +5,22 @@ const modeSelectors = document.querySelectorAll('.switch-mode-collapsed')
|
||||
const colorsBG = ['body', 'secondary', 'tertiary']
|
||||
|
||||
function updateNavbar () {
|
||||
let storedTheme
|
||||
if (typeof getLocalStorage === "function") {
|
||||
storedTheme = getLocalStorage('theme', null, 'functional')
|
||||
}
|
||||
|
||||
if (window.scrollY > 75) {
|
||||
navbar.classList.add('nav-active')
|
||||
const storedTheme = localStorage.getItem('theme')
|
||||
if (storedTheme) {
|
||||
navbar.setAttribute('data-bs-theme', storedTheme)
|
||||
}
|
||||
} else {
|
||||
navbar.classList.remove('nav-active')
|
||||
const defaultTheme = navbar.getAttribute('data-bs-overlay')
|
||||
|
||||
if (defaultTheme) {
|
||||
const targetTheme = defaultTheme ? defaultTheme : storedTheme
|
||||
if (targetTheme) {
|
||||
navbar.setAttribute('data-bs-theme', defaultTheme)
|
||||
}
|
||||
}
|
||||
|
@@ -14,23 +14,22 @@ function webShareAPI (title, description, link) {
|
||||
.catch((error) => console.log('Error sharing', error))
|
||||
}
|
||||
|
||||
const shareBtn = document.getElementById('btn-webshare')
|
||||
|
||||
if (shareBtn !== null) {
|
||||
const shareButtons = document.querySelectorAll('[data-sharing-url]')
|
||||
shareButtons.forEach(btn => {
|
||||
if (navigator.share) {
|
||||
const title = shareBtn.getAttribute('data-sharing-title')
|
||||
const description = shareBtn.getAttribute('data-sharing-description')
|
||||
const url = shareBtn.getAttribute('data-sharing-url')
|
||||
const title = btn.getAttribute('data-sharing-title')
|
||||
const description = btn.getAttribute('data-sharing-description')
|
||||
const url = btn.getAttribute('data-sharing-url')
|
||||
|
||||
// show button if it supports webShareAPI
|
||||
shareBtn.style.display = 'block'
|
||||
shareBtn.addEventListener('click', () =>
|
||||
btn.style.display = 'block'
|
||||
btn.addEventListener('click', () =>
|
||||
webShareAPI(title, description, url)
|
||||
)
|
||||
} else {
|
||||
// hide button if host does not support Web Share API
|
||||
shareBtn.style.display = 'none'
|
||||
btn.style.display = 'none'
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
{{- end -}}
|
@@ -25,6 +25,8 @@ strong {
|
||||
$black: #000 !default;
|
||||
$btn-toggle-color: $black !default;
|
||||
|
||||
$card-color: var(--bs-body-color);
|
||||
|
||||
$carousel-dark-indicator-active-bg: #fff !default;
|
||||
$carousel-dark-caption-color: #fff !default;
|
||||
$carousel-dark-control-icon-filter: invert(0) grayscale(100) !default;
|
||||
|
@@ -1,4 +1,8 @@
|
||||
.nav-tabs > .nav-link.active {
|
||||
.nav-tabs .nav-tabs {
|
||||
border: none;
|
||||
}
|
||||
|
||||
.nav-tabs .nav-link.active {
|
||||
border-bottom-color: var(--bs-body-bg) !important;
|
||||
border-bottom-style: solid !important;
|
||||
z-index: 1;
|
||||
@@ -12,13 +16,13 @@
|
||||
column-gap: var(--#{$prefix}nav-callout-gap) !important;
|
||||
}
|
||||
|
||||
.nav-callout > .tab-content {
|
||||
.nav-callout + .tab-content {
|
||||
background-color: var(--#{$prefix}nav-callout-bg);
|
||||
padding: 2 * $spacer;
|
||||
margin-top: 0 !important;
|
||||
}
|
||||
|
||||
.nav-callout > .nav-link {
|
||||
.nav-callout .nav-link {
|
||||
display: flex;
|
||||
text-align: start;
|
||||
vertical-align: text-top;
|
||||
@@ -27,7 +31,7 @@
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.nav-callout > .nav-link.active {
|
||||
.nav-callout .nav-link.active {
|
||||
background-image: linear-gradient(to top right, var(--#{$prefix}nav-callout-bg) 50%, transparent 0);
|
||||
background-size: 50% (3 * $spacer);
|
||||
background-repeat: no-repeat;
|
||||
@@ -53,7 +57,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
.nav-callout > .accordion-item {
|
||||
.nav-callout .accordion-item {
|
||||
margin-top: 2 * $spacer;
|
||||
margin-bottom: 2 * $spacer;
|
||||
border: none;
|
||||
|
@@ -26,20 +26,48 @@ defaultContentLanguage = "en"
|
||||
defaultContentLanguageInSubdir = false
|
||||
# toml-docs-end language
|
||||
|
||||
# toml-docs-start headers
|
||||
[outputFormats]
|
||||
[outputFormats.server]
|
||||
mediaType = "application/toml"
|
||||
baseName = "server"
|
||||
isPlainText = true
|
||||
notAlternative = true
|
||||
permalinkable = true
|
||||
root = true
|
||||
[outputFormats.netlify]
|
||||
mediaType = "application/toml"
|
||||
baseName = "netlify"
|
||||
isPlainText = true
|
||||
notAlternative = true
|
||||
permalinkable = true
|
||||
root = true
|
||||
# toml-docs-end headers
|
||||
|
||||
[outputFormats.XML]
|
||||
isPlainText = false
|
||||
mediaType = "application/xml"
|
||||
isHtml = false
|
||||
noUgly = true
|
||||
permalinkable = false
|
||||
name = "xml"
|
||||
|
||||
# toml-docs-start redirect
|
||||
[outputFormats.REDIR]
|
||||
mediaType = "text/netlify"
|
||||
baseName = "_redirects"
|
||||
isPlainText = true
|
||||
notAlternative = true
|
||||
[outputFormats.REDIR]
|
||||
mediaType = "text/netlify"
|
||||
baseName = "_redirects"
|
||||
isPlainText = true
|
||||
notAlternative = true
|
||||
|
||||
[mediaTypes."text/netlify"]
|
||||
delimiter = ""
|
||||
|
||||
[outputs]
|
||||
home = ["HTML", "RSS", "REDIR"]
|
||||
# toml-docs-end redirect
|
||||
|
||||
# toml-docs-start outputs
|
||||
[outputs]
|
||||
home = ["HTML", "RSS", "REDIR", "netlify", "server"]
|
||||
# toml-docs-end outputs
|
||||
|
||||
# toml-docs-start build
|
||||
[build]
|
||||
writeStats = true
|
||||
@@ -77,15 +105,6 @@ home = ["HTML", "RSS", "REDIR"]
|
||||
[services.googleAnalytics]
|
||||
# ID = "G-xxxxxxxxxx"
|
||||
|
||||
[outputFormats]
|
||||
[outputFormats.XML]
|
||||
isPlainText = false
|
||||
mediaType = "application/xml"
|
||||
isHtml = false
|
||||
noUgly = true
|
||||
permalinkable = false
|
||||
name = "xml"
|
||||
|
||||
[minify]
|
||||
[minify.tdewolff.js]
|
||||
keepVarNames = true
|
||||
@@ -126,10 +145,14 @@ home = ["HTML", "RSS", "REDIR"]
|
||||
# toml-docs-start modules
|
||||
[[module.imports]]
|
||||
path = "github.com/gethinode/mod-bootstrap"
|
||||
[[module.imports]]
|
||||
path = "github.com/gethinode/mod-csp"
|
||||
[[module.imports]]
|
||||
path = "github.com/gethinode/mod-flexsearch/v2"
|
||||
[[module.imports]]
|
||||
path = "github.com/gethinode/mod-fontawesome"
|
||||
[[module.imports]]
|
||||
path = "github.com/gethinode/mod-google-analytics"
|
||||
[[module.imports]]
|
||||
path = "github.com/gethinode/mod-katex"
|
||||
[[module.imports]]
|
||||
@@ -141,3 +164,11 @@ home = ["HTML", "RSS", "REDIR"]
|
||||
[[module.imports]]
|
||||
path = "github.com/gethinode/mod-utils/v2"
|
||||
# toml-docs-end modules
|
||||
|
||||
# toml-docs-start segments
|
||||
[segments]
|
||||
[segments.headers]
|
||||
[[segments.headers.includes]]
|
||||
kind = '{home}'
|
||||
output = '{netlify,server}'
|
||||
# toml-docs-end segments
|
||||
|
@@ -11,5 +11,5 @@
|
||||
title = "Follow me"
|
||||
caption = "I work on everything coding and tweet developer memes"
|
||||
[en.params.footer]
|
||||
# license = "Licensed under Creative Commons (<a href='https://creativecommons.org/licenses/by-nc-sa/4.0/' class='link-secondary' target='_blank' rel='noopener noreferrer'>CC BY-NC-SA 4.0</a>)."
|
||||
# license = "Licensed under Creative Commons (<a href='https://creativecommons.org/licenses/by-nc-sa/4.0/' class='link-secondary' target='_blank' rel='noopener noreferrer nofollow'>CC BY-NC-SA 4.0</a>)."
|
||||
# toml-docs-end lang-param
|
||||
|
@@ -10,6 +10,8 @@
|
||||
footerBelowFold = false
|
||||
loading = "lazy"
|
||||
breakpoint = "md"
|
||||
[main.internalLinks]
|
||||
validate = true
|
||||
[main.externalLinks]
|
||||
cue = false
|
||||
tab = false
|
||||
@@ -204,3 +206,38 @@
|
||||
|
||||
[links]
|
||||
hinode = "https://gethinode.com"
|
||||
|
||||
# toml-docs-start headers
|
||||
[headers]
|
||||
[headers.netlify]
|
||||
source = "netlify.toml"
|
||||
# toml-docs-end headers
|
||||
|
||||
# toml-docs-start csp
|
||||
[modules.hinode.csp]
|
||||
style-src = ["www.youtube.com"]
|
||||
font-src = ["fonts.gstatic.com"]
|
||||
frame-src = [
|
||||
"player.cloudinary.com",
|
||||
"www.youtube-nocookie.com",
|
||||
"www.youtube.com"
|
||||
]
|
||||
img-src = [
|
||||
"data:",
|
||||
"*.imgix.net",
|
||||
"*.imagekit.io",
|
||||
"*.cloudinary.com",
|
||||
"i.ytimg.com"
|
||||
]
|
||||
# toml-docs-end csp
|
||||
|
||||
[modules.vimeo]
|
||||
local = true
|
||||
integration = "optional"
|
||||
state = "async"
|
||||
url = "https://player.vimeo.com/api/player.js"
|
||||
|
||||
[modules.vimeo.csp]
|
||||
frame-src = ["player.vimeo.com"]
|
||||
img-src = ["i.vimeocdn.com"]
|
||||
script-src = ["player.vimeo.com"]
|
||||
|
@@ -1,41 +1,29 @@
|
||||
# toml-docs-start server-config
|
||||
# Auto-generated file - do not modify
|
||||
|
||||
[[headers]]
|
||||
for = '/**'
|
||||
[headers.values]
|
||||
Strict-Transport-Security = "max-age=31536000; includeSubDomains; preload"
|
||||
X-Content-Type-Options = "nosniff"
|
||||
X-XSS-Protection = "1; mode=block"
|
||||
Content-Security-Policy = """\
|
||||
default-src 'self'; \
|
||||
script-src 'self' https://*.google-analytics.com https://*.googletagmanager.com; \
|
||||
style-src 'self' https://fonts.googleapis.com https://www.youtube.com; \
|
||||
object-src 'none'; \
|
||||
for = '/**'
|
||||
|
||||
[headers.values]
|
||||
Access-Control-Allow-Origin = '*'
|
||||
Content-Security-Policy = """
|
||||
base-uri 'self'; \
|
||||
connect-src 'self'
|
||||
https://*.google-analytics.com https://*.analytics.google.com https://*.googletagmanager.com; \
|
||||
font-src 'self' https://fonts.gstatic.com; \
|
||||
frame-src 'self' https://player.cloudinary.com https://player.vimeo.com https://www.youtube-nocookie.com https://www.youtube.com; \
|
||||
img-src 'self' data: https://*.imgix.net https://*.imagekit.io https://*.cloudinary.com https://i.vimeocdn.com https://i.ytimg.com https://*.google-analytics.com https://*.googletagmanager.com https://tile.openstreetmap.org; \
|
||||
connect-src 'self' *.google-analytics.com *.analytics.google.com *.googletagmanager.com; \
|
||||
default-src 'none'; \
|
||||
font-src 'self' fonts.gstatic.com; \
|
||||
form-action 'self'; \
|
||||
frame-src player.cloudinary.com www.youtube-nocookie.com www.youtube.com player.vimeo.com; \
|
||||
img-src 'self' *.google-analytics.com *.googletagmanager.com data: *.imgix.net *.imagekit.io *.cloudinary.com i.ytimg.com tile.openstreetmap.org i.vimeocdn.com; \
|
||||
manifest-src 'self'; \
|
||||
media-src 'self' \
|
||||
media-src 'self'; \
|
||||
object-src 'none'; \
|
||||
script-src 'self' *.google-analytics.com *.googletagmanager.com player.vimeo.com; \
|
||||
style-src 'self' www.youtube.com; \
|
||||
"""
|
||||
X-Frame-Options = "SAMEORIGIN"
|
||||
Referrer-Policy = "strict-origin"
|
||||
Permissions-Policy = """\
|
||||
geolocation=(), \
|
||||
midi=(), \
|
||||
sync-xhr=(), \
|
||||
microphone=(), \
|
||||
camera=(), \
|
||||
magnetometer=(), \
|
||||
gyroscope=(), \
|
||||
payment=() \
|
||||
"""
|
||||
cache-control = """\
|
||||
max-age=0, \
|
||||
no-cache, \
|
||||
no-store, \
|
||||
must-revalidate \
|
||||
"""
|
||||
Access-Control-Allow-Origin = "*"
|
||||
# toml-docs-end server-config
|
||||
Permissions-Policy = 'geolocation=(), midi=(), sync-xhr=(), microphone=(), camera=(), magnetometer=(), gyroscope=(), fullscreen=(), payment=() '
|
||||
Referrer-Policy = 'strict-origin'
|
||||
Strict-Transport-Security = 'max-age=31536000; includeSubDomains; preload'
|
||||
X-Content-Type-Options = 'nosniff'
|
||||
X-Frame-Options = 'SAMEORIGIN'
|
||||
X-XSS-Protection = '1; mode=block'
|
||||
cache-control = 'max-age=0, no-cache, no-store, must-revalidate '
|
||||
|
||||
|
@@ -10,7 +10,7 @@ const purgecss = require('@fullhuman/postcss-purgecss')({
|
||||
return [...(els.tags || []), ...(els.classes || []), ...(els.ids || [])]
|
||||
},
|
||||
dynamicAttributes: ['data-bs-theme'],
|
||||
safelist: [
|
||||
safelist: ['was-validated',
|
||||
...whitelister([
|
||||
'./assets/scss/components/_clipboard.scss',
|
||||
'./assets/scss/components/_command.scss',
|
||||
@@ -24,6 +24,7 @@ const purgecss = require('@fullhuman/postcss-purgecss')({
|
||||
'./assets/scss/components/_video.scss',
|
||||
'./assets/scss/theme/fonts.scss',
|
||||
'./assets/scss/theme/theme.scss',
|
||||
'./_vendor/github.com/gethinode/mod-cookieyes/v2/assets/scss/cookieyes.scss',
|
||||
'./_vendor/github.com/gethinode/mod-flexsearch/v2/assets/scss/modules/flexsearch/flexsearch.scss',
|
||||
'./_vendor/github.com/gethinode/mod-katex/dist/katex.scss',
|
||||
'./_vendor/github.com/gethinode/mod-leaflet/dist/leaflet.scss',
|
||||
|
35
data/netlify.toml
Normal file
35
data/netlify.toml
Normal file
@@ -0,0 +1,35 @@
|
||||
# toml-docs-start netlify
|
||||
[build]
|
||||
publish = "exampleSite/public"
|
||||
command = "npm run build:example"
|
||||
|
||||
[build.environment]
|
||||
DART_SASS_VERSION = "1.78.0"
|
||||
HUGO_VERSION = "0.134.1"
|
||||
HUGO_ENV = "production"
|
||||
HUGO_ENABLEGITINFO = "true"
|
||||
NODE_VERSION = "20.17.0"
|
||||
NPM_VERSION = "10.8.2"
|
||||
# toml-docs-end netlify
|
||||
|
||||
[context.deploy-preview]
|
||||
command = "npm run build:example -- -b $DEPLOY_PRIME_URL"
|
||||
|
||||
[context.branch-deploy]
|
||||
command = "npm run build:example -- -b $DEPLOY_PRIME_URL"
|
||||
|
||||
[dev]
|
||||
framework = "#custom"
|
||||
command = "npm run start:example"
|
||||
targetPort = 1313
|
||||
port = 8888
|
||||
publish = "public"
|
||||
autoLaunch = false
|
||||
|
||||
# toml-docs-start plugins
|
||||
[[plugins]]
|
||||
package = "@gethinode/netlify-plugin-dartsass"
|
||||
|
||||
[[plugins]]
|
||||
package = "netlify-plugin-hugo-cache-resources"
|
||||
# toml-docs-end plugins
|
41
data/server.toml
Normal file
41
data/server.toml
Normal file
@@ -0,0 +1,41 @@
|
||||
# toml-docs-start server-config
|
||||
[[headers]]
|
||||
for = "/**"
|
||||
[headers.values]
|
||||
Strict-Transport-Security = "max-age=31536000; includeSubDomains; preload"
|
||||
X-Content-Type-Options = "nosniff"
|
||||
X-XSS-Protection = "1; mode=block"
|
||||
X-Frame-Options = "SAMEORIGIN"
|
||||
Referrer-Policy = "strict-origin"
|
||||
Permissions-Policy = """\
|
||||
geolocation=(), \
|
||||
midi=(), \
|
||||
sync-xhr=(), \
|
||||
microphone=(), \
|
||||
camera=(), \
|
||||
magnetometer=(), \
|
||||
gyroscope=(), \
|
||||
fullscreen=(), \
|
||||
payment=() \
|
||||
"""
|
||||
cache-control = """\
|
||||
max-age=0, \
|
||||
no-cache, \
|
||||
no-store, \
|
||||
must-revalidate \
|
||||
"""
|
||||
Access-Control-Allow-Origin = "*"
|
||||
Content-Security-Policy = """\
|
||||
default-src 'none'; \
|
||||
script-src 'self'; \
|
||||
font-src 'self'; \
|
||||
connect-src 'self'; \
|
||||
img-src 'self'; \
|
||||
style-src 'self'; \
|
||||
base-uri 'self'; \
|
||||
object-src 'none'; \
|
||||
form-action 'self'; \
|
||||
manifest-src 'self'; \
|
||||
media-src 'self' \
|
||||
"""
|
||||
# toml-docs-end server-config
|
@@ -38,3 +38,8 @@ arguments:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Class attribute of the tab control that wraps the file element.
|
||||
options:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Hugo highlighting options.
|
||||
release: v0.27.6
|
||||
|
4
data/structures/ins.yml
Normal file
4
data/structures/ins.yml
Normal file
@@ -0,0 +1,4 @@
|
||||
comment: Underlines text.
|
||||
body:
|
||||
optional: false
|
||||
comment: Text to be underlined.
|
46
data/structures/script.yml
Normal file
46
data/structures/script.yml
Normal file
@@ -0,0 +1,46 @@
|
||||
comment: >-
|
||||
Includes a reference to a local or external JavaScript file. Hinode uses the
|
||||
template defined in `layouts/partials/templates/script.html` to generate the
|
||||
link to a (bundled) JavaScript file. It includes context such as the state,
|
||||
category, and integrity. For example, you can adapt this template to implement
|
||||
cookie consent management.
|
||||
arguments:
|
||||
link:
|
||||
type: string
|
||||
optional: false
|
||||
comment: >-
|
||||
Location of the script source, either an URL for an external script or a
|
||||
(relative) path for a local script.
|
||||
state:
|
||||
type: select
|
||||
optional: true
|
||||
comment: >-
|
||||
Defines the loading behavior of the script bundle. By default, scripts are
|
||||
loaded immediately. Use `async` to process the script in the background.
|
||||
Use `defer` to load the script in relative order when the DOM is fully
|
||||
built.
|
||||
options:
|
||||
values:
|
||||
- async
|
||||
- defer
|
||||
- immediate
|
||||
category:
|
||||
type: select
|
||||
optional: true
|
||||
default: other
|
||||
comment: >-
|
||||
Assigns the script to a category that can be used for cookie consent
|
||||
management.
|
||||
options:
|
||||
values:
|
||||
- necessary
|
||||
- functional
|
||||
- analytics
|
||||
- performance
|
||||
- advertisement
|
||||
- other
|
||||
integrity:
|
||||
type: string
|
||||
optional: true
|
||||
comment: >-
|
||||
Cryptographic hash of the script to enable Subresource Integrity (SRI).
|
@@ -8,62 +8,17 @@ arguments:
|
||||
- '*hugolib.pageForShortcode'
|
||||
optional: false
|
||||
comment: Context of the current page.
|
||||
core:
|
||||
type: bool
|
||||
default: false
|
||||
optional: true
|
||||
comment: >-
|
||||
Trigger to include all core files in the script bundle. Core bundles are
|
||||
loaded asynchronously in each page of the site.
|
||||
filename:
|
||||
type: string
|
||||
default: js/main.bundle.js
|
||||
optional: true
|
||||
comment: >-
|
||||
Path of the target bundle file, relative to the site root.
|
||||
match:
|
||||
type: string
|
||||
default: {js/*.js,js/vendor/**.js}
|
||||
optional: true
|
||||
comment: >-
|
||||
Regular expression that defines the pattern of source files to be included
|
||||
in the bundle. The pattern is relative to the project's `asset` folder.
|
||||
header:
|
||||
type: bool
|
||||
default: false
|
||||
comment: >-
|
||||
Trigger to consider the script as loaded in the page header. When enabled,
|
||||
it includes a script to load Google Analytics adjacent to any bundle
|
||||
input.
|
||||
localize:
|
||||
type: bool
|
||||
default: false
|
||||
optional: true
|
||||
comment: >-
|
||||
Triggers the creation of a language-specific bundle file. The language
|
||||
code is appended as suffix to the base name. For example, the English
|
||||
version of `js/main.bundle.js` becomes `js/main.bundle.en.js`.
|
||||
skipTemplate:
|
||||
type: bool
|
||||
default: false
|
||||
optional: true
|
||||
comment: >-
|
||||
Script source input can contain Go Template magic. As such, Hinode
|
||||
processes all input files with `resources.ExecuteAsTemplate`. However,
|
||||
certain input files may be incompatible. Set `skipTemplate` to true to
|
||||
skip template processing.
|
||||
state:
|
||||
type:
|
||||
type: select
|
||||
default: core
|
||||
optional: true
|
||||
default: async
|
||||
comment: >-
|
||||
Defines the loading behavior of the script bundle. By default, scripts are
|
||||
processed in the background and loaded when ready (`async`). Set the state
|
||||
to `immediate` to load the script immediately (such as critical scripts).
|
||||
Use 'defer' to load the script in relative order when the DOM is fully
|
||||
built.
|
||||
options:
|
||||
Type of script bundle. Critical scripts are included in the page header
|
||||
and are loaded immediately. Core scripts are bundled by category and are
|
||||
loaded asynchronously. Optional scripts are loaded individually on the
|
||||
pages that require them. They use the synchronization method as defined
|
||||
in their containing module.
|
||||
values:
|
||||
- async
|
||||
- defer
|
||||
- immediate
|
||||
- critical
|
||||
- core
|
||||
- optional
|
@@ -35,6 +35,21 @@ arguments:
|
||||
optional: true
|
||||
comment: Whether paging is enabled for the table.
|
||||
release: v0.24.13
|
||||
pagingOptionPerPage:
|
||||
type: int
|
||||
optional: true
|
||||
comment: >-
|
||||
Sets the maximum number of rows to display on each page. Requires
|
||||
`paging = true`.
|
||||
release: v0.27.8
|
||||
pagingOptionPageSelect:
|
||||
type: string
|
||||
optional: true
|
||||
comment: >-
|
||||
Sets the per page options in the dropdown. Must be an array of integers or
|
||||
arrays in the format [label (string), value (int)]. Requires
|
||||
`paging = true`.
|
||||
release: v0.27.8
|
||||
searchable:
|
||||
type: bool
|
||||
optional: true
|
||||
|
@@ -20,17 +20,39 @@ languageCode = "en-us"
|
||||
defaultContentLanguage = "en"
|
||||
defaultContentLanguageInSubdir = true
|
||||
|
||||
[outputFormats.REDIR]
|
||||
mediaType = "text/netlify"
|
||||
baseName = "_redirects"
|
||||
isPlainText = true
|
||||
notAlternative = true
|
||||
[outputFormats]
|
||||
[outputFormats.netlify]
|
||||
mediaType = "application/toml"
|
||||
baseName = "netlify"
|
||||
isPlainText = true
|
||||
notAlternative = true
|
||||
permalinkable = true
|
||||
root = true
|
||||
[outputFormats.server]
|
||||
mediaType = "application/toml"
|
||||
baseName = "server"
|
||||
isPlainText = true
|
||||
notAlternative = true
|
||||
permalinkable = true
|
||||
root = true
|
||||
[outputFormats.XML]
|
||||
isPlainText = false
|
||||
mediaType = "application/xml"
|
||||
isHtml = false
|
||||
noUgly = true
|
||||
permalinkable = false
|
||||
name = "xml"
|
||||
[outputFormats.REDIR]
|
||||
mediaType = "text/netlify"
|
||||
baseName = "_redirects"
|
||||
isPlainText = true
|
||||
notAlternative = true
|
||||
|
||||
[mediaTypes."text/netlify"]
|
||||
delimiter = ""
|
||||
|
||||
[outputs]
|
||||
home = ["HTML", "RSS", "REDIR"]
|
||||
home = ["HTML", "RSS", "REDIR", "netlify", "server"]
|
||||
|
||||
[build]
|
||||
writeStats = true
|
||||
@@ -67,15 +89,6 @@ home = ["HTML", "RSS", "REDIR"]
|
||||
[services.googleAnalytics]
|
||||
ID = "G-T85PPZ36GN"
|
||||
|
||||
[outputFormats]
|
||||
[outputFormats.XML]
|
||||
isPlainText = false
|
||||
mediaType = "application/xml"
|
||||
isHtml = false
|
||||
noUgly = true
|
||||
permalinkable = false
|
||||
name = "xml"
|
||||
|
||||
[minify]
|
||||
[minify.tdewolff.js]
|
||||
keepVarNames = true
|
||||
@@ -84,8 +97,36 @@ home = ["HTML", "RSS", "REDIR"]
|
||||
[minify.tdewolff.html]
|
||||
keepWhitespace = true
|
||||
|
||||
[segments]
|
||||
[segments.headers]
|
||||
[[segments.headers.includes]]
|
||||
kind = '{home}'
|
||||
output = '{netlify,server}'
|
||||
|
||||
[module]
|
||||
# Build and serve using local hinode clone declared in the named Hugo workspace:
|
||||
workspace = "hinode.work"
|
||||
[[module.imports]]
|
||||
path = "github.com/gethinode/mod-cookieyes/v2"
|
||||
[[module.imports]]
|
||||
path = "github.com/gethinode/hinode"
|
||||
[[module.imports]]
|
||||
path = "github.com/gethinode/mod-bootstrap"
|
||||
[[module.imports]]
|
||||
path = "github.com/gethinode/mod-csp"
|
||||
[[module.imports]]
|
||||
path = "github.com/gethinode/mod-flexsearch/v2"
|
||||
[[module.imports]]
|
||||
path = "github.com/gethinode/mod-fontawesome"
|
||||
[[module.imports]]
|
||||
path = "github.com/gethinode/mod-google-analytics"
|
||||
[[module.imports]]
|
||||
path = "github.com/gethinode/mod-katex"
|
||||
[[module.imports]]
|
||||
path = "github.com/gethinode/mod-leaflet"
|
||||
[[module.imports]]
|
||||
path = "github.com/gethinode/mod-lottie"
|
||||
[[module.imports]]
|
||||
path = "github.com/gethinode/mod-simple-datatables"
|
||||
[[module.imports]]
|
||||
path = "github.com/gethinode/mod-utils/v2"
|
||||
|
@@ -11,7 +11,7 @@ tagline = "A Hugo Theme"
|
||||
title = "Follow me"
|
||||
caption = "I work on everything coding and tweet developer memes"
|
||||
[en.params.footer]
|
||||
# license = "Licensed under Creative Commons (<a href='https://creativecommons.org/licenses/by-nc-sa/4.0/' class='link-secondary' target='_blank' rel='noopener noreferrer'>CC BY-NC-SA 4.0</a>)."
|
||||
# license = "Licensed under Creative Commons (<a href='https://creativecommons.org/licenses/by-nc-sa/4.0/' class='link-secondary' target='_blank' rel='noopener noreferrer nofollow'>CC BY-NC-SA 4.0</a>)."
|
||||
# toml-docs-end lang-param
|
||||
[en.params.sections.blog]
|
||||
reference = "More Posts"
|
||||
@@ -30,7 +30,7 @@ tagline = "Een Hugo Thema"
|
||||
title = "Volg mij"
|
||||
caption = "Ik doe aan programmeren en tweet memes"
|
||||
[nl.params.footer]
|
||||
# license = "Gelicenseerd onder Creative Commons (<a href='https://creativecommons.org/licenses/by-nc-sa/4.0/' class='link-secondary' target='_blank' rel='noopener noreferrer'>CC BY-NC-SA 4.0</a>)."
|
||||
# license = "Gelicenseerd onder Creative Commons (<a href='https://creativecommons.org/licenses/by-nc-sa/4.0/' class='link-secondary' target='_blank' rel='noopener noreferrer nofollow'>CC BY-NC-SA 4.0</a>)."
|
||||
[nl.params.sections.blog]
|
||||
reference = "Meer artikelen"
|
||||
[nl.params.sections.projects]
|
||||
@@ -49,7 +49,7 @@ tagline = "Un thème Hugo"
|
||||
title = "Suivez-moi"
|
||||
caption = "Je code et je tweet des mèmes de développeurs."
|
||||
[fr.params.footer]
|
||||
# license = "Gelicenseerd onder Creative Commons (<a href='https://creativecommons.org/licenses/by-nc-sa/4.0/' class='link-secondary' target='_blank' rel='noopener noreferrer'>CC BY-NC-SA 4.0</a>)."
|
||||
# license = "Gelicenseerd onder Creative Commons (<a href='https://creativecommons.org/licenses/by-nc-sa/4.0/' class='link-secondary' target='_blank' rel='noopener noreferrer nofollow'>CC BY-NC-SA 4.0</a>)."
|
||||
[fr.params.sections.blog]
|
||||
reference = "Plus d'articles"
|
||||
[fr.params.sections.projects]
|
||||
|
19
exampleSite/config/_default/netlify.toml
Normal file
19
exampleSite/config/_default/netlify.toml
Normal file
@@ -0,0 +1,19 @@
|
||||
[[redirects]]
|
||||
from = '/fr/*'
|
||||
to = '/fr/404.html'
|
||||
status = 404
|
||||
|
||||
[[redirects]]
|
||||
from = '/nl/*'
|
||||
to = '/nl/404.html'
|
||||
status = 404
|
||||
|
||||
[[redirects]]
|
||||
from = '/en/*'
|
||||
to = '/en/404.html'
|
||||
status = 404
|
||||
|
||||
[[redirects]] # Default language should be last.
|
||||
from = '/*'
|
||||
to = '/en/404.html'
|
||||
status = 404
|
@@ -8,11 +8,14 @@
|
||||
footerBelowFold = false
|
||||
loading = "lazy"
|
||||
breakpoint = "md"
|
||||
[main.internalLinks]
|
||||
validate = true
|
||||
[main.externalLinks]
|
||||
cue = true
|
||||
tab = true
|
||||
[main.build]
|
||||
transpiler = "dartsass"
|
||||
silenceDeprecations = true
|
||||
|
||||
[debugging]
|
||||
showJS = false
|
||||
@@ -191,3 +194,6 @@
|
||||
observatory = "https://observatory.mozilla.org/analyze/demo.gethinode.com"
|
||||
pagespeed = "https://pagespeed.web.dev/report?url=https%3A%2F%2Fdemo.gethinode.com%2F"
|
||||
hinode = "https://gethinode.com"
|
||||
|
||||
[modules.cookieyes]
|
||||
url = "https://cdn-cookieyes.com/client_data/a54b5553f349dd13bd225f8e/script.js"
|
||||
|
@@ -1,41 +1,49 @@
|
||||
# toml-docs-start server-config
|
||||
# Auto-generated file - do not modify
|
||||
|
||||
[[headers]]
|
||||
for = '/**'
|
||||
[headers.values]
|
||||
Strict-Transport-Security = "max-age=31536000; includeSubDomains; preload"
|
||||
X-Content-Type-Options = "nosniff"
|
||||
X-XSS-Protection = "1; mode=block"
|
||||
Content-Security-Policy = """\
|
||||
default-src 'self'; \
|
||||
script-src 'self' https://*.google-analytics.com https://*.googletagmanager.com; \
|
||||
style-src 'self' https://fonts.googleapis.com https://www.youtube.com; \
|
||||
object-src 'none'; \
|
||||
for = '/**'
|
||||
|
||||
[headers.values]
|
||||
Access-Control-Allow-Origin = '*'
|
||||
Content-Security-Policy = """
|
||||
base-uri 'self'; \
|
||||
connect-src 'self'
|
||||
https://*.google-analytics.com https://*.analytics.google.com https://*.googletagmanager.com; \
|
||||
font-src 'self' https://fonts.gstatic.com; \
|
||||
frame-src 'self' https://player.cloudinary.com https://player.vimeo.com https://www.youtube-nocookie.com https://www.youtube.com; \
|
||||
img-src 'self' data: https://*.imgix.net https://*.imagekit.io https://*.cloudinary.com https://i.vimeocdn.com https://i.ytimg.com https://*.google-analytics.com https://*.googletagmanager.com https://tile.openstreetmap.org; \
|
||||
connect-src 'self' *.cookieyes.com cdn-cookieyes.com *.google-analytics.com *.analytics.google.com *.googletagmanager.com; \
|
||||
default-src 'none'; \
|
||||
font-src 'self' fonts.gstatic.com; \
|
||||
form-action 'self'; \
|
||||
frame-src player.cloudinary.com www.youtube-nocookie.com www.youtube.com player.vimeo.com; \
|
||||
img-src 'self' cdn-cookieyes.com *.google-analytics.com *.googletagmanager.com data: *.imgix.net *.imagekit.io *.cloudinary.com i.ytimg.com tile.openstreetmap.org i.vimeocdn.com; \
|
||||
manifest-src 'self'; \
|
||||
media-src 'self' \
|
||||
media-src 'self'; \
|
||||
object-src 'none'; \
|
||||
script-src 'self' cdn-cookieyes.com *.google-analytics.com *.googletagmanager.com player.vimeo.com; \
|
||||
style-src 'self' 'unsafe-inline' www.youtube.com; \
|
||||
"""
|
||||
X-Frame-Options = "SAMEORIGIN"
|
||||
Referrer-Policy = "strict-origin"
|
||||
Permissions-Policy = """\
|
||||
geolocation=(), \
|
||||
midi=(), \
|
||||
sync-xhr=(), \
|
||||
microphone=(), \
|
||||
camera=(), \
|
||||
magnetometer=(), \
|
||||
gyroscope=(), \
|
||||
payment=() \
|
||||
"""
|
||||
cache-control = """\
|
||||
max-age=0, \
|
||||
no-cache, \
|
||||
no-store, \
|
||||
must-revalidate \
|
||||
"""
|
||||
Access-Control-Allow-Origin = "*"
|
||||
# toml-docs-end server-config
|
||||
Permissions-Policy = 'geolocation=(), midi=(), sync-xhr=(), microphone=(), camera=(), magnetometer=(), gyroscope=(), fullscreen=(), payment=() '
|
||||
Referrer-Policy = 'strict-origin'
|
||||
Strict-Transport-Security = 'max-age=31536000; includeSubDomains; preload'
|
||||
X-Content-Type-Options = 'nosniff'
|
||||
X-Frame-Options = 'SAMEORIGIN'
|
||||
X-XSS-Protection = '1; mode=block'
|
||||
cache-control = 'max-age=0, no-cache, no-store, must-revalidate '
|
||||
|
||||
[[redirects]]
|
||||
from = '/fr/*'
|
||||
status = 404
|
||||
to = '/fr/404.html'
|
||||
|
||||
[[redirects]]
|
||||
from = '/nl/*'
|
||||
status = 404
|
||||
to = '/nl/404.html'
|
||||
|
||||
[[redirects]]
|
||||
from = '/en/*'
|
||||
status = 404
|
||||
to = '/en/404.html'
|
||||
|
||||
[[redirects]]
|
||||
from = '/*'
|
||||
status = 404
|
||||
to = '/en/404.html'
|
||||
|
||||
|
@@ -10,7 +10,7 @@ const purgecss = require('@fullhuman/postcss-purgecss')({
|
||||
return [...(els.tags || []), ...(els.classes || []), ...(els.ids || [])]
|
||||
},
|
||||
dynamicAttributes: ['data-bs-theme'],
|
||||
safelist: [
|
||||
safelist: ['was-validated',
|
||||
...whitelister([
|
||||
'./_vendor/github.com/gethinode/hinode/assets/scss/components/_clipboard.scss',
|
||||
'./_vendor/github.com/gethinode/hinode/assets/scss/components/_command.scss',
|
||||
@@ -24,6 +24,7 @@ const purgecss = require('@fullhuman/postcss-purgecss')({
|
||||
'./_vendor/github.com/gethinode/hinode/assets/scss/components/_video.scss',
|
||||
'./_vendor/github.com/gethinode/hinode/assets/scss/theme/fonts.scss',
|
||||
'./_vendor/github.com/gethinode/hinode/assets/scss/theme/theme.scss',
|
||||
'./exampleSite/_vendor/github.com/gethinode/mod-cookieyes/v2/assets/scss/cookieyes.scss',
|
||||
'./_vendor/github.com/gethinode/mod-flexsearch/v2/assets/scss/modules/flexsearch/flexsearch.scss',
|
||||
'./_vendor/github.com/gethinode/mod-katex/dist/katex.scss',
|
||||
'./_vendor/github.com/gethinode/mod-leaflet/dist/leaflet.scss',
|
||||
|
@@ -18,17 +18,17 @@ Hinode provides several shortcodes that wrap common Bootstrap components. Refer
|
||||
|
||||
As an example, the following shortcode displays the full text of an abbreviation on hover.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* abbr "CI/CD" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Accordion
|
||||
|
||||
As an example, the following shortcode displays an accordion with three elements, of which the first element is expanded.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* accordion */>}}
|
||||
{{</* accordion-item header="Accordion Item #1" show="true" */>}}
|
||||
@@ -43,25 +43,25 @@ As an example, the following shortcode displays an accordion with three elements
|
||||
{{</* /accordion-item */>}}
|
||||
{{</* /accordion */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Alert
|
||||
|
||||
As an example, the following shortcode displays a simple alert.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* alert color="danger" dismissible="true" */>}}
|
||||
A simple danger alert—check it out!
|
||||
{{</* /alert */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Badge
|
||||
|
||||
Use the badge shortcode to display a badge for a heading.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example >}}
|
||||
Heading 1 {{</* badge title="New" */>}}
|
||||
{.h1}
|
||||
@@ -81,35 +81,35 @@ Heading 5 {{</* badge title="New" */>}}
|
||||
Heading 6 {{</* badge title="New" */>}}
|
||||
{.h6}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Breadcrumb
|
||||
|
||||
As an example, the following shortcode displays a breadcrumb for the blog page.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* breadcrumb path="blog" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Button
|
||||
|
||||
As an example, the following shortcode displays a tooltip for a dark button with a badge.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* button color="secondary" tooltip="Click on the inbox to view your unread messages" href="#!" badge="99+" */>}}
|
||||
Inbox
|
||||
{{</* /button */>}}
|
||||
{{< /example>}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Button group
|
||||
|
||||
As an example, the following shortcode displays a group of three buttons.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* button-group aria-label="Basic example" */>}}
|
||||
{{</* button color="primary" href="#!" */>}}Left{{</* /button */>}}
|
||||
@@ -117,24 +117,24 @@ As an example, the following shortcode displays a group of three buttons.
|
||||
{{</* button color="primary" href="#!" */>}}Right{{</* /button */>}}
|
||||
{{</* /button-group */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Card
|
||||
|
||||
As an example, the following shortcode displays a stacked card that links to the [about]({{% ref "about" %}}) page. It includes a custom header.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* card path="about" padding="3" class="col-6 mx-auto" color="body-tertiary"
|
||||
header="publication" footer="none" button=true /*/>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Card group
|
||||
|
||||
As an example, the following shortcode displays a card group of three elements.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* card-group padding="3" gutter="3" button=true buttonType="link" cols=2 scroll=true */>}}
|
||||
{{</* card title="Bootstrap framework" icon="fab bootstrap" */>}}
|
||||
@@ -149,13 +149,13 @@ As an example, the following shortcode displays a card group of three elements.
|
||||
{{</* /card */>}}
|
||||
{{</* /card-group */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Carousel
|
||||
|
||||
As an example, the following shortcode displays a centered carousel with three slides, 16x9 aspect ratio, and a relative width of 67% on large screens.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* carousel ratio="16x9" class="col-sm-12 col-lg-8 mx-auto" */>}}
|
||||
{{</* img src="img/coffee.jpg" caption="slide 1" */>}}
|
||||
@@ -163,13 +163,13 @@ As an example, the following shortcode displays a centered carousel with three s
|
||||
{{</* img src="img/dunes.jpg" caption="slide 3" */>}}
|
||||
{{</* /carousel */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Collapse
|
||||
|
||||
As an example, the following shortcode displays a button that, when clicked, triggers a panel to appear or disappear.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* button collapse="collapse-1" */>}}
|
||||
Trigger panel
|
||||
@@ -180,23 +180,23 @@ As an example, the following shortcode displays a button that, when clicked, tri
|
||||
revealed when the user activates the relevant trigger.
|
||||
{{</* /collapse */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Command prompt
|
||||
|
||||
Use the `command` shortcode to generate a block with a default bash command prompt.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* command */>}}
|
||||
export MY_VAR=123
|
||||
{{</* /command */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
Specify `user` and `host` to add the user context to the prompt. In addition, use `(out)` to specify an output line and use `\` to denote a line continuation.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* command user="user" host="localhost" */>}}
|
||||
export MY_VAR=123
|
||||
@@ -210,7 +210,7 @@ echo "goodbye"
|
||||
(out)goodbye
|
||||
{{</* /command */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Docs
|
||||
|
||||
@@ -222,47 +222,47 @@ Use the `docs` shortcode to display the content of a `js`, `scss` or `toml` file
|
||||
|
||||
Use the `example` shortcode to display a code example and to render a preview of the same input.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* command */>}}
|
||||
export MY_VAR=123
|
||||
{{</* /command */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## File
|
||||
|
||||
Use the `file` shortcode to print and highlight the full content of a given input file.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* file path="./config/_default/languages.toml" id="file-collapse-1" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Icon
|
||||
|
||||
As an example, the following shortcodes show a square check, a brand logo, a circle check, and a custom icon.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* fa square-check */>}}
|
||||
{{</* fab linkedin */>}}
|
||||
{{</* fas circle-check */>}}
|
||||
{{</* icon custom activity */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Image
|
||||
|
||||
As an example, the following shortcode displays an image with rounded corners and a 4x3 aspect ratio in portrait mode.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* image src="img/flowers.jpg" ratio="4x3" caption="Figure caption" class="rounded col-md-6"
|
||||
portrait=true wrapper="text-center" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
The same image, but then using Markdown syntax:
|
||||
|
||||
@@ -273,25 +273,35 @@ The same image, but then using Markdown syntax:
|
||||
|
||||
As an example, the following shortcode displays a regular vector image.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* image src="/img/logo_icon.svg" class="col-sm-6 col-lg-4" wrapper="text-center" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
As an example, the following shortcode displays a vector image with a symbol reference.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* image src="/img/logo_var.svg#logo" class="col-sm-6 col-lg-4" wrapper="text-center" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Ins
|
||||
|
||||
As an example, the following shortcode displays underlined text.
|
||||
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example >}}
|
||||
This is an {{</* ins */>}}underlined text{{</* /ins */>}}.
|
||||
{{< /example >}}
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Link
|
||||
|
||||
As an example, the following shortcodes render links in different formats.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
|
||||
- {{</* link hinode >}}Named link with default settings{{< /link */>}}
|
||||
@@ -311,23 +321,23 @@ As an example, the following shortcodes render links in different formats.
|
||||
- {{</* link "components/#map" /*/>}}
|
||||
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Mark
|
||||
|
||||
Use the `mark` shortcode to highlight text. The inner content is used as input.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
Use the mark shortcode to {{</* mark >}}highlight{{< /mark */>}} specific text.
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Nav
|
||||
|
||||
As an example, the following shortcode displays a tab group with vertically aligned pills.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* nav type="pills" vertical="true" */>}}
|
||||
{{</* nav-item header="Nav Item #1" show="true" */>}}
|
||||
@@ -342,23 +352,23 @@ As an example, the following shortcode displays a tab group with vertically alig
|
||||
{{</* /nav-item */>}}
|
||||
{{</* /nav */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Navbar
|
||||
|
||||
As an example, the following shortcode displays a light navigation header.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* navbar id="navbar-sample" path="blog" color="primary" size="md" search="false" menus="sample" title="Brand" mode="false" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Persona
|
||||
|
||||
As an example, the following shortcode displays a persona card with a primary color.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* persona thumbnail="/img/creator-1x1.jpg" title="Creators" color="primary" */>}}
|
||||
As a content creator you value your independence. You like to take control of your
|
||||
@@ -370,55 +380,55 @@ As an example, the following shortcode displays a persona card with a primary co
|
||||
Hinode.
|
||||
{{</* /persona */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Release
|
||||
|
||||
As an example, the following shortcode displays a default release button.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* release version="v0.14.1" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Spinner
|
||||
|
||||
As an example, the following shortcode displays a centered spinner.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* spinner color="info" class="text-center" */>}}
|
||||
Loading...
|
||||
{{</* /spinner */>}}
|
||||
{{< /example>}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Sub
|
||||
|
||||
As an example, the following shortcode displays subscript text.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example >}}
|
||||
H{{</* sub 2 */>}}O is a liquid.
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Sup
|
||||
|
||||
As an example, the following shortcode displays superscript text.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example >}}
|
||||
2{{</* sup 10 */>}} is 1024.
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Table
|
||||
|
||||
As an example, the following shortcode displays a responsive table.
|
||||
|
||||
<!-- markdownlint-disable MD037 MD058 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 MD058 -->{{% /comment %}}
|
||||
{{< example lang="markdown" >}}
|
||||
{{</* table */>}}
|
||||
| # | Heading | Heading | Heading | Heading | Heading | Heading | Heading | Heading | Heading |
|
||||
@@ -428,23 +438,23 @@ As an example, the following shortcode displays a responsive table.
|
||||
| 3. | cell | cel | cel | cel | cel | cel | cel | cel | cel |
|
||||
{{</* /table */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 MD058 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 MD058 -->{{% /comment %}}
|
||||
|
||||
## Timeline
|
||||
|
||||
As an example, the following shortcode displays a timeline with the file `data/timeline.en.yml` as data.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* timeline data="timeline" background="dark" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Toast
|
||||
|
||||
As an example, the following shortcode displays a button that, when clicked, triggers the toast message.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* button toast="toast-example-1" */>}}
|
||||
Show toast 1
|
||||
@@ -462,44 +472,24 @@ As an example, the following shortcode displays a button that, when clicked, tri
|
||||
This is the second toast message. It supports `markdown.`
|
||||
{{</* /toast */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Tooltip
|
||||
|
||||
As an example, the following shortcode displays a tooltip for a colored hyperlink.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* tooltip color="primary" title="Tooltip caption" href="#!" */>}}Tooltip{{</* /tooltip */>}} demonstration
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Video
|
||||
|
||||
As an example, the following shortcode displays an Elephants video hosted by Cloudinary.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* video host="cloudinary" account="demo" id="elephants" autoplay=true */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Vimeo
|
||||
|
||||
As an example, the following shortcode displays a Vimeo video.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* vimeo id="55073825" autoplay=true autotitle=true */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Youtube
|
||||
|
||||
As an example, the following shortcode displays a Hugo quickstart guide.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* youtube id="w7Ft2ymGmfc" autoplay=true autotitle=true */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
@@ -19,19 +19,19 @@ Hinode provides several shortcodes on top of the common [Bootstrap elements]({{%
|
||||
|
||||
As an example, the following shortcode shows an animation that plays on hover.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* animation data="gatin.json" auto=false hover=true class="col-6 mx-auto" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Data tables
|
||||
|
||||
As an example, the following shortcode displays a responsive table that uses advanced controls.
|
||||
|
||||
<!-- markdownlint-disable MD037 MD058 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 MD058 -->{{% /comment %}}
|
||||
{{< example lang="markdown" >}}
|
||||
{{</* table sortable="true" paging="true" searchable="true" */>}}
|
||||
{{</* table sortable="true" paging="true" searchable="true" pagingOptionPerPage=5 */>}}
|
||||
| # | Heading |
|
||||
|-----|---------|
|
||||
| 1. | Item 1 |
|
||||
@@ -66,7 +66,7 @@ As an example, the following shortcode displays a responsive table that uses adv
|
||||
| 30. | Item 30 |
|
||||
{{</* /table */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Formula (KaTeX)
|
||||
|
||||
@@ -85,8 +85,8 @@ $$\forall x \in X, \quad \exists y \leq \epsilon$$
|
||||
|
||||
As an example, the following shortcode displays an interactive map of the city of Amsterdam.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* map lat=52.377 long=4.90 zoom=13 popup="Amsterdam Central Station" popup-lat=52.378062 popup-long=4.900562 */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
@@ -12,31 +12,31 @@ thumbnail:
|
||||
|
||||
As an example, the following shortcode displays an image with rounded corners and a 21x9 aspect ratio.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* image src="https://res.cloudinary.com/demo/image/upload/dog.webp"
|
||||
{{</* image src="https://res.cloudinary.com/demo/dog.webp"
|
||||
ratio="21x9" caption="Cloudinary image" class="rounded" plain=true */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## ImageKit.io
|
||||
|
||||
As an example, the following shortcode displays an image with rounded corners and a 21x9 aspect ratio.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* image src="https://ik.imagekit.io/demo/default-image.jpg"
|
||||
ratio="21x9" caption="ImageKit.io image" class="rounded" anchor="Center" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Imgix
|
||||
|
||||
As an example, the following shortcode displays an image with rounded corners and a 21x9 aspect ratio.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* image src="https://assets.imgix.net/examples/bluehat.jpg"
|
||||
ratio="21x9" caption="imgix image" class="rounded" anchor="Top" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
44
exampleSite/content/en/cookies.md
Normal file
44
exampleSite/content/en/cookies.md
Normal file
@@ -0,0 +1,44 @@
|
||||
---
|
||||
title: Cookie Policy
|
||||
description: Cookie policy of gethinode.com
|
||||
date: 2024-09-19
|
||||
layout: docs
|
||||
---
|
||||
{{% comment %}}<!-- markdownlint-disable MD036 -->{{% /comment %}}
|
||||
*Effective Date 19-Sep-2024*
|
||||
|
||||
## What are cookies?
|
||||
|
||||
This Cookie Policy explains what cookies are and how we use them, the types of cookies we use i.e, the information we collect using cookies and how that information is used, and how to manage the cookie settings.
|
||||
|
||||
Cookies are small text files that are used to store small pieces of information. They are stored on your device when the website is loaded on your browser. These cookies help us make the website function properly, make it more secure, provide better user experience, and understand how the website performs and to analyze what works and where it needs improvement.
|
||||
|
||||
## How do we use cookies?
|
||||
|
||||
As most of the online services, our website uses first-party and third-party cookies for several purposes. First-party cookies are mostly necessary for the website to function the right way, and they do not collect any of your personally identifiable data.
|
||||
|
||||
The third-party cookies used on our website are mainly for understanding how the website performs, how you interact with our website, keeping our services secure, providing advertisements that are relevant to you, and all in all providing you with a better and improved user experience and help speed up your future interactions with our website.
|
||||
|
||||
## Types of Cookies we use
|
||||
|
||||
{{< cky-audit >}}
|
||||
|
||||
## Manage cookie preferences
|
||||
|
||||
{{< cky-banner >}}
|
||||
|
||||
You can change your cookie preferences any time by clicking the above button. This will let you revisit the cookie consent banner and change your preferences or withdraw your consent right away.
|
||||
|
||||
In addition to this, different browsers provide different methods to block and delete cookies used by websites. You can change the settings of your browser to block/delete the cookies. Listed below are the links to the support documents on how to manage and delete cookies from the major web browsers.
|
||||
|
||||
Chrome: https://support.google.com/accounts/answer/32050
|
||||
|
||||
Safari: https://support.apple.com/en-in/guide/safari/sfri11471/mac
|
||||
|
||||
Firefox: https://support.mozilla.org/en-US/kb/clear-cookies-and-site-data-firefox?redirectslug=delete-cookies-remove-info-websites-stored&redirectlocale=en-US
|
||||
|
||||
Internet Explorer: https://support.microsoft.com/en-us/topic/how-to-delete-cookie-files-in-internet-explorer-bca9446f-d873-78de-77ba-d42645fa52fc
|
||||
|
||||
If you are using any other web browser, please visit your browser’s official support documents.
|
||||
|
||||
*Cookie Policy generated by {{< link "https://www.cookieyes.com" >}}CookieYes - Cookie Policy Generator{{< /link >}}.*
|
47
exampleSite/content/en/privacy.md
Normal file
47
exampleSite/content/en/privacy.md
Normal file
@@ -0,0 +1,47 @@
|
||||
---
|
||||
title: Privacy Policy
|
||||
description: Privacy policy of gethinode.com
|
||||
date: 2024-09-19
|
||||
layout: docs
|
||||
---
|
||||
{{% comment %}}<!-- markdownlint-disable MD036 -->{{% /comment %}}
|
||||
*Effective Date 19-Sep-2024*
|
||||
|
||||
This Privacy Policy describes the policies of gethinode.com on the collection, use and disclosure of your information that we collect when you use our website (https://gethinode.com, referred to as the “Service”). By accessing or using the Service, you are consenting to the collection, use and disclosure of your information in accordance with this Privacy Policy. If you do not consent to the same, please do not access or use the Service.
|
||||
|
||||
We may modify this Privacy Policy at any time without any prior notice to you and will post the revised Privacy Policy on the Service. The revised Policy will be effective 180 days from when the revised Policy is posted in the Service and your continued access or use of the Service after such time will constitute your acceptance of the revised Privacy Policy. We therefore recommend that you periodically review this page.
|
||||
|
||||
## How we share your information
|
||||
|
||||
We will not transfer your personal information to any third party without seeking your consent, except in limited circumstances as described
|
||||
below:
|
||||
|
||||
- Analytics
|
||||
|
||||
We require such third party’s to use the personal information we transfer to them only for the purpose for which it was transferred and not to retain it for longer than is required for fulfilling the said purpose.
|
||||
|
||||
We may also disclose your personal information for the following: (1) to comply with applicable law, regulation, court order or other legal process; (2) to enforce your agreements with us, including this Privacy Policy; or (3) to respond to claims that your use of the Service violates any third-party rights. If the Service or our company is merged or acquired with another company, your information will be one of the assets that is transferred to the new owner.
|
||||
|
||||
## Your rights
|
||||
|
||||
Depending on the law that applies, you may have a right to access and rectify or erase your personal data or receive a copy of your personal data, restrict or object to the active processing of your data, ask us to share (port) your personal information to another entity,withdraw any consent you provided to us to process your data, a right to lodge a complaint with a statutory authority and such other rights as may be relevant under applicable laws. {{% comment %}}<!-- To exercise these rights, you can write to us at privacy@gethinode.com. We will respond to your request in accordance with applicable law. -->{{% /comment %}}
|
||||
|
||||
Do note that if you do not allow us to collect or process the required personal information or withdraw the consent to process the same for the required purposes, you may not be able to access or use the services for which your information was sought.
|
||||
|
||||
## Cookies etc.
|
||||
|
||||
To learn more about how we use these and your choices in relation to these tracking technologies, please refer to our {{< link "cookies" >}}Cookie Policy/Settings{{< /link >}}.
|
||||
|
||||
## Security
|
||||
|
||||
The security of your information is important to us and we will use reasonable security measures to prevent the loss, misuse or unauthorized alteration of your information under our control. However, given the inherent risks, we cannot guarantee absolute security and consequently, we cannot ensure or warrant the security of any information you transmit to us and you do so at your own risk.
|
||||
|
||||
## Third party links & use of your information
|
||||
|
||||
Our Service may contain links to other websites that are not operated by us. This Privacy Policy does not address the privacy policy and other practices of any third parties, including any third party operating any website or service that may be accessible via a link on the Service. We strongly advise you to review the privacy policy of every site you visit. We have no control over and assume no responsibility for the content, privacy policies or practices of any third party sites or services.
|
||||
|
||||
{{% comment %}}<!-- ## Grievance / Data Protection Officer
|
||||
|
||||
If you have any queries or concerns about the processing of your information that is available with us, you may email us at privacy@gethinode.com. We will address your concerns in accordance with applicable law. -->{{% /comment %}}
|
||||
|
||||
*Privacy Policy generated with {{< link "https://www.cookieyes.com" >}}CookieYes{{< /link >}}.*
|
@@ -19,17 +19,17 @@ Hinode propose plusieurs shortcodes qui enveloppent des composants Bootstrap cou
|
||||
|
||||
À titre d'exemple, le shortcode suivant affiche le texte complet d'une abréviation lorsque survolé.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* abbr "CI/CD" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Accordéon
|
||||
|
||||
À titre d'exemple, le shortcode suivant affiche un accordéon avec trois éléments, dont le premier élément est déplié.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* accordion */>}}
|
||||
{{</* accordion-item header="Élément d'accordéon #1" show="true" */>}}
|
||||
@@ -43,25 +43,25 @@ Hinode propose plusieurs shortcodes qui enveloppent des composants Bootstrap cou
|
||||
{{</* /accordion-item */>}}
|
||||
{{</* /accordion */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Alerte
|
||||
|
||||
À titre d'exemple, le shortcode suivant affiche une alerte simple.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* alert color="danger" dismissible="true" */>}}
|
||||
Une simple alerte de danger — vérifiez-la !
|
||||
{{</* /alert */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Badge
|
||||
|
||||
Utilisez le shortcode "badge" pour afficher un badge avec un en-tête.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example >}}
|
||||
En-tête 1 {{</* badge title="Nouveau" */>}}
|
||||
{.h1}
|
||||
@@ -81,35 +81,35 @@ En-tête 5 {{</* badge title="Nouveau" */>}}
|
||||
En-tête 6 {{</* badge title="Nouveau" */>}}
|
||||
{.h6}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Fil d'Ariane
|
||||
|
||||
À titre d'exemple, le shortcode suivant affiche un fil d'Ariane pour la page du blog.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* breadcrumb path="blog" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Bouton
|
||||
|
||||
À titre d'exemple, le shortcode suivant affiche une infobulle pour un bouton sombre avec un badge.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* button color="secondary" tooltip="Cliquez sur la boîte de réception pour voir vos messages non lus." href="#!" badge="99+" */>}}
|
||||
Boîte de réception
|
||||
{{</* /button */>}}
|
||||
{{< /example>}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Groupe de boutons
|
||||
|
||||
À titre d'exemple, le shortcode suivant affiche un groupe de trois boutons.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* button-group aria-label="Basic example" */>}}
|
||||
{{</* button color="primary" href="#!" */>}}Gauche{{</* /button */>}}
|
||||
@@ -117,24 +117,24 @@ En-tête 6 {{</* badge title="Nouveau" */>}}
|
||||
{{</* button color="primary" href="#!" */>}}Droite{{</* /button */>}}
|
||||
{{</* /button-group */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Carte
|
||||
|
||||
À titre d'exemple, le shortcode suivant affiche une carte empilée qui renvoie à la page [à propos]({{% ref "about" %}}). Elle inclut un en-tête personnalisé.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* card path="about" padding="3" class="col-6 mx-auto" color="body-tertiary"
|
||||
header="publication" footer="none" button=true /*/>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Groupe de cartes
|
||||
|
||||
À titre d'exemple, le shortcode suivant affiche un groupe de cartes avec trois éléments.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* card-group padding="3" gutter="3" */>}}
|
||||
{{</* card title="Framework Bootstrap" icon="fab bootstrap" */>}}
|
||||
@@ -151,13 +151,13 @@ En-tête 6 {{</* badge title="Nouveau" */>}}
|
||||
{{</* /card */>}}
|
||||
{{</* /card-group */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Carrousel
|
||||
|
||||
À titre d'exemple, le shortcode suivant affiche un carrousel centré avec trois slides, un rapport hauteur/largeur de 16:9 et une largeur relative de 67 % sur les grands écrans.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* carousel ratio="16x9" class="col-sm-12 col-lg-8 mx-auto" */>}}
|
||||
{{</* img src="img/coffee.jpg" caption="slide 1" */>}}
|
||||
@@ -165,13 +165,13 @@ En-tête 6 {{</* badge title="Nouveau" */>}}
|
||||
{{</* img src="img/dunes.jpg" caption="slide 3" */>}}
|
||||
{{</* /carousel */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Réduire
|
||||
|
||||
À titre d'exemple, le shortcode suivant affiche un bouton qui, lorsqu'il est cliqué, déclenche l'apparition ou la disparition d'un panneau.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* button collapse="collapse-1" */>}}
|
||||
Déclencher le panneau
|
||||
@@ -182,23 +182,23 @@ En-tête 6 {{</* badge title="Nouveau" */>}}
|
||||
sera révélé lorsque l'utilisateur active le déclencheur correspondant.
|
||||
{{</* /collapse */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Invite de commandes
|
||||
|
||||
Utilisez le shortcode `command` pour générer un bloc avec un invite de commandes bash par défaut.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* command */>}}
|
||||
export MY_VAR=123
|
||||
{{</* /command */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
Spécifiez `user` et `host` pour ajouter le contexte de l'utilisateur à l'invite. De plus, utilisez `(out)` pour spécifier une ligne de sortie et utilisez `\` pour indiquer une continuation de ligne.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* command user="user" host="localhost" */>}}
|
||||
export MY_VAR=123
|
||||
@@ -212,7 +212,7 @@ echo "goodbye"
|
||||
(out)goodbye
|
||||
{{</* /command */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Documentation
|
||||
|
||||
@@ -224,67 +224,67 @@ Utilisez le shortcode `docs` pour afficher le contenu d'un fichier `js`, `scss`
|
||||
|
||||
Utilisez le shortcode `example` pour afficher un exemple de code et pour afficher un aperçu de la même entrée.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* command */>}}
|
||||
export MY_VAR=123
|
||||
{{</* /command */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Fichier
|
||||
|
||||
Utilisez le shortcode `file` pour afficher et mettre en évidence le contenu complet d'un fichier d'entrée donné.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* file path="./config/_default/languages.toml" id="file-collapse-1" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Icon
|
||||
|
||||
À titre d'exemple, les shortcodes suivants affichent une coche carrée, un logo de marque et une coche circulaire.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* fa square-check */>}}
|
||||
{{</* fab linkedin */>}}
|
||||
{{</* fas circle-check */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Image
|
||||
|
||||
À titre d'exemple, le shortcode suivant affiche une image avec des coins arrondis et un ratio d'aspect de 21:9.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* image src="img/flowers.jpg" ratio="21x9" caption="Légende de l'image" class="rounded" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
À titre d'exemple, le shortcode suivant affiche une image vectorielle classique.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* image src="/img/logo_icon.svg" class="col-sm-6 col-lg-4" wrapper="text-center" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
À titre d'exemple, le shortcode suivant affiche une image vectorielle avec une référence de symbole.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* image src="/img/logo_var.svg#logo" class="col-sm-6 col-lg-4" wrapper="text-center" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Lien
|
||||
|
||||
À titre d'exemple, les shortcodes suivants rendent des liens dans différents formats.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
|
||||
- {{</* link hinode >}}Lien nommé avec les paramètres par défaut{{< /link */>}}
|
||||
@@ -303,23 +303,23 @@ Utilisez le shortcode `file` pour afficher et mettre en évidence le contenu com
|
||||
- {{</* link "components/#map" /*/>}}
|
||||
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Mark
|
||||
|
||||
Utilisez le shortcode `mark` pour mettre en évidence le texte. Le contenu interne est utilisé en tant qu'entrée.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
Utilisez le shortcode `mark` pour {{</* mark >}}mettre en évidence{{< /mark */>}} un texte spécifique.
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Navigation
|
||||
|
||||
À titre d'exemple, le shortcode suivant affiche un groupe d'onglets avec des onglets alignés verticalement.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* nav type="pills" vertical="true" */>}}
|
||||
{{</* nav-item header="Élément de navigation #1" show="true" */>}}
|
||||
@@ -334,75 +334,75 @@ Utilisez le shortcode `mark` pour {{</* mark >}}mettre en évidence{{< /mark */>
|
||||
{{</* /nav-item */>}}
|
||||
{{</* /nav */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Barre de navigation
|
||||
|
||||
À titre d'exemple, le shortcode suivant affiche un en-tête de navigation clair.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* navbar id="navbar-sample" path="blog" color="primary" size="md" search="false" menus="sample" title="Marque" mode="false" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Publication
|
||||
|
||||
À titre d'exemple, le shortcode suivant affiche un bouton de publication par défaut.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* release version="v0.14.1" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Indicateur de chargement
|
||||
|
||||
À titre d'exemple, le raccourci suivant affiche un indicateur de chargement centré.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* spinner color="info" class="text-center" */>}}
|
||||
Chargement...
|
||||
{{</* /spinner */>}}
|
||||
{{< /example>}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Sub
|
||||
|
||||
À titre d'exemple, le shortcode suivant affiche du texte en indice.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example >}}
|
||||
H{{</* sub 2 */>}}O est un liquide.
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Sup
|
||||
|
||||
À titre d'exemple, le shortcode suivant affiche du texte en exposant.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example >}}
|
||||
2{{</* sup 10 */>}} équivaut à 1024.
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Chronologie
|
||||
|
||||
À titre d'exemple, le shortcode suivant affiche une chronologie avec le fichier `data/timeline-fr.yml` en tant que données.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* timeline data="timeline-fr" background="dark" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Notification
|
||||
|
||||
À titre d'exemple, le shortcode suivant affiche un bouton qui, lorsqu'il est cliqué, déclenche le message de notification.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* button toast="toast-example-1" */>}}
|
||||
Affiche la notification #1
|
||||
@@ -420,14 +420,24 @@ H{{</* sub 2 */>}}O est un liquide.
|
||||
Ceci est le deuxième message de notification. Il prend en charge le `markdown`.
|
||||
{{</* /toast */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Infobulle
|
||||
|
||||
À titre d'exemple, le shortcode suivant affiche une infobulle pour un lien hypertexte coloré.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* tooltip color="primary" title="Légende de l'infobulle" href="#!" */>}}Démonstration{{</* /tooltip */>}} d'une infobulle
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Vidéo
|
||||
|
||||
À titre d'exemple, le shortcode suivant affiche une vidéo d'éléphant hébergée par Cloudinary.
|
||||
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* video host="cloudinary" account="demo" id="elephants" autoplay=true */>}}
|
||||
{{< /example >}}
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
@@ -11,7 +11,7 @@ thumbnail:
|
||||
authorURL: https://unsplash.com/@ryoji__iwata
|
||||
origin: Unsplash
|
||||
originURL: https://unsplash.com/photos/5siQcvSxCP8
|
||||
modules: ["katex", "leaflet", "lottie"]
|
||||
modules: ["leaflet", "lottie", "simple-datatables"]
|
||||
---
|
||||
|
||||
Hinode propose plusieurs shortcodes en plus des [éléments Bootstrap]({{% relref "bootstrap-elements" %}}) courants. Consultez la [documentation officielle]({{% param "links.hinode_docs" %}}) pour plus de détails.
|
||||
@@ -20,18 +20,61 @@ Hinode propose plusieurs shortcodes en plus des [éléments Bootstrap]({{% relre
|
||||
|
||||
À titre d'exemple, le shortcode suivant affiche une animation qui se déclenche au survol.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* animation data="gatin.json" auto=false hover=true class="col-6 mx-auto" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Data tables
|
||||
|
||||
À titre d'exemple, le shortcode suivant affiche un tableau réactif utilisant des contrôles avancés.
|
||||
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 MD058 -->{{% /comment %}}
|
||||
{{< example lang="markdown" >}}
|
||||
{{</* table sortable="true" paging="true" searchable="true" pagingOptionPerPage=5 */>}}
|
||||
| # | Heading |
|
||||
|-----|---------|
|
||||
| 1. | Item 1 |
|
||||
| 2. | Item 2 |
|
||||
| 3. | Item 3 |
|
||||
| 4. | Item 4 |
|
||||
| 5. | Item 5 |
|
||||
| 6. | Item 6 |
|
||||
| 7. | Item 7 |
|
||||
| 8. | Item 8 |
|
||||
| 9. | Item 9 |
|
||||
| 10. | Item 10 |
|
||||
| 11. | Item 11 |
|
||||
| 12. | Item 12 |
|
||||
| 13. | Item 13 |
|
||||
| 14. | Item 14 |
|
||||
| 15. | Item 15 |
|
||||
| 16. | Item 16 |
|
||||
| 17. | Item 17 |
|
||||
| 18. | Item 18 |
|
||||
| 19. | Item 19 |
|
||||
| 20. | Item 20 |
|
||||
| 21. | Item 21 |
|
||||
| 22. | Item 22 |
|
||||
| 23. | Item 23 |
|
||||
| 24. | Item 24 |
|
||||
| 25. | Item 25 |
|
||||
| 26. | Item 26 |
|
||||
| 27. | Item 27 |
|
||||
| 28. | Item 28 |
|
||||
| 29. | Item 29 |
|
||||
| 30. | Item 30 |
|
||||
{{</* /table */>}}
|
||||
{{< /example >}}
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Formule (KaTeX)
|
||||
|
||||
À titre d'exemple, le markdown suivant affiche deux formules en utilisant la bibliothèque de composition typographique KaTeX.
|
||||
À titre d’exemple, le markdown suivant affiche deux formules en utilisant la bibliothèque de composition typographique KaTeX.
|
||||
|
||||
{{< example lang="markdown" >}}
|
||||
Voici une formule en ligne $-b \pm \sqrt{b^2 - 4ac} \over 2a$.
|
||||
{{{< example lang="markdown" >}}
|
||||
Voici une formule $-b \pm \sqrt{b^2 - 4ac} \over 2a$ en ligne
|
||||
|
||||
Il s'agit d'une formule non en ligne:
|
||||
|
||||
@@ -43,8 +86,8 @@ $$\forall x \in X, \quad \exists y \leq \epsilon$$
|
||||
|
||||
À titre d'exemple, le shortcode suivant affiche une carte interactive de la ville d'Amsterdam.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* map lat=52.377 long=4.90 zoom=13 popup="Gare centrale d'Amsterdam" popup-lat=52.378062 popup-long=4.900562 */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
42
exampleSite/content/fr/blog/image.md
Normal file
42
exampleSite/content/fr/blog/image.md
Normal file
@@ -0,0 +1,42 @@
|
||||
---
|
||||
author: Mark Dumay
|
||||
title: Images locales et distantes
|
||||
date: 2024-05-19
|
||||
description: Inclure des images responsives provenant de sources locales et de certains fournisseurs de CDN d'images.
|
||||
tags: ["blog"]
|
||||
thumbnail:
|
||||
url: https://assets.imgix.net/examples/bluehat.jpg
|
||||
---
|
||||
|
||||
## Cloudinary
|
||||
|
||||
À titre d'exemple, le shortcode suivant affiche une image avec des coins arrondis et un ratio d'aspect de 21x9.
|
||||
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* image src="https://res.cloudinary.com/demo/dog.webp"
|
||||
ratio="21x9" caption="Image Cloudinary" class="rounded" plain=true */>}}
|
||||
{{< /example >}}
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## ImageKit.io
|
||||
|
||||
À titre d'exemple, le shortcode suivant affiche une image avec des coins arrondis et un ratio d'aspect de 21x9.
|
||||
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* image src="https://ik.imagekit.io/demo/default-image.jpg"
|
||||
ratio="21x9" caption="Image ImageKit.io" class="rounded" anchor="Center" */>}}
|
||||
{{< /example >}}
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Imgix
|
||||
|
||||
À titre d'exemple, le shortcode suivant affiche une image avec des coins arrondis et un ratio d'aspect de 21x9.
|
||||
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* image src="https://assets.imgix.net/examples/bluehat.jpg"
|
||||
ratio="21x9" caption="Image imgix" class="rounded" anchor="Top" */>}}
|
||||
{{< /example >}}
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
44
exampleSite/content/fr/cookies.md
Normal file
44
exampleSite/content/fr/cookies.md
Normal file
@@ -0,0 +1,44 @@
|
||||
---
|
||||
title: Politique de Cookies
|
||||
description: Politique de cookies de gethinode.com
|
||||
date: 2024-09-19
|
||||
layout: docs
|
||||
---
|
||||
{{% comment %}}<!-- markdownlint-disable MD036 -->{{% /comment %}}
|
||||
*Date d'entrée en vigueur : 19-Sep-2024*
|
||||
|
||||
## Que sont les cookies ?
|
||||
|
||||
Cette Politique de Cookies explique ce que sont les cookies et comment nous les utilisons, les types de cookies que nous utilisons, c'est-à-dire les informations que nous collectons à l'aide des cookies, la manière dont ces informations sont utilisées, et comment gérer les paramètres des cookies.
|
||||
|
||||
Les cookies sont de petits fichiers texte utilisés pour stocker de petites quantités d'informations. Ils sont stockés sur votre appareil lorsque le site web se charge dans votre navigateur. Ces cookies nous aident à faire fonctionner le site correctement, à le rendre plus sécurisé, à offrir une meilleure expérience utilisateur, à comprendre comment le site fonctionne et à analyser ce qui fonctionne et ce qui doit être amélioré.
|
||||
|
||||
## Comment utilisons-nous les cookies ?
|
||||
|
||||
Comme la plupart des services en ligne, notre site web utilise des cookies de première partie et de tierce partie pour plusieurs raisons. Les cookies de première partie sont principalement nécessaires pour que le site web fonctionne correctement et ne collectent aucune de vos données personnelles identifiables.
|
||||
|
||||
Les cookies de tierce partie utilisés sur notre site web servent principalement à comprendre les performances du site, à savoir comment vous interagissez avec notre site, à maintenir la sécurité de nos services, à diffuser des publicités pertinentes pour vous, et dans l’ensemble à vous offrir une meilleure expérience utilisateur et à accélérer vos interactions futures avec notre site.
|
||||
|
||||
## Types de cookies que nous utilisons
|
||||
|
||||
{{< cky-audit >}}
|
||||
|
||||
## Gérer les préférences des cookies
|
||||
|
||||
{{< cky-banner >}}
|
||||
|
||||
Vous pouvez modifier vos préférences en matière de cookies à tout moment en cliquant sur le bouton ci-dessus. Cela vous permettra de revoir la bannière de consentement aux cookies et de modifier vos préférences ou de retirer votre consentement immédiatement.
|
||||
|
||||
En plus de cela, les différents navigateurs offrent différentes méthodes pour bloquer et supprimer les cookies utilisés par les sites web. Vous pouvez modifier les paramètres de votre navigateur pour bloquer/supprimer les cookies. Vous trouverez ci-dessous les liens vers les documents de support sur la gestion et la suppression des cookies des principaux navigateurs web.
|
||||
|
||||
Chrome : https://support.google.com/accounts/answer/32050
|
||||
|
||||
Safari : https://support.apple.com/fr-fr/guide/safari/sfri11471/mac
|
||||
|
||||
Firefox : https://support.mozilla.org/fr/kb/effacer-cookies-donnees-sites-firefox
|
||||
|
||||
Internet Explorer : https://support.microsoft.com/fr-fr/topic/supprimer-les-fichiers-cookies-dans-internet-explorer-bca9446f-d873-78de-77ba-d42645fa52fc
|
||||
|
||||
Si vous utilisez un autre navigateur, veuillez consulter les documents d'assistance officiels de votre navigateur.
|
||||
|
||||
*Politique de Cookies générée par {{< link "https://www.cookieyes.com" >}}CookieYes - Générateur de Politique de Cookies{{< /link >}}.*
|
46
exampleSite/content/fr/privacy.md
Normal file
46
exampleSite/content/fr/privacy.md
Normal file
@@ -0,0 +1,46 @@
|
||||
---
|
||||
title: Politique de Confidentialité
|
||||
description: Politique de confidentialité de gethinode.com
|
||||
date: 2024-09-19
|
||||
layout: docs
|
||||
---
|
||||
{{% comment %}}<!-- markdownlint-disable MD036 -->{{% /comment %}}
|
||||
*Date d'entrée en vigueur : 19-Sep-2024*
|
||||
|
||||
Cette Politique de Confidentialité décrit les politiques de gethinode.com concernant la collecte, l'utilisation et la divulgation de vos informations que nous collectons lorsque vous utilisez notre site web (https://gethinode.com, désigné comme le « Service »). En accédant ou en utilisant le Service, vous consentez à la collecte, à l'utilisation et à la divulgation de vos informations conformément à cette Politique de Confidentialité. Si vous ne consentez pas à cela, veuillez ne pas accéder ou utiliser le Service.
|
||||
|
||||
Nous pouvons modifier cette Politique de Confidentialité à tout moment sans préavis préalable et publierons la Politique de Confidentialité révisée sur le Service. La Politique révisée sera effective 180 jours après sa publication sur le Service et votre accès ou utilisation continu(e) du Service après ce délai constituera votre acceptation de la Politique de Confidentialité révisée. Nous vous recommandons donc de consulter régulièrement cette page.
|
||||
|
||||
## Comment nous partageons vos informations
|
||||
|
||||
Nous ne transférerons pas vos informations personnelles à des tiers sans obtenir votre consentement, sauf dans les circonstances limitées décrites ci-dessous :
|
||||
|
||||
- Analyses
|
||||
|
||||
Nous demandons à ces tiers d'utiliser les informations personnelles que nous leur transférons uniquement aux fins pour lesquelles elles ont été transférées et de ne pas les conserver plus longtemps que nécessaire pour accomplir cet objectif.
|
||||
|
||||
Nous pouvons également divulguer vos informations personnelles pour les raisons suivantes : (1) pour se conformer aux lois, règlements, ordonnances judiciaires ou autres procédures légales applicables ; (2) pour faire respecter vos accords avec nous, y compris cette Politique de Confidentialité ; ou (3) pour répondre à des réclamations selon lesquelles votre utilisation du Service viole les droits de tiers. Si le Service ou notre société est fusionné ou acquis par une autre entreprise, vos informations seront l'un des actifs transférés au nouveau propriétaire.
|
||||
|
||||
## Vos droits
|
||||
|
||||
Selon les lois applicables, vous pouvez avoir le droit d'accéder à vos données personnelles, de les rectifier ou de les effacer, de recevoir une copie de vos données personnelles, de restreindre ou de vous opposer au traitement actif de vos données, de nous demander de partager (transférer) vos informations personnelles à une autre entité, de retirer tout consentement que vous nous avez donné pour traiter vos données, un droit de porter plainte auprès d'une autorité statutaire et d'autres droits pertinents en vertu des lois applicables. {{% comment %}}<!-- Pour exercer ces droits, vous pouvez nous écrire à privacy@gethinode.com. Nous répondrons à votre demande conformément aux lois applicables. -->{{% /comment %}}
|
||||
|
||||
Notez que si vous ne nous autorisez pas à collecter ou traiter les informations personnelles requises, ou si vous retirez votre consentement pour traiter celles-ci pour les fins requises, vous pourriez ne pas être en mesure d'accéder ou d'utiliser les services pour lesquels vos informations ont été demandées.
|
||||
|
||||
## Cookies, etc.
|
||||
|
||||
Pour en savoir plus sur la manière dont nous utilisons ces technologies de suivi et vos choix à leur égard, veuillez consulter notre {{< link "cookies" >}}Politique/Paramètres des Cookies{{< /link >}}.
|
||||
|
||||
## Sécurité
|
||||
|
||||
La sécurité de vos informations est importante pour nous et nous utiliserons des mesures de sécurité raisonnables pour prévenir la perte, l'utilisation abusive ou l'altération non autorisée de vos informations sous notre contrôle. Cependant, compte tenu des risques inhérents, nous ne pouvons garantir une sécurité absolue et par conséquent, nous ne pouvons garantir la sécurité des informations que vous nous transmettez ; vous le faites à vos propres risques.
|
||||
|
||||
## Liens vers des tiers et utilisation de vos informations
|
||||
|
||||
Notre Service peut contenir des liens vers d'autres sites web qui ne sont pas exploités par nous. Cette Politique de Confidentialité ne couvre pas la politique de confidentialité et les autres pratiques de tout tiers, y compris tout tiers exploitant tout site ou service qui pourrait être accessible via un lien sur le Service. Nous vous conseillons fortement de consulter la politique de confidentialité de chaque site que vous visitez. Nous n'avons aucun contrôle sur le contenu, les politiques de confidentialité ou les pratiques des sites ou services de tiers et déclinons toute responsabilité à cet égard.
|
||||
|
||||
{{% comment %}}<!-- ## Responsable des plaintes / Protection des données
|
||||
|
||||
Si vous avez des questions ou des préoccupations concernant le traitement de vos informations dont nous disposons, vous pouvez nous envoyer un e-mail à privacy@gethinode.com. Nous répondrons à vos préoccupations conformément aux lois applicables. -->{{% /comment %}}
|
||||
|
||||
*Politique de Confidentialité générée avec {{< link "https://www.cookieyes.com" >}}CookieYes{{< /link >}}.*
|
92
exampleSite/content/nl/blog/components.md
Normal file
92
exampleSite/content/nl/blog/components.md
Normal file
@@ -0,0 +1,92 @@
|
||||
---
|
||||
author: Mark Dumay
|
||||
title: Componenten
|
||||
date: 2023-09-23
|
||||
description: Gebruik shortcodes om diverse componenten vanuit een externe softwarebibliotheek toe te voegen.
|
||||
tags: ["bootstrap", "shortcode"]
|
||||
thumbnail:
|
||||
url: img/puzzle.jpg
|
||||
author: Ryoji Iwata
|
||||
authorURL: https://unsplash.com/@ryoji__iwata
|
||||
origin: Unsplash
|
||||
originURL: https://unsplash.com/photos/5siQcvSxCP8
|
||||
modules: ["leaflet", "lottie", "simple-datatables"]
|
||||
---
|
||||
|
||||
Hinode bevat meerdere shortcodes naast de generieke Bootstrap elementen. Zie de [officiële documentatie]({{% param "links.hinode_docs" %}}) voor meer informatie.
|
||||
|
||||
## Animatie
|
||||
|
||||
Het volgende voorbeeld gebruikt een shortcode om een animatie te tonen, die afspeelt zodra je er met de muis overheen beweegt.
|
||||
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* animation data="gatin.json" auto=false hover=true class="col-6 mx-auto" */>}}
|
||||
{{< /example >}}
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
||||
|
||||
## Gegevenstabellen
|
||||
|
||||
Het volgende voorbeeld gebruikt een shortcode om een responsieve tabel met geavanceerde mogelijkheden te tonen.
|
||||
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 MD058 -->{{% /comment %}}
|
||||
{{< example lang="markdown" >}}
|
||||
{{</* table sortable="true" paging="true" searchable="true" pagingOptionPerPage=5 */>}}
|
||||
| # | Kop |
|
||||
|-----|---------|
|
||||
| 1. | Item 1 |
|
||||
| 2. | Item 2 |
|
||||
| 3. | Item 3 |
|
||||
| 4. | Item 4 |
|
||||
| 5. | Item 5 |
|
||||
| 6. | Item 6 |
|
||||
| 7. | Item 7 |
|
||||
| 8. | Item 8 |
|
||||
| 9. | Item 9 |
|
||||
| 10. | Item 10 |
|
||||
| 11. | Item 11 |
|
||||
| 12. | Item 12 |
|
||||
| 13. | Item 13 |
|
||||
| 14. | Item 14 |
|
||||
| 15. | Item 15 |
|
||||
| 16. | Item 16 |
|
||||
| 17. | Item 17 |
|
||||
| 18. | Item 18 |
|
||||
| 19. | Item 19 |
|
||||
| 20. | Item 20 |
|
||||
| 21. | Item 21 |
|
||||
| 22. | Item 22 |
|
||||
| 23. | Item 23 |
|
||||
| 24. | Item 24 |
|
||||
| 25. | Item 25 |
|
||||
| 26. | Item 26 |
|
||||
| 27. | Item 27 |
|
||||
| 28. | Item 28 |
|
||||
| 29. | Item 29 |
|
||||
| 30. | Item 30 |
|
||||
{{</* /table */>}}
|
||||
{{< /example >}}
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 MD058 -->{{% /comment %}}
|
||||
|
||||
## Formule (KaTeX)
|
||||
|
||||
Het volgende voorbeeld gebruikt Markdown om twee formules met behulp van KaTeX op de server te genereren.
|
||||
|
||||
{{< example lang="markdown" >}}
|
||||
Dit is een inline $-b \pm \sqrt{b^2 - 4ac} \over 2a$ formule
|
||||
|
||||
Dit is geen inline formule:
|
||||
|
||||
$$x = a_0 + \frac{1}{a_1 + \frac{1}{a_2 + \frac{1}{a_3 + a_4}}}$$
|
||||
$$\forall x \in X, \quad \exists y \leq \epsilon$$
|
||||
{{< /example >}}
|
||||
|
||||
## Kaart
|
||||
|
||||
Het volgende voorbeeld gebruikt een shortcode om een interactieve kaart van Amsterdam te tonen.
|
||||
|
||||
{{% comment %}}<!-- markdownlint-disable MD037 -->{{% /comment %}}
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* map lat=52.377 long=4.90 zoom=13 popup="Amsterdam Central Station" popup-lat=52.378062 popup-long=4.900562 */>}}
|
||||
{{< /example >}}
|
||||
{{% comment %}}<!-- markdownlint-enable MD037 -->{{% /comment %}}
|
63
exampleSite/data/server.toml
Normal file
63
exampleSite/data/server.toml
Normal file
@@ -0,0 +1,63 @@
|
||||
# toml-docs-start server-config
|
||||
[[headers]]
|
||||
for = "/**"
|
||||
[headers.values]
|
||||
Strict-Transport-Security = "max-age=31536000; includeSubDomains; preload"
|
||||
X-Content-Type-Options = "nosniff"
|
||||
X-XSS-Protection = "1; mode=block"
|
||||
X-Frame-Options = "SAMEORIGIN"
|
||||
Referrer-Policy = "strict-origin"
|
||||
Permissions-Policy = """\
|
||||
geolocation=(), \
|
||||
midi=(), \
|
||||
sync-xhr=(), \
|
||||
microphone=(), \
|
||||
camera=(), \
|
||||
magnetometer=(), \
|
||||
gyroscope=(), \
|
||||
fullscreen=(), \
|
||||
payment=() \
|
||||
"""
|
||||
cache-control = """\
|
||||
max-age=0, \
|
||||
no-cache, \
|
||||
no-store, \
|
||||
must-revalidate \
|
||||
"""
|
||||
Access-Control-Allow-Origin = "*"
|
||||
Content-Security-Policy = """\
|
||||
default-src 'none'; \
|
||||
script-src 'self'; \
|
||||
font-src 'self'; \
|
||||
connect-src 'self'; \
|
||||
img-src 'self'; \
|
||||
style-src 'self'; \
|
||||
base-uri 'self'; \
|
||||
object-src 'none'; \
|
||||
form-action 'self'; \
|
||||
manifest-src 'self'; \
|
||||
media-src 'self' \
|
||||
"""
|
||||
# toml-docs-end server-config
|
||||
|
||||
# toml-docs-start server-custom-404
|
||||
[[redirects]]
|
||||
from = '/fr/*'
|
||||
to = '/fr/404.html'
|
||||
status = 404
|
||||
|
||||
[[redirects]]
|
||||
from = '/nl/*'
|
||||
to = '/nl/404.html'
|
||||
status = 404
|
||||
|
||||
[[redirects]]
|
||||
from = '/en/*'
|
||||
to = '/en/404.html'
|
||||
status = 404
|
||||
|
||||
[[redirects]] # Default language should be last.
|
||||
from = '/*'
|
||||
to = '/en/404.html'
|
||||
status = 404
|
||||
# toml-docs-end server-custom-404
|
@@ -2,3 +2,6 @@ module github.com/gethinode/hinode/exampleSite
|
||||
|
||||
go 1.19
|
||||
|
||||
require (
|
||||
github.com/gethinode/mod-cookieyes/v2 v2.2.2 // indirect
|
||||
)
|
||||
|
@@ -1,14 +1,2 @@
|
||||
github.com/gethinode/hinode v0.22.5 h1:zpjSDgWQVbq4BjPduxwexQB18gawFeinzPkaRRTs2Tg=
|
||||
github.com/gethinode/hinode v0.22.5/go.mod h1:hsskrlBRnTbpCjrDtGbK8C1VYGML7ezHtCDGDiYL2mQ=
|
||||
github.com/gethinode/mod-bootstrap v1.2.2 h1:Q8E04OKWr9owk7nhQ/NBukUgSFhsECxZsOLEaf5oeiQ=
|
||||
github.com/gethinode/mod-bootstrap v1.2.2/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
|
||||
github.com/gethinode/mod-flexsearch v1.9.0 h1:AE+w7QeZTxh36JNTG+CASDLxaqlCZKn+EUD6ulnPGak=
|
||||
github.com/gethinode/mod-flexsearch v1.9.0/go.mod h1:L8hrnpupx27cez2ObMX8gWnhbW6qss4HGH1Ea4UaBRQ=
|
||||
github.com/gethinode/mod-fontawesome v1.8.1 h1:iyvULrpaGizQoI5Vl9WjFYcMGWefdyG90NGK2UKax+k=
|
||||
github.com/gethinode/mod-fontawesome v1.8.1/go.mod h1:xBKsZH3WJtMOItZVlp9SbO51uaBy6IbvUZSKpNu3b6Y=
|
||||
github.com/gethinode/mod-katex v1.0.5 h1:AVhcTINYory0ygChQERf8PcyJkbT1oqhmLRF6ESnWOY=
|
||||
github.com/gethinode/mod-katex v1.0.5/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
|
||||
github.com/gethinode/mod-leaflet v1.0.0 h1:HdnWafOGkkK1hYGfqLYF3pp9dAFS/caxlzML9sO1rCc=
|
||||
github.com/gethinode/mod-leaflet v1.0.0/go.mod h1:Ei0x9WiL7Dbi4JeG6yI1CE63bT1QJ8sKi67Jea1wFSE=
|
||||
github.com/gethinode/mod-lottie v1.4.3 h1:IKZO8a4yQyPKUwZ6POsZRIH/B++yEzXDe5HxrFF79KA=
|
||||
github.com/gethinode/mod-lottie v1.4.3/go.mod h1:nt4wLnDFIhjBGRMuQJJ2bH80VREpbcsBUsdO6uWXjLs=
|
||||
github.com/gethinode/mod-cookieyes/v2 v2.2.2 h1:VNIdbZnzXw/0Jito/IcDNqQ9yRYLCGrDwyrMqtSJgE4=
|
||||
github.com/gethinode/mod-cookieyes/v2 v2.2.2/go.mod h1:tULb7D7CoTycGUyL7ryqHJKaX11XuL2SN+XwP7/DI0Y=
|
||||
|
@@ -1,18 +1,9 @@
|
||||
github.com/airbnb/lottie-web v5.12.2+incompatible h1:Ldogtlhiucf7mMsgisyxSBY0qunV44+lpa9Icy2KoQc=
|
||||
github.com/airbnb/lottie-web v5.12.2+incompatible/go.mod h1:nTss557UK9FGnp8QYlCMO29tjUHwbdAHG/DprbGfHGE=
|
||||
github.com/gethinode/hinode v0.22.5 h1:zpjSDgWQVbq4BjPduxwexQB18gawFeinzPkaRRTs2Tg=
|
||||
github.com/gethinode/hinode v0.22.5/go.mod h1:hsskrlBRnTbpCjrDtGbK8C1VYGML7ezHtCDGDiYL2mQ=
|
||||
github.com/gethinode/mod-flexsearch v1.8.1 h1:xwPvmmxd8Tdyxp8/rnd9KRGqIDtZs/YwAQJ1i9oQMiM=
|
||||
github.com/gethinode/mod-flexsearch v1.8.1/go.mod h1:L8hrnpupx27cez2ObMX8gWnhbW6qss4HGH1Ea4UaBRQ=
|
||||
github.com/gethinode/mod-fontawesome v1.8.0 h1:YEuCmvCdzcemF1eFK35Wnp1asKKO3/xbxGArnjq6PRY=
|
||||
github.com/gethinode/mod-fontawesome v1.8.0/go.mod h1:uvuC2YL8mdXNp6NRzFOu4TWsHvtY9AZ8YxJkF23/M/8=
|
||||
github.com/gethinode/mod-leaflet v0.4.0 h1:Xc6c1UTf4m1saQLFfFWT5sEpwj25xVGuS8csGC82UUI=
|
||||
github.com/gethinode/mod-leaflet v0.4.0/go.mod h1:yr+bUKAstifdB16mbYh69OayAmgPOlNUubAmVn5eL2M=
|
||||
github.com/gethinode/mod-lottie v1.4.1 h1:RzCjYsxFPqyBsYAcdPeUP0rvF+hD9eEl7NrxuaRiKQQ=
|
||||
github.com/gethinode/mod-lottie v1.4.1/go.mod h1:QjKlEmYbekrNGwa9EdFlPcXxwWWcraJUQ6xIL+syA60=
|
||||
github.com/gethinode/mod-utils v1.0.2 h1:0b3i+/bBHY1Td9N6khDbL1nf3d5HGc4QzI4BbEWHoU4=
|
||||
github.com/gethinode/mod-utils v1.0.2/go.mod h1:ONJm3pHCq7nvaPNjusLZNCeCbhOhSBH4HVKHwK1FdYE=
|
||||
github.com/nextapps-de/flexsearch v0.0.0-20240108021025-afd75f742f22 h1:re7L8FxbXQpnX8BgzkdUnDpsUmloGNyLmiy2ZCln8pg=
|
||||
github.com/nextapps-de/flexsearch v0.0.0-20240108021025-afd75f742f22/go.mod h1:5GdMfPAXzbA2gXBqTjC6l27kioSYzHlqDMh0+wyx7sU=
|
||||
github.com/twbs/bootstrap v5.3.2+incompatible h1:tuiO5acc6xnZUR77Sbi5aKWXxjYxbmsSbJwYrhAKoQQ=
|
||||
github.com/twbs/bootstrap v5.3.2+incompatible/go.mod h1:fZTSrkpSf0/HkL0IIJzvVspTt1r9zuf7XlZau8kpcY0=
|
||||
github.com/gethinode/mod-cookieyes v1.0.2 h1:WL9sjpYKjkV+jRKIrm6H82UpthQjFksvKGptW6HD/QU=
|
||||
github.com/gethinode/mod-cookieyes v1.0.2/go.mod h1:VrBUKm5apop6KIb+R8eRqvlf3AAPnv5aMajL0RorIjY=
|
||||
github.com/gethinode/mod-cookieyes/v2 v2.0.3 h1:o5PAAOjx8baRcSkhTAQuZ+hX9cK8oWjeC3sYxt1DT2c=
|
||||
github.com/gethinode/mod-cookieyes/v2 v2.0.4 h1:QgYSD3S23351e7xEeQb+Mon+e+I6RbnnrTyvpxBST1A=
|
||||
github.com/gethinode/mod-cookieyes/v2 v2.0.4/go.mod h1:tULb7D7CoTycGUyL7ryqHJKaX11XuL2SN+XwP7/DI0Y=
|
||||
github.com/gethinode/mod-cookieyes/v2 v2.1.2 h1:hzGCbRbpNAVkLr+jFWpAQaXHG0lgK+KgIpaZYsI1J+U=
|
||||
github.com/gethinode/mod-cookieyes/v2 v2.1.2/go.mod h1:tULb7D7CoTycGUyL7ryqHJKaX11XuL2SN+XwP7/DI0Y=
|
||||
|
@@ -22,6 +22,7 @@
|
||||
"iframe",
|
||||
"img",
|
||||
"input",
|
||||
"ins",
|
||||
"label",
|
||||
"li",
|
||||
"link",
|
||||
@@ -142,6 +143,8 @@
|
||||
"carousel-item",
|
||||
"checkbox",
|
||||
"chroma",
|
||||
"cky-audit-table-element",
|
||||
"cky-banner-element",
|
||||
"col",
|
||||
"col-10",
|
||||
"col-12",
|
||||
@@ -313,7 +316,7 @@
|
||||
"mt-5",
|
||||
"mt-auto",
|
||||
"mt-md-0",
|
||||
"multi-docs-collapse-15",
|
||||
"multi-docs-collapse-41",
|
||||
"multi-file-collapse-1",
|
||||
"mx-auto",
|
||||
"mx-md-0",
|
||||
@@ -493,15 +496,15 @@
|
||||
"accordéon",
|
||||
"alert",
|
||||
"alerte",
|
||||
"animatie",
|
||||
"animation",
|
||||
"badge",
|
||||
"barre-de-navigation",
|
||||
"blog",
|
||||
"body-docs-collapse-15",
|
||||
"body-docs-collapse-41",
|
||||
"body-file-collapse-1",
|
||||
"bouton",
|
||||
"breadcrumb",
|
||||
"btn-webshare",
|
||||
"button",
|
||||
"button-group",
|
||||
"card",
|
||||
@@ -515,6 +518,9 @@
|
||||
"collapse",
|
||||
"collapse-1",
|
||||
"command-prompt",
|
||||
"comment-nous-partageons-vos-informations",
|
||||
"comment-utilisons-nous-les-cookies-",
|
||||
"cookies-etc",
|
||||
"custom-activity",
|
||||
"data-tables",
|
||||
"docs",
|
||||
@@ -554,34 +560,42 @@
|
||||
"fichier",
|
||||
"fil-dariane",
|
||||
"file",
|
||||
"footer-docs-collapse-15",
|
||||
"footer-docs-collapse-41",
|
||||
"footer-file-collapse-1",
|
||||
"formula-katex",
|
||||
"formule-katex",
|
||||
"gegevenstabellen",
|
||||
"groupe-de-boutons",
|
||||
"groupe-de-cartes",
|
||||
"gérer-les-préférences-des-cookies",
|
||||
"how-do-we-use-cookies",
|
||||
"how-we-share-your-information",
|
||||
"icon",
|
||||
"image",
|
||||
"imagekitio",
|
||||
"imgix",
|
||||
"indicateur-de-chargement",
|
||||
"infobulle",
|
||||
"ins",
|
||||
"invite-de-commandes",
|
||||
"kaart",
|
||||
"language-selector",
|
||||
"leaflet-map-0",
|
||||
"lien",
|
||||
"liens-vers-des-tiers-et-utilisation-de-vos-informations",
|
||||
"link",
|
||||
"lottie-animation-0",
|
||||
"manage-cookie-preferences",
|
||||
"map",
|
||||
"mark",
|
||||
"nav",
|
||||
"nav-0",
|
||||
"nav-0-0",
|
||||
"nav-0-1",
|
||||
"nav-0-2",
|
||||
"nav-0-btn-0",
|
||||
"nav-0-btn-1",
|
||||
"nav-0-btn-2",
|
||||
"nav-nav-0",
|
||||
"navbar",
|
||||
"navbar-0-collapse",
|
||||
"navbar-mode",
|
||||
@@ -594,12 +608,16 @@
|
||||
"projects",
|
||||
"projets",
|
||||
"publication",
|
||||
"que-sont-les-cookies-",
|
||||
"release",
|
||||
"réduire",
|
||||
"security",
|
||||
"spinner",
|
||||
"sub",
|
||||
"sup",
|
||||
"sécurité",
|
||||
"table",
|
||||
"third-party-links--use-of-your-information",
|
||||
"timeline",
|
||||
"toast",
|
||||
"toast-container",
|
||||
@@ -609,9 +627,13 @@
|
||||
"toast-message-email-4",
|
||||
"toc-collapse",
|
||||
"tooltip",
|
||||
"types-de-cookies-que-nous-utilisons",
|
||||
"types-of-cookies-we-use",
|
||||
"video",
|
||||
"vimeo",
|
||||
"youtube"
|
||||
"vidéo",
|
||||
"vos-droits",
|
||||
"what-are-cookies",
|
||||
"your-rights"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
80
exampleSite/layouts/_default/baseof.html
Normal file
80
exampleSite/layouts/_default/baseof.html
Normal file
@@ -0,0 +1,80 @@
|
||||
{{- /* Set version-aware sidebar menu */ -}}
|
||||
{{- $version := partial "utilities/GetVersion.html" (dict "page" . "base" true) -}}
|
||||
{{- $.Scratch.Set "version" $version -}}
|
||||
{{ with partial "utilities/GetMenu" (dict "page" . "version" $version) }}{{ $.Scratch.Set "sidebar" . }}{{ end }}
|
||||
|
||||
{{- /* Validate if current version is latest */ -}}
|
||||
{{- if and site.Params.docs.checkVersion $version -}}
|
||||
{{- if ne $version "latest" -}}
|
||||
{{- if partial "utilities/IsOlder" (dict "current" $version) -}}
|
||||
{{- $.Scratch.Set "pageAlertMsg" (T "newerVersionAlert" site.Title) -}}
|
||||
{{- $.Scratch.Set "pageAlertURL" (or site.Params.docs.latestURL site.baseURL) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* Initialize module configuration */ -}}
|
||||
{{- $modules := partialCached "utilities/InitModules.html" . -}}
|
||||
{{- $.Scratch.Set "modules" $modules -}}
|
||||
|
||||
{{- $fullCover := or (or (and .IsHome .Site.Params.home.fullCover) .Page.Params.fullCover) .Site.Params.main.footerBelowFold }}
|
||||
{{- $.Scratch.Set "fullCover" $fullCover -}}
|
||||
|
||||
{{- /* Define section headings */ -}}
|
||||
{{- $loading := "" -}}
|
||||
{{- if $fullCover }}{{ $loading = .Site.Params.main.loading }}{{ end -}}
|
||||
{{ $sections := partial "utilities/GetSections.html" (dict "page" . "loading" $loading) }}
|
||||
{{- $.Scratch.Set "sections" $sections -}}
|
||||
|
||||
{{- /* Define main breakpoint */ -}}
|
||||
{{- $.Scratch.Set "breakpoint" (partialCached "utilities/GetBreakpoint.html" .) }}
|
||||
|
||||
{{- /* Define base URL */ -}}
|
||||
{{ $lang := site.LanguageCode | default site.Language.Lang }}
|
||||
{{ $.Scratch.Set "baseURL" (strings.TrimSuffix (printf "%s/" $lang) site.Home.RelPermalink) }}
|
||||
|
||||
<!doctype html>
|
||||
<html lang="{{ .Site.Language.Lang }}" class="no-js">
|
||||
<head>
|
||||
{{- partial "footer/scripts.html" (dict "page" . "type" "critical") -}}
|
||||
{{ block "head" . }}{{ end -}}
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="d-flex flex-column min-vh-100">
|
||||
<div class="d-flex flex-column {{ if $fullCover }} fullscreen{{ end }}{{ if .IsHome }} {{ .Site.Params.home.style }}{{ end }}">
|
||||
{{- partial "assets/navbar.html" (dict
|
||||
"page" .
|
||||
"fixed" site.Params.navigation.fixed
|
||||
"overlay" site.Params.navigation.overlay
|
||||
"overlayMode" site.Params.navigation.overlayMode
|
||||
"color" site.Params.navigation.color
|
||||
"style" (default "light" site.Params.navigation.style)
|
||||
"size" (default "md" site.Params.navigation.size))
|
||||
-}}
|
||||
<div class="main-content">
|
||||
{{ block "featured" . }}{{ end -}}
|
||||
</div>
|
||||
{{ if .Site.Params.main.footerBelowFold }}
|
||||
{{ block "main" . }}{{ end -}}
|
||||
{{ end }}
|
||||
</div>
|
||||
|
||||
{{ if not .Site.Params.main.footerBelowFold }}
|
||||
{{ block "main" . }}{{ end -}}
|
||||
{{- partial "footer/social.html" . -}}
|
||||
{{- partial "footer/footer.html" . -}}
|
||||
{{ end }}
|
||||
</div>
|
||||
|
||||
{{ if .Site.Params.main.footerBelowFold }}
|
||||
{{- partial "footer/social.html" . -}}
|
||||
{{- partial "footer/footer.html" . -}}
|
||||
{{ end }}
|
||||
|
||||
{{- partial "footer/toast-container.html" . -}}
|
||||
{{- partial "assets/symbols.html" . -}}
|
||||
{{- partialCached "footer/scripts.html" (dict "page" .) -}}
|
||||
{{- partial "footer/scripts.html" (dict "page" . "type" "optional") -}}
|
||||
</body>
|
||||
</html>
|
15
exampleSite/layouts/partials/footer/footer.html
Normal file
15
exampleSite/layouts/partials/footer/footer.html
Normal file
@@ -0,0 +1,15 @@
|
||||
<footer class="container-fluid footer text-center p-3">
|
||||
<div class="container-xxl text-center">
|
||||
<small>
|
||||
{{- $copyright := printf "%s © %s %s %s." (T "copyright") (dateFormat "2006" now) .Site.Title (T "rights") }}
|
||||
{{ cond (gt (len .Site.Copyright) 0) .Site.Copyright $copyright }}
|
||||
{{ .Site.Params.footer.license | safeHTML }} |
|
||||
{{ partial "assets/link.html" (dict "destination" "/en/privacy" "text" (T "privacy") "class" "link-bg-footer" "page" .Page) }} |
|
||||
{{ partial "assets/link.html" (dict "destination" "/en/cookies" "text" (T "cookies") "class" "link-bg-footer" "page" .Page) }} |
|
||||
{{ if .Site.Params.main.endorse }}
|
||||
{{ $link := partial "assets/link.html" (dict "destination" (index site.Params.links "hinode") "text" "Hinode" "class" "link-bg-footer" "page" .Page) }}
|
||||
{{ T "poweredBy" $link | safeHTML }}
|
||||
{{ end }}
|
||||
</small>
|
||||
</div>
|
||||
</footer>
|
12
go.mod
12
go.mod
@@ -5,13 +5,15 @@ go 1.19
|
||||
require (
|
||||
github.com/airbnb/lottie-web v5.12.2+incompatible // indirect
|
||||
github.com/gethinode/mod-bootstrap v1.3.1 // indirect
|
||||
github.com/gethinode/mod-flexsearch/v2 v2.0.1 // indirect
|
||||
github.com/gethinode/mod-csp v1.0.5 // indirect
|
||||
github.com/gethinode/mod-flexsearch/v2 v2.0.2 // indirect
|
||||
github.com/gethinode/mod-fontawesome v1.10.0 // indirect
|
||||
github.com/gethinode/mod-google-analytics v1.1.5 // indirect
|
||||
github.com/gethinode/mod-katex v1.1.2 // indirect
|
||||
github.com/gethinode/mod-leaflet v1.1.1 // indirect
|
||||
github.com/gethinode/mod-lottie v1.5.8 // indirect
|
||||
github.com/gethinode/mod-simple-datatables v1.0.10 // indirect
|
||||
github.com/gethinode/mod-utils/v2 v2.7.0 // indirect
|
||||
github.com/gethinode/mod-leaflet v1.2.0 // indirect
|
||||
github.com/gethinode/mod-lottie v1.5.12 // indirect
|
||||
github.com/gethinode/mod-simple-datatables v1.1.4 // indirect
|
||||
github.com/gethinode/mod-utils/v2 v2.8.4 // indirect
|
||||
github.com/nextapps-de/flexsearch v0.0.0-20240501124520-961c3ae84a87 // indirect
|
||||
github.com/twbs/bootstrap v5.3.3+incompatible // indirect
|
||||
)
|
||||
|
66
go.sum
66
go.sum
@@ -24,6 +24,18 @@ github.com/gethinode/mod-bootstrap v1.3.0 h1:UxNmXgXo7gA8C8z1ar47+tSccmKYpaYBBN+
|
||||
github.com/gethinode/mod-bootstrap v1.3.0/go.mod h1:CL9IDot6nbXIWJYE/KxfsTdYYEJIGL17BXbAYPn+wVQ=
|
||||
github.com/gethinode/mod-bootstrap v1.3.1 h1:ZUX72St0WZ5tyXpEPBJlayX/dmCH3cGErzsozkUKCok=
|
||||
github.com/gethinode/mod-bootstrap v1.3.1/go.mod h1:CL9IDot6nbXIWJYE/KxfsTdYYEJIGL17BXbAYPn+wVQ=
|
||||
github.com/gethinode/mod-csp v1.0.0 h1:Obp0MVMBjIPZbKDh6Ejl5pImDG7yERMLf2or9UVnwPA=
|
||||
github.com/gethinode/mod-csp v1.0.0/go.mod h1:Nb22QMicoUHgZQUKP5TCgVrSI8K3KU7jLuLBShmotjg=
|
||||
github.com/gethinode/mod-csp v1.0.1 h1:IUUwPc41UNw7DAFuJ75nNPzhkPExenxXU7susdLaxdQ=
|
||||
github.com/gethinode/mod-csp v1.0.1/go.mod h1:Nb22QMicoUHgZQUKP5TCgVrSI8K3KU7jLuLBShmotjg=
|
||||
github.com/gethinode/mod-csp v1.0.2 h1:KX8EeoCGbHhGSo5r0YIa9BmPZ6S6v7L9CChTejREkK4=
|
||||
github.com/gethinode/mod-csp v1.0.2/go.mod h1:Nb22QMicoUHgZQUKP5TCgVrSI8K3KU7jLuLBShmotjg=
|
||||
github.com/gethinode/mod-csp v1.0.3 h1:tRmnuVZ3UpCc9HR8qsAwbU0OJ/UsNVSbse0SZuwGcCg=
|
||||
github.com/gethinode/mod-csp v1.0.3/go.mod h1:Nb22QMicoUHgZQUKP5TCgVrSI8K3KU7jLuLBShmotjg=
|
||||
github.com/gethinode/mod-csp v1.0.4 h1:ChI+DMkkkCF5tKs+K9VSqdsXPS01/QANQiJ2LoJp10o=
|
||||
github.com/gethinode/mod-csp v1.0.4/go.mod h1:Nb22QMicoUHgZQUKP5TCgVrSI8K3KU7jLuLBShmotjg=
|
||||
github.com/gethinode/mod-csp v1.0.5 h1:Ypdzw26iQ9/4sAgHvwFY1mg/EMoLrcI2knvVmHq2Ffs=
|
||||
github.com/gethinode/mod-csp v1.0.5/go.mod h1:Nb22QMicoUHgZQUKP5TCgVrSI8K3KU7jLuLBShmotjg=
|
||||
github.com/gethinode/mod-flexsearch v1.0.1 h1:FJkRsUzSnQTXl3MWCigT4E6vfff870UWTnkGqaDGIhA=
|
||||
github.com/gethinode/mod-flexsearch v1.0.1/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
|
||||
github.com/gethinode/mod-flexsearch v1.1.0 h1:7BCMyQDlYlskNXuazt8Jg/jg9WREexu2xVkYqThkAX4=
|
||||
@@ -74,6 +86,8 @@ github.com/gethinode/mod-flexsearch v1.12.1 h1:clkGUWaNPe9Dt/66Apy7oH9NwVQfnD6Op
|
||||
github.com/gethinode/mod-flexsearch v1.12.1/go.mod h1:L8hrnpupx27cez2ObMX8gWnhbW6qss4HGH1Ea4UaBRQ=
|
||||
github.com/gethinode/mod-flexsearch/v2 v2.0.1 h1:5unGUSb1tX1LBtKygnLfdt7CnVJuFKSt6VXiKRxdojc=
|
||||
github.com/gethinode/mod-flexsearch/v2 v2.0.1/go.mod h1:d7MMkVlz0l6cEk76e0mkveEsDxGfu5Sv+HUIhoGguhE=
|
||||
github.com/gethinode/mod-flexsearch/v2 v2.0.2 h1:5FkLbjORwKvK544H/yaAltyIB7eptRPxxh5VcfDDeqM=
|
||||
github.com/gethinode/mod-flexsearch/v2 v2.0.2/go.mod h1:d7MMkVlz0l6cEk76e0mkveEsDxGfu5Sv+HUIhoGguhE=
|
||||
github.com/gethinode/mod-fontawesome v1.0.2 h1:ZSK6D20/w4y5GnfYfTBB58uHD0ChIfkpKfRGwioS9rg=
|
||||
github.com/gethinode/mod-fontawesome v1.0.2/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||
github.com/gethinode/mod-fontawesome v1.1.0 h1:rsDzUI+3ZlS/do2ff3ne8/z3KwHeysmuA+WsXlumXXk=
|
||||
@@ -118,6 +132,24 @@ github.com/gethinode/mod-fontawesome v1.9.1 h1:cQk84vriqffM4fuUUoM9j3SSD+3ppeW2j
|
||||
github.com/gethinode/mod-fontawesome v1.9.1/go.mod h1:xBKsZH3WJtMOItZVlp9SbO51uaBy6IbvUZSKpNu3b6Y=
|
||||
github.com/gethinode/mod-fontawesome v1.10.0 h1:Izs2AKc+YVBa1TywcH54OKLTNCUMXRoFIqOs+n0FgOo=
|
||||
github.com/gethinode/mod-fontawesome v1.10.0/go.mod h1:xBKsZH3WJtMOItZVlp9SbO51uaBy6IbvUZSKpNu3b6Y=
|
||||
github.com/gethinode/mod-google-analytics v1.0.0 h1:fly42RQ69bdyJe8WFefsBIo7WMIXkd3wZn32kyAr4h4=
|
||||
github.com/gethinode/mod-google-analytics v1.0.0/go.mod h1:dl628cFozpCvoIMCiV7ujzQipjxcm3eatXrSfLPWNII=
|
||||
github.com/gethinode/mod-google-analytics v1.0.1 h1:zbmOdnAhhFCA7qWw7fnR46biWhqW2r06sIaTWyhB5R0=
|
||||
github.com/gethinode/mod-google-analytics v1.0.1/go.mod h1:dl628cFozpCvoIMCiV7ujzQipjxcm3eatXrSfLPWNII=
|
||||
github.com/gethinode/mod-google-analytics v1.0.2 h1:ljrAYdAPqiQg6rdnL6Je8zLK6mhlXoTGJ/vGtIUpX+w=
|
||||
github.com/gethinode/mod-google-analytics v1.0.2/go.mod h1:dl628cFozpCvoIMCiV7ujzQipjxcm3eatXrSfLPWNII=
|
||||
github.com/gethinode/mod-google-analytics v1.0.3 h1:QUm4AeBR6D9cLx26F6Cy5qQvQe/19c2wTJAqxmCfAq4=
|
||||
github.com/gethinode/mod-google-analytics v1.0.3/go.mod h1:dl628cFozpCvoIMCiV7ujzQipjxcm3eatXrSfLPWNII=
|
||||
github.com/gethinode/mod-google-analytics v1.1.1 h1:XzMXd6nBDl5Lj1Q5pd8MWtE87FI/vRCsUAkAvfuXDxE=
|
||||
github.com/gethinode/mod-google-analytics v1.1.1/go.mod h1:dl628cFozpCvoIMCiV7ujzQipjxcm3eatXrSfLPWNII=
|
||||
github.com/gethinode/mod-google-analytics v1.1.2 h1:mcoqaRRorut+PxYxJnOEMfKIlVIIOd6vxKhuEYTwFzw=
|
||||
github.com/gethinode/mod-google-analytics v1.1.2/go.mod h1:dl628cFozpCvoIMCiV7ujzQipjxcm3eatXrSfLPWNII=
|
||||
github.com/gethinode/mod-google-analytics v1.1.3 h1:24qxV5vKIex3zSdow+5r0o8rox1lrO31oGi0/XusBy4=
|
||||
github.com/gethinode/mod-google-analytics v1.1.3/go.mod h1:dl628cFozpCvoIMCiV7ujzQipjxcm3eatXrSfLPWNII=
|
||||
github.com/gethinode/mod-google-analytics v1.1.4 h1:GkLzbSdVIMLWSQ4VOSaJZIKyofmVCzueiuiGc29jQOM=
|
||||
github.com/gethinode/mod-google-analytics v1.1.4/go.mod h1:dl628cFozpCvoIMCiV7ujzQipjxcm3eatXrSfLPWNII=
|
||||
github.com/gethinode/mod-google-analytics v1.1.5 h1:wlOcgwNEJAnIQmPJIo3cT06xnr1dxN/ydUIztoC/7rM=
|
||||
github.com/gethinode/mod-google-analytics v1.1.5/go.mod h1:dl628cFozpCvoIMCiV7ujzQipjxcm3eatXrSfLPWNII=
|
||||
github.com/gethinode/mod-katex v1.0.0 h1:me/3dIIZBkfk1mRIFt8QiAGYwYDoSG5bc2hHRtIutFc=
|
||||
github.com/gethinode/mod-katex v1.0.0/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
|
||||
github.com/gethinode/mod-katex v1.0.1 h1:809QUztxmKgMNchU+v03iMO7Ma+ISc3ZzhXYauc21rs=
|
||||
@@ -162,6 +194,8 @@ github.com/gethinode/mod-leaflet v1.1.0 h1:FXzPCic5XmUluxQ6e7LYUhhLnxuQOBwry8qjG
|
||||
github.com/gethinode/mod-leaflet v1.1.0/go.mod h1:Ei0x9WiL7Dbi4JeG6yI1CE63bT1QJ8sKi67Jea1wFSE=
|
||||
github.com/gethinode/mod-leaflet v1.1.1 h1:AIHR4k8SjmeoZxtjLgSS6/N3jKeZNZGdZTgu/7MwP4c=
|
||||
github.com/gethinode/mod-leaflet v1.1.1/go.mod h1:Ei0x9WiL7Dbi4JeG6yI1CE63bT1QJ8sKi67Jea1wFSE=
|
||||
github.com/gethinode/mod-leaflet v1.2.0 h1:5q5LHmGNi9N4cdRDCsl/6oI8vY3oQ2ogNUjP3NCnk4Y=
|
||||
github.com/gethinode/mod-leaflet v1.2.0/go.mod h1:Ei0x9WiL7Dbi4JeG6yI1CE63bT1QJ8sKi67Jea1wFSE=
|
||||
github.com/gethinode/mod-lottie v1.0.0 h1:1CUZMcgN5FAyjjyuP3qkaOQ6M5sv6HUAbosW4sIT5VE=
|
||||
github.com/gethinode/mod-lottie v1.0.0/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=
|
||||
github.com/gethinode/mod-lottie v1.0.1 h1:+IE7xtnSVQpJS56oBJq9RWKZeFEfxrOZAqE3BSrS/u0=
|
||||
@@ -206,6 +240,14 @@ github.com/gethinode/mod-lottie v1.5.7 h1:hcf04kmKv7xrI2byxtgHwkScYIHfP9aquInHNZ
|
||||
github.com/gethinode/mod-lottie v1.5.7/go.mod h1:rhWg+MSSnWmqHKNEViE/9/78RjQD6uWWFASgjvFjgyo=
|
||||
github.com/gethinode/mod-lottie v1.5.8 h1:glg5HcjOBkFt5MoF7p24NN+RzctExPQUDXvdhPx9u6I=
|
||||
github.com/gethinode/mod-lottie v1.5.8/go.mod h1:Z/FlAcCJWYI1Z9tQnL0yRN4lqhyZl9CqYpfJUPVDaGc=
|
||||
github.com/gethinode/mod-lottie v1.5.9 h1:1MFsq8pO7s4RXu1sA0z75xdp63FPdJ6ar9OhEieDSj8=
|
||||
github.com/gethinode/mod-lottie v1.5.9/go.mod h1:TA1rPRwSilT5mXUakNSVlXNrgTpE87mUOB/fdunAdA0=
|
||||
github.com/gethinode/mod-lottie v1.5.10 h1:tYFgk74T9zWy2FRkfkRI+8QVQy6lnuABnTeWQ8nUX5w=
|
||||
github.com/gethinode/mod-lottie v1.5.10/go.mod h1:L7NpvCAm04R59GSAAm/UFoDCs/6UtrIC5zQEjgQSr4k=
|
||||
github.com/gethinode/mod-lottie v1.5.11 h1:xhxBPDS0iyUY+C1ANaD5EeQV7fO1FG0wMoCjgrCMi/0=
|
||||
github.com/gethinode/mod-lottie v1.5.11/go.mod h1:6FKqk8c+Jkbk2udCxUKVLF1K1wrGwthPsOvRzeoPXRQ=
|
||||
github.com/gethinode/mod-lottie v1.5.12 h1:ny+5DfxWpgRPszhrSUqg+BcNt05ai1OvPAEgCuioFnA=
|
||||
github.com/gethinode/mod-lottie v1.5.12/go.mod h1:0WZP8x7duK/AIZ8fWdZNRnteG03kYfLtsaph7z1mdOg=
|
||||
github.com/gethinode/mod-simple-datatables v1.0.0 h1:Dj4WGw12OkaimwkCpLn5Jhmd49dvNJW9O2P/W9F+HlQ=
|
||||
github.com/gethinode/mod-simple-datatables v1.0.0/go.mod h1:K8T7fIdb8pMOB+OSW4A5lz5IW99+HyzcTgx764fvOGw=
|
||||
github.com/gethinode/mod-simple-datatables v1.0.2 h1:zhqxHet3iLQWYCBbGROALpOY9zQlptMycFkz1Tto5bA=
|
||||
@@ -224,6 +266,20 @@ github.com/gethinode/mod-simple-datatables v1.0.9 h1:8OnpY/axFkgxJ598DHW4nDtxsCY
|
||||
github.com/gethinode/mod-simple-datatables v1.0.9/go.mod h1:rgQWdDZ6lTR9+08dGY1zBDLZI/UneKPufakAK20+lmI=
|
||||
github.com/gethinode/mod-simple-datatables v1.0.10 h1:/nYy4oCgooUJhTBgLdQzMnJEjolkD+dp2nkfLNT9Klg=
|
||||
github.com/gethinode/mod-simple-datatables v1.0.10/go.mod h1:rgQWdDZ6lTR9+08dGY1zBDLZI/UneKPufakAK20+lmI=
|
||||
github.com/gethinode/mod-simple-datatables v1.0.12 h1:myyVp1ctQA6j+5UTWcDwQmy8ipXdjs8T+qpTpRPBPII=
|
||||
github.com/gethinode/mod-simple-datatables v1.0.12/go.mod h1:QuH7wz1igohzCgL76xI1960mFxPPrqgvGtLwR/0cFyQ=
|
||||
github.com/gethinode/mod-simple-datatables v1.0.13 h1:3GTn46Zh56SFzCUP7CUSrmp/ZoiaVG19q4xdObSx6Pc=
|
||||
github.com/gethinode/mod-simple-datatables v1.0.13/go.mod h1:a2qIdYegX5gBubGbspuHv/2UA/8O89oUG/U5hd7jLK8=
|
||||
github.com/gethinode/mod-simple-datatables v1.0.14 h1:332WtbaQtTm7VP0b7zYfpogTBcOEetkJrNd01K4d/JE=
|
||||
github.com/gethinode/mod-simple-datatables v1.0.14/go.mod h1:mP3yjAdVE1G6JHfv8VVsRmvaPlPwddXknI675AuVs2I=
|
||||
github.com/gethinode/mod-simple-datatables v1.1.0 h1:Qc8eJOcVjxIHNfgrZf/bKe8+spCLrJTVwsC8d9ct7i0=
|
||||
github.com/gethinode/mod-simple-datatables v1.1.0/go.mod h1:8q/6f3uAPNTTP5NjEJOuXr6tEWelRFLJfzVJ3AODMlQ=
|
||||
github.com/gethinode/mod-simple-datatables v1.1.1 h1:rzX3+rsOfcW9Z8wiQ1Fp6Ry5TkcJ0nG849xKzjDBbGE=
|
||||
github.com/gethinode/mod-simple-datatables v1.1.1/go.mod h1:8q/6f3uAPNTTP5NjEJOuXr6tEWelRFLJfzVJ3AODMlQ=
|
||||
github.com/gethinode/mod-simple-datatables v1.1.3 h1:a+uIfgc6c+9Zc38Q+Kzd3cWeFhC8BW/rP9/rnd2/ZKM=
|
||||
github.com/gethinode/mod-simple-datatables v1.1.3/go.mod h1:8q/6f3uAPNTTP5NjEJOuXr6tEWelRFLJfzVJ3AODMlQ=
|
||||
github.com/gethinode/mod-simple-datatables v1.1.4 h1:8+uwaEBoh8N2T2sHlcIcxqAGaHPqT0YhPBmr2SFWBCY=
|
||||
github.com/gethinode/mod-simple-datatables v1.1.4/go.mod h1:8q/6f3uAPNTTP5NjEJOuXr6tEWelRFLJfzVJ3AODMlQ=
|
||||
github.com/gethinode/mod-utils v1.0.0 h1:cqHm2xS5uDiJzRm1KfHaNbq6uMVDKLhQa8/BuTZ1nhY=
|
||||
github.com/gethinode/mod-utils v1.0.0/go.mod h1:ONJm3pHCq7nvaPNjusLZNCeCbhOhSBH4HVKHwK1FdYE=
|
||||
github.com/gethinode/mod-utils v1.0.1 h1:jhZGlGFHHL1f5HXbBMXfiZ2gCz4TVafAzjnRPTIBSEE=
|
||||
@@ -280,6 +336,16 @@ github.com/gethinode/mod-utils/v2 v2.6.0 h1:r7l/E6fbPZHnjFyJY4T/xzekd7Xp3czNVCMg
|
||||
github.com/gethinode/mod-utils/v2 v2.6.0/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
|
||||
github.com/gethinode/mod-utils/v2 v2.7.0 h1:5CKygjsc7X4dFtb90ihWyDVvUp2iqoJE8C7M+jeWYus=
|
||||
github.com/gethinode/mod-utils/v2 v2.7.0/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
|
||||
github.com/gethinode/mod-utils/v2 v2.8.0 h1:BdB+onItuO29g5ZLEz/HEwq9c4xBEM4GGqQc3kQ++js=
|
||||
github.com/gethinode/mod-utils/v2 v2.8.0/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
|
||||
github.com/gethinode/mod-utils/v2 v2.8.1 h1:u7sFbgJ5sBEMYC/GwcMRyjRAd5NxTjBnbld5b0V5n98=
|
||||
github.com/gethinode/mod-utils/v2 v2.8.1/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
|
||||
github.com/gethinode/mod-utils/v2 v2.8.2 h1:rKndAMmRBSO5Cgoa/2CvF5XchDSvLvd4TYAbfbbQVhE=
|
||||
github.com/gethinode/mod-utils/v2 v2.8.2/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
|
||||
github.com/gethinode/mod-utils/v2 v2.8.3 h1:t1MJcIdFhYi0gCkm8f0DYZwyfq7pRdRc0eNpqZa11ic=
|
||||
github.com/gethinode/mod-utils/v2 v2.8.3/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
|
||||
github.com/gethinode/mod-utils/v2 v2.8.4 h1:ZBkIxFezFz2IrbTt0Y3Nq5ac7klU5N8TY19Qnj5px4M=
|
||||
github.com/gethinode/mod-utils/v2 v2.8.4/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
|
||||
github.com/nextapps-de/flexsearch v0.0.0-20230711092928-1243fd883ec3 h1:H/qVR5O4BXjRjD+5PZB+r4ug2BSJ2Of4RtwOntd+OKo=
|
||||
github.com/nextapps-de/flexsearch v0.0.0-20230711092928-1243fd883ec3/go.mod h1:5GdMfPAXzbA2gXBqTjC6l27kioSYzHlqDMh0+wyx7sU=
|
||||
github.com/nextapps-de/flexsearch v0.0.0-20240108021025-afd75f742f22 h1:re7L8FxbXQpnX8BgzkdUnDpsUmloGNyLmiy2ZCln8pg=
|
||||
|
@@ -155,3 +155,7 @@
|
||||
translation: Tipp
|
||||
- id: warning
|
||||
translation: Warnung
|
||||
|
||||
# Image
|
||||
- id: image
|
||||
translation: Bild
|
@@ -161,3 +161,7 @@
|
||||
translation: Tip
|
||||
- id: warning
|
||||
translation: Warning
|
||||
|
||||
# Image
|
||||
- id: image
|
||||
translation: image
|
16
i18n/fr.yaml
16
i18n/fr.yaml
@@ -149,3 +149,19 @@
|
||||
translation: "Commentaire"
|
||||
- id: supportedValues
|
||||
translation: "Valeurs supportées"
|
||||
|
||||
# Alerts
|
||||
- id: caution
|
||||
translation: Prudence
|
||||
- id: important
|
||||
translation: Important
|
||||
- id: note
|
||||
translation: Remarque
|
||||
- id: tip
|
||||
translation: Astuce
|
||||
- id: warning
|
||||
translation: Attention
|
||||
|
||||
# Image
|
||||
- id: image
|
||||
translation: image
|
||||
|
@@ -160,3 +160,7 @@
|
||||
translation: Tip
|
||||
- id: warning
|
||||
translation: Waarschuwing
|
||||
|
||||
# Image
|
||||
- id: image
|
||||
translation: Bild
|
||||
|
@@ -9,10 +9,18 @@
|
||||
}}
|
||||
|
||||
{{ if eq .Type "alert" }}
|
||||
<blockquote class="blockquote-alert blockquote-alert-{{ .AlertType }}">
|
||||
{{ $alert := .AlertType }}
|
||||
{{ $icon := (index $icons $alert) }}
|
||||
|
||||
<blockquote class="blockquote-alert blockquote-alert-{{ $alert }}">
|
||||
<p class="blockquote-alert-heading">
|
||||
{{ partial "assets/icon.html" (dict "icon" (printf "%s fa-fw" (index $icons .AlertType))) }}
|
||||
{{ or (i18n .AlertType) (title .AlertType) }}
|
||||
{{ with $icon }}
|
||||
{{ partial "assets/icon.html" (dict "icon" (printf "%s fa-fw" .)) }}
|
||||
{{ or (i18n $alert) (title $alert) }}
|
||||
{{ else }}
|
||||
{{ title $alert }}
|
||||
{{ warnf "Unsupported alert type: '%s'. See %s" $alert $.Position }}
|
||||
{{ end }}
|
||||
</p>
|
||||
{{ trim .Text "\n\r" | safeHTML }}
|
||||
</blockquote>
|
||||
|
@@ -1,5 +1,12 @@
|
||||
{{ if site.Params.navigation.anchor }}
|
||||
<h{{ .Level }} id="{{ .Anchor | safeURL }}" class="heading">{{ .Text | safeHTML }} <a href="#{{ .Anchor | safeURL }}" aria-labelledby="{{ .Anchor | safeURL }}">{{- partial "assets/icon.html" (dict "icon" "fas link anchor") }}</a></h{{ .Level }}>
|
||||
{{ $text := trim .Text " \n\r" }}
|
||||
|
||||
{{ if and site.Params.navigation.anchor $text }}
|
||||
<h{{ .Level }} id="{{ .Anchor | safeURL }}" class="heading">
|
||||
{{- .Text | safeHTML -}}
|
||||
<a href="#{{ .Anchor | safeURL }}" aria-labelledby="{{ .Anchor | safeURL }}">
|
||||
{{- partial "assets/icon.html" (dict "icon" "fas link anchor") }}
|
||||
</a>
|
||||
</h{{ .Level }}>
|
||||
{{ else }}
|
||||
<h{{ .Level }} id="{{ .Anchor | safeURL }}">{{ .Text | safeHTML }}</h{{ .Level }}>
|
||||
{{ end }}
|
@@ -14,7 +14,7 @@
|
||||
{{- end -}}
|
||||
|
||||
{{- /* Initialize module configuration */ -}}
|
||||
{{- $modules := partial "utilities/InitModules.html" (dict "page" .) -}}
|
||||
{{- $modules := partialCached "utilities/InitModules.html" . -}}
|
||||
{{- $.Scratch.Set "modules" $modules -}}
|
||||
|
||||
{{- $fullCover := or (or (and .IsHome .Site.Params.home.fullCover) .Page.Params.fullCover) .Site.Params.main.footerBelowFold }}
|
||||
@@ -27,7 +27,7 @@
|
||||
{{- $.Scratch.Set "sections" $sections -}}
|
||||
|
||||
{{- /* Define main breakpoint */ -}}
|
||||
{{- $.Scratch.Set "breakpoint" (partial "utilities/GetBreakpoint.html") }}
|
||||
{{- $.Scratch.Set "breakpoint" (partialCached "utilities/GetBreakpoint.html" .) }}
|
||||
|
||||
{{- /* Define base URL */ -}}
|
||||
{{ $lang := site.LanguageCode | default site.Language.Lang }}
|
||||
@@ -36,7 +36,8 @@
|
||||
<!doctype html>
|
||||
<html lang="{{ .Site.Language.Lang }}" class="no-js">
|
||||
<head>
|
||||
{{- partial "footer/scripts.html" (dict "filename" "js/critical.bundle.js" "match" "js/critical/**.js" "header" true "page" .) -}}
|
||||
{{- partial "footer/scripts.html" (dict "page" . "type" "critical") -}}
|
||||
{{- partial "footer/scripts.html" (dict "page" . "type" "functional") -}}
|
||||
{{ block "head" . }}{{ end -}}
|
||||
</head>
|
||||
|
||||
@@ -74,7 +75,7 @@
|
||||
|
||||
{{- partial "footer/toast-container.html" . -}}
|
||||
{{- partial "assets/symbols.html" . -}}
|
||||
{{- partialCached "footer/scripts.html" (dict "header" false "page" . "core" true) }}
|
||||
{{- partial "footer/optional-scripts.html" . -}}
|
||||
{{- partialCached "footer/scripts.html" (dict "page" .) -}}
|
||||
{{- partial "footer/scripts.html" (dict "page" . "type" "optional") -}}
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -6,7 +6,7 @@
|
||||
{{ $toc := .Render "single/panel-toc" }}
|
||||
|
||||
{{ with $sidebar }}
|
||||
<div class="offcanvas offcanvas-start" tabindex="-1" id="offcanvass-sidebar" aria-inledby="offcanvas-label">
|
||||
<div class="offcanvas offcanvas-start" tabindex="-1" id="offcanvass-sidebar" aria-labelledby="offcanvas-label">
|
||||
<div class="offcanvas-header">
|
||||
<h5 class="offcanvas-title" id="offcanvas-label">{{ strings.FirstUpper $.Section }}</h5>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="{{ T "close" }}"></button>
|
||||
|
@@ -8,7 +8,8 @@
|
||||
<meta charset="utf-8">
|
||||
<noscript><meta http-equiv="refresh" content="0; url={{ .Permalink }}"></noscript>
|
||||
{{ if site.Params.main.enableLanguageSelectionStorage }}
|
||||
{{- partial "footer/scripts.html" (dict "filename" "js/critical.bundle.js" "match" "js/critical/**.js" "header" true "page" page) -}}
|
||||
{{- partial "footer/scripts.html" (dict "page" page "type" "critical") -}}
|
||||
{{- partial "footer/scripts.html" (dict "page" page "type" "functional") -}}
|
||||
{{ else }}
|
||||
<script src='{{ partial "utilities/GetStaticURL" (dict "url" "js/alias.js") }}'></script>
|
||||
{{ end }}
|
||||
|
@@ -39,13 +39,22 @@
|
||||
{{ $element := "" }}
|
||||
|
||||
<!-- Split path between upload dir and sub dir -->
|
||||
{{ $newdir := partial "utilities/URLJoin.html" (dict "base" (index (split $dir "upload") 0) "path" "upload") }}
|
||||
{{ $file = partial "utilities/URLJoin.html" (dict "base" (index (split $dir "upload") 1) "path" $file) }}
|
||||
{{ $dir = $newdir }}
|
||||
{{ $dir = path.Clean (trim .dir "/") }}
|
||||
{{ $api := "image/upload" }}
|
||||
|
||||
<!-- Define the account, optional API segment, and directory -->
|
||||
{{ $elements := split $dir "/" }}
|
||||
{{ $account := index $elements 0 }}
|
||||
{{ $operation := "" }}
|
||||
{{ if and (in (slice "image" "video") (index $elements 1)) (eq (index $elements 2) "upload") }}
|
||||
{{ $api = delimit (slice | append (index $elements 1) | append (index $elements 2)) "/" }}
|
||||
{{ $dir = delimit (after 3 $elements) "/" }}
|
||||
{{ else }}
|
||||
{{ $dir = delimit (after 1 $elements) "/" }}
|
||||
{{ end }}
|
||||
|
||||
<!-- Generate image URL -->
|
||||
{{ if not $error }}
|
||||
{{ $operation := "" }}
|
||||
{{ if $format }}
|
||||
{{ $operation = printf "%s,h_%d,w_%d" $transform $height $width }}
|
||||
{{ $file = printf "%s.%s" (strings.TrimSuffix (path.Ext $file) $file) $format }}
|
||||
@@ -55,7 +64,7 @@
|
||||
{{ with $anchor }}
|
||||
{{ $operation = printf "%s,g_%s" $operation . }}
|
||||
{{ end }}
|
||||
{{- $element = partial "utilities/URLJoin.html" (dict "elements" (slice "https://" $host $dir $operation $file)) -}}
|
||||
{{- $element = partial "utilities/URLJoin.html" (dict "elements" (slice "https://" $host $account $api $operation $dir $file)) -}}
|
||||
{{ end }}
|
||||
|
||||
{{ return $element }}
|
||||
|
@@ -23,11 +23,13 @@
|
||||
{{- $title := .LinkTitle -}}
|
||||
{{- if .IsHome }}{{ $title = T "home" }}{{ end -}}
|
||||
{{- $address := or .RelPermalink .Params.Redirect -}}
|
||||
{{ if $title }}
|
||||
{{ if $address }}
|
||||
<li class="breadcrumb-item"><a href="{{ $address }}">{{ $title }}</a></li>
|
||||
{{ else }}
|
||||
<li class="breadcrumb-item">{{ $title }}</li>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{- end -}}
|
||||
<li class="breadcrumb-item active" aria-current="page">{{ $page.LinkTitle }}</li>
|
||||
</ol>
|
||||
|
@@ -64,7 +64,7 @@
|
||||
{{- if $isExternal -}}
|
||||
{{- if $tab -}}
|
||||
{{- $target = "_blank" -}}
|
||||
{{- $rel = "noopener noreferrer" -}}
|
||||
{{- $rel = "noopener noreferrer nofollow" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if and $title $cue -}}
|
||||
|
@@ -49,6 +49,11 @@
|
||||
"5" (printf "(min-width: %s) 20vw, (min-width: %s) 33.3vw, 100vw" $breakpoint.currentSize $breakpoint.prevSize)
|
||||
}}
|
||||
|
||||
{{ if not $args.responsive }}
|
||||
{{ $colsMap = dict "auto" "" "1" "row-cols-1" "2" "row-cols-2" "3" "row-cols-3" "4" "row-cols-4" "5" "row-cols-5" }}
|
||||
{{ $sizesMap = dict "auto" "100vw" "1" "100vw" "2" "50vw" "3" "33.3vw" "4" "25vw" "5" "20vw" }}
|
||||
{{ end }}
|
||||
|
||||
<!-- Apply optional pagination -->
|
||||
{{ $isPages := in (slice "page.Pages" "resource.Resources") (printf "%T" $list) }}
|
||||
{{ $paginator := "" }}
|
||||
@@ -58,7 +63,7 @@
|
||||
{{ else }}
|
||||
{{ $paginator = $args.page.Paginate $list }}
|
||||
{{ end }}
|
||||
{{ $list = first $paginator.PageSize (after (mul (sub $paginator.PageNumber 1) $paginator.PageSize) $list) }}
|
||||
{{ $list = first $paginator.PagerSize (after (mul (sub $paginator.PageNumber 1) $paginator.PagerSize) $list) }}
|
||||
{{ end }}
|
||||
|
||||
<!-- Initialize list elements -->
|
||||
@@ -103,7 +108,7 @@
|
||||
{{- $colGrid := "" -}}
|
||||
{{ if not $args.scroll }}
|
||||
{{ $colGrid = index $colsMap $args.cols }}
|
||||
{{ if $args.responsive }}{{ $sizes = index $sizesMap $args.cols }}{{ end }}
|
||||
{{ $sizes = index $sizesMap $args.cols }}
|
||||
{{ else }}
|
||||
{{ if in (slice "2" "3" "4" "5") $args.cols }}
|
||||
{{ $sizes = replace (printf "%.1fvw" (div 100.0 (int $args.cols))) ".0" "" }}
|
||||
@@ -138,7 +143,7 @@
|
||||
"style" $args.style
|
||||
"align" $args.align
|
||||
"button" $args.button
|
||||
"buttonLabel" $args.buttonLabel
|
||||
"buttonLabel" $element.buttonLabel
|
||||
"buttonType" $args.buttonType
|
||||
"iconRounded" $args.iconRounded
|
||||
) -}}
|
||||
|
@@ -52,11 +52,12 @@
|
||||
{{- $page := "" }}
|
||||
{{- if .path }}
|
||||
{{ $page = partial "utilities/GetPage.html" (dict "url" .path "page" page) }}
|
||||
{{- if not $page }}
|
||||
{{ $validate := site.Params.main.internalLinks.validate | default true }}
|
||||
{{- if and $validate (not $page) }}
|
||||
{{ if page.File }}
|
||||
{{- errorf "partial [assets/card.html] - Cannot find target page '%s', see '%s'" .path page.File.Path -}}
|
||||
{{- warnf "partial [assets/card.html] - Cannot find target page '%s', see '%s'" .path page.File.Path -}}
|
||||
{{ else }}
|
||||
{{- errorf "partial [assets/card.html] - Cannot find target page '%s'" .path -}}
|
||||
{{- warnf "partial [assets/card.html] - Cannot find target page '%s'" .path -}}
|
||||
{{ end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -95,7 +96,7 @@
|
||||
|
||||
{{- if $href -}}
|
||||
<a href="{{ $href }}" class="{{ if $color }}link-bg-{{ $color }}{{ else }}card-body-link{{ end }} stretched-link">
|
||||
<p class="card-title fs-lg-5 fs-6 fw-bold">{{ $title }}</p>
|
||||
<p class="card-title fs-lg-5 fs-6">{{ $title }}</p>
|
||||
{{ with $description }}
|
||||
<div class="card-text {{ if $color }}link-bg-{{ $color }}{{ else }}card-body-link{{ end }}">
|
||||
{{ . | safeHTML }}
|
||||
@@ -104,7 +105,7 @@
|
||||
</a>
|
||||
{{- else -}}
|
||||
<div>
|
||||
{{ with $title }}<p class="card-title fs-lg-5 fs-6 fw-bold">{{ . }}</p>{{ end -}}
|
||||
{{ with $title }}<p class="card-title fs-lg-5 fs-6">{{ . }}</p>{{ end -}}
|
||||
{{ with $description }}<div class="card-text">{{ . | safeHTML }}</div>{{ end -}}
|
||||
</div>
|
||||
{{- end -}}
|
||||
@@ -176,7 +177,20 @@
|
||||
<div class="row g-0 row-cols-2 h-100{{ if $button }} pb-5{{ end }}">
|
||||
{{- if $thumbnail -}}
|
||||
<div class="{{ $col1 }}">
|
||||
{{- partial $hook (dict "url" $thumbnail "ratio" (or $ratio "1x1") "portrait" $portrait "sizes" $sizes "anchor" $anchor "wrapper" "h-100 card-img-wrap" "class" "rounded-start card-img-h100 card-img-bg" "title" $title "loading" $loading) -}}
|
||||
{{ $fullHeight := "card-img-h100" }}
|
||||
{{ $rounding := "rounded-start" }}
|
||||
{{ if eq (lower (path.Ext $thumbnail)) ".svg" }}{{ $fullHeight = "" }}{{ $rounding = "" }}{{ end }}
|
||||
{{- partial $hook (dict
|
||||
"url" $thumbnail
|
||||
"ratio" (or $ratio "1x1")
|
||||
"portrait" $portrait
|
||||
"sizes" $sizes
|
||||
"anchor" $anchor
|
||||
"wrapper" "h-100 card-img-wrap d-flex align-items-center"
|
||||
"class" (printf "card-img-bg %s %s" $rounding $fullHeight)
|
||||
"title" $title
|
||||
"loading" $loading
|
||||
) -}}
|
||||
</div>
|
||||
{{- else if $icon -}}
|
||||
<div class="{{ $col1 }} p-{{ $padding }}">
|
||||
|
@@ -20,10 +20,11 @@
|
||||
{{- $ratio := .ratio -}}
|
||||
{{- $portrait := .portrait -}}
|
||||
{{- $loading := .loading | default "eager" -}}
|
||||
{{- $title := .caption | default (T "image") -}}
|
||||
|
||||
<!-- Main code -->
|
||||
<div class="carousel-item{{ if $active }} active{{ end }}" {{ if not $active }} fetchpriority="low"{{ end }}>
|
||||
{{ partial "assets/image.html" (dict "url" $src "ratio" $ratio "page" $page "class" "d-block w-100" "portrait" $portrait "loading" $loading) }}
|
||||
{{ partial "assets/image.html" (dict "url" $src "ratio" $ratio "page" $page "class" "d-block w-100" "portrait" $portrait "loading" $loading "title" $title) }}
|
||||
<div class="carousel-caption gradient"></div>
|
||||
{{ with $caption }}
|
||||
<div class="carousel-caption d-none d-md-block">
|
||||
|
@@ -16,6 +16,7 @@
|
||||
{{- $modes := .modes -}}
|
||||
{{- $plain := .plain | default false }}
|
||||
{{- $anchor := .anchor }}
|
||||
{{- $alt := or $title $caption (T "image") }}
|
||||
|
||||
<!-- Split url into base and anchor when applicable (only relevant for vector images) -->
|
||||
{{- $fileAnchor := "" -}}
|
||||
@@ -71,7 +72,7 @@
|
||||
{{ with $imgset -}}srcset="{{ . }}" sizes="{{ $sizes }}"{{- end }}
|
||||
{{ with $height }}height="{{ . }}"{{ end }}
|
||||
{{ with $width }}width="{{ . }}"{{ end }}
|
||||
{{ with (or $title $caption) }}alt="{{ . }}"{{ end }}>
|
||||
{{ with $alt }}alt="{{ . }}"{{ end }}>
|
||||
{{- else }}
|
||||
<svg class="{{ $class }}">
|
||||
<use href="{{ $fallbackURL }}#{{ $fileAnchor }}"></use>
|
||||
|
@@ -52,10 +52,11 @@
|
||||
{{- if hasSuffix $url "svg" -}}
|
||||
{{- $res = partial "utilities/GetResource.html" (dict "url" $url "page" $page) -}}
|
||||
{{ if not $res }}
|
||||
{{- if not (fileExists (path.Join "/static" $url)) -}}
|
||||
{{- $targetURL := partial "utilities/GetStaticURL" (dict "url" (strings.TrimPrefix "/static" $url)) -}}
|
||||
{{- if not (fileExists (path.Join "/static" $targetURL)) -}}
|
||||
{{ warnf "Cannot find vector image resource: %q" $url -}}
|
||||
{{ else }}
|
||||
{{ $width := string (partial "utilities/GetWidth.html" (dict "path" $url "height" 500)) }}
|
||||
{{ $width := string (partial "utilities/GetWidth.html" (dict "path" $targetURL "height" 500)) }}
|
||||
{{ if $width }}
|
||||
{{ $dims = $dims | append (printf "%sx500" $width) }}
|
||||
{{ else }}
|
||||
@@ -118,7 +119,7 @@
|
||||
|
||||
<!-- Generate image url -->
|
||||
{{ if or (hasSuffix $url "svg") $plain }}
|
||||
{{- $targetURL = partial "utilities/GetStaticURL" (dict "url" $url) -}}
|
||||
{{- $targetURL = partial "utilities/GetStaticURL" (dict "url" (strings.TrimPrefix "/static" $url)) -}}
|
||||
{{ else }}
|
||||
{{- $targetURL = partial "assets/helpers/image-set.html" (dict
|
||||
"url" $url
|
||||
|
@@ -13,7 +13,15 @@
|
||||
{{ end }}
|
||||
|
||||
<!-- Initialize arguments -->
|
||||
{{ $destination := strings.TrimPrefix (strings.TrimSuffix "/" site.BaseURL) .destination }}
|
||||
{{ $destination := .destination }}
|
||||
{{ $u := urls.Parse $destination }}
|
||||
{{ if not $u.Scheme }}
|
||||
{{ $b := urls.Parse site.BaseURL }}
|
||||
{{ $destination = strings.TrimPrefix $b.Path $destination }}
|
||||
{{ $destination = path.Clean $destination }}
|
||||
{{ else }}
|
||||
{{ $destination = (strings.TrimPrefix (strings.TrimSuffix "/" site.BaseURL) $destination) }}
|
||||
{{ end }}
|
||||
{{ if not $destination }}{{ $destination = "/" }}{{ end }}
|
||||
|
||||
{{- $target := "" -}}
|
||||
@@ -38,7 +46,7 @@
|
||||
|
||||
{{- if $tab -}}
|
||||
{{- $target = "_blank" -}}
|
||||
{{- $rel = "noopener noreferrer" -}}
|
||||
{{- $rel = "noopener noreferrer nofollow" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if $cue -}}
|
||||
@@ -60,7 +68,9 @@
|
||||
{{ $ref := partial "utilities/GetPage.html" (dict "url" $destination "page" $page) }}
|
||||
{{- if not $ref -}}
|
||||
{{ $pageContext := "" }}
|
||||
{{ with $page.File }}{{ $pageContext = path.Join "/content" .Dir }}{{ end }}
|
||||
{{ with $page.File }}
|
||||
{{ $pageContext = path.Dir (strings.TrimPrefix hugo.WorkingDir .Filename) }}
|
||||
{{ end }}
|
||||
{{ $isPageRes := fileExists (path.Join $pageContext $destination) }}
|
||||
{{ $isStatic := fileExists (path.Join "static" $destination) }}
|
||||
{{ if and (not $isPageRes) (not $isStatic) }}
|
||||
|
@@ -52,14 +52,17 @@
|
||||
<div class="d-none d-lg-block">
|
||||
{{ end }}
|
||||
|
||||
<div class="nav{{ with $type }} nav-{{ . }}{{ end }}{{ with $class }} {{ . }}{{ end }}{{ if $vertical }} flex-column{{ end }}" id="nav-{{ $id }}" role="tablist"{{ if $vertical }} aria-orientation="vertical"{{ end }}>
|
||||
<ul class="nav{{ with $type }} nav-{{ . }}{{ end }}{{ with $class }} {{ . }}{{ end }}{{ if $vertical }} flex-column{{ end }}" id="nav-{{ $id }}" role="tablist"{{ if $vertical }} aria-orientation="vertical"{{ end }}>
|
||||
{{- range $index, $item := $list -}}
|
||||
{{ $show := eq $index 0}}
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link {{ if not $wrap }} text-nowrap{{ end }}{{ if $show }} active{{ end }}" id="nav-{{ $id }}-btn-{{ $index }}" data-bs-toggle="pill" data-bs-target="#nav-{{ $id }}-{{ $index }}"
|
||||
type="button" role="tab" aria-controls="nav-{{ $id }}-{{ $index }}" aria-selected="{{ if eq $index 0 }}true{{ else }}false{{ end }}">
|
||||
{{ $item.Title }}
|
||||
</button>
|
||||
</li>
|
||||
{{ end -}}
|
||||
</ul>
|
||||
|
||||
<div class="tab-content {{ if eq $type "tabs" }}border border-bottom-0 p-3{{ else if $vertical }}ms-3{{ else }}mt-3{{ end }}">
|
||||
{{ range $index, $item := $list }}
|
||||
@@ -74,6 +77,7 @@
|
||||
"title" $item.Title
|
||||
"class" $class
|
||||
"color" $color
|
||||
"href" $item.Params.href
|
||||
"content" (partial "utilities/GetDescription.html" (dict "page" $item))
|
||||
"thumbnail" $thumbnail
|
||||
) -}}
|
||||
@@ -91,7 +95,6 @@
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{ if eq $type "callout" }}</div>{{ end }}
|
||||
{{ if $vertical }}</div>{{ end }}
|
||||
|
@@ -42,7 +42,7 @@
|
||||
|
||||
{{- if $isExternal }}
|
||||
{{- if $tab -}}
|
||||
{{ $externalHref = "target=\"_blank\" rel=\"noopener noreferrer\"" }}
|
||||
{{ $externalHref = "target=\"_blank\" rel=\"noopener noreferrer nofollow\"" }}
|
||||
{{- end -}}
|
||||
|
||||
{{- if $cue -}}
|
||||
@@ -85,10 +85,10 @@
|
||||
"size" "sm"
|
||||
)}}
|
||||
{{ else }}
|
||||
<a class="{{ $anchorClass }}{{ if $isActive }} active{{ end }}{{ with $class }} {{ . }}{{ end }}"
|
||||
{{ cond (ne $menuURL "") "<a" "<div" | safeHTML }} class="{{ $anchorClass }}{{ if $isActive }} active{{ end }}{{ with $class }} {{ . }}{{ end }}"
|
||||
{{ if $isIcon }}aria-label="{{ $menu.Name }}"{{ end }}
|
||||
data-nav="main" data-nav-main="{{ $mainNav }}"{{ with $childNav }} data-nav-child="{{ . }}"{{ end }}
|
||||
{{ if $menuURL }} href="{{ $menuURL }}{{ $params | safeHTMLAttr }}"{{ with $externalHref }} {{ . | safeHTMLAttr }}{{ end }}{{ end }} {{ $button | safeHTMLAttr }}>
|
||||
{{ if $menuURL }} href="{{ $menuURL }}{{ $params | safeHTML }}"{{ with $externalHref }} {{ . | safeHTML }}{{ end }}{{ end }} {{ $button | safeHTML }}>
|
||||
|
||||
{{- with $menu.Pre }}
|
||||
{{ if hasPrefix . "<i" }}
|
||||
@@ -100,6 +100,6 @@
|
||||
<span {{ if $isActive }} class="active"{{ end }}>{{ if or (not $isIcon) $plain }}{{ $menu.Name }}{{ end }}</span>
|
||||
{{- with $menu.Post }}{{ . }}{{ end -}}
|
||||
{{- if not $isIcon }} {{ $suffix }}{{ end -}}
|
||||
</a>
|
||||
{{ cond (ne $menuURL "") "</a>" "</div>" | safeHTML }}
|
||||
{{ end }}
|
||||
{{ end }}
|
@@ -18,14 +18,14 @@
|
||||
{{- define "partials/navbar-mode.html" -}}
|
||||
{{- $id := .id | default "navbar-mode" -}}
|
||||
|
||||
<div class="d-flex mode-switch align-items-center" id="{{ $id }}">
|
||||
<input type="checkbox" class="checkbox navbar-mode-selector" id="{{ $id }}-checkbox" />
|
||||
<li class="d-flex mode-switch align-items-center" id="{{ $id }}">
|
||||
<input type="checkbox" class="checkbox navbar-mode-selector" id="{{ $id }}-checkbox" aria-label="{{ T "colorMode" }}" />
|
||||
<label class="label" for="{{ $id }}-checkbox">
|
||||
{{- partial "assets/icon.html" (dict "icon" "fas sun fa-fw" "spacing" false) }}
|
||||
{{- partial "assets/icon.html" (dict "icon" "fas moon fa-fw" "spacing" false) }}
|
||||
<div class="ball"></div>
|
||||
</label>
|
||||
</div>
|
||||
</li>
|
||||
{{- end -}}
|
||||
|
||||
<!-- Inline partial to render the version switcher -->
|
||||
@@ -39,7 +39,7 @@
|
||||
{{- $version := partial "utilities/GetVersion.html" (dict "page" $page) -}}
|
||||
|
||||
<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="{{ $id }}-version-switch">
|
||||
<a class="nav-link dropdown-toggle" role="button" data-bs-toggle="dropdown" aria-expanded="false" id="{{ $id }}-version-switch">
|
||||
{{ if $collapsed }}{{ site.Title }} {{ end }}{{ $version }}
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="{{ $id }}-version-switch">
|
||||
@@ -263,10 +263,10 @@
|
||||
{{- if $enableLanguage -}}
|
||||
{{- $currentLang := $page.Language.Lang -}}
|
||||
<li class="nav-item dropdown me-auto">
|
||||
<a class="nav-link dropdown-toggle d-{{ $size }}-none" href="#!" role="button" data-bs-toggle="dropdown" aria-label="{{ T "languageSwitcherLabel" }}" aria-expanded="false">
|
||||
<a class="nav-link dropdown-toggle d-{{ $size }}-none" role="button" data-bs-toggle="dropdown" aria-label="{{ T "languageSwitcherLabel" }}" aria-expanded="false">
|
||||
{{- partial "assets/icon.html" (dict "icon" "fas globe fa-fw" "spacing" false) }} {{ T "languageSwitcherLabel" }}
|
||||
</a>
|
||||
<a class="nav-link dropdown-toggle d-none d-{{ $size }}-block" href="#!" role="button" data-bs-toggle="dropdown" aria-label="{{ T "languageSwitcherLabel" }}" aria-expanded="false">
|
||||
<a class="nav-link dropdown-toggle d-none d-{{ $size }}-block" role="button" data-bs-toggle="dropdown" aria-label="{{ T "languageSwitcherLabel" }}" aria-expanded="false">
|
||||
{{- partial "assets/icon.html" (dict "icon" "fas globe fa-fw" "spacing" false) }}
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-menu-end " id="language-selector">
|
||||
@@ -295,12 +295,16 @@
|
||||
</li>
|
||||
<li><hr class="dropdown-divider-bg"></li>
|
||||
|
||||
<a class="nav-link d-{{ $size }}-none" href="#!" role="button" data-bs-toggle="modal" data-bs-target="#search-modal" aria-label="{{ T "ui_search" }}" aria-expanded="false">
|
||||
<li class="d-{{ $size }}-none">
|
||||
<a class="nav-link" role="button" data-bs-toggle="modal" data-bs-target="#search-modal" aria-label="{{ T "ui_search" }}" aria-expanded="false">
|
||||
{{ partial "assets/icon.html" (dict "icon" "fas magnifying-glass fa-fw") }} {{ T "ui_search" }}
|
||||
</a>
|
||||
<a class="nav-link d-none d-{{ $size }}-block" href="#!" role="button" data-bs-toggle="modal" data-bs-target="#search-modal" aria-label="{{ T "ui_search" }}" aria-expanded="false">
|
||||
</li>
|
||||
<li class="d-none d-{{ $size }}-block">
|
||||
<a class="nav-link" role="button" data-bs-toggle="modal" data-bs-target="#search-modal" aria-label="{{ T "ui_search" }}" aria-expanded="false">
|
||||
{{ partial "assets/icon.html" (dict "icon" "fas magnifying-glass fa-fw") }}
|
||||
</a>
|
||||
</li>
|
||||
{{ end -}}
|
||||
</ul>
|
||||
</div>
|
||||
|
@@ -21,7 +21,7 @@
|
||||
<!-- Main code -->
|
||||
{{- if and (not $error) $pageAlertMsg -}}
|
||||
<div id="page-alert" class="alert alert-primary alert-no-decoration fade show d-flex align-items-center small m-0 py-1" data-page-alert-version="{{ $version }}">
|
||||
<a href="{{ with $pageAlertURL }}{{ . }}{{ else }}#!{{ end }}" class="text-decoration-none flex-grow-1 text-center">{{ $pageAlertMsg }}</a>
|
||||
<a {{ with $pageAlertURL }}href="{{ . }}"{{ end }} class="text-decoration-none flex-grow-1 text-center">{{ $pageAlertMsg }}</a>
|
||||
<button id="page-alert-btn-close" type="button" class="btn-close" data-bs-dismiss="alert" aria-label="{{ T "close" }}"></button>
|
||||
</div>
|
||||
{{- end -}}
|
||||
|
@@ -45,7 +45,7 @@
|
||||
{{- $rel := "" -}}
|
||||
{{- if and $isExternal $tab -}}
|
||||
{{- $target = "_blank" -}}
|
||||
{{- $rel = "noopener noreferrer" -}}
|
||||
{{- $rel = "noopener noreferrer nofollow" -}}
|
||||
{{- end -}}
|
||||
|
||||
<!-- Inline partial to render the card's body -->
|
||||
|
@@ -52,14 +52,14 @@
|
||||
{{- if .clipboard -}}
|
||||
{{- $target = (printf "toast-message-%s-%d" (anchorize $item.name) $index ) -}}
|
||||
{{- $clipboard = $url -}}
|
||||
{{- $url = "#!" -}}
|
||||
{{- $url = "" -}}
|
||||
{{- partial "assets/toast.html" (dict "id" $target "message" (printf "%s %s" (T "link") (T "copiedToClipboard"))) -}}
|
||||
{{- end -}}
|
||||
{{ partial "assets/button.html" (dict "toast" $target "clipboard" $clipboard "href" $url "icon" (printf "%s fa-fw" $item.icon) "class" "btn-social p-0" "label" (T "shareLink" $item.name) "spacing" false) }}
|
||||
{{- end -}}
|
||||
{{ if $page.Site.Params.sharing.webshare }}
|
||||
{{ $attr := dict "data-sharing-title" .Title "data-sharing-description" .Description "data-sharing-url" .Permalink }}
|
||||
{{ partial "assets/button.html" (dict "href" "#!" "icon" "fas share-nodes fa-fw" "id" "btn-webshare" "class" "btn-social p-0" "attributes" $attr "label" (T "shareLink" (T "shareSystem")) "spacing" false) }}
|
||||
{{ $attr := dict "data-sharing-title" $page.Title "data-sharing-description" $page.Description "data-sharing-url" $page.Permalink }}
|
||||
{{ partial "assets/button.html" (dict "href" "" "icon" "fas share-nodes fa-fw" "class" "btn-social p-0" "attributes" $attr "label" (T "shareLink" (T "shareSystem")) "spacing" false) }}
|
||||
{{- end -}}
|
||||
{{ with $download }}
|
||||
{{ $label := (T "download" ) }}
|
||||
|
@@ -10,7 +10,8 @@
|
||||
{{ $sortable := .sortable | default false }}
|
||||
{{ $paging := .paging | default false }}
|
||||
{{ $searchable := .searchable | default false }}
|
||||
|
||||
{{ $pagingOptionPerPage := .pagingOptionPerPage }}
|
||||
{{ $pagingOptionPerPageSelect := .pagingOptionPerPageSelect }}
|
||||
{{- $responsiveVals := slice "table-responsive" "table-responsive-none" "table-responsive-sm" "table-responsive-md" "table-responsive-lg" "table-responsive-xl" "table-responsive-xxl" -}}
|
||||
{{- $responsive := intersect $args $responsiveVals -}}
|
||||
{{- $main := complement $responsive $args -}}
|
||||
@@ -30,7 +31,11 @@
|
||||
|
||||
{{ $attributes := "" }}
|
||||
{{ if $sortable }}{{ $attributes = printf "%s data-table-sortable=true" $attributes }}{{ end }}
|
||||
{{ if $paging }}{{ $attributes = printf "%s data-table-paging=true" $attributes }}{{ end }}
|
||||
{{ if $paging }}
|
||||
{{ $attributes = printf "%s data-table-paging=true" $attributes }}
|
||||
{{ $attributes := printf "%s data-table-paging-option-perPage=%s" $attributes $pagingOptionPerPage }}
|
||||
{{ if (ne $pagingOptionPerPageSelect "") }}{{ $attributes := printf "%s data-table-paging-option-perPageSelect=%d" $attributes $pagingOptionPerPageSelect }}{{ end }}
|
||||
{{ end }}
|
||||
{{ if $searchable }}{{ $attributes = printf "%s data-table-searchable=true" $attributes }}{{ end }}
|
||||
|
||||
{{- $new := printf `<table class="%s" %s` $target (trim $attributes " ") -}}
|
||||
|
@@ -3,7 +3,7 @@
|
||||
<small>
|
||||
{{- $copyright := printf "%s © %s %s %s." (T "copyright") (dateFormat "2006" now) .Site.Title (T "rights") }}
|
||||
{{ cond (gt (len .Site.Copyright) 0) .Site.Copyright $copyright }}
|
||||
{{ .Site.Params.footer.license | safeHTML }}
|
||||
{{ .Site.Params.footer.license | safeHTML }} |
|
||||
{{ if .Site.Params.main.endorse }}
|
||||
{{ $link := partial "assets/link.html" (dict "destination" (index site.Params.links "hinode") "text" "Hinode" "class" "link-bg-footer" "page" .Page) }}
|
||||
{{ T "poweredBy" $link | safeHTML }}
|
||||
|
@@ -1,46 +0,0 @@
|
||||
{{ $page_modules := slice }}
|
||||
{{ if reflect.IsMap .Params.modules }}
|
||||
{{ $page_modules = .Params.modules }}
|
||||
{{ else }}
|
||||
{{ $page_modules = $page_modules | append .Params.modules }}
|
||||
{{ end }}
|
||||
{{ with .Scratch.Get "dependencies" }}{{ $page_modules = append $page_modules . | uniq }}{{ end }}
|
||||
|
||||
{{ $config := page.Scratch.Get "modules" }}
|
||||
{{ if not $config }}
|
||||
{{ errorf "partial [footer/optional-scripts.html] - Cannot initialize module configuration" }}
|
||||
{{ end }}
|
||||
|
||||
{{- $modules := $config.optional | intersect $page_modules -}}
|
||||
{{- range $index, $mod := $modules -}}
|
||||
{{- $filename := printf "js/%s.bundle.js" $mod -}}
|
||||
{{- $match := printf "js/modules/%s/**.js" $mod -}}
|
||||
{{- $skipTemplate := false -}}
|
||||
{{- if reflect.IsSlice $config.disableTemplate -}}
|
||||
{{- if in $config.disableTemplate $mod}}
|
||||
{{- $skipTemplate = true -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{ $state := "" }}
|
||||
{{- with (index $config.modules $mod) -}}
|
||||
{{- with index . "state" }}{{ $state = . }}{{ end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{ $localize := false }}
|
||||
{{- if reflect.IsSlice $config.localize -}}
|
||||
{{- if in $config.localize $mod}}
|
||||
{{- $localize = true -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- partial "footer/scripts.html" (dict
|
||||
"filename" $filename
|
||||
"match" $match
|
||||
"header" false
|
||||
"skipTemplate" $skipTemplate
|
||||
"state" $state
|
||||
"localize" $localize
|
||||
"page" page
|
||||
) }}
|
||||
{{- end -}}
|
@@ -6,72 +6,170 @@
|
||||
|
||||
{{ $error := false }}
|
||||
|
||||
<!-- Validate arguments -->
|
||||
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "scripts" "args" . "group" "partial") }}
|
||||
{{- errorf "partial [footer/scripts.html] - Invalid arguments" -}}
|
||||
{{ $error = true }}
|
||||
{{ end }}
|
||||
|
||||
<!-- Initialize arguments -->
|
||||
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
|
||||
{{- $filename := .filename | default "js/main.bundle.js" -}}
|
||||
{{- $match := .match | default "{js/*.js,js/vendor/**.js}" -}}
|
||||
{{- $page := .page -}}
|
||||
{{- $header := .header -}}
|
||||
{{- $core := .core | default false -}}
|
||||
{{- $skipTemplate := .skipTemplate | default false -}}
|
||||
{{- $localize := .localize | default false }}
|
||||
|
||||
{{- $state := .state | default "async" -}}
|
||||
{{- if or $header (eq $state "immediate") }}{{ $state = "" }}{{ end -}}
|
||||
|
||||
{{- $modules := "" -}}
|
||||
{{ if $core }}
|
||||
{{ $config := $page.Scratch.Get "modules" }}
|
||||
{{ if not $config }}
|
||||
{{ errorf "partial [footer/scripts.html] - Cannot initialize module configuration" }}
|
||||
<!-- Define inline partials -->
|
||||
{{ define "partials/match.html" }}
|
||||
{{ $result := "" }}
|
||||
{{ $matches := slice }}
|
||||
{{ if gt (len .modules) 0 }}
|
||||
{{ range .modules }}
|
||||
{{ $matches = $matches | append (printf "js/modules/%s/**.js" .) }}
|
||||
{{ end }}
|
||||
{{ $result = printf "{%s}" (delimit $matches ",") }}
|
||||
{{ end }}
|
||||
|
||||
{{- $modules = $config.core -}}
|
||||
{{- if reflect.IsSlice $config.localize -}}
|
||||
{{- range $index, $mod := $modules -}}
|
||||
{{- if in $config.localize $mod}}
|
||||
{{- $localize = true -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{ if $localize }}
|
||||
{{ $filename = path.Join (path.Dir $filename) (printf "%s.%s%s" (path.BaseName $filename) $page.Language.Lang (path.Ext $filename)) }}
|
||||
{{ return $result }}
|
||||
{{ end }}
|
||||
|
||||
<!-- Main code -->
|
||||
{{- $bundle := partial "utilities/bundle" (dict
|
||||
{{ define "partials/bundle-script.html" }}
|
||||
{{ $page := .page }}
|
||||
{{ $match := .match }}
|
||||
{{ $destination := .destination }}
|
||||
{{ $cat := .cat }}
|
||||
{{ $localize := .localize }}
|
||||
{{ $modules := .modules }}
|
||||
{{ $skipTemplate := .skipTemplate }}
|
||||
{{ $absoluteURL := .absoluteURL }}
|
||||
{{ $state := cond (ne .state "immediate") .state "" }}
|
||||
|
||||
{{ if and $cat (ne $cat "other") }}
|
||||
{{ $destination = path.Join (path.Dir $destination) (printf "%s-%s%s" (path.BaseName $destination) $cat (path.Ext $destination)) }}
|
||||
{{ end }}
|
||||
|
||||
{{ if $localize }}
|
||||
{{ $destination = path.Join (path.Dir $destination) (printf "%s.%s%s" (path.BaseName $destination) $page.Language.Lang (path.Ext $destination)) }}
|
||||
{{ end }}
|
||||
|
||||
{{- $bundle := partial "utilities/bundle.html" (dict
|
||||
"match" $match
|
||||
"filename" $filename
|
||||
"filename" $destination
|
||||
"modules" $modules
|
||||
"basepath" "js/modules"
|
||||
"all" true
|
||||
"debugging" site.Params.debugging.showJS
|
||||
) -}}
|
||||
{{- $js := $bundle -}}
|
||||
{{- if not $skipTemplate -}}
|
||||
{{- $js = $bundle | resources.ExecuteAsTemplate $filename $page -}}
|
||||
{{- end -}}
|
||||
) -}}
|
||||
{{- $js := $bundle -}}
|
||||
{{- if not $skipTemplate -}}
|
||||
{{- $js = $bundle | resources.ExecuteAsTemplate $destination $page -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if and (not hugo.IsServer) $header -}}
|
||||
{{- $pc := site.Config.Privacy.GoogleAnalytics -}}
|
||||
{{- if and (not $pc.Disable) (hasPrefix site.Config.Services.GoogleAnalytics.ID "G-") }}
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id={{ site.Config.Services.GoogleAnalytics.ID }}"></script>
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
|
||||
{{- if gt (len $js.Content) 0 -}}
|
||||
{{- if not hugo.IsProduction -}}
|
||||
<script src="{{ if $absoluteURL }}{{ $js.Permalink }}{{ else }}{{ $js.RelPermalink }}{{ end }}"{{ with $state }} {{ . | safeHTMLAttr }}{{ end }}></script>
|
||||
{{ else -}}
|
||||
{{- if gt (len $js.Content) 0 -}}
|
||||
{{ $integrity := "" }}
|
||||
{{- if hugo.IsProduction -}}
|
||||
{{ $js = $js | minify | fingerprint -}}
|
||||
<script src="{{ if $absoluteURL }}{{ $js.Permalink }}{{ else }}{{ $js.RelPermalink }}{{ end }}" integrity="{{ $js.Data.Integrity }}" crossorigin="anonymous"{{ with $state}} {{ . | safeHTMLAttr }}{{ end }}></script>
|
||||
{{ $integrity = $js.Data.Integrity }}
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
{{ partial "templates/script.html" (dict "link" (cond $absoluteURL $js.Permalink $js.RelPermalink) "category" $cat "state" $state "integrity" $integrity) }}
|
||||
{{ end -}}
|
||||
{{ end }}
|
||||
|
||||
<!-- Initialize arguments -->
|
||||
{{ $args := partial "utilities/InitArgs.html" (dict "structure" "scripts" "args" .) }}
|
||||
{{ if $args.err }}
|
||||
{{ partial "utilities/LogErr.html" (dict
|
||||
"partial" "footer/scripts.html"
|
||||
"msg" "Invalid arguments"
|
||||
"details" $args.errmsg
|
||||
"file" page.File
|
||||
)}}
|
||||
{{ end }}
|
||||
|
||||
<!-- Initialize local arguments -->
|
||||
{{ $patterns := dict
|
||||
"other" "js/critical/*.js"
|
||||
"functional" "js/critical/functional/**.js"
|
||||
"analytics" "js/critical/analytics/**.js"
|
||||
"performance" "js/critical/performance/**.js"
|
||||
"advertisement" "js/critical/advertisement/**.js"
|
||||
"core" "{js/*.js,js/vendor/**.js}"
|
||||
}}
|
||||
|
||||
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
|
||||
{{ $state := "immediate" }}
|
||||
{{ $config := $args.page.Scratch.Get "modules" }}
|
||||
|
||||
{{ $page_modules := slice }}
|
||||
{{ if reflect.IsMap $args.page.Params.modules }}
|
||||
{{ $page_modules = $args.page.Params.modules }}
|
||||
{{ else }}
|
||||
{{ $page_modules = $page_modules | append $args.page.Params.modules }}
|
||||
{{ end }}
|
||||
{{ with $args.page.Scratch.Get "dependencies" }}{{ $page_modules = append $page_modules . | uniq }}{{ end }}
|
||||
|
||||
{{- $categories := dict "other" slice -}}
|
||||
|
||||
{{ $modules := slice }}
|
||||
{{ if eq $args.type "critical" }}
|
||||
{{- $modules = $config.critical -}}
|
||||
{{ $categories = merge $categories (dict "functional" slice "analytics" slice "performance" slice "advertisement" slice) }}
|
||||
{{ else if eq $args.type "core" }}
|
||||
{{- $modules = $config.core -}}
|
||||
{{ else if eq $args.type "optional" }}
|
||||
{{- $modules = $config.optional | intersect $page_modules -}}
|
||||
{{ end }}
|
||||
|
||||
{{ range $cat, $val := $config.categories }}
|
||||
{{ $categories = merge $categories (dict $cat (intersect $val $modules)) }}
|
||||
{{ end }}
|
||||
|
||||
{{ $localize := false }}
|
||||
{{ if gt (intersect (or $config.localize slice) $modules | len) 0 }}{{ $localize = true }}{{ end }}
|
||||
|
||||
{{ $skipTemplate := false }}
|
||||
{{ if gt (intersect (or $config.skipTemplate slice) $modules | len) 0 }}{{ $skipTemplate = true }}{{ end }}
|
||||
|
||||
<!-- Main code -->
|
||||
{{ if not $error }}
|
||||
<!-- include external scripts first -->
|
||||
{{ range $mod, $cfg := $config.modules }}
|
||||
{{ if in $modules $mod }}
|
||||
{{ if or (index $cfg "local") (not hugo.IsServer) }}
|
||||
{{ with index $cfg "url" }}
|
||||
{{ partial "templates/script.html" (dict "link" . "category" (index $cfg "category") "state" (index $cfg "state")) }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
<!-- Bundle the critical and core scripts by category -->
|
||||
{{ if ne $args.type "optional" }}
|
||||
{{ range $cat, $val := $categories }}
|
||||
{{ if or (gt ($val | len) 0) (eq $args.type "critical") }}
|
||||
{{ $match := "" }}
|
||||
{{ if eq $args.type "critical" }}
|
||||
{{ $match = index $patterns $cat }}
|
||||
{{ else if eq $cat "other" }}
|
||||
{{ $match = index $patterns $args.type }}
|
||||
{{ end }}
|
||||
|
||||
{{ partial "partials/bundle-script.html" (dict
|
||||
"page" $args.page
|
||||
"match" $match
|
||||
"destination" (printf "js/%s.bundle.js" $args.type)
|
||||
"cat" $cat
|
||||
"modules" $val
|
||||
"localize" $localize
|
||||
"skipTemplate" $skipTemplate
|
||||
"absoluteURL" $absoluteURL
|
||||
"state" (cond (eq $args.type "critical") "immediate" "async")
|
||||
)}}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ else }}
|
||||
<!-- Bundle the optional scripts by module name and category -->
|
||||
{{ range $cat, $val := $categories }}
|
||||
{{ range $val }}
|
||||
{{ $modconfig := index $config.modules . }}
|
||||
{{ partial "partials/bundle-script.html" (dict
|
||||
"page" $args.page
|
||||
"destination" (printf "js/%s.js" .)
|
||||
"cat" $cat
|
||||
"modules" (slice .)
|
||||
"localize" $modconfig.localize
|
||||
"skipTemplate" $modconfig.disabletemplate
|
||||
"absoluteURL" $absoluteURL
|
||||
"state" $modconfig.state
|
||||
)}}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
@@ -20,7 +20,7 @@
|
||||
</div>
|
||||
<div class="col col-6 text-sm-start">
|
||||
{{ range .Site.Menus.social -}}
|
||||
<a href="{{ .URL }}" {{ if $tab }} target="_blank" rel="noopener noreferrer"{{ end }} aria-label="{{ .Name | safeHTML }}" class="text-decoration-none link-secondary d-inline p-2">
|
||||
<a href="{{ .URL }}" {{ if $tab }} target="_blank" rel="noopener noreferrer nofollow"{{ end }} aria-label="{{ .Name | safeHTML }}" class="text-decoration-none link-secondary d-inline p-2">
|
||||
{{ if hasPrefix .Pre "<i" }}
|
||||
{{ .Pre | safeHTML }}
|
||||
{{ else }}
|
||||
|
@@ -1,13 +1,17 @@
|
||||
<!-- TODO: replace scratch with dict -->
|
||||
|
||||
<!-- Adapted from doks -->
|
||||
{{ with .Title -}}
|
||||
{{ with .Params.meta.title }}
|
||||
{{ $.Scratch.Set "title" . -}}
|
||||
{{ else -}}
|
||||
{{ else }}
|
||||
{{ with .Title -}}
|
||||
{{ $.Scratch.Set "title" . -}}
|
||||
{{ else -}}
|
||||
{{ $.Scratch.Set "title" .Site.Title -}}
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
{{ end }}
|
||||
|
||||
{{ $description := or (partial "utilities/GetDescription.html" (dict "page" .)) .Site.Params.main.description }}
|
||||
{{ $description := or (partial "utilities/GetDescription.html" (dict "page" . "meta" true)) .Site.Params.main.description }}
|
||||
{{ if gt (strings.RuneCount $description) 150 }}
|
||||
{{ $description = print (substr $description 0 150) "..." }}
|
||||
{{ end }}
|
||||
@@ -42,7 +46,7 @@
|
||||
{{ if eq .Kind "404" -}}
|
||||
<meta name="robots" content="noindex, follow">
|
||||
{{ else }}
|
||||
{{ with .Params.robots -}}
|
||||
{{ with or .Params.robots .Params.meta.robots -}}
|
||||
<meta name="robots" content="{{ . }}">
|
||||
{{ else -}}
|
||||
<meta name="robots" content="index, follow">
|
||||
@@ -67,8 +71,6 @@
|
||||
{{ if .Paginator.HasNext -}}
|
||||
<link rel="next" href="{{ .Paginator.Next.URL | absURL }}">
|
||||
{{ end -}}
|
||||
{{ else -}}
|
||||
<link rel="canonical" href="{{ .Permalink }}">
|
||||
{{ end -}}
|
||||
|
||||
{{ partial "head/opengraph.html" . }}
|
||||
|
@@ -1,8 +1,12 @@
|
||||
{{- $transpiler := site.Params.main.build.transpiler | default "libsass" -}}
|
||||
{{- $silence := slice -}}
|
||||
{{- $supportedTranspilers := slice "libsass" "dartsass" -}}
|
||||
{{- if not (in $supportedTranspilers $transpiler) -}}
|
||||
{{- errorf "partial [head/stylesheet.html] - Invalid value for param 'transpiler': %s" $transpiler -}}
|
||||
{{- end -}}
|
||||
{{- if site.Params.main.build.silenceDeprecations -}}
|
||||
{{- $silence = (slice "import" "mixed-decls" "color-functions" "global-builtin") -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
|
||||
{{- $source := .source }}
|
||||
@@ -21,9 +25,9 @@
|
||||
|
||||
{{ if $core }}
|
||||
{{- if reflect.IsSlice $config.excludeSCSS -}}
|
||||
{{- $modules = complement $config.excludeSCSS (or $config.core slice) -}}
|
||||
{{- $modules = complement $config.excludeSCSS (append $config.core $config.critical) -}}
|
||||
{{ else }}
|
||||
{{- $modules = $config.core -}}
|
||||
{{- $modules = append $config.core $config.critical -}}
|
||||
{{ end }}
|
||||
{{- end -}}
|
||||
|
||||
@@ -62,8 +66,8 @@
|
||||
"dark-mode-tint" (default "0%" site.Params.style.darkModeTint)
|
||||
-}}
|
||||
|
||||
{{- $options := (dict "transpiler" $transpiler "targetPath" $target "enableSourceMap" (not hugo.IsProduction) "vars" $vars) -}}
|
||||
{{- $bundle := partial "utilities/bundle" (dict "match" $source "filename" (printf "scss/bundle-%d.scss" now.UnixNano) "modules" $modules "basepath" "scss" "debugging" site.Params.debugging.showSCSS) -}}
|
||||
{{- $options := (dict "transpiler" $transpiler "silenceDeprecations" $silence "targetPath" $target "enableSourceMap" (not hugo.IsProduction) "vars" $vars) -}}
|
||||
{{- $bundle := partial "utilities/bundle.html" (dict "match" $source "filename" (printf "scss/bundle-%d.scss" now.UnixNano) "modules" $modules "basepath" "scss" "debugging" site.Params.debugging.showSCSS) -}}
|
||||
|
||||
{{- if gt ($bundle.Content | len) 0 }}
|
||||
{{- $css := $bundle | resources.ExecuteAsTemplate $target . | toCSS $options -}}
|
||||
|
@@ -3,13 +3,15 @@
|
||||
{{- with .wrapper }}{{ $wrapper = printf "img-wrap %s" . }}{{ end -}}
|
||||
{{ $class := "rounded" }}
|
||||
{{ with .class }}{{ $class = . }}{{ end }}
|
||||
{{- $ratio := .ratio | default "21x9" -}}
|
||||
{{- $ratio := .ratio | default (site.Params.thumbnails.ratio | default "21x9") -}}
|
||||
{{- $thumbnail := "" -}}
|
||||
{{- $anchor := "" -}}
|
||||
{{- $credits := "" -}}
|
||||
{{ $figclass := .figclass }}
|
||||
|
||||
{{- if reflect.IsMap $page.Params.Thumbnail -}}
|
||||
{{- $thumbnail = $page.Params.Thumbnail.url -}}
|
||||
{{- $anchor = $page.Params.Thumbnail.anchor }}
|
||||
{{- $author := "" -}}
|
||||
{{- if and $page.Params.Thumbnail.authorURL "text" $page.Params.Thumbnail.author }}
|
||||
{{- $author = partial "assets/link.html" (dict "destination" $page.Params.Thumbnail.authorURL "text" $page.Params.Thumbnail.author "page" $page) -}}
|
||||
@@ -38,5 +40,15 @@
|
||||
{{- end -}}
|
||||
|
||||
{{ if $thumbnail -}}
|
||||
{{- partial "assets/image.html" (dict "url" $thumbnail "ratio" $ratio "wrapper" $wrapper "class" $class "title" $page.Params.title "caption" $credits "figclass" $figclass "priority" "high") -}}
|
||||
{{- partial "assets/image.html" (dict
|
||||
"url" $thumbnail
|
||||
"anchor" $anchor
|
||||
"ratio" $ratio
|
||||
"wrapper" $wrapper
|
||||
"class" $class
|
||||
"title" $page.Params.title
|
||||
"caption" $credits
|
||||
"figclass" $figclass
|
||||
"priority" "high"
|
||||
) -}}
|
||||
{{ end -}}
|
26
layouts/partials/templates/script.html
Normal file
26
layouts/partials/templates/script.html
Normal file
@@ -0,0 +1,26 @@
|
||||
<!--
|
||||
Copyright © 2024 The Hinode Team / Mark Dumay. All rights reserved.
|
||||
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
|
||||
Visit gethinode.com/license for more details.
|
||||
-->
|
||||
|
||||
<!-- Initialize arguments -->
|
||||
{{ $args := partial "utilities/InitArgs.html" (dict "structure" "script" "args" .) }}
|
||||
{{ if $args.err }}
|
||||
{{ partial "utilities/LogErr.html" (dict
|
||||
"partial" "templates/script.html"
|
||||
"msg" "Invalid arguments"
|
||||
"details" $args.errmsg
|
||||
"file" page.File
|
||||
)}}
|
||||
{{ end }}
|
||||
|
||||
<!-- Initialize local arguments -->
|
||||
{{ $category := cond (ne $args.category "other") $args.category "" }}
|
||||
|
||||
<!-- Main code -->
|
||||
<script src="{{ $args.link }}"
|
||||
{{- with $category }} data-category="{{ . }}"{{ end -}}
|
||||
{{- with $args.integrity }}integrity="{{ . }}" crossorigin="anonymous"{{ end }}
|
||||
{{- with $args.state }} {{ . | safeHTMLAttr }}{{ end -}}>
|
||||
</script>
|
@@ -1,7 +1,7 @@
|
||||
{{ with .module }}
|
||||
{{- $dependencies := page.Scratch.Get "dependencies" -}}
|
||||
{{- if reflect.IsSlice $dependencies -}}
|
||||
{{- $dependencies = complement $dependencies . -}}
|
||||
{{- $dependencies = complement $dependencies (slice .) -}}
|
||||
{{ else }}
|
||||
{{- $dependencies = slice . -}}
|
||||
{{ end }}
|
||||
|
@@ -1,28 +1,18 @@
|
||||
{{ $page := .page }}
|
||||
|
||||
{{ $critical := slice }}
|
||||
{{ $core := slice }}
|
||||
{{ $optional := slice }}
|
||||
{{ $excludeSCSS := slice }}
|
||||
{{ $disableTemplate := slice }}
|
||||
{{ $localize := slice }}
|
||||
{{ $category := dict }}
|
||||
{{ $modules := dict }}
|
||||
|
||||
{{ range $key, $mod := $page.Site.Params.modules }}
|
||||
{{ if eq $key "core" }}
|
||||
{{ warnf "DEPRECATED: module parameter `core` has been deprecated in release v0.24.0" }}
|
||||
{{ $core = $core | append $mod }}
|
||||
{{ else if eq $key "optional" }}
|
||||
{{ warnf "DEPRECATED: module parameter `optional` has been deprecated in release v0.24.0" }}
|
||||
{{ $optional = $optional | append $mod }}
|
||||
{{ else if eq $key "excludescss" }}
|
||||
{{ warnf "DEPRECATED: module parameter `excludeSCSS` has been deprecated in release v0.24.0" }}
|
||||
{{ $excludeSCSS = $excludeSCSS | append $mod }}
|
||||
{{ else if eq $key "disabletemplate" }}
|
||||
{{ warnf "DEPRECATED: module parameter `disableTemplate` has been deprecated in release v0.24.0" }}
|
||||
{{ $disableTemplate = $disableTemplate | append $mod }}
|
||||
{{ else if reflect.IsMap $mod }}
|
||||
{{ range $key, $mod := .Site.Params.modules }}
|
||||
{{ if reflect.IsMap $mod }}
|
||||
{{ $integration := index $mod "integration" }}
|
||||
{{ if eq $integration "core" }}
|
||||
{{ if eq $integration "critical" }}
|
||||
{{ $critical = $critical | append $key }}
|
||||
{{ else if eq $integration "core" }}
|
||||
{{ $core = $core | append $key }}
|
||||
{{ else if eq $integration "optional" }}
|
||||
{{ $optional = $optional | append $key }}
|
||||
@@ -42,6 +32,12 @@
|
||||
{{ $localize = $localize | append $key }}
|
||||
{{ end }}
|
||||
|
||||
{{ $categoryKey := "other" }}
|
||||
{{ with (index $mod "category") }}{{ $categoryKey = . }}{{ end }}
|
||||
{{ $cat := index $category $categoryKey | default slice }}
|
||||
{{ $cat = $cat | append $key}}
|
||||
{{ $category = merge $category (dict $categoryKey $cat) }}
|
||||
|
||||
{{ $modules = merge $modules (dict $key $mod) }}
|
||||
{{ else }}
|
||||
{{ warnf "Unsupported module parameter: %s" $key }}
|
||||
@@ -50,14 +46,16 @@
|
||||
|
||||
{{ $modules := dict
|
||||
"modules" $modules
|
||||
"critical" $critical
|
||||
"core" $core
|
||||
"optional" $optional
|
||||
"excludeSCSS" $excludeSCSS
|
||||
"disableTemplate" $disableTemplate
|
||||
"localize" $localize
|
||||
"categories" $category
|
||||
}}
|
||||
|
||||
{{- if and $page.IsPage (not (in $core "bootstrap")) -}}
|
||||
{{- if and .IsPage (not (in $core "bootstrap")) -}}
|
||||
{{- errorf "Bootstrap is a required module, please add it to 'modules.core' in your site parameters" -}}
|
||||
{{- end -}}
|
||||
|
||||
|
@@ -38,6 +38,12 @@
|
||||
{{- $full := true -}}
|
||||
{{ if isset .Params "full" }}{{ $full = partial "utilities/CastBool.html" (.Get "full") }}{{ end -}}
|
||||
{{- $class := .Get "class" | default "" -}}
|
||||
{{- $options := .Get "options" -}}
|
||||
|
||||
{{ if not (fileExists $file) }}
|
||||
{{ warnf "Cannot find file: '%q'. See %s" $file $.Position }}
|
||||
{{ $error = true }}
|
||||
{{ end }}
|
||||
|
||||
<!-- Main code -->
|
||||
{{- if not $error -}}
|
||||
@@ -60,7 +66,7 @@
|
||||
</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 "" -}}
|
||||
{{- highlight (trim $content "\r\n") $lang $options -}}
|
||||
</div>
|
||||
<div class="collapse multi-{{ $id }}{{ if not $show }} show{{ end }} p-3" id="footer-{{ $id }}"><i>...</i></div>
|
||||
</div>
|
||||
|
24
layouts/shortcodes/ins.html
Normal file
24
layouts/shortcodes/ins.html
Normal file
@@ -0,0 +1,24 @@
|
||||
<!--
|
||||
Copyright © 2024 The Hinode Team / Mark Dumay. All rights reserved.
|
||||
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
|
||||
Visit gethinode.com/license for more details.
|
||||
-->
|
||||
|
||||
{{ $error := false -}}
|
||||
|
||||
{{ $args := partial "utilities/InitArgs.html" (dict "structure" "ins" "args" .Params) }}
|
||||
{{ if $args.err }}
|
||||
{{ partial "utilities/LogErr.html" (dict
|
||||
"partial" "shortcodes/ins.html"
|
||||
"msg" "Invalid arguments"
|
||||
"details" $args.errmsg
|
||||
"file" page.File
|
||||
)}}
|
||||
{{ end }}
|
||||
|
||||
{{ $text := .Inner | default "" }}
|
||||
|
||||
<!-- Main code -->
|
||||
{{- if not $error -}}
|
||||
<ins>{{ $text | strings.TrimSpace | .Page.RenderString }}</ins>
|
||||
{{- end -}}
|
@@ -81,7 +81,9 @@
|
||||
{{ $ref := partial "utilities/GetPage.html" (dict "url" $url "page" .Page) }}
|
||||
{{- if not $ref -}}
|
||||
{{ $pageContext := "" }}
|
||||
{{ with .Page.File }}{{ $pageContext = path.Join "/content" .Dir }}{{ end }}
|
||||
{{ with .Page.File }}
|
||||
{{ $pageContext = path.Dir (strings.TrimPrefix hugo.WorkingDir .Filename) }}
|
||||
{{ end }}
|
||||
{{ $isPageRes := fileExists (path.Join $pageContext $url) }}
|
||||
{{ $isStatic := fileExists (path.Join "/static" $url) }}
|
||||
{{ if and (not $isPageRes) (not $isStatic) }}
|
||||
|
@@ -60,19 +60,23 @@
|
||||
{{ end }}
|
||||
|
||||
<!-- Main code -->
|
||||
<div class="nav{{ with $type }} nav-{{ . }}{{ end }}{{ with $class }} {{ . }}{{ end }}{{ if $vertical }} flex-column{{ end }}" id="{{ $id }}" role="tablist"{{ if $vertical }} aria-orientation="vertical"{{ end }}>
|
||||
<div class="{{ with $type }} nav-{{ . }}{{ end }}">
|
||||
{{ if $vertical }}<div class="row"><div class="col-auto">{{ end }}
|
||||
<ul class="nav{{ with $type }} nav-{{ . }}{{ end }}{{ with $class }} {{ . }}{{ end }}{{ if $vertical }} flex-column{{ end }}" id="nav-{{ $id }}" role="tablist"{{ if $vertical }} aria-orientation="vertical"{{ end }}>
|
||||
{{- range $index, $item := $items -}}
|
||||
{{- $header := partial "utilities/GetVal.html" $item -}}
|
||||
{{- $itemDisabled := in $disabled $index -}}
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link{{ if not $wrap }} text-nowrap{{ end }}{{ if eq $index $showID }} active{{ end }}{{ if $itemDisabled}} disabled {{end }}" id="{{ $id }}-btn-{{ $index }}" data-bs-toggle="pill" data-bs-target="#{{ $id }}-{{ $index }}"
|
||||
type="button" role="tab" aria-controls="{{ $id }}-{{ $index }}" aria-selected="{{ if eq $index 0 }}true{{ else }}false{{ end }}">
|
||||
type="button" role="tab" {{ if $hasContent }}aria-controls="{{ $id }}-{{ $index }}"{{ end }} aria-selected="{{ if eq $index 0 }}true{{ else }}false{{ end }}">
|
||||
{{ $header }}
|
||||
</button>
|
||||
</li>
|
||||
{{ end -}}
|
||||
</ul>
|
||||
{{ if $vertical }}</div><div class="col">{{ end }}
|
||||
{{- if $hasContent -}}
|
||||
<div class="tab-content w-100 {{ if not $vertical }} {{ end }}{{ if eq $type "tabs" }}border border-bottom-0 p-3{{ else if $vertical }}ms-3{{ else }}mt-3{{ end }}">
|
||||
<div class="tab-content w-100 {{ if eq $type "tabs" }}border p-3{{ else if $vertical }}ms-3{{ else }}mt-3{{ end }}">
|
||||
{{- $inner | safeHTML -}}
|
||||
</div>
|
||||
{{- end -}}
|
||||
|
@@ -18,6 +18,8 @@
|
||||
{{ $sortable := false }}
|
||||
{{ $paging := false }}
|
||||
{{ $searchable := false }}
|
||||
{{ $pagingOptionPerPage := 10 }}
|
||||
{{ $pagingOptionPerPageSelect := "" }}
|
||||
|
||||
{{- if .IsNamedParams -}}
|
||||
{{ $breakpoint = .Get "breakpoint" }}
|
||||
@@ -25,6 +27,8 @@
|
||||
{{ if isset .Params "sortable" }}{{ $sortable = partial "utilities/CastBool.html" (.Get "sortable") }}{{ end }}
|
||||
{{ if isset .Params "paging" }}{{ $paging = partial "utilities/CastBool.html" (.Get "paging") }}{{ end }}
|
||||
{{ if isset .Params "searchable" }}{{ $searchable = partial "utilities/CastBool.html" (.Get "searchable") }}{{ end }}
|
||||
{{ if isset .Params "pagingOptionPerPage" }}{{ $pagingOptionPerPage = (.Get "pagingOptionPerPage") }}{{ end }}
|
||||
{{ if isset .Params "pagingOptionPerPageSelect" }}{{ $pagingOptionPerPageSelect = (.Get "OptionPerPageSelect") }}{{ end }}
|
||||
{{ else }}
|
||||
{{ $breakpoint = .Get 0 }}
|
||||
{{ end }}
|
||||
@@ -39,9 +43,16 @@
|
||||
|
||||
{{ $attributes := "" }}
|
||||
{{ if $sortable }}{{ $attributes = printf "%s data-table-sortable=true" $attributes }}{{ end }}
|
||||
{{ if $paging }}{{ $attributes = printf "%s data-table-paging=true" $attributes }}{{ end }}
|
||||
{{ if $paging }}
|
||||
{{ $attributes = printf "%s data-table-paging=true" $attributes }}
|
||||
{{ $attributes = printf "%s data-table-paging-option-perPage=%d" $attributes $pagingOptionPerPage }}
|
||||
{{ if (ne $pagingOptionPerPageSelect "") }}
|
||||
{{ $attributes = printf "%s data-table-paging-option-perPageSelect=%s" $attributes $pagingOptionPerPageSelect }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ if $searchable }}{{ $attributes = printf "%s data-table-searchable=true" $attributes }}{{ end }}
|
||||
|
||||
|
||||
{{- $new := printf `<table class="%s" %s` $target (trim $attributes " ") -}}
|
||||
{{ $input := replaceRE $regex $new $input 1 -}}
|
||||
|
||||
|
149
netlify.toml
149
netlify.toml
@@ -1,88 +1,81 @@
|
||||
# toml-docs-start netlify
|
||||
# Auto-generated file - do not modify
|
||||
[build]
|
||||
publish = "exampleSite/public"
|
||||
command = "npm run build:example"
|
||||
command = 'npm run build:example'
|
||||
publish = 'exampleSite/public'
|
||||
|
||||
[build.environment]
|
||||
DART_SASS_VERSION = "1.77.5"
|
||||
HUGO_VERSION = "0.131.0"
|
||||
HUGO_ENV = "production"
|
||||
HUGO_ENABLEGITINFO = "true"
|
||||
NODE_VERSION = "20.16.0"
|
||||
NPM_VERSION = "10.8.1"
|
||||
# toml-docs-end netlify
|
||||
[build.environment]
|
||||
DART_SASS_VERSION = '1.78.0'
|
||||
HUGO_ENABLEGITINFO = 'true'
|
||||
HUGO_ENV = 'production'
|
||||
HUGO_VERSION = '0.134.1'
|
||||
NODE_VERSION = '20.17.0'
|
||||
NPM_VERSION = '10.8.2'
|
||||
|
||||
[[headers]]
|
||||
for = "/*"
|
||||
[headers.values]
|
||||
Strict-Transport-Security = "max-age=31536000; includeSubDomains; preload"
|
||||
X-Content-Type-Options = "nosniff"
|
||||
X-XSS-Protection = "1; mode=block"
|
||||
Content-Security-Policy = """\
|
||||
default-src 'self'; \
|
||||
child-src 'self' app.netlify.com; \
|
||||
script-src 'self' \
|
||||
https://*.netlify.app app.netlify.com netlify-cdp-loader.netlify.app \
|
||||
https://*.google-analytics.com https://*.googletagmanager.com; \
|
||||
style-src 'self' \
|
||||
https://*.netlify.app https://fonts.googleapis.com https://www.youtube.com; \
|
||||
object-src 'none'; \
|
||||
base-uri 'self'; \
|
||||
connect-src 'self'
|
||||
https://*.google-analytics.com https://*.analytics.google.com https://*.googletagmanager.com; \
|
||||
font-src 'self' https://*.netlify.app https://fonts.gstatic.com; \
|
||||
frame-src 'self' https://player.cloudinary.com https://player.vimeo.com https://www.youtube-nocookie.com https://www.youtube.com \
|
||||
app.netlify.com; \
|
||||
img-src 'self' data: https://*.imgix.net https://*.imagekit.io https://*.cloudinary.com https://*.netlify.app https://i.vimeocdn.com https://i.ytimg.com https://*.google-analytics.com https://*.googletagmanager.com https://tile.openstreetmap.org; \
|
||||
manifest-src 'self'; \
|
||||
media-src 'self' \
|
||||
"""
|
||||
X-Frame-Options = "SAMEORIGIN"
|
||||
Referrer-Policy = "strict-origin"
|
||||
Permissions-Policy = """\
|
||||
geolocation=(), \
|
||||
midi=(), \
|
||||
sync-xhr=(), \
|
||||
microphone=(), \
|
||||
camera=(), \
|
||||
magnetometer=(), \
|
||||
gyroscope=(), \
|
||||
payment=() \
|
||||
"""
|
||||
cache-control = """\
|
||||
max-age=0, \
|
||||
no-cache, \
|
||||
no-store, \
|
||||
must-revalidate \
|
||||
"""
|
||||
Access-Control-Allow-Origin = "*"
|
||||
[context]
|
||||
[context.branch-deploy]
|
||||
command = 'npm run build:example -- -b $DEPLOY_PRIME_URL'
|
||||
|
||||
[context.deploy-preview]
|
||||
command = "npm run build:example -- -b $DEPLOY_PRIME_URL"
|
||||
|
||||
[context.branch-deploy]
|
||||
command = "npm run build:example -- -b $DEPLOY_PRIME_URL"
|
||||
[context.deploy-preview]
|
||||
command = 'npm run build:example -- -b $DEPLOY_PRIME_URL'
|
||||
|
||||
[dev]
|
||||
framework = "#custom"
|
||||
command = "npm run start:example"
|
||||
targetPort = 1313
|
||||
port = 8888
|
||||
publish = "public"
|
||||
autoLaunch = false
|
||||
|
||||
# toml-docs-start plugins
|
||||
[[plugins]]
|
||||
package = "@gethinode/netlify-plugin-dartsass"
|
||||
command = 'npm run start:example'
|
||||
framework = '#custom'
|
||||
port = 8888
|
||||
publish = 'public'
|
||||
targetPort = 1313
|
||||
|
||||
[[plugins]]
|
||||
package = "netlify-plugin-hugo-cache-resources"
|
||||
[plugins.inputs]
|
||||
# Redirected in exampleSite/config/_default/hugo.toml
|
||||
# srcdir = ""
|
||||
package = '@gethinode/netlify-plugin-dartsass'
|
||||
|
||||
[[plugins]]
|
||||
package = 'netlify-plugin-hugo-cache-resources'
|
||||
|
||||
[[headers]]
|
||||
for = '/**'
|
||||
|
||||
[headers.values]
|
||||
Access-Control-Allow-Origin = '*'
|
||||
Content-Security-Policy = """
|
||||
base-uri 'self'; \
|
||||
connect-src 'self' *.cookieyes.com cdn-cookieyes.com *.google-analytics.com *.analytics.google.com *.googletagmanager.com; \
|
||||
default-src 'none'; \
|
||||
font-src 'self' fonts.gstatic.com; \
|
||||
form-action 'self'; \
|
||||
frame-src player.cloudinary.com www.youtube-nocookie.com www.youtube.com player.vimeo.com; \
|
||||
img-src 'self' cdn-cookieyes.com *.google-analytics.com *.googletagmanager.com data: *.imgix.net *.imagekit.io *.cloudinary.com i.ytimg.com tile.openstreetmap.org i.vimeocdn.com; \
|
||||
manifest-src 'self'; \
|
||||
media-src 'self'; \
|
||||
object-src 'none'; \
|
||||
script-src 'self' cdn-cookieyes.com *.google-analytics.com *.googletagmanager.com player.vimeo.com; \
|
||||
style-src 'self' 'unsafe-inline' www.youtube.com; \
|
||||
"""
|
||||
Permissions-Policy = 'geolocation=(), midi=(), sync-xhr=(), microphone=(), camera=(), magnetometer=(), gyroscope=(), fullscreen=(), payment=() '
|
||||
Referrer-Policy = 'strict-origin'
|
||||
Strict-Transport-Security = 'max-age=31536000; includeSubDomains; preload'
|
||||
X-Content-Type-Options = 'nosniff'
|
||||
X-Frame-Options = 'SAMEORIGIN'
|
||||
X-XSS-Protection = '1; mode=block'
|
||||
cache-control = 'max-age=0, no-cache, no-store, must-revalidate '
|
||||
|
||||
[[redirects]]
|
||||
from = '/fr/*'
|
||||
status = 404
|
||||
to = '/fr/404.html'
|
||||
|
||||
[[redirects]]
|
||||
from = '/nl/*'
|
||||
status = 404
|
||||
to = '/nl/404.html'
|
||||
|
||||
[[redirects]]
|
||||
from = '/en/*'
|
||||
status = 404
|
||||
to = '/en/404.html'
|
||||
|
||||
[[redirects]]
|
||||
from = '/*'
|
||||
status = 404
|
||||
to = '/en/404.html'
|
||||
|
||||
# [[plugins]]
|
||||
# package = "@netlify/plugin-lighthouse"
|
||||
# [plugins.inputs]
|
||||
# output_path = "reports/lighthouse.html"
|
||||
# toml-docs-end plugins
|
||||
|
1633
package-lock.json
generated
1633
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
21
package.json
21
package.json
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@gethinode/hinode",
|
||||
"version": "0.27.0-alpha4",
|
||||
"version": "0.27.17",
|
||||
"description": "Hinode is a clean documentation and blog theme for Hugo, an open-source static site generator",
|
||||
"keywords": [
|
||||
"hugo",
|
||||
@@ -28,6 +28,8 @@
|
||||
"build:example": "npm run -s prebuild && hugo --gc --minify -s exampleSite",
|
||||
"build:example:ci": "npm run -s prebuild && hugo --gc --minify -s exampleSite -e ci",
|
||||
"build:debug": "hugo -e debug --debug",
|
||||
"build:headers": "hugo --renderSegments headers -d prebuild && cpy prebuild/server.toml config/_default/ --flat",
|
||||
"build:example:headers": "hugo -s exampleSite --renderSegments headers -d prebuild && cpy exampleSite/prebuild/netlify.toml ./ --flat && cpy exampleSite/prebuild/server.toml exampleSite/config/_default/ --flat",
|
||||
"build:preview": "npm run build -D -F",
|
||||
"clean:public": "rimraf public exampleSite/public",
|
||||
"clean:install": "rimraf package-lock.json node_modules",
|
||||
@@ -36,7 +38,7 @@
|
||||
"lint:styles": "stylelint \"assets/scss/**/*.{css,sass,scss,sss,less}\" --allow-empty-input",
|
||||
"lint:markdown": "markdownlint-cli2 \"*.md\" \"content/**/*.md\" \"exampleSite/**/*.md\"",
|
||||
"mod:clean": "hugo mod clean",
|
||||
"mod:update": "rimraf _vendor && hugo mod get && npm run -s mod:vendor && npm run -s mod:tidy",
|
||||
"mod:update": "rimraf _vendor && hugo mod get -u ./... && npm run -s mod:vendor && npm run -s mod:tidy",
|
||||
"mod:tidy": "hugo mod tidy && hugo mod tidy -s exampleSite",
|
||||
"mod:vendor": "rimraf _vendor && hugo mod vendor",
|
||||
"test": "npm run -s lint",
|
||||
@@ -67,26 +69,27 @@
|
||||
},
|
||||
"homepage": "https://gethinode.com",
|
||||
"dependencies": {
|
||||
"@fullhuman/postcss-purgecss": "^6.0.0",
|
||||
"@fullhuman/postcss-purgecss": "^7.0.2",
|
||||
"autoprefixer": "^10.4.20",
|
||||
"cssnano": "^7.0.6",
|
||||
"cssnano-preset-advanced": "^7.0.6",
|
||||
"hugo-bin": "0.131.1",
|
||||
"hugo-bin": "0.137.0",
|
||||
"purgecss-whitelister": "^2.4.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@gethinode/netlify-plugin-dartsass": "^0.3.0",
|
||||
"eslint": "^9.9.1",
|
||||
"markdownlint-cli2": "^0.14.0",
|
||||
"neostandard": "^0.11.4",
|
||||
"cpy-cli": "^5.0.0",
|
||||
"eslint": "^9.17.0",
|
||||
"markdownlint-cli2": "^0.16.0",
|
||||
"neostandard": "^0.12.0",
|
||||
"netlify-plugin-hugo-cache-resources": "^0.2.1",
|
||||
"npm-run-all": "^4.1.5",
|
||||
"postcss-cli": "^11.0.0",
|
||||
"replace-in-files-cli": "^3.0.0",
|
||||
"rimraf": "^6.0.1",
|
||||
"shx": "^0.3.4",
|
||||
"stylelint": "^16.9.0",
|
||||
"stylelint-config-standard-scss": "^13.1.0"
|
||||
"stylelint": "^16.12.0",
|
||||
"stylelint-config-standard-scss": "^14.0.0"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@gethinode/netlify-plugin-dartsass": "^0.3.0",
|
||||
|
@@ -6,7 +6,7 @@ homepage = "https://gethinode.com"
|
||||
demosite = "https://demo.gethinode.com"
|
||||
tags = ["blog", "documentation", "minimal", "modern", "customizable", "search", "bootstrap"]
|
||||
features = ["security aware", "fast by default", "seo-ready", "development tools", "bootstrap framework", "netlify-ready", "full text search", "page layouts", "versioned documentation"]
|
||||
min_version = "0.134.0"
|
||||
min_version = "0.139.0"
|
||||
|
||||
[author]
|
||||
name = "Mark Dumay"
|
||||
|
Reference in New Issue
Block a user