import { useEffect, useState } from "react"; // Returns `value` after it has stopped changing for `delay` ms. Lets a text input stay // responsive (it owns the immediate value) while the query it drives only re-runs once the // user pauses — so we don't refetch the feed on every keystroke. export function useDebounced(value: T, delay = 300): T { const [debounced, setDebounced] = useState(value); useEffect(() => { const id = window.setTimeout(() => setDebounced(value), delay); return () => window.clearTimeout(id); }, [value, delay]); return debounced; }