theme-switch-button: init feature (#15)
* thanks to https://feathericons.com for svgs * can be disabled in site config Params: disableThemeToggle : true
This commit is contained in:
parent
af19236002
commit
6a9e9e129a
|
@ -16,6 +16,7 @@
|
||||||
|
|
||||||
.logo,
|
.logo,
|
||||||
.menu {
|
.menu {
|
||||||
|
display: flex;
|
||||||
margin: auto var(--gap);
|
margin: auto var(--gap);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,8 +25,21 @@
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.theme-toggle svg{
|
||||||
|
height: 18px;
|
||||||
|
margin: 0 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.dark #moon{
|
||||||
|
vertical-align: middle;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
body:not(.dark) #sun {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
.menu {
|
.menu {
|
||||||
display: flex;
|
|
||||||
list-style: none;
|
list-style: none;
|
||||||
word-break: keep-all;
|
word-break: keep-all;
|
||||||
overflow-x: auto;
|
overflow-x: auto;
|
||||||
|
|
|
@ -45,3 +45,21 @@
|
||||||
localStorage.setItem("menu-scroll-position", document.getElementById('menu').scrollLeft);
|
localStorage.setItem("menu-scroll-position", document.getElementById('menu').scrollLeft);
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
{{- if not .Site.Params.disableThemeToggle }}
|
||||||
|
<script>
|
||||||
|
document.getElementById("theme-toggle").addEventListener("click", () => {
|
||||||
|
if (document.body.className.includes("dark")) {
|
||||||
|
document.body.classList.remove('dark');
|
||||||
|
localStorage.setItem("pref-theme", 'light');
|
||||||
|
} else {
|
||||||
|
document.body.classList.add('dark');
|
||||||
|
localStorage.setItem("pref-theme", 'dark');
|
||||||
|
}
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
{{- else -}}
|
||||||
|
<!-- case where owner disables theme button after deployment, this resets the stored theme -->
|
||||||
|
<script>
|
||||||
|
localStorage.removeItem("pref-theme");
|
||||||
|
</script>
|
||||||
|
{{- end }}
|
|
@ -1,14 +1,46 @@
|
||||||
{{- if eq .Site.Params.defaultTheme "auto" }}
|
{{- if eq .Site.Params.defaultTheme "auto" }}
|
||||||
<script>
|
<script>
|
||||||
|
// load memory
|
||||||
|
if (localStorage.getItem("pref-theme") === "dark") {
|
||||||
|
document.body.classList.add('dark');
|
||||||
|
} else if (localStorage.getItem("pref-theme") === "light") {
|
||||||
|
document.body.classList.remove('dark')
|
||||||
|
} else {
|
||||||
if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
||||||
document.body.classList.add('dark');
|
document.body.classList.add('dark');
|
||||||
}
|
}
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
{{- end }}
|
{{- end }}
|
||||||
<header class="header">
|
<header class="header">
|
||||||
<nav class="nav">
|
<nav class="nav">
|
||||||
<p class="logo"><a href="{{ "" | absLangURL }}">{{ .Site.Title }}</a></p>
|
<p class="logo">
|
||||||
|
<a href="{{ "" | absLangURL }}">{{ .Site.Title }}</a>
|
||||||
|
{{- if not .Site.Params.disableThemeToggle }}
|
||||||
|
<span class="theme-toggle">
|
||||||
|
<a id="theme-toggle">
|
||||||
|
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"
|
||||||
|
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||||
|
stroke-linejoin="round">
|
||||||
|
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
|
||||||
|
</svg>
|
||||||
|
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"
|
||||||
|
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||||
|
stroke-linejoin="round">
|
||||||
|
<circle cx="12" cy="12" r="5"></circle>
|
||||||
|
<line x1="12" y1="1" x2="12" y2="3"></line>
|
||||||
|
<line x1="12" y1="21" x2="12" y2="23"></line>
|
||||||
|
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
||||||
|
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
||||||
|
<line x1="1" y1="12" x2="3" y2="12"></line>
|
||||||
|
<line x1="21" y1="12" x2="23" y2="12"></line>
|
||||||
|
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
||||||
|
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
|
{{- end}}
|
||||||
|
</p>
|
||||||
{{- $currentPage := . }}
|
{{- $currentPage := . }}
|
||||||
<ul class="menu" id="menu" onscroll="menu_on_scroll()">
|
<ul class="menu" id="menu" onscroll="menu_on_scroll()">
|
||||||
{{- range .Site.Menus.main }}
|
{{- range .Site.Menus.main }}
|
||||||
|
|
Loading…
Reference in New Issue