// Inline SVG icon set (Lucide-style stroke icons). Each accepts {size, ...props}.
const I = (path, viewBox = "0 0 24 24") => ({ size = 16, ...p } = {}) => (
  <svg width={size} height={size} viewBox={viewBox} fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" {...p}>
    {path}
  </svg>
);

const Icon = {
  Monitor: I(<>
    <rect x="2" y="3" width="20" height="14" rx="2" />
    <path d="M8 21h8M12 17v4" />
  </>),
  Eye: I(<>
    <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" />
  </>),
  LayoutDashboard: I(<>
    <rect x="3" y="3" width="7" height="9" rx="1" />
    <rect x="14" y="3" width="7" height="5" rx="1" />
    <rect x="14" y="12" width="7" height="9" rx="1" />
    <rect x="3" y="16" width="7" height="5" rx="1" />
  </>),
  Folder: I(<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-2V7z" />),
  Playlist: I(<>
    <path d="M3 5h13M3 10h13M3 15h8" />
    <path d="M16 14l5 3-5 3v-6z" fill="currentColor" />
  </>),
  Calendar: I(<>
    <rect x="3" y="4" width="18" height="17" rx="2" />
    <path d="M3 9h18M8 2v4M16 2v4" />
  </>),
  BarChart: I(<>
    <path d="M3 21h18" />
    <rect x="5" y="12" width="3" height="8" rx="0.5" />
    <rect x="10.5" y="7" width="3" height="13" rx="0.5" />
    <rect x="16" y="15" width="3" height="5" rx="0.5" />
  </>),
  Settings: I(<>
    <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 0 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.8 1.7 1.7 0 0 0-1.5-1H3a2 2 0 0 1 0-4h.1a1.7 1.7 0 0 0 1.5-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.3 1.7 1.7 0 0 0 1-1.5V3a2 2 0 0 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.8 1.7 1.7 0 0 0 1.5 1H21a2 2 0 0 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1z" />
  </>),
  Upload: I(<>
    <path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" />
    <path d="M17 8l-5-5-5 5" />
    <path d="M12 3v12" />
  </>),
  Plus: I(<path d="M12 5v14M5 12h14" />),
  Search: I(<>
    <circle cx="11" cy="11" r="7" />
    <path d="m20 20-3.5-3.5" />
  </>),
  Play: I(<path d="M8 5v14l11-7z" fill="currentColor" stroke="none" />),
  Pause: I(<>
    <rect x="6" y="4" width="4" height="16" rx="1" fill="currentColor" stroke="none" />
    <rect x="14" y="4" width="4" height="16" rx="1" fill="currentColor" stroke="none" />
  </>),
  Skip: I(<><path d="M5 4l10 8-10 8z" fill="currentColor" stroke="none" /><path d="M19 5v14" /></>),
  Broadcast: I(<>
    <path d="M5 12a7 7 0 0 1 14 0M3 12a9 9 0 0 1 18 0" />
    <circle cx="12" cy="12" r="2" fill="currentColor" />
  </>),
  Bell: I(<>
    <path d="M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9" />
    <path d="M10.3 21a1.94 1.94 0 0 0 3.4 0" />
  </>),
  Check: I(<path d="M20 6 9 17l-5-5" />),
  X: I(<path d="M18 6 6 18M6 6l12 12" />),
  ChevronDown: I(<path d="m6 9 6 6 6-6" />),
  ChevronRight: I(<path d="m9 18 6-6-6-6" />),
  ChevronLeft: I(<path d="m15 18-6-6 6-6" />),
  MoreH: I(<><circle cx="5" cy="12" r="1.4" fill="currentColor" /><circle cx="12" cy="12" r="1.4" fill="currentColor" /><circle cx="19" cy="12" r="1.4" fill="currentColor" /></>),
  Trash: I(<>
    <path d="M3 6h18M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" />
    <path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6" />
  </>),
  Edit: I(<>
    <path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7" />
    <path d="M18.4 2.6a2 2 0 0 1 2.8 2.8L11 16l-4 1 1-4z" />
  </>),
  Grid: I(<>
    <rect x="3" y="3" width="7" height="7" rx="1" />
    <rect x="14" y="3" width="7" height="7" rx="1" />
    <rect x="14" y="14" width="7" height="7" rx="1" />
    <rect x="3" y="14" width="7" height="7" rx="1" />
  </>),
  Clock: I(<><circle cx="12" cy="12" r="9" /><path d="M12 7v5l3 2" /></>),
  Cloud: I(<path d="M17.5 19a4.5 4.5 0 1 0-1.5-8.75A6 6 0 0 0 4.5 13.5 4 4 0 0 0 6 21h11.5z" />),
  Sun: I(<>
    <circle cx="12" cy="12" r="4" />
    <path d="M12 2v2M12 20v2M4.93 4.93l1.42 1.42M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.42-1.42M17.66 6.34l1.41-1.41" />
  </>),
  Wifi: I(<>
    <path d="M5 12.55a11 11 0 0 1 14 0" />
    <path d="M2 8.82a15 15 0 0 1 20 0" />
    <path d="M8.5 16.43a6 6 0 0 1 7 0" />
    <circle cx="12" cy="20" r="0.8" fill="currentColor" />
  </>),
  Power: I(<><path d="M12 2v10" /><path d="M18.36 6.64a9 9 0 1 1-12.73 0" /></>),
  AlertTriangle: I(<>
    <path d="M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z" />
    <path d="M12 9v4M12 17h.01" />
  </>),
  Image: I(<>
    <rect x="3" y="3" width="18" height="18" rx="2" />
    <circle cx="8.5" cy="8.5" r="1.5" />
    <path d="m21 15-5-5L5 21" />
  </>),
  Film: I(<>
    <rect x="3" y="3" width="18" height="18" rx="2" />
    <path d="M7 3v18M17 3v18M3 9h18M3 15h18M3 12h18" />
  </>),
  FileText: I(<>
    <path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z" />
    <path d="M14 2v6h6M8 13h8M8 17h8M8 9h2" />
  </>),
  Link: I(<>
    <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" />
  </>),
  Type: I(<>
    <path d="M4 7V4h16v3M9 20h6M12 4v16" />
  </>),
  Linkedin: I(<>
    <path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-4 0v7h-4v-7a6 6 0 0 1 6-6z" />
    <rect x="2" y="9" width="4" height="12" />
    <circle cx="4" cy="4" r="2" />
  </>),
  TrendingUp: I(<>
    <path d="m3 17 6-6 4 4 8-8" />
    <path d="M14 7h7v7" />
  </>),
  Download: I(<>
    <path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" />
    <path d="M7 10l5 5 5-5" />
    <path d="M12 15V3" />
  </>),
  Filter: I(<path d="M22 3H2l8 9.46V19l4 2v-8.54L22 3z" />),
  Globe: I(<>
    <circle cx="12" cy="12" r="9" />
    <path d="M3 12h18M12 3a13 13 0 0 1 0 18 13 13 0 0 1 0-18z" />
  </>),
  Bolt: I(<path d="M13 2 3 14h7l-1 8 10-12h-7l1-8z" fill="currentColor" />),
};

window.Icon = Icon;
