"use client"; import { useState, type ReactNode } from "react"; import { Dialog, DialogTitle, DialogBody, DialogFooter, } from "../composite/Dialog.tsx"; import { AsyncButton } from "../status/AsyncButton.tsx"; import { Button } from "../ui/Button.tsx"; export function ConfirmAction({ label, title, children, action, confirmLabel = "Confirm", onSuccess, className = "", }: { label: string; title: string; children: ReactNode; action: (signal: AbortSignal) => Promise; confirmLabel?: string; onSuccess?: () => void; className?: string; }) { const [open, setOpen] = useState(false); return ( {title} {children} { await action(signal); if (!signal.aborted) { setOpen(false); onSuccess?.(); } }} > {confirmLabel} ); }