import React from 'react' import { BrowserRouter as Router, Routes, Route, Navigate, NavLink, useLocation } from 'react-router-dom' import { AuthProvider, useAuth } from './context/AuthContext' import DesktopSidebar from './components/DesktopSidebar' import { getMainNavItems } from './config/appNav' import LoginPage from './pages/LoginPage' import Dashboard from './pages/Dashboard' import ProfilePage from './pages/ProfilePage' import ExercisesPage from './pages/ExercisesPage' import ClubsPage from './pages/ClubsPage' import SkillsPage from './pages/SkillsPage' import TrainingPlanningPage from './pages/TrainingPlanningPage' import AdminCatalogsPage from './pages/AdminCatalogsPage' import AdminHierarchyPage from './pages/AdminHierarchyPage' import TrainerContextsPage from './pages/TrainerContextsPage' import MediaWikiImportPage from './pages/MediaWikiImportPage' import './app.css' // Bottom Navigation (Mobile) function Nav({ isAdmin }) { const items = getMainNavItems(isAdmin) const loc = useLocation() const navItemActive = (pathname, item, routerIsActive) => { if (item.to.startsWith('/admin')) return pathname.startsWith('/admin') return routerIsActive } return ( ) } // Protected Route Component function ProtectedRoute({ children }) { const { isAuthenticated, loading, user, logout } = useAuth() const handleLogout = () => { if (confirm('Wirklich abmelden?')) { logout() window.location.href = '/' } } if (loading) { return (
) } if (!isAuthenticated) { return } const isAdmin = user?.role === 'admin' || user?.role === 'superadmin' return ( <>
🥋 Shinkan
{children}
) } // Public Route Component (redirect to dashboard if already logged in) function PublicRoute({ children }) { const { isAuthenticated, loading } = useAuth() if (loading) { return (
) } return !isAuthenticated ? children : } function AppRoutes() { return ( {/* Public Routes */} } /> {/* Protected Routes */} } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> {/* Catch all - redirect to dashboard or login */} } /> ) } function App() { return ( ) } export default App