/* global React */
// Inline Lucide-style icons (stroke, 24-grid) — self-contained, reliable in-iframe.
const ICON_PATHS = {
  search: "M11 19a8 8 0 1 1 0-16 8 8 0 0 1 0 16Zm5-3 5 5",
  "layout-dashboard": "M4 4h7v7H4zM13 4h7v5h-7zM13 11h7v9h-7zM4 13h7v7H4z",
  "folder": "M3 7a2 2 0 0 1 2-2h4l2 3h8a2 2 0 0 1 2 2v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7Z",
  "folder-open": "M5 19a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h4l2 3h7a2 2 0 0 1 2 2H6l-3 10Zm0 0 3-8h14l-3 8H5Z",
  "git-branch": "M6 3v12M18 9a3 3 0 1 0 0-6 3 3 0 0 0 0 6ZM6 21a3 3 0 1 0 0-6 3 3 0 0 0 0 6ZM15 6a9 9 0 0 1-9 9",
  "git-merge": "M6 21V9M6 9a3 3 0 1 0 0-6 3 3 0 0 0 0 6ZM18 18a3 3 0 1 0 0-6 3 3 0 0 0 0 6ZM6 12a9 9 0 0 0 9 9",
  workflow: "M5 4h5v5H5zM14 15h5v5h-5zM5 9v3a2 2 0 0 0 2 2h7",
  store: "M5 7 4 4h16l-1 3M4 7h16v3a3 3 0 0 1-6 0 3 3 0 0 1-6 0 3 3 0 0 1-4 0V7ZM5 10v9a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-9",
  layers: "M12 2 2 7l10 5 10-5-10-5ZM2 17l10 5 10-5M2 12l10 5 10-5",
  "file-text": "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6ZM14 2v6h6M9 13h6M9 17h6M9 9h1",
  files: "M15 2H9a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h9a2 2 0 0 0 2-2V7l-5-5ZM15 2v5h5M4 7v13a2 2 0 0 0 2 2h9",
  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 8Zm13 10v-2a4 4 0 0 0-3-3.87M16 3.13a4 4 0 0 1 0 7.75",
  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-4H6a4 4 0 0 0-4 4v2M13 11a4 4 0 1 1-8 0 4 4 0 0 1 8 0ZM20 8v6M23 11h-6",
  "credit-card": "M3 9h18M5 5h14a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2Z",
  activity: "M22 12h-4l-3 9L9 3l-3 9H2",
  settings: "M12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6ZM19.4 15a1.6 1.6 0 0 0 .3 1.8l.1.1a2 2 0 1 1-2.8 2.8l-.1-.1a1.6 1.6 0 0 0-1.8-.3 1.6 1.6 0 0 0-1 1.5V21a2 2 0 0 1-4 0v-.1a1.6 1.6 0 0 0-1-1.5 1.6 1.6 0 0 0-1.8.3l-.1.1a2 2 0 1 1-2.8-2.8l.1-.1a1.6 1.6 0 0 0 .3-1.8 1.6 1.6 0 0 0-1.5-1H3a2 2 0 0 1 0-4h.1a1.6 1.6 0 0 0 1.5-1 1.6 1.6 0 0 0-.3-1.8l-.1-.1a2 2 0 1 1 2.8-2.8l.1.1a1.6 1.6 0 0 0 1.8.3h.1a1.6 1.6 0 0 0 1-1.5V3a2 2 0 0 1 4 0v.1a1.6 1.6 0 0 0 1 1.5 1.6 1.6 0 0 0 1.8-.3l.1-.1a2 2 0 1 1 2.8 2.8l-.1.1a1.6 1.6 0 0 0-.3 1.8v.1a1.6 1.6 0 0 0 1.5 1H21a2 2 0 0 1 0 4h-.1a1.6 1.6 0 0 0-1.5 1Z",
  bell: "M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9Zm4 13a2 2 0 0 0 4 0",
  plus: "M12 5v14M5 12h14",
  minus: "M5 12h14",
  check: "M5 12l5 5L20 7",
  x: "M18 6 6 18M6 6l12 12",
  "chevron-down": "M6 9l6 6 6-6",
  "chevron-right": "M9 18l6-6-6-6",
  "chevron-left": "M15 18l-6-6 6-6",
  "chevron-up": "M18 15l-6-6-6 6",
  "arrow-right": "M5 12h14M13 5l7 7-7 7",
  "arrow-left": "M19 12H5M12 19l-7-7 7-7",
  "arrow-up-right": "M7 17 17 7M7 7h10v10",
  "more-horizontal": "M5 12h.01M12 12h.01M19 12h.01",
  "more-vertical": "M12 5h.01M12 12h.01M12 19h.01",
  upload: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M17 8l-5-5-5 5M12 3v12",
  "upload-cloud": "M16 16l-4-4-4 4M12 12v9M20.4 14.9A5 5 0 0 0 18 5.5 7 7 0 0 0 4 8a5 5 0 0 0-1 9.9",
  download: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M7 10l5 5 5-5M12 15V3",
  "external-link": "M15 3h6v6M10 14 21 3M21 14v5a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5",
  eye: "M2 12s4-8 10-8 10 8 10 8-4 8-10 8-10-8-10-8Zm10 3a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z",
  "log-out": "M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4M16 17l5-5-5-5M21 12H9",
  sparkles: "M12 3l1.9 5.1L19 10l-5.1 1.9L12 17l-1.9-5.1L5 10l5.1-1.9L12 3ZM19 15l.8 2.2L22 18l-2.2.8L19 21l-.8-2.2L16 18l2.2-.8L19 15ZM5 4l.6 1.6L7 6l-1.4.4L5 8l-.6-1.6L3 6l1.4-.4L5 4Z",
  lock: "M5 11h14a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2Zm12 0V7a5 5 0 0 0-10 0v4",
  globe: "M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18Zm9-9H3M12 3a14 14 0 0 1 0 18 14 14 0 0 1 0-18Z",
  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-2ZM3 7l9 6 9-6",
  inbox: "M22 12h-6l-2 3h-4l-2-3H2M5.5 5h13l3.5 7v6a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-6l3.5-7Z",
  "hard-drive": "M22 12H2M5.5 5h13l3.5 7v5a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-5l3.5-7ZM6 16h.01M10 16h.01",
  database: "M12 8c4.4 0 8-1.3 8-3s-3.6-3-8-3-8 1.3-8 3 3.6 3 8 3ZM4 5v6c0 1.7 3.6 3 8 3s8-1.3 8-3V5M4 11v6c0 1.7 3.6 3 8 3s8-1.3 8-3v-6",
  cloud: "M17.5 19a4.5 4.5 0 1 0-1.3-8.8A6 6 0 0 0 5 12a4 4 0 0 0 .5 7h12Z",
  table: "M3 5h18v14H3zM3 10h18M3 15h18M9 5v14M15 5v14",
  languages: "M5 8h7M8.5 4v4M4 14c2.5 0 5-2 6-6M6 9c1.2 3.5 3.5 6 6 7M13 20l4-9 4 9M14.2 17h5.6",
  scissors: "M9 6a3 3 0 1 0-6 0 3 3 0 0 0 6 0ZM9 18a3 3 0 1 0-6 0 3 3 0 0 0 6 0ZM8.1 8.1 20 18M8.1 15.9 14 12 20 6",
  presentation: "M2 3h20M3 3v11a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V3M12 16v5M9 21l3-2 3 2",
  calculator: "M5 2h14a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1ZM8 6h8M8 10h.01M12 10h.01M16 10h.01M8 14h.01M12 14h.01M16 14h.01M8 18h.01M12 18h.01M16 18h.01",
  copy: "M9 9h11a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2v-9a2 2 0 0 1 2-2ZM5 15a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2",
  "refresh-cw": "M3 12a9 9 0 0 1 15-6.7L21 8M21 3v5h-5M21 12a9 9 0 0 1-15 6.7L3 16M3 21v-5h5",
  zap: "M13 2 3 14h9l-1 8 10-12h-9l1-8Z",
  filter: "M3 4h18l-7 8v6l-4 2v-8L3 4Z",
  "sliders-horizontal": "M21 4H10M14 12H3M21 12h-3M16 20H3M21 20h-1M10 4v0a3 3 0 1 1 0 6v0M14 12v0a3 3 0 1 0 0 6v0",
  link: "M10 13a5 5 0 0 0 7 0l3-3a5 5 0 0 0-7-7l-1 1M14 11a5 5 0 0 0-7 0l-3 3a5 5 0 0 0 7 7l1-1",
  "link-off": "M9 17H7A5 5 0 0 1 7 7h2M15 7h2a5 5 0 0 1 4 8M8 12h3M2 2l20 20",
  shield: "M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10Z",
  "shield-check": "M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10ZM9 12l2 2 4-4",
  key: "M15.5 7.5a4 4 0 1 0-4.9 4.9L4 19v2h2l1-1h2v-2h2l1.6-1.6a4 4 0 0 0 2.8-1.3M16.5 8.5h.01",
  "bar-chart": "M3 3v18h18M7 16v-5M12 16V7M17 16v-9",
  "trending-up": "M3 17l6-6 4 4 7-7M14 8h7v7",
  "trending-down": "M3 7l6 6 4-4 7 7M14 16h7v-7",
  wallet: "M19 7H5a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-8a2 2 0 0 0-2-2Zm-3 6h.01M5 7V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v2",
  "dollar-sign": "M12 1v22M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6",
  clock: "M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18Zm0-13v5l3 2",
  "clock-3": "M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18Zm0-9h4",
  calendar: "M3 9h18M5 5h14a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2Zm3-2v4m8-4v4",
  play: "M6 4l14 8-14 8V4Z",
  "play-circle": "M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18ZM10 8l6 4-6 4V8Z",
  pause: "M6 4h4v16H6zM14 4h4v16h-4z",
  "alert-triangle": "M10.3 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.7 3.86a2 2 0 0 0-3.4 0ZM12 9v4M12 17h.01",
  "alert-circle": "M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18Zm0-13v4m0 4h.01",
  "check-circle": "M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18ZM8 12l3 3 5-6",
  info: "M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18ZM12 16v-4M12 8h.01",
  "help-circle": "M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18ZM9.2 9a3 3 0 0 1 5.6 1c0 2-3 3-3 3M12 17h.01",
  circle: "M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18Z",
  "trash-2": "M3 6h18M8 6V4a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v2M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6M10 11v6M14 11v6",
  pencil: "M12 20h9M16.5 3.5a2.1 2.1 0 0 1 3 3L7 19l-4 1 1-4 12.5-12.5Z",
  save: "M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2ZM17 21v-8H7v8M7 3v5h8",
  maximize: "M8 3H5a2 2 0 0 0-2 2v3M21 8V5a2 2 0 0 0-2-2h-3M16 21h3a2 2 0 0 0 2-2v-3M3 16v3a2 2 0 0 0 2 2h3",
  minimize: "M8 3v3a2 2 0 0 1-2 2H3M21 8h-3a2 2 0 0 1-2-2V3M3 16h3a2 2 0 0 1 2 2v3M16 21v-3a2 2 0 0 1 2-2h3",
  "grip-vertical": "M9 5h.01M9 12h.01M9 19h.01M15 5h.01M15 12h.01M15 19h.01",
  "grip-dots": "M9 6h.01M9 12h.01M9 18h.01M15 6h.01M15 12h.01M15 18h.01",
  package: "M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16ZM3.27 6.96 12 12.01l8.73-5.05M12 22.08V12",
  "building-2": "M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18M2 22h20M10 6h.01M14 6h.01M10 10h.01M14 10h.01M10 14h.01M14 14h.01M10 18h.01M14 18h.01",
  send: "M22 2 11 13M22 2l-7 20-4-9-9-4 20-7Z",
  paperclip: "M21 11l-9.7 9.7a5.5 5.5 0 0 1-7.8-7.8L13.2 3.2a3.6 3.6 0 0 1 5.1 5.1l-9.7 9.7a1.8 1.8 0 1 1-2.5-2.5l8.3-8.3",
  hash: "M4 9h16M4 15h16M10 3 8 21M16 3l-2 18",
  type: "M4 6V4h16v2M9 20h6M12 4v16",
  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-2V5Zm0 14 6-6 4 4 5-5 3 3M9 11a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z",
  "message-square": "M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v10Z",
  "map-pin": "M20 10c0 7-8 13-8 13S4 17 4 10a8 8 0 1 1 16 0Zm-8 1a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z",
  columns: "M3 4h18v16H3zM12 4v16",
  rows: "M3 4h18v16H3zM3 12h18",
  "list-checks": "M11 6h10M11 12h10M11 18h10M3 6l1.5 1.5L7 5M3 12l1.5 1.5L7 11M3 18l1.5 1.5L7 17",
  "file-spreadsheet": "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6ZM14 2v6h6M8 13h8M8 17h8M10 13v8",
  "file-json": "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6ZM14 2v6h6M10 12a1 1 0 0 0-1 1v1a1 1 0 0 1-1 1 1 1 0 0 1 1 1v1a1 1 0 0 0 1 1M14 12a1 1 0 0 1 1 1v1a1 1 0 0 0 1 1 1 1 0 0 0-1 1v1a1 1 0 0 1-1 1",
  "file-check": "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6ZM14 2v6h6M9 15l2 2 4-4",
  webhook: "M18 16.98a4 4 0 1 1-3.95-4.96M7.5 8.5a4 4 0 1 1 6.4 3.2M10 19a4 4 0 1 1-2.3-7.2M12 9l-3 5h7",
  flag: "M4 22V4h13l-2 4 2 4H4",
  star: "M12 2l3.1 6.3 7 1-5 4.9 1.2 6.9L12 17.8 5.7 21l1.2-6.9-5-4.9 7-1L12 2Z",
  "split": "M16 3h5v5M21 3l-7 7M8 21H3v-5M3 21l7-7M3 8V3h5M21 16v5h-5",
  "menu": "M3 6h18M3 12h18M3 18h18",
  "panel-right": "M3 4h18v16H3zM15 4v16",
  "log-in": "M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4M10 17l5-5-5-5M15 12H3",
  loader: "M12 2v4M12 18v4M4.9 4.9l2.8 2.8M16.3 16.3l2.8 2.8M2 12h4M18 12h4M4.9 19.1l2.8-2.8M16.3 7.7l2.8-2.8",
  dot: "M12 12h.01",
};

