From 5c8feeed682a1af36c5d71f78bfba9d83a618255 Mon Sep 17 00:00:00 2001 From: ache Date: Sun, 11 Sep 2022 00:29:46 +0200 Subject: Implemente theme switch --- src/js/theme.js | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 src/js/theme.js (limited to 'src/js') diff --git a/src/js/theme.js b/src/js/theme.js new file mode 100644 index 0000000..687574e --- /dev/null +++ b/src/js/theme.js @@ -0,0 +1,55 @@ +window.addEventListener('DOMContentLoaded', () => { + const preferesDark = window.matchMedia('(prefers-color-scheme: dark)').matches; + let isDark = preferesDark; + + const hid = document.querySelector('#hid'); + const html = document.querySelector('html'); + const aside = document.querySelector('#side-bar'); + const sidenotes = document.querySelector('.sidenotes'); + const harr = document.querySelector('#harr'); + + function toogleTheme() { + const arg = isDark ? ['dark', 'light'] : ['light', 'dark']; + const theme = arg[1]; + + if (!hid.classList.replace(...arg)) { + hid.classList.add(theme); + } + + if (!html.classList.replace(...arg)) { + html.classList.add(theme); + } + + if (!aside.classList.replace(...arg)) { + aside.classList.add(theme); + } + + if (!sidenotes.classList.replace(...arg)) { + sidenotes.classList.add(theme); + } + + if (!harr.classList.replace(...arg)) { + harr.classList.add(theme); + } + + for (const article of document.querySelectorAll('article')) { + if (!article.classList.replace(...arg)) { + article.classList.add(theme); + } + } + + isDark = !isDark; + } + + const sun = document.querySelector('.sun'); + const moon = document.querySelector('.moon'); + + sun.addEventListener('click', toogleTheme); + moon.addEventListener('click', toogleTheme); + + if (isDark) { + hid.classList.add('dark'); + } else { + hid.classList.add('light'); + } +}); -- cgit v1.2.3-70-g09d2