Files
CASAN/AINative_OKR_CASAN5/frontend/src/App.tsx
T
2026-06-30 02:21:39 +09:00

31 lines
1.1 KiB
TypeScript

import { Navigate, Outlet, Route, Routes } from 'react-router-dom';
import { AppLayout } from './components/layout/AppLayout.js';
import { useAuth } from './hooks/useAuth.js';
import { CreateObjective } from './pages/CreateObjective.js';
import { Dashboard } from './pages/Dashboard.js';
import { KeyResultDetail } from './pages/KeyResultDetail.js';
import { Login } from './pages/Login.js';
import { OKRDetail } from './pages/OKRDetail.js';
function ProtectedRoute(): JSX.Element {
const { user } = useAuth();
return user === null ? <Navigate to="/login" replace /> : <Outlet />;
}
export function App(): JSX.Element {
return (
<Routes>
<Route path="/login" element={<Login />} />
<Route element={<ProtectedRoute />}>
<Route path="/" element={<AppLayout />}>
<Route index element={<Dashboard />} />
<Route path="objectives/new" element={<CreateObjective />} />
<Route path="objectives/:id" element={<OKRDetail />} />
<Route path="key-results/:id" element={<KeyResultDetail />} />
</Route>
</Route>
<Route path="*" element={<Navigate to="/" replace />} />
</Routes>
);
}