"use client"; import { useEffect, useRef, useState } from "react"; import { cn } from "@/lib/utils"; export function Reveal({ children, className, delay = 0, y = 16, }: { children: React.ReactNode; className?: string; delay?: number; y?: number; }) { const ref = useRef(null); const [visible, setVisible] = useState(false); useEffect(() => { const el = ref.current; if (!el) return; const io = new IntersectionObserver( ([e]) => { if (e.isIntersecting) { setVisible(true); io.unobserve(e.target); } }, { threshold: 0.15 } ); io.observe(el); return () => io.disconnect(); }, []); return (
{children}
); } export function Stagger({ children, stagger = 80 }: { children: React.ReactNode; stagger?: number }) { return ( <> {Array.isArray(children) ? (children as React.ReactNode[]).map((c, i) => ( {c} )) : children} ); }