diff --git a/src/routes/events/[event_id]/(launcher)/launcher_cfg.svelte b/src/routes/events/[event_id]/(launcher)/launcher_cfg.svelte
index bbc6f87e..c32ecf6f 100644
--- a/src/routes/events/[event_id]/(launcher)/launcher_cfg.svelte
+++ b/src/routes/events/[event_id]/(launcher)/launcher_cfg.svelte
@@ -37,19 +37,74 @@ import Launcher_Cfg_Wallpaper from './cfg_components/launcher_cfg_wallpaper.svel
import {
Bug,
Code,
+ Gamepad2,
+ Image,
+ LayoutGrid,
Monitor,
Pencil,
RefreshCw,
Settings,
- SlidersHorizontal,
+ Wrench,
X
} from '@lucide/svelte';
+
// UI Tab State
-// Tabs are audience-oriented:
-// setup — what every onsite operator needs (mode preset, display, WS, screen saver)
-// device — sync engine (all devices) + native/Electron OS controls (native or edit_mode)
-// dev — developer/debug tools; only useful when edit_mode is on
-let active_tab: 'setup' | 'device' | 'dev' = $state('setup');
+type TabId =
+ | 'general'
+ | 'connectivity'
+ | 'sync'
+ | 'native'
+ | 'wallpaper'
+ | 'advanced'
+ | 'maintenance';
+let active_tab: TabId = $state('general');
+
+const TABS = [
+ {
+ id: 'general' as TabId,
+ label: 'General',
+ icon: LayoutGrid,
+ title: 'App Modes, UI & Screen Saver'
+ },
+ {
+ id: 'connectivity' as TabId,
+ label: 'Connectivity',
+ icon: Gamepad2,
+ title: 'Remote Controller & WebSocket'
+ },
+ {
+ id: 'sync' as TabId,
+ label: 'Sync & Health',
+ icon: RefreshCw,
+ title: 'Sync Engine & System Status'
+ },
+ {
+ id: 'native' as TabId,
+ label: 'Native OS',
+ icon: Monitor,
+ title: 'Folders, Displays & Native Apps'
+ },
+ {
+ id: 'wallpaper' as TabId,
+ label: 'Wallpaper',
+ icon: Image,
+ title: 'Desktop Wallpaper Settings'
+ },
+ {
+ id: 'advanced' as TabId,
+ label: 'Advanced',
+ icon: Code,
+ title: 'Launch Timing & Updates',
+ edit_only: true
+ },
+ {
+ id: 'maintenance' as TabId,
+ label: 'Maintenance',
+ icon: Wrench,
+ title: 'Local Resets & Debug Tools',
+ edit_only: true
+ }
+];
/**
* Auto-Collapse Coordinator
@@ -70,185 +125,210 @@ function handle_section_expand(current_key: string) {
});
$events_loc.launcher = launcher; // Trigger store update
}
+
+const current_tab_info = $derived(TABS.find((t) => t.id === active_tab));
+ class="bg-surface-100-900 flex h-full min-h-[500px] w-full flex-row overflow-hidden">
+
-
-
- Launcher Configuration
-
+ class="bg-surface-500/5 flex w-48 flex-shrink-0 flex-col border-r border-surface-500/20 p-2">
+
+
+ Launcher
+
-
-
+
+
+
-
-
-
-
-
- {#if $ae_loc.edit_mode}
-
- {/if}
-
-
-
-
-
- {#if active_tab === 'setup'}
-
-
-
handle_section_expand('app_modes')} />
- handle_section_expand('controller')} />
- handle_section_expand('screen_saver')} />
+
+