Skip to content

Commit

Permalink
feat: *reactive* dark mode!
Browse files Browse the repository at this point in the history
  • Loading branch information
reuixiy committed Dec 6, 2019
1 parent cc7b36b commit 8d24690
Showing 1 changed file with 36 additions and 4 deletions.
40 changes: 36 additions & 4 deletions assets/js/dark-mode.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,27 +13,51 @@ if (theme === "dark") {
goLight();
} else if (userPrefers === "dark") {
goDarkMeta();
window.localStorage.setItem('theme', 'dark');
setDark();
goDark();
} else if (userPrefers === "light") {
goLightMeta();
window.localStorage.setItem('theme', 'light');
setLight();
goLight();
}

function modeSwitcher() {
const currentMode = document.documentElement.getAttribute('data-theme');
if (currentMode === "dark") {
goLightMeta();
window.localStorage.setItem('theme', 'light');
setLight();
goLight();
} else {
goDarkMeta();
window.localStorage.setItem('theme', 'dark');
setDark();
goDark();
}
}

// Reactive Dark Mode
// https://web.dev/prefers-color-scheme/#reacting-on-dark-mode-changes
// https://twitter.com/ChromeDevTools/status/1197175265643745282

const darkModeMediaQuery = window.matchMedia('(prefers-color-scheme: dark)');
darkModeMediaQuery.addListener((e) => {
const darkModeOn = e.matches;
if (darkModeOn) {
goDarkMeta();
setDark();
goDark();
}
});

const lightModeMediaQuery = window.matchMedia('(prefers-color-scheme: light)');
lightModeMediaQuery.addListener((e) => {
const lightModeOn = e.matches;
if (lightModeOn) {
goLightMeta();
setLight();
goLight();
}
});

// Sync Across Tabs
// https://codepen.io/tevko/pen/GgWYpg

Expand All @@ -59,6 +83,14 @@ function goLightMeta() {
document.querySelector('meta[name="theme-color"]').setAttribute('content', '{{ $themeColor }}');
}

function setDark() {
window.localStorage.setItem('theme', 'dark');
}

function setLight() {
window.localStorage.setItem('theme', 'light');
}

function goDark() {
document.getElementById("theme-toggle").innerHTML = "🌙";

Expand Down

0 comments on commit 8d24690

Please sign in to comment.