diff --git a/app/plugins/builtins/contacts/plugin.py b/app/plugins/builtins/contacts/plugin.py index c7861c5..0b3c4e4 100644 --- a/app/plugins/builtins/contacts/plugin.py +++ b/app/plugins/builtins/contacts/plugin.py @@ -11,6 +11,8 @@ import logging from app.plugins.base import BasePlugin from app.plugins.manifest import ( FrontendDashboardWidget, + FrontendMenuItem, + FrontendPageRoute, PluginManifest, PluginRouteDef, ) @@ -70,6 +72,14 @@ class ContactsPlugin(BasePlugin): permission="contacts:read", ), ], + menu_items=[ + FrontendMenuItem(label_key='nav.contacts', label='Kontakte', path='/contacts', icon='Users', order=10, permission='contacts:read'), + ], + page_routes=[ + FrontendPageRoute(path='/contacts', component='@/pages/ContactsList', protected=True, permission='contacts:read'), + FrontendPageRoute(path='/contacts/:id', component='@/pages/ContactDetailPage', protected=True, permission='contacts:read'), + FrontendPageRoute(path='/contacts/dedup', component='@/pages/DedupMergePage', protected=True, permission='contacts:read'), + ], permissions=[ "contacts:read", "contacts:write", diff --git a/frontend/src/components/layout/Sidebar.tsx b/frontend/src/components/layout/Sidebar.tsx index 8fb3bb4..e7483ab 100644 --- a/frontend/src/components/layout/Sidebar.tsx +++ b/frontend/src/components/layout/Sidebar.tsx @@ -48,12 +48,11 @@ function getIcon(name: string): React.ReactNode { return Icon ? : ; } -// Only non-plugin items: dashboard, contacts, settings. -// All other menu entries (calendar, dms, mail, ai-assistant, automation, reports, tasks, communication) +// Only non-plugin items: dashboard, system-dashboard. +// All other menu entries (contacts, calendar, dms, mail, ai-assistant, automation, reports, tasks, communication) // are provided by plugin manifests via usePluginStore(s => s.getAllMenuItems()). const singleItems: NavSingleItem[] = [ { to: '/dashboard', labelKey: 'nav.dashboard', icon: