-
+
+
-
{title}
+
{title}
{value}
- {subtitle &&
{subtitle}
}
+ {subtitle &&
{subtitle}
}
);
diff --git a/apps/remix/app/components/tables/organisation-teams-table.tsx b/apps/remix/app/components/tables/organisation-teams-table.tsx
index ff5085a93..73632814f 100644
--- a/apps/remix/app/components/tables/organisation-teams-table.tsx
+++ b/apps/remix/app/components/tables/organisation-teams-table.tsx
@@ -64,7 +64,7 @@ export const OrganisationTeamsTable = () => {
avatarClass="h-12 w-12"
avatarFallback={row.original.name.slice(0, 1).toUpperCase()}
primaryText={
-
{row.original.name}
+
{row.original.name}
}
secondaryText={`${NEXT_PUBLIC_WEBAPP_URL()}/t/${row.original.url}`}
/>
diff --git a/apps/remix/app/components/tables/templates-table-action-dropdown.tsx b/apps/remix/app/components/tables/templates-table-action-dropdown.tsx
index 4464f4caf..cef513e4a 100644
--- a/apps/remix/app/components/tables/templates-table-action-dropdown.tsx
+++ b/apps/remix/app/components/tables/templates-table-action-dropdown.tsx
@@ -1,10 +1,25 @@
import { useState } from 'react';
import { Trans } from '@lingui/react/macro';
-import type { Recipient, TemplateDirectLink } from '@prisma/client';
-import { Copy, Edit, FolderIcon, MoreHorizontal, Share2Icon, Trash2, Upload } from 'lucide-react';
+import {
+ DocumentStatus,
+ EnvelopeType,
+ type Recipient,
+ type TemplateDirectLink,
+} from '@prisma/client';
+import {
+ Copy,
+ Edit,
+ FolderIcon,
+ MoreHorizontal,
+ Pencil,
+ Share2Icon,
+ Trash2,
+ Upload,
+} from 'lucide-react';
import { Link } from 'react-router';
+import { trpc as trpcReact } from '@documenso/trpc/react';
import {
DropdownMenu,
DropdownMenuContent,
@@ -13,10 +28,11 @@ import {
DropdownMenuTrigger,
} from '@documenso/ui/primitives/dropdown-menu';
+import { EnvelopeDeleteDialog } from '../dialogs/envelope-delete-dialog';
+import { EnvelopeDuplicateDialog } from '../dialogs/envelope-duplicate-dialog';
+import { EnvelopeRenameDialog } from '../dialogs/envelope-rename-dialog';
import { TemplateBulkSendDialog } from '../dialogs/template-bulk-send-dialog';
-import { TemplateDeleteDialog } from '../dialogs/template-delete-dialog';
import { TemplateDirectLinkDialog } from '../dialogs/template-direct-link-dialog';
-import { TemplateDuplicateDialog } from '../dialogs/template-duplicate-dialog';
import { TemplateMoveToFolderDialog } from '../dialogs/template-move-to-folder-dialog';
export type TemplatesTableActionDropdownProps = {
@@ -41,8 +57,9 @@ export const TemplatesTableActionDropdown = ({
teamId,
onDelete,
}: TemplatesTableActionDropdownProps) => {
- const [isDeleteDialogOpen, setDeleteDialogOpen] = useState(false);
- const [isDuplicateDialogOpen, setDuplicateDialogOpen] = useState(false);
+ const trpcUtils = trpcReact.useUtils();
+
+ const [isRenameDialogOpen, setRenameDialogOpen] = useState(false);
const [isMoveToFolderDialogOpen, setMoveToFolderDialogOpen] = useState(false);
const isTeamTemplate = row.teamId === teamId;
@@ -66,10 +83,27 @@ export const TemplatesTableActionDropdown = ({
-
setDuplicateDialogOpen(true)}>
-
- Duplicate
-
+ {canMutate && (
+
setRenameDialogOpen(true)}>
+
+ Rename
+
+ )}
+
+ {canMutate && (
+
e.preventDefault()}>
+
+
+ Duplicate
+
+
+ }
+ />
+ )}
{canMutate && (
)}
- setDeleteDialogOpen(true)}>
-
- Delete
-
+ {canMutate && (
+ e.preventDefault()}>
+
+
+ Delete
+
+
+ }
+ />
+ )}
-
-
-
-
+
+ {
+ await trpcUtils.template.findTemplates.invalidate();
+ }}
+ />
);
};
diff --git a/apps/remix/app/routes/_authenticated+/admin+/organisation-insights.$id.tsx b/apps/remix/app/routes/_authenticated+/admin+/organisation-insights.$id.tsx
index e53cc04ff..7fb0b1f24 100644
--- a/apps/remix/app/routes/_authenticated+/admin+/organisation-insights.$id.tsx
+++ b/apps/remix/app/routes/_authenticated+/admin+/organisation-insights.$id.tsx
@@ -54,6 +54,7 @@ export default function OrganisationInsights({ loaderData }: Route.ComponentProp
+