import { useMemo } from 'react'; import { Trans } from '@lingui/macro'; import { useLingui } from '@lingui/react'; import { match } from 'ts-pattern'; import { RECIPIENT_ROLES_DESCRIPTION } from '@documenso/lib/constants/recipient-roles'; import { RecipientRole } from '@documenso/prisma/client'; import { Button, Section, Text } from '../components'; import { TemplateDocumentImage } from './template-document-image'; export interface TemplateDocumentInviteProps { inviterName: string; inviterEmail: string; documentName: string; signDocumentLink: string; assetBaseUrl: string; role: RecipientRole; selfSigner: boolean; isTeamInvite: boolean; teamName?: string; includeSenderDetails?: boolean; } export const TemplateDocumentInvite = ({ inviterName, documentName, signDocumentLink, assetBaseUrl, role, selfSigner, isTeamInvite, teamName, includeSenderDetails, }: TemplateDocumentInviteProps) => { const { _ } = useLingui(); const { actionVerb } = RECIPIENT_ROLES_DESCRIPTION[role]; const rejectDocumentLink = useMemo(() => { const url = new URL(signDocumentLink); url.searchParams.set('reject', 'true'); return url.toString(); }, []); return ( <>
{selfSigner ? ( Please {_(actionVerb).toLowerCase()} your document
"{documentName}"
) : isTeamInvite ? ( <> {includeSenderDetails ? ( {inviterName} on behalf of "{teamName}" has invited you to{' '} {_(actionVerb).toLowerCase()} ) : ( {teamName} has invited you to {_(actionVerb).toLowerCase()} )}
"{documentName}" ) : ( {inviterName} has invited you to {_(actionVerb).toLowerCase()}
"{documentName}"
)}
{match(role) .with(RecipientRole.SIGNER, () => Continue by signing the document.) .with(RecipientRole.VIEWER, () => Continue by viewing the document.) .with(RecipientRole.APPROVER, () => Continue by approving the document.) .with(RecipientRole.CC, () => '') .exhaustive()}
); }; export default TemplateDocumentInvite;