/* ========================================================================
   icons.jsx — BoltKit iconography
   ------------------------------------------------------------------------
   <BoltMark /> custom logo + <Icon name="..." /> for everything else.
   All icons inherit currentColor, 1.5-2 stroke.
   ====================================================================== */

const BoltMark = ({ size = 22, color = "currentColor", slice = "var(--yellow)" }) => (
  <svg viewBox="0 0 32 32" width={size} height={size} aria-hidden="true" style={{ display: "block" }}>
    {/* sharp asymmetric lightning bolt — instantly readable */}
    <path
      d="M20.2 2 L7 17.4 L13.4 17.4 L11.6 30 L25.6 13.2 L18.9 13.2 L20.2 2 Z"
      fill={color}
    />
  </svg>
);

const BoltLogo = ({ height = 28, mono = false }) => (
  <div style={{ display: "inline-flex", alignItems: "center", gap: 10 }}>
    <div
      style={{
        width: height + 8, height: height + 8,
        borderRadius: 10,
        background: mono ? "var(--fg)" : "var(--yellow)",
        display: "grid", placeItems: "center",
        boxShadow: mono ? "none" : "0 6px 18px -8px oklch(0.85 0.2 102 / 0.6), inset 0 0 0 1px oklch(0.78 0.18 100)",
      }}
    >
      <BoltMark size={height - 2} color={mono ? "var(--yellow)" : "var(--yellow-ink)"} slice={mono ? "var(--fg)" : "var(--yellow)"} />
    </div>
    <div style={{ display: "flex", flexDirection: "column", lineHeight: 1 }}>
      <div style={{ fontWeight: 800, fontSize: height * 0.62, letterSpacing: "-0.025em", color: "var(--fg)" }}>
        BOLT<span style={{ color: "var(--yellow)", fontWeight: 700 }}>KIT</span>
      </div>
      <div style={{ fontSize: 10, letterSpacing: "0.18em", textTransform: "uppercase", fontWeight: 800, color: "var(--fg-subtle)", marginTop: 4 }}>
        Founder Launch OS
      </div>
    </div>
  </div>
);

