mirror of
https://github.com/gethinode/hinode.git
synced 2025-10-07 18:14:28 +00:00
Compare commits
46 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
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 |
4
.github/workflows/lint-build.yml
vendored
4
.github/workflows/lint-build.yml
vendored
@@ -14,6 +14,10 @@ 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
|
||||||
|
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@v4
|
||||||
|
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
|
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())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
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,6 +19,7 @@
|
|||||||
{{/* 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" "auto") $args.illustration)
|
"illustration" (merge (dict "ratio" "auto") $args.illustration)
|
||||||
|
@@ -62,46 +62,53 @@
|
|||||||
|
|
||||||
<!-- Main code -->
|
<!-- Main code -->
|
||||||
{{ if not $error }}
|
{{ if not $error }}
|
||||||
{{- partial "assets/section-title.html" (dict "heading" $args.heading "justify" $args.justify) -}}
|
{{ if or (gt (len $pages) 0) (not $args.hideEmpty) }}
|
||||||
|
{{- partial "assets/section-title.html" (dict "heading" $args.heading "justify" $args.justify) -}}
|
||||||
|
|
||||||
{{ $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
|
||||||
"limit" $args.limit
|
"limit" $args.limit
|
||||||
"cols" $args.cols
|
"cols" $args.cols
|
||||||
"icon-rounded" $args.iconRounded
|
"icon-rounded" $args.iconRounded
|
||||||
"href" (cond $moreButton $moreLink "")
|
"href" (cond $moreButton $moreLink "")
|
||||||
"href-title" (cond $moreButton $moreTitle "")
|
"href-title" (cond $moreButton $moreTitle "")
|
||||||
"href-force" (gt $result.total (len $result.pages))
|
"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"
|
"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 }}
|
||||||
|
{{- $padding := partial "utilities/GetPadding.html" -}}
|
||||||
|
<p class="pt-{{ $padding.y }}">{{- T "emptyList" }}.</p>
|
||||||
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ partial $partial $params }}
|
|
||||||
{{ end }}
|
{{ end }}
|
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 }}
|
8
component-library/components/cta/cta.scss
Normal file
8
component-library/components/cta/cta.scss
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
.cta {
|
||||||
|
background-color: var(--#{$prefix}primary-bg-subtle);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta .contact-img {
|
||||||
|
background-color: var(--#{$prefix}body-bg);
|
||||||
|
border-radius: var(--bs-border-radius);
|
||||||
|
}
|
@@ -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:
|
||||||
|
icon-rounded:
|
||||||
|
padding:
|
||||||
|
background:
|
||||||
|
backdrop:
|
||||||
|
color:
|
||||||
|
subtle:
|
||||||
|
elements:
|
||||||
|
- title:
|
||||||
|
icon:
|
||||||
|
image:
|
||||||
|
mode:
|
||||||
|
content:
|
||||||
|
tab-type:
|
||||||
|
ratio:
|
||||||
|
class:
|
||||||
|
width:
|
||||||
|
justify:
|
81
component-library/components/panels/panels.hugo.html
Normal file
81
component-library/components/panels/panels.hugo.html
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
{{/*
|
||||||
|
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" -}}
|
||||||
|
|
||||||
|
{{/* 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}}
|
||||||
|
|
||||||
|
{{ if not $error }}
|
||||||
|
{{- partial "assets/section-title.html" (dict "heading" $args.heading "justify" $args.justify) -}}
|
||||||
|
|
||||||
|
{{- 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 }}
|
||||||
|
|
3
component-library/components/panels/panels.scss
Normal file
3
component-library/components/panels/panels.scss
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
.panels .dropdown-toggle {
|
||||||
|
text-decoration: none !important;
|
||||||
|
}
|
@@ -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"
|
||||||
|
@@ -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 -}}
|
||||||
|
@@ -84,6 +84,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
|
||||||
@@ -96,6 +97,9 @@
|
|||||||
toc = true
|
toc = true
|
||||||
sidebar = true
|
sidebar = true
|
||||||
size = "md"
|
size = "md"
|
||||||
|
[navigation.padding]
|
||||||
|
x = 4
|
||||||
|
y = 4
|
||||||
# toml-docs-end navigation
|
# toml-docs-end navigation
|
||||||
|
|
||||||
# toml-docs-start messages
|
# toml-docs-start messages
|
||||||
|
@@ -16,8 +16,8 @@ content_blocks:
|
|||||||
ratio: 16x9
|
ratio: 16x9
|
||||||
width: 8
|
width: 8
|
||||||
links:
|
links:
|
||||||
- title: About
|
- title: Getting started
|
||||||
url: about
|
url: https://gethinode.com/docs
|
||||||
icon: fas chevron-right
|
icon: fas chevron-right
|
||||||
orientation: horizontal
|
orientation: horizontal
|
||||||
justify: center
|
justify: center
|
||||||
|
@@ -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]
|
||||||
|
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
|
@@ -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
|
||||||
|
@@ -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:
|
||||||
|
@@ -22,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
|
||||||
|
@@ -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
|
|
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 |
@@ -37,6 +37,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
|
||||||
@@ -50,6 +51,9 @@
|
|||||||
toc = true
|
toc = true
|
||||||
sidebar = true
|
sidebar = true
|
||||||
size = "md"
|
size = "md"
|
||||||
|
[navigation.padding]
|
||||||
|
x = 4
|
||||||
|
y = 4
|
||||||
|
|
||||||
[messages]
|
[messages]
|
||||||
placement = "bottom-right"
|
placement = "bottom-right"
|
||||||
@@ -125,7 +129,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"
|
||||||
purge = true
|
purge = false
|
||||||
# toml-docs-end theme-colors
|
# toml-docs-end theme-colors
|
||||||
|
|
||||||
[schema]
|
[schema]
|
||||||
|
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 -->
|
45
exampleSite/data/contacts.en.yml
Normal file
45
exampleSite/data/contacts.en.yml
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
- name: Alex Smith
|
||||||
|
preferred: Alex
|
||||||
|
image: /assets/img/joseph-gonzalez-iFgRcqHznqg-unsplash.png
|
||||||
|
function: Digital Strategy Lead
|
||||||
|
linkedin: https://www.linkedin.com
|
||||||
|
keywords:
|
||||||
|
- transformation
|
||||||
|
biography: >-
|
||||||
|
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut accumsan
|
||||||
|
venenatis dapibus. Proin placerat mauris ac interdum gravida. Proin
|
||||||
|
consequat feugiat sagittis. Sed vel augue nec est auctor semper. Curabitur
|
||||||
|
mauris ante, euismod eu sem in, sagittis porttitor urna. Mauris sodales at
|
||||||
|
quam condimentum malesuada. Vivamus erat augue, euismod nec ligula quis,
|
||||||
|
molestie lobortis ante. Proin venenatis non diam ac interdum.
|
||||||
|
|
||||||
|
- name: Betty White
|
||||||
|
preferred: Betty
|
||||||
|
image: /assets/img/jake-nackos-IF9TK5Uy-KI-unsplash.png
|
||||||
|
function: UX Expert
|
||||||
|
linkedin: https://www.linkedin.com
|
||||||
|
keywords:
|
||||||
|
- experience
|
||||||
|
biography: >-
|
||||||
|
Duis rutrum, justo eleifend sagittis facilisis, leo orci hendrerit elit, ac
|
||||||
|
tristique nisl justo non neque. Mauris semper egestas massa, nec dapibus ex
|
||||||
|
tincidunt nec. Quisque lectus quam, finibus sed hendrerit id, accumsan eget
|
||||||
|
sapien. Nam facilisis diam eu felis tempus euismod. Nullam id neque
|
||||||
|
fringilla purus vestibulum mattis elementum vitae lectus. Fusce vel libero
|
||||||
|
consectetur urna egestas molestie eget sit amet elit.
|
||||||
|
|
||||||
|
- name: Charles Green
|
||||||
|
preferred: Charles
|
||||||
|
image: /assets/img/foto-sushi-6anudmpILw4-unsplash-1x1.png
|
||||||
|
function: UX Expert
|
||||||
|
linkedin: https://www.linkedin.com
|
||||||
|
keywords:
|
||||||
|
- technology
|
||||||
|
- transformation
|
||||||
|
- experience
|
||||||
|
biography: >-
|
||||||
|
Suspendisse potenti. Aenean elit nisl, viverra eu volutpat at, sodales a sem.
|
||||||
|
Aliquam blandit nunc non mi posuere, quis laoreet ex congue. Donec fringilla
|
||||||
|
porttitor lacus accumsan porttitor. Integer vel sagittis diam. Nullam vehicula
|
||||||
|
fermentum risus nec facilisis. Fusce eleifend gravida orci, in efficitur enim
|
||||||
|
fermentum nec. Sed quis malesuada lorem. Ut vitae sodales sapien.
|
@@ -14,6 +14,7 @@
|
|||||||
"figure",
|
"figure",
|
||||||
"footer",
|
"footer",
|
||||||
"form",
|
"form",
|
||||||
|
"h1",
|
||||||
"h2",
|
"h2",
|
||||||
"h3",
|
"h3",
|
||||||
"head",
|
"head",
|
||||||
@@ -188,9 +189,11 @@
|
|||||||
"col-sm-6",
|
"col-sm-6",
|
||||||
"collapse",
|
"collapse",
|
||||||
"collapsed",
|
"collapsed",
|
||||||
|
"contact-img",
|
||||||
"container",
|
"container",
|
||||||
"container-fluid",
|
"container-fluid",
|
||||||
"container-xxl",
|
"container-xxl",
|
||||||
|
"cta",
|
||||||
"custom",
|
"custom",
|
||||||
"d-block",
|
"d-block",
|
||||||
"d-flex",
|
"d-flex",
|
||||||
@@ -210,6 +213,7 @@
|
|||||||
"disabled",
|
"disabled",
|
||||||
"display-1",
|
"display-1",
|
||||||
"display-4",
|
"display-4",
|
||||||
|
"display-6",
|
||||||
"dropdown",
|
"dropdown",
|
||||||
"dropdown-divider-bg",
|
"dropdown-divider-bg",
|
||||||
"dropdown-item",
|
"dropdown-item",
|
||||||
@@ -244,6 +248,7 @@
|
|||||||
"fa-face-frown",
|
"fa-face-frown",
|
||||||
"fa-facebook",
|
"fa-facebook",
|
||||||
"fa-fluid",
|
"fa-fluid",
|
||||||
|
"fa-folder",
|
||||||
"fa-fw",
|
"fa-fw",
|
||||||
"fa-github",
|
"fa-github",
|
||||||
"fa-globe",
|
"fa-globe",
|
||||||
@@ -378,10 +383,13 @@
|
|||||||
"my-md-0",
|
"my-md-0",
|
||||||
"my-md-auto",
|
"my-md-auto",
|
||||||
"nav",
|
"nav",
|
||||||
|
"nav-callout",
|
||||||
"nav-item",
|
"nav-item",
|
||||||
"nav-link",
|
"nav-link",
|
||||||
|
"nav-panel",
|
||||||
"nav-pills",
|
"nav-pills",
|
||||||
"nav-tabs",
|
"nav-tabs",
|
||||||
|
"nav-underline",
|
||||||
"navbar",
|
"navbar",
|
||||||
"navbar-brand",
|
"navbar-brand",
|
||||||
"navbar-collapse",
|
"navbar-collapse",
|
||||||
@@ -406,6 +414,12 @@
|
|||||||
"p-3",
|
"p-3",
|
||||||
"p-4",
|
"p-4",
|
||||||
"p-md-4",
|
"p-md-4",
|
||||||
|
"page-item",
|
||||||
|
"page-link",
|
||||||
|
"pagination",
|
||||||
|
"pagination-terse",
|
||||||
|
"panel-dropdown",
|
||||||
|
"panels",
|
||||||
"pb-3",
|
"pb-3",
|
||||||
"pb-4",
|
"pb-4",
|
||||||
"pb-5",
|
"pb-5",
|
||||||
@@ -430,9 +444,11 @@
|
|||||||
"ptw-5",
|
"ptw-5",
|
||||||
"ptw-lg-5",
|
"ptw-lg-5",
|
||||||
"ptw-sm-4",
|
"ptw-sm-4",
|
||||||
|
"px-%!d(string=0)",
|
||||||
"px-2",
|
"px-2",
|
||||||
"px-4",
|
"px-4",
|
||||||
"px-xxl-0",
|
"px-xxl-0",
|
||||||
|
"py-%!d(string=0)",
|
||||||
"py-1",
|
"py-1",
|
||||||
"py-2",
|
"py-2",
|
||||||
"py-3",
|
"py-3",
|
||||||
@@ -480,6 +496,7 @@
|
|||||||
"table-border-bottom-wrap",
|
"table-border-bottom-wrap",
|
||||||
"table-responsive-md",
|
"table-responsive-md",
|
||||||
"table-wrap",
|
"table-wrap",
|
||||||
|
"tabs-dropdown",
|
||||||
"tag-link",
|
"tag-link",
|
||||||
"text-",
|
"text-",
|
||||||
"text-bg-body-tertiary",
|
"text-bg-body-tertiary",
|
||||||
@@ -579,6 +596,7 @@
|
|||||||
"button",
|
"button",
|
||||||
"button-group",
|
"button-group",
|
||||||
"c4-diagram",
|
"c4-diagram",
|
||||||
|
"callout",
|
||||||
"card",
|
"card",
|
||||||
"card-group",
|
"card-group",
|
||||||
"carousel",
|
"carousel",
|
||||||
@@ -600,12 +618,20 @@
|
|||||||
"data-tables",
|
"data-tables",
|
||||||
"docs",
|
"docs",
|
||||||
"documentation",
|
"documentation",
|
||||||
|
"dropdown-nav-0",
|
||||||
|
"dropdown-panel-0c581a31b41dc3a66978850c49104d94",
|
||||||
|
"dropdown-panel-48654ebd7a32e1fd1bb0564bc97480fc",
|
||||||
|
"dropdown-panel-8875c06848ca8f8df24e77f669dce510",
|
||||||
|
"dropdown-panel-8f19332bfc71bfa2d83acc6b314006b1",
|
||||||
|
"dropdown-panel-a65659e3a01257b5212052a702486379",
|
||||||
"elements-type",
|
"elements-type",
|
||||||
"entity-relationship-diagram",
|
"entity-relationship-diagram",
|
||||||
"example",
|
"example",
|
||||||
|
"examples",
|
||||||
"exemple",
|
"exemple",
|
||||||
"fa-address-card",
|
"fa-address-card",
|
||||||
"fa-face-frown",
|
"fa-face-frown",
|
||||||
|
"fa-folder",
|
||||||
"fa-square-check",
|
"fa-square-check",
|
||||||
"fab-bootstrap",
|
"fab-bootstrap",
|
||||||
"fab-docker",
|
"fab-docker",
|
||||||
@@ -615,29 +641,15 @@
|
|||||||
"fab-medium",
|
"fab-medium",
|
||||||
"fab-whatsapp",
|
"fab-whatsapp",
|
||||||
"fab-x-twitter",
|
"fab-x-twitter",
|
||||||
"faq-50c692e264c634586e8c4ecaa233a9fe",
|
"faq-848b28af09862da6902e356c675acfb1",
|
||||||
"faq-50c692e264c634586e8c4ecaa233a9fe-heading-faq-50c692e264c634586e8c4ecaa233a9fe",
|
"faq-848b28af09862da6902e356c675acfb1-heading-faq-848b28af09862da6902e356c675acfb1",
|
||||||
"faq-50c692e264c634586e8c4ecaa233a9fe-item-0",
|
"faq-848b28af09862da6902e356c675acfb1-item-0",
|
||||||
"faq-50c692e264c634586e8c4ecaa233a9fe-item-1",
|
"faq-848b28af09862da6902e356c675acfb1-item-1",
|
||||||
"faq-50c692e264c634586e8c4ecaa233a9fe-item-2",
|
"faq-848b28af09862da6902e356c675acfb1-item-2",
|
||||||
"faq-6970cc0aa1c2d2d4c1359a93d3193646",
|
|
||||||
"faq-6970cc0aa1c2d2d4c1359a93d3193646-heading-faq-6970cc0aa1c2d2d4c1359a93d3193646",
|
|
||||||
"faq-6970cc0aa1c2d2d4c1359a93d3193646-item-0",
|
|
||||||
"faq-6970cc0aa1c2d2d4c1359a93d3193646-item-1",
|
|
||||||
"faq-6970cc0aa1c2d2d4c1359a93d3193646-item-2",
|
|
||||||
"faq-85f9e7e957de15130b6401c39140dad6",
|
|
||||||
"faq-85f9e7e957de15130b6401c39140dad6-heading-faq-85f9e7e957de15130b6401c39140dad6",
|
|
||||||
"faq-85f9e7e957de15130b6401c39140dad6-item-0",
|
|
||||||
"faq-85f9e7e957de15130b6401c39140dad6-item-1",
|
|
||||||
"faq-85f9e7e957de15130b6401c39140dad6-item-2",
|
|
||||||
"faq-d5c6be23853321daeaf421994a4c5937",
|
|
||||||
"faq-d5c6be23853321daeaf421994a4c5937-heading-faq-d5c6be23853321daeaf421994a4c5937",
|
|
||||||
"faq-d5c6be23853321daeaf421994a4c5937-item-0",
|
|
||||||
"faq-d5c6be23853321daeaf421994a4c5937-item-1",
|
|
||||||
"faq-d5c6be23853321daeaf421994a4c5937-item-2",
|
|
||||||
"fas-1",
|
"fas-1",
|
||||||
"fas-2",
|
"fas-2",
|
||||||
"fas-3",
|
"fas-3",
|
||||||
|
"fas-address-card",
|
||||||
"fas-angle-left",
|
"fas-angle-left",
|
||||||
"fas-arrow-left",
|
"fas-arrow-left",
|
||||||
"fas-arrow-right",
|
"fas-arrow-right",
|
||||||
@@ -667,6 +679,7 @@
|
|||||||
"fichier",
|
"fichier",
|
||||||
"fil-dariane",
|
"fil-dariane",
|
||||||
"file",
|
"file",
|
||||||
|
"first-panel",
|
||||||
"flowchart",
|
"flowchart",
|
||||||
"footer-docs-collapse-15",
|
"footer-docs-collapse-15",
|
||||||
"footer-docs-collapse-16",
|
"footer-docs-collapse-16",
|
||||||
@@ -692,6 +705,7 @@
|
|||||||
"infobulle",
|
"infobulle",
|
||||||
"input-type",
|
"input-type",
|
||||||
"ins",
|
"ins",
|
||||||
|
"interested-in-this-topic",
|
||||||
"invite-de-commandes",
|
"invite-de-commandes",
|
||||||
"items-type",
|
"items-type",
|
||||||
"kaart",
|
"kaart",
|
||||||
@@ -718,6 +732,11 @@
|
|||||||
"nav-0-btn-1",
|
"nav-0-btn-1",
|
||||||
"nav-0-btn-2",
|
"nav-0-btn-2",
|
||||||
"nav-nav-0",
|
"nav-nav-0",
|
||||||
|
"nav-panel-0c581a31b41dc3a66978850c49104d94",
|
||||||
|
"nav-panel-48654ebd7a32e1fd1bb0564bc97480fc",
|
||||||
|
"nav-panel-8875c06848ca8f8df24e77f669dce510",
|
||||||
|
"nav-panel-8f19332bfc71bfa2d83acc6b314006b1",
|
||||||
|
"nav-panel-a65659e3a01257b5212052a702486379",
|
||||||
"navbar",
|
"navbar",
|
||||||
"navbar-0-collapse",
|
"navbar-0-collapse",
|
||||||
"navbar-mode",
|
"navbar-mode",
|
||||||
@@ -726,8 +745,39 @@
|
|||||||
"navigation",
|
"navigation",
|
||||||
"notification",
|
"notification",
|
||||||
"overview",
|
"overview",
|
||||||
|
"panel-0c581a31b41dc3a66978850c49104d94-0",
|
||||||
|
"panel-0c581a31b41dc3a66978850c49104d94-1",
|
||||||
|
"panel-0c581a31b41dc3a66978850c49104d94-2",
|
||||||
|
"panel-0c581a31b41dc3a66978850c49104d94-btn-0",
|
||||||
|
"panel-0c581a31b41dc3a66978850c49104d94-btn-1",
|
||||||
|
"panel-0c581a31b41dc3a66978850c49104d94-btn-2",
|
||||||
|
"panel-48654ebd7a32e1fd1bb0564bc97480fc-0",
|
||||||
|
"panel-48654ebd7a32e1fd1bb0564bc97480fc-1",
|
||||||
|
"panel-48654ebd7a32e1fd1bb0564bc97480fc-2",
|
||||||
|
"panel-48654ebd7a32e1fd1bb0564bc97480fc-btn-0",
|
||||||
|
"panel-48654ebd7a32e1fd1bb0564bc97480fc-btn-1",
|
||||||
|
"panel-48654ebd7a32e1fd1bb0564bc97480fc-btn-2",
|
||||||
|
"panel-8875c06848ca8f8df24e77f669dce510-0",
|
||||||
|
"panel-8875c06848ca8f8df24e77f669dce510-1",
|
||||||
|
"panel-8875c06848ca8f8df24e77f669dce510-2",
|
||||||
|
"panel-8875c06848ca8f8df24e77f669dce510-btn-0",
|
||||||
|
"panel-8875c06848ca8f8df24e77f669dce510-btn-1",
|
||||||
|
"panel-8875c06848ca8f8df24e77f669dce510-btn-2",
|
||||||
|
"panel-8f19332bfc71bfa2d83acc6b314006b1-0",
|
||||||
|
"panel-8f19332bfc71bfa2d83acc6b314006b1-1",
|
||||||
|
"panel-8f19332bfc71bfa2d83acc6b314006b1-2",
|
||||||
|
"panel-8f19332bfc71bfa2d83acc6b314006b1-btn-0",
|
||||||
|
"panel-8f19332bfc71bfa2d83acc6b314006b1-btn-1",
|
||||||
|
"panel-8f19332bfc71bfa2d83acc6b314006b1-btn-2",
|
||||||
|
"panel-a65659e3a01257b5212052a702486379-0",
|
||||||
|
"panel-a65659e3a01257b5212052a702486379-1",
|
||||||
|
"panel-a65659e3a01257b5212052a702486379-2",
|
||||||
|
"panel-a65659e3a01257b5212052a702486379-btn-0",
|
||||||
|
"panel-a65659e3a01257b5212052a702486379-btn-1",
|
||||||
|
"panel-a65659e3a01257b5212052a702486379-btn-2",
|
||||||
"persona",
|
"persona",
|
||||||
"pie-chart",
|
"pie-chart",
|
||||||
|
"pills",
|
||||||
"projecten",
|
"projecten",
|
||||||
"projects",
|
"projects",
|
||||||
"projets",
|
"projets",
|
||||||
@@ -737,6 +787,7 @@
|
|||||||
"release",
|
"release",
|
||||||
"requirement-chart",
|
"requirement-chart",
|
||||||
"réduire",
|
"réduire",
|
||||||
|
"second-panel",
|
||||||
"security",
|
"security",
|
||||||
"sequence-diagram",
|
"sequence-diagram",
|
||||||
"spinner",
|
"spinner",
|
||||||
@@ -745,6 +796,8 @@
|
|||||||
"sup",
|
"sup",
|
||||||
"sécurité",
|
"sécurité",
|
||||||
"table",
|
"table",
|
||||||
|
"tabs",
|
||||||
|
"third-panel",
|
||||||
"third-party-links--use-of-your-information",
|
"third-party-links--use-of-your-information",
|
||||||
"timeline",
|
"timeline",
|
||||||
"title",
|
"title",
|
||||||
@@ -758,6 +811,7 @@
|
|||||||
"tooltip",
|
"tooltip",
|
||||||
"types-de-cookies-que-nous-utilisons",
|
"types-de-cookies-que-nous-utilisons",
|
||||||
"types-of-cookies-we-use",
|
"types-of-cookies-we-use",
|
||||||
|
"underline",
|
||||||
"user-journey",
|
"user-journey",
|
||||||
"video",
|
"video",
|
||||||
"video-type",
|
"video-type",
|
||||||
|
2
go.mod
2
go.mod
@@ -18,7 +18,7 @@ require (
|
|||||||
github.com/gethinode/mod-simple-datatables v1.1.7 // indirect
|
github.com/gethinode/mod-simple-datatables v1.1.7 // indirect
|
||||||
github.com/gethinode/mod-simple-datatables/v2 v2.0.1 // indirect
|
github.com/gethinode/mod-simple-datatables/v2 v2.0.1 // indirect
|
||||||
github.com/gethinode/mod-utils/v3 v3.3.1 // indirect
|
github.com/gethinode/mod-utils/v3 v3.3.1 // indirect
|
||||||
github.com/gethinode/mod-utils/v4 v4.8.4 // indirect
|
github.com/gethinode/mod-utils/v4 v4.11.0 // indirect
|
||||||
github.com/nextapps-de/flexsearch v0.0.0-20250606060143-c28f52c09b7a // indirect
|
github.com/nextapps-de/flexsearch v0.0.0-20250606060143-c28f52c09b7a // indirect
|
||||||
github.com/twbs/bootstrap v5.3.7+incompatible // indirect
|
github.com/twbs/bootstrap v5.3.7+incompatible // indirect
|
||||||
)
|
)
|
||||||
|
10
go.sum
10
go.sum
@@ -452,6 +452,16 @@ github.com/gethinode/mod-utils/v4 v4.8.3 h1:CSaFR/c1cGrSPpH5ZfrNOoMhAbNb8sw0SCRh
|
|||||||
github.com/gethinode/mod-utils/v4 v4.8.3/go.mod h1:bYmvRdAo4ICy5MpSGafDvO4p5bTDpsDKFCPL3bH0mN4=
|
github.com/gethinode/mod-utils/v4 v4.8.3/go.mod h1:bYmvRdAo4ICy5MpSGafDvO4p5bTDpsDKFCPL3bH0mN4=
|
||||||
github.com/gethinode/mod-utils/v4 v4.8.4 h1:ExD2zZCGonAmbIxC9wBU2dp+V4ZfvG46NWaz+LaV3iQ=
|
github.com/gethinode/mod-utils/v4 v4.8.4 h1:ExD2zZCGonAmbIxC9wBU2dp+V4ZfvG46NWaz+LaV3iQ=
|
||||||
github.com/gethinode/mod-utils/v4 v4.8.4/go.mod h1:bYmvRdAo4ICy5MpSGafDvO4p5bTDpsDKFCPL3bH0mN4=
|
github.com/gethinode/mod-utils/v4 v4.8.4/go.mod h1:bYmvRdAo4ICy5MpSGafDvO4p5bTDpsDKFCPL3bH0mN4=
|
||||||
|
github.com/gethinode/mod-utils/v4 v4.9.0 h1:v7+prGZPETqgI6t/LN0UhrtRKU4mqpJUQu6jEUU5MYg=
|
||||||
|
github.com/gethinode/mod-utils/v4 v4.9.0/go.mod h1:bYmvRdAo4ICy5MpSGafDvO4p5bTDpsDKFCPL3bH0mN4=
|
||||||
|
github.com/gethinode/mod-utils/v4 v4.9.1 h1:9D2AJcrlS5r2moHEoo70GrNBmq1pJHd9oT4G14DsZRs=
|
||||||
|
github.com/gethinode/mod-utils/v4 v4.9.1/go.mod h1:bYmvRdAo4ICy5MpSGafDvO4p5bTDpsDKFCPL3bH0mN4=
|
||||||
|
github.com/gethinode/mod-utils/v4 v4.9.2 h1:lzcihwAsm8R2k2v+tWu5nfWvXMA8uRKi0nGIzZCygZ8=
|
||||||
|
github.com/gethinode/mod-utils/v4 v4.9.2/go.mod h1:bYmvRdAo4ICy5MpSGafDvO4p5bTDpsDKFCPL3bH0mN4=
|
||||||
|
github.com/gethinode/mod-utils/v4 v4.10.0 h1:CfVa57r52wXd0bUqSJlpux2cloHQNBBe13aeqLJ8FXE=
|
||||||
|
github.com/gethinode/mod-utils/v4 v4.10.0/go.mod h1:bYmvRdAo4ICy5MpSGafDvO4p5bTDpsDKFCPL3bH0mN4=
|
||||||
|
github.com/gethinode/mod-utils/v4 v4.11.0 h1:24RObT99j/jiQnCyHvXahJHIA8e8uQuBb1pUIRJOxpA=
|
||||||
|
github.com/gethinode/mod-utils/v4 v4.11.0/go.mod h1:bYmvRdAo4ICy5MpSGafDvO4p5bTDpsDKFCPL3bH0mN4=
|
||||||
github.com/nextapps-de/flexsearch v0.0.0-20230711092928-1243fd883ec3 h1:H/qVR5O4BXjRjD+5PZB+r4ug2BSJ2Of4RtwOntd+OKo=
|
github.com/nextapps-de/flexsearch v0.0.0-20230711092928-1243fd883ec3 h1:H/qVR5O4BXjRjD+5PZB+r4ug2BSJ2Of4RtwOntd+OKo=
|
||||||
github.com/nextapps-de/flexsearch v0.0.0-20230711092928-1243fd883ec3/go.mod h1:5GdMfPAXzbA2gXBqTjC6l27kioSYzHlqDMh0+wyx7sU=
|
github.com/nextapps-de/flexsearch v0.0.0-20230711092928-1243fd883ec3/go.mod h1:5GdMfPAXzbA2gXBqTjC6l27kioSYzHlqDMh0+wyx7sU=
|
||||||
github.com/nextapps-de/flexsearch v0.0.0-20240108021025-afd75f742f22 h1:re7L8FxbXQpnX8BgzkdUnDpsUmloGNyLmiy2ZCln8pg=
|
github.com/nextapps-de/flexsearch v0.0.0-20240108021025-afd75f742f22 h1:re7L8FxbXQpnX8BgzkdUnDpsUmloGNyLmiy2ZCln8pg=
|
||||||
|
@@ -31,6 +31,7 @@
|
|||||||
"use"
|
"use"
|
||||||
],
|
],
|
||||||
"classes": [
|
"classes": [
|
||||||
|
"%!s(<nil>)",
|
||||||
"active",
|
"active",
|
||||||
"align-items-center",
|
"align-items-center",
|
||||||
"align-self-center",
|
"align-self-center",
|
||||||
|
@@ -177,3 +177,11 @@
|
|||||||
# Nav & Tab
|
# Nav & Tab
|
||||||
- id: clickToExpand
|
- id: clickToExpand
|
||||||
translation: "Click to expand"
|
translation: "Click to expand"
|
||||||
|
|
||||||
|
# Contact information
|
||||||
|
- id: contactHeaderTopic
|
||||||
|
translation: "Interested in this topic?"
|
||||||
|
- id: contactBody
|
||||||
|
translation: "Please leave your contact details so we can get in touch."
|
||||||
|
- id: contactAction
|
||||||
|
translation: "Get in touch"
|
||||||
|
@@ -174,3 +174,11 @@
|
|||||||
# Nav & Tab
|
# Nav & Tab
|
||||||
- id: clickToExpand
|
- id: clickToExpand
|
||||||
translation: "Klik om open te klappen"
|
translation: "Klik om open te klappen"
|
||||||
|
|
||||||
|
# Contact information
|
||||||
|
- id: contactHeaderTopic
|
||||||
|
translation: "Wil je meer weten over dit onderwerp?"
|
||||||
|
- id: contactBody
|
||||||
|
translation: "Laat je gegevens achter en dan neem ik contact met je op."
|
||||||
|
- id: contactAction
|
||||||
|
translation: "Neem contact op"
|
||||||
|
66
layouts/_partials/assets/contact.html
Normal file
66
layouts/_partials/assets/contact.html
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
{{/*
|
||||||
|
Copyright © 2024 - 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 "structure" "contact" "args" . "group" "partial") }}
|
||||||
|
{{ if or $args.err $args.warnmsg }}
|
||||||
|
{{ partial (cond $args.err "utilities/LogErr.html" "utilities/LogWarn.html") (dict
|
||||||
|
"partial" "assets/contact.html"
|
||||||
|
"warnid" "warn-invalid-arguments"
|
||||||
|
"msg" "Invalid arguments"
|
||||||
|
"details" ($args.errmsg | append $args.warnmsg)
|
||||||
|
"file" page.File
|
||||||
|
)}}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{/* Main code */}}
|
||||||
|
{{ if not $args.err }}
|
||||||
|
{{ $contact := partial "utilities/GetContact" (dict
|
||||||
|
"contact" $args.contact
|
||||||
|
"data" $args.data
|
||||||
|
"language-tag" site.Language.Lang
|
||||||
|
) }}
|
||||||
|
|
||||||
|
{{ $illustration := dict }}
|
||||||
|
{{ if and $contact $contact.image }}
|
||||||
|
{{ $illustration = dict
|
||||||
|
"image" $contact.image
|
||||||
|
"ratio" "1x1"
|
||||||
|
"class" $args.class
|
||||||
|
"caption" $contact.name
|
||||||
|
"caption-url" $args.captionUrl
|
||||||
|
}}
|
||||||
|
{{ else if $args.illustration }}
|
||||||
|
{{ $illustration = $args.illustration }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ $heading := "" }}
|
||||||
|
{{ if and (not $args.heading.title) (not $args.heading.content) }}
|
||||||
|
{{ $heading = dict
|
||||||
|
"title" (T "contactHeaderTopic")
|
||||||
|
"content" (T "contactBody")
|
||||||
|
"align" "start"
|
||||||
|
"width" (cond $illustration.image 10 12)
|
||||||
|
}}
|
||||||
|
{{ else }}
|
||||||
|
{{ $heading = $args.heading }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ partial "assets/hero.html" (dict
|
||||||
|
"page" $args.page
|
||||||
|
"heading" (merge $heading (dict "size" 6))
|
||||||
|
"background" $args.background
|
||||||
|
"illustration" $illustration
|
||||||
|
"order" $args.order
|
||||||
|
"link-type" $args.linkType
|
||||||
|
"links" $args.links
|
||||||
|
"orientation" $args.orientation
|
||||||
|
"width" (or $args.width 12)
|
||||||
|
"use-title" true
|
||||||
|
"size" 6
|
||||||
|
)
|
||||||
|
}}
|
||||||
|
{{ end }}
|
@@ -77,10 +77,10 @@
|
|||||||
{{- with $wrapper }}<div class="{{ . }}">{{ end }}
|
{{- with $wrapper }}<div class="{{ . }}">{{ end }}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- if $data -}}
|
{{- if $data -}}
|
||||||
{{- if site.Params.debugging.includeSVGOrigin -}}
|
{{- if and site.Params.debugging.includeSVGOrigin $.url -}}
|
||||||
{{- printf "{{/* <svg src=\"%s\"> */}}" $.url | safeHTML -}}
|
{{- printf "{{/* <svg src=\"%s\"> */}}" $.url | safeHTML -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- $data = replace $data "<svg" (printf "<svg class=\"%s\"" $args.class) -}}
|
{{- with $args.class }}{{ $data = replace $data "<svg" (printf "<svg class=\"%s\"" .) }}{{ end -}}
|
||||||
{{- $data | safeHTML -}}
|
{{- $data | safeHTML -}}
|
||||||
{{- else if not $fileAnchor -}}
|
{{- else if not $fileAnchor -}}
|
||||||
<img class="img-fluid {{ $args.class }}"
|
<img class="img-fluid {{ $args.class }}"
|
||||||
|
@@ -67,7 +67,9 @@
|
|||||||
{{- if hasSuffix $src "svg" -}}
|
{{- if hasSuffix $src "svg" -}}
|
||||||
{{- $res = partial "utilities/GetResource.html" (dict "url" $src "page" $args.page) -}}
|
{{- $res = partial "utilities/GetResource.html" (dict "url" $src "page" $args.page) -}}
|
||||||
{{ if not $res }}
|
{{ if not $res }}
|
||||||
{{- $targetURL := partial "utilities/GetStaticURL" (dict "url" (strings.TrimPrefix "/static" $src)) -}}
|
{{- $targetURL := strings.TrimPrefix "/static" $src -}}
|
||||||
|
{{- $u := urls.Parse site.BaseURL }}
|
||||||
|
{{- $targetURL = strings.TrimPrefix $u.Path $src -}}
|
||||||
{{- if not (fileExists (path.Join "/static" $targetURL)) -}}
|
{{- if not (fileExists (path.Join "/static" $targetURL)) -}}
|
||||||
{{ warnf "Cannot find vector image resource: %q" $src -}}
|
{{ warnf "Cannot find vector image resource: %q" $src -}}
|
||||||
{{ else }}
|
{{ else }}
|
||||||
|
@@ -78,25 +78,42 @@
|
|||||||
|
|
||||||
{{ if $args.icon }}{{ $imageWrapper = $iconWrapper }}{{ end }}
|
{{ if $args.icon }}{{ $imageWrapper = $iconWrapper }}{{ end }}
|
||||||
|
|
||||||
{{ $illustration := partial $args.hook (dict
|
{{ $caption := "" }}
|
||||||
"page" $args.page
|
{{ if $args.illustration.caption }}
|
||||||
"image" $args.illustration.image
|
{{ if index $args.illustration "caption-url" }}
|
||||||
"icon" $args.illustration.icon
|
{{ $caption = partial "assets/link.html" (dict
|
||||||
"anchor" $args.illustration.anchor
|
"href" (index $args.illustration "caption-url")
|
||||||
"mode" $args.illustration.mode
|
"text" $args.illustration.caption
|
||||||
"ratio" $args.illustration.ratio
|
"page" $args.page
|
||||||
"sizes" $sizes
|
"class" "text-center"
|
||||||
"title" (T "heroImage")
|
) }}
|
||||||
"wrapper" $imageWrapper
|
{{ else }}
|
||||||
"class" "hero-image"
|
{{ $caption = $args.illustration.caption }}
|
||||||
"image-overlay" $args.imageOverlay
|
{{ end }}
|
||||||
"justify" $imageJustify
|
{{ $caption = printf `<div class="text-center">%s</div>` $caption }}
|
||||||
) }}
|
{{ end }}
|
||||||
|
|
||||||
|
{{ $illustration := "" }}
|
||||||
|
{{ if or $args.illustration.image $args.illustration.icon }}
|
||||||
|
{{ $illustration = partial $args.hook (dict
|
||||||
|
"page" $args.page
|
||||||
|
"image" $args.illustration.image
|
||||||
|
"icon" $args.illustration.icon
|
||||||
|
"anchor" $args.illustration.anchor
|
||||||
|
"mode" $args.illustration.mode
|
||||||
|
"ratio" $args.illustration.ratio
|
||||||
|
"sizes" $sizes
|
||||||
|
"title" (T "heroImage")
|
||||||
|
"wrapper" $imageWrapper
|
||||||
|
"class" (printf "hero-image %s" $args.illustration.class)
|
||||||
|
"image-overlay" $args.imageOverlay
|
||||||
|
"justify" $imageJustify
|
||||||
|
) }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
{{ $title := partial "assets/section-title.html" (dict
|
{{ $title := partial "assets/section-title.html" (dict
|
||||||
"heading" $heading
|
"heading" $heading
|
||||||
"use-title" $args.useTitle
|
"use-title" $args.useTitle
|
||||||
"size" $args.size
|
|
||||||
"links" $args.links
|
"links" $args.links
|
||||||
"link-type" (or $args.linkType $args.type)
|
"link-type" (or $args.linkType $args.type)
|
||||||
"class" "hero-title"
|
"class" "hero-title"
|
||||||
@@ -108,6 +125,7 @@
|
|||||||
{{/* Render stacked component */}}
|
{{/* Render stacked component */}}
|
||||||
|
|
||||||
{{ $illustration | safeHTML }}
|
{{ $illustration | safeHTML }}
|
||||||
|
{{ $caption | safeHTML }}
|
||||||
{{ $title | safeHTML }}
|
{{ $title | safeHTML }}
|
||||||
{{ else }}
|
{{ else }}
|
||||||
{{/* Render horizontal component */}}
|
{{/* Render horizontal component */}}
|
||||||
@@ -122,12 +140,15 @@
|
|||||||
{{ $imgWidth := sub 12 (or $args.heading.width 12) }}
|
{{ $imgWidth := sub 12 (or $args.heading.width 12) }}
|
||||||
{{ if lt $imgWidth 1 }}{{ $imgWidth = 1 }}{{ end }}
|
{{ if lt $imgWidth 1 }}{{ $imgWidth = 1 }}{{ end }}
|
||||||
|
|
||||||
<div class="col col-12 col-md-{{sub 12 $imgWidth }} {{ $order1 }} my-md-auto pt-{{ $padding.y }} pt-md-0 hero-content">
|
<div class="col col-12 {{ if $illustration }} col-md-{{sub 12 $imgWidth }}{{ end }} {{ $order1 }} my-md-auto pt-{{ $padding.y }} pt-md-0 hero-content">
|
||||||
{{ $title | safeHTML }}
|
{{ $title | safeHTML }}
|
||||||
</div>
|
</div>
|
||||||
|
{{ if $illustration }}
|
||||||
<div class="col col-8 col-md-{{ $imgWidth }} {{ $order2 }} m-auto my-md-auto align-self-end">
|
<div class="col col-8 col-md-{{ $imgWidth }} {{ $order2 }} m-auto my-md-auto align-self-end">
|
||||||
{{ $illustration | safeHTML }}
|
{{ $illustration | safeHTML }}
|
||||||
|
{{ $caption | safeHTML }}
|
||||||
</div>
|
</div>
|
||||||
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
@@ -72,7 +72,7 @@
|
|||||||
aria-labelledby="{{ $parentID }}-heading-{{ $args.id }}"
|
aria-labelledby="{{ $parentID }}-heading-{{ $args.id }}"
|
||||||
data-bs-parent="#accordion-{{ $parentID }}"
|
data-bs-parent="#accordion-{{ $parentID }}"
|
||||||
>
|
>
|
||||||
<div class="accordion-body">{{ $args.body | $args.page.RenderString | safeHTML }}</div>
|
<div class="accordion-body">{{ or $args.raw ($args.body | $args.page.RenderString) | safeHTML }}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{- else -}}
|
{{- else -}}
|
||||||
@@ -82,9 +82,9 @@
|
|||||||
role="tabpanel"
|
role="tabpanel"
|
||||||
aria-labelledby="{{ $parentID }}-btn-{{ $args.id }}"
|
aria-labelledby="{{ $parentID }}-btn-{{ $args.id }}"
|
||||||
tabindex="0"
|
tabindex="0"
|
||||||
data-has-content="{{ gt (len $args.body) 0 }}"
|
data-has-content="{{ or (gt (len (or $args.raw "")) 0) (gt (len $args.body) 0 ) }}"
|
||||||
>
|
>
|
||||||
{{ $args.body | $args.page.RenderString | safeHTML }}
|
{{ or $args.raw ($args.body | $args.page.RenderString) | safeHTML }}
|
||||||
</div>
|
</div>
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
@@ -6,6 +6,29 @@
|
|||||||
|
|
||||||
{{- $error := false -}}
|
{{- $error := false -}}
|
||||||
|
|
||||||
|
{{- define "_partials/inline/nav-dropdown.html" -}}
|
||||||
|
{{ $id := .id }}
|
||||||
|
{{ $class := .class }}
|
||||||
|
{{ $titles := .titles }}
|
||||||
|
{{ $wrap := .wrap }}
|
||||||
|
|
||||||
|
<div id="dropdown-{{ $id }}" class="dropdown panel-dropdown {{ $class }}">
|
||||||
|
<a class="link-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
|
||||||
|
{{ cond (gt (len $titles) 0) (index $titles 0) (T "sectionMenu") }}
|
||||||
|
</a>
|
||||||
|
<ul class="dropdown-menu">
|
||||||
|
{{- range $index, $item := $titles -}}
|
||||||
|
{{ $itemID := printf "%s-btn-%d" $id $index -}}
|
||||||
|
{{- $show := eq $index 0 -}}
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item {{ if not $wrap }} text-nowrap{{ end }}{{ if $show }} active{{ end }}"
|
||||||
|
data-link="#{{ $id }}-btn-{{ $index }}" type="button">{{ $item }}</a>
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
{{/* Initialize arguments */}}
|
{{/* Initialize arguments */}}
|
||||||
{{- $args := partial "utilities/InitArgs.html" (dict "structure" "nav" "args" . "group" "partial") -}}
|
{{- $args := partial "utilities/InitArgs.html" (dict "structure" "nav" "args" . "group" "partial") -}}
|
||||||
{{- if or $args.err $args.warnmsg -}}
|
{{- if or $args.err $args.warnmsg -}}
|
||||||
@@ -19,46 +42,38 @@
|
|||||||
{{- $error = $args.err -}}
|
{{- $error = $args.err -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/* Initialize global arguments */}}
|
||||||
|
{{- $padding := partial "utilities/GetPadding.html" -}}
|
||||||
|
{{- $breakpoint := partial "utilities/GetBreakpoint.html" -}}
|
||||||
|
|
||||||
{{/* Initialize local arguments */}}
|
{{/* Initialize local arguments */}}
|
||||||
{{- $page := $args.page -}}
|
{{- $page := $args.page -}}
|
||||||
{{- $id := $args.id | default "0" -}}
|
{{- $id := $args.id | default "0" -}}
|
||||||
{{- $type := or $args.tabType $args.type -}}
|
{{- $type := or $args.tabType $args.type -}}
|
||||||
{{- $wrap := or $args.wordWrap $args.wrap -}}
|
{{- $wrap := or $args.wordWrap $args.wrap -}}
|
||||||
{{- $breakpoint := partial "utilities/GetBreakpoint.html" -}}
|
{{- $titles := slice -}}
|
||||||
|
{{- range $args.list }}{{ $titles = $titles | append .Title }} {{ end -}}
|
||||||
|
{{- if reflect.IsSlice $args.navTitles }}{{ $titles = $titles | append $args.navTitles }}{{ end -}}
|
||||||
|
|
||||||
{{/* Main code */}}
|
{{/* Main code */}}
|
||||||
<div class="col col-{{ $breakpoint.current }}-{{ $args.width }} mx-auto">
|
<div class="col col-{{ $breakpoint.current }}-{{ $args.width }} mx-auto">
|
||||||
{{ if $args.vertical }}<div class="d-flex align-items-start">{{ end }}
|
{{ if $args.vertical }}<div class="d-flex align-items-start">{{ end }}
|
||||||
{{ if eq $type "callout" }}
|
{{ if $args.responsive }}
|
||||||
<div class="d-lg-none">
|
{{ partial "inline/nav-dropdown.html" (dict
|
||||||
<div id="accordion-{{ $id }}" class="accordion mb-3{{ with $args.class }} {{ . }}{{ end }} nav-callout">
|
"id" $id
|
||||||
{{- range $index, $item := $args.list -}}
|
"class" (printf "d-%s-none py-%d" $breakpoint.current $padding.y)
|
||||||
{{ partial "assets/nav-item.html" (dict
|
"titles" $titles
|
||||||
"page" $args.page
|
"wrap" $wrap
|
||||||
"id" $index
|
) }}
|
||||||
"parentID" $id
|
|
||||||
"fade" false
|
|
||||||
"header" $item.Title
|
|
||||||
"class" $args.class
|
|
||||||
"body" (or $item.Description $item.Content)
|
|
||||||
"show" false
|
|
||||||
"disabled" $item.disabled
|
|
||||||
"item_type" "accordion"
|
|
||||||
"illustration" (partial "utilities/GetIllustration.html" (dict "item" $item "size" "col-12"))
|
|
||||||
)
|
|
||||||
}}
|
|
||||||
{{ end -}}
|
|
||||||
{{- $args.navItems | safeHTML -}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="d-none d-lg-block">
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
|
<div class="{{ if $args.responsive }}d-none d-{{ $breakpoint.current }}-block{{ end }}">
|
||||||
<ul
|
<ul
|
||||||
class="nav{{ with $type }} nav-{{ . }}{{ end }}{{ with $args.class }} {{ . }}{{ end }}{{ if $args.vertical }} flex-column{{ end }}"
|
class="nav nav-panel{{ with $type }} nav-{{ . }}{{ end -}}{{ with $args.class }} {{ . }}{{ end }}{{ if $args.vertical }} flex-column{{ end }} tabs-dropdown"
|
||||||
id="nav-{{ $id }}"
|
id="nav-{{ $id }}"
|
||||||
role="tablist"{{ if $args.vertical }}
|
role="tablist"
|
||||||
aria-orientation="vertical"{{ end }}
|
{{ if $args.vertical }}aria-orientation="vertical"{{ end }}
|
||||||
|
data-companion="dropdown-{{ $id }}"
|
||||||
>
|
>
|
||||||
{{- $titles := slice -}}
|
{{- $titles := slice -}}
|
||||||
{{- range $args.list }}{{ $titles = $titles | append .Title }} {{ end -}}
|
{{- range $args.list }}{{ $titles = $titles | append .Title }} {{ end -}}
|
||||||
@@ -73,7 +88,7 @@
|
|||||||
class="nav-link{{ if not $wrap }} text-nowrap{{ end }}{{ if $show }} active{{ end }}{{ if $disabled }} disabled{{ end }}"
|
class="nav-link{{ if not $wrap }} text-nowrap{{ end }}{{ if $show }} active{{ end }}{{ if $disabled }} disabled{{ end }}"
|
||||||
id="{{ $itemID }}"
|
id="{{ $itemID }}"
|
||||||
data-bs-toggle="pill"
|
data-bs-toggle="pill"
|
||||||
data-bs-target="#{{ $id }}-{{ $index }}"
|
data-bs-target="#{{ $id }}-{{ $index }}"
|
||||||
type="button"
|
type="button"
|
||||||
role="tab"
|
role="tab"
|
||||||
aria-controls="{{ $id }}-{{ $index }}"
|
aria-controls="{{ $id }}-{{ $index }}"
|
||||||
@@ -84,49 +99,9 @@
|
|||||||
</li>
|
</li>
|
||||||
{{ end -}}
|
{{ end -}}
|
||||||
</ul>
|
</ul>
|
||||||
|
</div>
|
||||||
<div class="tab-content {{ if eq $type "tabs" }}border p-3{{ else if $args.vertical }}ms-3{{ else }}mt-3{{ end }}">
|
<div class="tab-content {{ if in (slice "tabs" "callout") $type }}border p-3 bg-body {{ else if $args.vertical }}ms-3{{ else }}mt-3{{ end }}">
|
||||||
{{- range $index, $item := $args.list -}}
|
|
||||||
{{- $header := $item.Title -}}
|
|
||||||
{-{ $body := $item.Content -}}
|
|
||||||
{{- $show := eq $index 0 -}}
|
|
||||||
{{- $thumbnail := "" -}}
|
|
||||||
{{- if reflect.IsMap $item.Params.Thumbnail -}}
|
|
||||||
{{- $thumbnail = $item.Params.Thumbnail.url -}}
|
|
||||||
{{- else -}}
|
|
||||||
{{- $thumbnail = $item.Params.Thumbnail -}}
|
|
||||||
{{- end -}}
|
|
||||||
<div
|
|
||||||
class="tab-pane{{ if $show }} active{{ end }}"
|
|
||||||
id="nav-{{ $id }}-{{ $index }}"
|
|
||||||
role="tabpanel"
|
|
||||||
aria-labelledby="{{ $id }}-btn-{{ $index }}"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
{{- if eq $args.pane "persona" -}}
|
|
||||||
{{- partial "assets/persona.html" (dict
|
|
||||||
"title" $item.Title
|
|
||||||
"class" $args.class
|
|
||||||
"color" $args.color
|
|
||||||
"href" $item.Params.href
|
|
||||||
"content" (partial "utilities/GetDescription.html" (dict "page" $item))
|
|
||||||
"thumbnail" $thumbnail
|
|
||||||
) -}}
|
|
||||||
{{- else -}}
|
|
||||||
{{- $illustration := (partial "utilities/GetIllustration.html" (dict "item" $item)) -}}
|
|
||||||
{{- if $illustration -}}
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-12 col-lg-10 order-1 order-lg-0">{{- (or $item.Description $item.Content) -}}</div>
|
|
||||||
<div class="col-12 col-lg-2 order-0 order-lg-1">{{ $illustration | safeHTML }}</div>
|
|
||||||
</div>
|
|
||||||
{{- else -}}
|
|
||||||
{{- (or $item.Description $item.Content) -}}
|
|
||||||
{{ end }}
|
|
||||||
{{- end -}}
|
|
||||||
</div>
|
|
||||||
{{ end }}
|
|
||||||
{{- $args.navItems | safeHTML -}}
|
{{- $args.navItems | safeHTML -}}
|
||||||
</div>
|
</div>
|
||||||
{{- if eq $type "callout" }}</div>{{ end -}}
|
|
||||||
{{- if $args.vertical }}</div>{{ end -}}
|
{{- if $args.vertical }}</div>{{ end -}}
|
||||||
</div>
|
</div>
|
||||||
|
@@ -80,7 +80,7 @@
|
|||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{/* Initialize global variables */}}
|
{{/* Initialize global variables */}}
|
||||||
{{- $padding := partial "utilities/GetPadding.html" -}}
|
{{- $padding := partial "utilities/GetPadding.html" (dict "section" "navigation") -}}
|
||||||
|
|
||||||
{{/* Initialize local arguments */}}
|
{{/* Initialize local arguments */}}
|
||||||
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
|
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
|
||||||
@@ -124,7 +124,8 @@
|
|||||||
|
|
||||||
{{ $logo := "" }}
|
{{ $logo := "" }}
|
||||||
{{ with $args.logo | default site.Params.navigation.logo }}
|
{{ with $args.logo | default site.Params.navigation.logo }}
|
||||||
{{ $logo = partial "assets/image.html" (dict "src" . "loading" "eager" "title" $title "image-height" 30) }}
|
{{ $height := index site.Params.navigation "logo-height" | default 30 }}
|
||||||
|
{{ $logo = partial "assets/image.html" (dict "src" . "loading" "eager" "title" $title "image-height" $height) }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{- $pre := $args.pre -}}
|
{{- $pre := $args.pre -}}
|
||||||
|
@@ -19,7 +19,7 @@
|
|||||||
{{- $padding := partial "utilities/GetPadding.html" -}}
|
{{- $padding := partial "utilities/GetPadding.html" -}}
|
||||||
|
|
||||||
{{/* Initialize local arguments */}}
|
{{/* Initialize local arguments */}}
|
||||||
{{- $size := (or $args.size site.Params.modules.bookshop.title.size) | default 4 -}}
|
{{- $size := (or $args.heading.size site.Params.modules.bookshop.title.size) | default 4 -}}
|
||||||
{{- $arrangement := (or $args.arrangement site.Params.modules.bookshop.title.arrangement) | default "above" -}}
|
{{- $arrangement := (or $args.arrangement site.Params.modules.bookshop.title.arrangement) | default "above" -}}
|
||||||
{{- $headingStyle := (or $args.headingStyle site.Params.modules.bookshop.title.headingStyle) | default "display" -}}
|
{{- $headingStyle := (or $args.headingStyle site.Params.modules.bookshop.title.headingStyle) | default "display" -}}
|
||||||
{{- $contentStyle := (or $args.contentStyle site.Params.modules.bookshop.title.contentStyle) | default "lead text-muted" -}}
|
{{- $contentStyle := (or $args.contentStyle site.Params.modules.bookshop.title.contentStyle) | default "lead text-muted" -}}
|
||||||
@@ -27,8 +27,8 @@
|
|||||||
{{- $title := $args.heading.title }}
|
{{- $title := $args.heading.title }}
|
||||||
{{- $width := $args.heading.width | default 12 -}}
|
{{- $width := $args.heading.width | default 12 -}}
|
||||||
{{- $width = cond (lt $width 12) (printf "col-12 col-%s-%d" $breakpoint.current $width) "" }}
|
{{- $width = cond (lt $width 12) (printf "col-12 col-%s-%d" $breakpoint.current $width) "" }}
|
||||||
{{ if and (not $preheading) $args.useSection }}{{ $preheading = page.CurrentSection.Name }}{{ end }}
|
{{- if and (not $preheading) $args.useSection }}{{ $preheading = page.CurrentSection.Name }}{{ end -}}
|
||||||
{{ $justify := cond (eq $args.justify "start") "" (cond (eq $args.justify "end") "me-0" "mx-auto") }}
|
{{- $justify := cond (eq $args.justify "start") "" (cond (eq $args.justify "end") "me-0" "mx-auto") -}}
|
||||||
|
|
||||||
{{ if site.Params.main.titleCase }}
|
{{ if site.Params.main.titleCase }}
|
||||||
{{ $preheading = title $preheading }}
|
{{ $preheading = title $preheading }}
|
||||||
|
@@ -7,7 +7,7 @@
|
|||||||
{{ $error := false }}
|
{{ $error := false }}
|
||||||
|
|
||||||
{{/* Initialize arguments */}}
|
{{/* Initialize arguments */}}
|
||||||
{{ $args := partial "utilities/InitArgs.html" (dict "structure" "toc" "args" . "group" "partial")}}
|
{{ $args := partial "utilities/InitArgs.html" (dict "structure" "toc" "args" . "group" "partial") }}
|
||||||
{{ 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" "assets/toc.html"
|
"partial" "assets/toc.html"
|
||||||
@@ -31,8 +31,8 @@
|
|||||||
{{- if and (not $error) (ge (len .) $minNumHeadings) }}
|
{{- if and (not $error) (ge (len .) $minNumHeadings) }}
|
||||||
<div class="d-grid gap-2 mx-auto">
|
<div class="d-grid gap-2 mx-auto">
|
||||||
{{ partial "assets/button.html" (dict
|
{{ partial "assets/button.html" (dict
|
||||||
"title" (T "toc")
|
"title" (T "toc")
|
||||||
"color" "secondary"
|
"color" "secondary"
|
||||||
"outline" "true"
|
"outline" "true"
|
||||||
"class" "toc-button"
|
"class" "toc-button"
|
||||||
"icon" "fas sort"
|
"icon" "fas sort"
|
||||||
|
@@ -17,7 +17,9 @@
|
|||||||
|
|
||||||
{{/* Insert a default hero and article block (for list pages) when no content blocks are available */}}
|
{{/* Insert a default hero and article block (for list pages) when no content blocks are available */}}
|
||||||
{{ if and .blocks (gt (len .blocks) 0 )}}
|
{{ if and .blocks (gt (len .blocks) 0 )}}
|
||||||
{{ $blocks = .blocks }}
|
{{ range $i, $b := .blocks }}
|
||||||
|
{{ $blocks = $blocks | append (merge (dict "_ordinal" $i) $b) }}
|
||||||
|
{{ end }}
|
||||||
{{ else if $default }}
|
{{ else if $default }}
|
||||||
{{ $err := (hasPrefix $page.LinkTitle "404") }}
|
{{ $err := (hasPrefix $page.LinkTitle "404") }}
|
||||||
{{ $pageTitle := $page.LinkTitle }}
|
{{ $pageTitle := $page.LinkTitle }}
|
||||||
|
40
netlify.toml
40
netlify.toml
@@ -4,12 +4,12 @@
|
|||||||
publish = 'exampleSite/public'
|
publish = 'exampleSite/public'
|
||||||
|
|
||||||
[build.environment]
|
[build.environment]
|
||||||
DART_SASS_VERSION = '1.78.0'
|
DART_SASS_VERSION = '1.89.2'
|
||||||
HUGO_ENABLEGITINFO = 'true'
|
HUGO_ENABLEGITINFO = 'true'
|
||||||
HUGO_ENV = 'production'
|
HUGO_ENV = 'production'
|
||||||
HUGO_VERSION = '0.134.1'
|
HUGO_VERSION = '0.147.9'
|
||||||
NODE_VERSION = '20.17.0'
|
NODE_VERSION = '22.13.0'
|
||||||
NPM_VERSION = '10.8.2'
|
NPM_VERSION = '10.9.2'
|
||||||
|
|
||||||
[context]
|
[context]
|
||||||
[context.branch-deploy]
|
[context.branch-deploy]
|
||||||
@@ -39,17 +39,17 @@
|
|||||||
Access-Control-Allow-Origin = '*'
|
Access-Control-Allow-Origin = '*'
|
||||||
Content-Security-Policy = """
|
Content-Security-Policy = """
|
||||||
base-uri 'self'; \
|
base-uri 'self'; \
|
||||||
connect-src 'self' *.cookieyes.com cdn-cookieyes.com *.google-analytics.com *.analytics.google.com *.googletagmanager.com; \
|
connect-src 'self' *.analytics.google.com *.google.com *.google-analytics.com *.googletagmanager.com; \
|
||||||
default-src 'none'; \
|
default-src 'none'; \
|
||||||
font-src 'self' fonts.gstatic.com; \
|
font-src 'self' fonts.gstatic.com data:; \
|
||||||
form-action 'self'; \
|
form-action 'self'; \
|
||||||
frame-src player.cloudinary.com www.youtube-nocookie.com www.youtube.com player.vimeo.com; \
|
frame-src *.googletagmanager.com player.cloudinary.com www.youtube-nocookie.com www.youtube.com player.vimeo.com; \
|
||||||
img-src 'self' cdn-cookieyes.com *.google-analytics.com *.googletagmanager.com data: *.imgix.net *.imagekit.io *.cloudinary.com i.ytimg.com tile.openstreetmap.org i.vimeocdn.com; \
|
img-src 'self' *.google-analytics.com *.googletagmanager.com googletagmanager.com ssl.gstatic.com www.gstatic.com data: *.imgix.net *.imagekit.io *.cloudinary.com i.ytimg.com tile.openstreetmap.org i.vimeocdn.com; \
|
||||||
manifest-src 'self'; \
|
manifest-src 'self'; \
|
||||||
media-src 'self'; \
|
media-src 'self'; \
|
||||||
object-src 'none'; \
|
object-src 'none'; \
|
||||||
script-src 'self' cdn-cookieyes.com *.google-analytics.com *.googletagmanager.com player.vimeo.com; \
|
script-src 'self' *.google-analytics.com *.googletagmanager.com *.analytics.google.com googletagmanager.com tagmanager.google.com player.vimeo.com; \
|
||||||
style-src 'self' 'unsafe-inline' www.youtube.com; \
|
style-src 'self' googletagmanager.com tagmanager.google.com fonts.googleapis.com www.youtube.com; \
|
||||||
"""
|
"""
|
||||||
Permissions-Policy = 'geolocation=(), midi=(), sync-xhr=(), microphone=(), camera=(), magnetometer=(), gyroscope=(), fullscreen=(), payment=() '
|
Permissions-Policy = 'geolocation=(), midi=(), sync-xhr=(), microphone=(), camera=(), magnetometer=(), gyroscope=(), fullscreen=(), payment=() '
|
||||||
Referrer-Policy = 'strict-origin'
|
Referrer-Policy = 'strict-origin'
|
||||||
@@ -59,23 +59,3 @@
|
|||||||
X-XSS-Protection = '1; mode=block'
|
X-XSS-Protection = '1; mode=block'
|
||||||
cache-control = 'max-age=0, no-cache, no-store, must-revalidate '
|
cache-control = 'max-age=0, no-cache, no-store, must-revalidate '
|
||||||
|
|
||||||
[[redirects]]
|
|
||||||
from = '/fr/*'
|
|
||||||
status = 404
|
|
||||||
to = '/fr/404.html'
|
|
||||||
|
|
||||||
[[redirects]]
|
|
||||||
from = '/nl/*'
|
|
||||||
status = 404
|
|
||||||
to = '/nl/404.html'
|
|
||||||
|
|
||||||
[[redirects]]
|
|
||||||
from = '/en/*'
|
|
||||||
status = 404
|
|
||||||
to = '/en/404.html'
|
|
||||||
|
|
||||||
[[redirects]]
|
|
||||||
from = '/*'
|
|
||||||
status = 404
|
|
||||||
to = '/en/404.html'
|
|
||||||
|
|
||||||
|
9444
package-lock.json
generated
9444
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
50
package.json
50
package.json
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@gethinode/hinode",
|
"name": "@gethinode/hinode",
|
||||||
"version": "1.0.0",
|
"version": "0.0.0-semantically-released",
|
||||||
"description": "Hinode is a clean documentation and blog theme for Hugo, an open-source static site generator",
|
"description": "Hinode is a clean documentation and blog theme for Hugo, an open-source static site generator",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"hugo",
|
"hugo",
|
||||||
@@ -12,6 +12,7 @@
|
|||||||
"documentation"
|
"documentation"
|
||||||
],
|
],
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
|
"private": true,
|
||||||
"publishConfig": {
|
"publishConfig": {
|
||||||
"access": "public",
|
"access": "public",
|
||||||
"registry": "https://registry.npmjs.org/"
|
"registry": "https://registry.npmjs.org/"
|
||||||
@@ -28,7 +29,7 @@
|
|||||||
"build:example": "npm run -s prebuild && hugo --gc --minify -s exampleSite",
|
"build:example": "npm run -s prebuild && hugo --gc --minify -s exampleSite",
|
||||||
"build:example:ci": "npm run -s prebuild && hugo --gc --minify -s exampleSite -e ci",
|
"build:example:ci": "npm run -s prebuild && hugo --gc --minify -s exampleSite -e ci",
|
||||||
"build:debug": "hugo -e debug --debug",
|
"build:debug": "hugo -e debug --debug",
|
||||||
"build:headers": "hugo --renderSegments headers -d prebuild && cpy prebuild/server.toml config/_default/ --flat",
|
"build:headers": "hugo --renderSegments headers -d prebuild-headers -e headers && cpy prebuild-headers/netlify.toml ./ --flat && cpy prebuild-headers/server.toml config/_default/ --flat",
|
||||||
"build:example:headers": "hugo -s exampleSite --renderSegments headers -d prebuild && cpy exampleSite/prebuild/netlify.toml ./ --flat && cpy exampleSite/prebuild/server.toml exampleSite/config/_default/ --flat",
|
"build:example:headers": "hugo -s exampleSite --renderSegments headers -d prebuild && cpy exampleSite/prebuild/netlify.toml ./ --flat && cpy exampleSite/prebuild/server.toml exampleSite/config/_default/ --flat",
|
||||||
"build:preview": "npm run build -D -F",
|
"build:preview": "npm run build -D -F",
|
||||||
"clean:public": "rimraf public exampleSite/public",
|
"clean:public": "rimraf public exampleSite/public",
|
||||||
@@ -44,6 +45,7 @@
|
|||||||
"test": "npm run -s lint",
|
"test": "npm run -s lint",
|
||||||
"env": "hugo env",
|
"env": "hugo env",
|
||||||
"precheck": "npm version",
|
"precheck": "npm version",
|
||||||
|
"prepare": "node .husky/install.mjs",
|
||||||
"check": "hugo version",
|
"check": "hugo version",
|
||||||
"create:syntax": "npm-run-all update:syntax:**",
|
"create:syntax": "npm-run-all update:syntax:**",
|
||||||
"update:syntax:light1": "hugo gen chromastyles --style=github > ./assets/scss/components/_syntax-light.scss",
|
"update:syntax:light1": "hugo gen chromastyles --style=github > ./assets/scss/components/_syntax-light.scss",
|
||||||
@@ -77,18 +79,26 @@
|
|||||||
"purgecss-whitelister": "^2.4.0"
|
"purgecss-whitelister": "^2.4.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@commitlint/cli": "^19.8.1",
|
||||||
|
"@commitlint/config-conventional": "^19.8.1",
|
||||||
"@gethinode/netlify-plugin-dartsass": "^0.3.0",
|
"@gethinode/netlify-plugin-dartsass": "^0.3.0",
|
||||||
|
"@semantic-release/exec": "^7.1.0",
|
||||||
|
"@semantic-release/git": "^10.0.1",
|
||||||
|
"commitizen": "^4.3.1",
|
||||||
"cpy-cli": "^5.0.0",
|
"cpy-cli": "^5.0.0",
|
||||||
"eslint": "^9.30.0",
|
"cz-conventional-changelog": "^3.3.0",
|
||||||
|
"eslint": "^9.30.1",
|
||||||
|
"husky": "^9.1.7",
|
||||||
"markdownlint-cli2": "^0.18.1",
|
"markdownlint-cli2": "^0.18.1",
|
||||||
"neostandard": "^0.12.1",
|
"neostandard": "^0.12.2",
|
||||||
"netlify-plugin-hugo-cache-resources": "^0.2.1",
|
"netlify-plugin-hugo-cache-resources": "^0.2.1",
|
||||||
"npm-run-all": "^4.1.5",
|
"npm-run-all": "^4.1.5",
|
||||||
"postcss-cli": "^11.0.1",
|
"postcss-cli": "^11.0.1",
|
||||||
"replace-in-files-cli": "^3.0.0",
|
"replace-in-files-cli": "^3.0.0",
|
||||||
"rimraf": "^6.0.1",
|
"rimraf": "^6.0.1",
|
||||||
|
"semantic-release": "^24.2.6",
|
||||||
"shx": "^0.4.0",
|
"shx": "^0.4.0",
|
||||||
"stylelint": "^16.21.0",
|
"stylelint": "^16.21.1",
|
||||||
"stylelint-config-standard-scss": "^15.0.1"
|
"stylelint-config-standard-scss": "^15.0.1"
|
||||||
},
|
},
|
||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
@@ -98,5 +108,35 @@
|
|||||||
},
|
},
|
||||||
"hugo-bin": {
|
"hugo-bin": {
|
||||||
"buildTags": "extended"
|
"buildTags": "extended"
|
||||||
|
},
|
||||||
|
"release": {
|
||||||
|
"branches": "main",
|
||||||
|
"plugins": [
|
||||||
|
"@semantic-release/commit-analyzer",
|
||||||
|
"@semantic-release/release-notes-generator",
|
||||||
|
"@semantic-release/github",
|
||||||
|
[
|
||||||
|
"@semantic-release/exec",
|
||||||
|
{
|
||||||
|
"prepare": "npm install"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"@semantic-release/git",
|
||||||
|
{
|
||||||
|
"assets": [
|
||||||
|
"dist",
|
||||||
|
"package.json",
|
||||||
|
"package-lock.json"
|
||||||
|
],
|
||||||
|
"message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"config": {
|
||||||
|
"commitizen": {
|
||||||
|
"path": "./node_modules/cz-conventional-changelog"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user