dark-mode-switcheroo
Version:
🌓 Simple CSS theme switching with saved preferences and automatic OS setting detection
3 lines (2 loc) • 925 B
JavaScript
exports.init=function(e){var t=(e=e||{}).toggle||null,n=e.storageKey||"dark_mode_pref",a=localStorage.getItem(n),o=e.classes?e.classes.dark:"dark",c=e.classes?e.classes.light:"light",i=e.default||"light",s=i===o,d=function(a,i){"function"==typeof e.onChange&&e.onChange(a,t),document.body.classList.remove(o,c),document.body.classList.add(a),s=a===o,i&&localStorage.setItem(n,a)};if("function"==typeof e.onInit&&e.onInit(t),a)d(a===o||a===c?a:i);else{var l=function(e){return"(prefers-color-scheme: "+e+")"};window.matchMedia(l("dark")).matches?d(o):window.matchMedia(l("light")).matches?d(c):d(i),window.matchMedia(l("dark")).addEventListener("change",function(e){e.matches&&d(o)}),window.matchMedia(l("light")).addEventListener("change",function(e){e.matches&&d(c)})}null!==t&&t.addEventListener("click",function(){"function"==typeof e.onUserToggle&&e.onUserToggle(t),d(s?c:o,!0)})};
//# sourceMappingURL=dark-mode.cjs.map