import { useState } from 'react'; import { Trans } from '@lingui/react/macro'; import type { Recipient, Template, TemplateDirectLink } from '@prisma/client'; import { Copy, Edit, MoreHorizontal, MoveRight, Share2Icon, Trash2, Upload } from 'lucide-react'; import { Link } from 'react-router'; import { useSession } from '@documenso/lib/client-only/providers/session'; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuTrigger, } from '@documenso/ui/primitives/dropdown-menu'; 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 { TemplateMoveDialog } from '../dialogs/template-move-dialog'; export type TemplatesTableActionDropdownProps = { row: Template & { directLink?: Pick | null; recipients: Recipient[]; }; templateRootPath: string; teamId?: number; onDelete?: () => Promise | void; onMove?: ({ templateId, teamUrl, }: { templateId: number; teamUrl: string; }) => Promise | void; }; export const TemplatesTableActionDropdown = ({ row, templateRootPath, teamId, onDelete, onMove, }: TemplatesTableActionDropdownProps) => { const { user } = useSession(); const [isDeleteDialogOpen, setDeleteDialogOpen] = useState(false); const [isTemplateDirectLinkDialogOpen, setTemplateDirectLinkDialogOpen] = useState(false); const [isDuplicateDialogOpen, setDuplicateDialogOpen] = useState(false); const [isMoveDialogOpen, setMoveDialogOpen] = useState(false); const isOwner = row.userId === user.id; const isTeamTemplate = row.teamId === teamId; return ( Action Edit setDuplicateDialogOpen(true)} > Duplicate setTemplateDirectLinkDialogOpen(true)}> Direct link {!teamId && !row.teamId && ( setMoveDialogOpen(true)}> Move to Team )} Bulk Send via CSV } /> setDeleteDialogOpen(true)} > Delete ); };