/* ---------- Icon set ---------- */
const PATHS = {
  /* dashboard / nav */
  grid: "M3 3h7v7H3zM14 3h7v7h-7zM14 14h7v7h-7zM3 14h7v7H3z",
  folder: "M3 6a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",
  palette: "M12 3a9 9 0 1 0 .5 17.99c1 .05 1.5-.95 1.06-1.84a1.5 1.5 0 0 1 1.34-2.16H17a4 4 0 0 0 4-4 9 9 0 0 0-9-10zM7 13.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zM10 8.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zM15 8.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3z",
  image: "M4 5h16a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1zm5 5a2 2 0 1 0 0-4 2 2 0 0 0 0 4zm12 9-5-6-4 5-3-2-2 3z",
  sparkle: "M12 3l1.6 5.4L19 10l-5.4 1.6L12 17l-1.6-5.4L5 10l5.4-1.6zM19 14l.9 2.6L22 18l-2.6.9L19 22l-.9-2.6L15 18l2.6-.9zM5 14l.9 2.6L8 18l-2.6.9L5 22l-.9-2.6L2 18l2.6-.9z",
  package: "M12 2 3 7v10l9 5 9-5V7zM3 7l9 5 9-5M12 12v10",
  layers: "M12 2 2 7l10 5 10-5zM2 12l10 5 10-5M2 17l10 5 10-5",
  download: "M12 3v12m0 0 4-4m-4 4-4-4M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2",
  settings: "M12 8a4 4 0 1 0 0 8 4 4 0 0 0 0-8zm9 4a8.5 8.5 0 0 0-.1-1.3l2.1-1.6-2-3.5-2.4 1a8.6 8.6 0 0 0-2.3-1.3l-.4-2.6h-4l-.4 2.6a8.6 8.6 0 0 0-2.3 1.3l-2.4-1-2 3.5L4.6 10.7A8.5 8.5 0 0 0 4.5 12c0 .4 0 .9.1 1.3L2.5 14.9l2 3.5 2.4-1a8.6 8.6 0 0 0 2.3 1.3l.4 2.6h4l.4-2.6a8.6 8.6 0 0 0 2.3-1.3l2.4 1 2-3.5-2.1-1.6c.1-.4.1-.9.1-1.3z",
  tag: "M20 10 12 2H4v8l8 8a2.8 2.8 0 0 0 4 0l4-4a2.8 2.8 0 0 0 0-4zM7 7h.01",
  card: "M3 6h18a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1zm0 4h18M6 15h4",
  activity: "M3 12h4l2-7 4 14 2-7h6",
  mail: "M4 5h16a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2zm0 2 8 6 8-6",
  apple: "M16 8c-1.2 0-2 .7-3 1-.9-.4-1.5-1-2.8-1C7.8 8 6 10 6 13c0 3.8 2.4 7 4.2 7 1 0 1.4-.6 2.8-.6s1.7.6 2.8.6c1.5 0 3-2 3.6-4-2-.9-2.4-3.8-.4-5 .4-.2-1-3-3-3zM15 3c0 1.8-1.5 3.3-3 3.2C12 4.5 13.4 3 15 3z",
  /* topbar / actions */
  search: "M11 4a7 7 0 1 0 4.6 12.3l4.1 4.1 1.4-1.4-4.1-4.1A7 7 0 0 0 11 4zm0 2a5 5 0 1 1 0 10 5 5 0 0 1 0-10z",
  plus: "M12 5v14M5 12h14",
  arrow_right: "M5 12h14m-5-5 5 5-5 5",
  arrow_left: "M19 12H5m5 5-5-5 5-5",
  arrow_up: "M12 19V5m-5 5 5-5 5 5",
  arrow_down: "M12 5v14m5-5-5 5-5-5",
  chevron_down: "M6 9l6 6 6-6",
  chevron_right: "M9 6l6 6-6 6",
  chevron_left: "M15 6l-6 6 6 6",
  more: "M5 12h.01M12 12h.01M19 12h.01",
  close: "M6 6l12 12M6 18L18 6",
  menu: "M4 6h16M4 12h16M4 18h16",
  filter: "M4 5h16l-6 8v6l-4-2v-4z",
  /* status / feedback */
  check: "M5 12l5 5 9-11",
  check_circle: "M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zm-1 14-4-4 1.4-1.4L11 13.2l5.6-5.6L18 9z",
  alert: "M12 2 1 21h22zM12 9v6m0 4v0",
  info: "M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zm0 5a1.4 1.4 0 1 0 0 2.8A1.4 1.4 0 0 0 12 7zm-1 4h2v7h-2z",
  refresh: "M4 12a8 8 0 0 1 14-5.3M20 12a8 8 0 0 1-14 5.3M20 4v5h-5M4 20v-5h5",
  copy: "M9 4h9a2 2 0 0 1 2 2v12M6 8h9a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V10a2 2 0 0 1 2-2z",
  edit: "M4 20h4l10-10-4-4L4 16zm10-14 4 4",
  trash: "M5 7h14m-9 4v6m4-6v6M6 7l1 13a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1l1-13M9 7V4h6v3",
  external: "M14 3h7v7m-1-6L10 14m-2-9H5a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-3",
  link: "M10 14a4 4 0 0 0 5.7 0l3-3a4 4 0 0 0-5.7-5.7l-1.5 1.5M14 10a4 4 0 0 0-5.7 0l-3 3a4 4 0 0 0 5.7 5.7l1.5-1.5",
  /* objects */
  rocket: "M14 3c2 0 5 1 7 3 0 4-1 7-3 9l-3 1-3-3 1-3c2-2 5-3 9-3M5 19l4-4M5 19c1-4 4-5 7-7M5 19l-2 2M9 15l-2 4",
  bolt: "M13 2 4 14h6l-1 8 9-12h-6z",
  globe: "M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zm0 0c3 3 4 6 4 10s-1 7-4 10c-3-3-4-6-4-10s1-7 4-10zM2 12h20",
  type: "M5 5h14M12 5v15M8 20h8",
  hash: "M5 9h14M5 15h14M10 4 8 20M16 4l-2 16",
  doc: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8zm0 0v6h6M8 13h8M8 17h5",
  video: "M3 6a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2zm13 5 5-3v8l-5-3z",
  megaphone: "M3 11v2a2 2 0 0 0 2 2h2l8 5V4L7 9H5a2 2 0 0 0-2 2zM19 8a4 4 0 0 1 0 8",
  shop: "M4 7h16l-1 11a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2zM8 7V5a4 4 0 0 1 8 0v2",
  cart: "M3 4h2l2 12h12l2-8H6m1 12a1 1 0 1 0 2 0 1 1 0 0 0-2 0zm9 0a1 1 0 1 0 2 0 1 1 0 0 0-2 0z",
  target: "M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zm0 4a6 6 0 1 0 0 12 6 6 0 0 0 0-12zm0 4a2 2 0 1 0 0 4 2 2 0 0 0 0-4z",
  users: "M16 11a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM2 20a6 6 0 0 1 12 0M16 13a6 6 0 0 1 6 6M8 11a4 4 0 1 0 0-8 4 4 0 0 0 0 8z",
  user: "M12 12a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM4 21a8 8 0 0 1 16 0",
  brain: "M9 4a3 3 0 0 0-3 3v1a3 3 0 0 0-3 3 3 3 0 0 0 2 3 3 3 0 0 0 1 5 3 3 0 0 0 3 1v-16zM15 4a3 3 0 0 1 3 3v1a3 3 0 0 1 3 3 3 3 0 0 1-2 3 3 3 0 0 1-1 5 3 3 0 0 1-3 1v-16zM12 4v16",
  shield: "M12 2 4 5v6c0 5 3.5 9 8 11 4.5-2 8-6 8-11V5z",
  flame: "M12 2c1 4 6 6 6 11a6 6 0 0 1-12 0c0-3 2-5 3-8 1 2 2 4 3 4-1-2 0-5 0-7z",
  trend: "M3 17l6-6 4 4 8-9M14 6h7v7",
  bar: "M4 20V10m6 10V4m6 16v-7",
  calendar: "M5 4h14a1 1 0 0 1 1 1v15a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1zm0 5h14M8 2v4M16 2v4",
  zip: "M10 3v3h2V3zm0 5v3h2V8zm0 5v3h2v-3zm-3 5a3 3 0 0 0 6 0v-5h-6zM5 4h14a1 1 0 0 1 1 1v15a1 1 0 0 1-1 1h-9v-3a3 3 0 0 0-3-3H4V5a1 1 0 0 1 1-1z",
  pdf: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8zm0 0v6h6M8 15h2.5a1.5 1.5 0 1 0 0-3H8zM8 12v6m6 0v-6h3m-3 3h2",
  json: "M8 4c-2 0-2 4-4 4 2 0 2 4 4 4M16 4c2 0 2 4 4 4-2 0-2 4-4 4M8 12c-2 0-2 4-4 4 2 0 2 4 4 4M16 12c2 0 2 4 4 4-2 0-2 4-4 4",
  md: "M3 7h18v10H3zM6 16v-7l3 4 3-4v7M15 9v7m0 0 2-2m-2 2-2-2",
  csv: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8zM4 13h16M9 8v13M15 8v13",
  /* platforms */
  insta: "M5 3h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2zm7 5a4 4 0 1 0 0 8 4 4 0 0 0 0-8zm5-1.5a1 1 0 1 0 0 2 1 1 0 0 0 0-2z",
  tiktok: "M9 4v11a3 3 0 1 1-3-3v-3a6 6 0 1 0 6 6V8a6 6 0 0 0 4 1.5V6a3 3 0 0 1-3-3z",
  youtube: "M3 7a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2zm7 2v6l6-3z",
  linkedin: "M5 3h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2zM7 9v9m0-12a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm5 12v-5a2 2 0 0 1 4 0v5m-4-5V9",
  google: "M12 4a8 8 0 1 0 8 8h-8",
  meta: "M3 12c0-4 2-7 5-7s4 2 6 6 4 6 6 6 3-3 3-7-2-7-5-7c-2 0-3 1-5 4-2 3-3 4-5 4s-3-2-3-4",
  facebook: "M14 21v-8h3l1-4h-4V7c0-1 .5-2 2-2h2V2h-3c-3 0-5 2-5 5v2H7v4h3v8",
  /* misc */
  layout: "M3 4h7v16H3zM14 4h7v9h-7zM14 17h7v3h-7z",
  inbox: "M3 13h4l2 3h6l2-3h4M3 13l3-9h12l3 9v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",
  bell: "M6 18V11a6 6 0 0 1 12 0v7M3 18h18M10 21a2 2 0 0 0 4 0",
  cmd: "M9 6a3 3 0 1 0 3 3V6zm6 0v3h3a3 3 0 1 0-3-3zm-6 12a3 3 0 1 0-3-3h3zm6 0v-3h3a3 3 0 1 1-3 3zM9 9h6v6H9z",
  scan: "M3 9V5a2 2 0 0 1 2-2h4M15 3h4a2 2 0 0 1 2 2v4M21 15v4a2 2 0 0 1-2 2h-4M9 21H5a2 2 0 0 1-2-2v-4M7 12h10",
  receipt: "M5 3v18l3-2 3 2 3-2 3 2 3-2V3zM8 8h8M8 12h8M8 16h5",
  list: "M4 6h16M4 12h16M4 18h16",
  briefcase: "M6 7h12a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2zM9 7V5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v2",
  code: "M9 17 4 12l5-5M15 7l5 5-5 5M14 4l-4 16",
  spark2: "M12 2v6m0 8v6m10-10h-6M8 12H2m15.07-7.07-4.24 4.24M9.17 14.83l-4.24 4.24M19.07 19.07l-4.24-4.24M9.17 9.17 4.93 4.93",
  history: "M3 12a9 9 0 1 0 3-6.7M3 4v4h4M12 7v5l3 2",
  question: "M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zM9 9a3 3 0 1 1 4.5 2.6c-.9.5-1.5 1-1.5 2v.4m0 4h.01",
  star: "M12 2l3 7 7 1-5 5 1 7-6-3-6 3 1-7-5-5 7-1z",
  lock: "M6 11V8a6 6 0 1 1 12 0v3M5 11h14a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-8a1 1 0 0 1 1-1z",
  send: "M22 2 11 13M22 2l-7 20-4-9-9-4z",
  share: "M16 5a3 3 0 1 0-2.8 4l-6.4 3a3 3 0 1 0 0 4l6.4 3a3 3 0 1 0 .8-1.8L7.6 14a3 3 0 0 0 0-4l6.4-3A3 3 0 0 0 16 5z",
  drag: "M9 6h.01M9 12h.01M9 18h.01M15 6h.01M15 12h.01M15 18h.01",
  eye: "M2 12s4-7 10-7 10 7 10 7-4 7-10 7-10-7-10-7zm10 3a3 3 0 1 0 0-6 3 3 0 0 0 0 6z",
  upload: "M12 21V9m0 0-4 4m4-4 4 4M4 5h16",
};

