UNPKG

create-ex-den-kit

Version:

Create exam projects with Ex-Den-Kit

78 lines (69 loc) 2.65 kB
import React, { useEffect } from 'react'; import { BrowserRouter as Router, Routes, Route, Navigate } from 'react-router-dom'; import { Toaster } from 'react-hot-toast'; import { AuthProvider } from './contexts/AuthContext'; import { ThemeProvider } from './contexts/ThemeContext'; import ProtectedRoute from './components/ProtectedRoute'; import Layout from './components/Layout'; // Pages import ThemeSelector from './pages/ThemeSelector'; import Login from './pages/Login'; import Register from './pages/Register'; import Dashboard from './pages/Dashboard'; import CreateEntry from './pages/CreateEntry'; import Archive from './pages/Archive'; import AdminLogin from './pages/AdminLogin'; import AdminDashboard from './pages/AdminDashboard'; function App() { return ( <Router> <ThemeProvider> <AuthProvider> <Toaster position="top-right" toastOptions={{ duration: 4000, style: { background: '#363636', color: '#fff', }, success: { style: { background: '#10B981', }, }, error: { style: { background: '#EF4444', }, }, }} /> <Routes> {/* Выбор темы */} <Route path="/theme" element={<ThemeSelector />} /> {/* Публичные маршруты */} <Route path="/login" element={<Login />} /> <Route path="/register" element={<Register />} /> <Route path="/admin/login" element={<AdminLogin />} /> {/* Защищенные маршруты пользователя */} <Route element={<ProtectedRoute />}> <Route element={<Layout />}> <Route path="/dashboard" element={<Dashboard />} /> <Route path="/create" element={<CreateEntry />} /> <Route path="/archive" element={<Archive />} /> </Route> </Route> {/* Защищенные маршруты админа */} <Route element={<ProtectedRoute adminOnly />}> <Route path="/admin/dashboard" element={<AdminDashboard />} /> </Route> {/* Редирект с главной */} <Route path="/" element={<Navigate to="/login" replace />} /> </Routes> </AuthProvider> </ThemeProvider> </Router> ); } export default App;