import AppBar from '@mui/material/AppBar'; import Box from '@mui/material/Box'; import { type Theme } from '@mui/material/styles'; import useMediaQuery from '@mui/material/useMediaQuery'; import { LocalizationProvider } from '@mui/x-date-pickers'; import { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns'; import React, { FC, useCallback, useEffect, useState } from 'react'; import { Outlet, useLocation } from 'react-router-dom'; import AppBody from 'components/AppBody'; import AppToolbar from 'components/toolbar/AppToolbar'; import ElevationScroll from 'components/ElevationScroll'; import { DRAWER_WIDTH } from 'components/ResponsiveDrawer'; import { useApi } from 'hooks/useApi'; import { useLocale } from 'hooks/useLocale'; import AppTabs from './components/AppTabs'; import AppDrawer from './components/drawer/AppDrawer'; import { DASHBOARD_APP_PATHS } from './routes/routes'; import './AppOverrides.scss'; const DRAWERLESS_PATHS = [ DASHBOARD_APP_PATHS.MetadataManager ]; export const Component: FC = () => { const [ isDrawerActive, setIsDrawerActive ] = useState(false); const location = useLocation(); const { user } = useApi(); const { dateFnsLocale } = useLocale(); const isMediumScreen = useMediaQuery((t: Theme) => t.breakpoints.up('md')); const isDrawerAvailable = Boolean(user) && !DRAWERLESS_PATHS.some(path => location.pathname.startsWith(`/${path}`)); const isDrawerOpen = isDrawerActive && isDrawerAvailable; const onToggleDrawer = useCallback(() => { setIsDrawerActive(!isDrawerActive); }, [ isDrawerActive, setIsDrawerActive ]); // Update body class useEffect(() => { document.body.classList.add('dashboardDocument'); return () => { document.body.classList.remove('dashboardDocument'); }; }, []); return ( { isDrawerAvailable && ( ) } ); };