/* atoms.jsx — small reusable atoms */ const { useState: useStateA, useEffect: useEffectA, useRef: useRefA } = React; const Logo = ({ size = 26 }) => ( laburo ); const Arrow = ({ size = 14 }) => ( ); const ArrowDown = ({ size = 14 }) => ( ); const Eyebrow = ({ children }) => {children}; const SectionHead = ({ num, eyebrow, title, sub }) => (
{num}
{eyebrow && {eyebrow}}

{title}

{sub &&

{sub}

}
); /* ============================================================ LaburoMatrix — 3×3 logo-pattern grid, animated. Refined: smaller, with laburo wordmark above. ============================================================ */ function LaburoMatrix() { // Base pattern (1 = lime, 0 = dark) following the laburo mark const base = [ [0, 1, 1], [0, 1, 1], [0, 0, 0], ]; const labels = [ { t: 'Estrategia', s: 'Business → marketing' }, { t: 'Datos', s: 'Reporting centralizado' }, { t: 'Medios', s: 'Multi-plataforma' }, { t: 'Analytics', s: 'Reporting en vivo' }, { t: 'Creatividad',s: 'Producción nativa' }, { t: 'Performance',s: 'Optimización continua' }, { t: 'CRM', s: 'Pipeline conectado' }, { t: 'AI', s: 'Agentes + automation' }, { t: 'Crédito', s: 'Pauta sin fricciones' }, ]; const [active, setActive] = useStateA(null); const [pulse, setPulse] = useStateA(null); useEffectA(() => { let alive = true; const tick = () => { if (!alive) return; const idx = Math.floor(Math.random() * 9); setPulse(idx); setTimeout(() => alive && setPulse(null), 700); }; const id = setInterval(tick, 1600); tick(); return () => { alive = false; clearInterval(id); }; }, []); return (
laburo
/ sistema operativo
09 módulos activos
{Array.from({ length: 9 }, (_, i) => { const r = Math.floor(i / 3); const c = i % 3; const isLime = base[r][c] === 1; const isPulse = pulse === i; const isActive = active === i; return ( ); })}
MOD · {active !== null ? String(active + 1).padStart(2, '0') : '—'} {active !== null ? labels[active].t : 'pasá el mouse'}
); } /* Legacy export name kept for the Hero import */ function ConnectionTriad() { return ; } /* ============================================================ Mini connection — small inline motif for use elsewhere ============================================================ */ function MiniTriad() { return ( ); } /* ============================================================ Platform "logo chips" — stylized monogram marks for the stack ============================================================ */ function PlatformMark({ name, color = 'var(--lime)' }) { const colorMap = { Meta: '#1877F2', Google: '#4285F4', TikTok: '#25F4EE', MELI: '#FFE600', Pinterest: '#E60023', GA4: '#E37400', Looker: '#4285F4', DV360: '#F9AB00', Claude: '#D97757', Detrics: '#C4FB2B', WhatsApp: '#25D366', Pixel: '#1877F2', }; const bg = colorMap[name] || color; const letter = name[0]; // contrast pick const dark = ['#FFE600', '#25F4EE', '#C4FB2B', '#F9AB00'].includes(bg); return ( {letter} {name} ); } Object.assign(window, { Logo, Arrow, ArrowDown, Eyebrow, SectionHead, ConnectionTriad, LaburoMatrix, MiniTriad, PlatformMark, });