- {field.Recipient.signingStatus === SigningStatus.SIGNED &&
+ {field.recipient.signingStatus === SigningStatus.SIGNED &&
match(field)
.with({ type: FieldType.SIGNATURE }, (field) =>
- field.Signature?.signatureImageAsBase64 ? (
+ field.signature?.signatureImageAsBase64 ? (

) : (
- {field.Signature?.typedSignature}
+ {field.signature?.typedSignature}
),
)
@@ -153,7 +153,7 @@ export const DocumentReadOnlyFields = ({
.with({ type: FieldType.FREE_SIGNATURE }, () => null)
.exhaustive()}
- {field.Recipient.signingStatus === SigningStatus.NOT_SIGNED && (
+ {field.recipient.signingStatus === SigningStatus.NOT_SIGNED && (
{
@@ -419,11 +417,16 @@ export const ApiContractV1Implementation = createNextRoute(ApiContractV1, {
teamId: team?.id,
});
- const parsed = ZTemplateWithDataSchema.parse(template);
-
return {
status: 200,
- body: parsed,
+ body: {
+ ...template,
+ Field: template.fields.map((field) => ({
+ ...field,
+ fieldMeta: field.fieldMeta ? ZFieldMetaSchema.parse(field.fieldMeta) : null,
+ })),
+ Recipient: template.recipients,
+ },
};
} catch (err) {
return AppError.toRestAPIError(err);
@@ -442,12 +445,17 @@ export const ApiContractV1Implementation = createNextRoute(ApiContractV1, {
teamId: team?.id,
});
- const parsed = z.array(ZTemplateWithDataSchema).parse(templates);
-
return {
status: 200,
body: {
- templates: parsed,
+ templates: templates.map((template) => ({
+ ...template,
+ Field: template.fields.map((field) => ({
+ ...field,
+ fieldMeta: field.fieldMeta ? ZFieldMetaSchema.parse(field.fieldMeta) : null,
+ })),
+ Recipient: template.recipients,
+ })),
totalPages,
},
};
@@ -540,7 +548,7 @@ export const ApiContractV1Implementation = createNextRoute(ApiContractV1, {
status: 200,
body: {
documentId: document.id,
- recipients: document.Recipient.map((recipient) => ({
+ recipients: document.recipients.map((recipient) => ({
recipientId: recipient.id,
name: recipient.name,
email: recipient.email,
@@ -634,7 +642,7 @@ export const ApiContractV1Implementation = createNextRoute(ApiContractV1, {
status: 200,
body: {
documentId: document.id,
- recipients: document.Recipient.map((recipient) => ({
+ recipients: document.recipients.map((recipient) => ({
recipientId: recipient.id,
name: recipient.name,
email: recipient.email,
@@ -693,7 +701,7 @@ export const ApiContractV1Implementation = createNextRoute(ApiContractV1, {
});
}
- const { Recipient: recipients, ...sentDocument } = await sendDocument({
+ const { recipients, ...sentDocument } = await sendDocument({
documentId: document.id,
userId: user.id,
teamId: team?.id,
@@ -1074,7 +1082,7 @@ export const ApiContractV1Implementation = createNextRoute(ApiContractV1, {
fieldMeta: result.data,
},
include: {
- Recipient: true,
+ recipient: true,
},
});
@@ -1089,7 +1097,7 @@ export const ApiContractV1Implementation = createNextRoute(ApiContractV1, {
},
data: {
fieldId: field.secondaryId,
- fieldRecipientEmail: field.Recipient?.email ?? '',
+ fieldRecipientEmail: field.recipient?.email ?? '',
fieldRecipientId: recipientId,
fieldType: field.type,
},
@@ -1108,7 +1116,7 @@ export const ApiContractV1Implementation = createNextRoute(ApiContractV1, {
pageWidth: Number(field.width),
pageHeight: Number(field.height),
customText: field.customText,
- fieldMeta: ZFieldMetaSchema.parse(field.fieldMeta),
+ fieldMeta: field.fieldMeta ? ZFieldMetaSchema.parse(field.fieldMeta) : undefined,
inserted: field.inserted,
};
}),
diff --git a/packages/app-tests/e2e/document-auth/action-auth.spec.ts b/packages/app-tests/e2e/document-auth/action-auth.spec.ts
index 72fa0c8b6..babe361f4 100644
--- a/packages/app-tests/e2e/document-auth/action-auth.spec.ts
+++ b/packages/app-tests/e2e/document-auth/action-auth.spec.ts
@@ -28,7 +28,7 @@ test('[DOCUMENT_AUTH]: should allow signing when no auth setup', async ({ page }
// Check that both are granted access.
for (const recipient of recipients) {
- const { token, Field } = recipient;
+ const { token, fields } = recipient;
const signUrl = `/sign/${token}`;
@@ -45,7 +45,7 @@ test('[DOCUMENT_AUTH]: should allow signing when no auth setup', async ({ page }
await page.mouse.up();
}
- for (const field of Field) {
+ for (const field of fields) {
await page.locator(`#field-${field.id}`).getByRole('button').click();
if (field.type === FieldType.TEXT) {
@@ -80,7 +80,7 @@ test('[DOCUMENT_AUTH]: should allow signing with valid global auth', async ({ pa
const recipient = recipients[0];
- const { token, Field } = recipient;
+ const { token, fields } = recipient;
const signUrl = `/sign/${token}`;
@@ -102,7 +102,7 @@ test('[DOCUMENT_AUTH]: should allow signing with valid global auth', async ({ pa
await page.mouse.up();
}
- for (const field of Field) {
+ for (const field of fields) {
await page.locator(`#field-${field.id}`).getByRole('button').click();
if (field.type === FieldType.TEXT) {
@@ -170,12 +170,12 @@ test('[DOCUMENT_AUTH]: should deny signing fields when required for global auth'
// Check that both are denied access.
for (const recipient of recipients) {
- const { token, Field } = recipient;
+ const { token, fields } = recipient;
await page.goto(`/sign/${token}`);
await expect(page.getByRole('heading', { name: 'Sign Document' })).toBeVisible();
- for (const field of Field) {
+ for (const field of fields) {
if (field.type !== FieldType.SIGNATURE) {
continue;
}
@@ -229,7 +229,7 @@ test('[DOCUMENT_AUTH]: should allow field signing when required for recipient au
});
for (const recipient of recipients) {
- const { token, Field } = recipient;
+ const { token, fields } = recipient;
const { actionAuth } = ZRecipientAuthOptionsSchema.parse(recipient.authOptions);
// This document has no global action auth, so only account should require auth.
@@ -241,7 +241,7 @@ test('[DOCUMENT_AUTH]: should allow field signing when required for recipient au
await expect(page.getByRole('heading', { name: 'Sign Document' })).toBeVisible();
if (isAuthRequired) {
- for (const field of Field) {
+ for (const field of fields) {
if (field.type !== FieldType.SIGNATURE) {
continue;
}
@@ -271,7 +271,7 @@ test('[DOCUMENT_AUTH]: should allow field signing when required for recipient au
await page.mouse.up();
}
- for (const field of Field) {
+ for (const field of fields) {
await page.locator(`#field-${field.id}`).getByRole('button').click();
if (field.type === FieldType.TEXT) {
@@ -340,7 +340,7 @@ test('[DOCUMENT_AUTH]: should allow field signing when required for recipient an
});
for (const recipient of recipients) {
- const { token, Field } = recipient;
+ const { token, fields } = recipient;
const { actionAuth } = ZRecipientAuthOptionsSchema.parse(recipient.authOptions);
// This document HAS global action auth, so account and inherit should require auth.
@@ -352,7 +352,7 @@ test('[DOCUMENT_AUTH]: should allow field signing when required for recipient an
await expect(page.getByRole('heading', { name: 'Sign Document' })).toBeVisible();
if (isAuthRequired) {
- for (const field of Field) {
+ for (const field of fields) {
if (field.type !== FieldType.SIGNATURE) {
continue;
}
@@ -382,7 +382,7 @@ test('[DOCUMENT_AUTH]: should allow field signing when required for recipient an
await page.mouse.up();
}
- for (const field of Field) {
+ for (const field of fields) {
await page.locator(`#field-${field.id}`).getByRole('button').click();
if (field.type === FieldType.TEXT) {
diff --git a/packages/app-tests/e2e/document-flow/stepper-component.spec.ts b/packages/app-tests/e2e/document-flow/stepper-component.spec.ts
index f50c40144..da4eae6d7 100644
--- a/packages/app-tests/e2e/document-flow/stepper-component.spec.ts
+++ b/packages/app-tests/e2e/document-flow/stepper-component.spec.ts
@@ -24,7 +24,7 @@ import { apiSignin } from '../fixtures/authentication';
const getDocumentByToken = async (token: string) => {
return await prisma.document.findFirstOrThrow({
where: {
- Recipient: {
+ recipients: {
some: {
token,
},
@@ -357,7 +357,7 @@ test('[DOCUMENT_FLOW]: should be able to approve a document', async ({ page }) =
});
for (const recipient of recipients) {
- const { token, Field, role } = recipient;
+ const { token, fields, role } = recipient;
const signUrl = `/sign/${token}`;
@@ -378,7 +378,7 @@ test('[DOCUMENT_FLOW]: should be able to approve a document', async ({ page }) =
await page.mouse.up();
}
- for (const field of Field) {
+ for (const field of fields) {
await page.locator(`#field-${field.id}`).getByRole('button').click();
await expect(page.locator(`#field-${field.id}`)).toHaveAttribute('data-inserted', 'true');
@@ -479,8 +479,8 @@ test('[DOCUMENT_FLOW]: should be able to sign a document with custom date', asyn
fields: [FieldType.DATE],
});
- const { token, Field } = recipients[0];
- const [recipientField] = Field;
+ const { token, fields } = recipients[0];
+ const [recipientField] = fields;
await page.goto(`/sign/${token}`);
await page.waitForURL(`/sign/${token}`);
@@ -496,7 +496,7 @@ test('[DOCUMENT_FLOW]: should be able to sign a document with custom date', asyn
const field = await prisma.field.findFirst({
where: {
- Recipient: {
+ recipient: {
email: 'user1@example.com',
},
documentId: Number(document.id),
@@ -580,14 +580,14 @@ test('[DOCUMENT_FLOW]: should be able to create and sign a document with 3 recip
const createdDocument = await prisma.document.findFirst({
where: { title: documentTitle },
- include: { Recipient: true },
+ include: { recipients: true },
});
expect(createdDocument).not.toBeNull();
- expect(createdDocument?.Recipient.length).toBe(3);
+ expect(createdDocument?.recipients.length).toBe(3);
for (let i = 0; i < 3; i++) {
- const recipient = createdDocument?.Recipient.find(
+ const recipient = createdDocument?.recipients.find(
(r) => r.email === `user${i + 1}@example.com`,
);
expect(recipient).not.toBeNull();
diff --git a/packages/app-tests/e2e/documents/delete-documents.spec.ts b/packages/app-tests/e2e/documents/delete-documents.spec.ts
index 8b5d4c587..db161300c 100644
--- a/packages/app-tests/e2e/documents/delete-documents.spec.ts
+++ b/packages/app-tests/e2e/documents/delete-documents.spec.ts
@@ -129,7 +129,7 @@ test('[DOCUMENTS]: deleting a pending document should remove it from recipients'
// signout
await apiSignout({ page });
- for (const recipient of pendingDocument.Recipient) {
+ for (const recipient of pendingDocument.recipients) {
await apiSignin({
page,
email: recipient.email,
diff --git a/packages/app-tests/e2e/features/include-document-certificate.spec.ts b/packages/app-tests/e2e/features/include-document-certificate.spec.ts
index 276e79cc2..730345d42 100644
--- a/packages/app-tests/e2e/features/include-document-certificate.spec.ts
+++ b/packages/app-tests/e2e/features/include-document-certificate.spec.ts
@@ -45,7 +45,7 @@ test.describe('Signing Certificate Tests', () => {
await page.mouse.up();
}
- for (const field of recipient.Field) {
+ for (const field of recipient.fields) {
await page.locator(`#field-${field.id}`).getByRole('button').click();
await expect(page.locator(`#field-${field.id}`)).toHaveAttribute('data-inserted', 'true');
@@ -122,7 +122,7 @@ test.describe('Signing Certificate Tests', () => {
await page.mouse.up();
}
- for (const field of recipient.Field) {
+ for (const field of recipient.fields) {
await page.locator(`#field-${field.id}`).getByRole('button').click();
await expect(page.locator(`#field-${field.id}`)).toHaveAttribute('data-inserted', 'true');
@@ -199,7 +199,7 @@ test.describe('Signing Certificate Tests', () => {
await page.mouse.up();
}
- for (const field of recipient.Field) {
+ for (const field of recipient.fields) {
await page.locator(`#field-${field.id}`).getByRole('button').click();
await expect(page.locator(`#field-${field.id}`)).toHaveAttribute('data-inserted', 'true');
diff --git a/packages/app-tests/e2e/templates/create-document-from-template.spec.ts b/packages/app-tests/e2e/templates/create-document-from-template.spec.ts
index 16f155cb2..8f5038d6a 100644
--- a/packages/app-tests/e2e/templates/create-document-from-template.spec.ts
+++ b/packages/app-tests/e2e/templates/create-document-from-template.spec.ts
@@ -124,7 +124,7 @@ test('[TEMPLATE]: should create a document from a template', async ({ page }) =>
id: documentId,
},
include: {
- Recipient: true,
+ recipients: true,
documentMeta: true,
},
});
@@ -144,8 +144,8 @@ test('[TEMPLATE]: should create a document from a template', async ({ page }) =>
expect(document.documentMeta?.subject).toEqual('SUBJECT');
expect(document.documentMeta?.timezone).toEqual('Etc/UTC');
- const recipientOne = document.Recipient[0];
- const recipientTwo = document.Recipient[1];
+ const recipientOne = document.recipients[0];
+ const recipientTwo = document.recipients[1];
const recipientOneAuth = extractDocumentAuthMethods({
documentAuth: document.authOptions,
@@ -259,7 +259,7 @@ test('[TEMPLATE]: should create a team document from a team template', async ({
id: documentId,
},
include: {
- Recipient: true,
+ recipients: true,
documentMeta: true,
},
});
@@ -281,8 +281,8 @@ test('[TEMPLATE]: should create a team document from a team template', async ({
expect(document.documentMeta?.subject).toEqual('SUBJECT');
expect(document.documentMeta?.timezone).toEqual('Etc/UTC');
- const recipientOne = document.Recipient[0];
- const recipientTwo = document.Recipient[1];
+ const recipientOne = document.recipients[0];
+ const recipientTwo = document.recipients[1];
const recipientOneAuth = extractDocumentAuthMethods({
documentAuth: document.authOptions,
diff --git a/packages/app-tests/e2e/templates/direct-templates.spec.ts b/packages/app-tests/e2e/templates/direct-templates.spec.ts
index 05612d2e6..c8f41f4fc 100644
--- a/packages/app-tests/e2e/templates/direct-templates.spec.ts
+++ b/packages/app-tests/e2e/templates/direct-templates.spec.ts
@@ -260,7 +260,7 @@ test('[DIRECT_TEMPLATES]: use direct template link with 2 recipients', async ({
const secondRecipient = await seedUser();
const createTemplateOptions = {
- Recipient: {
+ recipients: {
createMany: {
data: [
{
diff --git a/packages/ee/server-only/limits/server.ts b/packages/ee/server-only/limits/server.ts
index ad079c95d..34df6cfa8 100644
--- a/packages/ee/server-only/limits/server.ts
+++ b/packages/ee/server-only/limits/server.ts
@@ -43,7 +43,7 @@ const handleUserLimits = async ({ email }: HandleUserLimitsOptions) => {
email,
},
include: {
- Subscription: true,
+ subscriptions: true,
},
});
@@ -54,7 +54,7 @@ const handleUserLimits = async ({ email }: HandleUserLimitsOptions) => {
let quota = structuredClone(FREE_PLAN_LIMITS);
let remaining = structuredClone(FREE_PLAN_LIMITS);
- const activeSubscriptions = user.Subscription.filter(
+ const activeSubscriptions = user.subscriptions.filter(
({ status }) => status === SubscriptionStatus.ACTIVE,
);
diff --git a/packages/ee/server-only/stripe/transfer-team-subscription.ts b/packages/ee/server-only/stripe/transfer-team-subscription.ts
index 08a85ed27..eedb73284 100644
--- a/packages/ee/server-only/stripe/transfer-team-subscription.ts
+++ b/packages/ee/server-only/stripe/transfer-team-subscription.ts
@@ -14,7 +14,7 @@ type TransferStripeSubscriptionOptions = {
/**
* The user to transfer the subscription to.
*/
- user: User & { Subscription: Subscription[] };
+ user: User & { subscriptions: Subscription[] };
/**
* The team the subscription is associated with.
@@ -54,7 +54,7 @@ export const transferTeamSubscription = async ({
]);
const teamSubscriptionRequired = !subscriptionsContainsActivePlan(
- user.Subscription,
+ user.subscriptions,
teamRelatedPlanPriceIds,
);
diff --git a/packages/ee/server-only/stripe/webhook/handler.ts b/packages/ee/server-only/stripe/webhook/handler.ts
index 23705438a..ae03be6b1 100644
--- a/packages/ee/server-only/stripe/webhook/handler.ts
+++ b/packages/ee/server-only/stripe/webhook/handler.ts
@@ -10,7 +10,6 @@ import { createTeamFromPendingTeam } from '@documenso/lib/server-only/team/creat
import { getFlag } from '@documenso/lib/universal/get-feature-flag';
import { prisma } from '@documenso/prisma';
-import { onEarlyAdoptersCheckout } from './on-early-adopters-checkout';
import { onSubscriptionDeleted } from './on-subscription-deleted';
import { onSubscriptionUpdated } from './on-subscription-updated';
@@ -56,10 +55,6 @@ export const stripeWebhookHandler = async (
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
const session = event.data.object as Stripe.Checkout.Session;
- if (session.metadata?.source === 'marketing') {
- await onEarlyAdoptersCheckout({ session });
- }
-
const customerId =
typeof session.customer === 'string' ? session.customer : session.customer?.id;
diff --git a/packages/ee/server-only/stripe/webhook/on-early-adopters-checkout.ts b/packages/ee/server-only/stripe/webhook/on-early-adopters-checkout.ts
deleted file mode 100644
index a2aac4f27..000000000
--- a/packages/ee/server-only/stripe/webhook/on-early-adopters-checkout.ts
+++ /dev/null
@@ -1,140 +0,0 @@
-import type Stripe from 'stripe';
-
-import { hashSync } from '@documenso/lib/server-only/auth/hash';
-import { sealDocument } from '@documenso/lib/server-only/document/seal-document';
-import { redis } from '@documenso/lib/server-only/redis';
-import { stripe } from '@documenso/lib/server-only/stripe';
-import { alphaid, nanoid } from '@documenso/lib/universal/id';
-import { putPdfFile } from '@documenso/lib/universal/upload/put-file';
-import { prisma } from '@documenso/prisma';
-import {
- DocumentSource,
- DocumentStatus,
- FieldType,
- ReadStatus,
- SendStatus,
- SigningStatus,
-} from '@documenso/prisma/client';
-
-import { ZEarlyAdopterCheckoutMetadataSchema } from './early-adopter-checkout-metadata';
-
-export type OnEarlyAdoptersCheckoutOptions = {
- session: Stripe.Checkout.Session;
-};
-
-export const onEarlyAdoptersCheckout = async ({ session }: OnEarlyAdoptersCheckoutOptions) => {
- try {
- const safeMetadata = ZEarlyAdopterCheckoutMetadataSchema.safeParse(session.metadata);
-
- if (!safeMetadata.success) {
- return;
- }
-
- const { email, name, signatureText, signatureDataUrl: signatureDataUrlRef } = safeMetadata.data;
-
- const user = await prisma.user.findFirst({
- where: {
- email: email.toLowerCase(),
- },
- });
-
- if (user) {
- return;
- }
-
- const tempPassword = nanoid(12);
-
- const newUser = await prisma.user.create({
- data: {
- name,
- email: email.toLowerCase(),
- password: hashSync(tempPassword),
- signature: signatureDataUrlRef,
- },
- });
-
- const customerId =
- typeof session.customer === 'string' ? session.customer : session.customer?.id;
-
- if (customerId) {
- await stripe.customers.update(customerId, {
- metadata: {
- userId: newUser.id,
- },
- });
- }
-
- await redis.set(`user:${newUser.id}:temp-password`, tempPassword, {
- // expire in 1 week
- ex: 60 * 60 * 24 * 7,
- });
-
- const signatureDataUrl = await redis.get(`signature:${session.client_reference_id}`);
-
- const documentBuffer = await fetch(
- new URL('@documenso/assets/documenso-supporter-pledge.pdf', import.meta.url),
- ).then(async (res) => res.arrayBuffer());
-
- const { id: documentDataId } = await putPdfFile({
- name: 'Documenso Supporter Pledge.pdf',
- type: 'application/pdf',
- arrayBuffer: async () => Promise.resolve(documentBuffer),
- });
-
- const document = await prisma.document.create({
- data: {
- title: 'Documenso Supporter Pledge.pdf',
- status: DocumentStatus.COMPLETED,
- userId: newUser.id,
- documentDataId,
- source: DocumentSource.DOCUMENT,
- },
- });
-
- const recipient = await prisma.recipient.create({
- data: {
- name,
- email: email.toLowerCase(),
- token: alphaid(),
- readStatus: ReadStatus.OPENED,
- sendStatus: SendStatus.SENT,
- signingStatus: SigningStatus.SIGNED,
- signedAt: new Date(),
- documentId: document.id,
- },
- });
-
- await prisma.field.create({
- data: {
- type: FieldType.SIGNATURE,
- recipientId: recipient.id,
- documentId: document.id,
- page: 1,
- positionX: 12.2781,
- positionY: 81.5789,
- height: 6.8649,
- width: 29.5857,
- inserted: true,
- customText: '',
-
- Signature: {
- create: {
- typedSignature: signatureDataUrl ? null : signatureText || name,
- signatureImageAsBase64: signatureDataUrl,
- recipientId: recipient.id,
- },
- },
- },
- });
-
- await sealDocument({
- documentId: document.id,
- sendEmail: false,
- });
- } catch (error) {
- // We don't want to break the checkout process if something goes wrong here.
- // This is an additive experience for early adopters, breaking their ability
- // join would be far worse than not having a signed pledge.
- console.error('early-supporter-error', error);
- }
-};
diff --git a/packages/ee/server-only/util/is-document-enterprise.ts b/packages/ee/server-only/util/is-document-enterprise.ts
index c49d98edb..1a2bb6cf5 100644
--- a/packages/ee/server-only/util/is-document-enterprise.ts
+++ b/packages/ee/server-only/util/is-document-enterprise.ts
@@ -35,12 +35,12 @@ export const isUserEnterprise = async ({
select: {
owner: {
include: {
- Subscription: true,
+ subscriptions: true,
},
},
},
})
- .then((team) => team.owner.Subscription);
+ .then((team) => team.owner.subscriptions);
} else {
subscriptions = await prisma.user
.findFirstOrThrow({
@@ -48,10 +48,10 @@ export const isUserEnterprise = async ({
id: userId,
},
select: {
- Subscription: true,
+ subscriptions: true,
},
})
- .then((user) => user.Subscription);
+ .then((user) => user.subscriptions);
}
if (subscriptions.length === 0) {
diff --git a/packages/ee/server-only/util/is-document-platform.ts b/packages/ee/server-only/util/is-document-platform.ts
index 3cea7a081..67d9d6acd 100644
--- a/packages/ee/server-only/util/is-document-platform.ts
+++ b/packages/ee/server-only/util/is-document-platform.ts
@@ -32,12 +32,12 @@ export const isDocumentPlatform = async ({
select: {
owner: {
include: {
- Subscription: true,
+ subscriptions: true,
},
},
},
})
- .then((team) => team.owner.Subscription);
+ .then((team) => team.owner.subscriptions);
} else {
subscriptions = await prisma.user
.findFirstOrThrow({
@@ -45,10 +45,10 @@ export const isDocumentPlatform = async ({
id: userId,
},
select: {
- Subscription: true,
+ subscriptions: true,
},
})
- .then((user) => user.Subscription);
+ .then((user) => user.subscriptions);
}
if (subscriptions.length === 0) {
diff --git a/packages/lib/jobs/definitions/emails/send-recipient-signed-email.ts b/packages/lib/jobs/definitions/emails/send-recipient-signed-email.ts
index 7fff47395..5f1691ba9 100644
--- a/packages/lib/jobs/definitions/emails/send-recipient-signed-email.ts
+++ b/packages/lib/jobs/definitions/emails/send-recipient-signed-email.ts
@@ -36,19 +36,19 @@ export const SEND_RECIPIENT_SIGNED_EMAIL_JOB_DEFINITION = {
const document = await prisma.document.findFirst({
where: {
id: documentId,
- Recipient: {
+ recipients: {
some: {
id: recipientId,
},
},
},
include: {
- Recipient: {
+ recipients: {
where: {
id: recipientId,
},
},
- User: true,
+ user: true,
documentMeta: true,
team: {
include: {
@@ -62,7 +62,7 @@ export const SEND_RECIPIENT_SIGNED_EMAIL_JOB_DEFINITION = {
throw new Error('Document not found');
}
- if (document.Recipient.length === 0) {
+ if (document.recipients.length === 0) {
throw new Error('Document has no recipients');
}
@@ -74,9 +74,9 @@ export const SEND_RECIPIENT_SIGNED_EMAIL_JOB_DEFINITION = {
return;
}
- const [recipient] = document.Recipient;
+ const [recipient] = document.recipients;
const { email: recipientEmail, name: recipientName } = recipient;
- const { User: owner } = document;
+ const { user: owner } = document;
const recipientReference = recipientName || recipientEmail;
diff --git a/packages/lib/jobs/definitions/emails/send-rejection-emails.handler.ts b/packages/lib/jobs/definitions/emails/send-rejection-emails.handler.ts
index 3255a77ce..3dfea785e 100644
--- a/packages/lib/jobs/definitions/emails/send-rejection-emails.handler.ts
+++ b/packages/lib/jobs/definitions/emails/send-rejection-emails.handler.ts
@@ -33,7 +33,7 @@ export const run = async ({
id: documentId,
},
include: {
- User: true,
+ user: true,
documentMeta: true,
team: {
select: {
@@ -53,7 +53,7 @@ export const run = async ({
}),
]);
- const { documentMeta, team, User: documentOwner } = document;
+ const { documentMeta, user: documentOwner } = document;
const isEmailEnabled = extractDerivedDocumentEmailSettings(
document.documentMeta,
@@ -70,7 +70,7 @@ export const run = async ({
const recipientTemplate = createElement(DocumentRejectionConfirmedEmail, {
recipientName: recipient.name,
documentName: document.title,
- documentOwnerName: document.User.name || document.User.email,
+ documentOwnerName: document.user.name || document.user.email,
reason: recipient.rejectionReason || '',
assetBaseUrl: NEXT_PUBLIC_WEBAPP_URL(),
});
diff --git a/packages/lib/jobs/definitions/internal/seal-document.handler.ts b/packages/lib/jobs/definitions/internal/seal-document.handler.ts
index da0c6c5be..a53174a82 100644
--- a/packages/lib/jobs/definitions/internal/seal-document.handler.ts
+++ b/packages/lib/jobs/definitions/internal/seal-document.handler.ts
@@ -20,7 +20,10 @@ import { insertFieldInPDF } from '../../../server-only/pdf/insert-field-in-pdf';
import { normalizeSignatureAppearances } from '../../../server-only/pdf/normalize-signature-appearances';
import { triggerWebhook } from '../../../server-only/webhooks/trigger/trigger-webhook';
import { DOCUMENT_AUDIT_LOG_TYPE } from '../../../types/document-audit-logs';
-import { ZWebhookDocumentSchema } from '../../../types/webhook-payload';
+import {
+ ZWebhookDocumentSchema,
+ mapDocumentToWebhookDocumentPayload,
+} from '../../../types/webhook-payload';
import { getFile } from '../../../universal/upload/get-file';
import { putPdfFile } from '../../../universal/upload/put-file';
import { fieldsContainUnsignedRequiredField } from '../../../utils/advanced-fields-helpers';
@@ -40,7 +43,7 @@ export const run = async ({
const document = await prisma.document.findFirstOrThrow({
where: {
id: documentId,
- Recipient: {
+ recipients: {
every: {
signingStatus: SigningStatus.SIGNED,
},
@@ -48,7 +51,7 @@ export const run = async ({
},
include: {
documentMeta: true,
- Recipient: true,
+ recipients: true,
team: {
select: {
teamGlobalSettings: {
@@ -102,7 +105,7 @@ export const run = async ({
documentId: document.id,
},
include: {
- Signature: true,
+ signature: true,
},
});
@@ -243,13 +246,13 @@ export const run = async ({
include: {
documentData: true,
documentMeta: true,
- Recipient: true,
+ recipients: true,
},
});
await triggerWebhook({
event: WebhookTriggerEvents.DOCUMENT_COMPLETED,
- data: ZWebhookDocumentSchema.parse(updatedDocument),
+ data: ZWebhookDocumentSchema.parse(mapDocumentToWebhookDocumentPayload(updatedDocument)),
userId: updatedDocument.userId,
teamId: updatedDocument.teamId ?? undefined,
});
diff --git a/packages/lib/next-auth/auth-options.ts b/packages/lib/next-auth/auth-options.ts
index b1fdd891f..9aa0c810e 100644
--- a/packages/lib/next-auth/auth-options.ts
+++ b/packages/lib/next-auth/auth-options.ts
@@ -248,7 +248,7 @@ export const NEXT_AUTH_OPTIONS: AuthOptions = {
credentialId: Buffer.from(requestBodyCrediential.id, 'base64'),
},
include: {
- User: {
+ user: {
select: {
id: true,
email: true,
@@ -263,7 +263,7 @@ export const NEXT_AUTH_OPTIONS: AuthOptions = {
throw new AppError(AppErrorCode.NOT_SETUP);
}
- const user = passkey.User;
+ const user = passkey.user;
const { rpId, origin } = getAuthenticatorOptions();
diff --git a/packages/lib/server-only/admin/get-all-documents.ts b/packages/lib/server-only/admin/get-all-documents.ts
index 1037c3c80..f80967ad9 100644
--- a/packages/lib/server-only/admin/get-all-documents.ts
+++ b/packages/lib/server-only/admin/get-all-documents.ts
@@ -30,14 +30,14 @@ export const findDocuments = async ({ query, page = 1, perPage = 10 }: FindDocum
createdAt: 'desc',
},
include: {
- User: {
+ user: {
select: {
id: true,
name: true,
email: true,
},
},
- Recipient: true,
+ recipients: true,
},
}),
prisma.document.count({
diff --git a/packages/lib/server-only/admin/get-entire-document.ts b/packages/lib/server-only/admin/get-entire-document.ts
index 8b7650d7b..c50bdb5c4 100644
--- a/packages/lib/server-only/admin/get-entire-document.ts
+++ b/packages/lib/server-only/admin/get-entire-document.ts
@@ -11,18 +11,18 @@ export const getEntireDocument = async ({ id }: GetEntireDocumentOptions) => {
},
include: {
documentMeta: true,
- User: {
+ user: {
select: {
id: true,
name: true,
email: true,
},
},
- Recipient: {
+ recipients: {
include: {
- Field: {
+ fields: {
include: {
- Signature: true,
+ signature: true,
},
},
},
diff --git a/packages/lib/server-only/admin/get-signing-volume.ts b/packages/lib/server-only/admin/get-signing-volume.ts
index 819bdaeb9..497000501 100644
--- a/packages/lib/server-only/admin/get-signing-volume.ts
+++ b/packages/lib/server-only/admin/get-signing-volume.ts
@@ -28,7 +28,7 @@ export async function getSigningVolume({
status: 'ACTIVE',
OR: [
{
- User: {
+ user: {
OR: [
{ name: { contains: search, mode: 'insensitive' } },
{ email: { contains: search, mode: 'insensitive' } },
@@ -47,11 +47,11 @@ export async function getSigningVolume({
prisma.subscription.findMany({
where: whereClause,
include: {
- User: {
+ user: {
select: {
name: true,
email: true,
- Document: {
+ documents: {
where: {
status: DocumentStatus.COMPLETED,
deletedAt: null,
@@ -63,7 +63,7 @@ export async function getSigningVolume({
team: {
select: {
name: true,
- document: {
+ documents: {
where: {
status: DocumentStatus.COMPLETED,
deletedAt: null,
@@ -74,7 +74,7 @@ export async function getSigningVolume({
},
orderBy:
sortBy === 'name'
- ? [{ User: { name: sortOrder } }, { team: { name: sortOrder } }, { createdAt: 'desc' }]
+ ? [{ user: { name: sortOrder } }, { team: { name: sortOrder } }, { createdAt: 'desc' }]
: sortBy === 'createdAt'
? [{ createdAt: sortOrder }]
: undefined,
@@ -88,9 +88,9 @@ export async function getSigningVolume({
const leaderboardWithVolume: SigningVolume[] = subscriptions.map((subscription) => {
const name =
- subscription.User?.name || subscription.team?.name || subscription.User?.email || 'Unknown';
- const userSignedDocs = subscription.User?.Document?.length || 0;
- const teamSignedDocs = subscription.team?.document?.length || 0;
+ subscription.user?.name || subscription.team?.name || subscription.user?.email || 'Unknown';
+ const userSignedDocs = subscription.user?.documents?.length || 0;
+ const teamSignedDocs = subscription.team?.documents?.length || 0;
return {
id: subscription.id,
name,
diff --git a/packages/lib/server-only/admin/get-users-stats.ts b/packages/lib/server-only/admin/get-users-stats.ts
index 0f4a2f0b4..6dc953181 100644
--- a/packages/lib/server-only/admin/get-users-stats.ts
+++ b/packages/lib/server-only/admin/get-users-stats.ts
@@ -10,7 +10,7 @@ export const getUsersCount = async () => {
export const getUsersWithSubscriptionsCount = async () => {
return await prisma.user.count({
where: {
- Subscription: {
+ subscriptions: {
some: {
status: SubscriptionStatus.ACTIVE,
},
@@ -22,7 +22,7 @@ export const getUsersWithSubscriptionsCount = async () => {
export const getUserWithAtLeastOneDocumentPerMonth = async () => {
return await prisma.user.count({
where: {
- Document: {
+ documents: {
some: {
createdAt: {
gte: DateTime.now().minus({ months: 1 }).toJSDate(),
@@ -36,7 +36,7 @@ export const getUserWithAtLeastOneDocumentPerMonth = async () => {
export const getUserWithAtLeastOneDocumentSignedPerMonth = async () => {
return await prisma.user.count({
where: {
- Document: {
+ documents: {
some: {
status: {
equals: DocumentStatus.COMPLETED,
diff --git a/packages/lib/server-only/auth/send-confirmation-email.ts b/packages/lib/server-only/auth/send-confirmation-email.ts
index 5673d9603..36b256965 100644
--- a/packages/lib/server-only/auth/send-confirmation-email.ts
+++ b/packages/lib/server-only/auth/send-confirmation-email.ts
@@ -23,7 +23,7 @@ export const sendConfirmationEmail = async ({ userId }: SendConfirmationEmailPro
id: userId,
},
include: {
- VerificationToken: {
+ verificationTokens: {
orderBy: {
createdAt: 'desc',
},
@@ -32,7 +32,7 @@ export const sendConfirmationEmail = async ({ userId }: SendConfirmationEmailPro
},
});
- const [verificationToken] = user.VerificationToken;
+ const [verificationToken] = user.verificationTokens;
if (!verificationToken?.token) {
throw new Error('Verification token not found for the user');
diff --git a/packages/lib/server-only/auth/send-forgot-password.ts b/packages/lib/server-only/auth/send-forgot-password.ts
index fef1543c3..6bf5da3e9 100644
--- a/packages/lib/server-only/auth/send-forgot-password.ts
+++ b/packages/lib/server-only/auth/send-forgot-password.ts
@@ -20,7 +20,7 @@ export const sendForgotPassword = async ({ userId }: SendForgotPasswordOptions)
id: userId,
},
include: {
- PasswordResetToken: {
+ passwordResetTokens: {
orderBy: {
createdAt: 'desc',
},
@@ -33,7 +33,7 @@ export const sendForgotPassword = async ({ userId }: SendForgotPasswordOptions)
throw new Error('User not found');
}
- const token = user.PasswordResetToken[0].token;
+ const token = user.passwordResetTokens[0].token;
const assetBaseUrl = NEXT_PUBLIC_WEBAPP_URL() || 'http://localhost:3000';
const resetPasswordLink = `${NEXT_PUBLIC_WEBAPP_URL()}/reset-password/${token}`;
diff --git a/packages/lib/server-only/document/complete-document-with-token.ts b/packages/lib/server-only/document/complete-document-with-token.ts
index c7cc9491e..8db7a7abe 100644
--- a/packages/lib/server-only/document/complete-document-with-token.ts
+++ b/packages/lib/server-only/document/complete-document-with-token.ts
@@ -14,7 +14,10 @@ import {
import { jobs } from '../../jobs/client';
import type { TRecipientActionAuth } from '../../types/document-auth';
-import { ZWebhookDocumentSchema } from '../../types/webhook-payload';
+import {
+ ZWebhookDocumentSchema,
+ mapDocumentToWebhookDocumentPayload,
+} from '../../types/webhook-payload';
import { getIsRecipientsTurnToSign } from '../recipient/get-is-recipient-turn';
import { triggerWebhook } from '../webhooks/trigger/trigger-webhook';
import { sendPendingEmail } from './send-pending-email';
@@ -31,7 +34,7 @@ const getDocument = async ({ token, documentId }: CompleteDocumentWithTokenOptio
return await prisma.document.findFirstOrThrow({
where: {
id: documentId,
- Recipient: {
+ recipients: {
some: {
token,
},
@@ -39,7 +42,7 @@ const getDocument = async ({ token, documentId }: CompleteDocumentWithTokenOptio
},
include: {
documentMeta: true,
- Recipient: {
+ recipients: {
where: {
token,
},
@@ -59,11 +62,11 @@ export const completeDocumentWithToken = async ({
throw new Error(`Document ${document.id} must be pending`);
}
- if (document.Recipient.length === 0) {
+ if (document.recipients.length === 0) {
throw new Error(`Document ${document.id} has no recipient with token ${token}`);
}
- const [recipient] = document.Recipient;
+ const [recipient] = document.recipients;
if (recipient.signingStatus === SigningStatus.SIGNED) {
throw new Error(`Recipient ${recipient.id} has already signed`);
@@ -195,7 +198,7 @@ export const completeDocumentWithToken = async ({
const haveAllRecipientsSigned = await prisma.document.findFirst({
where: {
id: document.id,
- Recipient: {
+ recipients: {
every: {
OR: [{ signingStatus: SigningStatus.SIGNED }, { role: RecipientRole.CC }],
},
@@ -219,13 +222,13 @@ export const completeDocumentWithToken = async ({
},
include: {
documentMeta: true,
- Recipient: true,
+ recipients: true,
},
});
await triggerWebhook({
event: WebhookTriggerEvents.DOCUMENT_SIGNED,
- data: ZWebhookDocumentSchema.parse(updatedDocument),
+ data: ZWebhookDocumentSchema.parse(mapDocumentToWebhookDocumentPayload(updatedDocument)),
userId: updatedDocument.userId,
teamId: updatedDocument.teamId ?? undefined,
});
diff --git a/packages/lib/server-only/document/create-document.ts b/packages/lib/server-only/document/create-document.ts
index 2a12c949d..6dee14b98 100644
--- a/packages/lib/server-only/document/create-document.ts
+++ b/packages/lib/server-only/document/create-document.ts
@@ -13,7 +13,10 @@ import type { Team, TeamGlobalSettings } from '@documenso/prisma/client';
import { TeamMemberRole } from '@documenso/prisma/client';
import { DocumentSchema } from '@documenso/prisma/generated/zod';
-import { ZWebhookDocumentSchema } from '../../types/webhook-payload';
+import {
+ ZWebhookDocumentSchema,
+ mapDocumentToWebhookDocumentPayload,
+} from '../../types/webhook-payload';
import { getFile } from '../../universal/upload/get-file';
import { putPdfFile } from '../../universal/upload/put-file';
import { triggerWebhook } from '../webhooks/trigger/trigger-webhook';
@@ -178,7 +181,7 @@ export const createDocument = async ({
},
include: {
documentMeta: true,
- Recipient: true,
+ recipients: true,
},
});
@@ -188,7 +191,7 @@ export const createDocument = async ({
await triggerWebhook({
event: WebhookTriggerEvents.DOCUMENT_CREATED,
- data: ZWebhookDocumentSchema.parse(createdDocument),
+ data: ZWebhookDocumentSchema.parse(mapDocumentToWebhookDocumentPayload(createdDocument)),
userId,
teamId,
});
diff --git a/packages/lib/server-only/document/delete-document.ts b/packages/lib/server-only/document/delete-document.ts
index 1295b3cbe..2f19e1e70 100644
--- a/packages/lib/server-only/document/delete-document.ts
+++ b/packages/lib/server-only/document/delete-document.ts
@@ -58,7 +58,7 @@ export const deleteDocument = async ({
id,
},
include: {
- Recipient: true,
+ recipients: true,
documentMeta: true,
team: {
include: {
@@ -77,7 +77,7 @@ export const deleteDocument = async ({
const isUserOwner = document.userId === userId;
const isUserTeamMember = document.team?.members.some((member) => member.userId === userId);
- const userRecipient = document.Recipient.find((recipient) => recipient.email === user.email);
+ const userRecipient = document.recipients.find((recipient) => recipient.email === user.email);
if (!isUserOwner && !isUserTeamMember && !userRecipient) {
throw new AppError(AppErrorCode.UNAUTHORIZED, {
@@ -128,7 +128,7 @@ export const deleteDocument = async ({
type HandleDocumentOwnerDeleteOptions = {
document: Document & {
- Recipient: Recipient[];
+ recipients: Recipient[];
documentMeta: DocumentMeta | null;
};
team?:
@@ -210,7 +210,7 @@ const handleDocumentOwnerDelete = async ({
// Send cancellation emails to recipients.
await Promise.all(
- document.Recipient.map(async (recipient) => {
+ document.recipients.map(async (recipient) => {
if (recipient.sendStatus !== SendStatus.SENT) {
return;
}
diff --git a/packages/lib/server-only/document/duplicate-document-by-id.ts b/packages/lib/server-only/document/duplicate-document-by-id.ts
index 1c7d0a38d..5c29d90fd 100644
--- a/packages/lib/server-only/document/duplicate-document-by-id.ts
+++ b/packages/lib/server-only/document/duplicate-document-by-id.ts
@@ -56,7 +56,7 @@ export const duplicateDocument = async ({
const createDocumentArguments: Prisma.DocumentCreateArgs = {
data: {
title: document.title,
- User: {
+ user: {
connect: {
id: document.userId,
},
diff --git a/packages/lib/server-only/document/find-documents.ts b/packages/lib/server-only/document/find-documents.ts
index ad53af829..32765699c 100644
--- a/packages/lib/server-only/document/find-documents.ts
+++ b/packages/lib/server-only/document/find-documents.ts
@@ -45,12 +45,12 @@ export type FindDocumentsOptions = {
export const ZFindDocumentsResponseSchema = ZFindResultResponse.extend({
data: DocumentSchema.extend({
- User: UserSchema.pick({
+ user: UserSchema.pick({
id: true,
name: true,
email: true,
}),
- Recipient: RecipientSchema.array(),
+ recipients: RecipientSchema.array(),
team: TeamSchema.pick({
id: true,
url: true,
@@ -112,8 +112,8 @@ export const findDocuments = async ({
const searchFilter: Prisma.DocumentWhereInput = {
OR: [
{ title: { contains: query, mode: 'insensitive' } },
- { Recipient: { some: { name: { contains: query, mode: 'insensitive' } } } },
- { Recipient: { some: { email: { contains: query, mode: 'insensitive' } } } },
+ { recipients: { some: { name: { contains: query, mode: 'insensitive' } } } },
+ { recipients: { some: { email: { contains: query, mode: 'insensitive' } } } },
],
};
@@ -137,7 +137,7 @@ export const findDocuments = async ({
{
OR: [
{
- Recipient: {
+ recipients: {
some: {
email: user.email,
},
@@ -174,7 +174,7 @@ export const findDocuments = async ({
deletedAt: null,
},
{
- Recipient: {
+ recipients: {
some: {
email: user.email,
documentDeletedAt: null,
@@ -195,13 +195,13 @@ export const findDocuments = async ({
deletedAt: null,
},
{
- User: {
+ user: {
email: team.teamEmail.email,
},
deletedAt: null,
},
{
- Recipient: {
+ recipients: {
some: {
email: team.teamEmail.email,
documentDeletedAt: null,
@@ -266,14 +266,14 @@ export const findDocuments = async ({
[orderByColumn]: orderByDirection,
},
include: {
- User: {
+ user: {
select: {
id: true,
name: true,
email: true,
},
},
- Recipient: true,
+ recipients: true,
team: {
select: {
id: true,
@@ -313,7 +313,7 @@ const findDocumentsFilter = (status: ExtendedDocumentStatus, user: User) => {
},
{
status: ExtendedDocumentStatus.COMPLETED,
- Recipient: {
+ recipients: {
some: {
email: user.email,
},
@@ -321,7 +321,7 @@ const findDocumentsFilter = (status: ExtendedDocumentStatus, user: User) => {
},
{
status: ExtendedDocumentStatus.PENDING,
- Recipient: {
+ recipients: {
some: {
email: user.email,
},
@@ -333,7 +333,7 @@ const findDocumentsFilter = (status: ExtendedDocumentStatus, user: User) => {
status: {
not: ExtendedDocumentStatus.DRAFT,
},
- Recipient: {
+ recipients: {
some: {
email: user.email,
signingStatus: SigningStatus.NOT_SIGNED,
@@ -357,7 +357,7 @@ const findDocumentsFilter = (status: ExtendedDocumentStatus, user: User) => {
},
{
status: ExtendedDocumentStatus.PENDING,
- Recipient: {
+ recipients: {
some: {
email: user.email,
signingStatus: SigningStatus.SIGNED,
@@ -378,7 +378,7 @@ const findDocumentsFilter = (status: ExtendedDocumentStatus, user: User) => {
},
{
status: ExtendedDocumentStatus.COMPLETED,
- Recipient: {
+ recipients: {
some: {
email: user.email,
},
@@ -443,7 +443,7 @@ const findTeamDocumentsFilter = (
status: {
not: ExtendedDocumentStatus.DRAFT,
},
- Recipient: {
+ recipients: {
some: {
email: teamEmail,
},
@@ -453,7 +453,7 @@ const findTeamDocumentsFilter = (
// Filter to display all documents that have been sent by the team email.
filter.OR.push({
- User: {
+ user: {
email: teamEmail,
},
OR: visibilityFilters,
@@ -472,7 +472,7 @@ const findTeamDocumentsFilter = (
status: {
not: ExtendedDocumentStatus.DRAFT,
},
- Recipient: {
+ recipients: {
some: {
email: teamEmail,
signingStatus: SigningStatus.NOT_SIGNED,
@@ -498,7 +498,7 @@ const findTeamDocumentsFilter = (
if (teamEmail && filter.OR) {
filter.OR.push({
status: ExtendedDocumentStatus.DRAFT,
- User: {
+ user: {
email: teamEmail,
},
OR: visibilityFilters,
@@ -523,7 +523,7 @@ const findTeamDocumentsFilter = (
status: ExtendedDocumentStatus.PENDING,
OR: [
{
- Recipient: {
+ recipients: {
some: {
email: teamEmail,
signingStatus: SigningStatus.SIGNED,
@@ -535,7 +535,7 @@ const findTeamDocumentsFilter = (
OR: visibilityFilters,
},
{
- User: {
+ user: {
email: teamEmail,
},
OR: visibilityFilters,
@@ -560,7 +560,7 @@ const findTeamDocumentsFilter = (
if (teamEmail && filter.OR) {
filter.OR.push(
{
- Recipient: {
+ recipients: {
some: {
email: teamEmail,
},
@@ -568,7 +568,7 @@ const findTeamDocumentsFilter = (
OR: visibilityFilters,
},
{
- User: {
+ user: {
email: teamEmail,
},
OR: visibilityFilters,
diff --git a/packages/lib/server-only/document/get-document-by-id.ts b/packages/lib/server-only/document/get-document-by-id.ts
index 93bd79259..5ab59feec 100644
--- a/packages/lib/server-only/document/get-document-by-id.ts
+++ b/packages/lib/server-only/document/get-document-by-id.ts
@@ -26,14 +26,14 @@ export const getDocumentById = async ({ documentId, userId, teamId }: GetDocumen
include: {
documentData: true,
documentMeta: true,
- User: {
+ user: {
select: {
id: true,
name: true,
email: true,
},
},
- Recipient: {
+ recipients: {
select: {
email: true,
},
@@ -119,14 +119,14 @@ export const getDocumentWhereInput = async ({
if (team.teamEmail) {
documentWhereInput.OR.push(
{
- Recipient: {
+ recipients: {
some: {
email: team.teamEmail.email,
},
},
},
{
- User: {
+ user: {
email: team.teamEmail.email,
},
},
@@ -154,7 +154,7 @@ export const getDocumentWhereInput = async ({
{
OR: [
{
- Recipient: {
+ recipients: {
some: {
email: user.email,
},
diff --git a/packages/lib/server-only/document/get-document-by-token.ts b/packages/lib/server-only/document/get-document-by-token.ts
index 3fc79709b..f4d5615a3 100644
--- a/packages/lib/server-only/document/get-document-by-token.ts
+++ b/packages/lib/server-only/document/get-document-by-token.ts
@@ -41,7 +41,7 @@ export const getDocumentByToken = async ({ token }: GetDocumentByTokenOptions) =
const result = await prisma.document.findFirstOrThrow({
where: {
- Recipient: {
+ recipients: {
some: {
token,
},
@@ -66,17 +66,17 @@ export const getDocumentAndSenderByToken = async ({
const result = await prisma.document.findFirstOrThrow({
where: {
- Recipient: {
+ recipients: {
some: {
token,
},
},
},
include: {
- User: true,
+ user: true,
documentData: true,
documentMeta: true,
- Recipient: {
+ recipients: {
where: {
token,
},
@@ -96,9 +96,9 @@ export const getDocumentAndSenderByToken = async ({
});
// eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars
- const { password: _password, ...User } = result.User;
+ const { password: _password, ...user } = result.user;
- const recipient = result.Recipient[0];
+ const recipient = result.recipients[0];
// Sanity check, should not be possible.
if (!recipient) {
@@ -125,7 +125,7 @@ export const getDocumentAndSenderByToken = async ({
return {
...result,
- User,
+ user,
};
};
@@ -144,14 +144,14 @@ export const getDocumentAndRecipientByToken = async ({
const result = await prisma.document.findFirstOrThrow({
where: {
- Recipient: {
+ recipients: {
some: {
token,
},
},
},
include: {
- Recipient: {
+ recipients: {
where: {
token,
},
@@ -160,7 +160,7 @@ export const getDocumentAndRecipientByToken = async ({
},
});
- const [recipient] = result.Recipient;
+ const [recipient] = result.recipients;
// Sanity check, should not be possible.
if (!recipient) {
@@ -185,8 +185,5 @@ export const getDocumentAndRecipientByToken = async ({
});
}
- return {
- ...result,
- Recipient: result.Recipient,
- };
+ return result;
};
diff --git a/packages/lib/server-only/document/get-document-with-details-by-id.ts b/packages/lib/server-only/document/get-document-with-details-by-id.ts
index bde03c337..955db895c 100644
--- a/packages/lib/server-only/document/get-document-with-details-by-id.ts
+++ b/packages/lib/server-only/document/get-document-with-details-by-id.ts
@@ -21,8 +21,8 @@ export type GetDocumentWithDetailsByIdOptions = {
export const ZGetDocumentWithDetailsByIdResponseSchema = DocumentSchema.extend({
documentData: DocumentDataSchema,
documentMeta: DocumentMetaSchema.nullable(),
- Recipient: RecipientSchema.array(),
- Field: FieldSchema.array(),
+ recipients: RecipientSchema.array(),
+ fields: FieldSchema.array(),
});
export type TGetDocumentWithDetailsByIdResponse = z.infer<
@@ -45,8 +45,8 @@ export const getDocumentWithDetailsById = async ({
include: {
documentData: true,
documentMeta: true,
- Recipient: true,
- Field: true,
+ recipients: true,
+ fields: true,
},
});
diff --git a/packages/lib/server-only/document/get-stats.ts b/packages/lib/server-only/document/get-stats.ts
index e95e7d53b..adb1b5dea 100644
--- a/packages/lib/server-only/document/get-stats.ts
+++ b/packages/lib/server-only/document/get-stats.ts
@@ -85,8 +85,8 @@ const getCounts = async ({ user, createdAt, search }: GetCountsOption) => {
const searchFilter: Prisma.DocumentWhereInput = {
OR: [
{ title: { contains: search, mode: 'insensitive' } },
- { Recipient: { some: { name: { contains: search, mode: 'insensitive' } } } },
- { Recipient: { some: { email: { contains: search, mode: 'insensitive' } } } },
+ { recipients: { some: { name: { contains: search, mode: 'insensitive' } } } },
+ { recipients: { some: { email: { contains: search, mode: 'insensitive' } } } },
],
};
@@ -113,7 +113,7 @@ const getCounts = async ({ user, createdAt, search }: GetCountsOption) => {
},
where: {
status: ExtendedDocumentStatus.PENDING,
- Recipient: {
+ recipients: {
some: {
email: user.email,
signingStatus: SigningStatus.NOT_SIGNED,
@@ -132,7 +132,7 @@ const getCounts = async ({ user, createdAt, search }: GetCountsOption) => {
},
where: {
createdAt,
- User: {
+ user: {
email: {
not: user.email,
},
@@ -140,7 +140,7 @@ const getCounts = async ({ user, createdAt, search }: GetCountsOption) => {
OR: [
{
status: ExtendedDocumentStatus.PENDING,
- Recipient: {
+ recipients: {
some: {
email: user.email,
signingStatus: SigningStatus.SIGNED,
@@ -150,7 +150,7 @@ const getCounts = async ({ user, createdAt, search }: GetCountsOption) => {
},
{
status: ExtendedDocumentStatus.COMPLETED,
- Recipient: {
+ recipients: {
some: {
email: user.email,
signingStatus: SigningStatus.SIGNED,
@@ -191,8 +191,8 @@ const getTeamCounts = async (options: GetTeamCountsOption) => {
const searchFilter: Prisma.DocumentWhereInput = {
OR: [
{ title: { contains: options.search, mode: 'insensitive' } },
- { Recipient: { some: { name: { contains: options.search, mode: 'insensitive' } } } },
- { Recipient: { some: { email: { contains: options.search, mode: 'insensitive' } } } },
+ { recipients: { some: { name: { contains: options.search, mode: 'insensitive' } } } },
+ { recipients: { some: { email: { contains: options.search, mode: 'insensitive' } } } },
],
};
@@ -234,7 +234,7 @@ const getTeamCounts = async (options: GetTeamCountsOption) => {
{
OR: [
{ userId: options.userId },
- { Recipient: { some: { email: options.currentUserEmail } } },
+ { recipients: { some: { email: options.currentUserEmail } } },
],
},
],
@@ -257,7 +257,7 @@ const getTeamCounts = async (options: GetTeamCountsOption) => {
teamId,
},
{
- User: {
+ user: {
email: teamEmail,
},
},
@@ -274,7 +274,7 @@ const getTeamCounts = async (options: GetTeamCountsOption) => {
userId: userIdWhereClause,
createdAt,
status: ExtendedDocumentStatus.PENDING,
- Recipient: {
+ recipients: {
some: {
email: teamEmail,
signingStatus: SigningStatus.NOT_SIGNED,
@@ -296,7 +296,7 @@ const getTeamCounts = async (options: GetTeamCountsOption) => {
OR: [
{
status: ExtendedDocumentStatus.PENDING,
- Recipient: {
+ recipients: {
some: {
email: teamEmail,
signingStatus: SigningStatus.SIGNED,
@@ -307,7 +307,7 @@ const getTeamCounts = async (options: GetTeamCountsOption) => {
},
{
status: ExtendedDocumentStatus.COMPLETED,
- Recipient: {
+ recipients: {
some: {
email: teamEmail,
signingStatus: SigningStatus.SIGNED,
diff --git a/packages/lib/server-only/document/reject-document-with-token.ts b/packages/lib/server-only/document/reject-document-with-token.ts
index 33cbc0896..3f6ab856c 100644
--- a/packages/lib/server-only/document/reject-document-with-token.ts
+++ b/packages/lib/server-only/document/reject-document-with-token.ts
@@ -6,7 +6,10 @@ import { prisma } from '@documenso/prisma';
import { WebhookTriggerEvents } from '@documenso/prisma/client';
import { DOCUMENT_AUDIT_LOG_TYPE } from '../../types/document-audit-logs';
-import { ZWebhookDocumentSchema } from '../../types/webhook-payload';
+import {
+ ZWebhookDocumentSchema,
+ mapDocumentToWebhookDocumentPayload,
+} from '../../types/webhook-payload';
import type { RequestMetadata } from '../../universal/extract-request-metadata';
import { createDocumentAuditLogData } from '../../utils/document-audit-logs';
import { triggerWebhook } from '../webhooks/trigger/trigger-webhook';
@@ -31,17 +34,17 @@ export async function rejectDocumentWithToken({
documentId,
},
include: {
- Document: {
+ document: {
include: {
- User: true,
- Recipient: true,
+ user: true,
+ recipients: true,
documentMeta: true,
},
},
},
});
- const document = recipient?.Document;
+ const document = recipient?.document;
if (!recipient || !document) {
throw new TRPCError({
@@ -97,7 +100,7 @@ export async function rejectDocumentWithToken({
id: document.id,
},
include: {
- Recipient: true,
+ recipients: true,
documentMeta: true,
},
});
@@ -109,7 +112,7 @@ export async function rejectDocumentWithToken({
// Trigger webhook for document rejection
await triggerWebhook({
event: WebhookTriggerEvents.DOCUMENT_REJECTED,
- data: ZWebhookDocumentSchema.parse(updatedDocument),
+ data: ZWebhookDocumentSchema.parse(mapDocumentToWebhookDocumentPayload(updatedDocument)),
userId: document.userId,
teamId: document.teamId ?? undefined,
});
diff --git a/packages/lib/server-only/document/resend-document.tsx b/packages/lib/server-only/document/resend-document.tsx
index d746dcf0c..6f00cbc78 100644
--- a/packages/lib/server-only/document/resend-document.tsx
+++ b/packages/lib/server-only/document/resend-document.tsx
@@ -54,7 +54,7 @@ export const resendDocument = async ({
const document = await prisma.document.findUnique({
where: documentWhereInput,
include: {
- Recipient: {
+ recipients: {
where: {
id: {
in: recipients,
@@ -80,7 +80,7 @@ export const resendDocument = async ({
throw new Error('Document not found');
}
- if (document.Recipient.length === 0) {
+ if (document.recipients.length === 0) {
throw new Error('Document has no recipients');
}
@@ -101,7 +101,7 @@ export const resendDocument = async ({
}
await Promise.all(
- document.Recipient.map(async (recipient) => {
+ document.recipients.map(async (recipient) => {
if (recipient.role === RecipientRole.CC) {
return;
}
diff --git a/packages/lib/server-only/document/seal-document.ts b/packages/lib/server-only/document/seal-document.ts
index b6c3e88fb..2cae98775 100644
--- a/packages/lib/server-only/document/seal-document.ts
+++ b/packages/lib/server-only/document/seal-document.ts
@@ -14,7 +14,10 @@ import {
} from '@documenso/prisma/client';
import { signPdf } from '@documenso/signing';
-import { ZWebhookDocumentSchema } from '../../types/webhook-payload';
+import {
+ ZWebhookDocumentSchema,
+ mapDocumentToWebhookDocumentPayload,
+} from '../../types/webhook-payload';
import type { RequestMetadata } from '../../universal/extract-request-metadata';
import { getFile } from '../../universal/upload/get-file';
import { putPdfFile } from '../../universal/upload/put-file';
@@ -43,7 +46,7 @@ export const sealDocument = async ({
const document = await prisma.document.findFirstOrThrow({
where: {
id: documentId,
- Recipient: {
+ recipients: {
every: {
signingStatus: SigningStatus.SIGNED,
},
@@ -52,7 +55,7 @@ export const sealDocument = async ({
include: {
documentData: true,
documentMeta: true,
- Recipient: true,
+ recipients: true,
team: {
select: {
teamGlobalSettings: {
@@ -89,7 +92,7 @@ export const sealDocument = async ({
documentId: document.id,
},
include: {
- Signature: true,
+ signature: true,
},
});
@@ -206,13 +209,13 @@ export const sealDocument = async ({
include: {
documentData: true,
documentMeta: true,
- Recipient: true,
+ recipients: true,
},
});
await triggerWebhook({
event: WebhookTriggerEvents.DOCUMENT_COMPLETED,
- data: ZWebhookDocumentSchema.parse(updatedDocument),
+ data: ZWebhookDocumentSchema.parse(mapDocumentToWebhookDocumentPayload(updatedDocument)),
userId: document.userId,
teamId: document.teamId ?? undefined,
});
diff --git a/packages/lib/server-only/document/search-documents-with-keyword.ts b/packages/lib/server-only/document/search-documents-with-keyword.ts
index 98def25a4..1fba24de1 100644
--- a/packages/lib/server-only/document/search-documents-with-keyword.ts
+++ b/packages/lib/server-only/document/search-documents-with-keyword.ts
@@ -35,7 +35,7 @@ export const searchDocumentsWithKeyword = async ({
deletedAt: null,
},
{
- Recipient: {
+ recipients: {
some: {
email: {
contains: query,
@@ -48,7 +48,7 @@ export const searchDocumentsWithKeyword = async ({
},
{
status: DocumentStatus.COMPLETED,
- Recipient: {
+ recipients: {
some: {
email: user.email,
},
@@ -60,7 +60,7 @@ export const searchDocumentsWithKeyword = async ({
},
{
status: DocumentStatus.PENDING,
- Recipient: {
+ recipients: {
some: {
email: user.email,
},
@@ -91,7 +91,7 @@ export const searchDocumentsWithKeyword = async ({
],
},
include: {
- Recipient: true,
+ recipients: true,
team: {
select: {
url: true,
@@ -140,7 +140,7 @@ export const searchDocumentsWithKeyword = async ({
return canAccessDocument;
})
.map((document) => {
- const { Recipient, ...documentWithoutRecipient } = document;
+ const { recipients, ...documentWithoutRecipient } = document;
let documentPath;
@@ -149,13 +149,13 @@ export const searchDocumentsWithKeyword = async ({
} else if (document.teamId && document.team) {
documentPath = `${formatDocumentsPath(document.team.url)}/${document.id}`;
} else {
- documentPath = getSigningLink(Recipient, user);
+ documentPath = getSigningLink(recipients, user);
}
return {
...documentWithoutRecipient,
path: documentPath,
- value: [document.id, document.title, ...document.Recipient.map((r) => r.email)].join(' '),
+ value: [document.id, document.title, ...document.recipients.map((r) => r.email)].join(' '),
};
});
diff --git a/packages/lib/server-only/document/send-completed-email.ts b/packages/lib/server-only/document/send-completed-email.ts
index 845e6551d..c6f764e34 100644
--- a/packages/lib/server-only/document/send-completed-email.ts
+++ b/packages/lib/server-only/document/send-completed-email.ts
@@ -32,8 +32,8 @@ export const sendCompletedEmail = async ({ documentId, requestMetadata }: SendDo
include: {
documentData: true,
documentMeta: true,
- Recipient: true,
- User: true,
+ recipients: true,
+ user: true,
team: {
select: {
id: true,
@@ -50,11 +50,11 @@ export const sendCompletedEmail = async ({ documentId, requestMetadata }: SendDo
const isDirectTemplate = document?.source === DocumentSource.TEMPLATE_DIRECT_LINK;
- if (document.Recipient.length === 0) {
+ if (document.recipients.length === 0) {
throw new Error('Document has no recipients');
}
- const { User: owner } = document;
+ const { user: owner } = document;
const completedDocument = await getFile(document.documentData);
@@ -83,7 +83,7 @@ export const sendCompletedEmail = async ({ documentId, requestMetadata }: SendDo
// - Recipient emails are disabled
if (
isOwnerDocumentCompletedEmailEnabled &&
- (!document.Recipient.find((recipient) => recipient.email === owner.email) ||
+ (!document.recipients.find((recipient) => recipient.email === owner.email) ||
!isDocumentCompletedEmailEnabled)
) {
const template = createElement(DocumentCompletedEmailTemplate, {
@@ -150,7 +150,7 @@ export const sendCompletedEmail = async ({ documentId, requestMetadata }: SendDo
}
await Promise.all(
- document.Recipient.map(async (recipient) => {
+ document.recipients.map(async (recipient) => {
const customEmailTemplate = {
'signer.name': recipient.name,
'signer.email': recipient.email,
diff --git a/packages/lib/server-only/document/send-delete-email.ts b/packages/lib/server-only/document/send-delete-email.ts
index 85f7534cd..1a8514993 100644
--- a/packages/lib/server-only/document/send-delete-email.ts
+++ b/packages/lib/server-only/document/send-delete-email.ts
@@ -23,7 +23,7 @@ export const sendDeleteEmail = async ({ documentId, reason }: SendDeleteEmailOpt
id: documentId,
},
include: {
- User: true,
+ user: true,
documentMeta: true,
team: {
include: {
@@ -45,7 +45,7 @@ export const sendDeleteEmail = async ({ documentId, reason }: SendDeleteEmailOpt
return;
}
- const { email, name } = document.User;
+ const { email, name } = document.user;
const assetBaseUrl = NEXT_PUBLIC_WEBAPP_URL() || 'http://localhost:3000';
diff --git a/packages/lib/server-only/document/send-document.tsx b/packages/lib/server-only/document/send-document.tsx
index e0867b9e2..0212f7e28 100644
--- a/packages/lib/server-only/document/send-document.tsx
+++ b/packages/lib/server-only/document/send-document.tsx
@@ -21,7 +21,10 @@ import {
import { jobs } from '../../jobs/client';
import { extractDerivedDocumentEmailSettings } from '../../types/document-email';
-import { ZWebhookDocumentSchema } from '../../types/webhook-payload';
+import {
+ ZWebhookDocumentSchema,
+ mapDocumentToWebhookDocumentPayload,
+} from '../../types/webhook-payload';
import { getFile } from '../../universal/upload/get-file';
import { insertFormValuesInPdf } from '../pdf/insert-form-values-in-pdf';
import { triggerWebhook } from '../webhooks/trigger/trigger-webhook';
@@ -36,7 +39,7 @@ export type SendDocumentOptions = {
export const ZSendDocumentResponseSchema = DocumentSchema.extend({
documentMeta: DocumentMetaSchema.nullable(),
- Recipient: RecipientSchema.array(),
+ recipients: RecipientSchema.array(),
});
export type TSendDocumentResponse = z.infer;
@@ -68,7 +71,7 @@ export const sendDocument = async ({
}),
},
include: {
- Recipient: {
+ recipients: {
orderBy: [{ signingOrder: { sort: 'asc', nulls: 'last' } }, { id: 'asc' }],
},
documentMeta: true,
@@ -80,7 +83,7 @@ export const sendDocument = async ({
throw new Error('Document not found');
}
- if (document.Recipient.length === 0) {
+ if (document.recipients.length === 0) {
throw new Error('Document has no recipients');
}
@@ -90,13 +93,13 @@ export const sendDocument = async ({
const signingOrder = document.documentMeta?.signingOrder || DocumentSigningOrder.PARALLEL;
- let recipientsToNotify = document.Recipient;
+ let recipientsToNotify = document.recipients;
if (signingOrder === DocumentSigningOrder.SEQUENTIAL) {
// Get the currently active recipient.
- recipientsToNotify = document.Recipient.filter(
- (r) => r.signingStatus === SigningStatus.NOT_SIGNED && r.role !== RecipientRole.CC,
- ).slice(0, 1);
+ recipientsToNotify = document.recipients
+ .filter((r) => r.signingStatus === SigningStatus.NOT_SIGNED && r.role !== RecipientRole.CC)
+ .slice(0, 1);
// Secondary filter so we aren't resending if the current active recipient has already
// received the document.
@@ -194,7 +197,7 @@ export const sendDocument = async ({
);
}
- const allRecipientsHaveNoActionToTake = document.Recipient.every(
+ const allRecipientsHaveNoActionToTake = document.recipients.every(
(recipient) =>
recipient.role === RecipientRole.CC || recipient.signingStatus === SigningStatus.SIGNED,
);
@@ -215,7 +218,7 @@ export const sendDocument = async ({
},
include: {
documentMeta: true,
- Recipient: true,
+ recipients: true,
},
});
}
@@ -241,14 +244,14 @@ export const sendDocument = async ({
},
include: {
documentMeta: true,
- Recipient: true,
+ recipients: true,
},
});
});
await triggerWebhook({
event: WebhookTriggerEvents.DOCUMENT_SENT,
- data: ZWebhookDocumentSchema.parse(updatedDocument),
+ data: ZWebhookDocumentSchema.parse(mapDocumentToWebhookDocumentPayload(updatedDocument)),
userId,
teamId,
});
diff --git a/packages/lib/server-only/document/send-pending-email.ts b/packages/lib/server-only/document/send-pending-email.ts
index 2b599b256..2652cf39e 100644
--- a/packages/lib/server-only/document/send-pending-email.ts
+++ b/packages/lib/server-only/document/send-pending-email.ts
@@ -21,14 +21,14 @@ export const sendPendingEmail = async ({ documentId, recipientId }: SendPendingE
const document = await prisma.document.findFirst({
where: {
id: documentId,
- Recipient: {
+ recipients: {
some: {
id: recipientId,
},
},
},
include: {
- Recipient: {
+ recipients: {
where: {
id: recipientId,
},
@@ -46,7 +46,7 @@ export const sendPendingEmail = async ({ documentId, recipientId }: SendPendingE
throw new Error('Document not found');
}
- if (document.Recipient.length === 0) {
+ if (document.recipients.length === 0) {
throw new Error('Document has no recipients');
}
@@ -58,7 +58,7 @@ export const sendPendingEmail = async ({ documentId, recipientId }: SendPendingE
return;
}
- const [recipient] = document.Recipient;
+ const [recipient] = document.recipients;
const { email, name } = recipient;
diff --git a/packages/lib/server-only/document/super-delete-document.ts b/packages/lib/server-only/document/super-delete-document.ts
index 856d0365c..5752a2bdb 100644
--- a/packages/lib/server-only/document/super-delete-document.ts
+++ b/packages/lib/server-only/document/super-delete-document.ts
@@ -30,9 +30,9 @@ export const superDeleteDocument = async ({ id, requestMetadata }: SuperDeleteDo
id,
},
include: {
- Recipient: true,
+ recipients: true,
documentMeta: true,
- User: true,
+ user: true,
team: {
include: {
teamGlobalSettings: true,
@@ -45,7 +45,7 @@ export const superDeleteDocument = async ({ id, requestMetadata }: SuperDeleteDo
throw new Error('Document not found');
}
- const { status, User: user } = document;
+ const { status, user } = document;
const isDocumentDeletedEmailEnabled = extractDerivedDocumentEmailSettings(
document.documentMeta,
@@ -54,11 +54,11 @@ export const superDeleteDocument = async ({ id, requestMetadata }: SuperDeleteDo
// if the document is pending, send cancellation emails to all recipients
if (
status === DocumentStatus.PENDING &&
- document.Recipient.length > 0 &&
+ document.recipients.length > 0 &&
isDocumentDeletedEmailEnabled
) {
await Promise.all(
- document.Recipient.map(async (recipient) => {
+ document.recipients.map(async (recipient) => {
if (recipient.sendStatus !== SendStatus.SENT) {
return;
}
diff --git a/packages/lib/server-only/document/viewed-document.ts b/packages/lib/server-only/document/viewed-document.ts
index b20dc9412..34385d0ab 100644
--- a/packages/lib/server-only/document/viewed-document.ts
+++ b/packages/lib/server-only/document/viewed-document.ts
@@ -6,7 +6,10 @@ import { ReadStatus, SendStatus } from '@documenso/prisma/client';
import { WebhookTriggerEvents } from '@documenso/prisma/client';
import type { TDocumentAccessAuthTypes } from '../../types/document-auth';
-import { ZWebhookDocumentSchema } from '../../types/webhook-payload';
+import {
+ ZWebhookDocumentSchema,
+ mapDocumentToWebhookDocumentPayload,
+} from '../../types/webhook-payload';
import { triggerWebhook } from '../webhooks/trigger/trigger-webhook';
export type ViewedDocumentOptions = {
@@ -71,7 +74,7 @@ export const viewedDocument = async ({
},
include: {
documentMeta: true,
- Recipient: true,
+ recipients: true,
},
});
@@ -81,7 +84,7 @@ export const viewedDocument = async ({
await triggerWebhook({
event: WebhookTriggerEvents.DOCUMENT_OPENED,
- data: ZWebhookDocumentSchema.parse(document),
+ data: ZWebhookDocumentSchema.parse(mapDocumentToWebhookDocumentPayload(document)),
userId: document.userId,
teamId: document.teamId ?? undefined,
});
diff --git a/packages/lib/server-only/field/create-document-fields.ts b/packages/lib/server-only/field/create-document-fields.ts
index 982e389e2..c3ea8021f 100644
--- a/packages/lib/server-only/field/create-document-fields.ts
+++ b/packages/lib/server-only/field/create-document-fields.ts
@@ -61,8 +61,8 @@ export const createDocumentFields = async ({
}),
},
include: {
- Recipient: true,
- Field: true,
+ recipients: true,
+ fields: true,
},
});
@@ -80,7 +80,7 @@ export const createDocumentFields = async ({
// Field validation.
const validatedFields = fields.map((field) => {
- const recipient = document.Recipient.find((recipient) => recipient.id === field.recipientId);
+ const recipient = document.recipients.find((recipient) => recipient.id === field.recipientId);
// Each field MUST have a recipient associated with it.
if (!recipient) {
@@ -90,7 +90,7 @@ export const createDocumentFields = async ({
}
// Check whether the recipient associated with the field can have new fields created.
- if (!canRecipientFieldsBeModified(recipient, document.Field)) {
+ if (!canRecipientFieldsBeModified(recipient, document.fields)) {
throw new AppError(AppErrorCode.INVALID_REQUEST, {
message:
'Recipient type cannot have fields, or they have already interacted with the document.',
diff --git a/packages/lib/server-only/field/create-field.ts b/packages/lib/server-only/field/create-field.ts
index da1a26276..96b6afa9e 100644
--- a/packages/lib/server-only/field/create-field.ts
+++ b/packages/lib/server-only/field/create-field.ts
@@ -145,7 +145,7 @@ export const createField = async ({
fieldMeta: result.data,
},
include: {
- Recipient: true,
+ recipient: true,
},
});
@@ -160,7 +160,7 @@ export const createField = async ({
},
data: {
fieldId: field.secondaryId,
- fieldRecipientEmail: field.Recipient?.email ?? '',
+ fieldRecipientEmail: field.recipient?.email ?? '',
fieldRecipientId: recipientId,
fieldType: field.type,
},
diff --git a/packages/lib/server-only/field/create-template-fields.ts b/packages/lib/server-only/field/create-template-fields.ts
index fd93ed2be..ea6091328 100644
--- a/packages/lib/server-only/field/create-template-fields.ts
+++ b/packages/lib/server-only/field/create-template-fields.ts
@@ -56,8 +56,8 @@ export const createTemplateFields = async ({
}),
},
include: {
- Recipient: true,
- Field: true,
+ recipients: true,
+ fields: true,
},
});
@@ -69,7 +69,7 @@ export const createTemplateFields = async ({
// Field validation.
const validatedFields = fields.map((field) => {
- const recipient = template.Recipient.find((recipient) => recipient.id === field.recipientId);
+ const recipient = template.recipients.find((recipient) => recipient.id === field.recipientId);
// Each field MUST have a recipient associated with it.
if (!recipient) {
@@ -79,7 +79,7 @@ export const createTemplateFields = async ({
}
// Check whether the recipient associated with the field can have new fields created.
- if (!canRecipientFieldsBeModified(recipient, template.Field)) {
+ if (!canRecipientFieldsBeModified(recipient, template.fields)) {
throw new AppError(AppErrorCode.INVALID_REQUEST, {
message:
'Recipient type cannot have fields, or they have already interacted with the template.',
diff --git a/packages/lib/server-only/field/delete-document-field.ts b/packages/lib/server-only/field/delete-document-field.ts
index 28f739a5f..97c6659a1 100644
--- a/packages/lib/server-only/field/delete-document-field.ts
+++ b/packages/lib/server-only/field/delete-document-field.ts
@@ -59,12 +59,12 @@ export const deleteDocumentField = async ({
}),
},
include: {
- Recipient: {
+ recipients: {
where: {
id: field.recipientId,
},
include: {
- Field: true,
+ fields: true,
},
},
},
@@ -82,7 +82,7 @@ export const deleteDocumentField = async ({
});
}
- const recipient = document.Recipient.find((recipient) => recipient.id === field.recipientId);
+ const recipient = document.recipients.find((recipient) => recipient.id === field.recipientId);
if (!recipient) {
throw new AppError(AppErrorCode.INVALID_REQUEST, {
@@ -91,7 +91,7 @@ export const deleteDocumentField = async ({
}
// Check whether the recipient associated with the field can have new fields created.
- if (!canRecipientFieldsBeModified(recipient, recipient.Field)) {
+ if (!canRecipientFieldsBeModified(recipient, recipient.fields)) {
throw new AppError(AppErrorCode.INVALID_REQUEST, {
message: 'Recipient has already interacted with the document.',
});
diff --git a/packages/lib/server-only/field/delete-field.ts b/packages/lib/server-only/field/delete-field.ts
index 67145de10..1049daf89 100644
--- a/packages/lib/server-only/field/delete-field.ts
+++ b/packages/lib/server-only/field/delete-field.ts
@@ -22,7 +22,7 @@ export const deleteField = async ({
const field = await prisma.field.delete({
where: {
id: fieldId,
- Document: {
+ document: {
id: documentId,
...(teamId
? {
@@ -42,7 +42,7 @@ export const deleteField = async ({
},
},
include: {
- Recipient: true,
+ recipient: true,
},
});
@@ -78,7 +78,7 @@ export const deleteField = async ({
},
data: {
fieldId: field.secondaryId,
- fieldRecipientEmail: field.Recipient?.email ?? '',
+ fieldRecipientEmail: field.recipient?.email ?? '',
fieldRecipientId: field.recipientId ?? -1,
fieldType: field.type,
},
diff --git a/packages/lib/server-only/field/delete-template-field.ts b/packages/lib/server-only/field/delete-template-field.ts
index 80e140a18..3c534943b 100644
--- a/packages/lib/server-only/field/delete-template-field.ts
+++ b/packages/lib/server-only/field/delete-template-field.ts
@@ -16,7 +16,7 @@ export const deleteTemplateField = async ({
const field = await prisma.field.findFirst({
where: {
id: fieldId,
- Template: teamId
+ template: teamId
? {
team: {
id: teamId,
diff --git a/packages/lib/server-only/field/get-completed-fields-for-document.ts b/packages/lib/server-only/field/get-completed-fields-for-document.ts
index 304be95ba..7fadc26b9 100644
--- a/packages/lib/server-only/field/get-completed-fields-for-document.ts
+++ b/packages/lib/server-only/field/get-completed-fields-for-document.ts
@@ -11,14 +11,14 @@ export const getCompletedFieldsForDocument = async ({
return await prisma.field.findMany({
where: {
documentId,
- Recipient: {
+ recipient: {
signingStatus: SigningStatus.SIGNED,
},
inserted: true,
},
include: {
- Signature: true,
- Recipient: {
+ signature: true,
+ recipient: {
select: {
name: true,
email: true,
diff --git a/packages/lib/server-only/field/get-completed-fields-for-token.ts b/packages/lib/server-only/field/get-completed-fields-for-token.ts
index 10cfb2672..ae6f122d6 100644
--- a/packages/lib/server-only/field/get-completed-fields-for-token.ts
+++ b/packages/lib/server-only/field/get-completed-fields-for-token.ts
@@ -8,21 +8,21 @@ export type GetCompletedFieldsForTokenOptions = {
export const getCompletedFieldsForToken = async ({ token }: GetCompletedFieldsForTokenOptions) => {
return await prisma.field.findMany({
where: {
- Document: {
- Recipient: {
+ document: {
+ recipients: {
some: {
token,
},
},
},
- Recipient: {
+ recipient: {
signingStatus: SigningStatus.SIGNED,
},
inserted: true,
},
include: {
- Signature: true,
- Recipient: {
+ signature: true,
+ recipient: {
select: {
name: true,
email: true,
diff --git a/packages/lib/server-only/field/get-field-by-id.ts b/packages/lib/server-only/field/get-field-by-id.ts
index 13aa75d54..c29517cb0 100644
--- a/packages/lib/server-only/field/get-field-by-id.ts
+++ b/packages/lib/server-only/field/get-field-by-id.ts
@@ -29,7 +29,7 @@ export const getFieldById = async ({
id: fieldId,
documentId,
templateId,
- Document: {
+ document: {
OR:
teamId === undefined
? [
diff --git a/packages/lib/server-only/field/get-fields-for-document.ts b/packages/lib/server-only/field/get-fields-for-document.ts
index 74b6b4133..9fa9f592d 100644
--- a/packages/lib/server-only/field/get-fields-for-document.ts
+++ b/packages/lib/server-only/field/get-fields-for-document.ts
@@ -16,7 +16,7 @@ export const getFieldsForDocument = async ({
const fields = await prisma.field.findMany({
where: {
documentId,
- Document: teamId
+ document: teamId
? {
team: {
id: teamId,
@@ -33,8 +33,8 @@ export const getFieldsForDocument = async ({
},
},
include: {
- Signature: true,
- Recipient: {
+ signature: true,
+ recipient: {
select: {
name: true,
email: true,
diff --git a/packages/lib/server-only/field/get-fields-for-token.ts b/packages/lib/server-only/field/get-fields-for-token.ts
index f70b3ec81..635773f8f 100644
--- a/packages/lib/server-only/field/get-fields-for-token.ts
+++ b/packages/lib/server-only/field/get-fields-for-token.ts
@@ -7,12 +7,12 @@ export type GetFieldsForTokenOptions = {
export const getFieldsForToken = async ({ token }: GetFieldsForTokenOptions) => {
return await prisma.field.findMany({
where: {
- Recipient: {
+ recipient: {
token,
},
},
include: {
- Signature: true,
+ signature: true,
},
});
};
diff --git a/packages/lib/server-only/field/remove-signed-field-with-token.ts b/packages/lib/server-only/field/remove-signed-field-with-token.ts
index 46d04dd58..654dfec20 100644
--- a/packages/lib/server-only/field/remove-signed-field-with-token.ts
+++ b/packages/lib/server-only/field/remove-signed-field-with-token.ts
@@ -20,17 +20,17 @@ export const removeSignedFieldWithToken = async ({
const field = await prisma.field.findFirstOrThrow({
where: {
id: fieldId,
- Recipient: {
+ recipient: {
token,
},
},
include: {
- Document: true,
- Recipient: true,
+ document: true,
+ recipient: true,
},
});
- const { Document: document, Recipient: recipient } = field;
+ const { document, recipient } = field;
if (!document) {
throw new Error(`Document not found for field ${field.id}`);
diff --git a/packages/lib/server-only/field/set-fields-for-document.ts b/packages/lib/server-only/field/set-fields-for-document.ts
index 9b5694d22..da3c71dd6 100644
--- a/packages/lib/server-only/field/set-fields-for-document.ts
+++ b/packages/lib/server-only/field/set-fields-for-document.ts
@@ -70,7 +70,7 @@ export const setFieldsForDocument = async ({
}),
},
include: {
- Recipient: true,
+ recipients: true,
},
});
@@ -91,7 +91,7 @@ export const setFieldsForDocument = async ({
documentId,
},
include: {
- Recipient: true,
+ recipient: true,
},
});
@@ -102,7 +102,7 @@ export const setFieldsForDocument = async ({
const linkedFields = fields.map((field) => {
const existing = existingFields.find((existingField) => existingField.id === field.id);
- const recipient = document.Recipient.find(
+ const recipient = document.recipients.find(
(recipient) => recipient.email.toLowerCase() === field.signerEmail.toLowerCase(),
);
@@ -237,12 +237,12 @@ export const setFieldsForDocument = async ({
customText: '',
inserted: false,
fieldMeta: parsedFieldMeta,
- Document: {
+ document: {
connect: {
id: documentId,
},
},
- Recipient: {
+ recipient: {
connect: {
documentId_email: {
documentId,
@@ -318,7 +318,7 @@ export const setFieldsForDocument = async ({
metadata: requestMetadata,
data: {
fieldId: field.secondaryId,
- fieldRecipientEmail: field.Recipient?.email ?? '',
+ fieldRecipientEmail: field.recipient?.email ?? '',
fieldRecipientId: field.recipientId ?? -1,
fieldType: field.type,
},
diff --git a/packages/lib/server-only/field/set-fields-for-template.ts b/packages/lib/server-only/field/set-fields-for-template.ts
index d548f08ad..9b003534e 100644
--- a/packages/lib/server-only/field/set-fields-for-template.ts
+++ b/packages/lib/server-only/field/set-fields-for-template.ts
@@ -77,7 +77,7 @@ export const setFieldsForTemplate = async ({
templateId,
},
include: {
- Recipient: true,
+ recipient: true,
},
});
@@ -182,12 +182,12 @@ export const setFieldsForTemplate = async ({
customText: '',
inserted: false,
fieldMeta: parsedFieldMeta,
- Template: {
+ template: {
connect: {
id: templateId,
},
},
- Recipient: {
+ recipient: {
connect: {
templateId_email: {
templateId,
diff --git a/packages/lib/server-only/field/sign-field-with-token.ts b/packages/lib/server-only/field/sign-field-with-token.ts
index 937ea8f1d..f5b170ba5 100644
--- a/packages/lib/server-only/field/sign-field-with-token.ts
+++ b/packages/lib/server-only/field/sign-field-with-token.ts
@@ -59,17 +59,17 @@ export const signFieldWithToken = async ({
const field = await prisma.field.findFirstOrThrow({
where: {
id: fieldId,
- Recipient: {
+ recipient: {
token,
},
},
include: {
- Document: true,
- Recipient: true,
+ document: true,
+ recipient: true,
},
});
- const { Document: document, Recipient: recipient } = field;
+ const { document, recipient } = field;
if (!document) {
throw new Error(`Document not found for field ${field.id}`);
@@ -213,7 +213,7 @@ export const signFieldWithToken = async ({
// Dirty but I don't want to deal with type information
Object.assign(updatedField, {
- Signature: signature,
+ signature,
});
}
diff --git a/packages/lib/server-only/field/update-document-fields.ts b/packages/lib/server-only/field/update-document-fields.ts
index 1f1c80461..fdad6ae09 100644
--- a/packages/lib/server-only/field/update-document-fields.ts
+++ b/packages/lib/server-only/field/update-document-fields.ts
@@ -64,8 +64,8 @@ export const updateDocumentFields = async ({
}),
},
include: {
- Recipient: true,
- Field: true,
+ recipients: true,
+ fields: true,
},
});
@@ -82,7 +82,7 @@ export const updateDocumentFields = async ({
}
const fieldsToUpdate = fields.map((field) => {
- const originalField = document.Field.find((existingField) => existingField.id === field.id);
+ const originalField = document.fields.find((existingField) => existingField.id === field.id);
if (!originalField) {
throw new AppError(AppErrorCode.NOT_FOUND, {
@@ -90,7 +90,7 @@ export const updateDocumentFields = async ({
});
}
- const recipient = document.Recipient.find(
+ const recipient = document.recipients.find(
(recipient) => recipient.id === originalField.recipientId,
);
@@ -102,7 +102,7 @@ export const updateDocumentFields = async ({
}
// Check whether the recipient associated with the field can be modified.
- if (!canRecipientFieldsBeModified(recipient, document.Field)) {
+ if (!canRecipientFieldsBeModified(recipient, document.fields)) {
throw new AppError(AppErrorCode.INVALID_REQUEST, {
message:
'Cannot modify a field where the recipient has already interacted with the document',
diff --git a/packages/lib/server-only/field/update-field.ts b/packages/lib/server-only/field/update-field.ts
index 434d0f651..fb806ecf0 100644
--- a/packages/lib/server-only/field/update-field.ts
+++ b/packages/lib/server-only/field/update-field.ts
@@ -44,7 +44,7 @@ export const updateField = async ({
const oldField = await prisma.field.findFirstOrThrow({
where: {
id: fieldId,
- Document: {
+ document: {
id: documentId,
...(teamId
? {
@@ -86,7 +86,7 @@ export const updateField = async ({
fieldMeta: newFieldMeta,
},
include: {
- Recipient: true,
+ recipient: true,
},
});
@@ -127,7 +127,7 @@ export const updateField = async ({
},
data: {
fieldId: updatedField.secondaryId,
- fieldRecipientEmail: updatedField.Recipient?.email ?? '',
+ fieldRecipientEmail: updatedField.recipient?.email ?? '',
fieldRecipientId: recipientId ?? -1,
fieldType: updatedField.type,
changes: diffFieldChanges(oldField, updatedField),
diff --git a/packages/lib/server-only/field/update-template-fields.ts b/packages/lib/server-only/field/update-template-fields.ts
index f07f5c92e..10f65626a 100644
--- a/packages/lib/server-only/field/update-template-fields.ts
+++ b/packages/lib/server-only/field/update-template-fields.ts
@@ -56,8 +56,8 @@ export const updateTemplateFields = async ({
}),
},
include: {
- Recipient: true,
- Field: true,
+ recipients: true,
+ fields: true,
},
});
@@ -68,7 +68,7 @@ export const updateTemplateFields = async ({
}
const fieldsToUpdate = fields.map((field) => {
- const originalField = template.Field.find((existingField) => existingField.id === field.id);
+ const originalField = template.fields.find((existingField) => existingField.id === field.id);
if (!originalField) {
throw new AppError(AppErrorCode.NOT_FOUND, {
@@ -76,7 +76,7 @@ export const updateTemplateFields = async ({
});
}
- const recipient = template.Recipient.find(
+ const recipient = template.recipients.find(
(recipient) => recipient.id === originalField.recipientId,
);
@@ -88,7 +88,7 @@ export const updateTemplateFields = async ({
}
// Check whether the recipient associated with the field can be modified.
- if (!canRecipientFieldsBeModified(recipient, template.Field)) {
+ if (!canRecipientFieldsBeModified(recipient, template.fields)) {
throw new AppError(AppErrorCode.INVALID_REQUEST, {
message:
'Cannot modify a field where the recipient has already interacted with the document',
diff --git a/packages/lib/server-only/pdf/insert-field-in-pdf.ts b/packages/lib/server-only/pdf/insert-field-in-pdf.ts
index 588b3b854..af760c7f4 100644
--- a/packages/lib/server-only/pdf/insert-field-in-pdf.ts
+++ b/packages/lib/server-only/pdf/insert-field-in-pdf.ts
@@ -98,8 +98,8 @@ export const insertFieldInPDF = async (pdf: PDFDocument, field: FieldWithSignatu
type: P.union(FieldType.SIGNATURE, FieldType.FREE_SIGNATURE),
},
async (field) => {
- if (field.Signature?.signatureImageAsBase64) {
- const image = await pdf.embedPng(field.Signature?.signatureImageAsBase64 ?? '');
+ if (field.signature?.signatureImageAsBase64) {
+ const image = await pdf.embedPng(field.signature?.signatureImageAsBase64 ?? '');
let imageWidth = image.width;
let imageHeight = image.height;
@@ -136,7 +136,7 @@ export const insertFieldInPDF = async (pdf: PDFDocument, field: FieldWithSignatu
rotate: degrees(pageRotationInDegrees),
});
} else {
- const signatureText = field.Signature?.typedSignature ?? '';
+ const signatureText = field.signature?.typedSignature ?? '';
const longestLineInTextForWidth = signatureText
.split('\n')
diff --git a/packages/lib/server-only/profile/get-public-profile-by-url.ts b/packages/lib/server-only/profile/get-public-profile-by-url.ts
index 015ca9709..7b8f53e3f 100644
--- a/packages/lib/server-only/profile/get-public-profile-by-url.ts
+++ b/packages/lib/server-only/profile/get-public-profile-by-url.ts
@@ -61,7 +61,7 @@ export const getPublicProfileByUrl = async ({
},
include: {
profile: true,
- Template: {
+ templates: {
where: {
directLink: {
enabled: true,
@@ -73,7 +73,7 @@ export const getPublicProfileByUrl = async ({
},
},
// Subscriptions and teamMembers are used to calculate the badges.
- Subscription: {
+ subscriptions: {
where: {
status: SubscriptionStatus.ACTIVE,
},
@@ -133,7 +133,7 @@ export const getPublicProfileByUrl = async ({
if (IS_BILLING_ENABLED()) {
const earlyAdopterPriceIds = await getCommunityPlanPriceIds();
- const activeEarlyAdopterSub = user.Subscription.find(
+ const activeEarlyAdopterSub = user.subscriptions.find(
(subscription) =>
subscription.status === SubscriptionStatus.ACTIVE &&
earlyAdopterPriceIds.includes(subscription.priceId),
@@ -154,7 +154,7 @@ export const getPublicProfileByUrl = async ({
url: profileUrl,
avatarImageId: user.avatarImageId,
name: user.name || '',
- templates: user.Template.filter(
+ templates: user.templates.filter(
(template): template is PublicDirectLinkTemplate =>
template.directLink?.enabled === true && template.type === TemplateType.PUBLIC,
),
diff --git a/packages/lib/server-only/public-api/get-user-by-token.ts b/packages/lib/server-only/public-api/get-user-by-token.ts
index 5fe50f336..a8c39f75b 100644
--- a/packages/lib/server-only/public-api/get-user-by-token.ts
+++ b/packages/lib/server-only/public-api/get-user-by-token.ts
@@ -7,14 +7,14 @@ export const getUserByApiToken = async ({ token }: { token: string }) => {
const user = await prisma.user.findFirst({
where: {
- ApiToken: {
+ apiTokens: {
some: {
token: hashedToken,
},
},
},
include: {
- ApiToken: true,
+ apiTokens: true,
},
});
@@ -22,7 +22,7 @@ export const getUserByApiToken = async ({ token }: { token: string }) => {
throw new Error('Invalid token');
}
- const retrievedToken = user.ApiToken.find((apiToken) => apiToken.token === hashedToken);
+ const retrievedToken = user.apiTokens.find((apiToken) => apiToken.token === hashedToken);
// This should be impossible but we need to satisfy TypeScript
if (!retrievedToken) {
diff --git a/packages/lib/server-only/recipient/create-document-recipients.ts b/packages/lib/server-only/recipient/create-document-recipients.ts
index 471e4d94a..2a55d46ca 100644
--- a/packages/lib/server-only/recipient/create-document-recipients.ts
+++ b/packages/lib/server-only/recipient/create-document-recipients.ts
@@ -65,7 +65,7 @@ export const createDocumentRecipients = async ({
}),
},
include: {
- Recipient: true,
+ recipients: true,
},
});
@@ -103,7 +103,7 @@ export const createDocumentRecipients = async ({
}));
const duplicateRecipients = normalizedRecipients.filter((newRecipient) => {
- const existingRecipient = document.Recipient.find(
+ const existingRecipient = document.recipients.find(
(existingRecipient) => existingRecipient.email === newRecipient.email,
);
diff --git a/packages/lib/server-only/recipient/create-template-recipients.ts b/packages/lib/server-only/recipient/create-template-recipients.ts
index d1e4da6d0..3ff726b99 100644
--- a/packages/lib/server-only/recipient/create-template-recipients.ts
+++ b/packages/lib/server-only/recipient/create-template-recipients.ts
@@ -60,7 +60,7 @@ export const createTemplateRecipients = async ({
}),
},
include: {
- Recipient: true,
+ recipients: true,
},
});
@@ -92,7 +92,7 @@ export const createTemplateRecipients = async ({
}));
const duplicateRecipients = normalizedRecipients.filter((newRecipient) => {
- const existingRecipient = template.Recipient.find(
+ const existingRecipient = template.recipients.find(
(existingRecipient) => existingRecipient.email === newRecipient.email,
);
diff --git a/packages/lib/server-only/recipient/delete-document-recipient.ts b/packages/lib/server-only/recipient/delete-document-recipient.ts
index 1171951f8..792c441ae 100644
--- a/packages/lib/server-only/recipient/delete-document-recipient.ts
+++ b/packages/lib/server-only/recipient/delete-document-recipient.ts
@@ -32,7 +32,7 @@ export const deleteDocumentRecipient = async ({
}: DeleteDocumentRecipientOptions): Promise => {
const document = await prisma.document.findFirst({
where: {
- Recipient: {
+ recipients: {
some: {
id: recipientId,
},
@@ -56,7 +56,7 @@ export const deleteDocumentRecipient = async ({
include: {
documentMeta: true,
team: true,
- Recipient: {
+ recipients: {
where: {
id: recipientId,
},
@@ -93,7 +93,7 @@ export const deleteDocumentRecipient = async ({
});
}
- const recipientToDelete = document.Recipient[0];
+ const recipientToDelete = document.recipients[0];
if (!recipientToDelete || recipientToDelete.id !== recipientId) {
throw new AppError(AppErrorCode.NOT_FOUND, {
diff --git a/packages/lib/server-only/recipient/delete-recipient.ts b/packages/lib/server-only/recipient/delete-recipient.ts
index 74fb4a8d2..4b5e398f2 100644
--- a/packages/lib/server-only/recipient/delete-recipient.ts
+++ b/packages/lib/server-only/recipient/delete-recipient.ts
@@ -23,7 +23,7 @@ export const deleteRecipient = async ({
const recipient = await prisma.recipient.findFirst({
where: {
id: recipientId,
- Document: {
+ document: {
id: documentId,
...(teamId
? {
diff --git a/packages/lib/server-only/recipient/delete-template-recipient.ts b/packages/lib/server-only/recipient/delete-template-recipient.ts
index 8d101caa1..8b10e9552 100644
--- a/packages/lib/server-only/recipient/delete-template-recipient.ts
+++ b/packages/lib/server-only/recipient/delete-template-recipient.ts
@@ -15,7 +15,7 @@ export const deleteTemplateRecipient = async ({
}: DeleteTemplateRecipientOptions): Promise => {
const template = await prisma.template.findFirst({
where: {
- Recipient: {
+ recipients: {
some: {
id: recipientId,
},
@@ -37,7 +37,7 @@ export const deleteTemplateRecipient = async ({
}),
},
include: {
- Recipient: {
+ recipients: {
where: {
id: recipientId,
},
@@ -51,7 +51,7 @@ export const deleteTemplateRecipient = async ({
});
}
- const recipientToDelete = template.Recipient[0];
+ const recipientToDelete = template.recipients[0];
if (!recipientToDelete || recipientToDelete.id !== recipientId) {
throw new AppError(AppErrorCode.NOT_FOUND, {
diff --git a/packages/lib/server-only/recipient/get-is-recipient-turn.ts b/packages/lib/server-only/recipient/get-is-recipient-turn.ts
index 72977ac22..a59819e95 100644
--- a/packages/lib/server-only/recipient/get-is-recipient-turn.ts
+++ b/packages/lib/server-only/recipient/get-is-recipient-turn.ts
@@ -8,7 +8,7 @@ export type GetIsRecipientTurnOptions = {
export async function getIsRecipientsTurnToSign({ token }: GetIsRecipientTurnOptions) {
const document = await prisma.document.findFirstOrThrow({
where: {
- Recipient: {
+ recipients: {
some: {
token,
},
@@ -16,7 +16,7 @@ export async function getIsRecipientsTurnToSign({ token }: GetIsRecipientTurnOpt
},
include: {
documentMeta: true,
- Recipient: {
+ recipients: {
orderBy: {
signingOrder: 'asc',
},
@@ -28,7 +28,7 @@ export async function getIsRecipientsTurnToSign({ token }: GetIsRecipientTurnOpt
return true;
}
- const recipients = document.Recipient;
+ const { recipients } = document;
const currentRecipientIndex = recipients.findIndex((r) => r.token === token);
diff --git a/packages/lib/server-only/recipient/get-recipient-by-id.ts b/packages/lib/server-only/recipient/get-recipient-by-id.ts
index 07240b58f..f54e7abce 100644
--- a/packages/lib/server-only/recipient/get-recipient-by-id.ts
+++ b/packages/lib/server-only/recipient/get-recipient-by-id.ts
@@ -12,7 +12,7 @@ export type GetRecipientByIdOptions = {
};
export const ZGetRecipientByIdResponseSchema = RecipientSchema.extend({
- Field: FieldSchema.array(),
+ fields: FieldSchema.array(),
});
export type TGetRecipientByIdResponse = z.infer;
@@ -29,7 +29,7 @@ export const getRecipientById = async ({
const recipient = await prisma.recipient.findFirst({
where: {
id: recipientId,
- Document: teamId
+ document: teamId
? {
team: {
id: teamId,
@@ -46,7 +46,7 @@ export const getRecipientById = async ({
},
},
include: {
- Field: true,
+ fields: true,
},
});
diff --git a/packages/lib/server-only/recipient/get-recipient-signatures.ts b/packages/lib/server-only/recipient/get-recipient-signatures.ts
index 9b37e84b5..26701a97d 100644
--- a/packages/lib/server-only/recipient/get-recipient-signatures.ts
+++ b/packages/lib/server-only/recipient/get-recipient-signatures.ts
@@ -7,7 +7,7 @@ export type GetRecipientSignaturesOptions = {
export const getRecipientSignatures = async ({ recipientId }: GetRecipientSignaturesOptions) => {
return await prisma.signature.findMany({
where: {
- Field: {
+ field: {
recipientId,
},
},
diff --git a/packages/lib/server-only/recipient/get-recipients-for-document.ts b/packages/lib/server-only/recipient/get-recipients-for-document.ts
index ea038f29e..daa34d106 100644
--- a/packages/lib/server-only/recipient/get-recipients-for-document.ts
+++ b/packages/lib/server-only/recipient/get-recipients-for-document.ts
@@ -14,7 +14,7 @@ export const getRecipientsForDocument = async ({
const recipients = await prisma.recipient.findMany({
where: {
documentId,
- Document: teamId
+ document: teamId
? {
team: {
id: teamId,
diff --git a/packages/lib/server-only/recipient/get-recipients-for-template.ts b/packages/lib/server-only/recipient/get-recipients-for-template.ts
index d13fbf238..6256126ef 100644
--- a/packages/lib/server-only/recipient/get-recipients-for-template.ts
+++ b/packages/lib/server-only/recipient/get-recipients-for-template.ts
@@ -14,7 +14,7 @@ export const getRecipientsForTemplate = async ({
const recipients = await prisma.recipient.findMany({
where: {
templateId,
- Template: teamId
+ template: teamId
? {
team: {
id: teamId,
diff --git a/packages/lib/server-only/recipient/set-document-recipients.ts b/packages/lib/server-only/recipient/set-document-recipients.ts
index 594fc4d1b..3a7eeed34 100644
--- a/packages/lib/server-only/recipient/set-document-recipients.ts
+++ b/packages/lib/server-only/recipient/set-document-recipients.ts
@@ -75,7 +75,7 @@ export const setDocumentRecipients = async ({
}),
},
include: {
- Field: true,
+ fields: true,
documentMeta: true,
team: {
include: {
@@ -148,7 +148,7 @@ export const setDocumentRecipients = async ({
if (
existing &&
hasRecipientBeenChanged(existing, recipient) &&
- !canRecipientBeModified(existing, document.Field)
+ !canRecipientBeModified(existing, document.fields)
) {
throw new AppError(AppErrorCode.INVALID_REQUEST, {
message: 'Cannot modify a recipient who has already interacted with the document',
diff --git a/packages/lib/server-only/recipient/update-document-recipients.ts b/packages/lib/server-only/recipient/update-document-recipients.ts
index 0a5372ddd..25be1b6de 100644
--- a/packages/lib/server-only/recipient/update-document-recipients.ts
+++ b/packages/lib/server-only/recipient/update-document-recipients.ts
@@ -65,8 +65,8 @@ export const updateDocumentRecipients = async ({
}),
},
include: {
- Field: true,
- Recipient: true,
+ fields: true,
+ recipients: true,
},
});
@@ -99,7 +99,7 @@ export const updateDocumentRecipients = async ({
}
const recipientsToUpdate = recipients.map((recipient) => {
- const originalRecipient = document.Recipient.find(
+ const originalRecipient = document.recipients.find(
(existingRecipient) => existingRecipient.id === recipient.id,
);
@@ -109,7 +109,7 @@ export const updateDocumentRecipients = async ({
});
}
- const duplicateRecipientWithSameEmail = document.Recipient.find(
+ const duplicateRecipientWithSameEmail = document.recipients.find(
(existingRecipient) =>
existingRecipient.email === recipient.email && existingRecipient.id !== recipient.id,
);
@@ -122,7 +122,7 @@ export const updateDocumentRecipients = async ({
if (
hasRecipientBeenChanged(originalRecipient, recipient) &&
- !canRecipientBeModified(originalRecipient, document.Field)
+ !canRecipientBeModified(originalRecipient, document.fields)
) {
throw new AppError(AppErrorCode.INVALID_REQUEST, {
message: 'Cannot modify a recipient who has already interacted with the document',
@@ -172,7 +172,7 @@ export const updateDocumentRecipients = async ({
authOptions,
},
include: {
- Field: true,
+ fields: true,
},
});
diff --git a/packages/lib/server-only/recipient/update-recipient.ts b/packages/lib/server-only/recipient/update-recipient.ts
index 5d2c64259..2aec9f7ee 100644
--- a/packages/lib/server-only/recipient/update-recipient.ts
+++ b/packages/lib/server-only/recipient/update-recipient.ts
@@ -40,7 +40,7 @@ export const updateRecipient = async ({
const recipient = await prisma.recipient.findFirst({
where: {
id: recipientId,
- Document: {
+ document: {
id: documentId,
...(teamId
? {
@@ -60,7 +60,7 @@ export const updateRecipient = async ({
},
},
include: {
- Document: true,
+ document: true,
},
});
diff --git a/packages/lib/server-only/recipient/update-template-recipients.ts b/packages/lib/server-only/recipient/update-template-recipients.ts
index 290dcc970..3f1444664 100644
--- a/packages/lib/server-only/recipient/update-template-recipients.ts
+++ b/packages/lib/server-only/recipient/update-template-recipients.ts
@@ -63,7 +63,7 @@ export const updateTemplateRecipients = async ({
}),
},
include: {
- Recipient: true,
+ recipients: true,
},
});
@@ -90,7 +90,7 @@ export const updateTemplateRecipients = async ({
}
const recipientsToUpdate = recipients.map((recipient) => {
- const originalRecipient = template.Recipient.find(
+ const originalRecipient = template.recipients.find(
(existingRecipient) => existingRecipient.id === recipient.id,
);
@@ -100,7 +100,7 @@ export const updateTemplateRecipients = async ({
});
}
- const duplicateRecipientWithSameEmail = template.Recipient.find(
+ const duplicateRecipientWithSameEmail = template.recipients.find(
(existingRecipient) =>
existingRecipient.email === recipient.email && existingRecipient.id !== recipient.id,
);
@@ -157,7 +157,7 @@ export const updateTemplateRecipients = async ({
authOptions,
},
include: {
- Field: true,
+ fields: true,
},
});
diff --git a/packages/lib/server-only/share/get-recipient-or-sender-by-share-link-slug.ts b/packages/lib/server-only/share/get-recipient-or-sender-by-share-link-slug.ts
index fee8eecc1..1cfabe6ab 100644
--- a/packages/lib/server-only/share/get-recipient-or-sender-by-share-link-slug.ts
+++ b/packages/lib/server-only/share/get-recipient-or-sender-by-share-link-slug.ts
@@ -15,7 +15,7 @@ export const getRecipientOrSenderByShareLinkSlug = async ({
const sender = await prisma.user.findFirst({
where: {
- Document: { some: { id: documentId } },
+ documents: { some: { id: documentId } },
email,
},
select: {
@@ -35,7 +35,7 @@ export const getRecipientOrSenderByShareLinkSlug = async ({
email,
},
include: {
- Signature: true,
+ signatures: true,
},
});
diff --git a/packages/lib/server-only/team/create-team.ts b/packages/lib/server-only/team/create-team.ts
index 1b60ef99f..ac279b519 100644
--- a/packages/lib/server-only/team/create-team.ts
+++ b/packages/lib/server-only/team/create-team.ts
@@ -56,7 +56,7 @@ export const createTeam = async ({
id: userId,
},
include: {
- Subscription: true,
+ subscriptions: true,
},
});
@@ -68,7 +68,7 @@ export const createTeam = async ({
prices.map((price) => price.id),
);
- isPaymentRequired = !subscriptionsContainsActivePlan(user.Subscription, teamRelatedPriceIds);
+ isPaymentRequired = !subscriptionsContainsActivePlan(user.subscriptions, teamRelatedPriceIds);
customerId = await createTeamCustomer({
name: user.name ?? teamName,
diff --git a/packages/lib/server-only/team/transfer-team-ownership.ts b/packages/lib/server-only/team/transfer-team-ownership.ts
index b7fb99a84..57ac43813 100644
--- a/packages/lib/server-only/team/transfer-team-ownership.ts
+++ b/packages/lib/server-only/team/transfer-team-ownership.ts
@@ -57,7 +57,7 @@ export const transferTeamOwnership = async ({ token }: TransferTeamOwnershipOpti
},
},
include: {
- Subscription: true,
+ subscriptions: true,
},
});
diff --git a/packages/lib/server-only/template/create-document-from-direct-template.ts b/packages/lib/server-only/template/create-document-from-direct-template.ts
index 3b8e73ff0..b3e187688 100644
--- a/packages/lib/server-only/template/create-document-from-direct-template.ts
+++ b/packages/lib/server-only/template/create-document-from-direct-template.ts
@@ -32,7 +32,10 @@ import { DOCUMENT_AUDIT_LOG_TYPE } from '../../types/document-audit-logs';
import type { TRecipientActionAuthTypes } from '../../types/document-auth';
import { DocumentAccessAuth, ZRecipientAuthOptionsSchema } from '../../types/document-auth';
import { ZFieldMetaSchema } from '../../types/field-meta';
-import { ZWebhookDocumentSchema } from '../../types/webhook-payload';
+import {
+ ZWebhookDocumentSchema,
+ mapDocumentToWebhookDocumentPayload,
+} from '../../types/webhook-payload';
import type { ApiRequestMetadata } from '../../universal/extract-request-metadata';
import type { CreateDocumentAuditLogDataResponse } from '../../utils/document-audit-logs';
import { createDocumentAuditLogData } from '../../utils/document-audit-logs';
@@ -64,7 +67,7 @@ export type CreateDocumentFromDirectTemplateOptions = {
};
type CreatedDirectRecipientField = {
- field: Field & { Signature?: Signature | null };
+ field: Field & { signature?: Signature | null };
derivedRecipientActionAuth: TRecipientActionAuthTypes | null;
};
@@ -95,15 +98,15 @@ export const createDocumentFromDirectTemplate = async ({
},
},
include: {
- Recipient: {
+ recipients: {
include: {
- Field: true,
+ fields: true,
},
},
directLink: true,
templateDocumentData: true,
templateMeta: true,
- User: true,
+ user: true,
team: {
include: {
teamGlobalSettings: true,
@@ -116,7 +119,7 @@ export const createDocumentFromDirectTemplate = async ({
throw new AppError(AppErrorCode.INVALID_REQUEST, { message: 'Invalid or missing template' });
}
- const { Recipient: recipients, directLink, User: templateOwner } = template;
+ const { recipients, directLink, user: templateOwner } = template;
const directTemplateRecipient = recipients.find(
(recipient) => recipient.id === directLink.directTemplateRecipientId,
@@ -159,7 +162,7 @@ export const createDocumentFromDirectTemplate = async ({
directTemplateRecipient.authOptions,
);
- const nonDirectTemplateRecipients = template.Recipient.filter(
+ const nonDirectTemplateRecipients = template.recipients.filter(
(recipient) => recipient.id !== directTemplateRecipient.id,
);
@@ -173,7 +176,7 @@ export const createDocumentFromDirectTemplate = async ({
// Associate, validate and map to a query every direct template recipient field with the provided fields.
const createDirectRecipientFieldArgs = await Promise.all(
- directTemplateRecipient.Field.map(async (templateField) => {
+ directTemplateRecipient.fields.map(async (templateField) => {
const signedFieldValue = signedFieldValues.find(
(value) => value.fieldId === templateField.id,
);
@@ -268,7 +271,7 @@ export const createDocumentFromDirectTemplate = async ({
globalAccessAuth: templateAuthOptions.globalAccessAuth,
globalActionAuth: templateAuthOptions.globalActionAuth,
}),
- Recipient: {
+ recipients: {
createMany: {
data: nonDirectTemplateRecipients.map((recipient) => {
const authOptions = ZRecipientAuthOptionsSchema.parse(recipient?.authOptions);
@@ -306,7 +309,7 @@ export const createDocumentFromDirectTemplate = async ({
},
},
include: {
- Recipient: true,
+ recipients: true,
team: {
select: {
url: true,
@@ -318,7 +321,7 @@ export const createDocumentFromDirectTemplate = async ({
let nonDirectRecipientFieldsToCreate: Omit[] = [];
Object.values(nonDirectTemplateRecipients).forEach((templateRecipient) => {
- const recipient = document.Recipient.find(
+ const recipient = document.recipients.find(
(recipient) => recipient.email === templateRecipient.email,
);
@@ -327,7 +330,7 @@ export const createDocumentFromDirectTemplate = async ({
}
nonDirectRecipientFieldsToCreate = nonDirectRecipientFieldsToCreate.concat(
- templateRecipient.Field.map((field) => ({
+ templateRecipient.fields.map((field) => ({
documentId: document.id,
recipientId: recipient.id,
type: field.type,
@@ -366,7 +369,7 @@ export const createDocumentFromDirectTemplate = async ({
sendStatus: SendStatus.SENT,
signedAt: initialRequestTime,
signingOrder: directTemplateRecipient.signingOrder,
- Field: {
+ fields: {
createMany: {
data: directTemplateNonSignatureFields.map(({ templateField, customText }) => ({
documentId: document.id,
@@ -384,7 +387,7 @@ export const createDocumentFromDirectTemplate = async ({
},
},
include: {
- Field: true,
+ fields: true,
},
});
@@ -410,7 +413,7 @@ export const createDocumentFromDirectTemplate = async ({
customText: '',
inserted: true,
fieldMeta: templateField.fieldMeta || Prisma.JsonNull,
- Signature: {
+ signature: {
create: {
recipientId: createdDirectRecipient.id,
signatureImageAsBase64: signature.signatureImageAsBase64,
@@ -419,7 +422,7 @@ export const createDocumentFromDirectTemplate = async ({
},
},
include: {
- Signature: true,
+ signature: true,
},
});
@@ -432,7 +435,7 @@ export const createDocumentFromDirectTemplate = async ({
);
const createdDirectRecipientFields: CreatedDirectRecipientField[] = [
- ...createdDirectRecipient.Field.map((field) => ({
+ ...createdDirectRecipient.fields.map((field) => ({
field,
derivedRecipientActionAuth: null,
})),
@@ -501,7 +504,7 @@ export const createDocumentFromDirectTemplate = async ({
.with(FieldType.SIGNATURE, FieldType.FREE_SIGNATURE, (type) => ({
type,
data:
- field.Signature?.signatureImageAsBase64 || field.Signature?.typedSignature || '',
+ field.signature?.signatureImageAsBase64 || field.signature?.typedSignature || '',
}))
.with(
FieldType.DATE,
@@ -610,13 +613,13 @@ export const createDocumentFromDirectTemplate = async ({
include: {
documentData: true,
documentMeta: true,
- Recipient: true,
+ recipients: true,
},
});
await triggerWebhook({
event: WebhookTriggerEvents.DOCUMENT_SIGNED,
- data: ZWebhookDocumentSchema.parse(createdDocument),
+ data: ZWebhookDocumentSchema.parse(mapDocumentToWebhookDocumentPayload(createdDocument)),
userId: template.userId,
teamId: template.teamId ?? undefined,
});
diff --git a/packages/lib/server-only/template/create-document-from-template-legacy.ts b/packages/lib/server-only/template/create-document-from-template-legacy.ts
index c9ffaffc1..bf79f080e 100644
--- a/packages/lib/server-only/template/create-document-from-template-legacy.ts
+++ b/packages/lib/server-only/template/create-document-from-template-legacy.ts
@@ -43,8 +43,8 @@ export const createDocumentFromTemplateLegacy = async ({
}),
},
include: {
- Recipient: true,
- Field: true,
+ recipients: true,
+ fields: true,
templateDocumentData: true,
templateMeta: true,
team: {
@@ -76,8 +76,8 @@ export const createDocumentFromTemplateLegacy = async ({
title: template.title,
visibility: template.team?.teamGlobalSettings?.documentVisibility,
documentDataId: documentData.id,
- Recipient: {
- create: template.Recipient.map((recipient) => ({
+ recipients: {
+ create: template.recipients.map((recipient) => ({
email: recipient.email,
name: recipient.name,
role: recipient.role,
@@ -100,7 +100,7 @@ export const createDocumentFromTemplateLegacy = async ({
},
include: {
- Recipient: {
+ recipients: {
orderBy: {
id: 'asc',
},
@@ -110,10 +110,10 @@ export const createDocumentFromTemplateLegacy = async ({
});
await prisma.field.createMany({
- data: template.Field.map((field) => {
- const recipient = template.Recipient.find((recipient) => recipient.id === field.recipientId);
+ data: template.fields.map((field) => {
+ const recipient = template.recipients.find((recipient) => recipient.id === field.recipientId);
- const documentRecipient = document.Recipient.find((doc) => doc.email === recipient?.email);
+ const documentRecipient = document.recipients.find((doc) => doc.email === recipient?.email);
if (!documentRecipient) {
throw new Error('Recipient not found.');
@@ -135,9 +135,9 @@ export const createDocumentFromTemplateLegacy = async ({
});
if (recipients && recipients.length > 0) {
- document.Recipient = await Promise.all(
+ document.recipients = await Promise.all(
recipients.map(async (recipient, index) => {
- const existingRecipient = document.Recipient.at(index);
+ const existingRecipient = document.recipients.at(index);
return await prisma.recipient.upsert({
where: {
diff --git a/packages/lib/server-only/template/create-document-from-template.ts b/packages/lib/server-only/template/create-document-from-template.ts
index e3aa84b30..05fa23db1 100644
--- a/packages/lib/server-only/template/create-document-from-template.ts
+++ b/packages/lib/server-only/template/create-document-from-template.ts
@@ -25,7 +25,10 @@ import { DOCUMENT_AUDIT_LOG_TYPE } from '../../types/document-audit-logs';
import { ZRecipientAuthOptionsSchema } from '../../types/document-auth';
import type { TDocumentEmailSettings } from '../../types/document-email';
import { ZFieldMetaSchema } from '../../types/field-meta';
-import { ZWebhookDocumentSchema } from '../../types/webhook-payload';
+import {
+ ZWebhookDocumentSchema,
+ mapDocumentToWebhookDocumentPayload,
+} from '../../types/webhook-payload';
import type { ApiRequestMetadata } from '../../universal/extract-request-metadata';
import { createDocumentAuditLogData } from '../../utils/document-audit-logs';
import {
@@ -78,7 +81,7 @@ export type CreateDocumentFromTemplateOptions = {
export const ZCreateDocumentFromTemplateResponseSchema = DocumentSchema.extend({
documentData: DocumentDataSchema,
- Recipient: RecipientSchema.array(),
+ recipients: RecipientSchema.array(),
});
export type TCreateDocumentFromTemplateResponse = z.infer<
@@ -115,9 +118,9 @@ export const createDocumentFromTemplate = async ({
}),
},
include: {
- Recipient: {
+ recipients: {
include: {
- Field: true,
+ fields: true,
},
},
templateDocumentData: true,
@@ -138,7 +141,7 @@ export const createDocumentFromTemplate = async ({
// Check that all the passed in recipient IDs can be associated with a template recipient.
recipients.forEach((recipient) => {
- const foundRecipient = template.Recipient.find(
+ const foundRecipient = template.recipients.find(
(templateRecipient) => templateRecipient.id === recipient.id,
);
@@ -153,12 +156,12 @@ export const createDocumentFromTemplate = async ({
documentAuth: template.authOptions,
});
- const finalRecipients: FinalRecipient[] = template.Recipient.map((templateRecipient) => {
+ const finalRecipients: FinalRecipient[] = template.recipients.map((templateRecipient) => {
const foundRecipient = recipients.find((recipient) => recipient.id === templateRecipient.id);
return {
templateRecipientId: templateRecipient.id,
- fields: templateRecipient.Field,
+ fields: templateRecipient.fields,
name: foundRecipient ? (foundRecipient.name ?? '') : templateRecipient.name,
email: foundRecipient ? foundRecipient.email : templateRecipient.email,
role: templateRecipient.role,
@@ -233,7 +236,7 @@ export const createDocumentFromTemplate = async ({
override?.typedSignatureEnabled ?? template.templateMeta?.typedSignatureEnabled,
},
},
- Recipient: {
+ recipients: {
createMany: {
data: finalRecipients.map((recipient) => {
const authOptions = ZRecipientAuthOptionsSchema.parse(recipient?.authOptions);
@@ -260,7 +263,7 @@ export const createDocumentFromTemplate = async ({
},
},
include: {
- Recipient: {
+ recipients: {
orderBy: {
id: 'asc',
},
@@ -272,7 +275,7 @@ export const createDocumentFromTemplate = async ({
let fieldsToCreate: Omit[] = [];
Object.values(finalRecipients).forEach(({ email, fields }) => {
- const recipient = document.Recipient.find((recipient) => recipient.email === email);
+ const recipient = document.recipients.find((recipient) => recipient.email === email);
if (!recipient) {
throw new Error('Recipient not found.');
@@ -323,7 +326,7 @@ export const createDocumentFromTemplate = async ({
},
include: {
documentMeta: true,
- Recipient: true,
+ recipients: true,
},
});
@@ -333,7 +336,7 @@ export const createDocumentFromTemplate = async ({
await triggerWebhook({
event: WebhookTriggerEvents.DOCUMENT_CREATED,
- data: ZWebhookDocumentSchema.parse(createdDocument),
+ data: ZWebhookDocumentSchema.parse(mapDocumentToWebhookDocumentPayload(createdDocument)),
userId,
teamId,
});
diff --git a/packages/lib/server-only/template/create-template-direct-link.ts b/packages/lib/server-only/template/create-template-direct-link.ts
index 0cdf1dd30..0c1c35a99 100644
--- a/packages/lib/server-only/template/create-template-direct-link.ts
+++ b/packages/lib/server-only/template/create-template-direct-link.ts
@@ -52,7 +52,7 @@ export const createTemplateDirectLink = async ({
}),
},
include: {
- Recipient: true,
+ recipients: true,
directLink: true,
},
});
@@ -67,14 +67,14 @@ export const createTemplateDirectLink = async ({
if (
directRecipientId &&
- !template.Recipient.find((recipient) => recipient.id === directRecipientId)
+ !template.recipients.find((recipient) => recipient.id === directRecipientId)
) {
throw new AppError(AppErrorCode.NOT_FOUND, { message: 'Recipient not found' });
}
if (
!directRecipientId &&
- template.Recipient.find(
+ template.recipients.find(
(recipient) => recipient.email.toLowerCase() === DIRECT_TEMPLATE_RECIPIENT_EMAIL,
)
) {
diff --git a/packages/lib/server-only/template/delete-template-direct-link.ts b/packages/lib/server-only/template/delete-template-direct-link.ts
index 3ba763d04..501b86338 100644
--- a/packages/lib/server-only/template/delete-template-direct-link.ts
+++ b/packages/lib/server-only/template/delete-template-direct-link.ts
@@ -37,7 +37,7 @@ export const deleteTemplateDirectLink = async ({
},
include: {
directLink: true,
- Recipient: true,
+ recipients: true,
},
});
@@ -60,7 +60,7 @@ export const deleteTemplateDirectLink = async ({
id: directLink.directTemplateRecipientId,
},
data: {
- ...generateAvaliableRecipientPlaceholder(template.Recipient),
+ ...generateAvaliableRecipientPlaceholder(template.recipients),
},
});
diff --git a/packages/lib/server-only/template/duplicate-template.ts b/packages/lib/server-only/template/duplicate-template.ts
index 8da685f6e..04cb80c51 100644
--- a/packages/lib/server-only/template/duplicate-template.ts
+++ b/packages/lib/server-only/template/duplicate-template.ts
@@ -41,8 +41,8 @@ export const duplicateTemplate = async ({
}),
},
include: {
- Recipient: true,
- Field: true,
+ recipients: true,
+ fields: true,
templateDocumentData: true,
templateMeta: true,
},
@@ -77,8 +77,8 @@ export const duplicateTemplate = async ({
teamId,
title: template.title + ' (copy)',
templateDocumentDataId: documentData.id,
- Recipient: {
- create: template.Recipient.map((recipient) => ({
+ recipients: {
+ create: template.recipients.map((recipient) => ({
email: recipient.email,
name: recipient.name,
token: nanoid(),
@@ -87,15 +87,15 @@ export const duplicateTemplate = async ({
templateMeta,
},
include: {
- Recipient: true,
+ recipients: true,
},
});
await prisma.field.createMany({
- data: template.Field.map((field) => {
- const recipient = template.Recipient.find((recipient) => recipient.id === field.recipientId);
+ data: template.fields.map((field) => {
+ const recipient = template.recipients.find((recipient) => recipient.id === field.recipientId);
- const duplicatedTemplateRecipient = duplicatedTemplate.Recipient.find(
+ const duplicatedTemplateRecipient = duplicatedTemplate.recipients.find(
(doc) => doc.email === recipient?.email,
);
diff --git a/packages/lib/server-only/template/find-templates.ts b/packages/lib/server-only/template/find-templates.ts
index 4009a37d0..d1306d9cd 100644
--- a/packages/lib/server-only/template/find-templates.ts
+++ b/packages/lib/server-only/template/find-templates.ts
@@ -36,8 +36,8 @@ export const ZFindTemplatesResponseSchema = ZFindResultResponse.extend({
id: true,
url: true,
}).nullable(),
- Field: FieldSchema.array(),
- Recipient: RecipientSchema.array(),
+ fields: FieldSchema.array(),
+ recipients: RecipientSchema.array(),
templateMeta: TemplateMetaSchema.pick({
signingOrder: true,
distributionMethod: true,
@@ -119,8 +119,8 @@ export const findTemplates = async ({
url: true,
},
},
- Field: true,
- Recipient: true,
+ fields: true,
+ recipients: true,
templateMeta: true,
directLink: {
select: {
diff --git a/packages/lib/server-only/template/get-template-by-direct-link-token.ts b/packages/lib/server-only/template/get-template-by-direct-link-token.ts
index 49d518468..83d1c59b6 100644
--- a/packages/lib/server-only/template/get-template-by-direct-link-token.ts
+++ b/packages/lib/server-only/template/get-template-by-direct-link-token.ts
@@ -16,9 +16,9 @@ export const getTemplateByDirectLinkToken = async ({
},
include: {
directLink: true,
- Recipient: {
+ recipients: {
include: {
- Field: true,
+ fields: true,
},
},
templateDocumentData: true,
@@ -28,6 +28,6 @@ export const getTemplateByDirectLinkToken = async ({
return {
...template,
- Field: template.Recipient.map((recipient) => recipient.Field).flat(),
+ fields: template.recipients.map((recipient) => recipient.fields).flat(),
};
};
diff --git a/packages/lib/server-only/template/get-template-by-id.ts b/packages/lib/server-only/template/get-template-by-id.ts
index f287f410a..fb9d5c095 100644
--- a/packages/lib/server-only/template/get-template-by-id.ts
+++ b/packages/lib/server-only/template/get-template-by-id.ts
@@ -23,9 +23,9 @@ export const ZGetTemplateByIdResponseSchema = TemplateSchema.extend({
directLink: TemplateDirectLinkSchema.nullable(),
templateDocumentData: DocumentDataSchema,
templateMeta: TemplateMetaSchema.nullable(),
- Recipient: RecipientSchema.array(),
- Field: FieldSchema.array(),
- User: UserSchema.pick({
+ recipients: RecipientSchema.array(),
+ fields: FieldSchema.array(),
+ user: UserSchema.pick({
id: true,
name: true,
email: true,
@@ -62,9 +62,9 @@ export const getTemplateById = async ({
directLink: true,
templateDocumentData: true,
templateMeta: true,
- Recipient: true,
- Field: true,
- User: {
+ recipients: true,
+ fields: true,
+ user: {
select: {
id: true,
name: true,
diff --git a/packages/lib/server-only/template/toggle-template-direct-link.ts b/packages/lib/server-only/template/toggle-template-direct-link.ts
index 09e81fda7..bedf63380 100644
--- a/packages/lib/server-only/template/toggle-template-direct-link.ts
+++ b/packages/lib/server-only/template/toggle-template-direct-link.ts
@@ -46,7 +46,7 @@ export const toggleTemplateDirectLink = async ({
}),
},
include: {
- Recipient: true,
+ recipients: true,
directLink: true,
},
});
diff --git a/packages/lib/server-only/user/disable-user.ts b/packages/lib/server-only/user/disable-user.ts
index 787b70422..483df99b2 100644
--- a/packages/lib/server-only/user/disable-user.ts
+++ b/packages/lib/server-only/user/disable-user.ts
@@ -11,11 +11,11 @@ export const disableUser = async ({ id }: DisableUserOptions) => {
id,
},
include: {
- ApiToken: true,
- Webhooks: true,
+ apiTokens: true,
+ webhooks: true,
passkeys: true,
- VerificationToken: true,
- PasswordResetToken: true,
+ verificationTokens: true,
+ passwordResetTokens: true,
},
});
diff --git a/packages/lib/server-only/user/get-all-users.ts b/packages/lib/server-only/user/get-all-users.ts
index 797d1e0b2..6642e6483 100644
--- a/packages/lib/server-only/user/get-all-users.ts
+++ b/packages/lib/server-only/user/get-all-users.ts
@@ -34,8 +34,8 @@ export const findUsers = async ({
const [users, count] = await Promise.all([
prisma.user.findMany({
include: {
- Subscription: true,
- Document: {
+ subscriptions: true,
+ documents: {
select: {
id: true,
},
diff --git a/packages/lib/server-only/user/reset-password.ts b/packages/lib/server-only/user/reset-password.ts
index 823c645b5..8ff0c8bc3 100644
--- a/packages/lib/server-only/user/reset-password.ts
+++ b/packages/lib/server-only/user/reset-password.ts
@@ -24,7 +24,7 @@ export const resetPassword = async ({ token, password, requestMetadata }: ResetP
token,
},
include: {
- User: true,
+ user: true,
},
});
@@ -38,7 +38,7 @@ export const resetPassword = async ({ token, password, requestMetadata }: ResetP
throw new AppError(AppErrorCode.EXPIRED_CODE);
}
- const isSamePassword = await compare(password, foundToken.User.password || '');
+ const isSamePassword = await compare(password, foundToken.user.password || '');
if (isSamePassword) {
throw new AppError('SAME_PASSWORD');
diff --git a/packages/lib/types/field-meta.ts b/packages/lib/types/field-meta.ts
index c7171529a..135edc95d 100644
--- a/packages/lib/types/field-meta.ts
+++ b/packages/lib/types/field-meta.ts
@@ -97,6 +97,11 @@ export const ZDropdownFieldMeta = ZBaseFieldMeta.extend({
export type TDropdownFieldMeta = z.infer;
+/**
+ * This will parse empty objects to { "type": "initials" }
+ *
+ * Todo: Fix.
+ */
export const ZFieldMetaSchema = z
.union([
ZBaseFieldMeta.extend(ZInitialsFieldMeta.shape),
diff --git a/packages/lib/types/webhook-payload.ts b/packages/lib/types/webhook-payload.ts
index e0626c563..fedb8f7ff 100644
--- a/packages/lib/types/webhook-payload.ts
+++ b/packages/lib/types/webhook-payload.ts
@@ -1,5 +1,6 @@
import { z } from 'zod';
+import type { Document, DocumentMeta, Recipient } from '@documenso/prisma/client';
import {
DocumentDistributionMethod,
DocumentSigningOrder,
@@ -73,8 +74,36 @@ export const ZWebhookDocumentSchema = z.object({
templateId: z.number().nullable(),
source: z.nativeEnum(DocumentSource),
documentMeta: ZWebhookDocumentMetaSchema.nullable(),
+ recipients: z.array(ZWebhookRecipientSchema),
+
+ /**
+ * Legacy field for backwards compatibility.
+ */
Recipient: z.array(ZWebhookRecipientSchema),
});
export type TWebhookRecipient = z.infer;
export type TWebhookDocument = z.infer;
+
+export const mapDocumentToWebhookDocumentPayload = (
+ document: Document & {
+ recipients: Recipient[];
+ documentMeta: DocumentMeta | null;
+ },
+): TWebhookDocument => {
+ const { recipients, documentMeta, ...trimmedDocument } = document;
+
+ return {
+ ...trimmedDocument,
+ documentMeta: documentMeta
+ ? {
+ ...documentMeta,
+ // Not sure why is optional in the prisma schema.
+ timezone: 'Etc/UTC',
+ dateFormat: 'yyyy-MM-dd hh:mm a',
+ }
+ : null,
+ Recipient: recipients,
+ recipients,
+ };
+};
diff --git a/packages/lib/utils/mask-recipient-tokens-for-document.ts b/packages/lib/utils/mask-recipient-tokens-for-document.ts
index ed6e2b13e..52ddab367 100644
--- a/packages/lib/utils/mask-recipient-tokens-for-document.ts
+++ b/packages/lib/utils/mask-recipient-tokens-for-document.ts
@@ -12,7 +12,7 @@ export const maskRecipientTokensForDocument =
user,
token,
}: MaskRecipientTokensForDocumentOptions) => {
- const maskedRecipients = document.Recipient.map((recipient) => {
+ const maskedRecipients = document.recipients.map((recipient) => {
if (document.userId === user?.id) {
return recipient;
}
diff --git a/packages/prisma/schema.prisma b/packages/prisma/schema.prisma
index 0070229d9..72291b1a5 100644
--- a/packages/prisma/schema.prisma
+++ b/packages/prisma/schema.prisma
@@ -46,9 +46,9 @@ model User {
accounts Account[]
sessions Session[]
- Document Document[]
- Subscription Subscription[]
- PasswordResetToken PasswordResetToken[]
+ documents Document[]
+ subscriptions Subscription[]
+ passwordResetTokens PasswordResetToken[]
ownedTeams Team[]
ownedPendingTeams TeamPending[]
teamMembers TeamMember[]
@@ -57,15 +57,15 @@ model User {
twoFactorBackupCodes String?
url String? @unique
- profile UserProfile?
- VerificationToken VerificationToken[]
- ApiToken ApiToken[]
- Template Template[]
- securityAuditLogs UserSecurityAuditLog[]
- Webhooks Webhook[]
- siteSettings SiteSettings[]
- passkeys Passkey[]
- avatarImage AvatarImage? @relation(fields: [avatarImageId], references: [id], onDelete: SetNull)
+ profile UserProfile?
+ verificationTokens VerificationToken[]
+ apiTokens ApiToken[]
+ templates Template[]
+ securityAuditLogs UserSecurityAuditLog[]
+ webhooks Webhook[]
+ siteSettings SiteSettings[]
+ passkeys Passkey[]
+ avatarImage AvatarImage? @relation(fields: [avatarImageId], references: [id], onDelete: SetNull)
@@index([email])
}
@@ -113,7 +113,7 @@ model UserSecurityAuditLog {
userAgent String?
ipAddress String?
- User User @relation(fields: [userId], references: [id], onDelete: Cascade)
+ user User @relation(fields: [userId], references: [id], onDelete: Cascade)
}
model PasswordResetToken {
@@ -122,7 +122,7 @@ model PasswordResetToken {
createdAt DateTime @default(now())
expiry DateTime
userId Int
- User User @relation(fields: [userId], references: [id], onDelete: Cascade)
+ user User @relation(fields: [userId], references: [id], onDelete: Cascade)
}
model Passkey {
@@ -139,7 +139,7 @@ model Passkey {
credentialBackedUp Boolean
transports String[]
- User User @relation(fields: [userId], references: [id], onDelete: Cascade)
+ user User @relation(fields: [userId], references: [id], onDelete: Cascade)
}
model AnonymousVerificationToken {
@@ -179,10 +179,10 @@ model Webhook {
createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt
userId Int
- User User @relation(fields: [userId], references: [id], onDelete: Cascade)
+ user User @relation(fields: [userId], references: [id], onDelete: Cascade)
teamId Int?
team Team? @relation(fields: [teamId], references: [id], onDelete: Cascade)
- WebhookCall WebhookCall[]
+ webhookCalls WebhookCall[]
}
enum WebhookCallStatus {
@@ -240,7 +240,7 @@ model Subscription {
cancelAtPeriodEnd Boolean @default(false)
team Team? @relation(fields: [teamId], references: [id], onDelete: Cascade)
- User User? @relation(fields: [userId], references: [id], onDelete: Cascade)
+ user User? @relation(fields: [userId], references: [id], onDelete: Cascade)
@@index([userId])
}
@@ -298,15 +298,15 @@ model Document {
id Int @id @default(autoincrement())
externalId String?
userId Int
- User User @relation(fields: [userId], references: [id], onDelete: Cascade)
+ user User @relation(fields: [userId], references: [id], onDelete: Cascade)
authOptions Json?
formValues Json?
visibility DocumentVisibility @default(EVERYONE)
title String
status DocumentStatus @default(DRAFT)
- Recipient Recipient[]
- Field Field[]
- ShareLink DocumentShareLink[]
+ recipients Recipient[]
+ fields Field[]
+ shareLinks DocumentShareLink[]
documentDataId String
documentData DocumentData @relation(fields: [documentDataId], references: [id], onDelete: Cascade)
documentMeta DocumentMeta?
@@ -360,8 +360,8 @@ model DocumentData {
type DocumentDataType
data String
initialData String
- Document Document?
- Template Template?
+ document Document?
+ template Template?
}
enum DocumentDistributionMethod {
@@ -426,10 +426,10 @@ model Recipient {
readStatus ReadStatus @default(NOT_OPENED)
signingStatus SigningStatus @default(NOT_SIGNED)
sendStatus SendStatus @default(NOT_SENT)
- Document Document? @relation(fields: [documentId], references: [id], onDelete: Cascade)
- Template Template? @relation(fields: [templateId], references: [id], onDelete: Cascade)
- Field Field[]
- Signature Signature[]
+ document Document? @relation(fields: [documentId], references: [id], onDelete: Cascade)
+ template Template? @relation(fields: [templateId], references: [id], onDelete: Cascade)
+ fields Field[]
+ signatures Signature[]
@@unique([documentId, email])
@@unique([templateId, email])
@@ -466,10 +466,10 @@ model Field {
height Decimal @default(-1)
customText String
inserted Boolean
- Document Document? @relation(fields: [documentId], references: [id], onDelete: Cascade)
- Template Template? @relation(fields: [templateId], references: [id], onDelete: Cascade)
- Recipient Recipient @relation(fields: [recipientId], references: [id], onDelete: Cascade)
- Signature Signature?
+ document Document? @relation(fields: [documentId], references: [id], onDelete: Cascade)
+ template Template? @relation(fields: [templateId], references: [id], onDelete: Cascade)
+ recipient Recipient @relation(fields: [recipientId], references: [id], onDelete: Cascade)
+ signature Signature?
fieldMeta Json?
@@index([documentId])
@@ -485,8 +485,8 @@ model Signature {
signatureImageAsBase64 String?
typedSignature String?
- Recipient Recipient @relation(fields: [recipientId], references: [id], onDelete: Cascade)
- Field Field @relation(fields: [fieldId], references: [id], onDelete: Cascade)
+ recipient Recipient @relation(fields: [recipientId], references: [id], onDelete: Cascade)
+ field Field @relation(fields: [fieldId], references: [id], onDelete: Cascade)
@@index([recipientId])
}
@@ -554,10 +554,10 @@ model Team {
owner User @relation(fields: [ownerUserId], references: [id], onDelete: Cascade)
subscription Subscription?
- document Document[]
+ documents Document[]
templates Template[]
- ApiToken ApiToken[]
- Webhook Webhook[]
+ apiTokens ApiToken[]
+ webhooks Webhook[]
}
model TeamPending {
@@ -671,9 +671,9 @@ model Template {
team Team? @relation(fields: [teamId], references: [id], onDelete: Cascade)
templateDocumentData DocumentData @relation(fields: [templateDocumentDataId], references: [id], onDelete: Cascade)
- User User @relation(fields: [userId], references: [id], onDelete: Cascade)
- Recipient Recipient[]
- Field Field[]
+ user User @relation(fields: [userId], references: [id], onDelete: Cascade)
+ recipients Recipient[]
+ fields Field[]
directLink TemplateDirectLink?
documents Document[]
diff --git a/packages/prisma/seed/documents.ts b/packages/prisma/seed/documents.ts
index f8a363599..93ca14a53 100644
--- a/packages/prisma/seed/documents.ts
+++ b/packages/prisma/seed/documents.ts
@@ -115,7 +115,7 @@ export const seedDraftDocument = async (
for (const recipient of recipients) {
const email = typeof recipient === 'string' ? recipient : recipient.email;
- const name = typeof recipient === 'string' ? recipient : recipient.name ?? '';
+ const name = typeof recipient === 'string' ? recipient : (recipient.name ?? '');
await prisma.recipient.create({
data: {
@@ -126,12 +126,12 @@ export const seedDraftDocument = async (
sendStatus: SendStatus.NOT_SENT,
signingStatus: SigningStatus.NOT_SIGNED,
signedAt: new Date(),
- Document: {
+ document: {
connect: {
id: document.id,
},
},
- Field: {
+ fields: {
create: {
page: 1,
type: FieldType.NAME,
@@ -184,7 +184,7 @@ export const seedPendingDocument = async (
for (const recipient of recipients) {
const email = typeof recipient === 'string' ? recipient : recipient.email;
- const name = typeof recipient === 'string' ? recipient : recipient.name ?? '';
+ const name = typeof recipient === 'string' ? recipient : (recipient.name ?? '');
await prisma.recipient.create({
data: {
@@ -195,12 +195,12 @@ export const seedPendingDocument = async (
sendStatus: SendStatus.SENT,
signingStatus: SigningStatus.NOT_SIGNED,
signedAt: new Date(),
- Document: {
+ document: {
connect: {
id: document.id,
},
},
- Field: {
+ fields: {
create: {
page: 1,
type: FieldType.NAME,
@@ -222,7 +222,7 @@ export const seedPendingDocument = async (
id: document.id,
},
include: {
- Recipient: true,
+ recipients: true,
},
});
};
@@ -240,7 +240,7 @@ export const seedPendingDocumentNoFields = async ({
for (const recipient of recipients) {
const email = typeof recipient === 'string' ? recipient : recipient.email;
- const name = typeof recipient === 'string' ? recipient : recipient.name ?? '';
+ const name = typeof recipient === 'string' ? recipient : (recipient.name ?? '');
await prisma.recipient.create({
data: {
@@ -251,7 +251,7 @@ export const seedPendingDocumentNoFields = async ({
sendStatus: SendStatus.SENT,
signingStatus: SigningStatus.NOT_SIGNED,
signedAt: new Date(),
- Document: {
+ document: {
connect: {
id: document.id,
},
@@ -265,7 +265,7 @@ export const seedPendingDocumentNoFields = async ({
documentId: document.id,
},
include: {
- Field: true,
+ fields: true,
},
});
@@ -301,7 +301,7 @@ export const seedPendingDocumentWithFullFields = async ({
for (const [recipientIndex, recipient] of recipients.entries()) {
const email = typeof recipient === 'string' ? recipient : recipient.email;
- const name = typeof recipient === 'string' ? recipient : recipient.name ?? '';
+ const name = typeof recipient === 'string' ? recipient : (recipient.name ?? '');
await prisma.recipient.create({
data: {
@@ -312,12 +312,12 @@ export const seedPendingDocumentWithFullFields = async ({
sendStatus: SendStatus.SENT,
signingStatus: SigningStatus.NOT_SIGNED,
signedAt: new Date(),
- Document: {
+ document: {
connect: {
id: document.id,
},
},
- Field: {
+ fields: {
createMany: {
data: fields.map((fieldType, fieldIndex) => ({
page: 1,
@@ -342,7 +342,7 @@ export const seedPendingDocumentWithFullFields = async ({
documentId: document.id,
},
include: {
- Field: true,
+ fields: true,
},
});
@@ -393,7 +393,7 @@ export const seedCompletedDocument = async (
for (const recipient of recipients) {
const email = typeof recipient === 'string' ? recipient : recipient.email;
- const name = typeof recipient === 'string' ? recipient : recipient.name ?? '';
+ const name = typeof recipient === 'string' ? recipient : (recipient.name ?? '');
await prisma.recipient.create({
data: {
@@ -404,12 +404,12 @@ export const seedCompletedDocument = async (
sendStatus: SendStatus.SENT,
signingStatus: SigningStatus.SIGNED,
signedAt: new Date(),
- Document: {
+ document: {
connect: {
id: document.id,
},
},
- Field: {
+ fields: {
create: {
page: 1,
type: FieldType.NAME,
diff --git a/packages/prisma/seed/initial-seed.ts b/packages/prisma/seed/initial-seed.ts
index 38b340a79..d270b31fa 100644
--- a/packages/prisma/seed/initial-seed.ts
+++ b/packages/prisma/seed/initial-seed.ts
@@ -58,7 +58,7 @@ export const seedDatabase = async () => {
title: 'Example Document',
documentDataId: examplePdfData.id,
userId: exampleUser.id,
- Recipient: {
+ recipients: {
create: {
name: String(adminUser.name),
email: adminUser.email,
diff --git a/packages/prisma/seed/templates.ts b/packages/prisma/seed/templates.ts
index c3c08e6f4..33d61442c 100644
--- a/packages/prisma/seed/templates.ts
+++ b/packages/prisma/seed/templates.ts
@@ -66,12 +66,12 @@ export const seedTemplate = async (options: SeedTemplateOptions) => {
id: documentData.id,
},
},
- User: {
+ user: {
connect: {
id: userId,
},
},
- Recipient: {
+ recipients: {
create: {
email: 'recipient.1@documenso.com',
name: 'Recipient 1',
@@ -114,12 +114,12 @@ export const seedDirectTemplate = async (options: SeedTemplateOptions) => {
id: documentData.id,
},
},
- User: {
+ user: {
connect: {
id: userId,
},
},
- Recipient: {
+ recipients: {
create: {
email: DIRECT_TEMPLATE_RECIPIENT_EMAIL,
name: DIRECT_TEMPLATE_RECIPIENT_NAME,
@@ -138,12 +138,12 @@ export const seedDirectTemplate = async (options: SeedTemplateOptions) => {
...options.createTemplateOptions,
},
include: {
- Recipient: true,
- User: true,
+ recipients: true,
+ user: true,
},
});
- const directTemplateRecpient = template.Recipient.find(
+ const directTemplateRecpient = template.recipients.find(
(recipient) => recipient.email === DIRECT_TEMPLATE_RECIPIENT_EMAIL,
);
@@ -166,8 +166,8 @@ export const seedDirectTemplate = async (options: SeedTemplateOptions) => {
},
include: {
directLink: true,
- Field: true,
- Recipient: true,
+ fields: true,
+ recipients: true,
team: true,
},
});
diff --git a/packages/prisma/types/document-with-recipient.ts b/packages/prisma/types/document-with-recipient.ts
index 32ecd29cb..f7d966f16 100644
--- a/packages/prisma/types/document-with-recipient.ts
+++ b/packages/prisma/types/document-with-recipient.ts
@@ -1,10 +1,10 @@
import type { Document, DocumentData, Recipient } from '@documenso/prisma/client';
export type DocumentWithRecipients = Document & {
- Recipient: Recipient[];
+ recipients: Recipient[];
};
export type DocumentWithRecipient = Document & {
- Recipient: Recipient[];
+ recipients: Recipient[];
documentData: DocumentData;
};
diff --git a/packages/prisma/types/document.ts b/packages/prisma/types/document.ts
deleted file mode 100644
index 5bbc53b55..000000000
--- a/packages/prisma/types/document.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import type {
- Document,
- DocumentData,
- DocumentMeta,
- Field,
- Recipient,
-} from '@documenso/prisma/client';
-
-export type DocumentWithRecipientAndSender = Omit & {
- recipient: Recipient;
- sender: {
- id: number;
- name: string | null;
- email: string;
- };
- subject: string;
- description: string;
-};
-
-export type DocumentWithDetails = Document & {
- documentData: DocumentData;
- documentMeta: DocumentMeta | null;
- Recipient: Recipient[];
- Field: Field[];
-};
diff --git a/packages/prisma/types/field-with-signature-and-fieldmeta.ts b/packages/prisma/types/field-with-signature-and-fieldmeta.ts
index 7bce5d9fe..f9a086e3f 100644
--- a/packages/prisma/types/field-with-signature-and-fieldmeta.ts
+++ b/packages/prisma/types/field-with-signature-and-fieldmeta.ts
@@ -2,6 +2,6 @@ import { type TFieldMetaSchema as FieldMeta } from '@documenso/lib/types/field-m
import type { Field, Signature } from '@documenso/prisma/client';
export type FieldWithSignatureAndFieldMeta = Field & {
- Signature?: Signature | null;
+ signature?: Signature | null;
fieldMeta: FieldMeta | null;
};
diff --git a/packages/prisma/types/field-with-signature.ts b/packages/prisma/types/field-with-signature.ts
index c215a3fb0..d005a464c 100644
--- a/packages/prisma/types/field-with-signature.ts
+++ b/packages/prisma/types/field-with-signature.ts
@@ -1,5 +1,5 @@
import type { Field, Signature } from '@documenso/prisma/client';
export type FieldWithSignature = Field & {
- Signature?: Signature | null;
+ signature?: Signature | null;
};
diff --git a/packages/trpc/server/recipient-router/schema.ts b/packages/trpc/server/recipient-router/schema.ts
index 0e047f176..56d1fefe3 100644
--- a/packages/trpc/server/recipient-router/schema.ts
+++ b/packages/trpc/server/recipient-router/schema.ts
@@ -57,7 +57,7 @@ export const ZRecipientBaseResponseSchema = RecipientSchema.pick({
* Use this when returning a full recipient from the API.
*/
export const ZRecipientResponseSchema = ZRecipientBaseResponseSchema.extend({
- Field: FieldSchema.array(),
+ fields: FieldSchema.array(),
});
export const ZCreateDocumentRecipientRequestSchema = z.object({
From 901be70f97311783be3d5ea618eb5075ea91a4ca Mon Sep 17 00:00:00 2001
From: David Nguyen
Date: Tue, 14 Jan 2025 00:43:35 +1100
Subject: [PATCH 10/35] feat: add consistent response schemas (#1582)
---
.../documents/[id]/edit-document.tsx | 4 +-
.../app/(dashboard)/documents/data-table.tsx | 2 +-
apps/web/src/pages/api/v2-beta/[...trpc].ts | 20 ++-
package-lock.json | 68 +++++-----
packages/api/v1/implementation.ts | 3 +-
.../document-meta/upsert-document-meta.ts | 11 +-
.../server-only/document/create-document.ts | 9 +-
.../document/duplicate-document-by-id.ts | 19 ++-
.../server-only/document/find-documents.ts | 28 +----
.../get-document-with-details-by-id.ts | 22 +---
.../document/move-document-to-team.ts | 9 +-
.../server-only/document/send-document.tsx | 16 +--
.../server-only/document/update-document.ts | 8 +-
.../field/create-document-fields.ts | 11 +-
.../field/create-template-fields.ts | 11 +-
.../lib/server-only/field/get-field-by-id.ts | 9 +-
.../field/set-fields-for-document.ts | 10 +-
.../field/set-fields-for-template.ts | 11 +-
.../field/update-document-fields.ts | 11 +-
.../field/update-template-fields.ts | 11 +-
.../recipient/create-document-recipients.ts | 13 +-
.../recipient/create-template-recipients.ts | 13 +-
.../recipient/get-recipient-by-id.ts | 11 +-
.../recipient/set-document-recipients.ts | 10 +-
.../recipient/set-template-recipients.ts | 11 +-
.../recipient/update-document-recipients.ts | 13 +-
.../recipient/update-template-recipients.ts | 13 +-
.../template/create-document-from-template.ts | 18 +--
packages/lib/types/document.ts | 118 ++++++++++++++++++
packages/lib/types/field.ts | 30 +++++
packages/lib/types/recipient.ts | 85 +++++++++++++
packages/prisma/package.json | 4 +-
packages/prisma/schema.prisma | 21 ++--
.../trpc/server/document-router/router.ts | 98 ++++-----------
.../trpc/server/document-router/schema.ts | 51 ++++----
packages/trpc/server/field-router/router.ts | 62 ++++-----
packages/trpc/server/field-router/schema.ts | 78 +++++++-----
.../trpc/server/recipient-router/router.ts | 65 ++--------
.../trpc/server/recipient-router/schema.ts | 96 ++++----------
.../trpc/server/template-router/router.ts | 28 ++---
.../trpc/server/template-router/schema.ts | 20 ++-
41 files changed, 532 insertions(+), 619 deletions(-)
create mode 100644 packages/lib/types/document.ts
create mode 100644 packages/lib/types/field.ts
create mode 100644 packages/lib/types/recipient.ts
diff --git a/apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx b/apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx
index 15a7c0c7d..7977aa2c6 100644
--- a/apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx
+++ b/apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx
@@ -12,7 +12,7 @@ import {
DO_NOT_INVALIDATE_QUERY_ON_MUTATION,
SKIP_QUERY_BATCH_META,
} from '@documenso/lib/constants/trpc';
-import type { TGetDocumentWithDetailsByIdResponse } from '@documenso/lib/server-only/document/get-document-with-details-by-id';
+import type { TDocument } from '@documenso/lib/types/document';
import { DocumentDistributionMethod, DocumentStatus } from '@documenso/prisma/client';
import { trpc } from '@documenso/trpc/react';
import { cn } from '@documenso/ui/lib/utils';
@@ -35,7 +35,7 @@ import { useOptionalCurrentTeam } from '~/providers/team';
export type EditDocumentFormProps = {
className?: string;
- initialDocument: TGetDocumentWithDetailsByIdResponse;
+ initialDocument: TDocument;
documentRootPath: string;
isDocumentEnterprise: boolean;
};
diff --git a/apps/web/src/app/(dashboard)/documents/data-table.tsx b/apps/web/src/app/(dashboard)/documents/data-table.tsx
index b3b54512e..4051b7d1d 100644
--- a/apps/web/src/app/(dashboard)/documents/data-table.tsx
+++ b/apps/web/src/app/(dashboard)/documents/data-table.tsx
@@ -9,9 +9,9 @@ import { DateTime } from 'luxon';
import { useSession } from 'next-auth/react';
import { useUpdateSearchParams } from '@documenso/lib/client-only/hooks/use-update-search-params';
-import type { TFindDocumentsResponse } from '@documenso/lib/server-only/document/find-documents';
import type { Team } from '@documenso/prisma/client';
import { ExtendedDocumentStatus } from '@documenso/prisma/types/extended-document-status';
+import type { TFindDocumentsResponse } from '@documenso/trpc/server/document-router/schema';
import type { DataTableColumnDef } from '@documenso/ui/primitives/data-table';
import { DataTable } from '@documenso/ui/primitives/data-table';
import { DataTablePagination } from '@documenso/ui/primitives/data-table-pagination';
diff --git a/apps/web/src/pages/api/v2-beta/[...trpc].ts b/apps/web/src/pages/api/v2-beta/[...trpc].ts
index 4f1e50375..db99e4739 100644
--- a/apps/web/src/pages/api/v2-beta/[...trpc].ts
+++ b/apps/web/src/pages/api/v2-beta/[...trpc].ts
@@ -1,8 +1,13 @@
import type { NextApiRequest, NextApiResponse } from 'next';
import { createOpenApiNextHandler } from 'trpc-openapi';
+import type { CreateOpenApiNextHandlerOptions } from 'trpc-openapi/dist/adapters/next';
-import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
+import {
+ AppError,
+ AppErrorCode,
+ genericErrorCodeToTrpcErrorCodeMap,
+} from '@documenso/lib/errors/app-error';
import { buildLogger } from '@documenso/lib/utils/logger';
import type { TRPCError } from '@documenso/trpc/server';
import { createTrpcContext } from '@documenso/trpc/server/context';
@@ -41,7 +46,18 @@ export default createOpenApiNextHandler({
});
}
},
- responseMeta: () => {},
+ // Not sure why we need to do this since we handle it in errorFormatter which runs after this.
+ responseMeta: (opts: CreateOpenApiNextHandlerOptions['responseMeta']) => {
+ if (opts.errors[0]?.cause instanceof AppError) {
+ const appError = AppError.parseError(opts.errors[0].cause);
+
+ const httpStatus = genericErrorCodeToTrpcErrorCodeMap[appError.code]?.status ?? 400;
+
+ return {
+ status: httpStatus,
+ };
+ }
+ },
});
const errorCodesToAlertOn = [AppErrorCode.UNKNOWN_ERROR, 'INTERNAL_SERVER_ERROR'];
diff --git a/package-lock.json b/package-lock.json
index 2de1afdc2..6e073e849 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -34070,36 +34070,6 @@
"zod": "^3.20.2"
}
},
- "node_modules/zod-prisma-types": {
- "version": "3.1.8",
- "resolved": "https://registry.npmjs.org/zod-prisma-types/-/zod-prisma-types-3.1.8.tgz",
- "integrity": "sha512-5oe0ays3ur4u2GtuUqlhgCraKBcsuMaMI8o7VMV4YAnFeOuVid7K2zGvjI19V0ue9PeNF2ICyVREQVohaQm5dw==",
- "dev": true,
- "dependencies": {
- "@prisma/generator-helper": "^5.14.0",
- "code-block-writer": "^12.0.0",
- "lodash": "^4.17.21",
- "zod": "^3.23.8"
- },
- "bin": {
- "zod-prisma-types": "dist/bin.js"
- }
- },
- "node_modules/zod-prisma-types/node_modules/@prisma/debug": {
- "version": "5.22.0",
- "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-5.22.0.tgz",
- "integrity": "sha512-AUt44v3YJeggO2ZU5BkXI7M4hu9BF2zzH2iF2V5pyXT/lRTyWiElZ7It+bRH1EshoMRxHgpYg4VB6rCM+mG5jQ==",
- "dev": true
- },
- "node_modules/zod-prisma-types/node_modules/@prisma/generator-helper": {
- "version": "5.22.0",
- "resolved": "https://registry.npmjs.org/@prisma/generator-helper/-/generator-helper-5.22.0.tgz",
- "integrity": "sha512-LwqcBQ5/QsuAaLNQZAIVIAJDJBMjHwMwn16e06IYx/3Okj/xEEfw9IvrqB2cJCl3b2mCBlh3eVH0w9WGmi4aHg==",
- "dev": true,
- "dependencies": {
- "@prisma/debug": "5.22.0"
- }
- },
"node_modules/zod-to-json-schema": {
"version": "3.24.1",
"resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.1.tgz",
@@ -35478,7 +35448,24 @@
"prisma-kysely": "^1.8.0",
"tsx": "^4.11.0",
"typescript": "5.2.2",
- "zod-prisma-types": "^3.1.8"
+ "zod-prisma-types": "3.1.9"
+ }
+ },
+ "packages/prisma/node_modules/@prisma/debug": {
+ "version": "5.22.0",
+ "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-5.22.0.tgz",
+ "integrity": "sha512-AUt44v3YJeggO2ZU5BkXI7M4hu9BF2zzH2iF2V5pyXT/lRTyWiElZ7It+bRH1EshoMRxHgpYg4VB6rCM+mG5jQ==",
+ "dev": true,
+ "license": "Apache-2.0"
+ },
+ "packages/prisma/node_modules/@prisma/generator-helper": {
+ "version": "5.22.0",
+ "resolved": "https://registry.npmjs.org/@prisma/generator-helper/-/generator-helper-5.22.0.tgz",
+ "integrity": "sha512-LwqcBQ5/QsuAaLNQZAIVIAJDJBMjHwMwn16e06IYx/3Okj/xEEfw9IvrqB2cJCl3b2mCBlh3eVH0w9WGmi4aHg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@prisma/debug": "5.22.0"
}
},
"packages/prisma/node_modules/ts-pattern": {
@@ -35499,6 +35486,25 @@
"node": ">=14.17"
}
},
+ "packages/prisma/node_modules/zod-prisma-types": {
+ "version": "3.1.9",
+ "resolved": "https://registry.npmjs.org/zod-prisma-types/-/zod-prisma-types-3.1.9.tgz",
+ "integrity": "sha512-3AzTtWY2E9nySwLl9QEOgHJYOAX6sKkA36dnu7DD9HhGEOHmLqWx5pects60biMW29VcP57wJZKCp7ZVmJrNtQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@prisma/generator-helper": "^5.14.0",
+ "code-block-writer": "^12.0.0",
+ "lodash": "^4.17.21",
+ "zod": "^3.23.8"
+ },
+ "bin": {
+ "zod-prisma-types": "dist/bin.js"
+ },
+ "peerDependencies": {
+ "prisma": "^4.x.x || ^5.x.x"
+ }
+ },
"packages/signing": {
"name": "@documenso/signing",
"version": "0.0.0",
diff --git a/packages/api/v1/implementation.ts b/packages/api/v1/implementation.ts
index 6d01461c3..c3e5da673 100644
--- a/packages/api/v1/implementation.ts
+++ b/packages/api/v1/implementation.ts
@@ -28,7 +28,6 @@ import { setDocumentRecipients } from '@documenso/lib/server-only/recipient/set-
import { updateRecipient } from '@documenso/lib/server-only/recipient/update-recipient';
import { createTeamMemberInvites } from '@documenso/lib/server-only/team/create-team-member-invites';
import { deleteTeamMembers } from '@documenso/lib/server-only/team/delete-team-members';
-import type { TCreateDocumentFromTemplateResponse } from '@documenso/lib/server-only/template/create-document-from-template';
import { createDocumentFromTemplate } from '@documenso/lib/server-only/template/create-document-from-template';
import { createDocumentFromTemplateLegacy } from '@documenso/lib/server-only/template/create-document-from-template-legacy';
import { deleteTemplate } from '@documenso/lib/server-only/template/delete-template';
@@ -578,7 +577,7 @@ export const ApiContractV1Implementation = createNextRoute(ApiContractV1, {
const templateId = Number(params.templateId);
- let document: TCreateDocumentFromTemplateResponse | null = null;
+ let document: Awaited> | null = null;
try {
document = await createDocumentFromTemplate({
diff --git a/packages/lib/server-only/document-meta/upsert-document-meta.ts b/packages/lib/server-only/document-meta/upsert-document-meta.ts
index 3c70d9c02..bec1a6404 100644
--- a/packages/lib/server-only/document-meta/upsert-document-meta.ts
+++ b/packages/lib/server-only/document-meta/upsert-document-meta.ts
@@ -10,6 +10,7 @@ import { prisma } from '@documenso/prisma';
import type { DocumentDistributionMethod, DocumentSigningOrder } from '@documenso/prisma/client';
import type { SupportedLanguageCodes } from '../../constants/i18n';
+import { AppError, AppErrorCode } from '../../errors/app-error';
import type { TDocumentEmailSettings } from '../../types/document-email';
export type CreateDocumentMetaOptions = {
@@ -47,7 +48,7 @@ export const upsertDocumentMeta = async ({
language,
requestMetadata,
}: CreateDocumentMetaOptions) => {
- const { documentMeta: originalDocumentMeta } = await prisma.document.findFirstOrThrow({
+ const document = await prisma.document.findFirst({
where: {
id: documentId,
...(teamId
@@ -71,6 +72,14 @@ export const upsertDocumentMeta = async ({
},
});
+ if (!document) {
+ throw new AppError(AppErrorCode.NOT_FOUND, {
+ message: 'Document not found',
+ });
+ }
+
+ const { documentMeta: originalDocumentMeta } = document;
+
return await prisma.$transaction(async (tx) => {
const upsertedDocumentMeta = await tx.documentMeta.upsert({
where: {
diff --git a/packages/lib/server-only/document/create-document.ts b/packages/lib/server-only/document/create-document.ts
index 6dee14b98..3879427a2 100644
--- a/packages/lib/server-only/document/create-document.ts
+++ b/packages/lib/server-only/document/create-document.ts
@@ -1,7 +1,5 @@
'use server';
-import type { z } from 'zod';
-
import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
import { normalizePdf as makeNormalizedPdf } from '@documenso/lib/server-only/pdf/normalize-pdf';
import { DOCUMENT_AUDIT_LOG_TYPE } from '@documenso/lib/types/document-audit-logs';
@@ -11,7 +9,6 @@ import { prisma } from '@documenso/prisma';
import { DocumentSource, DocumentVisibility, WebhookTriggerEvents } from '@documenso/prisma/client';
import type { Team, TeamGlobalSettings } from '@documenso/prisma/client';
import { TeamMemberRole } from '@documenso/prisma/client';
-import { DocumentSchema } from '@documenso/prisma/generated/zod';
import {
ZWebhookDocumentSchema,
@@ -33,10 +30,6 @@ export type CreateDocumentOptions = {
requestMetadata: ApiRequestMetadata;
};
-export const ZCreateDocumentResponseSchema = DocumentSchema;
-
-export type TCreateDocumentResponse = z.infer;
-
export const createDocument = async ({
userId,
title,
@@ -47,7 +40,7 @@ export const createDocument = async ({
formValues,
requestMetadata,
timezone,
-}: CreateDocumentOptions): Promise => {
+}: CreateDocumentOptions) => {
const user = await prisma.user.findFirstOrThrow({
where: {
id: userId,
diff --git a/packages/lib/server-only/document/duplicate-document-by-id.ts b/packages/lib/server-only/document/duplicate-document-by-id.ts
index 5c29d90fd..7206403c1 100644
--- a/packages/lib/server-only/document/duplicate-document-by-id.ts
+++ b/packages/lib/server-only/document/duplicate-document-by-id.ts
@@ -1,8 +1,7 @@
-import { z } from 'zod';
-
import { prisma } from '@documenso/prisma';
import { DocumentSource, type Prisma } from '@documenso/prisma/client';
+import { AppError, AppErrorCode } from '../../errors/app-error';
import { getDocumentWhereInput } from './get-document-by-id';
export interface DuplicateDocumentOptions {
@@ -11,24 +10,18 @@ export interface DuplicateDocumentOptions {
teamId?: number;
}
-export const ZDuplicateDocumentResponseSchema = z.object({
- documentId: z.number(),
-});
-
-export type TDuplicateDocumentResponse = z.infer;
-
export const duplicateDocument = async ({
documentId,
userId,
teamId,
-}: DuplicateDocumentOptions): Promise => {
+}: DuplicateDocumentOptions) => {
const documentWhereInput = await getDocumentWhereInput({
documentId,
userId,
teamId,
});
- const document = await prisma.document.findUniqueOrThrow({
+ const document = await prisma.document.findFirst({
where: documentWhereInput,
select: {
title: true,
@@ -53,6 +46,12 @@ export const duplicateDocument = async ({
},
});
+ if (!document) {
+ throw new AppError(AppErrorCode.NOT_FOUND, {
+ message: 'Document not found',
+ });
+ }
+
const createDocumentArguments: Prisma.DocumentCreateArgs = {
data: {
title: document.title,
diff --git a/packages/lib/server-only/document/find-documents.ts b/packages/lib/server-only/document/find-documents.ts
index 32765699c..160b1b2ce 100644
--- a/packages/lib/server-only/document/find-documents.ts
+++ b/packages/lib/server-only/document/find-documents.ts
@@ -1,6 +1,5 @@
import { DateTime } from 'luxon';
import { match } from 'ts-pattern';
-import type { z } from 'zod';
import { prisma } from '@documenso/prisma';
import type {
@@ -12,16 +11,10 @@ import type {
User,
} from '@documenso/prisma/client';
import { RecipientRole, SigningStatus, TeamMemberRole } from '@documenso/prisma/client';
-import {
- DocumentSchema,
- RecipientSchema,
- TeamSchema,
- UserSchema,
-} from '@documenso/prisma/generated/zod';
import { ExtendedDocumentStatus } from '@documenso/prisma/types/extended-document-status';
import { DocumentVisibility } from '../../types/document-visibility';
-import { type FindResultResponse, ZFindResultResponse } from '../../types/search-params';
+import { type FindResultResponse } from '../../types/search-params';
import { maskRecipientTokensForDocument } from '../../utils/mask-recipient-tokens-for-document';
export type PeriodSelectorValue = '' | '7d' | '14d' | '30d';
@@ -43,23 +36,6 @@ export type FindDocumentsOptions = {
query?: string;
};
-export const ZFindDocumentsResponseSchema = ZFindResultResponse.extend({
- data: DocumentSchema.extend({
- user: UserSchema.pick({
- id: true,
- name: true,
- email: true,
- }),
- recipients: RecipientSchema.array(),
- team: TeamSchema.pick({
- id: true,
- url: true,
- }).nullable(),
- }).array(), // Todo: openapi remap.
-});
-
-export type TFindDocumentsResponse = z.infer;
-
export const findDocuments = async ({
userId,
teamId,
@@ -72,7 +48,7 @@ export const findDocuments = async ({
period,
senderIds,
query,
-}: FindDocumentsOptions): Promise => {
+}: FindDocumentsOptions) => {
const user = await prisma.user.findFirstOrThrow({
where: {
id: userId,
diff --git a/packages/lib/server-only/document/get-document-with-details-by-id.ts b/packages/lib/server-only/document/get-document-with-details-by-id.ts
index 955db895c..9cabb6838 100644
--- a/packages/lib/server-only/document/get-document-with-details-by-id.ts
+++ b/packages/lib/server-only/document/get-document-with-details-by-id.ts
@@ -1,13 +1,4 @@
-import type { z } from 'zod';
-
import { prisma } from '@documenso/prisma';
-import {
- DocumentDataSchema,
- DocumentMetaSchema,
- DocumentSchema,
- FieldSchema,
- RecipientSchema,
-} from '@documenso/prisma/generated/zod';
import { AppError, AppErrorCode } from '../../errors/app-error';
import { getDocumentWhereInput } from './get-document-by-id';
@@ -18,22 +9,11 @@ export type GetDocumentWithDetailsByIdOptions = {
teamId?: number;
};
-export const ZGetDocumentWithDetailsByIdResponseSchema = DocumentSchema.extend({
- documentData: DocumentDataSchema,
- documentMeta: DocumentMetaSchema.nullable(),
- recipients: RecipientSchema.array(),
- fields: FieldSchema.array(),
-});
-
-export type TGetDocumentWithDetailsByIdResponse = z.infer<
- typeof ZGetDocumentWithDetailsByIdResponseSchema
->;
-
export const getDocumentWithDetailsById = async ({
documentId,
userId,
teamId,
-}: GetDocumentWithDetailsByIdOptions): Promise => {
+}: GetDocumentWithDetailsByIdOptions) => {
const documentWhereInput = await getDocumentWhereInput({
documentId,
userId,
diff --git a/packages/lib/server-only/document/move-document-to-team.ts b/packages/lib/server-only/document/move-document-to-team.ts
index 5f8875bc8..921b5ec77 100644
--- a/packages/lib/server-only/document/move-document-to-team.ts
+++ b/packages/lib/server-only/document/move-document-to-team.ts
@@ -1,8 +1,5 @@
-import type { z } from 'zod';
-
import type { ApiRequestMetadata } from '@documenso/lib/universal/extract-request-metadata';
import { prisma } from '@documenso/prisma';
-import { DocumentSchema } from '@documenso/prisma/generated/zod';
import { AppError, AppErrorCode } from '../../errors/app-error';
import { DOCUMENT_AUDIT_LOG_TYPE } from '../../types/document-audit-logs';
@@ -15,16 +12,12 @@ export type MoveDocumentToTeamOptions = {
requestMetadata: ApiRequestMetadata;
};
-export const ZMoveDocumentToTeamResponseSchema = DocumentSchema;
-
-export type TMoveDocumentToTeamResponse = z.infer;
-
export const moveDocumentToTeam = async ({
documentId,
teamId,
userId,
requestMetadata,
-}: MoveDocumentToTeamOptions): Promise => {
+}: MoveDocumentToTeamOptions) => {
return await prisma.$transaction(async (tx) => {
const document = await tx.document.findFirst({
where: {
diff --git a/packages/lib/server-only/document/send-document.tsx b/packages/lib/server-only/document/send-document.tsx
index 0212f7e28..ac91b5441 100644
--- a/packages/lib/server-only/document/send-document.tsx
+++ b/packages/lib/server-only/document/send-document.tsx
@@ -1,5 +1,3 @@
-import type { z } from 'zod';
-
import { DOCUMENT_AUDIT_LOG_TYPE } from '@documenso/lib/types/document-audit-logs';
import type { ApiRequestMetadata } from '@documenso/lib/universal/extract-request-metadata';
import { putPdfFile } from '@documenso/lib/universal/upload/put-file';
@@ -13,11 +11,6 @@ import {
SigningStatus,
WebhookTriggerEvents,
} from '@documenso/prisma/client';
-import {
- DocumentMetaSchema,
- DocumentSchema,
- RecipientSchema,
-} from '@documenso/prisma/generated/zod';
import { jobs } from '../../jobs/client';
import { extractDerivedDocumentEmailSettings } from '../../types/document-email';
@@ -37,20 +30,13 @@ export type SendDocumentOptions = {
requestMetadata: ApiRequestMetadata;
};
-export const ZSendDocumentResponseSchema = DocumentSchema.extend({
- documentMeta: DocumentMetaSchema.nullable(),
- recipients: RecipientSchema.array(),
-});
-
-export type TSendDocumentResponse = z.infer;
-
export const sendDocument = async ({
documentId,
userId,
teamId,
sendEmail,
requestMetadata,
-}: SendDocumentOptions): Promise => {
+}: SendDocumentOptions) => {
const document = await prisma.document.findUnique({
where: {
id: documentId,
diff --git a/packages/lib/server-only/document/update-document.ts b/packages/lib/server-only/document/update-document.ts
index 85c2bd73e..bbacfbe1d 100644
--- a/packages/lib/server-only/document/update-document.ts
+++ b/packages/lib/server-only/document/update-document.ts
@@ -1,5 +1,4 @@
import { match } from 'ts-pattern';
-import type { z } from 'zod';
import { isUserEnterprise } from '@documenso/ee/server-only/util/is-document-enterprise';
import { DOCUMENT_AUDIT_LOG_TYPE } from '@documenso/lib/types/document-audit-logs';
@@ -9,7 +8,6 @@ import { createDocumentAuditLogData } from '@documenso/lib/utils/document-audit-
import { prisma } from '@documenso/prisma';
import { DocumentVisibility } from '@documenso/prisma/client';
import { DocumentStatus, TeamMemberRole } from '@documenso/prisma/client';
-import { DocumentSchema } from '@documenso/prisma/generated/zod';
import { AppError, AppErrorCode } from '../../errors/app-error';
import type { TDocumentAccessAuthTypes, TDocumentActionAuthTypes } from '../../types/document-auth';
@@ -29,17 +27,13 @@ export type UpdateDocumentOptions = {
requestMetadata: ApiRequestMetadata;
};
-export const ZUpdateDocumentResponseSchema = DocumentSchema;
-
-export type TUpdateDocumentResponse = z.infer;
-
export const updateDocument = async ({
userId,
teamId,
documentId,
data,
requestMetadata,
-}: UpdateDocumentOptions): Promise => {
+}: UpdateDocumentOptions) => {
const document = await prisma.document.findFirst({
where: {
id: documentId,
diff --git a/packages/lib/server-only/field/create-document-fields.ts b/packages/lib/server-only/field/create-document-fields.ts
index c3ea8021f..dacf29613 100644
--- a/packages/lib/server-only/field/create-document-fields.ts
+++ b/packages/lib/server-only/field/create-document-fields.ts
@@ -1,12 +1,9 @@
-import { z } from 'zod';
-
import { DOCUMENT_AUDIT_LOG_TYPE } from '@documenso/lib/types/document-audit-logs';
import type { TFieldMetaSchema } from '@documenso/lib/types/field-meta';
import type { ApiRequestMetadata } from '@documenso/lib/universal/extract-request-metadata';
import { createDocumentAuditLogData } from '@documenso/lib/utils/document-audit-logs';
import { prisma } from '@documenso/prisma';
import type { FieldType } from '@documenso/prisma/client';
-import { FieldSchema } from '@documenso/prisma/generated/zod';
import { AppError, AppErrorCode } from '../../errors/app-error';
import { canRecipientFieldsBeModified } from '../../utils/recipients';
@@ -28,19 +25,13 @@ export interface CreateDocumentFieldsOptions {
requestMetadata: ApiRequestMetadata;
}
-export const ZCreateDocumentFieldsResponseSchema = z.object({
- fields: z.array(FieldSchema),
-});
-
-export type TCreateDocumentFieldsResponse = z.infer;
-
export const createDocumentFields = async ({
userId,
teamId,
documentId,
fields,
requestMetadata,
-}: CreateDocumentFieldsOptions): Promise => {
+}: CreateDocumentFieldsOptions) => {
const document = await prisma.document.findFirst({
where: {
id: documentId,
diff --git a/packages/lib/server-only/field/create-template-fields.ts b/packages/lib/server-only/field/create-template-fields.ts
index ea6091328..0bd392175 100644
--- a/packages/lib/server-only/field/create-template-fields.ts
+++ b/packages/lib/server-only/field/create-template-fields.ts
@@ -1,9 +1,6 @@
-import { z } from 'zod';
-
import type { TFieldMetaSchema } from '@documenso/lib/types/field-meta';
import { prisma } from '@documenso/prisma';
import type { FieldType } from '@documenso/prisma/client';
-import { FieldSchema } from '@documenso/prisma/generated/zod';
import { AppError, AppErrorCode } from '../../errors/app-error';
import { canRecipientFieldsBeModified } from '../../utils/recipients';
@@ -24,18 +21,12 @@ export interface CreateTemplateFieldsOptions {
}[];
}
-export const ZCreateTemplateFieldsResponseSchema = z.object({
- fields: z.array(FieldSchema),
-});
-
-export type TCreateTemplateFieldsResponse = z.infer;
-
export const createTemplateFields = async ({
userId,
teamId,
templateId,
fields,
-}: CreateTemplateFieldsOptions): Promise => {
+}: CreateTemplateFieldsOptions) => {
const template = await prisma.template.findFirst({
where: {
id: templateId,
diff --git a/packages/lib/server-only/field/get-field-by-id.ts b/packages/lib/server-only/field/get-field-by-id.ts
index c29517cb0..4df97868f 100644
--- a/packages/lib/server-only/field/get-field-by-id.ts
+++ b/packages/lib/server-only/field/get-field-by-id.ts
@@ -1,7 +1,4 @@
-import type { z } from 'zod';
-
import { prisma } from '@documenso/prisma';
-import { FieldSchema } from '@documenso/prisma/generated/zod';
import { AppError, AppErrorCode } from '../../errors/app-error';
@@ -13,17 +10,13 @@ export type GetFieldByIdOptions = {
templateId?: number;
};
-export const ZGetFieldByIdResponseSchema = FieldSchema;
-
-export type TGetFieldByIdResponse = z.infer;
-
export const getFieldById = async ({
userId,
teamId,
fieldId,
documentId,
templateId,
-}: GetFieldByIdOptions): Promise => {
+}: GetFieldByIdOptions) => {
const field = await prisma.field.findFirst({
where: {
id: fieldId,
diff --git a/packages/lib/server-only/field/set-fields-for-document.ts b/packages/lib/server-only/field/set-fields-for-document.ts
index da3c71dd6..b35deca02 100644
--- a/packages/lib/server-only/field/set-fields-for-document.ts
+++ b/packages/lib/server-only/field/set-fields-for-document.ts
@@ -1,5 +1,4 @@
import { isDeepEqual } from 'remeda';
-import { z } from 'zod';
import { validateCheckboxField } from '@documenso/lib/advanced-fields-validation/validate-checkbox';
import { validateDropdownField } from '@documenso/lib/advanced-fields-validation/validate-dropdown';
@@ -24,7 +23,6 @@ import {
import { prisma } from '@documenso/prisma';
import type { Field } from '@documenso/prisma/client';
import { FieldType } from '@documenso/prisma/client';
-import { FieldSchema } from '@documenso/prisma/generated/zod';
import { AppError, AppErrorCode } from '../../errors/app-error';
import { canRecipientFieldsBeModified } from '../../utils/recipients';
@@ -37,19 +35,13 @@ export interface SetFieldsForDocumentOptions {
requestMetadata: ApiRequestMetadata;
}
-export const ZSetFieldsForDocumentResponseSchema = z.object({
- fields: z.array(FieldSchema),
-});
-
-export type TSetFieldsForDocumentResponse = z.infer;
-
export const setFieldsForDocument = async ({
userId,
teamId,
documentId,
fields,
requestMetadata,
-}: SetFieldsForDocumentOptions): Promise => {
+}: SetFieldsForDocumentOptions) => {
const document = await prisma.document.findFirst({
where: {
id: documentId,
diff --git a/packages/lib/server-only/field/set-fields-for-template.ts b/packages/lib/server-only/field/set-fields-for-template.ts
index 9b003534e..156f0b359 100644
--- a/packages/lib/server-only/field/set-fields-for-template.ts
+++ b/packages/lib/server-only/field/set-fields-for-template.ts
@@ -1,5 +1,3 @@
-import { z } from 'zod';
-
import { validateCheckboxField } from '@documenso/lib/advanced-fields-validation/validate-checkbox';
import { validateDropdownField } from '@documenso/lib/advanced-fields-validation/validate-dropdown';
import { validateNumberField } from '@documenso/lib/advanced-fields-validation/validate-number';
@@ -16,7 +14,6 @@ import {
} from '@documenso/lib/types/field-meta';
import { prisma } from '@documenso/prisma';
import { FieldType } from '@documenso/prisma/client';
-import { FieldSchema } from '@documenso/prisma/generated/zod';
export type SetFieldsForTemplateOptions = {
userId: number;
@@ -35,18 +32,12 @@ export type SetFieldsForTemplateOptions = {
}[];
};
-export const ZSetFieldsForTemplateResponseSchema = z.object({
- fields: z.array(FieldSchema),
-});
-
-export type TSetFieldsForTemplateResponse = z.infer;
-
export const setFieldsForTemplate = async ({
userId,
teamId,
templateId,
fields,
-}: SetFieldsForTemplateOptions): Promise => {
+}: SetFieldsForTemplateOptions) => {
const template = await prisma.template.findFirst({
where: {
id: templateId,
diff --git a/packages/lib/server-only/field/update-document-fields.ts b/packages/lib/server-only/field/update-document-fields.ts
index fdad6ae09..0e279f2aa 100644
--- a/packages/lib/server-only/field/update-document-fields.ts
+++ b/packages/lib/server-only/field/update-document-fields.ts
@@ -1,5 +1,3 @@
-import { z } from 'zod';
-
import { DOCUMENT_AUDIT_LOG_TYPE } from '@documenso/lib/types/document-audit-logs';
import type { TFieldMetaSchema } from '@documenso/lib/types/field-meta';
import type { ApiRequestMetadata } from '@documenso/lib/universal/extract-request-metadata';
@@ -9,7 +7,6 @@ import {
} from '@documenso/lib/utils/document-audit-logs';
import { prisma } from '@documenso/prisma';
import type { FieldType } from '@documenso/prisma/client';
-import { FieldSchema } from '@documenso/prisma/generated/zod';
import { AppError, AppErrorCode } from '../../errors/app-error';
import { canRecipientFieldsBeModified } from '../../utils/recipients';
@@ -31,19 +28,13 @@ export interface UpdateDocumentFieldsOptions {
requestMetadata: ApiRequestMetadata;
}
-export const ZUpdateDocumentFieldsResponseSchema = z.object({
- fields: z.array(FieldSchema),
-});
-
-export type TUpdateDocumentFieldsResponse = z.infer;
-
export const updateDocumentFields = async ({
userId,
teamId,
documentId,
fields,
requestMetadata,
-}: UpdateDocumentFieldsOptions): Promise => {
+}: UpdateDocumentFieldsOptions) => {
const document = await prisma.document.findFirst({
where: {
id: documentId,
diff --git a/packages/lib/server-only/field/update-template-fields.ts b/packages/lib/server-only/field/update-template-fields.ts
index 10f65626a..c1b3bc389 100644
--- a/packages/lib/server-only/field/update-template-fields.ts
+++ b/packages/lib/server-only/field/update-template-fields.ts
@@ -1,9 +1,6 @@
-import { z } from 'zod';
-
import type { TFieldMetaSchema } from '@documenso/lib/types/field-meta';
import { prisma } from '@documenso/prisma';
import type { FieldType } from '@documenso/prisma/client';
-import { FieldSchema } from '@documenso/prisma/generated/zod';
import { AppError, AppErrorCode } from '../../errors/app-error';
import { canRecipientFieldsBeModified } from '../../utils/recipients';
@@ -24,18 +21,12 @@ export interface UpdateTemplateFieldsOptions {
}[];
}
-export const ZUpdateTemplateFieldsResponseSchema = z.object({
- fields: z.array(FieldSchema),
-});
-
-export type TUpdateTemplateFieldsResponse = z.infer;
-
export const updateTemplateFields = async ({
userId,
teamId,
templateId,
fields,
-}: UpdateTemplateFieldsOptions): Promise => {
+}: UpdateTemplateFieldsOptions) => {
const template = await prisma.template.findFirst({
where: {
id: templateId,
diff --git a/packages/lib/server-only/recipient/create-document-recipients.ts b/packages/lib/server-only/recipient/create-document-recipients.ts
index 2a55d46ca..cd52b3632 100644
--- a/packages/lib/server-only/recipient/create-document-recipients.ts
+++ b/packages/lib/server-only/recipient/create-document-recipients.ts
@@ -1,5 +1,3 @@
-import { z } from 'zod';
-
import { isUserEnterprise } from '@documenso/ee/server-only/util/is-document-enterprise';
import { DOCUMENT_AUDIT_LOG_TYPE } from '@documenso/lib/types/document-audit-logs';
import type { TRecipientAccessAuthTypes } from '@documenso/lib/types/document-auth';
@@ -11,7 +9,6 @@ import { createRecipientAuthOptions } from '@documenso/lib/utils/document-auth';
import { prisma } from '@documenso/prisma';
import { RecipientRole } from '@documenso/prisma/client';
import { SendStatus, SigningStatus } from '@documenso/prisma/client';
-import { ZRecipientBaseResponseSchema } from '@documenso/trpc/server/recipient-router/schema';
import { AppError, AppErrorCode } from '../../errors/app-error';
@@ -30,21 +27,13 @@ export interface CreateDocumentRecipientsOptions {
requestMetadata: ApiRequestMetadata;
}
-export const ZCreateDocumentRecipientsResponseSchema = z.object({
- recipients: ZRecipientBaseResponseSchema.array(),
-});
-
-export type TCreateDocumentRecipientsResponse = z.infer<
- typeof ZCreateDocumentRecipientsResponseSchema
->;
-
export const createDocumentRecipients = async ({
userId,
teamId,
documentId,
recipients: recipientsToCreate,
requestMetadata,
-}: CreateDocumentRecipientsOptions): Promise => {
+}: CreateDocumentRecipientsOptions) => {
const document = await prisma.document.findFirst({
where: {
id: documentId,
diff --git a/packages/lib/server-only/recipient/create-template-recipients.ts b/packages/lib/server-only/recipient/create-template-recipients.ts
index 3ff726b99..a843a0adb 100644
--- a/packages/lib/server-only/recipient/create-template-recipients.ts
+++ b/packages/lib/server-only/recipient/create-template-recipients.ts
@@ -1,5 +1,3 @@
-import { z } from 'zod';
-
import { isUserEnterprise } from '@documenso/ee/server-only/util/is-document-enterprise';
import type { TRecipientAccessAuthTypes } from '@documenso/lib/types/document-auth';
import { type TRecipientActionAuthTypes } from '@documenso/lib/types/document-auth';
@@ -8,7 +6,6 @@ import { createRecipientAuthOptions } from '@documenso/lib/utils/document-auth';
import { prisma } from '@documenso/prisma';
import { RecipientRole } from '@documenso/prisma/client';
import { SendStatus, SigningStatus } from '@documenso/prisma/client';
-import { ZRecipientBaseResponseSchema } from '@documenso/trpc/server/recipient-router/schema';
import { AppError, AppErrorCode } from '../../errors/app-error';
@@ -26,20 +23,12 @@ export interface CreateTemplateRecipientsOptions {
}[];
}
-export const ZCreateTemplateRecipientsResponseSchema = z.object({
- recipients: ZRecipientBaseResponseSchema.array(),
-});
-
-export type TCreateTemplateRecipientsResponse = z.infer<
- typeof ZCreateTemplateRecipientsResponseSchema
->;
-
export const createTemplateRecipients = async ({
userId,
teamId,
templateId,
recipients: recipientsToCreate,
-}: CreateTemplateRecipientsOptions): Promise => {
+}: CreateTemplateRecipientsOptions) => {
const template = await prisma.template.findFirst({
where: {
id: templateId,
diff --git a/packages/lib/server-only/recipient/get-recipient-by-id.ts b/packages/lib/server-only/recipient/get-recipient-by-id.ts
index f54e7abce..e14c93955 100644
--- a/packages/lib/server-only/recipient/get-recipient-by-id.ts
+++ b/packages/lib/server-only/recipient/get-recipient-by-id.ts
@@ -1,7 +1,4 @@
-import type { z } from 'zod';
-
import { prisma } from '@documenso/prisma';
-import { FieldSchema, RecipientSchema } from '@documenso/prisma/generated/zod';
import { AppError, AppErrorCode } from '../../errors/app-error';
@@ -11,12 +8,6 @@ export type GetRecipientByIdOptions = {
teamId?: number;
};
-export const ZGetRecipientByIdResponseSchema = RecipientSchema.extend({
- fields: FieldSchema.array(),
-});
-
-export type TGetRecipientByIdResponse = z.infer;
-
/**
* Get a recipient by ID. This will also return the recipient signing token so
* be careful when using this.
@@ -25,7 +16,7 @@ export const getRecipientById = async ({
recipientId,
userId,
teamId,
-}: GetRecipientByIdOptions): Promise => {
+}: GetRecipientByIdOptions) => {
const recipient = await prisma.recipient.findFirst({
where: {
id: recipientId,
diff --git a/packages/lib/server-only/recipient/set-document-recipients.ts b/packages/lib/server-only/recipient/set-document-recipients.ts
index 3a7eeed34..78ca3f176 100644
--- a/packages/lib/server-only/recipient/set-document-recipients.ts
+++ b/packages/lib/server-only/recipient/set-document-recipients.ts
@@ -1,7 +1,6 @@
import { createElement } from 'react';
import { msg } from '@lingui/macro';
-import { z } from 'zod';
import { isUserEnterprise } from '@documenso/ee/server-only/util/is-document-enterprise';
import { mailer } from '@documenso/email/mailer';
@@ -23,7 +22,6 @@ import { prisma } from '@documenso/prisma';
import type { Recipient } from '@documenso/prisma/client';
import { RecipientRole } from '@documenso/prisma/client';
import { SendStatus, SigningStatus } from '@documenso/prisma/client';
-import { RecipientSchema } from '@documenso/prisma/generated/zod';
import { getI18nInstance } from '../../client-only/providers/i18n.server';
import { NEXT_PUBLIC_WEBAPP_URL } from '../../constants/app';
@@ -42,19 +40,13 @@ export interface SetDocumentRecipientsOptions {
requestMetadata: ApiRequestMetadata;
}
-export const ZSetDocumentRecipientsResponseSchema = z.object({
- recipients: RecipientSchema.array(),
-});
-
-export type TSetDocumentRecipientsResponse = z.infer;
-
export const setDocumentRecipients = async ({
userId,
teamId,
documentId,
recipients,
requestMetadata,
-}: SetDocumentRecipientsOptions): Promise => {
+}: SetDocumentRecipientsOptions) => {
const document = await prisma.document.findFirst({
where: {
id: documentId,
diff --git a/packages/lib/server-only/recipient/set-template-recipients.ts b/packages/lib/server-only/recipient/set-template-recipients.ts
index 4de8683a8..d4bb8cb8e 100644
--- a/packages/lib/server-only/recipient/set-template-recipients.ts
+++ b/packages/lib/server-only/recipient/set-template-recipients.ts
@@ -1,5 +1,3 @@
-import { z } from 'zod';
-
import { isUserEnterprise } from '@documenso/ee/server-only/util/is-document-enterprise';
import {
DIRECT_TEMPLATE_RECIPIENT_EMAIL,
@@ -8,7 +6,6 @@ import {
import { prisma } from '@documenso/prisma';
import type { Recipient } from '@documenso/prisma/client';
import { RecipientRole } from '@documenso/prisma/client';
-import { RecipientSchema } from '@documenso/prisma/generated/zod';
import { AppError, AppErrorCode } from '../../errors/app-error';
import {
@@ -32,18 +29,12 @@ export type SetTemplateRecipientsOptions = {
}[];
};
-export const ZSetTemplateRecipientsResponseSchema = z.object({
- recipients: RecipientSchema.array(),
-});
-
-export type TSetTemplateRecipientsResponse = z.infer;
-
export const setTemplateRecipients = async ({
userId,
teamId,
templateId,
recipients,
-}: SetTemplateRecipientsOptions): Promise => {
+}: SetTemplateRecipientsOptions) => {
const template = await prisma.template.findFirst({
where: {
id: templateId,
diff --git a/packages/lib/server-only/recipient/update-document-recipients.ts b/packages/lib/server-only/recipient/update-document-recipients.ts
index 25be1b6de..62f53fbf9 100644
--- a/packages/lib/server-only/recipient/update-document-recipients.ts
+++ b/packages/lib/server-only/recipient/update-document-recipients.ts
@@ -1,5 +1,3 @@
-import { z } from 'zod';
-
import { isUserEnterprise } from '@documenso/ee/server-only/util/is-document-enterprise';
import { DOCUMENT_AUDIT_LOG_TYPE } from '@documenso/lib/types/document-audit-logs';
import type { TRecipientAccessAuthTypes } from '@documenso/lib/types/document-auth';
@@ -17,7 +15,6 @@ import { prisma } from '@documenso/prisma';
import type { Recipient } from '@documenso/prisma/client';
import { RecipientRole } from '@documenso/prisma/client';
import { SendStatus, SigningStatus } from '@documenso/prisma/client';
-import { ZRecipientResponseSchema } from '@documenso/trpc/server/recipient-router/schema';
import { AppError, AppErrorCode } from '../../errors/app-error';
import { canRecipientBeModified } from '../../utils/recipients';
@@ -30,21 +27,13 @@ export interface UpdateDocumentRecipientsOptions {
requestMetadata: ApiRequestMetadata;
}
-export const ZUpdateDocumentRecipientsResponseSchema = z.object({
- recipients: ZRecipientResponseSchema.array(),
-});
-
-export type TUpdateDocumentRecipientsResponse = z.infer<
- typeof ZUpdateDocumentRecipientsResponseSchema
->;
-
export const updateDocumentRecipients = async ({
userId,
teamId,
documentId,
recipients,
requestMetadata,
-}: UpdateDocumentRecipientsOptions): Promise => {
+}: UpdateDocumentRecipientsOptions) => {
const document = await prisma.document.findFirst({
where: {
id: documentId,
diff --git a/packages/lib/server-only/recipient/update-template-recipients.ts b/packages/lib/server-only/recipient/update-template-recipients.ts
index 3f1444664..de9b90383 100644
--- a/packages/lib/server-only/recipient/update-template-recipients.ts
+++ b/packages/lib/server-only/recipient/update-template-recipients.ts
@@ -1,5 +1,3 @@
-import { z } from 'zod';
-
import { isUserEnterprise } from '@documenso/ee/server-only/util/is-document-enterprise';
import type { TRecipientAccessAuthTypes } from '@documenso/lib/types/document-auth';
import {
@@ -10,7 +8,6 @@ import { createRecipientAuthOptions } from '@documenso/lib/utils/document-auth';
import { prisma } from '@documenso/prisma';
import { RecipientRole } from '@documenso/prisma/client';
import { SendStatus, SigningStatus } from '@documenso/prisma/client';
-import { ZRecipientResponseSchema } from '@documenso/trpc/server/recipient-router/schema';
import { AppError, AppErrorCode } from '../../errors/app-error';
@@ -29,20 +26,12 @@ export interface UpdateTemplateRecipientsOptions {
}[];
}
-export const ZUpdateTemplateRecipientsResponseSchema = z.object({
- recipients: ZRecipientResponseSchema.array(),
-});
-
-export type TUpdateTemplateRecipientsResponse = z.infer<
- typeof ZUpdateTemplateRecipientsResponseSchema
->;
-
export const updateTemplateRecipients = async ({
userId,
teamId,
templateId,
recipients,
-}: UpdateTemplateRecipientsOptions): Promise => {
+}: UpdateTemplateRecipientsOptions) => {
const template = await prisma.template.findFirst({
where: {
id: templateId,
diff --git a/packages/lib/server-only/template/create-document-from-template.ts b/packages/lib/server-only/template/create-document-from-template.ts
index 05fa23db1..470e909e5 100644
--- a/packages/lib/server-only/template/create-document-from-template.ts
+++ b/packages/lib/server-only/template/create-document-from-template.ts
@@ -1,5 +1,3 @@
-import type { z } from 'zod';
-
import { nanoid } from '@documenso/lib/universal/id';
import { prisma } from '@documenso/prisma';
import type { DocumentDistributionMethod } from '@documenso/prisma/client';
@@ -13,11 +11,6 @@ import {
SigningStatus,
WebhookTriggerEvents,
} from '@documenso/prisma/client';
-import {
- DocumentDataSchema,
- DocumentSchema,
- RecipientSchema,
-} from '@documenso/prisma/generated/zod';
import type { SupportedLanguageCodes } from '../../constants/i18n';
import { AppError, AppErrorCode } from '../../errors/app-error';
@@ -79,15 +72,6 @@ export type CreateDocumentFromTemplateOptions = {
requestMetadata: ApiRequestMetadata;
};
-export const ZCreateDocumentFromTemplateResponseSchema = DocumentSchema.extend({
- documentData: DocumentDataSchema,
- recipients: RecipientSchema.array(),
-});
-
-export type TCreateDocumentFromTemplateResponse = z.infer<
- typeof ZCreateDocumentFromTemplateResponseSchema
->;
-
export const createDocumentFromTemplate = async ({
templateId,
externalId,
@@ -97,7 +81,7 @@ export const createDocumentFromTemplate = async ({
customDocumentDataId,
override,
requestMetadata,
-}: CreateDocumentFromTemplateOptions): Promise => {
+}: CreateDocumentFromTemplateOptions) => {
const template = await prisma.template.findUnique({
where: {
id: templateId,
diff --git a/packages/lib/types/document.ts b/packages/lib/types/document.ts
new file mode 100644
index 000000000..830842e83
--- /dev/null
+++ b/packages/lib/types/document.ts
@@ -0,0 +1,118 @@
+import type { z } from 'zod';
+
+import {
+ DocumentDataSchema,
+ DocumentMetaSchema,
+ DocumentSchema,
+ TeamSchema,
+ UserSchema,
+} from '@documenso/prisma/generated/zod';
+
+import { ZFieldSchema } from './field';
+import { ZRecipientLiteSchema } from './recipient';
+
+/**
+ * The full document response schema.
+ *
+ * Mainly used for returning a single document from the API.
+ */
+export const ZDocumentSchema = DocumentSchema.pick({
+ visibility: true,
+ status: true,
+ source: true,
+ id: true,
+ externalId: true,
+ userId: true,
+ authOptions: true,
+ formValues: true,
+ title: true,
+ documentDataId: true,
+ createdAt: true,
+ updatedAt: true,
+ completedAt: true,
+ deletedAt: true,
+ teamId: true,
+ templateId: true,
+}).extend({
+ // Todo: Maybe we want to alter this a bit since this returns a lot of data.
+ documentData: DocumentDataSchema.pick({
+ type: true,
+ id: true,
+ data: true,
+ initialData: true,
+ }),
+ documentMeta: DocumentMetaSchema.pick({
+ signingOrder: true,
+ distributionMethod: true,
+ id: true,
+ subject: true,
+ message: true,
+ timezone: true,
+ password: true,
+ dateFormat: true,
+ documentId: true,
+ redirectUrl: true,
+ typedSignatureEnabled: true,
+ language: true,
+ emailSettings: true,
+ }).nullable(),
+ recipients: ZRecipientLiteSchema.array(),
+ fields: ZFieldSchema.array(),
+});
+
+export type TDocument = z.infer;
+
+/**
+ * A lite version of the document response schema without relations.
+ */
+export const ZDocumentLiteSchema = DocumentSchema.pick({
+ visibility: true,
+ status: true,
+ source: true,
+ id: true,
+ externalId: true,
+ userId: true,
+ authOptions: true,
+ formValues: true,
+ title: true,
+ documentDataId: true,
+ createdAt: true,
+ updatedAt: true,
+ completedAt: true,
+ deletedAt: true,
+ teamId: true,
+ templateId: true,
+});
+
+/**
+ * A version of the document response schema when returning multiple documents at once from a single API endpoint.
+ */
+export const ZDocumentManySchema = DocumentSchema.pick({
+ visibility: true,
+ status: true,
+ source: true,
+ id: true,
+ externalId: true,
+ userId: true,
+ authOptions: true,
+ formValues: true,
+ title: true,
+ documentDataId: true,
+ createdAt: true,
+ updatedAt: true,
+ completedAt: true,
+ deletedAt: true,
+ teamId: true,
+ templateId: true,
+}).extend({
+ user: UserSchema.pick({
+ id: true,
+ name: true,
+ email: true,
+ }),
+ recipients: ZRecipientLiteSchema.array(),
+ team: TeamSchema.pick({
+ id: true,
+ url: true,
+ }).nullable(),
+});
diff --git a/packages/lib/types/field.ts b/packages/lib/types/field.ts
new file mode 100644
index 000000000..cdbf00f35
--- /dev/null
+++ b/packages/lib/types/field.ts
@@ -0,0 +1,30 @@
+import { FieldSchema } from '@documenso/prisma/generated/zod';
+
+/**
+ * The full field response schema.
+ *
+ * If you need to return something different, adjust this file to utilise the:
+ * - ZFieldSchema
+ * - ZFieldLiteSchema
+ * - ZFieldManySchema
+ *
+ * Setup similar to:
+ * - ./documents.ts
+ * - ./templates.ts
+ */
+export const ZFieldSchema = FieldSchema.pick({
+ type: true,
+ id: true,
+ secondaryId: true,
+ documentId: true,
+ templateId: true,
+ recipientId: true,
+ page: true,
+ positionX: true,
+ positionY: true,
+ width: true,
+ height: true,
+ customText: true,
+ inserted: true,
+ fieldMeta: true,
+});
diff --git a/packages/lib/types/recipient.ts b/packages/lib/types/recipient.ts
new file mode 100644
index 000000000..3c0fa944f
--- /dev/null
+++ b/packages/lib/types/recipient.ts
@@ -0,0 +1,85 @@
+import { TeamSchema, UserSchema } from '@documenso/prisma/generated/zod';
+import RecipientSchema from '@documenso/prisma/generated/zod/modelSchema/RecipientSchema';
+
+import { ZFieldSchema } from './field';
+
+/**
+ * The full recipient response schema.
+ *
+ * Mainly used for returning a single recipient from the API.
+ */
+export const ZRecipientSchema = RecipientSchema.pick({
+ role: true,
+ readStatus: true,
+ signingStatus: true,
+ sendStatus: true,
+ id: true,
+ documentId: true,
+ templateId: true,
+ email: true,
+ name: true,
+ token: true,
+ documentDeletedAt: true,
+ expired: true,
+ signedAt: true,
+ authOptions: true,
+ signingOrder: true,
+ rejectionReason: true,
+}).extend({
+ fields: ZFieldSchema.array(),
+});
+
+/**
+ * A lite version of the recipient response schema without relations.
+ */
+export const ZRecipientLiteSchema = RecipientSchema.pick({
+ role: true,
+ readStatus: true,
+ signingStatus: true,
+ sendStatus: true,
+ id: true,
+ documentId: true,
+ templateId: true,
+ email: true,
+ name: true,
+ token: true,
+ documentDeletedAt: true,
+ expired: true,
+ signedAt: true,
+ authOptions: true,
+ signingOrder: true,
+ rejectionReason: true,
+});
+
+/**
+ * A version of the recipient response schema when returning multiple recipients at once from a single API endpoint.
+ */
+export const ZRecipientManySchema = RecipientSchema.pick({
+ role: true,
+ readStatus: true,
+ signingStatus: true,
+ sendStatus: true,
+ id: true,
+ documentId: true,
+ templateId: true,
+ email: true,
+ name: true,
+ token: true,
+ documentDeletedAt: true,
+ expired: true,
+ signedAt: true,
+ authOptions: true,
+ signingOrder: true,
+ rejectionReason: true,
+}).extend({
+ user: UserSchema.pick({
+ id: true,
+ name: true,
+ email: true,
+ }),
+ recipients: RecipientSchema.array(),
+ team: TeamSchema.pick({
+ id: true,
+ url: true,
+ }).nullable(),
+});
diff --git a/packages/prisma/package.json b/packages/prisma/package.json
index 5a5ff6d1d..c78e5a18c 100644
--- a/packages/prisma/package.json
+++ b/packages/prisma/package.json
@@ -33,6 +33,6 @@
"prisma-kysely": "^1.8.0",
"tsx": "^4.11.0",
"typescript": "5.2.2",
- "zod-prisma-types": "^3.1.8"
+ "zod-prisma-types": "3.1.9"
}
-}
+}
\ No newline at end of file
diff --git a/packages/prisma/schema.prisma b/packages/prisma/schema.prisma
index 72291b1a5..a65692f37 100644
--- a/packages/prisma/schema.prisma
+++ b/packages/prisma/schema.prisma
@@ -7,7 +7,10 @@ generator client {
}
generator zod {
- provider = "zod-prisma-types"
+ provider = "zod-prisma-types"
+ createInputTypes = false
+ writeBarrelFiles = true
+ useMultipleFiles = true
}
datasource db {
@@ -294,12 +297,13 @@ enum DocumentVisibility {
ADMIN
}
+/// @zod.import(["import { ZDocumentAuthOptionsSchema } from '@documenso/lib/types/document-auth';"])
model Document {
id Int @id @default(autoincrement())
- externalId String?
- userId Int
+ externalId String? /// @zod.string.describe("A custom external ID you can use to identify the document.")
+ userId Int /// @zod.number.describe("The ID of the user that created this document.")
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
- authOptions Json?
+ authOptions Json? /// Todo: zod.custom.use(ZDocumentAuthOptionsSchema.describe("Hello"))
formValues Json?
visibility DocumentVisibility @default(EVERYONE)
title String
@@ -409,6 +413,7 @@ enum RecipientRole {
APPROVER
}
+/// @zod.import(["import { ZRecipientAuthOptionsSchema } from '@documenso/lib/types/document-auth';"])
model Recipient {
id Int @id @default(autoincrement())
documentId Int?
@@ -419,8 +424,8 @@ model Recipient {
documentDeletedAt DateTime?
expired DateTime?
signedAt DateTime?
- authOptions Json?
- signingOrder Int?
+ authOptions Json? /// Todo: zod.custom.use(ZRecipientAuthOptionsSchema)
+ signingOrder Int? /// @zod.number.describe("The order in which the recipient should sign the document. Only works if the document is set to sequential signing.")
rejectionReason String?
role RecipientRole @default(SIGNER)
readStatus ReadStatus @default(NOT_OPENED)
@@ -459,7 +464,7 @@ model Field {
templateId Int?
recipientId Int
type FieldType
- page Int
+ page Int /// @zod.number.describe("The page number of the field on the document. Starts from 1.")
positionX Decimal @default(0)
positionY Decimal @default(0)
width Decimal @default(-1)
@@ -470,7 +475,7 @@ model Field {
template Template? @relation(fields: [templateId], references: [id], onDelete: Cascade)
recipient Recipient @relation(fields: [recipientId], references: [id], onDelete: Cascade)
signature Signature?
- fieldMeta Json?
+ fieldMeta Json? // Todo: Fix ZFieldMetaSchema before using it here.
@@index([documentId])
@@index([templateId])
diff --git a/packages/trpc/server/document-router/router.ts b/packages/trpc/server/document-router/router.ts
index 3e254bb32..3cf176d4c 100644
--- a/packages/trpc/server/document-router/router.ts
+++ b/packages/trpc/server/document-router/router.ts
@@ -8,63 +8,47 @@ import { DOCUMENSO_ENCRYPTION_KEY } from '@documenso/lib/constants/crypto';
import { AppError } from '@documenso/lib/errors/app-error';
import { encryptSecondaryData } from '@documenso/lib/server-only/crypto/encrypt';
import { upsertDocumentMeta } from '@documenso/lib/server-only/document-meta/upsert-document-meta';
-import {
- ZCreateDocumentResponseSchema,
- createDocument,
-} from '@documenso/lib/server-only/document/create-document';
+import { createDocument } from '@documenso/lib/server-only/document/create-document';
import { deleteDocument } from '@documenso/lib/server-only/document/delete-document';
-import {
- ZDuplicateDocumentResponseSchema,
- duplicateDocument,
-} from '@documenso/lib/server-only/document/duplicate-document-by-id';
+import { duplicateDocument } from '@documenso/lib/server-only/document/duplicate-document-by-id';
import { findDocumentAuditLogs } from '@documenso/lib/server-only/document/find-document-audit-logs';
-import {
- ZFindDocumentsResponseSchema,
- findDocuments,
-} from '@documenso/lib/server-only/document/find-documents';
+import { findDocuments } from '@documenso/lib/server-only/document/find-documents';
import { getDocumentById } from '@documenso/lib/server-only/document/get-document-by-id';
import { getDocumentAndSenderByToken } from '@documenso/lib/server-only/document/get-document-by-token';
-import {
- ZGetDocumentWithDetailsByIdResponseSchema,
- getDocumentWithDetailsById,
-} from '@documenso/lib/server-only/document/get-document-with-details-by-id';
-import {
- ZMoveDocumentToTeamResponseSchema,
- moveDocumentToTeam,
-} from '@documenso/lib/server-only/document/move-document-to-team';
+import { getDocumentWithDetailsById } from '@documenso/lib/server-only/document/get-document-with-details-by-id';
+import { moveDocumentToTeam } from '@documenso/lib/server-only/document/move-document-to-team';
import { resendDocument } from '@documenso/lib/server-only/document/resend-document';
import { searchDocumentsWithKeyword } from '@documenso/lib/server-only/document/search-documents-with-keyword';
-import {
- ZSendDocumentResponseSchema,
- sendDocument,
-} from '@documenso/lib/server-only/document/send-document';
-import {
- ZUpdateDocumentResponseSchema,
- updateDocument,
-} from '@documenso/lib/server-only/document/update-document';
+import { sendDocument } from '@documenso/lib/server-only/document/send-document';
+import { updateDocument } from '@documenso/lib/server-only/document/update-document';
import { symmetricEncrypt } from '@documenso/lib/universal/crypto';
import { DocumentStatus } from '@documenso/prisma/client';
import { authenticatedProcedure, procedure, router } from '../trpc';
import {
- ZCreateDocumentMutationSchema,
+ ZCreateDocumentRequestSchema,
ZDeleteDocumentMutationSchema,
+ ZDistributeDocumentRequestSchema,
+ ZDistributeDocumentResponseSchema,
ZDownloadAuditLogsMutationSchema,
ZDownloadCertificateMutationSchema,
- ZDuplicateDocumentMutationSchema,
+ ZDuplicateDocumentRequestSchema,
+ ZDuplicateDocumentResponseSchema,
ZFindDocumentAuditLogsQuerySchema,
- ZFindDocumentsQuerySchema,
+ ZFindDocumentsRequestSchema,
+ ZFindDocumentsResponseSchema,
ZGetDocumentByIdQuerySchema,
ZGetDocumentByTokenQuerySchema,
- ZGetDocumentWithDetailsByIdQuerySchema,
+ ZGetDocumentWithDetailsByIdRequestSchema,
+ ZGetDocumentWithDetailsByIdResponseSchema,
+ ZMoveDocumentToTeamResponseSchema,
ZMoveDocumentToTeamSchema,
ZResendDocumentMutationSchema,
ZSearchDocumentsMutationSchema,
- ZSendDocumentMutationSchema,
ZSetPasswordForDocumentMutationSchema,
ZSetSigningOrderForDocumentMutationSchema,
ZUpdateDocumentRequestSchema,
- ZUpdateTypedSignatureSettingsMutationSchema,
+ ZUpdateDocumentResponseSchema,
} from './schema';
export const documentRouter = router({
@@ -111,7 +95,7 @@ export const documentRouter = router({
tags: ['Document'],
},
})
- .input(ZFindDocumentsQuerySchema)
+ .input(ZFindDocumentsRequestSchema)
.output(ZFindDocumentsResponseSchema)
.query(async ({ input, ctx }) => {
const { user, teamId } = ctx;
@@ -149,7 +133,7 @@ export const documentRouter = router({
tags: ['Document'],
},
})
- .input(ZGetDocumentWithDetailsByIdQuerySchema)
+ .input(ZGetDocumentWithDetailsByIdRequestSchema)
.output(ZGetDocumentWithDetailsByIdResponseSchema)
.query(async ({ input, ctx }) => {
const { teamId, user } = ctx;
@@ -176,8 +160,7 @@ export const documentRouter = router({
// tags: ['Document'],
// },
// })
- .input(ZCreateDocumentMutationSchema)
- .output(ZCreateDocumentResponseSchema)
+ .input(ZCreateDocumentRequestSchema)
.mutation(async ({ input, ctx }) => {
const { teamId } = ctx;
const { title, documentDataId, timezone } = input;
@@ -353,39 +336,6 @@ export const documentRouter = router({
});
}),
- /**
- * @deprecated Remove after deployment.
- *
- * @private
- */
- updateTypedSignatureSettings: authenticatedProcedure
- .input(ZUpdateTypedSignatureSettingsMutationSchema)
- .mutation(async ({ input, ctx }) => {
- const { teamId } = ctx;
- const { documentId, typedSignatureEnabled } = input;
-
- const document = await getDocumentById({
- documentId,
- teamId,
- userId: ctx.user.id,
- }).catch(() => null);
-
- if (!document) {
- throw new TRPCError({
- code: 'NOT_FOUND',
- message: 'Document not found',
- });
- }
-
- return await upsertDocumentMeta({
- userId: ctx.user.id,
- teamId,
- documentId,
- typedSignatureEnabled,
- requestMetadata: ctx.metadata,
- });
- }),
-
/**
* @public
*
@@ -402,8 +352,8 @@ export const documentRouter = router({
tags: ['Document'],
},
})
- .input(ZSendDocumentMutationSchema)
- .output(ZSendDocumentResponseSchema)
+ .input(ZDistributeDocumentRequestSchema)
+ .output(ZDistributeDocumentResponseSchema)
.mutation(async ({ input, ctx }) => {
const { teamId } = ctx;
const { documentId, meta = {} } = input;
@@ -476,7 +426,7 @@ export const documentRouter = router({
tags: ['Document'],
},
})
- .input(ZDuplicateDocumentMutationSchema)
+ .input(ZDuplicateDocumentRequestSchema)
.output(ZDuplicateDocumentResponseSchema)
.mutation(async ({ input, ctx }) => {
const { teamId, user } = ctx;
diff --git a/packages/trpc/server/document-router/schema.ts b/packages/trpc/server/document-router/schema.ts
index 565399a45..ddb9bea72 100644
--- a/packages/trpc/server/document-router/schema.ts
+++ b/packages/trpc/server/document-router/schema.ts
@@ -1,12 +1,17 @@
import { z } from 'zod';
import { SUPPORTED_LANGUAGE_CODES } from '@documenso/lib/constants/i18n';
+import {
+ ZDocumentLiteSchema,
+ ZDocumentManySchema,
+ ZDocumentSchema,
+} from '@documenso/lib/types/document';
import {
ZDocumentAccessAuthTypesSchema,
ZDocumentActionAuthTypesSchema,
} from '@documenso/lib/types/document-auth';
import { ZDocumentEmailSettingsSchema } from '@documenso/lib/types/document-email';
-import { ZFindSearchParamsSchema } from '@documenso/lib/types/search-params';
+import { ZFindResultResponse, ZFindSearchParamsSchema } from '@documenso/lib/types/search-params';
import { isValidRedirectUrl } from '@documenso/lib/utils/is-valid-redirect-url';
import {
DocumentDistributionMethod,
@@ -17,7 +22,6 @@ import {
FieldType,
} from '@documenso/prisma/client';
-// Todo: Refactor all to ZDocumentMeta---
export const ZDocumentMetaTimezoneSchema = z
.string()
.describe('The timezone to use for date fields and signing the document.');
@@ -53,7 +57,7 @@ export const ZDocumentMetaTypedSignatureEnabledSchema = z
.boolean()
.describe('Whether to allow typed signatures.');
-export const ZFindDocumentsQuerySchema = ZFindSearchParamsSchema.extend({
+export const ZFindDocumentsRequestSchema = ZFindSearchParamsSchema.extend({
templateId: z
.number()
.describe('Filter documents by the template ID used to create it.')
@@ -70,6 +74,12 @@ export const ZFindDocumentsQuerySchema = ZFindSearchParamsSchema.extend({
orderByDirection: z.enum(['asc', 'desc']).describe('').default('desc'),
});
+export const ZFindDocumentsResponseSchema = ZFindResultResponse.extend({
+ data: ZDocumentManySchema.array(),
+});
+
+export type TFindDocumentsResponse = z.infer;
+
export const ZFindDocumentAuditLogsQuerySchema = ZFindSearchParamsSchema.extend({
documentId: z.number().min(1),
cursor: z.string().optional(),
@@ -82,11 +92,13 @@ export const ZGetDocumentByIdQuerySchema = z.object({
documentId: z.number(),
});
-export const ZDuplicateDocumentMutationSchema = z.object({
+export const ZDuplicateDocumentRequestSchema = z.object({
documentId: z.number(),
});
-export type TGetDocumentByIdQuerySchema = z.infer;
+export const ZDuplicateDocumentResponseSchema = z.object({
+ documentId: z.number(),
+});
export const ZGetDocumentByTokenQuerySchema = z.object({
token: z.string().min(1),
@@ -94,22 +106,18 @@ export const ZGetDocumentByTokenQuerySchema = z.object({
export type TGetDocumentByTokenQuerySchema = z.infer;
-export const ZGetDocumentWithDetailsByIdQuerySchema = z.object({
+export const ZGetDocumentWithDetailsByIdRequestSchema = z.object({
documentId: z.number(),
});
-export type TGetDocumentWithDetailsByIdQuerySchema = z.infer<
- typeof ZGetDocumentWithDetailsByIdQuerySchema
->;
+export const ZGetDocumentWithDetailsByIdResponseSchema = ZDocumentSchema;
-export const ZCreateDocumentMutationSchema = z.object({
+export const ZCreateDocumentRequestSchema = z.object({
title: z.string().min(1),
documentDataId: z.string().min(1),
timezone: z.string().optional(),
});
-export type TCreateDocumentMutationSchema = z.infer;
-
export const ZUpdateDocumentRequestSchema = z.object({
documentId: z.number(),
data: z
@@ -139,7 +147,7 @@ export const ZUpdateDocumentRequestSchema = z.object({
.optional(),
});
-export type TUpdateDocumentRequestSchema = z.infer;
+export const ZUpdateDocumentResponseSchema = ZDocumentLiteSchema;
export const ZSetFieldsForDocumentMutationSchema = z.object({
documentId: z.number(),
@@ -161,7 +169,7 @@ export type TSetFieldsForDocumentMutationSchema = z.infer<
typeof ZSetFieldsForDocumentMutationSchema
>;
-export const ZSendDocumentMutationSchema = z.object({
+export const ZDistributeDocumentRequestSchema = z.object({
documentId: z.number().describe('The ID of the document to send.'),
meta: z
.object({
@@ -177,6 +185,8 @@ export const ZSendDocumentMutationSchema = z.object({
.optional(),
});
+export const ZDistributeDocumentResponseSchema = ZDocumentLiteSchema;
+
export const ZSetPasswordForDocumentMutationSchema = z.object({
documentId: z.number(),
password: z.string(),
@@ -195,15 +205,6 @@ export type TSetSigningOrderForDocumentMutationSchema = z.infer<
typeof ZSetSigningOrderForDocumentMutationSchema
>;
-export const ZUpdateTypedSignatureSettingsMutationSchema = z.object({
- documentId: z.number(),
- typedSignatureEnabled: z.boolean(),
-});
-
-export type TUpdateTypedSignatureSettingsMutationSchema = z.infer<
- typeof ZUpdateTypedSignatureSettingsMutationSchema
->;
-
export const ZResendDocumentMutationSchema = z.object({
documentId: z.number(),
recipients: z
@@ -212,8 +213,6 @@ export const ZResendDocumentMutationSchema = z.object({
.describe('The IDs of the recipients to redistribute the document to.'),
});
-export type TSendDocumentMutationSchema = z.infer;
-
export const ZDeleteDocumentMutationSchema = z.object({
documentId: z.number(),
});
@@ -236,3 +235,5 @@ export const ZMoveDocumentToTeamSchema = z.object({
documentId: z.number().describe('The ID of the document to move to a team.'),
teamId: z.number().describe('The ID of the team to move the document to.'),
});
+
+export const ZMoveDocumentToTeamResponseSchema = ZDocumentLiteSchema;
diff --git a/packages/trpc/server/field-router/router.ts b/packages/trpc/server/field-router/router.ts
index 31bfc92ab..5bd3c7089 100644
--- a/packages/trpc/server/field-router/router.ts
+++ b/packages/trpc/server/field-router/router.ts
@@ -1,60 +1,46 @@
import { z } from 'zod';
-import {
- ZCreateDocumentFieldsResponseSchema,
- createDocumentFields,
-} from '@documenso/lib/server-only/field/create-document-fields';
-import {
- ZCreateTemplateFieldsResponseSchema,
- createTemplateFields,
-} from '@documenso/lib/server-only/field/create-template-fields';
+import { createDocumentFields } from '@documenso/lib/server-only/field/create-document-fields';
+import { createTemplateFields } from '@documenso/lib/server-only/field/create-template-fields';
import { deleteDocumentField } from '@documenso/lib/server-only/field/delete-document-field';
import { deleteTemplateField } from '@documenso/lib/server-only/field/delete-template-field';
-import {
- ZGetFieldByIdResponseSchema,
- getFieldById,
-} from '@documenso/lib/server-only/field/get-field-by-id';
+import { getFieldById } from '@documenso/lib/server-only/field/get-field-by-id';
import { removeSignedFieldWithToken } from '@documenso/lib/server-only/field/remove-signed-field-with-token';
-import {
- ZSetFieldsForDocumentResponseSchema,
- setFieldsForDocument,
-} from '@documenso/lib/server-only/field/set-fields-for-document';
-import {
- ZSetFieldsForTemplateResponseSchema,
- setFieldsForTemplate,
-} from '@documenso/lib/server-only/field/set-fields-for-template';
+import { setFieldsForDocument } from '@documenso/lib/server-only/field/set-fields-for-document';
+import { setFieldsForTemplate } from '@documenso/lib/server-only/field/set-fields-for-template';
import { signFieldWithToken } from '@documenso/lib/server-only/field/sign-field-with-token';
-import {
- ZUpdateDocumentFieldsResponseSchema,
- updateDocumentFields,
-} from '@documenso/lib/server-only/field/update-document-fields';
-import {
- ZUpdateTemplateFieldsResponseSchema,
- updateTemplateFields,
-} from '@documenso/lib/server-only/field/update-template-fields';
+import { updateDocumentFields } from '@documenso/lib/server-only/field/update-document-fields';
+import { updateTemplateFields } from '@documenso/lib/server-only/field/update-template-fields';
import { extractNextApiRequestMetadata } from '@documenso/lib/universal/extract-request-metadata';
import { authenticatedProcedure, procedure, router } from '../trpc';
import {
- ZAddFieldsMutationSchema,
- ZAddTemplateFieldsMutationSchema,
ZCreateDocumentFieldRequestSchema,
ZCreateDocumentFieldResponseSchema,
ZCreateDocumentFieldsRequestSchema,
+ ZCreateDocumentFieldsResponseSchema,
ZCreateTemplateFieldRequestSchema,
ZCreateTemplateFieldResponseSchema,
ZCreateTemplateFieldsRequestSchema,
+ ZCreateTemplateFieldsResponseSchema,
ZDeleteDocumentFieldRequestSchema,
ZDeleteTemplateFieldRequestSchema,
- ZGetFieldQuerySchema,
+ ZGetFieldRequestSchema,
+ ZGetFieldResponseSchema,
ZRemovedSignedFieldWithTokenMutationSchema,
+ ZSetDocumentFieldsRequestSchema,
+ ZSetDocumentFieldsResponseSchema,
+ ZSetFieldsForTemplateRequestSchema,
+ ZSetFieldsForTemplateResponseSchema,
ZSignFieldWithTokenMutationSchema,
ZUpdateDocumentFieldRequestSchema,
ZUpdateDocumentFieldResponseSchema,
ZUpdateDocumentFieldsRequestSchema,
+ ZUpdateDocumentFieldsResponseSchema,
ZUpdateTemplateFieldRequestSchema,
ZUpdateTemplateFieldResponseSchema,
ZUpdateTemplateFieldsRequestSchema,
+ ZUpdateTemplateFieldsResponseSchema,
} from './schema';
export const fieldRouter = router({
@@ -72,8 +58,8 @@ export const fieldRouter = router({
tags: ['Document Fields', 'Template Fields'],
},
})
- .input(ZGetFieldQuerySchema)
- .output(ZGetFieldByIdResponseSchema)
+ .input(ZGetFieldRequestSchema)
+ .output(ZGetFieldResponseSchema)
.query(async ({ input, ctx }) => {
const { teamId } = ctx;
const { fieldId } = input;
@@ -229,6 +215,8 @@ export const fieldRouter = router({
/**
* @private
+ *
+ * Todo: Refactor to setFieldsForDocument function.
*/
addFields: authenticatedProcedure
// .meta({
@@ -239,8 +227,8 @@ export const fieldRouter = router({
// tags: ['Document Fields'],
// },
// })
- .input(ZAddFieldsMutationSchema)
- .output(ZSetFieldsForDocumentResponseSchema)
+ .input(ZSetDocumentFieldsRequestSchema)
+ .output(ZSetDocumentFieldsResponseSchema)
.mutation(async ({ input, ctx }) => {
const { teamId } = ctx;
const { documentId, fields } = input;
@@ -403,6 +391,8 @@ export const fieldRouter = router({
/**
* @private
+ *
+ * Todo: Refactor to setFieldsForTemplate.
*/
addTemplateFields: authenticatedProcedure
// .meta({
@@ -413,7 +403,7 @@ export const fieldRouter = router({
// tags: ['Template Fields'],
// },
// })
- .input(ZAddTemplateFieldsMutationSchema)
+ .input(ZSetFieldsForTemplateRequestSchema)
.output(ZSetFieldsForTemplateResponseSchema)
.mutation(async ({ input, ctx }) => {
const { teamId } = ctx;
diff --git a/packages/trpc/server/field-router/schema.ts b/packages/trpc/server/field-router/schema.ts
index feaa20f95..6f38cb08a 100644
--- a/packages/trpc/server/field-router/schema.ts
+++ b/packages/trpc/server/field-router/schema.ts
@@ -1,13 +1,13 @@
import { z } from 'zod';
import { ZRecipientActionAuthSchema } from '@documenso/lib/types/document-auth';
+import { ZFieldSchema } from '@documenso/lib/types/field';
import { ZFieldMetaSchema } from '@documenso/lib/types/field-meta';
import { FieldType } from '@documenso/prisma/client';
-import { FieldSchema } from '@documenso/prisma/generated/zod';
const ZCreateFieldSchema = z.object({
recipientId: z.number().describe('The ID of the recipient to create the field for.'),
- type: FieldSchema.shape.type.describe('The type of the field to create.'),
+ type: ZFieldSchema.shape.type.describe('The type of the field to create.'),
pageNumber: z.number().describe('The page number the field will be on.'),
pageX: z.number().describe('The X coordinate of where the field will be placed.'),
pageY: z.number().describe('The Y coordinate of where the field will be placed.'),
@@ -18,7 +18,7 @@ const ZCreateFieldSchema = z.object({
const ZUpdateFieldSchema = z.object({
id: z.number().describe('The ID of the field to update.'),
- type: FieldSchema.shape.type.optional().describe('The type of the field to update.'),
+ type: ZFieldSchema.shape.type.optional().describe('The type of the field to update.'),
pageNumber: z.number().optional().describe('The page number the field will be on.'),
pageX: z.number().optional().describe('The X coordinate of where the field will be placed.'),
pageY: z.number().optional().describe('The Y coordinate of where the field will be placed.'),
@@ -28,59 +28,78 @@ const ZUpdateFieldSchema = z.object({
});
export const ZCreateDocumentFieldRequestSchema = z.object({
- documentId: z.number().min(1),
+ documentId: z.number(),
field: ZCreateFieldSchema,
});
+export const ZCreateDocumentFieldResponseSchema = ZFieldSchema;
+
export const ZCreateDocumentFieldsRequestSchema = z.object({
- documentId: z.number().min(1),
+ documentId: z.number(),
fields: ZCreateFieldSchema.array(),
});
+export const ZCreateDocumentFieldsResponseSchema = z.object({
+ fields: z.array(ZFieldSchema),
+});
+
export const ZUpdateDocumentFieldRequestSchema = z.object({
- documentId: z.number().min(1),
+ documentId: z.number(),
field: ZUpdateFieldSchema,
});
+export const ZUpdateDocumentFieldResponseSchema = ZFieldSchema;
+
export const ZUpdateDocumentFieldsRequestSchema = z.object({
- documentId: z.number().min(1),
+ documentId: z.number(),
fields: ZUpdateFieldSchema.array(),
});
+export const ZUpdateDocumentFieldsResponseSchema = z.object({
+ fields: z.array(ZFieldSchema),
+});
+
export const ZDeleteDocumentFieldRequestSchema = z.object({
- fieldId: z.number().min(1),
+ fieldId: z.number(),
});
export const ZCreateTemplateFieldRequestSchema = z.object({
- templateId: z.number().min(1),
+ templateId: z.number(),
field: ZCreateFieldSchema,
});
-export const ZCreateDocumentFieldResponseSchema = FieldSchema;
-export const ZUpdateTemplateFieldResponseSchema = FieldSchema;
-export const ZUpdateDocumentFieldResponseSchema = FieldSchema;
-export const ZCreateTemplateFieldResponseSchema = FieldSchema;
+export const ZCreateTemplateFieldResponseSchema = ZFieldSchema;
export const ZCreateTemplateFieldsRequestSchema = z.object({
- templateId: z.number().min(1),
+ templateId: z.number(),
fields: ZCreateFieldSchema.array(),
});
+export const ZCreateTemplateFieldsResponseSchema = z.object({
+ fields: z.array(ZFieldSchema),
+});
+
export const ZUpdateTemplateFieldRequestSchema = z.object({
- templateId: z.number().min(1),
+ templateId: z.number(),
field: ZUpdateFieldSchema,
});
export const ZUpdateTemplateFieldsRequestSchema = z.object({
- templateId: z.number().min(1),
+ templateId: z.number(),
fields: ZUpdateFieldSchema.array(),
});
-export const ZDeleteTemplateFieldRequestSchema = z.object({
- fieldId: z.number().min(1),
+export const ZUpdateTemplateFieldsResponseSchema = z.object({
+ fields: z.array(ZFieldSchema),
});
-export const ZAddFieldsMutationSchema = z.object({
+export const ZUpdateTemplateFieldResponseSchema = ZFieldSchema;
+
+export const ZDeleteTemplateFieldRequestSchema = z.object({
+ fieldId: z.number(),
+});
+
+export const ZSetDocumentFieldsRequestSchema = z.object({
documentId: z.number(),
fields: z.array(
z.object({
@@ -98,9 +117,11 @@ export const ZAddFieldsMutationSchema = z.object({
),
});
-export type TAddFieldsMutationSchema = z.infer;
+export const ZSetDocumentFieldsResponseSchema = z.object({
+ fields: z.array(ZFieldSchema),
+});
-export const ZAddTemplateFieldsMutationSchema = z.object({
+export const ZSetFieldsForTemplateRequestSchema = z.object({
templateId: z.number(),
fields: z.array(
z.object({
@@ -118,7 +139,9 @@ export const ZAddTemplateFieldsMutationSchema = z.object({
),
});
-export type TAddTemplateFieldsMutationSchema = z.infer;
+export const ZSetFieldsForTemplateResponseSchema = z.object({
+ fields: z.array(ZFieldSchema),
+});
export const ZSignFieldWithTokenMutationSchema = z.object({
token: z.string(),
@@ -139,15 +162,8 @@ export type TRemovedSignedFieldWithTokenMutationSchema = z.infer<
typeof ZRemovedSignedFieldWithTokenMutationSchema
>;
-export const ZGetFieldQuerySchema = z.object({
+export const ZGetFieldRequestSchema = z.object({
fieldId: z.number(),
});
-export type TGetFieldQuerySchema = z.infer;
-
-export const ZUpdateFieldMutationSchema = z.object({
- fieldId: z.number(),
- documentId: z.number(),
- fieldMeta: ZFieldMetaSchema,
- teamId: z.number().optional(),
-});
+export const ZGetFieldResponseSchema = ZFieldSchema;
diff --git a/packages/trpc/server/recipient-router/router.ts b/packages/trpc/server/recipient-router/router.ts
index 757061bca..803867971 100644
--- a/packages/trpc/server/recipient-router/router.ts
+++ b/packages/trpc/server/recipient-router/router.ts
@@ -2,48 +2,37 @@ import { z } from 'zod';
import { completeDocumentWithToken } from '@documenso/lib/server-only/document/complete-document-with-token';
import { rejectDocumentWithToken } from '@documenso/lib/server-only/document/reject-document-with-token';
-import {
- ZCreateDocumentRecipientsResponseSchema,
- createDocumentRecipients,
-} from '@documenso/lib/server-only/recipient/create-document-recipients';
-import {
- ZCreateTemplateRecipientsResponseSchema,
- createTemplateRecipients,
-} from '@documenso/lib/server-only/recipient/create-template-recipients';
+import { createDocumentRecipients } from '@documenso/lib/server-only/recipient/create-document-recipients';
+import { createTemplateRecipients } from '@documenso/lib/server-only/recipient/create-template-recipients';
import { deleteDocumentRecipient } from '@documenso/lib/server-only/recipient/delete-document-recipient';
import { deleteTemplateRecipient } from '@documenso/lib/server-only/recipient/delete-template-recipient';
-import {
- ZGetRecipientByIdResponseSchema,
- getRecipientById,
-} from '@documenso/lib/server-only/recipient/get-recipient-by-id';
-import {
- ZSetDocumentRecipientsResponseSchema,
- setDocumentRecipients,
-} from '@documenso/lib/server-only/recipient/set-document-recipients';
-import {
- ZSetTemplateRecipientsResponseSchema,
- setTemplateRecipients,
-} from '@documenso/lib/server-only/recipient/set-template-recipients';
+import { getRecipientById } from '@documenso/lib/server-only/recipient/get-recipient-by-id';
+import { setDocumentRecipients } from '@documenso/lib/server-only/recipient/set-document-recipients';
+import { setTemplateRecipients } from '@documenso/lib/server-only/recipient/set-template-recipients';
import { updateDocumentRecipients } from '@documenso/lib/server-only/recipient/update-document-recipients';
import { updateTemplateRecipients } from '@documenso/lib/server-only/recipient/update-template-recipients';
import { extractNextApiRequestMetadata } from '@documenso/lib/universal/extract-request-metadata';
import { authenticatedProcedure, procedure, router } from '../trpc';
import {
- ZAddSignersMutationSchema,
ZCompleteDocumentWithTokenMutationSchema,
ZCreateDocumentRecipientRequestSchema,
ZCreateDocumentRecipientResponseSchema,
ZCreateDocumentRecipientsRequestSchema,
+ ZCreateDocumentRecipientsResponseSchema,
ZCreateTemplateRecipientRequestSchema,
ZCreateTemplateRecipientResponseSchema,
ZCreateTemplateRecipientsRequestSchema,
+ ZCreateTemplateRecipientsResponseSchema,
ZDeleteDocumentRecipientRequestSchema,
ZDeleteTemplateRecipientRequestSchema,
- ZGetRecipientQuerySchema,
+ ZGetRecipientRequestSchema,
+ ZGetRecipientResponseSchema,
ZRejectDocumentWithTokenMutationSchema,
ZSetDocumentRecipientsRequestSchema,
+ ZSetDocumentRecipientsResponseSchema,
ZSetTemplateRecipientsRequestSchema,
+ ZSetTemplateRecipientsResponseSchema,
ZUpdateDocumentRecipientRequestSchema,
ZUpdateDocumentRecipientResponseSchema,
ZUpdateDocumentRecipientsRequestSchema,
@@ -69,8 +58,8 @@ export const recipientRouter = router({
tags: ['Document Recipients', 'Template Recipients'],
},
})
- .input(ZGetRecipientQuerySchema)
- .output(ZGetRecipientByIdResponseSchema)
+ .input(ZGetRecipientRequestSchema)
+ .output(ZGetRecipientResponseSchema)
.query(async ({ input, ctx }) => {
const { teamId } = ctx;
const { recipientId } = input;
@@ -464,32 +453,4 @@ export const recipientRouter = router({
requestMetadata: extractNextApiRequestMetadata(ctx.req),
});
}),
-
- /**
- * Leaving this here and will remove after deployment.
- *
- * @deprecated Remove after deployment.
- */
- addSigners: authenticatedProcedure
- .input(ZAddSignersMutationSchema)
- .output(ZSetDocumentRecipientsResponseSchema)
- .mutation(async ({ input, ctx }) => {
- const { teamId } = ctx;
- const { documentId, signers } = input;
-
- return await setDocumentRecipients({
- userId: ctx.user.id,
- documentId,
- teamId,
- recipients: signers.map((signer) => ({
- id: signer.nativeId,
- email: signer.email,
- name: signer.name,
- role: signer.role,
- signingOrder: signer.signingOrder,
- actionAuth: signer.actionAuth,
- })),
- requestMetadata: ctx.metadata,
- });
- }),
});
diff --git a/packages/trpc/server/recipient-router/schema.ts b/packages/trpc/server/recipient-router/schema.ts
index 56d1fefe3..984b08d06 100644
--- a/packages/trpc/server/recipient-router/schema.ts
+++ b/packages/trpc/server/recipient-router/schema.ts
@@ -5,13 +5,15 @@ import {
ZRecipientActionAuthSchema,
ZRecipientActionAuthTypesSchema,
} from '@documenso/lib/types/document-auth';
+import { ZRecipientLiteSchema, ZRecipientSchema } from '@documenso/lib/types/recipient';
import { RecipientRole } from '@documenso/prisma/client';
-import { FieldSchema, RecipientSchema } from '@documenso/prisma/generated/zod';
-export const ZGetRecipientQuerySchema = z.object({
+export const ZGetRecipientRequestSchema = z.object({
recipientId: z.number(),
});
+export const ZGetRecipientResponseSchema = ZRecipientSchema;
+
const ZCreateRecipientSchema = z.object({
email: z.string().toLowerCase().email().min(1),
name: z.string(),
@@ -31,41 +33,12 @@ const ZUpdateRecipientSchema = z.object({
actionAuth: ZRecipientActionAuthTypesSchema.optional().nullable(),
});
-/**
- * Use this when returning base recipients from the API.
- */
-export const ZRecipientBaseResponseSchema = RecipientSchema.pick({
- id: true,
- documentId: true,
- templateId: true,
- email: true,
- name: true,
- token: true,
- documentDeletedAt: true,
- expired: true,
- signedAt: true,
- authOptions: true,
- signingOrder: true,
- rejectionReason: true,
- role: true,
- readStatus: true,
- signingStatus: true,
- sendStatus: true,
-});
-
-/**
- * Use this when returning a full recipient from the API.
- */
-export const ZRecipientResponseSchema = ZRecipientBaseResponseSchema.extend({
- fields: FieldSchema.array(),
-});
-
export const ZCreateDocumentRecipientRequestSchema = z.object({
documentId: z.number(),
recipient: ZCreateRecipientSchema,
});
-export const ZCreateDocumentRecipientResponseSchema = ZRecipientBaseResponseSchema;
+export const ZCreateDocumentRecipientResponseSchema = ZRecipientLiteSchema;
export const ZCreateDocumentRecipientsRequestSchema = z.object({
documentId: z.number(),
@@ -76,12 +49,16 @@ export const ZCreateDocumentRecipientsRequestSchema = z.object({
}),
});
+export const ZCreateDocumentRecipientsResponseSchema = z.object({
+ recipients: ZRecipientLiteSchema.array(),
+});
+
export const ZUpdateDocumentRecipientRequestSchema = z.object({
documentId: z.number(),
recipient: ZUpdateRecipientSchema,
});
-export const ZUpdateDocumentRecipientResponseSchema = ZRecipientResponseSchema;
+export const ZUpdateDocumentRecipientResponseSchema = ZRecipientSchema;
export const ZUpdateDocumentRecipientsRequestSchema = z.object({
documentId: z.number(),
@@ -95,7 +72,7 @@ export const ZUpdateDocumentRecipientsRequestSchema = z.object({
});
export const ZUpdateDocumentRecipientsResponseSchema = z.object({
- recipients: z.array(ZRecipientResponseSchema),
+ recipients: z.array(ZRecipientSchema),
});
export const ZDeleteDocumentRecipientRequestSchema = z.object({
@@ -126,12 +103,16 @@ export const ZSetDocumentRecipientsRequestSchema = z
{ message: 'Signers must have unique emails', path: ['signers__root'] },
);
+export const ZSetDocumentRecipientsResponseSchema = z.object({
+ recipients: ZRecipientLiteSchema.array(),
+});
+
export const ZCreateTemplateRecipientRequestSchema = z.object({
templateId: z.number(),
recipient: ZCreateRecipientSchema,
});
-export const ZCreateTemplateRecipientResponseSchema = ZRecipientBaseResponseSchema;
+export const ZCreateTemplateRecipientResponseSchema = ZRecipientLiteSchema;
export const ZCreateTemplateRecipientsRequestSchema = z.object({
templateId: z.number(),
@@ -142,12 +123,16 @@ export const ZCreateTemplateRecipientsRequestSchema = z.object({
}),
});
+export const ZCreateTemplateRecipientsResponseSchema = z.object({
+ recipients: ZRecipientLiteSchema.array(),
+});
+
export const ZUpdateTemplateRecipientRequestSchema = z.object({
templateId: z.number(),
recipient: ZUpdateRecipientSchema,
});
-export const ZUpdateTemplateRecipientResponseSchema = ZRecipientResponseSchema;
+export const ZUpdateTemplateRecipientResponseSchema = ZRecipientSchema;
export const ZUpdateTemplateRecipientsRequestSchema = z.object({
templateId: z.number(),
@@ -161,11 +146,7 @@ export const ZUpdateTemplateRecipientsRequestSchema = z.object({
});
export const ZUpdateTemplateRecipientsResponseSchema = z.object({
- recipients: z.array(ZRecipientResponseSchema).refine((recipients) => {
- const emails = recipients.map((recipient) => recipient.email);
-
- return new Set(emails).size === emails.length;
- }),
+ recipients: z.array(ZRecipientSchema),
});
export const ZDeleteTemplateRecipientRequestSchema = z.object({
@@ -196,6 +177,10 @@ export const ZSetTemplateRecipientsRequestSchema = z
{ message: 'Recipients must have unique emails', path: ['recipients__root'] },
);
+export const ZSetTemplateRecipientsResponseSchema = z.object({
+ recipients: ZRecipientLiteSchema.array(),
+});
+
export const ZCompleteDocumentWithTokenMutationSchema = z.object({
token: z.string(),
documentId: z.number(),
@@ -216,32 +201,3 @@ export const ZRejectDocumentWithTokenMutationSchema = z.object({
export type TRejectDocumentWithTokenMutationSchema = z.infer<
typeof ZRejectDocumentWithTokenMutationSchema
>;
-
-/**
- * Legacy schema. Remove after deployment (when addSigners trpc is removed).
- *
- * @deprecated
- */
-export const ZAddSignersMutationSchema = z
- .object({
- documentId: z.number(),
- signers: z.array(
- z.object({
- nativeId: z.number().optional(),
- email: z.string().toLowerCase().email().min(1),
- name: z.string(),
- role: z.nativeEnum(RecipientRole),
- signingOrder: z.number().optional(),
- actionAuth: ZRecipientActionAuthTypesSchema.optional().nullable(),
- }),
- ),
- })
- .refine(
- (schema) => {
- const emails = schema.signers.map((signer) => signer.email.toLowerCase());
-
- return new Set(emails).size === emails.length;
- },
- // Dirty hack to handle errors when .root is populated for an array type
- { message: 'Signers must have unique emails', path: ['signers__root'] },
- );
diff --git a/packages/trpc/server/template-router/router.ts b/packages/trpc/server/template-router/router.ts
index b50a1adaf..56238c14a 100644
--- a/packages/trpc/server/template-router/router.ts
+++ b/packages/trpc/server/template-router/router.ts
@@ -2,10 +2,7 @@ import { z } from 'zod';
import { getServerLimits } from '@documenso/ee/server-only/limits/server';
import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
-import {
- ZGetDocumentWithDetailsByIdResponseSchema,
- getDocumentWithDetailsById,
-} from '@documenso/lib/server-only/document/get-document-with-details-by-id';
+import { getDocumentWithDetailsById } from '@documenso/lib/server-only/document/get-document-with-details-by-id';
import { sendDocument } from '@documenso/lib/server-only/document/send-document';
import {
ZCreateDocumentFromDirectTemplateResponseSchema,
@@ -50,16 +47,17 @@ import type { Document } from '@documenso/prisma/client';
import { authenticatedProcedure, maybeAuthenticatedProcedure, router } from '../trpc';
import {
- ZCreateDocumentFromDirectTemplateMutationSchema,
- ZCreateDocumentFromTemplateMutationSchema,
+ ZCreateDocumentFromDirectTemplateRequestSchema,
+ ZCreateDocumentFromTemplateRequestSchema,
+ ZCreateDocumentFromTemplateResponseSchema,
ZCreateTemplateDirectLinkMutationSchema,
ZCreateTemplateMutationSchema,
ZDeleteTemplateDirectLinkMutationSchema,
ZDeleteTemplateMutationSchema,
ZDuplicateTemplateMutationSchema,
- ZFindTemplatesQuerySchema,
- ZGetTemplateByIdQuerySchema,
- ZMoveTemplatesToTeamSchema,
+ ZFindTemplatesRequestSchema,
+ ZGetTemplateByIdRequestSchema,
+ ZMoveTemplatesToTeamRequestSchema,
ZToggleTemplateDirectLinkMutationSchema,
ZUpdateTemplateRequestSchema,
} from './schema';
@@ -78,7 +76,7 @@ export const templateRouter = router({
tags: ['Template'],
},
})
- .input(ZFindTemplatesQuerySchema)
+ .input(ZFindTemplatesRequestSchema)
.output(ZFindTemplatesResponseSchema)
.query(async ({ input, ctx }) => {
const { teamId } = ctx;
@@ -102,7 +100,7 @@ export const templateRouter = router({
tags: ['Template'],
},
})
- .input(ZGetTemplateByIdQuerySchema)
+ .input(ZGetTemplateByIdRequestSchema)
.output(ZGetTemplateByIdResponseSchema)
.query(async ({ input, ctx }) => {
const { teamId } = ctx;
@@ -234,8 +232,8 @@ export const templateRouter = router({
tags: ['Template'],
},
})
- .input(ZCreateDocumentFromTemplateMutationSchema)
- .output(ZGetDocumentWithDetailsByIdResponseSchema)
+ .input(ZCreateDocumentFromTemplateRequestSchema)
+ .output(ZCreateDocumentFromTemplateResponseSchema)
.mutation(async ({ ctx, input }) => {
const { teamId } = ctx;
const { templateId, recipients, distributeDocument, customDocumentDataId } = input;
@@ -290,7 +288,7 @@ export const templateRouter = router({
// tags: ['Template'],
// },
// })
- .input(ZCreateDocumentFromDirectTemplateMutationSchema)
+ .input(ZCreateDocumentFromDirectTemplateRequestSchema)
.output(ZCreateDocumentFromDirectTemplateResponseSchema)
.mutation(async ({ input, ctx }) => {
const {
@@ -415,7 +413,7 @@ export const templateRouter = router({
tags: ['Template'],
},
})
- .input(ZMoveTemplatesToTeamSchema)
+ .input(ZMoveTemplatesToTeamRequestSchema)
.output(ZMoveTemplateToTeamResponseSchema)
.mutation(async ({ input, ctx }) => {
const { templateId, teamId } = input;
diff --git a/packages/trpc/server/template-router/schema.ts b/packages/trpc/server/template-router/schema.ts
index 9b230eadd..4e6409793 100644
--- a/packages/trpc/server/template-router/schema.ts
+++ b/packages/trpc/server/template-router/schema.ts
@@ -1,5 +1,6 @@
import { z } from 'zod';
+import { ZDocumentSchema } from '@documenso/lib/types/document';
import {
ZDocumentAccessAuthTypesSchema,
ZDocumentActionAuthTypesSchema,
@@ -25,7 +26,7 @@ export const ZCreateTemplateMutationSchema = z.object({
templateDocumentDataId: z.string().min(1),
});
-export const ZCreateDocumentFromDirectTemplateMutationSchema = z.object({
+export const ZCreateDocumentFromDirectTemplateRequestSchema = z.object({
directRecipientName: z.string().optional(),
directRecipientEmail: z.string().email(),
directTemplateToken: z.string().min(1),
@@ -34,7 +35,7 @@ export const ZCreateDocumentFromDirectTemplateMutationSchema = z.object({
templateUpdatedAt: z.date(),
});
-export const ZCreateDocumentFromTemplateMutationSchema = z.object({
+export const ZCreateDocumentFromTemplateRequestSchema = z.object({
templateId: z.number(),
recipients: z
.array(
@@ -62,6 +63,8 @@ export const ZCreateDocumentFromTemplateMutationSchema = z.object({
.optional(),
});
+export const ZCreateDocumentFromTemplateResponseSchema = ZDocumentSchema;
+
export const ZDuplicateTemplateMutationSchema = z.object({
templateId: z.number(),
});
@@ -138,24 +141,19 @@ export const ZUpdateTemplateRequestSchema = z.object({
.optional(),
});
-export const ZFindTemplatesQuerySchema = ZFindSearchParamsSchema.extend({
+export const ZFindTemplatesRequestSchema = ZFindSearchParamsSchema.extend({
type: z.nativeEnum(TemplateType).describe('Filter templates by type.').optional(),
});
-export const ZGetTemplateByIdQuerySchema = z.object({
- templateId: z.number().min(1),
+export const ZGetTemplateByIdRequestSchema = z.object({
+ templateId: z.number(),
});
-export const ZMoveTemplatesToTeamSchema = z.object({
+export const ZMoveTemplatesToTeamRequestSchema = z.object({
templateId: z.number().describe('The ID of the template to move to.'),
teamId: z.number().describe('The ID of the team to move the template to.'),
});
export type TCreateTemplateMutationSchema = z.infer;
-export type TCreateDocumentFromTemplateMutationSchema = z.infer<
- typeof ZCreateDocumentFromTemplateMutationSchema
->;
export type TDuplicateTemplateMutationSchema = z.infer;
export type TDeleteTemplateMutationSchema = z.infer;
-export type TGetTemplateByIdQuerySchema = z.infer;
-export type TMoveTemplatesToSchema = z.infer;
From 5750f2b4778e83a4d4d70f4e1a433a3c76b0ac92 Mon Sep 17 00:00:00 2001
From: David Nguyen
Date: Wed, 15 Jan 2025 13:46:45 +1100
Subject: [PATCH 11/35] feat: add prisma json types (#1583)
---
apps/documentation/package.json | 2 +-
apps/openpage-api/package.json | 6 +-
apps/web/package.json | 6 +-
package-lock.json | 171 ++++++------------
package.json | 3 +-
packages/api/v1/implementation.ts | 4 +-
.../create-document-from-template.spec.ts | 2 +-
packages/app-tests/package.json | 2 +-
packages/eslint-config/package.json | 4 +-
packages/lib/server-only/2fa/setup-2fa.ts | 2 +-
.../lib/server-only/field/update-field.ts | 7 +-
packages/lib/types/document-form-values.ts | 8 +
packages/lib/types/field-meta.ts | 59 +++---
packages/prisma/index.ts | 1 +
packages/prisma/package.json | 3 +-
packages/prisma/schema.prisma | 24 ++-
packages/prisma/types/types.d.ts | 25 +++
.../helpers/update-signing-placeholder.ts | 6 +-
.../signing/transports/google-cloud-hsm.ts | 15 +-
packages/signing/transports/local-cert.ts | 10 +-
packages/ui/package.json | 2 +-
21 files changed, 174 insertions(+), 188 deletions(-)
create mode 100644 packages/lib/types/document-form-values.ts
create mode 100644 packages/prisma/types/types.d.ts
diff --git a/apps/documentation/package.json b/apps/documentation/package.json
index c5f5bee5a..fc06f6547 100644
--- a/apps/documentation/package.json
+++ b/apps/documentation/package.json
@@ -27,6 +27,6 @@
"@types/node": "^20",
"@types/react": "^18",
"@types/react-dom": "^18",
- "typescript": "^5"
+ "typescript": "5.6.2"
}
}
\ No newline at end of file
diff --git a/apps/openpage-api/package.json b/apps/openpage-api/package.json
index 349bc356f..1a8816acb 100644
--- a/apps/openpage-api/package.json
+++ b/apps/openpage-api/package.json
@@ -16,8 +16,8 @@
"next": "14.2.6"
},
"devDependencies": {
- "@types/node": "20.16.5",
+ "@types/node": "^20",
"@types/react": "18.3.5",
- "typescript": "5.5.4"
+ "typescript": "5.6.2"
}
-}
+}
\ No newline at end of file
diff --git a/apps/web/package.json b/apps/web/package.json
index 3fa724b7a..9659be4bc 100644
--- a/apps/web/package.json
+++ b/apps/web/package.json
@@ -68,11 +68,11 @@
"@simplewebauthn/types": "^9.0.1",
"@types/formidable": "^2.0.6",
"@types/luxon": "^3.3.1",
- "@types/node": "20.1.0",
+ "@types/node": "^20",
"@types/papaparse": "^5.3.14",
"@types/react": "^18",
"@types/react-dom": "^18",
"@types/ua-parser-js": "^0.7.39",
- "typescript": "5.2.2"
+ "typescript": "5.6.2"
}
-}
+}
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 6e073e849..0b91a723d 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -20,6 +20,7 @@
"mupdf": "^1.0.0",
"next-runtime-env": "^3.2.0",
"react": "^18",
+ "typescript": "5.6.2",
"zod": "3.24.1"
},
"devDependencies": {
@@ -63,7 +64,7 @@
"@types/node": "^20",
"@types/react": "^18",
"@types/react-dom": "^18",
- "typescript": "^5"
+ "typescript": "5.6.2"
}
},
"apps/documentation/node_modules/next-plausible": {
@@ -88,18 +89,9 @@
"next": "14.2.6"
},
"devDependencies": {
- "@types/node": "20.16.5",
+ "@types/node": "^20",
"@types/react": "18.3.5",
- "typescript": "5.5.4"
- }
- },
- "apps/openpage-api/node_modules/@types/node": {
- "version": "20.16.5",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.5.tgz",
- "integrity": "sha512-VwYCweNo3ERajwy0IUlqqcyZ8/A7Zwa9ZP3MnENWcB11AejO+tLy3pu850goUW2FC/IJMdZUfKpX/yxL1gymCA==",
- "dev": true,
- "dependencies": {
- "undici-types": "~6.19.2"
+ "typescript": "5.6.2"
}
},
"apps/openpage-api/node_modules/@types/react": {
@@ -112,25 +104,6 @@
"csstype": "^3.0.2"
}
},
- "apps/openpage-api/node_modules/typescript": {
- "version": "5.5.4",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz",
- "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==",
- "dev": true,
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
- },
- "engines": {
- "node": ">=14.17"
- }
- },
- "apps/openpage-api/node_modules/undici-types": {
- "version": "6.19.8",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
- "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
- "dev": true
- },
"apps/web": {
"name": "@documenso/web",
"version": "1.9.0-rc.8",
@@ -190,20 +163,14 @@
"@simplewebauthn/types": "^9.0.1",
"@types/formidable": "^2.0.6",
"@types/luxon": "^3.3.1",
- "@types/node": "20.1.0",
+ "@types/node": "^20",
"@types/papaparse": "^5.3.14",
"@types/react": "^18",
"@types/react-dom": "^18",
"@types/ua-parser-js": "^0.7.39",
- "typescript": "5.2.2"
+ "typescript": "5.6.2"
}
},
- "apps/web/node_modules/@types/node": {
- "version": "20.1.0",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.1.0.tgz",
- "integrity": "sha512-O+z53uwx64xY7D6roOi4+jApDGFg0qn6WHcxe5QeqjMaTezBO/mxdfFXIVAVVyNWKx84OmPB3L8kbVYOTeN34A==",
- "dev": true
- },
"apps/web/node_modules/next-axiom": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/next-axiom/-/next-axiom-1.5.1.tgz",
@@ -221,19 +188,6 @@
"react": ">=18.0.0"
}
},
- "apps/web/node_modules/typescript": {
- "version": "5.2.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
- "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
- "dev": true,
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
- },
- "engines": {
- "node": ">=14.17"
- }
- },
"node_modules/@aashutoshrathi/word-wrap": {
"version": "1.2.6",
"resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
@@ -10205,7 +10159,8 @@
"node_modules/@types/node": {
"version": "20.5.1",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.1.tgz",
- "integrity": "sha512-4tT2UrL5LBqDwoed9wZ6N3umC4Yhz3W3FloMmiiG4JwmUJWpie0c7lcnUNd4gtMKuDEO4wRVS8B6Xa0uMRsMKg=="
+ "integrity": "sha512-4tT2UrL5LBqDwoed9wZ6N3umC4Yhz3W3FloMmiiG4JwmUJWpie0c7lcnUNd4gtMKuDEO4wRVS8B6Xa0uMRsMKg==",
+ "license": "MIT"
},
"node_modules/@types/node-fetch": {
"version": "2.6.11",
@@ -32257,9 +32212,10 @@
}
},
"node_modules/typescript": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.2.tgz",
- "integrity": "sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==",
+ "version": "5.6.2",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz",
+ "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==",
+ "license": "Apache-2.0",
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -34132,24 +34088,10 @@
"@documenso/prisma": "*",
"@documenso/web": "*",
"@playwright/test": "^1.18.1",
- "@types/node": "^20.8.2",
+ "@types/node": "^20",
"pdf-lib": "^1.17.1"
}
},
- "packages/app-tests/node_modules/@types/node": {
- "version": "20.8.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "undici-types": "~5.25.1"
- }
- },
- "packages/app-tests/node_modules/undici-types": {
- "version": "5.25.3",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz",
- "integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==",
- "dev": true
- },
"packages/assets": {
"name": "@documenso/assets",
"version": "0.1.0"
@@ -34239,7 +34181,7 @@
"eslint-plugin-package-json": "^0.10.4",
"eslint-plugin-react": "^7.34.0",
"eslint-plugin-unused-imports": "^3.1.0",
- "typescript": "5.2.2"
+ "typescript": "5.6.2"
}
},
"packages/eslint-config/node_modules/@eslint/eslintrc": {
@@ -35301,18 +35243,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "packages/eslint-config/node_modules/typescript": {
- "version": "5.2.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
- "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
- },
- "engines": {
- "node": ">=14.17"
- }
- },
"packages/eslint-config/node_modules/which-typed-array": {
"version": "1.1.14",
"resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.14.tgz",
@@ -35445,9 +35375,10 @@
"devDependencies": {
"dotenv": "^16.3.1",
"dotenv-cli": "^7.3.0",
+ "prisma-json-types-generator": "^3.2.2",
"prisma-kysely": "^1.8.0",
"tsx": "^4.11.0",
- "typescript": "5.2.2",
+ "typescript": "5.6.2",
"zod-prisma-types": "3.1.9"
}
},
@@ -35468,23 +35399,54 @@
"@prisma/debug": "5.22.0"
}
},
+ "packages/prisma/node_modules/prisma-json-types-generator": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/prisma-json-types-generator/-/prisma-json-types-generator-3.2.2.tgz",
+ "integrity": "sha512-kvEbJPIP5gxk65KmLs0nAvY+CxpqVMWb4OsEvXlyXZmp2IGfi5f52BUV7ezTYQNjRPZyR4QlayWJXffoqVVAfA==",
+ "dev": true,
+ "dependencies": {
+ "@prisma/generator-helper": "6.0.0",
+ "tslib": "2.8.1"
+ },
+ "bin": {
+ "prisma-json-types-generator": "index.js"
+ },
+ "engines": {
+ "node": ">=14.0"
+ },
+ "funding": {
+ "url": "https://github.com/arthurfiorette/prisma-json-types-generator?sponsor=1"
+ },
+ "peerDependencies": {
+ "prisma": "^5 || ^6",
+ "typescript": "^5.6.2"
+ }
+ },
+ "packages/prisma/node_modules/prisma-json-types-generator/node_modules/@prisma/debug": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.0.0.tgz",
+ "integrity": "sha512-eUjoNThlDXdyJ1iQ2d7U6aTVwm59EwvODb5zFVNJEokNoSiQmiYWNzZIwZyDmZ+j51j42/0iTaHIJ4/aZPKFRg==",
+ "dev": true
+ },
+ "packages/prisma/node_modules/prisma-json-types-generator/node_modules/@prisma/generator-helper": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/@prisma/generator-helper/-/generator-helper-6.0.0.tgz",
+ "integrity": "sha512-5DkG7hspZo6U4OtqI2W0JcgtY37sr7HgT8Q0W/sjL4VoV4px6ivzK6Eif5bKM7q+S4yFUHtjUt/3s69ErfLn7A==",
+ "dev": true,
+ "dependencies": {
+ "@prisma/debug": "6.0.0"
+ }
+ },
"packages/prisma/node_modules/ts-pattern": {
"version": "5.0.6",
"resolved": "https://registry.npmjs.org/ts-pattern/-/ts-pattern-5.0.6.tgz",
"integrity": "sha512-Y+jOjihlFriWzcBjncPCf2/am+Hgz7LtsWs77pWg5vQQKLQj07oNrJryo/wK2G0ndNaoVn2ownFMeoeAuReu3Q=="
},
- "packages/prisma/node_modules/typescript": {
- "version": "5.2.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
- "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
- "dev": true,
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
- },
- "engines": {
- "node": ">=14.17"
- }
+ "packages/prisma/node_modules/tslib": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+ "dev": true
},
"packages/prisma/node_modules/zod-prisma-types": {
"version": "3.1.9",
@@ -35639,7 +35601,7 @@
"@types/react": "^18",
"@types/react-dom": "^18",
"react": "^18",
- "typescript": "5.2.2"
+ "typescript": "5.6.2"
}
},
"packages/ui/node_modules/react-pdf": {
@@ -35678,19 +35640,6 @@
"engines": {
"node": ">=6"
}
- },
- "packages/ui/node_modules/typescript": {
- "version": "5.2.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
- "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
- "dev": true,
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
- },
- "engines": {
- "node": ">=14.17"
- }
}
}
}
diff --git a/package.json b/package.json
index 3f53e3842..015d079e4 100644
--- a/package.json
+++ b/package.json
@@ -65,6 +65,7 @@
"dependencies": {
"@documenso/pdf-sign": "^0.1.0",
"@documenso/prisma": "^0.0.0",
+ "typescript": "5.6.2",
"@lingui/core": "^4.11.3",
"inngest-cli": "^0.29.1",
"luxon": "^3.5.0",
@@ -80,4 +81,4 @@
"trigger.dev": {
"endpointId": "documenso-app"
}
-}
+}
\ No newline at end of file
diff --git a/packages/api/v1/implementation.ts b/packages/api/v1/implementation.ts
index c3e5da673..0f13150c7 100644
--- a/packages/api/v1/implementation.ts
+++ b/packages/api/v1/implementation.ts
@@ -1053,12 +1053,12 @@ export const ApiContractV1Implementation = createNextRoute(ApiContractV1, {
.with('TEXT', () => ZTextFieldMeta.safeParse(fieldMeta))
.with('SIGNATURE', 'INITIALS', 'DATE', 'EMAIL', 'NAME', () => ({
success: true,
- data: {},
+ data: undefined,
}))
.with('FREE_SIGNATURE', () => ({
success: false,
error: 'FREE_SIGNATURE is not supported',
- data: {},
+ data: undefined,
}))
.exhaustive();
diff --git a/packages/app-tests/e2e/templates/create-document-from-template.spec.ts b/packages/app-tests/e2e/templates/create-document-from-template.spec.ts
index 8f5038d6a..7e5219390 100644
--- a/packages/app-tests/e2e/templates/create-document-from-template.spec.ts
+++ b/packages/app-tests/e2e/templates/create-document-from-template.spec.ts
@@ -27,7 +27,7 @@ function createTempPdfFile() {
'%PDF-1.4\n1 0 obj<>endobj 2 0 obj<>endobj 3 0 obj<>endobj\nxref\n0 4\n0000000000 65535 f\n0000000009 00000 n\n0000000052 00000 n\n0000000101 00000 n\ntrailer<>\nstartxref\n178\n%%EOF',
);
- fs.writeFileSync(tempFilePath, pdfContent);
+ fs.writeFileSync(tempFilePath, new Uint8Array(pdfContent));
return tempFilePath;
}
diff --git a/packages/app-tests/package.json b/packages/app-tests/package.json
index a5d809e39..2b0bd3468 100644
--- a/packages/app-tests/package.json
+++ b/packages/app-tests/package.json
@@ -13,7 +13,7 @@
"author": "",
"devDependencies": {
"@playwright/test": "^1.18.1",
- "@types/node": "^20.8.2",
+ "@types/node": "^20",
"@documenso/lib": "*",
"@documenso/prisma": "*",
"@documenso/web": "*",
diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json
index 4d25e1bd8..6049dd7c7 100644
--- a/packages/eslint-config/package.json
+++ b/packages/eslint-config/package.json
@@ -15,6 +15,6 @@
"eslint-plugin-package-json": "^0.10.4",
"eslint-plugin-react": "^7.34.0",
"eslint-plugin-unused-imports": "^3.1.0",
- "typescript": "5.2.2"
+ "typescript": "5.6.2"
}
-}
+}
\ No newline at end of file
diff --git a/packages/lib/server-only/2fa/setup-2fa.ts b/packages/lib/server-only/2fa/setup-2fa.ts
index cc08510d0..b5ae47861 100644
--- a/packages/lib/server-only/2fa/setup-2fa.ts
+++ b/packages/lib/server-only/2fa/setup-2fa.ts
@@ -33,7 +33,7 @@ export const setupTwoFactorAuthentication = async ({
const accountName = user.email;
const uri = createTOTPKeyURI(ISSUER, accountName, secret);
- const encodedSecret = base32.encode(secret);
+ const encodedSecret = base32.encode(new Uint8Array(secret));
await prisma.user.update({
where: {
diff --git a/packages/lib/server-only/field/update-field.ts b/packages/lib/server-only/field/update-field.ts
index fb806ecf0..baf04bca8 100644
--- a/packages/lib/server-only/field/update-field.ts
+++ b/packages/lib/server-only/field/update-field.ts
@@ -65,11 +65,6 @@ export const updateField = async ({
},
});
- const newFieldMeta = {
- ...(oldField.fieldMeta as FieldMeta),
- ...fieldMeta,
- };
-
const field = prisma.$transaction(async (tx) => {
const updatedField = await tx.field.update({
where: {
@@ -83,7 +78,7 @@ export const updateField = async ({
positionY: pageY,
width: pageWidth,
height: pageHeight,
- fieldMeta: newFieldMeta,
+ fieldMeta,
},
include: {
recipient: true,
diff --git a/packages/lib/types/document-form-values.ts b/packages/lib/types/document-form-values.ts
new file mode 100644
index 000000000..90dc19e36
--- /dev/null
+++ b/packages/lib/types/document-form-values.ts
@@ -0,0 +1,8 @@
+import { z } from 'zod';
+
+export const ZDocumentFormValuesSchema = z.record(
+ z.string(),
+ z.union([z.string(), z.boolean(), z.number()]),
+);
+
+export type TDocumentFormValues = z.infer;
diff --git a/packages/lib/types/field-meta.ts b/packages/lib/types/field-meta.ts
index 135edc95d..5d4835b74 100644
--- a/packages/lib/types/field-meta.ts
+++ b/packages/lib/types/field-meta.ts
@@ -9,36 +9,36 @@ export const ZBaseFieldMeta = z.object({
export type TBaseFieldMeta = z.infer;
-export const ZInitialsFieldMeta = z.object({
- type: z.literal('initials').default('initials'),
+export const ZInitialsFieldMeta = ZBaseFieldMeta.extend({
+ type: z.literal('initials'),
fontSize: z.number().min(8).max(96).optional(),
});
export type TInitialsFieldMeta = z.infer;
-export const ZNameFieldMeta = z.object({
- type: z.literal('name').default('name'),
+export const ZNameFieldMeta = ZBaseFieldMeta.extend({
+ type: z.literal('name'),
fontSize: z.number().min(8).max(96).optional(),
});
export type TNameFieldMeta = z.infer;
-export const ZEmailFieldMeta = z.object({
- type: z.literal('email').default('email'),
+export const ZEmailFieldMeta = ZBaseFieldMeta.extend({
+ type: z.literal('email'),
fontSize: z.number().min(8).max(96).optional(),
});
export type TEmailFieldMeta = z.infer;
-export const ZDateFieldMeta = z.object({
- type: z.literal('date').default('date'),
+export const ZDateFieldMeta = ZBaseFieldMeta.extend({
+ type: z.literal('date'),
fontSize: z.number().min(8).max(96).optional(),
});
export type TDateFieldMeta = z.infer;
export const ZTextFieldMeta = ZBaseFieldMeta.extend({
- type: z.literal('text').default('text'),
+ type: z.literal('text'),
text: z.string().optional(),
characterLimit: z.number().optional(),
fontSize: z.number().min(8).max(96).optional(),
@@ -47,7 +47,7 @@ export const ZTextFieldMeta = ZBaseFieldMeta.extend({
export type TTextFieldMeta = z.infer;
export const ZNumberFieldMeta = ZBaseFieldMeta.extend({
- type: z.literal('number').default('number'),
+ type: z.literal('number'),
numberFormat: z.string().optional(),
value: z.string().optional(),
minValue: z.number().optional(),
@@ -58,7 +58,7 @@ export const ZNumberFieldMeta = ZBaseFieldMeta.extend({
export type TNumberFieldMeta = z.infer;
export const ZRadioFieldMeta = ZBaseFieldMeta.extend({
- type: z.literal('radio').default('radio'),
+ type: z.literal('radio'),
values: z
.array(
z.object({
@@ -73,7 +73,7 @@ export const ZRadioFieldMeta = ZBaseFieldMeta.extend({
export type TRadioFieldMeta = z.infer;
export const ZCheckboxFieldMeta = ZBaseFieldMeta.extend({
- type: z.literal('checkbox').default('checkbox'),
+ type: z.literal('checkbox'),
values: z
.array(
z.object({
@@ -90,30 +90,27 @@ export const ZCheckboxFieldMeta = ZBaseFieldMeta.extend({
export type TCheckboxFieldMeta = z.infer;
export const ZDropdownFieldMeta = ZBaseFieldMeta.extend({
- type: z.literal('dropdown').default('dropdown'),
+ type: z.literal('dropdown'),
values: z.array(z.object({ value: z.string() })).optional(),
defaultValue: z.string().optional(),
});
export type TDropdownFieldMeta = z.infer;
-/**
- * This will parse empty objects to { "type": "initials" }
- *
- * Todo: Fix.
- */
-export const ZFieldMetaSchema = z
- .union([
- ZBaseFieldMeta.extend(ZInitialsFieldMeta.shape),
- ZBaseFieldMeta.extend(ZNameFieldMeta.shape),
- ZBaseFieldMeta.extend(ZEmailFieldMeta.shape),
- ZBaseFieldMeta.extend(ZDateFieldMeta.shape),
- ZTextFieldMeta,
- ZNumberFieldMeta,
- ZRadioFieldMeta,
- ZCheckboxFieldMeta,
- ZDropdownFieldMeta,
- ])
- .optional();
+export const ZFieldMetaNotOptionalSchema = z.discriminatedUnion('type', [
+ ZInitialsFieldMeta,
+ ZNameFieldMeta,
+ ZEmailFieldMeta,
+ ZDateFieldMeta,
+ ZTextFieldMeta,
+ ZNumberFieldMeta,
+ ZRadioFieldMeta,
+ ZCheckboxFieldMeta,
+ ZDropdownFieldMeta,
+]);
+
+export type TFieldMetaNotOptionalSchema = z.infer;
+
+export const ZFieldMetaSchema = ZFieldMetaNotOptionalSchema.optional();
export type TFieldMetaSchema = z.infer;
diff --git a/packages/prisma/index.ts b/packages/prisma/index.ts
index 6851111d3..b9c1600b7 100644
--- a/packages/prisma/index.ts
+++ b/packages/prisma/index.ts
@@ -1,3 +1,4 @@
+///
import { PrismaClient } from '@prisma/client';
import { Kysely, PostgresAdapter, PostgresIntrospector, PostgresQueryCompiler } from 'kysely';
import kyselyExtension from 'prisma-extension-kysely';
diff --git a/packages/prisma/package.json b/packages/prisma/package.json
index c78e5a18c..5cc8497a6 100644
--- a/packages/prisma/package.json
+++ b/packages/prisma/package.json
@@ -30,9 +30,10 @@
"devDependencies": {
"dotenv": "^16.3.1",
"dotenv-cli": "^7.3.0",
+ "prisma-json-types-generator": "^3.2.2",
"prisma-kysely": "^1.8.0",
"tsx": "^4.11.0",
- "typescript": "5.2.2",
+ "typescript": "5.6.2",
"zod-prisma-types": "3.1.9"
}
}
\ No newline at end of file
diff --git a/packages/prisma/schema.prisma b/packages/prisma/schema.prisma
index a65692f37..013ab034e 100644
--- a/packages/prisma/schema.prisma
+++ b/packages/prisma/schema.prisma
@@ -6,6 +6,10 @@ generator client {
provider = "prisma-client-js"
}
+generator json {
+ provider = "prisma-json-types-generator"
+}
+
generator zod {
provider = "zod-prisma-types"
createInputTypes = false
@@ -297,14 +301,14 @@ enum DocumentVisibility {
ADMIN
}
-/// @zod.import(["import { ZDocumentAuthOptionsSchema } from '@documenso/lib/types/document-auth';"])
+/// @zod.import(["import { ZDocumentAuthOptionsSchema } from '@documenso/lib/types/document-auth';", "import { ZDocumentFormValuesSchema } from '@documenso/lib/types/document-form-values';"])
model Document {
id Int @id @default(autoincrement())
externalId String? /// @zod.string.describe("A custom external ID you can use to identify the document.")
userId Int /// @zod.number.describe("The ID of the user that created this document.")
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
- authOptions Json? /// Todo: zod.custom.use(ZDocumentAuthOptionsSchema.describe("Hello"))
- formValues Json?
+ authOptions Json? /// [DocumentAuthOptions] @zod.custom.use(ZDocumentAuthOptionsSchema)
+ formValues Json? /// [DocumentFormValues] @zod.custom.use(ZDocumentFormValuesSchema)
visibility DocumentVisibility @default(EVERYONE)
title String
status DocumentStatus @default(DRAFT)
@@ -373,6 +377,7 @@ enum DocumentDistributionMethod {
NONE
}
+/// @zod.import(["import { ZDocumentEmailSettingsSchema } from '@documenso/lib/types/document-email';"])
model DocumentMeta {
id String @id @default(cuid())
subject String?
@@ -387,7 +392,7 @@ model DocumentMeta {
typedSignatureEnabled Boolean @default(true)
language String @default("en")
distributionMethod DocumentDistributionMethod @default(EMAIL)
- emailSettings Json?
+ emailSettings Json? /// [DocumentEmailSettings] @zod.custom.use(ZDocumentEmailSettingsSchema)
}
enum ReadStatus {
@@ -424,7 +429,7 @@ model Recipient {
documentDeletedAt DateTime?
expired DateTime?
signedAt DateTime?
- authOptions Json? /// Todo: zod.custom.use(ZRecipientAuthOptionsSchema)
+ authOptions Json? /// [RecipientAuthOptions] @zod.custom.use(ZRecipientAuthOptionsSchema)
signingOrder Int? /// @zod.number.describe("The order in which the recipient should sign the document. Only works if the document is set to sequential signing.")
rejectionReason String?
role RecipientRole @default(SIGNER)
@@ -457,6 +462,7 @@ enum FieldType {
DROPDOWN
}
+/// @zod.import(["import { ZFieldMetaNotOptionalSchema } from '@documenso/lib/types/field-meta';"])
model Field {
id Int @id @default(autoincrement())
secondaryId String @unique @default(cuid())
@@ -475,7 +481,7 @@ model Field {
template Template? @relation(fields: [templateId], references: [id], onDelete: Cascade)
recipient Recipient @relation(fields: [recipientId], references: [id], onDelete: Cascade)
signature Signature?
- fieldMeta Json? // Todo: Fix ZFieldMetaSchema before using it here.
+ fieldMeta Json? /// [FieldMeta] @zod.custom.use(ZFieldMetaNotOptionalSchema)
@@index([documentId])
@@index([templateId])
@@ -640,6 +646,7 @@ enum TemplateType {
PRIVATE
}
+/// @zod.import(["import { ZDocumentEmailSettingsSchema } from '@documenso/lib/types/document-email';"])
model TemplateMeta {
id String @id @default(cuid())
subject String?
@@ -655,9 +662,10 @@ model TemplateMeta {
template Template @relation(fields: [templateId], references: [id], onDelete: Cascade)
redirectUrl String?
language String @default("en")
- emailSettings Json?
+ emailSettings Json? /// [DocumentEmailSettings] @zod.custom.use(ZDocumentEmailSettingsSchema)
}
+/// @zod.import(["import { ZDocumentAuthOptionsSchema } from '@documenso/lib/types/document-auth';"])
model Template {
id Int @id @default(autoincrement())
externalId String?
@@ -666,7 +674,7 @@ model Template {
userId Int
teamId Int?
visibility DocumentVisibility @default(EVERYONE)
- authOptions Json?
+ authOptions Json? /// [DocumentAuthOptions] @zod.custom.use(ZDocumentAuthOptionsSchema)
templateMeta TemplateMeta?
templateDocumentDataId String
createdAt DateTime @default(now())
diff --git a/packages/prisma/types/types.d.ts b/packages/prisma/types/types.d.ts
new file mode 100644
index 000000000..4cdd6278b
--- /dev/null
+++ b/packages/prisma/types/types.d.ts
@@ -0,0 +1,25 @@
+/* eslint-disable @typescript-eslint/no-namespace */
+import type {
+ TDocumentAuthOptions,
+ TRecipientAuthOptions,
+} from '@documenso/lib/types/document-auth';
+import type { TDocumentEmailSettings } from '@documenso/lib/types/document-email';
+import type { TDocumentFormValues } from '@documenso/lib/types/document-form-values';
+import type { TFieldMetaNotOptionalSchema } from '@documenso/lib/types/field-meta';
+
+/**
+ * Global types for Prisma.Json instances.
+ */
+declare global {
+ namespace PrismaJson {
+ type DocumentFormValues = TDocumentFormValues;
+ type DocumentAuthOptions = TDocumentAuthOptions;
+ type DocumentEmailSettings = TDocumentEmailSettings;
+
+ type RecipientAuthOptions = TRecipientAuthOptions;
+
+ type FieldMeta = TFieldMetaNotOptionalSchema;
+ }
+}
+
+export {};
diff --git a/packages/signing/helpers/update-signing-placeholder.ts b/packages/signing/helpers/update-signing-placeholder.ts
index c0c95f859..18875737d 100644
--- a/packages/signing/helpers/update-signing-placeholder.ts
+++ b/packages/signing/helpers/update-signing-placeholder.ts
@@ -26,9 +26,9 @@ export const updateSigningPlaceholder = ({ pdf }: UpdateSigningPlaceholderOption
const newByteRange = `[${byteRange.join(' ')}]`.padEnd(byteRangeSlice.length, ' ');
const updatedPdf = Buffer.concat([
- pdf.subarray(0, byteRangeStart),
- Buffer.from(newByteRange),
- pdf.subarray(byteRangeEnd + 1),
+ new Uint8Array(pdf.subarray(0, byteRangeStart)),
+ new Uint8Array(Buffer.from(newByteRange)),
+ new Uint8Array(pdf.subarray(byteRangeEnd + 1)),
]);
if (updatedPdf.length !== length) {
diff --git a/packages/signing/transports/google-cloud-hsm.ts b/packages/signing/transports/google-cloud-hsm.ts
index b327c7901..000ee80c5 100644
--- a/packages/signing/transports/google-cloud-hsm.ts
+++ b/packages/signing/transports/google-cloud-hsm.ts
@@ -23,13 +23,14 @@ export const signWithGoogleCloudHSM = async ({ pdf }: SignWithGoogleCloudHSMOpti
process.env.NEXT_PRIVATE_SIGNING_GCLOUD_APPLICATION_CREDENTIALS_CONTENTS
) {
if (!fs.existsSync(process.env.GOOGLE_APPLICATION_CREDENTIALS)) {
- fs.writeFileSync(
- process.env.GOOGLE_APPLICATION_CREDENTIALS,
+ const contents = new Uint8Array(
Buffer.from(
process.env.NEXT_PRIVATE_SIGNING_GCLOUD_APPLICATION_CREDENTIALS_CONTENTS,
'base64',
),
);
+
+ fs.writeFileSync(process.env.GOOGLE_APPLICATION_CREDENTIALS, contents);
}
}
@@ -38,8 +39,8 @@ export const signWithGoogleCloudHSM = async ({ pdf }: SignWithGoogleCloudHSMOpti
});
const pdfWithoutSignature = Buffer.concat([
- pdfWithPlaceholder.subarray(0, byteRange[1]),
- pdfWithPlaceholder.subarray(byteRange[2]),
+ new Uint8Array(pdfWithPlaceholder.subarray(0, byteRange[1])),
+ new Uint8Array(pdfWithPlaceholder.subarray(byteRange[2])),
]);
const signatureLength = byteRange[2] - byteRange[1];
@@ -70,9 +71,9 @@ export const signWithGoogleCloudHSM = async ({ pdf }: SignWithGoogleCloudHSMOpti
const signatureAsHex = signature.toString('hex');
const signedPdf = Buffer.concat([
- pdfWithPlaceholder.subarray(0, byteRange[1]),
- Buffer.from(`<${signatureAsHex.padEnd(signatureLength - 2, '0')}>`),
- pdfWithPlaceholder.subarray(byteRange[2]),
+ new Uint8Array(pdfWithPlaceholder.subarray(0, byteRange[1])),
+ new Uint8Array(Buffer.from(`<${signatureAsHex.padEnd(signatureLength - 2, '0')}>`)),
+ new Uint8Array(pdfWithPlaceholder.subarray(byteRange[2])),
]);
return signedPdf;
diff --git a/packages/signing/transports/local-cert.ts b/packages/signing/transports/local-cert.ts
index 7ed2f5f8b..6b88288b6 100644
--- a/packages/signing/transports/local-cert.ts
+++ b/packages/signing/transports/local-cert.ts
@@ -15,8 +15,8 @@ export const signWithLocalCert = async ({ pdf }: SignWithLocalCertOptions) => {
});
const pdfWithoutSignature = Buffer.concat([
- pdfWithPlaceholder.subarray(0, byteRange[1]),
- pdfWithPlaceholder.subarray(byteRange[2]),
+ new Uint8Array(pdfWithPlaceholder.subarray(0, byteRange[1])),
+ new Uint8Array(pdfWithPlaceholder.subarray(byteRange[2])),
]);
const signatureLength = byteRange[2] - byteRange[1];
@@ -51,9 +51,9 @@ export const signWithLocalCert = async ({ pdf }: SignWithLocalCertOptions) => {
const signatureAsHex = signature.toString('hex');
const signedPdf = Buffer.concat([
- pdfWithPlaceholder.subarray(0, byteRange[1]),
- Buffer.from(`<${signatureAsHex.padEnd(signatureLength - 2, '0')}>`),
- pdfWithPlaceholder.subarray(byteRange[2]),
+ new Uint8Array(pdfWithPlaceholder.subarray(0, byteRange[1])),
+ new Uint8Array(Buffer.from(`<${signatureAsHex.padEnd(signatureLength - 2, '0')}>`)),
+ new Uint8Array(pdfWithPlaceholder.subarray(byteRange[2])),
]);
return signedPdf;
diff --git a/packages/ui/package.json b/packages/ui/package.json
index 858edca87..6fe04365f 100644
--- a/packages/ui/package.json
+++ b/packages/ui/package.json
@@ -23,7 +23,7 @@
"@types/react": "^18",
"@types/react-dom": "^18",
"react": "^18",
- "typescript": "5.2.2"
+ "typescript": "5.6.2"
},
"dependencies": {
"@documenso/lib": "*",
From 9e03747e43d4898d6c5f4fa6fbaef3bd0fae6d00 Mon Sep 17 00:00:00 2001
From: David Nguyen
Date: Thu, 16 Jan 2025 13:36:00 +1100
Subject: [PATCH 12/35] feat: add create document beta endpoint (#1584)
---
.github/workflows/e2e-tests.yml | 2 +-
.../documents/data-table-action-button.tsx | 19 +-
.../documents/data-table-action-dropdown.tsx | 19 +-
.../public-profile-page-view.tsx | 2 +-
.../public-templates-data-table.tsx | 2 +-
.../templates/[id]/edit/edit-template.tsx | 4 +-
.../templates/data-table-templates.tsx | 2 +-
.../d/[token]/configure-direct-template.tsx | 4 +-
.../(recipient)/d/[token]/direct-template.tsx | 4 +-
.../d/[token]/sign-direct-template.tsx | 4 +-
.../e2e/document-flow/settings-step.spec.ts | 1 +
packages/app-tests/playwright.config.ts | 5 +-
packages/lib/constants/date-formats.ts | 19 +-
.../document/create-document-v2.ts | 248 ++++++
.../server-only/document/create-document.ts | 24 +-
.../field/create-document-fields.ts | 9 +-
.../template/create-template-direct-link.ts | 10 +-
.../template/duplicate-template.ts | 8 +-
.../server-only/template/find-templates.ts | 38 +-
.../template/get-template-by-id.ts | 32 +-
.../template/move-template-to-team.ts | 9 +-
.../template/toggle-template-direct-link.ts | 11 +-
.../server-only/template/update-template.ts | 9 +-
packages/lib/translations/de/web.po | 832 +++++++++---------
packages/lib/translations/en/web.po | 831 ++++++++---------
packages/lib/translations/es/web.po | 832 +++++++++---------
packages/lib/translations/fr/web.po | 832 +++++++++---------
packages/lib/types/field-meta.ts | 52 ++
packages/lib/types/field.ts | 21 +
packages/lib/types/template.ts | 119 +++
packages/lib/utils/document-visibility.ts | 20 +
packages/prisma/types/document-with-data.ts | 6 -
packages/prisma/types/template.ts | 9 -
.../trpc/server/document-router/router.ts | 87 +-
.../trpc/server/document-router/schema.ts | 121 ++-
packages/trpc/server/field-router/router.ts | 8 +-
packages/trpc/server/field-router/schema.ts | 51 +-
packages/trpc/server/open-api.ts | 30 +-
.../trpc/server/recipient-router/router.ts | 8 +-
.../trpc/server/recipient-router/schema.ts | 71 +-
.../trpc/server/template-router/router.ts | 66 +-
.../trpc/server/template-router/schema.ts | 44 +-
.../primitives/document-flow/add-settings.tsx | 4 +-
.../document-flow/add-settings.types.ts | 8 +-
.../primitives/document-flow/add-subject.tsx | 4 +-
.../template-flow/add-template-settings.tsx | 9 +-
.../add-template-settings.types.tsx | 8 +-
47 files changed, 2624 insertions(+), 1934 deletions(-)
create mode 100644 packages/lib/server-only/document/create-document-v2.ts
create mode 100644 packages/lib/types/template.ts
create mode 100644 packages/lib/utils/document-visibility.ts
delete mode 100644 packages/prisma/types/document-with-data.ts
delete mode 100644 packages/prisma/types/template.ts
diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml
index f4d77cd3f..4673dfca1 100644
--- a/.github/workflows/e2e-tests.yml
+++ b/.github/workflows/e2e-tests.yml
@@ -8,7 +8,7 @@ jobs:
e2e_tests:
name: 'E2E Tests'
timeout-minutes: 60
- runs-on: ubuntu-22.04
+ runs-on: warp-ubuntu-2204-x64-16x
steps:
- uses: actions/checkout@v4
diff --git a/apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx b/apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx
index 7b7fc6944..7d8f4b6a5 100644
--- a/apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx
+++ b/apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx
@@ -12,7 +12,6 @@ import { downloadPDF } from '@documenso/lib/client-only/download-pdf';
import { formatDocumentsPath } from '@documenso/lib/utils/teams';
import type { Document, Recipient, Team, User } from '@documenso/prisma/client';
import { DocumentStatus, RecipientRole, SigningStatus } from '@documenso/prisma/client';
-import type { DocumentWithData } from '@documenso/prisma/types/document-with-data';
import { trpc as trpcClient } from '@documenso/trpc/client';
import { Button } from '@documenso/ui/primitives/button';
import { useToast } from '@documenso/ui/primitives/use-toast';
@@ -50,17 +49,13 @@ export const DataTableActionButton = ({ row, team }: DataTableActionButtonProps)
const onDownloadClick = async () => {
try {
- let document: DocumentWithData | null = null;
-
- if (!recipient) {
- document = await trpcClient.document.getDocumentById.query({
- documentId: row.id,
- });
- } else {
- document = await trpcClient.document.getDocumentByToken.query({
- token: recipient.token,
- });
- }
+ const document = !recipient
+ ? await trpcClient.document.getDocumentById.query({
+ documentId: row.id,
+ })
+ : await trpcClient.document.getDocumentByToken.query({
+ token: recipient.token,
+ });
const documentData = document?.documentData;
diff --git a/apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx b/apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx
index feee3b9e8..7e46fb4bc 100644
--- a/apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx
+++ b/apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx
@@ -25,7 +25,6 @@ import { downloadPDF } from '@documenso/lib/client-only/download-pdf';
import { formatDocumentsPath } from '@documenso/lib/utils/teams';
import { DocumentStatus, RecipientRole } from '@documenso/prisma/client';
import type { Document, Recipient, Team, User } from '@documenso/prisma/client';
-import type { DocumentWithData } from '@documenso/prisma/types/document-with-data';
import { trpc as trpcClient } from '@documenso/trpc/client';
import { DocumentShareButton } from '@documenso/ui/components/document/document-share-button';
import {
@@ -81,17 +80,13 @@ export const DataTableActionDropdown = ({ row, team }: DataTableActionDropdownPr
const onDownloadClick = async () => {
try {
- let document: DocumentWithData | null = null;
-
- if (!recipient) {
- document = await trpcClient.document.getDocumentById.query({
- documentId: row.id,
- });
- } else {
- document = await trpcClient.document.getDocumentByToken.query({
- token: recipient.token,
- });
- }
+ const document = !recipient
+ ? await trpcClient.document.getDocumentById.query({
+ documentId: row.id,
+ })
+ : await trpcClient.document.getDocumentByToken.query({
+ token: recipient.token,
+ });
const documentData = document?.documentData;
diff --git a/apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx b/apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx
index fd1eea194..db53be20b 100644
--- a/apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx
+++ b/apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx
@@ -5,7 +5,6 @@ import { useEffect, useMemo, useState } from 'react';
import { Trans, msg } from '@lingui/macro';
import { useLingui } from '@lingui/react';
-import type { FindTemplateRow } from '@documenso/lib/server-only/template/find-templates';
import type {
Team,
TeamProfile,
@@ -15,6 +14,7 @@ import type {
} from '@documenso/prisma/client';
import { TemplateType } from '@documenso/prisma/client';
import { trpc } from '@documenso/trpc/react';
+import type { FindTemplateRow } from '@documenso/trpc/server/template-router/schema';
import { cn } from '@documenso/ui/lib/utils';
import { Button } from '@documenso/ui/primitives/button';
import { Switch } from '@documenso/ui/primitives/switch';
diff --git a/apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx b/apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx
index c2ceeed6d..2f8b26fb6 100644
--- a/apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx
+++ b/apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx
@@ -7,11 +7,11 @@ import { useLingui } from '@lingui/react';
import { EditIcon, FileIcon, LinkIcon, MoreHorizontalIcon, Trash2Icon } from 'lucide-react';
import { useCopyToClipboard } from '@documenso/lib/client-only/hooks/use-copy-to-clipboard';
-import type { FindTemplateRow } from '@documenso/lib/server-only/template/find-templates';
import { formatDirectTemplatePath } from '@documenso/lib/utils/templates';
import type { TemplateDirectLink } from '@documenso/prisma/client';
import { TemplateType } from '@documenso/prisma/client';
import { trpc } from '@documenso/trpc/react';
+import type { FindTemplateRow } from '@documenso/trpc/server/template-router/schema';
import {
DropdownMenu,
DropdownMenuContent,
diff --git a/apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx b/apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx
index 785518add..fc0439c00 100644
--- a/apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx
+++ b/apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx
@@ -12,7 +12,7 @@ import {
DO_NOT_INVALIDATE_QUERY_ON_MUTATION,
SKIP_QUERY_BATCH_META,
} from '@documenso/lib/constants/trpc';
-import type { TemplateWithDetails } from '@documenso/prisma/types/template';
+import type { TTemplate } from '@documenso/lib/types/template';
import { trpc } from '@documenso/trpc/react';
import { cn } from '@documenso/ui/lib/utils';
import { Card, CardContent } from '@documenso/ui/primitives/card';
@@ -32,7 +32,7 @@ import { useOptionalCurrentTeam } from '~/providers/team';
export type EditTemplateFormProps = {
className?: string;
- initialTemplate: TemplateWithDetails;
+ initialTemplate: TTemplate;
isEnterprise: boolean;
templateRootPath: string;
};
diff --git a/apps/web/src/app/(dashboard)/templates/data-table-templates.tsx b/apps/web/src/app/(dashboard)/templates/data-table-templates.tsx
index 996e08440..d198cdab5 100644
--- a/apps/web/src/app/(dashboard)/templates/data-table-templates.tsx
+++ b/apps/web/src/app/(dashboard)/templates/data-table-templates.tsx
@@ -10,7 +10,7 @@ import { AlertTriangle, Globe2Icon, InfoIcon, Link2Icon, Loader, LockIcon } from
import { useLimits } from '@documenso/ee/server-only/limits/provider/client';
import { useUpdateSearchParams } from '@documenso/lib/client-only/hooks/use-update-search-params';
-import type { FindTemplateRow } from '@documenso/lib/server-only/template/find-templates';
+import type { FindTemplateRow } from '@documenso/trpc/server/template-router/schema';
import { Alert, AlertDescription, AlertTitle } from '@documenso/ui/primitives/alert';
import type { DataTableColumnDef } from '@documenso/ui/primitives/data-table';
import { DataTable } from '@documenso/ui/primitives/data-table';
diff --git a/apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx b/apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx
index 872be93db..f9b7019f3 100644
--- a/apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx
+++ b/apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx
@@ -7,9 +7,9 @@ import { useSession } from 'next-auth/react';
import { useForm } from 'react-hook-form';
import { z } from 'zod';
+import type { TTemplate } from '@documenso/lib/types/template';
import type { Recipient } from '@documenso/prisma/client';
import type { Field } from '@documenso/prisma/client';
-import type { TemplateWithDetails } from '@documenso/prisma/types/template';
import {
DocumentFlowFormContainerActions,
DocumentFlowFormContainerContent,
@@ -41,7 +41,7 @@ export type TConfigureDirectTemplateFormSchema = z.infer;
+ template: Omit;
directTemplateRecipient: Recipient & { fields: Field[] };
initialEmail?: string;
onSubmit: (_data: TConfigureDirectTemplateFormSchema) => void;
diff --git a/apps/web/src/app/(recipient)/d/[token]/direct-template.tsx b/apps/web/src/app/(recipient)/d/[token]/direct-template.tsx
index 5eda86c7f..5a2a99e31 100644
--- a/apps/web/src/app/(recipient)/d/[token]/direct-template.tsx
+++ b/apps/web/src/app/(recipient)/d/[token]/direct-template.tsx
@@ -8,9 +8,9 @@ import { msg } from '@lingui/macro';
import { useLingui } from '@lingui/react';
import { RECIPIENT_ROLES_DESCRIPTION } from '@documenso/lib/constants/recipient-roles';
+import type { TTemplate } from '@documenso/lib/types/template';
import type { Field } from '@documenso/prisma/client';
import { type Recipient } from '@documenso/prisma/client';
-import type { TemplateWithDetails } from '@documenso/prisma/types/template';
import { trpc } from '@documenso/trpc/react';
import { Card, CardContent } from '@documenso/ui/primitives/card';
import { DocumentFlowFormContainer } from '@documenso/ui/primitives/document-flow/document-flow-root';
@@ -28,7 +28,7 @@ import type { DirectTemplateLocalField } from './sign-direct-template';
import { SignDirectTemplateForm } from './sign-direct-template';
export type TemplatesDirectPageViewProps = {
- template: Omit;
+ template: Omit;
directTemplateToken: string;
directTemplateRecipient: Recipient & { fields: Field[] };
};
diff --git a/apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx b/apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx
index 965b1bb66..9e379ab41 100644
--- a/apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx
+++ b/apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx
@@ -14,10 +14,10 @@ import {
ZRadioFieldMeta,
ZTextFieldMeta,
} from '@documenso/lib/types/field-meta';
+import type { TTemplate } from '@documenso/lib/types/template';
import { sortFieldsByPosition, validateFieldsInserted } from '@documenso/lib/utils/fields';
import type { Field, Recipient, Signature } from '@documenso/prisma/client';
import { FieldType } from '@documenso/prisma/client';
-import type { TemplateWithDetails } from '@documenso/prisma/types/template';
import type {
TRemovedSignedFieldWithTokenMutationSchema,
TSignFieldWithTokenMutationSchema,
@@ -55,7 +55,7 @@ export type SignDirectTemplateFormProps = {
flowStep: DocumentFlowStep;
directRecipient: Recipient;
directRecipientFields: Field[];
- template: Omit;
+ template: Omit;
onSubmit: (_data: DirectTemplateLocalField[]) => Promise;
};
diff --git a/packages/app-tests/e2e/document-flow/settings-step.spec.ts b/packages/app-tests/e2e/document-flow/settings-step.spec.ts
index 49d8de1f5..10860db21 100644
--- a/packages/app-tests/e2e/document-flow/settings-step.spec.ts
+++ b/packages/app-tests/e2e/document-flow/settings-step.spec.ts
@@ -151,6 +151,7 @@ test('[DOCUMENT_FLOW]: add settings', async ({ page }) => {
await expect(page.getByTestId('documentActionSelectValue')).not.toBeVisible();
// Save the settings by going to the next step.
+
await page.getByRole('button', { name: 'Continue' }).click();
await expect(page.getByRole('heading', { name: 'Add Signers' })).toBeVisible();
diff --git a/packages/app-tests/playwright.config.ts b/packages/app-tests/playwright.config.ts
index 725f4bb04..e10d368fd 100644
--- a/packages/app-tests/playwright.config.ts
+++ b/packages/app-tests/playwright.config.ts
@@ -41,7 +41,10 @@ export default defineConfig({
projects: [
{
name: 'chromium',
- use: { ...devices['Desktop Chrome'] },
+ use: {
+ ...devices['Desktop Chrome'],
+ viewport: { width: 1920, height: 1080 },
+ },
},
// {
diff --git a/packages/lib/constants/date-formats.ts b/packages/lib/constants/date-formats.ts
index 6b0dd69c5..f723f2b3b 100644
--- a/packages/lib/constants/date-formats.ts
+++ b/packages/lib/constants/date-formats.ts
@@ -4,6 +4,19 @@ import { DEFAULT_DOCUMENT_TIME_ZONE } from './time-zones';
export const DEFAULT_DOCUMENT_DATE_FORMAT = 'yyyy-MM-dd hh:mm a';
+export const VALID_DATE_FORMAT_VALUES = [
+ DEFAULT_DOCUMENT_DATE_FORMAT,
+ 'yyyy-MM-dd',
+ 'dd/MM/yyyy hh:mm a',
+ 'MM/dd/yyyy hh:mm a',
+ 'yyyy-MM-dd HH:mm',
+ 'yy-MM-dd hh:mm a',
+ 'yyyy-MM-dd HH:mm:ss',
+ 'MMMM dd, yyyy hh:mm a',
+ 'EEEE, MMMM dd, yyyy hh:mm a',
+ "yyyy-MM-dd'T'HH:mm:ss.SSSXXX",
+] as const;
+
export const DATE_FORMATS = [
{
key: 'yyyy-MM-dd_hh:mm_a',
@@ -55,7 +68,11 @@ export const DATE_FORMATS = [
label: 'ISO 8601',
value: "yyyy-MM-dd'T'HH:mm:ss.SSSXXX",
},
-];
+] satisfies {
+ key: string;
+ label: string;
+ value: (typeof VALID_DATE_FORMAT_VALUES)[number];
+}[];
export const convertToLocalSystemFormat = (
customText: string,
diff --git a/packages/lib/server-only/document/create-document-v2.ts b/packages/lib/server-only/document/create-document-v2.ts
new file mode 100644
index 000000000..222e23445
--- /dev/null
+++ b/packages/lib/server-only/document/create-document-v2.ts
@@ -0,0 +1,248 @@
+import { isUserEnterprise } from '@documenso/ee/server-only/util/is-document-enterprise';
+import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
+import { normalizePdf as makeNormalizedPdf } from '@documenso/lib/server-only/pdf/normalize-pdf';
+import { DOCUMENT_AUDIT_LOG_TYPE } from '@documenso/lib/types/document-audit-logs';
+import type { ApiRequestMetadata } from '@documenso/lib/universal/extract-request-metadata';
+import { nanoid } from '@documenso/lib/universal/id';
+import { createDocumentAuditLogData } from '@documenso/lib/utils/document-audit-logs';
+import { prisma } from '@documenso/prisma';
+import type { DocumentVisibility, TemplateMeta } from '@documenso/prisma/client';
+import {
+ DocumentSource,
+ RecipientRole,
+ SendStatus,
+ SigningStatus,
+ WebhookTriggerEvents,
+} from '@documenso/prisma/client';
+import { TeamMemberRole } from '@documenso/prisma/client';
+import type { TCreateDocumentV2Request } from '@documenso/trpc/server/document-router/schema';
+
+import type { TDocumentAccessAuthTypes, TDocumentActionAuthTypes } from '../../types/document-auth';
+import type { TDocumentFormValues } from '../../types/document-form-values';
+import {
+ ZWebhookDocumentSchema,
+ mapDocumentToWebhookDocumentPayload,
+} from '../../types/webhook-payload';
+import { getFile } from '../../universal/upload/get-file';
+import { putPdfFile } from '../../universal/upload/put-file';
+import { createDocumentAuthOptions, createRecipientAuthOptions } from '../../utils/document-auth';
+import { determineDocumentVisibility } from '../../utils/document-visibility';
+import { triggerWebhook } from '../webhooks/trigger/trigger-webhook';
+
+export type CreateDocumentOptions = {
+ userId: number;
+ teamId?: number;
+ documentDataId: string;
+ normalizePdf?: boolean;
+ data: {
+ title: string;
+ externalId?: string;
+ visibility?: DocumentVisibility;
+ globalAccessAuth?: TDocumentAccessAuthTypes;
+ globalActionAuth?: TDocumentActionAuthTypes;
+ formValues?: TDocumentFormValues;
+ recipients: TCreateDocumentV2Request['recipients'];
+ };
+ meta?: Partial>;
+ requestMetadata: ApiRequestMetadata;
+};
+
+export const createDocumentV2 = async ({
+ userId,
+ teamId,
+ documentDataId,
+ normalizePdf,
+ data,
+ meta,
+ requestMetadata,
+}: CreateDocumentOptions) => {
+ const { title, formValues } = data;
+
+ const team = teamId
+ ? await prisma.team.findFirst({
+ where: {
+ id: teamId,
+ members: {
+ some: {
+ userId,
+ },
+ },
+ },
+ include: {
+ teamGlobalSettings: true,
+ members: {
+ where: {
+ userId: userId,
+ },
+ select: {
+ role: true,
+ },
+ },
+ },
+ })
+ : null;
+
+ if (teamId !== undefined && !team) {
+ throw new AppError(AppErrorCode.NOT_FOUND, {
+ message: 'Team not found',
+ });
+ }
+
+ if (normalizePdf) {
+ const documentData = await prisma.documentData.findFirst({
+ where: {
+ id: documentDataId,
+ },
+ });
+
+ if (documentData) {
+ const buffer = await getFile(documentData);
+
+ const normalizedPdf = await makeNormalizedPdf(Buffer.from(buffer));
+
+ const newDocumentData = await putPdfFile({
+ name: title.endsWith('.pdf') ? title : `${title}.pdf`,
+ type: 'application/pdf',
+ arrayBuffer: async () => Promise.resolve(normalizedPdf),
+ });
+
+ // eslint-disable-next-line require-atomic-updates
+ documentDataId = newDocumentData.id;
+ }
+ }
+
+ const authOptions = createDocumentAuthOptions({
+ globalAccessAuth: data?.globalAccessAuth || null,
+ globalActionAuth: data?.globalActionAuth || null,
+ });
+
+ const recipientsHaveActionAuth = data.recipients?.some((recipient) => recipient.actionAuth);
+
+ // Check if user has permission to set the global action auth.
+ if (authOptions.globalActionAuth || recipientsHaveActionAuth) {
+ const isDocumentEnterprise = await isUserEnterprise({
+ userId,
+ teamId,
+ });
+
+ if (!isDocumentEnterprise) {
+ throw new AppError(AppErrorCode.UNAUTHORIZED, {
+ message: 'You do not have permission to set the action auth',
+ });
+ }
+ }
+
+ const visibility = determineDocumentVisibility(
+ team?.teamGlobalSettings?.documentVisibility,
+ team?.members[0].role ?? TeamMemberRole.MEMBER,
+ );
+
+ return await prisma.$transaction(async (tx) => {
+ const document = await tx.document.create({
+ data: {
+ title,
+ externalId: data.externalId,
+ documentDataId,
+ userId,
+ teamId,
+ authOptions,
+ visibility,
+ formValues,
+ source: DocumentSource.DOCUMENT,
+ documentMeta: {
+ create: {
+ ...meta,
+ signingOrder: meta?.signingOrder || undefined,
+ emailSettings: meta?.emailSettings || undefined,
+ language: meta?.language || team?.teamGlobalSettings?.documentLanguage,
+ typedSignatureEnabled:
+ meta?.typedSignatureEnabled ?? team?.teamGlobalSettings?.typedSignatureEnabled,
+ },
+ },
+ },
+ });
+
+ await Promise.all(
+ (data.recipients || []).map(async (recipient) => {
+ const recipientAuthOptions = createRecipientAuthOptions({
+ accessAuth: recipient.accessAuth || null,
+ actionAuth: recipient.actionAuth || null,
+ });
+
+ await tx.recipient.create({
+ data: {
+ documentId: document.id,
+ name: recipient.name,
+ email: recipient.email,
+ role: recipient.role,
+ signingOrder: recipient.signingOrder,
+ token: nanoid(),
+ sendStatus: recipient.role === RecipientRole.CC ? SendStatus.SENT : SendStatus.NOT_SENT,
+ signingStatus:
+ recipient.role === RecipientRole.CC ? SigningStatus.SIGNED : SigningStatus.NOT_SIGNED,
+ authOptions: recipientAuthOptions,
+ fields: {
+ createMany: {
+ data: (recipient.fields || []).map((field) => ({
+ documentId: document.id,
+ type: field.type,
+ page: field.pageNumber,
+ positionX: field.pageX,
+ positionY: field.pageY,
+ width: field.width,
+ height: field.height,
+ customText: '',
+ inserted: false,
+ fieldMeta: field.fieldMeta,
+ })),
+ },
+ },
+ },
+ });
+ }),
+ );
+
+ // Todo: Is it necessary to create a full audit log with all fields and recipients audit logs?
+
+ await tx.documentAuditLog.create({
+ data: createDocumentAuditLogData({
+ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_CREATED,
+ documentId: document.id,
+ metadata: requestMetadata,
+ data: {
+ title,
+ source: {
+ type: DocumentSource.DOCUMENT,
+ },
+ },
+ }),
+ });
+
+ const createdDocument = await tx.document.findFirst({
+ where: {
+ id: document.id,
+ },
+ include: {
+ documentData: true,
+ documentMeta: true,
+ recipients: true,
+ fields: true,
+ },
+ });
+
+ if (!createdDocument) {
+ throw new AppError(AppErrorCode.NOT_FOUND, {
+ message: 'Document not found',
+ });
+ }
+
+ await triggerWebhook({
+ event: WebhookTriggerEvents.DOCUMENT_CREATED,
+ data: ZWebhookDocumentSchema.parse(mapDocumentToWebhookDocumentPayload(createdDocument)),
+ userId,
+ teamId,
+ });
+
+ return createdDocument;
+ });
+};
diff --git a/packages/lib/server-only/document/create-document.ts b/packages/lib/server-only/document/create-document.ts
index 3879427a2..5912d7314 100644
--- a/packages/lib/server-only/document/create-document.ts
+++ b/packages/lib/server-only/document/create-document.ts
@@ -6,7 +6,7 @@ import { DOCUMENT_AUDIT_LOG_TYPE } from '@documenso/lib/types/document-audit-log
import type { ApiRequestMetadata } from '@documenso/lib/universal/extract-request-metadata';
import { createDocumentAuditLogData } from '@documenso/lib/utils/document-audit-logs';
import { prisma } from '@documenso/prisma';
-import { DocumentSource, DocumentVisibility, WebhookTriggerEvents } from '@documenso/prisma/client';
+import { DocumentSource, WebhookTriggerEvents } from '@documenso/prisma/client';
import type { Team, TeamGlobalSettings } from '@documenso/prisma/client';
import { TeamMemberRole } from '@documenso/prisma/client';
@@ -16,6 +16,7 @@ import {
} from '../../types/webhook-payload';
import { getFile } from '../../universal/upload/get-file';
import { putPdfFile } from '../../universal/upload/put-file';
+import { determineDocumentVisibility } from '../../utils/document-visibility';
import { triggerWebhook } from '../webhooks/trigger/trigger-webhook';
export type CreateDocumentOptions = {
@@ -88,25 +89,6 @@ export const createDocument = async ({
userTeamRole = teamWithUserRole.members[0]?.role;
}
- const determineVisibility = (
- globalVisibility: DocumentVisibility | null | undefined,
- userRole: TeamMemberRole,
- ): DocumentVisibility => {
- if (globalVisibility) {
- return globalVisibility;
- }
-
- if (userRole === TeamMemberRole.ADMIN) {
- return DocumentVisibility.ADMIN;
- }
-
- if (userRole === TeamMemberRole.MANAGER) {
- return DocumentVisibility.MANAGER_AND_ABOVE;
- }
-
- return DocumentVisibility.EVERYONE;
- };
-
if (normalizePdf) {
const documentData = await prisma.documentData.findFirst({
where: {
@@ -138,7 +120,7 @@ export const createDocument = async ({
documentDataId,
userId,
teamId,
- visibility: determineVisibility(
+ visibility: determineDocumentVisibility(
team?.teamGlobalSettings?.documentVisibility,
userTeamRole ?? TeamMemberRole.MEMBER,
),
diff --git a/packages/lib/server-only/field/create-document-fields.ts b/packages/lib/server-only/field/create-document-fields.ts
index dacf29613..dfe68f448 100644
--- a/packages/lib/server-only/field/create-document-fields.ts
+++ b/packages/lib/server-only/field/create-document-fields.ts
@@ -1,9 +1,8 @@
import { DOCUMENT_AUDIT_LOG_TYPE } from '@documenso/lib/types/document-audit-logs';
-import type { TFieldMetaSchema } from '@documenso/lib/types/field-meta';
+import type { TFieldAndMeta } from '@documenso/lib/types/field-meta';
import type { ApiRequestMetadata } from '@documenso/lib/universal/extract-request-metadata';
import { createDocumentAuditLogData } from '@documenso/lib/utils/document-audit-logs';
import { prisma } from '@documenso/prisma';
-import type { FieldType } from '@documenso/prisma/client';
import { AppError, AppErrorCode } from '../../errors/app-error';
import { canRecipientFieldsBeModified } from '../../utils/recipients';
@@ -12,16 +11,14 @@ export interface CreateDocumentFieldsOptions {
userId: number;
teamId?: number;
documentId: number;
- fields: {
+ fields: (TFieldAndMeta & {
recipientId: number;
- type: FieldType;
pageNumber: number;
pageX: number;
pageY: number;
width: number;
height: number;
- fieldMeta?: TFieldMetaSchema;
- }[];
+ })[];
requestMetadata: ApiRequestMetadata;
}
diff --git a/packages/lib/server-only/template/create-template-direct-link.ts b/packages/lib/server-only/template/create-template-direct-link.ts
index 0c1c35a99..ae3220948 100644
--- a/packages/lib/server-only/template/create-template-direct-link.ts
+++ b/packages/lib/server-only/template/create-template-direct-link.ts
@@ -1,7 +1,6 @@
'use server';
import { nanoid } from 'nanoid';
-import type { z } from 'zod';
import {
DIRECT_TEMPLATE_RECIPIENT_EMAIL,
@@ -9,7 +8,6 @@ import {
} from '@documenso/lib/constants/direct-templates';
import { prisma } from '@documenso/prisma';
import type { Recipient } from '@documenso/prisma/client';
-import { TemplateDirectLinkSchema } from '@documenso/prisma/generated/zod';
import { AppError, AppErrorCode } from '../../errors/app-error';
@@ -20,18 +18,12 @@ export type CreateTemplateDirectLinkOptions = {
directRecipientId?: number;
};
-export const ZCreateTemplateDirectLinkResponseSchema = TemplateDirectLinkSchema;
-
-export type TCreateTemplateDirectLinkResponse = z.infer<
- typeof ZCreateTemplateDirectLinkResponseSchema
->;
-
export const createTemplateDirectLink = async ({
templateId,
userId,
teamId,
directRecipientId,
-}: CreateTemplateDirectLinkOptions): Promise => {
+}: CreateTemplateDirectLinkOptions) => {
const template = await prisma.template.findFirst({
where: {
id: templateId,
diff --git a/packages/lib/server-only/template/duplicate-template.ts b/packages/lib/server-only/template/duplicate-template.ts
index 04cb80c51..374dee8de 100644
--- a/packages/lib/server-only/template/duplicate-template.ts
+++ b/packages/lib/server-only/template/duplicate-template.ts
@@ -1,10 +1,8 @@
import { omit } from 'remeda';
-import type { z } from 'zod';
import { nanoid } from '@documenso/lib/universal/id';
import { prisma } from '@documenso/prisma';
import type { Prisma } from '@documenso/prisma/client';
-import { TemplateSchema } from '@documenso/prisma/generated/zod';
import type { TDuplicateTemplateMutationSchema } from '@documenso/trpc/server/template-router/schema';
export type DuplicateTemplateOptions = TDuplicateTemplateMutationSchema & {
@@ -12,15 +10,11 @@ export type DuplicateTemplateOptions = TDuplicateTemplateMutationSchema & {
teamId?: number;
};
-export const ZDuplicateTemplateResponseSchema = TemplateSchema;
-
-export type TDuplicateTemplateResponse = z.infer;
-
export const duplicateTemplate = async ({
templateId,
userId,
teamId,
-}: DuplicateTemplateOptions): Promise => {
+}: DuplicateTemplateOptions) => {
const template = await prisma.template.findUnique({
where: {
id: templateId,
diff --git a/packages/lib/server-only/template/find-templates.ts b/packages/lib/server-only/template/find-templates.ts
index d1306d9cd..eae56742a 100644
--- a/packages/lib/server-only/template/find-templates.ts
+++ b/packages/lib/server-only/template/find-templates.ts
@@ -1,5 +1,4 @@
import { match } from 'ts-pattern';
-import type { z } from 'zod';
import { prisma } from '@documenso/prisma';
import {
@@ -8,18 +7,9 @@ import {
TeamMemberRole,
type Template,
} from '@documenso/prisma/client';
-import {
- DocumentDataSchema,
- FieldSchema,
- RecipientSchema,
- TeamSchema,
- TemplateDirectLinkSchema,
- TemplateMetaSchema,
- TemplateSchema,
-} from '@documenso/prisma/generated/zod';
import { AppError, AppErrorCode } from '../../errors/app-error';
-import { type FindResultResponse, ZFindResultResponse } from '../../types/search-params';
+import { type FindResultResponse } from '../../types/search-params';
export type FindTemplatesOptions = {
userId: number;
@@ -29,36 +19,13 @@ export type FindTemplatesOptions = {
perPage?: number;
};
-export const ZFindTemplatesResponseSchema = ZFindResultResponse.extend({
- data: TemplateSchema.extend({
- templateDocumentData: DocumentDataSchema,
- team: TeamSchema.pick({
- id: true,
- url: true,
- }).nullable(),
- fields: FieldSchema.array(),
- recipients: RecipientSchema.array(),
- templateMeta: TemplateMetaSchema.pick({
- signingOrder: true,
- distributionMethod: true,
- }).nullable(),
- directLink: TemplateDirectLinkSchema.pick({
- token: true,
- enabled: true,
- }).nullable(),
- }).array(), // Todo: openapi.
-});
-
-export type TFindTemplatesResponse = z.infer;
-export type FindTemplateRow = TFindTemplatesResponse['data'][number];
-
export const findTemplates = async ({
userId,
teamId,
type,
page = 1,
perPage = 10,
-}: FindTemplatesOptions): Promise => {
+}: FindTemplatesOptions) => {
const whereFilter: Prisma.TemplateWhereInput[] = [];
if (teamId === undefined) {
@@ -112,7 +79,6 @@ export const findTemplates = async ({
AND: whereFilter,
},
include: {
- templateDocumentData: true,
team: {
select: {
id: true,
diff --git a/packages/lib/server-only/template/get-template-by-id.ts b/packages/lib/server-only/template/get-template-by-id.ts
index fb9d5c095..e978d75bb 100644
--- a/packages/lib/server-only/template/get-template-by-id.ts
+++ b/packages/lib/server-only/template/get-template-by-id.ts
@@ -1,15 +1,4 @@
-import type { z } from 'zod';
-
import { prisma } from '@documenso/prisma';
-import {
- DocumentDataSchema,
- FieldSchema,
- RecipientSchema,
- TemplateDirectLinkSchema,
- TemplateMetaSchema,
- TemplateSchema,
- UserSchema,
-} from '@documenso/prisma/generated/zod';
import { AppError, AppErrorCode } from '../../errors/app-error';
@@ -19,26 +8,7 @@ export type GetTemplateByIdOptions = {
teamId?: number;
};
-export const ZGetTemplateByIdResponseSchema = TemplateSchema.extend({
- directLink: TemplateDirectLinkSchema.nullable(),
- templateDocumentData: DocumentDataSchema,
- templateMeta: TemplateMetaSchema.nullable(),
- recipients: RecipientSchema.array(),
- fields: FieldSchema.array(),
- user: UserSchema.pick({
- id: true,
- name: true,
- email: true,
- }),
-});
-
-export type TGetTemplateByIdResponse = z.infer;
-
-export const getTemplateById = async ({
- id,
- userId,
- teamId,
-}: GetTemplateByIdOptions): Promise => {
+export const getTemplateById = async ({ id, userId, teamId }: GetTemplateByIdOptions) => {
const template = await prisma.template.findFirst({
where: {
id,
diff --git a/packages/lib/server-only/template/move-template-to-team.ts b/packages/lib/server-only/template/move-template-to-team.ts
index 9dae002a1..e43382389 100644
--- a/packages/lib/server-only/template/move-template-to-team.ts
+++ b/packages/lib/server-only/template/move-template-to-team.ts
@@ -1,7 +1,4 @@
-import type { z } from 'zod';
-
import { prisma } from '@documenso/prisma';
-import { TemplateSchema } from '@documenso/prisma/generated/zod';
import { AppError, AppErrorCode } from '../../errors/app-error';
@@ -11,15 +8,11 @@ export type MoveTemplateToTeamOptions = {
userId: number;
};
-export const ZMoveTemplateToTeamResponseSchema = TemplateSchema;
-
-export type TMoveTemplateToTeamResponse = z.infer;
-
export const moveTemplateToTeam = async ({
templateId,
teamId,
userId,
-}: MoveTemplateToTeamOptions): Promise => {
+}: MoveTemplateToTeamOptions) => {
return await prisma.$transaction(async (tx) => {
const template = await tx.template.findFirst({
where: {
diff --git a/packages/lib/server-only/template/toggle-template-direct-link.ts b/packages/lib/server-only/template/toggle-template-direct-link.ts
index bedf63380..aa9daa461 100644
--- a/packages/lib/server-only/template/toggle-template-direct-link.ts
+++ b/packages/lib/server-only/template/toggle-template-direct-link.ts
@@ -1,9 +1,6 @@
'use server';
-import type { z } from 'zod';
-
import { prisma } from '@documenso/prisma';
-import { TemplateDirectLinkSchema } from '@documenso/prisma/generated/zod';
import { AppError, AppErrorCode } from '../../errors/app-error';
@@ -14,18 +11,12 @@ export type ToggleTemplateDirectLinkOptions = {
enabled: boolean;
};
-export const ZToggleTemplateDirectLinkResponseSchema = TemplateDirectLinkSchema;
-
-export type TToggleTemplateDirectLinkResponse = z.infer<
- typeof ZToggleTemplateDirectLinkResponseSchema
->;
-
export const toggleTemplateDirectLink = async ({
templateId,
userId,
teamId,
enabled,
-}: ToggleTemplateDirectLinkOptions): Promise => {
+}: ToggleTemplateDirectLinkOptions) => {
const template = await prisma.template.findFirst({
where: {
id: templateId,
diff --git a/packages/lib/server-only/template/update-template.ts b/packages/lib/server-only/template/update-template.ts
index f425dc786..465d64702 100644
--- a/packages/lib/server-only/template/update-template.ts
+++ b/packages/lib/server-only/template/update-template.ts
@@ -1,11 +1,8 @@
'use server';
-import type { z } from 'zod';
-
import { isUserEnterprise } from '@documenso/ee/server-only/util/is-document-enterprise';
import { prisma } from '@documenso/prisma';
import type { DocumentVisibility, Template, TemplateMeta } from '@documenso/prisma/client';
-import { TemplateSchema } from '@documenso/prisma/generated/zod';
import { AppError, AppErrorCode } from '../../errors/app-error';
import type { TDocumentAccessAuthTypes, TDocumentActionAuthTypes } from '../../types/document-auth';
@@ -28,17 +25,13 @@ export type UpdateTemplateOptions = {
meta?: Partial>;
};
-export const ZUpdateTemplateResponseSchema = TemplateSchema;
-
-export type TUpdateTemplateResponse = z.infer;
-
export const updateTemplate = async ({
userId,
teamId,
templateId,
meta = {},
data = {},
-}: UpdateTemplateOptions): Promise => {
+}: UpdateTemplateOptions) => {
const template = await prisma.template.findFirstOrThrow({
where: {
id: templateId,
diff --git a/packages/lib/translations/de/web.po b/packages/lib/translations/de/web.po
index 2408f10cb..40416c29c 100644
--- a/packages/lib/translations/de/web.po
+++ b/packages/lib/translations/de/web.po
@@ -38,7 +38,7 @@ msgstr "„{documentName}“ wurde unterschrieben"
msgid "“{documentName}” was signed by all signers"
msgstr "„{documentName}“ wurde von allen Unterzeichnern signiert"
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:62
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:61
msgid "\"{documentTitle}\" has been successfully deleted"
msgstr "\"{documentTitle}\" wurde erfolgreich gelöscht"
@@ -51,7 +51,7 @@ msgid "{0, plural, one {(1 character over)} other {(# characters over)}}"
msgstr "{0, plural, one {(1 Zeichen über dem Limit)} other {(# Zeichen über dem Limit)}}"
#: apps/web/src/components/forms/public-profile-form.tsx:237
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:395
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:393
msgid "{0, plural, one {# character over the limit} other {# characters over the limit}}"
msgstr "{0, plural, one {# Zeichen über dem Limit} other {# Zeichen über dem Limit}}"
@@ -76,7 +76,7 @@ msgstr "{0, plural, one {1 passendes Feld} other {# passende Felder}}"
msgid "{0, plural, one {1 Recipient} other {# Recipients}}"
msgstr "{0, plural, one {1 Empfänger} other {# Empfänger}}"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:238
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:239
msgid "{0, plural, one {Waiting on 1 recipient} other {Waiting on # recipients}}"
msgstr "{0, plural, one {Warte auf 1 Empfänger} other {Warte auf # Empfänger}}"
@@ -88,7 +88,7 @@ msgstr "{0, plural, zero {Werte auswählen} other {# ausgewählt...}}"
msgid "{0}"
msgstr "{0}"
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:249
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:247
msgid "{0} direct signing templates"
msgstr "{0} direkte Signaturvorlagen"
@@ -108,7 +108,7 @@ msgstr "{0} ist dem Team {teamName} bei Documenso beigetreten"
msgid "{0} left the team {teamName} on Documenso"
msgstr "{0} hat das Team {teamName} bei Documenso verlassen"
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:151
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:150
msgid "{0} of {1} documents remaining this month."
msgstr "{0} von {1} Dokumenten verbleibend in diesem Monat."
@@ -121,7 +121,7 @@ msgstr "{0} von {1} Zeile(n) ausgewählt."
msgid "{0} on behalf of \"{1}\" has invited you to {recipientActionVerb} the document \"{2}\"."
msgstr "{0} im Namen von \"{1}\" hat Sie eingeladen, das Dokument \"{2}\" {recipientActionVerb}."
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:173
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:174
msgid "{0} Recipient(s)"
msgstr "{0} Empfänger(in)"
@@ -181,87 +181,87 @@ msgstr "{memberEmail} hat das folgende Team verlassen"
msgid "{numberOfSeats, plural, one {# member} other {# members}}"
msgstr "{numberOfSeats, plural, one {# Mitglied} other {# Mitglieder}}"
-#: packages/lib/utils/document-audit-logs.ts:263
+#: packages/lib/utils/document-audit-logs.ts:279
msgid "{prefix} added a field"
msgstr "{prefix} hat ein Feld hinzugefügt"
-#: packages/lib/utils/document-audit-logs.ts:275
+#: packages/lib/utils/document-audit-logs.ts:291
msgid "{prefix} added a recipient"
msgstr "{prefix} hat einen Empfänger hinzugefügt"
-#: packages/lib/utils/document-audit-logs.ts:287
+#: packages/lib/utils/document-audit-logs.ts:303
msgid "{prefix} created the document"
msgstr "{prefix} hat das Dokument erstellt"
-#: packages/lib/utils/document-audit-logs.ts:291
+#: packages/lib/utils/document-audit-logs.ts:307
msgid "{prefix} deleted the document"
msgstr "{prefix} hat das Dokument gelöscht"
-#: packages/lib/utils/document-audit-logs.ts:335
+#: packages/lib/utils/document-audit-logs.ts:351
msgid "{prefix} moved the document to team"
msgstr "{prefix} hat das Dokument ins Team verschoben"
-#: packages/lib/utils/document-audit-logs.ts:319
+#: packages/lib/utils/document-audit-logs.ts:335
msgid "{prefix} opened the document"
msgstr "{prefix} hat das Dokument geöffnet"
-#: packages/lib/utils/document-audit-logs.ts:267
+#: packages/lib/utils/document-audit-logs.ts:283
msgid "{prefix} removed a field"
msgstr "{prefix} hat ein Feld entfernt"
-#: packages/lib/utils/document-audit-logs.ts:279
+#: packages/lib/utils/document-audit-logs.ts:295
msgid "{prefix} removed a recipient"
msgstr "{prefix} hat einen Empfänger entfernt"
-#: packages/lib/utils/document-audit-logs.ts:365
+#: packages/lib/utils/document-audit-logs.ts:381
msgid "{prefix} resent an email to {0}"
msgstr "{prefix} hat eine E-Mail an {0} erneut gesendet"
-#: packages/lib/utils/document-audit-logs.ts:366
+#: packages/lib/utils/document-audit-logs.ts:382
msgid "{prefix} sent an email to {0}"
msgstr "{prefix} hat eine E-Mail an {0} gesendet"
-#: packages/lib/utils/document-audit-logs.ts:331
+#: packages/lib/utils/document-audit-logs.ts:347
msgid "{prefix} sent the document"
msgstr "{prefix} hat das Dokument gesendet"
-#: packages/lib/utils/document-audit-logs.ts:295
+#: packages/lib/utils/document-audit-logs.ts:311
msgid "{prefix} signed a field"
msgstr "{prefix} hat ein Feld unterschrieben"
-#: packages/lib/utils/document-audit-logs.ts:299
+#: packages/lib/utils/document-audit-logs.ts:315
msgid "{prefix} unsigned a field"
msgstr "{prefix} hat ein Feld ungültig gemacht"
-#: packages/lib/utils/document-audit-logs.ts:271
+#: packages/lib/utils/document-audit-logs.ts:287
msgid "{prefix} updated a field"
msgstr "{prefix} hat ein Feld aktualisiert"
-#: packages/lib/utils/document-audit-logs.ts:283
+#: packages/lib/utils/document-audit-logs.ts:299
msgid "{prefix} updated a recipient"
msgstr "{prefix} hat einen Empfänger aktualisiert"
-#: packages/lib/utils/document-audit-logs.ts:315
+#: packages/lib/utils/document-audit-logs.ts:331
msgid "{prefix} updated the document"
msgstr "{prefix} hat das Dokument aktualisiert"
-#: packages/lib/utils/document-audit-logs.ts:307
+#: packages/lib/utils/document-audit-logs.ts:323
msgid "{prefix} updated the document access auth requirements"
msgstr "{prefix} hat die Anforderungen an die Dokumentenzugriffsautorisierung aktualisiert"
-#: packages/lib/utils/document-audit-logs.ts:327
+#: packages/lib/utils/document-audit-logs.ts:343
msgid "{prefix} updated the document external ID"
msgstr "{prefix} hat die externe ID des Dokuments aktualisiert"
-#: packages/lib/utils/document-audit-logs.ts:311
+#: packages/lib/utils/document-audit-logs.ts:327
msgid "{prefix} updated the document signing auth requirements"
msgstr "{prefix} hat die Authentifizierungsanforderungen für die Dokumentenunterzeichnung aktualisiert"
-#: packages/lib/utils/document-audit-logs.ts:323
+#: packages/lib/utils/document-audit-logs.ts:339
msgid "{prefix} updated the document title"
msgstr "{prefix} hat den Titel des Dokuments aktualisiert"
-#: packages/lib/utils/document-audit-logs.ts:303
+#: packages/lib/utils/document-audit-logs.ts:319
msgid "{prefix} updated the document visibility"
msgstr "{prefix} hat die Sichtbarkeit des Dokuments aktualisiert"
@@ -298,7 +298,7 @@ msgid "{recipientReference} has signed {documentName}"
msgstr "{recipientReference} hat {documentName} unterschrieben"
#: apps/web/src/components/forms/public-profile-form.tsx:231
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:389
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:387
msgid "{remaningLength, plural, one {# character remaining} other {# characters remaining}}"
msgstr "{remaningLength, plural, one {# Zeichen verbleibend} other {# Zeichen verbleibend}}"
@@ -318,27 +318,27 @@ msgstr "{teamName} hat Sie eingeladen, {action} {documentName}"
msgid "{teamName} ownership transfer request"
msgstr "Anfrage zur Übertragung des Eigentums von {teamName}"
-#: packages/lib/utils/document-audit-logs.ts:343
+#: packages/lib/utils/document-audit-logs.ts:359
msgid "{userName} approved the document"
msgstr "{userName} hat das Dokument genehmigt"
-#: packages/lib/utils/document-audit-logs.ts:344
+#: packages/lib/utils/document-audit-logs.ts:360
msgid "{userName} CC'd the document"
msgstr "{userName} hat das Dokument in CC gesetzt"
-#: packages/lib/utils/document-audit-logs.ts:345
+#: packages/lib/utils/document-audit-logs.ts:361
msgid "{userName} completed their task"
msgstr "{userName} hat ihre Aufgabe abgeschlossen"
-#: packages/lib/utils/document-audit-logs.ts:355
+#: packages/lib/utils/document-audit-logs.ts:371
msgid "{userName} rejected the document"
msgstr "{userName} hat das Dokument abgelehnt"
-#: packages/lib/utils/document-audit-logs.ts:341
+#: packages/lib/utils/document-audit-logs.ts:357
msgid "{userName} signed the document"
msgstr "{userName} hat das Dokument unterschrieben"
-#: packages/lib/utils/document-audit-logs.ts:342
+#: packages/lib/utils/document-audit-logs.ts:358
msgid "{userName} viewed the document"
msgstr "{userName} hat das Dokument angesehen"
@@ -358,7 +358,11 @@ msgstr "<0>{senderName}0> hat angefordert, dass du das folgende Team übernimm
msgid "<0>{teamName}0> has requested to use your email address for their team on Documenso."
msgstr "<0>{teamName}0> hat angefragt, Ihre E-Mail-Adresse für ihr Team bei Documenso zu verwenden."
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:241
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:463
+msgid "<0>Click to upload0> or drag and drop"
+msgstr ""
+
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:287
msgid "<0>Email0> - The recipient will be emailed the document to sign, approve, etc."
msgstr "<0>E-Mail0> - Der Empfänger erhält das Dokument zur Unterschrift, Genehmigung usw."
@@ -378,11 +382,11 @@ msgstr "<0>Keine Einschränkungen0> - Das Dokument kann direkt über die dem E
msgid "<0>None0> - No authentication required"
msgstr "<0>Keine0> - Keine Authentifizierung erforderlich"
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:247
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:293
msgid "<0>None0> - We will generate links which you can send to the recipients manually."
msgstr "<0>Keiner0> - Wir werden Links generieren, die Sie manuell an die Empfänger senden können."
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:254
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:300
msgid "<0>Note0> - If you use Links in combination with direct templates, you will need to manually send the links to the remaining recipients."
msgstr "<0>Hinweis0> - Wenn Sie Links in Kombination mit direkten Vorlagen verwenden, müssen Sie die Links manuell an die restlichen Empfänger senden."
@@ -464,19 +468,19 @@ msgstr "Ein Gerät, das in der Lage ist, Dokumente zuzugreifen, zu öffnen und z
msgid "A document was created by your direct template that requires you to {recipientActionVerb} it."
msgstr "Ein Dokument wurde von deiner direkten Vorlage erstellt, das erfordert, dass du {recipientActionVerb}."
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:218
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:230
msgid "A draft document will be created"
msgstr "Ein Entwurf wird erstellt"
-#: packages/lib/utils/document-audit-logs.ts:262
+#: packages/lib/utils/document-audit-logs.ts:278
msgid "A field was added"
msgstr "Ein Feld wurde hinzugefügt"
-#: packages/lib/utils/document-audit-logs.ts:266
+#: packages/lib/utils/document-audit-logs.ts:282
msgid "A field was removed"
msgstr "Ein Feld wurde entfernt"
-#: packages/lib/utils/document-audit-logs.ts:270
+#: packages/lib/utils/document-audit-logs.ts:286
msgid "A field was updated"
msgstr "Ein Feld wurde aktualisiert"
@@ -497,15 +501,15 @@ msgstr "Ein neuer Token wurde erfolgreich erstellt."
msgid "A password reset email has been sent, if you have an account you should see it in your inbox shortly."
msgstr "Eine E-Mail zum Zurücksetzen des Passworts wurde gesendet, wenn du ein Konto hast, solltest du sie in Kürze in deinem Posteingang sehen."
-#: packages/lib/utils/document-audit-logs.ts:274
+#: packages/lib/utils/document-audit-logs.ts:290
msgid "A recipient was added"
msgstr "Ein Empfänger wurde hinzugefügt"
-#: packages/lib/utils/document-audit-logs.ts:278
+#: packages/lib/utils/document-audit-logs.ts:294
msgid "A recipient was removed"
msgstr "Ein Empfänger wurde entfernt"
-#: packages/lib/utils/document-audit-logs.ts:282
+#: packages/lib/utils/document-audit-logs.ts:298
msgid "A recipient was updated"
msgstr "Ein Empfänger wurde aktualisiert"
@@ -612,17 +616,17 @@ msgstr "Kontowiederauthentifizierung"
msgid "Acknowledgment"
msgstr "Bestätigung"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:108
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:107
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:98
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:123
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:164
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:117
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:159
#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:116
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:46
msgid "Action"
msgstr "Aktion"
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:79
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:177
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:176
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:140
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:131
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:140
@@ -650,16 +654,16 @@ msgid "Add a document"
msgstr "Dokument hinzufügen"
#: packages/ui/primitives/document-flow/add-settings.tsx:390
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:468
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:514
msgid "Add a URL to redirect the user to once the document is signed"
msgstr "Fügen Sie eine URL hinzu, um den Benutzer nach der Unterzeichnung des Dokuments weiterzuleiten"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:177
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:88
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:153
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:87
msgid "Add all relevant fields for each recipient."
msgstr "Fügen Sie alle relevanten Felder für jeden Empfänger hinzu."
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:83
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:82
msgid "Add all relevant placeholders for each recipient."
msgstr "Fügen Sie alle relevanten Platzhalter für jeden Empfänger hinzu."
@@ -675,7 +679,7 @@ msgstr "Fügen Sie einen Authenticator hinzu, um als sekundäre Authentifizierun
msgid "Add an external ID to the document. This can be used to identify the document in external systems."
msgstr "Fügen Sie dem Dokument eine externe ID hinzu. Diese kann verwendet werden, um das Dokument in externen Systemen zu identifizieren."
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:385
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:431
msgid "Add an external ID to the template. This can be used to identify in external systems."
msgstr "Fügen Sie der Vorlage eine externe ID hinzu. Diese kann zur Identifizierung in externen Systemen verwendet werden."
@@ -692,8 +696,8 @@ msgstr "Weiteren Wert hinzufügen"
msgid "Add email"
msgstr "E-Mail hinzufügen"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:176
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:87
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:152
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:86
msgid "Add Fields"
msgstr "Felder hinzufügen"
@@ -718,7 +722,7 @@ msgstr "Passkey hinzufügen"
msgid "Add Placeholder Recipient"
msgstr "Platzhalterempfänger hinzufügen"
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:82
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:81
msgid "Add Placeholders"
msgstr "Platzhalter hinzufügen"
@@ -726,7 +730,7 @@ msgstr "Platzhalter hinzufügen"
msgid "Add Signer"
msgstr "Unterzeichner hinzufügen"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:171
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:147
msgid "Add Signers"
msgstr "Unterzeichner hinzufügen"
@@ -742,11 +746,11 @@ msgstr "Text hinzufügen"
msgid "Add text to the field"
msgstr "Text zum Feld hinzufügen"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:172
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:148
msgid "Add the people who will sign the document."
msgstr "Fügen Sie die Personen hinzu, die das Dokument unterschreiben werden."
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:220
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:232
msgid "Add the recipients to create the document with"
msgstr "Fügen Sie die Empfänger hinzu, um das Dokument zu erstellen"
@@ -771,7 +775,7 @@ msgid "Admin panel"
msgstr "Admin-Panel"
#: packages/ui/primitives/document-flow/add-settings.tsx:284
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:367
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:413
msgid "Advanced Options"
msgstr "Erweiterte Optionen"
@@ -804,11 +808,11 @@ msgstr "Alle Dokumente wurden verarbeitet. Alle neuen Dokumente, die gesendet od
msgid "All documents related to the electronic signing process will be provided to you electronically through our platform or via email. It is your responsibility to ensure that your email address is current and that you can receive and open our emails."
msgstr "Alle Dokumente, die mit dem elektronischen Unterzeichnungsprozess zusammenhängen, werden Ihnen elektronisch über unsere Plattform oder per E-Mail zur Verfügung gestellt. Es liegt in Ihrer Verantwortung, sicherzustellen, dass Ihre E-Mail-Adresse aktuell ist und dass Sie unsere E-Mails empfangen und öffnen können."
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:147
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:146
msgid "All inserted signatures will be voided"
msgstr "Alle eingefügten Unterschriften werden annulliert"
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:150
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:149
msgid "All recipients will be notified"
msgstr "Alle Empfänger werden benachrichtigt"
@@ -878,16 +882,16 @@ msgstr "Eine E-Mail, in der die Übertragung dieses Teams angefordert wird, wurd
msgid "An error occurred"
msgstr "Ein Fehler ist aufgetreten"
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:257
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:227
msgid "An error occurred while adding fields."
msgstr "Ein Fehler ist aufgetreten beim Hinzufügen von Feldern."
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:269
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:218
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:243
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:187
msgid "An error occurred while adding signers."
msgstr "Ein Fehler ist aufgetreten, während Unterzeichner hinzugefügt wurden."
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:304
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:281
msgid "An error occurred while adding the fields."
msgstr "Ein Fehler ist aufgetreten, während die Felder hinzugefügt wurden."
@@ -895,7 +899,7 @@ msgstr "Ein Fehler ist aufgetreten, während die Felder hinzugefügt wurden."
msgid "An error occurred while auto-signing the document, some fields may not be signed. Please review and manually sign any remaining fields."
msgstr "Beim automatischen Signieren des Dokuments ist ein Fehler aufgetreten, einige Felder wurden möglicherweise nicht signiert. Bitte überprüfen Sie und signieren Sie alle verbleibenden Felder manuell."
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:176
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:188
msgid "An error occurred while creating document from template."
msgstr "Ein Fehler ist aufgetreten, während das Dokument aus der Vorlage erstellt wurde."
@@ -903,7 +907,7 @@ msgstr "Ein Fehler ist aufgetreten, während das Dokument aus der Vorlage erstel
msgid "An error occurred while creating the webhook. Please try again."
msgstr "Ein Fehler ist aufgetreten, während der Webhook erstellt wurde. Bitte versuchen Sie es erneut."
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:124
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:120
msgid "An error occurred while disabling direct link signing."
msgstr "Ein Fehler ist aufgetreten, während das direkte Links-Signieren deaktiviert wurde."
@@ -911,18 +915,18 @@ msgstr "Ein Fehler ist aufgetreten, während das direkte Links-Signieren deaktiv
msgid "An error occurred while disabling the user."
msgstr "Ein Fehler ist aufgetreten, während der Benutzer deaktiviert wurde."
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:64
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:92
-#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:76
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:107
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:63
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:91
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:70
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:101
msgid "An error occurred while downloading your document."
msgstr "Ein Fehler ist aufgetreten, während dein Dokument heruntergeladen wurde."
-#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:52
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:51
msgid "An error occurred while duplicating template."
msgstr "Ein Fehler ist aufgetreten, während die Vorlage dupliziert wurde."
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:123
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:119
msgid "An error occurred while enabling direct link signing."
msgstr "Ein Fehler ist aufgetreten, während das direkte Links-Signieren aktiviert wurde."
@@ -965,7 +969,7 @@ msgstr "Ein Fehler ist aufgetreten, während die Unterschrift entfernt wurde."
msgid "An error occurred while removing the text."
msgstr "Ein Fehler ist aufgetreten, während der Text entfernt wurde."
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:350
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:326
msgid "An error occurred while sending the document."
msgstr "Ein Fehler ist aufgetreten, während das Dokument gesendet wurde."
@@ -990,8 +994,8 @@ msgstr "Ein Fehler ist aufgetreten, während das Dokument unterzeichnet wurde."
msgid "An error occurred while trying to create a checkout session."
msgstr "Ein Fehler ist aufgetreten, während versucht wurde, eine Checkout-Sitzung zu erstellen."
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:235
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:187
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:210
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:156
msgid "An error occurred while updating the document settings."
msgstr "Ein Fehler ist aufgetreten, während die Dokumenteinstellungen aktualisiert wurden."
@@ -1003,7 +1007,7 @@ msgstr "Ein Fehler ist aufgetreten, während die Unterschrift aktualisiert wurde
msgid "An error occurred while updating your profile."
msgstr "Ein Fehler ist aufgetreten, während dein Profil aktualisiert wurde."
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:118
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:117
msgid "An error occurred while uploading your document."
msgstr "Ein Fehler ist aufgetreten, während dein Dokument hochgeladen wurde."
@@ -1039,8 +1043,8 @@ msgstr "Ein Fehler ist aufgetreten, während dein Dokument hochgeladen wurde."
#: apps/web/src/components/forms/token.tsx:143
#: apps/web/src/components/forms/v2/signup.tsx:187
#: apps/web/src/components/forms/v2/signup.tsx:201
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:141
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:178
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:140
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:176
msgid "An unknown error occurred"
msgstr "Es ist ein unbekannter Fehler aufgetreten"
@@ -1048,11 +1052,11 @@ msgstr "Es ist ein unbekannter Fehler aufgetreten"
msgid "Any payment methods attached to this team will remain attached to this team. Please contact us if you need to update this information."
msgstr "Alle Zahlungsmethoden, die mit diesem Team verbunden sind, bleiben diesem Team zugeordnet. Bitte kontaktiere uns, wenn du diese Informationen aktualisieren möchtest."
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:221
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:220
msgid "Any Source"
msgstr "Jede Quelle"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:201
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:200
msgid "Any Status"
msgstr "Jeder Status"
@@ -1070,9 +1074,9 @@ msgstr "API-Token"
msgid "App Version"
msgstr "App-Version"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:89
-#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:120
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:146
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:88
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:114
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:140
#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:143
#: packages/lib/constants/recipient-roles.ts:8
msgid "Approve"
@@ -1116,13 +1120,13 @@ msgstr "Bist du sicher, dass du den <0>{passkeyName}0> Passkey entfernen möch
msgid "Are you sure you wish to delete this team?"
msgstr "Bist du dir sicher, dass du dieses Team löschen möchtest?"
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:100
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:99
#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:94
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:455
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:449
#: apps/web/src/components/(teams)/dialogs/delete-team-member-dialog.tsx:81
#: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:81
#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:116
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:439
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:437
msgid "Are you sure?"
msgstr "Bist du dir sicher?"
@@ -1130,11 +1134,11 @@ msgstr "Bist du dir sicher?"
msgid "Attempts sealing the document again, useful for after a code change has occurred to resolve an erroneous document."
msgstr "Versuche, das Dokument erneut zu versiegeln, nützlich nach einer Codeänderung, um ein fehlerhaftes Dokument zu beheben."
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:130
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:129
msgid "Audit Log"
msgstr "Audit-Protokoll"
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:198
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:200
msgid "Authentication Level"
msgstr "Authentifizierungsstufe"
@@ -1240,7 +1244,7 @@ msgstr "Durch die Annahme dieser Anfrage gewähren Sie <0>{teamName}0> Zugriff
msgid "By accepting this request, you will take responsibility for any billing items associated with this team."
msgstr "Indem du diese Anfrage annimmst, übernimmst du die Verantwortung für alle Abrechnungspunkte, die mit diesem Team verbunden sind."
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:158
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:157
msgid "By deleting this document, the following will occur:"
msgstr "Durch das Löschen dieses Dokuments wird Folgendes passieren:"
@@ -1261,17 +1265,17 @@ msgid "By using the electronic signature feature, you are consenting to conduct
msgstr "Durch die Verwendung der elektronischen Unterschriftsfunktion stimmen Sie zu, Transaktionen durchzuführen und Offenlegungen elektronisch zu erhalten. Sie erkennen an, dass Ihre elektronische Unterschrift auf Dokumenten bindend ist und dass Sie die Bedingungen akzeptieren, die in den Dokumenten dargelegt sind, die Sie unterzeichnen."
#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:185
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:192
-#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:108
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:191
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:107
#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:120
#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:248
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:157
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:198
#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:109
-#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:81
-#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:78
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:76
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:77
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:131
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:472
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:466
#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:220
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:178
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-account.tsx:71
@@ -1302,8 +1306,8 @@ msgstr "Durch die Verwendung der elektronischen Unterschriftsfunktion stimmen Si
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:187
#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:257
#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:163
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:450
-#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:357
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:448
+#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:317
#: packages/ui/primitives/document-flow/send-document-action-dialog.tsx:58
msgid "Cancel"
msgstr "Abbrechen"
@@ -1353,15 +1357,15 @@ msgstr "Checkbox-Werte"
msgid "Checkout"
msgstr "Abrechnung"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:271
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:266
msgid "Choose an existing recipient from below to continue"
msgstr "Wählen Sie einen vorhandenen Empfänger unten aus, um fortzufahren"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:267
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:262
msgid "Choose Direct Link Recipient"
msgstr "Wählen Sie den direkten Link Empfänger"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:182
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:158
msgid "Choose how the document will reach recipients"
msgstr "Wählen Sie, wie das Dokument die Empfänger erreichen soll"
@@ -1385,6 +1389,10 @@ msgstr "Profile später beanspruchen"
msgid "Claim your username now"
msgstr "Benutzername jetzt beanspruchen"
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:537
+msgid "Clear file"
+msgstr ""
+
#: packages/ui/primitives/data-table.tsx:156
msgid "Clear filters"
msgstr "Filter löschen"
@@ -1393,13 +1401,13 @@ msgstr "Filter löschen"
msgid "Clear Signature"
msgstr "Unterschrift löschen"
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:130
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:125
msgid "Click here to get started"
msgstr "Klicken Sie hier, um zu beginnen"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:76
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:118
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:66
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:113
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:64
#: apps/web/src/components/document/document-history-sheet.tsx:133
msgid "Click here to retry"
msgstr "Klicken Sie hier, um es erneut zu versuchen"
@@ -1420,16 +1428,16 @@ msgstr "Klicken Sie, um den Signatur-Link zu kopieren, um ihn an den Empfänger
msgid "Click to insert field"
msgstr "Klicken, um das Feld auszufüllen"
-#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:126
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:388
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:125
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:556
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:125
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:138
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:121
#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:140
#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:180
#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:102
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:319
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:423
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:317
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:421
#: packages/ui/primitives/document-flow/missing-signature-field-dialog.tsx:44
msgid "Close"
msgstr "Schließen"
@@ -1453,7 +1461,7 @@ msgstr "Unterzeichnung abschließen"
msgid "Complete Viewing"
msgstr "Betrachten abschließen"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:204
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:203
#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:77
#: apps/web/src/components/formatter/document-status.tsx:28
#: packages/email/template-components/template-document-completed.tsx:35
@@ -1480,15 +1488,15 @@ msgstr "Abgeschlossene Dokumente"
msgid "Configure Direct Recipient"
msgstr "Direkten Empfänger konfigurieren"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:167
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:143
msgid "Configure general settings for the document."
msgstr "Konfigurieren Sie die allgemeinen Einstellungen für das Dokument."
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:78
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:77
msgid "Configure general settings for the template."
msgstr "Konfigurieren Sie die allgemeinen Einstellungen für die Vorlage."
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:337
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:335
msgid "Configure template"
msgstr "Vorlage konfigurieren"
@@ -1497,8 +1505,8 @@ msgstr "Vorlage konfigurieren"
msgid "Configure the {0} field"
msgstr "Konfigurieren Sie das Feld {0}"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:481
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:460
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:475
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:458
msgid "Confirm"
msgstr "Bestätigen"
@@ -1546,7 +1554,7 @@ msgstr "Inhalt"
#: apps/web/src/app/(unauthenticated)/team/verify/email/[token]/page.tsx:143
#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:72
#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:122
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:328
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:326
#: packages/ui/primitives/document-flow/document-flow-root.tsx:141
msgid "Continue"
msgstr "Fortsetzen"
@@ -1597,9 +1605,9 @@ msgid "Copied"
msgstr "Kopiert"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:162
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:77
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:72
#: apps/web/src/app/(dashboard)/templates/template-direct-link-badge.tsx:31
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:163
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:159
#: apps/web/src/components/(dashboard)/avatar/avatar-with-recipient.tsx:40
#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:61
#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:117
@@ -1618,11 +1626,11 @@ msgstr "Kopieren"
msgid "Copy Link"
msgstr "Link kopieren"
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:169
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:164
msgid "Copy sharable link"
msgstr "Kopieren Sie den teilbaren Link"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:397
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:391
msgid "Copy Shareable Link"
msgstr "Kopiere den teilbaren Link"
@@ -1657,15 +1665,15 @@ msgstr "Ein Team erstellen, um mit Ihren Teammitgliedern zusammenzuarbeiten."
msgid "Create account"
msgstr "Konto erstellen"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:396
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:564
msgid "Create and send"
msgstr "Erstellen und senden"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:394
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:562
msgid "Create as draft"
msgstr "Als Entwurf erstellen"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:354
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:365
msgid "Create as pending"
msgstr "Als ausstehend erstellen"
@@ -1673,11 +1681,11 @@ msgstr "Als ausstehend erstellen"
msgid "Create Direct Link"
msgstr "Direkten Link erstellen"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:202
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:197
msgid "Create Direct Signing Link"
msgstr "Direkten Signatur-Link erstellen"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:214
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:226
msgid "Create document from template"
msgstr "Dokument aus der Vorlage erstellen"
@@ -1685,11 +1693,11 @@ msgstr "Dokument aus der Vorlage erstellen"
msgid "Create now"
msgstr "Jetzt erstellen"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:352
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:346
msgid "Create one automatically"
msgstr "Einen automatisch erstellen"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:398
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:566
msgid "Create signing links"
msgstr "Unterzeichnung Links erstellen"
@@ -1704,7 +1712,7 @@ msgstr "Team erstellen"
msgid "Create Team"
msgstr "Team erstellen"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:361
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:372
msgid "Create the document as pending and ready to sign."
msgstr "Erstellen Sie das Dokument als ausstehend und bereit zur Unterschrift."
@@ -1731,18 +1739,18 @@ msgstr "Erstellen Sie Ihr Konto und beginnen Sie mit dem modernen Dokumentensign
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:62
#: apps/web/src/app/(dashboard)/admin/leaderboard/data-table-leaderboard.tsx:96
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:35
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:36
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:48
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:63
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:105
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:34
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:104
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:35
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:56
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:274
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:272
msgid "Created"
msgstr "Erstellt"
#: apps/web/src/app/(dashboard)/admin/subscriptions/page.tsx:35
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:111
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:112
msgid "Created At"
msgstr "Erstellt am"
@@ -1791,7 +1799,7 @@ msgid "Date created"
msgstr "Erstellungsdatum"
#: packages/ui/primitives/document-flow/add-settings.tsx:325
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:408
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:454
msgid "Date Format"
msgstr "Datumsformat"
@@ -1812,19 +1820,19 @@ msgstr "Standardsprache des Dokuments"
msgid "Default Document Visibility"
msgstr "Standard Sichtbarkeit des Dokuments"
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:50
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:49
msgid "delete"
msgstr "löschen"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:144
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:189
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:202
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:143
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:183
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:201
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:177
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:211
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:83
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:100
#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:94
-#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:90
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:85
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:116
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:105
#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:121
@@ -1895,7 +1903,7 @@ msgid "Delete your account and all its contents, including completed documents.
msgstr "Löschen Sie Ihr Konto und alle Inhalte, einschließlich abgeschlossener Dokumente. Diese Aktion ist irreversibel und führt zur Kündigung Ihres Abonnements, seien Sie also vorsichtig."
#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:41
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:97
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:98
msgid "Deleted"
msgstr "Gelöscht"
@@ -1903,12 +1911,12 @@ msgstr "Gelöscht"
msgid "Deleting account..."
msgstr "Konto wird gelöscht..."
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:178
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:180
msgid "Details"
msgstr "Einzelheiten"
#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:73
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:242
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:244
msgid "Device"
msgstr "Gerät"
@@ -1926,8 +1934,8 @@ msgstr "Direkter Link"
msgid "Direct link"
msgstr "Direkter Link"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:156
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:227
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:155
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:226
msgid "Direct Link"
msgstr "Direkter Link"
@@ -1939,15 +1947,15 @@ msgstr "Direkter Link deaktiviert"
msgid "Direct link receiver"
msgstr "Empfänger des direkten Links"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:363
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:357
msgid "Direct Link Signing"
msgstr "Direkt-Link-Signatur"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:115
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:111
msgid "Direct link signing has been disabled"
msgstr "Die direkte Links-Signatur wurde deaktiviert"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:114
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:110
msgid "Direct link signing has been enabled"
msgstr "Die direkte Links-Signatur wurde aktiviert"
@@ -1955,15 +1963,15 @@ msgstr "Die direkte Links-Signatur wurde aktiviert"
msgid "Direct link templates contain one dynamic recipient placeholder. Anyone with access to this link can sign the document, and it will then appear on your documents page."
msgstr "Direkte Linkvorlagen enthalten einen dynamischen Empfänger-Platzhalter. Jeder, der Zugriff auf diesen Link hat, kann das Dokument unterzeichnen, und es wird dann auf Ihrer Dokumenten-Seite angezeigt."
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:142
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:138
msgid "Direct template link deleted"
msgstr "Direkter Vorlagenlink gelöscht"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:228
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:223
msgid "Direct template link usage exceeded ({0}/{1})"
msgstr "Die Verwendung des direkten Vorlagenlinks wurde überschritten ({0}/{1})"
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:417
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:415
msgid "Disable"
msgstr "Deaktivieren"
@@ -1991,7 +1999,7 @@ msgstr "Deaktivieren Sie die Zwei-Faktor-Authentifizierung, bevor Sie Ihr Konto
msgid "Disabled"
msgstr "Deaktiviert"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:380
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:374
msgid "Disabling direct link signing will prevent anyone from accessing the link."
msgstr "Das Deaktivieren der direkten Link-Signatur verhindert, dass jemand auf den Link zugreifen kann."
@@ -2003,15 +2011,15 @@ msgstr "Das Deaktivieren des Benutzers führt dazu, dass der Benutzer das Konto
msgid "Display your name and email in documents"
msgstr "Zeigen Sie Ihren Namen und Ihre E-Mail in Dokumenten an"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:181
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:157
msgid "Distribute Document"
msgstr "Dokument verteilen"
-#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:63
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:58
msgid "Do you want to delete this template?"
msgstr "Möchten Sie diese Vorlage löschen?"
-#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:63
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:62
msgid "Do you want to duplicate this template?"
msgstr "Möchten Sie diese Vorlage duplizieren?"
@@ -2034,11 +2042,11 @@ msgstr "Dokument \"{0}\" - Ablehnung Bestätigt"
#: packages/ui/components/document/document-global-auth-access-select.tsx:62
#: packages/ui/primitives/document-flow/add-settings.tsx:227
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:202
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:224
msgid "Document access"
msgstr "Dokumentenzugriff"
-#: packages/lib/utils/document-audit-logs.ts:306
+#: packages/lib/utils/document-audit-logs.ts:322
msgid "Document access auth updated"
msgstr "Die Authentifizierung für den Dokumentenzugriff wurde aktualisiert"
@@ -2051,14 +2059,14 @@ msgid "Document Approved"
msgstr "Dokument genehmigt"
#: apps/web/src/app/(signing)/sign/[token]/no-longer-available.tsx:40
-#: packages/lib/server-only/document/delete-document.ts:246
+#: packages/lib/server-only/document/delete-document.ts:251
#: packages/lib/server-only/document/super-delete-document.ts:98
msgid "Document Cancelled"
msgstr "Dokument storniert"
#: apps/web/src/components/formatter/document-status.tsx:29
-#: packages/lib/utils/document-audit-logs.ts:369
-#: packages/lib/utils/document-audit-logs.ts:370
+#: packages/lib/utils/document-audit-logs.ts:385
+#: packages/lib/utils/document-audit-logs.ts:386
msgid "Document completed"
msgstr "Dokument abgeschlossen"
@@ -2071,21 +2079,21 @@ msgstr "E-Mail zum Abschluss des Dokuments"
msgid "Document Completed!"
msgstr "Dokument abgeschlossen!"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:156
-#: packages/lib/utils/document-audit-logs.ts:286
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:168
+#: packages/lib/utils/document-audit-logs.ts:302
msgid "Document created"
msgstr "Dokument erstellt"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:127
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:125
msgid "Document created by <0>{0}0>"
msgstr "Dokument erstellt von <0>{0}0>"
#: packages/email/templates/document-created-from-direct-template.tsx:32
-#: packages/lib/server-only/template/create-document-from-direct-template.ts:585
+#: packages/lib/server-only/template/create-document-from-direct-template.ts:588
msgid "Document created from direct template"
msgstr "Dokument erstellt aus direkter Vorlage"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:132
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:130
msgid "Document created using a <0>direct link0>"
msgstr "Dokument erstellt mit einem <0>direkten Link0>"
@@ -2094,9 +2102,9 @@ msgid "Document Creation"
msgstr "Dokumenterstellung"
#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:51
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:181
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:61
-#: packages/lib/utils/document-audit-logs.ts:290
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:182
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:60
+#: packages/lib/utils/document-audit-logs.ts:306
msgid "Document deleted"
msgstr "Dokument gelöscht"
@@ -2108,8 +2116,8 @@ msgstr "E-Mail zum Löschen des Dokuments"
msgid "Document Deleted!"
msgstr "Dokument gelöscht!"
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:219
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:228
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:265
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:274
msgid "Document Distribution Method"
msgstr "Verteilungsmethode für Dokumente"
@@ -2117,21 +2125,21 @@ msgstr "Verteilungsmethode für Dokumente"
msgid "Document draft"
msgstr "Dokument-Entwurf"
-#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:58
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:57
msgid "Document Duplicated"
msgstr "Dokument dupliziert"
-#: packages/lib/utils/document-audit-logs.ts:326
+#: packages/lib/utils/document-audit-logs.ts:342
msgid "Document external ID updated"
msgstr "Externe ID des Dokuments aktualisiert"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:192
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:193
#: apps/web/src/components/document/document-history-sheet.tsx:104
msgid "Document history"
msgstr "Dokumentverlauf"
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:71
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:81
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:82
msgid "Document ID"
msgstr "Dokument-ID"
@@ -2151,7 +2159,7 @@ msgstr "Dokumentmetrik"
msgid "Document moved"
msgstr "Dokument verschoben"
-#: packages/lib/utils/document-audit-logs.ts:334
+#: packages/lib/utils/document-audit-logs.ts:350
msgid "Document moved to team"
msgstr "Dokument ins Team verschoben"
@@ -2159,7 +2167,7 @@ msgstr "Dokument ins Team verschoben"
msgid "Document no longer available to sign"
msgstr "Dokument steht nicht mehr zur Unterschrift zur Verfügung"
-#: packages/lib/utils/document-audit-logs.ts:318
+#: packages/lib/utils/document-audit-logs.ts:334
msgid "Document opened"
msgstr "Dokument geöffnet"
@@ -2188,8 +2196,8 @@ msgstr "Dokument Abgelehnt"
msgid "Document resealed"
msgstr "Dokument wieder versiegelt"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:327
-#: packages/lib/utils/document-audit-logs.ts:330
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:303
+#: packages/lib/utils/document-audit-logs.ts:346
msgid "Document sent"
msgstr "Dokument gesendet"
@@ -2197,11 +2205,11 @@ msgstr "Dokument gesendet"
msgid "Document Signed"
msgstr "Dokument signiert"
-#: packages/lib/utils/document-audit-logs.ts:310
+#: packages/lib/utils/document-audit-logs.ts:326
msgid "Document signing auth updated"
msgstr "Dokument unterzeichnen Authentifizierung aktualisiert"
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:144
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:143
msgid "Document signing process will be cancelled"
msgstr "Der Dokumentenunterzeichnungsprozess wird abgebrochen"
@@ -2213,11 +2221,11 @@ msgstr "Dokumentenstatus"
msgid "Document title"
msgstr "Dokumenttitel"
-#: packages/lib/utils/document-audit-logs.ts:322
+#: packages/lib/utils/document-audit-logs.ts:338
msgid "Document title updated"
msgstr "Dokumenttitel aktualisiert"
-#: packages/lib/utils/document-audit-logs.ts:314
+#: packages/lib/utils/document-audit-logs.ts:330
msgid "Document updated"
msgstr "Dokument aktualisiert"
@@ -2225,7 +2233,7 @@ msgstr "Dokument aktualisiert"
msgid "Document upload disabled due to unpaid invoices"
msgstr "Dokumenten-Upload deaktiviert aufgrund unbezahlter Rechnungen"
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:86
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:85
msgid "Document uploaded"
msgstr "Dokument hochgeladen"
@@ -2233,17 +2241,17 @@ msgstr "Dokument hochgeladen"
msgid "Document Viewed"
msgstr "Dokument angesehen"
-#: packages/lib/utils/document-audit-logs.ts:302
+#: packages/lib/utils/document-audit-logs.ts:318
msgid "Document visibility updated"
msgstr "Sichtbarkeit des Dokuments aktualisiert"
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:141
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:140
msgid "Document will be permanently deleted"
msgstr "Dokument wird dauerhaft gelöscht"
#: apps/web/src/app/(dashboard)/admin/nav.tsx:65
#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:92
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:144
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:145
#: apps/web/src/app/(dashboard)/documents/[id]/edit/document-edit-page-view.tsx:109
#: apps/web/src/app/(dashboard)/documents/[id]/loading.tsx:16
#: apps/web/src/app/(dashboard)/documents/[id]/sent/page.tsx:15
@@ -2274,10 +2282,10 @@ msgstr "Dokumente angesehen"
msgid "Don't have an account? <0>Sign up0>"
msgstr "Haben Sie kein Konto? <0>Registrieren0>"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:111
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:123
-#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:141
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:162
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:110
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:122
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:135
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:156
#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:110
#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:185
#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:107
@@ -2286,7 +2294,7 @@ msgstr "Haben Sie kein Konto? <0>Registrieren0>"
msgid "Download"
msgstr "Herunterladen"
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-audit-log-button.tsx:81
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-audit-log-button.tsx:77
msgid "Download Audit Logs"
msgstr "Auditprotokolle herunterladen"
@@ -2294,7 +2302,7 @@ msgstr "Auditprotokolle herunterladen"
msgid "Download Certificate"
msgstr "Zertifikat herunterladen"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:210
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:209
#: apps/web/src/components/formatter/document-status.tsx:34
#: packages/lib/constants/document.ts:13
msgid "Draft"
@@ -2325,19 +2333,19 @@ msgstr "Dropdown-Optionen"
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."
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:136
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:167
-#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:85
-#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:118
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:135
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:161
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:84
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:117
#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:74
-#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:91
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:89
msgid "Duplicate"
msgstr "Duplizieren"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:104
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:115
-#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:102
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:156
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:103
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:114
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:96
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:150
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:111
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:95
#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:65
@@ -2366,11 +2374,11 @@ msgstr "Offenlegung der elektronischen Unterschrift"
#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:166
#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:116
#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:71
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:265
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:272
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:277
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:284
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:122
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:129
-#: apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx:118
+#: apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx:119
#: apps/web/src/app/(signing)/sign/[token]/email-field.tsx:126
#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:407
#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:287
@@ -2401,7 +2409,7 @@ msgstr "E-Mail-Adresse"
msgid "Email Address"
msgstr "E-Mail-Adresse"
-#: apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx:80
+#: apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx:81
msgid "Email cannot already exist in the template"
msgstr "E-Mail darf nicht bereits in der Vorlage vorhanden sein"
@@ -2409,15 +2417,15 @@ msgstr "E-Mail darf nicht bereits in der Vorlage vorhanden sein"
msgid "Email Confirmed!"
msgstr "E-Mail bestätigt!"
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:307
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:353
msgid "Email Options"
msgstr "E-Mail-Optionen"
-#: packages/lib/utils/document-audit-logs.ts:363
+#: packages/lib/utils/document-audit-logs.ts:379
msgid "Email resent"
msgstr "E-Mail erneut gesendet"
-#: packages/lib/utils/document-audit-logs.ts:363
+#: packages/lib/utils/document-audit-logs.ts:379
msgid "Email sent"
msgstr "E-Mail gesendet"
@@ -2459,11 +2467,11 @@ msgstr "Authenticator-App aktivieren"
msgid "Enable custom branding for all documents in this team."
msgstr "Aktivieren Sie individuelles Branding für alle Dokumente in diesem Team."
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:251
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:246
msgid "Enable direct link signing"
msgstr "Direktlinksignierung aktivieren"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:374
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:368
#: packages/lib/constants/template.ts:8
msgid "Enable Direct Link Signing"
msgstr "Direktlink-Signierung aktivieren"
@@ -2495,7 +2503,7 @@ msgstr "Aktiviert"
msgid "Enabling the account results in the user being able to use the account again, and all the related features such as webhooks, teams, and API keys for example."
msgstr "Das Aktivieren des Kontos führt dazu, dass der Benutzer das Konto wieder nutzen kann, sowie alle damit verbundenen Funktionen wie Webhooks, Teams und API-Schlüssel beispielsweise."
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:87
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:88
msgid "Enclosed Document"
msgstr "Beigefügte Dokument"
@@ -2515,7 +2523,7 @@ msgstr "Geben Sie Ihre Markendaten ein"
msgid "Enter your email"
msgstr "Geben Sie Ihre E-Mail-Adresse ein"
-#: apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx:135
+#: apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx:136
msgid "Enter your email address to receive the completed document."
msgstr "Geben Sie Ihre E-Mail-Adresse ein, um das abgeschlossene Dokument zu erhalten."
@@ -2531,19 +2539,19 @@ msgstr "Geben Sie hier Ihren Text ein"
#: apps/web/src/app/(dashboard)/admin/users/[id]/disable-user-dialog.tsx:60
#: apps/web/src/app/(dashboard)/admin/users/[id]/enable-user-dialog.tsx:60
#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:80
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:234
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:268
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:303
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:349
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:209
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:242
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:280
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:325
#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:57
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:111
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:117
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:110
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:116
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:155
#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:186
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:217
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:256
-#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:51
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:226
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:50
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:68
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:175
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:187
#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:152
#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:124
#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:153
@@ -2569,7 +2577,7 @@ msgstr "Geben Sie hier Ihren Text ein"
#: 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)/settings/webhooks/create-webhook-dialog.tsx:101
-#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:258
+#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:218
#: packages/ui/primitives/pdf-viewer.tsx:166
msgid "Error"
msgstr "Fehler"
@@ -2600,7 +2608,7 @@ msgid "Expires on {0}"
msgstr "Läuft ab am {0}"
#: packages/ui/primitives/document-flow/add-settings.tsx:295
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:378
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:424
msgid "External ID"
msgstr "Externe ID"
@@ -2608,7 +2616,7 @@ msgstr "Externe ID"
msgid "Failed to reseal document"
msgstr "Dokument konnte nicht erneut versiegelt werden"
-#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:259
+#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:219
msgid "Failed to save settings."
msgstr "Einstellungen konnten nicht gespeichert werden."
@@ -2646,11 +2654,11 @@ msgstr "Feldbeschriftung"
msgid "Field placeholder"
msgstr "Feldplatzhalter"
-#: packages/lib/utils/document-audit-logs.ts:294
+#: packages/lib/utils/document-audit-logs.ts:310
msgid "Field signed"
msgstr "Feld unterschrieben"
-#: packages/lib/utils/document-audit-logs.ts:298
+#: packages/lib/utils/document-audit-logs.ts:314
msgid "Field unsigned"
msgstr "Feld nicht unterschrieben"
@@ -2658,10 +2666,14 @@ msgstr "Feld nicht unterschrieben"
msgid "Fields"
msgstr "Felder"
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:130
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:129
msgid "File cannot be larger than {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB"
msgstr "Die Datei darf nicht größer als {APP_DOCUMENT_UPLOAD_SIZE_LIMIT} MB sein"
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:513
+msgid "File size exceeds the limit of {APP_DOCUMENT_UPLOAD_SIZE_LIMIT} MB"
+msgstr ""
+
#: packages/ui/primitives/document-flow/field-items-advanced-settings/date-field.tsx:56
#: packages/ui/primitives/document-flow/field-items-advanced-settings/email-field.tsx:38
#: packages/ui/primitives/document-flow/field-items-advanced-settings/initials-field.tsx:38
@@ -2699,8 +2711,8 @@ msgstr "Freie Unterschrift"
msgid "Full Name"
msgstr "Vollständiger Name"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:166
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:77
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:142
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:76
#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:62
#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:44
#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:52
@@ -2776,7 +2788,7 @@ msgstr "Hier können Sie Präferenzen und Voreinstellungen für das Branding fes
msgid "Here you can set preferences and defaults for your team."
msgstr "Hier können Sie Präferenzen und Voreinstellungen für Ihr Team festlegen."
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:206
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:201
msgid "Here's how it works:"
msgstr "So funktioniert es:"
@@ -2788,9 +2800,9 @@ msgstr "Hey, ich bin Timur"
msgid "Hi, {userName} <0>({userEmail})0>"
msgstr "Hallo, {userName} <0>({userEmail})0>"
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:189
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:202
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:155
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:183
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:201
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:154
msgid "Hide"
msgstr "Ausblenden"
@@ -2851,8 +2863,8 @@ msgstr "Posteingang Dokumente"
msgid "Include the Signing Certificate in the Document"
msgstr "Signaturzertifikat in das Dokument einfügen"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:53
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:50
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:54
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:51
msgid "Information"
msgstr "Information"
@@ -2882,7 +2894,7 @@ msgstr "Ungültiger Code. Bitte versuchen Sie es erneut."
msgid "Invalid email"
msgstr "Ungültige E-Mail"
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:105
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:104
msgid "Invalid file"
msgstr "Ungültige Datei"
@@ -2941,7 +2953,7 @@ msgid "Invoice"
msgstr "Rechnung"
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:47
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:235
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:237
msgid "IP Address"
msgstr "IP-Adresse"
@@ -2981,7 +2993,7 @@ msgstr "Beschriftung"
#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:286
#: packages/ui/primitives/document-flow/add-settings.tsx:187
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:162
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:184
msgid "Language"
msgstr "Sprache"
@@ -2997,8 +3009,8 @@ msgstr "Die letzten 30 Tage"
msgid "Last 7 days"
msgstr "Die letzten 7 Tage"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:41
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:38
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:42
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:39
msgid "Last modified"
msgstr "Zuletzt geändert"
@@ -3006,7 +3018,7 @@ msgstr "Zuletzt geändert"
msgid "Last updated"
msgstr "Zuletzt aktualisiert"
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:121
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:122
msgid "Last Updated"
msgstr "Zuletzt aktualisiert"
@@ -3048,11 +3060,11 @@ msgstr "Möchten Sie Ihr eigenes öffentliches Profil mit Vereinbarungen haben?"
msgid "Link expires in 1 hour."
msgstr "Link läuft in 1 Stunde ab."
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:216
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:215
msgid "Link template"
msgstr "Vorlage verlinken"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:338
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:314
msgid "Links Generated"
msgstr "Links generiert"
@@ -3073,7 +3085,7 @@ msgstr "Lade Dokument..."
#: apps/web/src/app/(dashboard)/documents/[id]/loading.tsx:20
#: apps/web/src/app/(dashboard)/documents/[id]/sent/page.tsx:19
-#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:91
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:90
msgid "Loading Document..."
msgstr "Dokument wird geladen..."
@@ -3112,7 +3124,7 @@ msgstr "Vorlage verwalten und anzeigen"
msgid "Manage billing"
msgstr "Rechnungsmanagement"
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:341
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:339
msgid "Manage details for this public template"
msgstr "Details für diese öffentliche Vorlage verwalten"
@@ -3148,7 +3160,7 @@ msgstr "Teamabonnement verwalten."
msgid "Manage teams"
msgstr "Teams verwalten"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:367
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:361
msgid "Manage the direct link signing for this template"
msgstr "Die direkte Linkunterzeichnung für diese Vorlage verwalten"
@@ -3204,7 +3216,7 @@ msgid "Members"
msgstr "Mitglieder"
#: packages/ui/primitives/document-flow/add-subject.tsx:160
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:338
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:384
msgid "Message <0>(Optional)0>"
msgstr "Nachricht <0>(Optional)0>"
@@ -3243,7 +3255,7 @@ msgstr "Dokument in Team verschieben"
msgid "Move Template to Team"
msgstr "Vorlage in Team verschieben"
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:174
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:168
#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:85
msgid "Move to Team"
msgstr "In Team verschieben"
@@ -3263,8 +3275,8 @@ msgstr "Meine Vorlagen"
#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:66
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:144
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:59
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:287
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:294
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:299
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:306
#: apps/web/src/app/(signing)/sign/[token]/complete/claim-account.tsx:118
#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:170
#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:153
@@ -3308,8 +3320,8 @@ msgstr "Nie ablaufen"
msgid "New team owner"
msgstr "Neuer Teamowner"
-#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:96
-#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:103
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:95
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:102
msgid "New Template"
msgstr "Neue Vorlage"
@@ -3335,7 +3347,7 @@ msgstr "Es sind derzeit keine weiteren Maßnahmen Ihrerseits erforderlich."
msgid "No payment required"
msgstr "Keine Zahlung erforderlich"
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:125
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:120
msgid "No public profile templates found"
msgstr "Keine Vorlagen für das öffentliche Profil gefunden"
@@ -3343,7 +3355,7 @@ msgstr "Keine Vorlagen für das öffentliche Profil gefunden"
msgid "No recent activity"
msgstr "Keine aktuellen Aktivitäten"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:101
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:99
msgid "No recent documents"
msgstr "Keine aktuellen Dokumente"
@@ -3387,11 +3399,11 @@ msgstr "Kein Unterschriftsfeld gefunden"
msgid "No token provided"
msgstr "Kein Token bereitgestellt"
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:284
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:282
msgid "No valid direct templates found"
msgstr "Keine gültigen direkten Vorlagen gefunden"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:293
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:288
msgid "No valid recipients found"
msgstr "Keine gültigen Empfänger gefunden"
@@ -3464,7 +3476,7 @@ msgstr "Auf dieser Seite können Sie neue Webhooks erstellen und die vorhandenen
msgid "On this page, you can edit the webhook and its settings."
msgstr "Auf dieser Seite können Sie den Webhook und seine Einstellungen bearbeiten."
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:136
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:135
msgid "Once confirmed, the following will occur:"
msgstr "Sobald dies bestätigt ist, wird Folgendes geschehen:"
@@ -3504,7 +3516,7 @@ msgstr "Hoppla! Etwas ist schief gelaufen."
msgid "Opened"
msgstr "Geöffnet"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:337
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:332
#: apps/web/src/components/forms/signup.tsx:239
#: apps/web/src/components/forms/signup.tsx:263
#: apps/web/src/components/forms/v2/signup.tsx:387
@@ -3515,12 +3527,12 @@ msgstr "Oder"
msgid "Or continue with"
msgstr "Oder fahren Sie fort mit"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:340
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:351
msgid "Otherwise, the document will be created as a draft."
msgstr "Andernfalls wird das Dokument als Entwurf erstellt."
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:86
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:103
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:104
#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:81
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:84
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:107
@@ -3629,7 +3641,7 @@ msgid "Payment overdue"
msgstr "Zahlung überfällig"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:131
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:207
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:206
#: apps/web/src/components/(teams)/tables/teams-member-page-data-table.tsx:82
#: apps/web/src/components/(teams)/tables/user-settings-teams-page-data-table.tsx:77
#: apps/web/src/components/document/document-read-only-fields.tsx:89
@@ -3724,7 +3736,7 @@ msgstr "Bitte bestätige deine E-Mail"
msgid "Please confirm your email address"
msgstr "Bitte bestätige deine E-Mail-Adresse"
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:176
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:175
msgid "Please contact support if you would like to revert this action."
msgstr "Bitte kontaktieren Sie den Support, wenn Sie diese Aktion rückgängig machen möchten."
@@ -3741,19 +3753,19 @@ msgstr "Bitte geben Sie einen gültigen Namen ein."
msgid "Please mark as viewed to complete"
msgstr "Bitte als angesehen markieren, um abzuschließen"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:459
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:453
msgid "Please note that proceeding will remove direct linking recipient and turn it into a placeholder."
msgstr "Bitte beachten Sie, dass das Fortfahren den direkten Linkempfänger entfernt und ihn in einen Platzhalter umwandelt."
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:130
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:129
msgid "Please note that this action is <0>irreversible0>."
msgstr "Bitte beachten Sie, dass diese Aktion <0>irreversibel0> ist."
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:121
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:120
msgid "Please note that this action is <0>irreversible0>. Once confirmed, this document will be permanently deleted."
msgstr "Bitte beachten Sie, dass diese Aktion <0>irreversibel0> ist. Nachdem dies bestätigt wurde, wird dieses Dokument dauerhaft gelöscht."
-#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:67
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:62
msgid "Please note that this action is irreversible. Once confirmed, your template will be permanently deleted."
msgstr "Bitte beachten Sie, dass diese Aktion irreversibel ist. Sobald sie bestätigt wird, wird Ihre Vorlage dauerhaft gelöscht."
@@ -3785,6 +3797,10 @@ msgstr "Bitte geben Sie ein Token von Ihrem Authentifizierer oder einen Backup-C
msgid "Please review the document before signing."
msgstr "Bitte überprüfen Sie das Dokument vor der Unterzeichnung."
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:503
+msgid "Please select a PDF file"
+msgstr ""
+
#: apps/web/src/components/forms/send-confirmation-email.tsx:64
msgid "Please try again and make sure you enter the correct email address."
msgstr "Bitte versuchen Sie es erneut und stellen Sie sicher, dass Sie die korrekte E-Mail-Adresse eingeben."
@@ -3793,7 +3809,7 @@ msgstr "Bitte versuchen Sie es erneut und stellen Sie sicher, dass Sie die korre
msgid "Please try again later or login using your normal details"
msgstr "Bitte versuchen Sie es später erneut oder melden Sie sich mit Ihren normalen Daten an"
-#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:80
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:79
msgid "Please try again later."
msgstr "Bitte versuchen Sie es später noch einmal."
@@ -3802,7 +3818,7 @@ msgstr "Bitte versuchen Sie es später noch einmal."
msgid "Please try again or contact our support."
msgstr "Bitte versuchen Sie es erneut oder kontaktieren Sie unseren Support."
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:186
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:185
msgid "Please type {0} to confirm"
msgstr "Bitte {0} eingeben, um zu bestätigen"
@@ -3840,11 +3856,11 @@ msgstr "Private Vorlagen können nur von Ihnen bearbeitet und angezeigt werden."
msgid "Profile"
msgstr "Profil"
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:184
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:183
msgid "Profile is currently <0>hidden0>."
msgstr "Profil ist derzeit <0>versteckt0>."
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:172
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:171
msgid "Profile is currently <0>visible0>."
msgstr "Profil ist derzeit <0>sichtbar0>."
@@ -3906,7 +3922,7 @@ msgstr "Lesen Sie die vollständige <0>Offenlegung der Unterschrift0>."
msgid "Ready"
msgstr "Bereit"
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:289
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:291
msgid "Reason"
msgstr "Grund"
@@ -3935,21 +3951,21 @@ msgstr "Erhält Kopie"
msgid "Recent activity"
msgstr "Aktuelle Aktivitäten"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:45
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:43
msgid "Recent documents"
msgstr "Neueste Dokumente"
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:63
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:116
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:280
-#: packages/lib/utils/document-audit-logs.ts:338
-#: packages/lib/utils/document-audit-logs.ts:353
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:115
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:275
+#: packages/lib/utils/document-audit-logs.ts:354
+#: packages/lib/utils/document-audit-logs.ts:369
msgid "Recipient"
msgstr "Empfänger"
#: packages/ui/components/recipient/recipient-action-auth-select.tsx:39
#: packages/ui/primitives/document-flow/add-settings.tsx:269
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:291
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:337
msgid "Recipient action authentication"
msgstr "Empfängeraktion Authentifizierung"
@@ -3972,7 +3988,7 @@ msgstr "Empfänger aktualisiert"
#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:66
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:49
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recipients.tsx:30
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:139
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:140
msgid "Recipients"
msgstr "Empfänger"
@@ -3980,7 +3996,7 @@ msgstr "Empfänger"
msgid "Recipients metrics"
msgstr "Empfängermetriken"
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:166
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:165
msgid "Recipients will still retain their copy of the document"
msgstr "Empfänger behalten weiterhin ihre Kopie des Dokuments"
@@ -3997,7 +4013,7 @@ msgid "Red"
msgstr "Rot"
#: packages/ui/primitives/document-flow/add-settings.tsx:383
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:461
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:507
msgid "Redirect URL"
msgstr "Weiterleitungs-URL"
@@ -4047,8 +4063,8 @@ msgstr "Erinnerung: Bitte {recipientActionVerb} dieses Dokument"
msgid "Reminder: Please {recipientActionVerb} your document"
msgstr "Erinnerung: Bitte {recipientActionVerb} dein Dokument"
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:193
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:431
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:188
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:425
#: apps/web/src/app/(signing)/sign/[token]/signing-field-container.tsx:156
#: apps/web/src/app/(signing)/sign/[token]/signing-field-container.tsx:180
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:250
@@ -4177,7 +4193,7 @@ msgstr "Zugriff widerrufen"
msgid "Revoke access"
msgstr "Zugriff widerrufen"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:283
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:278
#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:318
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:163
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:80
@@ -4195,12 +4211,12 @@ msgstr "Rollen"
msgid "Rows per page"
msgstr "Zeilen pro Seite"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:446
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:440
#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:337
#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:344
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:312
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:305
-#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:356
+#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:316
msgid "Save"
msgstr "Speichern"
@@ -4266,11 +4282,11 @@ msgstr "Wählen Sie ein Team aus, um dieses Dokument dorthin zu verschieben. Die
msgid "Select a team to move this template to. This action cannot be undone."
msgstr "Wählen Sie ein Team aus, um diese Vorlage dorthin zu verschieben. Diese Aktion kann nicht rückgängig gemacht werden."
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:261
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:259
msgid "Select a template you'd like to display on your public profile"
msgstr "Wählen Sie eine Vorlage aus, die Sie in Ihrem öffentlichen Profil anzeigen möchten"
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:257
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:255
msgid "Select a template you'd like to display on your team's public profile"
msgstr "Wählen Sie eine Vorlage aus, die Sie im öffentlichen Profil Ihres Teams anzeigen möchten"
@@ -4301,7 +4317,7 @@ msgstr "Senden"
msgid "Send confirmation email"
msgstr "Bestätigungs-E-Mail senden"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:325
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:336
msgid "Send document"
msgstr "Dokument senden"
@@ -4362,7 +4378,7 @@ msgid "Sending..."
msgstr "Senden..."
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:101
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:256
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:258
msgid "Sent"
msgstr "Gesendet"
@@ -4381,8 +4397,8 @@ msgstr "Einstellungen"
msgid "Setup"
msgstr "Einrichten"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:148
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:193
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:147
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:187
msgid "Share"
msgstr "Teilen"
@@ -4390,8 +4406,8 @@ msgstr "Teilen"
msgid "Share Signature Card"
msgstr "Unterschriftenkarte teilen"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:179
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:219
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:178
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:213
msgid "Share Signing Card"
msgstr "Signaturkarte teilen"
@@ -4403,7 +4419,7 @@ msgstr "Link teilen"
msgid "Share your signing experience!"
msgstr "Teilen Sie Ihre Unterzeichnungserfahrung!"
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:163
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:162
msgid "Show"
msgstr "Anzeigen"
@@ -4424,9 +4440,9 @@ msgstr "Vorlagen in Ihrem öffentlichen Profil anzeigen, damit Ihre Zielgruppe u
msgid "Show templates in your team public profile for your audience to sign and get started quickly"
msgstr "Vorlagen in Ihrem Team-Öffentliches Profil anzeigen, damit Ihre Zielgruppe unterschreiben und schnell loslegen kann"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:83
-#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:114
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:139
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:82
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:108
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:133
#: apps/web/src/app/(profile)/p/[url]/page.tsx:192
#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:229
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:182
@@ -4506,7 +4522,7 @@ msgid "Sign Up with OIDC"
msgstr "Registrieren mit OIDC"
#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:88
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:177
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:179
#: apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx:342
#: apps/web/src/app/(signing)/sign/[token]/form.tsx:205
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:251
@@ -4521,7 +4537,7 @@ msgstr "Registrieren mit OIDC"
msgid "Signature"
msgstr "Unterschrift"
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:228
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:230
msgid "Signature ID"
msgstr "Signatur-ID"
@@ -4541,7 +4557,7 @@ msgid "Signatures will appear once the document has been completed"
msgstr "Unterschriften erscheinen, sobald das Dokument abgeschlossen ist"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:114
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:278
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:280
#: apps/web/src/components/document/document-read-only-fields.tsx:84
#: packages/lib/constants/recipient-roles.ts:23
msgid "Signed"
@@ -4551,7 +4567,7 @@ msgstr "Unterzeichnet"
msgid "Signer"
msgstr "Unterzeichner"
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:176
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:178
msgid "Signer Events"
msgstr "Signer-Ereignisse"
@@ -4567,11 +4583,11 @@ msgstr "Unterzeichner müssen eindeutige E-Mails haben"
msgid "Signing"
msgstr "Unterzeichnung"
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:168
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:170
msgid "Signing Certificate"
msgstr "Unterzeichnungszertifikat"
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:311
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:313
msgid "Signing certificate provided by"
msgstr "Unterzeichnungszertifikat bereitgestellt von"
@@ -4585,12 +4601,12 @@ msgstr "Unterzeichnung abgeschlossen!"
msgid "Signing in..."
msgstr "Anmeldung..."
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:160
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:203
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:159
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:197
msgid "Signing Links"
msgstr "Signierlinks"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:339
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:315
msgid "Signing links have been generated for this document."
msgstr "Unterzeichnungslinks wurden für dieses Dokument erstellt."
@@ -4625,27 +4641,27 @@ msgid "Some signers have not been assigned a signature field. Please assign at l
msgstr "Einige Unterzeichner haben noch kein Unterschriftsfeld zugewiesen bekommen. Bitte weisen Sie jedem Unterzeichner mindestens ein Unterschriftsfeld zu, bevor Sie fortfahren."
#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:105
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:63
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:91
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-audit-log-button.tsx:65
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:62
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:90
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-audit-log-button.tsx:61
#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-certificate-button.tsx:68
-#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:75
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:106
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:82
-#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:72
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:69
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:100
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:81
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:71
#: apps/web/src/app/(dashboard)/settings/billing/billing-plans.tsx:62
#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:51
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:124
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:123
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:73
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:93
#: apps/web/src/app/(dashboard)/settings/teams/accept-team-invitation-button.tsx:32
#: apps/web/src/app/(dashboard)/settings/teams/decline-team-invitation-button.tsx:32
#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:44
-#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:50
-#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:79
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:104
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:127
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:151
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:45
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:78
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:100
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:123
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:147
#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:118
#: apps/web/src/app/(recipient)/d/[token]/signing-auth-page.tsx:27
#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:38
@@ -4706,7 +4722,7 @@ msgstr "Etwas ist schief gelaufen."
msgid "Something went wrong. Please try again or contact support."
msgstr "Etwas ist schiefgelaufen. Bitte versuchen Sie es erneut oder kontaktieren Sie den Support."
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-audit-log-button.tsx:67
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-audit-log-button.tsx:63
msgid "Sorry, we were unable to download the audit logs. Please try again later."
msgstr "Entschuldigung, wir konnten die Prüfprotokolle nicht herunterladen. Bitte versuchen Sie es später erneut."
@@ -4714,7 +4730,7 @@ msgstr "Entschuldigung, wir konnten die Prüfprotokolle nicht herunterladen. Bit
msgid "Sorry, we were unable to download the certificate. Please try again later."
msgstr "Entschuldigung, wir konnten das Zertifikat nicht herunterladen. Bitte versuchen Sie es später erneut."
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:134
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:133
msgid "Source"
msgstr "Quelle"
@@ -4725,8 +4741,8 @@ msgstr "Statistiken"
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:81
#: apps/web/src/app/(dashboard)/admin/subscriptions/page.tsx:32
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:73
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:126
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:93
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:125
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:94
#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:73
msgid "Status"
msgstr "Status"
@@ -4736,7 +4752,7 @@ msgid "Step <0>{step} of {maxStep}0>"
msgstr "Schritt <0>{step} von {maxStep}0>"
#: packages/ui/primitives/document-flow/add-subject.tsx:143
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:318
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:364
msgid "Subject <0>(Optional)0>"
msgstr "Betreff <0>(Optional)0>"
@@ -4762,8 +4778,8 @@ msgstr "Abonnements"
#: apps/web/src/app/(dashboard)/settings/teams/accept-team-invitation-button.tsx:25
#: apps/web/src/app/(dashboard)/settings/teams/decline-team-invitation-button.tsx:25
#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:37
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:118
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:141
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:114
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:137
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:32
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:44
#: apps/web/src/components/(dashboard)/layout/verify-email-banner.tsx:44
@@ -4783,8 +4799,8 @@ msgstr "Abonnements"
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:60
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:77
#: apps/web/src/components/forms/public-profile-form.tsx:80
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:133
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:170
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:132
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:168
msgid "Success"
msgstr "Erfolg"
@@ -4940,31 +4956,31 @@ msgstr "Teams beschränkt"
#: apps/web/src/app/(dashboard)/templates/[id]/edit/template-edit-page-view.tsx:64
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:39
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:144
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:224
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:143
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:223
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:148
#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:408
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:271
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:269
msgid "Template"
msgstr "Vorlage"
-#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:41
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:36
msgid "Template deleted"
msgstr "Vorlage gelöscht"
-#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:67
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:66
msgid "Template document uploaded"
msgstr "Vorlagendokument hochgeladen"
-#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:42
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:41
msgid "Template duplicated"
msgstr "Vorlage dupliziert"
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:134
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:133
msgid "Template has been removed from your public profile."
msgstr "Vorlage ist von Deinem öffentlichen Profil entfernt worden."
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:171
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:169
msgid "Template has been updated."
msgstr "Vorlage wurde aktualisiert."
@@ -4976,11 +4992,11 @@ msgstr "Vorlage verschoben"
msgid "Template not found or already associated with a team."
msgstr "Vorlage nicht gefunden oder bereits mit einem Team verknüpft."
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:246
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:216
msgid "Template saved"
msgstr "Vorlage gespeichert"
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:145
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:167
msgid "Template title"
msgstr "Vorlagentitel"
@@ -4992,7 +5008,7 @@ msgstr "Vorlagentitel"
msgid "Templates"
msgstr "Vorlagen"
-#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:106
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:105
msgid "Templates allow you to quickly generate documents with pre-filled recipients and fields."
msgstr "Vorlagen erlauben dir das schnelle Erstlelen von Dokumenten mit vorausgefüllten Empfängern und Feldern."
@@ -5044,9 +5060,9 @@ msgstr "Die Authentifizierung, die erforderlich ist, damit Empfänger das Dokume
msgid "The content to show in the banner, HTML is allowed"
msgstr "Der Inhalt, der im Banne rgezeig wird, HTML ist erlaubt"
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:78
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:73
#: apps/web/src/app/(dashboard)/templates/template-direct-link-badge.tsx:32
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:164
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:160
msgid "The direct link has been copied to your clipboard"
msgstr "Der direkte Linkt wurde in die Zwischenablage kopiert"
@@ -5066,15 +5082,15 @@ msgstr "Der Dokumenteninhaber wurde über diese Ablehnung informiert. Es sind de
msgid "The document owner has been notified of your decision. They may contact you with further instructions if necessary."
msgstr "Der Dokumenteneigentümer wurde über Ihre Entscheidung informiert. Er kann Sie bei Bedarf mit weiteren Anweisungen kontaktieren."
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:182
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:194
msgid "The document was created but could not be sent to recipients."
msgstr "Das Dokument wurde erstellt, konnte aber nicht an die Empfänger versendet werden."
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:163
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:162
msgid "The document will be hidden from your account"
msgstr "Das Dokument wird von Ihrem Konto verborgen werden"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:333
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:344
msgid "The document will be immediately sent to recipients if this is checked."
msgstr "Das Dokument wird sofort an die Empfänger gesendet, wenn dies angehakt ist."
@@ -5116,11 +5132,11 @@ msgstr "Der Profil-Link wurde in die Zwischenablage kopiert"
msgid "The profile you are looking for could not be found."
msgstr "Das Profil, nach dem Sie suchen, konnte nicht gefunden werden."
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:380
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:378
msgid "The public description that will be displayed with this template"
msgstr "Die öffentliche Beschreibung, die mit dieser Vorlage angezeigt wird"
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:358
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:356
msgid "The public name for your template"
msgstr "Der öffentliche Name für Ihre Vorlage"
@@ -5199,7 +5215,7 @@ msgstr "Das Team, das Sie suchen, wurde möglicherweise entfernt, umbenannt oder
msgid "The template has been successfully moved to the selected team."
msgstr "Die Vorlage wurde erfolgreich in das ausgewählte Team verschoben."
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:443
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:441
msgid "The template will be removed from your profile"
msgstr "Die Vorlage wird von Ihrem Profil entfernt"
@@ -5268,11 +5284,11 @@ msgstr "Dies kann überschrieben werden, indem die Authentifizierungsanforderung
msgid "This document can not be recovered, if you would like to dispute the reason for future documents please contact support."
msgstr "Dieses Dokument kann nicht wiederhergestellt werden. Wenn du den Grund für zukünftige Dokumente anfechten möchtest, kontaktiere bitte den Support."
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:83
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:82
msgid "This document could not be deleted at this time. Please try again."
msgstr "Dieses Dokument konnte derzeit nicht gelöscht werden. Bitte versuchen Sie es erneut."
-#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:73
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:72
msgid "This document could not be duplicated at this time. Please try again."
msgstr "Dieses Dokument konnte derzeit nicht dupliziert werden. Bitte versuche es erneut."
@@ -5292,11 +5308,11 @@ msgstr "Dieses Dokument wurde vom Eigentümer storniert und steht anderen nicht
msgid "This document has been cancelled by the owner."
msgstr "Dieses Dokument wurde vom Eigentümer storniert."
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:227
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:228
msgid "This document has been signed by all recipients"
msgstr "Dieses Dokument wurde von allen Empfängern unterschrieben"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:230
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:231
msgid "This document is currently a draft and has not been sent"
msgstr "Dieses Dokument ist momentan ein Entwurf und wurde nicht gesendet"
@@ -5304,11 +5320,11 @@ msgstr "Dieses Dokument ist momentan ein Entwurf und wurde nicht gesendet"
msgid "This document is password protected. Please enter the password to view the document."
msgstr "Dieses Dokument ist durch ein Passwort geschützt. Bitte geben Sie das Passwort ein, um das Dokument anzusehen."
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:148
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:147
msgid "This document was created by you or a team member using the template above."
msgstr "Dieses Dokument wurde von Ihnen oder einem Teammitglied unter Verwendung der oben genannten Vorlage erstellt."
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:160
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:159
msgid "This document was created using a direct link."
msgstr "Dieses Dokument wurde mit einem direkten Link erstellt."
@@ -5344,7 +5360,7 @@ msgstr "Diese E-Mail wird an den Empfänger gesendet, der das Dokument gerade un
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."
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:233
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:279
msgid "This is how the document will reach the recipients once the document is ready for signing."
msgstr "So wird das Dokument die Empfänger erreichen, sobald es zum Unterschreiben bereit ist."
@@ -5384,7 +5400,7 @@ msgstr "Dieser Unterzeichner hat das Dokument bereits unterschrieben."
msgid "This team, and any associated data excluding billing invoices will be permanently deleted."
msgstr "Dieses Team und alle zugehörigen Daten, ausgenommen Rechnungen, werden permanent gelöscht."
-#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:51
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:46
msgid "This template could not be deleted at this time. Please try again."
msgstr "Diese Vorlage konnte derzeit nicht gelöscht werden. Bitte versuchen Sie es erneut."
@@ -5434,15 +5450,15 @@ msgstr "Zeit"
msgid "Time zone"
msgstr "Zeitzone"
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:131
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:132
#: packages/ui/primitives/document-flow/add-settings.tsx:359
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:438
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:484
msgid "Time Zone"
msgstr "Zeitzone"
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:67
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:54
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:111
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:110
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:61
#: packages/ui/primitives/document-flow/add-settings.tsx:166
msgid "Title"
@@ -5495,11 +5511,11 @@ msgstr "Um unseren elektronischen Signaturdienst nutzen zu können, müssen Sie
msgid "To view this document you need to be signed into your account, please sign in to continue."
msgstr "Um dieses Dokument anzusehen, müssen Sie in Ihr Konto eingeloggt sein. Bitte melden Sie sich an, um fortzufahren."
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:178
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:177
msgid "Toggle the switch to hide your profile from the public."
msgstr "Schalten Sie den Schalter um, um Ihr Profil vor der Öffentlichkeit zu verbergen."
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:190
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:189
msgid "Toggle the switch to show your profile to the public."
msgstr "Schalten Sie den Schalter um, um Ihr Profil der Öffentlichkeit anzuzeigen."
@@ -5633,7 +5649,7 @@ msgstr "Kann Code zur Wiederherstellung nicht kopieren"
msgid "Unable to copy token"
msgstr "Token kann nicht kopiert werden"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:105
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:101
msgid "Unable to create direct template access. Please try again later."
msgstr "Direkter Zugriff auf die Vorlage kann nicht erstellt werden. Bitte versuche es später noch einmal."
@@ -5662,11 +5678,11 @@ msgstr "Zurzeit kann diesem Team nicht beigetreten werden."
msgid "Unable to load document history"
msgstr "Kann den Dokumentverlauf nicht laden"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:60
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:58
msgid "Unable to load documents"
msgstr "Dokumente können nicht geladen werden"
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:111
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:106
msgid "Unable to load your public profile templates at this time"
msgstr "Derzeit können Ihre öffentlichen Profilvorlagen nicht geladen werden"
@@ -5709,10 +5725,10 @@ msgstr "Nicht autorisiert"
msgid "Uncompleted"
msgstr "Unvollendet"
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:237
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:262
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:273
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:284
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:239
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:264
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:275
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:286
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:55
msgid "Unknown"
msgstr "Unbekannt"
@@ -5725,12 +5741,12 @@ msgstr "Unbekannter Fehler"
msgid "Unpaid"
msgstr "Unbezahlt"
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:181
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:176
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:162
#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:166
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:191
#: apps/web/src/components/forms/public-profile-form.tsx:279
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:428
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:426
#: packages/ui/primitives/document-flow/add-subject.tsx:86
msgid "Update"
msgstr "Aktualisieren"
@@ -5802,10 +5818,18 @@ msgstr "Aktualisierung Ihrer Informationen"
msgid "Upgrade"
msgstr "Upgrade"
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:426
+msgid "Upload a custom document to use instead of the template's default document"
+msgstr ""
+
#: apps/web/src/components/forms/avatar-image.tsx:179
msgid "Upload Avatar"
msgstr "Avatar hochladen"
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:419
+msgid "Upload custom document"
+msgstr ""
+
#: packages/ui/primitives/signature-pad/signature-pad.tsx:529
msgid "Upload Signature"
msgstr "Signatur hochladen"
@@ -5849,7 +5873,7 @@ msgstr "Authenticator verwenden"
msgid "Use Backup Code"
msgstr "Backup-Code verwenden"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:207
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:219
msgid "Use Template"
msgstr "Vorlage verwenden"
@@ -5930,14 +5954,14 @@ msgstr "Überprüfen Sie Ihre E-Mail, um Dokumente hochzuladen."
msgid "Verify your team email address"
msgstr "Überprüfen Sie Ihre Team-E-Mail-Adresse"
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:75
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:76
msgid "Version History"
msgstr "Versionsverlauf"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:95
-#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:126
-#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:135
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:132
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:94
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:120
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:129
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:126
#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:100
#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:168
#: packages/lib/constants/recipient-roles.ts:29
@@ -5960,7 +5984,7 @@ msgstr "Alle Dokumente anzeigen, die an Ihr Konto gesendet wurden"
msgid "View all recent security activity related to your account."
msgstr "Sehen Sie sich alle aktuellen Sicherheitsaktivitäten in Ihrem Konto an."
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:155
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:153
msgid "View all related documents"
msgstr "Alle verwandten Dokumente anzeigen"
@@ -5992,7 +6016,7 @@ msgstr "Dokumente ansehen, die mit dieser E-Mail verknüpft sind"
msgid "View invites"
msgstr "Einladungen ansehen"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:93
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:91
msgid "View more"
msgstr "Mehr anzeigen"
@@ -6014,7 +6038,7 @@ msgid "View teams"
msgstr "Teams ansehen"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:120
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:267
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:269
#: packages/lib/constants/recipient-roles.ts:30
msgid "Viewed"
msgstr "Betrachtet"
@@ -6073,7 +6097,7 @@ msgstr "Wir können diesen Schlüssel im Moment nicht entfernen. Bitte versuchen
msgid "We are unable to update this passkey at the moment. Please try again later."
msgstr "Wir können diesen Schlüssel im Moment nicht aktualisieren. Bitte versuchen Sie es später erneut."
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:153
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:149
msgid "We encountered an error while removing the direct template link. Please try again later."
msgstr "Wir sind auf einen Fehler gestoßen, während wir den direkten Vorlagenlink entfernt haben. Bitte versuchen Sie es später erneut."
@@ -6123,7 +6147,7 @@ msgstr "Wir sind auf einen unbekannten Fehler gestoßen, während wir versucht h
msgid "We encountered an unknown error while attempting to leave this team. Please try again later."
msgstr "Wir sind auf einen unbekannten Fehler gestoßen, während wir versucht haben, dieses Team zu verlassen. Bitte versuchen Sie es später erneut."
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:143
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:142
msgid "We encountered an unknown error while attempting to remove this template from your profile. Please try again later."
msgstr "Wir sind auf einen unbekannten Fehler gestoßen, während wir versucht haben, diese Vorlage aus Ihrem Profil zu entfernen. Bitte versuchen Sie es später erneut."
@@ -6169,7 +6193,7 @@ msgstr "Wir sind auf einen unbekannten Fehler gestoßen, während wir versucht h
msgid "We encountered an unknown error while attempting to update the banner. Please try again later."
msgstr "Wir sind auf einen unbekannten Fehler gestoßen, während wir versucht haben, das Banner zu aktualisieren. Bitte versuchen Sie es später erneut."
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:180
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:178
msgid "We encountered an unknown error while attempting to update the template. Please try again later."
msgstr "Wir sind auf einen unbekannten Fehler gestoßen, während wir versucht haben, die Vorlage zu aktualisieren. Bitte versuchen Sie es später erneut."
@@ -6231,7 +6255,7 @@ msgstr "Wir konnten die Zwei-Faktor-Authentifizierung für Ihr Konto nicht deakt
msgid "We were unable to log you out at this time."
msgstr "Wir konnten Sie zurzeit nicht abmelden."
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:125
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:124
msgid "We were unable to set your public profile to public. Please try again."
msgstr "Wir konnten Ihr öffentliches Profil nicht auf öffentlich setzen. Bitte versuchen Sie es erneut."
@@ -6266,11 +6290,11 @@ msgstr "Wir konnten Ihre E-Mail nicht bestätigen. Wenn Ihre E-Mail noch nicht b
msgid "We will generate signing links for with you, which you can send to the recipients through your method of choice."
msgstr "Wir generieren Signierlinks mit Ihnen, die Sie den Empfängern über Ihre bevorzugte Methode senden können."
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:369
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:382
msgid "We will generate signing links for you, which you can send to the recipients through your method of choice."
msgstr "Wir werden Unterzeichnungslinks für Sie erstellen, die Sie an die Empfänger über Ihre bevorzugte Methode senden können."
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:365
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:378
#: packages/ui/primitives/document-flow/add-subject.tsx:201
msgid "We won't send anything to notify recipients."
msgstr "Wir werden nichts senden, um die Empfänger zu benachrichtigen."
@@ -6376,13 +6400,13 @@ msgstr "Schreiben Sie über sich selbst"
msgid "Yearly"
msgstr "Jährlich"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:32
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:31
-#: packages/lib/utils/document-audit-logs.ts:258
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:33
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:32
+#: packages/lib/utils/document-audit-logs.ts:274
msgid "You"
msgstr "Du"
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:105
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:104
msgid "You are about to delete <0>\"{documentTitle}\"0>"
msgstr "Sie sind dabei, <0>\"{documentTitle}\"0> zu löschen"
@@ -6390,7 +6414,7 @@ msgstr "Sie sind dabei, <0>\"{documentTitle}\"0> zu löschen"
msgid "You are about to delete the following team email from <0>{teamName}0>."
msgstr "Sie stehen kurz davor, die folgende Team-E-Mail von <0>{teamName}0> zu löschen."
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:109
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:108
msgid "You are about to hide <0>\"{documentTitle}\"0>"
msgstr "Sie sind dabei, <0>\"{documentTitle}\"0> zu verstecken"
@@ -6490,7 +6514,7 @@ msgstr "Sie können ein Teammitglied, das eine höhere Rolle als Sie hat, nicht
msgid "You cannot upload documents at this time."
msgstr "Sie können derzeit keine Dokumente hochladen."
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:106
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:105
msgid "You cannot upload encrypted PDFs"
msgstr "Sie können keine verschlüsselten PDFs hochladen"
@@ -6527,7 +6551,8 @@ msgstr "Du wurdest eingeladen, {0} auf Documenso beizutreten"
msgid "You have been invited to join the following team"
msgstr "Du wurdest eingeladen, dem folgenden Team beizutreten"
-#: packages/lib/server-only/recipient/set-recipients-for-document.ts:337
+#: packages/lib/server-only/recipient/delete-document-recipient.ts:156
+#: packages/lib/server-only/recipient/set-document-recipients.ts:326
msgid "You have been removed from a document"
msgstr "Du wurdest von einem Dokument entfernt"
@@ -6557,7 +6582,7 @@ msgstr "Sie haben noch keine Vorlagen erstellt. Bitte laden Sie eine Datei hoch,
msgid "You have not yet created or received any documents. To create a document please upload one."
msgstr "Sie haben noch keine Dokumente erstellt oder erhalten. Bitte laden Sie ein Dokument hoch, um eines zu erstellen."
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:234
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:229
msgid "You have reached the maximum limit of {0} direct templates. <0>Upgrade your account to continue!0>"
msgstr "Sie haben das maximale Limit von {0} direkten Vorlagen erreicht. <0>Upgrade your account to continue!0>"
@@ -6626,7 +6651,7 @@ msgstr "Sie müssen '{deleteMessage}' eingeben, um fortzufahren"
msgid "You must have at least one other team member to transfer ownership."
msgstr "Sie müssen mindestens einen anderen Teamkollegen haben, um die Eigentumsübertragung durchzuführen."
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:109
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:108
msgid "You must set a profile URL before enabling your public profile."
msgstr "Sie müssen eine Profil-URL festlegen, bevor Sie Ihr öffentliches Profil aktivieren."
@@ -6678,15 +6703,15 @@ msgstr "Ihre Markenpräferenzen wurden aktualisiert"
msgid "Your current plan is past due. Please update your payment information."
msgstr "Ihr aktueller Plan ist überfällig. Bitte aktualisieren Sie Ihre Zahlungsinformationen."
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:251
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:249
msgid "Your direct signing templates"
msgstr "Ihre direkten Unterzeichnungsvorlagen"
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:129
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:128
msgid "Your document failed to upload."
msgstr "Ihr Dokument konnte nicht hochgeladen werden."
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:157
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:169
msgid "Your document has been created from the template successfully."
msgstr "Ihr Dokument wurde erfolgreich aus der Vorlage erstellt."
@@ -6698,19 +6723,19 @@ msgstr "Dein Dokument wurde von einem Administrator gelöscht!"
msgid "Your document has been re-sent successfully."
msgstr "Ihr Dokument wurde erfolgreich erneut gesendet."
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:328
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:304
msgid "Your document has been sent successfully."
msgstr "Ihr Dokument wurde erfolgreich gesendet."
-#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:59
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:58
msgid "Your document has been successfully duplicated."
msgstr "Ihr Dokument wurde erfolgreich dupliziert."
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:87
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:86
msgid "Your document has been uploaded successfully."
msgstr "Ihr Dokument wurde erfolgreich hochgeladen."
-#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:69
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:68
msgid "Your document has been uploaded successfully. You will be redirected to the template page."
msgstr "Ihr Dokument wurde erfolgreich hochgeladen. Sie werden zur Vorlagenseite weitergeleitet."
@@ -6795,19 +6820,19 @@ msgstr "Ihr Team wurde erfolgreich gelöscht."
msgid "Your team has been successfully updated."
msgstr "Ihr Team wurde erfolgreich aktualisiert."
-#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:43
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:42
msgid "Your template has been duplicated successfully."
msgstr "Ihre Vorlage wurde erfolgreich dupliziert."
-#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:42
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:37
msgid "Your template has been successfully deleted."
msgstr "Ihre Vorlage wurde erfolgreich gelöscht."
-#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:67
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:66
msgid "Your template will be duplicated."
msgstr "Ihre Vorlage wird dupliziert."
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:247
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:217
msgid "Your templates has been saved successfully."
msgstr "Ihre Vorlagen wurden erfolgreich gespeichert."
@@ -6823,4 +6848,3 @@ msgstr "Ihr Token wurde erfolgreich erstellt! Stellen Sie sicher, dass Sie es ko
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:86
msgid "Your tokens will be shown here once you create them."
msgstr "Ihre Tokens werden hier angezeigt, sobald Sie sie erstellt haben."
-
diff --git a/packages/lib/translations/en/web.po b/packages/lib/translations/en/web.po
index 86ccafac1..fa62fbc18 100644
--- a/packages/lib/translations/en/web.po
+++ b/packages/lib/translations/en/web.po
@@ -33,7 +33,7 @@ msgstr "“{documentName}” has been signed"
msgid "“{documentName}” was signed by all signers"
msgstr "“{documentName}” was signed by all signers"
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:62
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:61
msgid "\"{documentTitle}\" has been successfully deleted"
msgstr "\"{documentTitle}\" has been successfully deleted"
@@ -46,7 +46,7 @@ msgid "{0, plural, one {(1 character over)} other {(# characters over)}}"
msgstr "{0, plural, one {(1 character over)} other {(# characters over)}}"
#: apps/web/src/components/forms/public-profile-form.tsx:237
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:395
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:393
msgid "{0, plural, one {# character over the limit} other {# characters over the limit}}"
msgstr "{0, plural, one {# character over the limit} other {# characters over the limit}}"
@@ -71,7 +71,7 @@ msgstr "{0, plural, one {1 matching field} other {# matching fields}}"
msgid "{0, plural, one {1 Recipient} other {# Recipients}}"
msgstr "{0, plural, one {1 Recipient} other {# Recipients}}"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:238
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:239
msgid "{0, plural, one {Waiting on 1 recipient} other {Waiting on # recipients}}"
msgstr "{0, plural, one {Waiting on 1 recipient} other {Waiting on # recipients}}"
@@ -83,7 +83,7 @@ msgstr "{0, plural, zero {Select values} other {# selected...}}"
msgid "{0}"
msgstr "{0}"
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:249
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:247
msgid "{0} direct signing templates"
msgstr "{0} direct signing templates"
@@ -103,7 +103,7 @@ msgstr "{0} joined the team {teamName} on Documenso"
msgid "{0} left the team {teamName} on Documenso"
msgstr "{0} left the team {teamName} on Documenso"
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:151
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:150
msgid "{0} of {1} documents remaining this month."
msgstr "{0} of {1} documents remaining this month."
@@ -116,7 +116,7 @@ msgstr "{0} of {1} row(s) selected."
msgid "{0} on behalf of \"{1}\" has invited you to {recipientActionVerb} the document \"{2}\"."
msgstr "{0} on behalf of \"{1}\" has invited you to {recipientActionVerb} the document \"{2}\"."
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:173
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:174
msgid "{0} Recipient(s)"
msgstr "{0} Recipient(s)"
@@ -176,87 +176,87 @@ msgstr "{memberEmail} left the following team"
msgid "{numberOfSeats, plural, one {# member} other {# members}}"
msgstr "{numberOfSeats, plural, one {# member} other {# members}}"
-#: packages/lib/utils/document-audit-logs.ts:263
+#: packages/lib/utils/document-audit-logs.ts:279
msgid "{prefix} added a field"
msgstr "{prefix} added a field"
-#: packages/lib/utils/document-audit-logs.ts:275
+#: packages/lib/utils/document-audit-logs.ts:291
msgid "{prefix} added a recipient"
msgstr "{prefix} added a recipient"
-#: packages/lib/utils/document-audit-logs.ts:287
+#: packages/lib/utils/document-audit-logs.ts:303
msgid "{prefix} created the document"
msgstr "{prefix} created the document"
-#: packages/lib/utils/document-audit-logs.ts:291
+#: packages/lib/utils/document-audit-logs.ts:307
msgid "{prefix} deleted the document"
msgstr "{prefix} deleted the document"
-#: packages/lib/utils/document-audit-logs.ts:335
+#: packages/lib/utils/document-audit-logs.ts:351
msgid "{prefix} moved the document to team"
msgstr "{prefix} moved the document to team"
-#: packages/lib/utils/document-audit-logs.ts:319
+#: packages/lib/utils/document-audit-logs.ts:335
msgid "{prefix} opened the document"
msgstr "{prefix} opened the document"
-#: packages/lib/utils/document-audit-logs.ts:267
+#: packages/lib/utils/document-audit-logs.ts:283
msgid "{prefix} removed a field"
msgstr "{prefix} removed a field"
-#: packages/lib/utils/document-audit-logs.ts:279
+#: packages/lib/utils/document-audit-logs.ts:295
msgid "{prefix} removed a recipient"
msgstr "{prefix} removed a recipient"
-#: packages/lib/utils/document-audit-logs.ts:365
+#: packages/lib/utils/document-audit-logs.ts:381
msgid "{prefix} resent an email to {0}"
msgstr "{prefix} resent an email to {0}"
-#: packages/lib/utils/document-audit-logs.ts:366
+#: packages/lib/utils/document-audit-logs.ts:382
msgid "{prefix} sent an email to {0}"
msgstr "{prefix} sent an email to {0}"
-#: packages/lib/utils/document-audit-logs.ts:331
+#: packages/lib/utils/document-audit-logs.ts:347
msgid "{prefix} sent the document"
msgstr "{prefix} sent the document"
-#: packages/lib/utils/document-audit-logs.ts:295
+#: packages/lib/utils/document-audit-logs.ts:311
msgid "{prefix} signed a field"
msgstr "{prefix} signed a field"
-#: packages/lib/utils/document-audit-logs.ts:299
+#: packages/lib/utils/document-audit-logs.ts:315
msgid "{prefix} unsigned a field"
msgstr "{prefix} unsigned a field"
-#: packages/lib/utils/document-audit-logs.ts:271
+#: packages/lib/utils/document-audit-logs.ts:287
msgid "{prefix} updated a field"
msgstr "{prefix} updated a field"
-#: packages/lib/utils/document-audit-logs.ts:283
+#: packages/lib/utils/document-audit-logs.ts:299
msgid "{prefix} updated a recipient"
msgstr "{prefix} updated a recipient"
-#: packages/lib/utils/document-audit-logs.ts:315
+#: packages/lib/utils/document-audit-logs.ts:331
msgid "{prefix} updated the document"
msgstr "{prefix} updated the document"
-#: packages/lib/utils/document-audit-logs.ts:307
+#: packages/lib/utils/document-audit-logs.ts:323
msgid "{prefix} updated the document access auth requirements"
msgstr "{prefix} updated the document access auth requirements"
-#: packages/lib/utils/document-audit-logs.ts:327
+#: packages/lib/utils/document-audit-logs.ts:343
msgid "{prefix} updated the document external ID"
msgstr "{prefix} updated the document external ID"
-#: packages/lib/utils/document-audit-logs.ts:311
+#: packages/lib/utils/document-audit-logs.ts:327
msgid "{prefix} updated the document signing auth requirements"
msgstr "{prefix} updated the document signing auth requirements"
-#: packages/lib/utils/document-audit-logs.ts:323
+#: packages/lib/utils/document-audit-logs.ts:339
msgid "{prefix} updated the document title"
msgstr "{prefix} updated the document title"
-#: packages/lib/utils/document-audit-logs.ts:303
+#: packages/lib/utils/document-audit-logs.ts:319
msgid "{prefix} updated the document visibility"
msgstr "{prefix} updated the document visibility"
@@ -293,7 +293,7 @@ msgid "{recipientReference} has signed {documentName}"
msgstr "{recipientReference} has signed {documentName}"
#: apps/web/src/components/forms/public-profile-form.tsx:231
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:389
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:387
msgid "{remaningLength, plural, one {# character remaining} other {# characters remaining}}"
msgstr "{remaningLength, plural, one {# character remaining} other {# characters remaining}}"
@@ -313,27 +313,27 @@ msgstr "{teamName} has invited you to {action} {documentName}"
msgid "{teamName} ownership transfer request"
msgstr "{teamName} ownership transfer request"
-#: packages/lib/utils/document-audit-logs.ts:343
+#: packages/lib/utils/document-audit-logs.ts:359
msgid "{userName} approved the document"
msgstr "{userName} approved the document"
-#: packages/lib/utils/document-audit-logs.ts:344
+#: packages/lib/utils/document-audit-logs.ts:360
msgid "{userName} CC'd the document"
msgstr "{userName} CC'd the document"
-#: packages/lib/utils/document-audit-logs.ts:345
+#: packages/lib/utils/document-audit-logs.ts:361
msgid "{userName} completed their task"
msgstr "{userName} completed their task"
-#: packages/lib/utils/document-audit-logs.ts:355
+#: packages/lib/utils/document-audit-logs.ts:371
msgid "{userName} rejected the document"
msgstr "{userName} rejected the document"
-#: packages/lib/utils/document-audit-logs.ts:341
+#: packages/lib/utils/document-audit-logs.ts:357
msgid "{userName} signed the document"
msgstr "{userName} signed the document"
-#: packages/lib/utils/document-audit-logs.ts:342
+#: packages/lib/utils/document-audit-logs.ts:358
msgid "{userName} viewed the document"
msgstr "{userName} viewed the document"
@@ -353,7 +353,11 @@ msgstr "<0>{senderName}0> has requested that you take ownership of the followi
msgid "<0>{teamName}0> has requested to use your email address for their team on Documenso."
msgstr "<0>{teamName}0> has requested to use your email address for their team on Documenso."
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:241
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:463
+msgid "<0>Click to upload0> or drag and drop"
+msgstr "<0>Click to upload0> or drag and drop"
+
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:287
msgid "<0>Email0> - The recipient will be emailed the document to sign, approve, etc."
msgstr "<0>Email0> - The recipient will be emailed the document to sign, approve, etc."
@@ -373,11 +377,11 @@ msgstr "<0>No restrictions0> - The document can be accessed directly by the UR
msgid "<0>None0> - No authentication required"
msgstr "<0>None0> - No authentication required"
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:247
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:293
msgid "<0>None0> - We will generate links which you can send to the recipients manually."
msgstr "<0>None0> - We will generate links which you can send to the recipients manually."
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:254
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:300
msgid "<0>Note0> - If you use Links in combination with direct templates, you will need to manually send the links to the remaining recipients."
msgstr "<0>Note0> - If you use Links in combination with direct templates, you will need to manually send the links to the remaining recipients."
@@ -459,19 +463,19 @@ msgstr "A device capable of accessing, opening, and reading documents"
msgid "A document was created by your direct template that requires you to {recipientActionVerb} it."
msgstr "A document was created by your direct template that requires you to {recipientActionVerb} it."
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:218
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:230
msgid "A draft document will be created"
msgstr "A draft document will be created"
-#: packages/lib/utils/document-audit-logs.ts:262
+#: packages/lib/utils/document-audit-logs.ts:278
msgid "A field was added"
msgstr "A field was added"
-#: packages/lib/utils/document-audit-logs.ts:266
+#: packages/lib/utils/document-audit-logs.ts:282
msgid "A field was removed"
msgstr "A field was removed"
-#: packages/lib/utils/document-audit-logs.ts:270
+#: packages/lib/utils/document-audit-logs.ts:286
msgid "A field was updated"
msgstr "A field was updated"
@@ -492,15 +496,15 @@ msgstr "A new token was created successfully."
msgid "A password reset email has been sent, if you have an account you should see it in your inbox shortly."
msgstr "A password reset email has been sent, if you have an account you should see it in your inbox shortly."
-#: packages/lib/utils/document-audit-logs.ts:274
+#: packages/lib/utils/document-audit-logs.ts:290
msgid "A recipient was added"
msgstr "A recipient was added"
-#: packages/lib/utils/document-audit-logs.ts:278
+#: packages/lib/utils/document-audit-logs.ts:294
msgid "A recipient was removed"
msgstr "A recipient was removed"
-#: packages/lib/utils/document-audit-logs.ts:282
+#: packages/lib/utils/document-audit-logs.ts:298
msgid "A recipient was updated"
msgstr "A recipient was updated"
@@ -607,17 +611,17 @@ msgstr "Account Re-Authentication"
msgid "Acknowledgment"
msgstr "Acknowledgment"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:108
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:107
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:98
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:123
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:164
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:117
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:159
#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:116
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:46
msgid "Action"
msgstr "Action"
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:79
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:177
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:176
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:140
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:131
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:140
@@ -645,16 +649,16 @@ msgid "Add a document"
msgstr "Add a document"
#: packages/ui/primitives/document-flow/add-settings.tsx:390
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:468
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:514
msgid "Add a URL to redirect the user to once the document is signed"
msgstr "Add a URL to redirect the user to once the document is signed"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:177
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:88
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:153
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:87
msgid "Add all relevant fields for each recipient."
msgstr "Add all relevant fields for each recipient."
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:83
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:82
msgid "Add all relevant placeholders for each recipient."
msgstr "Add all relevant placeholders for each recipient."
@@ -670,7 +674,7 @@ msgstr "Add an authenticator to serve as a secondary authentication method when
msgid "Add an external ID to the document. This can be used to identify the document in external systems."
msgstr "Add an external ID to the document. This can be used to identify the document in external systems."
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:385
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:431
msgid "Add an external ID to the template. This can be used to identify in external systems."
msgstr "Add an external ID to the template. This can be used to identify in external systems."
@@ -687,8 +691,8 @@ msgstr "Add another value"
msgid "Add email"
msgstr "Add email"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:176
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:87
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:152
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:86
msgid "Add Fields"
msgstr "Add Fields"
@@ -713,7 +717,7 @@ msgstr "Add passkey"
msgid "Add Placeholder Recipient"
msgstr "Add Placeholder Recipient"
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:82
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:81
msgid "Add Placeholders"
msgstr "Add Placeholders"
@@ -721,7 +725,7 @@ msgstr "Add Placeholders"
msgid "Add Signer"
msgstr "Add Signer"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:171
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:147
msgid "Add Signers"
msgstr "Add Signers"
@@ -737,11 +741,11 @@ msgstr "Add text"
msgid "Add text to the field"
msgstr "Add text to the field"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:172
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:148
msgid "Add the people who will sign the document."
msgstr "Add the people who will sign the document."
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:220
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:232
msgid "Add the recipients to create the document with"
msgstr "Add the recipients to create the document with"
@@ -766,7 +770,7 @@ msgid "Admin panel"
msgstr "Admin panel"
#: packages/ui/primitives/document-flow/add-settings.tsx:284
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:367
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:413
msgid "Advanced Options"
msgstr "Advanced Options"
@@ -799,11 +803,11 @@ msgstr "All documents have been processed. Any new documents that are sent or re
msgid "All documents related to the electronic signing process will be provided to you electronically through our platform or via email. It is your responsibility to ensure that your email address is current and that you can receive and open our emails."
msgstr "All documents related to the electronic signing process will be provided to you electronically through our platform or via email. It is your responsibility to ensure that your email address is current and that you can receive and open our emails."
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:147
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:146
msgid "All inserted signatures will be voided"
msgstr "All inserted signatures will be voided"
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:150
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:149
msgid "All recipients will be notified"
msgstr "All recipients will be notified"
@@ -873,16 +877,16 @@ msgstr "An email requesting the transfer of this team has been sent."
msgid "An error occurred"
msgstr "An error occurred"
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:257
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:227
msgid "An error occurred while adding fields."
msgstr "An error occurred while adding fields."
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:269
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:218
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:243
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:187
msgid "An error occurred while adding signers."
msgstr "An error occurred while adding signers."
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:304
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:281
msgid "An error occurred while adding the fields."
msgstr "An error occurred while adding the fields."
@@ -890,7 +894,7 @@ msgstr "An error occurred while adding the fields."
msgid "An error occurred while auto-signing the document, some fields may not be signed. Please review and manually sign any remaining fields."
msgstr "An error occurred while auto-signing the document, some fields may not be signed. Please review and manually sign any remaining fields."
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:176
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:188
msgid "An error occurred while creating document from template."
msgstr "An error occurred while creating document from template."
@@ -898,7 +902,7 @@ msgstr "An error occurred while creating document from template."
msgid "An error occurred while creating the webhook. Please try again."
msgstr "An error occurred while creating the webhook. Please try again."
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:124
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:120
msgid "An error occurred while disabling direct link signing."
msgstr "An error occurred while disabling direct link signing."
@@ -906,18 +910,18 @@ msgstr "An error occurred while disabling direct link signing."
msgid "An error occurred while disabling the user."
msgstr "An error occurred while disabling the user."
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:64
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:92
-#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:76
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:107
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:63
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:91
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:70
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:101
msgid "An error occurred while downloading your document."
msgstr "An error occurred while downloading your document."
-#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:52
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:51
msgid "An error occurred while duplicating template."
msgstr "An error occurred while duplicating template."
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:123
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:119
msgid "An error occurred while enabling direct link signing."
msgstr "An error occurred while enabling direct link signing."
@@ -960,7 +964,7 @@ msgstr "An error occurred while removing the signature."
msgid "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:350
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:326
msgid "An error occurred while sending the document."
msgstr "An error occurred while sending the document."
@@ -985,8 +989,8 @@ msgstr "An error occurred while signing the document."
msgid "An error occurred while trying to create a checkout session."
msgstr "An error occurred while trying to create a checkout session."
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:235
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:187
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:210
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:156
msgid "An error occurred while updating the document settings."
msgstr "An error occurred while updating the document settings."
@@ -998,7 +1002,7 @@ msgstr "An error occurred while updating the signature."
msgid "An error occurred while updating your profile."
msgstr "An error occurred while updating your profile."
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:118
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:117
msgid "An error occurred while uploading your document."
msgstr "An error occurred while uploading your document."
@@ -1034,8 +1038,8 @@ msgstr "An error occurred while uploading your document."
#: apps/web/src/components/forms/token.tsx:143
#: apps/web/src/components/forms/v2/signup.tsx:187
#: apps/web/src/components/forms/v2/signup.tsx:201
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:141
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:178
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:140
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:176
msgid "An unknown error occurred"
msgstr "An unknown error occurred"
@@ -1043,11 +1047,11 @@ msgstr "An unknown error occurred"
msgid "Any payment methods attached to this team will remain attached to this team. Please contact us if you need to update this information."
msgstr "Any payment methods attached to this team will remain attached to this team. Please contact us if you need to update this information."
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:221
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:220
msgid "Any Source"
msgstr "Any Source"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:201
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:200
msgid "Any Status"
msgstr "Any Status"
@@ -1065,9 +1069,9 @@ msgstr "API Tokens"
msgid "App Version"
msgstr "App Version"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:89
-#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:120
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:146
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:88
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:114
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:140
#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:143
#: packages/lib/constants/recipient-roles.ts:8
msgid "Approve"
@@ -1111,13 +1115,13 @@ msgstr "Are you sure you want to remove the <0>{passkeyName}0> passkey."
msgid "Are you sure you wish to delete this team?"
msgstr "Are you sure you wish to delete this team?"
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:100
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:99
#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:94
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:455
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:449
#: apps/web/src/components/(teams)/dialogs/delete-team-member-dialog.tsx:81
#: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:81
#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:116
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:439
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:437
msgid "Are you sure?"
msgstr "Are you sure?"
@@ -1125,11 +1129,11 @@ msgstr "Are you sure?"
msgid "Attempts sealing the document again, useful for after a code change has occurred to resolve an erroneous document."
msgstr "Attempts sealing the document again, useful for after a code change has occurred to resolve an erroneous document."
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:130
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:129
msgid "Audit Log"
msgstr "Audit Log"
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:198
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:200
msgid "Authentication Level"
msgstr "Authentication Level"
@@ -1235,7 +1239,7 @@ msgstr "By accepting this request, you will be granting <0>{teamName}0> access
msgid "By accepting this request, you will take responsibility for any billing items associated with this team."
msgstr "By accepting this request, you will take responsibility for any billing items associated with this team."
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:158
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:157
msgid "By deleting this document, the following will occur:"
msgstr "By deleting this document, the following will occur:"
@@ -1256,17 +1260,17 @@ msgid "By using the electronic signature feature, you are consenting to conduct
msgstr "By using the electronic signature feature, you are consenting to conduct transactions and receive disclosures electronically. You acknowledge that your electronic signature on documents is binding and that you accept the terms outlined in the documents you are signing."
#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:185
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:192
-#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:108
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:191
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:107
#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:120
#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:248
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:157
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:198
#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:109
-#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:81
-#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:78
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:76
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:77
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:131
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:472
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:466
#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:220
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:178
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-account.tsx:71
@@ -1297,8 +1301,8 @@ msgstr "By using the electronic signature feature, you are consenting to conduct
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:187
#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:257
#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:163
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:450
-#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:357
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:448
+#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:317
#: packages/ui/primitives/document-flow/send-document-action-dialog.tsx:58
msgid "Cancel"
msgstr "Cancel"
@@ -1348,15 +1352,15 @@ msgstr "Checkbox values"
msgid "Checkout"
msgstr "Checkout"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:271
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:266
msgid "Choose an existing recipient from below to continue"
msgstr "Choose an existing recipient from below to continue"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:267
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:262
msgid "Choose Direct Link Recipient"
msgstr "Choose Direct Link Recipient"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:182
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:158
msgid "Choose how the document will reach recipients"
msgstr "Choose how the document will reach recipients"
@@ -1380,6 +1384,10 @@ msgstr "Claim your profile later"
msgid "Claim your username now"
msgstr "Claim your username now"
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:537
+msgid "Clear file"
+msgstr "Clear file"
+
#: packages/ui/primitives/data-table.tsx:156
msgid "Clear filters"
msgstr "Clear filters"
@@ -1388,13 +1396,13 @@ msgstr "Clear filters"
msgid "Clear Signature"
msgstr "Clear Signature"
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:130
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:125
msgid "Click here to get started"
msgstr "Click here to get started"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:76
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:118
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:66
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:113
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:64
#: apps/web/src/components/document/document-history-sheet.tsx:133
msgid "Click here to retry"
msgstr "Click here to retry"
@@ -1415,16 +1423,16 @@ msgstr "Click to copy signing link for sending to recipient"
msgid "Click to insert field"
msgstr "Click to insert field"
-#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:126
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:388
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:125
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:556
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:125
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:138
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:121
#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:140
#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:180
#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:102
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:319
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:423
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:317
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:421
#: packages/ui/primitives/document-flow/missing-signature-field-dialog.tsx:44
msgid "Close"
msgstr "Close"
@@ -1448,7 +1456,7 @@ msgstr "Complete Signing"
msgid "Complete Viewing"
msgstr "Complete Viewing"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:204
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:203
#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:77
#: apps/web/src/components/formatter/document-status.tsx:28
#: packages/email/template-components/template-document-completed.tsx:35
@@ -1475,15 +1483,15 @@ msgstr "Completed Documents"
msgid "Configure Direct Recipient"
msgstr "Configure Direct Recipient"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:167
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:143
msgid "Configure general settings for the document."
msgstr "Configure general settings for the document."
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:78
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:77
msgid "Configure general settings for the template."
msgstr "Configure general settings for the template."
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:337
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:335
msgid "Configure template"
msgstr "Configure template"
@@ -1492,8 +1500,8 @@ msgstr "Configure template"
msgid "Configure the {0} field"
msgstr "Configure the {0} field"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:481
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:460
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:475
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:458
msgid "Confirm"
msgstr "Confirm"
@@ -1541,7 +1549,7 @@ msgstr "Content"
#: apps/web/src/app/(unauthenticated)/team/verify/email/[token]/page.tsx:143
#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:72
#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:122
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:328
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:326
#: packages/ui/primitives/document-flow/document-flow-root.tsx:141
msgid "Continue"
msgstr "Continue"
@@ -1592,9 +1600,9 @@ msgid "Copied"
msgstr "Copied"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:162
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:77
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:72
#: apps/web/src/app/(dashboard)/templates/template-direct-link-badge.tsx:31
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:163
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:159
#: apps/web/src/components/(dashboard)/avatar/avatar-with-recipient.tsx:40
#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:61
#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:117
@@ -1613,11 +1621,11 @@ msgstr "Copy"
msgid "Copy Link"
msgstr "Copy Link"
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:169
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:164
msgid "Copy sharable link"
msgstr "Copy sharable link"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:397
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:391
msgid "Copy Shareable Link"
msgstr "Copy Shareable Link"
@@ -1652,15 +1660,15 @@ msgstr "Create a team to collaborate with your team members."
msgid "Create account"
msgstr "Create account"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:396
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:564
msgid "Create and send"
msgstr "Create and send"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:394
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:562
msgid "Create as draft"
msgstr "Create as draft"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:354
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:365
msgid "Create as pending"
msgstr "Create as pending"
@@ -1668,11 +1676,11 @@ msgstr "Create as pending"
msgid "Create Direct Link"
msgstr "Create Direct Link"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:202
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:197
msgid "Create Direct Signing Link"
msgstr "Create Direct Signing Link"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:214
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:226
msgid "Create document from template"
msgstr "Create document from template"
@@ -1680,11 +1688,11 @@ msgstr "Create document from template"
msgid "Create now"
msgstr "Create now"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:352
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:346
msgid "Create one automatically"
msgstr "Create one automatically"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:398
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:566
msgid "Create signing links"
msgstr "Create signing links"
@@ -1699,7 +1707,7 @@ msgstr "Create team"
msgid "Create Team"
msgstr "Create Team"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:361
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:372
msgid "Create the document as pending and ready to sign."
msgstr "Create the document as pending and ready to sign."
@@ -1726,18 +1734,18 @@ msgstr "Create your account and start using state-of-the-art document signing. O
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:62
#: apps/web/src/app/(dashboard)/admin/leaderboard/data-table-leaderboard.tsx:96
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:35
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:36
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:48
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:63
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:105
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:34
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:104
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:35
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:56
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:274
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:272
msgid "Created"
msgstr "Created"
#: apps/web/src/app/(dashboard)/admin/subscriptions/page.tsx:35
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:111
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:112
msgid "Created At"
msgstr "Created At"
@@ -1786,7 +1794,7 @@ msgid "Date created"
msgstr "Date created"
#: packages/ui/primitives/document-flow/add-settings.tsx:325
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:408
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:454
msgid "Date Format"
msgstr "Date Format"
@@ -1807,19 +1815,19 @@ msgstr "Default Document Language"
msgid "Default Document Visibility"
msgstr "Default Document Visibility"
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:50
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:49
msgid "delete"
msgstr "delete"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:144
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:189
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:202
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:143
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:183
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:201
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:177
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:211
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:83
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:100
#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:94
-#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:90
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:85
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:116
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:105
#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:121
@@ -1890,7 +1898,7 @@ msgid "Delete your account and all its contents, including completed documents.
msgstr "Delete your account and all its contents, including completed documents. This action is irreversible and will cancel your subscription, so proceed with caution."
#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:41
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:97
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:98
msgid "Deleted"
msgstr "Deleted"
@@ -1898,12 +1906,12 @@ msgstr "Deleted"
msgid "Deleting account..."
msgstr "Deleting account..."
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:178
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:180
msgid "Details"
msgstr "Details"
#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:73
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:242
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:244
msgid "Device"
msgstr "Device"
@@ -1921,8 +1929,8 @@ msgstr "direct link"
msgid "Direct link"
msgstr "Direct link"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:156
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:227
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:155
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:226
msgid "Direct Link"
msgstr "Direct Link"
@@ -1934,15 +1942,15 @@ msgstr "direct link disabled"
msgid "Direct link receiver"
msgstr "Direct link receiver"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:363
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:357
msgid "Direct Link Signing"
msgstr "Direct Link Signing"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:115
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:111
msgid "Direct link signing has been disabled"
msgstr "Direct link signing has been disabled"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:114
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:110
msgid "Direct link signing has been enabled"
msgstr "Direct link signing has been enabled"
@@ -1950,15 +1958,15 @@ msgstr "Direct link signing has been enabled"
msgid "Direct link templates contain one dynamic recipient placeholder. Anyone with access to this link can sign the document, and it will then appear on your documents page."
msgstr "Direct link templates contain one dynamic recipient placeholder. Anyone with access to this link can sign the document, and it will then appear on your documents page."
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:142
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:138
msgid "Direct template link deleted"
msgstr "Direct template link deleted"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:228
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:223
msgid "Direct template link usage exceeded ({0}/{1})"
msgstr "Direct template link usage exceeded ({0}/{1})"
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:417
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:415
msgid "Disable"
msgstr "Disable"
@@ -1986,7 +1994,7 @@ msgstr "Disable Two Factor Authentication before deleting your account."
msgid "Disabled"
msgstr "Disabled"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:380
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:374
msgid "Disabling direct link signing will prevent anyone from accessing the link."
msgstr "Disabling direct link signing will prevent anyone from accessing the link."
@@ -1998,15 +2006,15 @@ msgstr "Disabling the user results in the user not being able to use the account
msgid "Display your name and email in documents"
msgstr "Display your name and email in documents"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:181
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:157
msgid "Distribute Document"
msgstr "Distribute Document"
-#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:63
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:58
msgid "Do you want to delete this template?"
msgstr "Do you want to delete this template?"
-#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:63
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:62
msgid "Do you want to duplicate this template?"
msgstr "Do you want to duplicate this template?"
@@ -2029,11 +2037,11 @@ msgstr "Document \"{0}\" - Rejection Confirmed"
#: packages/ui/components/document/document-global-auth-access-select.tsx:62
#: packages/ui/primitives/document-flow/add-settings.tsx:227
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:202
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:224
msgid "Document access"
msgstr "Document access"
-#: packages/lib/utils/document-audit-logs.ts:306
+#: packages/lib/utils/document-audit-logs.ts:322
msgid "Document access auth updated"
msgstr "Document access auth updated"
@@ -2046,14 +2054,14 @@ msgid "Document Approved"
msgstr "Document Approved"
#: apps/web/src/app/(signing)/sign/[token]/no-longer-available.tsx:40
-#: packages/lib/server-only/document/delete-document.ts:246
+#: packages/lib/server-only/document/delete-document.ts:251
#: packages/lib/server-only/document/super-delete-document.ts:98
msgid "Document Cancelled"
msgstr "Document Cancelled"
#: apps/web/src/components/formatter/document-status.tsx:29
-#: packages/lib/utils/document-audit-logs.ts:369
-#: packages/lib/utils/document-audit-logs.ts:370
+#: packages/lib/utils/document-audit-logs.ts:385
+#: packages/lib/utils/document-audit-logs.ts:386
msgid "Document completed"
msgstr "Document completed"
@@ -2066,21 +2074,21 @@ msgstr "Document completed email"
msgid "Document Completed!"
msgstr "Document Completed!"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:156
-#: packages/lib/utils/document-audit-logs.ts:286
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:168
+#: packages/lib/utils/document-audit-logs.ts:302
msgid "Document created"
msgstr "Document created"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:127
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:125
msgid "Document created by <0>{0}0>"
msgstr "Document created by <0>{0}0>"
#: packages/email/templates/document-created-from-direct-template.tsx:32
-#: packages/lib/server-only/template/create-document-from-direct-template.ts:585
+#: packages/lib/server-only/template/create-document-from-direct-template.ts:588
msgid "Document created from direct template"
msgstr "Document created from direct template"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:132
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:130
msgid "Document created using a <0>direct link0>"
msgstr "Document created using a <0>direct link0>"
@@ -2089,9 +2097,9 @@ msgid "Document Creation"
msgstr "Document Creation"
#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:51
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:181
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:61
-#: packages/lib/utils/document-audit-logs.ts:290
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:182
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:60
+#: packages/lib/utils/document-audit-logs.ts:306
msgid "Document deleted"
msgstr "Document deleted"
@@ -2103,8 +2111,8 @@ msgstr "Document deleted email"
msgid "Document Deleted!"
msgstr "Document Deleted!"
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:219
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:228
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:265
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:274
msgid "Document Distribution Method"
msgstr "Document Distribution Method"
@@ -2112,21 +2120,21 @@ msgstr "Document Distribution Method"
msgid "Document draft"
msgstr "Document draft"
-#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:58
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:57
msgid "Document Duplicated"
msgstr "Document Duplicated"
-#: packages/lib/utils/document-audit-logs.ts:326
+#: packages/lib/utils/document-audit-logs.ts:342
msgid "Document external ID updated"
msgstr "Document external ID updated"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:192
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:193
#: apps/web/src/components/document/document-history-sheet.tsx:104
msgid "Document history"
msgstr "Document history"
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:71
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:81
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:82
msgid "Document ID"
msgstr "Document ID"
@@ -2146,7 +2154,7 @@ msgstr "Document metrics"
msgid "Document moved"
msgstr "Document moved"
-#: packages/lib/utils/document-audit-logs.ts:334
+#: packages/lib/utils/document-audit-logs.ts:350
msgid "Document moved to team"
msgstr "Document moved to team"
@@ -2154,7 +2162,7 @@ msgstr "Document moved to team"
msgid "Document no longer available to sign"
msgstr "Document no longer available to sign"
-#: packages/lib/utils/document-audit-logs.ts:318
+#: packages/lib/utils/document-audit-logs.ts:334
msgid "Document opened"
msgstr "Document opened"
@@ -2183,8 +2191,8 @@ msgstr "Document Rejected"
msgid "Document resealed"
msgstr "Document resealed"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:327
-#: packages/lib/utils/document-audit-logs.ts:330
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:303
+#: packages/lib/utils/document-audit-logs.ts:346
msgid "Document sent"
msgstr "Document sent"
@@ -2192,11 +2200,11 @@ msgstr "Document sent"
msgid "Document Signed"
msgstr "Document Signed"
-#: packages/lib/utils/document-audit-logs.ts:310
+#: packages/lib/utils/document-audit-logs.ts:326
msgid "Document signing auth updated"
msgstr "Document signing auth updated"
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:144
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:143
msgid "Document signing process will be cancelled"
msgstr "Document signing process will be cancelled"
@@ -2208,11 +2216,11 @@ msgstr "Document status"
msgid "Document title"
msgstr "Document title"
-#: packages/lib/utils/document-audit-logs.ts:322
+#: packages/lib/utils/document-audit-logs.ts:338
msgid "Document title updated"
msgstr "Document title updated"
-#: packages/lib/utils/document-audit-logs.ts:314
+#: packages/lib/utils/document-audit-logs.ts:330
msgid "Document updated"
msgstr "Document updated"
@@ -2220,7 +2228,7 @@ msgstr "Document updated"
msgid "Document upload disabled due to unpaid invoices"
msgstr "Document upload disabled due to unpaid invoices"
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:86
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:85
msgid "Document uploaded"
msgstr "Document uploaded"
@@ -2228,17 +2236,17 @@ msgstr "Document uploaded"
msgid "Document Viewed"
msgstr "Document Viewed"
-#: packages/lib/utils/document-audit-logs.ts:302
+#: packages/lib/utils/document-audit-logs.ts:318
msgid "Document visibility updated"
msgstr "Document visibility updated"
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:141
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:140
msgid "Document will be permanently deleted"
msgstr "Document will be permanently deleted"
#: apps/web/src/app/(dashboard)/admin/nav.tsx:65
#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:92
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:144
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:145
#: apps/web/src/app/(dashboard)/documents/[id]/edit/document-edit-page-view.tsx:109
#: apps/web/src/app/(dashboard)/documents/[id]/loading.tsx:16
#: apps/web/src/app/(dashboard)/documents/[id]/sent/page.tsx:15
@@ -2269,10 +2277,10 @@ msgstr "Documents Viewed"
msgid "Don't have an account? <0>Sign up0>"
msgstr "Don't have an account? <0>Sign up0>"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:111
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:123
-#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:141
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:162
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:110
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:122
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:135
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:156
#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:110
#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:185
#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:107
@@ -2281,7 +2289,7 @@ msgstr "Don't have an account? <0>Sign up0>"
msgid "Download"
msgstr "Download"
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-audit-log-button.tsx:81
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-audit-log-button.tsx:77
msgid "Download Audit Logs"
msgstr "Download Audit Logs"
@@ -2289,7 +2297,7 @@ msgstr "Download Audit Logs"
msgid "Download Certificate"
msgstr "Download Certificate"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:210
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:209
#: apps/web/src/components/formatter/document-status.tsx:34
#: packages/lib/constants/document.ts:13
msgid "Draft"
@@ -2320,19 +2328,19 @@ msgstr "Dropdown options"
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."
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:136
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:167
-#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:85
-#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:118
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:135
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:161
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:84
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:117
#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:74
-#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:91
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:89
msgid "Duplicate"
msgstr "Duplicate"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:104
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:115
-#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:102
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:156
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:103
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:114
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:96
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:150
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:111
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:95
#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:65
@@ -2361,11 +2369,11 @@ msgstr "Electronic Signature Disclosure"
#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:166
#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:116
#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:71
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:265
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:272
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:277
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:284
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:122
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:129
-#: apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx:118
+#: apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx:119
#: apps/web/src/app/(signing)/sign/[token]/email-field.tsx:126
#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:407
#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:287
@@ -2396,7 +2404,7 @@ msgstr "Email address"
msgid "Email Address"
msgstr "Email Address"
-#: apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx:80
+#: apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx:81
msgid "Email cannot already exist in the template"
msgstr "Email cannot already exist in the template"
@@ -2404,15 +2412,15 @@ msgstr "Email cannot already exist in the template"
msgid "Email Confirmed!"
msgstr "Email Confirmed!"
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:307
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:353
msgid "Email Options"
msgstr "Email Options"
-#: packages/lib/utils/document-audit-logs.ts:363
+#: packages/lib/utils/document-audit-logs.ts:379
msgid "Email resent"
msgstr "Email resent"
-#: packages/lib/utils/document-audit-logs.ts:363
+#: packages/lib/utils/document-audit-logs.ts:379
msgid "Email sent"
msgstr "Email sent"
@@ -2454,11 +2462,11 @@ msgstr "Enable Authenticator App"
msgid "Enable custom branding for all documents in this team."
msgstr "Enable custom branding for all documents in this team."
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:251
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:246
msgid "Enable direct link signing"
msgstr "Enable direct link signing"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:374
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:368
#: packages/lib/constants/template.ts:8
msgid "Enable Direct Link Signing"
msgstr "Enable Direct Link Signing"
@@ -2490,7 +2498,7 @@ msgstr "Enabled"
msgid "Enabling the account results in the user being able to use the account again, and all the related features such as webhooks, teams, and API keys for example."
msgstr "Enabling the account results in the user being able to use the account again, and all the related features such as webhooks, teams, and API keys for example."
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:87
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:88
msgid "Enclosed Document"
msgstr "Enclosed Document"
@@ -2510,7 +2518,7 @@ msgstr "Enter your brand details"
msgid "Enter your email"
msgstr "Enter your email"
-#: apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx:135
+#: apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx:136
msgid "Enter your email address to receive the completed document."
msgstr "Enter your email address to receive the completed document."
@@ -2526,19 +2534,19 @@ msgstr "Enter your text here"
#: apps/web/src/app/(dashboard)/admin/users/[id]/disable-user-dialog.tsx:60
#: apps/web/src/app/(dashboard)/admin/users/[id]/enable-user-dialog.tsx:60
#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:80
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:234
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:268
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:303
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:349
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:209
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:242
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:280
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:325
#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:57
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:111
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:117
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:110
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:116
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:155
#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:186
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:217
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:256
-#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:51
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:226
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:50
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:68
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:175
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:187
#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:152
#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:124
#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:153
@@ -2564,7 +2572,7 @@ msgstr "Enter your text here"
#: 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)/settings/webhooks/create-webhook-dialog.tsx:101
-#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:258
+#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:218
#: packages/ui/primitives/pdf-viewer.tsx:166
msgid "Error"
msgstr "Error"
@@ -2595,7 +2603,7 @@ msgid "Expires on {0}"
msgstr "Expires on {0}"
#: packages/ui/primitives/document-flow/add-settings.tsx:295
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:378
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:424
msgid "External ID"
msgstr "External ID"
@@ -2603,7 +2611,7 @@ msgstr "External ID"
msgid "Failed to reseal document"
msgstr "Failed to reseal document"
-#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:259
+#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:219
msgid "Failed to save settings."
msgstr "Failed to save settings."
@@ -2641,11 +2649,11 @@ msgstr "Field label"
msgid "Field placeholder"
msgstr "Field placeholder"
-#: packages/lib/utils/document-audit-logs.ts:294
+#: packages/lib/utils/document-audit-logs.ts:310
msgid "Field signed"
msgstr "Field signed"
-#: packages/lib/utils/document-audit-logs.ts:298
+#: packages/lib/utils/document-audit-logs.ts:314
msgid "Field unsigned"
msgstr "Field unsigned"
@@ -2653,10 +2661,14 @@ msgstr "Field unsigned"
msgid "Fields"
msgstr "Fields"
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:130
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:129
msgid "File cannot be larger than {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB"
msgstr "File cannot be larger than {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB"
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:513
+msgid "File size exceeds the limit of {APP_DOCUMENT_UPLOAD_SIZE_LIMIT} MB"
+msgstr "File size exceeds the limit of {APP_DOCUMENT_UPLOAD_SIZE_LIMIT} MB"
+
#: packages/ui/primitives/document-flow/field-items-advanced-settings/date-field.tsx:56
#: packages/ui/primitives/document-flow/field-items-advanced-settings/email-field.tsx:38
#: packages/ui/primitives/document-flow/field-items-advanced-settings/initials-field.tsx:38
@@ -2694,8 +2706,8 @@ msgstr "Free Signature"
msgid "Full Name"
msgstr "Full Name"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:166
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:77
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:142
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:76
#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:62
#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:44
#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:52
@@ -2771,7 +2783,7 @@ msgstr "Here you can set preferences and defaults for branding."
msgid "Here you can set preferences and defaults for your team."
msgstr "Here you can set preferences and defaults for your team."
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:206
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:201
msgid "Here's how it works:"
msgstr "Here's how it works:"
@@ -2783,9 +2795,9 @@ msgstr "Hey I’m Timur"
msgid "Hi, {userName} <0>({userEmail})0>"
msgstr "Hi, {userName} <0>({userEmail})0>"
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:189
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:202
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:155
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:183
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:201
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:154
msgid "Hide"
msgstr "Hide"
@@ -2846,8 +2858,8 @@ msgstr "Inbox documents"
msgid "Include the Signing Certificate in the Document"
msgstr "Include the Signing Certificate in the Document"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:53
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:50
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:54
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:51
msgid "Information"
msgstr "Information"
@@ -2877,7 +2889,7 @@ msgstr "Invalid code. Please try again."
msgid "Invalid email"
msgstr "Invalid email"
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:105
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:104
msgid "Invalid file"
msgstr "Invalid file"
@@ -2936,7 +2948,7 @@ msgid "Invoice"
msgstr "Invoice"
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:47
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:235
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:237
msgid "IP Address"
msgstr "IP Address"
@@ -2976,7 +2988,7 @@ msgstr "Label"
#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:286
#: packages/ui/primitives/document-flow/add-settings.tsx:187
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:162
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:184
msgid "Language"
msgstr "Language"
@@ -2992,8 +3004,8 @@ msgstr "Last 30 days"
msgid "Last 7 days"
msgstr "Last 7 days"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:41
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:38
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:42
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:39
msgid "Last modified"
msgstr "Last modified"
@@ -3001,7 +3013,7 @@ msgstr "Last modified"
msgid "Last updated"
msgstr "Last updated"
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:121
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:122
msgid "Last Updated"
msgstr "Last Updated"
@@ -3043,11 +3055,11 @@ msgstr "Like to have your own public profile with agreements?"
msgid "Link expires in 1 hour."
msgstr "Link expires in 1 hour."
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:216
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:215
msgid "Link template"
msgstr "Link template"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:338
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:314
msgid "Links Generated"
msgstr "Links Generated"
@@ -3068,7 +3080,7 @@ msgstr "Loading document..."
#: apps/web/src/app/(dashboard)/documents/[id]/loading.tsx:20
#: apps/web/src/app/(dashboard)/documents/[id]/sent/page.tsx:19
-#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:91
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:90
msgid "Loading Document..."
msgstr "Loading Document..."
@@ -3107,7 +3119,7 @@ msgstr "Manage and view template"
msgid "Manage billing"
msgstr "Manage billing"
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:341
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:339
msgid "Manage details for this public template"
msgstr "Manage details for this public template"
@@ -3143,7 +3155,7 @@ msgstr "Manage team subscription."
msgid "Manage teams"
msgstr "Manage teams"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:367
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:361
msgid "Manage the direct link signing for this template"
msgstr "Manage the direct link signing for this template"
@@ -3199,7 +3211,7 @@ msgid "Members"
msgstr "Members"
#: packages/ui/primitives/document-flow/add-subject.tsx:160
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:338
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:384
msgid "Message <0>(Optional)0>"
msgstr "Message <0>(Optional)0>"
@@ -3238,7 +3250,7 @@ msgstr "Move Document to Team"
msgid "Move Template to Team"
msgstr "Move Template to Team"
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:174
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:168
#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:85
msgid "Move to Team"
msgstr "Move to Team"
@@ -3258,8 +3270,8 @@ msgstr "My templates"
#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:66
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:144
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:59
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:287
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:294
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:299
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:306
#: apps/web/src/app/(signing)/sign/[token]/complete/claim-account.tsx:118
#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:170
#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:153
@@ -3303,8 +3315,8 @@ msgstr "Never expire"
msgid "New team owner"
msgstr "New team owner"
-#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:96
-#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:103
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:95
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:102
msgid "New Template"
msgstr "New Template"
@@ -3330,7 +3342,7 @@ msgstr "No further action is required from you at this time."
msgid "No payment required"
msgstr "No payment required"
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:125
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:120
msgid "No public profile templates found"
msgstr "No public profile templates found"
@@ -3338,7 +3350,7 @@ msgstr "No public profile templates found"
msgid "No recent activity"
msgstr "No recent activity"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:101
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:99
msgid "No recent documents"
msgstr "No recent documents"
@@ -3382,11 +3394,11 @@ msgstr "No signature field found"
msgid "No token provided"
msgstr "No token provided"
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:284
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:282
msgid "No valid direct templates found"
msgstr "No valid direct templates found"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:293
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:288
msgid "No valid recipients found"
msgstr "No valid recipients found"
@@ -3459,7 +3471,7 @@ msgstr "On this page, you can create new Webhooks and manage the existing ones."
msgid "On this page, you can edit the webhook and its settings."
msgstr "On this page, you can edit the webhook and its settings."
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:136
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:135
msgid "Once confirmed, the following will occur:"
msgstr "Once confirmed, the following will occur:"
@@ -3499,7 +3511,7 @@ msgstr "Oops! Something went wrong."
msgid "Opened"
msgstr "Opened"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:337
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:332
#: apps/web/src/components/forms/signup.tsx:239
#: apps/web/src/components/forms/signup.tsx:263
#: apps/web/src/components/forms/v2/signup.tsx:387
@@ -3510,12 +3522,12 @@ msgstr "Or"
msgid "Or continue with"
msgstr "Or continue with"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:340
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:351
msgid "Otherwise, the document will be created as a draft."
msgstr "Otherwise, the document will be created as a draft."
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:86
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:103
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:104
#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:81
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:84
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:107
@@ -3624,7 +3636,7 @@ msgid "Payment overdue"
msgstr "Payment overdue"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:131
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:207
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:206
#: apps/web/src/components/(teams)/tables/teams-member-page-data-table.tsx:82
#: apps/web/src/components/(teams)/tables/user-settings-teams-page-data-table.tsx:77
#: apps/web/src/components/document/document-read-only-fields.tsx:89
@@ -3719,7 +3731,7 @@ msgstr "Please confirm your email"
msgid "Please confirm your email address"
msgstr "Please confirm your email address"
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:176
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:175
msgid "Please contact support if you would like to revert this action."
msgstr "Please contact support if you would like to revert this action."
@@ -3736,19 +3748,19 @@ msgstr "Please enter a valid name."
msgid "Please mark as viewed to complete"
msgstr "Please mark as viewed to complete"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:459
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:453
msgid "Please note that proceeding will remove direct linking recipient and turn it into a placeholder."
msgstr "Please note that proceeding will remove direct linking recipient and turn it into a placeholder."
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:130
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:129
msgid "Please note that this action is <0>irreversible0>."
msgstr "Please note that this action is <0>irreversible0>."
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:121
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:120
msgid "Please note that this action is <0>irreversible0>. Once confirmed, this document will be permanently deleted."
msgstr "Please note that this action is <0>irreversible0>. Once confirmed, this document will be permanently deleted."
-#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:67
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:62
msgid "Please note that this action is irreversible. Once confirmed, your template will be permanently deleted."
msgstr "Please note that this action is irreversible. Once confirmed, your template will be permanently deleted."
@@ -3780,6 +3792,10 @@ msgstr "Please provide a token from your authenticator, or a backup code."
msgid "Please review the document before signing."
msgstr "Please review the document before signing."
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:503
+msgid "Please select a PDF file"
+msgstr "Please select a PDF file"
+
#: apps/web/src/components/forms/send-confirmation-email.tsx:64
msgid "Please try again and make sure you enter the correct email address."
msgstr "Please try again and make sure you enter the correct email address."
@@ -3788,7 +3804,7 @@ msgstr "Please try again and make sure you enter the correct email address."
msgid "Please try again later or login using your normal details"
msgstr "Please try again later or login using your normal details"
-#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:80
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:79
msgid "Please try again later."
msgstr "Please try again later."
@@ -3797,7 +3813,7 @@ msgstr "Please try again later."
msgid "Please try again or contact our support."
msgstr "Please try again or contact our support."
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:186
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:185
msgid "Please type {0} to confirm"
msgstr "Please type {0} to confirm"
@@ -3835,11 +3851,11 @@ msgstr "Private templates can only be modified and viewed by you."
msgid "Profile"
msgstr "Profile"
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:184
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:183
msgid "Profile is currently <0>hidden0>."
msgstr "Profile is currently <0>hidden0>."
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:172
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:171
msgid "Profile is currently <0>visible0>."
msgstr "Profile is currently <0>visible0>."
@@ -3901,7 +3917,7 @@ msgstr "Read the full <0>signature disclosure0>."
msgid "Ready"
msgstr "Ready"
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:289
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:291
msgid "Reason"
msgstr "Reason"
@@ -3930,21 +3946,21 @@ msgstr "Receives copy"
msgid "Recent activity"
msgstr "Recent activity"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:45
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:43
msgid "Recent documents"
msgstr "Recent documents"
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:63
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:116
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:280
-#: packages/lib/utils/document-audit-logs.ts:338
-#: packages/lib/utils/document-audit-logs.ts:353
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:115
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:275
+#: packages/lib/utils/document-audit-logs.ts:354
+#: packages/lib/utils/document-audit-logs.ts:369
msgid "Recipient"
msgstr "Recipient"
#: packages/ui/components/recipient/recipient-action-auth-select.tsx:39
#: packages/ui/primitives/document-flow/add-settings.tsx:269
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:291
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:337
msgid "Recipient action authentication"
msgstr "Recipient action authentication"
@@ -3967,7 +3983,7 @@ msgstr "Recipient updated"
#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:66
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:49
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recipients.tsx:30
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:139
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:140
msgid "Recipients"
msgstr "Recipients"
@@ -3975,7 +3991,7 @@ msgstr "Recipients"
msgid "Recipients metrics"
msgstr "Recipients metrics"
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:166
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:165
msgid "Recipients will still retain their copy of the document"
msgstr "Recipients will still retain their copy of the document"
@@ -3992,7 +4008,7 @@ msgid "Red"
msgstr "Red"
#: packages/ui/primitives/document-flow/add-settings.tsx:383
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:461
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:507
msgid "Redirect URL"
msgstr "Redirect URL"
@@ -4042,8 +4058,8 @@ msgstr "Reminder: Please {recipientActionVerb} this document"
msgid "Reminder: Please {recipientActionVerb} your document"
msgstr "Reminder: Please {recipientActionVerb} your document"
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:193
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:431
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:188
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:425
#: apps/web/src/app/(signing)/sign/[token]/signing-field-container.tsx:156
#: apps/web/src/app/(signing)/sign/[token]/signing-field-container.tsx:180
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:250
@@ -4172,7 +4188,7 @@ msgstr "Revoke"
msgid "Revoke access"
msgstr "Revoke access"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:283
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:278
#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:318
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:163
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:80
@@ -4190,12 +4206,12 @@ msgstr "Roles"
msgid "Rows per page"
msgstr "Rows per page"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:446
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:440
#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:337
#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:344
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:312
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:305
-#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:356
+#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:316
msgid "Save"
msgstr "Save"
@@ -4261,11 +4277,11 @@ msgstr "Select a team to move this document to. This action cannot be undone."
msgid "Select a team to move this template to. This action cannot be undone."
msgstr "Select a team to move this template to. This action cannot be undone."
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:261
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:259
msgid "Select a template you'd like to display on your public profile"
msgstr "Select a template you'd like to display on your public profile"
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:257
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:255
msgid "Select a template you'd like to display on your team's public profile"
msgstr "Select a template you'd like to display on your team's public profile"
@@ -4296,7 +4312,7 @@ msgstr "Send"
msgid "Send confirmation email"
msgstr "Send confirmation email"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:325
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:336
msgid "Send document"
msgstr "Send document"
@@ -4357,7 +4373,7 @@ msgid "Sending..."
msgstr "Sending..."
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:101
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:256
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:258
msgid "Sent"
msgstr "Sent"
@@ -4376,8 +4392,8 @@ msgstr "Settings"
msgid "Setup"
msgstr "Setup"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:148
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:193
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:147
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:187
msgid "Share"
msgstr "Share"
@@ -4385,8 +4401,8 @@ msgstr "Share"
msgid "Share Signature Card"
msgstr "Share Signature Card"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:179
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:219
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:178
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:213
msgid "Share Signing Card"
msgstr "Share Signing Card"
@@ -4398,7 +4414,7 @@ msgstr "Share the Link"
msgid "Share your signing experience!"
msgstr "Share your signing experience!"
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:163
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:162
msgid "Show"
msgstr "Show"
@@ -4419,9 +4435,9 @@ msgstr "Show templates in your public profile for your audience to sign and get
msgid "Show templates in your team public profile for your audience to sign and get started quickly"
msgstr "Show templates in your team public profile for your audience to sign and get started quickly"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:83
-#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:114
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:139
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:82
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:108
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:133
#: apps/web/src/app/(profile)/p/[url]/page.tsx:192
#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:229
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:182
@@ -4501,7 +4517,7 @@ msgid "Sign Up with OIDC"
msgstr "Sign Up with OIDC"
#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:88
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:177
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:179
#: apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx:342
#: apps/web/src/app/(signing)/sign/[token]/form.tsx:205
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:251
@@ -4516,7 +4532,7 @@ msgstr "Sign Up with OIDC"
msgid "Signature"
msgstr "Signature"
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:228
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:230
msgid "Signature ID"
msgstr "Signature ID"
@@ -4536,7 +4552,7 @@ msgid "Signatures will appear once the document has been completed"
msgstr "Signatures will appear once the document has been completed"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:114
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:278
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:280
#: apps/web/src/components/document/document-read-only-fields.tsx:84
#: packages/lib/constants/recipient-roles.ts:23
msgid "Signed"
@@ -4546,7 +4562,7 @@ msgstr "Signed"
msgid "Signer"
msgstr "Signer"
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:176
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:178
msgid "Signer Events"
msgstr "Signer Events"
@@ -4562,11 +4578,11 @@ msgstr "Signers must have unique emails"
msgid "Signing"
msgstr "Signing"
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:168
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:170
msgid "Signing Certificate"
msgstr "Signing Certificate"
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:311
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:313
msgid "Signing certificate provided by"
msgstr "Signing certificate provided by"
@@ -4580,12 +4596,12 @@ msgstr "Signing Complete!"
msgid "Signing in..."
msgstr "Signing in..."
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:160
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:203
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:159
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:197
msgid "Signing Links"
msgstr "Signing Links"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:339
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:315
msgid "Signing links have been generated for this document."
msgstr "Signing links have been generated for this document."
@@ -4620,27 +4636,27 @@ msgid "Some signers have not been assigned a signature field. Please assign at l
msgstr "Some signers have not been assigned a signature field. Please assign at least 1 signature field to each signer before proceeding."
#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:105
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:63
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:91
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-audit-log-button.tsx:65
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:62
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:90
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-audit-log-button.tsx:61
#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-certificate-button.tsx:68
-#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:75
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:106
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:82
-#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:72
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:69
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:100
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:81
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:71
#: apps/web/src/app/(dashboard)/settings/billing/billing-plans.tsx:62
#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:51
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:124
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:123
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:73
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:93
#: apps/web/src/app/(dashboard)/settings/teams/accept-team-invitation-button.tsx:32
#: apps/web/src/app/(dashboard)/settings/teams/decline-team-invitation-button.tsx:32
#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:44
-#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:50
-#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:79
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:104
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:127
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:151
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:45
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:78
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:100
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:123
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:147
#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:118
#: apps/web/src/app/(recipient)/d/[token]/signing-auth-page.tsx:27
#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:38
@@ -4701,7 +4717,7 @@ msgstr "Something went wrong."
msgid "Something went wrong. Please try again or contact support."
msgstr "Something went wrong. Please try again or contact support."
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-audit-log-button.tsx:67
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-audit-log-button.tsx:63
msgid "Sorry, we were unable to download the audit logs. Please try again later."
msgstr "Sorry, we were unable to download the audit logs. Please try again later."
@@ -4709,7 +4725,7 @@ msgstr "Sorry, we were unable to download the audit logs. Please try again later
msgid "Sorry, we were unable to download the certificate. Please try again later."
msgstr "Sorry, we were unable to download the certificate. Please try again later."
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:134
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:133
msgid "Source"
msgstr "Source"
@@ -4720,8 +4736,8 @@ msgstr "Stats"
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:81
#: apps/web/src/app/(dashboard)/admin/subscriptions/page.tsx:32
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:73
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:126
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:93
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:125
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:94
#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:73
msgid "Status"
msgstr "Status"
@@ -4731,7 +4747,7 @@ msgid "Step <0>{step} of {maxStep}0>"
msgstr "Step <0>{step} of {maxStep}0>"
#: packages/ui/primitives/document-flow/add-subject.tsx:143
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:318
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:364
msgid "Subject <0>(Optional)0>"
msgstr "Subject <0>(Optional)0>"
@@ -4757,8 +4773,8 @@ msgstr "Subscriptions"
#: apps/web/src/app/(dashboard)/settings/teams/accept-team-invitation-button.tsx:25
#: apps/web/src/app/(dashboard)/settings/teams/decline-team-invitation-button.tsx:25
#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:37
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:118
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:141
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:114
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:137
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:32
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:44
#: apps/web/src/components/(dashboard)/layout/verify-email-banner.tsx:44
@@ -4778,8 +4794,8 @@ msgstr "Subscriptions"
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:60
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:77
#: apps/web/src/components/forms/public-profile-form.tsx:80
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:133
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:170
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:132
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:168
msgid "Success"
msgstr "Success"
@@ -4935,31 +4951,31 @@ msgstr "Teams restricted"
#: apps/web/src/app/(dashboard)/templates/[id]/edit/template-edit-page-view.tsx:64
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:39
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:144
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:224
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:143
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:223
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:148
#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:408
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:271
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:269
msgid "Template"
msgstr "Template"
-#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:41
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:36
msgid "Template deleted"
msgstr "Template deleted"
-#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:67
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:66
msgid "Template document uploaded"
msgstr "Template document uploaded"
-#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:42
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:41
msgid "Template duplicated"
msgstr "Template duplicated"
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:134
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:133
msgid "Template has been removed from your public profile."
msgstr "Template has been removed from your public profile."
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:171
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:169
msgid "Template has been updated."
msgstr "Template has been updated."
@@ -4971,11 +4987,11 @@ msgstr "Template moved"
msgid "Template not found or already associated with a team."
msgstr "Template not found or already associated with a team."
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:246
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:216
msgid "Template saved"
msgstr "Template saved"
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:145
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:167
msgid "Template title"
msgstr "Template title"
@@ -4987,7 +5003,7 @@ msgstr "Template title"
msgid "Templates"
msgstr "Templates"
-#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:106
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:105
msgid "Templates allow you to quickly generate documents with pre-filled recipients and fields."
msgstr "Templates allow you to quickly generate documents with pre-filled recipients and fields."
@@ -5039,9 +5055,9 @@ msgstr "The authentication required for recipients to view the document."
msgid "The content to show in the banner, HTML is allowed"
msgstr "The content to show in the banner, HTML is allowed"
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:78
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:73
#: apps/web/src/app/(dashboard)/templates/template-direct-link-badge.tsx:32
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:164
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:160
msgid "The direct link has been copied to your clipboard"
msgstr "The direct link has been copied to your clipboard"
@@ -5061,15 +5077,15 @@ msgstr "The document owner has been notified of this rejection. No further actio
msgid "The document owner has been notified of your decision. They may contact you with further instructions if necessary."
msgstr "The document owner has been notified of your decision. They may contact you with further instructions if necessary."
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:182
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:194
msgid "The document was created but could not be sent to recipients."
msgstr "The document was created but could not be sent to recipients."
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:163
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:162
msgid "The document will be hidden from your account"
msgstr "The document will be hidden from your account"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:333
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:344
msgid "The document will be immediately sent to recipients if this is checked."
msgstr "The document will be immediately sent to recipients if this is checked."
@@ -5111,11 +5127,11 @@ msgstr "The profile link has been copied to your clipboard"
msgid "The profile you are looking for could not be found."
msgstr "The profile you are looking for could not be found."
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:380
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:378
msgid "The public description that will be displayed with this template"
msgstr "The public description that will be displayed with this template"
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:358
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:356
msgid "The public name for your template"
msgstr "The public name for your template"
@@ -5194,7 +5210,7 @@ msgstr "The team you are looking for may have been removed, renamed or may have
msgid "The template has been successfully moved to the selected team."
msgstr "The template has been successfully moved to the selected team."
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:443
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:441
msgid "The template will be removed from your profile"
msgstr "The template will be removed from your profile"
@@ -5263,11 +5279,11 @@ msgstr "This can be overriden by setting the authentication requirements directl
msgid "This document can not be recovered, if you would like to dispute the reason for future documents please contact support."
msgstr "This document can not be recovered, if you would like to dispute the reason for future documents please contact support."
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:83
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:82
msgid "This document could not be deleted at this time. Please try again."
msgstr "This document could not be deleted at this time. Please try again."
-#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:73
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:72
msgid "This document could not be duplicated at this time. Please try again."
msgstr "This document could not be duplicated at this time. Please try again."
@@ -5287,11 +5303,11 @@ msgstr "This document has been cancelled by the owner and is no longer available
msgid "This document has been cancelled by the owner."
msgstr "This document has been cancelled by the owner."
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:227
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:228
msgid "This document has been signed by all recipients"
msgstr "This document has been signed by all recipients"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:230
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:231
msgid "This document is currently a draft and has not been sent"
msgstr "This document is currently a draft and has not been sent"
@@ -5299,11 +5315,11 @@ msgstr "This document is currently a draft and has not been sent"
msgid "This document is password protected. Please enter the password to view the document."
msgstr "This document is password protected. Please enter the password to view the document."
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:148
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:147
msgid "This document was created by you or a team member using the template above."
msgstr "This document was created by you or a team member using the template above."
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:160
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:159
msgid "This document was created using a direct link."
msgstr "This document was created using a direct link."
@@ -5339,7 +5355,7 @@ msgstr "This email will be sent to the recipient who has just signed the documen
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."
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:233
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:279
msgid "This is how the document will reach the recipients once the document is ready for signing."
msgstr "This is how the document will reach the recipients once the document is ready for signing."
@@ -5379,7 +5395,7 @@ msgstr "This signer has already signed the document."
msgid "This team, and any associated data excluding billing invoices will be permanently deleted."
msgstr "This team, and any associated data excluding billing invoices will be permanently deleted."
-#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:51
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:46
msgid "This template could not be deleted at this time. Please try again."
msgstr "This template could not be deleted at this time. Please try again."
@@ -5429,15 +5445,15 @@ msgstr "Time"
msgid "Time zone"
msgstr "Time zone"
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:131
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:132
#: packages/ui/primitives/document-flow/add-settings.tsx:359
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:438
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:484
msgid "Time Zone"
msgstr "Time Zone"
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:67
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:54
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:111
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:110
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:61
#: packages/ui/primitives/document-flow/add-settings.tsx:166
msgid "Title"
@@ -5490,11 +5506,11 @@ msgstr "To use our electronic signature service, you must have access to:"
msgid "To view this document you need to be signed into your account, please sign in to continue."
msgstr "To view this document you need to be signed into your account, please sign in to continue."
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:178
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:177
msgid "Toggle the switch to hide your profile from the public."
msgstr "Toggle the switch to hide your profile from the public."
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:190
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:189
msgid "Toggle the switch to show your profile to the public."
msgstr "Toggle the switch to show your profile to the public."
@@ -5628,7 +5644,7 @@ msgstr "Unable to copy recovery code"
msgid "Unable to copy token"
msgstr "Unable to copy token"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:105
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:101
msgid "Unable to create direct template access. Please try again later."
msgstr "Unable to create direct template access. Please try again later."
@@ -5657,11 +5673,11 @@ msgstr "Unable to join this team at this time."
msgid "Unable to load document history"
msgstr "Unable to load document history"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:60
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:58
msgid "Unable to load documents"
msgstr "Unable to load documents"
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:111
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:106
msgid "Unable to load your public profile templates at this time"
msgstr "Unable to load your public profile templates at this time"
@@ -5704,10 +5720,10 @@ msgstr "Unauthorized"
msgid "Uncompleted"
msgstr "Uncompleted"
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:237
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:262
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:273
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:284
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:239
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:264
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:275
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:286
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:55
msgid "Unknown"
msgstr "Unknown"
@@ -5720,12 +5736,12 @@ msgstr "Unknown error"
msgid "Unpaid"
msgstr "Unpaid"
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:181
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:176
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:162
#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:166
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:191
#: apps/web/src/components/forms/public-profile-form.tsx:279
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:428
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:426
#: packages/ui/primitives/document-flow/add-subject.tsx:86
msgid "Update"
msgstr "Update"
@@ -5797,10 +5813,18 @@ msgstr "Updating Your Information"
msgid "Upgrade"
msgstr "Upgrade"
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:426
+msgid "Upload a custom document to use instead of the template's default document"
+msgstr "Upload a custom document to use instead of the template's default document"
+
#: apps/web/src/components/forms/avatar-image.tsx:179
msgid "Upload Avatar"
msgstr "Upload Avatar"
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:419
+msgid "Upload custom document"
+msgstr "Upload custom document"
+
#: packages/ui/primitives/signature-pad/signature-pad.tsx:529
msgid "Upload Signature"
msgstr "Upload Signature"
@@ -5844,7 +5868,7 @@ msgstr "Use Authenticator"
msgid "Use Backup Code"
msgstr "Use Backup Code"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:207
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:219
msgid "Use Template"
msgstr "Use Template"
@@ -5925,14 +5949,14 @@ msgstr "Verify your email to upload documents."
msgid "Verify your team email address"
msgstr "Verify your team email address"
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:75
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:76
msgid "Version History"
msgstr "Version History"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:95
-#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:126
-#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:135
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:132
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:94
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:120
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:129
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:126
#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:100
#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:168
#: packages/lib/constants/recipient-roles.ts:29
@@ -5955,7 +5979,7 @@ msgstr "View all documents sent to your account"
msgid "View all recent security activity related to your account."
msgstr "View all recent security activity related to your account."
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:155
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:153
msgid "View all related documents"
msgstr "View all related documents"
@@ -5987,7 +6011,7 @@ msgstr "View documents associated with this email"
msgid "View invites"
msgstr "View invites"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:93
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:91
msgid "View more"
msgstr "View more"
@@ -6009,7 +6033,7 @@ msgid "View teams"
msgstr "View teams"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:120
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:267
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:269
#: packages/lib/constants/recipient-roles.ts:30
msgid "Viewed"
msgstr "Viewed"
@@ -6068,7 +6092,7 @@ msgstr "We are unable to remove this passkey at the moment. Please try again lat
msgid "We are unable to update this passkey at the moment. Please try again later."
msgstr "We are unable to update this passkey at the moment. Please try again later."
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:153
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:149
msgid "We encountered an error while removing the direct template link. Please try again later."
msgstr "We encountered an error while removing the direct template link. Please try again later."
@@ -6118,7 +6142,7 @@ msgstr "We encountered an unknown error while attempting to invite team members.
msgid "We encountered an unknown error while attempting to leave this team. Please try again later."
msgstr "We encountered an unknown error while attempting to leave this team. Please try again later."
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:143
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:142
msgid "We encountered an unknown error while attempting to remove this template from your profile. Please try again later."
msgstr "We encountered an unknown error while attempting to remove this template from your profile. Please try again later."
@@ -6164,7 +6188,7 @@ msgstr "We encountered an unknown error while attempting to sign you Up. Please
msgid "We encountered an unknown error while attempting to update the banner. Please try again later."
msgstr "We encountered an unknown error while attempting to update the banner. Please try again later."
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:180
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:178
msgid "We encountered an unknown error while attempting to update the template. Please try again later."
msgstr "We encountered an unknown error while attempting to update the template. Please try again later."
@@ -6226,7 +6250,7 @@ msgstr "We were unable to disable two-factor authentication for your account. Pl
msgid "We were unable to log you out at this time."
msgstr "We were unable to log you out at this time."
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:125
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:124
msgid "We were unable to set your public profile to public. Please try again."
msgstr "We were unable to set your public profile to public. Please try again."
@@ -6261,11 +6285,11 @@ msgstr "We were unable to verify your email. If your email is not verified alrea
msgid "We will generate signing links for with you, which you can send to the recipients through your method of choice."
msgstr "We will generate signing links for with you, which you can send to the recipients through your method of choice."
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:369
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:382
msgid "We will generate signing links for you, which you can send to the recipients through your method of choice."
msgstr "We will generate signing links for you, which you can send to the recipients through your method of choice."
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:365
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:378
#: packages/ui/primitives/document-flow/add-subject.tsx:201
msgid "We won't send anything to notify recipients."
msgstr "We won't send anything to notify recipients."
@@ -6371,13 +6395,13 @@ msgstr "Write about yourself"
msgid "Yearly"
msgstr "Yearly"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:32
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:31
-#: packages/lib/utils/document-audit-logs.ts:258
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:33
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:32
+#: packages/lib/utils/document-audit-logs.ts:274
msgid "You"
msgstr "You"
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:105
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:104
msgid "You are about to delete <0>\"{documentTitle}\"0>"
msgstr "You are about to delete <0>\"{documentTitle}\"0>"
@@ -6385,7 +6409,7 @@ msgstr "You are about to delete <0>\"{documentTitle}\"0>"
msgid "You are about to delete the following team email from <0>{teamName}0>."
msgstr "You are about to delete the following team email from <0>{teamName}0>."
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:109
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:108
msgid "You are about to hide <0>\"{documentTitle}\"0>"
msgstr "You are about to hide <0>\"{documentTitle}\"0>"
@@ -6485,7 +6509,7 @@ msgstr "You cannot modify a team member who has a higher role than you."
msgid "You cannot upload documents at this time."
msgstr "You cannot upload documents at this time."
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:106
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:105
msgid "You cannot upload encrypted PDFs"
msgstr "You cannot upload encrypted PDFs"
@@ -6522,7 +6546,8 @@ msgstr "You have been invited to join {0} on Documenso"
msgid "You have been invited to join the following team"
msgstr "You have been invited to join the following team"
-#: packages/lib/server-only/recipient/set-recipients-for-document.ts:337
+#: packages/lib/server-only/recipient/delete-document-recipient.ts:156
+#: packages/lib/server-only/recipient/set-document-recipients.ts:326
msgid "You have been removed from a document"
msgstr "You have been removed from a document"
@@ -6552,7 +6577,7 @@ msgstr "You have not yet created any templates. To create a template please uplo
msgid "You have not yet created or received any documents. To create a document please upload one."
msgstr "You have not yet created or received any documents. To create a document please upload one."
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:234
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:229
msgid "You have reached the maximum limit of {0} direct templates. <0>Upgrade your account to continue!0>"
msgstr "You have reached the maximum limit of {0} direct templates. <0>Upgrade your account to continue!0>"
@@ -6621,7 +6646,7 @@ msgstr "You must enter '{deleteMessage}' to proceed"
msgid "You must have at least one other team member to transfer ownership."
msgstr "You must have at least one other team member to transfer ownership."
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:109
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:108
msgid "You must set a profile URL before enabling your public profile."
msgstr "You must set a profile URL before enabling your public profile."
@@ -6673,15 +6698,15 @@ msgstr "Your branding preferences have been updated"
msgid "Your current plan is past due. Please update your payment information."
msgstr "Your current plan is past due. Please update your payment information."
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:251
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:249
msgid "Your direct signing templates"
msgstr "Your direct signing templates"
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:129
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:128
msgid "Your document failed to upload."
msgstr "Your document failed to upload."
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:157
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:169
msgid "Your document has been created from the template successfully."
msgstr "Your document has been created from the template successfully."
@@ -6693,19 +6718,19 @@ msgstr "Your document has been deleted by an admin!"
msgid "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:328
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:304
msgid "Your document has been sent successfully."
msgstr "Your document has been sent successfully."
-#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:59
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:58
msgid "Your document has been successfully duplicated."
msgstr "Your document has been successfully duplicated."
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:87
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:86
msgid "Your document has been uploaded successfully."
msgstr "Your document has been uploaded successfully."
-#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:69
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:68
msgid "Your document has been uploaded successfully. You will be redirected to the template page."
msgstr "Your document has been uploaded successfully. You will be redirected to the template page."
@@ -6790,19 +6815,19 @@ msgstr "Your team has been successfully deleted."
msgid "Your team has been successfully updated."
msgstr "Your team has been successfully updated."
-#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:43
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:42
msgid "Your template has been duplicated successfully."
msgstr "Your template has been duplicated successfully."
-#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:42
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:37
msgid "Your template has been successfully deleted."
msgstr "Your template has been successfully deleted."
-#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:67
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:66
msgid "Your template will be duplicated."
msgstr "Your template will be duplicated."
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:247
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:217
msgid "Your templates has been saved successfully."
msgstr "Your templates has been saved successfully."
diff --git a/packages/lib/translations/es/web.po b/packages/lib/translations/es/web.po
index 13e951930..b1f0128b2 100644
--- a/packages/lib/translations/es/web.po
+++ b/packages/lib/translations/es/web.po
@@ -38,7 +38,7 @@ msgstr "“{documentName}” ha sido firmado"
msgid "“{documentName}” was signed by all signers"
msgstr "\"{documentName}\" fue firmado por todos los firmantes"
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:62
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:61
msgid "\"{documentTitle}\" has been successfully deleted"
msgstr "\"{documentTitle}\" ha sido eliminado con éxito"
@@ -51,7 +51,7 @@ msgid "{0, plural, one {(1 character over)} other {(# characters over)}}"
msgstr "{0, plural, one {(1 carácter excedido)} other {(# caracteres excedidos)}}"
#: apps/web/src/components/forms/public-profile-form.tsx:237
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:395
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:393
msgid "{0, plural, one {# character over the limit} other {# characters over the limit}}"
msgstr "{0, plural, one {# carácter sobre el límite} other {# caracteres sobre el límite}}"
@@ -76,7 +76,7 @@ msgstr "{0, plural, one {1 campo que coincide} other {# campos que coinciden}}"
msgid "{0, plural, one {1 Recipient} other {# Recipients}}"
msgstr "{0, plural, one {1 Destinatario} other {# Destinatarios}}"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:238
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:239
msgid "{0, plural, one {Waiting on 1 recipient} other {Waiting on # recipients}}"
msgstr "{0, plural, one {Esperando 1 destinatario} other {Esperando # destinatarios}}"
@@ -88,7 +88,7 @@ msgstr "{0, plural, zero {Selecciona valores} other {# seleccionados...}}"
msgid "{0}"
msgstr "{0}"
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:249
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:247
msgid "{0} direct signing templates"
msgstr "{0} plantillas de firma directa"
@@ -108,7 +108,7 @@ msgstr "{0} se unió al equipo {teamName} en Documenso"
msgid "{0} left the team {teamName} on Documenso"
msgstr "{0} dejó el equipo {teamName} en Documenso"
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:151
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:150
msgid "{0} of {1} documents remaining this month."
msgstr "{0} de {1} documentos restantes este mes."
@@ -121,7 +121,7 @@ msgstr "{0} de {1} fila(s) seleccionada."
msgid "{0} on behalf of \"{1}\" has invited you to {recipientActionVerb} the document \"{2}\"."
msgstr "{0} en nombre de \"{1}\" te ha invitado a {recipientActionVerb} el documento \"{2}\"."
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:173
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:174
msgid "{0} Recipient(s)"
msgstr "{0} Destinatario(s)"
@@ -181,87 +181,87 @@ msgstr "{memberEmail} dejó el siguiente equipo"
msgid "{numberOfSeats, plural, one {# member} other {# members}}"
msgstr "{numberOfSeats, plural, one {# miembro} other {# miembros}}"
-#: packages/lib/utils/document-audit-logs.ts:263
+#: packages/lib/utils/document-audit-logs.ts:279
msgid "{prefix} added a field"
msgstr "{prefix} agregó un campo"
-#: packages/lib/utils/document-audit-logs.ts:275
+#: packages/lib/utils/document-audit-logs.ts:291
msgid "{prefix} added a recipient"
msgstr "{prefix} agregó un destinatario"
-#: packages/lib/utils/document-audit-logs.ts:287
+#: packages/lib/utils/document-audit-logs.ts:303
msgid "{prefix} created the document"
msgstr "{prefix} creó el documento"
-#: packages/lib/utils/document-audit-logs.ts:291
+#: packages/lib/utils/document-audit-logs.ts:307
msgid "{prefix} deleted the document"
msgstr "{prefix} eliminó el documento"
-#: packages/lib/utils/document-audit-logs.ts:335
+#: packages/lib/utils/document-audit-logs.ts:351
msgid "{prefix} moved the document to team"
msgstr "{prefix} movió el documento al equipo"
-#: packages/lib/utils/document-audit-logs.ts:319
+#: packages/lib/utils/document-audit-logs.ts:335
msgid "{prefix} opened the document"
msgstr "{prefix} abrió el documento"
-#: packages/lib/utils/document-audit-logs.ts:267
+#: packages/lib/utils/document-audit-logs.ts:283
msgid "{prefix} removed a field"
msgstr "{prefix} eliminó un campo"
-#: packages/lib/utils/document-audit-logs.ts:279
+#: packages/lib/utils/document-audit-logs.ts:295
msgid "{prefix} removed a recipient"
msgstr "{prefix} eliminó un destinatario"
-#: packages/lib/utils/document-audit-logs.ts:365
+#: packages/lib/utils/document-audit-logs.ts:381
msgid "{prefix} resent an email to {0}"
msgstr "{prefix} reenviaron un correo electrónico a {0}"
-#: packages/lib/utils/document-audit-logs.ts:366
+#: packages/lib/utils/document-audit-logs.ts:382
msgid "{prefix} sent an email to {0}"
msgstr "{prefix} envió un correo electrónico a {0}"
-#: packages/lib/utils/document-audit-logs.ts:331
+#: packages/lib/utils/document-audit-logs.ts:347
msgid "{prefix} sent the document"
msgstr "{prefix} envió el documento"
-#: packages/lib/utils/document-audit-logs.ts:295
+#: packages/lib/utils/document-audit-logs.ts:311
msgid "{prefix} signed a field"
msgstr "{prefix} firmó un campo"
-#: packages/lib/utils/document-audit-logs.ts:299
+#: packages/lib/utils/document-audit-logs.ts:315
msgid "{prefix} unsigned a field"
msgstr "{prefix} no firmó un campo"
-#: packages/lib/utils/document-audit-logs.ts:271
+#: packages/lib/utils/document-audit-logs.ts:287
msgid "{prefix} updated a field"
msgstr "{prefix} actualizó un campo"
-#: packages/lib/utils/document-audit-logs.ts:283
+#: packages/lib/utils/document-audit-logs.ts:299
msgid "{prefix} updated a recipient"
msgstr "{prefix} actualizó un destinatario"
-#: packages/lib/utils/document-audit-logs.ts:315
+#: packages/lib/utils/document-audit-logs.ts:331
msgid "{prefix} updated the document"
msgstr "{prefix} actualizó el documento"
-#: packages/lib/utils/document-audit-logs.ts:307
+#: packages/lib/utils/document-audit-logs.ts:323
msgid "{prefix} updated the document access auth requirements"
msgstr "{prefix} actualizó los requisitos de autorización de acceso al documento"
-#: packages/lib/utils/document-audit-logs.ts:327
+#: packages/lib/utils/document-audit-logs.ts:343
msgid "{prefix} updated the document external ID"
msgstr "{prefix} actualizó el ID externo del documento"
-#: packages/lib/utils/document-audit-logs.ts:311
+#: packages/lib/utils/document-audit-logs.ts:327
msgid "{prefix} updated the document signing auth requirements"
msgstr "{prefix} actualizó los requisitos de autenticación para la firma del documento"
-#: packages/lib/utils/document-audit-logs.ts:323
+#: packages/lib/utils/document-audit-logs.ts:339
msgid "{prefix} updated the document title"
msgstr "{prefix} actualizó el título del documento"
-#: packages/lib/utils/document-audit-logs.ts:303
+#: packages/lib/utils/document-audit-logs.ts:319
msgid "{prefix} updated the document visibility"
msgstr "{prefix} actualizó la visibilidad del documento"
@@ -298,7 +298,7 @@ msgid "{recipientReference} has signed {documentName}"
msgstr "{recipientReference} ha firmado {documentName}"
#: apps/web/src/components/forms/public-profile-form.tsx:231
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:389
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:387
msgid "{remaningLength, plural, one {# character remaining} other {# characters remaining}}"
msgstr "{remaningLength, plural, one {# carácter restante} other {# caracteres restantes}}"
@@ -318,27 +318,27 @@ msgstr "{teamName} te ha invitado a {action} {documentName}"
msgid "{teamName} ownership transfer request"
msgstr "solicitud de transferencia de propiedad de {teamName}"
-#: packages/lib/utils/document-audit-logs.ts:343
+#: packages/lib/utils/document-audit-logs.ts:359
msgid "{userName} approved the document"
msgstr "{userName} aprobó el documento"
-#: packages/lib/utils/document-audit-logs.ts:344
+#: packages/lib/utils/document-audit-logs.ts:360
msgid "{userName} CC'd the document"
msgstr "{userName} envió una copia del documento"
-#: packages/lib/utils/document-audit-logs.ts:345
+#: packages/lib/utils/document-audit-logs.ts:361
msgid "{userName} completed their task"
msgstr "{userName} completó su tarea"
-#: packages/lib/utils/document-audit-logs.ts:355
+#: packages/lib/utils/document-audit-logs.ts:371
msgid "{userName} rejected the document"
msgstr "{userName} rechazó el documento"
-#: packages/lib/utils/document-audit-logs.ts:341
+#: packages/lib/utils/document-audit-logs.ts:357
msgid "{userName} signed the document"
msgstr "{userName} firmó el documento"
-#: packages/lib/utils/document-audit-logs.ts:342
+#: packages/lib/utils/document-audit-logs.ts:358
msgid "{userName} viewed the document"
msgstr "{userName} vio el documento"
@@ -358,7 +358,11 @@ msgstr "<0>{senderName}0> ha solicitado que asumas la propiedad del siguiente
msgid "<0>{teamName}0> has requested to use your email address for their team on Documenso."
msgstr "<0>{teamName}0> ha solicitado usar tu dirección de correo electrónico para su equipo en Documenso."
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:241
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:463
+msgid "<0>Click to upload0> or drag and drop"
+msgstr ""
+
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:287
msgid "<0>Email0> - The recipient will be emailed the document to sign, approve, etc."
msgstr "<0>Correo electrónico0> - Al destinatario se le enviará el documento para firmar, aprobar, etc."
@@ -378,11 +382,11 @@ msgstr "<0>Sin restricciones0> - El documento se puede acceder directamente a
msgid "<0>None0> - No authentication required"
msgstr "<0>Ninguno0> - No se requiere autenticación"
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:247
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:293
msgid "<0>None0> - We will generate links which you can send to the recipients manually."
msgstr "<0>Ninguno0> - Generaremos enlaces que puedes enviar a los destinatarios manualmente."
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:254
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:300
msgid "<0>Note0> - If you use Links in combination with direct templates, you will need to manually send the links to the remaining recipients."
msgstr "<0>Nota0> - Si usas Enlaces en combinación con plantillas directas, necesitarás enviar manualmente los enlaces a los destinatarios restantes."
@@ -464,19 +468,19 @@ msgstr "Un dispositivo capaz de acceder, abrir y leer documentos"
msgid "A document was created by your direct template that requires you to {recipientActionVerb} it."
msgstr "Se creó un documento a partir de tu plantilla directa que requiere que {recipientActionVerb}."
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:218
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:230
msgid "A draft document will be created"
msgstr "Se creará un documento borrador"
-#: packages/lib/utils/document-audit-logs.ts:262
+#: packages/lib/utils/document-audit-logs.ts:278
msgid "A field was added"
msgstr "Se añadió un campo"
-#: packages/lib/utils/document-audit-logs.ts:266
+#: packages/lib/utils/document-audit-logs.ts:282
msgid "A field was removed"
msgstr "Se eliminó un campo"
-#: packages/lib/utils/document-audit-logs.ts:270
+#: packages/lib/utils/document-audit-logs.ts:286
msgid "A field was updated"
msgstr "Se actualizó un campo"
@@ -497,15 +501,15 @@ msgstr "Un nuevo token se ha creado con éxito."
msgid "A password reset email has been sent, if you have an account you should see it in your inbox shortly."
msgstr "Se ha enviado un correo electrónico para restablecer la contraseña, si tienes una cuenta deberías verlo en tu bandeja de entrada en breve."
-#: packages/lib/utils/document-audit-logs.ts:274
+#: packages/lib/utils/document-audit-logs.ts:290
msgid "A recipient was added"
msgstr "Se añadió un destinatario"
-#: packages/lib/utils/document-audit-logs.ts:278
+#: packages/lib/utils/document-audit-logs.ts:294
msgid "A recipient was removed"
msgstr "Se eliminó un destinatario"
-#: packages/lib/utils/document-audit-logs.ts:282
+#: packages/lib/utils/document-audit-logs.ts:298
msgid "A recipient was updated"
msgstr "Se actualizó un destinatario"
@@ -612,17 +616,17 @@ msgstr "Re-autenticación de Cuenta"
msgid "Acknowledgment"
msgstr "Reconocimiento"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:108
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:107
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:98
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:123
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:164
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:117
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:159
#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:116
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:46
msgid "Action"
msgstr "Acción"
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:79
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:177
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:176
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:140
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:131
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:140
@@ -650,16 +654,16 @@ msgid "Add a document"
msgstr "Agregar un documento"
#: packages/ui/primitives/document-flow/add-settings.tsx:390
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:468
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:514
msgid "Add a URL to redirect the user to once the document is signed"
msgstr "Agregue una URL para redirigir al usuario una vez que se firme el documento"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:177
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:88
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:153
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:87
msgid "Add all relevant fields for each recipient."
msgstr "Agrega todos los campos relevantes para cada destinatario."
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:83
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:82
msgid "Add all relevant placeholders for each recipient."
msgstr "Agrega todos los marcadores de posición relevantes para cada destinatario."
@@ -675,7 +679,7 @@ msgstr "Agrega un autenticador para servir como método de autenticación secund
msgid "Add an external ID to the document. This can be used to identify the document in external systems."
msgstr "Agregue un ID externo al documento. Esto se puede usar para identificar el documento en sistemas externos."
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:385
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:431
msgid "Add an external ID to the template. This can be used to identify in external systems."
msgstr "Agregue un ID externo a la plantilla. Esto se puede usar para identificar en sistemas externos."
@@ -692,8 +696,8 @@ msgstr "Agregar otro valor"
msgid "Add email"
msgstr "Agregar correo electrónico"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:176
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:87
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:152
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:86
msgid "Add Fields"
msgstr "Agregar Campos"
@@ -718,7 +722,7 @@ msgstr "Agregar clave"
msgid "Add Placeholder Recipient"
msgstr "Agregar destinatario de marcador de posición"
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:82
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:81
msgid "Add Placeholders"
msgstr "Agregar Marcadores de posición"
@@ -726,7 +730,7 @@ msgstr "Agregar Marcadores de posición"
msgid "Add Signer"
msgstr "Agregar firmante"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:171
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:147
msgid "Add Signers"
msgstr "Agregar Firmantes"
@@ -742,11 +746,11 @@ msgstr "Agregar texto"
msgid "Add text to the field"
msgstr "Agregar texto al campo"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:172
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:148
msgid "Add the people who will sign the document."
msgstr "Agrega a las personas que firmarán el documento."
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:220
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:232
msgid "Add the recipients to create the document with"
msgstr "Agrega los destinatarios con los que crear el documento"
@@ -771,7 +775,7 @@ msgid "Admin panel"
msgstr "Panel administrativo"
#: packages/ui/primitives/document-flow/add-settings.tsx:284
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:367
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:413
msgid "Advanced Options"
msgstr "Opciones avanzadas"
@@ -804,11 +808,11 @@ msgstr "Todos los documentos han sido procesados. Cualquier nuevo documento que
msgid "All documents related to the electronic signing process will be provided to you electronically through our platform or via email. It is your responsibility to ensure that your email address is current and that you can receive and open our emails."
msgstr "Todos los documentos relacionados con el proceso de firma electrónica se le proporcionarán electrónicamente a través de nuestra plataforma o por correo electrónico. Es su responsabilidad asegurarse de que su dirección de correo electrónico esté actualizada y que pueda recibir y abrir nuestros correos electrónicos."
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:147
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:146
msgid "All inserted signatures will be voided"
msgstr "Todas las firmas insertadas serán anuladas"
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:150
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:149
msgid "All recipients will be notified"
msgstr "Todos los destinatarios serán notificados"
@@ -878,16 +882,16 @@ msgstr "Se ha enviado un correo electrónico solicitando la transferencia de est
msgid "An error occurred"
msgstr "Ocurrió un error"
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:257
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:227
msgid "An error occurred while adding fields."
msgstr "Ocurrió un error al agregar campos."
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:269
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:218
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:243
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:187
msgid "An error occurred while adding signers."
msgstr "Ocurrió un error al agregar firmantes."
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:304
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:281
msgid "An error occurred while adding the fields."
msgstr "Ocurrió un error al agregar los campos."
@@ -895,7 +899,7 @@ msgstr "Ocurrió un error al agregar los campos."
msgid "An error occurred while auto-signing the document, some fields may not be signed. Please review and manually sign any remaining fields."
msgstr "Se produjo un error al firmar automáticamente el documento, es posible que algunos campos no estén firmados. Por favor, revise y firme manualmente cualquier campo restante."
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:176
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:188
msgid "An error occurred while creating document from template."
msgstr "Ocurrió un error al crear el documento a partir de la plantilla."
@@ -903,7 +907,7 @@ msgstr "Ocurrió un error al crear el documento a partir de la plantilla."
msgid "An error occurred while creating the webhook. Please try again."
msgstr "Ocurrió un error al crear el webhook. Por favor, intenta de nuevo."
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:124
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:120
msgid "An error occurred while disabling direct link signing."
msgstr "Ocurrió un error al desactivar la firma de enlace directo."
@@ -911,18 +915,18 @@ msgstr "Ocurrió un error al desactivar la firma de enlace directo."
msgid "An error occurred while disabling the user."
msgstr "Se produjo un error al deshabilitar al usuario."
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:64
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:92
-#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:76
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:107
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:63
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:91
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:70
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:101
msgid "An error occurred while downloading your document."
msgstr "Ocurrió un error al descargar tu documento."
-#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:52
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:51
msgid "An error occurred while duplicating template."
msgstr "Ocurrió un error al duplicar la plantilla."
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:123
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:119
msgid "An error occurred while enabling direct link signing."
msgstr "Ocurrió un error al habilitar la firma de enlace directo."
@@ -965,7 +969,7 @@ msgstr "Ocurrió un error al eliminar la firma."
msgid "An error occurred while removing the text."
msgstr "Ocurrió un error al eliminar el texto."
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:350
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:326
msgid "An error occurred while sending the document."
msgstr "Ocurrió un error al enviar el documento."
@@ -990,8 +994,8 @@ msgstr "Ocurrió un error al firmar el documento."
msgid "An error occurred while trying to create a checkout session."
msgstr "Ocurrió un error al intentar crear una sesión de pago."
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:235
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:187
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:210
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:156
msgid "An error occurred while updating the document settings."
msgstr "Ocurrió un error al actualizar la configuración del documento."
@@ -1003,7 +1007,7 @@ msgstr "Ocurrió un error al actualizar la firma."
msgid "An error occurred while updating your profile."
msgstr "Ocurrió un error al actualizar tu perfil."
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:118
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:117
msgid "An error occurred while uploading your document."
msgstr "Ocurrió un error al subir tu documento."
@@ -1039,8 +1043,8 @@ msgstr "Ocurrió un error al subir tu documento."
#: apps/web/src/components/forms/token.tsx:143
#: apps/web/src/components/forms/v2/signup.tsx:187
#: apps/web/src/components/forms/v2/signup.tsx:201
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:141
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:178
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:140
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:176
msgid "An unknown error occurred"
msgstr "Ocurrió un error desconocido"
@@ -1048,11 +1052,11 @@ msgstr "Ocurrió un error desconocido"
msgid "Any payment methods attached to this team will remain attached to this team. Please contact us if you need to update this information."
msgstr "Cualquier método de pago adjunto a este equipo permanecerá adjunto a este equipo. Por favor, contáctanos si necesitas actualizar esta información."
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:221
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:220
msgid "Any Source"
msgstr "Cualquier fuente"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:201
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:200
msgid "Any Status"
msgstr "Cualquier estado"
@@ -1070,9 +1074,9 @@ msgstr "Tokens de API"
msgid "App Version"
msgstr "Versión de la Aplicación"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:89
-#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:120
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:146
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:88
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:114
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:140
#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:143
#: packages/lib/constants/recipient-roles.ts:8
msgid "Approve"
@@ -1116,13 +1120,13 @@ msgstr "¿Está seguro de que desea eliminar la clave de acceso <0>{passkeyName}
msgid "Are you sure you wish to delete this team?"
msgstr "¿Estás seguro de que deseas eliminar este equipo?"
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:100
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:99
#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:94
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:455
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:449
#: apps/web/src/components/(teams)/dialogs/delete-team-member-dialog.tsx:81
#: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:81
#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:116
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:439
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:437
msgid "Are you sure?"
msgstr "¿Estás seguro?"
@@ -1130,11 +1134,11 @@ msgstr "¿Estás seguro?"
msgid "Attempts sealing the document again, useful for after a code change has occurred to resolve an erroneous document."
msgstr "Intenta sellar el documento de nuevo, útil después de que se haya producido un cambio de código para resolver un documento erróneo."
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:130
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:129
msgid "Audit Log"
msgstr "Registro de Auditoría"
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:198
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:200
msgid "Authentication Level"
msgstr "Nivel de Autenticación"
@@ -1240,7 +1244,7 @@ msgstr "Al aceptar esta solicitud, estarás concediendo a <0>{teamName}0> acce
msgid "By accepting this request, you will take responsibility for any billing items associated with this team."
msgstr "Al aceptar esta solicitud, asumirás la responsabilidad de cualquier ítem de facturación asociado con este equipo."
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:158
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:157
msgid "By deleting this document, the following will occur:"
msgstr "Al eliminar este documento, ocurrirá lo siguiente:"
@@ -1261,17 +1265,17 @@ msgid "By using the electronic signature feature, you are consenting to conduct
msgstr "Al utilizar la función de firma electrónica, usted está consintiendo realizar transacciones y recibir divulgaciones electrónicamente. Reconoce que su firma electrónica en los documentos es vinculante y que acepta los términos esbozados en los documentos que está firmando."
#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:185
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:192
-#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:108
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:191
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:107
#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:120
#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:248
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:157
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:198
#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:109
-#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:81
-#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:78
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:76
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:77
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:131
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:472
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:466
#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:220
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:178
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-account.tsx:71
@@ -1302,8 +1306,8 @@ msgstr "Al utilizar la función de firma electrónica, usted está consintiendo
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:187
#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:257
#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:163
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:450
-#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:357
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:448
+#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:317
#: packages/ui/primitives/document-flow/send-document-action-dialog.tsx:58
msgid "Cancel"
msgstr "Cancelar"
@@ -1353,15 +1357,15 @@ msgstr "Valores de Checkbox"
msgid "Checkout"
msgstr "Checkout"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:271
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:266
msgid "Choose an existing recipient from below to continue"
msgstr "Elija un destinatario existente de abajo para continuar"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:267
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:262
msgid "Choose Direct Link Recipient"
msgstr "Elija el destinatario del enlace directo"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:182
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:158
msgid "Choose how the document will reach recipients"
msgstr "Elige cómo el documento llegará a los destinatarios"
@@ -1385,6 +1389,10 @@ msgstr "Reclame su perfil más tarde"
msgid "Claim your username now"
msgstr "Reclame su nombre de usuario ahora"
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:537
+msgid "Clear file"
+msgstr ""
+
#: packages/ui/primitives/data-table.tsx:156
msgid "Clear filters"
msgstr "Limpiar filtros"
@@ -1393,13 +1401,13 @@ msgstr "Limpiar filtros"
msgid "Clear Signature"
msgstr "Limpiar firma"
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:130
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:125
msgid "Click here to get started"
msgstr "Haga clic aquí para comenzar"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:76
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:118
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:66
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:113
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:64
#: apps/web/src/components/document/document-history-sheet.tsx:133
msgid "Click here to retry"
msgstr "Haga clic aquí para reintentar"
@@ -1420,16 +1428,16 @@ msgstr "Haga clic para copiar el enlace de firma para enviar al destinatario"
msgid "Click to insert field"
msgstr "Haga clic para insertar campo"
-#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:126
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:388
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:125
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:556
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:125
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:138
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:121
#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:140
#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:180
#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:102
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:319
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:423
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:317
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:421
#: packages/ui/primitives/document-flow/missing-signature-field-dialog.tsx:44
msgid "Close"
msgstr "Cerrar"
@@ -1453,7 +1461,7 @@ msgstr "Completar Firmado"
msgid "Complete Viewing"
msgstr "Completar Visualización"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:204
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:203
#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:77
#: apps/web/src/components/formatter/document-status.tsx:28
#: packages/email/template-components/template-document-completed.tsx:35
@@ -1480,15 +1488,15 @@ msgstr "Documentos Completados"
msgid "Configure Direct Recipient"
msgstr "Configurar destinatario directo"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:167
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:143
msgid "Configure general settings for the document."
msgstr "Configurar ajustes generales para el documento."
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:78
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:77
msgid "Configure general settings for the template."
msgstr "Configurar ajustes generales para la plantilla."
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:337
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:335
msgid "Configure template"
msgstr "Configurar plantilla"
@@ -1497,8 +1505,8 @@ msgstr "Configurar plantilla"
msgid "Configure the {0} field"
msgstr "Configurar el campo {0}"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:481
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:460
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:475
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:458
msgid "Confirm"
msgstr "Confirmar"
@@ -1546,7 +1554,7 @@ msgstr "Contenido"
#: apps/web/src/app/(unauthenticated)/team/verify/email/[token]/page.tsx:143
#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:72
#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:122
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:328
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:326
#: packages/ui/primitives/document-flow/document-flow-root.tsx:141
msgid "Continue"
msgstr "Continuar"
@@ -1597,9 +1605,9 @@ msgid "Copied"
msgstr "Copiado"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:162
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:77
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:72
#: apps/web/src/app/(dashboard)/templates/template-direct-link-badge.tsx:31
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:163
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:159
#: apps/web/src/components/(dashboard)/avatar/avatar-with-recipient.tsx:40
#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:61
#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:117
@@ -1618,11 +1626,11 @@ msgstr "Copiar"
msgid "Copy Link"
msgstr "Copiar enlace"
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:169
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:164
msgid "Copy sharable link"
msgstr "Copiar enlace compartible"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:397
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:391
msgid "Copy Shareable Link"
msgstr "Copiar enlace compartible"
@@ -1657,15 +1665,15 @@ msgstr "Crea un equipo para colaborar con los miembros de tu equipo."
msgid "Create account"
msgstr "Crear cuenta"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:396
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:564
msgid "Create and send"
msgstr "Crear y enviar"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:394
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:562
msgid "Create as draft"
msgstr "Crear como borrador"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:354
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:365
msgid "Create as pending"
msgstr "Crear como pendiente"
@@ -1673,11 +1681,11 @@ msgstr "Crear como pendiente"
msgid "Create Direct Link"
msgstr "Crear enlace directo"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:202
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:197
msgid "Create Direct Signing Link"
msgstr "Crear enlace de firma directo"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:214
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:226
msgid "Create document from template"
msgstr "Crear documento a partir de la plantilla"
@@ -1685,11 +1693,11 @@ msgstr "Crear documento a partir de la plantilla"
msgid "Create now"
msgstr "Crear ahora"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:352
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:346
msgid "Create one automatically"
msgstr "Crear uno automáticamente"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:398
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:566
msgid "Create signing links"
msgstr "Crear enlaces de firma"
@@ -1704,7 +1712,7 @@ msgstr "Crear equipo"
msgid "Create Team"
msgstr "Crear Equipo"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:361
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:372
msgid "Create the document as pending and ready to sign."
msgstr "Crear el documento como pendiente y listo para firmar."
@@ -1731,18 +1739,18 @@ msgstr "Crea tu cuenta y comienza a utilizar la firma de documentos de última g
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:62
#: apps/web/src/app/(dashboard)/admin/leaderboard/data-table-leaderboard.tsx:96
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:35
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:36
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:48
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:63
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:105
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:34
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:104
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:35
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:56
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:274
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:272
msgid "Created"
msgstr "Creado"
#: apps/web/src/app/(dashboard)/admin/subscriptions/page.tsx:35
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:111
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:112
msgid "Created At"
msgstr "Creado En"
@@ -1791,7 +1799,7 @@ msgid "Date created"
msgstr "Fecha de creación"
#: packages/ui/primitives/document-flow/add-settings.tsx:325
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:408
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:454
msgid "Date Format"
msgstr "Formato de fecha"
@@ -1812,19 +1820,19 @@ msgstr "Idioma predeterminado del documento"
msgid "Default Document Visibility"
msgstr "Visibilidad predeterminada del documento"
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:50
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:49
msgid "delete"
msgstr "eliminar"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:144
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:189
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:202
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:143
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:183
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:201
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:177
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:211
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:83
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:100
#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:94
-#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:90
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:85
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:116
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:105
#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:121
@@ -1895,7 +1903,7 @@ msgid "Delete your account and all its contents, including completed documents.
msgstr "Eliminar su cuenta y todo su contenido, incluidos documentos completados. Esta acción es irreversible y cancelará su suscripción, así que proceda con cuidado."
#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:41
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:97
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:98
msgid "Deleted"
msgstr "Eliminado"
@@ -1903,12 +1911,12 @@ msgstr "Eliminado"
msgid "Deleting account..."
msgstr "Eliminando cuenta..."
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:178
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:180
msgid "Details"
msgstr "Detalles"
#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:73
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:242
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:244
msgid "Device"
msgstr "Dispositivo"
@@ -1926,8 +1934,8 @@ msgstr "enlace directo"
msgid "Direct link"
msgstr "Enlace directo"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:156
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:227
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:155
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:226
msgid "Direct Link"
msgstr "Enlace directo"
@@ -1939,15 +1947,15 @@ msgstr "enlace directo deshabilitado"
msgid "Direct link receiver"
msgstr "Receptor de enlace directo"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:363
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:357
msgid "Direct Link Signing"
msgstr "Firma de enlace directo"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:115
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:111
msgid "Direct link signing has been disabled"
msgstr "La firma de enlace directo ha sido deshabilitada"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:114
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:110
msgid "Direct link signing has been enabled"
msgstr "La firma de enlace directo ha sido habilitada"
@@ -1955,15 +1963,15 @@ msgstr "La firma de enlace directo ha sido habilitada"
msgid "Direct link templates contain one dynamic recipient placeholder. Anyone with access to this link can sign the document, and it will then appear on your documents page."
msgstr "Las plantillas de enlace directo contienen un marcador de posición de destinatario dinámico. Cualquiera que tenga acceso a este enlace puede firmar el documento, y luego aparecerá en su página de documentos."
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:142
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:138
msgid "Direct template link deleted"
msgstr "Enlace de plantilla directo eliminado"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:228
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:223
msgid "Direct template link usage exceeded ({0}/{1})"
msgstr "El uso de enlace de plantilla directo excedió ({0}/{1})"
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:417
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:415
msgid "Disable"
msgstr "Deshabilitar"
@@ -1991,7 +1999,7 @@ msgstr "Deshabilite la Autenticación de Dos Factores antes de eliminar su cuent
msgid "Disabled"
msgstr "Deshabilitado"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:380
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:374
msgid "Disabling direct link signing will prevent anyone from accessing the link."
msgstr "Deshabilitar la firma de enlace directo evitará que cualquiera acceda al enlace."
@@ -2003,15 +2011,15 @@ msgstr "Deshabilitar al usuario implica que no podrá usar la cuenta. También d
msgid "Display your name and email in documents"
msgstr "Mostrar su nombre y correo electrónico en documentos"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:181
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:157
msgid "Distribute Document"
msgstr "Distribuir documento"
-#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:63
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:58
msgid "Do you want to delete this template?"
msgstr "¿Desea eliminar esta plantilla?"
-#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:63
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:62
msgid "Do you want to duplicate this template?"
msgstr "¿Desea duplicar esta plantilla?"
@@ -2034,11 +2042,11 @@ msgstr "Documento \"{0}\" - Rechazo confirmado"
#: packages/ui/components/document/document-global-auth-access-select.tsx:62
#: packages/ui/primitives/document-flow/add-settings.tsx:227
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:202
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:224
msgid "Document access"
msgstr "Acceso al documento"
-#: packages/lib/utils/document-audit-logs.ts:306
+#: packages/lib/utils/document-audit-logs.ts:322
msgid "Document access auth updated"
msgstr "Se actualizó la autenticación de acceso al documento"
@@ -2051,14 +2059,14 @@ msgid "Document Approved"
msgstr "Documento Aprobado"
#: apps/web/src/app/(signing)/sign/[token]/no-longer-available.tsx:40
-#: packages/lib/server-only/document/delete-document.ts:246
+#: packages/lib/server-only/document/delete-document.ts:251
#: packages/lib/server-only/document/super-delete-document.ts:98
msgid "Document Cancelled"
msgstr "Documento cancelado"
#: apps/web/src/components/formatter/document-status.tsx:29
-#: packages/lib/utils/document-audit-logs.ts:369
-#: packages/lib/utils/document-audit-logs.ts:370
+#: packages/lib/utils/document-audit-logs.ts:385
+#: packages/lib/utils/document-audit-logs.ts:386
msgid "Document completed"
msgstr "Documento completado"
@@ -2071,21 +2079,21 @@ msgstr "Correo electrónico de documento completado"
msgid "Document Completed!"
msgstr "¡Documento completado!"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:156
-#: packages/lib/utils/document-audit-logs.ts:286
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:168
+#: packages/lib/utils/document-audit-logs.ts:302
msgid "Document created"
msgstr "Documento creado"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:127
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:125
msgid "Document created by <0>{0}0>"
msgstr "Documento creado por <0>{0}0>"
#: packages/email/templates/document-created-from-direct-template.tsx:32
-#: packages/lib/server-only/template/create-document-from-direct-template.ts:585
+#: packages/lib/server-only/template/create-document-from-direct-template.ts:588
msgid "Document created from direct template"
msgstr "Documento creado a partir de plantilla directa"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:132
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:130
msgid "Document created using a <0>direct link0>"
msgstr "Documento creado usando un <0>enlace directo0>"
@@ -2094,9 +2102,9 @@ msgid "Document Creation"
msgstr "Creación de documento"
#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:51
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:181
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:61
-#: packages/lib/utils/document-audit-logs.ts:290
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:182
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:60
+#: packages/lib/utils/document-audit-logs.ts:306
msgid "Document deleted"
msgstr "Documento eliminado"
@@ -2108,8 +2116,8 @@ msgstr "Correo electrónico de documento eliminado"
msgid "Document Deleted!"
msgstr "¡Documento eliminado!"
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:219
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:228
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:265
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:274
msgid "Document Distribution Method"
msgstr "Método de distribución de documentos"
@@ -2117,21 +2125,21 @@ msgstr "Método de distribución de documentos"
msgid "Document draft"
msgstr "Borrador de documento"
-#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:58
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:57
msgid "Document Duplicated"
msgstr "Documento duplicado"
-#: packages/lib/utils/document-audit-logs.ts:326
+#: packages/lib/utils/document-audit-logs.ts:342
msgid "Document external ID updated"
msgstr "ID externo del documento actualizado"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:192
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:193
#: apps/web/src/components/document/document-history-sheet.tsx:104
msgid "Document history"
msgstr "Historial de documentos"
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:71
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:81
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:82
msgid "Document ID"
msgstr "ID del documento"
@@ -2151,7 +2159,7 @@ msgstr "Métricas de documento"
msgid "Document moved"
msgstr "Documento movido"
-#: packages/lib/utils/document-audit-logs.ts:334
+#: packages/lib/utils/document-audit-logs.ts:350
msgid "Document moved to team"
msgstr "Documento movido al equipo"
@@ -2159,7 +2167,7 @@ msgstr "Documento movido al equipo"
msgid "Document no longer available to sign"
msgstr "El documento ya no está disponible para firmar"
-#: packages/lib/utils/document-audit-logs.ts:318
+#: packages/lib/utils/document-audit-logs.ts:334
msgid "Document opened"
msgstr "Documento abierto"
@@ -2188,8 +2196,8 @@ msgstr "Documento Rechazado"
msgid "Document resealed"
msgstr "Documento sellado nuevamente"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:327
-#: packages/lib/utils/document-audit-logs.ts:330
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:303
+#: packages/lib/utils/document-audit-logs.ts:346
msgid "Document sent"
msgstr "Documento enviado"
@@ -2197,11 +2205,11 @@ msgstr "Documento enviado"
msgid "Document Signed"
msgstr "Documento firmado"
-#: packages/lib/utils/document-audit-logs.ts:310
+#: packages/lib/utils/document-audit-logs.ts:326
msgid "Document signing auth updated"
msgstr "Se actualizó la autenticación de firma del documento"
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:144
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:143
msgid "Document signing process will be cancelled"
msgstr "El proceso de firma del documento será cancelado"
@@ -2213,11 +2221,11 @@ msgstr "Estado del documento"
msgid "Document title"
msgstr "Título del documento"
-#: packages/lib/utils/document-audit-logs.ts:322
+#: packages/lib/utils/document-audit-logs.ts:338
msgid "Document title updated"
msgstr "Título del documento actualizado"
-#: packages/lib/utils/document-audit-logs.ts:314
+#: packages/lib/utils/document-audit-logs.ts:330
msgid "Document updated"
msgstr "Documento actualizado"
@@ -2225,7 +2233,7 @@ msgstr "Documento actualizado"
msgid "Document upload disabled due to unpaid invoices"
msgstr "La carga de documentos está deshabilitada debido a facturas impagadas"
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:86
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:85
msgid "Document uploaded"
msgstr "Documento subido"
@@ -2233,17 +2241,17 @@ msgstr "Documento subido"
msgid "Document Viewed"
msgstr "Documento visto"
-#: packages/lib/utils/document-audit-logs.ts:302
+#: packages/lib/utils/document-audit-logs.ts:318
msgid "Document visibility updated"
msgstr "Visibilidad del documento actualizada"
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:141
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:140
msgid "Document will be permanently deleted"
msgstr "El documento será eliminado permanentemente"
#: apps/web/src/app/(dashboard)/admin/nav.tsx:65
#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:92
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:144
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:145
#: apps/web/src/app/(dashboard)/documents/[id]/edit/document-edit-page-view.tsx:109
#: apps/web/src/app/(dashboard)/documents/[id]/loading.tsx:16
#: apps/web/src/app/(dashboard)/documents/[id]/sent/page.tsx:15
@@ -2274,10 +2282,10 @@ msgstr "Documentos vistos"
msgid "Don't have an account? <0>Sign up0>"
msgstr "¿No tienes una cuenta? <0>Regístrate0>"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:111
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:123
-#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:141
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:162
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:110
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:122
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:135
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:156
#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:110
#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:185
#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:107
@@ -2286,7 +2294,7 @@ msgstr "¿No tienes una cuenta? <0>Regístrate0>"
msgid "Download"
msgstr "Descargar"
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-audit-log-button.tsx:81
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-audit-log-button.tsx:77
msgid "Download Audit Logs"
msgstr "Descargar registros de auditoría"
@@ -2294,7 +2302,7 @@ msgstr "Descargar registros de auditoría"
msgid "Download Certificate"
msgstr "Descargar certificado"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:210
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:209
#: apps/web/src/components/formatter/document-status.tsx:34
#: packages/lib/constants/document.ts:13
msgid "Draft"
@@ -2325,19 +2333,19 @@ msgstr "Opciones de menú desplegable"
msgid "Due to an unpaid invoice, your team has been restricted. Please settle the payment to restore full access to your team."
msgstr "Debido a una factura impaga, tu equipo ha sido restringido. Realiza el pago para restaurar el acceso completo a tu equipo."
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:136
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:167
-#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:85
-#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:118
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:135
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:161
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:84
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:117
#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:74
-#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:91
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:89
msgid "Duplicate"
msgstr "Duplicar"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:104
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:115
-#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:102
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:156
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:103
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:114
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:96
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:150
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:111
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:95
#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:65
@@ -2366,11 +2374,11 @@ msgstr "Divulgación de Firma Electrónica"
#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:166
#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:116
#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:71
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:265
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:272
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:277
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:284
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:122
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:129
-#: apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx:118
+#: apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx:119
#: apps/web/src/app/(signing)/sign/[token]/email-field.tsx:126
#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:407
#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:287
@@ -2401,7 +2409,7 @@ msgstr "Dirección de correo electrónico"
msgid "Email Address"
msgstr "Dirección de correo electrónico"
-#: apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx:80
+#: apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx:81
msgid "Email cannot already exist in the template"
msgstr "El correo electrónico no puede existir ya en la plantilla"
@@ -2409,15 +2417,15 @@ msgstr "El correo electrónico no puede existir ya en la plantilla"
msgid "Email Confirmed!"
msgstr "¡Correo electrónico confirmado!"
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:307
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:353
msgid "Email Options"
msgstr "Opciones de correo electrónico"
-#: packages/lib/utils/document-audit-logs.ts:363
+#: packages/lib/utils/document-audit-logs.ts:379
msgid "Email resent"
msgstr "Correo electrónico reeenviado"
-#: packages/lib/utils/document-audit-logs.ts:363
+#: packages/lib/utils/document-audit-logs.ts:379
msgid "Email sent"
msgstr "Correo electrónico enviado"
@@ -2459,11 +2467,11 @@ msgstr "Habilitar aplicación autenticadora"
msgid "Enable custom branding for all documents in this team."
msgstr "Habilitar branding personalizado para todos los documentos en este equipo."
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:251
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:246
msgid "Enable direct link signing"
msgstr "Habilitar firma de enlace directo"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:374
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:368
#: packages/lib/constants/template.ts:8
msgid "Enable Direct Link Signing"
msgstr "Habilitar firma de enlace directo"
@@ -2495,7 +2503,7 @@ msgstr "Habilitado"
msgid "Enabling the account results in the user being able to use the account again, and all the related features such as webhooks, teams, and API keys for example."
msgstr "Habilitar la cuenta permite al usuario usar la cuenta de nuevo, junto con todas las funciones relacionadas como webhooks, equipos y claves API, por ejemplo."
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:87
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:88
msgid "Enclosed Document"
msgstr "Documento Adjunto"
@@ -2515,7 +2523,7 @@ msgstr "Ingresa los detalles de tu marca"
msgid "Enter your email"
msgstr "Ingresa tu correo electrónico"
-#: apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx:135
+#: apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx:136
msgid "Enter your email address to receive the completed document."
msgstr "Ingresa tu dirección de correo electrónico para recibir el documento completado."
@@ -2531,19 +2539,19 @@ msgstr "Ingresa tu texto aquí"
#: apps/web/src/app/(dashboard)/admin/users/[id]/disable-user-dialog.tsx:60
#: apps/web/src/app/(dashboard)/admin/users/[id]/enable-user-dialog.tsx:60
#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:80
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:234
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:268
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:303
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:349
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:209
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:242
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:280
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:325
#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:57
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:111
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:117
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:110
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:116
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:155
#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:186
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:217
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:256
-#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:51
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:226
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:50
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:68
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:175
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:187
#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:152
#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:124
#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:153
@@ -2569,7 +2577,7 @@ msgstr "Ingresa tu texto aquí"
#: 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)/settings/webhooks/create-webhook-dialog.tsx:101
-#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:258
+#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:218
#: packages/ui/primitives/pdf-viewer.tsx:166
msgid "Error"
msgstr "Error"
@@ -2600,7 +2608,7 @@ msgid "Expires on {0}"
msgstr "Expira el {0}"
#: packages/ui/primitives/document-flow/add-settings.tsx:295
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:378
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:424
msgid "External ID"
msgstr "ID externo"
@@ -2608,7 +2616,7 @@ msgstr "ID externo"
msgid "Failed to reseal document"
msgstr "Falló al volver a sellar el documento"
-#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:259
+#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:219
msgid "Failed to save settings."
msgstr "Fallo al guardar configuraciones."
@@ -2646,11 +2654,11 @@ msgstr "Etiqueta de campo"
msgid "Field placeholder"
msgstr "Marcador de posición de campo"
-#: packages/lib/utils/document-audit-logs.ts:294
+#: packages/lib/utils/document-audit-logs.ts:310
msgid "Field signed"
msgstr "Campo firmado"
-#: packages/lib/utils/document-audit-logs.ts:298
+#: packages/lib/utils/document-audit-logs.ts:314
msgid "Field unsigned"
msgstr "Campo no firmado"
@@ -2658,10 +2666,14 @@ msgstr "Campo no firmado"
msgid "Fields"
msgstr "Campos"
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:130
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:129
msgid "File cannot be larger than {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB"
msgstr "El archivo no puede ser mayor a {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB"
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:513
+msgid "File size exceeds the limit of {APP_DOCUMENT_UPLOAD_SIZE_LIMIT} MB"
+msgstr ""
+
#: packages/ui/primitives/document-flow/field-items-advanced-settings/date-field.tsx:56
#: packages/ui/primitives/document-flow/field-items-advanced-settings/email-field.tsx:38
#: packages/ui/primitives/document-flow/field-items-advanced-settings/initials-field.tsx:38
@@ -2699,8 +2711,8 @@ msgstr "Firma gratuita"
msgid "Full Name"
msgstr "Nombre completo"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:166
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:77
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:142
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:76
#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:62
#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:44
#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:52
@@ -2776,7 +2788,7 @@ msgstr "Aquí puedes establecer preferencias y valores predeterminados para la m
msgid "Here you can set preferences and defaults for your team."
msgstr "Aquí puedes establecer preferencias y valores predeterminados para tu equipo."
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:206
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:201
msgid "Here's how it works:"
msgstr "Así es como funciona:"
@@ -2788,9 +2800,9 @@ msgstr "Hola, soy Timur"
msgid "Hi, {userName} <0>({userEmail})0>"
msgstr "Hola, {userName} <0>({userEmail})0>"
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:189
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:202
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:155
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:183
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:201
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:154
msgid "Hide"
msgstr "Ocultar"
@@ -2851,8 +2863,8 @@ msgstr "Documentos en bandeja de entrada"
msgid "Include the Signing Certificate in the Document"
msgstr "Incluir el certificado de firma en el documento"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:53
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:50
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:54
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:51
msgid "Information"
msgstr "Información"
@@ -2882,7 +2894,7 @@ msgstr "Código inválido. Por favor, intenta nuevamente."
msgid "Invalid email"
msgstr "Email inválido"
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:105
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:104
msgid "Invalid file"
msgstr "Archivo inválido"
@@ -2941,7 +2953,7 @@ msgid "Invoice"
msgstr "Factura"
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:47
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:235
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:237
msgid "IP Address"
msgstr "Dirección IP"
@@ -2981,7 +2993,7 @@ msgstr "Etiqueta"
#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:286
#: packages/ui/primitives/document-flow/add-settings.tsx:187
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:162
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:184
msgid "Language"
msgstr "Idioma"
@@ -2997,8 +3009,8 @@ msgstr "Últimos 30 días"
msgid "Last 7 days"
msgstr "Últimos 7 días"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:41
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:38
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:42
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:39
msgid "Last modified"
msgstr "Última modificación"
@@ -3006,7 +3018,7 @@ msgstr "Última modificación"
msgid "Last updated"
msgstr "Última actualización"
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:121
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:122
msgid "Last Updated"
msgstr "Última Actualización"
@@ -3048,11 +3060,11 @@ msgstr "¿Te gustaría tener tu propio perfil público con acuerdos?"
msgid "Link expires in 1 hour."
msgstr "El enlace expira en 1 hora."
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:216
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:215
msgid "Link template"
msgstr "Enlace de plantilla"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:338
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:314
msgid "Links Generated"
msgstr "Enlaces generados"
@@ -3073,7 +3085,7 @@ msgstr "Cargando documento..."
#: apps/web/src/app/(dashboard)/documents/[id]/loading.tsx:20
#: apps/web/src/app/(dashboard)/documents/[id]/sent/page.tsx:19
-#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:91
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:90
msgid "Loading Document..."
msgstr "Cargando Documento..."
@@ -3112,7 +3124,7 @@ msgstr "Gestionar y ver plantilla"
msgid "Manage billing"
msgstr "Gestionar la facturación"
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:341
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:339
msgid "Manage details for this public template"
msgstr "Gestionar detalles de esta plantilla pública"
@@ -3148,7 +3160,7 @@ msgstr "Gestionar suscripción de equipo."
msgid "Manage teams"
msgstr "Gestionar equipos"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:367
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:361
msgid "Manage the direct link signing for this template"
msgstr "Gestionar la firma de enlace directo para esta plantilla"
@@ -3204,7 +3216,7 @@ msgid "Members"
msgstr "Miembros"
#: packages/ui/primitives/document-flow/add-subject.tsx:160
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:338
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:384
msgid "Message <0>(Optional)0>"
msgstr "Mensaje <0>(Opcional)0>"
@@ -3243,7 +3255,7 @@ msgstr "Mover documento al equipo"
msgid "Move Template to Team"
msgstr "Mover plantilla al equipo"
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:174
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:168
#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:85
msgid "Move to Team"
msgstr "Mover al equipo"
@@ -3263,8 +3275,8 @@ msgstr "Mis plantillas"
#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:66
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:144
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:59
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:287
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:294
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:299
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:306
#: apps/web/src/app/(signing)/sign/[token]/complete/claim-account.tsx:118
#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:170
#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:153
@@ -3308,8 +3320,8 @@ msgstr "Nunca expira"
msgid "New team owner"
msgstr "Nuevo propietario del equipo"
-#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:96
-#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:103
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:95
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:102
msgid "New Template"
msgstr "Nueva plantilla"
@@ -3335,7 +3347,7 @@ msgstr "No further action is required from you at this time."
msgid "No payment required"
msgstr "No se requiere pago"
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:125
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:120
msgid "No public profile templates found"
msgstr "No se encontraron plantillas de perfil público"
@@ -3343,7 +3355,7 @@ msgstr "No se encontraron plantillas de perfil público"
msgid "No recent activity"
msgstr "No hay actividad reciente"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:101
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:99
msgid "No recent documents"
msgstr "No hay documentos recientes"
@@ -3387,11 +3399,11 @@ msgstr "No se encontró campo de firma"
msgid "No token provided"
msgstr "No se proporcionó token"
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:284
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:282
msgid "No valid direct templates found"
msgstr "No se encontraron plantillas directas válidas"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:293
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:288
msgid "No valid recipients found"
msgstr "No se encontraron destinatarios válidos"
@@ -3464,7 +3476,7 @@ msgstr "En esta página, puedes editar el webhook y sus configuraciones."
msgid "On this page, you can edit the webhook and its settings."
msgstr "En esta página, puedes editar el webhook y su configuración."
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:136
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:135
msgid "Once confirmed, the following will occur:"
msgstr "Una vez confirmado, ocurrirá lo siguiente:"
@@ -3504,7 +3516,7 @@ msgstr "¡Ups! Algo salió mal."
msgid "Opened"
msgstr "Abierto"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:337
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:332
#: apps/web/src/components/forms/signup.tsx:239
#: apps/web/src/components/forms/signup.tsx:263
#: apps/web/src/components/forms/v2/signup.tsx:387
@@ -3515,12 +3527,12 @@ msgstr "O"
msgid "Or continue with"
msgstr "O continúa con"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:340
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:351
msgid "Otherwise, the document will be created as a draft."
msgstr "De lo contrario, el documento se creará como un borrador."
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:86
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:103
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:104
#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:81
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:84
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:107
@@ -3629,7 +3641,7 @@ msgid "Payment overdue"
msgstr "Pago atrasado"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:131
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:207
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:206
#: apps/web/src/components/(teams)/tables/teams-member-page-data-table.tsx:82
#: apps/web/src/components/(teams)/tables/user-settings-teams-page-data-table.tsx:77
#: apps/web/src/components/document/document-read-only-fields.tsx:89
@@ -3724,7 +3736,7 @@ msgstr "Por favor confirma tu correo electrónico"
msgid "Please confirm your email address"
msgstr "Por favor confirma tu dirección de correo electrónico"
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:176
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:175
msgid "Please contact support if you would like to revert this action."
msgstr "Por favor, contacta al soporte si deseas revertir esta acción."
@@ -3741,19 +3753,19 @@ msgstr "Por favor, introduce un nombre válido."
msgid "Please mark as viewed to complete"
msgstr "Por favor, marca como visto para completar"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:459
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:453
msgid "Please note that proceeding will remove direct linking recipient and turn it into a placeholder."
msgstr "Por favor, ten en cuenta que proceder eliminará el destinatario de enlace directo y lo convertirá en un marcador de posición."
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:130
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:129
msgid "Please note that this action is <0>irreversible0>."
msgstr "Por favor, ten en cuenta que esta acción es <0>irreversible0>."
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:121
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:120
msgid "Please note that this action is <0>irreversible0>. Once confirmed, this document will be permanently deleted."
msgstr "Por favor, ten en cuenta que esta acción es <0>irreversible0>. Una vez confirmada, este documento será eliminado permanentemente."
-#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:67
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:62
msgid "Please note that this action is irreversible. Once confirmed, your template will be permanently deleted."
msgstr "Por favor, ten en cuenta que esta acción es irreversible. Una vez confirmada, tu plantilla será eliminada permanentemente."
@@ -3785,6 +3797,10 @@ msgstr "Por favor, proporciona un token de tu autenticador, o un código de resp
msgid "Please review the document before signing."
msgstr "Por favor, revise el documento antes de firmar."
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:503
+msgid "Please select a PDF file"
+msgstr ""
+
#: apps/web/src/components/forms/send-confirmation-email.tsx:64
msgid "Please try again and make sure you enter the correct email address."
msgstr "Por favor, intenta de nuevo y asegúrate de ingresar la dirección de correo electrónico correcta."
@@ -3793,7 +3809,7 @@ msgstr "Por favor, intenta de nuevo y asegúrate de ingresar la dirección de co
msgid "Please try again later or login using your normal details"
msgstr "Por favor, intenta de nuevo más tarde o inicia sesión utilizando tus datos normales"
-#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:80
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:79
msgid "Please try again later."
msgstr "Por favor, intenta de nuevo más tarde."
@@ -3802,7 +3818,7 @@ msgstr "Por favor, intenta de nuevo más tarde."
msgid "Please try again or contact our support."
msgstr "Por favor, inténtalo de nuevo o contacta a nuestro soporte."
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:186
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:185
msgid "Please type {0} to confirm"
msgstr "Por favor, escriba {0} para confirmar"
@@ -3840,11 +3856,11 @@ msgstr "Las plantillas privadas solo pueden ser modificadas y vistas por ti."
msgid "Profile"
msgstr "Perfil"
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:184
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:183
msgid "Profile is currently <0>hidden0>."
msgstr "El perfil está actualmente <0>oculto0>."
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:172
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:171
msgid "Profile is currently <0>visible0>."
msgstr "El perfil está actualmente <0>visible0>."
@@ -3906,7 +3922,7 @@ msgstr "Lea la <0>divulgación de firma0> completa."
msgid "Ready"
msgstr "Listo"
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:289
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:291
msgid "Reason"
msgstr "Razón"
@@ -3935,21 +3951,21 @@ msgstr "Recibe copia"
msgid "Recent activity"
msgstr "Actividad reciente"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:45
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:43
msgid "Recent documents"
msgstr "Documentos recientes"
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:63
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:116
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:280
-#: packages/lib/utils/document-audit-logs.ts:338
-#: packages/lib/utils/document-audit-logs.ts:353
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:115
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:275
+#: packages/lib/utils/document-audit-logs.ts:354
+#: packages/lib/utils/document-audit-logs.ts:369
msgid "Recipient"
msgstr "Destinatario"
#: packages/ui/components/recipient/recipient-action-auth-select.tsx:39
#: packages/ui/primitives/document-flow/add-settings.tsx:269
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:291
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:337
msgid "Recipient action authentication"
msgstr "Autenticación de acción de destinatario"
@@ -3972,7 +3988,7 @@ msgstr "Destinatario actualizado"
#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:66
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:49
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recipients.tsx:30
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:139
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:140
msgid "Recipients"
msgstr "Destinatarios"
@@ -3980,7 +3996,7 @@ msgstr "Destinatarios"
msgid "Recipients metrics"
msgstr "Métricas de destinatarios"
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:166
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:165
msgid "Recipients will still retain their copy of the document"
msgstr "Los destinatarios aún conservarán su copia del documento"
@@ -3997,7 +4013,7 @@ msgid "Red"
msgstr "Rojo"
#: packages/ui/primitives/document-flow/add-settings.tsx:383
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:461
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:507
msgid "Redirect URL"
msgstr "URL de redirección"
@@ -4047,8 +4063,8 @@ msgstr "Recordatorio: Por favor {recipientActionVerb} este documento"
msgid "Reminder: Please {recipientActionVerb} your document"
msgstr "Recordatorio: Por favor {recipientActionVerb} tu documento"
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:193
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:431
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:188
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:425
#: apps/web/src/app/(signing)/sign/[token]/signing-field-container.tsx:156
#: apps/web/src/app/(signing)/sign/[token]/signing-field-container.tsx:180
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:250
@@ -4177,7 +4193,7 @@ msgstr "Revocar"
msgid "Revoke access"
msgstr "Revocar acceso"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:283
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:278
#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:318
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:163
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:80
@@ -4195,12 +4211,12 @@ msgstr "Roles"
msgid "Rows per page"
msgstr "Filas por página"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:446
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:440
#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:337
#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:344
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:312
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:305
-#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:356
+#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:316
msgid "Save"
msgstr "Guardar"
@@ -4266,11 +4282,11 @@ msgstr "Seleccionar un equipo para mover este documento. Esta acción no se pued
msgid "Select a team to move this template to. This action cannot be undone."
msgstr "Seleccionar un equipo para mover esta plantilla. Esta acción no se puede deshacer."
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:261
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:259
msgid "Select a template you'd like to display on your public profile"
msgstr "Seleccionar una plantilla que te gustaría mostrar en tu perfil público"
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:257
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:255
msgid "Select a template you'd like to display on your team's public profile"
msgstr "Seleccionar una plantilla que te gustaría mostrar en el perfil público de tu equipo"
@@ -4301,7 +4317,7 @@ msgstr "Enviar"
msgid "Send confirmation email"
msgstr "Enviar correo de confirmación"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:325
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:336
msgid "Send document"
msgstr "Enviar documento"
@@ -4362,7 +4378,7 @@ msgid "Sending..."
msgstr "Enviando..."
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:101
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:256
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:258
msgid "Sent"
msgstr "Enviado"
@@ -4381,8 +4397,8 @@ msgstr "Configuraciones"
msgid "Setup"
msgstr "Configuración"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:148
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:193
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:147
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:187
msgid "Share"
msgstr "Compartir"
@@ -4390,8 +4406,8 @@ msgstr "Compartir"
msgid "Share Signature Card"
msgstr "Compartir tarjeta de firma"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:179
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:219
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:178
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:213
msgid "Share Signing Card"
msgstr "Compartir tarjeta de firma"
@@ -4403,7 +4419,7 @@ msgstr "Compartir el enlace"
msgid "Share your signing experience!"
msgstr "¡Comparte tu experiencia de firma!"
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:163
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:162
msgid "Show"
msgstr "Mostrar"
@@ -4424,9 +4440,9 @@ msgstr "Mostrar plantillas en tu perfil público para que tu audiencia firme y c
msgid "Show templates in your team public profile for your audience to sign and get started quickly"
msgstr "Mostrar plantillas en el perfil público de tu equipo para que tu audiencia firme y comience rápidamente"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:83
-#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:114
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:139
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:82
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:108
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:133
#: apps/web/src/app/(profile)/p/[url]/page.tsx:192
#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:229
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:182
@@ -4506,7 +4522,7 @@ msgid "Sign Up with OIDC"
msgstr "Regístrate con OIDC"
#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:88
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:177
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:179
#: apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx:342
#: apps/web/src/app/(signing)/sign/[token]/form.tsx:205
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:251
@@ -4521,7 +4537,7 @@ msgstr "Regístrate con OIDC"
msgid "Signature"
msgstr "Firma"
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:228
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:230
msgid "Signature ID"
msgstr "ID de Firma"
@@ -4541,7 +4557,7 @@ msgid "Signatures will appear once the document has been completed"
msgstr "Las firmas aparecerán una vez que el documento se haya completado"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:114
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:278
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:280
#: apps/web/src/components/document/document-read-only-fields.tsx:84
#: packages/lib/constants/recipient-roles.ts:23
msgid "Signed"
@@ -4551,7 +4567,7 @@ msgstr "Firmado"
msgid "Signer"
msgstr "Firmante"
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:176
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:178
msgid "Signer Events"
msgstr "Eventos del Firmante"
@@ -4567,11 +4583,11 @@ msgstr "Los firmantes deben tener correos electrónicos únicos"
msgid "Signing"
msgstr "Firmando"
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:168
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:170
msgid "Signing Certificate"
msgstr "Certificado de Firma"
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:311
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:313
msgid "Signing certificate provided by"
msgstr "Certificado de firma proporcionado por"
@@ -4585,12 +4601,12 @@ msgstr "¡Firma completa!"
msgid "Signing in..."
msgstr "Iniciando sesión..."
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:160
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:203
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:159
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:197
msgid "Signing Links"
msgstr "Enlaces de firma"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:339
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:315
msgid "Signing links have been generated for this document."
msgstr "Se han generado enlaces de firma para este documento."
@@ -4625,27 +4641,27 @@ msgid "Some signers have not been assigned a signature field. Please assign at l
msgstr "Algunos firmantes no han sido asignados a un campo de firma. Asigne al menos 1 campo de firma a cada firmante antes de continuar."
#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:105
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:63
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:91
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-audit-log-button.tsx:65
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:62
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:90
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-audit-log-button.tsx:61
#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-certificate-button.tsx:68
-#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:75
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:106
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:82
-#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:72
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:69
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:100
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:81
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:71
#: apps/web/src/app/(dashboard)/settings/billing/billing-plans.tsx:62
#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:51
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:124
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:123
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:73
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:93
#: apps/web/src/app/(dashboard)/settings/teams/accept-team-invitation-button.tsx:32
#: apps/web/src/app/(dashboard)/settings/teams/decline-team-invitation-button.tsx:32
#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:44
-#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:50
-#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:79
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:104
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:127
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:151
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:45
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:78
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:100
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:123
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:147
#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:118
#: apps/web/src/app/(recipient)/d/[token]/signing-auth-page.tsx:27
#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:38
@@ -4706,7 +4722,7 @@ msgstr "Algo salió mal."
msgid "Something went wrong. Please try again or contact support."
msgstr "Algo salió mal. Por favor, intenta de nuevo o contacta al soporte."
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-audit-log-button.tsx:67
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-audit-log-button.tsx:63
msgid "Sorry, we were unable to download the audit logs. Please try again later."
msgstr "Lo sentimos, no pudimos descargar los registros de auditoría. Por favor, intenta de nuevo más tarde."
@@ -4714,7 +4730,7 @@ msgstr "Lo sentimos, no pudimos descargar los registros de auditoría. Por favor
msgid "Sorry, we were unable to download the certificate. Please try again later."
msgstr "Lo sentimos, no pudimos descargar el certificado. Por favor, intenta de nuevo más tarde."
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:134
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:133
msgid "Source"
msgstr "Fuente"
@@ -4725,8 +4741,8 @@ msgstr "Estadísticas"
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:81
#: apps/web/src/app/(dashboard)/admin/subscriptions/page.tsx:32
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:73
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:126
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:93
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:125
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:94
#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:73
msgid "Status"
msgstr "Estado"
@@ -4736,7 +4752,7 @@ msgid "Step <0>{step} of {maxStep}0>"
msgstr "Paso <0>{step} de {maxStep}0>"
#: packages/ui/primitives/document-flow/add-subject.tsx:143
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:318
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:364
msgid "Subject <0>(Optional)0>"
msgstr "Asunto <0>(Opcional)0>"
@@ -4762,8 +4778,8 @@ msgstr "Suscripciones"
#: apps/web/src/app/(dashboard)/settings/teams/accept-team-invitation-button.tsx:25
#: apps/web/src/app/(dashboard)/settings/teams/decline-team-invitation-button.tsx:25
#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:37
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:118
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:141
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:114
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:137
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:32
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:44
#: apps/web/src/components/(dashboard)/layout/verify-email-banner.tsx:44
@@ -4783,8 +4799,8 @@ msgstr "Suscripciones"
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:60
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:77
#: apps/web/src/components/forms/public-profile-form.tsx:80
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:133
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:170
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:132
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:168
msgid "Success"
msgstr "Éxito"
@@ -4940,31 +4956,31 @@ msgstr "Equipos restringidos"
#: apps/web/src/app/(dashboard)/templates/[id]/edit/template-edit-page-view.tsx:64
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:39
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:144
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:224
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:143
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:223
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:148
#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:408
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:271
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:269
msgid "Template"
msgstr "Plantilla"
-#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:41
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:36
msgid "Template deleted"
msgstr "Plantilla eliminada"
-#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:67
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:66
msgid "Template document uploaded"
msgstr "Documento de plantilla subido"
-#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:42
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:41
msgid "Template duplicated"
msgstr "Plantilla duplicada"
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:134
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:133
msgid "Template has been removed from your public profile."
msgstr "La plantilla ha sido eliminada de tu perfil público."
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:171
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:169
msgid "Template has been updated."
msgstr "La plantilla ha sido actualizada."
@@ -4976,11 +4992,11 @@ msgstr "Plantilla movida"
msgid "Template not found or already associated with a team."
msgstr "Plantilla no encontrada o ya asociada con un equipo."
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:246
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:216
msgid "Template saved"
msgstr "Plantilla guardada"
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:145
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:167
msgid "Template title"
msgstr "Título de plantilla"
@@ -4992,7 +5008,7 @@ msgstr "Título de plantilla"
msgid "Templates"
msgstr "Plantillas"
-#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:106
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:105
msgid "Templates allow you to quickly generate documents with pre-filled recipients and fields."
msgstr "Las plantillas te permiten generar documentos rápidamente con destinatarios y campos prellenados."
@@ -5044,9 +5060,9 @@ msgstr "La autenticación requerida para que los destinatarios vean el documento
msgid "The content to show in the banner, HTML is allowed"
msgstr "El contenido que se mostrará en el banner, se permite HTML"
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:78
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:73
#: apps/web/src/app/(dashboard)/templates/template-direct-link-badge.tsx:32
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:164
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:160
msgid "The direct link has been copied to your clipboard"
msgstr "El enlace directo ha sido copiado a tu portapapeles"
@@ -5066,15 +5082,15 @@ msgstr "El propietario del documento ha sido notificado de este rechazo. No se r
msgid "The document owner has been notified of your decision. They may contact you with further instructions if necessary."
msgstr "The document owner has been notified of your decision. They may contact you with further instructions if necessary."
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:182
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:194
msgid "The document was created but could not be sent to recipients."
msgstr "El documento fue creado pero no se pudo enviar a los destinatarios."
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:163
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:162
msgid "The document will be hidden from your account"
msgstr "El documento será ocultado de tu cuenta"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:333
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:344
msgid "The document will be immediately sent to recipients if this is checked."
msgstr "El documento se enviará inmediatamente a los destinatarios si esto está marcado."
@@ -5116,11 +5132,11 @@ msgstr "El enlace del perfil ha sido copiado a tu portapapeles"
msgid "The profile you are looking for could not be found."
msgstr "El perfil que estás buscando no se pudo encontrar."
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:380
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:378
msgid "The public description that will be displayed with this template"
msgstr "La descripción pública que se mostrará con esta plantilla"
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:358
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:356
msgid "The public name for your template"
msgstr "El nombre público de tu plantilla"
@@ -5199,7 +5215,7 @@ msgstr "El equipo que buscas puede haber sido eliminado, renombrado o puede que
msgid "The template has been successfully moved to the selected team."
msgstr "La plantilla ha sido movida con éxito al equipo seleccionado."
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:443
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:441
msgid "The template will be removed from your profile"
msgstr "La plantilla será eliminada de tu perfil"
@@ -5268,11 +5284,11 @@ msgstr "Esto se puede anular configurando los requisitos de autenticación direc
msgid "This document can not be recovered, if you would like to dispute the reason for future documents please contact support."
msgstr "Este documento no se puede recuperar, si deseas impugnar la razón para documentos futuros, por favor contacta con el soporte."
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:83
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:82
msgid "This document could not be deleted at this time. Please try again."
msgstr "Este documento no se pudo eliminar en este momento. Por favor, inténtalo de nuevo."
-#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:73
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:72
msgid "This document could not be duplicated at this time. Please try again."
msgstr "Este documento no se pudo duplicar en este momento. Por favor, inténtalo de nuevo."
@@ -5292,11 +5308,11 @@ msgstr "Este documento ha sido cancelado por el propietario y ya no está dispon
msgid "This document has been cancelled by the owner."
msgstr "Este documento ha sido cancelado por el propietario."
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:227
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:228
msgid "This document has been signed by all recipients"
msgstr "Este documento ha sido firmado por todos los destinatarios"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:230
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:231
msgid "This document is currently a draft and has not been sent"
msgstr "Este documento es actualmente un borrador y no ha sido enviado"
@@ -5304,11 +5320,11 @@ msgstr "Este documento es actualmente un borrador y no ha sido enviado"
msgid "This document is password protected. Please enter the password to view the document."
msgstr "Este documento está protegido por contraseña. Por favor ingrese la contraseña para ver el documento."
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:148
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:147
msgid "This document was created by you or a team member using the template above."
msgstr "Este documento fue creado por ti o un miembro del equipo usando la plantilla anterior."
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:160
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:159
msgid "This document was created using a direct link."
msgstr "Este documento fue creado usando un enlace directo."
@@ -5344,7 +5360,7 @@ msgstr "Este correo electrónico se enviará al destinatario que acaba de firmar
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 "Este campo no se puede modificar ni eliminar. Cuando comparta el enlace directo de esta plantilla o lo agregue a su perfil público, cualquiera que acceda podrá ingresar su nombre y correo electrónico, y completar los campos que se le hayan asignado."
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:233
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:279
msgid "This is how the document will reach the recipients once the document is ready for signing."
msgstr "Así es como el documento llegará a los destinatarios una vez que esté listo para firmarse."
@@ -5384,7 +5400,7 @@ msgstr "Este firmante ya ha firmado el documento."
msgid "This team, and any associated data excluding billing invoices will be permanently deleted."
msgstr "Este equipo, y cualquier dato asociado, excluyendo las facturas de facturación, serán eliminados permanentemente."
-#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:51
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:46
msgid "This template could not be deleted at this time. Please try again."
msgstr "Esta plantilla no se pudo eliminar en este momento. Por favor, inténtalo de nuevo."
@@ -5434,15 +5450,15 @@ msgstr "Hora"
msgid "Time zone"
msgstr "Zona horaria"
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:131
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:132
#: packages/ui/primitives/document-flow/add-settings.tsx:359
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:438
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:484
msgid "Time Zone"
msgstr "Zona horaria"
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:67
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:54
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:111
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:110
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:61
#: packages/ui/primitives/document-flow/add-settings.tsx:166
msgid "Title"
@@ -5495,11 +5511,11 @@ msgstr "Para usar nuestro servicio de firma electrónica, debe tener acceso a:"
msgid "To view this document you need to be signed into your account, please sign in to continue."
msgstr "Para ver este documento debes iniciar sesión en tu cuenta, por favor inicia sesión para continuar."
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:178
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:177
msgid "Toggle the switch to hide your profile from the public."
msgstr "Activa el interruptor para ocultar tu perfil del público."
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:190
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:189
msgid "Toggle the switch to show your profile to the public."
msgstr "Activa el interruptor para mostrar tu perfil al público."
@@ -5633,7 +5649,7 @@ msgstr "No se pudo copiar el código de recuperación"
msgid "Unable to copy token"
msgstr "No se pudo copiar el token"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:105
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:101
msgid "Unable to create direct template access. Please try again later."
msgstr "No se pudo crear acceso directo a la plantilla. Por favor, inténtalo de nuevo más tarde."
@@ -5662,11 +5678,11 @@ msgstr "No se pudo unirte a este equipo en este momento."
msgid "Unable to load document history"
msgstr "No se pudo cargar el historial del documento"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:60
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:58
msgid "Unable to load documents"
msgstr "No se pueden cargar documentos"
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:111
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:106
msgid "Unable to load your public profile templates at this time"
msgstr "No se pudo cargar tus plantillas de perfil público en este momento"
@@ -5709,10 +5725,10 @@ msgstr "No autorizado"
msgid "Uncompleted"
msgstr "Incompleto"
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:237
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:262
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:273
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:284
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:239
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:264
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:275
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:286
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:55
msgid "Unknown"
msgstr "Desconocido"
@@ -5725,12 +5741,12 @@ msgstr "Error desconocido"
msgid "Unpaid"
msgstr "No pagado"
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:181
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:176
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:162
#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:166
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:191
#: apps/web/src/components/forms/public-profile-form.tsx:279
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:428
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:426
#: packages/ui/primitives/document-flow/add-subject.tsx:86
msgid "Update"
msgstr "Actualizar"
@@ -5802,10 +5818,18 @@ msgstr "Actualizando Su Información"
msgid "Upgrade"
msgstr "Actualizar"
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:426
+msgid "Upload a custom document to use instead of the template's default document"
+msgstr ""
+
#: apps/web/src/components/forms/avatar-image.tsx:179
msgid "Upload Avatar"
msgstr "Subir avatar"
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:419
+msgid "Upload custom document"
+msgstr ""
+
#: packages/ui/primitives/signature-pad/signature-pad.tsx:529
msgid "Upload Signature"
msgstr "Subir firma"
@@ -5849,7 +5873,7 @@ msgstr "Usar Autenticador"
msgid "Use Backup Code"
msgstr "Usar Código de Respaldo"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:207
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:219
msgid "Use Template"
msgstr "Usar Plantilla"
@@ -5930,14 +5954,14 @@ msgstr "Verifica tu correo electrónico para subir documentos."
msgid "Verify your team email address"
msgstr "Verifica tu dirección de correo electrónico del equipo"
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:75
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:76
msgid "Version History"
msgstr "Historial de Versiones"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:95
-#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:126
-#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:135
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:132
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:94
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:120
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:129
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:126
#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:100
#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:168
#: packages/lib/constants/recipient-roles.ts:29
@@ -5960,7 +5984,7 @@ msgstr "Ver todos los documentos enviados a tu cuenta"
msgid "View all recent security activity related to your account."
msgstr "Ver toda la actividad de seguridad reciente relacionada con tu cuenta."
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:155
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:153
msgid "View all related documents"
msgstr "Ver todos los documentos relacionados"
@@ -5992,7 +6016,7 @@ msgstr "Ver documentos asociados con este correo electrónico"
msgid "View invites"
msgstr "Ver invitaciones"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:93
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:91
msgid "View more"
msgstr "Ver más"
@@ -6014,7 +6038,7 @@ msgid "View teams"
msgstr "Ver equipos"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:120
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:267
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:269
#: packages/lib/constants/recipient-roles.ts:30
msgid "Viewed"
msgstr "Visto"
@@ -6073,7 +6097,7 @@ msgstr "No podemos eliminar esta clave de acceso en este momento. Por favor, int
msgid "We are unable to update this passkey at the moment. Please try again later."
msgstr "No podemos actualizar esta clave de acceso en este momento. Por favor, inténtalo de nuevo más tarde."
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:153
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:149
msgid "We encountered an error while removing the direct template link. Please try again later."
msgstr "Encontramos un error al eliminar el enlace directo de la plantilla. Por favor, inténtalo de nuevo más tarde."
@@ -6123,7 +6147,7 @@ msgstr "Encontramos un error desconocido al intentar invitar a miembros del equi
msgid "We encountered an unknown error while attempting to leave this team. Please try again later."
msgstr "Encontramos un error desconocido al intentar salir de este equipo. Por favor, inténtalo de nuevo más tarde."
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:143
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:142
msgid "We encountered an unknown error while attempting to remove this template from your profile. Please try again later."
msgstr "Encontramos un error desconocido al intentar eliminar esta plantilla de tu perfil. Por favor, inténtalo de nuevo más tarde."
@@ -6169,7 +6193,7 @@ msgstr "Encontramos un error desconocido al intentar registrarte. Por favor, int
msgid "We encountered an unknown error while attempting to update the banner. Please try again later."
msgstr "Encontramos un error desconocido al intentar actualizar el banner. Por favor, inténtalo de nuevo más tarde."
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:180
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:178
msgid "We encountered an unknown error while attempting to update the template. Please try again later."
msgstr "Encontramos un error desconocido al intentar actualizar la plantilla. Por favor, inténtalo de nuevo más tarde."
@@ -6231,7 +6255,7 @@ msgstr "No pudimos desactivar la autenticación de dos factores para tu cuenta.
msgid "We were unable to log you out at this time."
msgstr "No pudimos cerrar sesión en este momento."
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:125
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:124
msgid "We were unable to set your public profile to public. Please try again."
msgstr "No pudimos configurar tu perfil público como público. Por favor, inténtalo de nuevo."
@@ -6266,11 +6290,11 @@ msgstr "No pudimos verificar tu correo electrónico. Si tu correo electrónico n
msgid "We will generate signing links for with you, which you can send to the recipients through your method of choice."
msgstr "Generaremos enlaces de firma para ti, que podrás enviar a los destinatarios a través de tu método preferido."
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:369
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:382
msgid "We will generate signing links for you, which you can send to the recipients through your method of choice."
msgstr "Generaremos enlaces de firma para ti, que podrás enviar a los destinatarios a través de tu método preferido."
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:365
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:378
#: packages/ui/primitives/document-flow/add-subject.tsx:201
msgid "We won't send anything to notify recipients."
msgstr "No enviaremos nada para notificar a los destinatarios."
@@ -6376,13 +6400,13 @@ msgstr "Escribe sobre ti mismo"
msgid "Yearly"
msgstr "Anual"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:32
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:31
-#: packages/lib/utils/document-audit-logs.ts:258
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:33
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:32
+#: packages/lib/utils/document-audit-logs.ts:274
msgid "You"
msgstr "Tú"
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:105
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:104
msgid "You are about to delete <0>\"{documentTitle}\"0>"
msgstr "Estás a punto de eliminar <0>\"{documentTitle}\"0>"
@@ -6390,7 +6414,7 @@ msgstr "Estás a punto de eliminar <0>\"{documentTitle}\"0>"
msgid "You are about to delete the following team email from <0>{teamName}0>."
msgstr "Estás a punto de eliminar el siguiente correo electrónico del equipo de <0>{teamName}0>."
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:109
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:108
msgid "You are about to hide <0>\"{documentTitle}\"0>"
msgstr "Estás a punto de ocultar <0>\"{documentTitle}\"0>"
@@ -6490,7 +6514,7 @@ msgstr "No puedes modificar a un miembro del equipo que tenga un rol más alto q
msgid "You cannot upload documents at this time."
msgstr "No puede cargar documentos en este momento."
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:106
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:105
msgid "You cannot upload encrypted PDFs"
msgstr "No puedes subir PDFs encriptados"
@@ -6527,7 +6551,8 @@ msgstr "Te han invitado a unirte a {0} en Documenso"
msgid "You have been invited to join the following team"
msgstr "Te han invitado a unirte al siguiente equipo"
-#: packages/lib/server-only/recipient/set-recipients-for-document.ts:337
+#: packages/lib/server-only/recipient/delete-document-recipient.ts:156
+#: packages/lib/server-only/recipient/set-document-recipients.ts:326
msgid "You have been removed from a document"
msgstr "Te han eliminado de un documento"
@@ -6557,7 +6582,7 @@ msgstr "Aún no has creado plantillas. Para crear una plantilla, por favor carga
msgid "You have not yet created or received any documents. To create a document please upload one."
msgstr "Aún no has creado ni recibido documentos. Para crear un documento, por favor carga uno."
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:234
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:229
msgid "You have reached the maximum limit of {0} direct templates. <0>Upgrade your account to continue!0>"
msgstr "Has alcanzado el límite máximo de {0} plantillas directas. <0>¡Actualiza tu cuenta para continuar!0>"
@@ -6626,7 +6651,7 @@ msgstr "Debes ingresar '{deleteMessage}' para continuar"
msgid "You must have at least one other team member to transfer ownership."
msgstr "Debes tener al menos otro miembro del equipo para transferir la propiedad."
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:109
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:108
msgid "You must set a profile URL before enabling your public profile."
msgstr "Debes establecer una URL de perfil antes de habilitar tu perfil público."
@@ -6678,15 +6703,15 @@ msgstr "Tus preferencias de marca han sido actualizadas"
msgid "Your current plan is past due. Please update your payment information."
msgstr "Tu plan actual está vencido. Por favor actualiza tu información de pago."
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:251
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:249
msgid "Your direct signing templates"
msgstr "Tus {0} plantillas de firma directa"
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:129
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:128
msgid "Your document failed to upload."
msgstr "Tu documento no se pudo cargar."
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:157
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:169
msgid "Your document has been created from the template successfully."
msgstr "Tu documento se ha creado exitosamente a partir de la plantilla."
@@ -6698,19 +6723,19 @@ msgstr "¡Tu documento ha sido eliminado por un administrador!"
msgid "Your document has been re-sent successfully."
msgstr "Tu documento ha sido reenviado con éxito."
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:328
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:304
msgid "Your document has been sent successfully."
msgstr "Tu documento ha sido enviado con éxito."
-#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:59
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:58
msgid "Your document has been successfully duplicated."
msgstr "Tu documento ha sido duplicado con éxito."
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:87
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:86
msgid "Your document has been uploaded successfully."
msgstr "Tu documento ha sido subido con éxito."
-#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:69
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:68
msgid "Your document has been uploaded successfully. You will be redirected to the template page."
msgstr "Tu documento ha sido subido con éxito. Serás redirigido a la página de plantillas."
@@ -6795,19 +6820,19 @@ msgstr "Tu equipo ha sido eliminado con éxito."
msgid "Your team has been successfully updated."
msgstr "Tu equipo ha sido actualizado con éxito."
-#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:43
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:42
msgid "Your template has been duplicated successfully."
msgstr "Tu plantilla ha sido duplicada con éxito."
-#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:42
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:37
msgid "Your template has been successfully deleted."
msgstr "Tu plantilla ha sido eliminada con éxito."
-#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:67
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:66
msgid "Your template will be duplicated."
msgstr "Tu plantilla será duplicada."
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:247
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:217
msgid "Your templates has been saved successfully."
msgstr "Tus plantillas han sido guardadas con éxito."
@@ -6823,4 +6848,3 @@ msgstr "¡Tu token se creó con éxito! ¡Asegúrate de copiarlo porque no podr
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:86
msgid "Your tokens will be shown here once you create them."
msgstr "Tus tokens se mostrarán aquí una vez que los crees."
-
diff --git a/packages/lib/translations/fr/web.po b/packages/lib/translations/fr/web.po
index 8f500df70..1ca77b57d 100644
--- a/packages/lib/translations/fr/web.po
+++ b/packages/lib/translations/fr/web.po
@@ -38,7 +38,7 @@ msgstr "« {documentName} » a été signé"
msgid "“{documentName}” was signed by all signers"
msgstr "“{documentName}” a été signé par tous les signataires"
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:62
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:61
msgid "\"{documentTitle}\" has been successfully deleted"
msgstr "\"{documentTitle}\" a été supprimé avec succès"
@@ -51,7 +51,7 @@ msgid "{0, plural, one {(1 character over)} other {(# characters over)}}"
msgstr "{0, plural, one {(1 caractère de trop)} other {(# caractères de trop)}}"
#: apps/web/src/components/forms/public-profile-form.tsx:237
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:395
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:393
msgid "{0, plural, one {# character over the limit} other {# characters over the limit}}"
msgstr "{0, plural, one {# caractère au-dessus de la limite} other {# caractères au-dessus de la limite}}"
@@ -76,7 +76,7 @@ msgstr "{0, plural, one {1 champ correspondant} other {# champs correspondants}}
msgid "{0, plural, one {1 Recipient} other {# Recipients}}"
msgstr "{0, plural, one {1 Destinataire} other {# Destinataires}}"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:238
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:239
msgid "{0, plural, one {Waiting on 1 recipient} other {Waiting on # recipients}}"
msgstr "{0, plural, one {En attente d'1 destinataire} other {En attente de # destinataires}}"
@@ -88,7 +88,7 @@ msgstr "{0, plural, zero {Sélectionner des valeurs} other {# sélectionnées...
msgid "{0}"
msgstr "{0}"
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:249
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:247
msgid "{0} direct signing templates"
msgstr "{0} modèles de signature directe"
@@ -108,7 +108,7 @@ msgstr "{0} a rejoint l'équipe {teamName} sur Documenso"
msgid "{0} left the team {teamName} on Documenso"
msgstr "{0} a quitté l'équipe {teamName} sur Documenso"
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:151
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:150
msgid "{0} of {1} documents remaining this month."
msgstr "{0} des {1} documents restants ce mois-ci."
@@ -121,7 +121,7 @@ msgstr "{0} sur {1} ligne(s) sélectionnée(s)."
msgid "{0} on behalf of \"{1}\" has invited you to {recipientActionVerb} the document \"{2}\"."
msgstr "{0} représentant \"{1}\" vous a invité à {recipientActionVerb} le document \"{2}\"."
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:173
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:174
msgid "{0} Recipient(s)"
msgstr "{0} Destinataire(s)"
@@ -181,87 +181,87 @@ msgstr "{memberEmail} a quitté l'équipe suivante"
msgid "{numberOfSeats, plural, one {# member} other {# members}}"
msgstr "{numberOfSeats, plural, one {# membre} other {# membres}}"
-#: packages/lib/utils/document-audit-logs.ts:263
+#: packages/lib/utils/document-audit-logs.ts:279
msgid "{prefix} added a field"
msgstr "{prefix} a ajouté un champ"
-#: packages/lib/utils/document-audit-logs.ts:275
+#: packages/lib/utils/document-audit-logs.ts:291
msgid "{prefix} added a recipient"
msgstr "{prefix} a ajouté un destinataire"
-#: packages/lib/utils/document-audit-logs.ts:287
+#: packages/lib/utils/document-audit-logs.ts:303
msgid "{prefix} created the document"
msgstr "{prefix} a créé le document"
-#: packages/lib/utils/document-audit-logs.ts:291
+#: packages/lib/utils/document-audit-logs.ts:307
msgid "{prefix} deleted the document"
msgstr "{prefix} a supprimé le document"
-#: packages/lib/utils/document-audit-logs.ts:335
+#: packages/lib/utils/document-audit-logs.ts:351
msgid "{prefix} moved the document to team"
msgstr "{prefix} a déplacé le document vers l'équipe"
-#: packages/lib/utils/document-audit-logs.ts:319
+#: packages/lib/utils/document-audit-logs.ts:335
msgid "{prefix} opened the document"
msgstr "{prefix} a ouvert le document"
-#: packages/lib/utils/document-audit-logs.ts:267
+#: packages/lib/utils/document-audit-logs.ts:283
msgid "{prefix} removed a field"
msgstr "{prefix} a supprimé un champ"
-#: packages/lib/utils/document-audit-logs.ts:279
+#: packages/lib/utils/document-audit-logs.ts:295
msgid "{prefix} removed a recipient"
msgstr "{prefix} a supprimé un destinataire"
-#: packages/lib/utils/document-audit-logs.ts:365
+#: packages/lib/utils/document-audit-logs.ts:381
msgid "{prefix} resent an email to {0}"
msgstr "{prefix} a renvoyé un e-mail à {0}"
-#: packages/lib/utils/document-audit-logs.ts:366
+#: packages/lib/utils/document-audit-logs.ts:382
msgid "{prefix} sent an email to {0}"
msgstr "{prefix} a envoyé un email à {0}"
-#: packages/lib/utils/document-audit-logs.ts:331
+#: packages/lib/utils/document-audit-logs.ts:347
msgid "{prefix} sent the document"
msgstr "{prefix} a envoyé le document"
-#: packages/lib/utils/document-audit-logs.ts:295
+#: packages/lib/utils/document-audit-logs.ts:311
msgid "{prefix} signed a field"
msgstr "{prefix} a signé un champ"
-#: packages/lib/utils/document-audit-logs.ts:299
+#: packages/lib/utils/document-audit-logs.ts:315
msgid "{prefix} unsigned a field"
msgstr "{prefix} n'a pas signé un champ"
-#: packages/lib/utils/document-audit-logs.ts:271
+#: packages/lib/utils/document-audit-logs.ts:287
msgid "{prefix} updated a field"
msgstr "{prefix} a mis à jour un champ"
-#: packages/lib/utils/document-audit-logs.ts:283
+#: packages/lib/utils/document-audit-logs.ts:299
msgid "{prefix} updated a recipient"
msgstr "{prefix} a mis à jour un destinataire"
-#: packages/lib/utils/document-audit-logs.ts:315
+#: packages/lib/utils/document-audit-logs.ts:331
msgid "{prefix} updated the document"
msgstr "{prefix} a mis à jour le document"
-#: packages/lib/utils/document-audit-logs.ts:307
+#: packages/lib/utils/document-audit-logs.ts:323
msgid "{prefix} updated the document access auth requirements"
msgstr "{prefix} a mis à jour les exigences d'authentification d'accès au document"
-#: packages/lib/utils/document-audit-logs.ts:327
+#: packages/lib/utils/document-audit-logs.ts:343
msgid "{prefix} updated the document external ID"
msgstr "{prefix} a mis à jour l'ID externe du document"
-#: packages/lib/utils/document-audit-logs.ts:311
+#: packages/lib/utils/document-audit-logs.ts:327
msgid "{prefix} updated the document signing auth requirements"
msgstr "{prefix} a mis à jour les exigences d'authentification pour la signature des documents"
-#: packages/lib/utils/document-audit-logs.ts:323
+#: packages/lib/utils/document-audit-logs.ts:339
msgid "{prefix} updated the document title"
msgstr "{prefix} a mis à jour le titre du document"
-#: packages/lib/utils/document-audit-logs.ts:303
+#: packages/lib/utils/document-audit-logs.ts:319
msgid "{prefix} updated the document visibility"
msgstr "{prefix} a mis à jour la visibilité du document"
@@ -298,7 +298,7 @@ msgid "{recipientReference} has signed {documentName}"
msgstr "{recipientReference} a signé {documentName}"
#: apps/web/src/components/forms/public-profile-form.tsx:231
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:389
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:387
msgid "{remaningLength, plural, one {# character remaining} other {# characters remaining}}"
msgstr "{remaningLength, plural, one {# caractère restant} other {# caractères restants}}"
@@ -318,27 +318,27 @@ msgstr "{teamName} vous a invité à {action} {documentName}"
msgid "{teamName} ownership transfer request"
msgstr "Demande de transfert de propriété de {teamName}"
-#: packages/lib/utils/document-audit-logs.ts:343
+#: packages/lib/utils/document-audit-logs.ts:359
msgid "{userName} approved the document"
msgstr "{userName} a approuvé le document"
-#: packages/lib/utils/document-audit-logs.ts:344
+#: packages/lib/utils/document-audit-logs.ts:360
msgid "{userName} CC'd the document"
msgstr "{userName} a mis en copie le document"
-#: packages/lib/utils/document-audit-logs.ts:345
+#: packages/lib/utils/document-audit-logs.ts:361
msgid "{userName} completed their task"
msgstr "{userName} a terminé sa tâche"
-#: packages/lib/utils/document-audit-logs.ts:355
+#: packages/lib/utils/document-audit-logs.ts:371
msgid "{userName} rejected the document"
msgstr "{userName} a rejeté le document"
-#: packages/lib/utils/document-audit-logs.ts:341
+#: packages/lib/utils/document-audit-logs.ts:357
msgid "{userName} signed the document"
msgstr "{userName} a signé le document"
-#: packages/lib/utils/document-audit-logs.ts:342
+#: packages/lib/utils/document-audit-logs.ts:358
msgid "{userName} viewed the document"
msgstr "{userName} a consulté le document"
@@ -358,7 +358,11 @@ msgstr "<0>{senderName}0> a demandé que vous preniez en charge l'équipe suiv
msgid "<0>{teamName}0> has requested to use your email address for their team on Documenso."
msgstr "<0>{teamName}0> a demandé à utiliser votre adresse e-mail pour leur équipe sur Documenso."
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:241
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:463
+msgid "<0>Click to upload0> or drag and drop"
+msgstr ""
+
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:287
msgid "<0>Email0> - The recipient will be emailed the document to sign, approve, etc."
msgstr "<0>Email0> - Le destinataire recevra le document par e-mail pour signer, approuver, etc."
@@ -378,11 +382,11 @@ msgstr "<0>Aucune restriction0> - Le document peut être consulté directement
msgid "<0>None0> - No authentication required"
msgstr "<0>Aucun0> - Aucune authentification requise"
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:247
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:293
msgid "<0>None0> - We will generate links which you can send to the recipients manually."
msgstr "<0>Aucun0> - Nous générerons des liens que vous pourrez envoyer aux destinataires manuellement."
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:254
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:300
msgid "<0>Note0> - If you use Links in combination with direct templates, you will need to manually send the links to the remaining recipients."
msgstr "<0>Remarque0> - Si vous utilisez des liens en combinaison avec des modèles directs, vous devrez envoyer manuellement les liens aux destinataires restants."
@@ -464,19 +468,19 @@ msgstr "Un appareil capable d'accéder, d'ouvrir et de lire des documents"
msgid "A document was created by your direct template that requires you to {recipientActionVerb} it."
msgstr "Un document a été créé par votre modèle direct qui vous oblige à {recipientActionVerb}."
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:218
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:230
msgid "A draft document will be created"
msgstr "Un document brouillon sera créé"
-#: packages/lib/utils/document-audit-logs.ts:262
+#: packages/lib/utils/document-audit-logs.ts:278
msgid "A field was added"
msgstr "Un champ a été ajouté"
-#: packages/lib/utils/document-audit-logs.ts:266
+#: packages/lib/utils/document-audit-logs.ts:282
msgid "A field was removed"
msgstr "Un champ a été supprimé"
-#: packages/lib/utils/document-audit-logs.ts:270
+#: packages/lib/utils/document-audit-logs.ts:286
msgid "A field was updated"
msgstr "Un champ a été mis à jour"
@@ -497,15 +501,15 @@ msgstr "Un nouveau token a été créé avec succès."
msgid "A password reset email has been sent, if you have an account you should see it in your inbox shortly."
msgstr "Un e-mail de réinitialisation de mot de passe a été envoyé, si vous avez un compte vous devriez le voir dans votre boîte de réception sous peu."
-#: packages/lib/utils/document-audit-logs.ts:274
+#: packages/lib/utils/document-audit-logs.ts:290
msgid "A recipient was added"
msgstr "Un destinataire a été ajouté"
-#: packages/lib/utils/document-audit-logs.ts:278
+#: packages/lib/utils/document-audit-logs.ts:294
msgid "A recipient was removed"
msgstr "Un destinataire a été supprimé"
-#: packages/lib/utils/document-audit-logs.ts:282
+#: packages/lib/utils/document-audit-logs.ts:298
msgid "A recipient was updated"
msgstr "Un destinataire a été mis à jour"
@@ -612,17 +616,17 @@ msgstr "Ré-authentification de compte"
msgid "Acknowledgment"
msgstr "Reconnaissance"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:108
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:107
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:98
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:123
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:164
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:117
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:159
#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:116
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:46
msgid "Action"
msgstr "Action"
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:79
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:177
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:176
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:140
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:131
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:140
@@ -650,16 +654,16 @@ msgid "Add a document"
msgstr "Ajouter un document"
#: packages/ui/primitives/document-flow/add-settings.tsx:390
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:468
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:514
msgid "Add a URL to redirect the user to once the document is signed"
msgstr "Ajouter une URL pour rediriger l'utilisateur une fois le document signé"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:177
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:88
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:153
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:87
msgid "Add all relevant fields for each recipient."
msgstr "Ajouter tous les champs pertinents pour chaque destinataire."
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:83
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:82
msgid "Add all relevant placeholders for each recipient."
msgstr "Ajouter tous les espaces réservés pertinents pour chaque destinataire."
@@ -675,7 +679,7 @@ msgstr "Ajouter un authentificateur pour servir de méthode d'authentification s
msgid "Add an external ID to the document. This can be used to identify the document in external systems."
msgstr "Ajouter un ID externe au document. Cela peut être utilisé pour identifier le document dans les systèmes externes."
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:385
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:431
msgid "Add an external ID to the template. This can be used to identify in external systems."
msgstr "Ajouter un ID externe au modèle. Cela peut être utilisé pour l'identifier dans les systèmes externes."
@@ -692,8 +696,8 @@ msgstr "Ajouter une autre valeur"
msgid "Add email"
msgstr "Ajouter un e-mail"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:176
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:87
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:152
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:86
msgid "Add Fields"
msgstr "Ajouter des champs"
@@ -718,7 +722,7 @@ msgstr "Ajouter une clé de passe"
msgid "Add Placeholder Recipient"
msgstr "Ajouter un destinataire fictif"
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:82
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:81
msgid "Add Placeholders"
msgstr "Ajouter des espaces réservés"
@@ -726,7 +730,7 @@ msgstr "Ajouter des espaces réservés"
msgid "Add Signer"
msgstr "Ajouter un signataire"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:171
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:147
msgid "Add Signers"
msgstr "Ajouter des signataires"
@@ -742,11 +746,11 @@ msgstr "Ajouter du texte"
msgid "Add text to the field"
msgstr "Ajouter du texte au champ"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:172
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:148
msgid "Add the people who will sign the document."
msgstr "Ajouter les personnes qui signeront le document."
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:220
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:232
msgid "Add the recipients to create the document with"
msgstr "Ajouter les destinataires pour créer le document avec"
@@ -771,7 +775,7 @@ msgid "Admin panel"
msgstr "Panneau d'administration"
#: packages/ui/primitives/document-flow/add-settings.tsx:284
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:367
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:413
msgid "Advanced Options"
msgstr "Options avancées"
@@ -804,11 +808,11 @@ msgstr "Tous les documents ont été traités. Tous nouveaux documents envoyés
msgid "All documents related to the electronic signing process will be provided to you electronically through our platform or via email. It is your responsibility to ensure that your email address is current and that you can receive and open our emails."
msgstr "Tous les documents relatifs au processus de signature électronique vous seront fournis électroniquement via notre plateforme ou par e-mail. Il est de votre responsabilité de vous assurer que votre adresse e-mail est à jour et que vous pouvez recevoir et ouvrir nos e-mails."
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:147
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:146
msgid "All inserted signatures will be voided"
msgstr "Toutes les signatures insérées seront annulées"
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:150
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:149
msgid "All recipients will be notified"
msgstr "Tous les destinataires seront notifiés"
@@ -878,16 +882,16 @@ msgstr "Un e-mail demandant le transfert de cette équipe a été envoyé."
msgid "An error occurred"
msgstr "Une erreur est survenue"
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:257
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:227
msgid "An error occurred while adding fields."
msgstr "Une erreur est survenue lors de l'ajout des champs."
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:269
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:218
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:243
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:187
msgid "An error occurred while adding signers."
msgstr "Une erreur est survenue lors de l'ajout de signataires."
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:304
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:281
msgid "An error occurred while adding the fields."
msgstr "Une erreur est survenue lors de l'ajout des champs."
@@ -895,7 +899,7 @@ msgstr "Une erreur est survenue lors de l'ajout des champs."
msgid "An error occurred while auto-signing the document, some fields may not be signed. Please review and manually sign any remaining fields."
msgstr "Une erreur est survenue lors de la signature automatique du document, certains champs peuvent ne pas être signés. Veuillez vérifier et signer manuellement tous les champs restants."
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:176
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:188
msgid "An error occurred while creating document from template."
msgstr "Une erreur est survenue lors de la création du document à partir d'un modèle."
@@ -903,7 +907,7 @@ msgstr "Une erreur est survenue lors de la création du document à partir d'un
msgid "An error occurred while creating the webhook. Please try again."
msgstr "Une erreur est survenue lors de la création du webhook. Veuillez réessayer."
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:124
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:120
msgid "An error occurred while disabling direct link signing."
msgstr "Une erreur est survenue lors de la désactivation de la signature par lien direct."
@@ -911,18 +915,18 @@ msgstr "Une erreur est survenue lors de la désactivation de la signature par li
msgid "An error occurred while disabling the user."
msgstr "Une erreur est survenue lors de la désactivation de l'utilisateur."
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:64
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:92
-#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:76
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:107
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:63
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:91
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:70
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:101
msgid "An error occurred while downloading your document."
msgstr "Une erreur est survenue lors du téléchargement de votre document."
-#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:52
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:51
msgid "An error occurred while duplicating template."
msgstr "Une erreur est survenue lors de la duplication du modèle."
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:123
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:119
msgid "An error occurred while enabling direct link signing."
msgstr "Une erreur est survenue lors de l'activation de la signature par lien direct."
@@ -965,7 +969,7 @@ msgstr "Une erreur est survenue lors de la suppression de la signature."
msgid "An error occurred while removing the text."
msgstr "Une erreur est survenue lors de la suppression du texte."
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:350
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:326
msgid "An error occurred while sending the document."
msgstr "Une erreur est survenue lors de l'envoi du document."
@@ -990,8 +994,8 @@ msgstr "Une erreur est survenue lors de la signature du document."
msgid "An error occurred while trying to create a checkout session."
msgstr "Une erreur est survenue lors de la création d'une session de paiement."
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:235
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:187
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:210
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:156
msgid "An error occurred while updating the document settings."
msgstr "Une erreur est survenue lors de la mise à jour des paramètres du document."
@@ -1003,7 +1007,7 @@ msgstr "Une erreur est survenue lors de la mise à jour de la signature."
msgid "An error occurred while updating your profile."
msgstr "Une erreur est survenue lors de la mise à jour de votre profil."
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:118
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:117
msgid "An error occurred while uploading your document."
msgstr "Une erreur est survenue lors du téléchargement de votre document."
@@ -1039,8 +1043,8 @@ msgstr "Une erreur est survenue lors du téléchargement de votre document."
#: apps/web/src/components/forms/token.tsx:143
#: apps/web/src/components/forms/v2/signup.tsx:187
#: apps/web/src/components/forms/v2/signup.tsx:201
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:141
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:178
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:140
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:176
msgid "An unknown error occurred"
msgstr "Une erreur inconnue est survenue"
@@ -1048,11 +1052,11 @@ msgstr "Une erreur inconnue est survenue"
msgid "Any payment methods attached to this team will remain attached to this team. Please contact us if you need to update this information."
msgstr "Tous les moyens de paiement associés à cette équipe resteront associés à cette équipe. Veuillez nous contacter si vous avez besoin de mettre à jour ces informations."
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:221
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:220
msgid "Any Source"
msgstr "Toute source"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:201
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:200
msgid "Any Status"
msgstr "Tout statut"
@@ -1070,9 +1074,9 @@ msgstr "Tokens API"
msgid "App Version"
msgstr "Version de l'application"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:89
-#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:120
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:146
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:88
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:114
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:140
#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:143
#: packages/lib/constants/recipient-roles.ts:8
msgid "Approve"
@@ -1116,13 +1120,13 @@ msgstr "Êtes-vous sûr de vouloir supprimer la clé de passe <0>{passkeyName}
msgid "Are you sure you wish to delete this team?"
msgstr "Êtes-vous sûr de vouloir supprimer cette équipe ?"
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:100
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:99
#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:94
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:455
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:449
#: apps/web/src/components/(teams)/dialogs/delete-team-member-dialog.tsx:81
#: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:81
#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:116
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:439
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:437
msgid "Are you sure?"
msgstr "Êtes-vous sûr ?"
@@ -1130,11 +1134,11 @@ msgstr "Êtes-vous sûr ?"
msgid "Attempts sealing the document again, useful for after a code change has occurred to resolve an erroneous document."
msgstr "Essaye de sceller le document à nouveau, utile après qu'un changement de code ait eu lieu pour résoudre un document erroné."
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:130
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:129
msgid "Audit Log"
msgstr "Journal d'audit"
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:198
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:200
msgid "Authentication Level"
msgstr "Niveau d'authentification"
@@ -1240,7 +1244,7 @@ msgstr "En acceptant cette demande, vous accorderez à <0>{teamName}0> l'accè
msgid "By accepting this request, you will take responsibility for any billing items associated with this team."
msgstr "En acceptant cette demande, vous assumerez la responsabilité de tous les éléments de facturation associés à cette équipe."
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:158
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:157
msgid "By deleting this document, the following will occur:"
msgstr "En supprimant ce document, les éléments suivants se produiront :"
@@ -1261,17 +1265,17 @@ msgid "By using the electronic signature feature, you are consenting to conduct
msgstr "En utilisant la fonctionnalité de signature électronique, vous consentez à effectuer des transactions et à recevoir des divulgations électroniquement. Vous reconnaissez que votre signature électronique sur les documents est contraignante et que vous acceptez les termes énoncés dans les documents que vous signez."
#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:185
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:192
-#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:108
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:191
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:107
#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:120
#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:248
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:157
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:198
#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:109
-#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:81
-#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:78
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:76
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:77
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:131
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:472
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:466
#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:220
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:178
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-account.tsx:71
@@ -1302,8 +1306,8 @@ msgstr "En utilisant la fonctionnalité de signature électronique, vous consent
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:187
#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:257
#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:163
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:450
-#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:357
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:448
+#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:317
#: packages/ui/primitives/document-flow/send-document-action-dialog.tsx:58
msgid "Cancel"
msgstr "Annuler"
@@ -1353,15 +1357,15 @@ msgstr "Valeurs de la case à cocher"
msgid "Checkout"
msgstr "Passer à la caisse"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:271
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:266
msgid "Choose an existing recipient from below to continue"
msgstr "Choisissez un destinataire existant ci-dessous pour continuer"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:267
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:262
msgid "Choose Direct Link Recipient"
msgstr "Choisissez un destinataire pour le lien direct"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:182
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:158
msgid "Choose how the document will reach recipients"
msgstr "Choisissez comment le document atteindra les destinataires"
@@ -1385,6 +1389,10 @@ msgstr "Revendiquer votre profil plus tard"
msgid "Claim your username now"
msgstr "Revendiquer votre nom d'utilisateur maintenant"
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:537
+msgid "Clear file"
+msgstr ""
+
#: packages/ui/primitives/data-table.tsx:156
msgid "Clear filters"
msgstr "Effacer les filtres"
@@ -1393,13 +1401,13 @@ msgstr "Effacer les filtres"
msgid "Clear Signature"
msgstr "Effacer la signature"
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:130
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:125
msgid "Click here to get started"
msgstr "Cliquez ici pour commencer"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:76
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:118
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:66
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:113
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:64
#: apps/web/src/components/document/document-history-sheet.tsx:133
msgid "Click here to retry"
msgstr "Cliquez ici pour réessayer"
@@ -1420,16 +1428,16 @@ msgstr "Cliquez pour copier le lien de signature à envoyer au destinataire"
msgid "Click to insert field"
msgstr "Cliquez pour insérer un champ"
-#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:126
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:388
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:125
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:556
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:125
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:138
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:121
#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:140
#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:180
#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:102
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:319
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:423
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:317
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:421
#: packages/ui/primitives/document-flow/missing-signature-field-dialog.tsx:44
msgid "Close"
msgstr "Fermer"
@@ -1453,7 +1461,7 @@ msgstr "Compléter la signature"
msgid "Complete Viewing"
msgstr "Compléter la visualisation"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:204
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:203
#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:77
#: apps/web/src/components/formatter/document-status.tsx:28
#: packages/email/template-components/template-document-completed.tsx:35
@@ -1480,15 +1488,15 @@ msgstr "Documents Complétés"
msgid "Configure Direct Recipient"
msgstr "Configurer le destinataire direct"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:167
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:143
msgid "Configure general settings for the document."
msgstr "Configurer les paramètres généraux pour le document."
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:78
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:77
msgid "Configure general settings for the template."
msgstr "Configurer les paramètres généraux pour le modèle."
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:337
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:335
msgid "Configure template"
msgstr "Configurer le modèle"
@@ -1497,8 +1505,8 @@ msgstr "Configurer le modèle"
msgid "Configure the {0} field"
msgstr "Configurer le champ {0}"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:481
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:460
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:475
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:458
msgid "Confirm"
msgstr "Confirmer"
@@ -1546,7 +1554,7 @@ msgstr "Contenu"
#: apps/web/src/app/(unauthenticated)/team/verify/email/[token]/page.tsx:143
#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:72
#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:122
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:328
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:326
#: packages/ui/primitives/document-flow/document-flow-root.tsx:141
msgid "Continue"
msgstr "Continuer"
@@ -1597,9 +1605,9 @@ msgid "Copied"
msgstr "Copié"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:162
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:77
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:72
#: apps/web/src/app/(dashboard)/templates/template-direct-link-badge.tsx:31
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:163
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:159
#: apps/web/src/components/(dashboard)/avatar/avatar-with-recipient.tsx:40
#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:61
#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:117
@@ -1618,11 +1626,11 @@ msgstr "Copier"
msgid "Copy Link"
msgstr "Copier le lien"
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:169
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:164
msgid "Copy sharable link"
msgstr "Copier le lien partageable"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:397
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:391
msgid "Copy Shareable Link"
msgstr "Copier le lien partageable"
@@ -1657,15 +1665,15 @@ msgstr "Créer une équipe pour collaborer avec vos membres."
msgid "Create account"
msgstr "Créer un compte"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:396
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:564
msgid "Create and send"
msgstr "Créer et envoyer"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:394
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:562
msgid "Create as draft"
msgstr "Créer en tant que brouillon"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:354
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:365
msgid "Create as pending"
msgstr "Créer comme en attente"
@@ -1673,11 +1681,11 @@ msgstr "Créer comme en attente"
msgid "Create Direct Link"
msgstr "Créer un lien direct"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:202
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:197
msgid "Create Direct Signing Link"
msgstr "Créer un lien de signature directe"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:214
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:226
msgid "Create document from template"
msgstr "Créer un document à partir du modèle"
@@ -1685,11 +1693,11 @@ msgstr "Créer un document à partir du modèle"
msgid "Create now"
msgstr "Créer maintenant"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:352
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:346
msgid "Create one automatically"
msgstr "Créer un automatiquement"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:398
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:566
msgid "Create signing links"
msgstr "Créer des liens de signature"
@@ -1704,7 +1712,7 @@ msgstr "Créer une équipe"
msgid "Create Team"
msgstr "Créer une équipe"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:361
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:372
msgid "Create the document as pending and ready to sign."
msgstr "Créer le document comme en attente et prêt à signer."
@@ -1731,18 +1739,18 @@ msgstr "Créez votre compte et commencez à utiliser la signature de documents
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:62
#: apps/web/src/app/(dashboard)/admin/leaderboard/data-table-leaderboard.tsx:96
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:35
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:36
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:48
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:63
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:105
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:34
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:104
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:35
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:56
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:274
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:272
msgid "Created"
msgstr "Créé"
#: apps/web/src/app/(dashboard)/admin/subscriptions/page.tsx:35
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:111
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:112
msgid "Created At"
msgstr "Créé le"
@@ -1791,7 +1799,7 @@ msgid "Date created"
msgstr "Date de création"
#: packages/ui/primitives/document-flow/add-settings.tsx:325
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:408
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:454
msgid "Date Format"
msgstr "Format de date"
@@ -1812,19 +1820,19 @@ msgstr "Langue par défaut du document"
msgid "Default Document Visibility"
msgstr "Visibilité par défaut du document"
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:50
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:49
msgid "delete"
msgstr "supprimer"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:144
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:189
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:202
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:143
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:183
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:201
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:177
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:211
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:83
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:100
#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:94
-#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:90
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:85
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:116
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:105
#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:121
@@ -1895,7 +1903,7 @@ msgid "Delete your account and all its contents, including completed documents.
msgstr "Supprimez votre compte et tout son contenu, y compris les documents complétés. Cette action est irréversible et annulera votre abonnement, soyez prudent."
#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:41
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:97
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:98
msgid "Deleted"
msgstr "Supprimé"
@@ -1903,12 +1911,12 @@ msgstr "Supprimé"
msgid "Deleting account..."
msgstr "Suppression du compte..."
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:178
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:180
msgid "Details"
msgstr "Détails"
#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:73
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:242
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:244
msgid "Device"
msgstr "Appareil"
@@ -1926,8 +1934,8 @@ msgstr "lien direct"
msgid "Direct link"
msgstr "Lien direct"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:156
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:227
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:155
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:226
msgid "Direct Link"
msgstr "Lien direct"
@@ -1939,15 +1947,15 @@ msgstr "lien direct désactivé"
msgid "Direct link receiver"
msgstr "Receveur de lien direct"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:363
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:357
msgid "Direct Link Signing"
msgstr "Signature de lien direct"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:115
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:111
msgid "Direct link signing has been disabled"
msgstr "La signature de lien direct a été désactivée"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:114
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:110
msgid "Direct link signing has been enabled"
msgstr "La signature de lien direct a été activée"
@@ -1955,15 +1963,15 @@ msgstr "La signature de lien direct a été activée"
msgid "Direct link templates contain one dynamic recipient placeholder. Anyone with access to this link can sign the document, and it will then appear on your documents page."
msgstr "Les modèles de lien direct contiennent un espace réservé de destinataire dynamique. Quiconque ayant accès à ce lien peut signer le document, et il apparaîtra ensuite sur votre page de documents."
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:142
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:138
msgid "Direct template link deleted"
msgstr "Modèle de lien direct supprimé"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:228
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:223
msgid "Direct template link usage exceeded ({0}/{1})"
msgstr "L'utilisation du lien de modèle direct a été dépassée ({0}/{1})"
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:417
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:415
msgid "Disable"
msgstr "Désactiver"
@@ -1991,7 +1999,7 @@ msgstr "Désactiver l'authentification à deux facteurs avant de supprimer votre
msgid "Disabled"
msgstr "Désactivé"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:380
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:374
msgid "Disabling direct link signing will prevent anyone from accessing the link."
msgstr "Désactiver la signature de lien direct empêchera quiconque d'accéder au lien."
@@ -2003,15 +2011,15 @@ msgstr "Désactiver l'utilisateur a pour résultat que l'utilisateur ne peut pas
msgid "Display your name and email in documents"
msgstr "Afficher votre nom et votre email dans les documents"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:181
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:157
msgid "Distribute Document"
msgstr "Distribuer le document"
-#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:63
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:58
msgid "Do you want to delete this template?"
msgstr "Voulez-vous supprimer ce modèle ?"
-#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:63
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:62
msgid "Do you want to duplicate this template?"
msgstr "Voulez-vous dupliquer ce modèle ?"
@@ -2034,11 +2042,11 @@ msgstr "Document \"{0}\" - Rejet Confirmé"
#: packages/ui/components/document/document-global-auth-access-select.tsx:62
#: packages/ui/primitives/document-flow/add-settings.tsx:227
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:202
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:224
msgid "Document access"
msgstr "Accès au document"
-#: packages/lib/utils/document-audit-logs.ts:306
+#: packages/lib/utils/document-audit-logs.ts:322
msgid "Document access auth updated"
msgstr "L'authentification d'accès au document a été mise à jour"
@@ -2051,14 +2059,14 @@ msgid "Document Approved"
msgstr "Document Approuvé"
#: apps/web/src/app/(signing)/sign/[token]/no-longer-available.tsx:40
-#: packages/lib/server-only/document/delete-document.ts:246
+#: packages/lib/server-only/document/delete-document.ts:251
#: packages/lib/server-only/document/super-delete-document.ts:98
msgid "Document Cancelled"
msgstr "Document Annulé"
#: apps/web/src/components/formatter/document-status.tsx:29
-#: packages/lib/utils/document-audit-logs.ts:369
-#: packages/lib/utils/document-audit-logs.ts:370
+#: packages/lib/utils/document-audit-logs.ts:385
+#: packages/lib/utils/document-audit-logs.ts:386
msgid "Document completed"
msgstr "Document terminé"
@@ -2071,21 +2079,21 @@ msgstr "E-mail de document complété"
msgid "Document Completed!"
msgstr "Document Complété !"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:156
-#: packages/lib/utils/document-audit-logs.ts:286
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:168
+#: packages/lib/utils/document-audit-logs.ts:302
msgid "Document created"
msgstr "Document créé"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:127
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:125
msgid "Document created by <0>{0}0>"
msgstr "Document créé par <0>{0}0>"
#: packages/email/templates/document-created-from-direct-template.tsx:32
-#: packages/lib/server-only/template/create-document-from-direct-template.ts:585
+#: packages/lib/server-only/template/create-document-from-direct-template.ts:588
msgid "Document created from direct template"
msgstr "Document créé à partir d'un modèle direct"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:132
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:130
msgid "Document created using a <0>direct link0>"
msgstr "Document créé en utilisant un <0>lien direct0>"
@@ -2094,9 +2102,9 @@ msgid "Document Creation"
msgstr "Création de document"
#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:51
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:181
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:61
-#: packages/lib/utils/document-audit-logs.ts:290
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:182
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:60
+#: packages/lib/utils/document-audit-logs.ts:306
msgid "Document deleted"
msgstr "Document supprimé"
@@ -2108,8 +2116,8 @@ msgstr "E-mail de document supprimé"
msgid "Document Deleted!"
msgstr "Document Supprimé !"
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:219
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:228
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:265
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:274
msgid "Document Distribution Method"
msgstr "Méthode de distribution du document"
@@ -2117,21 +2125,21 @@ msgstr "Méthode de distribution du document"
msgid "Document draft"
msgstr "Brouillon de document"
-#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:58
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:57
msgid "Document Duplicated"
msgstr "Document dupliqué"
-#: packages/lib/utils/document-audit-logs.ts:326
+#: packages/lib/utils/document-audit-logs.ts:342
msgid "Document external ID updated"
msgstr "ID externe du document mis à jour"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:192
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:193
#: apps/web/src/components/document/document-history-sheet.tsx:104
msgid "Document history"
msgstr "Historique du document"
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:71
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:81
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:82
msgid "Document ID"
msgstr "ID du document"
@@ -2151,7 +2159,7 @@ msgstr "Métriques du document"
msgid "Document moved"
msgstr "Document déplacé"
-#: packages/lib/utils/document-audit-logs.ts:334
+#: packages/lib/utils/document-audit-logs.ts:350
msgid "Document moved to team"
msgstr "Document déplacé vers l'équipe"
@@ -2159,7 +2167,7 @@ msgstr "Document déplacé vers l'équipe"
msgid "Document no longer available to sign"
msgstr "Document non disponible pour signature"
-#: packages/lib/utils/document-audit-logs.ts:318
+#: packages/lib/utils/document-audit-logs.ts:334
msgid "Document opened"
msgstr "Document ouvert"
@@ -2188,8 +2196,8 @@ msgstr "Document Rejeté"
msgid "Document resealed"
msgstr "Document resealé"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:327
-#: packages/lib/utils/document-audit-logs.ts:330
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:303
+#: packages/lib/utils/document-audit-logs.ts:346
msgid "Document sent"
msgstr "Document envoyé"
@@ -2197,11 +2205,11 @@ msgstr "Document envoyé"
msgid "Document Signed"
msgstr "Document signé"
-#: packages/lib/utils/document-audit-logs.ts:310
+#: packages/lib/utils/document-audit-logs.ts:326
msgid "Document signing auth updated"
msgstr "Authentification de signature de document mise à jour"
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:144
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:143
msgid "Document signing process will be cancelled"
msgstr "Le processus de signature du document sera annulé"
@@ -2213,11 +2221,11 @@ msgstr "Statut du document"
msgid "Document title"
msgstr "Titre du document"
-#: packages/lib/utils/document-audit-logs.ts:322
+#: packages/lib/utils/document-audit-logs.ts:338
msgid "Document title updated"
msgstr "Titre du document mis à jour"
-#: packages/lib/utils/document-audit-logs.ts:314
+#: packages/lib/utils/document-audit-logs.ts:330
msgid "Document updated"
msgstr "Document mis à jour"
@@ -2225,7 +2233,7 @@ msgstr "Document mis à jour"
msgid "Document upload disabled due to unpaid invoices"
msgstr "Téléchargement du document désactivé en raison de factures impayées"
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:86
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:85
msgid "Document uploaded"
msgstr "Document téléchargé"
@@ -2233,17 +2241,17 @@ msgstr "Document téléchargé"
msgid "Document Viewed"
msgstr "Document consulté"
-#: packages/lib/utils/document-audit-logs.ts:302
+#: packages/lib/utils/document-audit-logs.ts:318
msgid "Document visibility updated"
msgstr "Visibilité du document mise à jour"
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:141
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:140
msgid "Document will be permanently deleted"
msgstr "Le document sera supprimé de manière permanente"
#: apps/web/src/app/(dashboard)/admin/nav.tsx:65
#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:92
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:144
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:145
#: apps/web/src/app/(dashboard)/documents/[id]/edit/document-edit-page-view.tsx:109
#: apps/web/src/app/(dashboard)/documents/[id]/loading.tsx:16
#: apps/web/src/app/(dashboard)/documents/[id]/sent/page.tsx:15
@@ -2274,10 +2282,10 @@ msgstr "Documents consultés"
msgid "Don't have an account? <0>Sign up0>"
msgstr "Vous n'avez pas de compte? <0>Inscrivez-vous0>"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:111
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:123
-#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:141
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:162
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:110
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:122
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:135
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:156
#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:110
#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:185
#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:107
@@ -2286,7 +2294,7 @@ msgstr "Vous n'avez pas de compte? <0>Inscrivez-vous0>"
msgid "Download"
msgstr "Télécharger"
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-audit-log-button.tsx:81
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-audit-log-button.tsx:77
msgid "Download Audit Logs"
msgstr "Télécharger les journaux d'audit"
@@ -2294,7 +2302,7 @@ msgstr "Télécharger les journaux d'audit"
msgid "Download Certificate"
msgstr "Télécharger le certificat"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:210
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:209
#: apps/web/src/components/formatter/document-status.tsx:34
#: packages/lib/constants/document.ts:13
msgid "Draft"
@@ -2325,19 +2333,19 @@ msgstr "Options de liste déroulante"
msgid "Due to an unpaid invoice, your team has been restricted. Please settle the payment to restore full access to your team."
msgstr "En raison d'une facture impayée, votre équipe a été restreinte. Veuillez régler le paiement pour rétablir l'accès complet à votre équipe."
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:136
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:167
-#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:85
-#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:118
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:135
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:161
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:84
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:117
#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:74
-#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:91
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:89
msgid "Duplicate"
msgstr "Dupliquer"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:104
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:115
-#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:102
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:156
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:103
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:114
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:96
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:150
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:111
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:95
#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:65
@@ -2366,11 +2374,11 @@ msgstr "Divulgation de signature électronique"
#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:166
#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:116
#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:71
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:265
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:272
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:277
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:284
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:122
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:129
-#: apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx:118
+#: apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx:119
#: apps/web/src/app/(signing)/sign/[token]/email-field.tsx:126
#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:407
#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:287
@@ -2401,7 +2409,7 @@ msgstr "Adresse email"
msgid "Email Address"
msgstr "Adresse e-mail"
-#: apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx:80
+#: apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx:81
msgid "Email cannot already exist in the template"
msgstr "L'e-mail ne peut déjà exister dans le modèle"
@@ -2409,15 +2417,15 @@ msgstr "L'e-mail ne peut déjà exister dans le modèle"
msgid "Email Confirmed!"
msgstr "Email confirmé !"
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:307
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:353
msgid "Email Options"
msgstr "Options d'email"
-#: packages/lib/utils/document-audit-logs.ts:363
+#: packages/lib/utils/document-audit-logs.ts:379
msgid "Email resent"
msgstr "Email renvoyé"
-#: packages/lib/utils/document-audit-logs.ts:363
+#: packages/lib/utils/document-audit-logs.ts:379
msgid "Email sent"
msgstr "Email envoyé"
@@ -2459,11 +2467,11 @@ msgstr "Activer l'application Authenticator"
msgid "Enable custom branding for all documents in this team."
msgstr "Activer la personnalisation de la marque pour tous les documents de cette équipe."
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:251
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:246
msgid "Enable direct link signing"
msgstr "Activer la signature par lien direct"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:374
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:368
#: packages/lib/constants/template.ts:8
msgid "Enable Direct Link Signing"
msgstr "Activer la signature de lien direct"
@@ -2495,7 +2503,7 @@ msgstr "Activé"
msgid "Enabling the account results in the user being able to use the account again, and all the related features such as webhooks, teams, and API keys for example."
msgstr "Activer le compte permet à l'utilisateur de pouvoir utiliser le compte à nouveau, ainsi que toutes les fonctionnalités associées telles que les webhooks, les équipes et les clés API par exemple."
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:87
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:88
msgid "Enclosed Document"
msgstr "Document joint"
@@ -2515,7 +2523,7 @@ msgstr "Entrez les informations de votre marque"
msgid "Enter your email"
msgstr "Entrez votre email"
-#: apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx:135
+#: apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx:136
msgid "Enter your email address to receive the completed document."
msgstr "Entrez votre adresse e-mail pour recevoir le document complété."
@@ -2531,19 +2539,19 @@ msgstr "Entrez votre texte ici"
#: apps/web/src/app/(dashboard)/admin/users/[id]/disable-user-dialog.tsx:60
#: apps/web/src/app/(dashboard)/admin/users/[id]/enable-user-dialog.tsx:60
#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:80
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:234
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:268
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:303
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:349
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:209
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:242
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:280
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:325
#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:57
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:111
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:117
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:110
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:116
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:155
#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:186
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:217
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:256
-#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:51
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:226
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:50
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:68
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:175
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:187
#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:152
#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:124
#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:153
@@ -2569,7 +2577,7 @@ msgstr "Entrez votre texte ici"
#: 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)/settings/webhooks/create-webhook-dialog.tsx:101
-#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:258
+#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:218
#: packages/ui/primitives/pdf-viewer.tsx:166
msgid "Error"
msgstr "Erreur"
@@ -2600,7 +2608,7 @@ msgid "Expires on {0}"
msgstr "Expire le {0}"
#: packages/ui/primitives/document-flow/add-settings.tsx:295
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:378
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:424
msgid "External ID"
msgstr "ID externe"
@@ -2608,7 +2616,7 @@ msgstr "ID externe"
msgid "Failed to reseal document"
msgstr "Échec du reseal du document"
-#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:259
+#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:219
msgid "Failed to save settings."
msgstr "Échec de l'enregistrement des paramètres."
@@ -2646,11 +2654,11 @@ msgstr "Étiquette du champ"
msgid "Field placeholder"
msgstr "Espace réservé du champ"
-#: packages/lib/utils/document-audit-logs.ts:294
+#: packages/lib/utils/document-audit-logs.ts:310
msgid "Field signed"
msgstr "Champ signé"
-#: packages/lib/utils/document-audit-logs.ts:298
+#: packages/lib/utils/document-audit-logs.ts:314
msgid "Field unsigned"
msgstr "Champ non signé"
@@ -2658,10 +2666,14 @@ msgstr "Champ non signé"
msgid "Fields"
msgstr "Champs"
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:130
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:129
msgid "File cannot be larger than {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB"
msgstr "Le fichier ne peut pas dépasser {APP_DOCUMENT_UPLOAD_SIZE_LIMIT} Mo"
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:513
+msgid "File size exceeds the limit of {APP_DOCUMENT_UPLOAD_SIZE_LIMIT} MB"
+msgstr ""
+
#: packages/ui/primitives/document-flow/field-items-advanced-settings/date-field.tsx:56
#: packages/ui/primitives/document-flow/field-items-advanced-settings/email-field.tsx:38
#: packages/ui/primitives/document-flow/field-items-advanced-settings/initials-field.tsx:38
@@ -2699,8 +2711,8 @@ msgstr "Signature gratuite"
msgid "Full Name"
msgstr "Nom complet"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:166
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:77
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:142
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:76
#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:62
#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:44
#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:52
@@ -2776,7 +2788,7 @@ msgstr "Ici, vous pouvez définir des préférences et des valeurs par défaut p
msgid "Here you can set preferences and defaults for your team."
msgstr "Ici, vous pouvez définir des préférences et des valeurs par défaut pour votre équipe."
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:206
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:201
msgid "Here's how it works:"
msgstr "Voici comment cela fonctionne :"
@@ -2788,9 +2800,9 @@ msgstr "Salut, je suis Timur"
msgid "Hi, {userName} <0>({userEmail})0>"
msgstr "Bonjour, {userName} <0>({userEmail})0>"
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:189
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:202
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:155
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:183
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:201
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:154
msgid "Hide"
msgstr "Cacher"
@@ -2851,8 +2863,8 @@ msgstr "Documents de la boîte de réception"
msgid "Include the Signing Certificate in the Document"
msgstr "Includez le certificat de signature dans le document"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:53
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:50
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:54
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:51
msgid "Information"
msgstr "Information"
@@ -2882,7 +2894,7 @@ msgstr "Code invalide. Veuillez réessayer."
msgid "Invalid email"
msgstr "Email invalide"
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:105
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:104
msgid "Invalid file"
msgstr "Fichier invalide"
@@ -2941,7 +2953,7 @@ msgid "Invoice"
msgstr "Facture"
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:47
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:235
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:237
msgid "IP Address"
msgstr "Adresse IP"
@@ -2981,7 +2993,7 @@ msgstr "Étiquette"
#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:286
#: packages/ui/primitives/document-flow/add-settings.tsx:187
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:162
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:184
msgid "Language"
msgstr "Langue"
@@ -2997,8 +3009,8 @@ msgstr "30 derniers jours"
msgid "Last 7 days"
msgstr "7 derniers jours"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:41
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:38
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:42
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:39
msgid "Last modified"
msgstr "Dernière modification"
@@ -3006,7 +3018,7 @@ msgstr "Dernière modification"
msgid "Last updated"
msgstr "Dernière mise à jour"
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:121
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:122
msgid "Last Updated"
msgstr "Dernière mise à jour"
@@ -3048,11 +3060,11 @@ msgstr "Vous voulez avoir votre propre profil public avec des accords ?"
msgid "Link expires in 1 hour."
msgstr "Le lien expire dans 1 heure."
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:216
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:215
msgid "Link template"
msgstr "Modèle de lien"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:338
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:314
msgid "Links Generated"
msgstr "Liens générés"
@@ -3073,7 +3085,7 @@ msgstr "Chargement du document..."
#: apps/web/src/app/(dashboard)/documents/[id]/loading.tsx:20
#: apps/web/src/app/(dashboard)/documents/[id]/sent/page.tsx:19
-#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:91
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:90
msgid "Loading Document..."
msgstr "Chargement du Document..."
@@ -3112,7 +3124,7 @@ msgstr "Gérer et afficher le modèle"
msgid "Manage billing"
msgstr "Gérer la facturation"
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:341
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:339
msgid "Manage details for this public template"
msgstr "Gérer les détails de ce modèle public"
@@ -3148,7 +3160,7 @@ msgstr "Gérer l'abonnement de l'équipe."
msgid "Manage teams"
msgstr "Gérer les équipes"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:367
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:361
msgid "Manage the direct link signing for this template"
msgstr "Gérer la signature de lien direct pour ce modèle"
@@ -3204,7 +3216,7 @@ msgid "Members"
msgstr "Membres"
#: packages/ui/primitives/document-flow/add-subject.tsx:160
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:338
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:384
msgid "Message <0>(Optional)0>"
msgstr "Message <0>(Optionnel)0>"
@@ -3243,7 +3255,7 @@ msgstr "Déplacer le document vers l'équipe"
msgid "Move Template to Team"
msgstr "Déplacer le modèle vers l'équipe"
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:174
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:168
#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:85
msgid "Move to Team"
msgstr "Déplacer vers l'équipe"
@@ -3263,8 +3275,8 @@ msgstr "Mes modèles"
#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:66
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:144
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:59
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:287
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:294
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:299
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:306
#: apps/web/src/app/(signing)/sign/[token]/complete/claim-account.tsx:118
#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:170
#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:153
@@ -3308,8 +3320,8 @@ msgstr "Ne jamais expirer"
msgid "New team owner"
msgstr "Nouveau propriétaire d'équipe"
-#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:96
-#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:103
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:95
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:102
msgid "New Template"
msgstr "Nouveau modèle"
@@ -3335,7 +3347,7 @@ msgstr "Aucune autre action n'est requise de votre part pour le moment."
msgid "No payment required"
msgstr "Aucun paiement requis"
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:125
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:120
msgid "No public profile templates found"
msgstr "Aucun modèle de profil public trouvé"
@@ -3343,7 +3355,7 @@ msgstr "Aucun modèle de profil public trouvé"
msgid "No recent activity"
msgstr "Aucune activité récente"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:101
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:99
msgid "No recent documents"
msgstr "Aucun document récent"
@@ -3387,11 +3399,11 @@ msgstr "Aucun champ de signature trouvé"
msgid "No token provided"
msgstr "Aucun token fourni"
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:284
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:282
msgid "No valid direct templates found"
msgstr "Aucun modèle direct valide trouvé"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:293
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:288
msgid "No valid recipients found"
msgstr "Aucun destinataire valide trouvé"
@@ -3464,7 +3476,7 @@ msgstr "Sur cette page, vous pouvez créer de nouveaux webhooks et gérer ceux e
msgid "On this page, you can edit the webhook and its settings."
msgstr "Sur cette page, vous pouvez modifier le webhook et ses paramètres."
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:136
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:135
msgid "Once confirmed, the following will occur:"
msgstr "Une fois confirmé, les éléments suivants se produiront :"
@@ -3504,7 +3516,7 @@ msgstr "Oups ! Quelque chose a mal tourné."
msgid "Opened"
msgstr "Ouvert"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:337
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:332
#: apps/web/src/components/forms/signup.tsx:239
#: apps/web/src/components/forms/signup.tsx:263
#: apps/web/src/components/forms/v2/signup.tsx:387
@@ -3515,12 +3527,12 @@ msgstr "Ou"
msgid "Or continue with"
msgstr "Ou continuez avec"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:340
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:351
msgid "Otherwise, the document will be created as a draft."
msgstr "Sinon, le document sera créé sous forme de brouillon."
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:86
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:103
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:104
#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:81
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:84
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:107
@@ -3629,7 +3641,7 @@ msgid "Payment overdue"
msgstr "Paiement en retard"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:131
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:207
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:206
#: apps/web/src/components/(teams)/tables/teams-member-page-data-table.tsx:82
#: apps/web/src/components/(teams)/tables/user-settings-teams-page-data-table.tsx:77
#: apps/web/src/components/document/document-read-only-fields.tsx:89
@@ -3724,7 +3736,7 @@ msgstr "Veuillez confirmer votre email"
msgid "Please confirm your email address"
msgstr "Veuillez confirmer votre adresse email"
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:176
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:175
msgid "Please contact support if you would like to revert this action."
msgstr "Veuillez contacter le support si vous souhaitez annuler cette action."
@@ -3741,19 +3753,19 @@ msgstr "Veuiillez entrer un nom valide."
msgid "Please mark as viewed to complete"
msgstr "Veuillez marquer comme vu pour terminer"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:459
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:453
msgid "Please note that proceeding will remove direct linking recipient and turn it into a placeholder."
msgstr "Veuillez noter que la poursuite supprimera le destinataire de lien direct et le transformera en espace réservé."
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:130
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:129
msgid "Please note that this action is <0>irreversible0>."
msgstr "Veuillez noter que cette action est <0>irréversible0>."
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:121
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:120
msgid "Please note that this action is <0>irreversible0>. Once confirmed, this document will be permanently deleted."
msgstr "Veuillez noter que cette action est <0>irréversible0>. Une fois confirmée, ce document sera définitivement supprimé."
-#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:67
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:62
msgid "Please note that this action is irreversible. Once confirmed, your template will be permanently deleted."
msgstr "Veuillez noter que cette action est irréversible. Une fois confirmée, votre modèle sera définitivement supprimé."
@@ -3785,6 +3797,10 @@ msgstr "Veuillez fournir un token de votre authentificateur, ou un code de secou
msgid "Please review the document before signing."
msgstr "Veuillez examiner le document avant de signer."
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:503
+msgid "Please select a PDF file"
+msgstr ""
+
#: apps/web/src/components/forms/send-confirmation-email.tsx:64
msgid "Please try again and make sure you enter the correct email address."
msgstr "Veuillez réessayer et assurez-vous d'entrer la bonne adresse email."
@@ -3793,7 +3809,7 @@ msgstr "Veuillez réessayer et assurez-vous d'entrer la bonne adresse email."
msgid "Please try again later or login using your normal details"
msgstr "Veuillez réessayer plus tard ou connectez-vous avec vos informations normales"
-#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:80
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:79
msgid "Please try again later."
msgstr "Veuillez réessayer plus tard."
@@ -3802,7 +3818,7 @@ msgstr "Veuillez réessayer plus tard."
msgid "Please try again or contact our support."
msgstr "Veuillez réessayer ou contacter notre support."
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:186
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:185
msgid "Please type {0} to confirm"
msgstr "Veuiillez taper {0} pour confirmer"
@@ -3840,11 +3856,11 @@ msgstr "Les modèles privés ne peuvent être modifiés et consultés que par vo
msgid "Profile"
msgstr "Profil"
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:184
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:183
msgid "Profile is currently <0>hidden0>."
msgstr "Le profil est actuellement <0>caché0>."
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:172
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:171
msgid "Profile is currently <0>visible0>."
msgstr "Le profil est actuellement <0>visible0>."
@@ -3906,7 +3922,7 @@ msgstr "Lisez l'intégralité de la <0>divulgation de signature0>."
msgid "Ready"
msgstr "Prêt"
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:289
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:291
msgid "Reason"
msgstr "Raison"
@@ -3935,21 +3951,21 @@ msgstr "Recevoir une copie"
msgid "Recent activity"
msgstr "Activité récente"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:45
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:43
msgid "Recent documents"
msgstr "Documents récents"
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:63
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:116
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:280
-#: packages/lib/utils/document-audit-logs.ts:338
-#: packages/lib/utils/document-audit-logs.ts:353
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:115
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:275
+#: packages/lib/utils/document-audit-logs.ts:354
+#: packages/lib/utils/document-audit-logs.ts:369
msgid "Recipient"
msgstr "Destinataire"
#: packages/ui/components/recipient/recipient-action-auth-select.tsx:39
#: packages/ui/primitives/document-flow/add-settings.tsx:269
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:291
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:337
msgid "Recipient action authentication"
msgstr "Authentification d'action de destinataire"
@@ -3972,7 +3988,7 @@ msgstr "Destinataire mis à jour"
#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:66
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:49
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recipients.tsx:30
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:139
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:140
msgid "Recipients"
msgstr "Destinataires"
@@ -3980,7 +3996,7 @@ msgstr "Destinataires"
msgid "Recipients metrics"
msgstr "Métriques des destinataires"
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:166
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:165
msgid "Recipients will still retain their copy of the document"
msgstr "Les destinataires conservent toujours leur copie du document"
@@ -3997,7 +4013,7 @@ msgid "Red"
msgstr "Rouge"
#: packages/ui/primitives/document-flow/add-settings.tsx:383
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:461
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:507
msgid "Redirect URL"
msgstr "URL de redirection"
@@ -4047,8 +4063,8 @@ msgstr "Rappel : Veuillez {recipientActionVerb} ce document"
msgid "Reminder: Please {recipientActionVerb} your document"
msgstr "Rappel : Veuillez {recipientActionVerb} votre document"
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:193
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:431
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:188
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:425
#: apps/web/src/app/(signing)/sign/[token]/signing-field-container.tsx:156
#: apps/web/src/app/(signing)/sign/[token]/signing-field-container.tsx:180
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:250
@@ -4177,7 +4193,7 @@ msgstr "Révoquer"
msgid "Revoke access"
msgstr "Révoquer l'accès"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:283
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:278
#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:318
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:163
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:80
@@ -4195,12 +4211,12 @@ msgstr "Rôles"
msgid "Rows per page"
msgstr "Lignes par page"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:446
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:440
#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:337
#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:344
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:312
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:305
-#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:356
+#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:316
msgid "Save"
msgstr "Sauvegarder"
@@ -4266,11 +4282,11 @@ msgstr "Sélectionnez une équipe pour déplacer ce document. Cette action ne pe
msgid "Select a team to move this template to. This action cannot be undone."
msgstr "Sélectionnez une équipe pour déplacer ce modèle. Cette action ne peut pas être annulée."
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:261
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:259
msgid "Select a template you'd like to display on your public profile"
msgstr "Sélectionnez un modèle que vous souhaitez afficher sur votre profil public"
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:257
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:255
msgid "Select a template you'd like to display on your team's public profile"
msgstr "Sélectionnez un modèle que vous souhaitez afficher sur le profil public de votre équipe"
@@ -4301,7 +4317,7 @@ msgstr "Envoyer"
msgid "Send confirmation email"
msgstr "Envoyer l'e-mail de confirmation"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:325
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:336
msgid "Send document"
msgstr "Envoyer le document"
@@ -4362,7 +4378,7 @@ msgid "Sending..."
msgstr "Envoi..."
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:101
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:256
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:258
msgid "Sent"
msgstr "Envoyé"
@@ -4381,8 +4397,8 @@ msgstr "Paramètres"
msgid "Setup"
msgstr "Configuration"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:148
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:193
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:147
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:187
msgid "Share"
msgstr "Partager"
@@ -4390,8 +4406,8 @@ msgstr "Partager"
msgid "Share Signature Card"
msgstr "Partager la carte de signature"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:179
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:219
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:178
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:213
msgid "Share Signing Card"
msgstr "Partager la carte de signature"
@@ -4403,7 +4419,7 @@ msgstr "Partager le lien"
msgid "Share your signing experience!"
msgstr "Partagez votre expérience de signature !"
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:163
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:162
msgid "Show"
msgstr "Afficher"
@@ -4424,9 +4440,9 @@ msgstr "Afficher des modèles dans votre profil public pour que votre audience p
msgid "Show templates in your team public profile for your audience to sign and get started quickly"
msgstr "Afficher des modèles dans le profil public de votre équipe pour que votre audience puisse signer et commencer rapidement"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:83
-#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:114
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:139
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:82
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:108
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:133
#: apps/web/src/app/(profile)/p/[url]/page.tsx:192
#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:229
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:182
@@ -4506,7 +4522,7 @@ msgid "Sign Up with OIDC"
msgstr "S'inscrire avec OIDC"
#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:88
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:177
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:179
#: apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx:342
#: apps/web/src/app/(signing)/sign/[token]/form.tsx:205
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:251
@@ -4521,7 +4537,7 @@ msgstr "S'inscrire avec OIDC"
msgid "Signature"
msgstr "Signature"
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:228
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:230
msgid "Signature ID"
msgstr "ID de signature"
@@ -4541,7 +4557,7 @@ msgid "Signatures will appear once the document has been completed"
msgstr "Les signatures apparaîtront une fois le document complété"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:114
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:278
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:280
#: apps/web/src/components/document/document-read-only-fields.tsx:84
#: packages/lib/constants/recipient-roles.ts:23
msgid "Signed"
@@ -4551,7 +4567,7 @@ msgstr "Signé"
msgid "Signer"
msgstr "Signataire"
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:176
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:178
msgid "Signer Events"
msgstr "Événements de signataire"
@@ -4567,11 +4583,11 @@ msgstr "Les signataires doivent avoir des e-mails uniques"
msgid "Signing"
msgstr "Signature en cours"
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:168
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:170
msgid "Signing Certificate"
msgstr "Certificat de signature"
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:311
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:313
msgid "Signing certificate provided by"
msgstr "Certificat de signature fourni par"
@@ -4585,12 +4601,12 @@ msgstr "Signature Complète !"
msgid "Signing in..."
msgstr "Connexion en cours..."
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:160
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:203
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:159
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:197
msgid "Signing Links"
msgstr "Liens de signature"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:339
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:315
msgid "Signing links have been generated for this document."
msgstr "Des liens de signature ont été générés pour ce document."
@@ -4625,27 +4641,27 @@ msgid "Some signers have not been assigned a signature field. Please assign at l
msgstr "Certains signataires n'ont pas été assignés à un champ de signature. Veuillez assigner au moins 1 champ de signature à chaque signataire avant de continuer."
#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:105
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:63
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:91
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-audit-log-button.tsx:65
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:62
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:90
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-audit-log-button.tsx:61
#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-certificate-button.tsx:68
-#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:75
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:106
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:82
-#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:72
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:69
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:100
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:81
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:71
#: apps/web/src/app/(dashboard)/settings/billing/billing-plans.tsx:62
#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:51
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:124
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:123
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:73
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:93
#: apps/web/src/app/(dashboard)/settings/teams/accept-team-invitation-button.tsx:32
#: apps/web/src/app/(dashboard)/settings/teams/decline-team-invitation-button.tsx:32
#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:44
-#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:50
-#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:79
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:104
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:127
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:151
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:45
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:78
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:100
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:123
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:147
#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:118
#: apps/web/src/app/(recipient)/d/[token]/signing-auth-page.tsx:27
#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:38
@@ -4706,7 +4722,7 @@ msgstr "Quelque chose a mal tourné."
msgid "Something went wrong. Please try again or contact support."
msgstr "Quelque chose a mal tourné. Veuillez réessayer ou contacter le support."
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-audit-log-button.tsx:67
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-audit-log-button.tsx:63
msgid "Sorry, we were unable to download the audit logs. Please try again later."
msgstr "Désolé, nous n'avons pas pu télécharger les journaux d'audit. Veuillez réessayer plus tard."
@@ -4714,7 +4730,7 @@ msgstr "Désolé, nous n'avons pas pu télécharger les journaux d'audit. Veuill
msgid "Sorry, we were unable to download the certificate. Please try again later."
msgstr "Désolé, nous n'avons pas pu télécharger le certificat. Veuillez réessayer plus tard."
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:134
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:133
msgid "Source"
msgstr "Source"
@@ -4725,8 +4741,8 @@ msgstr "Statistiques"
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:81
#: apps/web/src/app/(dashboard)/admin/subscriptions/page.tsx:32
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:73
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:126
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:93
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:125
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:94
#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:73
msgid "Status"
msgstr "Statut"
@@ -4736,7 +4752,7 @@ msgid "Step <0>{step} of {maxStep}0>"
msgstr "Étape <0>{step} sur {maxStep}0>"
#: packages/ui/primitives/document-flow/add-subject.tsx:143
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:318
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:364
msgid "Subject <0>(Optional)0>"
msgstr "Objet <0>(Optionnel)0>"
@@ -4762,8 +4778,8 @@ msgstr "Abonnements"
#: apps/web/src/app/(dashboard)/settings/teams/accept-team-invitation-button.tsx:25
#: apps/web/src/app/(dashboard)/settings/teams/decline-team-invitation-button.tsx:25
#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:37
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:118
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:141
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:114
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:137
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:32
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:44
#: apps/web/src/components/(dashboard)/layout/verify-email-banner.tsx:44
@@ -4783,8 +4799,8 @@ msgstr "Abonnements"
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:60
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:77
#: apps/web/src/components/forms/public-profile-form.tsx:80
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:133
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:170
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:132
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:168
msgid "Success"
msgstr "Succès"
@@ -4940,31 +4956,31 @@ msgstr "Équipes restreintes"
#: apps/web/src/app/(dashboard)/templates/[id]/edit/template-edit-page-view.tsx:64
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:39
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:144
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:224
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:143
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:223
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:148
#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:408
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:271
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:269
msgid "Template"
msgstr "Modèle"
-#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:41
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:36
msgid "Template deleted"
msgstr "Modèle supprimé"
-#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:67
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:66
msgid "Template document uploaded"
msgstr "Document modèle téléchargé"
-#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:42
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:41
msgid "Template duplicated"
msgstr "Modèle dupliqué"
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:134
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:133
msgid "Template has been removed from your public profile."
msgstr "Le modèle a été retiré de votre profil public."
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:171
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:169
msgid "Template has been updated."
msgstr "Le modèle a été mis à jour."
@@ -4976,11 +4992,11 @@ msgstr "Modèle déplacé"
msgid "Template not found or already associated with a team."
msgstr "Modèle introuvable ou déjà associé à une équipe."
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:246
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:216
msgid "Template saved"
msgstr "Modèle enregistré"
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:145
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:167
msgid "Template title"
msgstr "Titre du modèle"
@@ -4992,7 +5008,7 @@ msgstr "Titre du modèle"
msgid "Templates"
msgstr "Modèles"
-#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:106
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:105
msgid "Templates allow you to quickly generate documents with pre-filled recipients and fields."
msgstr "Les modèles vous permettent de générer rapidement des documents avec des destinataires et des champs pré-remplis."
@@ -5044,9 +5060,9 @@ msgstr "L'authentification requise pour que les destinataires visualisent le doc
msgid "The content to show in the banner, HTML is allowed"
msgstr "Le contenu à afficher dans la bannière, le HTML est autorisé"
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:78
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:73
#: apps/web/src/app/(dashboard)/templates/template-direct-link-badge.tsx:32
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:164
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:160
msgid "The direct link has been copied to your clipboard"
msgstr "Le lien direct a été copié dans votre presse-papiers"
@@ -5066,15 +5082,15 @@ msgstr "Le propriétaire du document a été informé de ce rejet. Aucune action
msgid "The document owner has been notified of your decision. They may contact you with further instructions if necessary."
msgstr "Le propriétaire du document a été informé de votre décision. Il peut vous contacter pour des instructions supplémentaires si nécessaire."
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:182
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:194
msgid "The document was created but could not be sent to recipients."
msgstr "Le document a été créé mais n'a pas pu être envoyé aux destinataires."
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:163
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:162
msgid "The document will be hidden from your account"
msgstr "Le document sera caché de votre compte"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:333
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:344
msgid "The document will be immediately sent to recipients if this is checked."
msgstr "Le document sera immédiatement envoyé aux destinataires si cela est coché."
@@ -5116,11 +5132,11 @@ msgstr "Le lien de profil a été copié dans votre presse-papiers"
msgid "The profile you are looking for could not be found."
msgstr "Le profil que vous recherchez n'a pas pu être trouvé."
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:380
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:378
msgid "The public description that will be displayed with this template"
msgstr "La description publique qui sera affichée avec ce modèle"
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:358
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:356
msgid "The public name for your template"
msgstr "Le nom public pour votre modèle"
@@ -5199,7 +5215,7 @@ msgstr "L'équipe que vous recherchez a peut-être été supprimée, renommée o
msgid "The template has been successfully moved to the selected team."
msgstr "Le modèle a été déplacé avec succès vers l'équipe sélectionnée."
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:443
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:441
msgid "The template will be removed from your profile"
msgstr "Le modèle sera retiré de votre profil"
@@ -5268,11 +5284,11 @@ msgstr "Cela peut être remplacé par le paramétrage direct des exigences d'aut
msgid "This document can not be recovered, if you would like to dispute the reason for future documents please contact support."
msgstr "Ce document ne peut pas être récupéré, si vous souhaitez contester la raison des documents futurs, veuillez contacter le support."
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:83
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:82
msgid "This document could not be deleted at this time. Please try again."
msgstr "Ce document n'a pas pu être supprimé pour le moment. Veuillez réessayer."
-#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:73
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:72
msgid "This document could not be duplicated at this time. Please try again."
msgstr "Ce document n'a pas pu être dupliqué pour le moment. Veuillez réessayer."
@@ -5292,11 +5308,11 @@ msgstr "Ce document a été annulé par le propriétaire et n'est plus disponibl
msgid "This document has been cancelled by the owner."
msgstr "Ce document a été annulé par le propriétaire."
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:227
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:228
msgid "This document has been signed by all recipients"
msgstr "Ce document a été signé par tous les destinataires"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:230
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:231
msgid "This document is currently a draft and has not been sent"
msgstr "Ce document est actuellement un brouillon et n'a pas été envoyé"
@@ -5304,11 +5320,11 @@ msgstr "Ce document est actuellement un brouillon et n'a pas été envoyé"
msgid "This document is password protected. Please enter the password to view the document."
msgstr "Ce document est protégé par mot de passe. Veuillez entrer le mot de passe pour visualiser le document."
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:148
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:147
msgid "This document was created by you or a team member using the template above."
msgstr "Ce document a été créé par vous ou un membre de l'équipe en utilisant le modèle ci-dessus."
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:160
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:159
msgid "This document was created using a direct link."
msgstr "Ce document a été créé en utilisant un lien direct."
@@ -5344,7 +5360,7 @@ msgstr "Cet e-mail sera envoyé au destinataire qui vient de signer le document,
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."
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:233
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:279
msgid "This is how the document will reach the recipients once the document is ready for signing."
msgstr "Voici comment le document atteindra les destinataires une fois qu'il sera prêt à être signé."
@@ -5384,7 +5400,7 @@ msgstr "Ce signataire a déjà signé le document."
msgid "This team, and any associated data excluding billing invoices will be permanently deleted."
msgstr "Cette équipe, et toutes les données associées à l'exception des factures de facturation, seront définitivement supprimées."
-#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:51
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:46
msgid "This template could not be deleted at this time. Please try again."
msgstr "Ce modèle n'a pas pu être supprimé pour le moment. Veuillez réessayer."
@@ -5434,15 +5450,15 @@ msgstr "Temps"
msgid "Time zone"
msgstr "Fuseau horaire"
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:131
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:132
#: packages/ui/primitives/document-flow/add-settings.tsx:359
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:438
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:484
msgid "Time Zone"
msgstr "Fuseau horaire"
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:67
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:54
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:111
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:110
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:61
#: packages/ui/primitives/document-flow/add-settings.tsx:166
msgid "Title"
@@ -5495,11 +5511,11 @@ msgstr "Pour utiliser notre service de signature électronique, vous devez avoir
msgid "To view this document you need to be signed into your account, please sign in to continue."
msgstr "Pour afficher ce document, vous devez être connecté à votre compte, veuillez vous connecter pour continuer."
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:178
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:177
msgid "Toggle the switch to hide your profile from the public."
msgstr "Basculer l'interrupteur pour cacher votre profil du public."
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:190
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:189
msgid "Toggle the switch to show your profile to the public."
msgstr "Basculer l'interrupteur pour afficher votre profil au public."
@@ -5633,7 +5649,7 @@ msgstr "Impossible de copier le code de récupération"
msgid "Unable to copy token"
msgstr "Impossible de copier le token"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:105
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:101
msgid "Unable to create direct template access. Please try again later."
msgstr "Impossible de créer un accès direct au modèle. Veuillez réessayer plus tard."
@@ -5662,11 +5678,11 @@ msgstr "Impossible de rejoindre cette équipe pour le moment."
msgid "Unable to load document history"
msgstr "Impossible de charger l'historique des documents"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:60
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:58
msgid "Unable to load documents"
msgstr "Impossible de charger les documents"
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:111
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:106
msgid "Unable to load your public profile templates at this time"
msgstr "Impossible de charger vos modèles de profil public pour le moment"
@@ -5709,10 +5725,10 @@ msgstr "Non autorisé"
msgid "Uncompleted"
msgstr "Non complet"
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:237
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:262
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:273
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:284
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:239
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:264
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:275
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:286
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:55
msgid "Unknown"
msgstr "Inconnu"
@@ -5725,12 +5741,12 @@ msgstr "Erreur inconnue"
msgid "Unpaid"
msgstr "Non payé"
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:181
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:176
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:162
#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:166
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:191
#: apps/web/src/components/forms/public-profile-form.tsx:279
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:428
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:426
#: packages/ui/primitives/document-flow/add-subject.tsx:86
msgid "Update"
msgstr "Mettre à jour"
@@ -5802,10 +5818,18 @@ msgstr "Mise à jour de vos informations"
msgid "Upgrade"
msgstr "Améliorer"
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:426
+msgid "Upload a custom document to use instead of the template's default document"
+msgstr ""
+
#: apps/web/src/components/forms/avatar-image.tsx:179
msgid "Upload Avatar"
msgstr "Télécharger un avatar"
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:419
+msgid "Upload custom document"
+msgstr ""
+
#: packages/ui/primitives/signature-pad/signature-pad.tsx:529
msgid "Upload Signature"
msgstr "Importer une signature"
@@ -5849,7 +5873,7 @@ msgstr "Utiliser l'authentificateur"
msgid "Use Backup Code"
msgstr "Utiliser le code de secours"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:207
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:219
msgid "Use Template"
msgstr "Utiliser le modèle"
@@ -5930,14 +5954,14 @@ msgstr "Vérifiez votre e-mail pour télécharger des documents."
msgid "Verify your team email address"
msgstr "Vérifiez votre adresse e-mail d'équipe"
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:75
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:76
msgid "Version History"
msgstr "Historique des versions"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:95
-#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:126
-#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:135
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:132
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:94
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:120
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:129
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:126
#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:100
#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:168
#: packages/lib/constants/recipient-roles.ts:29
@@ -5960,7 +5984,7 @@ msgstr "Voir tous les documents envoyés à votre compte"
msgid "View all recent security activity related to your account."
msgstr "Voir toute l'activité de sécurité récente liée à votre compte."
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:155
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:153
msgid "View all related documents"
msgstr "Voir tous les documents associés"
@@ -5992,7 +6016,7 @@ msgstr "Voir les documents associés à cet e-mail"
msgid "View invites"
msgstr "Voir les invitations"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:93
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:91
msgid "View more"
msgstr "Voir plus"
@@ -6014,7 +6038,7 @@ msgid "View teams"
msgstr "Voir les équipes"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:120
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:267
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:269
#: packages/lib/constants/recipient-roles.ts:30
msgid "Viewed"
msgstr "Vu"
@@ -6073,7 +6097,7 @@ msgstr "Nous ne pouvons pas supprimer cette clé de passkey pour le moment. Veui
msgid "We are unable to update this passkey at the moment. Please try again later."
msgstr "Nous ne pouvons pas mettre à jour cette clé de passkey pour le moment. Veuillez réessayer plus tard."
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:153
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:149
msgid "We encountered an error while removing the direct template link. Please try again later."
msgstr "Une erreur s'est produite lors de la suppression du lien direct vers le modèle. Veuillez réessayer plus tard."
@@ -6123,7 +6147,7 @@ msgstr "Une erreur inconnue s'est produite lors de l'invitation de membres de l'
msgid "We encountered an unknown error while attempting to leave this team. Please try again later."
msgstr "Une erreur inconnue s'est produite lors de votre départ de cette équipe. Veuillez réessayer plus tard."
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:143
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:142
msgid "We encountered an unknown error while attempting to remove this template from your profile. Please try again later."
msgstr "Une erreur inconnue s'est produite lors de la suppression de ce modèle de votre profil. Veuillez réessayer plus tard."
@@ -6169,7 +6193,7 @@ msgstr "Une erreur inconnue s'est produite lors de l'inscription. Veuillez rées
msgid "We encountered an unknown error while attempting to update the banner. Please try again later."
msgstr "Une erreur inconnue s'est produite lors de la mise à jour de la bannière. Veuillez réessayer plus tard."
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:180
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:178
msgid "We encountered an unknown error while attempting to update the template. Please try again later."
msgstr "Une erreur inconnue s'est produite lors de la mise à jour du modèle. Veuillez réessayer plus tard."
@@ -6231,7 +6255,7 @@ msgstr "Nous n'avons pas pu désactiver l'authentification à deux facteurs pour
msgid "We were unable to log you out at this time."
msgstr "Nous n'avons pas pu vous déconnecter pour le moment."
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:125
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:124
msgid "We were unable to set your public profile to public. Please try again."
msgstr "Nous n'avons pas pu définir votre profil public comme public. Veuillez réessayer."
@@ -6266,11 +6290,11 @@ msgstr "Nous n'avons pas pu vérifier votre e-mail. Si votre e-mail n'est pas d
msgid "We will generate signing links for with you, which you can send to the recipients through your method of choice."
msgstr "Nous générerons des liens de signature pour vous, que vous pourrez envoyer aux destinataires par votre méthode de choix."
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:369
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:382
msgid "We will generate signing links for you, which you can send to the recipients through your method of choice."
msgstr "Nous allons générer des liens de signature pour vous, que vous pouvez envoyer aux destinataires par votre méthode de choix."
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:365
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:378
#: packages/ui/primitives/document-flow/add-subject.tsx:201
msgid "We won't send anything to notify recipients."
msgstr "Nous n'enverrons rien pour notifier les destinataires."
@@ -6376,13 +6400,13 @@ msgstr "Écrivez sur vous-même"
msgid "Yearly"
msgstr "Annuel"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:32
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:31
-#: packages/lib/utils/document-audit-logs.ts:258
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:33
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:32
+#: packages/lib/utils/document-audit-logs.ts:274
msgid "You"
msgstr "Vous"
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:105
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:104
msgid "You are about to delete <0>\"{documentTitle}\"0>"
msgstr "Vous êtes sur le point de supprimer <0>\"{documentTitle}\"0>"
@@ -6390,7 +6414,7 @@ msgstr "Vous êtes sur le point de supprimer <0>\"{documentTitle}\"0>"
msgid "You are about to delete the following team email from <0>{teamName}0>."
msgstr "Vous êtes sur le point de supprimer l'e-mail d'équipe suivant de <0>{teamName}0>."
-#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:109
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:108
msgid "You are about to hide <0>\"{documentTitle}\"0>"
msgstr "Vous êtes sur le point de cacher <0>\"{documentTitle}\"0>"
@@ -6490,7 +6514,7 @@ msgstr "Vous ne pouvez pas modifier un membre de l'équipe qui a un rôle plus
msgid "You cannot upload documents at this time."
msgstr "Vous ne pouvez pas télécharger de documents pour le moment."
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:106
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:105
msgid "You cannot upload encrypted PDFs"
msgstr "Vous ne pouvez pas télécharger de PDF cryptés"
@@ -6527,7 +6551,8 @@ msgstr "Vous avez été invité à rejoindre {0} sur Documenso"
msgid "You have been invited to join the following team"
msgstr "Vous avez été invité à rejoindre l'équipe suivante"
-#: packages/lib/server-only/recipient/set-recipients-for-document.ts:337
+#: packages/lib/server-only/recipient/delete-document-recipient.ts:156
+#: packages/lib/server-only/recipient/set-document-recipients.ts:326
msgid "You have been removed from a document"
msgstr "Vous avez été supprimé d'un document"
@@ -6557,7 +6582,7 @@ msgstr "Vous n'avez pas encore créé de modèles. Pour créer un modèle, veuil
msgid "You have not yet created or received any documents. To create a document please upload one."
msgstr "Vous n'avez pas encore créé ou reçu de documents. Pour créer un document, veuillez en télécharger un."
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:234
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:229
msgid "You have reached the maximum limit of {0} direct templates. <0>Upgrade your account to continue!0>"
msgstr "Vous avez atteint la limite maximale de {0} modèles directs. <0>Mettez à niveau votre compte pour continuer !0>"
@@ -6626,7 +6651,7 @@ msgstr "Vous devez entrer '{deleteMessage}' pour continuer"
msgid "You must have at least one other team member to transfer ownership."
msgstr "Vous devez avoir au moins un autre membre de l'équipe pour transférer la propriété."
-#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:109
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:108
msgid "You must set a profile URL before enabling your public profile."
msgstr "Vous devez définir une URL de profil avant d'activer votre profil public."
@@ -6678,15 +6703,15 @@ msgstr "Vos préférences de branding ont été mises à jour"
msgid "Your current plan is past due. Please update your payment information."
msgstr "Votre plan actuel est en retard. Veuillez mettre à jour vos informations de paiement."
-#: apps/web/src/components/templates/manage-public-template-dialog.tsx:251
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:249
msgid "Your direct signing templates"
msgstr "Vos modèles de signature directe"
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:129
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:128
msgid "Your document failed to upload."
msgstr "Votre document a échoué à se télécharger."
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:157
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:169
msgid "Your document has been created from the template successfully."
msgstr "Votre document a été créé à partir du modèle avec succès."
@@ -6698,19 +6723,19 @@ msgstr "Votre document a été supprimé par un administrateur !"
msgid "Your document has been re-sent successfully."
msgstr "Votre document a été renvoyé avec succès."
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:328
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:304
msgid "Your document has been sent successfully."
msgstr "Votre document a été envoyé avec succès."
-#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:59
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:58
msgid "Your document has been successfully duplicated."
msgstr "Votre document a été dupliqué avec succès."
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:87
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:86
msgid "Your document has been uploaded successfully."
msgstr "Votre document a été téléchargé avec succès."
-#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:69
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:68
msgid "Your document has been uploaded successfully. You will be redirected to the template page."
msgstr "Votre document a été téléchargé avec succès. Vous serez redirigé vers la page de modèle."
@@ -6795,19 +6820,19 @@ msgstr "Votre équipe a été supprimée avec succès."
msgid "Your team has been successfully updated."
msgstr "Votre équipe a été mise à jour avec succès."
-#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:43
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:42
msgid "Your template has been duplicated successfully."
msgstr "Votre modèle a été dupliqué avec succès."
-#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:42
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:37
msgid "Your template has been successfully deleted."
msgstr "Votre modèle a été supprimé avec succès."
-#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:67
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:66
msgid "Your template will be duplicated."
msgstr "Votre modèle sera dupliqué."
-#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:247
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:217
msgid "Your templates has been saved successfully."
msgstr "Vos modèles ont été enregistrés avec succès."
@@ -6823,4 +6848,3 @@ msgstr "Votre token a été créé avec succès ! Assurez-vous de le copier car
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:86
msgid "Your tokens will be shown here once you create them."
msgstr "Vos tokens seront affichés ici une fois que vous les aurez créés."
-
diff --git a/packages/lib/types/field-meta.ts b/packages/lib/types/field-meta.ts
index 5d4835b74..a6d629a20 100644
--- a/packages/lib/types/field-meta.ts
+++ b/packages/lib/types/field-meta.ts
@@ -1,5 +1,7 @@
import { z } from 'zod';
+import { FieldType } from '@documenso/prisma/client';
+
export const ZBaseFieldMeta = z.object({
label: z.string().optional(),
placeholder: z.string().optional(),
@@ -114,3 +116,53 @@ export type TFieldMetaNotOptionalSchema = z.infer;
+
+export const ZFieldAndMetaSchema = z.discriminatedUnion('type', [
+ z.object({
+ type: z.literal(FieldType.SIGNATURE),
+ // Do not use z.undefined(), or void since this will create an invalid schema for Speakeasy SDK generation.
+ fieldMeta: z.literal(undefined),
+ }),
+ z.object({
+ type: z.literal(FieldType.FREE_SIGNATURE),
+ fieldMeta: z.literal(undefined), // Same as above.
+ }),
+ z.object({
+ type: z.literal(FieldType.INITIALS),
+ fieldMeta: ZInitialsFieldMeta.optional(),
+ }),
+ z.object({
+ type: z.literal(FieldType.NAME),
+ fieldMeta: ZNameFieldMeta.optional(),
+ }),
+ z.object({
+ type: z.literal(FieldType.EMAIL),
+ fieldMeta: ZEmailFieldMeta.optional(),
+ }),
+ z.object({
+ type: z.literal(FieldType.DATE),
+ fieldMeta: ZDateFieldMeta.optional(),
+ }),
+ z.object({
+ type: z.literal(FieldType.TEXT),
+ fieldMeta: ZTextFieldMeta.optional(),
+ }),
+ z.object({
+ type: z.literal(FieldType.NUMBER),
+ fieldMeta: ZNumberFieldMeta.optional(),
+ }),
+ z.object({
+ type: z.literal(FieldType.RADIO),
+ fieldMeta: ZRadioFieldMeta.optional(),
+ }),
+ z.object({
+ type: z.literal(FieldType.CHECKBOX),
+ fieldMeta: ZCheckboxFieldMeta.optional(),
+ }),
+ z.object({
+ type: z.literal(FieldType.DROPDOWN),
+ fieldMeta: ZDropdownFieldMeta.optional(),
+ }),
+]);
+
+export type TFieldAndMeta = z.infer;
diff --git a/packages/lib/types/field.ts b/packages/lib/types/field.ts
index cdbf00f35..da9ffc797 100644
--- a/packages/lib/types/field.ts
+++ b/packages/lib/types/field.ts
@@ -1,3 +1,5 @@
+import { z } from 'zod';
+
import { FieldSchema } from '@documenso/prisma/generated/zod';
/**
@@ -28,3 +30,22 @@ export const ZFieldSchema = FieldSchema.pick({
inserted: true,
fieldMeta: true,
});
+
+export const ZFieldPageNumberSchema = z
+ .number()
+ .min(1)
+ .describe('The page number the field will be on.');
+
+export const ZFieldPageXSchema = z
+ .number()
+ .min(0)
+ .describe('The X coordinate of where the field will be placed.');
+
+export const ZFieldPageYSchema = z
+ .number()
+ .min(0)
+ .describe('The Y coordinate of where the field will be placed.');
+
+export const ZFieldWidthSchema = z.number().min(1).describe('The width of the field.');
+
+export const ZFieldHeightSchema = z.number().min(1).describe('The height of the field.');
diff --git a/packages/lib/types/template.ts b/packages/lib/types/template.ts
new file mode 100644
index 000000000..da3df474b
--- /dev/null
+++ b/packages/lib/types/template.ts
@@ -0,0 +1,119 @@
+import type { z } from 'zod';
+
+import {
+ DocumentDataSchema,
+ TeamSchema,
+ TemplateDirectLinkSchema,
+ TemplateMetaSchema,
+ TemplateSchema,
+ UserSchema,
+} from '@documenso/prisma/generated/zod';
+
+import { ZFieldSchema } from './field';
+import { ZRecipientLiteSchema } from './recipient';
+
+/**
+ * The full template response schema.
+ *
+ * Mainly used for returning a single template from the API.
+ */
+export const ZTemplateSchema = TemplateSchema.pick({
+ type: true,
+ visibility: true,
+ id: true,
+ externalId: true,
+ title: true,
+ userId: true,
+ teamId: true,
+ authOptions: true,
+ templateDocumentDataId: true,
+ createdAt: true,
+ updatedAt: true,
+ publicTitle: true,
+ publicDescription: true,
+}).extend({
+ // Todo: Maybe we want to alter this a bit since this returns a lot of data.
+ templateDocumentData: DocumentDataSchema.pick({
+ type: true,
+ id: true,
+ data: true,
+ initialData: true,
+ }),
+ templateMeta: TemplateMetaSchema.pick({
+ id: true,
+ subject: true,
+ message: true,
+ timezone: true,
+ dateFormat: true,
+ signingOrder: true,
+ typedSignatureEnabled: true,
+ distributionMethod: true,
+ templateId: true,
+ redirectUrl: true,
+ language: true,
+ emailSettings: true,
+ }).nullable(),
+ directLink: TemplateDirectLinkSchema.nullable(),
+ user: UserSchema.pick({
+ id: true,
+ name: true,
+ email: true,
+ }),
+ recipients: ZRecipientLiteSchema.array(),
+ fields: ZFieldSchema.array(),
+});
+
+export type TTemplate = z.infer;
+
+/**
+ * A lite version of the template response schema without relations.
+ */
+export const ZTemplateLiteSchema = TemplateSchema.pick({
+ type: true,
+ visibility: true,
+ id: true,
+ externalId: true,
+ title: true,
+ userId: true,
+ teamId: true,
+ authOptions: true,
+ templateDocumentDataId: true,
+ createdAt: true,
+ updatedAt: true,
+ publicTitle: true,
+ publicDescription: true,
+});
+
+/**
+ * A version of the template response schema when returning multiple template at once from a single API endpoint.
+ */
+export const ZTemplateManySchema = TemplateSchema.pick({
+ type: true,
+ visibility: true,
+ id: true,
+ externalId: true,
+ title: true,
+ userId: true,
+ teamId: true,
+ authOptions: true,
+ templateDocumentDataId: true,
+ createdAt: true,
+ updatedAt: true,
+ publicTitle: true,
+ publicDescription: true,
+}).extend({
+ team: TeamSchema.pick({
+ id: true,
+ url: true,
+ }).nullable(),
+ fields: ZFieldSchema.array(),
+ recipients: ZRecipientLiteSchema.array(),
+ templateMeta: TemplateMetaSchema.pick({
+ signingOrder: true,
+ distributionMethod: true,
+ }).nullable(),
+ directLink: TemplateDirectLinkSchema.pick({
+ token: true,
+ enabled: true,
+ }).nullable(),
+});
diff --git a/packages/lib/utils/document-visibility.ts b/packages/lib/utils/document-visibility.ts
new file mode 100644
index 000000000..737bfd0dd
--- /dev/null
+++ b/packages/lib/utils/document-visibility.ts
@@ -0,0 +1,20 @@
+import { DocumentVisibility, TeamMemberRole } from '@documenso/prisma/client';
+
+export const determineDocumentVisibility = (
+ globalVisibility: DocumentVisibility | null | undefined,
+ userRole: TeamMemberRole,
+): DocumentVisibility => {
+ if (globalVisibility) {
+ return globalVisibility;
+ }
+
+ if (userRole === TeamMemberRole.ADMIN) {
+ return DocumentVisibility.ADMIN;
+ }
+
+ if (userRole === TeamMemberRole.MANAGER) {
+ return DocumentVisibility.MANAGER_AND_ABOVE;
+ }
+
+ return DocumentVisibility.EVERYONE;
+};
diff --git a/packages/prisma/types/document-with-data.ts b/packages/prisma/types/document-with-data.ts
deleted file mode 100644
index 461d13e6c..000000000
--- a/packages/prisma/types/document-with-data.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-import type { Document, DocumentData, DocumentMeta } from '@documenso/prisma/client';
-
-export type DocumentWithData = Document & {
- documentData?: DocumentData | null;
- documentMeta?: DocumentMeta | null;
-};
diff --git a/packages/prisma/types/template.ts b/packages/prisma/types/template.ts
deleted file mode 100644
index e0073bc09..000000000
--- a/packages/prisma/types/template.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import type { TGetTemplateByIdResponse } from '@documenso/lib/server-only/template/get-template-by-id';
-import type { DocumentData, Template, TemplateMeta } from '@documenso/prisma/client';
-
-export type TemplateWithData = Template & {
- templateDocumentData?: DocumentData | null;
- templateMeta?: TemplateMeta | null;
-};
-
-export type TemplateWithDetails = TGetTemplateByIdResponse;
diff --git a/packages/trpc/server/document-router/router.ts b/packages/trpc/server/document-router/router.ts
index 3cf176d4c..a578d4edc 100644
--- a/packages/trpc/server/document-router/router.ts
+++ b/packages/trpc/server/document-router/router.ts
@@ -7,8 +7,10 @@ import { NEXT_PUBLIC_WEBAPP_URL } from '@documenso/lib/constants/app';
import { DOCUMENSO_ENCRYPTION_KEY } from '@documenso/lib/constants/crypto';
import { AppError } from '@documenso/lib/errors/app-error';
import { encryptSecondaryData } from '@documenso/lib/server-only/crypto/encrypt';
+import { createDocumentData } from '@documenso/lib/server-only/document-data/create-document-data';
import { upsertDocumentMeta } from '@documenso/lib/server-only/document-meta/upsert-document-meta';
import { createDocument } from '@documenso/lib/server-only/document/create-document';
+import { createDocumentV2 } from '@documenso/lib/server-only/document/create-document-v2';
import { deleteDocument } from '@documenso/lib/server-only/document/delete-document';
import { duplicateDocument } from '@documenso/lib/server-only/document/duplicate-document-by-id';
import { findDocumentAuditLogs } from '@documenso/lib/server-only/document/find-document-audit-logs';
@@ -22,11 +24,14 @@ import { searchDocumentsWithKeyword } from '@documenso/lib/server-only/document/
import { sendDocument } from '@documenso/lib/server-only/document/send-document';
import { updateDocument } from '@documenso/lib/server-only/document/update-document';
import { symmetricEncrypt } from '@documenso/lib/universal/crypto';
-import { DocumentStatus } from '@documenso/prisma/client';
+import { getPresignPostUrl } from '@documenso/lib/universal/upload/server-actions';
+import { DocumentDataType, DocumentStatus } from '@documenso/prisma/client';
import { authenticatedProcedure, procedure, router } from '../trpc';
import {
ZCreateDocumentRequestSchema,
+ ZCreateDocumentV2RequestSchema,
+ ZCreateDocumentV2ResponseSchema,
ZDeleteDocumentMutationSchema,
ZDistributeDocumentRequestSchema,
ZDistributeDocumentResponseSchema,
@@ -146,6 +151,79 @@ export const documentRouter = router({
});
}),
+ /**
+ * Temporariy endpoint for V2 Beta until we allow passthrough documents on create.
+ *
+ * @public
+ * @deprecated
+ */
+ createDocumentTemporary: authenticatedProcedure
+ .meta({
+ openapi: {
+ method: 'POST',
+ path: '/document/create/beta',
+ summary: 'Create document',
+ description:
+ 'You will need to upload the PDF to the provided URL returned. Note: Once V2 API is released, this will be removed since we will allow direct uploads, instead of using an upload URL.',
+ tags: ['Document'],
+ },
+ })
+ .input(ZCreateDocumentV2RequestSchema)
+ .output(ZCreateDocumentV2ResponseSchema)
+ .mutation(async ({ input, ctx }) => {
+ const { teamId } = ctx;
+
+ const {
+ title,
+ externalId,
+ visibility,
+ globalAccessAuth,
+ globalActionAuth,
+ recipients,
+ meta,
+ } = input;
+
+ const { remaining } = await getServerLimits({ email: ctx.user.email, teamId });
+
+ if (remaining.documents <= 0) {
+ throw new TRPCError({
+ code: 'BAD_REQUEST',
+ message: 'You have reached your document limit for this month. Please upgrade your plan.',
+ });
+ }
+
+ const fileName = title.endsWith('.pdf') ? title : `${title}.pdf`;
+
+ const { url, key } = await getPresignPostUrl(fileName, 'application/pdf');
+
+ const documentData = await createDocumentData({
+ data: key,
+ type: DocumentDataType.S3_PATH,
+ });
+
+ const createdDocument = await createDocumentV2({
+ userId: ctx.user.id,
+ teamId,
+ documentDataId: documentData.id,
+ normalizePdf: false, // Not normalizing because of presigned URL.
+ data: {
+ title,
+ externalId,
+ visibility,
+ globalAccessAuth,
+ globalActionAuth,
+ recipients,
+ },
+ meta,
+ requestMetadata: ctx.metadata,
+ });
+
+ return {
+ document: createdDocument,
+ uploadUrl: url,
+ };
+ }),
+
/**
* Wait until RR7 so we can passthrough documents.
*
@@ -220,6 +298,7 @@ export const documentRouter = router({
typedSignatureEnabled: meta.typedSignatureEnabled,
redirectUrl: meta.redirectUrl,
distributionMethod: meta.distributionMethod,
+ signingOrder: meta.signingOrder,
emailSettings: meta.emailSettings,
requestMetadata: ctx.metadata,
});
@@ -240,8 +319,8 @@ export const documentRouter = router({
deleteDocument: authenticatedProcedure
.meta({
openapi: {
- method: 'DELETE',
- path: '/document/{documentId}',
+ method: 'POST',
+ path: '/document/delete',
summary: 'Delete document',
tags: ['Document'],
},
@@ -320,6 +399,8 @@ export const documentRouter = router({
/**
* @private
+ *
+ * Todo: Remove and use `updateDocument` endpoint instead.
*/
setSigningOrderForDocument: authenticatedProcedure
.input(ZSetSigningOrderForDocumentMutationSchema)
diff --git a/packages/trpc/server/document-router/schema.ts b/packages/trpc/server/document-router/schema.ts
index ddb9bea72..c9b3b4d3c 100644
--- a/packages/trpc/server/document-router/schema.ts
+++ b/packages/trpc/server/document-router/schema.ts
@@ -1,5 +1,6 @@
import { z } from 'zod';
+import { VALID_DATE_FORMAT_VALUES } from '@documenso/lib/constants/date-formats';
import { SUPPORTED_LANGUAGE_CODES } from '@documenso/lib/constants/i18n';
import {
ZDocumentLiteSchema,
@@ -11,6 +12,15 @@ import {
ZDocumentActionAuthTypesSchema,
} from '@documenso/lib/types/document-auth';
import { ZDocumentEmailSettingsSchema } from '@documenso/lib/types/document-email';
+import { ZDocumentFormValuesSchema } from '@documenso/lib/types/document-form-values';
+import {
+ ZFieldHeightSchema,
+ ZFieldPageNumberSchema,
+ ZFieldPageXSchema,
+ ZFieldPageYSchema,
+ ZFieldWidthSchema,
+} from '@documenso/lib/types/field';
+import { ZFieldAndMetaSchema } from '@documenso/lib/types/field-meta';
import { ZFindResultResponse, ZFindSearchParamsSchema } from '@documenso/lib/types/search-params';
import { isValidRedirectUrl } from '@documenso/lib/utils/is-valid-redirect-url';
import {
@@ -22,14 +32,42 @@ import {
FieldType,
} from '@documenso/prisma/client';
+import { ZCreateRecipientSchema } from '../recipient-router/schema';
+
+export const ZDocumentTitleSchema = z
+ .string()
+ .trim()
+ .min(1)
+ .max(255)
+ .describe('The title of the document.');
+
+export const ZDocumentExternalIdSchema = z
+ .string()
+ .trim()
+ .describe('The external ID of the document.');
+
+export const ZDocumentVisibilitySchema = z
+ .nativeEnum(DocumentVisibility)
+ .describe('The visibility of the document.');
+
export const ZDocumentMetaTimezoneSchema = z
.string()
- .describe('The timezone to use for date fields and signing the document.');
+ .describe(
+ 'The timezone to use for date fields and signing the document. Example Etc/UTC, Australia/Melbourne',
+ );
+// Cooked.
+// .refine((value) => TIME_ZONES.includes(value), {
+// message: 'Invalid timezone. Please provide a valid timezone',
+// });
+
+export type TDocumentMetaTimezone = z.infer;
export const ZDocumentMetaDateFormatSchema = z
- .string()
+ .enum(VALID_DATE_FORMAT_VALUES)
.describe('The date format to use for date fields and signing the document.');
+export type TDocumentMetaDateFormat = z.infer;
+
export const ZDocumentMetaRedirectUrlSchema = z
.string()
.describe('The URL to which the recipient should be redirected after signing the document.')
@@ -55,7 +93,7 @@ export const ZDocumentMetaDistributionMethodSchema = z
export const ZDocumentMetaTypedSignatureEnabledSchema = z
.boolean()
- .describe('Whether to allow typed signatures.');
+ .describe('Whether to allow recipients to sign using a typed signature.');
export const ZFindDocumentsRequestSchema = ZFindSearchParamsSchema.extend({
templateId: z
@@ -113,23 +151,79 @@ export const ZGetDocumentWithDetailsByIdRequestSchema = z.object({
export const ZGetDocumentWithDetailsByIdResponseSchema = ZDocumentSchema;
export const ZCreateDocumentRequestSchema = z.object({
- title: z.string().min(1),
+ title: ZDocumentTitleSchema,
documentDataId: z.string().min(1),
- timezone: z.string().optional(),
+ timezone: ZDocumentMetaTimezoneSchema.optional(),
+});
+
+export const ZCreateDocumentV2RequestSchema = z.object({
+ title: ZDocumentTitleSchema,
+ externalId: ZDocumentExternalIdSchema.optional(),
+ visibility: ZDocumentVisibilitySchema.optional(),
+ globalAccessAuth: ZDocumentAccessAuthTypesSchema.optional(),
+ globalActionAuth: ZDocumentActionAuthTypesSchema.optional(),
+ formValues: ZDocumentFormValuesSchema.optional(),
+ recipients: z
+ .array(
+ ZCreateRecipientSchema.extend({
+ fields: ZFieldAndMetaSchema.and(
+ z.object({
+ pageNumber: ZFieldPageNumberSchema,
+ pageX: ZFieldPageXSchema,
+ pageY: ZFieldPageYSchema,
+ width: ZFieldWidthSchema,
+ height: ZFieldHeightSchema,
+ }),
+ )
+ .array()
+ .optional(),
+ }),
+ )
+ .refine(
+ (recipients) => {
+ const emails = recipients.map((recipient) => recipient.email);
+
+ return new Set(emails).size === emails.length;
+ },
+ { message: 'Recipients must have unique emails' },
+ )
+ .optional(),
+ meta: z
+ .object({
+ subject: ZDocumentMetaSubjectSchema.optional(),
+ message: ZDocumentMetaMessageSchema.optional(),
+ timezone: ZDocumentMetaTimezoneSchema.optional(),
+ dateFormat: ZDocumentMetaDateFormatSchema.optional(),
+ distributionMethod: ZDocumentMetaDistributionMethodSchema.optional(),
+ signingOrder: z.nativeEnum(DocumentSigningOrder).optional(),
+ redirectUrl: ZDocumentMetaRedirectUrlSchema.optional(),
+ language: ZDocumentMetaLanguageSchema.optional(),
+ typedSignatureEnabled: ZDocumentMetaTypedSignatureEnabledSchema.optional(),
+ emailSettings: ZDocumentEmailSettingsSchema.optional(),
+ })
+ .optional(),
+});
+
+export type TCreateDocumentV2Request = z.infer;
+
+export const ZCreateDocumentV2ResponseSchema = z.object({
+ document: ZDocumentSchema,
+ uploadUrl: z
+ .string()
+ .describe(
+ 'The URL to upload the document PDF to. Use a PUT request with the file via form-data',
+ ),
});
export const ZUpdateDocumentRequestSchema = z.object({
documentId: z.number(),
data: z
.object({
- title: z.string().describe('The title of the document.').min(1).optional(),
- externalId: z.string().nullish().describe('The external ID of the document.'),
- visibility: z
- .nativeEnum(DocumentVisibility)
- .describe('The visibility of the document.')
- .optional(),
- globalAccessAuth: ZDocumentAccessAuthTypesSchema.nullable().optional(),
- globalActionAuth: ZDocumentActionAuthTypesSchema.nullable().optional(),
+ title: ZDocumentTitleSchema.optional(),
+ externalId: ZDocumentExternalIdSchema.nullish(),
+ visibility: ZDocumentVisibilitySchema.optional(),
+ globalAccessAuth: ZDocumentAccessAuthTypesSchema.nullish(),
+ globalActionAuth: ZDocumentActionAuthTypesSchema.nullish(),
})
.optional(),
meta: z
@@ -139,6 +233,7 @@ export const ZUpdateDocumentRequestSchema = z.object({
timezone: ZDocumentMetaTimezoneSchema.optional(),
dateFormat: ZDocumentMetaDateFormatSchema.optional(),
distributionMethod: ZDocumentMetaDistributionMethodSchema.optional(),
+ signingOrder: z.nativeEnum(DocumentSigningOrder).optional(),
redirectUrl: ZDocumentMetaRedirectUrlSchema.optional(),
language: ZDocumentMetaLanguageSchema.optional(),
typedSignatureEnabled: ZDocumentMetaTypedSignatureEnabledSchema.optional(),
diff --git a/packages/trpc/server/field-router/router.ts b/packages/trpc/server/field-router/router.ts
index 5bd3c7089..53f9059e6 100644
--- a/packages/trpc/server/field-router/router.ts
+++ b/packages/trpc/server/field-router/router.ts
@@ -193,8 +193,8 @@ export const fieldRouter = router({
deleteDocumentField: authenticatedProcedure
.meta({
openapi: {
- method: 'DELETE',
- path: '/document/field/{fieldId}',
+ method: 'POST',
+ path: '/document/field/delete',
summary: 'Delete document field',
tags: ['Document Fields'],
},
@@ -370,8 +370,8 @@ export const fieldRouter = router({
deleteTemplateField: authenticatedProcedure
.meta({
openapi: {
- method: 'DELETE',
- path: '/template/field/{fieldId}',
+ method: 'POST',
+ path: '/template/field/delete',
summary: 'Delete template field',
tags: ['Template Fields'],
},
diff --git a/packages/trpc/server/field-router/schema.ts b/packages/trpc/server/field-router/schema.ts
index 6f38cb08a..373d4a693 100644
--- a/packages/trpc/server/field-router/schema.ts
+++ b/packages/trpc/server/field-router/schema.ts
@@ -1,31 +1,38 @@
import { z } from 'zod';
import { ZRecipientActionAuthSchema } from '@documenso/lib/types/document-auth';
-import { ZFieldSchema } from '@documenso/lib/types/field';
-import { ZFieldMetaSchema } from '@documenso/lib/types/field-meta';
+import {
+ ZFieldHeightSchema,
+ ZFieldPageNumberSchema,
+ ZFieldPageXSchema,
+ ZFieldPageYSchema,
+ ZFieldSchema,
+ ZFieldWidthSchema,
+} from '@documenso/lib/types/field';
+import { ZFieldAndMetaSchema, ZFieldMetaSchema } from '@documenso/lib/types/field-meta';
import { FieldType } from '@documenso/prisma/client';
-const ZCreateFieldSchema = z.object({
- recipientId: z.number().describe('The ID of the recipient to create the field for.'),
- type: ZFieldSchema.shape.type.describe('The type of the field to create.'),
- pageNumber: z.number().describe('The page number the field will be on.'),
- pageX: z.number().describe('The X coordinate of where the field will be placed.'),
- pageY: z.number().describe('The Y coordinate of where the field will be placed.'),
- width: z.number().describe('The width of the field.'),
- height: z.number().describe('The height of the field.'),
- fieldMeta: ZFieldMetaSchema.optional(),
-});
+const ZCreateFieldSchema = ZFieldAndMetaSchema.and(
+ z.object({
+ recipientId: z.number().describe('The ID of the recipient to create the field for.'),
+ pageNumber: ZFieldPageNumberSchema,
+ pageX: ZFieldPageXSchema,
+ pageY: ZFieldPageYSchema,
+ width: ZFieldWidthSchema,
+ height: ZFieldHeightSchema,
+ }),
+);
-const ZUpdateFieldSchema = z.object({
- id: z.number().describe('The ID of the field to update.'),
- type: ZFieldSchema.shape.type.optional().describe('The type of the field to update.'),
- pageNumber: z.number().optional().describe('The page number the field will be on.'),
- pageX: z.number().optional().describe('The X coordinate of where the field will be placed.'),
- pageY: z.number().optional().describe('The Y coordinate of where the field will be placed.'),
- width: z.number().optional().describe('The width of the field.'),
- height: z.number().optional().describe('The height of the field.'),
- fieldMeta: ZFieldMetaSchema.optional(),
-});
+const ZUpdateFieldSchema = ZFieldAndMetaSchema.and(
+ z.object({
+ id: z.number().describe('The ID of the field to update.'),
+ pageNumber: ZFieldPageNumberSchema.optional(),
+ pageX: ZFieldPageXSchema.optional(),
+ pageY: ZFieldPageYSchema.optional(),
+ width: ZFieldWidthSchema.optional(),
+ height: ZFieldHeightSchema.optional(),
+ }),
+);
export const ZCreateDocumentFieldRequestSchema = z.object({
documentId: z.number(),
diff --git a/packages/trpc/server/open-api.ts b/packages/trpc/server/open-api.ts
index d1964b33c..9911d71a1 100644
--- a/packages/trpc/server/open-api.ts
+++ b/packages/trpc/server/open-api.ts
@@ -4,9 +4,27 @@ import { NEXT_PUBLIC_WEBAPP_URL } from '@documenso/lib/constants/app';
import { appRouter } from './router';
-export const openApiDocument = generateOpenApiDocument(appRouter, {
- title: 'Documenso v2 beta API',
- description: 'Subject to breaking changes until v2 is fully released.',
- version: '0.0.0',
- baseUrl: `${NEXT_PUBLIC_WEBAPP_URL()}/api/v2-beta`,
-});
+export const openApiDocument = {
+ ...generateOpenApiDocument(appRouter, {
+ title: 'Documenso v2 beta API',
+ description: 'Subject to breaking changes until v2 is fully released.',
+ version: '0.0.0',
+ baseUrl: `${NEXT_PUBLIC_WEBAPP_URL()}/api/v2-beta`,
+ securitySchemes: {
+ apiKey: {
+ type: 'apiKey',
+ in: 'header',
+ name: 'Authorization',
+ },
+ },
+ }),
+
+ /**
+ * Dirty way to pass through the security field.
+ */
+ security: [
+ {
+ apiKey: [],
+ },
+ ],
+};
diff --git a/packages/trpc/server/recipient-router/router.ts b/packages/trpc/server/recipient-router/router.ts
index 803867971..174fac758 100644
--- a/packages/trpc/server/recipient-router/router.ts
+++ b/packages/trpc/server/recipient-router/router.ts
@@ -193,8 +193,8 @@ export const recipientRouter = router({
deleteDocumentRecipient: authenticatedProcedure
.meta({
openapi: {
- method: 'DELETE',
- path: '/document/recipient/{recipientId}',
+ method: 'POST',
+ path: '/document/recipient/delete',
summary: 'Delete document recipient',
tags: ['Document Recipients'],
},
@@ -367,8 +367,8 @@ export const recipientRouter = router({
deleteTemplateRecipient: authenticatedProcedure
.meta({
openapi: {
- method: 'DELETE',
- path: '/template/recipient/{recipientId}',
+ method: 'POST',
+ path: '/template/recipient/delete',
summary: 'Delete template recipient',
tags: ['Template Recipients'],
},
diff --git a/packages/trpc/server/recipient-router/schema.ts b/packages/trpc/server/recipient-router/schema.ts
index 984b08d06..7e05eb002 100644
--- a/packages/trpc/server/recipient-router/schema.ts
+++ b/packages/trpc/server/recipient-router/schema.ts
@@ -14,7 +14,14 @@ export const ZGetRecipientRequestSchema = z.object({
export const ZGetRecipientResponseSchema = ZRecipientSchema;
-const ZCreateRecipientSchema = z.object({
+/**
+ * When changing this, ensure everything that uses this schema is updated correctly
+ * since this will change the Openapi schema.
+ *
+ * Example `createDocument` uses this, so you will need to update that function to
+ * pass along required details.
+ */
+export const ZCreateRecipientSchema = z.object({
email: z.string().toLowerCase().email().min(1),
name: z.string(),
role: z.nativeEnum(RecipientRole),
@@ -42,11 +49,16 @@ export const ZCreateDocumentRecipientResponseSchema = ZRecipientLiteSchema;
export const ZCreateDocumentRecipientsRequestSchema = z.object({
documentId: z.number(),
- recipients: z.array(ZCreateRecipientSchema).refine((recipients) => {
- const emails = recipients.map((recipient) => recipient.email.toLowerCase());
+ recipients: z.array(ZCreateRecipientSchema).refine(
+ (recipients) => {
+ const emails = recipients.map((recipient) => recipient.email.toLowerCase());
- return new Set(emails).size === emails.length;
- }),
+ return new Set(emails).size === emails.length;
+ },
+ {
+ message: 'Recipients must have unique emails',
+ },
+ ),
});
export const ZCreateDocumentRecipientsResponseSchema = z.object({
@@ -62,13 +74,18 @@ export const ZUpdateDocumentRecipientResponseSchema = ZRecipientSchema;
export const ZUpdateDocumentRecipientsRequestSchema = z.object({
documentId: z.number(),
- recipients: z.array(ZUpdateRecipientSchema).refine((recipients) => {
- const emails = recipients
- .filter((recipient) => recipient.email !== undefined)
- .map((recipient) => recipient.email?.toLowerCase());
+ recipients: z.array(ZUpdateRecipientSchema).refine(
+ (recipients) => {
+ const emails = recipients
+ .filter((recipient) => recipient.email !== undefined)
+ .map((recipient) => recipient.email?.toLowerCase());
- return new Set(emails).size === emails.length;
- }),
+ return new Set(emails).size === emails.length;
+ },
+ {
+ message: 'Recipients must have unique emails',
+ },
+ ),
});
export const ZUpdateDocumentRecipientsResponseSchema = z.object({
@@ -100,7 +117,7 @@ export const ZSetDocumentRecipientsRequestSchema = z
return new Set(emails).size === emails.length;
},
// Dirty hack to handle errors when .root is populated for an array type
- { message: 'Signers must have unique emails', path: ['signers__root'] },
+ { message: 'Recipients must have unique emails', path: ['recipients__root'] },
);
export const ZSetDocumentRecipientsResponseSchema = z.object({
@@ -116,11 +133,16 @@ export const ZCreateTemplateRecipientResponseSchema = ZRecipientLiteSchema;
export const ZCreateTemplateRecipientsRequestSchema = z.object({
templateId: z.number(),
- recipients: z.array(ZCreateRecipientSchema).refine((recipients) => {
- const emails = recipients.map((recipient) => recipient.email);
+ recipients: z.array(ZCreateRecipientSchema).refine(
+ (recipients) => {
+ const emails = recipients.map((recipient) => recipient.email);
- return new Set(emails).size === emails.length;
- }),
+ return new Set(emails).size === emails.length;
+ },
+ {
+ message: 'Recipients must have unique emails',
+ },
+ ),
});
export const ZCreateTemplateRecipientsResponseSchema = z.object({
@@ -136,13 +158,18 @@ export const ZUpdateTemplateRecipientResponseSchema = ZRecipientSchema;
export const ZUpdateTemplateRecipientsRequestSchema = z.object({
templateId: z.number(),
- recipients: z.array(ZUpdateRecipientSchema).refine((recipients) => {
- const emails = recipients
- .filter((recipient) => recipient.email !== undefined)
- .map((recipient) => recipient.email);
+ recipients: z.array(ZUpdateRecipientSchema).refine(
+ (recipients) => {
+ const emails = recipients
+ .filter((recipient) => recipient.email !== undefined)
+ .map((recipient) => recipient.email);
- return new Set(emails).size === emails.length;
- }),
+ return new Set(emails).size === emails.length;
+ },
+ {
+ message: 'Recipients must have unique emails',
+ },
+ ),
});
export const ZUpdateTemplateRecipientsResponseSchema = z.object({
diff --git a/packages/trpc/server/template-router/router.ts b/packages/trpc/server/template-router/router.ts
index 56238c14a..7ef7efb48 100644
--- a/packages/trpc/server/template-router/router.ts
+++ b/packages/trpc/server/template-router/router.ts
@@ -13,36 +13,15 @@ import {
ZCreateTemplateResponseSchema,
createTemplate,
} from '@documenso/lib/server-only/template/create-template';
-import {
- ZCreateTemplateDirectLinkResponseSchema,
- createTemplateDirectLink,
-} from '@documenso/lib/server-only/template/create-template-direct-link';
+import { createTemplateDirectLink } from '@documenso/lib/server-only/template/create-template-direct-link';
import { deleteTemplate } from '@documenso/lib/server-only/template/delete-template';
import { deleteTemplateDirectLink } from '@documenso/lib/server-only/template/delete-template-direct-link';
-import {
- ZDuplicateTemplateResponseSchema,
- duplicateTemplate,
-} from '@documenso/lib/server-only/template/duplicate-template';
-import {
- ZFindTemplatesResponseSchema,
- findTemplates,
-} from '@documenso/lib/server-only/template/find-templates';
-import {
- ZGetTemplateByIdResponseSchema,
- getTemplateById,
-} from '@documenso/lib/server-only/template/get-template-by-id';
-import {
- ZMoveTemplateToTeamResponseSchema,
- moveTemplateToTeam,
-} from '@documenso/lib/server-only/template/move-template-to-team';
-import {
- ZToggleTemplateDirectLinkResponseSchema,
- toggleTemplateDirectLink,
-} from '@documenso/lib/server-only/template/toggle-template-direct-link';
-import {
- ZUpdateTemplateResponseSchema,
- updateTemplate,
-} from '@documenso/lib/server-only/template/update-template';
+import { duplicateTemplate } from '@documenso/lib/server-only/template/duplicate-template';
+import { findTemplates } from '@documenso/lib/server-only/template/find-templates';
+import { getTemplateById } from '@documenso/lib/server-only/template/get-template-by-id';
+import { moveTemplateToTeam } from '@documenso/lib/server-only/template/move-template-to-team';
+import { toggleTemplateDirectLink } from '@documenso/lib/server-only/template/toggle-template-direct-link';
+import { updateTemplate } from '@documenso/lib/server-only/template/update-template';
import type { Document } from '@documenso/prisma/client';
import { authenticatedProcedure, maybeAuthenticatedProcedure, router } from '../trpc';
@@ -50,16 +29,23 @@ import {
ZCreateDocumentFromDirectTemplateRequestSchema,
ZCreateDocumentFromTemplateRequestSchema,
ZCreateDocumentFromTemplateResponseSchema,
- ZCreateTemplateDirectLinkMutationSchema,
+ ZCreateTemplateDirectLinkRequestSchema,
+ ZCreateTemplateDirectLinkResponseSchema,
ZCreateTemplateMutationSchema,
- ZDeleteTemplateDirectLinkMutationSchema,
+ ZDeleteTemplateDirectLinkRequestSchema,
ZDeleteTemplateMutationSchema,
ZDuplicateTemplateMutationSchema,
+ ZDuplicateTemplateResponseSchema,
ZFindTemplatesRequestSchema,
+ ZFindTemplatesResponseSchema,
ZGetTemplateByIdRequestSchema,
- ZMoveTemplatesToTeamRequestSchema,
- ZToggleTemplateDirectLinkMutationSchema,
+ ZGetTemplateByIdResponseSchema,
+ ZMoveTemplateToTeamRequestSchema,
+ ZMoveTemplateToTeamResponseSchema,
+ ZToggleTemplateDirectLinkRequestSchema,
+ ZToggleTemplateDirectLinkResponseSchema,
ZUpdateTemplateRequestSchema,
+ ZUpdateTemplateResponseSchema,
} from './schema';
export const templateRouter = router({
@@ -202,8 +188,8 @@ export const templateRouter = router({
deleteTemplate: authenticatedProcedure
.meta({
openapi: {
- method: 'DELETE',
- path: '/template/{templateId}',
+ method: 'POST',
+ path: '/template/delete',
summary: 'Delete template',
tags: ['Template'],
},
@@ -331,7 +317,7 @@ export const templateRouter = router({
tags: ['Template'],
},
})
- .input(ZCreateTemplateDirectLinkMutationSchema)
+ .input(ZCreateTemplateDirectLinkRequestSchema)
.output(ZCreateTemplateDirectLinkResponseSchema)
.mutation(async ({ input, ctx }) => {
const { teamId } = ctx;
@@ -358,14 +344,14 @@ export const templateRouter = router({
deleteTemplateDirectLink: authenticatedProcedure
.meta({
openapi: {
- method: 'DELETE',
- path: '/template/direct/{templateId}',
+ method: 'POST',
+ path: '/template/direct/delete',
summary: 'Delete direct link',
description: 'Delete a direct link for a template',
tags: ['Template'],
},
})
- .input(ZDeleteTemplateDirectLinkMutationSchema)
+ .input(ZDeleteTemplateDirectLinkRequestSchema)
.output(z.void())
.mutation(async ({ input, ctx }) => {
const { teamId } = ctx;
@@ -389,7 +375,7 @@ export const templateRouter = router({
tags: ['Template'],
},
})
- .input(ZToggleTemplateDirectLinkMutationSchema)
+ .input(ZToggleTemplateDirectLinkRequestSchema)
.output(ZToggleTemplateDirectLinkResponseSchema)
.mutation(async ({ input, ctx }) => {
const { teamId } = ctx;
@@ -413,7 +399,7 @@ export const templateRouter = router({
tags: ['Template'],
},
})
- .input(ZMoveTemplatesToTeamRequestSchema)
+ .input(ZMoveTemplateToTeamRequestSchema)
.output(ZMoveTemplateToTeamResponseSchema)
.mutation(async ({ input, ctx }) => {
const { templateId, teamId } = input;
diff --git a/packages/trpc/server/template-router/schema.ts b/packages/trpc/server/template-router/schema.ts
index 4e6409793..ee07946ee 100644
--- a/packages/trpc/server/template-router/schema.ts
+++ b/packages/trpc/server/template-router/schema.ts
@@ -6,8 +6,14 @@ import {
ZDocumentActionAuthTypesSchema,
} from '@documenso/lib/types/document-auth';
import { ZDocumentEmailSettingsSchema } from '@documenso/lib/types/document-email';
-import { ZFindSearchParamsSchema } from '@documenso/lib/types/search-params';
+import { ZFindResultResponse, ZFindSearchParamsSchema } from '@documenso/lib/types/search-params';
+import {
+ ZTemplateLiteSchema,
+ ZTemplateManySchema,
+ ZTemplateSchema,
+} from '@documenso/lib/types/template';
import { DocumentSigningOrder, DocumentVisibility, TemplateType } from '@documenso/prisma/client';
+import { TemplateDirectLinkSchema } from '@documenso/prisma/generated/zod';
import {
ZDocumentMetaDateFormatSchema,
@@ -69,7 +75,9 @@ export const ZDuplicateTemplateMutationSchema = z.object({
templateId: z.number(),
});
-export const ZCreateTemplateDirectLinkMutationSchema = z.object({
+export const ZDuplicateTemplateResponseSchema = ZTemplateLiteSchema;
+
+export const ZCreateTemplateDirectLinkRequestSchema = z.object({
templateId: z.number(),
directRecipientId: z
.number()
@@ -79,15 +87,28 @@ export const ZCreateTemplateDirectLinkMutationSchema = z.object({
.optional(),
});
-export const ZDeleteTemplateDirectLinkMutationSchema = z.object({
+const GenericDirectLinkResponseSchema = TemplateDirectLinkSchema.pick({
+ id: true,
+ templateId: true,
+ token: true,
+ createdAt: true,
+ enabled: true,
+ directTemplateRecipientId: true,
+});
+
+export const ZCreateTemplateDirectLinkResponseSchema = GenericDirectLinkResponseSchema;
+
+export const ZDeleteTemplateDirectLinkRequestSchema = z.object({
templateId: z.number(),
});
-export const ZToggleTemplateDirectLinkMutationSchema = z.object({
+export const ZToggleTemplateDirectLinkRequestSchema = z.object({
templateId: z.number(),
enabled: z.boolean(),
});
+export const ZToggleTemplateDirectLinkResponseSchema = GenericDirectLinkResponseSchema;
+
export const ZDeleteTemplateMutationSchema = z.object({
templateId: z.number(),
});
@@ -141,19 +162,32 @@ export const ZUpdateTemplateRequestSchema = z.object({
.optional(),
});
+export const ZUpdateTemplateResponseSchema = ZTemplateLiteSchema;
+
export const ZFindTemplatesRequestSchema = ZFindSearchParamsSchema.extend({
type: z.nativeEnum(TemplateType).describe('Filter templates by type.').optional(),
});
+export const ZFindTemplatesResponseSchema = ZFindResultResponse.extend({
+ data: ZTemplateManySchema.array(),
+});
+
+export type TFindTemplatesResponse = z.infer;
+export type FindTemplateRow = TFindTemplatesResponse['data'][number];
+
export const ZGetTemplateByIdRequestSchema = z.object({
templateId: z.number(),
});
-export const ZMoveTemplatesToTeamRequestSchema = z.object({
+export const ZGetTemplateByIdResponseSchema = ZTemplateSchema;
+
+export const ZMoveTemplateToTeamRequestSchema = z.object({
templateId: z.number().describe('The ID of the template to move to.'),
teamId: z.number().describe('The ID of the team to move the template to.'),
});
+export const ZMoveTemplateToTeamResponseSchema = ZTemplateLiteSchema;
+
export type TCreateTemplateMutationSchema = z.infer;
export type TDuplicateTemplateMutationSchema = z.infer;
export type TDeleteTemplateMutationSchema = z.infer;
diff --git a/packages/ui/primitives/document-flow/add-settings.tsx b/packages/ui/primitives/document-flow/add-settings.tsx
index c5882482d..0cc37d5a5 100644
--- a/packages/ui/primitives/document-flow/add-settings.tsx
+++ b/packages/ui/primitives/document-flow/add-settings.tsx
@@ -11,10 +11,10 @@ import { match } from 'ts-pattern';
import { DATE_FORMATS, DEFAULT_DOCUMENT_DATE_FORMAT } from '@documenso/lib/constants/date-formats';
import { SUPPORTED_LANGUAGES } from '@documenso/lib/constants/i18n';
import { DEFAULT_DOCUMENT_TIME_ZONE, TIME_ZONES } from '@documenso/lib/constants/time-zones';
+import type { TDocument } from '@documenso/lib/types/document';
import { extractDocumentAuthMethods } from '@documenso/lib/utils/document-auth';
import { DocumentVisibility, TeamMemberRole } from '@documenso/prisma/client';
import { DocumentStatus, type Field, type Recipient, SendStatus } from '@documenso/prisma/client';
-import type { DocumentWithData } from '@documenso/prisma/types/document-with-data';
import {
DocumentGlobalAuthAccessSelect,
DocumentGlobalAuthAccessTooltip,
@@ -65,7 +65,7 @@ export type AddSettingsFormProps = {
fields: Field[];
isDocumentEnterprise: boolean;
isDocumentPdfLoaded: boolean;
- document: DocumentWithData;
+ document: TDocument;
currentTeamMemberRole?: TeamMemberRole;
onSubmit: (_data: TAddSettingsFormSchema) => void;
};
diff --git a/packages/ui/primitives/document-flow/add-settings.types.ts b/packages/ui/primitives/document-flow/add-settings.types.ts
index dcdd98a72..1c0e1323e 100644
--- a/packages/ui/primitives/document-flow/add-settings.types.ts
+++ b/packages/ui/primitives/document-flow/add-settings.types.ts
@@ -9,6 +9,10 @@ import {
} from '@documenso/lib/types/document-auth';
import { isValidRedirectUrl } from '@documenso/lib/utils/is-valid-redirect-url';
import { DocumentVisibility } from '@documenso/prisma/client';
+import {
+ ZDocumentMetaDateFormatSchema,
+ ZDocumentMetaTimezoneSchema,
+} from '@documenso/trpc/server/document-router/schema';
export const ZMapNegativeOneToUndefinedSchema = z
.string()
@@ -32,8 +36,8 @@ export const ZAddSettingsFormSchema = z.object({
ZDocumentActionAuthTypesSchema.optional(),
),
meta: z.object({
- timezone: z.string().optional().default(DEFAULT_DOCUMENT_TIME_ZONE),
- dateFormat: z.string().optional().default(DEFAULT_DOCUMENT_DATE_FORMAT),
+ timezone: ZDocumentMetaTimezoneSchema.optional().default(DEFAULT_DOCUMENT_TIME_ZONE),
+ dateFormat: ZDocumentMetaDateFormatSchema.optional().default(DEFAULT_DOCUMENT_DATE_FORMAT),
redirectUrl: z
.string()
.optional()
diff --git a/packages/ui/primitives/document-flow/add-subject.tsx b/packages/ui/primitives/document-flow/add-subject.tsx
index f98d21a28..24b976c32 100644
--- a/packages/ui/primitives/document-flow/add-subject.tsx
+++ b/packages/ui/primitives/document-flow/add-subject.tsx
@@ -7,6 +7,7 @@ import { AnimatePresence, motion } from 'framer-motion';
import { useForm } from 'react-hook-form';
import { RECIPIENT_ROLES_DESCRIPTION } from '@documenso/lib/constants/recipient-roles';
+import type { TDocument } from '@documenso/lib/types/document';
import { ZDocumentEmailSettingsSchema } from '@documenso/lib/types/document-email';
import { formatSigningLink } from '@documenso/lib/utils/recipients';
import type { Field, Recipient } from '@documenso/prisma/client';
@@ -15,7 +16,6 @@ import {
DocumentStatus,
RecipientRole,
} from '@documenso/prisma/client';
-import type { DocumentWithData } from '@documenso/prisma/types/document-with-data';
import { DocumentSendEmailMessageHelper } from '@documenso/ui/components/document/document-send-email-message-helper';
import { Tabs, TabsList, TabsTrigger } from '@documenso/ui/primitives/tabs';
@@ -43,7 +43,7 @@ export type AddSubjectFormProps = {
documentFlow: DocumentFlowStep;
recipients: Recipient[];
fields: Field[];
- document: DocumentWithData;
+ document: TDocument;
onSubmit: (_data: TAddSubjectFormSchema) => void;
isDocumentPdfLoaded: boolean;
};
diff --git a/packages/ui/primitives/template-flow/add-template-settings.tsx b/packages/ui/primitives/template-flow/add-template-settings.tsx
index f0552343c..79117570d 100644
--- a/packages/ui/primitives/template-flow/add-template-settings.tsx
+++ b/packages/ui/primitives/template-flow/add-template-settings.tsx
@@ -14,10 +14,11 @@ import { DOCUMENT_DISTRIBUTION_METHODS } from '@documenso/lib/constants/document
import { SUPPORTED_LANGUAGES } from '@documenso/lib/constants/i18n';
import { DEFAULT_DOCUMENT_TIME_ZONE, TIME_ZONES } from '@documenso/lib/constants/time-zones';
import { ZDocumentEmailSettingsSchema } from '@documenso/lib/types/document-email';
+import type { TTemplate } from '@documenso/lib/types/template';
import { extractDocumentAuthMethods } from '@documenso/lib/utils/document-auth';
import { DocumentVisibility, TeamMemberRole } from '@documenso/prisma/client';
import { DocumentDistributionMethod, type Field, type Recipient } from '@documenso/prisma/client';
-import type { TemplateWithData } from '@documenso/prisma/types/template';
+import type { TDocumentMetaDateFormat } from '@documenso/trpc/server/document-router/schema';
import {
DocumentGlobalAuthAccessSelect,
DocumentGlobalAuthAccessTooltip,
@@ -71,7 +72,7 @@ export type AddTemplateSettingsFormProps = {
fields: Field[];
isEnterprise: boolean;
isDocumentPdfLoaded: boolean;
- template: TemplateWithData;
+ template: TTemplate;
currentTeamMemberRole?: TeamMemberRole;
onSubmit: (_data: TAddTemplateSettingsFormSchema) => void;
};
@@ -104,7 +105,9 @@ export const AddTemplateSettingsFormPartial = ({
subject: template.templateMeta?.subject ?? '',
message: template.templateMeta?.message ?? '',
timezone: template.templateMeta?.timezone ?? DEFAULT_DOCUMENT_TIME_ZONE,
- dateFormat: template.templateMeta?.dateFormat ?? DEFAULT_DOCUMENT_DATE_FORMAT,
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
+ dateFormat: (template.templateMeta?.dateFormat ??
+ DEFAULT_DOCUMENT_DATE_FORMAT) as TDocumentMetaDateFormat,
distributionMethod:
template.templateMeta?.distributionMethod || DocumentDistributionMethod.EMAIL,
redirectUrl: template.templateMeta?.redirectUrl ?? '',
diff --git a/packages/ui/primitives/template-flow/add-template-settings.types.tsx b/packages/ui/primitives/template-flow/add-template-settings.types.tsx
index 855ed03c8..919fd46b3 100644
--- a/packages/ui/primitives/template-flow/add-template-settings.types.tsx
+++ b/packages/ui/primitives/template-flow/add-template-settings.types.tsx
@@ -10,6 +10,10 @@ import {
import { ZDocumentEmailSettingsSchema } from '@documenso/lib/types/document-email';
import { isValidRedirectUrl } from '@documenso/lib/utils/is-valid-redirect-url';
import { DocumentVisibility } from '@documenso/prisma/client';
+import {
+ ZDocumentMetaDateFormatSchema,
+ ZDocumentMetaTimezoneSchema,
+} from '@documenso/trpc/server/document-router/schema';
import { ZMapNegativeOneToUndefinedSchema } from '../document-flow/add-settings.types';
import { DocumentDistributionMethod } from '.prisma/client';
@@ -27,8 +31,8 @@ export const ZAddTemplateSettingsFormSchema = z.object({
meta: z.object({
subject: z.string(),
message: z.string(),
- timezone: z.string().optional().default(DEFAULT_DOCUMENT_TIME_ZONE),
- dateFormat: z.string().optional().default(DEFAULT_DOCUMENT_DATE_FORMAT),
+ timezone: ZDocumentMetaTimezoneSchema.default(DEFAULT_DOCUMENT_TIME_ZONE),
+ dateFormat: ZDocumentMetaDateFormatSchema.default(DEFAULT_DOCUMENT_DATE_FORMAT),
distributionMethod: z
.nativeEnum(DocumentDistributionMethod)
.optional()
From 0d3864548c7be8b917f0ef86336400976811f8db Mon Sep 17 00:00:00 2001
From: David Nguyen
Date: Sun, 19 Jan 2025 22:07:02 +1100
Subject: [PATCH 13/35] fix: bump trpc and openapi packages (#1591)
---
.github/workflows/codeql-analysis.yml | 2 +-
apps/web/package.json | 5 +-
.../admin/documents/[id]/admin-actions.tsx | 2 +-
.../[id]/super-delete-document-dialog.tsx | 26 +-
.../admin/documents/document-results.tsx | 4 +-
.../admin/site-settings/banner-form.tsx | 25 +-
.../admin/users/[id]/delete-user-dialog.tsx | 35 +-
.../admin/users/[id]/disable-user-dialog.tsx | 2 +-
.../admin/users/[id]/enable-user-dialog.tsx | 2 +-
.../[id]/logs/document-logs-data-table.tsx | 23 +-
.../[id]/logs/download-audit-log-button.tsx | 6 +-
.../[id]/logs/download-certificate-button.tsx | 6 +-
.../documents/data-table-sender-filter.tsx | 4 +-
.../documents/delete-document-dialog.tsx | 6 +-
.../documents/duplicate-document-dialog.tsx | 2 +-
.../documents/move-document-dialog.tsx | 6 +-
.../(dashboard)/documents/upload-document.tsx | 37 +-
.../profile/delete-account-dialog.tsx | 2 +-
.../public-profile-page-view.tsx | 4 +-
.../public-templates-data-table.tsx | 8 +-
.../user-security-activity-data-table.tsx | 21 +-
.../passkeys/create-passkey-dialog.tsx | 4 +-
.../user-passkeys-data-table-actions.tsx | 4 +-
.../passkeys/user-passkeys-data-table.tsx | 6 +-
.../teams/accept-team-invitation-button.tsx | 6 +-
.../teams/decline-team-invitation-button.tsx | 6 +-
.../settings/teams/team-email-usage.tsx | 2 +-
.../settings/teams/team-invitations.tsx | 4 +-
.../template-page-view-documents-table.tsx | 29 +-
.../templates/delete-template-dialog.tsx | 8 +-
.../templates/duplicate-template-dialog.tsx | 8 +-
.../templates/move-template-dialog.tsx | 6 +-
.../templates/template-direct-link-dialog.tsx | 6 +-
.../(signing)/sign/[token]/checkbox-field.tsx | 4 +-
.../app/(signing)/sign/[token]/date-field.tsx | 4 +-
.../sign/[token]/document-auth-provider.tsx | 2 +-
.../(signing)/sign/[token]/dropdown-field.tsx | 4 +-
.../(signing)/sign/[token]/email-field.tsx | 4 +-
.../(signing)/sign/[token]/initials-field.tsx | 4 +-
.../app/(signing)/sign/[token]/name-field.tsx | 4 +-
.../(signing)/sign/[token]/number-field.tsx | 4 +-
.../(signing)/sign/[token]/radio-field.tsx | 4 +-
.../sign/[token]/signature-field.tsx | 4 +-
.../app/(signing)/sign/[token]/text-field.tsx | 4 +-
.../t/[teamUrl]/layout-billing-banner.tsx | 8 +-
.../settings/team-email-dropdown.tsx | 2 +-
.../settings/team-transfer-status.tsx | 4 +-
.../app/embed/direct/[[...url]]/client.tsx | 2 +-
.../src/app/embed/sign/[[...url]]/client.tsx | 2 +-
.../(dashboard)/common/command-menu.tsx | 2 +-
.../layout/verify-email-banner.tsx | 6 +-
.../(teams)/dialogs/add-team-email-dialog.tsx | 4 +-
.../dialogs/create-team-checkout-dialog.tsx | 2 +-
.../dialogs/delete-team-member-dialog.tsx | 2 +-
.../(teams)/dialogs/leave-team-dialog.tsx | 2 +-
.../dialogs/remove-team-email-dialog.tsx | 4 +-
.../tables/current-user-teams-data-table.tsx | 6 +-
.../pending-user-teams-data-table-actions.tsx | 2 +-
.../tables/pending-user-teams-data-table.tsx | 6 +-
.../team-billing-invoices-data-table.tsx | 6 +-
.../tables/team-member-invites-data-table.tsx | 25 +-
.../tables/team-members-data-table.tsx | 6 +-
.../user-settings-teams-page-data-table.tsx | 2 +-
.../(teams)/team-billing-portal-button.tsx | 4 +-
.../document/document-history-sheet.tsx | 2 +-
.../2fa/enable-authenticator-app-dialog.tsx | 2 +-
.../forms/2fa/view-recovery-codes-dialog.tsx | 6 +-
apps/web/src/components/forms/profile.tsx | 23 +-
apps/web/src/components/forms/token.tsx | 36 +-
.../manage-public-template-dialog.tsx | 2 +-
apps/web/src/pages/api/v2-beta/[...trpc].ts | 15 +-
package-lock.json | 1596 +++++++++--------
package.json | 4 +-
.../client-only/hooks/use-copy-share-link.ts | 2 +-
packages/lib/errors/app-error.ts | 46 +-
.../document/reject-document-with-token.ts | 5 +-
.../server-only/document/send-delete-email.ts | 5 +-
.../document/super-delete-document.ts | 5 +-
.../public-api/create-api-token.ts | 9 +-
packages/lib/server-only/user/delete-user.ts | 5 +-
packages/lib/translations/de/web.po | 225 +--
packages/lib/translations/en/web.po | 225 +--
packages/lib/translations/es/web.po | 225 +--
packages/lib/translations/fr/web.po | 225 +--
packages/lib/types/field-meta.ts | 5 +-
packages/trpc/client/guards.ts | 7 -
packages/trpc/client/index.ts | 10 +-
packages/trpc/package.json | 11 +-
packages/trpc/react/index.tsx | 3 +-
packages/trpc/server/admin-router/router.ts | 8 -
packages/trpc/server/context.ts | 6 +-
.../trpc/server/document-router/router.ts | 10 +-
packages/trpc/server/field-router/router.ts | 16 -
packages/trpc/server/open-api.ts | 2 +-
.../trpc/server/recipient-router/router.ts | 20 -
packages/trpc/server/team-router/router.ts | 15 -
.../trpc/server/template-router/router.ts | 2 +-
packages/trpc/server/trpc.ts | 22 +-
.../document/document-share-button.tsx | 2 +-
99 files changed, 1651 insertions(+), 1607 deletions(-)
delete mode 100644 packages/trpc/client/guards.ts
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index b948e560d..88692396f 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -10,7 +10,7 @@ on:
jobs:
analyze:
name: Analyze
- runs-on: ubuntu-latest
+ runs-on: ubuntu-22.04
permissions:
actions: read
contents: read
diff --git a/apps/web/package.json b/apps/web/package.json
index 9659be4bc..5b7f412fb 100644
--- a/apps/web/package.json
+++ b/apps/web/package.json
@@ -26,7 +26,6 @@
"@lingui/react": "^4.11.3",
"@simplewebauthn/browser": "^9.0.1",
"@simplewebauthn/server": "^9.0.3",
- "@tanstack/react-query": "^4.29.5",
"colord": "^2.9.3",
"cookie-es": "^1.0.0",
"formidable": "^2.1.1",
@@ -55,7 +54,7 @@
"recharts": "^2.7.2",
"remeda": "^2.17.3",
"sharp": "0.32.6",
- "trpc-openapi": "^1.2.0",
+ "trpc-to-openapi": "2.0.4",
"ts-pattern": "^5.0.5",
"ua-parser-js": "^1.0.37",
"uqr": "^0.1.2",
@@ -75,4 +74,4 @@
"@types/ua-parser-js": "^0.7.39",
"typescript": "5.6.2"
}
-}
\ No newline at end of file
+}
diff --git a/apps/web/src/app/(dashboard)/admin/documents/[id]/admin-actions.tsx b/apps/web/src/app/(dashboard)/admin/documents/[id]/admin-actions.tsx
index 330f31eb1..214cacd38 100644
--- a/apps/web/src/app/(dashboard)/admin/documents/[id]/admin-actions.tsx
+++ b/apps/web/src/app/(dashboard)/admin/documents/[id]/admin-actions.tsx
@@ -28,7 +28,7 @@ export const AdminActions = ({ className, document, recipients }: AdminActionsPr
const { _ } = useLingui();
const { toast } = useToast();
- const { mutate: resealDocument, isLoading: isResealDocumentLoading } =
+ const { mutate: resealDocument, isPending: isResealDocumentLoading } =
trpc.admin.resealDocument.useMutation({
onSuccess: () => {
toast({
diff --git a/apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx b/apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx
index 337796959..bf142133f 100644
--- a/apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx
+++ b/apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx
@@ -8,7 +8,6 @@ import { Trans, msg } from '@lingui/macro';
import { useLingui } from '@lingui/react';
import type { Document } from '@documenso/prisma/client';
-import { TRPCClientError } from '@documenso/trpc/client';
import { trpc } from '@documenso/trpc/react';
import { Alert, AlertDescription, AlertTitle } from '@documenso/ui/primitives/alert';
import { Button } from '@documenso/ui/primitives/button';
@@ -36,7 +35,7 @@ export const SuperDeleteDocumentDialog = ({ document }: SuperDeleteDocumentDialo
const [reason, setReason] = useState('');
- const { mutateAsync: deleteDocument, isLoading: isDeletingDocument } =
+ const { mutateAsync: deleteDocument, isPending: isDeletingDocument } =
trpc.admin.deleteDocument.useMutation();
const handleDeleteDocument = async () => {
@@ -55,21 +54,12 @@ export const SuperDeleteDocumentDialog = ({ document }: SuperDeleteDocumentDialo
router.push('/admin/documents');
} catch (err) {
- if (err instanceof TRPCClientError && err.data?.code === 'BAD_REQUEST') {
- toast({
- title: _(msg`An error occurred`),
- description: err.message,
- variant: 'destructive',
- });
- } else {
- toast({
- title: _(msg`An unknown error occurred`),
- variant: 'destructive',
- description:
- err.message ??
- 'We encountered an unknown error while attempting to delete your document. Please try again later.',
- });
- }
+ toast({
+ title: _(msg`An unknown error occurred`),
+ variant: 'destructive',
+ description:
+ 'We encountered an unknown error while attempting to delete your document. Please try again later.',
+ });
}
};
@@ -77,7 +67,7 @@ export const SuperDeleteDocumentDialog = ({ document }: SuperDeleteDocumentDialo
diff --git a/apps/web/src/app/(dashboard)/admin/documents/document-results.tsx b/apps/web/src/app/(dashboard)/admin/documents/document-results.tsx
index e57161ea0..98854f296 100644
--- a/apps/web/src/app/(dashboard)/admin/documents/document-results.tsx
+++ b/apps/web/src/app/(dashboard)/admin/documents/document-results.tsx
@@ -37,7 +37,7 @@ export const AdminDocumentResults = () => {
const page = searchParams?.get?.('page') ? Number(searchParams.get('page')) : undefined;
const perPage = searchParams?.get?.('perPage') ? Number(searchParams.get('perPage')) : undefined;
- const { data: findDocumentsData, isLoading: isFindDocumentsLoading } =
+ const { data: findDocumentsData, isPending: isFindDocumentsLoading } =
trpc.admin.findDocuments.useQuery(
{
query: debouncedTerm,
@@ -45,7 +45,7 @@ export const AdminDocumentResults = () => {
perPage: perPage || 20,
},
{
- keepPreviousData: true,
+ placeholderData: (previousData) => previousData,
},
);
diff --git a/apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx b/apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx
index d68eed63b..6903f5e17 100644
--- a/apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx
+++ b/apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx
@@ -13,7 +13,6 @@ import {
SITE_SETTINGS_BANNER_ID,
ZSiteSettingsBannerSchema,
} from '@documenso/lib/server-only/site-settings/schemas/banner';
-import { TRPCClientError } from '@documenso/trpc/client';
import { trpc as trpcReact } from '@documenso/trpc/react';
import { Button } from '@documenso/ui/primitives/button';
import { ColorPicker } from '@documenso/ui/primitives/color-picker';
@@ -59,7 +58,7 @@ export function BannerForm({ banner }: BannerFormProps) {
const enabled = form.watch('enabled');
- const { mutateAsync: updateSiteSetting, isLoading: isUpdateSiteSettingLoading } =
+ const { mutateAsync: updateSiteSetting, isPending: isUpdateSiteSettingLoading } =
trpcReact.admin.updateSiteSetting.useMutation();
const onBannerUpdate = async ({ id, enabled, data }: TBannerFormSchema) => {
@@ -78,21 +77,13 @@ export function BannerForm({ banner }: BannerFormProps) {
router.refresh();
} catch (err) {
- if (err instanceof TRPCClientError && err.data?.code === 'BAD_REQUEST') {
- toast({
- title: _(msg`An error occurred`),
- description: err.message,
- variant: 'destructive',
- });
- } else {
- toast({
- title: _(msg`An unknown error occurred`),
- variant: 'destructive',
- description: _(
- msg`We encountered an unknown error while attempting to update the banner. Please try again later.`,
- ),
- });
- }
+ toast({
+ title: _(msg`An unknown error occurred`),
+ variant: 'destructive',
+ description: _(
+ msg`We encountered an unknown error while attempting to update the banner. Please try again later.`,
+ ),
+ });
}
};
diff --git a/apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx b/apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx
index 560172c77..1f45002f2 100644
--- a/apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx
+++ b/apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx
@@ -6,9 +6,10 @@ import { useRouter } from 'next/navigation';
import { Trans, msg } from '@lingui/macro';
import { useLingui } from '@lingui/react';
+import { match } from 'ts-pattern';
+import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
import type { User } from '@documenso/prisma/client';
-import { TRPCClientError } from '@documenso/trpc/client';
import { trpc } from '@documenso/trpc/react';
import { Alert, AlertDescription, AlertTitle } from '@documenso/ui/primitives/alert';
import { Button } from '@documenso/ui/primitives/button';
@@ -37,7 +38,7 @@ export const DeleteUserDialog = ({ className, user }: DeleteUserDialogProps) =>
const [email, setEmail] = useState('');
- const { mutateAsync: deleteUser, isLoading: isDeletingUser } =
+ const { mutateAsync: deleteUser, isPending: isDeletingUser } =
trpc.admin.deleteUser.useMutation();
const onDeleteAccount = async () => {
@@ -54,23 +55,19 @@ export const DeleteUserDialog = ({ className, user }: DeleteUserDialogProps) =>
router.push('/admin/users');
} catch (err) {
- if (err instanceof TRPCClientError && err.data?.code === 'BAD_REQUEST') {
- toast({
- title: _(msg`An error occurred`),
- description: err.message,
- variant: 'destructive',
- });
- } else {
- toast({
- title: _(msg`An unknown error occurred`),
- variant: 'destructive',
- description:
- err.message ??
- _(
- msg`We encountered an unknown error while attempting to delete your account. Please try again later.`,
- ),
- });
- }
+ const error = AppError.parseError(err);
+
+ const errorMessage = match(error.code)
+ .with(AppErrorCode.NOT_FOUND, () => msg`User not found.`)
+ .with(AppErrorCode.UNAUTHORIZED, () => msg`You are not authorized to delete this user.`)
+ .otherwise(() => msg`An error occurred while deleting the user.`);
+
+ toast({
+ title: _(msg`Error`),
+ description: _(errorMessage),
+ variant: 'destructive',
+ duration: 7500,
+ });
}
};
diff --git a/apps/web/src/app/(dashboard)/admin/users/[id]/disable-user-dialog.tsx b/apps/web/src/app/(dashboard)/admin/users/[id]/disable-user-dialog.tsx
index aac003c82..1b09d8432 100644
--- a/apps/web/src/app/(dashboard)/admin/users/[id]/disable-user-dialog.tsx
+++ b/apps/web/src/app/(dashboard)/admin/users/[id]/disable-user-dialog.tsx
@@ -34,7 +34,7 @@ export const DisableUserDialog = ({ className, userToDisable }: DisableUserDialo
const [email, setEmail] = useState('');
- const { mutateAsync: disableUser, isLoading: isDisablingUser } =
+ const { mutateAsync: disableUser, isPending: isDisablingUser } =
trpc.admin.disableUser.useMutation();
const onDisableAccount = async () => {
diff --git a/apps/web/src/app/(dashboard)/admin/users/[id]/enable-user-dialog.tsx b/apps/web/src/app/(dashboard)/admin/users/[id]/enable-user-dialog.tsx
index cdb5ed2de..c9df59591 100644
--- a/apps/web/src/app/(dashboard)/admin/users/[id]/enable-user-dialog.tsx
+++ b/apps/web/src/app/(dashboard)/admin/users/[id]/enable-user-dialog.tsx
@@ -34,7 +34,7 @@ export const EnableUserDialog = ({ className, userToEnable }: EnableUserDialogPr
const [email, setEmail] = useState('');
- const { mutateAsync: enableUser, isLoading: isEnablingUser } =
+ const { mutateAsync: enableUser, isPending: isEnablingUser } =
trpc.admin.enableUser.useMutation();
const onEnableAccount = async () => {
diff --git a/apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx b/apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx
index eae15526f..45097b594 100644
--- a/apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx
+++ b/apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx
@@ -37,17 +37,16 @@ export const DocumentLogsDataTable = ({ documentId }: DocumentLogsDataTableProps
const parsedSearchParams = ZUrlSearchParamsSchema.parse(Object.fromEntries(searchParams ?? []));
- const { data, isLoading, isInitialLoading, isLoadingError } =
- trpc.document.findDocumentAuditLogs.useQuery(
- {
- documentId,
- page: parsedSearchParams.page,
- perPage: parsedSearchParams.perPage,
- },
- {
- keepPreviousData: true,
- },
- );
+ const { data, isLoading, isLoadingError } = trpc.document.findDocumentAuditLogs.useQuery(
+ {
+ documentId,
+ page: parsedSearchParams.page,
+ perPage: parsedSearchParams.perPage,
+ },
+ {
+ placeholderData: (previousData) => previousData,
+ },
+ );
const onPaginationChange = (page: number, perPage: number) => {
updateSearchParams({
@@ -132,7 +131,7 @@ export const DocumentLogsDataTable = ({ documentId }: DocumentLogsDataTableProps
enable: isLoadingError,
}}
skeleton={{
- enable: isLoading && isInitialLoading,
+ enable: isLoading,
rows: 3,
component: (
<>
diff --git a/apps/web/src/app/(dashboard)/documents/[id]/logs/download-audit-log-button.tsx b/apps/web/src/app/(dashboard)/documents/[id]/logs/download-audit-log-button.tsx
index da408d6f9..d6be5318c 100644
--- a/apps/web/src/app/(dashboard)/documents/[id]/logs/download-audit-log-button.tsx
+++ b/apps/web/src/app/(dashboard)/documents/[id]/logs/download-audit-log-button.tsx
@@ -19,7 +19,7 @@ export const DownloadAuditLogButton = ({ className, documentId }: DownloadAuditL
const { toast } = useToast();
const { _ } = useLingui();
- const { mutateAsync: downloadAuditLogs, isLoading } =
+ const { mutateAsync: downloadAuditLogs, isPending } =
trpc.document.downloadAuditLogs.useMutation();
const onDownloadAuditLogsClick = async () => {
@@ -70,10 +70,10 @@ export const DownloadAuditLogButton = ({ className, documentId }: DownloadAuditL
return (
);
diff --git a/apps/web/src/app/(dashboard)/documents/[id]/logs/download-certificate-button.tsx b/apps/web/src/app/(dashboard)/documents/[id]/logs/download-certificate-button.tsx
index bfb894e24..18eff7258 100644
--- a/apps/web/src/app/(dashboard)/documents/[id]/logs/download-certificate-button.tsx
+++ b/apps/web/src/app/(dashboard)/documents/[id]/logs/download-certificate-button.tsx
@@ -26,7 +26,7 @@ export const DownloadCertificateButton = ({
const { toast } = useToast();
const { _ } = useLingui();
- const { mutateAsync: downloadCertificate, isLoading } =
+ const { mutateAsync: downloadCertificate, isPending } =
trpc.document.downloadCertificate.useMutation();
const onDownloadCertificatesClick = async () => {
@@ -77,12 +77,12 @@ export const DownloadCertificateButton = ({
return (
);
diff --git a/apps/web/src/app/(dashboard)/documents/data-table-sender-filter.tsx b/apps/web/src/app/(dashboard)/documents/data-table-sender-filter.tsx
index b580a7ede..8003c20b8 100644
--- a/apps/web/src/app/(dashboard)/documents/data-table-sender-filter.tsx
+++ b/apps/web/src/app/(dashboard)/documents/data-table-sender-filter.tsx
@@ -25,7 +25,7 @@ export const DataTableSenderFilter = ({ teamId }: DataTableSenderFilterProps) =>
const senderIds = parseToIntegerArray(searchParams?.get('senderIds') ?? '');
- const { data, isInitialLoading } = trpc.team.getTeamMembers.useQuery({
+ const { data, isLoading } = trpc.team.getTeamMembers.useQuery({
teamId,
});
@@ -61,7 +61,7 @@ export const DataTableSenderFilter = ({ teamId }: DataTableSenderFilterProps) =>
}
enableClearAllButton={true}
inputPlaceholder={msg`Search`}
- loading={!isMounted || isInitialLoading}
+ loading={!isMounted || isLoading}
options={comboBoxOptions}
selectedValues={senderIds}
onChange={onChange}
diff --git a/apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx b/apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx
index 176e5d7fd..50c0b83eb 100644
--- a/apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx
+++ b/apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx
@@ -51,7 +51,7 @@ export const DeleteDocumentDialog = ({
const [inputValue, setInputValue] = useState('');
const [isDeleteEnabled, setIsDeleteEnabled] = useState(status === DocumentStatus.DRAFT);
- const { mutateAsync: deleteDocument, isLoading } = trpcReact.document.deleteDocument.useMutation({
+ const { mutateAsync: deleteDocument, isPending } = trpcReact.document.deleteDocument.useMutation({
onSuccess: () => {
router.refresh();
void refreshLimits();
@@ -92,7 +92,7 @@ export const DeleteDocumentDialog = ({
};
return (
-
)}
- {!isInitialLoading && (
+ {!isLoading && (
No public profile templates found
{
const parsedSearchParams = ZUrlSearchParamsSchema.parse(Object.fromEntries(searchParams ?? []));
- const { data, isLoading, isInitialLoading, isLoadingError } =
- trpc.profile.findUserSecurityAuditLogs.useQuery(
- {
- page: parsedSearchParams.page,
- perPage: parsedSearchParams.perPage,
- },
- {
- keepPreviousData: true,
- },
- );
+ const { data, isLoading, isLoadingError } = trpc.profile.findUserSecurityAuditLogs.useQuery(
+ {
+ page: parsedSearchParams.page,
+ perPage: parsedSearchParams.perPage,
+ },
+ {
+ placeholderData: (previousData) => previousData,
+ },
+ );
const onPaginationChange = (page: number, perPage: number) => {
updateSearchParams({
@@ -134,7 +133,7 @@ export const UserSecurityActivityDataTable = () => {
enable: isLoadingError,
}}
skeleton={{
- enable: isLoading && isInitialLoading,
+ enable: isLoading,
rows: 3,
component: (
<>
diff --git a/apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx b/apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx
index 5c52532c9..44b87ae2f 100644
--- a/apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx
+++ b/apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx
@@ -65,7 +65,7 @@ export const CreatePasskeyDialog = ({ trigger, onSuccess, ...props }: CreatePass
},
});
- const { mutateAsync: createPasskeyRegistrationOptions, isLoading } =
+ const { mutateAsync: createPasskeyRegistrationOptions, isPending } =
trpc.auth.createPasskeyRegistrationOptions.useMutation();
const { mutateAsync: createPasskey } = trpc.auth.createPasskey.useMutation();
@@ -141,7 +141,7 @@ export const CreatePasskeyDialog = ({ trigger, onSuccess, ...props }: CreatePass
>
e.stopPropagation()} asChild={true}>
{trigger ?? (
-
+
Add passkey
diff --git a/apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx b/apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx
index 4c720076a..72142da41 100644
--- a/apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx
+++ b/apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx
@@ -60,7 +60,7 @@ export const UserPasskeysDataTableActions = ({
},
});
- const { mutateAsync: updatePasskey, isLoading: isUpdatingPasskey } =
+ const { mutateAsync: updatePasskey, isPending: isUpdatingPasskey } =
trpc.auth.updatePasskey.useMutation({
onSuccess: () => {
toast({
@@ -80,7 +80,7 @@ export const UserPasskeysDataTableActions = ({
},
});
- const { mutateAsync: deletePasskey, isLoading: isDeletingPasskey } =
+ const { mutateAsync: deletePasskey, isPending: isDeletingPasskey } =
trpc.auth.deletePasskey.useMutation({
onSuccess: () => {
toast({
diff --git a/apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx b/apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx
index 9a19a9767..169630f20 100644
--- a/apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx
+++ b/apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx
@@ -29,13 +29,13 @@ export const UserPasskeysDataTable = () => {
const parsedSearchParams = ZUrlSearchParamsSchema.parse(Object.fromEntries(searchParams ?? []));
- const { data, isLoading, isInitialLoading, isLoadingError } = trpc.auth.findPasskeys.useQuery(
+ const { data, isLoading, isLoadingError } = trpc.auth.findPasskeys.useQuery(
{
page: parsedSearchParams.page,
perPage: parsedSearchParams.perPage,
},
{
- keepPreviousData: true,
+ placeholderData: (previousData) => previousData,
},
);
@@ -100,7 +100,7 @@ export const UserPasskeysDataTable = () => {
enable: isLoadingError,
}}
skeleton={{
- enable: isLoading && isInitialLoading,
+ enable: isLoading,
rows: 3,
component: (
<>
diff --git a/apps/web/src/app/(dashboard)/settings/teams/accept-team-invitation-button.tsx b/apps/web/src/app/(dashboard)/settings/teams/accept-team-invitation-button.tsx
index cca5448f3..7d737026b 100644
--- a/apps/web/src/app/(dashboard)/settings/teams/accept-team-invitation-button.tsx
+++ b/apps/web/src/app/(dashboard)/settings/teams/accept-team-invitation-button.tsx
@@ -17,7 +17,7 @@ export const AcceptTeamInvitationButton = ({ teamId }: AcceptTeamInvitationButto
const {
mutateAsync: acceptTeamInvitation,
- isLoading,
+ isPending,
isSuccess,
} = trpc.team.acceptTeamInvitation.useMutation({
onSuccess: () => {
@@ -40,8 +40,8 @@ export const AcceptTeamInvitationButton = ({ teamId }: AcceptTeamInvitationButto
return (
acceptTeamInvitation({ teamId })}
- loading={isLoading}
- disabled={isLoading || isSuccess}
+ loading={isPending}
+ disabled={isPending || isSuccess}
>
Accept
diff --git a/apps/web/src/app/(dashboard)/settings/teams/decline-team-invitation-button.tsx b/apps/web/src/app/(dashboard)/settings/teams/decline-team-invitation-button.tsx
index b1f8ecb43..02c5c38aa 100644
--- a/apps/web/src/app/(dashboard)/settings/teams/decline-team-invitation-button.tsx
+++ b/apps/web/src/app/(dashboard)/settings/teams/decline-team-invitation-button.tsx
@@ -17,7 +17,7 @@ export const DeclineTeamInvitationButton = ({ teamId }: DeclineTeamInvitationBut
const {
mutateAsync: declineTeamInvitation,
- isLoading,
+ isPending,
isSuccess,
} = trpc.team.declineTeamInvitation.useMutation({
onSuccess: () => {
@@ -40,8 +40,8 @@ export const DeclineTeamInvitationButton = ({ teamId }: DeclineTeamInvitationBut
return (
declineTeamInvitation({ teamId })}
- loading={isLoading}
- disabled={isLoading || isSuccess}
+ loading={isPending}
+ disabled={isPending || isSuccess}
variant="ghost"
>
Decline
diff --git a/apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx b/apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx
index a6658fde6..3f7fadf26 100644
--- a/apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx
+++ b/apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx
@@ -30,7 +30,7 @@ export const TeamEmailUsage = ({ teamEmail }: TeamEmailUsageProps) => {
const { _ } = useLingui();
const { toast } = useToast();
- const { mutateAsync: deleteTeamEmail, isLoading: isDeletingTeamEmail } =
+ const { mutateAsync: deleteTeamEmail, isPending: isDeletingTeamEmail } =
trpc.team.deleteTeamEmail.useMutation({
onSuccess: () => {
toast({
diff --git a/apps/web/src/app/(dashboard)/settings/teams/team-invitations.tsx b/apps/web/src/app/(dashboard)/settings/teams/team-invitations.tsx
index c45bcd3a4..1cef7ea30 100644
--- a/apps/web/src/app/(dashboard)/settings/teams/team-invitations.tsx
+++ b/apps/web/src/app/(dashboard)/settings/teams/team-invitations.tsx
@@ -23,11 +23,11 @@ import { AcceptTeamInvitationButton } from './accept-team-invitation-button';
import { DeclineTeamInvitationButton } from './decline-team-invitation-button';
export const TeamInvitations = () => {
- const { data, isInitialLoading } = trpc.team.getTeamInvitations.useQuery();
+ const { data, isLoading } = trpc.team.getTeamInvitations.useQuery();
return (
- {data && data.length > 0 && !isInitialLoading && (
+ {data && data.length > 0 && !isLoading && (
diff --git a/apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx b/apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx
index 7157a8b87..4b4b1e57b 100644
--- a/apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx
+++ b/apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx
@@ -69,20 +69,19 @@ export const TemplatePageViewDocumentsTable = ({
Object.fromEntries(searchParams ?? []),
);
- const { data, isLoading, isInitialLoading, isLoadingError } =
- trpc.document.findDocuments.useQuery(
- {
- templateId,
- page: parsedSearchParams.page,
- perPage: parsedSearchParams.perPage,
- query: parsedSearchParams.query,
- source: parsedSearchParams.source,
- status: parsedSearchParams.status,
- },
- {
- keepPreviousData: true,
- },
- );
+ const { data, isLoading, isLoadingError } = trpc.document.findDocuments.useQuery(
+ {
+ templateId,
+ page: parsedSearchParams.page,
+ perPage: parsedSearchParams.perPage,
+ query: parsedSearchParams.query,
+ source: parsedSearchParams.source,
+ status: parsedSearchParams.status,
+ },
+ {
+ placeholderData: (previousData) => previousData,
+ },
+ );
const onPaginationChange = (page: number, perPage: number) => {
updateSearchParams({
@@ -241,7 +240,7 @@ export const TemplatePageViewDocumentsTable = ({
enable: isLoadingError,
}}
skeleton={{
- enable: isLoading && isInitialLoading,
+ enable: isLoading,
rows: 3,
component: (
<>
diff --git a/apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx b/apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx
index c0f30508b..f5a4750b4 100644
--- a/apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx
+++ b/apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx
@@ -28,7 +28,7 @@ export const DeleteTemplateDialog = ({ id, open, onOpenChange }: DeleteTemplateD
const { _ } = useLingui();
const { toast } = useToast();
- const { mutateAsync: deleteTemplate, isLoading } = trpcReact.template.deleteTemplate.useMutation({
+ const { mutateAsync: deleteTemplate, isPending } = trpcReact.template.deleteTemplate.useMutation({
onSuccess: () => {
router.refresh();
@@ -51,7 +51,7 @@ export const DeleteTemplateDialog = ({ id, open, onOpenChange }: DeleteTemplateD
});
return (
- !isLoading && onOpenChange(value)}>
+ !isPending && onOpenChange(value)}>
@@ -70,7 +70,7 @@ export const DeleteTemplateDialog = ({ id, open, onOpenChange }: DeleteTemplateD
onOpenChange(false)}
>
Cancel
@@ -79,7 +79,7 @@ export const DeleteTemplateDialog = ({ id, open, onOpenChange }: DeleteTemplateD
deleteTemplate({ templateId: id })}
>
Delete
diff --git a/apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx b/apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx
index 7bd71f71d..34beee309 100644
--- a/apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx
+++ b/apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx
@@ -32,7 +32,7 @@ export const DuplicateTemplateDialog = ({
const { _ } = useLingui();
const { toast } = useToast();
- const { mutateAsync: duplicateTemplate, isLoading } =
+ const { mutateAsync: duplicateTemplate, isPending } =
trpcReact.template.duplicateTemplate.useMutation({
onSuccess: () => {
router.refresh();
@@ -55,7 +55,7 @@ export const DuplicateTemplateDialog = ({
});
return (
- !isLoading && onOpenChange(value)}>
+ !isPending && onOpenChange(value)}>
@@ -70,7 +70,7 @@ export const DuplicateTemplateDialog = ({
onOpenChange(false)}
>
@@ -79,7 +79,7 @@ export const DuplicateTemplateDialog = ({
duplicateTemplate({
templateId: id,
diff --git a/apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx b/apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx
index 205efaf37..9a00b9d5b 100644
--- a/apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx
+++ b/apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx
@@ -43,7 +43,7 @@ export const MoveTemplateDialog = ({ templateId, open, onOpenChange }: MoveTempl
const [selectedTeamId, setSelectedTeamId] = useState(null);
const { data: teams, isLoading: isLoadingTeams } = trpc.team.getTeams.useQuery();
- const { mutateAsync: moveTemplate, isLoading } = trpc.template.moveTemplateToTeam.useMutation({
+ const { mutateAsync: moveTemplate, isPending } = trpc.template.moveTemplateToTeam.useMutation({
onSuccess: () => {
router.refresh();
toast({
@@ -130,8 +130,8 @@ export const MoveTemplateDialog = ({ templateId, open, onOpenChange }: MoveTempl
onOpenChange(false)}>
Cancel
-
- {isLoading ? Moving... : Move}
+
+ {isPending ? Moving... : Move}
diff --git a/apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx b/apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx
index 727e5199e..f603f20be 100644
--- a/apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx
+++ b/apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx
@@ -83,7 +83,7 @@ export const TemplateDirectLinkDialog = ({
const {
mutateAsync: createTemplateDirectLink,
- isLoading: isCreatingTemplateDirectLink,
+ isPending: isCreatingTemplateDirectLink,
reset: resetCreateTemplateDirectLink,
} = trpcReact.template.createTemplateDirectLink.useMutation({
onSuccess: (data) => {
@@ -104,7 +104,7 @@ export const TemplateDirectLinkDialog = ({
},
});
- const { mutateAsync: toggleTemplateDirectLink, isLoading: isTogglingTemplateAccess } =
+ const { mutateAsync: toggleTemplateDirectLink, isPending: isTogglingTemplateAccess } =
trpcReact.template.toggleTemplateDirectLink.useMutation({
onSuccess: (data) => {
const enabledDescription = msg`Direct link signing has been enabled`;
@@ -127,7 +127,7 @@ export const TemplateDirectLinkDialog = ({
},
});
- const { mutateAsync: deleteTemplateDirectLink, isLoading: isDeletingTemplateDirectLink } =
+ const { mutateAsync: deleteTemplateDirectLink, isPending: isDeletingTemplateDirectLink } =
trpcReact.template.deleteTemplateDirectLink.useMutation({
onSuccess: () => {
onOpenChange(false);
diff --git a/apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx b/apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx
index b5a04819a..2bf96afdd 100644
--- a/apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx
+++ b/apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx
@@ -81,12 +81,12 @@ export const CheckboxField = ({
);
}, [checkedValues, validationSign, checkboxValidationLength]);
- const { mutateAsync: signFieldWithToken, isLoading: isSignFieldWithTokenLoading } =
+ const { mutateAsync: signFieldWithToken, isPending: isSignFieldWithTokenLoading } =
trpc.field.signFieldWithToken.useMutation(DO_NOT_INVALIDATE_QUERY_ON_MUTATION);
const {
mutateAsync: removeSignedFieldWithToken,
- isLoading: isRemoveSignedFieldWithTokenLoading,
+ isPending: isRemoveSignedFieldWithTokenLoading,
} = trpc.field.removeSignedFieldWithToken.useMutation(DO_NOT_INVALIDATE_QUERY_ON_MUTATION);
const isLoading = isSignFieldWithTokenLoading || isRemoveSignedFieldWithTokenLoading || isPending;
diff --git a/apps/web/src/app/(signing)/sign/[token]/date-field.tsx b/apps/web/src/app/(signing)/sign/[token]/date-field.tsx
index 5b573d6f6..b62eaf652 100644
--- a/apps/web/src/app/(signing)/sign/[token]/date-field.tsx
+++ b/apps/web/src/app/(signing)/sign/[token]/date-field.tsx
@@ -51,12 +51,12 @@ export const DateField = ({
const [isPending, startTransition] = useTransition();
- const { mutateAsync: signFieldWithToken, isLoading: isSignFieldWithTokenLoading } =
+ const { mutateAsync: signFieldWithToken, isPending: isSignFieldWithTokenLoading } =
trpc.field.signFieldWithToken.useMutation(DO_NOT_INVALIDATE_QUERY_ON_MUTATION);
const {
mutateAsync: removeSignedFieldWithToken,
- isLoading: isRemoveSignedFieldWithTokenLoading,
+ isPending: isRemoveSignedFieldWithTokenLoading,
} = trpc.field.removeSignedFieldWithToken.useMutation(DO_NOT_INVALIDATE_QUERY_ON_MUTATION);
const isLoading = isSignFieldWithTokenLoading || isRemoveSignedFieldWithTokenLoading || isPending;
diff --git a/apps/web/src/app/(signing)/sign/[token]/document-auth-provider.tsx b/apps/web/src/app/(signing)/sign/[token]/document-auth-provider.tsx
index c5c32f414..90e5adcc2 100644
--- a/apps/web/src/app/(signing)/sign/[token]/document-auth-provider.tsx
+++ b/apps/web/src/app/(signing)/sign/[token]/document-auth-provider.tsx
@@ -106,7 +106,7 @@ export const DocumentAuthProvider = ({
perPage: MAXIMUM_PASSKEYS,
},
{
- keepPreviousData: true,
+ placeholderData: (previousData) => previousData,
enabled: derivedRecipientActionAuth === DocumentAuth.PASSKEY,
},
);
diff --git a/apps/web/src/app/(signing)/sign/[token]/dropdown-field.tsx b/apps/web/src/app/(signing)/sign/[token]/dropdown-field.tsx
index eef159ec6..5f4e1a444 100644
--- a/apps/web/src/app/(signing)/sign/[token]/dropdown-field.tsx
+++ b/apps/web/src/app/(signing)/sign/[token]/dropdown-field.tsx
@@ -58,12 +58,12 @@ export const DropdownField = ({
const defaultValue = parsedFieldMeta?.defaultValue;
const [localChoice, setLocalChoice] = useState(parsedFieldMeta.defaultValue ?? '');
- const { mutateAsync: signFieldWithToken, isLoading: isSignFieldWithTokenLoading } =
+ const { mutateAsync: signFieldWithToken, isPending: isSignFieldWithTokenLoading } =
trpc.field.signFieldWithToken.useMutation(DO_NOT_INVALIDATE_QUERY_ON_MUTATION);
const {
mutateAsync: removeSignedFieldWithToken,
- isLoading: isRemoveSignedFieldWithTokenLoading,
+ isPending: isRemoveSignedFieldWithTokenLoading,
} = trpc.field.removeSignedFieldWithToken.useMutation(DO_NOT_INVALIDATE_QUERY_ON_MUTATION);
const isLoading = isSignFieldWithTokenLoading || isRemoveSignedFieldWithTokenLoading || isPending;
diff --git a/apps/web/src/app/(signing)/sign/[token]/email-field.tsx b/apps/web/src/app/(signing)/sign/[token]/email-field.tsx
index 0cb11a739..9300aef63 100644
--- a/apps/web/src/app/(signing)/sign/[token]/email-field.tsx
+++ b/apps/web/src/app/(signing)/sign/[token]/email-field.tsx
@@ -40,12 +40,12 @@ export const EmailField = ({ field, recipient, onSignField, onUnsignField }: Ema
const [isPending, startTransition] = useTransition();
- const { mutateAsync: signFieldWithToken, isLoading: isSignFieldWithTokenLoading } =
+ const { mutateAsync: signFieldWithToken, isPending: isSignFieldWithTokenLoading } =
trpc.field.signFieldWithToken.useMutation(DO_NOT_INVALIDATE_QUERY_ON_MUTATION);
const {
mutateAsync: removeSignedFieldWithToken,
- isLoading: isRemoveSignedFieldWithTokenLoading,
+ isPending: isRemoveSignedFieldWithTokenLoading,
} = trpc.field.removeSignedFieldWithToken.useMutation(DO_NOT_INVALIDATE_QUERY_ON_MUTATION);
const isLoading = isSignFieldWithTokenLoading || isRemoveSignedFieldWithTokenLoading || isPending;
diff --git a/apps/web/src/app/(signing)/sign/[token]/initials-field.tsx b/apps/web/src/app/(signing)/sign/[token]/initials-field.tsx
index 595393ef2..b63418076 100644
--- a/apps/web/src/app/(signing)/sign/[token]/initials-field.tsx
+++ b/apps/web/src/app/(signing)/sign/[token]/initials-field.tsx
@@ -46,12 +46,12 @@ export const InitialsField = ({
const [isPending, startTransition] = useTransition();
- const { mutateAsync: signFieldWithToken, isLoading: isSignFieldWithTokenLoading } =
+ const { mutateAsync: signFieldWithToken, isPending: isSignFieldWithTokenLoading } =
trpc.field.signFieldWithToken.useMutation(DO_NOT_INVALIDATE_QUERY_ON_MUTATION);
const {
mutateAsync: removeSignedFieldWithToken,
- isLoading: isRemoveSignedFieldWithTokenLoading,
+ isPending: isRemoveSignedFieldWithTokenLoading,
} = trpc.field.removeSignedFieldWithToken.useMutation(DO_NOT_INVALIDATE_QUERY_ON_MUTATION);
const isLoading = isSignFieldWithTokenLoading || isRemoveSignedFieldWithTokenLoading || isPending;
diff --git a/apps/web/src/app/(signing)/sign/[token]/name-field.tsx b/apps/web/src/app/(signing)/sign/[token]/name-field.tsx
index ce39af972..bc83e5a49 100644
--- a/apps/web/src/app/(signing)/sign/[token]/name-field.tsx
+++ b/apps/web/src/app/(signing)/sign/[token]/name-field.tsx
@@ -48,12 +48,12 @@ export const NameField = ({ field, recipient, onSignField, onUnsignField }: Name
const [isPending, startTransition] = useTransition();
- const { mutateAsync: signFieldWithToken, isLoading: isSignFieldWithTokenLoading } =
+ const { mutateAsync: signFieldWithToken, isPending: isSignFieldWithTokenLoading } =
trpc.field.signFieldWithToken.useMutation(DO_NOT_INVALIDATE_QUERY_ON_MUTATION);
const {
mutateAsync: removeSignedFieldWithToken,
- isLoading: isRemoveSignedFieldWithTokenLoading,
+ isPending: isRemoveSignedFieldWithTokenLoading,
} = trpc.field.removeSignedFieldWithToken.useMutation(DO_NOT_INVALIDATE_QUERY_ON_MUTATION);
const isLoading = isSignFieldWithTokenLoading || isRemoveSignedFieldWithTokenLoading || isPending;
diff --git a/apps/web/src/app/(signing)/sign/[token]/number-field.tsx b/apps/web/src/app/(signing)/sign/[token]/number-field.tsx
index 9461900c9..ffd90df64 100644
--- a/apps/web/src/app/(signing)/sign/[token]/number-field.tsx
+++ b/apps/web/src/app/(signing)/sign/[token]/number-field.tsx
@@ -71,12 +71,12 @@ export const NumberField = ({ field, recipient, onSignField, onUnsignField }: Nu
const { executeActionAuthProcedure } = useRequiredDocumentAuthContext();
- const { mutateAsync: signFieldWithToken, isLoading: isSignFieldWithTokenLoading } =
+ const { mutateAsync: signFieldWithToken, isPending: isSignFieldWithTokenLoading } =
trpc.field.signFieldWithToken.useMutation(DO_NOT_INVALIDATE_QUERY_ON_MUTATION);
const {
mutateAsync: removeSignedFieldWithToken,
- isLoading: isRemoveSignedFieldWithTokenLoading,
+ isPending: isRemoveSignedFieldWithTokenLoading,
} = trpc.field.removeSignedFieldWithToken.useMutation(DO_NOT_INVALIDATE_QUERY_ON_MUTATION);
const isLoading = isSignFieldWithTokenLoading || isRemoveSignedFieldWithTokenLoading || isPending;
diff --git a/apps/web/src/app/(signing)/sign/[token]/radio-field.tsx b/apps/web/src/app/(signing)/sign/[token]/radio-field.tsx
index 8adacbda8..398181ec1 100644
--- a/apps/web/src/app/(signing)/sign/[token]/radio-field.tsx
+++ b/apps/web/src/app/(signing)/sign/[token]/radio-field.tsx
@@ -52,12 +52,12 @@ export const RadioField = ({ field, recipient, onSignField, onUnsignField }: Rad
const { executeActionAuthProcedure } = useRequiredDocumentAuthContext();
- const { mutateAsync: signFieldWithToken, isLoading: isSignFieldWithTokenLoading } =
+ const { mutateAsync: signFieldWithToken, isPending: isSignFieldWithTokenLoading } =
trpc.field.signFieldWithToken.useMutation(DO_NOT_INVALIDATE_QUERY_ON_MUTATION);
const {
mutateAsync: removeSignedFieldWithToken,
- isLoading: isRemoveSignedFieldWithTokenLoading,
+ isPending: isRemoveSignedFieldWithTokenLoading,
} = trpc.field.removeSignedFieldWithToken.useMutation(DO_NOT_INVALIDATE_QUERY_ON_MUTATION);
const isLoading = isSignFieldWithTokenLoading || isRemoveSignedFieldWithTokenLoading || isPending;
diff --git a/apps/web/src/app/(signing)/sign/[token]/signature-field.tsx b/apps/web/src/app/(signing)/sign/[token]/signature-field.tsx
index 717ebfc61..bba784975 100644
--- a/apps/web/src/app/(signing)/sign/[token]/signature-field.tsx
+++ b/apps/web/src/app/(signing)/sign/[token]/signature-field.tsx
@@ -66,12 +66,12 @@ export const SignatureField = ({
const [isPending, startTransition] = useTransition();
- const { mutateAsync: signFieldWithToken, isLoading: isSignFieldWithTokenLoading } =
+ const { mutateAsync: signFieldWithToken, isPending: isSignFieldWithTokenLoading } =
trpc.field.signFieldWithToken.useMutation(DO_NOT_INVALIDATE_QUERY_ON_MUTATION);
const {
mutateAsync: removeSignedFieldWithToken,
- isLoading: isRemoveSignedFieldWithTokenLoading,
+ isPending: isRemoveSignedFieldWithTokenLoading,
} = trpc.field.removeSignedFieldWithToken.useMutation(DO_NOT_INVALIDATE_QUERY_ON_MUTATION);
const { signature } = field;
diff --git a/apps/web/src/app/(signing)/sign/[token]/text-field.tsx b/apps/web/src/app/(signing)/sign/[token]/text-field.tsx
index fc722f8d0..0c4088d75 100644
--- a/apps/web/src/app/(signing)/sign/[token]/text-field.tsx
+++ b/apps/web/src/app/(signing)/sign/[token]/text-field.tsx
@@ -54,12 +54,12 @@ export const TextField = ({ field, recipient, onSignField, onUnsignField }: Text
const [isPending, startTransition] = useTransition();
- const { mutateAsync: signFieldWithToken, isLoading: isSignFieldWithTokenLoading } =
+ const { mutateAsync: signFieldWithToken, isPending: isSignFieldWithTokenLoading } =
trpc.field.signFieldWithToken.useMutation(DO_NOT_INVALIDATE_QUERY_ON_MUTATION);
const {
mutateAsync: removeSignedFieldWithToken,
- isLoading: isRemoveSignedFieldWithTokenLoading,
+ isPending: isRemoveSignedFieldWithTokenLoading,
} = trpc.field.removeSignedFieldWithToken.useMutation(DO_NOT_INVALIDATE_QUERY_ON_MUTATION);
const parsedFieldMeta = field.fieldMeta ? ZTextFieldMeta.parse(field.fieldMeta) : null;
diff --git a/apps/web/src/app/(teams)/t/[teamUrl]/layout-billing-banner.tsx b/apps/web/src/app/(teams)/t/[teamUrl]/layout-billing-banner.tsx
index 48c989b7c..d29b8abfb 100644
--- a/apps/web/src/app/(teams)/t/[teamUrl]/layout-billing-banner.tsx
+++ b/apps/web/src/app/(teams)/t/[teamUrl]/layout-billing-banner.tsx
@@ -38,7 +38,7 @@ export const LayoutBillingBanner = ({
const [isOpen, setIsOpen] = useState(false);
- const { mutateAsync: createBillingPortal, isLoading } =
+ const { mutateAsync: createBillingPortal, isPending } =
trpc.team.createBillingPortal.useMutation();
const handleCreatePortal = async () => {
@@ -92,7 +92,7 @@ export const LayoutBillingBanner = ({
'text-destructive-foreground hover:bg-destructive-foreground hover:text-white':
subscription.status === SubscriptionStatus.INACTIVE,
})}
- disabled={isLoading}
+ disabled={isPending}
onClick={() => setIsOpen(true)}
size="sm"
>
@@ -101,7 +101,7 @@ export const LayoutBillingBanner = ({
- !isLoading && setIsOpen(value)}>
+ !isPending && setIsOpen(value)}>
Payment overdue
@@ -128,7 +128,7 @@ export const LayoutBillingBanner = ({
{canExecuteTeamAction('MANAGE_BILLING', userRole) && (
-
+
Resolve payment
diff --git a/apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx b/apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx
index d97539cfe..c1ae53a12 100644
--- a/apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx
+++ b/apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx
@@ -25,7 +25,7 @@ export const TeamEmailDropdown = ({ team }: TeamsSettingsPageProps) => {
const { _ } = useLingui();
const { toast } = useToast();
- const { mutateAsync: resendEmailVerification, isLoading: isResendingEmailVerification } =
+ const { mutateAsync: resendEmailVerification, isPending: isResendingEmailVerification } =
trpc.team.resendTeamEmailVerification.useMutation({
onSuccess: () => {
toast({
diff --git a/apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx b/apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx
index 8f02b00e2..ccfea8983 100644
--- a/apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx
+++ b/apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx
@@ -36,7 +36,7 @@ export const TeamTransferStatus = ({
const isExpired = transferVerification && isTokenExpired(transferVerification.expiresAt);
- const { mutateAsync: deleteTeamTransferRequest, isLoading } =
+ const { mutateAsync: deleteTeamTransferRequest, isPending } =
trpc.team.deleteTeamTransferRequest.useMutation({
onSuccess: () => {
if (!isExpired) {
@@ -112,7 +112,7 @@ export const TeamTransferStatus = ({
{canExecuteTeamAction('DELETE_TEAM_TRANSFER_REQUEST', currentUserTeamRole) && (
deleteTeamTransferRequest({ teamId })}
- loading={isLoading}
+ loading={isPending}
variant={isExpired ? 'destructive' : 'ghost'}
className={cn('ml-auto', {
'hover:bg-transparent hover:text-blue-800': !isExpired,
diff --git a/apps/web/src/app/embed/direct/[[...url]]/client.tsx b/apps/web/src/app/embed/direct/[[...url]]/client.tsx
index 6f86382da..266672209 100644
--- a/apps/web/src/app/embed/direct/[[...url]]/client.tsx
+++ b/apps/web/src/app/embed/direct/[[...url]]/client.tsx
@@ -100,7 +100,7 @@ export const EmbedDirectTemplateClientPage = ({
const hasSignatureField = localFields.some((field) => field.type === FieldType.SIGNATURE);
- const { mutateAsync: createDocumentFromDirectTemplate, isLoading: isSubmitting } =
+ const { mutateAsync: createDocumentFromDirectTemplate, isPending: isSubmitting } =
trpc.template.createDocumentFromDirectTemplate.useMutation();
const onSignField = (payload: TSignFieldWithTokenMutationSchema) => {
diff --git a/apps/web/src/app/embed/sign/[[...url]]/client.tsx b/apps/web/src/app/embed/sign/[[...url]]/client.tsx
index f91740446..bfaeaeec5 100644
--- a/apps/web/src/app/embed/sign/[[...url]]/client.tsx
+++ b/apps/web/src/app/embed/sign/[[...url]]/client.tsx
@@ -84,7 +84,7 @@ export const EmbedSignDocumentClientPage = ({
fields.filter((field) => field.inserted),
];
- const { mutateAsync: completeDocumentWithToken, isLoading: isSubmitting } =
+ const { mutateAsync: completeDocumentWithToken, isPending: isSubmitting } =
trpc.recipient.completeDocumentWithToken.useMutation();
const hasSignatureField = fields.some((field) => field.type === FieldType.SIGNATURE);
diff --git a/apps/web/src/components/(dashboard)/common/command-menu.tsx b/apps/web/src/components/(dashboard)/common/command-menu.tsx
index 749fbf24c..e07ed9f1b 100644
--- a/apps/web/src/components/(dashboard)/common/command-menu.tsx
+++ b/apps/web/src/components/(dashboard)/common/command-menu.tsx
@@ -91,7 +91,7 @@ export function CommandMenu({ open, onOpenChange }: CommandMenuProps) {
query: search,
},
{
- keepPreviousData: true,
+ placeholderData: (previousData) => previousData,
// Do not batch this due to relatively long request time compared to
// other queries which are generally batched with this.
...SKIP_QUERY_BATCH_META,
diff --git a/apps/web/src/components/(dashboard)/layout/verify-email-banner.tsx b/apps/web/src/components/(dashboard)/layout/verify-email-banner.tsx
index 271686b80..4e16e7a3e 100644
--- a/apps/web/src/components/(dashboard)/layout/verify-email-banner.tsx
+++ b/apps/web/src/components/(dashboard)/layout/verify-email-banner.tsx
@@ -31,7 +31,7 @@ export const VerifyEmailBanner = ({ email }: VerifyEmailBannerProps) => {
const [isButtonDisabled, setIsButtonDisabled] = useState(false);
- const { mutateAsync: sendConfirmationEmail, isLoading } =
+ const { mutateAsync: sendConfirmationEmail, isPending } =
trpc.profile.sendConfirmationEmail.useMutation();
const onResendConfirmationEmail = async () => {
@@ -122,10 +122,10 @@ export const VerifyEmailBanner = ({ email }: VerifyEmailBannerProps) => {
- {isLoading ? Sending... : Resend Confirmation Email}
+ {isPending ? Sending... : Resend Confirmation Email}
diff --git a/apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx b/apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx
index 450464a99..23c23f751 100644
--- a/apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx
+++ b/apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx
@@ -64,7 +64,7 @@ export const AddTeamEmailDialog = ({ teamId, trigger, ...props }: AddTeamEmailDi
},
});
- const { mutateAsync: createTeamEmailVerification, isLoading } =
+ const { mutateAsync: createTeamEmailVerification, isPending } =
trpc.team.createTeamEmailVerification.useMutation();
const onFormSubmit = async ({ name, email }: TCreateTeamEmailFormSchema) => {
@@ -120,7 +120,7 @@ export const AddTeamEmailDialog = ({ teamId, trigger, ...props }: AddTeamEmailDi
>
e.stopPropagation()} asChild={true}>
{trigger ?? (
-
+
Add email
diff --git a/apps/web/src/components/(teams)/dialogs/create-team-checkout-dialog.tsx b/apps/web/src/components/(teams)/dialogs/create-team-checkout-dialog.tsx
index c27f3f85d..9a66c7073 100644
--- a/apps/web/src/components/(teams)/dialogs/create-team-checkout-dialog.tsx
+++ b/apps/web/src/components/(teams)/dialogs/create-team-checkout-dialog.tsx
@@ -39,7 +39,7 @@ export const CreateTeamCheckoutDialog = ({
const { data, isLoading } = trpc.team.getTeamPrices.useQuery();
- const { mutateAsync: createCheckout, isLoading: isCreatingCheckout } =
+ const { mutateAsync: createCheckout, isPending: isCreatingCheckout } =
trpc.team.createTeamPendingCheckout.useMutation({
onSuccess: (checkoutUrl) => {
window.open(checkoutUrl, '_blank');
diff --git a/apps/web/src/components/(teams)/dialogs/delete-team-member-dialog.tsx b/apps/web/src/components/(teams)/dialogs/delete-team-member-dialog.tsx
index be1e1f0e0..0036f7386 100644
--- a/apps/web/src/components/(teams)/dialogs/delete-team-member-dialog.tsx
+++ b/apps/web/src/components/(teams)/dialogs/delete-team-member-dialog.tsx
@@ -42,7 +42,7 @@ export const DeleteTeamMemberDialog = ({
const { _ } = useLingui();
const { toast } = useToast();
- const { mutateAsync: deleteTeamMembers, isLoading: isDeletingTeamMember } =
+ const { mutateAsync: deleteTeamMembers, isPending: isDeletingTeamMember } =
trpc.team.deleteTeamMembers.useMutation({
onSuccess: () => {
toast({
diff --git a/apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx b/apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx
index d44f607ee..3689d5e92 100644
--- a/apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx
+++ b/apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx
@@ -43,7 +43,7 @@ export const LeaveTeamDialog = ({
const { _ } = useLingui();
const { toast } = useToast();
- const { mutateAsync: leaveTeam, isLoading: isLeavingTeam } = trpc.team.leaveTeam.useMutation({
+ const { mutateAsync: leaveTeam, isPending: isLeavingTeam } = trpc.team.leaveTeam.useMutation({
onSuccess: () => {
toast({
title: _(msg`Success`),
diff --git a/apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx b/apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx
index 7e11b408b..0496f923a 100644
--- a/apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx
+++ b/apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx
@@ -50,7 +50,7 @@ export const RemoveTeamEmailDialog = ({ trigger, teamName, team }: RemoveTeamEma
const router = useRouter();
- const { mutateAsync: deleteTeamEmail, isLoading: isDeletingTeamEmail } =
+ const { mutateAsync: deleteTeamEmail, isPending: isDeletingTeamEmail } =
trpc.team.deleteTeamEmail.useMutation({
onSuccess: () => {
toast({
@@ -69,7 +69,7 @@ export const RemoveTeamEmailDialog = ({ trigger, teamName, team }: RemoveTeamEma
},
});
- const { mutateAsync: deleteTeamEmailVerification, isLoading: isDeletingTeamEmailVerification } =
+ const { mutateAsync: deleteTeamEmailVerification, isPending: isDeletingTeamEmailVerification } =
trpc.team.deleteTeamEmailVerification.useMutation({
onSuccess: () => {
toast({
diff --git a/apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx b/apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx
index 206977afe..d9984aace 100644
--- a/apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx
+++ b/apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx
@@ -32,14 +32,14 @@ export const CurrentUserTeamsDataTable = () => {
const parsedSearchParams = ZUrlSearchParamsSchema.parse(Object.fromEntries(searchParams ?? []));
- const { data, isLoading, isInitialLoading, isLoadingError } = trpc.team.findTeams.useQuery(
+ const { data, isLoading, isLoadingError } = trpc.team.findTeams.useQuery(
{
query: parsedSearchParams.query,
page: parsedSearchParams.page,
perPage: parsedSearchParams.perPage,
},
{
- keepPreviousData: true,
+ placeholderData: (previousData) => previousData,
},
);
@@ -134,7 +134,7 @@ export const CurrentUserTeamsDataTable = () => {
enable: isLoadingError,
}}
skeleton={{
- enable: isLoading && isInitialLoading,
+ enable: isLoading,
rows: 3,
component: (
<>
diff --git a/apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx b/apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx
index 010899bc2..57c77dbe0 100644
--- a/apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx
+++ b/apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx
@@ -20,7 +20,7 @@ export const PendingUserTeamsDataTableActions = ({
const { _ } = useLingui();
const { toast } = useToast();
- const { mutateAsync: deleteTeamPending, isLoading: deletingTeam } =
+ const { mutateAsync: deleteTeamPending, isPending: deletingTeam } =
trpc.team.deleteTeamPending.useMutation({
onSuccess: () => {
toast({
diff --git a/apps/web/src/components/(teams)/tables/pending-user-teams-data-table.tsx b/apps/web/src/components/(teams)/tables/pending-user-teams-data-table.tsx
index a889c1838..b656308f7 100644
--- a/apps/web/src/components/(teams)/tables/pending-user-teams-data-table.tsx
+++ b/apps/web/src/components/(teams)/tables/pending-user-teams-data-table.tsx
@@ -31,14 +31,14 @@ export const PendingUserTeamsDataTable = () => {
const [checkoutPendingTeamId, setCheckoutPendingTeamId] = useState(null);
- const { data, isLoading, isInitialLoading, isLoadingError } = trpc.team.findTeamsPending.useQuery(
+ const { data, isLoading, isLoadingError } = trpc.team.findTeamsPending.useQuery(
{
query: parsedSearchParams.query,
page: parsedSearchParams.page,
perPage: parsedSearchParams.perPage,
},
{
- keepPreviousData: true,
+ placeholderData: (previousData) => previousData,
},
);
@@ -112,7 +112,7 @@ export const PendingUserTeamsDataTable = () => {
enable: isLoadingError,
}}
skeleton={{
- enable: isLoading && isInitialLoading,
+ enable: isLoading,
rows: 3,
component: (
<>
diff --git a/apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx b/apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx
index 000f2f219..81f5c1c49 100644
--- a/apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx
+++ b/apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx
@@ -24,12 +24,12 @@ export type TeamBillingInvoicesDataTableProps = {
export const TeamBillingInvoicesDataTable = ({ teamId }: TeamBillingInvoicesDataTableProps) => {
const { _ } = useLingui();
- const { data, isLoading, isInitialLoading, isLoadingError } = trpc.team.findTeamInvoices.useQuery(
+ const { data, isLoading, isLoadingError } = trpc.team.findTeamInvoices.useQuery(
{
teamId,
},
{
- keepPreviousData: true,
+ placeholderData: (previousData) => previousData,
},
);
@@ -127,7 +127,7 @@ export const TeamBillingInvoicesDataTable = ({ teamId }: TeamBillingInvoicesData
enable: isLoadingError,
}}
skeleton={{
- enable: isLoading && isInitialLoading,
+ enable: isLoading,
rows: 3,
component: (
<>
diff --git a/apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx b/apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx
index fe0843865..8a57be81c 100644
--- a/apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx
+++ b/apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx
@@ -40,18 +40,17 @@ export const TeamMemberInvitesDataTable = ({ teamId }: TeamMemberInvitesDataTabl
const parsedSearchParams = ZUrlSearchParamsSchema.parse(Object.fromEntries(searchParams ?? []));
- const { data, isLoading, isInitialLoading, isLoadingError } =
- trpc.team.findTeamMemberInvites.useQuery(
- {
- teamId,
- query: parsedSearchParams.query,
- page: parsedSearchParams.page,
- perPage: parsedSearchParams.perPage,
- },
- {
- keepPreviousData: true,
- },
- );
+ const { data, isLoading, isLoadingError } = trpc.team.findTeamMemberInvites.useQuery(
+ {
+ teamId,
+ query: parsedSearchParams.query,
+ page: parsedSearchParams.page,
+ perPage: parsedSearchParams.perPage,
+ },
+ {
+ placeholderData: (previousData) => previousData,
+ },
+ );
const { mutateAsync: resendTeamMemberInvitation } =
trpc.team.resendTeamMemberInvitation.useMutation({
@@ -182,7 +181,7 @@ export const TeamMemberInvitesDataTable = ({ teamId }: TeamMemberInvitesDataTabl
enable: isLoadingError,
}}
skeleton={{
- enable: isLoading && isInitialLoading,
+ enable: isLoading,
rows: 3,
component: (
<>
diff --git a/apps/web/src/components/(teams)/tables/team-members-data-table.tsx b/apps/web/src/components/(teams)/tables/team-members-data-table.tsx
index 91997d7fa..e92efb727 100644
--- a/apps/web/src/components/(teams)/tables/team-members-data-table.tsx
+++ b/apps/web/src/components/(teams)/tables/team-members-data-table.tsx
@@ -52,7 +52,7 @@ export const TeamMembersDataTable = ({
const parsedSearchParams = ZUrlSearchParamsSchema.parse(Object.fromEntries(searchParams ?? []));
- const { data, isLoading, isInitialLoading, isLoadingError } = trpc.team.findTeamMembers.useQuery(
+ const { data, isLoading, isLoadingError } = trpc.team.findTeamMembers.useQuery(
{
teamId,
query: parsedSearchParams.query,
@@ -60,7 +60,7 @@ export const TeamMembersDataTable = ({
perPage: parsedSearchParams.perPage,
},
{
- keepPreviousData: true,
+ placeholderData: (previousData) => previousData,
},
);
@@ -185,7 +185,7 @@ export const TeamMembersDataTable = ({
enable: isLoadingError,
}}
skeleton={{
- enable: isLoading && isInitialLoading,
+ enable: isLoading,
rows: 3,
component: (
<>
diff --git a/apps/web/src/components/(teams)/tables/user-settings-teams-page-data-table.tsx b/apps/web/src/components/(teams)/tables/user-settings-teams-page-data-table.tsx
index 904c8bb3f..bac1dbf44 100644
--- a/apps/web/src/components/(teams)/tables/user-settings-teams-page-data-table.tsx
+++ b/apps/web/src/components/(teams)/tables/user-settings-teams-page-data-table.tsx
@@ -32,7 +32,7 @@ export const UserSettingsTeamsPageDataTable = () => {
const { data } = trpc.team.findTeamsPending.useQuery(
{},
{
- keepPreviousData: true,
+ placeholderData: (previousData) => previousData,
},
);
diff --git a/apps/web/src/components/(teams)/team-billing-portal-button.tsx b/apps/web/src/components/(teams)/team-billing-portal-button.tsx
index f5984fb2c..7ef4aad29 100644
--- a/apps/web/src/components/(teams)/team-billing-portal-button.tsx
+++ b/apps/web/src/components/(teams)/team-billing-portal-button.tsx
@@ -16,7 +16,7 @@ export const TeamBillingPortalButton = ({ buttonProps, teamId }: TeamBillingPort
const { _ } = useLingui();
const { toast } = useToast();
- const { mutateAsync: createBillingPortal, isLoading } =
+ const { mutateAsync: createBillingPortal, isPending } =
trpc.team.createBillingPortal.useMutation();
const handleCreatePortal = async () => {
@@ -37,7 +37,7 @@ export const TeamBillingPortalButton = ({ buttonProps, teamId }: TeamBillingPort
};
return (
- handleCreatePortal()} loading={isLoading}>
+ handleCreatePortal()} loading={isPending}>
Manage subscription
);
diff --git a/apps/web/src/components/document/document-history-sheet.tsx b/apps/web/src/components/document/document-history-sheet.tsx
index 8ee2098b6..8bda3a424 100644
--- a/apps/web/src/components/document/document-history-sheet.tsx
+++ b/apps/web/src/components/document/document-history-sheet.tsx
@@ -55,7 +55,7 @@ export const DocumentHistorySheet = ({
},
{
getNextPageParam: (lastPage) => lastPage.nextCursor,
- keepPreviousData: true,
+ placeholderData: (previousData) => previousData,
},
);
diff --git a/apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx b/apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx
index 6be2c814e..5965db3d8 100644
--- a/apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx
+++ b/apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx
@@ -61,7 +61,7 @@ export const EnableAuthenticatorAppDialog = ({ onSuccess }: EnableAuthenticatorA
const {
mutateAsync: setup2FA,
data: setup2FAData,
- isLoading: isSettingUp2FA,
+ isPending: isSettingUp2FA,
} = trpc.twoFactorAuthentication.setup.useMutation({
onError: () => {
toast({
diff --git a/apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx b/apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx
index f1f1f3a4e..588468c75 100644
--- a/apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx
+++ b/apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx
@@ -47,7 +47,7 @@ export const ViewRecoveryCodesDialog = () => {
const {
data: recoveryCodes,
mutate,
- isLoading,
+ isPending,
error,
} = trpc.twoFactorAuthentication.viewRecoveryCodes.useMutation();
@@ -121,7 +121,7 @@ export const ViewRecoveryCodesDialog = () => {
-
-
+
View
diff --git a/apps/web/src/components/forms/profile.tsx b/apps/web/src/components/forms/profile.tsx
index dee901e9f..3d70cf672 100644
--- a/apps/web/src/components/forms/profile.tsx
+++ b/apps/web/src/components/forms/profile.tsx
@@ -9,7 +9,6 @@ import { useForm } from 'react-hook-form';
import { z } from 'zod';
import type { User } from '@documenso/prisma/client';
-import { TRPCClientError } from '@documenso/trpc/client';
import { trpc } from '@documenso/trpc/react';
import { cn } from '@documenso/ui/lib/utils';
import { Button } from '@documenso/ui/primitives/button';
@@ -76,21 +75,13 @@ export const ProfileForm = ({ className, user }: ProfileFormProps) => {
router.refresh();
} catch (err) {
- if (err instanceof TRPCClientError && err.data?.code === 'BAD_REQUEST') {
- toast({
- title: _(msg`An error occurred`),
- description: err.message,
- variant: 'destructive',
- });
- } else {
- toast({
- title: _(msg`An unknown error occurred`),
- description: _(
- msg`We encountered an unknown error while attempting to sign you In. Please try again later.`,
- ),
- variant: 'destructive',
- });
- }
+ toast({
+ title: _(msg`An unknown error occurred`),
+ description: _(
+ msg`We encountered an unknown error while attempting update your profile. Please try again later.`,
+ ),
+ variant: 'destructive',
+ });
}
};
diff --git a/apps/web/src/components/forms/token.tsx b/apps/web/src/components/forms/token.tsx
index a28aa21e0..fe2985c52 100644
--- a/apps/web/src/components/forms/token.tsx
+++ b/apps/web/src/components/forms/token.tsx
@@ -9,11 +9,12 @@ import { Trans, msg } from '@lingui/macro';
import { useLingui } from '@lingui/react';
import { AnimatePresence, motion } from 'framer-motion';
import { useForm } from 'react-hook-form';
+import { match } from 'ts-pattern';
import { z } from 'zod';
import { useCopyToClipboard } from '@documenso/lib/client-only/hooks/use-copy-to-clipboard';
+import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
import type { ApiToken } from '@documenso/prisma/client';
-import { TRPCClientError } from '@documenso/trpc/client';
import { trpc } from '@documenso/trpc/react';
import type { TCreateTokenMutationSchema } from '@documenso/trpc/server/api-token-router/schema';
import { ZCreateTokenMutationSchema } from '@documenso/trpc/server/api-token-router/schema';
@@ -131,23 +132,22 @@ export const ApiTokenForm = ({ className, teamId, tokens }: ApiTokenFormProps) =
form.reset();
startTransition(() => router.refresh());
- } catch (error) {
- if (error instanceof TRPCClientError && error.data?.code === 'BAD_REQUEST') {
- toast({
- title: _(msg`An error occurred`),
- description: error.message,
- variant: 'destructive',
- });
- } else {
- toast({
- title: _(msg`An unknown error occurred`),
- description: _(
- msg`We encountered an unknown error while attempting create the new token. Please try again later.`,
- ),
- variant: 'destructive',
- duration: 5000,
- });
- }
+ } catch (err) {
+ const error = AppError.parseError(err);
+
+ const errorMessage = match(error.code)
+ .with(
+ AppErrorCode.UNAUTHORIZED,
+ () => msg`You do not have permission to create a token for this team`,
+ )
+ .otherwise(() => msg`Something went wrong. Please try again later.`);
+
+ toast({
+ title: _(msg`An error occurred`),
+ description: _(errorMessage),
+ variant: 'destructive',
+ duration: 5000,
+ });
}
};
diff --git a/apps/web/src/components/templates/manage-public-template-dialog.tsx b/apps/web/src/components/templates/manage-public-template-dialog.tsx
index 405ee48f7..67ac27782 100644
--- a/apps/web/src/components/templates/manage-public-template-dialog.tsx
+++ b/apps/web/src/components/templates/manage-public-template-dialog.tsx
@@ -116,7 +116,7 @@ export const ManagePublicTemplateDialog = ({
},
});
- const { mutateAsync: updateTemplateSettings, isLoading: isUpdatingTemplateSettings } =
+ const { mutateAsync: updateTemplateSettings, isPending: isUpdatingTemplateSettings } =
trpc.template.updateTemplate.useMutation();
const setTemplateToPrivate = async (templateId: number) => {
diff --git a/apps/web/src/pages/api/v2-beta/[...trpc].ts b/apps/web/src/pages/api/v2-beta/[...trpc].ts
index db99e4739..41d866a8f 100644
--- a/apps/web/src/pages/api/v2-beta/[...trpc].ts
+++ b/apps/web/src/pages/api/v2-beta/[...trpc].ts
@@ -1,7 +1,4 @@
-import type { NextApiRequest, NextApiResponse } from 'next';
-
-import { createOpenApiNextHandler } from 'trpc-openapi';
-import type { CreateOpenApiNextHandlerOptions } from 'trpc-openapi/dist/adapters/next';
+import { createOpenApiNextHandler } from 'trpc-to-openapi';
import {
AppError,
@@ -9,7 +6,6 @@ import {
genericErrorCodeToTrpcErrorCodeMap,
} from '@documenso/lib/errors/app-error';
import { buildLogger } from '@documenso/lib/utils/logger';
-import type { TRPCError } from '@documenso/trpc/server';
import { createTrpcContext } from '@documenso/trpc/server/context';
import { appRouter } from '@documenso/trpc/server/router';
@@ -17,9 +13,8 @@ const logger = buildLogger();
export default createOpenApiNextHandler({
router: appRouter,
- createContext: async ({ req, res }: { req: NextApiRequest; res: NextApiResponse }) =>
- createTrpcContext({ req, res, requestSource: 'apiV2' }),
- onError: ({ error, path }: { error: TRPCError; path?: string }) => {
+ createContext: async ({ req, res }) => createTrpcContext({ req, res, requestSource: 'apiV2' }),
+ onError: ({ error, path }) => {
// Always log the error for now.
console.error(error.message);
@@ -47,7 +42,7 @@ export default createOpenApiNextHandler({
}
},
// Not sure why we need to do this since we handle it in errorFormatter which runs after this.
- responseMeta: (opts: CreateOpenApiNextHandlerOptions['responseMeta']) => {
+ responseMeta: (opts) => {
if (opts.errors[0]?.cause instanceof AppError) {
const appError = AppError.parseError(opts.errors[0].cause);
@@ -57,6 +52,8 @@ export default createOpenApiNextHandler({
status: httpStatus,
};
}
+
+ return {};
},
});
diff --git a/package-lock.json b/package-lock.json
index 0b91a723d..bf866ef97 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -121,7 +121,6 @@
"@lingui/react": "^4.11.3",
"@simplewebauthn/browser": "^9.0.1",
"@simplewebauthn/server": "^9.0.3",
- "@tanstack/react-query": "^4.29.5",
"colord": "^2.9.3",
"cookie-es": "^1.0.0",
"formidable": "^2.1.1",
@@ -150,7 +149,7 @@
"recharts": "^2.7.2",
"remeda": "^2.17.3",
"sharp": "0.32.6",
- "trpc-openapi": "^1.2.0",
+ "trpc-to-openapi": "2.0.4",
"ts-pattern": "^5.0.5",
"ua-parser-js": "^1.0.37",
"uqr": "^0.1.2",
@@ -2356,6 +2355,17 @@
"tslib": "^2.4.0"
}
},
+ "node_modules/@emnapi/runtime": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.3.1.tgz",
+ "integrity": "sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==",
+ "license": "MIT",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
"node_modules/@emotion/is-prop-valid": {
"version": "0.8.8",
"resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz",
@@ -3039,6 +3049,386 @@
"resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz",
"integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw=="
},
+ "node_modules/@img/sharp-darwin-arm64": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz",
+ "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "peer": true,
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-darwin-arm64": "1.0.4"
+ }
+ },
+ "node_modules/@img/sharp-darwin-x64": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz",
+ "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "peer": true,
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-darwin-x64": "1.0.4"
+ }
+ },
+ "node_modules/@img/sharp-libvips-darwin-arm64": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz",
+ "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "peer": true,
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-darwin-x64": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz",
+ "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "peer": true,
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-arm": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz",
+ "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "peer": true,
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-arm64": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz",
+ "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "peer": true,
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-s390x": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz",
+ "integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "peer": true,
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-x64": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz",
+ "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "peer": true,
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linuxmusl-arm64": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz",
+ "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "peer": true,
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linuxmusl-x64": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz",
+ "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "peer": true,
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-linux-arm": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz",
+ "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "peer": true,
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-arm": "1.0.5"
+ }
+ },
+ "node_modules/@img/sharp-linux-arm64": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz",
+ "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "peer": true,
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-arm64": "1.0.4"
+ }
+ },
+ "node_modules/@img/sharp-linux-s390x": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz",
+ "integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "peer": true,
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-s390x": "1.0.4"
+ }
+ },
+ "node_modules/@img/sharp-linux-x64": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz",
+ "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "peer": true,
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-x64": "1.0.4"
+ }
+ },
+ "node_modules/@img/sharp-linuxmusl-arm64": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz",
+ "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "peer": true,
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linuxmusl-arm64": "1.0.4"
+ }
+ },
+ "node_modules/@img/sharp-linuxmusl-x64": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz",
+ "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "peer": true,
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linuxmusl-x64": "1.0.4"
+ }
+ },
+ "node_modules/@img/sharp-wasm32": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz",
+ "integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==",
+ "cpu": [
+ "wasm32"
+ ],
+ "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "@emnapi/runtime": "^1.2.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-win32-ia32": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz",
+ "integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "Apache-2.0 AND LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "peer": true,
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-win32-x64": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz",
+ "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "Apache-2.0 AND LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "peer": true,
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
"node_modules/@inquirer/figures": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.3.tgz",
@@ -3145,17 +3535,6 @@
"node": ">=6.0.0"
}
},
- "node_modules/@jridgewell/source-map": {
- "version": "0.3.6",
- "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz",
- "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@jridgewell/gen-mapping": "^0.3.5",
- "@jridgewell/trace-mapping": "^0.3.25"
- }
- },
"node_modules/@jridgewell/sourcemap-codec": {
"version": "1.4.15",
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
@@ -8949,6 +9328,16 @@
"integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==",
"license": "Apache-2.0"
},
+ "node_modules/@swc/helpers": {
+ "version": "0.5.13",
+ "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.13.tgz",
+ "integrity": "sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
"node_modules/@szmarczak/http-timer": {
"version": "4.0.6",
"resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz",
@@ -8985,38 +9374,27 @@
}
},
"node_modules/@tanstack/query-core": {
- "version": "4.36.1",
- "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-4.36.1.tgz",
- "integrity": "sha512-DJSilV5+ytBP1FbFcEJovv4rnnm/CokuVvrBEtW/Va9DvuJ3HksbXUJEpI0aV1KtuL4ZoO9AVE6PyNLzF7tLeA==",
+ "version": "5.59.13",
+ "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.59.13.tgz",
+ "integrity": "sha512-Oou0bBu/P8+oYjXsJQ11j+gcpLAMpqW42UlokQYEz4dE7+hOtVO9rVuolJKgEccqzvyFzqX4/zZWY+R/v1wVsQ==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/tannerlinsley"
}
},
"node_modules/@tanstack/react-query": {
- "version": "4.36.1",
- "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-4.36.1.tgz",
- "integrity": "sha512-y7ySVHFyyQblPl3J3eQBWpXZkliroki3ARnBKsdJchlgt7yJLRDUcf4B8soufgiYt3pEQIkBWBx1N9/ZPIeUWw==",
+ "version": "5.59.15",
+ "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.59.15.tgz",
+ "integrity": "sha512-QbVlAkTI78wB4Mqgf2RDmgC0AOiJqer2c5k9STOOSXGv1S6ZkY37r/6UpE8DbQ2Du0ohsdoXgFNEyv+4eDoPEw==",
"dependencies": {
- "@tanstack/query-core": "4.36.1",
- "use-sync-external-store": "^1.2.0"
+ "@tanstack/query-core": "5.59.13"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/tannerlinsley"
},
"peerDependencies": {
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
- "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0",
- "react-native": "*"
- },
- "peerDependenciesMeta": {
- "react-dom": {
- "optional": true
- },
- "react-native": {
- "optional": true
- }
+ "react": "^18 || ^19"
}
},
"node_modules/@tanstack/react-table": {
@@ -9673,60 +10051,45 @@
}
},
"node_modules/@trpc/client": {
- "version": "10.44.1",
- "resolved": "https://registry.npmjs.org/@trpc/client/-/client-10.44.1.tgz",
- "integrity": "sha512-vTWsykNcgz1LnwePVl2fKZnhvzP9N3GaaLYPkfGINo314ZOS0OBqe9x0ytB2LLUnRVTAAZ2WoONzARd8nHiqrA==",
+ "version": "11.0.0-rc.648",
+ "resolved": "https://registry.npmjs.org/@trpc/client/-/client-11.0.0-rc.648.tgz",
+ "integrity": "sha512-k4FfLKvJwbosUH8KYyZkC50RJHYtIyJECi5WhRXsvaf9a6lgrTlcA+osq815zYcAHo7wEgR9E9UdSTrpLdAQFQ==",
"funding": [
"https://trpc.io/sponsor"
],
+ "license": "MIT",
"peerDependencies": {
- "@trpc/server": "10.44.1"
- }
- },
- "node_modules/@trpc/next": {
- "version": "10.44.1",
- "resolved": "https://registry.npmjs.org/@trpc/next/-/next-10.44.1.tgz",
- "integrity": "sha512-ez2oYUzmaQ+pGch627sRBfeEk3h+UIwNicR8WjTAM54TPcdP5W9ZyWCyO5HZTEfjHgGixYM4tCIxewdKOWY9yA==",
- "funding": [
- "https://trpc.io/sponsor"
- ],
- "dependencies": {
- "react-ssr-prepass": "^1.5.0"
- },
- "peerDependencies": {
- "@tanstack/react-query": "^4.18.0",
- "@trpc/client": "10.44.1",
- "@trpc/react-query": "10.44.1",
- "@trpc/server": "10.44.1",
- "next": "*",
- "react": ">=16.8.0",
- "react-dom": ">=16.8.0"
+ "@trpc/server": "11.0.0-rc.648+77b4d8920",
+ "typescript": ">=5.6.2"
}
},
"node_modules/@trpc/react-query": {
- "version": "10.44.1",
- "resolved": "https://registry.npmjs.org/@trpc/react-query/-/react-query-10.44.1.tgz",
- "integrity": "sha512-Sgi/v0YtdunOXjBRi7om9gILGkOCFYXPzn5KqLuEHiZw5dr5w4qGHFwCeMAvndZxmwfblJrl1tk2AznmsVu8MA==",
+ "version": "11.0.0-rc.648",
+ "resolved": "https://registry.npmjs.org/@trpc/react-query/-/react-query-11.0.0-rc.648.tgz",
+ "integrity": "sha512-U3H6o/aN3umEA2QNDGRsaJb6M7zrffor2NQl2UaHOiLBHuXZ3ISI2fJXay7e32s1l6z5F5PGMGwTQtUedzWI2w==",
"funding": [
"https://trpc.io/sponsor"
],
+ "license": "MIT",
"peerDependencies": {
- "@tanstack/react-query": "^4.18.0",
- "@trpc/client": "10.44.1",
- "@trpc/server": "10.44.1",
- "react": ">=16.8.0",
- "react-dom": ">=16.8.0"
+ "@tanstack/react-query": "^5.59.15",
+ "@trpc/client": "11.0.0-rc.648+77b4d8920",
+ "@trpc/server": "11.0.0-rc.648+77b4d8920",
+ "react": ">=18.2.0",
+ "react-dom": ">=18.2.0",
+ "typescript": ">=5.6.2"
}
},
"node_modules/@trpc/server": {
- "version": "10.44.1",
- "resolved": "https://registry.npmjs.org/@trpc/server/-/server-10.44.1.tgz",
- "integrity": "sha512-mF7B+K6LjuboX8I1RZgKE5GA/fJhsJ8tKGK2UBt3Bwik7hepEPb4NJgNr7vO6BK5IYwPdBLRLTctRw6XZx0sRg==",
+ "version": "11.0.0-rc.648",
+ "resolved": "https://registry.npmjs.org/@trpc/server/-/server-11.0.0-rc.648.tgz",
+ "integrity": "sha512-nKW7FNM+QZrY/CVGlX3hFNIdUvbw6pwSJ+HzEF8GIeSJDKLHK7Ke1QJGI2mRW6oF9dCKMBXfuLaYY2dXfjfn7Q==",
"funding": [
"https://trpc.io/sponsor"
],
- "engines": {
- "node": ">=18.0.0"
+ "license": "MIT",
+ "peerDependencies": {
+ "typescript": ">=5.6.2"
}
},
"node_modules/@ts-rest/core": {
@@ -9962,28 +10325,6 @@
"integrity": "sha512-y0M7sqzsnHB6cvAeTCBPrCQNQiZe8U4qdzf8uBVmOWYap5MMTN/gB2iEqrIqFiYcsyvP74GnGD5tgsHttielFw==",
"dev": true
},
- "node_modules/@types/eslint": {
- "version": "8.56.10",
- "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz",
- "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@types/estree": "*",
- "@types/json-schema": "*"
- }
- },
- "node_modules/@types/eslint-scope": {
- "version": "3.7.7",
- "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz",
- "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@types/eslint": "*",
- "@types/estree": "*"
- }
- },
"node_modules/@types/estree": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
@@ -10599,181 +10940,6 @@
"resolved": "https://registry.npmjs.org/@vvo/tzdb/-/tzdb-6.117.0.tgz",
"integrity": "sha512-vZkfoag1kHqItK/zebxT0Fkt3R/zscjgD+Ib7kaAdum0Sz9psXDfVHPW1Benv91d02zPWlLIvZtjBmzX4a+6fw=="
},
- "node_modules/@webassemblyjs/ast": {
- "version": "1.12.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz",
- "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@webassemblyjs/helper-numbers": "1.11.6",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.6"
- }
- },
- "node_modules/@webassemblyjs/floating-point-hex-parser": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz",
- "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==",
- "dev": true,
- "peer": true
- },
- "node_modules/@webassemblyjs/helper-api-error": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz",
- "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==",
- "dev": true,
- "peer": true
- },
- "node_modules/@webassemblyjs/helper-buffer": {
- "version": "1.12.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz",
- "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==",
- "dev": true,
- "peer": true
- },
- "node_modules/@webassemblyjs/helper-numbers": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz",
- "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@webassemblyjs/floating-point-hex-parser": "1.11.6",
- "@webassemblyjs/helper-api-error": "1.11.6",
- "@xtuc/long": "4.2.2"
- }
- },
- "node_modules/@webassemblyjs/helper-wasm-bytecode": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz",
- "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==",
- "dev": true,
- "peer": true
- },
- "node_modules/@webassemblyjs/helper-wasm-section": {
- "version": "1.12.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz",
- "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@webassemblyjs/ast": "1.12.1",
- "@webassemblyjs/helper-buffer": "1.12.1",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
- "@webassemblyjs/wasm-gen": "1.12.1"
- }
- },
- "node_modules/@webassemblyjs/ieee754": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz",
- "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@xtuc/ieee754": "^1.2.0"
- }
- },
- "node_modules/@webassemblyjs/leb128": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz",
- "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@xtuc/long": "4.2.2"
- }
- },
- "node_modules/@webassemblyjs/utf8": {
- "version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz",
- "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==",
- "dev": true,
- "peer": true
- },
- "node_modules/@webassemblyjs/wasm-edit": {
- "version": "1.12.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz",
- "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@webassemblyjs/ast": "1.12.1",
- "@webassemblyjs/helper-buffer": "1.12.1",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
- "@webassemblyjs/helper-wasm-section": "1.12.1",
- "@webassemblyjs/wasm-gen": "1.12.1",
- "@webassemblyjs/wasm-opt": "1.12.1",
- "@webassemblyjs/wasm-parser": "1.12.1",
- "@webassemblyjs/wast-printer": "1.12.1"
- }
- },
- "node_modules/@webassemblyjs/wasm-gen": {
- "version": "1.12.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz",
- "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@webassemblyjs/ast": "1.12.1",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
- "@webassemblyjs/ieee754": "1.11.6",
- "@webassemblyjs/leb128": "1.11.6",
- "@webassemblyjs/utf8": "1.11.6"
- }
- },
- "node_modules/@webassemblyjs/wasm-opt": {
- "version": "1.12.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz",
- "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@webassemblyjs/ast": "1.12.1",
- "@webassemblyjs/helper-buffer": "1.12.1",
- "@webassemblyjs/wasm-gen": "1.12.1",
- "@webassemblyjs/wasm-parser": "1.12.1"
- }
- },
- "node_modules/@webassemblyjs/wasm-parser": {
- "version": "1.12.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz",
- "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@webassemblyjs/ast": "1.12.1",
- "@webassemblyjs/helper-api-error": "1.11.6",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
- "@webassemblyjs/ieee754": "1.11.6",
- "@webassemblyjs/leb128": "1.11.6",
- "@webassemblyjs/utf8": "1.11.6"
- }
- },
- "node_modules/@webassemblyjs/wast-printer": {
- "version": "1.12.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz",
- "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@webassemblyjs/ast": "1.12.1",
- "@xtuc/long": "4.2.2"
- }
- },
- "node_modules/@xtuc/ieee754": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
- "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
- "dev": true,
- "peer": true
- },
- "node_modules/@xtuc/long": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
- "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
- "dev": true,
- "peer": true
- },
"node_modules/@yarnpkg/lockfile": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz",
@@ -10797,18 +10963,6 @@
"node": ">=6.5"
}
},
- "node_modules/accepts": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
- "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
- "dependencies": {
- "mime-types": "~2.1.34",
- "negotiator": "0.6.3"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
"node_modules/acorn": {
"version": "8.11.3",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
@@ -10820,16 +10974,6 @@
"node": ">=0.4.0"
}
},
- "node_modules/acorn-import-attributes": {
- "version": "1.9.5",
- "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz",
- "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==",
- "dev": true,
- "peer": true,
- "peerDependencies": {
- "acorn": "^8"
- }
- },
"node_modules/acorn-jsx": {
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
@@ -12409,16 +12553,6 @@
"node": ">=10"
}
},
- "node_modules/chrome-trace-event": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz",
- "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=6.0"
- }
- },
"node_modules/ci-info": {
"version": "3.9.0",
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz",
@@ -13417,17 +13551,6 @@
"simple-wcswidth": "^1.0.1"
}
},
- "node_modules/content-disposition": {
- "version": "0.5.4",
- "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
- "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
- "dependencies": {
- "safe-buffer": "5.2.1"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
"node_modules/content-type": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
@@ -14192,22 +14315,6 @@
"node": ">= 12"
}
},
- "node_modules/date-fns": {
- "version": "2.30.0",
- "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz",
- "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==",
- "peer": true,
- "dependencies": {
- "@babel/runtime": "^7.21.0"
- },
- "engines": {
- "node": ">=0.11"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/date-fns"
- }
- },
"node_modules/dayjs": {
"version": "1.11.10",
"resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz",
@@ -15061,13 +15168,6 @@
"safe-array-concat": "^1.0.1"
}
},
- "node_modules/es-module-lexer": {
- "version": "1.5.4",
- "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz",
- "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==",
- "dev": true,
- "peer": true
- },
"node_modules/es-set-tostringtag": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz",
@@ -16330,16 +16430,6 @@
"integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==",
"dev": true
},
- "node_modules/events": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
- "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=0.8.x"
- }
- },
"node_modules/evt": {
"version": "2.5.7",
"resolved": "https://registry.npmjs.org/evt/-/evt-2.5.7.tgz",
@@ -16902,14 +16992,6 @@
}
}
},
- "node_modules/fresh": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
- "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
- "engines": {
- "node": ">= 0.6"
- }
- },
"node_modules/from": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz",
@@ -17378,13 +17460,6 @@
"node": ">= 6"
}
},
- "node_modules/glob-to-regexp": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
- "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
- "dev": true,
- "peer": true
- },
"node_modules/global-dirs": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz",
@@ -19636,37 +19711,6 @@
"resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
"integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg=="
},
- "node_modules/jest-worker": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
- "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@types/node": "*",
- "merge-stream": "^2.0.0",
- "supports-color": "^8.0.0"
- },
- "engines": {
- "node": ">= 10.13.0"
- }
- },
- "node_modules/jest-worker/node_modules/supports-color": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
- "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/supports-color?sponsor=1"
- }
- },
"node_modules/jiti": {
"version": "1.21.6",
"resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz",
@@ -20510,16 +20554,6 @@
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
}
},
- "node_modules/loader-runner": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
- "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=6.11.5"
- }
- },
"node_modules/local-pkg": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz",
@@ -21521,14 +21555,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/merge-descriptors": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz",
- "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==",
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/merge-refs": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/merge-refs/-/merge-refs-1.2.2.tgz",
@@ -21602,14 +21628,6 @@
"uuid": "dist/bin/uuid"
}
},
- "node_modules/methods": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
- "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
- "engines": {
- "node": ">= 0.6"
- }
- },
"node_modules/micro": {
"version": "10.0.1",
"resolved": "https://registry.npmjs.org/micro/-/micro-10.0.1.tgz",
@@ -22338,17 +22356,6 @@
"node": ">=8.6"
}
},
- "node_modules/mime": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
- "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
- "bin": {
- "mime": "cli.js"
- },
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/mime-db": {
"version": "1.52.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
@@ -22818,17 +22825,11 @@
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
"integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+ "dev": true,
"engines": {
"node": ">= 0.6"
}
},
- "node_modules/neo-async": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
- "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
- "dev": true,
- "peer": true
- },
"node_modules/netmask": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz",
@@ -23596,52 +23597,11 @@
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/node-mocks-http": {
- "version": "1.16.2",
- "resolved": "https://registry.npmjs.org/node-mocks-http/-/node-mocks-http-1.16.2.tgz",
- "integrity": "sha512-2Sh6YItRp1oqewZNlck3LaFp5vbyW2u51HX2p1VLxQ9U/bG90XV8JY9O7Nk+HDd6OOn/oV3nA5Tx5k4Rki0qlg==",
- "dependencies": {
- "accepts": "^1.3.7",
- "content-disposition": "^0.5.3",
- "depd": "^1.1.0",
- "fresh": "^0.5.2",
- "merge-descriptors": "^1.0.1",
- "methods": "^1.1.2",
- "mime": "^1.3.4",
- "parseurl": "^1.3.3",
- "range-parser": "^1.2.0",
- "type-is": "^1.6.18"
- },
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "@types/express": "^4.17.21 || ^5.0.0",
- "@types/node": "*"
- },
- "peerDependenciesMeta": {
- "@types/express": {
- "optional": true
- },
- "@types/node": {
- "optional": true
- }
- }
- },
"node_modules/node-releases": {
"version": "2.0.14",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
"integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw=="
},
- "node_modules/nodemailer": {
- "version": "6.9.7",
- "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.7.tgz",
- "integrity": "sha512-rUtR77ksqex/eZRLmQ21LKVH5nAAsVicAtAYudK7JgwenEDZ0UIQ1adUGqErz7sMkWYxWTTU1aeP2Jga6WQyJw==",
- "peer": true,
- "engines": {
- "node": ">=6.0.0"
- }
- },
"node_modules/non-layered-tidy-tree-layout": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz",
@@ -24313,11 +24273,6 @@
}
}
},
- "node_modules/openapi-types": {
- "version": "12.1.3",
- "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-12.1.3.tgz",
- "integrity": "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw=="
- },
"node_modules/openapi3-ts": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/openapi3-ts/-/openapi3-ts-2.0.2.tgz",
@@ -25072,14 +25027,6 @@
"url": "https://ko-fi.com/killymxi"
}
},
- "node_modules/parseurl": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
- "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
- "engines": {
- "node": ">= 0.8"
- }
- },
"node_modules/partysocket": {
"version": "0.0.17",
"resolved": "https://registry.npmjs.org/partysocket/-/partysocket-0.0.17.tgz",
@@ -26558,14 +26505,6 @@
"safe-buffer": "^5.1.0"
}
},
- "node_modules/range-parser": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
- "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
- "engines": {
- "node": ">= 0.6"
- }
- },
"node_modules/raw-body": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.1.tgz",
@@ -27463,14 +27402,6 @@
"react-dom": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0"
}
},
- "node_modules/react-ssr-prepass": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/react-ssr-prepass/-/react-ssr-prepass-1.5.0.tgz",
- "integrity": "sha512-yFNHrlVEReVYKsLI5lF05tZoHveA5pGzjFbFJY/3pOqqjGOmMmqx83N4hIjN2n6E1AOa+eQEUxs3CgRnPmT0RQ==",
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
- }
- },
"node_modules/react-style-singleton": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz",
@@ -29245,59 +29176,6 @@
"loose-envify": "^1.1.0"
}
},
- "node_modules/schema-utils": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
- "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@types/json-schema": "^7.0.8",
- "ajv": "^6.12.5",
- "ajv-keywords": "^3.5.2"
- },
- "engines": {
- "node": ">= 10.13.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- }
- },
- "node_modules/schema-utils/node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/schema-utils/node_modules/ajv-keywords": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
- "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
- "dev": true,
- "peer": true,
- "peerDependencies": {
- "ajv": "^6.9.1"
- }
- },
- "node_modules/schema-utils/node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true,
- "peer": true
- },
"node_modules/scroll-into-view-if-needed": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.1.0.tgz",
@@ -29397,16 +29275,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/serialize-javascript": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz",
- "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "randombytes": "^2.1.0"
- }
- },
"node_modules/set-blocking": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
@@ -30674,18 +30542,6 @@
"react-dom": ">=16.8.0 <19"
}
},
- "node_modules/swagger-ui-react/node_modules/@types/react": {
- "version": "18.2.48",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.48.tgz",
- "integrity": "sha512-qboRCl6Ie70DQQG9hhNREz81jqC1cs9EVNcjQ1AU+jH6NFfSAhVVbrrY/+nSF+Bsk4AOwm9Qa61InvMCyV+H3w==",
- "optional": true,
- "peer": true,
- "dependencies": {
- "@types/prop-types": "*",
- "@types/scheduler": "*",
- "csstype": "^3.0.2"
- }
- },
"node_modules/swagger-ui-react/node_modules/randexp": {
"version": "0.5.3",
"resolved": "https://registry.npmjs.org/randexp/-/randexp-0.5.3.tgz",
@@ -30935,67 +30791,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/terser": {
- "version": "5.31.1",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.1.tgz",
- "integrity": "sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@jridgewell/source-map": "^0.3.3",
- "acorn": "^8.8.2",
- "commander": "^2.20.0",
- "source-map-support": "~0.5.20"
- },
- "bin": {
- "terser": "bin/terser"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/terser-webpack-plugin": {
- "version": "5.3.10",
- "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz",
- "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@jridgewell/trace-mapping": "^0.3.20",
- "jest-worker": "^27.4.5",
- "schema-utils": "^3.1.1",
- "serialize-javascript": "^6.0.1",
- "terser": "^5.26.0"
- },
- "engines": {
- "node": ">= 10.13.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- },
- "peerDependencies": {
- "webpack": "^5.1.0"
- },
- "peerDependenciesMeta": {
- "@swc/core": {
- "optional": true
- },
- "esbuild": {
- "optional": true
- },
- "uglify-js": {
- "optional": true
- }
- }
- },
- "node_modules/terser/node_modules/commander": {
- "version": "2.20.3",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
- "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
- "dev": true,
- "peer": true
- },
"node_modules/text-decoder": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.1.0.tgz",
@@ -31334,12 +31129,14 @@
"url": "https://github.com/sponsors/wooorm"
}
},
- "node_modules/trpc-openapi": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/trpc-openapi/-/trpc-openapi-1.2.0.tgz",
- "integrity": "sha512-pfYoCd/3KYXWXvUPZBKJw455OOwngKN/6SIcj7Yit19OMLJ+8yVZkEvGEeg5wUSwfsiTdRsKuvqkRPXVSwV7ew==",
+ "node_modules/trpc-to-openapi": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/trpc-to-openapi/-/trpc-to-openapi-2.0.4.tgz",
+ "integrity": "sha512-jhsTv2oOuZwyKXCSGTXPXRNE6ArT/ArdWTHgxROZRVyikUm/ImLszFzh4jV19J7OVu/6qRfmIihwE3ZY/ZdeVg==",
+ "license": "MIT",
"workspaces": [
".",
+ "examples/with-nextjs-appdir",
"examples/with-nextjs",
"examples/with-express",
"examples/with-interop",
@@ -31351,13 +31148,49 @@
"co-body": "^6.1.0",
"h3": "^1.6.4",
"lodash.clonedeep": "^4.5.0",
- "node-mocks-http": "^1.12.2",
- "openapi-types": "^12.1.1",
- "zod-to-json-schema": "^3.21.1"
+ "openapi3-ts": "4.3.3",
+ "zod-openapi": "^2.19.0"
+ },
+ "optionalDependencies": {
+ "@rollup/rollup-linux-x64-gnu": "4.6.1"
},
"peerDependencies": {
- "@trpc/server": "^10.0.0",
- "zod": "^3.14.4"
+ "@trpc/server": "^11.0.0-rc.648",
+ "zod": "^3.23.8"
+ }
+ },
+ "node_modules/trpc-to-openapi/node_modules/@rollup/rollup-linux-x64-gnu": {
+ "version": "4.6.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.6.1.tgz",
+ "integrity": "sha512-DNGZvZDO5YF7jN5fX8ZqmGLjZEXIJRdJEdTFMhiyXqyXubBa0WVLDWSNlQ5JR2PNgDbEV1VQowhVRUh+74D+RA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/trpc-to-openapi/node_modules/openapi3-ts": {
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/openapi3-ts/-/openapi3-ts-4.3.3.tgz",
+ "integrity": "sha512-LKkzBGJcZ6wdvkKGMoSvpK+0cbN5Xc3XuYkJskO+vjEQWJgs1kgtyUk0pjf8KwPuysv323Er62F5P17XQl96Qg==",
+ "license": "MIT",
+ "dependencies": {
+ "yaml": "^2.4.5"
+ }
+ },
+ "node_modules/trpc-to-openapi/node_modules/yaml": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz",
+ "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==",
+ "license": "ISC",
+ "bin": {
+ "yaml": "bin.mjs"
+ },
+ "engines": {
+ "node": ">= 14"
}
},
"node_modules/ts-api-utils": {
@@ -33395,102 +33228,6 @@
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
"integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
},
- "node_modules/webpack": {
- "version": "5.92.1",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.92.1.tgz",
- "integrity": "sha512-JECQ7IwJb+7fgUFBlrJzbyu3GEuNBcdqr1LD7IbSzwkSmIevTm8PF+wej3Oxuz/JFBUZ6O1o43zsPkwm1C4TmA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@types/eslint-scope": "^3.7.3",
- "@types/estree": "^1.0.5",
- "@webassemblyjs/ast": "^1.12.1",
- "@webassemblyjs/wasm-edit": "^1.12.1",
- "@webassemblyjs/wasm-parser": "^1.12.1",
- "acorn": "^8.7.1",
- "acorn-import-attributes": "^1.9.5",
- "browserslist": "^4.21.10",
- "chrome-trace-event": "^1.0.2",
- "enhanced-resolve": "^5.17.0",
- "es-module-lexer": "^1.2.1",
- "eslint-scope": "5.1.1",
- "events": "^3.2.0",
- "glob-to-regexp": "^0.4.1",
- "graceful-fs": "^4.2.11",
- "json-parse-even-better-errors": "^2.3.1",
- "loader-runner": "^4.2.0",
- "mime-types": "^2.1.27",
- "neo-async": "^2.6.2",
- "schema-utils": "^3.2.0",
- "tapable": "^2.1.1",
- "terser-webpack-plugin": "^5.3.10",
- "watchpack": "^2.4.1",
- "webpack-sources": "^3.2.3"
- },
- "bin": {
- "webpack": "bin/webpack.js"
- },
- "engines": {
- "node": ">=10.13.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- },
- "peerDependenciesMeta": {
- "webpack-cli": {
- "optional": true
- }
- }
- },
- "node_modules/webpack-sources": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
- "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "node_modules/webpack/node_modules/eslint-scope": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
- "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/webpack/node_modules/estraverse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
- "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/webpack/node_modules/watchpack": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz",
- "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "glob-to-regexp": "^0.4.1",
- "graceful-fs": "^4.1.2"
- },
- "engines": {
- "node": ">=10.13.0"
- }
- },
"node_modules/whatwg-fetch": {
"version": "3.6.20",
"resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz",
@@ -34026,12 +33763,16 @@
"zod": "^3.20.2"
}
},
- "node_modules/zod-to-json-schema": {
- "version": "3.24.1",
- "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.1.tgz",
- "integrity": "sha512-3h08nf3Vw3Wl3PK+q3ow/lIil81IT2Oa7YpQyUUDsEWbXveMesdfK1xBd2RhCkynwZndAxixji/7SYJJowr62w==",
+ "node_modules/zod-openapi": {
+ "version": "2.19.0",
+ "resolved": "https://registry.npmjs.org/zod-openapi/-/zod-openapi-2.19.0.tgz",
+ "integrity": "sha512-OUAAyBDPPwZ9u61i4k/LieXUzP2re8kFjqdNh2AvHjsyi/aRNz9leDAtMGcSoSzUT5xUeQoACJufBI6FzzZyxA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=16.11"
+ },
"peerDependencies": {
- "zod": "^3.24.1"
+ "zod": "^3.21.4"
}
},
"node_modules/zwitch": {
@@ -35502,19 +35243,190 @@
"dependencies": {
"@documenso/lib": "*",
"@documenso/prisma": "*",
- "@tanstack/react-query": "^4.32.0",
- "@trpc/client": "^10.36.0",
- "@trpc/next": "^10.36.0",
- "@trpc/react-query": "^10.36.0",
- "@trpc/server": "^10.36.0",
+ "@tanstack/react-query": "5.59.15",
+ "@trpc/client": "11.0.0-rc.648",
+ "@trpc/next": "11.0.0-rc.648",
+ "@trpc/react-query": "11.0.0-rc.648",
+ "@trpc/server": "11.0.0-rc.648",
"@ts-rest/core": "^3.30.5",
"@ts-rest/next": "^3.30.5",
"luxon": "^3.4.0",
"superjson": "^1.13.1",
+ "trpc-to-openapi": "2.0.4",
"ts-pattern": "^5.0.5",
"zod": "3.24.1"
}
},
+ "packages/trpc/node_modules/@next/env": {
+ "version": "15.0.3",
+ "resolved": "https://registry.npmjs.org/@next/env/-/env-15.0.3.tgz",
+ "integrity": "sha512-t9Xy32pjNOvVn2AS+Utt6VmyrshbpfUMhIjFO60gI58deSo/KgLOp31XZ4O+kY/Is8WAGYwA5gR7kOb1eORDBA==",
+ "license": "MIT",
+ "peer": true
+ },
+ "packages/trpc/node_modules/@next/swc-darwin-arm64": {
+ "version": "15.0.3",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.0.3.tgz",
+ "integrity": "sha512-s3Q/NOorCsLYdCKvQlWU+a+GeAd3C8Rb3L1YnetsgwXzhc3UTWrtQpB/3eCjFOdGUj5QmXfRak12uocd1ZiiQw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "peer": true,
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "packages/trpc/node_modules/@next/swc-darwin-x64": {
+ "version": "15.0.3",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.0.3.tgz",
+ "integrity": "sha512-Zxl/TwyXVZPCFSf0u2BNj5sE0F2uR6iSKxWpq4Wlk/Sv9Ob6YCKByQTkV2y6BCic+fkabp9190hyrDdPA/dNrw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "peer": true,
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "packages/trpc/node_modules/@next/swc-linux-arm64-gnu": {
+ "version": "15.0.3",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.0.3.tgz",
+ "integrity": "sha512-T5+gg2EwpsY3OoaLxUIofmMb7ohAUlcNZW0fPQ6YAutaWJaxt1Z1h+8zdl4FRIOr5ABAAhXtBcpkZNwUcKI2fw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "peer": true,
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "packages/trpc/node_modules/@next/swc-linux-arm64-musl": {
+ "version": "15.0.3",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.0.3.tgz",
+ "integrity": "sha512-WkAk6R60mwDjH4lG/JBpb2xHl2/0Vj0ZRu1TIzWuOYfQ9tt9NFsIinI1Epma77JVgy81F32X/AeD+B2cBu/YQA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "peer": true,
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "packages/trpc/node_modules/@next/swc-linux-x64-gnu": {
+ "version": "15.0.3",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.0.3.tgz",
+ "integrity": "sha512-gWL/Cta1aPVqIGgDb6nxkqy06DkwJ9gAnKORdHWX1QBbSZZB+biFYPFti8aKIQL7otCE1pjyPaXpFzGeG2OS2w==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "peer": true,
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "packages/trpc/node_modules/@next/swc-linux-x64-musl": {
+ "version": "15.0.3",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.0.3.tgz",
+ "integrity": "sha512-QQEMwFd8r7C0GxQS62Zcdy6GKx999I/rTO2ubdXEe+MlZk9ZiinsrjwoiBL5/57tfyjikgh6GOU2WRQVUej3UA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "peer": true,
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "packages/trpc/node_modules/@next/swc-win32-arm64-msvc": {
+ "version": "15.0.3",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.0.3.tgz",
+ "integrity": "sha512-9TEp47AAd/ms9fPNgtgnT7F3M1Hf7koIYYWCMQ9neOwjbVWJsHZxrFbI3iEDJ8rf1TDGpmHbKxXf2IFpAvheIQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "peer": true,
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "packages/trpc/node_modules/@next/swc-win32-x64-msvc": {
+ "version": "15.0.3",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.0.3.tgz",
+ "integrity": "sha512-VNAz+HN4OGgvZs6MOoVfnn41kBzT+M+tB+OK4cww6DNyWS6wKaDpaAm/qLeOUbnMh0oVx1+mg0uoYARF69dJyA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "peer": true,
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "packages/trpc/node_modules/@trpc/next": {
+ "version": "11.0.0-rc.648",
+ "resolved": "https://registry.npmjs.org/@trpc/next/-/next-11.0.0-rc.648.tgz",
+ "integrity": "sha512-RgsiznMCc1xpMAVhp8WtgkFO7KyvRWqlqqb2qADCgLuAIjENjGoSEL9BZWiqCKLVrmQYsC42plUUj5QbwMPFuQ==",
+ "funding": [
+ "https://trpc.io/sponsor"
+ ],
+ "license": "MIT",
+ "peerDependencies": {
+ "@tanstack/react-query": "^5.59.15",
+ "@trpc/client": "11.0.0-rc.648+77b4d8920",
+ "@trpc/react-query": "11.0.0-rc.648+77b4d8920",
+ "@trpc/server": "11.0.0-rc.648+77b4d8920",
+ "next": "15.0.3",
+ "react": ">=16.8.0",
+ "react-dom": ">=16.8.0",
+ "typescript": ">=5.6.2"
+ },
+ "peerDependenciesMeta": {
+ "@tanstack/react-query": {
+ "optional": true
+ },
+ "@trpc/react-query": {
+ "optional": true
+ }
+ }
+ },
"packages/trpc/node_modules/@ts-rest/next": {
"version": "3.30.5",
"resolved": "https://registry.npmjs.org/@ts-rest/next/-/next-3.30.5.tgz",
@@ -35530,6 +35442,169 @@
}
}
},
+ "packages/trpc/node_modules/next": {
+ "version": "15.0.3",
+ "resolved": "https://registry.npmjs.org/next/-/next-15.0.3.tgz",
+ "integrity": "sha512-ontCbCRKJUIoivAdGB34yCaOcPgYXr9AAkV/IwqFfWWTXEPUgLYkSkqBhIk9KK7gGmgjc64B+RdoeIDM13Irnw==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@next/env": "15.0.3",
+ "@swc/counter": "0.1.3",
+ "@swc/helpers": "0.5.13",
+ "busboy": "1.6.0",
+ "caniuse-lite": "^1.0.30001579",
+ "postcss": "8.4.31",
+ "styled-jsx": "5.1.6"
+ },
+ "bin": {
+ "next": "dist/bin/next"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^19.8.0 || >= 20.0.0"
+ },
+ "optionalDependencies": {
+ "@next/swc-darwin-arm64": "15.0.3",
+ "@next/swc-darwin-x64": "15.0.3",
+ "@next/swc-linux-arm64-gnu": "15.0.3",
+ "@next/swc-linux-arm64-musl": "15.0.3",
+ "@next/swc-linux-x64-gnu": "15.0.3",
+ "@next/swc-linux-x64-musl": "15.0.3",
+ "@next/swc-win32-arm64-msvc": "15.0.3",
+ "@next/swc-win32-x64-msvc": "15.0.3",
+ "sharp": "^0.33.5"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.1.0",
+ "@playwright/test": "^1.41.2",
+ "babel-plugin-react-compiler": "*",
+ "react": "^18.2.0 || 19.0.0-rc-66855b96-20241106",
+ "react-dom": "^18.2.0 || 19.0.0-rc-66855b96-20241106",
+ "sass": "^1.3.0"
+ },
+ "peerDependenciesMeta": {
+ "@opentelemetry/api": {
+ "optional": true
+ },
+ "@playwright/test": {
+ "optional": true
+ },
+ "babel-plugin-react-compiler": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ }
+ }
+ },
+ "packages/trpc/node_modules/next/node_modules/styled-jsx": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz",
+ "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "client-only": "0.0.1"
+ },
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "peerDependencies": {
+ "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0"
+ },
+ "peerDependenciesMeta": {
+ "@babel/core": {
+ "optional": true
+ },
+ "babel-plugin-macros": {
+ "optional": true
+ }
+ }
+ },
+ "packages/trpc/node_modules/postcss": {
+ "version": "8.4.31",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
+ "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "nanoid": "^3.3.6",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "packages/trpc/node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "license": "ISC",
+ "optional": true,
+ "peer": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "packages/trpc/node_modules/sharp": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz",
+ "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==",
+ "hasInstallScript": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "color": "^4.2.3",
+ "detect-libc": "^2.0.3",
+ "semver": "^7.6.3"
+ },
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-darwin-arm64": "0.33.5",
+ "@img/sharp-darwin-x64": "0.33.5",
+ "@img/sharp-libvips-darwin-arm64": "1.0.4",
+ "@img/sharp-libvips-darwin-x64": "1.0.4",
+ "@img/sharp-libvips-linux-arm": "1.0.5",
+ "@img/sharp-libvips-linux-arm64": "1.0.4",
+ "@img/sharp-libvips-linux-s390x": "1.0.4",
+ "@img/sharp-libvips-linux-x64": "1.0.4",
+ "@img/sharp-libvips-linuxmusl-arm64": "1.0.4",
+ "@img/sharp-libvips-linuxmusl-x64": "1.0.4",
+ "@img/sharp-linux-arm": "0.33.5",
+ "@img/sharp-linux-arm64": "0.33.5",
+ "@img/sharp-linux-s390x": "0.33.5",
+ "@img/sharp-linux-x64": "0.33.5",
+ "@img/sharp-linuxmusl-arm64": "0.33.5",
+ "@img/sharp-linuxmusl-x64": "0.33.5",
+ "@img/sharp-wasm32": "0.33.5",
+ "@img/sharp-win32-ia32": "0.33.5",
+ "@img/sharp-win32-x64": "0.33.5"
+ }
+ },
"packages/tsconfig": {
"name": "@documenso/tsconfig",
"version": "0.0.0",
@@ -35640,6 +35715,21 @@
"engines": {
"node": ">=6"
}
+ },
+ "packages/trpc/node_modules/@next/swc-win32-ia32-msvc": {
+ "version": "14.2.6",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.6.tgz",
+ "integrity": "sha512-hNukAxq7hu4o5/UjPp5jqoBEtrpCbOmnUqZSKNJG8GrUVzfq0ucdhQFVrHcLRMvQcwqqDh1a5AJN9ORnNDpgBQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
}
}
}
diff --git a/package.json b/package.json
index 015d079e4..b9be39ea7 100644
--- a/package.json
+++ b/package.json
@@ -65,13 +65,13 @@
"dependencies": {
"@documenso/pdf-sign": "^0.1.0",
"@documenso/prisma": "^0.0.0",
- "typescript": "5.6.2",
"@lingui/core": "^4.11.3",
"inngest-cli": "^0.29.1",
"luxon": "^3.5.0",
"mupdf": "^1.0.0",
"next-runtime-env": "^3.2.0",
"react": "^18",
+ "typescript": "5.6.2",
"zod": "3.24.1"
},
"overrides": {
@@ -81,4 +81,4 @@
"trigger.dev": {
"endpointId": "documenso-app"
}
-}
\ No newline at end of file
+}
diff --git a/packages/lib/client-only/hooks/use-copy-share-link.ts b/packages/lib/client-only/hooks/use-copy-share-link.ts
index cff552e8f..4638e4e49 100644
--- a/packages/lib/client-only/hooks/use-copy-share-link.ts
+++ b/packages/lib/client-only/hooks/use-copy-share-link.ts
@@ -11,7 +11,7 @@ export type UseCopyShareLinkOptions = {
export function useCopyShareLink({ onSuccess, onError }: UseCopyShareLinkOptions) {
const [, copyToClipboard] = useCopyToClipboard();
- const { mutateAsync: createOrGetShareLink, isLoading: isCreatingShareLink } =
+ const { mutateAsync: createOrGetShareLink, isPending: isCreatingShareLink } =
trpc.shareLink.createOrGetShareLink.useMutation();
/**
diff --git a/packages/lib/errors/app-error.ts b/packages/lib/errors/app-error.ts
index 548ba8388..06184a6a5 100644
--- a/packages/lib/errors/app-error.ts
+++ b/packages/lib/errors/app-error.ts
@@ -1,9 +1,6 @@
-import type { TRPCError } from '@trpc/server';
import { match } from 'ts-pattern';
import { z } from 'zod';
-import { TRPCClientError } from '@documenso/trpc/client';
-
/**
* Generic application error codes.
*/
@@ -24,24 +21,22 @@ export enum AppErrorCode {
'PREMIUM_PROFILE_URL' = 'PREMIUM_PROFILE_URL',
}
-export const genericErrorCodeToTrpcErrorCodeMap: Record<
- string,
- { code: TRPCError['code']; status: number }
-> = {
- [AppErrorCode.ALREADY_EXISTS]: { code: 'BAD_REQUEST', status: 400 },
- [AppErrorCode.EXPIRED_CODE]: { code: 'BAD_REQUEST', status: 400 },
- [AppErrorCode.INVALID_BODY]: { code: 'BAD_REQUEST', status: 400 },
- [AppErrorCode.INVALID_REQUEST]: { code: 'BAD_REQUEST', status: 400 },
- [AppErrorCode.NOT_FOUND]: { code: 'NOT_FOUND', status: 404 },
- [AppErrorCode.NOT_SETUP]: { code: 'BAD_REQUEST', status: 400 },
- [AppErrorCode.UNAUTHORIZED]: { code: 'UNAUTHORIZED', status: 401 },
- [AppErrorCode.UNKNOWN_ERROR]: { code: 'INTERNAL_SERVER_ERROR', status: 500 },
- [AppErrorCode.RETRY_EXCEPTION]: { code: 'INTERNAL_SERVER_ERROR', status: 500 },
- [AppErrorCode.SCHEMA_FAILED]: { code: 'INTERNAL_SERVER_ERROR', status: 500 },
- [AppErrorCode.TOO_MANY_REQUESTS]: { code: 'TOO_MANY_REQUESTS', status: 429 },
- [AppErrorCode.PROFILE_URL_TAKEN]: { code: 'BAD_REQUEST', status: 400 },
- [AppErrorCode.PREMIUM_PROFILE_URL]: { code: 'BAD_REQUEST', status: 400 },
-};
+export const genericErrorCodeToTrpcErrorCodeMap: Record =
+ {
+ [AppErrorCode.ALREADY_EXISTS]: { code: 'BAD_REQUEST', status: 400 },
+ [AppErrorCode.EXPIRED_CODE]: { code: 'BAD_REQUEST', status: 400 },
+ [AppErrorCode.INVALID_BODY]: { code: 'BAD_REQUEST', status: 400 },
+ [AppErrorCode.INVALID_REQUEST]: { code: 'BAD_REQUEST', status: 400 },
+ [AppErrorCode.NOT_FOUND]: { code: 'NOT_FOUND', status: 404 },
+ [AppErrorCode.NOT_SETUP]: { code: 'BAD_REQUEST', status: 400 },
+ [AppErrorCode.UNAUTHORIZED]: { code: 'UNAUTHORIZED', status: 401 },
+ [AppErrorCode.UNKNOWN_ERROR]: { code: 'INTERNAL_SERVER_ERROR', status: 500 },
+ [AppErrorCode.RETRY_EXCEPTION]: { code: 'INTERNAL_SERVER_ERROR', status: 500 },
+ [AppErrorCode.SCHEMA_FAILED]: { code: 'INTERNAL_SERVER_ERROR', status: 500 },
+ [AppErrorCode.TOO_MANY_REQUESTS]: { code: 'TOO_MANY_REQUESTS', status: 429 },
+ [AppErrorCode.PROFILE_URL_TAKEN]: { code: 'BAD_REQUEST', status: 400 },
+ [AppErrorCode.PREMIUM_PROFILE_URL]: { code: 'BAD_REQUEST', status: 400 },
+ };
export const ZAppErrorJsonSchema = z.object({
code: z.string(),
@@ -87,6 +82,8 @@ export class AppError extends Error {
*/
statusCode?: number;
+ name = 'AppError';
+
/**
* Create a new AppError.
*
@@ -107,17 +104,18 @@ export class AppError extends Error {
*
* @param error An unknown type.
*/
- static parseError(error: unknown): AppError {
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ static parseError(error: any): AppError {
if (error instanceof AppError) {
return error;
}
// Handle TRPC errors.
- if (error instanceof TRPCClientError) {
+ if (error?.name === 'TRPCClientError') {
const parsedJsonError = AppError.parseFromJSON(error.data?.appError);
const fallbackError = new AppError(AppErrorCode.UNKNOWN_ERROR, {
- message: error.message,
+ message: error?.message,
});
return parsedJsonError || fallbackError;
diff --git a/packages/lib/server-only/document/reject-document-with-token.ts b/packages/lib/server-only/document/reject-document-with-token.ts
index 3f6ab856c..004211d4f 100644
--- a/packages/lib/server-only/document/reject-document-with-token.ts
+++ b/packages/lib/server-only/document/reject-document-with-token.ts
@@ -1,10 +1,10 @@
import { SigningStatus } from '@prisma/client';
-import { TRPCError } from '@trpc/server';
import { jobs } from '@documenso/lib/jobs/client';
import { prisma } from '@documenso/prisma';
import { WebhookTriggerEvents } from '@documenso/prisma/client';
+import { AppError, AppErrorCode } from '../../errors/app-error';
import { DOCUMENT_AUDIT_LOG_TYPE } from '../../types/document-audit-logs';
import {
ZWebhookDocumentSchema,
@@ -47,8 +47,7 @@ export async function rejectDocumentWithToken({
const document = recipient?.document;
if (!recipient || !document) {
- throw new TRPCError({
- code: 'NOT_FOUND',
+ throw new AppError(AppErrorCode.NOT_FOUND, {
message: 'Document or recipient not found',
});
}
diff --git a/packages/lib/server-only/document/send-delete-email.ts b/packages/lib/server-only/document/send-delete-email.ts
index 1a8514993..d92d9d263 100644
--- a/packages/lib/server-only/document/send-delete-email.ts
+++ b/packages/lib/server-only/document/send-delete-email.ts
@@ -8,6 +8,7 @@ import { prisma } from '@documenso/prisma';
import { getI18nInstance } from '../../client-only/providers/i18n.server';
import { NEXT_PUBLIC_WEBAPP_URL } from '../../constants/app';
+import { AppError, AppErrorCode } from '../../errors/app-error';
import { extractDerivedDocumentEmailSettings } from '../../types/document-email';
import { renderEmailWithI18N } from '../../utils/render-email-with-i18n';
import { teamGlobalSettingsToBranding } from '../../utils/team-global-settings-to-branding';
@@ -34,7 +35,9 @@ export const sendDeleteEmail = async ({ documentId, reason }: SendDeleteEmailOpt
});
if (!document) {
- throw new Error('Document not found');
+ throw new AppError(AppErrorCode.NOT_FOUND, {
+ message: 'Document not found',
+ });
}
const isDocumentDeletedEmailEnabled = extractDerivedDocumentEmailSettings(
diff --git a/packages/lib/server-only/document/super-delete-document.ts b/packages/lib/server-only/document/super-delete-document.ts
index 5752a2bdb..c427ab724 100644
--- a/packages/lib/server-only/document/super-delete-document.ts
+++ b/packages/lib/server-only/document/super-delete-document.ts
@@ -12,6 +12,7 @@ import { DocumentStatus, SendStatus } from '@documenso/prisma/client';
import { getI18nInstance } from '../../client-only/providers/i18n.server';
import { NEXT_PUBLIC_WEBAPP_URL } from '../../constants/app';
import { FROM_ADDRESS, FROM_NAME } from '../../constants/email';
+import { AppError, AppErrorCode } from '../../errors/app-error';
import { DOCUMENT_AUDIT_LOG_TYPE } from '../../types/document-audit-logs';
import { extractDerivedDocumentEmailSettings } from '../../types/document-email';
import type { RequestMetadata } from '../../universal/extract-request-metadata';
@@ -42,7 +43,9 @@ export const superDeleteDocument = async ({ id, requestMetadata }: SuperDeleteDo
});
if (!document) {
- throw new Error('Document not found');
+ throw new AppError(AppErrorCode.NOT_FOUND, {
+ message: 'Document not found',
+ });
}
const { status, user } = document;
diff --git a/packages/lib/server-only/public-api/create-api-token.ts b/packages/lib/server-only/public-api/create-api-token.ts
index 3d54eb26d..e40dccb0c 100644
--- a/packages/lib/server-only/public-api/create-api-token.ts
+++ b/packages/lib/server-only/public-api/create-api-token.ts
@@ -6,6 +6,7 @@ import { TeamMemberRole } from '@documenso/prisma/client';
// temporary choice for testing only
import * as timeConstants from '../../constants/time';
+import { AppError, AppErrorCode } from '../../errors/app-error';
import { alphaid } from '../../universal/id';
import { hashString } from '../auth/hash';
@@ -42,7 +43,9 @@ export const createApiToken = async ({
});
if (!member) {
- throw new Error('You do not have permission to create a token for this team');
+ throw new AppError(AppErrorCode.UNAUTHORIZED, {
+ message: 'You do not have permission to create a token for this team',
+ });
}
}
@@ -56,10 +59,6 @@ export const createApiToken = async ({
},
});
- if (!storedToken) {
- throw new Error('Failed to create the API token');
- }
-
return {
id: storedToken.id,
token: apiToken,
diff --git a/packages/lib/server-only/user/delete-user.ts b/packages/lib/server-only/user/delete-user.ts
index 71f579c26..7748f9a6d 100644
--- a/packages/lib/server-only/user/delete-user.ts
+++ b/packages/lib/server-only/user/delete-user.ts
@@ -1,6 +1,7 @@
import { prisma } from '@documenso/prisma';
import { DocumentStatus } from '@documenso/prisma/client';
+import { AppError, AppErrorCode } from '../../errors/app-error';
import { deletedAccountServiceAccount } from './service-accounts/deleted-account';
export type DeleteUserOptions = {
@@ -15,7 +16,9 @@ export const deleteUser = async ({ id }: DeleteUserOptions) => {
});
if (!user) {
- throw new Error(`User with ID ${id} not found`);
+ throw new AppError(AppErrorCode.NOT_FOUND, {
+ message: `User with ID ${id} not found`,
+ });
}
const serviceAccount = await deletedAccountServiceAccount();
diff --git a/packages/lib/translations/de/web.po b/packages/lib/translations/de/web.po
index 40416c29c..03a5f1893 100644
--- a/packages/lib/translations/de/web.po
+++ b/packages/lib/translations/de/web.po
@@ -108,7 +108,7 @@ msgstr "{0} ist dem Team {teamName} bei Documenso beigetreten"
msgid "{0} left the team {teamName} on Documenso"
msgstr "{0} hat das Team {teamName} bei Documenso verlassen"
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:150
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:145
msgid "{0} of {1} documents remaining this month."
msgstr "{0} von {1} Dokumenten verbleibend in diesem Monat."
@@ -492,7 +492,7 @@ msgstr "Ein Mittel, um Dokumente für Ihre Unterlagen zu drucken oder herunterzu
msgid "A new member has joined your team"
msgstr "Ein neues Mitglied ist deinem Team beigetreten"
-#: apps/web/src/components/forms/token.tsx:127
+#: apps/web/src/components/forms/token.tsx:128
msgid "A new token was created successfully."
msgstr "Ein neuer Token wurde erfolgreich erstellt."
@@ -595,7 +595,7 @@ msgstr "Team-Einladung akzeptiert"
msgid "Account Authentication"
msgstr "Kontowauthentifizierung"
-#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:50
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:51
#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:47
msgid "Account deleted"
msgstr "Konto gelöscht"
@@ -617,19 +617,19 @@ msgid "Acknowledgment"
msgstr "Bestätigung"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:107
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:98
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:97
#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:117
#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:159
-#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:116
+#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:115
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:46
msgid "Action"
msgstr "Aktion"
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:79
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:176
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:175
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:140
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:131
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:140
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:130
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:139
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:116
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:125
msgid "Actions"
@@ -868,16 +868,12 @@ msgstr "Eine E-Mail mit einer Einladung wird an jedes Mitglied gesendet."
msgid "An email requesting the transfer of this team has been sent."
msgstr "Eine E-Mail, in der die Übertragung dieses Teams angefordert wird, wurde gesendet."
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:60
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:83
-#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:59
#: apps/web/src/app/(signing)/sign/[token]/complete/claim-account.tsx:100
#: apps/web/src/components/forms/avatar-image.tsx:122
#: apps/web/src/components/forms/password.tsx:92
-#: apps/web/src/components/forms/profile.tsx:81
#: apps/web/src/components/forms/reset-password.tsx:95
#: apps/web/src/components/forms/signup.tsx:112
-#: apps/web/src/components/forms/token.tsx:137
+#: apps/web/src/components/forms/token.tsx:146
#: apps/web/src/components/forms/v2/signup.tsx:166
msgid "An error occurred"
msgstr "Ein Fehler ist aufgetreten"
@@ -907,6 +903,10 @@ msgstr "Ein Fehler ist aufgetreten, während das Dokument aus der Vorlage erstel
msgid "An error occurred while creating the webhook. Please try again."
msgstr "Ein Fehler ist aufgetreten, während der Webhook erstellt wurde. Bitte versuchen Sie es erneut."
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:63
+msgid "An error occurred while deleting the user."
+msgstr ""
+
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:120
msgid "An error occurred while disabling direct link signing."
msgstr "Ein Fehler ist aufgetreten, während das direkte Links-Signieren deaktiviert wurde."
@@ -1007,13 +1007,12 @@ msgstr "Ein Fehler ist aufgetreten, während die Unterschrift aktualisiert wurde
msgid "An error occurred while updating your profile."
msgstr "Ein Fehler ist aufgetreten, während dein Profil aktualisiert wurde."
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:117
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:108
msgid "An error occurred while uploading your document."
msgstr "Ein Fehler ist aufgetreten, während dein Dokument hochgeladen wurde."
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:66
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:89
-#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:65
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:58
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:81
#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:55
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:54
#: apps/web/src/components/(dashboard)/common/command-menu.tsx:301
@@ -1030,7 +1029,7 @@ msgstr "Ein Fehler ist aufgetreten, während dein Dokument hochgeladen wurde."
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:100
#: apps/web/src/components/(teams)/forms/update-team-form.tsx:93
#: apps/web/src/components/forms/avatar-image.tsx:94
-#: apps/web/src/components/forms/profile.tsx:87
+#: apps/web/src/components/forms/profile.tsx:79
#: apps/web/src/components/forms/public-profile-claim-dialog.tsx:113
#: apps/web/src/components/forms/public-profile-form.tsx:104
#: apps/web/src/components/forms/signin.tsx:249
@@ -1040,7 +1039,6 @@ msgstr "Ein Fehler ist aufgetreten, während dein Dokument hochgeladen wurde."
#: apps/web/src/components/forms/signin.tsx:302
#: apps/web/src/components/forms/signup.tsx:124
#: apps/web/src/components/forms/signup.tsx:138
-#: apps/web/src/components/forms/token.tsx:143
#: apps/web/src/components/forms/v2/signup.tsx:187
#: apps/web/src/components/forms/v2/signup.tsx:201
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:140
@@ -1052,11 +1050,11 @@ msgstr "Es ist ein unbekannter Fehler aufgetreten"
msgid "Any payment methods attached to this team will remain attached to this team. Please contact us if you need to update this information."
msgstr "Alle Zahlungsmethoden, die mit diesem Team verbunden sind, bleiben diesem Team zugeordnet. Bitte kontaktiere uns, wenn du diese Informationen aktualisieren möchtest."
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:220
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:219
msgid "Any Source"
msgstr "Jede Quelle"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:200
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:199
msgid "Any Status"
msgstr "Jeder Status"
@@ -1169,7 +1167,7 @@ msgstr "Zurück"
msgid "Back to Documents"
msgstr "Zurück zu Dokumenten"
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:146
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:137
msgid "Background Color"
msgstr "Hintergrundfarbe"
@@ -1182,7 +1180,7 @@ msgstr "Backup-Code"
msgid "Backup codes"
msgstr "Backup-Codes"
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:74
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:73
msgid "Banner Updated"
msgstr "Banner aktualisiert"
@@ -1219,7 +1217,7 @@ msgstr "Markenpräferenzen"
msgid "Branding preferences updated"
msgstr "Markenpräferenzen aktualisiert"
-#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:97
+#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:96
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:48
msgid "Browser"
msgstr "Browser"
@@ -1461,7 +1459,7 @@ msgstr "Unterzeichnung abschließen"
msgid "Complete Viewing"
msgstr "Betrachten abschließen"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:203
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:202
#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:77
#: apps/web/src/components/formatter/document-status.tsx:28
#: packages/email/template-components/template-document-completed.tsx:35
@@ -1544,7 +1542,7 @@ msgstr "Zustimmung zu elektronischen Transaktionen"
msgid "Contact Information"
msgstr "Kontaktinformationen"
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:189
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:180
msgid "Content"
msgstr "Inhalt"
@@ -1742,7 +1740,7 @@ msgstr "Erstellen Sie Ihr Konto und beginnen Sie mit dem modernen Dokumentensign
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:36
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:48
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:63
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:104
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:103
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:35
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:56
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:272
@@ -1786,7 +1784,7 @@ msgstr "Täglich"
msgid "Dark Mode"
msgstr "Dunkelmodus"
-#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:68
+#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:67
#: apps/web/src/app/(signing)/sign/[token]/date-field.tsx:148
#: packages/ui/primitives/document-flow/add-fields.tsx:945
#: packages/ui/primitives/document-flow/types.ts:53
@@ -1851,25 +1849,25 @@ msgstr "löschen {0}"
msgid "delete {teamName}"
msgstr "löschen {teamName}"
-#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:136
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:133
msgid "Delete account"
msgstr "Konto löschen"
-#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:97
-#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:104
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:94
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:101
#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:72
#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:86
#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:93
msgid "Delete Account"
msgstr "Konto löschen"
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:135
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:125
msgid "Delete document"
msgstr "Dokument löschen"
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:85
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:98
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:105
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:75
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:88
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:95
msgid "Delete Document"
msgstr "Dokument löschen"
@@ -1886,11 +1884,11 @@ msgstr "Team löschen"
msgid "Delete team member"
msgstr "Teammitglied löschen"
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:88
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:78
msgid "Delete the document. This action is irreversible so proceed with caution."
msgstr "Löschen Sie das Dokument. Diese Aktion ist irreversibel, daher seien Sie vorsichtig."
-#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:86
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:83
msgid "Delete the users account and all its contents. This action is irreversible and will cancel their subscription, so proceed with caution."
msgstr "Löschen Sie das Benutzerkonto und seinen gesamten Inhalt. Diese Aktion ist irreversibel und wird das Abonnement kündigen, seien Sie also vorsichtig."
@@ -1915,7 +1913,7 @@ msgstr "Konto wird gelöscht..."
msgid "Details"
msgstr "Einzelheiten"
-#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:73
+#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:72
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:244
msgid "Device"
msgstr "Gerät"
@@ -1934,8 +1932,8 @@ msgstr "Direkter Link"
msgid "Direct link"
msgstr "Direkter Link"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:155
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:226
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:154
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:225
msgid "Direct Link"
msgstr "Direkter Link"
@@ -2060,7 +2058,7 @@ msgstr "Dokument genehmigt"
#: apps/web/src/app/(signing)/sign/[token]/no-longer-available.tsx:40
#: packages/lib/server-only/document/delete-document.ts:251
-#: packages/lib/server-only/document/super-delete-document.ts:98
+#: packages/lib/server-only/document/super-delete-document.ts:101
msgid "Document Cancelled"
msgstr "Dokument storniert"
@@ -2101,7 +2099,7 @@ msgstr "Dokument erstellt mit einem <0>direkten Link0>"
msgid "Document Creation"
msgstr "Dokumenterstellung"
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:51
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:50
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:182
#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:60
#: packages/lib/utils/document-audit-logs.ts:306
@@ -2112,7 +2110,7 @@ msgstr "Dokument gelöscht"
msgid "Document deleted email"
msgstr "E-Mail zum Löschen des Dokuments"
-#: packages/lib/server-only/document/send-delete-email.ts:82
+#: packages/lib/server-only/document/send-delete-email.ts:85
msgid "Document Deleted!"
msgstr "Dokument gelöscht!"
@@ -2302,7 +2300,7 @@ msgstr "Auditprotokolle herunterladen"
msgid "Download Certificate"
msgstr "Zertifikat herunterladen"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:209
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:208
#: apps/web/src/components/formatter/document-status.tsx:34
#: packages/lib/constants/document.ts:13
msgid "Draft"
@@ -2385,7 +2383,7 @@ msgstr "Offenlegung der elektronischen Unterschrift"
#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:169
#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:153
#: apps/web/src/components/forms/forgot-password.tsx:81
-#: apps/web/src/components/forms/profile.tsx:122
+#: apps/web/src/components/forms/profile.tsx:113
#: apps/web/src/components/forms/signin.tsx:339
#: apps/web/src/components/forms/signup.tsx:176
#: packages/lib/constants/document.ts:28
@@ -2490,7 +2488,7 @@ msgstr "Getippte Unterschrift aktivieren"
msgid "Enable Typed Signatures"
msgstr "Aktivieren Sie getippte Unterschriften"
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:123
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:114
#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:138
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:74
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/[id]/page.tsx:142
@@ -2536,6 +2534,7 @@ msgid "Enter your text here"
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/users/[id]/delete-user-dialog.tsx:66
#: apps/web/src/app/(dashboard)/admin/users/[id]/disable-user-dialog.tsx:60
#: apps/web/src/app/(dashboard)/admin/users/[id]/enable-user-dialog.tsx:60
#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:80
@@ -2544,8 +2543,7 @@ msgstr "Geben Sie hier Ihren Text ein"
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:280
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:325
#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:57
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:110
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:116
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:111
#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:155
#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:186
#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:226
@@ -2666,7 +2664,7 @@ msgstr "Feld nicht unterschrieben"
msgid "Fields"
msgstr "Felder"
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:129
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:124
msgid "File cannot be larger than {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB"
msgstr "Die Datei darf nicht größer als {APP_DOCUMENT_UPLOAD_SIZE_LIMIT} MB sein"
@@ -2706,7 +2704,7 @@ msgstr "Freie Unterschrift"
#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:193
#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:392
#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:272
-#: apps/web/src/components/forms/profile.tsx:110
+#: apps/web/src/components/forms/profile.tsx:101
#: apps/web/src/components/forms/v2/signup.tsx:316
msgid "Full Name"
msgstr "Vollständiger Name"
@@ -2894,10 +2892,6 @@ msgstr "Ungültiger Code. Bitte versuchen Sie es erneut."
msgid "Invalid email"
msgstr "Ungültige E-Mail"
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:104
-msgid "Invalid file"
-msgstr "Ungültige Datei"
-
#: apps/web/src/app/(unauthenticated)/team/verify/email/[token]/page.tsx:33
#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:36
msgid "Invalid link"
@@ -2920,11 +2914,11 @@ msgstr "Einladung akzeptiert!"
msgid "Invitation declined"
msgstr "Einladung abgelehnt"
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:78
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:77
msgid "Invitation has been deleted"
msgstr "Einladung wurde gelöscht"
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:61
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:60
msgid "Invitation has been resent"
msgstr "Einladung wurde erneut gesendet"
@@ -2944,7 +2938,7 @@ msgstr "Mitglieder einladen"
msgid "Invite team members"
msgstr "Teammitglieder einladen"
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:126
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:125
msgid "Invited At"
msgstr "Eingeladen am"
@@ -3641,7 +3635,7 @@ msgid "Payment overdue"
msgstr "Zahlung überfällig"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:131
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:206
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:205
#: apps/web/src/components/(teams)/tables/teams-member-page-data-table.tsx:82
#: apps/web/src/components/(teams)/tables/user-settings-teams-page-data-table.tsx:77
#: apps/web/src/components/document/document-read-only-fields.tsx:89
@@ -3865,7 +3859,7 @@ msgid "Profile is currently <0>visible0>."
msgstr "Profil ist derzeit <0>sichtbar0>."
#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:74
-#: apps/web/src/components/forms/profile.tsx:72
+#: apps/web/src/components/forms/profile.tsx:71
msgid "Profile updated"
msgstr "Profil aktualisiert"
@@ -3956,7 +3950,7 @@ msgid "Recent documents"
msgstr "Neueste Dokumente"
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:63
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:115
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:114
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:275
#: packages/lib/utils/document-audit-logs.ts:354
#: packages/lib/utils/document-audit-logs.ts:369
@@ -4071,7 +4065,7 @@ msgstr "Erinnerung: Bitte {recipientActionVerb} dein Dokument"
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:89
#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:159
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:54
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:164
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:163
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:165
#: apps/web/src/components/forms/avatar-image.tsx:166
#: packages/ui/primitives/document-flow/add-fields.tsx:1128
@@ -4112,7 +4106,7 @@ msgid "Reseal document"
msgstr "Dokument wieder versiegeln"
#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:118
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:152
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:151
#: packages/ui/primitives/document-flow/add-subject.tsx:84
msgid "Resend"
msgstr "Erneut senden"
@@ -4197,7 +4191,7 @@ msgstr "Zugriff widerrufen"
#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:318
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:163
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:80
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:121
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:120
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:103
msgid "Role"
msgstr "Rolle"
@@ -4529,7 +4523,7 @@ msgstr "Registrieren mit OIDC"
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:286
#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:422
#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:301
-#: apps/web/src/components/forms/profile.tsx:132
+#: apps/web/src/components/forms/profile.tsx:123
#: packages/ui/primitives/document-flow/add-fields.tsx:841
#: packages/ui/primitives/document-flow/field-icon.tsx:52
#: packages/ui/primitives/document-flow/types.ts:49
@@ -4627,7 +4621,7 @@ msgstr "Registrierungen sind deaktiviert."
msgid "Since {0}"
msgstr "Seit {0}"
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:102
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:93
msgid "Site Banner"
msgstr "Website Banner"
@@ -4677,8 +4671,8 @@ msgstr "Einige Unterzeichner haben noch kein Unterschriftsfeld zugewiesen bekomm
#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:64
#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:83
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:33
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:66
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:83
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:65
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:82
#: apps/web/src/components/(teams)/team-billing-portal-button.tsx:29
#: packages/ui/components/document/document-share-button.tsx:51
msgid "Something went wrong"
@@ -4717,6 +4711,10 @@ msgstr "Etwas ist schiefgelaufen!"
msgid "Something went wrong."
msgstr "Etwas ist schief gelaufen."
+#: apps/web/src/components/forms/token.tsx:143
+msgid "Something went wrong. Please try again later."
+msgstr ""
+
#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:240
#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:154
msgid "Something went wrong. Please try again or contact support."
@@ -4730,7 +4728,7 @@ msgstr "Entschuldigung, wir konnten die Prüfprotokolle nicht herunterladen. Bit
msgid "Sorry, we were unable to download the certificate. Please try again later."
msgstr "Entschuldigung, wir konnten das Zertifikat nicht herunterladen. Bitte versuchen Sie es später erneut."
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:133
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:132
msgid "Source"
msgstr "Quelle"
@@ -4741,7 +4739,7 @@ msgstr "Statistiken"
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:81
#: apps/web/src/app/(dashboard)/admin/subscriptions/page.tsx:32
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:73
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:125
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:124
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:94
#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:73
msgid "Status"
@@ -4796,8 +4794,8 @@ msgstr "Abonnements"
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:92
#: apps/web/src/components/(teams)/forms/update-team-form.tsx:67
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:27
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:60
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:77
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:59
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:76
#: apps/web/src/components/forms/public-profile-form.tsx:80
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:132
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:168
@@ -4879,7 +4877,7 @@ msgstr "Teameinladung"
msgid "Team invitations have been sent."
msgstr "Teameinladungen wurden gesendet."
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:107
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:106
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:84
msgid "Team Member"
msgstr "Teammitglied"
@@ -4956,8 +4954,8 @@ msgstr "Teams beschränkt"
#: apps/web/src/app/(dashboard)/templates/[id]/edit/template-edit-page-view.tsx:64
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:39
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:143
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:223
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:142
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:222
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:148
#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:408
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:269
@@ -5020,7 +5018,7 @@ msgstr "Vorlagen erlauben dir das schnelle Erstlelen von Dokumenten mit vorausge
msgid "Text"
msgstr "Text"
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:166
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:157
msgid "Text Color"
msgstr "Textfarbe"
@@ -5032,7 +5030,7 @@ msgstr "Vielen Dank, dass Sie Documenso zur elektronischen Unterzeichnung Ihrer
msgid "That's okay, it happens! Click the button below to reset your password."
msgstr "Das ist in Ordnung, das passiert! Klicke auf den Button unten, um dein Passwort zurückzusetzen."
-#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:51
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:52
msgid "The account has been deleted successfully."
msgstr "Das Konto wurde erfolgreich gelöscht."
@@ -5056,7 +5054,7 @@ msgstr "Die Authentifizierung, die erforderlich ist, damit Empfänger das Signat
msgid "The authentication required for recipients to view the document."
msgstr "Die Authentifizierung, die erforderlich ist, damit Empfänger das Dokument anzeigen können."
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:197
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:188
msgid "The content to show in the banner, HTML is allowed"
msgstr "Der Inhalt, der im Banne rgezeig wird, HTML ist erlaubt"
@@ -5191,7 +5189,7 @@ msgstr "Der Name des Unterzeichners"
msgid "The signing link has been copied to your clipboard."
msgstr "Der Signierlink wurde in die Zwischenablage kopiert."
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:105
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:96
msgid "The site banner is a message that is shown at the top of the site. It can be used to display important information to your users."
msgstr "Das Seitenbanner ist eine Nachricht, die oben auf der Seite angezeigt wird. Es kann verwendet werden, um Ihren Nutzern wichtige Informationen anzuzeigen."
@@ -5223,7 +5221,7 @@ msgstr "Die Vorlage wird von Ihrem Profil entfernt"
msgid "The template you are looking for may have been disabled, deleted or may have never existed."
msgstr "Die Vorlage, die Sie suchen, wurde möglicherweise deaktiviert, gelöscht oder hat möglicherweise nie existiert."
-#: apps/web/src/components/forms/token.tsx:106
+#: apps/web/src/components/forms/token.tsx:107
msgid "The token was copied to your clipboard."
msgstr "Der Token wurde in die Zwischenablage kopiert."
@@ -5266,8 +5264,8 @@ msgstr "Es gibt noch keine abgeschlossenen Dokumente. Dokumente, die Sie erstell
msgid "They have permission on your behalf to:"
msgstr "Sie haben in Ihrem Namen die Erlaubnis, zu:"
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:110
-#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:109
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:100
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:106
#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:98
msgid "This action is not reversible. Please be certain."
msgstr "Diese Aktion ist nicht umkehrbar. Bitte seien Sie sicher."
@@ -5320,11 +5318,11 @@ msgstr "Dieses Dokument ist momentan ein Entwurf und wurde nicht gesendet"
msgid "This document is password protected. Please enter the password to view the document."
msgstr "Dieses Dokument ist durch ein Passwort geschützt. Bitte geben Sie das Passwort ein, um das Dokument anzusehen."
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:147
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:146
msgid "This document was created by you or a team member using the template above."
msgstr "Dieses Dokument wurde von Ihnen oder einem Teammitglied unter Verwendung der oben genannten Vorlage erstellt."
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:159
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:158
msgid "This document was created using a direct link."
msgstr "Dieses Dokument wurde mit einem direkten Link erstellt."
@@ -5441,7 +5439,7 @@ msgstr "Dies wird an den Dokumenteneigentümer gesendet, sobald das Dokument vol
msgid "This will override any global settings."
msgstr "Dies überschreibt alle globalen Einstellungen."
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:71
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:70
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:44
msgid "Time"
msgstr "Zeit"
@@ -5458,7 +5456,7 @@ msgstr "Zeitzone"
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:67
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:54
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:110
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:109
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:61
#: packages/ui/primitives/document-flow/add-settings.tsx:166
msgid "Title"
@@ -5472,13 +5470,13 @@ msgstr "Um diese Einladung anzunehmen, müssen Sie ein Konto erstellen."
msgid "To change the email you must remove and add a new email address."
msgstr "Um die E-Mail zu ändern, müssen Sie die aktuelle entfernen und eine neue hinzufügen."
-#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:116
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:113
#: apps/web/src/app/(dashboard)/admin/users/[id]/disable-user-dialog.tsx:111
#: apps/web/src/app/(dashboard)/admin/users/[id]/enable-user-dialog.tsx:101
msgid "To confirm, please enter the accounts email address <0/>({0})."
msgstr "Um zu bestätigen, geben Sie bitte die E-Mail-Adresse des Kontos <0/>({0}) ein."
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:117
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:107
msgid "To confirm, please enter the reason"
msgstr "Um zu bestätigen, geben Sie bitte den Grund ein"
@@ -5523,11 +5521,11 @@ msgstr "Schalten Sie den Schalter um, um Ihr Profil der Öffentlichkeit anzuzeig
msgid "Token"
msgstr "Token"
-#: apps/web/src/components/forms/token.tsx:105
+#: apps/web/src/components/forms/token.tsx:106
msgid "Token copied to clipboard"
msgstr "Token wurde in die Zwischenablage kopiert"
-#: apps/web/src/components/forms/token.tsx:126
+#: apps/web/src/components/forms/token.tsx:127
msgid "Token created"
msgstr "Token erstellt"
@@ -5645,7 +5643,7 @@ msgstr "Zurzeit kann die Sprache nicht geändert werden. Bitte versuchen Sie es
msgid "Unable to copy recovery code"
msgstr "Kann Code zur Wiederherstellung nicht kopieren"
-#: apps/web/src/components/forms/token.tsx:110
+#: apps/web/src/components/forms/token.tsx:111
msgid "Unable to copy token"
msgstr "Token kann nicht kopiert werden"
@@ -5657,7 +5655,7 @@ msgstr "Direkter Zugriff auf die Vorlage kann nicht erstellt werden. Bitte versu
msgid "Unable to decline this team invitation at this time."
msgstr "Zurzeit kann diese Teameinladung nicht abgelehnt werden."
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:84
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:83
msgid "Unable to delete invitation. Please try again."
msgstr "Einladung kann nicht gelöscht werden. Bitte versuchen Sie es erneut."
@@ -5694,7 +5692,7 @@ msgstr "Derzeit ist es nicht möglich, die E-Mail-Verifizierung zu entfernen. Bi
msgid "Unable to remove team email at this time. Please try again."
msgstr "Das Team-E-Mail kann zurzeit nicht entfernt werden. Bitte versuchen Sie es erneut."
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:67
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:66
msgid "Unable to resend invitation. Please try again."
msgstr "Einladung kann nicht erneut gesendet werden. Bitte versuchen Sie es erneut."
@@ -5751,7 +5749,7 @@ msgstr "Unbezahlt"
msgid "Update"
msgstr "Aktualisieren"
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:211
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:202
msgid "Update Banner"
msgstr "Banner aktualisieren"
@@ -5763,7 +5761,7 @@ msgstr "Passkey aktualisieren"
msgid "Update password"
msgstr "Passwort aktualisieren"
-#: apps/web/src/components/forms/profile.tsx:151
+#: apps/web/src/components/forms/profile.tsx:142
msgid "Update profile"
msgstr "Profil aktualisieren"
@@ -5806,7 +5804,7 @@ msgstr "Webhook aktualisieren"
msgid "Updating password..."
msgstr "Passwort wird aktualisiert..."
-#: apps/web/src/components/forms/profile.tsx:151
+#: apps/web/src/components/forms/profile.tsx:142
msgid "Updating profile..."
msgstr "Profil wird aktualisiert..."
@@ -5877,7 +5875,7 @@ msgstr "Backup-Code verwenden"
msgid "Use Template"
msgstr "Vorlage verwenden"
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:76
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:75
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:45
msgid "User"
msgstr "Benutzer"
@@ -5890,6 +5888,7 @@ msgstr "Benutzer hat kein Passwort."
msgid "User ID"
msgstr "Benutzer-ID"
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:61
#: apps/web/src/app/(dashboard)/admin/users/[id]/disable-user-dialog.tsx:55
#: apps/web/src/app/(dashboard)/admin/users/[id]/enable-user-dialog.tsx:55
msgid "User not found."
@@ -6106,10 +6105,6 @@ msgstr "Wir sind auf einen Fehler gestoßen, während wir den direkten Vorlagenl
msgid "We encountered an error while updating the webhook. Please try again later."
msgstr "Wir sind auf einen Fehler gestoßen, während wir den Webhook aktualisieren wollten. Bitte versuchen Sie es später erneut."
-#: apps/web/src/components/forms/token.tsx:145
-msgid "We encountered an unknown error while attempting create the new token. Please try again later."
-msgstr "Wir sind auf einen unbekannten Fehler gestoßen, während wir versucht haben, das neue Token zu erstellen. Bitte versuchen Sie es später erneut."
-
#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:102
msgid "We encountered an unknown error while attempting to add this email. Please try again later."
msgstr "Wir sind auf einen unbekannten Fehler gestoßen, während wir versucht haben, diese E-Mail hinzuzufügen. Bitte versuchen Sie es später erneut."
@@ -6134,7 +6129,6 @@ msgstr "Wir sind auf einen unbekannten Fehler gestoßen, während wir versucht h
msgid "We encountered an unknown error while attempting to delete this token. Please try again later."
msgstr "Wir sind auf einen unbekannten Fehler gestoßen, während wir versucht haben, dieses Token zu löschen. Bitte versuchen Sie es später erneut."
-#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:70
#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:58
msgid "We encountered an unknown error while attempting to delete your account. Please try again later."
msgstr "Wir sind auf einen unbekannten Fehler gestoßen, während wir versucht haben, Ihr Konto zu löschen. Bitte versuchen Sie es später erneut."
@@ -6175,7 +6169,6 @@ msgstr "Wir sind auf einen unbekannten Fehler gestoßen, während wir versucht h
msgid "We encountered an unknown error while attempting to save your details. Please try again later."
msgstr "Wir sind auf einen unbekannten Fehler gestoßen, während wir versucht haben, Ihre Daten zu speichern. Bitte versuchen Sie es später erneut."
-#: apps/web/src/components/forms/profile.tsx:89
#: apps/web/src/components/forms/signin.tsx:273
#: apps/web/src/components/forms/signin.tsx:288
#: apps/web/src/components/forms/signin.tsx:304
@@ -6189,7 +6182,7 @@ msgstr "Wir sind auf einen unbekannten Fehler gestoßen, während wir versucht h
msgid "We encountered an unknown error while attempting to sign you Up. Please try again later."
msgstr "Wir sind auf einen unbekannten Fehler gestoßen, während wir versucht haben, Sie anzumelden. Bitte versuchen Sie es später erneut."
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:92
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:84
msgid "We encountered an unknown error while attempting to update the banner. Please try again later."
msgstr "Wir sind auf einen unbekannten Fehler gestoßen, während wir versucht haben, das Banner zu aktualisieren. Bitte versuchen Sie es später erneut."
@@ -6218,6 +6211,10 @@ msgstr "Wir sind auf einen unbekannten Fehler gestoßen, während wir versucht h
msgid "We encountered an unknown error while attempting update the team email. Please try again later."
msgstr "Wir sind auf einen unbekannten Fehler gestoßen, während wir versucht haben, die Team-E-Mail zu aktualisieren. Bitte versuchen Sie es später erneut."
+#: apps/web/src/components/forms/profile.tsx:81
+msgid "We encountered an unknown error while attempting update your profile. Please try again later."
+msgstr ""
+
#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:80
msgid "We have sent a confirmation email for verification."
msgstr "Wir haben eine Bestätigungs-E-Mail zur Überprüfung gesendet."
@@ -6230,7 +6227,7 @@ msgstr "Wir benötigen einen Benutzernamen, um Ihr Profil zu erstellen"
msgid "We need your signature to sign documents"
msgstr "Wir benötigen Ihre Unterschrift, um Dokumente zu unterschreiben"
-#: apps/web/src/components/forms/token.tsx:111
+#: apps/web/src/components/forms/token.tsx:112
msgid "We were unable to copy the token to your clipboard. Please try again."
msgstr "Wir konnten das Token nicht in Ihre Zwischenablage kopieren. Bitte versuchen Sie es erneut."
@@ -6450,6 +6447,10 @@ msgstr "Sie aktualisieren derzeit den <0>{passkeyName}0> Passkey."
msgid "You are not a member of this team."
msgstr "Sie sind kein Mitglied dieses Teams."
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:62
+msgid "You are not authorized to delete this user."
+msgstr ""
+
#: apps/web/src/app/(dashboard)/admin/users/[id]/disable-user-dialog.tsx:56
msgid "You are not authorized to disable this user."
msgstr "Sie sind nicht berechtigt, diesen Benutzer zu deaktivieren."
@@ -6514,7 +6515,7 @@ msgstr "Sie können ein Teammitglied, das eine höhere Rolle als Sie hat, nicht
msgid "You cannot upload documents at this time."
msgstr "Sie können derzeit keine Dokumente hochladen."
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:105
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:103
msgid "You cannot upload encrypted PDFs"
msgstr "Sie können keine verschlüsselten PDFs hochladen"
@@ -6522,6 +6523,10 @@ msgstr "Sie können keine verschlüsselten PDFs hochladen"
msgid "You do not currently have a customer record, this should not happen. Please contact support for assistance."
msgstr "Sie haben derzeit keinen Kundenrecord, das sollte nicht passieren. Bitte kontaktieren Sie den Support um Hilfe."
+#: apps/web/src/components/forms/token.tsx:141
+msgid "You do not have permission to create a token for this team"
+msgstr ""
+
#: packages/email/template-components/template-document-cancel.tsx:35
msgid "You don't need to sign it anymore."
msgstr "Du musst es nicht mehr unterschreiben."
@@ -6586,6 +6591,10 @@ msgstr "Sie haben noch keine Dokumente erstellt oder erhalten. Bitte laden Sie e
msgid "You have reached the maximum limit of {0} direct templates. <0>Upgrade your account to continue!0>"
msgstr "Sie haben das maximale Limit von {0} direkten Vorlagen erreicht. <0>Upgrade your account to continue!0>"
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:106
+msgid "You have reached your document limit for this month. Please upgrade your plan."
+msgstr ""
+
#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:56
#: packages/ui/primitives/document-dropzone.tsx:69
msgid "You have reached your document limit."
@@ -6687,7 +6696,7 @@ msgstr "Ihr Konto wurde erfolgreich gelöscht."
msgid "Your avatar has been updated successfully."
msgstr "Ihr Avatar wurde erfolgreich aktualisiert."
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:75
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:74
msgid "Your banner has been updated successfully."
msgstr "Ihr Banner wurde erfolgreich aktualisiert."
@@ -6707,7 +6716,7 @@ msgstr "Ihr aktueller Plan ist überfällig. Bitte aktualisieren Sie Ihre Zahlun
msgid "Your direct signing templates"
msgstr "Ihre direkten Unterzeichnungsvorlagen"
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:128
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:123
msgid "Your document failed to upload."
msgstr "Ihr Dokument konnte nicht hochgeladen werden."
@@ -6778,7 +6787,7 @@ msgstr "Dein Passwort wurde aktualisiert."
msgid "Your payment for teams is overdue. Please settle the payment to avoid any service disruptions."
msgstr "Ihre Zahlung für Teams ist überfällig. Bitte begleichen Sie die Zahlung, um Unterbrechungen des Dienstes zu vermeiden."
-#: apps/web/src/components/forms/profile.tsx:73
+#: apps/web/src/components/forms/profile.tsx:72
msgid "Your profile has been updated successfully."
msgstr "Ihr Profil wurde erfolgreich aktualisiert."
diff --git a/packages/lib/translations/en/web.po b/packages/lib/translations/en/web.po
index fa62fbc18..9cc859dcb 100644
--- a/packages/lib/translations/en/web.po
+++ b/packages/lib/translations/en/web.po
@@ -103,7 +103,7 @@ msgstr "{0} joined the team {teamName} on Documenso"
msgid "{0} left the team {teamName} on Documenso"
msgstr "{0} left the team {teamName} on Documenso"
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:150
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:145
msgid "{0} of {1} documents remaining this month."
msgstr "{0} of {1} documents remaining this month."
@@ -487,7 +487,7 @@ msgstr "A means to print or download documents for your records"
msgid "A new member has joined your team"
msgstr "A new member has joined your team"
-#: apps/web/src/components/forms/token.tsx:127
+#: apps/web/src/components/forms/token.tsx:128
msgid "A new token was created successfully."
msgstr "A new token was created successfully."
@@ -590,7 +590,7 @@ msgstr "Accepted team invitation"
msgid "Account Authentication"
msgstr "Account Authentication"
-#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:50
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:51
#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:47
msgid "Account deleted"
msgstr "Account deleted"
@@ -612,19 +612,19 @@ msgid "Acknowledgment"
msgstr "Acknowledgment"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:107
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:98
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:97
#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:117
#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:159
-#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:116
+#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:115
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:46
msgid "Action"
msgstr "Action"
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:79
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:176
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:175
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:140
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:131
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:140
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:130
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:139
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:116
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:125
msgid "Actions"
@@ -863,16 +863,12 @@ msgstr "An email containing an invitation will be sent to each member."
msgid "An email requesting the transfer of this team has been sent."
msgstr "An email requesting the transfer of this team has been sent."
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:60
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:83
-#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:59
#: apps/web/src/app/(signing)/sign/[token]/complete/claim-account.tsx:100
#: apps/web/src/components/forms/avatar-image.tsx:122
#: apps/web/src/components/forms/password.tsx:92
-#: apps/web/src/components/forms/profile.tsx:81
#: apps/web/src/components/forms/reset-password.tsx:95
#: apps/web/src/components/forms/signup.tsx:112
-#: apps/web/src/components/forms/token.tsx:137
+#: apps/web/src/components/forms/token.tsx:146
#: apps/web/src/components/forms/v2/signup.tsx:166
msgid "An error occurred"
msgstr "An error occurred"
@@ -902,6 +898,10 @@ msgstr "An error occurred while creating document from template."
msgid "An error occurred while creating the webhook. Please try again."
msgstr "An error occurred while creating the webhook. Please try again."
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:63
+msgid "An error occurred while deleting the user."
+msgstr "An error occurred while deleting the user."
+
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:120
msgid "An error occurred while disabling direct link signing."
msgstr "An error occurred while disabling direct link signing."
@@ -1002,13 +1002,12 @@ msgstr "An error occurred while updating the signature."
msgid "An error occurred while updating your profile."
msgstr "An error occurred while updating your profile."
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:117
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:108
msgid "An error occurred while uploading your document."
msgstr "An error occurred while uploading your document."
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:66
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:89
-#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:65
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:58
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:81
#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:55
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:54
#: apps/web/src/components/(dashboard)/common/command-menu.tsx:301
@@ -1025,7 +1024,7 @@ msgstr "An error occurred while uploading your document."
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:100
#: apps/web/src/components/(teams)/forms/update-team-form.tsx:93
#: apps/web/src/components/forms/avatar-image.tsx:94
-#: apps/web/src/components/forms/profile.tsx:87
+#: apps/web/src/components/forms/profile.tsx:79
#: apps/web/src/components/forms/public-profile-claim-dialog.tsx:113
#: apps/web/src/components/forms/public-profile-form.tsx:104
#: apps/web/src/components/forms/signin.tsx:249
@@ -1035,7 +1034,6 @@ msgstr "An error occurred while uploading your document."
#: apps/web/src/components/forms/signin.tsx:302
#: apps/web/src/components/forms/signup.tsx:124
#: apps/web/src/components/forms/signup.tsx:138
-#: apps/web/src/components/forms/token.tsx:143
#: apps/web/src/components/forms/v2/signup.tsx:187
#: apps/web/src/components/forms/v2/signup.tsx:201
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:140
@@ -1047,11 +1045,11 @@ msgstr "An unknown error occurred"
msgid "Any payment methods attached to this team will remain attached to this team. Please contact us if you need to update this information."
msgstr "Any payment methods attached to this team will remain attached to this team. Please contact us if you need to update this information."
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:220
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:219
msgid "Any Source"
msgstr "Any Source"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:200
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:199
msgid "Any Status"
msgstr "Any Status"
@@ -1164,7 +1162,7 @@ msgstr "Back"
msgid "Back to Documents"
msgstr "Back to Documents"
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:146
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:137
msgid "Background Color"
msgstr "Background Color"
@@ -1177,7 +1175,7 @@ msgstr "Backup Code"
msgid "Backup codes"
msgstr "Backup codes"
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:74
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:73
msgid "Banner Updated"
msgstr "Banner Updated"
@@ -1214,7 +1212,7 @@ msgstr "Branding Preferences"
msgid "Branding preferences updated"
msgstr "Branding preferences updated"
-#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:97
+#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:96
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:48
msgid "Browser"
msgstr "Browser"
@@ -1456,7 +1454,7 @@ msgstr "Complete Signing"
msgid "Complete Viewing"
msgstr "Complete Viewing"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:203
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:202
#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:77
#: apps/web/src/components/formatter/document-status.tsx:28
#: packages/email/template-components/template-document-completed.tsx:35
@@ -1539,7 +1537,7 @@ msgstr "Consent to Electronic Transactions"
msgid "Contact Information"
msgstr "Contact Information"
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:189
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:180
msgid "Content"
msgstr "Content"
@@ -1737,7 +1735,7 @@ msgstr "Create your account and start using state-of-the-art document signing. O
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:36
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:48
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:63
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:104
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:103
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:35
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:56
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:272
@@ -1781,7 +1779,7 @@ msgstr "Daily"
msgid "Dark Mode"
msgstr "Dark Mode"
-#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:68
+#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:67
#: apps/web/src/app/(signing)/sign/[token]/date-field.tsx:148
#: packages/ui/primitives/document-flow/add-fields.tsx:945
#: packages/ui/primitives/document-flow/types.ts:53
@@ -1846,25 +1844,25 @@ msgstr "delete {0}"
msgid "delete {teamName}"
msgstr "delete {teamName}"
-#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:136
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:133
msgid "Delete account"
msgstr "Delete account"
-#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:97
-#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:104
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:94
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:101
#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:72
#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:86
#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:93
msgid "Delete Account"
msgstr "Delete Account"
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:135
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:125
msgid "Delete document"
msgstr "Delete document"
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:85
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:98
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:105
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:75
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:88
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:95
msgid "Delete Document"
msgstr "Delete Document"
@@ -1881,11 +1879,11 @@ msgstr "Delete team"
msgid "Delete team member"
msgstr "Delete team member"
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:88
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:78
msgid "Delete the document. This action is irreversible so proceed with caution."
msgstr "Delete the document. This action is irreversible so proceed with caution."
-#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:86
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:83
msgid "Delete the users account and all its contents. This action is irreversible and will cancel their subscription, so proceed with caution."
msgstr "Delete the users account and all its contents. This action is irreversible and will cancel their subscription, so proceed with caution."
@@ -1910,7 +1908,7 @@ msgstr "Deleting account..."
msgid "Details"
msgstr "Details"
-#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:73
+#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:72
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:244
msgid "Device"
msgstr "Device"
@@ -1929,8 +1927,8 @@ msgstr "direct link"
msgid "Direct link"
msgstr "Direct link"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:155
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:226
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:154
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:225
msgid "Direct Link"
msgstr "Direct Link"
@@ -2055,7 +2053,7 @@ msgstr "Document Approved"
#: apps/web/src/app/(signing)/sign/[token]/no-longer-available.tsx:40
#: packages/lib/server-only/document/delete-document.ts:251
-#: packages/lib/server-only/document/super-delete-document.ts:98
+#: packages/lib/server-only/document/super-delete-document.ts:101
msgid "Document Cancelled"
msgstr "Document Cancelled"
@@ -2096,7 +2094,7 @@ msgstr "Document created using a <0>direct link0>"
msgid "Document Creation"
msgstr "Document Creation"
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:51
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:50
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:182
#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:60
#: packages/lib/utils/document-audit-logs.ts:306
@@ -2107,7 +2105,7 @@ msgstr "Document deleted"
msgid "Document deleted email"
msgstr "Document deleted email"
-#: packages/lib/server-only/document/send-delete-email.ts:82
+#: packages/lib/server-only/document/send-delete-email.ts:85
msgid "Document Deleted!"
msgstr "Document Deleted!"
@@ -2297,7 +2295,7 @@ msgstr "Download Audit Logs"
msgid "Download Certificate"
msgstr "Download Certificate"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:209
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:208
#: apps/web/src/components/formatter/document-status.tsx:34
#: packages/lib/constants/document.ts:13
msgid "Draft"
@@ -2380,7 +2378,7 @@ msgstr "Electronic Signature Disclosure"
#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:169
#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:153
#: apps/web/src/components/forms/forgot-password.tsx:81
-#: apps/web/src/components/forms/profile.tsx:122
+#: apps/web/src/components/forms/profile.tsx:113
#: apps/web/src/components/forms/signin.tsx:339
#: apps/web/src/components/forms/signup.tsx:176
#: packages/lib/constants/document.ts:28
@@ -2485,7 +2483,7 @@ msgstr "Enable Typed Signature"
msgid "Enable Typed Signatures"
msgstr "Enable Typed Signatures"
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:123
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:114
#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:138
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:74
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/[id]/page.tsx:142
@@ -2531,6 +2529,7 @@ msgid "Enter your text here"
msgstr "Enter your text here"
#: apps/web/src/app/(dashboard)/admin/documents/[id]/admin-actions.tsx:41
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:66
#: apps/web/src/app/(dashboard)/admin/users/[id]/disable-user-dialog.tsx:60
#: apps/web/src/app/(dashboard)/admin/users/[id]/enable-user-dialog.tsx:60
#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:80
@@ -2539,8 +2538,7 @@ msgstr "Enter your text here"
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:280
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:325
#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:57
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:110
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:116
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:111
#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:155
#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:186
#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:226
@@ -2661,7 +2659,7 @@ msgstr "Field unsigned"
msgid "Fields"
msgstr "Fields"
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:129
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:124
msgid "File cannot be larger than {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB"
msgstr "File cannot be larger than {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB"
@@ -2701,7 +2699,7 @@ msgstr "Free Signature"
#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:193
#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:392
#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:272
-#: apps/web/src/components/forms/profile.tsx:110
+#: apps/web/src/components/forms/profile.tsx:101
#: apps/web/src/components/forms/v2/signup.tsx:316
msgid "Full Name"
msgstr "Full Name"
@@ -2889,10 +2887,6 @@ msgstr "Invalid code. Please try again."
msgid "Invalid email"
msgstr "Invalid email"
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:104
-msgid "Invalid file"
-msgstr "Invalid file"
-
#: apps/web/src/app/(unauthenticated)/team/verify/email/[token]/page.tsx:33
#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:36
msgid "Invalid link"
@@ -2915,11 +2909,11 @@ msgstr "Invitation accepted!"
msgid "Invitation declined"
msgstr "Invitation declined"
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:78
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:77
msgid "Invitation has been deleted"
msgstr "Invitation has been deleted"
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:61
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:60
msgid "Invitation has been resent"
msgstr "Invitation has been resent"
@@ -2939,7 +2933,7 @@ msgstr "Invite Members"
msgid "Invite team members"
msgstr "Invite team members"
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:126
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:125
msgid "Invited At"
msgstr "Invited At"
@@ -3636,7 +3630,7 @@ msgid "Payment overdue"
msgstr "Payment overdue"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:131
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:206
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:205
#: apps/web/src/components/(teams)/tables/teams-member-page-data-table.tsx:82
#: apps/web/src/components/(teams)/tables/user-settings-teams-page-data-table.tsx:77
#: apps/web/src/components/document/document-read-only-fields.tsx:89
@@ -3860,7 +3854,7 @@ msgid "Profile is currently <0>visible0>."
msgstr "Profile is currently <0>visible0>."
#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:74
-#: apps/web/src/components/forms/profile.tsx:72
+#: apps/web/src/components/forms/profile.tsx:71
msgid "Profile updated"
msgstr "Profile updated"
@@ -3951,7 +3945,7 @@ msgid "Recent documents"
msgstr "Recent documents"
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:63
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:115
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:114
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:275
#: packages/lib/utils/document-audit-logs.ts:354
#: packages/lib/utils/document-audit-logs.ts:369
@@ -4066,7 +4060,7 @@ msgstr "Reminder: Please {recipientActionVerb} your document"
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:89
#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:159
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:54
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:164
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:163
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:165
#: apps/web/src/components/forms/avatar-image.tsx:166
#: packages/ui/primitives/document-flow/add-fields.tsx:1128
@@ -4107,7 +4101,7 @@ msgid "Reseal document"
msgstr "Reseal document"
#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:118
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:152
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:151
#: packages/ui/primitives/document-flow/add-subject.tsx:84
msgid "Resend"
msgstr "Resend"
@@ -4192,7 +4186,7 @@ msgstr "Revoke access"
#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:318
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:163
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:80
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:121
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:120
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:103
msgid "Role"
msgstr "Role"
@@ -4524,7 +4518,7 @@ msgstr "Sign Up with OIDC"
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:286
#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:422
#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:301
-#: apps/web/src/components/forms/profile.tsx:132
+#: apps/web/src/components/forms/profile.tsx:123
#: packages/ui/primitives/document-flow/add-fields.tsx:841
#: packages/ui/primitives/document-flow/field-icon.tsx:52
#: packages/ui/primitives/document-flow/types.ts:49
@@ -4622,7 +4616,7 @@ msgstr "Signups are disabled."
msgid "Since {0}"
msgstr "Since {0}"
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:102
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:93
msgid "Site Banner"
msgstr "Site Banner"
@@ -4672,8 +4666,8 @@ msgstr "Some signers have not been assigned a signature field. Please assign at
#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:64
#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:83
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:33
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:66
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:83
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:65
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:82
#: apps/web/src/components/(teams)/team-billing-portal-button.tsx:29
#: packages/ui/components/document/document-share-button.tsx:51
msgid "Something went wrong"
@@ -4712,6 +4706,10 @@ msgstr "Something went wrong!"
msgid "Something went wrong."
msgstr "Something went wrong."
+#: apps/web/src/components/forms/token.tsx:143
+msgid "Something went wrong. Please try again later."
+msgstr "Something went wrong. Please try again later."
+
#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:240
#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:154
msgid "Something went wrong. Please try again or contact support."
@@ -4725,7 +4723,7 @@ msgstr "Sorry, we were unable to download the audit logs. Please try again later
msgid "Sorry, we were unable to download the certificate. Please try again later."
msgstr "Sorry, we were unable to download the certificate. Please try again later."
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:133
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:132
msgid "Source"
msgstr "Source"
@@ -4736,7 +4734,7 @@ msgstr "Stats"
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:81
#: apps/web/src/app/(dashboard)/admin/subscriptions/page.tsx:32
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:73
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:125
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:124
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:94
#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:73
msgid "Status"
@@ -4791,8 +4789,8 @@ msgstr "Subscriptions"
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:92
#: apps/web/src/components/(teams)/forms/update-team-form.tsx:67
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:27
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:60
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:77
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:59
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:76
#: apps/web/src/components/forms/public-profile-form.tsx:80
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:132
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:168
@@ -4874,7 +4872,7 @@ msgstr "Team invitation"
msgid "Team invitations have been sent."
msgstr "Team invitations have been sent."
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:107
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:106
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:84
msgid "Team Member"
msgstr "Team Member"
@@ -4951,8 +4949,8 @@ msgstr "Teams restricted"
#: apps/web/src/app/(dashboard)/templates/[id]/edit/template-edit-page-view.tsx:64
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:39
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:143
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:223
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:142
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:222
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:148
#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:408
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:269
@@ -5015,7 +5013,7 @@ msgstr "Templates allow you to quickly generate documents with pre-filled recipi
msgid "Text"
msgstr "Text"
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:166
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:157
msgid "Text Color"
msgstr "Text Color"
@@ -5027,7 +5025,7 @@ msgstr "Thank you for using Documenso to perform your electronic document signin
msgid "That's okay, it happens! Click the button below to reset your password."
msgstr "That's okay, it happens! Click the button below to reset your password."
-#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:51
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:52
msgid "The account has been deleted successfully."
msgstr "The account has been deleted successfully."
@@ -5051,7 +5049,7 @@ msgstr "The authentication required for recipients to sign the signature field."
msgid "The authentication required for recipients to view the document."
msgstr "The authentication required for recipients to view the document."
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:197
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:188
msgid "The content to show in the banner, HTML is allowed"
msgstr "The content to show in the banner, HTML is allowed"
@@ -5186,7 +5184,7 @@ msgstr "The signer's name"
msgid "The signing link has been copied to your clipboard."
msgstr "The signing link has been copied to your clipboard."
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:105
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:96
msgid "The site banner is a message that is shown at the top of the site. It can be used to display important information to your users."
msgstr "The site banner is a message that is shown at the top of the site. It can be used to display important information to your users."
@@ -5218,7 +5216,7 @@ msgstr "The template will be removed from your profile"
msgid "The template you are looking for may have been disabled, deleted or may have never existed."
msgstr "The template you are looking for may have been disabled, deleted or may have never existed."
-#: apps/web/src/components/forms/token.tsx:106
+#: apps/web/src/components/forms/token.tsx:107
msgid "The token was copied to your clipboard."
msgstr "The token was copied to your clipboard."
@@ -5261,8 +5259,8 @@ msgstr "There are no completed documents yet. Documents that you have created or
msgid "They have permission on your behalf to:"
msgstr "They have permission on your behalf to:"
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:110
-#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:109
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:100
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:106
#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:98
msgid "This action is not reversible. Please be certain."
msgstr "This action is not reversible. Please be certain."
@@ -5315,11 +5313,11 @@ msgstr "This document is currently a draft and has not been sent"
msgid "This document is password protected. Please enter the password to view the document."
msgstr "This document is password protected. Please enter the password to view the document."
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:147
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:146
msgid "This document was created by you or a team member using the template above."
msgstr "This document was created by you or a team member using the template above."
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:159
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:158
msgid "This document was created using a direct link."
msgstr "This document was created using a direct link."
@@ -5436,7 +5434,7 @@ msgstr "This will be sent to the document owner once the document has been fully
msgid "This will override any global settings."
msgstr "This will override any global settings."
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:71
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:70
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:44
msgid "Time"
msgstr "Time"
@@ -5453,7 +5451,7 @@ msgstr "Time Zone"
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:67
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:54
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:110
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:109
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:61
#: packages/ui/primitives/document-flow/add-settings.tsx:166
msgid "Title"
@@ -5467,13 +5465,13 @@ msgstr "To accept this invitation you must create an account."
msgid "To change the email you must remove and add a new email address."
msgstr "To change the email you must remove and add a new email address."
-#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:116
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:113
#: apps/web/src/app/(dashboard)/admin/users/[id]/disable-user-dialog.tsx:111
#: apps/web/src/app/(dashboard)/admin/users/[id]/enable-user-dialog.tsx:101
msgid "To confirm, please enter the accounts email address <0/>({0})."
msgstr "To confirm, please enter the accounts email address <0/>({0})."
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:117
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:107
msgid "To confirm, please enter the reason"
msgstr "To confirm, please enter the reason"
@@ -5518,11 +5516,11 @@ msgstr "Toggle the switch to show your profile to the public."
msgid "Token"
msgstr "Token"
-#: apps/web/src/components/forms/token.tsx:105
+#: apps/web/src/components/forms/token.tsx:106
msgid "Token copied to clipboard"
msgstr "Token copied to clipboard"
-#: apps/web/src/components/forms/token.tsx:126
+#: apps/web/src/components/forms/token.tsx:127
msgid "Token created"
msgstr "Token created"
@@ -5640,7 +5638,7 @@ msgstr "Unable to change the language at this time. Please try again later."
msgid "Unable to copy recovery code"
msgstr "Unable to copy recovery code"
-#: apps/web/src/components/forms/token.tsx:110
+#: apps/web/src/components/forms/token.tsx:111
msgid "Unable to copy token"
msgstr "Unable to copy token"
@@ -5652,7 +5650,7 @@ msgstr "Unable to create direct template access. Please try again later."
msgid "Unable to decline this team invitation at this time."
msgstr "Unable to decline this team invitation at this time."
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:84
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:83
msgid "Unable to delete invitation. Please try again."
msgstr "Unable to delete invitation. Please try again."
@@ -5689,7 +5687,7 @@ msgstr "Unable to remove email verification at this time. Please try again."
msgid "Unable to remove team email at this time. Please try again."
msgstr "Unable to remove team email at this time. Please try again."
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:67
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:66
msgid "Unable to resend invitation. Please try again."
msgstr "Unable to resend invitation. Please try again."
@@ -5746,7 +5744,7 @@ msgstr "Unpaid"
msgid "Update"
msgstr "Update"
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:211
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:202
msgid "Update Banner"
msgstr "Update Banner"
@@ -5758,7 +5756,7 @@ msgstr "Update passkey"
msgid "Update password"
msgstr "Update password"
-#: apps/web/src/components/forms/profile.tsx:151
+#: apps/web/src/components/forms/profile.tsx:142
msgid "Update profile"
msgstr "Update profile"
@@ -5801,7 +5799,7 @@ msgstr "Update webhook"
msgid "Updating password..."
msgstr "Updating password..."
-#: apps/web/src/components/forms/profile.tsx:151
+#: apps/web/src/components/forms/profile.tsx:142
msgid "Updating profile..."
msgstr "Updating profile..."
@@ -5872,7 +5870,7 @@ msgstr "Use Backup Code"
msgid "Use Template"
msgstr "Use Template"
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:76
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:75
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:45
msgid "User"
msgstr "User"
@@ -5885,6 +5883,7 @@ msgstr "User has no password."
msgid "User ID"
msgstr "User ID"
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:61
#: apps/web/src/app/(dashboard)/admin/users/[id]/disable-user-dialog.tsx:55
#: apps/web/src/app/(dashboard)/admin/users/[id]/enable-user-dialog.tsx:55
msgid "User not found."
@@ -6101,10 +6100,6 @@ msgstr "We encountered an error while removing the direct template link. Please
msgid "We encountered an error while updating the webhook. Please try again later."
msgstr "We encountered an error while updating the webhook. Please try again later."
-#: apps/web/src/components/forms/token.tsx:145
-msgid "We encountered an unknown error while attempting create the new token. Please try again later."
-msgstr "We encountered an unknown error while attempting create the new token. Please try again later."
-
#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:102
msgid "We encountered an unknown error while attempting to add this email. Please try again later."
msgstr "We encountered an unknown error while attempting to add this email. Please try again later."
@@ -6129,7 +6124,6 @@ msgstr "We encountered an unknown error while attempting to delete this team. Pl
msgid "We encountered an unknown error while attempting to delete this token. Please try again later."
msgstr "We encountered an unknown error while attempting to delete this token. Please try again later."
-#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:70
#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:58
msgid "We encountered an unknown error while attempting to delete your account. Please try again later."
msgstr "We encountered an unknown error while attempting to delete your account. Please try again later."
@@ -6170,7 +6164,6 @@ msgstr "We encountered an unknown error while attempting to revoke access. Pleas
msgid "We encountered an unknown error while attempting to save your details. Please try again later."
msgstr "We encountered an unknown error while attempting to save your details. Please try again later."
-#: apps/web/src/components/forms/profile.tsx:89
#: apps/web/src/components/forms/signin.tsx:273
#: apps/web/src/components/forms/signin.tsx:288
#: apps/web/src/components/forms/signin.tsx:304
@@ -6184,7 +6177,7 @@ msgstr "We encountered an unknown error while attempting to sign you In. Please
msgid "We encountered an unknown error while attempting to sign you Up. Please try again later."
msgstr "We encountered an unknown error while attempting to sign you Up. Please try again later."
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:92
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:84
msgid "We encountered an unknown error while attempting to update the banner. Please try again later."
msgstr "We encountered an unknown error while attempting to update the banner. Please try again later."
@@ -6213,6 +6206,10 @@ msgstr "We encountered an unknown error while attempting to update your team. Pl
msgid "We encountered an unknown error while attempting update the team email. Please try again later."
msgstr "We encountered an unknown error while attempting update the team email. Please try again later."
+#: apps/web/src/components/forms/profile.tsx:81
+msgid "We encountered an unknown error while attempting update your profile. Please try again later."
+msgstr "We encountered an unknown error while attempting update your profile. Please try again later."
+
#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:80
msgid "We have sent a confirmation email for verification."
msgstr "We have sent a confirmation email for verification."
@@ -6225,7 +6222,7 @@ msgstr "We need a username to create your profile"
msgid "We need your signature to sign documents"
msgstr "We need your signature to sign documents"
-#: apps/web/src/components/forms/token.tsx:111
+#: apps/web/src/components/forms/token.tsx:112
msgid "We were unable to copy the token to your clipboard. Please try again."
msgstr "We were unable to copy the token to your clipboard. Please try again."
@@ -6445,6 +6442,10 @@ msgstr "You are currently updating the <0>{passkeyName}0> passkey."
msgid "You are not a member of this team."
msgstr "You are not a member of this team."
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:62
+msgid "You are not authorized to delete this user."
+msgstr "You are not authorized to delete this user."
+
#: apps/web/src/app/(dashboard)/admin/users/[id]/disable-user-dialog.tsx:56
msgid "You are not authorized to disable this user."
msgstr "You are not authorized to disable this user."
@@ -6509,7 +6510,7 @@ msgstr "You cannot modify a team member who has a higher role than you."
msgid "You cannot upload documents at this time."
msgstr "You cannot upload documents at this time."
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:105
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:103
msgid "You cannot upload encrypted PDFs"
msgstr "You cannot upload encrypted PDFs"
@@ -6517,6 +6518,10 @@ msgstr "You cannot upload encrypted PDFs"
msgid "You do not currently have a customer record, this should not happen. Please contact support for assistance."
msgstr "You do not currently have a customer record, this should not happen. Please contact support for assistance."
+#: apps/web/src/components/forms/token.tsx:141
+msgid "You do not have permission to create a token for this team"
+msgstr "You do not have permission to create a token for this team"
+
#: packages/email/template-components/template-document-cancel.tsx:35
msgid "You don't need to sign it anymore."
msgstr "You don't need to sign it anymore."
@@ -6581,6 +6586,10 @@ msgstr "You have not yet created or received any documents. To create a document
msgid "You have reached the maximum limit of {0} direct templates. <0>Upgrade your account to continue!0>"
msgstr "You have reached the maximum limit of {0} direct templates. <0>Upgrade your account to continue!0>"
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:106
+msgid "You have reached your document limit for this month. Please upgrade your plan."
+msgstr "You have reached your document limit for this month. Please upgrade your plan."
+
#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:56
#: packages/ui/primitives/document-dropzone.tsx:69
msgid "You have reached your document limit."
@@ -6682,7 +6691,7 @@ msgstr "Your account has been deleted successfully."
msgid "Your avatar has been updated successfully."
msgstr "Your avatar has been updated successfully."
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:75
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:74
msgid "Your banner has been updated successfully."
msgstr "Your banner has been updated successfully."
@@ -6702,7 +6711,7 @@ msgstr "Your current plan is past due. Please update your payment information."
msgid "Your direct signing templates"
msgstr "Your direct signing templates"
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:128
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:123
msgid "Your document failed to upload."
msgstr "Your document failed to upload."
@@ -6773,7 +6782,7 @@ msgstr "Your password has been updated."
msgid "Your payment for teams is overdue. Please settle the payment to avoid any service disruptions."
msgstr "Your payment for teams is overdue. Please settle the payment to avoid any service disruptions."
-#: apps/web/src/components/forms/profile.tsx:73
+#: apps/web/src/components/forms/profile.tsx:72
msgid "Your profile has been updated successfully."
msgstr "Your profile has been updated successfully."
diff --git a/packages/lib/translations/es/web.po b/packages/lib/translations/es/web.po
index b1f0128b2..cb24daecd 100644
--- a/packages/lib/translations/es/web.po
+++ b/packages/lib/translations/es/web.po
@@ -108,7 +108,7 @@ msgstr "{0} se unió al equipo {teamName} en Documenso"
msgid "{0} left the team {teamName} on Documenso"
msgstr "{0} dejó el equipo {teamName} en Documenso"
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:150
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:145
msgid "{0} of {1} documents remaining this month."
msgstr "{0} de {1} documentos restantes este mes."
@@ -492,7 +492,7 @@ msgstr "Un medio para imprimir o descargar documentos para sus registros"
msgid "A new member has joined your team"
msgstr "Un nuevo miembro se ha unido a tu equipo"
-#: apps/web/src/components/forms/token.tsx:127
+#: apps/web/src/components/forms/token.tsx:128
msgid "A new token was created successfully."
msgstr "Un nuevo token se ha creado con éxito."
@@ -595,7 +595,7 @@ msgstr "Invitación de equipo aceptada"
msgid "Account Authentication"
msgstr "Autenticación de Cuenta"
-#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:50
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:51
#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:47
msgid "Account deleted"
msgstr "Cuenta eliminada"
@@ -617,19 +617,19 @@ msgid "Acknowledgment"
msgstr "Reconocimiento"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:107
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:98
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:97
#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:117
#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:159
-#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:116
+#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:115
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:46
msgid "Action"
msgstr "Acción"
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:79
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:176
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:175
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:140
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:131
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:140
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:130
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:139
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:116
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:125
msgid "Actions"
@@ -868,16 +868,12 @@ msgstr "Un correo electrónico que contiene una invitación se enviará a cada m
msgid "An email requesting the transfer of this team has been sent."
msgstr "Se ha enviado un correo electrónico solicitando la transferencia de este equipo."
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:60
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:83
-#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:59
#: apps/web/src/app/(signing)/sign/[token]/complete/claim-account.tsx:100
#: apps/web/src/components/forms/avatar-image.tsx:122
#: apps/web/src/components/forms/password.tsx:92
-#: apps/web/src/components/forms/profile.tsx:81
#: apps/web/src/components/forms/reset-password.tsx:95
#: apps/web/src/components/forms/signup.tsx:112
-#: apps/web/src/components/forms/token.tsx:137
+#: apps/web/src/components/forms/token.tsx:146
#: apps/web/src/components/forms/v2/signup.tsx:166
msgid "An error occurred"
msgstr "Ocurrió un error"
@@ -907,6 +903,10 @@ msgstr "Ocurrió un error al crear el documento a partir de la plantilla."
msgid "An error occurred while creating the webhook. Please try again."
msgstr "Ocurrió un error al crear el webhook. Por favor, intenta de nuevo."
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:63
+msgid "An error occurred while deleting the user."
+msgstr ""
+
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:120
msgid "An error occurred while disabling direct link signing."
msgstr "Ocurrió un error al desactivar la firma de enlace directo."
@@ -1007,13 +1007,12 @@ msgstr "Ocurrió un error al actualizar la firma."
msgid "An error occurred while updating your profile."
msgstr "Ocurrió un error al actualizar tu perfil."
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:117
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:108
msgid "An error occurred while uploading your document."
msgstr "Ocurrió un error al subir tu documento."
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:66
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:89
-#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:65
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:58
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:81
#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:55
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:54
#: apps/web/src/components/(dashboard)/common/command-menu.tsx:301
@@ -1030,7 +1029,7 @@ msgstr "Ocurrió un error al subir tu documento."
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:100
#: apps/web/src/components/(teams)/forms/update-team-form.tsx:93
#: apps/web/src/components/forms/avatar-image.tsx:94
-#: apps/web/src/components/forms/profile.tsx:87
+#: apps/web/src/components/forms/profile.tsx:79
#: apps/web/src/components/forms/public-profile-claim-dialog.tsx:113
#: apps/web/src/components/forms/public-profile-form.tsx:104
#: apps/web/src/components/forms/signin.tsx:249
@@ -1040,7 +1039,6 @@ msgstr "Ocurrió un error al subir tu documento."
#: apps/web/src/components/forms/signin.tsx:302
#: apps/web/src/components/forms/signup.tsx:124
#: apps/web/src/components/forms/signup.tsx:138
-#: apps/web/src/components/forms/token.tsx:143
#: apps/web/src/components/forms/v2/signup.tsx:187
#: apps/web/src/components/forms/v2/signup.tsx:201
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:140
@@ -1052,11 +1050,11 @@ msgstr "Ocurrió un error desconocido"
msgid "Any payment methods attached to this team will remain attached to this team. Please contact us if you need to update this information."
msgstr "Cualquier método de pago adjunto a este equipo permanecerá adjunto a este equipo. Por favor, contáctanos si necesitas actualizar esta información."
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:220
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:219
msgid "Any Source"
msgstr "Cualquier fuente"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:200
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:199
msgid "Any Status"
msgstr "Cualquier estado"
@@ -1169,7 +1167,7 @@ msgstr "Atrás"
msgid "Back to Documents"
msgstr "Volver a Documentos"
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:146
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:137
msgid "Background Color"
msgstr "Color de Fondo"
@@ -1182,7 +1180,7 @@ msgstr "Código de respaldo"
msgid "Backup codes"
msgstr "Códigos de respaldo"
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:74
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:73
msgid "Banner Updated"
msgstr "Banner actualizado"
@@ -1219,7 +1217,7 @@ msgstr "Preferencias de marca"
msgid "Branding preferences updated"
msgstr "Preferencias de marca actualizadas"
-#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:97
+#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:96
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:48
msgid "Browser"
msgstr "Navegador"
@@ -1461,7 +1459,7 @@ msgstr "Completar Firmado"
msgid "Complete Viewing"
msgstr "Completar Visualización"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:203
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:202
#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:77
#: apps/web/src/components/formatter/document-status.tsx:28
#: packages/email/template-components/template-document-completed.tsx:35
@@ -1544,7 +1542,7 @@ msgstr "Consentimiento para Transacciones Electrónicas"
msgid "Contact Information"
msgstr "Información de Contacto"
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:189
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:180
msgid "Content"
msgstr "Contenido"
@@ -1742,7 +1740,7 @@ msgstr "Crea tu cuenta y comienza a utilizar la firma de documentos de última g
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:36
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:48
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:63
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:104
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:103
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:35
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:56
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:272
@@ -1786,7 +1784,7 @@ msgstr "Diario"
msgid "Dark Mode"
msgstr "Modo Oscuro"
-#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:68
+#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:67
#: apps/web/src/app/(signing)/sign/[token]/date-field.tsx:148
#: packages/ui/primitives/document-flow/add-fields.tsx:945
#: packages/ui/primitives/document-flow/types.ts:53
@@ -1851,25 +1849,25 @@ msgstr "eliminar {0}"
msgid "delete {teamName}"
msgstr "eliminar {teamName}"
-#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:136
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:133
msgid "Delete account"
msgstr "Eliminar cuenta"
-#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:97
-#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:104
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:94
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:101
#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:72
#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:86
#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:93
msgid "Delete Account"
msgstr "Eliminar Cuenta"
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:135
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:125
msgid "Delete document"
msgstr "Eliminar documento"
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:85
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:98
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:105
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:75
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:88
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:95
msgid "Delete Document"
msgstr "Eliminar Documento"
@@ -1886,11 +1884,11 @@ msgstr "Eliminar equipo"
msgid "Delete team member"
msgstr "Eliminar miembro del equipo"
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:88
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:78
msgid "Delete the document. This action is irreversible so proceed with caution."
msgstr "Eliminar el documento. Esta acción es irreversible, así que proceda con precaución."
-#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:86
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:83
msgid "Delete the users account and all its contents. This action is irreversible and will cancel their subscription, so proceed with caution."
msgstr "Eliminar la cuenta de usuario y todo su contenido. Esta acción es irreversible y cancelará su suscripción, así que proceda con cautela."
@@ -1915,7 +1913,7 @@ msgstr "Eliminando cuenta..."
msgid "Details"
msgstr "Detalles"
-#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:73
+#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:72
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:244
msgid "Device"
msgstr "Dispositivo"
@@ -1934,8 +1932,8 @@ msgstr "enlace directo"
msgid "Direct link"
msgstr "Enlace directo"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:155
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:226
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:154
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:225
msgid "Direct Link"
msgstr "Enlace directo"
@@ -2060,7 +2058,7 @@ msgstr "Documento Aprobado"
#: apps/web/src/app/(signing)/sign/[token]/no-longer-available.tsx:40
#: packages/lib/server-only/document/delete-document.ts:251
-#: packages/lib/server-only/document/super-delete-document.ts:98
+#: packages/lib/server-only/document/super-delete-document.ts:101
msgid "Document Cancelled"
msgstr "Documento cancelado"
@@ -2101,7 +2099,7 @@ msgstr "Documento creado usando un <0>enlace directo0>"
msgid "Document Creation"
msgstr "Creación de documento"
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:51
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:50
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:182
#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:60
#: packages/lib/utils/document-audit-logs.ts:306
@@ -2112,7 +2110,7 @@ msgstr "Documento eliminado"
msgid "Document deleted email"
msgstr "Correo electrónico de documento eliminado"
-#: packages/lib/server-only/document/send-delete-email.ts:82
+#: packages/lib/server-only/document/send-delete-email.ts:85
msgid "Document Deleted!"
msgstr "¡Documento eliminado!"
@@ -2302,7 +2300,7 @@ msgstr "Descargar registros de auditoría"
msgid "Download Certificate"
msgstr "Descargar certificado"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:209
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:208
#: apps/web/src/components/formatter/document-status.tsx:34
#: packages/lib/constants/document.ts:13
msgid "Draft"
@@ -2385,7 +2383,7 @@ msgstr "Divulgación de Firma Electrónica"
#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:169
#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:153
#: apps/web/src/components/forms/forgot-password.tsx:81
-#: apps/web/src/components/forms/profile.tsx:122
+#: apps/web/src/components/forms/profile.tsx:113
#: apps/web/src/components/forms/signin.tsx:339
#: apps/web/src/components/forms/signup.tsx:176
#: packages/lib/constants/document.ts:28
@@ -2490,7 +2488,7 @@ msgstr "Habilitar firma mecanografiada"
msgid "Enable Typed Signatures"
msgstr "Habilitar firmas escritas"
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:123
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:114
#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:138
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:74
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/[id]/page.tsx:142
@@ -2536,6 +2534,7 @@ msgid "Enter your text here"
msgstr "Ingresa tu texto aquí"
#: apps/web/src/app/(dashboard)/admin/documents/[id]/admin-actions.tsx:41
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:66
#: apps/web/src/app/(dashboard)/admin/users/[id]/disable-user-dialog.tsx:60
#: apps/web/src/app/(dashboard)/admin/users/[id]/enable-user-dialog.tsx:60
#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:80
@@ -2544,8 +2543,7 @@ msgstr "Ingresa tu texto aquí"
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:280
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:325
#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:57
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:110
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:116
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:111
#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:155
#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:186
#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:226
@@ -2666,7 +2664,7 @@ msgstr "Campo no firmado"
msgid "Fields"
msgstr "Campos"
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:129
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:124
msgid "File cannot be larger than {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB"
msgstr "El archivo no puede ser mayor a {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB"
@@ -2706,7 +2704,7 @@ msgstr "Firma gratuita"
#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:193
#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:392
#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:272
-#: apps/web/src/components/forms/profile.tsx:110
+#: apps/web/src/components/forms/profile.tsx:101
#: apps/web/src/components/forms/v2/signup.tsx:316
msgid "Full Name"
msgstr "Nombre completo"
@@ -2894,10 +2892,6 @@ msgstr "Código inválido. Por favor, intenta nuevamente."
msgid "Invalid email"
msgstr "Email inválido"
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:104
-msgid "Invalid file"
-msgstr "Archivo inválido"
-
#: apps/web/src/app/(unauthenticated)/team/verify/email/[token]/page.tsx:33
#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:36
msgid "Invalid link"
@@ -2920,11 +2914,11 @@ msgstr "¡Invitación aceptada!"
msgid "Invitation declined"
msgstr "Invitación rechazada"
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:78
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:77
msgid "Invitation has been deleted"
msgstr "La invitación ha sido eliminada"
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:61
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:60
msgid "Invitation has been resent"
msgstr "La invitación ha sido reenviada"
@@ -2944,7 +2938,7 @@ msgstr "Invitar a miembros"
msgid "Invite team members"
msgstr "Invitar a miembros del equipo"
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:126
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:125
msgid "Invited At"
msgstr "Invitado el"
@@ -3641,7 +3635,7 @@ msgid "Payment overdue"
msgstr "Pago atrasado"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:131
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:206
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:205
#: apps/web/src/components/(teams)/tables/teams-member-page-data-table.tsx:82
#: apps/web/src/components/(teams)/tables/user-settings-teams-page-data-table.tsx:77
#: apps/web/src/components/document/document-read-only-fields.tsx:89
@@ -3865,7 +3859,7 @@ msgid "Profile is currently <0>visible0>."
msgstr "El perfil está actualmente <0>visible0>."
#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:74
-#: apps/web/src/components/forms/profile.tsx:72
+#: apps/web/src/components/forms/profile.tsx:71
msgid "Profile updated"
msgstr "Perfil actualizado"
@@ -3956,7 +3950,7 @@ msgid "Recent documents"
msgstr "Documentos recientes"
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:63
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:115
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:114
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:275
#: packages/lib/utils/document-audit-logs.ts:354
#: packages/lib/utils/document-audit-logs.ts:369
@@ -4071,7 +4065,7 @@ msgstr "Recordatorio: Por favor {recipientActionVerb} tu documento"
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:89
#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:159
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:54
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:164
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:163
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:165
#: apps/web/src/components/forms/avatar-image.tsx:166
#: packages/ui/primitives/document-flow/add-fields.tsx:1128
@@ -4112,7 +4106,7 @@ msgid "Reseal document"
msgstr "Re-sellar documento"
#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:118
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:152
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:151
#: packages/ui/primitives/document-flow/add-subject.tsx:84
msgid "Resend"
msgstr "Reenviar"
@@ -4197,7 +4191,7 @@ msgstr "Revocar acceso"
#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:318
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:163
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:80
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:121
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:120
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:103
msgid "Role"
msgstr "Rol"
@@ -4529,7 +4523,7 @@ msgstr "Regístrate con OIDC"
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:286
#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:422
#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:301
-#: apps/web/src/components/forms/profile.tsx:132
+#: apps/web/src/components/forms/profile.tsx:123
#: packages/ui/primitives/document-flow/add-fields.tsx:841
#: packages/ui/primitives/document-flow/field-icon.tsx:52
#: packages/ui/primitives/document-flow/types.ts:49
@@ -4627,7 +4621,7 @@ msgstr "Las inscripciones están deshabilitadas."
msgid "Since {0}"
msgstr "Desde {0}"
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:102
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:93
msgid "Site Banner"
msgstr "Banner del sitio"
@@ -4677,8 +4671,8 @@ msgstr "Algunos firmantes no han sido asignados a un campo de firma. Asigne al m
#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:64
#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:83
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:33
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:66
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:83
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:65
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:82
#: apps/web/src/components/(teams)/team-billing-portal-button.tsx:29
#: packages/ui/components/document/document-share-button.tsx:51
msgid "Something went wrong"
@@ -4717,6 +4711,10 @@ msgstr "¡Algo salió mal!"
msgid "Something went wrong."
msgstr "Algo salió mal."
+#: apps/web/src/components/forms/token.tsx:143
+msgid "Something went wrong. Please try again later."
+msgstr ""
+
#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:240
#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:154
msgid "Something went wrong. Please try again or contact support."
@@ -4730,7 +4728,7 @@ msgstr "Lo sentimos, no pudimos descargar los registros de auditoría. Por favor
msgid "Sorry, we were unable to download the certificate. Please try again later."
msgstr "Lo sentimos, no pudimos descargar el certificado. Por favor, intenta de nuevo más tarde."
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:133
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:132
msgid "Source"
msgstr "Fuente"
@@ -4741,7 +4739,7 @@ msgstr "Estadísticas"
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:81
#: apps/web/src/app/(dashboard)/admin/subscriptions/page.tsx:32
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:73
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:125
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:124
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:94
#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:73
msgid "Status"
@@ -4796,8 +4794,8 @@ msgstr "Suscripciones"
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:92
#: apps/web/src/components/(teams)/forms/update-team-form.tsx:67
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:27
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:60
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:77
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:59
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:76
#: apps/web/src/components/forms/public-profile-form.tsx:80
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:132
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:168
@@ -4879,7 +4877,7 @@ msgstr "Invitación del equipo"
msgid "Team invitations have been sent."
msgstr "Las invitaciones al equipo han sido enviadas."
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:107
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:106
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:84
msgid "Team Member"
msgstr "Miembro del equipo"
@@ -4956,8 +4954,8 @@ msgstr "Equipos restringidos"
#: apps/web/src/app/(dashboard)/templates/[id]/edit/template-edit-page-view.tsx:64
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:39
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:143
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:223
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:142
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:222
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:148
#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:408
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:269
@@ -5020,7 +5018,7 @@ msgstr "Las plantillas te permiten generar documentos rápidamente con destinata
msgid "Text"
msgstr "Texto"
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:166
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:157
msgid "Text Color"
msgstr "Color de texto"
@@ -5032,7 +5030,7 @@ msgstr "Gracias por usar Documenso para realizar su firma electrónica de docume
msgid "That's okay, it happens! Click the button below to reset your password."
msgstr "Está bien, ¡sucede! Haz clic en el botón de abajo para restablecer tu contraseña."
-#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:51
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:52
msgid "The account has been deleted successfully."
msgstr "La cuenta ha sido eliminada con éxito."
@@ -5056,7 +5054,7 @@ msgstr "La autenticación requerida para que los destinatarios firmen el campo d
msgid "The authentication required for recipients to view the document."
msgstr "La autenticación requerida para que los destinatarios vean el documento."
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:197
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:188
msgid "The content to show in the banner, HTML is allowed"
msgstr "El contenido que se mostrará en el banner, se permite HTML"
@@ -5191,7 +5189,7 @@ msgstr "El nombre del firmante"
msgid "The signing link has been copied to your clipboard."
msgstr "El enlace de firma ha sido copiado a tu portapapeles."
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:105
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:96
msgid "The site banner is a message that is shown at the top of the site. It can be used to display important information to your users."
msgstr "El banner del sitio es un mensaje que se muestra en la parte superior del sitio. Se puede usar para mostrar información importante a tus usuarios."
@@ -5223,7 +5221,7 @@ msgstr "La plantilla será eliminada de tu perfil"
msgid "The template you are looking for may have been disabled, deleted or may have never existed."
msgstr "La plantilla que buscas puede haber sido desactivada, eliminada o puede que nunca haya existido."
-#: apps/web/src/components/forms/token.tsx:106
+#: apps/web/src/components/forms/token.tsx:107
msgid "The token was copied to your clipboard."
msgstr "El token fue copiado a tu portapapeles."
@@ -5266,8 +5264,8 @@ msgstr "Aún no hay documentos completados. Los documentos que hayas creado o re
msgid "They have permission on your behalf to:"
msgstr "Tienen permiso en tu nombre para:"
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:110
-#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:109
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:100
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:106
#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:98
msgid "This action is not reversible. Please be certain."
msgstr "Esta acción no es reversible. Por favor, asegúrate."
@@ -5320,11 +5318,11 @@ msgstr "Este documento es actualmente un borrador y no ha sido enviado"
msgid "This document is password protected. Please enter the password to view the document."
msgstr "Este documento está protegido por contraseña. Por favor ingrese la contraseña para ver el documento."
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:147
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:146
msgid "This document was created by you or a team member using the template above."
msgstr "Este documento fue creado por ti o un miembro del equipo usando la plantilla anterior."
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:159
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:158
msgid "This document was created using a direct link."
msgstr "Este documento fue creado usando un enlace directo."
@@ -5441,7 +5439,7 @@ msgstr "Esto se enviará al propietario del documento una vez que el documento s
msgid "This will override any global settings."
msgstr "Esto anulará cualquier configuración global."
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:71
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:70
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:44
msgid "Time"
msgstr "Hora"
@@ -5458,7 +5456,7 @@ msgstr "Zona horaria"
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:67
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:54
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:110
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:109
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:61
#: packages/ui/primitives/document-flow/add-settings.tsx:166
msgid "Title"
@@ -5472,13 +5470,13 @@ msgstr "Para aceptar esta invitación debes crear una cuenta."
msgid "To change the email you must remove and add a new email address."
msgstr "Para cambiar el correo electrónico debes eliminar y añadir una nueva dirección de correo electrónico."
-#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:116
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:113
#: apps/web/src/app/(dashboard)/admin/users/[id]/disable-user-dialog.tsx:111
#: apps/web/src/app/(dashboard)/admin/users/[id]/enable-user-dialog.tsx:101
msgid "To confirm, please enter the accounts email address <0/>({0})."
msgstr "Para confirmar, por favor ingresa la dirección de correo electrónico de la cuenta <0/>({0})."
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:117
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:107
msgid "To confirm, please enter the reason"
msgstr "Para confirmar, por favor ingresa la razón"
@@ -5523,11 +5521,11 @@ msgstr "Activa el interruptor para mostrar tu perfil al público."
msgid "Token"
msgstr "Token"
-#: apps/web/src/components/forms/token.tsx:105
+#: apps/web/src/components/forms/token.tsx:106
msgid "Token copied to clipboard"
msgstr "Token copiado al portapapeles"
-#: apps/web/src/components/forms/token.tsx:126
+#: apps/web/src/components/forms/token.tsx:127
msgid "Token created"
msgstr "Token creado"
@@ -5645,7 +5643,7 @@ msgstr "No se puede cambiar el idioma en este momento. Por favor intenta nuevame
msgid "Unable to copy recovery code"
msgstr "No se pudo copiar el código de recuperación"
-#: apps/web/src/components/forms/token.tsx:110
+#: apps/web/src/components/forms/token.tsx:111
msgid "Unable to copy token"
msgstr "No se pudo copiar el token"
@@ -5657,7 +5655,7 @@ msgstr "No se pudo crear acceso directo a la plantilla. Por favor, inténtalo de
msgid "Unable to decline this team invitation at this time."
msgstr "No se pudo rechazar esta invitación al equipo en este momento."
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:84
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:83
msgid "Unable to delete invitation. Please try again."
msgstr "No se pudo eliminar la invitación. Por favor, inténtalo de nuevo."
@@ -5694,7 +5692,7 @@ msgstr "No se pudo eliminar la verificación de correo electrónico en este mome
msgid "Unable to remove team email at this time. Please try again."
msgstr "No se pudo eliminar el correo electrónico del equipo en este momento. Por favor, inténtalo de nuevo."
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:67
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:66
msgid "Unable to resend invitation. Please try again."
msgstr "No se pudo reenviar la invitación. Por favor, inténtalo de nuevo."
@@ -5751,7 +5749,7 @@ msgstr "No pagado"
msgid "Update"
msgstr "Actualizar"
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:211
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:202
msgid "Update Banner"
msgstr "Actualizar banner"
@@ -5763,7 +5761,7 @@ msgstr "Actualizar clave de acceso"
msgid "Update password"
msgstr "Actualizar contraseña"
-#: apps/web/src/components/forms/profile.tsx:151
+#: apps/web/src/components/forms/profile.tsx:142
msgid "Update profile"
msgstr "Actualizar perfil"
@@ -5806,7 +5804,7 @@ msgstr "Actualizar webhook"
msgid "Updating password..."
msgstr "Actualizando contraseña..."
-#: apps/web/src/components/forms/profile.tsx:151
+#: apps/web/src/components/forms/profile.tsx:142
msgid "Updating profile..."
msgstr "Actualizando perfil..."
@@ -5877,7 +5875,7 @@ msgstr "Usar Código de Respaldo"
msgid "Use Template"
msgstr "Usar Plantilla"
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:76
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:75
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:45
msgid "User"
msgstr "Usuario"
@@ -5890,6 +5888,7 @@ msgstr "El usuario no tiene contraseña."
msgid "User ID"
msgstr "ID de Usuario"
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:61
#: apps/web/src/app/(dashboard)/admin/users/[id]/disable-user-dialog.tsx:55
#: apps/web/src/app/(dashboard)/admin/users/[id]/enable-user-dialog.tsx:55
msgid "User not found."
@@ -6106,10 +6105,6 @@ msgstr "Encontramos un error al eliminar el enlace directo de la plantilla. Por
msgid "We encountered an error while updating the webhook. Please try again later."
msgstr "Encontramos un error al actualizar el webhook. Por favor, inténtalo de nuevo más tarde."
-#: apps/web/src/components/forms/token.tsx:145
-msgid "We encountered an unknown error while attempting create the new token. Please try again later."
-msgstr "Encontramos un error desconocido al intentar crear el nuevo token. Por favor, inténtalo de nuevo más tarde."
-
#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:102
msgid "We encountered an unknown error while attempting to add this email. Please try again later."
msgstr "Encontramos un error desconocido al intentar añadir este correo electrónico. Por favor, inténtalo de nuevo más tarde."
@@ -6134,7 +6129,6 @@ msgstr "Encontramos un error desconocido al intentar eliminar este equipo. Por f
msgid "We encountered an unknown error while attempting to delete this token. Please try again later."
msgstr "Encontramos un error desconocido al intentar eliminar este token. Por favor, inténtalo de nuevo más tarde."
-#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:70
#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:58
msgid "We encountered an unknown error while attempting to delete your account. Please try again later."
msgstr "Encontramos un error desconocido al intentar eliminar tu cuenta. Por favor, inténtalo de nuevo más tarde."
@@ -6175,7 +6169,6 @@ msgstr "Encontramos un error desconocido al intentar revocar el acceso. Por favo
msgid "We encountered an unknown error while attempting to save your details. Please try again later."
msgstr "Encontramos un error desconocido al intentar guardar tus datos. Por favor, inténtalo de nuevo más tarde."
-#: apps/web/src/components/forms/profile.tsx:89
#: apps/web/src/components/forms/signin.tsx:273
#: apps/web/src/components/forms/signin.tsx:288
#: apps/web/src/components/forms/signin.tsx:304
@@ -6189,7 +6182,7 @@ msgstr "Encontramos un error desconocido al intentar iniciar sesión. Por favor,
msgid "We encountered an unknown error while attempting to sign you Up. Please try again later."
msgstr "Encontramos un error desconocido al intentar registrarte. Por favor, inténtalo de nuevo más tarde."
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:92
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:84
msgid "We encountered an unknown error while attempting to update the banner. Please try again later."
msgstr "Encontramos un error desconocido al intentar actualizar el banner. Por favor, inténtalo de nuevo más tarde."
@@ -6218,6 +6211,10 @@ msgstr "Encontramos un error desconocido al intentar actualizar tu equipo. Por f
msgid "We encountered an unknown error while attempting update the team email. Please try again later."
msgstr "Encontramos un error desconocido al intentar actualizar el correo electrónico del equipo. Por favor, inténtalo de nuevo más tarde."
+#: apps/web/src/components/forms/profile.tsx:81
+msgid "We encountered an unknown error while attempting update your profile. Please try again later."
+msgstr ""
+
#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:80
msgid "We have sent a confirmation email for verification."
msgstr "Hemos enviado un correo electrónico de confirmación para la verificación."
@@ -6230,7 +6227,7 @@ msgstr "Necesitamos un nombre de usuario para crear tu perfil"
msgid "We need your signature to sign documents"
msgstr "Necesitamos su firma para firmar documentos"
-#: apps/web/src/components/forms/token.tsx:111
+#: apps/web/src/components/forms/token.tsx:112
msgid "We were unable to copy the token to your clipboard. Please try again."
msgstr "No pudimos copiar el token en tu portapapeles. Por favor, inténtalo de nuevo."
@@ -6450,6 +6447,10 @@ msgstr "Actualmente estás actualizando la clave <0>{passkeyName}0>."
msgid "You are not a member of this team."
msgstr "No eres miembro de este equipo."
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:62
+msgid "You are not authorized to delete this user."
+msgstr ""
+
#: apps/web/src/app/(dashboard)/admin/users/[id]/disable-user-dialog.tsx:56
msgid "You are not authorized to disable this user."
msgstr "No estás autorizado para deshabilitar a este usuario."
@@ -6514,7 +6515,7 @@ msgstr "No puedes modificar a un miembro del equipo que tenga un rol más alto q
msgid "You cannot upload documents at this time."
msgstr "No puede cargar documentos en este momento."
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:105
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:103
msgid "You cannot upload encrypted PDFs"
msgstr "No puedes subir PDFs encriptados"
@@ -6522,6 +6523,10 @@ msgstr "No puedes subir PDFs encriptados"
msgid "You do not currently have a customer record, this should not happen. Please contact support for assistance."
msgstr "Actualmente no tienes un registro de cliente, esto no debería suceder. Por favor contacta a soporte para obtener asistencia."
+#: apps/web/src/components/forms/token.tsx:141
+msgid "You do not have permission to create a token for this team"
+msgstr ""
+
#: packages/email/template-components/template-document-cancel.tsx:35
msgid "You don't need to sign it anymore."
msgstr "Ya no necesitas firmarlo."
@@ -6586,6 +6591,10 @@ msgstr "Aún no has creado ni recibido documentos. Para crear un documento, por
msgid "You have reached the maximum limit of {0} direct templates. <0>Upgrade your account to continue!0>"
msgstr "Has alcanzado el límite máximo de {0} plantillas directas. <0>¡Actualiza tu cuenta para continuar!0>"
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:106
+msgid "You have reached your document limit for this month. Please upgrade your plan."
+msgstr ""
+
#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:56
#: packages/ui/primitives/document-dropzone.tsx:69
msgid "You have reached your document limit."
@@ -6687,7 +6696,7 @@ msgstr "Tu cuenta ha sido eliminada con éxito."
msgid "Your avatar has been updated successfully."
msgstr "Tu avatar ha sido actualizado con éxito."
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:75
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:74
msgid "Your banner has been updated successfully."
msgstr "Tu banner ha sido actualizado con éxito."
@@ -6707,7 +6716,7 @@ msgstr "Tu plan actual está vencido. Por favor actualiza tu información de pag
msgid "Your direct signing templates"
msgstr "Tus {0} plantillas de firma directa"
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:128
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:123
msgid "Your document failed to upload."
msgstr "Tu documento no se pudo cargar."
@@ -6778,7 +6787,7 @@ msgstr "Tu contraseña ha sido actualizada."
msgid "Your payment for teams is overdue. Please settle the payment to avoid any service disruptions."
msgstr "Tu pago por equipos está vencido. Por favor, salda el pago para evitar interrupciones en el servicio."
-#: apps/web/src/components/forms/profile.tsx:73
+#: apps/web/src/components/forms/profile.tsx:72
msgid "Your profile has been updated successfully."
msgstr "Tu perfil ha sido actualizado con éxito."
diff --git a/packages/lib/translations/fr/web.po b/packages/lib/translations/fr/web.po
index 1ca77b57d..e6cd7de98 100644
--- a/packages/lib/translations/fr/web.po
+++ b/packages/lib/translations/fr/web.po
@@ -108,7 +108,7 @@ msgstr "{0} a rejoint l'équipe {teamName} sur Documenso"
msgid "{0} left the team {teamName} on Documenso"
msgstr "{0} a quitté l'équipe {teamName} sur Documenso"
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:150
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:145
msgid "{0} of {1} documents remaining this month."
msgstr "{0} des {1} documents restants ce mois-ci."
@@ -492,7 +492,7 @@ msgstr "Un moyen d'imprimer ou de télécharger des documents pour vos dossiers"
msgid "A new member has joined your team"
msgstr "Un nouveau membre a rejoint votre équipe"
-#: apps/web/src/components/forms/token.tsx:127
+#: apps/web/src/components/forms/token.tsx:128
msgid "A new token was created successfully."
msgstr "Un nouveau token a été créé avec succès."
@@ -595,7 +595,7 @@ msgstr "Invitation d'équipe acceptée"
msgid "Account Authentication"
msgstr "Authentification de compte"
-#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:50
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:51
#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:47
msgid "Account deleted"
msgstr "Compte supprimé"
@@ -617,19 +617,19 @@ msgid "Acknowledgment"
msgstr "Reconnaissance"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:107
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:98
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:97
#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:117
#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:159
-#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:116
+#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:115
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:46
msgid "Action"
msgstr "Action"
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:79
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:176
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:175
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:140
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:131
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:140
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:130
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:139
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:116
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:125
msgid "Actions"
@@ -868,16 +868,12 @@ msgstr "Un e-mail contenant une invitation sera envoyé à chaque membre."
msgid "An email requesting the transfer of this team has been sent."
msgstr "Un e-mail demandant le transfert de cette équipe a été envoyé."
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:60
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:83
-#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:59
#: apps/web/src/app/(signing)/sign/[token]/complete/claim-account.tsx:100
#: apps/web/src/components/forms/avatar-image.tsx:122
#: apps/web/src/components/forms/password.tsx:92
-#: apps/web/src/components/forms/profile.tsx:81
#: apps/web/src/components/forms/reset-password.tsx:95
#: apps/web/src/components/forms/signup.tsx:112
-#: apps/web/src/components/forms/token.tsx:137
+#: apps/web/src/components/forms/token.tsx:146
#: apps/web/src/components/forms/v2/signup.tsx:166
msgid "An error occurred"
msgstr "Une erreur est survenue"
@@ -907,6 +903,10 @@ msgstr "Une erreur est survenue lors de la création du document à partir d'un
msgid "An error occurred while creating the webhook. Please try again."
msgstr "Une erreur est survenue lors de la création du webhook. Veuillez réessayer."
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:63
+msgid "An error occurred while deleting the user."
+msgstr ""
+
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:120
msgid "An error occurred while disabling direct link signing."
msgstr "Une erreur est survenue lors de la désactivation de la signature par lien direct."
@@ -1007,13 +1007,12 @@ msgstr "Une erreur est survenue lors de la mise à jour de la signature."
msgid "An error occurred while updating your profile."
msgstr "Une erreur est survenue lors de la mise à jour de votre profil."
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:117
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:108
msgid "An error occurred while uploading your document."
msgstr "Une erreur est survenue lors du téléchargement de votre document."
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:66
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:89
-#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:65
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:58
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:81
#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:55
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:54
#: apps/web/src/components/(dashboard)/common/command-menu.tsx:301
@@ -1030,7 +1029,7 @@ msgstr "Une erreur est survenue lors du téléchargement de votre document."
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:100
#: apps/web/src/components/(teams)/forms/update-team-form.tsx:93
#: apps/web/src/components/forms/avatar-image.tsx:94
-#: apps/web/src/components/forms/profile.tsx:87
+#: apps/web/src/components/forms/profile.tsx:79
#: apps/web/src/components/forms/public-profile-claim-dialog.tsx:113
#: apps/web/src/components/forms/public-profile-form.tsx:104
#: apps/web/src/components/forms/signin.tsx:249
@@ -1040,7 +1039,6 @@ msgstr "Une erreur est survenue lors du téléchargement de votre document."
#: apps/web/src/components/forms/signin.tsx:302
#: apps/web/src/components/forms/signup.tsx:124
#: apps/web/src/components/forms/signup.tsx:138
-#: apps/web/src/components/forms/token.tsx:143
#: apps/web/src/components/forms/v2/signup.tsx:187
#: apps/web/src/components/forms/v2/signup.tsx:201
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:140
@@ -1052,11 +1050,11 @@ msgstr "Une erreur inconnue est survenue"
msgid "Any payment methods attached to this team will remain attached to this team. Please contact us if you need to update this information."
msgstr "Tous les moyens de paiement associés à cette équipe resteront associés à cette équipe. Veuillez nous contacter si vous avez besoin de mettre à jour ces informations."
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:220
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:219
msgid "Any Source"
msgstr "Toute source"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:200
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:199
msgid "Any Status"
msgstr "Tout statut"
@@ -1169,7 +1167,7 @@ msgstr "Retour"
msgid "Back to Documents"
msgstr "Retour aux documents"
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:146
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:137
msgid "Background Color"
msgstr "Couleur d'arrière-plan"
@@ -1182,7 +1180,7 @@ msgstr "Code de sauvegarde"
msgid "Backup codes"
msgstr "Codes de sauvegarde"
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:74
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:73
msgid "Banner Updated"
msgstr "Bannière mise à jour"
@@ -1219,7 +1217,7 @@ msgstr "Préférences de branding"
msgid "Branding preferences updated"
msgstr "Préférences de branding mises à jour"
-#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:97
+#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:96
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:48
msgid "Browser"
msgstr "Navigateur"
@@ -1461,7 +1459,7 @@ msgstr "Compléter la signature"
msgid "Complete Viewing"
msgstr "Compléter la visualisation"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:203
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:202
#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:77
#: apps/web/src/components/formatter/document-status.tsx:28
#: packages/email/template-components/template-document-completed.tsx:35
@@ -1544,7 +1542,7 @@ msgstr "Consentement aux transactions électroniques"
msgid "Contact Information"
msgstr "Coordonnées"
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:189
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:180
msgid "Content"
msgstr "Contenu"
@@ -1742,7 +1740,7 @@ msgstr "Créez votre compte et commencez à utiliser la signature de documents
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:36
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:48
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:63
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:104
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:103
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:35
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:56
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:272
@@ -1786,7 +1784,7 @@ msgstr "Quotidien"
msgid "Dark Mode"
msgstr "Mode sombre"
-#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:68
+#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:67
#: apps/web/src/app/(signing)/sign/[token]/date-field.tsx:148
#: packages/ui/primitives/document-flow/add-fields.tsx:945
#: packages/ui/primitives/document-flow/types.ts:53
@@ -1851,25 +1849,25 @@ msgstr "supprimer {0}"
msgid "delete {teamName}"
msgstr "supprimer {teamName}"
-#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:136
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:133
msgid "Delete account"
msgstr "Supprimer le compte"
-#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:97
-#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:104
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:94
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:101
#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:72
#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:86
#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:93
msgid "Delete Account"
msgstr "Supprimer le compte"
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:135
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:125
msgid "Delete document"
msgstr "Supprimer le document"
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:85
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:98
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:105
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:75
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:88
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:95
msgid "Delete Document"
msgstr "Supprimer le document"
@@ -1886,11 +1884,11 @@ msgstr "Supprimer l'équipe"
msgid "Delete team member"
msgstr "Supprimer le membre de l'équipe"
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:88
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:78
msgid "Delete the document. This action is irreversible so proceed with caution."
msgstr "Supprimez le document. Cette action est irréversible, soyez prudent."
-#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:86
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:83
msgid "Delete the users account and all its contents. This action is irreversible and will cancel their subscription, so proceed with caution."
msgstr "Supprimez le compte de l'utilisateur et tout son contenu. Cette action est irréversible et annulera son abonnement, soyez prudent."
@@ -1915,7 +1913,7 @@ msgstr "Suppression du compte..."
msgid "Details"
msgstr "Détails"
-#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:73
+#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:72
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:244
msgid "Device"
msgstr "Appareil"
@@ -1934,8 +1932,8 @@ msgstr "lien direct"
msgid "Direct link"
msgstr "Lien direct"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:155
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:226
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:154
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:225
msgid "Direct Link"
msgstr "Lien direct"
@@ -2060,7 +2058,7 @@ msgstr "Document Approuvé"
#: apps/web/src/app/(signing)/sign/[token]/no-longer-available.tsx:40
#: packages/lib/server-only/document/delete-document.ts:251
-#: packages/lib/server-only/document/super-delete-document.ts:98
+#: packages/lib/server-only/document/super-delete-document.ts:101
msgid "Document Cancelled"
msgstr "Document Annulé"
@@ -2101,7 +2099,7 @@ msgstr "Document créé en utilisant un <0>lien direct0>"
msgid "Document Creation"
msgstr "Création de document"
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:51
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:50
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:182
#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:60
#: packages/lib/utils/document-audit-logs.ts:306
@@ -2112,7 +2110,7 @@ msgstr "Document supprimé"
msgid "Document deleted email"
msgstr "E-mail de document supprimé"
-#: packages/lib/server-only/document/send-delete-email.ts:82
+#: packages/lib/server-only/document/send-delete-email.ts:85
msgid "Document Deleted!"
msgstr "Document Supprimé !"
@@ -2302,7 +2300,7 @@ msgstr "Télécharger les journaux d'audit"
msgid "Download Certificate"
msgstr "Télécharger le certificat"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:209
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:208
#: apps/web/src/components/formatter/document-status.tsx:34
#: packages/lib/constants/document.ts:13
msgid "Draft"
@@ -2385,7 +2383,7 @@ msgstr "Divulgation de signature électronique"
#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:169
#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:153
#: apps/web/src/components/forms/forgot-password.tsx:81
-#: apps/web/src/components/forms/profile.tsx:122
+#: apps/web/src/components/forms/profile.tsx:113
#: apps/web/src/components/forms/signin.tsx:339
#: apps/web/src/components/forms/signup.tsx:176
#: packages/lib/constants/document.ts:28
@@ -2490,7 +2488,7 @@ msgstr "Activer la signature dactylographiée"
msgid "Enable Typed Signatures"
msgstr "Activer les signatures tapées"
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:123
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:114
#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:138
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:74
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/[id]/page.tsx:142
@@ -2536,6 +2534,7 @@ msgid "Enter your text here"
msgstr "Entrez votre texte ici"
#: apps/web/src/app/(dashboard)/admin/documents/[id]/admin-actions.tsx:41
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:66
#: apps/web/src/app/(dashboard)/admin/users/[id]/disable-user-dialog.tsx:60
#: apps/web/src/app/(dashboard)/admin/users/[id]/enable-user-dialog.tsx:60
#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:80
@@ -2544,8 +2543,7 @@ msgstr "Entrez votre texte ici"
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:280
#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:325
#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:57
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:110
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:116
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:111
#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:155
#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:186
#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:226
@@ -2666,7 +2664,7 @@ msgstr "Champ non signé"
msgid "Fields"
msgstr "Champs"
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:129
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:124
msgid "File cannot be larger than {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB"
msgstr "Le fichier ne peut pas dépasser {APP_DOCUMENT_UPLOAD_SIZE_LIMIT} Mo"
@@ -2706,7 +2704,7 @@ msgstr "Signature gratuite"
#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:193
#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:392
#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:272
-#: apps/web/src/components/forms/profile.tsx:110
+#: apps/web/src/components/forms/profile.tsx:101
#: apps/web/src/components/forms/v2/signup.tsx:316
msgid "Full Name"
msgstr "Nom complet"
@@ -2894,10 +2892,6 @@ msgstr "Code invalide. Veuillez réessayer."
msgid "Invalid email"
msgstr "Email invalide"
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:104
-msgid "Invalid file"
-msgstr "Fichier invalide"
-
#: apps/web/src/app/(unauthenticated)/team/verify/email/[token]/page.tsx:33
#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:36
msgid "Invalid link"
@@ -2920,11 +2914,11 @@ msgstr "Invitation acceptée !"
msgid "Invitation declined"
msgstr "Invitation refusée"
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:78
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:77
msgid "Invitation has been deleted"
msgstr "L'invitation a été supprimée"
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:61
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:60
msgid "Invitation has been resent"
msgstr "L'invitation a été renvoyée"
@@ -2944,7 +2938,7 @@ msgstr "Inviter des membres"
msgid "Invite team members"
msgstr "Inviter des membres d'équipe"
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:126
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:125
msgid "Invited At"
msgstr "Invité à"
@@ -3641,7 +3635,7 @@ msgid "Payment overdue"
msgstr "Paiement en retard"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:131
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:206
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:205
#: apps/web/src/components/(teams)/tables/teams-member-page-data-table.tsx:82
#: apps/web/src/components/(teams)/tables/user-settings-teams-page-data-table.tsx:77
#: apps/web/src/components/document/document-read-only-fields.tsx:89
@@ -3865,7 +3859,7 @@ msgid "Profile is currently <0>visible0>."
msgstr "Le profil est actuellement <0>visible0>."
#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:74
-#: apps/web/src/components/forms/profile.tsx:72
+#: apps/web/src/components/forms/profile.tsx:71
msgid "Profile updated"
msgstr "Profil mis à jour"
@@ -3956,7 +3950,7 @@ msgid "Recent documents"
msgstr "Documents récents"
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:63
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:115
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:114
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:275
#: packages/lib/utils/document-audit-logs.ts:354
#: packages/lib/utils/document-audit-logs.ts:369
@@ -4071,7 +4065,7 @@ msgstr "Rappel : Veuillez {recipientActionVerb} votre document"
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:89
#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:159
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:54
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:164
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:163
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:165
#: apps/web/src/components/forms/avatar-image.tsx:166
#: packages/ui/primitives/document-flow/add-fields.tsx:1128
@@ -4112,7 +4106,7 @@ msgid "Reseal document"
msgstr "Rescellage du document"
#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:118
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:152
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:151
#: packages/ui/primitives/document-flow/add-subject.tsx:84
msgid "Resend"
msgstr "Renvoyer"
@@ -4197,7 +4191,7 @@ msgstr "Révoquer l'accès"
#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:318
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:163
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:80
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:121
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:120
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:103
msgid "Role"
msgstr "Rôle"
@@ -4529,7 +4523,7 @@ msgstr "S'inscrire avec OIDC"
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:286
#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:422
#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:301
-#: apps/web/src/components/forms/profile.tsx:132
+#: apps/web/src/components/forms/profile.tsx:123
#: packages/ui/primitives/document-flow/add-fields.tsx:841
#: packages/ui/primitives/document-flow/field-icon.tsx:52
#: packages/ui/primitives/document-flow/types.ts:49
@@ -4627,7 +4621,7 @@ msgstr "Les inscriptions sont désactivées."
msgid "Since {0}"
msgstr "Depuis {0}"
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:102
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:93
msgid "Site Banner"
msgstr "Bannière du site"
@@ -4677,8 +4671,8 @@ msgstr "Certains signataires n'ont pas été assignés à un champ de signature.
#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:64
#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:83
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:33
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:66
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:83
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:65
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:82
#: apps/web/src/components/(teams)/team-billing-portal-button.tsx:29
#: packages/ui/components/document/document-share-button.tsx:51
msgid "Something went wrong"
@@ -4717,6 +4711,10 @@ msgstr "Quelque chose a mal tourné !"
msgid "Something went wrong."
msgstr "Quelque chose a mal tourné."
+#: apps/web/src/components/forms/token.tsx:143
+msgid "Something went wrong. Please try again later."
+msgstr ""
+
#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:240
#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:154
msgid "Something went wrong. Please try again or contact support."
@@ -4730,7 +4728,7 @@ msgstr "Désolé, nous n'avons pas pu télécharger les journaux d'audit. Veuill
msgid "Sorry, we were unable to download the certificate. Please try again later."
msgstr "Désolé, nous n'avons pas pu télécharger le certificat. Veuillez réessayer plus tard."
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:133
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:132
msgid "Source"
msgstr "Source"
@@ -4741,7 +4739,7 @@ msgstr "Statistiques"
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:81
#: apps/web/src/app/(dashboard)/admin/subscriptions/page.tsx:32
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:73
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:125
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:124
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:94
#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:73
msgid "Status"
@@ -4796,8 +4794,8 @@ msgstr "Abonnements"
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:92
#: apps/web/src/components/(teams)/forms/update-team-form.tsx:67
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:27
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:60
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:77
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:59
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:76
#: apps/web/src/components/forms/public-profile-form.tsx:80
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:132
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:168
@@ -4879,7 +4877,7 @@ msgstr "Invitation d'équipe"
msgid "Team invitations have been sent."
msgstr "Les invitations d'équipe ont été envoyées."
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:107
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:106
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:84
msgid "Team Member"
msgstr "Membre de l'équipe"
@@ -4956,8 +4954,8 @@ msgstr "Équipes restreintes"
#: apps/web/src/app/(dashboard)/templates/[id]/edit/template-edit-page-view.tsx:64
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:39
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:143
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:223
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:142
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:222
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:148
#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:408
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:269
@@ -5020,7 +5018,7 @@ msgstr "Les modèles vous permettent de générer rapidement des documents avec
msgid "Text"
msgstr "Texte"
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:166
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:157
msgid "Text Color"
msgstr "Couleur du texte"
@@ -5032,7 +5030,7 @@ msgstr "Merci d'utiliser Documenso pour signer vos documents électroniquement.
msgid "That's okay, it happens! Click the button below to reset your password."
msgstr "C'est d'accord, cela arrive ! Cliquez sur le bouton ci-dessous pour réinitialiser votre mot de passe."
-#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:51
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:52
msgid "The account has been deleted successfully."
msgstr "Le compte a été supprimé avec succès."
@@ -5056,7 +5054,7 @@ msgstr "L'authentification requise pour que les destinataires signent le champ d
msgid "The authentication required for recipients to view the document."
msgstr "L'authentification requise pour que les destinataires visualisent le document."
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:197
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:188
msgid "The content to show in the banner, HTML is allowed"
msgstr "Le contenu à afficher dans la bannière, le HTML est autorisé"
@@ -5191,7 +5189,7 @@ msgstr "Le nom du signataire"
msgid "The signing link has been copied to your clipboard."
msgstr "Le lien de signature a été copié dans votre presse-papiers."
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:105
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:96
msgid "The site banner is a message that is shown at the top of the site. It can be used to display important information to your users."
msgstr "La bannière du site est un message affiché en haut du site. Elle peut être utilisée pour afficher des informations importantes à vos utilisateurs."
@@ -5223,7 +5221,7 @@ msgstr "Le modèle sera retiré de votre profil"
msgid "The template you are looking for may have been disabled, deleted or may have never existed."
msgstr "Le modèle que vous recherchez a peut-être été désactivé, supprimé ou n'a peut-être jamais existé."
-#: apps/web/src/components/forms/token.tsx:106
+#: apps/web/src/components/forms/token.tsx:107
msgid "The token was copied to your clipboard."
msgstr "Le token a été copié dans votre presse-papiers."
@@ -5266,8 +5264,8 @@ msgstr "Il n'y a pas encore de documents complétés. Les documents que vous ave
msgid "They have permission on your behalf to:"
msgstr "Ils ont la permission en votre nom de:"
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:110
-#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:109
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:100
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:106
#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:98
msgid "This action is not reversible. Please be certain."
msgstr "Cette action n'est pas réversible. Veuillez être sûr."
@@ -5320,11 +5318,11 @@ msgstr "Ce document est actuellement un brouillon et n'a pas été envoyé"
msgid "This document is password protected. Please enter the password to view the document."
msgstr "Ce document est protégé par mot de passe. Veuillez entrer le mot de passe pour visualiser le document."
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:147
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:146
msgid "This document was created by you or a team member using the template above."
msgstr "Ce document a été créé par vous ou un membre de l'équipe en utilisant le modèle ci-dessus."
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:159
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:158
msgid "This document was created using a direct link."
msgstr "Ce document a été créé en utilisant un lien direct."
@@ -5441,7 +5439,7 @@ msgstr "Cela sera envoyé au propriétaire du document une fois que le document
msgid "This will override any global settings."
msgstr "Cela remplacera tous les paramètres globaux."
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:71
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:70
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:44
msgid "Time"
msgstr "Temps"
@@ -5458,7 +5456,7 @@ msgstr "Fuseau horaire"
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:67
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:54
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:110
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:109
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:61
#: packages/ui/primitives/document-flow/add-settings.tsx:166
msgid "Title"
@@ -5472,13 +5470,13 @@ msgstr "Pour accepter cette invitation, vous devez créer un compte."
msgid "To change the email you must remove and add a new email address."
msgstr "Pour changer l'e-mail, vous devez supprimer et ajouter une nouvelle adresse e-mail."
-#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:116
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:113
#: apps/web/src/app/(dashboard)/admin/users/[id]/disable-user-dialog.tsx:111
#: apps/web/src/app/(dashboard)/admin/users/[id]/enable-user-dialog.tsx:101
msgid "To confirm, please enter the accounts email address <0/>({0})."
msgstr "Pour confirmer, veuillez entrer l'adresse e-mail du compte <0/>({0})."
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:117
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:107
msgid "To confirm, please enter the reason"
msgstr "Pour confirmer, veuillez entrer la raison"
@@ -5523,11 +5521,11 @@ msgstr "Basculer l'interrupteur pour afficher votre profil au public."
msgid "Token"
msgstr "Jeton"
-#: apps/web/src/components/forms/token.tsx:105
+#: apps/web/src/components/forms/token.tsx:106
msgid "Token copied to clipboard"
msgstr "Token copié dans le presse-papiers"
-#: apps/web/src/components/forms/token.tsx:126
+#: apps/web/src/components/forms/token.tsx:127
msgid "Token created"
msgstr "Token créé"
@@ -5645,7 +5643,7 @@ msgstr "Impossible de changer la langue pour le moment. Veuillez réessayer plus
msgid "Unable to copy recovery code"
msgstr "Impossible de copier le code de récupération"
-#: apps/web/src/components/forms/token.tsx:110
+#: apps/web/src/components/forms/token.tsx:111
msgid "Unable to copy token"
msgstr "Impossible de copier le token"
@@ -5657,7 +5655,7 @@ msgstr "Impossible de créer un accès direct au modèle. Veuillez réessayer pl
msgid "Unable to decline this team invitation at this time."
msgstr "Impossible de refuser cette invitation d'équipe pour le moment."
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:84
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:83
msgid "Unable to delete invitation. Please try again."
msgstr "Impossible de supprimer l'invitation. Veuillez réessayer."
@@ -5694,7 +5692,7 @@ msgstr "Impossible de retirer la vérification par e-mail pour le moment. Veuill
msgid "Unable to remove team email at this time. Please try again."
msgstr "Impossible de retirer l'e-mail de l'équipe pour le moment. Veuillez réessayer."
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:67
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:66
msgid "Unable to resend invitation. Please try again."
msgstr "Impossible de renvoyer l'invitation. Veuillez réessayer."
@@ -5751,7 +5749,7 @@ msgstr "Non payé"
msgid "Update"
msgstr "Mettre à jour"
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:211
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:202
msgid "Update Banner"
msgstr "Mettre à jour la bannière"
@@ -5763,7 +5761,7 @@ msgstr "Mettre à jour la clé d'accès"
msgid "Update password"
msgstr "Mettre à jour le mot de passe"
-#: apps/web/src/components/forms/profile.tsx:151
+#: apps/web/src/components/forms/profile.tsx:142
msgid "Update profile"
msgstr "Mettre à jour le profil"
@@ -5806,7 +5804,7 @@ msgstr "Mettre à jour le webhook"
msgid "Updating password..."
msgstr "Mise à jour du mot de passe..."
-#: apps/web/src/components/forms/profile.tsx:151
+#: apps/web/src/components/forms/profile.tsx:142
msgid "Updating profile..."
msgstr "Mise à jour du profil..."
@@ -5877,7 +5875,7 @@ msgstr "Utiliser le code de secours"
msgid "Use Template"
msgstr "Utiliser le modèle"
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:76
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:75
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:45
msgid "User"
msgstr "Utilisateur"
@@ -5890,6 +5888,7 @@ msgstr "L'utilisateur n'a pas de mot de passe."
msgid "User ID"
msgstr "ID utilisateur"
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:61
#: apps/web/src/app/(dashboard)/admin/users/[id]/disable-user-dialog.tsx:55
#: apps/web/src/app/(dashboard)/admin/users/[id]/enable-user-dialog.tsx:55
msgid "User not found."
@@ -6106,10 +6105,6 @@ msgstr "Une erreur s'est produite lors de la suppression du lien direct vers le
msgid "We encountered an error while updating the webhook. Please try again later."
msgstr "Une erreur s'est produite lors de la mise à jour du webhook. Veuillez réessayer plus tard."
-#: apps/web/src/components/forms/token.tsx:145
-msgid "We encountered an unknown error while attempting create the new token. Please try again later."
-msgstr "Une erreur inconnue s'est produite lors de la création de la nouvelle clé. Veuillez réessayer plus tard."
-
#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:102
msgid "We encountered an unknown error while attempting to add this email. Please try again later."
msgstr "Une erreur inconnue s'est produite lors de l'ajout de cet e-mail. Veuillez réessayer plus tard."
@@ -6134,7 +6129,6 @@ msgstr "Une erreur inconnue s'est produite lors de la suppression de cette équi
msgid "We encountered an unknown error while attempting to delete this token. Please try again later."
msgstr "Une erreur inconnue s'est produite lors de la suppression de ce token. Veuillez réessayer plus tard."
-#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:70
#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:58
msgid "We encountered an unknown error while attempting to delete your account. Please try again later."
msgstr "Une erreur inconnue s'est produite lors de la suppression de votre compte. Veuillez réessayer plus tard."
@@ -6175,7 +6169,6 @@ msgstr "Une erreur inconnue s'est produite lors de la révocation de l'accès. V
msgid "We encountered an unknown error while attempting to save your details. Please try again later."
msgstr "Une erreur inconnue s'est produite lors de l'enregistrement de vos détails. Veuillez réessayer plus tard."
-#: apps/web/src/components/forms/profile.tsx:89
#: apps/web/src/components/forms/signin.tsx:273
#: apps/web/src/components/forms/signin.tsx:288
#: apps/web/src/components/forms/signin.tsx:304
@@ -6189,7 +6182,7 @@ msgstr "Une erreur inconnue s'est produite lors de la connexion. Veuillez réess
msgid "We encountered an unknown error while attempting to sign you Up. Please try again later."
msgstr "Une erreur inconnue s'est produite lors de l'inscription. Veuillez réessayer plus tard."
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:92
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:84
msgid "We encountered an unknown error while attempting to update the banner. Please try again later."
msgstr "Une erreur inconnue s'est produite lors de la mise à jour de la bannière. Veuillez réessayer plus tard."
@@ -6218,6 +6211,10 @@ msgstr "Une erreur inconnue s'est produite lors de la mise à jour de votre équ
msgid "We encountered an unknown error while attempting update the team email. Please try again later."
msgstr "Une erreur inconnue s'est produite lors de la mise à jour de l'e-mail de l'équipe. Veuillez réessayer plus tard."
+#: apps/web/src/components/forms/profile.tsx:81
+msgid "We encountered an unknown error while attempting update your profile. Please try again later."
+msgstr ""
+
#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:80
msgid "We have sent a confirmation email for verification."
msgstr "Nous avons envoyé un e-mail de confirmation pour vérification."
@@ -6230,7 +6227,7 @@ msgstr "Nous avons besoin d'un nom d'utilisateur pour créer votre profil"
msgid "We need your signature to sign documents"
msgstr "Nous avons besoin de votre signature pour signer des documents"
-#: apps/web/src/components/forms/token.tsx:111
+#: apps/web/src/components/forms/token.tsx:112
msgid "We were unable to copy the token to your clipboard. Please try again."
msgstr "Nous n'avons pas pu copier le token dans votre presse-papiers. Veuillez réessayer."
@@ -6450,6 +6447,10 @@ msgstr "Vous mettez à jour actuellement la clé de passkey <0>{passkeyName}0>
msgid "You are not a member of this team."
msgstr "Vous n'êtes pas membre de cette équipe."
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:62
+msgid "You are not authorized to delete this user."
+msgstr ""
+
#: apps/web/src/app/(dashboard)/admin/users/[id]/disable-user-dialog.tsx:56
msgid "You are not authorized to disable this user."
msgstr "Vous n'êtes pas autorisé à désactiver cet utilisateur."
@@ -6514,7 +6515,7 @@ msgstr "Vous ne pouvez pas modifier un membre de l'équipe qui a un rôle plus
msgid "You cannot upload documents at this time."
msgstr "Vous ne pouvez pas télécharger de documents pour le moment."
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:105
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:103
msgid "You cannot upload encrypted PDFs"
msgstr "Vous ne pouvez pas télécharger de PDF cryptés"
@@ -6522,6 +6523,10 @@ msgstr "Vous ne pouvez pas télécharger de PDF cryptés"
msgid "You do not currently have a customer record, this should not happen. Please contact support for assistance."
msgstr "Vous n'avez actuellement pas de dossier client, cela ne devrait pas se produire. Veuillez contacter le support pour obtenir de l'aide."
+#: apps/web/src/components/forms/token.tsx:141
+msgid "You do not have permission to create a token for this team"
+msgstr ""
+
#: packages/email/template-components/template-document-cancel.tsx:35
msgid "You don't need to sign it anymore."
msgstr "Vous n'avez plus besoin de le signer."
@@ -6586,6 +6591,10 @@ msgstr "Vous n'avez pas encore créé ou reçu de documents. Pour créer un docu
msgid "You have reached the maximum limit of {0} direct templates. <0>Upgrade your account to continue!0>"
msgstr "Vous avez atteint la limite maximale de {0} modèles directs. <0>Mettez à niveau votre compte pour continuer !0>"
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:106
+msgid "You have reached your document limit for this month. Please upgrade your plan."
+msgstr ""
+
#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:56
#: packages/ui/primitives/document-dropzone.tsx:69
msgid "You have reached your document limit."
@@ -6687,7 +6696,7 @@ msgstr "Votre compte a été supprimé avec succès."
msgid "Your avatar has been updated successfully."
msgstr "Votre avatar a été mis à jour avec succès."
-#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:75
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:74
msgid "Your banner has been updated successfully."
msgstr "Votre bannière a été mise à jour avec succès."
@@ -6707,7 +6716,7 @@ msgstr "Votre plan actuel est en retard. Veuillez mettre à jour vos information
msgid "Your direct signing templates"
msgstr "Vos modèles de signature directe"
-#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:128
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:123
msgid "Your document failed to upload."
msgstr "Votre document a échoué à se télécharger."
@@ -6778,7 +6787,7 @@ msgstr "Votre mot de passe a été mis à jour."
msgid "Your payment for teams is overdue. Please settle the payment to avoid any service disruptions."
msgstr "Votre paiement pour les équipes est en retard. Veuillez régler le paiement pour éviter toute interruption de service."
-#: apps/web/src/components/forms/profile.tsx:73
+#: apps/web/src/components/forms/profile.tsx:72
msgid "Your profile has been updated successfully."
msgstr "Votre profil a été mis à jour avec succès."
diff --git a/packages/lib/types/field-meta.ts b/packages/lib/types/field-meta.ts
index a6d629a20..baa8d94b5 100644
--- a/packages/lib/types/field-meta.ts
+++ b/packages/lib/types/field-meta.ts
@@ -120,12 +120,11 @@ export type TFieldMetaSchema = z.infer;
export const ZFieldAndMetaSchema = z.discriminatedUnion('type', [
z.object({
type: z.literal(FieldType.SIGNATURE),
- // Do not use z.undefined(), or void since this will create an invalid schema for Speakeasy SDK generation.
- fieldMeta: z.literal(undefined),
+ fieldMeta: z.undefined(),
}),
z.object({
type: z.literal(FieldType.FREE_SIGNATURE),
- fieldMeta: z.literal(undefined), // Same as above.
+ fieldMeta: z.undefined(),
}),
z.object({
type: z.literal(FieldType.INITIALS),
diff --git a/packages/trpc/client/guards.ts b/packages/trpc/client/guards.ts
deleted file mode 100644
index 5a37eec30..000000000
--- a/packages/trpc/client/guards.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { TRPCClientError } from '@trpc/client';
-
-import { AppRouter } from '../server/router';
-
-export const isTRPCBadRequestError = (err: unknown): err is TRPCClientError => {
- return err instanceof TRPCClientError && err.shape?.code === 'BAD_REQUEST';
-};
diff --git a/packages/trpc/client/index.ts b/packages/trpc/client/index.ts
index a91021f97..51cda4406 100644
--- a/packages/trpc/client/index.ts
+++ b/packages/trpc/client/index.ts
@@ -1,24 +1,22 @@
-import { createTRPCProxyClient, httpBatchLink, httpLink, splitLink } from '@trpc/client';
+import { createTRPCClient, httpBatchLink, httpLink, splitLink } from '@trpc/client';
import SuperJSON from 'superjson';
import { getBaseUrl } from '@documenso/lib/universal/get-base-url';
import type { AppRouter } from '../server/router';
-export const trpc = createTRPCProxyClient({
- transformer: SuperJSON,
-
+export const trpc = createTRPCClient({
links: [
splitLink({
condition: (op) => op.context.skipBatch === true,
true: httpLink({
url: `${getBaseUrl()}/api/trpc`,
+ transformer: SuperJSON,
}),
false: httpBatchLink({
url: `${getBaseUrl()}/api/trpc`,
+ transformer: SuperJSON,
}),
}),
],
});
-
-export { TRPCClientError } from '@trpc/client';
diff --git a/packages/trpc/package.json b/packages/trpc/package.json
index 8a5518c42..5a858fbe6 100644
--- a/packages/trpc/package.json
+++ b/packages/trpc/package.json
@@ -12,15 +12,16 @@
"dependencies": {
"@documenso/lib": "*",
"@documenso/prisma": "*",
- "@tanstack/react-query": "^4.32.0",
- "@trpc/client": "^10.36.0",
- "@trpc/next": "^10.36.0",
- "@trpc/react-query": "^10.36.0",
- "@trpc/server": "^10.36.0",
+ "@tanstack/react-query": "5.59.15",
+ "@trpc/client": "11.0.0-rc.648",
+ "@trpc/next": "11.0.0-rc.648",
+ "@trpc/react-query": "11.0.0-rc.648",
+ "@trpc/server": "11.0.0-rc.648",
"@ts-rest/core": "^3.30.5",
"@ts-rest/next": "^3.30.5",
"luxon": "^3.4.0",
"superjson": "^1.13.1",
+ "trpc-to-openapi": "2.0.4",
"ts-pattern": "^5.0.5",
"zod": "3.24.1"
}
diff --git a/packages/trpc/react/index.tsx b/packages/trpc/react/index.tsx
index 846fe9e1a..f31ff0d6f 100644
--- a/packages/trpc/react/index.tsx
+++ b/packages/trpc/react/index.tsx
@@ -63,17 +63,18 @@ export function TrpcProvider({ children, headers }: TrpcProviderProps) {
const [trpcClient] = useState(() =>
trpc.createClient({
- transformer: SuperJSON,
links: [
splitLink({
condition: (op) => op.context.skipBatch === true,
true: httpLink({
url: `${getBaseUrl()}/api/trpc`,
headers,
+ transformer: SuperJSON,
}),
false: httpBatchLink({
url: `${getBaseUrl()}/api/trpc`,
headers,
+ transformer: SuperJSON,
}),
}),
],
diff --git a/packages/trpc/server/admin-router/router.ts b/packages/trpc/server/admin-router/router.ts
index 32e14cbc1..e8a999629 100644
--- a/packages/trpc/server/admin-router/router.ts
+++ b/packages/trpc/server/admin-router/router.ts
@@ -106,14 +106,6 @@ export const adminRouter = router({
deleteUser: adminProcedure.input(ZAdminDeleteUserMutationSchema).mutation(async ({ input }) => {
const { id } = input;
- const user = await getUserById({ id }).catch(() => null);
-
- if (!user) {
- throw new AppError(AppErrorCode.NOT_FOUND, {
- message: 'User not found',
- });
- }
-
return await deleteUser({ id });
}),
diff --git a/packages/trpc/server/context.ts b/packages/trpc/server/context.ts
index b9dbd9cb0..4ed5be40f 100644
--- a/packages/trpc/server/context.ts
+++ b/packages/trpc/server/context.ts
@@ -10,7 +10,11 @@ type CreateTrpcContext = CreateNextContextOptions & {
requestSource: 'apiV1' | 'apiV2' | 'app';
};
-export const createTrpcContext = async ({ req, res, requestSource }: CreateTrpcContext) => {
+export const createTrpcContext = async ({
+ req,
+ res,
+ requestSource,
+}: Omit) => {
const { session, user } = await getServerSession({ req, res });
const metadata: ApiRequestMetadata = {
diff --git a/packages/trpc/server/document-router/router.ts b/packages/trpc/server/document-router/router.ts
index a578d4edc..daa180c3a 100644
--- a/packages/trpc/server/document-router/router.ts
+++ b/packages/trpc/server/document-router/router.ts
@@ -5,7 +5,7 @@ import { z } from 'zod';
import { getServerLimits } from '@documenso/ee/server-only/limits/server';
import { NEXT_PUBLIC_WEBAPP_URL } from '@documenso/lib/constants/app';
import { DOCUMENSO_ENCRYPTION_KEY } from '@documenso/lib/constants/crypto';
-import { AppError } from '@documenso/lib/errors/app-error';
+import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
import { encryptSecondaryData } from '@documenso/lib/server-only/crypto/encrypt';
import { createDocumentData } from '@documenso/lib/server-only/document-data/create-document-data';
import { upsertDocumentMeta } from '@documenso/lib/server-only/document-meta/upsert-document-meta';
@@ -186,9 +186,9 @@ export const documentRouter = router({
const { remaining } = await getServerLimits({ email: ctx.user.email, teamId });
if (remaining.documents <= 0) {
- throw new TRPCError({
- code: 'BAD_REQUEST',
+ throw new AppError(AppErrorCode.LIMIT_EXCEEDED, {
message: 'You have reached your document limit for this month. Please upgrade your plan.',
+ statusCode: 400,
});
}
@@ -246,9 +246,9 @@ export const documentRouter = router({
const { remaining } = await getServerLimits({ email: ctx.user.email, teamId });
if (remaining.documents <= 0) {
- throw new TRPCError({
- code: 'BAD_REQUEST',
+ throw new AppError(AppErrorCode.LIMIT_EXCEEDED, {
message: 'You have reached your document limit for this month. Please upgrade your plan.',
+ statusCode: 400,
});
}
diff --git a/packages/trpc/server/field-router/router.ts b/packages/trpc/server/field-router/router.ts
index 53f9059e6..04596000d 100644
--- a/packages/trpc/server/field-router/router.ts
+++ b/packages/trpc/server/field-router/router.ts
@@ -219,14 +219,6 @@ export const fieldRouter = router({
* Todo: Refactor to setFieldsForDocument function.
*/
addFields: authenticatedProcedure
- // .meta({
- // openapi: {
- // method: 'POST',
- // path: '/document/{documentId}/field',
- // summary: 'Set document fields',
- // tags: ['Document Fields'],
- // },
- // })
.input(ZSetDocumentFieldsRequestSchema)
.output(ZSetDocumentFieldsResponseSchema)
.mutation(async ({ input, ctx }) => {
@@ -395,14 +387,6 @@ export const fieldRouter = router({
* Todo: Refactor to setFieldsForTemplate.
*/
addTemplateFields: authenticatedProcedure
- // .meta({
- // openapi: {
- // method: 'POST',
- // path: '/template/{templateId}/field',
- // summary: 'Set template fields',
- // tags: ['Template Fields'],
- // },
- // })
.input(ZSetFieldsForTemplateRequestSchema)
.output(ZSetFieldsForTemplateResponseSchema)
.mutation(async ({ input, ctx }) => {
diff --git a/packages/trpc/server/open-api.ts b/packages/trpc/server/open-api.ts
index 9911d71a1..c55042f93 100644
--- a/packages/trpc/server/open-api.ts
+++ b/packages/trpc/server/open-api.ts
@@ -1,4 +1,4 @@
-import { generateOpenApiDocument } from 'trpc-openapi';
+import { generateOpenApiDocument } from 'trpc-to-openapi';
import { NEXT_PUBLIC_WEBAPP_URL } from '@documenso/lib/constants/app';
diff --git a/packages/trpc/server/recipient-router/router.ts b/packages/trpc/server/recipient-router/router.ts
index 174fac758..4259a272f 100644
--- a/packages/trpc/server/recipient-router/router.ts
+++ b/packages/trpc/server/recipient-router/router.ts
@@ -217,16 +217,6 @@ export const recipientRouter = router({
* @private
*/
setDocumentRecipients: authenticatedProcedure
- // .meta({
- // openapi: {
- // method: 'POST',
- // path: '/document/recipient/set',
- // summary: 'Set document recipients',
- // description:
- // 'This will replace all recipients attached to the document. If the array contains existing recipients, they will be updated and the original fields will be retained.',
- // tags: ['Document Recipients'],
- // },
- // })
.input(ZSetDocumentRecipientsRequestSchema)
.output(ZSetDocumentRecipientsResponseSchema)
.mutation(async ({ input, ctx }) => {
@@ -390,16 +380,6 @@ export const recipientRouter = router({
* @private
*/
setTemplateRecipients: authenticatedProcedure
- // .meta({
- // openapi: {
- // method: 'POST',
- // path: '/template/recipient/set',
- // summary: 'Set template recipients',
- // description:
- // 'This will replace all recipients attached to the template. If the array contains existing recipients, they will be updated and the original fields will be retained.',
- // tags: ['Template Recipients'],
- // },
- // })
.input(ZSetTemplateRecipientsRequestSchema)
.output(ZSetTemplateRecipientsResponseSchema)
.mutation(async ({ input, ctx }) => {
diff --git a/packages/trpc/server/team-router/router.ts b/packages/trpc/server/team-router/router.ts
index 67eda92de..292dc85db 100644
--- a/packages/trpc/server/team-router/router.ts
+++ b/packages/trpc/server/team-router/router.ts
@@ -91,7 +91,6 @@ export const teamRouter = router({
// },
// })
.input(ZFindTeamsQuerySchema)
- .output(z.unknown())
.query(async ({ input, ctx }) => {
return await findTeams({
userId: ctx.user.id,
@@ -110,7 +109,6 @@ export const teamRouter = router({
// },
// })
.input(ZGetTeamQuerySchema)
- .output(z.unknown())
.query(async ({ input, ctx }) => {
return await getTeamById({ teamId: input.teamId, userId: ctx.user.id });
}),
@@ -126,7 +124,6 @@ export const teamRouter = router({
// },
// })
.input(ZCreateTeamMutationSchema)
- .output(z.unknown())
.mutation(async ({ input, ctx }) => {
return await createTeam({
userId: ctx.user.id,
@@ -145,7 +142,6 @@ export const teamRouter = router({
// },
// })
.input(ZUpdateTeamMutationSchema)
- .output(z.unknown())
.mutation(async ({ input, ctx }) => {
return await updateTeam({
userId: ctx.user.id,
@@ -164,7 +160,6 @@ export const teamRouter = router({
// },
// })
.input(ZDeleteTeamMutationSchema)
- .output(z.unknown())
.mutation(async ({ input, ctx }) => {
return await deleteTeam({
userId: ctx.user.id,
@@ -184,7 +179,6 @@ export const teamRouter = router({
// },
// })
.input(ZLeaveTeamMutationSchema)
- .output(z.unknown())
.mutation(async ({ input, ctx }) => {
return await leaveTeam({
userId: ctx.user.id,
@@ -204,7 +198,6 @@ export const teamRouter = router({
// },
// })
.input(ZFindTeamMemberInvitesQuerySchema)
- .output(z.unknown())
.query(async ({ input, ctx }) => {
return await findTeamMemberInvites({
userId: ctx.user.id,
@@ -224,7 +217,6 @@ export const teamRouter = router({
// },
// })
.input(ZCreateTeamMemberInvitesMutationSchema)
- .output(z.unknown())
.mutation(async ({ input, ctx }) => {
return await createTeamMemberInvites({
userId: ctx.user.id,
@@ -245,7 +237,6 @@ export const teamRouter = router({
// },
// })
.input(ZResendTeamMemberInvitationMutationSchema)
- .output(z.unknown())
.mutation(async ({ input, ctx }) => {
await resendTeamMemberInvitation({
userId: ctx.user.id,
@@ -266,7 +257,6 @@ export const teamRouter = router({
// },
// })
.input(ZDeleteTeamMemberInvitationsMutationSchema)
- .output(z.unknown())
.mutation(async ({ input, ctx }) => {
return await deleteTeamMemberInvitations({
userId: ctx.user.id,
@@ -285,7 +275,6 @@ export const teamRouter = router({
// },
// })
.input(ZGetTeamMembersQuerySchema)
- .output(z.unknown())
.query(async ({ input, ctx }) => {
return await getTeamMembers({ teamId: input.teamId, userId: ctx.user.id });
}),
@@ -302,7 +291,6 @@ export const teamRouter = router({
// },
// })
.input(ZFindTeamMembersQuerySchema)
- .output(z.unknown())
.query(async ({ input, ctx }) => {
return await findTeamMembers({
userId: ctx.user.id,
@@ -321,7 +309,6 @@ export const teamRouter = router({
// },
// })
.input(ZUpdateTeamMemberMutationSchema)
- .output(z.unknown())
.mutation(async ({ input, ctx }) => {
return await updateTeamMember({
userId: ctx.user.id,
@@ -341,7 +328,6 @@ export const teamRouter = router({
// },
// })
.input(ZDeleteTeamMembersMutationSchema)
- .output(z.unknown())
.mutation(async ({ input, ctx }) => {
return await deleteTeamMembers({
userId: ctx.user.id,
@@ -400,7 +386,6 @@ export const teamRouter = router({
// },
// })
.input(ZUpdateTeamPublicProfileMutationSchema)
- .output(z.unknown())
.mutation(async ({ input, ctx }) => {
try {
const { teamId, bio, enabled } = input;
diff --git a/packages/trpc/server/template-router/router.ts b/packages/trpc/server/template-router/router.ts
index 7ef7efb48..13fc637de 100644
--- a/packages/trpc/server/template-router/router.ts
+++ b/packages/trpc/server/template-router/router.ts
@@ -369,7 +369,7 @@ export const templateRouter = router({
.meta({
openapi: {
method: 'POST',
- path: '/template/{templateId}/direct/toggle',
+ path: '/template/direct/toggle',
summary: 'Toggle direct link',
description: 'Enable or disable a direct link for a template',
tags: ['Template'],
diff --git a/packages/trpc/server/trpc.ts b/packages/trpc/server/trpc.ts
index 5de7dddeb..0556be6c2 100644
--- a/packages/trpc/server/trpc.ts
+++ b/packages/trpc/server/trpc.ts
@@ -1,6 +1,6 @@
import { TRPCError, initTRPC } from '@trpc/server';
import SuperJSON from 'superjson';
-import type { OpenApiMeta } from 'trpc-openapi';
+import type { AnyZodObject } from 'zod';
import { AppError, genericErrorCodeToTrpcErrorCodeMap } from '@documenso/lib/errors/app-error';
import { isAdmin } from '@documenso/lib/next-auth/guards/is-admin';
@@ -10,6 +10,26 @@ import { extractNextApiRequestMetadata } from '@documenso/lib/universal/extract-
import type { TrpcContext } from './context';
+// Can't import type from trpc-to-openapi because it breaks nextjs build, not sure why.
+type OpenApiMeta = {
+ openapi?: {
+ enabled?: boolean;
+ method: 'GET' | 'POST' | 'PATCH' | 'PUT' | 'DELETE';
+ path: `/${string}`;
+ summary?: string;
+ description?: string;
+ protect?: boolean;
+ tags?: string[];
+ // eslint-disable-next-line @typescript-eslint/ban-types
+ contentTypes?: ('application/json' | 'application/x-www-form-urlencoded' | (string & {}))[];
+ deprecated?: boolean;
+ requestHeaders?: AnyZodObject;
+ responseHeaders?: AnyZodObject;
+ successDescription?: string;
+ errorResponses?: number[] | Record;
+ };
+} & Record;
+
const t = initTRPC
.meta()
.context()
diff --git a/packages/ui/components/document/document-share-button.tsx b/packages/ui/components/document/document-share-button.tsx
index bfaeb6afd..9d6a27b03 100644
--- a/packages/ui/components/document/document-share-button.tsx
+++ b/packages/ui/components/document/document-share-button.tsx
@@ -60,7 +60,7 @@ export const DocumentShareButton = ({
const {
mutateAsync: createOrGetShareLink,
data: shareLink,
- isLoading: isCreatingOrGettingShareLink,
+ isPending: isCreatingOrGettingShareLink,
} = trpc.shareLink.createOrGetShareLink.useMutation();
const isLoading = isCreatingOrGettingShareLink || isCopyingShareLink;
From 9de3a32ceb3d7fce4126a8a13aabe421bda858c9 Mon Sep 17 00:00:00 2001
From: Mythie
Date: Mon, 20 Jan 2025 09:30:36 +1100
Subject: [PATCH 14/35] fix: pass team id to vanilla trpc client
---
.../documents/data-table-action-button.tsx | 13 ++++++++---
packages/trpc/client/index.ts | 22 +++++++++++++++++++
2 files changed, 32 insertions(+), 3 deletions(-)
diff --git a/apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx b/apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx
index 7d8f4b6a5..1194dfd01 100644
--- a/apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx
+++ b/apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx
@@ -50,9 +50,16 @@ export const DataTableActionButton = ({ row, team }: DataTableActionButtonProps)
const onDownloadClick = async () => {
try {
const document = !recipient
- ? await trpcClient.document.getDocumentById.query({
- documentId: row.id,
- })
+ ? await trpcClient.document.getDocumentById.query(
+ {
+ documentId: row.id,
+ },
+ {
+ context: {
+ teamId: team?.id?.toString(),
+ },
+ },
+ )
: await trpcClient.document.getDocumentByToken.query({
token: recipient.token,
});
diff --git a/packages/trpc/client/index.ts b/packages/trpc/client/index.ts
index 51cda4406..5f0e37ab6 100644
--- a/packages/trpc/client/index.ts
+++ b/packages/trpc/client/index.ts
@@ -12,10 +12,32 @@ export const trpc = createTRPCClient({
true: httpLink({
url: `${getBaseUrl()}/api/trpc`,
transformer: SuperJSON,
+ headers: (opts) => {
+ if (typeof opts.op.context.teamId === 'string') {
+ return {
+ 'x-team-id': opts.op.context.teamId,
+ };
+ }
+
+ return {};
+ },
}),
false: httpBatchLink({
url: `${getBaseUrl()}/api/trpc`,
transformer: SuperJSON,
+ headers: (opts) => {
+ const operationWithTeamId = opts.opList.find(
+ (op) => op.context.teamId && typeof op.context.teamId === 'string',
+ );
+
+ if (operationWithTeamId && typeof operationWithTeamId.context.teamId === 'string') {
+ return {
+ 'x-team-id': operationWithTeamId.context.teamId,
+ };
+ }
+
+ return {};
+ },
}),
}),
],
From 80dfbeb16fc8303d8d5d0bf24bed3abc18231c8a Mon Sep 17 00:00:00 2001
From: Ephraim Duncan <55143799+ephraimduncan@users.noreply.github.com>
Date: Sun, 19 Jan 2025 22:35:47 +0000
Subject: [PATCH 15/35] feat: add angular embedding docs (#1592)
---
.../pages/developers/embedding/_meta.json | 3 +-
.../pages/developers/embedding/angular.mdx | 90 +++++++++++++++++++
.../pages/developers/embedding/index.mdx | 21 +++--
3 files changed, 104 insertions(+), 10 deletions(-)
create mode 100644 apps/documentation/pages/developers/embedding/angular.mdx
diff --git a/apps/documentation/pages/developers/embedding/_meta.json b/apps/documentation/pages/developers/embedding/_meta.json
index 5b9b54921..96806de3e 100644
--- a/apps/documentation/pages/developers/embedding/_meta.json
+++ b/apps/documentation/pages/developers/embedding/_meta.json
@@ -5,5 +5,6 @@
"svelte": "Svelte Integration",
"solid": "Solid Integration",
"preact": "Preact Integration",
+ "angular": "Angular Integration",
"css-variables": "CSS Variables"
-}
\ No newline at end of file
+}
diff --git a/apps/documentation/pages/developers/embedding/angular.mdx b/apps/documentation/pages/developers/embedding/angular.mdx
new file mode 100644
index 000000000..5bd169b20
--- /dev/null
+++ b/apps/documentation/pages/developers/embedding/angular.mdx
@@ -0,0 +1,90 @@
+---
+title: Angular Integration
+description: Learn how to use our embedding SDK within your Angular application.
+---
+
+# Angular Integration
+
+Our Angular SDK provides a simple way to embed a signing experience within your Angular application. It supports both direct link templates and signing tokens.
+
+## Installation
+
+To install the SDK, run the following command:
+
+```bash
+npm install @documenso/embed-angular
+```
+
+## Usage
+
+To embed a signing experience, you'll need to provide the token for the document you want to embed. This can be done in a few different ways, depending on your use case.
+
+### Direct Link Template
+
+If you have a direct link template, you can simply provide the token for the template to the `EmbedDirectTemplate` component.
+
+```typescript
+import { Component } from '@angular/core';
+import { EmbedDirectTemplate } from '@documenso/embed-angular';
+
+@Component({
+ selector: 'app-embedding',
+ template: `
+
+ `,
+ standalone: true,
+ imports: [EmbedDirectTemplate],
+})
+export class EmbeddingComponent {
+ token = 'YOUR_TOKEN_HERE'; // Replace with the actual token
+}
+```
+
+#### Props
+
+| Prop | Type | Description |
+| ------------------- | ------------------- | ------------------------------------------------------------------------------------------ |
+| token | string | The token for the document you want to embed |
+| host | string (optional) | The host to be used for the signing experience, relevant for self-hosters |
+| name | string (optional) | The name the signer that will be used by default for signing |
+| lockName | boolean (optional) | Whether or not the name field should be locked disallowing modifications |
+| email | string (optional) | The email the signer that will be used by default for signing |
+| lockEmail | boolean (optional) | Whether or not the email field should be locked disallowing modifications |
+| onDocumentReady | function (optional) | A callback function that will be called when the document is loaded and ready to be signed |
+| onDocumentCompleted | function (optional) | A callback function that will be called when the document has been completed |
+| onDocumentError | function (optional) | A callback function that will be called when an error occurs with the document |
+| onFieldSigned | function (optional) | A callback function that will be called when a field is signed |
+| onFieldUnsigned | function (optional) | A callback function that will be called when a field is unsigned |
+
+### Signing Token
+
+If you have a signing token, you can provide it to the `EmbedSignDocument` component.
+
+```typescript
+import { Component } from '@angular/core';
+import { EmbedSignDocument } from '@documenso/embed-angular';
+
+@Component({
+ selector: 'app-embedding',
+ template: `
+
+ `,
+ standalone: true,
+ imports: [EmbedSignDocument],
+})
+export class EmbeddingComponent {
+ token = 'YOUR_TOKEN_HERE'; // Replace with the actual token
+}
+```
+
+#### Props
+
+| Prop | Type | Description |
+| ------------------- | ------------------- | ------------------------------------------------------------------------------------------ |
+| token | string | The token for the document you want to embed |
+| host | string (optional) | The host to be used for the signing experience, relevant for self-hosters |
+| name | string (optional) | The name the signer that will be used by default for signing |
+| lockName | boolean (optional) | Whether or not the name field should be locked disallowing modifications |
+| onDocumentReady | function (optional) | A callback function that will be called when the document is loaded and ready to be signed |
+| onDocumentCompleted | function (optional) | A callback function that will be called when the document has been completed |
+| onDocumentError | function (optional) | A callback function that will be called when an error occurs with the document |
diff --git a/apps/documentation/pages/developers/embedding/index.mdx b/apps/documentation/pages/developers/embedding/index.mdx
index 1675f4cbb..27d6f6f8f 100644
--- a/apps/documentation/pages/developers/embedding/index.mdx
+++ b/apps/documentation/pages/developers/embedding/index.mdx
@@ -5,7 +5,7 @@ description: Learn how to use embedding to bring signing to your own website or
# Embedding
-Our embedding feature lets you integrate our document signing experience into your own application or website. Whether you're building with React, Preact, Vue, Svelte, Solid, or using generalized web components, this guide will help you get started with embedding Documenso.
+Our embedding feature lets you integrate our document signing experience into your own application or website. Whether you're building with React, Preact, Vue, Svelte, Solid, Angular, or using generalized web components, this guide will help you get started with embedding Documenso.
## Availability
@@ -73,13 +73,14 @@ These customization options are available for both Direct Templates and Signing
We support embedding across a range of popular JavaScript frameworks, including:
-| Framework | Package |
-| --------- | -------------------------------------------------------------------------------- |
-| React | [@documenso/embed-react](https://www.npmjs.com/package/@documenso/embed-react) |
-| Preact | [@documenso/embed-preact](https://www.npmjs.com/package/@documenso/embed-preact) |
-| Vue | [@documenso/embed-vue](https://www.npmjs.com/package/@documenso/embed-vue) |
-| Svelte | [@documenso/embed-svelte](https://www.npmjs.com/package/@documenso/embed-svelte) |
-| Solid | [@documenso/embed-solid](https://www.npmjs.com/package/@documenso/embed-solid) |
+| Framework | Package |
+| --------- | ---------------------------------------------------------------------------------- |
+| React | [@documenso/embed-react](https://www.npmjs.com/package/@documenso/embed-react) |
+| Preact | [@documenso/embed-preact](https://www.npmjs.com/package/@documenso/embed-preact) |
+| Vue | [@documenso/embed-vue](https://www.npmjs.com/package/@documenso/embed-vue) |
+| Svelte | [@documenso/embed-svelte](https://www.npmjs.com/package/@documenso/embed-svelte) |
+| Solid | [@documenso/embed-solid](https://www.npmjs.com/package/@documenso/embed-solid) |
+| Angular | [@documenso/embed-angular](https://www.npmjs.com/package/@documenso/embed-angular) |
Additionally, we provide **web components** for more generalized use. However, please note that web components are still in their early stages and haven't been extensively tested.
@@ -127,7 +128,7 @@ This will show a dialog which will ask you to configure which recipient should b
## Embedding with Signing Tokens
-To embed the signing process for an ordinary document, you’ll need a **document signing token** for the recipient. This token provides the necessary access to load the document and facilitate the signing process securely.
+To embed the signing process for an ordinary document, you'll need a **document signing token** for the recipient. This token provides the necessary access to load the document and facilitate the signing process securely.
#### Instructions
@@ -164,6 +165,7 @@ Once you've obtained the appropriate tokens, you can integrate the signing exper
- [Vue](/developers/embedding/vue)
- [Svelte](/developers/embedding/svelte)
- [Solid](/developers/embedding/solid)
+- [Angular](/developers/embedding/angular)
If you're using **web components**, the integration process is slightly different. Keep in mind that web components are currently less tested but can still provide flexibility for general use cases.
@@ -174,4 +176,5 @@ If you're using **web components**, the integration process is slightly differen
- [Svelte Integration](/developers/embedding/svelte)
- [Solid Integration](/developers/embedding/solid)
- [Preact Integration](/developers/embedding/preact)
+- [Angular Integration](/developers/embedding/angular)
- [CSS Variables](/developers/embedding/css-variables)
From a28cdf437b90712605040de502a34a8fdaf4975a Mon Sep 17 00:00:00 2001
From: David Nguyen
Date: Mon, 20 Jan 2025 15:53:12 +1100
Subject: [PATCH 16/35] feat: add get field endpoints (#1599)
---
packages/trpc/server/field-router/router.ts | 37 ++++++++++++++++---
.../trpc/server/recipient-router/router.ts | 37 ++++++++++++++++---
2 files changed, 64 insertions(+), 10 deletions(-)
diff --git a/packages/trpc/server/field-router/router.ts b/packages/trpc/server/field-router/router.ts
index 04596000d..a05811675 100644
--- a/packages/trpc/server/field-router/router.ts
+++ b/packages/trpc/server/field-router/router.ts
@@ -47,15 +47,15 @@ export const fieldRouter = router({
/**
* @public
*/
- getField: authenticatedProcedure
+ getDocumentField: authenticatedProcedure
.meta({
openapi: {
method: 'GET',
- path: '/field/{fieldId}',
- summary: 'Get field',
+ path: '/document/field/{fieldId}',
+ summary: 'Get document field',
description:
- 'Returns a single field. If you want to retrieve all the fields for a document or template, use the "Get Document" or "Get Template" request.',
- tags: ['Document Fields', 'Template Fields'],
+ 'Returns a single field. If you want to retrieve all the fields for a document, use the "Get Document" endpoint.',
+ tags: ['Document Fields'],
},
})
.input(ZGetFieldRequestSchema)
@@ -273,6 +273,33 @@ export const fieldRouter = router({
return createdFields.fields[0];
}),
+ /**
+ * @public
+ */
+ getTemplateField: authenticatedProcedure
+ .meta({
+ openapi: {
+ method: 'GET',
+ path: '/template/field/{fieldId}',
+ summary: 'Get template field',
+ description:
+ 'Returns a single field. If you want to retrieve all the fields for a template, use the "Get Template" endpoint.',
+ tags: ['Template Fields'],
+ },
+ })
+ .input(ZGetFieldRequestSchema)
+ .output(ZGetFieldResponseSchema)
+ .query(async ({ input, ctx }) => {
+ const { teamId } = ctx;
+ const { fieldId } = input;
+
+ return await getFieldById({
+ userId: ctx.user.id,
+ teamId,
+ fieldId,
+ });
+ }),
+
/**
* @public
*/
diff --git a/packages/trpc/server/recipient-router/router.ts b/packages/trpc/server/recipient-router/router.ts
index 4259a272f..f62660da8 100644
--- a/packages/trpc/server/recipient-router/router.ts
+++ b/packages/trpc/server/recipient-router/router.ts
@@ -47,15 +47,15 @@ export const recipientRouter = router({
/**
* @public
*/
- getRecipient: authenticatedProcedure
+ getDocumentRecipient: authenticatedProcedure
.meta({
openapi: {
method: 'GET',
- path: '/recipient/{recipientId}',
- summary: 'Get recipient',
+ path: '/document/recipient/{recipientId}',
+ summary: 'Get document recipient',
description:
- 'Returns a single recipient. If you want to retrieve all the recipients for a document or template, use the "Get Document" or "Get Template" request.',
- tags: ['Document Recipients', 'Template Recipients'],
+ 'Returns a single recipient. If you want to retrieve all the recipients for a document, use the "Get Document" endpoint.',
+ tags: ['Document Recipients'],
},
})
.input(ZGetRecipientRequestSchema)
@@ -239,6 +239,33 @@ export const recipientRouter = router({
});
}),
+ /**
+ * @public
+ */
+ getTemplateRecipient: authenticatedProcedure
+ .meta({
+ openapi: {
+ method: 'GET',
+ path: '/template/recipient/{recipientId}',
+ summary: 'Get template recipient',
+ description:
+ 'Returns a single recipient. If you want to retrieve all the recipients for a template, use the "Get Template" endpoint.',
+ tags: ['Template Recipients'],
+ },
+ })
+ .input(ZGetRecipientRequestSchema)
+ .output(ZGetRecipientResponseSchema)
+ .query(async ({ input, ctx }) => {
+ const { teamId } = ctx;
+ const { recipientId } = input;
+
+ return await getRecipientById({
+ userId: ctx.user.id,
+ teamId,
+ recipientId,
+ });
+ }),
+
/**
* @public
*/
From 7e31323faa521e2f36f95ab252ec27e6f91f38ef Mon Sep 17 00:00:00 2001
From: Mythie
Date: Mon, 20 Jan 2025 15:53:28 +1100
Subject: [PATCH 17/35] fix: add team context to more vanilla client usages
---
.../documents/[id]/document-page-view-button.tsx | 13 ++++++++++---
.../documents/[id]/document-page-view-dropdown.tsx | 13 ++++++++++---
2 files changed, 20 insertions(+), 6 deletions(-)
diff --git a/apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx b/apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx
index 2bc5e83b1..a477d75c6 100644
--- a/apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx
+++ b/apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx
@@ -46,9 +46,16 @@ export const DocumentPageViewButton = ({ document }: DocumentPageViewButtonProps
const onDownloadClick = async () => {
try {
- const documentWithData = await trpcClient.document.getDocumentById.query({
- documentId: document.id,
- });
+ const documentWithData = await trpcClient.document.getDocumentById.query(
+ {
+ documentId: document.id,
+ },
+ {
+ context: {
+ teamId: document.team?.id?.toString(),
+ },
+ },
+ );
const documentData = documentWithData?.documentData;
diff --git a/apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx b/apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx
index a4c79ec33..5075f342c 100644
--- a/apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx
+++ b/apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx
@@ -74,9 +74,16 @@ export const DocumentPageViewDropdown = ({ document, team }: DocumentPageViewDro
const onDownloadClick = async () => {
try {
- const documentWithData = await trpcClient.document.getDocumentById.query({
- documentId: document.id,
- });
+ const documentWithData = await trpcClient.document.getDocumentById.query(
+ {
+ documentId: document.id,
+ },
+ {
+ context: {
+ teamId: team?.id?.toString(),
+ },
+ },
+ );
const documentData = documentWithData?.documentData;
From 7c1e0f34e8ddf8e594c63ebb485916cf115635a7 Mon Sep 17 00:00:00 2001
From: Mythie
Date: Mon, 20 Jan 2025 16:08:15 +1100
Subject: [PATCH 18/35] v1.9.0-rc.9
---
apps/web/package.json | 2 +-
package-lock.json | 21 +++------------------
package.json | 2 +-
3 files changed, 5 insertions(+), 20 deletions(-)
diff --git a/apps/web/package.json b/apps/web/package.json
index 5b7f412fb..0c6c2c9b8 100644
--- a/apps/web/package.json
+++ b/apps/web/package.json
@@ -1,6 +1,6 @@
{
"name": "@documenso/web",
- "version": "1.9.0-rc.8",
+ "version": "1.9.0-rc.9",
"private": true,
"license": "AGPL-3.0",
"scripts": {
diff --git a/package-lock.json b/package-lock.json
index bf866ef97..d5f8a24ad 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@documenso/root",
- "version": "1.9.0-rc.8",
+ "version": "1.9.0-rc.9",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@documenso/root",
- "version": "1.9.0-rc.8",
+ "version": "1.9.0-rc.9",
"workspaces": [
"apps/*",
"packages/*"
@@ -106,7 +106,7 @@
},
"apps/web": {
"name": "@documenso/web",
- "version": "1.9.0-rc.8",
+ "version": "1.9.0-rc.9",
"license": "AGPL-3.0",
"dependencies": {
"@documenso/api": "*",
@@ -35715,21 +35715,6 @@
"engines": {
"node": ">=6"
}
- },
- "packages/trpc/node_modules/@next/swc-win32-ia32-msvc": {
- "version": "14.2.6",
- "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.6.tgz",
- "integrity": "sha512-hNukAxq7hu4o5/UjPp5jqoBEtrpCbOmnUqZSKNJG8GrUVzfq0ucdhQFVrHcLRMvQcwqqDh1a5AJN9ORnNDpgBQ==",
- "cpu": [
- "ia32"
- ],
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">= 10"
- }
}
}
}
diff --git a/package.json b/package.json
index b9be39ea7..47654b26c 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"private": true,
- "version": "1.9.0-rc.8",
+ "version": "1.9.0-rc.9",
"scripts": {
"build": "turbo run build",
"build:web": "turbo run build --filter=@documenso/web",
From 74bb2302471b55210c8eb8e6b9d356d0c74d1bdc Mon Sep 17 00:00:00 2001
From: David Nguyen
Date: Mon, 20 Jan 2025 19:47:39 +1100
Subject: [PATCH 19/35] fix: add empty success responses (#1600)
---
packages/trpc/server/document-router/router.ts | 13 +++++++++----
packages/trpc/server/document-router/schema.ts | 13 +++++++++++++
packages/trpc/server/field-router/router.ts | 11 +++++++----
packages/trpc/server/recipient-router/router.ts | 11 +++++++----
packages/trpc/server/template-router/router.ts | 11 +++++++----
5 files changed, 43 insertions(+), 16 deletions(-)
diff --git a/packages/trpc/server/document-router/router.ts b/packages/trpc/server/document-router/router.ts
index daa180c3a..2a151b7c1 100644
--- a/packages/trpc/server/document-router/router.ts
+++ b/packages/trpc/server/document-router/router.ts
@@ -1,6 +1,5 @@
import { TRPCError } from '@trpc/server';
import { DateTime } from 'luxon';
-import { z } from 'zod';
import { getServerLimits } from '@documenso/ee/server-only/limits/server';
import { NEXT_PUBLIC_WEBAPP_URL } from '@documenso/lib/constants/app';
@@ -42,6 +41,7 @@ import {
ZFindDocumentAuditLogsQuerySchema,
ZFindDocumentsRequestSchema,
ZFindDocumentsResponseSchema,
+ ZGenericSuccessResponse,
ZGetDocumentByIdQuerySchema,
ZGetDocumentByTokenQuerySchema,
ZGetDocumentWithDetailsByIdRequestSchema,
@@ -52,6 +52,7 @@ import {
ZSearchDocumentsMutationSchema,
ZSetPasswordForDocumentMutationSchema,
ZSetSigningOrderForDocumentMutationSchema,
+ ZSuccessResponseSchema,
ZUpdateDocumentRequestSchema,
ZUpdateDocumentResponseSchema,
} from './schema';
@@ -326,7 +327,7 @@ export const documentRouter = router({
},
})
.input(ZDeleteDocumentMutationSchema)
- .output(z.void())
+ .output(ZSuccessResponseSchema)
.mutation(async ({ input, ctx }) => {
const { teamId } = ctx;
const { documentId } = input;
@@ -339,6 +340,8 @@ export const documentRouter = router({
teamId,
requestMetadata: ctx.metadata,
});
+
+ return ZGenericSuccessResponse;
}),
/**
@@ -481,18 +484,20 @@ export const documentRouter = router({
},
})
.input(ZResendDocumentMutationSchema)
- .output(z.void())
+ .output(ZSuccessResponseSchema)
.mutation(async ({ input, ctx }) => {
const { teamId } = ctx;
const { documentId, recipients } = input;
- return await resendDocument({
+ await resendDocument({
userId: ctx.user.id,
teamId,
documentId,
recipients,
requestMetadata: ctx.metadata,
});
+
+ return ZGenericSuccessResponse;
}),
/**
diff --git a/packages/trpc/server/document-router/schema.ts b/packages/trpc/server/document-router/schema.ts
index c9b3b4d3c..887bc48e2 100644
--- a/packages/trpc/server/document-router/schema.ts
+++ b/packages/trpc/server/document-router/schema.ts
@@ -34,6 +34,19 @@ import {
import { ZCreateRecipientSchema } from '../recipient-router/schema';
+/**
+ * Required for empty responses since we currently can't 201 requests for our openapi setup.
+ *
+ * Without this it will throw an error in Speakeasy SDK when it tries to parse an empty response.
+ */
+export const ZSuccessResponseSchema = z.object({
+ success: z.literal(true),
+});
+
+export const ZGenericSuccessResponse = {
+ success: true,
+} satisfies z.infer;
+
export const ZDocumentTitleSchema = z
.string()
.trim()
diff --git a/packages/trpc/server/field-router/router.ts b/packages/trpc/server/field-router/router.ts
index a05811675..df17aef88 100644
--- a/packages/trpc/server/field-router/router.ts
+++ b/packages/trpc/server/field-router/router.ts
@@ -1,5 +1,3 @@
-import { z } from 'zod';
-
import { createDocumentFields } from '@documenso/lib/server-only/field/create-document-fields';
import { createTemplateFields } from '@documenso/lib/server-only/field/create-template-fields';
import { deleteDocumentField } from '@documenso/lib/server-only/field/delete-document-field';
@@ -13,6 +11,7 @@ import { updateDocumentFields } from '@documenso/lib/server-only/field/update-do
import { updateTemplateFields } from '@documenso/lib/server-only/field/update-template-fields';
import { extractNextApiRequestMetadata } from '@documenso/lib/universal/extract-request-metadata';
+import { ZGenericSuccessResponse, ZSuccessResponseSchema } from '../document-router/schema';
import { authenticatedProcedure, procedure, router } from '../trpc';
import {
ZCreateDocumentFieldRequestSchema,
@@ -200,7 +199,7 @@ export const fieldRouter = router({
},
})
.input(ZDeleteDocumentFieldRequestSchema)
- .output(z.void())
+ .output(ZSuccessResponseSchema)
.mutation(async ({ input, ctx }) => {
const { teamId } = ctx;
const { fieldId } = input;
@@ -211,6 +210,8 @@ export const fieldRouter = router({
fieldId,
requestMetadata: ctx.metadata,
});
+
+ return ZGenericSuccessResponse;
}),
/**
@@ -396,7 +397,7 @@ export const fieldRouter = router({
},
})
.input(ZDeleteTemplateFieldRequestSchema)
- .output(z.void())
+ .output(ZSuccessResponseSchema)
.mutation(async ({ input, ctx }) => {
const { teamId } = ctx;
const { fieldId } = input;
@@ -406,6 +407,8 @@ export const fieldRouter = router({
teamId,
fieldId,
});
+
+ return ZGenericSuccessResponse;
}),
/**
diff --git a/packages/trpc/server/recipient-router/router.ts b/packages/trpc/server/recipient-router/router.ts
index f62660da8..b323ba5f0 100644
--- a/packages/trpc/server/recipient-router/router.ts
+++ b/packages/trpc/server/recipient-router/router.ts
@@ -1,5 +1,3 @@
-import { z } from 'zod';
-
import { completeDocumentWithToken } from '@documenso/lib/server-only/document/complete-document-with-token';
import { rejectDocumentWithToken } from '@documenso/lib/server-only/document/reject-document-with-token';
import { createDocumentRecipients } from '@documenso/lib/server-only/recipient/create-document-recipients';
@@ -13,6 +11,7 @@ import { updateDocumentRecipients } from '@documenso/lib/server-only/recipient/u
import { updateTemplateRecipients } from '@documenso/lib/server-only/recipient/update-template-recipients';
import { extractNextApiRequestMetadata } from '@documenso/lib/universal/extract-request-metadata';
+import { ZGenericSuccessResponse, ZSuccessResponseSchema } from '../document-router/schema';
import { authenticatedProcedure, procedure, router } from '../trpc';
import {
ZCompleteDocumentWithTokenMutationSchema,
@@ -200,7 +199,7 @@ export const recipientRouter = router({
},
})
.input(ZDeleteDocumentRecipientRequestSchema)
- .output(z.void())
+ .output(ZSuccessResponseSchema)
.mutation(async ({ input, ctx }) => {
const { teamId } = ctx;
const { recipientId } = input;
@@ -211,6 +210,8 @@ export const recipientRouter = router({
recipientId,
requestMetadata: ctx.metadata,
});
+
+ return ZGenericSuccessResponse;
}),
/**
@@ -391,7 +392,7 @@ export const recipientRouter = router({
},
})
.input(ZDeleteTemplateRecipientRequestSchema)
- .output(z.void())
+ .output(ZSuccessResponseSchema)
.mutation(async ({ input, ctx }) => {
const { teamId } = ctx;
const { recipientId } = input;
@@ -401,6 +402,8 @@ export const recipientRouter = router({
userId: ctx.user.id,
teamId,
});
+
+ return ZGenericSuccessResponse;
}),
/**
diff --git a/packages/trpc/server/template-router/router.ts b/packages/trpc/server/template-router/router.ts
index 13fc637de..0be0e89a1 100644
--- a/packages/trpc/server/template-router/router.ts
+++ b/packages/trpc/server/template-router/router.ts
@@ -1,5 +1,3 @@
-import { z } from 'zod';
-
import { getServerLimits } from '@documenso/ee/server-only/limits/server';
import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
import { getDocumentWithDetailsById } from '@documenso/lib/server-only/document/get-document-with-details-by-id';
@@ -24,6 +22,7 @@ import { toggleTemplateDirectLink } from '@documenso/lib/server-only/template/to
import { updateTemplate } from '@documenso/lib/server-only/template/update-template';
import type { Document } from '@documenso/prisma/client';
+import { ZGenericSuccessResponse, ZSuccessResponseSchema } from '../document-router/schema';
import { authenticatedProcedure, maybeAuthenticatedProcedure, router } from '../trpc';
import {
ZCreateDocumentFromDirectTemplateRequestSchema,
@@ -195,7 +194,7 @@ export const templateRouter = router({
},
})
.input(ZDeleteTemplateMutationSchema)
- .output(z.void())
+ .output(ZSuccessResponseSchema)
.mutation(async ({ input, ctx }) => {
const { teamId } = ctx;
const { templateId } = input;
@@ -203,6 +202,8 @@ export const templateRouter = router({
const userId = ctx.user.id;
await deleteTemplate({ userId, id: templateId, teamId });
+
+ return ZGenericSuccessResponse;
}),
/**
@@ -352,7 +353,7 @@ export const templateRouter = router({
},
})
.input(ZDeleteTemplateDirectLinkRequestSchema)
- .output(z.void())
+ .output(ZSuccessResponseSchema)
.mutation(async ({ input, ctx }) => {
const { teamId } = ctx;
const { templateId } = input;
@@ -360,6 +361,8 @@ export const templateRouter = router({
const userId = ctx.user.id;
await deleteTemplateDirectLink({ userId, teamId, templateId });
+
+ return ZGenericSuccessResponse;
}),
/**
From 058d9dd0ba724f656a9137e500fdc8552771e8f1 Mon Sep 17 00:00:00 2001
From: Mythie
Date: Mon, 20 Jan 2025 19:54:39 +1100
Subject: [PATCH 20/35] v1.9.0-rc.10
---
apps/web/package.json | 2 +-
package-lock.json | 6 +++---
package.json | 2 +-
3 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/apps/web/package.json b/apps/web/package.json
index 0c6c2c9b8..cef871d46 100644
--- a/apps/web/package.json
+++ b/apps/web/package.json
@@ -1,6 +1,6 @@
{
"name": "@documenso/web",
- "version": "1.9.0-rc.9",
+ "version": "1.9.0-rc.10",
"private": true,
"license": "AGPL-3.0",
"scripts": {
diff --git a/package-lock.json b/package-lock.json
index d5f8a24ad..55f343e61 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@documenso/root",
- "version": "1.9.0-rc.9",
+ "version": "1.9.0-rc.10",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@documenso/root",
- "version": "1.9.0-rc.9",
+ "version": "1.9.0-rc.10",
"workspaces": [
"apps/*",
"packages/*"
@@ -106,7 +106,7 @@
},
"apps/web": {
"name": "@documenso/web",
- "version": "1.9.0-rc.9",
+ "version": "1.9.0-rc.10",
"license": "AGPL-3.0",
"dependencies": {
"@documenso/api": "*",
diff --git a/package.json b/package.json
index 47654b26c..5a5917a73 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"private": true,
- "version": "1.9.0-rc.9",
+ "version": "1.9.0-rc.10",
"scripts": {
"build": "turbo run build",
"build:web": "turbo run build --filter=@documenso/web",
From 0ef85b47b149852ea16c3a74e51ed015ae40424c Mon Sep 17 00:00:00 2001
From: Mythie
Date: Tue, 21 Jan 2025 09:45:16 +1100
Subject: [PATCH 21/35] fix: handle empty object as fieldMeta
---
packages/lib/types/field-meta.ts | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/packages/lib/types/field-meta.ts b/packages/lib/types/field-meta.ts
index baa8d94b5..f4e4da8f3 100644
--- a/packages/lib/types/field-meta.ts
+++ b/packages/lib/types/field-meta.ts
@@ -113,7 +113,16 @@ export const ZFieldMetaNotOptionalSchema = z.discriminatedUnion('type', [
export type TFieldMetaNotOptionalSchema = z.infer;
-export const ZFieldMetaSchema = ZFieldMetaNotOptionalSchema.optional();
+export const ZFieldMetaSchema = z
+ .union([
+ // Handles an empty object being provided as fieldMeta.
+ z
+ .object({})
+ .strict()
+ .transform(() => undefined),
+ ZFieldMetaNotOptionalSchema,
+ ])
+ .optional();
export type TFieldMetaSchema = z.infer;
From dc36a8182c7b3796c1b83221a8a0aa49015f98c2 Mon Sep 17 00:00:00 2001
From: Mythie
Date: Tue, 21 Jan 2025 09:49:22 +1100
Subject: [PATCH 22/35] v1.9.0-rc.11
---
apps/web/package.json | 2 +-
package-lock.json | 6 +++---
package.json | 2 +-
3 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/apps/web/package.json b/apps/web/package.json
index cef871d46..9f5053e1e 100644
--- a/apps/web/package.json
+++ b/apps/web/package.json
@@ -1,6 +1,6 @@
{
"name": "@documenso/web",
- "version": "1.9.0-rc.10",
+ "version": "1.9.0-rc.11",
"private": true,
"license": "AGPL-3.0",
"scripts": {
diff --git a/package-lock.json b/package-lock.json
index 55f343e61..9ae01d2d5 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@documenso/root",
- "version": "1.9.0-rc.10",
+ "version": "1.9.0-rc.11",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@documenso/root",
- "version": "1.9.0-rc.10",
+ "version": "1.9.0-rc.11",
"workspaces": [
"apps/*",
"packages/*"
@@ -106,7 +106,7 @@
},
"apps/web": {
"name": "@documenso/web",
- "version": "1.9.0-rc.10",
+ "version": "1.9.0-rc.11",
"license": "AGPL-3.0",
"dependencies": {
"@documenso/api": "*",
diff --git a/package.json b/package.json
index 5a5917a73..71cf953a3 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"private": true,
- "version": "1.9.0-rc.10",
+ "version": "1.9.0-rc.11",
"scripts": {
"build": "turbo run build",
"build:web": "turbo run build --filter=@documenso/web",
From 42d24fd1a163b9390f8e8e77640ad5591904aab2 Mon Sep 17 00:00:00 2001
From: Ephraim Duncan <55143799+ephraimduncan@users.noreply.github.com>
Date: Thu, 23 Jan 2025 03:28:26 +0000
Subject: [PATCH 23/35] feat: copy, paste, duplicate template fields (#1594)
---
.../template-flow/add-template-fields.tsx | 116 +++++++++++++++---
1 file changed, 97 insertions(+), 19 deletions(-)
diff --git a/packages/ui/primitives/template-flow/add-template-fields.tsx b/packages/ui/primitives/template-flow/add-template-fields.tsx
index 7f7f11df5..c26c567e1 100644
--- a/packages/ui/primitives/template-flow/add-template-fields.tsx
+++ b/packages/ui/primitives/template-flow/add-template-fields.tsx
@@ -19,6 +19,7 @@ import {
User,
} from 'lucide-react';
import { useFieldArray, useForm } from 'react-hook-form';
+import { useHotkeys } from 'react-hotkeys-hook';
import { getBoundingClientRect } from '@documenso/lib/client-only/get-bounding-client-rect';
import { useDocumentElement } from '@documenso/lib/client-only/hooks/use-document-element';
@@ -53,6 +54,7 @@ import { FieldItem } from '@documenso/ui/primitives/document-flow/field-item';
import type { DocumentFlowStep } from '@documenso/ui/primitives/document-flow/types';
import { FRIENDLY_FIELD_TYPE } from '@documenso/ui/primitives/document-flow/types';
import { Popover, PopoverContent, PopoverTrigger } from '@documenso/ui/primitives/popover';
+import { useToast } from '@documenso/ui/primitives/use-toast';
import { getSignerColorStyles, useSignerColors } from '../../lib/signer-colors';
import { Checkbox } from '../checkbox';
@@ -95,12 +97,19 @@ export const AddTemplateFieldsFormPartial = ({
typedSignatureEnabled,
}: AddTemplateFieldsFormProps) => {
const { _ } = useLingui();
+ const { toast } = useToast();
const { isWithinPageBounds, getFieldPosition, getPage } = useDocumentElement();
const { currentStep, totalSteps, previousStep } = useStep();
const [showAdvancedSettings, setShowAdvancedSettings] = useState(false);
const [currentField, setCurrentField] = useState();
const [activeFieldId, setActiveFieldId] = useState(null);
+ const [lastActiveField, setLastActiveField] = useState<
+ TAddTemplateFieldsFormSchema['fields'][0] | null
+ >(null);
+ const [fieldClipboard, setFieldClipboard] = useState<
+ TAddTemplateFieldsFormSchema['fields'][0] | null
+ >(null);
const form = useForm({
defaultValues: {
@@ -126,25 +135,6 @@ export const AddTemplateFieldsFormPartial = ({
const onFormSubmit = form.handleSubmit(onSubmit);
- const handleSavedFieldSettings = (fieldState: FieldMeta) => {
- const initialValues = form.getValues();
-
- const updatedFields = initialValues.fields.map((field) => {
- if (field.formId === currentField?.formId) {
- const parsedFieldMeta = ZFieldMetaSchema.parse(fieldState);
-
- return {
- ...field,
- fieldMeta: parsedFieldMeta,
- };
- }
-
- return field;
- });
-
- form.setValue('fields', updatedFields);
- };
-
const {
append,
remove,
@@ -164,6 +154,72 @@ export const AddTemplateFieldsFormPartial = ({
selectedSignerIndex === -1 ? 0 : selectedSignerIndex,
);
+ const onFieldCopy = useCallback(
+ (event?: KeyboardEvent | null, options?: { duplicate?: boolean }) => {
+ const { duplicate = false } = options ?? {};
+
+ if (lastActiveField) {
+ event?.preventDefault();
+
+ if (!duplicate) {
+ setFieldClipboard(lastActiveField);
+
+ toast({
+ title: 'Copied field',
+ description: 'Copied field to clipboard',
+ });
+
+ return;
+ }
+
+ const newField: TAddTemplateFieldsFormSchema['fields'][0] = {
+ ...structuredClone(lastActiveField),
+ formId: nanoid(12),
+ signerEmail: selectedSigner?.email ?? lastActiveField.signerEmail,
+ signerId: selectedSigner?.id ?? lastActiveField.signerId,
+ signerToken: selectedSigner?.token ?? lastActiveField.signerToken,
+ pageX: lastActiveField.pageX + 3,
+ pageY: lastActiveField.pageY + 3,
+ };
+
+ append(newField);
+ }
+ },
+ [
+ append,
+ lastActiveField,
+ selectedSigner?.email,
+ selectedSigner?.id,
+ selectedSigner?.token,
+ toast,
+ ],
+ );
+
+ const onFieldPaste = useCallback(
+ (event: KeyboardEvent) => {
+ if (fieldClipboard) {
+ event.preventDefault();
+
+ const copiedField = structuredClone(fieldClipboard);
+
+ append({
+ ...copiedField,
+ formId: nanoid(12),
+ signerEmail: selectedSigner?.email ?? copiedField.signerEmail,
+ signerId: selectedSigner?.id ?? copiedField.signerId,
+ signerToken: selectedSigner?.token ?? copiedField.signerToken,
+ pageX: copiedField.pageX + 3,
+ pageY: copiedField.pageY + 3,
+ });
+ }
+ },
+ [append, fieldClipboard, selectedSigner?.email, selectedSigner?.id, selectedSigner?.token],
+ );
+
+ useHotkeys(['ctrl+c', 'meta+c'], (evt) => onFieldCopy(evt));
+ useHotkeys(['ctrl+v', 'meta+v'], (evt) => onFieldPaste(evt));
+ useHotkeys(['ctrl+d', 'meta+d'], (evt) => onFieldCopy(evt, { duplicate: true }));
+
const filterFieldsWithEmptyValues = (fields: typeof localFields, fieldType: string) =>
fields
.filter((field) => field.type === fieldType)
@@ -402,6 +458,25 @@ export const AddTemplateFieldsFormPartial = ({
setShowAdvancedSettings((prev) => !prev);
};
+ const handleSavedFieldSettings = (fieldState: FieldMeta) => {
+ const initialValues = form.getValues();
+
+ const updatedFields = initialValues.fields.map((field) => {
+ if (field.formId === currentField?.formId) {
+ const parsedFieldMeta = ZFieldMetaSchema.parse(fieldState);
+
+ return {
+ ...field,
+ fieldMeta: parsedFieldMeta,
+ };
+ }
+
+ return field;
+ });
+
+ form.setValue('fields', updatedFields);
+ };
+
const isTypedSignatureEnabled = form.watch('typedSignatureEnabled');
const handleTypedSignatureChange = (value: boolean) => {
@@ -468,9 +543,12 @@ export const AddTemplateFieldsFormPartial = ({
defaultHeight={DEFAULT_HEIGHT_PX}
defaultWidth={DEFAULT_WIDTH_PX}
passive={isFieldWithinBounds && !!selectedField}
+ onFocus={() => setLastActiveField(field)}
+ onBlur={() => setLastActiveField(null)}
onResize={(options) => onFieldResize(options, index)}
onMove={(options) => onFieldMove(options, index)}
onRemove={() => remove(index)}
+ onDuplicate={() => onFieldCopy(null, { duplicate: true })}
onAdvancedSettings={() => {
setCurrentField(field);
handleAdvancedSettings();
From 54ea96391a679c68514060f11873c42a9e1e76bd Mon Sep 17 00:00:00 2001
From: Ephraim Duncan <55143799+ephraimduncan@users.noreply.github.com>
Date: Thu, 23 Jan 2025 05:34:22 +0000
Subject: [PATCH 24/35] fix: correct redirect after document duplication
(#1595)
---
.../documents/data-table-action-dropdown.tsx | 16 +++++++---------
.../documents/duplicate-document-dialog.tsx | 4 ++--
2 files changed, 9 insertions(+), 11 deletions(-)
diff --git a/apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx b/apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx
index 7e46fb4bc..567d8dcd8 100644
--- a/apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx
+++ b/apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx
@@ -23,8 +23,8 @@ import { useSession } from 'next-auth/react';
import { downloadPDF } from '@documenso/lib/client-only/download-pdf';
import { formatDocumentsPath } from '@documenso/lib/utils/teams';
-import { DocumentStatus, RecipientRole } from '@documenso/prisma/client';
import type { Document, Recipient, Team, User } from '@documenso/prisma/client';
+import { DocumentStatus, RecipientRole } from '@documenso/prisma/client';
import { trpc as trpcClient } from '@documenso/trpc/client';
import { DocumentShareButton } from '@documenso/ui/components/document/document-share-button';
import {
@@ -233,14 +233,12 @@ export const DataTableActionDropdown = ({ row, team }: DataTableActionDropdownPr
onOpenChange={setMoveDialogOpen}
/>
- {isDuplicateDialogOpen && (
-
- )}
+
);
};
diff --git a/apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx b/apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx
index de74a1354..b124da08b 100644
--- a/apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx
+++ b/apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx
@@ -50,8 +50,8 @@ export const DuplicateDocumentDialog = ({
const { mutateAsync: duplicateDocument, isPending: isDuplicateLoading } =
trpcReact.document.duplicateDocument.useMutation({
- onSuccess: (newId) => {
- router.push(`${documentsPath}/${newId}/edit`);
+ onSuccess: ({ documentId }) => {
+ router.push(`${documentsPath}/${documentId}/edit`);
toast({
title: _(msg`Document Duplicated`),
From 9183f668d3778ac5df72e7f8dbf76b197a8aa440 Mon Sep 17 00:00:00 2001
From: Mythie
Date: Mon, 27 Jan 2025 12:20:04 +1100
Subject: [PATCH 25/35] chore: bump node version for docker
---
docker/Dockerfile | 7 +++++--
docker/start.sh | 2 +-
2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 981c78ba1..9223fb3a3 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -1,7 +1,10 @@
###########################
# BASE CONTAINER #
###########################
-FROM node:18-alpine AS base
+FROM node:22-alpine3.20 AS base
+
+RUN apk add --no-cache openssl
+
###########################
# BUILDER CONTAINER #
@@ -30,7 +33,7 @@ FROM base AS installer
RUN apk add --no-cache libc6-compat
RUN apk add --no-cache jq
# Required for node_modules/aws-crt
-RUN apk add --no-cache make cmake g++
+RUN apk add --no-cache make cmake g++ openssl
WORKDIR /app
diff --git a/docker/start.sh b/docker/start.sh
index e8d3be2e6..d6f637f7a 100755
--- a/docker/start.sh
+++ b/docker/start.sh
@@ -4,4 +4,4 @@ set -x
npx prisma migrate deploy --schema ./packages/prisma/schema.prisma
-node apps/web/server.js
+HOSTNAME=0.0.0.0 node apps/web/server.js
From 2984af769cc12ae695b433683a035fb4e38787ea Mon Sep 17 00:00:00 2001
From: Lucas Smith
Date: Tue, 28 Jan 2025 12:29:38 +1100
Subject: [PATCH 26/35] feat: add text align option to fields (#1610)
## Description
Adds the ability to align text to the left, center or right for relevant
fields.
Previously text was always centered which can be less desirable.
See attached debug document which has left, center and right text
alignments set for fields.
## Related Issue
N/A
## Changes Made
- Added text align option
- Update the insert in pdf method to support different alignments
- Added a debug mode to field insertion
## Testing Performed
- Ran manual tests using the debug mode
---
.../app/(signing)/sign/[token]/date-field.tsx | 23 +++++++--
.../(signing)/sign/[token]/email-field.tsx | 23 +++++++--
.../app/(signing)/sign/[token]/name-field.tsx | 23 +++++++--
.../(signing)/sign/[token]/number-field.tsx | 45 +++++++++++-------
.../app/(signing)/sign/[token]/text-field.tsx | 29 +++++++++---
.../server-only/pdf/insert-field-in-pdf.ts | 47 ++++++++++++++++++-
packages/lib/types/field-meta.ts | 10 ++++
.../field-item-advanced-settings.tsx | 6 +++
.../date-field.tsx | 28 +++++++++++
.../email-field.tsx | 28 +++++++++++
.../initials-field.tsx | 23 +++++++++
.../name-field.tsx | 28 +++++++++++
.../number-field.tsx | 25 +++++++++-
.../text-field.tsx | 30 +++++++++++-
14 files changed, 332 insertions(+), 36 deletions(-)
diff --git a/apps/web/src/app/(signing)/sign/[token]/date-field.tsx b/apps/web/src/app/(signing)/sign/[token]/date-field.tsx
index b62eaf652..9d03ee690 100644
--- a/apps/web/src/app/(signing)/sign/[token]/date-field.tsx
+++ b/apps/web/src/app/(signing)/sign/[token]/date-field.tsx
@@ -16,6 +16,7 @@ import { DEFAULT_DOCUMENT_TIME_ZONE } from '@documenso/lib/constants/time-zones'
import { DO_NOT_INVALIDATE_QUERY_ON_MUTATION } from '@documenso/lib/constants/trpc';
import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
import type { TRecipientActionAuth } from '@documenso/lib/types/document-auth';
+import { ZDateFieldMeta } from '@documenso/lib/types/field-meta';
import type { Recipient } from '@documenso/prisma/client';
import type { FieldWithSignature } from '@documenso/prisma/types/field-with-signature';
import { trpc } from '@documenso/trpc/react';
@@ -23,6 +24,7 @@ import type {
TRemovedSignedFieldWithTokenMutationSchema,
TSignFieldWithTokenMutationSchema,
} from '@documenso/trpc/server/field-router/schema';
+import { cn } from '@documenso/ui/lib/utils';
import { useToast } from '@documenso/ui/primitives/use-toast';
import { SigningFieldContainer } from './signing-field-container';
@@ -59,6 +61,9 @@ export const DateField = ({
isPending: isRemoveSignedFieldWithTokenLoading,
} = trpc.field.removeSignedFieldWithToken.useMutation(DO_NOT_INVALIDATE_QUERY_ON_MUTATION);
+ const safeFieldMeta = ZDateFieldMeta.safeParse(field.fieldMeta);
+ const parsedFieldMeta = safeFieldMeta.success ? safeFieldMeta.data : null;
+
const isLoading = isSignFieldWithTokenLoading || isRemoveSignedFieldWithTokenLoading || isPending;
const localDateString = convertToLocalSystemFormat(field.customText, dateFormat, timezone);
@@ -150,9 +155,21 @@ export const DateField = ({
)}
{field.inserted && (
-
- {localDateString}
-
+
+
+ {localDateString}
+
+
)}
);
diff --git a/apps/web/src/app/(signing)/sign/[token]/email-field.tsx b/apps/web/src/app/(signing)/sign/[token]/email-field.tsx
index 9300aef63..f3d664e23 100644
--- a/apps/web/src/app/(signing)/sign/[token]/email-field.tsx
+++ b/apps/web/src/app/(signing)/sign/[token]/email-field.tsx
@@ -11,6 +11,7 @@ import { Loader } from 'lucide-react';
import { DO_NOT_INVALIDATE_QUERY_ON_MUTATION } from '@documenso/lib/constants/trpc';
import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
import type { TRecipientActionAuth } from '@documenso/lib/types/document-auth';
+import { ZEmailFieldMeta } from '@documenso/lib/types/field-meta';
import type { Recipient } from '@documenso/prisma/client';
import type { FieldWithSignature } from '@documenso/prisma/types/field-with-signature';
import { trpc } from '@documenso/trpc/react';
@@ -18,6 +19,7 @@ import type {
TRemovedSignedFieldWithTokenMutationSchema,
TSignFieldWithTokenMutationSchema,
} from '@documenso/trpc/server/field-router/schema';
+import { cn } from '@documenso/ui/lib/utils';
import { useToast } from '@documenso/ui/primitives/use-toast';
import { useRequiredSigningContext } from './provider';
@@ -48,6 +50,9 @@ export const EmailField = ({ field, recipient, onSignField, onUnsignField }: Ema
isPending: isRemoveSignedFieldWithTokenLoading,
} = trpc.field.removeSignedFieldWithToken.useMutation(DO_NOT_INVALIDATE_QUERY_ON_MUTATION);
+ const safeFieldMeta = ZEmailFieldMeta.safeParse(field.fieldMeta);
+ const parsedFieldMeta = safeFieldMeta.success ? safeFieldMeta.data : null;
+
const isLoading = isSignFieldWithTokenLoading || isRemoveSignedFieldWithTokenLoading || isPending;
const onSign = async (authOptions?: TRecipientActionAuth) => {
@@ -128,9 +133,21 @@ export const EmailField = ({ field, recipient, onSignField, onUnsignField }: Ema
)}
{field.inserted && (
-
- {field.customText}
-
+
+
+ {field.customText}
+
+
)}
);
diff --git a/apps/web/src/app/(signing)/sign/[token]/name-field.tsx b/apps/web/src/app/(signing)/sign/[token]/name-field.tsx
index bc83e5a49..1a0756d60 100644
--- a/apps/web/src/app/(signing)/sign/[token]/name-field.tsx
+++ b/apps/web/src/app/(signing)/sign/[token]/name-field.tsx
@@ -11,6 +11,7 @@ import { Loader } from 'lucide-react';
import { DO_NOT_INVALIDATE_QUERY_ON_MUTATION } from '@documenso/lib/constants/trpc';
import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
import type { TRecipientActionAuth } from '@documenso/lib/types/document-auth';
+import { ZNameFieldMeta } from '@documenso/lib/types/field-meta';
import { type Recipient } from '@documenso/prisma/client';
import type { FieldWithSignature } from '@documenso/prisma/types/field-with-signature';
import { trpc } from '@documenso/trpc/react';
@@ -18,6 +19,7 @@ import type {
TRemovedSignedFieldWithTokenMutationSchema,
TSignFieldWithTokenMutationSchema,
} from '@documenso/trpc/server/field-router/schema';
+import { cn } from '@documenso/ui/lib/utils';
import { Button } from '@documenso/ui/primitives/button';
import { Dialog, DialogContent, DialogFooter, DialogTitle } from '@documenso/ui/primitives/dialog';
import { Input } from '@documenso/ui/primitives/input';
@@ -56,6 +58,9 @@ export const NameField = ({ field, recipient, onSignField, onUnsignField }: Name
isPending: isRemoveSignedFieldWithTokenLoading,
} = trpc.field.removeSignedFieldWithToken.useMutation(DO_NOT_INVALIDATE_QUERY_ON_MUTATION);
+ const safeFieldMeta = ZNameFieldMeta.safeParse(field.fieldMeta);
+ const parsedFieldMeta = safeFieldMeta.success ? safeFieldMeta.data : null;
+
const isLoading = isSignFieldWithTokenLoading || isRemoveSignedFieldWithTokenLoading || isPending;
const [showFullNameModal, setShowFullNameModal] = useState(false);
@@ -172,9 +177,21 @@ export const NameField = ({ field, recipient, onSignField, onUnsignField }: Name
)}
{field.inserted && (
-
- {field.customText}
-
+
+
+ {field.customText}
+
+
)}
diff --git a/apps/web/src/app/(signing)/sign/[token]/number-field.tsx b/apps/web/src/app/(signing)/sign/[token]/number-field.tsx
index ffd90df64..07846468c 100644
--- a/apps/web/src/app/(signing)/sign/[token]/number-field.tsx
+++ b/apps/web/src/app/(signing)/sign/[token]/number-field.tsx
@@ -52,8 +52,19 @@ export const NumberField = ({ field, recipient, onSignField, onUnsignField }: Nu
const [isPending, startTransition] = useTransition();
const [showRadioModal, setShowRadioModal] = useState(false);
- const parsedFieldMeta = field.fieldMeta ? ZNumberFieldMeta.parse(field.fieldMeta) : null;
- const isReadOnly = parsedFieldMeta?.readOnly;
+ const { mutateAsync: signFieldWithToken, isPending: isSignFieldWithTokenLoading } =
+ trpc.field.signFieldWithToken.useMutation(DO_NOT_INVALIDATE_QUERY_ON_MUTATION);
+
+ const {
+ mutateAsync: removeSignedFieldWithToken,
+ isPending: isRemoveSignedFieldWithTokenLoading,
+ } = trpc.field.removeSignedFieldWithToken.useMutation(DO_NOT_INVALIDATE_QUERY_ON_MUTATION);
+
+ const safeFieldMeta = ZNumberFieldMeta.safeParse(field.fieldMeta);
+ const parsedFieldMeta = safeFieldMeta.success ? safeFieldMeta.data : null;
+
+ const isLoading = isSignFieldWithTokenLoading || isRemoveSignedFieldWithTokenLoading || isPending;
+
const defaultValue = parsedFieldMeta?.value;
const [localNumber, setLocalNumber] = useState(
parsedFieldMeta?.value ? String(parsedFieldMeta.value) : '0',
@@ -71,16 +82,6 @@ export const NumberField = ({ field, recipient, onSignField, onUnsignField }: Nu
const { executeActionAuthProcedure } = useRequiredDocumentAuthContext();
- const { mutateAsync: signFieldWithToken, isPending: isSignFieldWithTokenLoading } =
- trpc.field.signFieldWithToken.useMutation(DO_NOT_INVALIDATE_QUERY_ON_MUTATION);
-
- const {
- mutateAsync: removeSignedFieldWithToken,
- isPending: isRemoveSignedFieldWithTokenLoading,
- } = trpc.field.removeSignedFieldWithToken.useMutation(DO_NOT_INVALIDATE_QUERY_ON_MUTATION);
-
- const isLoading = isSignFieldWithTokenLoading || isRemoveSignedFieldWithTokenLoading || isPending;
-
const handleNumberChange = (e: React.ChangeEvent) => {
const text = e.target.value;
setLocalNumber(text);
@@ -208,7 +209,7 @@ export const NumberField = ({ field, recipient, onSignField, onUnsignField }: Nu
useEffect(() => {
if (
(!field.inserted && defaultValue && localNumber) ||
- (!field.inserted && isReadOnly && defaultValue)
+ (!field.inserted && parsedFieldMeta?.readOnly && defaultValue)
) {
void executeActionAuthProcedure({
onReauthFormSubmit: async (authOptions) => await onSign(authOptions),
@@ -260,9 +261,21 @@ export const NumberField = ({ field, recipient, onSignField, onUnsignField }: Nu
)}
{field.inserted && (
-
- {field.customText}
-
+
+
+ {field.customText}
+
+
)}
diff --git a/apps/web/src/app/(signing)/sign/[token]/text-field.tsx b/apps/web/src/app/(signing)/sign/[token]/text-field.tsx
index 0c4088d75..3f2229e0c 100644
--- a/apps/web/src/app/(signing)/sign/[token]/text-field.tsx
+++ b/apps/web/src/app/(signing)/sign/[token]/text-field.tsx
@@ -62,7 +62,8 @@ export const TextField = ({ field, recipient, onSignField, onUnsignField }: Text
isPending: isRemoveSignedFieldWithTokenLoading,
} = trpc.field.removeSignedFieldWithToken.useMutation(DO_NOT_INVALIDATE_QUERY_ON_MUTATION);
- const parsedFieldMeta = field.fieldMeta ? ZTextFieldMeta.parse(field.fieldMeta) : null;
+ const safeFieldMeta = ZTextFieldMeta.safeParse(field.fieldMeta);
+ const parsedFieldMeta = safeFieldMeta.success ? safeFieldMeta.data : null;
const isLoading = isSignFieldWithTokenLoading || isRemoveSignedFieldWithTokenLoading || isPending;
const shouldAutoSignField =
@@ -261,11 +262,23 @@ export const TextField = ({ field, recipient, onSignField, onUnsignField }: Text
)}
{field.inserted && (
-
- {field.customText.length < 20
- ? field.customText
- : field.customText.substring(0, 15) + '...'}
-
+
+
+ {field.customText.length < 20
+ ? field.customText
+ : field.customText.substring(0, 15) + '...'}
+
+
)}
@@ -281,6 +294,10 @@ export const TextField = ({ field, recipient, onSignField, onUnsignField }: Text
className={cn('mt-2 w-full rounded-md', {
'border-2 border-red-300 ring-2 ring-red-200 ring-offset-2 ring-offset-red-200 focus-visible:border-red-400 focus-visible:ring-4 focus-visible:ring-red-200 focus-visible:ring-offset-2 focus-visible:ring-offset-red-200':
userInputHasErrors,
+ 'text-left': parsedFieldMeta?.textAlign === 'left',
+ 'text-center':
+ !parsedFieldMeta?.textAlign || parsedFieldMeta?.textAlign === 'center',
+ 'text-right': parsedFieldMeta?.textAlign === 'right',
})}
value={localText}
onChange={handleTextChange}
diff --git a/packages/lib/server-only/pdf/insert-field-in-pdf.ts b/packages/lib/server-only/pdf/insert-field-in-pdf.ts
index af760c7f4..dc2308978 100644
--- a/packages/lib/server-only/pdf/insert-field-in-pdf.ts
+++ b/packages/lib/server-only/pdf/insert-field-in-pdf.ts
@@ -1,7 +1,7 @@
// https://github.com/Hopding/pdf-lib/issues/20#issuecomment-412852821
import fontkit from '@pdf-lib/fontkit';
import type { PDFDocument } from 'pdf-lib';
-import { RotationTypes, degrees, radiansToDegrees } from 'pdf-lib';
+import { RotationTypes, degrees, radiansToDegrees, rgb } from 'pdf-lib';
import { P, match } from 'ts-pattern';
import {
@@ -36,6 +36,9 @@ export const insertFieldInPDF = async (pdf: PDFDocument, field: FieldWithSignatu
);
const isSignatureField = isSignatureFieldType(field.type);
+ const isDebugMode =
+ // eslint-disable-next-line turbo/no-undeclared-env-vars
+ process.env.DEBUG_PDF_INSERT === '1' || process.env.DEBUG_PDF_INSERT === 'true';
pdf.registerFontkit(fontkit);
@@ -83,6 +86,35 @@ export const insertFieldInPDF = async (pdf: PDFDocument, field: FieldWithSignatu
const fieldX = pageWidth * (Number(field.positionX) / 100);
const fieldY = pageHeight * (Number(field.positionY) / 100);
+ // Draw debug box if debug mode is enabled
+ if (isDebugMode) {
+ let debugX = fieldX;
+ let debugY = pageHeight - fieldY - fieldHeight; // Invert Y for PDF coordinates
+
+ if (pageRotationInDegrees !== 0) {
+ const adjustedPosition = adjustPositionForRotation(
+ pageWidth,
+ pageHeight,
+ debugX,
+ debugY,
+ pageRotationInDegrees,
+ );
+
+ debugX = adjustedPosition.xPos;
+ debugY = adjustedPosition.yPos;
+ }
+
+ page.drawRectangle({
+ x: debugX,
+ y: debugY,
+ width: fieldWidth,
+ height: fieldHeight,
+ borderColor: rgb(1, 0, 0), // Red
+ borderWidth: 1,
+ rotate: degrees(pageRotationInDegrees),
+ });
+ }
+
const font = await pdf.embedFont(
isSignatureField ? fontCaveat : fontNoto,
isSignatureField ? { features: { calt: false } } : undefined,
@@ -278,6 +310,7 @@ export const insertFieldInPDF = async (pdf: PDFDocument, field: FieldWithSignatu
const meta = Parser ? Parser.safeParse(field.fieldMeta) : null;
const customFontSize = meta?.success && meta.data.fontSize ? meta.data.fontSize : null;
+ const textAlign = meta?.success && meta.data.textAlign ? meta.data.textAlign : 'center';
const longestLineInTextForWidth = field.customText
.split('\n')
.sort((a, b) => b.length - a.length)[0];
@@ -293,7 +326,17 @@ export const insertFieldInPDF = async (pdf: PDFDocument, field: FieldWithSignatu
textWidth = font.widthOfTextAtSize(longestLineInTextForWidth, fontSize);
- let textX = fieldX + (fieldWidth - textWidth) / 2;
+ // Add padding similar to web display (roughly 0.5rem equivalent in PDF units)
+ const padding = 8; // PDF points, roughly equivalent to 0.5rem
+
+ // Calculate X position based on text alignment with padding
+ let textX = fieldX + padding; // Left alignment starts after padding
+ if (textAlign === 'center') {
+ textX = fieldX + (fieldWidth - textWidth) / 2; // Center alignment ignores padding
+ } else if (textAlign === 'right') {
+ textX = fieldX + fieldWidth - textWidth - padding; // Right alignment respects right padding
+ }
+
let textY = fieldY + (fieldHeight - textHeight) / 2;
// Invert the Y axis since PDFs use a bottom-left coordinate system
diff --git a/packages/lib/types/field-meta.ts b/packages/lib/types/field-meta.ts
index f4e4da8f3..674cccb4b 100644
--- a/packages/lib/types/field-meta.ts
+++ b/packages/lib/types/field-meta.ts
@@ -11,9 +11,14 @@ export const ZBaseFieldMeta = z.object({
export type TBaseFieldMeta = z.infer;
+export const ZFieldTextAlignSchema = z.enum(['left', 'center', 'right']);
+
+export type TFieldTextAlignSchema = z.infer;
+
export const ZInitialsFieldMeta = ZBaseFieldMeta.extend({
type: z.literal('initials'),
fontSize: z.number().min(8).max(96).optional(),
+ textAlign: ZFieldTextAlignSchema.optional(),
});
export type TInitialsFieldMeta = z.infer;
@@ -21,6 +26,7 @@ export type TInitialsFieldMeta = z.infer;
export const ZNameFieldMeta = ZBaseFieldMeta.extend({
type: z.literal('name'),
fontSize: z.number().min(8).max(96).optional(),
+ textAlign: ZFieldTextAlignSchema.optional(),
});
export type TNameFieldMeta = z.infer;
@@ -28,6 +34,7 @@ export type TNameFieldMeta = z.infer;
export const ZEmailFieldMeta = ZBaseFieldMeta.extend({
type: z.literal('email'),
fontSize: z.number().min(8).max(96).optional(),
+ textAlign: ZFieldTextAlignSchema.optional(),
});
export type TEmailFieldMeta = z.infer;
@@ -35,6 +42,7 @@ export type TEmailFieldMeta = z.infer;
export const ZDateFieldMeta = ZBaseFieldMeta.extend({
type: z.literal('date'),
fontSize: z.number().min(8).max(96).optional(),
+ textAlign: ZFieldTextAlignSchema.optional(),
});
export type TDateFieldMeta = z.infer;
@@ -44,6 +52,7 @@ export const ZTextFieldMeta = ZBaseFieldMeta.extend({
text: z.string().optional(),
characterLimit: z.number().optional(),
fontSize: z.number().min(8).max(96).optional(),
+ textAlign: ZFieldTextAlignSchema.optional(),
});
export type TTextFieldMeta = z.infer;
@@ -55,6 +64,7 @@ export const ZNumberFieldMeta = ZBaseFieldMeta.extend({
minValue: z.number().optional(),
maxValue: z.number().optional(),
fontSize: z.number().min(8).max(96).optional(),
+ textAlign: ZFieldTextAlignSchema.optional(),
});
export type TNumberFieldMeta = z.infer;
diff --git a/packages/ui/primitives/document-flow/field-item-advanced-settings.tsx b/packages/ui/primitives/document-flow/field-item-advanced-settings.tsx
index a9123486b..e30763a7f 100644
--- a/packages/ui/primitives/document-flow/field-item-advanced-settings.tsx
+++ b/packages/ui/primitives/document-flow/field-item-advanced-settings.tsx
@@ -71,21 +71,25 @@ const getDefaultState = (fieldType: FieldType): FieldMeta => {
return {
type: 'initials',
fontSize: 14,
+ textAlign: 'left',
};
case FieldType.NAME:
return {
type: 'name',
fontSize: 14,
+ textAlign: 'left',
};
case FieldType.EMAIL:
return {
type: 'email',
fontSize: 14,
+ textAlign: 'left',
};
case FieldType.DATE:
return {
type: 'date',
fontSize: 14,
+ textAlign: 'left',
};
case FieldType.TEXT:
return {
@@ -97,6 +101,7 @@ const getDefaultState = (fieldType: FieldType): FieldMeta => {
fontSize: 14,
required: false,
readOnly: false,
+ textAlign: 'left',
};
case FieldType.NUMBER:
return {
@@ -110,6 +115,7 @@ const getDefaultState = (fieldType: FieldType): FieldMeta => {
required: false,
readOnly: false,
fontSize: 14,
+ textAlign: 'left',
};
case FieldType.RADIO:
return {
diff --git a/packages/ui/primitives/document-flow/field-items-advanced-settings/date-field.tsx b/packages/ui/primitives/document-flow/field-items-advanced-settings/date-field.tsx
index c3108b20b..99fbba491 100644
--- a/packages/ui/primitives/document-flow/field-items-advanced-settings/date-field.tsx
+++ b/packages/ui/primitives/document-flow/field-items-advanced-settings/date-field.tsx
@@ -5,6 +5,13 @@ import { validateFields as validateDateFields } from '@documenso/lib/advanced-fi
import { type TDateFieldMeta as DateFieldMeta } from '@documenso/lib/types/field-meta';
import { Input } from '@documenso/ui/primitives/input';
import { Label } from '@documenso/ui/primitives/label';
+import {
+ Select,
+ SelectContent,
+ SelectItem,
+ SelectTrigger,
+ SelectValue,
+} from '@documenso/ui/primitives/select';
type DateFieldAdvancedSettingsProps = {
fieldState: DateFieldMeta;
@@ -66,6 +73,27 @@ export const DateFieldAdvancedSettings = ({
max={96}
/>
+
+
+
+
+
+
);
};
diff --git a/packages/ui/primitives/document-flow/field-items-advanced-settings/email-field.tsx b/packages/ui/primitives/document-flow/field-items-advanced-settings/email-field.tsx
index 0b6c644eb..92ddafd3c 100644
--- a/packages/ui/primitives/document-flow/field-items-advanced-settings/email-field.tsx
+++ b/packages/ui/primitives/document-flow/field-items-advanced-settings/email-field.tsx
@@ -5,6 +5,13 @@ import { validateFields as validateEmailFields } from '@documenso/lib/advanced-f
import { type TEmailFieldMeta as EmailFieldMeta } from '@documenso/lib/types/field-meta';
import { Input } from '@documenso/ui/primitives/input';
import { Label } from '@documenso/ui/primitives/label';
+import {
+ Select,
+ SelectContent,
+ SelectItem,
+ SelectTrigger,
+ SelectValue,
+} from '@documenso/ui/primitives/select';
type EmailFieldAdvancedSettingsProps = {
fieldState: EmailFieldMeta;
@@ -48,6 +55,27 @@ export const EmailFieldAdvancedSettings = ({
max={96}
/>
+
+