"use client"; import type { Row } from "@tanstack/react-table"; import { MoreHorizontal } from "lucide-react"; import { Button } from "@/components/ui/button"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import type * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu"; import { ComponentProps, PropsWithChildren, useMemo } from "react"; interface DataTableRowActionsProps extends ComponentProps { row: Row; getId: (row: Row) => Id; showDetail?: boolean; showEdit?: boolean; showDelete?: boolean; onDetail?: (id: Id) => void; onDelete?: (id: Id) => void; onEdit?: (id: Id) => void; } export function DataTableRowActions({ row, getId, showDetail, showDelete, showEdit, onDetail, onDelete, onEdit, children, ...rest }: PropsWithChildren>) { const id = useMemo(() => getId(row), [getId, row]); return ( {children} {showDetail && ( onDetail?.(id)}> Detail )} {showEdit && ( onEdit?.(id)}>Edit )} {(showDetail || showEdit) && showDelete && } {showDelete && ( onDelete?.(id)}> Delete ⌘⌫ )} ); }