From 51bd3d10190e8ac6512e1e2254d0e826ce4b9dfe Mon Sep 17 00:00:00 2001 From: Mark Dumay <61946753+markdumay@users.noreply.github.com> Date: Mon, 26 Jan 2026 13:16:31 +0100 Subject: [PATCH 1/4] fix: remove workspace files from git tracking and fix configuration Hinode v2.0.0-beta.42 introduced Go workspace support for local component-library development, but workspace files were incorrectly committed to git. Changes: - Add go.work and *.work.sum patterns to .gitignore to prevent tracking - Remove workspace files (hinode.work, exampleSite/hinode.work, etc.) from git - Align component-library Hugo minimum version to 0.146.0 (matches main theme) - Regenerate exampleSite workspace with current dependency versions Benefits: - Workspace files are now treated as local development artifacts (Go best practices) - Prevents version conflicts between local builds and CI/CD - Ensures consistency across different developer environments - Downstream projects won't inherit workspace configuration Co-Authored-By: Claude Sonnet 4.5 --- .gitignore | 9 ++++++++- component-library/config.toml | 2 +- exampleSite/hinode.work | 5 ----- exampleSite/hinode.work.sum | 15 --------------- hinode.work | 4 ---- 5 files changed, 9 insertions(+), 26 deletions(-) delete mode 100644 exampleSite/hinode.work delete mode 100644 exampleSite/hinode.work.sum delete mode 100644 hinode.work diff --git a/.gitignore b/.gitignore index 63d00217..54a860f4 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,11 @@ resources/ node_modules/ .DS_store -.hugo_build.lock \ No newline at end of file +.hugo_build.lock + +# Go workspace files (local development) +go.work +go.work.sum +**/hinode.work +**/hinode.work.sum +**/go.work.sum \ No newline at end of file diff --git a/component-library/config.toml b/component-library/config.toml index 5412680d..ae5b84c8 100644 --- a/component-library/config.toml +++ b/component-library/config.toml @@ -1,6 +1,6 @@ [module] hugoVersion.extended = true - hugoVersion.min = '0.147.6' + hugoVersion.min = '0.146.0' # expose bookshop partials to Hugo [[module.mounts]] source = '.' diff --git a/exampleSite/hinode.work b/exampleSite/hinode.work deleted file mode 100644 index 82e418c8..00000000 --- a/exampleSite/hinode.work +++ /dev/null @@ -1,5 +0,0 @@ -go 1.19 - -use . -use ../ -use ../component-library diff --git a/exampleSite/hinode.work.sum b/exampleSite/hinode.work.sum deleted file mode 100644 index 80d83105..00000000 --- a/exampleSite/hinode.work.sum +++ /dev/null @@ -1,15 +0,0 @@ -github.com/gethinode/hinode v0.22.5 h1:zpjSDgWQVbq4BjPduxwexQB18gawFeinzPkaRRTs2Tg= -github.com/gethinode/hinode v0.22.5/go.mod h1:hsskrlBRnTbpCjrDtGbK8C1VYGML7ezHtCDGDiYL2mQ= -github.com/gethinode/mod-cookieyes v1.0.2 h1:WL9sjpYKjkV+jRKIrm6H82UpthQjFksvKGptW6HD/QU= -github.com/gethinode/mod-cookieyes v1.0.2/go.mod h1:VrBUKm5apop6KIb+R8eRqvlf3AAPnv5aMajL0RorIjY= -github.com/gethinode/mod-cookieyes/v2 v2.0.3 h1:o5PAAOjx8baRcSkhTAQuZ+hX9cK8oWjeC3sYxt1DT2c= -github.com/gethinode/mod-cookieyes/v2 v2.0.4 h1:QgYSD3S23351e7xEeQb+Mon+e+I6RbnnrTyvpxBST1A= -github.com/gethinode/mod-cookieyes/v2 v2.0.4/go.mod h1:tULb7D7CoTycGUyL7ryqHJKaX11XuL2SN+XwP7/DI0Y= -github.com/gethinode/mod-cookieyes/v2 v2.1.2 h1:hzGCbRbpNAVkLr+jFWpAQaXHG0lgK+KgIpaZYsI1J+U= -github.com/gethinode/mod-cookieyes/v2 v2.1.2/go.mod h1:tULb7D7CoTycGUyL7ryqHJKaX11XuL2SN+XwP7/DI0Y= -github.com/gethinode/mod-fontawesome/v2 v2.1.2 h1:v1aHhbLLwe/05zRHnx9qGqh6b3toDzcLzuv61rWAoGU= -github.com/gethinode/mod-fontawesome/v2 v2.1.2/go.mod h1:zukv88wXqquEvTJJ9mWWk8Ia+9INnA41wYqusf2RcHA= -github.com/gethinode/mod-utils/v4 v4.4.0 h1:IhhJDLqXCdYvrjM6kUR10wlg0kyZrY94f7EuGMj8NN0= -github.com/gethinode/mod-utils/v4 v4.4.0/go.mod h1:bYmvRdAo4ICy5MpSGafDvO4p5bTDpsDKFCPL3bH0mN4= -github.com/gethinode/mod-utils/v4 v4.12.0 h1:5sSfYIxZCeQbXLoZdS//rl6thwLwtXuvM0ujaWKyPmc= -github.com/gethinode/mod-utils/v4 v4.12.0/go.mod h1:bYmvRdAo4ICy5MpSGafDvO4p5bTDpsDKFCPL3bH0mN4= diff --git a/hinode.work b/hinode.work deleted file mode 100644 index 4acbda9c..00000000 --- a/hinode.work +++ /dev/null @@ -1,4 +0,0 @@ -go 1.19 - -use . -use ./component-library From c5b6d81afc687437dd7d98ae87464fb573898b5c Mon Sep 17 00:00:00 2001 From: Mark Dumay <61946753+markdumay@users.noreply.github.com> Date: Mon, 26 Jan 2026 13:30:32 +0100 Subject: [PATCH 2/4] fix: remove workspace from main theme config Workspace configuration should only be in exampleSite for theme development, not in the main config. This prevents downstream projects from inheriting the workspace requirement when using Hinode as a module. Downstream projects like Squadra can define their own workspace setup independently without conflicts from the theme's configuration. Co-Authored-By: Claude Sonnet 4.5 --- config/_default/hugo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/_default/hugo.toml b/config/_default/hugo.toml index 38974d6b..4274792e 100644 --- a/config/_default/hugo.toml +++ b/config/_default/hugo.toml @@ -114,7 +114,7 @@ home = ["HTML", "RSS", "REDIR", "netlify", "server"] keepWhitespace = true [module] - workspace = "hinode.work" + # Workspace is only configured in exampleSite and downstream projects replacements = "github.com/gethinode/hinode/component-library -> ../component-library" [module.hugoVersion] extended = true From f7605ac2ad4293c4d28d5e8b9cffefc13bfe6854 Mon Sep 17 00:00:00 2001 From: Mark Dumay <61946753+markdumay@users.noreply.github.com> Date: Mon, 26 Jan 2026 14:17:25 +0100 Subject: [PATCH 3/4] feat!: integrate component-library into theme layouts Move component-library from separate Hugo module to integrated layouts. This eliminates workspace/replacement complexity and simplifies configuration. BREAKING CHANGE: component-library is no longer a separate module. It is now integrated into layouts/component-library. Downstream projects will need to adjust their configuration accordingly. Co-Authored-By: Claude Sonnet 4.5 --- layouts/component-library/bookshop.scss | 18 ++ .../components/about/about.bookshop.yml | 44 +++++ .../components/about/about.hugo.html | 41 ++++ .../components/about/about.scss | 3 + .../components/approach/approach.bookshop.yml | 48 +++++ .../components/approach/approach.hugo.html | 101 ++++++++++ .../components/approach/approach.scss | 0 .../components/articles/articles.bookshop.yml | 61 ++++++ .../components/articles/articles.hugo.html | 147 ++++++++++++++ .../components/articles/articles.scss | 8 + .../components/cards/cards.bookshop.yml | 41 ++++ .../components/cards/cards.hugo.html | 84 ++++++++ .../components/cards/cards.scss | 0 .../components/cta/cta.bookshop.yml | 45 +++++ .../components/cta/cta.hugo.html | 52 +++++ .../component-library/components/cta/cta.scss | 12 ++ .../components/faq/faq.bookshop.yml | 31 +++ .../components/faq/faq.hugo.html | 87 ++++++++ .../component-library/components/faq/faq.scss | 44 +++++ .../components/featured/featured.bookshop.yml | 44 +++++ .../components/featured/featured.hugo.html | 40 ++++ .../components/featured/featured.scss | 0 .../components/hero/hero.bookshop.yml | 43 ++++ .../components/hero/hero.hugo.html | 41 ++++ .../components/hero/hero.scss | 18 ++ .../components/list/list.bookshop.yml | 43 ++++ .../components/list/list.hugo.html | 114 +++++++++++ .../components/list/list.scss | 29 +++ .../components/menu/menu.bookshop.yml | 32 +++ .../components/menu/menu.hugo.html | 48 +++++ .../components/menu/menu.scss | 44 +++++ .../components/panels/panels.bookshop.yml | 38 ++++ .../components/panels/panels.hugo.html | 93 +++++++++ .../components/panels/panels.scss | 13 ++ .../components/releases/releases.bookshop.yml | 29 +++ .../components/releases/releases.hugo.html | 37 ++++ .../components/releases/releases.scss | 0 .../separator/separator.bookshop.yml | 10 + .../components/separator/separator.hugo.html | 7 + .../components/separator/separator.scss | 0 .../components/team/team.bookshop.yml | 50 +++++ .../components/team/team.hugo.html | 121 ++++++++++++ .../components/team/team.scss | 0 .../testimonials/testimonials.bookshop.yml | 31 +++ .../testimonials/testimonials.hugo.html | 138 +++++++++++++ .../components/testimonials/testimonials.scss | 18 ++ .../video-message/video-message.bookshop.yml | 57 ++++++ .../video-message/video-message.hugo.html | 185 ++++++++++++++++++ .../video-message/video-message.scss | 60 ++++++ layouts/component-library/config.toml | 25 +++ layouts/component-library/go.mod | 3 + .../shared/hugo/page.hugo.html | 3 + .../shared/styles/global.scss | 23 +++ layouts/component-library/theme.scss | 2 + 54 files changed, 2306 insertions(+) create mode 100644 layouts/component-library/bookshop.scss create mode 100644 layouts/component-library/components/about/about.bookshop.yml create mode 100644 layouts/component-library/components/about/about.hugo.html create mode 100644 layouts/component-library/components/about/about.scss create mode 100644 layouts/component-library/components/approach/approach.bookshop.yml create mode 100644 layouts/component-library/components/approach/approach.hugo.html create mode 100644 layouts/component-library/components/approach/approach.scss create mode 100644 layouts/component-library/components/articles/articles.bookshop.yml create mode 100644 layouts/component-library/components/articles/articles.hugo.html create mode 100644 layouts/component-library/components/articles/articles.scss create mode 100644 layouts/component-library/components/cards/cards.bookshop.yml create mode 100644 layouts/component-library/components/cards/cards.hugo.html create mode 100644 layouts/component-library/components/cards/cards.scss create mode 100644 layouts/component-library/components/cta/cta.bookshop.yml create mode 100644 layouts/component-library/components/cta/cta.hugo.html create mode 100644 layouts/component-library/components/cta/cta.scss create mode 100644 layouts/component-library/components/faq/faq.bookshop.yml create mode 100644 layouts/component-library/components/faq/faq.hugo.html create mode 100644 layouts/component-library/components/faq/faq.scss create mode 100644 layouts/component-library/components/featured/featured.bookshop.yml create mode 100644 layouts/component-library/components/featured/featured.hugo.html create mode 100644 layouts/component-library/components/featured/featured.scss create mode 100644 layouts/component-library/components/hero/hero.bookshop.yml create mode 100644 layouts/component-library/components/hero/hero.hugo.html create mode 100644 layouts/component-library/components/hero/hero.scss create mode 100644 layouts/component-library/components/list/list.bookshop.yml create mode 100644 layouts/component-library/components/list/list.hugo.html create mode 100644 layouts/component-library/components/list/list.scss create mode 100644 layouts/component-library/components/menu/menu.bookshop.yml create mode 100644 layouts/component-library/components/menu/menu.hugo.html create mode 100644 layouts/component-library/components/menu/menu.scss create mode 100644 layouts/component-library/components/panels/panels.bookshop.yml create mode 100644 layouts/component-library/components/panels/panels.hugo.html create mode 100644 layouts/component-library/components/panels/panels.scss create mode 100644 layouts/component-library/components/releases/releases.bookshop.yml create mode 100644 layouts/component-library/components/releases/releases.hugo.html create mode 100644 layouts/component-library/components/releases/releases.scss create mode 100644 layouts/component-library/components/separator/separator.bookshop.yml create mode 100644 layouts/component-library/components/separator/separator.hugo.html create mode 100644 layouts/component-library/components/separator/separator.scss create mode 100644 layouts/component-library/components/team/team.bookshop.yml create mode 100644 layouts/component-library/components/team/team.hugo.html create mode 100644 layouts/component-library/components/team/team.scss create mode 100644 layouts/component-library/components/testimonials/testimonials.bookshop.yml create mode 100644 layouts/component-library/components/testimonials/testimonials.hugo.html create mode 100644 layouts/component-library/components/testimonials/testimonials.scss create mode 100644 layouts/component-library/components/video-message/video-message.bookshop.yml create mode 100644 layouts/component-library/components/video-message/video-message.hugo.html create mode 100644 layouts/component-library/components/video-message/video-message.scss create mode 100644 layouts/component-library/config.toml create mode 100644 layouts/component-library/go.mod create mode 100644 layouts/component-library/shared/hugo/page.hugo.html create mode 100644 layouts/component-library/shared/styles/global.scss create mode 100644 layouts/component-library/theme.scss diff --git a/layouts/component-library/bookshop.scss b/layouts/component-library/bookshop.scss new file mode 100644 index 00000000..32d63ad8 --- /dev/null +++ b/layouts/component-library/bookshop.scss @@ -0,0 +1,18 @@ +@import "modules/bookshop/shared/styles/global"; +@import "modules/bookshop/components/about/about"; +@import "modules/bookshop/components/approach/approach"; +@import "modules/bookshop/components/articles/articles"; +@import "modules/bookshop/components/cards/cards"; +@import "modules/bookshop/components/cta/cta"; +@import "modules/bookshop/components/faq/faq"; +@import "modules/bookshop/components/featured/featured"; +@import "modules/bookshop/components/hero/hero"; +@import "modules/bookshop/components/list/list"; +@import "modules/bookshop/components/menu/menu"; +@import "modules/bookshop/components/panels/panels"; +@import "modules/bookshop/components/releases/releases"; +@import "modules/bookshop/components/separator/separator"; +@import "modules/bookshop/components/team/team"; +@import "modules/bookshop/components/testimonials/testimonials"; +@import "modules/bookshop/components/video-message/video-message"; +@import "modules/bookshop/theme"; diff --git a/layouts/component-library/components/about/about.bookshop.yml b/layouts/component-library/components/about/about.bookshop.yml new file mode 100644 index 00000000..55114741 --- /dev/null +++ b/layouts/component-library/components/about/about.bookshop.yml @@ -0,0 +1,44 @@ +# Metadata about this component, to be used in the CMS +spec: + structures: + - content_blocks + label: About + description: About section + icon: fingerprint + tags: [] + +# Defines the structure of this component, as well as the default values +blueprint: + heading: + preheading: + title: + content: + align: + arrangement: + width: + size: + background: + backdrop: + color: + subtle: + illustration: + image: + icon: + ratio: + class: + anchor: + mode: + width: + order: + width: + justify: + link_type: + fluid: + theme: + cover: + links: + - + title: + url: + icon: + force: diff --git a/layouts/component-library/components/about/about.hugo.html b/layouts/component-library/components/about/about.hugo.html new file mode 100644 index 00000000..2ba8794a --- /dev/null +++ b/layouts/component-library/components/about/about.hugo.html @@ -0,0 +1,41 @@ +{{/* + Copyright © 2025 - 2026 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. + + Note: To support live editing, bookshop components should use a clear path to the provided arguments. + Therefore, we cannot use the InitArgs partial at this point, and we need to access each argument + directly. See the docs for more background: + https://github.com/CloudCannon/bookshop/blob/main/guides/hugo.adoc#passing-data-to-bookshop-components +*/}} + +{{ $raw := partial "assets/hero.html" (dict + "page" page + "heading" (merge (dict "width" 8) .heading) + "illustration" (merge (dict "ratio" "auto") .illustration) + "order" .order + "link-type" (or .link_type (index . "link-type")) + "links" .links + "orientation" "horizontal" + "width" (.width | default 8) + ) +}} + + +{{ if $raw }} + {{ partial "utilities/section.html" (dict + "component-name" "about" + "id" .id + "raw" $raw + "background" .background + "width" 12 + "justify" .justify + "wrapper" .wrapper + "fluid" .fluid + "theme" .theme + "cover" .cover + "overlay-mode" (or .overlay_mode (index . "overlay-mode")) + "section-class" (or .section_class (index . "section-class")) + "bg-class" (or .bg_class (index . "bg-class")) + )}} +{{ end }} diff --git a/layouts/component-library/components/about/about.scss b/layouts/component-library/components/about/about.scss new file mode 100644 index 00000000..35f19d79 --- /dev/null +++ b/layouts/component-library/components/about/about.scss @@ -0,0 +1,3 @@ +.about { + scroll-margin-block: var(--navbar-offset); +} \ No newline at end of file diff --git a/layouts/component-library/components/approach/approach.bookshop.yml b/layouts/component-library/components/approach/approach.bookshop.yml new file mode 100644 index 00000000..91f150a1 --- /dev/null +++ b/layouts/component-library/components/approach/approach.bookshop.yml @@ -0,0 +1,48 @@ +# Metadata about this component, to be used in the CMS +spec: + structures: + - content_blocks + label: Approach + description: Approach section + icon: step + tags: [] + +# Defines the structure of this component, as well as the default values +blueprint: + heading: + preheading: + heading: + content: + align: + width: + cols: + icon_rounded: + icon_style: + link_type: + padding: + background: + backdrop: + color: + subtle: + illustration: + image: + icon: + ratio: + class: + anchor: + mode: + elements: + - title: + icon: + image: + mode: + content: + link: + orientation: + class: + width: + justify: + align: + fluid: + theme: + cover: diff --git a/layouts/component-library/components/approach/approach.hugo.html b/layouts/component-library/components/approach/approach.hugo.html new file mode 100644 index 00000000..118b191a --- /dev/null +++ b/layouts/component-library/components/approach/approach.hugo.html @@ -0,0 +1,101 @@ +{{/* + Copyright © 2025 - 2026 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. + + Note: To support live editing, bookshop components should use a clear path to the provided arguments. + Therefore, we cannot use the InitArgs partial at this point, and we need to access each argument + directly. See the docs for more background: + https://github.com/CloudCannon/bookshop/blob/main/guides/hugo.adoc#passing-data-to-bookshop-components +*/}} + +{{/* + This component is derived from the cards component. It inserts a featured illustration in between + the section title and the card group. +*/}} + +{{/* Initialize global arguments */}} +{{- $breakpoint := partial "utilities/GetBreakpoint.html" -}} +{{- $padding := partial "utilities/GetPadding.html" -}} + +{{/* Initialize local variables */}} +{{ $raw := "" }} +{{ $list := slice }} +{{ range .elements }} + + {{ $list = $list | append (dict + "title" .title + "description" (.content | page.RenderString) + "icon" .icon + "thumbnail" .image + "href" .link + "button" (isset . "link") + "button-label" .label + ) }} +{{ end}} + +{{- $raw = printf "%s%s" $raw (partial "assets/section-title.html" (dict + "heading" .heading + "justify" .justify + "class" (printf "pb-%d" $padding.y))) +-}} + +{{/* Add featured illustration */}} +{{ with .illustration }} + {{ $raw = printf "%s%s" $raw (partial "assets/featured-illustration.html" (dict + "page" page + "image" .image + "ratio" (or .ratio "21x9") + "anchor" .anchor + "title" page.Title + "wrapper" "mb-5 col-12 col-md-8 mx-auto" + "mode" .mode + )) }} +{{ end }} + +{{/* Init base arguments for card group */}} +{{ $params := dict + "page" page + "list" $list + "class" (printf "border-0 card-icon-primary %s" (or .class "")) + "cols" .cols + "gutter" "4" + "padding" .padding + "header-style" "none" + "footer-style" "none" + "icon-rounded" .icon_rounded + "icon-style" (or .icon_style "fa-2x") + "link-type" .link_type + "align" .align + "hook" "assets/live-card.html" +}} + +{{/* Layout for small screens */}} +{{- $raw = printf "%s%s" $raw (partial "assets/card-group.html" (merge $params (dict + "orientation" (.orientation | default "horizontal-sm") + "wrapper" (printf "d-%s-none" $breakpoint.prev) +))) -}} + +{{/* Layout for regular screens */}} +{{- $raw = printf "%s%s" $raw (partial "assets/card-group.html" (merge $params (dict + "orientation" (.orientation | default "stacked") + "wrapper" (printf "d-none d-%s-block" $breakpoint.prev) +))) -}} + +{{ if $raw }} + {{ partial "utilities/section.html" (dict + "component-name" "approach" + "id" .id + "raw" $raw + "background" .background + "width" .width + "justify" .justify + "wrapper" .wrapper + "fluid" .fluid + "theme" .theme + "cover" .cover + "overlay-mode" (or .overlay_mode (index . "overlay-mode")) + "section-class" (or .section_class (index . "section-class")) + "bg-class" (or .bg_class (index . "bg-class")) + )}} +{{ end }} \ No newline at end of file diff --git a/layouts/component-library/components/approach/approach.scss b/layouts/component-library/components/approach/approach.scss new file mode 100644 index 00000000..e69de29b diff --git a/layouts/component-library/components/articles/articles.bookshop.yml b/layouts/component-library/components/articles/articles.bookshop.yml new file mode 100644 index 00000000..5286dd38 --- /dev/null +++ b/layouts/component-library/components/articles/articles.bookshop.yml @@ -0,0 +1,61 @@ +# Metadata about this component, to be used in the CMS +spec: + structures: + - content_blocks + label: Articles + description: Articles section + icon: post + tags: [] + +# Defines the structure of this component, as well as the default values +blueprint: + heading: + preheading: + heading: + content: + align: + width: + hide_empty: + input: + section: + nested: + keywords: + categories: + tags: + reverse: + sort: + more: + title: + link: + link_type: + icon: + icon_rounded: + icon_style: + cols: + padding: + limit: + pagination: + paginate: + background: + backdrop: + color: + subtle: + scroll: + bento: + animated: + styles: + - ratio: + orientation: + stacked: + portrait: + width: + cover: + header_style: + body_style: + footer_style: + orientation: + class: + width: + justify: + fluid: + theme: diff --git a/layouts/component-library/components/articles/articles.hugo.html b/layouts/component-library/components/articles/articles.hugo.html new file mode 100644 index 00000000..0718258d --- /dev/null +++ b/layouts/component-library/components/articles/articles.hugo.html @@ -0,0 +1,147 @@ +{{/* + Copyright © 2025 - 2026 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. + + Note: To support live editing, bookshop components should use a clear path to the provided arguments. + Therefore, we cannot use the InitArgs partial at this point, and we need to access each argument + directly. See the docs for more background: + https://github.com/CloudCannon/bookshop/blob/main/guides/hugo.adoc#passing-data-to-bookshop-components +*/}} + +{{/* Initialize global arguments */}} +{{- $padding := partial "utilities/GetPadding.html" -}} + +{{/* Initialize local variables */}} +{{ $raw := "" }} +{{ $pages := slice }} +{{ $section := "" }} +{{ $categories := "" }} +{{ $result := dict "total" 0 }} +{{ with .input }} + {{ $section = .section }} + {{ $categories = .categories }} + {{ $result = partial "assets/live-pages.html" (dict + "page" $.page + "section" .section + "nested" .nested + "keywords" .keywords + "categories" .categories + "tags" .tags + "sort" .sort + "reverse" .reverse + )}} + {{ $pages = $result.pages }} +{{ end }} + + +{{ $styles := slice + (dict "ratio" "1x1" "orientation" "overlay" "portrait" false "width" "6") + (dict "ratio" "4x3" "orientation" "stacked" "portrait" true "width" "3") + (dict "ratio" "1x1" "orientation" "stacked" "portrait" false "width" "3") + (dict "ratio" "16x9" "orientation" "stacked" "portrait" true "width" "3") + (dict "ratio" "1x1" "orientation" "stacked" "portrait" false "width" "3") +}} + +{{ if gt (len (or .styles slice)) 0 }} + {{ $styles = .styles }} +{{ end }} + + +{{ $moreButton := site.Params.modules.bookshop.articles.moreButton | default false }} +{{ $title := or $section $categories (T "article") }} +{{ $moreLink := $section }} +{{ $moreTitle := T "more" (pluralize $title) }} +{{ $moreType := "button" }} +{{ $moreIcon := "" }} +{{ with .more }} + {{ if .title }}{{ $moreTitle = .title }}{{ end }} + {{ if .link }}{{ $moreLink = .link }}{{ end }} + {{ if or (.link_type) (index . "link-type") }}{{ $moreType = (.link_type) (index . "link-type") }}{{ end }} + {{ if .icon }}{{ $moreIcon = .icon }}{{ end }} +{{ end }} + +{{ $paginate := .paginate }} +{{ if and $paginate page.IsPage }} + {{ partial "utilities/LogWarn.html" (dict + "partial" "component-library/components/articles/articles.hugo.html" + "msg" "Pagination not supported" + "file" page.File + )}} + {{ $paginate = false }} +{{ end }} + +{{/* Main code */}} +{{ if or (gt (len $pages) 0) (not .hide_empty) }} + {{- $raw = printf "%s%s" $raw (partial "assets/section-title.html" (dict + "heading" .heading + "justify" .justify + "class" (printf "pb-%d" $padding.y))) + -}} + + {{ $partial := "assets/card-group.html" }} + {{ $params := dict }} + {{- $params = merge $params (dict + "page" page + "list" $pages + "cols" .cols + "limit" .limit + "padding" .padding + "href" (cond $moreButton $moreLink "") + "href-force" (gt $result.total (len $result.pages)) + )}} + + {{ if .scroll }} + {{ $partial = "assets/stack.html" }} + {{ $params = merge $params (dict + "header-style" "none" + "body-style" "title" + "footer-style" "none" + "gutter" 1 + "ratio" "1x1" + "orientation" "horizontal-sm" + "animated" .animated + "styles" (cond .bento $styles "") + ) -}} + {{ else }} + {{ $params = merge $params (dict + "header-style" (or .header_style (index . "header-style")) + "body-style" (or .body_style (index . "body-style")) + "footer-style" (or .footer_style (index . "footer-style")) + "class" (or .class "border-0") + "align" "start" + "orientation" .orientation + "href-title" (cond $moreButton $moreTitle "") + "icon-rounded" .icon_rounded + "icon-style" .icon_style + "hook" "assets/live-card.html" + "more-link-type" $moreType + "more-link-icon" $moreIcon + "pagination" .pagination + "paginate" $paginate + ) -}} + {{ end }} + {{ if gt (len $pages) 0 }} + {{ $raw = printf "%s%s" $raw (partial $partial $params) }} + {{ else }} + {{ $raw = printf "%s%s" $raw (printf `

%s.

