import { getRecipientType } from '@documenso/lib/client-only/recipient-type'; import { recipientAbbreviation } from '@documenso/lib/utils/recipient-formatter'; import { Recipient } from '@documenso/prisma/client'; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from '@documenso/ui/primitives/tooltip'; 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 ( {children || }
{completedRecipients.length > 0 && (

Completed

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

Waiting

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

Opened

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

Uncompleted

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