// Lightweight icon set — stroke-based to match Mission Control aesthetic
const Ico = {
  Hub: ({ s = 16 }) => (
    <svg width={s} height={s} viewBox="0 0 16 16" fill="none" stroke="currentColor" strokeWidth="1.4">
      <rect x="2" y="2" width="5" height="5" rx="1" /><rect x="9" y="2" width="5" height="5" rx="1" />
      <rect x="2" y="9" width="5" height="5" rx="1" /><rect x="9" y="9" width="5" height="5" rx="1" />
    </svg>
  ),
  Bench: ({ s = 16 }) => (
    <svg width={s} height={s} viewBox="0 0 16 16" fill="none" stroke="currentColor" strokeWidth="1.4">
      <circle cx="4" cy="4" r="2" /><circle cx="12" cy="8" r="2" /><circle cx="4" cy="12" r="2" />
      <path d="M5.5 5L10.5 7M10.5 9L5.5 11" />
    </svg>
  ),
  Asset: ({ s = 16 }) => (
    <svg width={s} height={s} viewBox="0 0 16 16" fill="none" stroke="currentColor" strokeWidth="1.4">
      <path d="M8 1L14 4.5V11.5L8 15L2 11.5V4.5L8 1Z" /><path d="M8 1V8M8 8L14 4.5M8 8L2 4.5" />
    </svg>
  ),
  Script: ({ s = 16 }) => (
    <svg width={s} height={s} viewBox="0 0 16 16" fill="none" stroke="currentColor" strokeWidth="1.4">
      <rect x="3" y="2" width="10" height="12" rx="1" /><path d="M5 5h6M5 8h6M5 11h4" />
    </svg>
  ),
  Board: ({ s = 16 }) => (
    <svg width={s} height={s} viewBox="0 0 16 16" fill="none" stroke="currentColor" strokeWidth="1.4">
      <rect x="2" y="3" width="5" height="4" rx=".5" /><rect x="9" y="3" width="5" height="4" rx=".5" />
      <rect x="2" y="9" width="5" height="4" rx=".5" /><rect x="9" y="9" width="5" height="4" rx=".5" />
    </svg>
  ),
  Export: ({ s = 16 }) => (
    <svg width={s} height={s} viewBox="0 0 16 16" fill="none" stroke="currentColor" strokeWidth="1.4">
      <path d="M8 2v8M8 2L5 5M8 2l3 3M3 11v2a1 1 0 001 1h8a1 1 0 001-1v-2" />
    </svg>
  ),
  Model: ({ s = 16 }) => (
    <svg width={s} height={s} viewBox="0 0 16 16" fill="none" stroke="currentColor" strokeWidth="1.4">
      <circle cx="8" cy="8" r="2" /><path d="M8 1v2M8 13v2M1 8h2M13 8h2M3.5 3.5l1.4 1.4M11.1 11.1l1.4 1.4M3.5 12.5l1.4-1.4M11.1 4.9l1.4-1.4" />
    </svg>
  ),
  Search: ({ s = 14 }) => (
    <svg width={s} height={s} viewBox="0 0 14 14" fill="none" stroke="currentColor" strokeWidth="1.4">
      <circle cx="6" cy="6" r="4" /><path d="M9 9l3 3" />
    </svg>
  ),
  Bell: ({ s = 14 }) => (
    <svg width={s} height={s} viewBox="0 0 14 14" fill="none" stroke="currentColor" strokeWidth="1.4">
      <path d="M3 11V7a4 4 0 018 0v4M2 11h10M5 12a2 2 0 004 0" />
    </svg>
  ),
  Cmd: ({ s = 14 }) => (
    <svg width={s} height={s} viewBox="0 0 14 14" fill="none" stroke="currentColor" strokeWidth="1.4">
      <rect x="4" y="4" width="6" height="6" /><path d="M4 4a1.5 1.5 0 11-1.5 1.5H4M10 4a1.5 1.5 0 101.5 1.5H10M4 10a1.5 1.5 0 11-1.5-1.5H4M10 10a1.5 1.5 0 101.5-1.5H10" />
    </svg>
  ),
  Close: ({ s = 14 }) => (
    <svg width={s} height={s} viewBox="0 0 14 14" fill="none" stroke="currentColor" strokeWidth="1.4">
      <path d="M3 3l8 8M11 3l-8 8" />
    </svg>
  ),
  Plus: ({ s = 14 }) => (
    <svg width={s} height={s} viewBox="0 0 14 14" fill="none" stroke="currentColor" strokeWidth="1.6">
      <path d="M7 2v10M2 7h10" />
    </svg>
  ),
  Play: ({ s = 14 }) => (
    <svg width={s} height={s} viewBox="0 0 14 14" fill="none">
      <path d="M4 3l8 4-8 4z" fill="currentColor" />
    </svg>
  ),
  Check: ({ s = 12 }) => (
    <svg width={s} height={s} viewBox="0 0 12 12" fill="none" stroke="currentColor" strokeWidth="1.8">
      <path d="M2.5 6L5 8.5L9.5 3.5" strokeLinecap="round" strokeLinejoin="round" />
    </svg>
  ),
  Warn: ({ s = 12 }) => (
    <svg width={s} height={s} viewBox="0 0 12 12" fill="none" stroke="currentColor" strokeWidth="1.4">
      <path d="M6 1.5L11 10H1L6 1.5Z" /><path d="M6 5v2M6 8.5v.01" strokeLinecap="round" />
    </svg>
  ),
  Arrow: ({ s = 14 }) => (
    <svg width={s} height={s} viewBox="0 0 14 14" fill="none" stroke="currentColor" strokeWidth="1.5">
      <path d="M2 7h10M8 3l4 4-4 4" strokeLinecap="round" strokeLinejoin="round" />
    </svg>
  ),
  Refresh: ({ s = 14 }) => (
    <svg width={s} height={s} viewBox="0 0 14 14" fill="none" stroke="currentColor" strokeWidth="1.4">
      <path d="M2 7a5 5 0 019-3M12 7a5 5 0 01-9 3" /><path d="M9 1v3h3M5 13v-3H2" strokeLinecap="round" strokeLinejoin="round" />
    </svg>
  ),
  Edit: ({ s = 12 }) => (
    <svg width={s} height={s} viewBox="0 0 12 12" fill="none" stroke="currentColor" strokeWidth="1.3">
      <path d="M2 8.5V10h1.5L9 4.5 7.5 3 2 8.5zM7.5 3l1-1 1.5 1.5-1 1" />
    </svg>
  ),
  Trash: ({ s = 12 }) => (
    <svg width={s} height={s} viewBox="0 0 12 12" fill="none" stroke="currentColor" strokeWidth="1.3">
      <path d="M2 3h8M5 1h2M3 3l.5 7h5L9 3M5 5v3M7 5v3" />
    </svg>
  ),
  Eye: ({ s = 12 }) => (
    <svg width={s} height={s} viewBox="0 0 12 12" fill="none" stroke="currentColor" strokeWidth="1.3">
      <path d="M1 6s2-3.5 5-3.5S11 6 11 6s-2 3.5-5 3.5S1 6 1 6z" /><circle cx="6" cy="6" r="1.5" />
    </svg>
  ),
  Upload: ({ s = 12 }) => (
    <svg width={s} height={s} viewBox="0 0 12 12" fill="none" stroke="currentColor" strokeWidth="1.4">
      <path d="M6 9V2M6 2L3 5M6 2l3 3M2 9v2h8V9" />
    </svg>
  ),
  Folder: ({ s = 12 }) => (
    <svg width={s} height={s} viewBox="0 0 12 12" fill="none" stroke="currentColor" strokeWidth="1.3">
      <path d="M1 3.5V10h10V4H6L5 2.5H1z" />
    </svg>
  ),
  Camera: ({ s = 12 }) => (
    <svg width={s} height={s} viewBox="0 0 12 12" fill="none" stroke="currentColor" strokeWidth="1.3">
      <path d="M1 4h2l1-1.5h4L9 4h2v6H1z" /><circle cx="6" cy="7" r="2" />
    </svg>
  ),
};

window.Ico = Ico;
