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

@@ -11,6 +11,30 @@
let { data }: { data: PageData } = $props();
// For anonymous users, get theme from localStorage
function getInitialTheme() {
if (data.isAuthenticated) {
return data.user?.dashboardTheme || 'none';
} else {
// Anonymous user - get from localStorage
if (typeof window !== 'undefined') {
return localStorage.getItem('dashboardTheme') || 'none';
}
return 'none';
}
}
let currentTheme = $state(getInitialTheme());
// Save to localStorage when theme changes for anonymous users
function handleThemeUpdate(theme: string | null) {
currentTheme = theme || 'none';
if (!data.isAuthenticated && typeof window !== 'undefined') {
localStorage.setItem('dashboardTheme', currentTheme);
}
}
const t = $derived(languageStore.t);
// Only owned wishlists for "My Wishlists"
@@ -34,11 +58,13 @@
});
</script>
<PageContainer theme={data.user?.dashboardTheme} themeColor="hsl(var(--primary))">
<PageContainer theme={currentTheme} themeColor="#3b82f6">
<DashboardHeader
userName={data.user?.name}
userEmail={data.user?.email}
dashboardTheme={data.user?.dashboardTheme || 'none'}
dashboardTheme={currentTheme}
isAuthenticated={data.isAuthenticated}
onThemeUpdate={handleThemeUpdate}
/>
<!-- Local Wishlists Section (for anonymous and authenticated users) -->