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',