import { useEffect, RefObject } from 'react'; /** * Hook to detect clicks outside of a specified element * @param ref - Reference to the element to monitor * @param callback - Function to call when clicking outside * @param enabled - Whether the hook is active (default: true) */ export function useClickOutside( ref: RefObject, callback: () => void, enabled: boolean = true ): void { useEffect(() => { if (!enabled) return; const handleClickOutside = (event: MouseEvent) => { if (ref.current && !ref.current.contains(event.target as Node)) { callback(); } }; document.addEventListener('mousedown', handleClickOutside); return () => { document.removeEventListener('mousedown', handleClickOutside); }; }, [ref, callback, enabled]); } export default useClickOutside;