add: themes for wishlists and dashboards

This commit is contained in:
rasmusq
2025-11-28 12:45:20 +01:00
parent 7c6ff9458f
commit eb7ccdf7a2
7 changed files with 275 additions and 33 deletions

View File

@@ -10,32 +10,35 @@
let {
userName,
userEmail,
dashboardTheme = 'none'
dashboardTheme = 'none',
isAuthenticated = false,
onThemeUpdate
}: {
userName?: string | null;
userEmail?: string | null;
dashboardTheme?: string;
isAuthenticated?: boolean;
onThemeUpdate?: (theme: string | null) => void;
} = $props();
const t = $derived(languageStore.t);
const isAuthenticated = $derived(!!userName || !!userEmail);
let currentTheme = $state(dashboardTheme);
async function handleThemeChange(theme: string) {
currentTheme = theme;
// Update theme immediately for instant visual feedback
if (onThemeUpdate) {
onThemeUpdate(theme);
}
// Submit form to update theme
const formData = new FormData();
formData.append('theme', theme);
// Only submit to database for authenticated users
if (isAuthenticated) {
const formData = new FormData();
formData.append('theme', theme);
await fetch('?/updateDashboardTheme', {
method: 'POST',
body: formData
});
// Reload to apply new theme
window.location.reload();
await fetch('?/updateDashboardTheme', {
method: 'POST',
body: formData
});
}
}
</script>
@@ -49,9 +52,7 @@
{/if}
</div>
<div class="flex items-center gap-1 sm:gap-2 flex-shrink-0">
{#if isAuthenticated}
<ThemePicker value={currentTheme} onValueChange={handleThemeChange} />
{/if}
<ThemePicker value={dashboardTheme} onValueChange={handleThemeChange} />
<LanguageToggle />
<ThemeToggle />
{#if isAuthenticated}