Compare commits

...

10 Commits

Author SHA1 Message Date
Mark Dumay
900fce4169 Merge pull request #1459 from gethinode/develop
Refine content blocks
2025-06-11 16:59:46 +02:00
Mark Dumay
c82f9a41d4 Merge branch 'main' into develop 2025-06-11 16:51:36 +02:00
Mark Dumay
ea83db2eeb Fix image mode rendering 2025-06-11 16:48:35 +02:00
Mark Dumay
d37c2f6517 Add cards content block 2025-06-11 16:40:16 +02:00
Mark Dumay
68a4859638 Add articles example 2025-06-11 16:39:41 +02:00
Mark Dumay
81494cb1ed Bump package release 2025-06-11 05:49:02 +02:00
Mark Dumay
8307e2ab57 FIx timeline bug using workaround 2025-06-11 05:48:08 +02:00
Mark Dumay
4e6aad33d6 Merge pull request #1458 from gethinode/develop
FIx rendering of inner nav-item content
2025-06-10 17:24:04 +02:00
Mark Dumay
8c3989e4f1 Merge branch 'main' into develop 2025-06-10 17:12:37 +02:00
Mark Dumay
42a81bab5f FIx rendering of inner nav-item content 2025-06-10 17:10:36 +02:00
20 changed files with 375 additions and 25 deletions

View File

@@ -1,6 +1,7 @@
@import "modules/bookshop/shared/styles/global"; @import "modules/bookshop/shared/styles/global";
@import "modules/bookshop/components/about/about"; @import "modules/bookshop/components/about/about";
@import "modules/bookshop/components/articles/articles"; @import "modules/bookshop/components/articles/articles";
@import "modules/bookshop/components/cards/cards";
@import "modules/bookshop/components/faq/faq"; @import "modules/bookshop/components/faq/faq";
@import "modules/bookshop/components/hero/hero"; @import "modules/bookshop/components/hero/hero";
@import "modules/bookshop/components/releases/releases"; @import "modules/bookshop/components/releases/releases";

View File

@@ -0,0 +1,32 @@
# 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:
padding:
background:
backdrop:
color:
subtle:
elements:
- title:
icon:
image:
mode:
content:
orientation:
class:

View File

@@ -0,0 +1,71 @@
{{/*
Copyright © 2025 The Hinode Team / Mark Dumay. All rights reserved.
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
Visit gethinode.com/license for more details.
*/}}
{{ $error := false }}
{{/* Initialize arguments */}}
{{ $args := partial "utilities/InitArgs.html" (dict "bookshop" "cards" "args" .)}}
{{ if or $args.err $args.warnmsg }}
{{ partial (cond $args.err "utilities/LogErr.html" "utilities/LogWarn.html") (dict
"partial" "component-library/components/cards/cards.hugo.html"
"warnid" "warn-invalid-arguments"
"msg" "Invalid arguments"
"details" ($args.errmsg | append $args.warnmsg)
"file" page.File
)}}
{{ $error = $args.err }}
{{ end }}
{{/* Initialize local variables */}}
{{ $list := slice }}
{{ range $args.elements }}
<!-- TODO: check mode -->
{{ $list = $list | append (dict
"title" .title
"description" (.content | page.RenderString)
"icon" .icon
"thumbnail" .image
) }}
{{ end}}
{{ if not $error }}
<div class="container-xxl p-4 px-xxl-0">
{{- partial "assets/section-title.html" (dict "heading" $args.heading "class" "py-5") -}}
{{- partial "assets/card-group.html" (dict
"page" page
"list" $list
"class" (printf "border-0 card-icon-primary d-sm-none %s" $args.class)
"cols" $args.cols
"gutter" "4"
"padding" $args.padding
"header-style" "none"
"footer-style" "none"
"icon-rounded" $args.iconRounded
"icon-style" "fa-2x"
"align" "start"
"orientation" ($args.orientation | default "horizontal-sm")
"hook" "assets/live-card.html"
) -}}
{{- partial "assets/card-group.html" (dict
"page" page
"list" $list
"class" (printf "border-0 card-icon-primary d-none d-sm-block %s" $args.class)
"cols" $args.cols
"gutter" "4"
"padding" $args.padding
"header-style" "none"
"footer-style" "none"
"icon-rounded" $args.iconRounded
"icon-style" "fa-2x"
"align" "start"
"orientation" ($args.orientation | default "stacked")
"hook" "assets/live-card.html"
) -}}
</div>
{{ end }}

