'use client'; import React, { useEffect, useRef, useState } from 'react'; type Props = { children: React.ReactNode; className?: string; id?: string; delay?: number; style?: React.CSSProperties; }; export function MotionSection({ children, className = '', id, delay = 0, style }: Props) { const ref = useRef(null); const [visible, setVisible] = useState(false); useEffect(() => { const el = ref.current; if (!el) return; const reduce = window.matchMedia('(prefers-reduced-motion: reduce)').matches; if (reduce) { setVisible(true); return; } const obs = new IntersectionObserver( (entries) => { for (const e of entries) { if (e.isIntersecting) { setVisible(true); obs.disconnect(); break; } } }, { threshold: 0, rootMargin: '0px 0px -10% 0px' } ); obs.observe(el); return () => obs.disconnect(); }, []); return (
{children}
); }