color-scheme-toggle
Version:
A simple javascript to toggle your website between [ 🖥 system theme | 🌙 dark mode | ☀️ light mode ]
33 lines (29 loc) • 985 B
JavaScript
const toggleButton = document.getElementById('color-scheme-toggle');
const themeTextMap = {
'dark': '☾ Dark Mode',
'light': '☀ Light Mode',
'system': '🖥 System Theme',
}
let currentTheme = null;
initTheme();
toggleButton.addEventListener('click', () => {
doToggle();
});
function doToggle() {
const themeKeys = Object.keys(themeTextMap)
currentTheme = themeKeys[(themeKeys.indexOf(currentTheme) + 1) % themeKeys.length];
localStorage.setItem('savedColorScheme', currentTheme)
applyTheme();
}
function initTheme() {
currentTheme = localStorage.getItem('savedColorScheme') || 'system';
applyTheme()
}
function applyTheme() {
let dataTheme = currentTheme
if (dataTheme === 'system') {
dataTheme = window.matchMedia("(prefers-color-scheme: dark)").matches ? 'dark' : 'light';
}
document.documentElement.setAttribute('data-theme', dataTheme);
toggleButton.innerHTML = themeTextMap[currentTheme];
}