'use client'; import type { HTMLAttributes } from 'react'; import Link from 'next/link'; import { Trans } from '@lingui/macro'; import { CheckCircle, EyeIcon, Pencil } from 'lucide-react'; import { DateTime } from 'luxon'; import { match } from 'ts-pattern'; import { type DocumentData, type Prisma, RecipientRole } from '@documenso/prisma/client'; import { SignatureIcon } from '@documenso/ui/icons/signature'; import { Button } from '@documenso/ui/primitives/button'; import { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle, SheetTrigger, } from '@documenso/ui/primitives/sheet'; import { DocumentStatus } from './document-status'; type GetNextInboxDocumentResult = | Prisma.DocumentGetPayload<{ select: { id: true; createdAt: true; title: true; status: true; Recipient: { select: { token: true; role: true; }; }; documentMeta: true; }; }>[] | null; export type NextInboxItemButtonProps = HTMLAttributes & { disabled?: boolean; documentData?: DocumentData; userEmail: string | undefined; nextInboxDocument: GetNextInboxDocumentResult; }; export const NextInboxItemButton = ({ className, documentData, nextInboxDocument, userEmail, disabled, ...props }: NextInboxItemButtonProps) => { return ( Sign Next Document Inbox Documents awaiting your signature or review {nextInboxDocument?.map((document) => { const recipient = document.Recipient[0]; return ( {document.title} {document.createdAt && ( Created {DateTime.fromJSDate(document.createdAt).toFormat('LLL ‘yy')} )} {match(recipient?.role) .with(RecipientRole.SIGNER, () => ( <> Sign > )) .with(RecipientRole.APPROVER, () => ( <> Approve > )) .otherwise(() => ( <> View > ))} ); })} ); };
{document.title}
Created {DateTime.fromJSDate(document.createdAt).toFormat('LLL ‘yy')}