/** * App.tsx * * Haupt-App-Komponente mit Multi-Tenant Router-Setup. * * URL-Struktur: * - / → Dashboard/Übersicht * - /settings → Benutzer-Einstellungen * - /gdpr → GDPR / Datenschutz * - /mandates/:mandateId/:featureCode/:instanceId/* → Feature-Instanz-Routen * - /admin/* → System-Administration (nur SysAdmin) */ import { BrowserRouter as Router, Routes, Route, Navigate } from 'react-router-dom'; import { useEffect } from 'react'; // Import global CSS reset first import './index.css'; // Auth Pages (Public) import Login from './pages/Login'; import Register from './pages/Register'; import PasswordResetRequest from './pages/PasswordResetRequest'; import Reset from './pages/Reset'; import { InvitePage } from './pages/InvitePage'; // Providers import { AuthProvider } from './providers/auth/AuthProvider'; import { ProtectedRoute } from './providers/auth/ProtectedRoute'; import { LanguageProvider } from './providers/language/LanguageContext'; import { ToastProvider } from './contexts/ToastContext'; import { WorkflowSelectionProvider } from './contexts/WorkflowSelectionContext'; import { FileProvider } from './contexts/FileContext'; import { MainLayout } from './layouts/MainLayout'; import { FeatureLayout } from './layouts/FeatureLayout'; import { DashboardPage } from './pages/Dashboard'; import { SettingsPage } from './pages/Settings'; import { GDPRPage } from './pages/GDPR'; import StorePage from './pages/Store'; import { FeatureViewPage } from './pages/FeatureView'; import { AccessManagementHub, AdminMandatesPage, AdminUsersPage, AdminUserMandatesPage, AdminFeatureAccessPage, AdminInvitationsPage, AdminMandateRolesPage, AdminFeatureRolesPage, AdminFeatureInstanceUsersPage, AdminMandateRolePermissionsPage, AdminUserAccessOverviewPage, AdminAutomationEventsPage, AdminAutomationLogsPage, AdminLogsPage } from './pages/admin'; import { AdminMandateWizardPage, AdminInvitationWizardPage } from './pages/admin/wizards'; import { PromptsPage, FilesPage, ConnectionsPage } from './pages/basedata'; import { BillingDataView, BillingAdmin, BillingMandateView, AdminSubscriptionsPage } from './pages/billing'; function App() { // Load saved theme preference and set app name on app mount useEffect(() => { // Set app name globally using configuration import('../config/config').then(({ getAppName }) => { const appName = getAppName(); document.title = appName; }); // Load saved theme preference const savedTheme = localStorage.getItem('theme'); const prefersDark = savedTheme === 'dark' || (!savedTheme && window.matchMedia('(prefers-color-scheme: dark)').matches); if (prefersDark) { document.documentElement.classList.add('dark-theme'); document.documentElement.classList.remove('light-theme'); } else { document.documentElement.classList.add('light-theme'); document.documentElement.classList.remove('dark-theme'); } document.documentElement.setAttribute('data-theme', prefersDark ? 'dark' : 'light'); }, []); return ( {/* ================================================== */} {/* PUBLIC AUTH ROUTES - NO AUTHENTICATION REQUIRED */} {/* ================================================== */} } /> } /> } /> } /> } /> {/* ================================================== */} {/* PROTECTED ROUTES - REQUIRE AUTHENTICATION */} {/* ================================================== */} }> {/* Dashboard (Root) */} } /> {/* System-Seiten (ohne Instanz-Kontext) */} } /> } /> } /> {/* ============================================== */} {/* BASISDATEN ROUTES (global) */} {/* ============================================== */} } /> } /> } /> {/* ============================================== */} {/* BILLING ROUTES */} {/* ============================================== */} } /> } /> {/* Legacy top-level routes – redirect to dashboard (migrated to feature-instance routes) */} } /> } /> } /> {/* ============================================== */} {/* FEATURE-INSTANZ ROUTES */} {/* /mandates/:mandateId/:featureCode/:instanceId */} {/* ============================================== */} } > {/* Feature Views - dynamisch basierend auf featureCode */} } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> {/* Automation Feature Views */} } /> } /> } /> {/* Workspace + Automation2 Editor */} } /> } /> {/* Automation2 Workflows & Tasks */} } /> } /> {/* Teams Bot Feature Views */} } /> } /> {/* CommCoach Feature Views */} } /> } /> {/* Catch-all für unbekannte Sub-Pfade */} } /> {/* ============================================== */} {/* ADMIN ROUTES (nur SysAdmin) */} {/* ============================================== */} } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> {/* ================================================== */} {/* CATCH-ALL - Redirect to Dashboard */} {/* ================================================== */} } /> ); } export default App;