import { ArrowBack, Search } from '@mui/icons-material'; import { LoadingButton } from '@mui/lab'; import { Box, Grid, InputAdornment, TextField, Typography, } from '@mui/material'; import { debounce } from 'lodash'; import React, { useMemo } from 'react'; import { useNavigate } from 'react-router'; import { pxToRem } from '../theme/typography'; import { useStyles } from './styles/pageHeaderStyles'; function PageHeader({ showGoBack, pageTitle, hideAddButton = false, addButtonTitle, addButtonIcon, buttonVariant = 'contained', onAddButtonClick, addButtonDisabled, extraComponent, showSearch, onSearch, searchPlaceholder, isDetailPage, addButtonLoading, handleGoBack, secondaryButton, customChips, titleAlignItems, }) { const classes = useStyles(); const navigate = useNavigate(); const debouncedSearch = onSearch && useMemo(() => debounce(onSearch, 500), []); // Function to render button with icon if provided const renderButton = (disabled) => { if (addButtonIcon) { return ( {addButtonTitle ?? 'Add'} ); } else { return ( {addButtonTitle ?? 'Add'} ); } }; return ( {showGoBack && ( { handleGoBack ? handleGoBack() : navigate(-1); }} /> )}
{pageTitle} {customChips}
{showSearch && ( ), }} /> )} {extraComponent} {secondaryButton && ( {secondaryButton} )} {!hideAddButton && renderButton(addButtonDisabled)}
); } export default PageHeader;