import { motion, useReducedMotion } from 'framer-motion'; import { ReactNode, useEffect, useState } from 'react'; interface MockupStackProps { children: ReactNode; index?: number; } export default function MockupStack({ children, index = 0 }: MockupStackProps) { const shouldReduceMotion = useReducedMotion(); const [isMounted, setIsMounted] = useState(false); const [isMobile, setIsMobile] = useState(true); // Default to mobile (no animations) useEffect(() => { setIsMounted(true); const checkMobile = () => setIsMobile(window.innerWidth < 768); checkMobile(); window.addEventListener('resize', checkMobile); return () => window.removeEventListener('resize', checkMobile); }, []); const seed = index * 1337; const rotation1 = ((seed * 17) % 80 - 40) / 20; const rotation2 = ((seed * 23) % 80 - 40) / 20; // On mobile or before mount, render without animations if (!isMounted || isMobile) { return (
{children}
); } // Desktop: render with animations return (
{children}
); }