diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index 5f05dae..65c338e 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -1,4 +1,4 @@ -import React from 'react' +import React, { Suspense, lazy } from 'react' import { RouterProvider, createBrowserRouter, @@ -12,45 +12,66 @@ import { ToastProvider } from './context/ToastContext' import { OrgInboxProvider, useOrgInbox } from './context/OrgInboxContext' import DesktopSidebar from './components/DesktopSidebar' import { getMainNavItems } from './config/appNav' -import LoginPage from './pages/LoginPage' -import VerifyPage from './pages/VerifyPage' -import Dashboard from './pages/Dashboard' -import AccountSettingsPage from './pages/AccountSettingsPage' -import SettingsSystemInfoPage from './pages/SettingsSystemInfoPage' -import ExercisesListPage from './pages/ExercisesListPage' -import ExerciseDetailPage from './pages/ExerciseDetailPage' -import ExerciseFormPage from './pages/ExerciseFormPage' -import ClubsPage from './pages/ClubsPage' -import InboxPage from './pages/InboxPage' -import SkillsPage from './pages/SkillsPage' -import TrainingPlanningPage from './pages/TrainingPlanningPage' -import TrainingFrameworkProgramsListPage from './pages/TrainingFrameworkProgramsListPage' -import TrainingFrameworkProgramEditPage from './pages/TrainingFrameworkProgramEditPage' -import TrainingModulesListPage from './pages/TrainingModulesListPage' -import TrainingModuleEditPage from './pages/TrainingModuleEditPage' -import TrainingUnitRunPage from './pages/TrainingUnitRunPage' -import TrainingCoachPage from './pages/TrainingCoachPage' -import AdminCatalogsPage from './pages/AdminCatalogsPage' -import AdminHierarchyPage from './pages/AdminHierarchyPage' -import AdminMaturityModelsPage from './pages/AdminMaturityModelsPage' -import TrainerContextsPage from './pages/TrainerContextsPage' -import MediaWikiImportPage from './pages/MediaWikiImportPage' -import AdminUsersPage from './pages/AdminUsersPage' import AdminHomeRedirect from './components/AdminHomeRedirect' import PlatformAdminRoute from './components/PlatformAdminRoute' -import MediaLibraryPage from './pages/MediaLibraryPage' -import LegalPage from './pages/LegalPage' -import AdminLegalDocumentsPage from './pages/AdminLegalDocumentsPage' -import SettingsLegalPage from './pages/SettingsLegalPage' import ActiveClubSwitcher from './components/ActiveClubSwitcher' import InactiveMembershipBanner from './components/InactiveMembershipBanner' import './app.css' +const LoginPage = lazy(() => import('./pages/LoginPage')) +const VerifyPage = lazy(() => import('./pages/VerifyPage')) +const Dashboard = lazy(() => import('./pages/Dashboard')) +const AccountSettingsPage = lazy(() => import('./pages/AccountSettingsPage')) +const SettingsSystemInfoPage = lazy(() => import('./pages/SettingsSystemInfoPage')) +const ExercisesListPage = lazy(() => import('./pages/ExercisesListPage')) +const ExerciseDetailPage = lazy(() => import('./pages/ExerciseDetailPage')) +const ExerciseFormPage = lazy(() => import('./pages/ExerciseFormPage')) +const ClubsPage = lazy(() => import('./pages/ClubsPage')) +const InboxPage = lazy(() => import('./pages/InboxPage')) +const SkillsPage = lazy(() => import('./pages/SkillsPage')) +const TrainingPlanningPage = lazy(() => import('./pages/TrainingPlanningPage')) +const TrainingFrameworkProgramsListPage = lazy(() => + import('./pages/TrainingFrameworkProgramsListPage'), +) +const TrainingFrameworkProgramEditPage = lazy(() => + import('./pages/TrainingFrameworkProgramEditPage'), +) +const TrainingModulesListPage = lazy(() => import('./pages/TrainingModulesListPage')) +const TrainingModuleEditPage = lazy(() => import('./pages/TrainingModuleEditPage')) +const TrainingUnitRunPage = lazy(() => import('./pages/TrainingUnitRunPage')) +const TrainingCoachPage = lazy(() => import('./pages/TrainingCoachPage')) +const AdminCatalogsPage = lazy(() => import('./pages/AdminCatalogsPage')) +const AdminHierarchyPage = lazy(() => import('./pages/AdminHierarchyPage')) +const AdminMaturityModelsPage = lazy(() => import('./pages/AdminMaturityModelsPage')) +const TrainerContextsPage = lazy(() => import('./pages/TrainerContextsPage')) +const MediaWikiImportPage = lazy(() => import('./pages/MediaWikiImportPage')) +const AdminUsersPage = lazy(() => import('./pages/AdminUsersPage')) +const MediaLibraryPage = lazy(() => import('./pages/MediaLibraryPage')) +const LegalPage = lazy(() => import('./pages/LegalPage')) +const AdminLegalDocumentsPage = lazy(() => import('./pages/AdminLegalDocumentsPage')) +const SettingsLegalPage = lazy(() => import('./pages/SettingsLegalPage')) + /** Shield „Admin“: nur Super-Admin (global). Vereinsorga: Vereine → Mitglieder. */ function computeShowAdminNav(currentUser) { return currentUser?.role === 'superadmin' } +function AppRouteFallback() { + return ( +