// Minimal stroke icons. Each takes {size}. Stroke uses currentColor.
const Icon = ({ d, size = 20, fill = "none", extra = null, vb = 24 }) => (
  <svg width={size} height={size} viewBox={`0 0 ${vb} ${vb}`} fill={fill} stroke="currentColor"
    strokeWidth="1.6" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">
    {d && <path d={d} />}
    {extra}
  </svg>
);

const Icons = {
  search: (p) => <Icon {...p} d="M11 4a7 7 0 1 0 0 14 7 7 0 0 0 0-14m6 13 3 3" />,
  stack: (p) => <Icon {...p} d="M12 3 3 8l9 5 9-5zM3 13l9 5 9-5M3 18l9 5 9-5" />,
  code: (p) => <Icon {...p} d="m8 8-4 4 4 4m8-8 4 4-4 4m-2-9-4 14" />,
  book: (p) => <Icon {...p} d="M4 5a2 2 0 0 1 2-2h13v16H6a2 2 0 0 0-2 2zM19 19v2H6" />,
  folder: (p) => <Icon {...p} d="M3 6a1 1 0 0 1 1-1h5l2 2h9a1 1 0 0 1 1 1v9a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1z" />,
  globe: (p) => <Icon {...p} d="M12 3a9 9 0 1 0 0 18 9 9 0 0 0 0-18M3 12h18M12 3c2.5 2.5 2.5 15.5 0 18M12 3c-2.5 2.5-2.5 15.5 0 18" />,
  highlighter: (p) => <Icon {...p} d="M14 4 20 10 10 20H6l-2-2zm-4 12-4 4M9 9l6 6" />,
  note: (p) => <Icon {...p} d="M5 4h14v10l-5 5H5zM14 19v-5h5" />,
  comment: (p) => <Icon {...p} d="M4 5h16v11H9l-4 4v-4H4z" />,
  pen: (p) => <Icon {...p} d="M4 20l4-1 11-11-3-3L5 16zM14 6l3 3" />,
  eraser: (p) => <Icon {...p} d="m4 16 5 5h7l5-5L13 5 4 14zM9 21 14 16M7 12l6 6" />,
  cursor: (p) => <Icon {...p} d="m5 3 6 18 2-7 7-2z" />,
  outline: (p) => <Icon {...p} d="M4 6h2m4 0h10M4 12h2m4 0h10M4 18h2m4 0h10" />,
  notes: (p) => <Icon {...p} d="M5 4h14v16H5zM9 9h6M9 13h6M9 17h3" />,
  sun: (p) => <Icon {...p} d="M12 6V3m0 18v-3M6 12H3m18 0h-3M6 6 4 4m14 2 2-2M6 18l-2 2m14-2 2 2" extra={<circle cx="12" cy="12" r="3.5" />} />,
  moon: (p) => <Icon {...p} d="M20 14a8 8 0 1 1-9-11 6.5 6.5 0 0 0 9 11" />,
  focus: (p) => <Icon {...p} d="M4 8V4h4M16 4h4v4M20 16v4h-4M8 20H4v-4" />,
  panelRight: (p) => <Icon {...p} d="M4 5h16v14H4zM15 5v14" />,
  panelLeft: (p) => <Icon {...p} d="M4 5h16v14H4zM9 5v14" />,
  tag: (p) => <Icon {...p} d="M4 4h7l9 9-7 7-9-9z" extra={<circle cx="8" cy="8" r="1.4" fill="currentColor" stroke="none" />} />,
  trash: (p) => <Icon {...p} d="M5 7h14M9 7V4h6v3m-8 0 1 13h8l1-13" />,
  check: (p) => <Icon {...p} d="m5 13 4 4 10-11" />,
  close: (p) => <Icon {...p} d="m6 6 12 12M18 6 6 18" />,
  clock: (p) => <Icon {...p} d="M12 3a9 9 0 1 0 0 18 9 9 0 0 0 0-18M12 7v5l3 2" />,
  plus: (p) => <Icon {...p} d="M12 5v14M5 12h14" />,
  chevron: (p) => <Icon {...p} d="m9 6 6 6-6 6" />,
  undo: (p) => <Icon {...p} d="M9 7 4 12l5 5M4 12h11a5 5 0 0 1 0 10h-3" />,
  refresh: (p) => <Icon {...p} d="M20 11a8 8 0 1 0-.6 4" extra={<path d="M20 4v7h-7" />} />,
};

window.Icons = Icons;
