"use client"; import { useEffect, useRef, useState } from "react"; type Options = { threshold?: number; rootMargin?: string; once?: boolean; }; export function useInView({ threshold = 0.15, rootMargin = "0px 0px -40px 0px", once = true, }: Options = {}) { const ref = useRef(null); const [inView, setInView] = useState(false); useEffect(() => { const el = ref.current; if (!el) return; const observer = new IntersectionObserver( ([entry]) => { if (entry.isIntersecting) { setInView(true); if (once) observer.unobserve(el); } else if (!once) { setInView(false); } }, { threshold, rootMargin }, ); observer.observe(el); return () => observer.disconnect(); }, [threshold, rootMargin, once]); return { ref, inView }; }