import React, { useEffect, useRef } from "react"; import { Trash } from "@phosphor-icons/react"; import { Modal } from "./ui.jsx"; export function ConfirmationDialog({ request, busy, error, onClose, onAccept, }) { const cancelButton = useRef(null); const lastSummary = useRef(null); useEffect(() => { if (request) { const { title, description, detail, label } = request; lastSummary.current = { title, description, detail, label }; } }, [request]); // Radix keeps the closing dialog mounted for its exit animation. const summary = request || lastSummary.current; return ( { if (!open) onClose(); }} title={summary?.title || "Confirm deletion"} description={summary?.description} onOpenAutoFocus={(event) => { event.preventDefault(); cancelButton.current?.focus(); }} >

{summary?.detail || "This action cannot be undone."}

{error && (

{error}

)}
); }