@polpo-ai/dashboard 0.15.11 → 0.15.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (283) hide show
  1. package/README.md +43 -9
  2. package/dist/host.d.ts +16 -0
  3. package/dist/host.d.ts.map +1 -1
  4. package/dist/host.js +3 -0
  5. package/dist/host.js.map +1 -1
  6. package/dist/index.d.ts +35 -2
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +27 -1
  9. package/dist/index.js.map +1 -1
  10. package/dist/self-host-api.d.ts +3 -0
  11. package/dist/self-host-api.d.ts.map +1 -0
  12. package/dist/self-host-api.js +55 -0
  13. package/dist/self-host-api.js.map +1 -0
  14. package/dist/v2/agents/agent-detail.d.ts +58 -0
  15. package/dist/v2/agents/agent-detail.d.ts.map +1 -0
  16. package/dist/v2/agents/agent-detail.js +412 -0
  17. package/dist/v2/agents/agent-detail.js.map +1 -0
  18. package/dist/v2/agents/agent-run-panel.d.ts +5 -0
  19. package/dist/v2/agents/agent-run-panel.d.ts.map +1 -0
  20. package/dist/v2/agents/agent-run-panel.js +149 -0
  21. package/dist/v2/agents/agent-run-panel.js.map +1 -0
  22. package/dist/v2/agents/loops-tab.d.ts +6 -0
  23. package/dist/v2/agents/loops-tab.d.ts.map +1 -0
  24. package/dist/v2/agents/loops-tab.js +160 -0
  25. package/dist/v2/agents/loops-tab.js.map +1 -0
  26. package/dist/v2/agents/model-select.d.ts +24 -0
  27. package/dist/v2/agents/model-select.d.ts.map +1 -0
  28. package/dist/v2/agents/model-select.js +157 -0
  29. package/dist/v2/agents/model-select.js.map +1 -0
  30. package/dist/v2/agents/prompt-preview-dialog.d.ts +15 -0
  31. package/dist/v2/agents/prompt-preview-dialog.d.ts.map +1 -0
  32. package/dist/v2/agents/prompt-preview-dialog.js +141 -0
  33. package/dist/v2/agents/prompt-preview-dialog.js.map +1 -0
  34. package/dist/v2/agents/self-host-create-agent-dialog.d.ts +6 -0
  35. package/dist/v2/agents/self-host-create-agent-dialog.d.ts.map +1 -0
  36. package/dist/v2/agents/self-host-create-agent-dialog.js +31 -0
  37. package/dist/v2/agents/self-host-create-agent-dialog.js.map +1 -0
  38. package/dist/v2/agents/self-host-detail.d.ts +4 -0
  39. package/dist/v2/agents/self-host-detail.d.ts.map +1 -0
  40. package/dist/v2/agents/self-host-detail.js +34 -0
  41. package/dist/v2/agents/self-host-detail.js.map +1 -0
  42. package/dist/v2/agents/self-host-run-chat.d.ts +10 -0
  43. package/dist/v2/agents/self-host-run-chat.d.ts.map +1 -0
  44. package/dist/v2/agents/self-host-run-chat.js +18 -0
  45. package/dist/v2/agents/self-host-run-chat.js.map +1 -0
  46. package/dist/v2/agents/skills-tab.d.ts +6 -0
  47. package/dist/v2/agents/skills-tab.d.ts.map +1 -0
  48. package/dist/v2/agents/skills-tab.js +112 -0
  49. package/dist/v2/agents/skills-tab.js.map +1 -0
  50. package/dist/v2/agents/tools-panel.d.ts +26 -0
  51. package/dist/v2/agents/tools-panel.d.ts.map +1 -0
  52. package/dist/v2/agents/tools-panel.js +123 -0
  53. package/dist/v2/agents/tools-panel.js.map +1 -0
  54. package/dist/v2/agents/tools-tab.d.ts +6 -0
  55. package/dist/v2/agents/tools-tab.d.ts.map +1 -0
  56. package/dist/v2/agents/tools-tab.js +117 -0
  57. package/dist/v2/agents/tools-tab.js.map +1 -0
  58. package/dist/v2/agents/vault-tab.d.ts +13 -0
  59. package/dist/v2/agents/vault-tab.d.ts.map +1 -0
  60. package/dist/v2/agents/vault-tab.js +93 -0
  61. package/dist/v2/agents/vault-tab.js.map +1 -0
  62. package/dist/v2/files/file-browser-primitives.d.ts +39 -0
  63. package/dist/v2/files/file-browser-primitives.d.ts.map +1 -0
  64. package/dist/v2/files/file-browser-primitives.js +75 -0
  65. package/dist/v2/files/file-browser-primitives.js.map +1 -0
  66. package/dist/v2/files/file-directory-browser.d.ts +10 -0
  67. package/dist/v2/files/file-directory-browser.d.ts.map +1 -0
  68. package/dist/v2/files/file-directory-browser.js +57 -0
  69. package/dist/v2/files/file-directory-browser.js.map +1 -0
  70. package/dist/v2/files/files-browser.d.ts +7 -0
  71. package/dist/v2/files/files-browser.d.ts.map +1 -0
  72. package/dist/v2/files/files-browser.js +390 -0
  73. package/dist/v2/files/files-browser.js.map +1 -0
  74. package/dist/v2/files/host.d.ts +45 -0
  75. package/dist/v2/files/host.d.ts.map +1 -0
  76. package/dist/v2/files/host.js +72 -0
  77. package/dist/v2/files/host.js.map +1 -0
  78. package/dist/v2/host.d.ts +42 -0
  79. package/dist/v2/host.d.ts.map +1 -0
  80. package/dist/v2/host.js +137 -0
  81. package/dist/v2/host.js.map +1 -0
  82. package/dist/v2/playground/chat-canvas.d.ts +9 -0
  83. package/dist/v2/playground/chat-canvas.d.ts.map +1 -0
  84. package/dist/v2/playground/chat-canvas.js +88 -0
  85. package/dist/v2/playground/chat-canvas.js.map +1 -0
  86. package/dist/v2/playground/host.d.ts +116 -0
  87. package/dist/v2/playground/host.d.ts.map +1 -0
  88. package/dist/v2/playground/host.js +12 -0
  89. package/dist/v2/playground/host.js.map +1 -0
  90. package/dist/v2/playground/self-host-chat.d.ts +11 -0
  91. package/dist/v2/playground/self-host-chat.d.ts.map +1 -0
  92. package/dist/v2/playground/self-host-chat.js +85 -0
  93. package/dist/v2/playground/self-host-chat.js.map +1 -0
  94. package/dist/v2/playground/self-host.d.ts +2 -0
  95. package/dist/v2/playground/self-host.d.ts.map +1 -0
  96. package/dist/v2/playground/self-host.js +87 -0
  97. package/dist/v2/playground/self-host.js.map +1 -0
  98. package/dist/v2/sessions/host.d.ts +167 -0
  99. package/dist/v2/sessions/host.d.ts.map +1 -0
  100. package/dist/v2/sessions/host.js +12 -0
  101. package/dist/v2/sessions/host.js.map +1 -0
  102. package/dist/v2/sessions/self-host.d.ts +7 -0
  103. package/dist/v2/sessions/self-host.d.ts.map +1 -0
  104. package/dist/v2/sessions/self-host.js +120 -0
  105. package/dist/v2/sessions/self-host.js.map +1 -0
  106. package/dist/v2/sessions/trace-columns.d.ts +4 -0
  107. package/dist/v2/sessions/trace-columns.d.ts.map +1 -0
  108. package/dist/v2/sessions/trace-columns.js +102 -0
  109. package/dist/v2/sessions/trace-columns.js.map +1 -0
  110. package/dist/v2/sessions/trace-detail-view.d.ts +7 -0
  111. package/dist/v2/sessions/trace-detail-view.d.ts.map +1 -0
  112. package/dist/v2/sessions/trace-detail-view.js +346 -0
  113. package/dist/v2/sessions/trace-detail-view.js.map +1 -0
  114. package/dist/v2/sessions/trace-detail.d.ts +133 -0
  115. package/dist/v2/sessions/trace-detail.d.ts.map +1 -0
  116. package/dist/v2/sessions/trace-detail.js +210 -0
  117. package/dist/v2/sessions/trace-detail.js.map +1 -0
  118. package/dist/v2/sessions/trace-normalize.d.ts +60 -0
  119. package/dist/v2/sessions/trace-normalize.d.ts.map +1 -0
  120. package/dist/v2/sessions/trace-normalize.js +87 -0
  121. package/dist/v2/sessions/trace-normalize.js.map +1 -0
  122. package/dist/v2/sessions/trace-table.d.ts +8 -0
  123. package/dist/v2/sessions/trace-table.d.ts.map +1 -0
  124. package/dist/v2/sessions/trace-table.js +27 -0
  125. package/dist/v2/sessions/trace-table.js.map +1 -0
  126. package/dist/v2/shell/coding-agents.d.ts +21 -0
  127. package/dist/v2/shell/coding-agents.d.ts.map +1 -0
  128. package/dist/v2/shell/coding-agents.js +41 -0
  129. package/dist/v2/shell/coding-agents.js.map +1 -0
  130. package/dist/v2/shell/dashboard-shell.d.ts +6 -0
  131. package/dist/v2/shell/dashboard-shell.d.ts.map +1 -0
  132. package/dist/v2/shell/dashboard-shell.js +132 -0
  133. package/dist/v2/shell/dashboard-shell.js.map +1 -0
  134. package/dist/v2/skills/self-host-create-skill-dialog.d.ts +6 -0
  135. package/dist/v2/skills/self-host-create-skill-dialog.d.ts.map +1 -0
  136. package/dist/v2/skills/self-host-create-skill-dialog.js +27 -0
  137. package/dist/v2/skills/self-host-create-skill-dialog.js.map +1 -0
  138. package/dist/v2/skills/self-host-detail.d.ts +4 -0
  139. package/dist/v2/skills/self-host-detail.d.ts.map +1 -0
  140. package/dist/v2/skills/self-host-detail.js +31 -0
  141. package/dist/v2/skills/self-host-detail.js.map +1 -0
  142. package/dist/v2/support/agent-call-snippets.d.ts +35 -0
  143. package/dist/v2/support/agent-call-snippets.d.ts.map +1 -0
  144. package/dist/v2/support/agent-call-snippets.js +113 -0
  145. package/dist/v2/support/agent-call-snippets.js.map +1 -0
  146. package/dist/v2/support/tool-catalog.d.ts +62 -0
  147. package/dist/v2/support/tool-catalog.d.ts.map +1 -0
  148. package/dist/v2/support/tool-catalog.js +271 -0
  149. package/dist/v2/support/tool-catalog.js.map +1 -0
  150. package/dist/v2/support/vault-fields.d.ts +29 -0
  151. package/dist/v2/support/vault-fields.d.ts.map +1 -0
  152. package/dist/v2/support/vault-fields.js +74 -0
  153. package/dist/v2/support/vault-fields.js.map +1 -0
  154. package/dist/v2/tools/param-fields.d.ts +19 -0
  155. package/dist/v2/tools/param-fields.d.ts.map +1 -0
  156. package/dist/v2/tools/param-fields.js +191 -0
  157. package/dist/v2/tools/param-fields.js.map +1 -0
  158. package/dist/v2/tools/self-host.d.ts +7 -0
  159. package/dist/v2/tools/self-host.d.ts.map +1 -0
  160. package/dist/v2/tools/self-host.js +26 -0
  161. package/dist/v2/tools/self-host.js.map +1 -0
  162. package/dist/v2/tools/source-parsing.d.ts +4 -0
  163. package/dist/v2/tools/source-parsing.d.ts.map +1 -0
  164. package/dist/v2/tools/source-parsing.js +15 -0
  165. package/dist/v2/tools/source-parsing.js.map +1 -0
  166. package/dist/v2/tools/tool-detail.d.ts +7 -0
  167. package/dist/v2/tools/tool-detail.d.ts.map +1 -0
  168. package/dist/v2/tools/tool-detail.js +157 -0
  169. package/dist/v2/tools/tool-detail.js.map +1 -0
  170. package/dist/v2/tools/tool-editor-dialog.d.ts +9 -0
  171. package/dist/v2/tools/tool-editor-dialog.d.ts.map +1 -0
  172. package/dist/v2/tools/tool-editor-dialog.js +306 -0
  173. package/dist/v2/tools/tool-editor-dialog.js.map +1 -0
  174. package/dist/v2/tools/tools-view.d.ts +21 -0
  175. package/dist/v2/tools/tools-view.d.ts.map +1 -0
  176. package/dist/v2/tools/tools-view.js +77 -0
  177. package/dist/v2/tools/tools-view.js.map +1 -0
  178. package/dist/v2/ui/bits.d.ts +23 -0
  179. package/dist/v2/ui/bits.d.ts.map +1 -0
  180. package/dist/v2/ui/bits.js +18 -0
  181. package/dist/v2/ui/bits.js.map +1 -0
  182. package/dist/v2/ui/button.d.ts +9 -0
  183. package/dist/v2/ui/button.d.ts.map +1 -0
  184. package/dist/v2/ui/button.js +33 -0
  185. package/dist/v2/ui/button.js.map +1 -0
  186. package/dist/v2/ui/code-block.d.ts +20 -0
  187. package/dist/v2/ui/code-block.d.ts.map +1 -0
  188. package/dist/v2/ui/code-block.js +44 -0
  189. package/dist/v2/ui/code-block.js.map +1 -0
  190. package/dist/v2/ui/code-editor.d.ts +9 -0
  191. package/dist/v2/ui/code-editor.d.ts.map +1 -0
  192. package/dist/v2/ui/code-editor.js +25 -0
  193. package/dist/v2/ui/code-editor.js.map +1 -0
  194. package/dist/v2/ui/copy-button.d.ts +9 -0
  195. package/dist/v2/ui/copy-button.d.ts.map +1 -0
  196. package/dist/v2/ui/copy-button.js +24 -0
  197. package/dist/v2/ui/copy-button.js.map +1 -0
  198. package/dist/v2/ui/data-table.d.ts +40 -0
  199. package/dist/v2/ui/data-table.d.ts.map +1 -0
  200. package/dist/v2/ui/data-table.js +85 -0
  201. package/dist/v2/ui/data-table.js.map +1 -0
  202. package/dist/v2/ui/dialog.d.ts +16 -0
  203. package/dist/v2/ui/dialog.d.ts.map +1 -0
  204. package/dist/v2/ui/dialog.js +39 -0
  205. package/dist/v2/ui/dialog.js.map +1 -0
  206. package/dist/v2/ui/input.d.ts +2 -0
  207. package/dist/v2/ui/input.d.ts.map +1 -0
  208. package/dist/v2/ui/input.js +7 -0
  209. package/dist/v2/ui/input.js.map +1 -0
  210. package/dist/v2/ui/multi-select-filter.d.ts +18 -0
  211. package/dist/v2/ui/multi-select-filter.d.ts.map +1 -0
  212. package/dist/v2/ui/multi-select-filter.js +37 -0
  213. package/dist/v2/ui/multi-select-filter.js.map +1 -0
  214. package/dist/v2/ui/page-header.d.ts +10 -0
  215. package/dist/v2/ui/page-header.d.ts.map +1 -0
  216. package/dist/v2/ui/page-header.js +8 -0
  217. package/dist/v2/ui/page-header.js.map +1 -0
  218. package/dist/v2/ui/refresh-button.d.ts +5 -0
  219. package/dist/v2/ui/refresh-button.d.ts.map +1 -0
  220. package/dist/v2/ui/refresh-button.js +7 -0
  221. package/dist/v2/ui/refresh-button.js.map +1 -0
  222. package/dist/v2/ui/select.d.ts +16 -0
  223. package/dist/v2/ui/select.d.ts.map +1 -0
  224. package/dist/v2/ui/select.js +36 -0
  225. package/dist/v2/ui/select.js.map +1 -0
  226. package/dist/v2/ui/skeleton.d.ts +3 -0
  227. package/dist/v2/ui/skeleton.d.ts.map +1 -0
  228. package/dist/v2/ui/skeleton.js +7 -0
  229. package/dist/v2/ui/skeleton.js.map +1 -0
  230. package/dist/v2/ui/textarea.d.ts +2 -0
  231. package/dist/v2/ui/textarea.d.ts.map +1 -0
  232. package/dist/v2/ui/textarea.js +6 -0
  233. package/dist/v2/ui/textarea.js.map +1 -0
  234. package/dist/v2/utils.d.ts +3 -0
  235. package/dist/v2/utils.d.ts.map +1 -0
  236. package/dist/v2/utils.js +6 -0
  237. package/dist/v2/utils.js.map +1 -0
  238. package/dist/v2/views/agents-detail.d.ts +2 -0
  239. package/dist/v2/views/agents-detail.d.ts.map +1 -0
  240. package/dist/v2/views/agents-detail.js +2 -0
  241. package/dist/v2/views/agents-detail.js.map +1 -0
  242. package/dist/v2/views/agents.d.ts +27 -0
  243. package/dist/v2/views/agents.d.ts.map +1 -0
  244. package/dist/v2/views/agents.js +161 -0
  245. package/dist/v2/views/agents.js.map +1 -0
  246. package/dist/v2/views/files.d.ts +2 -0
  247. package/dist/v2/views/files.d.ts.map +1 -0
  248. package/dist/v2/views/files.js +10 -0
  249. package/dist/v2/views/files.js.map +1 -0
  250. package/dist/v2/views/memory-host.d.ts +10 -0
  251. package/dist/v2/views/memory-host.d.ts.map +1 -0
  252. package/dist/v2/views/memory-host.js +17 -0
  253. package/dist/v2/views/memory-host.js.map +1 -0
  254. package/dist/v2/views/memory-project.d.ts +5 -0
  255. package/dist/v2/views/memory-project.d.ts.map +1 -0
  256. package/dist/v2/views/memory-project.js +36 -0
  257. package/dist/v2/views/memory-project.js.map +1 -0
  258. package/dist/v2/views/memory.d.ts +2 -0
  259. package/dist/v2/views/memory.d.ts.map +1 -0
  260. package/dist/v2/views/memory.js +14 -0
  261. package/dist/v2/views/memory.js.map +1 -0
  262. package/dist/v2/views/playground.d.ts +13 -0
  263. package/dist/v2/views/playground.d.ts.map +1 -0
  264. package/dist/v2/views/playground.js +88 -0
  265. package/dist/v2/views/playground.js.map +1 -0
  266. package/dist/v2/views/sessions-detail.d.ts +8 -0
  267. package/dist/v2/views/sessions-detail.d.ts.map +1 -0
  268. package/dist/v2/views/sessions-detail.js +107 -0
  269. package/dist/v2/views/sessions-detail.js.map +1 -0
  270. package/dist/v2/views/sessions.d.ts +9 -0
  271. package/dist/v2/views/sessions.d.ts.map +1 -0
  272. package/dist/v2/views/sessions.js +9 -0
  273. package/dist/v2/views/sessions.js.map +1 -0
  274. package/dist/v2/views/skills-detail.d.ts +26 -0
  275. package/dist/v2/views/skills-detail.d.ts.map +1 -0
  276. package/dist/v2/views/skills-detail.js +120 -0
  277. package/dist/v2/views/skills-detail.js.map +1 -0
  278. package/dist/v2/views/skills.d.ts +18 -0
  279. package/dist/v2/views/skills.d.ts.map +1 -0
  280. package/dist/v2/views/skills.js +46 -0
  281. package/dist/v2/views/skills.js.map +1 -0
  282. package/package.json +20 -4
  283. package/src/v2.css +212 -0
