From 2f7450b5afec64e220705ab916371c543d0109cb Mon Sep 17 00:00:00 2001 From: Till-JS <101404291+Till-JS@users.noreply.github.com> Date: Fri, 5 Dec 2025 04:20:06 +0100 Subject: [PATCH] refactor(mail): reorganize routes into (app) layout group MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Move all authenticated routes into (app) layout group for better code organization and layout management. Add missing stores. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .../apps/web/src/lib/stores/navigation.ts | 4 + apps/mail/apps/web/src/lib/stores/theme.ts | 6 + .../src/lib/stores/user-settings.svelte.ts | 51 ++++ .../apps/web/src/routes/(app)/+layout.svelte | 249 ++++++++++++++++++ .../web/src/routes/{ => (app)}/+page.svelte | 0 .../routes/{ => (app)}/drafts/+page.svelte | 0 .../routes/{ => (app)}/feedback/+page.svelte | 0 .../src/routes/{ => (app)}/sent/+page.svelte | 0 .../routes/{ => (app)}/settings/+page.svelte | 0 .../routes/{ => (app)}/starred/+page.svelte | 0 apps/mail/apps/web/src/routes/+layout.svelte | 231 +--------------- 11 files changed, 319 insertions(+), 222 deletions(-) create mode 100644 apps/mail/apps/web/src/lib/stores/navigation.ts create mode 100644 apps/mail/apps/web/src/lib/stores/theme.ts create mode 100644 apps/mail/apps/web/src/lib/stores/user-settings.svelte.ts create mode 100644 apps/mail/apps/web/src/routes/(app)/+layout.svelte rename apps/mail/apps/web/src/routes/{ => (app)}/+page.svelte (100%) rename apps/mail/apps/web/src/routes/{ => (app)}/drafts/+page.svelte (100%) rename apps/mail/apps/web/src/routes/{ => (app)}/feedback/+page.svelte (100%) rename apps/mail/apps/web/src/routes/{ => (app)}/sent/+page.svelte (100%) rename apps/mail/apps/web/src/routes/{ => (app)}/settings/+page.svelte (100%) rename apps/mail/apps/web/src/routes/{ => (app)}/starred/+page.svelte (100%) 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} - -