solomonlai.ng/theme.js
Solomon Laing 7d43da156c
Some checks reported errors
continuous-integration/drone/push Build encountered an error
feat: rebuild using sourcegraph amp to drive dev
2026-02-09 22:32:05 +10:30

29 lines
1.0 KiB
JavaScript

const toggle = document.querySelector('.theme-toggle');
const iconMoon = toggle.querySelector('.icon-moon');
const iconSun = toggle.querySelector('.icon-sun');
function getPreferredTheme() {
const stored = localStorage.getItem('theme');
if (stored) return stored;
return window.matchMedia('(prefers-color-scheme: light)').matches ? 'light' : 'dark';
}
function applyTheme(theme) {
document.documentElement.setAttribute('data-theme', theme);
iconMoon.style.display = theme === 'light' ? 'block' : 'none';
iconSun.style.display = theme === 'dark' ? 'block' : 'none';
}
applyTheme(getPreferredTheme());
toggle.addEventListener('click', () => {
const current = document.documentElement.getAttribute('data-theme');
const next = current === 'dark' ? 'light' : 'dark';
document.documentElement.classList.add('theme-transitioning');
localStorage.setItem('theme', next);
applyTheme(next);
setTimeout(() => {
document.documentElement.classList.remove('theme-transitioning');
}, 500);
});