/* ============================================================
   icons.jsx — line icons, 2px square caps, currentColor.
   window.Icon = ({name, size}) => <svg/>
   ============================================================ */
const React = window.React;

const P = {
  today:    "M3 9h18M7 3v3M17 3v3M3 5h18v16H3zM7 13h3v3H7z",
  calendar: "M3 8h18M8 3v3M16 3v3M4 5h16v16H4zM8 12h2M14 12h2M8 16h2M14 16h2",
  library:  "M4 4h4v16H4zM10 4h4v16h-4zM16 6l3.5-1 3 14-3.5 1z",
  course:   "M3 7l9-4 9 4-9 4zM7 10v5c0 1.5 2.5 3 5 3s5-1.5 5-3v-5M21 11v5",
  notes:    "M5 3h10l4 4v14H5zM15 3v4h4M8 12h8M8 16h6",
  habits:   "M4 13l4 4 12-12M4 19h16",
  graph:    "M6 6m-2 0a2 2 0 104 0a2 2 0 10-4 0M18 7m-2 0a2 2 0 104 0a2 2 0 10-4 0M12 18m-2 0a2 2 0 104 0a2 2 0 10-4 0M7.5 7l7 9M16.5 8.5l-4 8",
  stats:    "M4 20V10M10 20V4M16 20v-7M22 20H2",
  plus:     "M12 5v14M5 12h14",
  minus:    "M5 12h14",
  user:     "M12 8m-4 0a4 4 0 108 0a4 4 0 10-8 0M4 21c0-4 3.6-6 8-6s8 2 8 6",
  gauge:    "M4 18a8 8 0 1 1 16 0M12 18l4-5",
  check:    "M4 12l5 5L20 6",
  arrow:    "M5 12h14M13 6l6 6-6 6",
  arrowUp:  "M12 19V5M6 11l6-6 6 6",
  back:     "M19 12H5M11 18l-6-6 6-6",
  link:     "M9 15l6-6M10 6l1-1a4 4 0 015.6 5.6l-1 1M14 18l-1 1A4 4 0 017.4 13.4l1-1",
  search:   "M11 11m-7 0a7 7 0 1014 0a7 7 0 10-14 0M20 20l-4-4",
  grid:     "M4 4h7v7H4zM13 4h7v7h-7zM4 13h7v7H4zM13 13h7v7h-7z",
  list:     "M8 6h13M8 12h13M8 18h13M3 6h.01M3 12h.01M3 18h.01",
  shelf:    "M4 4h3v16H4zM9 7h3v13H9zM14 4h3v16h-3zM19 9h2v11h-2z",
  play:     "M7 4l13 8-13 8z",
  stop:     "M6 6h12v12H6z",
  book:     "M5 4h10a2 2 0 012 2v14H7a2 2 0 01-2-2zM17 6v14",
  film:     "M3 4h18v16H3zM7 4v16M17 4v16M3 9h4M17 9h4M3 14h4M17 14h4",
  flask:    "M9 3h6M10 3v6l-5 9a2 2 0 002 3h10a2 2 0 002-3l-5-9V3M7 15h10",
  quote:    "M7 7H4v5h3l-1 4M17 7h-3v5h3l-1 4",
  star:     "M12 3l2.6 5.6 6 .8-4.4 4.2 1.1 6L12 17l-5.3 2.6 1.1-6L3.4 9.4l6-.8z",
  clock:    "M12 12m-9 0a9 9 0 1018 0a9 9 0 10-18 0M12 7v5l3 2",
  run:      "M13 4m-1.5 0a1.5 1.5 0 103 0a1.5 1.5 0 10-3 0M9 21l2-5 3-2-2-4-4 2M14 14l3 1 1 4",
  shield:   "M12 3l7 3v5c0 4.5-3 7.5-7 9-4-1.5-7-4.5-7-9V6z",
  drop:     "M12 3s6 6.5 6 11a6 6 0 11-12 0c0-4.5 6-11 6-11z",
  moon:     "M20 14a8 8 0 01-10-10 8 8 0 1010 10z",
  burger:   "M4 9h16M4 15h16M5 9c0-3 3-5 7-5s7 2 7 5M6 15c0 2.5 2.5 4 6 4s6-1.5 6-4",
  drag:     "M9 6h.01M9 12h.01M9 18h.01M15 6h.01M15 12h.01M15 18h.01",
  close:    "M6 6l12 12M18 6L6 18",
  edit:     "M4 20h4L19 9l-4-4L4 16zM14 6l4 4",
  flame:    "M12 3c1 4 4 5 4 9a4 4 0 11-8 0c0-2 1-3 2-4 .5 2 2 2 2 3 1-1 0-5 0-8z",
  filter:   "M3 5h18l-7 8v6l-4-2v-4z",
  dot:      "M12 12m-3 0a3 3 0 106 0a3 3 0 10-6 0",
  tag:      "M4 4h7l9 9-7 7-9-9zM8 8h.01",
  bolt:     "M13 3L5 14h6l-1 7 8-11h-6z",
  target:   "M12 12m-9 0a9 9 0 1018 0a9 9 0 10-18 0M12 12m-4 0a4 4 0 108 0a4 4 0 10-8 0M12 12h.01",
  reset:    "M4 12a8 8 0 1 1 2.3 5.6M4 20v-5h5",
  pin:      "M12 3l3 3-1 5 3 3H8l3-3-1-5z M12 14v7",
};

window.Icon = function Icon({ name, size = 20, stroke = 2, fill = false, style }) {
  const d = P[name] || P.dot;
  return React.createElement("svg", {
    width: size, height: size, viewBox: "0 0 24 24", "aria-hidden": true,
    style: { display: "block", ...style },
    fill: fill ? "currentColor" : "none",
    stroke: "currentColor", strokeWidth: stroke,
    strokeLinecap: "square", strokeLinejoin: "miter",
  }, React.createElement("path", { d }));
};

window.TypeIcon = function TypeIcon(props) {
  const map = { fiction: "book", science: "flask", video: "film" };
  return React.createElement(window.Icon, { name: map[props.type] || "book", ...props });
};
