// ARBITER — shared SVG icon library (stroke-based, 18x18 default, 1.5px)
// Enterprise-grade vector icons for sidebar nav, platform headers, and common markers.
// All icons accept { size, color, strokeWidth, label, decorative } and render
// currentColor-compatible SVG with WCAG-compliant semantics.
//
// A11y:
//   <Icons.Dashboard />                 -> decorative by default (aria-hidden)
//   <Icons.Dashboard label="Home" />    -> semantic (role=img + aria-label)

const Icon = ({ size = 18, color = 'currentColor', strokeWidth = 1.5, children,
  viewBox = '0 0 18 18', label, decorative = true }) => {
  const a11y = label
    ? { role: 'img', 'aria-label': label }
    : { 'aria-hidden': 'true', focusable: 'false' };
  return (
    <svg width={size} height={size} viewBox={viewBox} fill="none" stroke={color}
      strokeWidth={strokeWidth} strokeLinecap="round" strokeLinejoin="round"
      style={{ display: 'block', flexShrink: 0 }} {...a11y}>
      {label ? <title>{label}</title> : null}
      {children}
    </svg>
  );
};

const Icons = {
  // ── Sidebar · Overview ──────────────────────────────────────────────────
  // Dashboard — 2×2 grid (replaces ◫)
  Dashboard: (p) => (
    <Icon {...p}>
      <rect x="2.5" y="2.5" width="5.5" height="5.5" rx="0.75" />
      <rect x="10" y="2.5" width="5.5" height="5.5" rx="0.75" />
      <rect x="2.5" y="10" width="5.5" height="5.5" rx="0.75" />
      <rect x="10" y="10" width="5.5" height="5.5" rx="0.75" />
    </Icon>
  ),
  // Matters — briefcase (replaces ◰)
  Matters: (p) => (
    <Icon {...p}>
      <rect x="2.5" y="5" width="13" height="10" rx="1.25" />
      <path d="M6.5 5 L6.5 3.5 A1 1 0 0 1 7.5 2.5 L10.5 2.5 A1 1 0 0 1 11.5 3.5 L11.5 5" />
      <path d="M2.5 9.5 L15.5 9.5" />
    </Icon>
  ),
  // Calendar — month grid (replaces ▦)
  Calendar: (p) => (
    <Icon {...p}>
      <rect x="2.5" y="3.5" width="13" height="12" rx="1.25" />
      <path d="M2.5 7 L15.5 7" />
      <path d="M6 2 L6 5" />
      <path d="M12 2 L12 5" />
    </Icon>
  ),
  // ── Sidebar · Work ──────────────────────────────────────────────────────
  // Documents — document stack (replaces ▤)
  Documents: (p) => (
    <Icon {...p}>
      <path d="M5 2.5 L11 2.5 L14.5 6 L14.5 14.5 A1 1 0 0 1 13.5 15.5 L5 15.5 A1 1 0 0 1 4 14.5 L4 3.5 A1 1 0 0 1 5 2.5 Z" />
      <path d="M11 2.5 L11 6 L14.5 6" />
      <path d="M7 10 L12 10" />
      <path d="M7 12.5 L10.5 12.5" />
    </Icon>
  ),
  // Discovery — magnifying folder (replaces ⟐)
  Discovery: (p) => (
    <Icon {...p}>
      <path d="M2 5 L2 14 A1 1 0 0 0 3 15 L15 15 A1 1 0 0 0 16 14 L16 6 A1 1 0 0 0 15 5 L8.5 5 L7 3.5 L3 3.5 A1 1 0 0 0 2 4.5 Z" />
      <circle cx="10" cy="10.5" r="2.25" />
      <path d="M11.75 12.25 L13.5 14" />
    </Icon>
  ),
  // Nexus — hub/graph (replaces ◉)
  Nexus: (p) => (
    <Icon {...p}>
      <circle cx="9" cy="9" r="2.25" />
      <circle cx="3" cy="4" r="1.25" />
      <circle cx="15" cy="4" r="1.25" />
      <circle cx="3" cy="14" r="1.25" />
      <circle cx="15" cy="14" r="1.25" />
      <path d="M7.3 7.5 L4 5" />
      <path d="M10.7 7.5 L14 5" />
      <path d="M7.3 10.5 L4 13" />
      <path d="M10.7 10.5 L14 13" />
    </Icon>
  ),
  // Persona — user avatars (replaces ♞)
  Persona: (p) => (
    <Icon {...p}>
      <circle cx="7" cy="6.5" r="2.5" />
      <path d="M2.5 14.5 Q2.5 10.5 7 10.5 Q11.5 10.5 11.5 14.5" />
      <circle cx="13" cy="5.5" r="1.75" />
      <path d="M10.5 10.5 Q13 9.5 15.5 11 Q16 12 15.8 14.5" />
    </Icon>
  ),
  // Criminal — handcuffs / shield-with-bars (replaces ⚖ for Criminal)
  Criminal: (p) => (
    <Icon {...p}>
      <path d="M9 2 L14.5 4 L14.5 9 Q14.5 13 9 15.5 Q3.5 13 3.5 9 L3.5 4 Z" />
      <path d="M7 6.5 L7 11" />
      <path d="M9 6.5 L9 11" />
      <path d="M11 6.5 L11 11" />
    </Icon>
  ),
  // Motions — gavel (replaces ◆ for Motions)
  Motions: (p) => (
    <Icon {...p}>
      <path d="M8.5 2 L14 7.5 L12.5 9 L7 3.5 Z" />
      <path d="M6 5 L10.5 9.5 L9 11 L4.5 6.5 Z" />
      <path d="M8.5 9.5 L3 15" />
      <path d="M2 15.5 L6 15.5" />
    </Icon>
  ),
  // Studio — pencil/edit (replaces ✎)
  Studio: (p) => (
    <Icon {...p}>
      <path d="M12.5 2.5 L15.5 5.5 L6 15 L2.5 15.5 L3 12 Z" />
      <path d="M11 4 L14 7" />
    </Icon>
  ),
  // Automation — lightning bolt (replaces ⚡︎)
  Automation: (p) => (
    <Icon {...p}>
      <path d="M10.5 2 L4 10 L8.5 10 L7.5 16 L14 8 L9.5 8 Z" />
    </Icon>
  ),
  // Research — book/open tome (replaces ◈)
  Research: (p) => (
    <Icon {...p}>
      <path d="M2.5 4 Q2.5 3 3.5 3 L8 3 Q9 3 9 4 L9 14.5 Q9 13.5 8 13.5 L3.5 13.5 Q2.5 13.5 2.5 14.5 Z" />
      <path d="M15.5 4 Q15.5 3 14.5 3 L10 3 Q9 3 9 4 L9 14.5 Q9 13.5 10 13.5 L14.5 13.5 Q15.5 13.5 15.5 14.5 Z" />
      <path d="M4.5 6 L7 6" />
      <path d="M4.5 8 L7 8" />
      <path d="M11 6 L13.5 6" />
      <path d="M11 8 L13.5 8" />
    </Icon>
  ),
  // Tasks — checklist (replaces ☐)
  Tasks: (p) => (
    <Icon {...p}>
      <rect x="2.5" y="3" width="4" height="4" rx="0.5" />
      <path d="M3.5 5 L4.25 5.75 L5.5 4.25" />
      <rect x="2.5" y="10.5" width="4" height="4" rx="0.5" />
      <path d="M8.5 5 L15.5 5" />
      <path d="M8.5 12.5 L15.5 12.5" />
    </Icon>
  ),
  // Rulebook — book-with-bookmark (replaces ⚖ for Rulebook)
  Rulebook: (p) => (
    <Icon {...p}>
      <path d="M3.5 2.5 L13.5 2.5 A1 1 0 0 1 14.5 3.5 L14.5 15.5 L12 14 L9.5 15.5 L9.5 2.5" />
      <path d="M3.5 2.5 L3.5 13.5 A1 1 0 0 0 4.5 14.5 L9.5 14.5" />
      <path d="M5 5.5 L8 5.5" />
      <path d="M5 7.5 L8 7.5" />
    </Icon>
  ),
  // Risk — flag (replaces ⚑)
  Risk: (p) => (
    <Icon {...p}>
      <path d="M4 2.5 L4 15.5" />
      <path d="M4 3 L13.5 3 L11 6 L13.5 9 L4 9" />
    </Icon>
  ),
  // Billing — receipt / dollar (replaces ▣)
  Billing: (p) => (
    <Icon {...p}>
      <path d="M4 2 L14 2 L14 16 L11.75 14.75 L9 16 L6.25 14.75 L4 16 Z" />
      <path d="M6.5 6 L11.5 6" />
      <path d="M6.5 9 L11.5 9" />
      <path d="M6.5 12 L9.5 12" />
    </Icon>
  ),
  // ── Sidebar · Admin ─────────────────────────────────────────────────────
  // Team — users (replaces ◔)
  Team: (p) => (
    <Icon {...p}>
      <circle cx="9" cy="5.5" r="2.5" />
      <path d="M4 14.5 Q4 10.5 9 10.5 Q14 10.5 14 14.5" />
    </Icon>
  ),
  // Clients — identity card (replaces ◑)
  Clients: (p) => (
    <Icon {...p}>
      <rect x="2.5" y="4" width="13" height="10.5" rx="1.25" />
      <circle cx="6.5" cy="8.5" r="1.75" />
      <path d="M4 13 Q4 10.75 6.5 10.75 Q9 10.75 9 13" />
      <path d="M11 7.5 L14 7.5" />
      <path d="M11 10 L13.5 10" />
    </Icon>
  ),
  // Settings — gear (replaces ⚙)
  Settings: (p) => (
    <Icon {...p}>
      <circle cx="9" cy="9" r="2.5" />
      <path d="M9 2 L9 3.5 M9 14.5 L9 16 M2 9 L3.5 9 M14.5 9 L16 9 M3.95 3.95 L5 5 M13 13 L14.05 14.05 M3.95 14.05 L5 13 M13 5 L14.05 3.95" />
    </Icon>
  ),

  Comms: (p) => (
    <Icon {...p}>
      <path d="M3 4 H15 A1 1 0 0 1 16 5 V12 A1 1 0 0 1 15 13 H7 L4 16 V13 H3 A1 1 0 0 1 2 12 V5 A1 1 0 0 1 3 4 Z" />
      <path d="M6 8 H12 M6 10 H10" />
    </Icon>
  ),

  // ── Platform headers ────────────────────────────────────────────────────
  // Scale/gavel shared with Motions/Criminal/Rulebook — aliases available via the icons above.

  // ── Common status & utility ─────────────────────────────────────────────
  Check: (p) => (
    <Icon {...p}>
      <path d="M3.5 9 L7 12.5 L14.5 5" />
    </Icon>
  ),
  X: (p) => (
    <Icon {...p}>
      <path d="M4 4 L14 14 M14 4 L4 14" />
    </Icon>
  ),
  Alert: (p) => (
    <Icon {...p}>
      <path d="M9 2 L16.5 15.5 L1.5 15.5 Z" />
      <path d="M9 7 L9 10.5" />
      <circle cx="9" cy="13" r="0.5" fill={p?.color || 'currentColor'} stroke="none" />
    </Icon>
  ),
  Dot: (p) => (
    <Icon {...p}>
      <circle cx="9" cy="9" r="3" fill={p?.color || 'currentColor'} stroke="none" />
    </Icon>
  ),
  Star: (p) => (
    <Icon {...p}>
      <path d="M9 2.5 L11 7 L15.5 7.5 L12 10.75 L13 15.25 L9 12.75 L5 15.25 L6 10.75 L2.5 7.5 L7 7 Z" />
    </Icon>
  ),
  StarFilled: (p) => (
    <Icon {...p}>
      <path d="M9 2.5 L11 7 L15.5 7.5 L12 10.75 L13 15.25 L9 12.75 L5 15.25 L6 10.75 L2.5 7.5 L7 7 Z"
        fill={p?.color || 'currentColor'} />
    </Icon>
  ),
  StarHalf: (p) => (
    <Icon {...p}>
      <path d="M9 2.5 L11 7 L15.5 7.5 L12 10.75 L13 15.25 L9 12.75 L5 15.25 L6 10.75 L2.5 7.5 L7 7 Z" />
      <path d="M9 2.5 L9 12.75 L5 15.25 L6 10.75 L2.5 7.5 L7 7 Z" fill={p?.color || 'currentColor'} />
    </Icon>
  ),

  // ── Extended set ────────────────────────────────────────────────────────
  Lock: (p) => (
    <Icon {...p}>
      <rect x="3.5" y="8" width="11" height="7.5" rx="1" />
      <path d="M5.5 8 L5.5 5.5 A3.5 3.5 0 0 1 12.5 5.5 L12.5 8" />
    </Icon>
  ),
  LockOpen: (p) => (
    <Icon {...p}>
      <rect x="3.5" y="8" width="11" height="7.5" rx="1" />
      <path d="M5.5 8 L5.5 5.5 A3.5 3.5 0 0 1 12.5 5.5" />
    </Icon>
  ),
  Key: (p) => (
    <Icon {...p}>
      <circle cx="6" cy="10" r="3" />
      <path d="M8.5 9 L15.5 9 L15.5 11 L14 11 L14 12.5 L12.5 12.5 L12.5 11" />
    </Icon>
  ),
  Pin: (p) => (
    <Icon {...p}>
      <path d="M9 2 L12.5 5.5 L11 7 L13 9 L9 13 L7 11 L5.5 12.5 L2 9 Z" />
      <path d="M2 16 L7 11" />
    </Icon>
  ),
  Chat: (p) => (
    <Icon {...p}>
      <path d="M3 4 H15 A1 1 0 0 1 16 5 V12 A1 1 0 0 1 15 13 H7 L4 16 V13 H3 A1 1 0 0 1 2 12 V5 A1 1 0 0 1 3 4 Z" />
    </Icon>
  ),
  Phone: (p) => (
    <Icon {...p}>
      <path d="M4 3 L7 3 L8.5 6.5 L6.5 8 Q8 11 10 12.5 L11.5 10.5 L15 12 L15 15 A1 1 0 0 1 14 16 Q7 15.5 3 9 Q2.5 4 3 3 Z" />
    </Icon>
  ),
  Video: (p) => (
    <Icon {...p}>
      <rect x="2" y="5" width="10" height="8" rx="1" />
      <path d="M12 8 L16 6 L16 12 L12 10 Z" />
    </Icon>
  ),
  Flame: (p) => (
    <Icon {...p}>
      <path d="M9 2 Q6 5 6 8 Q4 9 4 12 Q4 15.5 9 15.5 Q14 15.5 14 12 Q14 9.5 12 8.5 Q12 5.5 9 2 Z" />
    </Icon>
  ),
  Pause: (p) => (
    <Icon {...p}>
      <rect x="5" y="3" width="2.5" height="12" rx="0.5" />
      <rect x="10.5" y="3" width="2.5" height="12" rx="0.5" />
    </Icon>
  ),
  Play: (p) => (
    <Icon {...p}>
      <path d="M5 3 L14 9 L5 15 Z" />
    </Icon>
  ),
  Sword: (p) => (
    <Icon {...p}>
      <path d="M15 3 L15 8 L8 15 L5.5 12.5 L13 5 Z" />
      <path d="M3 15 L6 12" />
      <path d="M5 16 L2 13" />
    </Icon>
  ),
  FileText: (p) => (
    <Icon {...p}>
      <path d="M5 2.5 L11 2.5 L14.5 6 L14.5 15.5 L4 15.5 L4 3.5 A1 1 0 0 1 5 2.5 Z" />
      <path d="M11 2.5 L11 6 L14.5 6" />
      <path d="M7 9 L12 9" /><path d="M7 11 L12 11" /><path d="M7 13 L10 13" />
    </Icon>
  ),
  Search: (p) => (
    <Icon {...p}>
      <circle cx="7.5" cy="7.5" r="4.5" />
      <path d="M11 11 L15 15" />
    </Icon>
  ),
  Branch: (p) => (
    <Icon {...p}>
      <circle cx="5" cy="4" r="1.5" />
      <circle cx="5" cy="14" r="1.5" />
      <circle cx="13" cy="7" r="1.5" />
      <path d="M5 5.5 L5 12.5" />
      <path d="M5 7 Q5 9 8 9.5 Q13 10 13 8.5" />
    </Icon>
  ),
  Trash: (p) => (
    <Icon {...p}>
      <path d="M3 5 L15 5" />
      <path d="M5 5 L5.5 15 A1 1 0 0 0 6.5 16 L11.5 16 A1 1 0 0 0 12.5 15 L13 5" />
      <path d="M7 5 L7 3.5 A1 1 0 0 1 8 2.5 L10 2.5 A1 1 0 0 1 11 3.5 L11 5" />
    </Icon>
  ),
  Sparkle: (p) => (
    <Icon {...p}>
      <path d="M9 2 L10.5 7.5 L16 9 L10.5 10.5 L9 16 L7.5 10.5 L2 9 L7.5 7.5 Z" />
    </Icon>
  ),
  Timer: (p) => (
    <Icon {...p}>
      <circle cx="9" cy="10" r="5.5" />
      <path d="M9 6.5 L9 10 L11.5 10.5" />
      <path d="M7 2.5 L11 2.5" />
    </Icon>
  ),
  Copy: (p) => (
    <Icon {...p}>
      <rect x="5" y="5" width="9" height="10" rx="1" />
      <path d="M4 11 L3 11 A1 1 0 0 1 2 10 L2 3 A1 1 0 0 1 3 2 L10 2 A1 1 0 0 1 11 3 L11 4" />
    </Icon>
  ),
  User: (p) => (
    <Icon {...p}>
      <circle cx="9" cy="6.5" r="2.75" />
      <path d="M3.5 15.5 Q3.5 10.5 9 10.5 Q14.5 10.5 14.5 15.5" />
    </Icon>
  ),
  Note: (p) => (
    <Icon {...p}>
      <path d="M4 2.5 L12 2.5 L15.5 6 L15.5 15.5 L4 15.5 Z" />
      <path d="M12 2.5 L12 6 L15.5 6" />
    </Icon>
  ),
  Paperclip: (p) => (
    <Icon {...p}>
      <path d="M14 6 L7.5 12.5 A2.5 2.5 0 0 1 4 9 L10.5 2.5 A1.75 1.75 0 0 1 13 5 L7 11 A0.75 0.75 0 0 1 6 10 L11 5" />
    </Icon>
  ),
  Clipboard: (p) => (
    <Icon {...p}>
      <rect x="4" y="3.5" width="10" height="12" rx="1" />
      <rect x="6" y="2" width="6" height="3" rx="0.5" />
      <path d="M6.5 9 L11.5 9" /><path d="M6.5 11.5 L10.5 11.5" />
    </Icon>
  ),
  Eye: (p) => (
    <Icon {...p}>
      <path d="M1 9 Q5 3.5 9 3.5 Q13 3.5 17 9 Q13 14.5 9 14.5 Q5 14.5 1 9 Z" />
      <circle cx="9" cy="9" r="2.25" />
    </Icon>
  ),
  Cloud: (p) => (
    <Icon {...p}>
      <path d="M5 13 A3.5 3.5 0 0 1 5 6.5 A3 3 0 0 1 11 5.5 A3 3 0 0 1 14.5 9 A3 3 0 0 1 13 13 Z" />
    </Icon>
  ),
  Folder: (p) => (
    <Icon {...p}>
      <path d="M2 5 L2 14 A1 1 0 0 0 3 15 L15 15 A1 1 0 0 0 16 14 L16 6 A1 1 0 0 0 15 5 L8.5 5 L7 3.5 L3 3.5 A1 1 0 0 0 2 4.5 Z" />
    </Icon>
  ),
  Link: (p) => (
    <Icon {...p}>
      <path d="M7 11 L11 7" />
      <path d="M6 12.5 L4.5 14 A2.5 2.5 0 0 1 1 10.5 L3.5 8 A2.5 2.5 0 0 1 7 8" />
      <path d="M12 5.5 L13.5 4 A2.5 2.5 0 0 1 17 7.5 L14.5 10 A2.5 2.5 0 0 1 11 10" />
    </Icon>
  ),
  Hourglass: (p) => (
    <Icon {...p}>
      <path d="M5 2.5 L13 2.5" /><path d="M5 15.5 L13 15.5" />
      <path d="M5 2.5 L13 2.5 L9 9 L13 15.5 L5 15.5 L9 9 Z" />
    </Icon>
  ),
  Handshake: (p) => (
    <Icon {...p}>
      <path d="M2 8 L5 6 L9 9 L13 6 L16 8 L13 13 L9 11 L5 13 Z" />
    </Icon>
  ),
  Shield: (p) => (
    <Icon {...p}>
      <path d="M9 2 L14.5 4 L14.5 9 Q14.5 13 9 15.5 Q3.5 13 3.5 9 L3.5 4 Z" />
    </Icon>
  ),
  CalendarDot: (p) => (
    <Icon {...p}>
      <rect x="2.5" y="3.5" width="13" height="12" rx="1.25" />
      <path d="M2.5 7 L15.5 7" /><path d="M6 2 L6 5" /><path d="M12 2 L12 5" />
      <circle cx="9" cy="11" r="1.25" fill={p?.color || 'currentColor'} stroke="none" />
    </Icon>
  ),
  Laptop: (p) => (
    <Icon {...p}>
      <rect x="3" y="4" width="12" height="8" rx="1" />
      <path d="M1.5 14 L16.5 14" />
    </Icon>
  ),
  MapPin: (p) => (
    <Icon {...p}>
      <path d="M9 2 Q14 2 14 7 Q14 11 9 16 Q4 11 4 7 Q4 2 9 2 Z" />
      <circle cx="9" cy="7" r="2" />
    </Icon>
  ),
  Plug: (p) => (
    <Icon {...p}>
      <path d="M6 2 L6 6" /><path d="M12 2 L12 6" />
      <rect x="4.5" y="6" width="9" height="5" rx="1" />
      <path d="M9 11 L9 16" />
    </Icon>
  ),
  Cmd: (p) => (
    <Icon {...p}>
      <path d="M6 4 A2 2 0 1 0 6 8 L6 10 A2 2 0 1 0 6 14 L6 10 L12 10 L12 14 A2 2 0 1 0 12 10 L12 8 A2 2 0 1 0 12 4 L12 8 L6 8 Z" />
    </Icon>
  ),
  Anchor: (p) => (
    <Icon {...p}>
      <circle cx="9" cy="4.5" r="1.75" />
      <path d="M9 6.25 L9 15" />
      <path d="M6 9 L12 9" />
      <path d="M3 11 Q3 15 9 15 Q15 15 15 11" />
    </Icon>
  ),
  Pencil: (p) => (
    <Icon {...p}>
      <path d="M12.5 2.5 L15.5 5.5 L6 15 L2.5 15.5 L3 12 Z" />
      <path d="M11 4 L14 7" />
    </Icon>
  ),
  Flag: (p) => (
    <Icon {...p}>
      <path d="M4 2.5 L4 15.5" />
      <path d="M4 3 L13.5 3 L11 6 L13.5 9 L4 9" />
    </Icon>
  ),
  CheckSquare: (p) => (
    <Icon {...p}>
      <rect x="2.5" y="2.5" width="13" height="13" rx="1" />
      <path d="M5.5 9 L8 11.5 L13 6.5" />
    </Icon>
  ),
  Square: (p) => (
    <Icon {...p}>
      <rect x="2.5" y="2.5" width="13" height="13" rx="1" />
    </Icon>
  ),
  Envelope: (p) => (
    <Icon {...p}>
      <rect x="2" y="4" width="14" height="10" rx="1" />
      <path d="M2 5 L9 10 L16 5" />
    </Icon>
  ),
  ArrowRight: (p) => (
    <Icon {...p}>
      <path d="M3 9 L15 9" /><path d="M10 4 L15 9 L10 14" />
    </Icon>
  ),
  ArrowLeft: (p) => (
    <Icon {...p}>
      <path d="M15 9 L3 9" /><path d="M8 4 L3 9 L8 14" />
    </Icon>
  ),
  ChevronDown: (p) => (
    <Icon {...p}>
      <path d="M4 7 L9 12 L14 7" />
    </Icon>
  ),
  ChevronRight: (p) => (
    <Icon {...p}>
      <path d="M7 4 L12 9 L7 14" />
    </Icon>
  ),
  Plus: (p) => (
    <Icon {...p}>
      <path d="M9 3 L9 15" /><path d="M3 9 L15 9" />
    </Icon>
  ),
  Minus: (p) => (
    <Icon {...p}>
      <path d="M3 9 L15 9" />
    </Icon>
  ),
  Menu: (p) => (
    <Icon {...p}>
      <path d="M3 5 L15 5" /><path d="M3 9 L15 9" /><path d="M3 13 L15 13" />
    </Icon>
  ),
  MoreHorizontal: (p) => (
    <Icon {...p}>
      <circle cx="4" cy="9" r="1" fill={p?.color || 'currentColor'} stroke="none" />
      <circle cx="9" cy="9" r="1" fill={p?.color || 'currentColor'} stroke="none" />
      <circle cx="14" cy="9" r="1" fill={p?.color || 'currentColor'} stroke="none" />
    </Icon>
  ),
  Info: (p) => (
    <Icon {...p}>
      <circle cx="9" cy="9" r="6.5" />
      <path d="M9 8 L9 12.5" />
      <circle cx="9" cy="5.5" r="0.5" fill={p?.color || 'currentColor'} stroke="none" />
    </Icon>
  ),
  ExternalLink: (p) => (
    <Icon {...p}>
      <path d="M10 2.5 L15.5 2.5 L15.5 8" />
      <path d="M15.5 2.5 L8 10" />
      <path d="M13 10 L13 14.5 A1 1 0 0 1 12 15.5 L3.5 15.5 A1 1 0 0 1 2.5 14.5 L2.5 6 A1 1 0 0 1 3.5 5 L8 5" />
    </Icon>
  ),
  Download: (p) => (
    <Icon {...p}>
      <path d="M9 3 L9 12" /><path d="M5 8 L9 12 L13 8" />
      <path d="M3 15 L15 15" />
    </Icon>
  ),
  Upload: (p) => (
    <Icon {...p}>
      <path d="M9 12 L9 3" /><path d="M5 7 L9 3 L13 7" />
      <path d="M3 15 L15 15" />
    </Icon>
  ),
  Filter: (p) => (
    <Icon {...p}>
      <path d="M2.5 3 L15.5 3 L11 9 L11 14.5 L7 15.5 L7 9 Z" />
    </Icon>
  ),
};

// Alias map for common synonyms so refactors don't break usage sites.
Icons.Edit     = Icons.Pencil;
Icons.Delete   = Icons.Trash;
Icons.Warning  = Icons.Alert;
Icons.Success  = Icons.Check;
Icons.Close    = Icons.X;
Icons.Bolt     = Icons.Automation;
Icons.Scale    = Icons.Rulebook;
Icons.Gavel    = Icons.Motions;

window.Icons = Icons;
