mirror of
https://github.com/gethinode/hinode.git
synced 2025-10-07 10:04:22 +00:00
Compare commits
211 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
2edf12fb8b | ||
![]() |
fbdf79e05e | ||
![]() |
92e37ef847 | ||
![]() |
62084600a5 | ||
![]() |
8867ab1cbe | ||
![]() |
c3e09c341f | ||
![]() |
6cf4deceb7 | ||
![]() |
0dd790cf7a | ||
![]() |
6353b68c3e | ||
![]() |
fadd5b2fb5 | ||
![]() |
1d4add88ec | ||
![]() |
0b779d5f3a | ||
![]() |
2898745383 | ||
![]() |
892546886b | ||
![]() |
b09f039929 | ||
![]() |
86bcfa21fa | ||
![]() |
f97eeff745 | ||
![]() |
205e10d86b | ||
![]() |
3eb0794f08 | ||
![]() |
a1abc5970f | ||
![]() |
7b0839ad92 | ||
![]() |
3f20ddcd65 | ||
![]() |
24e0282eb7 | ||
![]() |
9fba521bc5 | ||
![]() |
60a34aac97 | ||
![]() |
15daf8c090 | ||
![]() |
7e4459ca8d | ||
![]() |
5ef2aad372 | ||
![]() |
4c6f4a9da9 | ||
![]() |
fd7f3692dd | ||
![]() |
f48b462c51 | ||
![]() |
287bc7700c | ||
![]() |
ee5e2745e2 | ||
![]() |
31fb07e180 | ||
![]() |
aaf8513688 | ||
![]() |
acd2812218 | ||
![]() |
665357e538 | ||
![]() |
f678352b78 | ||
![]() |
17b39caef7 | ||
![]() |
38ab9f2e43 | ||
![]() |
aa4da56910 | ||
![]() |
ea8e851e45 | ||
![]() |
90e6c9869d | ||
![]() |
628eb99f62 | ||
![]() |
a0293cc081 | ||
![]() |
d37dcdd20c | ||
![]() |
f0ff631b0d | ||
![]() |
b84bd07073 | ||
![]() |
b800906956 | ||
![]() |
049b38d3c1 | ||
![]() |
27c2500c92 | ||
![]() |
a182b2a134 | ||
![]() |
43abf793b8 | ||
![]() |
e11fa8d377 | ||
![]() |
fb94544bb0 | ||
![]() |
67f687d6b9 | ||
![]() |
879efc07e8 | ||
![]() |
29bcb26d04 | ||
![]() |
e04a8dc0ed | ||
![]() |
c7e70bf933 | ||
![]() |
1700abc7de | ||
![]() |
3ef857dba9 | ||
![]() |
5acc2e8f9e | ||
![]() |
0caa00a1a1 | ||
![]() |
b27a5ac7cb | ||
![]() |
24261c9193 | ||
![]() |
d1aa9c0f7c | ||
![]() |
a18d387379 | ||
![]() |
2d9cbf9195 | ||
![]() |
64abda14ce | ||
![]() |
3625675577 | ||
![]() |
e6e115a65d | ||
![]() |
9832b566db | ||
![]() |
f3211eabe0 | ||
![]() |
82c1d00af4 | ||
![]() |
70386eaeec | ||
![]() |
7413155dea | ||
![]() |
cfd1706f5f | ||
![]() |
5eca63c50d | ||
![]() |
d3f471a281 | ||
![]() |
b4acd7aef2 | ||
![]() |
49a3ef3c42 | ||
![]() |
56eaa9d90b | ||
![]() |
492dbbec24 | ||
![]() |
d2fc5e3433 | ||
![]() |
b5cc3f6d84 | ||
![]() |
e1e1041c1b | ||
![]() |
e1cac645a7 | ||
![]() |
d23d533575 | ||
![]() |
d447a4a65a | ||
![]() |
3a466277e3 | ||
![]() |
2b09ceef93 | ||
![]() |
ee30409257 | ||
![]() |
c5edb65550 | ||
![]() |
70583bdb33 | ||
![]() |
8e1a299a72 | ||
![]() |
e20aba4907 | ||
![]() |
1aedf22923 | ||
![]() |
e77671ffef | ||
![]() |
433f8ef60d | ||
![]() |
acb261ba69 | ||
![]() |
b04b5a136f | ||
![]() |
953f4ba908 | ||
![]() |
90e65b5614 | ||
![]() |
944437ea4c | ||
![]() |
5d0593bf65 | ||
![]() |
4935e627f6 | ||
![]() |
f7d535d025 | ||
![]() |
67280d6ad0 | ||
![]() |
e21332d016 | ||
![]() |
f306bc2b22 | ||
![]() |
475745cc6c | ||
![]() |
90c43c84e5 | ||
![]() |
a81b672731 | ||
![]() |
b86ec388b6 | ||
![]() |
5dd0fce394 | ||
![]() |
a66dc2f91c | ||
![]() |
0072292522 | ||
![]() |
d3f534629d | ||
![]() |
1407e1ba0d | ||
![]() |
b9bce4800c | ||
![]() |
a5a424b6ed | ||
![]() |
9c8b21233c | ||
![]() |
b564696728 | ||
![]() |
c669c82324 | ||
![]() |
8014f4d636 | ||
![]() |
7f80f52294 | ||
![]() |
485db3808f | ||
![]() |
7b10339aea | ||
![]() |
ed5c32a7a4 | ||
![]() |
c42a379ca0 | ||
![]() |
22c17c3123 | ||
![]() |
e4f82c1304 | ||
![]() |
07fa46b9a6 | ||
![]() |
809ce0d4ad | ||
![]() |
deb97e0e29 | ||
![]() |
14a89a2ff9 | ||
![]() |
81b40d145d | ||
![]() |
1dfce3d445 | ||
![]() |
145b2c29d1 | ||
![]() |
77fe046bea | ||
![]() |
63250c6ac9 | ||
![]() |
54e0f720bd | ||
![]() |
423670f95f | ||
![]() |
78560aa07a | ||
![]() |
1c6ff7ac55 | ||
![]() |
eb9b7ea8f0 | ||
![]() |
753b949af2 | ||
![]() |
2322cdcdc0 | ||
![]() |
edc8128395 | ||
![]() |
cc22f73f5c | ||
![]() |
8312de35c8 | ||
![]() |
a3a8d7e08c | ||
![]() |
0513692cf5 | ||
![]() |
bfa6e00c2f | ||
![]() |
c61fa6b4c7 | ||
![]() |
c754451002 | ||
![]() |
8d4cb82863 | ||
![]() |
ae18134218 | ||
![]() |
fb20543d88 | ||
![]() |
14d1489b60 | ||
![]() |
e99ac83fbc | ||
![]() |
d96b103180 | ||
![]() |
7f1dc95402 | ||
![]() |
e3420e357c | ||
![]() |
5ee51ebb18 | ||
![]() |
684ec0f823 | ||
![]() |
5335e3d607 | ||
![]() |
3fc51e6158 | ||
![]() |
4a20e8beef | ||
![]() |
163ac52332 | ||
![]() |
176c5447a8 | ||
![]() |
1a88fa93bb | ||
![]() |
b0d266aedc | ||
![]() |
eba81c236a | ||
![]() |
cdca92ea02 | ||
![]() |
a4743aabf5 | ||
![]() |
cf8465e627 | ||
![]() |
86941f05d0 | ||
![]() |
cbb777f524 | ||
![]() |
d20d00e42f | ||
![]() |
348981a1a0 | ||
![]() |
0942d79e2c | ||
![]() |
0251bd1838 | ||
![]() |
ae5e240cf1 | ||
![]() |
dd127b973a | ||
![]() |
63b186a2e5 | ||
![]() |
bc71ba1d19 | ||
![]() |
9c3bd970a5 | ||
![]() |
9f143786af | ||
![]() |
e8ccada6f3 | ||
![]() |
a40092b1eb | ||
![]() |
00965b5224 | ||
![]() |
92dc97d325 | ||
![]() |
2394f148e5 | ||
![]() |
8d259a3e3a | ||
![]() |
1c8912e92e | ||
![]() |
207c08431f | ||
![]() |
d2703d4885 | ||
![]() |
4728191370 | ||
![]() |
cd40d75962 | ||
![]() |
2d4732d03b | ||
![]() |
e3c256b41f | ||
![]() |
f0a53f252c | ||
![]() |
a1273d99d5 | ||
![]() |
4e62956c82 | ||
![]() |
cf096a7f6a | ||
![]() |
ee790dc6fd | ||
![]() |
1922fc825e | ||
![]() |
82f3837db1 | ||
![]() |
69cf1ccf6c |
@@ -1,6 +1,8 @@
|
||||
assets/js/critical/languageSelector.js
|
||||
assets/js/critical/color.js
|
||||
assets/js/analytics.js
|
||||
assets/js/flexsearch.js
|
||||
assets/js/navbar.js
|
||||
assets/js/sharing.js
|
||||
assets/js/vendor
|
||||
node_modules
|
||||
|
2
.github/workflows/lint-build.yml
vendored
2
.github/workflows/lint-build.yml
vendored
@@ -43,7 +43,7 @@ jobs:
|
||||
matrix:
|
||||
os: [macos-latest, windows-latest, ubuntu-latest]
|
||||
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
|
||||
node-version: [18.x, 20.x]
|
||||
node-version: [20.x, 22.x]
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
||||
|
@@ -61,32 +61,16 @@
|
||||
})
|
||||
|
||||
window.addEventListener('DOMContentLoaded', () => {
|
||||
setTheme(getTheme())
|
||||
const light = (document.documentElement.getAttribute('data-bs-theme') === 'light')
|
||||
|
||||
document.querySelectorAll('.ball').forEach(ball => {
|
||||
ball.classList.add('notransition');
|
||||
})
|
||||
|
||||
document.querySelectorAll('.navbar-mode-selector').forEach(chk => {
|
||||
chk.checked = light
|
||||
chk.addEventListener('change', function () {
|
||||
document.documentElement.setAttribute('data-bs-theme-animate', 'true')
|
||||
toggleTheme()
|
||||
})
|
||||
})
|
||||
|
||||
document.querySelectorAll('.ball').forEach(ball => {
|
||||
ball.offsetHeight; // flush css changes
|
||||
ball.classList.remove('notransition');
|
||||
})
|
||||
})
|
||||
|
||||
window.addEventListener('load', () => {
|
||||
const light = (document.documentElement.getAttribute('data-bs-theme') === 'light')
|
||||
document.querySelectorAll('.navbar-mode-selector').forEach(chk => {
|
||||
chk.checked = light
|
||||
})
|
||||
});
|
||||
// initialize theme directly when script is invoked
|
||||
setTheme(getTheme())
|
||||
})()
|
||||
|
||||
{{- end -}}
|
65
assets/js/critical/languageSelector.js
Normal file
65
assets/js/critical/languageSelector.js
Normal file
@@ -0,0 +1,65 @@
|
||||
/* eslint-disable */
|
||||
{{- if site.Params.main.enableLanguageSelectionStorage -}}
|
||||
|
||||
(() => {
|
||||
'use strict'
|
||||
|
||||
// Function to get the selected language from localStorage
|
||||
function getLanguage () {
|
||||
return localStorage.getItem('selectedLanguage')
|
||||
}
|
||||
|
||||
// Function to set the selected language in localStorage
|
||||
function setLanguage (language) {
|
||||
localStorage.setItem('selectedLanguage', language)
|
||||
}
|
||||
|
||||
// Function to apply the selected language to the website
|
||||
function applyLanguage (language, href) {
|
||||
if (document.documentElement.lang !== language) {
|
||||
if (href) {
|
||||
if (window.location.pathname !== href) {
|
||||
window.location.href = href
|
||||
}
|
||||
} else {
|
||||
window.location.href = '/' + language + '/'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Event listener for language selection
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
const storedLanguage = getLanguage()
|
||||
const languageItems = document.querySelectorAll('#language-selector .dropdown-item')
|
||||
|
||||
if (languageItems.length > 0) {
|
||||
// Redirect if the stored language differs from the active language
|
||||
if ((storedLanguage) && (document.documentElement.lang !== storedLanguage)) {
|
||||
languageItems.forEach(item => {
|
||||
if (item.getAttribute('hreflang') === storedLanguage) {
|
||||
applyLanguage(storedLanguage, item.getAttribute('href'))
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// Update the stored language when the user selects a new one
|
||||
languageItems.forEach(item => {
|
||||
item.addEventListener('click', () => {
|
||||
const selectedLanguage = item.getAttribute('hreflang')
|
||||
|
||||
if (selectedLanguage) {
|
||||
setLanguage(selectedLanguage)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
else {
|
||||
// Redirect to the localized homepage
|
||||
const defaultLang = '{{ site.LanguageCode | default site.Language.Lang }}'
|
||||
let language = storedLanguage ? storedLanguage : defaultLang
|
||||
window.location.href = '/' + language + '/'
|
||||
}
|
||||
})
|
||||
})()
|
||||
{{- end -}}
|
||||
/* eslint-enable */
|
@@ -1,3 +1,4 @@
|
||||
const fixed = {{ site.Params.navigation.fixed }}
|
||||
const navbar = document.querySelector('.navbar')
|
||||
const togglers = document.querySelectorAll('.main-nav-toggler')
|
||||
const modeSelectors = document.querySelectorAll('.switch-mode-collapsed')
|
||||
@@ -11,13 +12,16 @@ function updateNavbar () {
|
||||
} else {
|
||||
navbar.classList.remove('nav-active')
|
||||
const defaultTheme = navbar.getAttribute('data-bs-overlay')
|
||||
navbar.setAttribute('data-bs-theme', defaultTheme)
|
||||
|
||||
if (defaultTheme) {
|
||||
navbar.setAttribute('data-bs-theme', defaultTheme)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ((navbar !== null) && (window.performance.getEntriesByType)) {
|
||||
if (window.performance.getEntriesByType('navigation')[0].type === 'reload') {
|
||||
updateNavbar()
|
||||
fixed && updateNavbar()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,7 +33,7 @@ if (navbar !== null && togglers !== null) {
|
||||
attributeFilter: ['data-bs-theme']
|
||||
}
|
||||
const Observer = new MutationObserver((mutationrecords) => {
|
||||
updateNavbar()
|
||||
fixed && updateNavbar()
|
||||
})
|
||||
Observer.observe(html, config)
|
||||
|
||||
@@ -40,7 +44,7 @@ if (navbar !== null && togglers !== null) {
|
||||
|
||||
// set the navbar background color to opaque when scrolling past a breakpoint
|
||||
window.onscroll = () => {
|
||||
updateNavbar()
|
||||
fixed && updateNavbar()
|
||||
}
|
||||
|
||||
// set the navbar background color to opaque when expanded
|
||||
|
3
assets/js/video.js
Normal file
3
assets/js/video.js
Normal file
@@ -0,0 +1,3 @@
|
||||
document.querySelectorAll('[data-video-padding]').forEach(element => {
|
||||
element.style.paddingBottom = element.getAttribute('data-video-padding')
|
||||
})
|
@@ -1,5 +1,5 @@
|
||||
@if $enable-dark-mode {
|
||||
body {
|
||||
[data-bs-theme-animate="true"] body {
|
||||
transition: background-color 0.5s, color 0.5s;
|
||||
}
|
||||
}
|
||||
|
@@ -1,6 +1,54 @@
|
||||
.blockquote {
|
||||
// background: var(--bs-light);
|
||||
border-left: 0.3rem solid;
|
||||
border-color: $secondary;
|
||||
padding: 1rem 1.5rem;
|
||||
}
|
||||
|
||||
.blockquote-alert {
|
||||
--bs-blockquote-alert-color: $secondary;
|
||||
|
||||
border-left: 0.3rem solid;
|
||||
border-color: var(--bs-blockquote-alert-color);
|
||||
padding: .5rem 1.5rem;
|
||||
}
|
||||
|
||||
.blockquote-alert > p:nth-of-type(2) {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.blockquote-alert-heading {
|
||||
font-weight: bold;
|
||||
color: var(--bs-blockquote-alert-color);
|
||||
}
|
||||
|
||||
.blockquote-alert-caution {
|
||||
--bs-blockquote-alert-color: var(--#{$prefix}danger);
|
||||
}
|
||||
|
||||
.blockquote-alert-important {
|
||||
--bs-blockquote-alert-color: var(--#{$prefix}primary);
|
||||
}
|
||||
|
||||
.blockquote-alert-note {
|
||||
--bs-blockquote-alert-color: var(--#{$prefix}info);
|
||||
}
|
||||
|
||||
.blockquote-alert-tip {
|
||||
--bs-blockquote-alert-color: var(--#{$prefix}success);
|
||||
}
|
||||
|
||||
.blockquote-alert-warning {
|
||||
--bs-blockquote-alert-color: var(--#{$prefix}warning);
|
||||
}
|
||||
|
||||
.blockquote-alert a.btn-link {
|
||||
--bs-link-color: var(--bs-blockquote-alert-color);
|
||||
--bs-link-hover-color: color-mix(in srgb, var(--bs-link-color), black 20%);
|
||||
|
||||
color: var(--bs-link-color) !important;
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: var(--bs-link-hover-color) !important;
|
||||
}
|
||||
}
|
||||
|
@@ -44,4 +44,7 @@ a.btn {
|
||||
|
||||
.btn-link {
|
||||
--bs-btn-padding-x: 0;
|
||||
--bs-btn-padding-y: 0;
|
||||
|
||||
margin: 0 !important;
|
||||
}
|
||||
|
@@ -5,11 +5,21 @@
|
||||
background-color: var(--#{$prefix}secondary-bg);
|
||||
}
|
||||
|
||||
.card-img-wrap {
|
||||
.card .card-img-wrap {
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.card .card-img-wrap:has(.card-img-top) {
|
||||
border-top-left-radius: var(--#{$prefix}card-inner-border-radius);
|
||||
border-top-right-radius: var(--#{$prefix}card-inner-border-radius);
|
||||
}
|
||||
|
||||
.card .card-img-wrap:has(.card-img-bottom) {
|
||||
border-bottom-right-radius: var(--#{$prefix}card-inner-border-radius);
|
||||
border-bottom-left-radius: var(--#{$prefix}card-inner-border-radius);
|
||||
}
|
||||
|
||||
.card-zoom {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
@@ -1,11 +1,81 @@
|
||||
// stylelint-disable annotation-no-unknown
|
||||
|
||||
// adapted from https://www.codeply.com/p/UsTEwDkzNp#
|
||||
.checkbox {
|
||||
opacity: 0;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.mode-switch {
|
||||
--#{$prefix}mode-switch-width: 50px;
|
||||
}
|
||||
|
||||
.mode-switch .label {
|
||||
border-color: var(--#{$prefix}border-color);
|
||||
border-style: solid;
|
||||
border-width: 1px;
|
||||
border-radius: var(--#{$prefix}mode-switch-width);
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 5px;
|
||||
position: relative;
|
||||
height: calc(1px + var(--#{$prefix}mode-switch-width) / 2);
|
||||
width: var(--#{$prefix}mode-switch-width);
|
||||
transform: scale(0.9);
|
||||
}
|
||||
|
||||
.notransition {
|
||||
-webkit-transition: none !important;
|
||||
-moz-transition: none !important;
|
||||
-o-transition: none !important;
|
||||
transition: none !important;
|
||||
}
|
||||
|
||||
.mode-switch .label .ball {
|
||||
background-color: var(--#{$prefix}border-color);
|
||||
border-radius: 50%;
|
||||
position: absolute;
|
||||
top: 2px;
|
||||
left: 2px;
|
||||
height: calc((var(--#{$prefix}mode-switch-width) / 2) - 5px);
|
||||
width: calc((var(--#{$prefix}mode-switch-width) / 2) - 5px);
|
||||
transition: transform 0.2s linear;
|
||||
}
|
||||
|
||||
.mode-switch .checkbox:checked + .label .ball {
|
||||
transform: translateX(calc((var(--#{$prefix}mode-switch-width) / 2) - 1px));
|
||||
}
|
||||
|
||||
@if $enable-dark-mode {
|
||||
[data-bs-theme="light"] .mode-switch .ball {
|
||||
transform: translateX(calc((var(--#{$prefix}mode-switch-width) / 2) - 1px));
|
||||
}
|
||||
}
|
||||
|
||||
.mode-switch .fa-moon {
|
||||
color: $yellow;
|
||||
transform: scale(0.8);
|
||||
}
|
||||
|
||||
.mode-switch .fa-sun {
|
||||
color: var(--#{$prefix}bs-body-color);
|
||||
transform: scale(0.8);
|
||||
}
|
||||
|
||||
// Source: https://jsfiddle.net/njhgr40m/
|
||||
|
||||
@if $enable-dark-mode {
|
||||
[data-bs-theme-animate="true"] .navbar {
|
||||
transition: 0.5s ease-in-out;
|
||||
}
|
||||
}
|
||||
|
||||
.navbar {
|
||||
--bs-navbar-expanded-color: var(--bs-body-bg);
|
||||
--bs-navbar-toggler-color: var(--bs-navbar-hover-color);
|
||||
|
||||
transition: 0.5s ease-in-out;
|
||||
background-color: transparent;
|
||||
|
||||
@each $state, $val in $theme-colors {
|
||||
@@ -22,6 +92,15 @@
|
||||
margin: 0 .15rem;
|
||||
}
|
||||
|
||||
.navbar-title {
|
||||
display: inline-block;
|
||||
white-space: normal;
|
||||
text-align: center !important;
|
||||
vertical-align: middle;
|
||||
padding: 0 $spacer;
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
.navbar-contrast .nav-link.active, .navbar-contrast .nav-link.show, .navbar-contrast .nav-link:hover {
|
||||
border-bottom: solid 1px var(--bs-navbar-hover-color);
|
||||
margin-bottom: -1px;
|
||||
@@ -33,6 +112,16 @@
|
||||
--bs-navbar-disabled-color: white !important;
|
||||
--bs-navbar-active-color: white !important;
|
||||
--bs-navbar-toggler-color: white;
|
||||
|
||||
.navbar-title, .mode-switch {
|
||||
--#{$prefix}border-color: white;
|
||||
|
||||
color: white !important;
|
||||
}
|
||||
|
||||
.mode-switch .fa-moon {
|
||||
color: $white;
|
||||
}
|
||||
}
|
||||
|
||||
.navbar-expanded {
|
||||
@@ -112,7 +201,7 @@
|
||||
background-color: var(--bs-navbar-toggler-color);
|
||||
}
|
||||
|
||||
.emphasis, .emphasis-dark, .emphasis-light {
|
||||
.emphasis {
|
||||
background-color: var(--bs-navbar-toggler-color);
|
||||
}
|
||||
|
||||
@@ -133,15 +222,6 @@
|
||||
--navbar-offset: #{$navbar-offset-xs};
|
||||
}
|
||||
|
||||
.navbar-title {
|
||||
display: inline-block;
|
||||
white-space: normal;
|
||||
text-align: center !important;
|
||||
vertical-align: middle;
|
||||
padding: 0 $spacer;
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
.navbar-container {
|
||||
width: 100% !important;
|
||||
}
|
||||
@@ -235,60 +315,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
// adapted from https://www.codeply.com/p/UsTEwDkzNp#
|
||||
.checkbox {
|
||||
opacity: 0;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.mode-switch {
|
||||
--#{$prefix}mode-switch-width: 50px;
|
||||
}
|
||||
|
||||
.mode-switch .label {
|
||||
border-color: var(--#{$prefix}border-color);
|
||||
border-style: solid;
|
||||
border-width: 1px;
|
||||
border-radius: var(--#{$prefix}mode-switch-width);
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 5px;
|
||||
position: relative;
|
||||
height: calc(1px + var(--#{$prefix}mode-switch-width) / 2);
|
||||
width: var(--#{$prefix}mode-switch-width);
|
||||
transform: scale(0.9);
|
||||
}
|
||||
|
||||
.notransition {
|
||||
-webkit-transition: none !important;
|
||||
-moz-transition: none !important;
|
||||
-o-transition: none !important;
|
||||
transition: none !important;
|
||||
}
|
||||
|
||||
.mode-switch .label .ball {
|
||||
background-color: var(--#{$prefix}secondary-bg);
|
||||
border-radius: 50%;
|
||||
position: absolute;
|
||||
top: 2px;
|
||||
left: 2px;
|
||||
height: calc((var(--#{$prefix}mode-switch-width) / 2) - 5px);
|
||||
width: calc((var(--#{$prefix}mode-switch-width) / 2) - 5px);
|
||||
transition: transform 0.2s linear;
|
||||
}
|
||||
|
||||
.mode-switch .checkbox:checked + .label .ball {
|
||||
transform: translateX(calc((var(--#{$prefix}mode-switch-width) / 2) - 1px));
|
||||
}
|
||||
|
||||
.mode-switch .fa-moon {
|
||||
color: $yellow;
|
||||
transform: scale(0.8);
|
||||
}
|
||||
|
||||
.mode-switch .fa-sun {
|
||||
color: var(--#{$prefix}bs-body-color);
|
||||
transform: scale(0.8);
|
||||
.navbar-overlay {
|
||||
position: absolute;
|
||||
z-index: $zindex-fixed;
|
||||
}
|
||||
|
@@ -1,11 +1,11 @@
|
||||
.youtube-embedded {
|
||||
.video-embedded {
|
||||
position: relative;
|
||||
padding-bottom: 56.25%;
|
||||
height: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.youtube-embedded > iframe {
|
||||
.video-embedded > iframe {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
|
@@ -95,7 +95,7 @@ home = ["HTML", "RSS", "REDIR"]
|
||||
[module]
|
||||
[module.hugoVersion]
|
||||
extended = true
|
||||
min = "0.120.0"
|
||||
min = "0.132.0"
|
||||
max = ""
|
||||
[[module.mounts]]
|
||||
source = "archetypes"
|
||||
@@ -125,7 +125,7 @@ home = ["HTML", "RSS", "REDIR"]
|
||||
[[module.imports]]
|
||||
path = "github.com/gethinode/mod-bootstrap"
|
||||
[[module.imports]]
|
||||
path = "github.com/gethinode/mod-flexsearch"
|
||||
path = "github.com/gethinode/mod-flexsearch/v2"
|
||||
[[module.imports]]
|
||||
path = "github.com/gethinode/mod-fontawesome"
|
||||
[[module.imports]]
|
||||
|
@@ -24,9 +24,15 @@ defaultMarkdownHandler = "goldmark"
|
||||
table = true
|
||||
taskList = true
|
||||
typographer = true
|
||||
[goldmark.extensions.passthrough]
|
||||
enable = true
|
||||
[goldmark.extensions.passthrough.delimiters]
|
||||
block = [['\[', '\]'], ['$$', '$$']]
|
||||
inline = [['\(', '\)'], ['$', '$']]
|
||||
[goldmark.parser]
|
||||
autoHeadingID = true
|
||||
autoHeadingIDType = 'github'
|
||||
wrapStandAloneImageWithinParagraph = false
|
||||
[goldmark.parser.attribute]
|
||||
block = true
|
||||
[goldmark.renderer]
|
||||
|
@@ -3,6 +3,7 @@
|
||||
separator = "-"
|
||||
description = "Hinode is a clean documentation and blog theme for your Hugo site based on Bootstrap 5."
|
||||
enableDarkMode = true
|
||||
enableLanguageSelectionStorage = false
|
||||
modes = ["light", "dark"]
|
||||
canonifyAssetsURLs = false
|
||||
endorse = true
|
||||
@@ -26,11 +27,24 @@
|
||||
host = "imgix"
|
||||
# toml-docs-end images
|
||||
|
||||
# toml-docs-start videos
|
||||
[videos]
|
||||
[videos.cloudinary]
|
||||
host = "cloudinary"
|
||||
account = "demo"
|
||||
[videos.vimeo]
|
||||
host = "vimeo"
|
||||
[videos.youtube]
|
||||
host = "youtube"
|
||||
# toml-docs-end videos
|
||||
|
||||
|
||||
# toml-docs-start debugging
|
||||
[debugging]
|
||||
showJS = false
|
||||
showSCSS = false
|
||||
purgeHTMLComments = false
|
||||
includeSVGOrigin = true
|
||||
# toml-docs-end debugging
|
||||
|
||||
# toml-docs-start docs
|
||||
@@ -170,16 +184,16 @@
|
||||
# linkedIn = ""
|
||||
github = "https://github.com/gethinode/hinode"
|
||||
section = "blog"
|
||||
[author]
|
||||
[schema.author]
|
||||
name = "Mark Dumay"
|
||||
# twitter = "https://twitter.com/markdumay"
|
||||
linkedin = "https://www.linkedin.com/in/markdumay/"
|
||||
github = "https://github.com/markdumay"
|
||||
[logo]
|
||||
[schema.logo]
|
||||
url = "img/logo512x512.png"
|
||||
width = 512
|
||||
height = 512
|
||||
[image]
|
||||
[schema.image]
|
||||
url = "img/logo1280x640.png"
|
||||
width = 1280
|
||||
height = 640
|
||||
|
@@ -14,7 +14,7 @@ for = '/**'
|
||||
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://www.youtube-nocookie.com https://www.youtube.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; \
|
||||
manifest-src 'self'; \
|
||||
media-src 'self' \
|
||||
@@ -29,7 +29,6 @@ for = '/**'
|
||||
camera=(), \
|
||||
magnetometer=(), \
|
||||
gyroscope=(), \
|
||||
fullscreen=(), \
|
||||
payment=() \
|
||||
"""
|
||||
cache-control = """\
|
||||
|
@@ -24,7 +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-flexsearch/assets/scss/modules/flexsearch/flexsearch.scss',
|
||||
'./_vendor/github.com/gethinode/mod-flexsearch/v2/assets/scss/modules/flexsearch/flexsearch.scss',
|
||||
'./_vendor/github.com/gethinode/mod-katex/dist/katex.scss',
|
||||
'./_vendor/github.com/gethinode/mod-leaflet/dist/leaflet.scss',
|
||||
'./_vendor/github.com/gethinode/mod-simple-datatables/dist/simple-datatables.scss',
|
||||
|
@@ -271,6 +271,25 @@ arguments:
|
||||
One or more strings separated by commas, indicating the source sizes of an
|
||||
image set.
|
||||
group: partial
|
||||
anchor:
|
||||
type: select
|
||||
optional: true
|
||||
comment:
|
||||
Anchor of the thumbnail's crop box, defaults to anchor value set in
|
||||
`imaging` section of the site configuration (usually `Smart`).
|
||||
options:
|
||||
values:
|
||||
- TopLeft
|
||||
- Top
|
||||
- TopRight
|
||||
- Left
|
||||
- Center
|
||||
- Right
|
||||
- BottomLeft
|
||||
- Bottom
|
||||
- BottomRight
|
||||
- Smart
|
||||
release: v0.24.23
|
||||
body:
|
||||
optional: true
|
||||
comment: >-
|
||||
|
@@ -60,3 +60,20 @@ arguments:
|
||||
type: int
|
||||
optional: false
|
||||
comment: Width of the image in pixels.
|
||||
anchor:
|
||||
type: select
|
||||
optional: true
|
||||
comment: Anchor of the crop box.
|
||||
options:
|
||||
values:
|
||||
- TopLeft
|
||||
- Top
|
||||
- TopRight
|
||||
- Left
|
||||
- Center
|
||||
- Right
|
||||
- BottomLeft
|
||||
- Bottom
|
||||
- BottomRight
|
||||
- Smart
|
||||
|
||||
|
@@ -36,6 +36,7 @@ arguments:
|
||||
page:
|
||||
type:
|
||||
- '*hugolib.pageState'
|
||||
- '*hugolib.pageForRenderHooks'
|
||||
- '*hugolib.pageForShortcode'
|
||||
optional: true
|
||||
comment: Page context, used to match page resources.
|
||||
@@ -109,7 +110,9 @@ arguments:
|
||||
image set.
|
||||
group: partial
|
||||
title:
|
||||
type: string
|
||||
type:
|
||||
- string
|
||||
- 'hstring.RenderedString'
|
||||
optional: true
|
||||
comment: Alternate text of the image.
|
||||
caption:
|
||||
@@ -138,3 +141,22 @@ arguments:
|
||||
Flag to indicate if the image should render a plain image instead of an
|
||||
image set. When set, no transformations are applied to the image.
|
||||
release: v0.24.0
|
||||
anchor:
|
||||
type: select
|
||||
optional: true
|
||||
comment:
|
||||
Anchor of the crop box, defaults to anchor value set in `imaging` section
|
||||
of the site configuration (usually `Smart`).
|
||||
options:
|
||||
values:
|
||||
- TopLeft
|
||||
- Top
|
||||
- TopRight
|
||||
- Left
|
||||
- Center
|
||||
- Right
|
||||
- BottomLeft
|
||||
- Bottom
|
||||
- BottomRight
|
||||
- Smart
|
||||
release: v0.24.22
|
||||
|
@@ -10,6 +10,7 @@ arguments:
|
||||
page:
|
||||
type:
|
||||
- '*hugolib.pageState'
|
||||
- '*hugolib.pageForRenderHooks'
|
||||
- '*hugolib.pageForShortcode'
|
||||
optional: false
|
||||
group: partial
|
||||
@@ -70,11 +71,17 @@ arguments:
|
||||
type:
|
||||
- string
|
||||
- template.HTML
|
||||
- hstring.RenderedString
|
||||
optional: true
|
||||
group: partial
|
||||
comment: Link description.
|
||||
title:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Link title.
|
||||
release: v0.26.0
|
||||
body:
|
||||
type: string
|
||||
optional: true
|
||||
group: shortcode
|
||||
comment: Link title.
|
||||
comment: Link description.
|
||||
|
@@ -38,3 +38,12 @@ arguments:
|
||||
optional: true
|
||||
default: false
|
||||
comment: Flag to render the release button inline.
|
||||
type:
|
||||
type: select
|
||||
optional: true
|
||||
default: button
|
||||
comment: Type of the element.
|
||||
options:
|
||||
values:
|
||||
- link
|
||||
- button
|
||||
|
69
data/structures/scripts.yml
Normal file
69
data/structures/scripts.yml
Normal file
@@ -0,0 +1,69 @@
|
||||
comment: >-
|
||||
Bundles a JavaScript file for client-side processing. Scripts can be included
|
||||
as critical, core, or optional file.
|
||||
arguments:
|
||||
page:
|
||||
type:
|
||||
- '*hugolib.pageState'
|
||||
- '*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: select
|
||||
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:
|
||||
values:
|
||||
- async
|
||||
- defer
|
||||
- immediate
|
90
data/structures/video.yml
Normal file
90
data/structures/video.yml
Normal file
@@ -0,0 +1,90 @@
|
||||
comment: >-
|
||||
Embeds a responsive video player for supported video providers. The video is
|
||||
embedded in a responsive frame.
|
||||
arguments:
|
||||
page:
|
||||
type:
|
||||
- '*hugolib.pageState'
|
||||
- '*hugolib.pageForShortcode'
|
||||
optional: false
|
||||
group: partial
|
||||
release: v0.26.5
|
||||
comment: Context of the current page.
|
||||
position:
|
||||
type:
|
||||
- 'text.Position'
|
||||
optional: true
|
||||
group: partial
|
||||
release: v0.26.5
|
||||
comment: Filename and position from which the shortcode was called.
|
||||
host:
|
||||
type: string
|
||||
optional: true
|
||||
default: youtube
|
||||
release: v0.26.5
|
||||
comment: >-
|
||||
Host name of the video provider. It should match one of the registered
|
||||
providers in the site's parameters under `videos`.
|
||||
title:
|
||||
type: string
|
||||
optional: true
|
||||
comment: >-
|
||||
Title of the video. You can also set `autotitle` to retrieve the title
|
||||
programmatically at build time, if supported by the provider.
|
||||
class:
|
||||
type: string
|
||||
optional: true
|
||||
position: 1
|
||||
comment: >-
|
||||
Class attribute of the video wrapper element.
|
||||
id:
|
||||
type: string
|
||||
optional: false
|
||||
position: 0
|
||||
comment: Public ID of the video to be embedded.
|
||||
account:
|
||||
type: string
|
||||
optional: true
|
||||
comment: >-
|
||||
Account name of the video asset, required by some digital asset managers.
|
||||
You can also set the default account name in the site's parameters.
|
||||
release: v0.26.5
|
||||
autoplay:
|
||||
type: bool
|
||||
optional: true
|
||||
default: false
|
||||
comment: >-
|
||||
Flag indicating the video should start playing immediately when loaded, if
|
||||
supported by the browser. The audio will be muted.
|
||||
autotitle:
|
||||
type: bool
|
||||
optional: true
|
||||
default: false
|
||||
release: v0.25.2
|
||||
comment: >-
|
||||
Trigger to retrieve the title from the video metadata, if supported by the
|
||||
provider.
|
||||
ratio:
|
||||
type: select
|
||||
optional: true
|
||||
comment: >-
|
||||
Ratio of the video. If set, determines the padding of the embedded video
|
||||
frame. When not specified, the video dimensions used to calculate the
|
||||
padding are retrieved programmatically.
|
||||
options:
|
||||
values:
|
||||
- 1x1
|
||||
- 3x2
|
||||
- 4x3
|
||||
- 16x9
|
||||
- 21x9
|
||||
release: v0.26.5
|
||||
portrait:
|
||||
type: bool
|
||||
optional: true
|
||||
default: false
|
||||
comment: >-
|
||||
Flag to adjust the ratio from landscape to portrait. The image itself is
|
||||
not rotated, only the crop area is adjusted. Not applicable to vector
|
||||
graphics.
|
||||
release: v0.26.5
|
@@ -1,26 +0,0 @@
|
||||
comment: >-
|
||||
Embeds a responsive video player for YouTube videos. Only the ID of the video
|
||||
is required. In privacy-enhanced mode, YouTube will not store information
|
||||
about visitors on your website unless the user plays the embedded video.
|
||||
arguments:
|
||||
title:
|
||||
type: string
|
||||
optional: true
|
||||
comment: >-
|
||||
Title of the video.
|
||||
class:
|
||||
type: string
|
||||
optional: true
|
||||
position: 1
|
||||
comment: >-
|
||||
Class attribute of the video wrapper element.
|
||||
id:
|
||||
type: string
|
||||
optional: false
|
||||
position: 0
|
||||
comment: Identifier of the video to be embedded.
|
||||
autoplay:
|
||||
type: bool
|
||||
optional: true
|
||||
default: false
|
||||
comment: Flag indicating the video should start playing immediately when loaded.
|
3
exampleSite/.gitignore
vendored
3
exampleSite/.gitignore
vendored
@@ -1,4 +1,5 @@
|
||||
/_vendor
|
||||
_vendor/
|
||||
exampleSite/public/
|
||||
public/
|
||||
resources/
|
||||
|
||||
|
@@ -24,9 +24,15 @@ defaultMarkdownHandler = "goldmark"
|
||||
table = true
|
||||
taskList = true
|
||||
typographer = true
|
||||
[goldmark.extensions.passthrough]
|
||||
enable = true
|
||||
[goldmark.extensions.passthrough.delimiters]
|
||||
block = [['\[', '\]'], ['$$', '$$']]
|
||||
inline = [['\(', '\)'], ['$', '$']]
|
||||
[goldmark.parser]
|
||||
autoHeadingID = true
|
||||
autoHeadingIDType = 'github'
|
||||
wrapStandAloneImageWithinParagraph = false
|
||||
[goldmark.parser.attribute]
|
||||
block = true
|
||||
[goldmark.renderer]
|
||||
|
@@ -2,6 +2,7 @@
|
||||
separator = "-"
|
||||
description = "Hinode is a clean documentation and blog theme for your Hugo site based on Bootstrap 5."
|
||||
enableDarkMode = true
|
||||
enableLanguageSelectionStorage = true
|
||||
modes = ["light", "dark"]
|
||||
canonifyAssetsURLs = false
|
||||
footerBelowFold = false
|
||||
@@ -17,6 +18,7 @@
|
||||
showJS = false
|
||||
showSCSS = false
|
||||
purgeHTMLComments = true # prevents a Goldmark warning when processing HTML comments (as used by markdownlint)
|
||||
includeSVGOrigin = true
|
||||
|
||||
[docs]
|
||||
basePath = "/" # TODO: replace
|
||||
@@ -163,16 +165,16 @@
|
||||
# linkedIn = ""
|
||||
github = "https://github.com/gethinode/hinode"
|
||||
section = "blog"
|
||||
[author]
|
||||
[schema.author]
|
||||
name = "Mark Dumay"
|
||||
# twitter = "https://twitter.com/markdumay"
|
||||
linkedin = "https://www.linkedin.com/in/markdumay/"
|
||||
github = "https://github.com/markdumay"
|
||||
[logo]
|
||||
[schema.logo]
|
||||
url = "img/logo512x512.png"
|
||||
width = 512
|
||||
height = 512
|
||||
[image]
|
||||
[schema.image]
|
||||
url = "img/logo1280x640.png"
|
||||
width = 1280
|
||||
height = 640
|
||||
|
@@ -14,7 +14,7 @@ for = '/**'
|
||||
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://www.youtube-nocookie.com https://www.youtube.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; \
|
||||
manifest-src 'self'; \
|
||||
media-src 'self' \
|
||||
@@ -29,7 +29,6 @@ for = '/**'
|
||||
camera=(), \
|
||||
magnetometer=(), \
|
||||
gyroscope=(), \
|
||||
fullscreen=(), \
|
||||
payment=() \
|
||||
"""
|
||||
cache-control = """\
|
||||
|
@@ -24,7 +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',
|
||||
'./_vendor/github.com/gethinode/mod-flexsearch/assets/scss/modules/flexsearch/flexsearch.scss',
|
||||
'./_vendor/github.com/gethinode/mod-flexsearch/v2/assets/scss/modules/flexsearch/flexsearch.scss',
|
||||
'./_vendor/github.com/gethinode/mod-katex/dist/katex.scss',
|
||||
'./_vendor/github.com/gethinode/mod-leaflet/dist/leaflet.scss',
|
||||
'./_vendor/github.com/twbs/bootstrap/scss/_carousel.scss',
|
||||
|
@@ -27,6 +27,6 @@ Additional features include:
|
||||
* Reusable Bootstrap components through configurable shortcodes and partials
|
||||
* Versioned documentation, including sidebar navigation and version switcher
|
||||
* Responsive image handling for multiple screen sizes and resolutions
|
||||
* Optimized search results, scoring 100 points for SEO on [PageSpeed Insights]({{< param "links.pagespeed" >}})
|
||||
* Secure by default, scoring A+ on [Mozilla Observatory test]({{< param "links.observatory" >}})
|
||||
* Optimized search results, scoring 100 points for SEO on [PageSpeed Insights]({{% param "links.pagespeed" %}})
|
||||
* Secure by default, scoring A+ on [Mozilla Observatory test]({{% param "links.observatory" %}})
|
||||
{.tickmark}
|
||||
|
@@ -12,7 +12,7 @@ thumbnail:
|
||||
originURL: https://unsplash.com/photos/QLPWQvHvmII
|
||||
---
|
||||
|
||||
Hinode provides several shortcodes that wrap common Bootstrap components. Refer to the [official documentation]({{< param "links.hinode_docs" >}}) for more details.
|
||||
Hinode provides several shortcodes that wrap common Bootstrap components. Refer to the [official documentation]({{% param "links.hinode_docs" %}}) for more details.
|
||||
|
||||
## Abbr
|
||||
|
||||
@@ -121,7 +121,7 @@ As an example, the following shortcode displays a group of three buttons.
|
||||
|
||||
## Card
|
||||
|
||||
As an example, the following shortcode displays a stacked card that links to the [about]({{< ref "about" >}}) page. It includes a custom header.
|
||||
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 -->
|
||||
{{< example lang="hugo" >}}
|
||||
@@ -264,6 +264,13 @@ As an example, the following shortcode displays an image with rounded corners an
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
The same image, but then using Markdown syntax:
|
||||
|
||||
{{< example lang="hugo" >}}
|
||||

|
||||
{class="rounded col-md-6" ratio="4x3" portrait=true wrapper="text-center"}
|
||||
{{< /example >}}
|
||||
|
||||
As an example, the following shortcode displays a regular vector image.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
@@ -466,3 +473,33 @@ As an example, the following shortcode displays a tooltip for a colored hyperlin
|
||||
{{</* tooltip color="primary" title="Tooltip caption" href="#!" */>}}Tooltip{{</* /tooltip */>}} demonstration
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Video
|
||||
|
||||
As an example, the following shortcode displays an Elephants video hosted by Cloudinary.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< 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 -->
|
||||
|
@@ -10,10 +10,10 @@ thumbnail:
|
||||
authorURL: https://unsplash.com/@ryoji__iwata
|
||||
origin: Unsplash
|
||||
originURL: https://unsplash.com/photos/5siQcvSxCP8
|
||||
modules: ["katex", "leaflet", "lottie", "simple-datatables"]
|
||||
modules: ["leaflet", "lottie", "simple-datatables"]
|
||||
---
|
||||
|
||||
Hinode provides several shortcodes on top of the common [Bootstrap elements]({{< relref "bootstrap-elements" >}}). Refer to the [official documentation]({{< param "links.hinode_docs" >}}) for more details.
|
||||
Hinode provides several shortcodes on top of the common [Bootstrap elements]({{% relref "bootstrap-elements" %}}). Refer to the [official documentation]({{% param "links.hinode_docs" %}}) for more details.
|
||||
|
||||
## Animation
|
||||
|
||||
@@ -70,7 +70,7 @@ As an example, the following shortcode displays a responsive table that uses adv
|
||||
|
||||
## Formula (KaTeX)
|
||||
|
||||
As an example, the following markdown renders two formulas using the KaTeX typesetting library.
|
||||
As an example, the following markdown renders two formulas using server-side math rendering using KaTeX.
|
||||
|
||||
{{< example lang="markdown" >}}
|
||||
This is an inline $-b \pm \sqrt{b^2 - 4ac} \over 2a$ formula
|
||||
|
@@ -26,7 +26,7 @@ As an example, the following shortcode displays an image with rounded corners an
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* image src="https://ik.imagekit.io/demo/default-image.jpg"
|
||||
ratio="21x9" caption="ImageKit.io image" class="rounded" */>}}
|
||||
ratio="21x9" caption="ImageKit.io image" class="rounded" anchor="Center" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
@@ -37,6 +37,6 @@ As an example, the following shortcode displays an image with rounded corners an
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* image src="https://assets.imgix.net/examples/bluehat.jpg"
|
||||
ratio="21x9" caption="imgix image" class="rounded" */>}}
|
||||
ratio="21x9" caption="imgix image" class="rounded" anchor="Top" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
@@ -28,6 +28,6 @@ Les fonctionnalités supplémentaires incluent:
|
||||
- Composants bootstrap réutilisables à travers des codes et partiels configurables
|
||||
- Documentation versionnée, incluant une navigation latérale et un sélecteur de version.
|
||||
- Gestion d'images adaptatives pour plusieurs tailles d'écran et résolutions.
|
||||
- Résultats de recherche optimisés, obtenant un score de 100 points pour le référencement (SEO) sur [PageSpeed Insights]({{< param "links.pagespeed" >}}).
|
||||
- Sécurisé par défaut, obtenant un score A+ au test [Mozilla Observatory]({{< param "links.observatory" >}})
|
||||
- Résultats de recherche optimisés, obtenant un score de 100 points pour le référencement (SEO) sur [PageSpeed Insights]({{% param "links.pagespeed" %}}).
|
||||
- Sécurisé par défaut, obtenant un score A+ au test [Mozilla Observatory]({{% param "links.observatory" %}})
|
||||
{.tickmark}
|
||||
|
@@ -13,7 +13,7 @@ thumbnail:
|
||||
originURL: https://unsplash.com/photos/QLPWQvHvmII
|
||||
---
|
||||
|
||||
Hinode propose plusieurs shortcodes qui enveloppent des composants Bootstrap courants. Consultez la [documentation officielle]({{< param "links.hinode_docs" >}}) pour plus de détails.
|
||||
Hinode propose plusieurs shortcodes qui enveloppent des composants Bootstrap courants. Consultez la [documentation officielle]({{% param "links.hinode_docs" %}}) pour plus de détails.
|
||||
|
||||
## Abbr
|
||||
|
||||
@@ -121,7 +121,7 @@ En-tête 6 {{</* badge title="Nouveau" */>}}
|
||||
|
||||
## 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é.
|
||||
À 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 -->
|
||||
{{< example lang="hugo" >}}
|
||||
|
@@ -14,7 +14,7 @@ thumbnail:
|
||||
modules: ["katex", "leaflet", "lottie"]
|
||||
---
|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
## Animation
|
||||
|
||||
|
@@ -29,6 +29,6 @@ Overige functies:
|
||||
* Herbruikbare Bootstrap componenten via shortcodes en partials
|
||||
* Versiebeheer van documentatiepagina's, inclusief secundaire navigatie en selectie van versies
|
||||
* Optimalisering van foto's voor meerdere schermafmetingen en resoluties
|
||||
* Optimale zoekresultaten, met 100 punten voor SEO volgens [PageSpeed Insights]({{< param "links.pagespeed" >}})
|
||||
* Veilige communicatie, met een score van A+ volgens [Mozilla Observatory]({{< param "links.observatory" >}})
|
||||
* Optimale zoekresultaten, met 100 punten voor SEO volgens [PageSpeed Insights]({{% param "links.pagespeed" %}})
|
||||
* Veilige communicatie, met een score van A+ volgens [Mozilla Observatory]({{% param "links.observatory" %}})
|
||||
{.tickmark}
|
||||
|
@@ -3,8 +3,8 @@
|
||||
"tags": [
|
||||
"a",
|
||||
"abbr",
|
||||
"annotation",
|
||||
"body",
|
||||
"br",
|
||||
"button",
|
||||
"code",
|
||||
"div",
|
||||
@@ -15,18 +15,28 @@
|
||||
"form",
|
||||
"h2",
|
||||
"h3",
|
||||
"h5",
|
||||
"head",
|
||||
"hr",
|
||||
"html",
|
||||
"i",
|
||||
"iframe",
|
||||
"img",
|
||||
"input",
|
||||
"label",
|
||||
"li",
|
||||
"link",
|
||||
"mark",
|
||||
"math",
|
||||
"meta",
|
||||
"mfrac",
|
||||
"mi",
|
||||
"mn",
|
||||
"mo",
|
||||
"mrow",
|
||||
"mspace",
|
||||
"msqrt",
|
||||
"msub",
|
||||
"msup",
|
||||
"nav",
|
||||
"noscript",
|
||||
"ol",
|
||||
@@ -34,12 +44,14 @@
|
||||
"path",
|
||||
"pre",
|
||||
"script",
|
||||
"semantics",
|
||||
"small",
|
||||
"span",
|
||||
"strong",
|
||||
"sub",
|
||||
"sup",
|
||||
"svg",
|
||||
"symbol",
|
||||
"table",
|
||||
"tbody",
|
||||
"td",
|
||||
@@ -185,7 +197,6 @@
|
||||
"dropdown-menu-end",
|
||||
"dropdown-toggle",
|
||||
"emphasis",
|
||||
"emphasis-dark",
|
||||
"end-0",
|
||||
"fa",
|
||||
"fa-10x",
|
||||
@@ -239,6 +250,7 @@
|
||||
"fs-3",
|
||||
"fs-5",
|
||||
"fs-6",
|
||||
"fs-lg-5",
|
||||
"fs-md-5",
|
||||
"fw-30",
|
||||
"fw-bold",
|
||||
@@ -267,6 +279,7 @@
|
||||
"justify-content-center",
|
||||
"justify-content-end",
|
||||
"justify-content-start",
|
||||
"katex",
|
||||
"label",
|
||||
"lead",
|
||||
"leaflet-map",
|
||||
@@ -299,6 +312,7 @@
|
||||
"mt-4",
|
||||
"mt-5",
|
||||
"mt-auto",
|
||||
"mt-md-0",
|
||||
"multi-docs-collapse-15",
|
||||
"multi-file-collapse-1",
|
||||
"mx-auto",
|
||||
@@ -328,11 +342,6 @@
|
||||
"navbar-toggler",
|
||||
"next",
|
||||
"no-js",
|
||||
"offcanvas",
|
||||
"offcanvas-body",
|
||||
"offcanvas-header",
|
||||
"offcanvas-start",
|
||||
"offcanvas-title",
|
||||
"order-0",
|
||||
"order-1",
|
||||
"order-first",
|
||||
@@ -464,6 +473,7 @@
|
||||
"top-bar",
|
||||
"translate-middle",
|
||||
"translate-middle-y",
|
||||
"video-embedded",
|
||||
"visually-hidden",
|
||||
"vr",
|
||||
"w-100",
|
||||
@@ -505,11 +515,42 @@
|
||||
"collapse",
|
||||
"collapse-1",
|
||||
"command-prompt",
|
||||
"custom-activity",
|
||||
"data-tables",
|
||||
"docs",
|
||||
"documentation",
|
||||
"example",
|
||||
"exemple",
|
||||
"fa-face-frown",
|
||||
"fa-square-check",
|
||||
"fab-bootstrap",
|
||||
"fab-docker",
|
||||
"fab-facebook",
|
||||
"fab-github",
|
||||
"fab-linkedin",
|
||||
"fab-medium",
|
||||
"fab-whatsapp",
|
||||
"fab-x-twitter",
|
||||
"fas-angle-left",
|
||||
"fas-angle-right",
|
||||
"fas-angles-left",
|
||||
"fas-angles-right",
|
||||
"fas-arrow-left",
|
||||
"fas-arrow-right",
|
||||
"fas-circle-check",
|
||||
"fas-code",
|
||||
"fas-ellipsis",
|
||||
"fas-globe",
|
||||
"fas-heart",
|
||||
"fas-house",
|
||||
"fas-link",
|
||||
"fas-magnifying-glass",
|
||||
"fas-moon",
|
||||
"fas-rocket",
|
||||
"fas-share-nodes",
|
||||
"fas-sort",
|
||||
"fas-sun",
|
||||
"fas-up-right-from-square",
|
||||
"fichier",
|
||||
"fil-dariane",
|
||||
"file",
|
||||
@@ -526,6 +567,7 @@
|
||||
"indicateur-de-chargement",
|
||||
"infobulle",
|
||||
"invite-de-commandes",
|
||||
"language-selector",
|
||||
"leaflet-map-0",
|
||||
"lien",
|
||||
"link",
|
||||
@@ -547,8 +589,6 @@
|
||||
"navbar-sample-collapse",
|
||||
"navigation",
|
||||
"notification",
|
||||
"offcanvas-label",
|
||||
"offcanvass-sidebar",
|
||||
"persona",
|
||||
"projecten",
|
||||
"projects",
|
||||
@@ -568,7 +608,10 @@
|
||||
"toast-example-2",
|
||||
"toast-message-email-4",
|
||||
"toc-collapse",
|
||||
"tooltip"
|
||||
"tooltip",
|
||||
"video",
|
||||
"vimeo",
|
||||
"youtube"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
18
go.mod
18
go.mod
@@ -4,14 +4,14 @@ go 1.19
|
||||
|
||||
require (
|
||||
github.com/airbnb/lottie-web v5.12.2+incompatible // indirect
|
||||
github.com/gethinode/mod-bootstrap v1.3.0 // indirect
|
||||
github.com/gethinode/mod-flexsearch v1.12.0 // indirect
|
||||
github.com/gethinode/mod-fontawesome v1.9.0 // indirect
|
||||
github.com/gethinode/mod-katex v1.1.0 // indirect
|
||||
github.com/gethinode/mod-leaflet v1.1.0 // indirect
|
||||
github.com/gethinode/mod-lottie v1.5.5 // indirect
|
||||
github.com/gethinode/mod-simple-datatables v1.0.3 // indirect
|
||||
github.com/gethinode/mod-utils/v2 v2.3.10 // indirect
|
||||
github.com/nextapps-de/flexsearch v0.0.0-20240110101704-4c3966709f85 // indirect
|
||||
github.com/gethinode/mod-bootstrap v1.3.1 // indirect
|
||||
github.com/gethinode/mod-flexsearch/v2 v2.0.1 // indirect
|
||||
github.com/gethinode/mod-fontawesome v1.10.0 // 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.7 // indirect
|
||||
github.com/gethinode/mod-simple-datatables v1.0.8 // indirect
|
||||
github.com/gethinode/mod-utils/v2 v2.5.0 // indirect
|
||||
github.com/nextapps-de/flexsearch v0.0.0-20240501124520-961c3ae84a87 // indirect
|
||||
github.com/twbs/bootstrap v5.3.3+incompatible // indirect
|
||||
)
|
||||
|
34
go.sum
34
go.sum
@@ -22,6 +22,8 @@ github.com/gethinode/mod-bootstrap v1.2.8 h1:kIKSO6qqE8xA0KQC5s6kkEv5UDc8oT17Hal
|
||||
github.com/gethinode/mod-bootstrap v1.2.8/go.mod h1:CL9IDot6nbXIWJYE/KxfsTdYYEJIGL17BXbAYPn+wVQ=
|
||||
github.com/gethinode/mod-bootstrap v1.3.0 h1:UxNmXgXo7gA8C8z1ar47+tSccmKYpaYBBN+txB0pwBk=
|
||||
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-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=
|
||||
@@ -68,6 +70,10 @@ github.com/gethinode/mod-flexsearch v1.11.3 h1:ykxpUg8M4vr1C4QzxJOPGt+1ZmPAD/gOC
|
||||
github.com/gethinode/mod-flexsearch v1.11.3/go.mod h1:L8hrnpupx27cez2ObMX8gWnhbW6qss4HGH1Ea4UaBRQ=
|
||||
github.com/gethinode/mod-flexsearch v1.12.0 h1:zg1IHvc8VO9WEtQuQnuG6HeWFNByvyqC9JYWDtpsP6s=
|
||||
github.com/gethinode/mod-flexsearch v1.12.0/go.mod h1:L8hrnpupx27cez2ObMX8gWnhbW6qss4HGH1Ea4UaBRQ=
|
||||
github.com/gethinode/mod-flexsearch v1.12.1 h1:clkGUWaNPe9Dt/66Apy7oH9NwVQfnD6OpGSLffeC9sY=
|
||||
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-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=
|
||||
@@ -108,6 +114,10 @@ github.com/gethinode/mod-fontawesome v1.8.2 h1:LAzLytyh9c9gLzBWMju6Gtp3uEojhBQEY
|
||||
github.com/gethinode/mod-fontawesome v1.8.2/go.mod h1:xBKsZH3WJtMOItZVlp9SbO51uaBy6IbvUZSKpNu3b6Y=
|
||||
github.com/gethinode/mod-fontawesome v1.9.0 h1:xqUB8AnezMHAt8lye4ksqvmHSVPCOkiHsHGUbqNoeP0=
|
||||
github.com/gethinode/mod-fontawesome v1.9.0/go.mod h1:xBKsZH3WJtMOItZVlp9SbO51uaBy6IbvUZSKpNu3b6Y=
|
||||
github.com/gethinode/mod-fontawesome v1.9.1 h1:cQk84vriqffM4fuUUoM9j3SSD+3ppeW2j4ta7AiToMU=
|
||||
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-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=
|
||||
@@ -128,6 +138,10 @@ github.com/gethinode/mod-katex v1.0.9 h1:cCJoR28tZwkDvXps17o9Jwfe3aQQAZ3Rxk0jCNR
|
||||
github.com/gethinode/mod-katex v1.0.9/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
|
||||
github.com/gethinode/mod-katex v1.1.0 h1:PxST3HPUt6F2X/xKakTVeTkwWqCtEr53K1vYEOyQu3I=
|
||||
github.com/gethinode/mod-katex v1.1.0/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
|
||||
github.com/gethinode/mod-katex v1.1.1 h1:z8+mfVI6UTWcfpQMVPIzxQzt6Lp9BcmXxSOILQ84qFg=
|
||||
github.com/gethinode/mod-katex v1.1.1/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
|
||||
github.com/gethinode/mod-katex v1.1.2 h1:TbeVIWeG5TqldlVxpM1upOWj11RljXy4fhpOQIwOnS4=
|
||||
github.com/gethinode/mod-katex v1.1.2/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
|
||||
github.com/gethinode/mod-leaflet v0.2.3 h1:QQI4h+IH0jZ7fx4q0um2YIEiYBoW3OAfW8qHzbRCDPk=
|
||||
github.com/gethinode/mod-leaflet v0.2.3/go.mod h1:uGggt87x4Fw7wBoJpSiUvNkYg+s/Ujne7klAX2rxMRk=
|
||||
github.com/gethinode/mod-leaflet v0.3.1 h1:H5MaOa+BB1KuVw7abTqfIn/SNzzRsAyx/WQoSe+2Ykc=
|
||||
@@ -146,6 +160,8 @@ github.com/gethinode/mod-leaflet v1.0.1 h1:L4Coe6HTD9O0Txs1S8AtVg+6/TEneSF9i6fJK
|
||||
github.com/gethinode/mod-leaflet v1.0.1/go.mod h1:Ei0x9WiL7Dbi4JeG6yI1CE63bT1QJ8sKi67Jea1wFSE=
|
||||
github.com/gethinode/mod-leaflet v1.1.0 h1:FXzPCic5XmUluxQ6e7LYUhhLnxuQOBwry8qjG9k30UY=
|
||||
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-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=
|
||||
@@ -184,12 +200,24 @@ github.com/gethinode/mod-lottie v1.5.4 h1:+xbamSsjcnP2tyzGl0CA1enma7gkAp67wenmuP
|
||||
github.com/gethinode/mod-lottie v1.5.4/go.mod h1:gALqz48aYpoDLxJOI3LzIpdy0Eq/lOBNtlcOxABa9tg=
|
||||
github.com/gethinode/mod-lottie v1.5.5 h1:uEJKsz+ovsZtbGkMhPONcIhtG6M3RjYiK+iVoScLOVo=
|
||||
github.com/gethinode/mod-lottie v1.5.5/go.mod h1:VTvBxD8VokICwnEqM0VUZFZHBYxLf4/grDFQyEh1DL0=
|
||||
github.com/gethinode/mod-lottie v1.5.6 h1:dxz5nmD0XXEt/DAOc1s5fIPynj5bhzDL32EEwLFCSmk=
|
||||
github.com/gethinode/mod-lottie v1.5.6/go.mod h1:VTvBxD8VokICwnEqM0VUZFZHBYxLf4/grDFQyEh1DL0=
|
||||
github.com/gethinode/mod-lottie v1.5.7 h1:hcf04kmKv7xrI2byxtgHwkScYIHfP9aquInHNZP+qbk=
|
||||
github.com/gethinode/mod-lottie v1.5.7/go.mod h1:rhWg+MSSnWmqHKNEViE/9/78RjQD6uWWFASgjvFjgyo=
|
||||
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=
|
||||
github.com/gethinode/mod-simple-datatables v1.0.2/go.mod h1:mmrcvAJU2i3SMU56VmQ5PW43uDXBcsJKcZwCHrvl3Kc=
|
||||
github.com/gethinode/mod-simple-datatables v1.0.3 h1:JL2nBlEHWMmkE7EZrpfpmzka47dklJUh23/xKJkOQoI=
|
||||
github.com/gethinode/mod-simple-datatables v1.0.3/go.mod h1:mmrcvAJU2i3SMU56VmQ5PW43uDXBcsJKcZwCHrvl3Kc=
|
||||
github.com/gethinode/mod-simple-datatables v1.0.5 h1:2Aa4k1Bd1WEYHbskFQj+1X35BB7abB8RXHE7Uk2N4pg=
|
||||
github.com/gethinode/mod-simple-datatables v1.0.5/go.mod h1:mmrcvAJU2i3SMU56VmQ5PW43uDXBcsJKcZwCHrvl3Kc=
|
||||
github.com/gethinode/mod-simple-datatables v1.0.6 h1:voKiwLAfC7kfD+atv7ah0sOf8OcPRyxEB/Q92gx1d00=
|
||||
github.com/gethinode/mod-simple-datatables v1.0.6/go.mod h1:Y7AzIYAWpzDKLvH96eqBA/Gs3jompWCgxadLuoKZ/rc=
|
||||
github.com/gethinode/mod-simple-datatables v1.0.7 h1:pfxWhgmn/njJcynNIDnUyeOBW0tsy2E4TP21sEYsqRs=
|
||||
github.com/gethinode/mod-simple-datatables v1.0.7/go.mod h1:Y7AzIYAWpzDKLvH96eqBA/Gs3jompWCgxadLuoKZ/rc=
|
||||
github.com/gethinode/mod-simple-datatables v1.0.8 h1:J8hA+SXdTLaRNZwN70ZEyADn+VgNoAaxVDMXsMPTZBg=
|
||||
github.com/gethinode/mod-simple-datatables v1.0.8/go.mod h1:RsTHWAt1J9/m7kzhYNSJB7CDyk+8DrG+46/aFrP6KJw=
|
||||
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=
|
||||
@@ -236,12 +264,18 @@ github.com/gethinode/mod-utils/v2 v2.3.9 h1:Z9uAr6S0wunlkfKHa2D/U83fBV6Ivtf+7sjB
|
||||
github.com/gethinode/mod-utils/v2 v2.3.9/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
|
||||
github.com/gethinode/mod-utils/v2 v2.3.10 h1:+coUXdgAbLEE8Tvb3Rfk/1Nr6oDVreXI2sil0pa/n2Q=
|
||||
github.com/gethinode/mod-utils/v2 v2.3.10/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
|
||||
github.com/gethinode/mod-utils/v2 v2.4.0 h1:mmG4hWaeA4krAg933pibH+TrjFmPHkAi/DUbe3SM38I=
|
||||
github.com/gethinode/mod-utils/v2 v2.4.0/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
|
||||
github.com/gethinode/mod-utils/v2 v2.5.0 h1:9QboNU9KTpmJDS9JBjxavbknLVBJilocqo5KhC2FdME=
|
||||
github.com/gethinode/mod-utils/v2 v2.5.0/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
|
||||
github.com/nextapps-de/flexsearch v0.0.0-20230711092928-1243fd883ec3 h1:H/qVR5O4BXjRjD+5PZB+r4ug2BSJ2Of4RtwOntd+OKo=
|
||||
github.com/nextapps-de/flexsearch v0.0.0-20230711092928-1243fd883ec3/go.mod h1:5GdMfPAXzbA2gXBqTjC6l27kioSYzHlqDMh0+wyx7sU=
|
||||
github.com/nextapps-de/flexsearch v0.0.0-20240108021025-afd75f742f22 h1:re7L8FxbXQpnX8BgzkdUnDpsUmloGNyLmiy2ZCln8pg=
|
||||
github.com/nextapps-de/flexsearch v0.0.0-20240108021025-afd75f742f22/go.mod h1:5GdMfPAXzbA2gXBqTjC6l27kioSYzHlqDMh0+wyx7sU=
|
||||
github.com/nextapps-de/flexsearch v0.0.0-20240110101704-4c3966709f85 h1:H6xa5YyCHr78M+qqCApM4Kvz/eMA7pfGskYmfkEBRCA=
|
||||
github.com/nextapps-de/flexsearch v0.0.0-20240110101704-4c3966709f85/go.mod h1:5GdMfPAXzbA2gXBqTjC6l27kioSYzHlqDMh0+wyx7sU=
|
||||
github.com/nextapps-de/flexsearch v0.0.0-20240501124520-961c3ae84a87 h1:6PNbL0/LxO8Xl8MZSe5uvCidYNpFTz9nlWTqj2qdlzA=
|
||||
github.com/nextapps-de/flexsearch v0.0.0-20240501124520-961c3ae84a87/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/twbs/bootstrap v5.3.3+incompatible h1:goFoqinzdHfkeegpFP7pvhbd0g+A3O2hbU3XCjuNrEQ=
|
||||
|
@@ -16,6 +16,7 @@
|
||||
"link",
|
||||
"meta",
|
||||
"nav",
|
||||
"noscript",
|
||||
"ol",
|
||||
"p",
|
||||
"path",
|
||||
@@ -24,8 +25,10 @@
|
||||
"span",
|
||||
"strong",
|
||||
"svg",
|
||||
"symbol",
|
||||
"title",
|
||||
"ul"
|
||||
"ul",
|
||||
"use"
|
||||
],
|
||||
"classes": [
|
||||
"active",
|
||||
@@ -36,6 +39,7 @@
|
||||
"bg-body",
|
||||
"bg-opacity-10",
|
||||
"bg-primary",
|
||||
"border-0",
|
||||
"bottom-0",
|
||||
"bottom-bar",
|
||||
"breadcrumb",
|
||||
@@ -43,10 +47,19 @@
|
||||
"btn",
|
||||
"btn-close",
|
||||
"btn-primary",
|
||||
"btn-social",
|
||||
"card",
|
||||
"card-body",
|
||||
"card-body-link",
|
||||
"card-text",
|
||||
"card-title",
|
||||
"card-zoom",
|
||||
"checkbox",
|
||||
"col",
|
||||
"col-12",
|
||||
"col-6",
|
||||
"col-lg-2",
|
||||
"col-lg-8",
|
||||
"col-md-2",
|
||||
"col-md-3",
|
||||
"col-md-4",
|
||||
@@ -59,7 +72,9 @@
|
||||
"container-xxl",
|
||||
"d-flex",
|
||||
"d-inline",
|
||||
"d-lg-block",
|
||||
"d-md-block",
|
||||
"d-md-none",
|
||||
"d-none",
|
||||
"display-1",
|
||||
"display-4",
|
||||
@@ -71,12 +86,17 @@
|
||||
"fa-book-open",
|
||||
"fa-ellipsis",
|
||||
"fa-face-frown",
|
||||
"fa-facebook",
|
||||
"fa-fw",
|
||||
"fa-github",
|
||||
"fa-link",
|
||||
"fa-linkedin",
|
||||
"fa-medium",
|
||||
"fa-moon",
|
||||
"fa-share-nodes",
|
||||
"fa-sun",
|
||||
"fa-whatsapp",
|
||||
"fa-x-twitter",
|
||||
"fab",
|
||||
"fas",
|
||||
"fixed-top",
|
||||
@@ -86,8 +106,13 @@
|
||||
"form-control",
|
||||
"fs-3",
|
||||
"fs-5",
|
||||
"fs-6",
|
||||
"fs-lg-5",
|
||||
"fw-30",
|
||||
"fw-bold",
|
||||
"g-4",
|
||||
"gap-1",
|
||||
"h-100",
|
||||
"hstack",
|
||||
"img-fluid",
|
||||
"img-wrap",
|
||||
@@ -97,10 +122,14 @@
|
||||
"justify-content-end",
|
||||
"justify-content-start",
|
||||
"label",
|
||||
"lead",
|
||||
"link-bg-footer",
|
||||
"link-secondary",
|
||||
"main-content",
|
||||
"main-nav-toggler",
|
||||
"mb-3",
|
||||
"mb-5",
|
||||
"mb-lg-5",
|
||||
"me-auto",
|
||||
"middle-bar",
|
||||
"min-vh-100",
|
||||
@@ -112,6 +141,7 @@
|
||||
"mx-auto",
|
||||
"mx-md-0",
|
||||
"my-auto",
|
||||
"my-md-0",
|
||||
"my-md-auto",
|
||||
"nav-item",
|
||||
"nav-link",
|
||||
@@ -134,6 +164,7 @@
|
||||
"p-3",
|
||||
"p-4",
|
||||
"pb-4",
|
||||
"pb-5",
|
||||
"pb-md-0",
|
||||
"position-fixed",
|
||||
"position-relative",
|
||||
@@ -148,32 +179,59 @@
|
||||
"row",
|
||||
"row-cols-1",
|
||||
"row-cols-2",
|
||||
"row-cols-lg-3",
|
||||
"row-cols-md-2",
|
||||
"row-cols-md-3",
|
||||
"row-cols-sm-2",
|
||||
"row-cols-sm-3",
|
||||
"search",
|
||||
"search-input",
|
||||
"search-suggestions",
|
||||
"shadow",
|
||||
"sidebar-overflow",
|
||||
"sticky-top",
|
||||
"stretched-link",
|
||||
"svg-inline--fa",
|
||||
"text-body-secondary",
|
||||
"text-center",
|
||||
"text-decoration-none",
|
||||
"text-end",
|
||||
"text-muted",
|
||||
"text-secondary",
|
||||
"text-sm-start",
|
||||
"text-start",
|
||||
"text-uppercase",
|
||||
"toast",
|
||||
"toast-body",
|
||||
"toast-container",
|
||||
"toast-header",
|
||||
"toc",
|
||||
"toc-sidebar",
|
||||
"toggler-icon",
|
||||
"top-bar"
|
||||
],
|
||||
"ids": [
|
||||
"blogs",
|
||||
"btn-webshare",
|
||||
"fa-face-frown",
|
||||
"fab-facebook",
|
||||
"fab-github",
|
||||
"fab-linkedin",
|
||||
"fab-medium",
|
||||
"fab-whatsapp",
|
||||
"fab-x-twitter",
|
||||
"fas-book-open",
|
||||
"fas-ellipsis",
|
||||
"fas-link",
|
||||
"fas-moon",
|
||||
"fas-share-nodes",
|
||||
"fas-sun",
|
||||
"navbar-0-collapse",
|
||||
"navbar-mode",
|
||||
"navbar-mode-checkbox",
|
||||
"toast-container",
|
||||
"toast-copied-code-message"
|
||||
"toast-copied-code-message",
|
||||
"toast-message-email-4"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
44
i18n/de.yaml
44
i18n/de.yaml
@@ -23,6 +23,22 @@
|
||||
translation: "Artikel"
|
||||
- id: more
|
||||
translation: "Weitere {{ . }}"
|
||||
- id: emptyList
|
||||
translation: "Keine weiteren Artikel gefunden"
|
||||
- id: emptyTags
|
||||
translation: "Keine Schlagworte gefunden"
|
||||
- id: readMore
|
||||
translation: "Weiterlesen"
|
||||
|
||||
# Languages
|
||||
- id: lang_de
|
||||
translation: "Deutsch"
|
||||
- id: lang_en
|
||||
translation: "Englisch"
|
||||
- id: lang_nl
|
||||
translation: "Niederländisch"
|
||||
- id: lang_fr
|
||||
translation: "Französisch"
|
||||
|
||||
# Sharing
|
||||
- id: shareLink
|
||||
@@ -110,6 +126,32 @@
|
||||
|
||||
# Comments
|
||||
- id: show
|
||||
translation: "Zeige"
|
||||
translation: "Anzeigen"
|
||||
- id: comments
|
||||
translation: "Kommentare"
|
||||
|
||||
# Arguments
|
||||
- id: name
|
||||
translation: "Name"
|
||||
- id: type
|
||||
translation: "Typ"
|
||||
- id: required
|
||||
translation: "Erforderlich"
|
||||
- id: default
|
||||
translation: "Standard"
|
||||
- id: comment
|
||||
translation: "Kommentar"
|
||||
- id: supportedValues
|
||||
translation: "Unterstützte Werte"
|
||||
|
||||
# Alerts
|
||||
- id: caution
|
||||
translation: Vorsicht
|
||||
- id: important
|
||||
translation: Wichtig
|
||||
- id: note
|
||||
translation: Hinweis
|
||||
- id: tip
|
||||
translation: Tipp
|
||||
- id: warning
|
||||
translation: Warnung
|
||||
|
12
i18n/en.yaml
12
i18n/en.yaml
@@ -149,3 +149,15 @@
|
||||
translation: "Comment"
|
||||
- id: supportedValues
|
||||
translation: "Supported values"
|
||||
|
||||
# Alerts
|
||||
- id: caution
|
||||
translation: Caution
|
||||
- id: important
|
||||
translation: Important
|
||||
- id: note
|
||||
translation: Note
|
||||
- id: tip
|
||||
translation: Tip
|
||||
- id: warning
|
||||
translation: Warning
|
12
i18n/nl.yaml
12
i18n/nl.yaml
@@ -148,3 +148,15 @@
|
||||
translation: "Toelichting"
|
||||
- id: supportedValues
|
||||
translation: "Toegestane waarden"
|
||||
|
||||
# Alerts
|
||||
- id: caution
|
||||
translation: Voorzichtig
|
||||
- id: important
|
||||
translation: Belangrijk
|
||||
- id: note
|
||||
translation: Opmerking
|
||||
- id: tip
|
||||
translation: Tip
|
||||
- id: warning
|
||||
translation: Waarschuwing
|
||||
|
23
layouts/_default/_markup/render-blockquote.html
Normal file
23
layouts/_default/_markup/render-blockquote.html
Normal file
@@ -0,0 +1,23 @@
|
||||
{{/* Adapted from https://gohugo.io/render-hooks/blockquotes/#alerts */}}
|
||||
|
||||
{{ $icons := dict
|
||||
"caution" "fa hand"
|
||||
"important" "fas exclamation"
|
||||
"note" "fas circle-info"
|
||||
"tip" "fa lightbulb"
|
||||
"warning" "fas triangle-exclamation"
|
||||
}}
|
||||
|
||||
{{ if eq .Type "alert" }}
|
||||
<blockquote class="blockquote-alert blockquote-alert-{{ .AlertType }}">
|
||||
<p class="blockquote-alert-heading">
|
||||
{{ partial "assets/icon.html" (dict "icon" (printf "%s fa-fw" (index $icons .AlertType))) }}
|
||||
{{ or (i18n .AlertType) (title .AlertType) }}
|
||||
</p>
|
||||
{{ trim .Text "\n\r" | safeHTML }}
|
||||
</blockquote>
|
||||
{{ else }}
|
||||
<blockquote class="blockquote">
|
||||
{{ trim .Text "\n\r" | safeHTML }}
|
||||
</blockquote>
|
||||
{{ end }}
|
11
layouts/_default/_markup/render-codeblock-math.html
Normal file
11
layouts/_default/_markup/render-codeblock-math.html
Normal file
@@ -0,0 +1,11 @@
|
||||
{{ with transform.ToMath .Inner (dict "displayMode" true) }}
|
||||
{{ with .Err }}
|
||||
{{ errorf "Failed to render KaTeX: %q. See %s" . $.Position }}
|
||||
{{ else }}
|
||||
{{ if $.Attributes.class }}
|
||||
<div class="{{ $.Attributes.class }}">{{ . }}</div>
|
||||
{{ else }}
|
||||
{{ . }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
15
layouts/_default/_markup/render-image.html
Normal file
15
layouts/_default/_markup/render-image.html
Normal file
@@ -0,0 +1,15 @@
|
||||
{{ partial "assets/image.html" (dict
|
||||
"url" .Destination
|
||||
"page" .Page
|
||||
"caption" .Title
|
||||
"title" .Text
|
||||
"anchor" .Attributes.anchor
|
||||
"class" .Attributes.class
|
||||
"figclass" .Attributes.figclass
|
||||
"loading" .Attributes.loading
|
||||
"mode" .Attributes.mode
|
||||
"plain" .Attributes.plain
|
||||
"portrait" .Attributes.portrait
|
||||
"ratio" .Attributes.ratio
|
||||
"wrapper" .Attributes.wrapper
|
||||
) }}
|
15
layouts/_default/_markup/render-link.html
Normal file
15
layouts/_default/_markup/render-link.html
Normal file
@@ -0,0 +1,15 @@
|
||||
{{ if gt (findRE `^HAHAHUGO` .Destination 1) 0 }}
|
||||
{{ errorf "Invalid markdown link destination, use '%s' syntax when using shortcodes as input. See '%s'"
|
||||
("{{% %}}" | htmlUnescape)
|
||||
.Page.File.Path
|
||||
}}
|
||||
{{ else if not .Destination }}
|
||||
{{ errorf "Missing markdown link destination, see '%s'" .Page.File.Path }}
|
||||
{{ else }}
|
||||
{{ partial "assets/link.html" (dict
|
||||
"destination" .Destination
|
||||
"page" .Page
|
||||
"text" .Text
|
||||
"title" .Title
|
||||
) }}
|
||||
{{- end }}
|
13
layouts/_default/_markup/render-passthrough.html
Normal file
13
layouts/_default/_markup/render-passthrough.html
Normal file
@@ -0,0 +1,13 @@
|
||||
{{ $opts := dict }}
|
||||
|
||||
{{ if eq .Type "block" }}
|
||||
{{ $opts = dict "displayMode" true }}
|
||||
{{ end }}
|
||||
|
||||
{{ with transform.ToMath .Inner $opts }}
|
||||
{{ with .Err }}
|
||||
{{ errorf "Failed to render KaTeX: %q. See %s" . $.Position }}
|
||||
{{ else }}
|
||||
{{ . }}
|
||||
{{ end }}
|
||||
{{ end }}
|
@@ -36,11 +36,11 @@
|
||||
<!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" .) -}}
|
||||
{{ block "head" . }}{{ end -}}
|
||||
</head>
|
||||
|
||||
<body>
|
||||
{{- partial "footer/scripts.html" (dict "filename" "js/critical.bundle.js" "match" "js/critical/**.js" "header" true "page" .) -}}
|
||||
<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
|
||||
@@ -73,6 +73,7 @@
|
||||
{{ end }}
|
||||
|
||||
{{- partial "footer/toast-container.html" . -}}
|
||||
{{- partial "assets/symbols.html" . -}}
|
||||
{{- partialCached "footer/scripts.html" (dict "header" false "page" . "core" true) }}
|
||||
{{- partial "footer/optional-scripts.html" . -}}
|
||||
</body>
|
||||
|
@@ -1,6 +1,8 @@
|
||||
{{ define "main" -}}
|
||||
{{- $breakpoint := $.Scratch.Get "breakpoint" -}}
|
||||
{{ $sidebar := .Render "single/sidebar" }}
|
||||
{{- $hasSidebar := .Site.Params.navigation.sidebar | default true -}}
|
||||
{{ $sidebar := "" }}
|
||||
{{ if $hasSidebar }}{{ $sidebar = .Render "single/sidebar" }}{{ end }}
|
||||
{{ $toc := .Render "single/panel-toc" }}
|
||||
|
||||
{{ with $sidebar }}
|
||||
@@ -16,7 +18,7 @@
|
||||
{{ end }}
|
||||
|
||||
<div class="container-xxl flex-fill p-4 px-xxl-0">
|
||||
{{ if $sidebar -}}
|
||||
{{ if $hasSidebar -}}
|
||||
<div class="row row-cols-1 row-cols-{{ $breakpoint.current }}-2 row-cols-{{ $breakpoint.next }}-3">
|
||||
<div class="col col-{{ $breakpoint.next }}-2 d-none d-{{ $breakpoint.next }}-block sidebar-overflow sticky-top pt-5">
|
||||
{{ $sidebar | safeHTML }}
|
||||
|
@@ -14,14 +14,16 @@
|
||||
|
||||
{{ with .Title }}<p class="display-4 mt-5">{{ . }}</p>{{ end }}
|
||||
{{ if ne $metadata "none" }}
|
||||
{{ $lastmodstr := (partial "utilities/date.html" (dict "date" .Lastmod "format" "long")) -}}
|
||||
{{ $datestr := (partial "utilities/date.html" (dict "date" .Date "format" "long")) -}}
|
||||
<small class="text-body-secondary text-uppercase">
|
||||
{{ $datestr | i18n "postedOnDate" -}}
|
||||
{{ if eq $metadata "full" }}
|
||||
{{ if ne $datestr $lastmodstr -}} ({{ $lastmodstr | i18n "lastModified" }}){{ end }}
|
||||
{{ if .Date }}
|
||||
{{ $lastmodstr := (partial "utilities/date.html" (dict "date" .Lastmod "format" "long")) -}}
|
||||
{{ $datestr := (partial "utilities/date.html" (dict "date" .Date "format" "long")) -}}
|
||||
{{ $datestr | i18n "postedOnDate" -}}
|
||||
{{ if eq $metadata "full" }}
|
||||
{{ if ne $datestr $lastmodstr -}} ({{ $lastmodstr | i18n "lastModified" }}){{ end }}
|
||||
{{ end }}
|
||||
•
|
||||
{{ end }}
|
||||
•
|
||||
{{ .ReadingTime | lang.FormatNumber 0 }} {{ i18n "minutesShort" }} {{ i18n "read" }} •
|
||||
{{ .WordCount | lang.FormatNumber 0 }} {{ i18n "words" }}
|
||||
</small>
|
||||
|
@@ -1,7 +1,5 @@
|
||||
{{- $menu := .Scratch.Get "sidebar" -}}
|
||||
{{- $version := .Scratch.Get "version" -}}
|
||||
{{ $sidebar := "" }}
|
||||
{{- $hasSidebar := .Site.Params.navigation.sidebar | default true -}}
|
||||
{{ if and $menu $hasSidebar }}
|
||||
{{ if $menu }}
|
||||
{{ partial "assets/sidebar.html" (dict "page" . "menu" $menu "version" $version) }}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
|
@@ -7,6 +7,10 @@
|
||||
<meta name="robots" content="noindex">
|
||||
<meta charset="utf-8">
|
||||
<noscript><meta http-equiv="refresh" content="0; url={{ .Permalink }}"></noscript>
|
||||
<script src='{{ partial "utilities/GetStaticURL" (dict "url" "js/alias.js") }}'></script>
|
||||
{{ if site.Params.main.enableLanguageSelectionStorage }}
|
||||
{{- partial "footer/scripts.html" (dict "filename" "js/critical.bundle.js" "match" "js/critical/**.js" "header" true "page" page) -}}
|
||||
{{ else }}
|
||||
<script src='{{ partial "utilities/GetStaticURL" (dict "url" "js/alias.js") }}'></script>
|
||||
{{ end }}
|
||||
</head>
|
||||
</html>
|
@@ -6,6 +6,19 @@
|
||||
|
||||
{{ $error := false }}
|
||||
|
||||
{{ $anchorMap := dict
|
||||
"TopLeft" "north_west"
|
||||
"Top" "north"
|
||||
"TopRight" "north_east"
|
||||
"Left" "west"
|
||||
"Center" "center"
|
||||
"Right" "east"
|
||||
"BottomLeft" "south_west"
|
||||
"Bottom" "south"
|
||||
"BottomRight" "south_east"
|
||||
"Smart" "auto"
|
||||
}}
|
||||
|
||||
<!-- Validate arguments -->
|
||||
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "image-adapter" "args" . "group" "partial") }}
|
||||
{{ errorf "partial [assets/adapter/cloudinary.html] - Invalid arguments" -}}
|
||||
@@ -20,6 +33,8 @@
|
||||
{{ $transform := .transform }}
|
||||
{{ $height := .height }}
|
||||
{{ $width := .width }}
|
||||
{{ $anchor := "" }}
|
||||
{{ with .anchor }}{{ $anchor = index $anchorMap . }}{{ end }}
|
||||
{{ if eq $transform "fill" }}{{ $transform = "c_fill" }}{{ else }}{{ $transform = "c_fit" }}{{ end }}
|
||||
{{ $element := "" }}
|
||||
|
||||
@@ -37,6 +52,9 @@
|
||||
{{ else }}
|
||||
{{ $operation = printf "f_auto,%s,h_%d,w_%d" $transform $height $width }}
|
||||
{{ end }}
|
||||
{{ with $anchor }}
|
||||
{{ $operation = printf "%s,g_%s" $operation . }}
|
||||
{{ end }}
|
||||
{{- $element = urls.JoinPath (slice "https://" $host $dir $operation $file) -}}
|
||||
{{ end }}
|
||||
|
||||
|
@@ -20,6 +20,7 @@
|
||||
{{ $transform := .transform }}
|
||||
{{ $height := .height }}
|
||||
{{ $width := .width }}
|
||||
{{ $anchor := .anchor | default "" }}
|
||||
{{ $element := "" }}
|
||||
{{ $absoluteURL := .absoluteURL }}
|
||||
{{ $url := urls.JoinPath $dir $file }}
|
||||
@@ -46,13 +47,20 @@
|
||||
{{ if not $error }}
|
||||
{{ $scaled := "" }}
|
||||
{{ if eq $transform "fill" }}
|
||||
{{- $scaled = $img.Fill (printf "%dx%d %s" $width $height $format) -}}
|
||||
{{- $scaled = $img.Fill (printf "%dx%d %s %s" $width $height $anchor $format) -}}
|
||||
{{ else }}
|
||||
{{- $scaled = $img.Fit (printf "%dx%d %s" $width $height $format) -}}
|
||||
{{ end }}
|
||||
|
||||
{{- $clean := path.Ext $img.RelPermalink -}}
|
||||
{{- $scaled = $scaled | resources.Copy (replace $img.RelPermalink $clean (printf "-%dx%d.%s" $width $height $format)) -}}
|
||||
{{ $destination := "" }}
|
||||
{{ if $anchor }}
|
||||
{{ $destination = printf "-%dx%d-%s.%s" $width $height (lower $anchor) $format }}
|
||||
{{ else }}
|
||||
{{ $destination = printf "-%dx%d.%s" $width $height $format }}
|
||||
{{ end }}
|
||||
|
||||
{{- $scaled = $scaled | resources.Copy (replace $img.RelPermalink $clean $destination) -}}
|
||||
{{- if $absoluteURL -}}
|
||||
{{- $element = $scaled.Permalink -}}
|
||||
{{- else -}}
|
||||
|
@@ -6,6 +6,19 @@
|
||||
|
||||
{{ $error := false }}
|
||||
|
||||
{{ $anchorMap := dict
|
||||
"TopLeft" "top_left"
|
||||
"Top" "top"
|
||||
"TopRight" "top_right"
|
||||
"Left" "left"
|
||||
"Center" "center"
|
||||
"Right" "right"
|
||||
"BottomLeft" "bottom_left"
|
||||
"Bottom" "bottom"
|
||||
"BottomRight" "bottom_right"
|
||||
"Smart" "auto"
|
||||
}}
|
||||
|
||||
<!-- Validate arguments -->
|
||||
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "image-adapter" "args" . "group" "partial") }}
|
||||
{{ errorf "partial [assets/adapter/imagekit.html] - Invalid arguments" -}}
|
||||
@@ -20,6 +33,8 @@
|
||||
{{ $transform := .transform }}
|
||||
{{ $height := .height }}
|
||||
{{ $width := .width }}
|
||||
{{ $anchor := "" }}
|
||||
{{ with .anchor }}{{ $anchor = index $anchorMap . }}{{ end }}
|
||||
{{ if eq $transform "fill" }}{{ $transform = "c-maintain_ratio" }}{{ else }}{{ $transform = "c-at_max" }}{{ end }}
|
||||
{{ $element := "" }}
|
||||
|
||||
@@ -42,6 +57,9 @@
|
||||
{{ else }}
|
||||
{{ $operation = printf "tr:f-auto,%s,h-%d,w-%d" $transform $height $width }}
|
||||
{{ end }}
|
||||
{{ with $anchor }}
|
||||
{{ $operation = printf "%s,fo-%s" $operation . }}
|
||||
{{ end }}
|
||||
{{- $element = urls.JoinPath (slice "https://" $host $dir $operation $file) -}}
|
||||
{{ end }}
|
||||
|
||||
|
@@ -6,6 +6,19 @@
|
||||
|
||||
{{ $error := false }}
|
||||
|
||||
{{ $anchorMap := dict
|
||||
"TopLeft" "top,left"
|
||||
"Top" "top"
|
||||
"TopRight" "top,right"
|
||||
"Left" "left"
|
||||
"Center" "center"
|
||||
"Right" "right"
|
||||
"BottomLeft" "bottom,left"
|
||||
"Bottom" "bottom"
|
||||
"BottomRight" "bottom,right"
|
||||
"Smart" "faces,edges,center"
|
||||
}}
|
||||
|
||||
<!-- Validate arguments -->
|
||||
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "image-adapter" "args" . "group" "partial") }}
|
||||
{{ errorf "partial [assets/adapter/imgix.html] - Invalid arguments" -}}
|
||||
@@ -20,6 +33,8 @@
|
||||
{{ $transform := .transform }}
|
||||
{{ $height := .height }}
|
||||
{{ $width := .width }}
|
||||
{{ $anchor := "" }}
|
||||
{{ with .anchor }}{{ $anchor = index $anchorMap . }}{{ end }}
|
||||
{{ if eq $transform "fill" }}{{ $transform = "crop" }}{{ else }}{{ $transform = "max" }}{{ end }}
|
||||
{{ $element := "" }}
|
||||
|
||||
@@ -37,6 +52,9 @@
|
||||
{{ else }}
|
||||
{{ $operation = printf "f_auto&fit=%s&h=%d&w=%d" $transform $height $width }}
|
||||
{{ end }}
|
||||
{{ with $anchor }}
|
||||
{{ $operation = printf "%s&crop=%s" $operation . }}
|
||||
{{ end }}
|
||||
{{- $element = printf "%s?%s" (urls.JoinPath (slice "https://" $host $dir $file)) $operation -}}
|
||||
{{ end }}
|
||||
|
||||
|
@@ -95,10 +95,10 @@
|
||||
{{- end -}}
|
||||
role="button"
|
||||
>
|
||||
<div class="d-flex justify-content-{{ $justify }}">
|
||||
<div class="my-auto">{{ $title | safeHTML }}</div>
|
||||
{{- with $icon }}<div class="align-self-center{{ if $title }}{{ if eq $order "first" }} order-first pe-1{{ else }} ps-1{{ end }}{{ end }}">{{ partial "assets/icon.html" (dict "icon" $icon "spacing" false) }}</div>{{ end }}
|
||||
</div>
|
||||
<span class="d-flex justify-content-{{ $justify }}">
|
||||
<span class="my-auto">{{ $title | safeHTML }}</span>
|
||||
{{- with $icon }}<span class="align-self-center{{ if $title }}{{ if eq $order "first" }} order-first pe-1{{ else }} ps-1{{ end }}{{ end }}">{{ partial "assets/icon.html" (dict "icon" $icon "spacing" false) }}</span>{{ end }}
|
||||
</span>
|
||||
|
||||
{{- with $badge }}
|
||||
<span class="position-absolute top-0 start-100 translate-middle badge rounded-pill bg-danger">
|
||||
|
@@ -71,11 +71,13 @@
|
||||
<!-- headless page -->
|
||||
{{- else -}}
|
||||
{{- $thumbnail := (or (and (reflect.IsMap $element.Params.Thumbnail) $element.Params.Thumbnail.url) $element.Params.Thumbnail) -}}
|
||||
{{- $anchor := (or (and (reflect.IsMap $element.Params.Thumbnail) $element.Params.Thumbnail.anchor) "") -}}
|
||||
{{- $params = merge $params (dict
|
||||
"title" $element.Title
|
||||
"href" $element.RelPermalink
|
||||
"description" (partial "utilities/GetDescription.html" (dict "page" $element "raw" true))
|
||||
"thumbnail" $thumbnail
|
||||
"anchor" $anchor
|
||||
"icon" $element.Params.icon
|
||||
) -}}
|
||||
{{- end -}}
|
||||
@@ -118,6 +120,10 @@
|
||||
{{ end -}}
|
||||
{{ $sizes = printf "(min-width: %s) 20vw, (min-width: %s) 33.3vw, 100vw" $breakpoint.currentSize $breakpoint.prevSize }}
|
||||
{{ end -}}
|
||||
{{ else }}
|
||||
{{ if in (slice "2" "3" "4" "5") $cols }}
|
||||
{{ $sizes = replace (printf "%.1fvw" (div 100.0 (int $cols))) ".0" "" }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{- if not $paginate -}}
|
||||
@@ -127,7 +133,7 @@
|
||||
{{- if and (eq $cols "1") (eq $orientation "horizontal") }}{{ $orientation = "horizontal-sm" }}{{ end -}}
|
||||
|
||||
<!-- Main code -->
|
||||
<div class="container {{ $wrapper }} {{ if $scroll }}card-container-wrapper{{ end }}">
|
||||
<div class="container-fluid {{ $wrapper }} {{ if $scroll }}card-container-wrapper{{ end }}">
|
||||
<div class="row g-{{ $gutter }} {{ if $scroll }}d-flex flex-row flex-nowrap card-container scrollbar-horizontal pb-4 w-100 {{ end }} {{ $colGrid }}">
|
||||
{{ range $index, $element := $list }}
|
||||
{{- $params := (dict
|
||||
|
@@ -32,6 +32,7 @@
|
||||
{{- $ratio := .ratio -}}
|
||||
{{- $portrait := .portrait | default false -}}
|
||||
{{- $thumbnail := .thumbnail -}}
|
||||
{{- $anchor := .anchor | default "" -}}
|
||||
{{- $title := .title -}}
|
||||
{{- $subtle := .subtle -}}
|
||||
{{- $button := .button -}}
|
||||
@@ -50,20 +51,25 @@
|
||||
<!-- Override arguments -->
|
||||
{{- $page := "" }}
|
||||
{{- if .path }}
|
||||
{{- $page = site.GetPage .path }}
|
||||
{{ $page = partial "utilities/GetPage.html" (dict "url" .path "page" page) }}
|
||||
{{- if not $page }}
|
||||
{{- errorf "partial [assets/card.html] - Cannot find page: %s" .path -}}
|
||||
{{ if page.File }}
|
||||
{{- errorf "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 -}}
|
||||
{{ end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- with $page -}}
|
||||
{{- if not $title }}{{ $title = .Title }}{{ end -}}
|
||||
{{- if not $href }}{{ $href = .RelPermalink }}{{ end -}}
|
||||
{{- if not $description }}{{ $description = partial "utilities/GetDescription.html" (dict "page" .) }}{{ end -}}
|
||||
{{- if not $thumbnail }}{{ $thumbnail = (or (and (reflect.IsMap .Params.Thumbnail) .Params.Thumbnail.url) .Params.Thumbnail) }}{{ end -}}
|
||||
{{- if and (not $thumbnail) (not $icon) }}{{ $thumbnail = (or (and (reflect.IsMap .Params.Thumbnail) .Params.Thumbnail.url) .Params.Thumbnail) }}{{ end -}}
|
||||
{{ if not $ratio }}
|
||||
{{- if and (reflect.IsMap .Params.Thumbnail) .Params.Thumbnail.ratio }}{{ $ratio = .Params.Thumbnail.ratio }}{{ end -}}
|
||||
{{ end }}
|
||||
{{- if not $icon }}{{ $icon = .Params.icon }}{{ end -}}
|
||||
{{- if not $anchor }}{{ $anchor = (or (and (reflect.IsMap .Params.Thumbnail) .Params.Thumbnail.anchor) "") }}{{ end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{ if (hasPrefix $orientation "horizontal") }}
|
||||
@@ -86,7 +92,7 @@
|
||||
|
||||
{{- if $href -}}
|
||||
<a href="{{ $href }}" class="{{ if $color }}link-bg-{{ $color }}{{ else }}card-body-link{{ end }} stretched-link">
|
||||
<p class="card-title fs-5 fw-bold">{{ $title }}</p>
|
||||
<p class="card-title fs-lg-5 fs-6 fw-bold">{{ $title }}</p>
|
||||
{{ with $description }}
|
||||
<div class="card-text {{ if $color }}link-bg-{{ $color }}{{ else }}card-body-link{{ end }}">
|
||||
{{ . | safeHTML }}
|
||||
@@ -95,7 +101,7 @@
|
||||
</a>
|
||||
{{- else -}}
|
||||
<div>
|
||||
{{ with $title }}<p class="card-title fs-5 fw-bold">{{ . }}</p>{{ end -}}
|
||||
{{ with $title }}<p class="card-title fs-lg-5 fs-6 fw-bold">{{ . }}</p>{{ end -}}
|
||||
{{ with $description }}<div class="card-text">{{ . | safeHTML }}</div>{{ end -}}
|
||||
</div>
|
||||
{{- end -}}
|
||||
@@ -114,7 +120,7 @@
|
||||
|
||||
<p class="card-text"><small class="{{ if $color }}text-bg-{{ $color }}{{ else }}text-body-secondary{{ end }} text-uppercase">
|
||||
{{- if in (slice "full" "publication") $keywords -}}
|
||||
{{- partial "utilities/date.html" (dict "date" $page.Date "format" "long") -}} •
|
||||
{{ with $page.Date }}{{ partial "utilities/date.html" (dict "date" . "format" "long") }} •{{ end -}}
|
||||
{{ $page.ReadingTime | lang.FormatNumber 0 }} {{ i18n "minutesShort" }} {{ i18n "read" -}}
|
||||
{{- end -}}
|
||||
|
||||
@@ -167,7 +173,7 @@
|
||||
<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 "wrapper" "h-100 card-img-wrap" "class" "rounded-start card-img-h100 card-img-bg" "title" $title "loading" $loading) -}}
|
||||
{{- 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) -}}
|
||||
</div>
|
||||
{{- else if $icon -}}
|
||||
<div class="{{ $col1 }} p-{{ $padding }}">
|
||||
@@ -188,7 +194,7 @@
|
||||
{{- partial "card-body.html" (dict "title" $title "href" $href "color" $color "description" $description "button" $button) -}}
|
||||
</div>
|
||||
{{ if $page }}<div>{{ partial "card-caption.html" (dict "page" $page "keywords" $footer "color" $color) }}</div>{{ end }}
|
||||
{{ if $button }}
|
||||
{{ if and $href $button }}
|
||||
{{ $label := (or $buttonLabel $title) | default (T "readMore") }}
|
||||
{{ $buttonClass := "card-button mb-n4" }}
|
||||
{{ if eq $buttonType "link" }}{{ $buttonClass = "card-button card-button-link mb-n4" }}{{ end }}
|
||||
@@ -212,7 +218,7 @@
|
||||
<!-- Render stacked / default card -->
|
||||
<div class="card {{ $colorStyle }} {{ $class }} text-{{ $align }}">
|
||||
{{- if $thumbnail -}}
|
||||
{{- partial $hook (dict "url" $thumbnail "ratio" (or $ratio "16x9") "portrait" $portrait "sizes" $sizes "wrapper" "card-img-wrap" "class" "card-img-top card-img-bg" "title" (or $alt $title) "loading" $loading) -}}
|
||||
{{- partial $hook (dict "url" $thumbnail "ratio" (or $ratio "16x9") "portrait" $portrait "anchor" $anchor "sizes" $sizes "wrapper" "card-img-wrap" "class" "card-img-top card-img-bg" "title" (or $alt $title) "loading" $loading) -}}
|
||||
{{- else if $icon -}}
|
||||
<div class="card-icon p-{{ $padding }} {{ $iconStyle }} text-{{ $align }} {{ if $iconRounded }}fa-stack {{ $stack }}{{ end }} w-100">
|
||||
{{ if $iconRounded }}
|
||||
|
@@ -15,15 +15,16 @@
|
||||
{{- $mode := .mode -}}
|
||||
{{- $modes := .modes -}}
|
||||
{{- $plain := .plain | default false }}
|
||||
{{- $anchor := .anchor }}
|
||||
|
||||
<!-- Split url into base and anchor when applicable (only relevant for vector images) -->
|
||||
{{- $anchor := "" -}}
|
||||
{{- $fileAnchor := "" -}}
|
||||
{{- $segments := split $url "#" -}}
|
||||
{{- if gt (len $segments) 2 -}}
|
||||
{{- errorf "Invalid path or url: %q" $url -}}
|
||||
{{- else if eq (len $segments) 2 }}
|
||||
{{- $url = index $segments 0 -}}
|
||||
{{- $anchor = index $segments 1 -}}
|
||||
{{- $fileAnchor = index $segments 1 -}}
|
||||
{{- end -}}
|
||||
|
||||
<!-- Obtain fallback URL and imageset definition -->
|
||||
@@ -34,11 +35,13 @@
|
||||
"portrait" $portrait
|
||||
"plain" $plain
|
||||
"imageset" true
|
||||
"anchor" $anchor
|
||||
) }}
|
||||
{{ $fallbackURL := index $target "target" }}
|
||||
{{ $imgset := index $target "set" }}
|
||||
{{ $height := index $target "height" }}
|
||||
{{ $width := index $target "width" }}
|
||||
{{ $data := index $target "data" }}
|
||||
|
||||
<!-- Add color modes -->
|
||||
{{- range $none := $modes -}}
|
||||
@@ -53,7 +56,14 @@
|
||||
{{ else }}
|
||||
{{ with $wrapper }}<div class="{{ . }}">{{ end }}
|
||||
{{ end }}
|
||||
{{- if not $anchor -}}
|
||||
|
||||
{{ if $data }}
|
||||
{{- if site.Params.debugging.includeSVGOrigin }}
|
||||
{{ printf "<!-- <svg src=\"%s\"> -->" $.url | safeHTML }}
|
||||
{{ end -}}
|
||||
{{- $data = replace $data "<svg" (printf "<svg class=\"%s\"" $class) -}}
|
||||
{{- $data | safeHTML -}}
|
||||
{{- else if not $fileAnchor -}}
|
||||
<img class="img-fluid {{ $class }}"
|
||||
src="{{ $fallbackURL }}"
|
||||
{{ if $lazy }}loading="lazy"{{ end }}
|
||||
@@ -64,7 +74,7 @@
|
||||
{{ with (or $title $caption) }}alt="{{ . }}"{{ end }}>
|
||||
{{- else }}
|
||||
<svg class="{{ $class }}">
|
||||
<use href="{{ $fallbackURL }}#{{ $anchor }}"></use>
|
||||
<use href="{{ $fallbackURL }}#{{ $fileAnchor }}"></use>
|
||||
</svg>
|
||||
{{ end }}
|
||||
{{- if $caption -}}
|
||||
|
@@ -9,6 +9,7 @@
|
||||
{{- $targetURL := "" -}}
|
||||
{{- $set := "" -}}
|
||||
{{- $imageset := .imageset | default false }}
|
||||
{{- $anchor := .anchor | default "" -}}
|
||||
|
||||
<!-- Split url into base and anchor when applicable (only relevant for vector images) -->
|
||||
{{- $segments := split $url "#" -}}
|
||||
@@ -46,6 +47,7 @@
|
||||
{{ $dims := slice }}
|
||||
{{- $res := "" -}}
|
||||
{{- $img := "" -}}
|
||||
{{- $data := "" -}}
|
||||
{{ $transform := "" }}
|
||||
{{- if hasSuffix $url "svg" -}}
|
||||
{{- $res = partial "utilities/GetResource.html" (dict "url" $url "page" $page) -}}
|
||||
@@ -60,6 +62,10 @@
|
||||
{{ $dims = $dims | append "500" }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ else if eq (string $res.MediaType) "image/svg+xml" }}
|
||||
{{ $data = $res.Content }}
|
||||
{{ else }}
|
||||
{{ warnf "Unsupported media type '%s': %q" (string $res.MediaType) $url -}}
|
||||
{{ end }}
|
||||
{{ else if $ratio }}
|
||||
{{ $transform = "fill" }}
|
||||
@@ -118,14 +124,22 @@
|
||||
"url" $url
|
||||
"img" $img
|
||||
"dims" ($dims | last 1)
|
||||
"anchor" $anchor
|
||||
"transform" $transform
|
||||
"hook" $hook
|
||||
"format" "jpg"
|
||||
"format" "png"
|
||||
"includeWidth" false
|
||||
)}}
|
||||
{{ if $imageset }}
|
||||
{{- $set = partial "assets/helpers/image-set.html" (dict "url" $url "img" $img "dims" $dims "transform" $transform "hook" $hook) -}}
|
||||
{{- $set = partial "assets/helpers/image-set.html" (dict
|
||||
"url" $url
|
||||
"img" $img
|
||||
"dims" $dims
|
||||
"anchor" $anchor
|
||||
"transform" $transform
|
||||
"hook" $hook
|
||||
) -}}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{ return (dict "target" $targetURL "set" $set "height" $height "width" $width) }}
|
||||
{{ return (dict "target" $targetURL "set" $set "height" $height "width" $width "data" $data) }}
|
@@ -7,6 +7,7 @@
|
||||
{{ $transform := .transform }}
|
||||
{{ $format := .format }}
|
||||
{{ $includeWidth := .includeWidth | default true }}
|
||||
{{ $anchor := .anchor | default "" }}
|
||||
|
||||
{{ $host := (urls.Parse $url).Hostname }}
|
||||
{{ $dir := (urls.Parse $url).Path }}
|
||||
@@ -35,6 +36,7 @@
|
||||
"width" $width
|
||||
"height" $height
|
||||
"format" $format
|
||||
"anchor" $anchor
|
||||
)}}
|
||||
{{ if $includeWidth }}
|
||||
{{ $imgset = $imgset | append (printf "%s %dw" $element $width) }}
|
||||
|
@@ -27,6 +27,7 @@
|
||||
{{- if eq $priority "auto" }}{{ $priority = "" }}{{ end -}}
|
||||
{{- $sizes := .sizes | default "100vw" -}}
|
||||
{{- $plain := .plain | default false -}}
|
||||
{{- $anchor := .anchor | default "" -}}
|
||||
|
||||
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
|
||||
{{- $url := .url -}}
|
||||
@@ -49,6 +50,7 @@
|
||||
"sizes" $sizes
|
||||
"absoluteURL" $absoluteURL
|
||||
"plain" $plain
|
||||
"anchor" $anchor
|
||||
)
|
||||
-}}
|
||||
|
||||
|
@@ -14,6 +14,7 @@
|
||||
|
||||
<!-- Initialize arguments -->
|
||||
{{ $destination := strings.TrimPrefix (strings.TrimSuffix "/" site.BaseURL) .destination }}
|
||||
{{ if not $destination }}{{ $destination = "/" }}{{ end }}
|
||||
|
||||
{{- $target := "" -}}
|
||||
{{- $rel := "" -}}
|
||||
@@ -22,9 +23,11 @@
|
||||
{{- $cue := .cue | default site.Params.main.externalLinks.cue -}}
|
||||
{{- $tab := .tab | default site.Params.main.externalLinks.tab -}}
|
||||
{{- $isExternal := or (ne (urls.Parse (absURL $destination)).Host (urls.Parse site.BaseURL).Host) $external -}}
|
||||
{{- $isLocal := hasPrefix $destination "#" -}}
|
||||
{{- $page := .page -}}
|
||||
{{- $anchor := "" -}}
|
||||
{{- $text := .text -}}
|
||||
{{- $title := .title -}}
|
||||
{{- $class := .class -}}
|
||||
|
||||
<!-- Main code -->
|
||||
@@ -53,24 +56,50 @@
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{ $ref := partial "utilities/GetPage.html" (dict "url" $destination "page" $page) }}
|
||||
{{- if not $ref -}}
|
||||
{{- errorf "partial [assets/link.html] - Cannot find page: %s" $destination -}}
|
||||
{{- $error = true -}}
|
||||
{{- else -}}
|
||||
{{- $destination = $ref.RelPermalink -}}
|
||||
{{- with $anchor }}{{ $destination = printf "%s#%s" (strings.TrimSuffix "/" $destination) . -}}{{ end -}}
|
||||
{{ if not $isLocal }}
|
||||
{{ $ref := partial "utilities/GetPage.html" (dict "url" $destination "page" $page) }}
|
||||
{{- if not $ref -}}
|
||||
{{ $pageContext := "" }}
|
||||
{{ with $page.File }}{{ $pageContext = path.Join "/content" .Dir }}{{ end }}
|
||||
{{ $isPageRes := fileExists (path.Join $pageContext $destination) }}
|
||||
{{ $isStatic := fileExists (path.Join "static" $destination) }}
|
||||
{{ if and (not $isPageRes) (not $isStatic) }}
|
||||
{{- errorf "partial [assets/link.html] - Cannot find page or asset: '%s' at '%s'" $destination $page.File.Path -}}
|
||||
{{- $error = true -}}
|
||||
{{ else if $isPageRes }}
|
||||
{{ $destination = urls.JoinPath "/" (strings.TrimPrefix "/content" $pageContext) $destination }}
|
||||
{{ else if $isStatic }}
|
||||
{{ $destination = urls.JoinPath "/" $destination }}
|
||||
{{ end }}
|
||||
{{- with $anchor }}{{ $destination = printf "%s#%s" (strings.TrimSuffix "/" $destination) . -}}{{ end -}}
|
||||
{{ end }}
|
||||
|
||||
{{- if and $ref (not $error) -}}
|
||||
{{- $destination = $ref.RelPermalink -}}
|
||||
{{- with $anchor }}{{ $destination = printf "%s#%s" (strings.TrimSuffix "/" $destination) . -}}{{ end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if not $text -}}
|
||||
{{- if $anchor -}}
|
||||
{{- $text = $anchor -}}
|
||||
{{- else -}}
|
||||
{{- $text = $ref.LinkTitle -}}
|
||||
{{- end -}}
|
||||
{{ if $anchor }}{{ $text = $anchor }}{{ else }}{{ $text = $ref.LinkTitle }}{{ end }}
|
||||
{{ end -}}
|
||||
{{- if not $case }}{{ $text = lower $text }}{{ end -}}
|
||||
{{- end -}}
|
||||
{{ else }}
|
||||
{{ with $anchor }}
|
||||
{{ $destination = printf "#%s" . }}
|
||||
{{ if not $text }}{{ $text = . }}{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{- if not $case }}{{ $text = lower $text }}{{ end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{ if not $error -}}
|
||||
<a {{ with $class }}class="{{ . }}" {{ end }}href="{{ $destination | safeURL }}"{{ with $target }} target="{{ . }}"{{ end }}{{ with $rel }} rel="{{ . }}"{{ end }}>{{ $text }}</a>
|
||||
{{- end }}
|
||||
<a
|
||||
{{- with $destination }} href="{{ . | safeURL }}"{{ end -}}
|
||||
{{ with $class }} class="{{ . }}" {{ end -}}
|
||||
{{ with $target }} target="{{ . }}"{{ end -}}
|
||||
{{ with $rel }} rel="{{ . }}"{{ end -}}
|
||||
{{ with $title }} title="{{ . }}"{{ end -}}
|
||||
>
|
||||
{{- $text | safeHTML -}}
|
||||
</a>
|
||||
{{- end -}}
|
@@ -29,6 +29,7 @@
|
||||
{{ end }}
|
||||
{{- $pageURL := $page.RelPermalink -}}
|
||||
{{- $isActive := or (and (hasPrefix $pageURL $menuURL) (ne $menuURL ("/" | relLangURL))) (eq $pageURL $menuURL) -}}
|
||||
{{ if not $menu.PageRef }}{{ $isActive = false }}{{ end }}
|
||||
{{- $isAlias := $menu.Params.alias -}}
|
||||
{{- $isIcon := $menu.Params.icon -}}
|
||||
|
||||
|
@@ -107,7 +107,7 @@
|
||||
{{- $enableVersions = gt (len $list ) 1 -}}
|
||||
{{ end }}
|
||||
|
||||
{{- $enableLanguage := or $page.IsTranslated site.IsMultiLingual -}}
|
||||
{{- $enableLanguage := or $page.IsTranslated hugo.IsMultilingual -}}
|
||||
{{- $horizontal := default false site.Params.navigation.horizontal -}}
|
||||
|
||||
{{- $logo := .logo | default site.Params.navigation.logo -}}
|
||||
@@ -154,11 +154,6 @@
|
||||
|
||||
{{- $pre := .Pre -}}
|
||||
{{- $post := .Post -}}
|
||||
|
||||
{{- $theme := "light" -}}
|
||||
{{- if in (slice "primary" "secondary" "success" "danger" "black") $color }}{{ $theme = "dark" }}{{ end -}}
|
||||
{{- if in (slice "body" "body-tertiary") $color }}{{ $theme = "" }}{{ end -}}
|
||||
{{- if not $color }}{{ $theme = "" }}{{ end -}}
|
||||
{{- $class := .class -}}
|
||||
|
||||
{{- $contrast := false -}}
|
||||
@@ -170,7 +165,7 @@
|
||||
{{ end }}
|
||||
|
||||
<!-- Main code -->
|
||||
<div class="container-fluid {{ if $fixed }}fixed-top{{ end }} p-0{{ with $class }} {{ . }}{{ end }}">
|
||||
<div class="container-fluid {{ if $fixed }}fixed-top{{ else if $overlay }}navbar-overlay{{ end }} p-0{{ with $class }} {{ . }}{{ end }}">
|
||||
{{- partial "assets/page-alert.html" (dict "page" $page) -}}
|
||||
<nav class="navbar p-4
|
||||
{{- if not $overlay }}{{ with $color }} bg-{{ . }}{{ end }}{{ end -}}
|
||||
@@ -178,9 +173,9 @@
|
||||
{{ if $contrast }} navbar-contrast{{ end }}"
|
||||
{{ if $overlay }}
|
||||
data-bs-theme="{{ $overlayMode }}"
|
||||
data-bs-overlay="{{ $overlayMode }}"
|
||||
{{ else }}{{ with $theme }}data-bs-theme="{{ . }}"{{ end }}{{ end }}
|
||||
{{ if $overlay }}data-navbar-color="{{ $color }}"{{ end }}
|
||||
{{ if $fixed }}data-bs-overlay="{{ $overlayMode }}"{{ end }}
|
||||
{{ if $color }}data-navbar-color="{{ $color }}"{{ end }}
|
||||
{{ end }}
|
||||
>
|
||||
<div class="container-xxl p-0">
|
||||
<div class="d-flex navbar-container justify-content-center">
|
||||
@@ -218,16 +213,18 @@
|
||||
<div class="d-flex align-items-center">
|
||||
<button class="navbar-toggler main-nav-toggler collapsed p-0" type="button" data-bs-toggle="collapse" data-bs-target="#{{ $id }}-collapse"
|
||||
aria-controls="{{ $id }}" aria-expanded="false" aria-label="{{ T "toggleMainNav" }}">
|
||||
<span class="toggler-icon top-bar emphasis{{ with $theme }}-{{ . }}{{ end }}"></span>
|
||||
<span class="toggler-icon middle-bar emphasis{{ with $theme }}-{{ . }}{{ end }}"></span>
|
||||
<span class="toggler-icon bottom-bar emphasis{{ with $theme }}-{{ . }}{{ end }}"></span>
|
||||
<span class="toggler-icon top-bar emphasis"></span>
|
||||
<span class="toggler-icon middle-bar emphasis"></span>
|
||||
<span class="toggler-icon bottom-bar emphasis"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="navbar-collapse collapse" id="{{ $id }}-collapse">
|
||||
<!-- Insert search input -->
|
||||
{{- if and $search (not $searchModal) }}{{ partial "assets/search-input.html" }}{{ end -}}
|
||||
{{- if and $search (not $searchModal) }}
|
||||
{{ partial "assets/search-input.html" (dict "class" (printf "mt-4 mt-%s-0" $size)) }}
|
||||
{{ end -}}
|
||||
|
||||
<!-- Render top-menu items (maximum depth of 2) -->
|
||||
<ul class="navbar-nav {{ if $flex }}d-flex w-100{{ else }}ms-auto{{ end }}">
|
||||
@@ -272,14 +269,14 @@
|
||||
<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">
|
||||
{{- partial "assets/icon.html" (dict "icon" "fas globe fa-fw" "spacing" false) }}
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-menu-end ">
|
||||
<ul class="dropdown-menu dropdown-menu-end " id="language-selector">
|
||||
{{- if $page.IsTranslated -}}
|
||||
{{- range $page.AllTranslations -}}
|
||||
<li><a class="dropdown-item {{ if eq .Language.Lang $currentLang }}active{{ end }}" href="{{ .RelPermalink }}">{{ .Language.LanguageName }}</a></li>
|
||||
<li><a class="dropdown-item {{ if eq .Language.Lang $currentLang }}active{{ end }}" hreflang="{{.Language.Lang}}" href="{{ .RelPermalink }}">{{ .Language.LanguageName }}</a></li>
|
||||
{{- end -}}
|
||||
{{- else -}}
|
||||
{{- range site.Languages -}}
|
||||
<li><a class="dropdown-item" href="{{ urls.JoinPath $baseURL .Lang }}">{{ default .Lang .LanguageName }}</a></li>
|
||||
<li><a class="dropdown-item" href="{{ urls.JoinPath $baseURL .Lang }}" hreflang="{{.Lang}}">{{ default .Lang .LanguageName }}</a></li>
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
</ul>
|
||||
|
@@ -64,11 +64,11 @@
|
||||
{{- with index . "layout" }}{{ $layout = . }}{{ end -}}
|
||||
{{- with index . "pane" }}{{ $pane = . }}{{ end -}}
|
||||
{{- with index . "type" }}{{ $type = . }}{{ end -}}
|
||||
{{- with index . "vertical" }}{{ $vertical = partial "utilities/CastBool.html" . }}{{ end -}}
|
||||
{{- if (isset . "vertical") }}{{ $vertical = partial "utilities/CastBool.html" (index . "vertical") }}{{ end -}}
|
||||
{{- with index . "width" }}{{ $width = . }}{{ end -}}
|
||||
{{- with index . "kind" }}{{ $kind = . }}{{ end -}}
|
||||
{{- with index . "ratio" }}{{ $ratio = . }}{{ end -}}
|
||||
{{- with index . "wrap" }}{{ $wrap = partial "utilities/CastBool.html" . }}{{ end -}}
|
||||
{{- if (isset . "wrap") }}{{ $wrap = partial "utilities/CastBool.html" (index . "wrap") }}{{ end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{ if isset $page.Params "nested" }}
|
||||
|
149
layouts/partials/assets/video.html
Normal file
149
layouts/partials/assets/video.html
Normal file
@@ -0,0 +1,149 @@
|
||||
<!--
|
||||
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.
|
||||
|
||||
This source code adapts the original embedded shortcode as maintained by the Hugo repository. It introduces the
|
||||
following modifications:
|
||||
- Isolated the styles to comply with the Content Security Policy
|
||||
- Added validation of shortcode arguments
|
||||
- Added support to retrieve the title from the video metadata
|
||||
- Adjusted autoplay configuration
|
||||
- Modified the layout
|
||||
|
||||
The original source code is available on:
|
||||
https://github.com/gohugoio/hugo/tpl/tplimpl/embedded/templates/shortcodes/youtube.html
|
||||
https://github.com/gohugoio/hugo/tpl/tplimpl/embedded/templates/shortcodes/vimeo.html
|
||||
Copyright 2022 The Hugo Authors. Licensed under the Apache License, Version 2.0.
|
||||
-->
|
||||
|
||||
{{ $error := false }}
|
||||
|
||||
<!-- Validate arguments -->
|
||||
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "video" "args" . "group" "partial") }}
|
||||
{{- errorf "partial [assets/video.html] - Invalid arguments" -}}
|
||||
{{ $error = true }}
|
||||
{{ end }}
|
||||
|
||||
<!-- Initialize arguments -->
|
||||
{{- $page := .page -}}
|
||||
{{- $position := .position -}}
|
||||
{{- $host := .host -}}
|
||||
{{- $title := .title -}}
|
||||
{{- $class := .class -}}
|
||||
{{- $account := .account -}}
|
||||
{{- $id := .id -}}
|
||||
{{- $autoplay := .autoplay -}}
|
||||
{{- $autotitle := .autotitle -}}
|
||||
{{- $ratio := .ratio -}}
|
||||
{{- $pc := "" -}}
|
||||
{{- if eq $host "youtube" }}
|
||||
{{- $pc = $page.Site.Config.Privacy.YouTube -}}
|
||||
{{- else if eq $host "vimeo" }}
|
||||
{{- $pc = $page.Site.Config.Privacy.Vimeo -}}
|
||||
{{- end -}}
|
||||
|
||||
{{ if and (eq $host "youtube") ($pc.Disable) }}
|
||||
{{- errorf "partial [assets/video.html] - YouTube video disabled in site's privacy settings" -}}
|
||||
{{ $error = true }}
|
||||
{{ else if and (eq $host "vimeo") ($pc.Disable) }}
|
||||
{{- errorf "partial [assets/video.html] - Vimeo video disabled in site's privacy settings" -}}
|
||||
{{ $error = true }}
|
||||
{{ end }}
|
||||
|
||||
{{ if not $account }}
|
||||
{{ with index $page.Site.Params.videos $host }}
|
||||
{{ with index . "account" }}{{ $account = . }}{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{ $origin := $position }}
|
||||
{{ if not $origin }}{{ with $page.File }}{{ $origin = .Path}}{{ end }}{{ end }}
|
||||
|
||||
<!-- Main code -->
|
||||
{{ if not $error -}}
|
||||
{{ if eq $host "youtube" }}
|
||||
{{- $host := cond $pc.PrivacyEnhanced "www.youtube-nocookie.com" "www.youtube.com" -}}
|
||||
{{ $url := printf "https://%s/embed/%s?origin=%s" $host $id $page.Site.BaseURL }}
|
||||
{{ $api := printf "https://www.youtube.com/oembed?format=json&url=%s" (printf "https://www.youtube.com/watch?v=%s" $id) }}
|
||||
{{ $padding := "56.25%" }}
|
||||
|
||||
{{ with resources.GetRemote $api }}
|
||||
{{ with .Err }}
|
||||
{{ errorf "Unable to parse video metadata '%q': %s\n %s" $api $origin . }}
|
||||
{{ else }}
|
||||
{{ $data := . | transform.Unmarshal }}
|
||||
{{ if $autotitle }}{{ with $data.title }}{{ $title = . }}{{ end }}{{ end }}
|
||||
{{ $padding = printf "%.2f%%" (mul (div $data.height $data.width) 100) }}
|
||||
{{ end }}
|
||||
{{ else }}
|
||||
{{ errorf "Unable to get video metadata '%q': %s" $api $origin }}
|
||||
{{ end }}
|
||||
|
||||
<div class="video-embedded {{ $class }}" data-video-padding="{{ $padding }}">
|
||||
<iframe src="{{ $url }}{{ if $autoplay }}&autoplay=1&mute=1{{ end }}"
|
||||
allowfullscreen title="{{ $title }}" {{ if $autoplay }}allow="autoplay"{{ end }}>
|
||||
</iframe>
|
||||
</div>
|
||||
{{ else if eq $host "vimeo" }}
|
||||
{{ $url := printf "https://player.vimeo.com/video/%s" $id }}
|
||||
{{ $params := "" }}
|
||||
{{ if $autoplay }}{{ $params = print $params "&autoplay=1&muted=1" }}{{ end }}
|
||||
{{ if $pc.EnableDNT }}{{ $params = print $params "&dnt=1" }}{{ end }}
|
||||
{{ $params = strings.TrimPrefix "&" $params }}
|
||||
{{ with $params }}{{ $url = printf "%s?%s" $url . }}{{ end }}
|
||||
{{ $padding := "56.25%" }}
|
||||
|
||||
{{- $dnt := cond $pc.EnableDNT 1 0 -}}
|
||||
{{- $source := urls.JoinPath "https://vimeo.com" $id -}}
|
||||
{{- $query := querify "url" $url "dnt" $dnt -}}
|
||||
{{- $api := printf "https://vimeo.com/api/oembed.json?%s" $query -}}
|
||||
{{- with resources.GetRemote $api -}}
|
||||
{{ with .Err }}
|
||||
{{ errorf "Unable to parse video metadata '%q': %s\n %s" $api $origin . }}
|
||||
{{ else }}
|
||||
{{ $data := . | transform.Unmarshal }}
|
||||
{{ if $autotitle }}{{ with $data.title }}{{ $title = . }}{{ end }}{{ end }}
|
||||
{{ $padding = printf "%.2f%%" (mul (div $data.height $data.width) 100) }}
|
||||
{{ end }}
|
||||
{{- end -}}
|
||||
|
||||
<div class="video-embedded {{ $class }}" data-video-padding="{{ $padding }}">
|
||||
<iframe src="{{ $url | safeHTMLAttr }}" title="{{ $title }}" webkitallowfullscreen mozallowfullscreen allowfullscreen>
|
||||
</iframe>
|
||||
</div>
|
||||
{{ else if eq $host "cloudinary" }}
|
||||
{{ if not $account }}
|
||||
{{ errorf "Missing account name for Cloudinary video '%s': %s" $id $origin }}
|
||||
{{ end }}
|
||||
|
||||
{{ $url := printf "https://player.cloudinary.com/embed/?cloud_name=%s&public_id=%s" $account $id }}
|
||||
{{ $params := "&controls=true" }}
|
||||
{{ if $autoplay }}{{ $params = print $params "&autoplay=true&muted=true" }}{{ end }}
|
||||
{{ with $params }}{{ $url = print $url . }}{{ end }}
|
||||
{{ $padding := "56.25%" }}
|
||||
|
||||
{{ $thumbnail := urls.JoinPath (path.Dir $id) (printf "%s.jpg" (path.BaseName $id)) }}
|
||||
{{ $metadata := partial "assets/helpers/image-dimension.html" (dict
|
||||
"page" $page
|
||||
"url" (printf "https://res.cloudinary.com/%s/video/upload/%s" $account $thumbnail)
|
||||
"ratio" $ratio
|
||||
"imageset" false
|
||||
) }}
|
||||
{{ $height := index $metadata "height" }}
|
||||
{{ $width := index $metadata "width" }}
|
||||
{{ if and $height $width }}
|
||||
{{ $padding := printf "%.2f%%" (mul (div (float $height) $width) 100) }}
|
||||
{{ if not $title }}{{ $title = printf "Cloudinary video '%s'" (path.BaseName $id) }}{{ end }}
|
||||
|
||||
<div class="video-embedded {{ $class }}" data-video-padding="{{ $padding }}">
|
||||
<iframe src="{{ $url | safeHTMLAttr }}" title="{{ $title }}" webkitallowfullscreen mozallowfullscreen allowfullscreen>
|
||||
</iframe>
|
||||
</div>
|
||||
{{ else }}
|
||||
{{ errorf "Cannot retrieve metadata of Cloudinary video '%s' with account '%s': %s" $id $account $origin }}
|
||||
{{ end }}
|
||||
{{ else }}
|
||||
{{ warnf "partial [assets/video.html] - Unsupported video provider: %s" $host }}
|
||||
{{ end }}
|
||||
{{ end -}}
|
@@ -27,5 +27,20 @@
|
||||
{{- with index . "state" }}{{ $state = . }}{{ end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- partial "footer/scripts.html" (dict "filename" $filename "match" $match "header" false "skipTemplate" $skipTemplate "state" $state "page" .) }}
|
||||
{{ $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 -}}
|
||||
|
@@ -1,3 +1,18 @@
|
||||
<!--
|
||||
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 }}
|
||||
|
||||
<!-- 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}" -}}
|
||||
@@ -5,26 +20,41 @@
|
||||
{{- $header := .header -}}
|
||||
{{- $core := .core | default false -}}
|
||||
{{- $skipTemplate := .skipTemplate | default false -}}
|
||||
{{- $localize := .localize | default false }}
|
||||
|
||||
{{- $state := "async" -}}
|
||||
{{- with .state }}{{ $state = . }}{{ end -}}
|
||||
{{- $state := .state | default "async" -}}
|
||||
{{- if or $header (eq $state "immediate") }}{{ $state = "" }}{{ end -}}
|
||||
{{- $supportedStates := slice "defer" "async" "immediate" -}}
|
||||
{{- if and $state (not (in $supportedStates $state)) -}}
|
||||
{{- errorf "partial [footer/script.html] - Invalid value for param 'processing': %s" $state -}}
|
||||
{{- end -}}
|
||||
|
||||
{{ $config := page.Scratch.Get "modules" }}
|
||||
{{ if not $config }}
|
||||
{{ errorf "partial [footer/scripts.html] - Cannot initialize module configuration" }}
|
||||
{{ end }}
|
||||
|
||||
{{- $modules := "" -}}
|
||||
{{ if $core }}
|
||||
{{ $config := $page.Scratch.Get "modules" }}
|
||||
{{ if not $config }}
|
||||
{{ errorf "partial [footer/scripts.html] - Cannot initialize module configuration" }}
|
||||
{{ end }}
|
||||
|
||||
{{- $modules = $config.core -}}
|
||||
{{- if reflect.IsSlice $config.localize -}}
|
||||
{{- range $index, $mod := $modules -}}
|
||||
{{- if in $config.localize $mod}}
|
||||
{{- $localize = true -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $bundle := partial "utilities/bundle" (dict "match" $match "filename" $filename "modules" $modules "basepath" "js/modules" "all" true "debugging" site.Params.debugging.showJS) -}}
|
||||
{{ if $localize }}
|
||||
{{ $filename = path.Join (path.Dir $filename) (printf "%s.%s%s" (path.BaseName $filename) $page.Language.Lang (path.Ext $filename)) }}
|
||||
{{ end }}
|
||||
|
||||
<!-- Main code -->
|
||||
{{- $bundle := partial "utilities/bundle" (dict
|
||||
"match" $match
|
||||
"filename" $filename
|
||||
"modules" $modules
|
||||
"basepath" "js/modules"
|
||||
"all" true
|
||||
"debugging" site.Params.debugging.showJS
|
||||
) -}}
|
||||
{{- $js := $bundle -}}
|
||||
{{- if not $skipTemplate -}}
|
||||
{{- $js = $bundle | resources.ExecuteAsTemplate $filename $page -}}
|
||||
|
@@ -17,6 +17,8 @@
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
|
||||
{{ $alt := slice .Site.Params.schema.twitter .Site.Params.schema.linkedin .Site.Params.schema.github }}
|
||||
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
@@ -31,17 +33,7 @@
|
||||
{{ end -}}
|
||||
"name": "{{ .Site.Params.schema.name }}",
|
||||
"url": {{ print $baseURL }},
|
||||
"sameAs": [
|
||||
{{ with .Site.Params.schema.twitter -}}
|
||||
{{ . }}
|
||||
{{ end -}}
|
||||
{{ with .Site.Params.schema.linkedin -}}
|
||||
, {{ . }}
|
||||
{{ end -}}
|
||||
{{ with .Site.Params.schema.github -}}
|
||||
, {{ . }}
|
||||
{{ end -}}
|
||||
],
|
||||
"sameAs": {{ $alt | uniq | complement (slice "") }},
|
||||
{{ if eq .Site.Params.schemaType "Organization" -}}
|
||||
"logo": {
|
||||
"@type": "ImageObject",
|
||||
@@ -103,8 +95,8 @@
|
||||
"@id": {{ print $baseURL "#/schema/person/1" }}
|
||||
},
|
||||
{{ end -}}
|
||||
"datePublished": "{{ .Date.Format "2006-01-02T15:04:05CET" }}",
|
||||
"dateModified": "{{ .Lastmod.Format "2006-01-02T15:04:05CET" }}",
|
||||
{{ with .Date }}"datePublished": "{{ .Format "2006-01-02T15:04:05CET" }}",{{ end -}}
|
||||
{{ with .Lastmod }}"dateModified": "{{ .Format "2006-01-02T15:04:05CET" }}",{{ end -}}
|
||||
"breadcrumb": {
|
||||
"@id": {{ print .Permalink "#/schema/breadcrumb/1" }}
|
||||
},
|
||||
@@ -151,8 +143,8 @@
|
||||
"mainEntityOfPage": {
|
||||
"@id": {{ .Permalink }}
|
||||
},
|
||||
"datePublished": "{{ .Date.Format "2006-01-02T15:04:05CET" }}",
|
||||
"dateModified": "{{ .Lastmod.Format "2006-01-02T15:04:05CET" }}",
|
||||
{{ with .Date }}"datePublished": "{{ .Format "2006-01-02T15:04:05CET" }}",{{ end -}}
|
||||
{{ with .Lastmod }}"dateModified": "{{ .Format "2006-01-02T15:04:05CET" }}",{{ end -}}
|
||||
"author": {
|
||||
"@id": {{ print $baseURL "#/schema/person/2" }}
|
||||
},
|
||||
|
@@ -40,7 +40,7 @@
|
||||
{{- $actions = sort $actions "weight" "asc" -}}
|
||||
<div class="hstack{{ if gt (len $actions) 1 }} gap-1{{ end }} justify-content-{{ $align}} pt-5 pt-md-3">
|
||||
{{ range $actions }}
|
||||
{{ partial "assets/button.html" (dict "href" .url "icon" .icon "title" .title "outline" .outline "order" "last" "justify" "start") }}
|
||||
{{ partial "assets/button.html" (dict "href" .url "icon" .icon "label" .label "title" .title "outline" .outline "order" "last" "justify" "start") }}
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ end }}
|
||||
|
@@ -4,6 +4,7 @@
|
||||
{{ $optional := slice }}
|
||||
{{ $excludeSCSS := slice }}
|
||||
{{ $disableTemplate := slice }}
|
||||
{{ $localize := slice }}
|
||||
{{ $modules := dict }}
|
||||
|
||||
{{ range $key, $mod := $page.Site.Params.modules }}
|
||||
@@ -37,13 +38,24 @@
|
||||
{{ $disableTemplate = $disableTemplate | append $key }}
|
||||
{{ end }}
|
||||
|
||||
{{ if eq (index $mod "localize") true }}
|
||||
{{ $localize = $localize | append $key }}
|
||||
{{ end }}
|
||||
|
||||
{{ $modules = merge $modules (dict $key $mod) }}
|
||||
{{ else }}
|
||||
{{ warnf "Unsupported module parameter: %s" $key }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{ $modules := dict "modules" $modules "core" $core "optional" $optional "excludeSCSS" $excludeSCSS "disableTemplate" $disableTemplate }}
|
||||
{{ $modules := dict
|
||||
"modules" $modules
|
||||
"core" $core
|
||||
"optional" $optional
|
||||
"excludeSCSS" $excludeSCSS
|
||||
"disableTemplate" $disableTemplate
|
||||
"localize" $localize
|
||||
}}
|
||||
|
||||
{{- if and $page.IsPage (not (in $core "bootstrap")) -}}
|
||||
{{- errorf "Bootstrap is a required module, please add it to 'modules.core' in your site parameters" -}}
|
||||
|
@@ -1,5 +1,3 @@
|
||||
{{ $lastmodstr := (partial "utilities/date.html" (dict "date" .Lastmod "format" "long")) -}}
|
||||
{{ $lastmodstr | i18n "lastModified" -}}
|
||||
{{ with .GitInfo }}
|
||||
• <a href="{{ site.Params.docs.github | default site.Params.schema.github }}/commit/{{ .Hash }}">{{ .Subject }} ({{ .AbbreviatedHash }})</a>
|
||||
{{ end -}}
|
@@ -49,7 +49,7 @@
|
||||
<!-- Main code -->
|
||||
{{ $show := false -}}
|
||||
{{ if not $error }}
|
||||
{{ with .Get "show" }}{{ $show = partial "utilities/CastBool.html" . }}{{ end -}}
|
||||
{{ if isset .Params "show" }}{{ $show = partial "utilities/CastBool.html" (.Get "show") }}{{ end -}}
|
||||
|
||||
<div class="accordion-item">
|
||||
{{- with $header -}}
|
||||
|
@@ -12,19 +12,25 @@
|
||||
{{ $error = true }}
|
||||
{{ end }}
|
||||
|
||||
<!-- Initialize arguments and default values -->
|
||||
{{- $id := printf "accordion-%d" .Ordinal -}}
|
||||
{{- $class := "" -}}
|
||||
{{- $open := false -}}
|
||||
{{- $body := .Inner -}}
|
||||
|
||||
{{ if .IsNamedParams }}
|
||||
{{ with .Get "id" }}{{ $id = . }}{{ end }}
|
||||
{{ with .Get "class" }}{{ $class = . }}{{ end }}
|
||||
{{ if isset .Params "always-open" }}{{ $open = partial "utilities/CastBool.html" (.Get "always-open") }}{{ end -}}
|
||||
{{ end }}
|
||||
|
||||
{{- if $open -}}
|
||||
{{- $pattern := printf "data-bs-parent=\"#%s\"" $id -}}
|
||||
{{- $body = (replace .Inner $pattern "") }}
|
||||
{{- end -}}
|
||||
|
||||
<!-- Main code -->
|
||||
{{ if not $error }}
|
||||
{{- $id := printf "accordion-%d" .Ordinal -}}
|
||||
{{ with .Get "id" }}{{ $id = . }}{{ end }}
|
||||
{{- $class := .Get "class" | default "" -}}
|
||||
{{- $open := false -}}
|
||||
{{ with .Get "always-open" }}{{ $open = partial "utilities/CastBool.html" . }}{{ end -}}
|
||||
{{- $body := .Inner -}}
|
||||
{{- if $open -}}
|
||||
{{- $pattern := printf "data-bs-parent=\"#%s\"" $id -}}
|
||||
{{- $body = (replace .Inner $pattern "") }}
|
||||
{{- end -}}
|
||||
|
||||
<div id="{{ $id }}" class="accordion mb-3{{ with $class }} {{ . }}{{ end }}">
|
||||
{{- $body | safeHTML -}}
|
||||
</div>
|
||||
|
@@ -27,7 +27,9 @@
|
||||
{{ $icon = partial "assets/icon.html" (dict "icon" (printf "%s fa-2x fa-fw" .)) }}
|
||||
{{ end }}
|
||||
{{ $dismissible := false -}}
|
||||
{{ with .Get "dismissible" }}{{ $dismissible = partial "utilities/CastBool.html" . }}{{ end -}}
|
||||
{{- if and .IsNamedParams (isset .Params "dismissible") }}
|
||||
{{ $dismissible = partial "utilities/CastBool.html" (.Get "dismissible") }}
|
||||
{{ end }}
|
||||
{{- $class := .Get "class" | default "" -}}
|
||||
|
||||
{{ $body := trim .Inner " \r\n" -}}
|
||||
|
@@ -28,7 +28,9 @@
|
||||
{{ end }}
|
||||
|
||||
{{ $parent := false -}}
|
||||
{{ with .Get "parent" }}{{ $parent = partial "utilities/CastBool.html" . }}{{ end -}}
|
||||
{{- if .IsNamedParams }}
|
||||
{{ if isset .Params "parent" }}{{ $parent = partial "utilities/CastBool.html" (.Get "parent") }}{{ end -}}
|
||||
{{ end }}
|
||||
|
||||
<!-- Main code -->
|
||||
{{ if not $error }}
|
||||
|
@@ -26,7 +26,7 @@
|
||||
{{ $size := .Get "size" | default "md" -}}
|
||||
{{ $color := .Get "color" | default "primary" -}}
|
||||
{{ $outline := false -}}
|
||||
{{ with .Get "outline" }}{{ $outline = partial "utilities/CastBool.html" . }}{{ end -}}
|
||||
{{ if isset .Params "outline" }}{{ $outline = partial "utilities/CastBool.html" (.Get "outline") }}{{ end -}}
|
||||
{{ $badge := .Get "badge" | default "" -}}
|
||||
{{ $label := or (.Get "label") (.Get "aria-label") | default "" -}}
|
||||
{{ $tooltip := .Get "tooltip" | default "" -}}
|
||||
@@ -43,11 +43,11 @@
|
||||
{{- $order := .Get "order" | default "last" -}}
|
||||
{{- $justify := .Get "justify" | default "center" -}}
|
||||
{{- $cue := site.Params.main.externalLinks.cue -}}
|
||||
{{ with .Get "cue" }}{{ $show = partial "utilities/CastBool.html" . }}{{ end -}}
|
||||
{{ if isset .Params "cue" }}{{ $cue = partial "utilities/CastBool.html" (.Get "cue") }}{{ end -}}
|
||||
{{- $tab := default site.Params.main.externalLinks.tab -}}
|
||||
{{ with .Get "tab" }}{{ $show = partial "utilities/CastBool.html" . }}{{ end -}}
|
||||
{{ if isset .Params "tab" }}{{ $tab = partial "utilities/CastBool.html" (.Get "tab") }}{{ end -}}
|
||||
{{- $spacing := default (not .Parent) -}}
|
||||
{{ with .Get "spacing" }}{{ $show = partial "utilities/CastBool.html" . }}{{ end -}}
|
||||
{{ if isset .Params "spacing" }}{{ $spacing = partial "utilities/CastBool.html" (.Get "spacing") }}{{ end -}}
|
||||
|
||||
<!-- Main code -->
|
||||
{{ if not $error }}
|
||||
|
@@ -32,6 +32,7 @@
|
||||
{{- $page := .Page -}}
|
||||
{{- $path := .Get "path" -}}
|
||||
{{- $thumbnail := .Get "thumbnail" -}}
|
||||
{{- $anchor := .Get "anchor" -}}
|
||||
{{- $title := .Get "title" -}}
|
||||
{{- $button := partial "utilities/GetArgParent" (dict "page" . "arg" "button") | default false -}}
|
||||
{{- $buttonType := partial "utilities/GetArgParent" (dict "page" . "arg" "buttonType") | default "" -}}
|
||||
@@ -81,6 +82,7 @@
|
||||
"wrapper" $wrapper
|
||||
"thumbnail" $thumbnail
|
||||
"loading" $loading
|
||||
"anchor" $anchor
|
||||
"alt" $alt
|
||||
"button" $button
|
||||
"buttonType" $buttonType
|
||||
|
@@ -49,8 +49,10 @@
|
||||
{{- errorf "File format not supported (line %s): %s" .Position $file -}}
|
||||
{{- end -}}
|
||||
|
||||
{{ $show := .Get "show" | default true -}}
|
||||
{{ $full := .Get "full" | default true -}}
|
||||
{{- $show := true -}}
|
||||
{{ if isset .Params "show" }}{{ $show = partial "utilities/CastBool.html" (.Get "show") }}{{ end -}}
|
||||
{{- $full := true -}}
|
||||
{{ if isset .Params "full" }}{{ $full = partial "utilities/CastBool.html" (.Get "full") }}{{ end -}}
|
||||
{{- $class := .Get "class" | default "" -}}
|
||||
|
||||
<!-- Main code -->
|
||||
|
@@ -33,8 +33,10 @@
|
||||
{{- $extension := strings.TrimLeft "." (path.Ext $file) }}
|
||||
{{- $lang := .Get "lang" | default $extension -}}
|
||||
{{- $id := .Get "id" | default (printf "file-collapse-%d" .Ordinal) -}}
|
||||
{{ $show := .Get "show" | default true -}}
|
||||
{{ $full := .Get "full" | default true -}}
|
||||
{{- $show := true -}}
|
||||
{{ if isset .Params "show" }}{{ $show = partial "utilities/CastBool.html" (.Get "show") }}{{ end -}}
|
||||
{{- $full := true -}}
|
||||
{{ if isset .Params "full" }}{{ $full = partial "utilities/CastBool.html" (.Get "full") }}{{ end -}}
|
||||
{{- $class := .Get "class" | default "" -}}
|
||||
|
||||
<!-- Main code -->
|
||||
|
@@ -25,6 +25,7 @@
|
||||
{{- $loading := "" -}}
|
||||
{{- $error := false -}}
|
||||
{{- $plain := false -}}
|
||||
{{- $anchor := "" -}}
|
||||
|
||||
{{- if .IsNamedParams -}}
|
||||
{{ $url = .Get "src" | default "" -}}
|
||||
@@ -36,9 +37,10 @@
|
||||
{{ $title = .Get "title" | default "" -}}
|
||||
{{ $caption = .Get "caption" | default "" -}}
|
||||
{{ $figclass = .Get "figclass" | default "" -}}
|
||||
{{ with .Get "mode" }}{{ $mode = partial "utilities/CastBool.html" . }}{{ end -}}
|
||||
{{ with .Get "portrait" }}{{ $portrait = partial "utilities/CastBool.html" . }}{{ end -}}
|
||||
{{ with .Get "plain" }}{{ $plain = partial "utilities/CastBool.html" . }}{{ end -}}
|
||||
{{ if isset .Params "mode" }}{{ $mode = partial "utilities/CastBool.html" (.Get "mode") }}{{ end -}}
|
||||
{{ if isset .Params "portrait" }}{{ $portrait = partial "utilities/CastBool.html" (.Get "portrait") }}{{ end -}}
|
||||
{{ if isset .Params "plain" }}{{ $plain = partial "utilities/CastBool.html" (.Get "plain") }}{{ end -}}
|
||||
{{ $anchor = .Get "anchor" | default "" -}}
|
||||
{{ else -}}
|
||||
{{ $url = .Get 0 }}
|
||||
{{ end -}}
|
||||
@@ -61,6 +63,7 @@
|
||||
"mode" $mode
|
||||
"portrait" $portrait
|
||||
"plain" $plain
|
||||
"anchor" $anchor
|
||||
"loading" $loading
|
||||
"page" .Page)
|
||||
-}}
|
||||
|
@@ -80,8 +80,14 @@
|
||||
{{- if not $isExternal -}}
|
||||
{{ $ref := partial "utilities/GetPage.html" (dict "url" $url "page" .Page) }}
|
||||
{{- if not $ref -}}
|
||||
{{- errorf "Cannot find page: '%s' at %s" $url .Position -}}
|
||||
{{- $error = true -}}
|
||||
{{ $pageContext := "" }}
|
||||
{{ with .Page.File }}{{ $pageContext = path.Join "/content" .Dir }}{{ end }}
|
||||
{{ $isPageRes := fileExists (path.Join $pageContext $url) }}
|
||||
{{ $isStatic := fileExists (path.Join "/static" $url) }}
|
||||
{{ if and (not $isPageRes) (not $isStatic) }}
|
||||
{{- errorf "Cannot find page or asset: '%s' at %s" $url .Position -}}
|
||||
{{- $error = true -}}
|
||||
{{ end }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
|
@@ -24,9 +24,9 @@
|
||||
{{- end -}}
|
||||
|
||||
{{- $fade := false -}}
|
||||
{{ with .Get "fade" }}{{ $fade = partial "utilities/CastBool.html" . }}{{ end -}}
|
||||
{{ if isset .Params "fade" }}{{ $fade = partial "utilities/CastBool.html" (.Get "fade") }}{{ end -}}
|
||||
{{- $parentFade := false }}
|
||||
{{ with .Parent.Get "fade" }}{{ $parentFade = partial "utilities/CastBool.html" . }}{{ end -}}
|
||||
{{ if isset .Parent.Params "fade" }}{{ $parentFade = partial "utilities/CastBool.html" (.Parent.Get "fade") }}{{ end -}}
|
||||
{{ $fade = or $fade $parentFade }}
|
||||
{{- $header := .Get "header" | default "" -}}
|
||||
{{- $class := .Get "class" | default "" -}}
|
||||
|
@@ -19,9 +19,9 @@
|
||||
{{ $supportedNavTypes := slice "tabs" "pills" "underline" "callout" -}}
|
||||
|
||||
{{ $vertical := false -}}
|
||||
{{ with .Get "vertical" }}{{ $vertical = partial "utilities/CastBool.html" . }}{{ end -}}
|
||||
{{ if isset .Params "vertical" }}{{ $vertical = partial "utilities/CastBool.html" (.Get "vertical") }}{{ end -}}
|
||||
{{ $wrap := false -}}
|
||||
{{ with .Get "wrap" }}{{ $wrap = partial "utilities/CastBool.html" . }}{{ end -}}
|
||||
{{ if isset .Params "wrap" }}{{ $wrap = partial "utilities/CastBool.html" (.Get "wrap") }}{{ end -}}
|
||||
|
||||
{{- if and (eq $type "tabs") $vertical -}}
|
||||
{{- errorf "Tabs do not support vertical layout" -}}
|
||||
|
@@ -29,9 +29,9 @@
|
||||
{{ if eq $style "light" }}{{ $inverseStyle = "dark" }}{{ end -}}
|
||||
{{ $color := .Get "color" | default "" -}}
|
||||
{{ $searchParam := true -}}
|
||||
{{ with .Get "search" }}{{ $searchParam = partial "utilities/CastBool.html" . }}{{ end -}}
|
||||
{{ if isset .Params "search" }}{{ $searchParam = partial "utilities/CastBool.html" (.Get "search") }}{{ end -}}
|
||||
{{ $modeParam := true -}}
|
||||
{{ with .Get "mode" }}{{ $modeParam = partial "utilities/CastBool.html" . }}{{ end -}}
|
||||
{{ if isset .Params "mode" }}{{ $modeParam = partial "utilities/CastBool.html" (.Get "mode") }}{{ end -}}
|
||||
{{ $logo := .Get "logo" | default "" -}}
|
||||
{{ $title := .Get "title" | default "" -}}
|
||||
{{- $class := .Get "class" | default "" -}}
|
||||
|
@@ -16,9 +16,9 @@
|
||||
{{- $version := .Get "version" | default "" -}}
|
||||
{{- $state := .Get "state" | default "new" -}}
|
||||
{{- $short := false -}}
|
||||
{{ with .Get "short" }}{{ $short = partial "utilities/CastBool.html" . }}{{ end -}}
|
||||
{{ if isset .Params "short" }}{{ $short = partial "utilities/CastBool.html" (.Get "short") }}{{ end -}}
|
||||
{{- $inline := false -}}
|
||||
{{ with .Get "inline" }}{{ $inline = partial "utilities/CastBool.html" . }}{{ end -}}
|
||||
{{ if isset .Params "inline" }}{{ $inline = partial "utilities/CastBool.html" (.Get "inline") }}{{ end -}}
|
||||
{{- $title := $version -}}
|
||||
{{- $color := "primary" -}}
|
||||
{{- if eq $state "deprecated" -}}
|
||||
@@ -26,6 +26,7 @@
|
||||
{{- end -}}
|
||||
{{- $size := .Get "size" | default "md" -}}
|
||||
{{- $class := .Get "class" | default "" -}}
|
||||
{{- $type := .Get "type" | default "button" -}}
|
||||
|
||||
{{- $icon := "" -}}
|
||||
{{- $tooltip := "" -}}
|
||||
@@ -55,19 +56,24 @@
|
||||
|
||||
<!-- Main code -->
|
||||
{{- if not $error -}}
|
||||
{{- if not $inline }}<div class="pb-3">{{ end -}}
|
||||
{{- partial "assets/button.html" (dict
|
||||
"title" $title
|
||||
"href" (partial "partials/utilities/URLJoin.html" (dict "base" site.Params.docs.release "path" $version))
|
||||
"size" "sm"
|
||||
"color" $color
|
||||
"outline" "true"
|
||||
"size" $size
|
||||
"icon" $icon
|
||||
"tooltip" $tooltip
|
||||
"order" "first"
|
||||
"class" (trim (printf "rounded-2 fw-semibold %s" $class) " ")
|
||||
"spacing" $inline)
|
||||
-}}
|
||||
{{- if not $inline }}</div>{{ end -}}
|
||||
{{ $href := partial "partials/utilities/URLJoin.html" (dict "base" site.Params.docs.release "path" $version) }}
|
||||
{{ if eq $type "link" }}
|
||||
{{ partial "assets/link.html" (dict "destination" $href "text" $title "page" .Page) }}
|
||||
{{ else }}
|
||||
{{- if not $inline }}<div class="pb-3">{{ end -}}
|
||||
{{- partial "assets/button.html" (dict
|
||||
"title" $title
|
||||
"href" $href
|
||||
"size" "sm"
|
||||
"color" $color
|
||||
"outline" "true"
|
||||
"size" $size
|
||||
"icon" $icon
|
||||
"tooltip" $tooltip
|
||||
"order" "first"
|
||||
"class" (trim (printf "rounded-2 fw-semibold %s" $class) " ")
|
||||
"spacing" $inline)
|
||||
-}}
|
||||
{{- if not $inline }}</div>{{ end -}}
|
||||
{{ end }}
|
||||
{{- end -}}
|
||||
|
@@ -15,7 +15,7 @@
|
||||
<!-- Initialize arguments -->
|
||||
{{ $color := .Get "color" | default "primary" -}}
|
||||
{{ $grow := false -}}
|
||||
{{ with .Get "grow" }}{{ $grow = partial "utilities/CastBool.html" . }}{{ end -}}
|
||||
{{ if isset .Params "grow" }}{{ $grow = partial "utilities/CastBool.html" (.Get "grow") }}{{ end -}}
|
||||
{{ $class := .Get "class" | default "" -}}
|
||||
|
||||
<!-- Main code -->
|
||||
|
@@ -22,9 +22,9 @@
|
||||
{{- if .IsNamedParams -}}
|
||||
{{ $breakpoint = .Get "breakpoint" }}
|
||||
{{ $class = .Get "class" | default "" }}
|
||||
{{ with (.Get "sortable")}} {{ $sortable = partial "utilities/CastBool.html" . }}{{ end }}
|
||||
{{ with (.Get "paging")}} {{ $paging = partial "utilities/CastBool.html" . }}{{ end }}
|
||||
{{ with (.Get "searchable")}} {{ $searchable = partial "utilities/CastBool.html" . }}{{ end }}
|
||||
{{ 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 }}
|
||||
{{ else }}
|
||||
{{ $breakpoint = .Get 0 }}
|
||||
{{ end }}
|
||||
|
50
layouts/shortcodes/video.html
Normal file
50
layouts/shortcodes/video.html
Normal file
@@ -0,0 +1,50 @@
|
||||
<!--
|
||||
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 }}
|
||||
|
||||
<!-- Validate arguments -->
|
||||
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "video" "args" .Params "group" "shortcode") }}
|
||||
{{ errorf "Invalid arguments: %s" .Position -}}
|
||||
{{ $error = true }}
|
||||
{{ end }}
|
||||
|
||||
<!-- Initialize arguments -->
|
||||
{{- $host := "youtube" -}}
|
||||
{{- $account := "" -}}
|
||||
{{- $id := "" -}}
|
||||
{{- $class := "" -}}
|
||||
{{- $title := "" }}
|
||||
{{- $autoplay := false }}
|
||||
{{- $autotitle := false }}
|
||||
|
||||
{{- if .IsNamedParams }}
|
||||
{{ with .Get "host" }}{{ $host = . }}{{ end }}
|
||||
{{ with .Get "account" }}{{ $account = . }}{{ end }}
|
||||
{{ with .Get "id" }}{{ $id = . }}{{ end }}
|
||||
{{ with .Get "class" }}{{ $class = . }}{{ end }}
|
||||
{{ with .Get "title" }}{{ $title = . }}{{ end }}
|
||||
{{ if isset .Params "autoplay" }}{{ $autoplay = partial "utilities/CastBool.html" (.Get "autoplay") }}{{ end -}}
|
||||
{{ if isset .Params "autotitle" }}{{ $autotitle = partial "utilities/CastBool.html" (.Get "autotitle") }}{{ end -}}
|
||||
{{ else }}
|
||||
{{- $id = .Get 0 -}}
|
||||
{{- $class = .Get 1 -}}
|
||||
{{ end }}
|
||||
|
||||
<!-- Main code -->
|
||||
{{ if not $error -}}
|
||||
{{ partial "assets/video.html" (dict
|
||||
"page" .Page
|
||||
"position" .Position
|
||||
"account" $account
|
||||
"host" $host
|
||||
"id" $id
|
||||
"class" $class
|
||||
"title" $title
|
||||
"autoplay" $autoplay
|
||||
"autotitle" $autotitle
|
||||
) }}
|
||||
{{ end -}}
|
46
layouts/shortcodes/vimeo.html
Normal file
46
layouts/shortcodes/vimeo.html
Normal file
@@ -0,0 +1,46 @@
|
||||
<!--
|
||||
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 }}
|
||||
|
||||
<!-- Validate arguments -->
|
||||
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "video" "args" .Params "group" "shortcode") }}
|
||||
{{ errorf "Invalid arguments: %s" .Position -}}
|
||||
{{ $error = true }}
|
||||
{{ end }}
|
||||
|
||||
<!-- Initialize arguments -->
|
||||
{{- $host := "vimeo" -}}
|
||||
{{- $id := "" -}}
|
||||
{{- $class := "" -}}
|
||||
{{- $title := "Vimeo Video" }}
|
||||
{{- $autoplay := false }}
|
||||
{{- $autotitle := false }}
|
||||
|
||||
{{- if .IsNamedParams }}
|
||||
{{ with .Get "id" }}{{ $id = . }}{{ end }}
|
||||
{{ with .Get "class" }}{{ $class = . }}{{ end }}
|
||||
{{ with .Get "title" }}{{ $title = . }}{{ end }}
|
||||
{{ if isset .Params "autoplay" }}{{ $autoplay = partial "utilities/CastBool.html" (.Get "autoplay") }}{{ end -}}
|
||||
{{ if isset .Params "autotitle" }}{{ $autotitle = partial "utilities/CastBool.html" (.Get "autotitle") }}{{ end -}}
|
||||
{{ else }}
|
||||
{{- $id = .Get 0 -}}
|
||||
{{- $class = .Get 1 -}}
|
||||
{{ end }}
|
||||
|
||||
<!-- Main code -->
|
||||
{{ if not $error -}}
|
||||
{{ partial "assets/video.html" (dict
|
||||
"page" .Page
|
||||
"position" .Position
|
||||
"host" $host
|
||||
"id" $id
|
||||
"class" $class
|
||||
"title" $title
|
||||
"autoplay" $autoplay
|
||||
"autotitle" $autotitle
|
||||
) }}
|
||||
{{ end -}}
|
@@ -2,40 +2,45 @@
|
||||
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.
|
||||
|
||||
This source code adapts the original embedded shortcode as maintained by the Hugo repository. It introduces the
|
||||
following modifications:
|
||||
- Isolated the styles to comply with the Content Security Policy
|
||||
- Added validation of shortcode arguments
|
||||
- Modified the layout
|
||||
|
||||
The original source code is available on:
|
||||
https://github.com/gohugoio/hugo/tpl/tplimpl/embedded/templates/shortcodes/youtube.html
|
||||
Copyright 2022 The Hugo Authors. Licensed under the Apache License, Version 2.0.
|
||||
-->
|
||||
|
||||
{{- $pc := .Page.Site.Config.Privacy.YouTube -}}
|
||||
{{- if not $pc.Disable -}}
|
||||
{{ $error := false }}
|
||||
{{ $error := false }}
|
||||
|
||||
<!-- Validate arguments -->
|
||||
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "youtube" "args" .Params) }}
|
||||
{{ errorf "Invalid arguments: %s" .Position -}}
|
||||
{{ $error = true }}
|
||||
{{ end }}
|
||||
|
||||
<!-- Initialize arguments -->
|
||||
{{- $id := .Get "id" | default (.Get 0) -}}
|
||||
{{- $class := .Get "class" | default (.Get 1) -}}
|
||||
{{- $title := .Get "title" | default "YouTube Video" }}
|
||||
{{- $autoplay := false }}
|
||||
{{ with .Get "autoplay" }}{{ $autoplay = partial "utilities/CastBool.html" . }}{{ end -}}
|
||||
{{- $host := cond $pc.PrivacyEnhanced "www.youtube-nocookie.com" "www.youtube.com" -}}
|
||||
|
||||
<!-- Main code -->
|
||||
<div class="youtube-embedded {{ $class }}">
|
||||
<iframe src="https://{{ $host }}/embed/{{ $id }}?origin={{ .Site.BaseURL }}{{ if $autoplay }}&autoplay=1{{ end }}"
|
||||
allowfullscreen title="{{ $title }}">
|
||||
</iframe>
|
||||
</div>
|
||||
{{ end -}}
|
||||
<!-- Validate arguments -->
|
||||
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "video" "args" .Params "group" "shortcode") }}
|
||||
{{ errorf "Invalid arguments: %s" .Position -}}
|
||||
{{ $error = true }}
|
||||
{{ end }}
|
||||
|
||||
<!-- Initialize arguments -->
|
||||
{{- $host := "youtube" -}}
|
||||
{{- $id := "" -}}
|
||||
{{- $class := "" -}}
|
||||
{{- $title := "YouTube Video" }}
|
||||
{{- $autoplay := false }}
|
||||
{{- $autotitle := false }}
|
||||
|
||||
{{- if .IsNamedParams }}
|
||||
{{ with .Get "id" }}{{ $id = . }}{{ end }}
|
||||
{{ with .Get "class" }}{{ $class = . }}{{ end }}
|
||||
{{ with .Get "title" }}{{ $title = . }}{{ end }}
|
||||
{{ if isset .Params "autoplay" }}{{ $autoplay = partial "utilities/CastBool.html" (.Get "autoplay") }}{{ end -}}
|
||||
{{ if isset .Params "autotitle" }}{{ $autotitle = partial "utilities/CastBool.html" (.Get "autotitle") }}{{ end -}}
|
||||
{{ else }}
|
||||
{{- $id = .Get 0 -}}
|
||||
{{- $class = .Get 1 -}}
|
||||
{{ end }}
|
||||
|
||||
<!-- Main code -->
|
||||
{{ if not $error -}}
|
||||
{{ partial "assets/video.html" (dict
|
||||
"page" .Page
|
||||
"position" .Position
|
||||
"host" $host
|
||||
"id" $id
|
||||
"class" $class
|
||||
"title" $title
|
||||
"autoplay" $autoplay
|
||||
"autotitle" $autotitle
|
||||
) }}
|
||||
{{ end -}}
|
||||
|
@@ -39,9 +39,13 @@
|
||||
{{ $lastYear := $.Scratch.Get "lastYear"}}
|
||||
<div class="row mt-2">
|
||||
<div class="d-none d-{{ $breakpoint.prev }}-block col-{{ $breakpoint.prev }}-3 mt-auto text-right">
|
||||
<time class="post-date" datetime="{{ .Date.Format "2006-01-02T15:04:05Z07:00" | safeHTML }}">
|
||||
{{ (partial "utilities/date.html" (dict "date" .Date "format" "medium")) }}
|
||||
</time>
|
||||
{{ with .Date }}
|
||||
<time class="post-date" datetime="{{ .Format "2006-01-02T15:04:05Z07:00" | safeHTML }}">
|
||||
{{ (partial "utilities/date.html" (dict "date" . "format" "medium")) }}
|
||||
</time>
|
||||
{{ else }}
|
||||
-
|
||||
{{ end }}
|
||||
</div>
|
||||
<div class="col">
|
||||
{{ if ne $year $lastYear }}
|
||||
|
11
netlify.toml
11
netlify.toml
@@ -4,12 +4,12 @@
|
||||
command = "npm run build:example"
|
||||
|
||||
[build.environment]
|
||||
DART_SASS_VERSION = "1.77.0"
|
||||
HUGO_VERSION = "0.125.7"
|
||||
DART_SASS_VERSION = "1.77.5"
|
||||
HUGO_VERSION = "0.131.0"
|
||||
HUGO_ENV = "production"
|
||||
HUGO_ENABLEGITINFO = "true"
|
||||
NODE_VERSION = "18.20.2"
|
||||
NPM_VERSION = "10.5.0"
|
||||
NODE_VERSION = "20.16.0"
|
||||
NPM_VERSION = "10.8.1"
|
||||
# toml-docs-end netlify
|
||||
|
||||
[[headers]]
|
||||
@@ -31,7 +31,7 @@
|
||||
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://www.youtube-nocookie.com https://www.youtube.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'; \
|
||||
@@ -47,7 +47,6 @@
|
||||
camera=(), \
|
||||
magnetometer=(), \
|
||||
gyroscope=(), \
|
||||
fullscreen=(), \
|
||||
payment=() \
|
||||
"""
|
||||
cache-control = """\
|
||||
|
352
package-lock.json
generated
352
package-lock.json
generated
@@ -1,19 +1,19 @@
|
||||
{
|
||||
"name": "@gethinode/hinode",
|
||||
"version": "0.24.20",
|
||||
"version": "0.26.6",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@gethinode/hinode",
|
||||
"version": "0.24.20",
|
||||
"version": "0.26.6",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@fullhuman/postcss-purgecss": "^6.0.0",
|
||||
"autoprefixer": "^10.4.19",
|
||||
"cssnano": "^7.0.4",
|
||||
"cssnano-preset-advanced": "^7.0.4",
|
||||
"hugo-bin": "0.126.0",
|
||||
"autoprefixer": "^10.4.20",
|
||||
"cssnano": "^7.0.5",
|
||||
"cssnano-preset-advanced": "^7.0.5",
|
||||
"hugo-bin": "0.130.1",
|
||||
"purgecss-whitelister": "^2.4.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
@@ -30,7 +30,7 @@
|
||||
"replace-in-files-cli": "^3.0.0",
|
||||
"rimraf": "^6.0.1",
|
||||
"shx": "^0.3.4",
|
||||
"stylelint": "^16.7.0",
|
||||
"stylelint": "^16.9.0",
|
||||
"stylelint-config-standard-scss": "^13.1.0"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
@@ -227,9 +227,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@csstools/css-parser-algorithms": {
|
||||
"version": "2.7.1",
|
||||
"resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.7.1.tgz",
|
||||
"integrity": "sha512-2SJS42gxmACHgikc1WGesXLIT8d/q2l0UFM7TaEeIzdFCE/FPMtTiizcPGGJtlPo2xuQzY09OhrLTzRxqJqwGw==",
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.1.tgz",
|
||||
"integrity": "sha512-lSquqZCHxDfuTg/Sk2hiS0mcSFCEBuj49JfzPHJogDBT0mGCyY5A1AQzBWngitrp7i1/HAZpIgzF/VjhOEIJIg==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
@@ -242,16 +242,16 @@
|
||||
}
|
||||
],
|
||||
"engines": {
|
||||
"node": "^14 || ^16 || >=18"
|
||||
"node": ">=18"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@csstools/css-tokenizer": "^2.4.1"
|
||||
"@csstools/css-tokenizer": "^3.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@csstools/css-tokenizer": {
|
||||
"version": "2.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.4.1.tgz",
|
||||
"integrity": "sha512-eQ9DIktFJBhGjioABJRtUucoWR2mwllurfnM8LuNGAqX3ViZXaUchqk+1s7jjtkFiT9ySdACsFEA3etErkALUg==",
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.1.tgz",
|
||||
"integrity": "sha512-UBqaiu7kU0lfvaP982/o3khfXccVlHPWp0/vwwiIgDF0GmqqqxoiXC/6FCjlS9u92f7CoEz6nXKQnrn1kIAkOw==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
@@ -264,13 +264,13 @@
|
||||
}
|
||||
],
|
||||
"engines": {
|
||||
"node": "^14 || ^16 || >=18"
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@csstools/media-query-list-parser": {
|
||||
"version": "2.1.13",
|
||||
"resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.13.tgz",
|
||||
"integrity": "sha512-XaHr+16KRU9Gf8XLi3q8kDlI18d5vzKSKCY510Vrtc9iNR0NJzbY9hhTmwhzYZj/ZwGL4VmB3TA9hJW0Um2qFA==",
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-3.0.1.tgz",
|
||||
"integrity": "sha512-HNo8gGD02kHmcbX6PvCoUuOQvn4szyB9ca63vZHKX5A81QytgDG4oxG4IaEfHTlEZSZ6MjPEMWIVU+zF2PZcgw==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
@@ -283,17 +283,17 @@
|
||||
}
|
||||
],
|
||||
"engines": {
|
||||
"node": "^14 || ^16 || >=18"
|
||||
"node": ">=18"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@csstools/css-parser-algorithms": "^2.7.1",
|
||||
"@csstools/css-tokenizer": "^2.4.1"
|
||||
"@csstools/css-parser-algorithms": "^3.0.1",
|
||||
"@csstools/css-tokenizer": "^3.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@csstools/selector-specificity": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.1.1.tgz",
|
||||
"integrity": "sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA==",
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-4.0.0.tgz",
|
||||
"integrity": "sha512-189nelqtPd8++phaHNwYovKZI0FOzH1vQEE3QhHHkNIGrg5fSs9CbYP3RvfEH5geztnIA9Jwq91wyOIwAW5JIQ==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
@@ -306,10 +306,10 @@
|
||||
}
|
||||
],
|
||||
"engines": {
|
||||
"node": "^14 || ^16 || >=18"
|
||||
"node": ">=18"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"postcss-selector-parser": "^6.0.13"
|
||||
"postcss-selector-parser": "^6.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@dual-bundle/import-meta-resolve": {
|
||||
@@ -990,9 +990,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/autoprefixer": {
|
||||
"version": "10.4.19",
|
||||
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz",
|
||||
"integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==",
|
||||
"version": "10.4.20",
|
||||
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz",
|
||||
"integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "opencollective",
|
||||
@@ -1008,11 +1008,11 @@
|
||||
}
|
||||
],
|
||||
"dependencies": {
|
||||
"browserslist": "^4.23.0",
|
||||
"caniuse-lite": "^1.0.30001599",
|
||||
"browserslist": "^4.23.3",
|
||||
"caniuse-lite": "^1.0.30001646",
|
||||
"fraction.js": "^4.3.7",
|
||||
"normalize-range": "^0.1.2",
|
||||
"picocolors": "^1.0.0",
|
||||
"picocolors": "^1.0.1",
|
||||
"postcss-value-parser": "^4.2.0"
|
||||
},
|
||||
"bin": {
|
||||
@@ -1150,9 +1150,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/browserslist": {
|
||||
"version": "4.23.1",
|
||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz",
|
||||
"integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==",
|
||||
"version": "4.23.3",
|
||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz",
|
||||
"integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "opencollective",
|
||||
@@ -1168,10 +1168,10 @@
|
||||
}
|
||||
],
|
||||
"dependencies": {
|
||||
"caniuse-lite": "^1.0.30001629",
|
||||
"electron-to-chromium": "^1.4.796",
|
||||
"node-releases": "^2.0.14",
|
||||
"update-browserslist-db": "^1.0.16"
|
||||
"caniuse-lite": "^1.0.30001646",
|
||||
"electron-to-chromium": "^1.5.4",
|
||||
"node-releases": "^2.0.18",
|
||||
"update-browserslist-db": "^1.1.0"
|
||||
},
|
||||
"bin": {
|
||||
"browserslist": "cli.js"
|
||||
@@ -1307,9 +1307,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/caniuse-lite": {
|
||||
"version": "1.0.30001636",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001636.tgz",
|
||||
"integrity": "sha512-bMg2vmr8XBsbL6Lr0UHXy/21m84FTxDLWn2FSqMd5PrlbMxwJlQnC2YWYxVgp66PZE+BBNF2jYQUBKCo1FDeZg==",
|
||||
"version": "1.0.30001649",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001649.tgz",
|
||||
"integrity": "sha512-fJegqZZ0ZX8HOWr6rcafGr72+xcgJKI9oWfDW5DrD7ExUtgZC7a7R7ZYmZqplh7XDocFdGeIFn7roAxhOeYrPQ==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "opencollective",
|
||||
@@ -1559,11 +1559,11 @@
|
||||
}
|
||||
},
|
||||
"node_modules/cssnano": {
|
||||
"version": "7.0.4",
|
||||
"resolved": "https://registry.npmjs.org/cssnano/-/cssnano-7.0.4.tgz",
|
||||
"integrity": "sha512-rQgpZra72iFjiheNreXn77q1haS2GEy69zCMbu4cpXCFPMQF+D4Ik5V7ktMzUF/sA7xCIgcqHwGPnCD+0a1vHg==",
|
||||
"version": "7.0.5",
|
||||
"resolved": "https://registry.npmjs.org/cssnano/-/cssnano-7.0.5.tgz",
|
||||
"integrity": "sha512-Aq0vqBLtpTT5Yxj+hLlLfNPFuRQCDIjx5JQAhhaedQKLNDvDGeVziF24PS+S1f0Z5KCxWvw0QVI3VNHNBITxVQ==",
|
||||
"dependencies": {
|
||||
"cssnano-preset-default": "^7.0.4",
|
||||
"cssnano-preset-default": "^7.0.5",
|
||||
"lilconfig": "^3.1.2"
|
||||
},
|
||||
"engines": {
|
||||
@@ -1578,14 +1578,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/cssnano-preset-advanced": {
|
||||
"version": "7.0.4",
|
||||
"resolved": "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-7.0.4.tgz",
|
||||
"integrity": "sha512-Fsh9S5EgQScr4aFahYQ1zEBDMqgyg0q9R58qssXNlwscLnFk19a/tC/ibyVGXy4ygRe+tgHfDh5esDawLFW7ug==",
|
||||
"version": "7.0.5",
|
||||
"resolved": "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-7.0.5.tgz",
|
||||
"integrity": "sha512-m2nPoDaK9lksWD/sd7tuDLTizRsHVfyOAuBlEaZKtLC3nE/mw91l58tlV41kUA5GWQYhNQiKac9YTBlGFLaiSA==",
|
||||
"dependencies": {
|
||||
"autoprefixer": "^10.4.19",
|
||||
"browserslist": "^4.23.1",
|
||||
"cssnano-preset-default": "^7.0.4",
|
||||
"postcss-discard-unused": "^7.0.1",
|
||||
"autoprefixer": "^10.4.20",
|
||||
"browserslist": "^4.23.3",
|
||||
"cssnano-preset-default": "^7.0.5",
|
||||
"postcss-discard-unused": "^7.0.2",
|
||||
"postcss-merge-idents": "^7.0.0",
|
||||
"postcss-reduce-idents": "^7.0.0",
|
||||
"postcss-zindex": "^7.0.0"
|
||||
@@ -1598,40 +1598,40 @@
|
||||
}
|
||||
},
|
||||
"node_modules/cssnano-preset-default": {
|
||||
"version": "7.0.4",
|
||||
"resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-7.0.4.tgz",
|
||||
"integrity": "sha512-jQ6zY9GAomQX7/YNLibMEsRZguqMUGuupXcEk2zZ+p3GUxwCAsobqPYE62VrJ9qZ0l9ltrv2rgjwZPBIFIjYtw==",
|
||||
"version": "7.0.5",
|
||||
"resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-7.0.5.tgz",
|
||||
"integrity": "sha512-Jbzja0xaKwc5JzxPQoc+fotKpYtWEu4wQLMQe29CM0FjjdRjA4omvbGHl2DTGgARKxSTpPssBsok+ixv8uTBqw==",
|
||||
"dependencies": {
|
||||
"browserslist": "^4.23.1",
|
||||
"browserslist": "^4.23.3",
|
||||
"css-declaration-sorter": "^7.2.0",
|
||||
"cssnano-utils": "^5.0.0",
|
||||
"postcss-calc": "^10.0.0",
|
||||
"postcss-colormin": "^7.0.1",
|
||||
"postcss-convert-values": "^7.0.2",
|
||||
"postcss-discard-comments": "^7.0.1",
|
||||
"postcss-discard-duplicates": "^7.0.0",
|
||||
"postcss-calc": "^10.0.1",
|
||||
"postcss-colormin": "^7.0.2",
|
||||
"postcss-convert-values": "^7.0.3",
|
||||
"postcss-discard-comments": "^7.0.2",
|
||||
"postcss-discard-duplicates": "^7.0.1",
|
||||
"postcss-discard-empty": "^7.0.0",
|
||||
"postcss-discard-overridden": "^7.0.0",
|
||||
"postcss-merge-longhand": "^7.0.2",
|
||||
"postcss-merge-rules": "^7.0.2",
|
||||
"postcss-merge-longhand": "^7.0.3",
|
||||
"postcss-merge-rules": "^7.0.3",
|
||||
"postcss-minify-font-values": "^7.0.0",
|
||||
"postcss-minify-gradients": "^7.0.0",
|
||||
"postcss-minify-params": "^7.0.1",
|
||||
"postcss-minify-selectors": "^7.0.2",
|
||||
"postcss-minify-params": "^7.0.2",
|
||||
"postcss-minify-selectors": "^7.0.3",
|
||||
"postcss-normalize-charset": "^7.0.0",
|
||||
"postcss-normalize-display-values": "^7.0.0",
|
||||
"postcss-normalize-positions": "^7.0.0",
|
||||
"postcss-normalize-repeat-style": "^7.0.0",
|
||||
"postcss-normalize-string": "^7.0.0",
|
||||
"postcss-normalize-timing-functions": "^7.0.0",
|
||||
"postcss-normalize-unicode": "^7.0.1",
|
||||
"postcss-normalize-unicode": "^7.0.2",
|
||||
"postcss-normalize-url": "^7.0.0",
|
||||
"postcss-normalize-whitespace": "^7.0.0",
|
||||
"postcss-ordered-values": "^7.0.1",
|
||||
"postcss-reduce-initial": "^7.0.1",
|
||||
"postcss-reduce-initial": "^7.0.2",
|
||||
"postcss-reduce-transforms": "^7.0.0",
|
||||
"postcss-svgo": "^7.0.1",
|
||||
"postcss-unique-selectors": "^7.0.1"
|
||||
"postcss-unique-selectors": "^7.0.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.12.0 || ^20.9.0 || >=22.0"
|
||||
@@ -1682,9 +1682,9 @@
|
||||
"integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g=="
|
||||
},
|
||||
"node_modules/debug": {
|
||||
"version": "4.3.5",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
|
||||
"integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
|
||||
"version": "4.3.6",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz",
|
||||
"integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"ms": "2.1.2"
|
||||
@@ -1869,9 +1869,9 @@
|
||||
"integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="
|
||||
},
|
||||
"node_modules/electron-to-chromium": {
|
||||
"version": "1.4.806",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.806.tgz",
|
||||
"integrity": "sha512-nkoEX2QIB8kwCOtvtgwhXWy2IHVcOLQZu9Qo36uaGB835mdX/h8uLRlosL6QIhLVUnAiicXRW00PwaPZC74Nrg=="
|
||||
"version": "1.5.4",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.4.tgz",
|
||||
"integrity": "sha512-orzA81VqLyIGUEA77YkVA1D+N+nNfl2isJVjjmOyrlxuooZ19ynb+dOlaDTqd/idKRS9lDCSBmtzM+kyCsMnkA=="
|
||||
},
|
||||
"node_modules/emoji-regex": {
|
||||
"version": "8.0.0",
|
||||
@@ -3313,9 +3313,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/hugo-bin": {
|
||||
"version": "0.126.0",
|
||||
"resolved": "https://registry.npmjs.org/hugo-bin/-/hugo-bin-0.126.0.tgz",
|
||||
"integrity": "sha512-tncBaQ1Gku3eVKB7PUiubj1VGXdTVB7OCYgrRqwlxxYMaIte9weg+uvEkZLJZJItNMv2wV2GpfIXblS5mLlvvg==",
|
||||
"version": "0.130.1",
|
||||
"resolved": "https://registry.npmjs.org/hugo-bin/-/hugo-bin-0.130.1.tgz",
|
||||
"integrity": "sha512-0+GwMlYkTdmH2INIWPeoKf+Rx/+RbTCZNPhcdPwm4a+WJeuvGjOLOmK3grAk5vC2u4OwxfOhgD3zRU7wHVYxlw==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
@@ -3362,9 +3362,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/ignore": {
|
||||
"version": "5.3.1",
|
||||
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz",
|
||||
"integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==",
|
||||
"version": "5.3.2",
|
||||
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
|
||||
"integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">= 4"
|
||||
@@ -4277,9 +4277,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/node-releases": {
|
||||
"version": "2.0.14",
|
||||
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
|
||||
"integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw=="
|
||||
"version": "2.0.18",
|
||||
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz",
|
||||
"integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g=="
|
||||
},
|
||||
"node_modules/normalize-package-data": {
|
||||
"version": "2.5.0",
|
||||
@@ -4335,6 +4335,7 @@
|
||||
"resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz",
|
||||
"integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"ansi-styles": "^3.2.1",
|
||||
"chalk": "^2.4.1",
|
||||
@@ -4851,9 +4852,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/postcss": {
|
||||
"version": "8.4.39",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.39.tgz",
|
||||
"integrity": "sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==",
|
||||
"version": "8.4.41",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz",
|
||||
"integrity": "sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "opencollective",
|
||||
@@ -4878,11 +4879,11 @@
|
||||
}
|
||||
},
|
||||
"node_modules/postcss-calc": {
|
||||
"version": "10.0.0",
|
||||
"resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-10.0.0.tgz",
|
||||
"integrity": "sha512-OmjhudoNTP0QleZCwl1i6NeBwN+5MZbY5ersLZz69mjJiDVv/p57RjRuKDkHeDWr4T+S97wQfsqRTNoDHB2e3g==",
|
||||
"version": "10.0.1",
|
||||
"resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-10.0.1.tgz",
|
||||
"integrity": "sha512-pp1Z3FxtxA+xHAoWXcOXgnBN1WPu4ZiJ5LWGjKyf9MMreagAsaTUtnqFK1y1sHhyJddAkYTPu6XSuLgb3oYCjw==",
|
||||
"dependencies": {
|
||||
"postcss-selector-parser": "^6.0.16",
|
||||
"postcss-selector-parser": "^6.1.1",
|
||||
"postcss-value-parser": "^4.2.0"
|
||||
},
|
||||
"engines": {
|
||||
@@ -4934,11 +4935,11 @@
|
||||
}
|
||||
},
|
||||
"node_modules/postcss-colormin": {
|
||||
"version": "7.0.1",
|
||||
"resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-7.0.1.tgz",
|
||||
"integrity": "sha512-uszdT0dULt3FQs47G5UHCduYK+FnkLYlpu1HpWu061eGsKZ7setoG7kA+WC9NQLsOJf69D5TxGHgnAdRgylnFQ==",
|
||||
"version": "7.0.2",
|
||||
"resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-7.0.2.tgz",
|
||||
"integrity": "sha512-YntRXNngcvEvDbEjTdRWGU606eZvB5prmHG4BF0yLmVpamXbpsRJzevyy6MZVyuecgzI2AWAlvFi8DAeCqwpvA==",
|
||||
"dependencies": {
|
||||
"browserslist": "^4.23.1",
|
||||
"browserslist": "^4.23.3",
|
||||
"caniuse-api": "^3.0.0",
|
||||
"colord": "^2.9.3",
|
||||
"postcss-value-parser": "^4.2.0"
|
||||
@@ -4951,11 +4952,11 @@
|
||||
}
|
||||
},
|
||||
"node_modules/postcss-convert-values": {
|
||||
"version": "7.0.2",
|
||||
"resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-7.0.2.tgz",
|
||||
"integrity": "sha512-MuZIF6HJ4izko07Q0TgW6pClalI4al6wHRNPkFzqQdwAwG7hPn0lA58VZdxyb2Vl5AYjJ1piO+jgF9EnTjQwQQ==",
|
||||
"version": "7.0.3",
|
||||
"resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-7.0.3.tgz",
|
||||
"integrity": "sha512-yJhocjCs2SQer0uZ9lXTMOwDowbxvhwFVrZeS6NPEij/XXthl73ggUmfwVvJM+Vaj5gtCKJV1jiUu4IhAUkX/Q==",
|
||||
"dependencies": {
|
||||
"browserslist": "^4.23.1",
|
||||
"browserslist": "^4.23.3",
|
||||
"postcss-value-parser": "^4.2.0"
|
||||
},
|
||||
"engines": {
|
||||
@@ -4966,11 +4967,11 @@
|
||||
}
|
||||
},
|
||||
"node_modules/postcss-discard-comments": {
|
||||
"version": "7.0.1",
|
||||
"resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-7.0.1.tgz",
|
||||
"integrity": "sha512-GVrQxUOhmle1W6jX2SvNLt4kmN+JYhV7mzI6BMnkAWR9DtVvg8e67rrV0NfdWhn7x1zxvzdWkMBPdBDCls+uwQ==",
|
||||
"version": "7.0.2",
|
||||
"resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-7.0.2.tgz",
|
||||
"integrity": "sha512-/Hje9Ls1IYcB9duELO/AyDUJI6aQVY3h5Rj1ziXgaLYCTi1iVBLnjg/TS0D6NszR/kDG6I86OwLmAYe+bvJjiQ==",
|
||||
"dependencies": {
|
||||
"postcss-selector-parser": "^6.1.0"
|
||||
"postcss-selector-parser": "^6.1.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.12.0 || ^20.9.0 || >=22.0"
|
||||
@@ -4980,9 +4981,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/postcss-discard-duplicates": {
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-7.0.0.tgz",
|
||||
"integrity": "sha512-bAnSuBop5LpAIUmmOSsuvtKAAKREB6BBIYStWUTGq8oG5q9fClDMMuY8i4UPI/cEcDx2TN+7PMnXYIId20UVDw==",
|
||||
"version": "7.0.1",
|
||||
"resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-7.0.1.tgz",
|
||||
"integrity": "sha512-oZA+v8Jkpu1ct/xbbrntHRsfLGuzoP+cpt0nJe5ED2FQF8n8bJtn7Bo28jSmBYwqgqnqkuSXJfSUEE7if4nClQ==",
|
||||
"engines": {
|
||||
"node": "^18.12.0 || ^20.9.0 || >=22.0"
|
||||
},
|
||||
@@ -5013,11 +5014,11 @@
|
||||
}
|
||||
},
|
||||
"node_modules/postcss-discard-unused": {
|
||||
"version": "7.0.1",
|
||||
"resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-7.0.1.tgz",
|
||||
"integrity": "sha512-3myaiuHge0HaY+OMA42/xlXnVixhPQPmfxrpiLO3FBipgW/4A3UnWnAtlfo49tuxsCx4ZrS6+h/sa/68WNGWPg==",
|
||||
"version": "7.0.2",
|
||||
"resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-7.0.2.tgz",
|
||||
"integrity": "sha512-X4tWgMGYNUkFRzd5DPvx6RnvVz2ATdcthB0xpPCa1yS7X2v9pB6WvR33DSFWJmWT/LLDRgkIA/UZhe5dHLNNUw==",
|
||||
"dependencies": {
|
||||
"postcss-selector-parser": "^6.1.0"
|
||||
"postcss-selector-parser": "^6.1.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.12.0 || ^20.9.0 || >=22.0"
|
||||
@@ -5083,12 +5084,12 @@
|
||||
}
|
||||
},
|
||||
"node_modules/postcss-merge-longhand": {
|
||||
"version": "7.0.2",
|
||||
"resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-7.0.2.tgz",
|
||||
"integrity": "sha512-06vrW6ZWi9qeP7KMS9fsa9QW56+tIMW55KYqF7X3Ccn+NI2pIgPV6gFfvXTMQ05H90Y5DvnCDPZ2IuHa30PMUg==",
|
||||
"version": "7.0.3",
|
||||
"resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-7.0.3.tgz",
|
||||
"integrity": "sha512-8waYomFxshdv6M9Em3QRM9MettRLDRcH2JQi2l0Z1KlYD/vhal3gbkeSES0NuACXOlZBB0V/B0AseHZaklzWOA==",
|
||||
"dependencies": {
|
||||
"postcss-value-parser": "^4.2.0",
|
||||
"stylehacks": "^7.0.2"
|
||||
"stylehacks": "^7.0.3"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.12.0 || ^20.9.0 || >=22.0"
|
||||
@@ -5098,14 +5099,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/postcss-merge-rules": {
|
||||
"version": "7.0.2",
|
||||
"resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-7.0.2.tgz",
|
||||
"integrity": "sha512-VAR47UNvRsdrTHLe7TV1CeEtF9SJYR5ukIB9U4GZyZOptgtsS20xSxy+k5wMrI3udST6O1XuIn7cjQkg7sDAAw==",
|
||||
"version": "7.0.3",
|
||||
"resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-7.0.3.tgz",
|
||||
"integrity": "sha512-2eSas2p3voPxNfdI5sQrvIkMaeUHpVc3EezgVs18hz/wRTQAC9U99tp9j3W5Jx9/L3qHkEDvizEx/LdnmumIvQ==",
|
||||
"dependencies": {
|
||||
"browserslist": "^4.23.1",
|
||||
"browserslist": "^4.23.3",
|
||||
"caniuse-api": "^3.0.0",
|
||||
"cssnano-utils": "^5.0.0",
|
||||
"postcss-selector-parser": "^6.1.0"
|
||||
"postcss-selector-parser": "^6.1.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.12.0 || ^20.9.0 || >=22.0"
|
||||
@@ -5145,11 +5146,11 @@
|
||||
}
|
||||
},
|
||||
"node_modules/postcss-minify-params": {
|
||||
"version": "7.0.1",
|
||||
"resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-7.0.1.tgz",
|
||||
"integrity": "sha512-e+Xt8xErSRPgSRFxHeBCSxMiO8B8xng7lh8E0A5ep1VfwYhY8FXhu4Q3APMjgx9YDDbSp53IBGENrzygbUvgUQ==",
|
||||
"version": "7.0.2",
|
||||
"resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-7.0.2.tgz",
|
||||
"integrity": "sha512-nyqVLu4MFl9df32zTsdcLqCFfE/z2+f8GE1KHPxWOAmegSo6lpV2GNy5XQvrzwbLmiU7d+fYay4cwto1oNdAaQ==",
|
||||
"dependencies": {
|
||||
"browserslist": "^4.23.1",
|
||||
"browserslist": "^4.23.3",
|
||||
"cssnano-utils": "^5.0.0",
|
||||
"postcss-value-parser": "^4.2.0"
|
||||
},
|
||||
@@ -5161,12 +5162,12 @@
|
||||
}
|
||||
},
|
||||
"node_modules/postcss-minify-selectors": {
|
||||
"version": "7.0.2",
|
||||
"resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-7.0.2.tgz",
|
||||
"integrity": "sha512-dCzm04wqW1uqLmDZ41XYNBJfjgps3ZugDpogAmJXoCb5oCiTzIX4oPXXKxDpTvWOnKxQKR4EbV4ZawJBLcdXXA==",
|
||||
"version": "7.0.3",
|
||||
"resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-7.0.3.tgz",
|
||||
"integrity": "sha512-SxTgUQSgBk6wEqzQZKEv1xQYIp9UBju6no9q+npohzSdhuSICQdkqmD1UMKkZWItS3olJSJMDDEY9WOJ5oGJew==",
|
||||
"dependencies": {
|
||||
"cssesc": "^3.0.0",
|
||||
"postcss-selector-parser": "^6.1.0"
|
||||
"postcss-selector-parser": "^6.1.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.12.0 || ^20.9.0 || >=22.0"
|
||||
@@ -5257,11 +5258,11 @@
|
||||
}
|
||||
},
|
||||
"node_modules/postcss-normalize-unicode": {
|
||||
"version": "7.0.1",
|
||||
"resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-7.0.1.tgz",
|
||||
"integrity": "sha512-PTPGdY9xAkTw+8ZZ71DUePb7M/Vtgkbbq+EoI33EuyQEzbKemEQMhe5QSr0VP5UfZlreANDPxSfcdSprENcbsg==",
|
||||
"version": "7.0.2",
|
||||
"resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-7.0.2.tgz",
|
||||
"integrity": "sha512-ztisabK5C/+ZWBdYC+Y9JCkp3M9qBv/XFvDtSw0d/XwfT3UaKeW/YTm/MD/QrPNxuecia46vkfEhewjwcYFjkg==",
|
||||
"dependencies": {
|
||||
"browserslist": "^4.23.1",
|
||||
"browserslist": "^4.23.3",
|
||||
"postcss-value-parser": "^4.2.0"
|
||||
},
|
||||
"engines": {
|
||||
@@ -5329,11 +5330,11 @@
|
||||
}
|
||||
},
|
||||
"node_modules/postcss-reduce-initial": {
|
||||
"version": "7.0.1",
|
||||
"resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-7.0.1.tgz",
|
||||
"integrity": "sha512-0JDUSV4bGB5FGM5g8MkS+rvqKukJZ7OTHw/lcKn7xPNqeaqJyQbUO8/dJpvyTpaVwPsd3Uc33+CfNzdVowp2WA==",
|
||||
"version": "7.0.2",
|
||||
"resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-7.0.2.tgz",
|
||||
"integrity": "sha512-pOnu9zqQww7dEKf62Nuju6JgsW2V0KRNBHxeKohU+JkHd/GAH5uvoObqFLqkeB2n20mr6yrlWDvo5UBU5GnkfA==",
|
||||
"dependencies": {
|
||||
"browserslist": "^4.23.1",
|
||||
"browserslist": "^4.23.3",
|
||||
"caniuse-api": "^3.0.0"
|
||||
},
|
||||
"engines": {
|
||||
@@ -5378,9 +5379,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/postcss-resolve-nested-selector": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz",
|
||||
"integrity": "sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==",
|
||||
"version": "0.1.6",
|
||||
"resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz",
|
||||
"integrity": "sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/postcss-safe-parser": {
|
||||
@@ -5436,9 +5437,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/postcss-selector-parser": {
|
||||
"version": "6.1.0",
|
||||
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz",
|
||||
"integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==",
|
||||
"version": "6.1.2",
|
||||
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
|
||||
"integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
|
||||
"dependencies": {
|
||||
"cssesc": "^3.0.0",
|
||||
"util-deprecate": "^1.0.2"
|
||||
@@ -5463,11 +5464,11 @@
|
||||
}
|
||||
},
|
||||
"node_modules/postcss-unique-selectors": {
|
||||
"version": "7.0.1",
|
||||
"resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-7.0.1.tgz",
|
||||
"integrity": "sha512-MH7QE/eKUftTB5ta40xcHLl7hkZjgDFydpfTK+QWXeHxghVt3VoPqYL5/G+zYZPPIs+8GuqFXSTgxBSoB1RZtQ==",
|
||||
"version": "7.0.2",
|
||||
"resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-7.0.2.tgz",
|
||||
"integrity": "sha512-CjSam+7Vf8cflJQsHrMS0P2hmy9u0+n/P001kb5eAszLmhjMqrt/i5AqQuNFihhViwDvEAezqTmXqaYXL2ugMw==",
|
||||
"dependencies": {
|
||||
"postcss-selector-parser": "^6.1.0"
|
||||
"postcss-selector-parser": "^6.1.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.12.0 || ^20.9.0 || >=22.0"
|
||||
@@ -6540,12 +6541,12 @@
|
||||
}
|
||||
},
|
||||
"node_modules/stylehacks": {
|
||||
"version": "7.0.2",
|
||||
"resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-7.0.2.tgz",
|
||||
"integrity": "sha512-HdkWZS9b4gbgYTdMg4gJLmm7biAUug1qTqXjS+u8X+/pUd+9Px1E+520GnOW3rST9MNsVOVpsJG+mPHNosxjOQ==",
|
||||
"version": "7.0.3",
|
||||
"resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-7.0.3.tgz",
|
||||
"integrity": "sha512-4DqtecvI/Nd+2BCvW9YEF6lhBN5UM50IJ1R3rnEAhBwbCKf4VehRf+uqvnVArnBayjYD/WtT3g0G/HSRxWfTRg==",
|
||||
"dependencies": {
|
||||
"browserslist": "^4.23.1",
|
||||
"postcss-selector-parser": "^6.1.0"
|
||||
"browserslist": "^4.23.3",
|
||||
"postcss-selector-parser": "^6.1.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.12.0 || ^20.9.0 || >=22.0"
|
||||
@@ -6555,9 +6556,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/stylelint": {
|
||||
"version": "16.7.0",
|
||||
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.7.0.tgz",
|
||||
"integrity": "sha512-Q1ATiXlz+wYr37a7TGsfvqYn2nSR3T/isw3IWlZQzFzCNoACHuGBb6xBplZXz56/uDRJHIygxjh7jbV/8isewA==",
|
||||
"version": "16.9.0",
|
||||
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.9.0.tgz",
|
||||
"integrity": "sha512-31Nm3WjxGOBGpQqF43o3wO9L5AC36TPIe6030Lnm13H3vDMTcS21DrLh69bMX+DBilKqMMVLian4iG6ybBoNRQ==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
@@ -6570,17 +6571,17 @@
|
||||
}
|
||||
],
|
||||
"dependencies": {
|
||||
"@csstools/css-parser-algorithms": "^2.7.1",
|
||||
"@csstools/css-tokenizer": "^2.4.1",
|
||||
"@csstools/media-query-list-parser": "^2.1.13",
|
||||
"@csstools/selector-specificity": "^3.1.1",
|
||||
"@csstools/css-parser-algorithms": "^3.0.1",
|
||||
"@csstools/css-tokenizer": "^3.0.1",
|
||||
"@csstools/media-query-list-parser": "^3.0.1",
|
||||
"@csstools/selector-specificity": "^4.0.0",
|
||||
"@dual-bundle/import-meta-resolve": "^4.1.0",
|
||||
"balanced-match": "^2.0.0",
|
||||
"colord": "^2.9.3",
|
||||
"cosmiconfig": "^9.0.0",
|
||||
"css-functions-list": "^3.2.2",
|
||||
"css-tree": "^2.3.1",
|
||||
"debug": "^4.3.5",
|
||||
"debug": "^4.3.6",
|
||||
"fast-glob": "^3.3.2",
|
||||
"fastest-levenshtein": "^1.0.16",
|
||||
"file-entry-cache": "^9.0.0",
|
||||
@@ -6588,24 +6589,24 @@
|
||||
"globby": "^11.1.0",
|
||||
"globjoin": "^0.1.4",
|
||||
"html-tags": "^3.3.1",
|
||||
"ignore": "^5.3.1",
|
||||
"ignore": "^5.3.2",
|
||||
"imurmurhash": "^0.1.4",
|
||||
"is-plain-object": "^5.0.0",
|
||||
"known-css-properties": "^0.34.0",
|
||||
"mathml-tag-names": "^2.1.3",
|
||||
"meow": "^13.2.0",
|
||||
"micromatch": "^4.0.7",
|
||||
"micromatch": "^4.0.8",
|
||||
"normalize-path": "^3.0.0",
|
||||
"picocolors": "^1.0.1",
|
||||
"postcss": "^8.4.39",
|
||||
"postcss-resolve-nested-selector": "^0.1.1",
|
||||
"postcss": "^8.4.41",
|
||||
"postcss-resolve-nested-selector": "^0.1.6",
|
||||
"postcss-safe-parser": "^7.0.0",
|
||||
"postcss-selector-parser": "^6.1.0",
|
||||
"postcss-selector-parser": "^6.1.2",
|
||||
"postcss-value-parser": "^4.2.0",
|
||||
"resolve-from": "^5.0.0",
|
||||
"string-width": "^4.2.3",
|
||||
"strip-ansi": "^7.1.0",
|
||||
"supports-hyperlinks": "^3.0.0",
|
||||
"supports-hyperlinks": "^3.1.0",
|
||||
"svg-tags": "^1.0.0",
|
||||
"table": "^6.8.2",
|
||||
"write-file-atomic": "^5.0.1"
|
||||
@@ -6787,9 +6788,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/stylelint/node_modules/micromatch": {
|
||||
"version": "4.0.7",
|
||||
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz",
|
||||
"integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==",
|
||||
"version": "4.0.8",
|
||||
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
|
||||
"integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"braces": "^3.0.3",
|
||||
@@ -6845,9 +6846,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/supports-hyperlinks": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz",
|
||||
"integrity": "sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==",
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.1.0.tgz",
|
||||
"integrity": "sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"has-flag": "^4.0.0",
|
||||
@@ -6855,6 +6856,9 @@
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.18"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/supports-preserve-symlinks-flag": {
|
||||
@@ -7153,9 +7157,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/update-browserslist-db": {
|
||||
"version": "1.0.16",
|
||||
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz",
|
||||
"integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==",
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz",
|
||||
"integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "opencollective",
|
||||
|
12
package.json
12
package.json
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@gethinode/hinode",
|
||||
"version": "0.24.20",
|
||||
"version": "0.26.6",
|
||||
"description": "Hinode is a clean documentation and blog theme for Hugo, an open-source static site generator",
|
||||
"keywords": [
|
||||
"hugo",
|
||||
@@ -68,10 +68,10 @@
|
||||
"homepage": "https://gethinode.com",
|
||||
"dependencies": {
|
||||
"@fullhuman/postcss-purgecss": "^6.0.0",
|
||||
"autoprefixer": "^10.4.19",
|
||||
"cssnano": "^7.0.4",
|
||||
"cssnano-preset-advanced": "^7.0.4",
|
||||
"hugo-bin": "0.126.0",
|
||||
"autoprefixer": "^10.4.20",
|
||||
"cssnano": "^7.0.5",
|
||||
"cssnano-preset-advanced": "^7.0.5",
|
||||
"hugo-bin": "0.130.1",
|
||||
"purgecss-whitelister": "^2.4.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
@@ -88,7 +88,7 @@
|
||||
"replace-in-files-cli": "^3.0.0",
|
||||
"rimraf": "^6.0.1",
|
||||
"shx": "^0.3.4",
|
||||
"stylelint": "^16.7.0",
|
||||
"stylelint": "^16.9.0",
|
||||
"stylelint-config-standard-scss": "^13.1.0"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user