// Icon set — stroked SVGs, 1.6 stroke, 24x24 viewBox, currentColor.
// Style: lucide-ish but slightly softer corners, designed for a friendly
// small-business product. Single Icon component, name-keyed.

const HK_ICON_PATHS = {
  // ── core nav ─────────────────────────────────────────────────
  dashboard: <><rect x="3" y="3" width="7.5" height="9" rx="1.6"/><rect x="13.5" y="3" width="7.5" height="5" rx="1.6"/><rect x="3" y="15" width="7.5" height="6" rx="1.6"/><rect x="13.5" y="11" width="7.5" height="10" rx="1.6"/></>,
  ticket: <><path d="M3 9V7a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v2a2 2 0 0 0 0 4v2a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-2a2 2 0 0 0 0-4z"/><path d="M10 6v12" strokeDasharray="1.5 2.4"/></>,
  chat: <><path d="M4 6.5A2.5 2.5 0 0 1 6.5 4h11A2.5 2.5 0 0 1 20 6.5v8A2.5 2.5 0 0 1 17.5 17H13l-4 3.5V17H6.5A2.5 2.5 0 0 1 4 14.5z"/></>,
  ai: <><circle cx="12" cy="12" r="7.5"/><circle cx="9.5" cy="10.5" r="0.9" fill="currentColor" stroke="none"/><circle cx="14.5" cy="10.5" r="0.9" fill="currentColor" stroke="none"/><path d="M9.5 14.5c1 1 2 1.4 2.5 1.4s1.5-.4 2.5-1.4"/><path d="M12 4.5V3M5.4 6.5l-1-1M18.6 6.5l1-1"/></>,
  report: <><path d="M6 3.5h9l4 4V19a1.5 1.5 0 0 1-1.5 1.5h-11A1.5 1.5 0 0 1 5 19V5a1.5 1.5 0 0 1 1.5-1.5z"/><path d="M14.5 3.5v4h4"/><path d="M8.5 12v5M11.5 10v7M14.5 13.5v3.5"/></>,
  store: <><path d="M4 8.5 5 5.5h14l1 3"/><path d="M4 8.5h16v9.5a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 4 18z"/><path d="M9 12.5h6"/></>,
  calc: <><rect x="5" y="3" width="14" height="18" rx="2"/><rect x="7.5" y="5.5" width="9" height="3" rx="0.5"/><circle cx="9" cy="12" r="0.6" fill="currentColor" stroke="none"/><circle cx="12" cy="12" r="0.6" fill="currentColor" stroke="none"/><circle cx="15" cy="12" r="0.6" fill="currentColor" stroke="none"/><circle cx="9" cy="15" r="0.6" fill="currentColor" stroke="none"/><circle cx="12" cy="15" r="0.6" fill="currentColor" stroke="none"/><circle cx="15" cy="15" r="0.6" fill="currentColor" stroke="none"/><circle cx="9" cy="18" r="0.6" fill="currentColor" stroke="none"/><path d="M11.5 17.5h4" /></>,
  referral: <><circle cx="8" cy="9" r="3"/><circle cx="16" cy="9" r="3"/><path d="M3 19c1.5-3 3.5-4.5 5-4.5s3.5 1.5 5 4.5"/><path d="M11 19c1.5-3 3.5-4.5 5-4.5s3.5 1.5 5 4.5"/></>,
  account: <><circle cx="12" cy="8.5" r="3.5"/><path d="M4.5 19.5C6 16 9 14.5 12 14.5s6 1.5 7.5 5"/></>,

  // ── services ────────────────────────────────────────────────
  site:   <><rect x="3" y="4.5" width="18" height="15" rx="2"/><path d="M3 9h18"/><circle cx="6" cy="7" r="0.7" fill="currentColor" stroke="none"/><circle cx="8.2" cy="7" r="0.7" fill="currentColor" stroke="none"/></>,
  seo:    <><circle cx="10.5" cy="10.5" r="6"/><path d="M15 15l5 5"/></>,
  smm:    <><circle cx="6.5" cy="7" r="2.4"/><circle cx="17" cy="9" r="2"/><circle cx="12" cy="17" r="2.4"/><path d="M8.5 8 14.6 9 M 8 9 L 11 15 M 15.2 11 L 13 15"/></>,
  ads:    <><path d="M4 8.5 16 4v14L4 13.5z"/><path d="M4 8.5v5"/><path d="M17.5 7.5 19 7M17.5 11h2M17.5 14.5l1.5.5"/></>,
  auto:   <><circle cx="12" cy="12" r="3"/><path d="M12 5v2M12 17v2M5 12h2M17 12h2M7.05 7.05l1.4 1.4M15.55 15.55l1.4 1.4M7.05 16.95l1.4-1.4M15.55 8.45l1.4-1.4"/></>,
  design: <><path d="M4 19 16 5l3.5 3.5L8 21z"/><path d="M14 5l3.5 3.5"/><circle cx="6" cy="19.5" r="1.5"/></>,
  dev:    <><path d="M9 7 4 12l5 5M15 7l5 5-5 5M13 4l-2 16"/></>,
  content:<><rect x="5" y="3.5" width="14" height="17" rx="1.5"/><path d="M8 8h8M8 11h8M8 14h5"/></>,
  hosting:<><rect x="3" y="5" width="18" height="5" rx="1.2"/><rect x="3" y="13" width="18" height="5" rx="1.2"/><circle cx="6" cy="7.5" r="0.8" fill="currentColor" stroke="none"/><circle cx="6" cy="15.5" r="0.8" fill="currentColor" stroke="none"/></>,

  // ── ui glyphs ───────────────────────────────────────────────
  search:  <><circle cx="10.5" cy="10.5" r="5.5"/><path d="M14.5 14.5L19 19"/></>,
  bell:    <><path d="M6 16V11a6 6 0 0 1 12 0v5l1.5 2H4.5z"/><path d="M10 19a2 2 0 0 0 4 0"/></>,
  plus:    <><path d="M12 5v14M5 12h14"/></>,
  minus:   <><path d="M5 12h14"/></>,
  chev:    <><path d="M8 10l4 4 4-4"/></>,
  chevR:   <><path d="M10 8l4 4-4 4"/></>,
  chevL:   <><path d="M14 8l-4 4 4 4"/></>,
  chevUp:  <><path d="M8 14l4-4 4 4"/></>,
  close:   <><path d="M6 6l12 12M18 6 6 18"/></>,
  arrow:   <><path d="M4 12h16M14 6l6 6-6 6"/></>,
  arrowUp: <><path d="M12 19V5M6 11l6-6 6 6"/></>,
  arrowDn: <><path d="M12 5v14M6 13l6 6 6-6"/></>,
  check:   <><path d="M5 12.5 10 17 19 7.5"/></>,
  dot3:    <><circle cx="6" cy="12" r="1.4" fill="currentColor" stroke="none"/><circle cx="12" cy="12" r="1.4" fill="currentColor" stroke="none"/><circle cx="18" cy="12" r="1.4" fill="currentColor" stroke="none"/></>,
  filter:  <><path d="M4 5h16M7 11h10M10 17h4"/></>,
  upload:  <><path d="M4 16v2.5A1.5 1.5 0 0 0 5.5 20h13a1.5 1.5 0 0 0 1.5-1.5V16"/><path d="M12 4v12M7 9l5-5 5 5"/></>,
  download:<><path d="M4 16v2.5A1.5 1.5 0 0 0 5.5 20h13a1.5 1.5 0 0 0 1.5-1.5V16"/><path d="M12 16V4M7 11l5 5 5-5"/></>,
  send:    <><path d="M4 12 21 4l-3 17-4-7-3 3v-4z"/></>,
  paperclip:<><path d="M19 11.5 12 18.5a4 4 0 0 1-5.5-5.5l8-8a2.5 2.5 0 0 1 3.5 3.5L10 16.5a1 1 0 0 1-1.5-1.5l6-6"/></>,
  globe:   <><circle cx="12" cy="12" r="8"/><path d="M4 12h16M12 4c2.5 2.5 4 5.5 4 8s-1.5 5.5-4 8c-2.5-2.5-4-5.5-4-8s1.5-5.5 4-8z"/></>,
  star:    <><path d="m12 4 2.5 5.2 5.5.8-4 3.9.9 5.6L12 16.8 7.1 19.5 8 13.9l-4-3.9 5.5-.8z"/></>,
  link:    <><path d="M10 14a3.5 3.5 0 0 0 5 0l3-3a3.5 3.5 0 0 0-5-5l-1 1"/><path d="M14 10a3.5 3.5 0 0 0-5 0l-3 3a3.5 3.5 0 0 0 5 5l1-1"/></>,
  external:<><path d="M10 6H6a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-4"/><path d="M14 4h6v6M20 4l-9 9"/></>,
  logout:  <><path d="M9 3.5H6A2 2 0 0 0 4 5.5v13A2 2 0 0 0 6 20.5h3"/><path d="M16 8l4 4-4 4M20 12H9"/></>,
  sun:     <><circle cx="12" cy="12" r="4.5"/><path d="M12 3v2M12 19v2M4.2 4.2l1.4 1.4M18.4 18.4l1.4 1.4M3 12h2M19 12h2M4.2 19.8l1.4-1.4M18.4 5.6l1.4-1.4"/></>,
  moon:    <><path d="M20 14.5A8 8 0 1 1 9.5 4a6.5 6.5 0 0 0 10.5 10.5z"/></>,
  menu:    <><path d="M4 7h16M4 12h16M4 17h10"/></>,
  pulse:   <><path d="M3 12h4l2-7 4 14 2-7h6"/></>,
  team:    <><circle cx="9" cy="9" r="3"/><circle cx="17" cy="10" r="2.4"/><path d="M3 19c0-3 2.5-5 6-5s6 2 6 5"/><path d="M14 14.5c2-.5 4 .5 4.5 3.5"/></>,
  messages:<><path d="M4 7.5A3 3 0 0 1 7 4.5h10A3 3 0 0 1 20 7.5v6A3 3 0 0 1 17 16.5h-4l-4 3.5V16.5H7A3 3 0 0 1 4 13.5z"/><circle cx="9" cy="10.5" r="0.9" fill="currentColor" stroke="none"/><circle cx="12" cy="10.5" r="0.9" fill="currentColor" stroke="none"/><circle cx="15" cy="10.5" r="0.9" fill="currentColor" stroke="none"/></>,
  read:    <><path d="M4 7.5l8 5 8-5M4 7.5v9A1.5 1.5 0 0 0 5.5 18h13a1.5 1.5 0 0 0 1.5-1.5v-9M4 7.5L12 3l8 4.5"/></>,
  spark:   <><circle cx="12" cy="12" r="9"/><circle cx="12" cy="12" r="3"/></>,
  copy:    <><rect x="8" y="8" width="12" height="12" rx="2"/><path d="M4 16V5.5A1.5 1.5 0 0 1 5.5 4H16"/></>,
  info:    <><circle cx="12" cy="12" r="8"/><path d="M12 11v6M12 8.5v.5" strokeLinecap="round"/></>,
  flame:   <><path d="M12 21c3.5 0 6-2.5 6-5.5 0-2.5-1-4-3-6 0 2-1.5 2.5-1.5 2.5-1-3-2.5-5-4.5-7 .5 4-2 5.5-2 9.5C7 18.5 9 21 12 21z"/></>,
  trending:<><path d="M3 17 9 11l4 4 8-8"/><path d="M21 8h-5M21 8v5"/></>,
  trendingDn:<><path d="M3 7 9 13l4-4 8 8"/><path d="M21 16h-5M21 16v-5"/></>,
  hash:    <><path d="M5 9h14M5 15h14M10 4l-2 16M16 4l-2 16"/></>,
  calendar:<><rect x="4" y="5.5" width="16" height="14.5" rx="1.5"/><path d="M4 10h16M8 3.5v4M16 3.5v4"/></>,
  clock:   <><circle cx="12" cy="12" r="8"/><path d="M12 7v5l3.5 2"/></>,
  rocket:  <><path d="M5 19c0-3 2-5 5-5 0 0-1-5 2-9 3 4 2 9 2 9 3 0 5 2 5 5-2 0-5-1-7-3M5 19c0-2-1-3 1-5M19 19c0-2 1-3-1-5"/><circle cx="14" cy="9.5" r="1.2"/></>,
  zap:     <><path d="M12 3 5 14h6l-1 7 7-11h-6z"/></>,
  shield:  <><path d="M12 3.5 5 6v6c0 4 3 7.5 7 9 4-1.5 7-5 7-9V6z"/><path d="m9 12 2.5 2.5L15 11"/></>,
  eye:     <><path d="M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12z"/><circle cx="12" cy="12" r="2.5"/></>,
  pin:     <><path d="M12 22V13M7 13h10M9 4.5h6l-1 8.5h-4z"/></>,
  drag:    <><circle cx="9" cy="6" r="1.2" fill="currentColor" stroke="none"/><circle cx="15" cy="6" r="1.2" fill="currentColor" stroke="none"/><circle cx="9" cy="12" r="1.2" fill="currentColor" stroke="none"/><circle cx="15" cy="12" r="1.2" fill="currentColor" stroke="none"/><circle cx="9" cy="18" r="1.2" fill="currentColor" stroke="none"/><circle cx="15" cy="18" r="1.2" fill="currentColor" stroke="none"/></>,
  trash:   <><path d="M5 6.5h14M9.5 6.5V4.5h5v2M7 6.5l1 13.5h8l1-13.5"/></>,
  sliders: <><path d="M4 7h10M18 7h2M4 17h2M10 17h10"/><circle cx="16" cy="7" r="2"/><circle cx="8" cy="17" r="2"/></>,
  refresh: <><path d="M4 12a8 8 0 0 1 14-5l2-2v6h-6M20 12a8 8 0 0 1-14 5l-2 2v-6h6"/></>,
  bolt:    <><path d="M13 3 4 14h7l-1 7 9-11h-7z"/></>,
  // money
  dollar:  <><path d="M12 4v16M16 7.5c0-1.5-1.5-2.5-4-2.5s-4 1-4 2.5S9 10 12 10.5s4 1.5 4 3-1.5 2.5-4 2.5-4-1-4-2.5"/></>,
  receipt: <><path d="M5 21V4.5L7 5.5L9 4.5L11 5.5L13 4.5L15 5.5L17 4.5L19 5.5V21l-2-1-2 1-2-1-2 1-2-1-2 1z"/><path d="M8 9h8M8 12h8M8 15h5"/></>,
  card:    <><rect x="3" y="6" width="18" height="13" rx="2"/><path d="M3 10h18M7 15h4"/></>,
  channels: { ig: 'instagram', tt: 'tiktok', fb: 'facebook', li: 'linkedin' },
  // socials simplified
  instagram:<><rect x="4" y="4" width="16" height="16" rx="4.5"/><circle cx="12" cy="12" r="3.8"/><circle cx="17" cy="7" r="0.9" fill="currentColor" stroke="none"/></>,
  facebook: <><path d="M14 22V13h3l1-3.5h-4V7c0-1 .5-2 2-2h2V1.5h-3c-3 0-4.5 2-4.5 5v4H6V13h4.5v9z"/></>,
  tiktok:   <><path d="M14 4v9.5a3.5 3.5 0 1 1-3.5-3.5"/><path d="M14 4c.5 2 2 3.5 4.5 4"/></>,
  linkedin: <><rect x="3.5" y="3.5" width="17" height="17" rx="2"/><circle cx="7.5" cy="8.5" r="1.2"/><path d="M7.5 11v6.5M11 11v6.5M11 14c0-2 1.5-3.2 3-3.2s2.5 1 2.5 3.2v3.5"/></>,
  google:   <><circle cx="12" cy="12" r="8"/><path d="M12 9.5h5c0 4-2 6-5 6s-5-2-5-5 2-5 5-5c1.5 0 2.7.5 3.6 1.4"/></>,
  meta:     <><path d="M3 14c0-4 1.5-7 4-7 2 0 3.5 2 5 4s3 4 5 4c1.5 0 3-1.5 3-3.5s-1-3-2.5-3c-1.4 0-2.7 1-4 2.5"/></>,
};

