diff --git a/apps/documentation/package.json b/apps/documentation/package.json index 7ab519307..c5f5bee5a 100644 --- a/apps/documentation/package.json +++ b/apps/documentation/package.json @@ -27,9 +27,6 @@ "@types/node": "^20", "@types/react": "^18", "@types/react-dom": "^18", - "autoprefixer": "^10.0.1", - "postcss": "^8", - "tailwindcss": "^3.3.0", "typescript": "^5" } } \ No newline at end of file diff --git a/apps/marketing/package.json b/apps/marketing/package.json index b289be59d..a1ef1a439 100644 --- a/apps/marketing/package.json +++ b/apps/marketing/package.json @@ -1,6 +1,6 @@ { "name": "@documenso/marketing", - "version": "1.8.1-rc.0", + "version": "1.8.1-rc.1", "private": true, "license": "AGPL-3.0", "scripts": { diff --git a/apps/web/package.json b/apps/web/package.json index 541cf9c0b..10d2ae691 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -1,6 +1,6 @@ { "name": "@documenso/web", - "version": "1.8.1-rc.0", + "version": "1.8.1-rc.1", "private": true, "license": "AGPL-3.0", "scripts": { @@ -28,6 +28,7 @@ "@simplewebauthn/browser": "^9.0.1", "@simplewebauthn/server": "^9.0.3", "@tanstack/react-query": "^4.29.5", + "colord": "^2.9.3", "cookie-es": "^1.0.0", "formidable": "^2.1.1", "framer-motion": "^10.12.8", @@ -53,7 +54,7 @@ "react-icons": "^4.11.0", "react-rnd": "^10.4.1", "recharts": "^2.7.2", - "remeda": "^2.12.1", + "remeda": "^2.17.3", "sharp": "0.32.6", "ts-pattern": "^5.0.5", "ua-parser-js": "^1.0.37", diff --git a/apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx b/apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx index d4b137aeb..ddc49b1cf 100644 --- a/apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx +++ b/apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx @@ -146,7 +146,10 @@ export const DocumentPageView = async ({ params, team }: DocumentPageViewProps)
-

+

{document.title}

@@ -218,7 +221,7 @@ export const DocumentPageView = async ({ params, team }: DocumentPageViewProps)
-

+

{match(document.status) .with(DocumentStatus.COMPLETED, () => ( This document has been signed by all recipients diff --git a/apps/web/src/app/(dashboard)/documents/[id]/edit/document-edit-page-view.tsx b/apps/web/src/app/(dashboard)/documents/[id]/edit/document-edit-page-view.tsx index 23357074a..531f7e439 100644 --- a/apps/web/src/app/(dashboard)/documents/[id]/edit/document-edit-page-view.tsx +++ b/apps/web/src/app/(dashboard)/documents/[id]/edit/document-edit-page-view.tsx @@ -109,7 +109,10 @@ export const DocumentEditPageView = async ({ params, team }: DocumentEditPageVie Documents -

+

{document.title}

diff --git a/apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx b/apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx index 4bd852248..f681437a4 100644 --- a/apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx +++ b/apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx @@ -121,7 +121,10 @@ export const DocumentLogsPageView = async ({ params, team }: DocumentLogsPageVie
-

+

{document.title}

diff --git a/apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx b/apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx index 766d45caa..1a2a3fa19 100644 --- a/apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx +++ b/apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx @@ -141,6 +141,23 @@ export const EditTemplateForm = ({ }, }); + const { mutateAsync: updateTypedSignature } = + trpc.template.updateTemplateTypedSignatureSettings.useMutation({ + ...DO_NOT_INVALIDATE_QUERY_ON_MUTATION, + onSuccess: (newData) => { + utils.template.getTemplateWithDetailsById.setData( + { + id: initialTemplate.id, + }, + (oldData) => ({ + ...(oldData || initialTemplate), + ...newData, + id: Number(newData.id), + }), + ); + }, + }); + const onAddSettingsFormSubmit = async (data: TAddTemplateSettingsFormSchema) => { try { await updateTemplateSettings({ @@ -211,6 +228,12 @@ export const EditTemplateForm = ({ fields: data.fields, }); + await updateTypedSignature({ + templateId: template.id, + teamId: team?.id, + typedSignatureEnabled: data.typedSignatureEnabled, + }); + // Clear all field data from localStorage for (let i = 0; i < localStorage.length; i++) { const key = localStorage.key(i); @@ -225,14 +248,13 @@ export const EditTemplateForm = ({ duration: 5000, }); - // Router refresh is here to clear the router cache for when navigating to /documents. - router.refresh(); - router.push(templateRootPath); } catch (err) { + console.error(err); + toast({ title: _(msg`Error`), - description: _(msg`An error occurred while adding signers.`), + description: _(msg`An error occurred while adding fields.`), variant: 'destructive', }); } @@ -301,6 +323,7 @@ export const EditTemplateForm = ({ fields={fields} onSubmit={onAddFieldsFormSubmit} teamId={team?.id} + typedSignatureEnabled={template.templateMeta?.typedSignatureEnabled} /> diff --git a/apps/web/src/app/(dashboard)/templates/[id]/edit/template-edit-page-view.tsx b/apps/web/src/app/(dashboard)/templates/[id]/edit/template-edit-page-view.tsx index d7d6d86b4..7217b6be1 100644 --- a/apps/web/src/app/(dashboard)/templates/[id]/edit/template-edit-page-view.tsx +++ b/apps/web/src/app/(dashboard)/templates/[id]/edit/template-edit-page-view.tsx @@ -63,7 +63,10 @@ export const TemplateEditPageView = async ({ params, team }: TemplateEditPageVie Template -

+

{template.title}

diff --git a/apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx b/apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx index 0436ab3f6..f27688816 100644 --- a/apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx +++ b/apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx @@ -73,7 +73,6 @@ export const TemplatePageView = async ({ params, team }: TemplatePageViewProps) const mockedDocumentMeta = templateMeta ? { - typedSignatureEnabled: false, ...templateMeta, signingOrder: templateMeta.signingOrder || DocumentSigningOrder.SEQUENTIAL, documentId: 0, @@ -89,7 +88,10 @@ export const TemplatePageView = async ({ params, team }: TemplatePageViewProps)
-

+

{template.title}

@@ -155,7 +157,7 @@ export const TemplatePageView = async ({ params, team }: TemplatePageViewProps)
-

+

Manage and view template

diff --git a/apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx b/apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx index 35c0d0542..40cf83cee 100644 --- a/apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx +++ b/apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx @@ -209,11 +209,19 @@ export default async function SigningCertificate({ searchParams }: SigningCertif boxShadow: `0px 0px 0px 4.88px rgba(122, 196, 85, 0.1), 0px 0px 0px 1.22px rgba(122, 196, 85, 0.6), 0px 0px 0px 0.61px rgba(122, 196, 85, 1)`, }} > - Signature + {signature.Signature?.signatureImageAsBase64 && ( + Signature + )} + + {signature.Signature?.typedSignature && ( +

+ {signature.Signature?.typedSignature} +

+ )}

diff --git a/apps/web/src/app/(recipient)/d/[token]/page.tsx b/apps/web/src/app/(recipient)/d/[token]/page.tsx index a2ace350c..dfbbd4595 100644 --- a/apps/web/src/app/(recipient)/d/[token]/page.tsx +++ b/apps/web/src/app/(recipient)/d/[token]/page.tsx @@ -12,7 +12,6 @@ import { extractDocumentAuthMethods } from '@documenso/lib/utils/document-auth'; import { DocumentAuthProvider } from '~/app/(signing)/sign/[token]/document-auth-provider'; import { SigningProvider } from '~/app/(signing)/sign/[token]/provider'; -import { truncateTitle } from '~/helpers/truncate-title'; import { DirectTemplatePageView } from './direct-template'; import { DirectTemplateAuthPageView } from './signing-auth-page'; @@ -72,8 +71,11 @@ export default async function TemplatesDirectPage({ params }: TemplatesDirectPag user={user} >

-

- {truncateTitle(template.title)} +

+ {template.title}

diff --git a/apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx b/apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx index ea4e7f8f0..bf9b671c4 100644 --- a/apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx +++ b/apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx @@ -102,9 +102,9 @@ export const SignDirectTemplateForm = ({ created: new Date(), recipientId: 1, fieldId: 1, - signatureImageAsBase64: value.value, - typedSignature: null, - }; + signatureImageAsBase64: value.value.startsWith('data:') ? value.value : null, + typedSignature: value.value.startsWith('data:') ? null : value.value, + } satisfies Signature; } if (field.type === FieldType.DATE) { diff --git a/apps/web/src/app/(signing)/sign/[token]/complete/page.tsx b/apps/web/src/app/(signing)/sign/[token]/complete/page.tsx index 7e183da1d..b1ca1c9c6 100644 --- a/apps/web/src/app/(signing)/sign/[token]/complete/page.tsx +++ b/apps/web/src/app/(signing)/sign/[token]/complete/page.tsx @@ -24,8 +24,6 @@ import { SigningCard3D } from '@documenso/ui/components/signing-card'; import { cn } from '@documenso/ui/lib/utils'; import { Badge } from '@documenso/ui/primitives/badge'; -import { truncateTitle } from '~/helpers/truncate-title'; - import { SigningAuthPageView } from '../signing-auth-page'; import { ClaimAccount } from './claim-account'; import { DocumentPreviewButton } from './document-preview-button'; @@ -61,8 +59,6 @@ export default async function CompletedSigningPage({ return notFound(); } - const truncatedTitle = truncateTitle(document.title); - const { documentData } = document; const [fields, recipient] = await Promise.all([ @@ -118,7 +114,9 @@ export default async function CompletedSigningPage({ })} > - {truncatedTitle} + + {document.title} + {/* Card with recipient */} diff --git a/apps/web/src/app/(signing)/sign/[token]/provider.tsx b/apps/web/src/app/(signing)/sign/[token]/provider.tsx index 454007cb0..6c65fd85d 100644 --- a/apps/web/src/app/(signing)/sign/[token]/provider.tsx +++ b/apps/web/src/app/(signing)/sign/[token]/provider.tsx @@ -1,6 +1,6 @@ 'use client'; -import { createContext, useContext, useState } from 'react'; +import { createContext, useContext, useEffect, useState } from 'react'; export type SigningContextValue = { fullName: string; @@ -44,6 +44,12 @@ export const SigningProvider = ({ const [email, setEmail] = useState(initialEmail || ''); const [signature, setSignature] = useState(initialSignature || null); + useEffect(() => { + if (initialSignature) { + setSignature(initialSignature); + } + }, [initialSignature]); + return ( { const [showDialog, setShowDialog] = useState(false); - const truncatedTitle = truncateTitle(documentTitle); + const isComplete = fields.every((field) => field.inserted); const handleOpenChange = (open: boolean) => { @@ -75,7 +74,13 @@ export const SignDialog = ({ {role === RecipientRole.VIEWER && ( - You are about to complete viewing "{truncatedTitle}". + + You are about to complete viewing " + + {documentTitle} + + ". +
Are you sure?
@@ -83,7 +88,13 @@ export const SignDialog = ({ {role === RecipientRole.SIGNER && ( - You are about to complete signing "{truncatedTitle}". + + You are about to complete signing " + + {documentTitle} + + ". +
Are you sure?
@@ -91,7 +102,13 @@ export const SignDialog = ({ {role === RecipientRole.APPROVER && ( - You are about to complete approving "{truncatedTitle}". + + You are about to complete approving{' '} + + "{documentTitle}" + + . +
Are you sure?
diff --git a/apps/web/src/app/(signing)/sign/[token]/signature-field.tsx b/apps/web/src/app/(signing)/sign/[token]/signature-field.tsx index ab161c594..33b7aec3c 100644 --- a/apps/web/src/app/(signing)/sign/[token]/signature-field.tsx +++ b/apps/web/src/app/(signing)/sign/[token]/signature-field.tsx @@ -1,6 +1,6 @@ 'use client'; -import { useMemo, useState, useTransition } from 'react'; +import { useLayoutEffect, useMemo, useRef, useState, useTransition } from 'react'; import { useRouter } from 'next/navigation'; @@ -51,6 +51,10 @@ export const SignatureField = ({ const { _ } = useLingui(); const { toast } = useToast(); + const signatureRef = useRef(null); + const containerRef = useRef(null); + const [fontSize, setFontSize] = useState(2); + const { signature: providedSignature, setSignature: setProvidedSignature } = useRequiredSigningContext(); @@ -108,6 +112,7 @@ export const SignatureField = ({ actionTarget: field.type, }); }; + const onSign = async (authOptions?: TRecipientActionAuth, signature?: string) => { try { const value = signature || providedSignature; @@ -117,11 +122,23 @@ export const SignatureField = ({ return; } + const isTypedSignature = !value.startsWith('data:image'); + + if (isTypedSignature && !typedSignatureEnabled) { + toast({ + title: _(msg`Error`), + description: _(msg`Typed signatures are not allowed. Please draw your signature.`), + variant: 'destructive', + }); + + return; + } + const payload: TSignFieldWithTokenMutationSchema = { token: recipient.token, fieldId: field.id, value, - isBase64: true, + isBase64: !isTypedSignature, authOptions, }; @@ -176,6 +193,41 @@ export const SignatureField = ({ } }; + useLayoutEffect(() => { + if (!signatureRef.current || !containerRef.current || !signature?.typedSignature) { + return; + } + + const adjustTextSize = () => { + const container = containerRef.current; + const text = signatureRef.current; + + if (!container || !text) { + return; + } + + let size = 2; + text.style.fontSize = `${size}rem`; + + while ( + (text.scrollWidth > container.clientWidth || text.scrollHeight > container.clientHeight) && + size > 0.8 + ) { + size -= 0.1; + text.style.fontSize = `${size}rem`; + } + + setFontSize(size); + }; + + const resizeObserver = new ResizeObserver(adjustTextSize); + resizeObserver.observe(containerRef.current); + + adjustTextSize(); + + return () => resizeObserver.disconnect(); + }, [signature?.typedSignature]); + return ( - {/* This optional chaining is intentional, we don't want to move the check into the condition above */} - {signature?.typedSignature} -

+
+

+ {signature?.typedSignature} +

+
)} diff --git a/apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx b/apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx index 16242381a..19057abf8 100644 --- a/apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx +++ b/apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx @@ -55,7 +55,10 @@ export const SigningPageView = ({ return (
-

+

{document.title}

diff --git a/apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx b/apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx index ed29a5287..3a72cb255 100644 --- a/apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx +++ b/apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx @@ -52,13 +52,7 @@ export default async function TeamsSettingsPage({ params }: TeamsSettingsPagePro - +
{(team.teamEmail || team.emailVerification) && ( diff --git a/apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx b/apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx index 85f504105..ed7875ab0 100644 --- a/apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx +++ b/apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx @@ -39,6 +39,8 @@ const ZTeamDocumentPreferencesFormSchema = z.object({ documentVisibility: z.nativeEnum(DocumentVisibility), documentLanguage: z.enum(SUPPORTED_LANGUAGE_CODES), includeSenderDetails: z.boolean(), + typedSignatureEnabled: z.boolean(), + includeSigningCertificate: z.boolean(), }); type TTeamDocumentPreferencesFormSchema = z.infer; @@ -68,6 +70,8 @@ export const TeamDocumentPreferencesForm = ({ ? settings?.documentLanguage : 'en', includeSenderDetails: settings?.includeSenderDetails ?? false, + typedSignatureEnabled: settings?.typedSignatureEnabled ?? true, + includeSigningCertificate: settings?.includeSigningCertificate ?? true, }, resolver: zodResolver(ZTeamDocumentPreferencesFormSchema), }); @@ -76,7 +80,13 @@ export const TeamDocumentPreferencesForm = ({ const onSubmit = async (data: TTeamDocumentPreferencesFormSchema) => { try { - const { documentVisibility, documentLanguage, includeSenderDetails } = data; + const { + documentVisibility, + documentLanguage, + includeSenderDetails, + includeSigningCertificate, + typedSignatureEnabled, + } = data; await updateTeamDocumentPreferences({ teamId: team.id, @@ -84,6 +94,8 @@ export const TeamDocumentPreferencesForm = ({ documentVisibility, documentLanguage, includeSenderDetails, + typedSignatureEnabled, + includeSigningCertificate, }, }); @@ -105,7 +117,7 @@ export const TeamDocumentPreferencesForm = ({
+ ( + + + Enable Typed Signature + + +
+ + + +
+ + + + Controls whether the recipients can sign the documents using a typed signature. + Enable or disable the typed signature globally. + + +
+ )} + /> + + ( + + + Include the Signing Certificate in the Document + + +
+ + + +
+ + + + Controls whether the signing certificate will be included in the document when + it is downloaded. The signing certificate can still be downloaded from the logs + page separately. + + +
+ )} + /> +
); }; diff --git a/apps/web/src/app/embed/direct/[[...url]]/page.tsx b/apps/web/src/app/embed/direct/[[...url]]/page.tsx index ead83463e..bd4cf610d 100644 --- a/apps/web/src/app/embed/direct/[[...url]]/page.tsx +++ b/apps/web/src/app/embed/direct/[[...url]]/page.tsx @@ -2,8 +2,11 @@ import { notFound } from 'next/navigation'; import { match } from 'ts-pattern'; +import { isUserEnterprise } from '@documenso/ee/server-only/util/is-document-enterprise'; +import { isDocumentPlatform } from '@documenso/ee/server-only/util/is-document-platform'; import { IS_BILLING_ENABLED } from '@documenso/lib/constants/app'; import { getServerComponentSession } from '@documenso/lib/next-auth/get-server-component-session'; +import { getTeamById } from '@documenso/lib/server-only/team/get-team'; import { getTemplateByDirectLinkToken } from '@documenso/lib/server-only/template/get-template-by-direct-link-token'; import { DocumentAccessAuth } from '@documenso/lib/types/document-auth'; import { extractDocumentAuthMethods } from '@documenso/lib/utils/document-auth'; @@ -51,6 +54,14 @@ export default async function EmbedDirectTemplatePage({ params }: EmbedDirectTem documentAuth: template.authOptions, }); + const [isPlatformDocument, isEnterpriseDocument] = await Promise.all([ + isDocumentPlatform(template), + isUserEnterprise({ + userId: template.userId, + teamId: template.teamId ?? undefined, + }), + ]); + const isAccessAuthValid = match(derivedRecipientAccessAuth) .with(DocumentAccessAuth.ACCOUNT, () => user !== null) .with(null, () => true) @@ -72,6 +83,12 @@ export default async function EmbedDirectTemplatePage({ params }: EmbedDirectTem const fields = template.Field.filter((field) => field.recipientId === directTemplateRecipientId); + const team = template.teamId + ? await getTeamById({ teamId: template.teamId, userId: template.userId }).catch(() => null) + : null; + + const hidePoweredBy = team?.teamGlobalSettings?.brandingHidePoweredBy ?? false; + return ( diff --git a/apps/web/src/app/embed/document-fields.tsx b/apps/web/src/app/embed/document-fields.tsx index 05ef098bd..79256b07e 100644 --- a/apps/web/src/app/embed/document-fields.tsx +++ b/apps/web/src/app/embed/document-fields.tsx @@ -58,6 +58,7 @@ export const EmbedDocumentFields = ({ recipient={recipient} onSignField={onSignField} onUnsignField={onUnsignField} + typedSignatureEnabled={metadata?.typedSignatureEnabled} /> )) .with(FieldType.INITIALS, () => ( diff --git a/apps/web/src/app/embed/sign/[[...url]]/client.tsx b/apps/web/src/app/embed/sign/[[...url]]/client.tsx index e10f4745c..3dc428474 100644 --- a/apps/web/src/app/embed/sign/[[...url]]/client.tsx +++ b/apps/web/src/app/embed/sign/[[...url]]/client.tsx @@ -1,6 +1,6 @@ 'use client'; -import { useEffect, useState } from 'react'; +import { useEffect, useLayoutEffect, useState } from 'react'; import { Trans, msg } from '@lingui/macro'; import { useLingui } from '@lingui/react'; @@ -28,6 +28,7 @@ import { Logo } from '~/components/branding/logo'; import { EmbedClientLoading } from '../../client-loading'; import { EmbedDocumentCompleted } from '../../completed'; import { EmbedDocumentFields } from '../../document-fields'; +import { injectCss } from '../../util'; import { ZSignDocumentEmbedDataSchema } from './schema'; export type EmbedSignDocumentClientPageProps = { @@ -38,6 +39,8 @@ export type EmbedSignDocumentClientPageProps = { fields: Field[]; metadata?: DocumentMeta | TemplateMeta | null; isCompleted?: boolean; + hidePoweredBy?: boolean; + isPlatformOrEnterprise?: boolean; }; export const EmbedSignDocumentClientPage = ({ @@ -48,6 +51,8 @@ export const EmbedSignDocumentClientPage = ({ fields, metadata, isCompleted, + hidePoweredBy = false, + isPlatformOrEnterprise = false, }: EmbedSignDocumentClientPageProps) => { const { _ } = useLingui(); const { toast } = useToast(); @@ -131,7 +136,7 @@ export const EmbedSignDocumentClientPage = ({ } }; - useEffect(() => { + useLayoutEffect(() => { const hash = window.location.hash.slice(1); try { @@ -144,6 +149,17 @@ export const EmbedSignDocumentClientPage = ({ // Since a recipient can be provided a name we can lock it without requiring // a to be provided by the parent application, unlike direct templates. setIsNameLocked(!!data.lockName); + + if (data.darkModeDisabled) { + document.documentElement.classList.add('dark-mode-disabled'); + } + + if (isPlatformOrEnterprise) { + injectCss({ + css: data.css, + cssVars: data.cssVars, + }); + } } catch (err) { console.error(err); } @@ -176,8 +192,8 @@ export const EmbedSignDocumentClientPage = ({ fieldId: 1, recipientId: 1, created: new Date(), - typedSignature: null, - signatureImageAsBase64: signature, + signatureImageAsBase64: signature?.startsWith('data:') ? signature : null, + typedSignature: signature?.startsWith('data:') ? null : signature, }} /> ); @@ -202,7 +218,7 @@ export const EmbedSignDocumentClientPage = ({ className="group/document-widget fixed bottom-8 left-0 z-50 h-fit w-full flex-shrink-0 px-6 md:sticky md:top-4 md:z-auto md:w-[350px] md:px-0" data-expanded={isExpanded || undefined} > -
+
{/* Header */}
@@ -325,10 +341,12 @@ export const EmbedSignDocumentClientPage = ({
-
- Powered by - -
+ {!hidePoweredBy && ( +
+ Powered by + +
+ )}
); }; diff --git a/apps/web/src/app/embed/sign/[[...url]]/page.tsx b/apps/web/src/app/embed/sign/[[...url]]/page.tsx index d7acbabe4..0f3351a83 100644 --- a/apps/web/src/app/embed/sign/[[...url]]/page.tsx +++ b/apps/web/src/app/embed/sign/[[...url]]/page.tsx @@ -2,11 +2,14 @@ import { notFound } from 'next/navigation'; import { match } from 'ts-pattern'; +import { isUserEnterprise } from '@documenso/ee/server-only/util/is-document-enterprise'; +import { isDocumentPlatform } from '@documenso/ee/server-only/util/is-document-platform'; import { IS_BILLING_ENABLED } from '@documenso/lib/constants/app'; import { getServerComponentSession } from '@documenso/lib/next-auth/get-server-component-session'; import { getDocumentAndSenderByToken } from '@documenso/lib/server-only/document/get-document-by-token'; import { getFieldsForToken } from '@documenso/lib/server-only/field/get-fields-for-token'; import { getRecipientByToken } from '@documenso/lib/server-only/recipient/get-recipient-by-token'; +import { getTeamById } from '@documenso/lib/server-only/team/get-team'; import { DocumentAccessAuth } from '@documenso/lib/types/document-auth'; import { extractDocumentAuthMethods } from '@documenso/lib/utils/document-auth'; import { DocumentStatus } from '@documenso/prisma/client'; @@ -56,6 +59,14 @@ export default async function EmbedSignDocumentPage({ params }: EmbedSignDocumen return ; } + const [isPlatformDocument, isEnterpriseDocument] = await Promise.all([ + isDocumentPlatform(document), + isUserEnterprise({ + userId: document.userId, + teamId: document.teamId ?? undefined, + }), + ]); + const { derivedRecipientAccessAuth } = extractDocumentAuthMethods({ documentAuth: document.authOptions, }); @@ -74,6 +85,12 @@ export default async function EmbedSignDocumentPage({ params }: EmbedSignDocumen ); } + const team = document.teamId + ? await getTeamById({ teamId: document.teamId, userId: document.userId }).catch(() => null) + : null; + + const hidePoweredBy = team?.teamGlobalSettings?.brandingHidePoweredBy ?? false; + return ( diff --git a/apps/web/src/app/embed/util.ts b/apps/web/src/app/embed/util.ts new file mode 100644 index 000000000..099ecb9f8 --- /dev/null +++ b/apps/web/src/app/embed/util.ts @@ -0,0 +1,20 @@ +import { type TCssVarsSchema, toNativeCssVars } from './css-vars'; + +export const injectCss = (options: { css?: string; cssVars?: TCssVarsSchema }) => { + const { css, cssVars } = options; + + if (css) { + const style = document.createElement('style'); + style.innerHTML = css; + + document.head.appendChild(style); + } + + if (cssVars) { + const nativeVars = toNativeCssVars(cssVars); + + for (const [key, value] of Object.entries(nativeVars)) { + document.documentElement.style.setProperty(key, value); + } + } +}; diff --git a/apps/web/src/components/(teams)/forms/update-team-form.tsx b/apps/web/src/components/(teams)/forms/update-team-form.tsx index 0ed19fcdc..be2e7edc2 100644 --- a/apps/web/src/components/(teams)/forms/update-team-form.tsx +++ b/apps/web/src/components/(teams)/forms/update-team-form.tsx @@ -6,22 +6,14 @@ import { zodResolver } from '@hookform/resolvers/zod'; import { Trans, msg } from '@lingui/macro'; import { useLingui } from '@lingui/react'; import { AnimatePresence, motion } from 'framer-motion'; -import { useSession } from 'next-auth/react'; import { useForm } from 'react-hook-form'; -import { match } from 'ts-pattern'; import type { z } from 'zod'; import { WEBAPP_BASE_URL } from '@documenso/lib/constants/app'; import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error'; -import { DocumentVisibility } from '@documenso/prisma/client'; import { trpc } from '@documenso/trpc/react'; import { ZUpdateTeamMutationSchema } from '@documenso/trpc/server/team-router/schema'; -import { - DocumentVisibilitySelect, - DocumentVisibilityTooltip, -} from '@documenso/ui/components/document/document-visibility-select'; import { Button } from '@documenso/ui/primitives/button'; -import { Checkbox } from '@documenso/ui/primitives/checkbox'; import { Form, FormControl, @@ -37,29 +29,17 @@ export type UpdateTeamDialogProps = { teamId: number; teamName: string; teamUrl: string; - documentVisibility?: DocumentVisibility; - includeSenderDetails?: boolean; }; const ZUpdateTeamFormSchema = ZUpdateTeamMutationSchema.shape.data.pick({ name: true, url: true, - documentVisibility: true, - includeSenderDetails: true, }); type TUpdateTeamFormSchema = z.infer; -export const UpdateTeamForm = ({ - teamId, - teamName, - teamUrl, - documentVisibility, - includeSenderDetails, -}: UpdateTeamDialogProps) => { +export const UpdateTeamForm = ({ teamId, teamName, teamUrl }: UpdateTeamDialogProps) => { const router = useRouter(); - const { data: session } = useSession(); - const email = session?.user?.email; const { _ } = useLingui(); const { toast } = useToast(); @@ -68,36 +48,17 @@ export const UpdateTeamForm = ({ defaultValues: { name: teamName, url: teamUrl, - documentVisibility, - includeSenderDetails, }, }); const { mutateAsync: updateTeam } = trpc.team.updateTeam.useMutation(); - const includeSenderDetailsCheck = form.watch('includeSenderDetails'); - const mapVisibilityToRole = (visibility: DocumentVisibility): DocumentVisibility => - match(visibility) - .with(DocumentVisibility.ADMIN, () => DocumentVisibility.ADMIN) - .with(DocumentVisibility.MANAGER_AND_ABOVE, () => DocumentVisibility.MANAGER_AND_ABOVE) - .otherwise(() => DocumentVisibility.EVERYONE); - - const currentVisibilityRole = mapVisibilityToRole( - documentVisibility ?? DocumentVisibility.EVERYONE, - ); - const onFormSubmit = async ({ - name, - url, - documentVisibility, - includeSenderDetails, - }: TUpdateTeamFormSchema) => { + const onFormSubmit = async ({ name, url }: TUpdateTeamFormSchema) => { try { await updateTeam({ data: { name, url, - documentVisibility, - includeSenderDetails, }, teamId, }); @@ -111,8 +72,6 @@ export const UpdateTeamForm = ({ form.reset({ name, url, - documentVisibility, - includeSenderDetails, }); if (url !== teamUrl) { @@ -186,68 +145,6 @@ export const UpdateTeamForm = ({ )} /> - ( - - - Default Document Visibility - - - - - - - - - )} - /> - -
- ( - -
- - Send on Behalf of Team - - - - -
- - {includeSenderDetailsCheck ? ( -
- - "{email}" on behalf of "{teamName}" has invited you to sign "example - document". - -
- ) : ( -
- "{teamUrl}" has invited you to sign "example document". -
- )} - - -
- )} - /> -
-
{form.formState.isDirty && ( diff --git a/apps/web/src/components/forms/profile.tsx b/apps/web/src/components/forms/profile.tsx index 4d4f23b74..dee901e9f 100644 --- a/apps/web/src/components/forms/profile.tsx +++ b/apps/web/src/components/forms/profile.tsx @@ -138,6 +138,7 @@ export const ProfileForm = ({ className, user }: ProfileFormProps) => { containerClassName={cn('rounded-lg border bg-background')} defaultValue={user.signature ?? undefined} onChange={(v) => onChange(v ?? '')} + allowTypedSignature={true} /> diff --git a/package-lock.json b/package-lock.json index fd2842078..599eead78 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@documenso/root", - "version": "1.8.1-rc.0", + "version": "1.8.1-rc.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@documenso/root", - "version": "1.8.1-rc.0", + "version": "1.8.1-rc.1", "workspaces": [ "apps/*", "packages/*" @@ -30,7 +30,7 @@ "husky": "^9.0.11", "lint-staged": "^15.2.2", "playwright": "1.43.0", - "prettier": "^2.5.1", + "prettier": "^3.3.3", "rimraf": "^5.0.1", "turbo": "^1.9.3" }, @@ -59,9 +59,6 @@ "@types/node": "^20", "@types/react": "^18", "@types/react-dom": "^18", - "autoprefixer": "^10.0.1", - "postcss": "^8", - "tailwindcss": "^3.3.0", "typescript": "^5" } }, @@ -80,7 +77,7 @@ }, "apps/marketing": { "name": "@documenso/marketing", - "version": "1.8.1-rc.0", + "version": "1.8.1-rc.1", "license": "AGPL-3.0", "dependencies": { "@documenso/assets": "*", @@ -441,7 +438,7 @@ }, "apps/web": { "name": "@documenso/web", - "version": "1.8.1-rc.0", + "version": "1.8.1-rc.1", "license": "AGPL-3.0", "dependencies": { "@documenso/api": "*", @@ -457,6 +454,7 @@ "@simplewebauthn/browser": "^9.0.1", "@simplewebauthn/server": "^9.0.3", "@tanstack/react-query": "^4.29.5", + "colord": "^2.9.3", "cookie-es": "^1.0.0", "formidable": "^2.1.1", "framer-motion": "^10.12.8", @@ -482,7 +480,7 @@ "react-icons": "^4.11.0", "react-rnd": "^10.4.1", "recharts": "^2.7.2", - "remeda": "^2.12.1", + "remeda": "^2.17.3", "sharp": "0.32.6", "ts-pattern": "^5.0.5", "ua-parser-js": "^1.0.37", @@ -11869,35 +11867,6 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/acorn-node": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", - "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", - "dependencies": { - "acorn": "^7.0.0", - "acorn-walk": "^7.0.0", - "xtend": "^4.0.2" - } - }, - "node_modules/acorn-node/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-node/node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/acorn-walk": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", @@ -12846,11 +12815,12 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -14218,6 +14188,12 @@ "color-support": "bin.js" } }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "license": "MIT" + }, "node_modules/colorette": { "version": "2.0.20", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", @@ -15436,14 +15412,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/defined": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz", - "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/degenerator": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", @@ -15591,22 +15559,6 @@ "node": ">=12" } }, - "node_modules/detective": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", - "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", - "dependencies": { - "acorn-node": "^1.8.2", - "defined": "^1.0.0", - "minimist": "^1.2.6" - }, - "bin": { - "detective": "bin/detective.js" - }, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/devlop": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", @@ -15661,11 +15613,6 @@ "node": ">=8" } }, - "node_modules/discontinuous-range": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz", - "integrity": "sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==" - }, "node_modules/disparity": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/disparity/-/disparity-3.2.0.tgz", @@ -17731,9 +17678,10 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -18275,6 +18223,7 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", + "dev": true, "engines": { "node": ">=10" }, @@ -20445,6 +20394,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -20873,9 +20823,10 @@ } }, "node_modules/jiti": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", - "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", + "version": "1.21.6", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "license": "MIT", "bin": { "jiti": "bin/jiti.js" } @@ -24053,32 +24004,6 @@ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" }, - "node_modules/nearley": { - "version": "2.20.1", - "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz", - "integrity": "sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==", - "dependencies": { - "commander": "^2.19.0", - "moo": "^0.5.0", - "railroad-diagrams": "^1.0.0", - "randexp": "0.4.6" - }, - "bin": { - "nearley-railroad": "bin/nearley-railroad.js", - "nearley-test": "bin/nearley-test.js", - "nearley-unparse": "bin/nearley-unparse.js", - "nearleyc": "bin/nearleyc.js" - }, - "funding": { - "type": "individual", - "url": "https://nearley.js.org/#give-to-nearley" - } - }, - "node_modules/nearley/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -24280,6 +24205,34 @@ "tslib": "^2.4.0" } }, + "node_modules/next/node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, "node_modules/nextra": { "version": "2.13.4", "resolved": "https://registry.npmjs.org/nextra/-/nextra-2.13.4.tgz", @@ -24857,17 +24810,6 @@ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" }, - "node_modules/node-sql-parser": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/node-sql-parser/-/node-sql-parser-4.11.0.tgz", - "integrity": "sha512-ElheoPibjc7IVyRdsORgkzJi0DWm3f0LYSsm/eJIeUt3M/csDLTblLDR4zl5Qi7jmVjJ1KpEkPKSbgVGEzU5Xw==", - "dependencies": { - "big-integer": "^1.6.48" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/nodemailer": { "version": "6.9.7", "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.7.tgz", @@ -25883,6 +25825,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "license": "BlueOak-1.0.0" + }, "node_modules/package-json-validator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/package-json-validator/-/package-json-validator-0.6.3.tgz", @@ -26637,9 +26585,10 @@ } }, "node_modules/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", @@ -26884,9 +26833,9 @@ } }, "node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "version": "8.4.49", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", "funding": [ { "type": "opencollective", @@ -26901,10 +26850,11 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "nanoid": "^3.3.7", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" }, "engines": { "node": "^10 || ^12 || >=14" @@ -26987,27 +26937,35 @@ } }, "node_modules/postcss-nested": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", - "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", "dependencies": { - "postcss-selector-parser": "^6.0.11" + "postcss-selector-parser": "^6.1.1" }, "engines": { "node": ">=12.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, "peerDependencies": { "postcss": "^8.2.14" } }, "node_modules/postcss-nested/node_modules/postcss-selector-parser": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", - "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -27219,61 +27177,46 @@ } }, "node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "license": "MIT", "bin": { - "prettier": "bin-prettier.js" + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">=10.13.0" + "node": ">=14" }, "funding": { "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/prettier-plugin-sql": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/prettier-plugin-sql/-/prettier-plugin-sql-0.14.0.tgz", - "integrity": "sha512-dRgINgNd3ZhBDuO/+EFalJjSlAqNXvXv9XDtSCeMufXaP6O64HHLBo1Szo+l+cfvXFxwvkTSGrS+sjpEpSchNA==", - "dependencies": { - "node-sql-parser": "^4.6.6", - "sql-formatter": "^12.2.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" - }, - "peerDependencies": { - "prettier": "^2.0.0" - } - }, "node_modules/prettier-plugin-tailwindcss": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.2.8.tgz", - "integrity": "sha512-KgPcEnJeIijlMjsA6WwYgRs5rh3/q76oInqtMXBA/EMcamrcYJpyhtRhyX1ayT9hnHlHTuO8sIifHF10WuSDKg==", + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.9.tgz", + "integrity": "sha512-r0i3uhaZAXYP0At5xGfJH876W3HHGHDp+LCRUJrs57PBeQ6mYHMwr25KH8NPX44F2yGTvdnH7OqCshlQx183Eg==", + "license": "MIT", "engines": { - "node": ">=12.17.0" + "node": ">=14.21.3" }, "peerDependencies": { "@ianvs/prettier-plugin-sort-imports": "*", "@prettier/plugin-pug": "*", "@shopify/prettier-plugin-liquid": "*", - "@shufo/prettier-plugin-blade": "*", "@trivago/prettier-plugin-sort-imports": "*", - "prettier": ">=2.2.0", + "@zackad/prettier-plugin-twig-melody": "*", + "prettier": "^3.0", "prettier-plugin-astro": "*", "prettier-plugin-css-order": "*", "prettier-plugin-import-sort": "*", "prettier-plugin-jsdoc": "*", + "prettier-plugin-marko": "*", + "prettier-plugin-multiline-arrays": "*", "prettier-plugin-organize-attributes": "*", "prettier-plugin-organize-imports": "*", + "prettier-plugin-sort-imports": "*", "prettier-plugin-style-order": "*", - "prettier-plugin-svelte": "*", - "prettier-plugin-twig-melody": "*" + "prettier-plugin-svelte": "*" }, "peerDependenciesMeta": { "@ianvs/prettier-plugin-sort-imports": { @@ -27285,10 +27228,10 @@ "@shopify/prettier-plugin-liquid": { "optional": true }, - "@shufo/prettier-plugin-blade": { + "@trivago/prettier-plugin-sort-imports": { "optional": true }, - "@trivago/prettier-plugin-sort-imports": { + "@zackad/prettier-plugin-twig-melody": { "optional": true }, "prettier-plugin-astro": { @@ -27303,20 +27246,26 @@ "prettier-plugin-jsdoc": { "optional": true }, + "prettier-plugin-marko": { + "optional": true + }, + "prettier-plugin-multiline-arrays": { + "optional": true + }, "prettier-plugin-organize-attributes": { "optional": true }, "prettier-plugin-organize-imports": { "optional": true }, + "prettier-plugin-sort-imports": { + "optional": true + }, "prettier-plugin-style-order": { "optional": true }, "prettier-plugin-svelte": { "optional": true - }, - "prettier-plugin-twig-melody": { - "optional": true } } }, @@ -27777,11 +27726,6 @@ "integrity": "sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ==", "license": "MIT" }, - "node_modules/railroad-diagrams": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz", - "integrity": "sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==" - }, "node_modules/ramda": { "version": "0.29.1", "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.29.1.tgz", @@ -27806,18 +27750,6 @@ "ramda": ">= 0.29.0" } }, - "node_modules/randexp": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz", - "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==", - "dependencies": { - "discontinuous-range": "1.0.0", - "ret": "~0.1.10" - }, - "engines": { - "node": ">=0.12" - } - }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -30153,18 +30085,18 @@ } }, "node_modules/remeda": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/remeda/-/remeda-2.12.1.tgz", - "integrity": "sha512-hKFAbxbQe8PMd4+CYO1DYCrCbcZsUSa7e21g7+4co91GBy7BD+Ub6JdaLy76yPOp7PCPTAXRz/9NXtZ9w15jbg==", + "version": "2.17.3", + "resolved": "https://registry.npmjs.org/remeda/-/remeda-2.17.3.tgz", + "integrity": "sha512-xyi2rCQkz2j4BEWbWxPw6JCapv1yBuSwr4Uf9BX00AkesAJaiKvc6Il6thsBidwVZAtNiSaCIXvslkKL0ybz8w==", "license": "MIT", "dependencies": { - "type-fest": "^4.26.1" + "type-fest": "^4.27.0" } }, "node_modules/remeda/node_modules/type-fest": { - "version": "4.26.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.26.1.tgz", - "integrity": "sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==", + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.27.0.tgz", + "integrity": "sha512-3IMSWgP7C5KSQqmo1wjhKrwsvXAtF33jO3QY+Uy++ia7hqvgSK6iXbbg5PbDBc1P2ZbNEDgejOrN4YooXvhwCw==", "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=16" @@ -30332,14 +30264,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "engines": { - "node": ">=0.12" - } - }, "node_modules/retry": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", @@ -31200,9 +31124,10 @@ } }, "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -31297,19 +31222,6 @@ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" }, - "node_modules/sql-formatter": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/sql-formatter/-/sql-formatter-12.2.4.tgz", - "integrity": "sha512-Qj45LEHSfgrdYDOrAtIkR8SdS10SWcqCIM2WZwQwMKF2v9sM0K2dlThWPS7eYCUrhttZIrU1WwuIwHk7MjsWOw==", - "dependencies": { - "argparse": "^2.0.1", - "get-stdin": "=8.0.0", - "nearley": "^2.20.1" - }, - "bin": { - "sql-formatter": "bin/sql-formatter-cli.cjs" - } - }, "node_modules/ssri": { "version": "10.0.6", "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", @@ -31769,13 +31681,14 @@ "integrity": "sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ==" }, "node_modules/sucrase": { - "version": "3.34.0", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", - "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==", + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", - "glob": "7.1.6", + "glob": "^10.3.10", "lines-and-columns": "^1.1.6", "mz": "^2.7.0", "pirates": "^4.0.1", @@ -31786,7 +31699,16 @@ "sucrase-node": "bin/sucrase-node" }, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sucrase/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" } }, "node_modules/sucrase/node_modules/commander": { @@ -31798,24 +31720,64 @@ } }, "node_modules/sucrase/node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "license": "ISC", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, - "engines": { - "node": "*" + "bin": { + "glob": "dist/esm/bin.mjs" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/sucrase/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/sucrase/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sucrase/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/superjson": { "version": "1.13.3", "resolved": "https://registry.npmjs.org/superjson/-/superjson-1.13.3.tgz", @@ -32016,33 +31978,33 @@ } }, "node_modules/tailwindcss": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.2.tgz", - "integrity": "sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w==", + "version": "3.4.15", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.15.tgz", + "integrity": "sha512-r4MeXnfBmSOuKUWmXe6h2CcyfzJCEk4F0pptO5jlnYSIViUkVmsawj80N5h2lO3gwcmSb4n3PuN+e+GC1Guylw==", + "license": "MIT", "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", - "chokidar": "^3.5.3", + "chokidar": "^3.6.0", "didyoumean": "^1.2.2", "dlv": "^1.1.3", - "fast-glob": "^3.2.12", + "fast-glob": "^3.3.2", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", - "jiti": "^1.18.2", + "jiti": "^1.21.6", "lilconfig": "^2.1.0", - "micromatch": "^4.0.5", + "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "object-hash": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.23", + "picocolors": "^1.1.1", + "postcss": "^8.4.47", "postcss-import": "^15.1.0", "postcss-js": "^4.0.1", - "postcss-load-config": "^4.0.1", - "postcss-nested": "^6.0.1", - "postcss-selector-parser": "^6.0.11", - "postcss-value-parser": "^4.2.0", - "resolve": "^1.22.2", - "sucrase": "^3.32.0" + "postcss-load-config": "^4.0.2", + "postcss-nested": "^6.2.0", + "postcss-selector-parser": "^6.1.2", + "resolve": "^1.22.8", + "sucrase": "^3.35.0" }, "bin": { "tailwind": "lib/cli.js", @@ -32065,37 +32027,6 @@ "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" }, - "node_modules/tailwindcss/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/tailwindcss/node_modules/object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/tailwindcss/node_modules/postcss-selector-parser": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", - "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", @@ -32516,6 +32447,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -33367,207 +33299,6 @@ "node": ">=16.0.0" } }, - "node_modules/tw-to-css/node_modules/arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" - }, - "node_modules/tw-to-css/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/tw-to-css/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/tw-to-css/node_modules/object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/tw-to-css/node_modules/postcss": { - "version": "8.4.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", - "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - } - ], - "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/tw-to-css/node_modules/postcss-css-variables": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/postcss-css-variables/-/postcss-css-variables-0.18.0.tgz", - "integrity": "sha512-lYS802gHbzn1GI+lXvy9MYIYDuGnl1WB4FTKoqMQqJ3Mab09A7a/1wZvGTkCEZJTM8mSbIyb1mJYn8f0aPye0Q==", - "dependencies": { - "balanced-match": "^1.0.0", - "escape-string-regexp": "^1.0.3", - "extend": "^3.0.1" - }, - "peerDependencies": { - "postcss": "^8.2.6" - } - }, - "node_modules/tw-to-css/node_modules/postcss-import": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", - "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", - "dependencies": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/tw-to-css/node_modules/postcss-load-config": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", - "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", - "dependencies": { - "lilconfig": "^2.0.5", - "yaml": "^1.10.2" - }, - "engines": { - "node": ">= 10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/tw-to-css/node_modules/postcss-nested": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.0.tgz", - "integrity": "sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==", - "dependencies": { - "postcss-selector-parser": "^6.0.10" - }, - "engines": { - "node": ">=12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.2.14" - } - }, - "node_modules/tw-to-css/node_modules/postcss-selector-parser": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", - "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/tw-to-css/node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/tw-to-css/node_modules/tailwindcss": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.2.7.tgz", - "integrity": "sha512-B6DLqJzc21x7wntlH/GsZwEXTBttVSl1FtCzC8WP4oBc/NKef7kaax5jeihkkCEWc831/5NDJ9gRNDK6NEioQQ==", - "dependencies": { - "arg": "^5.0.2", - "chokidar": "^3.5.3", - "color-name": "^1.1.4", - "detective": "^5.2.1", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.2.12", - "glob-parent": "^6.0.2", - "is-glob": "^4.0.3", - "lilconfig": "^2.0.6", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "object-hash": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.0.9", - "postcss-import": "^14.1.0", - "postcss-js": "^4.0.0", - "postcss-load-config": "^3.1.4", - "postcss-nested": "6.0.0", - "postcss-selector-parser": "^6.0.11", - "postcss-value-parser": "^4.2.0", - "quick-lru": "^5.1.1", - "resolve": "^1.22.1" - }, - "bin": { - "tailwind": "lib/cli.js", - "tailwindcss": "lib/cli.js" - }, - "engines": { - "node": ">=12.13.0" - }, - "peerDependencies": { - "postcss": "^8.0.9" - } - }, - "node_modules/tw-to-css/node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "engines": { - "node": ">= 6" - } - }, "node_modules/tween-functions": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/tween-functions/-/tween-functions-1.2.0.tgz", @@ -34553,34 +34284,6 @@ "@esbuild/win32-x64": "0.19.12" } }, - "node_modules/vite/node_modules/postcss": { - "version": "8.4.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", - "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, "node_modules/vite/node_modules/rollup": { "version": "4.13.0", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.13.0.tgz", @@ -35564,10 +35267,12 @@ "start-server-and-test": "^2.0.1" }, "devDependencies": { + "@documenso/lib": "*", "@documenso/prisma": "*", "@documenso/web": "*", "@playwright/test": "^1.18.1", - "@types/node": "^20.8.2" + "@types/node": "^20.8.2", + "pdf-lib": "^1.17.1" } }, "packages/app-tests/node_modules/@types/node": { @@ -36805,7 +36510,7 @@ "pg": "^8.11.3", "playwright": "1.43.0", "react": "^18", - "remeda": "^2.12.1", + "remeda": "^2.17.3", "sharp": "0.32.6", "stripe": "^12.7.0", "ts-pattern": "^5.0.5", @@ -36858,10 +36563,9 @@ "version": "0.0.0", "license": "MIT", "dependencies": { - "@trivago/prettier-plugin-sort-imports": "^4.1.1", - "prettier": "^2.8.8", - "prettier-plugin-sql": "^0.14.0", - "prettier-plugin-tailwindcss": "^0.2.8" + "@trivago/prettier-plugin-sort-imports": "^4.3.0", + "prettier": "^3.3.3", + "prettier-plugin-tailwindcss": "^0.6.9" }, "devDependencies": {} }, @@ -36925,38 +36629,11 @@ "@tailwindcss/typography": "^0.5.9", "autoprefixer": "^10.4.13", "postcss": "^8.4.32", - "tailwindcss": "3.3.2", + "tailwindcss": "3.4.15", "tailwindcss-animate": "^1.0.5" }, "devDependencies": {} }, - "packages/tailwind-config/node_modules/postcss": { - "version": "8.4.32", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", - "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, "packages/trpc": { "name": "@documenso/trpc", "version": "0.0.0", @@ -37051,7 +36728,7 @@ "react-hook-form": "^7.45.4", "react-pdf": "7.7.3", "react-rnd": "^10.4.1", - "remeda": "^1.27.1", + "remeda": "^2.17.3", "tailwind-merge": "^1.12.0", "tailwindcss-animate": "^1.0.5", "ts-pattern": "^5.0.5", @@ -37104,12 +36781,6 @@ "node": ">=6" } }, - "packages/ui/node_modules/remeda": { - "version": "1.61.0", - "resolved": "https://registry.npmjs.org/remeda/-/remeda-1.61.0.tgz", - "integrity": "sha512-caKfSz9rDeSKBQQnlJnVW3mbVdFgxgGWQKq1XlFokqjf+hQD5gxutLGTTY2A/x24UxVyJe9gH5fAkFI63ULw4A==", - "license": "MIT" - }, "packages/ui/node_modules/typescript": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", diff --git a/package.json b/package.json index 29f0fb6bd..988b659e6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "private": true, - "version": "1.8.1-rc.0", + "version": "1.8.1-rc.1", "scripts": { "build": "turbo run build", "build:web": "turbo run build --filter=@documenso/web", @@ -52,7 +52,7 @@ "husky": "^9.0.11", "lint-staged": "^15.2.2", "playwright": "1.43.0", - "prettier": "^2.5.1", + "prettier": "^3.3.3", "rimraf": "^5.0.1", "turbo": "^1.9.3" }, diff --git a/packages/api/v1/implementation.ts b/packages/api/v1/implementation.ts index fda6ad1a4..7338306a6 100644 --- a/packages/api/v1/implementation.ts +++ b/packages/api/v1/implementation.ts @@ -302,6 +302,7 @@ export const ApiContractV1Implementation = createNextRoute(ApiContractV1, { redirectUrl: body.meta.redirectUrl, signingOrder: body.meta.signingOrder, language: body.meta.language, + typedSignatureEnabled: body.meta.typedSignatureEnabled, requestMetadata: extractNextApiRequestMetadata(args.req), }); diff --git a/packages/api/v1/schema.ts b/packages/api/v1/schema.ts index 87e17ba8b..249d46ad7 100644 --- a/packages/api/v1/schema.ts +++ b/packages/api/v1/schema.ts @@ -3,7 +3,6 @@ import { z } from 'zod'; import { DATE_FORMATS, DEFAULT_DOCUMENT_DATE_FORMAT } from '@documenso/lib/constants/date-formats'; import { SUPPORTED_LANGUAGE_CODES } from '@documenso/lib/constants/i18n'; -import '@documenso/lib/constants/time-zones'; import { DEFAULT_DOCUMENT_TIME_ZONE, TIME_ZONES } from '@documenso/lib/constants/time-zones'; import { ZUrlSchema } from '@documenso/lib/schemas/common'; import { @@ -14,6 +13,7 @@ import { import { ZFieldMetaSchema } from '@documenso/lib/types/field-meta'; import { DocumentDataType, + DocumentDistributionMethod, DocumentSigningOrder, FieldType, ReadStatus, @@ -132,6 +132,7 @@ export const ZCreateDocumentMutationSchema = z.object({ redirectUrl: z.string(), signingOrder: z.nativeEnum(DocumentSigningOrder).optional(), language: z.enum(SUPPORTED_LANGUAGE_CODES).optional(), + typedSignatureEnabled: z.boolean().optional().default(true), }) .partial(), authOptions: z @@ -226,14 +227,14 @@ export type TCreateDocumentFromTemplateMutationResponseSchema = z.infer< export const ZGenerateDocumentFromTemplateMutationSchema = z.object({ title: z.string().optional(), - externalId: z.string().nullish(), + externalId: z.string().optional(), recipients: z .array( z.object({ id: z.number(), + email: z.string().email(), name: z.string().optional(), - email: z.string().email().min(1), - signingOrder: z.number().nullish(), + signingOrder: z.number().optional(), }), ) .refine( @@ -252,8 +253,10 @@ export const ZGenerateDocumentFromTemplateMutationSchema = z.object({ timezone: z.string(), dateFormat: z.string(), redirectUrl: ZUrlSchema, - signingOrder: z.nativeEnum(DocumentSigningOrder).optional(), - language: z.enum(SUPPORTED_LANGUAGE_CODES).optional(), + signingOrder: z.nativeEnum(DocumentSigningOrder), + language: z.enum(SUPPORTED_LANGUAGE_CODES), + distributionMethod: z.nativeEnum(DocumentDistributionMethod), + typedSignatureEnabled: z.boolean(), }) .partial() .optional(), diff --git a/packages/app-tests/e2e/features/include-document-certificate.spec.ts b/packages/app-tests/e2e/features/include-document-certificate.spec.ts new file mode 100644 index 000000000..d4fa4e58d --- /dev/null +++ b/packages/app-tests/e2e/features/include-document-certificate.spec.ts @@ -0,0 +1,271 @@ +import { expect, test } from '@playwright/test'; +import { PDFDocument } from 'pdf-lib'; + +import { getDocumentByToken } from '@documenso/lib/server-only/document/get-document-by-token'; +import { getFile } from '@documenso/lib/universal/upload/get-file'; +import { prisma } from '@documenso/prisma'; +import { DocumentStatus, FieldType } from '@documenso/prisma/client'; +import { seedPendingDocumentWithFullFields } from '@documenso/prisma/seed/documents'; +import { seedTeam } from '@documenso/prisma/seed/teams'; +import { seedUser } from '@documenso/prisma/seed/users'; + +import { apiSignin } from '../fixtures/authentication'; + +test.describe('Signing Certificate Tests', () => { + test('individual document should always include signing certificate', async ({ page }) => { + const user = await seedUser(); + + const { document, recipients } = await seedPendingDocumentWithFullFields({ + owner: user, + recipients: ['signer@example.com'], + fields: [FieldType.SIGNATURE], + }); + + const documentData = await prisma.documentData + .findFirstOrThrow({ + where: { + id: document.documentDataId, + }, + }) + .then(async (data) => getFile(data)); + + const originalPdf = await PDFDocument.load(documentData); + + const recipient = recipients[0]; + + // Sign the document + await page.goto(`/sign/${recipient.token}`); + + const canvas = page.locator('canvas'); + const box = await canvas.boundingBox(); + if (box) { + await page.mouse.move(box.x + box.width / 2, box.y + box.height / 2); + await page.mouse.down(); + await page.mouse.move(box.x + box.width / 4, box.y + box.height / 4); + await page.mouse.up(); + } + + for (const field of recipient.Field) { + await page.locator(`#field-${field.id}`).getByRole('button').click(); + + await expect(page.locator(`#field-${field.id}`)).toHaveAttribute('data-inserted', 'true'); + } + + await page.getByRole('button', { name: 'Complete' }).click(); + await page.getByRole('button', { name: 'Sign' }).click(); + await page.waitForURL(`/sign/${recipient.token}/complete`); + + await expect(async () => { + const { status } = await getDocumentByToken({ + token: recipient.token, + }); + + expect(status).toBe(DocumentStatus.COMPLETED); + }).toPass(); + + // Get the completed document + const completedDocument = await prisma.document.findFirstOrThrow({ + where: { id: document.id }, + include: { documentData: true }, + }); + + const completedDocumentData = await getFile(completedDocument.documentData); + + // Load the PDF and check number of pages + const pdfDoc = await PDFDocument.load(completedDocumentData); + + expect(pdfDoc.getPageCount()).toBe(originalPdf.getPageCount() + 1); // Original + Certificate + }); + + test('team document with signing certificate enabled should include certificate', async ({ + page, + }) => { + const team = await seedTeam(); + + const { document, recipients } = await seedPendingDocumentWithFullFields({ + owner: team.owner, + recipients: ['signer@example.com'], + fields: [FieldType.SIGNATURE], + updateDocumentOptions: { + teamId: team.id, + }, + }); + + await prisma.teamGlobalSettings.create({ + data: { + teamId: team.id, + includeSigningCertificate: true, + }, + }); + + const documentData = await prisma.documentData + .findFirstOrThrow({ + where: { + id: document.documentDataId, + }, + }) + .then(async (data) => getFile(data)); + + const originalPdf = await PDFDocument.load(documentData); + + const recipient = recipients[0]; + + // Sign the document + await page.goto(`/sign/${recipient.token}`); + + const canvas = page.locator('canvas'); + const box = await canvas.boundingBox(); + if (box) { + await page.mouse.move(box.x + box.width / 2, box.y + box.height / 2); + await page.mouse.down(); + await page.mouse.move(box.x + box.width / 4, box.y + box.height / 4); + await page.mouse.up(); + } + + for (const field of recipient.Field) { + await page.locator(`#field-${field.id}`).getByRole('button').click(); + + await expect(page.locator(`#field-${field.id}`)).toHaveAttribute('data-inserted', 'true'); + } + + await page.getByRole('button', { name: 'Complete' }).click(); + await page.getByRole('button', { name: 'Sign' }).click(); + await page.waitForURL(`/sign/${recipient.token}/complete`); + + await expect(async () => { + const { status } = await getDocumentByToken({ + token: recipient.token, + }); + + expect(status).toBe(DocumentStatus.COMPLETED); + }).toPass(); + + // Get the completed document + const completedDocument = await prisma.document.findFirstOrThrow({ + where: { id: document.id }, + include: { documentData: true }, + }); + + const completedDocumentData = await getFile(completedDocument.documentData); + + // Load the PDF and check number of pages + const completedPdf = await PDFDocument.load(completedDocumentData); + + expect(completedPdf.getPageCount()).toBe(originalPdf.getPageCount() + 1); // Original + Certificate + }); + + test('team document with signing certificate disabled should not include certificate', async ({ + page, + }) => { + const team = await seedTeam(); + + const { document, recipients } = await seedPendingDocumentWithFullFields({ + owner: team.owner, + recipients: ['signer@example.com'], + fields: [FieldType.SIGNATURE], + updateDocumentOptions: { + teamId: team.id, + }, + }); + + await prisma.teamGlobalSettings.create({ + data: { + teamId: team.id, + includeSigningCertificate: false, + }, + }); + + const documentData = await prisma.documentData + .findFirstOrThrow({ + where: { + id: document.documentDataId, + }, + }) + .then(async (data) => getFile(data)); + + const originalPdf = await PDFDocument.load(documentData); + + const recipient = recipients[0]; + + // Sign the document + await page.goto(`/sign/${recipient.token}`); + + const canvas = page.locator('canvas'); + const box = await canvas.boundingBox(); + if (box) { + await page.mouse.move(box.x + box.width / 2, box.y + box.height / 2); + await page.mouse.down(); + await page.mouse.move(box.x + box.width / 4, box.y + box.height / 4); + await page.mouse.up(); + } + + for (const field of recipient.Field) { + await page.locator(`#field-${field.id}`).getByRole('button').click(); + + await expect(page.locator(`#field-${field.id}`)).toHaveAttribute('data-inserted', 'true'); + } + + await page.getByRole('button', { name: 'Complete' }).click(); + await page.getByRole('button', { name: 'Sign' }).click(); + await page.waitForURL(`/sign/${recipient.token}/complete`); + + await expect(async () => { + const { status } = await getDocumentByToken({ + token: recipient.token, + }); + + expect(status).toBe(DocumentStatus.COMPLETED); + }).toPass(); + + // Get the completed document + const completedDocument = await prisma.document.findFirstOrThrow({ + where: { id: document.id }, + include: { documentData: true }, + }); + + const completedDocumentData = await getFile(completedDocument.documentData); + + // Load the PDF and check number of pages + const completedPdf = await PDFDocument.load(completedDocumentData); + + expect(completedPdf.getPageCount()).toBe(originalPdf.getPageCount()); + }); + + test('team can toggle signing certificate setting', async ({ page }) => { + const team = await seedTeam(); + + await apiSignin({ + page, + email: team.owner.email, + redirectPath: `/t/${team.url}/settings/preferences`, + }); + + // Toggle signing certificate setting + await page.getByLabel('Include the Signing Certificate in the Document').click(); + await page.getByRole('button', { name: /Save/ }).first().click(); + + await page.waitForTimeout(1000); + + // Verify the setting was saved + const updatedTeam = await prisma.team.findFirstOrThrow({ + where: { id: team.id }, + include: { teamGlobalSettings: true }, + }); + + expect(updatedTeam.teamGlobalSettings?.includeSigningCertificate).toBe(false); + + // Toggle the setting back to true + await page.getByLabel('Include the Signing Certificate in the Document').click(); + await page.getByRole('button', { name: /Save/ }).first().click(); + + await page.waitForTimeout(1000); + + // Verify the setting was saved + const updatedTeam2 = await prisma.team.findFirstOrThrow({ + where: { id: team.id }, + include: { teamGlobalSettings: true }, + }); + + expect(updatedTeam2.teamGlobalSettings?.includeSigningCertificate).toBe(true); + }); +}); diff --git a/packages/app-tests/e2e/teams/team-global-settings.spec.ts b/packages/app-tests/e2e/teams/team-global-settings.spec.ts index b8b5377a1..29e8428ab 100644 --- a/packages/app-tests/e2e/teams/team-global-settings.spec.ts +++ b/packages/app-tests/e2e/teams/team-global-settings.spec.ts @@ -17,19 +17,17 @@ test('[TEAMS]: update the default document visibility in the team global setting page, email: team.owner.email, password: 'password', - redirectPath: `/t/${team.url}/settings`, + redirectPath: `/t/${team.url}/settings/preferences`, }); - await page.getByRole('combobox').click(); + // !: Brittle selector + await page.getByRole('combobox').first().click(); await page.getByRole('option', { name: 'Admin' }).click(); - await page.getByRole('button', { name: 'Update team' }).click(); + await page.getByRole('button', { name: 'Save' }).first().click(); const toast = page.locator('li[role="status"][data-state="open"]').first(); await expect(toast).toBeVisible(); - await expect(toast.getByText('Success', { exact: true })).toBeVisible(); - await expect( - toast.getByText('Your team has been successfully updated.', { exact: true }), - ).toBeVisible(); + await expect(toast.getByText('Document preferences updated', { exact: true })).toBeVisible(); }); test('[TEAMS]: update the sender details in the team global settings', async ({ page }) => { @@ -41,7 +39,7 @@ test('[TEAMS]: update the sender details in the team global settings', async ({ page, email: team.owner.email, password: 'password', - redirectPath: `/t/${team.url}/settings`, + redirectPath: `/t/${team.url}/settings/preferences`, }); const checkbox = page.getByLabel('Send on Behalf of Team'); @@ -49,14 +47,11 @@ test('[TEAMS]: update the sender details in the team global settings', async ({ await expect(checkbox).toBeChecked(); - await page.getByRole('button', { name: 'Update team' }).click(); + await page.getByRole('button', { name: 'Save' }).first().click(); const toast = page.locator('li[role="status"][data-state="open"]').first(); await expect(toast).toBeVisible(); - await expect(toast.getByText('Success', { exact: true })).toBeVisible(); - await expect( - toast.getByText('Your team has been successfully updated.', { exact: true }), - ).toBeVisible(); + await expect(toast.getByText('Document preferences updated', { exact: true })).toBeVisible(); await expect(checkbox).toBeChecked(); }); diff --git a/packages/app-tests/package.json b/packages/app-tests/package.json index 18052f0ab..a5d809e39 100644 --- a/packages/app-tests/package.json +++ b/packages/app-tests/package.json @@ -7,15 +7,17 @@ "scripts": { "test:dev": "NODE_OPTIONS=--experimental-require-module playwright test", "test-ui:dev": "NODE_OPTIONS=--experimental-require-module playwright test --ui", - "test:e2e": "NODE_OPTIONS=--experimental-require-module start-server-and-test \"npm run start -w @documenso/web\" http://localhost:3000 \"playwright test\"" + "test:e2e": "NODE_OPTIONS=--experimental-require-module start-server-and-test \"npm run start -w @documenso/web\" http://localhost:3000 \"playwright test $E2E_TEST_PATH\"" }, "keywords": [], "author": "", "devDependencies": { "@playwright/test": "^1.18.1", "@types/node": "^20.8.2", + "@documenso/lib": "*", "@documenso/prisma": "*", - "@documenso/web": "*" + "@documenso/web": "*", + "pdf-lib": "^1.17.1" }, "dependencies": { "start-server-and-test": "^2.0.1" diff --git a/packages/ee/server-only/stripe/get-document-related-prices.ts.ts b/packages/ee/server-only/stripe/get-document-related-prices.ts.ts index 3d32193e7..682086734 100644 --- a/packages/ee/server-only/stripe/get-document-related-prices.ts.ts +++ b/packages/ee/server-only/stripe/get-document-related-prices.ts.ts @@ -9,6 +9,7 @@ export const getDocumentRelatedPrices = async () => { return await getPricesByPlan([ STRIPE_PLAN_TYPE.REGULAR, STRIPE_PLAN_TYPE.COMMUNITY, + STRIPE_PLAN_TYPE.PLATFORM, STRIPE_PLAN_TYPE.ENTERPRISE, ]); }; diff --git a/packages/ee/server-only/stripe/get-platform-plan-prices.ts b/packages/ee/server-only/stripe/get-platform-plan-prices.ts new file mode 100644 index 000000000..7a55caa07 --- /dev/null +++ b/packages/ee/server-only/stripe/get-platform-plan-prices.ts @@ -0,0 +1,13 @@ +import { STRIPE_PLAN_TYPE } from '@documenso/lib/constants/billing'; + +import { getPricesByPlan } from './get-prices-by-plan'; + +export const getPlatformPlanPrices = async () => { + return await getPricesByPlan(STRIPE_PLAN_TYPE.PLATFORM); +}; + +export const getPlatformPlanPriceIds = async () => { + const prices = await getPlatformPlanPrices(); + + return prices.map((price) => price.id); +}; diff --git a/packages/ee/server-only/stripe/get-primary-account-plan-prices.ts b/packages/ee/server-only/stripe/get-primary-account-plan-prices.ts index 6d00386f7..166f5c8ef 100644 --- a/packages/ee/server-only/stripe/get-primary-account-plan-prices.ts +++ b/packages/ee/server-only/stripe/get-primary-account-plan-prices.ts @@ -9,6 +9,7 @@ export const getPrimaryAccountPlanPrices = async () => { return await getPricesByPlan([ STRIPE_PLAN_TYPE.REGULAR, STRIPE_PLAN_TYPE.COMMUNITY, + STRIPE_PLAN_TYPE.PLATFORM, STRIPE_PLAN_TYPE.ENTERPRISE, ]); }; diff --git a/packages/ee/server-only/stripe/get-team-related-prices.ts b/packages/ee/server-only/stripe/get-team-related-prices.ts index b10ab06f4..debbac6ea 100644 --- a/packages/ee/server-only/stripe/get-team-related-prices.ts +++ b/packages/ee/server-only/stripe/get-team-related-prices.ts @@ -6,7 +6,11 @@ import { getPricesByPlan } from './get-prices-by-plan'; * Returns the Stripe prices of items that affect the amount of teams a user can create. */ export const getTeamRelatedPrices = async () => { - return await getPricesByPlan([STRIPE_PLAN_TYPE.COMMUNITY, STRIPE_PLAN_TYPE.ENTERPRISE]); + return await getPricesByPlan([ + STRIPE_PLAN_TYPE.COMMUNITY, + STRIPE_PLAN_TYPE.PLATFORM, + STRIPE_PLAN_TYPE.ENTERPRISE, + ]); }; /** diff --git a/packages/ee/server-only/util/is-document-platform.ts b/packages/ee/server-only/util/is-document-platform.ts new file mode 100644 index 000000000..3cea7a081 --- /dev/null +++ b/packages/ee/server-only/util/is-document-platform.ts @@ -0,0 +1,61 @@ +import { IS_BILLING_ENABLED } from '@documenso/lib/constants/app'; +import { subscriptionsContainsActivePlan } from '@documenso/lib/utils/billing'; +import { prisma } from '@documenso/prisma'; +import type { Document, Subscription } from '@documenso/prisma/client'; + +import { getPlatformPlanPriceIds } from '../stripe/get-platform-plan-prices'; + +export type IsDocumentPlatformOptions = Pick; + +/** + * Whether the user is platform, or has permission to use platform features on + * behalf of their team. + * + * It is assumed that the provided user is part of the provided team. + */ +export const isDocumentPlatform = async ({ + userId, + teamId, +}: IsDocumentPlatformOptions): Promise => { + let subscriptions: Subscription[] = []; + + if (!IS_BILLING_ENABLED()) { + return true; + } + + if (teamId) { + subscriptions = await prisma.team + .findFirstOrThrow({ + where: { + id: teamId, + }, + select: { + owner: { + include: { + Subscription: true, + }, + }, + }, + }) + .then((team) => team.owner.Subscription); + } else { + subscriptions = await prisma.user + .findFirstOrThrow({ + where: { + id: userId, + }, + select: { + Subscription: true, + }, + }) + .then((user) => user.Subscription); + } + + if (subscriptions.length === 0) { + return false; + } + + const platformPlanPriceIds = await getPlatformPlanPriceIds(); + + return subscriptionsContainsActivePlan(subscriptions, platformPlanPriceIds); +}; diff --git a/packages/lib/constants/billing.ts b/packages/lib/constants/billing.ts index 17178662d..f552479a1 100644 --- a/packages/lib/constants/billing.ts +++ b/packages/lib/constants/billing.ts @@ -7,5 +7,6 @@ export enum STRIPE_PLAN_TYPE { REGULAR = 'regular', TEAM = 'team', COMMUNITY = 'community', + PLATFORM = 'platform', ENTERPRISE = 'enterprise', } diff --git a/packages/lib/jobs/definitions/emails/send-team-deleted-email.ts b/packages/lib/jobs/definitions/emails/send-team-deleted-email.ts index 3f943b89e..0b39bd0b8 100644 --- a/packages/lib/jobs/definitions/emails/send-team-deleted-email.ts +++ b/packages/lib/jobs/definitions/emails/send-team-deleted-email.ts @@ -17,12 +17,14 @@ const SEND_TEAM_DELETED_EMAIL_JOB_DEFINITION_SCHEMA = z.object({ documentVisibility: z.nativeEnum(DocumentVisibility), documentLanguage: z.string(), includeSenderDetails: z.boolean(), + includeSigningCertificate: z.boolean(), brandingEnabled: z.boolean(), brandingLogo: z.string(), brandingUrl: z.string(), brandingCompanyDetails: z.string(), brandingHidePoweredBy: z.boolean(), teamId: z.number(), + typedSignatureEnabled: z.boolean(), }) .nullish(), }), diff --git a/packages/lib/jobs/definitions/internal/seal-document.ts b/packages/lib/jobs/definitions/internal/seal-document.ts index f37b390d1..53d1f9873 100644 --- a/packages/lib/jobs/definitions/internal/seal-document.ts +++ b/packages/lib/jobs/definitions/internal/seal-document.ts @@ -57,7 +57,17 @@ export const SEAL_DOCUMENT_JOB_DEFINITION = { }, }, include: { + documentMeta: true, Recipient: true, + team: { + select: { + teamGlobalSettings: { + select: { + includeSigningCertificate: true, + }, + }, + }, + }, }, }); @@ -117,7 +127,13 @@ export const SEAL_DOCUMENT_JOB_DEFINITION = { } const pdfData = await getFile(documentData); - const certificateData = await getCertificatePdf({ documentId }).catch(() => null); + const certificateData = + (document.team?.teamGlobalSettings?.includeSigningCertificate ?? true) + ? await getCertificatePdf({ + documentId, + language: document.documentMeta?.language, + }).catch(() => null) + : null; const newDataId = await io.runTask('decorate-and-sign-pdf', async () => { const pdfDoc = await PDFDocument.load(pdfData); diff --git a/packages/lib/package.json b/packages/lib/package.json index 0dc897f98..e4142199b 100644 --- a/packages/lib/package.json +++ b/packages/lib/package.json @@ -51,7 +51,7 @@ "pg": "^8.11.3", "playwright": "1.43.0", "react": "^18", - "remeda": "^2.12.1", + "remeda": "^2.17.3", "sharp": "0.32.6", "stripe": "^12.7.0", "ts-pattern": "^5.0.5", diff --git a/packages/lib/server-only/document/create-document.ts b/packages/lib/server-only/document/create-document.ts index 2d119eb7e..d9e86f2da 100644 --- a/packages/lib/server-only/document/create-document.ts +++ b/packages/lib/server-only/document/create-document.ts @@ -112,6 +112,7 @@ export const createDocument = async ({ documentMeta: { create: { language: team?.teamGlobalSettings?.documentLanguage, + typedSignatureEnabled: team?.teamGlobalSettings?.typedSignatureEnabled, }, }, }, diff --git a/packages/lib/server-only/document/seal-document.ts b/packages/lib/server-only/document/seal-document.ts index 31e66d25f..1a5c1adbf 100644 --- a/packages/lib/server-only/document/seal-document.ts +++ b/packages/lib/server-only/document/seal-document.ts @@ -10,7 +10,6 @@ import { DocumentStatus, RecipientRole, SigningStatus } from '@documenso/prisma/ import { WebhookTriggerEvents } from '@documenso/prisma/client'; import { signPdf } from '@documenso/signing'; -import { ZSupportedLanguageCodeSchema } from '../../constants/i18n'; import type { RequestMetadata } from '../../universal/extract-request-metadata'; import { getFile } from '../../universal/upload/get-file'; import { putPdfFile } from '../../universal/upload/put-file'; @@ -48,6 +47,15 @@ export const sealDocument = async ({ documentData: true, documentMeta: true, Recipient: true, + team: { + select: { + teamGlobalSettings: { + select: { + includeSigningCertificate: true, + }, + }, + }, + }, }, }); @@ -92,11 +100,13 @@ export const sealDocument = async ({ // !: Need to write the fields onto the document as a hard copy const pdfData = await getFile(documentData); - const documentLanguage = ZSupportedLanguageCodeSchema.parse(document.documentMeta?.language); - - const certificate = await getCertificatePdf({ documentId, language: documentLanguage }) - .then(async (doc) => PDFDocument.load(doc)) - .catch(() => null); + const certificateData = + (document.team?.teamGlobalSettings?.includeSigningCertificate ?? true) + ? await getCertificatePdf({ + documentId, + language: document.documentMeta?.language, + }).catch(() => null) + : null; const doc = await PDFDocument.load(pdfData); @@ -105,7 +115,9 @@ export const sealDocument = async ({ flattenForm(doc); flattenAnnotations(doc); - if (certificate) { + if (certificateData) { + const certificate = await PDFDocument.load(certificateData); + const certificatePages = await doc.copyPages(certificate, certificate.getPageIndices()); certificatePages.forEach((page) => { diff --git a/packages/lib/server-only/field/sign-field-with-token.ts b/packages/lib/server-only/field/sign-field-with-token.ts index 087de646b..192c0c001 100644 --- a/packages/lib/server-only/field/sign-field-with-token.ts +++ b/packages/lib/server-only/field/sign-field-with-token.ts @@ -177,6 +177,10 @@ export const signFieldWithToken = async ({ throw new Error('Signature field must have a signature'); } + if (isSignatureField && !documentMeta?.typedSignatureEnabled && typedSignature) { + throw new Error('Typed signatures are not allowed. Please draw your signature'); + } + return await prisma.$transaction(async (tx) => { const updatedField = await tx.field.update({ where: { diff --git a/packages/lib/server-only/htmltopdf/get-certificate-pdf.ts b/packages/lib/server-only/htmltopdf/get-certificate-pdf.ts index e5348ae1e..7e6c48349 100644 --- a/packages/lib/server-only/htmltopdf/get-certificate-pdf.ts +++ b/packages/lib/server-only/htmltopdf/get-certificate-pdf.ts @@ -2,12 +2,13 @@ import { DateTime } from 'luxon'; import type { Browser } from 'playwright'; import { NEXT_PUBLIC_WEBAPP_URL } from '../../constants/app'; -import type { SupportedLanguageCodes } from '../../constants/i18n'; +import { type SupportedLanguageCodes, isValidLanguageCode } from '../../constants/i18n'; import { encryptSecondaryData } from '../crypto/encrypt'; export type GetCertificatePdfOptions = { documentId: number; - language?: SupportedLanguageCodes; + // eslint-disable-next-line @typescript-eslint/ban-types + language?: SupportedLanguageCodes | (string & {}); }; export const getCertificatePdf = async ({ documentId, language }: GetCertificatePdfOptions) => { @@ -38,15 +39,15 @@ export const getCertificatePdf = async ({ documentId, language }: GetCertificate const page = await browserContext.newPage(); - if (language) { - await page.context().addCookies([ - { - name: 'language', - value: language, - url: NEXT_PUBLIC_WEBAPP_URL(), - }, - ]); - } + const lang = isValidLanguageCode(language) ? language : 'en'; + + await page.context().addCookies([ + { + name: 'language', + value: lang, + url: NEXT_PUBLIC_WEBAPP_URL(), + }, + ]); await page.goto(`${NEXT_PUBLIC_WEBAPP_URL()}/__htmltopdf/certificate?d=${encryptedId}`, { waitUntil: 'networkidle', diff --git a/packages/lib/server-only/pdf/insert-field-in-pdf.ts b/packages/lib/server-only/pdf/insert-field-in-pdf.ts index 044fbf79c..f5c5bc0df 100644 --- a/packages/lib/server-only/pdf/insert-field-in-pdf.ts +++ b/packages/lib/server-only/pdf/insert-field-in-pdf.ts @@ -82,7 +82,10 @@ export const insertFieldInPDF = async (pdf: PDFDocument, field: FieldWithSignatu const fieldX = pageWidth * (Number(field.positionX) / 100); const fieldY = pageHeight * (Number(field.positionY) / 100); - const font = await pdf.embedFont(isSignatureField ? fontCaveat : fontNoto); + const font = await pdf.embedFont( + isSignatureField ? fontCaveat : fontNoto, + isSignatureField ? { features: { calt: false } } : undefined, + ); if (field.type === FieldType.SIGNATURE || field.type === FieldType.FREE_SIGNATURE) { await pdf.embedFont(fontCaveat); @@ -92,45 +95,89 @@ export const insertFieldInPDF = async (pdf: PDFDocument, field: FieldWithSignatu .with( { type: P.union(FieldType.SIGNATURE, FieldType.FREE_SIGNATURE), - Signature: { signatureImageAsBase64: P.string }, }, async (field) => { - const image = await pdf.embedPng(field.Signature?.signatureImageAsBase64 ?? ''); + if (field.Signature?.signatureImageAsBase64) { + const image = await pdf.embedPng(field.Signature?.signatureImageAsBase64 ?? ''); - let imageWidth = image.width; - let imageHeight = image.height; + let imageWidth = image.width; + let imageHeight = image.height; - const scalingFactor = Math.min(fieldWidth / imageWidth, fieldHeight / imageHeight, 1); + const scalingFactor = Math.min(fieldWidth / imageWidth, fieldHeight / imageHeight, 1); - imageWidth = imageWidth * scalingFactor; - imageHeight = imageHeight * scalingFactor; + imageWidth = imageWidth * scalingFactor; + imageHeight = imageHeight * scalingFactor; - let imageX = fieldX + (fieldWidth - imageWidth) / 2; - let imageY = fieldY + (fieldHeight - imageHeight) / 2; + let imageX = fieldX + (fieldWidth - imageWidth) / 2; + let imageY = fieldY + (fieldHeight - imageHeight) / 2; - // Invert the Y axis since PDFs use a bottom-left coordinate system - imageY = pageHeight - imageY - imageHeight; + // Invert the Y axis since PDFs use a bottom-left coordinate system + imageY = pageHeight - imageY - imageHeight; - if (pageRotationInDegrees !== 0) { - const adjustedPosition = adjustPositionForRotation( - pageWidth, - pageHeight, - imageX, - imageY, - pageRotationInDegrees, - ); + if (pageRotationInDegrees !== 0) { + const adjustedPosition = adjustPositionForRotation( + pageWidth, + pageHeight, + imageX, + imageY, + pageRotationInDegrees, + ); - imageX = adjustedPosition.xPos; - imageY = adjustedPosition.yPos; + imageX = adjustedPosition.xPos; + imageY = adjustedPosition.yPos; + } + + page.drawImage(image, { + x: imageX, + y: imageY, + width: imageWidth, + height: imageHeight, + rotate: degrees(pageRotationInDegrees), + }); + } else { + const signatureText = field.Signature?.typedSignature ?? ''; + + const longestLineInTextForWidth = signatureText + .split('\n') + .sort((a, b) => b.length - a.length)[0]; + + let fontSize = maxFontSize; + let textWidth = font.widthOfTextAtSize(longestLineInTextForWidth, fontSize); + let textHeight = font.heightAtSize(fontSize); + + const scalingFactor = Math.min(fieldWidth / textWidth, fieldHeight / textHeight, 1); + fontSize = Math.max(Math.min(fontSize * scalingFactor, maxFontSize), minFontSize); + + textWidth = font.widthOfTextAtSize(longestLineInTextForWidth, fontSize); + textHeight = font.heightAtSize(fontSize); + + let textX = fieldX + (fieldWidth - textWidth) / 2; + let textY = fieldY + (fieldHeight - textHeight) / 2; + + // Invert the Y axis since PDFs use a bottom-left coordinate system + textY = pageHeight - textY - textHeight; + + if (pageRotationInDegrees !== 0) { + const adjustedPosition = adjustPositionForRotation( + pageWidth, + pageHeight, + textX, + textY, + pageRotationInDegrees, + ); + + textX = adjustedPosition.xPos; + textY = adjustedPosition.yPos; + } + + page.drawText(signatureText, { + x: textX, + y: textY, + size: fontSize, + font, + rotate: degrees(pageRotationInDegrees), + }); } - - page.drawImage(image, { - x: imageX, - y: imageY, - width: imageWidth, - height: imageHeight, - rotate: degrees(pageRotationInDegrees), - }); }, ) .with({ type: FieldType.CHECKBOX }, (field) => { diff --git a/packages/lib/server-only/team/update-team-document-settings.ts b/packages/lib/server-only/team/update-team-document-settings.ts index b57b6dbb0..e35e8e9b5 100644 --- a/packages/lib/server-only/team/update-team-document-settings.ts +++ b/packages/lib/server-only/team/update-team-document-settings.ts @@ -12,6 +12,8 @@ export type UpdateTeamDocumentSettingsOptions = { documentVisibility: DocumentVisibility; documentLanguage: SupportedLanguageCodes; includeSenderDetails: boolean; + typedSignatureEnabled: boolean; + includeSigningCertificate: boolean; }; }; @@ -20,7 +22,13 @@ export const updateTeamDocumentSettings = async ({ teamId, settings, }: UpdateTeamDocumentSettingsOptions) => { - const { documentVisibility, documentLanguage, includeSenderDetails } = settings; + const { + documentVisibility, + documentLanguage, + includeSenderDetails, + includeSigningCertificate, + typedSignatureEnabled, + } = settings; const member = await prisma.teamMember.findFirst({ where: { @@ -42,11 +50,15 @@ export const updateTeamDocumentSettings = async ({ documentVisibility, documentLanguage, includeSenderDetails, + typedSignatureEnabled, + includeSigningCertificate, }, update: { documentVisibility, documentLanguage, includeSenderDetails, + typedSignatureEnabled, + includeSigningCertificate, }, }); }; diff --git a/packages/lib/server-only/team/update-team.ts b/packages/lib/server-only/team/update-team.ts index 02f3b57ab..b172d3359 100644 --- a/packages/lib/server-only/team/update-team.ts +++ b/packages/lib/server-only/team/update-team.ts @@ -4,7 +4,6 @@ import { TEAM_MEMBER_ROLE_PERMISSIONS_MAP } from '@documenso/lib/constants/teams import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error'; import { prisma } from '@documenso/prisma'; import { Prisma } from '@documenso/prisma/client'; -import type { DocumentVisibility } from '@documenso/prisma/client'; export type UpdateTeamOptions = { userId: number; @@ -12,8 +11,6 @@ export type UpdateTeamOptions = { data: { name?: string; url?: string; - documentVisibility?: DocumentVisibility; - includeSenderDetails?: boolean; }; }; @@ -45,18 +42,6 @@ export const updateTeam = async ({ userId, teamId, data }: UpdateTeamOptions) => data: { url: data.url, name: data.name, - teamGlobalSettings: { - upsert: { - create: { - documentVisibility: data.documentVisibility, - includeSenderDetails: data.includeSenderDetails, - }, - update: { - documentVisibility: data.documentVisibility, - includeSenderDetails: data.includeSenderDetails, - }, - }, - }, }, }); diff --git a/packages/lib/server-only/template/create-document-from-template.ts b/packages/lib/server-only/template/create-document-from-template.ts index 4b010a409..72418bcab 100644 --- a/packages/lib/server-only/template/create-document-from-template.ts +++ b/packages/lib/server-only/template/create-document-from-template.ts @@ -64,6 +64,7 @@ export type CreateDocumentFromTemplateOptions = { signingOrder?: DocumentSigningOrder; language?: SupportedLanguageCodes; distributionMethod?: DocumentDistributionMethod; + typedSignatureEnabled?: boolean; }; requestMetadata?: RequestMetadata; }; @@ -146,7 +147,7 @@ export const createDocumentFromTemplate = async ({ return { templateRecipientId: templateRecipient.id, fields: templateRecipient.Field, - name: foundRecipient ? foundRecipient.name ?? '' : templateRecipient.name, + name: foundRecipient ? (foundRecipient.name ?? '') : templateRecipient.name, email: foundRecipient ? foundRecipient.email : templateRecipient.email, role: templateRecipient.role, signingOrder: foundRecipient?.signingOrder ?? templateRecipient.signingOrder, @@ -196,6 +197,8 @@ export const createDocumentFromTemplate = async ({ override?.language || template.templateMeta?.language || template.team?.teamGlobalSettings?.documentLanguage, + typedSignatureEnabled: + override?.typedSignatureEnabled ?? template.templateMeta?.typedSignatureEnabled, }, }, Recipient: { diff --git a/packages/lib/translations/de/common.po b/packages/lib/translations/de/common.po index 65237064c..af937df44 100644 --- a/packages/lib/translations/de/common.po +++ b/packages/lib/translations/de/common.po @@ -448,7 +448,7 @@ msgid "Advanced Options" msgstr "Erweiterte Optionen" #: packages/ui/primitives/document-flow/add-fields.tsx:576 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:409 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:414 msgid "Advanced settings" msgstr "Erweiterte Einstellungen" @@ -504,11 +504,11 @@ msgstr "Genehmigung" msgid "Before you get started, please confirm your email address by clicking the button below:" msgstr "Bitte bestätige vor dem Start deine E-Mail-Adresse, indem du auf den Button unten klickst:" -#: packages/ui/primitives/signature-pad/signature-pad.tsx:377 +#: packages/ui/primitives/signature-pad/signature-pad.tsx:383 msgid "Black" msgstr "Schwarz" -#: packages/ui/primitives/signature-pad/signature-pad.tsx:391 +#: packages/ui/primitives/signature-pad/signature-pad.tsx:397 msgid "Blue" msgstr "Blau" @@ -566,7 +566,7 @@ msgstr "Checkbox-Werte" msgid "Clear filters" msgstr "Filter löschen" -#: packages/ui/primitives/signature-pad/signature-pad.tsx:411 +#: packages/ui/primitives/signature-pad/signature-pad.tsx:417 msgid "Clear Signature" msgstr "Unterschrift löschen" @@ -594,7 +594,7 @@ msgid "Configure Direct Recipient" msgstr "Direkten Empfänger konfigurieren" #: packages/ui/primitives/document-flow/add-fields.tsx:577 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:410 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:415 msgid "Configure the {0} field" msgstr "Konfigurieren Sie das Feld {0}" @@ -657,7 +657,7 @@ msgstr "Benutzerdefinierter Text" #: packages/ui/primitives/document-flow/add-fields.tsx:934 #: packages/ui/primitives/document-flow/types.ts:53 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:697 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:729 msgid "Date" msgstr "Datum" @@ -801,7 +801,7 @@ msgid "Drag & drop your PDF here." msgstr "Ziehen Sie Ihr PDF hierher." #: packages/ui/primitives/document-flow/add-fields.tsx:1065 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:827 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:860 msgid "Dropdown" msgstr "Dropdown" @@ -815,7 +815,7 @@ msgstr "Dropdown-Optionen" #: packages/ui/primitives/document-flow/add-signers.tsx:512 #: packages/ui/primitives/document-flow/add-signers.tsx:519 #: packages/ui/primitives/document-flow/types.ts:54 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:645 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:677 #: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:471 #: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:478 msgid "Email" @@ -851,6 +851,7 @@ msgid "Enable signing order" msgstr "Aktiviere die Signaturreihenfolge" #: packages/ui/primitives/document-flow/add-fields.tsx:802 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:597 msgid "Enable Typed Signatures" msgstr "Aktivieren Sie getippte Unterschriften" @@ -938,7 +939,7 @@ msgstr "Globale Empfängerauthentifizierung" msgid "Go Back" msgstr "Zurück" -#: packages/ui/primitives/signature-pad/signature-pad.tsx:398 +#: packages/ui/primitives/signature-pad/signature-pad.tsx:404 msgid "Green" msgstr "Grün" @@ -1033,7 +1034,7 @@ msgstr "Min" #: packages/ui/primitives/document-flow/add-signers.tsx:550 #: packages/ui/primitives/document-flow/add-signers.tsx:556 #: packages/ui/primitives/document-flow/types.ts:55 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:671 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:703 #: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:506 #: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:512 msgid "Name" @@ -1052,7 +1053,7 @@ msgid "Needs to view" msgstr "Muss sehen" #: packages/ui/primitives/document-flow/add-fields.tsx:693 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:511 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:516 msgid "No recipient matching this description was found." msgstr "Kein passender Empfänger mit dieser Beschreibung gefunden." @@ -1061,7 +1062,7 @@ msgid "No recipients" msgstr "Keine Empfänger" #: packages/ui/primitives/document-flow/add-fields.tsx:708 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:526 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:531 msgid "No recipients with this role" msgstr "Keine Empfänger mit dieser Rolle" @@ -1091,7 +1092,7 @@ msgstr "Keine" #: packages/ui/primitives/document-flow/add-fields.tsx:986 #: packages/ui/primitives/document-flow/types.ts:56 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:749 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:781 msgid "Number" msgstr "Nummer" @@ -1183,7 +1184,6 @@ msgid "Please try again or contact our support." msgstr "Bitte versuchen Sie es erneut oder kontaktieren Sie unseren Support." #: packages/ui/primitives/document-flow/types.ts:57 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:775 msgid "Radio" msgstr "Radio" @@ -1226,7 +1226,7 @@ msgstr "E-Mail des entfernten Empfängers" msgid "Recipient signing request email" msgstr "E-Mail zur Unterzeichnungsanfrage des Empfängers" -#: packages/ui/primitives/signature-pad/signature-pad.tsx:384 +#: packages/ui/primitives/signature-pad/signature-pad.tsx:390 msgid "Red" msgstr "Rot" @@ -1295,7 +1295,7 @@ msgstr "Zeilen pro Seite" msgid "Save" msgstr "Speichern" -#: packages/ui/primitives/template-flow/add-template-fields.tsx:861 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:893 msgid "Save Template" msgstr "Vorlage speichern" @@ -1388,7 +1388,7 @@ msgstr "Anmelden" #: packages/ui/primitives/document-flow/add-signature.tsx:323 #: packages/ui/primitives/document-flow/field-icon.tsx:52 #: packages/ui/primitives/document-flow/types.ts:49 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:593 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:625 msgid "Signature" msgstr "Unterschrift" @@ -1473,7 +1473,7 @@ msgstr "Vorlagentitel" #: packages/ui/primitives/document-flow/add-fields.tsx:960 #: packages/ui/primitives/document-flow/types.ts:52 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:723 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:755 msgid "Text" msgstr "Text" @@ -1637,7 +1637,7 @@ msgid "Title" msgstr "Titel" #: packages/ui/primitives/document-flow/add-fields.tsx:1080 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:841 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:873 msgid "To proceed further, please set at least one value for the {0} field." msgstr "Um fortzufahren, legen Sie bitte mindestens einen Wert für das Feld {0} fest." diff --git a/packages/lib/translations/de/web.po b/packages/lib/translations/de/web.po index 253ea08b2..07b10dc5f 100644 --- a/packages/lib/translations/de/web.po +++ b/packages/lib/translations/de/web.po @@ -18,7 +18,7 @@ msgstr "" "X-Crowdin-File: web.po\n" "X-Crowdin-File-ID: 8\n" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:214 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:226 msgid "\"{0}\" has invited you to sign \"example document\"." msgstr "\"{0}\" hat Sie eingeladen, \"Beispieldokument\" zu unterschreiben." @@ -31,8 +31,8 @@ msgid "\"{documentTitle}\" has been successfully deleted" msgstr "\"{documentTitle}\" wurde erfolgreich gelöscht" #: apps/web/src/components/(teams)/forms/update-team-form.tsx:234 -msgid "\"{email}\" on behalf of \"{teamName}\" has invited you to sign \"example document\"." -msgstr "\"{email}\" im Namen von \"{teamName}\" hat Sie eingeladen, \"Beispieldokument\" zu unterschreiben." +#~ msgid "\"{email}\" on behalf of \"{teamName}\" has invited you to sign \"example document\"." +#~ msgstr "\"{email}\" im Namen von \"{teamName}\" hat Sie eingeladen, \"Beispieldokument\" zu unterschreiben." #: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:209 #~ msgid "" @@ -42,23 +42,23 @@ msgstr "\"{email}\" im Namen von \"{teamName}\" hat Sie eingeladen, \"Beispieldo #~ "\"{placeholderEmail}\" on behalf of \"{0}\" has invited you to sign \"example\n" #~ "document\"." -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:209 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:221 msgid "\"{placeholderEmail}\" on behalf of \"{0}\" has invited you to sign \"example document\"." msgstr "\"{placeholderEmail}\" im Namen von \"{0}\" hat Sie eingeladen, \"Beispieldokument\" zu unterzeichnen." #: apps/web/src/components/(teams)/forms/update-team-form.tsx:241 -msgid "\"{teamUrl}\" has invited you to sign \"example document\"." -msgstr "\"{teamUrl}\" hat Sie eingeladen, \"Beispieldokument\" zu unterschreiben." +#~ msgid "\"{teamUrl}\" has invited you to sign \"example document\"." +#~ msgstr "\"{teamUrl}\" hat Sie eingeladen, \"Beispieldokument\" zu unterschreiben." -#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:80 +#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:83 msgid "({0}) has invited you to approve this document" msgstr "({0}) hat dich eingeladen, dieses Dokument zu genehmigen" -#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:77 +#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:80 msgid "({0}) has invited you to sign this document" msgstr "({0}) hat dich eingeladen, dieses Dokument zu unterzeichnen" -#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:74 +#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:77 msgid "({0}) has invited you to view this document" msgstr "({0}) hat dich eingeladen, dieses Dokument zu betrachten" @@ -71,7 +71,7 @@ msgstr "{0, plural, one {(1 Zeichen über dem Limit)} other {(# Zeichen über de msgid "{0, plural, one {# character over the limit} other {# characters over the limit}}" msgstr "{0, plural, one {# Zeichen über dem Limit} other {# Zeichen über dem Limit}}" -#: apps/web/src/app/(recipient)/d/[token]/page.tsx:82 +#: apps/web/src/app/(recipient)/d/[token]/page.tsx:84 msgid "{0, plural, one {# recipient} other {# recipients}}" msgstr "{0, plural, one {# Empfänger} other {# Empfänger}}" @@ -88,11 +88,11 @@ msgstr "{0, plural, one {<0>Du hast <1>1 ausstehende Team-Einladung} oth msgid "{0, plural, one {1 matching field} other {# matching fields}}" msgstr "{0, plural, one {1 passendes Feld} other {# passende Felder}}" -#: apps/web/src/app/(dashboard)/documents/[id]/edit/document-edit-page-view.tsx:129 +#: apps/web/src/app/(dashboard)/documents/[id]/edit/document-edit-page-view.tsx:132 msgid "{0, plural, one {1 Recipient} other {# Recipients}}" msgstr "{0, plural, one {1 Empfänger} other {# Empfänger}}" -#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:235 +#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:238 msgid "{0, plural, one {Waiting on 1 recipient} other {Waiting on # recipients}}" msgstr "{0, plural, one {Warte auf 1 Empfänger} other {Warte auf # Empfänger}}" @@ -116,7 +116,7 @@ msgstr "{0} direkte Signaturvorlagen" msgid "{0} of {1} documents remaining this month." msgstr "{0} von {1} Dokumenten verbleibend in diesem Monat." -#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:170 +#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:173 msgid "{0} Recipient(s)" msgstr "{0} Empfänger(in)" @@ -157,6 +157,18 @@ msgstr "<0>\"{0}\" steht nicht mehr zur Unterschrift zur Verfügung" msgid "<0>Sender: All" msgstr "<0>Absender: Alle" +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:104 +msgid "<0>You are about to complete approving <1>\"{documentTitle}\".<2/> Are you sure?" +msgstr "" + +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:90 +msgid "<0>You are about to complete signing \"<1>{documentTitle}\".<2/> Are you sure?" +msgstr "" + +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:76 +msgid "<0>You are about to complete viewing \"<1>{documentTitle}\".<2/> Are you sure?" +msgstr "" + #: apps/web/src/components/(dashboard)/settings/token/contants.ts:5 msgid "1 month" msgstr "1 Monat" @@ -240,7 +252,7 @@ msgid "A unique URL to access your profile" msgstr "Eine eindeutige URL, um auf dein Profil zuzugreifen" #: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:206 -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:179 +#: apps/web/src/components/(teams)/forms/update-team-form.tsx:138 msgid "A unique URL to identify your team" msgstr "Eine eindeutige URL, um dein Team zu identifizieren" @@ -296,7 +308,7 @@ msgstr "Aktion" msgid "Actions" msgstr "Aktionen" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:107 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:101 #: apps/web/src/components/(teams)/tables/teams-member-page-data-table.tsx:76 #: apps/web/src/components/(teams)/tables/user-settings-teams-page-data-table.tsx:71 msgid "Active" @@ -472,9 +484,12 @@ msgstr "Eine E-Mail, in der die Übertragung dieses Teams angefordert wird, wurd msgid "An error occurred" msgstr "Ein Fehler ist aufgetreten" +#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:257 +msgid "An error occurred while adding fields." +msgstr "" + #: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:269 -#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:201 -#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:235 +#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:218 msgid "An error occurred while adding signers." msgstr "Ein Fehler ist aufgetreten, während Unterzeichner hinzugefügt wurden." @@ -536,7 +551,7 @@ msgstr "Ein Fehler ist beim Entfernen des Feldes aufgetreten." #: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:148 #: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:195 #: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:129 -#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:173 +#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:190 msgid "An error occurred while removing the signature." msgstr "Ein Fehler ist aufgetreten, während die Unterschrift entfernt wurde." @@ -560,7 +575,7 @@ msgstr "Beim Senden Ihrer Bestätigungs-E-Mail ist ein Fehler aufgetreten" #: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:122 #: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:150 #: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:102 -#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:147 +#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:164 #: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:168 msgid "An error occurred while signing the document." msgstr "Ein Fehler ist aufgetreten, während das Dokument unterzeichnet wurde." @@ -570,7 +585,7 @@ msgid "An error occurred while trying to create a checkout session." msgstr "Ein Fehler ist aufgetreten, während versucht wurde, eine Checkout-Sitzung zu erstellen." #: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:235 -#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:170 +#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:187 msgid "An error occurred while updating the document settings." msgstr "Ein Fehler ist aufgetreten, während die Dokumenteinstellungen aktualisiert wurden." @@ -608,7 +623,7 @@ msgstr "Ein Fehler ist aufgetreten, während dein Dokument hochgeladen wurde." #: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:116 #: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:89 #: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:100 -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:134 +#: apps/web/src/components/(teams)/forms/update-team-form.tsx:93 #: apps/web/src/components/forms/avatar-image.tsx:94 #: apps/web/src/components/forms/avatar-image.tsx:122 #: apps/web/src/components/forms/password.tsx:84 @@ -662,7 +677,7 @@ msgstr "App-Version" #: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:89 #: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:120 #: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:150 -#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:125 +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:142 msgid "Approve" msgstr "Genehmigen" @@ -725,7 +740,7 @@ msgstr "Avatar" msgid "Avatar Updated" msgstr "Avatar aktualisiert" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:127 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:121 msgid "Awaiting email confirmation" msgstr "Warte auf E-Mail-Bestätigung" @@ -836,8 +851,8 @@ msgstr "Durch die Verwendung der elektronischen Unterschriftsfunktion stimmen Si #: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:215 #: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:328 #: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:153 -#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:113 -#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:248 +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:130 +#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:305 #: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:335 #: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:121 #: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:176 @@ -930,8 +945,8 @@ msgstr "Klicken Sie, um den Signatur-Link zu kopieren, um ihn an den Empfänger #: apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx:175 #: apps/web/src/app/(signing)/sign/[token]/form.tsx:115 -#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:440 -#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:319 +#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:456 +#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:335 msgid "Click to insert field" msgstr "Klicken Sie, um das Feld einzufügen" @@ -948,22 +963,22 @@ msgstr "Klicken Sie, um das Feld einzufügen" msgid "Close" msgstr "Schließen" -#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:61 -#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:430 -#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:309 +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:60 +#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:446 +#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:325 #: apps/web/src/components/forms/v2/signup.tsx:534 msgid "Complete" msgstr "Vollständig" -#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:70 +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:69 msgid "Complete Approval" msgstr "Genehmigung abschließen" -#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:69 +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:68 msgid "Complete Signing" msgstr "Unterzeichnung abschließen" -#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:68 +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:67 msgid "Complete Viewing" msgstr "Betrachten abschließen" @@ -1049,18 +1064,26 @@ msgstr "Fortfahren" msgid "Continue to login" msgstr "Weiter zum Login" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:173 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:185 msgid "Controls the default language of an uploaded document. This will be used as the language in email communications with the recipients." msgstr "Steuert die Standardsprache eines hochgeladenen Dokuments. Diese wird als Sprache in der E-Mail-Kommunikation mit den Empfängern verwendet." -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:141 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:153 msgid "Controls the default visibility of an uploaded document." msgstr "Steuert die Standard-sichtbarkeit eines hochgeladenen Dokuments." -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:220 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:232 msgid "Controls the formatting of the message that will be sent when inviting a recipient to sign a document. If a custom message has been provided while configuring the document, it will be used instead." msgstr "Steuert das Format der Nachricht, die gesendet wird, wenn ein Empfänger eingeladen wird, ein Dokument zu unterschreiben. Wenn eine benutzerdefinierte Nachricht beim Konfigurieren des Dokuments bereitgestellt wurde, wird diese stattdessen verwendet." +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:263 +msgid "Controls whether the recipients can sign the documents using a typed signature. Enable or disable the typed signature globally." +msgstr "" + +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:293 +msgid "Controls whether the signing certificate will be included in the document when it is downloaded. The signing certificate can still be downloaded from the logs page separately." +msgstr "" + #: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:128 msgid "Copied" msgstr "Kopiert" @@ -1178,7 +1201,7 @@ msgstr "Webhook erstellen" msgid "Create Webhook" msgstr "Webhook erstellen" -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:215 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:213 msgid "Create your account and start using state-of-the-art document signing." msgstr "Erstellen Sie Ihr Konto und beginnen Sie mit dem modernen Dokumentensignieren." @@ -1251,12 +1274,11 @@ msgstr "Ablehnen" msgid "Declined team invitation" msgstr "Team-Einladung abgelehnt" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:153 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:165 msgid "Default Document Language" msgstr "Standardsprache des Dokuments" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:117 -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:195 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:129 msgid "Default Document Visibility" msgstr "Standard Sichtbarkeit des Dokuments" @@ -1265,7 +1287,6 @@ msgid "delete" msgstr "löschen" #: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:144 -#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:210 #: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:202 #: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:177 #: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:211 @@ -1317,7 +1338,7 @@ msgstr "Dokument löschen" msgid "Delete passkey" msgstr "Passkey löschen" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:197 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:191 #: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:118 msgid "Delete team" msgstr "Team löschen" @@ -1357,7 +1378,7 @@ msgid "Details" msgstr "Einzelheiten" #: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:75 -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:234 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:242 msgid "Device" msgstr "Gerät" @@ -1456,7 +1477,7 @@ msgstr "Dokument" msgid "Document All" msgstr "Dokument Alle" -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:134 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:132 msgid "Document Approved" msgstr "Dokument genehmigt" @@ -1472,7 +1493,7 @@ msgstr "Dokument abgebrochen" msgid "Document completed" msgstr "Dokument abgeschlossen" -#: apps/web/src/app/embed/completed.tsx:16 +#: apps/web/src/app/embed/completed.tsx:17 msgid "Document Completed!" msgstr "Dokument abgeschlossen!" @@ -1489,7 +1510,7 @@ msgid "Document created using a <0>direct link" msgstr "Dokument erstellt mit einem <0>direkten Link" #: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:51 -#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:178 +#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:181 #: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:61 msgid "Document deleted" msgstr "Dokument gelöscht" @@ -1502,7 +1523,7 @@ msgstr "Dokument-Entwurf" msgid "Document Duplicated" msgstr "Dokument dupliziert" -#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:189 +#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:192 #: apps/web/src/components/document/document-history-sheet.tsx:104 msgid "Document history" msgstr "Dokumentverlauf" @@ -1528,7 +1549,7 @@ msgstr "Dokumentmetrik" msgid "Document moved" msgstr "Dokument verschoben" -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:158 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:156 msgid "Document no longer available to sign" msgstr "Dokument steht nicht mehr zur Unterschrift zur Verfügung" @@ -1536,7 +1557,7 @@ msgstr "Dokument steht nicht mehr zur Unterschrift zur Verfügung" msgid "Document pending" msgstr "Dokument ausstehend" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:91 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:103 msgid "Document preferences updated" msgstr "Dokumentpräferenzen aktualisiert" @@ -1560,7 +1581,7 @@ msgstr "Dokument gesendet" #~ msgid "Document Settings" #~ msgstr "Document Settings" -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:132 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:130 msgid "Document Signed" msgstr "Dokument signiert" @@ -1584,7 +1605,7 @@ msgstr "Dokumenten-Upload deaktiviert aufgrund unbezahlter Rechnungen" msgid "Document uploaded" msgstr "Dokument hochgeladen" -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:133 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:131 msgid "Document Viewed" msgstr "Dokument angesehen" @@ -1608,7 +1629,7 @@ msgstr "Dokument wird dauerhaft gelöscht" msgid "Documents" msgstr "Dokumente" -#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:195 +#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:197 msgid "Documents created from template" msgstr "Dokumente erstellt aus Vorlage" @@ -1643,6 +1664,14 @@ msgstr "Auditprotokolle herunterladen" msgid "Download Certificate" msgstr "Zertifikat herunterladen" +#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:114 +#~ msgid "Download with Certificate" +#~ msgstr "" + +#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:118 +#~ msgid "Download without Certificate" +#~ msgstr "" + #: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:214 #: apps/web/src/components/formatter/document-status.tsx:34 msgid "Draft" @@ -1681,7 +1710,7 @@ msgstr "Duplizieren" msgid "Edit" msgstr "Bearbeiten" -#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:115 +#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:117 msgid "Edit Template" msgstr "Vorlage bearbeiten" @@ -1707,8 +1736,8 @@ msgstr "Offenlegung der elektronischen Unterschrift" #: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:129 #: apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx:118 #: apps/web/src/app/(signing)/sign/[token]/email-field.tsx:126 -#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:377 -#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:257 +#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:393 +#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:273 #: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:169 #: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:153 #: apps/web/src/components/forms/forgot-password.tsx:81 @@ -1769,6 +1798,10 @@ msgstr "Direktlinksignierung aktivieren" msgid "Enable Direct Link Signing" msgstr "Direktlinksignierung aktivieren" +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:248 +msgid "Enable Typed Signature" +msgstr "" + #: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:123 #: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:138 #: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:74 @@ -1815,9 +1848,9 @@ msgstr "Geben Sie hier Ihren Text ein" #: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:57 #: apps/web/src/app/(dashboard)/documents/upload-document.tsx:106 #: apps/web/src/app/(dashboard)/documents/upload-document.tsx:112 -#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:169 -#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:200 -#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:234 +#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:186 +#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:217 +#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:256 #: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:51 #: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:56 #: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:175 @@ -1839,8 +1872,9 @@ msgstr "Geben Sie hier Ihren Text ein" #: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:194 #: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:101 #: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:128 -#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:146 -#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:172 +#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:129 +#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:163 +#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:189 #: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:167 #: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:195 #: apps/web/src/components/(dashboard)/layout/verify-email-banner.tsx:54 @@ -1852,15 +1886,15 @@ msgstr "Fehler" #~ msgid "Error updating global team settings" #~ msgstr "Error updating global team settings" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:128 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:140 msgid "Everyone can access and view the document" msgstr "Jeder kann auf das Dokument zugreifen und es anzeigen" -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:142 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:140 msgid "Everyone has signed" msgstr "Alle haben unterschrieben" -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:166 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:164 msgid "Everyone has signed! You will receive an Email copy of the signed document." msgstr "Alle haben unterschrieben! Sie werden eine E-Mail-Kopie des unterzeichneten Dokuments erhalten." @@ -1868,7 +1902,7 @@ msgstr "Alle haben unterschrieben! Sie werden eine E-Mail-Kopie des unterzeichne msgid "Exceeded timeout" msgstr "Zeitüberschreitung überschritten" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:120 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:114 msgid "Expired" msgstr "Abgelaufen" @@ -1910,8 +1944,8 @@ msgstr "Haben Sie Ihr Passwort vergessen?" #: apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx:326 #: apps/web/src/app/(signing)/sign/[token]/form.tsx:178 #: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:193 -#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:362 -#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:242 +#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:378 +#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:258 #: apps/web/src/components/forms/profile.tsx:110 #: apps/web/src/components/forms/v2/signup.tsx:312 msgid "Full Name" @@ -1949,7 +1983,7 @@ msgstr "Zurück" msgid "Go back home" msgstr "Zurück nach Hause" -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:226 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:224 #: apps/web/src/app/(signing)/sign/[token]/no-longer-available.tsx:57 msgid "Go Back Home" msgstr "Zurück nach Hause" @@ -1986,7 +2020,6 @@ msgstr "So funktioniert es:" msgid "Hey I’m Timur" msgstr "Hey, ich bin Timur" -#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:210 #: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:202 #: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:155 msgid "Hide" @@ -2033,6 +2066,10 @@ msgstr "Posteingang Dokumente" #~ msgid "Include Sender Details" #~ msgstr "Include Sender Details" +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:278 +msgid "Include the Signing Certificate in the Document" +msgstr "" + #: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:65 #: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:50 msgid "Information" @@ -2109,7 +2146,7 @@ msgid "Invoice" msgstr "Rechnung" #: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:47 -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:227 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:235 msgid "IP Address" msgstr "IP-Adresse" @@ -2249,7 +2286,7 @@ msgstr "Verwalten Sie das Profil von {0}" msgid "Manage all teams you are currently associated with." msgstr "Verwalten Sie alle Teams, mit denen Sie derzeit verbunden sind." -#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:159 +#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:161 msgid "Manage and view template" msgstr "Vorlage verwalten und anzeigen" @@ -2313,7 +2350,7 @@ msgstr "Verwalten Sie Ihre Passkeys." msgid "Manage your site settings here" msgstr "Verwalten Sie hier Ihre Seiteneinstellungen" -#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:123 +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:140 msgid "Mark as Viewed" msgstr "Als angesehen markieren" @@ -2395,7 +2432,7 @@ msgstr "Meine Vorlagen" msgid "Name" msgstr "Name" -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:211 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:209 msgid "Need to sign documents?" msgstr "Müssen Dokumente signieren?" @@ -2416,13 +2453,13 @@ msgstr "Neuer Teamowner" msgid "New Template" msgstr "Neue Vorlage" -#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:421 -#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:300 +#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:437 +#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:316 #: apps/web/src/components/forms/v2/signup.tsx:521 msgid "Next" msgstr "Nächster" -#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:61 +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:60 msgid "Next field" msgstr "Nächstes Feld" @@ -2528,11 +2565,11 @@ msgstr "Sobald dies bestätigt ist, wird Folgendes geschehen:" msgid "Once you have scanned the QR code or entered the code manually, enter the code provided by your authenticator app below." msgstr "Sobald Sie den QR-Code gescannt oder den Code manuell eingegeben haben, geben Sie den von Ihrer Authentifizierungs-App bereitgestellten Code unten ein." -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:134 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:146 msgid "Only admins can access and view the document" msgstr "Nur Administratoren können auf das Dokument zugreifen und es anzeigen" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:131 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:143 msgid "Only managers and above can access and view the document" msgstr "Nur Manager und darüber können auf das Dokument zugreifen und es anzeigen" @@ -2778,7 +2815,7 @@ msgstr "Bitte geben Sie <0>{0} ein, um zu bestätigen." msgid "Preferences" msgstr "Einstellungen" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:204 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:216 msgid "Preview" msgstr "Vorschau" @@ -2856,7 +2893,7 @@ msgstr "Lesen Sie die vollständige <0>Offenlegung der Unterschrift." msgid "Ready" msgstr "Bereit" -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:281 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:289 msgid "Reason" msgstr "Grund" @@ -2983,7 +3020,7 @@ msgstr "Bestätigungs-E-Mail erneut senden" msgid "Resend verification" msgstr "Bestätigung erneut senden" -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:266 +#: apps/web/src/components/(teams)/forms/update-team-form.tsx:163 #: apps/web/src/components/forms/public-profile-form.tsx:267 msgid "Reset" msgstr "Zurücksetzen" @@ -3064,7 +3101,7 @@ msgstr "Rollen" #: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:337 #: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:344 #: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:312 -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:232 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:305 msgid "Save" msgstr "Speichern" @@ -3139,8 +3176,7 @@ msgstr "Bestätigungs-E-Mail senden" msgid "Send document" msgstr "Dokument senden" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:188 -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:220 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:200 msgid "Send on Behalf of Team" msgstr "Im Namen des Teams senden" @@ -3161,7 +3197,7 @@ msgid "Sending..." msgstr "Senden..." #: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:101 -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:248 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:256 msgid "Sent" msgstr "Gesendet" @@ -3181,12 +3217,12 @@ msgid "Setup" msgstr "Einrichten" #: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:148 -#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:214 +#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:207 msgid "Share" msgstr "Teilen" #: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:179 -#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:240 +#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:233 msgid "Share Signing Card" msgstr "Signaturkarte teilen" @@ -3213,14 +3249,14 @@ msgstr "Vorlagen in Ihrem Team-Öffentliches Profil anzeigen, damit Ihre Zielgru #: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:229 #: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:182 #: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:224 -#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:124 -#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:256 +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:141 +#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:313 #: apps/web/src/components/ui/user-profile-skeleton.tsx:75 #: apps/web/src/components/ui/user-profile-timur.tsx:81 msgid "Sign" msgstr "Unterzeichnen" -#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:217 +#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:274 msgid "Sign as {0} <0>({1})" msgstr "Unterzeichnen als {0} <0>({1})" @@ -3228,8 +3264,8 @@ msgstr "Unterzeichnen als {0} <0>({1})" msgid "Sign as<0>{0} <1>({1})" msgstr "Unterzeichnen als<0>{0} <1>({1})" -#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:330 -#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:210 +#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:346 +#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:226 msgid "Sign document" msgstr "Dokument unterschreiben" @@ -3261,8 +3297,8 @@ msgstr "Melden Sie sich bei Ihrem Konto an" msgid "Sign Out" msgstr "Ausloggen" -#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:351 -#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:231 +#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:367 +#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:247 msgid "Sign the document to complete the process." msgstr "Unterschreiben Sie das Dokument, um den Vorgang abzuschließen." @@ -3288,15 +3324,15 @@ msgstr "Registrieren mit OIDC" #: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:177 #: apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx:338 #: apps/web/src/app/(signing)/sign/[token]/form.tsx:192 -#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:195 -#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:225 -#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:392 -#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:271 +#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:247 +#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:282 +#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:408 +#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:287 #: apps/web/src/components/forms/profile.tsx:132 msgid "Signature" msgstr "Unterschrift" -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:220 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:228 msgid "Signature ID" msgstr "Signatur-ID" @@ -3304,12 +3340,12 @@ msgstr "Signatur-ID" msgid "Signatures Collected" msgstr "Gesammelte Unterschriften" -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:200 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:198 msgid "Signatures will appear once the document has been completed" msgstr "Unterschriften erscheinen, sobald das Dokument abgeschlossen ist" #: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:114 -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:270 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:278 #: apps/web/src/components/document/document-read-only-fields.tsx:84 msgid "Signed" msgstr "Unterzeichnet" @@ -3322,7 +3358,7 @@ msgstr "Signer-Ereignisse" msgid "Signing Certificate" msgstr "Unterzeichnungszertifikat" -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:303 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:311 msgid "Signing certificate provided by" msgstr "Unterzeichnungszertifikat bereitgestellt von" @@ -3332,7 +3368,7 @@ msgid "Signing in..." msgstr "Anmeldung..." #: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:160 -#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:224 +#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:217 msgid "Signing Links" msgstr "Signierlinks" @@ -3386,8 +3422,8 @@ msgstr "Website Einstellungen" #: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:107 #: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:39 #: apps/web/src/app/(unauthenticated)/verify-email/[token]/page.tsx:61 -#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:243 -#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:125 +#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:248 +#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:130 #: apps/web/src/components/(teams)/dialogs/create-team-checkout-dialog.tsx:50 #: apps/web/src/components/(teams)/dialogs/create-team-checkout-dialog.tsx:99 #: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:210 @@ -3420,7 +3456,7 @@ msgstr "Etwas ist schiefgelaufen beim Senden der Bestätigungs-E-Mail." msgid "Something went wrong while updating the team billing subscription, please contact support." msgstr "Etwas ist schiefgelaufen beim Aktualisieren des Abonnements für die Team-Zahlung. Bitte kontaktieren Sie den Support." -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:96 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:108 msgid "Something went wrong!" msgstr "Etwas ist schiefgelaufen!" @@ -3488,7 +3524,7 @@ msgstr "Abonnements" #: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:108 #: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:79 #: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:92 -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:106 +#: apps/web/src/components/(teams)/forms/update-team-form.tsx:67 #: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:27 #: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:62 #: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:79 @@ -3519,8 +3555,8 @@ msgstr "Team" msgid "Team checkout" msgstr "Teameinkaufs-Prüfung" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:67 -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:146 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:61 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:140 msgid "Team email" msgstr "Team E-Mail" @@ -3563,7 +3599,7 @@ msgid "Team Member" msgstr "Teammitglied" #: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:166 -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:153 +#: apps/web/src/components/(teams)/forms/update-team-form.tsx:112 msgid "Team Name" msgstr "Teamname" @@ -3616,7 +3652,7 @@ msgid "Team transfer request expired" msgstr "Der Antrag auf Teamübertragung ist abgelaufen" #: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:196 -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:169 +#: apps/web/src/components/(teams)/forms/update-team-form.tsx:128 msgid "Team URL" msgstr "Team-URL" @@ -3636,7 +3672,7 @@ msgstr "Teams beschränkt" #: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:39 #: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:148 #: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:228 -#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:146 +#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:148 #: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:408 #: apps/web/src/components/templates/manage-public-template-dialog.tsx:271 msgid "Template" @@ -3666,11 +3702,11 @@ msgstr "Vorlage wurde aktualisiert." msgid "Template moved" msgstr "Vorlage verschoben" -#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:223 +#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:246 msgid "Template saved" msgstr "Vorlage gespeichert" -#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:87 +#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:86 #: apps/web/src/app/(dashboard)/templates/templates-page-view.tsx:55 #: apps/web/src/components/(dashboard)/common/command-menu.tsx:208 #: apps/web/src/components/(dashboard)/layout/desktop-nav.tsx:22 @@ -3713,7 +3749,7 @@ msgstr "Der direkte Linkt wurde in die Zwischenablage kopiert" msgid "The document has been successfully moved to the selected team." msgstr "Das Dokument wurde erfolgreich in das ausgewählte Team verschoben." -#: apps/web/src/app/embed/completed.tsx:29 +#: apps/web/src/app/embed/completed.tsx:30 msgid "The document is now completed, please follow any instructions provided within the parent application." msgstr "Das Dokument ist jetzt abgeschlossen. Bitte folgen Sie allen Anweisungen, die in der übergeordneten Anwendung bereitgestellt werden." @@ -3874,7 +3910,7 @@ msgstr "Dieses Dokument konnte derzeit nicht dupliziert werden. Bitte versuche e msgid "This document could not be re-sent at this time. Please try again." msgstr "Dieses Dokument konnte zu diesem Zeitpunkt nicht erneut gesendet werden. Bitte versuchen Sie es erneut." -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:180 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:178 msgid "This document has been cancelled by the owner and is no longer available for others to sign." msgstr "Dieses Dokument wurde vom Eigentümer storniert und steht anderen nicht mehr zur Unterzeichnung zur Verfügung." @@ -3882,11 +3918,11 @@ msgstr "Dieses Dokument wurde vom Eigentümer storniert und steht anderen nicht msgid "This document has been cancelled by the owner." msgstr "Dieses Dokument wurde vom Eigentümer storniert." -#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:224 +#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:227 msgid "This document has been signed by all recipients" msgstr "Dieses Dokument wurde von allen Empfängern unterschrieben" -#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:227 +#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:230 msgid "This document is currently a draft and has not been sent" msgstr "Dieses Dokument ist momentan ein Entwurf und wurde nicht gesendet" @@ -3926,7 +3962,7 @@ msgstr "Dieser Preis beinhaltet mindestens 5 Plätze." msgid "This session has expired. Please try again." msgstr "Diese Sitzung ist abgelaufen. Bitte versuchen Sie es erneut." -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:201 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:195 msgid "This team, and any associated data excluding billing invoices will be permanently deleted." msgstr "Dieses Team und alle zugehörigen Daten, ausgenommen Rechnungen, werden permanent gelöscht." @@ -3943,7 +3979,7 @@ msgid "This token is invalid or has expired. Please contact your team for a new msgstr "Dieser Token ist ungültig oder abgelaufen. Bitte kontaktieren Sie Ihr Team für eine neue Einladung." #: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:98 -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:127 +#: apps/web/src/components/(teams)/forms/update-team-form.tsx:86 msgid "This URL is already in use." msgstr "Diese URL wird bereits verwendet." @@ -4076,13 +4112,13 @@ msgstr "übertragen {teamName}" msgid "Transfer ownership of this team to a selected team member." msgstr "Übertragen Sie die Inhaberschaft dieses Teams auf ein ausgewähltes Teammitglied." -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:175 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:169 #: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:147 #: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:156 msgid "Transfer team" msgstr "Team übertragen" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:179 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:173 msgid "Transfer the ownership of the team to another team member." msgstr "Übertragen Sie das Eigentum des Teams auf ein anderes Teammitglied." @@ -4133,6 +4169,10 @@ msgstr "Typ" msgid "Type a command or search..." msgstr "Geben Sie einen Befehl ein oder suchen Sie..." +#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:130 +msgid "Typed signatures are not allowed. Please draw your signature." +msgstr "" + #: apps/web/src/app/(unauthenticated)/verify-email/page.tsx:26 msgid "Uh oh! Looks like you're missing a token" msgstr "Oh oh! Es sieht so aus, als fehlt Ihnen ein Token" @@ -4225,10 +4265,10 @@ msgstr "Nicht autorisiert" msgid "Uncompleted" msgstr "Unvollendet" -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:229 -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:254 -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:265 -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:276 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:237 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:262 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:273 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:284 msgid "Unknown" msgstr "Unbekannt" @@ -4261,7 +4301,7 @@ msgstr "Passkey aktualisieren" msgid "Update password" msgstr "Passwort aktualisieren" -#: apps/web/src/components/forms/profile.tsx:150 +#: apps/web/src/components/forms/profile.tsx:151 msgid "Update profile" msgstr "Profil aktualisieren" @@ -4273,7 +4313,7 @@ msgstr "Empfänger aktualisieren" msgid "Update role" msgstr "Rolle aktualisieren" -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:278 +#: apps/web/src/components/(teams)/forms/update-team-form.tsx:175 msgid "Update team" msgstr "Team aktualisieren" @@ -4300,7 +4340,7 @@ msgstr "Webhook aktualisieren" msgid "Updating password..." msgstr "Passwort wird aktualisiert..." -#: apps/web/src/components/forms/profile.tsx:150 +#: apps/web/src/components/forms/profile.tsx:151 msgid "Updating profile..." msgstr "Profil wird aktualisiert..." @@ -4333,7 +4373,7 @@ msgstr "Die hochgeladene Datei ist zu klein" msgid "Uploaded file not an allowed file type" msgstr "Die hochgeladene Datei ist kein zulässiger Dateityp" -#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:170 +#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:172 msgid "Use" msgstr "Verwenden" @@ -4441,7 +4481,7 @@ msgstr "Codes ansehen" msgid "View Document" msgstr "Dokument anzeigen" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:156 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:150 msgid "View documents associated with this email" msgstr "Dokumente ansehen, die mit dieser E-Mail verknüpft sind" @@ -4467,7 +4507,7 @@ msgid "View teams" msgstr "Teams ansehen" #: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:120 -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:259 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:267 msgid "Viewed" msgstr "Angesehen" @@ -4475,7 +4515,7 @@ msgstr "Angesehen" msgid "Waiting" msgstr "Warten" -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:150 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:148 msgid "Waiting for others to sign" msgstr "Warten auf andere, um zu unterschreiben" @@ -4627,7 +4667,7 @@ msgstr "Wir sind auf einen unbekannten Fehler gestoßen, während wir versucht h msgid "We encountered an unknown error while attempting to update your public profile. Please try again later." msgstr "Wir sind auf einen unbekannten Fehler gestoßen, während wir versucht haben, Ihr öffentliches Profil zu aktualisieren. Bitte versuchen Sie es später erneut." -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:136 +#: apps/web/src/components/(teams)/forms/update-team-form.tsx:95 msgid "We encountered an unknown error while attempting to update your team. Please try again later." msgstr "Wir sind auf einen unbekannten Fehler gestoßen, während wir versucht haben, Ihr Team zu aktualisieren. Bitte versuchen Sie es später erneut." @@ -4670,8 +4710,8 @@ msgid "We were unable to setup two-factor authentication for your account. Pleas msgstr "Wir konnten die Zwei-Faktor-Authentifizierung für Ihr Konto nicht einrichten. Bitte stellen Sie sicher, dass Sie den Code korrekt eingegeben haben und versuchen Sie es erneut." #: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:120 -#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:245 -#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:127 +#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:250 +#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:132 msgid "We were unable to submit this document at this time. Please try again later." msgstr "Wir konnten dieses Dokument zurzeit nicht einreichen. Bitte versuchen Sie es später erneut." @@ -4679,7 +4719,7 @@ msgstr "Wir konnten dieses Dokument zurzeit nicht einreichen. Bitte versuchen Si msgid "We were unable to update your branding preferences at this time, please try again later" msgstr "Wir konnten Ihre Markenpräferenzen zu diesem Zeitpunkt nicht aktualisieren, bitte versuchen Sie es später noch einmal" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:98 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:110 msgid "We were unable to update your document preferences at this time, please try again later" msgstr "Wir konnten Ihre Dokumentpräferenzen zu diesem Zeitpunkt nicht aktualisieren, bitte versuchen Sie es später noch einmal" @@ -4793,16 +4833,16 @@ msgid "You" msgstr "Sie" #: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:93 -msgid "You are about to complete approving \"{truncatedTitle}\".<0/> Are you sure?" -msgstr "Sie stehen kurz davor, die Genehmigung für \"{truncatedTitle}\" abzuschließen.<0/> Sind Sie sicher?" +#~ msgid "You are about to complete approving \"{truncatedTitle}\".<0/> Are you sure?" +#~ msgstr "Sie stehen kurz davor, die Genehmigung für \"{truncatedTitle}\" abzuschließen.<0/> Sind Sie sicher?" #: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:85 -msgid "You are about to complete signing \"{truncatedTitle}\".<0/> Are you sure?" -msgstr "Sie stehen kurz davor, \"{truncatedTitle}\" zu unterzeichnen.<0/> Sind Sie sicher?" +#~ msgid "You are about to complete signing \"{truncatedTitle}\".<0/> Are you sure?" +#~ msgstr "Sie stehen kurz davor, \"{truncatedTitle}\" zu unterzeichnen.<0/> Sind Sie sicher?" #: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:77 -msgid "You are about to complete viewing \"{truncatedTitle}\".<0/> Are you sure?" -msgstr "Sie stehen kurz davor, \"{truncatedTitle}\" anzusehen.<0/> Sind Sie sicher?" +#~ msgid "You are about to complete viewing \"{truncatedTitle}\".<0/> Are you sure?" +#~ msgstr "Sie stehen kurz davor, \"{truncatedTitle}\" anzusehen.<0/> Sind Sie sicher?" #: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:105 msgid "You are about to delete <0>\"{documentTitle}\"" @@ -4864,7 +4904,7 @@ msgstr "Sie können diese Links kopieren und mit den Empfängern teilen, damit s msgid "You can update the profile URL by updating the team URL in the general settings page." msgstr "Sie können die Profil-URL aktualisieren, indem Sie die Team-URL auf der Seite mit den allgemeinen Einstellungen aktualisieren." -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:71 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:65 msgid "You can view documents associated with this email and use this identity when sending documents." msgstr "Sie können Dokumente ansehen, die mit dieser E-Mail verknüpft sind, und diese Identität beim Senden von Dokumenten verwenden." @@ -5002,7 +5042,7 @@ msgstr "Sie werden benachrichtigt und können Ihr Documenso öffentliches Profil msgid "You will now be required to enter a code from your authenticator app when signing in." msgstr "Sie müssen bei der Anmeldung jetzt einen Code von Ihrer Authenticator-App eingeben." -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:173 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:171 msgid "You will receive an Email copy of the signed document once everyone has signed." msgstr "Sie erhalten eine E-Mail-Kopie des unterzeichneten Dokuments, sobald alle unterschrieben haben." @@ -5062,7 +5102,7 @@ msgstr "Ihr Dokument wurde erfolgreich hochgeladen." msgid "Your document has been uploaded successfully. You will be redirected to the template page." msgstr "Ihr Dokument wurde erfolgreich hochgeladen. Sie werden zur Vorlagenseite weitergeleitet." -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:92 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:104 msgid "Your document preferences have been updated" msgstr "Ihre Dokumentpräferenzen wurden aktualisiert" @@ -5129,7 +5169,7 @@ msgstr "Ihr Team wurde erstellt." msgid "Your team has been successfully deleted." msgstr "Ihr Team wurde erfolgreich gelöscht." -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:107 +#: apps/web/src/components/(teams)/forms/update-team-form.tsx:68 msgid "Your team has been successfully updated." msgstr "Ihr Team wurde erfolgreich aktualisiert." @@ -5145,7 +5185,7 @@ msgstr "Ihre Vorlage wurde erfolgreich gelöscht." msgid "Your template will be duplicated." msgstr "Ihre Vorlage wird dupliziert." -#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:224 +#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:247 msgid "Your templates has been saved successfully." msgstr "Ihre Vorlagen wurden erfolgreich gespeichert." diff --git a/packages/lib/translations/en/common.po b/packages/lib/translations/en/common.po index 3fba4b3cc..5dc25a06f 100644 --- a/packages/lib/translations/en/common.po +++ b/packages/lib/translations/en/common.po @@ -443,7 +443,7 @@ msgid "Advanced Options" msgstr "Advanced Options" #: packages/ui/primitives/document-flow/add-fields.tsx:576 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:409 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:414 msgid "Advanced settings" msgstr "Advanced settings" @@ -499,11 +499,11 @@ msgstr "Approving" msgid "Before you get started, please confirm your email address by clicking the button below:" msgstr "Before you get started, please confirm your email address by clicking the button below:" -#: packages/ui/primitives/signature-pad/signature-pad.tsx:377 +#: packages/ui/primitives/signature-pad/signature-pad.tsx:383 msgid "Black" msgstr "Black" -#: packages/ui/primitives/signature-pad/signature-pad.tsx:391 +#: packages/ui/primitives/signature-pad/signature-pad.tsx:397 msgid "Blue" msgstr "Blue" @@ -561,7 +561,7 @@ msgstr "Checkbox values" msgid "Clear filters" msgstr "Clear filters" -#: packages/ui/primitives/signature-pad/signature-pad.tsx:411 +#: packages/ui/primitives/signature-pad/signature-pad.tsx:417 msgid "Clear Signature" msgstr "Clear Signature" @@ -589,7 +589,7 @@ msgid "Configure Direct Recipient" msgstr "Configure Direct Recipient" #: packages/ui/primitives/document-flow/add-fields.tsx:577 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:410 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:415 msgid "Configure the {0} field" msgstr "Configure the {0} field" @@ -652,7 +652,7 @@ msgstr "Custom Text" #: packages/ui/primitives/document-flow/add-fields.tsx:934 #: packages/ui/primitives/document-flow/types.ts:53 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:697 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:729 msgid "Date" msgstr "Date" @@ -796,7 +796,7 @@ msgid "Drag & drop your PDF here." msgstr "Drag & drop your PDF here." #: packages/ui/primitives/document-flow/add-fields.tsx:1065 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:827 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:860 msgid "Dropdown" msgstr "Dropdown" @@ -810,7 +810,7 @@ msgstr "Dropdown options" #: packages/ui/primitives/document-flow/add-signers.tsx:512 #: packages/ui/primitives/document-flow/add-signers.tsx:519 #: packages/ui/primitives/document-flow/types.ts:54 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:645 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:677 #: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:471 #: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:478 msgid "Email" @@ -846,6 +846,7 @@ msgid "Enable signing order" msgstr "Enable signing order" #: packages/ui/primitives/document-flow/add-fields.tsx:802 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:597 msgid "Enable Typed Signatures" msgstr "Enable Typed Signatures" @@ -933,7 +934,7 @@ msgstr "Global recipient action authentication" msgid "Go Back" msgstr "Go Back" -#: packages/ui/primitives/signature-pad/signature-pad.tsx:398 +#: packages/ui/primitives/signature-pad/signature-pad.tsx:404 msgid "Green" msgstr "Green" @@ -1028,7 +1029,7 @@ msgstr "Min" #: packages/ui/primitives/document-flow/add-signers.tsx:550 #: packages/ui/primitives/document-flow/add-signers.tsx:556 #: packages/ui/primitives/document-flow/types.ts:55 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:671 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:703 #: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:506 #: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:512 msgid "Name" @@ -1047,7 +1048,7 @@ msgid "Needs to view" msgstr "Needs to view" #: packages/ui/primitives/document-flow/add-fields.tsx:693 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:511 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:516 msgid "No recipient matching this description was found." msgstr "No recipient matching this description was found." @@ -1056,7 +1057,7 @@ msgid "No recipients" msgstr "No recipients" #: packages/ui/primitives/document-flow/add-fields.tsx:708 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:526 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:531 msgid "No recipients with this role" msgstr "No recipients with this role" @@ -1086,7 +1087,7 @@ msgstr "None" #: packages/ui/primitives/document-flow/add-fields.tsx:986 #: packages/ui/primitives/document-flow/types.ts:56 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:749 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:781 msgid "Number" msgstr "Number" @@ -1178,7 +1179,6 @@ msgid "Please try again or contact our support." msgstr "Please try again or contact our support." #: packages/ui/primitives/document-flow/types.ts:57 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:775 msgid "Radio" msgstr "Radio" @@ -1221,7 +1221,7 @@ msgstr "Recipient removed email" msgid "Recipient signing request email" msgstr "Recipient signing request email" -#: packages/ui/primitives/signature-pad/signature-pad.tsx:384 +#: packages/ui/primitives/signature-pad/signature-pad.tsx:390 msgid "Red" msgstr "Red" @@ -1290,7 +1290,7 @@ msgstr "Rows per page" msgid "Save" msgstr "Save" -#: packages/ui/primitives/template-flow/add-template-fields.tsx:861 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:893 msgid "Save Template" msgstr "Save Template" @@ -1383,7 +1383,7 @@ msgstr "Sign In" #: packages/ui/primitives/document-flow/add-signature.tsx:323 #: packages/ui/primitives/document-flow/field-icon.tsx:52 #: packages/ui/primitives/document-flow/types.ts:49 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:593 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:625 msgid "Signature" msgstr "Signature" @@ -1468,7 +1468,7 @@ msgstr "Template title" #: packages/ui/primitives/document-flow/add-fields.tsx:960 #: packages/ui/primitives/document-flow/types.ts:52 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:723 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:755 msgid "Text" msgstr "Text" @@ -1632,7 +1632,7 @@ msgid "Title" msgstr "Title" #: packages/ui/primitives/document-flow/add-fields.tsx:1080 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:841 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:873 msgid "To proceed further, please set at least one value for the {0} field." msgstr "To proceed further, please set at least one value for the {0} field." diff --git a/packages/lib/translations/en/web.po b/packages/lib/translations/en/web.po index f6f5af1e8..080d15dfd 100644 --- a/packages/lib/translations/en/web.po +++ b/packages/lib/translations/en/web.po @@ -13,7 +13,7 @@ msgstr "" "Language-Team: \n" "Plural-Forms: \n" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:214 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:226 msgid "\"{0}\" has invited you to sign \"example document\"." msgstr "\"{0}\" has invited you to sign \"example document\"." @@ -26,8 +26,8 @@ msgid "\"{documentTitle}\" has been successfully deleted" msgstr "\"{documentTitle}\" has been successfully deleted" #: apps/web/src/components/(teams)/forms/update-team-form.tsx:234 -msgid "\"{email}\" on behalf of \"{teamName}\" has invited you to sign \"example document\"." -msgstr "\"{email}\" on behalf of \"{teamName}\" has invited you to sign \"example document\"." +#~ msgid "\"{email}\" on behalf of \"{teamName}\" has invited you to sign \"example document\"." +#~ msgstr "\"{email}\" on behalf of \"{teamName}\" has invited you to sign \"example document\"." #: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:209 #~ msgid "" @@ -37,23 +37,23 @@ msgstr "\"{email}\" on behalf of \"{teamName}\" has invited you to sign \"exampl #~ "\"{placeholderEmail}\" on behalf of \"{0}\" has invited you to sign \"example\n" #~ "document\"." -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:209 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:221 msgid "\"{placeholderEmail}\" on behalf of \"{0}\" has invited you to sign \"example document\"." msgstr "\"{placeholderEmail}\" on behalf of \"{0}\" has invited you to sign \"example document\"." #: apps/web/src/components/(teams)/forms/update-team-form.tsx:241 -msgid "\"{teamUrl}\" has invited you to sign \"example document\"." -msgstr "\"{teamUrl}\" has invited you to sign \"example document\"." +#~ msgid "\"{teamUrl}\" has invited you to sign \"example document\"." +#~ msgstr "\"{teamUrl}\" has invited you to sign \"example document\"." -#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:80 +#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:83 msgid "({0}) has invited you to approve this document" msgstr "({0}) has invited you to approve this document" -#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:77 +#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:80 msgid "({0}) has invited you to sign this document" msgstr "({0}) has invited you to sign this document" -#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:74 +#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:77 msgid "({0}) has invited you to view this document" msgstr "({0}) has invited you to view this document" @@ -66,7 +66,7 @@ msgstr "{0, plural, one {(1 character over)} other {(# characters over)}}" msgid "{0, plural, one {# character over the limit} other {# characters over the limit}}" msgstr "{0, plural, one {# character over the limit} other {# characters over the limit}}" -#: apps/web/src/app/(recipient)/d/[token]/page.tsx:82 +#: apps/web/src/app/(recipient)/d/[token]/page.tsx:84 msgid "{0, plural, one {# recipient} other {# recipients}}" msgstr "{0, plural, one {# recipient} other {# recipients}}" @@ -83,11 +83,11 @@ msgstr "{0, plural, one {<0>You have <1>1 pending team invitation} other msgid "{0, plural, one {1 matching field} other {# matching fields}}" msgstr "{0, plural, one {1 matching field} other {# matching fields}}" -#: apps/web/src/app/(dashboard)/documents/[id]/edit/document-edit-page-view.tsx:129 +#: apps/web/src/app/(dashboard)/documents/[id]/edit/document-edit-page-view.tsx:132 msgid "{0, plural, one {1 Recipient} other {# Recipients}}" msgstr "{0, plural, one {1 Recipient} other {# Recipients}}" -#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:235 +#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:238 msgid "{0, plural, one {Waiting on 1 recipient} other {Waiting on # recipients}}" msgstr "{0, plural, one {Waiting on 1 recipient} other {Waiting on # recipients}}" @@ -111,7 +111,7 @@ msgstr "{0} direct signing templates" msgid "{0} of {1} documents remaining this month." msgstr "{0} of {1} documents remaining this month." -#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:170 +#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:173 msgid "{0} Recipient(s)" msgstr "{0} Recipient(s)" @@ -152,6 +152,18 @@ msgstr "<0>\"{0}\"is no longer available to sign" msgid "<0>Sender: All" msgstr "<0>Sender: All" +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:104 +msgid "<0>You are about to complete approving <1>\"{documentTitle}\".<2/> Are you sure?" +msgstr "<0>You are about to complete approving <1>\"{documentTitle}\".<2/> Are you sure?" + +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:90 +msgid "<0>You are about to complete signing \"<1>{documentTitle}\".<2/> Are you sure?" +msgstr "<0>You are about to complete signing \"<1>{documentTitle}\".<2/> Are you sure?" + +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:76 +msgid "<0>You are about to complete viewing \"<1>{documentTitle}\".<2/> Are you sure?" +msgstr "<0>You are about to complete viewing \"<1>{documentTitle}\".<2/> Are you sure?" + #: apps/web/src/components/(dashboard)/settings/token/contants.ts:5 msgid "1 month" msgstr "1 month" @@ -235,7 +247,7 @@ msgid "A unique URL to access your profile" msgstr "A unique URL to access your profile" #: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:206 -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:179 +#: apps/web/src/components/(teams)/forms/update-team-form.tsx:138 msgid "A unique URL to identify your team" msgstr "A unique URL to identify your team" @@ -291,7 +303,7 @@ msgstr "Action" msgid "Actions" msgstr "Actions" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:107 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:101 #: apps/web/src/components/(teams)/tables/teams-member-page-data-table.tsx:76 #: apps/web/src/components/(teams)/tables/user-settings-teams-page-data-table.tsx:71 msgid "Active" @@ -467,9 +479,12 @@ msgstr "An email requesting the transfer of this team has been sent." msgid "An error occurred" msgstr "An error occurred" +#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:257 +msgid "An error occurred while adding fields." +msgstr "An error occurred while adding fields." + #: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:269 -#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:201 -#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:235 +#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:218 msgid "An error occurred while adding signers." msgstr "An error occurred while adding signers." @@ -531,7 +546,7 @@ msgstr "An error occurred while removing the field." #: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:148 #: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:195 #: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:129 -#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:173 +#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:190 msgid "An error occurred while removing the signature." msgstr "An error occurred while removing the signature." @@ -555,7 +570,7 @@ msgstr "An error occurred while sending your confirmation email" #: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:122 #: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:150 #: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:102 -#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:147 +#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:164 #: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:168 msgid "An error occurred while signing the document." msgstr "An error occurred while signing the document." @@ -565,7 +580,7 @@ msgid "An error occurred while trying to create a checkout session." msgstr "An error occurred while trying to create a checkout session." #: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:235 -#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:170 +#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:187 msgid "An error occurred while updating the document settings." msgstr "An error occurred while updating the document settings." @@ -603,7 +618,7 @@ msgstr "An error occurred while uploading your document." #: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:116 #: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:89 #: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:100 -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:134 +#: apps/web/src/components/(teams)/forms/update-team-form.tsx:93 #: apps/web/src/components/forms/avatar-image.tsx:94 #: apps/web/src/components/forms/avatar-image.tsx:122 #: apps/web/src/components/forms/password.tsx:84 @@ -657,7 +672,7 @@ msgstr "App Version" #: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:89 #: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:120 #: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:150 -#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:125 +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:142 msgid "Approve" msgstr "Approve" @@ -720,7 +735,7 @@ msgstr "Avatar" msgid "Avatar Updated" msgstr "Avatar Updated" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:127 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:121 msgid "Awaiting email confirmation" msgstr "Awaiting email confirmation" @@ -831,8 +846,8 @@ msgstr "By using the electronic signature feature, you are consenting to conduct #: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:215 #: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:328 #: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:153 -#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:113 -#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:248 +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:130 +#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:305 #: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:335 #: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:121 #: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:176 @@ -925,8 +940,8 @@ msgstr "Click to copy signing link for sending to recipient" #: apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx:175 #: apps/web/src/app/(signing)/sign/[token]/form.tsx:115 -#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:440 -#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:319 +#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:456 +#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:335 msgid "Click to insert field" msgstr "Click to insert field" @@ -943,22 +958,22 @@ msgstr "Click to insert field" msgid "Close" msgstr "Close" -#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:61 -#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:430 -#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:309 +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:60 +#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:446 +#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:325 #: apps/web/src/components/forms/v2/signup.tsx:534 msgid "Complete" msgstr "Complete" -#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:70 +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:69 msgid "Complete Approval" msgstr "Complete Approval" -#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:69 +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:68 msgid "Complete Signing" msgstr "Complete Signing" -#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:68 +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:67 msgid "Complete Viewing" msgstr "Complete Viewing" @@ -1044,18 +1059,26 @@ msgstr "Continue" msgid "Continue to login" msgstr "Continue to login" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:173 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:185 msgid "Controls the default language of an uploaded document. This will be used as the language in email communications with the recipients." msgstr "Controls the default language of an uploaded document. This will be used as the language in email communications with the recipients." -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:141 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:153 msgid "Controls the default visibility of an uploaded document." msgstr "Controls the default visibility of an uploaded document." -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:220 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:232 msgid "Controls the formatting of the message that will be sent when inviting a recipient to sign a document. If a custom message has been provided while configuring the document, it will be used instead." msgstr "Controls the formatting of the message that will be sent when inviting a recipient to sign a document. If a custom message has been provided while configuring the document, it will be used instead." +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:263 +msgid "Controls whether the recipients can sign the documents using a typed signature. Enable or disable the typed signature globally." +msgstr "Controls whether the recipients can sign the documents using a typed signature. Enable or disable the typed signature globally." + +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:293 +msgid "Controls whether the signing certificate will be included in the document when it is downloaded. The signing certificate can still be downloaded from the logs page separately." +msgstr "Controls whether the signing certificate will be included in the document when it is downloaded. The signing certificate can still be downloaded from the logs page separately." + #: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:128 msgid "Copied" msgstr "Copied" @@ -1173,7 +1196,7 @@ msgstr "Create webhook" msgid "Create Webhook" msgstr "Create Webhook" -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:215 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:213 msgid "Create your account and start using state-of-the-art document signing." msgstr "Create your account and start using state-of-the-art document signing." @@ -1246,12 +1269,11 @@ msgstr "Decline" msgid "Declined team invitation" msgstr "Declined team invitation" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:153 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:165 msgid "Default Document Language" msgstr "Default Document Language" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:117 -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:195 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:129 msgid "Default Document Visibility" msgstr "Default Document Visibility" @@ -1260,7 +1282,6 @@ msgid "delete" msgstr "delete" #: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:144 -#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:210 #: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:202 #: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:177 #: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:211 @@ -1312,7 +1333,7 @@ msgstr "Delete Document" msgid "Delete passkey" msgstr "Delete passkey" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:197 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:191 #: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:118 msgid "Delete team" msgstr "Delete team" @@ -1352,7 +1373,7 @@ msgid "Details" msgstr "Details" #: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:75 -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:234 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:242 msgid "Device" msgstr "Device" @@ -1451,7 +1472,7 @@ msgstr "Document" msgid "Document All" msgstr "Document All" -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:134 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:132 msgid "Document Approved" msgstr "Document Approved" @@ -1467,7 +1488,7 @@ msgstr "Document Cancelled" msgid "Document completed" msgstr "Document completed" -#: apps/web/src/app/embed/completed.tsx:16 +#: apps/web/src/app/embed/completed.tsx:17 msgid "Document Completed!" msgstr "Document Completed!" @@ -1484,7 +1505,7 @@ msgid "Document created using a <0>direct link" msgstr "Document created using a <0>direct link" #: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:51 -#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:178 +#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:181 #: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:61 msgid "Document deleted" msgstr "Document deleted" @@ -1497,7 +1518,7 @@ msgstr "Document draft" msgid "Document Duplicated" msgstr "Document Duplicated" -#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:189 +#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:192 #: apps/web/src/components/document/document-history-sheet.tsx:104 msgid "Document history" msgstr "Document history" @@ -1523,7 +1544,7 @@ msgstr "Document metrics" msgid "Document moved" msgstr "Document moved" -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:158 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:156 msgid "Document no longer available to sign" msgstr "Document no longer available to sign" @@ -1531,7 +1552,7 @@ msgstr "Document no longer available to sign" msgid "Document pending" msgstr "Document pending" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:91 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:103 msgid "Document preferences updated" msgstr "Document preferences updated" @@ -1555,7 +1576,7 @@ msgstr "Document sent" #~ msgid "Document Settings" #~ msgstr "Document Settings" -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:132 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:130 msgid "Document Signed" msgstr "Document Signed" @@ -1579,7 +1600,7 @@ msgstr "Document upload disabled due to unpaid invoices" msgid "Document uploaded" msgstr "Document uploaded" -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:133 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:131 msgid "Document Viewed" msgstr "Document Viewed" @@ -1603,7 +1624,7 @@ msgstr "Document will be permanently deleted" msgid "Documents" msgstr "Documents" -#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:195 +#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:197 msgid "Documents created from template" msgstr "Documents created from template" @@ -1638,6 +1659,14 @@ msgstr "Download Audit Logs" msgid "Download Certificate" msgstr "Download Certificate" +#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:114 +#~ msgid "Download with Certificate" +#~ msgstr "Download with Certificate" + +#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:118 +#~ msgid "Download without Certificate" +#~ msgstr "Download without Certificate" + #: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:214 #: apps/web/src/components/formatter/document-status.tsx:34 msgid "Draft" @@ -1676,7 +1705,7 @@ msgstr "Duplicate" msgid "Edit" msgstr "Edit" -#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:115 +#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:117 msgid "Edit Template" msgstr "Edit Template" @@ -1702,8 +1731,8 @@ msgstr "Electronic Signature Disclosure" #: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:129 #: apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx:118 #: apps/web/src/app/(signing)/sign/[token]/email-field.tsx:126 -#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:377 -#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:257 +#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:393 +#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:273 #: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:169 #: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:153 #: apps/web/src/components/forms/forgot-password.tsx:81 @@ -1764,6 +1793,10 @@ msgstr "Enable direct link signing" msgid "Enable Direct Link Signing" msgstr "Enable Direct Link Signing" +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:248 +msgid "Enable Typed Signature" +msgstr "Enable Typed Signature" + #: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:123 #: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:138 #: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:74 @@ -1810,9 +1843,9 @@ msgstr "Enter your text here" #: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:57 #: apps/web/src/app/(dashboard)/documents/upload-document.tsx:106 #: apps/web/src/app/(dashboard)/documents/upload-document.tsx:112 -#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:169 -#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:200 -#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:234 +#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:186 +#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:217 +#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:256 #: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:51 #: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:56 #: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:175 @@ -1834,8 +1867,9 @@ msgstr "Enter your text here" #: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:194 #: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:101 #: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:128 -#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:146 -#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:172 +#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:129 +#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:163 +#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:189 #: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:167 #: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:195 #: apps/web/src/components/(dashboard)/layout/verify-email-banner.tsx:54 @@ -1847,15 +1881,15 @@ msgstr "Error" #~ msgid "Error updating global team settings" #~ msgstr "Error updating global team settings" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:128 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:140 msgid "Everyone can access and view the document" msgstr "Everyone can access and view the document" -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:142 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:140 msgid "Everyone has signed" msgstr "Everyone has signed" -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:166 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:164 msgid "Everyone has signed! You will receive an Email copy of the signed document." msgstr "Everyone has signed! You will receive an Email copy of the signed document." @@ -1863,7 +1897,7 @@ msgstr "Everyone has signed! You will receive an Email copy of the signed docume msgid "Exceeded timeout" msgstr "Exceeded timeout" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:120 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:114 msgid "Expired" msgstr "Expired" @@ -1905,8 +1939,8 @@ msgstr "Forgot your password?" #: apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx:326 #: apps/web/src/app/(signing)/sign/[token]/form.tsx:178 #: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:193 -#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:362 -#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:242 +#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:378 +#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:258 #: apps/web/src/components/forms/profile.tsx:110 #: apps/web/src/components/forms/v2/signup.tsx:312 msgid "Full Name" @@ -1944,7 +1978,7 @@ msgstr "Go Back" msgid "Go back home" msgstr "Go back home" -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:226 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:224 #: apps/web/src/app/(signing)/sign/[token]/no-longer-available.tsx:57 msgid "Go Back Home" msgstr "Go Back Home" @@ -1981,7 +2015,6 @@ msgstr "Here's how it works:" msgid "Hey I’m Timur" msgstr "Hey I’m Timur" -#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:210 #: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:202 #: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:155 msgid "Hide" @@ -2028,6 +2061,10 @@ msgstr "Inbox documents" #~ msgid "Include Sender Details" #~ msgstr "Include Sender Details" +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:278 +msgid "Include the Signing Certificate in the Document" +msgstr "Include the Signing Certificate in the Document" + #: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:65 #: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:50 msgid "Information" @@ -2104,7 +2141,7 @@ msgid "Invoice" msgstr "Invoice" #: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:47 -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:227 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:235 msgid "IP Address" msgstr "IP Address" @@ -2244,7 +2281,7 @@ msgstr "Manage {0}'s profile" msgid "Manage all teams you are currently associated with." msgstr "Manage all teams you are currently associated with." -#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:159 +#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:161 msgid "Manage and view template" msgstr "Manage and view template" @@ -2308,7 +2345,7 @@ msgstr "Manage your passkeys." msgid "Manage your site settings here" msgstr "Manage your site settings here" -#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:123 +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:140 msgid "Mark as Viewed" msgstr "Mark as Viewed" @@ -2390,7 +2427,7 @@ msgstr "My templates" msgid "Name" msgstr "Name" -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:211 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:209 msgid "Need to sign documents?" msgstr "Need to sign documents?" @@ -2411,13 +2448,13 @@ msgstr "New team owner" msgid "New Template" msgstr "New Template" -#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:421 -#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:300 +#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:437 +#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:316 #: apps/web/src/components/forms/v2/signup.tsx:521 msgid "Next" msgstr "Next" -#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:61 +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:60 msgid "Next field" msgstr "Next field" @@ -2523,11 +2560,11 @@ msgstr "Once confirmed, the following will occur:" msgid "Once you have scanned the QR code or entered the code manually, enter the code provided by your authenticator app below." msgstr "Once you have scanned the QR code or entered the code manually, enter the code provided by your authenticator app below." -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:134 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:146 msgid "Only admins can access and view the document" msgstr "Only admins can access and view the document" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:131 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:143 msgid "Only managers and above can access and view the document" msgstr "Only managers and above can access and view the document" @@ -2773,7 +2810,7 @@ msgstr "Please type <0>{0} to confirm." msgid "Preferences" msgstr "Preferences" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:204 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:216 msgid "Preview" msgstr "Preview" @@ -2851,7 +2888,7 @@ msgstr "Read the full <0>signature disclosure." msgid "Ready" msgstr "Ready" -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:281 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:289 msgid "Reason" msgstr "Reason" @@ -2978,7 +3015,7 @@ msgstr "Resend Confirmation Email" msgid "Resend verification" msgstr "Resend verification" -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:266 +#: apps/web/src/components/(teams)/forms/update-team-form.tsx:163 #: apps/web/src/components/forms/public-profile-form.tsx:267 msgid "Reset" msgstr "Reset" @@ -3059,7 +3096,7 @@ msgstr "Roles" #: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:337 #: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:344 #: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:312 -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:232 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:305 msgid "Save" msgstr "Save" @@ -3134,8 +3171,7 @@ msgstr "Send confirmation email" msgid "Send document" msgstr "Send document" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:188 -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:220 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:200 msgid "Send on Behalf of Team" msgstr "Send on Behalf of Team" @@ -3156,7 +3192,7 @@ msgid "Sending..." msgstr "Sending..." #: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:101 -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:248 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:256 msgid "Sent" msgstr "Sent" @@ -3176,12 +3212,12 @@ msgid "Setup" msgstr "Setup" #: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:148 -#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:214 +#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:207 msgid "Share" msgstr "Share" #: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:179 -#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:240 +#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:233 msgid "Share Signing Card" msgstr "Share Signing Card" @@ -3208,14 +3244,14 @@ msgstr "Show templates in your team public profile for your audience to sign and #: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:229 #: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:182 #: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:224 -#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:124 -#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:256 +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:141 +#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:313 #: apps/web/src/components/ui/user-profile-skeleton.tsx:75 #: apps/web/src/components/ui/user-profile-timur.tsx:81 msgid "Sign" msgstr "Sign" -#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:217 +#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:274 msgid "Sign as {0} <0>({1})" msgstr "Sign as {0} <0>({1})" @@ -3223,8 +3259,8 @@ msgstr "Sign as {0} <0>({1})" msgid "Sign as<0>{0} <1>({1})" msgstr "Sign as<0>{0} <1>({1})" -#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:330 -#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:210 +#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:346 +#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:226 msgid "Sign document" msgstr "Sign document" @@ -3256,8 +3292,8 @@ msgstr "Sign in to your account" msgid "Sign Out" msgstr "Sign Out" -#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:351 -#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:231 +#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:367 +#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:247 msgid "Sign the document to complete the process." msgstr "Sign the document to complete the process." @@ -3283,15 +3319,15 @@ msgstr "Sign Up with OIDC" #: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:177 #: apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx:338 #: apps/web/src/app/(signing)/sign/[token]/form.tsx:192 -#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:195 -#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:225 -#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:392 -#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:271 +#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:247 +#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:282 +#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:408 +#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:287 #: apps/web/src/components/forms/profile.tsx:132 msgid "Signature" msgstr "Signature" -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:220 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:228 msgid "Signature ID" msgstr "Signature ID" @@ -3299,12 +3335,12 @@ msgstr "Signature ID" msgid "Signatures Collected" msgstr "Signatures Collected" -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:200 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:198 msgid "Signatures will appear once the document has been completed" msgstr "Signatures will appear once the document has been completed" #: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:114 -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:270 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:278 #: apps/web/src/components/document/document-read-only-fields.tsx:84 msgid "Signed" msgstr "Signed" @@ -3317,7 +3353,7 @@ msgstr "Signer Events" msgid "Signing Certificate" msgstr "Signing Certificate" -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:303 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:311 msgid "Signing certificate provided by" msgstr "Signing certificate provided by" @@ -3327,7 +3363,7 @@ msgid "Signing in..." msgstr "Signing in..." #: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:160 -#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:224 +#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:217 msgid "Signing Links" msgstr "Signing Links" @@ -3381,8 +3417,8 @@ msgstr "Site Settings" #: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:107 #: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:39 #: apps/web/src/app/(unauthenticated)/verify-email/[token]/page.tsx:61 -#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:243 -#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:125 +#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:248 +#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:130 #: apps/web/src/components/(teams)/dialogs/create-team-checkout-dialog.tsx:50 #: apps/web/src/components/(teams)/dialogs/create-team-checkout-dialog.tsx:99 #: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:210 @@ -3415,7 +3451,7 @@ msgstr "Something went wrong while sending the confirmation email." msgid "Something went wrong while updating the team billing subscription, please contact support." msgstr "Something went wrong while updating the team billing subscription, please contact support." -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:96 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:108 msgid "Something went wrong!" msgstr "Something went wrong!" @@ -3483,7 +3519,7 @@ msgstr "Subscriptions" #: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:108 #: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:79 #: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:92 -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:106 +#: apps/web/src/components/(teams)/forms/update-team-form.tsx:67 #: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:27 #: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:62 #: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:79 @@ -3514,8 +3550,8 @@ msgstr "Team" msgid "Team checkout" msgstr "Team checkout" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:67 -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:146 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:61 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:140 msgid "Team email" msgstr "Team email" @@ -3558,7 +3594,7 @@ msgid "Team Member" msgstr "Team Member" #: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:166 -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:153 +#: apps/web/src/components/(teams)/forms/update-team-form.tsx:112 msgid "Team Name" msgstr "Team Name" @@ -3611,7 +3647,7 @@ msgid "Team transfer request expired" msgstr "Team transfer request expired" #: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:196 -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:169 +#: apps/web/src/components/(teams)/forms/update-team-form.tsx:128 msgid "Team URL" msgstr "Team URL" @@ -3631,7 +3667,7 @@ msgstr "Teams restricted" #: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:39 #: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:148 #: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:228 -#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:146 +#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:148 #: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:408 #: apps/web/src/components/templates/manage-public-template-dialog.tsx:271 msgid "Template" @@ -3661,11 +3697,11 @@ msgstr "Template has been updated." msgid "Template moved" msgstr "Template moved" -#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:223 +#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:246 msgid "Template saved" msgstr "Template saved" -#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:87 +#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:86 #: apps/web/src/app/(dashboard)/templates/templates-page-view.tsx:55 #: apps/web/src/components/(dashboard)/common/command-menu.tsx:208 #: apps/web/src/components/(dashboard)/layout/desktop-nav.tsx:22 @@ -3708,7 +3744,7 @@ msgstr "The direct link has been copied to your clipboard" msgid "The document has been successfully moved to the selected team." msgstr "The document has been successfully moved to the selected team." -#: apps/web/src/app/embed/completed.tsx:29 +#: apps/web/src/app/embed/completed.tsx:30 msgid "The document is now completed, please follow any instructions provided within the parent application." msgstr "The document is now completed, please follow any instructions provided within the parent application." @@ -3869,7 +3905,7 @@ msgstr "This document could not be duplicated at this time. Please try again." msgid "This document could not be re-sent at this time. Please try again." msgstr "This document could not be re-sent at this time. Please try again." -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:180 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:178 msgid "This document has been cancelled by the owner and is no longer available for others to sign." msgstr "This document has been cancelled by the owner and is no longer available for others to sign." @@ -3877,11 +3913,11 @@ msgstr "This document has been cancelled by the owner and is no longer available msgid "This document has been cancelled by the owner." msgstr "This document has been cancelled by the owner." -#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:224 +#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:227 msgid "This document has been signed by all recipients" msgstr "This document has been signed by all recipients" -#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:227 +#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:230 msgid "This document is currently a draft and has not been sent" msgstr "This document is currently a draft and has not been sent" @@ -3921,7 +3957,7 @@ msgstr "This price includes minimum 5 seats." msgid "This session has expired. Please try again." msgstr "This session has expired. Please try again." -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:201 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:195 msgid "This team, and any associated data excluding billing invoices will be permanently deleted." msgstr "This team, and any associated data excluding billing invoices will be permanently deleted." @@ -3938,7 +3974,7 @@ msgid "This token is invalid or has expired. Please contact your team for a new msgstr "This token is invalid or has expired. Please contact your team for a new invitation." #: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:98 -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:127 +#: apps/web/src/components/(teams)/forms/update-team-form.tsx:86 msgid "This URL is already in use." msgstr "This URL is already in use." @@ -4071,13 +4107,13 @@ msgstr "transfer {teamName}" msgid "Transfer ownership of this team to a selected team member." msgstr "Transfer ownership of this team to a selected team member." -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:175 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:169 #: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:147 #: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:156 msgid "Transfer team" msgstr "Transfer team" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:179 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:173 msgid "Transfer the ownership of the team to another team member." msgstr "Transfer the ownership of the team to another team member." @@ -4128,6 +4164,10 @@ msgstr "Type" msgid "Type a command or search..." msgstr "Type a command or search..." +#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:130 +msgid "Typed signatures are not allowed. Please draw your signature." +msgstr "Typed signatures are not allowed. Please draw your signature." + #: apps/web/src/app/(unauthenticated)/verify-email/page.tsx:26 msgid "Uh oh! Looks like you're missing a token" msgstr "Uh oh! Looks like you're missing a token" @@ -4220,10 +4260,10 @@ msgstr "Unauthorized" msgid "Uncompleted" msgstr "Uncompleted" -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:229 -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:254 -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:265 -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:276 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:237 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:262 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:273 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:284 msgid "Unknown" msgstr "Unknown" @@ -4256,7 +4296,7 @@ msgstr "Update passkey" msgid "Update password" msgstr "Update password" -#: apps/web/src/components/forms/profile.tsx:150 +#: apps/web/src/components/forms/profile.tsx:151 msgid "Update profile" msgstr "Update profile" @@ -4268,7 +4308,7 @@ msgstr "Update Recipient" msgid "Update role" msgstr "Update role" -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:278 +#: apps/web/src/components/(teams)/forms/update-team-form.tsx:175 msgid "Update team" msgstr "Update team" @@ -4295,7 +4335,7 @@ msgstr "Update webhook" msgid "Updating password..." msgstr "Updating password..." -#: apps/web/src/components/forms/profile.tsx:150 +#: apps/web/src/components/forms/profile.tsx:151 msgid "Updating profile..." msgstr "Updating profile..." @@ -4328,7 +4368,7 @@ msgstr "Uploaded file is too small" msgid "Uploaded file not an allowed file type" msgstr "Uploaded file not an allowed file type" -#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:170 +#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:172 msgid "Use" msgstr "Use" @@ -4436,7 +4476,7 @@ msgstr "View Codes" msgid "View Document" msgstr "View Document" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:156 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:150 msgid "View documents associated with this email" msgstr "View documents associated with this email" @@ -4462,7 +4502,7 @@ msgid "View teams" msgstr "View teams" #: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:120 -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:259 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:267 msgid "Viewed" msgstr "Viewed" @@ -4470,7 +4510,7 @@ msgstr "Viewed" msgid "Waiting" msgstr "Waiting" -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:150 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:148 msgid "Waiting for others to sign" msgstr "Waiting for others to sign" @@ -4622,7 +4662,7 @@ msgstr "We encountered an unknown error while attempting to update your password msgid "We encountered an unknown error while attempting to update your public profile. Please try again later." msgstr "We encountered an unknown error while attempting to update your public profile. Please try again later." -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:136 +#: apps/web/src/components/(teams)/forms/update-team-form.tsx:95 msgid "We encountered an unknown error while attempting to update your team. Please try again later." msgstr "We encountered an unknown error while attempting to update your team. Please try again later." @@ -4665,8 +4705,8 @@ msgid "We were unable to setup two-factor authentication for your account. Pleas msgstr "We were unable to setup two-factor authentication for your account. Please ensure that you have entered your code correctly and try again." #: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:120 -#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:245 -#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:127 +#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:250 +#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:132 msgid "We were unable to submit this document at this time. Please try again later." msgstr "We were unable to submit this document at this time. Please try again later." @@ -4674,7 +4714,7 @@ msgstr "We were unable to submit this document at this time. Please try again la msgid "We were unable to update your branding preferences at this time, please try again later" msgstr "We were unable to update your branding preferences at this time, please try again later" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:98 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:110 msgid "We were unable to update your document preferences at this time, please try again later" msgstr "We were unable to update your document preferences at this time, please try again later" @@ -4788,16 +4828,16 @@ msgid "You" msgstr "You" #: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:93 -msgid "You are about to complete approving \"{truncatedTitle}\".<0/> Are you sure?" -msgstr "You are about to complete approving \"{truncatedTitle}\".<0/> Are you sure?" +#~ msgid "You are about to complete approving \"{truncatedTitle}\".<0/> Are you sure?" +#~ msgstr "You are about to complete approving \"{truncatedTitle}\".<0/> Are you sure?" #: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:85 -msgid "You are about to complete signing \"{truncatedTitle}\".<0/> Are you sure?" -msgstr "You are about to complete signing \"{truncatedTitle}\".<0/> Are you sure?" +#~ msgid "You are about to complete signing \"{truncatedTitle}\".<0/> Are you sure?" +#~ msgstr "You are about to complete signing \"{truncatedTitle}\".<0/> Are you sure?" #: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:77 -msgid "You are about to complete viewing \"{truncatedTitle}\".<0/> Are you sure?" -msgstr "You are about to complete viewing \"{truncatedTitle}\".<0/> Are you sure?" +#~ msgid "You are about to complete viewing \"{truncatedTitle}\".<0/> Are you sure?" +#~ msgstr "You are about to complete viewing \"{truncatedTitle}\".<0/> Are you sure?" #: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:105 msgid "You are about to delete <0>\"{documentTitle}\"" @@ -4859,7 +4899,7 @@ msgstr "You can copy and share these links to recipients so they can action the msgid "You can update the profile URL by updating the team URL in the general settings page." msgstr "You can update the profile URL by updating the team URL in the general settings page." -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:71 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:65 msgid "You can view documents associated with this email and use this identity when sending documents." msgstr "You can view documents associated with this email and use this identity when sending documents." @@ -4997,7 +5037,7 @@ msgstr "You will get notified & be able to set up your documenso public profile msgid "You will now be required to enter a code from your authenticator app when signing in." msgstr "You will now be required to enter a code from your authenticator app when signing in." -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:173 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:171 msgid "You will receive an Email copy of the signed document once everyone has signed." msgstr "You will receive an Email copy of the signed document once everyone has signed." @@ -5057,7 +5097,7 @@ msgstr "Your document has been uploaded successfully." msgid "Your document has been uploaded successfully. You will be redirected to the template page." msgstr "Your document has been uploaded successfully. You will be redirected to the template page." -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:92 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:104 msgid "Your document preferences have been updated" msgstr "Your document preferences have been updated" @@ -5124,7 +5164,7 @@ msgstr "Your team has been created." msgid "Your team has been successfully deleted." msgstr "Your team has been successfully deleted." -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:107 +#: apps/web/src/components/(teams)/forms/update-team-form.tsx:68 msgid "Your team has been successfully updated." msgstr "Your team has been successfully updated." @@ -5140,7 +5180,7 @@ msgstr "Your template has been successfully deleted." msgid "Your template will be duplicated." msgstr "Your template will be duplicated." -#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:224 +#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:247 msgid "Your templates has been saved successfully." msgstr "Your templates has been saved successfully." diff --git a/packages/lib/translations/es/common.po b/packages/lib/translations/es/common.po index 6befd1037..7246bc5b6 100644 --- a/packages/lib/translations/es/common.po +++ b/packages/lib/translations/es/common.po @@ -448,7 +448,7 @@ msgid "Advanced Options" msgstr "Opciones avanzadas" #: packages/ui/primitives/document-flow/add-fields.tsx:576 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:409 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:414 msgid "Advanced settings" msgstr "Configuraciones avanzadas" @@ -504,11 +504,11 @@ msgstr "Aprobando" msgid "Before you get started, please confirm your email address by clicking the button below:" msgstr "Antes de comenzar, por favor confirma tu dirección de correo electrónico haciendo clic en el botón de abajo:" -#: packages/ui/primitives/signature-pad/signature-pad.tsx:377 +#: packages/ui/primitives/signature-pad/signature-pad.tsx:383 msgid "Black" msgstr "Negro" -#: packages/ui/primitives/signature-pad/signature-pad.tsx:391 +#: packages/ui/primitives/signature-pad/signature-pad.tsx:397 msgid "Blue" msgstr "Azul" @@ -566,7 +566,7 @@ msgstr "Valores de Checkbox" msgid "Clear filters" msgstr "Limpiar filtros" -#: packages/ui/primitives/signature-pad/signature-pad.tsx:411 +#: packages/ui/primitives/signature-pad/signature-pad.tsx:417 msgid "Clear Signature" msgstr "Limpiar firma" @@ -594,7 +594,7 @@ msgid "Configure Direct Recipient" msgstr "Configurar destinatario directo" #: packages/ui/primitives/document-flow/add-fields.tsx:577 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:410 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:415 msgid "Configure the {0} field" msgstr "Configurar el campo {0}" @@ -657,7 +657,7 @@ msgstr "Texto personalizado" #: packages/ui/primitives/document-flow/add-fields.tsx:934 #: packages/ui/primitives/document-flow/types.ts:53 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:697 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:729 msgid "Date" msgstr "Fecha" @@ -801,7 +801,7 @@ msgid "Drag & drop your PDF here." msgstr "Arrastre y suelte su PDF aquí." #: packages/ui/primitives/document-flow/add-fields.tsx:1065 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:827 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:860 msgid "Dropdown" msgstr "Menú desplegable" @@ -815,7 +815,7 @@ msgstr "Opciones de menú desplegable" #: packages/ui/primitives/document-flow/add-signers.tsx:512 #: packages/ui/primitives/document-flow/add-signers.tsx:519 #: packages/ui/primitives/document-flow/types.ts:54 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:645 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:677 #: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:471 #: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:478 msgid "Email" @@ -851,6 +851,7 @@ msgid "Enable signing order" msgstr "Habilitar orden de firma" #: packages/ui/primitives/document-flow/add-fields.tsx:802 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:597 msgid "Enable Typed Signatures" msgstr "Habilitar firmas escritas" @@ -938,7 +939,7 @@ msgstr "Autenticación de acción de destinatario global" msgid "Go Back" msgstr "Regresar" -#: packages/ui/primitives/signature-pad/signature-pad.tsx:398 +#: packages/ui/primitives/signature-pad/signature-pad.tsx:404 msgid "Green" msgstr "Verde" @@ -1033,7 +1034,7 @@ msgstr "Mín" #: packages/ui/primitives/document-flow/add-signers.tsx:550 #: packages/ui/primitives/document-flow/add-signers.tsx:556 #: packages/ui/primitives/document-flow/types.ts:55 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:671 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:703 #: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:506 #: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:512 msgid "Name" @@ -1052,7 +1053,7 @@ msgid "Needs to view" msgstr "Necesita ver" #: packages/ui/primitives/document-flow/add-fields.tsx:693 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:511 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:516 msgid "No recipient matching this description was found." msgstr "No se encontró ningún destinatario que coincidiera con esta descripción." @@ -1061,7 +1062,7 @@ msgid "No recipients" msgstr "Sin destinatarios" #: packages/ui/primitives/document-flow/add-fields.tsx:708 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:526 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:531 msgid "No recipients with this role" msgstr "No hay destinatarios con este rol" @@ -1091,7 +1092,7 @@ msgstr "Ninguno" #: packages/ui/primitives/document-flow/add-fields.tsx:986 #: packages/ui/primitives/document-flow/types.ts:56 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:749 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:781 msgid "Number" msgstr "Número" @@ -1183,7 +1184,6 @@ msgid "Please try again or contact our support." msgstr "Por favor, inténtalo de nuevo o contacta a nuestro soporte." #: packages/ui/primitives/document-flow/types.ts:57 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:775 msgid "Radio" msgstr "Radio" @@ -1226,7 +1226,7 @@ msgstr "Correo electrónico de destinatario eliminado" msgid "Recipient signing request email" msgstr "Correo electrónico de solicitud de firma de destinatario" -#: packages/ui/primitives/signature-pad/signature-pad.tsx:384 +#: packages/ui/primitives/signature-pad/signature-pad.tsx:390 msgid "Red" msgstr "Rojo" @@ -1295,7 +1295,7 @@ msgstr "Filas por página" msgid "Save" msgstr "Guardar" -#: packages/ui/primitives/template-flow/add-template-fields.tsx:861 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:893 msgid "Save Template" msgstr "Guardar plantilla" @@ -1388,7 +1388,7 @@ msgstr "Iniciar sesión" #: packages/ui/primitives/document-flow/add-signature.tsx:323 #: packages/ui/primitives/document-flow/field-icon.tsx:52 #: packages/ui/primitives/document-flow/types.ts:49 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:593 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:625 msgid "Signature" msgstr "Firma" @@ -1473,7 +1473,7 @@ msgstr "Título de plantilla" #: packages/ui/primitives/document-flow/add-fields.tsx:960 #: packages/ui/primitives/document-flow/types.ts:52 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:723 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:755 msgid "Text" msgstr "Texto" @@ -1637,7 +1637,7 @@ msgid "Title" msgstr "Título" #: packages/ui/primitives/document-flow/add-fields.tsx:1080 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:841 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:873 msgid "To proceed further, please set at least one value for the {0} field." msgstr "Para continuar, por favor establezca al menos un valor para el campo {0}." diff --git a/packages/lib/translations/es/web.po b/packages/lib/translations/es/web.po index 9866ed420..37008eee8 100644 --- a/packages/lib/translations/es/web.po +++ b/packages/lib/translations/es/web.po @@ -18,7 +18,7 @@ msgstr "" "X-Crowdin-File: web.po\n" "X-Crowdin-File-ID: 8\n" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:214 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:226 msgid "\"{0}\" has invited you to sign \"example document\"." msgstr "\"{0}\" te ha invitado a firmar \"ejemplo de documento\"." @@ -31,8 +31,8 @@ msgid "\"{documentTitle}\" has been successfully deleted" msgstr "\"{documentTitle}\" ha sido eliminado con éxito" #: apps/web/src/components/(teams)/forms/update-team-form.tsx:234 -msgid "\"{email}\" on behalf of \"{teamName}\" has invited you to sign \"example document\"." -msgstr "\"{email}\" en nombre de \"{teamName}\" te ha invitado a firmar \"ejemplo de documento\"." +#~ msgid "\"{email}\" on behalf of \"{teamName}\" has invited you to sign \"example document\"." +#~ msgstr "\"{email}\" en nombre de \"{teamName}\" te ha invitado a firmar \"ejemplo de documento\"." #: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:209 #~ msgid "" @@ -42,23 +42,23 @@ msgstr "\"{email}\" en nombre de \"{teamName}\" te ha invitado a firmar \"ejempl #~ "\"{placeholderEmail}\" on behalf of \"{0}\" has invited you to sign \"example\n" #~ "document\"." -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:209 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:221 msgid "\"{placeholderEmail}\" on behalf of \"{0}\" has invited you to sign \"example document\"." msgstr "\"{placeholderEmail}\" en nombre de \"{0}\" te ha invitado a firmar \"documento de ejemplo\"." #: apps/web/src/components/(teams)/forms/update-team-form.tsx:241 -msgid "\"{teamUrl}\" has invited you to sign \"example document\"." -msgstr "\"{teamUrl}\" te ha invitado a firmar \"ejemplo de documento\"." +#~ msgid "\"{teamUrl}\" has invited you to sign \"example document\"." +#~ msgstr "\"{teamUrl}\" te ha invitado a firmar \"ejemplo de documento\"." -#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:80 +#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:83 msgid "({0}) has invited you to approve this document" msgstr "({0}) te ha invitado a aprobar este documento" -#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:77 +#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:80 msgid "({0}) has invited you to sign this document" msgstr "({0}) te ha invitado a firmar este documento" -#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:74 +#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:77 msgid "({0}) has invited you to view this document" msgstr "({0}) te ha invitado a ver este documento" @@ -71,7 +71,7 @@ msgstr "{0, plural, one {(1 carácter excedido)} other {(# caracteres excedidos) msgid "{0, plural, one {# character over the limit} other {# characters over the limit}}" msgstr "{0, plural, one {# carácter sobre el límite} other {# caracteres sobre el límite}}" -#: apps/web/src/app/(recipient)/d/[token]/page.tsx:82 +#: apps/web/src/app/(recipient)/d/[token]/page.tsx:84 msgid "{0, plural, one {# recipient} other {# recipients}}" msgstr "{0, plural, one {# destinatario} other {# destinatarios}}" @@ -88,11 +88,11 @@ msgstr "{0, plural, one {<0>Tienes <1>1 invitación de equipo pendiente} msgid "{0, plural, one {1 matching field} other {# matching fields}}" msgstr "{0, plural, one {1 campo que coincide} other {# campos que coinciden}}" -#: apps/web/src/app/(dashboard)/documents/[id]/edit/document-edit-page-view.tsx:129 +#: apps/web/src/app/(dashboard)/documents/[id]/edit/document-edit-page-view.tsx:132 msgid "{0, plural, one {1 Recipient} other {# Recipients}}" msgstr "{0, plural, one {1 Destinatario} other {# Destinatarios}}" -#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:235 +#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:238 msgid "{0, plural, one {Waiting on 1 recipient} other {Waiting on # recipients}}" msgstr "{0, plural, one {Esperando 1 destinatario} other {Esperando # destinatarios}}" @@ -116,7 +116,7 @@ msgstr "{0} plantillas de firma directa" msgid "{0} of {1} documents remaining this month." msgstr "{0} de {1} documentos restantes este mes." -#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:170 +#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:173 msgid "{0} Recipient(s)" msgstr "{0} Destinatario(s)" @@ -157,6 +157,18 @@ msgstr "<0>\"{0}\" ya no está disponible para firmar" msgid "<0>Sender: All" msgstr "<0>Remitente: Todos" +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:104 +msgid "<0>You are about to complete approving <1>\"{documentTitle}\".<2/> Are you sure?" +msgstr "" + +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:90 +msgid "<0>You are about to complete signing \"<1>{documentTitle}\".<2/> Are you sure?" +msgstr "" + +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:76 +msgid "<0>You are about to complete viewing \"<1>{documentTitle}\".<2/> Are you sure?" +msgstr "" + #: apps/web/src/components/(dashboard)/settings/token/contants.ts:5 msgid "1 month" msgstr "1 mes" @@ -240,7 +252,7 @@ msgid "A unique URL to access your profile" msgstr "Una URL única para acceder a tu perfil" #: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:206 -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:179 +#: apps/web/src/components/(teams)/forms/update-team-form.tsx:138 msgid "A unique URL to identify your team" msgstr "Una URL única para identificar tu equipo" @@ -296,7 +308,7 @@ msgstr "Acción" msgid "Actions" msgstr "Acciones" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:107 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:101 #: apps/web/src/components/(teams)/tables/teams-member-page-data-table.tsx:76 #: apps/web/src/components/(teams)/tables/user-settings-teams-page-data-table.tsx:71 msgid "Active" @@ -472,9 +484,12 @@ msgstr "Se ha enviado un correo electrónico solicitando la transferencia de est msgid "An error occurred" msgstr "Ocurrió un error" +#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:257 +msgid "An error occurred while adding fields." +msgstr "" + #: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:269 -#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:201 -#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:235 +#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:218 msgid "An error occurred while adding signers." msgstr "Ocurrió un error al agregar firmantes." @@ -536,7 +551,7 @@ msgstr "Ocurrió un error mientras se eliminaba el campo." #: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:148 #: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:195 #: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:129 -#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:173 +#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:190 msgid "An error occurred while removing the signature." msgstr "Ocurrió un error al eliminar la firma." @@ -560,7 +575,7 @@ msgstr "Ocurrió un error al enviar tu correo electrónico de confirmación" #: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:122 #: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:150 #: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:102 -#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:147 +#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:164 #: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:168 msgid "An error occurred while signing the document." msgstr "Ocurrió un error al firmar el documento." @@ -570,7 +585,7 @@ msgid "An error occurred while trying to create a checkout session." msgstr "Ocurrió un error al intentar crear una sesión de pago." #: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:235 -#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:170 +#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:187 msgid "An error occurred while updating the document settings." msgstr "Ocurrió un error al actualizar la configuración del documento." @@ -608,7 +623,7 @@ msgstr "Ocurrió un error al subir tu documento." #: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:116 #: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:89 #: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:100 -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:134 +#: apps/web/src/components/(teams)/forms/update-team-form.tsx:93 #: apps/web/src/components/forms/avatar-image.tsx:94 #: apps/web/src/components/forms/avatar-image.tsx:122 #: apps/web/src/components/forms/password.tsx:84 @@ -662,7 +677,7 @@ msgstr "Versión de la Aplicación" #: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:89 #: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:120 #: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:150 -#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:125 +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:142 msgid "Approve" msgstr "Aprobar" @@ -725,7 +740,7 @@ msgstr "Avatar" msgid "Avatar Updated" msgstr "Avatar actualizado" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:127 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:121 msgid "Awaiting email confirmation" msgstr "Esperando confirmación de correo electrónico" @@ -836,8 +851,8 @@ msgstr "Al utilizar la función de firma electrónica, usted está consintiendo #: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:215 #: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:328 #: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:153 -#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:113 -#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:248 +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:130 +#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:305 #: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:335 #: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:121 #: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:176 @@ -930,8 +945,8 @@ msgstr "Haga clic para copiar el enlace de firma para enviar al destinatario" #: apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx:175 #: apps/web/src/app/(signing)/sign/[token]/form.tsx:115 -#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:440 -#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:319 +#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:456 +#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:335 msgid "Click to insert field" msgstr "Haga clic para insertar campo" @@ -948,22 +963,22 @@ msgstr "Haga clic para insertar campo" msgid "Close" msgstr "Cerrar" -#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:61 -#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:430 -#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:309 +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:60 +#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:446 +#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:325 #: apps/web/src/components/forms/v2/signup.tsx:534 msgid "Complete" msgstr "Completo" -#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:70 +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:69 msgid "Complete Approval" msgstr "Completar Aprobación" -#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:69 +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:68 msgid "Complete Signing" msgstr "Completar Firmado" -#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:68 +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:67 msgid "Complete Viewing" msgstr "Completar Visualización" @@ -1049,18 +1064,26 @@ msgstr "Continuar" msgid "Continue to login" msgstr "Continuar con el inicio de sesión" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:173 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:185 msgid "Controls the default language of an uploaded document. This will be used as the language in email communications with the recipients." msgstr "Controla el idioma predeterminado de un documento cargado. Este se utilizará como el idioma en las comunicaciones por correo electrónico con los destinatarios." -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:141 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:153 msgid "Controls the default visibility of an uploaded document." msgstr "Controla la visibilidad predeterminada de un documento cargado." -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:220 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:232 msgid "Controls the formatting of the message that will be sent when inviting a recipient to sign a document. If a custom message has been provided while configuring the document, it will be used instead." msgstr "Controla el formato del mensaje que se enviará al invitar a un destinatario a firmar un documento. Si se ha proporcionado un mensaje personalizado al configurar el documento, se usará en su lugar." +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:263 +msgid "Controls whether the recipients can sign the documents using a typed signature. Enable or disable the typed signature globally." +msgstr "" + +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:293 +msgid "Controls whether the signing certificate will be included in the document when it is downloaded. The signing certificate can still be downloaded from the logs page separately." +msgstr "" + #: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:128 msgid "Copied" msgstr "Copiado" @@ -1178,7 +1201,7 @@ msgstr "Crear webhook" msgid "Create Webhook" msgstr "Crear Webhook" -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:215 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:213 msgid "Create your account and start using state-of-the-art document signing." msgstr "Crea tu cuenta y comienza a utilizar la firma de documentos de última generación." @@ -1251,12 +1274,11 @@ msgstr "Rechazar" msgid "Declined team invitation" msgstr "Invitación de equipo rechazada" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:153 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:165 msgid "Default Document Language" msgstr "Idioma predeterminado del documento" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:117 -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:195 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:129 msgid "Default Document Visibility" msgstr "Visibilidad predeterminada del documento" @@ -1265,7 +1287,6 @@ msgid "delete" msgstr "eliminar" #: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:144 -#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:210 #: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:202 #: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:177 #: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:211 @@ -1317,7 +1338,7 @@ msgstr "Eliminar Documento" msgid "Delete passkey" msgstr "Eliminar clave de paso" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:197 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:191 #: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:118 msgid "Delete team" msgstr "Eliminar equipo" @@ -1357,7 +1378,7 @@ msgid "Details" msgstr "Detalles" #: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:75 -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:234 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:242 msgid "Device" msgstr "Dispositivo" @@ -1456,7 +1477,7 @@ msgstr "Documento" msgid "Document All" msgstr "Documentar Todo" -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:134 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:132 msgid "Document Approved" msgstr "Documento Aprobado" @@ -1472,7 +1493,7 @@ msgstr "Documento Cancelado" msgid "Document completed" msgstr "Documento completado" -#: apps/web/src/app/embed/completed.tsx:16 +#: apps/web/src/app/embed/completed.tsx:17 msgid "Document Completed!" msgstr "¡Documento completado!" @@ -1489,7 +1510,7 @@ msgid "Document created using a <0>direct link" msgstr "Documento creado usando un <0>enlace directo" #: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:51 -#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:178 +#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:181 #: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:61 msgid "Document deleted" msgstr "Documento eliminado" @@ -1502,7 +1523,7 @@ msgstr "Borrador de documento" msgid "Document Duplicated" msgstr "Documento duplicado" -#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:189 +#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:192 #: apps/web/src/components/document/document-history-sheet.tsx:104 msgid "Document history" msgstr "Historial de documentos" @@ -1528,7 +1549,7 @@ msgstr "Métricas de documento" msgid "Document moved" msgstr "Documento movido" -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:158 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:156 msgid "Document no longer available to sign" msgstr "El documento ya no está disponible para firmar" @@ -1536,7 +1557,7 @@ msgstr "El documento ya no está disponible para firmar" msgid "Document pending" msgstr "Documento pendiente" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:91 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:103 msgid "Document preferences updated" msgstr "Preferencias del documento actualizadas" @@ -1560,7 +1581,7 @@ msgstr "Documento enviado" #~ msgid "Document Settings" #~ msgstr "Document Settings" -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:132 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:130 msgid "Document Signed" msgstr "Documento firmado" @@ -1584,7 +1605,7 @@ msgstr "La carga de documentos está deshabilitada debido a facturas impagadas" msgid "Document uploaded" msgstr "Documento subido" -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:133 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:131 msgid "Document Viewed" msgstr "Documento visto" @@ -1608,7 +1629,7 @@ msgstr "El documento será eliminado permanentemente" msgid "Documents" msgstr "Documentos" -#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:195 +#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:197 msgid "Documents created from template" msgstr "Documentos creados a partir de la plantilla" @@ -1643,6 +1664,14 @@ msgstr "Descargar registros de auditoría" msgid "Download Certificate" msgstr "Descargar certificado" +#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:114 +#~ msgid "Download with Certificate" +#~ msgstr "" + +#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:118 +#~ msgid "Download without Certificate" +#~ msgstr "" + #: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:214 #: apps/web/src/components/formatter/document-status.tsx:34 msgid "Draft" @@ -1681,7 +1710,7 @@ msgstr "Duplicar" msgid "Edit" msgstr "Editar" -#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:115 +#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:117 msgid "Edit Template" msgstr "Editar plantilla" @@ -1707,8 +1736,8 @@ msgstr "Divulgación de Firma Electrónica" #: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:129 #: apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx:118 #: apps/web/src/app/(signing)/sign/[token]/email-field.tsx:126 -#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:377 -#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:257 +#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:393 +#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:273 #: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:169 #: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:153 #: apps/web/src/components/forms/forgot-password.tsx:81 @@ -1769,6 +1798,10 @@ msgstr "Habilitar firma de enlace directo" msgid "Enable Direct Link Signing" msgstr "Habilitar firma de enlace directo" +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:248 +msgid "Enable Typed Signature" +msgstr "" + #: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:123 #: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:138 #: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:74 @@ -1815,9 +1848,9 @@ msgstr "Ingresa tu texto aquí" #: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:57 #: apps/web/src/app/(dashboard)/documents/upload-document.tsx:106 #: apps/web/src/app/(dashboard)/documents/upload-document.tsx:112 -#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:169 -#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:200 -#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:234 +#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:186 +#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:217 +#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:256 #: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:51 #: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:56 #: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:175 @@ -1839,8 +1872,9 @@ msgstr "Ingresa tu texto aquí" #: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:194 #: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:101 #: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:128 -#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:146 -#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:172 +#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:129 +#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:163 +#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:189 #: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:167 #: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:195 #: apps/web/src/components/(dashboard)/layout/verify-email-banner.tsx:54 @@ -1852,15 +1886,15 @@ msgstr "Error" #~ msgid "Error updating global team settings" #~ msgstr "Error updating global team settings" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:128 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:140 msgid "Everyone can access and view the document" msgstr "Todos pueden acceder y ver el documento" -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:142 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:140 msgid "Everyone has signed" msgstr "Todos han firmado" -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:166 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:164 msgid "Everyone has signed! You will receive an Email copy of the signed document." msgstr "¡Todos han firmado! Recibirás una copia por correo electrónico del documento firmado." @@ -1868,7 +1902,7 @@ msgstr "¡Todos han firmado! Recibirás una copia por correo electrónico del do msgid "Exceeded timeout" msgstr "Tiempo de espera excedido" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:120 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:114 msgid "Expired" msgstr "Expirado" @@ -1910,8 +1944,8 @@ msgstr "¿Olvidaste tu contraseña?" #: apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx:326 #: apps/web/src/app/(signing)/sign/[token]/form.tsx:178 #: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:193 -#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:362 -#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:242 +#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:378 +#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:258 #: apps/web/src/components/forms/profile.tsx:110 #: apps/web/src/components/forms/v2/signup.tsx:312 msgid "Full Name" @@ -1949,7 +1983,7 @@ msgstr "Regresar" msgid "Go back home" msgstr "Regresar a casa" -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:226 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:224 #: apps/web/src/app/(signing)/sign/[token]/no-longer-available.tsx:57 msgid "Go Back Home" msgstr "Regresar a casa" @@ -1986,7 +2020,6 @@ msgstr "Así es como funciona:" msgid "Hey I’m Timur" msgstr "Hola, soy Timur" -#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:210 #: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:202 #: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:155 msgid "Hide" @@ -2033,6 +2066,10 @@ msgstr "Documentos en bandeja de entrada" #~ msgid "Include Sender Details" #~ msgstr "Include Sender Details" +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:278 +msgid "Include the Signing Certificate in the Document" +msgstr "" + #: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:65 #: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:50 msgid "Information" @@ -2109,7 +2146,7 @@ msgid "Invoice" msgstr "Factura" #: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:47 -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:227 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:235 msgid "IP Address" msgstr "Dirección IP" @@ -2249,7 +2286,7 @@ msgstr "Gestionar el perfil de {0}" msgid "Manage all teams you are currently associated with." msgstr "Gestionar todos los equipos con los que estás asociado actualmente." -#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:159 +#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:161 msgid "Manage and view template" msgstr "Gestionar y ver plantilla" @@ -2313,7 +2350,7 @@ msgstr "Gestionar tus claves de acceso." msgid "Manage your site settings here" msgstr "Gestionar la configuración de tu sitio aquí" -#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:123 +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:140 msgid "Mark as Viewed" msgstr "Marcar como visto" @@ -2395,7 +2432,7 @@ msgstr "Mis plantillas" msgid "Name" msgstr "Nombre" -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:211 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:209 msgid "Need to sign documents?" msgstr "¿Necesitas firmar documentos?" @@ -2416,13 +2453,13 @@ msgstr "Nuevo propietario del equipo" msgid "New Template" msgstr "Nueva plantilla" -#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:421 -#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:300 +#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:437 +#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:316 #: apps/web/src/components/forms/v2/signup.tsx:521 msgid "Next" msgstr "Siguiente" -#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:61 +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:60 msgid "Next field" msgstr "Siguiente campo" @@ -2528,11 +2565,11 @@ msgstr "Una vez confirmado, ocurrirá lo siguiente:" msgid "Once you have scanned the QR code or entered the code manually, enter the code provided by your authenticator app below." msgstr "Una vez que hayas escaneado el código QR o ingresado el código manualmente, ingresa el código proporcionado por tu aplicación de autenticación a continuación." -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:134 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:146 msgid "Only admins can access and view the document" msgstr "Solo los administradores pueden acceder y ver el documento" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:131 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:143 msgid "Only managers and above can access and view the document" msgstr "Solo los gerentes y superiores pueden acceder y ver el documento" @@ -2778,7 +2815,7 @@ msgstr "Por favor, escribe <0>{0} para confirmar." msgid "Preferences" msgstr "Preferencias" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:204 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:216 msgid "Preview" msgstr "Vista previa" @@ -2856,7 +2893,7 @@ msgstr "Lea la <0>divulgación de firma completa." msgid "Ready" msgstr "Listo" -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:281 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:289 msgid "Reason" msgstr "Razón" @@ -2983,7 +3020,7 @@ msgstr "Reenviar correo de confirmación" msgid "Resend verification" msgstr "Reenviar verificación" -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:266 +#: apps/web/src/components/(teams)/forms/update-team-form.tsx:163 #: apps/web/src/components/forms/public-profile-form.tsx:267 msgid "Reset" msgstr "Restablecer" @@ -3064,7 +3101,7 @@ msgstr "Roles" #: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:337 #: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:344 #: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:312 -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:232 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:305 msgid "Save" msgstr "Guardar" @@ -3139,8 +3176,7 @@ msgstr "Enviar correo de confirmación" msgid "Send document" msgstr "Enviar documento" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:188 -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:220 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:200 msgid "Send on Behalf of Team" msgstr "Enviar en nombre del equipo" @@ -3161,7 +3197,7 @@ msgid "Sending..." msgstr "Enviando..." #: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:101 -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:248 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:256 msgid "Sent" msgstr "Enviado" @@ -3181,12 +3217,12 @@ msgid "Setup" msgstr "Configuración" #: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:148 -#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:214 +#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:207 msgid "Share" msgstr "Compartir" #: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:179 -#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:240 +#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:233 msgid "Share Signing Card" msgstr "Compartir tarjeta de firma" @@ -3213,14 +3249,14 @@ msgstr "Mostrar plantillas en el perfil público de tu equipo para que tu audien #: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:229 #: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:182 #: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:224 -#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:124 -#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:256 +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:141 +#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:313 #: apps/web/src/components/ui/user-profile-skeleton.tsx:75 #: apps/web/src/components/ui/user-profile-timur.tsx:81 msgid "Sign" msgstr "Firmar" -#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:217 +#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:274 msgid "Sign as {0} <0>({1})" msgstr "Firmar como {0} <0>({1})" @@ -3228,8 +3264,8 @@ msgstr "Firmar como {0} <0>({1})" msgid "Sign as<0>{0} <1>({1})" msgstr "Firmar como<0>{0} <1>({1})" -#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:330 -#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:210 +#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:346 +#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:226 msgid "Sign document" msgstr "Firmar documento" @@ -3261,8 +3297,8 @@ msgstr "Inicia sesión en tu cuenta" msgid "Sign Out" msgstr "Cerrar sesión" -#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:351 -#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:231 +#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:367 +#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:247 msgid "Sign the document to complete the process." msgstr "Firma el documento para completar el proceso." @@ -3288,15 +3324,15 @@ msgstr "Regístrate con OIDC" #: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:177 #: apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx:338 #: apps/web/src/app/(signing)/sign/[token]/form.tsx:192 -#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:195 -#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:225 -#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:392 -#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:271 +#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:247 +#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:282 +#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:408 +#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:287 #: apps/web/src/components/forms/profile.tsx:132 msgid "Signature" msgstr "Firma" -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:220 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:228 msgid "Signature ID" msgstr "ID de Firma" @@ -3304,12 +3340,12 @@ msgstr "ID de Firma" msgid "Signatures Collected" msgstr "Firmas recolectadas" -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:200 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:198 msgid "Signatures will appear once the document has been completed" msgstr "Las firmas aparecerán una vez que el documento se haya completado" #: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:114 -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:270 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:278 #: apps/web/src/components/document/document-read-only-fields.tsx:84 msgid "Signed" msgstr "Firmado" @@ -3322,7 +3358,7 @@ msgstr "Eventos del Firmante" msgid "Signing Certificate" msgstr "Certificado de Firma" -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:303 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:311 msgid "Signing certificate provided by" msgstr "Certificado de firma proporcionado por" @@ -3332,7 +3368,7 @@ msgid "Signing in..." msgstr "Iniciando sesión..." #: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:160 -#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:224 +#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:217 msgid "Signing Links" msgstr "Enlaces de firma" @@ -3386,8 +3422,8 @@ msgstr "Configuraciones del sitio" #: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:107 #: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:39 #: apps/web/src/app/(unauthenticated)/verify-email/[token]/page.tsx:61 -#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:243 -#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:125 +#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:248 +#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:130 #: apps/web/src/components/(teams)/dialogs/create-team-checkout-dialog.tsx:50 #: apps/web/src/components/(teams)/dialogs/create-team-checkout-dialog.tsx:99 #: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:210 @@ -3420,7 +3456,7 @@ msgstr "Algo salió mal al enviar el correo de confirmación." msgid "Something went wrong while updating the team billing subscription, please contact support." msgstr "Algo salió mal al actualizar la suscripción de facturación del equipo, por favor contacta al soporte." -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:96 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:108 msgid "Something went wrong!" msgstr "¡Algo salió mal!" @@ -3488,7 +3524,7 @@ msgstr "Suscripciones" #: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:108 #: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:79 #: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:92 -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:106 +#: apps/web/src/components/(teams)/forms/update-team-form.tsx:67 #: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:27 #: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:62 #: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:79 @@ -3519,8 +3555,8 @@ msgstr "Equipo" msgid "Team checkout" msgstr "Checkout del equipo" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:67 -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:146 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:61 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:140 msgid "Team email" msgstr "Correo del equipo" @@ -3563,7 +3599,7 @@ msgid "Team Member" msgstr "Miembro del equipo" #: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:166 -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:153 +#: apps/web/src/components/(teams)/forms/update-team-form.tsx:112 msgid "Team Name" msgstr "Nombre del equipo" @@ -3616,7 +3652,7 @@ msgid "Team transfer request expired" msgstr "Solicitud de transferencia del equipo expirada" #: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:196 -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:169 +#: apps/web/src/components/(teams)/forms/update-team-form.tsx:128 msgid "Team URL" msgstr "URL del equipo" @@ -3636,7 +3672,7 @@ msgstr "Equipos restringidos" #: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:39 #: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:148 #: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:228 -#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:146 +#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:148 #: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:408 #: apps/web/src/components/templates/manage-public-template-dialog.tsx:271 msgid "Template" @@ -3666,11 +3702,11 @@ msgstr "La plantilla ha sido actualizada." msgid "Template moved" msgstr "Plantilla movida" -#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:223 +#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:246 msgid "Template saved" msgstr "Plantilla guardada" -#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:87 +#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:86 #: apps/web/src/app/(dashboard)/templates/templates-page-view.tsx:55 #: apps/web/src/components/(dashboard)/common/command-menu.tsx:208 #: apps/web/src/components/(dashboard)/layout/desktop-nav.tsx:22 @@ -3713,7 +3749,7 @@ msgstr "El enlace directo ha sido copiado a tu portapapeles" msgid "The document has been successfully moved to the selected team." msgstr "El documento ha sido movido con éxito al equipo seleccionado." -#: apps/web/src/app/embed/completed.tsx:29 +#: apps/web/src/app/embed/completed.tsx:30 msgid "The document is now completed, please follow any instructions provided within the parent application." msgstr "El documento ahora está completado, por favor sigue cualquier instrucción proporcionada dentro de la aplicación principal." @@ -3874,7 +3910,7 @@ msgstr "Este documento no se pudo duplicar en este momento. Por favor, inténtal msgid "This document could not be re-sent at this time. Please try again." msgstr "Este documento no se pudo reenviar en este momento. Por favor, inténtalo de nuevo." -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:180 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:178 msgid "This document has been cancelled by the owner and is no longer available for others to sign." msgstr "Este documento ha sido cancelado por el propietario y ya no está disponible para que otros lo firmen." @@ -3882,11 +3918,11 @@ msgstr "Este documento ha sido cancelado por el propietario y ya no está dispon msgid "This document has been cancelled by the owner." msgstr "Este documento ha sido cancelado por el propietario." -#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:224 +#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:227 msgid "This document has been signed by all recipients" msgstr "Este documento ha sido firmado por todos los destinatarios" -#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:227 +#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:230 msgid "This document is currently a draft and has not been sent" msgstr "Este documento es actualmente un borrador y no ha sido enviado" @@ -3926,7 +3962,7 @@ msgstr "Este precio incluye un mínimo de 5 asientos." msgid "This session has expired. Please try again." msgstr "Esta sesión ha expirado. Por favor, inténtalo de nuevo." -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:201 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:195 msgid "This team, and any associated data excluding billing invoices will be permanently deleted." msgstr "Este equipo, y cualquier dato asociado, excluyendo las facturas de facturación, serán eliminados permanentemente." @@ -3943,7 +3979,7 @@ msgid "This token is invalid or has expired. Please contact your team for a new msgstr "Este token es inválido o ha expirado. Por favor, contacta a tu equipo para una nueva invitación." #: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:98 -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:127 +#: apps/web/src/components/(teams)/forms/update-team-form.tsx:86 msgid "This URL is already in use." msgstr "Esta URL ya está en uso." @@ -4076,13 +4112,13 @@ msgstr "transferir {teamName}" msgid "Transfer ownership of this team to a selected team member." msgstr "Transferir la propiedad de este equipo a un miembro del equipo seleccionado." -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:175 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:169 #: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:147 #: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:156 msgid "Transfer team" msgstr "Transferir equipo" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:179 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:173 msgid "Transfer the ownership of the team to another team member." msgstr "Transferir la propiedad del equipo a otro miembro del equipo." @@ -4133,6 +4169,10 @@ msgstr "Tipo" msgid "Type a command or search..." msgstr "Escribe un comando o busca..." +#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:130 +msgid "Typed signatures are not allowed. Please draw your signature." +msgstr "" + #: apps/web/src/app/(unauthenticated)/verify-email/page.tsx:26 msgid "Uh oh! Looks like you're missing a token" msgstr "¡Oh no! Parece que te falta un token" @@ -4225,10 +4265,10 @@ msgstr "No autorizado" msgid "Uncompleted" msgstr "Incompleto" -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:229 -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:254 -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:265 -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:276 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:237 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:262 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:273 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:284 msgid "Unknown" msgstr "Desconocido" @@ -4261,7 +4301,7 @@ msgstr "Actualizar clave de acceso" msgid "Update password" msgstr "Actualizar contraseña" -#: apps/web/src/components/forms/profile.tsx:150 +#: apps/web/src/components/forms/profile.tsx:151 msgid "Update profile" msgstr "Actualizar perfil" @@ -4273,7 +4313,7 @@ msgstr "Actualizar destinatario" msgid "Update role" msgstr "Actualizar rol" -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:278 +#: apps/web/src/components/(teams)/forms/update-team-form.tsx:175 msgid "Update team" msgstr "Actualizar equipo" @@ -4300,7 +4340,7 @@ msgstr "Actualizar webhook" msgid "Updating password..." msgstr "Actualizando contraseña..." -#: apps/web/src/components/forms/profile.tsx:150 +#: apps/web/src/components/forms/profile.tsx:151 msgid "Updating profile..." msgstr "Actualizando perfil..." @@ -4333,7 +4373,7 @@ msgstr "El archivo subido es demasiado pequeño" msgid "Uploaded file not an allowed file type" msgstr "El archivo subido no es un tipo de archivo permitido" -#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:170 +#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:172 msgid "Use" msgstr "Usar" @@ -4441,7 +4481,7 @@ msgstr "Ver Códigos" msgid "View Document" msgstr "Ver Documento" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:156 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:150 msgid "View documents associated with this email" msgstr "Ver documentos asociados con este correo electrónico" @@ -4467,7 +4507,7 @@ msgid "View teams" msgstr "Ver equipos" #: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:120 -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:259 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:267 msgid "Viewed" msgstr "Visto" @@ -4475,7 +4515,7 @@ msgstr "Visto" msgid "Waiting" msgstr "Esperando" -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:150 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:148 msgid "Waiting for others to sign" msgstr "Esperando a que otros firmen" @@ -4627,7 +4667,7 @@ msgstr "Encontramos un error desconocido al intentar actualizar tu contraseña. msgid "We encountered an unknown error while attempting to update your public profile. Please try again later." msgstr "Encontramos un error desconocido al intentar actualizar tu perfil público. Por favor, inténtalo de nuevo más tarde." -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:136 +#: apps/web/src/components/(teams)/forms/update-team-form.tsx:95 msgid "We encountered an unknown error while attempting to update your team. Please try again later." msgstr "Encontramos un error desconocido al intentar actualizar tu equipo. Por favor, inténtalo de nuevo más tarde." @@ -4670,8 +4710,8 @@ msgid "We were unable to setup two-factor authentication for your account. Pleas msgstr "No pudimos configurar la autenticación de dos factores para tu cuenta. Asegúrate de haber ingresado correctamente tu código e inténtalo de nuevo." #: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:120 -#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:245 -#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:127 +#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:250 +#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:132 msgid "We were unable to submit this document at this time. Please try again later." msgstr "No pudimos enviar este documento en este momento. Por favor, inténtalo de nuevo más tarde." @@ -4679,7 +4719,7 @@ msgstr "No pudimos enviar este documento en este momento. Por favor, inténtalo msgid "We were unable to update your branding preferences at this time, please try again later" msgstr "No pudimos actualizar tus preferencias de marca en este momento, por favor intenta de nuevo más tarde" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:98 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:110 msgid "We were unable to update your document preferences at this time, please try again later" msgstr "No pudimos actualizar tus preferencias de documento en este momento, por favor intenta de nuevo más tarde" @@ -4793,16 +4833,16 @@ msgid "You" msgstr "Tú" #: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:93 -msgid "You are about to complete approving \"{truncatedTitle}\".<0/> Are you sure?" -msgstr "Estás a punto de completar la aprobación de \"{truncatedTitle}\".<0/> ¿Estás seguro?" +#~ msgid "You are about to complete approving \"{truncatedTitle}\".<0/> Are you sure?" +#~ msgstr "Estás a punto de completar la aprobación de \"{truncatedTitle}\".<0/> ¿Estás seguro?" #: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:85 -msgid "You are about to complete signing \"{truncatedTitle}\".<0/> Are you sure?" -msgstr "Estás a punto de completar la firma de \"{truncatedTitle}\".<0/> ¿Estás seguro?" +#~ msgid "You are about to complete signing \"{truncatedTitle}\".<0/> Are you sure?" +#~ msgstr "Estás a punto de completar la firma de \"{truncatedTitle}\".<0/> ¿Estás seguro?" #: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:77 -msgid "You are about to complete viewing \"{truncatedTitle}\".<0/> Are you sure?" -msgstr "Estás a punto de completar la visualización de \"{truncatedTitle}\".<0/> ¿Estás seguro?" +#~ msgid "You are about to complete viewing \"{truncatedTitle}\".<0/> Are you sure?" +#~ msgstr "Estás a punto de completar la visualización de \"{truncatedTitle}\".<0/> ¿Estás seguro?" #: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:105 msgid "You are about to delete <0>\"{documentTitle}\"" @@ -4864,7 +4904,7 @@ msgstr "Puede copiar y compartir estos enlaces con los destinatarios para que pu msgid "You can update the profile URL by updating the team URL in the general settings page." msgstr "Puedes actualizar la URL del perfil actualizando la URL del equipo en la página de configuración general." -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:71 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:65 msgid "You can view documents associated with this email and use this identity when sending documents." msgstr "Puedes ver documentos asociados a este correo electrónico y usar esta identidad al enviar documentos." @@ -5002,7 +5042,7 @@ msgstr "Recibirás una notificación y podrás configurar tu perfil público de msgid "You will now be required to enter a code from your authenticator app when signing in." msgstr "Ahora se te pedirá que ingreses un código de tu aplicación de autenticador al iniciar sesión." -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:173 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:171 msgid "You will receive an Email copy of the signed document once everyone has signed." msgstr "Recibirás una copia por correo electrónico del documento firmado una vez que todos hayan firmado." @@ -5062,7 +5102,7 @@ msgstr "Tu documento ha sido subido con éxito." msgid "Your document has been uploaded successfully. You will be redirected to the template page." msgstr "Tu documento ha sido subido con éxito. Serás redirigido a la página de plantillas." -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:92 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:104 msgid "Your document preferences have been updated" msgstr "Tus preferencias de documento han sido actualizadas" @@ -5129,7 +5169,7 @@ msgstr "Tu equipo ha sido creado." msgid "Your team has been successfully deleted." msgstr "Tu equipo ha sido eliminado con éxito." -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:107 +#: apps/web/src/components/(teams)/forms/update-team-form.tsx:68 msgid "Your team has been successfully updated." msgstr "Tu equipo ha sido actualizado con éxito." @@ -5145,7 +5185,7 @@ msgstr "Tu plantilla ha sido eliminada con éxito." msgid "Your template will be duplicated." msgstr "Tu plantilla será duplicada." -#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:224 +#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:247 msgid "Your templates has been saved successfully." msgstr "Tus plantillas han sido guardadas con éxito." diff --git a/packages/lib/translations/fr/common.po b/packages/lib/translations/fr/common.po index 3e26d0da9..d851421e2 100644 --- a/packages/lib/translations/fr/common.po +++ b/packages/lib/translations/fr/common.po @@ -448,7 +448,7 @@ msgid "Advanced Options" msgstr "Options avancées" #: packages/ui/primitives/document-flow/add-fields.tsx:576 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:409 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:414 msgid "Advanced settings" msgstr "Paramètres avancés" @@ -504,11 +504,11 @@ msgstr "En attente d'approbation" msgid "Before you get started, please confirm your email address by clicking the button below:" msgstr "Avant de commencer, veuillez confirmer votre adresse email en cliquant sur le bouton ci-dessous :" -#: packages/ui/primitives/signature-pad/signature-pad.tsx:377 +#: packages/ui/primitives/signature-pad/signature-pad.tsx:383 msgid "Black" msgstr "Noir" -#: packages/ui/primitives/signature-pad/signature-pad.tsx:391 +#: packages/ui/primitives/signature-pad/signature-pad.tsx:397 msgid "Blue" msgstr "Bleu" @@ -566,7 +566,7 @@ msgstr "Valeurs de case à cocher" msgid "Clear filters" msgstr "Effacer les filtres" -#: packages/ui/primitives/signature-pad/signature-pad.tsx:411 +#: packages/ui/primitives/signature-pad/signature-pad.tsx:417 msgid "Clear Signature" msgstr "Effacer la signature" @@ -594,7 +594,7 @@ msgid "Configure Direct Recipient" msgstr "Configurer le destinataire direct" #: packages/ui/primitives/document-flow/add-fields.tsx:577 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:410 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:415 msgid "Configure the {0} field" msgstr "Configurer le champ {0}" @@ -657,7 +657,7 @@ msgstr "Texte personnalisé" #: packages/ui/primitives/document-flow/add-fields.tsx:934 #: packages/ui/primitives/document-flow/types.ts:53 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:697 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:729 msgid "Date" msgstr "Date" @@ -801,7 +801,7 @@ msgid "Drag & drop your PDF here." msgstr "Faites glisser et déposez votre PDF ici." #: packages/ui/primitives/document-flow/add-fields.tsx:1065 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:827 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:860 msgid "Dropdown" msgstr "Liste déroulante" @@ -815,7 +815,7 @@ msgstr "Options de liste déroulante" #: packages/ui/primitives/document-flow/add-signers.tsx:512 #: packages/ui/primitives/document-flow/add-signers.tsx:519 #: packages/ui/primitives/document-flow/types.ts:54 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:645 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:677 #: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:471 #: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:478 msgid "Email" @@ -851,6 +851,7 @@ msgid "Enable signing order" msgstr "Activer l'ordre de signature" #: packages/ui/primitives/document-flow/add-fields.tsx:802 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:597 msgid "Enable Typed Signatures" msgstr "Activer les signatures tapées" @@ -938,7 +939,7 @@ msgstr "Authentification d'action de destinataire globale" msgid "Go Back" msgstr "Retourner" -#: packages/ui/primitives/signature-pad/signature-pad.tsx:398 +#: packages/ui/primitives/signature-pad/signature-pad.tsx:404 msgid "Green" msgstr "Vert" @@ -1033,7 +1034,7 @@ msgstr "Min" #: packages/ui/primitives/document-flow/add-signers.tsx:550 #: packages/ui/primitives/document-flow/add-signers.tsx:556 #: packages/ui/primitives/document-flow/types.ts:55 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:671 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:703 #: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:506 #: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:512 msgid "Name" @@ -1052,7 +1053,7 @@ msgid "Needs to view" msgstr "Nécessite une visualisation" #: packages/ui/primitives/document-flow/add-fields.tsx:693 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:511 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:516 msgid "No recipient matching this description was found." msgstr "Aucun destinataire correspondant à cette description n'a été trouvé." @@ -1061,7 +1062,7 @@ msgid "No recipients" msgstr "Aucun destinataire" #: packages/ui/primitives/document-flow/add-fields.tsx:708 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:526 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:531 msgid "No recipients with this role" msgstr "Aucun destinataire avec ce rôle" @@ -1091,7 +1092,7 @@ msgstr "Aucun" #: packages/ui/primitives/document-flow/add-fields.tsx:986 #: packages/ui/primitives/document-flow/types.ts:56 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:749 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:781 msgid "Number" msgstr "Numéro" @@ -1183,7 +1184,6 @@ msgid "Please try again or contact our support." msgstr "Veuillez réessayer ou contacter notre support." #: packages/ui/primitives/document-flow/types.ts:57 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:775 msgid "Radio" msgstr "Radio" @@ -1226,7 +1226,7 @@ msgstr "E-mail de destinataire supprimé" msgid "Recipient signing request email" msgstr "E-mail de demande de signature de destinataire" -#: packages/ui/primitives/signature-pad/signature-pad.tsx:384 +#: packages/ui/primitives/signature-pad/signature-pad.tsx:390 msgid "Red" msgstr "Rouge" @@ -1295,7 +1295,7 @@ msgstr "Lignes par page" msgid "Save" msgstr "Sauvegarder" -#: packages/ui/primitives/template-flow/add-template-fields.tsx:861 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:893 msgid "Save Template" msgstr "Sauvegarder le modèle" @@ -1388,7 +1388,7 @@ msgstr "Se connecter" #: packages/ui/primitives/document-flow/add-signature.tsx:323 #: packages/ui/primitives/document-flow/field-icon.tsx:52 #: packages/ui/primitives/document-flow/types.ts:49 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:593 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:625 msgid "Signature" msgstr "Signature" @@ -1473,7 +1473,7 @@ msgstr "Titre du modèle" #: packages/ui/primitives/document-flow/add-fields.tsx:960 #: packages/ui/primitives/document-flow/types.ts:52 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:723 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:755 msgid "Text" msgstr "Texte" @@ -1637,7 +1637,7 @@ msgid "Title" msgstr "Titre" #: packages/ui/primitives/document-flow/add-fields.tsx:1080 -#: packages/ui/primitives/template-flow/add-template-fields.tsx:841 +#: packages/ui/primitives/template-flow/add-template-fields.tsx:873 msgid "To proceed further, please set at least one value for the {0} field." msgstr "Pour continuer, veuillez définir au moins une valeur pour le champ {0}." diff --git a/packages/lib/translations/fr/web.po b/packages/lib/translations/fr/web.po index e55da2336..2de78cb35 100644 --- a/packages/lib/translations/fr/web.po +++ b/packages/lib/translations/fr/web.po @@ -18,7 +18,7 @@ msgstr "" "X-Crowdin-File: web.po\n" "X-Crowdin-File-ID: 8\n" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:214 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:226 msgid "\"{0}\" has invited you to sign \"example document\"." msgstr "\"{0}\" vous a invité à signer \"example document\"." @@ -31,8 +31,8 @@ msgid "\"{documentTitle}\" has been successfully deleted" msgstr "\"{documentTitle}\" a été supprimé avec succès" #: apps/web/src/components/(teams)/forms/update-team-form.tsx:234 -msgid "\"{email}\" on behalf of \"{teamName}\" has invited you to sign \"example document\"." -msgstr "\"{email}\" au nom de \"{teamName}\" vous a invité à signer \"example document\"." +#~ msgid "\"{email}\" on behalf of \"{teamName}\" has invited you to sign \"example document\"." +#~ msgstr "\"{email}\" au nom de \"{teamName}\" vous a invité à signer \"example document\"." #: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:209 #~ msgid "" @@ -42,23 +42,23 @@ msgstr "\"{email}\" au nom de \"{teamName}\" vous a invité à signer \"example #~ "\"{placeholderEmail}\" on behalf of \"{0}\" has invited you to sign \"example\n" #~ "document\"." -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:209 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:221 msgid "\"{placeholderEmail}\" on behalf of \"{0}\" has invited you to sign \"example document\"." msgstr "\"{placeholderEmail}\" au nom de \"{0}\" vous a invité à signer \"exemple de document\"." #: apps/web/src/components/(teams)/forms/update-team-form.tsx:241 -msgid "\"{teamUrl}\" has invited you to sign \"example document\"." -msgstr "\"{teamUrl}\" vous a invité à signer \"example document\"." +#~ msgid "\"{teamUrl}\" has invited you to sign \"example document\"." +#~ msgstr "\"{teamUrl}\" vous a invité à signer \"example document\"." -#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:80 +#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:83 msgid "({0}) has invited you to approve this document" msgstr "({0}) vous a invité à approuver ce document" -#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:77 +#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:80 msgid "({0}) has invited you to sign this document" msgstr "({0}) vous a invité à signer ce document" -#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:74 +#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:77 msgid "({0}) has invited you to view this document" msgstr "({0}) vous a invité à consulter ce document" @@ -71,7 +71,7 @@ msgstr "{0, plural, one {(1 caractère de trop)} other {(# caractères de trop)} msgid "{0, plural, one {# character over the limit} other {# characters over the limit}}" msgstr "{0, plural, one {# caractère au-dessus de la limite} other {# caractères au-dessus de la limite}}" -#: apps/web/src/app/(recipient)/d/[token]/page.tsx:82 +#: apps/web/src/app/(recipient)/d/[token]/page.tsx:84 msgid "{0, plural, one {# recipient} other {# recipients}}" msgstr "{0, plural, one {# destinataire} other {# destinataires}}" @@ -88,11 +88,11 @@ msgstr "{0, plural, one {<0>Vous avez <1>1 invitation d'équipe en attente\"{0}\" n'est plus disponible pour signer" msgid "<0>Sender: All" msgstr "<0>Expéditeur : Tous" +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:104 +msgid "<0>You are about to complete approving <1>\"{documentTitle}\".<2/> Are you sure?" +msgstr "" + +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:90 +msgid "<0>You are about to complete signing \"<1>{documentTitle}\".<2/> Are you sure?" +msgstr "" + +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:76 +msgid "<0>You are about to complete viewing \"<1>{documentTitle}\".<2/> Are you sure?" +msgstr "" + #: apps/web/src/components/(dashboard)/settings/token/contants.ts:5 msgid "1 month" msgstr "1 mois" @@ -240,7 +252,7 @@ msgid "A unique URL to access your profile" msgstr "Une URL unique pour accéder à votre profil" #: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:206 -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:179 +#: apps/web/src/components/(teams)/forms/update-team-form.tsx:138 msgid "A unique URL to identify your team" msgstr "Une URL unique pour identifier votre équipe" @@ -296,7 +308,7 @@ msgstr "Action" msgid "Actions" msgstr "Actions" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:107 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:101 #: apps/web/src/components/(teams)/tables/teams-member-page-data-table.tsx:76 #: apps/web/src/components/(teams)/tables/user-settings-teams-page-data-table.tsx:71 msgid "Active" @@ -472,9 +484,12 @@ msgstr "Un e-mail demandant le transfert de cette équipe a été envoyé." msgid "An error occurred" msgstr "Une erreur est survenue" +#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:257 +msgid "An error occurred while adding fields." +msgstr "" + #: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:269 -#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:201 -#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:235 +#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:218 msgid "An error occurred while adding signers." msgstr "Une erreur est survenue lors de l'ajout de signataires." @@ -536,7 +551,7 @@ msgstr "Une erreur est survenue lors de la suppression du champ." #: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:148 #: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:195 #: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:129 -#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:173 +#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:190 msgid "An error occurred while removing the signature." msgstr "Une erreur est survenue lors de la suppression de la signature." @@ -560,7 +575,7 @@ msgstr "Une erreur est survenue lors de l'envoi de votre e-mail de confirmation" #: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:122 #: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:150 #: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:102 -#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:147 +#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:164 #: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:168 msgid "An error occurred while signing the document." msgstr "Une erreur est survenue lors de la signature du document." @@ -570,7 +585,7 @@ msgid "An error occurred while trying to create a checkout session." msgstr "Une erreur est survenue lors de la création d'une session de paiement." #: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:235 -#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:170 +#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:187 msgid "An error occurred while updating the document settings." msgstr "Une erreur est survenue lors de la mise à jour des paramètres du document." @@ -608,7 +623,7 @@ msgstr "Une erreur est survenue lors du téléchargement de votre document." #: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:116 #: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:89 #: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:100 -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:134 +#: apps/web/src/components/(teams)/forms/update-team-form.tsx:93 #: apps/web/src/components/forms/avatar-image.tsx:94 #: apps/web/src/components/forms/avatar-image.tsx:122 #: apps/web/src/components/forms/password.tsx:84 @@ -662,7 +677,7 @@ msgstr "Version de l'application" #: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:89 #: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:120 #: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:150 -#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:125 +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:142 msgid "Approve" msgstr "Approuver" @@ -725,7 +740,7 @@ msgstr "Avatar" msgid "Avatar Updated" msgstr "Avatar mis à jour" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:127 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:121 msgid "Awaiting email confirmation" msgstr "En attente de confirmation par e-mail" @@ -836,8 +851,8 @@ msgstr "En utilisant la fonctionnalité de signature électronique, vous consent #: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:215 #: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:328 #: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:153 -#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:113 -#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:248 +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:130 +#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:305 #: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:335 #: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:121 #: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:176 @@ -930,8 +945,8 @@ msgstr "Cliquez pour copier le lien de signature à envoyer au destinataire" #: apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx:175 #: apps/web/src/app/(signing)/sign/[token]/form.tsx:115 -#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:440 -#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:319 +#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:456 +#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:335 msgid "Click to insert field" msgstr "Cliquez pour insérer le champ" @@ -948,22 +963,22 @@ msgstr "Cliquez pour insérer le champ" msgid "Close" msgstr "Fermer" -#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:61 -#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:430 -#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:309 +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:60 +#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:446 +#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:325 #: apps/web/src/components/forms/v2/signup.tsx:534 msgid "Complete" msgstr "Compléter" -#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:70 +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:69 msgid "Complete Approval" msgstr "Compléter l'approbation" -#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:69 +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:68 msgid "Complete Signing" msgstr "Compléter la signature" -#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:68 +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:67 msgid "Complete Viewing" msgstr "Compléter la visualisation" @@ -1049,18 +1064,26 @@ msgstr "Continuer" msgid "Continue to login" msgstr "Continuer vers la connexion" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:173 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:185 msgid "Controls the default language of an uploaded document. This will be used as the language in email communications with the recipients." msgstr "Contrôle la langue par défaut d'un document téléchargé. Cela sera utilisé comme langue dans les communications par e-mail avec les destinataires." -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:141 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:153 msgid "Controls the default visibility of an uploaded document." msgstr "Contrôle la visibilité par défaut d'un document téléchargé." -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:220 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:232 msgid "Controls the formatting of the message that will be sent when inviting a recipient to sign a document. If a custom message has been provided while configuring the document, it will be used instead." msgstr "Contrôle le formatage du message qui sera envoyé lors de l'invitation d'un destinataire à signer un document. Si un message personnalisé a été fourni lors de la configuration du document, il sera utilisé à la place." +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:263 +msgid "Controls whether the recipients can sign the documents using a typed signature. Enable or disable the typed signature globally." +msgstr "" + +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:293 +msgid "Controls whether the signing certificate will be included in the document when it is downloaded. The signing certificate can still be downloaded from the logs page separately." +msgstr "" + #: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:128 msgid "Copied" msgstr "Copié" @@ -1178,7 +1201,7 @@ msgstr "Créer un webhook" msgid "Create Webhook" msgstr "Créer un Webhook" -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:215 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:213 msgid "Create your account and start using state-of-the-art document signing." msgstr "Créez votre compte et commencez à utiliser la signature de documents à la pointe de la technologie." @@ -1251,12 +1274,11 @@ msgstr "Décliner" msgid "Declined team invitation" msgstr "Invitation d'équipe refusée" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:153 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:165 msgid "Default Document Language" msgstr "Langue par défaut du document" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:117 -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:195 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:129 msgid "Default Document Visibility" msgstr "Visibilité par défaut du document" @@ -1265,7 +1287,6 @@ msgid "delete" msgstr "supprimer" #: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:144 -#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:210 #: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:202 #: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:177 #: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:211 @@ -1317,7 +1338,7 @@ msgstr "Supprimer le document" msgid "Delete passkey" msgstr "Supprimer la clé d'accès" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:197 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:191 #: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:118 msgid "Delete team" msgstr "Supprimer l'équipe" @@ -1357,7 +1378,7 @@ msgid "Details" msgstr "Détails" #: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:75 -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:234 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:242 msgid "Device" msgstr "Appareil" @@ -1456,7 +1477,7 @@ msgstr "Document" msgid "Document All" msgstr "Document Tout" -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:134 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:132 msgid "Document Approved" msgstr "Document Approuvé" @@ -1472,7 +1493,7 @@ msgstr "Document Annulé" msgid "Document completed" msgstr "Document complété" -#: apps/web/src/app/embed/completed.tsx:16 +#: apps/web/src/app/embed/completed.tsx:17 msgid "Document Completed!" msgstr "Document Complété !" @@ -1489,7 +1510,7 @@ msgid "Document created using a <0>direct link" msgstr "Document créé en utilisant un <0>lien direct" #: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:51 -#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:178 +#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:181 #: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:61 msgid "Document deleted" msgstr "Document supprimé" @@ -1502,7 +1523,7 @@ msgstr "Brouillon de document" msgid "Document Duplicated" msgstr "Document dupliqué" -#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:189 +#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:192 #: apps/web/src/components/document/document-history-sheet.tsx:104 msgid "Document history" msgstr "Historique du document" @@ -1528,7 +1549,7 @@ msgstr "Métriques du document" msgid "Document moved" msgstr "Document déplacé" -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:158 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:156 msgid "Document no longer available to sign" msgstr "Document non disponible pour signature" @@ -1536,7 +1557,7 @@ msgstr "Document non disponible pour signature" msgid "Document pending" msgstr "Document en attente" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:91 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:103 msgid "Document preferences updated" msgstr "Préférences de document mises à jour" @@ -1560,7 +1581,7 @@ msgstr "Document envoyé" #~ msgid "Document Settings" #~ msgstr "Document Settings" -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:132 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:130 msgid "Document Signed" msgstr "Document signé" @@ -1584,7 +1605,7 @@ msgstr "Téléchargement du document désactivé en raison de factures impayées msgid "Document uploaded" msgstr "Document téléchargé" -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:133 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:131 msgid "Document Viewed" msgstr "Document consulté" @@ -1608,7 +1629,7 @@ msgstr "Le document sera supprimé de manière permanente" msgid "Documents" msgstr "Documents" -#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:195 +#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:197 msgid "Documents created from template" msgstr "Documents créés à partir du modèle" @@ -1643,6 +1664,14 @@ msgstr "Télécharger les journaux d'audit" msgid "Download Certificate" msgstr "Télécharger le certificat" +#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:114 +#~ msgid "Download with Certificate" +#~ msgstr "" + +#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:118 +#~ msgid "Download without Certificate" +#~ msgstr "" + #: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:214 #: apps/web/src/components/formatter/document-status.tsx:34 msgid "Draft" @@ -1681,7 +1710,7 @@ msgstr "Dupliquer" msgid "Edit" msgstr "Modifier" -#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:115 +#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:117 msgid "Edit Template" msgstr "Modifier le modèle" @@ -1707,8 +1736,8 @@ msgstr "Divulgation de signature électronique" #: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:129 #: apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx:118 #: apps/web/src/app/(signing)/sign/[token]/email-field.tsx:126 -#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:377 -#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:257 +#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:393 +#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:273 #: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:169 #: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:153 #: apps/web/src/components/forms/forgot-password.tsx:81 @@ -1769,6 +1798,10 @@ msgstr "Activer la signature par lien direct" msgid "Enable Direct Link Signing" msgstr "Activer la signature par lien direct" +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:248 +msgid "Enable Typed Signature" +msgstr "" + #: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:123 #: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:138 #: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:74 @@ -1815,9 +1848,9 @@ msgstr "Entrez votre texte ici" #: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:57 #: apps/web/src/app/(dashboard)/documents/upload-document.tsx:106 #: apps/web/src/app/(dashboard)/documents/upload-document.tsx:112 -#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:169 -#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:200 -#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:234 +#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:186 +#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:217 +#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:256 #: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:51 #: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:56 #: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:175 @@ -1839,8 +1872,9 @@ msgstr "Entrez votre texte ici" #: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:194 #: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:101 #: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:128 -#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:146 -#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:172 +#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:129 +#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:163 +#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:189 #: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:167 #: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:195 #: apps/web/src/components/(dashboard)/layout/verify-email-banner.tsx:54 @@ -1852,15 +1886,15 @@ msgstr "Erreur" #~ msgid "Error updating global team settings" #~ msgstr "Error updating global team settings" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:128 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:140 msgid "Everyone can access and view the document" msgstr "Tout le monde peut accéder et voir le document" -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:142 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:140 msgid "Everyone has signed" msgstr "Tout le monde a signé" -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:166 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:164 msgid "Everyone has signed! You will receive an Email copy of the signed document." msgstr "Tout le monde a signé ! Vous recevrez une copie par email du document signé." @@ -1868,7 +1902,7 @@ msgstr "Tout le monde a signé ! Vous recevrez une copie par email du document s msgid "Exceeded timeout" msgstr "Délai dépassé" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:120 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:114 msgid "Expired" msgstr "Expiré" @@ -1910,8 +1944,8 @@ msgstr "Mot de passe oublié ?" #: apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx:326 #: apps/web/src/app/(signing)/sign/[token]/form.tsx:178 #: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:193 -#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:362 -#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:242 +#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:378 +#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:258 #: apps/web/src/components/forms/profile.tsx:110 #: apps/web/src/components/forms/v2/signup.tsx:312 msgid "Full Name" @@ -1949,7 +1983,7 @@ msgstr "Retourner" msgid "Go back home" msgstr "Retourner à la maison" -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:226 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:224 #: apps/web/src/app/(signing)/sign/[token]/no-longer-available.tsx:57 msgid "Go Back Home" msgstr "Retourner à la maison" @@ -1986,7 +2020,6 @@ msgstr "Voici comment cela fonctionne :" msgid "Hey I’m Timur" msgstr "Salut, je suis Timur" -#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:210 #: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:202 #: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:155 msgid "Hide" @@ -2033,6 +2066,10 @@ msgstr "Documents de la boîte de réception" #~ msgid "Include Sender Details" #~ msgstr "Include Sender Details" +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:278 +msgid "Include the Signing Certificate in the Document" +msgstr "" + #: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:65 #: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:50 msgid "Information" @@ -2109,7 +2146,7 @@ msgid "Invoice" msgstr "Facture" #: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:47 -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:227 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:235 msgid "IP Address" msgstr "Adresse IP" @@ -2249,7 +2286,7 @@ msgstr "Gérer le profil de {0}" msgid "Manage all teams you are currently associated with." msgstr "Gérer toutes les équipes avec lesquelles vous êtes actuellement associé." -#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:159 +#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:161 msgid "Manage and view template" msgstr "Gérer et afficher le modèle" @@ -2313,7 +2350,7 @@ msgstr "Gérer vos clés d'accès." msgid "Manage your site settings here" msgstr "Gérer les paramètres de votre site ici" -#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:123 +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:140 msgid "Mark as Viewed" msgstr "Marquer comme vu" @@ -2395,7 +2432,7 @@ msgstr "Mes modèles" msgid "Name" msgstr "Nom" -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:211 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:209 msgid "Need to sign documents?" msgstr "Besoin de signer des documents ?" @@ -2416,13 +2453,13 @@ msgstr "Nouveau propriétaire d'équipe" msgid "New Template" msgstr "Nouveau modèle" -#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:421 -#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:300 +#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:437 +#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:316 #: apps/web/src/components/forms/v2/signup.tsx:521 msgid "Next" msgstr "Suivant" -#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:61 +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:60 msgid "Next field" msgstr "Champ suivant" @@ -2528,11 +2565,11 @@ msgstr "Une fois confirmé, les éléments suivants se produiront :" msgid "Once you have scanned the QR code or entered the code manually, enter the code provided by your authenticator app below." msgstr "Une fois que vous avez scanné le code QR ou saisi le code manuellement, entrez le code fourni par votre application d'authentification ci-dessous." -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:134 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:146 msgid "Only admins can access and view the document" msgstr "Seules les administrateurs peuvent accéder et voir le document" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:131 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:143 msgid "Only managers and above can access and view the document" msgstr "Seuls les responsables et au-dessus peuvent accéder et voir le document" @@ -2778,7 +2815,7 @@ msgstr "Veuillez taper <0>{0} pour confirmer." msgid "Preferences" msgstr "Préférences" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:204 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:216 msgid "Preview" msgstr "Aperçu" @@ -2856,7 +2893,7 @@ msgstr "Lisez l'intégralité de la <0>divulgation de signature." msgid "Ready" msgstr "Prêt" -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:281 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:289 msgid "Reason" msgstr "Raison" @@ -2983,7 +3020,7 @@ msgstr "Renvoyer l'e-mail de confirmation" msgid "Resend verification" msgstr "Renvoyer la vérification" -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:266 +#: apps/web/src/components/(teams)/forms/update-team-form.tsx:163 #: apps/web/src/components/forms/public-profile-form.tsx:267 msgid "Reset" msgstr "Réinitialiser" @@ -3064,7 +3101,7 @@ msgstr "Rôles" #: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:337 #: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:344 #: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:312 -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:232 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:305 msgid "Save" msgstr "Sauvegarder" @@ -3139,8 +3176,7 @@ msgstr "Envoyer l'e-mail de confirmation" msgid "Send document" msgstr "Envoyer le document" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:188 -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:220 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:200 msgid "Send on Behalf of Team" msgstr "Envoyer au nom de l'équipe" @@ -3161,7 +3197,7 @@ msgid "Sending..." msgstr "Envoi..." #: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:101 -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:248 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:256 msgid "Sent" msgstr "Envoyé" @@ -3181,12 +3217,12 @@ msgid "Setup" msgstr "Configuration" #: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:148 -#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:214 +#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:207 msgid "Share" msgstr "Partager" #: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:179 -#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:240 +#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:233 msgid "Share Signing Card" msgstr "Partager la carte de signature" @@ -3213,14 +3249,14 @@ msgstr "Afficher des modèles dans le profil public de votre équipe pour que vo #: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:229 #: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:182 #: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:224 -#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:124 -#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:256 +#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:141 +#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:313 #: apps/web/src/components/ui/user-profile-skeleton.tsx:75 #: apps/web/src/components/ui/user-profile-timur.tsx:81 msgid "Sign" msgstr "Signer" -#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:217 +#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:274 msgid "Sign as {0} <0>({1})" msgstr "Signer comme {0} <0>({1})" @@ -3228,8 +3264,8 @@ msgstr "Signer comme {0} <0>({1})" msgid "Sign as<0>{0} <1>({1})" msgstr "Signer comme<0>{0} <1>({1})" -#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:330 -#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:210 +#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:346 +#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:226 msgid "Sign document" msgstr "Signer le document" @@ -3261,8 +3297,8 @@ msgstr "Connectez-vous à votre compte" msgid "Sign Out" msgstr "Déconnexion" -#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:351 -#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:231 +#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:367 +#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:247 msgid "Sign the document to complete the process." msgstr "Signez le document pour terminer le processus." @@ -3288,15 +3324,15 @@ msgstr "S'inscrire avec OIDC" #: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:177 #: apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx:338 #: apps/web/src/app/(signing)/sign/[token]/form.tsx:192 -#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:195 -#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:225 -#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:392 -#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:271 +#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:247 +#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:282 +#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:408 +#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:287 #: apps/web/src/components/forms/profile.tsx:132 msgid "Signature" msgstr "Signature" -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:220 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:228 msgid "Signature ID" msgstr "ID de signature" @@ -3304,12 +3340,12 @@ msgstr "ID de signature" msgid "Signatures Collected" msgstr "Signatures collectées" -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:200 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:198 msgid "Signatures will appear once the document has been completed" msgstr "Les signatures apparaîtront une fois le document complété" #: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:114 -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:270 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:278 #: apps/web/src/components/document/document-read-only-fields.tsx:84 msgid "Signed" msgstr "Signé" @@ -3322,7 +3358,7 @@ msgstr "Événements de signataire" msgid "Signing Certificate" msgstr "Certificat de signature" -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:303 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:311 msgid "Signing certificate provided by" msgstr "Certificat de signature fourni par" @@ -3332,7 +3368,7 @@ msgid "Signing in..." msgstr "Connexion en cours..." #: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:160 -#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:224 +#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:217 msgid "Signing Links" msgstr "Liens de signature" @@ -3386,8 +3422,8 @@ msgstr "Paramètres du site" #: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:107 #: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:39 #: apps/web/src/app/(unauthenticated)/verify-email/[token]/page.tsx:61 -#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:243 -#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:125 +#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:248 +#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:130 #: apps/web/src/components/(teams)/dialogs/create-team-checkout-dialog.tsx:50 #: apps/web/src/components/(teams)/dialogs/create-team-checkout-dialog.tsx:99 #: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:210 @@ -3420,7 +3456,7 @@ msgstr "Quelque chose a mal tourné lors de l'envoi de l'e-mail de confirmation. msgid "Something went wrong while updating the team billing subscription, please contact support." msgstr "Quelque chose a mal tourné lors de la mise à jour de l'abonnement de l'équipe, veuillez contacter le support." -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:96 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:108 msgid "Something went wrong!" msgstr "Quelque chose a mal tourné !" @@ -3488,7 +3524,7 @@ msgstr "Abonnements" #: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:108 #: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:79 #: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:92 -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:106 +#: apps/web/src/components/(teams)/forms/update-team-form.tsx:67 #: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:27 #: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:62 #: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:79 @@ -3519,8 +3555,8 @@ msgstr "Équipe" msgid "Team checkout" msgstr "Vérification de l'équipe" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:67 -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:146 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:61 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:140 msgid "Team email" msgstr "Adresse e-mail de l'équipe" @@ -3563,7 +3599,7 @@ msgid "Team Member" msgstr "Membre de l'équipe" #: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:166 -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:153 +#: apps/web/src/components/(teams)/forms/update-team-form.tsx:112 msgid "Team Name" msgstr "Nom de l'équipe" @@ -3616,7 +3652,7 @@ msgid "Team transfer request expired" msgstr "Demande de transfert d'équipe expirée" #: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:196 -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:169 +#: apps/web/src/components/(teams)/forms/update-team-form.tsx:128 msgid "Team URL" msgstr "URL de l'équipe" @@ -3636,7 +3672,7 @@ msgstr "Équipes restreintes" #: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:39 #: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:148 #: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:228 -#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:146 +#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:148 #: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:408 #: apps/web/src/components/templates/manage-public-template-dialog.tsx:271 msgid "Template" @@ -3666,11 +3702,11 @@ msgstr "Le modèle a été mis à jour." msgid "Template moved" msgstr "Modèle déplacé" -#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:223 +#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:246 msgid "Template saved" msgstr "Modèle enregistré" -#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:87 +#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:86 #: apps/web/src/app/(dashboard)/templates/templates-page-view.tsx:55 #: apps/web/src/components/(dashboard)/common/command-menu.tsx:208 #: apps/web/src/components/(dashboard)/layout/desktop-nav.tsx:22 @@ -3713,7 +3749,7 @@ msgstr "Le lien direct a été copié dans votre presse-papiers" msgid "The document has been successfully moved to the selected team." msgstr "Le document a été déplacé avec succès vers l'équipe sélectionnée." -#: apps/web/src/app/embed/completed.tsx:29 +#: apps/web/src/app/embed/completed.tsx:30 msgid "The document is now completed, please follow any instructions provided within the parent application." msgstr "Le document est maintenant complet, veuillez suivre toutes les instructions fournies dans l'application parente." @@ -3874,7 +3910,7 @@ msgstr "Ce document n'a pas pu être dupliqué pour le moment. Veuillez réessay msgid "This document could not be re-sent at this time. Please try again." msgstr "Ce document n'a pas pu être renvoyé pour le moment. Veuillez réessayer." -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:180 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:178 msgid "This document has been cancelled by the owner and is no longer available for others to sign." msgstr "Ce document a été annulé par le propriétaire et n'est plus disponible pour d'autres à signer." @@ -3882,11 +3918,11 @@ msgstr "Ce document a été annulé par le propriétaire et n'est plus disponibl msgid "This document has been cancelled by the owner." msgstr "Ce document a été annulé par le propriétaire." -#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:224 +#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:227 msgid "This document has been signed by all recipients" msgstr "Ce document a été signé par tous les destinataires" -#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:227 +#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:230 msgid "This document is currently a draft and has not been sent" msgstr "Ce document est actuellement un brouillon et n'a pas été envoyé" @@ -3926,7 +3962,7 @@ msgstr "Ce prix inclut un minimum de 5 sièges." msgid "This session has expired. Please try again." msgstr "Cette session a expiré. Veuillez réessayer." -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:201 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:195 msgid "This team, and any associated data excluding billing invoices will be permanently deleted." msgstr "Cette équipe, et toutes les données associées à l'exception des factures de facturation, seront définitivement supprimées." @@ -3943,7 +3979,7 @@ msgid "This token is invalid or has expired. Please contact your team for a new msgstr "Ce jeton est invalide ou a expiré. Veuillez contacter votre équipe pour une nouvelle invitation." #: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:98 -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:127 +#: apps/web/src/components/(teams)/forms/update-team-form.tsx:86 msgid "This URL is already in use." msgstr "Cette URL est déjà utilisée." @@ -4076,13 +4112,13 @@ msgstr "transférer {teamName}" msgid "Transfer ownership of this team to a selected team member." msgstr "Transférer la propriété de cette équipe à un membre d'équipe sélectionné." -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:175 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:169 #: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:147 #: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:156 msgid "Transfer team" msgstr "Transférer l'équipe" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:179 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:173 msgid "Transfer the ownership of the team to another team member." msgstr "Transférer la propriété de l'équipe à un autre membre de l'équipe." @@ -4133,6 +4169,10 @@ msgstr "Type" msgid "Type a command or search..." msgstr "Tapez une commande ou recherchez..." +#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:130 +msgid "Typed signatures are not allowed. Please draw your signature." +msgstr "" + #: apps/web/src/app/(unauthenticated)/verify-email/page.tsx:26 msgid "Uh oh! Looks like you're missing a token" msgstr "Oh oh ! On dirait que vous manquez un jeton" @@ -4225,10 +4265,10 @@ msgstr "Non autorisé" msgid "Uncompleted" msgstr "Non complet" -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:229 -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:254 -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:265 -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:276 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:237 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:262 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:273 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:284 msgid "Unknown" msgstr "Inconnu" @@ -4261,7 +4301,7 @@ msgstr "Mettre à jour la clé d'accès" msgid "Update password" msgstr "Mettre à jour le mot de passe" -#: apps/web/src/components/forms/profile.tsx:150 +#: apps/web/src/components/forms/profile.tsx:151 msgid "Update profile" msgstr "Mettre à jour le profil" @@ -4273,7 +4313,7 @@ msgstr "Mettre à jour le destinataire" msgid "Update role" msgstr "Mettre à jour le rôle" -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:278 +#: apps/web/src/components/(teams)/forms/update-team-form.tsx:175 msgid "Update team" msgstr "Mettre à jour l'équipe" @@ -4300,7 +4340,7 @@ msgstr "Mettre à jour le webhook" msgid "Updating password..." msgstr "Mise à jour du mot de passe..." -#: apps/web/src/components/forms/profile.tsx:150 +#: apps/web/src/components/forms/profile.tsx:151 msgid "Updating profile..." msgstr "Mise à jour du profil..." @@ -4333,7 +4373,7 @@ msgstr "Le fichier téléchargé est trop petit" msgid "Uploaded file not an allowed file type" msgstr "Le fichier téléchargé n'est pas un type de fichier autorisé" -#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:170 +#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:172 msgid "Use" msgstr "Utiliser" @@ -4441,7 +4481,7 @@ msgstr "Voir les codes" msgid "View Document" msgstr "Voir le document" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:156 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:150 msgid "View documents associated with this email" msgstr "Voir les documents associés à cet e-mail" @@ -4467,7 +4507,7 @@ msgid "View teams" msgstr "Voir les équipes" #: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:120 -#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:259 +#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:267 msgid "Viewed" msgstr "Vu" @@ -4475,7 +4515,7 @@ msgstr "Vu" msgid "Waiting" msgstr "En attente" -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:150 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:148 msgid "Waiting for others to sign" msgstr "En attente que d'autres signent" @@ -4627,7 +4667,7 @@ msgstr "Une erreur inconnue s'est produite lors de la mise à jour de votre mot msgid "We encountered an unknown error while attempting to update your public profile. Please try again later." msgstr "Une erreur inconnue s'est produite lors de la mise à jour de votre profil public. Veuillez réessayer plus tard." -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:136 +#: apps/web/src/components/(teams)/forms/update-team-form.tsx:95 msgid "We encountered an unknown error while attempting to update your team. Please try again later." msgstr "Une erreur inconnue s'est produite lors de la mise à jour de votre équipe. Veuillez réessayer plus tard." @@ -4670,8 +4710,8 @@ msgid "We were unable to setup two-factor authentication for your account. Pleas msgstr "Nous n'avons pas pu configurer l'authentification à deux facteurs pour votre compte. Veuillez vous assurer que vous avez correctement entré votre code et réessayez." #: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:120 -#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:245 -#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:127 +#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:250 +#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:132 msgid "We were unable to submit this document at this time. Please try again later." msgstr "Nous n'avons pas pu soumettre ce document pour le moment. Veuillez réessayer plus tard." @@ -4679,7 +4719,7 @@ msgstr "Nous n'avons pas pu soumettre ce document pour le moment. Veuillez rées msgid "We were unable to update your branding preferences at this time, please try again later" msgstr "Nous n'avons pas pu mettre à jour vos préférences de branding pour le moment, veuillez réessayer plus tard" -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:98 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:110 msgid "We were unable to update your document preferences at this time, please try again later" msgstr "Nous n'avons pas pu mettre à jour vos préférences de document pour le moment, veuillez réessayer plus tard" @@ -4793,16 +4833,16 @@ msgid "You" msgstr "Vous" #: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:93 -msgid "You are about to complete approving \"{truncatedTitle}\".<0/> Are you sure?" -msgstr "Vous êtes sur le point de terminer l'approbation de \"{truncatedTitle}\".<0/> Êtes-vous sûr?" +#~ msgid "You are about to complete approving \"{truncatedTitle}\".<0/> Are you sure?" +#~ msgstr "Vous êtes sur le point de terminer l'approbation de \"{truncatedTitle}\".<0/> Êtes-vous sûr?" #: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:85 -msgid "You are about to complete signing \"{truncatedTitle}\".<0/> Are you sure?" -msgstr "Vous êtes sur le point de terminer la signature de \"{truncatedTitle}\".<0/> Êtes-vous sûr?" +#~ msgid "You are about to complete signing \"{truncatedTitle}\".<0/> Are you sure?" +#~ msgstr "Vous êtes sur le point de terminer la signature de \"{truncatedTitle}\".<0/> Êtes-vous sûr?" #: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:77 -msgid "You are about to complete viewing \"{truncatedTitle}\".<0/> Are you sure?" -msgstr "Vous êtes sur le point de terminer la visualisation de \"{truncatedTitle}\".<0/> Êtes-vous sûr?" +#~ msgid "You are about to complete viewing \"{truncatedTitle}\".<0/> Are you sure?" +#~ msgstr "Vous êtes sur le point de terminer la visualisation de \"{truncatedTitle}\".<0/> Êtes-vous sûr?" #: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:105 msgid "You are about to delete <0>\"{documentTitle}\"" @@ -4864,7 +4904,7 @@ msgstr "Vous pouvez copier et partager ces liens avec les destinataires afin qu' msgid "You can update the profile URL by updating the team URL in the general settings page." msgstr "Vous pouvez mettre à jour l'URL de profil en mettant à jour l'URL de l'équipe dans la page des paramètres généraux." -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:71 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:65 msgid "You can view documents associated with this email and use this identity when sending documents." msgstr "Vous pouvez voir les documents associés à cet e-mail et utiliser cette identité lors de l'envoi de documents." @@ -5002,7 +5042,7 @@ msgstr "Vous serez notifié et pourrez configurer votre profil public Documenso msgid "You will now be required to enter a code from your authenticator app when signing in." msgstr "Vous devrez maintenant entrer un code de votre application d'authentification lors de la connexion." -#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:173 +#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:171 msgid "You will receive an Email copy of the signed document once everyone has signed." msgstr "Vous recevrez une copie par e-mail du document signé une fois que tout le monde aura signé." @@ -5062,7 +5102,7 @@ msgstr "Votre document a été téléchargé avec succès." msgid "Your document has been uploaded successfully. You will be redirected to the template page." msgstr "Votre document a été téléchargé avec succès. Vous serez redirigé vers la page de modèle." -#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:92 +#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:104 msgid "Your document preferences have been updated" msgstr "Vos préférences de document ont été mises à jour" @@ -5129,7 +5169,7 @@ msgstr "Votre équipe a été créée." msgid "Your team has been successfully deleted." msgstr "Votre équipe a été supprimée avec succès." -#: apps/web/src/components/(teams)/forms/update-team-form.tsx:107 +#: apps/web/src/components/(teams)/forms/update-team-form.tsx:68 msgid "Your team has been successfully updated." msgstr "Votre équipe a été mise à jour avec succès." @@ -5145,7 +5185,7 @@ msgstr "Votre modèle a été supprimé avec succès." msgid "Your template will be duplicated." msgstr "Votre modèle sera dupliqué." -#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:224 +#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:247 msgid "Your templates has been saved successfully." msgstr "Vos modèles ont été enregistrés avec succès." diff --git a/packages/prettier-config/index.cjs b/packages/prettier-config/index.cjs index 3cc9e6fed..9f70418d7 100644 --- a/packages/prettier-config/index.cjs +++ b/packages/prettier-config/index.cjs @@ -24,7 +24,8 @@ module.exports = { plugins: [ '@trivago/prettier-plugin-sort-imports', - 'prettier-plugin-sql', + // !: Disabled until Prettier 3.x is supported. + // 'prettier-plugin-sql', 'prettier-plugin-tailwindcss', ], diff --git a/packages/prettier-config/package.json b/packages/prettier-config/package.json index ee5d28dad..f2de2403d 100644 --- a/packages/prettier-config/package.json +++ b/packages/prettier-config/package.json @@ -7,10 +7,9 @@ "clean": "rimraf node_modules" }, "dependencies": { - "@trivago/prettier-plugin-sort-imports": "^4.1.1", - "prettier": "^2.8.8", - "prettier-plugin-sql": "^0.14.0", - "prettier-plugin-tailwindcss": "^0.2.8" + "@trivago/prettier-plugin-sort-imports": "^4.3.0", + "prettier": "^3.3.3", + "prettier-plugin-tailwindcss": "^0.6.9" }, "devDependencies": {} -} +} \ No newline at end of file diff --git a/packages/prisma/migrations/20241101112106_enable_typed_signature_by_default/migration.sql b/packages/prisma/migrations/20241101112106_enable_typed_signature_by_default/migration.sql new file mode 100644 index 000000000..d2cc07c5f --- /dev/null +++ b/packages/prisma/migrations/20241101112106_enable_typed_signature_by_default/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "DocumentMeta" ALTER COLUMN "typedSignatureEnabled" SET DEFAULT true; diff --git a/packages/prisma/migrations/20241119123601_add_typed_signature_team_global_settings/migration.sql b/packages/prisma/migrations/20241119123601_add_typed_signature_team_global_settings/migration.sql new file mode 100644 index 000000000..671072482 --- /dev/null +++ b/packages/prisma/migrations/20241119123601_add_typed_signature_team_global_settings/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "TeamGlobalSettings" ADD COLUMN "typedSignatureEnabled" BOOLEAN NOT NULL DEFAULT true; diff --git a/packages/prisma/migrations/20241122081012_download_document_without_certificate/migration.sql b/packages/prisma/migrations/20241122081012_download_document_without_certificate/migration.sql new file mode 100644 index 000000000..5a2020265 --- /dev/null +++ b/packages/prisma/migrations/20241122081012_download_document_without_certificate/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "TeamGlobalSettings" ADD COLUMN "includeSigningCertificate" BOOLEAN NOT NULL DEFAULT true; diff --git a/packages/prisma/migrations/20241126014353_add_typed_signature_setting_to_templates/migration.sql b/packages/prisma/migrations/20241126014353_add_typed_signature_setting_to_templates/migration.sql new file mode 100644 index 000000000..78084c2d3 --- /dev/null +++ b/packages/prisma/migrations/20241126014353_add_typed_signature_setting_to_templates/migration.sql @@ -0,0 +1,7 @@ +-- Existing templates should not have this enabled by default. +-- AlterTable +ALTER TABLE "TemplateMeta" ADD COLUMN "typedSignatureEnabled" BOOLEAN NOT NULL DEFAULT false; + +-- New templates should have this enabled by default. +-- AlterTable +ALTER TABLE "TemplateMeta" ALTER COLUMN "typedSignatureEnabled" SET DEFAULT true; diff --git a/packages/prisma/schema.prisma b/packages/prisma/schema.prisma index 1fee5eae9..1e58c723f 100644 --- a/packages/prisma/schema.prisma +++ b/packages/prisma/schema.prisma @@ -374,7 +374,7 @@ model DocumentMeta { document Document @relation(fields: [documentId], references: [id], onDelete: Cascade) redirectUrl String? signingOrder DocumentSigningOrder @default(PARALLEL) - typedSignatureEnabled Boolean @default(false) + typedSignatureEnabled Boolean @default(true) language String @default("en") distributionMethod DocumentDistributionMethod @default(EMAIL) emailSettings Json? @@ -511,10 +511,12 @@ enum TeamMemberInviteStatus { } model TeamGlobalSettings { - teamId Int @unique - documentVisibility DocumentVisibility @default(EVERYONE) - documentLanguage String @default("en") - includeSenderDetails Boolean @default(true) + teamId Int @unique + documentVisibility DocumentVisibility @default(EVERYONE) + documentLanguage String @default("en") + includeSenderDetails Boolean @default(true) + typedSignatureEnabled Boolean @default(true) + includeSigningCertificate Boolean @default(true) brandingEnabled Boolean @default(false) brandingLogo String @default("") @@ -628,19 +630,21 @@ enum TemplateType { } model TemplateMeta { - id String @id @default(cuid()) - subject String? - message String? - timezone String? @default("Etc/UTC") @db.Text - password String? - dateFormat String? @default("yyyy-MM-dd hh:mm a") @db.Text - signingOrder DocumentSigningOrder? @default(PARALLEL) - templateId Int @unique - template Template @relation(fields: [templateId], references: [id], onDelete: Cascade) - redirectUrl String? - language String @default("en") - distributionMethod DocumentDistributionMethod @default(EMAIL) - emailSettings Json? + id String @id @default(cuid()) + subject String? + message String? + timezone String? @default("Etc/UTC") @db.Text + password String? + dateFormat String? @default("yyyy-MM-dd hh:mm a") @db.Text + signingOrder DocumentSigningOrder? @default(PARALLEL) + typedSignatureEnabled Boolean @default(true) + distributionMethod DocumentDistributionMethod @default(EMAIL) + + templateId Int @unique + template Template @relation(fields: [templateId], references: [id], onDelete: Cascade) + redirectUrl String? + language String @default("en") + emailSettings Json? } model Template { diff --git a/packages/tailwind-config/index.cjs b/packages/tailwind-config/index.cjs index 067034a8b..18cd2e396 100644 --- a/packages/tailwind-config/index.cjs +++ b/packages/tailwind-config/index.cjs @@ -3,7 +3,7 @@ const { fontFamily } = require('tailwindcss/defaultTheme'); /** @type {import('tailwindcss').Config} */ module.exports = { - darkMode: ['class'], + darkMode: ['variant', '&:is(.dark:not(.dark-mode-disabled) *)'], content: ['src/**/*.{ts,tsx}'], theme: { extend: { @@ -108,6 +108,9 @@ module.exports = { 'gradient-conic': 'conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))', }, borderRadius: { + DEFAULT: 'calc(var(--radius) - 3px)', + '2xl': 'calc(var(--radius) + 4px)', + xl: 'calc(var(--radius) + 2px)', lg: 'var(--radius)', md: 'calc(var(--radius) - 2px)', sm: 'calc(var(--radius) - 4px)', diff --git a/packages/tailwind-config/package.json b/packages/tailwind-config/package.json index e062b0df5..35d7816c1 100644 --- a/packages/tailwind-config/package.json +++ b/packages/tailwind-config/package.json @@ -11,7 +11,7 @@ "@tailwindcss/typography": "^0.5.9", "autoprefixer": "^10.4.13", "postcss": "^8.4.32", - "tailwindcss": "3.3.2", + "tailwindcss": "3.4.15", "tailwindcss-animate": "^1.0.5" }, "devDependencies": {}, diff --git a/packages/trpc/server/team-router/schema.ts b/packages/trpc/server/team-router/schema.ts index f73bce6e7..0c5f3cb3d 100644 --- a/packages/trpc/server/team-router/schema.ts +++ b/packages/trpc/server/team-router/schema.ts @@ -151,8 +151,6 @@ export const ZUpdateTeamMutationSchema = z.object({ data: z.object({ name: ZTeamNameSchema, url: ZTeamUrlSchema, - documentVisibility: z.nativeEnum(DocumentVisibility).optional(), - includeSenderDetails: z.boolean().optional(), }), }); @@ -212,6 +210,8 @@ export const ZUpdateTeamDocumentSettingsMutationSchema = z.object({ .default(DocumentVisibility.EVERYONE), documentLanguage: z.enum(SUPPORTED_LANGUAGE_CODES).optional().default('en'), includeSenderDetails: z.boolean().optional().default(false), + typedSignatureEnabled: z.boolean().optional().default(true), + includeSigningCertificate: z.boolean().optional().default(true), }), }); diff --git a/packages/trpc/server/template-router/router.ts b/packages/trpc/server/template-router/router.ts index 4cf333ec0..de4365e44 100644 --- a/packages/trpc/server/template-router/router.ts +++ b/packages/trpc/server/template-router/router.ts @@ -35,6 +35,7 @@ import { ZSetSigningOrderForTemplateMutationSchema, ZToggleTemplateDirectLinkMutationSchema, ZUpdateTemplateSettingsMutationSchema, + ZUpdateTemplateTypedSignatureSettingsMutationSchema, } from './schema'; export const templateRouter = router({ @@ -359,4 +360,48 @@ export const templateRouter = router({ }); } }), + + updateTemplateTypedSignatureSettings: authenticatedProcedure + .input(ZUpdateTemplateTypedSignatureSettingsMutationSchema) + .mutation(async ({ input, ctx }) => { + try { + const { templateId, teamId, typedSignatureEnabled } = input; + + const template = await getTemplateById({ + id: templateId, + teamId, + userId: ctx.user.id, + }).catch(() => null); + + if (!template) { + throw new TRPCError({ + code: 'NOT_FOUND', + message: 'Template not found', + }); + } + + return await updateTemplateSettings({ + templateId, + teamId, + userId: ctx.user.id, + data: {}, + meta: { + typedSignatureEnabled, + }, + requestMetadata: extractNextApiRequestMetadata(ctx.req), + }); + } catch (err) { + console.error(err); + + if (err instanceof TRPCError) { + throw err; + } + + throw new TRPCError({ + code: 'BAD_REQUEST', + message: + 'We were unable to update the settings for this template. Please try again later.', + }); + } + }), }); diff --git a/packages/trpc/server/template-router/schema.ts b/packages/trpc/server/template-router/schema.ts index eef77c3b9..1d4891b13 100644 --- a/packages/trpc/server/template-router/schema.ts +++ b/packages/trpc/server/template-router/schema.ts @@ -114,6 +114,7 @@ export const ZUpdateTemplateSettingsMutationSchema = z.object({ 'Please enter a valid URL, make sure you include http:// or https:// part of the url.', }), language: z.enum(SUPPORTED_LANGUAGE_CODES).optional(), + typedSignatureEnabled: z.boolean().optional(), }) .optional(), }); @@ -138,6 +139,12 @@ export const ZMoveTemplatesToTeamSchema = z.object({ teamId: z.number(), }); +export const ZUpdateTemplateTypedSignatureSettingsMutationSchema = z.object({ + templateId: z.number(), + teamId: z.number().optional(), + typedSignatureEnabled: z.boolean(), +}); + export type TCreateTemplateMutationSchema = z.infer; export type TCreateDocumentFromTemplateMutationSchema = z.infer< typeof ZCreateDocumentFromTemplateMutationSchema diff --git a/packages/ui/components/field/field.tsx b/packages/ui/components/field/field.tsx index ac67171de..eb6468c03 100644 --- a/packages/ui/components/field/field.tsx +++ b/packages/ui/components/field/field.tsx @@ -34,7 +34,7 @@ const getCardClassNames = ( const baseClasses = 'field-card-container relative z-20 h-full w-full transition-all'; const insertedClasses = - 'bg-documenso/20 border-documenso ring-documenso-200 ring-offset-documenso-200 ring-2 ring-offset-2 dark:shadow-none'; + 'bg-primary/20 border-primary ring-primary/20 ring-offset-primary/20 ring-2 ring-offset-2 dark:shadow-none'; const nonRequiredClasses = 'border-yellow-300 shadow-none ring-2 ring-yellow-100 ring-offset-2 ring-offset-yellow-100 dark:border-2'; const validatingClasses = 'border-orange-300 ring-1 ring-orange-300'; diff --git a/packages/ui/package.json b/packages/ui/package.json index 2a7fce3fa..aca306853 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -74,7 +74,7 @@ "react-hook-form": "^7.45.4", "react-pdf": "7.7.3", "react-rnd": "^10.4.1", - "remeda": "^1.27.1", + "remeda": "^2.17.3", "tailwind-merge": "^1.12.0", "tailwindcss-animate": "^1.0.5", "ts-pattern": "^5.0.5", diff --git a/packages/ui/primitives/card.tsx b/packages/ui/primitives/card.tsx index 90619d2bf..155597562 100644 --- a/packages/ui/primitives/card.tsx +++ b/packages/ui/primitives/card.tsx @@ -36,11 +36,11 @@ const Card = React.forwardRef( className={cn( 'bg-background text-foreground group relative rounded-lg border-2 backdrop-blur-[2px]', { - 'gradient-border-mask before:pointer-events-none before:absolute before:-inset-[2px] before:rounded-lg before:p-[2px] before:[background:linear-gradient(var(--card-gradient-degrees),theme(colors.documenso.DEFAULT/50%)_5%,theme(colors.border/80%)_30%)]': + 'gradient-border-mask before:pointer-events-none before:absolute before:-inset-[2px] before:rounded-lg before:p-[2px] before:[background:linear-gradient(var(--card-gradient-degrees),theme(colors.primary.DEFAULT/50%)_5%,theme(colors.border/80%)_30%)]': gradient, - 'dark:gradient-border-mask before:pointer-events-none before:absolute before:-inset-[2px] before:rounded-lg before:p-[2px] before:[background:linear-gradient(var(--card-gradient-degrees),theme(colors.documenso.DEFAULT/70%)_5%,theme(colors.border/80%)_30%)]': + 'dark:gradient-border-mask before:pointer-events-none before:absolute before:-inset-[2px] before:rounded-lg before:p-[2px] before:[background:linear-gradient(var(--card-gradient-degrees),theme(colors.primary.DEFAULT/70%)_5%,theme(colors.border/80%)_30%)]': gradient, - 'shadow-[0_0_0_4px_theme(colors.gray.100/70%),0_0_0_1px_theme(colors.gray.100/70%),0_0_0_0.5px_theme(colors.primary.DEFAULT/70%)]': + 'shadow-[0_0_0_4px_theme(colors.gray.100/70%),0_0_0_1px_theme(colors.gray.100/70%),0_0_0_0.5px_var(colors.primary.DEFAULT/70%)]': true, 'dark:shadow-[0]': true, }, diff --git a/packages/ui/primitives/document-flow/field-items-advanced-settings/radio-field.tsx b/packages/ui/primitives/document-flow/field-items-advanced-settings/radio-field.tsx index 89b2770f3..04529098a 100644 --- a/packages/ui/primitives/document-flow/field-items-advanced-settings/radio-field.tsx +++ b/packages/ui/primitives/document-flow/field-items-advanced-settings/radio-field.tsx @@ -141,7 +141,7 @@ export const RadioFieldAdvancedSettings = ({ {values.map((value) => (
handleCheckedChange(Boolean(checked), value.id)} /> diff --git a/packages/ui/primitives/signature-pad/signature-pad.tsx b/packages/ui/primitives/signature-pad/signature-pad.tsx index 82e6b52b3..92aa8c211 100644 --- a/packages/ui/primitives/signature-pad/signature-pad.tsx +++ b/packages/ui/primitives/signature-pad/signature-pad.tsx @@ -38,6 +38,7 @@ export type SignaturePadProps = Omit, 'onChang containerClassName?: string; disabled?: boolean; allowTypedSignature?: boolean; + defaultValue?: string; }; export const SignaturePad = ({ @@ -56,7 +57,7 @@ export const SignaturePad = ({ const [lines, setLines] = useState([]); const [currentLine, setCurrentLine] = useState([]); const [selectedColor, setSelectedColor] = useState('black'); - const [typedSignature, setTypedSignature] = useState(''); + const [typedSignature, setTypedSignature] = useState(defaultValue ?? ''); const perfectFreehandOptions = useMemo(() => { const size = $el.current ? Math.min($el.current.height, $el.current.width) * 0.03 : 10; @@ -206,6 +207,7 @@ export const SignaturePad = ({ if (ctx) { const canvasWidth = $el.current.width; const canvasHeight = $el.current.height; + const fontFamily = String(fontCaveat.style.fontFamily); ctx.clearRect(0, 0, canvasWidth, canvasHeight); ctx.textAlign = 'center'; @@ -217,7 +219,7 @@ export const SignaturePad = ({ // Start with a base font size let fontSize = 18; - ctx.font = `${fontSize}px ${fontCaveat.style.fontFamily}`; + ctx.font = `${fontSize}px ${fontFamily}`; // Measure 10 characters and calculate scale factor const characterWidth = ctx.measureText('m'.repeat(10)).width; @@ -227,7 +229,7 @@ export const SignaturePad = ({ fontSize = fontSize * scaleFactor; // Adjust font size if it exceeds canvas width - ctx.font = `${fontSize}px ${fontCaveat.style.fontFamily}`; + ctx.font = `${fontSize}px ${fontFamily}`; const textWidth = ctx.measureText(typedSignature).width; @@ -236,7 +238,7 @@ export const SignaturePad = ({ } // Set final font and render text - ctx.font = `${fontSize}px ${fontCaveat.style.fontFamily}`; + ctx.font = `${fontSize}px ${fontFamily}`; ctx.fillText(typedSignature, canvasWidth / 2, canvasHeight / 2); } } @@ -247,7 +249,7 @@ export const SignaturePad = ({ setTypedSignature(newValue); if (newValue.trim() !== '') { - onChange?.($el.current?.toDataURL() || null); + onChange?.(newValue); } else { onChange?.(null); } @@ -256,7 +258,7 @@ export const SignaturePad = ({ useEffect(() => { if (typedSignature.trim() !== '') { renderTypedSignature(); - onChange?.($el.current?.toDataURL() || null); + onChange?.(typedSignature); } else { onClearClick(); } @@ -303,6 +305,10 @@ export const SignaturePad = ({ $el.current.width = $el.current.clientWidth * DPI; $el.current.height = $el.current.clientHeight * DPI; } + + if (defaultValue && typedSignature) { + renderTypedSignature(); + } }, []); unsafe_useEffectOnce(() => { diff --git a/packages/ui/primitives/template-flow/add-template-fields.tsx b/packages/ui/primitives/template-flow/add-template-fields.tsx index 6da8e27d3..97e76f499 100644 --- a/packages/ui/primitives/template-flow/add-template-fields.tsx +++ b/packages/ui/primitives/template-flow/add-template-fields.tsx @@ -55,8 +55,10 @@ import { FRIENDLY_FIELD_TYPE } from '@documenso/ui/primitives/document-flow/type import { Popover, PopoverContent, PopoverTrigger } from '@documenso/ui/primitives/popover'; import { getSignerColorStyles, useSignerColors } from '../../lib/signer-colors'; +import { Checkbox } from '../checkbox'; import type { FieldFormType } from '../document-flow/add-fields'; import { FieldAdvancedSettings } from '../document-flow/field-item-advanced-settings'; +import { Form, FormControl, FormField, FormItem, FormLabel } from '../form/form'; import { useStep } from '../stepper'; import type { TAddTemplateFieldsFormSchema } from './add-template-fields.types'; @@ -80,6 +82,7 @@ export type AddTemplateFieldsFormProps = { fields: Field[]; onSubmit: (_data: TAddTemplateFieldsFormSchema) => void; teamId?: number; + typedSignatureEnabled?: boolean; }; export const AddTemplateFieldsFormPartial = ({ @@ -89,6 +92,7 @@ export const AddTemplateFieldsFormPartial = ({ fields, onSubmit, teamId, + typedSignatureEnabled, }: AddTemplateFieldsFormProps) => { const { _ } = useLingui(); @@ -97,13 +101,7 @@ export const AddTemplateFieldsFormPartial = ({ const [showAdvancedSettings, setShowAdvancedSettings] = useState(false); const [currentField, setCurrentField] = useState(); - const { - control, - handleSubmit, - formState: { isSubmitting }, - setValue, - getValues, - } = useForm({ + const form = useForm({ defaultValues: { fields: fields.map((field) => ({ nativeId: field.id, @@ -121,13 +119,14 @@ export const AddTemplateFieldsFormPartial = ({ recipients.find((recipient) => recipient.id === field.recipientId)?.token ?? '', fieldMeta: field.fieldMeta ? ZFieldMetaSchema.parse(field.fieldMeta) : undefined, })), + typedSignatureEnabled: typedSignatureEnabled ?? false, }, }); - const onFormSubmit = handleSubmit(onSubmit); + const onFormSubmit = form.handleSubmit(onSubmit); const handleSavedFieldSettings = (fieldState: FieldMeta) => { - const initialValues = getValues(); + const initialValues = form.getValues(); const updatedFields = initialValues.fields.map((field) => { if (field.formId === currentField?.formId) { @@ -142,7 +141,7 @@ export const AddTemplateFieldsFormPartial = ({ return field; }); - setValue('fields', updatedFields); + form.setValue('fields', updatedFields); }; const { @@ -151,7 +150,7 @@ export const AddTemplateFieldsFormPartial = ({ update, fields: localFields, } = useFieldArray({ - control, + control: form.control, name: 'fields', }); @@ -402,6 +401,12 @@ export const AddTemplateFieldsFormPartial = ({ setShowAdvancedSettings((prev) => !prev); }; + const isTypedSignatureEnabled = form.watch('typedSignatureEnabled'); + + const handleTypedSignatureChange = (value: boolean) => { + form.setValue('typedSignatureEnabled', value, { shouldDirty: true }); + }; + return ( <> {showAdvancedSettings && currentField ? ( @@ -568,305 +573,334 @@ export const AddTemplateFieldsFormPartial = ({ )} -
-
- + + ( + + + field.onChange(checked)} + disabled={form.formState.isSubmitting} + /> + - + + Enable Typed Signatures + + + )} + /> - + + +

+ Signature +

+
+
+ - + + +

+ + Initials +

+
+
+ - + + +

+ + Email +

+
+
+ - + + +

+ + Name +

+
+
+ - + + +

+ + Date +

+
+
+ - + + +

+ + Text +

+
+
+ - + + +

+ + Number +

+
+
+ - -
-
+ + +

+ + Radio +

+
+
+ + + + + +
+
+ + + {hasErrors && ( +
+
    +
  • + + To proceed further, please set at least one value for the{' '} + {emptyCheckboxFields.length > 0 + ? 'Checkbox' + : emptyRadioFields.length > 0 + ? 'Radio' + : 'Select'}{' '} + field. + +
  • +
+
+ )} + + + + + { + previousStep(); + remove(); + }} + onGoNextClick={() => void onFormSubmit()} + /> +
- - {hasErrors && ( -
-
    -
  • - - To proceed further, please set at least one value for the{' '} - {emptyCheckboxFields.length > 0 - ? 'Checkbox' - : emptyRadioFields.length > 0 - ? 'Radio' - : 'Select'}{' '} - field. - -
  • -
-
- )} - - - - - { - previousStep(); - remove(); - }} - onGoNextClick={() => void onFormSubmit()} - /> - )} diff --git a/packages/ui/primitives/template-flow/add-template-fields.types.ts b/packages/ui/primitives/template-flow/add-template-fields.types.ts index b58af7947..bc5b31afd 100644 --- a/packages/ui/primitives/template-flow/add-template-fields.types.ts +++ b/packages/ui/primitives/template-flow/add-template-fields.types.ts @@ -20,6 +20,7 @@ export const ZAddTemplateFieldsFormSchema = z.object({ fieldMeta: ZFieldMetaSchema, }), ), + typedSignatureEnabled: z.boolean(), }); export type TAddTemplateFieldsFormSchema = z.infer; diff --git a/packages/ui/styles/theme.css b/packages/ui/styles/theme.css index b5142b60c..a7d802e71 100644 --- a/packages/ui/styles/theme.css +++ b/packages/ui/styles/theme.css @@ -138,7 +138,7 @@ --new-surface-white: 0, 0%, 91%; } - .dark { + .dark:not(.dark-mode-disabled) { --background: 0 0% 14.9%; --foreground: 0 0% 97%;