Files
jobtrackingapp/vendor/saasable-ui-main/admin/nextjs/src/layouts/AdminLayout/index.jsx
T
2026-03-21 11:55:27 +01:00

62 lines
1.7 KiB
React

'use client';
import PropTypes from 'prop-types';
import { useEffect } from 'react';
import useMediaQuery from '@mui/material/useMediaQuery';
import Container from '@mui/material/Container';
import Toolbar from '@mui/material/Toolbar';
import Stack from '@mui/material/Stack';
import Box from '@mui/material/Box';
// @project
import Drawer from './Drawer';
import Header from './Header';
import { handlerDrawerOpen, useGetMenuMaster } from '@/states/menu';
import Breadcrumbs from '@/components/Breadcrumbs';
import Loader from '@/components/Loader';
import { DRAWER_WIDTH } from '@/config';
/*************************** ADMIN LAYOUT ***************************/
export default function DashboardLayout({ children }) {
const { menuMasterLoading } = useGetMenuMaster();
const downXL = useMediaQuery((theme) => theme.breakpoints.down('xl'));
useEffect(() => {
handlerDrawerOpen(!downXL);
}, [downXL]);
if (menuMasterLoading) return <Loader />;
return (
<Stack direction="row" width={1}>
<Header />
<Drawer />
<Box component="main" sx={{ width: `calc(100% - ${DRAWER_WIDTH}px)`, flexGrow: 1, p: { xs: 2, sm: 3 } }}>
<Toolbar sx={{ minHeight: { xs: 54, sm: 46, md: 76 } }} />
<Box
sx={{
py: 0.4,
px: 1.5,
mx: { xs: -2, sm: -3 },
display: { xs: 'block', md: 'none' },
borderBottom: 1,
borderColor: 'divider',
mb: 2
}}
>
<Breadcrumbs />
</Box>
<Container maxWidth="lg" sx={{ px: { xs: 0, sm: 2 } }}>
{children}
</Container>
</Box>
</Stack>
);
}
DashboardLayout.propTypes = { children: PropTypes.any };