// hero.jsx — Y2K hero with massive type + chrome orb const { useRef: __hr, useEffect: __he, useState: __hs } = React; function Hero({ t, variant = 'orb' }) { if (variant === 'split') return ; if (variant === 'stack') return ; return ; } /* ════════════════════════════════════════════════════════ HERO ORB — staggered display type with big chrome orb ════════════════════════════════════════════════════════ */ function HeroOrb({ t }) { const mouse = useMouse(); const scrollY = useScrollY(); const [wordIdx, setWordIdx] = __hs(0); __he(() => { const i = setInterval(() => setWordIdx(v => (v + 1) % t.h1_words.length), 1800); return () => clearInterval(i); }, [t]); return ( {/* Top meta strip */} {t.h1_loc} EST · MMXXII {t.h1_year} {/* Floating chrome orb — positioned absolutely within text layout */} {/* Y2K Badge giratorio */} {/* Stars sprinkled */} {/* DISPLAY TYPE — staggered stair */} {t.h1_top} {t.h1_middle_1} {t.h1_middle_2} {t.h1_middle_3} {/* Bottom row */} {t.h1_sub} {t.cta_explore} ↗ {t.cta_brief} {/* Word rotator */} Hacemos — {t.h1_words.map((w, i) => ( {w}. ))} {/* Bottom marquee */} {Array(2).fill(0).map((_, k) => ( {t.marquee_words.map((w, i) => ( {w} ))} ))} ); } /* ════════════════════════════════════════════════════════ HERO SPLIT — type left, big orb right (variant) ════════════════════════════════════════════════════════ */ function HeroSplit({ t }) { const mouse = useMouse(); const scrollY = useScrollY(); return ( {t.svc_eye} {t.h1_top} {t.h1_middle_1} {t.h1_middle_2} {t.h1_middle_3} {t.h1_sub} {t.cta_explore} ↗ {t.cta_brief} ); } /* ════════════════════════════════════════════════════════ HERO STACK — stacked centered with orb backdrop ════════════════════════════════════════════════════════ */ function HeroStack({ t }) { const mouse = useMouse(); const scrollY = useScrollY(); return ( {/* Centered orb backdrop */} {t.svc_eye} {t.h1_top} {t.h1_middle_2} {t.h1_middle_3} {t.h1_sub} {t.cta_explore} ↗ {t.cta_brief} ); } Object.assign(window, { Hero, HeroOrb, HeroSplit, HeroStack });
{t.h1_sub}