// Category icons — descriptive metaphors at 32x32, designed to read at a glance.
// Two-tone: filled shape (opacity 0.14) + 1.5px stroke detail. Uses currentColor.
const D = ({children, size=32}) => (
);
const stroke = { stroke: "currentColor", strokeWidth: 1.5, strokeLinecap: "round", strokeLinejoin: "round", fill: "none" };
const fill = { fill: "currentColor", opacity: 0.14 };
const fillSolid = { fill: "currentColor" };
// ── 01 PROYECTOS DE NEGOCIO — briefcase with progress bars
const CatProjects = (p) => (
);
// ── 02 DEFINICIÓN PRODUCTOS E INVENTARIOS — labeled product box
const CatInventory = (p) => (
{/* small label tag */}
);
// ── 03 OFERTAS B2B — sales funnel with deal $
const CatPipelineB2B = (p) => (
);
// ── 04 ACUERDOS — signed document with seal
const CatAgreements = (p) => (
{/* signature ribbon seal */}
);
// ── 05 VENTAS B2C — person + repeat arrow (subscription)
const CatB2C = (p) => (
{/* recurring arrow */}
);
// ── 06 FACTURACIÓN — invoice with $
const CatBilling = (p) => (
);
// ── 07 INTELIGENCIA COMERCIAL — dashboard with trend
const CatBI = (p) => (
);
// ── 08 INVENTARIOS PUBLICITARIOS — TV with ad slots
const CatAdInventory = (p) => (
{/* sold slot */}
{/* available slots */}
);
// ── 09 INVENTARIOS DE 3ROS — hub with external nodes
const CatAd3rd = (p) => (
);
// ── 10 IMPLEMENTACIÓN PUBLICITARIA — broadcast tower
const CatAdImpl = (p) => (
);
// ── 11 CONTENIDOS — claqueta (pizarra de rodaje)
// Antes era un rollo de película: un círculo con cuatro círculos alrededor que a
// 32px no se lee como cine sino como un enchufe. La claqueta tiene silueta propia
// —cuerpo rectangular + brazo inclinado con franjas— y no se parece a ningún otro
// icono del juego, así que se reconoce sin tener que adivinar.
const CatContent = (p) => (
{/* cuerpo de la pizarra */}
{/* brazo superior, levantado como cuando está abierta */}
{/* franjas del brazo */}
{/* renglones donde va escrito el título */}
);
// ── 12 CONTRATOS USO CONTENIDO — scroll with copyright
const CatContentRights = (p) => (
);
// ── 13 VENTANAS EXHIBICIÓN — calendar with windowed date range
const CatExhibWindows = (p) => (
{/* highlighted exhibition window */}
);
// ── 14 DIGITAL ASSET SYNDICATION — content distributed to devices
const CatSyndication = (p) => (
{/* center file */}
{/* TV */}
{/* Phone */}
{/* Laptop */}
);
// ── 15 PROGRAMACIÓN SEÑALES — TV programming schedule grid
const CatSignalProg = (p) => (
{/* small time markers */}
);
// ── 16 PLAYLIST — numbered playlist with play indicator
const CatPlaylist = (p) => (
);
// ── 17 INGEST & QC — media file entering with QC check
const CatIngestQC = (p) => (
{/* incoming arrow */}
{/* destination box / drive */}
{/* QC check */}
);
// ── 18 REAL EXHIBIDO — on-air panel
const CatAsRun = (p) => (
);
// Expose
Object.assign(window, {
CatProjects, CatInventory, CatPipelineB2B, CatAgreements, CatB2C,
CatBilling, CatBI, CatAdInventory, CatAd3rd, CatAdImpl,
CatContent, CatContentRights, CatExhibWindows, CatSyndication,
CatSignalProg, CatPlaylist, CatIngestQC, CatAsRun,
});
// ── CLIENTES Y CRÉDITO — person silhouette + credit card
const CatClientsCredit = (p) => (
);
// ── EQUIPOS DE VENTA Y COMISIONES — team of people + % badge
const CatSalesTeams = (p) => (
{/* left person */}
{/* right person */}
{/* % badge */}
);
// ── AREAS MONETIZACIÓN — dollar coin with revenue streams branching out
const CatRevenue = (p) => (
{/* main coin */}
{/* $ symbol */}
{/* revenue stream nodes */}
{/* connecting lines */}
);
// ── DEFINICIÓN SEÑALES — broadcast tower radiating multi-platform signals
const CatSignals = (p) => (
{/* base / antenna mast */}
{/* transmitter dot at apex */}
{/* signal waves — left */}
{/* signal waves — right */}
);
// ── GESTIÓN AUTOAPOYOS — TV screen broadcasting its own content (star inside + loop)
const CatAutoapoyos = (p) => (
{/* TV body */}
{/* stand */}
{/* star inside screen (own content highlight) */}
{/* loop arrow at top-right corner indicating "self/auto" */}
);
// ── GESTIÓN CANJES — two parcels with bidirectional swap arrows
const CatCanjes = (p) => (
{/* left package */}
{/* right package */}
{/* swap arrows on top */}
);
// CatClientsCredit se definía sin exportarse: `Icon` no lo encontraba en window y
// devolvía null, así que 5 ventanas (Autorización y Crédito, Empresas, Razón
// Social, Usuarios, Usuario PEP-CECO) salían sin ícono en la cabecera.
Object.assign(window, { CatSalesTeams, CatRevenue, CatSignals, CatAutoapoyos, CatCanjes, CatClientsCredit });