Compare commits

...

58 Commits

Author SHA1 Message Date
Mark Dumay
81cc8fe02f Merge pull request #243 from gethinode/develop
Search
2023-05-08 10:12:53 +02:00
Mark Dumay
ef3d79f875 Merge branch 'main' into develop 2023-05-08 09:57:23 +02:00
mark
c66bb79ac5 Bump release version 2023-05-08 09:56:43 +02:00
mark
c5c5695541 Remove debug statement 2023-05-08 09:55:34 +02:00
mark
a3343c29dc Fix handling when search input is unavailable 2023-05-08 09:52:50 +02:00
mark
50a697c1fb Fix incorrect translation of no search results 2023-05-08 09:50:33 +02:00
github-actions[bot]
6cf7a410f4 Merge pull request #241 from gethinode/dependabot/npm_and_yarn/cssnano-6.0.1
Bump cssnano from 6.0.0 to 6.0.1
2023-05-03 14:13:19 +00:00
dependabot[bot]
bdade82dea Bump cssnano from 6.0.0 to 6.0.1
Bumps [cssnano](https://github.com/cssnano/cssnano) from 6.0.0 to 6.0.1.
- [Release notes](https://github.com/cssnano/cssnano/releases)
- [Commits](https://github.com/cssnano/cssnano/compare/cssnano@6.0.0...cssnano@6.0.1)

---
updated-dependencies:
- dependency-name: cssnano
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-03 14:09:44 +00:00
github-actions[bot]
38aac9507e Merge pull request #242 from gethinode/dependabot/npm_and_yarn/stylelint-15.6.1
Bump stylelint from 15.6.0 to 15.6.1
2023-05-03 14:08:56 +00:00
dependabot[bot]
0eec1da639 Bump stylelint from 15.6.0 to 15.6.1
Bumps [stylelint](https://github.com/stylelint/stylelint) from 15.6.0 to 15.6.1.
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/15.6.0...15.6.1)

---
updated-dependencies:
- dependency-name: stylelint
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-03 14:05:09 +00:00
github-actions[bot]
1e8bc5f11d Merge pull request #240 from gethinode/dependabot/npm_and_yarn/cssnano-preset-advanced-6.0.1
Bump cssnano-preset-advanced from 6.0.0 to 6.0.1
2023-05-01 14:15:51 +00:00
dependabot[bot]
56f467e02c Bump cssnano-preset-advanced from 6.0.0 to 6.0.1
Bumps [cssnano-preset-advanced](https://github.com/cssnano/cssnano) from 6.0.0 to 6.0.1.
- [Release notes](https://github.com/cssnano/cssnano/releases)
- [Commits](https://github.com/cssnano/cssnano/compare/cssnano-preset-advanced@6.0.0...cssnano-preset-advanced@6.0.1)

---
updated-dependencies:
- dependency-name: cssnano-preset-advanced
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-01 14:12:37 +00:00
github-actions[bot]
83049db4bc Merge pull request #239 from gethinode/dependabot/npm_and_yarn/markdownlint-cli2-0.7.1
Bump markdownlint-cli2 from 0.7.0 to 0.7.1
2023-04-28 14:13:01 +00:00
dependabot[bot]
78599c8f76 Bump markdownlint-cli2 from 0.7.0 to 0.7.1
Bumps [markdownlint-cli2](https://github.com/DavidAnson/markdownlint-cli2) from 0.7.0 to 0.7.1.
- [Release notes](https://github.com/DavidAnson/markdownlint-cli2/releases)
- [Changelog](https://github.com/DavidAnson/markdownlint-cli2/blob/main/CHANGELOG.md)
- [Commits](https://github.com/DavidAnson/markdownlint-cli2/compare/v0.7.0...v0.7.1)

---
updated-dependencies:
- dependency-name: markdownlint-cli2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-28 14:05:36 +00:00
Mark Dumay
fc6e916fca Merge pull request #238 from gethinode/develop
Git commits
2023-04-28 12:29:10 +02:00
Mark Dumay
a0febc31ee Merge branch 'main' into develop 2023-04-28 12:19:27 +02:00
mark
800c82dba5 Bump release version 2023-04-28 12:18:58 +02:00
mark
8b59f3b6f7 Fix docs git commit link 2023-04-28 12:18:06 +02:00
Mark Dumay
9795e04a9b Merge pull request #237 from gethinode/develop
Tables
2023-04-28 09:23:19 +02:00
mark
6381cb3519 Fix linting issues 2023-04-28 09:18:51 +02:00
mark
01927f22b6 Bump package release 2023-04-28 09:07:52 +02:00
mark
da75210771 Add responsive behavior for tables 2023-04-28 09:00:12 +02:00
mark
b47bf99744 Fix highlight of nav items 2023-04-27 17:46:13 +02:00
Mark Dumay
2a4ba34c51 Merge pull request #236 from gethinode/develop
Add Google Analytics for demo site
2023-04-27 15:00:26 +02:00
mark
fc07cec664 Use cross-domain linking 2023-04-27 14:55:08 +02:00
Mark Dumay
538a1d2de3 Merge branch 'main' into develop 2023-04-27 14:46:22 +02:00
mark
6dda374b73 Add Google Analytics for demo site 2023-04-27 14:45:36 +02:00
Mark Dumay
e53a333ebf Merge pull request #235 from gethinode/develop
Fixes
2023-04-27 12:58:45 +02:00
Mark Dumay
5ed8c28bee Merge branch 'main' into develop 2023-04-27 12:36:22 +02:00
mark
fa47b7d93e Bump release 2023-04-27 12:35:51 +02:00
mark
f1693c8cf0 Refine Netlify CSP headers 2023-04-27 12:34:56 +02:00
mark
740fd91038 Remove empty parameters 2023-04-27 11:44:45 +02:00
mark
9a0dba5ee4 Fix loading tag manager script twice 2023-04-27 11:44:25 +02:00
Mark Dumay
e4b7b252b3 Revert back to macos-latest 2023-04-27 08:29:00 +02:00
Mark Dumay
569562cf24 Merge pull request #234 from gethinode/develop
Server
2023-04-27 08:28:27 +02:00
Mark Dumay
60b53f2fa9 Merge branch 'main' into develop 2023-04-27 08:17:46 +02:00
mark
3e5f23cf89 Bump release version 2023-04-27 08:17:07 +02:00
mark
c7b16cf2f4 Fix Hugo server detection 2023-04-27 08:16:21 +02:00
Mark Dumay
191d6e3d94 Change to macos-latest-xl runner 2023-04-27 08:01:43 +02:00
Mark Dumay
9dd7bf64e1 Merge pull request #233 from gethinode/main
Sync
2023-04-27 08:00:32 +02:00
Mark Dumay
580675f8b1 Merge pull request #232 from gethinode/tooltip
Tooltip
2023-04-27 07:55:02 +02:00
Mark Dumay
b2b43d550b Merge branch 'main' into tooltip 2023-04-27 07:47:08 +02:00
Mark Dumay
f79317b317 Merge pull request #231 from gethinode/develop
Google Analytics
2023-04-27 07:46:14 +02:00
mark
3d7bcc4356 Bump release version 2023-04-27 07:45:56 +02:00
mark
a7256ff270 Fix tooltip justification 2023-04-27 07:45:47 +02:00
mark
8ffc6dbd59 Bump release version 2023-04-27 07:28:46 +02:00
mark
5bb0cf07e6 Add Google Analytics support 2023-04-27 07:28:22 +02:00
Mark Dumay
37e9e70c55 Merge pull request #230 from gethinode/main
Sync
2023-04-26 16:04:43 +02:00
Mark Dumay
b4ddc8c58d Merge pull request #229 from gethinode/TOC
TOC
2023-04-26 16:01:32 +02:00
Mark Dumay
a7c4be508d Merge branch 'main' into TOC 2023-04-26 15:55:39 +02:00
mark
0988e07106 Fix linting issues 2023-04-26 15:50:29 +02:00
mark
7dcbfe8373 Add hover color to sidebar TOC 2023-04-26 15:48:59 +02:00
Mark Dumay
fdebbccfa1 Merge branch 'main' into develop 2023-04-26 13:44:28 +02:00
mark
7d1cd93e87 Bump release version 2023-04-26 13:43:04 +02:00
mark
3a056829c5 Improve configurability of button 2023-04-26 13:40:47 +02:00
mark
0ee0febc15 Adjust TOC button shadow 2023-04-26 13:40:22 +02:00
mark
ac081a3084 Add icon support 2023-04-26 12:07:59 +02:00
mark
9d07b5da5a Add TOC drop-down for small screens 2023-04-26 12:02:52 +02:00
22 changed files with 536 additions and 342 deletions

View File

@@ -1,3 +1,4 @@
assets/js/analytics.js
assets/js/color.js
assets/js/flexsearch.js
assets/js/vendor

69
assets/js/analytics.js Normal file
View 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 }}

View File

@@ -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 -}}

View File

@@ -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;
}
}

View File

@@ -6,6 +6,7 @@ enableGitInfo = true
# toml-docs-end main
# additional settings
googleAnalytics = "G-T85PPZ36GN"
baseURL = "https://demo.gethinode.com/"
canonifyURLs = false
enableEmoji = true

View File

@@ -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' \
"""

View File

@@ -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 -->

View File

@@ -257,8 +257,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 -->

View File

@@ -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 }}">
@@ -57,6 +57,6 @@
{{- partial "footer/footer.html" . -}}
{{ end -}}
{{- partialCached "footer/scripts.html" (dict "page" .) }}
{{- partialCached "footer/scripts.html" (dict "header" false "page" .) }}
</body>
</html>

View File

@@ -2,6 +2,7 @@
{{ if site.Params.navigation.breadcrumb }}{{ partial "assets/breadcrumb.html" . }}{{ end -}}
{{ if in (slice "docs" "minimal") .Layout }}
{{ 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")) -}}
@@ -28,22 +29,23 @@
{{ end -}}
</div>
</div>
<p class="lead mb-5 mt-3">{{ .Description }}</p>
{{ end }}
{{ end -}}
{{ define "partials/body.html" -}}
{{ if in (slice "docs" "minimal") .Layout }}
<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 "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" -}}
@@ -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>

View File

@@ -15,91 +15,118 @@
"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 -}}
{{- $title := trim .title " \r\n" -}}
{{- if not $title -}}
{{- errorf "partial [assets/button.html] - Missing element title" -}}
{{- end -}}
{{ $id := .id }}
{{- $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 -}}
{{- $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 -}}
{{- $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 -}}
{{- $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 -}}
{{- $outline := false -}}
{{- with .outline }}{{ $outline = . }}{{ end -}}
{{ $badge := "" -}}
{{ with .badge }}{{ $badge = . }}{{ end -}}
{{- $badge := "" -}}
{{- with .badge }}{{ $badge = . }}{{ end -}}
{{ $label := "" -}}
{{ with .label }}{{ $label = . }}{{ end -}}
{{- $label := "" -}}
{{- with .label }}{{ $label = . }}{{ end -}}
{{ $tooltip := "" -}}
{{ if not (strings.HasSuffix $state "active") -}}
{{ with .tooltip }}{{ $tooltip = . }}{{ end -}}
{{ end -}}
{{- $tooltip := "" -}}
{{- if not (strings.HasSuffix $state "active") -}}
{{- with .tooltip }}{{ $tooltip = . }}{{ end -}}
{{- end -}}
{{ $href := .href -}}
{{- $href := .href -}}
{{ $collapse := "" -}}
{{ if not (strings.HasSuffix $state "active") -}}
{{ with .collapse }}{{ $collapse = . }}{{ $href = printf "#%s" . }}{{ end -}}
{{ end -}}
{{- $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 -}}
{{- 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 -}}
{{- $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 -}}
{{- $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 -}}
<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 }}
{{- $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 -}}
>
{{ $title -}}
{{ with $badge }}
<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 }}
{{- end -}}
</a>

