import { SidebarItem, SidebarItemAvatarWrapper, SidebarItemCol, SidebarItemRow, SidebarItemTitle, SidebarItemTimestamp, SidebarItemContent, SidebarItemMenu, IconButton, } from '@rocket.chat/fuselage'; import type { HTMLAttributes, ReactNode } from 'react'; import { memo } from 'react'; import { useDeferredMenuMount } from './useDeferredMenuMount'; import { useShortTimeAgo } from '../../hooks/useTimeAgo'; export type ExtendedProps = { icon?: ReactNode; title: ReactNode; avatar?: ReactNode; actions?: ReactNode; href?: string; time?: any; menu?: () => ReactNode; subtitle?: ReactNode; badges?: ReactNode; unread?: boolean; selected?: boolean; menuOptions?: any; titleIcon?: ReactNode; threadUnread?: boolean; } & Omit, 'is'>; const Extended = ({ icon, title, avatar, actions, href, time, menu, menuOptions: _menuOptions, subtitle = '', titleIcon, badges, threadUnread: _threadUnread, unread, selected, ...props }: ExtendedProps) => { const formatDate = useShortTimeAgo(); const { mounted: menuVisibility, requestMount, mountNow } = useDeferredMenuMount(); return ( {avatar && {avatar}} {icon} {title} {time && {formatDate(time)}} {subtitle} {titleIcon} {badges} {actions} {menu && ( {menuVisibility ? ( menu() ) : ( )} )} ); }; export default memo(Extended);