mirror of
https://github.com/gethinode/hinode.git
synced 2025-10-10 03:23:15 +00:00
Compare commits
18 Commits
v0.23.0-be
...
v0.23.0-be
Author | SHA1 | Date | |
---|---|---|---|
![]() |
9d59c0ba0d | ||
![]() |
22bfb75c82 | ||
![]() |
2b9a0aa085 | ||
![]() |
d36c70b98e | ||
![]() |
941c0f4954 | ||
![]() |
94867de265 | ||
![]() |
02d4aafd10 | ||
![]() |
fcb64b9e77 | ||
![]() |
ed764e14f5 | ||
![]() |
0b20d24918 | ||
![]() |
00ef30b768 | ||
![]() |
cb6402ac92 | ||
![]() |
89758426a9 | ||
![]() |
d48c6ab314 | ||
![]() |
aa5e6c6189 | ||
![]() |
5bf7712307 | ||
![]() |
ddb847c974 | ||
![]() |
9e52107dbf |
5
.github/dependabot.yml
vendored
5
.github/dependabot.yml
vendored
@@ -3,6 +3,11 @@
|
||||
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
open-pull-requests-limit: 10
|
||||
- package-ecosystem: "npm"
|
||||
directory: "/"
|
||||
schedule:
|
||||
|
@@ -3,7 +3,36 @@ const togglers = document.querySelectorAll('.main-nav-toggler')
|
||||
const modeSelectors = document.querySelectorAll('.switch-mode-collapsed')
|
||||
const colorsBG = ['body', 'secondary', 'tertiary']
|
||||
|
||||
function updateNavbar () {
|
||||
if (window.scrollY > 75) {
|
||||
navbar.classList.add('nav-active')
|
||||
const storedTheme = localStorage.getItem('theme')
|
||||
navbar.setAttribute('data-bs-theme', storedTheme)
|
||||
} else {
|
||||
navbar.classList.remove('nav-active')
|
||||
const defaultTheme = navbar.getAttribute('data-bs-overlay')
|
||||
navbar.setAttribute('data-bs-theme', defaultTheme)
|
||||
}
|
||||
}
|
||||
|
||||
if ((navbar !== null) && (window.performance.getEntriesByType)) {
|
||||
if (window.performance.getEntriesByType('navigation')[0].type === 'reload') {
|
||||
updateNavbar()
|
||||
}
|
||||
}
|
||||
|
||||
if (navbar !== null && togglers !== null) {
|
||||
// observe state changes to the site's color mode
|
||||
const html = document.querySelector('html')
|
||||
const config = {
|
||||
attributes: true,
|
||||
attributeFilter: ['data-bs-theme']
|
||||
}
|
||||
const Observer = new MutationObserver((mutationrecords) => {
|
||||
updateNavbar()
|
||||
})
|
||||
Observer.observe(html, config)
|
||||
|
||||
// initialize background color
|
||||
const color = (navbar.getAttribute('data-navbar-color') || 'body')
|
||||
const bg = colorsBG.includes(color) ? `var(--bs-${color}-bg)` : `var(--bs-navbar-color-${color})`
|
||||
@@ -11,15 +40,7 @@ if (navbar !== null && togglers !== null) {
|
||||
|
||||
// set the navbar background color to opaque when scrolling past a breakpoint
|
||||
window.onscroll = () => {
|
||||
if (window.scrollY > 75) {
|
||||
navbar.classList.add('nav-active')
|
||||
const storedTheme = localStorage.getItem('theme')
|
||||
navbar.setAttribute('data-bs-theme', storedTheme)
|
||||
} else {
|
||||
navbar.classList.remove('nav-active')
|
||||
const defaultTheme = navbar.getAttribute('data-bs-overlay')
|
||||
navbar.setAttribute('data-bs-theme', defaultTheme)
|
||||
}
|
||||
updateNavbar()
|
||||
}
|
||||
|
||||
// set the navbar background color to opaque when expanded
|
||||
|
@@ -50,6 +50,9 @@
|
||||
|
||||
#toc-collapse {
|
||||
border-color: var(--bs-secondary-color) !important;
|
||||
border-radius: 0 0 var(--bs-border-radius) var(--bs-border-radius) !important;
|
||||
margin-top: -1.5rem;
|
||||
padding-top: 1.5rem !important;
|
||||
}
|
||||
|
||||
.toc-button {
|
||||
@@ -60,6 +63,8 @@
|
||||
--bs-btn-active-bg: var(--bs-body-bg);
|
||||
--bs-btn-active-border-color: var(--bs-primary);
|
||||
|
||||
background-color: var(--#{$prefix}body-bg) !important;
|
||||
|
||||
&.active,
|
||||
&:hover,
|
||||
&:focus {
|
||||
|
@@ -162,6 +162,7 @@
|
||||
themeFont = "Inter"
|
||||
# themeFontPath = "https://fonts.googleapis.com/css2?family=Inter:wght@200;300;600&display=swap" # external path
|
||||
themeFontPath = "/fonts" # local path
|
||||
themeFontPreload = "/fonts/inter-v12-latin-regular.woff2"
|
||||
fontSizeBase = "1rem" # assumes the browser default, typically '16px'
|
||||
# toml-docs-end font
|
||||
# toml-docs-start build
|
||||
|
@@ -157,6 +157,7 @@
|
||||
themeFont = "Inter"
|
||||
# themeFontPath = "https://fonts.googleapis.com/css2?family=Inter:wght@200;300;600&display=swap" # external path
|
||||
themeFontPath = "/fonts" # local path
|
||||
themeFontPreload = "/fonts/inter-v12-latin-regular.woff2"
|
||||
purge = true
|
||||
# toml-docs-end theme-colors
|
||||
|
||||
|
2
go.mod
2
go.mod
@@ -10,7 +10,7 @@ require (
|
||||
github.com/gethinode/mod-katex v1.0.5 // indirect
|
||||
github.com/gethinode/mod-leaflet v1.0.0 // indirect
|
||||
github.com/gethinode/mod-lottie v1.4.2 // indirect
|
||||
github.com/gethinode/mod-utils/v2 v2.0.3 // indirect
|
||||
github.com/gethinode/mod-utils/v2 v2.1.0 // indirect
|
||||
github.com/nextapps-de/flexsearch v0.0.0-20240110101704-4c3966709f85 // indirect
|
||||
github.com/twbs/bootstrap v5.3.2+incompatible // indirect
|
||||
)
|
||||
|
2
go.sum
2
go.sum
@@ -144,6 +144,8 @@ github.com/gethinode/mod-utils/v2 v2.0.2 h1:pocFT/mWPcfmABltZwe76D1IB3TZIrD1k1kH
|
||||
github.com/gethinode/mod-utils/v2 v2.0.2/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
|
||||
github.com/gethinode/mod-utils/v2 v2.0.3 h1:4BsRNGi+0a3Mq021Gq/TwDNiyuIfZ8xnpYU0DkNbUYI=
|
||||
github.com/gethinode/mod-utils/v2 v2.0.3/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
|
||||
github.com/gethinode/mod-utils/v2 v2.1.0 h1:5I0IN/AX5qPFYx7tjWXk59GBevTJzixxZUGj9MJ0b8M=
|
||||
github.com/gethinode/mod-utils/v2 v2.1.0/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
|
||||
github.com/nextapps-de/flexsearch v0.0.0-20230711092928-1243fd883ec3 h1:H/qVR5O4BXjRjD+5PZB+r4ug2BSJ2Of4RtwOntd+OKo=
|
||||
github.com/nextapps-de/flexsearch v0.0.0-20230711092928-1243fd883ec3/go.mod h1:5GdMfPAXzbA2gXBqTjC6l27kioSYzHlqDMh0+wyx7sU=
|
||||
github.com/nextapps-de/flexsearch v0.0.0-20240108021025-afd75f742f22 h1:re7L8FxbXQpnX8BgzkdUnDpsUmloGNyLmiy2ZCln8pg=
|
||||
|
@@ -1,17 +1,15 @@
|
||||
{{- $download := .Params.download -}}
|
||||
{{- if and $download (not (fileExists (path.Join "static" $download))) -}}
|
||||
{{- errorf "Cannot find download file for page '%s': %s" .File.Path $download -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $toc := .Site.Params.navigation.toc -}}
|
||||
{{ if $toc }}
|
||||
{{- $includeToc := false -}}
|
||||
{{- if .Site.Params.navigation.toc -}}
|
||||
{{ $includeToc = true }}
|
||||
{{ if isset .Params "includeToc" }}
|
||||
{{ $toc = .Params.includeToc }}
|
||||
{{ $includeToc = .Params.includeToc }}
|
||||
{{ else }}
|
||||
{{- with (index site.Params.pages .Type) -}}
|
||||
{{ if isset . "includetoc" }}
|
||||
{{ $toc = index . "includetoc" }}
|
||||
{{ if ne (printf "%T" $toc) "bool" }}
|
||||
{{ $includeToc = index . "includetoc" }}
|
||||
{{ if ne (printf "%T" $includeToc) "bool" }}
|
||||
{{ errorf "Expected bool value in site parameters: pages.%s.includeToc" $.Type }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
@@ -19,24 +17,20 @@
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
<div class="toc toc-sidebar mb-5 my-md-0 ps-xl-3 mb-lg-5 p-3 text-body-secondary sticky-top">
|
||||
{{ with $download }}
|
||||
{{ $title := (T "download" ) }}
|
||||
{{ $lang := strings.TrimPrefix "." (path.Ext (path.BaseName .)) }}
|
||||
{{ if and $lang (ne (string site.LanguageCode) $lang) }}
|
||||
{{ range site.Languages }}
|
||||
{{ if eq .LanguageCode $lang }}
|
||||
{{ $title = printf "%s (%s)" (T "download") (T (printf "lang_%s" .LanguageCode)) }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
<div class="mb-5 text-center">
|
||||
{{ $attr := dict "download" (path.Base .) }}
|
||||
{{ partial "assets/button.html" (dict "href" . "title" $title "color" "primary" "outline" "true" "icon" "fas download" "size" "sm" "attributes" $attr) }}
|
||||
<div class="toc toc-sidebar mb-5 my-md-0 mb-lg-5 p-3 text-body-secondary sticky-top">
|
||||
{{ if $download }}
|
||||
<div class="mb-5 p-0">
|
||||
{{ partial "assets/download.html" (dict
|
||||
"download" $download
|
||||
"outline" true
|
||||
"size" "sm"
|
||||
"order" "last"
|
||||
) }}
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
{{ if $toc }}
|
||||
{{ partial "assets/toc.html" (dict "page" .) }}
|
||||
{{ if $includeToc }}
|
||||
{{ $index := partial "assets/toc.html" (dict "page" .) }}
|
||||
{{ $index | safeHTML }}
|
||||
{{ end -}}
|
||||
</div>
|
||||
|
38
layouts/partials/assets/download.html
Normal file
38
layouts/partials/assets/download.html
Normal file
@@ -0,0 +1,38 @@
|
||||
{{- $download := partial "utilities/GetTargetPath.html" (dict "path" .download "page" page) -}}
|
||||
{{- $color := .color | default "primary" -}}
|
||||
{{- $outline := .outline | default true -}}
|
||||
{{- $icon := .icon | default "fas download" -}}
|
||||
{{- $size := .size | default "sm" -}}
|
||||
{{- $justify := .justify -}}
|
||||
{{- $class := .class -}}
|
||||
{{- $minimal := .minimal | default false -}}
|
||||
|
||||
{{- if and $download (not (fileExists (path.Join "static" $download))) -}}
|
||||
{{- errorf "Cannot find download file for page '%s': %s" page.File.Path $download -}}
|
||||
{{- end -}}
|
||||
|
||||
{{ with $download }}
|
||||
{{ $title := "" }}
|
||||
{{ if not $minimal }}{{ $title = (T "download" ) }}{{ end }}
|
||||
{{ $lang := strings.TrimPrefix "." (path.Ext (path.BaseName .)) }}
|
||||
{{ if and $lang (ne (string site.LanguageCode) $lang) }}
|
||||
{{ range site.Languages }}
|
||||
{{ if eq .LanguageCode $lang }}
|
||||
{{ $title = printf "%s (%s)" (T "download") (T (printf "lang_%s" .LanguageCode)) }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ $attr := dict "download" (path.Base .) }}
|
||||
{{ partial "assets/button.html" (dict
|
||||
"href" .
|
||||
"title" $title
|
||||
"color" $color
|
||||
"outline" $outline
|
||||
"icon" $icon
|
||||
"size" $size
|
||||
"justify" $justify
|
||||
"class" $class
|
||||
"attributes" $attr
|
||||
) }}
|
||||
{{ end }}
|
||||
|
@@ -35,7 +35,7 @@
|
||||
{{- $sort := $page.Site.Params.sharing.sort | default "weight" -}}
|
||||
{{- $list = sort $list $sort $order -}}
|
||||
|
||||
{{- $download := $page.Params.download -}}
|
||||
{{- $download := partial "utilities/GetTargetPath.html" (dict "path" $page.Params.download "page" $page) -}}
|
||||
{{- if and $download (not (fileExists (path.Join "static" $download))) -}}
|
||||
{{- errorf "Cannot find download file for page '%s': %s" $page.File.Path $download -}}
|
||||
{{- end -}}
|
||||
|
@@ -26,15 +26,14 @@
|
||||
"icon" "fas sort"
|
||||
"justify" "between"
|
||||
"collapse" "toc-collapse"
|
||||
"order" "last")
|
||||
-}}
|
||||
"order" "last"
|
||||
"spacing" false
|
||||
) -}}
|
||||
</div>
|
||||
|
||||
<p>
|
||||
<div class="collapse border bg-body-tertiary rounded p-1 navbar-nav-scroll" id="toc-collapse">
|
||||
<div class="toc toc-panel text-body p-2">
|
||||
<small>{{ $page.TableOfContents }}</small>
|
||||
</div>
|
||||
<div class="collapse border bg-body-tertiary rounded p-1 navbar-nav-scroll" id="toc-collapse">
|
||||
<div class="toc toc-panel text-body p-2">
|
||||
<small>{{ $page.TableOfContents }}</small>
|
||||
</div>
|
||||
</p>
|
||||
</div>
|
||||
{{ end -}}
|
@@ -18,6 +18,6 @@
|
||||
|
||||
<!-- Main code -->
|
||||
{{ if and (not $error) (gt $items 1) -}}
|
||||
<strong class="d-block h6 my-2 pb-2 border-bottom">{{ T "toc" }}</strong>
|
||||
<strong class="d-block h6 my-2 pb-2">{{ T "toc" }}:</strong>
|
||||
{{ $page.TableOfContents }}
|
||||
{{ end -}}
|
@@ -1,8 +1,10 @@
|
||||
{{ define "head" }}
|
||||
{{- $version := strings.TrimPrefix "v" (partialCached "assets/version.html" .) -}}
|
||||
{{ $desc := .Page.Description | default (.Page.Content | safeHTML | truncate 150) -}}
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
{{ hugo.Generator}}
|
||||
{{ hugo.Generator }}
|
||||
<meta name="theme" content="{{ printf "Hinode %s" $version }}">
|
||||
{{ partialCached "head/stylesheet-core.html" . -}}
|
||||
|
||||
{{ $page_modules := slice | append .Page.Params.modules }}
|
||||
@@ -16,6 +18,9 @@
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="stylesheet" href="{{ .Site.Params.style.themeFontPath | default "https://fonts.googleapis.com/css2?family=Inter:wght@200;300;600&display=swap" }}">
|
||||
{{ else if .Site.Params.style.themeFontPreload }}
|
||||
{{ $font := .Site.Params.style.themeFontPreload }}
|
||||
<link rel="preload" href="{{ $font }}" as="font" type="font/{{ strings.TrimPrefix "." (path.Ext $font) }}" crossorigin>
|
||||
{{- end -}}
|
||||
{{ partial "head/seo.html" . }}
|
||||
{{ partialCached "head/favicon.html" . -}}
|
||||
|
4
package-lock.json
generated
4
package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@gethinode/hinode",
|
||||
"version": "0.23.0-beta4",
|
||||
"version": "0.23.0-beta5",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@gethinode/hinode",
|
||||
"version": "0.23.0-beta4",
|
||||
"version": "0.23.0-beta5",
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"@fullhuman/postcss-purgecss": "^5.0.0",
|
||||
|
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@gethinode/hinode",
|
||||
"version": "0.23.0-beta4",
|
||||
"version": "0.23.0-beta5",
|
||||
"description": "Hinode is a clean documentation and blog theme for Hugo, an open-source static site generator",
|
||||
"keywords": [
|
||||
"hugo",
|
||||
|
Reference in New Issue
Block a user