// Lucide-style icon helpers (React function components)
const icon = (paths, opts = {}) => (props = {}) =>
  React.createElement('svg', {
    viewBox: '0 0 24 24', fill: 'none', stroke: 'currentColor',
    strokeWidth: 1.6, strokeLinecap: 'round', strokeLinejoin: 'round',
    ...props
  }, ...(Array.isArray(paths) ? paths : [paths]).map((d, i) =>
    typeof d === 'string'
      ? React.createElement('path', { d, key: i })
      : React.createElement(d.tag, { ...d.attrs, key: i })
  ));

const Icon = {
  home:     icon(['M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z']),
  inbox:    icon(['M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z']),
  send:     icon(['m3 11 19-9-9 19-2-8z']),
  users:    icon([{tag:'circle',attrs:{cx:9,cy:8,r:4}}, 'M1 21a8 8 0 0 1 16 0', 'M21 21a8 8 0 0 0-6-7.7']),
  user:     icon([{tag:'circle',attrs:{cx:12,cy:8,r:4}}, 'M4 21a8 8 0 0 1 16 0']),
  chart:    icon(['M3 3v18h18', 'M7 14l4-4 4 4 5-5']),
  flow:     icon([{tag:'circle',attrs:{cx:6,cy:6,r:3}}, {tag:'circle',attrs:{cx:18,cy:18,r:3}}, {tag:'rect',attrs:{x:14,y:4,width:6,height:4,rx:1}}, 'M9 6h5M9 18h5M12 8v10']),
  settings: icon([{tag:'circle',attrs:{cx:12,cy:12,r:3}}, 'M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 1 1-4 0v-.09a1.65 1.65 0 0 0-1-1.51 1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 1 1 0-4h.09a1.65 1.65 0 0 0 1.51-1 1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06a1.65 1.65 0 0 0 1.82.33h.01a1.65 1.65 0 0 0 1-1.51V3a2 2 0 1 1 4 0v.09a1.65 1.65 0 0 0 1 1.51h.01a1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82v.01a1.65 1.65 0 0 0 1.51 1H21a2 2 0 1 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z']),
  search:   icon([{tag:'circle',attrs:{cx:11,cy:11,r:7}}, 'm21 21-4.3-4.3']),
  plus:     icon(['M12 5v14M5 12h14']),
  bell:     icon(['M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9', 'M13.7 21a2 2 0 0 1-3.4 0']),
  help:     icon([{tag:'circle',attrs:{cx:12,cy:12,r:10}}, 'M9.1 9a3 3 0 0 1 5.8 1c0 2-3 3-3 3', 'M12 17h.01']),
  cmd:      icon(['M18 3a3 3 0 0 0-3 3v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12']),
  more:     icon([{tag:'circle',attrs:{cx:12,cy:12,r:1}}, {tag:'circle',attrs:{cx:19,cy:12,r:1}}, {tag:'circle',attrs:{cx:5,cy:12,r:1}}]),
  filter:   icon(['M22 3H2l8 9.5V19l4 2v-8.5L22 3z']),
  smile:    icon([{tag:'circle',attrs:{cx:12,cy:12,r:10}}, 'M8 14s1.5 2 4 2 4-2 4-2', 'M9 9h.01M15 9h.01']),
  paperclip:icon(['m21.4 11.1-8.5 8.5a5 5 0 0 1-7-7l9.2-9.2a3.3 3.3 0 0 1 4.7 4.7l-9.2 9.2a1.7 1.7 0 0 1-2.3-2.3l8.5-8.5']),
  mic:      icon([{tag:'rect',attrs:{x:9,y:2,width:6,height:12,rx:3}}, 'M5 10a7 7 0 0 0 14 0', 'M12 19v3']),
  image:    icon([{tag:'rect',attrs:{x:3,y:3,width:18,height:18,rx:2}}, {tag:'circle',attrs:{cx:9,cy:9,r:2}}, 'm21 15-5-5L5 21']),
  zap:      icon(['M13 2 3 14h9l-1 8 10-12h-9l1-8z']),
  tag:      icon(['M20.6 13.4 11 3.7A2 2 0 0 0 9.6 3H4a1 1 0 0 0-1 1v5.6a2 2 0 0 0 .6 1.4l9.7 9.7a2 2 0 0 0 2.8 0l4.5-4.5a2 2 0 0 0 0-2.8z', 'M7 7h.01']),
  chevron:  icon(['m9 18 6-6-6-6']),
  chevronDown: icon(['m6 9 6 6 6-6']),
  check:    icon(['M20 6 9 17l-5-5']),
  x:        icon(['M18 6 6 18M6 6l18 18']),
  moon:     icon(['M21 12.8A9 9 0 1 1 11.2 3a7 7 0 0 0 9.8 9.8z']),
  sun:      icon([{tag:'circle',attrs:{cx:12,cy:12,r:4}}, 'M12 3v2M12 19v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M3 12h2M19 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4']),
  file:     icon(['M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z', 'M14 2v6h6']),
  phone:    icon(['M22 16.9v3a2 2 0 0 1-2.2 2 19.8 19.8 0 0 1-8.6-3 19.5 19.5 0 0 1-6-6A19.8 19.8 0 0 1 2.1 4.2 2 2 0 0 1 4.1 2h3a2 2 0 0 1 2 1.7c.1.9.4 1.8.7 2.7a2 2 0 0 1-.5 2.1L8 10a16 16 0 0 0 6 6l1.5-1.5a2 2 0 0 1 2.1-.5c.9.3 1.8.6 2.7.7a2 2 0 0 1 1.7 2z']),
  mail:     icon([{tag:'rect',attrs:{x:2,y:4,width:20,height:16,rx:2}}, 'm2 7 10 6 10-6']),
  calendar: icon([{tag:'rect',attrs:{x:3,y:5,width:18,height:16,rx:2}}, 'M8 3v4M16 3v4M3 11h18']),
  archive:  icon([{tag:'rect',attrs:{x:3,y:3,width:18,height:5,rx:1}}, 'M5 8v11a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8', 'M10 12h4']),
  lock:     icon([{tag:'rect',attrs:{x:4,y:11,width:16,height:10,rx:2}}, 'M8 11V7a4 4 0 1 1 8 0v4']),
  eye:      icon(['M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z', {tag:'circle',attrs:{cx:12,cy:12,r:3}}]),
  code:     icon(['m16 18 6-6-6-6M8 6l-6 6 6 6']),
  dev:      icon(['M16 18l6-6-6-6M8 6l-6 6 6 6']),
  megaphone: icon(['m3 11 18-8v18l-18-8z', 'M11.6 16.8A3 3 0 1 1 8 14']),
  layout:   icon([{tag:'rect',attrs:{x:3,y:3,width:18,height:18,rx:2}}, 'M3 9h18M9 21V9']),
  reply:    icon(['m9 17-5-5 5-5', 'M20 18v-2a4 4 0 0 0-4-4H4']),
  star:     icon(['M12 2l3 7 7 .5-5 5 1.5 7L12 18l-6.5 3.5L7 14l-5-5 7-.5z']),
  lifebuoy: icon([{tag:'circle',attrs:{cx:12,cy:12,r:10}}, {tag:'circle',attrs:{cx:12,cy:12,r:4}}, 'm4.93 4.93 4.24 4.24M14.83 14.83l4.24 4.24M4.93 19.07l4.24-4.24M14.83 9.17l4.24-4.24']),
};

window.Icon = Icon;
