mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-18 20:41:23 +02:00
refactor(nav): move feedback pill into user dropdown across all apps
Feedback is now a sub-item under the Konto (user) dropdown in PillNavigation instead of a standalone pill in the nav bar. Added feedbackHref prop to PillNavigation (defaults to /feedback) and removed feedback from nav items in all 11 apps and shared app-routes config. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
e848fa5342
commit
ac9ce55128
13 changed files with 18 additions and 17 deletions
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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' },
|
||||
];
|
||||
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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' },
|
||||
];
|
||||
|
|
|
|||
|
|
@ -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' },
|
||||
];
|
||||
|
||||
|
|
|
|||
|
|
@ -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/'];
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -99,7 +99,6 @@ export const APP_ROUTES: Record<string, AppRouteConfig> = {
|
|||
{ 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<string, AppRouteConfig> = {
|
|||
{ 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 },
|
||||
],
|
||||
},
|
||||
|
|
|
|||
|
|
@ -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 },
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue