/* Icon set — simple stroke SVGs. Usage: <Icon name="scan" /> */
const ICON_PATHS = {
  dashboard: 'M3 3h7v8H3zM14 3h7v5h-7zM14 12h7v9h-7zM3 15h7v6H3z',
  scan: 'M3 7V5a2 2 0 0 1 2-2h2M17 3h2a2 2 0 0 1 2 2v2M21 17v2a2 2 0 0 1-2 2h-2M7 21H5a2 2 0 0 1-2-2v-2M3 12h18',
  inventory: 'M3.3 7 12 12l8.7-5M12 12v9.5M21 16V8a2 2 0 0 0-1-1.7l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.7l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z',
  transfer: 'M7 4 3 8l4 4M3 8h13M17 20l4-4-4-4M21 16H8',
  activity: 'M3 12h4l3 8 4-16 3 8h4',
  add: 'M12 5v14M5 12h14',
  vendors: 'M3 9 4.5 4h15L21 9M3 9v10a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1V9M3 9h18M9 13h6',
  users: 'M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2M9 11a4 4 0 1 0 0-8 4 4 0 0 0 0 8M22 21v-2a4 4 0 0 0-3-3.87M16 3.13A4 4 0 0 1 16 11',
  devices: 'M4 4h16v12H4zM2 20h20M9 8h6M9 12h6',
  settings: 'M12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6M19.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 9 19.4a1.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 4.6 9a1.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.33H9a1.65 1.65 0 0 0 1-1.51V3a2 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.82V9a1.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',
  import: 'M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M7 10l5 5 5-5M12 15V3',
  bell: 'M18 8a6 6 0 0 0-12 0c0 7-3 9-3 9h18s-3-2-3-9M13.7 21a2 2 0 0 1-3.4 0',
  search: 'M11 19a8 8 0 1 0 0-16 8 8 0 0 0 0 16zM21 21l-4.3-4.3',
  sun: 'M12 17a5 5 0 1 0 0-10 5 5 0 0 0 0 10zM12 1v2M12 21v2M4.2 4.2l1.4 1.4M18.4 18.4l1.4 1.4M1 12h2M21 12h2M4.2 19.8l1.4-1.4M18.4 5.6l1.4-1.4',
  moon: 'M21 12.8A9 9 0 1 1 11.2 3a7 7 0 0 0 9.8 9.8z',
  menu: 'M3 12h18M3 6h18M3 18h18',
  chevR: 'M9 18l6-6-6-6',
  chevD: 'M6 9l6 6 6-6',
  chevL: 'M15 18l-6-6 6-6',
  check: 'M20 6 9 17l-5-5',
  checkBig: 'M20 6 9 17l-5-5',
  x: 'M18 6 6 18M6 6l12 12',
  alert: 'M10.3 3.9 1.8 18a2 2 0 0 0 1.7 3h17a2 2 0 0 0 1.7-3L13.7 3.9a2 2 0 0 0-3.4 0zM12 9v4M12 17h.01',
  wifi: 'M5 13a10 10 0 0 1 14 0M8.5 16.5a5 5 0 0 1 7 0M2 8.8a16 16 0 0 1 20 0M12 20h.01',
  wifiOff: 'M2 8.8a16 16 0 0 1 5-3.3M10.7 5.1A16 16 0 0 1 22 8.8M5 13a10 10 0 0 1 3.3-2.2M16.7 11.2A10 10 0 0 1 19 13M8.5 16.5a5 5 0 0 1 4.5-1.4M12 20h.01M2 2l20 20',
  battery: 'M3 8a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2zM23 11v2',
  up: 'M12 19V5M5 12l7-7 7 7',
  down: 'M12 5v14M19 12l-7 7-7-7',
  trendUp: 'M22 7 13.5 15.5l-5-5L2 17M16 7h6v6',
  pin: 'M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0zM12 13a3 3 0 1 0 0-6 3 3 0 0 0 0 6z',
  filter: 'M22 3H2l8 9.5V19l4 2v-8.5z',
  download: 'M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M7 10l5 5 5-5M12 15V3',
  edit: 'M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7M18.5 2.5a2.1 2.1 0 0 1 3 3L12 15l-4 1 1-4z',
  trash: 'M3 6h18M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2M10 11v6M14 11v6',
  eye: 'M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7-10-7-10-7zM12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6z',
  clock: 'M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20zM12 6v6l4 2',
  truck: 'M1 3h15v13H1zM16 8h4l3 3v5h-7M5.5 19a2 2 0 1 0 0-4 2 2 0 0 0 0 4zM18.5 19a2 2 0 1 0 0-4 2 2 0 0 0 0 4z',
  factory: 'M2 20h20M4 20V9l5 4V9l5 4V9l5 4v7M9 20v-4h2v4',
  shield: 'M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10zM9 12l2 2 4-4',
  lock: 'M5 11h14a2 2 0 0 1 2 2v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2zM7 11V7a5 5 0 0 1 10 0v4',
  user: 'M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2M12 11a4 4 0 1 0 0-8 4 4 0 0 0 0 8z',
  more: 'M12 13a1 1 0 1 0 0-2 1 1 0 0 0 0 2zM19 13a1 1 0 1 0 0-2 1 1 0 0 0 0 2zM5 13a1 1 0 1 0 0-2 1 1 0 0 0 0 2z',
  sync: 'M23 4v6h-6M1 20v-6h6M3.5 9a9 9 0 0 1 14.8-3.4L23 10M1 14l4.7 4.4A9 9 0 0 0 20.5 15',
  logout: 'M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4M16 17l5-5-5-5M21 12H9',
  box: 'M21 16V8a2 2 0 0 0-1-1.7l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.7l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z',
  flame: 'M8.5 14.5A4.5 4.5 0 1 0 16 11c0-3-2-4-2-7 0 0-5 2-5 8 0 1 .5 2.5-.5 2.5z',
  droplet: 'M12 22a7 7 0 0 0 7-7c0-2-1-4-7-13C6 11 5 13 5 15a7 7 0 0 0 7 7z',
  check2: 'M9 12l2 2 4-4M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20z',
  refresh: 'M23 4v6h-6M1 20v-6h6M3.5 9a9 9 0 0 1 14.8-3.4L23 10M1 14l4.7 4.4A9 9 0 0 0 20.5 15',
  plusC: 'M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20zM12 8v8M8 12h8',
  qr: 'M3 3h7v7H3zM14 3h7v7h-7zM3 14h7v7H3zM14 14h3v3h-3zM18 18h3v3h-3z',
  bolt: 'M13 2 3 14h7l-1 8 10-12h-7z',
  history: 'M3 3v5h5M3.05 13A9 9 0 1 0 6 5.3L3 8M12 7v5l4 2',
  briefcase: 'M20 7H4a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2zM16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16',
  rupee: 'M6 3h12M6 8h12M16.5 3c0 4-3 5-6.5 5H6l8 10',
  thermo: 'M14 14.8V4a2 2 0 0 0-4 0v10.8a4 4 0 1 0 4 0z',
  gauge: 'M12 14a2 2 0 1 0 0-4 2 2 0 0 0 0 4zM12 14l3-3M3.3 19a10 10 0 1 1 17.4 0',
  grid: 'M3 3h7v7H3zM14 3h7v7h-7zM14 14h7v7h-7zM3 14h7v7H3z',
  list: 'M8 6h13M8 12h13M8 18h13M3 6h.01M3 12h.01M3 18h.01',
  layers: 'M12 2 2 7l10 5 10-5zM2 17l10 5 10-5M2 12l10 5 10-5',
  phone: 'M5 2h14a2 2 0 0 1 2 2v16a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 18h.01',
  cloud: 'M18 10h-1.3A5 5 0 1 0 7 12M6 16a4 4 0 1 0 0 8h11a4 4 0 0 0 .5-7.97',
  cloudOff: 'M22.6 16.5A3.99 3.99 0 0 0 18 12h-1.3a5 5 0 0 0-1.3-2.6M9 4.4A5 5 0 0 1 16.7 9M6.3 6.3A5 5 0 0 0 7 16h10M2 2l20 20',
  arrowR: 'M5 12h14M12 5l7 7-7 7',
};

