// Icon set — supports outline, filled, duotone via `variant` prop
// Each icon returns an SVG at 24x24

const Icon = ({ name, size = 22, variant = 'outline', color, style = {} }) => {
  const c = color || 'currentColor';
  const paths = ICONS[name];
  if (!paths) return null;
  // Use dedicated filled paths when available, otherwise fall back to main
  const useFilled = variant === 'filled' && paths.filled;
  const drawPaths = useFilled ? paths.filled : paths.main;
  const sw = variant === 'filled' ? 0 : 1.8;
  const fill = variant === 'filled' ? c : 'none';
  const common = { stroke: variant === 'filled' ? 'none' : c, strokeWidth: sw, fill, strokeLinecap: 'round', strokeLinejoin: 'round' };
  return (
    <svg width={size} height={size} viewBox="0 0 24 24" style={style} {...(variant === 'filled' ? { fill: c } : {})}>
      {variant === 'duotone' && paths.duo && <path d={paths.duo} fill={c} opacity="0.22" />}
      {drawPaths.map((d, i) => <path key={i} d={d} {...common} />)}
    </svg>
  );
};

const ICONS = {
  home: {
    main: ['M3 11l9-8 9 8v10a1 1 0 01-1 1h-5v-7h-6v7H4a1 1 0 01-1-1z'],
    filled: ['M3 11l9-8 9 8v10a1 1 0 01-1 1h-5v-7h-6v7H4a1 1 0 01-1-1z'],
    duo: 'M3 11l9-8 9 8v10a1 1 0 01-1 1h-5v-7h-6v7H4a1 1 0 01-1-1z',
  },
  map: {
    main: ['M9 3L3 5v16l6-2 6 2 6-2V3l-6 2-6-2z', 'M9 3v16', 'M15 5v16'],
    filled: ['M3 5l6-2 6 2 6-2v16l-6 2-6-2-6 2z'],
    duo: 'M9 3L3 5v16l6-2 6 2 6-2V3l-6 2-6-2z',
  },
  list: {
    main: ['M4 6h16', 'M4 12h16', 'M4 18h10'],
  },
  grid: {
    main: ['M3 3h8v8H3z', 'M13 3h8v8h-8z', 'M3 13h8v8H3z', 'M13 13h8v8h-8z'],
    filled: ['M3 3h8v8H3z', 'M13 3h8v8h-8z', 'M3 13h8v8H3z', 'M13 13h8v8h-8z'],
    duo: 'M3 3h8v8H3zM13 13h8v8h-8z',
  },
  calendar: {
    main: ['M4 6a2 2 0 012-2h12a2 2 0 012 2v14a2 2 0 01-2 2H6a2 2 0 01-2-2z', 'M4 10h16', 'M8 2v4', 'M16 2v4'],
    filled: ['M6 2a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V4a2 2 0 00-2-2H6z'],
    duo: 'M4 10h16V20a2 2 0 01-2 2H6a2 2 0 01-2-2z',
  },
  settings: {
    main: ['M12 15a3 3 0 100-6 3 3 0 000 6z', 'M19.4 15a1.7 1.7 0 00.3 1.8l.1.1a2 2 0 11-2.8 2.8l-.1-.1a1.7 1.7 0 00-1.8-.3 1.7 1.7 0 00-1 1.5V21a2 2 0 01-4 0v-.1a1.7 1.7 0 00-1-1.5 1.7 1.7 0 00-1.8.3l-.1.1a2 2 0 01-2.8-2.8l.1-.1a1.7 1.7 0 00.3-1.8 1.7 1.7 0 00-1.5-1H3a2 2 0 010-4h.1a1.7 1.7 0 001.5-1 1.7 1.7 0 00-.3-1.8l-.1-.1a2 2 0 112.8-2.8l.1.1a1.7 1.7 0 001.8.3H9a1.7 1.7 0 001-1.5V3a2 2 0 014 0v.1a1.7 1.7 0 001 1.5 1.7 1.7 0 001.8-.3l.1-.1a2 2 0 112.8 2.8l-.1.1a1.7 1.7 0 00-.3 1.8V9a1.7 1.7 0 001.5 1H21a2 2 0 010 4h-.1a1.7 1.7 0 00-1.5 1z'],
  },
  moreHoriz: {
    main: ['M5 12a2 2 0 100-4 2 2 0 000 4z', 'M12 12a2 2 0 100-4 2 2 0 000 4z', 'M19 12a2 2 0 100-4 2 2 0 000 4z'],
    filled: ['M5 12a2 2 0 100-4 2 2 0 000 4z', 'M12 12a2 2 0 100-4 2 2 0 000 4z', 'M19 12a2 2 0 100-4 2 2 0 000 4z'],
  },
  bulb: {
    main: ['M9 18h6', 'M10 22h4', 'M12 2a7 7 0 00-4 12.7c.8.6 1.2 1.5 1.2 2.5V18h5.6v-.8c0-1 .4-1.9 1.2-2.5A7 7 0 0012 2z'],
    duo: 'M12 2a7 7 0 00-4 12.7c.8.6 1.2 1.5 1.2 2.5V18h5.6v-.8c0-1 .4-1.9 1.2-2.5A7 7 0 0012 2z',
  },
  plug: {
    main: ['M9 2v4', 'M15 2v4', 'M7 6h10v4a5 5 0 01-10 0V6z', 'M12 15v7'],
  },
  thermo: {
    main: ['M14 14.8V4a2 2 0 10-4 0v10.8a4 4 0 104 0z'],
    duo: 'M14 14.8V4a2 2 0 10-4 0v10.8a4 4 0 104 0z',
  },
  camera: {
    main: ['M4 7h4l2-3h4l2 3h4a2 2 0 012 2v10a2 2 0 01-2 2H4a2 2 0 01-2-2V9a2 2 0 012-2z', 'M12 17a4 4 0 100-8 4 4 0 000 8z'],
  },
  lock: {
    main: ['M5 11h14v10H5z', 'M8 11V7a4 4 0 018 0v4'],
    duo: 'M5 11h14v10H5z',
  },
  sparkle: {
    main: ['M12 3l2 5 5 2-5 2-2 5-2-5-5-2 5-2z'],
    duo: 'M12 3l2 5 5 2-5 2-2 5-2-5-5-2 5-2z',
  },
  users: {
    main: ['M17 21v-2a4 4 0 00-4-4H7a4 4 0 00-4 4v2', 'M9 11a4 4 0 100-8 4 4 0 000 8z', 'M23 21v-2a4 4 0 00-3-3.87', 'M17 3.13a4 4 0 010 7.75'],
  },
  bell: {
    main: ['M6 8a6 6 0 1112 0c0 7 3 9 3 9H3s3-2 3-9', 'M10 21a2 2 0 004 0'],
    filled: ['M6 8a6 6 0 1112 0c0 7 3 9 3 9H3s3-2 3-9z', 'M10 21a2 2 0 004 0'],
    duo: 'M6 8a6 6 0 1112 0c0 7 3 9 3 9H3s3-2 3-9z',
  },
  plus: { main: ['M12 5v14', 'M5 12h14'] },
  check: { main: ['M20 6L9 17l-5-5'] },
  chevronR: { main: ['M9 6l6 6-6 6'] },
  chevronLeft: { main: ['M15 6l-6 6 6 6'] },
  chevronRight: { main: ['M9 6l6 6-6 6'] },
  chevronD: { main: ['M6 9l6 6 6-6'] },
  close: { main: ['M6 6l12 12', 'M6 18L18 6'] },
  x: { main: ['M6 6l12 12', 'M6 18L18 6'] },
  search: { main: ['M11 19a8 8 0 100-16 8 8 0 000 16z', 'M21 21l-4.3-4.3'] },
  mic: { main: ['M12 2a3 3 0 00-3 3v7a3 3 0 006 0V5a3 3 0 00-3-3z', 'M19 10a7 7 0 01-14 0', 'M12 19v3', 'M8 22h8'] },
  wifi: { main: ['M5 12.55a11 11 0 0114 0', 'M1.42 9a16 16 0 0121.16 0', 'M8.53 16.11a6 6 0 016.95 0', 'M12 20h.01'] },
  cloud: { main: ['M7 18a4 4 0 010-8 5.5 5.5 0 0110.6-1.4A4.5 4.5 0 1118 18H7z'], duo: 'M7 18a4 4 0 010-8 5.5 5.5 0 0110.6-1.4A4.5 4.5 0 1118 18H7z' },
  trash: { main: ['M3 6h18', 'M8 6V4a2 2 0 012-2h4a2 2 0 012 2v2', 'M19 6l-1 14a2 2 0 01-2 2H8a2 2 0 01-2-2L5 6'] },
  edit: { main: ['M17 3a2.83 2.83 0 114 4L7.5 20.5 2 22l1.5-5.5L17 3z'] },
  moon: { main: ['M21 12.8A9 9 0 1111.2 3a7 7 0 009.8 9.8z'], duo: 'M21 12.8A9 9 0 1111.2 3a7 7 0 009.8 9.8z' },
  sun: { main: ['M12 4v2', 'M12 18v2', 'M4.93 4.93l1.41 1.41', 'M17.66 17.66l1.41 1.41', 'M2 12h2', 'M20 12h2', 'M6.34 17.66l-1.41 1.41', 'M19.07 4.93l-1.41 1.41', 'M12 8a4 4 0 100 8 4 4 0 000-8z'] },
  music: { main: ['M9 18V5l12-2v13', 'M9 18a3 3 0 100-6 3 3 0 000 6z', 'M21 16a3 3 0 100-6 3 3 0 000 6z'] },
  cart: { main: ['M6 6h15l-2 9H8z', 'M6 6L5 3H2', 'M9 20a1 1 0 100-2 1 1 0 000 2z', 'M18 20a1 1 0 100-2 1 1 0 000 2z'] },
  note: { main: ['M14 3H6a2 2 0 00-2 2v14a2 2 0 002 2h12a2 2 0 002-2V9z', 'M14 3v6h6'] },
  trash2: { main: ['M4 7h16', 'M10 11v6', 'M14 11v6', 'M6 7l1 13a2 2 0 002 2h6a2 2 0 002-2l1-13', 'M9 7V4h6v3'] },
  pin: { main: ['M12 22s-7-7.5-7-13a7 7 0 1114 0c0 5.5-7 13-7 13z', 'M12 11a2 2 0 100-4 2 2 0 000 4z'], duo: 'M12 22s-7-7.5-7-13a7 7 0 1114 0c0 5.5-7 13-7 13z' },
  route: { main: ['M6 19a3 3 0 100-6 3 3 0 000 6z', 'M18 11a3 3 0 100-6 3 3 0 000 6z', 'M9 8h7a3 3 0 013 3v0a3 3 0 01-3 3H8a3 3 0 00-3 3v0a3 3 0 003 3h8'] },
  cycle: { main: ['M3 12a9 9 0 019-9 9 9 0 016.7 3', 'M21 3v5h-5', 'M21 12a9 9 0 01-9 9 9 9 0 01-6.7-3', 'M3 21v-5h5'] },
  bolt: { main: ['M13 2L3 14h8l-1 8 10-12h-8z'], duo: 'M13 2L3 14h8l-1 8 10-12h-8z' },
  wave: { main: ['M3 12c2-3 4-3 6 0s4 3 6 0 4-3 6 0'] },
  leaf: { main: ['M4 20c12 0 16-8 16-16-8 0-16 4-16 16z', 'M4 20l8-8'] },
  play: { main: ['M6 4l14 8-14 8V4z'] },
  dots: { main: ['M5 12h.01', 'M12 12h.01', 'M19 12h.01'] },
  filter: { main: ['M3 4h18l-7 9v7l-4-2v-5z'] },
  droplet: { main: ['M12 2s6 7 6 12a6 6 0 11-12 0c0-5 6-12 6-12z'], duo: 'M12 2s6 7 6 12a6 6 0 11-12 0c0-5 6-12 6-12z' },
  send: { main: ['M22 2L11 13', 'M22 2l-7 20-4-9-9-4z'] },
  chart: { main: ['M3 3v18h18', 'M7 14l3-3 3 3 5-6'] },
  shield: { main: ['M12 2l8 4v6c0 5-3.5 9-8 10-4.5-1-8-5-8-10V6z'], duo: 'M12 2l8 4v6c0 5-3.5 9-8 10-4.5-1-8-5-8-10V6z' },
  cal2: { main: ['M4 6a2 2 0 012-2h12a2 2 0 012 2v14a2 2 0 01-2 2H6a2 2 0 01-2-2z', 'M8 2v4', 'M16 2v4', 'M4 10h16'] },
};

window.Icon = Icon;