` $padding.y (T "emptyList")) }} + {{ end }} + + {{ if $raw }} + {{ partial "utilities/section.html" (dict + "component-name" "articles" + "id" .id + "raw" $raw + "background" .background + "width" .width + "justify" .justify + "wrapper" .wrapper + "fluid" .fluid + "theme" .theme + "cover" .cover + "overlay-mode" (or .overlay_mode (index . "overlay-mode")) + "section-class" (or .section_class (index . "section-class")) + "bg-class" (or .bg_class (index . "bg-class")) + )}} + {{ end }} +{{ end }} diff --git a/layouts/component-library/components/articles/articles.scss b/layouts/component-library/components/articles/articles.scss new file mode 100644 index 00000000..df6ca9c2 --- /dev/null +++ b/layouts/component-library/components/articles/articles.scss @@ -0,0 +1,8 @@ +.card-overlay-gradient { + position: absolute; + width: 100%; + height: 100%; + left: 0; + bottom: 0; + background: linear-gradient(to bottom, rgba(0, 0, 0, 0),rgba(0, 0, 0, 1)); +} diff --git a/layouts/component-library/components/cards/cards.bookshop.yml b/layouts/component-library/components/cards/cards.bookshop.yml new file mode 100644 index 00000000..39696678 --- /dev/null +++ b/layouts/component-library/components/cards/cards.bookshop.yml @@ -0,0 +1,41 @@ +# Metadata about this component, to be used in the CMS +spec: + structures: + - content_blocks + label: Benefits + 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: + icon_style: + link_type: + padding: + background: + backdrop: + color: + subtle: + elements: + - title: + icon: + image: + mode: + content: + link: + orientation: + class: + width: + justify: + align: + fluid: + theme: + cover: diff --git a/layouts/component-library/components/cards/cards.hugo.html b/layouts/component-library/components/cards/cards.hugo.html new file mode 100644 index 00000000..95258d43 --- /dev/null +++ b/layouts/component-library/components/cards/cards.hugo.html @@ -0,0 +1,84 @@ +{{/* + Copyright © 2025 - 2026 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. + + Note: To support live editing, bookshop components should use a clear path to the provided arguments. + Therefore, we cannot use the InitArgs partial at this point, and we need to access each argument + directly. See the docs for more background: + https://github.com/CloudCannon/bookshop/blob/main/guides/hugo.adoc#passing-data-to-bookshop-components +*/}} + +{{/* Initialize global arguments */}} +{{- $breakpoint := partial "utilities/GetBreakpoint.html" -}} +{{- $padding := partial "utilities/GetPadding.html" -}} + +{{/* Initialize local variables */}} +{{ $raw := "" }} +{{ $list := slice }} +{{ range .elements }} + + {{ $list = $list | append (dict + "title" .title + "description" (.content | page.RenderString) + "icon" .icon + "thumbnail" .image + "href" .link + "button" (isset . "link") + "button-label" .label + ) }} +{{ end}} + +{{/* Main code */}} +{{- $raw = printf "%s%s" $raw (partial "assets/section-title.html" (dict + "heading" .heading + "justify" .justify + "class" (printf "pb-%d" $padding.y))) +-}} + +{{/* Init base arguments for card group */}} +{{ $params := dict + "page" page + "list" $list + "class" (printf "border-0 card-icon-primary %s" (or .class "")) + "cols" .cols + "gutter" "4" + "padding" .padding + "header-style" "none" + "footer-style" "none" + "icon-rounded" (or .icon_rounded (index . "icon-rounded")) + "icon-style" (or .icon_style (index . "icon-style") "fa-2x") + "link-type" (or .link_type (index . "link-type")) + "align" .align + "hook" "assets/live-card.html" +}} + +{{/* Layout for small screens */}} +{{- $raw = printf "%s%s" $raw (partial "assets/card-group.html" (merge $params (dict + "orientation" (.orientation | default "horizontal-sm") + "wrapper" (printf "d-%s-none" $breakpoint.prev) +))) -}} + +{{/* Layout for regular screens */}} +{{- $raw = printf "%s%s" $raw (partial "assets/card-group.html" (merge $params (dict + "orientation" (.orientation | default "stacked") + "wrapper" (printf "d-none d-%s-block" $breakpoint.prev) +))) -}} + +{{ if $raw }} + {{ partial "utilities/section.html" (dict + "component-name" "cards" + "id" .id + "raw" $raw + "background" .background + "width" .width + "justify" .justify + "wrapper" .wrapper + "fluid" .fluid + "theme" .theme + "cover" .cover + "overlay-mode" (or .overlay_mode (index . "overlay-mode")) + "section-class" (or .section_class (index . "section-class")) + "bg-class" (or .bg_class (index . "bg-class")) + )}} +{{ end }} \ No newline at end of file diff --git a/layouts/component-library/components/cards/cards.scss b/layouts/component-library/components/cards/cards.scss new file mode 100644 index 00000000..e69de29b diff --git a/layouts/component-library/components/cta/cta.bookshop.yml b/layouts/component-library/components/cta/cta.bookshop.yml new file mode 100644 index 00000000..b395e154 --- /dev/null +++ b/layouts/component-library/components/cta/cta.bookshop.yml @@ -0,0 +1,45 @@ +# 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: + padding: + order: + width: + fluid: + theme: + cover: diff --git a/layouts/component-library/components/cta/cta.hugo.html b/layouts/component-library/components/cta/cta.hugo.html new file mode 100644 index 00000000..88a71f7f --- /dev/null +++ b/layouts/component-library/components/cta/cta.hugo.html @@ -0,0 +1,52 @@ +{{/* + Copyright © 2025 - 2026 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. + + Note: To support live editing, bookshop components should use a clear path to the provided arguments. + Therefore, we cannot use the InitArgs partial at this point, and we need to access each argument + directly. See the docs for more background: + https://github.com/CloudCannon/bookshop/blob/main/guides/hugo.adoc#passing-data-to-bookshop-components +*/}} + +{{/* Main code */}} +{{ $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 }} + +{{ $raw := partial "assets/contact.html" (dict + "page" page + "orientation" "horizontal" + "heading" .heading + "contact" .contact + "caption-url" (or .caption_url (index . "caption-url")) + "illustration" .illustration + "class" "contact-img" + "links" $links + "align" .align + "order" .order + "data" site.Params.modules.bookshop.cta.section +) }} + +{{ if $raw }} + {{ partial "utilities/section.html" (dict + "component-name" "cta" + "id" .id + "raw" $raw + "background" .background + "width" .width + "justify" .justify + "wrapper" .wrapper + "fluid" .fluid + "theme" .theme + "cover" .cover + "overlay-mode" (or .overlay_mode (index . "overlay-mode")) + "section-class" (or .section_class (index . "section-class")) + "bg-class" (or .bg_class (index . "bg-class")) + )}} +{{ end }} \ No newline at end of file diff --git a/layouts/component-library/components/cta/cta.scss b/layouts/component-library/components/cta/cta.scss new file mode 100644 index 00000000..77f5a22c --- /dev/null +++ b/layouts/component-library/components/cta/cta.scss @@ -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); +} diff --git a/layouts/component-library/components/faq/faq.bookshop.yml b/layouts/component-library/components/faq/faq.bookshop.yml new file mode 100644 index 00000000..334f377c --- /dev/null +++ b/layouts/component-library/components/faq/faq.bookshop.yml @@ -0,0 +1,31 @@ +# Metadata about this component, to be used in the CMS +spec: + structures: + - content_blocks + label: FAQ + description: Accordion of frequently asked questions + icon: expand_more + tags: [] + +# Defines the structure of this component, as well as the default values +blueprint: + heading: + preheading: + title: + content: + align: + width: + size: + contrast: + width: + justify: + background: + backdrop: + color: + subtle: + items: + - title: + description: + fluid: + theme: + cover: diff --git a/layouts/component-library/components/faq/faq.hugo.html b/layouts/component-library/components/faq/faq.hugo.html new file mode 100644 index 00000000..b5db475a --- /dev/null +++ b/layouts/component-library/components/faq/faq.hugo.html @@ -0,0 +1,87 @@ +{{/* + Copyright © 2025 - 2026 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. + + Note: To support live editing, bookshop components should use a clear path to the provided arguments. + Therefore, we cannot use the InitArgs partial at this point, and we need to access each argument + directly. See the docs for more background: + https://github.com/CloudCannon/bookshop/blob/main/guides/hugo.adoc#passing-data-to-bookshop-components +*/}} + +{{/* Initialize global arguments */}} +{{- $padding := partial "utilities/GetPadding.html" -}} + +{{ define "_partials/inline/accordion-faq.html" }} + {{ $id := .id }} + {{ $contrast := .contrast }} + {{ $class := .class }} + {{ $color := .color }} + {{ $items := .items }} + +
+ {{ range $index, $item := $items }} +
+ {{- with $item.title -}} +
+ +
+ {{- end -}} +
+
{{ $item.description | page.RenderString | safeHTML }}
+
+
+ {{ end }} +
+{{ end }} + +{{/* Main code */}} +{{ $color := "" }} +{{ if .contrast }}{{ $color = "white" }}{{ end }} +{{- $raw := partial "assets/section-title.html" (dict + "heading" .heading + "justify" .justify + "class" (printf "pb-%d" $padding.y)) +-}} + +{{ $class := "" }} +{{ $id := printf "faq-%s" (md5 (delimit (slice . now) "-")) }} + +{{ $raw = printf "%s%s" $raw (partial "inline/accordion-faq.html" (dict + "id" $id + "contrast" .contrast + "class" .class + "color" .color + "items" .items +)) }} + +{{ if $raw }} + {{ partial "utilities/section.html" (dict + "component-name" "faw" + "id" .id + "raw" $raw + "background" .background + "width" .width + "justify" .justify + "wrapper" .wrapper + "fluid" .fluid + "theme" .theme + "cover" .cover + "overlay-mode" (or .overlay_mode (index . "overlay-mode")) + "section-class" (or .section_class (index . "section-class")) + "bg-class" (or .bg_class (index . "bg-class")) + )}} +{{ end }} \ No newline at end of file diff --git a/layouts/component-library/components/faq/faq.scss b/layouts/component-library/components/faq/faq.scss new file mode 100644 index 00000000..cee71f78 --- /dev/null +++ b/layouts/component-library/components/faq/faq.scss @@ -0,0 +1,44 @@ +$accordion-button-icon-white: url("/icons/accordion-button-icon-white.svg") !default; +$accordion-button-active-icon-white: url("/icons/accordion-button-active-icon-white.svg") !default; + + +.accordion-faq { + --#{$prefix}accordion-btn-padding-x: 0; + --#{$prefix}accordion-btn-focus-border-color: none; + --#{$prefix}accordion-btn-focus-box-shadow: none; + --#{$prefix}accordion-body-padding-x: 0; + --#{$prefix}accordion-active-color: var(--#{$prefix}primary); + --#{$prefix}accordion-active-bg: none; + --#{$prefix}accordion-border-color: var(--#{$prefix}body-color); + --#{$prefix}accordion-bg: none; +} + +.accordion-faq .accordion-button { + font-size: $h5-font-size; +} + +// note: explicitly suppresses border in Safari +.accordion-faq [aria-expanded="true"] { + --#{$prefix}accordion-border-color: none; +} + +.accordion-faq-contrast { + --#{$prefix}accordion-active-color: var(--#{$prefix}white); + --#{$prefix}accordion-border-color: white; +} + +.accordion-faq-contrast .accordion-button, .accordion-faq-contrast .accordion-body { + --#{$prefix}accordion-btn-icon: #{$accordion-button-icon-white}; + --#{$prefix}accordion-btn-active-icon: #{$accordion-button-active-icon-white}; + --#{$prefix}accordion-border-color: white; + + color: white; +} + +@if $enable-dark-mode { + @include color-mode(dark) { + .accordion-faq .accordion-button { + background-color: transparent; + } + } +} diff --git a/layouts/component-library/components/featured/featured.bookshop.yml b/layouts/component-library/components/featured/featured.bookshop.yml new file mode 100644 index 00000000..1df08b6a --- /dev/null +++ b/layouts/component-library/components/featured/featured.bookshop.yml @@ -0,0 +1,44 @@ +# Metadata about this component, to be used in the CMS +spec: + structures: + - content_blocks + label: Featured + description: Featured section + icon: mode_heat + tags: [] + +# Defines the structure of this component, as well as the default values +blueprint: + heading: + preheading: + title: + content: + align: + arrangement: + width: + size: + background: + backdrop: + color: + subtle: + illustration: + image: + icon: + ratio: + class: + anchor: + mode: + order: + width: + justify: + link_type: + fluid: + theme: + cover: + links: + - + title: + url: + download: + icon: + force: diff --git a/layouts/component-library/components/featured/featured.hugo.html b/layouts/component-library/components/featured/featured.hugo.html new file mode 100644 index 00000000..028f5d77 --- /dev/null +++ b/layouts/component-library/components/featured/featured.hugo.html @@ -0,0 +1,40 @@ +{{/* + Copyright © 2025 - 2026 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. + + Note: To support live editing, bookshop components should use a clear path to the provided arguments. + Therefore, we cannot use the InitArgs partial at this point, and we need to access each argument + directly. See the docs for more background: + https://github.com/CloudCannon/bookshop/blob/main/guides/hugo.adoc#passing-data-to-bookshop-components +*/}} + +{{ $raw := partial "assets/hero.html" (dict + "page" page + "heading" (merge (dict "width" 8) (or .heading dict)) + "illustration" (merge (dict "ratio" "auto") (or .illustration dict)) + "order" .order + "link-type" (or .link_type (index . "link-type")) + "links" .links + "orientation" "horizontal" + ) +}} + +{{ if $raw }} + {{ partial "utilities/section.html" (dict + "component-name" "featured" + "id" .id + "raw" $raw + "background" .background + "width" .width + "justify" .justify + "wrapper" .wrapper + "fluid" .fluid + "theme" .theme + "cover" .cover + "overlay-mode" (or .overlay_mode (index . "overlay-mode")) + "section-class" (or .section_class (index . "section-class")) + "bg-class" (or .bg_class (index . "bg-class")) + )}} +{{ end }} + diff --git a/layouts/component-library/components/featured/featured.scss b/layouts/component-library/components/featured/featured.scss new file mode 100644 index 00000000..e69de29b diff --git a/layouts/component-library/components/hero/hero.bookshop.yml b/layouts/component-library/components/hero/hero.bookshop.yml new file mode 100644 index 00000000..12cfa307 --- /dev/null +++ b/layouts/component-library/components/hero/hero.bookshop.yml @@ -0,0 +1,43 @@ +# Metadata about this component, to be used in the CMS +spec: + structures: + - content_blocks + label: Hero + description: Main page Hero block + icon: title + tags: [] + +# Defines the structure of this component, as well as the default values +blueprint: + breadcrumb: + heading: + preheading: + title: + content: + align: + arrangement: + width: + size: + background: + backdrop: + color: + subtle: + illustration: + image: + icon: + ratio: + class: + anchor: + mode: + width: + link-type: + links: + align: + order: + overlay-mode: + fluid: + theme: + cover: + orientation: + width: + justify: diff --git a/layouts/component-library/components/hero/hero.hugo.html b/layouts/component-library/components/hero/hero.hugo.html new file mode 100644 index 00000000..c361ff99 --- /dev/null +++ b/layouts/component-library/components/hero/hero.hugo.html @@ -0,0 +1,41 @@ +{{/* + Copyright © 2025 - 2026 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. + + Note: To support live editing, bookshop components should use a clear path to the provided arguments. + Therefore, we cannot use the InitArgs partial at this point, and we need to access each argument + directly. See the docs for more background: + https://github.com/CloudCannon/bookshop/blob/main/guides/hugo.adoc#passing-data-to-bookshop-components +*/}} + +{{ $raw := partial "assets/hero.html" (dict + "page" page + "breadcrumb" .breadcrumb + "heading" .heading + "illustration" .illustration + "align" .align + "order" .order + "link-type" (or .link_type (index . "link-type")) + "links" .links + "orientation" .orientation + ) +}} + +{{ if $raw }} + {{ partial "utilities/section.html" (dict + "component-name" "hero" + "id" .id + "raw" $raw + "background" .background + "width" .width + "justify" .justify + "wrapper" .wrapper + "fluid" .fluid + "theme" .theme + "cover" .cover + "overlay-mode" (or .overlay_mode (index . "overlay-mode")) + "section-class" (or .section_class (index . "section-class")) + "bg-class" (or .bg_class (index . "bg-class")) + )}} +{{ end }} \ No newline at end of file diff --git a/layouts/component-library/components/hero/hero.scss b/layouts/component-library/components/hero/hero.scss new file mode 100644 index 00000000..0934c6b2 --- /dev/null +++ b/layouts/component-library/components/hero/hero.scss @@ -0,0 +1,18 @@ +.background-img-fluid { + position: absolute; + object-fit: cover; + height: 100%; + width: 100%; + z-index: -1; +} + +.background-container { + position: relative; + width: 100%; + height: auto; + background-color: rgba($dark, 0.8); +} + +.hero-content { + z-index: 1; +} diff --git a/layouts/component-library/components/list/list.bookshop.yml b/layouts/component-library/components/list/list.bookshop.yml new file mode 100644 index 00000000..b67f2722 --- /dev/null +++ b/layouts/component-library/components/list/list.bookshop.yml @@ -0,0 +1,43 @@ +# Metadata about this component, to be used in the CMS +spec: + structures: + - content_blocks + label: List + description: List section + icon: post + tags: [] + +# Defines the structure of this component, as well as the default values +blueprint: + heading: + preheading: + heading: + content: + align: + width: + hide_empty: + input: + section: + nested: + keywords: + categories: + tags: + reverse: + sort: + hook: + limit: + background: + backdrop: + color: + subtle: + cover: + class: + width: + justify: + theme: + sortable: + paginate: + pagination: + pagination_select: + searchable: + wrap: diff --git a/layouts/component-library/components/list/list.hugo.html b/layouts/component-library/components/list/list.hugo.html new file mode 100644 index 00000000..e89f461b --- /dev/null +++ b/layouts/component-library/components/list/list.hugo.html @@ -0,0 +1,114 @@ +{{/* + Copyright © 2025 - 2026 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. + + Note: To support live editing, bookshop components should use a clear path to the provided arguments. + Therefore, we cannot use the InitArgs partial at this point, and we need to access each argument + directly. See the docs for more background: + https://github.com/CloudCannon/bookshop/blob/main/guides/hugo.adoc#passing-data-to-bookshop-components +*/}} + + +{{/* Initialize global arguments */}} +{{- $padding := partial "utilities/GetPadding.html" -}} + +{{/* Ensure to include the simple-datatables module */}} +{{/* TODO: fix add module handling, requires propagating scratch variables to correct page */}} +{{ partial "utilities/AddModule.html" (dict "page" ._page "module" "simple-datatables" ) }} + +{{/* Initialize local variables */}} +{{ $pages := slice }} +{{ $result := dict "total" 0 }} +{{ with .input }} + {{ $result = partial "assets/live-pages.html" (dict + "page" $._page + "section" .section + "nested" .nested + "keywords" .keywords + "categories" .categories + "tags" .tags + "sort" .sort + "reverse" .reverse + )}} + {{ $pages = $result.pages }} +{{ end }} + +{{ if and .limit .paginate }} + {{ partial "utilities/LogWarn.html" (dict + "partial" "component-library/components/list/list.hugo.html" + "msg" "Limit is ignored when paginate is set" + "file" page.File + )}} +{{ end }} + +{{/* Limit list to max elements */}} +{{- $count := len $pages -}} +{{- $max := $count -}} +{{- $max = math.Min (.limit | default $count) $count -}} +{{- if not .paginate -}} + {{- $pages = first $max $pages -}} +{{- end -}} + +{{/* Main code */}} +{{ $hideEmpty := or .hide_empty (index . "hide-empty") }} +{{ if or (gt (len $pages) 0) (not $hideEmpty) }} + {{- $raw := partial "assets/section-title.html" (dict + "heading" .heading + "justify" .justify + "class" (printf "pb-%d" $padding.y)) + -}} + {{ if gt (len $pages) 0 }} + {{ $content := "" }} + {{ if .hook }} + {{ $content = partial .hook (dict "pages" $pages) }} + {{ else }} + {{ $content = "| Title | Description |\n|-|-|\n" }} + {{ range $pages }} + {{ $content = printf "%s[%s](#%s) | %s |\n" $content .LinkTitle .RelPermalink .Description }} + {{ end }} + {{ end }} + + {{- /* Define main breakpoint */ -}} + {{- .page.Scratch.Set "breakpoint" (partialCached "utilities/GetBreakpoint.html" .) }} + + {{ $pagination := .pagination | default 10 }} + {{ $paginate := and .paginate (gt (len $pages) $pagination) }} + {{ $sortable := and .sortable (gt (len $pages) 1) }} + {{ $searchable := and .searchable (gt (len $pages) 1) }} + + {{ $raw = printf "%s%s" $raw (partial "assets/table.html" (dict + "page" (or .page page) + "input" $content + "breakpoint" .breakpoint + "class" .class + "sortable" $sortable + "paginate" $paginate + "pagination" (cond $paginate $pagination "") + "pagination-select" (cond $paginate (or .pagination_select (index . "pagination-select")) "") + "searchable" $searchable + "wrap" .wrap + "_default" .default + )) }} + {{ else }} + {{ $raw = printf `%s

%s.

` $raw $padding.y (T "emptyList") }} + {{ end }} + + {{ if $raw }} + {{ partial "utilities/section.html" (dict + "component-name" "list" + "id" .id + "raw" $raw + "background" .background + "width" .width + "justify" .justify + "wrapper" .wrapper + "fluid" .fluid + "theme" .theme + "cover" .cover + "overlay-mode" (or .overlay_mode (index . "overlay-mode")) + "section-class" (or .section_class (index . "section-class")) + "bg-class" (or .bg_class (index . "bg-class")) + )}} + {{ end }} +{{ end }} diff --git a/layouts/component-library/components/list/list.scss b/layouts/component-library/components/list/list.scss new file mode 100644 index 00000000..fc9b00ee --- /dev/null +++ b/layouts/component-library/components/list/list.scss @@ -0,0 +1,29 @@ +section.list { + .table { + --bs-table-bg: transparent; + --bs-table-border-color: var(--bs-table-color); + + th:first-child, td:first-child { + padding-left: 0; + } + + th:last-child, .td:last-child { + padding-right: 0; + } + + th { + border-bottom-color: var(--bs-table-border-color) !important; + } + } + + + [class^="table-responsive-"] { + width: 100%; + } + + .datatable-top, .datatable-bottom { + padding-left: 0; + padding-right: 0; + padding-bottom: 2rem; + } +} diff --git a/layouts/component-library/components/menu/menu.bookshop.yml b/layouts/component-library/components/menu/menu.bookshop.yml new file mode 100644 index 00000000..004bbd3f --- /dev/null +++ b/layouts/component-library/components/menu/menu.bookshop.yml @@ -0,0 +1,32 @@ +# Metadata about this component, to be used in the CMS +spec: + structures: + - content_blocks + label: Menu + description: Index of menu items + icon: menu + tags: [] + +# Defines the structure of this component, as well as the default values +blueprint: + heading: + preheading: + heading: + content: + align: + width: + cols: + menu: + menu-style: + icon-rounded: false + icon-style: + background: + backdrop: + color: + subtle: + class: + width: + justify: + fluid: + theme: + cover: diff --git a/layouts/component-library/components/menu/menu.hugo.html b/layouts/component-library/components/menu/menu.hugo.html new file mode 100644 index 00000000..b68d4773 --- /dev/null +++ b/layouts/component-library/components/menu/menu.hugo.html @@ -0,0 +1,48 @@ +{{/* + Copyright © 2025 - 2026 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. + + Note: To support live editing, bookshop components should use a clear path to the provided arguments. + Therefore, we cannot use the InitArgs partial at this point, and we need to access each argument + directly. See the docs for more background: + https://github.com/CloudCannon/bookshop/blob/main/guides/hugo.adoc#passing-data-to-bookshop-components +*/}} + +{{/* Initialize global arguments */}} +{{- $padding := partial "utilities/GetPadding.html" -}} + +{{/* Main code */}} +{{- $raw := partial "assets/section-title.html" (dict + "heading" .heading + "justify" .justify + "class" (printf "pb-%d" $padding.y)) +-}} + +{{- $raw = printf "%s%s" $raw (partial "assets/menu.html" (dict + "page" page + "menu" .menu + "menu-style" .menuStyle + "cols" .cols + "icon-rounded" .iconRounded + "icon-style" .iconStyle +)) -}} + + +{{ if $raw }} + {{ partial "utilities/section.html" (dict + "component-name" "menu" + "id" .id + "raw" $raw + "background" .background + "width" .width + "justify" .justify + "wrapper" .wrapper + "fluid" .fluid + "theme" .theme + "cover" .cover + "overlay-mode" (or .overlay_mode (index . "overlay-mode")) + "section-class" (or .section_class (index . "section-class")) + "bg-class" (or .bg_class (index . "bg-class")) + )}} +{{ end }} \ No newline at end of file diff --git a/layouts/component-library/components/menu/menu.scss b/layouts/component-library/components/menu/menu.scss new file mode 100644 index 00000000..86575fb9 --- /dev/null +++ b/layouts/component-library/components/menu/menu.scss @@ -0,0 +1,44 @@ +section.menu { + .m-col div, .col div { + border-radius: #{$theme-border-radius} if($enable-important-utilities, !important, null); + } + + .menu-item { + --bs-menu-border: var(--bs-border-color); + --bs-menu-color-hover: var(--bs-light); + --bs-menu-background-hover: var(--bs-primary); + --bs-menu-item-color-hover: var(--bs-gray-300); + + position: relative; + border: solid var(--bs-menu-border); + + &:hover, + &:focus { + background-color: var(--bs-menu-background-hover) if($enable-important-utilities, !important, null); + color: var(--bs-menu-color-hover) if($enable-important-utilities, !important, null); + transition-property: background-color, border-color; + transition-duration: .3s; + transition-timing-function: ease-in-out; + + .fa-inverse { + color: var(--bs-menu-background-hover); + } + } + } + + .menu-link { + // make menu-link clickable on top of the stretched-link. + z-index: 2 if($enable-important-utilities, !important, null); + position: relative; + + &:hover, + &:focus { + color: var(--bs-menu-item-color-hover) if($enable-important-utilities, !important, null); + } + } + + .menu-link-header { + font-weight: $font-weight-bold if($enable-important-utilities, !important, null); + font-size: $h5-font-size if($enable-important-utilities, !important, null); + } +} diff --git a/layouts/component-library/components/panels/panels.bookshop.yml b/layouts/component-library/components/panels/panels.bookshop.yml new file mode 100644 index 00000000..fb2ce027 --- /dev/null +++ b/layouts/component-library/components/panels/panels.bookshop.yml @@ -0,0 +1,38 @@ +# 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: + fluid: + theme: + cover: diff --git a/layouts/component-library/components/panels/panels.hugo.html b/layouts/component-library/components/panels/panels.hugo.html new file mode 100644 index 00000000..bed3d0dc --- /dev/null +++ b/layouts/component-library/components/panels/panels.hugo.html @@ -0,0 +1,93 @@ +{{/* + Copyright © 2025 - 2026 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. + + Note: To support live editing, bookshop components should use a clear path to the provided arguments. + Therefore, we cannot use the InitArgs partial at this point, and we need to access each argument + directly. See the docs for more background: + https://github.com/CloudCannon/bookshop/blob/main/guides/hugo.adoc#passing-data-to-bookshop-components +*/}} + +{{/* 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" (md5 (delimit (slice . now) "-")) }} +{{ $inner := "" }} +{{ range $i, $element := .elements }} + {{ $toc = $toc | append (dict "href" "panel-0-1" "level" 2 "title" .title) }} + + {{ $hero := partial "assets/hero.html" (dict + "page" page + "heading" (dict "content" .content "width" 8) + "background" .background + "illustration" (dict "ratio" (or .ratio "1x1") "icon" .icon "image" .image "mode" .mode "justify" "end") + "order" .order + "link-type" (or .link_type (index . "link-type")) + "links" .links + "orientation" "horizontal" + "align" "start" + "width" 12 + "content-style" "fs-6" + ) + }} + + {{- $output := partial "assets/nav-item.html" (dict + "page" page + "id" $i + "parent-id" $parentID + "fade" false + "title" .title + "show" (eq $i 0) + "raw" $hero + ) + -}} + + {{ $inner = printf "%s\n%s" $inner $output }} + {{ $titles = $titles | append .title }} +{{ end}} + +{{/* Main code */}} +{{- $raw := partial "assets/section-title.html" (dict + "heading" .heading + "justify" .justify + "class" (printf "pb-%d" $padding.y)) +-}} + +{{- $raw = printf "%s%s" $raw (partial "assets/nav.html" (dict + "id" (or .id $parentID) + "page" page + "nav-items" $inner + "nav-titles" $titles + "tab-type" (or .tab_type (index . "tab-type")) + "vertical" .vertical + "word-wrap" (or .word_wrap (index . "word-wrap")) + "class" .class + "pane" .pane + "width" .width + "responsive" .responsive + )) +-}} + +{{ if $raw }} + {{ partial "utilities/section.html" (dict + "component-name" "panels" + "id" .id + "raw" $raw + "background" .background + "width" .width + "justify" .justify + "wrapper" .wrapper + "fluid" .fluid + "theme" .theme + "cover" .cover + "overlay-mode" (or .overlay_mode (index . "overlay-mode")) + "section-class" (or .section_class (index . "section-class")) + "bg-class" (or .bg_class (index . "bg-class")) + )}} +{{ end }} \ No newline at end of file diff --git a/layouts/component-library/components/panels/panels.scss b/layouts/component-library/components/panels/panels.scss new file mode 100644 index 00000000..9d73988c --- /dev/null +++ b/layouts/component-library/components/panels/panels.scss @@ -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}; +} diff --git a/layouts/component-library/components/releases/releases.bookshop.yml b/layouts/component-library/components/releases/releases.bookshop.yml new file mode 100644 index 00000000..422ca766 --- /dev/null +++ b/layouts/component-library/components/releases/releases.bookshop.yml @@ -0,0 +1,29 @@ +# Metadata about this component, to be used in the CMS +spec: + structures: + - content_blocks + label: Releases + description: Release timeline + icon: fingerprint + tags: [] + +# Defines the structure of this component, as well as the default values +blueprint: + heading: + preheading: + title: + content: + align: + arrangement: + width: + size: + background: + backdrop: + color: + subtle: + width: + justify: + data: + fluid: + theme: + cover: diff --git a/layouts/component-library/components/releases/releases.hugo.html b/layouts/component-library/components/releases/releases.hugo.html new file mode 100644 index 00000000..65bd2532 --- /dev/null +++ b/layouts/component-library/components/releases/releases.hugo.html @@ -0,0 +1,37 @@ +{{/* + Copyright © 2025 - 2026 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. + + Note: To support live editing, bookshop components should use a clear path to the provided arguments. + Therefore, we cannot use the InitArgs partial at this point, and we need to access each argument + directly. See the docs for more background: + https://github.com/CloudCannon/bookshop/blob/main/guides/hugo.adoc#passing-data-to-bookshop-components +*/}} + +{{/* Main code */}} +{{ $raw := partial "assets/timeline.html" (dict + "page" page + "background" .background + "heading" .heading + "data" .data + ) +}} + +{{ if $raw }} + {{ partial "utilities/section.html" (dict + "component-name" "releases" + "id" .id + "raw" $raw + "background" .background + "width" .width + "justify" .justify + "wrapper" .wrapper + "fluid" .fluid + "theme" .theme + "cover" .cover + "overlay-mode" (or .overlay_mode (index . "overlay-mode")) + "section-class" (or .section_class (index . "section-class")) + "bg-class" (or .bg_class (index . "bg-class")) + )}} +{{ end }} \ No newline at end of file diff --git a/layouts/component-library/components/releases/releases.scss b/layouts/component-library/components/releases/releases.scss new file mode 100644 index 00000000..e69de29b diff --git a/layouts/component-library/components/separator/separator.bookshop.yml b/layouts/component-library/components/separator/separator.bookshop.yml new file mode 100644 index 00000000..81b71af8 --- /dev/null +++ b/layouts/component-library/components/separator/separator.bookshop.yml @@ -0,0 +1,10 @@ +# Metadata about this component, to be used in the CMS +spec: + structures: + - content_blocks + label: Separator + description: Inserts a horizontal page section separator + icon: horizontal_rule + tags: [] + +blueprint: diff --git a/layouts/component-library/components/separator/separator.hugo.html b/layouts/component-library/components/separator/separator.hugo.html new file mode 100644 index 00000000..d0ff03c0 --- /dev/null +++ b/layouts/component-library/components/separator/separator.hugo.html @@ -0,0 +1,7 @@ +{{/* + Copyright © 2025 - 2026 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. +*/}} + +
diff --git a/layouts/component-library/components/separator/separator.scss b/layouts/component-library/components/separator/separator.scss new file mode 100644 index 00000000..e69de29b diff --git a/layouts/component-library/components/team/team.bookshop.yml b/layouts/component-library/components/team/team.bookshop.yml new file mode 100644 index 00000000..8f434ad1 --- /dev/null +++ b/layouts/component-library/components/team/team.bookshop.yml @@ -0,0 +1,50 @@ +# Metadata about this component, to be used in the CMS +spec: + structures: + - content_blocks + label: Teams + description: Teams section + icon: groups + tags: [] + +# Defines the structure of this component, as well as the default values +blueprint: + heading: + preheading: + heading: + content: + align: + width: + hide_empty: + input: + section: + nested: + keywords: + categories: + tags: + reverse: + sort: + more: + title: + link: + link_type: + icon: + cols: + padding: + limit: + pagination: + paginate: + background: + backdrop: + color: + subtle: + cover: + header_style: + body_style: + footer_style: + orientation: + class: + width: + justify: + fluid: + theme: diff --git a/layouts/component-library/components/team/team.hugo.html b/layouts/component-library/components/team/team.hugo.html new file mode 100644 index 00000000..b448987e --- /dev/null +++ b/layouts/component-library/components/team/team.hugo.html @@ -0,0 +1,121 @@ +{{/* + Copyright © 2025 - 2026 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. + + Note: To support live editing, bookshop components should use a clear path to the provided arguments. + Therefore, we cannot use the InitArgs partial at this point, and we need to access each argument + directly. See the docs for more background: + https://github.com/CloudCannon/bookshop/blob/main/guides/hugo.adoc#passing-data-to-bookshop-components +*/}} + +{{/* Initialize global arguments */}} +{{- $padding := partial "utilities/GetPadding.html" -}} + +{{/* Initialize local variables */}} +{{ $pages := slice }} +{{ $section := "" }} +{{ $categories := "" }} +{{ $result := dict "total" 0 }} +{{ with .input }} + {{ $section = .section }} + {{ $categories = .categories }} + {{ $result = partial "assets/live-pages.html" (dict + "page" $.page + "section" .section + "nested" .nested + "keywords" .keywords + "categories" .categories + "tags" .tags + "sort" .sort + "reverse" .reverse + )}} + {{ $pages = $result.pages }} +{{ end }} + + +{{ $moreButton := site.Params.modules.bookshop.team.moreButton | default false }} +{{ $title := or $section $categories (T "article") }} +{{ $moreTitle := T "more" (pluralize $title) }} +{{ $moreLink := $section }} +{{ $moreType := "button" }} +{{ $moreIcon := "" }} +{{ with .more }} + {{ if .title }}{{ $moreTitle = .title }}{{ end }} + {{ if .link }}{{ $moreLink = .link }}{{ end }} + {{ if (or .link_type index . "link-type") }}{{ $moreType = or .link_type (index . "link-type") }}{{ end }} + {{ if .icon }}{{ $moreIcon = .icon }}{{ end }} +{{ end }} + +{{ $paginate := .paginate }} +{{ if and $paginate page.IsPage }} + {{ partial "utilities/LogWarn.html" (dict + "partial" "component-library/components/team/team.hugo.html" + "msg" "Pagination not supported" + "file" page.File + )}} + {{ $paginate = false }} +{{ end }} + +{{/* Main code */}} +{{ $hideEmpty := or .hide_empty (index . "hide-empty") }} +{{ if or (gt (len $pages) 0) (not $hideEmpty) }} + {{- $raw := partial "assets/section-title.html" (dict + "heading" .heading + "justify" .justify + "class" (printf "pb-%d" $padding.y)) + -}} + + {{ $partial := "assets/card-group.html" }} + {{ $params := dict }} + {{- $params = merge $params (dict + "page" page + "list" $pages + "cols" .cols + "limit" .limit + "padding" .padding + "href" (cond $moreButton $moreLink "") + "href-force" (gt $result.total (len $result.pages)) + )}} + + {{ $params = merge $params (dict + "ratio" "1x1" + "header-style" (or .header_style (index . "header-style")) + "body-style" (or .body_style (index . "body-style")) + "footer-style" (or .footer_style (index . "footer-style")) + "class" (or .class "border-0") + "align" "center" + "orientation" .orientation + "href-title" (cond $moreButton $moreTitle "") + "icon-rounded" (or .icon_rounded (index . "icon-rounded")) + "icon-style" (or .icon_style (index . "icon-style")) + "hook" "assets/live-card.html" + "more-link-type" $moreType + "more-link-icon" $moreIcon + "pagination" .pagination + "paginate" $paginate + ) -}} + {{ if gt (len $pages) 0 }} + {{ $raw = printf "%s%s" $raw (partial $partial $params) }} + {{ else }} + {{ $raw = printf `%s

