import { Routes, Route, Navigate } from 'react-router-dom' import { useAuthStore } from '@/store/auth' // Layout import { Layout } from '@/components/layout/Layout' // Pages import { HomePage } from '@/pages/HomePage' import { LoginPage } from '@/pages/LoginPage' import { RegisterPage } from '@/pages/RegisterPage' import { MarathonsPage } from '@/pages/MarathonsPage' import { CreateMarathonPage } from '@/pages/CreateMarathonPage' import { MarathonPage } from '@/pages/MarathonPage' import { LobbyPage } from '@/pages/LobbyPage' import { PlayPage } from '@/pages/PlayPage' import { LeaderboardPage } from '@/pages/LeaderboardPage' import { InvitePage } from '@/pages/InvitePage' import { AssignmentDetailPage } from '@/pages/AssignmentDetailPage' // Protected route wrapper function ProtectedRoute({ children }: { children: React.ReactNode }) { const isAuthenticated = useAuthStore((state) => state.isAuthenticated) if (!isAuthenticated) { return } return <>{children} } // Public route wrapper (redirect if authenticated) function PublicRoute({ children }: { children: React.ReactNode }) { const isAuthenticated = useAuthStore((state) => state.isAuthenticated) if (isAuthenticated) { return } return <>{children} } function App() { return ( }> } /> {/* Public invite page */} } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> ) } export default App