import { useState, useRef, useEffect, useCallback } from 'react'; /** * Two-click confirmation pattern: first click shows "Sure?", second executes. * Auto-resets after `timeoutMs` if the user doesn't confirm. * Cleans up the timer on unmount. */ export function useConfirmAction(action: () => void, timeoutMs = 4000) { const [confirming, setConfirming] = useState(false); const timerRef = useRef>(); useEffect(() => () => clearTimeout(timerRef.current), []); const handleClick = useCallback(() => { if (!confirming) { setConfirming(true); timerRef.current = setTimeout(() => setConfirming(false), timeoutMs); return; } clearTimeout(timerRef.current); action(); setConfirming(false); }, [confirming, action, timeoutMs]); return { confirming, handleClick }; }