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: , order: 0 },
- { to: '/contacts', labelKey: 'nav.contacts', icon: , order: 10 },
{ to: '/system-dashboard', labelKey: 'nav.systemDashboard', icon: , order: 90 },
];