// Icons — thin-line SVGs. All 16x16 viewBox, stroke currentColor.
const I = ({ children, s = 16 }) => (
  <svg width={s} height={s} viewBox="0 0 16 16" fill="none"
    stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round"
    aria-hidden="true">{children}</svg>
);

const Icons = {
  Home:       (p) => <I {...p}><path d="M2 7l6-5 6 5v6a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V7z"/><path d="M6 14V9h4v5"/></I>,
  Fleet:      (p) => <I {...p}><rect x="2" y="2.5" width="5" height="5" rx="1"/><rect x="9" y="2.5" width="5" height="5" rx="1"/><rect x="2" y="8.5" width="5" height="5" rx="1"/><rect x="9" y="8.5" width="5" height="5" rx="1"/></I>,
  Shield:     (p) => <I {...p}><path d="M8 1.5l5 2v4c0 3.5-2.5 5.5-5 7-2.5-1.5-5-3.5-5-7v-4l5-2z"/><path d="M6 8l1.5 1.5L10 7"/></I>,
  Graph:      (p) => <I {...p}><circle cx="3.5" cy="8" r="1.5"/><circle cx="12.5" cy="3.5" r="1.5"/><circle cx="12.5" cy="12.5" r="1.5"/><path d="M5 8l6-4.5M5 8l6 4.5"/></I>,
  Dollar:     (p) => <I {...p}><path d="M8 2v12M11 4.5C11 3.5 10 2.8 8 2.8S5 3.5 5 4.5 6 6 8 6.3s3 .8 3 2.2-1 2.5-3 2.5-3.2-.7-3.2-1.7"/></I>,
  Flask:      (p) => <I {...p}><path d="M6 2h4M6.5 2v4L3 12a1.5 1.5 0 0 0 1.3 2.2h7.4A1.5 1.5 0 0 0 13 12L9.5 6V2"/><path d="M4.8 9h6.4"/></I>,
  Pipeline:   (p) => <I {...p}><rect x="1.5" y="4" width="4" height="8" rx="1"/><rect x="10.5" y="4" width="4" height="8" rx="1"/><path d="M5.5 8h5"/><path d="M8 6.5l1.5 1.5L8 9.5"/></I>,
  Inbox:      (p) => <I {...p}><path d="M2 9.5L3.5 3h9L14 9.5v4a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1v-4z"/><path d="M2 9.5h3l1 1.5h4l1-1.5h3"/></I>,
  Book:       (p) => <I {...p}><path d="M2.5 2.5h4a2 2 0 0 1 2 2v9a1.5 1.5 0 0 0-1.5-1.5H2.5v-9.5z"/><path d="M13.5 2.5h-4a2 2 0 0 0-2 2v9a1.5 1.5 0 0 1 1.5-1.5h4.5v-9.5z"/></I>,
  Gear:       (p) => <I {...p}><circle cx="8" cy="8" r="2"/><path d="M8 1.5v2M8 12.5v2M1.5 8h2M12.5 8h2M3.4 3.4l1.4 1.4M11.2 11.2l1.4 1.4M3.4 12.6l1.4-1.4M11.2 4.8l1.4-1.4"/></I>,
  Bell:       (p) => <I {...p}><path d="M4 7a4 4 0 0 1 8 0v3l1.5 2.5h-11L4 10V7z"/><path d="M6.5 13a1.5 1.5 0 0 0 3 0"/></I>,
  Search:     (p) => <I {...p}><circle cx="7" cy="7" r="4.5"/><path d="M10.5 10.5L14 14"/></I>,
  Arrow:      (p) => <I {...p}><path d="M3 8h10M9 4l4 4-4 4"/></I>,
  Check:      (p) => <I {...p}><path d="M3 8.5L6.5 12 13 4"/></I>,
  X:          (p) => <I {...p}><path d="M4 4l8 8M12 4l-8 8"/></I>,
  Alert:      (p) => <I {...p}><path d="M8 2l6.5 11h-13L8 2z"/><path d="M8 6.5v3.5M8 11.5v0.01"/></I>,
  Warn:       (p) => <I {...p}><circle cx="8" cy="8" r="6"/><path d="M8 5v3.5M8 10.5v0.01"/></I>,
  Info:       (p) => <I {...p}><circle cx="8" cy="8" r="6"/><path d="M8 7.5V11M8 5.5v0.01"/></I>,
  Clock:      (p) => <I {...p}><circle cx="8" cy="8" r="6"/><path d="M8 4.5V8l2 2"/></I>,
  Spark:      (p) => <I {...p}><path d="M8 1.5v3M8 11.5v3M1.5 8h3M11.5 8h3M3.4 3.4l2 2M10.6 10.6l2 2M3.4 12.6l2-2M10.6 5.4l2-2"/></I>,
  Database:   (p) => <I {...p}><ellipse cx="8" cy="3.5" rx="5" ry="1.5"/><path d="M3 3.5v9c0 .8 2.2 1.5 5 1.5s5-.7 5-1.5v-9"/><path d="M3 8c0 .8 2.2 1.5 5 1.5s5-.7 5-1.5"/></I>,
  Cloud:      (p) => <I {...p}><path d="M4.5 11.5A3 3 0 1 1 5 5.5 4 4 0 0 1 13 6.5a2.5 2.5 0 0 1 0 5H4.5z"/></I>,
  Lock:       (p) => <I {...p}><rect x="3" y="7" width="10" height="7" rx="1"/><path d="M5.5 7V5a2.5 2.5 0 0 1 5 0v2"/></I>,
  Key:        (p) => <I {...p}><circle cx="5" cy="11" r="2.5"/><path d="M7 9l6-6M11 3.5l2 2M10 4.5l2 2"/></I>,
  Record:     (p) => <I {...p}><circle cx="8" cy="8" r="5"/><circle cx="8" cy="8" r="2" fill="currentColor"/></I>,
  Play:       (p) => <I {...p}><path d="M4.5 3v10L13 8 4.5 3z" fill="currentColor" stroke="none"/></I>,
  Dots:       (p) => <I {...p}><circle cx="3" cy="8" r="0.8" fill="currentColor" stroke="none"/><circle cx="8" cy="8" r="0.8" fill="currentColor" stroke="none"/><circle cx="13" cy="8" r="0.8" fill="currentColor" stroke="none"/></I>,
  ExternalLink: (p) => <I {...p}><path d="M6 3H3v10h10v-3"/><path d="M9 3h4v4M13 3l-6 6"/></I>,
  Plus:       (p) => <I {...p}><path d="M8 3v10M3 8h10"/></I>,
  Caret:      (p) => <I {...p}><path d="M4 6.5L8 10.5 12 6.5"/></I>,
  User:       (p) => <I {...p}><circle cx="8" cy="6" r="2.5"/><path d="M3 13.5a5 5 0 0 1 10 0"/></I>,
  Users:      (p) => <I {...p}><circle cx="6" cy="6" r="2.2"/><path d="M2 13.5a4 4 0 0 1 8 0"/><circle cx="11" cy="5" r="1.8"/><path d="M9.5 13.5a3.5 3.5 0 0 1 4.5-3.4"/></I>,
  Hash:       (p) => <I {...p}><path d="M3 6h10M3 10h10M6 2.5l-1.5 11M11.5 2.5L10 13.5"/></I>,
  Code:       (p) => <I {...p}><path d="M5 4L1.5 8 5 12M11 4l3.5 4-3.5 4M9.5 3l-3 10"/></I>,
  Doc:        (p) => <I {...p}><path d="M3 2h6l4 4v8a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1z"/><path d="M9 2v4h4M5 8h6M5 10.5h6M5 13h4"/></I>,
  Upload:     (p) => <I {...p}><path d="M8 10V2M5 5l3-3 3 3"/><path d="M2.5 10v3.5h11V10"/></I>,
  Box:        (p) => <I {...p}><path d="M2 5l6-2.5L14 5v6L8 13.5 2 11V5z"/><path d="M2 5l6 2.5L14 5"/><path d="M8 7.5v6"/></I>,
  Github:     (p) => <I {...p}><path d="M8 1.5a6.5 6.5 0 0 0-2 12.7c.3.05.4-.15.4-.3v-1.1c-1.8.4-2.2-.85-2.2-.85-.3-.75-.7-.95-.7-.95-.6-.4.05-.4.05-.4.65.05 1 .65 1 .65.6 1 1.55.7 1.95.55.05-.45.25-.7.45-.85-1.45-.15-2.95-.7-2.95-3.2 0-.7.25-1.3.65-1.75-.05-.15-.3-.8.05-1.7 0 0 .55-.15 1.75.65a6 6 0 0 1 3.2 0c1.2-.8 1.75-.65 1.75-.65.35.9.1 1.55.05 1.7.4.45.65 1.05.65 1.75 0 2.5-1.5 3.05-2.95 3.2.25.2.45.6.45 1.2v1.8c0 .15.1.35.4.3A6.5 6.5 0 0 0 8 1.5z" fill="currentColor" stroke="none"/></I>,
  Rollback:   (p) => <I {...p}><path d="M3 8a5 5 0 1 1 1 3"/><path d="M3 5.5v2.5h2.5"/></I>,
  Branch:     (p) => <I {...p}><circle cx="4" cy="3.5" r="1.5"/><circle cx="4" cy="12.5" r="1.5"/><circle cx="12" cy="3.5" r="1.5"/><path d="M4 5v6"/><path d="M12 5v1.5a3 3 0 0 1-3 3H7"/></I>,
};

window.Icons = Icons;
