// ============================================================ // HERO — 2-column layout with CHARACTER ROTATION (animation back) // All featured characters stacked in DOM; only one visible at a time. // Bulletproof — never blank, always alive. // ============================================================ const { useState, useEffect, useMemo, useRef } = React; function Hero() { // Gatito Te Amo first (corazón) — then the team rotates around it const featured = useMemo(() => { const ids = ["gatito-te-amo", "voxi", "automatitto", "miau", "codemiau", "datamiao", "disenita"]; return ids.map(id => CHARACTERS.find(c => c.id === id)).filter(Boolean); }, []); const [idx, setIdx] = useState(0); const [burstKey, setBurstKey] = useState(0); const timerRef = useRef(null); // Preload every character image useEffect(() => { CHARACTERS.forEach(c => { const i = new Image(); i.src = c.img; }); }, []); // Cycle: every 3.8s the focus jumps to the next character useEffect(() => { timerRef.current = setTimeout(() => { setIdx(i => (i + 1) % featured.length); setBurstKey(k => k + 1); }, 3800); return () => clearTimeout(timerRef.current); }, [idx, featured.length]); const current = featured[idx]; const prevIdx = (idx - 1 + featured.length) % featured.length; // Particle burst on transition const burstDots = useMemo(() => { const out = []; for (let i = 0; i < 14; i++) { const ang = (i / 14) * Math.PI * 2; const dist = 180 + Math.random() * 90; out.push({ bx: Math.cos(ang) * dist + "px", by: Math.sin(ang) * dist + "px", delay: (Math.random() * 0.15).toFixed(2) + "s", }); } return out; }, [burstKey]); return (
Sistemas Vivos · cohorte 2026

Vende con bots. Crece con cursos.

Implementamos sistemas con bots, IA y CRM para empresas que ya venden… pero están perdiendo tiempo, seguimiento y clientes.

Quiero un bot Ver cursos Aplicar al bootcamp
3Tipos de bot 5Cursos de IA 10Cupo bootcamp +20 añosResolviendo sistemas
{/* Stacked character slots — all in DOM, only one visible */}
{featured.map((c, i) => { let state = "hidden"; if (i === idx) state = "active"; else if (i === prevIdx) state = "leaving"; return (
{c.name}
); })}
{/* Particle burst on transition */}
{burstDots.map((d, i) => ( ))}
{current.name}
{current.role}
{current.transform}
{current.tool}
Sistema activo
WhatsApp · CRM · IA · VoIP
{featured.map((c, i) => ( ))}
); } window.Hero = Hero;