%s.

` $raw $padding.y T "emptyList" }} + {{ end }} + + {{ if $raw }} + {{ partial "utilities/section.html" (dict + "component-name" "team" + "id" .id + "raw" $raw + "background" .background + "width" .width + "justify" .justify + "wrapper" .wrapper + "fluid" .fluid + "theme" .theme + "cover" .cover + "overlay-mode" (or .overlay_mode (index . "overlay-mode")) + "section-class" (or .section_class (index . "section-class")) + "bg-class" (or .bg_class (index . "bg-class")) + )}} + {{ end }} +{{ end }} diff --git a/layouts/component-library/components/team/team.scss b/layouts/component-library/components/team/team.scss new file mode 100644 index 00000000..e69de29b diff --git a/layouts/component-library/components/testimonials/testimonials.bookshop.yml b/layouts/component-library/components/testimonials/testimonials.bookshop.yml new file mode 100644 index 00000000..5bd3339b --- /dev/null +++ b/layouts/component-library/components/testimonials/testimonials.bookshop.yml @@ -0,0 +1,31 @@ +# Metadata about this component, to be used in the CMS +spec: + structures: + - content_blocks + label: Testimonials + description: Testimonials section + icon: build + tags: [] + +# Defines the structure of this component, as well as the default values +blueprint: + background: + color: + subtle: + card: + color: + subtle: + icon_style: + testimonials: + - logo: + icon: + scale: + content: + client: + name: + url: + image: + mode: + link: + carousel: + cols: diff --git a/layouts/component-library/components/testimonials/testimonials.hugo.html b/layouts/component-library/components/testimonials/testimonials.hugo.html new file mode 100644 index 00000000..1346f992 --- /dev/null +++ b/layouts/component-library/components/testimonials/testimonials.hugo.html @@ -0,0 +1,138 @@ +{{/* + Copyright © 2025 - 2026 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. + + Note: To support live editing, bookshop components should use a clear path to the provided arguments. + Therefore, we cannot use the InitArgs partial at this point, and we need to access each argument + directly. See the docs for more background: + https://github.com/CloudCannon/bookshop/blob/main/guides/hugo.adoc#passing-data-to-bookshop-components +*/}} + +{{ define "_partials/inline/testimonial-carousel.html" }} + {{ $carousel := .carousel }} + {{ $testimonials := .testimonials }} + {{ $card := .card }} + {{ $padding := .padding }} + {{ $colGrid := .colGrid }} + {{ $iconStyle := index . "icon-style" }} + + {{ if and $carousel (gt (len $testimonials) 1) }} + {{ $id := printf "testimonial-carousel-%s" (md5 (delimit (slice . now) "-")) }} + + {{ else }} +
+
+ {{ range $testimonials }} +
+ {{ partial "assets/testimonial.html" (dict + "page" page + "content" .content + "logo" .logo + "icon" .icon + "icon-style" $iconStyle + "scale" .scale + "contact" (cond (.client | not | not) .client.contact "") + "role" (cond (.client | not | not) .client.role "") + "image" (cond (.client | not | not) .client.image "") + "url" (cond (.client | not | not) .client.url "") + "link" .link + "padding" $padding.x + "class" (partial "utilities/GetBackgroundStyle" (dict "background" $card)) + )}} +
+ {{ end}} +
+
+ {{ end }} +{{ end }} + +{{/* Initialize global arguments */}} +{{- $style := partial "utilities/GetBackgroundStyle" (dict "background" .background) -}} +{{- $breakpoint := partial "utilities/GetBreakpoint.html" -}} +{{- $padding := partial "utilities/GetPadding.html" -}} + +{{/* Main code */}} +{{ $colGrid := printf "row-cols-%d" (.cols | default 1) }} +{{- if eq .cols 1 }} + {{ $colGrid = "row-cols-1" -}} +{{- else if eq .cols 2 }} + {{ $colGrid = printf "row-cols-1 row-cols-%s-2" $breakpoint.next }} +{{- else if eq .cols 3 }} + {{ $colGrid = printf "row-cols-1 row-cols-%s-3" $breakpoint.next }} +{{- else if eq .cols 4 }} + {{ $colGrid = printf "row-cols-1 row-cols-%s-2 row-cols-%s-4" $breakpoint.current $breakpoint.next }} +{{- else if eq .cols 5 }} + {{ $colGrid = printf "row-cols-1 row-cols-%s-3 row-cols-%s-5" $breakpoint.current $breakpoint.next }} +{{ end -}} + +{{ $raw := partial "inline/testimonial-carousel.html" (dict + "carousel" .carousel + "testimonials" .testimonials + "card" .card + "padding" .padding + "colGrid" $colGrid + "icon-style" (or .icon_style (index . "icon-style")) +) }} + +{{ if $raw }} + {{ partial "utilities/section.html" (dict + "component-name" "testimonials" + "id" .id + "raw" $raw + "background" .background + "width" .width + "justify" .justify + "wrapper" .wrapper + "fluid" .fluid + "theme" .theme + "cover" .cover + "overlay-mode" (or .overlay_mode (index . "overlay-mode")) + "section-class" (or .section_class (index . "section-class")) + "bg-class" (or .bg_class (index . "bg-class")) + )}} +{{ end }} \ No newline at end of file diff --git a/layouts/component-library/components/testimonials/testimonials.scss b/layouts/component-library/components/testimonials/testimonials.scss new file mode 100644 index 00000000..21052c30 --- /dev/null +++ b/layouts/component-library/components/testimonials/testimonials.scss @@ -0,0 +1,18 @@ +section.testimonials { + .carousel, .testimonial-grid { + width: 100%; + } + + .carousel-control-prev, .carousel-control-next { + color: var(--bs-primary-text-emphasis); + + &:hover, + &:focus { + color: var(--bs-primary); + } + } + + .carousel-indicators button { + background-color: $primary !important; + } +} diff --git a/layouts/component-library/components/video-message/video-message.bookshop.yml b/layouts/component-library/components/video-message/video-message.bookshop.yml new file mode 100644 index 00000000..7f9d584f --- /dev/null +++ b/layouts/component-library/components/video-message/video-message.bookshop.yml @@ -0,0 +1,57 @@ +# Metadata about this component, to be used in the CMS +spec: + structures: + - content_blocks + label: Video + description: Video section + icon: build + tags: [] + +# Defines the structure of this component, as well as the default values +blueprint: + heading: + preheading: + title: + content: + align: + arrangement: + width: + size: + background: + backdrop: + color: + subtle: + link_type: + orientation: + icon_rounded: + icon_style: + video: + provider: + account: + media_id: + autoplay: + query_args: + color: + cols: + messages: + - title: + icon: + content: + link: + label: + border: + width: + justify: + fluid: + theme: + cover: + +_structures: + messages: + values: + value: + title: + icon: + content: + link: + label: diff --git a/layouts/component-library/components/video-message/video-message.hugo.html b/layouts/component-library/components/video-message/video-message.hugo.html new file mode 100644 index 00000000..ce5d80a1 --- /dev/null +++ b/layouts/component-library/components/video-message/video-message.hugo.html @@ -0,0 +1,185 @@ +{{/* + Copyright © 2025 - 2026 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. + + Note: To support live editing, bookshop components should use a clear path to the provided arguments. + Therefore, we cannot use the InitArgs partial at this point, and we need to access each argument + directly. See the docs for more background: + https://github.com/CloudCannon/bookshop/blob/main/guides/hugo.adoc#passing-data-to-bookshop-components +*/}} + +{{/* Initialize global variables */}} +{{- $breakpoint := partial "utilities/GetBreakpoint.html" -}} +{{- $padding := partial "utilities/GetPadding.html" -}} + +{{- define "_partials/inline/video.html" -}} + {{ $provider := .provider }} + {{ $account := .account }} + {{ $mediaID := (index . "media-id") }} + {{ $autoplay := .autoplay }} + {{ $queryArgs := .queryArgs }} + {{ $border := .border }} + {{ $padding := .padding }} + {{ $color := .color }} + + {{ if site.Params.env_bookshop_live }} + {{/* Define dummy content as we cannot retrieve video data in live mode */}} + {{- partial "assets/live-image.html" (dict + "src" "/img/placeholder-video.svg" + "ratio" "21x9" + "wrapper" (printf "text-center mb-%d" $padding.y)) -}} + {{ else }} +
+ {{ partial "assets/video.html" (dict + "page" page + "provider" $provider + "account" $account + "media-id" $mediaID + "autoplay" $autoplay + "query-args" $queryArgs + ) -}} + {{ if $border }} +
+
+
+
+ {{ end }} +
+ {{ end }} +{{ end }} + +{{- define "_partials/inline/messages.html" -}} + {{ $list := .list }} + {{ $cols := .cols }} + {{ $linkType := .linkType }} + {{ $iconRounded := .iconRounded }} + {{ $iconStyle := .iconStyle }} + + {{- partial "assets/card-group.html" (dict + "page" page + "list" $list + "class" "border-0 card-icon card-icon-secondary" + "cols" $cols + "gutter" "" + "padding" "0" + "header-style" "none" + "footer-style" "none" + "icon-style" "fa-fluid fa-fw" + "align" "start" + "orientation" "horizontal-sm" + "button" true + "link-type" $linkType + "icon-rounded" $iconRounded + "icon-style" $iconStyle + ) -}} +{{ end }} + +{{- define "_partials/inline/video-stacked.html" -}} + {{ $breakpoint := .breakpoint }} + {{ $padding := .padding }} + {{ $width := .width | default 8 }} + {{ $video := .video }} + {{ $messages := .messages }} + +
+ {{ $video | safeHTML }} +
+
+ {{ $messages | safeHTML }} +
+{{ end }} + +{{- define "_partials/inline/video-horizontal.html" -}} + {{ $breakpoint := .breakpoint }} + {{ $padding := .padding }} + {{ $width := .width | default 9 }} + {{ $video := .video }} + {{ $messages := .messages }} + +
+
+
+ {{ $video | safeHTML }} +
+
+ {{ $messages | safeHTML }} +
+
+
+{{ end }} + +{{/* Main code */}} +{{ $list := slice }} + +{{ range .messages }} + {{ $path := "" }} + {{ $href := "" }} + {{ with .link }}{{ if hasPrefix . "http" }}{{ $href = . }}{{ else }}{{ $path = . }}{{ end }}{{ end }} + + {{ $list = $list | append (dict + "title" .title + "description" (.content | page.RenderString) + "icon" .icon + "href" $href + "path" $path + "button-label" .label + ) }} +{{ end}} + +{{- $raw := partial "assets/section-title.html" (dict + "heading" .heading + "justify" .justify + "class" (printf "pb-%d" $padding.y)) +-}} + +{{ $video := "" }} +{{ with .video }} + {{ $video = partial "inline/video.html" (dict + "provider" .provider + "account" .account + "media-id" (or .media_id (index . "media-id")) + "autoplay" .autoplay + "query-args" (or .query_args (index . "query-args")) + "border" $.border + "padding" $padding + "color" .color + ) -}} +{{ end }} + +{{- $messages := partial "inline/messages.html" (dict + "list" $list + "cols" (cond (eq .orientation "stacked") .cols 1) + "type" .type + "linkType" (or .link_type (index . "link-type")) + "iconRounded" (or .icon_rounded (index . "icon-rounded")) + "iconStyle" (or .icon_style (index . "icon-style")) +) -}} + +{{ $partial := cond (eq .orientation "stacked") "inline/video-stacked.html" "inline/video-horizontal.html" }} + +{{- $raw = printf "%s%s" $raw (partial $partial (dict + "breakpoint" $breakpoint + "padding" $padding + "width" .width + "video" $video + "messages" $messages +)) }} + +{{ if $raw }} + {{ partial "utilities/section.html" (dict + "component-name" "video-message" + "id" .id + "raw" $raw + "background" .background + "width" .width + "justify" .justify + "wrapper" .wrapper + "fluid" .fluid + "theme" .theme + "cover" .cover + "overlay-mode" (or .overlay_mode (index . "overlay-mode")) + "section-class" (or .section_class (index . "section-class")) + "bg-class" (or .bg_class (index . "bg-class")) + )}} +{{ end }} \ No newline at end of file diff --git a/layouts/component-library/components/video-message/video-message.scss b/layouts/component-library/components/video-message/video-message.scss new file mode 100644 index 00000000..5182262d --- /dev/null +++ b/layouts/component-library/components/video-message/video-message.scss @@ -0,0 +1,60 @@ +.video-container { + --bs-video-border-color: var(--bs-primary); + --bs-video-border-width: 1rem; + + border-radius: $theme-border-radius; + position: relative; +} + +.video-container > .video-embedded { + display: block; + width: 100%; + height: 100%; + background-color: transparent; +} + +.video-container-border > .video-embedded { + width: calc(100% - var(--bs-video-border-width) / 2); + height: calc(100% - var(--bs-video-border-width) / 2); + margin-left: calc(var(--bs-video-border-width) / 2); + padding: 1rem; +} + +.video-overlay { + border: calc(var(--bs-video-border-width) / 2) solid var(--bs-video-border-color); + background: var(--bs-video-border-color); + overflow: hidden; + position: absolute; +} + +.video-overlay-start { + border-bottom-left-radius: $theme-border-radius; + border-top-left-radius: $theme-border-radius; + width: 1; + height: 100%; + left: 0; + bottom: 0; +} + +.video-overlay-top { + width: calc(100% - 1rem); + height: 1; + left: 1rem; + top: 0; +} + +.video-overlay-bottom { + width: calc(100% - 1rem); + height: 1; + left: 1rem; + bottom: 0; +} + +.video-overlay-end { + border-bottom-right-radius: $theme-border-radius; + border-top-right-radius: $theme-border-radius; + width: 1; + height: 100%; + left: 100%; + bottom: 0; +} diff --git a/layouts/component-library/config.toml b/layouts/component-library/config.toml new file mode 100644 index 00000000..ae5b84c8 --- /dev/null +++ b/layouts/component-library/config.toml @@ -0,0 +1,25 @@ +[module] + hugoVersion.extended = true + hugoVersion.min = '0.146.0' + # expose bookshop partials to Hugo + [[module.mounts]] + source = '.' + target = 'layouts/partials/bookshop' # note: bookshop engine 3.17.1 does not recognize layouts/_partials/bookshop yet + includeFiles = [ + '**/*.hugo.html', + ] + # expose bookshop specifications as Hinode data structure + [[module.mounts]] + source = '.' + target = 'data/structures' + includeFiles = ['**/*.bookshop.yml'] + # integrate main bookshop style with Hinode styles pipeline + [[module.mounts]] + source = 'bookshop.scss' + target = 'assets/scss/bookshop.scss' + # integrate bookshop component styles with Hinode styles pipeline + [[module.mounts]] + source = '.' + target = 'assets/scss/modules/bookshop' + includeFiles = ['**/*.scss'] + excludeFiles = ['bookshop.scss'] diff --git a/layouts/component-library/go.mod b/layouts/component-library/go.mod new file mode 100644 index 00000000..4c984031 --- /dev/null +++ b/layouts/component-library/go.mod @@ -0,0 +1,3 @@ +module github.com/gethinode/hinode/component-library + +go 1.19 \ No newline at end of file diff --git a/layouts/component-library/shared/hugo/page.hugo.html b/layouts/component-library/shared/hugo/page.hugo.html new file mode 100644 index 00000000..eeebeb84 --- /dev/null +++ b/layouts/component-library/shared/hugo/page.hugo.html @@ -0,0 +1,3 @@ +{{ range . }} + {{ partial "bookshop" . }} +{{ end }} diff --git a/layouts/component-library/shared/styles/global.scss b/layouts/component-library/shared/styles/global.scss new file mode 100644 index 00000000..1c2776a3 --- /dev/null +++ b/layouts/component-library/shared/styles/global.scss @@ -0,0 +1,23 @@ +// Files in shared/styles will be used as global stylesheets on your site, +// as well as in the component browser and screenshots. + +.display-1 > strong { + color: var(--bs-primary); + font-weight: normal !important; +} + +@if $enable-dark-mode { + @include color-mode(dark) { + .preheading.text-primary { + color: #{$primary-text-emphasis-dark} !important; + } + } +} + +h1[class*="display-"] { + margin-top: 0; +} + +.navbar-offset { + padding-top: var(--navbar-offset); +} diff --git a/layouts/component-library/theme.scss b/layouts/component-library/theme.scss new file mode 100644 index 00000000..d4b20478 --- /dev/null +++ b/layouts/component-library/theme.scss @@ -0,0 +1,2 @@ +// Placeholder to quickly add your own styles +// The file is included last in the build pipeline From 5ec65144b88cd736bf558beee87332479aac1818 Mon Sep 17 00:00:00 2001 From: Mark Dumay <61946753+markdumay@users.noreply.github.com> Date: Mon, 26 Jan 2026 14:24:49 +0100 Subject: [PATCH 4/4] chore: remove old component-library from git tracking The component-library directory has been moved to layouts/component-library in the previous commit. This commit removes the old tracked directory from git while keeping the new integrated location. Co-Authored-By: Claude Sonnet 4.5 --- component-library/bookshop.scss | 18 - .../components/about/about.bookshop.yml | 44 - .../components/about/about.hugo.html | 41 - component-library/components/about/about.scss | 3 - .../components/approach/approach.bookshop.yml | 48 - .../components/approach/approach.hugo.html | 101 -- .../components/approach/approach.scss | 0 .../components/articles/articles.bookshop.yml | 61 - .../components/articles/articles.hugo.html | 147 --- .../components/articles/articles.scss | 8 - .../components/cards/cards.bookshop.yml | 41 - .../components/cards/cards.hugo.html | 84 -- component-library/components/cards/cards.scss | 0 .../components/cta/cta.bookshop.yml | 45 - .../components/cta/cta.hugo.html | 52 - component-library/components/cta/cta.scss | 12 - .../components/faq/faq.bookshop.yml | 31 - .../components/faq/faq.hugo.html | 87 -- component-library/components/faq/faq.scss | 44 - .../components/featured/featured.bookshop.yml | 44 - .../components/featured/featured.hugo.html | 40 - .../components/featured/featured.scss | 0 .../components/hero/hero.bookshop.yml | 43 - .../components/hero/hero.hugo.html | 41 - component-library/components/hero/hero.scss | 18 - .../components/list/list.bookshop.yml | 43 - .../components/list/list.hugo.html | 114 -- component-library/components/list/list.scss | 29 - .../components/menu/menu.bookshop.yml | 32 - .../components/menu/menu.hugo.html | 48 - component-library/components/menu/menu.scss | 44 - .../components/panels/panels.bookshop.yml | 38 - .../components/panels/panels.hugo.html | 93 -- .../components/panels/panels.scss | 13 - .../components/releases/releases.bookshop.yml | 29 - .../components/releases/releases.hugo.html | 37 - .../components/releases/releases.scss | 0 .../separator/separator.bookshop.yml | 10 - .../components/separator/separator.hugo.html | 7 - .../components/separator/separator.scss | 0 .../components/team/team.bookshop.yml | 50 - .../components/team/team.hugo.html | 121 -- component-library/components/team/team.scss | 0 .../testimonials/testimonials.bookshop.yml | 31 - .../testimonials/testimonials.hugo.html | 138 -- .../components/testimonials/testimonials.scss | 18 - .../video-message/video-message.bookshop.yml | 57 - .../video-message/video-message.hugo.html | 185 --- .../video-message/video-message.scss | 60 - component-library/config.toml | 25 - component-library/go.mod | 3 - component-library/shared/hugo/page.hugo.html | 3 - component-library/shared/styles/global.scss | 23 - component-library/theme.scss | 2 - config/_default/hugo.toml | 22 +- exampleSite/config/_default/hugo.toml | 3 +- exampleSite/go.mod | 4 + exampleSite/hugo_stats.json | 1164 +---------------- go.mod | 1 - hinode.work.sum | 4 - 60 files changed, 75 insertions(+), 3429 deletions(-) delete mode 100644 component-library/bookshop.scss delete mode 100644 component-library/components/about/about.bookshop.yml delete mode 100644 component-library/components/about/about.hugo.html delete mode 100644 component-library/components/about/about.scss delete mode 100644 component-library/components/approach/approach.bookshop.yml delete mode 100644 component-library/components/approach/approach.hugo.html delete mode 100644 component-library/components/approach/approach.scss delete mode 100644 component-library/components/articles/articles.bookshop.yml delete mode 100644 component-library/components/articles/articles.hugo.html delete mode 100644 component-library/components/articles/articles.scss delete mode 100644 component-library/components/cards/cards.bookshop.yml delete mode 100644 component-library/components/cards/cards.hugo.html delete mode 100644 component-library/components/cards/cards.scss delete mode 100644 component-library/components/cta/cta.bookshop.yml delete mode 100644 component-library/components/cta/cta.hugo.html delete mode 100644 component-library/components/cta/cta.scss delete mode 100644 component-library/components/faq/faq.bookshop.yml delete mode 100644 component-library/components/faq/faq.hugo.html delete mode 100644 component-library/components/faq/faq.scss delete mode 100644 component-library/components/featured/featured.bookshop.yml delete mode 100644 component-library/components/featured/featured.hugo.html delete mode 100644 component-library/components/featured/featured.scss delete mode 100644 component-library/components/hero/hero.bookshop.yml delete mode 100644 component-library/components/hero/hero.hugo.html delete mode 100644 component-library/components/hero/hero.scss delete mode 100644 component-library/components/list/list.bookshop.yml delete mode 100644 component-library/components/list/list.hugo.html delete mode 100644 component-library/components/list/list.scss delete mode 100644 component-library/components/menu/menu.bookshop.yml delete mode 100644 component-library/components/menu/menu.hugo.html delete mode 100644 component-library/components/menu/menu.scss delete mode 100644 component-library/components/panels/panels.bookshop.yml delete mode 100644 component-library/components/panels/panels.hugo.html delete mode 100644 component-library/components/panels/panels.scss delete mode 100644 component-library/components/releases/releases.bookshop.yml delete mode 100644 component-library/components/releases/releases.hugo.html delete mode 100644 component-library/components/releases/releases.scss delete mode 100644 component-library/components/separator/separator.bookshop.yml delete mode 100644 component-library/components/separator/separator.hugo.html delete mode 100644 component-library/components/separator/separator.scss delete mode 100644 component-library/components/team/team.bookshop.yml delete mode 100644 component-library/components/team/team.hugo.html delete mode 100644 component-library/components/team/team.scss delete mode 100644 component-library/components/testimonials/testimonials.bookshop.yml delete mode 100644 component-library/components/testimonials/testimonials.hugo.html delete mode 100644 component-library/components/testimonials/testimonials.scss delete mode 100644 component-library/components/video-message/video-message.bookshop.yml delete mode 100644 component-library/components/video-message/video-message.hugo.html delete mode 100644 component-library/components/video-message/video-message.scss delete mode 100644 component-library/config.toml delete mode 100644 component-library/go.mod delete mode 100644 component-library/shared/hugo/page.hugo.html delete mode 100644 component-library/shared/styles/global.scss delete mode 100644 component-library/theme.scss delete mode 100644 hinode.work.sum diff --git a/component-library/bookshop.scss b/component-library/bookshop.scss deleted file mode 100644 index 32d63ad8..00000000 --- a/component-library/bookshop.scss +++ /dev/null @@ -1,18 +0,0 @@ -@import "modules/bookshop/shared/styles/global"; -@import "modules/bookshop/components/about/about"; -@import "modules/bookshop/components/approach/approach"; -@import "modules/bookshop/components/articles/articles"; -@import "modules/bookshop/components/cards/cards"; -@import "modules/bookshop/components/cta/cta"; -@import "modules/bookshop/components/faq/faq"; -@import "modules/bookshop/components/featured/featured"; -@import "modules/bookshop/components/hero/hero"; -@import "modules/bookshop/components/list/list"; -@import "modules/bookshop/components/menu/menu"; -@import "modules/bookshop/components/panels/panels"; -@import "modules/bookshop/components/releases/releases"; -@import "modules/bookshop/components/separator/separator"; -@import "modules/bookshop/components/team/team"; -@import "modules/bookshop/components/testimonials/testimonials"; -@import "modules/bookshop/components/video-message/video-message"; -@import "modules/bookshop/theme"; diff --git a/component-library/components/about/about.bookshop.yml b/component-library/components/about/about.bookshop.yml deleted file mode 100644 index 55114741..00000000 --- a/component-library/components/about/about.bookshop.yml +++ /dev/null @@ -1,44 +0,0 @@ -# Metadata about this component, to be used in the CMS -spec: - structures: - - content_blocks - label: About - description: About section - icon: fingerprint - tags: [] - -# Defines the structure of this component, as well as the default values -blueprint: - heading: - preheading: - title: - content: - align: - arrangement: - width: - size: - background: - backdrop: - color: - subtle: - illustration: - image: - icon: - ratio: - class: - anchor: - mode: - width: - order: - width: - justify: - link_type: - fluid: - theme: - cover: - links: - - - title: - url: - icon: - force: diff --git a/component-library/components/about/about.hugo.html b/component-library/components/about/about.hugo.html deleted file mode 100644 index 2ba8794a..00000000 --- a/component-library/components/about/about.hugo.html +++ /dev/null @@ -1,41 +0,0 @@ -{{/* - Copyright © 2025 - 2026 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. - - Note: To support live editing, bookshop components should use a clear path to the provided arguments. - Therefore, we cannot use the InitArgs partial at this point, and we need to access each argument - directly. See the docs for more background: - https://github.com/CloudCannon/bookshop/blob/main/guides/hugo.adoc#passing-data-to-bookshop-components -*/}} - -{{ $raw := partial "assets/hero.html" (dict - "page" page - "heading" (merge (dict "width" 8) .heading) - "illustration" (merge (dict "ratio" "auto") .illustration) - "order" .order - "link-type" (or .link_type (index . "link-type")) - "links" .links - "orientation" "horizontal" - "width" (.width | default 8) - ) -}} - - -{{ if $raw }} - {{ partial "utilities/section.html" (dict - "component-name" "about" - "id" .id - "raw" $raw - "background" .background - "width" 12 - "justify" .justify - "wrapper" .wrapper - "fluid" .fluid - "theme" .theme - "cover" .cover - "overlay-mode" (or .overlay_mode (index . "overlay-mode")) - "section-class" (or .section_class (index . "section-class")) - "bg-class" (or .bg_class (index . "bg-class")) - )}} -{{ end }} diff --git a/component-library/components/about/about.scss b/component-library/components/about/about.scss deleted file mode 100644 index 35f19d79..00000000 --- a/component-library/components/about/about.scss +++ /dev/null @@ -1,3 +0,0 @@ -.about { - scroll-margin-block: var(--navbar-offset); -} \ No newline at end of file diff --git a/component-library/components/approach/approach.bookshop.yml b/component-library/components/approach/approach.bookshop.yml deleted file mode 100644 index 91f150a1..00000000 --- a/component-library/components/approach/approach.bookshop.yml +++ /dev/null @@ -1,48 +0,0 @@ -# Metadata about this component, to be used in the CMS -spec: - structures: - - content_blocks - label: Approach - description: Approach section - icon: step - tags: [] - -# Defines the structure of this component, as well as the default values -blueprint: - heading: - preheading: - heading: - content: - align: - width: - cols: - icon_rounded: - icon_style: - link_type: - padding: - background: - backdrop: - color: - subtle: - illustration: - image: - icon: - ratio: - class: - anchor: - mode: - elements: - - title: - icon: - image: - mode: - content: - link: - orientation: - class: - width: - justify: - align: - fluid: - theme: - cover: diff --git a/component-library/components/approach/approach.hugo.html b/component-library/components/approach/approach.hugo.html deleted file mode 100644 index 118b191a..00000000 --- a/component-library/components/approach/approach.hugo.html +++ /dev/null @@ -1,101 +0,0 @@ -{{/* - Copyright © 2025 - 2026 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. - - Note: To support live editing, bookshop components should use a clear path to the provided arguments. - Therefore, we cannot use the InitArgs partial at this point, and we need to access each argument - directly. See the docs for more background: - https://github.com/CloudCannon/bookshop/blob/main/guides/hugo.adoc#passing-data-to-bookshop-components -*/}} - -{{/* - This component is derived from the cards component. It inserts a featured illustration in between - the section title and the card group. -*/}} - -{{/* Initialize global arguments */}} -{{- $breakpoint := partial "utilities/GetBreakpoint.html" -}} -{{- $padding := partial "utilities/GetPadding.html" -}} - -{{/* Initialize local variables */}} -{{ $raw := "" }} -{{ $list := slice }} -{{ range .elements }} - - {{ $list = $list | append (dict - "title" .title - "description" (.content | page.RenderString) - "icon" .icon - "thumbnail" .image - "href" .link - "button" (isset . "link") - "button-label" .label - ) }} -{{ end}} - -{{- $raw = printf "%s%s" $raw (partial "assets/section-title.html" (dict - "heading" .heading - "justify" .justify - "class" (printf "pb-%d" $padding.y))) --}} - -{{/* Add featured illustration */}} -{{ with .illustration }} - {{ $raw = printf "%s%s" $raw (partial "assets/featured-illustration.html" (dict - "page" page - "image" .image - "ratio" (or .ratio "21x9") - "anchor" .anchor - "title" page.Title - "wrapper" "mb-5 col-12 col-md-8 mx-auto" - "mode" .mode - )) }} -{{ end }} - -{{/* Init base arguments for card group */}} -{{ $params := dict - "page" page - "list" $list - "class" (printf "border-0 card-icon-primary %s" (or .class "")) - "cols" .cols - "gutter" "4" - "padding" .padding - "header-style" "none" - "footer-style" "none" - "icon-rounded" .icon_rounded - "icon-style" (or .icon_style "fa-2x") - "link-type" .link_type - "align" .align - "hook" "assets/live-card.html" -}} - -{{/* Layout for small screens */}} -{{- $raw = printf "%s%s" $raw (partial "assets/card-group.html" (merge $params (dict - "orientation" (.orientation | default "horizontal-sm") - "wrapper" (printf "d-%s-none" $breakpoint.prev) -))) -}} - -{{/* Layout for regular screens */}} -{{- $raw = printf "%s%s" $raw (partial "assets/card-group.html" (merge $params (dict - "orientation" (.orientation | default "stacked") - "wrapper" (printf "d-none d-%s-block" $breakpoint.prev) -))) -}} - -{{ if $raw }} - {{ partial "utilities/section.html" (dict - "component-name" "approach" - "id" .id - "raw" $raw - "background" .background - "width" .width - "justify" .justify - "wrapper" .wrapper - "fluid" .fluid - "theme" .theme - "cover" .cover - "overlay-mode" (or .overlay_mode (index . "overlay-mode")) - "section-class" (or .section_class (index . "section-class")) - "bg-class" (or .bg_class (index . "bg-class")) - )}} -{{ end }} \ No newline at end of file diff --git a/component-library/components/approach/approach.scss b/component-library/components/approach/approach.scss deleted file mode 100644 index e69de29b..00000000 diff --git a/component-library/components/articles/articles.bookshop.yml b/component-library/components/articles/articles.bookshop.yml deleted file mode 100644 index 5286dd38..00000000 --- a/component-library/components/articles/articles.bookshop.yml +++ /dev/null @@ -1,61 +0,0 @@ -# Metadata about this component, to be used in the CMS -spec: - structures: - - content_blocks - label: Articles - description: Articles section - icon: post - tags: [] - -# Defines the structure of this component, as well as the default values -blueprint: - heading: - preheading: - heading: - content: - align: - width: - hide_empty: - input: - section: - nested: - keywords: - categories: - tags: - reverse: - sort: - more: - title: - link: - link_type: - icon: - icon_rounded: - icon_style: - cols: - padding: - limit: - pagination: - paginate: - background: - backdrop: - color: - subtle: - scroll: - bento: - animated: - styles: - - ratio: - orientation: - stacked: - portrait: - width: - cover: - header_style: - body_style: - footer_style: - orientation: - class: - width: - justify: - fluid: - theme: diff --git a/component-library/components/articles/articles.hugo.html b/component-library/components/articles/articles.hugo.html deleted file mode 100644 index 0718258d..00000000 --- a/component-library/components/articles/articles.hugo.html +++ /dev/null @@ -1,147 +0,0 @@ -{{/* - Copyright © 2025 - 2026 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. - - Note: To support live editing, bookshop components should use a clear path to the provided arguments. - Therefore, we cannot use the InitArgs partial at this point, and we need to access each argument - directly. See the docs for more background: - https://github.com/CloudCannon/bookshop/blob/main/guides/hugo.adoc#passing-data-to-bookshop-components -*/}} - -{{/* Initialize global arguments */}} -{{- $padding := partial "utilities/GetPadding.html" -}} - -{{/* Initialize local variables */}} -{{ $raw := "" }} -{{ $pages := slice }} -{{ $section := "" }} -{{ $categories := "" }} -{{ $result := dict "total" 0 }} -{{ with .input }} - {{ $section = .section }} - {{ $categories = .categories }} - {{ $result = partial "assets/live-pages.html" (dict - "page" $.page - "section" .section - "nested" .nested - "keywords" .keywords - "categories" .categories - "tags" .tags - "sort" .sort - "reverse" .reverse - )}} - {{ $pages = $result.pages }} -{{ end }} - - -{{ $styles := slice - (dict "ratio" "1x1" "orientation" "overlay" "portrait" false "width" "6") - (dict "ratio" "4x3" "orientation" "stacked" "portrait" true "width" "3") - (dict "ratio" "1x1" "orientation" "stacked" "portrait" false "width" "3") - (dict "ratio" "16x9" "orientation" "stacked" "portrait" true "width" "3") - (dict "ratio" "1x1" "orientation" "stacked" "portrait" false "width" "3") -}} - -{{ if gt (len (or .styles slice)) 0 }} - {{ $styles = .styles }} -{{ end }} - - -{{ $moreButton := site.Params.modules.bookshop.articles.moreButton | default false }} -{{ $title := or $section $categories (T "article") }} -{{ $moreLink := $section }} -{{ $moreTitle := T "more" (pluralize $title) }} -{{ $moreType := "button" }} -{{ $moreIcon := "" }} -{{ with .more }} - {{ if .title }}{{ $moreTitle = .title }}{{ end }} - {{ if .link }}{{ $moreLink = .link }}{{ end }} - {{ if or (.link_type) (index . "link-type") }}{{ $moreType = (.link_type) (index . "link-type") }}{{ end }} - {{ if .icon }}{{ $moreIcon = .icon }}{{ end }} -{{ end }} - -{{ $paginate := .paginate }} -{{ if and $paginate page.IsPage }} - {{ partial "utilities/LogWarn.html" (dict - "partial" "component-library/components/articles/articles.hugo.html" - "msg" "Pagination not supported" - "file" page.File - )}} - {{ $paginate = false }} -{{ end }} - -{{/* Main code */}} -{{ if or (gt (len $pages) 0) (not .hide_empty) }} - {{- $raw = printf "%s%s" $raw (partial "assets/section-title.html" (dict - "heading" .heading - "justify" .justify - "class" (printf "pb-%d" $padding.y))) - -}} - - {{ $partial := "assets/card-group.html" }} - {{ $params := dict }} - {{- $params = merge $params (dict - "page" page - "list" $pages - "cols" .cols - "limit" .limit - "padding" .padding - "href" (cond $moreButton $moreLink "") - "href-force" (gt $result.total (len $result.pages)) - )}} - - {{ if .scroll }} - {{ $partial = "assets/stack.html" }} - {{ $params = merge $params (dict - "header-style" "none" - "body-style" "title" - "footer-style" "none" - "gutter" 1 - "ratio" "1x1" - "orientation" "horizontal-sm" - "animated" .animated - "styles" (cond .bento $styles "") - ) -}} - {{ else }} - {{ $params = merge $params (dict - "header-style" (or .header_style (index . "header-style")) - "body-style" (or .body_style (index . "body-style")) - "footer-style" (or .footer_style (index . "footer-style")) - "class" (or .class "border-0") - "align" "start" - "orientation" .orientation - "href-title" (cond $moreButton $moreTitle "") - "icon-rounded" .icon_rounded - "icon-style" .icon_style - "hook" "assets/live-card.html" - "more-link-type" $moreType - "more-link-icon" $moreIcon - "pagination" .pagination - "paginate" $paginate - ) -}} - {{ end }} - {{ if gt (len $pages) 0 }} - {{ $raw = printf "%s%s" $raw (partial $partial $params) }} - {{ else }} - {{ $raw = printf "%s%s" $raw (printf `

