Compare commits

...

18 Commits

Author SHA1 Message Date
Mark Dumay
528f84c8c6 Merge pull request #366 from gethinode/develop
Add typed alerts
2023-07-28 12:21:35 +02:00
Mark Dumay
33ab75ed84 Merge branch 'main' into develop 2023-07-28 12:01:30 +02:00
mark
3010136585 Bump package version 2023-07-28 12:00:45 +02:00
Mark Dumay
676a28c322 Merge pull request #365 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2023-07-28 12:00:04 +02:00
mark
a04ec4d73e Support typed alerts 2023-07-28 11:59:33 +02:00
markdumay
fcc93788a9 fix: update Hugo module dependencies 2023-07-28 06:38:30 +00:00
mark
f949a785a1 Fix upgrade command 2023-07-26 17:53:23 +02:00
Mark Dumay
becba931bc Merge pull request #364 from gethinode/develop
Fix sharing links
2023-07-26 17:49:23 +02:00
Mark Dumay
03e3c5b3ee Merge branch 'main' into develop 2023-07-26 17:41:40 +02:00
mark
311aa3b957 Bump package release 2023-07-26 17:40:56 +02:00
mark
62db3eb9db Fix sharing links 2023-07-26 17:40:24 +02:00
Mark Dumay
56ea9eec47 Merge pull request #363 from gethinode/develop
Add canonifyAssetsURLs option
2023-07-26 17:31:55 +02:00
mark
b845e210b7 Add canonifyAssetsURLs option 2023-07-26 17:13:53 +02:00
Mark Dumay
e8bba05213 Merge pull request #362 from gethinode/main
Sync with main
2023-07-26 15:19:14 +02:00
Mark Dumay
74d0d625c6 Merge pull request #361 from gethinode/permalink
Use relative permalinks by default
2023-07-26 15:04:36 +02:00
mark
9d98a3568c Bump package release 2023-07-26 14:58:01 +02:00
Mark Dumay
dc55571f7a Merge pull request #360 from gethinode/main
Sync with main
2023-07-26 14:55:57 +02:00
mark
ecae077e2d Use relative permalinks by default 2023-07-26 14:41:55 +02:00
17 changed files with 71 additions and 34 deletions

View File

@@ -4,6 +4,7 @@
description = "Hinode is a clean documentation and blog theme for your Hugo site based on Bootstrap 5."
enableDarkMode = true
modes = ["light", "dark"]
canonifyAssetsURLs = false
# toml-docs-end main
# toml-docs-start modules

2
go.mod
View File

