diff --git a/frontend/src/pages/Settings.tsx b/frontend/src/pages/Settings.tsx index f95b5cd..eedccae 100644 --- a/frontend/src/pages/Settings.tsx +++ b/frontend/src/pages/Settings.tsx @@ -19,10 +19,8 @@ export function SettingsPage() { { to: '/settings/user-management', label: 'Nutzerverwaltung', icon: '\ud83d\udc65' }, { to: '/settings/system', label: 'System', icon: '\u2699\ufe0f' }, { to: '/settings/mail', label: t('mail.settings'), icon: '\ud83d\udce7' }, - { to: '/settings/ai', label: t('nav.aiAssistant'), icon: '\ud83e\udde0' }, - { to: '/settings/ai-proactive', label: 'Proaktive KI', icon: '\ud83e\udd16' }, + { to: '/settings/ai-settings', label: 'KI Einstellungen', icon: '\ud83e\udde0' }, { to: '/settings/notifications', label: t('settings.notifications'), icon: '\ud83d\udd14' }, - { to: '/settings/mcp', label: t('settings.mcp', 'MCP'), icon: '\ud83d\udd27' }, ]; const existingPaths = new Set(hardcodedNavItems.map(item => item.to)); diff --git a/frontend/src/pages/SettingsAI.tsx b/frontend/src/pages/SettingsAI.tsx new file mode 100644 index 0000000..7449f25 --- /dev/null +++ b/frontend/src/pages/SettingsAI.tsx @@ -0,0 +1,46 @@ +import React, { useState } from 'react'; +import { useTranslation } from 'react-i18next'; +import { AISettingsPage } from './AISettings'; +import { ProactiveAISettings } from './ProactiveAISettings'; +import { SettingsMcpPage } from './SettingsMcp'; + +export function SettingsAIPage() { + const { t } = useTranslation(); + const [activeTab, setActiveTab] = useState<'assistant' | 'proactive' | 'mcp'>('assistant'); + + const tabs = [ + { key: 'assistant' as const, label: t('nav.aiAssistant', 'KI Assistent') }, + { key: 'proactive' as const, label: t('settings.aiProactive', 'Proaktive KI') }, + { key: 'mcp' as const, label: t('settings.mcp', 'MCP') }, + ]; + + return ( +
+

{t('settings.aiTitle', 'KI Einstellungen')}

+
+ +
+
+ {activeTab === 'assistant' && } + {activeTab === 'proactive' && } + {activeTab === 'mcp' && } +
+
+ ); +} diff --git a/frontend/src/routes/index.tsx b/frontend/src/routes/index.tsx index 7a5838c..3306010 100644 --- a/frontend/src/routes/index.tsx +++ b/frontend/src/routes/index.tsx @@ -36,6 +36,7 @@ const AISettingsPage = React.lazy(() => import('@/pages/AISettings').then(m => ( const ProactiveAISettings = React.lazy(() => import('@/pages/ProactiveAISettings').then(m => ({ default: m.ProactiveAISettings }))); const SettingsThemePage = React.lazy(() => import('@/pages/SettingsTheme').then(m => ({ default: m.SettingsThemePage }))); const SettingsMcpPage = React.lazy(() => import('@/pages/SettingsMcp').then(m => ({ default: m.SettingsMcpPage }))); +const SettingsAIPage = React.lazy(() => import('@/pages/SettingsAI').then(m => ({ default: m.SettingsAIPage }))); const SettingsMenuOrderPage = React.lazy(() => import('@/pages/SettingsMenuOrder').then(m => ({ default: m.SettingsMenuOrderPage }))); const SettingsStammdatenPage = React.lazy(() => import('@/pages/SettingsStammdaten').then(m => ({ default: m.SettingsStammdatenPage }))); const SettingsUserManagementPage = React.lazy(() => import('@/pages/SettingsUserManagement').then(m => ({ default: m.SettingsUserManagementPage }))); @@ -118,6 +119,7 @@ const router = createBrowserRouter([ { path: 'theme', element: withSuspense() }, { path: 'automation', element: withSuspense() }, { path: 'mcp', element: withSuspense() }, + { path: 'ai-settings', element: withSuspense() }, { path: 'menu', element: withSuspense() }, { path: '*', element: }, ],