function Icon({ name, size = 18, color = "currentColor", strokeWidth = 1.75, style }) {
  const d = ICON_PATHS[name] || ICON_PATHS.dot;
  return (
    <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke={color}
      strokeWidth={strokeWidth} strokeLinecap="round" strokeLinejoin="round"
      style={{ flexShrink: 0, display: "block", ...style }} aria-hidden="true">
      {d.split(/(?=M)/).map((seg, i) => <path key={i} d={seg.trim()} />)}
    </svg>
  );
}

// Docomate brand: ink document-tile mark with amber dot + two-tone wordmark.
function Mark({ size = 28, radius = 8 }) {
  return (
    <svg width={size} height={size} viewBox="0 0 32 32" aria-hidden="true" style={{ display: "block", flexShrink: 0 }}>
      <rect width="32" height="32" rx={radius} fill="var(--ef-ink-950)" />
      <path d="M9 8.5h7.5c3.6 0 6 2.6 6 7s-2.4 7-6 7H9V8.5Z" fill="none" stroke="var(--ef-bone)" strokeWidth="2.4" strokeLinejoin="round" />
      <circle cx="24" cy="9.5" r="3" fill="var(--ef-beam-500)" />
    </svg>
  );
}

function Wordmark({ size = 19, color = "var(--ef-fg-1)", showMark = true, markSize = 26 }) {
  return (
    <div style={{ display: "flex", alignItems: "center", gap: 10 }}>
      {showMark && <Mark size={markSize} />}
      <span style={{ fontFamily: "var(--ef-font-display)", fontWeight: 800, fontSize: size, letterSpacing: "-0.035em", color, lineHeight: 1 }}>
        Doco<span style={{ color: "var(--ef-beam-500)" }}>mate</span>
      </span>
    </div>
  );
}

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