diff --git a/apps/calendar/apps/web/src/routes/(app)/+layout.svelte b/apps/calendar/apps/web/src/routes/(app)/+layout.svelte index b9eda7e95..9da550c9f 100644 --- a/apps/calendar/apps/web/src/routes/(app)/+layout.svelte +++ b/apps/calendar/apps/web/src/routes/(app)/+layout.svelte @@ -209,7 +209,6 @@ icon: 'settings', onClick: () => (showSettingsModal = true), }, - { href: '/feedback', label: 'Feedback', icon: 'chat' }, ]); // Navigation items filtered by visibility settings (with fallback for guest mode) diff --git a/apps/chat/apps/web/src/routes/(protected)/+layout.svelte b/apps/chat/apps/web/src/routes/(protected)/+layout.svelte index 072218983..96a3cd4e0 100644 --- a/apps/chat/apps/web/src/routes/(protected)/+layout.svelte +++ b/apps/chat/apps/web/src/routes/(protected)/+layout.svelte @@ -85,7 +85,6 @@ { href: '/spaces', label: 'Spaces', icon: 'building' }, { href: '/documents', label: 'Dokumente', icon: 'archive' }, { href: '/archive', label: 'Archiv', icon: 'list' }, - { href: '/feedback', label: 'Feedback', icon: 'chat' }, ]; // Navigation items filtered by visibility settings (with fallback for guest mode) diff --git a/apps/clock/apps/web/src/routes/(app)/+layout.svelte b/apps/clock/apps/web/src/routes/(app)/+layout.svelte index 47a1bb2ce..6f1397101 100644 --- a/apps/clock/apps/web/src/routes/(app)/+layout.svelte +++ b/apps/clock/apps/web/src/routes/(app)/+layout.svelte @@ -172,7 +172,6 @@ { href: '/world-clock', label: 'Weltzeituhr', icon: 'globe' }, { href: '/life', label: 'Lebensuhr', icon: 'heart' }, { href: '/settings', label: 'Einstellungen', icon: 'settings' }, - { href: '/feedback', label: 'Feedback', icon: 'chat' }, ]; // Navigation items filtered by visibility settings diff --git a/apps/contacts/apps/web/src/routes/(app)/+layout.svelte b/apps/contacts/apps/web/src/routes/(app)/+layout.svelte index a358319c2..b859bc268 100644 --- a/apps/contacts/apps/web/src/routes/(app)/+layout.svelte +++ b/apps/contacts/apps/web/src/routes/(app)/+layout.svelte @@ -129,7 +129,6 @@ { href: '/', label: 'Kontakte', icon: 'users' }, { href: '/tags', label: 'Tags', icon: 'tag' }, { href: '/settings', label: 'Einstellungen', icon: 'settings' }, - { href: '/feedback', label: 'Feedback', icon: 'chat' }, { href: '/help', label: 'Hilfe', icon: 'help-circle' }, ]; diff --git a/apps/context/apps/web/src/routes/(app)/+layout.svelte b/apps/context/apps/web/src/routes/(app)/+layout.svelte index dc0dc677a..548c192e9 100644 --- a/apps/context/apps/web/src/routes/(app)/+layout.svelte +++ b/apps/context/apps/web/src/routes/(app)/+layout.svelte @@ -142,7 +142,6 @@ { href: '/documents', label: 'Dokumente', icon: 'file-text' }, { href: '/tokens', label: 'Tokens', icon: 'sparkle' }, { href: '/settings', label: 'Einstellungen', icon: 'settings' }, - { href: '/feedback', label: 'Feedback', icon: 'chat' }, ]; const navItems = $derived( diff --git a/apps/manacore/apps/web/src/routes/(app)/+layout.svelte b/apps/manacore/apps/web/src/routes/(app)/+layout.svelte index 8f2addaaf..14ab8027d 100644 --- a/apps/manacore/apps/web/src/routes/(app)/+layout.svelte +++ b/apps/manacore/apps/web/src/routes/(app)/+layout.svelte @@ -84,7 +84,6 @@ { href: '/credits', label: 'Credits', icon: 'creditCard' }, { href: '/gifts', label: 'Geschenke', icon: 'gift' }, { href: '/api-keys', label: 'API Keys', icon: 'key' }, - { href: '/feedback', label: 'Feedback', icon: 'chat' }, { href: '/profile', label: 'Profil', icon: 'user' }, { href: '/settings', label: 'Settings', icon: 'settings' }, ]; diff --git a/apps/mukke/apps/web/src/routes/(app)/+layout.svelte b/apps/mukke/apps/web/src/routes/(app)/+layout.svelte index cbf499632..32606826f 100644 --- a/apps/mukke/apps/web/src/routes/(app)/+layout.svelte +++ b/apps/mukke/apps/web/src/routes/(app)/+layout.svelte @@ -66,7 +66,6 @@ { href: '/projects', label: 'Editor', icon: 'waveform' }, { href: '/upload', label: 'Upload', icon: 'upload' }, { href: '/settings', label: 'Settings', icon: 'settings' }, - { href: '/feedback', label: 'Feedback', icon: 'chat' }, { href: '/help', label: 'Help', icon: 'help-circle' }, ]; diff --git a/apps/presi/apps/web/src/routes/(app)/+layout.svelte b/apps/presi/apps/web/src/routes/(app)/+layout.svelte index da0416098..c9baf104f 100644 --- a/apps/presi/apps/web/src/routes/(app)/+layout.svelte +++ b/apps/presi/apps/web/src/routes/(app)/+layout.svelte @@ -56,10 +56,7 @@ let userEmail = $derived(auth.user?.email); // Navigation items for Presi - const navItems: PillNavItem[] = [ - { href: '/', label: 'Decks', icon: 'document' }, - { href: '/feedback', label: 'Feedback', icon: 'chat' }, - ]; + const navItems: PillNavItem[] = [{ href: '/', label: 'Decks', icon: 'document' }]; // Routes where nav should be hidden (present mode, shared view) const hideNavRoutes = ['/present/', '/shared/']; diff --git a/apps/storage/apps/web/src/routes/+layout.svelte b/apps/storage/apps/web/src/routes/+layout.svelte index 2afb0e281..ac369175b 100644 --- a/apps/storage/apps/web/src/routes/+layout.svelte +++ b/apps/storage/apps/web/src/routes/+layout.svelte @@ -68,7 +68,6 @@ { href: '/favorites', label: 'Favoriten', icon: 'heart' }, { href: '/trash', label: 'Papierkorb', icon: 'trash' }, { href: '/search', label: 'Suche', icon: 'search' }, - { href: '/feedback', label: 'Feedback', icon: 'chat' }, ]; // Navigation shortcuts diff --git a/apps/todo/apps/web/src/routes/(app)/+layout.svelte b/apps/todo/apps/web/src/routes/(app)/+layout.svelte index 394ee0269..40816c441 100644 --- a/apps/todo/apps/web/src/routes/(app)/+layout.svelte +++ b/apps/todo/apps/web/src/routes/(app)/+layout.svelte @@ -178,7 +178,6 @@ { href: '/spiral', label: 'Spiral', icon: 'sparkles' }, { href: '/tags', label: 'Tags', icon: 'tag' }, { href: '/settings', label: 'Einstellungen', icon: 'settings' }, - { href: '/feedback', label: 'Feedback', icon: 'chat' }, ]); // Navigation items filtered by visibility settings (with fallback for guest mode) diff --git a/apps/zitare/apps/web/src/routes/(app)/+layout.svelte b/apps/zitare/apps/web/src/routes/(app)/+layout.svelte index af7a2aea6..2cfbab9c3 100644 --- a/apps/zitare/apps/web/src/routes/(app)/+layout.svelte +++ b/apps/zitare/apps/web/src/routes/(app)/+layout.svelte @@ -95,7 +95,6 @@ { href: '/favorites', label: $_('nav.favorites'), icon: 'heart' }, { href: '/lists', label: $_('nav.lists'), icon: 'list' }, { href: '/settings', label: $_('nav.settings'), icon: 'settings' }, - { href: '/feedback', label: $_('nav.feedback'), icon: 'chat' }, ]); // Filter hidden nav items @@ -104,7 +103,7 @@ ); // Navigation routes for keyboard shortcuts - const navRoutes = ['/', '/categories', '/favorites', '/lists', '/settings', '/feedback']; + const navRoutes = ['/', '/categories', '/favorites', '/lists', '/settings']; function handleToggleTheme() { theme.toggleMode(); diff --git a/packages/shared-theme/src/app-routes.ts b/packages/shared-theme/src/app-routes.ts index 7ace3fb16..842cddc97 100644 --- a/packages/shared-theme/src/app-routes.ts +++ b/packages/shared-theme/src/app-routes.ts @@ -99,7 +99,6 @@ export const APP_ROUTES: Record = { { path: '/spaces', label: 'Spaces', icon: 'folder' }, { path: '/documents', label: 'Dokumente', icon: 'document' }, { path: '/archive', label: 'Archiv', icon: 'archive' }, - { path: '/feedback', label: 'Feedback', icon: 'chat' }, { path: '/settings', label: 'Einstellungen', icon: 'settings', alwaysVisible: true }, ], }, @@ -139,7 +138,6 @@ export const APP_ROUTES: Record = { { path: '/authors', label: 'Autoren', icon: 'users' }, { path: '/favorites', label: 'Favoriten', icon: 'star' }, { path: '/lists', label: 'Listen', icon: 'list' }, - { path: '/feedback', label: 'Feedback', icon: 'chat' }, { path: '/settings', label: 'Einstellungen', icon: 'settings', alwaysVisible: true }, ], }, diff --git a/packages/shared-ui/src/navigation/PillNavigation.svelte b/packages/shared-ui/src/navigation/PillNavigation.svelte index eb6cd2ef7..f95534fa1 100644 --- a/packages/shared-ui/src/navigation/PillNavigation.svelte +++ b/packages/shared-ui/src/navigation/PillNavigation.svelte @@ -257,6 +257,8 @@ onOpenInPanel?: (appId: string, url: string) => void; /** Accessible label for the nav element */ ariaLabel?: string; + /** Feedback page href (shown in user dropdown). Set to empty string to hide. */ + feedbackHref?: string; } let { @@ -299,6 +301,7 @@ showA11yQuickToggles = false, onOpenInPanel, ariaLabel, + feedbackHref = '/feedback', }: Props = $props(); // Type guards for elements @@ -810,6 +813,19 @@ }, active: currentPath === settingsHref, }, + ...(feedbackHref + ? [ + { + id: 'feedback', + label: 'Feedback', + icon: 'chat', + onClick: () => { + window.location.href = feedbackHref; + }, + active: currentPath === feedbackHref, + }, + ] + : []), ...(showLanguageSwitcher && languageItems.length > 0 ? [ { id: 'language-divider', label: '', divider: true },