all repos — archie @ ddcd4cdcfc0b150fafd6dac1af1ec3d46e39753b

A minimal Hugo Theme

Merge pull request #36 from hsand/master

Add dark mode toggle
Athul Cyriac Ajay athul8720@gmail.com
Sun, 26 Sep 2021 01:50:43 +0530
commit

ddcd4cdcfc0b150fafd6dac1af1ec3d46e39753b

parent

5321e4817fbed7cf57de9171f994f8720cbcf411

4 files changed, 31 insertions(+), 3 deletions(-)

jump to
M README.mdREADME.md

@@ -14,6 +14,7 @@ - Google Analytics Script

- Callouts - Tags - Auto Dark Mode(based on system theme) +- Dark/Light Mode toggle - tl:dr; frontamatter - Cache busting for CSS files

@@ -75,7 +76,7 @@

paginate=3 # articles per page [params] - mode="auto" # color-mode → light,dark or auto + mode="auto" # color-mode → light,dark,toggle or auto useCDN=false # don't use CDNs for fonts and icons, instead serve them locally. subtitle = "Minimal and Clean [blog theme for Hugo](https://github.com/athul/archie)"
M layouts/partials/head.htmllayouts/partials/head.html

@@ -6,5 +6,9 @@ <nav>

{{ range .Site.Menus.main }} <a href="{{ .URL }}">{{ .Name }}</a> {{ end }} + {{ if eq .Site.Params.mode "toggle" -}} + | <a id="dark-mode-toggle" onclick="toggleTheme()" href=""></a> + <script src="{{ .Site.BaseURL }}js/themetoggle.js"></script> + {{ end }} </nav> </header>
M layouts/partials/header.htmllayouts/partials/header.html

@@ -39,9 +39,9 @@

{{ $style := resources.Get "css/main.css" | fingerprint }} <link rel="stylesheet" type="text/css" media="screen" href="{{ $style.Permalink }}" /> - {{- if or (eq .Site.Params.mode "auto") (eq .Site.Params.mode "dark") -}} + {{- if or (eq .Site.Params.mode "auto") (eq .Site.Params.mode "dark") (eq .Site.Params.mode "toggle") -}} {{ $darkstyle := resources.Get "css/dark.css" | fingerprint }} - <link rel="stylesheet" type="text/css" href="{{ $darkstyle.Permalink }}" {{ if eq .Site.Params.mode "auto" }}media="(prefers-color-scheme: dark)"{{ end }} /> + <link id="darkModeStyle" rel="stylesheet" type="text/css" href="{{ $darkstyle.Permalink }}" {{ if eq .Site.Params.mode "auto" }}media="(prefers-color-scheme: dark)"{{ end }} {{ if eq .Site.Params.mode "toggle" }}disabled{{ end }} /> {{ end }} <!-- Custom CSS style get applied last -->
A static/js/themetoggle.js

@@ -0,0 +1,23 @@

+function setTheme(mode) { + localStorage.setItem("theme-storage", mode); + if (mode === "dark") { + document.getElementById("darkModeStyle").disabled=false; + document.getElementById("dark-mode-toggle").innerHTML = "<i data-feather=\"sun\"></i>"; + feather.replace() + } else if (mode === "light") { + document.getElementById("darkModeStyle").disabled=true; + document.getElementById("dark-mode-toggle").innerHTML = "<i data-feather=\"moon\"></i>"; + feather.replace() + } +} + +function toggleTheme() { + if (localStorage.getItem("theme-storage") === "light") { + setTheme("dark"); + } else if (localStorage.getItem("theme-storage") === "dark") { + setTheme("light"); + } +} + +var savedTheme = localStorage.getItem("theme-storage") || "light"; +setTheme(savedTheme);