import { Fragment, memo } from 'react'; import clsx from 'clsx'; import Badge from '@mui/material/Badge'; import Box from '@mui/material/Box'; import Divider from '@mui/material/Divider'; import Grid from '@mui/material/Grid'; import IconButton from '@mui/material/IconButton'; import Typography from '@mui/material/Typography'; import { Avatar } from '../avatar'; import { CustomIcon } from '../custom-icon'; import { Link } from '../@navigation/link'; import { Button } from '../button'; import type { UserControlsProps } from './types'; import { trimSpaces } from '../../utils'; import { ASSETS_URL } from '../../consts/common'; import createClasses from './styles'; interface NotificationProps { notificationBadgeProps: UserControlsProps['notificationBadgeProps']; handleNotificationClick?: UserControlsProps['handleNotificationClick']; styles: ReturnType; } const Notification = memo((props: NotificationProps) => { const { notificationBadgeProps, styles } = props; return ( ); }); const UserControls = (props: UserControlsProps) => { const { name, userRole, avatarProps, notificationBadgeProps, showDividers, showIconSearch, showIconSettings, showIconNotification, iconButtons, classes, isNotificationOpen, userArrowCallback, handleNotificationClick } = props; const styles = createClasses({ badgeContent: Number(notificationBadgeProps?.badgeContent), userArrowCallback: !!userArrowCallback, isNotificationOpen: isNotificationOpen }); return ( {iconButtons?.map((iconButton, i) => { const { href = '', icon, title, onClick, linkProps = {}, testqa } = iconButton; const testIdName = testqa ? testqa : trimSpaces(title) ? trimSpaces(title) : i; return ( {showDividers && ( )} ); })} {showIconSearch && ( <> {showDividers && } )} {showIconNotification && ( <> {handleNotificationClick ? ( ) : ( )} {showDividers && } )} {showIconSettings && ( <> {showDividers && } )} {name} {userRole} ); }; UserControls.defaultProps = { avatarProps: { size: 'medium', backgroundColor: '#ffffff', emailVerified: true, src: '', initials: '' }, showIconSearch: true, showIconSettings: true, showIconNotification: true }; const m = memo(UserControls); export { m as UserControls };