import { Trans } from '@lingui/macro'; import type { Field, Recipient } from '@prisma/client'; import { FieldType, RecipientRole } from '@prisma/client'; import { match } from 'ts-pattern'; import { DEFAULT_DOCUMENT_DATE_FORMAT } from '@documenso/lib/constants/date-formats'; import { PDF_VIEWER_PAGE_SELECTOR } from '@documenso/lib/constants/pdf-viewer'; import { DEFAULT_DOCUMENT_TIME_ZONE } from '@documenso/lib/constants/time-zones'; import type { DocumentAndSender } from '@documenso/lib/server-only/document/get-document-by-token'; import { ZCheckboxFieldMeta, ZDropdownFieldMeta, ZNumberFieldMeta, ZRadioFieldMeta, ZTextFieldMeta, } from '@documenso/lib/types/field-meta'; import type { CompletedField } from '@documenso/lib/types/fields'; import type { FieldWithSignatureAndFieldMeta } from '@documenso/prisma/types/field-with-signature-and-fieldmeta'; import { Card, CardContent } from '@documenso/ui/primitives/card'; import { ElementVisible } from '@documenso/ui/primitives/element-visible'; import { LazyPDFViewer } from '@documenso/ui/primitives/lazy-pdf-viewer'; import { DocumentSigningAutoSign } from '~/components/general/document-signing/document-signing-auto-sign'; import { DocumentSigningCheckboxField } from '~/components/general/document-signing/document-signing-checkbox-field'; import { DocumentSigningDateField } from '~/components/general/document-signing/document-signing-date-field'; import { DocumentSigningDropdownField } from '~/components/general/document-signing/document-signing-dropdown-field'; import { DocumentSigningEmailField } from '~/components/general/document-signing/document-signing-email-field'; import { DocumentSigningForm } from '~/components/general/document-signing/document-signing-form'; import { DocumentSigningInitialsField } from '~/components/general/document-signing/document-signing-initials-field'; import { DocumentSigningNameField } from '~/components/general/document-signing/document-signing-name-field'; import { DocumentSigningNumberField } from '~/components/general/document-signing/document-signing-number-field'; import { DocumentSigningRadioField } from '~/components/general/document-signing/document-signing-radio-field'; import { DocumentSigningRejectDialog } from '~/components/general/document-signing/document-signing-reject-dialog'; import { DocumentSigningSignatureField } from '~/components/general/document-signing/document-signing-signature-field'; import { DocumentSigningTextField } from '~/components/general/document-signing/document-signing-text-field'; import { DocumentReadOnlyFields } from '~/components/general/document/document-read-only-fields'; export type SigningPageViewProps = { document: DocumentAndSender; recipient: Recipient; fields: Field[]; completedFields: CompletedField[]; isRecipientsTurn: boolean; }; export const DocumentSigningPageView = ({ document, recipient, fields, completedFields, isRecipientsTurn, }: SigningPageViewProps) => { const { documentData, documentMeta } = document; const shouldUseTeamDetails = document.teamId && document.team?.teamGlobalSettings?.includeSenderDetails === false; let senderName = document.user.name ?? ''; let senderEmail = `(${document.user.email})`; if (shouldUseTeamDetails) { senderName = document.team?.name ?? ''; senderEmail = document.team?.teamEmail?.email ? `(${document.team.teamEmail.email})` : ''; } return (