/* global React */
/* Icons — Lucide-inspired, 1.5px stroke, currentColor.
   Sized via the size prop (default 16). All icons share viewBox 24x24. */

const __iconBase = (props) => ({
  width: props.size || 16,
  height: props.size || 16,
  viewBox: "0 0 24 24",
  fill: "none",
  stroke: "currentColor",
  strokeWidth: props.stroke || 1.5,
  strokeLinecap: "round",
  strokeLinejoin: "round",
  "aria-hidden": true,
  ...(props.style ? { style: props.style } : {}),
  ...(props.className ? { className: props.className } : {}),
});

const Icon = {
  Search:    (p) => <svg {...__iconBase(p)}><circle cx="11" cy="11" r="7"/><path d="m20 20-3.5-3.5"/></svg>,
  Plus:      (p) => <svg {...__iconBase(p)}><path d="M12 5v14M5 12h14"/></svg>,
  Minus:     (p) => <svg {...__iconBase(p)}><path d="M5 12h14"/></svg>,
  X:         (p) => <svg {...__iconBase(p)}><path d="M18 6 6 18M6 6l12 12"/></svg>,
  Check:     (p) => <svg {...__iconBase(p)}><path d="m4 12 5 5L20 6"/></svg>,
  ChevronDown: (p) => <svg {...__iconBase(p)}><path d="m6 9 6 6 6-6"/></svg>,
  ChevronUp:   (p) => <svg {...__iconBase(p)}><path d="m6 15 6-6 6 6"/></svg>,
  ChevronRight:(p) => <svg {...__iconBase(p)}><path d="m9 6 6 6-6 6"/></svg>,
  ChevronLeft: (p) => <svg {...__iconBase(p)}><path d="m15 6-6 6 6 6"/></svg>,
  ArrowUpRight:(p) => <svg {...__iconBase(p)}><path d="M7 17 17 7M8 7h9v9"/></svg>,
  ArrowRight:  (p) => <svg {...__iconBase(p)}><path d="M5 12h14M13 5l7 7-7 7"/></svg>,
  ArrowDown:   (p) => <svg {...__iconBase(p)}><path d="M12 5v14M5 12l7 7 7-7"/></svg>,
  ArrowUp:     (p) => <svg {...__iconBase(p)}><path d="M12 19V5M5 12l7-7 7 7"/></svg>,
  Filter:    (p) => <svg {...__iconBase(p)}><path d="M3 5h18l-7 9v6l-4-2v-4Z"/></svg>,
  Sort:      (p) => <svg {...__iconBase(p)}><path d="M7 4v16M3 8l4-4 4 4M17 20V4M13 16l4 4 4-4"/></svg>,
  More:      (p) => <svg {...__iconBase(p)}><circle cx="5" cy="12" r="1.2"/><circle cx="12" cy="12" r="1.2"/><circle cx="19" cy="12" r="1.2"/></svg>,
  MoreV:     (p) => <svg {...__iconBase(p)}><circle cx="12" cy="5" r="1.2"/><circle cx="12" cy="12" r="1.2"/><circle cx="12" cy="19" r="1.2"/></svg>,
  Settings:  (p) => <svg {...__iconBase(p)}><circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.7 1.7 0 0 0 .3 1.8l.1.1a2 2 0 1 1-2.8 2.8l-.1-.1a1.7 1.7 0 0 0-1.8-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 1 1-4 0v-.1a1.7 1.7 0 0 0-1.1-1.5 1.7 1.7 0 0 0-1.8.3l-.1.1a2 2 0 1 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.8 1.7 1.7 0 0 0-1.5-1H3a2 2 0 1 1 0-4h.1a1.7 1.7 0 0 0 1.5-1.1 1.7 1.7 0 0 0-.3-1.8l-.1-.1a2 2 0 1 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.8.3H9a1.7 1.7 0 0 0 1-1.5V3a2 2 0 1 1 4 0v.1a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.8-.3l.1-.1a2 2 0 1 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.8V9a1.7 1.7 0 0 0 1.5 1H21a2 2 0 1 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1Z"/></svg>,
  User:      (p) => <svg {...__iconBase(p)}><circle cx="12" cy="8" r="4"/><path d="M4 21a8 8 0 0 1 16 0"/></svg>,
  Users:     (p) => <svg {...__iconBase(p)}><circle cx="9" cy="8" r="3.5"/><circle cx="17" cy="9" r="2.5"/><path d="M3 20a6 6 0 0 1 12 0M15 20a4 4 0 0 1 6-3"/></svg>,
  Bell:      (p) => <svg {...__iconBase(p)}><path d="M6 8a6 6 0 1 1 12 0c0 4 1.5 5 2 6H4c.5-1 2-2 2-6Z"/><path d="M10 21a2 2 0 0 0 4 0"/></svg>,
  Inbox:     (p) => <svg {...__iconBase(p)}><path d="M22 12h-6l-2 3h-4l-2-3H2"/><path d="M5 5h14l3 7v6a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-6Z"/></svg>,
  Home:      (p) => <svg {...__iconBase(p)}><path d="m3 11 9-8 9 8"/><path d="M5 10v10h14V10"/></svg>,
  Folder:    (p) => <svg {...__iconBase(p)}><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"/></svg>,
  File:      (p) => <svg {...__iconBase(p)}><path d="M14 3H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9Z"/><path d="M14 3v6h6"/></svg>,
  Layers:    (p) => <svg {...__iconBase(p)}><path d="m12 3 9 5-9 5-9-5z"/><path d="m3 13 9 5 9-5M3 18l9 5 9-5"/></svg>,
  Pulse:     (p) => <svg {...__iconBase(p)}><path d="M3 12h4l2-7 4 14 2-7h6"/></svg>,
  Lens:      (p) => <svg {...__iconBase(p)}><circle cx="11" cy="11" r="6"/><path d="m20 20-4-4"/><path d="M11 8a3 3 0 0 0-3 3"/></svg>,
  Hive:      (p) => <svg {...__iconBase(p)}><path d="m12 3 8 4.6V16l-8 4.6L4 16V7.6Z"/><path d="M12 12 4 7.6M12 12l8-4.4M12 12v8.6"/></svg>,
  Spark:     (p) => <svg {...__iconBase(p)}><path d="M12 3 14 9l6 2-6 2-2 6-2-6-6-2 6-2z"/></svg>,
  Bolt:      (p) => <svg {...__iconBase(p)}><path d="M13 3 4 14h6l-1 7 9-11h-6Z"/></svg>,
  Compass:   (p) => <svg {...__iconBase(p)}><circle cx="12" cy="12" r="9"/><path d="m15 9-2 5-5 2 2-5z"/></svg>,
  Sun:       (p) => <svg {...__iconBase(p)}><circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M2 12h2M20 12h2M5 5l1.5 1.5M17.5 17.5 19 19M19 5l-1.5 1.5M6.5 17.5 5 19"/></svg>,
  Moon:      (p) => <svg {...__iconBase(p)}><path d="M21 13A9 9 0 1 1 11 3a7 7 0 0 0 10 10Z"/></svg>,
  Eye:       (p) => <svg {...__iconBase(p)}><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"/></svg>,
  EyeOff:    (p) => <svg {...__iconBase(p)}><path d="m3 3 18 18M10.6 6.1A10 10 0 0 1 22 12s-1 2-3 4M6.7 7.7C3.6 9.7 2 12 2 12s3.5 7 10 7c1.6 0 3-.3 4.3-.8"/><path d="M9.9 9.9a3 3 0 0 0 4.2 4.2"/></svg>,
  Mail:      (p) => <svg {...__iconBase(p)}><rect x="3" y="5" width="18" height="14" rx="1.5"/><path d="m3 7 9 6 9-6"/></svg>,
  Lock:      (p) => <svg {...__iconBase(p)}><rect x="4" y="11" width="16" height="10" rx="1.5"/><path d="M8 11V7a4 4 0 0 1 8 0v4"/></svg>,
  Star:      (p) => <svg {...__iconBase(p)}><path d="m12 3 2.7 5.6 6.2.9-4.5 4.3 1 6.1L12 17l-5.5 2.9 1-6.1-4.5-4.3 6.2-.9z"/></svg>,
  Tag:       (p) => <svg {...__iconBase(p)}><path d="M3 12V4h8l10 10-8 8z"/><circle cx="7.5" cy="7.5" r="1"/></svg>,
  Calendar:  (p) => <svg {...__iconBase(p)}><rect x="3" y="5" width="18" height="16" rx="1.5"/><path d="M3 9h18M8 3v4M16 3v4"/></svg>,
  Clock:     (p) => <svg {...__iconBase(p)}><circle cx="12" cy="12" r="9"/><path d="M12 7v5l3 2"/></svg>,
  Trash:     (p) => <svg {...__iconBase(p)}><path d="M3 6h18M8 6V4h8v2M6 6l1 14h10l1-14"/></svg>,
  Edit:      (p) => <svg {...__iconBase(p)}><path d="M4 20h4l11-11-4-4L4 16Z"/><path d="m13 6 4 4"/></svg>,
  Copy:      (p) => <svg {...__iconBase(p)}><rect x="9" y="9" width="11" height="11" rx="1.5"/><path d="M5 15V5a1 1 0 0 1 1-1h10"/></svg>,
  Download:  (p) => <svg {...__iconBase(p)}><path d="M12 4v12M6 12l6 6 6-6M4 21h16"/></svg>,
  Upload:    (p) => <svg {...__iconBase(p)}><path d="M12 20V8M6 12l6-6 6 6M4 21h16"/></svg>,
  Send:      (p) => <svg {...__iconBase(p)}><path d="m4 12 16-8-6 18-3-7z"/></svg>,
  Refresh:   (p) => <svg {...__iconBase(p)}><path d="M3 12a9 9 0 0 1 15-6.7L21 8"/><path d="M21 4v4h-4"/><path d="M21 12a9 9 0 0 1-15 6.7L3 16"/><path d="M3 20v-4h4"/></svg>,
  Play:      (p) => <svg {...__iconBase(p)}><path d="M7 4v16l13-8z"/></svg>,
  Pause:     (p) => <svg {...__iconBase(p)}><path d="M7 4h3v16H7zM14 4h3v16h-3z"/></svg>,
  Sidebar:   (p) => <svg {...__iconBase(p)}><rect x="3" y="4" width="18" height="16" rx="1.5"/><path d="M9 4v16"/></svg>,
  Grid:      (p) => <svg {...__iconBase(p)}><rect x="3" y="3" width="7" height="7"/><rect x="14" y="3" width="7" height="7"/><rect x="3" y="14" width="7" height="7"/><rect x="14" y="14" width="7" height="7"/></svg>,
  List:      (p) => <svg {...__iconBase(p)}><path d="M8 6h13M8 12h13M8 18h13M3 6h.01M3 12h.01M3 18h.01"/></svg>,
  Globe:     (p) => <svg {...__iconBase(p)}><circle cx="12" cy="12" r="9"/><path d="M3 12h18M12 3a14 14 0 0 1 0 18 14 14 0 0 1 0-18Z"/></svg>,
  Building:  (p) => <svg {...__iconBase(p)}><path d="M4 21V6a1 1 0 0 1 1-1h7a1 1 0 0 1 1 1v15"/><path d="M13 12h6a1 1 0 0 1 1 1v8"/><path d="M7 9h2M7 13h2M7 17h2M16 16h1M16 12h1M3 21h18"/></svg>,
  Database:  (p) => <svg {...__iconBase(p)}><ellipse cx="12" cy="6" rx="8" ry="3"/><path d="M4 6v6c0 1.7 3.6 3 8 3s8-1.3 8-3V6"/><path d="M4 12v6c0 1.7 3.6 3 8 3s8-1.3 8-3v-6"/></svg>,
  Code:      (p) => <svg {...__iconBase(p)}><path d="m8 7-5 5 5 5M16 7l5 5-5 5M14 4l-4 16"/></svg>,
  Help:      (p) => <svg {...__iconBase(p)}><circle cx="12" cy="12" r="9"/><path d="M9.5 9a2.5 2.5 0 0 1 5 0c0 1.5-2.5 2-2.5 4M12 17h.01"/></svg>,
  Info:      (p) => <svg {...__iconBase(p)}><circle cx="12" cy="12" r="9"/><path d="M12 8h.01M11 12h1v5h1"/></svg>,
  Alert:     (p) => <svg {...__iconBase(p)}><path d="M12 3 2 21h20Z"/><path d="M12 10v5M12 18h.01"/></svg>,
  Warn:      (p) => <svg {...__iconBase(p)}><circle cx="12" cy="12" r="9"/><path d="M12 7v6M12 16h.01"/></svg>,
  Github:    (p) => <svg {...__iconBase(p)}><path d="M9 19c-4 1-4-2-6-2m12 4v-3a2 2 0 0 0-.5-1.5c2.5-.3 5-1.3 5-5.5a4 4 0 0 0-1-2.8 4 4 0 0 0 0-3s-1 0-3 1.3a10 10 0 0 0-5 0C8.5 5 7.5 5 7.5 5a4 4 0 0 0 0 3 4 4 0 0 0-1 2.8c0 4.2 2.5 5.2 5 5.5a2 2 0 0 0-.5 1.4V21"/></svg>,
};

window.Icon = Icon;
