Files
profi-frontend/src/App.tsx

85 lines
2.4 KiB
TypeScript
Raw Normal View History

2025-05-30 19:32:58 +03:00
// App.tsx
2025-06-01 21:39:44 +03:00
import {BrowserRouter as Router, Routes, Route, Link, Navigate, Outlet, useNavigate} from 'react-router-dom';
2025-05-30 19:32:58 +03:00
import {MainPage} from "./pages/MainPage.tsx";
2025-05-31 10:57:27 +03:00
import {SurveyPage} from "./pages/SurveyPage.tsx";
import {DashboardPage} from "./pages/DashboardPage.tsx";
2025-06-01 00:52:20 +03:00
import { SurveyResultPage } from './pages/SurveyResultPage.tsx';
2025-06-01 16:48:44 +03:00
import { ProfessionPage } from './pages/ProfessionPage.tsx';
2025-06-01 21:39:44 +03:00
import React, {useEffect} from "react";
import {LoginPage} from "./pages/LoginPage.tsx";
import {UserProvider} from "./utils/users/UserProvider.tsx";
import {useUser} from "./utils/users/UseUser.ts";
2025-05-31 10:57:27 +03:00
2025-05-19 19:24:27 +03:00
2025-05-30 19:32:58 +03:00
export default function App() {
return (
2025-06-01 21:39:44 +03:00
<UserProvider>
<Router>
<Routes>
<Route path="/login/" element={<LoginPage />} />
<Route path="/dashboard/*" element={<DashboardLayout />}>
<Route index element={<DashboardPage />} />
</Route>
<Route path="/" element={<MainLayout />}>
<Route index element={<MainPage />} />
<Route path="/surveys/results/:scoreVariableId/" element={<SurveyResultPage />} />
<Route path="/surveys/professions/:professionId/" element={<ProfessionPage />} />
<Route path="/surveys/:surveyId/" element={<SurveyPage />} />
</Route>
<Route path="*" element={<Navigate to="/" />} />
</Routes>
</Router>
</UserProvider>
);
}
export function DashboardLayout() {
const { user } = useUser();
const navigate = useNavigate();
useEffect(() => {
if (!user) {
navigate("/login/")
}
}, [navigate, user]);
if (!user){
return null;
}
return (
<>
<div className="header">
<h1 className="logo">Pro-Fi</h1>
</div>
<div className="content">
<Outlet />
</div>
</>
);
}
function MainLayout() {
return (
<>
2025-05-31 10:57:27 +03:00
<div className="header">
<Link to="/dashboard" className="menu-button"></Link>
<h1 className="logo">Pro-Fi Test</h1>
</div>
2025-06-01 21:39:44 +03:00
<div className="content">
<Outlet />
</div>
</>
2025-05-30 19:32:58 +03:00
);
2025-06-01 21:39:44 +03:00
}