mirror of
https://github.com/gethinode/hinode.git
synced 2025-10-07 10:04:22 +00:00
Compare commits
54 Commits
v0.11.8
...
v0.12.0-al
Author | SHA1 | Date | |
---|---|---|---|
![]() |
393aea46e1 | ||
![]() |
f3347e871e | ||
![]() |
9d751abbf0 | ||
![]() |
ccfc674019 | ||
![]() |
45aa488e37 | ||
![]() |
5d96fdb3db | ||
![]() |
c2faf0d4f6 | ||
![]() |
1e8d94e1fb | ||
![]() |
3a6edbf2a2 | ||
![]() |
a52154b531 | ||
![]() |
a27d25737f | ||
![]() |
e810df9177 | ||
![]() |
d4dc5d8693 | ||
![]() |
878258796b | ||
![]() |
0397b66d05 | ||
![]() |
5ef32bed6d | ||
![]() |
bbdd8b6c62 | ||
![]() |
67a1d58178 | ||
![]() |
1bede70fae | ||
![]() |
156dbfd3a9 | ||
![]() |
c2a2ffd06d | ||
![]() |
6aeb1ae617 | ||
![]() |
9fe02aa39b | ||
![]() |
f6f65ef7f3 | ||
![]() |
8b8a6b5b36 | ||
![]() |
9fabcbaf13 | ||
![]() |
18ad1ebc93 | ||
![]() |
f4cde441a0 | ||
![]() |
1baea7f63d | ||
![]() |
89b7aa24e9 | ||
![]() |
2ebbf5a370 | ||
![]() |
595e562814 | ||
![]() |
2bf64805dc | ||
![]() |
0576f78240 | ||
![]() |
0f06571e50 | ||
![]() |
bb834c9c15 | ||
![]() |
f000d95533 | ||
![]() |
d3738657a3 | ||
![]() |
d2655290b4 | ||
![]() |
97fd864129 | ||
![]() |
44d2f3699f | ||
![]() |
7bc7621996 | ||
![]() |
19b6a7817d | ||
![]() |
eddfe93e6e | ||
![]() |
a5b3b61e23 | ||
![]() |
6586370d75 | ||
![]() |
c1de0a4604 | ||
![]() |
e71908e2a8 | ||
![]() |
053b63a580 | ||
![]() |
276b2e7ab5 | ||
![]() |
db5cadb2ac | ||
![]() |
a6669030d8 | ||
![]() |
8cbd2db6fa | ||
![]() |
b09b411b10 |
21
.github/workflows/auto-approve.yml
vendored
21
.github/workflows/auto-approve.yml
vendored
@@ -1,21 +0,0 @@
|
||||
name: Dependabot auto-approve
|
||||
on: pull_request
|
||||
|
||||
permissions:
|
||||
pull-requests: write
|
||||
|
||||
jobs:
|
||||
dependabot:
|
||||
runs-on: ubuntu-latest
|
||||
if: ${{ github.actor == 'dependabot[bot]' }}
|
||||
steps:
|
||||
- name: Dependabot metadata
|
||||
id: metadata
|
||||
uses: dependabot/fetch-metadata@v1
|
||||
with:
|
||||
github-token: "${{ secrets.GITHUB_TOKEN }}"
|
||||
- name: Approve a PR
|
||||
run: gh pr review --approve "$PR_URL"
|
||||
env:
|
||||
PR_URL: ${{github.event.pull_request.html_url}}
|
||||
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
|
43
.github/workflows/auto-merge.yml
vendored
Normal file
43
.github/workflows/auto-merge.yml
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
# Source: https://nicolasiensen.github.io/2022-07-23-automating-dependency-updates-with-dependabot-github-auto-merge-and-github-actions/
|
||||
name: Dependabot auto-merge
|
||||
on: pull_request_target
|
||||
|
||||
permissions:
|
||||
pull-requests: write
|
||||
contents: write
|
||||
|
||||
jobs:
|
||||
review-dependabot-pr:
|
||||
runs-on: ubuntu-latest
|
||||
if: ${{ github.event.pull_request.user.login == 'dependabot[bot]' }}
|
||||
steps:
|
||||
- name: Dependabot metadata
|
||||
id: metadata
|
||||
uses: dependabot/fetch-metadata@v1
|
||||
with:
|
||||
github-token: "${{ secrets.GITHUB_TOKEN }}"
|
||||
- name: Enable auto-merge for Dependabot PRs
|
||||
run: gh pr merge --auto --merge "$PR_URL"
|
||||
env:
|
||||
PR_URL: ${{github.event.pull_request.html_url}}
|
||||
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
|
||||
- name: Approve patch and minor updates
|
||||
if: ${{steps.dependabot-metadata.outputs.update-type == 'version-update:semver-patch' || steps.dependabot-metadata.outputs.update-type == 'version-update:semver-minor'}}
|
||||
run: gh pr review $PR_URL --approve -b "I'm **approving** this pull request because **it includes a patch or minor update**"
|
||||
env:
|
||||
PR_URL: ${{github.event.pull_request.html_url}}
|
||||
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
|
||||
- name: Approve major updates of development dependencies
|
||||
if: ${{steps.dependabot-metadata.outputs.update-type == 'version-update:semver-major' && steps.dependabot-metadata.outputs.dependency-type == 'direct:development'}}
|
||||
run: gh pr review $PR_URL --approve -b "I'm **approving** this pull request because **it includes a major update of a dependency used only in development**"
|
||||
env:
|
||||
PR_URL: ${{github.event.pull_request.html_url}}
|
||||
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
|
||||
- name: Comment on major updates of non-development dependencies
|
||||
if: ${{steps.dependabot-metadata.outputs.update-type == 'version-update:semver-major' && steps.dependabot-metadata.outputs.dependency-type == 'direct:production'}}
|
||||
run: |
|
||||
gh pr comment $PR_URL --body "I'm **not approving** this PR because **it includes a major update of a dependency used in production**"
|
||||
gh pr edit $PR_URL --add-label "requires-manual-qa"
|
||||
env:
|
||||
PR_URL: ${{github.event.pull_request.html_url}}
|
||||
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
|
18
assets/js/animation.js
Normal file
18
assets/js/animation.js
Normal file
@@ -0,0 +1,18 @@
|
||||
function reveal () {
|
||||
const reveals = document.querySelectorAll('.reveal')
|
||||
|
||||
for (let i = 0; i < reveals.length; i++) {
|
||||
const windowHeight = window.innerHeight
|
||||
const elementTop = reveals[i].getBoundingClientRect().top
|
||||
const elementVisible = 150
|
||||
|
||||
if (elementTop < windowHeight - elementVisible) {
|
||||
reveals[i].classList.add('active')
|
||||
reveals[i].classList.remove('reveal')
|
||||
} else {
|
||||
reveals[i].classList.remove('active')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
window.addEventListener('scroll', reveal)
|
@@ -71,12 +71,14 @@
|
||||
@import "components/comments.scss";
|
||||
@import "components/navbar.scss";
|
||||
@import "components/img.scss";
|
||||
@import "components/persona.scss";
|
||||
@import "components/popover.scss";
|
||||
@import "components/search.scss";
|
||||
@import "components/sidebar.scss";
|
||||
@import "components/syntax.scss";
|
||||
@import "components/toc.scss";
|
||||
@import "components/vimeo.scss";
|
||||
@import "common/animation.scss";
|
||||
@import "common/styles.scss";
|
||||
@import "layouts/reboot.scss";
|
||||
@import "layouts/type.scss";
|
||||
|
99
assets/scss/common/_animation.scss
Normal file
99
assets/scss/common/_animation.scss
Normal file
@@ -0,0 +1,99 @@
|
||||
.rotate-5 {
|
||||
transform: rotate(5deg);
|
||||
}
|
||||
|
||||
.rotate-n5 {
|
||||
transform: rotate(-5deg);
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: no-preference) {
|
||||
.reveal {
|
||||
position: relative;
|
||||
opacity: 0;
|
||||
animation-iteration-count: 1;
|
||||
}
|
||||
|
||||
.reveal.active {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.active.fade-bottom {
|
||||
animation: fade-bottom 1s ease-in;
|
||||
}
|
||||
|
||||
.active.fade-bottom-5 {
|
||||
animation: fade-bottom-5 1s ease-in;
|
||||
}
|
||||
|
||||
.active.fade-bottom-n5 {
|
||||
animation: fade-bottom-n5 1s ease-in;
|
||||
}
|
||||
|
||||
.active.fade-left {
|
||||
animation: fade-left 1s ease-in;
|
||||
}
|
||||
|
||||
.active.fade-right {
|
||||
animation: fade-right 1s ease-in;
|
||||
}
|
||||
|
||||
@keyframes fade-bottom {
|
||||
0% {
|
||||
transform: translateY(50px);
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
100% {
|
||||
transform: translateY(0);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes fade-bottom-5 {
|
||||
0% {
|
||||
transform: translateY(50px) rotate(5deg);
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
100% {
|
||||
transform: translateY(0) rotate(5deg);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes fade-bottom-n5 {
|
||||
0% {
|
||||
transform: translateY(50px) rotate(-5deg);
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
100% {
|
||||
transform: translateY(0) rotate(-5deg);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes fade-left {
|
||||
0% {
|
||||
transform: translateX(-100px);
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
100% {
|
||||
transform: translateX(0);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes fade-right {
|
||||
0% {
|
||||
transform: translateX(100px);
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
100% {
|
||||
transform: translateX(0);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
}
|
@@ -29,3 +29,121 @@ a:active {
|
||||
transition: 0.25s ease-in-out;
|
||||
color: $primary;
|
||||
}
|
||||
|
||||
$utilities: map-merge(
|
||||
$utilities,
|
||||
(
|
||||
"padding-start-wide": (
|
||||
property: padding-left,
|
||||
responsive: true,
|
||||
class: psw,
|
||||
values: (
|
||||
0: 0,
|
||||
1: 1.5 * $spacer,
|
||||
2: 3 * $spacer,
|
||||
3: 6 * $spacer,
|
||||
4: 9 * $spacer,
|
||||
5: 12 * $spacer,
|
||||
)
|
||||
),
|
||||
"padding-top-wide": (
|
||||
property: padding-top,
|
||||
responsive: true,
|
||||
class: ptw,
|
||||
values: (
|
||||
0: 0,
|
||||
1: 1.5 * $spacer,
|
||||
2: 3 * $spacer,
|
||||
3: 6 * $spacer,
|
||||
4: 9 * $spacer,
|
||||
5: 12 * $spacer,
|
||||
)
|
||||
),
|
||||
"font-size": map-merge(
|
||||
map-get($utilities, "font-size"),
|
||||
( responsive: true ),
|
||||
),
|
||||
)
|
||||
);
|
||||
|
||||
@media screen and (orientation: portrait) {
|
||||
.min-vh-custom {
|
||||
min-height: 25vh !important
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (orientation: landscape) {
|
||||
.min-vh-custom {
|
||||
min-height: 50vh !important
|
||||
}
|
||||
}
|
||||
|
||||
:root {
|
||||
--nav-height: 90px;
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(sm) {
|
||||
.ratio-section {
|
||||
min-height: calc(min(100vh, 576px) - var(--nav-height));
|
||||
}
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(md) {
|
||||
.ratio-section {
|
||||
min-height: calc(min(100vh, 768px) - var(--nav-height));
|
||||
}
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(lg) {
|
||||
.ratio-section {
|
||||
min-height: calc(min(100vh, 992px) - var(--nav-height));
|
||||
}
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(xl) {
|
||||
.ratio-section {
|
||||
min-height: calc(min(100vh, 1200px) - var(--nav-height));
|
||||
}
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(xxl) {
|
||||
.ratio-section {
|
||||
min-height: calc(min(100vh, 1400px) - var(--nav-height));
|
||||
}
|
||||
}
|
||||
|
||||
$utilities: map-merge(
|
||||
$utilities,
|
||||
(
|
||||
"padding-start-wide": (
|
||||
property: padding-left,
|
||||
responsive: true,
|
||||
class: psw,
|
||||
values: (
|
||||
0: 0,
|
||||
1: 1.5 * $spacer,
|
||||
2: 3 * $spacer,
|
||||
3: 6 * $spacer,
|
||||
4: 9 * $spacer,
|
||||
5: 12 * $spacer,
|
||||
)
|
||||
),
|
||||
"padding-top-wide": (
|
||||
property: padding-top,
|
||||
responsive: true,
|
||||
class: ptw,
|
||||
values: (
|
||||
0: 0,
|
||||
1: 1.5 * $spacer,
|
||||
2: 3 * $spacer,
|
||||
3: 6 * $spacer,
|
||||
4: 9 * $spacer,
|
||||
5: 12 * $spacer,
|
||||
)
|
||||
),
|
||||
"font-size": map-merge(
|
||||
map-get($utilities, "font-size"),
|
||||
( responsive: true ),
|
||||
)
|
||||
)
|
||||
);
|
||||
|
3
assets/scss/components/_persona.scss
Normal file
3
assets/scss/components/_persona.scss
Normal file
@@ -0,0 +1,3 @@
|
||||
.persona {
|
||||
min-height: 320px !important
|
||||
}
|
@@ -13,6 +13,7 @@
|
||||
color: rgba(0, 0, 0, 0.65);
|
||||
margin-left: 0 !important;
|
||||
padding-left: 0.85rem !important;
|
||||
display: inline-block;
|
||||
|
||||
&.active,
|
||||
&:hover,
|
||||
|
@@ -1,25 +1,39 @@
|
||||
// stylelint-disable function-name-case, declaration-no-important
|
||||
|
||||
// scss-docs-start colored-links
|
||||
@each $color, $value in $theme-colors {
|
||||
$contrast-color: color-contrast($value);
|
||||
$color-rgb: to-rgb($value);
|
||||
$custom-colors: (
|
||||
"primary": "light",
|
||||
"secondary": "light",
|
||||
"success": "light",
|
||||
"danger": "light",
|
||||
"dark": "light",
|
||||
"black": "light",
|
||||
"info": "dark",
|
||||
"warning": "dark",
|
||||
"light": "dark",
|
||||
"white": "dark",
|
||||
"body": "adaptive",
|
||||
"body-tertiary": "adaptive"
|
||||
);
|
||||
|
||||
@each $color, $value in $custom-colors {
|
||||
$main-color: var(--bs-body-color);
|
||||
$emphasize-color: var(--bs-secondary-color);
|
||||
|
||||
@if $value == "light" {
|
||||
$main-color: $white;
|
||||
$emphasize-color: shade-color($main-color, $link-shade-percentage);
|
||||
} @else if $value == "dark" {
|
||||
$main-color: $black;
|
||||
$emphasize-color: tint-color($main-color, $link-shade-percentage);
|
||||
}
|
||||
|
||||
.link-bg-#{$color} {
|
||||
color: $contrast-color if($enable-important-utilities, !important, null);
|
||||
background-color: RGBA($color-rgb, var(--#{$prefix}bg-opacity, 1)) if($enable-important-utilities, !important, null);
|
||||
color: $main-color if($enable-important-utilities, !important, null);
|
||||
|
||||
@if $link-shade-percentage != 0 {
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: if($contrast-color == $color-contrast-light,
|
||||
shade-color($contrast-color, $link-shade-percentage),
|
||||
tint-color($contrast-color, $link-shade-percentage))
|
||||
if($enable-important-utilities, !important, null);
|
||||
}
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: $emphasize-color if($enable-important-utilities, !important, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// scss-docs-end colored-links
|
||||
// stylelint-enable function-name-case, declaration-no-important
|
||||
|
@@ -3,6 +3,7 @@
|
||||
separator = "-"
|
||||
description = "Hinode is a clean documentation and blog theme for your Hugo site based on Bootstrap 5."
|
||||
enableDarkMode = true
|
||||
modes = ["light", "dark"]
|
||||
# toml-docs-end main
|
||||
|
||||
# toml-docs-start docs
|
||||
@@ -16,6 +17,7 @@
|
||||
sections = ["blog", "projects"]
|
||||
featurePhoto = "/img/sunrise.jpg" # source: https://unsplash.com/photos/ZX6BPboJrYk
|
||||
fullCover = false
|
||||
centerHeadline = false
|
||||
style = ""
|
||||
# toml-docs-end home
|
||||
|
||||
@@ -52,7 +54,7 @@
|
||||
sort = "title"
|
||||
reverse = false
|
||||
cols = 1
|
||||
color = ""
|
||||
color = "body-tertiary"
|
||||
padding = "3"
|
||||
header = "none"
|
||||
footer = "tags"
|
||||
|
@@ -95,11 +95,11 @@ As an example, the following shortcode displays a group of three buttons.
|
||||
|
||||
## Card
|
||||
|
||||
As an example, the following shortcode displays a stacked card with icon that links to the [about]({{< ref "about" >}}) page. It includes a custom header.
|
||||
As an example, the following shortcode displays a stacked card that links to the [about]({{< ref "about" >}}) page. It includes a custom header.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* card path="about" padding="3" class="w-50" color="light" header="publication" footer="none" */>}}
|
||||
{{</* card path="about" padding="3" class="w-50" color="body-tertiary" header="publication" footer="none" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
|
@@ -95,11 +95,11 @@ De volgende shortcode toont een groep van drie knoppen.
|
||||
|
||||
## Card
|
||||
|
||||
De volgende shortcode toont een kaart met een icoon dat linkt naar de [over mij]({{< ref "about" >}}) pagina. De kaart bevat een titel.
|
||||
De volgende shortcode toont een kaart dat linkt naar de [over mij]({{< ref "about" >}}) pagina. De kaart bevat een titel.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* card path="about" padding="3" class="w-50" color="light" header="publication" footer="none" */>}}
|
||||
{{</* card path="about" padding="3" class="w-50" color="body-tertiary" header="publication" footer="none" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
@@ -192,6 +192,27 @@ De volgende shortcode toont een plaatje met afgeronde hoeken en een 21x9 verhoud
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Nav
|
||||
|
||||
De volgende shortcode toont een groep met verticale tabbladen.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* nav type="pills" vertical="true" */>}}
|
||||
{{</* nav-item header="Nav Item #1" show="true" */>}}
|
||||
Dit is de inhoud van het eerste element met ondersteuning voor HTML. De waarde <code>show</code>
|
||||
voor het argument <code>class</code> geeft aan dat het element uitgeklapt moet worden.
|
||||
{{</* /nav-item */>}}
|
||||
{{</* nav-item header="Nav Item #2" */>}}
|
||||
Dit is de inhoud van het tweede element. Het ondersteunt ook HTML.
|
||||
{{</* /nav-item */>}}
|
||||
{{</* nav-item header="Nav Item #3" */>}}
|
||||
Dit is de inhoud van het derde element.
|
||||
{{</* /nav-item */>}}
|
||||
{{</* /nav */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Navbar
|
||||
|
||||
De volgende shortcode toont een navigatiemenu.
|
||||
|
@@ -68,7 +68,7 @@
|
||||
|
||||
# 404 page
|
||||
- id: pageNotFound
|
||||
translation: "Ups! Diese Seite existiert nicht. Versuche es über die"
|
||||
translation: "Diese Seite existiert nicht. Versuche es über die"
|
||||
- id: pageNotFoundTitle
|
||||
translation: "Nicht gefunden"
|
||||
- id: pageNotFoundHome
|
||||
|
@@ -68,9 +68,9 @@
|
||||
|
||||
# 404 page
|
||||
- id: pageNotFound
|
||||
translation: "Oops! This page doesn't exist. Try going back to our"
|
||||
translation: "The page you are looking for does not exist or another error occurred. Try going back to our"
|
||||
- id: pageNotFoundTitle
|
||||
translation: "Not found"
|
||||
translation: "Page not found"
|
||||
- id: pageNotFoundHome
|
||||
translation: "home page"
|
||||
|
||||
|
@@ -68,7 +68,7 @@
|
||||
|
||||
# 404 page
|
||||
- id: pageNotFound
|
||||
translation: "Oeps, deze pagina bestaat niet. Ga terug naar het"
|
||||
translation: "Deze pagina bestaat niet of er is een andere fout opgetreden. Ga terug naar het"
|
||||
- id: pageNotFoundTitle
|
||||
translation: "Niet gevonden"
|
||||
- id: pageNotFoundHome
|
||||
|
@@ -1,8 +1,12 @@
|
||||
{{ define "main"}}
|
||||
<main id="main">
|
||||
<div>
|
||||
<h1 id="title">{{ T "pageNotFoundTitle" }}</h1>
|
||||
<p>{{ T "pageNotFound" }} <a href="{{ "/" | relURL }}">{{ T "pageNotFoundHome" }}</a>.</p>
|
||||
</div>
|
||||
</main>
|
||||
<div class="container-xxl flex-fill d-flex align-content-center flex-wrap">
|
||||
<div class="w-100 text-center">
|
||||
<span class="text-secondary fw-bold">
|
||||
<i class="fa-regular fa-face-frown fa-10x"></i>
|
||||
<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>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
@@ -1,11 +1,11 @@
|
||||
{{- define "partials/header.html" -}}
|
||||
{{ if site.Params.navigation.breadcrumb }}{{ partial "breadcrumb.html" . }}{{ end -}}
|
||||
{{ if in (slice "docs" "minimal") .Layout }}
|
||||
<h1>{{ .Title }}</h1>
|
||||
{{ with .Title }}<p class="display-4 mt-3">{{ . }}</p>{{ end }}
|
||||
{{ else }}
|
||||
{{ $lastmodstr := (partial "utilities/date.html" (dict "date" .Lastmod "format" "long")) -}}
|
||||
{{ $datestr := (partial "utilities/date.html" (dict "date" .Date "format" "long")) -}}
|
||||
<h1>{{ .Title }}</h1>
|
||||
{{ with .Title }}<p class="display-4 mt-3">{{ . }}</p>{{ end }}
|
||||
<small class="text-body-secondary text-uppercase">
|
||||
{{ $datestr | i18n "postedOnDate" -}}
|
||||
{{ if ne $datestr $lastmodstr -}} ({{ $lastmodstr | i18n "lastModified" }}){{ end }} •
|
||||
@@ -14,9 +14,19 @@
|
||||
</small>
|
||||
|
||||
<div class="mt-3">
|
||||
{{ range (.GetTerms "tags") -}}
|
||||
<a class="btn btn-light btn-sm" href="{{ (path.Join .Page.RelPermalink) | relURL }}" role="button">{{ .LinkTitle }}</a>
|
||||
{{ end -}}
|
||||
<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>
|
||||
|
||||
{{ 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>
|
||||
|
||||
{{ end -}}
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
@@ -82,7 +92,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="container-xxl">
|
||||
<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) }}
|
||||
@@ -100,7 +110,7 @@
|
||||
</div>
|
||||
</div>
|
||||
{{ else }}
|
||||
<div class="container-fluid">
|
||||
<div class="container-xxl">
|
||||
<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">
|
||||
|
@@ -4,6 +4,7 @@
|
||||
|
||||
{{- define "main" -}}
|
||||
{{- $page := . -}}
|
||||
|
||||
{{- range $index, $section := site.Params.home.sections -}}
|
||||
{{- $pages := where site.RegularPages "Type" "in" $section -}}
|
||||
{{- $sectionURL := "" -}}
|
||||
@@ -21,4 +22,8 @@
|
||||
"sectionURL" $sectionURL)
|
||||
-}}
|
||||
{{- end -}}
|
||||
|
||||
{{- range $index, $section := site.Params.home.snippets -}}
|
||||
{{- partial "assets/snippet-list.html" (dict "page" $page "section" $section) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
@@ -88,7 +88,7 @@
|
||||
{{- $orientation := .orientation -}}
|
||||
|
||||
<div class="container-fluid p-4">
|
||||
{{ with $title }}<h1>{{ . }}</h1>{{ end }}
|
||||
{{ with $title }}<p class="display-4 mt-3{{ if and $.IsHome site.Params.home.centerHeadline }} text-center{{ end }}">{{ . }}</p>{{ end }}
|
||||
{{ if $paginate }}
|
||||
<div class="row {{ $colGrid }}">
|
||||
{{ $paginator := $page.Paginate $list }}
|
||||
|
@@ -8,7 +8,8 @@
|
||||
"href" Required 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", or "body". By default, no color is specified.
|
||||
"warning", "info", "light", "dark", "white", "black", "body", or "body-tertiary". By default, no
|
||||
color is specified.
|
||||
"padding": Optional padding of the content, either "0", "1", "2", "3", "4", "5", or "auto" (default).
|
||||
"header" Optional header components of the card, displayed in small caps. Supported values are "full"
|
||||
(default), "publication", "tags", and "none".
|
||||
@@ -81,7 +82,7 @@
|
||||
{{- $color := "" -}}
|
||||
{{- with .color }}{{ $color = . }}{{ end -}}
|
||||
{{- if $color -}}
|
||||
{{- $supportedColors := slice "primary" "secondary" "success" "danger" "warning" "info" "light" "dark" "white" "black" "body" -}}
|
||||
{{- $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 -}}
|
||||
{{- end -}}
|
||||
|
94
layouts/partials/assets/list.html
Normal file
94
layouts/partials/assets/list.html
Normal file
@@ -0,0 +1,94 @@
|
||||
<!--
|
||||
Displays a list items with a thumbnail alternating between left and right alignment. The partial 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".
|
||||
"vertical" Optional flag to show vertical tabs instead of horizontal tabs (default).
|
||||
"class": Optional class attribute of the tab group, e.g. “nav-fill”.
|
||||
|
||||
In addition, the following arguments are passed to the individual tabs.
|
||||
"class" Optional class attribute of the tab element, e.g. “w-50”.
|
||||
"color": Optional theme color of the tab, either "primary", "secondary", "success", "danger",
|
||||
"warning", "info", "light", "dark", or "body". By default, no color is specified.
|
||||
-->
|
||||
|
||||
<!-- Inline partial to render the list item's content -->
|
||||
{{- define "partials/list-content.html" -}}
|
||||
{{- $title := .title -}}
|
||||
{{- $content := .content -}}
|
||||
|
||||
<h2>{{ $title }}</h2>
|
||||
<div class="fs-md-5 fs-6">{{ $content }}</div>
|
||||
{{- end -}}
|
||||
|
||||
<!-- Inline partial to render the list item's thumbnail -->
|
||||
{{- define "partials/list-img.html" -}}
|
||||
{{- $thumbnail := .thumbnail -}}
|
||||
{{- $style := .style -}}
|
||||
|
||||
{{- partial "image.html" (dict "url" $thumbnail "outerClass" $style "mode" true) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $page := .page -}}
|
||||
{{- if ne (printf "%T" $page) "*hugolib.pageState" -}}
|
||||
{{- errorf "Invalid value for param 'page'" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{ $list := .list }}
|
||||
{{- if ne (printf "%T" $list) "resource.Resources" -}}
|
||||
{{- errorf "Invalid value for param 'items'" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $title := .title -}}
|
||||
{{- $class := .class -}}
|
||||
{{- $color := .color -}}
|
||||
|
||||
{{ $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 $.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" -}}
|
||||
{{ if $item.Params.tilted }}
|
||||
{{- $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) }}
|
||||
</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 )}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ end -}}
|
||||
</div>
|
||||
|
||||
<div class="d-md-none">
|
||||
{{- 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 $.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)}}
|
||||
</div>
|
||||
<div class="col-12 p-3">
|
||||
{{ partial "partials/list-content.html" (dict "title" $item.Title "content" $item.Content )}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ end -}}
|
||||
</div>
|
62
layouts/partials/assets/nav.html
Normal file
62
layouts/partials/assets/nav.html
Normal file
@@ -0,0 +1,62 @@
|
||||
<!--
|
||||
Displays a tab group of multiple items. Each provided page resource is rendered as a tab pane. The shortcode
|
||||
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".
|
||||
"vertical" Optional flag to show vertical tabs instead of horizontal tabs (default).
|
||||
"class": Optional class attribute of the tab group, e.g. “nav-fill”.
|
||||
|
||||
In addition, the following arguments are passed to the individual tabs.
|
||||
"class" Optional class attribute of the tab element, e.g. “w-50”.
|
||||
"color": Optional theme color of the tab, either "primary", "secondary", "success", "danger",
|
||||
"warning", "info", "light", "dark", or "body". By default, no color is specified.
|
||||
-->
|
||||
|
||||
{{- $page := .page -}}
|
||||
{{- if ne (printf "%T" $page) "*hugolib.pageState" -}}
|
||||
{{- errorf "Invalid value for param 'page'" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{ $list := .list }}
|
||||
{{- if ne (printf "%T" $list) "resource.Resources" -}}
|
||||
{{- errorf "Invalid value for param 'items'" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $title := .title -}}
|
||||
{{- $class := .class -}}
|
||||
{{- $color := .color -}}
|
||||
|
||||
{{ $vertical := false }}
|
||||
{{ $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>
|
||||
{{ 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">
|
||||
{{- 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 }}
|
@@ -5,7 +5,8 @@
|
||||
"size" Optional size of the button, either "sm", "md" (default), or "lg".
|
||||
"fixed" Optional flag to indicate the navbar should stick to the top, defaults to false.
|
||||
"color" Optional background color of the navbar, either "primary", "secondary", "success",
|
||||
"danger", "warning", "info", "light", "dark", "white" or "black". The default color is none.
|
||||
"danger", "warning", "info", "light", "dark", "white", "black", "body", or "body-tertiary". The
|
||||
default color is none.
|
||||
"mode" Optional flag to include a color mode switcher, default is "true" (if dark mode is enabled).
|
||||
"search" Optional flag to include a search input, default is "true".
|
||||
"logo" Optional address of the logo image, defaults to the parameter "logo" set in the "main" section of
|
||||
@@ -83,7 +84,7 @@
|
||||
{{- $color := "" -}}
|
||||
{{- with .color -}}
|
||||
{{- $color = . -}}
|
||||
{{- $supportedColors := slice "primary" "secondary" "success" "danger" "warning" "info" "light" "dark" "white" "black" "body" -}}
|
||||
{{- $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 -}}
|
||||
{{- end -}}
|
||||
@@ -124,7 +125,7 @@
|
||||
{{- $post := .Post -}}
|
||||
|
||||
<nav class="navbar navbar-expand-{{ $size }} {{ with $color }}bg-{{ . }}{{ end }} {{ if $fixed }}fixed-top{{ end }} p-4">
|
||||
<div class="container-fluid p-0">
|
||||
<div class="container-xxl p-0">
|
||||
<!-- Insert sidebar toggler when applicable -->
|
||||
<div class="d-flex">
|
||||
{{- if $page.Scratch.Get "sidebar" -}}
|
||||
|
94
layouts/partials/assets/persona.html
Normal file
94
layouts/partials/assets/persona.html
Normal file
@@ -0,0 +1,94 @@
|
||||
<!--
|
||||
Displays a custom persona card. Either specify a valid path, or set the arguments title, href, content, and
|
||||
thumbnail individually. The latter arguments override any page attributes.
|
||||
|
||||
The shortcode supports the following arguments:
|
||||
"path" Optional path of the page, override with other parameters.
|
||||
"title" Required title of the card.
|
||||
"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
|
||||
color is specified.
|
||||
"content" Optional content of the card.
|
||||
"thumbnail" Optional thumbnail image url, displayed on top or the left of the card.
|
||||
-->
|
||||
|
||||
<!-- Inline partial to render the card's body -->
|
||||
{{- define "partials/persona-body.html" -}}
|
||||
{{- $title := .title -}}
|
||||
{{- $href := .href -}}
|
||||
{{- $color := .color -}}
|
||||
{{- $content := .content -}}
|
||||
|
||||
<h3>{{ $title }}</h3>
|
||||
{{ with $content }}<p>{{ . }}</p>{{ end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $page := "" }}
|
||||
{{- if .path }}
|
||||
{{- $page = site.GetPage .path }}
|
||||
{{- if not $page }}
|
||||
{{- errorf "Cannot find page: %s" .path -}}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{- $title := .title -}}
|
||||
{{- $href := .href -}}
|
||||
{{- $content := .content -}}
|
||||
{{- $thumbnail := .thumbnail -}}
|
||||
|
||||
{{- $color := "" -}}
|
||||
{{- with .color }}{{ $color = . }}{{ end -}}
|
||||
{{- 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 -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- with $page -}}
|
||||
{{- if not $title }}{{ $title = .Title }}{{ end -}}
|
||||
{{- if not $href }}{{ $href = .Permalink }}{{ end -}}
|
||||
{{- if not $content }}{{ $content = .Content }}{{ end -}}
|
||||
{{- if not $thumbnail }}{{ $thumbnail = .Params.thumbnail }}{{ end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $class := .class -}}
|
||||
|
||||
<div class="d-none d-md-block">
|
||||
<div class="persona position-relative row mt-5 align-middle p-3">
|
||||
<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") -}}
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-10 {{ with $color }}bg-{{ . }} text-bg-{{ . }}{{ end }} rounded-5 fs-md-5 fs-6 pe-5 pb-3">
|
||||
<div class="row">
|
||||
<div class="col-3"></div>
|
||||
<div class="col-9">
|
||||
{{- partial "persona-body.html" (dict "title" $title "href" $href "color" $color "content" $content) -}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="d-md-none">
|
||||
<div class="persona position-relative row mt-5 align-middle p-3 ptw-5">
|
||||
<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") -}}
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 {{ with $color }}bg-{{ . }} text-bg-{{ . }}{{ end }} rounded-5 ptw-lg-5 ptw-3 ptw-sm-4 fs-md-5 fs-6 pb-3">
|
||||
<div class="p-5">
|
||||
{{- partial "persona-body.html" (dict "title" $title "href" $href "color" $color "content" $content) -}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@@ -67,7 +67,7 @@
|
||||
{{- end -}}
|
||||
{{- if $reverse -}}{{- $list = $list.Reverse -}}{{ end -}}
|
||||
|
||||
<div class="container-fluid flex-fill p-0{{ with $background }} bg-{{ . }}{{ end }}">
|
||||
<div class="container-xxl flex-fill p-0{{ with $background }} bg-{{ . }}{{ end }}">
|
||||
{{- partial "assets/card-group.html" (dict
|
||||
"page" $page
|
||||
"list" $list
|
||||
|
58
layouts/partials/assets/snippet-list.html
Normal file
58
layouts/partials/assets/snippet-list.html
Normal file
@@ -0,0 +1,58 @@
|
||||
{{- $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 $.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>
|
@@ -6,7 +6,7 @@
|
||||
"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".
|
||||
"danger", "warning", "info", "light", "dark", "white", "black", "body", or "body-tertiary".
|
||||
"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.
|
||||
@@ -40,7 +40,7 @@
|
||||
|
||||
{{ $color := "primary" -}}
|
||||
{{ with .color }}{{ $color = . }}{{ end -}}
|
||||
{{ $supportedColors := slice "primary" "secondary" "success" "danger" "warning" "info" "light" "dark" "white" "black" -}}
|
||||
{{ $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 -}}
|
||||
{{ end -}}
|
||||
|
@@ -1,7 +1,9 @@
|
||||
<footer class="container-fluid text-center p-3">
|
||||
<small class="text-secondary">
|
||||
{{- $copyright := printf "%s © %s %s All rights reserved." (i18n "copyright") (dateFormat "2006" now) .Site.Title }}
|
||||
{{ cond (gt (len .Site.Copyright) 0) .Site.Copyright $copyright }}
|
||||
{{ .Site.Params.footer.license | safeHTML }}
|
||||
</small>
|
||||
<div class="container-xxl text-center">
|
||||
<small class="text-secondary">
|
||||
{{- $copyright := printf "%s © %s %s All rights reserved." (i18n "copyright") (dateFormat "2006" now) .Site.Title }}
|
||||
{{ cond (gt (len .Site.Copyright) 0) .Site.Copyright $copyright }}
|
||||
{{ .Site.Params.footer.license | safeHTML }}
|
||||
</small>
|
||||
</div>
|
||||
</footer>
|
@@ -1,18 +1,20 @@
|
||||
<div class="container-fluid flex-fill bg-primary bg-opacity-{{ .Site.Params.style.themeOpacity | default "25" | safeHTML }} p-4">
|
||||
<div class="row row-cols-1 row-cols-sm-3 align-items-center pt-5 pb-5 h-100">
|
||||
<div class="col col-md-2 d-none d-md-block"></div>
|
||||
<div class="col col-sm-6 col-md-4 text-center text-sm-start">
|
||||
<p class="fs-1 fw-bold">{{ .Title }}</p>
|
||||
<p>{{ .Content }}</p>
|
||||
{{ if .Site.Params.feature.link }}
|
||||
<p><a class="btn btn-primary" href="{{ .Site.Params.feature.link | safeURL }}" role="button">{{ .Site.Params.feature.caption | default (T "about") }}</a></p>
|
||||
{{ end }}
|
||||
<div class="container-fluid flex-fill bg-primary bg-opacity-{{ .Site.Params.style.themeOpacity | default "25" | safeHTML }}">
|
||||
<div class="container-xxl p-4">
|
||||
<div class="row row-cols-1 row-cols-sm-3 align-items-center pt-5 pb-5 h-100">
|
||||
<div class="col col-md-2 d-none d-md-block"></div>
|
||||
<div class="col col-sm-6 col-md-4 text-center text-sm-start">
|
||||
<p class="display-4">{{ .Title }}</p>
|
||||
<p>{{ .Content }}</p>
|
||||
{{ if .Site.Params.feature.link }}
|
||||
<p><a class="btn btn-primary" href="{{ .Site.Params.feature.link | safeURL }}" role="button">{{ .Site.Params.feature.caption | default (T "about") }}</a></p>
|
||||
{{ end }}
|
||||
</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) -}}
|
||||
{{ end }}
|
||||
</div>
|
||||
<div class="col col-md-2 d-none d-md-block"></div>
|
||||
</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) -}}
|
||||
{{ end }}
|
||||
</div>
|
||||
<div class="col col-md-2 d-none d-md-block"></div>
|
||||
</div>
|
||||
</div>
|
@@ -5,6 +5,7 @@
|
||||
wrapped in a figure if a caption is provided, else the image is wrapped in a div with a ratio constraint. The
|
||||
partial supports the following arguments:
|
||||
"url": Required relative url of the image, e.g. "img/example.jpg"
|
||||
"mode": Optional flag indicating if the image should support color modes.
|
||||
"ratio": Optional ratio of the image, either "1x1", "4x3", "16x9", or "21x9". If set, the image is
|
||||
resized and cropped to match the ratio. Else the original aspect ratio of the image is kept.
|
||||
"outerClass": Optional class attribute of the outer div element, e.g. "img-wrap".
|
||||
@@ -13,105 +14,180 @@
|
||||
"caption": Optional figure caption.
|
||||
-->
|
||||
|
||||
{{- $validRatios := slice "1x1" "4x3" "16x9" "21x9" -}}
|
||||
{{- $ratio := .ratio -}}
|
||||
{{- $url := .url -}}
|
||||
{{- $mode := false -}}
|
||||
{{- with .mode -}}
|
||||
{{ $mode = . -}}
|
||||
{{- end -}}
|
||||
{{- $outerClass := .outerClass -}}
|
||||
{{- $innerClass := .innerClass -}}
|
||||
{{- $title := .title -}}
|
||||
{{- $caption := .caption -}}
|
||||
{{- if ne (printf "%T" $mode) "bool" -}}
|
||||
{{- errorf "Invalid value for param 'mode'" -}}
|
||||
{{- end -}}
|
||||
{{- $modes := site.Params.main.modes | default (slice "light" "dark") -}}
|
||||
|
||||
{{- $validRatios := slice "1x1" "4x3" "16x9" "21x9" }}
|
||||
{{ $ratio := .ratio -}}
|
||||
{{ $url := .url -}}
|
||||
{{ $outerClass := .outerClass -}}
|
||||
{{ $innerClass := .innerClass -}}
|
||||
{{ $title := .title -}}
|
||||
{{ $caption := .caption -}}
|
||||
{{ $inner := .inner -}}
|
||||
|
||||
{{- $img := partial "utilities/GetImage.html" (dict "url" $url) -}}
|
||||
{{ with $img -}}
|
||||
{{ $smDim := "" -}}
|
||||
{{ $mdDim := "" -}}
|
||||
{{ $lgDim := "" -}}
|
||||
{{ $xlDim := "" -}}
|
||||
{{ $xxlDim := "" -}}
|
||||
{{ if eq $ratio "4x3" -}}
|
||||
{{ $smDim = "576x432" -}}
|
||||
{{ $mdDim = "768x576" -}}
|
||||
{{ $lgDim = "992x744" -}}
|
||||
{{ $xlDim = "1200x900" -}}
|
||||
{{ $xxlDim = "1400x1050" -}}
|
||||
{{ else if eq $ratio "1x1" -}}
|
||||
{{ $smDim = "576x576" -}}
|
||||
{{ $mdDim = "768x768" -}}
|
||||
{{ $lgDim = "992x992" -}}
|
||||
{{ $xlDim = "1200x1200" -}}
|
||||
{{ $xxlDim = "1400x1400" -}}
|
||||
{{ else if eq $ratio "16x9" -}}
|
||||
{{ $smDim = "576x324" -}}
|
||||
{{ $mdDim = "768x432" -}}
|
||||
{{ $lgDim = "992x558" -}}
|
||||
{{ $xlDim = "1200x675" -}}
|
||||
{{ $xxlDim = "1400x788" -}}
|
||||
{{ else if eq $ratio "21x9" -}}
|
||||
{{ $smDim = "576x247" -}}
|
||||
{{ $mdDim = "768x329" -}}
|
||||
{{ $lgDim = "992x425" -}}
|
||||
{{ $xlDim = "1200x514" -}}
|
||||
{{ $xxlDim = "1400x600" -}}
|
||||
{{ else }}
|
||||
{{ $smDim = printf "576x%d" (int (math.Round (mul (div 576.0 $img.Width) $img.Height))) -}}
|
||||
{{ $mdDim = printf "768x%d" (int (math.Round (mul (div 768.0 $img.Width) $img.Height))) -}}
|
||||
{{ $lgDim = printf "992x%d" (int (math.Round (mul (div 992.0 $img.Width) $img.Height))) -}}
|
||||
{{ $xlDim = printf "1200x%d" (int (math.Round (mul (div 1200.0 $img.Width) $img.Height))) -}}
|
||||
{{ $xxlDim = printf "1400x%d" (int (math.Round (mul (div 1400.0 $img.Width) $img.Height))) -}}
|
||||
{{ end -}}
|
||||
<!-- Generate a fallback image of type jpg -->
|
||||
{{- define "partials/image-default.html" -}}
|
||||
{{- $img := .img -}}
|
||||
{{- $ratio := .ratio -}}
|
||||
{{- $width := "1400" -}}
|
||||
{{- $dim := "" -}}
|
||||
{{- $fallback := "" -}}
|
||||
|
||||
{{- $sm := "" -}}
|
||||
{{ $md := "" -}}
|
||||
{{ $lg := "" -}}
|
||||
{{ $xl := "" -}}
|
||||
{{ $xxl := "" -}}
|
||||
{{ $fallback := "" -}}
|
||||
{{ if $ratio }}
|
||||
{{- $sm = ($img.Fill (printf "%s webp" $smDim)) -}}
|
||||
{{ $md = ($img.Fill (printf "%s webp" $mdDim)) -}}
|
||||
{{ $lg = ($img.Fill (printf "%s webp" $lgDim)) -}}
|
||||
{{ $xl = ($img.Fill (printf "%s webp" $xlDim)) -}}
|
||||
{{ $xxl = ($img.Fill (printf "%s webp" $xxlDim)) -}}
|
||||
{{ $fallback = ($img.Fill (printf "%s jpg" $xxlDim)) -}}
|
||||
{{ else }}
|
||||
{{- $sm = ($img.Fit (printf "%s webp" $smDim)) -}}
|
||||
{{ $md = ($img.Fit (printf "%s webp" $mdDim)) -}}
|
||||
{{ $lg = ($img.Fit (printf "%s webp" $lgDim)) -}}
|
||||
{{ $xl = ($img.Fit (printf "%s webp" $xlDim)) -}}
|
||||
{{ $xxl = ($img.Fit (printf "%s webp" $xxlDim)) -}}
|
||||
{{ $fallback = ($img.Fit (printf "%s jpg" $xxlDim)) -}}
|
||||
{{ end}}
|
||||
{{- with $img -}}
|
||||
{{- if eq $ratio "4x3" -}}
|
||||
{{- $dim = "1400x1050" }}
|
||||
{{- else if eq $ratio "1x1" -}}
|
||||
{{- $dim = "1400x1400" }}
|
||||
{{- else if eq $ratio "16x9" -}}
|
||||
{{- $dim = "1400x788" -}}
|
||||
{{- else if eq $ratio "21x9" -}}
|
||||
{{- $dim = "1400x600" -}}
|
||||
{{- else -}}
|
||||
{{- $dim = printf "%sx%d" $width (int (math.Round (mul (div (float $width) $img.Width) $img.Height))) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- with $caption -}}
|
||||
<figure class="figure">
|
||||
{{- if $ratio -}}
|
||||
{{- $fallback = ($img.Fill (printf "%s jpg" $dim)) -}}
|
||||
{{- else -}}
|
||||
{{- $fallback = ($img.Fit (printf "%s jpg" $dim)) -}}
|
||||
{{- end -}}
|
||||
{{- $clean := path.Ext $img.RelPermalink -}}
|
||||
{{- $ext := path.Ext $img.RelPermalink -}}
|
||||
{{- $fallback = $fallback | resources.Copy (replace $img.RelPermalink $clean (printf "-%s%s" $dim $ext)) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- return $fallback -}}
|
||||
{{- end -}}
|
||||
|
||||
|
||||
<!-- Generate a image set of type webp -->
|
||||
{{- define "partials/image-scaled.html " -}}
|
||||
{{- $img := .img -}}
|
||||
{{- $ratio := .ratio -}}
|
||||
{{- $imgset := "" -}}
|
||||
|
||||
{{- $widths := slice "576" "768" "992" "1200" "1400" -}}
|
||||
{{- $dims := slice -}}
|
||||
{{- with $img -}}
|
||||
{{- if eq $ratio "4x3" -}}
|
||||
{{- $dims = slice "576x432" "768x576" "992x744" "1200x900" "1400x1050" -}}
|
||||
{{- else if eq $ratio "1x1" -}}
|
||||
{{- $dims = slice "576x576" "768x768" "992x992" "1200x1200" "1400x1400" -}}
|
||||
{{- else if eq $ratio "16x9" -}}
|
||||
{{- $dims = slice "576x324" "768x432" "992x558" "1200x675" "1400x788" -}}
|
||||
{{- else if eq $ratio "21x9" -}}
|
||||
{{- $dims = slice "576x247" "768x329" "992x425" "1200x514" "1400x600" -}}
|
||||
{{- else -}}
|
||||
{{- range $width := $widths -}}
|
||||
{{- $dims = $dims | append (printf "%sx%d" $width (int (math.Round (mul (div (float $width) $img.Width) $img.Height)))) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $scaled := "" -}}
|
||||
{{- range $index, $dim := $dims -}}
|
||||
{{- $clean := path.Ext $img.RelPermalink -}}
|
||||
{{- if $ratio -}}
|
||||
{{- $scaled = $img.Fill (printf "%s webp" $dim) -}}
|
||||
{{- else -}}
|
||||
{{- $scaled = $img.Fit (printf "%s webp" $dim) -}}
|
||||
{{- end -}}
|
||||
{{- $scaled = $scaled | resources.Copy (replace $img.RelPermalink $clean (printf "-%s.webp" $dim)) -}}
|
||||
{{- $imgset = printf "%s, %s %sw" $imgset $scaled.RelPermalink (index $widths $index) -}}
|
||||
{{- end -}}
|
||||
{{- $imgset = strings.TrimPrefix ", " $imgset -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- return $imgset -}}
|
||||
{{- end -}}
|
||||
|
||||
<!-- Define the img with optional caption -->
|
||||
{{- define "partials/image-definition.html" -}}
|
||||
{{- $ratio := .ratio -}}
|
||||
{{- $url := .url -}}
|
||||
{{- $outerClass := .outerClass -}}
|
||||
{{- $innerClass := .innerClass -}}
|
||||
{{- $title := .title -}}
|
||||
{{- $caption := .caption -}}
|
||||
{{- $fallbackURL := "" -}}
|
||||
{{- $imgset := "" -}}
|
||||
{{- $mode := .mode -}}
|
||||
{{- $modes := .modes -}}
|
||||
|
||||
{{- if hasSuffix $url "svg" -}}
|
||||
{{- $fallbackURL = $url -}}
|
||||
{{- else -}}
|
||||
{{- $img := partial "utilities/GetImage.html" (dict "url" $url) -}}
|
||||
{{- if $img -}}
|
||||
{{- $fallback := partial "partials/image-default.html" (dict "img" $img "ratio" $ratio) -}}
|
||||
{{- $fallbackURL = $fallback.RelPermalink -}}
|
||||
{{- $imgset = partial "partials/image-scaled.html " (dict "img" $img "ratio" $ratio) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- range $none := $modes -}}
|
||||
{{- if ne $none $mode -}}
|
||||
{{- $outerClass = printf "%s d-none-%s" $outerClass $none -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if $caption -}}
|
||||
<figure class="figure {{ $outerClass }}">
|
||||
<img class="figure-img img-fluid {{ $innerClass }}"
|
||||
srcset="
|
||||
{{- with $xxl.RelPermalink -}}{{.}} 1400w{{- end -}}
|
||||
{{- with $xl.RelPermalink -}}, {{.}} 1200w{{- end -}}
|
||||
{{- with $lg.RelPermalink -}}, {{.}} 992w{{- end -}}
|
||||
{{- with $md.RelPermalink -}}, {{.}} 768w{{- end -}}
|
||||
{{- with $sm.RelPermalink -}}, {{.}} 576w{{- end -}}"
|
||||
sizes="100vw"
|
||||
src="{{ $fallback.RelPermalink }}"
|
||||
alt="{{ $title }}">
|
||||
<figcaption class="figure-caption">{{ . | safeHTML }}</figcaption>
|
||||
{{ $inner }}
|
||||
{{ 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 }}">
|
||||
<img class="img-fluid {{ $innerClass }}"
|
||||
srcset="
|
||||
{{- with $xxl.RelPermalink -}}{{.}} 1400w{{- end -}}
|
||||
{{- with $xl.RelPermalink -}}, {{.}} 1200w{{- end -}}
|
||||
{{- with $lg.RelPermalink -}}, {{.}} 992w{{- end -}}
|
||||
{{- with $md.RelPermalink -}}, {{.}} 768w{{- end -}}
|
||||
{{- with $sm.RelPermalink -}}, {{.}} 576w{{- end -}}"
|
||||
{{ with $imgset -}}
|
||||
srcset="{{ . }}"
|
||||
sizes="100vw"
|
||||
src="{{ $fallback.RelPermalink }}"
|
||||
{{- end }}
|
||||
src="{{ $fallbackURL }}"
|
||||
alt="{{ $title }}">
|
||||
{{ $inner }}
|
||||
</div>
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
<!-- Initiate the regular or color-mode image -->
|
||||
{{- if $mode -}}
|
||||
{{- $ext := path.Ext $url -}}
|
||||
{{- $base := strings.TrimSuffix $ext $url -}}
|
||||
{{- range $suffix := $modes -}}
|
||||
{{- $base = strings.TrimSuffix (printf "-%s" $suffix) $base -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- range $suffix := $modes -}}
|
||||
{{- $image := printf "%s-%s%s" $base $suffix $ext -}}
|
||||
{{- partial "partials/image-definition.html" (dict
|
||||
"ratio" $ratio
|
||||
"url" $image
|
||||
"outerClass" $outerClass
|
||||
"innerClass" $innerClass
|
||||
"title" $title
|
||||
"caption" $caption
|
||||
"mode" $suffix
|
||||
"modes" $modes)
|
||||
-}}
|
||||
{{- end -}}
|
||||
{{- else -}}
|
||||
{{- partial "partials/image-definition.html" (dict
|
||||
"ratio" $ratio
|
||||
"url" $url
|
||||
"outerClass" $outerClass
|
||||
"innerClass" $innerClass
|
||||
"title" $title
|
||||
"caption" $caption)
|
||||
-}}
|
||||
{{- end -}}
|
||||
|
@@ -1,14 +1,14 @@
|
||||
<!--
|
||||
Displays an alert. The shortcode supports the following arguments:
|
||||
"color": Optional theme color of the alert, either "primary" (default), "secondary", "success", "danger",
|
||||
"warning", "info", "light", "dark", "white" or "black".
|
||||
"warning", "info", "light", "dark", "white" or "black", "body", or "body-tertiary".
|
||||
"dismissible" Optional flag to indicate the alert is dismissible, defaults to false.
|
||||
"icon" Optional class and name of a Font Awesome icon to include.
|
||||
-->
|
||||
|
||||
{{ $color := "primary" -}}
|
||||
{{ with .Get "color" }}{{ $color = . }}{{ end -}}
|
||||
{{ $supportedColors := slice "primary" "secondary" "success" "danger" "warning" "info" "light" "dark" -}}
|
||||
{{ $supportedColors := slice "primary" "secondary" "success" "danger" "warning" "info" "light" "dark" "body" "body-tertiary" -}}
|
||||
{{ if not (in $supportedColors $color) -}}
|
||||
{{ errorf "Invalid value for param 'color': %s" .Position -}}
|
||||
{{ $color = "primary" -}}
|
||||
|
@@ -6,7 +6,7 @@
|
||||
"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".
|
||||
"danger", "warning", "info", "light", "dark", "white", "black", "body", or "body-tertiary".
|
||||
"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 label for the badge.
|
||||
@@ -42,7 +42,7 @@
|
||||
|
||||
{{ $color := "primary" -}}
|
||||
{{ with .Get "color" }}{{ $color = . }}{{ end -}}
|
||||
{{ $supportedColors := slice "primary" "secondary" "success" "danger" "warning" "info" "light" "dark" "white" "black" -}}
|
||||
{{ $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 }}
|
||||
|
@@ -3,7 +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" or "black". By default, no color is specified.
|
||||
"warning", "info", "light", "dark", "white", "black", "body", or "body-tertiary". By default, no
|
||||
color is specified.
|
||||
"padding": Optional padding of the content, either "0", "1", "2", "3", "4", "5", or "auto" (default).
|
||||
"header" Optional header components of the card, displayed in small caps. Supported values are "full"
|
||||
(default), "publication", "tags", and "none".
|
||||
@@ -26,7 +27,7 @@
|
||||
{{ $color := "" -}}
|
||||
{{ with .Get "color" }}{{ $color = . }}{{ end -}}
|
||||
{{ if $color }}
|
||||
{{ $supportedColors := slice "primary" "secondary" "success" "danger" "warning" "info" "light" "dark" "white" "black" -}}
|
||||
{{ $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 -}}
|
||||
|
@@ -33,11 +33,6 @@
|
||||
{{- end -}}
|
||||
<div class="d-flex align-items-center ps-3 pe-3 py-1 border-top border-bottom syntax-highlight">
|
||||
<small class="font-monospace text-body-secondary text-uppercase">{{- $lang -}}</small>
|
||||
<!-- <div class="d-flex ms-auto">
|
||||
<button type="button" class="mt-0 me-0 border-0" title="Copy to clipboard">
|
||||
<i class="fa-regular fa-clipboard"></i>
|
||||
</button>
|
||||
</div> -->
|
||||
</div>
|
||||
<div class="rounded-bottom syntax-highlight">
|
||||
{{- if eq $show_markup true -}}
|
||||
|
@@ -9,6 +9,7 @@
|
||||
"class": Optional class attribute of the inner img element, e.g. "rounded".
|
||||
"title": Optional alternate text of the image.
|
||||
"caption": Optional figure caption.
|
||||
"mode": Optional flag indicating if the image should support color modes.
|
||||
-->
|
||||
|
||||
{{- if isset .Params "src" -}}
|
||||
@@ -24,8 +25,24 @@
|
||||
{{- $class := .Get "class" -}}
|
||||
{{ $title := .Get "title" -}}
|
||||
{{ $caption := .Get "caption" -}}
|
||||
{{ $supportedFlags := slice "true" "false" -}}
|
||||
{{ $modeParam := "false" -}}
|
||||
{{ $mode := false -}}
|
||||
{{ with .Get "mode" }}{{ $modeParam = . }}{{ end -}}
|
||||
{{ if in $supportedFlags $modeParam -}}
|
||||
{{ if eq $modeParam "true" }}{{ $mode = true }}{{ else }}{{ $mode = false }}{{ end -}}
|
||||
{{ else -}}
|
||||
{{ errorf "Invalid value for param 'mode': %s" $modeParam -}}
|
||||
{{ end -}}
|
||||
|
||||
{{- partial "image.html" (dict "url" $url "ratio" $ratio "innerClass" $class "title" $title "caption" $caption) -}}
|
||||
{{- partial "image.html" (dict
|
||||
"url" $url
|
||||
"ratio" $ratio
|
||||
"innerClass" $class
|
||||
"title" $title
|
||||
"caption" $caption
|
||||
"mode" $mode)
|
||||
-}}
|
||||
{{ else -}}
|
||||
{{ errorf "Missing value for param 'src': %s" .Position -}}
|
||||
{{ end -}}
|
@@ -6,37 +6,49 @@
|
||||
-->
|
||||
|
||||
{{- $id := .Ordinal -}}
|
||||
{{ $header := .Get "header" -}}
|
||||
{{ if not $header -}}
|
||||
{{ if .Parent }}
|
||||
{{ errorf "Missing value for param 'header': %s" .Parent.Position -}}
|
||||
{{ else }}
|
||||
{{ errorf "Missing value for param 'header': %s" .Position -}}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
|
||||
{{ $class := .Get "class" -}}
|
||||
{{ $body := trim .Inner " \r\n" -}}
|
||||
{{ if not $body -}}
|
||||
{{ if .Parent }}
|
||||
{{ errorf "Missing inner element text: %s" .Parent.Position -}}
|
||||
{{ else }}
|
||||
{{ errorf "Missing inner element text: %s" .Position -}}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
|
||||
{{ $supportedFlags := slice "true" "false" -}}
|
||||
{{ $showParam := "false" -}}
|
||||
{{ $show := false -}}
|
||||
{{ with .Get "show" }}{{ $showParam = . }}{{ end -}}
|
||||
{{ if in $supportedFlags $showParam -}}
|
||||
{{ if eq $showParam "true" }}{{ $show = true }}{{ else }}{{ $show = false }}{{ end -}}
|
||||
{{ else -}}
|
||||
{{ errorf "Invalid value for param 'show': %s" $showParam -}}
|
||||
{{ end -}}
|
||||
|
||||
{{- $parent := printf "nav-%d" .Parent.Ordinal -}}
|
||||
{{- with (.Parent.Get "id") -}}
|
||||
{{- $parent = . -}}
|
||||
{{- end -}}
|
||||
|
||||
<div class="tab-pane{{ if $show }} active{{ end }}" id="{{ $parent }}-{{ $id }}" role="tabpanel" aria-labelledby="{{ $parent }}-btn-{{ $id }}" tabindex="0" data-header="{{ $header }}" {{ if $show }}data-show-id="{{ $id }}"{{ end }}>
|
||||
{{- $fade := false -}}
|
||||
{{- if eq (.Parent.Get "fade") "true" -}}
|
||||
{{- $fade = true -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $header := .Get "header" -}}
|
||||
{{- if not $header -}}
|
||||
{{- if .Parent -}}
|
||||
{{- errorf "Missing value for param 'header': %s" .Parent.Position -}}
|
||||
{{- else -}}
|
||||
{{- errorf "Missing value for param 'header': %s" .Position -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $class := .Get "class" -}}
|
||||
{{- $body := trim .Inner " \r\n" -}}
|
||||
|
||||
{{- $supportedFlags := slice "true" "false" -}}
|
||||
{{- $showParam := "false" -}}
|
||||
{{- $show := false -}}
|
||||
{{- with .Get "show" }}{{ $showParam = . }}{{ end -}}
|
||||
{{- if in $supportedFlags $showParam -}}
|
||||
{{- if eq $showParam "true" }}{{ $show = true }}{{ else }}{{ $show = false }}{{ end -}}
|
||||
{{- else -}}
|
||||
{{- errorf "Invalid value for param 'show': %s" $showParam -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $disabledParam := "false" -}}
|
||||
{{- $disabled := false -}}
|
||||
{{- with .Get "disabled" }}{{ $disabledParam = . }}{{ end -}}
|
||||
{{- if in $supportedFlags $disabledParam -}}
|
||||
{{- if eq $disabledParam "true" }}{{ $disabled = true }}{{ else }}{{ $disabled = false }}{{ end -}}
|
||||
{{- else -}}
|
||||
{{- errorf "Invalid value for param 'disabled': %s" $disabledParam -}}
|
||||
{{- end -}}
|
||||
|
||||
<div class="tab-pane{{ if $show }} active {{ if $fade}}show{{ end }}{{ end }} {{ if $fade}}fade{{ end }}" id="{{ $parent }}-{{ $id }}"
|
||||
role="tabpanel" aria-labelledby="{{ $parent }}-btn-{{ $id }}" tabindex="0" data-header="{{ $header }}" {{ if $show }}data-show-id="{{ $id }}"{{ end }}
|
||||
data-has-content="{{ gt (len $body) 0 }}" {{ if $disabled }} data-disabled-id="{{ $id }}"{{ end }}>
|
||||
{{ $body | markdownify | safeHTML }}
|
||||
</div>
|
||||
|
@@ -3,12 +3,15 @@
|
||||
following arguments:
|
||||
"type" Optional type of the tab group, either "tabs", "pills", or "underline".
|
||||
"vertical" Optional flag to show vertical tabs instead of horizontal tabs (default).
|
||||
"fade" Optional flag to make tab panes fade in.
|
||||
"class": Optional class attribute of the tab group, e.g. “nav-fill”.
|
||||
-->
|
||||
|
||||
<!-- TODO: add fade support -->
|
||||
{{- $id := printf "nav-%d" .Ordinal -}}
|
||||
{{ with .Get "id" }}
|
||||
{{ $id = . }}
|
||||
{{ end }}
|
||||
|
||||
{{- $id := .Ordinal -}}
|
||||
{{- $class := .Get "class" -}}
|
||||
{{ $type := .Get "type" -}}
|
||||
{{ $supportedNavTypes := slice "tabs" "pills" "underline" -}}
|
||||
@@ -28,6 +31,12 @@
|
||||
{{ errorf "Invalid value for param 'vertical': %s" $verticalParam -}}
|
||||
{{- end -}}
|
||||
|
||||
{{ $fadeParam := "false" -}}
|
||||
{{ with .Get "fade" }}{{ $fadeParam = . }}{{ end -}}
|
||||
{{ if not (in $supportedFlags $fadeParam) -}}
|
||||
{{ errorf "Invalid value for param 'fade': %s" $fadeParam -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if and (eq $type "tabs") $vertical -}}
|
||||
{{- errorf "Tabs do not support vertical layout" -}}
|
||||
{{- end -}}
|
||||
@@ -40,18 +49,29 @@
|
||||
{{- $showID = int (partial "utilities/GetVal.html" (index $showVal 0)) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{ $disabled := slice -}}
|
||||
{{- $disabledVal := findRE "data-disabled-id=\"(.+?)\"" $inner -}}
|
||||
{{- range $item := $disabledVal -}}
|
||||
{{- $disabled = $disabled | append (int (partial "utilities/GetVal.html" $item)) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $hasContent := gt (len (findRE "data-has-content=\"true\"" $inner)) 0 -}}
|
||||
|
||||
{{ 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 }}>
|
||||
<div class="nav{{ with $type }} nav-{{ . }}{{ end }}{{ with $class }} {{ . }}{{ end }}{{ if $vertical }} flex-column{{ end }}" id="{{ $id }}" role="tablist"{{ if $vertical }} aria-orientation="vertical"{{ end }}>
|
||||
{{- range $index, $item := $items -}}
|
||||
{{- $header := partial "utilities/GetVal.html" $item -}}
|
||||
<button class="nav-link text-nowrap{{ if eq $index $showID }} 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 }}">
|
||||
{{- $itemDisabled := in $disabled $index -}}
|
||||
<button class="nav-link text-nowrap{{ if eq $index $showID }} active{{ end }} {{ if $itemDisabled}} disabled {{end }}" id="{{ $id }}-btn-{{ $index }}" data-bs-toggle="pill" data-bs-target="#{{ $id }}-{{ $index }}"
|
||||
type="button" role="tab" aria-controls="{{ $id }}-{{ $index }}" aria-selected="{{ if eq $index 0 }}true{{ else }}false{{ end }}">
|
||||
{{ $header }}
|
||||
</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 }}">
|
||||
{{- $inner -}}
|
||||
</div>
|
||||
{{- if $hasContent -}}
|
||||
<div class="tab-content {{ if eq $type "tabs" }}border border-top-0 p-3{{ else if $vertical }}ms-3{{ else }}mt-3{{ end }}">
|
||||
{{- $inner -}}
|
||||
</div>
|
||||
{{- end -}}
|
||||
{{ if $vertical }}</div>{{ end }}
|
||||
|
@@ -7,7 +7,8 @@
|
||||
"size" Optional breakpoint of the navbar toggler, either "xs", "sm", "md" (default), "lg", or "xl".
|
||||
"style" Optional style of the navbar, either "light" (default) or "dark".
|
||||
"color" Optional background color of the navbar, either "primary", "secondary", "success",
|
||||
"danger", "warning", "info", "light", "dark", "white" or "black". The default color is none.
|
||||
"danger", "warning", "info", "light", "dark", "white", "black", "body", or "body-tertiary". The
|
||||
default color is none.
|
||||
"mode" Optional flag to include a color mode switcher, default is "true" (if dark mode is enabled).
|
||||
"search" Optional flag to include a search input, default is "true".
|
||||
"logo" Optional address of the logo image.
|
||||
@@ -15,7 +16,7 @@
|
||||
-->
|
||||
|
||||
{{ $error := false }}
|
||||
{{ $supportedColors := slice "primary" "secondary" "success" "danger" "warning" "info" "light" "dark" "white" "black" "body" -}}
|
||||
{{ $supportedColors := slice "primary" "secondary" "success" "danger" "warning" "info" "light" "dark" "white" "black" "body" "body" "body-tertiary" -}}
|
||||
{{ $supportedFlags := slice "true" "false" -}}
|
||||
|
||||
{{ $id := add .Ordinal 1 }}
|
||||
|
33
layouts/shortcodes/persona.html
Normal file
33
layouts/shortcodes/persona.html
Normal file
@@ -0,0 +1,33 @@
|
||||
<!--
|
||||
Displays a custom persona card. The shortcode supports the following arguments:
|
||||
"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.
|
||||
-->
|
||||
|
||||
{{- $error := false -}}
|
||||
|
||||
{{- $path := .Get "path" -}}
|
||||
{{- $page := .Site.GetPage $path -}}
|
||||
{{- if not $page -}}
|
||||
{{- errorf "Invalid or missing value for param 'path': %s" .Position -}}
|
||||
{{- $error = true -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $class := .Get "class" -}}
|
||||
|
||||
{{- $color := "" -}}
|
||||
{{- with .Get "color" }}{{ $color = . }}{{ end -}}
|
||||
{{- if $color -}}
|
||||
{{- $supportedColors := slice "primary" "secondary" "success" "danger" "warning" "info" "light" "dark" "white" "black" "body-tertiary" -}}
|
||||
{{- if not (in $supportedColors $color) -}}
|
||||
{{- errorf "Invalid value for param 'color': %s" .Position -}}
|
||||
{{- $error = true -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if not $error -}}
|
||||
{{- partial "assets/persona.html" (dict "path" $path "class" $class "color" $color) -}}
|
||||
{{- end -}}
|
@@ -1,14 +1,14 @@
|
||||
<!--
|
||||
Displays a spinner. The shortcode supports the following arguments:
|
||||
"color": Optional theme color of the alert, either "primary" (default), "secondary", "success", "danger",
|
||||
"warning", "info", "light", "dark", "white" or "black".
|
||||
"warning", "info", "light", "dark", "white", "black", "body", or "body-tertiary".
|
||||
"grow" Optional flag to indicate the spinner is growing instead of rotating, defaults to false.
|
||||
"class": Optional class attribute of the spinner wrapping element, e.g. “text-center”.
|
||||
-->
|
||||
|
||||
{{ $color := "primary" -}}
|
||||
{{ with .Get "color" }}{{ $color = . }}{{ end -}}
|
||||
{{ $supportedColors := slice "primary" "secondary" "success" "danger" "warning" "info" "light" "dark" "white" "black" -}}
|
||||
{{ $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 -}}
|
||||
{{ $color = "primary" -}}
|
||||
|
@@ -1,7 +1,7 @@
|
||||
<!--
|
||||
Displays a tooltip for a link. The shortcode supports the following arguments:
|
||||
"color": Optional theme color of the element, either "primary" (default), "secondary", "success",
|
||||
"danger", "warning", "info", "light", "dark", "white" or "black".
|
||||
"danger", "warning", "info", "light", "dark", "white", "black", "body", or "body-tertiary".
|
||||
"title" Required text to display in the tooltip.
|
||||
"href" Required address for the button or hyperlink.
|
||||
"placement" Optional position of the tooltip: "top" (default), "bottom", "left", or "right".
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
{{ $color := "primary" -}}
|
||||
{{ with .Get "color" }}{{ $color = . }}{{ end -}}
|
||||
{{ $supportedColors := slice "primary" "secondary" "success" "danger" "warning" "info" "light" "dark" "white" "black" -}}
|
||||
{{ $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 }}
|
||||
|
@@ -3,7 +3,7 @@
|
||||
<div class="row row-cols-1 row-cols-sm-3 align-items-center p-3">
|
||||
<div class="col col-md-2 d-none d-md-block"></div>
|
||||
<div class="col col-sm-12 col-md-8">
|
||||
<h1>{{ .Name | humanize }}</h1>
|
||||
<p class="display-4">{{ .Name | humanize }}</p>
|
||||
|
||||
{{ if eq .Kind "taxonomy" }}
|
||||
<div class="row mt-5"></div>
|
||||
|
161
package-lock.json
generated
161
package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@gethinode/hinode",
|
||||
"version": "0.11.8",
|
||||
"version": "0.12.0-alpha2",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@gethinode/hinode",
|
||||
"version": "0.11.8",
|
||||
"version": "0.12.0-alpha2",
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"@fortawesome/fontawesome-free": "^6.4.0",
|
||||
@@ -22,7 +22,7 @@
|
||||
"eslint-plugin-promise": "^6.1.1",
|
||||
"flexsearch": "^0.7.31",
|
||||
"hugo-bin": "^0.102.0",
|
||||
"markdownlint-cli2": "^0.6.0",
|
||||
"markdownlint-cli2": "^0.7.0",
|
||||
"postcss-cli": "^10.1.0",
|
||||
"purgecss-whitelister": "^2.4.0",
|
||||
"rimraf": "^5.0.0",
|
||||
@@ -138,9 +138,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@csstools/css-parser-algorithms": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.1.0.tgz",
|
||||
"integrity": "sha512-KP8TicdXpUyeB1NMlbHud/1l39xvLGvqNFWMpG4qC6H1zs9SadGUHe5SO92n/659sDW9aGDvm9AMru0DZkN1Bw==",
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.1.1.tgz",
|
||||
"integrity": "sha512-viRnRh02AgO4mwIQb2xQNJju0i+Fh9roNgmbR5xEuG7J3TGgxjnE95HnBLgsFJOJOksvcfxOUCgODcft6Y07cA==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": "^14 || ^16 || >=18"
|
||||
@@ -150,13 +150,13 @@
|
||||
"url": "https://opencollective.com/csstools"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@csstools/css-tokenizer": "^2.0.0"
|
||||
"@csstools/css-tokenizer": "^2.1.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@csstools/css-tokenizer": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.1.0.tgz",
|
||||
"integrity": "sha512-dtqFyoJBHUxGi9zPZdpCKP1xk8tq6KPHJ/NY4qWXiYo6IcSGwzk3L8x2XzZbbyOyBs9xQARoGveU2AsgLj6D2A==",
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.1.1.tgz",
|
||||
"integrity": "sha512-GbrTj2Z8MCTUv+52GE0RbFGM527xuXZ0Xa5g0Z+YN573uveS4G0qi6WNOMyz3yrFM/jaILTTwJ0+umx81EzqfA==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": "^14 || ^16 || >=18"
|
||||
@@ -167,9 +167,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@csstools/media-query-list-parser": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.0.1.tgz",
|
||||
"integrity": "sha512-X2/OuzEbjaxhzm97UJ+95GrMeT29d1Ib+Pu+paGLuRWZnWRK9sI9r3ikmKXPWGA1C4y4JEdBEFpp9jEqCvLeRA==",
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.0.4.tgz",
|
||||
"integrity": "sha512-GyYot6jHgcSDZZ+tLSnrzkR7aJhF2ZW6d+CXH66mjy5WpAQhZD4HDke2OQ36SivGRWlZJpAz7TzbW6OKlEpxAA==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": "^14 || ^16 || >=18"
|
||||
@@ -179,8 +179,8 @@
|
||||
"url": "https://opencollective.com/csstools"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"postcss": "^8.4",
|
||||
"postcss-selector-parser": "^6.0.10"
|
||||
"@csstools/css-parser-algorithms": "^2.1.1",
|
||||
"@csstools/css-tokenizer": "^2.1.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@csstools/selector-specificity": {
|
||||
@@ -3235,9 +3235,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/globby": {
|
||||
"version": "13.1.3",
|
||||
"resolved": "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz",
|
||||
"integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==",
|
||||
"version": "13.1.4",
|
||||
"resolved": "https://registry.npmjs.org/globby/-/globby-13.1.4.tgz",
|
||||
"integrity": "sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"dir-glob": "^3.0.1",
|
||||
@@ -3377,9 +3377,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/html-tags": {
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz",
|
||||
"integrity": "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==",
|
||||
"version": "3.3.1",
|
||||
"resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz",
|
||||
"integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
@@ -4068,26 +4068,27 @@
|
||||
}
|
||||
},
|
||||
"node_modules/markdownlint": {
|
||||
"version": "0.27.0",
|
||||
"resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.27.0.tgz",
|
||||
"integrity": "sha512-HtfVr/hzJJmE0C198F99JLaeada+646B5SaG2pVoEakLFI6iRGsvMqrnnrflq8hm1zQgwskEgqSnhDW11JBp0w==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.28.1.tgz",
|
||||
"integrity": "sha512-8At2DbgGKT/RVBinkqIPqLETopPXyQFGWSiTCJSr9Y6wVVyY70cDJ9dw3FXePn4AkytIUclgrsgI6KVeqeHFoA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"markdown-it": "13.0.1"
|
||||
"markdown-it": "13.0.1",
|
||||
"markdownlint-micromark": "0.1.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.18.0"
|
||||
}
|
||||
},
|
||||
"node_modules/markdownlint-cli2": {
|
||||
"version": "0.6.0",
|
||||
"resolved": "https://registry.npmjs.org/markdownlint-cli2/-/markdownlint-cli2-0.6.0.tgz",
|
||||
"integrity": "sha512-Bv20r6WGdcHMWi8QvAFZ3CBunf4i4aYmVdTfpAvXODI/1k3f09DZZ0i0LcX9ZMhlVxjoOzbVDz1NWyKc5hwTqg==",
|
||||
"version": "0.7.0",
|
||||
"resolved": "https://registry.npmjs.org/markdownlint-cli2/-/markdownlint-cli2-0.7.0.tgz",
|
||||
"integrity": "sha512-67r1t9ep+z0fa6g9TgL3tiPQeWo297ip165Et2u54UquJAkXWnq6e+dXFBjSPft/iLaGJfU0fUHXhXueqNUkGQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"globby": "13.1.3",
|
||||
"markdownlint": "0.27.0",
|
||||
"markdownlint-cli2-formatter-default": "0.0.3",
|
||||
"globby": "13.1.4",
|
||||
"markdownlint": "0.28.1",
|
||||
"markdownlint-cli2-formatter-default": "0.0.4",
|
||||
"micromatch": "4.0.5",
|
||||
"strip-json-comments": "5.0.0",
|
||||
"yaml": "2.2.1"
|
||||
@@ -4102,9 +4103,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/markdownlint-cli2-formatter-default": {
|
||||
"version": "0.0.3",
|
||||
"resolved": "https://registry.npmjs.org/markdownlint-cli2-formatter-default/-/markdownlint-cli2-formatter-default-0.0.3.tgz",
|
||||
"integrity": "sha512-QEAJitT5eqX1SNboOD+SO/LNBpu4P4je8JlR02ug2cLQAqmIhh8IJnSK7AcaHBHhNADqdGydnPpQOpsNcEEqCw==",
|
||||
"version": "0.0.4",
|
||||
"resolved": "https://registry.npmjs.org/markdownlint-cli2-formatter-default/-/markdownlint-cli2-formatter-default-0.0.4.tgz",
|
||||
"integrity": "sha512-xm2rM0E+sWgjpPn1EesPXx5hIyrN2ddUnUwnbCsD/ONxYtw3PX6LydvdH6dciWAoFDpwzbHM1TO7uHfcMd6IYg==",
|
||||
"dev": true,
|
||||
"peerDependencies": {
|
||||
"markdownlint-cli2": ">=0.0.4"
|
||||
@@ -4122,6 +4123,15 @@
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/markdownlint-micromark": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/markdownlint-micromark/-/markdownlint-micromark-0.1.2.tgz",
|
||||
"integrity": "sha512-jRxlQg8KpOfM2IbCL9RXM8ZiYWz2rv6DlZAnGv8ASJQpUh6byTBnEsbuMZ6T2/uIgntyf7SKg/mEaEBo1164fQ==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=14.18.0"
|
||||
}
|
||||
},
|
||||
"node_modules/mathml-tag-names": {
|
||||
"version": "2.1.3",
|
||||
"resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz",
|
||||
@@ -6435,14 +6445,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/stylelint": {
|
||||
"version": "15.4.0",
|
||||
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.4.0.tgz",
|
||||
"integrity": "sha512-TlOvpG3MbcFwHmK0q2ykhmpKo7Dq892beJit0NPdpyY9b1tFah/hGhqnAz/bRm2PDhDbJLKvjzkEYYBEz7Dxcg==",
|
||||
"version": "15.5.0",
|
||||
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.5.0.tgz",
|
||||
"integrity": "sha512-jyMO3R1QtE5mUS4v40+Gg+sIQBqe7CF1xPslxycDzNVkIBCUD4O+5F1vLPq16VmunUTv4qG9o2rUKLnU5KkVeQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@csstools/css-parser-algorithms": "^2.1.0",
|
||||
"@csstools/css-tokenizer": "^2.1.0",
|
||||
"@csstools/media-query-list-parser": "^2.0.1",
|
||||
"@csstools/media-query-list-parser": "^2.0.2",
|
||||
"@csstools/selector-specificity": "^2.2.0",
|
||||
"balanced-match": "^2.0.0",
|
||||
"colord": "^2.9.3",
|
||||
@@ -6456,7 +6466,7 @@
|
||||
"global-modules": "^2.0.0",
|
||||
"globby": "^11.1.0",
|
||||
"globjoin": "^0.1.4",
|
||||
"html-tags": "^3.2.0",
|
||||
"html-tags": "^3.3.1",
|
||||
"ignore": "^5.2.4",
|
||||
"import-lazy": "^4.0.0",
|
||||
"imurmurhash": "^0.1.4",
|
||||
@@ -7208,22 +7218,22 @@
|
||||
}
|
||||
},
|
||||
"@csstools/css-parser-algorithms": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.1.0.tgz",
|
||||
"integrity": "sha512-KP8TicdXpUyeB1NMlbHud/1l39xvLGvqNFWMpG4qC6H1zs9SadGUHe5SO92n/659sDW9aGDvm9AMru0DZkN1Bw==",
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.1.1.tgz",
|
||||
"integrity": "sha512-viRnRh02AgO4mwIQb2xQNJju0i+Fh9roNgmbR5xEuG7J3TGgxjnE95HnBLgsFJOJOksvcfxOUCgODcft6Y07cA==",
|
||||
"dev": true,
|
||||
"requires": {}
|
||||
},
|
||||
"@csstools/css-tokenizer": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.1.0.tgz",
|
||||
"integrity": "sha512-dtqFyoJBHUxGi9zPZdpCKP1xk8tq6KPHJ/NY4qWXiYo6IcSGwzk3L8x2XzZbbyOyBs9xQARoGveU2AsgLj6D2A==",
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.1.1.tgz",
|
||||
"integrity": "sha512-GbrTj2Z8MCTUv+52GE0RbFGM527xuXZ0Xa5g0Z+YN573uveS4G0qi6WNOMyz3yrFM/jaILTTwJ0+umx81EzqfA==",
|
||||
"dev": true
|
||||
},
|
||||
"@csstools/media-query-list-parser": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.0.1.tgz",
|
||||
"integrity": "sha512-X2/OuzEbjaxhzm97UJ+95GrMeT29d1Ib+Pu+paGLuRWZnWRK9sI9r3ikmKXPWGA1C4y4JEdBEFpp9jEqCvLeRA==",
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.0.4.tgz",
|
||||
"integrity": "sha512-GyYot6jHgcSDZZ+tLSnrzkR7aJhF2ZW6d+CXH66mjy5WpAQhZD4HDke2OQ36SivGRWlZJpAz7TzbW6OKlEpxAA==",
|
||||
"dev": true,
|
||||
"requires": {}
|
||||
},
|
||||
@@ -9442,9 +9452,9 @@
|
||||
}
|
||||
},
|
||||
"globby": {
|
||||
"version": "13.1.3",
|
||||
"resolved": "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz",
|
||||
"integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==",
|
||||
"version": "13.1.4",
|
||||
"resolved": "https://registry.npmjs.org/globby/-/globby-13.1.4.tgz",
|
||||
"integrity": "sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"dir-glob": "^3.0.1",
|
||||
@@ -9542,9 +9552,9 @@
|
||||
}
|
||||
},
|
||||
"html-tags": {
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz",
|
||||
"integrity": "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==",
|
||||
"version": "3.3.1",
|
||||
"resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz",
|
||||
"integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==",
|
||||
"dev": true
|
||||
},
|
||||
"http-cache-semantics": {
|
||||
@@ -10041,23 +10051,24 @@
|
||||
}
|
||||
},
|
||||
"markdownlint": {
|
||||
"version": "0.27.0",
|
||||
"resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.27.0.tgz",
|
||||
"integrity": "sha512-HtfVr/hzJJmE0C198F99JLaeada+646B5SaG2pVoEakLFI6iRGsvMqrnnrflq8hm1zQgwskEgqSnhDW11JBp0w==",
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.28.1.tgz",
|
||||
"integrity": "sha512-8At2DbgGKT/RVBinkqIPqLETopPXyQFGWSiTCJSr9Y6wVVyY70cDJ9dw3FXePn4AkytIUclgrsgI6KVeqeHFoA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"markdown-it": "13.0.1"
|
||||
"markdown-it": "13.0.1",
|
||||
"markdownlint-micromark": "0.1.2"
|
||||
}
|
||||
},
|
||||
"markdownlint-cli2": {
|
||||
"version": "0.6.0",
|
||||
"resolved": "https://registry.npmjs.org/markdownlint-cli2/-/markdownlint-cli2-0.6.0.tgz",
|
||||
"integrity": "sha512-Bv20r6WGdcHMWi8QvAFZ3CBunf4i4aYmVdTfpAvXODI/1k3f09DZZ0i0LcX9ZMhlVxjoOzbVDz1NWyKc5hwTqg==",
|
||||
"version": "0.7.0",
|
||||
"resolved": "https://registry.npmjs.org/markdownlint-cli2/-/markdownlint-cli2-0.7.0.tgz",
|
||||
"integrity": "sha512-67r1t9ep+z0fa6g9TgL3tiPQeWo297ip165Et2u54UquJAkXWnq6e+dXFBjSPft/iLaGJfU0fUHXhXueqNUkGQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"globby": "13.1.3",
|
||||
"markdownlint": "0.27.0",
|
||||
"markdownlint-cli2-formatter-default": "0.0.3",
|
||||
"globby": "13.1.4",
|
||||
"markdownlint": "0.28.1",
|
||||
"markdownlint-cli2-formatter-default": "0.0.4",
|
||||
"micromatch": "4.0.5",
|
||||
"strip-json-comments": "5.0.0",
|
||||
"yaml": "2.2.1"
|
||||
@@ -10072,12 +10083,18 @@
|
||||
}
|
||||
},
|
||||
"markdownlint-cli2-formatter-default": {
|
||||
"version": "0.0.3",
|
||||
"resolved": "https://registry.npmjs.org/markdownlint-cli2-formatter-default/-/markdownlint-cli2-formatter-default-0.0.3.tgz",
|
||||
"integrity": "sha512-QEAJitT5eqX1SNboOD+SO/LNBpu4P4je8JlR02ug2cLQAqmIhh8IJnSK7AcaHBHhNADqdGydnPpQOpsNcEEqCw==",
|
||||
"version": "0.0.4",
|
||||
"resolved": "https://registry.npmjs.org/markdownlint-cli2-formatter-default/-/markdownlint-cli2-formatter-default-0.0.4.tgz",
|
||||
"integrity": "sha512-xm2rM0E+sWgjpPn1EesPXx5hIyrN2ddUnUwnbCsD/ONxYtw3PX6LydvdH6dciWAoFDpwzbHM1TO7uHfcMd6IYg==",
|
||||
"dev": true,
|
||||
"requires": {}
|
||||
},
|
||||
"markdownlint-micromark": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/markdownlint-micromark/-/markdownlint-micromark-0.1.2.tgz",
|
||||
"integrity": "sha512-jRxlQg8KpOfM2IbCL9RXM8ZiYWz2rv6DlZAnGv8ASJQpUh6byTBnEsbuMZ6T2/uIgntyf7SKg/mEaEBo1164fQ==",
|
||||
"dev": true
|
||||
},
|
||||
"mathml-tag-names": {
|
||||
"version": "2.1.3",
|
||||
"resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz",
|
||||
@@ -11660,14 +11677,14 @@
|
||||
}
|
||||
},
|
||||
"stylelint": {
|
||||
"version": "15.4.0",
|
||||
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.4.0.tgz",
|
||||
"integrity": "sha512-TlOvpG3MbcFwHmK0q2ykhmpKo7Dq892beJit0NPdpyY9b1tFah/hGhqnAz/bRm2PDhDbJLKvjzkEYYBEz7Dxcg==",
|
||||
"version": "15.5.0",
|
||||
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.5.0.tgz",
|
||||
"integrity": "sha512-jyMO3R1QtE5mUS4v40+Gg+sIQBqe7CF1xPslxycDzNVkIBCUD4O+5F1vLPq16VmunUTv4qG9o2rUKLnU5KkVeQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@csstools/css-parser-algorithms": "^2.1.0",
|
||||
"@csstools/css-tokenizer": "^2.1.0",
|
||||
"@csstools/media-query-list-parser": "^2.0.1",
|
||||
"@csstools/media-query-list-parser": "^2.0.2",
|
||||
"@csstools/selector-specificity": "^2.2.0",
|
||||
"balanced-match": "^2.0.0",
|
||||
"colord": "^2.9.3",
|
||||
@@ -11681,7 +11698,7 @@
|
||||
"global-modules": "^2.0.0",
|
||||
"globby": "^11.1.0",
|
||||
"globjoin": "^0.1.4",
|
||||
"html-tags": "^3.2.0",
|
||||
"html-tags": "^3.3.1",
|
||||
"ignore": "^5.2.4",
|
||||
"import-lazy": "^4.0.0",
|
||||
"imurmurhash": "^0.1.4",
|
||||
|
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@gethinode/hinode",
|
||||
"version": "0.11.8",
|
||||
"version": "0.12.0-alpha2",
|
||||
"description": "Hinode is a clean documentation and blog theme for Hugo, an open-source static site generator",
|
||||
"keywords": [
|
||||
"hugo",
|
||||
@@ -64,7 +64,7 @@
|
||||
"eslint-plugin-promise": "^6.1.1",
|
||||
"flexsearch": "^0.7.31",
|
||||
"hugo-bin": "^0.102.0",
|
||||
"markdownlint-cli2": "^0.6.0",
|
||||
"markdownlint-cli2": "^0.7.0",
|
||||
"postcss-cli": "^10.1.0",
|
||||
"purgecss-whitelister": "^2.4.0",
|
||||
"rimraf": "^5.0.0",
|
||||
|
Reference in New Issue
Block a user