import { useCurrentEnvelopeEditor } from '@documenso/lib/client-only/providers/envelope-editor-provider'; import { getEnvelopeItemPermissions, mapSecondaryIdToTemplateId } from '@documenso/lib/utils/envelope'; import { Badge } from '@documenso/ui/primitives/badge'; import { Button } from '@documenso/ui/primitives/button'; import { Separator } from '@documenso/ui/primitives/separator'; import { Trans, useLingui } from '@lingui/react/macro'; import { DocumentStatus, EnvelopeType, TemplateType } from '@prisma/client'; import { AlertTriangleIcon, Building2Icon, Globe2Icon, LockIcon, RefreshCwIcon, SendIcon, SettingsIcon, } from 'lucide-react'; import { useMemo } from 'react'; import { Link } from 'react-router'; import { match } from 'ts-pattern'; import { EnvelopeDistributeDialog } from '~/components/dialogs/envelope-distribute-dialog'; import { EnvelopeRedistributeDialog } from '~/components/dialogs/envelope-redistribute-dialog'; import { TemplateUseDialog } from '~/components/dialogs/template-use-dialog'; import { BrandingLogo } from '~/components/general/branding-logo'; import { DocumentAttachmentsPopover } from '~/components/general/document/document-attachments-popover'; import { EmbeddedEditorAttachmentPopover } from '~/components/general/document/embedded-editor-attachment-popover'; import { EnvelopeEditorSettingsDialog } from '~/components/general/envelope-editor/envelope-editor-settings-dialog'; import { TemplateDirectLinkBadge } from '../template/template-direct-link-badge'; import { EnvelopeItemTitleInput } from './envelope-editor-title-input'; export default function EnvelopeEditorHeader() { const { t } = useLingui(); const { envelope, isDocument, isTemplate, isEmbedded, updateEnvelope, autosaveError, relativePath, editorConfig, flushAutosave, } = useCurrentEnvelopeEditor(); const { embedded, general: { allowConfigureEnvelopeTitle }, actions: { allowAttachments, allowDistributing }, } = editorConfig; const envelopeItemPermissions = useMemo( () => getEnvelopeItemPermissions(envelope, envelope.recipients), [envelope, envelope.recipients], ); const handleCreateEmbeddedEnvelope = async () => { const latestEnvelope = await flushAutosave(); embedded?.onCreate?.(latestEnvelope); }; const handleUpdateEmbeddedEnvelope = async () => { const latestEnvelope = await flushAutosave(); embedded?.onUpdate?.(latestEnvelope); }; return ( ); }