"use client"; import { type ReactNode, useEffect, useRef, useState } from "react"; interface AnimateOnScrollProps { children: ReactNode; className?: string; } export function AnimateOnScroll({ children, className }: AnimateOnScrollProps) { const ref = useRef(null); const [isVisible, setIsVisible] = useState(false); useEffect(() => { const element = ref.current; if (!element) return; const observer = new IntersectionObserver( ([entry]) => { if (entry.isIntersecting) { setIsVisible(true); observer.unobserve(element); } }, { threshold: 0.1, rootMargin: "0px 0px -40px 0px" }, ); observer.observe(element); return () => observer.disconnect(); }, []); return (
{children}
); }