Files
how2ice 005cf56baf
Some checks failed
No response / noResponse (push) Has been cancelled
CI / Continuous releases (push) Has been cancelled
CI / test-dev (macos-latest) (push) Has been cancelled
CI / test-dev (ubuntu-latest) (push) Has been cancelled
CI / test-dev (windows-latest) (push) Has been cancelled
Maintenance / main (push) Has been cancelled
Scorecards supply-chain security / Scorecards analysis (push) Has been cancelled
CodeQL / Analyze (push) Has been cancelled
init project
2025-12-12 14:26:25 +09:00

95 lines
2.4 KiB
JavaScript

import * as React from 'react';
import { useTheme } from '@mui/material/styles';
import useMediaQuery from '@mui/material/useMediaQuery';
import Box from '@mui/material/Box';
import Toolbar from '@mui/material/Toolbar';
import { Outlet } from 'react-router';
import DashboardHeader from './DashboardHeader';
import DashboardSidebar from './DashboardSidebar';
import SitemarkIcon from './SitemarkIcon';
export default function DashboardLayout() {
const theme = useTheme();
const [isDesktopNavigationExpanded, setIsDesktopNavigationExpanded] =
React.useState(true);
const [isMobileNavigationExpanded, setIsMobileNavigationExpanded] =
React.useState(false);
const isOverMdViewport = useMediaQuery(theme.breakpoints.up('md'));
const isNavigationExpanded = isOverMdViewport
? isDesktopNavigationExpanded
: isMobileNavigationExpanded;
const setIsNavigationExpanded = React.useCallback(
(newExpanded) => {
if (isOverMdViewport) {
setIsDesktopNavigationExpanded(newExpanded);
} else {
setIsMobileNavigationExpanded(newExpanded);
}
},
[
isOverMdViewport,
setIsDesktopNavigationExpanded,
setIsMobileNavigationExpanded,
],
);
const handleToggleHeaderMenu = React.useCallback(
(isExpanded) => {
setIsNavigationExpanded(isExpanded);
},
[setIsNavigationExpanded],
);
const layoutRef = React.useRef(null);
return (
<Box
ref={layoutRef}
sx={{
position: 'relative',
display: 'flex',
overflow: 'hidden',
height: '100%',
width: '100%',
}}
>
<DashboardHeader
logo={<SitemarkIcon />}
title=""
menuOpen={isNavigationExpanded}
onToggleMenu={handleToggleHeaderMenu}
/>
<DashboardSidebar
expanded={isNavigationExpanded}
setExpanded={setIsNavigationExpanded}
container={layoutRef?.current ?? undefined}
/>
<Box
sx={{
display: 'flex',
flexDirection: 'column',
flex: 1,
minWidth: 0,
}}
>
<Toolbar sx={{ displayPrint: 'none' }} />
<Box
component="main"
sx={{
display: 'flex',
flexDirection: 'column',
flex: 1,
overflow: 'auto',
}}
>
<Outlet />
</Box>
</Box>
</Box>
);
}