%s.

` $padding.y (T "emptyList")) }} - {{ end }} - - {{ if $raw }} - {{ partial "utilities/section.html" (dict - "component-name" "articles" - "id" .id - "raw" $raw - "background" .background - "width" .width - "justify" .justify - "wrapper" .wrapper - "fluid" .fluid - "theme" .theme - "cover" .cover - "overlay-mode" (or .overlay_mode (index . "overlay-mode")) - "section-class" (or .section_class (index . "section-class")) - "bg-class" (or .bg_class (index . "bg-class")) - )}} - {{ end }} -{{ end }} diff --git a/component-library/components/articles/articles.scss b/component-library/components/articles/articles.scss deleted file mode 100644 index df6ca9c2..00000000 --- a/component-library/components/articles/articles.scss +++ /dev/null @@ -1,8 +0,0 @@ -.card-overlay-gradient { - position: absolute; - width: 100%; - height: 100%; - left: 0; - bottom: 0; - background: linear-gradient(to bottom, rgba(0, 0, 0, 0),rgba(0, 0, 0, 1)); -} diff --git a/component-library/components/cards/cards.bookshop.yml b/component-library/components/cards/cards.bookshop.yml deleted file mode 100644 index 39696678..00000000 --- a/component-library/components/cards/cards.bookshop.yml +++ /dev/null @@ -1,41 +0,0 @@ -# Metadata about this component, to be used in the CMS -spec: - structures: - - content_blocks - label: Benefits - 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: - icon_style: - link_type: - padding: - background: - backdrop: - color: - subtle: - elements: - - title: - icon: - image: - mode: - content: - link: - orientation: - class: - width: - justify: - align: - fluid: - theme: - cover: diff --git a/component-library/components/cards/cards.hugo.html b/component-library/components/cards/cards.hugo.html deleted file mode 100644 index 95258d43..00000000 --- a/component-library/components/cards/cards.hugo.html +++ /dev/null @@ -1,84 +0,0 @@ -{{/* - Copyright © 2025 - 2026 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. - - Note: To support live editing, bookshop components should use a clear path to the provided arguments. - Therefore, we cannot use the InitArgs partial at this point, and we need to access each argument - directly. See the docs for more background: - https://github.com/CloudCannon/bookshop/blob/main/guides/hugo.adoc#passing-data-to-bookshop-components -*/}} - -{{/* Initialize global arguments */}} -{{- $breakpoint := partial "utilities/GetBreakpoint.html" -}} -{{- $padding := partial "utilities/GetPadding.html" -}} - -{{/* Initialize local variables */}} -{{ $raw := "" }} -{{ $list := slice }} -{{ range .elements }} - - {{ $list = $list | append (dict - "title" .title - "description" (.content | page.RenderString) - "icon" .icon - "thumbnail" .image - "href" .link - "button" (isset . "link") - "button-label" .label - ) }} -{{ end}} - -{{/* Main code */}} -{{- $raw = printf "%s%s" $raw (partial "assets/section-title.html" (dict - "heading" .heading - "justify" .justify - "class" (printf "pb-%d" $padding.y))) --}} - -{{/* Init base arguments for card group */}} -{{ $params := dict - "page" page - "list" $list - "class" (printf "border-0 card-icon-primary %s" (or .class "")) - "cols" .cols - "gutter" "4" - "padding" .padding - "header-style" "none" - "footer-style" "none" - "icon-rounded" (or .icon_rounded (index . "icon-rounded")) - "icon-style" (or .icon_style (index . "icon-style") "fa-2x") - "link-type" (or .link_type (index . "link-type")) - "align" .align - "hook" "assets/live-card.html" -}} - -{{/* Layout for small screens */}} -{{- $raw = printf "%s%s" $raw (partial "assets/card-group.html" (merge $params (dict - "orientation" (.orientation | default "horizontal-sm") - "wrapper" (printf "d-%s-none" $breakpoint.prev) -))) -}} - -{{/* Layout for regular screens */}} -{{- $raw = printf "%s%s" $raw (partial "assets/card-group.html" (merge $params (dict - "orientation" (.orientation | default "stacked") - "wrapper" (printf "d-none d-%s-block" $breakpoint.prev) -))) -}} - -{{ if $raw }} - {{ partial "utilities/section.html" (dict - "component-name" "cards" - "id" .id - "raw" $raw - "background" .background - "width" .width - "justify" .justify - "wrapper" .wrapper - "fluid" .fluid - "theme" .theme - "cover" .cover - "overlay-mode" (or .overlay_mode (index . "overlay-mode")) - "section-class" (or .section_class (index . "section-class")) - "bg-class" (or .bg_class (index . "bg-class")) - )}} -{{ end }} \ No newline at end of file diff --git a/component-library/components/cards/cards.scss b/component-library/components/cards/cards.scss deleted file mode 100644 index e69de29b..00000000 diff --git a/component-library/components/cta/cta.bookshop.yml b/component-library/components/cta/cta.bookshop.yml deleted file mode 100644 index b395e154..00000000 --- a/component-library/components/cta/cta.bookshop.yml +++ /dev/null @@ -1,45 +0,0 @@ -# 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: - padding: - order: - width: - fluid: - theme: - cover: diff --git a/component-library/components/cta/cta.hugo.html b/component-library/components/cta/cta.hugo.html deleted file mode 100644 index 88a71f7f..00000000 --- a/component-library/components/cta/cta.hugo.html +++ /dev/null @@ -1,52 +0,0 @@ -{{/* - Copyright © 2025 - 2026 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. - - Note: To support live editing, bookshop components should use a clear path to the provided arguments. - Therefore, we cannot use the InitArgs partial at this point, and we need to access each argument - directly. See the docs for more background: - https://github.com/CloudCannon/bookshop/blob/main/guides/hugo.adoc#passing-data-to-bookshop-components -*/}} - -{{/* Main code */}} -{{ $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 }} - -{{ $raw := partial "assets/contact.html" (dict - "page" page - "orientation" "horizontal" - "heading" .heading - "contact" .contact - "caption-url" (or .caption_url (index . "caption-url")) - "illustration" .illustration - "class" "contact-img" - "links" $links - "align" .align - "order" .order - "data" site.Params.modules.bookshop.cta.section -) }} - -{{ if $raw }} - {{ partial "utilities/section.html" (dict - "component-name" "cta" - "id" .id - "raw" $raw - "background" .background - "width" .width - "justify" .justify - "wrapper" .wrapper - "fluid" .fluid - "theme" .theme - "cover" .cover - "overlay-mode" (or .overlay_mode (index . "overlay-mode")) - "section-class" (or .section_class (index . "section-class")) - "bg-class" (or .bg_class (index . "bg-class")) - )}} -{{ end }} \ No newline at end of file diff --git a/component-library/components/cta/cta.scss b/component-library/components/cta/cta.scss deleted file mode 100644 index 77f5a22c..00000000 --- a/component-library/components/cta/cta.scss +++ /dev/null @@ -1,12 +0,0 @@ -.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); -} diff --git a/component-library/components/faq/faq.bookshop.yml b/component-library/components/faq/faq.bookshop.yml deleted file mode 100644 index 334f377c..00000000 --- a/component-library/components/faq/faq.bookshop.yml +++ /dev/null @@ -1,31 +0,0 @@ -# Metadata about this component, to be used in the CMS -spec: - structures: - - content_blocks - label: FAQ - description: Accordion of frequently asked questions - icon: expand_more - tags: [] - -# Defines the structure of this component, as well as the default values -blueprint: - heading: - preheading: - title: - content: - align: - width: - size: - contrast: - width: - justify: - background: - backdrop: - color: - subtle: - items: - - title: - description: - fluid: - theme: - cover: diff --git a/component-library/components/faq/faq.hugo.html b/component-library/components/faq/faq.hugo.html deleted file mode 100644 index b5db475a..00000000 --- a/component-library/components/faq/faq.hugo.html +++ /dev/null @@ -1,87 +0,0 @@ -{{/* - Copyright © 2025 - 2026 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. - - Note: To support live editing, bookshop components should use a clear path to the provided arguments. - Therefore, we cannot use the InitArgs partial at this point, and we need to access each argument - directly. See the docs for more background: - https://github.com/CloudCannon/bookshop/blob/main/guides/hugo.adoc#passing-data-to-bookshop-components -*/}} - -{{/* Initialize global arguments */}} -{{- $padding := partial "utilities/GetPadding.html" -}} - -{{ define "_partials/inline/accordion-faq.html" }} - {{ $id := .id }} - {{ $contrast := .contrast }} - {{ $class := .class }} - {{ $color := .color }} - {{ $items := .items }} - -
- {{ range $index, $item := $items }} -
- {{- with $item.title -}} -
- -
- {{- end -}} -
-
{{ $item.description | page.RenderString | safeHTML }}
-
-
- {{ end }} -
-{{ end }} - -{{/* Main code */}} -{{ $color := "" }} -{{ if .contrast }}{{ $color = "white" }}{{ end }} -{{- $raw := partial "assets/section-title.html" (dict - "heading" .heading - "justify" .justify - "class" (printf "pb-%d" $padding.y)) --}} - -{{ $class := "" }} -{{ $id := printf "faq-%s" (md5 (delimit (slice . now) "-")) }} - -{{ $raw = printf "%s%s" $raw (partial "inline/accordion-faq.html" (dict - "id" $id - "contrast" .contrast - "class" .class - "color" .color - "items" .items -)) }} - -{{ if $raw }} - {{ partial "utilities/section.html" (dict - "component-name" "faw" - "id" .id - "raw" $raw - "background" .background - "width" .width - "justify" .justify - "wrapper" .wrapper - "fluid" .fluid - "theme" .theme - "cover" .cover - "overlay-mode" (or .overlay_mode (index . "overlay-mode")) - "section-class" (or .section_class (index . "section-class")) - "bg-class" (or .bg_class (index . "bg-class")) - )}} -{{ end }} \ No newline at end of file diff --git a/component-library/components/faq/faq.scss b/component-library/components/faq/faq.scss deleted file mode 100644 index cee71f78..00000000 --- a/component-library/components/faq/faq.scss +++ /dev/null @@ -1,44 +0,0 @@ -$accordion-button-icon-white: url("/icons/accordion-button-icon-white.svg") !default; -$accordion-button-active-icon-white: url("/icons/accordion-button-active-icon-white.svg") !default; - - -.accordion-faq { - --#{$prefix}accordion-btn-padding-x: 0; - --#{$prefix}accordion-btn-focus-border-color: none; - --#{$prefix}accordion-btn-focus-box-shadow: none; - --#{$prefix}accordion-body-padding-x: 0; - --#{$prefix}accordion-active-color: var(--#{$prefix}primary); - --#{$prefix}accordion-active-bg: none; - --#{$prefix}accordion-border-color: var(--#{$prefix}body-color); - --#{$prefix}accordion-bg: none; -} - -.accordion-faq .accordion-button { - font-size: $h5-font-size; -} - -// note: explicitly suppresses border in Safari -.accordion-faq [aria-expanded="true"] { - --#{$prefix}accordion-border-color: none; -} - -.accordion-faq-contrast { - --#{$prefix}accordion-active-color: var(--#{$prefix}white); - --#{$prefix}accordion-border-color: white; -} - -.accordion-faq-contrast .accordion-button, .accordion-faq-contrast .accordion-body { - --#{$prefix}accordion-btn-icon: #{$accordion-button-icon-white}; - --#{$prefix}accordion-btn-active-icon: #{$accordion-button-active-icon-white}; - --#{$prefix}accordion-border-color: white; - - color: white; -} - -@if $enable-dark-mode { - @include color-mode(dark) { - .accordion-faq .accordion-button { - background-color: transparent; - } - } -} diff --git a/component-library/components/featured/featured.bookshop.yml b/component-library/components/featured/featured.bookshop.yml deleted file mode 100644 index 1df08b6a..00000000 --- a/component-library/components/featured/featured.bookshop.yml +++ /dev/null @@ -1,44 +0,0 @@ -# Metadata about this component, to be used in the CMS -spec: - structures: - - content_blocks - label: Featured - description: Featured section - icon: mode_heat - tags: [] - -# Defines the structure of this component, as well as the default values -blueprint: - heading: - preheading: - title: - content: - align: - arrangement: - width: - size: - background: - backdrop: - color: - subtle: - illustration: - image: - icon: - ratio: - class: - anchor: - mode: - order: - width: - justify: - link_type: - fluid: - theme: - cover: - links: - - - title: - url: - download: - icon: - force: diff --git a/component-library/components/featured/featured.hugo.html b/component-library/components/featured/featured.hugo.html deleted file mode 100644 index 028f5d77..00000000 --- a/component-library/components/featured/featured.hugo.html +++ /dev/null @@ -1,40 +0,0 @@ -{{/* - Copyright © 2025 - 2026 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. - - Note: To support live editing, bookshop components should use a clear path to the provided arguments. - Therefore, we cannot use the InitArgs partial at this point, and we need to access each argument - directly. See the docs for more background: - https://github.com/CloudCannon/bookshop/blob/main/guides/hugo.adoc#passing-data-to-bookshop-components -*/}} - -{{ $raw := partial "assets/hero.html" (dict - "page" page - "heading" (merge (dict "width" 8) (or .heading dict)) - "illustration" (merge (dict "ratio" "auto") (or .illustration dict)) - "order" .order - "link-type" (or .link_type (index . "link-type")) - "links" .links - "orientation" "horizontal" - ) -}} - -{{ if $raw }} - {{ partial "utilities/section.html" (dict - "component-name" "featured" - "id" .id - "raw" $raw - "background" .background - "width" .width - "justify" .justify - "wrapper" .wrapper - "fluid" .fluid - "theme" .theme - "cover" .cover - "overlay-mode" (or .overlay_mode (index . "overlay-mode")) - "section-class" (or .section_class (index . "section-class")) - "bg-class" (or .bg_class (index . "bg-class")) - )}} -{{ end }} - diff --git a/component-library/components/featured/featured.scss b/component-library/components/featured/featured.scss deleted file mode 100644 index e69de29b..00000000 diff --git a/component-library/components/hero/hero.bookshop.yml b/component-library/components/hero/hero.bookshop.yml deleted file mode 100644 index 12cfa307..00000000 --- a/component-library/components/hero/hero.bookshop.yml +++ /dev/null @@ -1,43 +0,0 @@ -# Metadata about this component, to be used in the CMS -spec: - structures: - - content_blocks - label: Hero - description: Main page Hero block - icon: title - tags: [] - -# Defines the structure of this component, as well as the default values -blueprint: - breadcrumb: - heading: - preheading: - title: - content: - align: - arrangement: - width: - size: - background: - backdrop: - color: - subtle: - illustration: - image: - icon: - ratio: - class: - anchor: - mode: - width: - link-type: - links: - align: - order: - overlay-mode: - fluid: - theme: - cover: - orientation: - width: - justify: diff --git a/component-library/components/hero/hero.hugo.html b/component-library/components/hero/hero.hugo.html deleted file mode 100644 index c361ff99..00000000 --- a/component-library/components/hero/hero.hugo.html +++ /dev/null @@ -1,41 +0,0 @@ -{{/* - Copyright © 2025 - 2026 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. - - Note: To support live editing, bookshop components should use a clear path to the provided arguments. - Therefore, we cannot use the InitArgs partial at this point, and we need to access each argument - directly. See the docs for more background: - https://github.com/CloudCannon/bookshop/blob/main/guides/hugo.adoc#passing-data-to-bookshop-components -*/}} - -{{ $raw := partial "assets/hero.html" (dict - "page" page - "breadcrumb" .breadcrumb - "heading" .heading - "illustration" .illustration - "align" .align - "order" .order - "link-type" (or .link_type (index . "link-type")) - "links" .links - "orientation" .orientation - ) -}} - -{{ if $raw }} - {{ partial "utilities/section.html" (dict - "component-name" "hero" - "id" .id - "raw" $raw - "background" .background - "width" .width - "justify" .justify - "wrapper" .wrapper - "fluid" .fluid - "theme" .theme - "cover" .cover - "overlay-mode" (or .overlay_mode (index . "overlay-mode")) - "section-class" (or .section_class (index . "section-class")) - "bg-class" (or .bg_class (index . "bg-class")) - )}} -{{ end }} \ No newline at end of file diff --git a/component-library/components/hero/hero.scss b/component-library/components/hero/hero.scss deleted file mode 100644 index 0934c6b2..00000000 --- a/component-library/components/hero/hero.scss +++ /dev/null @@ -1,18 +0,0 @@ -.background-img-fluid { - position: absolute; - object-fit: cover; - height: 100%; - width: 100%; - z-index: -1; -} - -.background-container { - position: relative; - width: 100%; - height: auto; - background-color: rgba($dark, 0.8); -} - -.hero-content { - z-index: 1; -} diff --git a/component-library/components/list/list.bookshop.yml b/component-library/components/list/list.bookshop.yml deleted file mode 100644 index b67f2722..00000000 --- a/component-library/components/list/list.bookshop.yml +++ /dev/null @@ -1,43 +0,0 @@ -# Metadata about this component, to be used in the CMS -spec: - structures: - - content_blocks - label: List - description: List section - icon: post - tags: [] - -# Defines the structure of this component, as well as the default values -blueprint: - heading: - preheading: - heading: - content: - align: - width: - hide_empty: - input: - section: - nested: - keywords: - categories: - tags: - reverse: - sort: - hook: - limit: - background: - backdrop: - color: - subtle: - cover: - class: - width: - justify: - theme: - sortable: - paginate: - pagination: - pagination_select: - searchable: - wrap: diff --git a/component-library/components/list/list.hugo.html b/component-library/components/list/list.hugo.html deleted file mode 100644 index e89f461b..00000000 --- a/component-library/components/list/list.hugo.html +++ /dev/null @@ -1,114 +0,0 @@ -{{/* - Copyright © 2025 - 2026 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. - - Note: To support live editing, bookshop components should use a clear path to the provided arguments. - Therefore, we cannot use the InitArgs partial at this point, and we need to access each argument - directly. See the docs for more background: - https://github.com/CloudCannon/bookshop/blob/main/guides/hugo.adoc#passing-data-to-bookshop-components -*/}} - - -{{/* Initialize global arguments */}} -{{- $padding := partial "utilities/GetPadding.html" -}} - -{{/* Ensure to include the simple-datatables module */}} -{{/* TODO: fix add module handling, requires propagating scratch variables to correct page */}} -{{ partial "utilities/AddModule.html" (dict "page" ._page "module" "simple-datatables" ) }} - -{{/* Initialize local variables */}} -{{ $pages := slice }} -{{ $result := dict "total" 0 }} -{{ with .input }} - {{ $result = partial "assets/live-pages.html" (dict - "page" $._page - "section" .section - "nested" .nested - "keywords" .keywords - "categories" .categories - "tags" .tags - "sort" .sort - "reverse" .reverse - )}} - {{ $pages = $result.pages }} -{{ end }} - -{{ if and .limit .paginate }} - {{ partial "utilities/LogWarn.html" (dict - "partial" "component-library/components/list/list.hugo.html" - "msg" "Limit is ignored when paginate is set" - "file" page.File - )}} -{{ end }} - -{{/* Limit list to max elements */}} -{{- $count := len $pages -}} -{{- $max := $count -}} -{{- $max = math.Min (.limit | default $count) $count -}} -{{- if not .paginate -}} - {{- $pages = first $max $pages -}} -{{- end -}} - -{{/* Main code */}} -{{ $hideEmpty := or .hide_empty (index . "hide-empty") }} -{{ if or (gt (len $pages) 0) (not $hideEmpty) }} - {{- $raw := partial "assets/section-title.html" (dict - "heading" .heading - "justify" .justify - "class" (printf "pb-%d" $padding.y)) - -}} - {{ if gt (len $pages) 0 }} - {{ $content := "" }} - {{ if .hook }} - {{ $content = partial .hook (dict "pages" $pages) }} - {{ else }} - {{ $content = "| Title | Description |\n|-|-|\n" }} - {{ range $pages }} - {{ $content = printf "%s[%s](#%s) | %s |\n" $content .LinkTitle .RelPermalink .Description }} - {{ end }} - {{ end }} - - {{- /* Define main breakpoint */ -}} - {{- .page.Scratch.Set "breakpoint" (partialCached "utilities/GetBreakpoint.html" .) }} - - {{ $pagination := .pagination | default 10 }} - {{ $paginate := and .paginate (gt (len $pages) $pagination) }} - {{ $sortable := and .sortable (gt (len $pages) 1) }} - {{ $searchable := and .searchable (gt (len $pages) 1) }} - - {{ $raw = printf "%s%s" $raw (partial "assets/table.html" (dict - "page" (or .page page) - "input" $content - "breakpoint" .breakpoint - "class" .class - "sortable" $sortable - "paginate" $paginate - "pagination" (cond $paginate $pagination "") - "pagination-select" (cond $paginate (or .pagination_select (index . "pagination-select")) "") - "searchable" $searchable - "wrap" .wrap - "_default" .default - )) }} - {{ else }} - {{ $raw = printf `%s

%s.