function Icon({ name, size = 18, strokeWidth = 1.6, style, className }) {
  const path = HK_ICON_PATHS[name];
  if (!path) {
    // fallback to a tiny square so missing icons are visible during dev
    return (
      <svg width={size} height={size} viewBox="0 0 24 24" style={style} className={className}>
        <rect x="4" y="4" width="16" height="16" rx="2" fill="none" stroke="currentColor" strokeWidth={strokeWidth}/>
      </svg>
    );
  }
  return (
    <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor"
      strokeWidth={strokeWidth} strokeLinecap="round" strokeLinejoin="round"
      style={{ flexShrink: 0, ...style }} className={className}>
      {path}
    </svg>
  );
}

// HiKit wordmark — combines logo glyph + name. Used in sidebar header and
// signed-out states. The glyph is a stylized "HK" monogram in a rounded
// square with HiKit's signature yellow dot.
function Wordmark({ size = 20, hideText }) {
  return (
    <span style={{ display: 'inline-flex', alignItems: 'center', gap: 9, color: 'var(--ink)' }}>
      <svg width={size + 4} height={size + 4} viewBox="0 0 32 32">
        <rect x="1.5" y="1.5" width="29" height="29" rx="7" fill="var(--ink)" />
        <path d="M9 8.5 V 23.5 M 9 16 H 17.5 M 17.5 8.5 V 23.5" stroke="var(--paper)" strokeWidth="2.4" strokeLinecap="round" fill="none" />
        <circle cx="23.5" cy="9" r="2.4" fill="var(--accent)" />
      </svg>
      {!hideText && <span style={{ fontFamily: 'var(--font-ui)', fontWeight: 600, fontSize: size, letterSpacing: -0.4 }}>HiKit</span>}
    </span>
  );
}

window.Icon = Icon;
window.Wordmark = Wordmark;
