Compare commits

...

49 Commits

Author SHA1 Message Date
Mark Dumay
317eab54f8 Merge pull request #431 from gethinode/relref
Refactor link shortcode
2023-08-17 09:39:36 +02:00
mark
cb90ef363b Bump package version 2023-08-17 09:27:45 +02:00
Mark Dumay
f31309f863 Merge branch 'main' into relref 2023-08-17 09:24:22 +02:00
mark
a76a692075 Update build stats 2023-08-17 09:22:45 +02:00
mark
f52f758962 Refactor link shortcode 2023-08-17 09:22:39 +02:00
mark
bcc3a7877e Use proper page context to render inner content 2023-08-17 09:22:22 +02:00
mark
7b52da5ce0 Add link shortcode 2023-08-17 09:21:29 +02:00
mark
e7403bd1a4 Add multilanguage support 2023-08-17 09:21:09 +02:00
mark
2881eb4546 Trim trailing '/' to improve finding the right page 2023-08-17 09:20:53 +02:00
Mark Dumay
c7cc2269ba Merge pull request #430 from gethinode/develop
Improve references and page resource handling
2023-08-16 16:10:22 +02:00
Mark Dumay
014158bc63 Merge branch 'main' into develop 2023-08-16 16:00:17 +02:00
Mark Dumay
8dcccb17ad Merge pull request #429 from aefly/french-translation
Adjusted spacing in French language
2023-08-16 16:00:05 +02:00
Mark Dumay
325a222386 Merge branch 'main' into develop 2023-08-16 15:55:50 +02:00
mark
9b4f4229f7 Bump package release 2023-08-16 15:52:07 +02:00
mark
3b719bf145 Update build stats 2023-08-16 15:51:18 +02:00
mark
136d5d2e15 Use context to identify references incl anchors 2023-08-16 15:51:07 +02:00
mark
1c10a00089 Use proper page context to render inner content 2023-08-16 15:47:53 +02:00
aefly
a8d9401de3 Adjusted spacing in French error message 2023-08-16 14:43:32 +02:00
mark
e77fa7dfbc Add support for wrapper argument 2023-08-16 13:05:42 +02:00
mark
8d3c0cc4ce Add support for portrait ratio 2023-08-16 13:05:30 +02:00
mark
87e04c8c4b Fix indentation 2023-08-16 13:04:15 +02:00
mark
e1f4228c31 Add support for 3x2 ratio 2023-08-16 13:04:02 +02:00
mark
4cb4bef579 Support page resources 2023-08-16 09:26:37 +02:00
Mark Dumay
744a0f7248 Merge pull request #426 from gethinode/develop
Clean up installation
2023-08-15 14:10:30 +02:00
mark
a1e48ade96 Fix linting issue 2023-08-15 14:01:34 +02:00
Mark Dumay
9a2540cf04 Merge branch 'main' into develop 2023-08-15 13:55:57 +02:00
mark
399f525a3f Bump package version 2023-08-15 13:55:14 +02:00
mark
f1c99b0ed7 Update installation and license 2023-08-15 13:55:07 +02:00
mark
6e14e50dfd Include build stats in repo 2023-08-15 13:18:49 +02:00
mark
a143f90a37 Clean up stylelint config 2023-08-15 13:18:34 +02:00
mark
e60b2ec4a1 Add build stats to repo 2023-08-15 13:18:14 +02:00
mark
0250ef68dd Expand all code lines horizontally 2023-08-15 08:41:38 +02:00
Mark Dumay
71c9c19480 Merge pull request #425 from gethinode/develop
Fix menu identification of home
2023-08-14 16:19:43 +02:00
Mark Dumay
fe108c2621 Merge branch 'main' into develop 2023-08-14 15:50:44 +02:00
github-actions[bot]
aa76036470 Merge pull request #423 from gethinode/dependabot/npm_and_yarn/autoprefixer-10.4.15
Bump autoprefixer from 10.4.14 to 10.4.15
2023-08-14 13:47:55 +00:00
Mark Dumay
1475782fa6 Merge branch 'main' into develop 2023-08-14 15:42:52 +02:00
Mark Dumay
aa201d561d Merge branch 'main' into dependabot/npm_and_yarn/autoprefixer-10.4.15 2023-08-14 15:42:23 +02:00
github-actions[bot]
35a8776bae Merge pull request #424 from gethinode/dependabot/npm_and_yarn/eslint-8.47.0
Bump eslint from 8.46.0 to 8.47.0
2023-08-14 13:42:09 +00:00
mark
1f000d4b23 Fix menu identification of home 2023-08-14 15:36:15 +02:00
dependabot[bot]
fa268f4541 Bump eslint from 8.46.0 to 8.47.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.46.0 to 8.47.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.46.0...v8.47.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-14 13:35:07 +00:00
dependabot[bot]
f9c8c85578 Bump autoprefixer from 10.4.14 to 10.4.15
Bumps [autoprefixer](https://github.com/postcss/autoprefixer) from 10.4.14 to 10.4.15.
- [Release notes](https://github.com/postcss/autoprefixer/releases)
- [Changelog](https://github.com/postcss/autoprefixer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/autoprefixer/compare/10.4.14...10.4.15)

---
updated-dependencies:
- dependency-name: autoprefixer
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-14 13:34:48 +00:00
Mark Dumay
f7274cd43d Merge pull request #422 from gethinode/main
Sync with main
2023-08-14 15:21:56 +02:00
Mark Dumay
b122c40148 Merge pull request #421 from gethinode/highlight
Fix line highlights
2023-08-14 15:14:57 +02:00
Mark Dumay
05fa3b795c Merge branch 'main' into highlight 2023-08-14 15:02:35 +02:00
Mark Dumay
5f329f9271 Merge pull request #420 from gethinode/develop
Mount initial placeholder content
2023-08-14 15:01:40 +02:00
mark
22f9b9ee68 Fix line highlights 2023-08-14 15:00:51 +02:00
Mark Dumay
3713f73da6 Merge branch 'main' into develop 2023-08-14 14:10:13 +02:00
mark
efa4933c77 Bump package version 2023-08-14 14:09:32 +02:00
mark
fc9be4cdcf Mount initial placeholder content 2023-08-14 14:04:34 +02:00
28 changed files with 1062 additions and 203 deletions

1
.gitignore vendored
View File

@@ -5,4 +5,3 @@ node_modules/
.DS_store
.hugo_build.lock
hugo_stats.json

View File

@@ -1,7 +1,6 @@
assets/scss/common/_variables.scss
assets/scss/components/_syntax-dark.scss
assets/scss/components/_syntax-light.scss
assets/scss/hotfix
assets/scss/vendor
assets/scss/theme/fonts.scss
assets/scss/app.scss

View File

@@ -56,54 +56,42 @@
- [PageSpeed Insights][pagespeed]
- [Mozilla Observatory][observatory]
Hinode is a clean documentation and blog theme for [Hugo][hugo], an open-source static site generator. Based on the [Bootstrap 5][bootstrap] framework, the rendered site is fast, secure, and responsive. Hinode uses [FlexSearch][flexsearch] to enable full text search across your site. Finally, the theme supports [Node Package Manager][npm] to automate the build process and to keep track of dependencies.
Additional features include:
- Flexible configuration of Hugo modules
- Switching between light mode and dark mode
- Support for multiple languages
- Reusable Bootstrap components through configurable shortcodes and partials
- Embedded comments through light-weight integration with GitHub via [utteranc.es][utterances]
- Integrated sidebar navigation for content-heavy sections, such as documentation pages
- Reponsive image handling for multiple screen sizes and resolutions
- Optimized search results, scoring 100 points for SEO on [PageSpeed Insights][pagespeed]
- Secure by default, scoring A+ on [Mozilla Observatory test][observatory]
Hinode is a clean documentation and blog theme for [Hugo][hugo], an open-source static site generator. Based on the [Bootstrap 5][bootstrap] framework, the rendered site is fast, secure, and responsive. Hinode uses [FlexSearch][flexsearch] to enable full text search across your site. Finally, the theme supports [Node Package Manager][npm] (npm) to automate the build process and to keep track of dependencies.
Detailed information about Hinode is available on the [official website][website].
## Prerequisites
Hinode requires Git, Node.js and npm for local development and testing. Download the Git binary from the [official website][git_download]. Next, download and install [Node.js][nodejs] (it includes npm) for your platform.
Hinode is a [Hugo theme that uses modules][hugo_modules] to install and maintain various components. It can be installed using either Hugo or npm. If you would like to take advantage of automation, the npm approach is recommended. Refer to the [Hinode template][repository_template] for installation instructions with npm.
The installation instructions in this readme install Hinode as a regular Hugo theme. Hinode requires the following software to be installed on your local machine.
- [Go binary][golang_download]
- [Hugo][nodejs] (extended version)
[Git][git_download] is recommended, but is not a strict requirement.
## Installation
Start a new Hinode project in three steps:
1. Create a new site
Hinode is available as a [template][repository_template], and a [main repository][repository]. The template [npm][npm] to link to the latest available version of Hinode. Unless you plan to customize a lot, it is recommended to use the template:
1. **Create a new site**
```bash
git clone https://github.com/gethinode/template.git my-hinode-site && cd my-hinode-site
hugo new site my-hinode-site && cd my-hinode-site
```
Use the main theme if you intend to customize the base code:
1. **Initialize the module system**
```bash
git clone https://github.com/gethinode/hinode.git my-hinode-site && cd my-hinode-site
hugo mod init example.com/my-hinode-site
echo "[[module.imports]]\npath = 'github.com/gethinode/hinode'" >> hugo.toml
```
1. Install dependencies
1. **Start a development server**
```bash
npm install
```
1. Start development server
```bash
npm run start
hugo server
```
## Configuration
@@ -127,7 +115,7 @@ Hinode is inspired by the following themes:
## License
The `hinode` and `template` codebase is released under the [MIT license][license]. The documentation (including the "README" and `docs` codebase) is licensed under the Creative Commons [(CC BY-NC 4.0)][cc-by-nc-4.0] license.
The `hinode`, `docs`, and `template` codebase is released under the [MIT license][license]. The documentation of Hinode is licensed under the Creative Commons [(CC BY-NC 4.0)][cc-by-nc-4.0] license. This includes all files within the repository's `/content` and `/exampleSite/content` folders and their children, as well as the "README" in the repository root. This applies to all public repositories maintained by `gethinode` on GitHub, including the `gethinode/hinode`, `gethinode/template`, and `gethinode/docs` repositories, unless specified otherwise.
<!-- MARKDOWN PUBLIC LINKS -->
[blist]: https://github.com/apvarun/blist-hugo-theme
@@ -137,6 +125,8 @@ The `hinode` and `template` codebase is released under the [MIT license][license
[flexsearch]: https://github.com/nextapps-de/flexsearch
[git_download]: https://git-scm.com
[hugo]: https://gohugo.io
[hugo_download]: https://gohugo.io/installation
[hugo_modules]: https://gohugo.io/hugo-modules/
[netlify]: https://www.netlify.com
[nodejs]: https://nodejs.org
[npm]: https://www.npmjs.com
@@ -147,6 +137,7 @@ The `hinode` and `template` codebase is released under the [MIT license][license
<!-- MARKDOWN MAINTAINED LINKS -->
[contribute]: https://gethinode.com/contribute
[getstarted]: https://gethinode.com/docs
[golang_download]: https://go.dev/dl/
[demo]: https://demo.gethinode.com/
[license]: https://github.com/gethinode/hinode/blob/main/LICENSE
[repository]: https://github.com/gethinode/hinode.git

View File

@@ -6,9 +6,9 @@
/* LineLink */ .chroma .lnlinks { outline: none; text-decoration: none; color: inherit }
/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }
/* LineHighlight */ .chroma .hl { background-color: #b8b800 }
/* LineHighlight */ .chroma .hl { background-color: #373700 }
/* LineNumbersTable */ .chroma .lnt { white-space: pre; -webkit-user-select: none; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #64686c }
/* LineNumbers */ .chroma .ln { white-space: pre; -webkit-user-select: none; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #6e7681 }
/* LineNumbers */ .chroma .ln { white-space: pre; -webkit-user-select: none; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #999fa8 }
/* Line */ .chroma .line { display: flex; }
/* Keyword */ .chroma .k { color: #ff7b72 }
/* KeywordConstant */ .chroma .kc { color: #79c0ff }
@@ -83,4 +83,4 @@
/* GenericSubheading */ .chroma .gu { color: #79c0ff }
/* GenericTraceback */ .chroma .gt { color: #ff7b72 }
/* GenericUnderline */ .chroma .gl { text-decoration: underline }
/* TextWhitespace */ .chroma .w { color: #6e7681 }
/* TextWhitespace */ .chroma .w { color: #999fa8 }

View File

@@ -8,6 +8,14 @@
background-color: transparent if($enable-important-utilities, !important, null);
}
.chroma {
display: flex;
}
.chroma code {
flex: 1;
}
.syntax-highlight {
background-color: var(--bs-light) if($enable-important-utilities, !important, null);
overflow-x: auto;

View File

@@ -94,6 +94,9 @@ home = ["HTML", "RSS", "REDIR"]
[[module.mounts]]
source = "assets"
target = "assets"
[[module.mounts]]
source = "content"
target = "content"
[[module.mounts]]
source = "i18n"
target = "i18n"

View File

@@ -217,6 +217,31 @@ As an example, the following shortcode displays an image with rounded corners an
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Link
As an example, the following shortcodes render links in different formats.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
- {{</* link hinode >}}Named link with default settings{{< /link */>}}
- {{</* link name=hinode cue=false tab=false >}}Named link opening in current tab w/o icon{{< /link */>}}
- {{</* link name=hinode cue=true tab=true >}}Named link opening in new tab with icon{{< /link */>}}
- {{</* link hinode /*/>}}
- {{</* link href="https://developer.mozilla.org" >}}External link{{< /link */>}}
- {{</* link "./projects/another-project" >}}Internal link with title{{< /link */>}}
- {{</* link url="projects/another-project" /*/>}}
- {{</* link url="/projects/another-project" /*/>}}
- {{</* link url="../projects/another-project" case=false /*/>}}
- {{</* link "/about/" /*/>}}
- {{</* link "/fr/about/" /*/>}}
- {{</* link "/fr/about" >}}About (French){{< /link */>}}
- {{</* link "#image" /*/>}}
- {{</* link "components/#map" /*/>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Nav
As an example, the following shortcode displays a tab group with vertically aligned pills.

464
exampleSite/hugo_stats.json Normal file
View File

@@ -0,0 +1,464 @@
{
"htmlElements": {
"tags": [
"a",
"body",
"br",
"button",
"code",
"div",
"figcaption",
"figure",
"footer",
"form",
"h1",
"h2",
"h3",
"h4",
"h5",
"h6",
"head",
"hr",
"html",
"i",
"img",
"input",
"li",
"link",
"meta",
"nav",
"noscript",
"ol",
"p",
"path",
"pre",
"script",
"section",
"small",
"span",
"strong",
"svg",
"time",
"title",
"ul",
"use"
],
"classes": [
"accordion",
"accordion-body",
"accordion-button",
"accordion-collapse",
"accordion-header",
"accordion-item",
"active",
"alert",
"alert-danger",
"alert-dismissible",
"align-content-center",
"align-items-center",
"align-items-end",
"align-items-start",
"align-middle",
"align-self-center",
"anchor",
"badge",
"bg-body",
"bg-body-tertiary",
"bg-danger",
"bg-info",
"bg-opacity-10",
"bg-primary",
"bg-primary-subtle",
"bg-secondary",
"border",
"border-0",
"border-1",
"border-bottom",
"border-end",
"border-none",
"border-start",
"border-top",
"bottom-0",
"bottom-bar",
"breadcrumb",
"breadcrumb-item",
"btn",
"btn-close",
"btn-group",
"btn-light",
"btn-outline-primary",
"btn-outline-secondary",
"btn-primary",
"btn-secondary",
"btn-sm",
"btn-social",
"card",
"card-body",
"card-body-link",
"card-emphasize",
"card-img-top",
"card-img-wrap",
"card-text",
"card-title",
"card-zoom",
"carousel",
"carousel-caption",
"carousel-control-next",
"carousel-control-next-icon",
"carousel-control-prev",
"carousel-control-prev-icon",
"carousel-indicators",
"carousel-inner",
"carousel-item",
"chroma",
"col",
"col-12",
"col-3",
"col-4",
"col-6",
"col-8",
"col-9",
"col-lg-2",
"col-lg-4",
"col-lg-8",
"col-md-10",
"col-md-2",
"col-md-4",
"col-md-8",
"col-md-auto",
"col-sm-12",
"col-sm-3",
"col-sm-6",
"collapse",
"collapsed",
"container",
"container-fluid",
"container-xxl",
"d-block",
"d-flex",
"d-grid",
"d-inline",
"d-inline-flex",
"d-lg-block",
"d-md-block",
"d-md-flex",
"d-md-none",
"d-none",
"d-none-dark",
"d-none-light",
"d-sm-block",
"d-sm-none",
"display-1",
"display-4",
"dropdown",
"dropdown-divider-bg",
"dropdown-item",
"dropdown-menu",
"dropdown-menu-end",
"dropdown-toggle",
"emphasis",
"emphasis-dark",
"end-0",
"fa",
"fa-10x",
"fa-2x",
"fa-2xl",
"fa-2xs",
"fa-arrow-left",
"fa-arrow-right",
"fa-bootstrap",
"fa-circle-check",
"fa-circle-half-stroke",
"fa-code",
"fa-docker",
"fa-ellipsis",
"fa-face-frown",
"fa-facebook",
"fa-fluid",
"fa-fw",
"fa-github",
"fa-globe",
"fa-heart",
"fa-house",
"fa-link",
"fa-linkedin",
"fa-magnifying-glass",
"fa-medium",
"fa-moon",
"fa-rocket",
"fa-share-nodes",
"fa-sort",
"fa-square-check",
"fa-sun",
"fa-up-right-from-square",
"fa-whatsapp",
"fa-wrapper",
"fa-x-twitter",
"fab",
"fade",
"fas",
"feature",
"figure-caption",
"fixed-top",
"flex-column",
"flex-fill",
"flex-grow-1",
"flex-wrap",
"font-monospace",
"footer",
"form-control",
"fs-3",
"fs-5",
"fw-30",
"fw-bold",
"fw-semibold",
"g-0",
"gap-2",
"gap-3",
"gradient",
"h-100",
"h4",
"h6",
"heading",
"highlight",
"hstack",
"img-fluid",
"img-wrap",
"invisible",
"is-search",
"justify-content-between",
"justify-content-center",
"justify-content-end",
"justify-content-start",
"lead",
"leaflet-map",
"link-bg-body",
"link-bg-body-tertiary",
"link-bg-footer",
"link-primary",
"link-secondary",
"link-success",
"link-warning",
"m-0",
"main-nav-toggler",
"mb-0",
"mb-3",
"mb-4",
"mb-5",
"mb-lg-5",
"me-3",
"me-auto",
"middle-bar",
"min-vh-100",
"ms-1",
"ms-3",
"ms-auto",
"ms-md-3",
"mt-2",
"mt-3",
"mt-5",
"mt-auto",
"multi-docs-collapse-14",
"multi-file-collapse-1",
"mx-auto",
"mx-md-2",
"my-2",
"my-auto",
"my-md-0",
"nav",
"nav-item",
"nav-link",
"nav-pills",
"nav-tabs",
"navbar",
"navbar-brand",
"navbar-collapse",
"navbar-contrast",
"navbar-expand-md",
"navbar-nav",
"navbar-nav-scroll",
"navbar-toggler",
"next",
"no-js",
"order-1",
"order-2",
"order-3",
"order-4",
"order-first",
"order-sm-2",
"order-sm-3",
"p-0",
"p-1",
"p-2",
"p-3",
"p-4",
"pb-2",
"pb-3",
"pb-5",
"pe-3",
"position-absolute",
"position-fixed",
"position-relative",
"post-date",
"previous",
"ps-1",
"ps-3",
"ps-xl-3",
"pt-3",
"px-3",
"px-4",
"px-xxl-0",
"py-1",
"py-2",
"py-3",
"py-5",
"py-md-1",
"ratio",
"ratio-16x9",
"rounded",
"rounded-2",
"rounded-bottom",
"rounded-pill",
"rounded-top",
"row",
"row-cols-1",
"row-cols-2",
"row-cols-md-3",
"row-cols-sm-2",
"row-cols-sm-3",
"row-cols-sm-4",
"search",
"section",
"section-sm",
"shadow",
"show",
"slide",
"small",
"spinner-border",
"start-100",
"sticky-top",
"stretched-link",
"svg-inline--fa",
"switch-mode-collapsed",
"syntax-highlight",
"tab-content",
"tab-pane",
"tag-link",
"text-bg-body",
"text-bg-body-tertiary",
"text-bg-info",
"text-bg-primary",
"text-bg-success",
"text-bg-warning",
"text-body",
"text-body-secondary",
"text-break",
"text-center",
"text-decoration-none",
"text-end",
"text-info",
"text-nowrap",
"text-right",
"text-secondary",
"text-sm-start",
"text-uppercase",
"theme-icon",
"theme-icon-active",
"tickmark",
"timeline",
"timeline-bg-dark",
"timeline-connector-end",
"timeline-connector-start",
"timeline-description-text-end",
"timeline-description-text-start",
"timeline-dot",
"timeline-info",
"timeline-panel-end",
"timeline-panel-start",
"timeline-primary",
"timeline-semi-circle-end",
"timeline-semi-circle-start",
"timeline-sm",
"timeline-success",
"timeline-warning",
"toast",
"toast-body",
"toast-container",
"toast-header",
"toc",
"toc-button",
"toc-panel",
"toc-sidebar",
"toggler-icon",
"top-0",
"top-bar",
"translate-middle",
"visually-hidden",
"vr",
"w-100",
"w-50"
],
"ids": [
"-theme",
"-theme-collapsed",
"TableOfContents",
"accordion",
"accordion-0",
"accordion-0-heading-0",
"accordion-0-heading-1",
"accordion-0-heading-2",
"accordion-0-item-0",
"accordion-0-item-1",
"accordion-0-item-2",
"alert",
"badge",
"body-docs-collapse-14",
"body-file-collapse-1",
"breadcrumb",
"btn-webshare",
"button",
"button-group",
"card",
"carousel",
"carousel-0",
"collapse",
"collapse-1",
"command-prompt",
"docs",
"example",
"file",
"footer-docs-collapse-14",
"footer-file-collapse-1",
"formula-katex",
"icon",
"image",
"leaflet-map-0",
"link",
"map",
"nav",
"nav-0",
"nav-0-0",
"nav-0-1",
"nav-0-2",
"nav-0-btn-0",
"nav-0-btn-1",
"nav-0-btn-2",
"navbar",
"navbar-0-collapse",
"navbar-sample-collapse",
"release",
"search",
"spinner",
"suggestions",
"timeline",
"toast",
"toast-container",
"toast-copied-code-message",
"toast-example-1",
"toast-example-2",
"toast-message-email-4",
"toc-collapse",
"tooltip"
]
}
}

186
hugo_stats.json Normal file
View File

@@ -0,0 +1,186 @@
{
"htmlElements": {
"tags": [
"a",
"body",
"button",
"div",
"footer",
"form",
"head",
"hr",
"html",
"img",
"input",
"li",
"link",
"meta",
"nav",
"p",
"path",
"script",
"small",
"span",
"strong",
"svg",
"title",
"ul"
],
"classes": [
"active",
"align-content-center",
"align-items-center",
"align-self-center",
"bg-body",
"bg-info",
"bg-opacity-10",
"bg-primary",
"bottom-0",
"bottom-bar",
"btn",
"btn-close",
"btn-primary",
"col",
"col-12",
"col-lg-2",
"col-lg-4",
"col-md-2",
"col-md-4",
"col-md-8",
"col-md-auto",
"col-sm-12",
"col-sm-6",
"collapse",
"collapsed",
"container-fluid",
"container-xxl",
"d-block",
"d-flex",
"d-inline",
"d-lg-block",
"d-md-block",
"d-md-flex",
"d-md-none",
"d-none",
"d-sm-none",
"display-1",
"display-4",
"dropdown",
"dropdown-divider-bg",
"dropdown-item",
"dropdown-menu",
"dropdown-menu-end",
"dropdown-toggle",
"emphasis",
"end-0",
"fa",
"fa-10x",
"fa-2x",
"fa-book-open",
"fa-circle-half-stroke",
"fa-ellipsis",
"fa-face-frown",
"fa-fw",
"fa-github",
"fa-linkedin",
"fa-medium",
"fa-moon",
"fa-sun",
"fab",
"fas",
"feature",
"fixed-top",
"flex-column",
"flex-fill",
"flex-grow-1",
"flex-wrap",
"footer",
"form-control",
"fs-3",
"fw-30",
"fw-bold",
"h-100",
"img-fluid",
"img-wrap",
"invisible",
"is-search",
"justify-content-center",
"link-bg-footer",
"link-secondary",
"main-nav-toggler",
"mb-4",
"me-auto",
"middle-bar",
"min-vh-100",
"ms-auto",
"ms-md-3",
"mt-3",
"mt-5",
"mx-auto",
"mx-md-2",
"my-auto",
"nav-item",
"nav-link",
"navbar",
"navbar-brand",
"navbar-collapse",
"navbar-expand-md",
"navbar-nav",
"navbar-toggler",
"no-js",
"order-1",
"order-2",
"order-3",
"order-4",
"order-first",
"order-sm-2",
"order-sm-3",
"p-0",
"p-2",
"p-3",
"p-4",
"pb-5",
"pe-1",
"position-fixed",
"position-relative",
"px-3",
"px-4",
"px-xxl-0",
"py-2",
"py-5",
"py-md-1",
"rounded",
"row",
"row-cols-1",
"row-cols-sm-3",
"row-cols-sm-4",
"search",
"shadow",
"svg-inline--fa",
"switch-mode-collapsed",
"text-center",
"text-decoration-none",
"text-secondary",
"text-sm-start",
"theme-icon",
"theme-icon-active",
"toast",
"toast-body",
"toast-container",
"toast-header",
"toggler-icon",
"top-bar",
"vr",
"w-100"
],
"ids": [
"-theme",
"-theme-collapsed",
"navbar-0-collapse",
"search",
"suggestions",
"toast-container",
"toast-copied-code-message"
]
}
}

View File

@@ -94,7 +94,7 @@
# 404 page
- id: pageNotFound
translation: "La page que vous recherchez n'existe pas ou une autre erreur s'est produite.Essayez de revenir à notre {{ . }}."
translation: "La page que vous recherchez n'existe pas ou une autre erreur s'est produite. Essayez de revenir à notre {{ . }}."
- id: pageNotFoundTitle
translation: "Page non trouvée"
- id: pageNotFoundHome

View File

@@ -6,18 +6,28 @@
partial supports the following arguments:
"url": Required relative url of the image, e.g. "img/example.jpg"
"mode": Optional flag indicating if the image should support color modes.
"ratio": Optional ratio of the image, either "1x1", "4x3", "16x9", or "21x9". If set, the image is
"ratio": Optional ratio of the image, either "1x1", "3x2", "4x3", "16x9", or "21x9". If set, the image is
resized and cropped to match the ratio. Else the original aspect ratio of the image is kept.
"portrait": Optional flag to adjust the ratio from landscape to portrait. The image itself is not rotated, only
the crop area is adjusted.
"outerClass": Optional class attribute of the outer div element, e.g. "img-wrap".
"innerClass": Optional class attribute of the inner img element, e.g. "rounded".
"title": Optional alternate text of the image.
"caption": Optional figure caption.
"page": Optional page context, used to match page resources.
-->
{{- $validRatios := slice "1x1" "4x3" "16x9" "21x9" -}}
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
{{- $validRatios := slice "1x1" "3x2" "4x3" "16x9" "21x9" -}}
{{- $ratio := .ratio -}}
{{- if $ratio -}}
{{ if not (in $validRatios $ratio) -}}
{{- errorf "partial [assets/image.html] - Invalid value for param 'ratio'" -}}
{{ end -}}
{{- end -}}
{{- $portrait := .portrait -}}
{{- $url := .url -}}
{{- $mode := false -}}
{{- with .mode -}}
{{ $mode = . -}}
@@ -30,12 +40,37 @@
{{- errorf "partial [assets/image.html] - Invalid value for param 'mode'" -}}
{{- end -}}
{{- $modes := site.Params.main.modes | default (slice "light" "dark") -}}
{{- $page := .page -}}
{{- define "partials/image-portrait.html" -}}
{{- $dimensions := slice }}
{{- $dim := .dim -}}
{{- $dimensions = $dimensions | append $dim -}}
{{- $portraits := slice }}
{{- range $d := $dimensions -}}
{{- $p := split $d "x" }}
{{ if ne (len $p) 2 }}
{{- warnf "partial [assets/image.html] - Invalid dimension: %s" $d -}}
{{- $portraits = $portraits | append $d -}}
{{- else -}}
{{- $portraits = $portraits | append (printf "%sx%s" (index $p 1) (index $p 0)) -}}
{{- end -}}
{{- end -}}
{{- $ret := "" }}
{{- if reflect.IsSlice $dim -}}
{{ $ret = $portraits -}}
{{- else if gt (len $portraits) 0 -}}
{{- $ret = index $portraits 0 -}}
{{- end -}}
{{- return $ret -}}
{{- end -}}
<!-- Generate a fallback image of type jpg -->
{{- define "partials/image-default.html" -}}
{{- $img := .img -}}
{{- $ratio := .ratio -}}
{{- $portrait := and .portrait .ratio -}}
{{- $width := "1400" -}}
{{- $dim := "" -}}
{{- $fallback := "" -}}
@@ -43,6 +78,8 @@
{{- with $img -}}
{{- if eq $ratio "4x3" -}}
{{- $dim = "1400x1050" }}
{{- else if eq $ratio "3x2" -}}
{{- $dim = "1400x933" }}
{{- else if eq $ratio "1x1" -}}
{{- $dim = "1400x1400" }}
{{- else if eq $ratio "16x9" -}}
@@ -53,6 +90,10 @@
{{- $dim = printf "%sx%d" $width (int (math.Round (mul (div (float $width) $img.Width) $img.Height))) -}}
{{- end -}}
{{- if $portrait -}}
{{- $dim = partial "partials/image-portrait.html" (dict "dim" $dim) -}}
{{- end -}}
{{- if $ratio -}}
{{- $fallback = ($img.Fill (printf "%s jpg" $dim)) -}}
{{- else -}}
@@ -72,6 +113,7 @@
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
{{- $img := .img -}}
{{- $ratio := .ratio -}}
{{- $portrait := and .portrait .ratio -}}
{{- $imgset := "" -}}
{{- $widths := slice "576" "768" "992" "1200" "1400" -}}
@@ -79,6 +121,8 @@
{{- with $img -}}
{{- if eq $ratio "4x3" -}}
{{- $dims = slice "576x432" "768x576" "992x744" "1200x900" "1400x1050" -}}
{{- else if eq $ratio "3x2" -}}
{{- $dims = slice "576x384" "768x512" "992x661" "1200x800" "1400x933" -}}
{{- else if eq $ratio "1x1" -}}
{{- $dims = slice "576x576" "768x768" "992x992" "1200x1200" "1400x1400" -}}
{{- else if eq $ratio "16x9" -}}
@@ -91,6 +135,10 @@
{{- end -}}
{{- end -}}
{{- if $portrait -}}
{{- $dims = partial "partials/image-portrait.html" (dict "dim" $dims) -}}
{{- end -}}
{{- $scaled := "" -}}
{{- range $index, $dim := $dims -}}
{{- $clean := path.Ext $img.RelPermalink -}}
@@ -116,6 +164,7 @@
{{- define "partials/image-definition.html" -}}
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
{{- $ratio := .ratio -}}
{{- $portrait := .portrait -}}
{{- $url := .url -}}
{{- $outerClass := .outerClass -}}
{{- $innerClass := .innerClass -}}
@@ -125,19 +174,20 @@
{{- $imgset := "" -}}
{{- $mode := .mode -}}
{{- $modes := .modes -}}
{{- $page := .page -}}
{{- if hasSuffix $url "svg" -}}
{{- $fallbackURL = $url -}}
{{- else -}}
{{- $img := partial "utilities/GetImage.html" (dict "url" $url) -}}
{{- $img := partial "utilities/GetImage.html" (dict "url" $url "page" $page) -}}
{{- if $img -}}
{{- $fallback := partial "partials/image-default.html" (dict "img" $img "ratio" $ratio) -}}
{{- $fallback := partial "partials/image-default.html" (dict "img" $img "ratio" $ratio "portrait" $portrait) -}}
{{- if $absoluteURL -}}
{{- $fallbackURL = $fallback.Permalink -}}
{{- else -}}
{{- $fallbackURL = $fallback.RelPermalink -}}
{{- end -}}
{{- $imgset = partial "partials/image-scaled.html " (dict "img" $img "ratio" $ratio) -}}
{{- $imgset = partial "partials/image-scaled.html " (dict "img" $img "ratio" $ratio "portrait" $portrait) -}}
{{- end -}}
{{- end -}}
@@ -150,7 +200,7 @@
{{- if $caption -}}
<figure {{ with $outerClass }}class="{{ . }}"{{ end }}>
{{ end }}
<div class="{{ with $ratio }}ratio ratio-{{ . }}{{ end }}{{ if not $caption }} {{ $outerClass }}{{ end }}">
<div class="{{ if not $caption }}{{ $outerClass }}{{ end }}">
<img class="img-fluid {{ $innerClass }}"
{{ with $imgset -}}
srcset="{{ . }}"
@@ -162,7 +212,7 @@
{{- if $caption -}}
<figcaption class="figure-caption">{{ $caption | safeHTML }}</figcaption>
</figure>
{{- end -}}
{{- end -}}
{{- end -}}
<!-- Initiate the regular or color-mode image -->
@@ -177,22 +227,26 @@
{{- $image := printf "%s-%s%s" $base $suffix $ext -}}
{{- partial "partials/image-definition.html" (dict
"ratio" $ratio
"portrait" $portrait
"url" $image
"outerClass" $outerClass
"innerClass" $innerClass
"title" $title
"caption" $caption
"mode" $suffix
"modes" $modes)
"modes" $modes
"page" $page)
-}}
{{- end -}}
{{- else -}}
{{- partial "partials/image-definition.html" (dict
"ratio" $ratio
"portrait" $portrait
"url" $url
"outerClass" $outerClass
"innerClass" $innerClass
"title" $title
"caption" $caption)
"caption" $caption
"page" $page)
-}}
{{- end -}}

View File

@@ -6,7 +6,7 @@
{{- $menuURL := (or $menu.PageRef $menu.URL) | relLangURL -}}
{{- $pageURL := $page.RelPermalink | relLangURL -}}
{{- $isActive := hasPrefix $pageURL $menuURL -}}
{{- $isActive := or (and (hasPrefix $pageURL $menuURL) (ne $menuURL ("/" | relLangURL))) (eq $pageURL $menuURL) -}}
{{- $isAlias := $menu.Params.alias -}}
{{- $isIcon := $menu.Params.icon -}}
{{- $cue := .cue | default site.Params.main.externalLinks.cue -}}

View File

@@ -1,18 +1,28 @@
<!--
Retrieve a local or remote resource compatible with Hugo's image processing. The path of a remote image is
rewritten to ensure processed files are stored in the final '/img' folder. The partial returns nil if the
resource cannot be found or is incompatibile. The partial supports the following arguments:
"url": Required path or url of the image, e.g. "img/example.jpg" or "https://example.com/img.jpg"
Retrieve a local or remote resource compatible with Hugo's image processing. If the url starts with 'http', the
image is retrieved from an external location. Else, the url is matched with a page resource and site asset (in that
order). The path of a remote image is rewritten to ensure processed files are stored in the final '/img' folder. The
partial returns nil if the resource cannot be found or is incompatibile. The partial supports the following
arguments:
"url" Required path or url of the image, e.g. "img/example.jpg" or "https://example.com/img.jpg"
"page" Optional page context, used to retrieve an image from page resources.
-->
{{ $url := .url -}}
{{ $page := .page -}}
{{ $supportedMediaTypes := slice "image/png" "image/jpeg" "image/gif" "image/tiff" "image/bmp" "image/webp" -}}
{{ $img := "" }}
{{ $remote := hasPrefix (lower $url) "http" }}
{{ if $remote }}
{{ $img = resources.GetRemote $url -}}
{{ else }}
{{ $img = resources.GetMatch $url -}}
{{ if $page }}
{{ $img = $page.Resources.Get $url -}}
{{ end }}
{{ if not $img }}
{{ $img = resources.GetMatch $url }}
{{ end }}
{{ end }}
{{ with $img -}}

View File

@@ -9,24 +9,16 @@
{{- $cue := .cue | default site.Params.main.externalLinks.cue -}}
{{- $tab := .tab | default site.Params.main.externalLinks.tab -}}
{{- $isExternal := ne (urls.Parse (absURL $destination)).Host (urls.Parse site.BaseURL).Host -}}
{{ $text := .text }}
{{- if not $text -}}
{{ if $isExternal }}
{{ $text = (urls.Parse (absURL $destination)).Host }}
{{ else }}
{{ $target := site.GetPage $destination }}
{{ if not $target }}
{{- errorf "partial [utilities/link.html] - Cannot find page: %s" $destination -}}
{{ else }}
{{ $text = $target.Title }}
{{ if not $case }}{{ $text = lower $text }}{{ end }}
{{ $destination = $target.RelPermalink }}
{{ end }}
{{ end }}
{{- end -}}
{{- $page := .page -}}
{{- $anchor := "" -}}
{{- $text := .text -}}
{{- $class := .class -}}
{{- if $isExternal -}}
{{- if not $text -}}
{{- $text = (urls.Parse (absURL $destination)).Host -}}
{{- end -}}
{{- if $tab -}}
{{- $target = "_blank" -}}
{{- $rel = "noopener noreferrer" -}}
@@ -36,10 +28,45 @@
{{ $suffix := partial "assets/icon.html" (dict "icon" "fas up-right-from-square fa-2xs") }}
{{- $text = printf "%s&nbsp;%s" $text $suffix | safeHTML -}}
{{- end -}}
{{ else }}
{{ $destination = relLangURL $destination }}
{{- else -}}
{{- if strings.Contains $destination "#" }}
{{ $segments := split $destination "#" }}
{{- if ne (len $segments) 2 }}
{{- errorf "partial [utilities/link.html] - Malformed path, expected one anchor '#' only: %s" $destination -}}
{{ else }}
{{- $destination = index $segments 0 -}}
{{- $anchor = index $segments 1 -}}
{{ end }}
{{ end }}
{{- $destination = strings.TrimSuffix "/" $destination -}}
{{- $ref := $page.GetPage $destination -}}
{{- if not $ref }}
{{- $segments := split $destination "/" -}}
{{- if and (hasPrefix $destination "/") (gt (len $segments) 1) -}}
{{- $prefix := index $segments 1 -}}
{{- $page := .Page -}}
{{ with index (where site.Sites "Language.Lang" $prefix) 0 }}
{{- $path := printf "/%s" (strings.TrimPrefix (printf "/%s/" $prefix) $destination) }}
{{- $ref = .GetPage $path -}}
{{ end }}
{{- end -}}
{{- end -}}
{{- if not $ref -}}
{{- errorf "partial [utilities/link.html] - Cannot find page: %s" $destination -}}
{{- else -}}
{{- $destination = $ref.RelPermalink -}}
{{- with $anchor }}{{ $destination = printf "%s#%s" (strings.TrimSuffix "/" $destination) . -}}{{ end -}}
{{- if not $text -}}
{{- if $anchor -}}
{{- $text = $anchor -}}
{{- else -}}
{{- $text = $ref.LinkTitle -}}
{{- end -}}
{{ end -}}
{{- if not $case }}{{ $text = lower $text }}{{ end -}}
{{- end -}}
{{- end -}}
{{- $class := .class -}}
<a {{ with $class }}class="{{ . }}" {{ end }}href="{{ $destination | safeURL }}"{{ with $target }} target="{{ . }}"{{ end }}{{ with $rel }} rel="{{ . }}"{{ end }}>{{ $text }}</a>

View File

@@ -50,6 +50,6 @@
</h2>
{{- end -}}
<div id="{{ $parent }}-item-{{ $id }}" class="accordion-collapse collapse{{ if $show }} show{{ end }}{{ with $class }} {{ . }}{{ end }}" aria-labelledby="{{ $parent }}-heading-{{ $id }}" data-bs-parent="#{{ $parent }}">
<div class="accordion-body">{{ $body | markdownify | safeHTML }}</div>
<div class="accordion-body">{{ $body | .Page.RenderString | safeHTML }}</div>
</div>
</div>

View File

@@ -26,7 +26,7 @@
{{- $body := .Inner -}}
{{- if $open -}}
{{- $pattern := printf "data-bs-parent=\"#%s\"" $id -}}
{{- $body = (replace .Inner $pattern "") | markdownify | safeHTML }}
{{- $body = (replace .Inner $pattern "") | .Page.RenderString | safeHTML }}
{{- end -}}
<div id="{{ $id }}" class="accordion mb-3{{ with $class }} {{ . }}{{ end }}">

View File

@@ -55,7 +55,7 @@
<div class="d-flex alert alert-{{ $color }} {{ if $dismissible }}alert-dismissible fade show{{ end }}{{ with $class }} {{ . }}{{ end }}" role="alert">
{{ with $icon }}<div class="pt-1 pe-2">{{ . }}</div>{{ end }}
<div class="flex-grow-1 my-auto">
{{ trim .Inner " \r\n" | markdownify | safeHTML -}}
{{ trim .Inner " \r\n" | .Page.RenderString | safeHTML -}}
{{ if $dismissible }}<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>{{ end }}
</div>
</div>

View File

@@ -2,8 +2,10 @@
Displays a carousel of several responsive images (see the image shortcode for more details). Add inner <img>
elements to define individual image slides. The shortcode supports the following arguments:
"id": Optional id of the carousel, defaults to "carousel-" with a sequential number.
"ratio": Optional ratio of the image, either "1x1", "4x3", "16x9", or "21x9". Other values are ignored.
"ratio": Optional ratio of the images, either "1x1", "4x3", "16x9", or "21x9". Other values are ignored.
Instead, the original aspect ratio of the image is preserved.
"portrait": Optional flag to adjust the ratio from landscape to portrait. The images themselves are not rotated,
only the crop area is adjusted.
"class": Optional class attribute of the carousel element, e.g. “w-75”.
-->
@@ -12,7 +14,6 @@
{{ $id = . }}
{{ end }}
{{ $ratio := .Get "ratio" -}}
{{ $class := .Get "class" -}}
{{ $images := .Inner -}}
{{ $items := len (findRE "carousel-item" $images) -}}

View File

@@ -21,7 +21,7 @@
{{ $preprocess := slice "hugo" "markdown" }}
{{- if in $preprocess $lang -}}
{{- $content = (trim $content "\r\n") | markdownify }}
{{- $content = (trim $content "\r\n") | .Page.RenderString }}
{{ $lang = "markdown" }}
{{- end -}}

View File

@@ -4,8 +4,11 @@
section of the main config file (defaults to 75). A fallback image is provided for older browsers. The partial
supports the following arguments:
"src": Required relative url of the image, e.g. "img/example.jpg"
"ratio": Optional ratio of the image, either "1x1", "4x3", "16x9", or "21x9". Leave empty to keep the
"ratio": Optional ratio of the image, either "1x1", "3x2", "4x3", "16x9", or "21x9". Leave empty to keep the
original aspect ratio of the image.
"portrait": Optional flag to adjust the ratio from landscape to portrait. The image itself is not rotated, only
the crop area is adjusted.
"wrapper": Optional class attributes of the wrapper element, e.g. "mx-auto".
"class": Optional class attribute of the inner img element, e.g. "rounded".
"title": Optional alternate text of the image.
"caption": Optional figure caption.
@@ -14,7 +17,7 @@
{{- if isset .Params "src" -}}
{{ $url := .Get "src" -}}
{{- $validRatios := slice "1x1" "4x3" "16x9" "21x9" -}}
{{- $validRatios := slice "1x1" "3x2" "4x3" "16x9" "21x9" -}}
{{ $ratio := .Get "ratio" -}}
{{ if $ratio -}}
{{ if not (in $validRatios $ratio) -}}
@@ -23,6 +26,7 @@
{{ end -}}
{{- $class := .Get "class" -}}
{{- $wrapper := .Get "wrapper" -}}
{{ $title := .Get "title" -}}
{{ $caption := .Get "caption" -}}
{{ $supportedFlags := slice "true" "false" -}}
@@ -34,14 +38,25 @@
{{ else -}}
{{ errorf "Invalid value for param 'mode': %s" $modeParam -}}
{{ end -}}
{{ $portraitParam := "false" -}}
{{ $portrait := false -}}
{{ with .Get "portrait" }}{{ $portraitParam = . }}{{ end -}}
{{ if in $supportedFlags $portraitParam -}}
{{ if eq $portraitParam "true" }}{{ $portrait = true }}{{ else }}{{ $portrait = false }}{{ end -}}
{{ else -}}
{{ errorf "Invalid value for param 'portrait': %s" $portraitParam -}}
{{ end -}}
{{- partial "assets/image.html" (dict
"url" $url
"ratio" $ratio
"outerClass" $wrapper
"innerClass" $class
"title" $title
"caption" $caption
"mode" $mode)
"mode" $mode
"portrait" $portrait
"page" .Page)
-}}
{{ else -}}
{{ errorf "Missing value for param 'src': %s" .Position -}}

View File

@@ -2,8 +2,10 @@
Renders a carousel item with a responsive image (see the image shortcode for more details). The shortcode
supports the following arguments:
"src": Required relative url of the image, e.g. "img/example.jpg"
"ratio": Optional ratio of the image, either "1x1", "4x3", "16x9", or "21x9". Other values are ignored.
Instead, the original aspect ratio of the image is preserved.
"ratio": Optional ratio of the image, either "1x1", "3x2", "4x3", "16x9", or "21x9". Other values are
ignored. Instead, the original aspect ratio of the image is preserved.
"portrait": Optional flag to adjust the ratio from landscape to portrait. The image itself is not rotated, only
the crop area is adjusted.
"caption": Optional carousel slide caption.
-->
@@ -15,10 +17,16 @@
{{ else }}
{{ with .Get "ratio" }}{{ $ratio = . }}{{ end -}}
{{ end -}}
{{- $portrait := false -}}
{{ with .Parent -}}
{{ with .Get "portrait" }}{{ $portrait = . }}{{ end -}}
{{ else }}
{{ with .Get "portrait" }}{{ $portrait = . }}{{ end -}}
{{ end -}}
{{- if $src -}}
<div class="carousel-item {{ if eq .Ordinal 0 }}active{{ end }}">
{{ partial "assets/image.html" (dict "url" $src "ratio" $ratio "innerClass" "d-block w-100") }}
{{ partial "assets/image.html" (dict "url" $src "ratio" $ratio "page" .Page "innerClass" "d-block w-100" "portrait" $portrait) }}
<div class="carousel-caption gradient"></div>
{{ with $caption }}
<div class="carousel-caption d-none d-md-block">

View File

@@ -1,12 +1,14 @@
<!--
Generates a link for a given named link or url. The shortcode supports a single unnamed parameter, or various named
parameters. The unnamed parameter is recognized as a named link if it does not contain any "/", otherwise it is
treated as a url. Any inner text is rendered as the link title, otherwise it uses the host name (for external links)
or page name (for internal links). The shortcode supports the following named arguments:
"name" Optional name of the link maintained in the "links" section of the site's parameters. If omitted,
the "url" argument should be provided instead.
"url" Optional url of the link, including the scheme ("http" or "https"). If omitted, the "name" argument
should be provided instead.
parameters. The unnamed parameter is recognized as a url if it starts with "http", else it is treated as either a
named link or internal reference (in that order). Any inner text is rendered as the link title, otherwise it uses
the host name (for external links), link title (for internal links), or anchor name (for any local references
containing a `#`). The shortcode supports the following named arguments:
"href" Required reference to either an external link (if it starts with http), a named link (if it can be
found in params.links), or internal reference. External and internal references may include an
anchor "#".
"name" Alias of href.
"url" Alias of href.
"cue" Optional flag to indicate if an external link should show a visual cue, defaults to setting
"main.externalLinks.cue" in the site's parameters.
"tab" Optional flag to indicate if an external link should open in a new tab, defaults to setting
@@ -17,42 +19,92 @@
-->
{{- $error := false -}}
{{ $href := "" }}
{{ $name := "" }}
{{ $url := "" }}
{{ $class := "" }}
{{ $case := true }}
{{ $cue := site.Params.main.externalLinks.cue }}
{{ $tab := site.Params.main.externalLinks.tab }}
{{ $text := trim .Inner " \r\n" | .Page.RenderString | safeHTML }}
{{- $anchor := "" -}}
{{ if .IsNamedParams }}
{{ $href = .Get "href" }}
{{ $name = .Get "name" }}
{{ $url = .Get "url" }}
{{ $cue = .Get "cue" | default site.Params.main.externalLinks.cue }}
{{ $tab = .Get "tab" | default site.Params.main.externalLinks.tab }}
{{ $case = .Get "case" | default true }}
{{ else if strings.Contains (.Get 0) "/" }}
{{ $url = .Get 0 }}
{{- $class := .Get "class" -}}
{{ else }}
{{ $name = .Get 0 }}
{{ $href = .Get 0 }}
{{ end }}
{{ if not (or $name $url) }}
{{ errorf "Expected param 'name' or 'url': %s" .Position -}}
{{- $href = or (or $href $name) $url -}}
{{ if not $href }}
{{ errorf "Expected param 'href': %s" .Position -}}
{{ $error = true -}}
{{ end }}
{{ if $name }}
{{ $url = index site.Params.links $name }}
{{- if hasPrefix $href "http" -}}
{{ $url = $href }}
{{- else if not (strings.Contains $href "/") -}}
{{ $url = index site.Params.links $href }}
{{- end -}}
{{ if not $url }}
{{- $href = strings.TrimPrefix "./" $href -}}
{{- if strings.Contains $href "#" }}
{{ $segments := split $href "#" }}
{{- if ne (len $segments) 2 }}
{{ errorf "Malformed path, expected one anchor '#' only: '%s' at %s" $href .Position -}}
{{ else }}
{{- $url = index $segments 0 -}}
{{- $anchor = index $segments 1 -}}
{{ if not $url }}
{{ errorf "Cannot find link '%s': %s" $name .Position -}}
{{ $error = true -}}
{{- $url = strings.TrimSuffix "/" .Page.RelPermalink -}}
{{- with .Page.Language }}{{ $url = strings.TrimPrefix (path.Join "/" .Lang) $url}}{{ end -}}
{{ end }}
{{ end }}
{{ else }}
{{- $url = $href -}}
{{ end }}
{{ end }}
{{ $text := trim .Inner " \r\n" | markdownify | safeHTML }}
{{- $isExternal := ne (urls.Parse (absURL $url)).Host (urls.Parse site.BaseURL).Host -}}
{{- if not $isExternal -}}
{{- $url = strings.TrimSuffix "/" $url -}}
{{- $class := .Get "class" -}}
{{- $ref := "" -}}
{{- if not $ref -}}
{{- $ref = .Page.GetPage $url -}}
{{- end -}}
{{- if not $error -}}
{{ partial "utilities/link.html" (dict "destination" $url "text" $text "cue" $cue "tab" $tab "case" $case "class" $class) }}
{{- if not $ref }}
{{- $segments := split $url "/" -}}
{{- if and (hasPrefix $url "/") (gt (len $segments) 1) -}}
{{- $prefix := index $segments 1 -}}
{{- $page := .Page -}}
{{ with index (where site.Sites "Language.Lang" $prefix) 0 }}
{{- $path := printf "/%s" (strings.TrimPrefix (printf "/%s/" $prefix) $url) }}
{{- $ref = .GetPage $path -}}
{{ end }}
{{- end -}}
{{- end -}}
{{- if not $ref -}}
{{- errorf "Cannot find page: '%s' at %s" $href .Position -}}
{{- $error = true -}}
{{- end -}}
{{- end -}}
{{ with $anchor }}
{{ $url = printf "%s#%s" $url .}}
{{ end }}
{{- if not $error -}}
{{ partial "utilities/link.html" (dict "destination" $url "text" $text "cue" $cue "tab" $tab "case" $case "class" $class "page" .Page) }}
{{- end -}}

View File

@@ -50,5 +50,5 @@
<div class="tab-pane{{ if $show }} active {{ if $fade}}show{{ end }}{{ end }} {{ if $fade}}fade{{ end }}" id="{{ $parent }}-{{ $id }}"
role="tabpanel" aria-labelledby="{{ $parent }}-btn-{{ $id }}" tabindex="0" data-header="{{ $header }}" {{ if $show }}data-show-id="{{ $id }}"{{ end }}
data-has-content="{{ gt (len $body) 0 }}" {{ if $disabled }} data-disabled-id="{{ $id }}"{{ end }}>
{{ $body | markdownify | safeHTML }}
{{ $body | .Page.RenderString | safeHTML }}
</div>

View File

@@ -8,7 +8,7 @@
{{ $responsive = (slice "table-responsive") -}}
{{- end -}}
{{- $input := .Inner | markdownify }}
{{- $input := .Inner | .Page.RenderString }}
{{- $input = replace $input "style=\"text-align:left\"" "class=\"text-start\"" -}}
{{- $input = replace $input "style=\"text-align:center\"" "class=\"text-center\"" -}}
{{- $input = replace $input "style=\"text-align:right\"" "class=\"text-end\"" -}}

View File

@@ -79,7 +79,7 @@
{{ $datestr := (partial "utilities/date.html" (dict "date" $date "format" "long")) -}}
<p class="mb-0"><small class="text-body-secondary text-uppercase">{{ $datestr -}}</small></p>
{{ end }}
<p class="mt-3 mb-0">{{ $content | markdownify }}</p>
<p class="mt-3 mb-0">{{ $content | .Page.RenderString }}</p>
</div>
</div>
</div>

View File

@@ -13,7 +13,7 @@
{{ .Count }} {{ if gt .Count 1 }} {{ T "articles" }} {{ else }} {{ T "article" }} {{ end }}
</div>
<div class="col">
<a href="{{ (path.Join .Page.RelPermalink) | relLangURL }}">{{ .Name | markdownify }}</a>
<a href="{{ (path.Join .Page.RelPermalink) | relLangURL }}">{{ .Name | .Page.RenderString }}</a>
</div>
</div>
{{ end }}
@@ -34,7 +34,7 @@
<p class="text-body-secondary mt-5">{{ $year }}</p>
{{ $.Scratch.Set "lastYear" $year }}
{{ end }}
<a href="{{ (path.Join .Page.RelPermalink) | relLangURL }}">{{ if .Draft }}{{ T "draft" | upper }}: {{end}}{{ .Title | markdownify }}</a>
<a href="{{ (path.Join .Page.RelPermalink) | relLangURL }}">{{ if .Draft }}{{ T "draft" | upper }}: {{end}}{{ .Title | .Page.RenderString }}</a>
</div>
</div>
{{ end }}

194
package-lock.json generated
View File

@@ -1,19 +1,19 @@
{
"name": "@gethinode/hinode",
"version": "0.18.0",
"version": "0.18.4",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@gethinode/hinode",
"version": "0.18.0",
"version": "0.18.4",
"license": "MIT",
"devDependencies": {
"@fullhuman/postcss-purgecss": "^5.0.0",
"autoprefixer": "^10.4.14",
"autoprefixer": "^10.4.15",
"cssnano": "^6.0.1",
"cssnano-preset-advanced": "^6.0.1",
"eslint": "^8.46.0",
"eslint": "^8.47.0",
"eslint-config-standard": "^17.1.0",
"eslint-plugin-import": "^2.28.0",
"eslint-plugin-n": "^16.0.1",
@@ -250,9 +250,9 @@
}
},
"node_modules/@eslint/eslintrc": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.1.tgz",
"integrity": "sha512-9t7ZA7NGGK8ckelF0PQCfcxIUzs1Md5rrO6U/c+FIQNanea5UZC0wqKXH4vHBccmu4ZJgZ2idtPeW7+Q2npOEA==",
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz",
"integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==",
"dev": true,
"dependencies": {
"ajv": "^6.12.4",
@@ -273,9 +273,9 @@
}
},
"node_modules/@eslint/js": {
"version": "8.46.0",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.46.0.tgz",
"integrity": "sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA==",
"version": "8.47.0",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.47.0.tgz",
"integrity": "sha512-P6omY1zv5MItm93kLM8s2vr1HICJH8v0dvddDhysbIuZ+vcjOHg5Zbkf1mTkcmi2JA9oBG2anOkRnW8WJTS8Og==",
"dev": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -902,9 +902,9 @@
}
},
"node_modules/autoprefixer": {
"version": "10.4.14",
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz",
"integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==",
"version": "10.4.15",
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.15.tgz",
"integrity": "sha512-KCuPB8ZCIqFdA4HwKXsvz7j6gvSDNhDP7WnUjBleRkKjPdvCmHFuQ77ocavI8FT6NdvlBnE2UFr2H4Mycn8Vew==",
"dev": true,
"funding": [
{
@@ -914,11 +914,15 @@
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/autoprefixer"
},
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"dependencies": {
"browserslist": "^4.21.5",
"caniuse-lite": "^1.0.30001464",
"browserslist": "^4.21.10",
"caniuse-lite": "^1.0.30001520",
"fraction.js": "^4.2.0",
"normalize-range": "^0.1.2",
"picocolors": "^1.0.0",
@@ -1049,9 +1053,9 @@
}
},
"node_modules/browserslist": {
"version": "4.21.5",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz",
"integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==",
"version": "4.21.10",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz",
"integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==",
"dev": true,
"funding": [
{
@@ -1061,13 +1065,17 @@
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/browserslist"
},
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"dependencies": {
"caniuse-lite": "^1.0.30001449",
"electron-to-chromium": "^1.4.284",
"node-releases": "^2.0.8",
"update-browserslist-db": "^1.0.10"
"caniuse-lite": "^1.0.30001517",
"electron-to-chromium": "^1.4.477",
"node-releases": "^2.0.13",
"update-browserslist-db": "^1.0.11"
},
"bin": {
"browserslist": "cli.js"
@@ -1231,9 +1239,9 @@
}
},
"node_modules/caniuse-lite": {
"version": "1.0.30001464",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001464.tgz",
"integrity": "sha512-oww27MtUmusatpRpCGSOneQk2/l5czXANDSFvsc7VuOQ86s3ANhZetpwXNf1zY/zdfP63Xvjz325DAdAoES13g==",
"version": "1.0.30001520",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001520.tgz",
"integrity": "sha512-tahF5O9EiiTzwTUqAeFjIZbn4Dnqxzz7ktrgGlMYNLH43Ul26IgTMH/zvL3DG0lZxBYnlT04axvInszUsZULdA==",
"dev": true,
"funding": [
{
@@ -1243,6 +1251,10 @@
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/caniuse-lite"
},
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
]
},
@@ -1813,9 +1825,9 @@
"dev": true
},
"node_modules/electron-to-chromium": {
"version": "1.4.284",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz",
"integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==",
"version": "1.4.490",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.490.tgz",
"integrity": "sha512-6s7NVJz+sATdYnIwhdshx/N/9O6rvMxmhVoDSDFdj6iA45gHR8EQje70+RYsF4GeB+k0IeNSBnP7yG9ZXJFr7A==",
"dev": true
},
"node_modules/emoji-regex": {
@@ -1960,15 +1972,15 @@
}
},
"node_modules/eslint": {
"version": "8.46.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.46.0.tgz",
"integrity": "sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==",
"version": "8.47.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.47.0.tgz",
"integrity": "sha512-spUQWrdPt+pRVP1TTJLmfRNJJHHZryFmptzcafwSvHsceV81djHOdnEeDmkdotZyLNjDhrOasNK8nikkoG1O8Q==",
"dev": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.6.1",
"@eslint/eslintrc": "^2.1.1",
"@eslint/js": "^8.46.0",
"@eslint/eslintrc": "^2.1.2",
"@eslint/js": "^8.47.0",
"@humanwhocodes/config-array": "^0.11.10",
"@humanwhocodes/module-importer": "^1.0.1",
"@nodelib/fs.walk": "^1.2.8",
@@ -1979,7 +1991,7 @@
"doctrine": "^3.0.0",
"escape-string-regexp": "^4.0.0",
"eslint-scope": "^7.2.2",
"eslint-visitor-keys": "^3.4.2",
"eslint-visitor-keys": "^3.4.3",
"espree": "^9.6.1",
"esquery": "^1.4.2",
"esutils": "^2.0.2",
@@ -2223,9 +2235,9 @@
}
},
"node_modules/eslint-visitor-keys": {
"version": "3.4.2",
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz",
"integrity": "sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==",
"version": "3.4.3",
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
"integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
"dev": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -3019,9 +3031,9 @@
}
},
"node_modules/globals": {
"version": "13.20.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
"integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
"version": "13.21.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz",
"integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==",
"dev": true,
"dependencies": {
"type-fest": "^0.20.2"
@@ -4349,9 +4361,9 @@
"dev": true
},
"node_modules/node-releases": {
"version": "2.0.10",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz",
"integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==",
"version": "2.0.13",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz",
"integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==",
"dev": true
},
"node_modules/normalize-package-data": {
@@ -7380,9 +7392,9 @@
}
},
"node_modules/update-browserslist-db": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz",
"integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==",
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz",
"integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==",
"dev": true,
"funding": [
{
@@ -7392,6 +7404,10 @@
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/browserslist"
},
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"dependencies": {
@@ -7399,7 +7415,7 @@
"picocolors": "^1.0.0"
},
"bin": {
"browserslist-lint": "cli.js"
"update-browserslist-db": "cli.js"
},
"peerDependencies": {
"browserslist": ">= 4.21.0"
@@ -7769,9 +7785,9 @@
"dev": true
},
"@eslint/eslintrc": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.1.tgz",
"integrity": "sha512-9t7ZA7NGGK8ckelF0PQCfcxIUzs1Md5rrO6U/c+FIQNanea5UZC0wqKXH4vHBccmu4ZJgZ2idtPeW7+Q2npOEA==",
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz",
"integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==",
"dev": true,
"requires": {
"ajv": "^6.12.4",
@@ -7786,9 +7802,9 @@
}
},
"@eslint/js": {
"version": "8.46.0",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.46.0.tgz",
"integrity": "sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA==",
"version": "8.47.0",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.47.0.tgz",
"integrity": "sha512-P6omY1zv5MItm93kLM8s2vr1HICJH8v0dvddDhysbIuZ+vcjOHg5Zbkf1mTkcmi2JA9oBG2anOkRnW8WJTS8Og==",
"dev": true
},
"@fullhuman/postcss-purgecss": {
@@ -8237,13 +8253,13 @@
"dev": true
},
"autoprefixer": {
"version": "10.4.14",
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz",
"integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==",
"version": "10.4.15",
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.15.tgz",
"integrity": "sha512-KCuPB8ZCIqFdA4HwKXsvz7j6gvSDNhDP7WnUjBleRkKjPdvCmHFuQ77ocavI8FT6NdvlBnE2UFr2H4Mycn8Vew==",
"dev": true,
"requires": {
"browserslist": "^4.21.5",
"caniuse-lite": "^1.0.30001464",
"browserslist": "^4.21.10",
"caniuse-lite": "^1.0.30001520",
"fraction.js": "^4.2.0",
"normalize-range": "^0.1.2",
"picocolors": "^1.0.0",
@@ -8327,15 +8343,15 @@
}
},
"browserslist": {
"version": "4.21.5",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz",
"integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==",
"version": "4.21.10",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz",
"integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==",
"dev": true,
"requires": {
"caniuse-lite": "^1.0.30001449",
"electron-to-chromium": "^1.4.284",
"node-releases": "^2.0.8",
"update-browserslist-db": "^1.0.10"
"caniuse-lite": "^1.0.30001517",
"electron-to-chromium": "^1.4.477",
"node-releases": "^2.0.13",
"update-browserslist-db": "^1.0.11"
}
},
"buffer": {
@@ -8445,9 +8461,9 @@
}
},
"caniuse-lite": {
"version": "1.0.30001464",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001464.tgz",
"integrity": "sha512-oww27MtUmusatpRpCGSOneQk2/l5czXANDSFvsc7VuOQ86s3ANhZetpwXNf1zY/zdfP63Xvjz325DAdAoES13g==",
"version": "1.0.30001520",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001520.tgz",
"integrity": "sha512-tahF5O9EiiTzwTUqAeFjIZbn4Dnqxzz7ktrgGlMYNLH43Ul26IgTMH/zvL3DG0lZxBYnlT04axvInszUsZULdA==",
"dev": true
},
"chalk": {
@@ -8854,9 +8870,9 @@
"dev": true
},
"electron-to-chromium": {
"version": "1.4.284",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz",
"integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==",
"version": "1.4.490",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.490.tgz",
"integrity": "sha512-6s7NVJz+sATdYnIwhdshx/N/9O6rvMxmhVoDSDFdj6iA45gHR8EQje70+RYsF4GeB+k0IeNSBnP7yG9ZXJFr7A==",
"dev": true
},
"emoji-regex": {
@@ -8971,15 +8987,15 @@
"dev": true
},
"eslint": {
"version": "8.46.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.46.0.tgz",
"integrity": "sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==",
"version": "8.47.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.47.0.tgz",
"integrity": "sha512-spUQWrdPt+pRVP1TTJLmfRNJJHHZryFmptzcafwSvHsceV81djHOdnEeDmkdotZyLNjDhrOasNK8nikkoG1O8Q==",
"dev": true,
"requires": {
"@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.6.1",
"@eslint/eslintrc": "^2.1.1",
"@eslint/js": "^8.46.0",
"@eslint/eslintrc": "^2.1.2",
"@eslint/js": "^8.47.0",
"@humanwhocodes/config-array": "^0.11.10",
"@humanwhocodes/module-importer": "^1.0.1",
"@nodelib/fs.walk": "^1.2.8",
@@ -8990,7 +9006,7 @@
"doctrine": "^3.0.0",
"escape-string-regexp": "^4.0.0",
"eslint-scope": "^7.2.2",
"eslint-visitor-keys": "^3.4.2",
"eslint-visitor-keys": "^3.4.3",
"espree": "^9.6.1",
"esquery": "^1.4.2",
"esutils": "^2.0.2",
@@ -9160,9 +9176,9 @@
}
},
"eslint-visitor-keys": {
"version": "3.4.2",
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz",
"integrity": "sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==",
"version": "3.4.3",
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
"integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
"dev": true
},
"espree": {
@@ -9749,9 +9765,9 @@
}
},
"globals": {
"version": "13.20.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
"integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
"version": "13.21.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz",
"integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==",
"dev": true,
"requires": {
"type-fest": "^0.20.2"
@@ -10689,9 +10705,9 @@
"dev": true
},
"node-releases": {
"version": "2.0.10",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz",
"integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==",
"version": "2.0.13",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz",
"integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==",
"dev": true
},
"normalize-package-data": {
@@ -12766,9 +12782,9 @@
"dev": true
},
"update-browserslist-db": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz",
"integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==",
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz",
"integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==",
"dev": true,
"requires": {
"escalade": "^3.1.1",

View File

@@ -1,6 +1,6 @@
{
"name": "@gethinode/hinode",
"version": "0.18.0",
"version": "0.18.4",
"description": "Hinode is a clean documentation and blog theme for Hugo, an open-source static site generator",
"keywords": [
"hugo",
@@ -47,10 +47,11 @@
"update:syntax:light3": "replace-in-files --string=\"#009999\" --replacement=\"#007a7a\" ./assets/scss/components/_syntax-light.scss",
"update:syntax:light4": "replace-in-files --string=\"#999988\" --replacement=\"#6d6d5d\" ./assets/scss/components/_syntax-light.scss",
"update:syntax:dark1": "hugo gen chromastyles --style=github-dark > ./assets/scss/components/_syntax-dark.scss",
"update:syntax:dark2": "replace-in-files --string=\"#ffffcc\" --replacement=\"#b8b800\" ./assets/scss/components/_syntax-dark.scss",
"update:syntax:dark2": "replace-in-files --string=\"#ffffcc\" --replacement=\"#373700\" ./assets/scss/components/_syntax-dark.scss",
"update:syntax:dark3": "replace-in-files --string=\"#8b949e\" --replacement=\"#979fa8\" ./assets/scss/components/_syntax-dark.scss",
"update:syntax:dark4": "replace-in-files --string=\".na { }\" --replacement=\".na { color: #00cccc }\" ./assets/scss/components/_syntax-dark.scss",
"update:syntax:dark5": "replace-in-files --string=\".nb { }\" --replacement=\".nb { color: #00a2d8 }\" ./assets/scss/components/_syntax-dark.scss",
"update:syntax:dark6": "replace-in-files --string=\"#6e7681\" --replacement=\"#999fa8\" ./assets/scss/components/_syntax-dark.scss",
"upgrade": "npx npm-check-updates -u && npm run -s mod:update"
},
"repository": {
@@ -65,10 +66,10 @@
"homepage": "https://gethinode.com",
"devDependencies": {
"@fullhuman/postcss-purgecss": "^5.0.0",
"autoprefixer": "^10.4.14",
"autoprefixer": "^10.4.15",
"cssnano": "^6.0.1",
"cssnano-preset-advanced": "^6.0.1",
"eslint": "^8.46.0",
"eslint": "^8.47.0",
"eslint-config-standard": "^17.1.0",
"eslint-plugin-import": "^2.28.0",
"eslint-plugin-n": "^16.0.1",