ConceptPortal-public/rsconcept/frontend/src/app/ApplicationLayout.tsx

46 lines
1.4 KiB
TypeScript
Raw Normal View History

2024-12-05 15:46:23 +03:00
import { Suspense } from 'react';
2024-11-25 19:53:20 +03:00
import { Outlet } from 'react-router';
import ConceptToaster from '@/app/ConceptToaster';
import Footer from '@/app/Footer';
import Navigation from '@/app/Navigation';
2024-12-05 15:46:23 +03:00
import Loader from '@/components/ui/Loader';
import { useConceptOptions } from '@/context/ConceptOptionsContext';
import { NavigationState } from '@/context/NavigationContext';
import { globals } from '@/utils/constants';
function ApplicationLayout() {
2024-04-01 19:07:20 +03:00
const { viewportHeight, mainHeight, showScroll } = useConceptOptions();
return (
<NavigationState>
<div className='min-w-[20rem] antialiased h-full max-w-[120rem] mx-auto'>
<ConceptToaster
2024-08-24 19:41:29 +03:00
className='mt-[4rem] text-[14px]' // prettier: split lines
autoClose={3000}
draggable={false}
pauseOnFocusLoss={false}
/>
<Navigation />
<div
id={globals.main_scroll}
2024-08-24 11:21:02 +03:00
className='overflow-x-auto max-w-[100vw]'
style={{
2024-06-05 13:00:28 +03:00
maxHeight: viewportHeight
}}
>
2024-09-21 20:04:07 +03:00
<main className='cc-scroll-y' style={{ overflowY: showScroll ? 'scroll' : 'auto', minHeight: mainHeight }}>
2024-12-05 15:46:23 +03:00
<Suspense fallback={<Loader />}>
<Outlet />
</Suspense>
</main>
<Footer />
</div>
</div>
</NavigationState>
);
}
export default ApplicationLayout;