diff --git a/apps/mail/apps/web/src/lib/stores/navigation.ts b/apps/mail/apps/web/src/lib/stores/navigation.ts new file mode 100644 index 000000000..f4072e926 --- /dev/null +++ b/apps/mail/apps/web/src/lib/stores/navigation.ts @@ -0,0 +1,4 @@ +import { writable } from 'svelte/store'; + +export const isSidebarMode = writable(false); +export const isNavCollapsed = writable(false); diff --git a/apps/mail/apps/web/src/lib/stores/theme.ts b/apps/mail/apps/web/src/lib/stores/theme.ts new file mode 100644 index 000000000..0d7582cae --- /dev/null +++ b/apps/mail/apps/web/src/lib/stores/theme.ts @@ -0,0 +1,6 @@ +import { createTheme, type ThemeStore } from '@manacore/shared-theme'; + +export const theme: ThemeStore = createTheme({ + storagePrefix: 'mail', + variants: ['default', 'ocean', 'blue', 'purple', 'green', 'orange'], +}); diff --git a/apps/mail/apps/web/src/lib/stores/user-settings.svelte.ts b/apps/mail/apps/web/src/lib/stores/user-settings.svelte.ts new file mode 100644 index 000000000..1ce8acbad --- /dev/null +++ b/apps/mail/apps/web/src/lib/stores/user-settings.svelte.ts @@ -0,0 +1,51 @@ +/** + * User Settings Store for Mail + * Manages user preferences and settings + */ + +interface UserSettings { + nav: { + desktopPosition: 'left' | 'center' | 'right'; + }; +} + +const defaultSettings: UserSettings = { + nav: { + desktopPosition: 'center', + }, +}; + +let settings = $state({ ...defaultSettings }); +let isLoaded = $state(false); + +export const userSettings = { + get nav() { + return settings.nav; + }, + get isLoaded() { + return isLoaded; + }, + + async load() { + if (typeof window === 'undefined') return; + + // Load from localStorage + const saved = localStorage.getItem('mail-user-settings'); + if (saved) { + try { + const parsed = JSON.parse(saved); + settings = { ...defaultSettings, ...parsed }; + } catch { + // Ignore parse errors + } + } + isLoaded = true; + }, + + update(updates: Partial) { + settings = { ...settings, ...updates }; + if (typeof localStorage !== 'undefined') { + localStorage.setItem('mail-user-settings', JSON.stringify(settings)); + } + }, +}; diff --git a/apps/mail/apps/web/src/routes/(app)/+layout.svelte b/apps/mail/apps/web/src/routes/(app)/+layout.svelte new file mode 100644 index 000000000..eb139cdf1 --- /dev/null +++ b/apps/mail/apps/web/src/routes/(app)/+layout.svelte @@ -0,0 +1,249 @@ + + + + +
+ + +
+
+ {@render children()} +
+
+
+ + diff --git a/apps/mail/apps/web/src/routes/+page.svelte b/apps/mail/apps/web/src/routes/(app)/+page.svelte similarity index 100% rename from apps/mail/apps/web/src/routes/+page.svelte rename to apps/mail/apps/web/src/routes/(app)/+page.svelte diff --git a/apps/mail/apps/web/src/routes/drafts/+page.svelte b/apps/mail/apps/web/src/routes/(app)/drafts/+page.svelte similarity index 100% rename from apps/mail/apps/web/src/routes/drafts/+page.svelte rename to apps/mail/apps/web/src/routes/(app)/drafts/+page.svelte diff --git a/apps/mail/apps/web/src/routes/feedback/+page.svelte b/apps/mail/apps/web/src/routes/(app)/feedback/+page.svelte similarity index 100% rename from apps/mail/apps/web/src/routes/feedback/+page.svelte rename to apps/mail/apps/web/src/routes/(app)/feedback/+page.svelte diff --git a/apps/mail/apps/web/src/routes/sent/+page.svelte b/apps/mail/apps/web/src/routes/(app)/sent/+page.svelte similarity index 100% rename from apps/mail/apps/web/src/routes/sent/+page.svelte rename to apps/mail/apps/web/src/routes/(app)/sent/+page.svelte diff --git a/apps/mail/apps/web/src/routes/settings/+page.svelte b/apps/mail/apps/web/src/routes/(app)/settings/+page.svelte similarity index 100% rename from apps/mail/apps/web/src/routes/settings/+page.svelte rename to apps/mail/apps/web/src/routes/(app)/settings/+page.svelte diff --git a/apps/mail/apps/web/src/routes/starred/+page.svelte b/apps/mail/apps/web/src/routes/(app)/starred/+page.svelte similarity index 100% rename from apps/mail/apps/web/src/routes/starred/+page.svelte rename to apps/mail/apps/web/src/routes/(app)/starred/+page.svelte diff --git a/apps/mail/apps/web/src/routes/+layout.svelte b/apps/mail/apps/web/src/routes/+layout.svelte index 6d07ab69b..1528cf711 100644 --- a/apps/mail/apps/web/src/routes/+layout.svelte +++ b/apps/mail/apps/web/src/routes/+layout.svelte @@ -1,249 +1,36 @@ -{#if isAuthRoute} - {@render children()} -{:else if loading} +{#if loading}
-

Loading...

+

Laden...

{:else} -
- - -
-
- {@render children()} -
-
+
+ {@render children()}
{/if} - -