add: themes for wishlists and dashboards
This commit is contained in:
@@ -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}
|
||||
|
||||
Reference in New Issue
Block a user