View File

@@ -430,6 +430,11 @@ arguments:
comment: Path to the download file, relative to the site's static folder. comment: Path to the download file, relative to the site's static folder.
# e # e
elements:
type: elements
optional: false
comment: >-
Elements to include in the card group. Each element is rendered as a card.
external: external:
type: bool type: bool
optional: true optional: true

View File

@@ -32,6 +32,12 @@ types:
items: items:
- title: - title:
description: description:
elements:
- title:
icon:
image:
mode:
content:
links: links:
- title: - title:
url: url:

View File

@@ -1,6 +1,8 @@
comment: >- comment: >-
Defines an individual item. Defines an individual item.
arguments: arguments:
page:
group: partial
id: id:
group: partial group: partial
parent-id: parent-id:

View File

@@ -0,0 +1,40 @@
---
_schema: default
title: Articles
description: Use the articles content block to show a group of article cards.
icon: fas grip
---
## Overview
The `articles` content block renders a group of article cards.
<!-- markdownlint-disable MD037 -->
{{< example-bookshop lang="bookshop" >}}
```yml
- _bookshop_name: articles
heading:
title: Blog
align: start
input:
section: blog
reverse: false
sort: title
hide-empty: false
header-style: none
more:
title: More Blogs
padding: 0
max: 3
class: border-0 card-zoom card-body-margin
```
{{< /example-bookshop >}}
<!-- markdownlint-enable MD037 -->
## Arguments
The content block supports the following arguments:
{{< args bookshop-articles >}}

View File

@@ -0,0 +1,44 @@
---
_schema: default
title: Cards
description: Use the cards content block to show a card group of messages.
icon: fa address-card
---
## Overview
The `cards` content block renders a group of content cards.
<!-- markdownlint-disable MD037 -->
{{< example-bookshop lang="bookshop" >}}
```yml
- _bookshop_name: cards
heading:
preheading: Preheading
title: Heading
content: Cards content. It supports multiple lines.
align: start
background:
color: primary
subtle: true
orientation: stacked
icon-rounded: true
class: text-center
elements:
- title: First Card
icon: fas 1
- title: Second Card
icon: fas 2
- title: Third Card
icon: fas 3
```
{{< /example-bookshop >}}
<!-- markdownlint-enable MD037 -->
## Arguments
The content block supports the following arguments:
{{< args bookshop-cards >}}

View File

@@ -33,8 +33,9 @@ As an example, the following shortcode displays an accordion with three elements
{{< example lang="hugo" >}} {{< example lang="hugo" >}}
{{</* accordion */>}} {{</* accordion */>}}
{{</* accordion-item title="Accordion Item #1" show="true" */>}} {{</* accordion-item title="Accordion Item #1" show="true" */>}}
This is the first item's accordion body. It supports HTML content, if enabled in the goldmark This is the first item's accordion body.
renderer. The item is shown by adding the value `show` to the `class` argument. It supports Markdown content. The item
is shown by adding the value `show` to the `class` argument.
{{</* /accordion-item */>}} {{</* /accordion-item */>}}
{{</* accordion-item title="Accordion Item #2" */>}} {{</* accordion-item title="Accordion Item #2" */>}}
This is the second item's accordion body. This is the second item's accordion body.
@@ -352,8 +353,8 @@ As an example, the following shortcode displays a tab group with vertically alig
{{< example lang="hugo" >}} {{< example lang="hugo" >}}
{{</* nav tab-type="pills" vertical="true" */>}} {{</* nav tab-type="pills" vertical="true" */>}}
{{</* nav-item title="Nav Item #1" show="true" */>}} {{</* nav-item title="Nav Item #1" show="true" */>}}
This is the first item's nav body. It supports HTML content, if enabled in the goldmark This is the first item's nav body. It supports Markdown content.
renderer. The item is shown by adding the value `show` to the `class` argument. The item is shown by adding the value `show` to the `class` argument.
{{</* /nav-item */>}} {{</* /nav-item */>}}
{{</* nav-item title="Nav Item #2" */>}} {{</* nav-item title="Nav Item #2" */>}}
This is the second item's nav body. This is the second item's nav body.

