// Shared components: icons, brand mark, formatters
const { useState, useEffect, useRef, useMemo } = React;
/* ---------- ICONS ---------- */
function Icon({ name, size = 18, stroke = 1.6, ...rest }) {
const s = size;
const common = { width: s, height: s, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: stroke, strokeLinecap: "round", strokeLinejoin: "round", ...rest };
switch (name) {
case "arrow-right": return (
);
case "arrow-up-right": return (
);
case "arrow-down": return (
);
case "check": return (
);
case "phone": return (
);
case "whatsapp": return (
);
case "map-pin": return (
);
case "clock": return (
);
case "mail": return (
);
case "shield": return (
);
case "shield-check": return (
);
case "zap": return (
);
case "spark": return (
);
case "wallet": return (
);
case "users": return (
);
case "calendar": return (
);
case "doc": return (
);
case "car": return (
);
case "key": return (
);
case "building": return (
);
case "star": return (
);
case "instagram": return (
);
case "facebook": return (
);
case "linkedin": return (
);
default: return null;
}
}
/* ---------- BRAND MARK (echoes logo: 2x2 squares in brand colors) ---------- */
function BrandMark({ size = 32, gap = 2 }) {
const cell = (size - gap) / 2;
return (
);
}
function Wordmark({ size = 22, withSub = true }) {
return (
SUMAFIN
{withSub && SOLUCIONES FINANCIERAS}
);
}
/* ---------- FORMATTERS ---------- */
const fmtMXN = (n) => "$" + Math.round(n).toLocaleString("es-MX");
Object.assign(window, { Icon, BrandMark, Wordmark, fmtMXN });