/* global React */
// Minimal icon set as React components (inline SVG, currentColor strokes)
const { createElement: h } = React;

const mkIcon = (paths) => (props = {}) => h('svg', {
  width: props.size || 18,
  height: props.size || 18,
  viewBox: '0 0 24 24',
  fill: 'none',
  stroke: 'currentColor',
  strokeWidth: props.strokeWidth || 2,
  strokeLinecap: 'round',
  strokeLinejoin: 'round',
  style: props.style,
  className: props.className,
}, paths.map((d, i) => h('path', { key: i, d })));

const mkIconRaw = (children) => (props = {}) => h('svg', {
  width: props.size || 18,
  height: props.size || 18,
  viewBox: '0 0 24 24',
  fill: 'none',
  stroke: 'currentColor',
  strokeWidth: props.strokeWidth || 2,
  strokeLinecap: 'round',
  strokeLinejoin: 'round',
  style: props.style,
  className: props.className,
  dangerouslySetInnerHTML: { __html: children },
});

const Icons = {
  Home: mkIcon(['M3 12l9-9 9 9', 'M5 10v10a1 1 0 001 1h3v-6h6v6h3a1 1 0 001-1V10']),
  Calendar: mkIcon(['M8 2v4', 'M16 2v4', 'M3 10h18', 'M21 6H3v14a1 1 0 001 1h16a1 1 0 001-1V6z']),
  Users: mkIcon(['M17 21v-2a4 4 0 00-4-4H5a4 4 0 00-4 4v2', 'M13 7a4 4 0 11-8 0 4 4 0 018 0z', 'M23 21v-2a4 4 0 00-3-3.87', 'M16 3.13a4 4 0 010 7.75']),
  User: mkIcon(['M20 21v-2a4 4 0 00-4-4H8a4 4 0 00-4 4v2', 'M16 7a4 4 0 11-8 0 4 4 0 018 0z']),
  Tooth: mkIconRaw('<path d="M7 3c-2 0-3.5 1.5-3.5 3.5 0 1 .3 2 .8 3.5.5 1.5.7 3 .7 4.5 0 2 .3 3.5.8 4.8.4 1 1.2 1.7 2.2 1.7s1.5-.8 1.8-2c.3-1.2.5-2.5.7-3.5.2-.8.6-1.5 1.5-1.5s1.3.7 1.5 1.5c.2 1 .4 2.3.7 3.5.3 1.2.8 2 1.8 2s1.8-.7 2.2-1.7c.5-1.3.8-2.8.8-4.8 0-1.5.2-3 .7-4.5.5-1.5.8-2.5.8-3.5C20.5 4.5 19 3 17 3c-1.2 0-2.2.5-3 1.2-.8.3-1.5.5-2 .5s-1.2-.2-2-.5C9.2 3.5 8.2 3 7 3z"/>'),
  Chart: mkIcon(['M3 3v18h18', 'M8 17l4-4 4 4 5-5']),
  File: mkIcon(['M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8z', 'M14 2v6h6', 'M8 13h8', 'M8 17h5']),
  Pill: mkIconRaw('<rect x="2" y="8" width="20" height="8" rx="4"/><path d="M12 8v8"/>'),
  Image: mkIcon(['M21 19V5a2 2 0 00-2-2H5a2 2 0 00-2 2v14a2 2 0 002 2h14a2 2 0 002-2z', 'M8.5 10a1.5 1.5 0 100-3 1.5 1.5 0 000 3z', 'M21 15l-5-5L5 21']),
  Box: mkIcon(['M21 16V8a2 2 0 00-1-1.73l-7-4a2 2 0 00-2 0l-7 4A2 2 0 003 8v8a2 2 0 001 1.73l7 4a2 2 0 002 0l7-4A2 2 0 0021 16z', 'M3.27 6.96L12 12.01l8.73-5.05', 'M12 22.08V12']),
  DollarSign: mkIcon(['M12 1v22', 'M17 5H9.5a3.5 3.5 0 000 7h5a3.5 3.5 0 010 7H6']),
  BarChart: mkIcon(['M12 20V10', 'M18 20V4', 'M6 20v-4']),
  Bell: mkIcon(['M18 8A6 6 0 006 8c0 7-3 9-3 9h18s-3-2-3-9', 'M13.73 21a2 2 0 01-3.46 0']),
  MessageCircle: mkIcon(['M21 11.5a8.38 8.38 0 01-.9 3.8 8.5 8.5 0 01-7.6 4.7 8.38 8.38 0 01-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 01-.9-3.8 8.5 8.5 0 014.7-7.6 8.38 8.38 0 013.8-.9h.5a8.48 8.48 0 018 8v.5z']),
  Settings: mkIcon(['M12 15a3 3 0 100-6 3 3 0 000 6z', 'M19.4 15a1.65 1.65 0 00.33 1.82l.06.06a2 2 0 01-2.83 2.83l-.06-.06a1.65 1.65 0 00-1.82-.33 1.65 1.65 0 00-1 1.51V21a2 2 0 01-4 0v-.09A1.65 1.65 0 009 19.4a1.65 1.65 0 00-1.82.33l-.06.06a2 2 0 01-2.83-2.83l.06-.06a1.65 1.65 0 00.33-1.82 1.65 1.65 0 00-1.51-1H3a2 2 0 010-4h.09A1.65 1.65 0 004.6 9a1.65 1.65 0 00-.33-1.82l-.06-.06a2 2 0 012.83-2.83l.06.06a1.65 1.65 0 001.82.33H9a1.65 1.65 0 001-1.51V3a2 2 0 014 0v.09a1.65 1.65 0 001 1.51 1.65 1.65 0 001.82-.33l.06-.06a2 2 0 012.83 2.83l-.06.06a1.65 1.65 0 00-.33 1.82V9a1.65 1.65 0 001.51 1H21a2 2 0 010 4h-.09a1.65 1.65 0 00-1.51 1z']),
  Search: mkIcon(['M11 19a8 8 0 100-16 8 8 0 000 16z', 'M21 21l-4.35-4.35']),
  Plus: mkIcon(['M12 5v14', 'M5 12h14']),
  X: mkIcon(['M18 6L6 18', 'M6 6l12 12']),
  Check: mkIcon(['M20 6L9 17l-5-5']),
  ChevronLeft: mkIcon(['M15 18l-6-6 6-6']),
  ChevronRight: mkIcon(['M9 18l6-6-6-6']),
  ChevronDown: mkIcon(['M6 9l6 6 6-6']),
  Trash: mkIcon(['M3 6h18', 'M19 6v14a2 2 0 01-2 2H7a2 2 0 01-2-2V6m3 0V4a2 2 0 012-2h4a2 2 0 012 2v2', 'M10 11v6', 'M14 11v6']),
  Edit: mkIcon(['M11 4H4a2 2 0 00-2 2v14a2 2 0 002 2h14a2 2 0 002-2v-7', 'M18.5 2.5a2.121 2.121 0 013 3L12 15l-4 1 1-4 9.5-9.5z']),
  Download: mkIcon(['M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4', 'M7 10l5 5 5-5', 'M12 15V3']),
  Upload: mkIcon(['M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4', 'M17 8l-5-5-5 5', 'M12 3v12']),
  Phone: mkIcon(['M22 16.92v3a2 2 0 01-2.18 2 19.79 19.79 0 01-8.63-3.07 19.5 19.5 0 01-6-6 19.79 19.79 0 01-3.07-8.67A2 2 0 014.11 2h3a2 2 0 012 1.72c.13.96.37 1.9.72 2.81a2 2 0 01-.45 2.11L8.09 9.91a16 16 0 006 6l1.27-1.27a2 2 0 012.11-.45c.91.35 1.85.59 2.81.72A2 2 0 0122 16.92z']),
  Mail: mkIcon(['M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z', 'M22 6l-10 7L2 6']),
  Clock: mkIcon(['M12 22a10 10 0 100-20 10 10 0 000 20z', 'M12 6v6l4 2']),
  MapPin: mkIcon(['M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0118 0z', 'M12 13a3 3 0 100-6 3 3 0 000 6z']),
  LogOut: mkIcon(['M9 21H5a2 2 0 01-2-2V5a2 2 0 012-2h4', 'M16 17l5-5-5-5', 'M21 12H9']),
  Moon: mkIcon(['M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z']),
  Sun: mkIcon(['M12 17a5 5 0 100-10 5 5 0 000 10z', 'M12 1v2', 'M12 21v2', 'M4.22 4.22l1.42 1.42', 'M18.36 18.36l1.42 1.42', 'M1 12h2', 'M21 12h2', 'M4.22 19.78l1.42-1.42', 'M18.36 5.64l1.42-1.42']),
  Shield: mkIcon(['M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z']),
  CreditCard: mkIcon(['M20 4H4a2 2 0 00-2 2v12a2 2 0 002 2h16a2 2 0 002-2V6a2 2 0 00-2-2z', 'M2 10h20']),
  Heart: mkIcon(['M20.84 4.61a5.5 5.5 0 00-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 00-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 000-7.78z']),
  Activity: mkIcon(['M22 12h-4l-3 9L9 3l-3 9H2']),
  AlertTriangle: mkIcon(['M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z', 'M12 9v4', 'M12 17h.01']),
  Info: mkIcon(['M12 22a10 10 0 100-20 10 10 0 000 20z', 'M12 16v-4', 'M12 8h.01']),
  TrendingUp: mkIcon(['M23 6l-9.5 9.5-5-5L1 18', 'M17 6h6v6']),
  TrendingDown: mkIcon(['M23 18l-9.5-9.5-5 5L1 6', 'M17 18h6v-6']),
  Filter: mkIcon(['M22 3H2l8 9.46V19l4 2v-8.54L22 3z']),
  MoreHorizontal: mkIcon(['M12 13a1 1 0 100-2 1 1 0 000 2z', 'M19 13a1 1 0 100-2 1 1 0 000 2z', 'M5 13a1 1 0 100-2 1 1 0 000 2z']),
  Send: mkIcon(['M22 2L11 13', 'M22 2l-7 20-4-9-9-4 20-7z']),
  Paperclip: mkIcon(['M21.44 11.05l-9.19 9.19a6 6 0 01-8.49-8.49l9.19-9.19a4 4 0 015.66 5.66l-9.2 9.19a2 2 0 01-2.83-2.83l8.49-8.48']),
  Printer: mkIcon(['M6 9V2h12v7', 'M6 18H4a2 2 0 01-2-2v-5a2 2 0 012-2h16a2 2 0 012 2v5a2 2 0 01-2 2h-2', 'M6 14h12v8H6z']),
  Eye: mkIcon(['M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z', 'M12 15a3 3 0 100-6 3 3 0 000 6z']),
  Lock: mkIcon(['M19 11H5a2 2 0 00-2 2v7a2 2 0 002 2h14a2 2 0 002-2v-7a2 2 0 00-2-2z', 'M7 11V7a5 5 0 0110 0v4']),
  Sliders: mkIcon(['M4 21v-7', 'M4 10V3', 'M12 21v-9', 'M12 8V3', 'M20 21v-5', 'M20 12V3', 'M1 14h6', 'M9 8h6', 'M17 16h6']),
  Zap: mkIcon(['M13 2L3 14h9l-1 8 10-12h-9l1-8z']),
  Award: mkIcon(['M12 15a7 7 0 100-14 7 7 0 000 14z', 'M8.21 13.89L7 23l5-3 5 3-1.21-9.12']),
  Star: mkIcon(['M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z']),
  Briefcase: mkIcon(['M20 7H4a2 2 0 00-2 2v11a2 2 0 002 2h16a2 2 0 002-2V9a2 2 0 00-2-2z', 'M16 21V5a2 2 0 00-2-2h-4a2 2 0 00-2 2v16']),
  Folder: mkIcon(['M22 19a2 2 0 01-2 2H4a2 2 0 01-2-2V5a2 2 0 012-2h5l2 3h9a2 2 0 012 2z']),
  Package: mkIcon(['M16.5 9.4l-9-5.19', 'M21 16V8a2 2 0 00-1-1.73l-7-4a2 2 0 00-2 0l-7 4A2 2 0 003 8v8a2 2 0 001 1.73l7 4a2 2 0 002 0l7-4A2 2 0 0021 16z', 'M3.27 6.96L12 12.01l8.73-5.05', 'M12 22.08V12']),
  RefreshCw: mkIcon(['M23 4v6h-6', 'M1 20v-6h6', 'M3.51 9a9 9 0 0114.85-3.36L23 10', 'M20.49 15A9 9 0 015.64 18.36L1 14']),
  Grid: mkIcon(['M3 3h7v7H3z', 'M14 3h7v7h-7z', 'M14 14h7v7h-7z', 'M3 14h7v7H3z']),
  List: mkIcon(['M8 6h13', 'M8 12h13', 'M8 18h13', 'M3 6h.01', 'M3 12h.01', 'M3 18h.01']),
  Camera: mkIcon(['M23 19a2 2 0 01-2 2H3a2 2 0 01-2-2V8a2 2 0 012-2h4l2-3h6l2 3h4a2 2 0 012 2z', 'M12 17a4 4 0 100-8 4 4 0 000 8z']),
  Stethoscope: mkIconRaw('<path d="M4 3h3v5a5 5 0 005 5 5 5 0 005-5V3h3"/><path d="M10 21a2 2 0 100-4 2 2 0 000 4z"/><path d="M10 17v-4"/><path d="M18 8v2a4 4 0 01-4 4"/>'),
  Syringe: mkIconRaw('<path d="M18 2l4 4"/><path d="M16 4l-8 8-4 8 8-4 8-8"/><path d="M12 8l4 4"/>'),
  Database: mkIcon(['M12 7c4.97 0 9-1.34 9-3s-4.03-3-9-3-9 1.34-9 3 4.03 3 9 3z', 'M21 4v6c0 1.66-4.03 3-9 3s-9-1.34-9-3V4', 'M3 10v6c0 1.66 4.03 3 9 3s9-1.34 9-3v-6']),
  ChatBubble: mkIcon(['M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2z']),
  Calculator: mkIcon(['M4 2h16a2 2 0 012 2v16a2 2 0 01-2 2H4a2 2 0 01-2-2V4a2 2 0 012-2z', 'M8 6h8', 'M8 10h.01', 'M12 10h.01', 'M16 10h.01', 'M8 14h.01', 'M12 14h.01', 'M16 14h.01', 'M8 18h.01', 'M12 18h.01', 'M16 18h.01']),
  Building: mkIcon(['M3 21h18', 'M5 21V7l7-4 7 4v14', 'M9 9h.01', 'M15 9h.01', 'M9 13h.01', 'M15 13h.01', 'M9 17h.01', 'M15 17h.01']),
  Mic: mkIcon(['M12 2a3 3 0 00-3 3v7a3 3 0 006 0V5a3 3 0 00-3-3z', 'M19 10v2a7 7 0 01-14 0v-2', 'M12 19v4', 'M8 23h8']),
  Smile: mkIcon(['M12 22a10 10 0 100-20 10 10 0 000 20z', 'M8 14s1.5 2 4 2 4-2 4-2', 'M9 9h.01', 'M15 9h.01']),
  UserPlus: mkIcon(['M16 21v-2a4 4 0 00-4-4H5a4 4 0 00-4 4v2', 'M13 7a4 4 0 11-8 0 4 4 0 018 0z', 'M20 8v6', 'M23 11h-6']),
  LayoutGrid: mkIcon(['M3 3h7v7H3z', 'M14 3h7v7h-7z', 'M14 14h7v7h-7z', 'M3 14h7v7H3z']),
  LogIn: mkIcon(['M15 3h4a2 2 0 012 2v14a2 2 0 01-2 2h-4', 'M10 17l5-5-5-5', 'M15 12H3']),
};

window.Icons = Icons;
