import { motion, useReducedMotion } from 'framer-motion'; import { Building2 } from 'lucide-react'; import { useEffect, useState } from 'react'; import { Box } from './Box'; import { Heading } from './Heading'; import { Icon } from './Icon'; import { Text } from './Text'; export function SponsorHero({ title, subtitle, children }: SponsorHeroProps) { const shouldReduceMotion = useReducedMotion(); const [isMounted, setIsMounted] = useState(false); useEffect(() => { setIsMounted(true); }, []); const containerVariants = { hidden: { opacity: 0 }, visible: { opacity: 1, transition: { staggerChildren: 0.1, delayChildren: 0.1, }, }, }; const itemVariants = { hidden: { opacity: 0, y: 20 }, visible: { opacity: 1, y: 0, transition: { duration: 0.4, ease: 'easeOut' as const }, }, }; const gridStyle = { backgroundImage: ` linear-gradient(to right, #198CFF 1px, transparent 1px), linear-gradient(to bottom, #198CFF 1px, transparent 1px) `, backgroundSize: '40px 40px', }; if (!isMounted || shouldReduceMotion) { return ( {/* Background Pattern */} {/* Grid Pattern */} Sponsor Portal {title} {subtitle} {children} ); } return ( {/* Background Pattern */} {/* Animated Grid Pattern */} Sponsor Portal {title} {subtitle} {children} ); }