Skip to content

Commit

Permalink
feature: improves theme toggle
Browse files Browse the repository at this point in the history
updated theme toggle to include auto mode if users prefer dark mode.
  • Loading branch information
edheltzel committed Aug 6, 2024
1 parent 049274a commit 820b3a9
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 9 deletions.
2 changes: 1 addition & 1 deletion src/_includes/layouts/base.njk
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<!DOCTYPE html>
<html lang="en"
x-data="theme"
:data-theme="[darkMode ? 'dark' : 'light']"
:data-theme="[isDarkMode ? 'dark' : 'light']"
>
<head>
{%- include "partials/meta.njk" -%}
Expand Down
25 changes: 17 additions & 8 deletions src/assets/js/components/toggle-theme.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,24 @@
*/
export default function toggleTheme() {
return {
/** @type {boolean} */
darkMode: localStorage.getItem("darkMode") === "true",
darkMode: localStorage.getItem("themeMode") || "auto",

/**
* Toggle dark mode
*/
toggleDarkMode() {
this.darkMode = !this.darkMode;
localStorage.setItem("darkMode", String(this.darkMode));
get isDarkMode() {
if (this.darkMode === "auto") {
return window.matchMedia("(prefers-color-scheme: dark)").matches;
}
return this.darkMode === "dark";
},

toggleDarkMode() {
// If it's auto, set it based on current system preference
if (this.darkMode === "auto") {
this.darkMode = this.isDarkMode ? "light" : "dark";
} else {
// Simply toggle between dark and light
this.darkMode = this.darkMode === "dark" ? "light" : "dark";
}
localStorage.setItem("themeMode", this.darkMode);
}
};
}

0 comments on commit 820b3a9

Please sign in to comment.