import { Theme } from '@mui/material/styles'; import Box from '@mui/material/Box'; import Drawer from '@mui/material/Drawer'; import SwipeableDrawer from '@mui/material/SwipeableDrawer'; import Toolbar from '@mui/material/Toolbar'; import useMediaQuery from '@mui/material/useMediaQuery'; import React, { FC, useCallback } from 'react'; import browser from 'scripts/browser'; export const DRAWER_WIDTH = 240; export interface ResponsiveDrawerProps { hasSecondaryToolBar?: boolean open: boolean onClose: () => void onOpen: () => void } const ResponsiveDrawer: FC = ({ children, hasSecondaryToolBar = false, open = false, onClose, onOpen }) => { const isSmallScreen = useMediaQuery((theme: Theme) => theme.breakpoints.up('sm')); const isLargeScreen = useMediaQuery((theme: Theme) => theme.breakpoints.up('lg')); const getToolbarStyles = useCallback((theme: Theme) => ({ marginBottom: (hasSecondaryToolBar && !isLargeScreen) ? theme.spacing(6) : 0 }), [ hasSecondaryToolBar, isLargeScreen ]); return ( isSmallScreen ? ( /* DESKTOP DRAWER */ {children} ) : ( /* MOBILE DRAWER */ {children} )); }; export default ResponsiveDrawer;