mirror of
https://github.com/gethinode/hinode.git
synced 2025-10-07 10:04:22 +00:00
Compare commits
273 Commits
v1.0.0-alp
...
v1.13.1
Author | SHA1 | Date | |
---|---|---|---|
![]() |
68c2cac3e0 | ||
![]() |
1c0ed71df9 | ||
![]() |
1e8791fdf0 | ||
![]() |
8cfac32280 | ||
![]() |
6e7a1dcdb9 | ||
![]() |
19cda9a986 | ||
![]() |
9ee9ebc960 | ||
![]() |
6f7903a2f2 | ||
![]() |
82d12d693c | ||
![]() |
3ed64f59f1 | ||
![]() |
df8ea923c5 | ||
![]() |
60872ea541 | ||
![]() |
52715cef21 | ||
![]() |
91f79e57ab | ||
![]() |
fdd878241b | ||
![]() |
f32bd92efa | ||
![]() |
c31dca464a | ||
![]() |
cb02c25ac4 | ||
![]() |
39ef3c5372 | ||
![]() |
546003c9d4 | ||
![]() |
6b4a1334bb | ||
![]() |
90ee71a536 | ||
![]() |
0c6b2929dc | ||
![]() |
2cb60efc38 | ||
![]() |
26f1bf3c7f | ||
![]() |
ec8176c1e3 | ||
![]() |
20b1cfb59e | ||
![]() |
09a6125834 | ||
![]() |
f30b30e48e | ||
![]() |
a0b89fd1a3 | ||
![]() |
dccedfe42d | ||
![]() |
d3ee13584a | ||
![]() |
03f4541b8a | ||
![]() |
9b0f91a378 | ||
![]() |
d9487b77db | ||
![]() |
f543c012bd | ||
![]() |
c068f7f4e6 | ||
![]() |
0dfd5d6a2f | ||
![]() |
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 | ||
![]() |
d414c111f4 | ||
![]() |
62f7ca0c79 | ||
![]() |
6ebd03b4db | ||
![]() |
a3e5b7cbc4 | ||
![]() |
7335014a55 | ||
![]() |
f43dc337d1 | ||
![]() |
50de255e59 | ||
![]() |
3166ce9bb3 | ||
![]() |
d8c331e35d | ||
![]() |
cef686243a | ||
![]() |
c4bdbb242c | ||
![]() |
cb70afd5f0 | ||
![]() |
fbf758cced | ||
![]() |
abd69af2f2 | ||
![]() |
1190a96694 | ||
![]() |
d310648950 | ||
![]() |
8c7fea7670 | ||
![]() |
9e5d786ca3 | ||
![]() |
2bfb9d6991 | ||
![]() |
294f1ae91d | ||
![]() |
8f5f1caef6 | ||
![]() |
d342496336 | ||
![]() |
24c5ecda82 | ||
![]() |
dbf3be5528 | ||
![]() |
d4e516065d | ||
![]() |
5b2b996948 | ||
![]() |
33056742af | ||
![]() |
8fa4b251b1 | ||
![]() |
dcbbf2a55a | ||
![]() |
c7a4edee1f | ||
![]() |
f69f536dca | ||
![]() |
4bd20f6bb0 | ||
![]() |
6db9cbec0e | ||
![]() |
0170417ddc | ||
![]() |
3eb2e36429 | ||
![]() |
773b365b1c | ||
![]() |
550945f0f6 | ||
![]() |
b60ad8fd0b | ||
![]() |
38d1ddb86d | ||
![]() |
17287492e5 | ||
![]() |
992d724a6f | ||
![]() |
0b81eba373 | ||
![]() |
0a5e8bed92 | ||
![]() |
a387adca66 | ||
![]() |
5341db7db2 | ||
![]() |
f4d59a0324 | ||
![]() |
6c068898a3 | ||
![]() |
eec6697ff6 | ||
![]() |
26402fb5be | ||
![]() |
e08aebf928 | ||
![]() |
787ad2eb91 | ||
![]() |
8f137b0c54 | ||
![]() |
a979dd8d58 | ||
![]() |
b77a125485 | ||
![]() |
004da99765 | ||
![]() |
907c8ac800 | ||
![]() |
a8efc27771 | ||
![]() |
3bf8da3767 | ||
![]() |
131de0c064 | ||
![]() |
a914fe18e8 | ||
![]() |
a855a41c13 | ||
![]() |
c41cd0650e | ||
![]() |
a83bab6689 | ||
![]() |
03a099ae66 | ||
![]() |
cd837cf116 | ||
![]() |
8cffd358aa | ||
![]() |
0d33a15e98 | ||
![]() |
9be691eb6b | ||
![]() |
fd727228d7 | ||
![]() |
a9f1cd098d | ||
![]() |
dc1c358cfa | ||
![]() |
0d24dc445d | ||
![]() |
f6f034252b | ||
![]() |
863b81efbb | ||
![]() |
9b0683d176 | ||
![]() |
dd1b2eb97f | ||
![]() |
3f6dc3b2d7 | ||
![]() |
873277b691 | ||
![]() |
7a456a12d2 | ||
![]() |
b437b414b0 | ||
![]() |
80ac704d81 | ||
![]() |
996e9ec294 | ||
![]() |
0ab274d6f5 | ||
![]() |
3742e8ef04 | ||
![]() |
3eadaa02b8 | ||
![]() |
90bc571b76 | ||
![]() |
aad5b59a48 | ||
![]() |
4d7fdffd4a | ||
![]() |
c384836224 | ||
![]() |
cb547351d9 | ||
![]() |
3b47a5b66f | ||
![]() |
9f9029baf0 | ||
![]() |
3079f1f7dd | ||
![]() |
e546d34422 | ||
![]() |
00e80f6400 | ||
![]() |
b46dd52101 | ||
![]() |
b1a8c956fc | ||
![]() |
1b8aa10d11 | ||
![]() |
32fd60bb58 | ||
![]() |
8fa19c9ed1 | ||
![]() |
d36fcd894b | ||
![]() |
7378a61542 | ||
![]() |
fb63e36c56 | ||
![]() |
ae1cda1f5a | ||
![]() |
4846d1b016 | ||
![]() |
01522dad71 | ||
![]() |
0bbef1dad2 | ||
![]() |
5e048d32df | ||
![]() |
d1128fa7c3 | ||
![]() |
cf9a39b51f | ||
![]() |
ae9ec71966 | ||
![]() |
f6c4bbfffb | ||
![]() |
7a655315f1 | ||
![]() |
5c27178881 | ||
![]() |
c829049842 | ||
![]() |
613da916aa | ||
![]() |
d3d75c9dc6 | ||
![]() |
2f5b49397e | ||
![]() |
632f3d861b | ||
![]() |
004063f02a | ||
![]() |
1bd498f816 | ||
![]() |
291220256a | ||
![]() |
7bcb87a73e | ||
![]() |
55cebc752e | ||
![]() |
14bf59a551 | ||
![]() |
bce0fedd15 | ||
![]() |
694e7fc7b1 | ||
![]() |
93749cb368 | ||
![]() |
cf01e22a4d | ||
![]() |
f416f6bb7e | ||
![]() |
a7b776c0dc | ||
![]() |
e70f3acb57 | ||
![]() |
6e7b40ad0f | ||
![]() |
7446b2958e | ||
![]() |
6c18ada352 | ||
![]() |
323b42996b | ||
![]() |
ab8074b293 | ||
![]() |
9419e18ba9 | ||
![]() |
0f007ba5c2 | ||
![]() |
7d0943fb0c | ||
![]() |
3d2cfdaf0a | ||
![]() |
281c16b561 | ||
![]() |
fe68bd6be3 | ||
![]() |
3bf0c241a3 | ||
![]() |
a6a670cd2b | ||
![]() |
a44b5449f8 | ||
![]() |
461f53c67e | ||
![]() |
9a5059d8bd | ||
![]() |
c1586ee00e | ||
![]() |
88d2a50954 | ||
![]() |
77aa394c8e | ||
![]() |
5d4147fea9 | ||
![]() |
9c1d84487d | ||
![]() |
944a9705d7 | ||
![]() |
5e274d952a | ||
![]() |
a7f2d6d003 | ||
![]() |
057ae25f7b | ||
![]() |
a6454e3b4e | ||
![]() |
4b8f59782a | ||
![]() |
777c4f671f | ||
![]() |
990a016434 | ||
![]() |
1e64f4f009 | ||
![]() |
8bd3f0a254 | ||
![]() |
d6b3aaeb99 | ||
![]() |
e2e351f964 | ||
![]() |
b711d0591d | ||
![]() |
7a76408876 | ||
![]() |
1a53fdc636 | ||
![]() |
81f60a28e1 | ||
![]() |
193edecd03 | ||
![]() |
9ed4d00d19 | ||
![]() |
e821670be9 | ||
![]() |
7f7c8d12d9 | ||
![]() |
450e065117 | ||
![]() |
1360a750a5 | ||
![]() |
e7bb3ba1ca | ||
![]() |
5121c1cf1c | ||
![]() |
50bf5fa168 | ||
![]() |
363fcc3788 | ||
![]() |
d2e2b424b8 | ||
![]() |
859140e92f | ||
![]() |
38ef1bbbfe | ||
![]() |
508da2ba2b | ||
![]() |
529301ec8b | ||
![]() |
91acdeca75 |
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}}"
|
8
.github/workflows/lint-build.yml
vendored
8
.github/workflows/lint-build.yml
vendored
@@ -14,13 +14,17 @@ env:
|
|||||||
CACHE_PATH_WIN: '~\AppData\Local\hugo_cache'
|
CACHE_PATH_WIN: '~\AppData\Local\hugo_cache'
|
||||||
CACHE_PATH_MAC: '/Users/runner/Library/Caches/hugo_cache'
|
CACHE_PATH_MAC: '/Users/runner/Library/Caches/hugo_cache'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
pull-requests: read
|
||||||
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
lint:
|
lint:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Check out repository
|
- name: Check out repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
|
|
||||||
- name: Set up Node.js
|
- name: Set up Node.js
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v4
|
||||||
@@ -49,7 +53,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Check out repository
|
- name: Check out repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
|
|
||||||
- name: Install Go
|
- name: Install Go
|
||||||
uses: actions/setup-go@v5
|
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:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
|
|
||||||
- name: Setup Node.js
|
- name: Setup Node.js
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v4
|
||||||
|
41
.github/workflows/npm-publish.yml
vendored
41
.github/workflows/npm-publish.yml
vendored
@@ -1,41 +0,0 @@
|
|||||||
# This workflow will run tests using node and then publish a package to npmjs.org when a release is created
|
|
||||||
# For more information see: https://docs.github.com/en/actions/publishing-packages/publishing-nodejs-packages
|
|
||||||
name: Publish package to npmjs
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
release:
|
|
||||||
types: [published]
|
|
||||||
|
|
||||||
env:
|
|
||||||
REGISTRY_URL: 'https://registry.npmjs.org/'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
os: [ubuntu-latest]
|
|
||||||
node-version: [20.x]
|
|
||||||
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Setup .npmrc file to publish to npm
|
|
||||||
uses: actions/setup-node@v4
|
|
||||||
with:
|
|
||||||
node-version: ${{ matrix.node-version }}
|
|
||||||
registry-url: ${{ env.REGISTRY_URL }}
|
|
||||||
cache: 'npm'
|
|
||||||
cache-dependency-path: '**/package-lock.json'
|
|
||||||
|
|
||||||
# [27/AUG/23] Adjusted from npm ci to prevent EBADPLATFORM error due to fsevents
|
|
||||||
- name: Install npm
|
|
||||||
run: npm i
|
|
||||||
|
|
||||||
- name: Publish package to npm
|
|
||||||
run: npm publish
|
|
||||||
env:
|
|
||||||
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
44
.github/workflows/release.yml
vendored
Normal file
44
.github/workflows/release.yml
vendored
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
name: Release
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
env:
|
||||||
|
HUSKY: 0
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read # for checkout
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
release:
|
||||||
|
name: Release
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: write # to be able to publish a GitHub release
|
||||||
|
issues: write # to be able to comment on released issues
|
||||||
|
pull-requests: write # to be able to comment on released pull requests
|
||||||
|
id-token: write # to enable use of OIDC for npm provenance
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v5
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Set up Node.js
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: "lts/*"
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm clean-install
|
||||||
|
|
||||||
|
- name: Verify the integrity of provenance attestations and registry signatures for installed dependencies
|
||||||
|
run: npm audit signatures
|
||||||
|
|
||||||
|
- name: Release
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
run: npx semantic-release
|
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,5 +1,6 @@
|
|||||||
_vendor/
|
_vendor/
|
||||||
prebuild/
|
prebuild/
|
||||||
|
prebuild-headers/
|
||||||
public/
|
public/
|
||||||
resources/
|
resources/
|
||||||
node_modules/
|
node_modules/
|
||||||
|
1
.husky/commit-msg
Normal file
1
.husky/commit-msg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
npx --no -- commitlint --edit $1
|
6
.husky/install.mjs
Normal file
6
.husky/install.mjs
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
// Skip Husky install in production and CI
|
||||||
|
if (process.env.NODE_ENV === 'production' || process.env.CI === 'true') {
|
||||||
|
process.exit(0)
|
||||||
|
}
|
||||||
|
const husky = (await import('husky')).default
|
||||||
|
console.log(husky())
|
1
.husky/pre-commit
Normal file
1
.husky/pre-commit
Normal file
@@ -0,0 +1 @@
|
|||||||
|
npm test
|
@@ -15,9 +15,6 @@
|
|||||||
<a href="https://gethinode.com">
|
<a href="https://gethinode.com">
|
||||||
<img src="https://img.shields.io/badge/theme-hinode-blue" alt="Hinode theme">
|
<img src="https://img.shields.io/badge/theme-hinode-blue" alt="Hinode theme">
|
||||||
</a>
|
</a>
|
||||||
<a href="https://www.npmjs.com/package/%40gethinode/hinode">
|
|
||||||
<img src="https://img.shields.io/npm/v/%40gethinode/hinode" alt="npm package">
|
|
||||||
</a>
|
|
||||||
<a href="https://app.netlify.com/sites/gethinode-demo/deploys">
|
<a href="https://app.netlify.com/sites/gethinode-demo/deploys">
|
||||||
<img src="https://img.shields.io/netlify/0ad42e3e-fdfa-4d37-8e26-58badd429a67" alt="Netlify Status">
|
<img src="https://img.shields.io/netlify/0ad42e3e-fdfa-4d37-8e26-58badd429a67" alt="Netlify Status">
|
||||||
</a>
|
</a>
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
{{- if site.Params.main.enableDarkMode -}}
|
{{- if (or site.Params.main.enableDarkMode site.Params.main.colorMode.enabled) -}}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Color mode toggler for Bootstrap's docs (https://getbootstrap.com/)
|
* Color mode toggler for Bootstrap's docs (https://getbootstrap.com/)
|
||||||
@@ -43,9 +43,7 @@
|
|||||||
document.documentElement.setAttribute('data-bs-theme', theme)
|
document.documentElement.setAttribute('data-bs-theme', theme)
|
||||||
}
|
}
|
||||||
|
|
||||||
document.querySelectorAll('.navbar-mode-selector').forEach(chk => {
|
updateSelectors()
|
||||||
chk.checked = (document.documentElement.getAttribute('data-bs-theme') === 'light')
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// alternates the currently active theme
|
// alternates the currently active theme
|
||||||
@@ -54,6 +52,12 @@
|
|||||||
setTheme(target)
|
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', () => {
|
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => {
|
||||||
if (storedTheme !== 'light' || storedTheme !== 'dark') {
|
if (storedTheme !== 'light' || storedTheme !== 'dark') {
|
||||||
setTheme(getPreferredTheme())
|
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())
|
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()
|
||||||
|
}
|
||||||
|
})
|
45
assets/js/nav.js
Normal file
45
assets/js/nav.js
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
function updateDropdown (element, id, label) {
|
||||||
|
const dropdown = document.getElementById(element)
|
||||||
|
if (dropdown != null) {
|
||||||
|
dropdown.querySelector('.dropdown-toggle').textContent = label
|
||||||
|
dropdown.querySelectorAll('.panel-dropdown .dropdown-item').forEach(item => {
|
||||||
|
item.classList.remove('active')
|
||||||
|
let target = item.getAttribute('data-link')
|
||||||
|
if (target != null) {
|
||||||
|
target = target.replace(/^#+/, '')
|
||||||
|
if (target === id) {
|
||||||
|
item.classList.add('active')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
document.querySelectorAll('.panel-dropdown').forEach(trigger => {
|
||||||
|
trigger.addEventListener('hide.bs.dropdown', event => {
|
||||||
|
if (event.clickEvent != null) {
|
||||||
|
let target = event.clickEvent.srcElement.getAttribute('data-link')
|
||||||
|
if (target != null) {
|
||||||
|
trigger.querySelectorAll('.panel-dropdown .dropdown-item').forEach(item => {
|
||||||
|
item.classList.remove('active')
|
||||||
|
})
|
||||||
|
target = target.replace(/^#+/, '')
|
||||||
|
const btn = document.getElementById(target)
|
||||||
|
if (btn != null) {
|
||||||
|
event.clickEvent.srcElement.classList.add('active')
|
||||||
|
trigger.querySelector('.dropdown-toggle').textContent = event.clickEvent.srcElement.textContent
|
||||||
|
btn.click()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
document.querySelectorAll('.nav-panel .nav-link').forEach(trigger => {
|
||||||
|
trigger.addEventListener('click', event => {
|
||||||
|
const companion = event.srcElement.parentElement.parentElement.getAttribute('data-companion')
|
||||||
|
if (companion != null) {
|
||||||
|
updateDropdown(companion, trigger.getAttribute('id'), trigger.textContent.trim())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
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/carousel.scss";
|
||||||
@import "components/clipboard.scss";
|
@import "components/clipboard.scss";
|
||||||
@import "components/command.scss";
|
@import "components/command.scss";
|
||||||
|
@import "components/docs.scss";
|
||||||
@import "components/feature.scss";
|
@import "components/feature.scss";
|
||||||
@import "components/footer.scss";
|
@import "components/footer.scss";
|
||||||
|
@import "components/kbd.scss";
|
||||||
@import "components/nav.scss";
|
@import "components/nav.scss";
|
||||||
@import "components/navbar.scss";
|
@import "components/navbar.scss";
|
||||||
@import "components/img.scss";
|
@import "components/img.scss";
|
||||||
@@ -35,6 +37,7 @@
|
|||||||
@import "components/sidebar.scss";
|
@import "components/sidebar.scss";
|
||||||
@import "components/syntax-dart.scss"; // note: modified for dart-sass
|
@import "components/syntax-dart.scss"; // note: modified for dart-sass
|
||||||
@import "components/table.scss";
|
@import "components/table.scss";
|
||||||
|
@import "components/toast.scss";
|
||||||
@import "components/timeline.scss";
|
@import "components/timeline.scss";
|
||||||
@import "components/toc.scss";
|
@import "components/toc.scss";
|
||||||
@import "components/video.scss";
|
@import "components/video.scss";
|
||||||
|
@@ -22,8 +22,10 @@
|
|||||||
@import "components/carousel.scss";
|
@import "components/carousel.scss";
|
||||||
@import "components/clipboard.scss";
|
@import "components/clipboard.scss";
|
||||||
@import "components/command.scss";
|
@import "components/command.scss";
|
||||||
|
@import "components/docs.scss";
|
||||||
@import "components/feature.scss";
|
@import "components/feature.scss";
|
||||||
@import "components/footer.scss";
|
@import "components/footer.scss";
|
||||||
|
@import "components/kbd.scss";
|
||||||
@import "components/nav.scss";
|
@import "components/nav.scss";
|
||||||
@import "components/navbar.scss";
|
@import "components/navbar.scss";
|
||||||
@import "components/img.scss";
|
@import "components/img.scss";
|
||||||
@@ -33,6 +35,7 @@
|
|||||||
@import "components/sidebar.scss";
|
@import "components/sidebar.scss";
|
||||||
@import "components/syntax.scss";
|
@import "components/syntax.scss";
|
||||||
@import "components/table.scss";
|
@import "components/table.scss";
|
||||||
|
@import "components/toast.scss";
|
||||||
@import "components/timeline.scss";
|
@import "components/timeline.scss";
|
||||||
@import "components/toc.scss";
|
@import "components/toc.scss";
|
||||||
@import "components/video.scss";
|
@import "components/video.scss";
|
||||||
|
@@ -14,27 +14,21 @@ a:active {
|
|||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
div.rounded, img.rounded {
|
||||||
|
--bs-border-radius: #{$theme-border-radius};
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Ensure main page is rendered to full viewport height
|
// Ensure main page is rendered to full viewport height
|
||||||
//
|
//
|
||||||
.main {
|
.main {
|
||||||
min-height: 100vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fullcover {
|
|
||||||
--navbar-height: #{$navbar-height};
|
--navbar-height: #{$navbar-height};
|
||||||
|
|
||||||
min-height: calc(100vh - var(--navbar-height));
|
|
||||||
}
|
|
||||||
|
|
||||||
.fullscreen {
|
|
||||||
--overlay-offset: #{$overlay-offset};
|
--overlay-offset: #{$overlay-offset};
|
||||||
|
--section-height: 88vh;
|
||||||
|
--max-section-height: 1024px;
|
||||||
|
|
||||||
min-height: calc(100vh - var(--overlay-offset));
|
min-height: 100vh;
|
||||||
}
|
margin-top: var(--overlay-offset);
|
||||||
|
|
||||||
.main-content {
|
|
||||||
margin-top: var(--navbar-offset);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$utilities: map-merge(
|
$utilities: map-merge(
|
||||||
@@ -100,66 +94,24 @@ $utilities: map-merge(
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
@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 {
|
:root {
|
||||||
--nav-height: 90px;
|
--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));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.section-cover {
|
.section-cover {
|
||||||
min-height: 100vh;
|
min-height: calc(var(--section-height) - var(--overlay-offset));
|
||||||
}
|
}
|
||||||
|
|
||||||
@include media-breakpoint-up(xxl) {
|
@include media-breakpoint-up(xxl) {
|
||||||
.section-cover {
|
.section-cover {
|
||||||
min-height: calc(min(100vh, 1000px));
|
min-height: calc(min(calc(var(--section-height) - var(--overlay-offset)), var(--max-section-height)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* stylelint-disable media-feature-range-notation */
|
/* stylelint-disable media-feature-range-notation */
|
||||||
@media (min-height: 1400px) {
|
@media (min-height: 1400px) {
|
||||||
.section-cover {
|
.section-cover {
|
||||||
min-height: calc(min(100vh, 1000px));
|
min-height: calc(min(calc(var(--section-height) - var(--overlay-offset)), var(--max-section-height)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* stylelint-enable media-feature-range-notation */
|
/* stylelint-enable media-feature-range-notation */
|
||||||
|
@@ -16,12 +16,12 @@ $font-weight-normal: 300 !default;
|
|||||||
$font-weight-bold: 600 !default;
|
$font-weight-bold: 600 !default;
|
||||||
$font-weight-bolder: bolder !default;
|
$font-weight-bolder: bolder !default;
|
||||||
|
|
||||||
$theme-border-radius: 1rem;
|
|
||||||
|
|
||||||
strong {
|
strong {
|
||||||
font-weight: 600 if($enable-important-utilities, !important, null);
|
font-weight: 600 if($enable-important-utilities, !important, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$theme-border-radius: 0.375rem;
|
||||||
|
|
||||||
$navbar-height: h.$navbar-height;
|
$navbar-height: h.$navbar-height;
|
||||||
$navbar-offset: h.$navbar-offset;
|
$navbar-offset: h.$navbar-offset;
|
||||||
$navbar-offset-xs: h.$navbar-offset-xs;
|
$navbar-offset-xs: h.$navbar-offset-xs;
|
||||||
@@ -69,3 +69,8 @@ $theme-colors: (
|
|||||||
"body": $body-bg,
|
"body": $body-bg,
|
||||||
"body-tertiary": $gray-100,
|
"body-tertiary": $gray-100,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$btn-padding-y-xs: .08rem !default;
|
||||||
|
$btn-padding-x-xs: 0.3rem !default;
|
||||||
|
$btn-font-size-xs: $font-size-base * .6 !default;
|
||||||
|
$btn-border-radius-xs: .2rem !default;
|
||||||
|
@@ -17,13 +17,13 @@ $font-weight-normal: 300 !default;
|
|||||||
$font-weight-bold: 600 !default;
|
$font-weight-bold: 600 !default;
|
||||||
$font-weight-bolder: bolder !default;
|
$font-weight-bolder: bolder !default;
|
||||||
|
|
||||||
$theme-border-radius: 1rem;
|
|
||||||
|
|
||||||
strong {
|
strong {
|
||||||
font-weight: 600 if($enable-important-utilities, !important, null);
|
font-weight: 600 if($enable-important-utilities, !important, null);
|
||||||
}
|
}
|
||||||
// scss-docs-end font
|
// scss-docs-end font
|
||||||
|
|
||||||
|
$theme-border-radius: 0.375rem;
|
||||||
|
|
||||||
$white: #fff !default;
|
$white: #fff !default;
|
||||||
$black: #000 !default;
|
$black: #000 !default;
|
||||||
$body-bg: #fff !default;
|
$body-bg: #fff !default;
|
||||||
@@ -64,3 +64,8 @@ $theme-colors: (
|
|||||||
"body": $body-bg,
|
"body": $body-bg,
|
||||||
"body-tertiary": $gray-100,
|
"body-tertiary": $gray-100,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$btn-padding-y-xs: .08rem !default;
|
||||||
|
$btn-padding-x-xs: 0.3rem !default;
|
||||||
|
$btn-font-size-xs: $font-size-base * .6 !default;
|
||||||
|
$btn-border-radius-xs: .2rem !default;
|
||||||
|
@@ -48,3 +48,11 @@ a.btn {
|
|||||||
|
|
||||||
margin: 0 !important;
|
margin: 0 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.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 {
|
.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;
|
--bs-card-bg: transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -28,6 +31,13 @@
|
|||||||
cursor: pointer;
|
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 {
|
.card-img-wrap img {
|
||||||
transition: transform 0.25s ease;
|
transition: transform 0.25s ease;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
@@ -1,3 +1,7 @@
|
|||||||
|
.carousel-inner {
|
||||||
|
border-radius: #{$theme-border-radius};
|
||||||
|
}
|
||||||
|
|
||||||
.gradient {
|
.gradient {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 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;
|
width: 100vw;
|
||||||
object-fit: cover;
|
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};
|
||||||
|
}
|
@@ -1,14 +1,8 @@
|
|||||||
.nav-tabs .nav-tabs {
|
.nav-tabs {
|
||||||
border: none;
|
border: none !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-tabs .nav-link.active {
|
.nav-callout, .tab-content {
|
||||||
border-bottom-color: var(--bs-body-bg) !important;
|
|
||||||
border-bottom-style: solid !important;
|
|
||||||
z-index: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-callout {
|
|
||||||
--#{$prefix}nav-callout-bg: var(--#{$prefix}light);
|
--#{$prefix}nav-callout-bg: var(--#{$prefix}light);
|
||||||
--#{$prefix}nav-callout-active-bg: var(--bs-primary-bg-subtle);
|
--#{$prefix}nav-callout-active-bg: var(--bs-primary-bg-subtle);
|
||||||
--#{$prefix}nav-callout-gap: #{$nav-underline-gap};
|
--#{$prefix}nav-callout-gap: #{$nav-underline-gap};
|
||||||
@@ -90,9 +84,17 @@
|
|||||||
border-color: var(--#{$prefix}border-color);
|
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 {
|
@if $enable-dark-mode {
|
||||||
@include color-mode(dark) {
|
@include color-mode(dark) {
|
||||||
.nav-callout {
|
.nav-callout, .tab-content {
|
||||||
--#{$prefix}nav-callout-bg: var(--#{$prefix}tertiary-bg);
|
--#{$prefix}nav-callout-bg: var(--#{$prefix}tertiary-bg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -7,7 +7,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.mode-switch {
|
.mode-switch {
|
||||||
--#{$prefix}mode-switch-width: 50px;
|
--#{$prefix}mode-switch-width: 3em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mode-switch .label {
|
.mode-switch .label {
|
||||||
@@ -64,6 +64,18 @@
|
|||||||
transform: scale(0.8);
|
transform: scale(0.8);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.mode-toggle > input {
|
||||||
|
z-index: 1;
|
||||||
|
cursor: pointer;
|
||||||
|
height: 25px;
|
||||||
|
width: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mode-toggle > label {
|
||||||
|
z-index: 0;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
// Source: https://jsfiddle.net/njhgr40m/
|
// Source: https://jsfiddle.net/njhgr40m/
|
||||||
|
|
||||||
@if $enable-dark-mode {
|
@if $enable-dark-mode {
|
||||||
@@ -126,12 +138,60 @@
|
|||||||
|
|
||||||
.navbar-expanded {
|
.navbar-expanded {
|
||||||
box-shadow: $box-shadow-sm;
|
box-shadow: $box-shadow-sm;
|
||||||
|
min-height: 100vh;
|
||||||
|
align-items: start;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-expanded .navbar-collapse {
|
||||||
|
margin-top: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
@each $h, $size in $font-sizes {
|
||||||
|
.navbar-fs-#{$h} {
|
||||||
|
font-size: #{$size};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@each $breakpoint in map-keys($grid-breakpoints) {
|
||||||
|
$next: breakpoint-next($breakpoint, $grid-breakpoints);
|
||||||
|
$infix: breakpoint-infix($next, $grid-breakpoints);
|
||||||
|
|
||||||
|
@if $infix != '' {
|
||||||
|
@include media-breakpoint-up($next) {
|
||||||
|
.navbar#{$infix}-fs {
|
||||||
|
font-size: inherit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-icon {
|
||||||
|
padding-right: var(--bs-navbar-nav-link-padding-x);
|
||||||
|
padding-left: var(--bs-navbar-nav-link-padding-x);
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-item .vr {
|
.nav-item .vr {
|
||||||
color: var(--bs-navbar-color);
|
color: var(--bs-navbar-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.navbar .nav-item {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-collapse .dropdown {
|
||||||
|
display: inline;
|
||||||
|
align-items: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-expanded .btn {
|
||||||
|
font-size: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-expanded .search-input {
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
/* Remove border from toggler */
|
/* Remove border from toggler */
|
||||||
.navbar-toggler {
|
.navbar-toggler {
|
||||||
border: 0 if($enable-important-utilities, !important, null);
|
border: 0 if($enable-important-utilities, !important, null);
|
||||||
@@ -319,3 +379,7 @@
|
|||||||
position: absolute;
|
position: absolute;
|
||||||
z-index: $zindex-fixed;
|
z-index: $zindex-fixed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.form-control.is-search {
|
||||||
|
border: 1px solid var(--bs-border-color) !important;
|
||||||
|
}
|
||||||
|
@@ -11,6 +11,12 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.sidebar-item {
|
.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);
|
color: rgba(0, 0, 0, 0.65);
|
||||||
margin-left: 0 !important;
|
margin-left: 0 !important;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
@@ -28,6 +34,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.sidebar-item-group {
|
.sidebar-item-group {
|
||||||
|
border-radius: #{$theme-border-radius};
|
||||||
|
|
||||||
&:hover,
|
&:hover,
|
||||||
&:focus {
|
&:focus {
|
||||||
color: $primary;
|
color: $primary;
|
||||||
@@ -126,4 +134,6 @@
|
|||||||
|
|
||||||
.dropdown-toggle {
|
.dropdown-toggle {
|
||||||
outline: 0;
|
outline: 0;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
@@ -16,6 +16,10 @@
|
|||||||
flex: 1;
|
flex: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.codeblock.syntax-highlight, .command.syntax-highlight {
|
||||||
|
border-radius: #{$theme-border-radius};
|
||||||
|
}
|
||||||
|
|
||||||
.syntax-highlight {
|
.syntax-highlight {
|
||||||
background-color: var(--bs-light) if($enable-important-utilities, !important, null);
|
background-color: var(--bs-light) if($enable-important-utilities, !important, null);
|
||||||
overflow-x: auto;
|
overflow-x: auto;
|
||||||
|
@@ -16,6 +16,10 @@
|
|||||||
flex: 1;
|
flex: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.codeblock.syntax-highlight, .command.syntax-highlight {
|
||||||
|
border-radius: #{$theme-border-radius};
|
||||||
|
}
|
||||||
|
|
||||||
.syntax-highlight {
|
.syntax-highlight {
|
||||||
background-color: var(--bs-light) if($enable-important-utilities, !important, null);
|
background-color: var(--bs-light) if($enable-important-utilities, !important, null);
|
||||||
overflow-x: auto;
|
overflow-x: auto;
|
||||||
|
@@ -26,6 +26,10 @@ $semi-circle-border: 0.2rem;
|
|||||||
|
|
||||||
// scss-docs-end timeline
|
// scss-docs-end timeline
|
||||||
|
|
||||||
|
.timeline-container {
|
||||||
|
border-radius: #{$theme-border-radius};
|
||||||
|
}
|
||||||
|
|
||||||
.timeline, .timeline-sm {
|
.timeline, .timeline-sm {
|
||||||
position: relative;
|
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;
|
||||||
|
}
|
@@ -3,11 +3,11 @@
|
|||||||
//
|
//
|
||||||
// scss-docs-start toc
|
// scss-docs-start toc
|
||||||
.toc-sidebar {
|
.toc-sidebar {
|
||||||
grid-area: toc;
|
|
||||||
right: 0;
|
right: 0;
|
||||||
z-index: 2;
|
z-index: 2;
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
top: 5rem;
|
top: 5rem;
|
||||||
|
max-height: calc(100vh - var(--navbar-offset));
|
||||||
}
|
}
|
||||||
|
|
||||||
// scss-docs-end toc
|
// scss-docs-end toc
|
||||||
@@ -74,6 +74,14 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.btn-link.toc-item {
|
||||||
|
font-size: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
#btnTOCShowMore {
|
||||||
|
padding-top: 0.875rem;
|
||||||
|
}
|
||||||
|
|
||||||
a.toc-item {
|
a.toc-item {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
@@ -3,6 +3,7 @@
|
|||||||
padding-bottom: 56.25%;
|
padding-bottom: 56.25%;
|
||||||
height: 0;
|
height: 0;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
border-radius: #{$theme-border-radius};
|
||||||
}
|
}
|
||||||
|
|
||||||
.video-embedded > iframe {
|
.video-embedded > iframe {
|
||||||
@@ -11,7 +12,7 @@
|
|||||||
left: 0;
|
left: 0;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
border:0;
|
border: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Adapted from https://github.com/gohugoio/hugo/tpl/tplimpl/embedded/templates/shortcodes/vimeo_simple.html
|
// Adapted from https://github.com/gohugoio/hugo/tpl/tplimpl/embedded/templates/shortcodes/vimeo_simple.html
|
||||||
|
@@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
/* inter-200 - latin */
|
/* inter-200 - latin */
|
||||||
@font-face {
|
@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-family: 'Inter';
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-weight: 200;
|
font-weight: 200;
|
||||||
@@ -23,7 +23,7 @@
|
|||||||
}
|
}
|
||||||
/* inter-300 - latin */
|
/* inter-300 - latin */
|
||||||
@font-face {
|
@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-family: 'Inter';
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-weight: 300;
|
font-weight: 300;
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
}
|
}
|
||||||
/* inter-regular - latin */
|
/* inter-regular - latin */
|
||||||
@font-face {
|
@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-family: 'Inter';
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
@@ -49,7 +49,7 @@
|
|||||||
}
|
}
|
||||||
/* inter-600 - latin */
|
/* inter-600 - latin */
|
||||||
@font-face {
|
@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-family: 'Inter';
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
|
1
commitlint.config.js
Normal file
1
commitlint.config.js
Normal file
@@ -0,0 +1 @@
|
|||||||
|
module.exports = {extends: ['@commitlint/config-conventional']}
|
@@ -2,8 +2,10 @@
|
|||||||
@import "modules/bookshop/components/about/about";
|
@import "modules/bookshop/components/about/about";
|
||||||
@import "modules/bookshop/components/articles/articles";
|
@import "modules/bookshop/components/articles/articles";
|
||||||
@import "modules/bookshop/components/cards/cards";
|
@import "modules/bookshop/components/cards/cards";
|
||||||
|
@import "modules/bookshop/components/cta/cta";
|
||||||
@import "modules/bookshop/components/faq/faq";
|
@import "modules/bookshop/components/faq/faq";
|
||||||
@import "modules/bookshop/components/hero/hero";
|
@import "modules/bookshop/components/hero/hero";
|
||||||
|
@import "modules/bookshop/components/panels/panels";
|
||||||
@import "modules/bookshop/components/releases/releases";
|
@import "modules/bookshop/components/releases/releases";
|
||||||
@import "modules/bookshop/components/separator/separator";
|
@import "modules/bookshop/components/separator/separator";
|
||||||
@import "modules/bookshop/components/video-message/video-message";
|
@import "modules/bookshop/components/video-message/video-message";
|
||||||
|
@@ -19,9 +19,10 @@
|
|||||||
{{/* Main code */}}
|
{{/* Main code */}}
|
||||||
{{ if not $args.error }}
|
{{ if not $args.error }}
|
||||||
{{ partial "assets/hero.html" (dict
|
{{ partial "assets/hero.html" (dict
|
||||||
|
"page" page
|
||||||
"heading" $args.heading
|
"heading" $args.heading
|
||||||
"background" $args.background
|
"background" $args.background
|
||||||
"illustration" (merge (dict "ratio" "1x1") $args.illustration)
|
"illustration" (merge (dict "ratio" "auto") $args.illustration)
|
||||||
"order" $args.order
|
"order" $args.order
|
||||||
"link-type" $args.linkType
|
"link-type" $args.linkType
|
||||||
"links" $args.links
|
"links" $args.links
|
||||||
|
@@ -27,9 +27,11 @@ blueprint:
|
|||||||
more:
|
more:
|
||||||
title:
|
title:
|
||||||
link:
|
link:
|
||||||
|
icon-rounded:
|
||||||
|
icon-style:
|
||||||
cols:
|
cols:
|
||||||
padding:
|
padding:
|
||||||
max:
|
limit:
|
||||||
pagination:
|
pagination:
|
||||||
paginate:
|
paginate:
|
||||||
background:
|
background:
|
||||||
|
@@ -19,6 +19,10 @@
|
|||||||
{{ $error = $args.err }}
|
{{ $error = $args.err }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
|
{{/* Initialize global arguments */}}
|
||||||
|
{{- $padding := partial "utilities/GetPadding.html" -}}
|
||||||
|
|
||||||
|
{{/* Initialize local variables */}}
|
||||||
{{ $pages := slice }}
|
{{ $pages := slice }}
|
||||||
{{ $result := partial "assets/live-pages.html" (dict
|
{{ $result := partial "assets/live-pages.html" (dict
|
||||||
"page" $args.page
|
"page" $args.page
|
||||||
@@ -60,48 +64,58 @@
|
|||||||
{{ $paginate = false }}
|
{{ $paginate = false }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
<!-- Main code -->
|
{{/* Main code */}}
|
||||||
{{ if not $error }}
|
{{ if not $error }}
|
||||||
{{- partial "assets/section-title.html" (dict "heading" $args.heading) -}}
|
{{ if or (gt (len $pages) 0) (not $args.hideEmpty) }}
|
||||||
|
{{- partial "assets/section-title.html" (dict
|
||||||
|
"heading" $args.heading
|
||||||
|
"justify" $args.justify
|
||||||
|
"class" (printf "pb-%d" $padding.y))
|
||||||
|
-}}
|
||||||
|
|
||||||
{{ $partial := "assets/card-group.html" }}
|
{{ $partial := "assets/card-group.html" }}
|
||||||
{{ $params := dict }}
|
{{ $params := dict }}
|
||||||
{{- $params = merge $params (dict
|
{{- $params = merge $params (dict
|
||||||
"page" page
|
"page" page
|
||||||
"list" $pages
|
"list" $pages
|
||||||
"max" $args.max
|
"limit" $args.limit
|
||||||
"cols" $args.cols
|
"cols" $args.cols
|
||||||
"icon-rounded" $args.iconRounded
|
"icon-rounded" $args.iconRounded
|
||||||
"href" (cond $moreButton $moreLink "")
|
"icon-style" $args.iconStyle
|
||||||
"href-title" (cond $moreButton $moreTitle "")
|
"href" (cond $moreButton $moreLink "")
|
||||||
"href-force" (gt $result.total (len $result.pages))
|
"href-title" (cond $moreButton $moreTitle "")
|
||||||
)}}
|
"href-force" (gt $result.total (len $result.pages))
|
||||||
|
)}}
|
||||||
|
|
||||||
{{ if $args.scroll }}
|
{{ if $args.scroll }}
|
||||||
{{ $partial := "assets/stack.html" }}
|
{{ $partial = "assets/stack.html" }}
|
||||||
{{ $params = merge $params (dict
|
{{ $params = merge $params (dict
|
||||||
"header-style" "none"
|
"header-style" "none"
|
||||||
"body-style" "title"
|
"body-style" "title"
|
||||||
"footer-style" "none"
|
"footer-style" "none"
|
||||||
"gutter" 1
|
"gutter" 1
|
||||||
"padding" 3
|
"padding" 3
|
||||||
"ratio" "1x1"
|
"ratio" "1x1"
|
||||||
"orientation" "horizontal-sm"
|
"orientation" "horizontal-sm"
|
||||||
"styles" (cond $args.bento $styles "")
|
"styles" (cond $args.bento $styles "")
|
||||||
) -}}
|
) -}}
|
||||||
{{ else }}
|
{{ else }}
|
||||||
{{ $params = merge $params (dict
|
{{ $params = merge $params (dict
|
||||||
"header-style" $args.headerStyle
|
"header-style" $args.headerStyle
|
||||||
"footer-style" $args.footerStyle
|
"footer-style" $args.footerStyle
|
||||||
"padding" $args.padding
|
"padding" $args.padding
|
||||||
"class" (or $args.class "border-0")
|
"class" (or $args.class "border-0")
|
||||||
"icon-style" "fa-2x"
|
"align" "start"
|
||||||
"align" "start"
|
"orientation" $args.orientation
|
||||||
"orientation" $args.orientation
|
"hook" "assets/live-card.html"
|
||||||
"hook" "assets/live-card.html"
|
"pagination" $args.pagination
|
||||||
"pagination" $args.pagination
|
"paginate" $paginate
|
||||||
"paginate" $paginate
|
) -}}
|
||||||
) -}}
|
{{ end }}
|
||||||
|
{{ if gt (len $pages) 0 }}
|
||||||
|
{{ partial $partial $params }}
|
||||||
|
{{ else }}
|
||||||
|
<p class="pt-{{ $padding.y }}">{{- T "emptyList" }}.</p>
|
||||||
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ partial $partial $params }}
|
|
||||||
{{ end }}
|
{{ end }}
|
@@ -17,6 +17,7 @@ blueprint:
|
|||||||
width:
|
width:
|
||||||
cols:
|
cols:
|
||||||
icon-rounded:
|
icon-rounded:
|
||||||
|
icon-style:
|
||||||
padding:
|
padding:
|
||||||
background:
|
background:
|
||||||
backdrop:
|
backdrop:
|
||||||
@@ -32,3 +33,4 @@ blueprint:
|
|||||||
class:
|
class:
|
||||||
width:
|
width:
|
||||||
justify:
|
justify:
|
||||||
|
align:
|
||||||
|
@@ -21,6 +21,7 @@
|
|||||||
|
|
||||||
{{/* Initialize global arguments */}}
|
{{/* Initialize global arguments */}}
|
||||||
{{- $breakpoint := partial "utilities/GetBreakpoint.html" -}}
|
{{- $breakpoint := partial "utilities/GetBreakpoint.html" -}}
|
||||||
|
{{- $padding := partial "utilities/GetPadding.html" -}}
|
||||||
|
|
||||||
{{/* Initialize local variables */}}
|
{{/* Initialize local variables */}}
|
||||||
{{ $list := slice }}
|
{{ $list := slice }}
|
||||||
@@ -34,37 +35,46 @@
|
|||||||
) }}
|
) }}
|
||||||
{{ end}}
|
{{ end}}
|
||||||
|
|
||||||
|
{{/* Main code */}}
|
||||||
{{ if not $error }}
|
{{ if not $error }}
|
||||||
{{- partial "assets/section-title.html" (dict "heading" $args.heading) -}}
|
{{- partial "assets/section-title.html" (dict
|
||||||
|
"heading" $args.heading
|
||||||
|
"justify" $args.justify
|
||||||
|
"class" (printf "pb-%d" $padding.y))
|
||||||
|
-}}
|
||||||
|
|
||||||
|
{{/* Layout for small screens */}}
|
||||||
{{- partial "assets/card-group.html" (dict
|
{{- partial "assets/card-group.html" (dict
|
||||||
"page" page
|
"page" page
|
||||||
"list" $list
|
"list" $list
|
||||||
"class" (printf "border-0 card-icon-primary d-%s-none %s" $breakpoint.prev $args.class)
|
"class" (printf "border-0 card-icon-primary %s" (or $args.class ""))
|
||||||
|
"wrapper" (printf "d-%s-none" $breakpoint.prev)
|
||||||
"cols" $args.cols
|
"cols" $args.cols
|
||||||
"gutter" "4"
|
"gutter" "4"
|
||||||
"padding" $args.padding
|
"padding" $args.padding
|
||||||
"header-style" "none"
|
"header-style" "none"
|
||||||
"footer-style" "none"
|
"footer-style" "none"
|
||||||
"icon-rounded" $args.iconRounded
|
"icon-rounded" $args.iconRounded
|
||||||
"icon-style" "fa-2x"
|
"icon-style" (or $args.iconStyle "fa-2x")
|
||||||
"align" "start"
|
"align" $args.align
|
||||||
"orientation" ($args.orientation | default "horizontal-sm")
|
"orientation" ($args.orientation | default "horizontal-sm")
|
||||||
"hook" "assets/live-card.html"
|
"hook" "assets/live-card.html"
|
||||||
) -}}
|
) -}}
|
||||||
|
|
||||||
|
{{/* Layout for regular screens */}}
|
||||||
{{- partial "assets/card-group.html" (dict
|
{{- partial "assets/card-group.html" (dict
|
||||||
"page" page
|
"page" page
|
||||||
"list" $list
|
"list" $list
|
||||||
"class" (printf "border-0 card-icon-primary d-none d-%s-block %s" $breakpoint.prev $args.class)
|
"class" (printf "border-0 card-icon-primary %s" (or $args.class ""))
|
||||||
|
"wrapper" (printf "d-none d-%s-block" $breakpoint.prev)
|
||||||
"cols" $args.cols
|
"cols" $args.cols
|
||||||
"gutter" "4"
|
"gutter" "4"
|
||||||
"padding" $args.padding
|
"padding" $args.padding
|
||||||
"header-style" "none"
|
"header-style" "none"
|
||||||
"footer-style" "none"
|
"footer-style" "none"
|
||||||
"icon-rounded" $args.iconRounded
|
"icon-rounded" $args.iconRounded
|
||||||
"icon-style" "fa-2x"
|
"icon-style" (or $args.iconStyle "fa-2x")
|
||||||
"align" "start"
|
"align" $args.align
|
||||||
"orientation" ($args.orientation | default "stacked")
|
"orientation" ($args.orientation | default "stacked")
|
||||||
"hook" "assets/live-card.html"
|
"hook" "assets/live-card.html"
|
||||||
) -}}
|
) -}}
|
||||||
|
43
component-library/components/cta/cta.bookshop.yml
Normal file
43
component-library/components/cta/cta.bookshop.yml
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
# Metadata about this component, to be used in the CMS
|
||||||
|
spec:
|
||||||
|
structures:
|
||||||
|
- content_blocks
|
||||||
|
label: CTA
|
||||||
|
description: Call to action
|
||||||
|
icon: contact_page
|
||||||
|
tags: []
|
||||||
|
|
||||||
|
# Defines the structure of this component, as well as the default values
|
||||||
|
blueprint:
|
||||||
|
heading:
|
||||||
|
preheading:
|
||||||
|
title:
|
||||||
|
content:
|
||||||
|
align:
|
||||||
|
arrangement:
|
||||||
|
width:
|
||||||
|
size:
|
||||||
|
contact:
|
||||||
|
caption-url:
|
||||||
|
illustration:
|
||||||
|
image:
|
||||||
|
icon:
|
||||||
|
ratio:
|
||||||
|
class:
|
||||||
|
anchor:
|
||||||
|
mode:
|
||||||
|
background:
|
||||||
|
backdrop:
|
||||||
|
color:
|
||||||
|
subtle:
|
||||||
|
links:
|
||||||
|
-
|
||||||
|
title:
|
||||||
|
url:
|
||||||
|
icon:
|
||||||
|
force:
|
||||||
|
align:
|
||||||
|
fluid:
|
||||||
|
padding:
|
||||||
|
order:
|
||||||
|
width:
|
43
component-library/components/cta/cta.hugo.html
Normal file
43
component-library/components/cta/cta.hugo.html
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
{{/*
|
||||||
|
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.
|
||||||
|
*/}}
|
||||||
|
|
||||||
|
{{/* Initialize arguments */}}
|
||||||
|
{{ $args := partial "utilities/InitArgs.html" (dict "bookshop" "cta" "args" .) }}
|
||||||
|
{{ if or $args.err $args.warnmsg }}
|
||||||
|
{{ partial (cond $args.err "utilities/LogErr.html" "utilities/LogWarn.html") (dict
|
||||||
|
"partial" "component-library/components/cta/cta.hugo.html"
|
||||||
|
"warnid" "warn-invalid-arguments"
|
||||||
|
"msg" "Invalid arguments"
|
||||||
|
"details" ($args.errmsg | append $args.warnmsg)
|
||||||
|
"file" page.File
|
||||||
|
)}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/* Main code */}}
|
||||||
|
{{ if not $args.error }}
|
||||||
|
{{ $links := slice }}
|
||||||
|
{{ if and (reflect.IsSlice .links) (gt (len .links) 0) }}
|
||||||
|
{{ $links = .links }}
|
||||||
|
{{ else }}
|
||||||
|
{{ with site.Params.modules.bookshop.cta.defaultURL }}
|
||||||
|
{{ $links = $links | append (dict "title" (T "contactAction") "url" . "icon" "fas chevron-right") }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ partial "assets/contact.html" (dict
|
||||||
|
"page" page
|
||||||
|
"orientation" "horizontal"
|
||||||
|
"heading" $args.heading
|
||||||
|
"contact" $args.contact
|
||||||
|
"caption-url" $args.captionUrl
|
||||||
|
"illustration" $args.illustration
|
||||||
|
"class" "contact-img"
|
||||||
|
"links" $links
|
||||||
|
"align" $args.align
|
||||||
|
"order" $args.order
|
||||||
|
"data" site.Params.modules.bookshop.cta.section
|
||||||
|
) }}
|
||||||
|
{{ end }}
|
12
component-library/components/cta/cta.scss
Normal file
12
component-library/components/cta/cta.scss
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
.cta {
|
||||||
|
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);
|
||||||
|
}
|
@@ -16,15 +16,24 @@
|
|||||||
)}}
|
)}}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
|
{{/* Initialize global arguments */}}
|
||||||
|
{{- $padding := partial "utilities/GetPadding.html" -}}
|
||||||
|
|
||||||
|
{{/* Main code */}}
|
||||||
{{ if not $args.err }}
|
{{ if not $args.err }}
|
||||||
{{ $color := "" }}
|
{{ $color := "" }}
|
||||||
{{ if $args.contrast }}{{ $color = "white" }}{{ end }}
|
{{ if $args.contrast }}{{ $color = "white" }}{{ end }}
|
||||||
{{- partial "assets/section-title.html" (dict "heading" $args.heading "color" $color) -}}
|
{{- partial "assets/section-title.html" (dict
|
||||||
|
"heading" $args.heading
|
||||||
|
"justify" $args.justify
|
||||||
|
"class" (printf "pb-%d" $padding.y))
|
||||||
|
-}}
|
||||||
|
|
||||||
{{ $class := "" }}
|
{{ $class := "" }}
|
||||||
{{ $id := printf "faq-%s" (md5 (delimit (slice . now) "-")) }}
|
{{ $id := printf "faq-%s" (md5 (delimit (slice . now) "-")) }}
|
||||||
|
|
||||||
<div id="{{ $id }}" class="accordion accordion-faq {{ if $args.contrast }}accordion-faq-contrast text-white {{ end }}accordion-flush mb-3{{ with $class }} {{ . }}{{ end }} col-12 col-md-6 mx-auto">
|
<div id="{{ $id }}" class="accordion accordion-faq {{ if $args.contrast }}accordion-faq-contrast text-white {{ end -}}
|
||||||
|
accordion-flush{{ with $class }} {{ . }}{{ end }} col-12 col-md-6 mx-auto">
|
||||||
{{ range $index, $item := $args.items }}
|
{{ range $index, $item := $args.items }}
|
||||||
<div class="accordion-item">
|
<div class="accordion-item">
|
||||||
{{- with $item.title -}}
|
{{- with $item.title -}}
|
||||||
|
@@ -18,6 +18,7 @@
|
|||||||
|
|
||||||
{{ if not $args.err }}
|
{{ if not $args.err }}
|
||||||
{{ partial "assets/hero.html" (dict
|
{{ partial "assets/hero.html" (dict
|
||||||
|
"page" page
|
||||||
"breadcrumb" $args.breadcrumb
|
"breadcrumb" $args.breadcrumb
|
||||||
"heading" $args.heading
|
"heading" $args.heading
|
||||||
"background" $args.background
|
"background" $args.background
|
||||||
|
35
component-library/components/panels/panels.bookshop.yml
Normal file
35
component-library/components/panels/panels.bookshop.yml
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
# Metadata about this component, to be used in the CMS
|
||||||
|
spec:
|
||||||
|
structures:
|
||||||
|
- content_blocks
|
||||||
|
label: Panels
|
||||||
|
description: Introduction section
|
||||||
|
icon: check
|
||||||
|
tags: []
|
||||||
|
|
||||||
|
# Defines the structure of this component, as well as the default values
|
||||||
|
blueprint:
|
||||||
|
heading:
|
||||||
|
preheading:
|
||||||
|
heading:
|
||||||
|
content:
|
||||||
|
align:
|
||||||
|
width:
|
||||||
|
cols:
|
||||||
|
padding:
|
||||||
|
background:
|
||||||
|
backdrop:
|
||||||
|
color:
|
||||||
|
subtle:
|
||||||
|
elements:
|
||||||
|
- title:
|
||||||
|
icon:
|
||||||
|
image:
|
||||||
|
mode:
|
||||||
|
content:
|
||||||
|
tab-type:
|
||||||
|
ratio:
|
||||||
|
responsive:
|
||||||
|
class:
|
||||||
|
width:
|
||||||
|
justify:
|
87
component-library/components/panels/panels.hugo.html
Normal file
87
component-library/components/panels/panels.hugo.html
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
{{/*
|
||||||
|
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.
|
||||||
|
*/}}
|
||||||
|
|
||||||
|
{{ $error := false }}
|
||||||
|
|
||||||
|
{{/* Initialize arguments */}}
|
||||||
|
{{ $args := partial "utilities/InitArgs.html" (dict "bookshop" "panels" "args" .)}}
|
||||||
|
{{ if or $args.err $args.warnmsg }}
|
||||||
|
{{ partial (cond $args.err "utilities/LogErr.html" "utilities/LogWarn.html") (dict
|
||||||
|
"partial" "component-library/components/panels/panels.hugo.html"
|
||||||
|
"warnid" "warn-invalid-arguments"
|
||||||
|
"msg" "Invalid arguments"
|
||||||
|
"details" ($args.errmsg | append $args.warnmsg)
|
||||||
|
"file" page.File
|
||||||
|
)}}
|
||||||
|
{{ $error = $args.err }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{/* Initialize global arguments */}}
|
||||||
|
{{- $breakpoint := partial "utilities/GetBreakpoint.html" -}}
|
||||||
|
{{- $padding := partial "utilities/GetPadding.html" -}}
|
||||||
|
|
||||||
|
{{/* Initialize local variables */}}
|
||||||
|
{{ $list := slice }}
|
||||||
|
{{ $titles := slice }}
|
||||||
|
{{ $toc := slice }}
|
||||||
|
{{ $parentID := printf "panel-%v" (cond (isset . "_ordinal") (index . "_ordinal") (md5 (delimit (slice . now) "-"))) }}
|
||||||
|
{{ $inner := "" }}
|
||||||
|
{{ range $i, $element := $args.elements }}
|
||||||
|
{{ $toc = $toc | append (dict "href" "panel-0-1" "level" 2 "title" $element.title) }}
|
||||||
|
|
||||||
|
{{ $hero := partial "assets/hero.html" (dict
|
||||||
|
"page" page
|
||||||
|
"heading" (dict "title" $element.title "content" $element.content "width" 8 "size" 6)
|
||||||
|
"background" $args.background
|
||||||
|
"illustration" (dict "ratio" $args.ratio "icon" $element.icon "image" $element.image "mode" $element.mode)
|
||||||
|
"order" $args.order
|
||||||
|
"link-type" $args.linkType
|
||||||
|
"links" $args.links
|
||||||
|
"orientation" "horizontal"
|
||||||
|
"align" "start"
|
||||||
|
"width" 12
|
||||||
|
)
|
||||||
|
}}
|
||||||
|
|
||||||
|
{{- $output := partial "assets/nav-item.html" (dict
|
||||||
|
"page" page
|
||||||
|
"id" $i
|
||||||
|
"parent-id" $parentID
|
||||||
|
"fade" false
|
||||||
|
"title" $element.title
|
||||||
|
"show" (eq $i 0)
|
||||||
|
"raw" $hero
|
||||||
|
)
|
||||||
|
-}}
|
||||||
|
|
||||||
|
{{ $inner = printf "%s\n%s" $inner $output }}
|
||||||
|
{{ $titles = $titles | append $element.title }}
|
||||||
|
{{ end}}
|
||||||
|
|
||||||
|
{{/* Main code */}}
|
||||||
|
{{ if not $error }}
|
||||||
|
{{- partial "assets/section-title.html" (dict
|
||||||
|
"heading" $args.heading
|
||||||
|
"justify" $args.justify
|
||||||
|
"class" (printf "pb-%d" $padding.y))
|
||||||
|
-}}
|
||||||
|
|
||||||
|
{{- partial "assets/nav.html" (dict
|
||||||
|
"id" (or $args.id $parentID)
|
||||||
|
"page" page
|
||||||
|
"nav-items" $inner
|
||||||
|
"nav-titles" $titles
|
||||||
|
"tab-type" $args.tabType
|
||||||
|
"vertical" $args.vertical
|
||||||
|
"word-wrap" $args.wordWrap
|
||||||
|
"class" $args.class
|
||||||
|
"pane" $args.pane
|
||||||
|
"width" $args.width
|
||||||
|
"responsive" $args.responsive
|
||||||
|
)
|
||||||
|
-}}
|
||||||
|
{{ end }}
|
||||||
|
|
13
component-library/components/panels/panels.scss
Normal file
13
component-library/components/panels/panels.scss
Normal file
@@ -0,0 +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};
|
||||||
|
}
|
@@ -6,3 +6,5 @@ spec:
|
|||||||
description: Inserts a horizontal page section separator
|
description: Inserts a horizontal page section separator
|
||||||
icon: horizontal_rule
|
icon: horizontal_rule
|
||||||
tags: []
|
tags: []
|
||||||
|
|
||||||
|
blueprint:
|
||||||
|
@@ -4,7 +4,7 @@
|
|||||||
Visit gethinode.com/license for more details.
|
Visit gethinode.com/license for more details.
|
||||||
*/}}
|
*/}}
|
||||||
|
|
||||||
{{ $args := partial "utilities/InitArgs.html" (dict "structure" "separator" "args" .) }}
|
{{ $args := partial "utilities/InitArgs.html" (dict "bookshop" "separator" "args" .) }}
|
||||||
{{ if or $args.err $args.warnmsg }}
|
{{ if or $args.err $args.warnmsg }}
|
||||||
{{ partial (cond $args.err "utilities/LogErr.html" "utilities/LogWarn.html") (dict
|
{{ partial (cond $args.err "utilities/LogErr.html" "utilities/LogWarn.html") (dict
|
||||||
"partial" "component-library/components/separator/separator.hugo.html"
|
"partial" "component-library/components/separator/separator.hugo.html"
|
||||||
|
@@ -24,12 +24,14 @@ blueprint:
|
|||||||
link-type:
|
link-type:
|
||||||
orientation:
|
orientation:
|
||||||
icon-rounded:
|
icon-rounded:
|
||||||
|
icon-style:
|
||||||
video:
|
video:
|
||||||
provider:
|
provider:
|
||||||
account:
|
account:
|
||||||
media-id:
|
media-id:
|
||||||
autoplay:
|
autoplay:
|
||||||
query-args:
|
query-args:
|
||||||
|
color:
|
||||||
cols:
|
cols:
|
||||||
messages:
|
messages:
|
||||||
- title:
|
- title:
|
||||||
|
@@ -16,6 +16,7 @@
|
|||||||
)}}
|
)}}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
|
{{/* Initialize global variables */}}
|
||||||
{{- $breakpoint := partial "utilities/GetBreakpoint.html" -}}
|
{{- $breakpoint := partial "utilities/GetBreakpoint.html" -}}
|
||||||
{{- $padding := partial "utilities/GetPadding.html" -}}
|
{{- $padding := partial "utilities/GetPadding.html" -}}
|
||||||
|
|
||||||
@@ -27,6 +28,7 @@
|
|||||||
{{ $queryArgs := .queryArgs }}
|
{{ $queryArgs := .queryArgs }}
|
||||||
{{ $border := .border }}
|
{{ $border := .border }}
|
||||||
{{ $padding := .padding }}
|
{{ $padding := .padding }}
|
||||||
|
{{ $color := .color }}
|
||||||
|
|
||||||
{{ if site.Params.env_bookshop_live }}
|
{{ if site.Params.env_bookshop_live }}
|
||||||
{{/* Define dummy content as we cannot retrieve video data in live mode */}}
|
{{/* Define dummy content as we cannot retrieve video data in live mode */}}
|
||||||
@@ -35,7 +37,7 @@
|
|||||||
"ratio" "21x9"
|
"ratio" "21x9"
|
||||||
"wrapper" (printf "text-center mb-%d" $padding.y)) -}}
|
"wrapper" (printf "text-center mb-%d" $padding.y)) -}}
|
||||||
{{ else }}
|
{{ 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
|
{{ partial "assets/video.html" (dict
|
||||||
"page" page
|
"page" page
|
||||||
"provider" $provider
|
"provider" $provider
|
||||||
@@ -59,6 +61,7 @@
|
|||||||
{{ $cols := .cols }}
|
{{ $cols := .cols }}
|
||||||
{{ $type := .type }}
|
{{ $type := .type }}
|
||||||
{{ $iconRounded := .iconRounded }}
|
{{ $iconRounded := .iconRounded }}
|
||||||
|
{{ $iconStyle := .iconStyle }}
|
||||||
|
|
||||||
{{- partial "assets/card-group.html" (dict
|
{{- partial "assets/card-group.html" (dict
|
||||||
"page" page
|
"page" page
|
||||||
@@ -75,9 +78,11 @@
|
|||||||
"button" true
|
"button" true
|
||||||
"link-type" $type
|
"link-type" $type
|
||||||
"icon-rounded" $iconRounded
|
"icon-rounded" $iconRounded
|
||||||
|
"icon-style" $iconStyle
|
||||||
) -}}
|
) -}}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
|
{{/* Main code */}}
|
||||||
{{ if not $args.err }}
|
{{ if not $args.err }}
|
||||||
{{ $list := slice }}
|
{{ $list := slice }}
|
||||||
|
|
||||||
@@ -96,10 +101,14 @@
|
|||||||
) }}
|
) }}
|
||||||
{{ end}}
|
{{ end}}
|
||||||
|
|
||||||
{{- partial "assets/section-title.html" (dict "heading" $args.heading) -}}
|
{{- partial "assets/section-title.html" (dict
|
||||||
|
"heading" $args.heading
|
||||||
|
"justify" $args.justify
|
||||||
|
"class" (printf "pb-%d" $padding.y))
|
||||||
|
-}}
|
||||||
|
|
||||||
{{ if eq $args.orientation "stacked" }}
|
{{ if eq $args.orientation "stacked" }}
|
||||||
<div class="col-{{ $breakpoint.current }}-{{ $args.width }} mx-auto pb-{{ $padding.y }}">
|
<div class="col-{{ $breakpoint.current }}-{{ $args.width }} mx-auto">
|
||||||
{{ with $args.video }}
|
{{ with $args.video }}
|
||||||
{{- partial "inline/video.html" (dict
|
{{- partial "inline/video.html" (dict
|
||||||
"provider" .provider
|
"provider" .provider
|
||||||
@@ -109,14 +118,21 @@
|
|||||||
"query-args" .queryArgs
|
"query-args" .queryArgs
|
||||||
"border" $.border
|
"border" $.border
|
||||||
"padding" $padding
|
"padding" $padding
|
||||||
|
"color" .color
|
||||||
) -}}
|
) -}}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
<div class="mt-{{ $padding.y }} pb-{{ $padding.y }}">
|
<div class="mt-{{ $padding.y }} w-100">
|
||||||
{{- partial "inline/messages.html" (dict "list" $list "cols" $args.cols "type" $args.type "iconRounded" $args.iconRounded) -}}
|
{{- partial "inline/messages.html" (dict
|
||||||
|
"list" $list
|
||||||
|
"cols" $args.cols
|
||||||
|
"type" $args.type
|
||||||
|
"iconRounded" $args.iconRounded
|
||||||
|
"iconStyle" $args.iconStyle
|
||||||
|
) -}}
|
||||||
</div>
|
</div>
|
||||||
{{ else }}
|
{{ else }}
|
||||||
<div class="container grid gap-4 pb-{{ $padding.y }}">
|
<div class="container grid gap-{{ $padding.x }}">
|
||||||
<div class="row row-cols-1 row-cols-{{ $breakpoint.current }}-2">
|
<div class="row row-cols-1 row-cols-{{ $breakpoint.current }}-2">
|
||||||
<div class="col col-{{ $breakpoint.current }}-{{ $args.width }} p-0">
|
<div class="col col-{{ $breakpoint.current }}-{{ $args.width }} p-0">
|
||||||
{{ with $args.video }}
|
{{ with $args.video }}
|
||||||
@@ -128,11 +144,18 @@
|
|||||||
"query-args" .queryArgs
|
"query-args" .queryArgs
|
||||||
"border" $.border
|
"border" $.border
|
||||||
"padding" $padding
|
"padding" $padding
|
||||||
|
"color" .color
|
||||||
) -}}
|
) -}}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
<div class="col col-{{ $breakpoint.current }}-{{ sub 12 $args.width }} mt-{{ $padding.y }} mt-{{ $breakpoint.current }}-0">
|
<div class="col col-{{ $breakpoint.current }}-{{ sub 12 $args.width }} mt-{{ $padding.y }} mt-{{ $breakpoint.current }}-0">
|
||||||
{{- partial "inline/messages.html" (dict "list" $list "cols" 1 "type" $args.type "iconRounded" $args.iconRounded) -}}
|
{{- partial "inline/messages.html" (dict
|
||||||
|
"list" $list
|
||||||
|
"cols" 1
|
||||||
|
"type" $args.type
|
||||||
|
"iconRounded" $args.iconRounded
|
||||||
|
"iconStyle" $args.iconStyle
|
||||||
|
) -}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -2,6 +2,7 @@
|
|||||||
--bs-video-border-color: var(--bs-primary);
|
--bs-video-border-color: var(--bs-primary);
|
||||||
--bs-video-border-width: 1rem;
|
--bs-video-border-width: 1rem;
|
||||||
|
|
||||||
|
border-radius: $theme-border-radius;
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -16,6 +16,7 @@
|
|||||||
{{- $class := index . 2 | default "p-0" -}}
|
{{- $class := index . 2 | default "p-0" -}}
|
||||||
{{- $bgclass := index . 3 | default "" -}}
|
{{- $bgclass := index . 3 | default "" -}}
|
||||||
{{- $padding := partial "utilities/GetPadding.html" -}}
|
{{- $padding := partial "utilities/GetPadding.html" -}}
|
||||||
|
{{- with index $component_props "padding" }}{{ $padding = dict "x" . "y" . }}{{ end -}}
|
||||||
{{- $component_path := partial "_bookshop/helpers/component_key" $component_name -}}
|
{{- $component_path := partial "_bookshop/helpers/component_key" $component_name -}}
|
||||||
{{- $flat_component_path := partial "_bookshop/helpers/flat_component_key" $component_name -}}
|
{{- $flat_component_path := partial "_bookshop/helpers/flat_component_key" $component_name -}}
|
||||||
|
|
||||||
@@ -31,10 +32,12 @@
|
|||||||
{{- $cover := index $component_props "cover" -}}
|
{{- $cover := index $component_props "cover" -}}
|
||||||
{{- $background := index $component_props "background" -}}
|
{{- $background := index $component_props "background" -}}
|
||||||
{{- $backdrop := "" -}}
|
{{- $backdrop := "" -}}
|
||||||
|
{{- $fluid := index $component_props "fluid" | default true -}}
|
||||||
{{- $style := index $component_props "wrapper" -}}
|
{{- $style := index $component_props "wrapper" -}}
|
||||||
{{- $width := index $component_props "width" -}}
|
{{- $width := index $component_props "width" -}}
|
||||||
{{- $justify := index $component_props "justify" | default "start" -}}
|
{{- $justify := index $component_props "justify" | default "start" -}}
|
||||||
{{- $padding := cond (ne $component_name "separator") (printf "px-%d px-xxl-0 py-%d" $padding.x $padding.y) "" -}}
|
{{- $paddingOuter := cond (ne $component_name "separator") (printf "px-xxl-0 px-%d py-0" $padding.x) "" -}}
|
||||||
|
{{- $padding := cond (ne $component_name "separator") (printf "px-%d %spy-%d" $padding.x (cond $fluid "px-xxl-0 " "") $padding.y) "" -}}
|
||||||
{{- $wrapper := $style }}
|
{{- $wrapper := $style }}
|
||||||
{{ with $background }}
|
{{ with $background }}
|
||||||
{{ $wrapper = partial "utilities/GetBackgroundStyle.html" (dict "background" . "class" $style) }}
|
{{ $wrapper = partial "utilities/GetBackgroundStyle.html" (dict "background" . "class" $style) }}
|
||||||
@@ -42,14 +45,16 @@
|
|||||||
{{ with $background.backdrop }}{{ $wrapper = "" }}{{ $backdrop = . }}{{ end }}
|
{{ with $background.backdrop }}{{ $wrapper = "" }}{{ $backdrop = . }}{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{/* warnf "wrapper: '%s'" $wrapper */}}
|
|
||||||
{{- $theme := index $component_props "theme" -}}
|
{{- $theme := index $component_props "theme" -}}
|
||||||
{{- $overlayMode := (or (index $component_props "overlay-mode") page.Params.overlayMode) | default "dark" -}}
|
{{- $overlayMode := (or (index $component_props "overlay-mode") page.Params.overlayMode) | default "dark" -}}
|
||||||
{{ if not $backdrop }}{{ $overlayMode = page.Params.overlayMode }}{{ end }}
|
{{ if not $backdrop }}{{ $overlayMode = page.Params.overlayMode }}{{ end }}
|
||||||
{{ if eq $overlayMode "none" }}{{ $overlayMode = "" }}{{ end }}
|
{{ if eq $overlayMode "none" }}{{ $overlayMode = "" }}{{ end }}
|
||||||
|
|
||||||
{{ (printf "<!--bookshop-live name(%s)-->" $component_name) | safeHTML }}
|
{{ (printf "<!--bookshop-live name(%s)-->" $component_name) | safeHTML }}
|
||||||
<section {{ with $id }}id="{{ . }}" {{ end }}class="{{ $component_name }} container-fluid {{ $class }} {{ with $wrapper }}{{ . }}{{ end -}}
|
{{ if not $fluid }}<div class="container-xxl {{ $paddingOuter }}">{{ end }}
|
||||||
|
<section {{ with $id }}id="{{ . }}" {{ end }}class="{{ $component_name }}
|
||||||
|
container-fluid {{ $class }}
|
||||||
|
{{ with $wrapper }}{{ . }}{{ end -}}
|
||||||
{{- if and $backdrop $overlayMode }} background-container{{ end -}}
|
{{- if and $backdrop $overlayMode }} background-container{{ end -}}
|
||||||
{{- if $cover }} section-cover d-flex align-items-center{{ end }}"
|
{{- if $cover }} section-cover d-flex align-items-center{{ end }}"
|
||||||
{{ with $overlayMode -}}
|
{{ with $overlayMode -}}
|
||||||
@@ -60,12 +65,16 @@
|
|||||||
{{- end -}}
|
{{- end -}}
|
||||||
>
|
>
|
||||||
{{- if $backdrop -}}
|
{{- if $backdrop -}}
|
||||||
{{ partial "assets/live-image.html" (dict "src" $backdrop "class" (printf "background-img-fluid %s" $bgclass) "title" (T "backgroundImage")) }}
|
{{ partial "assets/live-image.html" (dict
|
||||||
|
"src" $backdrop
|
||||||
|
"class" (printf "background-img-fluid %s" $bgclass)
|
||||||
|
"title" (T "backgroundImage"))
|
||||||
|
}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
{{ $col := cond (and $width (lt $width 12)) (printf "col-12 col-md-%d" $width) "" }}
|
{{ $col := cond (and $width (lt $width 12)) (printf "col-12 col-md-%d" $width) "" }}
|
||||||
|
|
||||||
<div class="container-xxl {{ $padding }} d-flex flex-column align-items-{{ $justify }}">
|
<div class="container-{{ cond $fluid "xxl" "fluid" }} {{ $padding }} d-flex flex-column align-items-{{ $justify }}">
|
||||||
{{ with $col }}
|
{{ with $col }}
|
||||||
<div class="{{ . }}">{{ partial $resolved_component $component_props }}</div>
|
<div class="{{ . }}">{{ partial $resolved_component $component_props }}</div>
|
||||||
{{ else }}
|
{{ else }}
|
||||||
@@ -73,6 +82,7 @@
|
|||||||
{{ end}}
|
{{ end}}
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
{{ if not $fluid }}</div>{{ end }}
|
||||||
{{ "<!--bookshop-live end-->" | safeHTML }}
|
{{ "<!--bookshop-live end-->" | safeHTML }}
|
||||||
{{- else -}}
|
{{- else -}}
|
||||||
{{- $file_loc := slicestr $component_path 9 -}}
|
{{- $file_loc := slicestr $component_path 9 -}}
|
||||||
|
@@ -116,7 +116,7 @@ home = ["HTML", "RSS", "REDIR", "netlify", "server"]
|
|||||||
[module]
|
[module]
|
||||||
[module.hugoVersion]
|
[module.hugoVersion]
|
||||||
extended = true
|
extended = true
|
||||||
min = "0.141.0"
|
min = "0.146.0"
|
||||||
[[module.mounts]]
|
[[module.mounts]]
|
||||||
source = "archetypes"
|
source = "archetypes"
|
||||||
target = "archetypes"
|
target = "archetypes"
|
||||||
@@ -176,7 +176,7 @@ home = ["HTML", "RSS", "REDIR", "netlify", "server"]
|
|||||||
[[module.imports]]
|
[[module.imports]]
|
||||||
path = "github.com/gethinode/mod-csp"
|
path = "github.com/gethinode/mod-csp"
|
||||||
[[module.imports]]
|
[[module.imports]]
|
||||||
path = "github.com/gethinode/mod-flexsearch/v2"
|
path = "github.com/gethinode/mod-flexsearch/v3"
|
||||||
[[module.imports]]
|
[[module.imports]]
|
||||||
path = "github.com/gethinode/mod-fontawesome/v2"
|
path = "github.com/gethinode/mod-fontawesome/v2"
|
||||||
[[module.imports]]
|
[[module.imports]]
|
||||||
@@ -188,11 +188,11 @@ home = ["HTML", "RSS", "REDIR", "netlify", "server"]
|
|||||||
[[module.imports]]
|
[[module.imports]]
|
||||||
path = "github.com/gethinode/mod-lottie"
|
path = "github.com/gethinode/mod-lottie"
|
||||||
[[module.imports]]
|
[[module.imports]]
|
||||||
path = "github.com/gethinode/mod-mermaid"
|
path = "github.com/gethinode/mod-mermaid/v3"
|
||||||
[[module.imports]]
|
[[module.imports]]
|
||||||
path = "github.com/gethinode/mod-simple-datatables"
|
path = "github.com/gethinode/mod-simple-datatables/v2"
|
||||||
[[module.imports]]
|
[[module.imports]]
|
||||||
path = "github.com/gethinode/mod-utils/v3"
|
path = "github.com/gethinode/mod-utils/v4"
|
||||||
# toml-docs-end modules
|
# toml-docs-end modules
|
||||||
|
|
||||||
# toml-docs-start segments
|
# toml-docs-start segments
|
||||||
|
@@ -2,18 +2,16 @@
|
|||||||
[main]
|
[main]
|
||||||
separator = "-"
|
separator = "-"
|
||||||
description = "Hinode is a clean documentation and blog theme for your Hugo site based on Bootstrap 5."
|
description = "Hinode is a clean documentation and blog theme for your Hugo site based on Bootstrap 5."
|
||||||
enableDarkMode = true
|
|
||||||
enableLanguageSelectionStorage = false
|
enableLanguageSelectionStorage = false
|
||||||
modes = ["light", "dark"]
|
|
||||||
canonifyAssetsURLs = false
|
canonifyAssetsURLs = false
|
||||||
endorse = true
|
endorse = true
|
||||||
footerBelowFold = false
|
footerBelowFold = false
|
||||||
loading = "lazy"
|
loading = "lazy"
|
||||||
breakpoint = "md"
|
breakpoint = "md"
|
||||||
|
titleCase = false
|
||||||
[main.padding]
|
[main.padding]
|
||||||
x = 4
|
x = 4
|
||||||
y = 4
|
y = 4
|
||||||
titleCase = false
|
|
||||||
[main.internalLinks]
|
[main.internalLinks]
|
||||||
validate = true
|
validate = true
|
||||||
pretty = false
|
pretty = false
|
||||||
@@ -22,6 +20,12 @@
|
|||||||
tab = false
|
tab = false
|
||||||
[main.build]
|
[main.build]
|
||||||
transpiler = "libsass"
|
transpiler = "libsass"
|
||||||
|
[main.colorMode]
|
||||||
|
enabled = true
|
||||||
|
modes = ["light", "dark"]
|
||||||
|
toggle = false
|
||||||
|
iconLight = "fas sun"
|
||||||
|
iconDark = "fas moon"
|
||||||
# toml-docs-end main
|
# toml-docs-end main
|
||||||
|
|
||||||
# toml-docs-start images
|
# toml-docs-start images
|
||||||
@@ -84,18 +88,29 @@
|
|||||||
[navigation]
|
[navigation]
|
||||||
anchor = true
|
anchor = true
|
||||||
logo = "/img/logo_icon.svg"
|
logo = "/img/logo_icon.svg"
|
||||||
|
logo-height = 30
|
||||||
color = "body"
|
color = "body"
|
||||||
fixed = true
|
fixed = true
|
||||||
overlay = false
|
overlay = false
|
||||||
overlayMode = "dark"
|
overlayMode = "dark"
|
||||||
horizontal = false
|
horizontal = false
|
||||||
offset = "5.5rem"
|
offset = "5.5rem"
|
||||||
search = true
|
|
||||||
searchModal = false
|
|
||||||
breadcrumb = true
|
breadcrumb = true
|
||||||
toc = true
|
toc = true
|
||||||
sidebar = true
|
sidebar = true
|
||||||
size = "md"
|
size = "md"
|
||||||
|
startLevel = 2
|
||||||
|
endLevel = 3
|
||||||
|
maxNumHeadings = 9
|
||||||
|
[navigation.padding]
|
||||||
|
x = 4
|
||||||
|
y = 4
|
||||||
|
[navigation.language]
|
||||||
|
icon = "fas globe"
|
||||||
|
[navigation.search]
|
||||||
|
enabled = true
|
||||||
|
modal = true
|
||||||
|
icon = "fas magnifying-glass"
|
||||||
# toml-docs-end navigation
|
# toml-docs-end navigation
|
||||||
|
|
||||||
# toml-docs-start messages
|
# toml-docs-start messages
|
||||||
|
@@ -27,10 +27,11 @@ const purgecss = purgeCSSPlugin({
|
|||||||
'./assets/scss/theme/fonts.scss',
|
'./assets/scss/theme/fonts.scss',
|
||||||
'./assets/scss/theme/theme.scss',
|
'./assets/scss/theme/theme.scss',
|
||||||
'./_vendor/github.com/gethinode/mod-cookieyes/v2/assets/scss/cookieyes.scss',
|
'./_vendor/github.com/gethinode/mod-cookieyes/v2/assets/scss/cookieyes.scss',
|
||||||
'./_vendor/github.com/gethinode/mod-flexsearch/v2/assets/scss/modules/flexsearch/flexsearch.scss',
|
'./_vendor/github.com/gethinode/mod-flexsearch/v3/assets/scss/modules/flexsearch/flexsearch.scss',
|
||||||
'./_vendor/github.com/gethinode/mod-katex/dist/katex.scss',
|
'./_vendor/github.com/gethinode/mod-katex/dist/katex.scss',
|
||||||
'./_vendor/github.com/gethinode/mod-leaflet/dist/leaflet.scss',
|
'./_vendor/github.com/gethinode/mod-leaflet/dist/leaflet.scss',
|
||||||
'./_vendor/github.com/gethinode/mod-simple-datatables/dist/simple-datatables.scss',
|
'./_vendor/github.com/gethinode/mod-mermaid/v3/assets/scss/mermaid.scss',
|
||||||
|
'./_vendor/github.com/gethinode/mod-simple-datatables/v2/dist/simple-datatables.scss',
|
||||||
'./_vendor/github.com/twbs/bootstrap/scss/_carousel.scss',
|
'./_vendor/github.com/twbs/bootstrap/scss/_carousel.scss',
|
||||||
'./_vendor/github.com/twbs/bootstrap/scss/_dropdown.scss',
|
'./_vendor/github.com/twbs/bootstrap/scss/_dropdown.scss',
|
||||||
'./_vendor/github.com/twbs/bootstrap/scss/_modal.scss',
|
'./_vendor/github.com/twbs/bootstrap/scss/_modal.scss',
|
||||||
|
@@ -7,18 +7,18 @@ content_blocks:
|
|||||||
title: Welcome to Hinode!
|
title: Welcome to Hinode!
|
||||||
content: |-
|
content: |-
|
||||||
A clean documentation and blog theme for your Hugo site based on Bootstrap 5.
|
A clean documentation and blog theme for your Hugo site based on Bootstrap 5.
|
||||||
align: start
|
width: 6
|
||||||
background:
|
background:
|
||||||
color: primary
|
color: primary
|
||||||
subtle: true
|
subtle: true
|
||||||
illustration:
|
illustration:
|
||||||
image: /img/sunrise.jpg
|
image: /img/sunrise.jpg
|
||||||
ratio: 16x9
|
ratio: 16x9
|
||||||
width: 8
|
width: 8
|
||||||
width: 6
|
|
||||||
links:
|
links:
|
||||||
- title: Get started
|
- title: Getting started
|
||||||
url: https://gethinode.com/docs
|
url: https://gethinode.com/docs
|
||||||
icon: fas book-open
|
icon: fas chevron-right
|
||||||
orientation: horizontal
|
orientation: horizontal
|
||||||
|
justify: center
|
||||||
---
|
---
|
||||||
|
8
content/_modals/_index.md
Normal file
8
content/_modals/_index.md
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
title: Modal elements
|
||||||
|
cascade:
|
||||||
|
- build:
|
||||||
|
list: local
|
||||||
|
publishResources: false
|
||||||
|
render: never
|
||||||
|
---
|
@@ -4,12 +4,12 @@
|
|||||||
command = "npm run build:example"
|
command = "npm run build:example"
|
||||||
|
|
||||||
[build.environment]
|
[build.environment]
|
||||||
DART_SASS_VERSION = "1.83.1"
|
DART_SASS_VERSION = "1.89.2"
|
||||||
HUGO_VERSION = "0.140.2"
|
HUGO_VERSION = "0.147.9"
|
||||||
HUGO_ENV = "production"
|
HUGO_ENV = "production"
|
||||||
HUGO_ENABLEGITINFO = "true"
|
HUGO_ENABLEGITINFO = "true"
|
||||||
NODE_VERSION = "22.12.0"
|
NODE_VERSION = "22.13.0"
|
||||||
NPM_VERSION = "10.9.0"
|
NPM_VERSION = "10.9.2"
|
||||||
# toml-docs-end netlify
|
# toml-docs-end netlify
|
||||||
|
|
||||||
[context.deploy-preview]
|
[context.deploy-preview]
|
||||||
|
File diff suppressed because it is too large
Load Diff
@@ -1,65 +0,0 @@
|
|||||||
types:
|
|
||||||
background:
|
|
||||||
backdrop:
|
|
||||||
color:
|
|
||||||
subtle:
|
|
||||||
heading:
|
|
||||||
preheading:
|
|
||||||
title:
|
|
||||||
content:
|
|
||||||
align:
|
|
||||||
arrangement:
|
|
||||||
width:
|
|
||||||
size:
|
|
||||||
illustration:
|
|
||||||
image:
|
|
||||||
icon:
|
|
||||||
ratio:
|
|
||||||
class:
|
|
||||||
anchor:
|
|
||||||
mode:
|
|
||||||
width:
|
|
||||||
image-overlay:
|
|
||||||
hook:
|
|
||||||
input:
|
|
||||||
section:
|
|
||||||
nested:
|
|
||||||
keywords:
|
|
||||||
categories:
|
|
||||||
tags:
|
|
||||||
reverse:
|
|
||||||
sort:
|
|
||||||
items:
|
|
||||||
- title:
|
|
||||||
description:
|
|
||||||
elements:
|
|
||||||
- title:
|
|
||||||
icon:
|
|
||||||
image:
|
|
||||||
mode:
|
|
||||||
content:
|
|
||||||
links:
|
|
||||||
- title:
|
|
||||||
url:
|
|
||||||
icon:
|
|
||||||
force:
|
|
||||||
messages:
|
|
||||||
- title:
|
|
||||||
icon:
|
|
||||||
content:
|
|
||||||
link:
|
|
||||||
label:
|
|
||||||
more:
|
|
||||||
title:
|
|
||||||
link:
|
|
||||||
styles:
|
|
||||||
- ratio:
|
|
||||||
orientation:
|
|
||||||
portrait:
|
|
||||||
width:
|
|
||||||
video:
|
|
||||||
provider:
|
|
||||||
account:
|
|
||||||
id:
|
|
||||||
autoplay:
|
|
||||||
query-args:
|
|
@@ -12,6 +12,7 @@ arguments:
|
|||||||
class:
|
class:
|
||||||
color:
|
color:
|
||||||
padding:
|
padding:
|
||||||
|
default: 3
|
||||||
gutter:
|
gutter:
|
||||||
release: v0.19.0
|
release: v0.19.0
|
||||||
header-style:
|
header-style:
|
||||||
@@ -22,7 +23,8 @@ arguments:
|
|||||||
release: 1.0.0
|
release: 1.0.0
|
||||||
list:
|
list:
|
||||||
cards:
|
cards:
|
||||||
max:
|
limit:
|
||||||
|
release: v1.0.0
|
||||||
cols:
|
cols:
|
||||||
release: v0.19.0
|
release: v0.19.0
|
||||||
paginate:
|
paginate:
|
||||||
@@ -42,6 +44,7 @@ arguments:
|
|||||||
icon-rounded:
|
icon-rounded:
|
||||||
release: v1.0.0
|
release: v1.0.0
|
||||||
align:
|
align:
|
||||||
|
default: start
|
||||||
wrapper:
|
wrapper:
|
||||||
default: p-0
|
default: p-0
|
||||||
responsive:
|
responsive:
|
||||||
@@ -158,3 +161,12 @@ arguments:
|
|||||||
group: partial
|
group: partial
|
||||||
deprecated: v1.0.0
|
deprecated: v1.0.0
|
||||||
alternative: href-title
|
alternative: href-title
|
||||||
|
max:
|
||||||
|
type: int
|
||||||
|
optional: true
|
||||||
|
comment: Maximum number of elements to display.
|
||||||
|
group: partial
|
||||||
|
options:
|
||||||
|
min: 1
|
||||||
|
deprecated: v1.0.0
|
||||||
|
alternative: limit
|
||||||
|
@@ -15,6 +15,7 @@ arguments:
|
|||||||
parent: cascade
|
parent: cascade
|
||||||
padding:
|
padding:
|
||||||
parent: cascade
|
parent: cascade
|
||||||
|
default: 3
|
||||||
gutter:
|
gutter:
|
||||||
default: 0
|
default: 0
|
||||||
parent: cascade
|
parent: cascade
|
||||||
@@ -45,6 +46,7 @@ arguments:
|
|||||||
icon-rounded:
|
icon-rounded:
|
||||||
release: v1.0.0
|
release: v1.0.0
|
||||||
align:
|
align:
|
||||||
|
default: start
|
||||||
parent: cascade
|
parent: cascade
|
||||||
release: v0.23.0
|
release: v0.23.0
|
||||||
scroll:
|
scroll:
|
||||||
|
36
data/structures/contact.yml
Normal file
36
data/structures/contact.yml
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
comment: >-
|
||||||
|
Displays a contact banner, typically placed at the bottom or right-hand side of the page.
|
||||||
|
arguments:
|
||||||
|
page:
|
||||||
|
data:
|
||||||
|
heading:
|
||||||
|
contact:
|
||||||
|
type: string
|
||||||
|
optional: false
|
||||||
|
comment: >-
|
||||||
|
The full name of the contact to retrieve.
|
||||||
|
caption-url:
|
||||||
|
type:
|
||||||
|
- string
|
||||||
|
- template.URL
|
||||||
|
optional: true
|
||||||
|
comment: >-
|
||||||
|
Address of the contact's page, either a local reference or an external
|
||||||
|
address. Include the `scheme` when referencing an external address, such
|
||||||
|
as `https://google.com`. Local references may include an optional anchor
|
||||||
|
link such as `blog/bootstrap-elements/#docs`.
|
||||||
|
illustration:
|
||||||
|
background:
|
||||||
|
link-type:
|
||||||
|
links:
|
||||||
|
align:
|
||||||
|
order:
|
||||||
|
default: first
|
||||||
|
orientation:
|
||||||
|
width:
|
||||||
|
justify:
|
||||||
|
class:
|
||||||
|
width:
|
||||||
|
default: 12
|
||||||
|
hook:
|
||||||
|
default: assets/hero-image.html
|
@@ -11,8 +11,8 @@ arguments:
|
|||||||
full:
|
full:
|
||||||
id:
|
id:
|
||||||
class:
|
class:
|
||||||
options:
|
highlight-options:
|
||||||
release: v0.27.6
|
release: v1.0.0
|
||||||
# deprecated arguments
|
# deprecated arguments
|
||||||
path:
|
path:
|
||||||
type: string
|
type: string
|
||||||
@@ -22,3 +22,11 @@ arguments:
|
|||||||
the path of the repository is used as base path instead.
|
the path of the repository is used as base path instead.
|
||||||
deprecated: v1.0.0
|
deprecated: v1.0.0
|
||||||
alternative: file
|
alternative: file
|
||||||
|
options:
|
||||||
|
type: string
|
||||||
|
optional: true
|
||||||
|
comment: >-
|
||||||
|
Hugo highlighting options, see https://gohugo.io/shortcodes/highlight/#options-1.
|
||||||
|
release: v0.27.6
|
||||||
|
deprecated: v1.0.0
|
||||||
|
alternative: highlight-options
|
||||||
|
@@ -2,3 +2,17 @@ comment: >-
|
|||||||
Initializes images dimensions (widht x height for supported image ratios.
|
Initializes images dimensions (widht x height for supported image ratios.
|
||||||
arguments:
|
arguments:
|
||||||
ratio:
|
ratio:
|
||||||
|
type: select
|
||||||
|
optional: true
|
||||||
|
comment: >-
|
||||||
|
Ratio of the media asset. When the asset is an image, it is resized and
|
||||||
|
cropped (not applicable to vector graphics). For video assets, the padding
|
||||||
|
of the embedded frame is adjusted.
|
||||||
|
options:
|
||||||
|
values:
|
||||||
|
- 1x1
|
||||||
|
- 3x2
|
||||||
|
- 4x3
|
||||||
|
- 16x9
|
||||||
|
- 21x9
|
||||||
|
- auto
|
||||||
|
@@ -3,6 +3,7 @@ comment: >-
|
|||||||
supports a heading, featured illustration, and navigation links. You can
|
supports a heading, featured illustration, and navigation links. You can
|
||||||
can also add a background image with an overlay to improve contrast.
|
can also add a background image with an overlay to improve contrast.
|
||||||
arguments:
|
arguments:
|
||||||
|
page:
|
||||||
breadcrumb:
|
breadcrumb:
|
||||||
heading:
|
heading:
|
||||||
background:
|
background:
|
||||||
@@ -18,6 +19,7 @@ arguments:
|
|||||||
justify:
|
justify:
|
||||||
use-section:
|
use-section:
|
||||||
use-title:
|
use-title:
|
||||||
|
size:
|
||||||
class:
|
class:
|
||||||
padding:
|
padding:
|
||||||
default: px-4 px-xxl-0 py-4
|
default: px-4 px-xxl-0 py-4
|
||||||
|
@@ -4,6 +4,8 @@ arguments:
|
|||||||
mode:
|
mode:
|
||||||
ratio:
|
ratio:
|
||||||
portrait:
|
portrait:
|
||||||
|
image-height:
|
||||||
|
image-width:
|
||||||
loading:
|
loading:
|
||||||
priority:
|
priority:
|
||||||
sizes:
|
sizes:
|
||||||
|
@@ -44,6 +44,10 @@ arguments:
|
|||||||
release: v0.24.0
|
release: v0.24.0
|
||||||
anchor:
|
anchor:
|
||||||
release: v0.24.22
|
release: v0.24.22
|
||||||
|
image-height:
|
||||||
|
release: v1.0.0
|
||||||
|
image-width:
|
||||||
|
release: v1.0.0
|
||||||
# deprecated arguments
|
# deprecated arguments
|
||||||
url:
|
url:
|
||||||
type:
|
type:
|
||||||
|
@@ -15,6 +15,9 @@ arguments:
|
|||||||
class:
|
class:
|
||||||
body:
|
body:
|
||||||
group: partial
|
group: partial
|
||||||
|
raw:
|
||||||
|
group: partial
|
||||||
|
release: v1.3.0
|
||||||
navitem-type:
|
navitem-type:
|
||||||
release: v1.0.0
|
release: v1.0.0
|
||||||
illustration:
|
illustration:
|
||||||
|
@@ -7,8 +7,12 @@ arguments:
|
|||||||
group: partial
|
group: partial
|
||||||
list:
|
list:
|
||||||
group: partial
|
group: partial
|
||||||
|
nav-disabled:
|
||||||
|
release: v1.0.0
|
||||||
nav-items:
|
nav-items:
|
||||||
release: v1.0.0
|
release: v1.0.0
|
||||||
|
nav-show:
|
||||||
|
release: v1.0.0
|
||||||
nav-titles:
|
nav-titles:
|
||||||
release: v1.0.0
|
release: v1.0.0
|
||||||
tab-type:
|
tab-type:
|
||||||
@@ -18,6 +22,8 @@ arguments:
|
|||||||
release: v1.0.0
|
release: v1.0.0
|
||||||
class:
|
class:
|
||||||
pane:
|
pane:
|
||||||
|
responsive:
|
||||||
|
release: v1.4.0
|
||||||
width:
|
width:
|
||||||
default: 12
|
default: 12
|
||||||
group: partial
|
group: partial
|
||||||
|
@@ -9,7 +9,9 @@ arguments:
|
|||||||
comment: Context of the current page.
|
comment: Context of the current page.
|
||||||
group: partial
|
group: partial
|
||||||
menu:
|
menu:
|
||||||
type: '*navigation.MenuEntry'
|
type:
|
||||||
|
- '*navigation.MenuEntry'
|
||||||
|
- 'map[string]interface {}'
|
||||||
optional: false
|
optional: false
|
||||||
comment: Menu data to use for the navbar item.
|
comment: Menu data to use for the navbar item.
|
||||||
parent:
|
parent:
|
||||||
@@ -37,3 +39,24 @@ arguments:
|
|||||||
optional: true
|
optional: true
|
||||||
comment: >-
|
comment: >-
|
||||||
Renders the navigation item as plain item, ignoring any children.
|
Renders the navigation item as plain item, ignoring any children.
|
||||||
|
breakpoint:
|
||||||
|
release: v1.2.0
|
||||||
|
modal:
|
||||||
|
type: string
|
||||||
|
optional: true
|
||||||
|
release: v1.2.0
|
||||||
|
comment: >-
|
||||||
|
If set, toggles a modal control for the provided target.
|
||||||
|
id:
|
||||||
|
type: string
|
||||||
|
optional: true
|
||||||
|
release: v1.2.0
|
||||||
|
comment: >-
|
||||||
|
If set, adds an id attribute to the menu item.
|
||||||
|
fs:
|
||||||
|
type: int
|
||||||
|
optional: true
|
||||||
|
default: 6
|
||||||
|
release: v1.2.0
|
||||||
|
comment: >-
|
||||||
|
Sets the font size of the navigation items when the navbar is collapsed.
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
comment: >-
|
comment: >-
|
||||||
Includes a reference to a local or external JavaScript file. Hinode uses the
|
Includes a reference to a local or external JavaScript file. Hinode uses the
|
||||||
template defined in `layouts/partials/templates/script.html` to generate the
|
template defined in `layouts/_partials/templates/script.html` to generate the
|
||||||
link to a (bundled) JavaScript file. It includes context such as the state,
|
link to a (bundled) JavaScript file. It includes context such as the state,
|
||||||
category, and integrity. For example, you can adapt this template to implement
|
category, and integrity. For example, you can adapt this template to implement
|
||||||
cookie consent management.
|
cookie consent management.
|
||||||
@@ -44,3 +44,10 @@ arguments:
|
|||||||
optional: true
|
optional: true
|
||||||
comment: >-
|
comment: >-
|
||||||
Cryptographic hash of the script to enable Subresource Integrity (SRI).
|
Cryptographic hash of the script to enable Subresource Integrity (SRI).
|
||||||
|
script-type:
|
||||||
|
type: string
|
||||||
|
optional: true
|
||||||
|
release: v1.7.0
|
||||||
|
comment: >-
|
||||||
|
Type of the attribute of the script. Set the value to `module` to import
|
||||||
|
the script as a JavaScript module.
|
||||||
|
@@ -1,20 +0,0 @@
|
|||||||
comment: >-
|
|
||||||
Inserts a horizontal page section separator.
|
|
||||||
arguments:
|
|
||||||
_bookshop_name:
|
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: Unique name of the bookshop component
|
|
||||||
group: partial
|
|
||||||
page:
|
|
||||||
type:
|
|
||||||
- '*hugolib.pageState'
|
|
||||||
- '*hugolib.pageForShortcode'
|
|
||||||
optional: true
|
|
||||||
comment: Context of the current page.
|
|
||||||
group: partial
|
|
||||||
theme:
|
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: Color theme to apply.
|
|
||||||
release: v1.0.0-alpha
|
|
@@ -9,3 +9,4 @@ arguments:
|
|||||||
optional: false
|
optional: false
|
||||||
background:
|
background:
|
||||||
class:
|
class:
|
||||||
|
justify:
|
@@ -31,6 +31,11 @@ arguments:
|
|||||||
deprecated: v1.0.0
|
deprecated: v1.0.0
|
||||||
alternative: media-id
|
alternative: media-id
|
||||||
options:
|
options:
|
||||||
|
type: string
|
||||||
|
optional: true
|
||||||
|
comment: >-
|
||||||
|
Optional query parameters to append to video asset's url. The query string
|
||||||
|
is prepended with a `?` symbol. Only applicable to Cloudinary.
|
||||||
release: v0.28.2
|
release: v0.28.2
|
||||||
deprecated: v1.0.0
|
deprecated: v1.0.0
|
||||||
alternative: query-args
|
alternative: query-args
|
||||||
|
BIN
exampleSite/assets/img/foto-sushi-6anudmpILw4-unsplash-1x1.png
Normal file
BIN
exampleSite/assets/img/foto-sushi-6anudmpILw4-unsplash-1x1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 665 KiB |
BIN
exampleSite/assets/img/jake-nackos-IF9TK5Uy-KI-unsplash.png
Normal file
BIN
exampleSite/assets/img/jake-nackos-IF9TK5Uy-KI-unsplash.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.2 MiB |
BIN
exampleSite/assets/img/joseph-gonzalez-iFgRcqHznqg-unsplash.png
Normal file
BIN
exampleSite/assets/img/joseph-gonzalez-iFgRcqHznqg-unsplash.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.6 MiB |
@@ -115,7 +115,7 @@ home = ["HTML", "RSS", "REDIR", "netlify", "server"]
|
|||||||
[[module.imports]]
|
[[module.imports]]
|
||||||
path = "github.com/gethinode/mod-csp"
|
path = "github.com/gethinode/mod-csp"
|
||||||
[[module.imports]]
|
[[module.imports]]
|
||||||
path = "github.com/gethinode/mod-flexsearch/v2"
|
path = "github.com/gethinode/mod-flexsearch/v3"
|
||||||
[[module.imports]]
|
[[module.imports]]
|
||||||
path = "github.com/gethinode/mod-fontawesome/v2"
|
path = "github.com/gethinode/mod-fontawesome/v2"
|
||||||
[[module.imports]]
|
[[module.imports]]
|
||||||
@@ -129,4 +129,4 @@ home = ["HTML", "RSS", "REDIR", "netlify", "server"]
|
|||||||
[[module.imports]]
|
[[module.imports]]
|
||||||
path = "github.com/gethinode/mod-simple-datatables"
|
path = "github.com/gethinode/mod-simple-datatables"
|
||||||
[[module.imports]]
|
[[module.imports]]
|
||||||
path = "github.com/gethinode/mod-utils/v3"
|
path = "github.com/gethinode/mod-utils/v4"
|
||||||
|
@@ -1,17 +1,15 @@
|
|||||||
[main]
|
[main]
|
||||||
separator = "-"
|
separator = "-"
|
||||||
description = "Hinode is a clean documentation and blog theme for your Hugo site based on Bootstrap 5."
|
description = "Hinode is a clean documentation and blog theme for your Hugo site based on Bootstrap 5."
|
||||||
enableDarkMode = true
|
|
||||||
enableLanguageSelectionStorage = true
|
enableLanguageSelectionStorage = true
|
||||||
modes = ["light", "dark"]
|
|
||||||
canonifyAssetsURLs = false
|
canonifyAssetsURLs = false
|
||||||
footerBelowFold = false
|
footerBelowFold = false
|
||||||
loading = "lazy"
|
loading = "lazy"
|
||||||
breakpoint = "md"
|
breakpoint = "md"
|
||||||
|
titleCase = true
|
||||||
[main.padding]
|
[main.padding]
|
||||||
x = 4
|
x = 4
|
||||||
y = 4
|
y = 4
|
||||||
titleCase = true
|
|
||||||
[main.internalLinks]
|
[main.internalLinks]
|
||||||
validate = true
|
validate = true
|
||||||
pretty = true
|
pretty = true
|
||||||
@@ -21,6 +19,12 @@
|
|||||||
[main.build]
|
[main.build]
|
||||||
transpiler = "dartsass"
|
transpiler = "dartsass"
|
||||||
silenceDeprecations = true
|
silenceDeprecations = true
|
||||||
|
[main.colorMode]
|
||||||
|
enabled = true
|
||||||
|
modes = ["light", "dark"]
|
||||||
|
toggle = true
|
||||||
|
iconLight = "fas sun"
|
||||||
|
iconDark = "fas moon"
|
||||||
|
|
||||||
[debugging]
|
[debugging]
|
||||||
showJS = false
|
showJS = false
|
||||||
@@ -37,6 +41,7 @@
|
|||||||
[navigation]
|
[navigation]
|
||||||
anchor = true
|
anchor = true
|
||||||
logo = "/img/logo_icon.svg"
|
logo = "/img/logo_icon.svg"
|
||||||
|
logo-height = 30
|
||||||
color = "body"
|
color = "body"
|
||||||
fixed = true
|
fixed = true
|
||||||
overlay = false
|
overlay = false
|
||||||
@@ -44,12 +49,23 @@
|
|||||||
horizontal = false
|
horizontal = false
|
||||||
offset = "5.5rem"
|
offset = "5.5rem"
|
||||||
offsetXS = "5.5rem"
|
offsetXS = "5.5rem"
|
||||||
search = true
|
|
||||||
searchModal = false
|
|
||||||
breadcrumb = true
|
breadcrumb = true
|
||||||
toc = true
|
toc = true
|
||||||
sidebar = true
|
sidebar = true
|
||||||
size = "md"
|
size = "md"
|
||||||
|
fontsizeCollapsed = 6
|
||||||
|
startLevel = 2
|
||||||
|
endLevel = 3
|
||||||
|
maxNumHeadings = 9
|
||||||
|
[navigation.language]
|
||||||
|
icon = "fas globe"
|
||||||
|
[navigation.padding]
|
||||||
|
x = 4
|
||||||
|
y = 4
|
||||||
|
[navigation.search]
|
||||||
|
enabled = true
|
||||||
|
modal = false
|
||||||
|
icon = "fas magnifying-glass"
|
||||||
|
|
||||||
[messages]
|
[messages]
|
||||||
placement = "bottom-right"
|
placement = "bottom-right"
|
||||||
@@ -125,8 +141,7 @@
|
|||||||
# themeFontPath = "https://fonts.googleapis.com/css2?family=Inter:wght@200;300;600&display=swap" # external path
|
# themeFontPath = "https://fonts.googleapis.com/css2?family=Inter:wght@200;300;600&display=swap" # external path
|
||||||
themeFontPath = "/fonts" # local path
|
themeFontPath = "/fonts" # local path
|
||||||
themeFontPreload = "/fonts/inter-v12-latin-regular.woff2"
|
themeFontPreload = "/fonts/inter-v12-latin-regular.woff2"
|
||||||
# TODO: adjust purge settings
|
purge = true
|
||||||
purge = false
|
|
||||||
# toml-docs-end theme-colors
|
# toml-docs-end theme-colors
|
||||||
|
|
||||||
[schema]
|
[schema]
|
||||||
@@ -166,3 +181,6 @@
|
|||||||
|
|
||||||
[modules.cookieyes]
|
[modules.cookieyes]
|
||||||
url = "https://cdn-cookieyes.com/client_data/a54b5553f349dd13bd225f8e/script.js"
|
url = "https://cdn-cookieyes.com/client_data/a54b5553f349dd13bd225f8e/script.js"
|
||||||
|
|
||||||
|
[modules.mermaid]
|
||||||
|
elk = true
|
||||||
|
@@ -27,10 +27,11 @@ const purgecss = purgeCSSPlugin({
|
|||||||
'./assets/scss/theme/fonts.scss',
|
'./assets/scss/theme/fonts.scss',
|
||||||
'./assets/scss/theme/theme.scss',
|
'./assets/scss/theme/theme.scss',
|
||||||
'./_vendor/github.com/gethinode/mod-cookieyes/v2/assets/scss/cookieyes.scss',
|
'./_vendor/github.com/gethinode/mod-cookieyes/v2/assets/scss/cookieyes.scss',
|
||||||
'./_vendor/github.com/gethinode/mod-flexsearch/v2/assets/scss/modules/flexsearch/flexsearch.scss',
|
'./_vendor/github.com/gethinode/mod-flexsearch/v3/assets/scss/modules/flexsearch/flexsearch.scss',
|
||||||
'./_vendor/github.com/gethinode/mod-katex/dist/katex.scss',
|
'./_vendor/github.com/gethinode/mod-katex/dist/katex.scss',
|
||||||
'./_vendor/github.com/gethinode/mod-leaflet/dist/leaflet.scss',
|
'./_vendor/github.com/gethinode/mod-leaflet/dist/leaflet.scss',
|
||||||
'./_vendor/github.com/gethinode/mod-simple-datatables/dist/simple-datatables.scss',
|
'./_vendor/github.com/gethinode/mod-mermaid/v3/assets/scss/mermaid.scss',
|
||||||
|
'./_vendor/github.com/gethinode/mod-simple-datatables/v2/dist/simple-datatables.scss',
|
||||||
'./_vendor/github.com/twbs/bootstrap/scss/_carousel.scss',
|
'./_vendor/github.com/twbs/bootstrap/scss/_carousel.scss',
|
||||||
'./_vendor/github.com/twbs/bootstrap/scss/_dropdown.scss',
|
'./_vendor/github.com/twbs/bootstrap/scss/_dropdown.scss',
|
||||||
'./_vendor/github.com/twbs/bootstrap/scss/_modal.scss',
|
'./_vendor/github.com/twbs/bootstrap/scss/_modal.scss',
|
||||||
|
@@ -37,7 +37,7 @@ content_blocks:
|
|||||||
more:
|
more:
|
||||||
title: More Posts
|
title: More Posts
|
||||||
padding: 0
|
padding: 0
|
||||||
max: 3
|
limit: 3
|
||||||
class: border-0 card-zoom card-body-margin
|
class: border-0 card-zoom card-body-margin
|
||||||
|
|
||||||
- _bookshop_name: articles
|
- _bookshop_name: articles
|
||||||
@@ -55,7 +55,8 @@ content_blocks:
|
|||||||
title: More articles
|
title: More articles
|
||||||
cols: 1
|
cols: 1
|
||||||
padding: 4
|
padding: 4
|
||||||
max: 2
|
limit: 2
|
||||||
|
icon-style: fa-5x
|
||||||
header-style: none
|
header-style: none
|
||||||
footer-style: tags
|
footer-style: tags
|
||||||
orientation: horizontal-sm
|
orientation: horizontal-sm
|
||||||
|
@@ -6,18 +6,17 @@ content_blocks:
|
|||||||
- _bookshop_name: hero
|
- _bookshop_name: hero
|
||||||
heading:
|
heading:
|
||||||
title: Content blocks
|
title: Content blocks
|
||||||
align: start
|
|
||||||
breadcrumb: true
|
|
||||||
|
|
||||||
- _bookshop_name: articles
|
|
||||||
heading:
|
|
||||||
content: >-
|
content: >-
|
||||||
Hinode uses [Bookshop](https://github.com/CloudCannon/bookshop) to
|
Hinode uses [Bookshop](https://github.com/CloudCannon/bookshop) to
|
||||||
support so-called content blocks. Content blocks are reusable page
|
support so-called content blocks. Content blocks are reusable page
|
||||||
elements, such as a hero, about panel, or an FAQ. Hinode includes
|
elements, such as a hero, about panel, or an FAQ. Hinode includes
|
||||||
several ready-to-use blocks. Click on a card for more details about
|
several ready-to-use blocks. Click on a card for more details about
|
||||||
a content block, including its frontmatter configuration.
|
a content block, including its frontmatter configuration.
|
||||||
|
align: start
|
||||||
width: 8
|
width: 8
|
||||||
|
breadcrumb: true
|
||||||
|
|
||||||
|
- _bookshop_name: articles
|
||||||
hide-empty: false
|
hide-empty: false
|
||||||
input:
|
input:
|
||||||
section: blocks
|
section: blocks
|
||||||
@@ -26,9 +25,10 @@ content_blocks:
|
|||||||
more:
|
more:
|
||||||
title: More Posts
|
title: More Posts
|
||||||
cols: 3
|
cols: 3
|
||||||
padding: 0
|
padding: 3
|
||||||
max: 9
|
limit: 9
|
||||||
paginate: true
|
paginate: true
|
||||||
cover: false
|
cover: false
|
||||||
header-style: none
|
header-style: none
|
||||||
|
class: border-1
|
||||||
---
|
---
|
||||||
|
@@ -25,6 +25,7 @@ The `about` content block renders a short message next to an illustration. You c
|
|||||||
subtle: true
|
subtle: true
|
||||||
illustration:
|
illustration:
|
||||||
image: /assets/img/nat-9l98kFByiao-unsplash.jpg
|
image: /assets/img/nat-9l98kFByiao-unsplash.jpg
|
||||||
|
ratio: 1x1
|
||||||
link-type: link
|
link-type: link
|
||||||
links:
|
links:
|
||||||
- title: First link
|
- title: First link
|
||||||
|
@@ -26,12 +26,12 @@ The `articles` content block renders a group of article cards.
|
|||||||
more:
|
more:
|
||||||
title: More Blogs
|
title: More Blogs
|
||||||
padding: 0
|
padding: 0
|
||||||
max: 3
|
limit: 3
|
||||||
background:
|
background:
|
||||||
color: primary
|
color: primary
|
||||||
subtle: true
|
subtle: true
|
||||||
class: border-0 card-zoom card-body-margin
|
class: border-0 card-zoom card-body-margin
|
||||||
justify: center
|
justify: start
|
||||||
```
|
```
|
||||||
|
|
||||||
{{< /example-bookshop >}}
|
{{< /example-bookshop >}}
|
||||||
|
@@ -24,14 +24,19 @@ The `cards` content block renders a group of content cards.
|
|||||||
subtle: true
|
subtle: true
|
||||||
orientation: stacked
|
orientation: stacked
|
||||||
icon-rounded: true
|
icon-rounded: true
|
||||||
class: text-center
|
icon-style: fa-xs
|
||||||
|
padding: 0
|
||||||
|
align: start
|
||||||
elements:
|
elements:
|
||||||
- title: First Card
|
- title: First Card
|
||||||
icon: fas 1
|
icon: fas 1
|
||||||
|
content: Content of the first card
|
||||||
- title: Second Card
|
- title: Second Card
|
||||||
icon: fas 2
|
icon: fas 2
|
||||||
|
content: Content of the second card
|
||||||
- title: Third Card
|
- title: Third Card
|
||||||
icon: fas 3
|
icon: fas 3
|
||||||
|
content: Content of the third card
|
||||||
```
|
```
|
||||||
|
|
||||||
{{< /example-bookshop >}}
|
{{< /example-bookshop >}}
|
||||||
@@ -42,3 +47,145 @@ The `cards` content block renders a group of content cards.
|
|||||||
The content block supports the following arguments:
|
The content block supports the following arguments:
|
||||||
|
|
||||||
{{< args bookshop-cards >}}
|
{{< args bookshop-cards >}}
|
||||||
|
|
||||||
|
## Examples
|
||||||
|
|
||||||
|
### Stacked cards with an image
|
||||||
|
|
||||||
|
Set the `image` attribute of each `element` to an image asset to render illustrated cards.
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example-bookshop lang="bookshop" >}}
|
||||||
|
|
||||||
|
```yml
|
||||||
|
- _bookshop_name: cards
|
||||||
|
heading:
|
||||||
|
preheading: Preheading
|
||||||
|
title: Heading
|
||||||
|
content: Cards content. It supports multiple lines.
|
||||||
|
align: start
|
||||||
|
background:
|
||||||
|
color: primary
|
||||||
|
subtle: true
|
||||||
|
orientation: stacked
|
||||||
|
class: bg-body
|
||||||
|
align: center
|
||||||
|
elements:
|
||||||
|
- title: First Card
|
||||||
|
image: /img/nat-9l98kFByiao-unsplash.jpg
|
||||||
|
- title: Second Card
|
||||||
|
image: /img/nat-9l98kFByiao-unsplash.jpg
|
||||||
|
- title: Third Card
|
||||||
|
image: /img/nat-9l98kFByiao-unsplash.jpg
|
||||||
|
```
|
||||||
|
|
||||||
|
{{< /example-bookshop >}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
|
### Horizontal cards with an image
|
||||||
|
|
||||||
|
Set the `orientation` attribute to `horizontal` to render horizontally oriented cards.
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example-bookshop lang="bookshop" >}}
|
||||||
|
|
||||||
|
```yml
|
||||||
|
- _bookshop_name: cards
|
||||||
|
heading:
|
||||||
|
preheading: Preheading
|
||||||
|
title: Heading
|
||||||
|
content: Cards content. It supports multiple lines.
|
||||||
|
align: start
|
||||||
|
background:
|
||||||
|
color: primary
|
||||||
|
subtle: true
|
||||||
|
orientation: horizontal
|
||||||
|
class: bg-body
|
||||||
|
align: center
|
||||||
|
elements:
|
||||||
|
- title: First Card
|
||||||
|
image: /img/nat-9l98kFByiao-unsplash.jpg
|
||||||
|
content: Content of the first card
|
||||||
|
- title: Second Card
|
||||||
|
image: /img/nat-9l98kFByiao-unsplash.jpg
|
||||||
|
content: Content of the second card
|
||||||
|
- title: Third Card
|
||||||
|
image: /img/nat-9l98kFByiao-unsplash.jpg
|
||||||
|
content: Content of the third card
|
||||||
|
```
|
||||||
|
|
||||||
|
{{< /example-bookshop >}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
|
### Stacked cards with an icon
|
||||||
|
|
||||||
|
Set the `icon` attribute of each `element` to an icon to render illustrated cards. Adjust the icon's styling with `icon-rounded` and `icon-style`.
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example-bookshop lang="bookshop" >}}
|
||||||
|
|
||||||
|
```yml
|
||||||
|
- _bookshop_name: cards
|
||||||
|
heading:
|
||||||
|
preheading: Preheading
|
||||||
|
title: Heading
|
||||||
|
content: Cards content. It supports multiple lines.
|
||||||
|
align: start
|
||||||
|
background:
|
||||||
|
color: primary
|
||||||
|
subtle: true
|
||||||
|
orientation: stacked
|
||||||
|
icon-style: fa-xs text-primary
|
||||||
|
align: start
|
||||||
|
padding: 0
|
||||||
|
elements:
|
||||||
|
- title: First Card
|
||||||
|
icon: fas 1
|
||||||
|
content: Content of the first card
|
||||||
|
- title: Second Card
|
||||||
|
icon: fas 2
|
||||||
|
content: Content of the second card
|
||||||
|
- title: Third Card
|
||||||
|
icon: fas 3
|
||||||
|
content: Content of the third card
|
||||||
|
```
|
||||||
|
|
||||||
|
{{< /example-bookshop >}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
|
### Horizontal cards with an icon
|
||||||
|
|
||||||
|
Set the `icon` attribute of each `element` to an icon to render illustrated cards. Adjust the icon's styling with `icon-rounded` and `icon-style`.
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example-bookshop lang="bookshop" >}}
|
||||||
|
|
||||||
|
```yml
|
||||||
|
- _bookshop_name: cards
|
||||||
|
heading:
|
||||||
|
preheading: Preheading
|
||||||
|
title: Heading
|
||||||
|
content: Cards content. It supports multiple lines.
|
||||||
|
align: start
|
||||||
|
background:
|
||||||
|
color: primary
|
||||||
|
subtle: true
|
||||||
|
orientation: horizontal
|
||||||
|
icon-rounded: true
|
||||||
|
icon-style: fa-2xs text-primary
|
||||||
|
align: start
|
||||||
|
padding: 0
|
||||||
|
elements:
|
||||||
|
- title: First Card
|
||||||
|
icon: fas 1
|
||||||
|
content: Content of the first card
|
||||||
|
- title: Second Card
|
||||||
|
icon: fas 2
|
||||||
|
content: Content of the second card
|
||||||
|
- title: Third Card
|
||||||
|
icon: fas 3
|
||||||
|
content: Content of the third card
|
||||||
|
```
|
||||||
|
|
||||||
|
{{< /example-bookshop >}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
36
exampleSite/content/en/blocks/cta.md
Normal file
36
exampleSite/content/en/blocks/cta.md
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
---
|
||||||
|
_schema: default
|
||||||
|
title: CTA
|
||||||
|
description: Use the CTA content block to display an action link with an optional contact.
|
||||||
|
icon: fas address-card
|
||||||
|
---
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
The `cta` content block renders a call to action link or button. You can include an optional contact or provide your own illustration. By default, the `cta` uses a generic title and message. Set the `heading` attribute to override these values.
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example-bookshop lang="bookshop" >}}
|
||||||
|
|
||||||
|
```yml
|
||||||
|
- _bookshop_name: cta
|
||||||
|
contact: Betty White
|
||||||
|
caption-url: /en/blocks/cta/
|
||||||
|
background:
|
||||||
|
color: primary
|
||||||
|
subtle: true
|
||||||
|
order: first
|
||||||
|
links:
|
||||||
|
- title: Get in touch
|
||||||
|
url: '#!'
|
||||||
|
icon: fas chevron-right
|
||||||
|
```
|
||||||
|
|
||||||
|
{{< /example-bookshop >}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
|
## Arguments
|
||||||
|
|
||||||
|
The content block supports the following arguments:
|
||||||
|
|
||||||
|
{{< args bookshop-cta >}}
|
189
exampleSite/content/en/blocks/panels.md
Normal file
189
exampleSite/content/en/blocks/panels.md
Normal file
@@ -0,0 +1,189 @@
|
|||||||
|
---
|
||||||
|
_schema: default
|
||||||
|
title: Panels
|
||||||
|
description: Use the panels content block to display multiple toggable panels.
|
||||||
|
icon: fa folder
|
||||||
|
---
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
The `panels` content block displays multiple panels that are toggled by a tab control.
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example-bookshop lang="bookshop" >}}
|
||||||
|
|
||||||
|
```yml
|
||||||
|
- _bookshop_name: panels
|
||||||
|
heading:
|
||||||
|
preheading: Preheading
|
||||||
|
title: Heading
|
||||||
|
content: Panels content. It supports multiple lines.
|
||||||
|
align: start
|
||||||
|
background:
|
||||||
|
color: primary
|
||||||
|
subtle: true
|
||||||
|
width: 12
|
||||||
|
tab-type: underline
|
||||||
|
ratio: 1x1
|
||||||
|
elements:
|
||||||
|
- title: First Panel
|
||||||
|
image: /img/sunrise.jpg
|
||||||
|
content: content 1
|
||||||
|
- title: Second Panel
|
||||||
|
image: /img/nat-9l98kFByiao-unsplash.jpg
|
||||||
|
content: content 2
|
||||||
|
- title: Third Panel
|
||||||
|
image: /img/pj-accetturo-XpD6Dkui-yg-unsplash.jpg
|
||||||
|
content: content 3
|
||||||
|
```
|
||||||
|
|
||||||
|
{{< /example-bookshop >}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
|
## Arguments
|
||||||
|
|
||||||
|
The content block supports the following arguments:
|
||||||
|
|
||||||
|
{{< args bookshop-panels >}}
|
||||||
|
|
||||||
|
## Examples
|
||||||
|
|
||||||
|
### Tabs
|
||||||
|
|
||||||
|
Set `tab-type` to `tabs` to adjust the panel controls.
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example-bookshop lang="bookshop" >}}
|
||||||
|
|
||||||
|
```yml
|
||||||
|
- _bookshop_name: panels
|
||||||
|
heading:
|
||||||
|
preheading: Preheading
|
||||||
|
title: Heading
|
||||||
|
content: Panels content. It supports multiple lines.
|
||||||
|
align: start
|
||||||
|
background:
|
||||||
|
color: primary
|
||||||
|
subtle: true
|
||||||
|
width: 12
|
||||||
|
tab-type: tabs
|
||||||
|
ratio: 1x1
|
||||||
|
elements:
|
||||||
|
- title: First Panel
|
||||||
|
image: /img/sunrise.jpg
|
||||||
|
content: content 1
|
||||||
|
- title: Second Panel
|
||||||
|
image: /img/nat-9l98kFByiao-unsplash.jpg
|
||||||
|
content: content 2
|
||||||
|
- title: Third Panel
|
||||||
|
image: /img/pj-accetturo-XpD6Dkui-yg-unsplash.jpg
|
||||||
|
content: content 3
|
||||||
|
```
|
||||||
|
|
||||||
|
{{< /example-bookshop >}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
|
### Pills
|
||||||
|
|
||||||
|
Set `tab-type` to `pills` to adjust the panel controls.
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example-bookshop lang="bookshop" >}}
|
||||||
|
|
||||||
|
```yml
|
||||||
|
- _bookshop_name: panels
|
||||||
|
heading:
|
||||||
|
preheading: Preheading
|
||||||
|
title: Heading
|
||||||
|
content: Panels content. It supports multiple lines.
|
||||||
|
align: start
|
||||||
|
background:
|
||||||
|
color: primary
|
||||||
|
subtle: true
|
||||||
|
width: 12
|
||||||
|
tab-type: pills
|
||||||
|
ratio: 1x1
|
||||||
|
elements:
|
||||||
|
- title: First Panel
|
||||||
|
image: /img/sunrise.jpg
|
||||||
|
content: content 1
|
||||||
|
- title: Second Panel
|
||||||
|
image: /img/nat-9l98kFByiao-unsplash.jpg
|
||||||
|
content: content 2
|
||||||
|
- title: Third Panel
|
||||||
|
image: /img/pj-accetturo-XpD6Dkui-yg-unsplash.jpg
|
||||||
|
content: content 3
|
||||||
|
```
|
||||||
|
|
||||||
|
{{< /example-bookshop >}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
|
### Underline
|
||||||
|
|
||||||
|
Set `tab-type` to `underline` to adjust the panel controls.
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example-bookshop lang="bookshop" >}}
|
||||||
|
|
||||||
|
```yml
|
||||||
|
- _bookshop_name: panels
|
||||||
|
heading:
|
||||||
|
preheading: Preheading
|
||||||
|
title: Heading
|
||||||
|
content: Panels content. It supports multiple lines.
|
||||||
|
align: start
|
||||||
|
background:
|
||||||
|
color: primary
|
||||||
|
subtle: true
|
||||||
|
width: 12
|
||||||
|
tab-type: underline
|
||||||
|
ratio: 1x1
|
||||||
|
elements:
|
||||||
|
- title: First Panel
|
||||||
|
image: /img/sunrise.jpg
|
||||||
|
content: content 1
|
||||||
|
- title: Second Panel
|
||||||
|
image: /img/nat-9l98kFByiao-unsplash.jpg
|
||||||
|
content: content 2
|
||||||
|
- title: Third Panel
|
||||||
|
image: /img/pj-accetturo-XpD6Dkui-yg-unsplash.jpg
|
||||||
|
content: content 3
|
||||||
|
```
|
||||||
|
|
||||||
|
{{< /example-bookshop >}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
|
### Callout
|
||||||
|
|
||||||
|
Set `tab-type` to `callout` to adjust the panel controls.
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example-bookshop lang="bookshop" >}}
|
||||||
|
|
||||||
|
```yml
|
||||||
|
- _bookshop_name: panels
|
||||||
|
heading:
|
||||||
|
preheading: Preheading
|
||||||
|
title: Heading
|
||||||
|
content: Panels content. It supports multiple lines.
|
||||||
|
align: start
|
||||||
|
background:
|
||||||
|
color: primary
|
||||||
|
subtle: true
|
||||||
|
width: 12
|
||||||
|
tab-type: callout
|
||||||
|
ratio: 1x1
|
||||||
|
elements:
|
||||||
|
- title: First Panel
|
||||||
|
image: /img/sunrise.jpg
|
||||||
|
content: content 1
|
||||||
|
- title: Second Panel
|
||||||
|
image: /img/nat-9l98kFByiao-unsplash.jpg
|
||||||
|
content: content 2
|
||||||
|
- title: Third Panel
|
||||||
|
image: /img/pj-accetturo-XpD6Dkui-yg-unsplash.jpg
|
||||||
|
content: content 3
|
||||||
|
```
|
||||||
|
|
||||||
|
{{< /example-bookshop >}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
@@ -24,10 +24,12 @@ The `video` content block renders a horizontal line to separate sections. The se
|
|||||||
color: primary
|
color: primary
|
||||||
subtle: true
|
subtle: true
|
||||||
orientation: horizontal
|
orientation: horizontal
|
||||||
|
icon-style: fa-lg
|
||||||
video:
|
video:
|
||||||
provider: vimeo
|
provider: vimeo
|
||||||
media-id: "55073825"
|
media-id: "55073825"
|
||||||
autoplay: true
|
autoplay: true
|
||||||
|
color: black
|
||||||
messages:
|
messages:
|
||||||
- title: First Message
|
- title: First Message
|
||||||
icon: fas 1
|
icon: fas 1
|
||||||
|
@@ -59,6 +59,16 @@ As an example, the following shortcode displays a simple alert.
|
|||||||
{{< /example >}}
|
{{< /example >}}
|
||||||
<!-- markdownlint-enable MD037 -->
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
|
## Args
|
||||||
|
|
||||||
|
Use the args shortcode to generates a table of structured arguments. The argument definitions are expected to be defined in a data file identified by a provided structure name.
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example lang="hugo" >}}
|
||||||
|
{{</* args "args" */>}}
|
||||||
|
{{< /example >}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
## Badge
|
## Badge
|
||||||
|
|
||||||
Use the badge shortcode to display a badge for a heading.
|
Use the badge shortcode to display a badge for a heading.
|
||||||
@@ -238,7 +248,7 @@ Use the `file` shortcode to print and highlight the full content of a given inpu
|
|||||||
|
|
||||||
<!-- markdownlint-disable MD037 -->
|
<!-- markdownlint-disable MD037 -->
|
||||||
{{< example lang="hugo" >}}
|
{{< example lang="hugo" >}}
|
||||||
{{</* file file="./config/_default/languages.toml" id="file-collapse-1" */>}}
|
{{</* file file="./config/_default/languages.toml" id="file-collapse-1" full=false */>}}
|
||||||
{{< /example >}}
|
{{< /example >}}
|
||||||
<!-- markdownlint-enable MD037 -->
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
@@ -352,14 +362,14 @@ As an example, the following shortcode displays a tab group with vertically alig
|
|||||||
<!-- markdownlint-disable MD037 -->
|
<!-- markdownlint-disable MD037 -->
|
||||||
{{< example lang="hugo" >}}
|
{{< example lang="hugo" >}}
|
||||||
{{</* nav tab-type="pills" vertical="true" */>}}
|
{{</* nav tab-type="pills" vertical="true" */>}}
|
||||||
{{</* nav-item title="Nav Item #1" show="true" */>}}
|
{{</* nav-item title="Nav Item #1" */>}}
|
||||||
This is the first item's nav body. It supports Markdown content.
|
This is the first item's nav body. It supports Markdown content.
|
||||||
The item is shown by adding the value `show` to the `class` argument.
|
The item is shown by adding the value `show` to the `class` argument.
|
||||||
{{</* /nav-item */>}}
|
{{</* /nav-item */>}}
|
||||||
{{</* nav-item title="Nav Item #2" */>}}
|
{{</* nav-item title="Nav Item #2" show="true" */>}}
|
||||||
This is the second item's nav body.
|
This is the second item's nav body.
|
||||||
{{</* /nav-item */>}}
|
{{</* /nav-item */>}}
|
||||||
{{</* nav-item title="Nav Item #3" */>}}
|
{{</* nav-item title="Nav Item #3" disabled="true" */>}}
|
||||||
This is the third item's nav body.
|
This is the third item's nav body.
|
||||||
{{</* /nav-item */>}}
|
{{</* /nav-item */>}}
|
||||||
{{</* /nav */>}}
|
{{</* /nav */>}}
|
||||||
|
@@ -4,7 +4,7 @@ title: Components
|
|||||||
date: 2023-09-23
|
date: 2023-09-23
|
||||||
description: Use shortcodes to add predefined components powered by external libraries.
|
description: Use shortcodes to add predefined components powered by external libraries.
|
||||||
tags: ["bootstrap", "shortcode"]
|
tags: ["bootstrap", "shortcode"]
|
||||||
keywords: ["featured"]
|
keywords: featured
|
||||||
thumbnail:
|
thumbnail:
|
||||||
url: img/puzzle.jpg
|
url: img/puzzle.jpg
|
||||||
author: Ryoji Iwata
|
author: Ryoji Iwata
|
||||||
@@ -22,7 +22,7 @@ As an example, the following shortcode shows an animation that plays on hover.
|
|||||||
|
|
||||||
<!-- markdownlint-disable MD037 -->
|
<!-- markdownlint-disable MD037 -->
|
||||||
{{< example lang="hugo" >}}
|
{{< example lang="hugo" >}}
|
||||||
{{</* animation data="gatin.json" auto=false hover=true class="col-6 mx-auto" */>}}
|
{{</* animation animation-data="gatin.json" autoplay=false hover=true class="col-6 mx-auto" */>}}
|
||||||
{{< /example >}}
|
{{< /example >}}
|
||||||
<!-- markdownlint-enable MD037 -->
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
@@ -94,6 +94,22 @@ As an example, the following shortcode displays an interactive map of the city o
|
|||||||
|
|
||||||
## Mermaid Diagrams
|
## Mermaid Diagrams
|
||||||
|
|
||||||
|
### Shortcode (with controls and frontmatter)
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD003 MD022 -->
|
||||||
|
{{< mermaid controls=true >}}
|
||||||
|
---
|
||||||
|
config:
|
||||||
|
layout: elk.stress
|
||||||
|
look: handDrawn
|
||||||
|
theme: forest
|
||||||
|
---
|
||||||
|
flowchart TD
|
||||||
|
A --> B
|
||||||
|
A --> C
|
||||||
|
{{< /mermaid >}}
|
||||||
|
<!-- markdownlint-enable MD003 MD022 -->
|
||||||
|
|
||||||
### Flowchart
|
### Flowchart
|
||||||
|
|
||||||
```mermaid
|
```mermaid
|
||||||
|
@@ -4,7 +4,7 @@ title: Content blocks
|
|||||||
date: 2025-06-07
|
date: 2025-06-07
|
||||||
description: Quickly edit your webpages using reusable content blocks.
|
description: Quickly edit your webpages using reusable content blocks.
|
||||||
tags: ["bookshop", "blocks"]
|
tags: ["bookshop", "blocks"]
|
||||||
keywords: ["featured"]
|
keywords: featured
|
||||||
thumbnail:
|
thumbnail:
|
||||||
url: img/pj-accetturo-XpD6Dkui-yg-unsplash.jpg
|
url: img/pj-accetturo-XpD6Dkui-yg-unsplash.jpg
|
||||||
author: Pj Accetturo
|
author: Pj Accetturo
|
||||||
|
@@ -2,14 +2,63 @@
|
|||||||
author: Mark Dumay
|
author: Mark Dumay
|
||||||
title: Bienvenue sur Hinode!
|
title: Bienvenue sur Hinode!
|
||||||
description: Un thème de blog et de documentation pour Hugo basé sur Bootstrap 5.
|
description: Un thème de blog et de documentation pour Hugo basé sur Bootstrap 5.
|
||||||
thumbnail:
|
content_blocks:
|
||||||
url: /img/sunrise.jpg
|
- _bookshop_name: hero
|
||||||
author: Harris Vo
|
heading:
|
||||||
authorURL: https://unsplash.com/@hoanvokim
|
title: Bienvenue sur Hinode!
|
||||||
origin: https://unsplash.com/photos/ZX6BPboJrYk
|
content: |-
|
||||||
originName: Unsplash
|
Un thème de blog et de documentation pour Hugo basé sur Bootstrap 5.
|
||||||
actions:
|
width: 6
|
||||||
about:
|
background:
|
||||||
url: "a-propos"
|
color: primary
|
||||||
title: "À propos"
|
subtle: true
|
||||||
|
illustration:
|
||||||
|
image: /img/sunrise.jpg
|
||||||
|
ratio: 16x9
|
||||||
|
width: 8
|
||||||
|
links:
|
||||||
|
- title: À propos
|
||||||
|
url: "/fr/a-propos/"
|
||||||
|
icon: fas chevron-right
|
||||||
|
orientation: horizontal
|
||||||
|
justify: center
|
||||||
|
|
||||||
|
- _bookshop_name: articles
|
||||||
|
heading:
|
||||||
|
title: Articles de blog
|
||||||
|
align: start
|
||||||
|
input:
|
||||||
|
section: blog
|
||||||
|
reverse: true
|
||||||
|
sort: date
|
||||||
|
keywords: featured
|
||||||
|
hide-empty: false
|
||||||
|
header-style: none
|
||||||
|
more:
|
||||||
|
title: Plus d'articles
|
||||||
|
padding: 0
|
||||||
|
limit: 3
|
||||||
|
class: border-0 card-zoom card-body-margin
|
||||||
|
|
||||||
|
- _bookshop_name: articles
|
||||||
|
heading:
|
||||||
|
title: Projets
|
||||||
|
align: start
|
||||||
|
background:
|
||||||
|
background: body-tertiary
|
||||||
|
hide-empty: false
|
||||||
|
input:
|
||||||
|
section: projects
|
||||||
|
reverse: false
|
||||||
|
sort: date
|
||||||
|
more:
|
||||||
|
title: Plus d'articles
|
||||||
|
cols: 1
|
||||||
|
padding: 4
|
||||||
|
limit: 2
|
||||||
|
icon-style: fa-5x
|
||||||
|
header-style: none
|
||||||
|
footer-style: tags
|
||||||
|
orientation: horizontal-sm
|
||||||
|
class: border-1 card-emphasize
|
||||||
---
|
---
|
||||||
|
@@ -5,6 +5,7 @@ slug: elements-bootstrap
|
|||||||
date: 2023-08-12
|
date: 2023-08-12
|
||||||
description: Utilisez des shortcodes pour ajouter facilement des éléments Bootstrap courants.
|
description: Utilisez des shortcodes pour ajouter facilement des éléments Bootstrap courants.
|
||||||
tags: ["bootstrap", "shortcode"]
|
tags: ["bootstrap", "shortcode"]
|
||||||
|
keywords: featured
|
||||||
thumbnail:
|
thumbnail:
|
||||||
url: img/boots.jpg
|
url: img/boots.jpg
|
||||||
author: Nathan Dumlao
|
author: Nathan Dumlao
|
||||||
|
@@ -5,6 +5,7 @@ slug: composents
|
|||||||
date: 2023-07-21
|
date: 2023-07-21
|
||||||
description: Utilisez des shortcodes pour ajouter des composants prédéfinis alimentés par des bibliothèques externes.
|
description: Utilisez des shortcodes pour ajouter des composants prédéfinis alimentés par des bibliothèques externes.
|
||||||
tags: ["bootstrap", "shortcode"]
|
tags: ["bootstrap", "shortcode"]
|
||||||
|
keywords: featured
|
||||||
thumbnail:
|
thumbnail:
|
||||||
url: img/puzzle.jpg
|
url: img/puzzle.jpg
|
||||||
author: Ryoji Iwata
|
author: Ryoji Iwata
|
||||||
@@ -22,7 +23,7 @@ Hinode propose plusieurs shortcodes en plus des [éléments Bootstrap]({{% relre
|
|||||||
|
|
||||||
<!-- markdownlint-disable MD037 -->
|
<!-- markdownlint-disable MD037 -->
|
||||||
{{< example lang="hugo" >}}
|
{{< example lang="hugo" >}}
|
||||||
{{</* animation data="gatin.json" auto=false hover=true class="col-6 mx-auto" */>}}
|
{{</* animation animation-data="gatin.json" autoplay=false hover=true class="col-6 mx-auto" */>}}
|
||||||
{{< /example >}}
|
{{< /example >}}
|
||||||
<!-- markdownlint-enable MD037 -->
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user