import { Trash2 } from 'lucide-react'; import { ComponentProps, PropsWithChildren, ReactNode } from 'react'; import { AutomationTestingProps } from '@/types'; import { confirmDelete } from '@@/modals/confirm'; import { Button } from './Button'; type ConfirmOrClick = | { confirmMessage: ReactNode; onConfirmed(): Promise | void; onClick?: never; } | { confirmMessage?: never; onConfirmed?: never; /** if onClick is set, will skip confirmation (confirmation should be done on the parent) */ onClick(): void; }; export function DeleteButton({ disabled, size, children, 'data-cy': dataCy, ...props }: PropsWithChildren< AutomationTestingProps & ConfirmOrClick & { size?: ComponentProps['size']; disabled?: boolean; } >) { return ( ); async function handleClick() { const { confirmMessage, onConfirmed, onClick } = props; if (onClick) { return onClick(); } if (!(await confirmDelete(confirmMessage))) { return undefined; } return onConfirmed(); } }