import { ReactNode, FC, VFC } from 'react'; import classnames from 'classnames'; import { Divider, styled, SxProps, Theme, Typography, TypographyProps, } from '@mui/material'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; import { useStyles } from './PageHeader.styles'; import { usePageTitle } from 'hooks/usePageTitle'; const StyledDivider = styled(Divider)(({ theme }) => ({ height: '100%', borderColor: theme.palette.dividerAlternative, width: '1px', display: 'inline-block', marginLeft: theme.spacing(2), marginRight: theme.spacing(2), padding: '10px 0', verticalAlign: 'middle', })); interface IPageHeaderProps { title?: string; titleElement?: ReactNode; subtitle?: string; variant?: TypographyProps['variant']; loading?: boolean; actions?: ReactNode; className?: string; secondary?: boolean; } const PageHeaderComponent: FC & { Divider: typeof PageHeaderDivider; } = ({ title, titleElement, actions, subtitle, variant, loading, className = '', secondary, children, }) => { const { classes: styles } = useStyles(); const headerClasses = classnames({ skeleton: loading }); usePageTitle(secondary ? '' : title); return (
{titleElement || title} {subtitle && {subtitle}}
{actions}
} />
{children} ); }; const PageHeaderDivider: VFC<{ sx?: SxProps }> = ({ sx }) => { return ; }; PageHeaderComponent.Divider = PageHeaderDivider; export const PageHeader = PageHeaderComponent;