// KLEO Device — mockup de teléfono compartido entre index.html y kleo.html.
// Misma pieza en los dos lugares: si se ajusta aquí, cambia en ambos.
(function () {
const { useState, useEffect } = React;
const NAVY = (window.BX && window.BX.navy) || '#0D1B2A';
const H = '"Poppins", system-ui, sans-serif';
const B = '"Inter", system-ui, sans-serif';
const IPhone = ({ children, bg = '#F5F3FA', w = 210 }) => (
);
const KleoDevice = () => {
const P = '#6B52A8', G = '#1F8A5B', A = '#E07B39';
const [tick, setTick] = useState(0);
const [tab, setTab] = useState(0);
const [, rerender] = useState(0);
useEffect(() => {
const t1 = setInterval(() => setTick(n => (n + 1) % 4), 3200);
const t2 = setInterval(() => setTab(n => (n + 1) % 3), 4800);
const h = () => rerender(n => n + 1);
window.addEventListener('langchange', h);
return () => { clearInterval(t1); clearInterval(t2); window.removeEventListener('langchange', h); };
}, []);
const mk = window.getMk ? window.getMk().kleo : null;
const resolveC = cl => cl === 'P' ? P : cl;
const tasks = mk ? mk.tasks.slice(0, 4).map(t => ({ ...t, c: resolveC(t.cl) })) : [];
const habits = mk ? mk.habits.map(([t, v, pct]) => ({ t, v, pct, c: P })) : [];
const tabs = mk ? mk.tabs.slice(0, 3) : ['Hoy', 'Hábitos', 'Pagos'];
const statsRow = mk ? mk.stats_row.map(([v, l, c]) => ([v, resolveC(c), l])) : [];
return (
KLEO
{mk ? mk.date : 'Hoy · Lunes'}
{tabs.map((t, i) => (
{t}
))}
{mk ? mk.pending : 'Pendientes'}
{tasks.map((task, i) => (
))}
{mk ? mk.habits_label : 'Hábitos'}
{habits.map(h => (
))}
{statsRow.map(([v, c, l]) => (
))}
);
};
window.KleoDevice = KleoDevice;
})();