import { useEffect } from 'react' import { BrowserRouter, Routes, Route, NavLink, useNavigate } from 'react-router-dom' import { LayoutDashboard, PlusSquare, TrendingUp, BarChart2, Settings, 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 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 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 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 './app.css' function Nav() { const links = [ { to:'/', icon:, label:'Übersicht' }, { to:'/capture', icon:, label:'Erfassen' }, { to:'/history', icon:, label:'Verlauf' }, { to:'/analysis', icon:, label:'Analyse' }, { to:'/settings', icon:, label:'Einst.' }, ] return ( ) } function AppShell() { const { session, loading: authLoading, needsSetup, logout } = useAuth() const { activeProfile, loading: profileLoading } = useProfile() const nav = useNavigate() 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 (
) // Verify email page if (currentPath === '/verify') return (
) // Password reset page const resetToken = urlParams.get('reset-password') || (currentPath === '/reset-password' ? urlParams.get('token') : null) if (resetToken) return (
Mitai Jinkendo
window.location.href='/'}/>
) // Auth loading if (authLoading) return (
) // First run if (needsSetup) return // Need to log in if (!session) return // Profile loading if (profileLoading) return (
) return (
Mitai Jinkendo
{activeProfile ? :
}
}/> }/> }/> }/> }/> }/> }/> }/> }/> }/> }/> }/> }/> }/> }/> }/> }/> }/> }/> }/> }/> }/> }/> }/> }/> }/> }/>
) } export default function App() { return ( ) }