import { AlertTriangle } from "lucide-react"; import { useEffect, useId, useState } from "react"; interface DeleteDeckDialogProps { deckName: string; isOpen: boolean; onClose: () => void; onConfirm: () => void; isDeleting?: boolean; } export function DeleteDeckDialog({ deckName, isOpen, onClose, onConfirm, isDeleting = false, }: DeleteDeckDialogProps) { const [confirmText, setConfirmText] = useState(""); const titleId = useId(); const inputId = useId(); const isMatch = confirmText === deckName; useEffect(() => { if (!isOpen) { setConfirmText(""); } }, [isOpen]); useEffect(() => { const handleKeyDown = (e: KeyboardEvent) => { if (e.key === "Escape" && !isDeleting) { onClose(); } }; if (isOpen) { document.addEventListener("keydown", handleKeyDown); return () => document.removeEventListener("keydown", handleKeyDown); } }, [isOpen, isDeleting, onClose]); if (!isOpen) return null; const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); if (isMatch && !isDeleting) { onConfirm(); } }; return ( <> {/* Backdrop */}
{/* Dialog */}