import { useCallback, useRef } from "react"; /** * Custom hook for debouncing function calls * @param callback - Function to debounce * @param delay - Delay in milliseconds * @returns Debounced function */ export function useDebounce any>( callback: T, delay: number, ): T { const timeoutRef = useRef(null); const debouncedCallback = useCallback( (...args: Parameters) => { if (timeoutRef.current) { clearTimeout(timeoutRef.current); } timeoutRef.current = setTimeout(() => { callback(...args); }, delay); }, [callback, delay], ) as T; return debouncedCallback; }