ConceptPortal-public/rsconcept/frontend/src/App.tsx

106 lines
2.5 KiB
TypeScript
Raw Normal View History

import { createBrowserRouter, Outlet, RouterProvider } from 'react-router-dom';
2023-07-15 17:46:19 +03:00
import ConceptToaster from './components/ConceptToaster';
2023-07-25 20:27:29 +03:00
import Footer from './components/Footer';
import Navigation from './components/Navigation';
2023-09-05 00:23:53 +03:00
import { NavigationState } from './context/NagivationContext';
2023-08-03 17:34:55 +03:00
import { useConceptTheme } from './context/ThemeContext';
2023-07-28 00:03:37 +03:00
import CreateRSFormPage from './pages/CreateRSFormPage';
2023-07-15 17:46:19 +03:00
import HomePage from './pages/HomePage';
2023-07-28 00:03:37 +03:00
import LibraryPage from './pages/LibraryPage';
2023-07-15 17:46:19 +03:00
import LoginPage from './pages/LoginPage';
import ManualsPage from './pages/ManualsPage';
2023-07-25 20:27:29 +03:00
import NotFoundPage from './pages/NotFoundPage';
import RegisterPage from './pages/RegisterPage';
import RestorePasswordPage from './pages/RestorePasswordPage';
import RSFormPage from './pages/RSFormPage';
import UserProfilePage from './pages/UserProfilePage';
2023-09-05 00:23:53 +03:00
import { globalIDs } from './utils/constants';
2023-07-15 17:46:19 +03:00
function Root() {
2023-12-17 20:19:28 +03:00
const { viewportHeight, mainHeight, showScroll } = useConceptTheme();
2023-07-15 17:46:19 +03:00
return (
<NavigationState>
2023-12-17 20:19:28 +03:00
<div className='min-w-[30rem] clr-app antialiased'>
<ConceptToaster
className='mt-[4rem] text-sm'
autoClose={3000}
draggable={false}
pauseOnFocusLoss={false}
/>
<Navigation />
<div id={globalIDs.main_scroll}
className='overscroll-none min-w-fit overflow-y-auto'
style={{
maxHeight: viewportHeight,
overflowY: showScroll ? 'scroll': 'auto'
}}
>
<main
2023-12-17 20:19:28 +03:00
className='flex flex-col items-center'
style={{minHeight: mainHeight}}
>
<Outlet />
</main>
<Footer />
2023-07-15 17:46:19 +03:00
</div>
</div>
</NavigationState>);
2023-07-15 17:46:19 +03:00
}
const router = createBrowserRouter([
{
path: '/',
element: <Root />,
errorElement: <NotFoundPage />,
children: [
{
path: '',
element: <HomePage />,
},
{
path: 'login',
element: <LoginPage />,
},
{
path: 'signup',
element: <RegisterPage />,
},
{
path: 'restore-password',
element: <RestorePasswordPage />,
},
{
path: 'profile',
element: <UserProfilePage />,
},
{
path: 'manuals',
element: <ManualsPage />,
},
{
path: 'library',
element: <LibraryPage />,
},
{
2023-12-13 15:03:58 +03:00
path: 'library/create',
element: <CreateRSFormPage />,
},
{
2023-12-13 15:03:58 +03:00
path: 'rsforms/:id',
element: <RSFormPage />,
},
]
},
]);
function App () {
return (
<RouterProvider router={router} />
);
}
export default App;