import { useEffect, useState } from 'react' /** * A hook that debounces a value by a specified delay * @param value The value to debounce * @param delay The delay in milliseconds * @returns The debounced value */ export function useDebounce(value: T, delay: number): T { const [debouncedValue, setDebouncedValue] = useState(value) useEffect(() => { const timer = setTimeout(() => { setDebouncedValue(value) }, delay) return () => { clearTimeout(timer) } }, [value, delay]) return debouncedValue }