mirror of
https://github.com/gethinode/hinode.git
synced 2025-10-07 10:04:22 +00:00
Compare commits
134 Commits
v0.12.0-al
...
v0.13.1
Author | SHA1 | Date | |
---|---|---|---|
![]() |
65e9e57c9e | ||
![]() |
ffa4473d25 | ||
![]() |
6c5fe6f208 | ||
![]() |
60efecf946 | ||
![]() |
70fdf7c4f0 | ||
![]() |
ee4bb45368 | ||
![]() |
a08695d97e | ||
![]() |
1abeabcacd | ||
![]() |
16b2c8b058 | ||
![]() |
f8eab705fb | ||
![]() |
13b8421893 | ||
![]() |
6324a90d77 | ||
![]() |
faccca732b | ||
![]() |
04736fd8f1 | ||
![]() |
9c4378e5af | ||
![]() |
0574627010 | ||
![]() |
9e668775db | ||
![]() |
cefd152430 | ||
![]() |
48d2002d1c | ||
![]() |
259f0f321c | ||
![]() |
d24cb8ccb3 | ||
![]() |
96226e2d8a | ||
![]() |
27857b7fd5 | ||
![]() |
9a67f7bd4f | ||
![]() |
e15cd08bea | ||
![]() |
dd817bc5ce | ||
![]() |
4b4c9d1711 | ||
![]() |
38e68ac757 | ||
![]() |
c14d3868bb | ||
![]() |
067c244770 | ||
![]() |
d76d275ddb | ||
![]() |
1803759b6b | ||
![]() |
2833cfc15a | ||
![]() |
0a174def75 | ||
![]() |
7a7d3a93f9 | ||
![]() |
c1afe32344 | ||
![]() |
749dab16ca | ||
![]() |
264012eefb | ||
![]() |
fda4efa72b | ||
![]() |
6a0bdf0f61 | ||
![]() |
1a09879bea | ||
![]() |
81cc8fe02f | ||
![]() |
ef3d79f875 | ||
![]() |
c66bb79ac5 | ||
![]() |
c5c5695541 | ||
![]() |
a3343c29dc | ||
![]() |
50a697c1fb | ||
![]() |
6cf7a410f4 | ||
![]() |
bdade82dea | ||
![]() |
38aac9507e | ||
![]() |
0eec1da639 | ||
![]() |
1e8bc5f11d | ||
![]() |
56f467e02c | ||
![]() |
83049db4bc | ||
![]() |
78599c8f76 | ||
![]() |
fc6e916fca | ||
![]() |
a0febc31ee | ||
![]() |
800c82dba5 | ||
![]() |
8b59f3b6f7 | ||
![]() |
9795e04a9b | ||
![]() |
6381cb3519 | ||
![]() |
01927f22b6 | ||
![]() |
da75210771 | ||
![]() |
b47bf99744 | ||
![]() |
2a4ba34c51 | ||
![]() |
fc07cec664 | ||
![]() |
538a1d2de3 | ||
![]() |
6dda374b73 | ||
![]() |
e53a333ebf | ||
![]() |
5ed8c28bee | ||
![]() |
fa47b7d93e | ||
![]() |
f1693c8cf0 | ||
![]() |
740fd91038 | ||
![]() |
9a0dba5ee4 | ||
![]() |
e4b7b252b3 | ||
![]() |
569562cf24 | ||
![]() |
60b53f2fa9 | ||
![]() |
3e5f23cf89 | ||
![]() |
c7b16cf2f4 | ||
![]() |
191d6e3d94 | ||
![]() |
9dd7bf64e1 | ||
![]() |
580675f8b1 | ||
![]() |
b2b43d550b | ||
![]() |
f79317b317 | ||
![]() |
3d7bcc4356 | ||
![]() |
a7256ff270 | ||
![]() |
8ffc6dbd59 | ||
![]() |
5bb0cf07e6 | ||
![]() |
37e9e70c55 | ||
![]() |
b4ddc8c58d | ||
![]() |
a7c4be508d | ||
![]() |
0988e07106 | ||
![]() |
7dcbfe8373 | ||
![]() |
fdebbccfa1 | ||
![]() |
7d1cd93e87 | ||
![]() |
3a056829c5 | ||
![]() |
0ee0febc15 | ||
![]() |
ac081a3084 | ||
![]() |
9d07b5da5a | ||
![]() |
67f1708691 | ||
![]() |
c5e5ec0f21 | ||
![]() |
d461333738 | ||
![]() |
32c422a2a8 | ||
![]() |
b66660b557 | ||
![]() |
be95c3cd68 | ||
![]() |
74aa32e595 | ||
![]() |
4c305b38a5 | ||
![]() |
63c609c1d3 | ||
![]() |
d7424d26eb | ||
![]() |
1f66740c19 | ||
![]() |
cb032b4fb8 | ||
![]() |
3889382e19 | ||
![]() |
86addfd6dd | ||
![]() |
9110fb5ab4 | ||
![]() |
fad4cdbfd2 | ||
![]() |
c403d422d9 | ||
![]() |
0ecfa72864 | ||
![]() |
62af498414 | ||
![]() |
ee37599ded | ||
![]() |
9a4c7c7776 | ||
![]() |
c05eeb015c | ||
![]() |
d9f898a2e1 | ||
![]() |
36f31a57ae | ||
![]() |
17b3bbaf80 | ||
![]() |
26bc4ebb00 | ||
![]() |
d13d80af2f | ||
![]() |
64abaf8d1e | ||
![]() |
ffc9c47b45 | ||
![]() |
092630b030 | ||
![]() |
2ec60a8b71 | ||
![]() |
9af871fee7 | ||
![]() |
883ab3f7a0 | ||
![]() |
d6a49ccb90 | ||
![]() |
fdc58d52e9 |
@@ -1,3 +1,4 @@
|
||||
assets/js/analytics.js
|
||||
assets/js/color.js
|
||||
assets/js/flexsearch.js
|
||||
assets/js/vendor
|
||||
|
@@ -116,7 +116,7 @@ Hinode is inspired by the following themes:
|
||||
|
||||
## Donate
|
||||
|
||||
<a href="https://www.buymeacoffee.com/markdumay" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/lato-orange.png" alt="Buy Me A Coffee" style="height: 51px !important;width: 217px !important;"></a>
|
||||
<a href="https://www.buymeacoffee.com/markdumay" target="_blank" rel="noopener noreferrer"><img src="https://cdn.buymeacoffee.com/buttons/lato-orange.png" alt="Buy Me A Coffee" style="height: 51px !important;width: 217px !important;"></a>
|
||||
|
||||
## License
|
||||
|
||||
|
69
assets/js/analytics.js
Normal file
69
assets/js/analytics.js
Normal file
@@ -0,0 +1,69 @@
|
||||
// Adapted from https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/google_analytics.html
|
||||
|
||||
{{- define "__ga_js_set_doNotTrack" -}}{{/* This is also used in the async version. */}}
|
||||
{{- $pc := .Site.Config.Privacy.GoogleAnalytics -}}
|
||||
{{- if not $pc.RespectDoNotTrack -}}
|
||||
var doNotTrack = false;
|
||||
{{- else -}}
|
||||
var dnt = (navigator.doNotTrack || window.doNotTrack || navigator.msDoNotTrack);
|
||||
var doNotTrack = (dnt == "1" || dnt == "yes");
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $pc := .Site.Config.Privacy.GoogleAnalytics -}}
|
||||
{{- if (and (not .Site.IsServer) (not $pc.Disable)) -}}
|
||||
{{ with .Site.GoogleAnalytics -}}
|
||||
{{ if hasPrefix . "G-"}}
|
||||
{{ template "__ga_js_set_doNotTrack" $ }}
|
||||
|
||||
if (!doNotTrack) {
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
|
||||
function gtag() {
|
||||
dataLayer.push(arguments);
|
||||
}
|
||||
|
||||
gtag('js', new Date());
|
||||
gtag('config', '{{ . }}', { 'anonymize_ip': {{- $pc.AnonymizeIP -}} });
|
||||
}
|
||||
|
||||
{{ else if hasPrefix . "UA-" }}
|
||||
{{ template "__ga_js_set_doNotTrack" $ }}
|
||||
|
||||
if (!doNotTrack) {
|
||||
(function(i, s, o, g, r, a, m) {
|
||||
i['GoogleAnalyticsObject'] = r;
|
||||
i[r] = i[r] || function() {
|
||||
(i[r].q = i[r].q || []).push(arguments)
|
||||
}, i[r].l = 1 * new Date();
|
||||
a = s.createElement(o),
|
||||
m = s.getElementsByTagName(o)[0];
|
||||
a.async = 1;
|
||||
a.src = g;
|
||||
m.parentNode.insertBefore(a, m)
|
||||
})(window, document, 'script', 'https://www.google-analytics.com/analytics.js', 'ga');
|
||||
|
||||
{{- if $pc.UseSessionStorage }}
|
||||
if (window.sessionStorage) {
|
||||
var GA_SESSION_STORAGE_KEY = 'ga:clientId';
|
||||
ga('create', '{{ . }}', {
|
||||
'storage': 'none',
|
||||
'clientId': sessionStorage.getItem(GA_SESSION_STORAGE_KEY)
|
||||
});
|
||||
|
||||
ga(function(tracker) {
|
||||
sessionStorage.setItem(GA_SESSION_STORAGE_KEY, tracker.get('clientId'));
|
||||
});
|
||||
}
|
||||
{{ else }}
|
||||
ga('create', '{{ . }}', 'auto');
|
||||
{{ end -}}
|
||||
{{ if $pc.AnonymizeIP }}
|
||||
ga('set', 'anonymizeIp', true);
|
||||
{{ end }}
|
||||
|
||||
ga('send', 'pageview');
|
||||
}
|
||||
{{- end }}
|
||||
{{ end -}}
|
||||
{{- end }}
|
@@ -1,89 +1,30 @@
|
||||
/*
|
||||
Source:
|
||||
- https://raw.githubusercontent.com/h-enk/doks/master/assets/js/index.js
|
||||
*/
|
||||
{{- $search := default true site.Params.navigation.search -}}
|
||||
{{- if $search -}}
|
||||
var search = document.getElementById('search');
|
||||
var suggestions = document.getElementById('suggestions');
|
||||
var index = new FlexSearch.Document({
|
||||
tokenize: "forward",
|
||||
cache: 100,
|
||||
document: {
|
||||
id: "id",
|
||||
tag: "tag",
|
||||
store: ["href", "title", "description"],
|
||||
index: ["title", "description", "content"]
|
||||
}
|
||||
});
|
||||
|
||||
var suggestions = document.getElementById('suggestions');
|
||||
var search = document.getElementById('search');
|
||||
|
||||
if (search !== null) {
|
||||
document.addEventListener('keydown', inputFocus);
|
||||
}
|
||||
|
||||
function inputFocus(e) {
|
||||
if (e.ctrlKey && e.key === '/' ) {
|
||||
e.preventDefault();
|
||||
search.focus();
|
||||
}
|
||||
if (e.key === 'Escape' ) {
|
||||
search.blur();
|
||||
suggestions.classList.add('d-none');
|
||||
}
|
||||
}
|
||||
|
||||
document.addEventListener('click', function(event) {
|
||||
|
||||
var isClickInsideElement = suggestions.contains(event.target);
|
||||
|
||||
if (!isClickInsideElement) {
|
||||
suggestions.classList.add('d-none');
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
/*
|
||||
Source:
|
||||
- https://dev.to/shubhamprakash/trap-focus-using-javascript-6a3
|
||||
*/
|
||||
|
||||
document.addEventListener('keydown',suggestionFocus);
|
||||
|
||||
function suggestionFocus(e) {
|
||||
const suggestionsHidden = suggestions.classList.contains('d-none');
|
||||
if (suggestionsHidden) return;
|
||||
|
||||
const focusableSuggestions= [...suggestions.querySelectorAll('a')];
|
||||
if (focusableSuggestions.length === 0) return;
|
||||
|
||||
const index = focusableSuggestions.indexOf(document.activeElement);
|
||||
|
||||
if (e.key === "ArrowUp") {
|
||||
e.preventDefault();
|
||||
const nextIndex = index > 0 ? index - 1 : 0;
|
||||
focusableSuggestions[nextIndex].focus();
|
||||
}
|
||||
else if (e.key === "ArrowDown") {
|
||||
e.preventDefault();
|
||||
const nextIndex= index + 1 < focusableSuggestions.length ? index + 1 : index;
|
||||
focusableSuggestions[nextIndex].focus();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Source:
|
||||
- https://github.com/nextapps-de/flexsearch#index-documents-field-search
|
||||
- https://raw.githack.com/nextapps-de/flexsearch/master/demo/autocomplete.html
|
||||
*/
|
||||
|
||||
(function(){
|
||||
|
||||
var index = new FlexSearch.Document({
|
||||
tokenize: "forward",
|
||||
cache: 100,
|
||||
document: {
|
||||
id: "id",
|
||||
tag: "tag",
|
||||
store: ["href", "title", "description"],
|
||||
index: ["title", "description", "content"]
|
||||
}
|
||||
});
|
||||
|
||||
/*
|
||||
Source:
|
||||
- https://github.com/nextapps-de/flexsearch#index-documents-field-search
|
||||
- https://raw.githack.com/nextapps-de/flexsearch/master/demo/autocomplete.html
|
||||
*/
|
||||
function initIndex() {
|
||||
// https://discourse.gohugo.io/t/range-length-or-last-element/3803/2
|
||||
// Note: uses .Site.AllPages as .Site.RegularPages only returns content for the current language
|
||||
// Note: uses .Site.AllPages as .Site.RegularPages only returns content for the current language;
|
||||
// pages without a title (such as browserconfig.xml) are excluded
|
||||
{{ $list := where (where site.AllPages "Kind" "in" "page") "Title" "!=" "" }}
|
||||
{{ $len := (len $list) -}}
|
||||
|
||||
|
||||
index.add(
|
||||
{{ range $index, $element := $list -}}
|
||||
{
|
||||
@@ -103,59 +44,121 @@ Source:
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
;
|
||||
|
||||
search.addEventListener('input', show_results, true);
|
||||
|
||||
function show_results(){
|
||||
const maxResult = 5;
|
||||
var searchQuery = this.value;
|
||||
// filter the results for the currently tagged language
|
||||
const lang = document.documentElement.lang;
|
||||
var results = index.search(searchQuery, { index: ['title', 'description', 'content'], limit: maxResult, tag: lang, enrich: true });
|
||||
|
||||
// flatten results since index.search() returns results for each indexed field
|
||||
const flatResults = new Map(); // keyed by href to dedupe results
|
||||
for (const result of results.flatMap(r => r.result)) {
|
||||
if (flatResults.has(result.doc.href)) continue;
|
||||
flatResults.set(result.doc.href, result.doc);
|
||||
}
|
||||
|
||||
suggestions.innerHTML = "";
|
||||
suggestions.classList.remove('d-none');
|
||||
|
||||
// inform user that no results were found
|
||||
if (flatResults.size === 0 && searchQuery) {
|
||||
const noResultsMessage = document.createElement('div')
|
||||
noResultsMessage.innerHTML = `{{ T "ui_no_results" }} "<strong>${searchQuery}</strong>"`
|
||||
noResultsMessage.classList.add("suggestion__no-results");
|
||||
suggestions.appendChild(noResultsMessage);
|
||||
return;
|
||||
}
|
||||
|
||||
// construct a list of suggestions
|
||||
for(const [href, doc] of flatResults) {
|
||||
const entry = document.createElement('div');
|
||||
suggestions.appendChild(entry);
|
||||
|
||||
const a = document.createElement('a');
|
||||
a.href = href;
|
||||
entry.appendChild(a);
|
||||
|
||||
const title = document.createElement('span');
|
||||
title.classList.add('text-start');
|
||||
title.textContent = doc.title;
|
||||
title.classList.add("suggestion__title");
|
||||
a.appendChild(title);
|
||||
|
||||
const description = document.createElement('span');
|
||||
description.textContent = doc.description;
|
||||
description.classList.add("suggestion__description");
|
||||
a.appendChild(description);
|
||||
|
||||
suggestions.appendChild(entry);
|
||||
|
||||
if(suggestions.childElementCount == maxResult) break;
|
||||
}
|
||||
|
||||
search.addEventListener('input', showResults, true);
|
||||
}
|
||||
|
||||
function hideSuggestions(e) {
|
||||
var isClickInsideElement = suggestions.contains(e.target);
|
||||
|
||||
if (!isClickInsideElement) {
|
||||
suggestions.classList.add('d-none');
|
||||
}
|
||||
}());
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
Source:
|
||||
- https://raw.githubusercontent.com/h-enk/doks/master/assets/js/index.js
|
||||
*/
|
||||
function inputFocus(e) {
|
||||
if (e.ctrlKey && e.key === '/' ) {
|
||||
e.preventDefault();
|
||||
search.focus();
|
||||
}
|
||||
if (e.key === 'Escape' ) {
|
||||
search.blur();
|
||||
suggestions.classList.add('d-none');
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Source:
|
||||
- https://dev.to/shubhamprakash/trap-focus-using-javascript-6a3
|
||||
*/
|
||||
function suggestionFocus(e) {
|
||||
const suggestionsHidden = suggestions.classList.contains('d-none');
|
||||
if (suggestionsHidden) return;
|
||||
|
||||
const focusableSuggestions= [...suggestions.querySelectorAll('a')];
|
||||
if (focusableSuggestions.length === 0) return;
|
||||
|
||||
const index = focusableSuggestions.indexOf(document.activeElement);
|
||||
|
||||
if (e.key === "ArrowUp") {
|
||||
e.preventDefault();
|
||||
const nextIndex = index > 0 ? index - 1 : 0;
|
||||
focusableSuggestions[nextIndex].focus();
|
||||
}
|
||||
else if (e.key === "ArrowDown") {
|
||||
e.preventDefault();
|
||||
const nextIndex= index + 1 < focusableSuggestions.length ? index + 1 : index;
|
||||
focusableSuggestions[nextIndex].focus();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Source:
|
||||
- https://github.com/nextapps-de/flexsearch#index-documents-field-search
|
||||
- https://raw.githack.com/nextapps-de/flexsearch/master/demo/autocomplete.html
|
||||
*/
|
||||
function showResults() {
|
||||
const maxResult = 5;
|
||||
var searchQuery = this.value;
|
||||
// filter the results for the currently tagged language
|
||||
const lang = document.documentElement.lang;
|
||||
var results = index.search(searchQuery, { index: ['title', 'description', 'content'], limit: maxResult, tag: lang, enrich: true });
|
||||
|
||||
// flatten results since index.search() returns results for each indexed field
|
||||
const flatResults = new Map(); // keyed by href to dedupe results
|
||||
for (const result of results.flatMap(r => r.result)) {
|
||||
if (flatResults.has(result.doc.href)) continue;
|
||||
flatResults.set(result.doc.href, result.doc);
|
||||
}
|
||||
|
||||
suggestions.innerHTML = "";
|
||||
suggestions.classList.remove('d-none');
|
||||
|
||||
// inform user that no results were found
|
||||
if (flatResults.size === 0 && searchQuery) {
|
||||
const msg = suggestions.dataset.noResults;
|
||||
const noResultsMessage = document.createElement('div')
|
||||
noResultsMessage.innerHTML = `${msg} "<strong>${searchQuery}</strong>"`
|
||||
noResultsMessage.classList.add("suggestion__no-results");
|
||||
suggestions.appendChild(noResultsMessage);
|
||||
return;
|
||||
}
|
||||
|
||||
// construct a list of suggestions
|
||||
for (const [href, doc] of flatResults) {
|
||||
const entry = document.createElement('div');
|
||||
suggestions.appendChild(entry);
|
||||
|
||||
const a = document.createElement('a');
|
||||
a.href = href;
|
||||
entry.appendChild(a);
|
||||
|
||||
const title = document.createElement('span');
|
||||
title.classList.add('text-start');
|
||||
title.textContent = doc.title;
|
||||
title.classList.add("suggestion__title");
|
||||
a.appendChild(title);
|
||||
|
||||
const description = document.createElement('span');
|
||||
description.textContent = doc.description;
|
||||
description.classList.add("suggestion__description");
|
||||
a.appendChild(description);
|
||||
|
||||
suggestions.appendChild(entry);
|
||||
|
||||
if (suggestions.childElementCount == maxResult) break;
|
||||
}
|
||||
}
|
||||
|
||||
if (search !== null && suggestions !== null) {
|
||||
document.addEventListener('keydown', inputFocus);
|
||||
document.addEventListener('keydown', suggestionFocus);
|
||||
document.addEventListener('click', hideSuggestions);
|
||||
initIndex();
|
||||
}
|
||||
|
||||
{{- end -}}
|
@@ -2,23 +2,25 @@ const navbar = document.querySelector('.navbar')
|
||||
const toggler = document.getElementById('main-nav-toggler')
|
||||
const modeSelectors = document.querySelectorAll('.switch-mode-collapsed')
|
||||
|
||||
// set the navbar background color to opaque when scrolling past a breakpoint
|
||||
window.onscroll = () => {
|
||||
if (window.scrollY > 75) {
|
||||
navbar.classList.add('nav-active')
|
||||
} else {
|
||||
navbar.classList.remove('nav-active')
|
||||
}
|
||||
}
|
||||
|
||||
// set the navbar background color to opaque when expanded
|
||||
toggler.onclick = () => {
|
||||
navbar.classList.toggle('navbar-expanded')
|
||||
}
|
||||
|
||||
// invoke the navbar toggler for each mode switcher to collapse the main menu afterwards
|
||||
for (let i = 0; i < modeSelectors.length; ++i) {
|
||||
modeSelectors[i].onclick = () => {
|
||||
toggler.click()
|
||||
if (navbar !== null && toggler !== null) {
|
||||
// set the navbar background color to opaque when scrolling past a breakpoint
|
||||
window.onscroll = () => {
|
||||
if (window.scrollY > 75) {
|
||||
navbar.classList.add('nav-active')
|
||||
} else {
|
||||
navbar.classList.remove('nav-active')
|
||||
}
|
||||
}
|
||||
|
||||
// set the navbar background color to opaque when expanded
|
||||
toggler.onclick = () => {
|
||||
navbar.classList.toggle('navbar-expanded')
|
||||
}
|
||||
|
||||
// invoke the navbar toggler for each mode switcher to collapse the main menu afterwards
|
||||
for (let i = 0; i < modeSelectors.length; ++i) {
|
||||
modeSelectors[i].onclick = () => {
|
||||
toggler.click()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,8 +1,8 @@
|
||||
//
|
||||
// Table of contents sidebar
|
||||
// Table of contents sidebar & drop-down panel
|
||||
//
|
||||
// scss-docs-start toc
|
||||
.toc {
|
||||
.toc-sidebar {
|
||||
grid-area: toc;
|
||||
right: 0;
|
||||
z-index: 2;
|
||||
@@ -15,6 +15,7 @@
|
||||
|
||||
.toc nav {
|
||||
font-size: 0.875rem;
|
||||
margin-bottom: -0.875rem;
|
||||
}
|
||||
|
||||
.toc nav ul {
|
||||
@@ -33,6 +34,10 @@
|
||||
|
||||
.toc nav a {
|
||||
color: inherit;
|
||||
|
||||
&:hover {
|
||||
color: var(--bs-primary);
|
||||
}
|
||||
}
|
||||
|
||||
.toc nav a:not(:hover) {
|
||||
@@ -42,3 +47,21 @@
|
||||
.toc nav a code {
|
||||
font: inherit;
|
||||
}
|
||||
|
||||
.toc-button {
|
||||
--bs-btn-hover-color: var(--bs-primary);
|
||||
--bs-btn-hover-bg: var(--bs-body-bg);
|
||||
--bs-btn-hover-border-color: var(--bs-primary);
|
||||
--bs-btn-active-color: var(--bs-primary);
|
||||
--bs-btn-active-bg: var(--bs-body-bg);
|
||||
--bs-btn-active-border-color: var(--bs-primary);
|
||||
|
||||
&.active,
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: var(--bs-primary);
|
||||
border-color: var(--bs-primary);
|
||||
box-shadow: 0 0 0 4px var(--bs-primary-border-subtle);
|
||||
outline: none;
|
||||
}
|
||||
}
|
||||
|
@@ -6,6 +6,7 @@ enableGitInfo = true
|
||||
# toml-docs-end main
|
||||
|
||||
# additional settings
|
||||
googleAnalytics = "G-T85PPZ36GN"
|
||||
baseURL = "https://demo.gethinode.com/"
|
||||
canonifyURLs = false
|
||||
enableEmoji = true
|
||||
@@ -17,7 +18,7 @@ enableInlineShortcodes = true
|
||||
ignoreErrors = ["error-remote-getjson"]
|
||||
|
||||
# toml-docs-start timeout
|
||||
timeout = "60s"
|
||||
timeout = "180s"
|
||||
# toml-docs-end timeout
|
||||
|
||||
# toml-docs-start language
|
||||
|
@@ -8,10 +8,10 @@
|
||||
[en.params.head]
|
||||
tagline = "A Hugo Theme"
|
||||
[en.params.feature]
|
||||
link = "/en/about"
|
||||
link = "about"
|
||||
caption = "About"
|
||||
[en.params.footer]
|
||||
license = "Licensed under Creative Commons (<a href='https://creativecommons.org/licenses/by-nc-sa/4.0/' class='link-secondary' target='_blank'>CC BY-NC-SA 4.0</a>)."
|
||||
license = "Licensed under Creative Commons (<a href='https://creativecommons.org/licenses/by-nc-sa/4.0/' class='link-secondary' target='_blank' rel='noopener noreferrer'>CC BY-NC-SA 4.0</a>)."
|
||||
socialTitle = "Follow me"
|
||||
socialCaption = "I work on everything coding and tweet developer memes"
|
||||
# toml-docs-end lang-param
|
||||
@@ -23,9 +23,9 @@
|
||||
[nl.params.head]
|
||||
tagline = "Een Hugo Thema"
|
||||
[nl.params.feature]
|
||||
link = "/nl/over-mij"
|
||||
link = "over-mij"
|
||||
caption = "Over mij"
|
||||
[nl.params.footer]
|
||||
license = "Gelicenseerd onder Creative Commons (<a href='https://creativecommons.org/licenses/by-nc-sa/4.0/' class='link-secondary' target='_blank'>CC BY-NC-SA 4.0</a>)."
|
||||
license = "Gelicenseerd onder Creative Commons (<a href='https://creativecommons.org/licenses/by-nc-sa/4.0/' class='link-secondary' target='_blank' rel='noopener noreferrer'>CC BY-NC-SA 4.0</a>)."
|
||||
socialTitle = "Volg mij"
|
||||
socialCaption = "Ik doe aan programmeren en tweet memes"
|
@@ -15,13 +15,13 @@
|
||||
|
||||
[[main]]
|
||||
name = "Sample project"
|
||||
url = "/en/projects/sample-project/"
|
||||
url = "/projects/sample-project/"
|
||||
parent = "Projects"
|
||||
weight = 1
|
||||
|
||||
[[main]]
|
||||
name = "Another project"
|
||||
url = "/en/projects/another-project/"
|
||||
url = "/projects/another-project/"
|
||||
parent = "Projects"
|
||||
weight = 2
|
||||
|
||||
@@ -61,13 +61,13 @@
|
||||
|
||||
[[sample]]
|
||||
name = "Sample project"
|
||||
url = "/en/projects/sample-project/"
|
||||
url = "/projects/sample-project/"
|
||||
parent = "Projects"
|
||||
weight = 1
|
||||
|
||||
[[sample]]
|
||||
name = "Another project"
|
||||
url = "/en/projects/another-project/"
|
||||
url = "/projects/another-project/"
|
||||
parent = "Projects"
|
||||
weight = 2
|
||||
# toml-docs-end sample-navigation
|
@@ -15,13 +15,13 @@
|
||||
|
||||
[[main]]
|
||||
name = "Voorbeeldproject"
|
||||
url = "/nl/projecten/voorbeeldproject/"
|
||||
url = "/projecten/voorbeeldproject/"
|
||||
parent = "Projecten"
|
||||
weight = 1
|
||||
|
||||
[[main]]
|
||||
name = "Ander project"
|
||||
url = "/nl/projecten/ander-project/"
|
||||
url = "/projecten/ander-project/"
|
||||
parent = "Projecten"
|
||||
weight = 2
|
||||
|
||||
@@ -61,13 +61,13 @@
|
||||
|
||||
[[sample]]
|
||||
name = "Voorbeeldproject"
|
||||
url = "/nl/projecten/voorbeeldproject/"
|
||||
url = "/projecten/voorbeeldproject/"
|
||||
parent = "Projecten"
|
||||
weight = 1
|
||||
|
||||
[[sample]]
|
||||
name = "Ander project"
|
||||
url = "/nl/projecten/ander-project/"
|
||||
url = "/projecten/ander-project/"
|
||||
parent = "Projecten"
|
||||
weight = 2
|
||||
# toml-docs-end sample-navigation
|
@@ -34,12 +34,13 @@
|
||||
sidebar = true
|
||||
# toml-docs-end navigation
|
||||
|
||||
# toml-docs-start list
|
||||
[list]
|
||||
[blog]
|
||||
# toml-docs-start sections
|
||||
[sections]
|
||||
[sections.blog]
|
||||
title = "Blog"
|
||||
sort = "date"
|
||||
reverse = false
|
||||
reverse = true
|
||||
nested = true
|
||||
cols = 3
|
||||
color = ""
|
||||
padding = "0"
|
||||
@@ -49,12 +50,14 @@
|
||||
style = "border-0 card-zoom"
|
||||
homepage = 3
|
||||
separator = true
|
||||
[projects]
|
||||
[sections.projects]
|
||||
title = "Projects"
|
||||
sort = "title"
|
||||
reverse = false
|
||||
nested = true
|
||||
cols = 1
|
||||
color = "body-tertiary"
|
||||
background = "body-tertiary"
|
||||
color = "body"
|
||||
padding = "3"
|
||||
header = "none"
|
||||
footer = "tags"
|
||||
@@ -62,7 +65,7 @@
|
||||
style = "border-1 card-emphasize"
|
||||
homepage = 3
|
||||
separator = false
|
||||
# toml-docs-end list
|
||||
# toml-docs-end sections
|
||||
|
||||
[favicon]
|
||||
logo = "img/favicon.png"
|
||||
|
@@ -8,14 +8,15 @@ for = '/**'
|
||||
Content-Security-Policy = """\
|
||||
default-src 'self'; \
|
||||
script-src 'self' \
|
||||
https://utteranc.es/client.js; \
|
||||
https://utteranc.es/client.js https://*.google-analytics.com https://*.googletagmanager.com; \
|
||||
style-src 'self' https://utteranc.es https://fonts.googleapis.com https://www.youtube.com; \
|
||||
object-src 'none'; \
|
||||
base-uri 'self'; \
|
||||
connect-src 'self'; \
|
||||
connect-src 'self'
|
||||
https://*.google-analytics.com https://*.analytics.google.com https://*.googletagmanager.com; \
|
||||
font-src 'self' https://fonts.gstatic.com; \
|
||||
frame-src 'self' https://utteranc.es https://www.youtube-nocookie.com https://www.youtube.com; \
|
||||
img-src 'self' https://i.vimeocdn.com https://i.ytimg.com; \
|
||||
img-src 'self' https://i.vimeocdn.com https://i.ytimg.com https://*.google-analytics.com https://*.googletagmanager.com; \
|
||||
manifest-src 'self'; \
|
||||
media-src 'self' \
|
||||
"""
|
||||
|
@@ -1,4 +1,5 @@
|
||||
---
|
||||
author: Mark Dumay
|
||||
title: Blog
|
||||
nested: true
|
||||
---
|
||||
|
@@ -257,8 +257,6 @@ As an example, the following shortcode displays a tooltip for a colored hyperlin
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* tooltip color="primary" title="Tooltip" href="#!" */>}}
|
||||
Tooltip demonstration
|
||||
{{</* /tooltip */>}}
|
||||
{{</* tooltip color="primary" title="Tooltip" href="#!" */>}}Tooltip{{</* /tooltip */>}} demonstration
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
@@ -1,6 +1,7 @@
|
||||
---
|
||||
author: Mark Dumay
|
||||
title: Bootstrap elementen
|
||||
slug: bootstrap-elementen
|
||||
date: 2023-02-17
|
||||
description: Gebruik shortcodes om eenvoudig Bootstrap elementen toe te voegen.
|
||||
tags: ["bootstrap", "shortcode"]
|
||||
@@ -257,8 +258,6 @@ De volgende shortcode toont een uitleg voor een gekleurde link.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* tooltip color="primary" title="Tooltip" href="#!" */>}}
|
||||
Tooltip demonstration
|
||||
{{</* /tooltip */>}}
|
||||
{{</* tooltip color="primary" title="Tooltip" href="#!" */>}}Tooltip{{</* /tooltip */>}} demonstratie
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
@@ -1,6 +1,7 @@
|
||||
---
|
||||
author: Mark Dumay
|
||||
title: Eerste artikel
|
||||
slug: eerste-artikel
|
||||
date: 2022-10-01
|
||||
description: Dit is mijn eerste artikel.
|
||||
tags: ["blog"]
|
||||
|
@@ -1,6 +1,7 @@
|
||||
---
|
||||
author: Mark Dumay
|
||||
title: Vierde artikel
|
||||
slug: vierde-artikel
|
||||
date: 2023-01-01
|
||||
description: Dit is mijn vierde artikel.
|
||||
tags: ["blog"]
|
||||
|
@@ -1,6 +1,7 @@
|
||||
---
|
||||
author: Mark Dumay
|
||||
title: Tweede artikel
|
||||
slug: tweede-artikel
|
||||
date: 2022-11-01
|
||||
description: Dit is mijn tweede artikel.
|
||||
tags: ["blog"]
|
||||
|
@@ -1,6 +1,7 @@
|
||||
---
|
||||
author: Mark Dumay
|
||||
title: Derde artikel
|
||||
slug: derde-artikel
|
||||
date: 2022-12-01
|
||||
description: Dit is mijn derde artikel.
|
||||
tags: ["blog"]
|
||||
|
12
i18n/en.yaml
12
i18n/en.yaml
@@ -27,8 +27,16 @@
|
||||
translation: "Next Post"
|
||||
- id: recentProjects
|
||||
translation: "Projects"
|
||||
- id: moreFeatures
|
||||
translation: "More Features"
|
||||
- id: moreGuides
|
||||
translation: "More Guides"
|
||||
- id: moreOpensource
|
||||
translation: "More Features"
|
||||
- id: moreProjects
|
||||
translation: "More Projects"
|
||||
- id: moreUsers
|
||||
translation: "More Users"
|
||||
- id: read
|
||||
translation: "read"
|
||||
- id: minutesShort
|
||||
@@ -56,7 +64,7 @@
|
||||
- id: toggleSidebar
|
||||
translation: "Toggle sidebar navigation"
|
||||
- id: colorMode
|
||||
translation: "Color mode"
|
||||
translation: "Toggle theme"
|
||||
- id: colorLight
|
||||
translation: "Light"
|
||||
- id: colorDark
|
||||
@@ -65,6 +73,8 @@
|
||||
translation: "Auto"
|
||||
- id: toggleMainNav
|
||||
translation: "Toggle main navigation"
|
||||
- id: demo
|
||||
translation: "Demo"
|
||||
|
||||
# 404 page
|
||||
- id: pageNotFound
|
||||
|
@@ -56,7 +56,7 @@
|
||||
- id: toggleSidebar
|
||||
translation: "Toon of verberg navigatie"
|
||||
- id: colorMode
|
||||
translation: "Modus"
|
||||
translation: "Pas modus aan"
|
||||
- id: colorLight
|
||||
translation: "Licht"
|
||||
- id: colorDark
|
||||
|
@@ -6,7 +6,7 @@
|
||||
<p class="display-1 mt-3 fw-bold">404</p>
|
||||
<p class="fs-3">{{ T "pageNotFoundTitle" }}</p>
|
||||
</span>
|
||||
<p>{{ T "pageNotFound" }} <a href="{{ "/" | relURL }}">{{ T "pageNotFoundHome" }}</a>.</p>
|
||||
<p>{{ T "pageNotFound" }} <a href="{{ "/" | relLangURL }}">{{ T "pageNotFoundHome" }}</a>.</p>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
@@ -10,7 +10,7 @@
|
||||
|
||||
<body>
|
||||
{{- if site.Params.main.enableDarkMode -}}
|
||||
{{- partial "footer/scripts.html" (dict "filename" "js/critical.bundle.js" "match" "js/critical/**.js" "page" .) -}}
|
||||
{{- partial "footer/scripts.html" (dict "filename" "js/critical.bundle.js" "match" "js/critical/**.js" "header" true "page" .) -}}
|
||||
{{- end -}}
|
||||
<div class="d-flex flex-column min-vh-100{{ if and .IsHome .Site.Params.home.style }} {{ .Site.Params.home.style }}{{ end }}">
|
||||
<div class="{{ if .Site.Params.navigation.fixed }}mb-4{{ end }}">
|
||||
@@ -33,19 +33,23 @@
|
||||
<div class="d-flex flex-column flex-fill">
|
||||
{{ block "main" . }}{{ end -}}
|
||||
</div>
|
||||
<div class="">
|
||||
{{- partial "footer/social.html" . -}}
|
||||
{{- partial "footer/footer.html" . -}}
|
||||
</div>
|
||||
{{ if not .Site.Params.main.footerBelowFold }}
|
||||
<div class="">
|
||||
{{- partial "footer/social.html" . -}}
|
||||
{{- partial "footer/footer.html" . -}}
|
||||
</div>
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
{{ else -}}
|
||||
<div class="d-flex flex-column flex-fill {{ if .Site.Params.navigation.fixed }}mt-5{{ end }}">
|
||||
{{ block "main" . }}{{ end -}}
|
||||
</div>
|
||||
<div class="">
|
||||
{{- partial "footer/social.html" . -}}
|
||||
{{- partial "footer/footer.html" . -}}
|
||||
</div>
|
||||
{{ if not .Site.Params.main.footerBelowFold }}
|
||||
<div class="">
|
||||
{{- partial "footer/social.html" . -}}
|
||||
{{- partial "footer/footer.html" . -}}
|
||||
</div>
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
</div>
|
||||
|
||||
@@ -53,10 +57,17 @@
|
||||
<div class="">
|
||||
{{ block "main" . }}{{ end -}}
|
||||
</div>
|
||||
{{- partial "footer/social.html" . -}}
|
||||
{{- partial "footer/footer.html" . -}}
|
||||
{{ end -}}
|
||||
<div class="">
|
||||
{{- partial "footer/social.html" . -}}
|
||||
{{- partial "footer/footer.html" . -}}
|
||||
</div>
|
||||
{{ else if .Site.Params.main.footerBelowFold }}
|
||||
<div class="">
|
||||
{{- partial "footer/social.html" . -}}
|
||||
{{- partial "footer/footer.html" . -}}
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
{{- partialCached "footer/scripts.html" (dict "page" .) }}
|
||||
{{- partialCached "footer/scripts.html" (dict "header" false "page" .) }}
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -1,9 +1,12 @@
|
||||
{{- define "main" -}}
|
||||
{{- partial "assets/section-list.html" (dict
|
||||
"page" .
|
||||
"section" .Section
|
||||
"section" .Type
|
||||
"home" false
|
||||
"nested" .Params.Nested
|
||||
"title" .Title
|
||||
"description" .Description
|
||||
"content" .Content
|
||||
"paginate" true)
|
||||
-}}
|
||||
{{- end -}}
|
@@ -1,11 +1,12 @@
|
||||
{{- define "partials/header.html" -}}
|
||||
{{ if site.Params.navigation.breadcrumb }}{{ partial "breadcrumb.html" . }}{{ end -}}
|
||||
{{ if site.Params.navigation.breadcrumb }}{{ partial "assets/breadcrumb.html" . }}{{ end -}}
|
||||
{{ if in (slice "docs" "minimal") .Layout }}
|
||||
{{ with .Title }}<p class="display-4 mt-3">{{ . }}</p>{{ end }}
|
||||
{{ with .Title }}<p class="display-4 mt-5">{{ . }}</p>{{ end }}
|
||||
<p class="lead mb-5">{{ .Description }}</p>
|
||||
{{ else }}
|
||||
{{ $lastmodstr := (partial "utilities/date.html" (dict "date" .Lastmod "format" "long")) -}}
|
||||
{{ $datestr := (partial "utilities/date.html" (dict "date" .Date "format" "long")) -}}
|
||||
{{ with .Title }}<p class="display-4 mt-3">{{ . }}</p>{{ end }}
|
||||
{{ with .Title }}<p class="display-4 mt-5">{{ . }}</p>{{ end }}
|
||||
<small class="text-body-secondary text-uppercase">
|
||||
{{ $datestr | i18n "postedOnDate" -}}
|
||||
{{ if ne $datestr $lastmodstr -}} ({{ $lastmodstr | i18n "lastModified" }}){{ end }} •
|
||||
@@ -16,42 +17,43 @@
|
||||
<div class="mt-3">
|
||||
<div class="d-none-dark">
|
||||
{{ range (.GetTerms "tags") -}}
|
||||
<a class="btn btn-light btn-sm" href="{{ (path.Join .Page.RelPermalink) | relURL }}" role="button">{{ .LinkTitle }}</a>
|
||||
<a class="btn btn-light btn-sm" href="{{ (path.Join .Page.RelPermalink) | relLangURL }}" role="button">{{ .LinkTitle }}</a>
|
||||
|
||||
{{ end -}}
|
||||
</div>
|
||||
|
||||
<div class="d-none-light">
|
||||
{{ range (.GetTerms "tags") -}}
|
||||
<a class="btn btn-outline-secondary btn-sm" href="{{ (path.Join .Page.RelPermalink) | relURL }}" role="button">{{ .LinkTitle }}</a>
|
||||
<a class="btn btn-outline-secondary btn-sm" href="{{ (path.Join .Page.RelPermalink) | relLangURL }}" role="button">{{ .LinkTitle }}</a>
|
||||
|
||||
{{ end -}}
|
||||
</div>
|
||||
</div>
|
||||
<p class="lead mb-5 mt-3">{{ .Description }}</p>
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
|
||||
{{ define "partials/body.html" -}}
|
||||
{{ if eq .Layout "docs"}}
|
||||
<p class="lead mb-5">{{ .Description }}</p>
|
||||
{{ .Content }}
|
||||
{{ else }}
|
||||
<p class="lead mb-5 mt-3">{{ .Description }}</p>
|
||||
{{- if and .Site.Params.navigation.toc .Params.includeToc | default true -}}
|
||||
<div class="d-md-none pb-5">{{ partial "assets/toc-dropdown.html" . }}</div>
|
||||
{{- end -}}
|
||||
|
||||
{{ if not (in (slice "docs" "minimal") .Layout) }}
|
||||
{{ if .Params.thumbnail -}}
|
||||
{{- $credits := "" -}}
|
||||
{{- if .Params.photoCredits }}{{ if .Params.PhotoSource }}{{ $credits = printf "%s %s %s %s" (T "photoBy") .Params.photoCredits (T "photoOn") .Params.PhotoSource }}{{ end }}{{ end -}}
|
||||
{{- partial "image.html" (dict "url" .Params.thumbnail "ratio" "21x9" "outerClass" "img-wrap" "innerClass" "rounded" "title" .Params.title "caption" $credits) -}}
|
||||
{{- partial "assets/image.html" (dict "url" .Params.thumbnail "ratio" "21x9" "outerClass" "img-wrap" "innerClass" "rounded" "title" .Params.title "caption" $credits) -}}
|
||||
{{ end -}}
|
||||
{{ .Content }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ .Content }}
|
||||
{{ end -}}
|
||||
|
||||
{{ define "partials/footer.html" -}}
|
||||
{{ if eq .Layout "docs"}}
|
||||
{{ if eq .Layout "docs" }}
|
||||
<div class="mt-5 small">
|
||||
{{ partial "utilities/git.html" . }}
|
||||
</div>
|
||||
{{ else }}
|
||||
{{ else if ne .Layout "minimal" }}
|
||||
<div class="row row-cols-2 mt-5 mb-3">
|
||||
<div class="col">
|
||||
{{ with .NextInSection -}}
|
||||
@@ -82,7 +84,7 @@
|
||||
{{- $version := .Scratch.Get "version" -}}
|
||||
{{- $sidebar := .Site.Params.navigation.sidebar | default true -}}
|
||||
{{ if and $menu $sidebar -}}
|
||||
<div class="offcanvas offcanvas-start" tabindex="-1" id="offcanvass-sidebar" aria-labelledby="offcanvas-label">
|
||||
<div class="offcanvas offcanvas-start" tabindex="-1" id="offcanvass-sidebar" aria-inledby="offcanvas-label">
|
||||
<div class="offcanvas-header">
|
||||
<h5 class="offcanvas-title" id="offcanvas-label">{{ strings.FirstUpper .Section }}</h5>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
|
||||
@@ -92,7 +94,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container-xxl">
|
||||
<div class="container-xxl px-3 px-xxl-0">
|
||||
<div class="row row-cols-md-2 row-cols-lg-3">
|
||||
<div class="col col-md-3 col-lg-2 d-none pt-5 d-md-block sidebar-overflow sticky-top">
|
||||
{{ partial "assets/sidebar" (dict "page" . "menu" $menu "version" $version) }}
|
||||
@@ -110,7 +112,7 @@
|
||||
</div>
|
||||
</div>
|
||||
{{ else }}
|
||||
<div class="container-xxl">
|
||||
<div class="container-xxl px-3 px-xxl-0">
|
||||
<div class="row row-cols-1 row-cols-sm-3">
|
||||
<div class="col col-md-2 d-none d-md-block"></div>
|
||||
<div class="col col-sm-12 col-md-8">
|
||||
|
@@ -1,10 +0,0 @@
|
||||
<!-- Hugo considers all first-level directories to be a root section. As such, as "/en/docs/" is considered to be a
|
||||
branch bundle, despite it not having an "_index.md" page. Being a branch bundle, Hugo uses a list template to
|
||||
render the "/en/docs/" page. This overwrites the alias defined in "/en/docs/<ver>/getting-started/introduction/".
|
||||
|
||||
This empty list template is deliberately added to the "/layouts/docs/" directory to prevent Hugo from generating
|
||||
a list page for "/en/docs/" (all other nested sections). This enables the alias defined in
|
||||
"/en/docs/<version>/getting-started/introduction/".
|
||||
|
||||
See https://gohugo.io/content-management/sections/ for more details.
|
||||
-->
|
@@ -6,11 +6,13 @@
|
||||
{{- $page := . -}}
|
||||
|
||||
{{- range $index, $section := site.Params.home.sections -}}
|
||||
{{- $pages := where site.RegularPages "Type" "in" $section -}}
|
||||
{{- $sectionURL := "" -}}
|
||||
{{- range $page := first 1 $pages -}}
|
||||
{{- $sectionURL = $page.Parent.RelPermalink -}}
|
||||
{{- end -}}
|
||||
{{- $sectionPage := site.GetPage "section" $section -}}
|
||||
{{- $sectionURL := $sectionPage.RelPermalink -}}
|
||||
{{- $title := $sectionPage.Title -}}
|
||||
{{- $thumbnail := $sectionPage.Params.Thumbnail -}}
|
||||
{{- $icon := $sectionPage.Params.Icon -}}
|
||||
{{- $description := $sectionPage.Description -}}
|
||||
{{- $content := $sectionPage.Content -}}
|
||||
|
||||
{{- $moreTitle := (T (printf "more%s" (strings.FirstUpper $section))) -}}
|
||||
|
||||
@@ -18,12 +20,12 @@
|
||||
"page" $page
|
||||
"section" $section
|
||||
"home" true
|
||||
"nested" true
|
||||
"thumbnail" $thumbnail
|
||||
"icon" $icon
|
||||
"content" $content
|
||||
"moreTitle" $moreTitle
|
||||
"sectionURL" $sectionURL)
|
||||
-}}
|
||||
{{- end -}}
|
||||
|
||||
{{- range $index, $section := site.Params.home.snippets -}}
|
||||
{{- partial "assets/snippet-list.html" (dict "page" $page "section" $section) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
132
layouts/partials/assets/button.html
Normal file
132
layouts/partials/assets/button.html
Normal file
@@ -0,0 +1,132 @@
|
||||
<!--
|
||||
Displays a button. The shortcode supports the following arguments:
|
||||
"title" Required title of the button.
|
||||
"href" Optional address for the button or hyperlink.
|
||||
"id" Optional id of the button, to be used in the DOM.
|
||||
"state" Optional state of the button, either "enabled" (default), "disabled", "active", or "inactive".
|
||||
"size" Optional size of the button, either "sm", "md" (default), or "lg".
|
||||
"color" Optional theme color of the element, either "primary" (default), "secondary", "success",
|
||||
"danger", "warning", "info", "light", "dark", "white", or "black".
|
||||
"outline" Optional flag indicating the button should be outlined, either "false" (default) or "true".
|
||||
"badge" Optional positioned badge to display on top of the button.
|
||||
"aria-label" Optional assistive label for the badge.
|
||||
"tooltip" Optional text to display in a tooltip. Cannot be used together with collapse. Ignored for active/
|
||||
inactive buttons.
|
||||
"collapse" Optional panel to collapse. Cannot be used together with tooltip. Ignored for active/inactive buttons.
|
||||
"type" Optional type of the element, either "link" or "button" (default).
|
||||
"placement" Optional position of the tooltip: "top" (default), "bottom", "left", or "right".
|
||||
"class" Optional class attribute of the button element, e.g. “toc-button”.
|
||||
"icon" Optional Font Awesome icon class attribute, e.g. "fas sort".
|
||||
"order" Optional order of the icon, either "first" or "last" (default).
|
||||
"justify" Optional justification of the button title and icon, either "start", "end", "center" (default),
|
||||
"between", "around", or "evenly".
|
||||
-->
|
||||
|
||||
{{- $title := trim .title " \r\n" -}}
|
||||
{{- if not $title -}}
|
||||
{{- errorf "partial [assets/button.html] - Missing element title" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $id := .id }}
|
||||
|
||||
{{- $state := "enabled" -}}
|
||||
{{- with .state }}{{ $state = . }}{{ end -}}
|
||||
{{- $supportedStates := slice "enabled" "disabled" "active" "inactive" -}}
|
||||
{{- if not (in $supportedStates $state) -}}
|
||||
{{- errorf "partial [assets/button.html] - Invalid value for param 'state': %s" $state -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $size := "md" -}}
|
||||
{{- with .size }}{{ $size = . }}{{ end -}}
|
||||
{{- $supportedSizes := slice "sm" "md" "lg" -}}
|
||||
{{- if not (in $supportedSizes $size) -}}
|
||||
{{- errorf "partial [assets/button.html] - Invalid value for param 'size': %s" $size -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $color := "primary" -}}
|
||||
{{- with .color }}{{ $color = . }}{{ end -}}
|
||||
{{- $supportedColors := slice "primary" "secondary" "success" "danger" "warning" "info" "light" "dark" "white" "black" -}}
|
||||
{{- if not (in $supportedColors $color) -}}
|
||||
{{- errorf "partial [assets/button.html] - Invalid value for param 'color': %s" $color -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $outline := false -}}
|
||||
{{- with .outline }}{{ $outline = . }}{{ end -}}
|
||||
|
||||
{{- $badge := "" -}}
|
||||
{{- with .badge }}{{ $badge = . }}{{ end -}}
|
||||
|
||||
{{- $label := "" -}}
|
||||
{{- with .label }}{{ $label = . }}{{ end -}}
|
||||
|
||||
{{- $tooltip := "" -}}
|
||||
{{- if not (strings.HasSuffix $state "active") -}}
|
||||
{{- with .tooltip }}{{ $tooltip = . }}{{ end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $href := .href -}}
|
||||
|
||||
{{- $collapse := "" -}}
|
||||
{{- if not (strings.HasSuffix $state "active") -}}
|
||||
{{- with .collapse }}{{ $collapse = . }}{{ $href = printf "#%s" . }}{{ end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if $tooltip -}}
|
||||
{{- if $collapse -}}
|
||||
{{- errorf "partial [assets/button.html] - Cannot use tooltip and collapse at the same time" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $type := "button" -}}
|
||||
{{- with .type }}{{ $type = . }}{{ end -}}
|
||||
{{- $supportedTypes := slice "button" "link" -}}
|
||||
{{- if not (in $supportedTypes $type) -}}
|
||||
{{- errorf "partial [assets/button.html] - Invalid value for param 'type': %s" $type -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $placement := "top" -}}
|
||||
{{- with .placement }}{{ $placement = . }}{{ end -}}
|
||||
{{- $supportedPlacements := slice "top" "bottom" "left" "right" -}}
|
||||
{{- if not (in $supportedPlacements $placement) -}}
|
||||
{{- errorf "partial [assets/button.html] - Invalid value for param 'placement': %s" $placement -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $class := .class }}
|
||||
{{- $icon := .icon }}
|
||||
|
||||
{{- $order := "last" -}}
|
||||
{{- with .order }}{{ $order = . }}{{ end -}}
|
||||
{{- $supportedOrders := slice "first" "last" -}}
|
||||
{{- if not (in $supportedOrders $order) -}}
|
||||
{{- errorf "partial [assets/button.html] - Invalid value for param 'order': %s" $order -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $justify := "center" -}}
|
||||
{{- with .justify }}{{ $justify = . }}{{ end -}}
|
||||
{{- $supportedJustify := slice "start" "end" "center" "between" "around" "evenly" -}}
|
||||
{{- if not (in $supportedJustify $justify) -}}
|
||||
{{- errorf "partial [assets/button.html] - Invalid value for param 'justify': %s" $justify -}}
|
||||
{{- end -}}
|
||||
|
||||
<a aria-label="{{ $title }}" {{ if ne $state "disabled" }}{{ with $href }}href="{{ . }}"{{ end }}{{ end -}}
|
||||
{{- with $id }}id="{{ . }}"{{ end -}}
|
||||
{{- if eq $type "button" }}class="btn btn-{{ if $outline }}outline-{{ end }}{{ $color }} {{ if ne $size "md"}}btn-{{ $size }}{{ end }} position-relative {{ if in (slice "disabled" "active") $state }}{{ $state }}{{ end }} {{ $class }}" role="button" {{ if eq $state "disabled" }}aria-disabled="true"{{ end -}}
|
||||
{{- else }}class="link-{{ $color }} position-relative {{ $class }}"{{ end -}}
|
||||
{{- with $tooltip }}data-bs-toggle="tooltip" data-bs-title="{{ . }}" data-bs-placement="{{ $placement }}"{{ end -}}
|
||||
{{- with $collapse }}data-bs-toggle="collapse" aria-expanded="false" aria-controls="{{ . }}"{{ end -}}
|
||||
{{- if eq $state "active" }}data-bs-toggle="button" aria-pressed="true"{{ end -}}
|
||||
{{- if eq $state "inactive" }}data-bs-toggle="button" aria-pressed="false"{{ end -}}
|
||||
>
|
||||
|
||||
<div class="d-flex justify-content-{{ $justify }}">
|
||||
<div>{{ $title }}</div>
|
||||
{{- with $icon }}<div class="align-self-center{{ if eq $order "first" }} order-first pe-1{{ else }} ps-1{{ end }}">{{ partial "assets/icon.html" (dict "icon" $icon) }}</div>{{ end }}
|
||||
</div>
|
||||
|
||||
{{- with $badge }}
|
||||
<span class="position-absolute top-0 start-100 translate-middle badge rounded-pill bg-danger">
|
||||
{{ . }}
|
||||
{{ with $label }}<span class="visually-hidden">{{ . }}</span>{{ end }}
|
||||
</span>
|
||||
{{- end -}}
|
||||
</a>
|
@@ -31,24 +31,26 @@
|
||||
|
||||
{{- $page := .page -}}
|
||||
{{- if ne (printf "%T" $page) "*hugolib.pageState" -}}
|
||||
{{- errorf "Invalid value for param 'page'" -}}
|
||||
{{- errorf "partial [assets/card-group.html] - Invalid value for param 'page'" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $supportedTypes := slice "page.Pages" "resource.Resources" -}}
|
||||
{{ $list := .list }}
|
||||
{{- if ne (printf "%T" $list) "page.Pages" -}}
|
||||
{{- errorf "Invalid value for param 'items'" -}}
|
||||
{{- if not (in $supportedTypes (printf "%T" $list)) -}}
|
||||
{{ warnf "Type: %T" $list }}
|
||||
{{- errorf "partial [assets/card-group.html] - Invalid value for param 'list'" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $count := len $list -}}
|
||||
{{- $max := .max -}}
|
||||
{{- if ne (printf "%T" $max) "int" -}}
|
||||
{{- errorf "Invalid value for param 'max'" -}}
|
||||
{{- errorf "partial [assets/card-group.html] - Invalid value for param 'max'" -}}
|
||||
{{- end -}}
|
||||
{{- $max = math.Min $max $count -}}
|
||||
|
||||
{{- $cols := .cols -}}
|
||||
{{- if or (lt $cols 1) (gt $cols 5) -}}
|
||||
{{- errorf "Invalid value for param 'cols': %d" $cols -}}
|
||||
{{- errorf "partial [assets/card-group.html] - Invalid value for param 'cols': %d" $cols -}}
|
||||
{{- end -}}
|
||||
{{- $colGrid := "row-cols-1" -}}
|
||||
{{- if eq $cols 2 }}{{ $colGrid = "row-cols-1 row-cols-sm-1 row-cols-md-2" -}}
|
||||
@@ -56,12 +58,10 @@
|
||||
{{- else if eq $cols 4 }}{{ $colGrid = "row-cols-1 row-cols-sm-2 row-cols-md-4" -}}
|
||||
{{- else if eq $cols 5 }}{{ $colGrid = "row-cols-1 row-cols-sm-3 row-cols-md-5" }}{{ end -}}
|
||||
|
||||
{{- $title := .title -}}
|
||||
|
||||
{{- $paginate := false -}}
|
||||
{{- with .paginate -}}
|
||||
{{- if ne (printf "%T" .) "bool" -}}
|
||||
{{- errorf "Invalid value for param 'paginate'" -}}
|
||||
{{- errorf "partial [assets/card-group.html] - Invalid value for param 'paginate'" -}}
|
||||
{{- end -}}
|
||||
{{- $paginate = . -}}
|
||||
{{- end -}}
|
||||
@@ -75,7 +75,7 @@
|
||||
{{- $separator := false -}}
|
||||
{{- with .separator -}}
|
||||
{{- if ne (printf "%T" .) "bool" -}}
|
||||
{{- errorf "Invalid value for param 'separator'" -}}
|
||||
{{- errorf "partial [assets/card-group.html] - Invalid value for param 'separator'" -}}
|
||||
{{- end -}}
|
||||
{{- $separator = . -}}
|
||||
{{- end -}}
|
||||
@@ -87,56 +87,52 @@
|
||||
{{- $footer := .footer -}}
|
||||
{{- $orientation := .orientation -}}
|
||||
|
||||
<div class="container-fluid p-4">
|
||||
{{ with $title }}<p class="display-4 mt-3{{ if and page.IsHome site.Params.home.centerHeadline }} text-center{{ end }}">{{ . }}</p>{{ end }}
|
||||
<div class="container-fluid p-4 px-xxl-0">
|
||||
{{ $paginator := "" }}
|
||||
{{ if $paginate }}
|
||||
<div class="row {{ $colGrid }}">
|
||||
{{ $paginator := $page.Paginate $list }}
|
||||
{{ range $index, $element := first $paginator.PageSize (after (mul (sub $paginator.PageNumber 1) $paginator.PageSize) $list) }}
|
||||
<div class="col pt-3 pb-3">
|
||||
{{- partial "assets/card.html" (dict
|
||||
"path" $element.File.Path
|
||||
"class" (printf "h-100 %s" $class)
|
||||
"color" $color
|
||||
"padding" $padding
|
||||
"header" $header
|
||||
"footer" $footer
|
||||
"orientation" $orientation
|
||||
)
|
||||
-}}
|
||||
{{ $paginator = $page.Paginate $list }}
|
||||
{{ $list = first $paginator.PageSize (after (mul (sub $paginator.PageNumber 1) $paginator.PageSize) $list) }}
|
||||
{{ end }}
|
||||
|
||||
<div class="row {{ $colGrid }}">
|
||||
{{ range $index, $element := $list }}
|
||||
{{- $params := (dict
|
||||
"class" (printf "h-100 %s" $class)
|
||||
"color" $color
|
||||
"padding" $padding
|
||||
"header" $header
|
||||
"footer" $footer
|
||||
"orientation" $orientation
|
||||
) -}}
|
||||
|
||||
{{- if $element.Permalink -}}
|
||||
{{- $params = merge $params (dict "path" $element.File.Path) -}}
|
||||
{{- else -}}
|
||||
{{- $params = merge $params (dict
|
||||
"title" $element.Title
|
||||
"href" $element.Permalink
|
||||
"description" (or $element.Description $element.Content)
|
||||
"thumbnail" $element.Params.thumbnail
|
||||
"icon" $element.Params.icon
|
||||
) -}}
|
||||
{{- end -}}
|
||||
|
||||
<div class="col pt-3 pb-3">
|
||||
{{- partial "assets/card.html" $params -}}
|
||||
</div>
|
||||
{{- if and (lt $index (sub $max 1)) $separator -}}
|
||||
<div class="col d-block d-sm-none">
|
||||
<hr>
|
||||
</div>
|
||||
{{- if and (lt $index (sub $max 1)) $separator -}}
|
||||
<div class="col d-block d-sm-none">
|
||||
<hr>
|
||||
</div>
|
||||
{{- end -}}
|
||||
{{ end }}
|
||||
</div>
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
</div>
|
||||
|
||||
{{ if $paginate }}
|
||||
{{- if gt $paginator.TotalPages 1 -}}
|
||||
{{- partial "assets/pagination.html" $page -}}
|
||||
<div class="pt-3">{{ partial "assets/pagination.html" $page }}</div>
|
||||
{{- end -}}
|
||||
{{ else }}
|
||||
<div class="row {{ $colGrid }}">
|
||||
{{ range $index, $element := $list }}
|
||||
<div class="col pt-3 pb-3">
|
||||
{{- partial "assets/card.html" (dict
|
||||
"path" $element.File.Path
|
||||
"class" (printf "h-100 %s" $class)
|
||||
"color" $color
|
||||
"padding" $padding
|
||||
"header" $header
|
||||
"footer" $footer
|
||||
"orientation" $orientation
|
||||
)
|
||||
-}}
|
||||
</div>
|
||||
{{- if and (lt $index (sub $max 1)) $separator -}}
|
||||
<div class="col d-block d-sm-none">
|
||||
<hr>
|
||||
</div>
|
||||
{{- end -}}
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ if gt $count $max }}
|
||||
<a class="btn btn-outline-primary" href="{{ $moreURL| safeURL }}" role="button">{{ $moreTitle }}</a>
|
||||
{{ end }}
|
||||
|
@@ -5,7 +5,7 @@
|
||||
The shortcode supports the following arguments:
|
||||
"path" Optional path of the page, override with other parameters.
|
||||
"title" Required title of the card.
|
||||
"href" Required address for the button or hyperlink.
|
||||
"href" Optional address for the button or hyperlink.
|
||||
"class" Optional class attribute of the card element, e.g. “w-50”.
|
||||
"color": Optional theme color of the card, either "primary", "secondary", "success", "danger",
|
||||
"warning", "info", "light", "dark", "white", "black", "body", or "body-tertiary". By default, no
|
||||
@@ -28,10 +28,17 @@
|
||||
{{- $color := .color -}}
|
||||
{{- $description := .description -}}
|
||||
|
||||
<a href="{{ $href }}" class="{{ if $color }}link-bg-{{ $color }}{{ else }}card-body-link{{ end }} stretched-link">
|
||||
{{- 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>
|
||||
{{ with $description }}<p class="card-text mb-4 {{ if $color }}link-bg-{{ $color }}{{ else }}card-body-link{{ end }}">{{ . }}</p>{{ end -}}
|
||||
</a>
|
||||
{{- else -}}
|
||||
<div>
|
||||
<p class="card-title fs-5 fw-bold">{{ $title }}</p>
|
||||
{{ with $description }}<p class="card-text mb-4 {{ if $color }}link-bg-{{ $color }}{{ else }}card-body-link{{ end }}">{{ . }}</p>{{ end -}}
|
||||
</a>
|
||||
{{ with $description }}<p class="card-text mb-4 {{ if $color }}link-bg-{{ $color }}{{ else }}card-body-link{{ end }}">{{ . }}</p>{{ end -}}
|
||||
</div>
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
<!-- Inline partial to render the card's header or footer -->
|
||||
@@ -60,7 +67,7 @@
|
||||
|
||||
{{- range $index, $tag := first $maxTags ($page.GetTerms "tags") -}}
|
||||
{{- if gt $index 0 }} • {{ end -}}
|
||||
<a href="{{ (path.Join $tag.Page.RelPermalink) | relURL }}" class="{{ $link }} tag-link" aria-label="tag: {{ $tag.LinkTitle }}">{{ $tag.LinkTitle }}</a>
|
||||
<a href="{{ (path.Join $tag.Page.RelPermalink) | relLangURL }}" class="{{ $link }} tag-link" aria-label="tag: {{ $tag.LinkTitle }}">{{ $tag.LinkTitle }}</a>
|
||||
{{- end -}}
|
||||
</small></p>
|
||||
{{- end -}}
|
||||
@@ -69,7 +76,7 @@
|
||||
{{- if .path }}
|
||||
{{- $page = site.GetPage .path }}
|
||||
{{- if not $page }}
|
||||
{{- errorf "Cannot find page: %s" .path -}}
|
||||
{{- errorf "partial [assets/card.html] - Cannot find page: %s" .path -}}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
@@ -84,7 +91,7 @@
|
||||
{{- if $color -}}
|
||||
{{- $supportedColors := slice "primary" "secondary" "success" "danger" "warning" "info" "light" "dark" "white" "black" "body" "body-tertiary" -}}
|
||||
{{- if not (in $supportedColors $color) -}}
|
||||
{{- errorf "Invalid value for param 'color': %s" $color -}}
|
||||
{{- errorf "partial [assets/card.html] - Invalid value for param 'color': %s" $color -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
@@ -92,13 +99,13 @@
|
||||
{{- with .header }}{{ $header = . }}{{ end -}}
|
||||
{{- $supportedKeywords := slice "full" "publication" "tags" "none" -}}
|
||||
{{- if not (in $supportedKeywords $header) -}}
|
||||
{{- errorf "Invalid value for param 'header': %s" $header -}}
|
||||
{{- errorf "partial [assets/card.html] - Invalid value for param 'header': %s" $header -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $footer := "none" -}}
|
||||
{{- with .footer }}{{ $footer = . }}{{ end -}}
|
||||
{{- if not (in $supportedKeywords $footer) -}}
|
||||
{{- errorf "Invalid value for param 'footer': %s" $footer -}}
|
||||
{{- errorf "partial [assets/card.html] - Invalid value for param 'footer': %s" $footer -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- with $page -}}
|
||||
@@ -109,24 +116,20 @@
|
||||
{{- if not $icon }}{{ $icon = .Params.icon }}{{ end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if not $href -}}
|
||||
{{- errorf "Missing value for param 'href'" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $class := .class -}}
|
||||
|
||||
{{- $padding := "auto" -}}
|
||||
{{- with .padding }}{{ $padding = . }}{{ end -}}
|
||||
{{- $supportedPaddings := slice "0" "1" "2" "3" "4" "5" "auto" -}}
|
||||
{{- if not (in $supportedPaddings $padding) -}}
|
||||
{{- errorf "Invalid value for param 'padding': %s" $padding -}}
|
||||
{{- errorf "partial [assets/card.html] - Invalid value for param 'padding': %s" $padding -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $orientation := "stacked" -}}
|
||||
{{- with .orientation }}{{ $orientation = . }}{{ end -}}
|
||||
{{- $supportedOrientations := slice "stacked" "horizontal" "none" -}}
|
||||
{{- if not (in $supportedOrientations $orientation) -}}
|
||||
{{- errorf "Invalid value for param 'orientation': %s" $orientation -}}
|
||||
{{- errorf "partial [assets/card.html] - Invalid value for param 'orientation': %s" $orientation -}}
|
||||
{{- end -}}
|
||||
{{- if eq $orientation "none" }}{{ $thumbnail = "" }}{{ $icon = "" }}{{ end -}}
|
||||
|
||||
@@ -135,7 +138,7 @@
|
||||
<div class="row g-0">
|
||||
<div class="col-4">
|
||||
{{- if $thumbnail -}}
|
||||
{{- partial "image.html" (dict "url" $thumbnail "ratio" "1x1" "outerClass" "h-100 card-img-wrap" "innerClass" "rounded-start card-img-h100" "title" $title) -}}
|
||||
{{- partial "assets/image.html" (dict "url" $thumbnail "ratio" "1x1" "outerClass" "h-100 card-img-wrap" "innerClass" "rounded-start card-img-h100" "title" $title) -}}
|
||||
{{- else if $icon -}}
|
||||
<div class="pt-{{ $padding }} ps-{{ $padding }} pe-{{ $padding }}">
|
||||
{{- partial "assets/icon.html" (dict "icon" (printf "%s fa-4x text-secondary" $icon)) -}}
|
||||
@@ -144,11 +147,11 @@
|
||||
</div>
|
||||
<div class="col-8">
|
||||
<div class="card-body d-flex p-{{ $padding }} flex-column h-100">
|
||||
<div>{{ partial "card-caption.html" (dict "page" $page "keywords" $header "color" $color) }}</div>
|
||||
{{ if $page }}<div>{{ partial "card-caption.html" (dict "page" $page "keywords" $header "color" $color) }}</div>{{ end }}
|
||||
<div class="h-100">
|
||||
{{- partial "card-body.html" (dict "title" $title "href" $href "color" $color "description" $description) -}}
|
||||
</div>
|
||||
<div>{{ partial "card-caption.html" (dict "page" $page "keywords" $footer "color" $color) }}</div>
|
||||
{{ if $page }}<div>{{ partial "card-caption.html" (dict "page" $page "keywords" $footer "color" $color) }}</div>{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -156,16 +159,16 @@
|
||||
{{- else -}}
|
||||
<div class="card {{ with $color }}bg-{{ . }} text-bg-{{ . }}{{ end }} {{ $class }}">
|
||||
{{- if $thumbnail -}}
|
||||
{{- partial "image.html" (dict "url" $thumbnail "ratio" "16x9" "outerClass" "card-img-wrap" "innerClass" "card-img-top" "title" $title) -}}
|
||||
{{- partial "assets/image.html" (dict "url" $thumbnail "ratio" "16x9" "outerClass" "card-img-wrap" "innerClass" "card-img-top" "title" $title) -}}
|
||||
{{- else if $icon -}}
|
||||
<div class="pt-{{ $padding }} ps-{{ $padding }} pe-{{ $padding }}">
|
||||
{{- partial "assets/icon.html" (dict "icon" (printf "%s fa-4x text-secondary" $icon)) -}}
|
||||
</div>
|
||||
{{- end -}}
|
||||
<div class="card-body d-flex flex-column p-{{ $padding }}">
|
||||
{{- partial "card-caption.html" (dict "page" $page "keywords" $header "color" $color) -}}
|
||||
{{ if $page }}{{- partial "card-caption.html" (dict "page" $page "keywords" $header "color" $color) -}}{{ end }}
|
||||
{{- partial "card-body.html" (dict "title" $title "href" $href "color" $color "description" $description) -}}
|
||||
{{- partial "card-caption.html" (dict "page" $page "keywords" $footer "color" $color) -}}
|
||||
{{ if $page }}{{- partial "card-caption.html" (dict "page" $page "keywords" $footer "color" $color) -}}{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
{{- end -}}
|
||||
|
@@ -1,6 +1,6 @@
|
||||
{{- $icon := .icon -}}
|
||||
{{- if not $icon -}}
|
||||
{{- errorf "Expected value for param 'icon'" -}}
|
||||
{{- errorf "partial [assets/icon.html] - Expected value for param 'icon'" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $icon_class := split $icon " " -}}
|
||||
@@ -12,5 +12,5 @@
|
||||
{{- else if eq (index $icon_class 0) "fa" -}}
|
||||
<i class="fa-regular fa-{{ $attr }}"></i>
|
||||
{{- else -}}
|
||||
{{- errorf "Unrecognized icon class: %s" $icon_class -}}
|
||||
{{- errorf "partial [assets/icon.html] - Unrecognized icon class: %s" $icon_class -}}
|
||||
{{- end -}}
|
||||
|
@@ -26,7 +26,7 @@
|
||||
{{- $title := .title -}}
|
||||
{{- $caption := .caption -}}
|
||||
{{- if ne (printf "%T" $mode) "bool" -}}
|
||||
{{- errorf "Invalid value for param 'mode'" -}}
|
||||
{{- errorf "partial [assets/image.html] - Invalid value for param 'mode'" -}}
|
||||
{{- end -}}
|
||||
{{- $modes := site.Params.main.modes | default (slice "light" "dark") -}}
|
||||
|
||||
@@ -132,23 +132,14 @@
|
||||
|
||||
{{- range $none := $modes -}}
|
||||
{{- if ne $none $mode -}}
|
||||
{{- $outerClass = printf "%s d-none-%s" $outerClass $none -}}
|
||||
{{- $outerClass = printf "%s d-none-%s" (or $outerClass "") $none -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if $caption -}}
|
||||
<figure class="figure {{ $outerClass }}">
|
||||
<img class="figure-img img-fluid {{ $innerClass }}"
|
||||
{{ with $imgset -}}
|
||||
srcset="{{ . }}"
|
||||
sizes="100vw"
|
||||
{{- end }}
|
||||
src="{{ $fallbackURL }}"
|
||||
alt="{{ $title }}">
|
||||
<figcaption class="figure-caption">{{ $caption | safeHTML }}</figcaption>
|
||||
</figure>
|
||||
{{- else -}}
|
||||
<div class="{{ with $ratio }}ratio ratio-{{ . }}{{ end }} {{ $outerClass }}">
|
||||
<figure {{ with $outerClass }}class="{{ . }}"{{ end }}>
|
||||
{{ end }}
|
||||
<div class="{{ with $ratio }}ratio ratio-{{ . }}{{ end }}{{ if not $caption }} {{ $outerClass }}{{ end }}">
|
||||
<img class="img-fluid {{ $innerClass }}"
|
||||
{{ with $imgset -}}
|
||||
srcset="{{ . }}"
|
||||
@@ -157,7 +148,10 @@
|
||||
src="{{ $fallbackURL }}"
|
||||
alt="{{ $title }}">
|
||||
</div>
|
||||
{{- end -}}
|
||||
{{- if $caption -}}
|
||||
<figcaption class="figure-caption">{{ $caption | safeHTML }}</figcaption>
|
||||
</figure>
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
<!-- Initiate the regular or color-mode image -->
|
@@ -27,18 +27,19 @@
|
||||
{{- define "partials/list-img.html" -}}
|
||||
{{- $thumbnail := .thumbnail -}}
|
||||
{{- $style := .style -}}
|
||||
|
||||
{{- partial "image.html" (dict "url" $thumbnail "outerClass" $style "mode" true) -}}
|
||||
{{- $mode := .mode -}}
|
||||
{{- partial "assets/image.html" (dict "url" $thumbnail "outerClass" $style "mode" $mode) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $page := .page -}}
|
||||
{{- if ne (printf "%T" $page) "*hugolib.pageState" -}}
|
||||
{{- errorf "Invalid value for param 'page'" -}}
|
||||
{{- errorf "partial [assets/list.html] - Invalid value for param 'page'" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $supportedTypes := slice "page.Pages" "resource.Resources" -}}
|
||||
{{ $list := .list }}
|
||||
{{- if ne (printf "%T" $list) "resource.Resources" -}}
|
||||
{{- errorf "Invalid value for param 'items'" -}}
|
||||
{{- if not (in $supportedTypes (printf "%T" $list)) -}}
|
||||
{{- errorf "partial [assets/list.html] - Invalid value for param 'list'" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $title := .title -}}
|
||||
@@ -47,16 +48,11 @@
|
||||
|
||||
{{ $vertical := false }}
|
||||
{{ $type := "pills" }}
|
||||
{{- $id := .Ordinal -}}
|
||||
|
||||
<div class="d-none d-md-block p-0">
|
||||
{{- range $index, $item := $list -}}
|
||||
{{- $odd := eq (mod $index 2) 1 -}}
|
||||
<div class="container ratio-section d-flex flex-column">
|
||||
{{ if eq $index 0 }}
|
||||
{{ with $title }}<p class="display-4 pt-5{{ if and page.IsHome site.Params.home.centerHeadline }} text-center{{ end }}">{{ . }}</p>{{ end }}
|
||||
{{ end }}
|
||||
|
||||
<div class="row pt-5 pb-5 align-items-center flex-fill row-cols-2">
|
||||
<div class="col-6{{ if $odd }} order-last{{ end }}">
|
||||
{{- $style := "reveal fade-bottom" -}}
|
||||
@@ -64,10 +60,10 @@
|
||||
{{- $style = "reveal fade-bottom-n5 rotate-n5 ps-3" -}}
|
||||
{{- if $odd }}{{ $style = "reveal fade-bottom-5 rotate-5 pe-3" }}{{ end }}
|
||||
{{ end }}
|
||||
{{ partial "partials/list-img.html" (dict "thumbnail" $item.Params.Thumbnail "style" $style) }}
|
||||
{{ partial "partials/list-img.html" (dict "thumbnail" $item.Params.Thumbnail "style" $style "mode" $item.Params.colormode) }}
|
||||
</div>
|
||||
<div class="col-6{{ if $odd }} order-first{{ end }} psw-lg-5 p-5">
|
||||
{{ partial "partials/list-content.html" (dict "title" $item.Title "content" $item.Content )}}
|
||||
{{ partial "partials/list-content.html" (dict "title" $item.Title "content" (or $item.Description $item.Content)) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -78,15 +74,12 @@
|
||||
{{- range $index, $item := $list -}}
|
||||
{{- $odd := eq (mod $index 2) 1 -}}
|
||||
<div class="container d-flex flex-column">
|
||||
{{ if eq $index 0 }}
|
||||
{{ with $title }}<p class="display-4 pt-5{{ if and page.IsHome site.Params.home.centerHeadline }} text-center{{ end }}">{{ . }}</p>{{ end }}
|
||||
{{ end }}
|
||||
<div class="row pt-5 pb-5 align-items-center flex-fill row-cols-2">
|
||||
<div class="col-12 text-center">
|
||||
{{ partial "partials/list-img.html" (dict "thumbnail" $item.Params.Thumbnail)}}
|
||||
{{ partial "partials/list-img.html" (dict "thumbnail" $item.Params.Thumbnail "mode" $item.Params.colormode) }}
|
||||
</div>
|
||||
<div class="col-12 p-3">
|
||||
{{ partial "partials/list-content.html" (dict "title" $item.Title "content" $item.Content )}}
|
||||
{{ partial "partials/list-content.html" (dict "title" $item.Title "content" (or $item.Description $item.Content)) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@@ -3,10 +3,12 @@
|
||||
supports the following arguments:
|
||||
"page" Required context of the current page.
|
||||
"list" Required array of pages.
|
||||
"title" Optional title of the card group.
|
||||
"type" Optional type of the tab group, either "tabs", "pills", or "underline".
|
||||
"title" Optional title of the tab group.
|
||||
"type" Optional type of the tab group, either "tabs", "pills" (default), or "underline".
|
||||
"vertical" Optional flag to show vertical tabs instead of horizontal tabs (default).
|
||||
"class": Optional class attribute of the tab group, e.g. “nav-fill”.
|
||||
"class" Optional class attribute of the tab group, e.g. “nav-fill”.
|
||||
"pane" Optional style of the panes, either "none" (default) or "persona".
|
||||
"width" Optional responsive width of the tab group, either "50" or "100" (default).
|
||||
|
||||
In addition, the following arguments are passed to the individual tabs.
|
||||
"class" Optional class attribute of the tab element, e.g. “w-50”.
|
||||
@@ -16,47 +18,95 @@
|
||||
|
||||
{{- $page := .page -}}
|
||||
{{- if ne (printf "%T" $page) "*hugolib.pageState" -}}
|
||||
{{- errorf "Invalid value for param 'page'" -}}
|
||||
{{- errorf "partial [assets/nav.html] - Invalid value for param 'page'" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $id := "0" -}}
|
||||
{{- with .id -}}
|
||||
{{ $id = . }}
|
||||
{{ end }}
|
||||
|
||||
{{- $supportedTypes := slice "page.Pages" "resource.Resources" -}}
|
||||
{{ $list := .list }}
|
||||
{{- if ne (printf "%T" $list) "resource.Resources" -}}
|
||||
{{- errorf "Invalid value for param 'items'" -}}
|
||||
{{- if not (in $supportedTypes (printf "%T" $list)) -}}
|
||||
{{- errorf "partial [assets/nav.html] - Invalid value for param 'list'" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{ $pane := "none" }}
|
||||
{{ with .pane }}
|
||||
{{- $supportedPanes := slice "none" "persona" -}}
|
||||
{{- $pane = . }}
|
||||
{{- if not (in $supportedPanes $pane) -}}
|
||||
{{- errorf "partial [assets/nav.html] - Invalid value for param 'pane'" -}}
|
||||
{{- end -}}
|
||||
{{ end }}
|
||||
|
||||
{{ $supportedWidths := slice 50 100 -}}
|
||||
{{ $widthParam := 100 -}}
|
||||
{{ $width := 100 }}
|
||||
{{ with .width }}{{ $widthParam = . }}{{ end -}}
|
||||
{{ if in $supportedWidths $widthParam -}}
|
||||
{{ $width = int $widthParam }}
|
||||
{{ else -}}
|
||||
{{ errorf "partial [assets/nav.html] - Invalid value for param 'width': %s" $widthParam -}}
|
||||
{{ end -}}
|
||||
|
||||
{{- $title := .title -}}
|
||||
{{- $class := .class -}}
|
||||
{{- $color := .color -}}
|
||||
|
||||
{{ $supportedFlags := slice "true" "false" -}}
|
||||
{{ $verticalParam := "false" -}}
|
||||
{{ $vertical := false }}
|
||||
{{ with .vertical }}{{ $verticalParam = . }}{{ end -}}
|
||||
{{ if in $supportedFlags $verticalParam -}}
|
||||
{{ if eq $verticalParam "true" }}{{ $vertical = true }}{{ else }}{{ $vertical = false }}{{ end -}}
|
||||
{{ else -}}
|
||||
{{ errorf "partial [assets/nav.html] - Invalid value for param 'vertical': %s" $verticalParam -}}
|
||||
{{ end -}}
|
||||
|
||||
{{ $type := "pills" }}
|
||||
{{- $id := .Ordinal -}}
|
||||
|
||||
{{ if $vertical }}<div class="d-flex align-items-start">{{ end }}
|
||||
<div class="nav{{ with $type }} nav-{{ . }}{{ end }}{{ with $class }} {{ . }}{{ end }}{{ if $vertical }} flex-column{{ end }}" id="nav-{{ $id }}" role="tablist"{{ if $vertical }} aria-orientation="vertical"{{ end }}>
|
||||
{{- range $index, $item := $list -}}
|
||||
{{ $show := eq $index 0}}
|
||||
<button class="nav-link text-nowrap{{ if $show }} active{{ end }}" id="nav-{{ $id }}-btn-{{ $index }}" data-bs-toggle="pill" data-bs-target="#nav-{{ $id }}-{{ $index }}"
|
||||
type="button" role="tab" aria-controls="nav-{{ $id }}-{{ $index }}" aria-selected="{{ if eq $index 0 }}true{{ else }}false{{ end }}">
|
||||
{{ $item.Title }}
|
||||
</button>
|
||||
{{ with .type }}
|
||||
{{ $type = . -}}
|
||||
{{ $supportedNavTypes := slice "tabs" "pills" "underline" -}}
|
||||
{{ if $type }}
|
||||
{{ if not (in $supportedNavTypes $type) -}}
|
||||
{{ errorf "partial [assets/nav.html] - Invalid value for param 'type': %s" $type -}}
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
</div>
|
||||
{{ end -}}
|
||||
|
||||
<div class="tab-content {{ if eq $type "tabs" }}border border-top-0 p-3{{ else if $vertical }}ms-3{{ else }}mt-3{{ end }}">
|
||||
{{ range $index, $item := $list }}
|
||||
{{ $header := $item.Title }}
|
||||
{{ $body := $item.Content }}
|
||||
{{ $show := eq $index 0}}
|
||||
<div class="tab-pane{{ if $show }} active{{ end }}" id="nav-{{ $id }}-{{ $index }}" role="tabpanel" aria-labelledby="{{ $id }}-btn-{{ $index }}" tabindex="0">
|
||||
{{- partial "assets/persona.html" (dict
|
||||
"title" $item.Title
|
||||
"class" $class
|
||||
"color" $color
|
||||
"content" $item.Content
|
||||
"thumbnail" $item.Params.Thumbnail
|
||||
) -}}
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ if $vertical }}</div>{{ end }}
|
||||
<div class="{{ if eq $width 50 }}col-sm-12 col-md-10 col-lg-8 col-xl-6{{ else }}col-12{{ end }} mx-auto pt-5 pb-5">
|
||||
{{ if $vertical }}<div class="d-flex align-items-start">{{ end }}
|
||||
<div class="nav{{ with $type }} nav-{{ . }}{{ end }}{{ with $class }} {{ . }}{{ end }}{{ if $vertical }} flex-column{{ end }}" id="nav-{{ $id }}" role="tablist"{{ if $vertical }} aria-orientation="vertical"{{ end }}>
|
||||
{{- range $index, $item := $list -}}
|
||||
{{ $show := eq $index 0}}
|
||||
<button class="nav-link text-nowrap{{ if $show }} active{{ end }}" id="nav-{{ $id }}-btn-{{ $index }}" data-bs-toggle="pill" data-bs-target="#nav-{{ $id }}-{{ $index }}"
|
||||
type="button" role="tab" aria-controls="nav-{{ $id }}-{{ $index }}" aria-selected="{{ if eq $index 0 }}true{{ else }}false{{ end }}">
|
||||
{{ $item.Title }}
|
||||
</button>
|
||||
{{ end -}}
|
||||
</div>
|
||||
|
||||
<div class="tab-content {{ if eq $type "tabs" }}border border-top-0 p-3{{ else if $vertical }}ms-3{{ else }}mt-3{{ end }}">
|
||||
{{ range $index, $item := $list }}
|
||||
{{ $header := $item.Title }}
|
||||
{{ $body := $item.Content }}
|
||||
{{ $show := eq $index 0}}
|
||||
<div class="tab-pane{{ if $show }} active{{ end }}" id="nav-{{ $id }}-{{ $index }}" role="tabpanel" aria-labelledby="{{ $id }}-btn-{{ $index }}" tabindex="0">
|
||||
{{- if eq $pane "persona" -}}
|
||||
{{- partial "assets/persona.html" (dict
|
||||
"title" $item.Title
|
||||
"class" $class
|
||||
"color" $color
|
||||
"content" (or $item.Description $item.Content)
|
||||
"thumbnail" $item.Params.Thumbnail
|
||||
) -}}
|
||||
{{- else -}}
|
||||
{{- (or $item.Description $item.Content) -}}
|
||||
{{- end -}}
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ if $vertical }}</div>{{ end }}
|
||||
</div>
|
@@ -55,21 +55,21 @@
|
||||
|
||||
{{- $page := .page -}}
|
||||
{{- if not $page -}}
|
||||
{{- errorf "Missing value for param 'page'" -}}
|
||||
{{- errorf "partial [assets/navbar.html] - Missing value for param 'page'" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $menuName := "main" }}
|
||||
{{- with .menus }}{{ $menuName = .}}{{ end -}}
|
||||
{{- $menus := index site.Menus $menuName -}}
|
||||
{{- if or (ne (printf "%T" $menus) "navigation.Menu") (ne (index $menus 0).Menu $menuName) -}}
|
||||
{{- errorf "Invalid value for param 'menus': %s" $menuName -}}
|
||||
{{- errorf "partial [assets/navbar.html] - Invalid value for param 'menus': %s" $menuName -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $size := "md" -}}
|
||||
{{- with .size }}{{ $size = . }}{{ end -}}
|
||||
{{- $supportedSizes := slice "xs" "sm" "md" "lg" "xl" -}}
|
||||
{{- if not (in $supportedSizes $size) -}}
|
||||
{{- errorf "Invalid value for param 'size': %s" $size -}}
|
||||
{{- errorf "partial [assets/navbar.html] - Invalid value for param 'size': %s" $size -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $fixedParam := "false" -}}
|
||||
@@ -78,7 +78,7 @@
|
||||
{{- if in $supportedFlags $fixedParam -}}
|
||||
{{- if eq $fixedParam "true" }}{{ $fixed = true }}{{ else }}{{ $fixed = false }}{{ end -}}
|
||||
{{- else -}}
|
||||
{{- errorf "Invalid value for param 'fixed': %s" $fixedParam -}}
|
||||
{{- errorf "partial [assets/navbar.html] - Invalid value for param 'fixed': %s" $fixedParam -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $color := "" -}}
|
||||
@@ -86,7 +86,7 @@
|
||||
{{- $color = . -}}
|
||||
{{- $supportedColors := slice "primary" "secondary" "success" "danger" "warning" "info" "light" "dark" "white" "black" "body" "body-tertiary" -}}
|
||||
{{- if not (in $supportedColors $color) -}}
|
||||
{{- errorf "Invalid value for param 'color': %s" $color -}}
|
||||
{{- errorf "partial [assets/navbar.html] - Invalid value for param 'color': %s" $color -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
@@ -96,7 +96,7 @@
|
||||
{{- if in $supportedFlags $searchParam -}}
|
||||
{{- if eq $searchParam "true" }}{{ $search = true }}{{ else }}{{ $search = false }}{{ end -}}
|
||||
{{- else -}}
|
||||
{{- errorf "Invalid value for param 'search': %s" $searchParam -}}
|
||||
{{- errorf "partial [assets/navbar.html] - Invalid value for param 'search': %s" $searchParam -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
@@ -106,7 +106,7 @@
|
||||
{{- if in $supportedFlags $darkModeParam -}}
|
||||
{{- if eq $darkModeParam "true" }}{{ $enableDarkMode = site.Params.main.enableDarkMode }}{{ else }}{{ $enableDarkMode = false }}{{ end -}}
|
||||
{{- else -}}
|
||||
{{- errorf "Invalid value for param 'darkMode': %s" $darkModeParam -}}
|
||||
{{- errorf "partial [assets/navbar.html] - Invalid value for param 'darkMode': %s" $darkModeParam -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
@@ -169,18 +169,18 @@
|
||||
{{- $menu_item_url := $menu.URL | relLangURL -}}
|
||||
{{- $page_url:= $page.RelPermalink | relLangURL -}}
|
||||
{{- $active := hasPrefix $page_url $menu_item_url -}}
|
||||
|
||||
|
||||
{{- $url := urls.Parse .URL -}}
|
||||
{{- $baseurl := urls.Parse $.Site.Params.Baseurl -}}
|
||||
{{- if .HasChildren -}}
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link {{ if $active }}active{{ end }} dropdown-toggle" href="{{ .URL }}" role="button" data-bs-toggle="dropdown" aria-expanded="false">
|
||||
<a class="nav-link {{ if $active }}active{{ end }} dropdown-toggle" href="{{ .URL | relLangURL }}" role="button" data-bs-toggle="dropdown" aria-expanded="false">
|
||||
{{ if $active }}<span class="active">{{ .Name }}</span>{{ else }}{{ .Name }}{{ end }}
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-menu-end">
|
||||
{{- range .Children -}}
|
||||
{{- $child_active := eq $page_url .URL -}}
|
||||
<li><a class="dropdown-item {{ if $child_active }}active{{ end }}" href="{{ .URL }}">{{ .Name }}</a></li>
|
||||
{{- $child_active := eq $page_url (.URL | relLangURL) -}}
|
||||
<li><a class="dropdown-item {{ if $child_active }}active{{ end }}" href="{{ .URL | relLangURL }}">{{ .Name }}</a></li>
|
||||
{{- end -}}
|
||||
</ul>
|
||||
</li>
|
||||
@@ -188,7 +188,7 @@
|
||||
<li class="nav-item">
|
||||
{{- $external := ne $url.Host $baseurl.Host -}}
|
||||
<a class="nav-link {{ if $active }}active{{ end }}"
|
||||
href="{{ with .Page }}{{ .RelPermalink }}{{ else }}{{ .URL | relLangURL }}{{ end }}" {{ if $external }}target="_blank" {{ end }}>
|
||||
href="{{ with .Page }}{{ .RelPermalink }}{{ else }}{{ .URL | relLangURL }}{{ end }}" {{ if $external }}target="_blank" rel="noopener noreferrer" {{ end }}>
|
||||
{{- with $pre}}{{ . }}{{ end -}}
|
||||
<span {{if $active }} class="active"{{end}}>{{ .Name }}</span>
|
||||
{{- with $post}}{{ . }}{{ end -}}
|
||||
|
@@ -29,7 +29,7 @@
|
||||
{{- if .path }}
|
||||
{{- $page = site.GetPage .path }}
|
||||
{{- if not $page }}
|
||||
{{- errorf "Cannot find page: %s" .path -}}
|
||||
{{- errorf "partial [assets/persona.html] - Cannot find page: %s" .path -}}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
{{- if $color -}}
|
||||
{{- $supportedColors := slice "primary" "secondary" "success" "danger" "warning" "info" "light" "dark" "white" "black" "body" "body-tertiary" -}}
|
||||
{{- if not (in $supportedColors $color) -}}
|
||||
{{- errorf "Invalid value for param 'color': %s" $color -}}
|
||||
{{- errorf "partial [assets/persona.html] - Invalid value for param 'color': %s" $color -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
<div class="col-2">
|
||||
<div class="position-absolute top-50 start-0 translate-middle-y col-4 ps-3">
|
||||
{{- if $thumbnail -}}
|
||||
{{- partial "image.html" (dict "url" $thumbnail "ratio" "1x1" "innerClass" "rounded-5") -}}
|
||||
{{- partial "assets/image.html" (dict "url" $thumbnail "ratio" "1x1" "innerClass" "rounded-5") -}}
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
@@ -81,7 +81,7 @@
|
||||
<div class="col-12">
|
||||
<div class="position-absolute top-25 start-50 translate-middle col-6">
|
||||
{{- if $thumbnail -}}
|
||||
{{- partial "image.html" (dict "url" $thumbnail "ratio" "1x1" "innerClass" "rounded-5") -}}
|
||||
{{- partial "assets/image.html" (dict "url" $thumbnail "ratio" "1x1" "innerClass" "rounded-5") -}}
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
|
@@ -1,6 +1,6 @@
|
||||
<div class="d-flex ms-md-3">
|
||||
<form class="search position-relative flex-grow-1 me-auto">
|
||||
<input id="search" class="form-control is-search" type="search" placeholder="{{ T "ui_search" }}" aria-label="{{ T "ui_search" }}" autocomplete="off">
|
||||
<div id="suggestions" class="shadow bg-body rounded d-none"></div>
|
||||
<div id="suggestions" class="shadow bg-body rounded d-none" data-no-results="{{ T "ui_no_results" }}"></div>
|
||||
</form>
|
||||
</div>
|
||||
|
46
layouts/partials/assets/section-header.html
Normal file
46
layouts/partials/assets/section-header.html
Normal file
@@ -0,0 +1,46 @@
|
||||
{{- $title := .title -}}
|
||||
{{- $thumbnail := .thumbnail -}}
|
||||
{{- $icon := .icon -}}
|
||||
{{- $sectionHeader := .sectionHeader -}}
|
||||
{{- $description := .description -}}
|
||||
{{- $content := .content -}}
|
||||
|
||||
{{- define "partials/section-header-img.html" -}}
|
||||
{{- $title := .title -}}
|
||||
{{- $thumbnail := .thumbnail -}}
|
||||
{{- $icon := .icon -}}
|
||||
{{ $padding := 5 }}
|
||||
|
||||
{{- if $thumbnail -}}
|
||||
{{- partial "assets/image.html" (dict "url" $thumbnail "ratio" "1x1" "outerClass" "h-100 card-img-wrap" "innerClass" "rounded-start card-img-h100" "title" $title) -}}
|
||||
{{- else if $icon -}}
|
||||
<div class="text-secondary fw-bold">
|
||||
{{- partial "assets/icon.html" (dict "icon" (printf "%s fa-10x" $icon)) -}}
|
||||
</div>
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
<div class="container-fluid p-4 px-xxl-0">
|
||||
{{ with $title }}<p class="display-4 mt-3{{ if and page.IsHome site.Params.home.centerHeadline }} text-center{{ end }}">{{ . }}</p>{{ end }}
|
||||
{{ with $description }} <p class="lead mb-5">{{ . }}</p>{{ end }}
|
||||
{{- if $content -}}
|
||||
<div class="row row-cols-1 row-cols-lg-3 pt-5">
|
||||
<div class="col col-lg-3 d-none d-lg-block"></div>
|
||||
<div class="col col-sm-12 col-lg-6 text-center">
|
||||
<div class="row row-cols-1{{ if ne $sectionHeader "justify-content-center" }} row-cols-sm-2{{ end }} row-gap-5 p-0 align-items-center flex-fill">
|
||||
{{- if eq $sectionHeader "justify-content-center" -}}
|
||||
<div class="col p-0 w-50 mx-auto pb-5">{{ partial "partials/section-header-img.html" (dict "title" $title "thumbnail" $thumbnail "icon" $icon )}}</div>
|
||||
<div class="col fs-md-5 fs-6">{{ $content }}</div>
|
||||
{{- else if eq $sectionHeader "justify-content-end" -}}
|
||||
<div class="col p-0">{{ partial "partials/section-header-img.html" (dict "title" $title "thumbnail" $thumbnail "icon" $icon )}}</div>
|
||||
<div class="col fs-md-5 fs-6 text-sm-start">{{ $content }}</div>
|
||||
{{- else -}}
|
||||
<div class="col fs-md-5 fs-6 text-sm-start">{{ $content }}</div>
|
||||
<div class="col p-0">{{ partial "partials/section-header-img.html" (dict "title" $title "thumbnail" $thumbnail "icon" $icon )}}</div>
|
||||
{{- end -}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col col-lg-3 d-none d-lg-block"></div>
|
||||
</div>
|
||||
{{- end -}}
|
||||
</div>
|
@@ -1,17 +1,22 @@
|
||||
{{- $page := .page }}
|
||||
{{- $section := .section }}
|
||||
{{- if not $section }}{{ errorf "Missing value for param 'section'" }}{{ end -}}
|
||||
{{- if not $section }}{{ errorf "partial [assets/section-list.html] - Missing value for param 'section'" }}{{ end -}}
|
||||
{{- $home := .home }}
|
||||
{{ if ne (printf "%T" $home) "bool" }}
|
||||
{{ errorf "Invalid value for param 'home'"}}
|
||||
{{ errorf "partial [assets/section-list.html] - Invalid value for param 'home'"}}
|
||||
{{ end }}
|
||||
{{- $title := .title -}}
|
||||
{{- $icon := .icon -}}
|
||||
{{- $thumbnail := .thumbnail -}}
|
||||
{{- $sectionHeader := .sectionHeader -}}
|
||||
{{- $description := .description -}}
|
||||
{{- $content := .content -}}
|
||||
{{- $moreTitle := .moreTitle -}}
|
||||
{{- $sectionURL := .sectionURL -}}
|
||||
|
||||
{{- $nested := .nested | default true -}}
|
||||
{{- $paginate := true -}}
|
||||
{{- $sort := "date" -}}
|
||||
{{- $reverse := true -}}
|
||||
{{- $order := "desc" -}}
|
||||
{{- $separator := false -}}
|
||||
{{- $orientation := "stacked" -}}
|
||||
{{- $cols := 3 -}}
|
||||
@@ -22,11 +27,18 @@
|
||||
{{- $style := "" -}}
|
||||
{{- $homepage := 3 -}}
|
||||
{{- $background := "" -}}
|
||||
{{- $layout := "card" -}}
|
||||
{{- $pane := "none" -}}
|
||||
{{- $type := "pills" -}}
|
||||
{{- $vertical := "false" -}}
|
||||
{{- $width := 100 -}}
|
||||
|
||||
{{- with (index site.Params $section) -}}
|
||||
{{- with index . "title" }}{{ $title = . }}{{ end -}}
|
||||
{{- with (index site.Params.sections $section) -}}
|
||||
{{- with index . "title" }}{{ $title = or $.title . }}{{ end -}}
|
||||
{{- with index . "sectionHeader" }}{{ $sectionHeader = . }}{{ end -}}
|
||||
{{- with index . "sort" }}{{ $sort = . }}{{ end -}}
|
||||
{{- if (index . "reverse") }}{{ $reverse = true }}{{ else }}{{ $reverse = false }}{{ end -}}
|
||||
{{- if (index . "reverse") }}{{ $order = "desc" }}{{ else }}{{ $order = "asc" }}{{ end -}}
|
||||
{{- if $home }}{{- if (isset . "nested") }}{{ $nested = (index . "nested") }}{{ end -}}{{ end -}}
|
||||
{{- if (index . "separator") }}{{ $separator = true }}{{ else }}{{ $separator = false }}{{ end -}}
|
||||
{{- with index . "orientation" }}{{ $orientation = . }}{{ end -}}
|
||||
{{- with index . "cols" }}{{ $cols = . }}{{ end -}}
|
||||
@@ -37,53 +49,99 @@
|
||||
{{- with index . "style" }}{{ $style = . }}{{ end -}}
|
||||
{{- with index . "homepage" }}{{ $homepage = . }}{{ end -}}
|
||||
{{- with index . "background" }}{{ $background = . }}{{ end -}}
|
||||
{{- with index . "layout" }}{{ $layout = . }}{{ end -}}
|
||||
{{- with index . "pane" }}{{ $pane = . }}{{ end -}}
|
||||
{{- with index . "type" }}{{ $type = . }}{{ end -}}
|
||||
{{- with index . "vertical" }}{{ $vertical = . }}{{ end -}}
|
||||
{{- with index . "width" }}{{ $width = . }}{{ end -}}
|
||||
{{- end -}}
|
||||
{{ if ne (printf "%T" $nested) "bool" }}
|
||||
{{ errorf "partial [assets/section-list.html] - Invalid value for param 'nested'"}}
|
||||
{{ end }}
|
||||
|
||||
{{ $list := "" }}
|
||||
{{ if $nested }}
|
||||
{{ $list = where site.RegularPages "Type" "in" $section }}
|
||||
{{ else if $home }}
|
||||
{{ $sectionPage := site.GetPage "section" $section }}
|
||||
{{ $list = $sectionPage.RegularPages }}
|
||||
{{ else }}
|
||||
{{ $list = $page.RegularPages }}
|
||||
{{ end }}
|
||||
|
||||
{{ $max := (len $list) -}}
|
||||
{{ if eq $max 0 }}
|
||||
{{- $bundle := site.GetPage $section -}}
|
||||
{{- $list = $bundle.Resources.Match "*" -}}
|
||||
{{- $max = len $list -}}
|
||||
{{ end }}
|
||||
{{- $list = sort $list (printf "Params.%s" $sort) $order -}}
|
||||
|
||||
{{- $supportedLayouts := slice "card" "list" "nav" -}}
|
||||
{{- if not (in $supportedLayouts $layout) -}}
|
||||
{{- errorf "partial [assets/section-list.html] - Invalid value for param 'layout': %s" $layout -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $list := where site.RegularPages "Type" "in" $section -}}
|
||||
{{- $max := (len $list) -}}
|
||||
{{- if $home -}}
|
||||
{{- $paginate = false -}}
|
||||
{{- $max = int (math.Min $homepage $max) -}}
|
||||
{{ end -}}
|
||||
{{ if gt $max 0 }}
|
||||
{{- if $home -}}
|
||||
{{- $paginate = false -}}
|
||||
{{- $max = int (math.Min $homepage $max) -}}
|
||||
{{ end -}}
|
||||
{{- $cols = int (math.Min $cols $max) -}}
|
||||
|
||||
{{- $cols = int (math.Min $cols $max) -}}
|
||||
|
||||
{{- if eq $sort "weight" -}}
|
||||
{{- $list = $list.ByWeight -}}
|
||||
{{- else if eq $sort "publication" -}}
|
||||
{{- $list = $list.ByPublishDate -}}
|
||||
{{- else if eq $sort "expiration" -}}
|
||||
{{- $list = $list.ByExpiryDate -}}
|
||||
{{- else if eq $sort "lastmod" -}}
|
||||
{{- $list = $list.ByLastmod -}}
|
||||
{{- else if eq $sort "length" -}}
|
||||
{{- $list = $list.ByLength -}}
|
||||
{{- else if eq $sort "title" -}}
|
||||
{{- $list = $list.ByTitle -}}
|
||||
{{- else if eq $sort "linktitle" -}}
|
||||
{{- $list = $list.ByLinkTitle -}}
|
||||
{{- else if ne $sort "date" -}}
|
||||
{{- $list = $list.ByParam $sort -}}
|
||||
{{- end -}}
|
||||
{{- if $reverse -}}{{- $list = $list.Reverse -}}{{ end -}}
|
||||
|
||||
<div class="container-xxl flex-fill p-0{{ with $background }} bg-{{ . }}{{ end }}">
|
||||
{{- partial "assets/card-group.html" (dict
|
||||
{{- $params := (dict
|
||||
"page" $page
|
||||
"list" $list
|
||||
"max" $max
|
||||
"cols" $cols
|
||||
"title" $title
|
||||
"href" $sectionURL
|
||||
"hrefTitle" $moreTitle
|
||||
"separator" $separator
|
||||
"paginate" $paginate
|
||||
"icon" $icon
|
||||
"thumbnail" $thumbnail
|
||||
"sectionHeader" $sectionHeader
|
||||
"description" $description
|
||||
"content" $content
|
||||
"class" $style
|
||||
"orientation" $orientation
|
||||
"color" $color
|
||||
"padding" $padding
|
||||
"header" $header
|
||||
"footer" $footer
|
||||
)
|
||||
)
|
||||
-}}
|
||||
</div>
|
||||
{{- $partial := "" -}}
|
||||
|
||||
<div class="container-fluid {{ with $background }} bg-{{ . }}{{ end }}">
|
||||
<div class="container-xxl flex-fill p-0">
|
||||
{{- partial "assets/section-header.html" $params -}}
|
||||
|
||||
{{ if eq $layout "card" }}
|
||||
{{- $partial = "assets/card-group.html" -}}
|
||||
{{- $params = merge $params (dict
|
||||
"max" $max
|
||||
"cols" $cols
|
||||
"href" $sectionURL
|
||||
"hrefTitle" $moreTitle
|
||||
"separator" $separator
|
||||
"paginate" $paginate
|
||||
"orientation" $orientation
|
||||
"padding" $padding
|
||||
"header" $header
|
||||
"footer" $footer
|
||||
)
|
||||
-}}
|
||||
{{ else if eq $layout "nav" }}
|
||||
{{- $partial = "assets/nav.html" -}}
|
||||
{{- $params = merge $params (dict
|
||||
"layout" $layout
|
||||
"id" $section
|
||||
"pane" $pane
|
||||
"type" $type
|
||||
"vertical" $vertical
|
||||
"width" $width
|
||||
)
|
||||
-}}
|
||||
{{- else -}}
|
||||
{{- $partial = "assets/list.html" -}}
|
||||
{{- $params = merge $params (dict
|
||||
"layout" $layout
|
||||
)
|
||||
-}}
|
||||
{{- end -}}
|
||||
{{- partial $partial $params -}}
|
||||
</div>
|
||||
</div>
|
||||
{{- end -}}
|
@@ -1,58 +0,0 @@
|
||||
{{- $page := .page }}
|
||||
{{- $section := .section }}
|
||||
{{- if not $section }}{{ errorf "Missing value for param 'section'" }}{{ end -}}
|
||||
{{- $bundle := site.GetPage $section -}}
|
||||
|
||||
{{- $title := $bundle.Title -}}
|
||||
{{- $sort := "date" -}}
|
||||
{{- $order := "desc" -}}
|
||||
{{- $style := "" -}}
|
||||
{{- $background := "" -}}
|
||||
{{- $color := "" -}}
|
||||
{{- $layout := "tabs" -}}
|
||||
|
||||
{{- with (index site.Params $section) -}}
|
||||
{{- with index . "title" }}{{ $title = . }}{{ end -}}
|
||||
{{- with index . "sort" }}{{ $sort = . }}{{ end -}}
|
||||
{{- if (index . "reverse") }}{{ $order = "desc" }}{{ else }}{{ $order = "asc" }}{{ end -}}
|
||||
{{- with index . "style" }}{{ $style = . }}{{ end -}}
|
||||
{{- with index . "background" }}{{ $background = . }}{{ end -}}
|
||||
{{- with index . "color" }}{{ $color = . }}{{ end -}}
|
||||
{{- with index . "layout" }}{{ $layout = . }}{{ end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $list := $bundle.Resources.Match "*" -}}
|
||||
{{- $list = sort $list (printf "Params.%s" $sort) $order -}}
|
||||
|
||||
<div class="container-fluid {{ with $background }} bg-{{ . }}{{ end }}">
|
||||
<div class="container-xxl flex-fill p-0">
|
||||
{{ if eq $layout "tabs" }}
|
||||
<div class="p-0">
|
||||
{{ with $title }}<p class="display-4 pt-5{{ if and page.IsHome site.Params.home.centerHeadline }} text-center{{ end }}">{{ . }}</p>{{ end }}
|
||||
<div class="col-sm-12 col-md-10 col-lg-8 col-xl-6 mx-auto pt-5 pb-5">
|
||||
{{- partial "assets/nav.html" (dict
|
||||
"page" $page
|
||||
"list" $list
|
||||
"title" $title
|
||||
"class" $style
|
||||
"color" $color
|
||||
"layout" $layout
|
||||
)
|
||||
-}}
|
||||
</div>
|
||||
</div>
|
||||
{{- else -}}
|
||||
<div class=" p-0">
|
||||
{{- partial "assets/list.html" (dict
|
||||
"page" $page
|
||||
"list" $list
|
||||
"title" $title
|
||||
"class" $style
|
||||
"color" $color
|
||||
"layout" $layout
|
||||
)
|
||||
-}}
|
||||
</div>
|
||||
{{- end -}}
|
||||
</div>
|
||||
</div>
|
23
layouts/partials/assets/toc-dropdown.html
Normal file
23
layouts/partials/assets/toc-dropdown.html
Normal file
@@ -0,0 +1,23 @@
|
||||
{{ $items := len (findRE "<li.*?>(.|\n)*?</li>" .TableOfContents) -}}
|
||||
{{ if (gt $items 1) -}}
|
||||
<div class="d-grid gap-2 mx-auto">
|
||||
{{ partial "assets/button.html" (dict
|
||||
"title" (T "toc")
|
||||
"color" "secondary"
|
||||
"outline" "true"
|
||||
"class" "toc-button"
|
||||
"icon" "fas sort"
|
||||
"justify" "between"
|
||||
"collapse" "toc-collapse"
|
||||
"order" "last")
|
||||
-}}
|
||||
</div>
|
||||
|
||||
<p>
|
||||
<div class="collapse border bg-body-tertiary rounded p-1 navbar-nav-scroll" id="toc-collapse">
|
||||
<div class="toc toc-panel text-body-secondary p-2">
|
||||
<small>{{ .TableOfContents }}</small>
|
||||
</div>
|
||||
</div>
|
||||
</p>
|
||||
{{ end -}}
|
@@ -1,6 +1,6 @@
|
||||
{{ $items := len (findRE "<li.*?>(.|\n)*?</li>" .TableOfContents) -}}
|
||||
{{ if (gt $items 1) -}}
|
||||
<div class="toc mb-5 my-md-0 ps-xl-3 mb-lg-5 p-3 text-body-secondary sticky-top">
|
||||
<div class="toc toc-sidebar mb-5 my-md-0 ps-xl-3 mb-lg-5 p-3 text-body-secondary sticky-top">
|
||||
<strong class="d-block h6 my-2 pb-2 border-bottom">{{ T "toc" }}</strong>
|
||||
{{ .TableOfContents }}
|
||||
</div>
|
||||
|
@@ -1,105 +0,0 @@
|
||||
<!--
|
||||
Displays a button. The shortcode supports the following arguments:
|
||||
"title" Required title of the button.
|
||||
"href" Optional address for the button or hyperlink.
|
||||
"id" Optional id of the button, to be used in the DOM.
|
||||
"state" Optional state of the button, either "enabled" (default), "disabled", "active", or "inactive".
|
||||
"size" Optional size of the button, either "sm", "md" (default), or "lg".
|
||||
"color" Optional theme color of the element, either "primary" (default), "secondary", "success",
|
||||
"danger", "warning", "info", "light", "dark", "white", or "black".
|
||||
"outline" Optional flag indicating the button should be outlined, either "false" (default) or "true".
|
||||
"badge" Optional positioned badge to display on top of the button.
|
||||
"aria-label" Optional assistive label for the badge.
|
||||
"tooltip" Optional text to display in a tooltip. Cannot be used together with collapse. Ignored for active/
|
||||
inactive buttons.
|
||||
"collapse" Optional panel to collapse. Cannot be used together with tooltip. Ignored for active/inactive buttons.
|
||||
"type" Optional type of the element, either "link" or "button" (default).
|
||||
"placement" Optional position of the tooltip: "top" (default), "bottom", "left", or "right".
|
||||
-->
|
||||
|
||||
{{ $title := trim .title " \r\n" -}}
|
||||
{{ if not $title -}}
|
||||
{{ errorf "Missing element title" -}}
|
||||
{{ end -}}
|
||||
|
||||
{{ $id := .id }}
|
||||
|
||||
{{ $state := "enabled" -}}
|
||||
{{ with .state }}{{ $state = . }}{{ end -}}
|
||||
{{ $supportedStates := slice "enabled" "disabled" "active" "inactive" -}}
|
||||
{{ if not (in $supportedStates $state) -}}
|
||||
{{ errorf "Invalid value for param 'state': %s" $state -}}
|
||||
{{ end -}}
|
||||
|
||||
{{ $size := "md" -}}
|
||||
{{ with .size }}{{ $size = . }}{{ end -}}
|
||||
{{ $supportedSizes := slice "sm" "md" "lg" -}}
|
||||
{{ if not (in $supportedSizes $size) -}}
|
||||
{{ errorf "Invalid value for param 'size': %s" $size -}}
|
||||
{{ end -}}
|
||||
|
||||
{{ $color := "primary" -}}
|
||||
{{ with .color }}{{ $color = . }}{{ end -}}
|
||||
{{ $supportedColors := slice "primary" "secondary" "success" "danger" "warning" "info" "light" "dark" "white" "black" -}}
|
||||
{{ if not (in $supportedColors $color) -}}
|
||||
{{ errorf "Invalid value for param 'color': %s" $color -}}
|
||||
{{ end -}}
|
||||
|
||||
{{ $outline := false -}}
|
||||
{{ with .outline }}{{ $outline = . }}{{ end -}}
|
||||
|
||||
{{ $badge := "" -}}
|
||||
{{ with .badge }}{{ $badge = . }}{{ end -}}
|
||||
|
||||
{{ $label := "" -}}
|
||||
{{ with .label }}{{ $label = . }}{{ end -}}
|
||||
|
||||
{{ $tooltip := "" -}}
|
||||
{{ if not (strings.HasSuffix $state "active") -}}
|
||||
{{ with .tooltip }}{{ $tooltip = . }}{{ end -}}
|
||||
{{ end -}}
|
||||
|
||||
{{ $href := .href -}}
|
||||
|
||||
{{ $collapse := "" -}}
|
||||
{{ if not (strings.HasSuffix $state "active") -}}
|
||||
{{ with .collapse }}{{ $collapse = . }}{{ $href = printf "#%s" . }}{{ end -}}
|
||||
{{ end -}}
|
||||
|
||||
{{ if $tooltip -}}
|
||||
{{ if $collapse -}}
|
||||
{{ errorf "Cannot use tooltip and collapse at the same time" -}}
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
|
||||
{{ $type := "button" -}}
|
||||
{{ with .type }}{{ $type = . }}{{ end -}}
|
||||
{{ $supportedTypes := slice "button" "link" -}}
|
||||
{{ if not (in $supportedTypes $type) -}}
|
||||
{{ errorf "Invalid value for param 'type': %s" $type -}}
|
||||
{{ end -}}
|
||||
|
||||
{{ $placement := "top" -}}
|
||||
{{ with .placement }}{{ $placement = . }}{{ end -}}
|
||||
{{ $supportedPlacements := slice "top" "bottom" "left" "right" -}}
|
||||
{{ if not (in $supportedPlacements $placement) -}}
|
||||
{{ errorf "Invalid value for param 'placement': %s" $placement -}}
|
||||
{{ end -}}
|
||||
|
||||
<a {{ if ne $state "disabled" }}{{ with $href }}href="{{ . }}"{{ end }}{{ end }}
|
||||
{{ with $id }}id="{{ . }}"{{ end }}
|
||||
{{ if eq $type "button" }}class="btn btn-{{ if $outline }}outline-{{ end }}{{ $color }} {{ if ne $size "md"}}btn-{{ $size }}{{ end }} position-relative {{ if in (slice "disabled" "active") $state }}{{ $state }}{{ end }}" role="button" {{ if eq $state "disabled" }}aria-disabled="true"{{ end }}
|
||||
{{ else }}class="link-{{ $color }} position-relative"{{ end }}
|
||||
{{ with $tooltip }}data-bs-toggle="tooltip" data-bs-title="{{ . }}" data-bs-placement="{{ $placement }}"{{ end }}
|
||||
{{ with $collapse }}data-bs-toggle="collapse" aria-expanded="false" aria-controls="{{ . }}"{{ end }}
|
||||
{{ if eq $state "active" }}data-bs-toggle="button" aria-pressed="true"{{ end }}
|
||||
{{ if eq $state "inactive" }}data-bs-toggle="button" aria-pressed="false"{{ end }}
|
||||
>
|
||||
{{ $title -}}
|
||||
{{ with $badge }}
|
||||
<span class="position-absolute top-0 start-100 translate-middle badge rounded-pill bg-danger">
|
||||
{{ . }}
|
||||
{{ with $label }}<span class="visually-hidden">{{ . }}</span>{{ end }}
|
||||
</span>
|
||||
{{ end }}
|
||||
</a>
|
@@ -1,6 +1,7 @@
|
||||
{{ $filename := .filename | default "js/main.bundle.js" -}}
|
||||
{{ $match := .match | default "{js/*.js,js/vendor/**.js}" }}
|
||||
{{ $page := .page }}
|
||||
{{ $header := .header }}
|
||||
|
||||
{{ $files := slice -}}
|
||||
{{ range $index, $file := resources.Match $match -}}
|
||||
@@ -11,6 +12,13 @@
|
||||
{{ $bundle := $files | resources.Concat $filename -}}
|
||||
{{ $js := $bundle | resources.ExecuteAsTemplate $filename $page -}}
|
||||
|
||||
{{- if and (not site.IsServer) $header -}}
|
||||
{{- $pc := site.Config.Privacy.GoogleAnalytics -}}
|
||||
{{- if and (not $pc.Disable) (hasPrefix site.GoogleAnalytics "G-") }}
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id={{ site.GoogleAnalytics }}"></script>
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
|
||||
{{- if not hugo.IsProduction -}}
|
||||
<script src="{{ $js.RelPermalink }}"></script>
|
||||
{{ else -}}
|
||||
|
@@ -7,7 +7,7 @@
|
||||
</div>
|
||||
<div class="col text-sm-start text-center col-sm-6 col-md-4">
|
||||
{{ range .Site.Menus.social -}}
|
||||
<a href="{{ .URL | relURL }}" target="_blank" rel="noopener" aria-label="{{ .Name | safeHTML }}" class="text-decoration-none link-secondary d-inline p-2">
|
||||
<a href="{{ .URL | relLangURL }}" target="_blank" rel="noopener noreferrer" aria-label="{{ .Name | safeHTML }}" class="text-decoration-none link-secondary d-inline p-2">
|
||||
{{ .Pre | safeHTML }}
|
||||
</a>
|
||||
{{ end -}}
|
||||
|
@@ -30,7 +30,7 @@
|
||||
{{- end -}}
|
||||
|
||||
{{- if not hugo.IsProduction -}}
|
||||
<link rel="stylesheet" href="{{ $css.Permalink | relURL }}">
|
||||
<link rel="stylesheet" href="{{ $css.Permalink | relLangURL }}">
|
||||
{{- else -}}
|
||||
{{- $css = $css | fingerprint | resources.PostProcess -}}
|
||||
<link rel="stylesheet" href="{{ $css.Permalink }}" integrity="{{ $css.Data.Integrity }}" crossorigin="anonymous">
|
||||
|
@@ -1,7 +1,7 @@
|
||||
<!-- Copied from doks -->
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:site" content="{{ .Site.Params.twitterSite }}">
|
||||
<meta name="twitter:creator" content="{{ .Site.Params.twitterCreator }}">
|
||||
{{ with .Site.Params.twitterSite }}<meta name="twitter:site" content="{{ . }}">{{ end }}
|
||||
{{ with .Site.Params.twitterCreator }}<meta name="twitter:creator" content="{{ . }}">{{ end }}
|
||||
<meta name="twitter:title" content="{{ $.Scratch.Get "title" }}">
|
||||
<meta name="twitter:description" content="{{ $.Scratch.Get "description" }}">
|
||||
<meta name="twitter:image" content="{{ $.Scratch.Get "thumbnail" }}">
|
||||
|
@@ -11,7 +11,7 @@
|
||||
</div>
|
||||
<div class="col col-sm-6 col-md-4">
|
||||
{{ if .Site.Params.home.featurePhoto }}
|
||||
{{- partial "image.html" (dict "url" .Site.Params.home.featurePhoto "ratio" "4x3" "outerClass" "img-wrap" "innerClass" "rounded" "title" .Site.Title) -}}
|
||||
{{- partial "assets/image.html" (dict "url" .Site.Params.home.featurePhoto "ratio" "4x3" "outerClass" "img-wrap" "innerClass" "rounded" "title" .Site.Title) -}}
|
||||
{{ end }}
|
||||
</div>
|
||||
<div class="col col-md-2 d-none d-md-block"></div>
|
||||
|
@@ -1 +1,6 @@
|
||||
{{ return index .Site.Data .Section }}
|
||||
{{- $menu := "" -}}
|
||||
{{- if .IsPage -}}
|
||||
{{- $menu = index .Site.Data .Section -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- return $menu -}}
|
@@ -1,5 +1,5 @@
|
||||
{{ $lastmodstr := (partial "utilities/date.html" (dict "date" .Lastmod "format" "long")) -}}
|
||||
Last updated: {{ $lastmodstr }}
|
||||
{{ with .GitInfo }}
|
||||
• <a href="{{ site.Params.schema.gitHub }}/commit/{{ .Hash }}">{{ .Subject }} ({{ .AbbreviatedHash }})</a>
|
||||
• <a href="{{ site.Params.docs.github | default site.Params.schema.github }}/commit/{{ .Hash }}">{{ .Subject }} ({{ .AbbreviatedHash }})</a>
|
||||
{{ end -}}
|
@@ -11,7 +11,7 @@
|
||||
{{ if .Parent }}
|
||||
{{ errorf "Missing value for param 'header': %s" .Parent.Position -}}
|
||||
{{ else }}
|
||||
{{ errorf "Missing value for param 'header': %s" .Position -}}
|
||||
{{ errorf "Missing value for param 'header': %s" .Position -}}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
|
||||
|
@@ -15,5 +15,5 @@
|
||||
{{- end -}}
|
||||
|
||||
{{- if not $error -}}
|
||||
{{- partial "breadcrumb.html" $page -}}
|
||||
{{- partial "assets/breadcrumb.html" $page -}}
|
||||
{{- end -}}
|
@@ -78,5 +78,19 @@
|
||||
{{ end -}}
|
||||
|
||||
{{ if not $error }}
|
||||
{{- partial "button.html" (dict "type" $type "title" $title "size" $size "color" $color "outline" $outline "badge" $badge "label" $label "tooltip" $tooltip "collapse" $collapse "href" $href "id" $id "state" $state "placement" $placement) -}}
|
||||
{{- partial "assets/button.html" (dict
|
||||
"type" $type
|
||||
"title" $title
|
||||
"size" $size
|
||||
"color" $color
|
||||
"outline" $outline
|
||||
"badge" $badge
|
||||
"label" $label
|
||||
"tooltip" $tooltip
|
||||
"collapse" $collapse
|
||||
"href" $href
|
||||
"id" $id
|
||||
"state" $state
|
||||
"placement" $placement)
|
||||
-}}
|
||||
{{ end }}
|
||||
|
@@ -35,7 +35,7 @@
|
||||
{{ errorf "Invalid value for param 'mode': %s" $modeParam -}}
|
||||
{{ end -}}
|
||||
|
||||
{{- partial "image.html" (dict
|
||||
{{- partial "assets/image.html" (dict
|
||||
"url" $url
|
||||
"ratio" $ratio
|
||||
"innerClass" $class
|
||||
|
@@ -18,7 +18,7 @@
|
||||
|
||||
{{- if $src -}}
|
||||
<div class="carousel-item {{ if eq .Ordinal 0 }}active{{ end }}">
|
||||
{{ partial "image.html" (dict "url" $src "ratio" $ratio "innerClass" "d-block w-100") }}
|
||||
{{ partial "assets/image.html" (dict "url" $src "ratio" $ratio "innerClass" "d-block w-100") }}
|
||||
<div class="carousel-caption gradient"></div>
|
||||
{{ with $caption }}
|
||||
<div class="carousel-caption d-none d-md-block">
|
||||
|
@@ -3,8 +3,8 @@
|
||||
"path" Required path of the page.
|
||||
"class" Optional class attribute of the card element, e.g. “w-50”.
|
||||
"color": Optional theme color of the card, either "primary", "secondary", "success", "danger",
|
||||
"warning", "info", "light", "dark", "white", "black", or "body-tertiary". By default, no color
|
||||
is specified.
|
||||
"warning", "info", "light", "dark", "white", "black", "body", or "body-tertiary". By default, no
|
||||
color is specified.
|
||||
-->
|
||||
|
||||
{{- $error := false -}}
|
||||
@@ -21,7 +21,7 @@
|
||||
{{- $color := "" -}}
|
||||
{{- with .Get "color" }}{{ $color = . }}{{ end -}}
|
||||
{{- if $color -}}
|
||||
{{- $supportedColors := slice "primary" "secondary" "success" "danger" "warning" "info" "light" "dark" "white" "black" "body-tertiary" -}}
|
||||
{{- $supportedColors := slice "primary" "secondary" "success" "danger" "warning" "info" "light" "dark" "white" "black" "body" "body-tertiary" -}}
|
||||
{{- if not (in $supportedColors $color) -}}
|
||||
{{- errorf "Invalid value for param 'color': %s" .Position -}}
|
||||
{{- $error = true -}}
|
||||
|
@@ -1,9 +1,21 @@
|
||||
{{ $input := .Inner | markdownify }}
|
||||
{{ $input = replace $input "style=\"text-align:left\"" "class=\"text-start\"" }}
|
||||
{{ $input = replace $input "style=\"text-align:center\"" "class=\"text-center\"" }}
|
||||
{{ $input = replace $input "style=\"text-align:right\"" "class=\"text-end\"" }}
|
||||
{{ $class := .Get 0 | default "" }}
|
||||
{{ $old := "<table>" }}
|
||||
{{ $new := printf "<table class=\"table %s\">" $class }}
|
||||
{{ $input := replace $input $old $new }}
|
||||
{{ $input | safeHTML }}
|
||||
{{- $responsiveVals := slice "table-responsive" "table-responsive-none" "table-responsive-sm" "table-responsive-md" "table-responsive-lg" "table-responsive-xl" "table-responsive-xxl" -}}
|
||||
{{- $responsive := intersect .Params $responsiveVals -}}
|
||||
{{- $main := complement $responsive .Params -}}
|
||||
|
||||
{{- if in $responsive "table-responsive-none" -}}
|
||||
{{- $responsive = "" -}}
|
||||
{{- else if not $responsive -}}
|
||||
{{ $responsive = (slice "table-responsive") -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $input := .Inner | markdownify }}
|
||||
{{- $input = replace $input "style=\"text-align:left\"" "class=\"text-start\"" -}}
|
||||
{{- $input = replace $input "style=\"text-align:center\"" "class=\"text-center\"" -}}
|
||||
{{- $input = replace $input "style=\"text-align:right\"" "class=\"text-end\"" -}}
|
||||
{{- $class := delimit $main " " -}}
|
||||
{{- $old := "<table>" -}}
|
||||
{{- $new := printf "<table class=\"table %s\">" $class -}}
|
||||
{{ $input := replace $input $old $new -}}
|
||||
{{- with $responsive }}<div class="{{ delimit . " " }}">{{ end -}}
|
||||
{{ $input | safeHTML }}
|
||||
{{- with $responsive }}</div>{{ end -}}
|
@@ -41,5 +41,5 @@
|
||||
{{ end -}}
|
||||
|
||||
{{ if not $error }}
|
||||
{{- partial "button.html" (dict "type" $type "title" $title "color" $color "tooltip" $tooltip "href" $href "placement" $placement) -}}
|
||||
<div class="d-inline-flex">{{- partial "assets/button.html" (dict "type" $type "title" $title "color" $color "tooltip" $tooltip "href" $href "placement" $placement) -}}</div>
|
||||
{{ end }}
|
@@ -1,9 +1,9 @@
|
||||
{{ define "main" }}
|
||||
<div class="container-fluid">
|
||||
<div class="row row-cols-1 row-cols-sm-3 align-items-center p-3">
|
||||
<div class="container-xxl px-3 px-xxl-0">
|
||||
<div class="row row-cols-1 row-cols-sm-3">
|
||||
<div class="col col-md-2 d-none d-md-block"></div>
|
||||
<div class="col col-sm-12 col-md-8">
|
||||
<p class="display-4">{{ .Name | humanize }}</p>
|
||||
<p class="display-4 mt-5">{{ .Name | humanize }}</p>
|
||||
|
||||
{{ if eq .Kind "taxonomy" }}
|
||||
<div class="row mt-5"></div>
|
||||
@@ -13,7 +13,7 @@
|
||||
{{ .Count }} {{ if gt .Count 1 }} {{ T "articles" }} {{ else }} {{ T "article" }} {{ end }}
|
||||
</div>
|
||||
<div class="col">
|
||||
<a href="{{ (path.Join .Page.RelPermalink) | relURL }}">{{ .Name | markdownify }}</a>
|
||||
<a href="{{ (path.Join .Page.RelPermalink) | relLangURL }}">{{ .Name | markdownify }}</a>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
@@ -32,7 +32,7 @@
|
||||
<p class="text-body-secondary mt-5">{{ $year }}</p>
|
||||
{{ $.Scratch.Set "lastYear" $year }}
|
||||
{{ end }}
|
||||
<a href="{{ .Permalink | relURL }}">{{ if .Draft }}{{ T "draft" | upper }}: {{end}}{{ .Title | markdownify }}</a>
|
||||
<a href="{{ (path.Join .Page.RelPermalink) | relLangURL }}">{{ if .Draft }}{{ T "draft" | upper }}: {{end}}{{ .Title | markdownify }}</a>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
15
netlify.toml
15
netlify.toml
@@ -24,15 +24,20 @@
|
||||
X-XSS-Protection = "1; mode=block"
|
||||
Content-Security-Policy = """\
|
||||
default-src 'self'; \
|
||||
child-src 'self' app.netlify.com; \
|
||||
script-src 'self' \
|
||||
https://utteranc.es/client.js; \
|
||||
style-src 'self' https://utteranc.es https://fonts.googleapis.com https://www.youtube.com; \
|
||||
app.netlify.com netlify-cdp-loader.netlify.app \
|
||||
https://utteranc.es/client.js https://*.google-analytics.com https://*.googletagmanager.com; \
|
||||
style-src 'self' \
|
||||
netlify.app https://utteranc.es https://fonts.googleapis.com https://www.youtube.com; \
|
||||
object-src 'none'; \
|
||||
base-uri 'self'; \
|
||||
connect-src 'self'; \
|
||||
connect-src 'self'
|
||||
https://*.google-analytics.com https://*.analytics.google.com https://*.googletagmanager.com; \
|
||||
font-src 'self' https://fonts.gstatic.com; \
|
||||
frame-src 'self' https://utteranc.es https://www.youtube-nocookie.com https://www.youtube.com; \
|
||||
img-src 'self' https://i.vimeocdn.com https://i.ytimg.com; \
|
||||
frame-src 'self' https://utteranc.es https://www.youtube-nocookie.com https://www.youtube.com \
|
||||
app.netlify.com; \
|
||||
img-src 'self' https://i.vimeocdn.com https://i.ytimg.com https://*.google-analytics.com https://*.googletagmanager.com; \
|
||||
manifest-src 'self'; \
|
||||
media-src 'self' \
|
||||
"""
|
||||
|
450
package-lock.json
generated
450
package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@gethinode/hinode",
|
||||
"version": "0.12.0-alpha3",
|
||||
"version": "0.13.1",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@gethinode/hinode",
|
||||
"version": "0.12.0-alpha3",
|
||||
"version": "0.13.1",
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"@fortawesome/fontawesome-free": "^6.4.0",
|
||||
@@ -15,7 +15,7 @@
|
||||
"bootstrap": "^5.3.0-alpha3",
|
||||
"cssnano": "^6.0.0",
|
||||
"cssnano-preset-advanced": "^6.0.0",
|
||||
"eslint": "^8.37.0",
|
||||
"eslint": "^8.39.0",
|
||||
"eslint-config-standard": "^17.0.0",
|
||||
"eslint-plugin-import": "^2.27.5",
|
||||
"eslint-plugin-n": "^15.7.0",
|
||||
@@ -27,8 +27,8 @@
|
||||
"purgecss-whitelister": "^2.4.0",
|
||||
"rimraf": "^5.0.0",
|
||||
"shx": "^0.3.4",
|
||||
"stylelint": "^15.4.0",
|
||||
"stylelint-config-standard-scss": "^8.0.0"
|
||||
"stylelint": "^15.6.0",
|
||||
"stylelint-config-standard-scss": "^9.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/code-frame": {
|
||||
@@ -224,14 +224,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@eslint/eslintrc": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz",
|
||||
"integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==",
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz",
|
||||
"integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"ajv": "^6.12.4",
|
||||
"debug": "^4.3.2",
|
||||
"espree": "^9.5.1",
|
||||
"espree": "^9.5.2",
|
||||
"globals": "^13.19.0",
|
||||
"ignore": "^5.2.0",
|
||||
"import-fresh": "^3.2.1",
|
||||
@@ -247,9 +247,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@eslint/js": {
|
||||
"version": "8.38.0",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.38.0.tgz",
|
||||
"integrity": "sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g==",
|
||||
"version": "8.40.0",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.40.0.tgz",
|
||||
"integrity": "sha512-ElyB54bJIhXQYVKjDSvCkPO1iU1tSAeVQJbllWJq1XQSmmA4dgFk8CbiBGpiOPxleE48vDogxCtmMYku4HSVLA==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
@@ -1553,12 +1553,12 @@
|
||||
}
|
||||
},
|
||||
"node_modules/cssnano": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.0.0.tgz",
|
||||
"integrity": "sha512-RGlcbzGhzEBCHuQe3k+Udyj5M00z0pm9S+VurHXFEOXxH+y0sVrJH2sMzoyz2d8N1EScazg+DVvmgyx0lurwwA==",
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.0.1.tgz",
|
||||
"integrity": "sha512-fVO1JdJ0LSdIGJq68eIxOqFpIJrZqXUsBt8fkrBcztCQqAjQD51OhZp7tc0ImcbwXD4k7ny84QTV90nZhmqbkg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"cssnano-preset-default": "^6.0.0",
|
||||
"cssnano-preset-default": "^6.0.1",
|
||||
"lilconfig": "^2.1.0"
|
||||
},
|
||||
"engines": {
|
||||
@@ -1573,16 +1573,16 @@
|
||||
}
|
||||
},
|
||||
"node_modules/cssnano-preset-advanced": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-6.0.0.tgz",
|
||||
"integrity": "sha512-OasX46ANVy93yaMVgxGk1PoPzrzrgXxX6C8b3Pr6LE3oVyCsyh1Oywm7xxSkZfbGzNp6M/+4OmzP5xtAf21IMw==",
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-6.0.1.tgz",
|
||||
"integrity": "sha512-z50X9tDqiZx0Cv+vi3/IRe+5ca1lLLvoG67PjwWdC6gXNqc7JXbU/hWEfYQg+e9/8cq+fVKhyLHO8n3mV7mxDw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"autoprefixer": "^10.4.12",
|
||||
"cssnano-preset-default": "^6.0.0",
|
||||
"cssnano-preset-default": "^6.0.1",
|
||||
"postcss-discard-unused": "^6.0.0",
|
||||
"postcss-merge-idents": "^6.0.0",
|
||||
"postcss-reduce-idents": "^6.0.0",
|
||||
"postcss-reduce-idents": "^6.0.1",
|
||||
"postcss-zindex": "^6.0.0"
|
||||
},
|
||||
"engines": {
|
||||
@@ -1593,14 +1593,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/cssnano-preset-default": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.0.0.tgz",
|
||||
"integrity": "sha512-BDxlaFzObRDXUiCCBQUNQcI+f1/aX2mgoNtXGjV6PG64POcHoDUoX+LgMWw+Q4609QhxwkcSnS65YFs42RA6qQ==",
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.0.1.tgz",
|
||||
"integrity": "sha512-7VzyFZ5zEB1+l1nToKyrRkuaJIx0zi/1npjvZfbBwbtNTzhLtlvYraK/7/uqmX2Wb2aQtd983uuGw79jAjLSuQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"css-declaration-sorter": "^6.3.1",
|
||||
"cssnano-utils": "^4.0.0",
|
||||
"postcss-calc": "^8.2.3",
|
||||
"postcss-calc": "^9.0.0",
|
||||
"postcss-colormin": "^6.0.0",
|
||||
"postcss-convert-values": "^6.0.0",
|
||||
"postcss-discard-comments": "^6.0.0",
|
||||
@@ -1608,7 +1608,7 @@
|
||||
"postcss-discard-empty": "^6.0.0",
|
||||
"postcss-discard-overridden": "^6.0.0",
|
||||
"postcss-merge-longhand": "^6.0.0",
|
||||
"postcss-merge-rules": "^6.0.0",
|
||||
"postcss-merge-rules": "^6.0.1",
|
||||
"postcss-minify-font-values": "^6.0.0",
|
||||
"postcss-minify-gradients": "^6.0.0",
|
||||
"postcss-minify-params": "^6.0.0",
|
||||
@@ -2100,15 +2100,15 @@
|
||||
}
|
||||
},
|
||||
"node_modules/eslint": {
|
||||
"version": "8.38.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.38.0.tgz",
|
||||
"integrity": "sha512-pIdsD2jwlUGf/U38Jv97t8lq6HpaU/G9NKbYmpWpZGw3LdTNhZLbJePqxOXGB5+JEKfOPU/XLxYxFh03nr1KTg==",
|
||||
"version": "8.40.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.40.0.tgz",
|
||||
"integrity": "sha512-bvR+TsP9EHL3TqNtj9sCNJVAFK3fBN8Q7g5waghxyRsPLIMwL73XSKnZFK0hk/O2ANC+iAoq6PWMQ+IfBAJIiQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@eslint-community/eslint-utils": "^4.2.0",
|
||||
"@eslint-community/regexpp": "^4.4.0",
|
||||
"@eslint/eslintrc": "^2.0.2",
|
||||
"@eslint/js": "8.38.0",
|
||||
"@eslint/eslintrc": "^2.0.3",
|
||||
"@eslint/js": "8.40.0",
|
||||
"@humanwhocodes/config-array": "^0.11.8",
|
||||
"@humanwhocodes/module-importer": "^1.0.1",
|
||||
"@nodelib/fs.walk": "^1.2.8",
|
||||
@@ -2118,9 +2118,9 @@
|
||||
"debug": "^4.3.2",
|
||||
"doctrine": "^3.0.0",
|
||||
"escape-string-regexp": "^4.0.0",
|
||||
"eslint-scope": "^7.1.1",
|
||||
"eslint-visitor-keys": "^3.4.0",
|
||||
"espree": "^9.5.1",
|
||||
"eslint-scope": "^7.2.0",
|
||||
"eslint-visitor-keys": "^3.4.1",
|
||||
"espree": "^9.5.2",
|
||||
"esquery": "^1.4.2",
|
||||
"esutils": "^2.0.2",
|
||||
"fast-deep-equal": "^3.1.3",
|
||||
@@ -2368,9 +2368,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/eslint-scope": {
|
||||
"version": "7.1.1",
|
||||
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
|
||||
"integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==",
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz",
|
||||
"integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"esrecurse": "^4.3.0",
|
||||
@@ -2378,6 +2378,9 @@
|
||||
},
|
||||
"engines": {
|
||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://opencollective.com/eslint"
|
||||
}
|
||||
},
|
||||
"node_modules/eslint-utils": {
|
||||
@@ -2408,9 +2411,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/eslint-visitor-keys": {
|
||||
"version": "3.4.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz",
|
||||
"integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==",
|
||||
"version": "3.4.1",
|
||||
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz",
|
||||
"integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
@@ -2420,14 +2423,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/espree": {
|
||||
"version": "9.5.1",
|
||||
"resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz",
|
||||
"integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==",
|
||||
"version": "9.5.2",
|
||||
"resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz",
|
||||
"integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"acorn": "^8.8.0",
|
||||
"acorn-jsx": "^5.3.2",
|
||||
"eslint-visitor-keys": "^3.4.0"
|
||||
"eslint-visitor-keys": "^3.4.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
@@ -4068,9 +4071,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/markdownlint": {
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.28.1.tgz",
|
||||
"integrity": "sha512-8At2DbgGKT/RVBinkqIPqLETopPXyQFGWSiTCJSr9Y6wVVyY70cDJ9dw3FXePn4AkytIUclgrsgI6KVeqeHFoA==",
|
||||
"version": "0.28.2",
|
||||
"resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.28.2.tgz",
|
||||
"integrity": "sha512-yYaQXoKKPV1zgrFsyAuZPEQoe+JrY9GDag9ObKpk09twx4OCU5lut+0/kZPrQ3W7w82SmgKhd7D8m34aG1unVw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"markdown-it": "13.0.1",
|
||||
@@ -4081,17 +4084,17 @@
|
||||
}
|
||||
},
|
||||
"node_modules/markdownlint-cli2": {
|
||||
"version": "0.7.0",
|
||||
"resolved": "https://registry.npmjs.org/markdownlint-cli2/-/markdownlint-cli2-0.7.0.tgz",
|
||||
"integrity": "sha512-67r1t9ep+z0fa6g9TgL3tiPQeWo297ip165Et2u54UquJAkXWnq6e+dXFBjSPft/iLaGJfU0fUHXhXueqNUkGQ==",
|
||||
"version": "0.7.1",
|
||||
"resolved": "https://registry.npmjs.org/markdownlint-cli2/-/markdownlint-cli2-0.7.1.tgz",
|
||||
"integrity": "sha512-N58lw50Ws0WOfCc07B9dPKMnPMbIj6ZCMlszZLVfxBwKN/M+WZqXLdOHyRL2BWCZ3APBxQN9qDEw7Vf1PRqFkg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"globby": "13.1.4",
|
||||
"markdownlint": "0.28.1",
|
||||
"markdownlint": "0.28.2",
|
||||
"markdownlint-cli2-formatter-default": "0.0.4",
|
||||
"micromatch": "4.0.5",
|
||||
"strip-json-comments": "5.0.0",
|
||||
"yaml": "2.2.1"
|
||||
"yaml": "2.2.2"
|
||||
},
|
||||
"bin": {
|
||||
"markdownlint-cli2": "markdownlint-cli2.js",
|
||||
@@ -4307,10 +4310,16 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/nanoid": {
|
||||
"version": "3.3.4",
|
||||
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
|
||||
"integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
|
||||
"version": "3.3.6",
|
||||
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
|
||||
"integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/ai"
|
||||
}
|
||||
],
|
||||
"bin": {
|
||||
"nanoid": "bin/nanoid.cjs"
|
||||
},
|
||||
@@ -4848,9 +4857,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/postcss": {
|
||||
"version": "8.4.21",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz",
|
||||
"integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==",
|
||||
"version": "8.4.23",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz",
|
||||
"integrity": "sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
@@ -4860,10 +4869,14 @@
|
||||
{
|
||||
"type": "tidelift",
|
||||
"url": "https://tidelift.com/funding/github/npm/postcss"
|
||||
},
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/ai"
|
||||
}
|
||||
],
|
||||
"dependencies": {
|
||||
"nanoid": "^3.3.4",
|
||||
"nanoid": "^3.3.6",
|
||||
"picocolors": "^1.0.0",
|
||||
"source-map-js": "^1.0.2"
|
||||
},
|
||||
@@ -4872,14 +4885,17 @@
|
||||
}
|
||||
},
|
||||
"node_modules/postcss-calc": {
|
||||
"version": "8.2.4",
|
||||
"resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz",
|
||||
"integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==",
|
||||
"version": "9.0.0",
|
||||
"resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.0.tgz",
|
||||
"integrity": "sha512-B9BNW/SVh4SMJfoCQ6D9h1Wo7Yjqks7UdbiARJ16J5TIsQn5NEqwMF5joSgOYb26oJPUR5Uv3fCQ/4PvmZWeJQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"postcss-selector-parser": "^6.0.9",
|
||||
"postcss-selector-parser": "^6.0.11",
|
||||
"postcss-value-parser": "^4.2.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^14 || ^16 || >=18.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"postcss": "^8.2.2"
|
||||
}
|
||||
@@ -5090,9 +5106,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/postcss-merge-rules": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.0.0.tgz",
|
||||
"integrity": "sha512-rCXkklftzEkniyv3f4mRCQzxD6oE4Quyh61uyWTUbCJ26Pv2hoz+fivJSsSBWxDBeScR4fKCfF3HHTcD7Ybqnw==",
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.0.1.tgz",
|
||||
"integrity": "sha512-a4tlmJIQo9SCjcfiCcCMg/ZCEe0XTkl/xK0XHBs955GWg9xDX3NwP9pwZ78QUOWB8/0XCjZeJn98Dae0zg6AAw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"browserslist": "^4.21.4",
|
||||
@@ -5321,9 +5337,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/postcss-reduce-idents": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-6.0.0.tgz",
|
||||
"integrity": "sha512-Dw/+s0J3Ie+jXE4QKdgcf8mswuQ8/KaVzKmC925B1tCn6uW8iQ2T2CBKtPN5vAKnVsNMrMsREe/7gaIwi91hJw==",
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-6.0.1.tgz",
|
||||
"integrity": "sha512-KniPTynD5u69rLwcS6++OMBQg2TsH59Z8SX01rqs4LFhcU9A3IqjZ1ax41MiYfqCotseBmo01+hzO+Bqrcd1Og==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"postcss-value-parser": "^4.2.0"
|
||||
@@ -5431,9 +5447,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/postcss-selector-parser": {
|
||||
"version": "6.0.11",
|
||||
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz",
|
||||
"integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==",
|
||||
"version": "6.0.12",
|
||||
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.12.tgz",
|
||||
"integrity": "sha512-NdxGCAZdRrwVI1sy59+Wzrh+pMMHxapGnpfenDVlMEXoOcvt4pGE0JLK9YY2F5dLxcFYA/YbVQKhcGU+FtSYQg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"cssesc": "^3.0.0",
|
||||
@@ -6445,14 +6461,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/stylelint": {
|
||||
"version": "15.5.0",
|
||||
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.5.0.tgz",
|
||||
"integrity": "sha512-jyMO3R1QtE5mUS4v40+Gg+sIQBqe7CF1xPslxycDzNVkIBCUD4O+5F1vLPq16VmunUTv4qG9o2rUKLnU5KkVeQ==",
|
||||
"version": "15.6.1",
|
||||
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.6.1.tgz",
|
||||
"integrity": "sha512-d8icFBlVl93Elf3Z5ABQNOCe4nx69is3D/NZhDLAie1eyYnpxfeKe7pCfqzT5W4F8vxHCLSDfV8nKNJzogvV2Q==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@csstools/css-parser-algorithms": "^2.1.0",
|
||||
"@csstools/css-tokenizer": "^2.1.0",
|
||||
"@csstools/media-query-list-parser": "^2.0.2",
|
||||
"@csstools/css-parser-algorithms": "^2.1.1",
|
||||
"@csstools/css-tokenizer": "^2.1.1",
|
||||
"@csstools/media-query-list-parser": "^2.0.4",
|
||||
"@csstools/selector-specificity": "^2.2.0",
|
||||
"balanced-match": "^2.0.0",
|
||||
"colord": "^2.9.3",
|
||||
@@ -6477,11 +6493,11 @@
|
||||
"micromatch": "^4.0.5",
|
||||
"normalize-path": "^3.0.0",
|
||||
"picocolors": "^1.0.0",
|
||||
"postcss": "^8.4.21",
|
||||
"postcss": "^8.4.23",
|
||||
"postcss-media-query-parser": "^0.2.3",
|
||||
"postcss-resolve-nested-selector": "^0.1.1",
|
||||
"postcss-safe-parser": "^6.0.0",
|
||||
"postcss-selector-parser": "^6.0.11",
|
||||
"postcss-selector-parser": "^6.0.12",
|
||||
"postcss-value-parser": "^4.2.0",
|
||||
"resolve-from": "^5.0.0",
|
||||
"string-width": "^4.2.3",
|
||||
@@ -6491,7 +6507,7 @@
|
||||
"svg-tags": "^1.0.0",
|
||||
"table": "^6.8.1",
|
||||
"v8-compile-cache": "^2.3.0",
|
||||
"write-file-atomic": "^5.0.0"
|
||||
"write-file-atomic": "^5.0.1"
|
||||
},
|
||||
"bin": {
|
||||
"stylelint": "bin/stylelint.js"
|
||||
@@ -6505,27 +6521,27 @@
|
||||
}
|
||||
},
|
||||
"node_modules/stylelint-config-recommended": {
|
||||
"version": "11.0.0",
|
||||
"resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-11.0.0.tgz",
|
||||
"integrity": "sha512-SoGIHNI748OCZn6BxFYT83ytWoYETCINVHV3LKScVAWQQauWdvmdDqJC5YXWjpBbxg2E761Tg5aUGKLFOVhEkA==",
|
||||
"version": "12.0.0",
|
||||
"resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-12.0.0.tgz",
|
||||
"integrity": "sha512-x6x8QNARrGO2sG6iURkzqL+Dp+4bJorPMMRNPScdvaUK8PsynriOcMW7AFDKqkWAS5wbue/u8fUT/4ynzcmqdQ==",
|
||||
"dev": true,
|
||||
"peerDependencies": {
|
||||
"stylelint": "^15.3.0"
|
||||
"stylelint": "^15.5.0"
|
||||
}
|
||||
},
|
||||
"node_modules/stylelint-config-recommended-scss": {
|
||||
"version": "10.0.0",
|
||||
"resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-10.0.0.tgz",
|
||||
"integrity": "sha512-+YvPgUHi0W5mCJCKdupBCIsWPYNbWuJcRmFtSYujwNg+41ljFknhO9bpY6C+oahv659zW7W1AT7i6DQvJYYr1A==",
|
||||
"version": "11.0.0",
|
||||
"resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-11.0.0.tgz",
|
||||
"integrity": "sha512-EDghTDU7aOv2LTsRZvcT1w8mcjUaMhuy+t38iV5I/0Qiu6ixdkRwhLEMul3K/fnB2v9Nwqvb3xpvJfPH+HduDw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"postcss-scss": "^4.0.6",
|
||||
"stylelint-config-recommended": "^11.0.0",
|
||||
"stylelint-config-recommended": "^12.0.0",
|
||||
"stylelint-scss": "^4.6.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"postcss": "^8.3.3",
|
||||
"stylelint": "^15.3.0"
|
||||
"stylelint": "^15.5.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"postcss": {
|
||||
@@ -6534,29 +6550,29 @@
|
||||
}
|
||||
},
|
||||
"node_modules/stylelint-config-standard": {
|
||||
"version": "32.0.0",
|
||||
"resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-32.0.0.tgz",
|
||||
"integrity": "sha512-UnGJxYDyYFrIE9CjDMZRkrNh2o4lOtO+MVZ9qG5b8yARfsWho0GMx4YvhHfsv8zKKgHeWX2wfeyxmuoqcaYZ4w==",
|
||||
"version": "33.0.0",
|
||||
"resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-33.0.0.tgz",
|
||||
"integrity": "sha512-eyxnLWoXImUn77+ODIuW9qXBDNM+ALN68L3wT1lN2oNspZ7D9NVGlNHb2QCUn4xDug6VZLsh0tF8NyoYzkgTzg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"stylelint-config-recommended": "^11.0.0"
|
||||
"stylelint-config-recommended": "^12.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"stylelint": "^15.4.0"
|
||||
"stylelint": "^15.5.0"
|
||||
}
|
||||
},
|
||||
"node_modules/stylelint-config-standard-scss": {
|
||||
"version": "8.0.0",
|
||||
"resolved": "https://registry.npmjs.org/stylelint-config-standard-scss/-/stylelint-config-standard-scss-8.0.0.tgz",
|
||||
"integrity": "sha512-TDT/gJD/0LUDoUgkjF1uoI/4DfczXHxg7gJVcWT4/JbE6k5hszVuI14reNX+tEwSyMNhcK2BA7izrK+uVAz7XA==",
|
||||
"version": "9.0.0",
|
||||
"resolved": "https://registry.npmjs.org/stylelint-config-standard-scss/-/stylelint-config-standard-scss-9.0.0.tgz",
|
||||
"integrity": "sha512-yPKpJsrZn4ybuQZx/DkEHuCjw7pJginErE/47dFhCnrvD48IJ4UYec8tSiCuJWMA3HRjbIa3nh5ZeSauDGuVAg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"stylelint-config-recommended-scss": "^10.0.0",
|
||||
"stylelint-config-standard": "^32.0.0"
|
||||
"stylelint-config-recommended-scss": "^11.0.0",
|
||||
"stylelint-config-standard": "^33.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"postcss": "^8.3.3",
|
||||
"stylelint": "^15.4.0"
|
||||
"stylelint": "^15.5.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"postcss": {
|
||||
@@ -7028,18 +7044,30 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/write-file-atomic": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.0.tgz",
|
||||
"integrity": "sha512-R7NYMnHSlV42K54lwY9lvW6MnSm1HSJqZL3xiSgi9E7//FYaI74r2G0rd+/X6VAMkHEdzxQaU5HUOXWUz5kA/w==",
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz",
|
||||
"integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"imurmurhash": "^0.1.4",
|
||||
"signal-exit": "^3.0.7"
|
||||
"signal-exit": "^4.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/write-file-atomic/node_modules/signal-exit": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.1.tgz",
|
||||
"integrity": "sha512-uUWsN4aOxJAS8KOuf3QMyFtgm1pkb6I+KRZbRF/ghdf5T7sM+B1lLLzPDxswUjkmHyxQAVzEgG35E3NzDM9GVw==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=14"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/isaacs"
|
||||
}
|
||||
},
|
||||
"node_modules/xtend": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
|
||||
@@ -7065,9 +7093,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/yaml": {
|
||||
"version": "2.2.1",
|
||||
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz",
|
||||
"integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==",
|
||||
"version": "2.2.2",
|
||||
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz",
|
||||
"integrity": "sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">= 14"
|
||||
@@ -7260,14 +7288,14 @@
|
||||
"dev": true
|
||||
},
|
||||
"@eslint/eslintrc": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz",
|
||||
"integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==",
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz",
|
||||
"integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ajv": "^6.12.4",
|
||||
"debug": "^4.3.2",
|
||||
"espree": "^9.5.1",
|
||||
"espree": "^9.5.2",
|
||||
"globals": "^13.19.0",
|
||||
"ignore": "^5.2.0",
|
||||
"import-fresh": "^3.2.1",
|
||||
@@ -7277,9 +7305,9 @@
|
||||
}
|
||||
},
|
||||
"@eslint/js": {
|
||||
"version": "8.38.0",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.38.0.tgz",
|
||||
"integrity": "sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g==",
|
||||
"version": "8.40.0",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.40.0.tgz",
|
||||
"integrity": "sha512-ElyB54bJIhXQYVKjDSvCkPO1iU1tSAeVQJbllWJq1XQSmmA4dgFk8CbiBGpiOPxleE48vDogxCtmMYku4HSVLA==",
|
||||
"dev": true
|
||||
},
|
||||
"@fortawesome/fontawesome-free": {
|
||||
@@ -8197,38 +8225,38 @@
|
||||
"dev": true
|
||||
},
|
||||
"cssnano": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.0.0.tgz",
|
||||
"integrity": "sha512-RGlcbzGhzEBCHuQe3k+Udyj5M00z0pm9S+VurHXFEOXxH+y0sVrJH2sMzoyz2d8N1EScazg+DVvmgyx0lurwwA==",
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.0.1.tgz",
|
||||
"integrity": "sha512-fVO1JdJ0LSdIGJq68eIxOqFpIJrZqXUsBt8fkrBcztCQqAjQD51OhZp7tc0ImcbwXD4k7ny84QTV90nZhmqbkg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"cssnano-preset-default": "^6.0.0",
|
||||
"cssnano-preset-default": "^6.0.1",
|
||||
"lilconfig": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"cssnano-preset-advanced": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-6.0.0.tgz",
|
||||
"integrity": "sha512-OasX46ANVy93yaMVgxGk1PoPzrzrgXxX6C8b3Pr6LE3oVyCsyh1Oywm7xxSkZfbGzNp6M/+4OmzP5xtAf21IMw==",
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-6.0.1.tgz",
|
||||
"integrity": "sha512-z50X9tDqiZx0Cv+vi3/IRe+5ca1lLLvoG67PjwWdC6gXNqc7JXbU/hWEfYQg+e9/8cq+fVKhyLHO8n3mV7mxDw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"autoprefixer": "^10.4.12",
|
||||
"cssnano-preset-default": "^6.0.0",
|
||||
"cssnano-preset-default": "^6.0.1",
|
||||
"postcss-discard-unused": "^6.0.0",
|
||||
"postcss-merge-idents": "^6.0.0",
|
||||
"postcss-reduce-idents": "^6.0.0",
|
||||
"postcss-reduce-idents": "^6.0.1",
|
||||
"postcss-zindex": "^6.0.0"
|
||||
}
|
||||
},
|
||||
"cssnano-preset-default": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.0.0.tgz",
|
||||
"integrity": "sha512-BDxlaFzObRDXUiCCBQUNQcI+f1/aX2mgoNtXGjV6PG64POcHoDUoX+LgMWw+Q4609QhxwkcSnS65YFs42RA6qQ==",
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.0.1.tgz",
|
||||
"integrity": "sha512-7VzyFZ5zEB1+l1nToKyrRkuaJIx0zi/1npjvZfbBwbtNTzhLtlvYraK/7/uqmX2Wb2aQtd983uuGw79jAjLSuQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"css-declaration-sorter": "^6.3.1",
|
||||
"cssnano-utils": "^4.0.0",
|
||||
"postcss-calc": "^8.2.3",
|
||||
"postcss-calc": "^9.0.0",
|
||||
"postcss-colormin": "^6.0.0",
|
||||
"postcss-convert-values": "^6.0.0",
|
||||
"postcss-discard-comments": "^6.0.0",
|
||||
@@ -8236,7 +8264,7 @@
|
||||
"postcss-discard-empty": "^6.0.0",
|
||||
"postcss-discard-overridden": "^6.0.0",
|
||||
"postcss-merge-longhand": "^6.0.0",
|
||||
"postcss-merge-rules": "^6.0.0",
|
||||
"postcss-merge-rules": "^6.0.1",
|
||||
"postcss-minify-font-values": "^6.0.0",
|
||||
"postcss-minify-gradients": "^6.0.0",
|
||||
"postcss-minify-params": "^6.0.0",
|
||||
@@ -8602,15 +8630,15 @@
|
||||
"dev": true
|
||||
},
|
||||
"eslint": {
|
||||
"version": "8.38.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.38.0.tgz",
|
||||
"integrity": "sha512-pIdsD2jwlUGf/U38Jv97t8lq6HpaU/G9NKbYmpWpZGw3LdTNhZLbJePqxOXGB5+JEKfOPU/XLxYxFh03nr1KTg==",
|
||||
"version": "8.40.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.40.0.tgz",
|
||||
"integrity": "sha512-bvR+TsP9EHL3TqNtj9sCNJVAFK3fBN8Q7g5waghxyRsPLIMwL73XSKnZFK0hk/O2ANC+iAoq6PWMQ+IfBAJIiQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@eslint-community/eslint-utils": "^4.2.0",
|
||||
"@eslint-community/regexpp": "^4.4.0",
|
||||
"@eslint/eslintrc": "^2.0.2",
|
||||
"@eslint/js": "8.38.0",
|
||||
"@eslint/eslintrc": "^2.0.3",
|
||||
"@eslint/js": "8.40.0",
|
||||
"@humanwhocodes/config-array": "^0.11.8",
|
||||
"@humanwhocodes/module-importer": "^1.0.1",
|
||||
"@nodelib/fs.walk": "^1.2.8",
|
||||
@@ -8620,9 +8648,9 @@
|
||||
"debug": "^4.3.2",
|
||||
"doctrine": "^3.0.0",
|
||||
"escape-string-regexp": "^4.0.0",
|
||||
"eslint-scope": "^7.1.1",
|
||||
"eslint-visitor-keys": "^3.4.0",
|
||||
"espree": "^9.5.1",
|
||||
"eslint-scope": "^7.2.0",
|
||||
"eslint-visitor-keys": "^3.4.1",
|
||||
"espree": "^9.5.2",
|
||||
"esquery": "^1.4.2",
|
||||
"esutils": "^2.0.2",
|
||||
"fast-deep-equal": "^3.1.3",
|
||||
@@ -8798,9 +8826,9 @@
|
||||
"requires": {}
|
||||
},
|
||||
"eslint-scope": {
|
||||
"version": "7.1.1",
|
||||
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
|
||||
"integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==",
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz",
|
||||
"integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"esrecurse": "^4.3.0",
|
||||
@@ -8825,20 +8853,20 @@
|
||||
}
|
||||
},
|
||||
"eslint-visitor-keys": {
|
||||
"version": "3.4.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz",
|
||||
"integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==",
|
||||
"version": "3.4.1",
|
||||
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz",
|
||||
"integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==",
|
||||
"dev": true
|
||||
},
|
||||
"espree": {
|
||||
"version": "9.5.1",
|
||||
"resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz",
|
||||
"integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==",
|
||||
"version": "9.5.2",
|
||||
"resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz",
|
||||
"integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"acorn": "^8.8.0",
|
||||
"acorn-jsx": "^5.3.2",
|
||||
"eslint-visitor-keys": "^3.4.0"
|
||||
"eslint-visitor-keys": "^3.4.1"
|
||||
}
|
||||
},
|
||||
"esquery": {
|
||||
@@ -10051,9 +10079,9 @@
|
||||
}
|
||||
},
|
||||
"markdownlint": {
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.28.1.tgz",
|
||||
"integrity": "sha512-8At2DbgGKT/RVBinkqIPqLETopPXyQFGWSiTCJSr9Y6wVVyY70cDJ9dw3FXePn4AkytIUclgrsgI6KVeqeHFoA==",
|
||||
"version": "0.28.2",
|
||||
"resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.28.2.tgz",
|
||||
"integrity": "sha512-yYaQXoKKPV1zgrFsyAuZPEQoe+JrY9GDag9ObKpk09twx4OCU5lut+0/kZPrQ3W7w82SmgKhd7D8m34aG1unVw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"markdown-it": "13.0.1",
|
||||
@@ -10061,17 +10089,17 @@
|
||||
}
|
||||
},
|
||||
"markdownlint-cli2": {
|
||||
"version": "0.7.0",
|
||||
"resolved": "https://registry.npmjs.org/markdownlint-cli2/-/markdownlint-cli2-0.7.0.tgz",
|
||||
"integrity": "sha512-67r1t9ep+z0fa6g9TgL3tiPQeWo297ip165Et2u54UquJAkXWnq6e+dXFBjSPft/iLaGJfU0fUHXhXueqNUkGQ==",
|
||||
"version": "0.7.1",
|
||||
"resolved": "https://registry.npmjs.org/markdownlint-cli2/-/markdownlint-cli2-0.7.1.tgz",
|
||||
"integrity": "sha512-N58lw50Ws0WOfCc07B9dPKMnPMbIj6ZCMlszZLVfxBwKN/M+WZqXLdOHyRL2BWCZ3APBxQN9qDEw7Vf1PRqFkg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"globby": "13.1.4",
|
||||
"markdownlint": "0.28.1",
|
||||
"markdownlint": "0.28.2",
|
||||
"markdownlint-cli2-formatter-default": "0.0.4",
|
||||
"micromatch": "4.0.5",
|
||||
"strip-json-comments": "5.0.0",
|
||||
"yaml": "2.2.1"
|
||||
"yaml": "2.2.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"strip-json-comments": {
|
||||
@@ -10226,9 +10254,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"nanoid": {
|
||||
"version": "3.3.4",
|
||||
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
|
||||
"integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
|
||||
"version": "3.3.6",
|
||||
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
|
||||
"integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
|
||||
"dev": true
|
||||
},
|
||||
"natural-compare": {
|
||||
@@ -10596,23 +10624,23 @@
|
||||
}
|
||||
},
|
||||
"postcss": {
|
||||
"version": "8.4.21",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz",
|
||||
"integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==",
|
||||
"version": "8.4.23",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz",
|
||||
"integrity": "sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"nanoid": "^3.3.4",
|
||||
"nanoid": "^3.3.6",
|
||||
"picocolors": "^1.0.0",
|
||||
"source-map-js": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"postcss-calc": {
|
||||
"version": "8.2.4",
|
||||
"resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz",
|
||||
"integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==",
|
||||
"version": "9.0.0",
|
||||
"resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.0.tgz",
|
||||
"integrity": "sha512-B9BNW/SVh4SMJfoCQ6D9h1Wo7Yjqks7UdbiARJ16J5TIsQn5NEqwMF5joSgOYb26oJPUR5Uv3fCQ/4PvmZWeJQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"postcss-selector-parser": "^6.0.9",
|
||||
"postcss-selector-parser": "^6.0.11",
|
||||
"postcss-value-parser": "^4.2.0"
|
||||
}
|
||||
},
|
||||
@@ -10740,9 +10768,9 @@
|
||||
}
|
||||
},
|
||||
"postcss-merge-rules": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.0.0.tgz",
|
||||
"integrity": "sha512-rCXkklftzEkniyv3f4mRCQzxD6oE4Quyh61uyWTUbCJ26Pv2hoz+fivJSsSBWxDBeScR4fKCfF3HHTcD7Ybqnw==",
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.0.1.tgz",
|
||||
"integrity": "sha512-a4tlmJIQo9SCjcfiCcCMg/ZCEe0XTkl/xK0XHBs955GWg9xDX3NwP9pwZ78QUOWB8/0XCjZeJn98Dae0zg6AAw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"browserslist": "^4.21.4",
|
||||
@@ -10882,9 +10910,9 @@
|
||||
}
|
||||
},
|
||||
"postcss-reduce-idents": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-6.0.0.tgz",
|
||||
"integrity": "sha512-Dw/+s0J3Ie+jXE4QKdgcf8mswuQ8/KaVzKmC925B1tCn6uW8iQ2T2CBKtPN5vAKnVsNMrMsREe/7gaIwi91hJw==",
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-6.0.1.tgz",
|
||||
"integrity": "sha512-KniPTynD5u69rLwcS6++OMBQg2TsH59Z8SX01rqs4LFhcU9A3IqjZ1ax41MiYfqCotseBmo01+hzO+Bqrcd1Og==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"postcss-value-parser": "^4.2.0"
|
||||
@@ -10940,9 +10968,9 @@
|
||||
"requires": {}
|
||||
},
|
||||
"postcss-selector-parser": {
|
||||
"version": "6.0.11",
|
||||
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz",
|
||||
"integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==",
|
||||
"version": "6.0.12",
|
||||
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.12.tgz",
|
||||
"integrity": "sha512-NdxGCAZdRrwVI1sy59+Wzrh+pMMHxapGnpfenDVlMEXoOcvt4pGE0JLK9YY2F5dLxcFYA/YbVQKhcGU+FtSYQg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"cssesc": "^3.0.0",
|
||||
@@ -11677,14 +11705,14 @@
|
||||
}
|
||||
},
|
||||
"stylelint": {
|
||||
"version": "15.5.0",
|
||||
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.5.0.tgz",
|
||||
"integrity": "sha512-jyMO3R1QtE5mUS4v40+Gg+sIQBqe7CF1xPslxycDzNVkIBCUD4O+5F1vLPq16VmunUTv4qG9o2rUKLnU5KkVeQ==",
|
||||
"version": "15.6.1",
|
||||
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.6.1.tgz",
|
||||
"integrity": "sha512-d8icFBlVl93Elf3Z5ABQNOCe4nx69is3D/NZhDLAie1eyYnpxfeKe7pCfqzT5W4F8vxHCLSDfV8nKNJzogvV2Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@csstools/css-parser-algorithms": "^2.1.0",
|
||||
"@csstools/css-tokenizer": "^2.1.0",
|
||||
"@csstools/media-query-list-parser": "^2.0.2",
|
||||
"@csstools/css-parser-algorithms": "^2.1.1",
|
||||
"@csstools/css-tokenizer": "^2.1.1",
|
||||
"@csstools/media-query-list-parser": "^2.0.4",
|
||||
"@csstools/selector-specificity": "^2.2.0",
|
||||
"balanced-match": "^2.0.0",
|
||||
"colord": "^2.9.3",
|
||||
@@ -11709,11 +11737,11 @@
|
||||
"micromatch": "^4.0.5",
|
||||
"normalize-path": "^3.0.0",
|
||||
"picocolors": "^1.0.0",
|
||||
"postcss": "^8.4.21",
|
||||
"postcss": "^8.4.23",
|
||||
"postcss-media-query-parser": "^0.2.3",
|
||||
"postcss-resolve-nested-selector": "^0.1.1",
|
||||
"postcss-safe-parser": "^6.0.0",
|
||||
"postcss-selector-parser": "^6.0.11",
|
||||
"postcss-selector-parser": "^6.0.12",
|
||||
"postcss-value-parser": "^4.2.0",
|
||||
"resolve-from": "^5.0.0",
|
||||
"string-width": "^4.2.3",
|
||||
@@ -11723,7 +11751,7 @@
|
||||
"svg-tags": "^1.0.0",
|
||||
"table": "^6.8.1",
|
||||
"v8-compile-cache": "^2.3.0",
|
||||
"write-file-atomic": "^5.0.0"
|
||||
"write-file-atomic": "^5.0.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"balanced-match": {
|
||||
@@ -11761,40 +11789,40 @@
|
||||
}
|
||||
},
|
||||
"stylelint-config-recommended": {
|
||||
"version": "11.0.0",
|
||||
"resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-11.0.0.tgz",
|
||||
"integrity": "sha512-SoGIHNI748OCZn6BxFYT83ytWoYETCINVHV3LKScVAWQQauWdvmdDqJC5YXWjpBbxg2E761Tg5aUGKLFOVhEkA==",
|
||||
"version": "12.0.0",
|
||||
"resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-12.0.0.tgz",
|
||||
"integrity": "sha512-x6x8QNARrGO2sG6iURkzqL+Dp+4bJorPMMRNPScdvaUK8PsynriOcMW7AFDKqkWAS5wbue/u8fUT/4ynzcmqdQ==",
|
||||
"dev": true,
|
||||
"requires": {}
|
||||
},
|
||||
"stylelint-config-recommended-scss": {
|
||||
"version": "10.0.0",
|
||||
"resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-10.0.0.tgz",
|
||||
"integrity": "sha512-+YvPgUHi0W5mCJCKdupBCIsWPYNbWuJcRmFtSYujwNg+41ljFknhO9bpY6C+oahv659zW7W1AT7i6DQvJYYr1A==",
|
||||
"version": "11.0.0",
|
||||
"resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-11.0.0.tgz",
|
||||
"integrity": "sha512-EDghTDU7aOv2LTsRZvcT1w8mcjUaMhuy+t38iV5I/0Qiu6ixdkRwhLEMul3K/fnB2v9Nwqvb3xpvJfPH+HduDw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"postcss-scss": "^4.0.6",
|
||||
"stylelint-config-recommended": "^11.0.0",
|
||||
"stylelint-config-recommended": "^12.0.0",
|
||||
"stylelint-scss": "^4.6.0"
|
||||
}
|
||||
},
|
||||
"stylelint-config-standard": {
|
||||
"version": "32.0.0",
|
||||
"resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-32.0.0.tgz",
|
||||
"integrity": "sha512-UnGJxYDyYFrIE9CjDMZRkrNh2o4lOtO+MVZ9qG5b8yARfsWho0GMx4YvhHfsv8zKKgHeWX2wfeyxmuoqcaYZ4w==",
|
||||
"version": "33.0.0",
|
||||
"resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-33.0.0.tgz",
|
||||
"integrity": "sha512-eyxnLWoXImUn77+ODIuW9qXBDNM+ALN68L3wT1lN2oNspZ7D9NVGlNHb2QCUn4xDug6VZLsh0tF8NyoYzkgTzg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"stylelint-config-recommended": "^11.0.0"
|
||||
"stylelint-config-recommended": "^12.0.0"
|
||||
}
|
||||
},
|
||||
"stylelint-config-standard-scss": {
|
||||
"version": "8.0.0",
|
||||
"resolved": "https://registry.npmjs.org/stylelint-config-standard-scss/-/stylelint-config-standard-scss-8.0.0.tgz",
|
||||
"integrity": "sha512-TDT/gJD/0LUDoUgkjF1uoI/4DfczXHxg7gJVcWT4/JbE6k5hszVuI14reNX+tEwSyMNhcK2BA7izrK+uVAz7XA==",
|
||||
"version": "9.0.0",
|
||||
"resolved": "https://registry.npmjs.org/stylelint-config-standard-scss/-/stylelint-config-standard-scss-9.0.0.tgz",
|
||||
"integrity": "sha512-yPKpJsrZn4ybuQZx/DkEHuCjw7pJginErE/47dFhCnrvD48IJ4UYec8tSiCuJWMA3HRjbIa3nh5ZeSauDGuVAg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"stylelint-config-recommended-scss": "^10.0.0",
|
||||
"stylelint-config-standard": "^32.0.0"
|
||||
"stylelint-config-recommended-scss": "^11.0.0",
|
||||
"stylelint-config-standard": "^33.0.0"
|
||||
}
|
||||
},
|
||||
"stylelint-scss": {
|
||||
@@ -12121,13 +12149,21 @@
|
||||
"dev": true
|
||||
},
|
||||
"write-file-atomic": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.0.tgz",
|
||||
"integrity": "sha512-R7NYMnHSlV42K54lwY9lvW6MnSm1HSJqZL3xiSgi9E7//FYaI74r2G0rd+/X6VAMkHEdzxQaU5HUOXWUz5kA/w==",
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz",
|
||||
"integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"imurmurhash": "^0.1.4",
|
||||
"signal-exit": "^3.0.7"
|
||||
"signal-exit": "^4.0.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"signal-exit": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.1.tgz",
|
||||
"integrity": "sha512-uUWsN4aOxJAS8KOuf3QMyFtgm1pkb6I+KRZbRF/ghdf5T7sM+B1lLLzPDxswUjkmHyxQAVzEgG35E3NzDM9GVw==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"xtend": {
|
||||
@@ -12149,9 +12185,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"yaml": {
|
||||
"version": "2.2.1",
|
||||
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz",
|
||||
"integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==",
|
||||
"version": "2.2.2",
|
||||
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz",
|
||||
"integrity": "sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==",
|
||||
"dev": true
|
||||
},
|
||||
"yargs": {
|
||||
|
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@gethinode/hinode",
|
||||
"version": "0.12.0-alpha3",
|
||||
"version": "0.13.1",
|
||||
"description": "Hinode is a clean documentation and blog theme for Hugo, an open-source static site generator",
|
||||
"keywords": [
|
||||
"hugo",
|
||||
@@ -57,7 +57,7 @@
|
||||
"bootstrap": "^5.3.0-alpha3",
|
||||
"cssnano": "^6.0.0",
|
||||
"cssnano-preset-advanced": "^6.0.0",
|
||||
"eslint": "^8.37.0",
|
||||
"eslint": "^8.39.0",
|
||||
"eslint-config-standard": "^17.0.0",
|
||||
"eslint-plugin-import": "^2.27.5",
|
||||
"eslint-plugin-n": "^15.7.0",
|
||||
@@ -69,8 +69,8 @@
|
||||
"purgecss-whitelister": "^2.4.0",
|
||||
"rimraf": "^5.0.0",
|
||||
"shx": "^0.3.4",
|
||||
"stylelint": "^15.4.0",
|
||||
"stylelint-config-standard-scss": "^8.0.0"
|
||||
"stylelint": "^15.6.0",
|
||||
"stylelint-config-standard-scss": "^9.0.0"
|
||||
},
|
||||
"hugo-bin": {
|
||||
"buildTags": "extended"
|
||||
|
Reference in New Issue
Block a user