From 98a21b966410c127e74b16e7a2817882ee16560f Mon Sep 17 00:00:00 2001 From: Ryan Schanzenbacher Date: Sun, 26 Dec 2021 00:30:09 -0500 Subject: convert theme from submodule to regular files --- themes/hugo-coder | 1 - themes/hugo-coder/assets/js/coder.js | 40 ++++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) delete mode 160000 themes/hugo-coder create mode 100644 themes/hugo-coder/assets/js/coder.js (limited to 'themes/hugo-coder/assets/js') diff --git a/themes/hugo-coder b/themes/hugo-coder deleted file mode 160000 index 55b2a15..0000000 --- a/themes/hugo-coder +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 55b2a150f990bc56364dba347bc9acc6aab07be3 diff --git a/themes/hugo-coder/assets/js/coder.js b/themes/hugo-coder/assets/js/coder.js new file mode 100644 index 0000000..d52db11 --- /dev/null +++ b/themes/hugo-coder/assets/js/coder.js @@ -0,0 +1,40 @@ +const body = document.body; +const darkModeToggle = document.getElementById('dark-mode-toggle'); +const darkModeMediaQuery = window.matchMedia('(prefers-color-scheme: dark)'); + +// Check if user preference is set, if not check value of body class for light or dark else it means that colorscheme = auto +if (localStorage.getItem("colorscheme")) { + setTheme(localStorage.getItem("colorscheme")); +} else if (body.classList.contains('colorscheme-light') || body.classList.contains('colorscheme-dark')) { + setTheme(body.classList.contains("colorscheme-dark") ? "dark" : "light"); +} else { + setTheme(darkModeMediaQuery.matches ? "dark" : "light"); +} + +if (darkModeToggle) { + darkModeToggle.addEventListener('click', () => { + let theme = body.classList.contains("colorscheme-dark") ? "light" : "dark"; + setTheme(theme); + rememberTheme(theme); + }); +} + +darkModeMediaQuery.addListener((event) => { + setTheme(event.matches ? "dark" : "light"); +}); + +document.addEventListener("DOMContentLoaded", function () { + let node = document.querySelector('.preload-transitions'); + node.classList.remove('preload-transitions'); +}); + +function setTheme(theme) { + body.classList.remove('colorscheme-auto'); + let inverse = theme === 'dark' ? 'light' : 'dark'; + body.classList.remove('colorscheme-' + inverse); + body.classList.add('colorscheme-' + theme); +} + +function rememberTheme(theme) { + localStorage.setItem('colorscheme', theme); +} -- cgit v1.2.3