// SATMELI — set de íconos (línea, 24x24, currentColor). Estilo Lucide.
const SAT_ICON_PATHS = {
  // ── categorías ──
  cpu: <><rect x="6" y="6" width="12" height="12" rx="1.5"/><path d="M9 2v3M15 2v3M9 19v3M15 19v3M2 9h3M2 15h3M19 9h3M19 15h3"/><rect x="9.5" y="9.5" width="5" height="5" rx="1"/></>,
  shirt: <path d="M14.5 3 16 4l5 2.5-2 4-2-1V21H7V9.5l-2 1-2-4L8 4l1.5-1a3 3 0 0 0 5 0Z"/>,
  lamp: <><path d="M9 2h6l3 7H6l3-7Z"/><path d="M12 9v9"/><path d="M8 21h8"/><path d="M10 18h4"/></>,
  guitar: <><path d="m11.9 12.1 4.514-4.514"/><path d="M20.1 2.3a1 1 0 0 0-1.4 0l-1.114 1.114A2 2 0 0 0 17 4.828v1.344a2 2 0 0 1-.586 1.414L8.207 15.793a1 1 0 0 1-.707.207H6.5a1 1 0 0 0-.707 1.707l.586.586a1 1 0 0 0 1.707-.707V17.5a1 1 0 0 1 .293-.707l8.207-8.207A2 2 0 0 1 18.828 8h1.344a2 2 0 0 0 1.414-.586L22.7 6.3a1 1 0 0 0 0-1.4Z"/><circle cx="6" cy="18" r="3"/></>,
  gamepad: <><line x1="6" y1="11" x2="10" y2="11"/><line x1="8" y1="9" x2="8" y2="13"/><line x1="15" y1="12" x2="15.01" y2="12"/><line x1="18" y1="10" x2="18.01" y2="10"/><rect x="2" y="6" width="20" height="12" rx="6"/></>,
  bike: <><circle cx="5.5" cy="17.5" r="3.5"/><circle cx="18.5" cy="17.5" r="3.5"/><path d="M15 6a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm-3.5 11.5L9 9l3-3 3 5h3"/></>,
  // ── UI ──
  radar: <><path d="M19.07 4.93A10 10 0 1 0 21 12"/><path d="M4.93 19.07A10 10 0 0 1 4.5 5.5"/><path d="M12 12 19 5"/><circle cx="12" cy="12" r="3.5"/><circle cx="12" cy="12" r="0.5" fill="currentColor"/></>,
  bell: <><path d="M10.268 21a2 2 0 0 0 3.464 0"/><path d="M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326"/></>,
  bellOff: <><path d="M8.7 3A6 6 0 0 1 18 8c0 1.6.2 2.9.5 3.9M17 17H4a1 1 0 0 1-.74-1.67C4.6 14 6 12.5 6 8a6 6 0 0 1 .2-1.5M10.27 21a2 2 0 0 0 3.46 0M2 2l20 20"/></>,
  plus: <><path d="M5 12h14M12 5v14"/></>,
  search: <><circle cx="11" cy="11" r="7"/><path d="m21 21-4.3-4.3"/></>,
  send: <><path d="M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z"/><path d="m21.854 2.147-10.94 10.939"/></>,
  chevR: <path d="m9 18 6-6-6-6"/>,
  chevL: <path d="m15 18-6-6 6-6"/>,
  chevDown: <path d="m6 9 6 6 6-6"/>,
  upRight: <><path d="M7 7h10v10"/><path d="M7 17 17 7"/></>,
  check: <path d="M20 6 9 17l-5-5"/>,
  checkCheck: <><path d="M18 6 7 17l-5-5"/><path d="m22 10-7.5 7.5L13 16"/></>,
  pause: <><rect x="6" y="5" width="4" height="14" rx="1"/><rect x="14" y="5" width="4" height="14" rx="1"/></>,
  play: <path d="M6 4.5v15a1 1 0 0 0 1.5.87l13-7.5a1 1 0 0 0 0-1.74l-13-7.5A1 1 0 0 0 6 4.5Z"/>,
  edit: <><path d="M12 20h9"/><path d="M16.5 3.5a2.12 2.12 0 0 1 3 3L7 19l-4 1 1-4Z"/></>,
  sliders: <><line x1="4" y1="21" x2="4" y2="14"/><line x1="4" y1="10" x2="4" y2="3"/><line x1="12" y1="21" x2="12" y2="12"/><line x1="12" y1="8" x2="12" y2="3"/><line x1="20" y1="21" x2="20" y2="16"/><line x1="20" y1="12" x2="20" y2="3"/><line x1="1" y1="14" x2="7" y2="14"/><line x1="9" y1="8" x2="15" y2="8"/><line x1="17" y1="16" x2="23" y2="16"/></>,
  clock: <><circle cx="12" cy="12" r="9"/><path d="M12 7v5l3 2"/></>,
  pin: <><path d="M20 10c0 6-8 12-8 12s-8-6-8-12a8 8 0 0 1 16 0Z"/><circle cx="12" cy="10" r="3"/></>,
  tag: <><path d="M7.5 7.5h.01"/><path d="M3 6v5.6a2 2 0 0 0 .6 1.4l8.4 8.4a2 2 0 0 0 2.8 0l5.6-5.6a2 2 0 0 0 0-2.8L13 4.6A2 2 0 0 0 11.6 4H6a3 3 0 0 0-3 3Z"/></>,
  trash: <><path d="M3 6h18M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2m2 0v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6"/><path d="M10 11v6M14 11v6"/></>,
  x: <path d="M18 6 6 18M6 6l12 12"/>,
  inbox: <><path d="M22 12h-6l-2 3h-4l-2-3H2"/><path d="M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z"/></>,
  grid: <><rect x="3" y="3" width="7" height="7" rx="1.5"/><rect x="14" y="3" width="7" height="7" rx="1.5"/><rect x="14" y="14" width="7" height="7" rx="1.5"/><rect x="3" y="14" width="7" height="7" rx="1.5"/></>,
  image: <><rect x="3" y="3" width="18" height="18" rx="2"/><circle cx="9" cy="9" r="2"/><path d="m21 15-3.5-3.5a2 2 0 0 0-2.8 0L5 21"/></>,
  trendDown: <><path d="M16 17h6v-6"/><path d="m22 17-8.5-8.5-5 5L2 7"/></>,
  zap: <path d="M13 2 3 14h7l-1 8 10-12h-7l1-8Z"/>,
  dots: <><circle cx="12" cy="5" r="1.6"/><circle cx="12" cy="12" r="1.6"/><circle cx="12" cy="19" r="1.6"/></>,
  calendar: <><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></>,
  shield: <><path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"/><path d="m9 12 2 2 4-4"/></>,
  filter: <path d="M3 4.5h18l-7 8v6l-4 2v-8z"/>,
  sparkle: <path d="M12 3l1.6 5.4L19 10l-5.4 1.6L12 17l-1.6-5.4L5 10l5.4-1.6z"/>,
  map: <><path d="M9 18l-6 3V6l6-3 6 3 6-3v15l-6 3-6-3z"/><path d="M9 3v15M15 6v15"/></>,
  eye: <><path d="M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7-10-7-10-7Z"/><circle cx="12" cy="12" r="3"/></>,
};

function Icon({ name, size = 20, stroke = 1.75, fill = 'none', style }) {
  return (
    <svg width={size} height={size} viewBox="0 0 24 24" fill={fill} stroke="currentColor"
      strokeWidth={stroke} strokeLinecap="round" strokeLinejoin="round"
      style={{ display: 'block', flexShrink: 0, ...style }}>
      {SAT_ICON_PATHS[name] || null}
    </svg>
  );
}

Object.assign(window, { Icon });
