2024-02-18 01:44:48 -05:00
|
|
|
// ** React Imports
|
|
|
|
import { ReactNode } from 'react'
|
|
|
|
|
|
|
|
// ** MUI Imports
|
|
|
|
import { styled, useTheme } from '@mui/material/styles'
|
|
|
|
import MuiAppBar, { AppBarProps } from '@mui/material/AppBar'
|
|
|
|
import MuiToolbar, { ToolbarProps } from '@mui/material/Toolbar'
|
|
|
|
|
|
|
|
// ** Type Import
|
2024-02-27 21:37:43 -05:00
|
|
|
import { Settings } from '../../../../context/settingsContext'
|
2024-02-18 01:44:48 -05:00
|
|
|
|
|
|
|
interface Props {
|
|
|
|
hidden: boolean
|
|
|
|
settings: Settings
|
|
|
|
toggleNavVisibility: () => void
|
|
|
|
saveSettings: (values: Settings) => void
|
|
|
|
verticalAppBarContent?: (props?: any) => ReactNode
|
|
|
|
}
|
|
|
|
|
|
|
|
const AppBar = styled(MuiAppBar)<AppBarProps>(({ theme }) => ({
|
|
|
|
transition: 'none',
|
|
|
|
alignItems: 'center',
|
|
|
|
justifyContent: 'center',
|
|
|
|
padding: theme.spacing(0, 6),
|
|
|
|
backgroundColor: 'transparent',
|
|
|
|
color: theme.palette.text.primary,
|
|
|
|
minHeight: theme.mixins.toolbar.minHeight,
|
|
|
|
[theme.breakpoints.down('sm')]: {
|
|
|
|
paddingLeft: theme.spacing(4),
|
|
|
|
paddingRight: theme.spacing(4)
|
|
|
|
}
|
|
|
|
}))
|
|
|
|
|
|
|
|
const Toolbar = styled(MuiToolbar)<ToolbarProps>(({ theme }) => ({
|
|
|
|
width: '100%',
|
|
|
|
borderBottomLeftRadius: 10,
|
|
|
|
borderBottomRightRadius: 10,
|
|
|
|
padding: `${theme.spacing(0)} !important`,
|
|
|
|
minHeight: `${theme.mixins.toolbar.minHeight}px !important`,
|
|
|
|
transition:
|
|
|
|
'padding .25s ease-in-out, box-shadow .25s ease-in-out, backdrop-filter .25s ease-in-out, background-color .25s ease-in-out'
|
|
|
|
}))
|
|
|
|
|
|
|
|
const LayoutAppBar = (props: Props) => {
|
|
|
|
// ** Props
|
|
|
|
const { settings, verticalAppBarContent: userVerticalAppBarContent } = props
|
|
|
|
|
|
|
|
// ** Hooks
|
|
|
|
const theme = useTheme()
|
|
|
|
|
|
|
|
// ** Vars
|
|
|
|
const { contentWidth } = settings
|
|
|
|
|
|
|
|
return (
|
|
|
|
<AppBar elevation={0} color='default' className='layout-navbar' position='static'>
|
|
|
|
<Toolbar
|
|
|
|
className='navbar-content-container'
|
|
|
|
sx={{
|
|
|
|
...(contentWidth === 'boxed' && {
|
|
|
|
'@media (min-width:1440px)': { maxWidth: `calc(1440px - ${theme.spacing(6)} * 2)` }
|
|
|
|
})
|
|
|
|
}}
|
|
|
|
>
|
|
|
|
{(userVerticalAppBarContent && userVerticalAppBarContent(props)) || null}
|
|
|
|
</Toolbar>
|
|
|
|
</AppBar>
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
export default LayoutAppBar
|