import { motion, useReducedMotion } from 'framer-motion'; import { ReactNode, useEffect, useState } from 'react'; import { Box } from '@/ui/Box'; import { Surface } from '@/ui/Surface'; interface MockupStackProps { children: ReactNode; index?: number; } export 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} ); }