` $raw $padding.y (T "emptyList") }} - {{ end }} - - {{ if $raw }} - {{ partial "utilities/section.html" (dict - "component-name" "list" - "id" .id - "raw" $raw - "background" .background - "width" .width - "justify" .justify - "wrapper" .wrapper - "fluid" .fluid - "theme" .theme - "cover" .cover - "overlay-mode" (or .overlay_mode (index . "overlay-mode")) - "section-class" (or .section_class (index . "section-class")) - "bg-class" (or .bg_class (index . "bg-class")) - )}} - {{ end }} -{{ end }} diff --git a/component-library/components/list/list.scss b/component-library/components/list/list.scss deleted file mode 100644 index fc9b00ee..00000000 --- a/component-library/components/list/list.scss +++ /dev/null @@ -1,29 +0,0 @@ -section.list { - .table { - --bs-table-bg: transparent; - --bs-table-border-color: var(--bs-table-color); - - th:first-child, td:first-child { - padding-left: 0; - } - - th:last-child, .td:last-child { - padding-right: 0; - } - - th { - border-bottom-color: var(--bs-table-border-color) !important; - } - } - - - [class^="table-responsive-"] { - width: 100%; - } - - .datatable-top, .datatable-bottom { - padding-left: 0; - padding-right: 0; - padding-bottom: 2rem; - } -} diff --git a/component-library/components/menu/menu.bookshop.yml b/component-library/components/menu/menu.bookshop.yml deleted file mode 100644 index 004bbd3f..00000000 --- a/component-library/components/menu/menu.bookshop.yml +++ /dev/null @@ -1,32 +0,0 @@ -# Metadata about this component, to be used in the CMS -spec: - structures: - - content_blocks - label: Menu - description: Index of menu items - icon: menu - tags: [] - -# Defines the structure of this component, as well as the default values -blueprint: - heading: - preheading: - heading: - content: - align: - width: - cols: - menu: - menu-style: - icon-rounded: false - icon-style: - background: - backdrop: - color: - subtle: - class: - width: - justify: - fluid: - theme: - cover: diff --git a/component-library/components/menu/menu.hugo.html b/component-library/components/menu/menu.hugo.html deleted file mode 100644 index b68d4773..00000000 --- a/component-library/components/menu/menu.hugo.html +++ /dev/null @@ -1,48 +0,0 @@ -{{/* - Copyright © 2025 - 2026 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. - - Note: To support live editing, bookshop components should use a clear path to the provided arguments. - Therefore, we cannot use the InitArgs partial at this point, and we need to access each argument - directly. See the docs for more background: - https://github.com/CloudCannon/bookshop/blob/main/guides/hugo.adoc#passing-data-to-bookshop-components -*/}} - -{{/* Initialize global arguments */}} -{{- $padding := partial "utilities/GetPadding.html" -}} - -{{/* Main code */}} -{{- $raw := partial "assets/section-title.html" (dict - "heading" .heading - "justify" .justify - "class" (printf "pb-%d" $padding.y)) --}} - -{{- $raw = printf "%s%s" $raw (partial "assets/menu.html" (dict - "page" page - "menu" .menu - "menu-style" .menuStyle - "cols" .cols - "icon-rounded" .iconRounded - "icon-style" .iconStyle -)) -}} - - -{{ if $raw }} - {{ partial "utilities/section.html" (dict - "component-name" "menu" - "id" .id - "raw" $raw - "background" .background - "width" .width - "justify" .justify - "wrapper" .wrapper - "fluid" .fluid - "theme" .theme - "cover" .cover - "overlay-mode" (or .overlay_mode (index . "overlay-mode")) - "section-class" (or .section_class (index . "section-class")) - "bg-class" (or .bg_class (index . "bg-class")) - )}} -{{ end }} \ No newline at end of file diff --git a/component-library/components/menu/menu.scss b/component-library/components/menu/menu.scss deleted file mode 100644 index 86575fb9..00000000 --- a/component-library/components/menu/menu.scss +++ /dev/null @@ -1,44 +0,0 @@ -section.menu { - .m-col div, .col div { - border-radius: #{$theme-border-radius} if($enable-important-utilities, !important, null); - } - - .menu-item { - --bs-menu-border: var(--bs-border-color); - --bs-menu-color-hover: var(--bs-light); - --bs-menu-background-hover: var(--bs-primary); - --bs-menu-item-color-hover: var(--bs-gray-300); - - position: relative; - border: solid var(--bs-menu-border); - - &:hover, - &:focus { - background-color: var(--bs-menu-background-hover) if($enable-important-utilities, !important, null); - color: var(--bs-menu-color-hover) if($enable-important-utilities, !important, null); - transition-property: background-color, border-color; - transition-duration: .3s; - transition-timing-function: ease-in-out; - - .fa-inverse { - color: var(--bs-menu-background-hover); - } - } - } - - .menu-link { - // make menu-link clickable on top of the stretched-link. - z-index: 2 if($enable-important-utilities, !important, null); - position: relative; - - &:hover, - &:focus { - color: var(--bs-menu-item-color-hover) if($enable-important-utilities, !important, null); - } - } - - .menu-link-header { - font-weight: $font-weight-bold if($enable-important-utilities, !important, null); - font-size: $h5-font-size if($enable-important-utilities, !important, null); - } -} diff --git a/component-library/components/panels/panels.bookshop.yml b/component-library/components/panels/panels.bookshop.yml deleted file mode 100644 index fb2ce027..00000000 --- a/component-library/components/panels/panels.bookshop.yml +++ /dev/null @@ -1,38 +0,0 @@ -# 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: - fluid: - theme: - cover: diff --git a/component-library/components/panels/panels.hugo.html b/component-library/components/panels/panels.hugo.html deleted file mode 100644 index bed3d0dc..00000000 --- a/component-library/components/panels/panels.hugo.html +++ /dev/null @@ -1,93 +0,0 @@ -{{/* - Copyright © 2025 - 2026 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. - - Note: To support live editing, bookshop components should use a clear path to the provided arguments. - Therefore, we cannot use the InitArgs partial at this point, and we need to access each argument - directly. See the docs for more background: - https://github.com/CloudCannon/bookshop/blob/main/guides/hugo.adoc#passing-data-to-bookshop-components -*/}} - -{{/* 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" (md5 (delimit (slice . now) "-")) }} -{{ $inner := "" }} -{{ range $i, $element := .elements }} - {{ $toc = $toc | append (dict "href" "panel-0-1" "level" 2 "title" .title) }} - - {{ $hero := partial "assets/hero.html" (dict - "page" page - "heading" (dict "content" .content "width" 8) - "background" .background - "illustration" (dict "ratio" (or .ratio "1x1") "icon" .icon "image" .image "mode" .mode "justify" "end") - "order" .order - "link-type" (or .link_type (index . "link-type")) - "links" .links - "orientation" "horizontal" - "align" "start" - "width" 12 - "content-style" "fs-6" - ) - }} - - {{- $output := partial "assets/nav-item.html" (dict - "page" page - "id" $i - "parent-id" $parentID - "fade" false - "title" .title - "show" (eq $i 0) - "raw" $hero - ) - -}} - - {{ $inner = printf "%s\n%s" $inner $output }} - {{ $titles = $titles | append .title }} -{{ end}} - -{{/* Main code */}} -{{- $raw := partial "assets/section-title.html" (dict - "heading" .heading - "justify" .justify - "class" (printf "pb-%d" $padding.y)) --}} - -{{- $raw = printf "%s%s" $raw (partial "assets/nav.html" (dict - "id" (or .id $parentID) - "page" page - "nav-items" $inner - "nav-titles" $titles - "tab-type" (or .tab_type (index . "tab-type")) - "vertical" .vertical - "word-wrap" (or .word_wrap (index . "word-wrap")) - "class" .class - "pane" .pane - "width" .width - "responsive" .responsive - )) --}} - -{{ if $raw }} - {{ partial "utilities/section.html" (dict - "component-name" "panels" - "id" .id - "raw" $raw - "background" .background - "width" .width - "justify" .justify - "wrapper" .wrapper - "fluid" .fluid - "theme" .theme - "cover" .cover - "overlay-mode" (or .overlay_mode (index . "overlay-mode")) - "section-class" (or .section_class (index . "section-class")) - "bg-class" (or .bg_class (index . "bg-class")) - )}} -{{ end }} \ No newline at end of file diff --git a/component-library/components/panels/panels.scss b/component-library/components/panels/panels.scss deleted file mode 100644 index 9d73988c..00000000 --- a/component-library/components/panels/panels.scss +++ /dev/null @@ -1,13 +0,0 @@ -.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}; -} diff --git a/component-library/components/releases/releases.bookshop.yml b/component-library/components/releases/releases.bookshop.yml deleted file mode 100644 index 422ca766..00000000 --- a/component-library/components/releases/releases.bookshop.yml +++ /dev/null @@ -1,29 +0,0 @@ -# Metadata about this component, to be used in the CMS -spec: - structures: - - content_blocks - label: Releases - description: Release timeline - icon: fingerprint - tags: [] - -# Defines the structure of this component, as well as the default values -blueprint: - heading: - preheading: - title: - content: - align: - arrangement: - width: - size: - background: - backdrop: - color: - subtle: - width: - justify: - data: - fluid: - theme: - cover: diff --git a/component-library/components/releases/releases.hugo.html b/component-library/components/releases/releases.hugo.html deleted file mode 100644 index 65bd2532..00000000 --- a/component-library/components/releases/releases.hugo.html +++ /dev/null @@ -1,37 +0,0 @@ -{{/* - Copyright © 2025 - 2026 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. - - Note: To support live editing, bookshop components should use a clear path to the provided arguments. - Therefore, we cannot use the InitArgs partial at this point, and we need to access each argument - directly. See the docs for more background: - https://github.com/CloudCannon/bookshop/blob/main/guides/hugo.adoc#passing-data-to-bookshop-components -*/}} - -{{/* Main code */}} -{{ $raw := partial "assets/timeline.html" (dict - "page" page - "background" .background - "heading" .heading - "data" .data - ) -}} - -{{ if $raw }} - {{ partial "utilities/section.html" (dict - "component-name" "releases" - "id" .id - "raw" $raw - "background" .background - "width" .width - "justify" .justify - "wrapper" .wrapper - "fluid" .fluid - "theme" .theme - "cover" .cover - "overlay-mode" (or .overlay_mode (index . "overlay-mode")) - "section-class" (or .section_class (index . "section-class")) - "bg-class" (or .bg_class (index . "bg-class")) - )}} -{{ end }} \ No newline at end of file diff --git a/component-library/components/releases/releases.scss b/component-library/components/releases/releases.scss deleted file mode 100644 index e69de29b..00000000 diff --git a/component-library/components/separator/separator.bookshop.yml b/component-library/components/separator/separator.bookshop.yml deleted file mode 100644 index 81b71af8..00000000 --- a/component-library/components/separator/separator.bookshop.yml +++ /dev/null @@ -1,10 +0,0 @@ -# Metadata about this component, to be used in the CMS -spec: - structures: - - content_blocks - label: Separator - description: Inserts a horizontal page section separator - icon: horizontal_rule - tags: [] - -blueprint: diff --git a/component-library/components/separator/separator.hugo.html b/component-library/components/separator/separator.hugo.html deleted file mode 100644 index d0ff03c0..00000000 --- a/component-library/components/separator/separator.hugo.html +++ /dev/null @@ -1,7 +0,0 @@ -{{/* - Copyright © 2025 - 2026 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. -*/}} - -
diff --git a/component-library/components/separator/separator.scss b/component-library/components/separator/separator.scss deleted file mode 100644 index e69de29b..00000000 diff --git a/component-library/components/team/team.bookshop.yml b/component-library/components/team/team.bookshop.yml deleted file mode 100644 index 8f434ad1..00000000 --- a/component-library/components/team/team.bookshop.yml +++ /dev/null @@ -1,50 +0,0 @@ -# Metadata about this component, to be used in the CMS -spec: - structures: - - content_blocks - label: Teams - description: Teams section - icon: groups - tags: [] - -# Defines the structure of this component, as well as the default values -blueprint: - heading: - preheading: - heading: - content: - align: - width: - hide_empty: - input: - section: - nested: - keywords: - categories: - tags: - reverse: - sort: - more: - title: - link: - link_type: - icon: - cols: - padding: - limit: - pagination: - paginate: - background: - backdrop: - color: - subtle: - cover: - header_style: - body_style: - footer_style: - orientation: - class: - width: - justify: - fluid: - theme: diff --git a/component-library/components/team/team.hugo.html b/component-library/components/team/team.hugo.html deleted file mode 100644 index b448987e..00000000 --- a/component-library/components/team/team.hugo.html +++ /dev/null @@ -1,121 +0,0 @@ -{{/* - Copyright © 2025 - 2026 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. - - Note: To support live editing, bookshop components should use a clear path to the provided arguments. - Therefore, we cannot use the InitArgs partial at this point, and we need to access each argument - directly. See the docs for more background: - https://github.com/CloudCannon/bookshop/blob/main/guides/hugo.adoc#passing-data-to-bookshop-components -*/}} - -{{/* Initialize global arguments */}} -{{- $padding := partial "utilities/GetPadding.html" -}} - -{{/* Initialize local variables */}} -{{ $pages := slice }} -{{ $section := "" }} -{{ $categories := "" }} -{{ $result := dict "total" 0 }} -{{ with .input }} - {{ $section = .section }} - {{ $categories = .categories }} - {{ $result = partial "assets/live-pages.html" (dict - "page" $.page - "section" .section - "nested" .nested - "keywords" .keywords - "categories" .categories - "tags" .tags - "sort" .sort - "reverse" .reverse - )}} - {{ $pages = $result.pages }} -{{ end }} - - -{{ $moreButton := site.Params.modules.bookshop.team.moreButton | default false }} -{{ $title := or $section $categories (T "article") }} -{{ $moreTitle := T "more" (pluralize $title) }} -{{ $moreLink := $section }} -{{ $moreType := "button" }} -{{ $moreIcon := "" }} -{{ with .more }} - {{ if .title }}{{ $moreTitle = .title }}{{ end }} - {{ if .link }}{{ $moreLink = .link }}{{ end }} - {{ if (or .link_type index . "link-type") }}{{ $moreType = or .link_type (index . "link-type") }}{{ end }} - {{ if .icon }}{{ $moreIcon = .icon }}{{ end }} -{{ end }} - -{{ $paginate := .paginate }} -{{ if and $paginate page.IsPage }} - {{ partial "utilities/LogWarn.html" (dict - "partial" "component-library/components/team/team.hugo.html" - "msg" "Pagination not supported" - "file" page.File - )}} - {{ $paginate = false }} -{{ end }} - -{{/* Main code */}} -{{ $hideEmpty := or .hide_empty (index . "hide-empty") }} -{{ if or (gt (len $pages) 0) (not $hideEmpty) }} - {{- $raw := partial "assets/section-title.html" (dict - "heading" .heading - "justify" .justify - "class" (printf "pb-%d" $padding.y)) - -}} - - {{ $partial := "assets/card-group.html" }} - {{ $params := dict }} - {{- $params = merge $params (dict - "page" page - "list" $pages - "cols" .cols - "limit" .limit - "padding" .padding - "href" (cond $moreButton $moreLink "") - "href-force" (gt $result.total (len $result.pages)) - )}} - - {{ $params = merge $params (dict - "ratio" "1x1" - "header-style" (or .header_style (index . "header-style")) - "body-style" (or .body_style (index . "body-style")) - "footer-style" (or .footer_style (index . "footer-style")) - "class" (or .class "border-0") - "align" "center" - "orientation" .orientation - "href-title" (cond $moreButton $moreTitle "") - "icon-rounded" (or .icon_rounded (index . "icon-rounded")) - "icon-style" (or .icon_style (index . "icon-style")) - "hook" "assets/live-card.html" - "more-link-type" $moreType - "more-link-icon" $moreIcon - "pagination" .pagination - "paginate" $paginate - ) -}} - {{ if gt (len $pages) 0 }} - {{ $raw = printf "%s%s" $raw (partial $partial $params) }} - {{ else }} - {{ $raw = printf `%s

%s.

