import { useLingui } from '@lingui/react'; import { Trans } from '@lingui/react/macro'; import { DocumentDistributionMethod } from '@prisma/client'; import { InfoIcon } from 'lucide-react'; import type { Control } from 'react-hook-form'; import { useFormContext } from 'react-hook-form'; import { DATE_FORMATS } from '@documenso/lib/constants/date-formats'; import { DOCUMENT_SIGNATURE_TYPES } from '@documenso/lib/constants/document'; import { SUPPORTED_LANGUAGES } from '@documenso/lib/constants/i18n'; import { TIME_ZONES } from '@documenso/lib/constants/time-zones'; import { DocumentEmailCheckboxes } from '@documenso/ui/components/document/document-email-checkboxes'; import { DocumentSendEmailMessageHelper } from '@documenso/ui/components/document/document-send-email-message-helper'; import { Combobox } from '@documenso/ui/primitives/combobox'; import { FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, } from '@documenso/ui/primitives/form/form'; import { Input } from '@documenso/ui/primitives/input'; import { MultiSelectCombobox } from '@documenso/ui/primitives/multi-select-combobox'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@documenso/ui/primitives/select'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@documenso/ui/primitives/tabs'; import { Textarea } from '@documenso/ui/primitives/textarea'; import { Tooltip, TooltipContent, TooltipTrigger } from '@documenso/ui/primitives/tooltip'; import { useConfigureDocument } from './configure-document-context'; import type { TConfigureEmbedFormSchema } from './configure-document-view.types'; interface ConfigureDocumentAdvancedSettingsProps { control: Control; isSubmitting: boolean; } export const ConfigureDocumentAdvancedSettings = ({ control, isSubmitting, }: ConfigureDocumentAdvancedSettingsProps) => { const { _ } = useLingui(); const form = useFormContext(); const { features } = useConfigureDocument(); const { watch, setValue } = form; // Lift watch() calls to reduce re-renders const distributionMethod = watch('meta.distributionMethod'); const emailSettings = watch('meta.emailSettings'); const isEmailDistribution = distributionMethod === DocumentDistributionMethod.EMAIL; return (

Advanced Settings

Configure additional options and preferences

General {features.allowConfigureCommunication && ( Communication )}
{/* ( External ID Add an external ID to the document. This can be used to identify the document in external systems. )} /> */} {features.allowConfigureSignatureTypes && ( ( Allowed Signature Types ({ label: _(option.label), value: option.value, }))} selectedValues={field.value} onChange={field.onChange} className="bg-background w-full" emptySelectionPlaceholder="Select signature types" /> )} /> )} {features.allowConfigureLanguage && ( ( Language )} /> )} {features.allowConfigureDateFormat && ( ( Date Format )} /> )} {features.allowConfigureTimezone && ( ( Time Zone value && field.onChange(value)} disabled={isSubmitting} /> )} /> )} {features.allowConfigureRedirectUrl && ( ( Redirect URL Add a URL to redirect the user to once the document is signed )} /> )}
{features.allowConfigureCommunication && (
( Distribution Method Choose how to distribute your document to recipients. Email will send notifications, None will generate signing links for manual distribution. )} />
( Subject (Optional) )} /> ( Message (Optional)