Skip to content

Instantly share code, notes, and snippets.

@zidell
Created May 19, 2020 14:06
Show Gist options
  • Save zidell/53e42fccdb4bd7f76d3a687377814289 to your computer and use it in GitHub Desktop.
Save zidell/53e42fccdb4bd7f76d3a687377814289 to your computer and use it in GitHub Desktop.
function userTheme(toggle = false) {
let userMode = localStorage.userThemeMode || 'auto';
const osMode = !!window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches ? 'dark' : 'light';
if(toggle) {
switch(userMode) {
case 'auto':
userMode = 'dark'; break;
case 'dark':
userMode = 'light'; break;
default:
userMode = 'auto';
}
localStorage.userThemeMode = userMode;
}
console.log(`current mode : ${userMode}`);
window.__THEME_MODE = userMode === 'auto' ? osMode : userMode;
document.getElementsByTagName('html')[0].classList[window.__THEME_MODE === 'dark' ? 'add' : 'remove']('darkmode');
}
if (!!window.matchMedia) {
['light', 'dark'].forEach(mode => {
window.matchMedia(`(prefers-color-scheme: ${mode})`).addListener(e => {
if(!!e.matches) {
userTheme();
}
});
});
}
userTheme();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment