diff --git a/app/web/src/App.svelte b/app/web/src/App.svelte index 768fda0..b07849d 100644 --- a/app/web/src/App.svelte +++ b/app/web/src/App.svelte @@ -818,13 +818,19 @@ ? escapeHtml(userProfile.about).replace(/\n{2,}/g, "
") : ""; - // Load theme preference from localStorage on component initialization - if (typeof localStorage !== "undefined") { - const savedTheme = localStorage.getItem("isDarkTheme"); - if (savedTheme !== null) { - isDarkTheme = JSON.parse(savedTheme); - } + // Detect system theme preference and listen for changes + if (typeof window !== "undefined" && window.matchMedia) { + const darkModeQuery = window.matchMedia("(prefers-color-scheme: dark)"); + isDarkTheme = darkModeQuery.matches; + // Listen for system theme changes + darkModeQuery.addEventListener("change", (e) => { + isDarkTheme = e.matches; + }); + } + + // Load state from localStorage + if (typeof localStorage !== "undefined") { // Check for existing authentication const storedAuthMethod = localStorage.getItem("nostr_auth_method"); const storedPubkey = localStorage.getItem("nostr_pubkey"); @@ -1717,14 +1723,6 @@ savePersistentState(); } - function toggleTheme() { - isDarkTheme = !isDarkTheme; - // Save theme preference to localStorage - if (typeof localStorage !== "undefined") { - localStorage.setItem("isDarkTheme", JSON.stringify(isDarkTheme)); - } - } - function openLoginModal() { if (!isLoggedIn) { showLoginModal = true; @@ -2726,7 +2724,6 @@ {currentEffectiveRole} {userProfile} {userPubkey} - on:toggleTheme={toggleTheme} on:openSettingsDrawer={openSettingsDrawer} on:openLoginModal={openLoginModal} /> diff --git a/app/web/src/Header.svelte b/app/web/src/Header.svelte index fd07fe0..3add844 100644 --- a/app/web/src/Header.svelte +++ b/app/web/src/Header.svelte @@ -10,10 +10,6 @@ import { createEventDispatcher } from "svelte"; const dispatch = createEventDispatcher(); - function toggleTheme() { - dispatch("toggleTheme"); - } - function openSettingsDrawer() { dispatch("openSettingsDrawer"); } @@ -37,9 +33,6 @@
- {#if isLoggedIn}