/* global React, SectionHead, Placeholder, Logo, SkylineGlyph */
// ───────────── CONTACTO ─────────────
const Contacto = () => (
);
const ContactRow = ({ label, value, link }) => {
const inner = (
{label}
{value}{link ? ↗ : null}
);
return link ? (
{inner}
) : inner;
};
// ───────────── DASHBOARD (internal, no longer rendered publicly) ─────────────
const Dashboard = () => {
const weekData = [42, 38, 55, 48, 62, 78, 35]; // bookings per day
const max = Math.max(...weekData);
const days = ['L','M','M','J','V','S','D'];
const products = [
{ name: 'Pomada Mate', sold: 38, revenue: 566200 },
{ name: 'Aceite Barba', sold: 29, revenue: 362500 },
{ name: 'Perfume 01', sold: 18, revenue: 504000 },
{ name: 'Cera Sculpt', sold: 24, revenue: 324000 },
];
const services = [
{ name: 'Fade premium', count: 86, share: 32 },
{ name: 'Corte clásico', count: 64, share: 24 },
{ name: 'Pack Bread Way', count: 48, share: 18 },
{ name: 'Afeitado navaja', count: 42, share: 16 },
];
return (
— PANEL INTERNO · 09 —
Privado
Dashboard Gerencial
Vista mensual · Octubre 2026 · Solo personal autorizado
{/* KPI grid */}
{/* Weekly trend */}
{weekData.map((v, i) => (
))}
{/* Top products */}
{products.map((p, i) => (
{String(i + 1).padStart(2, '0')}
{p.name}
{p.sold} unidades
${(p.revenue/1000).toFixed(0)}k
))}
{/* Top services */}
{services.map((s, i) => (
{s.name}
{s.count} · {s.share}%
))}
{/* Cash flow recent */}
{[
{ type: 'Servicio', who: 'Tomás V.', amount: 16000, time: '13:42' },
{ type: 'Producto', who: 'Diego A.', amount: 14900, time: '14:15' },
{ type: 'Servicio', who: 'Javier M.', amount: 18000, time: '15:00' },
{ type: 'Producto', who: 'Luis P.', amount: 28000, time: '15:30' },
{ type: 'Servicio', who: 'Andrés T.', amount: 24000, time: '16:00' },
].map((r, i) => (
{r.type}
{r.who}
{r.time}
+${r.amount.toLocaleString('es-CL')}
))}
Total día
$100.900
Esta vista es interna y no es accesible al público.
);
};
const KPI = ({ label, value, delta }) => (
{label}
{value}
↑ {delta}
);
const Card = ({ title, caption, children }) => (
);
Object.assign(window, { Contacto, Dashboard });