quartz/assets/js/darkmode.js
2022-05-04 10:53:45 -04:00

38 lines
1.2 KiB
JavaScript

const userPref = window.matchMedia('(prefers-color-scheme: light)').matches ? 'light' : 'dark'
const currentTheme = localStorage.getItem('theme') ?? 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')
}
})