'use client'; import { useState, useEffect } from 'react'; /** * Hook to debounce a value * @param value - Value to debounce * @param delay - Delay in milliseconds * @returns Debounced value */ export function useDebounce(value: T, delay = 500): T { const [debouncedValue, setDebouncedValue] = useState(value); useEffect(() => { // Set up timeout to update debounced value const timer = setTimeout(() => { setDebouncedValue(value); }, delay); // Clean up timeout on value change or unmount return () => { clearTimeout(timer); }; }, [value, delay]); return debouncedValue; }