/* Icon set — feather/lucide style line icons, 1.8 stroke */
const Icon = ({ name, size = 18, stroke = 1.8, fill = "none", className = "", style }) => {
  const P = {
    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="3" y="14" width="7" height="7" rx="1.5"/><rect x="14" y="14" width="7" height="7" rx="1.5"/></>,
    users: <><path d="M16 19v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="3.2"/><path d="M22 19v-2a4 4 0 0 0-3-3.87"/><path d="M16 4.13A4 4 0 0 1 16 11"/></>,
    inbox: <><path d="M21 13.5V18a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4.5"/><path d="M3 13.5h5l1.5 2.5h5L21 13.5"/><path d="M3 13.5 5.2 5.2A2 2 0 0 1 7.1 3.8h9.8a2 2 0 0 1 1.9 1.4L21 13.5"/></>,
    calendar: <><rect x="3" y="4.5" width="18" height="16" rx="2"/><path d="M3 9h18M8 2.5v4M16 2.5v4"/></>,
    chart: <><path d="M4 19V5M4 19h16"/><path d="M8 16l3.5-4 3 2.5L20 8"/></>,
    file: <><path d="M14 3v5h5"/><path d="M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8z"/><path d="M9 13h6M9 17h4"/></>,
    pill: <><rect x="2.5" y="8.5" width="19" height="7" rx="3.5" transform="rotate(-45 12 12)"/><path d="M8.5 8.5l7 7"/></>,
    flask: <><path d="M9 2.5h6M10 2.5v6L4.8 17a2 2 0 0 0 1.8 3h10.8a2 2 0 0 0 1.8-3L14 8.5v-6"/><path d="M7.5 14h9"/></>,
    activity: <path d="M3 12h4l3 8 4-16 3 8h4"/>,
    clipboard: <><rect x="5" y="4" width="14" height="17" rx="2"/><path d="M9 4a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2"/><path d="M9 11h6M9 15h4"/></>,
    search: <><circle cx="11" cy="11" r="7"/><path d="m21 21-4.3-4.3"/></>,
    bell: <><path d="M18 8a6 6 0 0 0-12 0c0 7-3 9-3 9h18s-3-2-3-9"/><path d="M13.7 21a2 2 0 0 1-3.4 0"/></>,
    plus: <path d="M12 5v14M5 12h14"/>,
    x: <path d="M18 6 6 18M6 6l12 12"/>,
    check: <path d="M20 6 9 17l-5-5"/>,
    chevR: <path d="m9 18 6-6-6-6"/>,
    chevD: <path d="m6 9 6 6 6-6"/>,
    chevL: <path d="m15 18-6-6 6-6"/>,
    arrowUp: <path d="M12 19V5M5 12l7-7 7 7"/>,
    arrowDown: <path d="M12 5v14M19 12l-7 7-7-7"/>,
    heart: <path d="M19 14c1.5-1.6 2.5-3.3 2.5-5.4A4.6 4.6 0 0 0 12 5.7 4.6 4.6 0 0 0 2.5 8.6C2.5 13 12 21 12 21s3.5-3 6.5-6"/>,
    alert: <><path d="M10.3 3.9 1.8 18a2 2 0 0 0 1.7 3h17a2 2 0 0 0 1.7-3L13.7 3.9a2 2 0 0 0-3.4 0z"/><path d="M12 9v4M12 17h.01"/></>,
    info: <><circle cx="12" cy="12" r="9"/><path d="M12 16v-4M12 8h.01"/></>,
    droplet: <path d="M12 2.7 6.3 9a8 8 0 1 0 11.4 0z"/>,
    lungs: <><path d="M12 2v8"/><path d="M9 7c0 3-1 4-3 6-1.5 1.5-2 3.5-2 6 0 1 .8 1.5 1.8 1.2C8 19.6 9 18 9 14z"/><path d="M15 7c0 3 1 4 3 6 1.5 1.5 2 3.5 2 6 0 1-.8 1.5-1.8 1.2C16 19.6 15 18 15 14z"/></>,
    temp: <><path d="M14 14.8V4a2 2 0 0 0-4 0v10.8a4 4 0 1 0 4 0z"/></>,
    weight: <><path d="M6.5 7h11l2.5 13H4z"/><circle cx="12" cy="4.5" r="2"/></>,
    clock: <><circle cx="12" cy="12" r="9"/><path d="M12 7v5l3 2"/></>,
    user: <><circle cx="12" cy="8" r="4"/><path d="M4 21v-1a6 6 0 0 1 6-6h4a6 6 0 0 1 6 6v1"/></>,
    edit: <><path d="M12 20h9"/><path d="M16.5 3.5a2.1 2.1 0 0 1 3 3L7 19l-4 1 1-4z"/></>,
    print: <><path d="M6 9V3h12v6"/><rect x="4" y="9" width="16" height="8" rx="2"/><path d="M8 17h8v4H8z"/></>,
    more: <><circle cx="5" cy="12" r="1.5"/><circle cx="12" cy="12" r="1.5"/><circle cx="19" cy="12" r="1.5"/></>,
    sliders: <><path d="M4 21v-7M4 10V3M12 21v-9M12 8V3M20 21v-5M20 12V3"/><path d="M1 14h6M9 8h6M17 16h6"/></>,
    filter: <path d="M22 3H2l8 9.5V19l4 2v-8.5z"/>,
    flag: <><path d="M4 21v-7"/><path d="M4 4h12l-1.5 3L16 10H4z"/></>,
    stethoscope: <><path d="M4 3v6a4 4 0 0 0 8 0V3"/><path d="M8 16a5 5 0 0 0 10 0v-3"/><circle cx="19" cy="11" r="2"/></>,
    shield: <path d="M12 2 4 5v6c0 5 3.5 8.5 8 10 4.5-1.5 8-5 8-10V5z"/>,
    send: <path d="m22 2-11 11M22 2l-7 20-4-9-9-4z"/>,
    refresh: <><path d="M3 12a9 9 0 0 1 15-6.7L21 8"/><path d="M21 3v5h-5"/><path d="M21 12a9 9 0 0 1-15 6.7L3 16"/><path d="M3 21v-5h5"/></>,
    dots: <><circle cx="12" cy="5" r="1.5"/><circle cx="12" cy="12" r="1.5"/><circle cx="12" cy="19" r="1.5"/></>,
    bed: <><path d="M3 7v12M3 12h18a0 0 0 0 1 0 0v7M3 12v-1a3 3 0 0 1 3-3h6a3 3 0 0 1 3 3v1"/><circle cx="7.5" cy="10.5" r="1.3"/></>,
    reply: <><path d="M9 17 4 12l5-5"/><path d="M4 12h11a5 5 0 0 1 5 5v2"/></>,
    settings: <><circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.6 1.6 0 0 0 .3 1.8l.1.1a2 2 0 1 1-2.8 2.8l-.1-.1a1.6 1.6 0 0 0-2.7 1.1V21a2 2 0 1 1-4 0v-.2a1.6 1.6 0 0 0-2.7-1.1l-.1.1a2 2 0 1 1-2.8-2.8l.1-.1A1.6 1.6 0 0 0 4.6 15a1.6 1.6 0 0 0-1.5-1H3a2 2 0 1 1 0-4h.2A1.6 1.6 0 0 0 4.6 9a1.6 1.6 0 0 0-.3-1.8l-.1-.1a2 2 0 1 1 2.8-2.8l.1.1A1.6 1.6 0 0 0 9 4.6a1.6 1.6 0 0 0 1-1.5V3a2 2 0 1 1 4 0v.2a1.6 1.6 0 0 0 2.7 1.1l.1-.1a2 2 0 1 1 2.8 2.8l-.1.1a1.6 1.6 0 0 0-.3 1.8 1.6 1.6 0 0 0 1.5 1h.2a2 2 0 1 1 0 4h-.2a1.6 1.6 0 0 0-1.4 1z"/></>,
    logout: <><path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"/><path d="M16 17l5-5-5-5M21 12H9"/></>,
    dollar: <><path d="M12 1v22"/><path d="M17.5 6H9.8a3.3 3.3 0 0 0 0 6.6h4.4a3.3 3.3 0 0 1 0 6.6H6"/></>,
    layers: <><path d="m12 2 9 5-9 5-9-5 9-5z"/><path d="m3 12 9 5 9-5"/><path d="m3 17 9 5 9-5"/></>,
  };
  return (
    <svg width={size} height={size} viewBox="0 0 24 24" fill={fill} stroke="currentColor"
      strokeWidth={stroke} strokeLinecap="round" strokeLinejoin="round" className={className} style={style}>
      {P[name] || null}
    </svg>
  );
};

Object.assign(window, { Icon });
