From 7691f66cbbf8212a7fdc6cfdcaf45379668bb0d8 Mon Sep 17 00:00:00 2001 From: Till JS Date: Mon, 23 Mar 2026 11:10:41 +0100 Subject: [PATCH] refactor(todo): move Feedback, Themes, Spiral to profile dropdown Move secondary navigation items (Themes, Spiral) from the main pill nav bar into the user profile dropdown menu. Feedback and Settings were already there. This declutters the main nav to just core views: Liste, Kanban, Filter, Tags. Add themesHref and spiralHref optional props to PillNavigation component so any app can show these in the user dropdown. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../apps/web/src/routes/(app)/+layout.svelte | 3 +- .../src/navigation/PillNavigation.svelte | 32 +++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/apps/todo/apps/web/src/routes/(app)/+layout.svelte b/apps/todo/apps/web/src/routes/(app)/+layout.svelte index c94fcb364..3a10ce776 100644 --- a/apps/todo/apps/web/src/routes/(app)/+layout.svelte +++ b/apps/todo/apps/web/src/routes/(app)/+layout.svelte @@ -179,7 +179,6 @@ onClick: handleFilterToggle, active: isFilterStripVisible, }, - { href: '/spiral', label: 'Spiral', icon: 'spiral' }, { href: '/tags', label: 'Tags', icon: 'tag' }, ]); @@ -325,6 +324,8 @@ manaHref="/mana" profileHref="/profile" allAppsHref="/apps" + themesHref="/themes" + spiralHref="/spiral" onOpenInPanel={handleOpenInPanel} ariaLabel="Hauptnavigation" /> diff --git a/packages/shared-ui/src/navigation/PillNavigation.svelte b/packages/shared-ui/src/navigation/PillNavigation.svelte index 17e50a534..d66c86942 100644 --- a/packages/shared-ui/src/navigation/PillNavigation.svelte +++ b/packages/shared-ui/src/navigation/PillNavigation.svelte @@ -278,6 +278,10 @@ ariaLabel?: string; /** Feedback page href (shown in user dropdown). Set to empty string to hide. */ feedbackHref?: string; + /** Themes page href (shown in user dropdown). Set to empty string to hide. */ + themesHref?: string; + /** Spiral page href (shown in user dropdown). Set to empty string to hide. */ + spiralHref?: string; } let { @@ -321,6 +325,8 @@ onOpenInPanel, ariaLabel, feedbackHref = '/feedback', + themesHref, + spiralHref, }: Props = $props(); // Type guards for elements @@ -841,6 +847,32 @@ }, ] : []), + ...(themesHref + ? [ + { + id: 'themes', + label: 'Themes', + icon: 'palette', + onClick: () => { + window.location.href = themesHref; + }, + active: currentPath === themesHref, + }, + ] + : []), + ...(spiralHref + ? [ + { + id: 'spiral', + label: 'Spiral', + icon: 'sparkles', + onClick: () => { + window.location.href = spiralHref; + }, + active: currentPath === spiralHref, + }, + ] + : []), ...(showLanguageSwitcher && languageItems.length > 0 ? [ { id: 'language-divider', label: '', divider: true },