diff --git a/apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx b/apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx
index 92304a62e..c4864145c 100644
--- a/apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx
+++ b/apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx
@@ -1,5 +1,7 @@
'use client';
+import { useMemo } from 'react';
+
import { useRouter } from 'next/navigation';
import { Trans, msg } from '@lingui/macro';
@@ -15,6 +17,7 @@ import {
} from '@documenso/prisma/client';
import { trpc } from '@documenso/trpc/react';
import { Button } from '@documenso/ui/primitives/button';
+import type { DataTableColumnDef } from '@documenso/ui/primitives/data-table';
import { DataTable } from '@documenso/ui/primitives/data-table';
import {
Form,
@@ -59,6 +62,50 @@ export const RecipientItem = ({ recipient }: RecipientItemProps) => {
const { mutateAsync: updateRecipient } = trpc.admin.updateRecipient.useMutation();
+ const columns = useMemo(() => {
+ return [
+ {
+ header: 'ID',
+ accessorKey: 'id',
+ cell: ({ row }) =>
{row.original.id}
,
+ },
+ {
+ header: _(msg`Type`),
+ accessorKey: 'type',
+ cell: ({ row }) => {row.original.type}
,
+ },
+ {
+ header: _(msg`Inserted`),
+ accessorKey: 'inserted',
+ cell: ({ row }) => {row.original.inserted ? 'True' : 'False'}
,
+ },
+ {
+ header: _(msg`Value`),
+ accessorKey: 'customText',
+ cell: ({ row }) => {row.original.customText}
,
+ },
+ {
+ header: _(msg`Signature`),
+ accessorKey: 'signature',
+ cell: ({ row }) => (
+
+ {row.original.Signature?.typedSignature && (
+
{row.original.Signature.typedSignature}
+ )}
+
+ {row.original.Signature?.signatureImageAsBase64 && (
+
+ )}
+
+ ),
+ },
+ ] satisfies DataTableColumnDef<(typeof recipient)['Field'][number]>[];
+ }, []);
+
const onUpdateRecipientFormSubmit = async ({ name, email }: TAdminUpdateRecipientFormSchema) => {
try {
await updateRecipient({
@@ -143,50 +190,7 @@ export const RecipientItem = ({ recipient }: RecipientItemProps) => {
Fields
- {row.original.id}
,
- },
- {
- header: _(msg`Type`),
- accessorKey: 'type',
- cell: ({ row }) => {row.original.type}
,
- },
- {
- header: _(msg`Inserted`),
- accessorKey: 'inserted',
- cell: ({ row }) => {row.original.inserted ? 'True' : 'False'}
,
- },
- {
- header: _(msg`Value`),
- accessorKey: 'customText',
- cell: ({ row }) => {row.original.customText}
,
- },
- {
- header: _(msg`Signature`),
- accessorKey: 'signature',
- cell: ({ row }) => (
-
- {row.original.Signature?.typedSignature && (
-
{row.original.Signature.typedSignature}
- )}
-
- {row.original.Signature?.signatureImageAsBase64 && (
-
- )}
-
- ),
- },
- ]}
- />
+
);
};
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 3226ed2c7..1686e0d41 100644
--- a/apps/web/src/app/(dashboard)/admin/documents/document-results.tsx
+++ b/apps/web/src/app/(dashboard)/admin/documents/document-results.tsx
@@ -1,6 +1,6 @@
'use client';
-import { useState } from 'react';
+import { useMemo, useState } from 'react';
import Link from 'next/link';
import { useSearchParams } from 'next/navigation';
@@ -14,6 +14,7 @@ import { useUpdateSearchParams } from '@documenso/lib/client-only/hooks/use-upda
import { extractInitials } from '@documenso/lib/utils/recipient-formatter';
import { trpc } from '@documenso/trpc/react';
import { Avatar, AvatarFallback } from '@documenso/ui/primitives/avatar';
+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';
import { Input } from '@documenso/ui/primitives/input';
@@ -49,6 +50,83 @@ export const AdminDocumentResults = () => {
},
);
+ const results = findDocumentsData ?? {
+ data: [],
+ perPage: 20,
+ currentPage: 1,
+ totalPages: 1,
+ };
+
+ const columns = useMemo(() => {
+ return [
+ {
+ header: _(msg`Created`),
+ accessorKey: 'createdAt',
+ cell: ({ row }) => ,
+ },
+ {
+ header: _(msg`Title`),
+ accessorKey: 'title',
+ cell: ({ row }) => {
+ return (
+
+ {row.original.title}
+
+ );
+ },
+ },
+ {
+ header: _(msg`Status`),
+ accessorKey: 'status',
+ cell: ({ row }) => ,
+ },
+ {
+ header: _(msg`Owner`),
+ accessorKey: 'owner',
+ cell: ({ row }) => {
+ const avatarFallbackText = row.original.User.name
+ ? extractInitials(row.original.User.name)
+ : row.original.User.email.slice(0, 1).toUpperCase();
+
+ return (
+
+
+
+
+
+ {avatarFallbackText}
+
+
+
+
+
+
+
+
+ {avatarFallbackText}
+
+
+
+
+ {row.original.User.name}
+ {row.original.User.email}
+
+
+
+ );
+ },
+ },
+ {
+ header: 'Last updated',
+ accessorKey: 'updatedAt',
+ cell: ({ row }) => ,
+ },
+ ] satisfies DataTableColumnDef<(typeof results)['data'][number]>[];
+ }, []);
+
const onPaginationChange = (newPage: number, newPerPage: number) => {
updateSearchParams({
page: newPage,
@@ -67,77 +145,11 @@ export const AdminDocumentResults = () => {
,
- },
- {
- header: _(msg`Title`),
- accessorKey: 'title',
- cell: ({ row }) => {
- return (
-
- {row.original.title}
-
- );
- },
- },
- {
- header: _(msg`Status`),
- accessorKey: 'status',
- cell: ({ row }) => ,
- },
- {
- header: _(msg`Owner`),
- accessorKey: 'owner',
- cell: ({ row }) => {
- const avatarFallbackText = row.original.User.name
- ? extractInitials(row.original.User.name)
- : row.original.User.email.slice(0, 1).toUpperCase();
-
- return (
-
-
-
-
-
- {avatarFallbackText}
-
-
-
-
-
-
-
-
- {avatarFallbackText}
-
-
-
-
- {row.original.User.name}
- {row.original.User.email}
-
-
-
- );
- },
- },
- {
- header: 'Last updated',
- accessorKey: 'updatedAt',
- cell: ({ row }) => ,
- },
- ]}
- data={findDocumentsData?.data ?? []}
- perPage={findDocumentsData?.perPage ?? 20}
- currentPage={findDocumentsData?.currentPage ?? 1}
- totalPages={findDocumentsData?.totalPages ?? 1}
+ columns={columns}
+ data={results.data}
+ perPage={results.perPage ?? 20}
+ currentPage={results.currentPage ?? 1}
+ totalPages={results.totalPages ?? 1}
onPaginationChange={onPaginationChange}
>
{(table) => }
diff --git a/apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx b/apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx
index 86d2c2b77..da811c5a1 100644
--- a/apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx
+++ b/apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx
@@ -1,6 +1,6 @@
'use client';
-import { useEffect, useState, useTransition } from 'react';
+import { useEffect, useMemo, useState, useTransition } from 'react';
import Link from 'next/link';
@@ -12,6 +12,7 @@ import { useDebouncedValue } from '@documenso/lib/client-only/hooks/use-debounce
import { useUpdateSearchParams } from '@documenso/lib/client-only/hooks/use-update-search-params';
import type { Document, Role, Subscription } from '@documenso/prisma/client';
import { Button } from '@documenso/ui/primitives/button';
+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';
import { Input } from '@documenso/ui/primitives/input';
@@ -54,6 +55,63 @@ export const UsersDataTable = ({
const [searchString, setSearchString] = useState('');
const debouncedSearchString = useDebouncedValue(searchString, 1000);
+ const columns = useMemo(() => {
+ return [
+ {
+ header: 'ID',
+ accessorKey: 'id',
+ cell: ({ row }) => {row.original.id}
,
+ },
+ {
+ header: _(msg`Name`),
+ accessorKey: 'name',
+ cell: ({ row }) => {row.original.name}
,
+ },
+ {
+ header: _(msg`Email`),
+ accessorKey: 'email',
+ cell: ({ row }) => {row.original.email}
,
+ },
+ {
+ header: _(msg`Roles`),
+ accessorKey: 'roles',
+ cell: ({ row }) => row.original.roles.join(', '),
+ },
+ {
+ header: _(msg`Subscription`),
+ accessorKey: 'subscription',
+ cell: ({ row }) => {
+ const foundIndividualSubscription = (row.original.Subscription ?? []).find((sub) =>
+ individualPriceIds.includes(sub.priceId),
+ );
+
+ return foundIndividualSubscription?.status ?? 'NONE';
+ },
+ },
+ {
+ header: _(msg`Documents`),
+ accessorKey: 'documents',
+ cell: ({ row }) => {
+ return {row.original.Document.length}
;
+ },
+ },
+ {
+ header: '',
+ accessorKey: 'edit',
+ cell: ({ row }) => {
+ return (
+
+
+
+ Edit
+
+
+ );
+ },
+ },
+ ] satisfies DataTableColumnDef<(typeof users)[number]>[];
+ }, [individualPriceIds]);
+
useEffect(() => {
startTransition(() => {
updateSearchParams({
@@ -88,60 +146,7 @@ export const UsersDataTable = ({
onChange={handleChange}
/>
{row.original.id}
,
- },
- {
- header: _(msg`Name`),
- accessorKey: 'name',
- cell: ({ row }) => {row.original.name}
,
- },
- {
- header: _(msg`Email`),
- accessorKey: 'email',
- cell: ({ row }) => {row.original.email}
,
- },
- {
- header: _(msg`Roles`),
- accessorKey: 'roles',
- cell: ({ row }) => row.original.roles.join(', '),
- },
- {
- header: _(msg`Subscription`),
- accessorKey: 'subscription',
- cell: ({ row }) => {
- const foundIndividualSubscription = (row.original.Subscription ?? []).find((sub) =>
- individualPriceIds.includes(sub.priceId),
- );
-
- return foundIndividualSubscription?.status ?? 'NONE';
- },
- },
- {
- header: _(msg`Documents`),
- accessorKey: 'documents',
- cell: ({ row }) => {
- return {row.original.Document.length}
;
- },
- },
- {
- header: '',
- accessorKey: 'edit',
- cell: ({ row }) => {
- return (
-
-
-
- Edit
-
-
- );
- },
- },
- ]}
+ columns={columns}
data={users}
perPage={perPage}
currentPage={page}
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 742ad95ff..8da970c35 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
@@ -1,5 +1,7 @@
'use client';
+import { useMemo } from 'react';
+
import { useSearchParams } from 'next/navigation';
import { msg } from '@lingui/macro';
@@ -12,6 +14,7 @@ import { useUpdateSearchParams } from '@documenso/lib/client-only/hooks/use-upda
import { ZBaseTableSearchParamsSchema } from '@documenso/lib/types/search-params';
import { formatDocumentAuditLogAction } from '@documenso/lib/utils/document-audit-logs';
import { trpc } from '@documenso/trpc/react';
+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';
import { Skeleton } from '@documenso/ui/primitives/skeleton';
@@ -31,8 +34,6 @@ const dateFormat: DateTimeFormatOptions = {
export const DocumentLogsDataTable = ({ documentId }: DocumentLogsDataTableProps) => {
const { _ } = useLingui();
- const parser = new UAParser();
-
const searchParams = useSearchParams();
const updateSearchParams = useUpdateSearchParams();
@@ -70,64 +71,70 @@ export const DocumentLogsDataTable = ({ documentId }: DocumentLogsDataTableProps
totalPages: 1,
};
+ const columns = useMemo(() => {
+ const parser = new UAParser();
+
+ return [
+ {
+ header: _(msg`Time`),
+ accessorKey: 'createdAt',
+ cell: ({ row }) => ,
+ },
+ {
+ header: _(msg`User`),
+ accessorKey: 'name',
+ cell: ({ row }) =>
+ row.original.name || row.original.email ? (
+
+ {row.original.name && (
+
+ {row.original.name}
+
+ )}
+
+ {row.original.email && (
+
+ {row.original.email}
+
+ )}
+
+ ) : (
+ N/A
+ ),
+ },
+ {
+ header: _(msg`Action`),
+ accessorKey: 'type',
+ cell: ({ row }) => (
+
+ {uppercaseFistLetter(formatDocumentAuditLogAction(row.original).description)}
+
+ ),
+ },
+ {
+ header: 'IP Address',
+ accessorKey: 'ipAddress',
+ },
+ {
+ header: 'Browser',
+ cell: ({ row }) => {
+ if (!row.original.userAgent) {
+ return 'N/A';
+ }
+
+ parser.setUA(row.original.userAgent);
+
+ const result = parser.getResult();
+
+ return result.browser.name ?? 'N/A';
+ },
+ },
+ ] satisfies DataTableColumnDef<(typeof results)['data'][number]>[];
+ }, []);
+
return (
,
- },
- {
- header: _(msg`User`),
- accessorKey: 'name',
- cell: ({ row }) =>
- row.original.name || row.original.email ? (
-
- {row.original.name && (
-
- {row.original.name}
-
- )}
-
- {row.original.email && (
-
- {row.original.email}
-
- )}
-
- ) : (
- N/A
- ),
- },
- {
- header: _(msg`Action`),
- accessorKey: 'type',
- cell: ({ row }) => (
-
- {uppercaseFistLetter(formatDocumentAuditLogAction(row.original).description)}
-
- ),
- },
- {
- header: 'IP Address',
- accessorKey: 'ipAddress',
- },
- {
- header: 'Browser',
- cell: ({ row }) => {
- if (!row.original.userAgent) {
- return 'N/A';
- }
-
- parser.setUA(row.original.userAgent);
-
- const result = parser.getResult();
-
- return result.browser.name ?? 'N/A';
- },
- },
- ]}
+ columns={columns}
data={results.data}
perPage={results.perPage}
currentPage={results.currentPage}
diff --git a/apps/web/src/app/(dashboard)/documents/data-table.tsx b/apps/web/src/app/(dashboard)/documents/data-table.tsx
index cc19cad2d..8635dc3c7 100644
--- a/apps/web/src/app/(dashboard)/documents/data-table.tsx
+++ b/apps/web/src/app/(dashboard)/documents/data-table.tsx
@@ -1,6 +1,6 @@
'use client';
-import { useTransition } from 'react';
+import { useMemo, useTransition } from 'react';
import { msg } from '@lingui/macro';
import { useLingui } from '@lingui/react';
@@ -12,6 +12,7 @@ import { useUpdateSearchParams } from '@documenso/lib/client-only/hooks/use-upda
import type { FindResultSet } from '@documenso/lib/types/find-result-set';
import type { Document, Recipient, Team, User } from '@documenso/prisma/client';
import { ExtendedDocumentStatus } from '@documenso/prisma/types/extended-document-status';
+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';
@@ -47,6 +48,57 @@ export const DocumentsDataTable = ({
const updateSearchParams = useUpdateSearchParams();
+ const columns = useMemo(() => {
+ return [
+ {
+ header: _(msg`Created`),
+ accessorKey: 'createdAt',
+ cell: ({ row }) => (
+
+ ),
+ },
+ {
+ header: _(msg`Title`),
+ cell: ({ row }) => ,
+ },
+ {
+ id: 'sender',
+ header: _(msg`Sender`),
+ cell: ({ row }) => row.original.User.name ?? row.original.User.email,
+ },
+ {
+ header: _(msg`Recipient`),
+ accessorKey: 'recipient',
+ cell: ({ row }) => (
+
+ ),
+ },
+ {
+ header: _(msg`Status`),
+ accessorKey: 'status',
+ cell: ({ row }) => ,
+ size: 140,
+ },
+ {
+ header: _(msg`Actions`),
+ cell: ({ row }) =>
+ (!row.original.deletedAt ||
+ row.original.status === ExtendedDocumentStatus.COMPLETED) && (
+
+
+
+
+ ),
+ },
+ ] satisfies DataTableColumnDef<(typeof results)['data'][number]>[];
+ }, [team]);
+
const onPaginationChange = (page: number, perPage: number) => {
startTransition(() => {
updateSearchParams({
@@ -63,54 +115,7 @@ export const DocumentsDataTable = ({
return (
(
-
- ),
- },
- {
- header: _(msg`Title`),
- cell: ({ row }) => ,
- },
- {
- id: 'sender',
- header: _(msg`Sender`),
- cell: ({ row }) => row.original.User.name ?? row.original.User.email,
- },
- {
- header: _(msg`Recipient`),
- accessorKey: 'recipient',
- cell: ({ row }) => (
-
- ),
- },
- {
- header: _(msg`Status`),
- accessorKey: 'status',
- cell: ({ row }) => ,
- size: 140,
- },
- {
- header: _(msg`Actions`),
- cell: ({ row }) =>
- (!row.original.deletedAt ||
- row.original.status === ExtendedDocumentStatus.COMPLETED) && (
-
-
-
-
- ),
- },
- ]}
+ columns={columns}
data={results.data}
perPage={results.perPage}
currentPage={results.currentPage}
diff --git a/apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx b/apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx
index 8192e4246..5f9f7e88c 100644
--- a/apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx
+++ b/apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx
@@ -1,5 +1,7 @@
'use client';
+import { useMemo } from 'react';
+
import { usePathname, useRouter, useSearchParams } from 'next/navigation';
import { msg } from '@lingui/macro';
@@ -12,6 +14,7 @@ import { useUpdateSearchParams } from '@documenso/lib/client-only/hooks/use-upda
import { USER_SECURITY_AUDIT_LOG_MAP } from '@documenso/lib/constants/auth';
import { ZBaseTableSearchParamsSchema } from '@documenso/lib/types/search-params';
import { trpc } from '@documenso/trpc/react';
+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';
import { Skeleton } from '@documenso/ui/primitives/skeleton';
@@ -27,8 +30,6 @@ const dateFormat: DateTimeFormatOptions = {
export const UserSecurityActivityDataTable = () => {
const { _ } = useLingui();
- const parser = new UAParser();
-
const pathname = usePathname();
const router = useRouter();
const searchParams = useSearchParams();
@@ -63,63 +64,69 @@ export const UserSecurityActivityDataTable = () => {
totalPages: 1,
};
+ const columns = useMemo(() => {
+ const parser = new UAParser();
+
+ return [
+ {
+ header: _(msg`Date`),
+ accessorKey: 'createdAt',
+ cell: ({ row }) => ,
+ },
+ {
+ header: _(msg`Device`),
+ cell: ({ row }) => {
+ if (!row.original.userAgent) {
+ return 'N/A';
+ }
+
+ parser.setUA(row.original.userAgent);
+
+ const result = parser.getResult();
+
+ let output = result.os.name;
+
+ if (!output) {
+ return 'N/A';
+ }
+
+ if (result.os.version) {
+ output += ` (${result.os.version})`;
+ }
+
+ return output;
+ },
+ },
+ {
+ header: _(msg`Browser`),
+ cell: ({ row }) => {
+ if (!row.original.userAgent) {
+ return 'N/A';
+ }
+
+ parser.setUA(row.original.userAgent);
+
+ const result = parser.getResult();
+
+ return result.browser.name ?? 'N/A';
+ },
+ },
+ {
+ header: 'IP Address',
+ accessorKey: 'ipAddress',
+ cell: ({ row }) => row.original.ipAddress ?? 'N/A',
+ },
+ {
+ header: _(msg`Action`),
+ accessorKey: 'type',
+ cell: ({ row }) => USER_SECURITY_AUDIT_LOG_MAP[row.original.type],
+ },
+ ] satisfies DataTableColumnDef<(typeof results)['data'][number]>[];
+ }, []);
+
return (
,
- },
- {
- header: _(msg`Device`),
- cell: ({ row }) => {
- if (!row.original.userAgent) {
- return 'N/A';
- }
-
- parser.setUA(row.original.userAgent);
-
- const result = parser.getResult();
-
- let output = result.os.name;
-
- if (!output) {
- return 'N/A';
- }
-
- if (result.os.version) {
- output += ` (${result.os.version})`;
- }
-
- return output;
- },
- },
- {
- header: _(msg`Browser`),
- cell: ({ row }) => {
- if (!row.original.userAgent) {
- return 'N/A';
- }
-
- parser.setUA(row.original.userAgent);
-
- const result = parser.getResult();
-
- return result.browser.name ?? 'N/A';
- },
- },
- {
- header: 'IP Address',
- accessorKey: 'ipAddress',
- cell: ({ row }) => row.original.ipAddress ?? 'N/A',
- },
- {
- header: _(msg`Action`),
- accessorKey: 'type',
- cell: ({ row }) => USER_SECURITY_AUDIT_LOG_MAP[row.original.type],
- },
- ]}
+ columns={columns}
data={results.data}
perPage={results.perPage}
currentPage={results.currentPage}
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 471722683..9763325b9 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
@@ -1,5 +1,7 @@
'use client';
+import { useMemo } from 'react';
+
import { usePathname, useRouter, useSearchParams } from 'next/navigation';
import { msg } from '@lingui/macro';
@@ -9,6 +11,7 @@ import { DateTime } from 'luxon';
import { useUpdateSearchParams } from '@documenso/lib/client-only/hooks/use-update-search-params';
import { ZBaseTableSearchParamsSchema } from '@documenso/lib/types/search-params';
import { trpc } from '@documenso/trpc/react';
+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';
import { Skeleton } from '@documenso/ui/primitives/skeleton';
@@ -52,38 +55,42 @@ export const UserPasskeysDataTable = () => {
totalPages: 1,
};
+ const columns = useMemo(() => {
+ return [
+ {
+ header: _(msg`Name`),
+ accessorKey: 'name',
+ },
+ {
+ header: _(msg`Created`),
+ accessorKey: 'createdAt',
+ cell: ({ row }) => DateTime.fromJSDate(row.original.createdAt).toRelative(),
+ },
+
+ {
+ header: _(msg`Last used`),
+ accessorKey: 'updatedAt',
+ cell: ({ row }) =>
+ row.original.lastUsedAt
+ ? DateTime.fromJSDate(row.original.lastUsedAt).toRelative()
+ : msg`Never`,
+ },
+ {
+ id: 'actions',
+ cell: ({ row }) => (
+
+ ),
+ },
+ ] satisfies DataTableColumnDef<(typeof results)['data'][number]>[];
+ }, []);
+
return (
DateTime.fromJSDate(row.original.createdAt).toRelative(),
- },
-
- {
- header: _(msg`Last used`),
- accessorKey: 'updatedAt',
- cell: ({ row }) =>
- row.original.lastUsedAt
- ? DateTime.fromJSDate(row.original.lastUsedAt).toRelative()
- : msg`Never`,
- },
- {
- id: 'actions',
- cell: ({ row }) => (
-
- ),
- },
- ]}
+ columns={columns}
data={results.data}
perPage={results.perPage}
currentPage={results.currentPage}
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 de2eb218c..bb913c994 100644
--- a/apps/web/src/app/(dashboard)/templates/data-table-templates.tsx
+++ b/apps/web/src/app/(dashboard)/templates/data-table-templates.tsx
@@ -1,6 +1,6 @@
'use client';
-import { useTransition } from 'react';
+import { useMemo, useTransition } from 'react';
import Link from 'next/link';
@@ -12,6 +12,7 @@ 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 { 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';
import { DataTablePagination } from '@documenso/ui/primitives/data-table-pagination';
import { Tooltip, TooltipContent, TooltipTrigger } from '@documenso/ui/primitives/tooltip';
@@ -50,6 +51,116 @@ export const TemplatesDataTable = ({
const { _ } = useLingui();
const { remaining } = useLimits();
+ const columns = useMemo(() => {
+ return [
+ {
+ header: _(msg`Created`),
+ accessorKey: 'createdAt',
+ cell: ({ row }) => ,
+ },
+ {
+ header: _(msg`Title`),
+ cell: ({ row }) => ,
+ },
+ {
+ header: () => (
+
+
Type
+
+
+
+
+
+
+
+
+
+
+ Public
+
+
+
+
+ Public templates are connected to your public profile. Any modifications
+ to public templates will also appear in your public profile.
+
+
+
+
+
+
+ direct link
+
+
+
+
+ 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.
+
+
+
+
+
+
+ {teamId ? Team Only : Private }
+
+
+
+ {teamId ? (
+
+ Team only templates are not linked anywhere and are visible only to
+ your team.
+
+ ) : (
+ Private templates can only be modified and viewed by you.
+ )}
+
+
+
+
+
+
+ ),
+ accessorKey: 'type',
+ cell: ({ row }) => (
+
+
+
+ {row.original.directLink?.token && (
+
+ )}
+
+ ),
+ },
+ {
+ header: _(msg`Actions`),
+ accessorKey: 'actions',
+ cell: ({ row }) => {
+ return (
+
+
+
+
+
+ );
+ },
+ },
+ ] satisfies DataTableColumnDef<(typeof templates)[number]>[];
+ }, [documentRootPath, teamId, templateRootPath]);
+
const onPaginationChange = (page: number, perPage: number) => {
startTransition(() => {
updateSearchParams({
@@ -79,113 +190,7 @@ export const TemplatesDataTable = ({
)}
,
- },
- {
- header: _(msg`Title`),
- cell: ({ row }) => ,
- },
- {
- header: () => (
-
-
Type
-
-
-
-
-
-
-
-
-
-
- Public
-
-
-
-
- Public templates are connected to your public profile. Any modifications
- to public templates will also appear in your public profile.
-
-
-
-
-
-
- direct link
-
-
-
-
- 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.
-
-
-
-
-
-
- {teamId ? Team Only : Private }
-
-
-
- {teamId ? (
-
- Team only templates are not linked anywhere and are visible only to
- your team.
-
- ) : (
- Private templates can only be modified and viewed by you.
- )}
-
-
-
-
-
-
- ),
- accessorKey: 'type',
- cell: ({ row }) => (
-
-
-
- {row.original.directLink?.token && (
-
- )}
-
- ),
- },
- {
- header: _(msg`Actions`),
- accessorKey: 'actions',
- cell: ({ row }) => {
- return (
-
-
-
-
-
- );
- },
- },
- ]}
+ columns={columns}
data={templates}
perPage={perPage}
currentPage={page}
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 6cc82139f..122eca5cc 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
@@ -1,5 +1,7 @@
'use client';
+import { useMemo } from 'react';
+
import Link from 'next/link';
import { useSearchParams } from 'next/navigation';
@@ -14,6 +16,7 @@ import { canExecuteTeamAction } from '@documenso/lib/utils/teams';
import { trpc } from '@documenso/trpc/react';
import { AvatarWithText } from '@documenso/ui/primitives/avatar';
import { Button } from '@documenso/ui/primitives/button';
+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';
import { Skeleton } from '@documenso/ui/primitives/skeleton';
@@ -58,70 +61,74 @@ export const CurrentUserTeamsDataTable = () => {
totalPages: 1,
};
+ const columns = useMemo(() => {
+ return [
+ {
+ header: _(msg`Team`),
+ accessorKey: 'name',
+ cell: ({ row }) => (
+
+ {row.original.name}
+ }
+ secondaryText={`${WEBAPP_BASE_URL}/t/${row.original.url}`}
+ />
+
+ ),
+ },
+ {
+ header: _(msg`Role`),
+ accessorKey: 'role',
+ cell: ({ row }) =>
+ row.original.ownerUserId === row.original.currentTeamMember.userId
+ ? 'Owner'
+ : _(TEAM_MEMBER_ROLE_MAP[row.original.currentTeamMember.role]),
+ },
+ {
+ header: _(msg`Member Since`),
+ accessorKey: 'createdAt',
+ cell: ({ row }) => ,
+ },
+ {
+ id: 'actions',
+ cell: ({ row }) => (
+
+ {canExecuteTeamAction('MANAGE_TEAM', row.original.currentTeamMember.role) && (
+
+
+ Manage
+
+
+ )}
+
+ e.preventDefault()}
+ >
+ Leave
+
+ }
+ />
+
+ ),
+ },
+ ] satisfies DataTableColumnDef<(typeof results)['data'][number]>[];
+ }, []);
+
return (
(
-
- {row.original.name}
- }
- secondaryText={`${WEBAPP_BASE_URL}/t/${row.original.url}`}
- />
-
- ),
- },
- {
- header: _(msg`Role`),
- accessorKey: 'role',
- cell: ({ row }) =>
- row.original.ownerUserId === row.original.currentTeamMember.userId
- ? 'Owner'
- : _(TEAM_MEMBER_ROLE_MAP[row.original.currentTeamMember.role]),
- },
- {
- header: _(msg`Member Since`),
- accessorKey: 'createdAt',
- cell: ({ row }) => ,
- },
- {
- id: 'actions',
- cell: ({ row }) => (
-
- {canExecuteTeamAction('MANAGE_TEAM', row.original.currentTeamMember.role) && (
-
-
- Manage
-
-
- )}
-
- e.preventDefault()}
- >
- Leave
-
- }
- />
-
- ),
- },
- ]}
+ columns={columns}
data={results.data}
perPage={results.perPage}
currentPage={results.currentPage}
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 ccca45db8..57e3f5b14 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
@@ -1,6 +1,6 @@
'use client';
-import { useEffect, useState } from 'react';
+import { useEffect, useMemo, useState } from 'react';
import { useSearchParams } from 'next/navigation';
@@ -12,6 +12,7 @@ import { WEBAPP_BASE_URL } from '@documenso/lib/constants/app';
import { ZBaseTableSearchParamsSchema } from '@documenso/lib/types/search-params';
import { trpc } from '@documenso/trpc/react';
import { AvatarWithText } from '@documenso/ui/primitives/avatar';
+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';
import { Skeleton } from '@documenso/ui/primitives/skeleton';
@@ -59,6 +60,40 @@ export const PendingUserTeamsDataTable = () => {
totalPages: 1,
};
+ const columns = useMemo(() => {
+ return [
+ {
+ header: _(msg`Team`),
+ accessorKey: 'name',
+ cell: ({ row }) => (
+ {row.original.name}
+ }
+ secondaryText={`${WEBAPP_BASE_URL}/t/${row.original.url}`}
+ />
+ ),
+ },
+ {
+ header: _(msg`Created on`),
+ accessorKey: 'createdAt',
+ cell: ({ row }) => ,
+ },
+ {
+ id: 'actions',
+ cell: ({ row }) => (
+
+ ),
+ },
+ ] satisfies DataTableColumnDef<(typeof results)['data'][number]>[];
+ }, []);
+
useEffect(() => {
const searchParamCheckout = searchParams?.get('checkout');
@@ -71,37 +106,7 @@ export const PendingUserTeamsDataTable = () => {
return (
<>
(
- {row.original.name}
- }
- secondaryText={`${WEBAPP_BASE_URL}/t/${row.original.url}`}
- />
- ),
- },
- {
- header: _(msg`Created on`),
- accessorKey: 'createdAt',
- cell: ({ row }) => ,
- },
- {
- id: 'actions',
- cell: ({ row }) => (
-
- ),
- },
- ]}
+ columns={columns}
data={results.data}
perPage={results.perPage}
currentPage={results.currentPage}
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 baa3a1e72..000f2f219 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
@@ -1,5 +1,7 @@
'use client';
+import { useMemo } from 'react';
+
import Link from 'next/link';
import { Plural, Trans, msg } from '@lingui/macro';
@@ -9,6 +11,7 @@ import { DateTime } from 'luxon';
import { trpc } from '@documenso/trpc/react';
import { Button } from '@documenso/ui/primitives/button';
+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';
import { Skeleton } from '@documenso/ui/primitives/skeleton';
@@ -46,72 +49,76 @@ export const TeamBillingInvoicesDataTable = ({ teamId }: TeamBillingInvoicesData
totalPages: 1,
};
+ const columns = useMemo(() => {
+ return [
+ {
+ header: _(msg`Invoice`),
+ accessorKey: 'created',
+ cell: ({ row }) => (
+
+
+
+
+
+ {DateTime.fromSeconds(row.original.created).toFormat('MMMM yyyy')}
+
+
+
+
+
+
+ ),
+ },
+ {
+ header: _(msg`Status`),
+ accessorKey: 'status',
+ cell: ({ row }) => {
+ const { status, paid } = row.original;
+
+ if (!status) {
+ return paid ? Paid : Unpaid ;
+ }
+
+ return status.charAt(0).toUpperCase() + status.slice(1);
+ },
+ },
+ {
+ header: _(msg`Amount`),
+ accessorKey: 'total',
+ cell: ({ row }) => formatCurrency(row.original.currency, row.original.total / 100),
+ },
+ {
+ id: 'actions',
+ cell: ({ row }) => (
+
+
+
+ View
+
+
+
+
+
+ Download
+
+
+
+ ),
+ },
+ ] satisfies DataTableColumnDef<(typeof results)['data'][number]>[];
+ }, []);
+
return (
(
-
-
-
-
-
- {DateTime.fromSeconds(row.original.created).toFormat('MMMM yyyy')}
-
-
-
-
-
-
- ),
- },
- {
- header: _(msg`Status`),
- accessorKey: 'status',
- cell: ({ row }) => {
- const { status, paid } = row.original;
-
- if (!status) {
- return paid ? Paid : Unpaid ;
- }
-
- return status.charAt(0).toUpperCase() + status.slice(1);
- },
- },
- {
- header: _(msg`Amount`),
- accessorKey: 'total',
- cell: ({ row }) => formatCurrency(row.original.currency, row.original.total / 100),
- },
- {
- id: 'actions',
- cell: ({ row }) => (
-
-
-
- View
-
-
-
-
-
- Download
-
-
-
- ),
- },
- ]}
+ columns={columns}
data={results.data}
perPage={results.perPage}
currentPage={results.currentPage}
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 fb5f80747..d223549fd 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
@@ -1,5 +1,7 @@
'use client';
+import { useMemo } from 'react';
+
import { useSearchParams } from 'next/navigation';
import { Trans, msg } from '@lingui/macro';
@@ -11,6 +13,7 @@ import { TEAM_MEMBER_ROLE_MAP } from '@documenso/lib/constants/teams';
import { ZBaseTableSearchParamsSchema } from '@documenso/lib/types/search-params';
import { trpc } from '@documenso/trpc/react';
import { AvatarWithText } from '@documenso/ui/primitives/avatar';
+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';
import {
@@ -102,74 +105,78 @@ export const TeamMemberInvitesDataTable = ({ teamId }: TeamMemberInvitesDataTabl
totalPages: 1,
};
+ const columns = useMemo(() => {
+ return [
+ {
+ header: _(msg`Team Member`),
+ cell: ({ row }) => {
+ return (
+ {row.original.email}
+ }
+ />
+ );
+ },
+ },
+ {
+ header: _(msg`Role`),
+ accessorKey: 'role',
+ cell: ({ row }) => _(TEAM_MEMBER_ROLE_MAP[row.original.role]) ?? row.original.role,
+ },
+ {
+ header: _(msg`Invited At`),
+ accessorKey: 'createdAt',
+ cell: ({ row }) => ,
+ },
+ {
+ header: _(msg`Actions`),
+ cell: ({ row }) => (
+
+
+
+
+
+
+
+ Actions
+
+
+
+ resendTeamMemberInvitation({
+ teamId,
+ invitationId: row.original.id,
+ })
+ }
+ >
+
+ Resend
+
+
+
+ deleteTeamMemberInvitations({
+ teamId,
+ invitationIds: [row.original.id],
+ })
+ }
+ >
+
+ Remove
+
+
+
+ ),
+ },
+ ] satisfies DataTableColumnDef<(typeof results)['data'][number]>[];
+ }, []);
+
return (
{
- return (
- {row.original.email}
- }
- />
- );
- },
- },
- {
- header: _(msg`Role`),
- accessorKey: 'role',
- cell: ({ row }) => _(TEAM_MEMBER_ROLE_MAP[row.original.role]) ?? row.original.role,
- },
- {
- header: _(msg`Invited At`),
- accessorKey: 'createdAt',
- cell: ({ row }) => ,
- },
- {
- header: _(msg`Actions`),
- cell: ({ row }) => (
-
-
-
-
-
-
-
- Actions
-
-
-
- resendTeamMemberInvitation({
- teamId,
- invitationId: row.original.id,
- })
- }
- >
-
- Resend
-
-
-
- deleteTeamMemberInvitations({
- teamId,
- invitationIds: [row.original.id],
- })
- }
- >
-
- Remove
-
-
-
- ),
- },
- ]}
+ columns={columns}
data={results.data}
perPage={results.perPage}
currentPage={results.currentPage}
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 87a8dcfa1..4882443b6 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
@@ -1,5 +1,7 @@
'use client';
+import { useMemo } from 'react';
+
import { useSearchParams } from 'next/navigation';
import { Trans, msg } from '@lingui/macro';
@@ -14,6 +16,7 @@ import { isTeamRoleWithinUserHierarchy } from '@documenso/lib/utils/teams';
import type { TeamMemberRole } from '@documenso/prisma/client';
import { trpc } from '@documenso/trpc/react';
import { AvatarWithText } from '@documenso/ui/primitives/avatar';
+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';
import {
@@ -79,100 +82,104 @@ export const TeamMembersDataTable = ({
totalPages: 1,
};
+ const columns = useMemo(() => {
+ return [
+ {
+ header: _(msg`Team Member`),
+ cell: ({ row }) => {
+ const avatarFallbackText = row.original.user.name
+ ? extractInitials(row.original.user.name)
+ : row.original.user.email.slice(0, 1).toUpperCase();
+
+ return (
+ {row.original.user.name}
+ }
+ secondaryText={row.original.user.email}
+ />
+ );
+ },
+ },
+ {
+ header: _(msg`Role`),
+ accessorKey: 'role',
+ cell: ({ row }) =>
+ teamOwnerUserId === row.original.userId
+ ? 'Owner'
+ : _(TEAM_MEMBER_ROLE_MAP[row.original.role]),
+ },
+ {
+ header: _(msg`Member Since`),
+ accessorKey: 'createdAt',
+ cell: ({ row }) => ,
+ },
+ {
+ header: _(msg`Actions`),
+ cell: ({ row }) => (
+
+
+
+
+
+
+
+ Actions
+
+
+ e.preventDefault()}
+ title="Update team member role"
+ >
+
+ Update role
+
+ }
+ />
+
+ e.preventDefault()}
+ disabled={
+ teamOwnerUserId === row.original.userId ||
+ !isTeamRoleWithinUserHierarchy(currentUserTeamRole, row.original.role)
+ }
+ title={_(msg`Remove team member`)}
+ >
+
+ Remove
+
+ }
+ />
+
+
+ ),
+ },
+ ] satisfies DataTableColumnDef<(typeof results)['data'][number]>[];
+ }, []);
+
return (
{
- const avatarFallbackText = row.original.user.name
- ? extractInitials(row.original.user.name)
- : row.original.user.email.slice(0, 1).toUpperCase();
-
- return (
- {row.original.user.name}
- }
- secondaryText={row.original.user.email}
- />
- );
- },
- },
- {
- header: _(msg`Role`),
- accessorKey: 'role',
- cell: ({ row }) =>
- teamOwnerUserId === row.original.userId
- ? 'Owner'
- : _(TEAM_MEMBER_ROLE_MAP[row.original.role]),
- },
- {
- header: _(msg`Member Since`),
- accessorKey: 'createdAt',
- cell: ({ row }) => ,
- },
- {
- header: _(msg`Actions`),
- cell: ({ row }) => (
-
-
-
-
-
-
-
- Actions
-
-
- e.preventDefault()}
- title="Update team member role"
- >
-
- Update role
-
- }
- />
-
- e.preventDefault()}
- disabled={
- teamOwnerUserId === row.original.userId ||
- !isTeamRoleWithinUserHierarchy(currentUserTeamRole, row.original.role)
- }
- title={_(msg`Remove team member`)}
- >
-
- Remove
-
- }
- />
-
-
- ),
- },
- ]}
+ columns={columns}
data={results.data}
perPage={results.perPage}
currentPage={results.currentPage}
diff --git a/packages/app-tests/e2e/teams/team-members.spec.ts b/packages/app-tests/e2e/teams/team-members.spec.ts
index 0e5f828ed..99cae7f47 100644
--- a/packages/app-tests/e2e/teams/team-members.spec.ts
+++ b/packages/app-tests/e2e/teams/team-members.spec.ts
@@ -32,8 +32,12 @@ test('[TEAMS]: update team member role', async ({ page }) => {
await page.getByRole('combobox').click();
await page.getByLabel('Manager').click();
await page.getByRole('button', { name: 'Update' }).click();
+
+ // TODO: Remove me, but i don't care for now
+ await page.reload();
+
await expect(
- page.getByRole('row').filter({ hasText: teamMemberToUpdate.user.email }),
+ page.getByRole('row').filter({ hasText: teamMemberToUpdate.user.email }).first(),
).toContainText('Manager');
});
diff --git a/packages/lib/translations/de/common.po b/packages/lib/translations/de/common.po
index 44ca68e0c..09306a5ba 100644
--- a/packages/lib/translations/de/common.po
+++ b/packages/lib/translations/de/common.po
@@ -175,7 +175,7 @@ msgstr ""
msgid "Checkbox values"
msgstr ""
-#: packages/ui/primitives/data-table.tsx:154
+#: packages/ui/primitives/data-table.tsx:156
msgid "Clear filters"
msgstr ""
@@ -398,7 +398,7 @@ msgstr ""
msgid "No restrictions"
msgstr ""
-#: packages/ui/primitives/data-table.tsx:146
+#: packages/ui/primitives/data-table.tsx:148
msgid "No results found"
msgstr ""
@@ -572,7 +572,7 @@ msgstr ""
msgid "Something went wrong"
msgstr ""
-#: packages/ui/primitives/data-table.tsx:134
+#: packages/ui/primitives/data-table.tsx:136
msgid "Something went wrong."
msgstr ""
diff --git a/packages/lib/translations/de/web.po b/packages/lib/translations/de/web.po
index 986ba24e6..475e4680b 100644
--- a/packages/lib/translations/de/web.po
+++ b/packages/lib/translations/de/web.po
@@ -51,7 +51,7 @@ msgstr ""
msgid "{0, plural, one {# recipient} other {# recipients}}"
msgstr ""
-#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:64
+#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:66
msgid "{0, plural, one {# Seat} other {# Seats}}"
msgstr ""
@@ -190,19 +190,19 @@ msgid "Account deleted"
msgstr ""
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:105
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:104
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:106
#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:121
#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:164
-#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:118
+#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:120
msgid "Action"
msgstr ""
-#: apps/web/src/app/(dashboard)/documents/data-table.tsx:103
-#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:168
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:133
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:142
-#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:118
-#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:127
+#: apps/web/src/app/(dashboard)/documents/data-table.tsx:89
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:141
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:135
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:144
+#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:120
+#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:129
msgid "Actions"
msgstr ""
@@ -343,7 +343,7 @@ msgstr ""
msgid "Already have an account? <0>Sign in instead0>"
msgstr ""
-#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:84
+#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:86
msgid "Amount"
msgstr ""
@@ -632,7 +632,7 @@ msgstr ""
msgid "Billing"
msgstr ""
-#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:99
+#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:101
msgid "Browser"
msgstr ""
@@ -953,11 +953,11 @@ msgstr ""
msgid "Create your account and start using state-of-the-art document signing. Open and beautiful signing is within your grasp."
msgstr ""
-#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:72
+#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:63
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:48
-#: apps/web/src/app/(dashboard)/documents/data-table.tsx:68
-#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:63
-#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:84
+#: apps/web/src/app/(dashboard)/documents/data-table.tsx:54
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:65
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:57
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:276
msgid "Created"
msgstr ""
@@ -971,7 +971,7 @@ msgid "Created by"
msgstr ""
#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:49
-#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table.tsx:90
+#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table.tsx:80
msgid "Created on"
msgstr ""
@@ -998,7 +998,7 @@ msgstr ""
msgid "Dark Mode"
msgstr ""
-#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:70
+#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:72
#: apps/web/src/app/(signing)/sign/[token]/date-field.tsx:148
msgid "Date"
msgstr ""
@@ -1096,11 +1096,11 @@ msgstr ""
#~ msgid "Deleting document"
#~ msgstr ""
-#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:75
+#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:77
msgid "Device"
msgstr ""
-#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:119
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:92
#: apps/web/src/app/(dashboard)/templates/template-direct-link-badge.tsx:46
msgid "direct link"
msgstr ""
@@ -1125,7 +1125,7 @@ msgstr ""
msgid "Direct link signing has been enabled"
msgstr ""
-#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:123
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:96
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 ""
@@ -1227,7 +1227,7 @@ msgstr ""
msgid "Document inbox"
msgstr ""
-#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:68
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:179
msgid "Document Limit Exceeded!"
msgstr ""
@@ -1292,7 +1292,7 @@ msgid "Document will be permanently deleted"
msgstr ""
#: apps/web/src/app/(dashboard)/admin/nav.tsx:65
-#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:124
+#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:92
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:113
#: apps/web/src/app/(dashboard)/documents/[id]/edit/document-edit-page-view.tsx:82
#: apps/web/src/app/(dashboard)/documents/[id]/loading.tsx:16
@@ -1324,7 +1324,7 @@ msgstr ""
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:120
#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:141
#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:160
-#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:108
+#: 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
msgid "Download"
@@ -1380,9 +1380,9 @@ msgstr ""
msgid "Edit webhook"
msgstr ""
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:119
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:166
#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:114
-#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:103
+#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:71
#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:213
#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:220
#: apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx:118
@@ -1532,7 +1532,7 @@ msgstr ""
msgid "Failed to reseal document"
msgstr ""
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:78
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:125
msgid "Failed to update recipient"
msgstr ""
@@ -1541,7 +1541,7 @@ msgstr ""
msgid "Failed to update webhook"
msgstr ""
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:143
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:190
msgid "Fields"
msgstr ""
@@ -1660,7 +1660,7 @@ msgstr ""
msgid "Information"
msgstr ""
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:160
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:78
msgid "Inserted"
msgstr ""
@@ -1694,11 +1694,11 @@ msgstr ""
msgid "Invitation declined"
msgstr ""
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:79
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:82
msgid "Invitation has been deleted"
msgstr ""
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:62
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:65
msgid "Invitation has been resent"
msgstr ""
@@ -1718,11 +1718,11 @@ msgstr ""
msgid "Invite team members"
msgstr ""
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:128
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:130
msgid "Invited At"
msgstr ""
-#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:53
+#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:55
msgid "Invoice"
msgstr ""
@@ -1766,12 +1766,12 @@ msgstr ""
msgid "Last updated at"
msgstr ""
-#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:69
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:71
msgid "Last used"
msgstr ""
#: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:111
-#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:117
+#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:119
msgid "Leave"
msgstr ""
@@ -1825,7 +1825,7 @@ msgstr ""
msgid "Login"
msgstr ""
-#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:101
+#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:103
msgid "Manage"
msgstr ""
@@ -1905,8 +1905,8 @@ msgstr ""
msgid "MAU (had document completed)"
msgstr ""
-#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:90
-#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:113
+#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:92
+#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:115
msgid "Member Since"
msgstr ""
@@ -1957,11 +1957,11 @@ msgstr ""
msgid "My templates"
msgstr ""
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:101
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:148
#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:99
-#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:98
+#: 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)/settings/security/passkeys/user-passkeys-data-table.tsx:61
#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:235
#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:242
#: apps/web/src/app/(signing)/sign/[token]/complete/claim-account.tsx:119
@@ -1976,7 +1976,7 @@ msgstr ""
msgid "Need to sign documents?"
msgstr ""
-#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:74
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:76
msgid "Never"
msgstr ""
@@ -2112,12 +2112,12 @@ msgstr ""
msgid "Otherwise, the document will be created as a draft."
msgstr ""
-#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:96
+#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:87
#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:76
msgid "Owner"
msgstr ""
-#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:77
+#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:79
msgid "Paid"
msgstr ""
@@ -2304,12 +2304,12 @@ msgstr ""
msgid "Preview and configure template."
msgstr ""
-#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:133
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:106
#: apps/web/src/components/formatter/template-type.tsx:22
msgid "Private"
msgstr ""
-#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:143
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:116
msgid "Private templates can only be modified and viewed by you."
msgstr ""
@@ -2333,7 +2333,7 @@ msgstr ""
msgid "Profile updated"
msgstr ""
-#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:106
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:79
#: apps/web/src/components/formatter/template-type.tsx:27
msgid "Public"
msgstr ""
@@ -2354,7 +2354,7 @@ msgstr ""
msgid "Public profile username"
msgstr ""
-#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:110
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:83
msgid "Public templates are connected to your public profile. Any modifications to public templates will also appear in your public profile."
msgstr ""
@@ -2375,12 +2375,12 @@ msgstr ""
msgid "Recent activity"
msgstr ""
-#: apps/web/src/app/(dashboard)/documents/data-table.tsx:87
+#: apps/web/src/app/(dashboard)/documents/data-table.tsx:73
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:280
msgid "Recipient"
msgstr ""
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:71
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:118
msgid "Recipient updated"
msgstr ""
@@ -2422,8 +2422,8 @@ msgstr ""
#: 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:166
-#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:167
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:168
+#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:169
#: apps/web/src/components/forms/avatar-image.tsx:169
msgid "Remove"
msgstr ""
@@ -2432,7 +2432,7 @@ msgstr ""
msgid "Remove team email"
msgstr ""
-#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:164
+#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:166
msgid "Remove team member"
msgstr ""
@@ -2450,7 +2450,7 @@ msgid "Reseal document"
msgstr ""
#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:118
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:154
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:156
msgid "Resend"
msgstr ""
@@ -2524,14 +2524,14 @@ msgstr ""
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:283
#: 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:82
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:123
-#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:105
+#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:84
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:125
+#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:107
msgid "Role"
msgstr ""
#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:131
-#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:108
+#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:76
msgid "Roles"
msgstr ""
@@ -2548,11 +2548,11 @@ msgstr ""
msgid "Search"
msgstr ""
-#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:63
+#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:141
msgid "Search by document title"
msgstr ""
-#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:86
+#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:144
msgid "Search by name or email"
msgstr ""
@@ -2612,7 +2612,7 @@ msgstr ""
msgid "Send reminder"
msgstr ""
-#: apps/web/src/app/(dashboard)/documents/data-table.tsx:83
+#: apps/web/src/app/(dashboard)/documents/data-table.tsx:69
msgid "Sender"
msgstr ""
@@ -2736,7 +2736,7 @@ msgstr ""
msgid "Sign Up with OIDC"
msgstr ""
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:170
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:88
#: apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx:338
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:197
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:227
@@ -2812,8 +2812,8 @@ msgstr ""
#: 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:67
-#: 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:70
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:87
#: apps/web/src/components/(teams)/team-billing-portal-button.tsx:29
msgid "Something went wrong"
msgstr ""
@@ -2855,10 +2855,10 @@ msgstr ""
msgid "Stats"
msgstr ""
-#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:91
+#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:82
#: apps/web/src/app/(dashboard)/admin/subscriptions/page.tsx:32
-#: apps/web/src/app/(dashboard)/documents/data-table.tsx:97
-#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:71
+#: apps/web/src/app/(dashboard)/documents/data-table.tsx:83
+#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:73
msgid "Status"
msgstr ""
@@ -2866,7 +2866,7 @@ msgstr ""
msgid "Subscribe"
msgstr ""
-#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:113
+#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:81
msgid "Subscription"
msgstr ""
@@ -2898,8 +2898,8 @@ msgstr ""
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:92
#: apps/web/src/components/(teams)/forms/update-team-form.tsx:68
#: 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:61
-#: 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:64
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:81
#: apps/web/src/components/forms/public-profile-form.tsx:80
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:135
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:172
@@ -2914,8 +2914,8 @@ msgstr ""
msgid "System Theme"
msgstr ""
-#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:65
-#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table.tsx:76
+#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:67
+#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table.tsx:66
msgid "Team"
msgstr ""
@@ -2957,8 +2957,8 @@ msgstr ""
msgid "Team invitations have been sent."
msgstr ""
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:109
-#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:86
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:111
+#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:88
msgid "Team Member"
msgstr ""
@@ -2967,11 +2967,11 @@ msgstr ""
msgid "Team Name"
msgstr ""
-#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:133
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:106
msgid "Team Only"
msgstr ""
-#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:138
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:111
msgid "Team only templates are not linked anywhere and are visible only to your team."
msgstr ""
@@ -3133,7 +3133,7 @@ msgstr ""
msgid "The public name for your template"
msgstr ""
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:72
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:119
msgid "The recipient has been updated successfully"
msgstr ""
@@ -3307,7 +3307,7 @@ msgstr ""
msgid "This username is already taken"
msgstr ""
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:77
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:79
msgid "Time"
msgstr ""
@@ -3315,9 +3315,9 @@ msgstr ""
msgid "Time zone"
msgstr ""
-#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:77
-#: apps/web/src/app/(dashboard)/documents/data-table.tsx:78
-#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:89
+#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:68
+#: apps/web/src/app/(dashboard)/documents/data-table.tsx:64
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:62
msgid "Title"
msgstr ""
@@ -3450,8 +3450,8 @@ msgstr ""
msgid "Two-factor authentication has been disabled for your account. You will no longer be required to enter a code from your authenticator app when signing in."
msgstr ""
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:155
-#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:95
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:73
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:68
msgid "Type"
msgstr ""
@@ -3483,7 +3483,7 @@ msgstr ""
msgid "Unable to decline this team invitation at this time."
msgstr ""
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:85
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:88
msgid "Unable to delete invitation. Please try again."
msgstr ""
@@ -3516,7 +3516,7 @@ msgstr ""
msgid "Unable to remove team email at this time. Please try again."
msgstr ""
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:68
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:71
msgid "Unable to resend invitation. Please try again."
msgstr ""
@@ -3551,7 +3551,7 @@ msgstr ""
msgid "Unknown error"
msgstr ""
-#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:77
+#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:79
msgid "Unpaid"
msgstr ""
@@ -3580,11 +3580,11 @@ msgstr ""
msgid "Update profile"
msgstr ""
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:133
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:180
msgid "Update Recipient"
msgstr ""
-#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:146
+#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:148
msgid "Update role"
msgstr ""
@@ -3651,7 +3651,7 @@ msgstr ""
msgid "Use Template"
msgstr ""
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:82
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:84
msgid "User"
msgstr ""
@@ -3671,7 +3671,7 @@ msgstr ""
msgid "Users"
msgstr ""
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:165
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:83
msgid "Value"
msgstr ""
@@ -3703,7 +3703,7 @@ msgstr ""
#: 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:130
-#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:98
+#: 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
msgid "View"
msgstr ""
@@ -4161,7 +4161,7 @@ msgstr ""
msgid "You have reached your document limit."
msgstr ""
-#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:71
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:182
msgid "You have reached your document limit. <0>Upgrade your account to continue!0>"
msgstr ""
diff --git a/packages/lib/translations/en/common.po b/packages/lib/translations/en/common.po
index ce0b7582e..2689d692b 100644
--- a/packages/lib/translations/en/common.po
+++ b/packages/lib/translations/en/common.po
@@ -170,7 +170,7 @@ msgstr "Checkbox"
msgid "Checkbox values"
msgstr "Checkbox values"
-#: packages/ui/primitives/data-table.tsx:154
+#: packages/ui/primitives/data-table.tsx:156
msgid "Clear filters"
msgstr "Clear filters"
@@ -393,7 +393,7 @@ msgstr "No recipients with this role"
msgid "No restrictions"
msgstr "No restrictions"
-#: packages/ui/primitives/data-table.tsx:146
+#: packages/ui/primitives/data-table.tsx:148
msgid "No results found"
msgstr "No results found"
@@ -567,7 +567,7 @@ msgstr "Some signers have not been assigned a signature field. Please assign at
msgid "Something went wrong"
msgstr "Something went wrong"
-#: packages/ui/primitives/data-table.tsx:134
+#: packages/ui/primitives/data-table.tsx:136
msgid "Something went wrong."
msgstr "Something went wrong."
diff --git a/packages/lib/translations/en/web.po b/packages/lib/translations/en/web.po
index 2b9fe7461..eb2170750 100644
--- a/packages/lib/translations/en/web.po
+++ b/packages/lib/translations/en/web.po
@@ -46,7 +46,7 @@ msgstr "{0, plural, one {# character over the limit} other {# characters over th
msgid "{0, plural, one {# recipient} other {# recipients}}"
msgstr "{0, plural, one {# recipient} other {# recipients}}"
-#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:64
+#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:66
msgid "{0, plural, one {# Seat} other {# Seats}}"
msgstr "{0, plural, one {# Seat} other {# Seats}}"
@@ -185,19 +185,19 @@ msgid "Account deleted"
msgstr "Account deleted"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:105
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:104
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:106
#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:121
#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:164
-#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:118
+#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:120
msgid "Action"
msgstr "Action"
-#: apps/web/src/app/(dashboard)/documents/data-table.tsx:103
-#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:168
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:133
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:142
-#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:118
-#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:127
+#: apps/web/src/app/(dashboard)/documents/data-table.tsx:89
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:141
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:135
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:144
+#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:120
+#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:129
msgid "Actions"
msgstr "Actions"
@@ -338,7 +338,7 @@ msgstr "Allows authenticating using biometrics, password managers, hardware keys
msgid "Already have an account? <0>Sign in instead0>"
msgstr "Already have an account? <0>Sign in instead0>"
-#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:84
+#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:86
msgid "Amount"
msgstr "Amount"
@@ -627,7 +627,7 @@ msgstr "Basic details"
msgid "Billing"
msgstr "Billing"
-#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:99
+#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:101
msgid "Browser"
msgstr "Browser"
@@ -948,11 +948,11 @@ msgstr "Create your account and start using state-of-the-art document signing."
msgid "Create your account and start using state-of-the-art document signing. Open and beautiful signing is within your grasp."
msgstr "Create your account and start using state-of-the-art document signing. Open and beautiful signing is within your grasp."
-#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:72
+#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:63
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:48
-#: apps/web/src/app/(dashboard)/documents/data-table.tsx:68
-#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:63
-#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:84
+#: apps/web/src/app/(dashboard)/documents/data-table.tsx:54
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:65
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:57
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:276
msgid "Created"
msgstr "Created"
@@ -966,7 +966,7 @@ msgid "Created by"
msgstr "Created by"
#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:49
-#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table.tsx:90
+#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table.tsx:80
msgid "Created on"
msgstr "Created on"
@@ -993,7 +993,7 @@ msgstr "Daily"
msgid "Dark Mode"
msgstr "Dark Mode"
-#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:70
+#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:72
#: apps/web/src/app/(signing)/sign/[token]/date-field.tsx:148
msgid "Date"
msgstr "Date"
@@ -1091,11 +1091,11 @@ msgstr "Deleting account..."
#~ msgid "Deleting document"
#~ msgstr "Deleting document"
-#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:75
+#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:77
msgid "Device"
msgstr "Device"
-#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:119
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:92
#: apps/web/src/app/(dashboard)/templates/template-direct-link-badge.tsx:46
msgid "direct link"
msgstr "direct link"
@@ -1120,7 +1120,7 @@ msgstr "Direct link signing has been disabled"
msgid "Direct link signing has been enabled"
msgstr "Direct link signing has been enabled"
-#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:123
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:96
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."
@@ -1222,7 +1222,7 @@ msgstr "Document ID"
msgid "Document inbox"
msgstr "Document inbox"
-#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:68
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:179
msgid "Document Limit Exceeded!"
msgstr "Document Limit Exceeded!"
@@ -1287,7 +1287,7 @@ 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:124
+#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:92
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:113
#: apps/web/src/app/(dashboard)/documents/[id]/edit/document-edit-page-view.tsx:82
#: apps/web/src/app/(dashboard)/documents/[id]/loading.tsx:16
@@ -1319,7 +1319,7 @@ msgstr "Don't have an account? <0>Sign up0>"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:120
#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:141
#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:160
-#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:108
+#: 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
msgid "Download"
@@ -1375,9 +1375,9 @@ msgstr "Edit"
msgid "Edit webhook"
msgstr "Edit webhook"
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:119
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:166
#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:114
-#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:103
+#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:71
#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:213
#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:220
#: apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx:118
@@ -1527,7 +1527,7 @@ msgstr "Expires on <0/>"
msgid "Failed to reseal document"
msgstr "Failed to reseal document"
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:78
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:125
msgid "Failed to update recipient"
msgstr "Failed to update recipient"
@@ -1536,7 +1536,7 @@ msgstr "Failed to update recipient"
msgid "Failed to update webhook"
msgstr "Failed to update webhook"
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:143
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:190
msgid "Fields"
msgstr "Fields"
@@ -1655,7 +1655,7 @@ msgstr "Inbox documents"
msgid "Information"
msgstr "Information"
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:160
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:78
msgid "Inserted"
msgstr "Inserted"
@@ -1689,11 +1689,11 @@ msgstr "Invitation accepted!"
msgid "Invitation declined"
msgstr "Invitation declined"
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:79
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:82
msgid "Invitation has been deleted"
msgstr "Invitation has been deleted"
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:62
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:65
msgid "Invitation has been resent"
msgstr "Invitation has been resent"
@@ -1713,11 +1713,11 @@ msgstr "Invite Members"
msgid "Invite team members"
msgstr "Invite team members"
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:128
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:130
msgid "Invited At"
msgstr "Invited At"
-#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:53
+#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:55
msgid "Invoice"
msgstr "Invoice"
@@ -1761,12 +1761,12 @@ msgstr "Last updated"
msgid "Last updated at"
msgstr "Last updated at"
-#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:69
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:71
msgid "Last used"
msgstr "Last used"
#: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:111
-#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:117
+#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:119
msgid "Leave"
msgstr "Leave"
@@ -1820,7 +1820,7 @@ msgstr "Loading..."
msgid "Login"
msgstr "Login"
-#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:101
+#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:103
msgid "Manage"
msgstr "Manage"
@@ -1900,8 +1900,8 @@ msgstr "MAU (created document)"
msgid "MAU (had document completed)"
msgstr "MAU (had document completed)"
-#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:90
-#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:113
+#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:92
+#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:115
msgid "Member Since"
msgstr "Member Since"
@@ -1952,11 +1952,11 @@ msgstr "Moving..."
msgid "My templates"
msgstr "My templates"
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:101
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:148
#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:99
-#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:98
+#: 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)/settings/security/passkeys/user-passkeys-data-table.tsx:61
#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:235
#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:242
#: apps/web/src/app/(signing)/sign/[token]/complete/claim-account.tsx:119
@@ -1971,7 +1971,7 @@ msgstr "Name"
msgid "Need to sign documents?"
msgstr "Need to sign documents?"
-#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:74
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:76
msgid "Never"
msgstr "Never"
@@ -2107,12 +2107,12 @@ msgstr "Or continue with"
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:96
+#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:87
#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:76
msgid "Owner"
msgstr "Owner"
-#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:77
+#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:79
msgid "Paid"
msgstr "Paid"
@@ -2299,12 +2299,12 @@ msgstr "Preferences"
msgid "Preview and configure template."
msgstr "Preview and configure template."
-#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:133
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:106
#: apps/web/src/components/formatter/template-type.tsx:22
msgid "Private"
msgstr "Private"
-#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:143
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:116
msgid "Private templates can only be modified and viewed by you."
msgstr "Private templates can only be modified and viewed by you."
@@ -2328,7 +2328,7 @@ msgstr "Profile is currently <0>visible0>."
msgid "Profile updated"
msgstr "Profile updated"
-#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:106
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:79
#: apps/web/src/components/formatter/template-type.tsx:27
msgid "Public"
msgstr "Public"
@@ -2349,7 +2349,7 @@ msgstr "Public profile URL"
msgid "Public profile username"
msgstr "Public profile username"
-#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:110
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:83
msgid "Public templates are connected to your public profile. Any modifications to public templates will also appear in your public profile."
msgstr "Public templates are connected to your public profile. Any modifications to public templates will also appear in your public profile."
@@ -2370,12 +2370,12 @@ msgstr "Reauthentication is required to sign this field"
msgid "Recent activity"
msgstr "Recent activity"
-#: apps/web/src/app/(dashboard)/documents/data-table.tsx:87
+#: apps/web/src/app/(dashboard)/documents/data-table.tsx:73
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:280
msgid "Recipient"
msgstr "Recipient"
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:71
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:118
msgid "Recipient updated"
msgstr "Recipient updated"
@@ -2417,8 +2417,8 @@ msgstr "Remembered your password? <0>Sign In0>"
#: 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:166
-#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:167
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:168
+#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:169
#: apps/web/src/components/forms/avatar-image.tsx:169
msgid "Remove"
msgstr "Remove"
@@ -2427,7 +2427,7 @@ msgstr "Remove"
msgid "Remove team email"
msgstr "Remove team email"
-#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:164
+#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:166
msgid "Remove team member"
msgstr "Remove team member"
@@ -2445,7 +2445,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:154
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:156
msgid "Resend"
msgstr "Resend"
@@ -2519,14 +2519,14 @@ msgstr "Revoke access"
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:283
#: 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:82
-#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:123
-#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:105
+#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:84
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:125
+#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:107
msgid "Role"
msgstr "Role"
#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:131
-#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:108
+#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:76
msgid "Roles"
msgstr "Roles"
@@ -2543,11 +2543,11 @@ msgstr "Save"
msgid "Search"
msgstr "Search"
-#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:63
+#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:141
msgid "Search by document title"
msgstr "Search by document title"
-#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:86
+#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:144
msgid "Search by name or email"
msgstr "Search by name or email"
@@ -2607,7 +2607,7 @@ msgstr "Send document"
msgid "Send reminder"
msgstr "Send reminder"
-#: apps/web/src/app/(dashboard)/documents/data-table.tsx:83
+#: apps/web/src/app/(dashboard)/documents/data-table.tsx:69
msgid "Sender"
msgstr "Sender"
@@ -2731,7 +2731,7 @@ msgstr "Sign Up with Google"
msgid "Sign Up with OIDC"
msgstr "Sign Up with OIDC"
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:170
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:88
#: apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx:338
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:197
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:227
@@ -2807,8 +2807,8 @@ msgstr "Site Settings"
#: 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:67
-#: 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:70
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:87
#: apps/web/src/components/(teams)/team-billing-portal-button.tsx:29
msgid "Something went wrong"
msgstr "Something went wrong"
@@ -2850,10 +2850,10 @@ msgstr "Sorry, we were unable to download the certificate. Please try again late
msgid "Stats"
msgstr "Stats"
-#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:91
+#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:82
#: apps/web/src/app/(dashboard)/admin/subscriptions/page.tsx:32
-#: apps/web/src/app/(dashboard)/documents/data-table.tsx:97
-#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:71
+#: apps/web/src/app/(dashboard)/documents/data-table.tsx:83
+#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:73
msgid "Status"
msgstr "Status"
@@ -2861,7 +2861,7 @@ msgstr "Status"
msgid "Subscribe"
msgstr "Subscribe"
-#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:113
+#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:81
msgid "Subscription"
msgstr "Subscription"
@@ -2893,8 +2893,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:68
#: 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:61
-#: 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:64
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:81
#: apps/web/src/components/forms/public-profile-form.tsx:80
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:135
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:172
@@ -2909,8 +2909,8 @@ msgstr "Successfully created passkey"
msgid "System Theme"
msgstr "System Theme"
-#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:65
-#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table.tsx:76
+#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:67
+#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table.tsx:66
msgid "Team"
msgstr "Team"
@@ -2952,8 +2952,8 @@ 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:109
-#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:86
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:111
+#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:88
msgid "Team Member"
msgstr "Team Member"
@@ -2962,11 +2962,11 @@ msgstr "Team Member"
msgid "Team Name"
msgstr "Team Name"
-#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:133
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:106
msgid "Team Only"
msgstr "Team Only"
-#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:138
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:111
msgid "Team only templates are not linked anywhere and are visible only to your team."
msgstr "Team only templates are not linked anywhere and are visible only to your team."
@@ -3128,7 +3128,7 @@ msgstr "The public description that will be displayed with this template"
msgid "The public name for your template"
msgstr "The public name for your template"
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:72
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:119
msgid "The recipient has been updated successfully"
msgstr "The recipient has been updated successfully"
@@ -3302,7 +3302,7 @@ msgstr "This username has already been taken"
msgid "This username is already taken"
msgstr "This username is already taken"
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:77
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:79
msgid "Time"
msgstr "Time"
@@ -3310,9 +3310,9 @@ msgstr "Time"
msgid "Time zone"
msgstr "Time zone"
-#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:77
-#: apps/web/src/app/(dashboard)/documents/data-table.tsx:78
-#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:89
+#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:68
+#: apps/web/src/app/(dashboard)/documents/data-table.tsx:64
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:62
msgid "Title"
msgstr "Title"
@@ -3445,8 +3445,8 @@ msgstr "Two-factor authentication enabled"
msgid "Two-factor authentication has been disabled for your account. You will no longer be required to enter a code from your authenticator app when signing in."
msgstr "Two-factor authentication has been disabled for your account. You will no longer be required to enter a code from your authenticator app when signing in."
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:155
-#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:95
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:73
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:68
msgid "Type"
msgstr "Type"
@@ -3478,7 +3478,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:85
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:88
msgid "Unable to delete invitation. Please try again."
msgstr "Unable to delete invitation. Please try again."
@@ -3511,7 +3511,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:68
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:71
msgid "Unable to resend invitation. Please try again."
msgstr "Unable to resend invitation. Please try again."
@@ -3546,7 +3546,7 @@ msgstr "Uncompleted"
msgid "Unknown error"
msgstr "Unknown error"
-#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:77
+#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:79
msgid "Unpaid"
msgstr "Unpaid"
@@ -3575,11 +3575,11 @@ msgstr "Update password"
msgid "Update profile"
msgstr "Update profile"
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:133
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:180
msgid "Update Recipient"
msgstr "Update Recipient"
-#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:146
+#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:148
msgid "Update role"
msgstr "Update role"
@@ -3646,7 +3646,7 @@ msgstr "Use Backup Code"
msgid "Use Template"
msgstr "Use Template"
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:82
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:84
msgid "User"
msgstr "User"
@@ -3666,7 +3666,7 @@ msgstr "User settings"
msgid "Users"
msgstr "Users"
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:165
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:83
msgid "Value"
msgstr "Value"
@@ -3698,7 +3698,7 @@ msgstr "Verify your email to upload documents."
#: 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:130
-#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:98
+#: 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
msgid "View"
msgstr "View"
@@ -4156,7 +4156,7 @@ msgstr "You have reached the maximum limit of {0} direct templates. <0>Upgrade y
msgid "You have reached your document limit."
msgstr "You have reached your document limit."
-#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:71
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:182
msgid "You have reached your document limit. <0>Upgrade your account to continue!0>"
msgstr "You have reached your document limit. <0>Upgrade your account to continue!0>"
diff --git a/packages/ui/primitives/data-table.tsx b/packages/ui/primitives/data-table.tsx
index 8836ecd48..242197319 100644
--- a/packages/ui/primitives/data-table.tsx
+++ b/packages/ui/primitives/data-table.tsx
@@ -17,6 +17,8 @@ import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '.
export type DataTableChildren = (_table: TTable) => React.ReactNode;
+export type { ColumnDef as DataTableColumnDef } from '@tanstack/react-table';
+
export interface DataTableProps {
columns: ColumnDef[];
columnVisibility?: VisibilityState;