@@ -0,0 +1,21 @@
1
+ export type ToolRow = {
2
+ name: string;
3
+ description?: string | null;
4
+ };
5
+ /**
6
+ * Project-level Tools. v2 port of app/(dashboard)/projects/[id]/tools/*.
7
+ *
8
+ * Kept: browse the built-in catalog (read-only reference), the project's
9
+ * custom-tools list from GET /v1/projects/:id/tools, and create/edit/delete.
10
+ *
11
+ * Trimmed from v1 (heaviest extras): the AI test/eval generators, the "Try it"
12
+ * runner + AI-example endpoints, and the raw-JSON/guided-form args builder.
13
+ * Authoring is a single Monaco editor + streaming deploy (see
14
+ * tool-editor-dialog.tsx). The runtime endpoints (/generate, /run, /example)
15
+ * are left untouched server-side.
16
+ */
17
+ export declare function ToolsView({ projectId, initialTools, }: {
18
+ projectId: string;
19
+ initialTools: ToolRow[];
20
+ }): import("react/jsx-runtime").JSX.Element;
21
+ //# sourceMappingURL=tools-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools-view.d.ts","sourceRoot":"","sources":["../../../src/v2/tools/tools-view.tsx"],"names":[],"mappings":"AA2BA,MAAM,MAAM,OAAO,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAEpE;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,EACxB,SAAS,EACT,YAAY,GACb,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,OAAO,EAAE,CAAC;CACzB,2CA0LA"}
@@ -0,0 +1,77 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useMemo, useState } from "react";
4
+ import { Plus, Wrench, Trash, WarningCircle, } from "@phosphor-icons/react/dist/ssr";
5
+ import { Link, useMutation, useQuery, useQueryClient } from "../host.js";
6
+ import { useDashboardApi } from "../../host.js";
7
+ import { Button } from "../ui/button.js";
8
+ import { PageHeader } from "../ui/page-header.js";
9
+ import { DataTable } from "../ui/data-table.js";
10
+ import { RefreshButton } from "../ui/refresh-button.js";
11
+ import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from "../ui/dialog.js";
12
+ import { ToolEditorDialog } from "./tool-editor-dialog.js";
13
+ /**
14
+ * Project-level Tools. v2 port of app/(dashboard)/projects/[id]/tools/*.
15
+ *
16
+ * Kept: browse the built-in catalog (read-only reference), the project's
17
+ * custom-tools list from GET /v1/projects/:id/tools, and create/edit/delete.
18
+ *
19
+ * Trimmed from v1 (heaviest extras): the AI test/eval generators, the "Try it"
20
+ * runner + AI-example endpoints, and the raw-JSON/guided-form args builder.
21
+ * Authoring is a single Monaco editor + streaming deploy (see
22
+ * tool-editor-dialog.tsx). The runtime endpoints (/generate, /run, /example)
23
+ * are left untouched server-side.
24
+ */
25
+ export function ToolsView({ projectId, initialTools, }) {
26
+ const api = useDashboardApi();
27
+ const queryClient = useQueryClient();
28
+ const queryKey = ["custom-tools", projectId];
29
+ const { data: tools = initialTools, refetch, isFetching } = useQuery({
30
+ queryKey,
31
+ queryFn: () => api.fetchControlPlane(`/v1/projects/${projectId}/tools`).then((r) => r.data ?? []),
32
+ initialData: initialTools,
33
+ });
34
+ const [editor, setEditor] = useState(null);
35
+ const [confirmDelete, setConfirmDelete] = useState(null);
36
+ const del = useMutation({
37
+ mutationFn: (name) => api.mutateControlPlane(`/v1/projects/${projectId}/tools/${encodeURIComponent(name)}`, { method: "DELETE" }),
38
+ onSuccess: async () => {
39
+ await queryClient.invalidateQueries({ queryKey });
40
+ setConfirmDelete(null);
41
+ },
42
+ });
43
+ const refresh = () => queryClient.invalidateQueries({ queryKey });
44
+ const columns = useMemo(() => [
45
+ {
46
+ id: "name",
47
+ header: "Tool",
48
+ accessorFn: (t) => t.name,
49
+ cell: ({ row }) => (_jsxs(Link, { href: `/projects/${projectId}/tools/${encodeURIComponent(row.original.name)}`, className: "flex items-center gap-2 font-mono text-[13px] font-medium text-foreground transition-colors hover:text-brand", children: [_jsx(Wrench, { size: 13, className: "shrink-0 text-muted-foreground" }), row.original.name] })),
50
+ },
51
+ {
52
+ id: "description",
53
+ header: "Description",
54
+ enableSorting: false,
55
+ accessorFn: (t) => t.description ?? "",
56
+ cell: ({ getValue }) => {
57
+ const d = getValue();
58
+ return d ? (_jsx("span", { className: "block min-w-0 truncate text-[12px] text-muted-foreground", children: d })) : (_jsx("span", { className: "text-[12px] text-muted-foreground/40", children: "\u2014" }));
59
+ },
60
+ },
61
+ {
62
+ id: "actions",
63
+ header: "",
64
+ enableSorting: false,
65
+ cell: ({ row }) => (_jsx("div", { className: "flex items-center justify-end", children: _jsx(Button, { variant: "ghost", size: "icon-sm", "aria-label": `Delete ${row.original.name}`, className: "text-muted-foreground hover:text-destructive", onClick: () => setConfirmDelete(row.original), children: _jsx(Trash, { size: 15 }) }) })),
66
+ meta: { align: "right", width: 96 },
67
+ },
68
+ ], [projectId]);
69
+ return (_jsxs("div", { className: "flex flex-col gap-6", children: [_jsx(PageHeader, { title: "Tool Functions", description: "Custom tools you author \u2014 your agents can call them. Built-in tools are enabled per agent, under Agents \u2192 Tools.", actions: _jsxs(Button, { size: "sm", onClick: () => setEditor({ mode: "create" }), children: [_jsx(Plus, { size: 15, weight: "bold" }), " New tool"] }) }), _jsx(DataTable, { columns: columns, data: tools, getRowId: (t) => t.name, searchPlaceholder: "Search tools\u2026", searchFn: (t, q) => [t.name, t.description].some((v) => (v ?? "").toLowerCase().includes(q)), rightSlot: _jsx(RefreshButton, { onClick: () => refetch(), busy: isFetching }), empty: _jsxs("div", { className: "flex flex-col items-center gap-3 py-6", children: [_jsx("span", { className: "grid h-11 w-11 place-items-center rounded-lg border border-border bg-secondary", children: _jsx(Wrench, { size: 20, className: "text-muted-foreground" }) }), _jsxs("div", { className: "text-center", children: [_jsx("div", { className: "text-sm font-medium text-foreground", children: "No custom tools yet" }), _jsxs("div", { className: "mt-1 text-[13px] text-muted-foreground", children: ["Author a ", _jsx("code", { children: "defineTool" }), " file \u2014 your agents can call it."] })] }), _jsxs(Button, { size: "sm", onClick: () => setEditor({ mode: "create" }), children: [_jsx(Plus, { size: 15, weight: "bold" }), " New tool"] })] }) }), editor && (_jsx(ToolEditorDialog, { projectId: projectId, mode: editor.mode, initialName: editor.mode === "edit" ? editor.name : undefined, open: true, onOpenChange: (o) => {
70
+ if (!o)
71
+ setEditor(null);
72
+ }, onDeployed: refresh })), _jsx(Dialog, { open: !!confirmDelete, onOpenChange: (o) => {
73
+ if (!o)
74
+ setConfirmDelete(null);
75
+ }, children: _jsxs(DialogContent, { showCloseButton: false, className: "v2", children: [_jsxs(DialogHeader, { children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(WarningCircle, { size: 16, className: "text-destructive", weight: "fill" }), _jsx(DialogTitle, { children: "Delete tool" })] }), _jsxs(DialogDescription, { children: ["Delete", " ", _jsx("span", { className: "font-mono font-medium text-foreground", children: confirmDelete?.name }), "? Agents that reference it will no longer be able to call it. This cannot be undone."] })] }), del.isError && (_jsx("p", { className: "text-[12px] text-destructive", children: del.error instanceof Error ? del.error.message : "Failed to delete" })), _jsxs(DialogFooter, { children: [_jsx(DialogClose, { render: _jsx(Button, { variant: "ghost", size: "sm" }), children: "Cancel" }), _jsx(Button, { variant: "destructive", size: "sm", disabled: del.isPending, onClick: () => confirmDelete && del.mutate(confirmDelete.name), children: del.isPending ? "Deleting…" : "Delete tool" })] })] }) })] }));
76
+ }
77
+ //# sourceMappingURL=tools-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools-view.js","sourceRoot":"","sources":["../../../src/v2/tools/tools-view.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { ReactNode } from "react";
2
+ /** A labeled content block with an optional count. */
3
+ export declare function Section({ title, count, action, children, }: {
4
+ title?: string;
5
+ count?: number;
6
+ action?: ReactNode;
7
+ children: ReactNode;
8
+ }): import("react/jsx-runtime").JSX.Element;
9
+ export declare function Chip({ children, brand, }: {
10
+ children: ReactNode;
11
+ brand?: boolean;
12
+ }): import("react/jsx-runtime").JSX.Element;
13
+ export declare function EmptyBox({ children }: {
14
+ children: ReactNode;
15
+ }): import("react/jsx-runtime").JSX.Element;
16
+ /** Accessible on/off switch, brand-tinted when on. */
17
+ export declare function Toggle({ checked, onChange, disabled, label, }: {
18
+ checked: boolean;
19
+ onChange: () => void;
20
+ disabled?: boolean;
21
+ label?: string;
22
+ }): import("react/jsx-runtime").JSX.Element;
23
+ //# sourceMappingURL=bits.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bits.d.ts","sourceRoot":"","sources":["../../../src/v2/ui/bits.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,sDAAsD;AACtD,wBAAgB,OAAO,CAAC,EACtB,KAAK,EACL,KAAK,EACL,MAAM,EACN,QAAQ,GACT,EAAE;IACD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;CACrB,2CA0BA;AAED,wBAAgB,IAAI,CAAC,EACnB,QAAQ,EACR,KAAK,GACN,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,2CAYA;AAED,wBAAgB,QAAQ,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2CAM7D;AAED,sDAAsD;AACtD,wBAAgB,MAAM,CAAC,EACrB,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,KAAK,GACN,EAAE;IACD,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,2CAoBA"}
@@ -0,0 +1,18 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /** A labeled content block with an optional count. */
3
+ export function Section({ title, count, action, children, }) {
4
+ return (_jsxs("section", { className: "mt-7 first:mt-0", children: [(title || count !== undefined || action) && (_jsxs("div", { className: "mb-2.5 flex items-center justify-between gap-2", children: [_jsxs("div", { className: "flex items-baseline gap-2", children: [title && (_jsx("h2", { className: "text-[13px] font-medium text-foreground", children: title })), count !== undefined && (_jsx("span", { className: "text-[12px] text-muted-foreground/60", "data-tabular": true, children: count }))] }), action] })), children] }));
5
+ }
6
+ export function Chip({ children, brand, }) {
7
+ return (_jsx("span", { className: `inline-flex items-center rounded border px-2 py-0.5 font-mono text-[11px] ${brand
8
+ ? "border-brand/30 bg-brand/10 text-brand"
9
+ : "border-border bg-secondary/50 text-muted-foreground"}`, children: children }));
10
+ }
11
+ export function EmptyBox({ children }) {
12
+ return (_jsx("div", { className: "rounded-lg border border-dashed border-border px-3.5 py-4 text-[13px] text-muted-foreground/60", children: children }));
13
+ }
14
+ /** Accessible on/off switch, brand-tinted when on. */
15
+ export function Toggle({ checked, onChange, disabled, label, }) {
16
+ return (_jsx("button", { type: "button", role: "switch", "aria-checked": checked, "aria-label": label, disabled: disabled, onClick: onChange, className: `relative inline-flex h-[18px] w-[30px] shrink-0 items-center rounded-full transition-colors disabled:opacity-40 ${checked ? "bg-brand" : "bg-secondary"}`, children: _jsx("span", { className: `inline-block h-3.5 w-3.5 transform rounded-full bg-background shadow-sm transition-transform ${checked ? "translate-x-[13px]" : "translate-x-[2px]"}` }) }));
17
+ }
18
+ //# sourceMappingURL=bits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bits.js","sourceRoot":"","sources":["../../../src/v2/ui/bits.tsx"],"names":[],"mappings":";AAEA,sDAAsD;AACtD,MAAM,UAAU,OAAO,CAAC,EACtB,KAAK,EACL,KAAK,EACL,MAAM,EACN,QAAQ,GAMT;IACC,OAAO,CACL,mBAAS,SAAS,EAAC,iBAAiB,aACjC,CAAC,KAAK,IAAI,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,CAC3C,eAAK,SAAS,EAAC,gDAAgD,aAC7D,eAAK,SAAS,EAAC,2BAA2B,aACvC,KAAK,IAAI,CACR,aAAI,SAAS,EAAC,yCAAyC,YACpD,KAAK,GACH,CACN,EACA,KAAK,KAAK,SAAS,IAAI,CACtB,eACE,SAAS,EAAC,sCAAsC,kCAG/C,KAAK,GACD,CACR,IACG,EACL,MAAM,IACH,CACP,EACA,QAAQ,IACD,CACX,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,EACnB,QAAQ,EACR,KAAK,GAIN;IACC,OAAO,CACL,eACE,SAAS,EAAE,6EACT,KAAK;YACH,CAAC,CAAC,wCAAwC;YAC1C,CAAC,CAAC,qDACN,EAAE,YAED,QAAQ,GACJ,CACR,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,EAAE,QAAQ,EAA2B;IAC5D,OAAO,CACL,cAAK,SAAS,EAAC,gGAAgG,YAC5G,QAAQ,GACL,CACP,CAAC;AACJ,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,MAAM,CAAC,EACrB,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,KAAK,GAMN;IACC,OAAO,CACL,iBACE,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,QAAQ,kBACC,OAAO,gBACT,KAAK,EACjB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAE,mHACT,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cACzB,EAAE,YAEF,eACE,SAAS,EAAE,gGACT,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,mBACnC,EAAE,GACF,GACK,CACV,CAAC;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { Button as ButtonPrimitive } from "@base-ui/react/button";
2
+ import { type VariantProps } from "class-variance-authority";
3
+ declare const buttonVariants: (props?: ({
4
+ variant?: "link" | "secondary" | "ghost" | "default" | "outline" | "destructive" | null | undefined;
5
+ size?: "default" | "xs" | "sm" | "lg" | "icon" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
6
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
+ export declare function Button({ className, variant, size, ...props }: ButtonPrimitive.Props & VariantProps<typeof buttonVariants>): import("react/jsx-runtime").JSX.Element;
8
+ export { buttonVariants };
9
+ //# sourceMappingURL=button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../src/v2/ui/button.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGlE,QAAA,MAAM,cAAc;;;8EAyBnB,CAAC;AAEF,wBAAgB,MAAM,CAAC,EACrB,SAAS,EACT,OAAmB,EACnB,IAAgB,EAChB,GAAG,KAAK,EACT,EAAE,eAAe,CAAC,KAAK,GAAG,YAAY,CAAC,OAAO,cAAc,CAAC,2CAQ7D;AAED,OAAO,EAAE,cAAc,EAAE,CAAC"}
@@ -0,0 +1,33 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { Button as ButtonPrimitive } from "@base-ui/react/button";
4
+ import { cva } from "class-variance-authority";
5
+ import { cn } from "../utils.js";
6
+ const buttonVariants = cva("group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", {
7
+ variants: {
8
+ variant: {
9
+ default: "bg-primary text-primary-foreground [a]:hover:bg-primary/80",
10
+ outline: "border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",
11
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",
12
+ ghost: "hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",
13
+ destructive: "bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",
14
+ link: "text-primary underline-offset-4 hover:underline",
15
+ },
16
+ size: {
17
+ default: "h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
18
+ xs: "h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",
19
+ sm: "h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",
20
+ lg: "h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3",
21
+ icon: "size-8",
22
+ "icon-xs": "size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3",
23
+ "icon-sm": "size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg",
24
+ "icon-lg": "size-9",
25
+ },
26
+ },
27
+ defaultVariants: { variant: "default", size: "default" },
28
+ });
29
+ export function Button({ className, variant = "default", size = "default", ...props }) {
30
+ return (_jsx(ButtonPrimitive, { "data-slot": "button", className: cn(buttonVariants({ variant, size, className })), ...props }));
31
+ }
32
+ export { buttonVariants };
33
+ //# sourceMappingURL=button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.js","sourceRoot":"","sources":["../../../src/v2/ui/button.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEjC,MAAM,cAAc,GAAG,GAAG,CACxB,wkBAAwkB,EACxkB;IACE,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EAAE,4DAA4D;YACrE,OAAO,EAAE,iLAAiL;YAC1L,SAAS,EAAE,iIAAiI;YAC5I,KAAK,EAAE,kHAAkH;YACzH,WAAW,EAAE,6NAA6N;YAC1O,IAAI,EAAE,iDAAiD;SACxD;QACD,IAAI,EAAE;YACJ,OAAO,EAAE,sFAAsF;YAC/F,EAAE,EAAE,+MAA+M;YACnN,EAAE,EAAE,yNAAyN;YAC7N,EAAE,EAAE,sFAAsF;YAC1F,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,yHAAyH;YACpI,SAAS,EAAE,oFAAoF;YAC/F,SAAS,EAAE,QAAQ;SACpB;KACF;IACD,eAAe,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;CACzD,CACF,CAAC;AAEF,MAAM,UAAU,MAAM,CAAC,EACrB,SAAS,EACT,OAAO,GAAG,SAAS,EACnB,IAAI,GAAG,SAAS,EAChB,GAAG,KAAK,EACoD;IAC5D,OAAO,CACL,KAAC,eAAe,iBACJ,QAAQ,EAClB,SAAS,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,KACvD,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,cAAc,EAAE,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Syntax-highlighted, copyable code block powered by Shiki (already a dep).
3
+ * Shiki is lazy-imported on mount so it stays out of the main bundle, and we
4
+ * emit a dual light/dark theme (CSS-variable driven — see the `.shiki` rules in
5
+ * v2.css) so it tracks the v2 theme toggle. Falls back to plain <pre> until the
6
+ * highlighter resolves (or if it fails).
7
+ */
8
+ export declare function CodeBlock({ code, lang, className, maxHeightClass, showCopy, bare, wrap, }: {
9
+ code: string;
10
+ lang?: string;
11
+ className?: string;
12
+ maxHeightClass?: string;
13
+ /** Built-in top-right copy button. Turn off to place your own, non-overlapping. */
14
+ showCopy?: boolean;
15
+ /** Drop the border/rounding so the block can sit inside another container. */
16
+ bare?: boolean;
17
+ /** Wrap long lines instead of requiring horizontal scrolling. */
18
+ wrap?: boolean;
19
+ }): import("react/jsx-runtime").JSX.Element;
20
+ //# sourceMappingURL=code-block.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-block.d.ts","sourceRoot":"","sources":["../../../src/v2/ui/code-block.tsx"],"names":[],"mappings":"AAKA;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,IAAa,EACb,SAAS,EACT,cAA+B,EAC/B,QAAe,EACf,IAAY,EACZ,IAAY,GACb,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mFAAmF;IACnF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8EAA8E;IAC9E,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,iEAAiE;IACjE,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,2CAgDA"}
@@ -0,0 +1,44 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useEffect, useState } from "react";
4
+ import { CopyButton } from "./copy-button.js";
5
+ /**
6
+ * Syntax-highlighted, copyable code block powered by Shiki (already a dep).
7
+ * Shiki is lazy-imported on mount so it stays out of the main bundle, and we
8
+ * emit a dual light/dark theme (CSS-variable driven — see the `.shiki` rules in
9
+ * v2.css) so it tracks the v2 theme toggle. Falls back to plain <pre> until the
10
+ * highlighter resolves (or if it fails).
11
+ */
12
+ export function CodeBlock({ code, lang = "json", className, maxHeightClass = "max-h-[60vh]", showCopy = true, bare = false, wrap = false, }) {
13
+ const frame = bare ? "" : "rounded-lg border border-border";
14
+ const overflow = wrap ? "overflow-y-auto overflow-x-hidden" : "overflow-auto";
15
+ const highlightedWrap = wrap
16
+ ? "[&_pre]:whitespace-pre-wrap [&_pre]:break-words [&_code]:whitespace-pre-wrap [&_code]:break-words [&_.line]:whitespace-pre-wrap [&_.line]:break-words"
17
+ : "[&_pre]:whitespace-pre";
18
+ const fallbackWrap = wrap ? "whitespace-pre-wrap break-words" : "whitespace-pre";
19
+ const [html, setHtml] = useState(null);
20
+ useEffect(() => {
21
+ let cancelled = false;
22
+ (async () => {
23
+ try {
24
+ const { codeToHtml } = await import("shiki");
25
+ const out = await codeToHtml(code, {
26
+ lang,
27
+ themes: { light: "github-light", dark: "github-dark" },
28
+ defaultColor: false,
29
+ });
30
+ if (!cancelled)
31
+ setHtml(out);
32
+ }
33
+ catch {
34
+ if (!cancelled)
35
+ setHtml(null);
36
+ }
37
+ })();
38
+ return () => {
39
+ cancelled = true;
40
+ };
41
+ }, [code, lang]);
42
+ return (_jsxs("div", { className: `relative min-w-0 max-w-full ${className ?? ""}`, children: [showCopy && (_jsx(CopyButton, { text: code, className: "absolute right-2 top-2 z-10" })), html ? (_jsx("div", { className: `shiki-block ${maxHeightClass} ${overflow} ${frame} bg-card p-4 text-[12.5px] leading-relaxed [&_pre]:m-0 ${highlightedWrap} [&_pre]:!bg-transparent [&_pre]:font-mono`, dangerouslySetInnerHTML: { __html: html } })) : (_jsx("pre", { className: `${maxHeightClass} ${overflow} ${frame} bg-card p-4 font-mono text-[12.5px] leading-relaxed text-foreground ${fallbackWrap}`, children: code }))] }));
43
+ }
44
+ //# sourceMappingURL=code-block.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-block.js","sourceRoot":"","sources":["../../../src/v2/ui/code-block.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CAAC,EACxB,IAAI,EACJ,IAAI,GAAG,MAAM,EACb,SAAS,EACT,cAAc,GAAG,cAAc,EAC/B,QAAQ,GAAG,IAAI,EACf,IAAI,GAAG,KAAK,EACZ,IAAI,GAAG,KAAK,GAYb;IACC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iCAAiC,CAAC;IAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,eAAe,CAAC;IAC9E,MAAM,eAAe,GAAG,IAAI;QAC1B,CAAC,CAAC,uJAAuJ;QACzJ,CAAC,CAAC,wBAAwB,CAAC;IAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,gBAAgB,CAAC;IACjF,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAEtD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,CAAC,KAAK,IAAI,EAAE;YACV,IAAI,CAAC;gBACH,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC7C,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE;oBACjC,IAAI;oBACJ,MAAM,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE;oBACtD,YAAY,EAAE,KAAK;iBACpB,CAAC,CAAC;gBACH,IAAI,CAAC,SAAS;oBAAE,OAAO,CAAC,GAAG,CAAC,CAAC;YAC/B,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,CAAC,SAAS;oBAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YAChC,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QACL,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAEjB,OAAO,CACL,eAAK,SAAS,EAAE,+BAA+B,SAAS,IAAI,EAAE,EAAE,aAC7D,QAAQ,IAAI,CACX,KAAC,UAAU,IAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAC,6BAA6B,GAAG,CACnE,EACA,IAAI,CAAC,CAAC,CAAC,CACN,cACE,SAAS,EAAE,eAAe,cAAc,IAAI,QAAQ,IAAI,KAAK,0DAA0D,eAAe,4CAA4C,EAClL,uBAAuB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GACzC,CACH,CAAC,CAAC,CAAC,CACF,cACE,SAAS,EAAE,GAAG,cAAc,IAAI,QAAQ,IAAI,KAAK,wEAAwE,YAAY,EAAE,YAEtI,IAAI,GACD,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ export declare function CodeEditor({ value, onChange, language, height, readOnly, placeholder, }: {
2
+ value: string;
3
+ onChange: (value: string) => void;
4
+ language: string;
5
+ height?: string | number;
6
+ readOnly?: boolean;
7
+ placeholder?: string;
8
+ }): import("react/jsx-runtime").JSX.Element;
9
+ //# sourceMappingURL=code-editor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-editor.d.ts","sourceRoot":"","sources":["../../../src/v2/ui/code-editor.tsx"],"names":[],"mappings":"AAkBA,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,MAAY,EACZ,QAAgB,EAChB,WAAW,GACZ,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,2CA+BA"}
@@ -0,0 +1,25 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { lazy, Suspense } from "react";
4
+ import { useTheme } from "next-themes";
5
+ import { CircleNotch } from "@phosphor-icons/react/dist/ssr";
6
+ const Editor = lazy(() => import("@monaco-editor/react").then((module) => ({ default: module.default })));
7
+ function EditorLoading() {
8
+ return (_jsxs("div", { className: "flex h-full min-h-[80px] items-center justify-center text-sm text-muted-foreground", children: [_jsx(CircleNotch, { className: "mr-2 h-4 w-4 animate-spin" }), " Loading editor\u2026"] }));
9
+ }
10
+ export function CodeEditor({ value, onChange, language, height = 200, readOnly = false, placeholder, }) {
11
+ const { resolvedTheme } = useTheme();
12
+ return (_jsx("div", { className: "overflow-hidden rounded-lg border border-border", style: { height }, children: _jsx(Suspense, { fallback: _jsx(EditorLoading, {}), children: _jsx(Editor, { height: "100%", language: language, theme: resolvedTheme === "light" ? "vs" : "vs-dark", value: value, onChange: (next) => onChange(next ?? ""), options: {
13
+ readOnly,
14
+ placeholder,
15
+ minimap: { enabled: false },
16
+ fontSize: 12.5,
17
+ lineNumbers: "on",
18
+ scrollBeyondLastLine: false,
19
+ wordWrap: "on",
20
+ automaticLayout: true,
21
+ tabSize: 2,
22
+ padding: { top: 10, bottom: 10 },
23
+ } }) }) }));
24
+ }
25
+ //# sourceMappingURL=code-editor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-editor.js","sourceRoot":"","sources":["../../../src/v2/ui/code-editor.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAE7D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CACvB,MAAM,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAC/E,CAAC;AAEF,SAAS,aAAa;IACpB,OAAO,CACL,eAAK,SAAS,EAAC,oFAAoF,aACjG,KAAC,WAAW,IAAC,SAAS,EAAC,2BAA2B,GAAG,6BACjD,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,EACzB,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,MAAM,GAAG,GAAG,EACZ,QAAQ,GAAG,KAAK,EAChB,WAAW,GAQZ;IACC,MAAM,EAAE,aAAa,EAAE,GAAG,QAAQ,EAAE,CAAC;IAErC,OAAO,CACL,cACE,SAAS,EAAC,iDAAiD,EAC3D,KAAK,EAAE,EAAE,MAAM,EAAE,YAEjB,KAAC,QAAQ,IAAC,QAAQ,EAAE,KAAC,aAAa,KAAG,YACnC,KAAC,MAAM,IACL,MAAM,EAAC,MAAM,EACb,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EACnD,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,EACxC,OAAO,EAAE;oBACP,QAAQ;oBACR,WAAW;oBACX,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;oBAC3B,QAAQ,EAAE,IAAI;oBACd,WAAW,EAAE,IAAI;oBACjB,oBAAoB,EAAE,KAAK;oBAC3B,QAAQ,EAAE,IAAI;oBACd,eAAe,EAAE,IAAI;oBACrB,OAAO,EAAE,CAAC;oBACV,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;iBACjC,GACD,GACO,GACP,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ /** Small quick-copy button — drop it into the top-right of any code block. */
2
+ export declare function CopyButton({ text, className, size, label, }: {
3
+ text: string;
4
+ className?: string;
5
+ size?: "sm" | "md";
6
+ /** When set, renders a labelled button (icon + text) instead of icon-only. */
7
+ label?: string;
8
+ }): import("react/jsx-runtime").JSX.Element;
9
+ //# sourceMappingURL=copy-button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copy-button.d.ts","sourceRoot":"","sources":["../../../src/v2/ui/copy-button.tsx"],"names":[],"mappings":"AAKA,8EAA8E;AAC9E,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,SAAS,EACT,IAAW,EACX,KAAK,GACN,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,2CA8CA"}
@@ -0,0 +1,24 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useState } from "react";
4
+ import { Copy, Check } from "@phosphor-icons/react/dist/ssr";
5
+ /** Small quick-copy button — drop it into the top-right of any code block. */
6
+ export function CopyButton({ text, className, size = "sm", label, }) {
7
+ const [copied, setCopied] = useState(false);
8
+ const icon = size === "md" ? 15 : 13;
9
+ const copy = async () => {
10
+ try {
11
+ await navigator.clipboard.writeText(text);
12
+ setCopied(true);
13
+ setTimeout(() => setCopied(false), 1500);
14
+ }
15
+ catch { }
16
+ };
17
+ const Glyph = copied ? (_jsx(Check, { size: icon, weight: "bold", className: "text-brand" })) : (_jsx(Copy, { size: icon }));
18
+ if (label) {
19
+ return (_jsxs("button", { type: "button", onClick: copy, className: `inline-flex h-8 shrink-0 items-center gap-1.5 rounded-md border border-border bg-card/80 px-2.5 text-[12px] font-medium text-muted-foreground backdrop-blur transition-colors hover:text-foreground ${className ?? ""}`, children: [Glyph, label] }));
20
+ }
21
+ const box = size === "md" ? "h-8 w-8" : "h-7 w-7";
22
+ return (_jsx("button", { type: "button", "aria-label": copied ? "Copied" : "Copy", onClick: copy, className: `grid ${box} shrink-0 place-items-center rounded-md border border-border bg-card/80 text-muted-foreground backdrop-blur transition-colors hover:text-foreground ${className ?? ""}`, children: Glyph }));
23
+ }
24
+ //# sourceMappingURL=copy-button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copy-button.js","sourceRoot":"","sources":["../../../src/v2/ui/copy-button.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAE7D,8EAA8E;AAC9E,MAAM,UAAU,UAAU,CAAC,EACzB,IAAI,EACJ,SAAS,EACT,IAAI,GAAG,IAAI,EACX,KAAK,GAON;IACC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAErC,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;QACtB,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC1C,SAAS,CAAC,IAAI,CAAC,CAAC;YAChB,UAAU,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CACrB,KAAC,KAAK,IAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAC,MAAM,EAAC,SAAS,EAAC,YAAY,GAAG,CAC3D,CAAC,CAAC,CAAC,CACF,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,GAAI,CACrB,CAAC;IAEF,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CACL,kBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,IAAI,EACb,SAAS,EAAE,uMACT,SAAS,IAAI,EACf,EAAE,aAED,KAAK,EACL,KAAK,IACC,CACV,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IAClD,OAAO,CACL,iBACE,IAAI,EAAC,QAAQ,gBACD,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EACtC,OAAO,EAAE,IAAI,EACb,SAAS,EAAE,QAAQ,GAAG,uJACpB,SAAS,IAAI,EACf,EAAE,YAED,KAAK,GACC,CACV,CAAC;AACJ,CAAC"}
@@ -0,0 +1,40 @@
1
+ import { type ReactNode } from "react";
2
+ import { type ColumnDef, type SortingState } from "@tanstack/react-table";
3
+ /** Per-column presentation hints, read off `columnDef.meta`. */
4
+ export type ColumnMeta = {
5
+ align?: "left" | "right" | "center";
6
+ headerClassName?: string;
7
+ cellClassName?: string;
8
+ /** Fixed pixel width for this column. */
9
+ width?: number;
10
+ };
11
+ export type DataTableProps<T> = {
12
+ columns: ColumnDef<T, unknown>[];
13
+ data: T[];
14
+ /** Stable row id — defaults to index. */
15
+ getRowId?: (row: T) => string;
16
+ /** Whole-row navigation target. Rows become clickable when provided. */
17
+ rowHref?: (row: T) => string;
18
+ /** Whole-row action for in-page navigation. */
19
+ rowOnClick?: (row: T) => void;
20
+ /** Optional expanded row renderer, displayed directly below the matching row. */
21
+ renderExpandedRow?: (row: T) => ReactNode;
22
+ /** Whether a row should render its expanded content. */
23
+ isRowExpanded?: (row: T) => boolean;
24
+ /** Inline search box. Omit to hide. */
25
+ searchPlaceholder?: string;
26
+ /** Custom matcher for the search box. Defaults to substring over all cells. */
27
+ searchFn?: (row: T, query: string) => boolean;
28
+ /** Inline filter controls, rendered after the search box. */
29
+ filters?: ReactNode;
30
+ /** Right-aligned toolbar slot (e.g. a refresh control). */
31
+ rightSlot?: ReactNode;
32
+ pageSize?: number;
33
+ initialSorting?: SortingState;
34
+ /** Empty state when there is no data at all. */
35
+ empty?: ReactNode;
36
+ /** Empty state when filters/search exclude everything. */
37
+ emptyFiltered?: ReactNode;
38
+ };
39
+ export declare function DataTable<T>({ columns, data, getRowId, rowHref, rowOnClick, renderExpandedRow, isRowExpanded, searchPlaceholder, searchFn, filters, rightSlot, pageSize, initialSorting, empty, emptyFiltered, }: DataTableProps<T>): import("react/jsx-runtime").JSX.Element;
40
+ //# sourceMappingURL=data-table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table.d.ts","sourceRoot":"","sources":["../../../src/v2/ui/data-table.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAsB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAC3D,OAAO,EACL,KAAK,SAAS,EACd,KAAK,YAAY,EAQlB,MAAM,uBAAuB,CAAC;AAW/B,gEAAgE;AAChE,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IACpC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI;IAC9B,OAAO,EAAE,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC;IACjC,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,yCAAyC;IACzC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC;IAC9B,wEAAwE;IACxE,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC;IAC7B,+CAA+C;IAC/C,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC;IAC9B,iFAAiF;IACjF,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,SAAS,CAAC;IAC1C,wDAAwD;IACxD,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC;IACpC,uCAAuC;IACvC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9C,6DAA6D;IAC7D,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,YAAY,CAAC;IAC9B,gDAAgD;IAChD,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,0DAA0D;IAC1D,aAAa,CAAC,EAAE,SAAS,CAAC;CAC3B,CAAC;AAEF,wBAAgB,SAAS,CAAC,CAAC,EAAE,EAC3B,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,QAAQ,EACR,OAAO,EACP,SAAS,EACT,QAAa,EACb,cAAmB,EACnB,KAAK,EACL,aAAa,GACd,EAAE,cAAc,CAAC,CAAC,CAAC,2CAsOnB"}
@@ -0,0 +1,85 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Fragment, useState } from "react";
4
+ import { flexRender, getCoreRowModel, getSortedRowModel, getFilteredRowModel, getPaginationRowModel, useReactTable, } from "@tanstack/react-table";
5
+ import { MagnifyingGlass, CaretUp, CaretDown, CaretUpDown, CaretLeft, CaretRight, } from "@phosphor-icons/react/dist/ssr";
6
+ import { useDashboardHost } from "../../host.js";
7
+ export function DataTable({ columns, data, getRowId, rowHref, rowOnClick, renderExpandedRow, isRowExpanded, searchPlaceholder, searchFn, filters, rightSlot, pageSize = 12, initialSorting = [], empty, emptyFiltered, }) {
8
+ const host = useDashboardHost();
9
+ const [sorting, setSorting] = useState(initialSorting);
10
+ const [globalFilter, setGlobalFilter] = useState("");
11
+ const globalFilterFn = (row, _columnId, value) => {
12
+ const q = String(value).trim().toLowerCase();
13
+ if (!q)
14
+ return true;
15
+ if (searchFn)
16
+ return searchFn(row.original, q);
17
+ return Object.values(row.original).some((v) => String(v ?? "").toLowerCase().includes(q));
18
+ };
19
+ const table = useReactTable({
20
+ data,
21
+ columns,
22
+ state: { sorting, globalFilter },
23
+ onSortingChange: setSorting,
24
+ onGlobalFilterChange: setGlobalFilter,
25
+ globalFilterFn,
26
+ getRowId: getRowId ? (row) => getRowId(row) : undefined,
27
+ getCoreRowModel: getCoreRowModel(),
28
+ getSortedRowModel: getSortedRowModel(),
29
+ getFilteredRowModel: getFilteredRowModel(),
30
+ getPaginationRowModel: getPaginationRowModel(),
31
+ initialState: { pagination: { pageSize } },
32
+ });
33
+ const rows = table.getRowModel().rows;
34
+ const filteredCount = table.getFilteredRowModel().rows.length;
35
+ const showToolbar = searchPlaceholder || filters || rightSlot;
36
+ const showPagination = table.getPageCount() > 1;
37
+ return (_jsxs("div", { className: "flex flex-col gap-3", children: [showToolbar && (_jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [searchPlaceholder && (_jsxs("div", { className: "relative", children: [_jsx(MagnifyingGlass, { size: 14, className: "pointer-events-none absolute left-2.5 top-1/2 -translate-y-1/2 text-muted-foreground" }), _jsx("input", { value: globalFilter, onChange: (e) => setGlobalFilter(e.target.value), placeholder: searchPlaceholder, className: "h-8 w-56 rounded-md border border-border bg-transparent pl-8 pr-3 text-[13px] text-foreground placeholder:text-muted-foreground/50 focus:border-ring/50 focus:outline-none" })] })), filters, _jsx("div", { className: "ml-auto flex items-center gap-3", children: rightSlot })] })), _jsxs("div", { className: "overflow-hidden rounded-lg border border-border bg-card", children: [_jsx("div", { className: "overflow-x-auto", children: _jsxs("table", { className: "w-full border-collapse text-sm", children: [_jsx("thead", { children: table.getHeaderGroups().map((hg) => (_jsx("tr", { className: "border-b border-border", children: hg.headers.map((header) => {
38
+ const meta = header.column.columnDef.meta;
39
+ const canSort = header.column.getCanSort();
40
+ const sorted = header.column.getIsSorted();
41
+ return (_jsx("th", { style: meta?.width ? { width: meta.width } : undefined, className: `bg-muted/40 px-3.5 py-2 text-[11px] font-medium uppercase tracking-[0.06em] text-muted-foreground ${meta?.align === "right"
42
+ ? "text-right"
43
+ : meta?.align === "center"
44
+ ? "text-center"
45
+ : "text-left"} ${meta?.headerClassName ?? ""}`, children: header.isPlaceholder ? null : canSort ? (_jsxs("button", { type: "button", onClick: header.column.getToggleSortingHandler(), className: `inline-flex items-center gap-1 transition-colors hover:text-foreground ${meta?.align === "right"
46
+ ? "flex-row-reverse"
47
+ : ""}`, children: [flexRender(header.column.columnDef.header, header.getContext()), sorted === "asc" ? (_jsx(CaretUp, { size: 11, weight: "bold", className: "text-foreground" })) : sorted === "desc" ? (_jsx(CaretDown, { size: 11, weight: "bold", className: "text-foreground" })) : (_jsx(CaretUpDown, { size: 11, className: "text-muted-foreground/40" }))] })) : (flexRender(header.column.columnDef.header, header.getContext())) }, header.id));
48
+ }) }, hg.id))) }), _jsxs("tbody", { children: [rows.map((row) => {
49
+ const href = rowHref?.(row.original);
50
+ const clickable = !!href || !!rowOnClick;
51
+ const expanded = renderExpandedRow && isRowExpanded?.(row.original);
52
+ return (_jsxs(Fragment, { children: [_jsx("tr", { "data-row": true, onClick: clickable
53
+ ? () => {
54
+ if (href) {
55
+ host.navigate(href);
56
+ }
57
+ else
58
+ rowOnClick?.(row.original);
59
+ }
60
+ : undefined, onKeyDown: clickable
61
+ ? (e) => {
62
+ if (e.key !== "Enter")
63
+ return;
64
+ if (href) {
65
+ host.navigate(href);
66
+ }
67
+ else
68
+ rowOnClick?.(row.original);
69
+ }
70
+ : undefined, tabIndex: clickable ? 0 : undefined, className: `group border-b border-border transition-colors ${clickable ? "cursor-pointer hover:bg-secondary/50" : ""} ${expanded ? "bg-secondary/30" : ""}`, children: row.getVisibleCells().map((cell) => {
71
+ const meta = cell.column.columnDef.meta;
72
+ return (_jsx("td", { className: `min-w-0 px-3.5 py-2.5 align-middle ${meta?.align === "right"
73
+ ? "text-right"
74
+ : meta?.align === "center"
75
+ ? "text-center"
76
+ : "text-left"} ${meta?.cellClassName ?? ""}`, children: flexRender(cell.column.columnDef.cell, cell.getContext()) }, cell.id));
77
+ }) }), expanded && (_jsx("tr", { className: "border-b border-border last:border-0", children: _jsx("td", { colSpan: columns.length, className: "bg-background p-3", children: renderExpandedRow(row.original) }) }))] }, row.id));
78
+ }), rows.length === 0 && (_jsx("tr", { children: _jsx("td", { colSpan: columns.length, className: "px-3.5 py-14 text-center", children: data.length === 0
79
+ ? (empty ?? (_jsx("span", { className: "text-sm text-muted-foreground", children: "Nothing here yet." })))
80
+ : (emptyFiltered ?? (_jsx("span", { className: "text-sm text-muted-foreground", children: "No matches." }))) }) }))] })] }) }), showPagination && (_jsxs("div", { className: "flex items-center justify-between border-t border-border px-3.5 py-2", children: [_jsxs("span", { className: "text-xs text-muted-foreground", "data-tabular": true, children: [table.getState().pagination.pageIndex * pageSize + 1, "\u2013", Math.min((table.getState().pagination.pageIndex + 1) * pageSize, filteredCount), " ", "of ", filteredCount] }), _jsxs("div", { className: "flex items-center gap-1", children: [_jsx(PagerButton, { disabled: !table.getCanPreviousPage(), onClick: () => table.previousPage(), label: "Previous page", children: _jsx(CaretLeft, { size: 13 }) }), _jsx(PagerButton, { disabled: !table.getCanNextPage(), onClick: () => table.nextPage(), label: "Next page", children: _jsx(CaretRight, { size: 13 }) })] })] }))] })] }));
81
+ }
82
+ function PagerButton({ children, disabled, onClick, label, }) {
83
+ return (_jsx("button", { type: "button", onClick: onClick, disabled: disabled, "aria-label": label, className: "grid h-7 w-7 place-items-center rounded-md border border-border text-muted-foreground transition-colors hover:bg-secondary hover:text-foreground disabled:pointer-events-none disabled:opacity-30", children: children }));
84
+ }
85
+ //# sourceMappingURL=data-table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table.js","sourceRoot":"","sources":["../../../src/v2/ui/data-table.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import * as React from "react";
2
+ import { Dialog as DialogPrimitive } from "@base-ui/react/dialog";
3
+ declare function Dialog(props: DialogPrimitive.Root.Props): import("react/jsx-runtime").JSX.Element;
4
+ declare function DialogTrigger(props: DialogPrimitive.Trigger.Props): import("react/jsx-runtime").JSX.Element;
5
+ declare function DialogPortal(props: DialogPrimitive.Portal.Props): import("react/jsx-runtime").JSX.Element;
6
+ declare function DialogClose(props: DialogPrimitive.Close.Props): import("react/jsx-runtime").JSX.Element;
7
+ declare function DialogOverlay({ className, ...props }: DialogPrimitive.Backdrop.Props): import("react/jsx-runtime").JSX.Element;
8
+ declare function DialogContent({ className, children, showCloseButton, ...props }: DialogPrimitive.Popup.Props & {
9
+ showCloseButton?: boolean;
10
+ }): import("react/jsx-runtime").JSX.Element;
11
+ declare function DialogHeader({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
12
+ declare function DialogFooter({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
13
+ declare function DialogTitle({ className, ...props }: DialogPrimitive.Title.Props): import("react/jsx-runtime").JSX.Element;
14
+ declare function DialogDescription({ className, ...props }: DialogPrimitive.Description.Props): import("react/jsx-runtime").JSX.Element;
15
+ export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger };
16
+ //# sourceMappingURL=dialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialog.d.ts","sourceRoot":"","sources":["../../../src/v2/ui/dialog.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAKlE,iBAAS,MAAM,CAAC,KAAK,EAAE,eAAe,CAAC,IAAI,CAAC,KAAK,2CAEhD;AACD,iBAAS,aAAa,CAAC,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,KAAK,2CAE1D;AACD,iBAAS,YAAY,CAAC,KAAK,EAAE,eAAe,CAAC,MAAM,CAAC,KAAK,2CAExD;AACD,iBAAS,WAAW,CAAC,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,2CAEtD;AACD,iBAAS,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,CAAC,QAAQ,CAAC,KAAK,2CAQ7E;AACD,iBAAS,aAAa,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAsB,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,GAAG;IAAE,eAAe,CAAC,EAAE,OAAO,CAAA;CAAE,2CAmB5I;AACD,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAEzE;AACD,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAEzE;AACD,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,2CAExE;AACD,iBAAS,iBAAiB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,CAAC,WAAW,CAAC,KAAK,2CAEpF;AAED,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,iBAAiB,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC"}