all repos — caroster @ v8.2

[Octree] Group carpool to your event https://caroster.io

frontend/layouts/Default.tsx (view raw)

 1import {ReactNode} from 'react';
 2import Box from '@mui/material/Box';
 3import {Helmet} from 'react-helmet';
 4import GenericToolbar from '../containers/GenericToolbar';
 5import Banner from '../components/Banner';
 6import useMatomo from '../hooks/useMatomo';
 7import {ActionType} from '../containers/GenericMenu/Action';
 8
 9interface Props {
10  children: ReactNode;
11  Topbar?: ReactNode;
12  className?: string;
13  menuTitle?: string;
14  menuActions?: Array<ActionType>;
15  pageTitle?: string;
16  displayMenu?: boolean;
17  goBack?: boolean;
18  announcement?: string;
19}
20
21const DefaultLayout = (props: Props) => {
22  useMatomo();
23  const {
24    children,
25    Topbar = null,
26    className,
27    pageTitle = undefined,
28    displayMenu = true,
29    menuTitle = 'Caroster',
30    menuActions,
31    goBack = false,
32    announcement,
33  } = props;
34
35  return (
36    <div className={className}>
37      <Helmet>
38        <title>{pageTitle || menuTitle}</title>
39      </Helmet>
40      <Box display="flex" flexDirection="column" height="100vh" width="100%">
41        <Box position="sticky" top={0} zIndex={1100}>
42          <Banner announcement={announcement} />
43          {Topbar && <Topbar />}
44        </Box>
45        {displayMenu && (menuTitle || menuActions) && (
46          <GenericToolbar
47            title={menuTitle}
48            actions={menuActions}
49            goBack={goBack}
50          />
51        )}
52
53        {children}
54      </Box>
55    </div>
56  );
57};
58
59export default DefaultLayout;