diff --git a/app/w/components/sidebar/components/settings-modal/components/general/general.tsx b/app/w/components/sidebar/components/settings-modal/components/general/general.tsx index b6b35c9ad9..7002eaece2 100644 --- a/app/w/components/sidebar/components/settings-modal/components/general/general.tsx +++ b/app/w/components/sidebar/components/settings-modal/components/general/general.tsx @@ -51,6 +51,7 @@ export function General() { + System Light Dark diff --git a/app/w/providers/theme-provider.tsx b/app/w/providers/theme-provider.tsx index 439c6646b6..98e9486d22 100644 --- a/app/w/providers/theme-provider.tsx +++ b/app/w/providers/theme-provider.tsx @@ -9,7 +9,14 @@ export function ThemeProvider({ children }: { children: React.ReactNode }) { useEffect(() => { const root = window.document.documentElement root.classList.remove('light', 'dark') - root.classList.add(theme) + + // If theme is system, check system preference + if (theme === 'system') { + const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches + root.classList.add(prefersDark ? 'dark' : 'light') + } else { + root.classList.add(theme) + } }, [theme]) return children diff --git a/stores/settings/general/store.ts b/stores/settings/general/store.ts index e46b8bf2d0..ab0ce53dbd 100644 --- a/stores/settings/general/store.ts +++ b/stores/settings/general/store.ts @@ -4,13 +4,13 @@ import { devtools, persist } from 'zustand/middleware' interface General { isAutoConnectEnabled: boolean isDebugModeEnabled: boolean - theme: 'light' | 'dark' + theme: 'system' | 'light' | 'dark' } interface GeneralActions { toggleAutoConnect: () => void toggleDebugMode: () => void - setTheme: (theme: 'light' | 'dark') => void + setTheme: (theme: 'system' | 'light' | 'dark') => void } type GeneralStore = General & GeneralActions @@ -21,11 +21,11 @@ export const useGeneralStore = create()( (set) => ({ isAutoConnectEnabled: true, isDebugModeEnabled: false, - theme: 'light', + theme: 'system', toggleAutoConnect: () => set((state) => ({ isAutoConnectEnabled: !state.isAutoConnectEnabled })), toggleDebugMode: () => set((state) => ({ isDebugModeEnabled: !state.isDebugModeEnabled })), - setTheme: (theme: 'light' | 'dark') => set({ theme }), + setTheme: (theme: 'system' | 'light' | 'dark') => set({ theme }), }), { name: 'general-settings',