// Inline SVG icon set — monotone, currentColor, stroke 1.75
// All 24x24 viewBox, sized via CSS

const ICON_PATHS = {
  merge:   <><path d="M8 3v5a4 4 0 0 0 4 4h4"/><path d="M8 21v-5a4 4 0 0 1 4-4h4"/><path d="m14 8 2-2-2-2"/><path d="m14 16 2-2-2-2"/></>,
  split:   <><path d="M16 3h5v5"/><path d="M21 3 3 21"/><path d="M8 21H3v-5"/><path d="m15 15 6 6"/></>,
  minify:  <><path d="M4 14h6v6"/><path d="M20 10h-6V4"/><path d="M14 10 21 3"/><path d="M3 21l7-7"/></>,
  doc:     <><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><path d="M14 2v6h6"/><path d="M9 13h6"/><path d="M9 17h4"/></>,
  image:   <><rect x="3" y="3" width="18" height="18" rx="2"/><circle cx="9" cy="9" r="2"/><path d="m21 15-5-5L5 21"/></>,
  edit:    <><path d="M12 20h9"/><path d="M16.5 3.5a2.12 2.12 0 0 1 3 3L7 19l-4 1 1-4z"/></>,
  sign:    <><path d="M20 19c-3-3-5-5-9-5-3 0-6 1.5-9 5"/><path d="M14 5a3 3 0 1 1 4 4l-8 8-4 1 1-4z"/></>,
  rotate:  <><path d="M3 12a9 9 0 0 1 15-6.7L21 8"/><path d="M21 3v5h-5"/><path d="M21 12a9 9 0 0 1-15 6.7L3 16"/><path d="M3 21v-5h5"/></>,
  unlock:  <><rect x="3" y="11" width="18" height="11" rx="2"/><path d="M7 11V7a5 5 0 0 1 9.9-1"/></>,
  lock:    <><rect x="3" y="11" width="18" height="11" rx="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/></>,
  table:   <><rect x="3" y="3" width="18" height="18" rx="2"/><path d="M3 9h18"/><path d="M3 15h18"/><path d="M9 3v18"/><path d="M15 3v18"/></>,
  scan:    <><path d="M3 7V5a2 2 0 0 1 2-2h2"/><path d="M17 3h2a2 2 0 0 1 2 2v2"/><path d="M21 17v2a2 2 0 0 1-2 2h-2"/><path d="M7 21H5a2 2 0 0 1-2-2v-2"/><path d="M3 12h18"/></>,
  bg:      <><rect x="3" y="3" width="18" height="18" rx="2"/><path d="m21 15-5-5L5 21"/><circle cx="9" cy="9" r="1.5"/></>,
  resize:  <><path d="M21 3H3v18h18z"/><path d="M9 3v18"/><path d="M3 9h18"/></>,
  crop:    <><path d="M6 2v14a2 2 0 0 0 2 2h14"/><path d="M18 22V8a2 2 0 0 0-2-2H2"/></>,
  upscale: <><path d="M7 17 17 7"/><path d="M7 7h10v10"/><path d="M3 21h4"/><path d="M3 21v-4"/></>,
  erase:   <><path d="m20 20-7.5-7.5"/><path d="M18 13.3 13.3 18a3 3 0 0 1-4.2 0l-4-4a3 3 0 0 1 0-4.2L14.4 0.7"/><path d="M22 22H5"/></>,
  blur:    <><circle cx="12" cy="12" r="3"/><circle cx="12" cy="12" r="8" strokeDasharray="2 3"/></>,
  smile:   <><circle cx="12" cy="12" r="9"/><path d="M8 14s1.5 2 4 2 4-2 4-2"/><path d="M9 9h.01"/><path d="M15 9h.01"/></>,
  droplet: <><path d="M12 2.7S5 10 5 14.5a7 7 0 0 0 14 0C19 10 12 2.7 12 2.7z"/></>,
  filter:  <><path d="M3 4h18l-7 9v7l-4-2v-5z"/></>,
  pixel:   <><rect x="3" y="3" width="7" height="7"/><rect x="14" y="3" width="7" height="7"/><rect x="3" y="14" width="7" height="7"/><rect x="14" y="14" width="7" height="7"/></>,
  grid:    <><rect x="3" y="3" width="8" height="8" rx="1"/><rect x="13" y="3" width="8" height="8" rx="1"/><rect x="3" y="13" width="8" height="8" rx="1"/><rect x="13" y="13" width="8" height="8" rx="1"/></>,
  swap:    <><path d="M16 3h5v5"/><path d="M8 21H3v-5"/><path d="M21 3l-7 7"/><path d="M3 21l7-7"/><path d="M21 16v5h-5"/><path d="M3 8V3h5"/></>,
  music:   <><path d="M9 18V5l12-2v13"/><circle cx="6" cy="18" r="3"/><circle cx="18" cy="16" r="3"/></>,
  video:   <><path d="m22 8-6 4 6 4V8z"/><rect x="2" y="6" width="14" height="12" rx="2"/></>,
  code:    <><polyline points="16 18 22 12 16 6"/><polyline points="8 6 2 12 8 18"/></>,
  archive: <><rect x="3" y="4" width="18" height="4" rx="1"/><path d="M5 8v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V8"/><path d="M10 12h4"/></>,
  qr:      <><rect x="3" y="3" width="7" height="7"/><rect x="14" y="3" width="7" height="7"/><rect x="3" y="14" width="7" height="7"/><path d="M14 14h3v3h-3z"/><path d="M20 14v3"/><path d="M14 20h3"/><path d="M20 20v1"/></>,
  text:    <><path d="M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2"/><path d="M9 20h6"/><path d="M12 4v16"/></>,
  // nav / ui
  chevron: <><polyline points="6 9 12 15 18 9"/></>,
  search:  <><circle cx="11" cy="11" r="7"/><path d="m21 21-4.35-4.35"/></>,
  sun:     <><circle cx="12" cy="12" r="4"/><path d="M12 2v2"/><path d="M12 20v2"/><path d="m4.93 4.93 1.41 1.41"/><path d="m17.66 17.66 1.41 1.41"/><path d="M2 12h2"/><path d="M20 12h2"/><path d="m4.93 19.07 1.41-1.41"/><path d="m17.66 6.34 1.41-1.41"/></>,
  moon:    <><path d="M21 12.8A9 9 0 1 1 11.2 3a7 7 0 0 0 9.8 9.8z"/></>,
  share:   <><circle cx="18" cy="5" r="3"/><circle cx="6" cy="12" r="3"/><circle cx="18" cy="19" r="3"/><path d="m8.6 13.5 6.8 4"/><path d="m15.4 6.5-6.8 4"/></>,
  arrow:   <><path d="M5 12h14"/><path d="m12 5 7 7-7 7"/></>,
  upload:  <><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="17 8 12 3 7 8"/><path d="M12 3v12"/></>,
  x:       <><path d="M18 6 6 18"/><path d="m6 6 12 12"/></>,
  download:<><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><path d="M12 15V3"/></>,
  check:   <><polyline points="20 6 9 17 4 12"/></>,
  sparkle: <><path d="M12 3v4"/><path d="M12 17v4"/><path d="M3 12h4"/><path d="M17 12h4"/><path d="m5.6 5.6 2.8 2.8"/><path d="m15.6 15.6 2.8 2.8"/><path d="m18.4 5.6-2.8 2.8"/><path d="m8.4 15.6-2.8 2.8"/></>,
  bolt:    <><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"/></>,
  // PDF editor
  cursor:  <><path d="M5 3l6 18 3-8 8-3z"/></>,
  calendar:<><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4"/><path d="M8 2v4"/><path d="M3 10h18"/></>,
  clock:   <><circle cx="12" cy="12" r="9"/><polyline points="12 7 12 12 15 14"/></>,
  square:  <><rect x="4" y="4" width="16" height="16" rx="2"/></>,
  marker:  <><path d="m9 11-6 6v3h3l6-6"/><path d="M22 12 11 23"/><path d="m13 9 4 4"/><path d="m18 5 1.5-1.5a2.12 2.12 0 1 1 3 3L21 8"/></>,
  undo:    <><path d="M9 14 4 9l5-5"/><path d="M4 9h11a5 5 0 0 1 5 5v0a5 5 0 0 1-5 5h-4"/></>,
  // Sports
  run:        <><circle cx="13" cy="4" r="2"/><path d="m6 21 3-6 4-2-3-3 4-4 3 3 4 1"/><path d="m18 21-3-6"/></>,
  heart:      <><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></>,
  map:        <><polygon points="3 6 9 4 15 6 21 4 21 18 15 20 9 18 3 20 3 6"/><line x1="9" y1="4" x2="9" y2="18"/><line x1="15" y1="6" x2="15" y2="20"/></>,
  mountain:   <><path d="m3 20 6-12 4 7 3-5 5 10z"/></>,
  gauge:      <><path d="M12 14a4 4 0 0 0 4-4"/><path d="M12 14 8 6"/><path d="M3.5 13a9 9 0 1 1 17 0"/></>,
  target:     <><circle cx="12" cy="12" r="9"/><circle cx="12" cy="12" r="5"/><circle cx="12" cy="12" r="1.6"/></>,
  ruler:      <><path d="M2 13.5 13.5 2l8.5 8.5L10.5 22z"/><path d="m6 11 2 2"/><path d="m9 8 2 2"/><path d="m12 5 2 2"/><path d="m11 14 2 2"/><path d="m14 11 2 2"/></>,
  stopwatch:  <><circle cx="12" cy="14" r="8"/><path d="M12 10v4l2 2"/><path d="M9 2h6"/><path d="M12 2v4"/></>,
  chart:      <><path d="M3 3v18h18"/><path d="m7 16 4-6 3 3 5-7"/></>,
  bib:        <><rect x="4" y="5" width="16" height="14" rx="2"/><path d="M4 9h16"/><path d="M9 13h6"/><path d="M9 16h4"/></>,
  flag:       <><path d="M4 21V4"/><path d="M4 4h12l-2 4 2 4H4"/></>,
  pin:        <><path d="M12 22s7-7 7-12a7 7 0 1 0-14 0c0 5 7 12 7 12z"/><circle cx="12" cy="10" r="2.5"/></>,
  // Text & developer
  pen:        <><path d="M17 3a2.85 2.85 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z"/><path d="m15 5 4 4"/></>,
  palette:    <><path d="M12 2a10 10 0 0 0 0 20 2 2 0 0 0 2-2c0-.5-.2-1-.5-1.3a2 2 0 0 1 1.5-3.3h2.5a5.5 5.5 0 0 0 5.5-5.5C23 5.3 18 2 12 2z"/><circle cx="8" cy="8" r="1" fill="currentColor"/><circle cx="12" cy="6" r="1" fill="currentColor"/><circle cx="16" cy="9" r="1" fill="currentColor"/><circle cx="8" cy="13" r="1" fill="currentColor"/></>,
  barcode:    <><path d="M3 5v14"/><path d="M6 5v14"/><path d="M8 5v14"/><path d="M11 5v14"/><path d="M14 5v14"/><path d="M17 5v14"/><path d="M19 5v14"/><path d="M21 5v14"/></>,
  type:       <><path d="M4 7V4h16v3"/><path d="M9 20h6"/><path d="M12 4v16"/><path d="M15 20V9h5v2"/></>,
  shadow:     <><rect x="3" y="3" width="14" height="14" rx="2"/><path d="M7 21h12a2 2 0 0 0 2-2V7"/></>,
  bezier:     <><circle cx="4" cy="20" r="2"/><circle cx="20" cy="4" r="2"/><path d="M4 20C4 8 20 16 20 4"/><circle cx="8" cy="8" r="1.5" fill="currentColor"/><circle cx="16" cy="16" r="1.5" fill="currentColor"/><path d="M4 20 8 8" strokeDasharray="3 2"/><path d="M20 4l-4 12" strokeDasharray="3 2"/></>,
  layers:     <><path d="m2 12 10 5 10-5"/><path d="m2 17 10 5 10-5"/><path d="m2 7 10 5 10-5-10-5z"/></>,
};

function Icon({ name, size = 18, strokeWidth = 1.75, className = '', style = {} }) {
  const path = ICON_PATHS[name];
  if (!path) return null;
  return (
    <svg width={size} height={size} viewBox="0 0 24 24" fill="none"
         stroke="currentColor" strokeWidth={strokeWidth}
         strokeLinecap="round" strokeLinejoin="round"
         className={className} style={{ flexShrink: 0, ...style }}>
      {path}
    </svg>
  );
}

window.Icon = Icon;
