"use client"; import { useState, useEffect, useRef } from "react"; import clsx from "clsx"; import { Button } from "./ui/Button"; interface DeleteButtonProps { onDelete: () => Promise; className?: string; size?: "sm" | "md" | "lg"; } const CONFIRM_TIMEOUT = 3000; export function DeleteButton({ onDelete, className, size = "sm" }: DeleteButtonProps) { const [confirming, setConfirming] = useState(false); const [deleting, setDeleting] = useState(false); const timeoutRef = useRef(null); useEffect(() => { return () => { if (timeoutRef.current) { clearTimeout(timeoutRef.current); } }; }, []); const handleClick = async () => { if (deleting) return; if (!confirming) { setConfirming(true); timeoutRef.current = setTimeout(() => { setConfirming(false); }, CONFIRM_TIMEOUT); return; } if (timeoutRef.current) { clearTimeout(timeoutRef.current); } setDeleting(true); try { await onDelete(); } catch { setDeleting(false); setConfirming(false); } }; return ( ); }