diff --git a/apps/manacore/apps/web/src/routes/(app)/themes/+page.svelte b/apps/manacore/apps/web/src/routes/(app)/themes/+page.svelte new file mode 100644 index 000000000..1ac868d82 --- /dev/null +++ b/apps/manacore/apps/web/src/routes/(app)/themes/+page.svelte @@ -0,0 +1,19 @@ + + + + Themes | ManaCore + + + theme.setVariant(v)} + showModeSelector={true} + currentMode={theme.mode} + onModeChange={(m) => theme.setMode(m)} + showBackButton={true} + onBack={() => goto('/dashboard')} +/> diff --git a/apps/manadeck/apps/web/src/routes/(app)/+layout.svelte b/apps/manadeck/apps/web/src/routes/(app)/+layout.svelte index 5c4c8563d..adcab661d 100644 --- a/apps/manadeck/apps/web/src/routes/(app)/+layout.svelte +++ b/apps/manadeck/apps/web/src/routes/(app)/+layout.svelte @@ -18,7 +18,7 @@ let isCollapsed = $state(false); // Get theme state - let effectiveMode = $derived(theme.effectiveMode); + let isDark = $derived(theme.isDark); // Navigation items for ManaDeck const navItems: PillNavItem[] = [ @@ -100,6 +100,10 @@ theme.toggleMode(); } + function handleThemeModeChange(mode: 'light' | 'dark' | 'system') { + theme.setMode(mode); + } + async function handleSignOut() { await authStore.signOut(); goto('/login'); @@ -132,16 +136,16 @@ {#if authStore.loading} -
+
-

Loading...

+

Loading...

{:else if authStore.isAuthenticated} -
+
diff --git a/apps/picture/apps/web/src/routes/app/+layout.svelte b/apps/picture/apps/web/src/routes/app/+layout.svelte index cc5a7b165..dfb6cc830 100644 --- a/apps/picture/apps/web/src/routes/app/+layout.svelte +++ b/apps/picture/apps/web/src/routes/app/+layout.svelte @@ -46,6 +46,10 @@ theme.toggleMode(); } + function handleThemeModeChange(mode: 'light' | 'dark' | 'system') { + theme.setMode(mode); + } + // Client-side auth check $effect(() => { if (authStore.initialized && !authStore.loading && !authStore.user) { @@ -203,6 +207,8 @@ showThemeVariants={true} {themeVariantItems} {currentThemeVariantLabel} + themeMode={theme.mode} + onThemeModeChange={handleThemeModeChange} showLanguageSwitcher={false} primaryColor="#3b82f6" /> diff --git a/apps/presi/apps/web/src/routes/+layout.svelte b/apps/presi/apps/web/src/routes/+layout.svelte index 9f1387c49..d7c24dd04 100644 --- a/apps/presi/apps/web/src/routes/+layout.svelte +++ b/apps/presi/apps/web/src/routes/+layout.svelte @@ -78,6 +78,10 @@ theme.toggleMode(); } + function handleThemeModeChange(mode: 'light' | 'dark' | 'system') { + theme.setMode(mode); + } + function handleLogout() { auth.logout(); goto('/login'); @@ -167,6 +171,8 @@ showThemeVariants={true} {themeVariantItems} {currentThemeVariantLabel} + themeMode={theme.mode} + onThemeModeChange={handleThemeModeChange} showLanguageSwitcher={false} showLogout={true} onLogout={handleLogout} diff --git a/apps/zitare/apps/web/src/routes/+layout.svelte b/apps/zitare/apps/web/src/routes/+layout.svelte index cbbf639fb..6117ce893 100644 --- a/apps/zitare/apps/web/src/routes/+layout.svelte +++ b/apps/zitare/apps/web/src/routes/+layout.svelte @@ -107,6 +107,10 @@ theme.toggleMode(); } + function handleThemeModeChange(mode: 'light' | 'dark' | 'system') { + theme.setMode(mode); + } + async function handleLogout() { await authStore.signOut(); goto('/login'); @@ -169,6 +173,8 @@ showThemeVariants={true} {themeVariantItems} {currentThemeVariantLabel} + themeMode={theme.mode} + onThemeModeChange={handleThemeModeChange} showLanguageSwitcher={false} showLogout={authStore.isAuthenticated} onLogout={handleLogout}