'use client'; import { getRecipientType } from '@documenso/lib/client-only/recipient-type'; import { RECIPIENT_ROLES_DESCRIPTION } from '@documenso/lib/constants/recipient-roles'; import { recipientAbbreviation } from '@documenso/lib/utils/recipient-formatter'; import type { Recipient } from '@documenso/prisma/client'; import { PopoverHover } from '@documenso/ui/primitives/popover'; import { AvatarWithRecipient } from './avatar-with-recipient'; import { StackAvatar } from './stack-avatar'; import { StackAvatars } from './stack-avatars'; export type StackAvatarsWithTooltipProps = { recipients: Recipient[]; position?: 'top' | 'bottom'; children?: React.ReactNode; }; export const StackAvatarsWithTooltip = ({ recipients, position, children, }: StackAvatarsWithTooltipProps) => { const waitingRecipients = recipients.filter( (recipient) => getRecipientType(recipient) === 'waiting', ); const openedRecipients = recipients.filter( (recipient) => getRecipientType(recipient) === 'opened', ); const completedRecipients = recipients.filter( (recipient) => getRecipientType(recipient) === 'completed', ); const uncompletedRecipients = recipients.filter( (recipient) => getRecipientType(recipient) === 'unsigned', ); return ( } contentProps={{ className: 'flex flex-col gap-y-5 py-2', side: position, }} > {completedRecipients.length > 0 && (

Completed

{completedRecipients.map((recipient: Recipient) => (

{recipient.email}

{RECIPIENT_ROLES_DESCRIPTION[recipient.role].roleName}

))}
)} {waitingRecipients.length > 0 && (

Waiting

{waitingRecipients.map((recipient: Recipient) => ( ))}
)} {openedRecipients.length > 0 && (

Opened

{openedRecipients.map((recipient: Recipient) => ( ))}
)} {uncompletedRecipients.length > 0 && (

Uncompleted

{uncompletedRecipients.map((recipient: Recipient) => ( ))}
)}
); };