View File

@@ -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>

View 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 -}}

View File

@@ -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>

View File

@@ -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 -}}

View File

@@ -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" }}">

View File

@@ -1,5 +1,5 @@
{{ $lastmodstr := (partial "utilities/date.html" (dict "date" .Lastmod "format" "long")) -}}
Last updated: {{ $lastmodstr }}
{{ with .GitInfo }}
&bull;&nbsp;<a href="{{ site.Params.schema.gitHub }}/commit/{{ .Hash }}">{{ .Subject }} ({{ .AbbreviatedHash }})</a>
&bull;&nbsp;<a href="{{ site.Params.docs.github | default site.Params.schema.github }}/commit/{{ .Hash }}">{{ .Subject }} ({{ .AbbreviatedHash }})</a>
{{ end -}}

View File

@@ -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 -}}

View File

@@ -41,5 +41,5 @@
{{ end -}}
{{ if not $error }}
{{- partial "assets/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 }}

View File

@@ -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' \
"""

219
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{
"name": "@gethinode/hinode",
"version": "0.12.0",
"version": "0.12.8",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@gethinode/hinode",
"version": "0.12.0",
"version": "0.12.8",
"license": "MIT",
"devDependencies": {
"@fortawesome/fontawesome-free": "^6.4.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",
@@ -4071,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",
@@ -4084,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",
@@ -4885,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"
}
@@ -5103,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",
@@ -5334,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"
@@ -5444,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",
@@ -6458,9 +6461,9 @@
}
},
"node_modules/stylelint": {
"version": "15.6.0",
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.6.0.tgz",
"integrity": "sha512-Cqzpc8tvJm77KaM8qUbhpJ/UYK55Ia0whQXj4b9IId9dlPICO7J8Lyo15SZWiHxKjlvy3p5FQor/3n6i8ignXg==",
"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.1",
@@ -6490,11 +6493,11 @@
"micromatch": "^4.0.5",
"normalize-path": "^3.0.0",
"picocolors": "^1.0.0",
"postcss": "^8.4.22",
"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",
@@ -6504,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"
@@ -7041,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",
@@ -7078,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"
@@ -8210,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",
@@ -8249,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",
@@ -10064,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",
@@ -10074,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": {
@@ -10620,12 +10635,12 @@
}
},
"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"
}
},
@@ -10753,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",
@@ -10895,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"
@@ -10953,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",
@@ -11690,9 +11705,9 @@
}
},
"stylelint": {
"version": "15.6.0",
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.6.0.tgz",
"integrity": "sha512-Cqzpc8tvJm77KaM8qUbhpJ/UYK55Ia0whQXj4b9IId9dlPICO7J8Lyo15SZWiHxKjlvy3p5FQor/3n6i8ignXg==",
"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.1",
@@ -11722,11 +11737,11 @@
"micromatch": "^4.0.5",
"normalize-path": "^3.0.0",
"picocolors": "^1.0.0",
"postcss": "^8.4.22",
"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",
@@ -11736,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": {
@@ -12134,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": {
@@ -12162,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": {

View File

@@ -1,6 +1,6 @@
{
"name": "@gethinode/hinode",
"version": "0.12.0",
"version": "0.12.8",
"description": "Hinode is a clean documentation and blog theme for Hugo, an open-source static site generator",
"keywords": [
"hugo",