@@ -3,7 +3,7 @@ module github.com/gethinode/hinode
go 1.19
require (
github.com/gethinode/mod-bootstrap v1.1.0 // indirect
github.com/gethinode/mod-bootstrap v1.1.1 // indirect
github.com/gethinode/mod-flexsearch v1.1.4 // indirect
github.com/gethinode/mod-fontawesome v1.2.1 // indirect
github.com/gethinode/mod-katex v1.0.2 // indirect

2
go.sum
View File

@@ -2,6 +2,8 @@ github.com/gethinode/mod-bootstrap v1.0.1 h1:NDZar+UEL42YHCvzzO+jVgqkZU5INA12Bpj
github.com/gethinode/mod-bootstrap v1.0.1/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
github.com/gethinode/mod-bootstrap v1.1.0 h1:BbalsW8kmFhv+J+dcc41TGcjIlM/p69AB0h0oGhAXIU=
github.com/gethinode/mod-bootstrap v1.1.0/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
github.com/gethinode/mod-bootstrap v1.1.1 h1:Tx4M5hGVOFrEaxnUONDAm6N9xuRi5UphKlT7F26HujU=
github.com/gethinode/mod-bootstrap v1.1.1/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
github.com/gethinode/mod-flexsearch v1.0.1 h1:FJkRsUzSnQTXl3MWCigT4E6vfff870UWTnkGqaDGIhA=
github.com/gethinode/mod-flexsearch v1.0.1/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
github.com/gethinode/mod-flexsearch v1.1.0 h1:7BCMyQDlYlskNXuazt8Jg/jg9WREexu2xVkYqThkAX4=

View File

@@ -67,7 +67,7 @@
{{ with .NextInSection -}}
{{ $next := . -}}
{{ with .OutputFormats.Get "html" -}}
<a class="next" href="{{ $next.Permalink }}"><i class="fas fa-arrow-left"></i> {{ $next.Title }}</a>
<a class="next" href="{{ $next.RelPermalink }}"><i class="fas fa-arrow-left"></i> {{ $next.Title }}</a>
{{- end -}}
{{ end -}}
</div>
@@ -75,7 +75,7 @@
{{ with .PrevInSection -}}
{{ $prev := . -}}
{{ with .OutputFormats.Get "html" -}}
<a class="previous" href="{{ $prev.Permalink }}">{{ $prev.Title }} <i class="fas fa-arrow-right"></i></a>
<a class="previous" href="{{ $prev.RelPermalink }}">{{ $prev.Title }} <i class="fas fa-arrow-right"></i></a>
{{- end -}}
{{ end -}}
</div>

View File

@@ -7,10 +7,10 @@
{{ $square150 := .Resize "150x150 CatmullRom" }}
{{ $wide310 := .Fill "310x150 CatmullRom" }}
{{ $square310 := .Resize "310x310 CatmullRom" }}
<square70x70logo src="{{ $square70.Permalink }}" />
<square150x150logo src="{{ $square150.Permalink }}" />
<wide310x150logo src="{{ $wide310.Permalink }}" />
<square310x310logo src="{{ $square310.Permalink }}" />
<square70x70logo src="{{ $square70.RelPermalink }}" />
<square150x150logo src="{{ $square150.RelPermalink }}" />
<wide310x150logo src="{{ $wide310.RelPermalink }}" />
<square310x310logo src="{{ $square310.RelPermalink }}" />
{{ end }}
<TileColor>#000000</TileColor>
</tile>

View File

@@ -3,7 +3,7 @@
{{- range $index, $item := .Page.Ancestors.Reverse -}}
{{- $title := .Title -}}
{{- if .IsHome }}{{ $title = T "home" }}{{ end -}}
{{- $address := or .Permalink (.Params.Redirect | absLangURL) -}}
{{- $address := or .RelPermalink (.Params.Redirect | relLangURL) -}}
{{ if $address }}
<li class="breadcrumb-item"><a href="{{ $address }}">{{ $title }}</a></li>
{{ else }}

View File

@@ -107,12 +107,12 @@
"orientation" $orientation
) -}}
{{- if $element.Permalink -}}
{{- if $element.RelPermalink -}}
{{- $params = merge $params (dict "path" $element.File.Path) -}}
{{- else -}}
{{- $params = merge $params (dict
"title" $element.Title
"href" $element.Permalink
"href" $element.RelPermalink
"description" (or $element.Description $element.Content)
"thumbnail" $element.Params.thumbnail
"icon" $element.Params.icon

View File

@@ -111,7 +111,7 @@
{{- with $page -}}
{{- if not $title }}{{ $title = .Title }}{{ end -}}
{{- if not $href }}{{ $href = .Permalink }}{{ end -}}
{{- if not $href }}{{ $href = .RelPermalink }}{{ end -}}
{{- if not $description }}{{ $description = .Description }}{{ end -}}
{{- if not $thumbnail }}{{ $thumbnail = .Params.thumbnail }}{{ end -}}
{{- if not $icon }}{{ $icon = .Params.icon }}{{ end -}}

View File

@@ -15,6 +15,7 @@
-->
{{- $validRatios := slice "1x1" "4x3" "16x9" "21x9" -}}
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
{{- $ratio := .ratio -}}
{{- $url := .url -}}
{{- $mode := false -}}
@@ -68,6 +69,7 @@
<!-- Generate a image set of type webp -->
{{- define "partials/image-scaled.html " -}}
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
{{- $img := .img -}}
{{- $ratio := .ratio -}}
{{- $imgset := "" -}}
@@ -98,7 +100,11 @@
{{- $scaled = $img.Fit (printf "%s webp" $dim) -}}
{{- end -}}
{{- $scaled = $scaled | resources.Copy (replace $img.RelPermalink $clean (printf "-%s.webp" $dim)) -}}
{{- $imgset = printf "%s, %s %sw" $imgset $scaled.Permalink (index $widths $index) -}}
{{- if $absoluteURL -}}
{{- $imgset = printf "%s, %s %sw" $imgset $scaled.Permalink (index $widths $index) -}}
{{- else -}}
{{- $imgset = printf "%s, %s %sw" $imgset $scaled.RelPermalink (index $widths $index) -}}
{{- end -}}
{{- end -}}
{{- $imgset = strings.TrimPrefix ", " $imgset -}}
{{- end -}}
@@ -108,6 +114,7 @@
<!-- Define the img with optional caption -->
{{- define "partials/image-definition.html" -}}
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
{{- $ratio := .ratio -}}
{{- $url := .url -}}
{{- $outerClass := .outerClass -}}
@@ -125,7 +132,11 @@
{{- $img := partial "utilities/GetImage.html" (dict "url" $url) -}}
{{- if $img -}}
{{- $fallback := partial "partials/image-default.html" (dict "img" $img "ratio" $ratio) -}}
{{- $fallbackURL = $fallback.RelPermalink -}}
{{- if $absoluteURL -}}
{{- $fallbackURL = $fallback.Permalink -}}
{{- else -}}
{{- $fallbackURL = $fallback.RelPermalink -}}
{{- end -}}
{{- $imgset = partial "partials/image-scaled.html " (dict "img" $img "ratio" $ratio) -}}
{{- end -}}
{{- end -}}
@@ -145,7 +156,7 @@
srcset="{{ . }}"
sizes="100vw"
{{- end }}
src="{{ absURL $fallbackURL }}"
src="{{ $fallbackURL }}"
alt="{{ $title }}">
</div>
{{- if $caption -}}

View File

@@ -93,6 +93,7 @@
</li>
{{- end -}}
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
{{- $supportedFlags := slice "true" "false" -}}
{{- $id := printf "navbar-collapse-%d" 0 -}}
@@ -205,7 +206,7 @@
<!-- Insert the brand logo or name -->
<a class="navbar-brand mx-auto" href="{{ site.Home.RelPermalink }}">
{{- if $logo -}}
<img src="{{ $logo }}" alt="{{ $title }} logo" height="30">
<img src="{{if $absoluteURL }}{{ absURL $logo }}{{ else }}{{ $logo }}{{ end }}" alt="{{ $title }} logo" height="30">
{{- else -}}
<span class="fw-bold">{{ $title }}</span>
{{- end -}}
@@ -261,7 +262,7 @@
<ul class="dropdown-menu dropdown-menu-end ">
{{- if $page.IsTranslated -}}
{{- range $page.AllTranslations -}}
<li><a class="dropdown-item {{ if eq .Language.Lang $currentLang }}active{{ end }}" href="{{ .Permalink }}">{{ .Language.LanguageName }}</a></li>
<li><a class="dropdown-item {{ if eq .Language.Lang $currentLang }}active{{ end }}" href="{{ .RelPermalink }}">{{ .Language.LanguageName }}</a></li>
{{- end -}}
{{- else -}}
{{- range site.Languages -}}

View File

@@ -49,7 +49,7 @@
{{- with $page -}}
{{- if not $title }}{{ $title = .Title }}{{ end -}}
{{- if not $href }}{{ $href = .Permalink }}{{ end -}}
{{- if not $href }}{{ $href = .RelPermalink }}{{ end -}}
{{- if not $content }}{{ $content = .Content }}{{ end -}}
{{- if not $thumbnail }}{{ $thumbnail = .Params.thumbnail }}{{ end -}}
{{- end -}}

View File

@@ -1,3 +1,4 @@
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
{{- $filename := .filename | default "js/main.bundle.js" -}}
{{- $match := .match | default "{js/*.js,js/vendor/**.js}" -}}
{{- $page := .page -}}
@@ -25,9 +26,9 @@
{{- if gt (len $js.Content) 0 -}}
{{- if not hugo.IsProduction -}}
<script src="{{ $js.Permalink }}"></script>
<script src="{{ if $absoluteURL }}{{ $js.Permalink }}{{ else }}{{ $js.RelPermalink }}{{ end }}"></script>
{{ else -}}
{{ $js = $js | minify | fingerprint -}}
<script src="{{ $js.Permalink }}" integrity="{{ $js.Data.Integrity }}" crossorigin="anonymous"></script>
<script src="{{ if $absoluteURL }}{{ $js.Permalink }}{{ else }}{{ $js.RelPermalink }}{{ end }}" integrity="{{ $js.Data.Integrity }}" crossorigin="anonymous"></script>
{{ end -}}
{{ end -}}

View File

@@ -1,10 +1,11 @@
<!-- Source: https://davelage.com/posts/hugo-favicons/ -->
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
{{ if .Site.Params.favicon.logo -}}
{{ $favicon := resources.Get .Site.Params.favicon.logo -}}
{{ range $i := .Site.Params.favicon.sizes -}}
{{ $image := $favicon.Resize (printf "%dx%d CatmullRom" $i $i) -}}
<link rel="icon" type="image/png" sizes="{{$i}}x{{$i}}" href="{{ $image.Permalink }}">
<link rel="icon" type="image/png" sizes="{{$i}}x{{$i}}" href="{{ if $absoluteURL }}{{ $image.Permalink }}{{ else }}{{ $image.RelPermalink }}{{ end }}">
{{ end -}}
{{ $image := $favicon.Resize "180x CatmullRom" -}}
<link rel="apple-touch-icon" sizes="180x180" href="{{ $image.Permalink }}">
<link rel="apple-touch-icon" sizes="180x180" href="{{ if $absoluteURL }}{{ $image.Permalink }}{{ else }}{{ $image.RelPermalink }}{{ end }}">
{{ end -}}

View File

@@ -1,3 +1,4 @@
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
{{- $source := .source | default "scss/app.scss" -}}
{{- $target := .target | default "css/main.css" -}}
{{- $page := .page -}}
@@ -43,8 +44,8 @@
{{- end -}}
{{- if not hugo.IsProduction -}}
<link rel="stylesheet" href="{{ $css.Permalink }}">
<link rel="stylesheet" href="{{ if $absoluteURL }}{{ $css.Permalink }}{{ else }}{{ $css.RelPermalink }}{{ end }}">
{{- else -}}
{{- $css = $css | fingerprint | resources.PostProcess -}}
<link rel="stylesheet" href="{{ $css.Permalink }}" integrity="{{ $css.Data.Integrity }}" crossorigin="anonymous">
<link rel="stylesheet" href="{{ if $absoluteURL }}{{ $css.Permalink }}{{ else }}{{ $css.RelPermalink }}{{ end }}" integrity="{{ $css.Data.Integrity }}" crossorigin="anonymous">
{{- end -}}

View File

@@ -4,10 +4,27 @@
"warning", "info", "light", "dark", "white" or "black".
"dismissible" Optional flag to indicate the alert is dismissible, defaults to false.
"icon" Optional class and name of a Font Awesome icon to include.
"type" Optional type of the alert, either "danger" or "info". Generates an alert with related color and
icon.
-->
{{- $error := false -}}
{{ $color := "primary" -}}
{{ $icon := "" }}
{{ $type := "" -}}
{{ with .Get "type" }}{{ $type = . }}{{ end -}}
{{ $supportedTypes := slice "danger" "info" -}}
{{ if $type }}
{{ if not (in $supportedTypes $type) -}}
{{ errorf "Invalid value for param 'type': %s" .Position -}}
{{ $error = true -}}
{{ else }}
{{ $color = $type }}
{{ if eq $type "danger" }}{{ $icon = "fas triangle-exclamation" }}{{ else }}{{ $icon = "fa lightbulb" }}{{ end }}
{{ end -}}
{{ end -}}
{{ with .Get "color" }}{{ $color = . }}{{ end -}}
{{ $supportedColors := slice "primary" "secondary" "success" "danger" "warning" "info" "light" "dark" -}}
{{ if not (in $supportedColors $color) -}}
@@ -15,9 +32,9 @@
{{ $error = true -}}
{{ end -}}
{{ $icon := "" }}
{{ with .Get "icon" }}
{{ $icon = partial "assets/icon.html" (dict "icon" (printf "%s fa-2x fa-pull-left" .)) }}
{{ with .Get "icon" }}{{ $icon = . }}{{ end }}
{{ with $icon }}
{{ $icon = partial "assets/icon.html" (dict "icon" (printf "%s fa-2x fa-fw" .)) }}
{{ end }}
{{ $dismissibleParam := "false" -}}
@@ -32,9 +49,11 @@
{{ end -}}
{{- if not $error -}}
<div class="alert alert-{{ $color }} {{ if $dismissible }}alert-dismissible fade show{{ end }}" role="alert">
{{ with $icon }}{{ . }}{{ end }}
{{ trim .Inner " \r\n" | markdownify | safeHTML -}}
{{ if $dismissible }}<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>{{ end }}
<div class="d-flex alert alert-{{ $color }} {{ if $dismissible }}alert-dismissible fade show{{ 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 -}}
{{ if $dismissible }}<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>{{ end }}
</div>
</div>
{{- end -}}

4
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{
"name": "@gethinode/hinode",
"version": "0.16.4",
"version": "0.16.7",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@gethinode/hinode",
"version": "0.16.4",
"version": "0.16.7",
"license": "MIT",
"devDependencies": {
"@fortawesome/fontawesome-free": "^6.4.0",

View File

@@ -1,6 +1,6 @@
{
"name": "@gethinode/hinode",
"version": "0.16.4",
"version": "0.16.7",
"description": "Hinode is a clean documentation and blog theme for Hugo, an open-source static site generator",
"keywords": [
"hugo",
@@ -44,7 +44,7 @@
"create:syntax-light": "hugo gen chromastyles --style=github > ./assets/scss/components/_syntax-light.scss",
"create:syntax-dark": "hugo gen chromastyles --style=github-dark > ./assets/scss/components/_syntax-dark.scss",
"update:syntax-dark": "replace-in-files --string=\"#ffffcc\" --replacement=\"#b8b800\" ./assets/scss/components/_syntax-dark.scss",
"upgrade": "npx npm-check-updates -u && mod:update"
"upgrade": "npx npm-check-updates -u && npm run -s mod:update"
},
"repository": {
"type": "git",