feat: add typed signature (#1357)
Add the ability to insert typed signatures. Once the signature field is placed on the document, a checkbox appears in the document editor where the document owner can allow signers to add typed signatures. Typed signatures are disabled by default. 
This commit is contained in:
@@ -112,6 +112,24 @@ export const EditDocumentForm = ({
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const { mutateAsync: updateTypedSignature } =
|
||||||
|
trpc.document.updateTypedSignatureSettings.useMutation({
|
||||||
|
...DO_NOT_INVALIDATE_QUERY_ON_MUTATION,
|
||||||
|
onSuccess: (newData) => {
|
||||||
|
utils.document.getDocumentWithDetailsById.setData(
|
||||||
|
{
|
||||||
|
id: initialDocument.id,
|
||||||
|
teamId: team?.id,
|
||||||
|
},
|
||||||
|
(oldData) => ({
|
||||||
|
...(oldData || initialDocument),
|
||||||
|
...newData,
|
||||||
|
id: Number(newData.id),
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
const { mutateAsync: addSigners } = trpc.recipient.addSigners.useMutation({
|
const { mutateAsync: addSigners } = trpc.recipient.addSigners.useMutation({
|
||||||
...DO_NOT_INVALIDATE_QUERY_ON_MUTATION,
|
...DO_NOT_INVALIDATE_QUERY_ON_MUTATION,
|
||||||
onSuccess: (newRecipients) => {
|
onSuccess: (newRecipients) => {
|
||||||
@@ -258,6 +276,11 @@ export const EditDocumentForm = ({
|
|||||||
fields: data.fields,
|
fields: data.fields,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
await updateTypedSignature({
|
||||||
|
documentId: document.id,
|
||||||
|
typedSignatureEnabled: data.typedSignatureEnabled,
|
||||||
|
});
|
||||||
|
|
||||||
// Clear all field data from localStorage
|
// Clear all field data from localStorage
|
||||||
for (let i = 0; i < localStorage.length; i++) {
|
for (let i = 0; i < localStorage.length; i++) {
|
||||||
const key = localStorage.key(i);
|
const key = localStorage.key(i);
|
||||||
@@ -387,6 +410,7 @@ export const EditDocumentForm = ({
|
|||||||
fields={fields}
|
fields={fields}
|
||||||
onSubmit={onAddFieldsFormSubmit}
|
onSubmit={onAddFieldsFormSubmit}
|
||||||
isDocumentPdfLoaded={isDocumentPdfLoaded}
|
isDocumentPdfLoaded={isDocumentPdfLoaded}
|
||||||
|
typedSignatureEnabled={document.documentMeta?.typedSignatureEnabled}
|
||||||
teamId={team?.id}
|
teamId={team?.id}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
|||||||
@@ -9,9 +9,10 @@ import { useSession } from 'next-auth/react';
|
|||||||
import { useForm } from 'react-hook-form';
|
import { useForm } from 'react-hook-form';
|
||||||
|
|
||||||
import { useAnalytics } from '@documenso/lib/client-only/hooks/use-analytics';
|
import { useAnalytics } from '@documenso/lib/client-only/hooks/use-analytics';
|
||||||
|
import type { DocumentAndSender } from '@documenso/lib/server-only/document/get-document-by-token';
|
||||||
import type { TRecipientActionAuth } from '@documenso/lib/types/document-auth';
|
import type { TRecipientActionAuth } from '@documenso/lib/types/document-auth';
|
||||||
import { sortFieldsByPosition, validateFieldsInserted } from '@documenso/lib/utils/fields';
|
import { sortFieldsByPosition, validateFieldsInserted } from '@documenso/lib/utils/fields';
|
||||||
import { type Document, type Field, type Recipient, RecipientRole } from '@documenso/prisma/client';
|
import { type Field, type Recipient, RecipientRole } from '@documenso/prisma/client';
|
||||||
import { trpc } from '@documenso/trpc/react';
|
import { trpc } from '@documenso/trpc/react';
|
||||||
import { FieldToolTip } from '@documenso/ui/components/field/field-tooltip';
|
import { FieldToolTip } from '@documenso/ui/components/field/field-tooltip';
|
||||||
import { cn } from '@documenso/ui/lib/utils';
|
import { cn } from '@documenso/ui/lib/utils';
|
||||||
@@ -25,7 +26,7 @@ import { useRequiredSigningContext } from './provider';
|
|||||||
import { SignDialog } from './sign-dialog';
|
import { SignDialog } from './sign-dialog';
|
||||||
|
|
||||||
export type SigningFormProps = {
|
export type SigningFormProps = {
|
||||||
document: Document;
|
document: DocumentAndSender;
|
||||||
recipient: Recipient;
|
recipient: Recipient;
|
||||||
fields: Field[];
|
fields: Field[];
|
||||||
redirectUrl?: string | null;
|
redirectUrl?: string | null;
|
||||||
@@ -196,6 +197,7 @@ export const SigningForm = ({
|
|||||||
onChange={(value) => {
|
onChange={(value) => {
|
||||||
setSignature(value);
|
setSignature(value);
|
||||||
}}
|
}}
|
||||||
|
allowTypedSignature={document.documentMeta?.typedSignatureEnabled}
|
||||||
/>
|
/>
|
||||||
</CardContent>
|
</CardContent>
|
||||||
</Card>
|
</Card>
|
||||||
|
|||||||
@@ -31,12 +31,12 @@ import { useRequiredSigningContext } from './provider';
|
|||||||
import { SigningFieldContainer } from './signing-field-container';
|
import { SigningFieldContainer } from './signing-field-container';
|
||||||
|
|
||||||
type SignatureFieldState = 'empty' | 'signed-image' | 'signed-text';
|
type SignatureFieldState = 'empty' | 'signed-image' | 'signed-text';
|
||||||
|
|
||||||
export type SignatureFieldProps = {
|
export type SignatureFieldProps = {
|
||||||
field: FieldWithSignature;
|
field: FieldWithSignature;
|
||||||
recipient: Recipient;
|
recipient: Recipient;
|
||||||
onSignField?: (value: TSignFieldWithTokenMutationSchema) => Promise<void> | void;
|
onSignField?: (value: TSignFieldWithTokenMutationSchema) => Promise<void> | void;
|
||||||
onUnsignField?: (value: TRemovedSignedFieldWithTokenMutationSchema) => Promise<void> | void;
|
onUnsignField?: (value: TRemovedSignedFieldWithTokenMutationSchema) => Promise<void> | void;
|
||||||
|
typedSignatureEnabled?: boolean;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const SignatureField = ({
|
export const SignatureField = ({
|
||||||
@@ -44,6 +44,7 @@ export const SignatureField = ({
|
|||||||
recipient,
|
recipient,
|
||||||
onSignField,
|
onSignField,
|
||||||
onUnsignField,
|
onUnsignField,
|
||||||
|
typedSignatureEnabled,
|
||||||
}: SignatureFieldProps) => {
|
}: SignatureFieldProps) => {
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
|
||||||
@@ -92,14 +93,12 @@ export const SignatureField = ({
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* When the user clicks the sign button in the dialog where they enter their signature.
|
* When the user clicks the sign button in the dialog where they enter their signature.
|
||||||
*/
|
*/
|
||||||
const onDialogSignClick = () => {
|
const onDialogSignClick = () => {
|
||||||
setShowSignatureModal(false);
|
setShowSignatureModal(false);
|
||||||
setProvidedSignature(localSignature);
|
setProvidedSignature(localSignature);
|
||||||
|
|
||||||
if (!localSignature) {
|
if (!localSignature) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -109,7 +108,6 @@ export const SignatureField = ({
|
|||||||
actionTarget: field.type,
|
actionTarget: field.type,
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
const onSign = async (authOptions?: TRecipientActionAuth, signature?: string) => {
|
const onSign = async (authOptions?: TRecipientActionAuth, signature?: string) => {
|
||||||
try {
|
try {
|
||||||
const value = signature || providedSignature;
|
const value = signature || providedSignature;
|
||||||
@@ -231,11 +229,11 @@ export const SignatureField = ({
|
|||||||
id="signature"
|
id="signature"
|
||||||
className="border-border mt-2 h-44 w-full rounded-md border"
|
className="border-border mt-2 h-44 w-full rounded-md border"
|
||||||
onChange={(value) => setLocalSignature(value)}
|
onChange={(value) => setLocalSignature(value)}
|
||||||
|
allowTypedSignature={typedSignatureEnabled}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<SigningDisclosure />
|
<SigningDisclosure />
|
||||||
|
|
||||||
<DialogFooter>
|
<DialogFooter>
|
||||||
<div className="flex w-full flex-1 flex-nowrap gap-4">
|
<div className="flex w-full flex-1 flex-nowrap gap-4">
|
||||||
<Button
|
<Button
|
||||||
@@ -249,7 +247,6 @@ export const SignatureField = ({
|
|||||||
>
|
>
|
||||||
<Trans>Cancel</Trans>
|
<Trans>Cancel</Trans>
|
||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
type="button"
|
type="button"
|
||||||
className="flex-1"
|
className="flex-1"
|
||||||
|
|||||||
@@ -112,7 +112,12 @@ export const SigningPageView = ({
|
|||||||
{fields.map((field) =>
|
{fields.map((field) =>
|
||||||
match(field.type)
|
match(field.type)
|
||||||
.with(FieldType.SIGNATURE, () => (
|
.with(FieldType.SIGNATURE, () => (
|
||||||
<SignatureField key={field.id} field={field} recipient={recipient} />
|
<SignatureField
|
||||||
|
key={field.id}
|
||||||
|
field={field}
|
||||||
|
recipient={recipient}
|
||||||
|
typedSignatureEnabled={documentMeta?.typedSignatureEnabled}
|
||||||
|
/>
|
||||||
))
|
))
|
||||||
.with(FieldType.INITIALS, () => (
|
.with(FieldType.INITIALS, () => (
|
||||||
<InitialsField key={field.id} field={field} recipient={recipient} />
|
<InitialsField key={field.id} field={field} recipient={recipient} />
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ export type CreateDocumentMetaOptions = {
|
|||||||
dateFormat?: string;
|
dateFormat?: string;
|
||||||
redirectUrl?: string;
|
redirectUrl?: string;
|
||||||
signingOrder?: DocumentSigningOrder;
|
signingOrder?: DocumentSigningOrder;
|
||||||
|
typedSignatureEnabled?: boolean;
|
||||||
userId: number;
|
userId: number;
|
||||||
requestMetadata: RequestMetadata;
|
requestMetadata: RequestMetadata;
|
||||||
};
|
};
|
||||||
@@ -32,6 +33,7 @@ export const upsertDocumentMeta = async ({
|
|||||||
userId,
|
userId,
|
||||||
redirectUrl,
|
redirectUrl,
|
||||||
signingOrder,
|
signingOrder,
|
||||||
|
typedSignatureEnabled,
|
||||||
requestMetadata,
|
requestMetadata,
|
||||||
}: CreateDocumentMetaOptions) => {
|
}: CreateDocumentMetaOptions) => {
|
||||||
const user = await prisma.user.findFirstOrThrow({
|
const user = await prisma.user.findFirstOrThrow({
|
||||||
@@ -82,6 +84,7 @@ export const upsertDocumentMeta = async ({
|
|||||||
documentId,
|
documentId,
|
||||||
redirectUrl,
|
redirectUrl,
|
||||||
signingOrder,
|
signingOrder,
|
||||||
|
typedSignatureEnabled,
|
||||||
},
|
},
|
||||||
update: {
|
update: {
|
||||||
subject,
|
subject,
|
||||||
@@ -91,6 +94,7 @@ export const upsertDocumentMeta = async ({
|
|||||||
timezone,
|
timezone,
|
||||||
redirectUrl,
|
redirectUrl,
|
||||||
signingOrder,
|
signingOrder,
|
||||||
|
typedSignatureEnabled,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -115,7 +115,7 @@ msgstr "Admin"
|
|||||||
msgid "Advanced Options"
|
msgid "Advanced Options"
|
||||||
msgstr "Erweiterte Optionen"
|
msgstr "Erweiterte Optionen"
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:565
|
#: packages/ui/primitives/document-flow/add-fields.tsx:570
|
||||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:402
|
#: packages/ui/primitives/template-flow/add-template-fields.tsx:402
|
||||||
msgid "Advanced settings"
|
msgid "Advanced settings"
|
||||||
msgstr "Erweiterte Einstellungen"
|
msgstr "Erweiterte Einstellungen"
|
||||||
@@ -140,11 +140,11 @@ msgstr "Genehmiger"
|
|||||||
msgid "Approving"
|
msgid "Approving"
|
||||||
msgstr "Genehmigung"
|
msgstr "Genehmigung"
|
||||||
|
|
||||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:276
|
#: packages/ui/primitives/signature-pad/signature-pad.tsx:377
|
||||||
msgid "Black"
|
msgid "Black"
|
||||||
msgstr "Schwarz"
|
msgstr "Schwarz"
|
||||||
|
|
||||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:290
|
#: packages/ui/primitives/signature-pad/signature-pad.tsx:391
|
||||||
msgid "Blue"
|
msgid "Blue"
|
||||||
msgstr "Blau"
|
msgstr "Blau"
|
||||||
|
|
||||||
@@ -178,7 +178,7 @@ msgstr "CC'd"
|
|||||||
msgid "Character Limit"
|
msgid "Character Limit"
|
||||||
msgstr "Zeichenbeschränkung"
|
msgstr "Zeichenbeschränkung"
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:993
|
#: packages/ui/primitives/document-flow/add-fields.tsx:1026
|
||||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:788
|
#: packages/ui/primitives/template-flow/add-template-fields.tsx:788
|
||||||
msgid "Checkbox"
|
msgid "Checkbox"
|
||||||
msgstr "Checkbox"
|
msgstr "Checkbox"
|
||||||
@@ -191,7 +191,7 @@ msgstr "Checkbox-Werte"
|
|||||||
msgid "Clear filters"
|
msgid "Clear filters"
|
||||||
msgstr "Filter löschen"
|
msgstr "Filter löschen"
|
||||||
|
|
||||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:310
|
#: packages/ui/primitives/signature-pad/signature-pad.tsx:411
|
||||||
msgid "Clear Signature"
|
msgid "Clear Signature"
|
||||||
msgstr "Unterschrift löschen"
|
msgstr "Unterschrift löschen"
|
||||||
|
|
||||||
@@ -207,7 +207,7 @@ msgstr "Schließen"
|
|||||||
msgid "Configure Direct Recipient"
|
msgid "Configure Direct Recipient"
|
||||||
msgstr "Direkten Empfänger konfigurieren"
|
msgstr "Direkten Empfänger konfigurieren"
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:566
|
#: packages/ui/primitives/document-flow/add-fields.tsx:571
|
||||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:403
|
#: packages/ui/primitives/template-flow/add-template-fields.tsx:403
|
||||||
msgid "Configure the {0} field"
|
msgid "Configure the {0} field"
|
||||||
msgstr "Konfigurieren Sie das Feld {0}"
|
msgstr "Konfigurieren Sie das Feld {0}"
|
||||||
@@ -224,7 +224,7 @@ msgstr "In die Zwischenablage kopiert"
|
|||||||
msgid "Custom Text"
|
msgid "Custom Text"
|
||||||
msgstr "Benutzerdefinierter Text"
|
msgstr "Benutzerdefinierter Text"
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:889
|
#: packages/ui/primitives/document-flow/add-fields.tsx:922
|
||||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:684
|
#: packages/ui/primitives/template-flow/add-template-fields.tsx:684
|
||||||
msgid "Date"
|
msgid "Date"
|
||||||
msgstr "Datum"
|
msgstr "Datum"
|
||||||
@@ -256,7 +256,7 @@ msgstr "Herunterladen"
|
|||||||
msgid "Drag & drop your PDF here."
|
msgid "Drag & drop your PDF here."
|
||||||
msgstr "Ziehen Sie Ihr PDF hierher."
|
msgstr "Ziehen Sie Ihr PDF hierher."
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1019
|
#: packages/ui/primitives/document-flow/add-fields.tsx:1052
|
||||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:814
|
#: packages/ui/primitives/template-flow/add-template-fields.tsx:814
|
||||||
msgid "Dropdown"
|
msgid "Dropdown"
|
||||||
msgstr "Dropdown"
|
msgstr "Dropdown"
|
||||||
@@ -265,7 +265,7 @@ msgstr "Dropdown"
|
|||||||
msgid "Dropdown options"
|
msgid "Dropdown options"
|
||||||
msgstr "Dropdown-Optionen"
|
msgstr "Dropdown-Optionen"
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:837
|
#: packages/ui/primitives/document-flow/add-fields.tsx:870
|
||||||
#: packages/ui/primitives/document-flow/add-signature.tsx:272
|
#: packages/ui/primitives/document-flow/add-signature.tsx:272
|
||||||
#: packages/ui/primitives/document-flow/add-signers.tsx:500
|
#: packages/ui/primitives/document-flow/add-signers.tsx:500
|
||||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:632
|
#: packages/ui/primitives/template-flow/add-template-fields.tsx:632
|
||||||
@@ -278,7 +278,7 @@ msgstr "E-Mail"
|
|||||||
msgid "Email Options"
|
msgid "Email Options"
|
||||||
msgstr "E-Mail-Optionen"
|
msgstr "E-Mail-Optionen"
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1082
|
#: packages/ui/primitives/document-flow/add-fields.tsx:1117
|
||||||
msgid "Empty field"
|
msgid "Empty field"
|
||||||
msgstr "Leeres Feld"
|
msgstr "Leeres Feld"
|
||||||
|
|
||||||
@@ -291,6 +291,10 @@ msgstr "Direktlink-Signierung aktivieren"
|
|||||||
msgid "Enable signing order"
|
msgid "Enable signing order"
|
||||||
msgstr "Aktiviere die Signaturreihenfolge"
|
msgstr "Aktiviere die Signaturreihenfolge"
|
||||||
|
|
||||||
|
#: packages/ui/primitives/document-flow/add-fields.tsx:790
|
||||||
|
msgid "Enable Typed Signatures"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: packages/ui/primitives/document-password-dialog.tsx:84
|
#: packages/ui/primitives/document-password-dialog.tsx:84
|
||||||
msgid "Enter password"
|
msgid "Enter password"
|
||||||
msgstr "Passwort eingeben"
|
msgstr "Passwort eingeben"
|
||||||
@@ -350,7 +354,7 @@ msgstr "Globale Empfängerauthentifizierung"
|
|||||||
msgid "Go Back"
|
msgid "Go Back"
|
||||||
msgstr "Zurück"
|
msgstr "Zurück"
|
||||||
|
|
||||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:297
|
#: packages/ui/primitives/signature-pad/signature-pad.tsx:398
|
||||||
msgid "Green"
|
msgid "Green"
|
||||||
msgstr "Grün"
|
msgstr "Grün"
|
||||||
|
|
||||||
@@ -406,7 +410,7 @@ msgstr "Nachricht <0>(Optional)</0>"
|
|||||||
msgid "Min"
|
msgid "Min"
|
||||||
msgstr "Min"
|
msgstr "Min"
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:863
|
#: packages/ui/primitives/document-flow/add-fields.tsx:896
|
||||||
#: packages/ui/primitives/document-flow/add-signature.tsx:298
|
#: packages/ui/primitives/document-flow/add-signature.tsx:298
|
||||||
#: packages/ui/primitives/document-flow/add-signers.tsx:535
|
#: packages/ui/primitives/document-flow/add-signers.tsx:535
|
||||||
#: packages/ui/primitives/document-flow/add-signers.tsx:541
|
#: packages/ui/primitives/document-flow/add-signers.tsx:541
|
||||||
@@ -428,12 +432,12 @@ msgstr "Muss unterzeichnen"
|
|||||||
msgid "Needs to view"
|
msgid "Needs to view"
|
||||||
msgstr "Muss sehen"
|
msgstr "Muss sehen"
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:674
|
#: packages/ui/primitives/document-flow/add-fields.tsx:680
|
||||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:497
|
#: packages/ui/primitives/template-flow/add-template-fields.tsx:497
|
||||||
msgid "No recipient matching this description was found."
|
msgid "No recipient matching this description was found."
|
||||||
msgstr "Kein passender Empfänger mit dieser Beschreibung gefunden."
|
msgstr "Kein passender Empfänger mit dieser Beschreibung gefunden."
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:690
|
#: packages/ui/primitives/document-flow/add-fields.tsx:696
|
||||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:513
|
#: packages/ui/primitives/template-flow/add-template-fields.tsx:513
|
||||||
msgid "No recipients with this role"
|
msgid "No recipients with this role"
|
||||||
msgstr "Keine Empfänger mit dieser Rolle"
|
msgstr "Keine Empfänger mit dieser Rolle"
|
||||||
@@ -458,7 +462,7 @@ msgstr "Kein Unterschriftsfeld gefunden"
|
|||||||
msgid "No value found."
|
msgid "No value found."
|
||||||
msgstr "Kein Wert gefunden."
|
msgstr "Kein Wert gefunden."
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:941
|
#: packages/ui/primitives/document-flow/add-fields.tsx:974
|
||||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:736
|
#: packages/ui/primitives/template-flow/add-template-fields.tsx:736
|
||||||
msgid "Number"
|
msgid "Number"
|
||||||
msgstr "Nummer"
|
msgstr "Nummer"
|
||||||
@@ -493,7 +497,7 @@ msgstr "Wählen Sie eine Zahl"
|
|||||||
msgid "Placeholder"
|
msgid "Placeholder"
|
||||||
msgstr "Platzhalter"
|
msgstr "Platzhalter"
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:967
|
#: packages/ui/primitives/document-flow/add-fields.tsx:1000
|
||||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:762
|
#: packages/ui/primitives/template-flow/add-template-fields.tsx:762
|
||||||
msgid "Radio"
|
msgid "Radio"
|
||||||
msgstr "Radio"
|
msgstr "Radio"
|
||||||
@@ -520,7 +524,7 @@ msgstr "Erhält Kopie"
|
|||||||
msgid "Recipient action authentication"
|
msgid "Recipient action authentication"
|
||||||
msgstr "Empfängeraktion Authentifizierung"
|
msgstr "Empfängeraktion Authentifizierung"
|
||||||
|
|
||||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:283
|
#: packages/ui/primitives/signature-pad/signature-pad.tsx:384
|
||||||
msgid "Red"
|
msgid "Red"
|
||||||
msgstr "Rot"
|
msgstr "Rot"
|
||||||
|
|
||||||
@@ -529,7 +533,7 @@ msgstr "Rot"
|
|||||||
msgid "Redirect URL"
|
msgid "Redirect URL"
|
||||||
msgstr "Weiterleitungs-URL"
|
msgstr "Weiterleitungs-URL"
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1069
|
#: packages/ui/primitives/document-flow/add-fields.tsx:1104
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Entfernen"
|
msgstr "Entfernen"
|
||||||
|
|
||||||
@@ -600,7 +604,7 @@ msgstr "Erweiterte Einstellungen anzeigen"
|
|||||||
msgid "Sign"
|
msgid "Sign"
|
||||||
msgstr "Unterschreiben"
|
msgstr "Unterschreiben"
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:785
|
#: packages/ui/primitives/document-flow/add-fields.tsx:818
|
||||||
#: packages/ui/primitives/document-flow/add-signature.tsx:323
|
#: packages/ui/primitives/document-flow/add-signature.tsx:323
|
||||||
#: packages/ui/primitives/document-flow/field-icon.tsx:52
|
#: packages/ui/primitives/document-flow/field-icon.tsx:52
|
||||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:580
|
#: packages/ui/primitives/template-flow/add-template-fields.tsx:580
|
||||||
@@ -648,7 +652,7 @@ msgstr "Einreichen"
|
|||||||
msgid "Template title"
|
msgid "Template title"
|
||||||
msgstr "Vorlagentitel"
|
msgstr "Vorlagentitel"
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:915
|
#: packages/ui/primitives/document-flow/add-fields.tsx:948
|
||||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:710
|
#: packages/ui/primitives/template-flow/add-template-fields.tsx:710
|
||||||
msgid "Text"
|
msgid "Text"
|
||||||
msgstr "Text"
|
msgstr "Text"
|
||||||
@@ -709,7 +713,7 @@ msgstr "Der Name des Unterzeichners"
|
|||||||
msgid "This can be overriden by setting the authentication requirements directly on each recipient in the next step."
|
msgid "This can be overriden by setting the authentication requirements directly on each recipient in the next step."
|
||||||
msgstr "Dies kann überschrieben werden, indem die Authentifizierungsanforderungen im nächsten Schritt direkt für jeden Empfänger festgelegt werden."
|
msgstr "Dies kann überschrieben werden, indem die Authentifizierungsanforderungen im nächsten Schritt direkt für jeden Empfänger festgelegt werden."
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:746
|
#: packages/ui/primitives/document-flow/add-fields.tsx:752
|
||||||
msgid "This document has already been sent to this recipient. You can no longer edit this recipient."
|
msgid "This document has already been sent to this recipient. You can no longer edit this recipient."
|
||||||
msgstr "Dieses Dokument wurde bereits an diesen Empfänger gesendet. Sie können diesen Empfänger nicht mehr bearbeiten."
|
msgstr "Dieses Dokument wurde bereits an diesen Empfänger gesendet. Sie können diesen Empfänger nicht mehr bearbeiten."
|
||||||
|
|
||||||
@@ -721,7 +725,7 @@ msgstr "Dieses Dokument ist durch ein Passwort geschützt. Bitte geben Sie das P
|
|||||||
msgid "This field cannot be modified or deleted. When you share this template's direct link or add it to your public profile, anyone who accesses it can input their name and email, and fill in the fields assigned to them."
|
msgid "This field cannot be modified or deleted. When you share this template's direct link or add it to your public profile, anyone who accesses it can input their name and email, and fill in the fields assigned to them."
|
||||||
msgstr "Dieses Feld kann nicht geändert oder gelöscht werden. Wenn Sie den direkten Link dieser Vorlage teilen oder zu Ihrem öffentlichen Profil hinzufügen, kann jeder, der darauf zugreift, seinen Namen und seine E-Mail-Adresse eingeben und die ihm zugewiesenen Felder ausfüllen."
|
msgstr "Dieses Feld kann nicht geändert oder gelöscht werden. Wenn Sie den direkten Link dieser Vorlage teilen oder zu Ihrem öffentlichen Profil hinzufügen, kann jeder, der darauf zugreift, seinen Namen und seine E-Mail-Adresse eingeben und die ihm zugewiesenen Felder ausfüllen."
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1050
|
#: packages/ui/primitives/document-flow/add-fields.tsx:1084
|
||||||
msgid "This recipient can no longer be modified as they have signed a field, or completed the document."
|
msgid "This recipient can no longer be modified as they have signed a field, or completed the document."
|
||||||
msgstr "Dieser Empfänger kann nicht mehr bearbeitet werden, da er ein Feld unterschrieben oder das Dokument abgeschlossen hat."
|
msgstr "Dieser Empfänger kann nicht mehr bearbeitet werden, da er ein Feld unterschrieben oder das Dokument abgeschlossen hat."
|
||||||
|
|
||||||
@@ -746,7 +750,7 @@ msgstr "Zeitzone"
|
|||||||
msgid "Title"
|
msgid "Title"
|
||||||
msgstr "Titel"
|
msgstr "Titel"
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1033
|
#: packages/ui/primitives/document-flow/add-fields.tsx:1067
|
||||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:828
|
#: packages/ui/primitives/template-flow/add-template-fields.tsx:828
|
||||||
msgid "To proceed further, please set at least one value for the {0} field."
|
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."
|
msgstr "Um fortzufahren, legen Sie bitte mindestens einen Wert für das Feld {0} fest."
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -220,7 +220,7 @@ msgstr "Aktive Abonnements"
|
|||||||
msgid "Add"
|
msgid "Add"
|
||||||
msgstr "Hinzufügen"
|
msgstr "Hinzufügen"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:157
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:175
|
||||||
#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:87
|
#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:87
|
||||||
msgid "Add all relevant fields for each recipient."
|
msgid "Add all relevant fields for each recipient."
|
||||||
msgstr "Fügen Sie alle relevanten Felder für jeden Empfänger hinzu."
|
msgstr "Fügen Sie alle relevanten Felder für jeden Empfänger hinzu."
|
||||||
@@ -241,7 +241,7 @@ msgstr "Fügen Sie einen Authenticator hinzu, um als sekundäre Authentifizierun
|
|||||||
msgid "Add email"
|
msgid "Add email"
|
||||||
msgstr "E-Mail hinzufügen"
|
msgstr "E-Mail hinzufügen"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:156
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:174
|
||||||
#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:86
|
#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:86
|
||||||
msgid "Add Fields"
|
msgid "Add Fields"
|
||||||
msgstr "Felder hinzufügen"
|
msgstr "Felder hinzufügen"
|
||||||
@@ -263,11 +263,11 @@ msgstr "Passkey hinzufügen"
|
|||||||
msgid "Add Placeholders"
|
msgid "Add Placeholders"
|
||||||
msgstr "Platzhalter hinzufügen"
|
msgstr "Platzhalter hinzufügen"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:151
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:169
|
||||||
msgid "Add Signers"
|
msgid "Add Signers"
|
||||||
msgstr "Unterzeichner hinzufügen"
|
msgstr "Unterzeichner hinzufügen"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:161
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:179
|
||||||
msgid "Add Subject"
|
msgid "Add Subject"
|
||||||
msgstr "Betreff hinzufügen"
|
msgstr "Betreff hinzufügen"
|
||||||
|
|
||||||
@@ -283,7 +283,7 @@ msgstr "Team-E-Mail hinzufügen"
|
|||||||
#~ msgid "Add Text"
|
#~ msgid "Add Text"
|
||||||
#~ msgstr "Add Text"
|
#~ msgstr "Add Text"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:152
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:170
|
||||||
msgid "Add the people who will sign the document."
|
msgid "Add the people who will sign the document."
|
||||||
msgstr "Fügen Sie die Personen hinzu, die das Dokument unterschreiben werden."
|
msgstr "Fügen Sie die Personen hinzu, die das Dokument unterschreiben werden."
|
||||||
|
|
||||||
@@ -291,7 +291,7 @@ msgstr "Fügen Sie die Personen hinzu, die das Dokument unterschreiben werden."
|
|||||||
msgid "Add the recipients to create the document with"
|
msgid "Add the recipients to create the document with"
|
||||||
msgstr "Fügen Sie die Empfänger hinzu, um das Dokument zu erstellen"
|
msgstr "Fügen Sie die Empfänger hinzu, um das Dokument zu erstellen"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:162
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:180
|
||||||
msgid "Add the subject and message you wish to send to signers."
|
msgid "Add the subject and message you wish to send to signers."
|
||||||
msgstr "Fügen Sie den Betreff und die Nachricht hinzu, die Sie den Unterzeichnern senden möchten."
|
msgstr "Fügen Sie den Betreff und die Nachricht hinzu, die Sie den Unterzeichnern senden möchten."
|
||||||
|
|
||||||
@@ -370,13 +370,13 @@ msgstr "Eine E-Mail, in der die Übertragung dieses Teams angefordert wird, wurd
|
|||||||
msgid "An error occurred"
|
msgid "An error occurred"
|
||||||
msgstr "Ein Fehler ist aufgetreten"
|
msgstr "Ein Fehler ist aufgetreten"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:248
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:266
|
||||||
#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:197
|
#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:197
|
||||||
#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:231
|
#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:231
|
||||||
msgid "An error occurred while adding signers."
|
msgid "An error occurred while adding signers."
|
||||||
msgstr "Ein Fehler ist aufgetreten, während Unterzeichner hinzugefügt wurden."
|
msgstr "Ein Fehler ist aufgetreten, während Unterzeichner hinzugefügt wurden."
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:278
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:301
|
||||||
msgid "An error occurred while adding the fields."
|
msgid "An error occurred while adding the fields."
|
||||||
msgstr "Ein Fehler ist aufgetreten, während die Felder hinzugefügt wurden."
|
msgstr "Ein Fehler ist aufgetreten, während die Felder hinzugefügt wurden."
|
||||||
|
|
||||||
@@ -426,7 +426,7 @@ msgstr "Ein Fehler ist aufgetreten, während die Vorlage verschoben wurde."
|
|||||||
#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:148
|
#: 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]/number-field.tsx:195
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:129
|
#: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:129
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:175
|
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:173
|
||||||
msgid "An error occurred while removing the signature."
|
msgid "An error occurred while removing the signature."
|
||||||
msgstr "Ein Fehler ist aufgetreten, während die Unterschrift entfernt wurde."
|
msgstr "Ein Fehler ist aufgetreten, während die Unterschrift entfernt wurde."
|
||||||
|
|
||||||
@@ -434,7 +434,7 @@ msgstr "Ein Fehler ist aufgetreten, während die Unterschrift entfernt wurde."
|
|||||||
msgid "An error occurred while removing the text."
|
msgid "An error occurred while removing the text."
|
||||||
msgstr "Ein Fehler ist aufgetreten, während der Text entfernt wurde."
|
msgstr "Ein Fehler ist aufgetreten, während der Text entfernt wurde."
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:309
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:332
|
||||||
msgid "An error occurred while sending the document."
|
msgid "An error occurred while sending the document."
|
||||||
msgstr "Ein Fehler ist aufgetreten, während das Dokument gesendet wurde."
|
msgstr "Ein Fehler ist aufgetreten, während das Dokument gesendet wurde."
|
||||||
|
|
||||||
@@ -449,7 +449,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]/name-field.tsx:122
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:150
|
#: 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]/radio-field.tsx:102
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:149
|
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:147
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:168
|
#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:168
|
||||||
msgid "An error occurred while signing the document."
|
msgid "An error occurred while signing the document."
|
||||||
msgstr "Ein Fehler ist aufgetreten, während das Dokument unterzeichnet wurde."
|
msgstr "Ein Fehler ist aufgetreten, während das Dokument unterzeichnet wurde."
|
||||||
@@ -458,7 +458,7 @@ msgstr "Ein Fehler ist aufgetreten, während das Dokument unterzeichnet wurde."
|
|||||||
msgid "An error occurred while trying to create a checkout session."
|
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."
|
msgstr "Ein Fehler ist aufgetreten, während versucht wurde, eine Checkout-Sitzung zu erstellen."
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:214
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:232
|
||||||
#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:166
|
#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:166
|
||||||
msgid "An error occurred while updating the document settings."
|
msgid "An error occurred while updating the document settings."
|
||||||
msgstr "Ein Fehler ist aufgetreten, während die Dokumenteinstellungen aktualisiert wurden."
|
msgstr "Ein Fehler ist aufgetreten, während die Dokumenteinstellungen aktualisiert wurden."
|
||||||
@@ -665,11 +665,11 @@ msgstr "Durch die Aktivierung von 2FA müssen Sie jedes Mal, wenn Sie sich anmel
|
|||||||
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-account.tsx:71
|
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-account.tsx:71
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:164
|
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:164
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:189
|
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:189
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/form.tsx:150
|
#: apps/web/src/app/(signing)/sign/[token]/form.tsx:151
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:215
|
#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:215
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:327
|
#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:327
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:113
|
#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:113
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:250
|
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:248
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:333
|
#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:333
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:121
|
#: 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
|
#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:176
|
||||||
@@ -752,7 +752,7 @@ msgid "Click to copy signing link for sending to recipient"
|
|||||||
msgstr "Klicken Sie, um den Signatur-Link zu kopieren, um ihn an den Empfänger zu senden"
|
msgstr "Klicken Sie, um den Signatur-Link zu kopieren, um ihn an den Empfänger zu senden"
|
||||||
|
|
||||||
#: apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx:175
|
#: apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx:175
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/form.tsx:114
|
#: apps/web/src/app/(signing)/sign/[token]/form.tsx:115
|
||||||
#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:435
|
#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:435
|
||||||
#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:314
|
#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:314
|
||||||
msgid "Click to insert field"
|
msgid "Click to insert field"
|
||||||
@@ -802,7 +802,7 @@ msgstr "Abgeschlossene Dokumente"
|
|||||||
msgid "Completed Documents"
|
msgid "Completed Documents"
|
||||||
msgstr "Abgeschlossene Dokumente"
|
msgstr "Abgeschlossene Dokumente"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:147
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:165
|
||||||
msgid "Configure general settings for the document."
|
msgid "Configure general settings for the document."
|
||||||
msgstr "Konfigurieren Sie die allgemeinen Einstellungen für das Dokument."
|
msgstr "Konfigurieren Sie die allgemeinen Einstellungen für das Dokument."
|
||||||
|
|
||||||
@@ -1274,7 +1274,7 @@ msgstr "Dokument erneut gesendet"
|
|||||||
msgid "Document resealed"
|
msgid "Document resealed"
|
||||||
msgstr "Dokument wieder versiegelt"
|
msgstr "Dokument wieder versiegelt"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:298
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:321
|
||||||
msgid "Document sent"
|
msgid "Document sent"
|
||||||
msgstr "Dokument gesendet"
|
msgstr "Dokument gesendet"
|
||||||
|
|
||||||
@@ -1369,6 +1369,10 @@ msgstr "Entwurfdokumente"
|
|||||||
msgid "Drafted Documents"
|
msgid "Drafted Documents"
|
||||||
msgstr "Entwurfte Dokumente"
|
msgstr "Entwurfte Dokumente"
|
||||||
|
|
||||||
|
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:245
|
||||||
|
#~ msgid "Draw"
|
||||||
|
#~ msgstr ""
|
||||||
|
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/layout-billing-banner.tsx:121
|
#: apps/web/src/app/(teams)/t/[teamUrl]/layout-billing-banner.tsx:121
|
||||||
msgid "Due to an unpaid invoice, your team has been restricted. Please settle the payment to restore full access to your team."
|
msgid "Due to an unpaid invoice, your team has been restricted. Please settle the payment to restore full access to your team."
|
||||||
msgstr "Aufgrund einer unbezahlten Rechnung wurde Ihrem Team der Zugriff eingeschränkt. Bitte begleichen Sie die Zahlung, um den vollumfänglichen Zugang zu Ihrem Team wiederherzustellen."
|
msgstr "Aufgrund einer unbezahlten Rechnung wurde Ihrem Team der Zugriff eingeschränkt. Bitte begleichen Sie die Zahlung, um den vollumfänglichen Zugang zu Ihrem Team wiederherzustellen."
|
||||||
@@ -1491,10 +1495,10 @@ msgstr "Geben Sie hier Ihren Text ein"
|
|||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/admin/documents/[id]/admin-actions.tsx:41
|
#: apps/web/src/app/(dashboard)/admin/documents/[id]/admin-actions.tsx:41
|
||||||
#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:78
|
#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:78
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:213
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:231
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:247
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:265
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:277
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:300
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:308
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:331
|
||||||
#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:57
|
#: 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:106
|
||||||
#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:112
|
#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:112
|
||||||
@@ -1519,8 +1523,8 @@ 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]/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:101
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:128
|
#: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:128
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:148
|
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:146
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:174
|
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:172
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:167
|
#: 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/app/(signing)/sign/[token]/text-field.tsx:195
|
||||||
#: apps/web/src/components/(dashboard)/layout/verify-email-banner.tsx:54
|
#: apps/web/src/components/(dashboard)/layout/verify-email-banner.tsx:54
|
||||||
@@ -1597,7 +1601,7 @@ msgstr "Haben Sie Ihr Passwort vergessen?"
|
|||||||
msgid "Full Name"
|
msgid "Full Name"
|
||||||
msgstr "Vollständiger Name"
|
msgstr "Vollständiger Name"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:146
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:164
|
||||||
#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:76
|
#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:76
|
||||||
#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:60
|
#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:60
|
||||||
#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:43
|
#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:43
|
||||||
@@ -2294,7 +2298,7 @@ msgstr "Bitte kontaktieren Sie den Support, wenn Sie diese Aktion rückgängig m
|
|||||||
msgid "Please enter a meaningful name for your token. This will help you identify it later."
|
msgid "Please enter a meaningful name for your token. This will help you identify it later."
|
||||||
msgstr "Bitte geben Sie einen aussagekräftigen Namen für Ihr Token ein. Dies wird Ihnen helfen, es später zu identifizieren."
|
msgstr "Bitte geben Sie einen aussagekräftigen Namen für Ihr Token ein. Dies wird Ihnen helfen, es später zu identifizieren."
|
||||||
|
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/form.tsx:134
|
#: apps/web/src/app/(signing)/sign/[token]/form.tsx:135
|
||||||
msgid "Please mark as viewed to complete"
|
msgid "Please mark as viewed to complete"
|
||||||
msgstr "Bitte als angesehen markieren, um abzuschließen"
|
msgstr "Bitte als angesehen markieren, um abzuschließen"
|
||||||
|
|
||||||
@@ -2730,13 +2734,13 @@ msgstr "Vorlagen in Ihrem Team-Öffentliches Profil anzeigen, damit Ihre Zielgru
|
|||||||
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:182
|
#: 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]/name-field.tsx:224
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:124
|
#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:124
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:259
|
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:256
|
||||||
#: apps/web/src/components/ui/user-profile-skeleton.tsx:75
|
#: apps/web/src/components/ui/user-profile-skeleton.tsx:75
|
||||||
#: apps/web/src/components/ui/user-profile-timur.tsx:81
|
#: apps/web/src/components/ui/user-profile-timur.tsx:81
|
||||||
msgid "Sign"
|
msgid "Sign"
|
||||||
msgstr "Unterzeichnen"
|
msgstr "Unterzeichnen"
|
||||||
|
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:219
|
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:217
|
||||||
msgid "Sign as {0} <0>({1})</0>"
|
msgid "Sign as {0} <0>({1})</0>"
|
||||||
msgstr "Unterzeichnen als {0} <0>({1})</0>"
|
msgstr "Unterzeichnen als {0} <0>({1})</0>"
|
||||||
|
|
||||||
@@ -2802,8 +2806,8 @@ msgstr "Registrieren mit OIDC"
|
|||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:88
|
#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:88
|
||||||
#: apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx:338
|
#: apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx:338
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:197
|
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:195
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:227
|
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:225
|
||||||
#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:391
|
#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:391
|
||||||
#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:270
|
#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:270
|
||||||
#: apps/web/src/components/forms/profile.tsx:132
|
#: apps/web/src/components/forms/profile.tsx:132
|
||||||
@@ -3552,6 +3556,10 @@ msgstr "Type 'delete' to confirm"
|
|||||||
msgid "Type a command or search..."
|
msgid "Type a command or search..."
|
||||||
msgstr "Type a command or search..."
|
msgstr "Type a command or search..."
|
||||||
|
|
||||||
|
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:275
|
||||||
|
#~ msgid "Typed Signature"
|
||||||
|
#~ msgstr ""
|
||||||
|
|
||||||
#: apps/web/src/app/(unauthenticated)/verify-email/page.tsx:26
|
#: apps/web/src/app/(unauthenticated)/verify-email/page.tsx:26
|
||||||
msgid "Uh oh! Looks like you're missing a token"
|
msgid "Uh oh! Looks like you're missing a token"
|
||||||
msgstr "Uh oh! Looks like you're missing a token"
|
msgstr "Uh oh! Looks like you're missing a token"
|
||||||
@@ -4382,7 +4390,7 @@ msgstr "Ihr Dokument wurde erfolgreich aus der Vorlage erstellt."
|
|||||||
msgid "Your document has been re-sent successfully."
|
msgid "Your document has been re-sent successfully."
|
||||||
msgstr "Ihr Dokument wurde erfolgreich erneut gesendet."
|
msgstr "Ihr Dokument wurde erfolgreich erneut gesendet."
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:299
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:322
|
||||||
msgid "Your document has been sent successfully."
|
msgid "Your document has been sent successfully."
|
||||||
msgstr "Ihr Dokument wurde erfolgreich gesendet."
|
msgstr "Ihr Dokument wurde erfolgreich gesendet."
|
||||||
|
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ msgstr "Admin"
|
|||||||
msgid "Advanced Options"
|
msgid "Advanced Options"
|
||||||
msgstr "Advanced Options"
|
msgstr "Advanced Options"
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:565
|
#: packages/ui/primitives/document-flow/add-fields.tsx:570
|
||||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:402
|
#: packages/ui/primitives/template-flow/add-template-fields.tsx:402
|
||||||
msgid "Advanced settings"
|
msgid "Advanced settings"
|
||||||
msgstr "Advanced settings"
|
msgstr "Advanced settings"
|
||||||
@@ -135,11 +135,11 @@ msgstr "Approver"
|
|||||||
msgid "Approving"
|
msgid "Approving"
|
||||||
msgstr "Approving"
|
msgstr "Approving"
|
||||||
|
|
||||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:276
|
#: packages/ui/primitives/signature-pad/signature-pad.tsx:377
|
||||||
msgid "Black"
|
msgid "Black"
|
||||||
msgstr "Black"
|
msgstr "Black"
|
||||||
|
|
||||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:290
|
#: packages/ui/primitives/signature-pad/signature-pad.tsx:391
|
||||||
msgid "Blue"
|
msgid "Blue"
|
||||||
msgstr "Blue"
|
msgstr "Blue"
|
||||||
|
|
||||||
@@ -173,7 +173,7 @@ msgstr "CC'd"
|
|||||||
msgid "Character Limit"
|
msgid "Character Limit"
|
||||||
msgstr "Character Limit"
|
msgstr "Character Limit"
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:993
|
#: packages/ui/primitives/document-flow/add-fields.tsx:1026
|
||||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:788
|
#: packages/ui/primitives/template-flow/add-template-fields.tsx:788
|
||||||
msgid "Checkbox"
|
msgid "Checkbox"
|
||||||
msgstr "Checkbox"
|
msgstr "Checkbox"
|
||||||
@@ -186,7 +186,7 @@ msgstr "Checkbox values"
|
|||||||
msgid "Clear filters"
|
msgid "Clear filters"
|
||||||
msgstr "Clear filters"
|
msgstr "Clear filters"
|
||||||
|
|
||||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:310
|
#: packages/ui/primitives/signature-pad/signature-pad.tsx:411
|
||||||
msgid "Clear Signature"
|
msgid "Clear Signature"
|
||||||
msgstr "Clear Signature"
|
msgstr "Clear Signature"
|
||||||
|
|
||||||
@@ -202,7 +202,7 @@ msgstr "Close"
|
|||||||
msgid "Configure Direct Recipient"
|
msgid "Configure Direct Recipient"
|
||||||
msgstr "Configure Direct Recipient"
|
msgstr "Configure Direct Recipient"
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:566
|
#: packages/ui/primitives/document-flow/add-fields.tsx:571
|
||||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:403
|
#: packages/ui/primitives/template-flow/add-template-fields.tsx:403
|
||||||
msgid "Configure the {0} field"
|
msgid "Configure the {0} field"
|
||||||
msgstr "Configure the {0} field"
|
msgstr "Configure the {0} field"
|
||||||
@@ -219,7 +219,7 @@ msgstr "Copied to clipboard"
|
|||||||
msgid "Custom Text"
|
msgid "Custom Text"
|
||||||
msgstr "Custom Text"
|
msgstr "Custom Text"
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:889
|
#: packages/ui/primitives/document-flow/add-fields.tsx:922
|
||||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:684
|
#: packages/ui/primitives/template-flow/add-template-fields.tsx:684
|
||||||
msgid "Date"
|
msgid "Date"
|
||||||
msgstr "Date"
|
msgstr "Date"
|
||||||
@@ -251,7 +251,7 @@ msgstr "Download"
|
|||||||
msgid "Drag & drop your PDF here."
|
msgid "Drag & drop your PDF here."
|
||||||
msgstr "Drag & drop your PDF here."
|
msgstr "Drag & drop your PDF here."
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1019
|
#: packages/ui/primitives/document-flow/add-fields.tsx:1052
|
||||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:814
|
#: packages/ui/primitives/template-flow/add-template-fields.tsx:814
|
||||||
msgid "Dropdown"
|
msgid "Dropdown"
|
||||||
msgstr "Dropdown"
|
msgstr "Dropdown"
|
||||||
@@ -260,7 +260,7 @@ msgstr "Dropdown"
|
|||||||
msgid "Dropdown options"
|
msgid "Dropdown options"
|
||||||
msgstr "Dropdown options"
|
msgstr "Dropdown options"
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:837
|
#: packages/ui/primitives/document-flow/add-fields.tsx:870
|
||||||
#: packages/ui/primitives/document-flow/add-signature.tsx:272
|
#: packages/ui/primitives/document-flow/add-signature.tsx:272
|
||||||
#: packages/ui/primitives/document-flow/add-signers.tsx:500
|
#: packages/ui/primitives/document-flow/add-signers.tsx:500
|
||||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:632
|
#: packages/ui/primitives/template-flow/add-template-fields.tsx:632
|
||||||
@@ -273,7 +273,7 @@ msgstr "Email"
|
|||||||
msgid "Email Options"
|
msgid "Email Options"
|
||||||
msgstr "Email Options"
|
msgstr "Email Options"
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1082
|
#: packages/ui/primitives/document-flow/add-fields.tsx:1117
|
||||||
msgid "Empty field"
|
msgid "Empty field"
|
||||||
msgstr "Empty field"
|
msgstr "Empty field"
|
||||||
|
|
||||||
@@ -286,6 +286,10 @@ msgstr "Enable Direct Link Signing"
|
|||||||
msgid "Enable signing order"
|
msgid "Enable signing order"
|
||||||
msgstr "Enable signing order"
|
msgstr "Enable signing order"
|
||||||
|
|
||||||
|
#: packages/ui/primitives/document-flow/add-fields.tsx:790
|
||||||
|
msgid "Enable Typed Signatures"
|
||||||
|
msgstr "Enable Typed Signatures"
|
||||||
|
|
||||||
#: packages/ui/primitives/document-password-dialog.tsx:84
|
#: packages/ui/primitives/document-password-dialog.tsx:84
|
||||||
msgid "Enter password"
|
msgid "Enter password"
|
||||||
msgstr "Enter password"
|
msgstr "Enter password"
|
||||||
@@ -345,7 +349,7 @@ msgstr "Global recipient action authentication"
|
|||||||
msgid "Go Back"
|
msgid "Go Back"
|
||||||
msgstr "Go Back"
|
msgstr "Go Back"
|
||||||
|
|
||||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:297
|
#: packages/ui/primitives/signature-pad/signature-pad.tsx:398
|
||||||
msgid "Green"
|
msgid "Green"
|
||||||
msgstr "Green"
|
msgstr "Green"
|
||||||
|
|
||||||
@@ -401,7 +405,7 @@ msgstr "Message <0>(Optional)</0>"
|
|||||||
msgid "Min"
|
msgid "Min"
|
||||||
msgstr "Min"
|
msgstr "Min"
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:863
|
#: packages/ui/primitives/document-flow/add-fields.tsx:896
|
||||||
#: packages/ui/primitives/document-flow/add-signature.tsx:298
|
#: packages/ui/primitives/document-flow/add-signature.tsx:298
|
||||||
#: packages/ui/primitives/document-flow/add-signers.tsx:535
|
#: packages/ui/primitives/document-flow/add-signers.tsx:535
|
||||||
#: packages/ui/primitives/document-flow/add-signers.tsx:541
|
#: packages/ui/primitives/document-flow/add-signers.tsx:541
|
||||||
@@ -423,12 +427,12 @@ msgstr "Needs to sign"
|
|||||||
msgid "Needs to view"
|
msgid "Needs to view"
|
||||||
msgstr "Needs to view"
|
msgstr "Needs to view"
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:674
|
#: packages/ui/primitives/document-flow/add-fields.tsx:680
|
||||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:497
|
#: packages/ui/primitives/template-flow/add-template-fields.tsx:497
|
||||||
msgid "No recipient matching this description was found."
|
msgid "No recipient matching this description was found."
|
||||||
msgstr "No recipient matching this description was found."
|
msgstr "No recipient matching this description was found."
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:690
|
#: packages/ui/primitives/document-flow/add-fields.tsx:696
|
||||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:513
|
#: packages/ui/primitives/template-flow/add-template-fields.tsx:513
|
||||||
msgid "No recipients with this role"
|
msgid "No recipients with this role"
|
||||||
msgstr "No recipients with this role"
|
msgstr "No recipients with this role"
|
||||||
@@ -453,7 +457,7 @@ msgstr "No signature field found"
|
|||||||
msgid "No value found."
|
msgid "No value found."
|
||||||
msgstr "No value found."
|
msgstr "No value found."
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:941
|
#: packages/ui/primitives/document-flow/add-fields.tsx:974
|
||||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:736
|
#: packages/ui/primitives/template-flow/add-template-fields.tsx:736
|
||||||
msgid "Number"
|
msgid "Number"
|
||||||
msgstr "Number"
|
msgstr "Number"
|
||||||
@@ -488,7 +492,7 @@ msgstr "Pick a number"
|
|||||||
msgid "Placeholder"
|
msgid "Placeholder"
|
||||||
msgstr "Placeholder"
|
msgstr "Placeholder"
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:967
|
#: packages/ui/primitives/document-flow/add-fields.tsx:1000
|
||||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:762
|
#: packages/ui/primitives/template-flow/add-template-fields.tsx:762
|
||||||
msgid "Radio"
|
msgid "Radio"
|
||||||
msgstr "Radio"
|
msgstr "Radio"
|
||||||
@@ -515,7 +519,7 @@ msgstr "Receives copy"
|
|||||||
msgid "Recipient action authentication"
|
msgid "Recipient action authentication"
|
||||||
msgstr "Recipient action authentication"
|
msgstr "Recipient action authentication"
|
||||||
|
|
||||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:283
|
#: packages/ui/primitives/signature-pad/signature-pad.tsx:384
|
||||||
msgid "Red"
|
msgid "Red"
|
||||||
msgstr "Red"
|
msgstr "Red"
|
||||||
|
|
||||||
@@ -524,7 +528,7 @@ msgstr "Red"
|
|||||||
msgid "Redirect URL"
|
msgid "Redirect URL"
|
||||||
msgstr "Redirect URL"
|
msgstr "Redirect URL"
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1069
|
#: packages/ui/primitives/document-flow/add-fields.tsx:1104
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Remove"
|
msgstr "Remove"
|
||||||
|
|
||||||
@@ -595,7 +599,7 @@ msgstr "Show advanced settings"
|
|||||||
msgid "Sign"
|
msgid "Sign"
|
||||||
msgstr "Sign"
|
msgstr "Sign"
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:785
|
#: packages/ui/primitives/document-flow/add-fields.tsx:818
|
||||||
#: packages/ui/primitives/document-flow/add-signature.tsx:323
|
#: packages/ui/primitives/document-flow/add-signature.tsx:323
|
||||||
#: packages/ui/primitives/document-flow/field-icon.tsx:52
|
#: packages/ui/primitives/document-flow/field-icon.tsx:52
|
||||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:580
|
#: packages/ui/primitives/template-flow/add-template-fields.tsx:580
|
||||||
@@ -643,7 +647,7 @@ msgstr "Submit"
|
|||||||
msgid "Template title"
|
msgid "Template title"
|
||||||
msgstr "Template title"
|
msgstr "Template title"
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:915
|
#: packages/ui/primitives/document-flow/add-fields.tsx:948
|
||||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:710
|
#: packages/ui/primitives/template-flow/add-template-fields.tsx:710
|
||||||
msgid "Text"
|
msgid "Text"
|
||||||
msgstr "Text"
|
msgstr "Text"
|
||||||
@@ -704,7 +708,7 @@ msgstr "The signer's name"
|
|||||||
msgid "This can be overriden by setting the authentication requirements directly on each recipient in the next step."
|
msgid "This can be overriden by setting the authentication requirements directly on each recipient in the next step."
|
||||||
msgstr "This can be overriden by setting the authentication requirements directly on each recipient in the next step."
|
msgstr "This can be overriden by setting the authentication requirements directly on each recipient in the next step."
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:746
|
#: packages/ui/primitives/document-flow/add-fields.tsx:752
|
||||||
msgid "This document has already been sent to this recipient. You can no longer edit this recipient."
|
msgid "This document has already been sent to this recipient. You can no longer edit this recipient."
|
||||||
msgstr "This document has already been sent to this recipient. You can no longer edit this recipient."
|
msgstr "This document has already been sent to this recipient. You can no longer edit this recipient."
|
||||||
|
|
||||||
@@ -716,7 +720,7 @@ msgstr "This document is password protected. Please enter the password to view t
|
|||||||
msgid "This field cannot be modified or deleted. When you share this template's direct link or add it to your public profile, anyone who accesses it can input their name and email, and fill in the fields assigned to them."
|
msgid "This field cannot be modified or deleted. When you share this template's direct link or add it to your public profile, anyone who accesses it can input their name and email, and fill in the fields assigned to them."
|
||||||
msgstr "This field cannot be modified or deleted. When you share this template's direct link or add it to your public profile, anyone who accesses it can input their name and email, and fill in the fields assigned to them."
|
msgstr "This field cannot be modified or deleted. When you share this template's direct link or add it to your public profile, anyone who accesses it can input their name and email, and fill in the fields assigned to them."
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1050
|
#: packages/ui/primitives/document-flow/add-fields.tsx:1084
|
||||||
msgid "This recipient can no longer be modified as they have signed a field, or completed the document."
|
msgid "This recipient can no longer be modified as they have signed a field, or completed the document."
|
||||||
msgstr "This recipient can no longer be modified as they have signed a field, or completed the document."
|
msgstr "This recipient can no longer be modified as they have signed a field, or completed the document."
|
||||||
|
|
||||||
@@ -741,7 +745,7 @@ msgstr "Time Zone"
|
|||||||
msgid "Title"
|
msgid "Title"
|
||||||
msgstr "Title"
|
msgstr "Title"
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1033
|
#: packages/ui/primitives/document-flow/add-fields.tsx:1067
|
||||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:828
|
#: packages/ui/primitives/template-flow/add-template-fields.tsx:828
|
||||||
msgid "To proceed further, please set at least one value for the {0} field."
|
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."
|
msgstr "To proceed further, please set at least one value for the {0} field."
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -215,7 +215,7 @@ msgstr "Active Subscriptions"
|
|||||||
msgid "Add"
|
msgid "Add"
|
||||||
msgstr "Add"
|
msgstr "Add"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:157
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:175
|
||||||
#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:87
|
#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:87
|
||||||
msgid "Add all relevant fields for each recipient."
|
msgid "Add all relevant fields for each recipient."
|
||||||
msgstr "Add all relevant fields for each recipient."
|
msgstr "Add all relevant fields for each recipient."
|
||||||
@@ -236,7 +236,7 @@ msgstr "Add an authenticator to serve as a secondary authentication method when
|
|||||||
msgid "Add email"
|
msgid "Add email"
|
||||||
msgstr "Add email"
|
msgstr "Add email"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:156
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:174
|
||||||
#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:86
|
#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:86
|
||||||
msgid "Add Fields"
|
msgid "Add Fields"
|
||||||
msgstr "Add Fields"
|
msgstr "Add Fields"
|
||||||
@@ -258,11 +258,11 @@ msgstr "Add passkey"
|
|||||||
msgid "Add Placeholders"
|
msgid "Add Placeholders"
|
||||||
msgstr "Add Placeholders"
|
msgstr "Add Placeholders"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:151
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:169
|
||||||
msgid "Add Signers"
|
msgid "Add Signers"
|
||||||
msgstr "Add Signers"
|
msgstr "Add Signers"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:161
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:179
|
||||||
msgid "Add Subject"
|
msgid "Add Subject"
|
||||||
msgstr "Add Subject"
|
msgstr "Add Subject"
|
||||||
|
|
||||||
@@ -278,7 +278,7 @@ msgstr "Add team email"
|
|||||||
#~ msgid "Add Text"
|
#~ msgid "Add Text"
|
||||||
#~ msgstr "Add Text"
|
#~ msgstr "Add Text"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:152
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:170
|
||||||
msgid "Add the people who will sign the document."
|
msgid "Add the people who will sign the document."
|
||||||
msgstr "Add the people who will sign the document."
|
msgstr "Add the people who will sign the document."
|
||||||
|
|
||||||
@@ -286,7 +286,7 @@ msgstr "Add the people who will sign the document."
|
|||||||
msgid "Add the recipients to create the document with"
|
msgid "Add the recipients to create the document with"
|
||||||
msgstr "Add the recipients to create the document with"
|
msgstr "Add the recipients to create the document with"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:162
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:180
|
||||||
msgid "Add the subject and message you wish to send to signers."
|
msgid "Add the subject and message you wish to send to signers."
|
||||||
msgstr "Add the subject and message you wish to send to signers."
|
msgstr "Add the subject and message you wish to send to signers."
|
||||||
|
|
||||||
@@ -365,13 +365,13 @@ msgstr "An email requesting the transfer of this team has been sent."
|
|||||||
msgid "An error occurred"
|
msgid "An error occurred"
|
||||||
msgstr "An error occurred"
|
msgstr "An error occurred"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:248
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:266
|
||||||
#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:197
|
#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:197
|
||||||
#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:231
|
#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:231
|
||||||
msgid "An error occurred while adding signers."
|
msgid "An error occurred while adding signers."
|
||||||
msgstr "An error occurred while adding signers."
|
msgstr "An error occurred while adding signers."
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:278
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:301
|
||||||
msgid "An error occurred while adding the fields."
|
msgid "An error occurred while adding the fields."
|
||||||
msgstr "An error occurred while adding the fields."
|
msgstr "An error occurred while adding the fields."
|
||||||
|
|
||||||
@@ -421,7 +421,7 @@ msgstr "An error occurred while moving the template."
|
|||||||
#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:148
|
#: 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]/number-field.tsx:195
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:129
|
#: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:129
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:175
|
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:173
|
||||||
msgid "An error occurred while removing the signature."
|
msgid "An error occurred while removing the signature."
|
||||||
msgstr "An error occurred while removing the signature."
|
msgstr "An error occurred while removing the signature."
|
||||||
|
|
||||||
@@ -429,7 +429,7 @@ msgstr "An error occurred while removing the signature."
|
|||||||
msgid "An error occurred while removing the text."
|
msgid "An error occurred while removing the text."
|
||||||
msgstr "An error occurred while removing the text."
|
msgstr "An error occurred while removing the text."
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:309
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:332
|
||||||
msgid "An error occurred while sending the document."
|
msgid "An error occurred while sending the document."
|
||||||
msgstr "An error occurred while sending the document."
|
msgstr "An error occurred while sending the document."
|
||||||
|
|
||||||
@@ -444,7 +444,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]/name-field.tsx:122
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:150
|
#: 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]/radio-field.tsx:102
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:149
|
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:147
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:168
|
#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:168
|
||||||
msgid "An error occurred while signing the document."
|
msgid "An error occurred while signing the document."
|
||||||
msgstr "An error occurred while signing the document."
|
msgstr "An error occurred while signing the document."
|
||||||
@@ -453,7 +453,7 @@ msgstr "An error occurred while signing the document."
|
|||||||
msgid "An error occurred while trying to create a checkout session."
|
msgid "An error occurred while trying to create a checkout session."
|
||||||
msgstr "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:214
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:232
|
||||||
#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:166
|
#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:166
|
||||||
msgid "An error occurred while updating the document settings."
|
msgid "An error occurred while updating the document settings."
|
||||||
msgstr "An error occurred while updating the document settings."
|
msgstr "An error occurred while updating the document settings."
|
||||||
@@ -660,11 +660,11 @@ msgstr "By enabling 2FA, you will be required to enter a code from your authenti
|
|||||||
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-account.tsx:71
|
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-account.tsx:71
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:164
|
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:164
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:189
|
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:189
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/form.tsx:150
|
#: apps/web/src/app/(signing)/sign/[token]/form.tsx:151
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:215
|
#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:215
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:327
|
#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:327
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:113
|
#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:113
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:250
|
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:248
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:333
|
#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:333
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:121
|
#: 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
|
#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:176
|
||||||
@@ -747,7 +747,7 @@ msgid "Click to copy signing link for sending to recipient"
|
|||||||
msgstr "Click to copy signing link for sending to recipient"
|
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/(recipient)/d/[token]/sign-direct-template.tsx:175
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/form.tsx:114
|
#: apps/web/src/app/(signing)/sign/[token]/form.tsx:115
|
||||||
#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:435
|
#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:435
|
||||||
#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:314
|
#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:314
|
||||||
msgid "Click to insert field"
|
msgid "Click to insert field"
|
||||||
@@ -797,7 +797,7 @@ msgstr "Completed documents"
|
|||||||
msgid "Completed Documents"
|
msgid "Completed Documents"
|
||||||
msgstr "Completed Documents"
|
msgstr "Completed Documents"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:147
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:165
|
||||||
msgid "Configure general settings for the document."
|
msgid "Configure general settings for the document."
|
||||||
msgstr "Configure general settings for the document."
|
msgstr "Configure general settings for the document."
|
||||||
|
|
||||||
@@ -1269,7 +1269,7 @@ msgstr "Document re-sent"
|
|||||||
msgid "Document resealed"
|
msgid "Document resealed"
|
||||||
msgstr "Document resealed"
|
msgstr "Document resealed"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:298
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:321
|
||||||
msgid "Document sent"
|
msgid "Document sent"
|
||||||
msgstr "Document sent"
|
msgstr "Document sent"
|
||||||
|
|
||||||
@@ -1364,6 +1364,10 @@ msgstr "Draft documents"
|
|||||||
msgid "Drafted Documents"
|
msgid "Drafted Documents"
|
||||||
msgstr "Drafted Documents"
|
msgstr "Drafted Documents"
|
||||||
|
|
||||||
|
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:245
|
||||||
|
#~ msgid "Draw"
|
||||||
|
#~ msgstr "Draw"
|
||||||
|
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/layout-billing-banner.tsx:121
|
#: apps/web/src/app/(teams)/t/[teamUrl]/layout-billing-banner.tsx:121
|
||||||
msgid "Due to an unpaid invoice, your team has been restricted. Please settle the payment to restore full access to your team."
|
msgid "Due to an unpaid invoice, your team has been restricted. Please settle the payment to restore full access to your team."
|
||||||
msgstr "Due to an unpaid invoice, your team has been restricted. Please settle the payment to restore full access to your team."
|
msgstr "Due to an unpaid invoice, your team has been restricted. Please settle the payment to restore full access to your team."
|
||||||
@@ -1486,10 +1490,10 @@ msgstr "Enter your text here"
|
|||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/admin/documents/[id]/admin-actions.tsx:41
|
#: apps/web/src/app/(dashboard)/admin/documents/[id]/admin-actions.tsx:41
|
||||||
#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:78
|
#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:78
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:213
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:231
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:247
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:265
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:277
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:300
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:308
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:331
|
||||||
#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:57
|
#: 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:106
|
||||||
#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:112
|
#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:112
|
||||||
@@ -1514,8 +1518,8 @@ msgstr "Enter your text here"
|
|||||||
#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:194
|
#: 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:101
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:128
|
#: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:128
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:148
|
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:146
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:174
|
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:172
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:167
|
#: 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/app/(signing)/sign/[token]/text-field.tsx:195
|
||||||
#: apps/web/src/components/(dashboard)/layout/verify-email-banner.tsx:54
|
#: apps/web/src/components/(dashboard)/layout/verify-email-banner.tsx:54
|
||||||
@@ -1592,7 +1596,7 @@ msgstr "Forgot your password?"
|
|||||||
msgid "Full Name"
|
msgid "Full Name"
|
||||||
msgstr "Full Name"
|
msgstr "Full Name"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:146
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:164
|
||||||
#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:76
|
#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:76
|
||||||
#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:60
|
#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:60
|
||||||
#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:43
|
#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:43
|
||||||
@@ -2289,7 +2293,7 @@ msgstr "Please contact support if you would like to revert this action."
|
|||||||
msgid "Please enter a meaningful name for your token. This will help you identify it later."
|
msgid "Please enter a meaningful name for your token. This will help you identify it later."
|
||||||
msgstr "Please enter a meaningful name for your token. This will help you identify it later."
|
msgstr "Please enter a meaningful name for your token. This will help you identify it later."
|
||||||
|
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/form.tsx:134
|
#: apps/web/src/app/(signing)/sign/[token]/form.tsx:135
|
||||||
msgid "Please mark as viewed to complete"
|
msgid "Please mark as viewed to complete"
|
||||||
msgstr "Please mark as viewed to complete"
|
msgstr "Please mark as viewed to complete"
|
||||||
|
|
||||||
@@ -2725,13 +2729,13 @@ msgstr "Show templates in your team public profile for your audience to sign and
|
|||||||
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:182
|
#: 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]/name-field.tsx:224
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:124
|
#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:124
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:259
|
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:256
|
||||||
#: apps/web/src/components/ui/user-profile-skeleton.tsx:75
|
#: apps/web/src/components/ui/user-profile-skeleton.tsx:75
|
||||||
#: apps/web/src/components/ui/user-profile-timur.tsx:81
|
#: apps/web/src/components/ui/user-profile-timur.tsx:81
|
||||||
msgid "Sign"
|
msgid "Sign"
|
||||||
msgstr "Sign"
|
msgstr "Sign"
|
||||||
|
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:219
|
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:217
|
||||||
msgid "Sign as {0} <0>({1})</0>"
|
msgid "Sign as {0} <0>({1})</0>"
|
||||||
msgstr "Sign as {0} <0>({1})</0>"
|
msgstr "Sign as {0} <0>({1})</0>"
|
||||||
|
|
||||||
@@ -2797,8 +2801,8 @@ msgstr "Sign Up with OIDC"
|
|||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:88
|
#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:88
|
||||||
#: apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx:338
|
#: apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx:338
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:197
|
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:195
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:227
|
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:225
|
||||||
#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:391
|
#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:391
|
||||||
#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:270
|
#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:270
|
||||||
#: apps/web/src/components/forms/profile.tsx:132
|
#: apps/web/src/components/forms/profile.tsx:132
|
||||||
@@ -3547,6 +3551,10 @@ msgstr "Type 'delete' to confirm"
|
|||||||
msgid "Type a command or search..."
|
msgid "Type a command or search..."
|
||||||
msgstr "Type a command or search..."
|
msgstr "Type a command or search..."
|
||||||
|
|
||||||
|
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:275
|
||||||
|
#~ msgid "Typed Signature"
|
||||||
|
#~ msgstr "Typed Signature"
|
||||||
|
|
||||||
#: apps/web/src/app/(unauthenticated)/verify-email/page.tsx:26
|
#: apps/web/src/app/(unauthenticated)/verify-email/page.tsx:26
|
||||||
msgid "Uh oh! Looks like you're missing a token"
|
msgid "Uh oh! Looks like you're missing a token"
|
||||||
msgstr "Uh oh! Looks like you're missing a token"
|
msgstr "Uh oh! Looks like you're missing a token"
|
||||||
@@ -4377,7 +4385,7 @@ msgstr "Your document has been created from the template successfully."
|
|||||||
msgid "Your document has been re-sent successfully."
|
msgid "Your document has been re-sent successfully."
|
||||||
msgstr "Your document has been re-sent successfully."
|
msgstr "Your document has been re-sent successfully."
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:299
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:322
|
||||||
msgid "Your document has been sent successfully."
|
msgid "Your document has been sent successfully."
|
||||||
msgstr "Your document has been sent successfully."
|
msgstr "Your document has been sent successfully."
|
||||||
|
|
||||||
|
|||||||
@@ -115,7 +115,7 @@ msgstr "Administrateur"
|
|||||||
msgid "Advanced Options"
|
msgid "Advanced Options"
|
||||||
msgstr "Options avancées"
|
msgstr "Options avancées"
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:565
|
#: packages/ui/primitives/document-flow/add-fields.tsx:570
|
||||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:402
|
#: packages/ui/primitives/template-flow/add-template-fields.tsx:402
|
||||||
msgid "Advanced settings"
|
msgid "Advanced settings"
|
||||||
msgstr "Paramètres avancés"
|
msgstr "Paramètres avancés"
|
||||||
@@ -140,11 +140,11 @@ msgstr "Approuveur"
|
|||||||
msgid "Approving"
|
msgid "Approving"
|
||||||
msgstr "En attente d'approbation"
|
msgstr "En attente d'approbation"
|
||||||
|
|
||||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:276
|
#: packages/ui/primitives/signature-pad/signature-pad.tsx:377
|
||||||
msgid "Black"
|
msgid "Black"
|
||||||
msgstr "Noir"
|
msgstr "Noir"
|
||||||
|
|
||||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:290
|
#: packages/ui/primitives/signature-pad/signature-pad.tsx:391
|
||||||
msgid "Blue"
|
msgid "Blue"
|
||||||
msgstr "Bleu"
|
msgstr "Bleu"
|
||||||
|
|
||||||
@@ -178,7 +178,7 @@ msgstr "CC'd"
|
|||||||
msgid "Character Limit"
|
msgid "Character Limit"
|
||||||
msgstr "Limite de caractères"
|
msgstr "Limite de caractères"
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:993
|
#: packages/ui/primitives/document-flow/add-fields.tsx:1026
|
||||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:788
|
#: packages/ui/primitives/template-flow/add-template-fields.tsx:788
|
||||||
msgid "Checkbox"
|
msgid "Checkbox"
|
||||||
msgstr "Case à cocher"
|
msgstr "Case à cocher"
|
||||||
@@ -191,7 +191,7 @@ msgstr "Valeurs de case à cocher"
|
|||||||
msgid "Clear filters"
|
msgid "Clear filters"
|
||||||
msgstr "Effacer les filtres"
|
msgstr "Effacer les filtres"
|
||||||
|
|
||||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:310
|
#: packages/ui/primitives/signature-pad/signature-pad.tsx:411
|
||||||
msgid "Clear Signature"
|
msgid "Clear Signature"
|
||||||
msgstr "Effacer la signature"
|
msgstr "Effacer la signature"
|
||||||
|
|
||||||
@@ -207,7 +207,7 @@ msgstr "Fermer"
|
|||||||
msgid "Configure Direct Recipient"
|
msgid "Configure Direct Recipient"
|
||||||
msgstr "Configurer le destinataire direct"
|
msgstr "Configurer le destinataire direct"
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:566
|
#: packages/ui/primitives/document-flow/add-fields.tsx:571
|
||||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:403
|
#: packages/ui/primitives/template-flow/add-template-fields.tsx:403
|
||||||
msgid "Configure the {0} field"
|
msgid "Configure the {0} field"
|
||||||
msgstr "Configurer le champ {0}"
|
msgstr "Configurer le champ {0}"
|
||||||
@@ -224,7 +224,7 @@ msgstr "Copié dans le presse-papiers"
|
|||||||
msgid "Custom Text"
|
msgid "Custom Text"
|
||||||
msgstr "Texte personnalisé"
|
msgstr "Texte personnalisé"
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:889
|
#: packages/ui/primitives/document-flow/add-fields.tsx:922
|
||||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:684
|
#: packages/ui/primitives/template-flow/add-template-fields.tsx:684
|
||||||
msgid "Date"
|
msgid "Date"
|
||||||
msgstr "Date"
|
msgstr "Date"
|
||||||
@@ -256,7 +256,7 @@ msgstr "Télécharger"
|
|||||||
msgid "Drag & drop your PDF here."
|
msgid "Drag & drop your PDF here."
|
||||||
msgstr "Faites glisser et déposez votre PDF ici."
|
msgstr "Faites glisser et déposez votre PDF ici."
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1019
|
#: packages/ui/primitives/document-flow/add-fields.tsx:1052
|
||||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:814
|
#: packages/ui/primitives/template-flow/add-template-fields.tsx:814
|
||||||
msgid "Dropdown"
|
msgid "Dropdown"
|
||||||
msgstr "Liste déroulante"
|
msgstr "Liste déroulante"
|
||||||
@@ -265,7 +265,7 @@ msgstr "Liste déroulante"
|
|||||||
msgid "Dropdown options"
|
msgid "Dropdown options"
|
||||||
msgstr "Options de liste déroulante"
|
msgstr "Options de liste déroulante"
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:837
|
#: packages/ui/primitives/document-flow/add-fields.tsx:870
|
||||||
#: packages/ui/primitives/document-flow/add-signature.tsx:272
|
#: packages/ui/primitives/document-flow/add-signature.tsx:272
|
||||||
#: packages/ui/primitives/document-flow/add-signers.tsx:500
|
#: packages/ui/primitives/document-flow/add-signers.tsx:500
|
||||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:632
|
#: packages/ui/primitives/template-flow/add-template-fields.tsx:632
|
||||||
@@ -278,7 +278,7 @@ msgstr "Email"
|
|||||||
msgid "Email Options"
|
msgid "Email Options"
|
||||||
msgstr "Options d'email"
|
msgstr "Options d'email"
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1082
|
#: packages/ui/primitives/document-flow/add-fields.tsx:1117
|
||||||
msgid "Empty field"
|
msgid "Empty field"
|
||||||
msgstr "Champ vide"
|
msgstr "Champ vide"
|
||||||
|
|
||||||
@@ -291,6 +291,10 @@ msgstr "Activer la signature de lien direct"
|
|||||||
msgid "Enable signing order"
|
msgid "Enable signing order"
|
||||||
msgstr "Activer l'ordre de signature"
|
msgstr "Activer l'ordre de signature"
|
||||||
|
|
||||||
|
#: packages/ui/primitives/document-flow/add-fields.tsx:790
|
||||||
|
msgid "Enable Typed Signatures"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: packages/ui/primitives/document-password-dialog.tsx:84
|
#: packages/ui/primitives/document-password-dialog.tsx:84
|
||||||
msgid "Enter password"
|
msgid "Enter password"
|
||||||
msgstr "Entrez le mot de passe"
|
msgstr "Entrez le mot de passe"
|
||||||
@@ -350,7 +354,7 @@ msgstr "Authentification d'action de destinataire globale"
|
|||||||
msgid "Go Back"
|
msgid "Go Back"
|
||||||
msgstr "Retourner"
|
msgstr "Retourner"
|
||||||
|
|
||||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:297
|
#: packages/ui/primitives/signature-pad/signature-pad.tsx:398
|
||||||
msgid "Green"
|
msgid "Green"
|
||||||
msgstr "Vert"
|
msgstr "Vert"
|
||||||
|
|
||||||
@@ -406,7 +410,7 @@ msgstr "Message <0>(Optionnel)</0>"
|
|||||||
msgid "Min"
|
msgid "Min"
|
||||||
msgstr "Min"
|
msgstr "Min"
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:863
|
#: packages/ui/primitives/document-flow/add-fields.tsx:896
|
||||||
#: packages/ui/primitives/document-flow/add-signature.tsx:298
|
#: packages/ui/primitives/document-flow/add-signature.tsx:298
|
||||||
#: packages/ui/primitives/document-flow/add-signers.tsx:535
|
#: packages/ui/primitives/document-flow/add-signers.tsx:535
|
||||||
#: packages/ui/primitives/document-flow/add-signers.tsx:541
|
#: packages/ui/primitives/document-flow/add-signers.tsx:541
|
||||||
@@ -428,12 +432,12 @@ msgstr "Nécessite une signature"
|
|||||||
msgid "Needs to view"
|
msgid "Needs to view"
|
||||||
msgstr "Nécessite une visualisation"
|
msgstr "Nécessite une visualisation"
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:674
|
#: packages/ui/primitives/document-flow/add-fields.tsx:680
|
||||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:497
|
#: packages/ui/primitives/template-flow/add-template-fields.tsx:497
|
||||||
msgid "No recipient matching this description was found."
|
msgid "No recipient matching this description was found."
|
||||||
msgstr "Aucun destinataire correspondant à cette description n'a été trouvé."
|
msgstr "Aucun destinataire correspondant à cette description n'a été trouvé."
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:690
|
#: packages/ui/primitives/document-flow/add-fields.tsx:696
|
||||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:513
|
#: packages/ui/primitives/template-flow/add-template-fields.tsx:513
|
||||||
msgid "No recipients with this role"
|
msgid "No recipients with this role"
|
||||||
msgstr "Aucun destinataire avec ce rôle"
|
msgstr "Aucun destinataire avec ce rôle"
|
||||||
@@ -458,7 +462,7 @@ msgstr "Aucun champ de signature trouvé"
|
|||||||
msgid "No value found."
|
msgid "No value found."
|
||||||
msgstr "Aucune valeur trouvée."
|
msgstr "Aucune valeur trouvée."
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:941
|
#: packages/ui/primitives/document-flow/add-fields.tsx:974
|
||||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:736
|
#: packages/ui/primitives/template-flow/add-template-fields.tsx:736
|
||||||
msgid "Number"
|
msgid "Number"
|
||||||
msgstr "Numéro"
|
msgstr "Numéro"
|
||||||
@@ -493,7 +497,7 @@ msgstr "Choisissez un numéro"
|
|||||||
msgid "Placeholder"
|
msgid "Placeholder"
|
||||||
msgstr "Espace réservé"
|
msgstr "Espace réservé"
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:967
|
#: packages/ui/primitives/document-flow/add-fields.tsx:1000
|
||||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:762
|
#: packages/ui/primitives/template-flow/add-template-fields.tsx:762
|
||||||
msgid "Radio"
|
msgid "Radio"
|
||||||
msgstr "Radio"
|
msgstr "Radio"
|
||||||
@@ -520,7 +524,7 @@ msgstr "Recevoir une copie"
|
|||||||
msgid "Recipient action authentication"
|
msgid "Recipient action authentication"
|
||||||
msgstr "Authentification d'action de destinataire"
|
msgstr "Authentification d'action de destinataire"
|
||||||
|
|
||||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:283
|
#: packages/ui/primitives/signature-pad/signature-pad.tsx:384
|
||||||
msgid "Red"
|
msgid "Red"
|
||||||
msgstr "Rouge"
|
msgstr "Rouge"
|
||||||
|
|
||||||
@@ -529,7 +533,7 @@ msgstr "Rouge"
|
|||||||
msgid "Redirect URL"
|
msgid "Redirect URL"
|
||||||
msgstr "URL de redirection"
|
msgstr "URL de redirection"
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1069
|
#: packages/ui/primitives/document-flow/add-fields.tsx:1104
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Retirer"
|
msgstr "Retirer"
|
||||||
|
|
||||||
@@ -600,7 +604,7 @@ msgstr "Afficher les paramètres avancés"
|
|||||||
msgid "Sign"
|
msgid "Sign"
|
||||||
msgstr "Signer"
|
msgstr "Signer"
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:785
|
#: packages/ui/primitives/document-flow/add-fields.tsx:818
|
||||||
#: packages/ui/primitives/document-flow/add-signature.tsx:323
|
#: packages/ui/primitives/document-flow/add-signature.tsx:323
|
||||||
#: packages/ui/primitives/document-flow/field-icon.tsx:52
|
#: packages/ui/primitives/document-flow/field-icon.tsx:52
|
||||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:580
|
#: packages/ui/primitives/template-flow/add-template-fields.tsx:580
|
||||||
@@ -648,7 +652,7 @@ msgstr "Soumettre"
|
|||||||
msgid "Template title"
|
msgid "Template title"
|
||||||
msgstr "Titre du modèle"
|
msgstr "Titre du modèle"
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:915
|
#: packages/ui/primitives/document-flow/add-fields.tsx:948
|
||||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:710
|
#: packages/ui/primitives/template-flow/add-template-fields.tsx:710
|
||||||
msgid "Text"
|
msgid "Text"
|
||||||
msgstr "Texte"
|
msgstr "Texte"
|
||||||
@@ -709,7 +713,7 @@ msgstr "Le nom du signataire"
|
|||||||
msgid "This can be overriden by setting the authentication requirements directly on each recipient in the next step."
|
msgid "This can be overriden by setting the authentication requirements directly on each recipient in the next step."
|
||||||
msgstr "Cela peut être remplacé par le paramétrage direct des exigences d'authentification pour chaque destinataire à l'étape suivante."
|
msgstr "Cela peut être remplacé par le paramétrage direct des exigences d'authentification pour chaque destinataire à l'étape suivante."
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:746
|
#: packages/ui/primitives/document-flow/add-fields.tsx:752
|
||||||
msgid "This document has already been sent to this recipient. You can no longer edit this recipient."
|
msgid "This document has already been sent to this recipient. You can no longer edit this recipient."
|
||||||
msgstr "Ce document a déjà été envoyé à ce destinataire. Vous ne pouvez plus modifier ce destinataire."
|
msgstr "Ce document a déjà été envoyé à ce destinataire. Vous ne pouvez plus modifier ce destinataire."
|
||||||
|
|
||||||
@@ -721,7 +725,7 @@ msgstr "Ce document est protégé par mot de passe. Veuillez entrer le mot de pa
|
|||||||
msgid "This field cannot be modified or deleted. When you share this template's direct link or add it to your public profile, anyone who accesses it can input their name and email, and fill in the fields assigned to them."
|
msgid "This field cannot be modified or deleted. When you share this template's direct link or add it to your public profile, anyone who accesses it can input their name and email, and fill in the fields assigned to them."
|
||||||
msgstr "Ce champ ne peut pas être modifié ou supprimé. Lorsque vous partagez le lien direct de ce modèle ou l'ajoutez à votre profil public, toute personne qui y accède peut saisir son nom et son email, et remplir les champs qui lui sont attribués."
|
msgstr "Ce champ ne peut pas être modifié ou supprimé. Lorsque vous partagez le lien direct de ce modèle ou l'ajoutez à votre profil public, toute personne qui y accède peut saisir son nom et son email, et remplir les champs qui lui sont attribués."
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1050
|
#: packages/ui/primitives/document-flow/add-fields.tsx:1084
|
||||||
msgid "This recipient can no longer be modified as they have signed a field, or completed the document."
|
msgid "This recipient can no longer be modified as they have signed a field, or completed the document."
|
||||||
msgstr "Ce destinataire ne peut plus être modifié car il a signé un champ ou complété le document."
|
msgstr "Ce destinataire ne peut plus être modifié car il a signé un champ ou complété le document."
|
||||||
|
|
||||||
@@ -746,7 +750,7 @@ msgstr "Fuseau horaire"
|
|||||||
msgid "Title"
|
msgid "Title"
|
||||||
msgstr "Titre"
|
msgstr "Titre"
|
||||||
|
|
||||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1033
|
#: packages/ui/primitives/document-flow/add-fields.tsx:1067
|
||||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:828
|
#: packages/ui/primitives/template-flow/add-template-fields.tsx:828
|
||||||
msgid "To proceed further, please set at least one value for the {0} field."
|
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}."
|
msgstr "Pour continuer, veuillez définir au moins une valeur pour le champ {0}."
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -220,7 +220,7 @@ msgstr "Abonnements actifs"
|
|||||||
msgid "Add"
|
msgid "Add"
|
||||||
msgstr "Ajouter"
|
msgstr "Ajouter"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:157
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:175
|
||||||
#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:87
|
#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:87
|
||||||
msgid "Add all relevant fields for each recipient."
|
msgid "Add all relevant fields for each recipient."
|
||||||
msgstr "Ajouter tous les champs pertinents pour chaque destinataire."
|
msgstr "Ajouter tous les champs pertinents pour chaque destinataire."
|
||||||
@@ -241,7 +241,7 @@ msgstr "Ajouter un authentificateur pour servir de méthode d'authentification s
|
|||||||
msgid "Add email"
|
msgid "Add email"
|
||||||
msgstr "Ajouter un e-mail"
|
msgstr "Ajouter un e-mail"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:156
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:174
|
||||||
#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:86
|
#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:86
|
||||||
msgid "Add Fields"
|
msgid "Add Fields"
|
||||||
msgstr "Ajouter des champs"
|
msgstr "Ajouter des champs"
|
||||||
@@ -263,11 +263,11 @@ msgstr "Ajouter une clé de passe"
|
|||||||
msgid "Add Placeholders"
|
msgid "Add Placeholders"
|
||||||
msgstr "Ajouter des espaces réservés"
|
msgstr "Ajouter des espaces réservés"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:151
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:169
|
||||||
msgid "Add Signers"
|
msgid "Add Signers"
|
||||||
msgstr "Ajouter des signataires"
|
msgstr "Ajouter des signataires"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:161
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:179
|
||||||
msgid "Add Subject"
|
msgid "Add Subject"
|
||||||
msgstr "Ajouter un sujet"
|
msgstr "Ajouter un sujet"
|
||||||
|
|
||||||
@@ -283,7 +283,7 @@ msgstr "Ajouter un e-mail d'équipe"
|
|||||||
#~ msgid "Add Text"
|
#~ msgid "Add Text"
|
||||||
#~ msgstr "Add Text"
|
#~ msgstr "Add Text"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:152
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:170
|
||||||
msgid "Add the people who will sign the document."
|
msgid "Add the people who will sign the document."
|
||||||
msgstr "Ajouter les personnes qui signeront le document."
|
msgstr "Ajouter les personnes qui signeront le document."
|
||||||
|
|
||||||
@@ -291,7 +291,7 @@ msgstr "Ajouter les personnes qui signeront le document."
|
|||||||
msgid "Add the recipients to create the document with"
|
msgid "Add the recipients to create the document with"
|
||||||
msgstr "Ajouter les destinataires pour créer le document avec"
|
msgstr "Ajouter les destinataires pour créer le document avec"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:162
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:180
|
||||||
msgid "Add the subject and message you wish to send to signers."
|
msgid "Add the subject and message you wish to send to signers."
|
||||||
msgstr "Ajouter le sujet et le message que vous souhaitez envoyer aux signataires."
|
msgstr "Ajouter le sujet et le message que vous souhaitez envoyer aux signataires."
|
||||||
|
|
||||||
@@ -370,13 +370,13 @@ msgstr "Un e-mail demandant le transfert de cette équipe a été envoyé."
|
|||||||
msgid "An error occurred"
|
msgid "An error occurred"
|
||||||
msgstr "Une erreur est survenue"
|
msgstr "Une erreur est survenue"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:248
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:266
|
||||||
#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:197
|
#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:197
|
||||||
#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:231
|
#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:231
|
||||||
msgid "An error occurred while adding signers."
|
msgid "An error occurred while adding signers."
|
||||||
msgstr "Une erreur est survenue lors de l'ajout de signataires."
|
msgstr "Une erreur est survenue lors de l'ajout de signataires."
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:278
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:301
|
||||||
msgid "An error occurred while adding the fields."
|
msgid "An error occurred while adding the fields."
|
||||||
msgstr "Une erreur est survenue lors de l'ajout des champs."
|
msgstr "Une erreur est survenue lors de l'ajout des champs."
|
||||||
|
|
||||||
@@ -426,7 +426,7 @@ msgstr "Une erreur est survenue lors du déplacement du modèle."
|
|||||||
#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:148
|
#: 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]/number-field.tsx:195
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:129
|
#: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:129
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:175
|
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:173
|
||||||
msgid "An error occurred while removing the signature."
|
msgid "An error occurred while removing the signature."
|
||||||
msgstr "Une erreur est survenue lors de la suppression de la signature."
|
msgstr "Une erreur est survenue lors de la suppression de la signature."
|
||||||
|
|
||||||
@@ -434,7 +434,7 @@ msgstr "Une erreur est survenue lors de la suppression de la signature."
|
|||||||
msgid "An error occurred while removing the text."
|
msgid "An error occurred while removing the text."
|
||||||
msgstr "Une erreur est survenue lors de la suppression du texte."
|
msgstr "Une erreur est survenue lors de la suppression du texte."
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:309
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:332
|
||||||
msgid "An error occurred while sending the document."
|
msgid "An error occurred while sending the document."
|
||||||
msgstr "Une erreur est survenue lors de l'envoi du document."
|
msgstr "Une erreur est survenue lors de l'envoi du document."
|
||||||
|
|
||||||
@@ -449,7 +449,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]/name-field.tsx:122
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:150
|
#: 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]/radio-field.tsx:102
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:149
|
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:147
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:168
|
#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:168
|
||||||
msgid "An error occurred while signing the document."
|
msgid "An error occurred while signing the document."
|
||||||
msgstr "Une erreur est survenue lors de la signature du document."
|
msgstr "Une erreur est survenue lors de la signature du document."
|
||||||
@@ -458,7 +458,7 @@ msgstr "Une erreur est survenue lors de la signature du document."
|
|||||||
msgid "An error occurred while trying to create a checkout session."
|
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."
|
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:214
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:232
|
||||||
#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:166
|
#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:166
|
||||||
msgid "An error occurred while updating the document settings."
|
msgid "An error occurred while updating the document settings."
|
||||||
msgstr "Une erreur est survenue lors de la mise à jour des paramètres du document."
|
msgstr "Une erreur est survenue lors de la mise à jour des paramètres du document."
|
||||||
@@ -665,11 +665,11 @@ msgstr "En activant l'authentification à deux facteurs (2FA), vous devrez entre
|
|||||||
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-account.tsx:71
|
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-account.tsx:71
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:164
|
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:164
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:189
|
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:189
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/form.tsx:150
|
#: apps/web/src/app/(signing)/sign/[token]/form.tsx:151
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:215
|
#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:215
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:327
|
#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:327
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:113
|
#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:113
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:250
|
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:248
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:333
|
#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:333
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:121
|
#: 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
|
#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:176
|
||||||
@@ -752,7 +752,7 @@ msgid "Click to copy signing link for sending to recipient"
|
|||||||
msgstr "Cliquez pour copier le lien de signature à envoyer au destinataire"
|
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/(recipient)/d/[token]/sign-direct-template.tsx:175
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/form.tsx:114
|
#: apps/web/src/app/(signing)/sign/[token]/form.tsx:115
|
||||||
#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:435
|
#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:435
|
||||||
#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:314
|
#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:314
|
||||||
msgid "Click to insert field"
|
msgid "Click to insert field"
|
||||||
@@ -802,7 +802,7 @@ msgstr "Documents complétés"
|
|||||||
msgid "Completed Documents"
|
msgid "Completed Documents"
|
||||||
msgstr "Documents Complétés"
|
msgstr "Documents Complétés"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:147
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:165
|
||||||
msgid "Configure general settings for the document."
|
msgid "Configure general settings for the document."
|
||||||
msgstr "Configurer les paramètres généraux pour le document."
|
msgstr "Configurer les paramètres généraux pour le document."
|
||||||
|
|
||||||
@@ -1274,7 +1274,7 @@ msgstr "Document renvoyé"
|
|||||||
msgid "Document resealed"
|
msgid "Document resealed"
|
||||||
msgstr "Document resealé"
|
msgstr "Document resealé"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:298
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:321
|
||||||
msgid "Document sent"
|
msgid "Document sent"
|
||||||
msgstr "Document envoyé"
|
msgstr "Document envoyé"
|
||||||
|
|
||||||
@@ -1491,10 +1491,10 @@ msgstr "Entrez votre texte ici"
|
|||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/admin/documents/[id]/admin-actions.tsx:41
|
#: apps/web/src/app/(dashboard)/admin/documents/[id]/admin-actions.tsx:41
|
||||||
#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:78
|
#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:78
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:213
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:231
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:247
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:265
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:277
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:300
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:308
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:331
|
||||||
#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:57
|
#: 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:106
|
||||||
#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:112
|
#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:112
|
||||||
@@ -1519,8 +1519,8 @@ msgstr "Entrez votre texte ici"
|
|||||||
#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:194
|
#: 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:101
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:128
|
#: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:128
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:148
|
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:146
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:174
|
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:172
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:167
|
#: 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/app/(signing)/sign/[token]/text-field.tsx:195
|
||||||
#: apps/web/src/components/(dashboard)/layout/verify-email-banner.tsx:54
|
#: apps/web/src/components/(dashboard)/layout/verify-email-banner.tsx:54
|
||||||
@@ -1597,7 +1597,7 @@ msgstr "Mot de passe oublié ?"
|
|||||||
msgid "Full Name"
|
msgid "Full Name"
|
||||||
msgstr "Nom complet"
|
msgstr "Nom complet"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:146
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:164
|
||||||
#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:76
|
#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:76
|
||||||
#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:60
|
#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:60
|
||||||
#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:43
|
#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:43
|
||||||
@@ -2294,7 +2294,7 @@ msgstr "Veuillez contacter le support si vous souhaitez annuler cette action."
|
|||||||
msgid "Please enter a meaningful name for your token. This will help you identify it later."
|
msgid "Please enter a meaningful name for your token. This will help you identify it later."
|
||||||
msgstr "Veuillez entrer un nom significatif pour votre jeton. Cela vous aidera à l'identifier plus tard."
|
msgstr "Veuillez entrer un nom significatif pour votre jeton. Cela vous aidera à l'identifier plus tard."
|
||||||
|
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/form.tsx:134
|
#: apps/web/src/app/(signing)/sign/[token]/form.tsx:135
|
||||||
msgid "Please mark as viewed to complete"
|
msgid "Please mark as viewed to complete"
|
||||||
msgstr "Veuillez marquer comme vu pour terminer"
|
msgstr "Veuillez marquer comme vu pour terminer"
|
||||||
|
|
||||||
@@ -2730,13 +2730,13 @@ msgstr "Afficher des modèles dans le profil public de votre équipe pour que vo
|
|||||||
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:182
|
#: 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]/name-field.tsx:224
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:124
|
#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:124
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:259
|
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:256
|
||||||
#: apps/web/src/components/ui/user-profile-skeleton.tsx:75
|
#: apps/web/src/components/ui/user-profile-skeleton.tsx:75
|
||||||
#: apps/web/src/components/ui/user-profile-timur.tsx:81
|
#: apps/web/src/components/ui/user-profile-timur.tsx:81
|
||||||
msgid "Sign"
|
msgid "Sign"
|
||||||
msgstr "Signer"
|
msgstr "Signer"
|
||||||
|
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:219
|
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:217
|
||||||
msgid "Sign as {0} <0>({1})</0>"
|
msgid "Sign as {0} <0>({1})</0>"
|
||||||
msgstr "Signer comme {0} <0>({1})</0>"
|
msgstr "Signer comme {0} <0>({1})</0>"
|
||||||
|
|
||||||
@@ -2802,8 +2802,8 @@ msgstr "S'inscrire avec OIDC"
|
|||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:88
|
#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:88
|
||||||
#: apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx:338
|
#: apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx:338
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:197
|
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:195
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:227
|
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:225
|
||||||
#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:391
|
#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:391
|
||||||
#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:270
|
#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:270
|
||||||
#: apps/web/src/components/forms/profile.tsx:132
|
#: apps/web/src/components/forms/profile.tsx:132
|
||||||
@@ -4382,7 +4382,7 @@ msgstr "Votre document a été créé à partir du modèle avec succès."
|
|||||||
msgid "Your document has been re-sent successfully."
|
msgid "Your document has been re-sent successfully."
|
||||||
msgstr "Votre document a été renvoyé avec succès."
|
msgstr "Votre document a été renvoyé avec succès."
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:299
|
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:322
|
||||||
msgid "Your document has been sent successfully."
|
msgid "Your document has been sent successfully."
|
||||||
msgstr "Votre document a été envoyé avec succès."
|
msgstr "Votre document a été envoyé avec succès."
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,2 @@
|
|||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "DocumentMeta" ADD COLUMN "enabledTypedSignature" BOOLEAN NOT NULL DEFAULT false;
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
/*
|
||||||
|
Warnings:
|
||||||
|
|
||||||
|
- You are about to drop the column `enabledTypedSignature` on the `DocumentMeta` table. All the data in the column will be lost.
|
||||||
|
|
||||||
|
*/
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "DocumentMeta" DROP COLUMN "enabledTypedSignature",
|
||||||
|
ADD COLUMN "typedSignatureEnabled" BOOLEAN NOT NULL DEFAULT false;
|
||||||
@@ -359,16 +359,17 @@ model DocumentData {
|
|||||||
}
|
}
|
||||||
|
|
||||||
model DocumentMeta {
|
model DocumentMeta {
|
||||||
id String @id @default(cuid())
|
id String @id @default(cuid())
|
||||||
subject String?
|
subject String?
|
||||||
message String?
|
message String?
|
||||||
timezone String? @default("Etc/UTC") @db.Text
|
timezone String? @default("Etc/UTC") @db.Text
|
||||||
password String?
|
password String?
|
||||||
dateFormat String? @default("yyyy-MM-dd hh:mm a") @db.Text
|
dateFormat String? @default("yyyy-MM-dd hh:mm a") @db.Text
|
||||||
documentId Int @unique
|
documentId Int @unique
|
||||||
document Document @relation(fields: [documentId], references: [id], onDelete: Cascade)
|
document Document @relation(fields: [documentId], references: [id], onDelete: Cascade)
|
||||||
redirectUrl String?
|
redirectUrl String?
|
||||||
signingOrder DocumentSigningOrder @default(PARALLEL)
|
signingOrder DocumentSigningOrder @default(PARALLEL)
|
||||||
|
typedSignatureEnabled Boolean @default(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
enum ReadStatus {
|
enum ReadStatus {
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ import {
|
|||||||
ZSetSettingsForDocumentMutationSchema,
|
ZSetSettingsForDocumentMutationSchema,
|
||||||
ZSetSigningOrderForDocumentMutationSchema,
|
ZSetSigningOrderForDocumentMutationSchema,
|
||||||
ZSetTitleForDocumentMutationSchema,
|
ZSetTitleForDocumentMutationSchema,
|
||||||
|
ZUpdateTypedSignatureSettingsMutationSchema,
|
||||||
} from './schema';
|
} from './schema';
|
||||||
|
|
||||||
export const documentRouter = router({
|
export const documentRouter = router({
|
||||||
@@ -332,6 +333,46 @@ export const documentRouter = router({
|
|||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
|
|
||||||
|
updateTypedSignatureSettings: authenticatedProcedure
|
||||||
|
.input(ZUpdateTypedSignatureSettingsMutationSchema)
|
||||||
|
.mutation(async ({ input, ctx }) => {
|
||||||
|
try {
|
||||||
|
const { documentId, teamId, typedSignatureEnabled } = input;
|
||||||
|
|
||||||
|
const document = await getDocumentById({
|
||||||
|
id: documentId,
|
||||||
|
teamId,
|
||||||
|
userId: ctx.user.id,
|
||||||
|
}).catch(() => null);
|
||||||
|
|
||||||
|
if (!document) {
|
||||||
|
throw new TRPCError({
|
||||||
|
code: 'NOT_FOUND',
|
||||||
|
message: 'Document not found',
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return await upsertDocumentMeta({
|
||||||
|
documentId,
|
||||||
|
typedSignatureEnabled,
|
||||||
|
userId: ctx.user.id,
|
||||||
|
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 document. Please try again later.',
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
|
||||||
sendDocument: authenticatedProcedure
|
sendDocument: authenticatedProcedure
|
||||||
.input(ZSendDocumentMutationSchema)
|
.input(ZSendDocumentMutationSchema)
|
||||||
.mutation(async ({ input, ctx }) => {
|
.mutation(async ({ input, ctx }) => {
|
||||||
|
|||||||
@@ -158,6 +158,16 @@ export type TSetSigningOrderForDocumentMutationSchema = z.infer<
|
|||||||
typeof ZSetSigningOrderForDocumentMutationSchema
|
typeof ZSetSigningOrderForDocumentMutationSchema
|
||||||
>;
|
>;
|
||||||
|
|
||||||
|
export const ZUpdateTypedSignatureSettingsMutationSchema = z.object({
|
||||||
|
documentId: z.number(),
|
||||||
|
teamId: z.number().optional(),
|
||||||
|
typedSignatureEnabled: z.boolean(),
|
||||||
|
});
|
||||||
|
|
||||||
|
export type TUpdateTypedSignatureSettingsMutationSchema = z.infer<
|
||||||
|
typeof ZUpdateTypedSignatureSettingsMutationSchema
|
||||||
|
>;
|
||||||
|
|
||||||
export const ZResendDocumentMutationSchema = z.object({
|
export const ZResendDocumentMutationSchema = z.object({
|
||||||
documentId: z.number(),
|
documentId: z.number(),
|
||||||
recipients: z.array(z.number()).min(1),
|
recipients: z.array(z.number()).min(1),
|
||||||
|
|||||||
@@ -47,7 +47,9 @@ import { cn } from '../../lib/utils';
|
|||||||
import { Alert, AlertDescription } from '../alert';
|
import { Alert, AlertDescription } from '../alert';
|
||||||
import { Button } from '../button';
|
import { Button } from '../button';
|
||||||
import { Card, CardContent } from '../card';
|
import { Card, CardContent } from '../card';
|
||||||
|
import { Checkbox } from '../checkbox';
|
||||||
import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem } from '../command';
|
import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem } from '../command';
|
||||||
|
import { Form, FormControl, FormField, FormItem, FormLabel } from '../form/form';
|
||||||
import { Popover, PopoverContent, PopoverTrigger } from '../popover';
|
import { Popover, PopoverContent, PopoverTrigger } from '../popover';
|
||||||
import { useStep } from '../stepper';
|
import { useStep } from '../stepper';
|
||||||
import { Tooltip, TooltipContent, TooltipTrigger } from '../tooltip';
|
import { Tooltip, TooltipContent, TooltipTrigger } from '../tooltip';
|
||||||
@@ -96,6 +98,7 @@ export type AddFieldsFormProps = {
|
|||||||
onSubmit: (_data: TAddFieldsFormSchema) => void;
|
onSubmit: (_data: TAddFieldsFormSchema) => void;
|
||||||
canGoBack?: boolean;
|
canGoBack?: boolean;
|
||||||
isDocumentPdfLoaded: boolean;
|
isDocumentPdfLoaded: boolean;
|
||||||
|
typedSignatureEnabled?: boolean;
|
||||||
teamId?: number;
|
teamId?: number;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -107,6 +110,7 @@ export const AddFieldsFormPartial = ({
|
|||||||
onSubmit,
|
onSubmit,
|
||||||
canGoBack = false,
|
canGoBack = false,
|
||||||
isDocumentPdfLoaded,
|
isDocumentPdfLoaded,
|
||||||
|
typedSignatureEnabled,
|
||||||
teamId,
|
teamId,
|
||||||
}: AddFieldsFormProps) => {
|
}: AddFieldsFormProps) => {
|
||||||
const { toast } = useToast();
|
const { toast } = useToast();
|
||||||
@@ -120,13 +124,7 @@ export const AddFieldsFormPartial = ({
|
|||||||
const [showAdvancedSettings, setShowAdvancedSettings] = useState(false);
|
const [showAdvancedSettings, setShowAdvancedSettings] = useState(false);
|
||||||
const [currentField, setCurrentField] = useState<FieldFormType>();
|
const [currentField, setCurrentField] = useState<FieldFormType>();
|
||||||
|
|
||||||
const {
|
const form = useForm<TAddFieldsFormSchema>({
|
||||||
control,
|
|
||||||
handleSubmit,
|
|
||||||
formState: { isSubmitting },
|
|
||||||
setValue,
|
|
||||||
getValues,
|
|
||||||
} = useForm<TAddFieldsFormSchema>({
|
|
||||||
defaultValues: {
|
defaultValues: {
|
||||||
fields: fields.map((field) => ({
|
fields: fields.map((field) => ({
|
||||||
nativeId: field.id,
|
nativeId: field.id,
|
||||||
@@ -141,6 +139,7 @@ export const AddFieldsFormPartial = ({
|
|||||||
recipients.find((recipient) => recipient.id === field.recipientId)?.email ?? '',
|
recipients.find((recipient) => recipient.id === field.recipientId)?.email ?? '',
|
||||||
fieldMeta: field.fieldMeta ? ZFieldMetaSchema.parse(field.fieldMeta) : undefined,
|
fieldMeta: field.fieldMeta ? ZFieldMetaSchema.parse(field.fieldMeta) : undefined,
|
||||||
})),
|
})),
|
||||||
|
typedSignatureEnabled: typedSignatureEnabled ?? false,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -148,10 +147,10 @@ export const AddFieldsFormPartial = ({
|
|||||||
useHotkeys(['ctrl+v', 'meta+v'], (evt) => onFieldPaste(evt));
|
useHotkeys(['ctrl+v', 'meta+v'], (evt) => onFieldPaste(evt));
|
||||||
useHotkeys(['ctrl+d', 'meta+d'], (evt) => onFieldCopy(evt, { duplicate: true }));
|
useHotkeys(['ctrl+d', 'meta+d'], (evt) => onFieldCopy(evt, { duplicate: true }));
|
||||||
|
|
||||||
const onFormSubmit = handleSubmit(onSubmit);
|
const onFormSubmit = form.handleSubmit(onSubmit);
|
||||||
|
|
||||||
const handleSavedFieldSettings = (fieldState: FieldMeta) => {
|
const handleSavedFieldSettings = (fieldState: FieldMeta) => {
|
||||||
const initialValues = getValues();
|
const initialValues = form.getValues();
|
||||||
|
|
||||||
const updatedFields = initialValues.fields.map((field) => {
|
const updatedFields = initialValues.fields.map((field) => {
|
||||||
if (field.formId === currentField?.formId) {
|
if (field.formId === currentField?.formId) {
|
||||||
@@ -166,7 +165,7 @@ export const AddFieldsFormPartial = ({
|
|||||||
return field;
|
return field;
|
||||||
});
|
});
|
||||||
|
|
||||||
setValue('fields', updatedFields);
|
form.setValue('fields', updatedFields);
|
||||||
};
|
};
|
||||||
|
|
||||||
const {
|
const {
|
||||||
@@ -175,7 +174,7 @@ export const AddFieldsFormPartial = ({
|
|||||||
update,
|
update,
|
||||||
fields: localFields,
|
fields: localFields,
|
||||||
} = useFieldArray({
|
} = useFieldArray({
|
||||||
control,
|
control: form.control,
|
||||||
name: 'fields',
|
name: 'fields',
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -530,6 +529,12 @@ export const AddFieldsFormPartial = ({
|
|||||||
);
|
);
|
||||||
}, [recipientsByRole]);
|
}, [recipientsByRole]);
|
||||||
|
|
||||||
|
const isTypedSignatureEnabled = form.watch('typedSignatureEnabled');
|
||||||
|
|
||||||
|
const handleTypedSignatureChange = (value: boolean) => {
|
||||||
|
form.setValue('typedSignatureEnabled', value, { shouldDirty: true });
|
||||||
|
};
|
||||||
|
|
||||||
const handleAdvancedSettings = () => {
|
const handleAdvancedSettings = () => {
|
||||||
setShowAdvancedSettings((prev) => !prev);
|
setShowAdvancedSettings((prev) => !prev);
|
||||||
};
|
};
|
||||||
@@ -577,6 +582,7 @@ export const AddFieldsFormPartial = ({
|
|||||||
title={documentFlow.title}
|
title={documentFlow.title}
|
||||||
description={documentFlow.description}
|
description={documentFlow.description}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<DocumentFlowFormContainerContent>
|
<DocumentFlowFormContainerContent>
|
||||||
<div className="flex flex-col">
|
<div className="flex flex-col">
|
||||||
{selectedField && (
|
{selectedField && (
|
||||||
@@ -760,269 +766,297 @@ export const AddFieldsFormPartial = ({
|
|||||||
</Popover>
|
</Popover>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
<div className="-mx-2 flex-1 overflow-y-auto px-2">
|
<Form {...form}>
|
||||||
<fieldset disabled={isFieldsDisabled} className="my-2 grid grid-cols-3 gap-4">
|
<FormField
|
||||||
<button
|
control={form.control}
|
||||||
type="button"
|
name="typedSignatureEnabled"
|
||||||
className="group h-full w-full"
|
render={({ field: { value, ...field } }) => (
|
||||||
onClick={() => setSelectedField(FieldType.SIGNATURE)}
|
<FormItem className="mb-6 flex flex-row items-center space-x-2 space-y-0">
|
||||||
onMouseDown={() => setSelectedField(FieldType.SIGNATURE)}
|
<FormControl>
|
||||||
data-selected={selectedField === FieldType.SIGNATURE ? true : undefined}
|
<Checkbox
|
||||||
>
|
{...field}
|
||||||
<Card
|
id="typedSignatureEnabled"
|
||||||
className={cn(
|
checkClassName="text-white"
|
||||||
'flex h-full w-full cursor-pointer items-center justify-center group-disabled:opacity-50',
|
checked={value}
|
||||||
// selectedSignerStyles.borderClass,
|
onCheckedChange={(checked) => field.onChange(checked)}
|
||||||
)}
|
disabled={form.formState.isSubmitting}
|
||||||
>
|
/>
|
||||||
<CardContent className="flex flex-col items-center justify-center px-6 py-4">
|
</FormControl>
|
||||||
<p
|
|
||||||
className={cn(
|
|
||||||
'text-muted-foreground group-data-[selected]:text-foreground flex items-center justify-center gap-x-1.5 text-lg font-normal',
|
|
||||||
fontCaveat.className,
|
|
||||||
)}
|
|
||||||
>
|
|
||||||
<Trans>Signature</Trans>
|
|
||||||
</p>
|
|
||||||
</CardContent>
|
|
||||||
</Card>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<button
|
<FormLabel
|
||||||
type="button"
|
htmlFor="typedSignatureEnabled"
|
||||||
className="group h-full w-full"
|
className="text-sm leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
|
||||||
onClick={() => setSelectedField(FieldType.INITIALS)}
|
>
|
||||||
onMouseDown={() => setSelectedField(FieldType.INITIALS)}
|
<Trans>Enable Typed Signatures</Trans>
|
||||||
data-selected={selectedField === FieldType.INITIALS ? true : undefined}
|
</FormLabel>
|
||||||
>
|
</FormItem>
|
||||||
<Card
|
)}
|
||||||
className={cn(
|
/>
|
||||||
'flex h-full w-full cursor-pointer items-center justify-center group-disabled:opacity-50',
|
|
||||||
// selectedSignerStyles.borderClass,
|
|
||||||
)}
|
|
||||||
>
|
|
||||||
<CardContent className="flex flex-col items-center justify-center px-6 py-4">
|
|
||||||
<p
|
|
||||||
className={cn(
|
|
||||||
'text-muted-foreground group-data-[selected]:text-foreground flex items-center justify-center gap-x-1.5 text-sm font-normal',
|
|
||||||
)}
|
|
||||||
>
|
|
||||||
<Contact className="h-4 w-4" />
|
|
||||||
Initials
|
|
||||||
</p>
|
|
||||||
</CardContent>
|
|
||||||
</Card>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<button
|
<div className="-mx-2 flex-1 overflow-y-auto px-2">
|
||||||
type="button"
|
<fieldset disabled={isFieldsDisabled} className="my-2 grid grid-cols-3 gap-4">
|
||||||
className="group h-full w-full"
|
<button
|
||||||
onClick={() => setSelectedField(FieldType.EMAIL)}
|
type="button"
|
||||||
onMouseDown={() => setSelectedField(FieldType.EMAIL)}
|
className="group h-full w-full"
|
||||||
data-selected={selectedField === FieldType.EMAIL ? true : undefined}
|
onClick={() => setSelectedField(FieldType.SIGNATURE)}
|
||||||
>
|
onMouseDown={() => setSelectedField(FieldType.SIGNATURE)}
|
||||||
<Card
|
data-selected={selectedField === FieldType.SIGNATURE ? true : undefined}
|
||||||
className={cn(
|
|
||||||
'flex h-full w-full cursor-pointer items-center justify-center group-disabled:opacity-50',
|
|
||||||
// selectedSignerStyles.borderClass,
|
|
||||||
)}
|
|
||||||
>
|
>
|
||||||
<CardContent className="flex flex-col items-center justify-center px-6 py-4">
|
<Card
|
||||||
<p
|
className={cn(
|
||||||
className={cn(
|
'flex h-full w-full cursor-pointer items-center justify-center group-disabled:opacity-50',
|
||||||
'text-muted-foreground group-data-[selected]:text-foreground flex items-center justify-center gap-x-1.5 text-sm font-normal',
|
// selectedSignerStyles.borderClass,
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
<Mail className="h-4 w-4" />
|
<CardContent className="flex flex-col items-center justify-center px-6 py-4">
|
||||||
<Trans>Email</Trans>
|
<p
|
||||||
</p>
|
className={cn(
|
||||||
</CardContent>
|
'text-muted-foreground group-data-[selected]:text-foreground flex items-center justify-center gap-x-1.5 text-lg font-normal',
|
||||||
</Card>
|
fontCaveat.className,
|
||||||
</button>
|
)}
|
||||||
|
>
|
||||||
|
<Trans>Signature</Trans>
|
||||||
|
</p>
|
||||||
|
</CardContent>
|
||||||
|
</Card>
|
||||||
|
</button>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
className="group h-full w-full"
|
className="group h-full w-full"
|
||||||
onClick={() => setSelectedField(FieldType.NAME)}
|
onClick={() => setSelectedField(FieldType.INITIALS)}
|
||||||
onMouseDown={() => setSelectedField(FieldType.NAME)}
|
onMouseDown={() => setSelectedField(FieldType.INITIALS)}
|
||||||
data-selected={selectedField === FieldType.NAME ? true : undefined}
|
data-selected={selectedField === FieldType.INITIALS ? true : undefined}
|
||||||
>
|
|
||||||
<Card
|
|
||||||
className={cn(
|
|
||||||
'flex h-full w-full cursor-pointer items-center justify-center group-disabled:opacity-50',
|
|
||||||
// selectedSignerStyles.borderClass,
|
|
||||||
)}
|
|
||||||
>
|
>
|
||||||
<CardContent className="p-4">
|
<Card
|
||||||
<p
|
className={cn(
|
||||||
className={cn(
|
'flex h-full w-full cursor-pointer items-center justify-center group-disabled:opacity-50',
|
||||||
'text-muted-foreground group-data-[selected]:text-foreground flex items-center justify-center gap-x-1.5 text-sm font-normal',
|
// selectedSignerStyles.borderClass,
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
<User className="h-4 w-4" />
|
<CardContent className="flex flex-col items-center justify-center px-6 py-4">
|
||||||
<Trans>Name</Trans>
|
<p
|
||||||
</p>
|
className={cn(
|
||||||
</CardContent>
|
'text-muted-foreground group-data-[selected]:text-foreground flex items-center justify-center gap-x-1.5 text-sm font-normal',
|
||||||
</Card>
|
)}
|
||||||
</button>
|
>
|
||||||
|
<Contact className="h-4 w-4" />
|
||||||
|
Initials
|
||||||
|
</p>
|
||||||
|
</CardContent>
|
||||||
|
</Card>
|
||||||
|
</button>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
className="group h-full w-full"
|
className="group h-full w-full"
|
||||||
onClick={() => setSelectedField(FieldType.DATE)}
|
onClick={() => setSelectedField(FieldType.EMAIL)}
|
||||||
onMouseDown={() => setSelectedField(FieldType.DATE)}
|
onMouseDown={() => setSelectedField(FieldType.EMAIL)}
|
||||||
data-selected={selectedField === FieldType.DATE ? true : undefined}
|
data-selected={selectedField === FieldType.EMAIL ? true : undefined}
|
||||||
>
|
|
||||||
<Card
|
|
||||||
className={cn(
|
|
||||||
'flex h-full w-full cursor-pointer items-center justify-center group-disabled:opacity-50',
|
|
||||||
// selectedSignerStyles.borderClass,
|
|
||||||
)}
|
|
||||||
>
|
>
|
||||||
<CardContent className="p-4">
|
<Card
|
||||||
<p
|
className={cn(
|
||||||
className={cn(
|
'flex h-full w-full cursor-pointer items-center justify-center group-disabled:opacity-50',
|
||||||
'text-muted-foreground group-data-[selected]:text-foreground flex items-center justify-center gap-x-1.5 text-sm font-normal',
|
// selectedSignerStyles.borderClass,
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
<CalendarDays className="h-4 w-4" />
|
<CardContent className="flex flex-col items-center justify-center px-6 py-4">
|
||||||
<Trans>Date</Trans>
|
<p
|
||||||
</p>
|
className={cn(
|
||||||
</CardContent>
|
'text-muted-foreground group-data-[selected]:text-foreground flex items-center justify-center gap-x-1.5 text-sm font-normal',
|
||||||
</Card>
|
)}
|
||||||
</button>
|
>
|
||||||
|
<Mail className="h-4 w-4" />
|
||||||
|
<Trans>Email</Trans>
|
||||||
|
</p>
|
||||||
|
</CardContent>
|
||||||
|
</Card>
|
||||||
|
</button>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
className="group h-full w-full"
|
className="group h-full w-full"
|
||||||
onClick={() => setSelectedField(FieldType.TEXT)}
|
onClick={() => setSelectedField(FieldType.NAME)}
|
||||||
onMouseDown={() => setSelectedField(FieldType.TEXT)}
|
onMouseDown={() => setSelectedField(FieldType.NAME)}
|
||||||
data-selected={selectedField === FieldType.TEXT ? true : undefined}
|
data-selected={selectedField === FieldType.NAME ? true : undefined}
|
||||||
>
|
|
||||||
<Card
|
|
||||||
className={cn(
|
|
||||||
'flex h-full w-full cursor-pointer items-center justify-center group-disabled:opacity-50',
|
|
||||||
// selectedSignerStyles.borderClass,
|
|
||||||
)}
|
|
||||||
>
|
>
|
||||||
<CardContent className="p-4">
|
<Card
|
||||||
<p
|
className={cn(
|
||||||
className={cn(
|
'flex h-full w-full cursor-pointer items-center justify-center group-disabled:opacity-50',
|
||||||
'text-muted-foreground group-data-[selected]:text-foreground flex items-center justify-center gap-x-1.5 text-sm font-normal',
|
// selectedSignerStyles.borderClass,
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
<Type className="h-4 w-4" />
|
<CardContent className="p-4">
|
||||||
<Trans>Text</Trans>
|
<p
|
||||||
</p>
|
className={cn(
|
||||||
</CardContent>
|
'text-muted-foreground group-data-[selected]:text-foreground flex items-center justify-center gap-x-1.5 text-sm font-normal',
|
||||||
</Card>
|
)}
|
||||||
</button>
|
>
|
||||||
|
<User className="h-4 w-4" />
|
||||||
|
<Trans>Name</Trans>
|
||||||
|
</p>
|
||||||
|
</CardContent>
|
||||||
|
</Card>
|
||||||
|
</button>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
className="group h-full w-full"
|
className="group h-full w-full"
|
||||||
onClick={() => setSelectedField(FieldType.NUMBER)}
|
onClick={() => setSelectedField(FieldType.DATE)}
|
||||||
onMouseDown={() => setSelectedField(FieldType.NUMBER)}
|
onMouseDown={() => setSelectedField(FieldType.DATE)}
|
||||||
data-selected={selectedField === FieldType.NUMBER ? true : undefined}
|
data-selected={selectedField === FieldType.DATE ? true : undefined}
|
||||||
>
|
|
||||||
<Card
|
|
||||||
className={cn(
|
|
||||||
'flex h-full w-full cursor-pointer items-center justify-center group-disabled:opacity-50',
|
|
||||||
// selectedSignerStyles.borderClass,
|
|
||||||
)}
|
|
||||||
>
|
>
|
||||||
<CardContent className="p-4">
|
<Card
|
||||||
<p
|
className={cn(
|
||||||
className={cn(
|
'flex h-full w-full cursor-pointer items-center justify-center group-disabled:opacity-50',
|
||||||
'text-muted-foreground group-data-[selected]:text-foreground flex items-center justify-center gap-x-1.5 text-sm font-normal',
|
// selectedSignerStyles.borderClass,
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
<Hash className="h-4 w-4" />
|
<CardContent className="p-4">
|
||||||
<Trans>Number</Trans>
|
<p
|
||||||
</p>
|
className={cn(
|
||||||
</CardContent>
|
'text-muted-foreground group-data-[selected]:text-foreground flex items-center justify-center gap-x-1.5 text-sm font-normal',
|
||||||
</Card>
|
)}
|
||||||
</button>
|
>
|
||||||
|
<CalendarDays className="h-4 w-4" />
|
||||||
|
<Trans>Date</Trans>
|
||||||
|
</p>
|
||||||
|
</CardContent>
|
||||||
|
</Card>
|
||||||
|
</button>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
className="group h-full w-full"
|
className="group h-full w-full"
|
||||||
onClick={() => setSelectedField(FieldType.RADIO)}
|
onClick={() => setSelectedField(FieldType.TEXT)}
|
||||||
onMouseDown={() => setSelectedField(FieldType.RADIO)}
|
onMouseDown={() => setSelectedField(FieldType.TEXT)}
|
||||||
data-selected={selectedField === FieldType.RADIO ? true : undefined}
|
data-selected={selectedField === FieldType.TEXT ? true : undefined}
|
||||||
>
|
|
||||||
<Card
|
|
||||||
className={cn(
|
|
||||||
'flex h-full w-full cursor-pointer items-center justify-center group-disabled:opacity-50',
|
|
||||||
// selectedSignerStyles.borderClass,
|
|
||||||
)}
|
|
||||||
>
|
>
|
||||||
<CardContent className="p-4">
|
<Card
|
||||||
<p
|
className={cn(
|
||||||
className={cn(
|
'flex h-full w-full cursor-pointer items-center justify-center group-disabled:opacity-50',
|
||||||
'text-muted-foreground group-data-[selected]:text-foreground flex items-center justify-center gap-x-1.5 text-sm font-normal',
|
// selectedSignerStyles.borderClass,
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
<Disc className="h-4 w-4" />
|
<CardContent className="p-4">
|
||||||
<Trans>Radio</Trans>
|
<p
|
||||||
</p>
|
className={cn(
|
||||||
</CardContent>
|
'text-muted-foreground group-data-[selected]:text-foreground flex items-center justify-center gap-x-1.5 text-sm font-normal',
|
||||||
</Card>
|
)}
|
||||||
</button>
|
>
|
||||||
|
<Type className="h-4 w-4" />
|
||||||
|
<Trans>Text</Trans>
|
||||||
|
</p>
|
||||||
|
</CardContent>
|
||||||
|
</Card>
|
||||||
|
</button>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
className="group h-full w-full"
|
className="group h-full w-full"
|
||||||
onClick={() => setSelectedField(FieldType.CHECKBOX)}
|
onClick={() => setSelectedField(FieldType.NUMBER)}
|
||||||
onMouseDown={() => setSelectedField(FieldType.CHECKBOX)}
|
onMouseDown={() => setSelectedField(FieldType.NUMBER)}
|
||||||
data-selected={selectedField === FieldType.CHECKBOX ? true : undefined}
|
data-selected={selectedField === FieldType.NUMBER ? true : undefined}
|
||||||
>
|
|
||||||
<Card
|
|
||||||
className={cn(
|
|
||||||
'flex h-full w-full cursor-pointer items-center justify-center group-disabled:opacity-50',
|
|
||||||
// selectedSignerStyles.borderClass,
|
|
||||||
)}
|
|
||||||
>
|
>
|
||||||
<CardContent className="p-4">
|
<Card
|
||||||
<p
|
className={cn(
|
||||||
className={cn(
|
'flex h-full w-full cursor-pointer items-center justify-center group-disabled:opacity-50',
|
||||||
'text-muted-foreground group-data-[selected]:text-foreground flex items-center justify-center gap-x-1.5 text-sm font-normal',
|
// selectedSignerStyles.borderClass,
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
<CheckSquare className="h-4 w-4" />
|
<CardContent className="p-4">
|
||||||
<Trans>Checkbox</Trans>
|
<p
|
||||||
</p>
|
className={cn(
|
||||||
</CardContent>
|
'text-muted-foreground group-data-[selected]:text-foreground flex items-center justify-center gap-x-1.5 text-sm font-normal',
|
||||||
</Card>
|
)}
|
||||||
</button>
|
>
|
||||||
|
<Hash className="h-4 w-4" />
|
||||||
|
<Trans>Number</Trans>
|
||||||
|
</p>
|
||||||
|
</CardContent>
|
||||||
|
</Card>
|
||||||
|
</button>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
className="group h-full w-full"
|
className="group h-full w-full"
|
||||||
onClick={() => setSelectedField(FieldType.DROPDOWN)}
|
onClick={() => setSelectedField(FieldType.RADIO)}
|
||||||
onMouseDown={() => setSelectedField(FieldType.DROPDOWN)}
|
onMouseDown={() => setSelectedField(FieldType.RADIO)}
|
||||||
data-selected={selectedField === FieldType.DROPDOWN ? true : undefined}
|
data-selected={selectedField === FieldType.RADIO ? true : undefined}
|
||||||
>
|
|
||||||
<Card
|
|
||||||
className={cn(
|
|
||||||
'flex h-full w-full cursor-pointer items-center justify-center group-disabled:opacity-50',
|
|
||||||
// selectedSignerStyles.borderClass,
|
|
||||||
)}
|
|
||||||
>
|
>
|
||||||
<CardContent className="p-4">
|
<Card
|
||||||
<p
|
className={cn(
|
||||||
className={cn(
|
'flex h-full w-full cursor-pointer items-center justify-center group-disabled:opacity-50',
|
||||||
'text-muted-foreground group-data-[selected]:text-foreground flex items-center justify-center gap-x-1.5 text-sm font-normal',
|
// selectedSignerStyles.borderClass,
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
<ChevronDown className="h-4 w-4" />
|
<CardContent className="p-4">
|
||||||
<Trans>Dropdown</Trans>
|
<p
|
||||||
</p>
|
className={cn(
|
||||||
</CardContent>
|
'text-muted-foreground group-data-[selected]:text-foreground flex items-center justify-center gap-x-1.5 text-sm font-normal',
|
||||||
</Card>
|
)}
|
||||||
</button>
|
>
|
||||||
</fieldset>
|
<Disc className="h-4 w-4" />
|
||||||
</div>
|
<Trans>Radio</Trans>
|
||||||
|
</p>
|
||||||
|
</CardContent>
|
||||||
|
</Card>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
className="group h-full w-full"
|
||||||
|
onClick={() => setSelectedField(FieldType.CHECKBOX)}
|
||||||
|
onMouseDown={() => setSelectedField(FieldType.CHECKBOX)}
|
||||||
|
data-selected={selectedField === FieldType.CHECKBOX ? true : undefined}
|
||||||
|
>
|
||||||
|
<Card
|
||||||
|
className={cn(
|
||||||
|
'flex h-full w-full cursor-pointer items-center justify-center group-disabled:opacity-50',
|
||||||
|
// selectedSignerStyles.borderClass,
|
||||||
|
)}
|
||||||
|
>
|
||||||
|
<CardContent className="p-4">
|
||||||
|
<p
|
||||||
|
className={cn(
|
||||||
|
'text-muted-foreground group-data-[selected]:text-foreground flex items-center justify-center gap-x-1.5 text-sm font-normal',
|
||||||
|
)}
|
||||||
|
>
|
||||||
|
<CheckSquare className="h-4 w-4" />
|
||||||
|
<Trans>Checkbox</Trans>
|
||||||
|
</p>
|
||||||
|
</CardContent>
|
||||||
|
</Card>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
className="group h-full w-full"
|
||||||
|
onClick={() => setSelectedField(FieldType.DROPDOWN)}
|
||||||
|
onMouseDown={() => setSelectedField(FieldType.DROPDOWN)}
|
||||||
|
data-selected={selectedField === FieldType.DROPDOWN ? true : undefined}
|
||||||
|
>
|
||||||
|
<Card
|
||||||
|
className={cn(
|
||||||
|
'flex h-full w-full cursor-pointer items-center justify-center group-disabled:opacity-50',
|
||||||
|
// selectedSignerStyles.borderClass,
|
||||||
|
)}
|
||||||
|
>
|
||||||
|
<CardContent className="p-4">
|
||||||
|
<p
|
||||||
|
className={cn(
|
||||||
|
'text-muted-foreground group-data-[selected]:text-foreground flex items-center justify-center gap-x-1.5 text-sm font-normal',
|
||||||
|
)}
|
||||||
|
>
|
||||||
|
<ChevronDown className="h-4 w-4" />
|
||||||
|
<Trans>Dropdown</Trans>
|
||||||
|
</p>
|
||||||
|
</CardContent>
|
||||||
|
</Card>
|
||||||
|
</button>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
</Form>
|
||||||
</div>
|
</div>
|
||||||
</DocumentFlowFormContainerContent>
|
</DocumentFlowFormContainerContent>
|
||||||
|
|
||||||
@@ -1059,8 +1093,9 @@ export const AddFieldsFormPartial = ({
|
|||||||
<DocumentFlowFormContainerStep step={currentStep} maxStep={totalSteps} />
|
<DocumentFlowFormContainerStep step={currentStep} maxStep={totalSteps} />
|
||||||
|
|
||||||
<DocumentFlowFormContainerActions
|
<DocumentFlowFormContainerActions
|
||||||
loading={isSubmitting}
|
loading={form.formState.isSubmitting}
|
||||||
disabled={isSubmitting}
|
disabled={form.formState.isSubmitting}
|
||||||
|
disableNextStep={hasErrors}
|
||||||
onGoBackClick={() => {
|
onGoBackClick={() => {
|
||||||
previousStep();
|
previousStep();
|
||||||
remove();
|
remove();
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ export const ZAddFieldsFormSchema = z.object({
|
|||||||
fieldMeta: ZFieldMetaSchema,
|
fieldMeta: ZFieldMetaSchema,
|
||||||
}),
|
}),
|
||||||
),
|
),
|
||||||
|
typedSignatureEnabled: z.boolean(),
|
||||||
});
|
});
|
||||||
|
|
||||||
export type TAddFieldsFormSchema = z.infer<typeof ZAddFieldsFormSchema>;
|
export type TAddFieldsFormSchema = z.infer<typeof ZAddFieldsFormSchema>;
|
||||||
|
|||||||
@@ -3,12 +3,15 @@
|
|||||||
import type { HTMLAttributes, MouseEvent, PointerEvent, TouchEvent } from 'react';
|
import type { HTMLAttributes, MouseEvent, PointerEvent, TouchEvent } from 'react';
|
||||||
import { useEffect, useMemo, useRef, useState } from 'react';
|
import { useEffect, useMemo, useRef, useState } from 'react';
|
||||||
|
|
||||||
|
import { Caveat } from 'next/font/google';
|
||||||
|
|
||||||
import { Trans } from '@lingui/macro';
|
import { Trans } from '@lingui/macro';
|
||||||
import { Undo2 } from 'lucide-react';
|
import { Undo2 } from 'lucide-react';
|
||||||
import type { StrokeOptions } from 'perfect-freehand';
|
import type { StrokeOptions } from 'perfect-freehand';
|
||||||
import { getStroke } from 'perfect-freehand';
|
import { getStroke } from 'perfect-freehand';
|
||||||
|
|
||||||
import { unsafe_useEffectOnce } from '@documenso/lib/client-only/hooks/use-effect-once';
|
import { unsafe_useEffectOnce } from '@documenso/lib/client-only/hooks/use-effect-once';
|
||||||
|
import { Input } from '@documenso/ui/primitives/input';
|
||||||
import {
|
import {
|
||||||
Select,
|
Select,
|
||||||
SelectContent,
|
SelectContent,
|
||||||
@@ -21,12 +24,20 @@ import { cn } from '../../lib/utils';
|
|||||||
import { getSvgPathFromStroke } from './helper';
|
import { getSvgPathFromStroke } from './helper';
|
||||||
import { Point } from './point';
|
import { Point } from './point';
|
||||||
|
|
||||||
|
const fontCaveat = Caveat({
|
||||||
|
weight: ['500'],
|
||||||
|
subsets: ['latin'],
|
||||||
|
display: 'swap',
|
||||||
|
variable: '--font-caveat',
|
||||||
|
});
|
||||||
|
|
||||||
const DPI = 2;
|
const DPI = 2;
|
||||||
|
|
||||||
export type SignaturePadProps = Omit<HTMLAttributes<HTMLCanvasElement>, 'onChange'> & {
|
export type SignaturePadProps = Omit<HTMLAttributes<HTMLCanvasElement>, 'onChange'> & {
|
||||||
onChange?: (_signatureDataUrl: string | null) => void;
|
onChange?: (_signatureDataUrl: string | null) => void;
|
||||||
containerClassName?: string;
|
containerClassName?: string;
|
||||||
disabled?: boolean;
|
disabled?: boolean;
|
||||||
|
allowTypedSignature?: boolean;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const SignaturePad = ({
|
export const SignaturePad = ({
|
||||||
@@ -35,6 +46,7 @@ export const SignaturePad = ({
|
|||||||
defaultValue,
|
defaultValue,
|
||||||
onChange,
|
onChange,
|
||||||
disabled = false,
|
disabled = false,
|
||||||
|
allowTypedSignature,
|
||||||
...props
|
...props
|
||||||
}: SignaturePadProps) => {
|
}: SignaturePadProps) => {
|
||||||
const $el = useRef<HTMLCanvasElement>(null);
|
const $el = useRef<HTMLCanvasElement>(null);
|
||||||
@@ -44,6 +56,7 @@ export const SignaturePad = ({
|
|||||||
const [lines, setLines] = useState<Point[][]>([]);
|
const [lines, setLines] = useState<Point[][]>([]);
|
||||||
const [currentLine, setCurrentLine] = useState<Point[]>([]);
|
const [currentLine, setCurrentLine] = useState<Point[]>([]);
|
||||||
const [selectedColor, setSelectedColor] = useState('black');
|
const [selectedColor, setSelectedColor] = useState('black');
|
||||||
|
const [typedSignature, setTypedSignature] = useState('');
|
||||||
|
|
||||||
const perfectFreehandOptions = useMemo(() => {
|
const perfectFreehandOptions = useMemo(() => {
|
||||||
const size = $el.current ? Math.min($el.current.height, $el.current.width) * 0.03 : 10;
|
const size = $el.current ? Math.min($el.current.height, $el.current.width) * 0.03 : 10;
|
||||||
@@ -181,34 +194,107 @@ export const SignaturePad = ({
|
|||||||
|
|
||||||
onChange?.(null);
|
onChange?.(null);
|
||||||
|
|
||||||
|
setTypedSignature('');
|
||||||
setLines([]);
|
setLines([]);
|
||||||
setCurrentLine([]);
|
setCurrentLine([]);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const renderTypedSignature = () => {
|
||||||
|
if ($el.current && typedSignature) {
|
||||||
|
const ctx = $el.current.getContext('2d');
|
||||||
|
|
||||||
|
if (ctx) {
|
||||||
|
const canvasWidth = $el.current.width;
|
||||||
|
const canvasHeight = $el.current.height;
|
||||||
|
|
||||||
|
ctx.clearRect(0, 0, canvasWidth, canvasHeight);
|
||||||
|
ctx.textAlign = 'center';
|
||||||
|
ctx.textBaseline = 'middle';
|
||||||
|
ctx.fillStyle = selectedColor;
|
||||||
|
|
||||||
|
// Calculate the desired width (25ch)
|
||||||
|
const desiredWidth = canvasWidth * 0.85; // 85% of canvas width
|
||||||
|
|
||||||
|
// Start with a base font size
|
||||||
|
let fontSize = 18;
|
||||||
|
ctx.font = `${fontSize}px ${fontCaveat.style.fontFamily}`;
|
||||||
|
|
||||||
|
// Measure 10 characters and calculate scale factor
|
||||||
|
const characterWidth = ctx.measureText('m'.repeat(10)).width;
|
||||||
|
const scaleFactor = desiredWidth / characterWidth;
|
||||||
|
|
||||||
|
// Apply scale factor to font size
|
||||||
|
fontSize = fontSize * scaleFactor;
|
||||||
|
|
||||||
|
// Adjust font size if it exceeds canvas width
|
||||||
|
ctx.font = `${fontSize}px ${fontCaveat.style.fontFamily}`;
|
||||||
|
|
||||||
|
const textWidth = ctx.measureText(typedSignature).width;
|
||||||
|
|
||||||
|
if (textWidth > desiredWidth) {
|
||||||
|
fontSize = fontSize * (desiredWidth / textWidth);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set final font and render text
|
||||||
|
ctx.font = `${fontSize}px ${fontCaveat.style.fontFamily}`;
|
||||||
|
ctx.fillText(typedSignature, canvasWidth / 2, canvasHeight / 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleTypedSignatureChange = (event: React.ChangeEvent<HTMLInputElement>) => {
|
||||||
|
const newValue = event.target.value;
|
||||||
|
setTypedSignature(newValue);
|
||||||
|
|
||||||
|
if (newValue.trim() !== '') {
|
||||||
|
onChange?.($el.current?.toDataURL() || null);
|
||||||
|
} else {
|
||||||
|
onChange?.(null);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (typedSignature.trim() !== '') {
|
||||||
|
renderTypedSignature();
|
||||||
|
onChange?.($el.current?.toDataURL() || null);
|
||||||
|
} else {
|
||||||
|
onClearClick();
|
||||||
|
}
|
||||||
|
}, [typedSignature, selectedColor]);
|
||||||
|
|
||||||
const onUndoClick = () => {
|
const onUndoClick = () => {
|
||||||
if (lines.length === 0) {
|
if (lines.length === 0 && typedSignature.length === 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const newLines = lines.slice(0, -1);
|
if (typedSignature.length > 0) {
|
||||||
setLines(newLines);
|
const newTypedSignature = typedSignature.slice(0, -1);
|
||||||
|
setTypedSignature(newTypedSignature);
|
||||||
|
// You might want to call onChange here as well
|
||||||
|
// onChange?.(newTypedSignature);
|
||||||
|
} else {
|
||||||
|
const newLines = lines.slice(0, -1);
|
||||||
|
setLines(newLines);
|
||||||
|
|
||||||
// Clear the canvas
|
// Clear and redraw the canvas
|
||||||
if ($el.current) {
|
if ($el.current) {
|
||||||
const ctx = $el.current.getContext('2d');
|
const ctx = $el.current.getContext('2d');
|
||||||
const { width, height } = $el.current;
|
const { width, height } = $el.current;
|
||||||
ctx?.clearRect(0, 0, width, height);
|
ctx?.clearRect(0, 0, width, height);
|
||||||
|
|
||||||
if (typeof defaultValue === 'string' && $imageData.current) {
|
if (typeof defaultValue === 'string' && $imageData.current) {
|
||||||
ctx?.putImageData($imageData.current, 0, 0);
|
ctx?.putImageData($imageData.current, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
newLines.forEach((line) => {
|
||||||
|
const pathData = new Path2D(
|
||||||
|
getSvgPathFromStroke(getStroke(line, perfectFreehandOptions)),
|
||||||
|
);
|
||||||
|
ctx?.fill(pathData);
|
||||||
|
});
|
||||||
|
|
||||||
|
onChange?.($el.current.toDataURL());
|
||||||
}
|
}
|
||||||
|
|
||||||
newLines.forEach((line) => {
|
|
||||||
const pathData = new Path2D(getSvgPathFromStroke(getStroke(line, perfectFreehandOptions)));
|
|
||||||
ctx?.fill(pathData);
|
|
||||||
});
|
|
||||||
|
|
||||||
onChange?.($el.current.toDataURL());
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -263,6 +349,21 @@ export const SignaturePad = ({
|
|||||||
{...props}
|
{...props}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
{allowTypedSignature && (
|
||||||
|
<div
|
||||||
|
className={cn('ml-4 pb-1', {
|
||||||
|
'ml-10': lines.length > 0 || typedSignature.length > 0,
|
||||||
|
})}
|
||||||
|
>
|
||||||
|
<Input
|
||||||
|
placeholder="Type your signature"
|
||||||
|
className="w-1/2 border-none p-0 focus-visible:outline-none focus-visible:ring-0 focus-visible:ring-offset-0"
|
||||||
|
value={typedSignature}
|
||||||
|
onChange={handleTypedSignatureChange}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
|
||||||
<div className="text-foreground absolute right-2 top-2 filter">
|
<div className="text-foreground absolute right-2 top-2 filter">
|
||||||
<Select defaultValue={selectedColor} onValueChange={(value) => setSelectedColor(value)}>
|
<Select defaultValue={selectedColor} onValueChange={(value) => setSelectedColor(value)}>
|
||||||
<SelectTrigger className="h-auto w-auto border-none p-0.5">
|
<SelectTrigger className="h-auto w-auto border-none p-0.5">
|
||||||
@@ -311,13 +412,13 @@ export const SignaturePad = ({
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{lines.length > 0 && (
|
{(lines.length > 0 || typedSignature.length > 0) && (
|
||||||
<div className="absolute bottom-4 left-4 flex gap-2">
|
<div className="absolute bottom-4 left-4 flex gap-2">
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
title="undo"
|
title="undo"
|
||||||
className="focus-visible:ring-ring ring-offset-background text-muted-foreground/60 hover:text-muted-foreground rounded-full p-0 text-[0.688rem] focus-visible:outline-none focus-visible:ring-2"
|
className="focus-visible:ring-ring ring-offset-background text-muted-foreground/60 hover:text-muted-foreground rounded-full p-0 text-[0.688rem] focus-visible:outline-none focus-visible:ring-2"
|
||||||
onClick={() => onUndoClick()}
|
onClick={onUndoClick}
|
||||||
>
|
>
|
||||||
<Undo2 className="h-4 w-4" />
|
<Undo2 className="h-4 w-4" />
|
||||||
<span className="sr-only">Undo</span>
|
<span className="sr-only">Undo</span>
|
||||||
|
|||||||
Reference in New Issue
Block a user