View File

@@ -69,6 +69,7 @@
], ],
"classes": [ "classes": [
"%!s(<nil>)", "%!s(<nil>)",
"%!s(MISSING)",
"about", "about",
"accordion", "accordion",
"accordion-body", "accordion-body",
@@ -99,6 +100,7 @@
"bg-body", "bg-body",
"bg-body-tertiary", "bg-body-tertiary",
"bg-danger", "bg-danger",
"bg-info",
"bg-opacity-10", "bg-opacity-10",
"bg-primary", "bg-primary",
"bg-primary-subtle", "bg-primary-subtle",
@@ -137,6 +139,7 @@
"card-container-wrapper", "card-container-wrapper",
"card-emphasize", "card-emphasize",
"card-icon", "card-icon",
"card-icon-primary",
"card-icon-secondary", "card-icon-secondary",
"card-img-bg", "card-img-bg",
"card-img-top", "card-img-top",
@@ -144,6 +147,7 @@
"card-text", "card-text",
"card-title", "card-title",
"card-zoom", "card-zoom",
"cards",
"carousel", "carousel",
"carousel-caption", "carousel-caption",
"carousel-control-next", "carousel-control-next",
@@ -224,11 +228,13 @@
"fa-3", "fa-3",
"fa-4x", "fa-4x",
"fa-activity", "fa-activity",
"fa-address-card",
"fa-angle-left", "fa-angle-left",
"fa-arrow-left", "fa-arrow-left",
"fa-arrow-right", "fa-arrow-right",
"fa-bootstrap", "fa-bootstrap",
"fa-chevron-right", "fa-chevron-right",
"fa-circle",
"fa-circle-check", "fa-circle-check",
"fa-circle-play", "fa-circle-play",
"fa-circle-question", "fa-circle-question",
@@ -242,10 +248,12 @@
"fa-fw", "fa-fw",
"fa-github", "fa-github",
"fa-globe", "fa-globe",
"fa-grip",
"fa-h", "fa-h",
"fa-heart", "fa-heart",
"fa-house", "fa-house",
"fa-info", "fa-info",
"fa-inverse",
"fa-link", "fa-link",
"fa-linkedin", "fa-linkedin",
"fa-magnifying-glass", "fa-magnifying-glass",
@@ -256,6 +264,9 @@
"fa-share-nodes", "fa-share-nodes",
"fa-sort", "fa-sort",
"fa-square-check", "fa-square-check",
"fa-stack",
"fa-stack-1x",
"fa-stack-2x",
"fa-sun", "fa-sun",
"fa-timeline", "fa-timeline",
"fa-up-right-from-square", "fa-up-right-from-square",
@@ -560,6 +571,7 @@
"background-type", "background-type",
"badge", "badge",
"barre-de-navigation", "barre-de-navigation",
"bento-layout",
"block-diagram", "block-diagram",
"blog", "blog",
"body-docs-collapse-15", "body-docs-collapse-15",
@@ -590,9 +602,12 @@
"data-tables", "data-tables",
"docs", "docs",
"documentation", "documentation",
"elements-type",
"entity-relationship-diagram", "entity-relationship-diagram",
"example", "example",
"examples",
"exemple", "exemple",
"fa-address-card",
"fa-face-frown", "fa-face-frown",
"fa-square-check", "fa-square-check",
"fab-bootstrap", "fab-bootstrap",
@@ -603,11 +618,126 @@
"fab-medium", "fab-medium",
"fab-whatsapp", "fab-whatsapp",
"fab-x-twitter", "fab-x-twitter",
"faq-422100b13f9388f5e5d9733a89582b72", "faq-0207ac25368a51b555ace9fb5d535d51",
"faq-422100b13f9388f5e5d9733a89582b72-heading-faq-422100b13f9388f5e5d9733a89582b72", "faq-0207ac25368a51b555ace9fb5d535d51-heading-faq-0207ac25368a51b555ace9fb5d535d51",
"faq-422100b13f9388f5e5d9733a89582b72-item-0", "faq-0207ac25368a51b555ace9fb5d535d51-item-0",
"faq-422100b13f9388f5e5d9733a89582b72-item-1", "faq-0207ac25368a51b555ace9fb5d535d51-item-1",
"faq-422100b13f9388f5e5d9733a89582b72-item-2", "faq-0207ac25368a51b555ace9fb5d535d51-item-2",
"faq-0d9cad3dcfdbf86c0dd499efd640f5fd",
"faq-0d9cad3dcfdbf86c0dd499efd640f5fd-heading-faq-0d9cad3dcfdbf86c0dd499efd640f5fd",
"faq-0d9cad3dcfdbf86c0dd499efd640f5fd-item-0",
"faq-0d9cad3dcfdbf86c0dd499efd640f5fd-item-1",
"faq-0d9cad3dcfdbf86c0dd499efd640f5fd-item-2",
"faq-1d09cf5c427b65f8401538f5c27cd79a",
"faq-1d09cf5c427b65f8401538f5c27cd79a-heading-faq-1d09cf5c427b65f8401538f5c27cd79a",
"faq-1d09cf5c427b65f8401538f5c27cd79a-item-0",
"faq-1d09cf5c427b65f8401538f5c27cd79a-item-1",
"faq-1d09cf5c427b65f8401538f5c27cd79a-item-2",
"faq-23d1dc823666431d94080a47fbe2f135",
"faq-23d1dc823666431d94080a47fbe2f135-heading-faq-23d1dc823666431d94080a47fbe2f135",
"faq-23d1dc823666431d94080a47fbe2f135-item-0",
"faq-23d1dc823666431d94080a47fbe2f135-item-1",
"faq-23d1dc823666431d94080a47fbe2f135-item-2",
"faq-2a2e900fbf55c94afccd3e0096d75d43",
"faq-2a2e900fbf55c94afccd3e0096d75d43-heading-faq-2a2e900fbf55c94afccd3e0096d75d43",
"faq-2a2e900fbf55c94afccd3e0096d75d43-item-0",
"faq-2a2e900fbf55c94afccd3e0096d75d43-item-1",
"faq-2a2e900fbf55c94afccd3e0096d75d43-item-2",
"faq-385e9a800872a4ef6fc41f292e5ecad0",
"faq-385e9a800872a4ef6fc41f292e5ecad0-heading-faq-385e9a800872a4ef6fc41f292e5ecad0",
"faq-385e9a800872a4ef6fc41f292e5ecad0-item-0",
"faq-385e9a800872a4ef6fc41f292e5ecad0-item-1",
"faq-385e9a800872a4ef6fc41f292e5ecad0-item-2",
"faq-3ac1e6c7e282c0c3498e241151e870a3",
"faq-3ac1e6c7e282c0c3498e241151e870a3-heading-faq-3ac1e6c7e282c0c3498e241151e870a3",
"faq-3ac1e6c7e282c0c3498e241151e870a3-item-0",
"faq-3ac1e6c7e282c0c3498e241151e870a3-item-1",
"faq-3ac1e6c7e282c0c3498e241151e870a3-item-2",
"faq-3c82f796666ad7126f45191d8686190a",
"faq-3c82f796666ad7126f45191d8686190a-heading-faq-3c82f796666ad7126f45191d8686190a",
"faq-3c82f796666ad7126f45191d8686190a-item-0",
"faq-3c82f796666ad7126f45191d8686190a-item-1",
"faq-3c82f796666ad7126f45191d8686190a-item-2",
"faq-42527a8d6149bcb25ba67974f251c9c7",
"faq-42527a8d6149bcb25ba67974f251c9c7-heading-faq-42527a8d6149bcb25ba67974f251c9c7",
"faq-42527a8d6149bcb25ba67974f251c9c7-item-0",
"faq-42527a8d6149bcb25ba67974f251c9c7-item-1",
"faq-42527a8d6149bcb25ba67974f251c9c7-item-2",
"faq-459acb940e821ec7b38b2425729753a7",
"faq-459acb940e821ec7b38b2425729753a7-heading-faq-459acb940e821ec7b38b2425729753a7",
"faq-459acb940e821ec7b38b2425729753a7-item-0",
"faq-459acb940e821ec7b38b2425729753a7-item-1",
"faq-459acb940e821ec7b38b2425729753a7-item-2",
"faq-4816264872fdc6847c6a813550673dd0",
"faq-4816264872fdc6847c6a813550673dd0-heading-faq-4816264872fdc6847c6a813550673dd0",
"faq-4816264872fdc6847c6a813550673dd0-item-0",
"faq-4816264872fdc6847c6a813550673dd0-item-1",
"faq-4816264872fdc6847c6a813550673dd0-item-2",
"faq-501f4a6b834aa1a24043fb5b9f9928c2",
"faq-501f4a6b834aa1a24043fb5b9f9928c2-heading-faq-501f4a6b834aa1a24043fb5b9f9928c2",
"faq-501f4a6b834aa1a24043fb5b9f9928c2-item-0",
"faq-501f4a6b834aa1a24043fb5b9f9928c2-item-1",
"faq-501f4a6b834aa1a24043fb5b9f9928c2-item-2",
"faq-524a2784206986528a599f1fad6821f4",
"faq-524a2784206986528a599f1fad6821f4-heading-faq-524a2784206986528a599f1fad6821f4",
"faq-524a2784206986528a599f1fad6821f4-item-0",
"faq-524a2784206986528a599f1fad6821f4-item-1",
"faq-524a2784206986528a599f1fad6821f4-item-2",
"faq-53c9868792ab3037787bf28bb9675fa4",
"faq-53c9868792ab3037787bf28bb9675fa4-heading-faq-53c9868792ab3037787bf28bb9675fa4",
"faq-53c9868792ab3037787bf28bb9675fa4-item-0",
"faq-53c9868792ab3037787bf28bb9675fa4-item-1",
"faq-53c9868792ab3037787bf28bb9675fa4-item-2",
"faq-74cbe70765110cf6e9067513ca5741c2",
"faq-74cbe70765110cf6e9067513ca5741c2-heading-faq-74cbe70765110cf6e9067513ca5741c2",
"faq-74cbe70765110cf6e9067513ca5741c2-item-0",
"faq-74cbe70765110cf6e9067513ca5741c2-item-1",
"faq-74cbe70765110cf6e9067513ca5741c2-item-2",
"faq-90908ae510b7d45ff54c4b6c9c8ca008",
"faq-90908ae510b7d45ff54c4b6c9c8ca008-heading-faq-90908ae510b7d45ff54c4b6c9c8ca008",
"faq-90908ae510b7d45ff54c4b6c9c8ca008-item-0",
"faq-90908ae510b7d45ff54c4b6c9c8ca008-item-1",
"faq-90908ae510b7d45ff54c4b6c9c8ca008-item-2",
"faq-9801f2465268421d28e3a2e740e301ba",
"faq-9801f2465268421d28e3a2e740e301ba-heading-faq-9801f2465268421d28e3a2e740e301ba",
"faq-9801f2465268421d28e3a2e740e301ba-item-0",
"faq-9801f2465268421d28e3a2e740e301ba-item-1",
"faq-9801f2465268421d28e3a2e740e301ba-item-2",
"faq-c4ef1fd75a3eb53e09b547b23bc8dc7d",
"faq-c4ef1fd75a3eb53e09b547b23bc8dc7d-heading-faq-c4ef1fd75a3eb53e09b547b23bc8dc7d",
"faq-c4ef1fd75a3eb53e09b547b23bc8dc7d-item-0",
"faq-c4ef1fd75a3eb53e09b547b23bc8dc7d-item-1",
"faq-c4ef1fd75a3eb53e09b547b23bc8dc7d-item-2",
"faq-d47a09f567ff25b85143b638bc68d60f",
"faq-d47a09f567ff25b85143b638bc68d60f-heading-faq-d47a09f567ff25b85143b638bc68d60f",
"faq-d47a09f567ff25b85143b638bc68d60f-item-0",
"faq-d47a09f567ff25b85143b638bc68d60f-item-1",
"faq-d47a09f567ff25b85143b638bc68d60f-item-2",
"faq-dc8be8c7cb908eadcc4f0cb98b4709fb",
"faq-dc8be8c7cb908eadcc4f0cb98b4709fb-heading-faq-dc8be8c7cb908eadcc4f0cb98b4709fb",
"faq-dc8be8c7cb908eadcc4f0cb98b4709fb-item-0",
"faq-dc8be8c7cb908eadcc4f0cb98b4709fb-item-1",
"faq-dc8be8c7cb908eadcc4f0cb98b4709fb-item-2",
"faq-df9f1eb3ec26e3252a2d045e833601d9",
"faq-df9f1eb3ec26e3252a2d045e833601d9-heading-faq-df9f1eb3ec26e3252a2d045e833601d9",
"faq-df9f1eb3ec26e3252a2d045e833601d9-item-0",
"faq-df9f1eb3ec26e3252a2d045e833601d9-item-1",
"faq-df9f1eb3ec26e3252a2d045e833601d9-item-2",
"faq-eafa3d5085c4f74847a727982753379e",
"faq-eafa3d5085c4f74847a727982753379e-heading-faq-eafa3d5085c4f74847a727982753379e",
"faq-eafa3d5085c4f74847a727982753379e-item-0",
"faq-eafa3d5085c4f74847a727982753379e-item-1",
"faq-eafa3d5085c4f74847a727982753379e-item-2",
"faq-eb4b749d4172f3bcae459d57f9d4cfb5",
"faq-eb4b749d4172f3bcae459d57f9d4cfb5-heading-faq-eb4b749d4172f3bcae459d57f9d4cfb5",
"faq-eb4b749d4172f3bcae459d57f9d4cfb5-item-0",
"faq-eb4b749d4172f3bcae459d57f9d4cfb5-item-1",
"faq-eb4b749d4172f3bcae459d57f9d4cfb5-item-2",
"faq-ff66f007edb5cdfca29cb7a3e0b4795c",
"faq-ff66f007edb5cdfca29cb7a3e0b4795c-heading-faq-ff66f007edb5cdfca29cb7a3e0b4795c",
"faq-ff66f007edb5cdfca29cb7a3e0b4795c-item-0",
"faq-ff66f007edb5cdfca29cb7a3e0b4795c-item-1",
"faq-ff66f007edb5cdfca29cb7a3e0b4795c-item-2",
"fas-1", "fas-1",
"fas-2", "fas-2",
"fas-3", "fas-3",
@@ -615,6 +745,7 @@
"fas-arrow-left", "fas-arrow-left",
"fas-arrow-right", "fas-arrow-right",
"fas-chevron-right", "fas-chevron-right",
"fas-circle",
"fas-circle-check", "fas-circle-check",
"fas-circle-play", "fas-circle-play",
"fas-circle-question", "fas-circle-question",
@@ -622,6 +753,7 @@
"fas-divide", "fas-divide",
"fas-ellipsis", "fas-ellipsis",
"fas-globe", "fas-globe",
"fas-grip",
"fas-h", "fas-h",
"fas-heart", "fas-heart",
"fas-house", "fas-house",
@@ -648,6 +780,7 @@
"git-graph", "git-graph",
"groupe-de-boutons", "groupe-de-boutons",
"groupe-de-cartes", "groupe-de-cartes",
"guides",
"gérer-les-préférences-des-cookies", "gérer-les-préférences-des-cookies",
"heading", "heading",
"heading-type", "heading-type",
@@ -660,6 +793,7 @@
"imgix", "imgix",
"indicateur-de-chargement", "indicateur-de-chargement",
"infobulle", "infobulle",
"input-type",
"ins", "ins",
"invite-de-commandes", "invite-de-commandes",
"items-type", "items-type",
@@ -678,6 +812,7 @@
"mermaid-diagrams", "mermaid-diagrams",
"messages-type", "messages-type",
"mindmap", "mindmap",
"more-type",
"nav", "nav",
"nav-0-0", "nav-0-0",
"nav-0-1", "nav-0-1",

View File

@@ -62,7 +62,10 @@
{{- range $suffix := $modes -}} {{- range $suffix := $modes -}}
{{- $image := printf "%s-%s%s" $base $suffix $ext -}} {{- $image := printf "%s-%s%s" $base $suffix $ext -}}
{{- $params = merge $params (dict "src" $image) -}} {{- $params = merge $params (dict
"src" $image
"class" (printf "%s d-none-%s" $args.class (cond (eq $suffix "dark") "light" "dark"))
) -}}
{{- partial "assets/helpers/image-definition.html" $params -}} {{- partial "assets/helpers/image-definition.html" $params -}}
{{- end -}} {{- end -}}
{{ else }} {{ else }}

View File

@@ -72,7 +72,7 @@
aria-labelledby="{{ $parentID }}-heading-{{ $args.id }}" aria-labelledby="{{ $parentID }}-heading-{{ $args.id }}"
data-bs-parent="#accordion-{{ $parentID }}" data-bs-parent="#accordion-{{ $parentID }}"
> >
<div class="accordion-body">{{- $args.body | safeHTML -}}</div> <div class="accordion-body">{{ $args.body | $args.page.RenderString | safeHTML }}</div>
</div> </div>
</div> </div>
{{ else }} {{ else }}
@@ -87,7 +87,7 @@
data-has-content="{{ gt (len $args.body) 0 }}" data-has-content="{{ gt (len $args.body) 0 }}"
{{ if $args.disabled }} data-disabled-id="{{ $args.id }}"{{ end }} {{ if $args.disabled }} data-disabled-id="{{ $args.id }}"{{ end }}
> >
{{ $args.body }} {{ $args.body | $args.page.RenderString | safeHTML }}
</div> </div>
{{ end }} {{ end }}
{{ end }} {{ end }}

View File

@@ -34,6 +34,7 @@
<div id="accordion-{{ $id }}" class="accordion mb-3{{ with $args.class }} {{ . }}{{ end }} nav-callout"> <div id="accordion-{{ $id }}" class="accordion mb-3{{ with $args.class }} {{ . }}{{ end }} nav-callout">
{{- range $index, $item := $args.list -}} {{- range $index, $item := $args.list -}}
{{ partial "assets/nav-item.html" (dict {{ partial "assets/nav-item.html" (dict
"page" $args.page
"id" $index "id" $index
"parentID" $id "parentID" $id
"fade" false "fade" false

View File

@@ -13,7 +13,6 @@
{{ if or $args.err $args.warnmsg }} {{ if or $args.err $args.warnmsg }}
{{ partial (cond $args.err "utilities/LogErr.html" "utilities/LogWarn.html") (dict {{ partial (cond $args.err "utilities/LogErr.html" "utilities/LogWarn.html") (dict
"partial" "assets/timeline.html" "partial" "assets/timeline.html"
"warnid" "warn-invalid-arguments"
"msg" "Invalid arguments" "msg" "Invalid arguments"
"details" ($args.errmsg | append $args.warnmsg) "details" ($args.errmsg | append $args.warnmsg)
"file" page.File "file" page.File
@@ -28,7 +27,12 @@
{{- $page := $args.page -}} {{- $page := $args.page -}}
{{- $data := partial "utilities/GetI18nData.html" (dict "page" $page "data" $args.data) }} {{- $data := partial "utilities/GetI18nData.html" (dict "page" $page "data" $args.data) }}
{{ if not $data -}} {{ if not $data -}}
{{ errorf "Invalid timeline data '%s': %s" $page.File -}} {{ partial "utilities/LogErr.html" (dict
"partial" "assets/timeline.html"
"msg" "Invalid arguments"
"details" (slice (printf "Invalid timeline data '%s'" $args.data))
"file" page.File
)}}
{{ $error = true }} {{ $error = true }}
{{ end -}} {{ end -}}
{{ $background := partial "utilities/GetBackgroundStyle.html" (dict "background" $args.background) }} {{ $background := partial "utilities/GetBackgroundStyle.html" (dict "background" $args.background) }}
@@ -80,7 +84,10 @@
{{ $datestr := (partial "utilities/date.html" (dict "date" $date "format" "long")) -}} {{ $datestr := (partial "utilities/date.html" (dict "date" $date "format" "long")) -}}
<p class="mb-0"><small class="text-body-secondary text-uppercase">{{ $datestr -}}</small></p> <p class="mb-0"><small class="text-body-secondary text-uppercase">{{ $datestr -}}</small></p>
{{ end }} {{ end }}
<p class="mt-3 mb-0">{{ $content | $page.RenderString }}</p> <p class="mt-3 mb-0">
<!-- TODO: $page.RenderString causes an out of bounds error -->
{{ $content | markdownify }}
</p>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -30,11 +30,12 @@
{{- if isset .Parent.Params "fade" }}{{ $parentFade = partial "utilities/CastBool.html" (.Parent.Get "fade") }}{{ end -}} {{- if isset .Parent.Params "fade" }}{{ $parentFade = partial "utilities/CastBool.html" (.Parent.Get "fade") }}{{ end -}}
{{- $fade = or $fade $parentFade -}} {{- $fade = or $fade $parentFade -}}
{{- $title := or $args.title $args.header -}} {{- $title := or $args.title $args.header -}}
{{- $body := trim .Inner " \r\n" | .Page.RenderString -}} {{- $body := trim .Inner " \r\n" -}}
{{- $current := "" -}} {{- $current := "" -}}
{{/* Main code */}} {{/* Main code */}}
{{- $output := partial "assets/nav-item.html" (dict {{- $output := partial "assets/nav-item.html" (dict
"page" .Page
"id" $id "id" $id
"parent-id" $parent "parent-id" $parent
"fade" $fade "fade" $fade
@@ -57,6 +58,7 @@
{{- end }} {{- end }}
{{- $alternative := partial "assets/nav-item" (dict {{- $alternative := partial "assets/nav-item" (dict
"page" .Page
"id" $id "id" $id
"parent-id" $parent "parent-id" $parent
"fade" $fade "fade" $fade

View File

@@ -21,9 +21,9 @@
{{- $innerTitles := .Scratch.Get "inner-title" -}} {{- $innerTitles := .Scratch.Get "inner-title" -}}
{{- $input := trim .Inner " \r\n" -}} {{- $input := trim .Inner " \r\n" -}}
{{- if $input -}} {{- if $input -}}
{{ $input = replace $input "\n" "\n " -}} {{- $input = replace $input "\n" "\n " -}}
{{ warnf "Unexpected inner content: %s\r\n %s" .Position $input -}} {{- warnf "Unexpected inner content: %s\r\n %s" .Position $input -}}
{{ end }} {{- end -}}
{{/* Main code */}} {{/* Main code */}}
{{- if not $args.err -}} {{- if not $args.err -}}
@@ -41,4 +41,4 @@
"width" $args.width "width" $args.width
) )
-}} -}}
{{ end }} {{- end -}}

4
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{ {
"name": "@gethinode/hinode", "name": "@gethinode/hinode",
"version": "1.0.0-alpha5", "version": "1.0.0-alpha7",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "@gethinode/hinode", "name": "@gethinode/hinode",
"version": "1.0.0-alpha5", "version": "1.0.0-alpha7",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@fullhuman/postcss-purgecss": "^7.0.2", "@fullhuman/postcss-purgecss": "^7.0.2",

View File

@@ -1,6 +1,6 @@
{ {
"name": "@gethinode/hinode", "name": "@gethinode/hinode",
"version": "1.0.0-alpha5", "version": "1.0.0-alpha7",
"description": "Hinode is a clean documentation and blog theme for Hugo, an open-source static site generator", "description": "Hinode is a clean documentation and blog theme for Hugo, an open-source static site generator",
"keywords": [ "keywords": [
"hugo", "hugo",