/* ============ Icon set (stroke line icons) ============ */
const ICONS = {
  dashboard:'M3 13h8V3H3v10zm0 8h8v-6H3v6zm10 0h8V11h-8v10zm0-18v6h8V3h-8z',
  orders:'M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2m-6 9h6m-6 4h4',
  track:'M12 2a8 8 0 0 0-8 8c0 5.25 8 12 8 12s8-6.75 8-12a8 8 0 0 0-8-8zm0 11a3 3 0 1 1 0-6 3 3 0 0 1 0 6z',
  finance:'M3 6h18M3 12h18M3 18h18',
  wallet:'M3 7a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7zm14 4h2m-5 0h.01',
  search:'M11 19a8 8 0 1 0 0-16 8 8 0 0 0 0 16zm10 2-4.35-4.35',
  bell:'M18 8a6 6 0 0 0-12 0c0 7-3 9-3 9h18s-3-2-3-9M13.73 21a2 2 0 0 1-3.46 0',
  plus:'M12 5v14M5 12h14',
  arrow:'M5 12h14M13 6l6 6-6 6',
  arrowUp:'M12 19V5M6 11l6-6 6 6',
  arrowDown:'M12 5v14M6 13l6 6 6-6',
  x:'M18 6 6 18M6 6l12 12',
  check:'M20 6 9 17l-5-5',
  doc:'M14 3v4a1 1 0 0 0 1 1h4M14 3H6a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V8M14 3l5 5',
  box:'M21 8 12 3 3 8m18 0v8l-9 5-9-5V8m18 0-9 5m0 0L3 8m9 5v8',
  ship:'M3 17h18l-2 4H5l-2-4zm9-14v6m-6 0h12l1 8H5l1-8zm6-2h-6l-1 2h8l-1-2z',
  anchor:'M12 5a2 2 0 1 0 0-4 2 2 0 0 0 0 4zm0 0v16m0 0a8 8 0 0 0 8-8h-3m-5 8a8 8 0 0 1-8-8h3M8 8h8',
  yard:'M3 21h18M5 21V8l7-5 7 5v13M9 21v-5h6v5',
  download:'M12 3v12m0 0 4-4m-4 4-4-4M5 21h14',
  filter:'M3 5h18M6 12h12M10 19h4',
  clock:'M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20zm0-16v6l4 2',
  pin:'M12 21s7-6.3 7-12a7 7 0 1 0-14 0c0 5.7 7 12 7 12zm0-9a3 3 0 1 0 0-6 3 3 0 0 0 0 6z',
  truck:'M3 6a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v9H3V6zm12 3h4l3 4v2h-7V9zM7 19a2 2 0 1 0 0-4 2 2 0 0 0 0 4zm11 0a2 2 0 1 0 0-4 2 2 0 0 0 0 4z',
  logout:'M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4m7 14 5-5-5-5m5 5H9',
  chevR:'M9 6l6 6-6 6',
  copy:'M9 9h10a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-8a2 2 0 0 1-2-2V11a2 2 0 0 1 2-2zm-4 6H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1',
  globe:'M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20zm-10-10h20M12 2a15 15 0 0 1 0 20 15 15 0 0 1 0-20z',
  trend:'M3 17l6-6 4 4 8-8M21 7v5m0-5h-5',
  spark:'M12 3l2.2 5.5L20 10l-5.8 1.5L12 17l-2.2-5.5L4 10l5.8-1.5L12 3z',
  sparkle:'M12 2 L13.5 9.5 L21 11 L13.5 12.5 L12 20 L10.5 12.5 L3 11 L10.5 9.5 Z',
  home:'M3 10.5 12 3l9 7.5M5 9.5V21h14V9.5M9 21v-6h6v6',
  archive:'M3 7h18v4H3V7zm2 4v10h14V11M9 15h6',
  claims:'M12 9v4m0 4h.01M10.3 3.9 2.4 17a2 2 0 0 0 1.7 3h15.8a2 2 0 0 0 1.7-3L13.7 3.9a2 2 0 0 0-3.4 0z',
  calc:'M5 3h14a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zm2 4h10M8 12h.01M12 12h.01M16 12v5M8 16h.01M12 16h.01',
  pass:'M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4m6 0h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4M9 3v18M14 8l-2 2 2 2',
  admin:'M16 7a4 4 0 1 1-8 0 4 4 0 0 1 8 0zM3 21v-1a6 6 0 0 1 6-6h2m4 4 2 2 4-4',
  settings:'M12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm7.4-3a7.4 7.4 0 0 0-.1-1.4l2-1.6-2-3.4-2.4 1a7 7 0 0 0-2.4-1.4l-.4-2.6H9.5l-.4 2.6a7 7 0 0 0-2.4 1.4l-2.4-1-2 3.4 2 1.6a7.4 7.4 0 0 0 0 2.8l-2 1.6 2 3.4 2.4-1a7 7 0 0 0 2.4 1.4l.4 2.6h4.6l.4-2.6a7 7 0 0 0 2.4-1.4l2.4 1 2-3.4-2-1.6c.1-.5.1-.9.1-1.4z',
  support:'M21 11.5a8.5 8.5 0 0 1-12.3 7.6L3 21l1.9-5.7A8.5 8.5 0 1 1 21 11.5z',
  train:'M8 3h8a3 3 0 0 1 3 3v8a3 3 0 0 1-3 3H8a3 3 0 0 1-3-3V6a3 3 0 0 1 3-3zm-2 14-2 4m12-4 2 4M5 12h14M9 7h6M9 14h.01M15 14h.01',
  login:'M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4m-4-4-4-4 4-4m-4 4h12',
  eye:'M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7-10-7-10-7zm10 3a3 3 0 1 0 0-6 3 3 0 0 0 0 6z',
  eyeoff:'M3 3l18 18M10.6 10.6a3 3 0 0 0 4 4M9.4 5.2A9.6 9.6 0 0 1 12 5c6.5 0 10 7 10 7a17 17 0 0 1-3.3 4M6.6 6.6A17 17 0 0 0 2 12s3.5 7 10 7a9.6 9.6 0 0 0 3-.5',
  lock:'M5 11h14a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-8a1 1 0 0 1 1-1zm2 0V8a5 5 0 0 1 10 0v3',
  columns:'M4 4h16v16H4V4zm6 0v16m4-16v16',
  more:'M12 6h.01M12 12h.01M12 18h.01',
  edit:'M12 20h9M16.5 3.5a2.1 2.1 0 0 1 3 3L7 19l-4 1 1-4 12.5-12.5z',
  trash:'M3 6h18M8 6V4a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v2m2 0v14a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V6',
  refresh:'M3 12a9 9 0 0 1 15-6.7L21 8M21 3v5h-5M21 12a9 9 0 0 1-15 6.7L3 16m0 5v-5h5',
  upload:'M12 16V4m0 0 4 4m-4-4-4 4M5 20h14',
  users:'M16 18v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2M9 8a4 4 0 1 0 0-8 4 4 0 0 0 0 8m13 10v-2a4 4 0 0 0-3-3.9M16 0.1a4 4 0 0 1 0 7.8',
  shield:'M12 2 4 5v6c0 5 3.5 9 8 11 4.5-2 8-6 8-11V5l-8-3zm-2 9 1.5 1.5L15 9',
  send:'M22 2 11 13M22 2l-7 20-4-9-9-4 20-7z',
  paperclip:'M21 11.5 12 20a5 5 0 0 1-7-7l9-9a3.5 3.5 0 0 1 5 5l-9 9a2 2 0 0 1-3-3l8.5-8.5',
  mic:'M12 15a3 3 0 0 0 3-3V6a3 3 0 0 0-6 0v6a3 3 0 0 0 3 3zm-7-3a7 7 0 0 0 14 0M12 19v3',
  info:'M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20zm0-14h.01M11 12h1v5h1',
  star:'M12 3l2.6 6.3 6.4.5-4.9 4.2 1.5 6.3L12 17.3 6.9 20.6l1.5-6.3L3.5 9.8l6.4-.5L12 3z',
  chevD:'M6 9l6 6 6-6',
  chevL:'M15 6l-6 6 6 6',
  flame:'M12 22c4 0 7-2.7 7-7 0-3-2-5.5-3-7-.3 1.7-1.5 2.5-2.5 2.5C13 8 13 5 10 2c.3 3-2 4.5-3.5 6.5C5.3 10.3 5 12 5 13c0 4.3 3 9 7 9z',
  filter2:'M3 5h18M6 12h12M10 19h4',
  calendar:'M5 5h14a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1zM3 9h18M8 3v4M16 3v4',
  bolt:'M13 2 4 14h7l-1 8 9-12h-7l1-8z',
};

function Icon({name, size=20, sw=1.9, fill='none', style, className}){
  const d = ICONS[name];
  const isFill = fill !== 'none';
  return (
    <svg className={className} style={style} width={size} height={size} viewBox="0 0 24 24"
      fill={isFill?'currentColor':'none'} stroke={isFill?'none':'currentColor'}
      strokeWidth={sw} strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">
      <path d={d}/>
    </svg>
  );
}

window.Icon = Icon;
window.ICONS = ICONS;
