/* Inline SVG icon set — lucide-style strokes */
const ICON_PATHS = {
  /* nav */
  "layout-dashboard": "M3 3h7v9H3zM14 3h7v5h-7zM14 12h7v9h-7zM3 16h7v5H3z",
  "building":         "M3 21V7l9-4 9 4v14H3zM9 21v-6h6v6M8 11h.01M12 11h.01M16 11h.01M8 7h.01M12 7h.01M16 7h.01",
  "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 8zM22 21v-2a4 4 0 0 0-3-3.87M16 3.13a4 4 0 0 1 0 7.75",
  "messages":         "M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",
  "kanban":           "M3 3h6v18H3zM10 3h6v12h-6zM17 3h4v8h-4z",
  "calendar":         "M3 5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2zM16 1v4M8 1v4M3 9h18",
  "check-square":     "M9 11l3 3 8-8M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11",
  "library":          "M16 6l4 14M12 6v14M8 8v12M4 4v16",
  "book":             "M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2zM22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z",
  "send":             "M22 2L11 13M22 2l-7 20-4-9-9-4 20-7z",
  "settings":         "M12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM19.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",

  /* generic */
  "search":           "M11 19a8 8 0 1 0 0-16 8 8 0 0 0 0 16zM21 21l-4.35-4.35",
  "command":          "M18 3a3 3 0 0 0-3 3v12a3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3H6a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3V6a3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3h12a3 3 0 0 0 3-3 3 3 0 0 0-3-3z",
  "plus":             "M12 5v14M5 12h14",
  "minus":            "M5 12h14",
  "x":                "M18 6L6 18M6 6l12 12",
  "check":            "M20 6L9 17l-5-5",
  "chevron-right":    "M9 18l6-6-6-6",
  "chevron-left":     "M15 18l-9-6 9-6",
  "chevron-down":     "M6 9l6 6 6-6",
  "chevron-up":       "M18 15l-6-6-6 6",
  "arrow-right":      "M5 12h14M13 5l7 7-7 7",
  "arrow-up-right":   "M7 17L17 7M7 7h10v10",
  "more-horizontal":  "M5 12h.01M12 12h.01M19 12h.01",
  "more-vertical":    "M12 5h.01M12 12h.01M12 19h.01",
  "filter":           "M22 3H2l8 9.46V19l4 2v-8.54z",
  "sliders":          "M4 21v-7M4 10V3M12 21v-9M12 8V3M20 21v-5M20 12V3M1 14h6M9 8h6M17 16h6",
  "sort":             "M3 6h13M3 12h9M3 18h6M17 8v12M21 16l-4 4-4-4",
  "star":             "M12 2l3.09 6.26L22 9.27l-5 4.87L18.18 22 12 18.27 5.82 22 7 14.14l-5-4.87 6.91-1.01z",
  "sparkles":         "M12 3l1.5 4.5L18 9l-4.5 1.5L12 15l-1.5-4.5L6 9l4.5-1.5zM19 14l.83 2.5L22 17.33l-2.17.83L19 20.67l-.83-2.5L16 17.33l2.17-.83zM5 4l.83 2.5L8 7.33l-2.17.83L5 10.67l-.83-2.5L2 7.33l2.17-.83z",
  "zap":              "M13 2L3 14h9l-1 8 10-12h-9z",
  "link":             "M10 13a5 5 0 0 0 7.07 0l3-3a5 5 0 0 0-7.07-7.07l-1.7 1.7M14 11a5 5 0 0 0-7.07 0l-3 3a5 5 0 0 0 7.07 7.07l1.7-1.7",
  "external":         "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6M15 3h6v6M10 14L21 3",
  "globe":            "M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20zM2 12h20M12 2a15 15 0 0 1 4 10 15 15 0 0 1-4 10 15 15 0 0 1-4-10 15 15 0 0 1 4-10z",
  "mail":             "M4 4h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2zM22 6l-10 7L2 6",
  "phone":            "M22 16.92v3a2 2 0 0 1-2.18 2 19.8 19.8 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6A19.8 19.8 0 0 1 2.12 4.18 2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z",
  "linkedin":         "M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-4 0v7h-4v-7a6 6 0 0 1 6-6zM2 9h4v12H2zM4 4a2 2 0 1 0 0 4 2 2 0 0 0 0-4z",
  "message-circle":   "M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8z",
  "whatsapp":         "M3 21l1.65-4.5a8.5 8.5 0 1 1 3 3.5L3 21M8 11.5a3.5 3.5 0 0 0 3.5 3.5L13 13a5.5 5.5 0 0 1-3-3L11.5 8.5A3.5 3.5 0 0 0 8 11.5z",
  "sms":              "M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8z",
  "user":             "M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2M12 11a4 4 0 1 0 0-8 4 4 0 0 0 0 8z",
  "user-plus":        "M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2M8.5 11a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM20 8v6M23 11h-6",
  "user-check":       "M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2M8.5 11a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM17 11l2 2 4-4",
  "clock":            "M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20zM12 6v6l4 2",
  "circle":           "M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20z",
  "circle-dot":       "M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20zM12 14a2 2 0 1 0 0-4 2 2 0 0 0 0 4z",
  "circle-check":     "M22 11.08V12a10 10 0 1 1-5.93-9.14M22 4L12 14.01l-3-3",
  "alert":            "M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0zM12 9v4M12 17h.01",
  "alert-circle":     "M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20zM12 8v4M12 16h.01",
  "trending-up":      "M23 6l-9.5 9.5-5-5L1 18M17 6h6v6",
  "trending-down":    "M23 18l-9.5-9.5-5 5L1 6M17 18h6v-6",
  "target":           "M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20zM12 18a6 6 0 1 0 0-12 6 6 0 0 0 0 12zM12 14a2 2 0 1 0 0-4 2 2 0 0 0 0 4z",
  "flag":             "M4 22V4a1 1 0 0 1 1-1h13l-3 5 3 5H5",
  "tag":              "M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82zM7 7h.01",
  "briefcase":        "M3 7h18v14H3zM8 7V5a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",
  "map-pin":          "M21 10c0 7-9 13-9 13S3 17 3 10a9 9 0 1 1 18 0zM12 12a2 2 0 1 0 0-4 2 2 0 0 0 0 4z",
  "edit":             "M12 20h9M16.5 3.5a2.12 2.12 0 0 1 3 3L7 19l-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",
  "copy":             "M9 9h11v11H9zM5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1",
  "paperclip":        "M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 1 1-2.83-2.83l8.49-8.48",
  "image":            "M3 5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2zM8.5 11a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3zM21 15l-5-5L5 21",
  "smile":            "M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20zM8 14s1.5 2 4 2 4-2 4-2M9 9h.01M15 9h.01",
  "play":             "M5 3l14 9-14 9z",
  "pause":            "M6 4h4v16H6zM14 4h4v16h-4z",
  "refresh":          "M23 4v6h-6M1 20v-6h6M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15",
  "shield":           "M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z",
  "lightbulb":        "M9 18h6M10 22h4M12 2a7 7 0 0 0-4 12.74V17h8v-2.26A7 7 0 0 0 12 2z",
  "eye":              "M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8zM12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6z",
  "users-2":          "M14 19a6 6 0 0 0-12 0M22 19a6 6 0 0 0-6-6M8 13a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM16 9a4 4 0 1 0 0 0",
  "presentation":     "M2 3h20v3H2zM4 6v9h16V6M9 17l-3 4M15 17l3 4M12 17v4",
  "file-text":        "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8zM14 2v6h6M16 13H8M16 17H8M10 9H8",
  "logout":           "M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4M16 17l5-5-5-5M21 12H9",
  "menu":             "M3 12h18M3 6h18M3 18h18",
  "dot":              "M12 13a1 1 0 1 0 0-2 1 1 0 0 0 0 2z",
  "inbox":            "M22 12h-6l-2 3h-4l-2-3H2M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",
  "bell":             "M18 8a6 6 0 1 0-12 0c0 7-3 9-3 9h18s-3-2-3-9M13.73 21a2 2 0 0 1-3.46 0",
  "help":             "M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20zM9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3M12 17h.01",
  "graph":            "M3 3v18h18M7 14l4-4 4 4 5-5",
  "share":            "M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8M16 6l-4-4-4 4M12 2v13",
  "download":         "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M7 10l5 5 5-5M12 15V3",
  "bookmark":         "M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z",

  /* Composer textarea — single diagonal bar with arrowheads.
     "expand-diagonal" → arrows at the two extremities (open outward).
     "collapse-diagonal" → arrows meet at the centre of the bar.       */
  "expand-diagonal":   "M6 18L18 6M18 6H13M18 6V11M6 18H11M6 18V13",
  "collapse-diagonal": "M6 18L10 14M10 14V18M10 14H6M18 6L14 10M14 10V6M14 10H18",
};

function Icon({ name, size = 16, stroke = 1.6, className = "", style = {} }) {
  const d = ICON_PATHS[name];
  if (!d) return <span className={className} style={{ width: size, height: size, display: "inline-block", ...style }} />;
  // multi-path icons use M…M splits; render as multiple <path>s for cleaner joins
  const parts = d.split(/(?=M)/g);
  return (
    <svg
      xmlns="http://www.w3.org/2000/svg"
      width={size} height={size} viewBox="0 0 24 24"
      fill="none" stroke="currentColor" strokeWidth={stroke}
      strokeLinecap="round" strokeLinejoin="round"
      className={className} style={{ flexShrink: 0, ...style }}
      aria-hidden="true"
    >
      {parts.map((p, i) => <path key={i} d={p} />)}
    </svg>
  );
}

window.Icon = Icon;
