Files
CyyNote/cyynote-frontend/src/App.tsx
T
2026-04-29 19:05:47 +08:00

38 lines
1.6 KiB
TypeScript

import { lazy, Suspense } from 'react';
import { Routes, Route, Navigate } from 'react-router';
import './App.css';
import ProtectedRoute from './components/ProtectedRoute';
const NotePage = lazy(() => import('./pages/note-page'));
const SignIn = lazy(() => import('./pages/sign-in'));
const Register = lazy(() => import('./components/register.component'));
const Profile = lazy(() => import('./components/profile.component'));
const BoardUser = lazy(() => import('./components/board-user.component'));
const BoardModerator = lazy(() => import('./components/board-moderator.component'));
const BoardAdmin = lazy(() => import('./components/board-admin.component'));
export default function App() {
return (
<Suspense fallback={<div style={{ padding: 24 }}>Loading</div>}>
<Routes>
{/* Public routes */}
<Route path="/login" element={<SignIn />} />
<Route path="/register" element={<Register />} />
{/* Protected routes */}
<Route element={<ProtectedRoute />}>
<Route path="/" element={<Navigate to="/home" replace />} />
<Route path="/home" element={<NotePage />} />
<Route path="/profile" element={<Profile />} />
<Route path="/user" element={<BoardUser />} />
<Route path="/mod" element={<BoardModerator />} />
<Route path="/admin" element={<BoardAdmin />} />
</Route>
{/* Fallback */}
<Route path="*" element={<Navigate to="/login" replace />} />
</Routes>
</Suspense>
);
}