` $raw $padding.y T "emptyList" }} - {{ end }} - - {{ if $raw }} - {{ partial "utilities/section.html" (dict - "component-name" "team" - "id" .id - "raw" $raw - "background" .background - "width" .width - "justify" .justify - "wrapper" .wrapper - "fluid" .fluid - "theme" .theme - "cover" .cover - "overlay-mode" (or .overlay_mode (index . "overlay-mode")) - "section-class" (or .section_class (index . "section-class")) - "bg-class" (or .bg_class (index . "bg-class")) - )}} - {{ end }} -{{ end }} diff --git a/component-library/components/team/team.scss b/component-library/components/team/team.scss deleted file mode 100644 index e69de29b..00000000 diff --git a/component-library/components/testimonials/testimonials.bookshop.yml b/component-library/components/testimonials/testimonials.bookshop.yml deleted file mode 100644 index 5bd3339b..00000000 --- a/component-library/components/testimonials/testimonials.bookshop.yml +++ /dev/null @@ -1,31 +0,0 @@ -# Metadata about this component, to be used in the CMS -spec: - structures: - - content_blocks - label: Testimonials - description: Testimonials section - icon: build - tags: [] - -# Defines the structure of this component, as well as the default values -blueprint: - background: - color: - subtle: - card: - color: - subtle: - icon_style: - testimonials: - - logo: - icon: - scale: - content: - client: - name: - url: - image: - mode: - link: - carousel: - cols: diff --git a/component-library/components/testimonials/testimonials.hugo.html b/component-library/components/testimonials/testimonials.hugo.html deleted file mode 100644 index 1346f992..00000000 --- a/component-library/components/testimonials/testimonials.hugo.html +++ /dev/null @@ -1,138 +0,0 @@ -{{/* - Copyright © 2025 - 2026 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. - - Note: To support live editing, bookshop components should use a clear path to the provided arguments. - Therefore, we cannot use the InitArgs partial at this point, and we need to access each argument - directly. See the docs for more background: - https://github.com/CloudCannon/bookshop/blob/main/guides/hugo.adoc#passing-data-to-bookshop-components -*/}} - -{{ define "_partials/inline/testimonial-carousel.html" }} - {{ $carousel := .carousel }} - {{ $testimonials := .testimonials }} - {{ $card := .card }} - {{ $padding := .padding }} - {{ $colGrid := .colGrid }} - {{ $iconStyle := index . "icon-style" }} - - {{ if and $carousel (gt (len $testimonials) 1) }} - {{ $id := printf "testimonial-carousel-%s" (md5 (delimit (slice . now) "-")) }} - - {{ else }} -
-
- {{ range $testimonials }} -
- {{ partial "assets/testimonial.html" (dict - "page" page - "content" .content - "logo" .logo - "icon" .icon - "icon-style" $iconStyle - "scale" .scale - "contact" (cond (.client | not | not) .client.contact "") - "role" (cond (.client | not | not) .client.role "") - "image" (cond (.client | not | not) .client.image "") - "url" (cond (.client | not | not) .client.url "") - "link" .link - "padding" $padding.x - "class" (partial "utilities/GetBackgroundStyle" (dict "background" $card)) - )}} -
- {{ end}} -
-
- {{ end }} -{{ end }} - -{{/* Initialize global arguments */}} -{{- $style := partial "utilities/GetBackgroundStyle" (dict "background" .background) -}} -{{- $breakpoint := partial "utilities/GetBreakpoint.html" -}} -{{- $padding := partial "utilities/GetPadding.html" -}} - -{{/* Main code */}} -{{ $colGrid := printf "row-cols-%d" (.cols | default 1) }} -{{- if eq .cols 1 }} - {{ $colGrid = "row-cols-1" -}} -{{- else if eq .cols 2 }} - {{ $colGrid = printf "row-cols-1 row-cols-%s-2" $breakpoint.next }} -{{- else if eq .cols 3 }} - {{ $colGrid = printf "row-cols-1 row-cols-%s-3" $breakpoint.next }} -{{- else if eq .cols 4 }} - {{ $colGrid = printf "row-cols-1 row-cols-%s-2 row-cols-%s-4" $breakpoint.current $breakpoint.next }} -{{- else if eq .cols 5 }} - {{ $colGrid = printf "row-cols-1 row-cols-%s-3 row-cols-%s-5" $breakpoint.current $breakpoint.next }} -{{ end -}} - -{{ $raw := partial "inline/testimonial-carousel.html" (dict - "carousel" .carousel - "testimonials" .testimonials - "card" .card - "padding" .padding - "colGrid" $colGrid - "icon-style" (or .icon_style (index . "icon-style")) -) }} - -{{ if $raw }} - {{ partial "utilities/section.html" (dict - "component-name" "testimonials" - "id" .id - "raw" $raw - "background" .background - "width" .width - "justify" .justify - "wrapper" .wrapper - "fluid" .fluid - "theme" .theme - "cover" .cover - "overlay-mode" (or .overlay_mode (index . "overlay-mode")) - "section-class" (or .section_class (index . "section-class")) - "bg-class" (or .bg_class (index . "bg-class")) - )}} -{{ end }} \ No newline at end of file diff --git a/component-library/components/testimonials/testimonials.scss b/component-library/components/testimonials/testimonials.scss deleted file mode 100644 index 21052c30..00000000 --- a/component-library/components/testimonials/testimonials.scss +++ /dev/null @@ -1,18 +0,0 @@ -section.testimonials { - .carousel, .testimonial-grid { - width: 100%; - } - - .carousel-control-prev, .carousel-control-next { - color: var(--bs-primary-text-emphasis); - - &:hover, - &:focus { - color: var(--bs-primary); - } - } - - .carousel-indicators button { - background-color: $primary !important; - } -} diff --git a/component-library/components/video-message/video-message.bookshop.yml b/component-library/components/video-message/video-message.bookshop.yml deleted file mode 100644 index 7f9d584f..00000000 --- a/component-library/components/video-message/video-message.bookshop.yml +++ /dev/null @@ -1,57 +0,0 @@ -# Metadata about this component, to be used in the CMS -spec: - structures: - - content_blocks - label: Video - description: Video section - icon: build - tags: [] - -# Defines the structure of this component, as well as the default values -blueprint: - heading: - preheading: - title: - content: - align: - arrangement: - width: - size: - background: - backdrop: - color: - subtle: - link_type: - orientation: - icon_rounded: - icon_style: - video: - provider: - account: - media_id: - autoplay: - query_args: - color: - cols: - messages: - - title: - icon: - content: - link: - label: - border: - width: - justify: - fluid: - theme: - cover: - -_structures: - messages: - values: - value: - title: - icon: - content: - link: - label: diff --git a/component-library/components/video-message/video-message.hugo.html b/component-library/components/video-message/video-message.hugo.html deleted file mode 100644 index ce5d80a1..00000000 --- a/component-library/components/video-message/video-message.hugo.html +++ /dev/null @@ -1,185 +0,0 @@ -{{/* - Copyright © 2025 - 2026 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. - - Note: To support live editing, bookshop components should use a clear path to the provided arguments. - Therefore, we cannot use the InitArgs partial at this point, and we need to access each argument - directly. See the docs for more background: - https://github.com/CloudCannon/bookshop/blob/main/guides/hugo.adoc#passing-data-to-bookshop-components -*/}} - -{{/* Initialize global variables */}} -{{- $breakpoint := partial "utilities/GetBreakpoint.html" -}} -{{- $padding := partial "utilities/GetPadding.html" -}} - -{{- define "_partials/inline/video.html" -}} - {{ $provider := .provider }} - {{ $account := .account }} - {{ $mediaID := (index . "media-id") }} - {{ $autoplay := .autoplay }} - {{ $queryArgs := .queryArgs }} - {{ $border := .border }} - {{ $padding := .padding }} - {{ $color := .color }} - - {{ if site.Params.env_bookshop_live }} - {{/* Define dummy content as we cannot retrieve video data in live mode */}} - {{- partial "assets/live-image.html" (dict - "src" "/img/placeholder-video.svg" - "ratio" "21x9" - "wrapper" (printf "text-center mb-%d" $padding.y)) -}} - {{ else }} -
- {{ partial "assets/video.html" (dict - "page" page - "provider" $provider - "account" $account - "media-id" $mediaID - "autoplay" $autoplay - "query-args" $queryArgs - ) -}} - {{ if $border }} -
-
-
-
- {{ end }} -
- {{ end }} -{{ end }} - -{{- define "_partials/inline/messages.html" -}} - {{ $list := .list }} - {{ $cols := .cols }} - {{ $linkType := .linkType }} - {{ $iconRounded := .iconRounded }} - {{ $iconStyle := .iconStyle }} - - {{- partial "assets/card-group.html" (dict - "page" page - "list" $list - "class" "border-0 card-icon card-icon-secondary" - "cols" $cols - "gutter" "" - "padding" "0" - "header-style" "none" - "footer-style" "none" - "icon-style" "fa-fluid fa-fw" - "align" "start" - "orientation" "horizontal-sm" - "button" true - "link-type" $linkType - "icon-rounded" $iconRounded - "icon-style" $iconStyle - ) -}} -{{ end }} - -{{- define "_partials/inline/video-stacked.html" -}} - {{ $breakpoint := .breakpoint }} - {{ $padding := .padding }} - {{ $width := .width | default 8 }} - {{ $video := .video }} - {{ $messages := .messages }} - -
- {{ $video | safeHTML }} -
-
- {{ $messages | safeHTML }} -
-{{ end }} - -{{- define "_partials/inline/video-horizontal.html" -}} - {{ $breakpoint := .breakpoint }} - {{ $padding := .padding }} - {{ $width := .width | default 9 }} - {{ $video := .video }} - {{ $messages := .messages }} - -
-
-
- {{ $video | safeHTML }} -
-
- {{ $messages | safeHTML }} -
-
-
-{{ end }} - -{{/* Main code */}} -{{ $list := slice }} - -{{ range .messages }} - {{ $path := "" }} - {{ $href := "" }} - {{ with .link }}{{ if hasPrefix . "http" }}{{ $href = . }}{{ else }}{{ $path = . }}{{ end }}{{ end }} - - {{ $list = $list | append (dict - "title" .title - "description" (.content | page.RenderString) - "icon" .icon - "href" $href - "path" $path - "button-label" .label - ) }} -{{ end}} - -{{- $raw := partial "assets/section-title.html" (dict - "heading" .heading - "justify" .justify - "class" (printf "pb-%d" $padding.y)) --}} - -{{ $video := "" }} -{{ with .video }} - {{ $video = partial "inline/video.html" (dict - "provider" .provider - "account" .account - "media-id" (or .media_id (index . "media-id")) - "autoplay" .autoplay - "query-args" (or .query_args (index . "query-args")) - "border" $.border - "padding" $padding - "color" .color - ) -}} -{{ end }} - -{{- $messages := partial "inline/messages.html" (dict - "list" $list - "cols" (cond (eq .orientation "stacked") .cols 1) - "type" .type - "linkType" (or .link_type (index . "link-type")) - "iconRounded" (or .icon_rounded (index . "icon-rounded")) - "iconStyle" (or .icon_style (index . "icon-style")) -) -}} - -{{ $partial := cond (eq .orientation "stacked") "inline/video-stacked.html" "inline/video-horizontal.html" }} - -{{- $raw = printf "%s%s" $raw (partial $partial (dict - "breakpoint" $breakpoint - "padding" $padding - "width" .width - "video" $video - "messages" $messages -)) }} - -{{ if $raw }} - {{ partial "utilities/section.html" (dict - "component-name" "video-message" - "id" .id - "raw" $raw - "background" .background - "width" .width - "justify" .justify - "wrapper" .wrapper - "fluid" .fluid - "theme" .theme - "cover" .cover - "overlay-mode" (or .overlay_mode (index . "overlay-mode")) - "section-class" (or .section_class (index . "section-class")) - "bg-class" (or .bg_class (index . "bg-class")) - )}} -{{ end }} \ No newline at end of file diff --git a/component-library/components/video-message/video-message.scss b/component-library/components/video-message/video-message.scss deleted file mode 100644 index 5182262d..00000000 --- a/component-library/components/video-message/video-message.scss +++ /dev/null @@ -1,60 +0,0 @@ -.video-container { - --bs-video-border-color: var(--bs-primary); - --bs-video-border-width: 1rem; - - border-radius: $theme-border-radius; - position: relative; -} - -.video-container > .video-embedded { - display: block; - width: 100%; - height: 100%; - background-color: transparent; -} - -.video-container-border > .video-embedded { - width: calc(100% - var(--bs-video-border-width) / 2); - height: calc(100% - var(--bs-video-border-width) / 2); - margin-left: calc(var(--bs-video-border-width) / 2); - padding: 1rem; -} - -.video-overlay { - border: calc(var(--bs-video-border-width) / 2) solid var(--bs-video-border-color); - background: var(--bs-video-border-color); - overflow: hidden; - position: absolute; -} - -.video-overlay-start { - border-bottom-left-radius: $theme-border-radius; - border-top-left-radius: $theme-border-radius; - width: 1; - height: 100%; - left: 0; - bottom: 0; -} - -.video-overlay-top { - width: calc(100% - 1rem); - height: 1; - left: 1rem; - top: 0; -} - -.video-overlay-bottom { - width: calc(100% - 1rem); - height: 1; - left: 1rem; - bottom: 0; -} - -.video-overlay-end { - border-bottom-right-radius: $theme-border-radius; - border-top-right-radius: $theme-border-radius; - width: 1; - height: 100%; - left: 100%; - bottom: 0; -} diff --git a/component-library/config.toml b/component-library/config.toml deleted file mode 100644 index ae5b84c8..00000000 --- a/component-library/config.toml +++ /dev/null @@ -1,25 +0,0 @@ -[module] - hugoVersion.extended = true - hugoVersion.min = '0.146.0' - # expose bookshop partials to Hugo - [[module.mounts]] - source = '.' - target = 'layouts/partials/bookshop' # note: bookshop engine 3.17.1 does not recognize layouts/_partials/bookshop yet - includeFiles = [ - '**/*.hugo.html', - ] - # expose bookshop specifications as Hinode data structure - [[module.mounts]] - source = '.' - target = 'data/structures' - includeFiles = ['**/*.bookshop.yml'] - # integrate main bookshop style with Hinode styles pipeline - [[module.mounts]] - source = 'bookshop.scss' - target = 'assets/scss/bookshop.scss' - # integrate bookshop component styles with Hinode styles pipeline - [[module.mounts]] - source = '.' - target = 'assets/scss/modules/bookshop' - includeFiles = ['**/*.scss'] - excludeFiles = ['bookshop.scss'] diff --git a/component-library/go.mod b/component-library/go.mod deleted file mode 100644 index 4c984031..00000000 --- a/component-library/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module github.com/gethinode/hinode/component-library - -go 1.19 \ No newline at end of file diff --git a/component-library/shared/hugo/page.hugo.html b/component-library/shared/hugo/page.hugo.html deleted file mode 100644 index eeebeb84..00000000 --- a/component-library/shared/hugo/page.hugo.html +++ /dev/null @@ -1,3 +0,0 @@ -{{ range . }} - {{ partial "bookshop" . }} -{{ end }} diff --git a/component-library/shared/styles/global.scss b/component-library/shared/styles/global.scss deleted file mode 100644 index 1c2776a3..00000000 --- a/component-library/shared/styles/global.scss +++ /dev/null @@ -1,23 +0,0 @@ -// Files in shared/styles will be used as global stylesheets on your site, -// as well as in the component browser and screenshots. - -.display-1 > strong { - color: var(--bs-primary); - font-weight: normal !important; -} - -@if $enable-dark-mode { - @include color-mode(dark) { - .preheading.text-primary { - color: #{$primary-text-emphasis-dark} !important; - } - } -} - -h1[class*="display-"] { - margin-top: 0; -} - -.navbar-offset { - padding-top: var(--navbar-offset); -} diff --git a/component-library/theme.scss b/component-library/theme.scss deleted file mode 100644 index d4b20478..00000000 --- a/component-library/theme.scss +++ /dev/null @@ -1,2 +0,0 @@ -// Placeholder to quickly add your own styles -// The file is included last in the build pipeline diff --git a/config/_default/hugo.toml b/config/_default/hugo.toml index 4274792e..cba39b4c 100644 --- a/config/_default/hugo.toml +++ b/config/_default/hugo.toml @@ -114,8 +114,7 @@ home = ["HTML", "RSS", "REDIR", "netlify", "server"] keepWhitespace = true [module] - # Workspace is only configured in exampleSite and downstream projects - replacements = "github.com/gethinode/hinode/component-library -> ../component-library" + # Component-library is now integrated in layouts/component-library [module.hugoVersion] extended = true min = "0.146.0" @@ -137,6 +136,23 @@ home = ["HTML", "RSS", "REDIR", "netlify", "server"] [[module.mounts]] source = "layouts" target = "layouts" + # Bookshop component mounts (from integrated component-library) + [[module.mounts]] + source = "layouts/component-library" + target = "layouts/partials/bookshop" + includeFiles = ["**/*.hugo.html"] + [[module.mounts]] + source = "layouts/component-library" + target = "data/structures" + includeFiles = ["**/*.bookshop.yml"] + [[module.mounts]] + source = "layouts/component-library/bookshop.scss" + target = "assets/scss/bookshop.scss" + [[module.mounts]] + source = "layouts/component-library" + target = "assets/scss/modules/bookshop" + includeFiles = ["**/*.scss"] + excludeFiles = ["bookshop.scss"] [[module.mounts]] source = "static" target = "static" @@ -144,8 +160,6 @@ home = ["HTML", "RSS", "REDIR", "netlify", "server"] source = "netlify.toml" target = "assets/config/netlify.toml" # toml-docs-start modules - [[module.imports]] - path = "github.com/gethinode/hinode/component-library" [[module.imports]] path = "github.com/cloudcannon/bookshop/hugo/v3" [[module.imports]] diff --git a/exampleSite/config/_default/hugo.toml b/exampleSite/config/_default/hugo.toml index 3a09e32f..12e25ccb 100644 --- a/exampleSite/config/_default/hugo.toml +++ b/exampleSite/config/_default/hugo.toml @@ -104,8 +104,7 @@ home = ["HTML", "RSS", "REDIR", "netlify", "server"] output = '{netlify,server}' [module] - # Build and serve using local hinode clone declared in the named Hugo workspace: - workspace = "hinode.work" + # Component-library is now integrated in main Hinode module [[module.imports]] path = "github.com/gethinode/mod-cookieyes/v2" [[module.imports]] diff --git a/exampleSite/go.mod b/exampleSite/go.mod index 1301026e..d6e2d70b 100644 --- a/exampleSite/go.mod +++ b/exampleSite/go.mod @@ -3,5 +3,9 @@ module github.com/gethinode/hinode-example go 1.19 require ( + github.com/gethinode/hinode/v2 v2.0.0-beta.42 // indirect github.com/gethinode/mod-cookieyes/v2 v2.2.6 // indirect ) + +// Use local Hinode for development +replace github.com/gethinode/hinode/v2 => ../ diff --git a/exampleSite/hugo_stats.json b/exampleSite/hugo_stats.json index 48bdd75c..7b396659 100644 --- a/exampleSite/hugo_stats.json +++ b/exampleSite/hugo_stats.json @@ -180,8 +180,6 @@ "col-lg-2", "col-lg-4", "col-lg-8", - "col-md-", - "col-md-0", "col-md-10", "col-md-12", "col-md-2", @@ -251,10 +249,8 @@ "fa-2xl", "fa-2xs", "fa-3", - "fa-4", "fa-4x", "fa-5", - "fa-6", "fa-activity", "fa-address-card", "fa-angle-left", @@ -346,7 +342,6 @@ "fw-30", "fw-bold", "fw-semibold", - "g-", "g-0", "g-3", "g-4", @@ -432,6 +427,7 @@ "mt-md-0", "multi-docs-collapse-15", "multi-docs-collapse-16", + "multi-docs-collapse-2", "multi-file-collapse-1", "mx-auto", "mx-md-2", @@ -682,6 +678,7 @@ "blog", "body-docs-collapse-15", "body-docs-collapse-16", + "body-docs-collapse-2", "body-file-collapse-1", "bootstrap-elements", "bouton", @@ -725,126 +722,11 @@ "docs", "documentation", "dropdown-nav-0", - "dropdown-panel-00dc744f9694a4c11e2551b3e5d3c416", - "dropdown-panel-0286e087db6a7d966dbf68dcbbd9f820", - "dropdown-panel-03094ca869667031f552e2277453837b", - "dropdown-panel-0330957a7967c5c16d540984834537bc", - "dropdown-panel-04af666952b645c32695dbd308ad2805", - "dropdown-panel-08c0f561442f844520148d872eec265e", - "dropdown-panel-0b95997ad8e758a69448fec129bd5089", - "dropdown-panel-0be33e152992afc1aa41f92c9d7736c7", - "dropdown-panel-0fa1a56808f121725fa2f9dc8c719c71", - "dropdown-panel-101a65c32337167bddd2c679cacedd57", - "dropdown-panel-11778c75bd90e030243a626a90ec5ee0", - "dropdown-panel-1379e5ce3a502e6d6ee8ac0d05d74c16", - "dropdown-panel-1bd75e72e478e18ef8c7ad27f5637142", - "dropdown-panel-1c3a5686998181b4e796862214a938f8", - "dropdown-panel-1d268f05cadf1628d20f9e2fc4038dd1", - "dropdown-panel-1ff0914fedb31a2607423b18cfec2e03", - "dropdown-panel-220a5c9c1c1332c97930cc95aa9ef4b7", - "dropdown-panel-22125c0fb2a937e967b6a1bc3205aab6", - "dropdown-panel-22c9826efae57d9b62ee6cf24e99f424", - "dropdown-panel-22fc719e5bf19919872eefd8989e4f92", - "dropdown-panel-25ee6aa529ff014327332d15201587df", - "dropdown-panel-26e77b824a69884b4eb27fa41e4e340a", - "dropdown-panel-2abf036bf376c93b60ddd1b5a57f4d6b", - "dropdown-panel-2d6034168a64fc65bce4d5f5f5a24e63", - "dropdown-panel-2e9a9c7bba066ed35022c7ec48edf933", - "dropdown-panel-2ee9948eeef878d946315fde4eed1d00", - "dropdown-panel-3271f2acf542bea0832422efe3b6800d", - "dropdown-panel-3906f8ea76c45406089fbb95f283d391", - "dropdown-panel-390c307d9b66be978df3a4b37819dae7", - "dropdown-panel-3b22c85517cdfae541a98ae6a8f9b638", - "dropdown-panel-3db3d9ba92940249cc5c1a3bd2c13326", - "dropdown-panel-41aa5d95356b16341840f65a1423fe61", - "dropdown-panel-41eeea8370fb985de32aa83dfeb7aba4", - "dropdown-panel-4560dd5eef95dadbc35e2d33eb098346", - "dropdown-panel-48db486bf3ee1c877d07e24288ffaca1", - "dropdown-panel-4be62ed9efd94568dbab049785a924e5", - "dropdown-panel-4c8934b4c8beefb7c8461d008f38a968", - "dropdown-panel-4d2432895f89f1f90d881d763f870a6a", - "dropdown-panel-4e5f9a400c19f8e18e823399c1e745aa", - "dropdown-panel-4ec03344ffa2846f12566a727bcb28de", - "dropdown-panel-527009c666339bb834f0d33d90e4da81", - "dropdown-panel-562497c4d92b790287796c41a77b731f", - "dropdown-panel-5904839fa43118e51ede78be705f03d3", - "dropdown-panel-591dbf0cc2b4a501e7d313f0c51eb5b8", - "dropdown-panel-5ad28f99f313faa999e76805ab95436c", - "dropdown-panel-5ca916f2b562db694f2b0ad0a1cfd3d3", - "dropdown-panel-603d5d4cfebdb82eee575e4d747681d7", - "dropdown-panel-625d3e8e7e01308e6d67648c17452ff5", - "dropdown-panel-65797c20e8cd24932350c0227616166f", - "dropdown-panel-673a71841d2bdf5add2bd49090076b36", - "dropdown-panel-6b07388feff6b2cb48f5df501c0385db", - "dropdown-panel-6b5219558e80f323e9e017f5fd77b513", - "dropdown-panel-6dc78da3834309c45c215a9ee7b11a60", - "dropdown-panel-6f4bc6afa8e7ca543fd2f45e86005031", - "dropdown-panel-7299fc6eb6fc0eb29f9b01e1e28a9af1", - "dropdown-panel-73d10ee62710d34b5781bf071c54089c", - "dropdown-panel-746b8e52eb319e24c7b335618ab83a38", - "dropdown-panel-74b1d02a4a9fb413fe5720276a3b8b54", - "dropdown-panel-77d4442931c09b2fc54a27bd26416cd6", - "dropdown-panel-7975f9e6bbade3f604b82de7ba75dd5c", - "dropdown-panel-7a19c7bc26f1452050edfb2bc5626f58", - "dropdown-panel-7f82acdf38ed0b4cc0df040b12860006", - "dropdown-panel-7f85505777a1681bdbcbf30deb669726", - "dropdown-panel-8259d994cbd650c2b7cb7d5d380d0486", - "dropdown-panel-8a3f1de468cc8bfedbba2a245ce542b9", - "dropdown-panel-8b0db5d5208aeecfb877b39f83d363d3", - "dropdown-panel-8e07cceb50a2f9e4faafc0b5061676be", - "dropdown-panel-8f6a4af5e7f8b1423c2f6abce0051832", - "dropdown-panel-911ab5c63131f04093e8cb310e447ba6", - "dropdown-panel-94a5fb3cc27b61336a935b6725df76fa", - "dropdown-panel-9797444e67cb84b690c8e3299f15e85e", - "dropdown-panel-99444ac858fe3cacadb6c8ebbe80ac0f", - "dropdown-panel-9f37762634c3aae9570bb9993822524d", - "dropdown-panel-a05e12c1a8d091025b14a90474dfc7a0", - "dropdown-panel-a0746a4f3ad95e50f85ccde77db960ea", - "dropdown-panel-a0a5ec4db0ea399ef9b8242b71fb6f53", - "dropdown-panel-a23145b5ff1132f995600b026ff5503a", - "dropdown-panel-a2598c84eb2e4994f5995b41c0d6d831", - "dropdown-panel-aa4f90b00066645dcf51795d397a10f2", - "dropdown-panel-aa51f30b0e6a7ee249ef808c0d00c0af", - "dropdown-panel-b4935f420b7a27e576124edfd923a0cb", - "dropdown-panel-b4ce0d374fa145d285d34b279d85de4f", - "dropdown-panel-b5f65224dca90032592817d24a294c6a", - "dropdown-panel-b9d1faf23fdf2e9d0ceb62c2e4a22ae2", - "dropdown-panel-bc8a38e1ea2a01c07a73d16ddcd16457", - "dropdown-panel-bdf95c79124087f3dc6cc773758a73a5", - "dropdown-panel-bfe5761eb74ec02b8f28e11cbdcfc70a", - "dropdown-panel-c011c56d0ee53ce07fe1f8a2643f96b9", - "dropdown-panel-c3abeeb15334c51d7147f296f5754396", - "dropdown-panel-c45f950c84f1c2855de511bb2323a46d", - "dropdown-panel-c4c325b97bd35f414531853df8f324ee", - "dropdown-panel-c74570f4ffff15d643e7b23e54875cbe", - "dropdown-panel-ccb1c62f74174a9ed2135e855b5aadca", - "dropdown-panel-cd2be61afa382a03638ddcae911def63", - "dropdown-panel-d27fd61f25dc9107d0568128b3d598bc", - "dropdown-panel-d4b7551851beb0fc1625645da5209e5c", - "dropdown-panel-d4f651ac5ffe0c05266741e87aa16c2f", - "dropdown-panel-d6222b78afd1bf3b14f55f1e14e9257c", - "dropdown-panel-d662b373af78a1870b1f612989bfd4ab", - "dropdown-panel-d8de8d57cc8f6de66e64b5e75946957c", - "dropdown-panel-db9787fae1ff40c6a020cfba5b731da7", - "dropdown-panel-dc8b058ae722eeb3f2cb48cbb21fdb1c", - "dropdown-panel-e1d62bf26bfa56a8746355836b98a042", - "dropdown-panel-e227928c7c77c9413a39c222826fb627", - "dropdown-panel-e312a143c606aef7c14dd57d0a56d3e0", - "dropdown-panel-e7c572ba23a3a35e4163b88efdc3180d", - "dropdown-panel-eea191748e44a134cd7787261fa02c2a", - "dropdown-panel-eea9fd3c8130e0070f513acd01d3bbed", - "dropdown-panel-efee44230dbfac3a4df31540ad295c9a", - "dropdown-panel-f1d6ca047c54d855b8319ec5d587026e", - "dropdown-panel-f232e92765e7e2cef4c41b70e9f2b30b", - "dropdown-panel-f28dce73f1abae027ded859cce9008a2", - "dropdown-panel-f3809694d9e6b4ad9b3f53cb70d24628", - "dropdown-panel-f5080e0c196a0f91fe93353fce7f2a40", - "dropdown-panel-f5bd635dd66d78b8426c70264ab040cf", - "dropdown-panel-f6a2be63a069dcecf82b83dc41a0f2d6", - "dropdown-panel-f86dec24929c1fe2f31c3b950042bfa4", - "dropdown-panel-f9259d998c5349755cd15195a2f865f0", - "dropdown-panel-f992330b932c51ecc3200286af3f644e", - "dropdown-panel-fc13b5baefaafcf2a994a19b2eb50a07", + "dropdown-panel-478d0e10f7e9da1cc704cf790d9d8cbd", + "dropdown-panel-74b7ff5e585d10974a211c8b4be055cf", + "dropdown-panel-ab18f4f34e74d3616c6804ddb2b796d6", + "dropdown-panel-c93bc1fde9333d061a3f766913f0e774", + "dropdown-panel-eafb96314d9c857099b0a343729762a2", "eerste-artikel", "elements-type", "entity-relationship-diagram", @@ -867,126 +749,11 @@ "fab-whatsapp", "fab-x-twitter", "faq", - "faq-00df901b945d6d42c5922cb970529257", - "faq-00df901b945d6d42c5922cb970529257-heading-faq-00df901b945d6d42c5922cb970529257", - "faq-00df901b945d6d42c5922cb970529257-item-0", - "faq-00df901b945d6d42c5922cb970529257-item-1", - "faq-00df901b945d6d42c5922cb970529257-item-2", - "faq-031d5e767fac1fa393c109475222d902", - "faq-031d5e767fac1fa393c109475222d902-heading-faq-031d5e767fac1fa393c109475222d902", - "faq-031d5e767fac1fa393c109475222d902-item-0", - "faq-031d5e767fac1fa393c109475222d902-item-1", - "faq-031d5e767fac1fa393c109475222d902-item-2", - "faq-0cb45cbf2b00c1e3d56cff830c9ed379", - "faq-0cb45cbf2b00c1e3d56cff830c9ed379-heading-faq-0cb45cbf2b00c1e3d56cff830c9ed379", - "faq-0cb45cbf2b00c1e3d56cff830c9ed379-item-0", - "faq-0cb45cbf2b00c1e3d56cff830c9ed379-item-1", - "faq-0cb45cbf2b00c1e3d56cff830c9ed379-item-2", - "faq-16540511fc479043e999db811a0b23f5", - "faq-16540511fc479043e999db811a0b23f5-heading-faq-16540511fc479043e999db811a0b23f5", - "faq-16540511fc479043e999db811a0b23f5-item-0", - "faq-16540511fc479043e999db811a0b23f5-item-1", - "faq-16540511fc479043e999db811a0b23f5-item-2", - "faq-191585d0c7fc56110fef1a42e0ec9df8", - "faq-191585d0c7fc56110fef1a42e0ec9df8-heading-faq-191585d0c7fc56110fef1a42e0ec9df8", - "faq-191585d0c7fc56110fef1a42e0ec9df8-item-0", - "faq-191585d0c7fc56110fef1a42e0ec9df8-item-1", - "faq-191585d0c7fc56110fef1a42e0ec9df8-item-2", - "faq-2524084444ea96e928b89bf6dc145568", - "faq-2524084444ea96e928b89bf6dc145568-heading-faq-2524084444ea96e928b89bf6dc145568", - "faq-2524084444ea96e928b89bf6dc145568-item-0", - "faq-2524084444ea96e928b89bf6dc145568-item-1", - "faq-2524084444ea96e928b89bf6dc145568-item-2", - "faq-2e9773267c8085e9d9c9b17e2961c359", - "faq-2e9773267c8085e9d9c9b17e2961c359-heading-faq-2e9773267c8085e9d9c9b17e2961c359", - "faq-2e9773267c8085e9d9c9b17e2961c359-item-0", - "faq-2e9773267c8085e9d9c9b17e2961c359-item-1", - "faq-2e9773267c8085e9d9c9b17e2961c359-item-2", - "faq-4712e418d88abf39278caefd73361b95", - "faq-4712e418d88abf39278caefd73361b95-heading-faq-4712e418d88abf39278caefd73361b95", - "faq-4712e418d88abf39278caefd73361b95-item-0", - "faq-4712e418d88abf39278caefd73361b95-item-1", - "faq-4712e418d88abf39278caefd73361b95-item-2", - "faq-4747b137b1a48ad927132f4191e5d347", - "faq-4747b137b1a48ad927132f4191e5d347-heading-faq-4747b137b1a48ad927132f4191e5d347", - "faq-4747b137b1a48ad927132f4191e5d347-item-0", - "faq-4747b137b1a48ad927132f4191e5d347-item-1", - "faq-4747b137b1a48ad927132f4191e5d347-item-2", - "faq-517e72071895cb1afe9e019c0a801bd5", - "faq-517e72071895cb1afe9e019c0a801bd5-heading-faq-517e72071895cb1afe9e019c0a801bd5", - "faq-517e72071895cb1afe9e019c0a801bd5-item-0", - "faq-517e72071895cb1afe9e019c0a801bd5-item-1", - "faq-517e72071895cb1afe9e019c0a801bd5-item-2", - "faq-64ae6341b14ecccbfdb678a065c97ccb", - "faq-64ae6341b14ecccbfdb678a065c97ccb-heading-faq-64ae6341b14ecccbfdb678a065c97ccb", - "faq-64ae6341b14ecccbfdb678a065c97ccb-item-0", - "faq-64ae6341b14ecccbfdb678a065c97ccb-item-1", - "faq-64ae6341b14ecccbfdb678a065c97ccb-item-2", - "faq-69833b667fe1678502d1b178c2856f29", - "faq-69833b667fe1678502d1b178c2856f29-heading-faq-69833b667fe1678502d1b178c2856f29", - "faq-69833b667fe1678502d1b178c2856f29-item-0", - "faq-69833b667fe1678502d1b178c2856f29-item-1", - "faq-69833b667fe1678502d1b178c2856f29-item-2", - "faq-933dc8eff5c99599458dddd46910d80e", - "faq-933dc8eff5c99599458dddd46910d80e-heading-faq-933dc8eff5c99599458dddd46910d80e", - "faq-933dc8eff5c99599458dddd46910d80e-item-0", - "faq-933dc8eff5c99599458dddd46910d80e-item-1", - "faq-933dc8eff5c99599458dddd46910d80e-item-2", - "faq-9953a14c1ef05f671f475aa28cbb7edf", - "faq-9953a14c1ef05f671f475aa28cbb7edf-heading-faq-9953a14c1ef05f671f475aa28cbb7edf", - "faq-9953a14c1ef05f671f475aa28cbb7edf-item-0", - "faq-9953a14c1ef05f671f475aa28cbb7edf-item-1", - "faq-9953a14c1ef05f671f475aa28cbb7edf-item-2", - "faq-a46c224beaacd29cc92cbc88d49463ba", - "faq-a46c224beaacd29cc92cbc88d49463ba-heading-faq-a46c224beaacd29cc92cbc88d49463ba", - "faq-a46c224beaacd29cc92cbc88d49463ba-item-0", - "faq-a46c224beaacd29cc92cbc88d49463ba-item-1", - "faq-a46c224beaacd29cc92cbc88d49463ba-item-2", - "faq-a5a6700662bf4d9eb8c9fbe59c66d6be", - "faq-a5a6700662bf4d9eb8c9fbe59c66d6be-heading-faq-a5a6700662bf4d9eb8c9fbe59c66d6be", - "faq-a5a6700662bf4d9eb8c9fbe59c66d6be-item-0", - "faq-a5a6700662bf4d9eb8c9fbe59c66d6be-item-1", - "faq-a5a6700662bf4d9eb8c9fbe59c66d6be-item-2", - "faq-afe0ddff4b95a3b9c6f70ac2b2c78dce", - "faq-afe0ddff4b95a3b9c6f70ac2b2c78dce-heading-faq-afe0ddff4b95a3b9c6f70ac2b2c78dce", - "faq-afe0ddff4b95a3b9c6f70ac2b2c78dce-item-0", - "faq-afe0ddff4b95a3b9c6f70ac2b2c78dce-item-1", - "faq-afe0ddff4b95a3b9c6f70ac2b2c78dce-item-2", - "faq-b07f3bcb4e496836504c8ddcdc9aee35", - "faq-b07f3bcb4e496836504c8ddcdc9aee35-heading-faq-b07f3bcb4e496836504c8ddcdc9aee35", - "faq-b07f3bcb4e496836504c8ddcdc9aee35-item-0", - "faq-b07f3bcb4e496836504c8ddcdc9aee35-item-1", - "faq-b07f3bcb4e496836504c8ddcdc9aee35-item-2", - "faq-b46505fc241f0afe339b49c92c38e038", - "faq-b46505fc241f0afe339b49c92c38e038-heading-faq-b46505fc241f0afe339b49c92c38e038", - "faq-b46505fc241f0afe339b49c92c38e038-item-0", - "faq-b46505fc241f0afe339b49c92c38e038-item-1", - "faq-b46505fc241f0afe339b49c92c38e038-item-2", - "faq-b69b77ce2b772b56664b749d7a92bb3d", - "faq-b69b77ce2b772b56664b749d7a92bb3d-heading-faq-b69b77ce2b772b56664b749d7a92bb3d", - "faq-b69b77ce2b772b56664b749d7a92bb3d-item-0", - "faq-b69b77ce2b772b56664b749d7a92bb3d-item-1", - "faq-b69b77ce2b772b56664b749d7a92bb3d-item-2", - "faq-c0e972ebcb37906963b279e5b2a6a240", - "faq-c0e972ebcb37906963b279e5b2a6a240-heading-faq-c0e972ebcb37906963b279e5b2a6a240", - "faq-c0e972ebcb37906963b279e5b2a6a240-item-0", - "faq-c0e972ebcb37906963b279e5b2a6a240-item-1", - "faq-c0e972ebcb37906963b279e5b2a6a240-item-2", - "faq-eb916ef8ffe2e3b3b899b0620c8f9214", - "faq-eb916ef8ffe2e3b3b899b0620c8f9214-heading-faq-eb916ef8ffe2e3b3b899b0620c8f9214", - "faq-eb916ef8ffe2e3b3b899b0620c8f9214-item-0", - "faq-eb916ef8ffe2e3b3b899b0620c8f9214-item-1", - "faq-eb916ef8ffe2e3b3b899b0620c8f9214-item-2", - "faq-f50b1565c1b8ad913aa8a91b423b961d", - "faq-f50b1565c1b8ad913aa8a91b423b961d-heading-faq-f50b1565c1b8ad913aa8a91b423b961d", - "faq-f50b1565c1b8ad913aa8a91b423b961d-item-0", - "faq-f50b1565c1b8ad913aa8a91b423b961d-item-1", - "faq-f50b1565c1b8ad913aa8a91b423b961d-item-2", - "faq-fab79ba7b9e624c3b4c66b21805fe271", - "faq-fab79ba7b9e624c3b4c66b21805fe271-heading-faq-fab79ba7b9e624c3b4c66b21805fe271", - "faq-fab79ba7b9e624c3b4c66b21805fe271-item-0", - "faq-fab79ba7b9e624c3b4c66b21805fe271-item-1", - "faq-fab79ba7b9e624c3b4c66b21805fe271-item-2", + "faq-41e210e509240ae8a6217ff5f35f290d", + "faq-41e210e509240ae8a6217ff5f35f290d-heading-faq-41e210e509240ae8a6217ff5f35f290d", + "faq-41e210e509240ae8a6217ff5f35f290d-item-0", + "faq-41e210e509240ae8a6217ff5f35f290d-item-1", + "faq-41e210e509240ae8a6217ff5f35f290d-item-2", "fas-1", "fas-2", "fas-3", @@ -1038,6 +805,7 @@ "flowchart", "footer-docs-collapse-15", "footer-docs-collapse-16", + "footer-docs-collapse-2", "footer-file-collapse-1", "formula-katex", "formule-katex", @@ -1045,6 +813,7 @@ "gantt-diagram", "gegevenstabellen", "git-graph", + "grid-layout", "groupe-de-boutons", "groupe-de-cartes", "gérer-les-préférences-des-cookies", @@ -1054,7 +823,6 @@ "horizontal-cards-with-an-icon", "horizontal-cards-with-an-image", "horizontal-layout", - "horizontal-video-message", "how-do-we-use-cookies", "how-we-share-your-information", "icon", @@ -1084,12 +852,13 @@ "manage-cookie-preferences", "map", "mark", + "masonry-layout", "meet-our-team", "menu", + "menu-data", "mermaid-diagrams", "messages-type", "mindmap", - "modal-search", "more-type", "nav", "nav-0-0", @@ -1099,126 +868,11 @@ "nav-0-btn-1", "nav-0-btn-2", "nav-nav-0", - "nav-panel-00dc744f9694a4c11e2551b3e5d3c416", - "nav-panel-0286e087db6a7d966dbf68dcbbd9f820", - "nav-panel-03094ca869667031f552e2277453837b", - "nav-panel-0330957a7967c5c16d540984834537bc", - "nav-panel-04af666952b645c32695dbd308ad2805", - "nav-panel-08c0f561442f844520148d872eec265e", - "nav-panel-0b95997ad8e758a69448fec129bd5089", - "nav-panel-0be33e152992afc1aa41f92c9d7736c7", - "nav-panel-0fa1a56808f121725fa2f9dc8c719c71", - "nav-panel-101a65c32337167bddd2c679cacedd57", - "nav-panel-11778c75bd90e030243a626a90ec5ee0", - "nav-panel-1379e5ce3a502e6d6ee8ac0d05d74c16", - "nav-panel-1bd75e72e478e18ef8c7ad27f5637142", - "nav-panel-1c3a5686998181b4e796862214a938f8", - "nav-panel-1d268f05cadf1628d20f9e2fc4038dd1", - "nav-panel-1ff0914fedb31a2607423b18cfec2e03", - "nav-panel-220a5c9c1c1332c97930cc95aa9ef4b7", - "nav-panel-22125c0fb2a937e967b6a1bc3205aab6", - "nav-panel-22c9826efae57d9b62ee6cf24e99f424", - "nav-panel-22fc719e5bf19919872eefd8989e4f92", - "nav-panel-25ee6aa529ff014327332d15201587df", - "nav-panel-26e77b824a69884b4eb27fa41e4e340a", - "nav-panel-2abf036bf376c93b60ddd1b5a57f4d6b", - "nav-panel-2d6034168a64fc65bce4d5f5f5a24e63", - "nav-panel-2e9a9c7bba066ed35022c7ec48edf933", - "nav-panel-2ee9948eeef878d946315fde4eed1d00", - "nav-panel-3271f2acf542bea0832422efe3b6800d", - "nav-panel-3906f8ea76c45406089fbb95f283d391", - "nav-panel-390c307d9b66be978df3a4b37819dae7", - "nav-panel-3b22c85517cdfae541a98ae6a8f9b638", - "nav-panel-3db3d9ba92940249cc5c1a3bd2c13326", - "nav-panel-41aa5d95356b16341840f65a1423fe61", - "nav-panel-41eeea8370fb985de32aa83dfeb7aba4", - "nav-panel-4560dd5eef95dadbc35e2d33eb098346", - "nav-panel-48db486bf3ee1c877d07e24288ffaca1", - "nav-panel-4be62ed9efd94568dbab049785a924e5", - "nav-panel-4c8934b4c8beefb7c8461d008f38a968", - "nav-panel-4d2432895f89f1f90d881d763f870a6a", - "nav-panel-4e5f9a400c19f8e18e823399c1e745aa", - "nav-panel-4ec03344ffa2846f12566a727bcb28de", - "nav-panel-527009c666339bb834f0d33d90e4da81", - "nav-panel-562497c4d92b790287796c41a77b731f", - "nav-panel-5904839fa43118e51ede78be705f03d3", - "nav-panel-591dbf0cc2b4a501e7d313f0c51eb5b8", - "nav-panel-5ad28f99f313faa999e76805ab95436c", - "nav-panel-5ca916f2b562db694f2b0ad0a1cfd3d3", - "nav-panel-603d5d4cfebdb82eee575e4d747681d7", - "nav-panel-625d3e8e7e01308e6d67648c17452ff5", - "nav-panel-65797c20e8cd24932350c0227616166f", - "nav-panel-673a71841d2bdf5add2bd49090076b36", - "nav-panel-6b07388feff6b2cb48f5df501c0385db", - "nav-panel-6b5219558e80f323e9e017f5fd77b513", - "nav-panel-6dc78da3834309c45c215a9ee7b11a60", - "nav-panel-6f4bc6afa8e7ca543fd2f45e86005031", - "nav-panel-7299fc6eb6fc0eb29f9b01e1e28a9af1", - "nav-panel-73d10ee62710d34b5781bf071c54089c", - "nav-panel-746b8e52eb319e24c7b335618ab83a38", - "nav-panel-74b1d02a4a9fb413fe5720276a3b8b54", - "nav-panel-77d4442931c09b2fc54a27bd26416cd6", - "nav-panel-7975f9e6bbade3f604b82de7ba75dd5c", - "nav-panel-7a19c7bc26f1452050edfb2bc5626f58", - "nav-panel-7f82acdf38ed0b4cc0df040b12860006", - "nav-panel-7f85505777a1681bdbcbf30deb669726", - "nav-panel-8259d994cbd650c2b7cb7d5d380d0486", - "nav-panel-8a3f1de468cc8bfedbba2a245ce542b9", - "nav-panel-8b0db5d5208aeecfb877b39f83d363d3", - "nav-panel-8e07cceb50a2f9e4faafc0b5061676be", - "nav-panel-8f6a4af5e7f8b1423c2f6abce0051832", - "nav-panel-911ab5c63131f04093e8cb310e447ba6", - "nav-panel-94a5fb3cc27b61336a935b6725df76fa", - "nav-panel-9797444e67cb84b690c8e3299f15e85e", - "nav-panel-99444ac858fe3cacadb6c8ebbe80ac0f", - "nav-panel-9f37762634c3aae9570bb9993822524d", - "nav-panel-a05e12c1a8d091025b14a90474dfc7a0", - "nav-panel-a0746a4f3ad95e50f85ccde77db960ea", - "nav-panel-a0a5ec4db0ea399ef9b8242b71fb6f53", - "nav-panel-a23145b5ff1132f995600b026ff5503a", - "nav-panel-a2598c84eb2e4994f5995b41c0d6d831", - "nav-panel-aa4f90b00066645dcf51795d397a10f2", - "nav-panel-aa51f30b0e6a7ee249ef808c0d00c0af", - "nav-panel-b4935f420b7a27e576124edfd923a0cb", - "nav-panel-b4ce0d374fa145d285d34b279d85de4f", - "nav-panel-b5f65224dca90032592817d24a294c6a", - "nav-panel-b9d1faf23fdf2e9d0ceb62c2e4a22ae2", - "nav-panel-bc8a38e1ea2a01c07a73d16ddcd16457", - "nav-panel-bdf95c79124087f3dc6cc773758a73a5", - "nav-panel-bfe5761eb74ec02b8f28e11cbdcfc70a", - "nav-panel-c011c56d0ee53ce07fe1f8a2643f96b9", - "nav-panel-c3abeeb15334c51d7147f296f5754396", - "nav-panel-c45f950c84f1c2855de511bb2323a46d", - "nav-panel-c4c325b97bd35f414531853df8f324ee", - "nav-panel-c74570f4ffff15d643e7b23e54875cbe", - "nav-panel-ccb1c62f74174a9ed2135e855b5aadca", - "nav-panel-cd2be61afa382a03638ddcae911def63", - "nav-panel-d27fd61f25dc9107d0568128b3d598bc", - "nav-panel-d4b7551851beb0fc1625645da5209e5c", - "nav-panel-d4f651ac5ffe0c05266741e87aa16c2f", - "nav-panel-d6222b78afd1bf3b14f55f1e14e9257c", - "nav-panel-d662b373af78a1870b1f612989bfd4ab", - "nav-panel-d8de8d57cc8f6de66e64b5e75946957c", - "nav-panel-db9787fae1ff40c6a020cfba5b731da7", - "nav-panel-dc8b058ae722eeb3f2cb48cbb21fdb1c", - "nav-panel-e1d62bf26bfa56a8746355836b98a042", - "nav-panel-e227928c7c77c9413a39c222826fb627", - "nav-panel-e312a143c606aef7c14dd57d0a56d3e0", - "nav-panel-e7c572ba23a3a35e4163b88efdc3180d", - "nav-panel-eea191748e44a134cd7787261fa02c2a", - "nav-panel-eea9fd3c8130e0070f513acd01d3bbed", - "nav-panel-efee44230dbfac3a4df31540ad295c9a", - "nav-panel-f1d6ca047c54d855b8319ec5d587026e", - "nav-panel-f232e92765e7e2cef4c41b70e9f2b30b", - "nav-panel-f28dce73f1abae027ded859cce9008a2", - "nav-panel-f3809694d9e6b4ad9b3f53cb70d24628", - "nav-panel-f5080e0c196a0f91fe93353fce7f2a40", - "nav-panel-f5bd635dd66d78b8426c70264ab040cf", - "nav-panel-f6a2be63a069dcecf82b83dc41a0f2d6", - "nav-panel-f86dec24929c1fe2f31c3b950042bfa4", - "nav-panel-f9259d998c5349755cd15195a2f865f0", - "nav-panel-f992330b932c51ecc3200286af3f644e", - "nav-panel-fc13b5baefaafcf2a994a19b2eb50a07", + "nav-panel-478d0e10f7e9da1cc704cf790d9d8cbd", + "nav-panel-74b7ff5e585d10974a211c8b4be055cf", + "nav-panel-ab18f4f34e74d3616c6804ddb2b796d6", + "nav-panel-c93bc1fde9333d061a3f766913f0e774", + "nav-panel-eafb96314d9c857099b0a343729762a2", "navbar", "navbar-0-collapse", "navbar-mode", @@ -1228,726 +882,36 @@ "notification", "over-mij", "overview", - "panel-00dc744f9694a4c11e2551b3e5d3c416-0", - "panel-00dc744f9694a4c11e2551b3e5d3c416-1", - "panel-00dc744f9694a4c11e2551b3e5d3c416-2", - "panel-00dc744f9694a4c11e2551b3e5d3c416-btn-0", - "panel-00dc744f9694a4c11e2551b3e5d3c416-btn-1", - "panel-00dc744f9694a4c11e2551b3e5d3c416-btn-2", - "panel-0286e087db6a7d966dbf68dcbbd9f820-0", - "panel-0286e087db6a7d966dbf68dcbbd9f820-1", - "panel-0286e087db6a7d966dbf68dcbbd9f820-2", - "panel-0286e087db6a7d966dbf68dcbbd9f820-btn-0", - "panel-0286e087db6a7d966dbf68dcbbd9f820-btn-1", - "panel-0286e087db6a7d966dbf68dcbbd9f820-btn-2", - "panel-03094ca869667031f552e2277453837b-0", - "panel-03094ca869667031f552e2277453837b-1", - "panel-03094ca869667031f552e2277453837b-2", - "panel-03094ca869667031f552e2277453837b-btn-0", - "panel-03094ca869667031f552e2277453837b-btn-1", - "panel-03094ca869667031f552e2277453837b-btn-2", - "panel-0330957a7967c5c16d540984834537bc-0", - "panel-0330957a7967c5c16d540984834537bc-1", - "panel-0330957a7967c5c16d540984834537bc-2", - "panel-0330957a7967c5c16d540984834537bc-btn-0", - "panel-0330957a7967c5c16d540984834537bc-btn-1", - "panel-0330957a7967c5c16d540984834537bc-btn-2", - "panel-04af666952b645c32695dbd308ad2805-0", - "panel-04af666952b645c32695dbd308ad2805-1", - "panel-04af666952b645c32695dbd308ad2805-2", - "panel-04af666952b645c32695dbd308ad2805-btn-0", - "panel-04af666952b645c32695dbd308ad2805-btn-1", - "panel-04af666952b645c32695dbd308ad2805-btn-2", - "panel-08c0f561442f844520148d872eec265e-0", - "panel-08c0f561442f844520148d872eec265e-1", - "panel-08c0f561442f844520148d872eec265e-2", - "panel-08c0f561442f844520148d872eec265e-btn-0", - "panel-08c0f561442f844520148d872eec265e-btn-1", - "panel-08c0f561442f844520148d872eec265e-btn-2", - "panel-0b95997ad8e758a69448fec129bd5089-0", - "panel-0b95997ad8e758a69448fec129bd5089-1", - "panel-0b95997ad8e758a69448fec129bd5089-2", - "panel-0b95997ad8e758a69448fec129bd5089-btn-0", - "panel-0b95997ad8e758a69448fec129bd5089-btn-1", - "panel-0b95997ad8e758a69448fec129bd5089-btn-2", - "panel-0be33e152992afc1aa41f92c9d7736c7-0", - "panel-0be33e152992afc1aa41f92c9d7736c7-1", - "panel-0be33e152992afc1aa41f92c9d7736c7-2", - "panel-0be33e152992afc1aa41f92c9d7736c7-btn-0", - "panel-0be33e152992afc1aa41f92c9d7736c7-btn-1", - "panel-0be33e152992afc1aa41f92c9d7736c7-btn-2", - "panel-0fa1a56808f121725fa2f9dc8c719c71-0", - "panel-0fa1a56808f121725fa2f9dc8c719c71-1", - "panel-0fa1a56808f121725fa2f9dc8c719c71-2", - "panel-0fa1a56808f121725fa2f9dc8c719c71-btn-0", - "panel-0fa1a56808f121725fa2f9dc8c719c71-btn-1", - "panel-0fa1a56808f121725fa2f9dc8c719c71-btn-2", - "panel-101a65c32337167bddd2c679cacedd57-0", - "panel-101a65c32337167bddd2c679cacedd57-1", - "panel-101a65c32337167bddd2c679cacedd57-2", - "panel-101a65c32337167bddd2c679cacedd57-btn-0", - "panel-101a65c32337167bddd2c679cacedd57-btn-1", - "panel-101a65c32337167bddd2c679cacedd57-btn-2", - "panel-11778c75bd90e030243a626a90ec5ee0-0", - "panel-11778c75bd90e030243a626a90ec5ee0-1", - "panel-11778c75bd90e030243a626a90ec5ee0-2", - "panel-11778c75bd90e030243a626a90ec5ee0-btn-0", - "panel-11778c75bd90e030243a626a90ec5ee0-btn-1", - "panel-11778c75bd90e030243a626a90ec5ee0-btn-2", - "panel-1379e5ce3a502e6d6ee8ac0d05d74c16-0", - "panel-1379e5ce3a502e6d6ee8ac0d05d74c16-1", - "panel-1379e5ce3a502e6d6ee8ac0d05d74c16-2", - "panel-1379e5ce3a502e6d6ee8ac0d05d74c16-btn-0", - "panel-1379e5ce3a502e6d6ee8ac0d05d74c16-btn-1", - "panel-1379e5ce3a502e6d6ee8ac0d05d74c16-btn-2", - "panel-1bd75e72e478e18ef8c7ad27f5637142-0", - "panel-1bd75e72e478e18ef8c7ad27f5637142-1", - "panel-1bd75e72e478e18ef8c7ad27f5637142-2", - "panel-1bd75e72e478e18ef8c7ad27f5637142-btn-0", - "panel-1bd75e72e478e18ef8c7ad27f5637142-btn-1", - "panel-1bd75e72e478e18ef8c7ad27f5637142-btn-2", - "panel-1c3a5686998181b4e796862214a938f8-0", - "panel-1c3a5686998181b4e796862214a938f8-1", - "panel-1c3a5686998181b4e796862214a938f8-2", - "panel-1c3a5686998181b4e796862214a938f8-btn-0", - "panel-1c3a5686998181b4e796862214a938f8-btn-1", - "panel-1c3a5686998181b4e796862214a938f8-btn-2", - "panel-1d268f05cadf1628d20f9e2fc4038dd1-0", - "panel-1d268f05cadf1628d20f9e2fc4038dd1-1", - "panel-1d268f05cadf1628d20f9e2fc4038dd1-2", - "panel-1d268f05cadf1628d20f9e2fc4038dd1-btn-0", - "panel-1d268f05cadf1628d20f9e2fc4038dd1-btn-1", - "panel-1d268f05cadf1628d20f9e2fc4038dd1-btn-2", - "panel-1ff0914fedb31a2607423b18cfec2e03-0", - "panel-1ff0914fedb31a2607423b18cfec2e03-1", - "panel-1ff0914fedb31a2607423b18cfec2e03-2", - "panel-1ff0914fedb31a2607423b18cfec2e03-btn-0", - "panel-1ff0914fedb31a2607423b18cfec2e03-btn-1", - "panel-1ff0914fedb31a2607423b18cfec2e03-btn-2", - "panel-220a5c9c1c1332c97930cc95aa9ef4b7-0", - "panel-220a5c9c1c1332c97930cc95aa9ef4b7-1", - "panel-220a5c9c1c1332c97930cc95aa9ef4b7-2", - "panel-220a5c9c1c1332c97930cc95aa9ef4b7-btn-0", - "panel-220a5c9c1c1332c97930cc95aa9ef4b7-btn-1", - "panel-220a5c9c1c1332c97930cc95aa9ef4b7-btn-2", - "panel-22125c0fb2a937e967b6a1bc3205aab6-0", - "panel-22125c0fb2a937e967b6a1bc3205aab6-1", - "panel-22125c0fb2a937e967b6a1bc3205aab6-2", - "panel-22125c0fb2a937e967b6a1bc3205aab6-btn-0", - "panel-22125c0fb2a937e967b6a1bc3205aab6-btn-1", - "panel-22125c0fb2a937e967b6a1bc3205aab6-btn-2", - "panel-22c9826efae57d9b62ee6cf24e99f424-0", - "panel-22c9826efae57d9b62ee6cf24e99f424-1", - "panel-22c9826efae57d9b62ee6cf24e99f424-2", - "panel-22c9826efae57d9b62ee6cf24e99f424-btn-0", - "panel-22c9826efae57d9b62ee6cf24e99f424-btn-1", - "panel-22c9826efae57d9b62ee6cf24e99f424-btn-2", - "panel-22fc719e5bf19919872eefd8989e4f92-0", - "panel-22fc719e5bf19919872eefd8989e4f92-1", - "panel-22fc719e5bf19919872eefd8989e4f92-2", - "panel-22fc719e5bf19919872eefd8989e4f92-btn-0", - "panel-22fc719e5bf19919872eefd8989e4f92-btn-1", - "panel-22fc719e5bf19919872eefd8989e4f92-btn-2", - "panel-25ee6aa529ff014327332d15201587df-0", - "panel-25ee6aa529ff014327332d15201587df-1", - "panel-25ee6aa529ff014327332d15201587df-2", - "panel-25ee6aa529ff014327332d15201587df-btn-0", - "panel-25ee6aa529ff014327332d15201587df-btn-1", - "panel-25ee6aa529ff014327332d15201587df-btn-2", - "panel-26e77b824a69884b4eb27fa41e4e340a-0", - "panel-26e77b824a69884b4eb27fa41e4e340a-1", - "panel-26e77b824a69884b4eb27fa41e4e340a-2", - "panel-26e77b824a69884b4eb27fa41e4e340a-btn-0", - "panel-26e77b824a69884b4eb27fa41e4e340a-btn-1", - "panel-26e77b824a69884b4eb27fa41e4e340a-btn-2", - "panel-2abf036bf376c93b60ddd1b5a57f4d6b-0", - "panel-2abf036bf376c93b60ddd1b5a57f4d6b-1", - "panel-2abf036bf376c93b60ddd1b5a57f4d6b-2", - "panel-2abf036bf376c93b60ddd1b5a57f4d6b-btn-0", - "panel-2abf036bf376c93b60ddd1b5a57f4d6b-btn-1", - "panel-2abf036bf376c93b60ddd1b5a57f4d6b-btn-2", - "panel-2d6034168a64fc65bce4d5f5f5a24e63-0", - "panel-2d6034168a64fc65bce4d5f5f5a24e63-1", - "panel-2d6034168a64fc65bce4d5f5f5a24e63-2", - "panel-2d6034168a64fc65bce4d5f5f5a24e63-btn-0", - "panel-2d6034168a64fc65bce4d5f5f5a24e63-btn-1", - "panel-2d6034168a64fc65bce4d5f5f5a24e63-btn-2", - "panel-2e9a9c7bba066ed35022c7ec48edf933-0", - "panel-2e9a9c7bba066ed35022c7ec48edf933-1", - "panel-2e9a9c7bba066ed35022c7ec48edf933-2", - "panel-2e9a9c7bba066ed35022c7ec48edf933-btn-0", - "panel-2e9a9c7bba066ed35022c7ec48edf933-btn-1", - "panel-2e9a9c7bba066ed35022c7ec48edf933-btn-2", - "panel-2ee9948eeef878d946315fde4eed1d00-0", - "panel-2ee9948eeef878d946315fde4eed1d00-1", - "panel-2ee9948eeef878d946315fde4eed1d00-2", - "panel-2ee9948eeef878d946315fde4eed1d00-btn-0", - "panel-2ee9948eeef878d946315fde4eed1d00-btn-1", - "panel-2ee9948eeef878d946315fde4eed1d00-btn-2", - "panel-3271f2acf542bea0832422efe3b6800d-0", - "panel-3271f2acf542bea0832422efe3b6800d-1", - "panel-3271f2acf542bea0832422efe3b6800d-2", - "panel-3271f2acf542bea0832422efe3b6800d-btn-0", - "panel-3271f2acf542bea0832422efe3b6800d-btn-1", - "panel-3271f2acf542bea0832422efe3b6800d-btn-2", - "panel-3906f8ea76c45406089fbb95f283d391-0", - "panel-3906f8ea76c45406089fbb95f283d391-1", - "panel-3906f8ea76c45406089fbb95f283d391-2", - "panel-3906f8ea76c45406089fbb95f283d391-btn-0", - "panel-3906f8ea76c45406089fbb95f283d391-btn-1", - "panel-3906f8ea76c45406089fbb95f283d391-btn-2", - "panel-390c307d9b66be978df3a4b37819dae7-0", - "panel-390c307d9b66be978df3a4b37819dae7-1", - "panel-390c307d9b66be978df3a4b37819dae7-2", - "panel-390c307d9b66be978df3a4b37819dae7-btn-0", - "panel-390c307d9b66be978df3a4b37819dae7-btn-1", - "panel-390c307d9b66be978df3a4b37819dae7-btn-2", - "panel-3b22c85517cdfae541a98ae6a8f9b638-0", - "panel-3b22c85517cdfae541a98ae6a8f9b638-1", - "panel-3b22c85517cdfae541a98ae6a8f9b638-2", - "panel-3b22c85517cdfae541a98ae6a8f9b638-btn-0", - "panel-3b22c85517cdfae541a98ae6a8f9b638-btn-1", - "panel-3b22c85517cdfae541a98ae6a8f9b638-btn-2", - "panel-3db3d9ba92940249cc5c1a3bd2c13326-0", - "panel-3db3d9ba92940249cc5c1a3bd2c13326-1", - "panel-3db3d9ba92940249cc5c1a3bd2c13326-2", - "panel-3db3d9ba92940249cc5c1a3bd2c13326-btn-0", - "panel-3db3d9ba92940249cc5c1a3bd2c13326-btn-1", - "panel-3db3d9ba92940249cc5c1a3bd2c13326-btn-2", - "panel-41aa5d95356b16341840f65a1423fe61-0", - "panel-41aa5d95356b16341840f65a1423fe61-1", - "panel-41aa5d95356b16341840f65a1423fe61-2", - "panel-41aa5d95356b16341840f65a1423fe61-btn-0", - "panel-41aa5d95356b16341840f65a1423fe61-btn-1", - "panel-41aa5d95356b16341840f65a1423fe61-btn-2", - "panel-41eeea8370fb985de32aa83dfeb7aba4-0", - "panel-41eeea8370fb985de32aa83dfeb7aba4-1", - "panel-41eeea8370fb985de32aa83dfeb7aba4-2", - "panel-41eeea8370fb985de32aa83dfeb7aba4-btn-0", - "panel-41eeea8370fb985de32aa83dfeb7aba4-btn-1", - "panel-41eeea8370fb985de32aa83dfeb7aba4-btn-2", - "panel-4560dd5eef95dadbc35e2d33eb098346-0", - "panel-4560dd5eef95dadbc35e2d33eb098346-1", - "panel-4560dd5eef95dadbc35e2d33eb098346-2", - "panel-4560dd5eef95dadbc35e2d33eb098346-btn-0", - "panel-4560dd5eef95dadbc35e2d33eb098346-btn-1", - "panel-4560dd5eef95dadbc35e2d33eb098346-btn-2", - "panel-48db486bf3ee1c877d07e24288ffaca1-0", - "panel-48db486bf3ee1c877d07e24288ffaca1-1", - "panel-48db486bf3ee1c877d07e24288ffaca1-2", - "panel-48db486bf3ee1c877d07e24288ffaca1-btn-0", - "panel-48db486bf3ee1c877d07e24288ffaca1-btn-1", - "panel-48db486bf3ee1c877d07e24288ffaca1-btn-2", - "panel-4be62ed9efd94568dbab049785a924e5-0", - "panel-4be62ed9efd94568dbab049785a924e5-1", - "panel-4be62ed9efd94568dbab049785a924e5-2", - "panel-4be62ed9efd94568dbab049785a924e5-btn-0", - "panel-4be62ed9efd94568dbab049785a924e5-btn-1", - "panel-4be62ed9efd94568dbab049785a924e5-btn-2", - "panel-4c8934b4c8beefb7c8461d008f38a968-0", - "panel-4c8934b4c8beefb7c8461d008f38a968-1", - "panel-4c8934b4c8beefb7c8461d008f38a968-2", - "panel-4c8934b4c8beefb7c8461d008f38a968-btn-0", - "panel-4c8934b4c8beefb7c8461d008f38a968-btn-1", - "panel-4c8934b4c8beefb7c8461d008f38a968-btn-2", - "panel-4d2432895f89f1f90d881d763f870a6a-0", - "panel-4d2432895f89f1f90d881d763f870a6a-1", - "panel-4d2432895f89f1f90d881d763f870a6a-2", - "panel-4d2432895f89f1f90d881d763f870a6a-btn-0", - "panel-4d2432895f89f1f90d881d763f870a6a-btn-1", - "panel-4d2432895f89f1f90d881d763f870a6a-btn-2", - "panel-4e5f9a400c19f8e18e823399c1e745aa-0", - "panel-4e5f9a400c19f8e18e823399c1e745aa-1", - "panel-4e5f9a400c19f8e18e823399c1e745aa-2", - "panel-4e5f9a400c19f8e18e823399c1e745aa-btn-0", - "panel-4e5f9a400c19f8e18e823399c1e745aa-btn-1", - "panel-4e5f9a400c19f8e18e823399c1e745aa-btn-2", - "panel-4ec03344ffa2846f12566a727bcb28de-0", - "panel-4ec03344ffa2846f12566a727bcb28de-1", - "panel-4ec03344ffa2846f12566a727bcb28de-2", - "panel-4ec03344ffa2846f12566a727bcb28de-btn-0", - "panel-4ec03344ffa2846f12566a727bcb28de-btn-1", - "panel-4ec03344ffa2846f12566a727bcb28de-btn-2", - "panel-527009c666339bb834f0d33d90e4da81-0", - "panel-527009c666339bb834f0d33d90e4da81-1", - "panel-527009c666339bb834f0d33d90e4da81-2", - "panel-527009c666339bb834f0d33d90e4da81-btn-0", - "panel-527009c666339bb834f0d33d90e4da81-btn-1", - "panel-527009c666339bb834f0d33d90e4da81-btn-2", - "panel-562497c4d92b790287796c41a77b731f-0", - "panel-562497c4d92b790287796c41a77b731f-1", - "panel-562497c4d92b790287796c41a77b731f-2", - "panel-562497c4d92b790287796c41a77b731f-btn-0", - "panel-562497c4d92b790287796c41a77b731f-btn-1", - "panel-562497c4d92b790287796c41a77b731f-btn-2", - "panel-5904839fa43118e51ede78be705f03d3-0", - "panel-5904839fa43118e51ede78be705f03d3-1", - "panel-5904839fa43118e51ede78be705f03d3-2", - "panel-5904839fa43118e51ede78be705f03d3-btn-0", - "panel-5904839fa43118e51ede78be705f03d3-btn-1", - "panel-5904839fa43118e51ede78be705f03d3-btn-2", - "panel-591dbf0cc2b4a501e7d313f0c51eb5b8-0", - "panel-591dbf0cc2b4a501e7d313f0c51eb5b8-1", - "panel-591dbf0cc2b4a501e7d313f0c51eb5b8-2", - "panel-591dbf0cc2b4a501e7d313f0c51eb5b8-btn-0", - "panel-591dbf0cc2b4a501e7d313f0c51eb5b8-btn-1", - "panel-591dbf0cc2b4a501e7d313f0c51eb5b8-btn-2", - "panel-5ad28f99f313faa999e76805ab95436c-0", - "panel-5ad28f99f313faa999e76805ab95436c-1", - "panel-5ad28f99f313faa999e76805ab95436c-2", - "panel-5ad28f99f313faa999e76805ab95436c-btn-0", - "panel-5ad28f99f313faa999e76805ab95436c-btn-1", - "panel-5ad28f99f313faa999e76805ab95436c-btn-2", - "panel-5ca916f2b562db694f2b0ad0a1cfd3d3-0", - "panel-5ca916f2b562db694f2b0ad0a1cfd3d3-1", - "panel-5ca916f2b562db694f2b0ad0a1cfd3d3-2", - "panel-5ca916f2b562db694f2b0ad0a1cfd3d3-btn-0", - "panel-5ca916f2b562db694f2b0ad0a1cfd3d3-btn-1", - "panel-5ca916f2b562db694f2b0ad0a1cfd3d3-btn-2", - "panel-603d5d4cfebdb82eee575e4d747681d7-0", - "panel-603d5d4cfebdb82eee575e4d747681d7-1", - "panel-603d5d4cfebdb82eee575e4d747681d7-2", - "panel-603d5d4cfebdb82eee575e4d747681d7-btn-0", - "panel-603d5d4cfebdb82eee575e4d747681d7-btn-1", - "panel-603d5d4cfebdb82eee575e4d747681d7-btn-2", - "panel-625d3e8e7e01308e6d67648c17452ff5-0", - "panel-625d3e8e7e01308e6d67648c17452ff5-1", - "panel-625d3e8e7e01308e6d67648c17452ff5-2", - "panel-625d3e8e7e01308e6d67648c17452ff5-btn-0", - "panel-625d3e8e7e01308e6d67648c17452ff5-btn-1", - "panel-625d3e8e7e01308e6d67648c17452ff5-btn-2", - "panel-65797c20e8cd24932350c0227616166f-0", - "panel-65797c20e8cd24932350c0227616166f-1", - "panel-65797c20e8cd24932350c0227616166f-2", - "panel-65797c20e8cd24932350c0227616166f-btn-0", - "panel-65797c20e8cd24932350c0227616166f-btn-1", - "panel-65797c20e8cd24932350c0227616166f-btn-2", - "panel-673a71841d2bdf5add2bd49090076b36-0", - "panel-673a71841d2bdf5add2bd49090076b36-1", - "panel-673a71841d2bdf5add2bd49090076b36-2", - "panel-673a71841d2bdf5add2bd49090076b36-btn-0", - "panel-673a71841d2bdf5add2bd49090076b36-btn-1", - "panel-673a71841d2bdf5add2bd49090076b36-btn-2", - "panel-6b07388feff6b2cb48f5df501c0385db-0", - "panel-6b07388feff6b2cb48f5df501c0385db-1", - "panel-6b07388feff6b2cb48f5df501c0385db-2", - "panel-6b07388feff6b2cb48f5df501c0385db-btn-0", - "panel-6b07388feff6b2cb48f5df501c0385db-btn-1", - "panel-6b07388feff6b2cb48f5df501c0385db-btn-2", - "panel-6b5219558e80f323e9e017f5fd77b513-0", - "panel-6b5219558e80f323e9e017f5fd77b513-1", - "panel-6b5219558e80f323e9e017f5fd77b513-2", - "panel-6b5219558e80f323e9e017f5fd77b513-btn-0", - "panel-6b5219558e80f323e9e017f5fd77b513-btn-1", - "panel-6b5219558e80f323e9e017f5fd77b513-btn-2", - "panel-6dc78da3834309c45c215a9ee7b11a60-0", - "panel-6dc78da3834309c45c215a9ee7b11a60-1", - "panel-6dc78da3834309c45c215a9ee7b11a60-2", - "panel-6dc78da3834309c45c215a9ee7b11a60-btn-0", - "panel-6dc78da3834309c45c215a9ee7b11a60-btn-1", - "panel-6dc78da3834309c45c215a9ee7b11a60-btn-2", - "panel-6f4bc6afa8e7ca543fd2f45e86005031-0", - "panel-6f4bc6afa8e7ca543fd2f45e86005031-1", - "panel-6f4bc6afa8e7ca543fd2f45e86005031-2", - "panel-6f4bc6afa8e7ca543fd2f45e86005031-btn-0", - "panel-6f4bc6afa8e7ca543fd2f45e86005031-btn-1", - "panel-6f4bc6afa8e7ca543fd2f45e86005031-btn-2", - "panel-7299fc6eb6fc0eb29f9b01e1e28a9af1-0", - "panel-7299fc6eb6fc0eb29f9b01e1e28a9af1-1", - "panel-7299fc6eb6fc0eb29f9b01e1e28a9af1-2", - "panel-7299fc6eb6fc0eb29f9b01e1e28a9af1-btn-0", - "panel-7299fc6eb6fc0eb29f9b01e1e28a9af1-btn-1", - "panel-7299fc6eb6fc0eb29f9b01e1e28a9af1-btn-2", - "panel-73d10ee62710d34b5781bf071c54089c-0", - "panel-73d10ee62710d34b5781bf071c54089c-1", - "panel-73d10ee62710d34b5781bf071c54089c-2", - "panel-73d10ee62710d34b5781bf071c54089c-btn-0", - "panel-73d10ee62710d34b5781bf071c54089c-btn-1", - "panel-73d10ee62710d34b5781bf071c54089c-btn-2", - "panel-746b8e52eb319e24c7b335618ab83a38-0", - "panel-746b8e52eb319e24c7b335618ab83a38-1", - "panel-746b8e52eb319e24c7b335618ab83a38-2", - "panel-746b8e52eb319e24c7b335618ab83a38-btn-0", - "panel-746b8e52eb319e24c7b335618ab83a38-btn-1", - "panel-746b8e52eb319e24c7b335618ab83a38-btn-2", - "panel-74b1d02a4a9fb413fe5720276a3b8b54-0", - "panel-74b1d02a4a9fb413fe5720276a3b8b54-1", - "panel-74b1d02a4a9fb413fe5720276a3b8b54-2", - "panel-74b1d02a4a9fb413fe5720276a3b8b54-btn-0", - "panel-74b1d02a4a9fb413fe5720276a3b8b54-btn-1", - "panel-74b1d02a4a9fb413fe5720276a3b8b54-btn-2", - "panel-77d4442931c09b2fc54a27bd26416cd6-0", - "panel-77d4442931c09b2fc54a27bd26416cd6-1", - "panel-77d4442931c09b2fc54a27bd26416cd6-2", - "panel-77d4442931c09b2fc54a27bd26416cd6-btn-0", - "panel-77d4442931c09b2fc54a27bd26416cd6-btn-1", - "panel-77d4442931c09b2fc54a27bd26416cd6-btn-2", - "panel-7975f9e6bbade3f604b82de7ba75dd5c-0", - "panel-7975f9e6bbade3f604b82de7ba75dd5c-1", - "panel-7975f9e6bbade3f604b82de7ba75dd5c-2", - "panel-7975f9e6bbade3f604b82de7ba75dd5c-btn-0", - "panel-7975f9e6bbade3f604b82de7ba75dd5c-btn-1", - "panel-7975f9e6bbade3f604b82de7ba75dd5c-btn-2", - "panel-7a19c7bc26f1452050edfb2bc5626f58-0", - "panel-7a19c7bc26f1452050edfb2bc5626f58-1", - "panel-7a19c7bc26f1452050edfb2bc5626f58-2", - "panel-7a19c7bc26f1452050edfb2bc5626f58-btn-0", - "panel-7a19c7bc26f1452050edfb2bc5626f58-btn-1", - "panel-7a19c7bc26f1452050edfb2bc5626f58-btn-2", - "panel-7f82acdf38ed0b4cc0df040b12860006-0", - "panel-7f82acdf38ed0b4cc0df040b12860006-1", - "panel-7f82acdf38ed0b4cc0df040b12860006-2", - "panel-7f82acdf38ed0b4cc0df040b12860006-btn-0", - "panel-7f82acdf38ed0b4cc0df040b12860006-btn-1", - "panel-7f82acdf38ed0b4cc0df040b12860006-btn-2", - "panel-7f85505777a1681bdbcbf30deb669726-0", - "panel-7f85505777a1681bdbcbf30deb669726-1", - "panel-7f85505777a1681bdbcbf30deb669726-2", - "panel-7f85505777a1681bdbcbf30deb669726-btn-0", - "panel-7f85505777a1681bdbcbf30deb669726-btn-1", - "panel-7f85505777a1681bdbcbf30deb669726-btn-2", - "panel-8259d994cbd650c2b7cb7d5d380d0486-0", - "panel-8259d994cbd650c2b7cb7d5d380d0486-1", - "panel-8259d994cbd650c2b7cb7d5d380d0486-2", - "panel-8259d994cbd650c2b7cb7d5d380d0486-btn-0", - "panel-8259d994cbd650c2b7cb7d5d380d0486-btn-1", - "panel-8259d994cbd650c2b7cb7d5d380d0486-btn-2", - "panel-8a3f1de468cc8bfedbba2a245ce542b9-0", - "panel-8a3f1de468cc8bfedbba2a245ce542b9-1", - "panel-8a3f1de468cc8bfedbba2a245ce542b9-2", - "panel-8a3f1de468cc8bfedbba2a245ce542b9-btn-0", - "panel-8a3f1de468cc8bfedbba2a245ce542b9-btn-1", - "panel-8a3f1de468cc8bfedbba2a245ce542b9-btn-2", - "panel-8b0db5d5208aeecfb877b39f83d363d3-0", - "panel-8b0db5d5208aeecfb877b39f83d363d3-1", - "panel-8b0db5d5208aeecfb877b39f83d363d3-2", - "panel-8b0db5d5208aeecfb877b39f83d363d3-btn-0", - "panel-8b0db5d5208aeecfb877b39f83d363d3-btn-1", - "panel-8b0db5d5208aeecfb877b39f83d363d3-btn-2", - "panel-8e07cceb50a2f9e4faafc0b5061676be-0", - "panel-8e07cceb50a2f9e4faafc0b5061676be-1", - "panel-8e07cceb50a2f9e4faafc0b5061676be-2", - "panel-8e07cceb50a2f9e4faafc0b5061676be-btn-0", - "panel-8e07cceb50a2f9e4faafc0b5061676be-btn-1", - "panel-8e07cceb50a2f9e4faafc0b5061676be-btn-2", - "panel-8f6a4af5e7f8b1423c2f6abce0051832-0", - "panel-8f6a4af5e7f8b1423c2f6abce0051832-1", - "panel-8f6a4af5e7f8b1423c2f6abce0051832-2", - "panel-8f6a4af5e7f8b1423c2f6abce0051832-btn-0", - "panel-8f6a4af5e7f8b1423c2f6abce0051832-btn-1", - "panel-8f6a4af5e7f8b1423c2f6abce0051832-btn-2", - "panel-911ab5c63131f04093e8cb310e447ba6-0", - "panel-911ab5c63131f04093e8cb310e447ba6-1", - "panel-911ab5c63131f04093e8cb310e447ba6-2", - "panel-911ab5c63131f04093e8cb310e447ba6-btn-0", - "panel-911ab5c63131f04093e8cb310e447ba6-btn-1", - "panel-911ab5c63131f04093e8cb310e447ba6-btn-2", - "panel-94a5fb3cc27b61336a935b6725df76fa-0", - "panel-94a5fb3cc27b61336a935b6725df76fa-1", - "panel-94a5fb3cc27b61336a935b6725df76fa-2", - "panel-94a5fb3cc27b61336a935b6725df76fa-btn-0", - "panel-94a5fb3cc27b61336a935b6725df76fa-btn-1", - "panel-94a5fb3cc27b61336a935b6725df76fa-btn-2", - "panel-9797444e67cb84b690c8e3299f15e85e-0", - "panel-9797444e67cb84b690c8e3299f15e85e-1", - "panel-9797444e67cb84b690c8e3299f15e85e-2", - "panel-9797444e67cb84b690c8e3299f15e85e-btn-0", - "panel-9797444e67cb84b690c8e3299f15e85e-btn-1", - "panel-9797444e67cb84b690c8e3299f15e85e-btn-2", - "panel-99444ac858fe3cacadb6c8ebbe80ac0f-0", - "panel-99444ac858fe3cacadb6c8ebbe80ac0f-1", - "panel-99444ac858fe3cacadb6c8ebbe80ac0f-2", - "panel-99444ac858fe3cacadb6c8ebbe80ac0f-btn-0", - "panel-99444ac858fe3cacadb6c8ebbe80ac0f-btn-1", - "panel-99444ac858fe3cacadb6c8ebbe80ac0f-btn-2", - "panel-9f37762634c3aae9570bb9993822524d-0", - "panel-9f37762634c3aae9570bb9993822524d-1", - "panel-9f37762634c3aae9570bb9993822524d-2", - "panel-9f37762634c3aae9570bb9993822524d-btn-0", - "panel-9f37762634c3aae9570bb9993822524d-btn-1", - "panel-9f37762634c3aae9570bb9993822524d-btn-2", - "panel-a05e12c1a8d091025b14a90474dfc7a0-0", - "panel-a05e12c1a8d091025b14a90474dfc7a0-1", - "panel-a05e12c1a8d091025b14a90474dfc7a0-2", - "panel-a05e12c1a8d091025b14a90474dfc7a0-btn-0", - "panel-a05e12c1a8d091025b14a90474dfc7a0-btn-1", - "panel-a05e12c1a8d091025b14a90474dfc7a0-btn-2", - "panel-a0746a4f3ad95e50f85ccde77db960ea-0", - "panel-a0746a4f3ad95e50f85ccde77db960ea-1", - "panel-a0746a4f3ad95e50f85ccde77db960ea-2", - "panel-a0746a4f3ad95e50f85ccde77db960ea-btn-0", - "panel-a0746a4f3ad95e50f85ccde77db960ea-btn-1", - "panel-a0746a4f3ad95e50f85ccde77db960ea-btn-2", - "panel-a0a5ec4db0ea399ef9b8242b71fb6f53-0", - "panel-a0a5ec4db0ea399ef9b8242b71fb6f53-1", - "panel-a0a5ec4db0ea399ef9b8242b71fb6f53-2", - "panel-a0a5ec4db0ea399ef9b8242b71fb6f53-btn-0", - "panel-a0a5ec4db0ea399ef9b8242b71fb6f53-btn-1", - "panel-a0a5ec4db0ea399ef9b8242b71fb6f53-btn-2", - "panel-a23145b5ff1132f995600b026ff5503a-0", - "panel-a23145b5ff1132f995600b026ff5503a-1", - "panel-a23145b5ff1132f995600b026ff5503a-2", - "panel-a23145b5ff1132f995600b026ff5503a-btn-0", - "panel-a23145b5ff1132f995600b026ff5503a-btn-1", - "panel-a23145b5ff1132f995600b026ff5503a-btn-2", - "panel-a2598c84eb2e4994f5995b41c0d6d831-0", - "panel-a2598c84eb2e4994f5995b41c0d6d831-1", - "panel-a2598c84eb2e4994f5995b41c0d6d831-2", - "panel-a2598c84eb2e4994f5995b41c0d6d831-btn-0", - "panel-a2598c84eb2e4994f5995b41c0d6d831-btn-1", - "panel-a2598c84eb2e4994f5995b41c0d6d831-btn-2", - "panel-aa4f90b00066645dcf51795d397a10f2-0", - "panel-aa4f90b00066645dcf51795d397a10f2-1", - "panel-aa4f90b00066645dcf51795d397a10f2-2", - "panel-aa4f90b00066645dcf51795d397a10f2-btn-0", - "panel-aa4f90b00066645dcf51795d397a10f2-btn-1", - "panel-aa4f90b00066645dcf51795d397a10f2-btn-2", - "panel-aa51f30b0e6a7ee249ef808c0d00c0af-0", - "panel-aa51f30b0e6a7ee249ef808c0d00c0af-1", - "panel-aa51f30b0e6a7ee249ef808c0d00c0af-2", - "panel-aa51f30b0e6a7ee249ef808c0d00c0af-btn-0", - "panel-aa51f30b0e6a7ee249ef808c0d00c0af-btn-1", - "panel-aa51f30b0e6a7ee249ef808c0d00c0af-btn-2", - "panel-b4935f420b7a27e576124edfd923a0cb-0", - "panel-b4935f420b7a27e576124edfd923a0cb-1", - "panel-b4935f420b7a27e576124edfd923a0cb-2", - "panel-b4935f420b7a27e576124edfd923a0cb-btn-0", - "panel-b4935f420b7a27e576124edfd923a0cb-btn-1", - "panel-b4935f420b7a27e576124edfd923a0cb-btn-2", - "panel-b4ce0d374fa145d285d34b279d85de4f-0", - "panel-b4ce0d374fa145d285d34b279d85de4f-1", - "panel-b4ce0d374fa145d285d34b279d85de4f-2", - "panel-b4ce0d374fa145d285d34b279d85de4f-btn-0", - "panel-b4ce0d374fa145d285d34b279d85de4f-btn-1", - "panel-b4ce0d374fa145d285d34b279d85de4f-btn-2", - "panel-b5f65224dca90032592817d24a294c6a-0", - "panel-b5f65224dca90032592817d24a294c6a-1", - "panel-b5f65224dca90032592817d24a294c6a-2", - "panel-b5f65224dca90032592817d24a294c6a-btn-0", - "panel-b5f65224dca90032592817d24a294c6a-btn-1", - "panel-b5f65224dca90032592817d24a294c6a-btn-2", - "panel-b9d1faf23fdf2e9d0ceb62c2e4a22ae2-0", - "panel-b9d1faf23fdf2e9d0ceb62c2e4a22ae2-1", - "panel-b9d1faf23fdf2e9d0ceb62c2e4a22ae2-2", - "panel-b9d1faf23fdf2e9d0ceb62c2e4a22ae2-btn-0", - "panel-b9d1faf23fdf2e9d0ceb62c2e4a22ae2-btn-1", - "panel-b9d1faf23fdf2e9d0ceb62c2e4a22ae2-btn-2", - "panel-bc8a38e1ea2a01c07a73d16ddcd16457-0", - "panel-bc8a38e1ea2a01c07a73d16ddcd16457-1", - "panel-bc8a38e1ea2a01c07a73d16ddcd16457-2", - "panel-bc8a38e1ea2a01c07a73d16ddcd16457-btn-0", - "panel-bc8a38e1ea2a01c07a73d16ddcd16457-btn-1", - "panel-bc8a38e1ea2a01c07a73d16ddcd16457-btn-2", - "panel-bdf95c79124087f3dc6cc773758a73a5-0", - "panel-bdf95c79124087f3dc6cc773758a73a5-1", - "panel-bdf95c79124087f3dc6cc773758a73a5-2", - "panel-bdf95c79124087f3dc6cc773758a73a5-btn-0", - "panel-bdf95c79124087f3dc6cc773758a73a5-btn-1", - "panel-bdf95c79124087f3dc6cc773758a73a5-btn-2", - "panel-bfe5761eb74ec02b8f28e11cbdcfc70a-0", - "panel-bfe5761eb74ec02b8f28e11cbdcfc70a-1", - "panel-bfe5761eb74ec02b8f28e11cbdcfc70a-2", - "panel-bfe5761eb74ec02b8f28e11cbdcfc70a-btn-0", - "panel-bfe5761eb74ec02b8f28e11cbdcfc70a-btn-1", - "panel-bfe5761eb74ec02b8f28e11cbdcfc70a-btn-2", - "panel-c011c56d0ee53ce07fe1f8a2643f96b9-0", - "panel-c011c56d0ee53ce07fe1f8a2643f96b9-1", - "panel-c011c56d0ee53ce07fe1f8a2643f96b9-2", - "panel-c011c56d0ee53ce07fe1f8a2643f96b9-btn-0", - "panel-c011c56d0ee53ce07fe1f8a2643f96b9-btn-1", - "panel-c011c56d0ee53ce07fe1f8a2643f96b9-btn-2", - "panel-c3abeeb15334c51d7147f296f5754396-0", - "panel-c3abeeb15334c51d7147f296f5754396-1", - "panel-c3abeeb15334c51d7147f296f5754396-2", - "panel-c3abeeb15334c51d7147f296f5754396-btn-0", - "panel-c3abeeb15334c51d7147f296f5754396-btn-1", - "panel-c3abeeb15334c51d7147f296f5754396-btn-2", - "panel-c45f950c84f1c2855de511bb2323a46d-0", - "panel-c45f950c84f1c2855de511bb2323a46d-1", - "panel-c45f950c84f1c2855de511bb2323a46d-2", - "panel-c45f950c84f1c2855de511bb2323a46d-btn-0", - "panel-c45f950c84f1c2855de511bb2323a46d-btn-1", - "panel-c45f950c84f1c2855de511bb2323a46d-btn-2", - "panel-c4c325b97bd35f414531853df8f324ee-0", - "panel-c4c325b97bd35f414531853df8f324ee-1", - "panel-c4c325b97bd35f414531853df8f324ee-2", - "panel-c4c325b97bd35f414531853df8f324ee-btn-0", - "panel-c4c325b97bd35f414531853df8f324ee-btn-1", - "panel-c4c325b97bd35f414531853df8f324ee-btn-2", - "panel-c74570f4ffff15d643e7b23e54875cbe-0", - "panel-c74570f4ffff15d643e7b23e54875cbe-1", - "panel-c74570f4ffff15d643e7b23e54875cbe-2", - "panel-c74570f4ffff15d643e7b23e54875cbe-btn-0", - "panel-c74570f4ffff15d643e7b23e54875cbe-btn-1", - "panel-c74570f4ffff15d643e7b23e54875cbe-btn-2", - "panel-ccb1c62f74174a9ed2135e855b5aadca-0", - "panel-ccb1c62f74174a9ed2135e855b5aadca-1", - "panel-ccb1c62f74174a9ed2135e855b5aadca-2", - "panel-ccb1c62f74174a9ed2135e855b5aadca-btn-0", - "panel-ccb1c62f74174a9ed2135e855b5aadca-btn-1", - "panel-ccb1c62f74174a9ed2135e855b5aadca-btn-2", - "panel-cd2be61afa382a03638ddcae911def63-0", - "panel-cd2be61afa382a03638ddcae911def63-1", - "panel-cd2be61afa382a03638ddcae911def63-2", - "panel-cd2be61afa382a03638ddcae911def63-btn-0", - "panel-cd2be61afa382a03638ddcae911def63-btn-1", - "panel-cd2be61afa382a03638ddcae911def63-btn-2", - "panel-d27fd61f25dc9107d0568128b3d598bc-0", - "panel-d27fd61f25dc9107d0568128b3d598bc-1", - "panel-d27fd61f25dc9107d0568128b3d598bc-2", - "panel-d27fd61f25dc9107d0568128b3d598bc-btn-0", - "panel-d27fd61f25dc9107d0568128b3d598bc-btn-1", - "panel-d27fd61f25dc9107d0568128b3d598bc-btn-2", - "panel-d4b7551851beb0fc1625645da5209e5c-0", - "panel-d4b7551851beb0fc1625645da5209e5c-1", - "panel-d4b7551851beb0fc1625645da5209e5c-2", - "panel-d4b7551851beb0fc1625645da5209e5c-btn-0", - "panel-d4b7551851beb0fc1625645da5209e5c-btn-1", - "panel-d4b7551851beb0fc1625645da5209e5c-btn-2", - "panel-d4f651ac5ffe0c05266741e87aa16c2f-0", - "panel-d4f651ac5ffe0c05266741e87aa16c2f-1", - "panel-d4f651ac5ffe0c05266741e87aa16c2f-2", - "panel-d4f651ac5ffe0c05266741e87aa16c2f-btn-0", - "panel-d4f651ac5ffe0c05266741e87aa16c2f-btn-1", - "panel-d4f651ac5ffe0c05266741e87aa16c2f-btn-2", - "panel-d6222b78afd1bf3b14f55f1e14e9257c-0", - "panel-d6222b78afd1bf3b14f55f1e14e9257c-1", - "panel-d6222b78afd1bf3b14f55f1e14e9257c-2", - "panel-d6222b78afd1bf3b14f55f1e14e9257c-btn-0", - "panel-d6222b78afd1bf3b14f55f1e14e9257c-btn-1", - "panel-d6222b78afd1bf3b14f55f1e14e9257c-btn-2", - "panel-d662b373af78a1870b1f612989bfd4ab-0", - "panel-d662b373af78a1870b1f612989bfd4ab-1", - "panel-d662b373af78a1870b1f612989bfd4ab-2", - "panel-d662b373af78a1870b1f612989bfd4ab-btn-0", - "panel-d662b373af78a1870b1f612989bfd4ab-btn-1", - "panel-d662b373af78a1870b1f612989bfd4ab-btn-2", - "panel-d8de8d57cc8f6de66e64b5e75946957c-0", - "panel-d8de8d57cc8f6de66e64b5e75946957c-1", - "panel-d8de8d57cc8f6de66e64b5e75946957c-2", - "panel-d8de8d57cc8f6de66e64b5e75946957c-btn-0", - "panel-d8de8d57cc8f6de66e64b5e75946957c-btn-1", - "panel-d8de8d57cc8f6de66e64b5e75946957c-btn-2", - "panel-db9787fae1ff40c6a020cfba5b731da7-0", - "panel-db9787fae1ff40c6a020cfba5b731da7-1", - "panel-db9787fae1ff40c6a020cfba5b731da7-2", - "panel-db9787fae1ff40c6a020cfba5b731da7-btn-0", - "panel-db9787fae1ff40c6a020cfba5b731da7-btn-1", - "panel-db9787fae1ff40c6a020cfba5b731da7-btn-2", - "panel-dc8b058ae722eeb3f2cb48cbb21fdb1c-0", - "panel-dc8b058ae722eeb3f2cb48cbb21fdb1c-1", - "panel-dc8b058ae722eeb3f2cb48cbb21fdb1c-2", - "panel-dc8b058ae722eeb3f2cb48cbb21fdb1c-btn-0", - "panel-dc8b058ae722eeb3f2cb48cbb21fdb1c-btn-1", - "panel-dc8b058ae722eeb3f2cb48cbb21fdb1c-btn-2", - "panel-e1d62bf26bfa56a8746355836b98a042-0", - "panel-e1d62bf26bfa56a8746355836b98a042-1", - "panel-e1d62bf26bfa56a8746355836b98a042-2", - "panel-e1d62bf26bfa56a8746355836b98a042-btn-0", - "panel-e1d62bf26bfa56a8746355836b98a042-btn-1", - "panel-e1d62bf26bfa56a8746355836b98a042-btn-2", - "panel-e227928c7c77c9413a39c222826fb627-0", - "panel-e227928c7c77c9413a39c222826fb627-1", - "panel-e227928c7c77c9413a39c222826fb627-2", - "panel-e227928c7c77c9413a39c222826fb627-btn-0", - "panel-e227928c7c77c9413a39c222826fb627-btn-1", - "panel-e227928c7c77c9413a39c222826fb627-btn-2", - "panel-e312a143c606aef7c14dd57d0a56d3e0-0", - "panel-e312a143c606aef7c14dd57d0a56d3e0-1", - "panel-e312a143c606aef7c14dd57d0a56d3e0-2", - "panel-e312a143c606aef7c14dd57d0a56d3e0-btn-0", - "panel-e312a143c606aef7c14dd57d0a56d3e0-btn-1", - "panel-e312a143c606aef7c14dd57d0a56d3e0-btn-2", - "panel-e7c572ba23a3a35e4163b88efdc3180d-0", - "panel-e7c572ba23a3a35e4163b88efdc3180d-1", - "panel-e7c572ba23a3a35e4163b88efdc3180d-2", - "panel-e7c572ba23a3a35e4163b88efdc3180d-btn-0", - "panel-e7c572ba23a3a35e4163b88efdc3180d-btn-1", - "panel-e7c572ba23a3a35e4163b88efdc3180d-btn-2", - "panel-eea191748e44a134cd7787261fa02c2a-0", - "panel-eea191748e44a134cd7787261fa02c2a-1", - "panel-eea191748e44a134cd7787261fa02c2a-2", - "panel-eea191748e44a134cd7787261fa02c2a-btn-0", - "panel-eea191748e44a134cd7787261fa02c2a-btn-1", - "panel-eea191748e44a134cd7787261fa02c2a-btn-2", - "panel-eea9fd3c8130e0070f513acd01d3bbed-0", - "panel-eea9fd3c8130e0070f513acd01d3bbed-1", - "panel-eea9fd3c8130e0070f513acd01d3bbed-2", - "panel-eea9fd3c8130e0070f513acd01d3bbed-btn-0", - "panel-eea9fd3c8130e0070f513acd01d3bbed-btn-1", - "panel-eea9fd3c8130e0070f513acd01d3bbed-btn-2", - "panel-efee44230dbfac3a4df31540ad295c9a-0", - "panel-efee44230dbfac3a4df31540ad295c9a-1", - "panel-efee44230dbfac3a4df31540ad295c9a-2", - "panel-efee44230dbfac3a4df31540ad295c9a-btn-0", - "panel-efee44230dbfac3a4df31540ad295c9a-btn-1", - "panel-efee44230dbfac3a4df31540ad295c9a-btn-2", - "panel-f1d6ca047c54d855b8319ec5d587026e-0", - "panel-f1d6ca047c54d855b8319ec5d587026e-1", - "panel-f1d6ca047c54d855b8319ec5d587026e-2", - "panel-f1d6ca047c54d855b8319ec5d587026e-btn-0", - "panel-f1d6ca047c54d855b8319ec5d587026e-btn-1", - "panel-f1d6ca047c54d855b8319ec5d587026e-btn-2", - "panel-f232e92765e7e2cef4c41b70e9f2b30b-0", - "panel-f232e92765e7e2cef4c41b70e9f2b30b-1", - "panel-f232e92765e7e2cef4c41b70e9f2b30b-2", - "panel-f232e92765e7e2cef4c41b70e9f2b30b-btn-0", - "panel-f232e92765e7e2cef4c41b70e9f2b30b-btn-1", - "panel-f232e92765e7e2cef4c41b70e9f2b30b-btn-2", - "panel-f28dce73f1abae027ded859cce9008a2-0", - "panel-f28dce73f1abae027ded859cce9008a2-1", - "panel-f28dce73f1abae027ded859cce9008a2-2", - "panel-f28dce73f1abae027ded859cce9008a2-btn-0", - "panel-f28dce73f1abae027ded859cce9008a2-btn-1", - "panel-f28dce73f1abae027ded859cce9008a2-btn-2", - "panel-f3809694d9e6b4ad9b3f53cb70d24628-0", - "panel-f3809694d9e6b4ad9b3f53cb70d24628-1", - "panel-f3809694d9e6b4ad9b3f53cb70d24628-2", - "panel-f3809694d9e6b4ad9b3f53cb70d24628-btn-0", - "panel-f3809694d9e6b4ad9b3f53cb70d24628-btn-1", - "panel-f3809694d9e6b4ad9b3f53cb70d24628-btn-2", - "panel-f5080e0c196a0f91fe93353fce7f2a40-0", - "panel-f5080e0c196a0f91fe93353fce7f2a40-1", - "panel-f5080e0c196a0f91fe93353fce7f2a40-2", - "panel-f5080e0c196a0f91fe93353fce7f2a40-btn-0", - "panel-f5080e0c196a0f91fe93353fce7f2a40-btn-1", - "panel-f5080e0c196a0f91fe93353fce7f2a40-btn-2", - "panel-f5bd635dd66d78b8426c70264ab040cf-0", - "panel-f5bd635dd66d78b8426c70264ab040cf-1", - "panel-f5bd635dd66d78b8426c70264ab040cf-2", - "panel-f5bd635dd66d78b8426c70264ab040cf-btn-0", - "panel-f5bd635dd66d78b8426c70264ab040cf-btn-1", - "panel-f5bd635dd66d78b8426c70264ab040cf-btn-2", - "panel-f6a2be63a069dcecf82b83dc41a0f2d6-0", - "panel-f6a2be63a069dcecf82b83dc41a0f2d6-1", - "panel-f6a2be63a069dcecf82b83dc41a0f2d6-2", - "panel-f6a2be63a069dcecf82b83dc41a0f2d6-btn-0", - "panel-f6a2be63a069dcecf82b83dc41a0f2d6-btn-1", - "panel-f6a2be63a069dcecf82b83dc41a0f2d6-btn-2", - "panel-f86dec24929c1fe2f31c3b950042bfa4-0", - "panel-f86dec24929c1fe2f31c3b950042bfa4-1", - "panel-f86dec24929c1fe2f31c3b950042bfa4-2", - "panel-f86dec24929c1fe2f31c3b950042bfa4-btn-0", - "panel-f86dec24929c1fe2f31c3b950042bfa4-btn-1", - "panel-f86dec24929c1fe2f31c3b950042bfa4-btn-2", - "panel-f9259d998c5349755cd15195a2f865f0-0", - "panel-f9259d998c5349755cd15195a2f865f0-1", - "panel-f9259d998c5349755cd15195a2f865f0-2", - "panel-f9259d998c5349755cd15195a2f865f0-btn-0", - "panel-f9259d998c5349755cd15195a2f865f0-btn-1", - "panel-f9259d998c5349755cd15195a2f865f0-btn-2", - "panel-f992330b932c51ecc3200286af3f644e-0", - "panel-f992330b932c51ecc3200286af3f644e-1", - "panel-f992330b932c51ecc3200286af3f644e-2", - "panel-f992330b932c51ecc3200286af3f644e-btn-0", - "panel-f992330b932c51ecc3200286af3f644e-btn-1", - "panel-f992330b932c51ecc3200286af3f644e-btn-2", - "panel-fc13b5baefaafcf2a994a19b2eb50a07-0", - "panel-fc13b5baefaafcf2a994a19b2eb50a07-1", - "panel-fc13b5baefaafcf2a994a19b2eb50a07-2", - "panel-fc13b5baefaafcf2a994a19b2eb50a07-btn-0", - "panel-fc13b5baefaafcf2a994a19b2eb50a07-btn-1", - "panel-fc13b5baefaafcf2a994a19b2eb50a07-btn-2", + "panel-478d0e10f7e9da1cc704cf790d9d8cbd-0", + "panel-478d0e10f7e9da1cc704cf790d9d8cbd-1", + "panel-478d0e10f7e9da1cc704cf790d9d8cbd-2", + "panel-478d0e10f7e9da1cc704cf790d9d8cbd-btn-0", + "panel-478d0e10f7e9da1cc704cf790d9d8cbd-btn-1", + "panel-478d0e10f7e9da1cc704cf790d9d8cbd-btn-2", + "panel-74b7ff5e585d10974a211c8b4be055cf-0", + "panel-74b7ff5e585d10974a211c8b4be055cf-1", + "panel-74b7ff5e585d10974a211c8b4be055cf-2", + "panel-74b7ff5e585d10974a211c8b4be055cf-btn-0", + "panel-74b7ff5e585d10974a211c8b4be055cf-btn-1", + "panel-74b7ff5e585d10974a211c8b4be055cf-btn-2", + "panel-ab18f4f34e74d3616c6804ddb2b796d6-0", + "panel-ab18f4f34e74d3616c6804ddb2b796d6-1", + "panel-ab18f4f34e74d3616c6804ddb2b796d6-2", + "panel-ab18f4f34e74d3616c6804ddb2b796d6-btn-0", + "panel-ab18f4f34e74d3616c6804ddb2b796d6-btn-1", + "panel-ab18f4f34e74d3616c6804ddb2b796d6-btn-2", + "panel-c93bc1fde9333d061a3f766913f0e774-0", + "panel-c93bc1fde9333d061a3f766913f0e774-1", + "panel-c93bc1fde9333d061a3f766913f0e774-2", + "panel-c93bc1fde9333d061a3f766913f0e774-btn-0", + "panel-c93bc1fde9333d061a3f766913f0e774-btn-1", + "panel-c93bc1fde9333d061a3f766913f0e774-btn-2", + "panel-eafb96314d9c857099b0a343729762a2-0", + "panel-eafb96314d9c857099b0a343729762a2-1", + "panel-eafb96314d9c857099b0a343729762a2-2", + "panel-eafb96314d9c857099b0a343729762a2-btn-0", + "panel-eafb96314d9c857099b0a343729762a2-btn-1", + "panel-eafb96314d9c857099b0a343729762a2-btn-2", "panels", "persona", "pie-chart", @@ -1978,7 +942,6 @@ "stacked-cards-with-an-icon", "stacked-cards-with-an-image", "stacked-layout", - "stacked-video-message", "state-diagram", "styles-type", "sub", @@ -1988,30 +951,7 @@ "tabs", "team", "testimonial", - "testimonial-carousel-0551c71bc22d1a202e8fdb74bb53667d", - "testimonial-carousel-0829c7c058ec3bea60cba24fe632db71", - "testimonial-carousel-112cdec4ad2bf2c23acda44638167fc6", - "testimonial-carousel-12d5dff05b4ec9b50357061563ada84d", - "testimonial-carousel-13e46121a12137086ecfaebf5ef0c114", - "testimonial-carousel-1529cb0fa86bff1400d9793287bfaefe", - "testimonial-carousel-1883e615306f3747c274175d184bef63", - "testimonial-carousel-1dbd725142aa0697b8e4ef0e504cde5c", - "testimonial-carousel-2902503f6e56dd81645f8957a7775c50", - "testimonial-carousel-2b9fe32b58c7d2aa1a2da5b3313fb1b4", - "testimonial-carousel-2fa730df9ad11fae5524930212d71c01", - "testimonial-carousel-41a00bcb42156d774df1e3dc7de48f73", - "testimonial-carousel-4805ccbd3c22f7ea4a90dbdba241280e", - "testimonial-carousel-4d72b4b791783d9b93ea0d7b4a75f2a0", - "testimonial-carousel-667a69846ddff0f68a25cfd61dabeeae", - "testimonial-carousel-6e02b5afd5c6f4931df77927f1b9096e", - "testimonial-carousel-76c8b598108cf3cf91098569eede4e17", - "testimonial-carousel-805d46e0ba3b3a5cf405b40b2127c611", - "testimonial-carousel-97a2e7247ec587409efe0784900ece20", - "testimonial-carousel-c2100c7c470e15860d12a7e3440043fc", - "testimonial-carousel-c5af96f3a72aff40a642dd795cdb48c7", - "testimonial-carousel-c6969384bbda16c27a89318953c0d8e9", - "testimonial-carousel-d2a3abaaa06e23c8a71c7b414d6e41ea", - "testimonial-carousel-f63623bbe76ef3f04073e19e49d8e4ad", + "testimonial-carousel-3019ecb1395bdbcdf62da3de68470443", "testimonials", "testimonials-type", "third-party-links--use-of-your-information", diff --git a/go.mod b/go.mod index c695ec0d..2de5c479 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,6 @@ go 1.19 require ( github.com/airbnb/lottie-web v5.13.0+incompatible // indirect github.com/cloudcannon/bookshop/hugo/v3 v3.17.1 // indirect - github.com/gethinode/hinode/component-library v0.0.0-20260124161001-68d212595376 // indirect github.com/gethinode/mod-bootstrap v1.3.5 // indirect github.com/gethinode/mod-csp v1.0.8 // indirect github.com/gethinode/mod-flexsearch/v3 v3.2.0 // indirect diff --git a/hinode.work.sum b/hinode.work.sum deleted file mode 100644 index 9d751e6b..00000000 --- a/hinode.work.sum +++ /dev/null @@ -1,4 +0,0 @@ -github.com/gethinode/mod-fontawesome/v2 v2.1.2 h1:v1aHhbLLwe/05zRHnx9qGqh6b3toDzcLzuv61rWAoGU= -github.com/gethinode/mod-fontawesome/v2 v2.1.2/go.mod h1:zukv88wXqquEvTJJ9mWWk8Ia+9INnA41wYqusf2RcHA= -github.com/gethinode/mod-utils/v4 v4.12.0 h1:5sSfYIxZCeQbXLoZdS//rl6thwLwtXuvM0ujaWKyPmc= -github.com/gethinode/mod-utils/v4 v4.12.0/go.mod h1:bYmvRdAo4ICy5MpSGafDvO4p5bTDpsDKFCPL3bH0mN4=