2023-08-27 22:08:18 +03:00
|
|
|
import { createBrowserRouter, Outlet, RouterProvider } from 'react-router-dom';
|
2023-07-15 17:46:19 +03:00
|
|
|
|
2023-09-03 18:26:50 +03:00
|
|
|
import ConceptToaster from './components/ConceptToaster';
|
2023-07-25 20:27:29 +03:00
|
|
|
import Footer from './components/Footer';
|
2023-11-26 02:24:16 +03:00
|
|
|
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
|
|
|
|
2023-08-27 22:08:18 +03:00
|
|
|
function Root() {
|
2023-09-05 00:23:53 +03:00
|
|
|
const { noNavigation, noFooter, viewportHeight, mainHeight, showScroll } = useConceptTheme();
|
2023-07-15 17:46:19 +03:00
|
|
|
return (
|
2023-11-27 11:33:34 +03:00
|
|
|
<NavigationState>
|
|
|
|
<div className='w-screen antialiased clr-app min-w-[30rem] overflow-hidden'>
|
|
|
|
|
|
|
|
<ConceptToaster
|
|
|
|
className='mt-[4rem] text-sm'
|
|
|
|
autoClose={3000}
|
|
|
|
draggable={false}
|
|
|
|
pauseOnFocusLoss={false}
|
|
|
|
/>
|
|
|
|
|
|
|
|
<Navigation />
|
|
|
|
|
|
|
|
<div id={globalIDs.main_scroll}
|
|
|
|
className='w-full overflow-x-auto overscroll-none'
|
|
|
|
style={{
|
|
|
|
maxHeight: viewportHeight,
|
|
|
|
overflowY: showScroll ? 'scroll': 'auto'
|
|
|
|
}}
|
|
|
|
>
|
|
|
|
<main className='w-full h-full min-w-fit' style={{minHeight: mainHeight}}>
|
|
|
|
<Outlet />
|
|
|
|
</main>
|
2023-09-05 00:23:53 +03:00
|
|
|
|
2023-11-27 11:33:34 +03:00
|
|
|
{(!noNavigation && !noFooter) ? <Footer /> : null}
|
2023-07-15 17:46:19 +03:00
|
|
|
</div>
|
2023-11-27 11:33:34 +03:00
|
|
|
</div>
|
|
|
|
</NavigationState>);
|
2023-07-15 17:46:19 +03:00
|
|
|
}
|
|
|
|
|
2023-08-27 22:08:18 +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 />,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
path: 'rsforms/:id',
|
|
|
|
element: <RSFormPage />,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
path: 'rsform-create',
|
|
|
|
element: <CreateRSFormPage />,
|
|
|
|
},
|
|
|
|
]
|
|
|
|
},
|
|
|
|
]);
|
|
|
|
|
|
|
|
function App () {
|
|
|
|
return (
|
|
|
|
<RouterProvider router={router} />
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
2023-07-25 20:27:29 +03:00
|
|
|
export default App;
|