import Link from 'next/link'; import { getRequiredServerComponentSession } from '@documenso/lib/next-auth/get-server-component-session'; import { findDocuments } from '@documenso/lib/server-only/document/find-documents'; import { getStats } from '@documenso/lib/server-only/document/get-stats'; import { isExtendedDocumentStatus } from '@documenso/prisma/guards/is-extended-document-status'; import { ExtendedDocumentStatus } from '@documenso/prisma/types/extended-document-status'; import { Tabs, TabsList, TabsTrigger } from '@documenso/ui/primitives/tabs'; import { PeriodSelector } from '~/components/(dashboard)/period-selector/period-selector'; import type { PeriodSelectorValue } from '~/components/(dashboard)/period-selector/types'; import { isPeriodSelectorValue } from '~/components/(dashboard)/period-selector/types'; import { DocumentStatus } from '~/components/formatter/document-status'; import { DocumentsDataTable } from './data-table'; import { EmptyDocumentState } from './empty-state'; import { UploadDocument } from './upload-document'; export type DocumentsPageProps = { searchParams?: { status?: ExtendedDocumentStatus; period?: PeriodSelectorValue; page?: string; perPage?: string; }; }; export default async function DocumentsPage({ searchParams = {} }: DocumentsPageProps) { const { user } = await getRequiredServerComponentSession(); const stats = await getStats({ user, }); const status = isExtendedDocumentStatus(searchParams.status) ? searchParams.status : 'ALL'; const period = isPeriodSelectorValue(searchParams.period) ? searchParams.period : ''; const page = Number(searchParams.page) || 1; const perPage = Number(searchParams.perPage) || 20; const results = await findDocuments({ userId: user.id, status, orderBy: { column: 'createdAt', direction: 'desc', }, page, perPage, period, }); const getTabHref = (value: typeof status) => { const params = new URLSearchParams(searchParams); params.set('status', value); if (params.has('page')) { params.delete('page'); } return `/documents?${params.toString()}`; }; return (

Documents

{[ ExtendedDocumentStatus.INBOX, ExtendedDocumentStatus.PENDING, ExtendedDocumentStatus.COMPLETED, ExtendedDocumentStatus.DRAFT, ExtendedDocumentStatus.ALL, ].map((value) => ( {value !== ExtendedDocumentStatus.ALL && ( {Math.min(stats[value], 99)} {stats[value] > 99 && '+'} )} ))}
{results.count > 0 && } {results.count === 0 && }
); }