// Minimal icon set — stroke-based, inherits currentColor
const Icon = ({ name, size = 16, className = '' }) => {
  const paths = {
    plus: <><path d="M12 5v14M5 12h14" /></>,
    search: <><circle cx="11" cy="11" r="7" /><path d="m20 20-3.5-3.5" /></>,
    bell: <><path d="M6 8a6 6 0 1 1 12 0c0 7 3 7 3 7H3s3 0 3-7Z" /><path d="M10 21a2 2 0 0 0 4 0" /></>,
    gear: <><circle cx="12" cy="12" r="3" /><path d="M12 2v3M12 19v3M4.2 4.2l2.1 2.1M17.7 17.7l2.1 2.1M2 12h3M19 12h3M4.2 19.8l2.1-2.1M17.7 6.3l2.1-2.1" /></>,
    folder: <><path d="M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2Z" /></>,
    layers: <><path d="m12 2 10 6-10 6L2 8z" /><path d="m2 14 10 6 10-6" /></>,
    download: <><path d="M12 3v12m0 0-4-4m4 4 4-4" /><path d="M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2" /></>,
    check: <><path d="m4 12 5 5L20 6" /></>,
    x: <><path d="M6 6l12 12M18 6 6 18" /></>,
    upload: <><path d="M12 21V9m0 0-4 4m4-4 4 4" /><path d="M4 7V5a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v2" /></>,
    arrowRight: <><path d="M5 12h14M13 5l7 7-7 7" /></>,
    arrowLeft: <><path d="M19 12H5M11 5l-7 7 7 7" /></>,
    play: <><path d="m6 4 14 8-14 8Z" /></>,
    pause: <><path d="M6 4h4v16H6zM14 4h4v16h-4z" /></>,
    sparkle: <><path d="M12 3v4M12 17v4M3 12h4M17 12h4M5.6 5.6l2.8 2.8M15.6 15.6l2.8 2.8M18.4 5.6l-2.8 2.8M8.4 15.6l-2.8 2.8" /></>,
    bolt: <><path d="M13 2 4 14h7l-2 8 9-12h-7Z" /></>,
    game: <><path d="M6 11h4M8 9v4" /><circle cx="16" cy="12" r="1" /><circle cx="18" cy="10" r="1" /><rect x="2" y="6" width="20" height="12" rx="4" /></>,
    chat: <><path d="M21 12a8 8 0 0 1-8 8H5l-1.5 3 .5-4a8 8 0 0 1 5-15c4.4 0 8 3.5 8 8Z" /></>,
    sidebar: <><rect x="3" y="4" width="18" height="16" rx="2" /><path d="M9 4v16" /></>,
    chevronRight: <><path d="m9 6 6 6-6 6" /></>,
    chevronLeft: <><path d="m15 6-6 6 6 6" /></>,
    chevronDown: <><path d="m6 9 6 6 6-6" /></>,
    more: <><circle cx="5" cy="12" r="1" /><circle cx="12" cy="12" r="1" /><circle cx="19" cy="12" r="1" /></>,
    link: <><path d="M10 13a5 5 0 0 0 7 0l3-3a5 5 0 0 0-7-7l-1 1" /><path d="M14 11a5 5 0 0 0-7 0l-3 3a5 5 0 0 0 7 7l1-1" /></>,
    image: <><rect x="3" y="4" width="18" height="16" rx="2" /><circle cx="9" cy="10" r="1.5" /><path d="m3 17 5-5 5 5 3-3 5 5" /></>,
    tag: <><path d="M12 2H3v9l9 9 9-9Z" /><circle cx="7" cy="7" r="1.5" /></>,
    revert: <><path d="M3 8h11a5 5 0 0 1 0 10H10" /><path d="m7 4-4 4 4 4" /></>,
    history: <><circle cx="12" cy="12" r="9" /><path d="M12 7v5l3 2" /></>,
    eye: <><path d="M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12Z" /><circle cx="12" cy="12" r="3" /></>,
    flag: <><path d="M5 21V4h14l-3 4 3 4H5" /></>,
    template: <><rect x="3" y="3" width="18" height="5" rx="1" /><rect x="3" y="11" width="8" height="10" rx="1" /><rect x="13" y="11" width="8" height="10" rx="1" /></>,
    send: <><path d="m4 4 16 8-16 8 3-8Z" /><path d="M7 12h13" /></>,
    attach: <><path d="M21 12 12 21a5 5 0 0 1-7-7l9-9a3 3 0 0 1 4 4l-9 9a1 1 0 0 1-1.5-1.5L16 9" /></>,
    refresh: <><path d="M21 12a9 9 0 1 1-3-6.7L21 8" /><path d="M21 3v5h-5" /></>,
    terminal: <><path d="m4 7 5 5-5 5" /><path d="M12 19h8" /></>,
    external: <><path d="M14 4h6v6" /><path d="M20 4 10 14" /><path d="M19 13v5a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2h5" /></>,
    target: <><circle cx="12" cy="12" r="9" /><circle cx="12" cy="12" r="5" /><circle cx="12" cy="12" r="1" /></>,
    stop: <><rect x="5" y="5" width="14" height="14" rx="2" /></>,
    alert: <><path d="M12 3 1 21h22Z" /><path d="M12 10v5M12 18v.5" /></>,
    info: <><circle cx="12" cy="12" r="9" /><path d="M12 8v.5M12 12v5" /></>,
    zap: <><path d="M13 2 4 14h7l-2 8 9-12h-7Z" /></>,
    share: <><circle cx="18" cy="5" r="3" /><circle cx="6" cy="12" r="3" /><circle cx="18" cy="19" r="3" /><path d="m8.6 13.5 6.8 4M15.4 6.5l-6.8 4" /></>,
    filter: <><path d="M3 4h18l-7 9v7l-4-2v-5Z" /></>,
    grid: <><rect x="3" y="3" width="8" height="8" /><rect x="13" y="3" width="8" height="8" /><rect x="3" y="13" width="8" height="8" /><rect x="13" y="13" width="8" height="8" /></>,
    list: <><path d="M8 6h13M8 12h13M8 18h13" /><circle cx="4" cy="6" r="1" /><circle cx="4" cy="12" r="1" /><circle cx="4" cy="18" r="1" /></>,
    trash: <><path d="M4 7h16M9 7V5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v2M6 7l1 13a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2l1-13" /></>,
    collapse: <><path d="M9 3v18M15 8l-4 4 4 4" /></>,
    lock: <><rect x="4" y="11" width="16" height="10" rx="2" /><path d="M8 11V7a4 4 0 0 1 8 0v4" /></>,
    shield: <><path d="M12 3 4 6v6c0 5 3.5 8 8 9 4.5-1 8-4 8-9V6Z" /></>,
    compare: <><path d="M12 3v18" /><path d="M4 7h4v10H4zM16 7h4v10h-4z" /></>,
    phone: <><rect x="6" y="2" width="12" height="20" rx="2" /><path d="M11 18h2" /></>,
    tablet: <><rect x="4" y="3" width="16" height="18" rx="2" /><circle cx="12" cy="17" r="0.5" /></>,
    rotate: <><path d="M21 12a9 9 0 1 1-9-9" /><path d="M21 3v6h-6" /></>,
    copy: <><rect x="8" y="8" width="12" height="12" rx="2" /><path d="M16 8V6a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h2" /></>,
    archive: <><rect x="3" y="4" width="18" height="4" rx="1" /><path d="M5 8v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V8M10 12h4" /></>,
    settings: <><circle cx="12" cy="12" r="3" /><path d="m19.4 15 .9 1-2 2-1-.9a6 6 0 0 1-2 .8l-.3 1.4h-3l-.3-1.4a6 6 0 0 1-2-.8L8.7 18l-2-2 .9-1a6 6 0 0 1-.8-2L5.4 12.7v-3l1.4-.3a6 6 0 0 1 .8-2L6.7 6.4l2-2 1 .9a6 6 0 0 1 2-.8L12 3h3l.3 1.4a6 6 0 0 1 2 .8L18.3 4l2 2-.9 1a6 6 0 0 1 .8 2l1.4.3v3L20 13a6 6 0 0 1-.7 2Z" /></>,
  };
  return (
    <svg
      className={`ic ${className}`}
      width={size} height={size}
      viewBox="0 0 24 24"
      fill="none"
      stroke="currentColor"
      strokeWidth="1.6"
      strokeLinecap="round"
      strokeLinejoin="round"
    >
      {paths[name] || null}
    </svg>
  );
};

window.Icon = Icon;
