/* Sanio Hi-Fi · Icon set
 * Lightweight lucide-style line icons. Single component, named by glyph.
 * Stroke = currentColor; size prop scales the svg.
 */

const ICON_PATHS = {
  // navigation & layout
  home:   <><path d="M3 11.5 12 4l9 7.5"/><path d="M5 10v9.5A1.5 1.5 0 0 0 6.5 21H10v-6h4v6h3.5a1.5 1.5 0 0 0 1.5-1.5V10"/></>,
  layers: <><path d="m12 3 9 4.5-9 4.5L3 7.5 12 3Z"/><path d="m3 12 9 4.5L21 12"/><path d="m3 16.5 9 4.5 9-4.5"/></>,
  inbox:  <><path d="M3 12V6a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v6"/><path d="M3 12h5l2 3h4l2-3h5"/><path d="M3 12v6a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-6"/></>,
  pipeline: <><rect x="3" y="4" width="5" height="16" rx="1.5"/><rect x="10" y="4" width="5" height="11" rx="1.5"/><rect x="17" y="4" width="4" height="7" rx="1.5"/></>,
  user:   <><circle cx="12" cy="8" r="4"/><path d="M4 21c.5-4 4-6 8-6s7.5 2 8 6"/></>,
  users:  <><circle cx="9" cy="8" r="3.5"/><path d="M2 20c.4-3.4 3.2-5.5 7-5.5s6.6 2.1 7 5.5"/><circle cx="17.5" cy="9" r="2.5"/><path d="M22 18c-.3-2.3-2-3.7-4.5-3.7"/></>,
  gear:   <><circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.6 1.6 0 0 0 .3 1.8l.1.1a2 2 0 1 1-2.8 2.8l-.1-.1a1.6 1.6 0 0 0-1.8-.3 1.6 1.6 0 0 0-1 1.5V21a2 2 0 1 1-4 0v-.1a1.6 1.6 0 0 0-1-1.5 1.6 1.6 0 0 0-1.8.3l-.1.1a2 2 0 1 1-2.8-2.8l.1-.1a1.6 1.6 0 0 0 .3-1.8 1.6 1.6 0 0 0-1.5-1H3a2 2 0 1 1 0-4h.1a1.6 1.6 0 0 0 1.5-1 1.6 1.6 0 0 0-.3-1.8L4.2 7a2 2 0 1 1 2.8-2.8l.1.1a1.6 1.6 0 0 0 1.8.3H9a1.6 1.6 0 0 0 1-1.5V3a2 2 0 1 1 4 0v.1a1.6 1.6 0 0 0 1 1.5 1.6 1.6 0 0 0 1.8-.3l.1-.1a2 2 0 1 1 2.8 2.8l-.1.1a1.6 1.6 0 0 0-.3 1.8V9a1.6 1.6 0 0 0 1.5 1H21a2 2 0 1 1 0 4h-.1a1.6 1.6 0 0 0-1.5 1Z"/></>,
  cal:    <><rect x="3.5" y="5" width="17" height="15" rx="2"/><path d="M3.5 10h17"/><path d="M8 3v4M16 3v4"/></>,
  mail:   <><rect x="3" y="5" width="18" height="14" rx="2"/><path d="m3.5 6.5 8 6 9-6"/></>,
  doc:    <><path d="M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8z"/><path d="M14 3v5h5"/><path d="M9 13h6M9 17h4"/></>,
  link:   <><path d="M10 14a4 4 0 0 0 5.7 0l3-3a4 4 0 0 0-5.7-5.7L11.5 7"/><path d="M14 10a4 4 0 0 0-5.7 0l-3 3a4 4 0 0 0 5.7 5.7L12.5 17"/></>,
  filter: <><path d="M3 5h18l-7 9v6l-4-2v-4z"/></>,
  search: <><circle cx="11" cy="11" r="6.5"/><path d="m20 20-3.5-3.5"/></>,
  plus:   <><path d="M12 5v14M5 12h14"/></>,
  minus:  <><path d="M5 12h14"/></>,
  x:      <><path d="m6 6 12 12M18 6 6 18"/></>,
  check:  <><path d="m5 12 4.5 4.5L19 7"/></>,
  arrowR: <><path d="M5 12h14M13 6l6 6-6 6"/></>,
  arrowL: <><path d="M19 12H5M11 6l-6 6 6 6"/></>,
  chevR:  <><path d="m9 6 6 6-6 6"/></>,
  chevD:  <><path d="m6 9 6 6 6-6"/></>,
  chevL:  <><path d="m15 6-6 6 6 6"/></>,
  chevU:  <><path d="m6 15 6-6 6 6"/></>,
  more:   <><circle cx="5" cy="12" r="1.4"/><circle cx="12" cy="12" r="1.4"/><circle cx="19" cy="12" r="1.4"/></>,
  moreV:  <><circle cx="12" cy="5" r="1.4"/><circle cx="12" cy="12" r="1.4"/><circle cx="12" cy="19" r="1.4"/></>,
  // form / status
  edit:   <><path d="M14 4 20 10 8.5 21.5H3v-5.5z"/><path d="m13 5 6 6"/></>,
  trash:  <><path d="M4 7h16M9 7V4h6v3M6 7l1.2 12.2A2 2 0 0 0 9.2 21h5.6a2 2 0 0 0 2-1.8L18 7"/></>,
  copy:   <><rect x="8" y="8" width="12" height="12" rx="2"/><path d="M16 8V5a1 1 0 0 0-1-1H5a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h3"/></>,
  bell:   <><path d="M6 9a6 6 0 1 1 12 0c0 4 1.5 5 2 6H4c.5-1 2-2 2-6Z"/><path d="M10 20a2 2 0 0 0 4 0"/></>,
  bolt:   <><path d="m13 3-7 11h6l-2 7 8-12h-6z"/></>,
  pin:    <><path d="M12 2a6 6 0 0 1 6 6c0 4.5-6 13-6 13S6 12.5 6 8a6 6 0 0 1 6-6Z"/><circle cx="12" cy="8.5" r="2.5"/></>,
  phone:  <><path d="M5 4h3l2 5-2.5 1.5a12 12 0 0 0 6 6L15 14l5 2v3a2 2 0 0 1-2 2A16 16 0 0 1 3 6a2 2 0 0 1 2-2Z"/></>,
  mic:    <><rect x="9" y="3" width="6" height="11" rx="3"/><path d="M5 11a7 7 0 0 0 14 0"/><path d="M12 18v3"/></>,
  attach: <><path d="m21 11.5-8.5 8.5a5 5 0 0 1-7-7l8.5-8.5a3.5 3.5 0 1 1 5 5l-8.5 8.5a2 2 0 1 1-3-3l7.5-7.5"/></>,
  upload: <><path d="M12 16V4M7 9l5-5 5 5"/><path d="M5 16v3a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-3"/></>,
  download: <><path d="M12 4v12M7 11l5 5 5-5"/><path d="M5 20h14"/></>,
  send:   <><path d="m4 12 16-8-4 16-4-6-8-2Z"/></>,
  reply:  <><path d="M9 17 4 12l5-5"/><path d="M4 12h10a6 6 0 0 1 6 6"/></>,
  external: <><path d="M14 4h6v6"/><path d="M20 4 10 14"/><path d="M16 14v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V9a1 1 0 0 1 1-1h5"/></>,
  zap:    <><path d="m12 2-6 11h5l-1 9 7-12h-5z"/></>,
  sparkle:<><path d="M12 3v6M12 15v6M3 12h6M15 12h6"/><path d="m5.5 5.5 4 4M14.5 14.5l4 4M5.5 18.5l4-4M14.5 9.5l4-4"/></>,
  map:    <><path d="M9 4 3 6v14l6-2 6 2 6-2V4l-6 2-6-2z"/><path d="M9 4v14M15 6v14"/></>,
  file:   <><path d="M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8z"/><path d="M14 3v5h5"/></>,
  img:    <><rect x="3" y="4" width="18" height="16" rx="2"/><circle cx="9" cy="10" r="2"/><path d="m21 17-5-5L6 21"/></>,
  hash:   <><path d="M4 9h16M4 15h16M10 4l-2 16M16 4l-2 16"/></>,
  flame:  <><path d="M12 3c2 4 5 5 5 9a5 5 0 0 1-10 0c0-2 1-3 2-4 1 2 2 1 2-2 0-1 .5-2 1-3Z"/></>,
  building: <><rect x="4" y="3" width="16" height="18" rx="1.5"/><path d="M8 7h2M14 7h2M8 11h2M14 11h2M8 15h2M14 15h2"/></>,
  wallet: <><rect x="3" y="6" width="18" height="13" rx="2"/><path d="M3 10h18"/><circle cx="16" cy="14" r="1.2"/></>,
  euro:   <><path d="M18 6a7 7 0 1 0 0 12"/><path d="M4 10h10M4 14h10"/></>,
  shield: <><path d="M12 3 4 6v6c0 5 3.5 8 8 9 4.5-1 8-4 8-9V6z"/></>,
  globe:  <><circle cx="12" cy="12" r="9"/><path d="M3 12h18M12 3a13 13 0 0 1 0 18M12 3a13 13 0 0 0 0 18"/></>,
  clock:  <><circle cx="12" cy="12" r="9"/><path d="M12 7v5l3 2"/></>,
  star:   <><path d="m12 3 2.7 5.7 6.3.9-4.5 4.4 1 6.2L12 17.3l-5.5 2.9 1-6.2L3 9.6l6.3-.9z"/></>,
  list:   <><path d="M4 6h16M4 12h16M4 18h16"/></>,
  grid:   <><rect x="4" y="4" width="7" height="7" rx="1"/><rect x="13" y="4" width="7" height="7" rx="1"/><rect x="4" y="13" width="7" height="7" rx="1"/><rect x="13" y="13" width="7" height="7" rx="1"/></>,
  drag:   <><circle cx="9" cy="6" r="1.3"/><circle cx="15" cy="6" r="1.3"/><circle cx="9" cy="12" r="1.3"/><circle cx="15" cy="12" r="1.3"/><circle cx="9" cy="18" r="1.3"/><circle cx="15" cy="18" r="1.3"/></>,
  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-1V8M10 12h4"/></>,
  reply2: <><path d="m8 16-5-5 5-5"/><path d="M3 11h11a7 7 0 0 1 7 7v2"/></>,
  forward:<><path d="m16 16 5-5-5-5"/><path d="M21 11H10a7 7 0 0 0-7 7v2"/></>,
  print:  <><path d="M6 9V3h12v6"/><rect x="4" y="9" width="16" height="8" rx="1"/><path d="M6 17v4h12v-4"/></>,
  star2:  <><path d="m12 3 2.7 5.7 6.3.9-4.5 4.4 1 6.2L12 17.3l-5.5 2.9 1-6.2L3 9.6l6.3-.9z"/></>,
  bolt2:  <><path d="M11 2 4 14h6l-1 8 8-12h-6z"/></>,
  signal: <><path d="M2 18h2v-3H2zM7 18h2v-7H7zM12 18h2V8h-2zM17 18h2V4h-2z"/></>,
  wifi:   <><path d="M2 9a15 15 0 0 1 20 0"/><path d="M5 12.5a10 10 0 0 1 14 0"/><path d="M8.5 16a5 5 0 0 1 7 0"/><circle cx="12" cy="19" r="1"/></>,
  battery:<><rect x="2" y="7" width="18" height="10" rx="2"/><path d="M22 11v2"/><rect x="4" y="9" width="14" height="6" rx="1" fill="currentColor" stroke="none"/></>,
};

function Icon({ name, size = 16, strokeWidth = 1.6, className = '', style }) {
  const path = ICON_PATHS[name];
  if (!path) return null;
  return (
    <svg
      xmlns="http://www.w3.org/2000/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, display: 'inline-block', verticalAlign: 'middle', ...style }}
    >
      {path}
    </svg>
  );
}

window.Icon = Icon;
