quartz/assets/js/darkmode.js
2022-08-01 19:05:38 -04:00

39 lines
1.2 KiB
JavaScript

const userPref = window.matchMedia('(prefers-color-scheme: light)').matches ? 'light' : 'dark'
// const currentTheme = localStorage.getItem('theme') ?? userPref
const currentTheme = userPref;
if (currentTheme) {
document.documentElement.setAttribute('saved-theme', currentTheme);
}
const switchTheme = (e) => {
if (e.checked) {
document.documentElement.setAttribute('saved-theme', 'dark')
localStorage.setItem('theme', 'dark')
document.querySelector('#darkmode-icon').setAttribute('class', 'fa fa-moon-o')
}
else {
document.documentElement.setAttribute('saved-theme', 'light')
localStorage.setItem('theme', 'light')
document.querySelector('#darkmode-icon').setAttribute('class', 'fa fa-sun-o')
}
}
window.addEventListener('DOMContentLoaded', () => {
// Darkmode toggle
const toggleSwitch = document.querySelector('#darkmode-toggle')
const dmSwitch = document.querySelector('#darkmode-switch')
// listen for toggle
dmSwitch.addEventListener('click', (e) => {
toggleSwitch.checked = !toggleSwitch.checked;
switchTheme(toggleSwitch);
}, false);
if (currentTheme === 'dark') {
toggleSwitch.checked = true
document.querySelector('#darkmode-icon').setAttribute('class', 'fa fa-moon-o')
}
})