function Icon({ name, size, className, style }) {
  const d = ICON_PATHS[name] || ICON_PATHS.box;
  return (
    React.createElement('svg', {
      width: size || 22, height: size || 22, viewBox: '0 0 24 24', fill: 'none',
      stroke: 'currentColor', strokeWidth: 2, strokeLinecap: 'round', strokeLinejoin: 'round',
      className, style, 'aria-hidden': true,
    }, React.createElement('path', { d }))
  );
}

// Cylinder logo glyph (filled)
function CylGlyph({ size = 24, color = 'currentColor' }) {
  return React.createElement('svg', { width: size, height: size, viewBox: '0 0 24 24', fill: 'none', 'aria-hidden': true },
    React.createElement('rect', { x: 10.5, y: 1.5, width: 3, height: 3, rx: 1, fill: color }),
    React.createElement('path', { d: 'M7 7.5C7 6 8 5 9.5 5h5C16 5 17 6 17 7.5V20a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2z', fill: color }),
    React.createElement('rect', { x: 9, y: 9, width: 6, height: 1.6, rx: .8, fill: 'rgba(255,255,255,.45)' })
  );
}

window.Icon = Icon;
window.CylGlyph = CylGlyph;
window.ICON_PATHS = ICON_PATHS;

/* ---- Vehicle icons (side-view silhouettes for the Indian fleet) ---- */
const VEHICLE_SVG = {
  truck:    { paths: [{ d: 'M1 5h12v10H1z' }, { d: 'M13 8h4l4 3v4h-8' }], circles: [[5,17,2],[17,17,2]] },
  tanker:   { paths: [{ d: 'M2 9h11a4 4 0 0 1 4 4v2H2z' }, { d: 'M8 9v6' }, { d: 'M17 11h2l2 2v2h-4' }], circles: [[6,17,2],[15,17,2]] },
  tempo:    { paths: [{ d: 'M3 8h5v6H3z' }, { d: 'M8 7h8v7H8z' }], circles: [[6,17,2],[14,17,2]] },
  pickup:   { paths: [{ d: 'M2 10h17v4H2z' }, { d: 'M2 10V7h5v3' }], circles: [[6,17,2],[15,17,2]] },
  rickshaw: { paths: [{ d: 'M4 15V11a6 6 0 0 1 12 0v4' }, { d: 'M3 15h14' }, { d: 'M10 7v8' }], circles: [[5,17,2],[14,17,2]] },
  bike:     { paths: [{ d: 'M8 16l3-6h4l2 6' }, { d: 'M15 10l3-2' }], circles: [[5,16,3],[18,16,3]] },
  forklift: { paths: [{ d: 'M2 8h6v8H2z' }, { d: 'M12 4v12' }, { d: 'M12 13h6' }, { d: 'M8 9h4' }], circles: [[5,18,2],[10,18,2]] },
  van:      { paths: [{ d: 'M2 6h12v9H2z' }, { d: 'M14 9h3l3 3v3h-6z' }, { d: 'M14 9v6' }], circles: [[6,17,2],[16,17,2]] },
  car:      { paths: [{ d: 'M4 12l2-4h10l3 4' }, { d: 'M2 12h19v3H2z' }], circles: [[6,17,2],[17,17,2]] },
};

function VehicleIcon({ name, type, size, style, className }) {
  const v = VEHICLE_SVG[name || type] || VEHICLE_SVG.truck;
  return React.createElement('svg', {
    width: size || 24, height: size || 24, viewBox: '0 0 24 24', fill: 'none',
    stroke: 'currentColor', strokeWidth: 2, strokeLinecap: 'round', strokeLinejoin: 'round',
    style, className, 'aria-hidden': true,
  },
    v.paths.map((p, i) => React.createElement('path', { key: 'p' + i, d: p.d })),
    (v.circles || []).map((c, i) => React.createElement('circle', { key: 'c' + i, cx: c[0], cy: c[1], r: c[2] }))
  );
}

window.VehicleIcon = VehicleIcon;
window.VEHICLE_SVG = VEHICLE_SVG;
