mirror of
https://github.com/gethinode/hinode.git
synced 2025-10-17 23:13:11 +00:00
Compare commits
50 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
0a6dbccb12 | ||
![]() |
c012eb5358 | ||
![]() |
bb2f1b63cf | ||
![]() |
d7facc353d | ||
![]() |
4dcae71516 | ||
![]() |
bac2bed6ad | ||
![]() |
56275d04dc | ||
![]() |
f32a958cf9 | ||
![]() |
e00e04b40b | ||
![]() |
4970c604d9 | ||
![]() |
a44e5dcafc | ||
![]() |
8493154844 | ||
![]() |
8a8a644ccf | ||
![]() |
d390d2eb4e | ||
![]() |
2e3bca1a34 | ||
![]() |
9a00e6c4c1 | ||
![]() |
3dcbe0b62c | ||
![]() |
bdf9d84a72 | ||
![]() |
7386cf1fb9 | ||
![]() |
2625222554 | ||
![]() |
74eeec9030 | ||
![]() |
a57e0da164 | ||
![]() |
6ab01755f2 | ||
![]() |
22cb71ca9b | ||
![]() |
62897f685f | ||
![]() |
4f8fdc4f03 | ||
![]() |
925a3ff33e | ||
![]() |
cf16cb9824 | ||
![]() |
5d9383858f | ||
![]() |
3332b437dd | ||
![]() |
c5510707b1 | ||
![]() |
498f208382 | ||
![]() |
86962eb8a2 | ||
![]() |
f4319180e0 | ||
![]() |
9607aef8ef | ||
![]() |
2c2f150faa | ||
![]() |
6087630643 | ||
![]() |
26235a1e7e | ||
![]() |
408799c3e2 | ||
![]() |
7b4a46121c | ||
![]() |
7af4c37c88 | ||
![]() |
9cc7174030 | ||
![]() |
f8de99173f | ||
![]() |
68f7b466fb | ||
![]() |
3a9a57cc5d | ||
![]() |
f3c264ead2 | ||
![]() |
1dd2971893 | ||
![]() |
7ac6b89ece | ||
![]() |
458e8fb605 | ||
![]() |
b268c1bad0 |
8
.github/codeql/codeql-config.yml
vendored
Normal file
8
.github/codeql/codeql-config.yml
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
paths:
|
||||
- 'assets/js'
|
||||
paths-ignore:
|
||||
- '**/vendor'
|
||||
- '**/critical/languageSelector.js'
|
||||
- '**/critical/color.js'
|
||||
- '**/navbar.js'
|
||||
- '**/sharing.js'
|
102
.github/workflows/codeql.yml
vendored
Normal file
102
.github/workflows/codeql.yml
vendored
Normal file
@@ -0,0 +1,102 @@
|
||||
# For most projects, this workflow file will not need changing; you simply need
|
||||
# to commit it to your repository.
|
||||
#
|
||||
# You may wish to alter this file to override the set of languages analyzed,
|
||||
# or to provide custom queries or build logic.
|
||||
#
|
||||
# ******** NOTE ********
|
||||
# We have attempted to detect the languages in your repository. Please check
|
||||
# the `language` matrix defined below to confirm you have the correct set of
|
||||
# supported CodeQL languages.
|
||||
#
|
||||
name: "CodeQL Advanced"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ "main" ]
|
||||
pull_request:
|
||||
branches: [ "main" ]
|
||||
schedule:
|
||||
- cron: '44 1 * * 3'
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
name: Analyze (${{ matrix.language }})
|
||||
# Runner size impacts CodeQL analysis time. To learn more, please see:
|
||||
# - https://gh.io/recommended-hardware-resources-for-running-codeql
|
||||
# - https://gh.io/supported-runners-and-hardware-resources
|
||||
# - https://gh.io/using-larger-runners (GitHub.com only)
|
||||
# Consider using larger runners or machines with greater resources for possible analysis time improvements.
|
||||
runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }}
|
||||
permissions:
|
||||
# required for all workflows
|
||||
security-events: write
|
||||
|
||||
# required to fetch internal or private CodeQL packs
|
||||
packages: read
|
||||
|
||||
# only required for workflows in private repositories
|
||||
actions: read
|
||||
contents: read
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- language: actions
|
||||
build-mode: none
|
||||
- language: javascript-typescript
|
||||
build-mode: none
|
||||
# CodeQL supports the following values keywords for 'language': 'actions', 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'rust', 'swift'
|
||||
# Use `c-cpp` to analyze code written in C, C++ or both
|
||||
# Use 'java-kotlin' to analyze code written in Java, Kotlin or both
|
||||
# Use 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both
|
||||
# To learn more about changing the languages that are analyzed or customizing the build mode for your analysis,
|
||||
# see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning.
|
||||
# If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize how
|
||||
# your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v5
|
||||
|
||||
# Add any setup steps before running the `github/codeql-action/init` action.
|
||||
# This includes steps like installing compilers or runtimes (`actions/setup-node`
|
||||
# or others). This is typically only required for manual builds.
|
||||
# - name: Setup runtime (example)
|
||||
# uses: actions/setup-example@v1
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v3
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
build-mode: ${{ matrix.build-mode }}
|
||||
config-file: ./.github/codeql/codeql-config.yml
|
||||
|
||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||
# By default, queries listed here will override any specified in a config file.
|
||||
# Prefix the list here with "+" to use these queries and those in the config file.
|
||||
|
||||
# For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
|
||||
# queries: security-extended,security-and-quality
|
||||
|
||||
# If the analyze step fails for one of the languages you are analyzing with
|
||||
# "We were unable to automatically build your code", modify the matrix above
|
||||
# to set the build mode to "manual" for that language. Then modify this step
|
||||
# to build your code.
|
||||
# ℹ️ Command-line programs to run using the OS shell.
|
||||
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
|
||||
- if: matrix.build-mode == 'manual'
|
||||
shell: bash
|
||||
run: |
|
||||
echo 'If you are using a "manual" build mode for one or more of the' \
|
||||
'languages you are analyzing, replace this with the commands to build' \
|
||||
'your code, for example:'
|
||||
echo ' make bootstrap'
|
||||
echo ' make release'
|
||||
exit 1
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v3
|
||||
with:
|
||||
category: "/language:${{matrix.language}}"
|
4
.github/workflows/lint-build.yml
vendored
4
.github/workflows/lint-build.yml
vendored
@@ -24,7 +24,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Check out repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Set up Node.js
|
||||
uses: actions/setup-node@v4
|
||||
@@ -53,7 +53,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Check out repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Install Go
|
||||
uses: actions/setup-go@v5
|
||||
|
2
.github/workflows/mod-update.yml
vendored
2
.github/workflows/mod-update.yml
vendored
@@ -14,7 +14,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
|
2
.github/workflows/release.yml
vendored
2
.github/workflows/release.yml
vendored
@@ -23,7 +23,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
|
@@ -43,9 +43,7 @@
|
||||
document.documentElement.setAttribute('data-bs-theme', theme)
|
||||
}
|
||||
|
||||
document.querySelectorAll('.navbar-mode-selector').forEach(chk => {
|
||||
chk.checked = (document.documentElement.getAttribute('data-bs-theme') === 'light')
|
||||
})
|
||||
updateSelectors()
|
||||
}
|
||||
|
||||
// alternates the currently active theme
|
||||
@@ -54,6 +52,12 @@
|
||||
setTheme(target)
|
||||
}
|
||||
|
||||
function updateSelectors() {
|
||||
document.querySelectorAll('.navbar-mode-selector').forEach(chk => {
|
||||
chk.checked = (document.documentElement.getAttribute('data-bs-theme') === 'light')
|
||||
})
|
||||
}
|
||||
|
||||
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => {
|
||||
if (storedTheme !== 'light' || storedTheme !== 'dark') {
|
||||
setTheme(getPreferredTheme())
|
||||
@@ -69,7 +73,12 @@
|
||||
})
|
||||
})
|
||||
|
||||
// initialize theme directly when script is invoked
|
||||
window.addEventListener('load', () => {
|
||||
// update the selectors when all elements are ready
|
||||
updateSelectors()
|
||||
})
|
||||
|
||||
// initialize theme as soon as possible to reduce screen flickering
|
||||
setTheme(getTheme())
|
||||
})()
|
||||
|
||||
|
6
assets/js/modal.js
Normal file
6
assets/js/modal.js
Normal file
@@ -0,0 +1,6 @@
|
||||
document.addEventListener('hide.bs.modal', function (event) {
|
||||
// Remove the focus from the active element
|
||||
if (document.activeElement) {
|
||||
document.activeElement.blur()
|
||||
}
|
||||
})
|
13
assets/js/toc.js
Normal file
13
assets/js/toc.js
Normal file
@@ -0,0 +1,13 @@
|
||||
const btnTOCShowMore = document.getElementById('btnTOCShowMore')
|
||||
if (btnTOCShowMore !== null) {
|
||||
btnTOCShowMore.addEventListener('click', (e) => {
|
||||
btnTOCShowMore.style.display = 'none'
|
||||
})
|
||||
}
|
||||
|
||||
const btnTOCShowLess = document.getElementById('btnTOCShowLess')
|
||||
if ((btnTOCShowLess !== null) && (btnTOCShowMore !== null)) {
|
||||
btnTOCShowLess.addEventListener('click', (e) => {
|
||||
btnTOCShowMore.style.display = 'initial'
|
||||
})
|
||||
}
|
@@ -24,8 +24,10 @@
|
||||
@import "components/carousel.scss";
|
||||
@import "components/clipboard.scss";
|
||||
@import "components/command.scss";
|
||||
@import "components/docs.scss";
|
||||
@import "components/feature.scss";
|
||||
@import "components/footer.scss";
|
||||
@import "components/kbd.scss";
|
||||
@import "components/nav.scss";
|
||||
@import "components/navbar.scss";
|
||||
@import "components/img.scss";
|
||||
@@ -35,6 +37,7 @@
|
||||
@import "components/sidebar.scss";
|
||||
@import "components/syntax-dart.scss"; // note: modified for dart-sass
|
||||
@import "components/table.scss";
|
||||
@import "components/toast.scss";
|
||||
@import "components/timeline.scss";
|
||||
@import "components/toc.scss";
|
||||
@import "components/video.scss";
|
||||
|
@@ -22,8 +22,10 @@
|
||||
@import "components/carousel.scss";
|
||||
@import "components/clipboard.scss";
|
||||
@import "components/command.scss";
|
||||
@import "components/docs.scss";
|
||||
@import "components/feature.scss";
|
||||
@import "components/footer.scss";
|
||||
@import "components/kbd.scss";
|
||||
@import "components/nav.scss";
|
||||
@import "components/navbar.scss";
|
||||
@import "components/img.scss";
|
||||
@@ -33,6 +35,7 @@
|
||||
@import "components/sidebar.scss";
|
||||
@import "components/syntax.scss";
|
||||
@import "components/table.scss";
|
||||
@import "components/toast.scss";
|
||||
@import "components/timeline.scss";
|
||||
@import "components/toc.scss";
|
||||
@import "components/video.scss";
|
||||
|
@@ -14,6 +14,10 @@ a:active {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
div.rounded, img.rounded {
|
||||
--bs-border-radius: #{$theme-border-radius};
|
||||
}
|
||||
|
||||
//
|
||||
// Ensure main page is rendered to full viewport height
|
||||
//
|
||||
|
@@ -16,12 +16,12 @@ $font-weight-normal: 300 !default;
|
||||
$font-weight-bold: 600 !default;
|
||||
$font-weight-bolder: bolder !default;
|
||||
|
||||
$theme-border-radius: 1rem;
|
||||
|
||||
strong {
|
||||
font-weight: 600 if($enable-important-utilities, !important, null);
|
||||
}
|
||||
|
||||
$theme-border-radius: 0.375rem;
|
||||
|
||||
$navbar-height: h.$navbar-height;
|
||||
$navbar-offset: h.$navbar-offset;
|
||||
$navbar-offset-xs: h.$navbar-offset-xs;
|
||||
|
@@ -17,13 +17,13 @@ $font-weight-normal: 300 !default;
|
||||
$font-weight-bold: 600 !default;
|
||||
$font-weight-bolder: bolder !default;
|
||||
|
||||
$theme-border-radius: 1rem;
|
||||
|
||||
strong {
|
||||
font-weight: 600 if($enable-important-utilities, !important, null);
|
||||
}
|
||||
// scss-docs-end font
|
||||
|
||||
$theme-border-radius: 0.375rem;
|
||||
|
||||
$white: #fff !default;
|
||||
$black: #000 !default;
|
||||
$body-bg: #fff !default;
|
||||
|
@@ -52,3 +52,7 @@ a.btn {
|
||||
.btn-xs {
|
||||
@include button-size($btn-padding-y-xs, $btn-padding-x-xs, $btn-font-size-xs, $btn-border-radius-xs);
|
||||
}
|
||||
|
||||
.btn {
|
||||
--bs-border-radius: #{$theme-border-radius};
|
||||
}
|
||||
|
@@ -6,6 +6,9 @@
|
||||
}
|
||||
|
||||
.card {
|
||||
--bs-card-border-radius: #{$theme-border-radius};
|
||||
--bs-card-inner-border-radius: #{$theme-border-radius};
|
||||
--bs-border-radius: #{$theme-border-radius};
|
||||
--bs-card-bg: transparent;
|
||||
}
|
||||
|
||||
@@ -28,6 +31,13 @@
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.card-img-top {
|
||||
--bs-border-radius: #{$theme-border-radius};
|
||||
|
||||
border-top-left-radius: var(--bs-border-radius) !important;
|
||||
border-top-right-radius: var(--bs-border-radius) !important;
|
||||
}
|
||||
|
||||
.card-img-wrap img {
|
||||
transition: transform 0.25s ease;
|
||||
width: 100%;
|
||||
|
@@ -1,3 +1,7 @@
|
||||
.carousel-inner {
|
||||
border-radius: #{$theme-border-radius};
|
||||
}
|
||||
|
||||
.gradient {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
|
22
assets/scss/components/_docs.scss
Normal file
22
assets/scss/components/_docs.scss
Normal file
@@ -0,0 +1,22 @@
|
||||
.docs-controls .nav-link,
|
||||
.file-controls .nav-link {
|
||||
border-top-left-radius: #{$theme-border-radius};
|
||||
border-top-right-radius: #{$theme-border-radius};
|
||||
margin-left: #{$theme-border-radius};
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
border-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.docs-panel,
|
||||
.file-panel {
|
||||
border: 1px solid var(--#{$prefix}border-color);
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.docs-panel, .docs-panel .collapse,
|
||||
.file-panel, .file-panel .collapse {
|
||||
border-radius: #{$theme-border-radius};
|
||||
}
|
@@ -27,3 +27,7 @@
|
||||
width: 100vw;
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
.figure-caption {
|
||||
margin-left: #{$theme-border-radius};
|
||||
}
|
||||
|
3
assets/scss/components/_kbd.scss
Normal file
3
assets/scss/components/_kbd.scss
Normal file
@@ -0,0 +1,3 @@
|
||||
kbd {
|
||||
border-radius: #{$theme-border-radius};
|
||||
}
|
@@ -84,6 +84,14 @@
|
||||
border-color: var(--#{$prefix}border-color);
|
||||
}
|
||||
|
||||
.nav-callout, .pagination {
|
||||
--bs-border-radius: #{$theme-border-radius};
|
||||
}
|
||||
|
||||
.nav-callout .tab-content {
|
||||
border-radius: #{$theme-border-radius};
|
||||
}
|
||||
|
||||
@if $enable-dark-mode {
|
||||
@include color-mode(dark) {
|
||||
.nav-callout, .tab-content {
|
||||
|
@@ -319,3 +319,7 @@
|
||||
position: absolute;
|
||||
z-index: $zindex-fixed;
|
||||
}
|
||||
|
||||
.form-control.is-search {
|
||||
border: 1px solid var(--bs-border-color) !important;
|
||||
}
|
||||
|
@@ -11,6 +11,12 @@
|
||||
}
|
||||
|
||||
.sidebar-item {
|
||||
--bs-border-radius: #{$theme-border-radius};
|
||||
--bs-border-radius-sm: #{$theme-border-radius};
|
||||
--bs-border-radius-lg: #{$theme-border-radius};
|
||||
--bs-border-radius-xl: #{$theme-border-radius};
|
||||
--bs-border-radius-xxl: #{$theme-border-radius};
|
||||
|
||||
color: rgba(0, 0, 0, 0.65);
|
||||
margin-left: 0 !important;
|
||||
display: inline-block;
|
||||
@@ -28,6 +34,8 @@
|
||||
}
|
||||
|
||||
.sidebar-item-group {
|
||||
border-radius: #{$theme-border-radius};
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: $primary;
|
||||
|
@@ -16,6 +16,10 @@
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.codeblock.syntax-highlight, .command.syntax-highlight {
|
||||
border-radius: #{$theme-border-radius};
|
||||
}
|
||||
|
||||
.syntax-highlight {
|
||||
background-color: var(--bs-light) if($enable-important-utilities, !important, null);
|
||||
overflow-x: auto;
|
||||
|
@@ -16,6 +16,10 @@
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.codeblock.syntax-highlight, .command.syntax-highlight {
|
||||
border-radius: #{$theme-border-radius};
|
||||
}
|
||||
|
||||
.syntax-highlight {
|
||||
background-color: var(--bs-light) if($enable-important-utilities, !important, null);
|
||||
overflow-x: auto;
|
||||
|
@@ -26,6 +26,10 @@ $semi-circle-border: 0.2rem;
|
||||
|
||||
// scss-docs-end timeline
|
||||
|
||||
.timeline-container {
|
||||
border-radius: #{$theme-border-radius};
|
||||
}
|
||||
|
||||
.timeline, .timeline-sm {
|
||||
position: relative;
|
||||
}
|
||||
|
4
assets/scss/components/_toast.scss
Normal file
4
assets/scss/components/_toast.scss
Normal file
@@ -0,0 +1,4 @@
|
||||
.toast {
|
||||
border-radius: #{$theme-border-radius};
|
||||
overflow: hidden;
|
||||
}
|
@@ -74,6 +74,14 @@
|
||||
}
|
||||
}
|
||||
|
||||
.btn-link.toc-item {
|
||||
font-size: inherit;
|
||||
}
|
||||
|
||||
#btnTOCShowMore {
|
||||
padding-top: 0.875rem;
|
||||
}
|
||||
|
||||
a.toc-item {
|
||||
display: block;
|
||||
}
|
||||
|
@@ -3,6 +3,7 @@
|
||||
padding-bottom: 56.25%;
|
||||
height: 0;
|
||||
overflow: hidden;
|
||||
border-radius: #{$theme-border-radius};
|
||||
}
|
||||
|
||||
.video-embedded > iframe {
|
||||
@@ -11,7 +12,7 @@
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border:0;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
// Adapted from https://github.com/gohugoio/hugo/tpl/tplimpl/embedded/templates/shortcodes/vimeo_simple.html
|
||||
|
@@ -10,7 +10,7 @@
|
||||
|
||||
/* inter-200 - latin */
|
||||
@font-face {
|
||||
font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
|
||||
font-display: block; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
|
||||
font-family: 'Inter';
|
||||
font-style: normal;
|
||||
font-weight: 200;
|
||||
@@ -23,7 +23,7 @@
|
||||
}
|
||||
/* inter-300 - latin */
|
||||
@font-face {
|
||||
font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
|
||||
font-display: block; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
|
||||
font-family: 'Inter';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
@@ -36,7 +36,7 @@
|
||||
}
|
||||
/* inter-regular - latin */
|
||||
@font-face {
|
||||
font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
|
||||
font-display: block; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
|
||||
font-family: 'Inter';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
@@ -49,7 +49,7 @@
|
||||
}
|
||||
/* inter-600 - latin */
|
||||
@font-face {
|
||||
font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
|
||||
font-display: block; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
|
||||
font-family: 'Inter';
|
||||
font-style: normal;
|
||||
font-weight: 600;
|
||||
|
@@ -2,6 +2,10 @@
|
||||
background-color: var(--#{$prefix}primary-bg-subtle);
|
||||
}
|
||||
|
||||
.cta, .background-img-fluid {
|
||||
border-radius: #{$theme-border-radius} if($enable-important-utilities, !important, null);
|
||||
}
|
||||
|
||||
.cta .contact-img {
|
||||
background-color: var(--#{$prefix}body-bg);
|
||||
border-radius: var(--bs-border-radius);
|
||||
|
@@ -1,3 +1,13 @@
|
||||
.panels .dropdown-toggle {
|
||||
text-decoration: none !important;
|
||||
}
|
||||
|
||||
.panels .nav-tabs {
|
||||
border-top-left-radius: #{$theme-border-radius};
|
||||
border-top-right-radius: #{$theme-border-radius};
|
||||
margin-left: #{$theme-border-radius};
|
||||
}
|
||||
|
||||
.panels .tab-content {
|
||||
border-radius: #{$theme-border-radius};
|
||||
}
|
||||
|
@@ -31,6 +31,7 @@ blueprint:
|
||||
media-id:
|
||||
autoplay:
|
||||
query-args:
|
||||
color:
|
||||
cols:
|
||||
messages:
|
||||
- title:
|
||||
|
@@ -28,6 +28,7 @@
|
||||
{{ $queryArgs := .queryArgs }}
|
||||
{{ $border := .border }}
|
||||
{{ $padding := .padding }}
|
||||
{{ $color := .color }}
|
||||
|
||||
{{ if site.Params.env_bookshop_live }}
|
||||
{{/* Define dummy content as we cannot retrieve video data in live mode */}}
|
||||
@@ -36,7 +37,7 @@
|
||||
"ratio" "21x9"
|
||||
"wrapper" (printf "text-center mb-%d" $padding.y)) -}}
|
||||
{{ else }}
|
||||
<div class="video-container{{ if $border }} video-container-border{{ end}}">
|
||||
<div class="video-container{{ if $border }} video-container-border{{ end}} {{ with $color }}bg-{{ . }}{{ end }}">
|
||||
{{ partial "assets/video.html" (dict
|
||||
"page" page
|
||||
"provider" $provider
|
||||
@@ -117,6 +118,7 @@
|
||||
"query-args" .queryArgs
|
||||
"border" $.border
|
||||
"padding" $padding
|
||||
"color" .color
|
||||
) -}}
|
||||
{{ end }}
|
||||
</div>
|
||||
@@ -142,6 +144,7 @@
|
||||
"query-args" .queryArgs
|
||||
"border" $.border
|
||||
"padding" $padding
|
||||
"color" .color
|
||||
) -}}
|
||||
{{ end }}
|
||||
</div>
|
||||
|
@@ -2,6 +2,7 @@
|
||||
--bs-video-border-color: var(--bs-primary);
|
||||
--bs-video-border-width: 1rem;
|
||||
|
||||
border-radius: $theme-border-radius;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
|
@@ -97,6 +97,9 @@
|
||||
toc = true
|
||||
sidebar = true
|
||||
size = "md"
|
||||
startLevel = 2
|
||||
endLevel = 3
|
||||
maxNumHeadings = 9
|
||||
[navigation.padding]
|
||||
x = 4
|
||||
y = 4
|
||||
|
@@ -51,6 +51,9 @@
|
||||
toc = true
|
||||
sidebar = true
|
||||
size = "md"
|
||||
startLevel = 2
|
||||
endLevel = 3
|
||||
maxNumHeadings = 9
|
||||
[navigation.padding]
|
||||
x = 4
|
||||
y = 4
|
||||
|
@@ -29,6 +29,7 @@ The `video` content block renders a horizontal line to separate sections. The se
|
||||
provider: vimeo
|
||||
media-id: "55073825"
|
||||
autoplay: true
|
||||
color: black
|
||||
messages:
|
||||
- title: First Message
|
||||
icon: fas 1
|
||||
|
@@ -98,6 +98,7 @@
|
||||
"ball",
|
||||
"bg-bg-body-tertiary",
|
||||
"bg-bg-primary-subtle",
|
||||
"bg-black",
|
||||
"bg-body",
|
||||
"bg-body-tertiary",
|
||||
"bg-danger",
|
||||
@@ -110,9 +111,7 @@
|
||||
"border-0",
|
||||
"border-1",
|
||||
"border-bottom",
|
||||
"border-end",
|
||||
"border-none",
|
||||
"border-start",
|
||||
"border-top",
|
||||
"bottom-0",
|
||||
"bottom-bar",
|
||||
@@ -191,6 +190,7 @@
|
||||
"col-sm-6",
|
||||
"collapse",
|
||||
"collapsed",
|
||||
"command",
|
||||
"contact-img",
|
||||
"container",
|
||||
"container-fluid",
|
||||
@@ -223,6 +223,9 @@
|
||||
"display-1",
|
||||
"display-4",
|
||||
"display-6",
|
||||
"docs",
|
||||
"docs-controls",
|
||||
"docs-panel",
|
||||
"dropdown",
|
||||
"dropdown-divider-bg",
|
||||
"dropdown-item",
|
||||
@@ -243,6 +246,9 @@
|
||||
"fa-activity",
|
||||
"fa-address-card",
|
||||
"fa-angle-left",
|
||||
"fa-angle-right",
|
||||
"fa-angles-left",
|
||||
"fa-angles-right",
|
||||
"fa-arrow-left",
|
||||
"fa-arrow-right",
|
||||
"fa-bootstrap",
|
||||
@@ -298,6 +304,9 @@
|
||||
"faq",
|
||||
"fas",
|
||||
"figure-caption",
|
||||
"file",
|
||||
"file-controls",
|
||||
"file-panel",
|
||||
"fixed-top",
|
||||
"flex-column",
|
||||
"flex-fill",
|
||||
@@ -551,6 +560,7 @@
|
||||
"timeline-bg-primary-subtle",
|
||||
"timeline-connector-end",
|
||||
"timeline-connector-start",
|
||||
"timeline-container",
|
||||
"timeline-description-text-end",
|
||||
"timeline-description-text-start",
|
||||
"timeline-dot",
|
||||
@@ -616,6 +626,8 @@
|
||||
"body-file-collapse-1",
|
||||
"bouton",
|
||||
"breadcrumb",
|
||||
"btnTOCShowLess",
|
||||
"btnTOCShowMore",
|
||||
"button",
|
||||
"button-group",
|
||||
"c4-diagram",
|
||||
@@ -642,11 +654,11 @@
|
||||
"docs",
|
||||
"documentation",
|
||||
"dropdown-nav-0",
|
||||
"dropdown-panel-3db1162c8e923c363f53cdd77b3941dd",
|
||||
"dropdown-panel-3eb793f32a8332bf0f1580c4e0ee1af9",
|
||||
"dropdown-panel-a63cbde071d2b7909cdc915a407fc84a",
|
||||
"dropdown-panel-f3fb705824de1effb0fde452a156be28",
|
||||
"dropdown-panel-ff2a4aaf767d9d92977e27a5929980db",
|
||||
"dropdown-panel-559429f8ed9abd968d8178a39c12161e",
|
||||
"dropdown-panel-83b60f1acfc59ebca2632e49adc142ea",
|
||||
"dropdown-panel-905f7532046e86d10df934d0bb7e6973",
|
||||
"dropdown-panel-96d18c1dcc343600bc916fe2c37fa4aa",
|
||||
"dropdown-panel-f6ad6d3ba9fb32a749be0499120c5f22",
|
||||
"elements-type",
|
||||
"entity-relationship-diagram",
|
||||
"example",
|
||||
@@ -664,16 +676,19 @@
|
||||
"fab-medium",
|
||||
"fab-whatsapp",
|
||||
"fab-x-twitter",
|
||||
"faq-fbb18b868ab666e41e781424cfa7856e",
|
||||
"faq-fbb18b868ab666e41e781424cfa7856e-heading-faq-fbb18b868ab666e41e781424cfa7856e",
|
||||
"faq-fbb18b868ab666e41e781424cfa7856e-item-0",
|
||||
"faq-fbb18b868ab666e41e781424cfa7856e-item-1",
|
||||
"faq-fbb18b868ab666e41e781424cfa7856e-item-2",
|
||||
"faq-106714aa77d6de0ac39f269ae5995985",
|
||||
"faq-106714aa77d6de0ac39f269ae5995985-heading-faq-106714aa77d6de0ac39f269ae5995985",
|
||||
"faq-106714aa77d6de0ac39f269ae5995985-item-0",
|
||||
"faq-106714aa77d6de0ac39f269ae5995985-item-1",
|
||||
"faq-106714aa77d6de0ac39f269ae5995985-item-2",
|
||||
"fas-1",
|
||||
"fas-2",
|
||||
"fas-3",
|
||||
"fas-address-card",
|
||||
"fas-angle-left",
|
||||
"fas-angle-right",
|
||||
"fas-angles-left",
|
||||
"fas-angles-right",
|
||||
"fas-arrow-left",
|
||||
"fas-arrow-right",
|
||||
"fas-chevron-right",
|
||||
@@ -760,11 +775,11 @@
|
||||
"nav-0-btn-1",
|
||||
"nav-0-btn-2",
|
||||
"nav-nav-0",
|
||||
"nav-panel-3db1162c8e923c363f53cdd77b3941dd",
|
||||
"nav-panel-3eb793f32a8332bf0f1580c4e0ee1af9",
|
||||
"nav-panel-a63cbde071d2b7909cdc915a407fc84a",
|
||||
"nav-panel-f3fb705824de1effb0fde452a156be28",
|
||||
"nav-panel-ff2a4aaf767d9d92977e27a5929980db",
|
||||
"nav-panel-559429f8ed9abd968d8178a39c12161e",
|
||||
"nav-panel-83b60f1acfc59ebca2632e49adc142ea",
|
||||
"nav-panel-905f7532046e86d10df934d0bb7e6973",
|
||||
"nav-panel-96d18c1dcc343600bc916fe2c37fa4aa",
|
||||
"nav-panel-f6ad6d3ba9fb32a749be0499120c5f22",
|
||||
"navbar",
|
||||
"navbar-0-collapse",
|
||||
"navbar-mode",
|
||||
@@ -773,36 +788,36 @@
|
||||
"navigation",
|
||||
"notification",
|
||||
"overview",
|
||||
"panel-3db1162c8e923c363f53cdd77b3941dd-0",
|
||||
"panel-3db1162c8e923c363f53cdd77b3941dd-1",
|
||||
"panel-3db1162c8e923c363f53cdd77b3941dd-2",
|
||||
"panel-3db1162c8e923c363f53cdd77b3941dd-btn-0",
|
||||
"panel-3db1162c8e923c363f53cdd77b3941dd-btn-1",
|
||||
"panel-3db1162c8e923c363f53cdd77b3941dd-btn-2",
|
||||
"panel-3eb793f32a8332bf0f1580c4e0ee1af9-0",
|
||||
"panel-3eb793f32a8332bf0f1580c4e0ee1af9-1",
|
||||
"panel-3eb793f32a8332bf0f1580c4e0ee1af9-2",
|
||||
"panel-3eb793f32a8332bf0f1580c4e0ee1af9-btn-0",
|
||||
"panel-3eb793f32a8332bf0f1580c4e0ee1af9-btn-1",
|
||||
"panel-3eb793f32a8332bf0f1580c4e0ee1af9-btn-2",
|
||||
"panel-a63cbde071d2b7909cdc915a407fc84a-0",
|
||||
"panel-a63cbde071d2b7909cdc915a407fc84a-1",
|
||||
"panel-a63cbde071d2b7909cdc915a407fc84a-2",
|
||||
"panel-a63cbde071d2b7909cdc915a407fc84a-btn-0",
|
||||
"panel-a63cbde071d2b7909cdc915a407fc84a-btn-1",
|
||||
"panel-a63cbde071d2b7909cdc915a407fc84a-btn-2",
|
||||
"panel-f3fb705824de1effb0fde452a156be28-0",
|
||||
"panel-f3fb705824de1effb0fde452a156be28-1",
|
||||
"panel-f3fb705824de1effb0fde452a156be28-2",
|
||||
"panel-f3fb705824de1effb0fde452a156be28-btn-0",
|
||||
"panel-f3fb705824de1effb0fde452a156be28-btn-1",
|
||||
"panel-f3fb705824de1effb0fde452a156be28-btn-2",
|
||||
"panel-ff2a4aaf767d9d92977e27a5929980db-0",
|
||||
"panel-ff2a4aaf767d9d92977e27a5929980db-1",
|
||||
"panel-ff2a4aaf767d9d92977e27a5929980db-2",
|
||||
"panel-ff2a4aaf767d9d92977e27a5929980db-btn-0",
|
||||
"panel-ff2a4aaf767d9d92977e27a5929980db-btn-1",
|
||||
"panel-ff2a4aaf767d9d92977e27a5929980db-btn-2",
|
||||
"panel-559429f8ed9abd968d8178a39c12161e-0",
|
||||
"panel-559429f8ed9abd968d8178a39c12161e-1",
|
||||
"panel-559429f8ed9abd968d8178a39c12161e-2",
|
||||
"panel-559429f8ed9abd968d8178a39c12161e-btn-0",
|
||||
"panel-559429f8ed9abd968d8178a39c12161e-btn-1",
|
||||
"panel-559429f8ed9abd968d8178a39c12161e-btn-2",
|
||||
"panel-83b60f1acfc59ebca2632e49adc142ea-0",
|
||||
"panel-83b60f1acfc59ebca2632e49adc142ea-1",
|
||||
"panel-83b60f1acfc59ebca2632e49adc142ea-2",
|
||||
"panel-83b60f1acfc59ebca2632e49adc142ea-btn-0",
|
||||
"panel-83b60f1acfc59ebca2632e49adc142ea-btn-1",
|
||||
"panel-83b60f1acfc59ebca2632e49adc142ea-btn-2",
|
||||
"panel-905f7532046e86d10df934d0bb7e6973-0",
|
||||
"panel-905f7532046e86d10df934d0bb7e6973-1",
|
||||
"panel-905f7532046e86d10df934d0bb7e6973-2",
|
||||
"panel-905f7532046e86d10df934d0bb7e6973-btn-0",
|
||||
"panel-905f7532046e86d10df934d0bb7e6973-btn-1",
|
||||
"panel-905f7532046e86d10df934d0bb7e6973-btn-2",
|
||||
"panel-96d18c1dcc343600bc916fe2c37fa4aa-0",
|
||||
"panel-96d18c1dcc343600bc916fe2c37fa4aa-1",
|
||||
"panel-96d18c1dcc343600bc916fe2c37fa4aa-2",
|
||||
"panel-96d18c1dcc343600bc916fe2c37fa4aa-btn-0",
|
||||
"panel-96d18c1dcc343600bc916fe2c37fa4aa-btn-1",
|
||||
"panel-96d18c1dcc343600bc916fe2c37fa4aa-btn-2",
|
||||
"panel-f6ad6d3ba9fb32a749be0499120c5f22-0",
|
||||
"panel-f6ad6d3ba9fb32a749be0499120c5f22-1",
|
||||
"panel-f6ad6d3ba9fb32a749be0499120c5f22-2",
|
||||
"panel-f6ad6d3ba9fb32a749be0499120c5f22-btn-0",
|
||||
"panel-f6ad6d3ba9fb32a749be0499120c5f22-btn-1",
|
||||
"panel-f6ad6d3ba9fb32a749be0499120c5f22-btn-2",
|
||||
"persona",
|
||||
"pie-chart",
|
||||
"pills",
|
||||
@@ -839,6 +854,7 @@
|
||||
"toast-example-2",
|
||||
"toast-message-email-4",
|
||||
"toc-collapse",
|
||||
"toc-collapse-items",
|
||||
"tooltip",
|
||||
"types-de-cookies-que-nous-utilisons",
|
||||
"types-of-cookies-we-use",
|
||||
|
2
go.mod
2
go.mod
@@ -4,7 +4,7 @@ go 1.19
|
||||
|
||||
require (
|
||||
github.com/airbnb/lottie-web v5.12.2+incompatible // indirect
|
||||
github.com/cloudcannon/bookshop/hugo/v3 v3.16.3 // indirect
|
||||
github.com/cloudcannon/bookshop/hugo/v3 v3.16.4 // indirect
|
||||
github.com/gethinode/mod-bootstrap v1.3.4 // indirect
|
||||
github.com/gethinode/mod-csp v1.0.8 // indirect
|
||||
github.com/gethinode/mod-flexsearch/v2 v2.1.3 // indirect
|
||||
|
2
go.sum
2
go.sum
@@ -8,6 +8,8 @@ github.com/cloudcannon/bookshop/hugo/v3 v3.16.1 h1:WByz6rqg28h94VLVLscu77/CHhi2p
|
||||
github.com/cloudcannon/bookshop/hugo/v3 v3.16.1/go.mod h1:s7mIonDhtsLcn10ZKuVXyqd6BDHI8vT1WQhZw8rPfY8=
|
||||
github.com/cloudcannon/bookshop/hugo/v3 v3.16.3 h1:/Z66xKILl1SNGQePHZCnxo6vFgED7AGI600OSPotXj4=
|
||||
github.com/cloudcannon/bookshop/hugo/v3 v3.16.3/go.mod h1:s7mIonDhtsLcn10ZKuVXyqd6BDHI8vT1WQhZw8rPfY8=
|
||||
github.com/cloudcannon/bookshop/hugo/v3 v3.16.4 h1:k233xdD3ydE6iN8QB+c37//rSsFVtLIo5OUNRN4E3bc=
|
||||
github.com/cloudcannon/bookshop/hugo/v3 v3.16.4/go.mod h1:s7mIonDhtsLcn10ZKuVXyqd6BDHI8vT1WQhZw8rPfY8=
|
||||
github.com/gethinode/mod-bootstrap v1.0.1 h1:NDZar+UEL42YHCvzzO+jVgqkZU5INA12BpjX3y6U4I4=
|
||||
github.com/gethinode/mod-bootstrap v1.0.1/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
|
||||
github.com/gethinode/mod-bootstrap v1.1.0 h1:BbalsW8kmFhv+J+dcc41TGcjIlM/p69AB0h0oGhAXIU=
|
||||
|
@@ -166,7 +166,6 @@
|
||||
"row-cols-1",
|
||||
"row-cols-2",
|
||||
"row-cols-sm-3",
|
||||
"script",
|
||||
"search",
|
||||
"search-input",
|
||||
"search-suggestions",
|
||||
|
@@ -101,6 +101,10 @@
|
||||
translation: "See also"
|
||||
- id: sectionMenu
|
||||
translation: "Select a topic"
|
||||
- id: tocShowMore
|
||||
translation: "Show {{ . }} more"
|
||||
- id: tocShowLess
|
||||
translation: "Show less"
|
||||
|
||||
# Sidebar
|
||||
- id: toggleSidebar
|
||||
|
@@ -99,6 +99,10 @@
|
||||
translation: "Zie ook"
|
||||
- id: sectionMenu
|
||||
translation: "Selecteer een onderwerp"
|
||||
- id: tocShowMore
|
||||
translation: "Toon {{ . }} meer"
|
||||
- id: tocShowLess
|
||||
translation: "Toon minder"
|
||||
|
||||
# Sidebar
|
||||
- id: toggleSidebar
|
||||
|
@@ -1,4 +1,4 @@
|
||||
<div class="mb-3 syntax-highlight">
|
||||
<div class="codeblock syntax-highlight mb-3">
|
||||
{{- $result := transform.HighlightCodeBlock . -}}
|
||||
{{- $result.Wrapped -}}
|
||||
</div>
|
@@ -168,7 +168,7 @@
|
||||
-}}
|
||||
|
||||
{{/* Main code */}}
|
||||
{{ if or (ne $args.gutter "0") ($args.wrapper) }}<div class="g-{{ $args.gutter }} {{ $args.wrapper }} h-100">{{ end }}
|
||||
{{ if or (gt $args.gutter "0") ($args.wrapper) }}<div class="{{ with $args.gutter }}g-{{ . }}{{ end }} {{ $args.wrapper }}">{{ end }}
|
||||
|
||||
{{ $stack := "" }}
|
||||
|
||||
@@ -301,4 +301,4 @@
|
||||
</div>
|
||||
{{- end -}}
|
||||
|
||||
{{ if or (ne $args.gutter "0") ($args.wrapper) }}</div>{{ end }}
|
||||
{{ if or (gt $args.gutter "0") ($args.wrapper) }}</div>{{ end }}
|
||||
|
@@ -111,7 +111,7 @@
|
||||
{{ end }}
|
||||
|
||||
{{/* Render default timeline */}}
|
||||
<div class="container p-0 d-none d-md-block {{ with $background }} timeline-{{ . }} {{ . }}{{ end }}{{ with $args.class }} {{ . }}{{ end }}">
|
||||
<div class="timeline-container container p-0 d-none d-md-block {{ with $background }} timeline-{{ . }} {{ . }}{{ end }}{{ with $args.class }} {{ . }}{{ end }}">
|
||||
{{ $title | safeHTML }}
|
||||
{{ range $index, $item := $data }}
|
||||
<div class="row timeline timeline-{{ $item.color }} timeline-dot g-0 ">
|
||||
@@ -137,7 +137,7 @@
|
||||
</div>
|
||||
|
||||
{{/* Render timeline for smaller devices */}}
|
||||
<div class="container p-0 d-block d-md-none small{{ with $background }} timeline-bg-{{ . }} bg-{{ . }}{{ end }}{{ with $args.class }} {{ . }}{{ end }}">
|
||||
<div class="timeline-container container p-0 d-block d-md-none small{{ with $background }} timeline-bg-{{ . }} bg-{{ . }}{{ end }}{{ with $args.class }} {{ . }}{{ end }}">
|
||||
{{ range $index, $item := $data }}
|
||||
<div class="row timeline-sm timeline-{{ $item.color }} timeline-dot g-0">
|
||||
{{ partial "inline/timeline-icon.html" (dict "icon" $item.icon "direction" "end" "col" 3) }}
|
||||
|
@@ -1,107 +1,88 @@
|
||||
{{- /*
|
||||
Copyright 2023 Veriphor, LLC
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
use this file except in compliance with the License. You may obtain a copy of
|
||||
the License at
|
||||
|
||||
https://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
License for the specific language governing permissions and limitations under
|
||||
the License.
|
||||
*/}}
|
||||
|
||||
{{- /*
|
||||
Renders a table of contents by parsing rendered content.
|
||||
|
||||
In site configuration, set the default start level, end level, and the minimum
|
||||
number of headings required to show the table of contents:
|
||||
|
||||
[params.toc]
|
||||
startLevel = 2 # default is 2
|
||||
endLevel = 3 # default is 3
|
||||
minNumHeadings = 2 # default is 2
|
||||
|
||||
To display the table of contents on a page:
|
||||
|
||||
+++
|
||||
title = 'Post 1'
|
||||
toc = true
|
||||
+++
|
||||
|
||||
To display the table of contents on a page, and override one or more of the
|
||||
default settings:
|
||||
|
||||
+++
|
||||
title = 'Post 1'
|
||||
[toc]
|
||||
startLevel = 2 # default is 2
|
||||
endLevel = 3 # default is 3
|
||||
minNumHeadings = 2 # default is 2
|
||||
+++
|
||||
|
||||
Change or localize the title with a "toc_title" key in your i18n file(s).
|
||||
|
||||
Start with these basic CSS rules to style the table of contents:
|
||||
|
||||
a.toc-item {
|
||||
display: block;
|
||||
}
|
||||
a.toc-level-1 {
|
||||
margin-left: 0em;
|
||||
}
|
||||
a.toc-level-2 {
|
||||
margin-left: 1em;
|
||||
}
|
||||
a.toc-level-3 {
|
||||
margin-left: 2em;
|
||||
}
|
||||
a.toc-level-4 {
|
||||
margin-left: 3em;
|
||||
}
|
||||
a.toc-level-5 {
|
||||
margin-left: 4em;
|
||||
}
|
||||
a.toc-level-6 {
|
||||
margin-left: 5em;
|
||||
}
|
||||
|
||||
@context {page} .
|
||||
|
||||
@returns {template.HTML}
|
||||
|
||||
@example {{ partial "toc-parse-content.html" . }}
|
||||
*/}}
|
||||
|
||||
{{- /* Get configuration. */}}
|
||||
{{- $startLevel := or (.Site.Params.navigation.startLevel | int) 2 }}
|
||||
{{- $endLevel := or (.Site.Params.navigation.endLevel | int) 3 }}
|
||||
{{- $minNumHeadings := or (.Site.Params.navigation.minNumHeadings | int) 2 }}
|
||||
|
||||
{{- /* Initialize. */}}
|
||||
{{ $headings := partial "assets/toc-headings.html" . }}
|
||||
|
||||
{{- /* Render */}}
|
||||
{{- if .Site.Params.navigation.toc }}
|
||||
{{- with $headings }}
|
||||
{{- if ge (len .) $minNumHeadings }}
|
||||
<strong class="d-block h6 my-2 pt-4">{{ T "toc" }}:</strong>
|
||||
<nav class="toc">
|
||||
{{- range . }}
|
||||
{{- $attrs := dict "class" (printf "toc-item toc-level-%d" (add 1 (sub .level $startLevel))) }}
|
||||
{{- with .id }}
|
||||
{{- $attrs = merge $attrs (dict "href" (printf "%s#%s" $.RelPermalink .)) }}
|
||||
{{- end }}
|
||||
<a
|
||||
{{- range $k, $v := $attrs }}
|
||||
{{- printf " %s=%q" $k $v | safeHTMLAttr }}
|
||||
{{- end -}}
|
||||
>{{ .text }}</a>
|
||||
{{- end }}
|
||||
</nav>
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{/*
|
||||
Copyright © 2025 The Hinode Team / Mark Dumay. All rights reserved.
|
||||
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
|
||||
Visit gethinode.com/license for more details.
|
||||
*/}}
|
||||
|
||||
{{ define "_partials/inline/toc-item.html" }}
|
||||
{{ $base := .base }}
|
||||
{{ $startLevel := .startLevel }}
|
||||
{{ $endLevel := .endLevel }}
|
||||
{{ $item := .item }}
|
||||
{{ $maxNumHeadings := .maxNumHeadings }}
|
||||
{{ $result := .result | default slice }}
|
||||
|
||||
{{ if and (ge $item.Level $startLevel) (le $item.Level $endLevel) }}
|
||||
{{- $attrs := dict "class" (printf "toc-item toc-level-%d" (add 1 (sub $item.Level $startLevel))) }}
|
||||
{{- with $item.ID }}
|
||||
{{- $attrs = merge $attrs (dict "href" (printf "%s#%s" $base .)) }}
|
||||
{{- end }}
|
||||
|
||||
{{ $htmlAttr := "" }}
|
||||
{{ range $k, $v := $attrs }}{{ $htmlAttr = printf "%s %s=%q" $htmlAttr $k $v | safeHTMLAttr }}{{ end }}
|
||||
{{ $rendered := printf "<a %s>%s</a>" $htmlAttr $item.Title }}
|
||||
{{ $result = $result | append $rendered }}
|
||||
{{ end }}
|
||||
|
||||
{{ range $item.Headings }}
|
||||
{{ $result = $result | append (partial "inline/toc-item.html" (dict
|
||||
"base" $base
|
||||
"item" .
|
||||
"startLevel" $startLevel
|
||||
"endLevel" $endLevel
|
||||
"maxNumHeadings" $maxNumHeadings
|
||||
)) }}
|
||||
{{ end }}
|
||||
|
||||
{{ return $result }}
|
||||
{{ end }}
|
||||
|
||||
{{- /* Get configuration. */}}
|
||||
{{- $startLevel := or (.Site.Params.navigation.startLevel | int) 2 }}
|
||||
{{- $endLevel := or (.Site.Params.navigation.endLevel | int) 3 }}
|
||||
{{- $minNumHeadings := or (.Site.Params.navigation.minNumHeadings | int) 2 }}
|
||||
{{- $maxNumHeadings := or (.Site.Params.navigation.maxNumHeadings | int) 9 }}
|
||||
|
||||
{{- /* Render */}}
|
||||
{{- if and .Site.Params.navigation.toc (ge (len .Fragments.HeadingsMap) $minNumHeadings) }}
|
||||
<strong class="d-block h6 my-2 pt-4">{{ T "toc" }}:</strong>
|
||||
<nav class="toc">
|
||||
{{ $result := slice }}
|
||||
{{ range .Fragments.Headings }}
|
||||
{{ $result = $result | append (partial "inline/toc-item.html" (dict
|
||||
"base" $.RelPermalink
|
||||
"item" .
|
||||
"startLevel" $startLevel
|
||||
"endLevel" $endLevel
|
||||
"maxNumHeadings" $maxNumHeadings
|
||||
)) }}
|
||||
{{ end }}
|
||||
|
||||
{{ range $i, $v := $result }}
|
||||
{{ if eq $i $maxNumHeadings }}
|
||||
{{ partial "assets/button.html" (dict
|
||||
"id" "btnTOCShowMore"
|
||||
"collapse-id" "toc-collapse-items"
|
||||
"link-type" "link"
|
||||
"class" "toc-item"
|
||||
"title" (T "tocShowMore" (sub (len $result) $i))
|
||||
"spacing" false
|
||||
) }}
|
||||
<div class="collapse" id="toc-collapse-items">
|
||||
{{ end }}
|
||||
{{ print $v | safeHTML }}
|
||||
{{ end }}
|
||||
|
||||
{{ if gt (len $result) $maxNumHeadings }}
|
||||
|
||||
{{ partial "assets/button.html" (dict
|
||||
"id" "btnTOCShowLess"
|
||||
"collapse-id" "toc-collapse-items"
|
||||
"link-type" "link"
|
||||
"class" "toc-item"
|
||||
"title" (T "tocShowLess")
|
||||
"spacing" false
|
||||
) }}
|
||||
</div>{{ end }}
|
||||
</nav>
|
||||
{{ end }}
|
||||
|
@@ -46,7 +46,7 @@
|
||||
{{ if eq .Kind "404" -}}
|
||||
<meta name="robots" content="noindex, follow">
|
||||
{{ else }}
|
||||
{{ with or .Params.robots .Params.meta.robots -}}
|
||||
{{ with or .Params.robots .Params.meta.robots .Site.Params.meta.robots -}}
|
||||
<meta name="robots" content="{{ . }}">
|
||||
{{ else -}}
|
||||
<meta name="robots" content="index, follow">
|
||||
|
@@ -72,7 +72,7 @@
|
||||
{{- $output = (replace $output "<span class=\"c\">#" "<span class=\"c\">" | safeHTML) -}}
|
||||
{{- end -}}
|
||||
|
||||
<div class="mb-3 syntax-highlight{{ with $args.class }} {{ . }}{{ end }}">
|
||||
<div class="command syntax-highlight mb-3{{ with $args.class }} {{ . }}{{ end }}">
|
||||
{{- $output -}}
|
||||
</div>
|
||||
{{ end }}
|
@@ -71,33 +71,35 @@
|
||||
{{- $match = replace $match $captureStart "" -}}
|
||||
{{- $match = replace $match $captureEnd "" -}}
|
||||
|
||||
<ul class="nav nav-tabs{{ with $args.class }} {{ . }}{{ end }}">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active font-monospace"
|
||||
href="#body-{{ $id }}"
|
||||
aria-current="page"
|
||||
data-bs-toggle="collapse"
|
||||
data-bs-target=".multi-{{ $id }}"
|
||||
aria-expanded="false"
|
||||
aria-controls="body-{{ $id }} footer-{{ $id }}">
|
||||
<small>{{ if $args.full }}{{ strings.TrimPrefix "/" (strings.TrimPrefix $basePath $file) }}{{ else }}{{ path.Base $file }}{{ end }}</small>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="border-start border-end border-bottom mb-3">
|
||||
<div class="collapse multi-{{ $id }}{{ if $args.show }} show{{ end }} syntax-highlight" id="body-{{ $id }}">
|
||||
{{- highlight (trim $match "\r\n") $extension "" -}}
|
||||
</div>
|
||||
<div class="collapse multi-{{ $id }}{{ if not $args.show }} show{{ end }} p-3" id="footer-{{ $id }}">
|
||||
<a class="nav-link active"
|
||||
href="#body-{{ $id }}"
|
||||
aria-current="page"
|
||||
data-bs-toggle="collapse"
|
||||
data-bs-target=".multi-{{ $id }}"
|
||||
aria-expanded="false"
|
||||
aria-controls="body-{{ $id }} footer-{{ $id }}">
|
||||
<small><i>{{ T "clickToExpand" }}</i></small>
|
||||
</a>
|
||||
<div class="docs">
|
||||
<ul class="docs-controls nav nav-tabs{{ with $args.class }} {{ . }}{{ end }}">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active font-monospace"
|
||||
href="#body-{{ $id }}"
|
||||
aria-current="page"
|
||||
data-bs-toggle="collapse"
|
||||
data-bs-target=".multi-{{ $id }}"
|
||||
aria-expanded="false"
|
||||
aria-controls="body-{{ $id }} footer-{{ $id }}">
|
||||
<small>{{ if $args.full }}{{ strings.TrimPrefix "/" (strings.TrimPrefix $basePath $file) }}{{ else }}{{ path.Base $file }}{{ end }}</small>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="docs-panel mb-3">
|
||||
<div class="collapse multi-{{ $id }}{{ if $args.show }} show{{ end }} syntax-highlight" id="body-{{ $id }}">
|
||||
{{- highlight (trim $match "\r\n") $extension "" -}}
|
||||
</div>
|
||||
<div class="collapse multi-{{ $id }}{{ if not $args.show }} show{{ end }} p-3" id="footer-{{ $id }}">
|
||||
<a class="nav-link active"
|
||||
href="#body-{{ $id }}"
|
||||
aria-current="page"
|
||||
data-bs-toggle="collapse"
|
||||
data-bs-target=".multi-{{ $id }}"
|
||||
aria-expanded="false"
|
||||
aria-controls="body-{{ $id }} footer-{{ $id }}">
|
||||
<small><i>{{ T "clickToExpand" }}</i></small>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{- end -}}
|
@@ -58,33 +58,35 @@
|
||||
{{- $tmp := os.Stat $file -}}
|
||||
{{- $content := readFile $file -}}
|
||||
|
||||
<ul class="nav nav-tabs{{ with $args.class }} {{ . }}{{ end }}">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active font-monospace"
|
||||
href="#body-{{ $id }}"
|
||||
aria-current="page"
|
||||
data-bs-toggle="collapse"
|
||||
data-bs-target=".multi-{{ $id }}"
|
||||
aria-expanded="false"
|
||||
aria-controls="body-{{ $id }} footer-{{ $id }}">
|
||||
<small>{{ if $args.full }}{{ strings.TrimPrefix $basePath $file }}{{ else }}{{ path.Base $file }}{{ end }}</small>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="border-start border-end border-bottom mb-3">
|
||||
<div class="collapse multi-{{ $id }}{{ if $args.show }} show{{ end }} syntax-highlight" id="body-{{ $id }}">
|
||||
{{- highlight (trim $content "\r\n") $lang (or $args.highlightOptions $args.options) -}}
|
||||
</div>
|
||||
<div class="collapse multi-{{ $id }}{{ if not $args.show }} show{{ end }} p-3" id="footer-{{ $id }}">
|
||||
<a class="nav-link active"
|
||||
href="#body-{{ $id }}"
|
||||
aria-current="page"
|
||||
data-bs-toggle="collapse"
|
||||
data-bs-target=".multi-{{ $id }}"
|
||||
aria-expanded="false"
|
||||
aria-controls="body-{{ $id }} footer-{{ $id }}">
|
||||
<small><i>{{ T "clickToExpand" }}</i></small>
|
||||
</a>
|
||||
<div class="file">
|
||||
<ul class="file-controls nav nav-tabs{{ with $args.class }} {{ . }}{{ end }}">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active font-monospace"
|
||||
href="#body-{{ $id }}"
|
||||
aria-current="page"
|
||||
data-bs-toggle="collapse"
|
||||
data-bs-target=".multi-{{ $id }}"
|
||||
aria-expanded="false"
|
||||
aria-controls="body-{{ $id }} footer-{{ $id }}">
|
||||
<small>{{ if $args.full }}{{ strings.TrimPrefix $basePath $file }}{{ else }}{{ path.Base $file }}{{ end }}</small>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="file-panel mb-3">
|
||||
<div class="collapse multi-{{ $id }}{{ if $args.show }} show{{ end }} syntax-highlight" id="body-{{ $id }}">
|
||||
{{- highlight (trim $content "\r\n") $lang (or $args.highlightOptions $args.options) -}}
|
||||
</div>
|
||||
<div class="collapse multi-{{ $id }}{{ if not $args.show }} show{{ end }} p-3" id="footer-{{ $id }}">
|
||||
<a class="nav-link active"
|
||||
href="#body-{{ $id }}"
|
||||
aria-current="page"
|
||||
data-bs-toggle="collapse"
|
||||
data-bs-target=".multi-{{ $id }}"
|
||||
aria-expanded="false"
|
||||
aria-controls="body-{{ $id }} footer-{{ $id }}">
|
||||
<small><i>{{ T "clickToExpand" }}</i></small>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{- end -}}
|
@@ -23,8 +23,9 @@
|
||||
{{- /* Define main breakpoint */ -}}
|
||||
{{- $.Scratch.Set "breakpoint" (partialCached "utilities/GetBreakpoint.html" .) }}
|
||||
|
||||
{{- /* Render blocks and establish overlay mode */ -}}
|
||||
{{- /* Prepare content blocks and establish overlay mode */ -}}
|
||||
{{ $blocks := partial "utilities/RenderContentBlocks.html" (dict "page" . "blocks" .Params.content_blocks) }}
|
||||
{{ $.Scratch.Set "blocks" $blocks }}
|
||||
{{ $overlayMode := $.Scratch.Get "overlayMode" }}
|
||||
|
||||
{{- /* Define base URL */ -}}
|
||||
@@ -51,7 +52,6 @@
|
||||
-}}
|
||||
|
||||
<div id="container" class="main">
|
||||
{{ $blocks }}
|
||||
{{ block "main" . }}{{ end -}}
|
||||
</div>
|
||||
|
||||
|
@@ -1,5 +1,8 @@
|
||||
{{ define "main" -}}
|
||||
{{- $breakpoint := $.Scratch.Get "breakpoint" -}}
|
||||
{{- $blocks := $.Scratch.Get "blocks" -}}
|
||||
|
||||
{{ $blocks | safeHTML }}
|
||||
|
||||
<div class="container-xxl flex-fill p-4 px-xxl-0">
|
||||
{{ .Render "body" }}
|
||||
|
@@ -1,4 +1,5 @@
|
||||
{{ define "main" -}}
|
||||
{{- $blocks := $.Scratch.Get "blocks" -}}
|
||||
{{- $breakpoint := $.Scratch.Get "breakpoint" -}}
|
||||
{{- $sidebar := partial "page/sidebar" . -}}
|
||||
{{- $toc := partial "page/panel-toc" . -}}
|
||||
@@ -15,6 +16,8 @@
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
{{ $blocks | safeHTML }}
|
||||
|
||||
<div class="container-xxl flex-fill p-4 px-xxl-0">
|
||||
<div class="row row-cols-1 row-cols-{{ $breakpoint.current }}-2 row-cols-{{ $breakpoint.next }}-3">
|
||||
<div class="col col-{{ $breakpoint.next }}-2 d-none d-{{ $breakpoint.next }}-block sidebar-overflow sticky-top pt-5">
|
||||
|
791
package-lock.json
generated
791
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -75,7 +75,7 @@
|
||||
"autoprefixer": "^10.4.21",
|
||||
"cssnano": "^7.1.0",
|
||||
"cssnano-preset-advanced": "^7.0.8",
|
||||
"hugo-bin": "0.145.1",
|
||||
"hugo-bin": "0.145.2",
|
||||
"purgecss-whitelister": "^2.4.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
@@ -85,9 +85,9 @@
|
||||
"@semantic-release/exec": "^7.1.0",
|
||||
"@semantic-release/git": "^10.0.1",
|
||||
"commitizen": "^4.3.1",
|
||||
"cpy-cli": "^5.0.0",
|
||||
"cpy-cli": "^6.0.0",
|
||||
"cz-conventional-changelog": "^3.3.0",
|
||||
"eslint": "^9.31.0",
|
||||
"eslint": "^9.33.0",
|
||||
"husky": "^9.1.7",
|
||||
"markdownlint-cli2": "^0.18.1",
|
||||
"neostandard": "^0.12.2",
|
||||
@@ -98,7 +98,7 @@
|
||||
"rimraf": "^6.0.1",
|
||||
"semantic-release": "^24.2.7",
|
||||
"shx": "^0.4.0",
|
||||
"stylelint": "^16.22.0",
|
||||
"stylelint": "^16.23.1",
|
||||
"stylelint-config-standard-scss": "^15.0.1"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
|
Reference in New Issue
Block a user