import { BrowserRouter as Router, Routes, Route, useLocation, Navigate } from 'react-router-dom'; import { AuthProvider, useAuth } from './contexts/AuthContext'; import { ProtectedRoute } from './components/ProtectedRoute'; import AppLayout from './components/AppLayout'; import { PageLoader } from './components/AnimatedComponents'; import { CityProvider, useCity } from './contexts/CityContext'; // Pages import LoginPage from './pages/LoginPage'; import Dashboard from './pages/Dashboard'; import RoutesPage from './pages/RoutesPage'; import RouteEditorPage from './pages/RouteEditorPage'; import StopsPage from './pages/StopsPage'; import SchedulesPage from './pages/SchedulesPage'; import ScheduleImportPage from './pages/ScheduleImportPage'; import QualityPage from './pages/QualityPage'; import HolidaysPage from './pages/HolidaysPage'; import AlertsPage from './pages/AlertsPage'; import UsersPage from './pages/UsersPage'; import ProfilePage from './pages/ProfilePage'; import CitiesPage from './pages/CitiesPage'; function App() { return ( ); } function AppContent() { const { isAuthenticated, loading } = useAuth(); if (loading) return ; if (!isAuthenticated) { return ( } /> } /> ); } return ; } function CityWorkspace() { const { loading, error, activeCity } = useCity(); if (loading) return ; if (error || !activeCity) return

Города недоступны

{error || 'В системе нет активных городов.'}

; return ; } function AnimatedRoutes({ cityId }) { const location = useLocation(); const { isAdmin } = useAuth(); return (
} /> } /> } /> } /> } /> } /> } /> } /> } /> } /> {isAdmin && } />} {isAdmin && ( } /> )} } />
); } export default App;