const Icon = ({ name, size = 16, stroke = 1.75, fill = "none", color = "currentColor", style }) => {
  const d = PATHS[name];
  if (!d) return null;
  // some icons should be filled (status pill dots, etc.)
  const filled = ["star"].includes(name);
  return (
    <svg
      viewBox="0 0 24 24"
      width={size} height={size}
      fill={filled ? color : fill}
      stroke={filled ? "none" : color}
      strokeWidth={stroke}
      strokeLinecap="round"
      strokeLinejoin="round"
      style={{ display: "block", flex: "none", ...style }}
      aria-hidden="true"
    >
      <path d={d} />
    </svg>
  );
};

/* progress ring */
const Ring = ({ value = 76, size = 116, thickness = 9, color = "var(--yellow)", track = "var(--surface-3)", children }) => {
  const r = (size - thickness) / 2;
  const C = 2 * Math.PI * r;
  const off = C * (1 - Math.max(0, Math.min(100, value)) / 100);
  return (
    <div className="ring-wrap" style={{ width: size, height: size }}>
      <svg width={size} height={size} style={{ transform: "rotate(-90deg)" }} aria-hidden="true">
        <circle cx={size/2} cy={size/2} r={r} fill="none" stroke={track} strokeWidth={thickness} />
        <circle
          cx={size/2} cy={size/2} r={r}
          fill="none" stroke={color} strokeWidth={thickness}
          strokeLinecap="round"
          strokeDasharray={C}
          strokeDashoffset={off}
          style={{ transition: "stroke-dashoffset .5s ease" }}
        />
      </svg>
      <div className="ring-num">{children}</div>
    </div>
  );
};

Object.assign(window, { BoltMark, BoltLogo, Icon, Ring });
