import { useEffect } from 'react' import { BrowserRouter, Routes, Route, NavLink, useLocation } from 'react-router-dom' import { LogOut } from 'lucide-react' import { ProfileProvider, useProfile } from './context/ProfileContext' import { AuthProvider, useAuth } from './context/AuthContext' import { setProfileId } from './utils/api' import { Avatar } from './pages/ProfileSelect' import SetupScreen from './pages/SetupScreen' import { ResetPassword } from './pages/PasswordRecovery' import LoginScreen from './pages/LoginScreen' import Register from './pages/Register' import Verify from './pages/Verify' import Dashboard from './pages/Dashboard' import CaptureShell from './layouts/CaptureShell' import CaptureHub from './pages/CaptureHub' import WeightScreen from './pages/WeightScreen' import CircumScreen from './pages/CircumScreen' import CaliperScreen from './pages/CaliperScreen' import MeasureWizard from './pages/MeasureWizard' import History from './pages/History' import NutritionPage from './pages/NutritionPage' import ActivityPage from './pages/ActivityPage' import Analysis from './pages/Analysis' import SettingsPage from './pages/SettingsPage' import SettingsShell from './layouts/SettingsShell' import ProfileReferenceValuesPage from './pages/ProfileReferenceValuesPage' import PilotVizPage from './pages/PilotVizPage' import DashboardLabPage from './pages/DashboardLabPage' import DashboardConfigurePage from './pages/DashboardConfigurePage' import GuidePage from './pages/GuidePage' import AdminTierLimitsPage from './pages/AdminTierLimitsPage' import AdminFeaturesPage from './pages/AdminFeaturesPage' import AdminTiersPage from './pages/AdminTiersPage' import AdminCouponsPage from './pages/AdminCouponsPage' import AdminUserRestrictionsPage from './pages/AdminUserRestrictionsPage' import AdminTrainingTypesPage from './pages/AdminTrainingTypesPage' import AdminActivityMappingsPage from './pages/AdminActivityMappingsPage' import AdminTrainingProfiles from './pages/AdminTrainingProfiles' import AdminPromptsPage from './pages/AdminPromptsPage' import AdminGoalTypesPage from './pages/AdminGoalTypesPage' import AdminFocusAreasPage from './pages/AdminFocusAreasPage' import AdminReferenceValueTypesPage from './pages/AdminReferenceValueTypesPage' import AdminWidgetFeatureAssignmentsPage from './pages/AdminWidgetFeatureAssignmentsPage' import AdminHomePage from './pages/AdminHomePage' import AdminUsersPage from './pages/AdminUsersPage' import AdminSystemPage from './pages/AdminSystemPage' import AdminGroupHubPage from './pages/AdminGroupHubPage' import RequireAdmin from './layouts/RequireAdmin' import AdminShell from './layouts/AdminShell' import SubscriptionPage from './pages/SubscriptionPage' import SleepPage from './pages/SleepPage' import RestDaysPage from './pages/RestDaysPage' import VitalsPage from './pages/VitalsPage' import GoalsPage from './pages/GoalsPage' import CustomGoalsPage from './pages/CustomGoalsPage' import UniversalCsvImportPage from './pages/UniversalCsvImportPage' import AdminCsvTemplatesPage from './pages/AdminCsvTemplatesPage' import AdminCsvTemplateEditorPage from './pages/AdminCsvTemplateEditorPage' import WorkflowEditorPage from './pages/WorkflowEditorPage' import DesktopSidebar from './components/DesktopSidebar' import { getMainNavItems } from './config/appNav' import { isCaptureSectionPath } from './config/captureNav' import './app.css' function navItemActive(pathname, item, routerIsActive) { if (item.to.startsWith('/admin')) return pathname.startsWith('/admin') if (item.to === '/capture' && isCaptureSectionPath(pathname)) return true return routerIsActive } function Nav({ isAdmin }) { const items = getMainNavItems(isAdmin) const loc = useLocation() return ( ) } function AppShell() { const { session, loading: authLoading, needsSetup, logout, isAdmin } = useAuth() const { activeProfile, loading: profileLoading } = useProfile() const handleLogout = () => { if (confirm('Wirklich abmelden?')) { logout() window.location.href = '/' } } useEffect(()=>{ if (session?.profile_id) { setProfileId(session.profile_id) localStorage.setItem('mitai-jinkendo_active_profile', session.profile_id) } }, [session?.profile_id]) // Handle public pages (register, verify, reset-password) const urlParams = new URLSearchParams(window.location.search) const currentPath = window.location.pathname // Register page if (currentPath === '/register') return (