'use client'; import React from 'react'; import { useIntersectionObserver } from '@/hooks/useIntersectionObserver'; interface ScrollRevealProps { children: React.ReactNode; delay?: number; duration?: number; direction?: 'up' | 'down' | 'left' | 'right'; distance?: number; className?: string; } export default function ScrollReveal({ children, delay = 0, duration = 600, direction = 'up', distance = 24, className = '', }: ScrollRevealProps) { const { elementRef, isVisible } = useIntersectionObserver({ threshold: 0.1, rootMargin: '0px 0px -100px 0px', triggerOnce: true, }); const getTransform = (visible: boolean) => { if (visible) return 'translate3d(0, 0, 0)'; switch (direction) { case 'up': return `translate3d(0, ${distance}px, 0)`; case 'down': return `translate3d(0, -${distance}px, 0)`; case 'left': return `translate3d(${distance}px, 0, 0)`; case 'right': return `translate3d(-${distance}px, 0, 0)`; default: return `translate3d(0, ${distance}px, 0)`; } }; const revealStyle = { opacity: isVisible ? 1 : 0, transform: getTransform(isVisible), transition: `opacity ${duration}ms ease-out ${delay}ms, transform ${duration}ms ease-out ${delay}ms`, willChange: 'opacity, transform', }; return (