import Link from 'next/link'; import { Clock, File, FileCheck } from 'lucide-react'; import { initials } from '@documenso/lib/client-only/recipient-initials'; import { type } from '@documenso/lib/client-only/recipient-type'; import { getRequiredServerComponentSession } from '@documenso/lib/next-auth/get-server-session'; import { findDocuments } from '@documenso/lib/server-only/document/find-documents'; import { getStats } from '@documenso/lib/server-only/document/get-stats'; import { Recipient } from '@documenso/prisma/client'; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from '@documenso/ui/primitives/table'; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from '@documenso/ui/primitives/tooltip'; import { StackAvatar } from '~/components/(dashboard)/avatar'; import { StackAvatars } from '~/components/(dashboard)/avatar/stack-avatars'; import { CardMetric } from '~/components/(dashboard)/metric-card/metric-card'; import { DocumentStatus } from '~/components/formatter/document-status'; import { LocaleDate } from '~/components/formatter/locale-date'; import { UploadDocument } from './upload-document'; export default async function DashboardPage() { const session = await getRequiredServerComponentSession(); const [stats, results] = await Promise.all([ getStats({ userId: session.id, }), findDocuments({ userId: session.id, perPage: 10, }), ]); return (

Dashboard

Recent Documents

ID Title Reciepient Status Created {results.data.map((document) => { const waitingRecipients = document.Recipient.filter( (recipient) => recipient.sendStatus === 'SENT' && recipient.signingStatus === 'NOT_SIGNED', ); const completedRecipients = document.Recipient.filter( (recipient) => recipient.sendStatus === 'SENT' && recipient.signingStatus === 'SIGNED', ); const uncompletedRecipients = document.Recipient.filter( (recipient) => recipient.sendStatus === 'NOT_SENT' && recipient.signingStatus === 'NOT_SIGNED', ); return ( {document.id} {document.title}
{completedRecipients.length > 0 && (

Completed

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

Waiting

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

Uncompleted

{uncompletedRecipients.map((recipient: Recipient) => (
{recipient.email}
))}
)}
); })} {results.data.length === 0 && ( No results. )}
); }