@mcp-b/react-components 0.16.1 → 0.17.0

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 (284) hide show
  1. package/dist/{AgentChat-CrlpbvQJ.d.ts → AgentChat-CRuMi1Pb.d.ts} +4 -10
  2. package/dist/AgentMessageParts-CyD2UB3V.d.ts +46 -0
  3. package/dist/AgentToolRunsContext-BVe4stgw.d.ts +21 -0
  4. package/dist/{CodeBlock-BmB4Xaqq.js → CodeBlock-Co1noLbC.js} +2 -2
  5. package/dist/{CodeBlock-BRajW4QU.d.ts → CodeBlock-Dnpr88ZQ.d.ts} +2 -2
  6. package/dist/Collapsible-N64ASIQr.d.ts +119 -0
  7. package/dist/{Combobox-B9Fcd6q-.d.ts → Combobox-CYc37s5l.d.ts} +11 -33
  8. package/dist/{FileTree-CkVbIMWV.js → FileTree-B7bBsUyU.js} +7 -7
  9. package/dist/{Menu-Bgu-ufb5.d.ts → Menu-L6MZm-7N.d.ts} +15 -56
  10. package/dist/{Message-BkMdE3bS.js → Message-C4eYRogZ.js} +3 -3
  11. package/dist/{ModelSelector-SlJNgwKY.js → ModelSelector-BNrZlY_Y.js} +5 -5
  12. package/dist/{PromptInput-BWTuXMOD.d.ts → PromptInput-OLfXPuHM.d.ts} +39 -67
  13. package/dist/{ResponsiveSidebarShell-Dd9DCcBT.d.ts → ResponsiveSidebarShell-CsAh4NyL.d.ts} +1 -0
  14. package/dist/{Select-BeEsefzh.d.ts → Select-CwSqP07Y.d.ts} +14 -42
  15. package/dist/{Tabs-3Zc4tb9D.d.ts → Tabs-9zddXDQo.d.ts} +5 -19
  16. package/dist/{ThinkChat-CzC-zNGA.js → ThinkChat-DInElus-.js} +53 -26
  17. package/dist/{ThinkChatActivity-BFQnb2ct.d.ts → ThinkChatActivity-BgesTfZ4.d.ts} +12 -4
  18. package/dist/{ThinkChatContext-C3Eb1Xpi.d.ts → ThinkChatContext-DrsZqdaO.d.ts} +1 -1
  19. package/dist/ThinkRecoveryNotice-DFIcG9UX.d.ts +19 -0
  20. package/dist/{Toggle-CAAlNl-M.d.ts → Toggle-DaXpe1Lc.d.ts} +1 -1
  21. package/dist/{ToggleGroup-8hPv-b69.d.ts → ToggleGroup-yseEWkOC.d.ts} +3 -4
  22. package/dist/{Workspace-D39LxGvP.d.ts → Workspace-C9RFoxcu.d.ts} +1 -1
  23. package/dist/WorkspaceExplorer-sZewzT2O.d.ts +32 -0
  24. package/dist/{WorkspaceFile-DOZkPwzu.d.ts → WorkspaceFile-C8UzuSH4.d.ts} +1 -1
  25. package/dist/{WorkspaceFileView-rSN_yT0L.js → WorkspaceFileView-DNdGAEiX.js} +5 -5
  26. package/dist/{WorkspaceLink-DIPbXrUM.js → WorkspaceLink-B1ykV1dS.js} +15 -29
  27. package/dist/class-names-Bk-QLWWI.js +11 -0
  28. package/dist/components/Accordion.d.ts +5 -15
  29. package/dist/components/Accordion.js +11 -10
  30. package/dist/components/Activity.d.ts +5 -10
  31. package/dist/components/Activity.js +2 -2
  32. package/dist/components/AgentActivity.js +1 -1
  33. package/dist/components/AgentActivityPreview.js +2 -2
  34. package/dist/components/AgentAttention.d.ts +1 -1
  35. package/dist/components/AgentAttention.js +1 -1
  36. package/dist/components/AgentChat.d.ts +2 -2
  37. package/dist/components/AgentChat.js +27 -164
  38. package/dist/components/AgentChatMessageEditor.js +1 -1
  39. package/dist/components/AgentConnection.js +4 -4
  40. package/dist/components/AgentMessageParts.d.ts +2 -0
  41. package/dist/components/AgentMessageParts.js +119 -0
  42. package/dist/components/AgentToolDetail.d.ts +55 -0
  43. package/dist/components/AgentToolDetail.js +98 -0
  44. package/dist/components/AgentToolRunsContext.d.ts +2 -0
  45. package/dist/components/AgentToolRunsContext.js +16 -0
  46. package/dist/components/AlertDialog.d.ts +7 -19
  47. package/dist/components/AlertDialog.js +21 -32
  48. package/dist/components/AppTopBar.d.ts +4 -1
  49. package/dist/components/AppTopBar.js +5 -5
  50. package/dist/components/Approval.d.ts +102 -0
  51. package/dist/components/Approval.js +227 -0
  52. package/dist/components/Artifact.d.ts +2 -4
  53. package/dist/components/Artifact.js +3 -3
  54. package/dist/components/Autocomplete.d.ts +11 -33
  55. package/dist/components/Autocomplete.js +23 -30
  56. package/dist/components/Avatar.d.ts +3 -11
  57. package/dist/components/Avatar.js +13 -12
  58. package/dist/components/BrowserLiveView.js +2 -2
  59. package/dist/components/BrowserReplay.js +2 -2
  60. package/dist/components/BrowserRunPanel.js +58 -78
  61. package/dist/components/Button.js +4 -9
  62. package/dist/components/ChainOfThought.d.ts +5 -11
  63. package/dist/components/ChainOfThought.js +3 -2
  64. package/dist/components/ChatGptSignInScreen.js +3 -3
  65. package/dist/components/Checkbox.d.ts +2 -4
  66. package/dist/components/Checkbox.js +6 -5
  67. package/dist/components/CheckboxGroup.d.ts +1 -3
  68. package/dist/components/CheckboxGroup.js +15 -14
  69. package/dist/components/Checkpoint.d.ts +64 -0
  70. package/dist/components/Checkpoint.js +63 -0
  71. package/dist/components/CodeBlock.d.ts +1 -1
  72. package/dist/components/CodeBlock.js +1 -1
  73. package/dist/components/CodexModelSelector.d.ts +1 -1
  74. package/dist/components/CodexModelSelector.js +2 -2
  75. package/dist/components/Collapsible.d.ts +1 -124
  76. package/dist/components/Collapsible.js +7 -10
  77. package/dist/components/Combobox.d.ts +1 -1
  78. package/dist/components/Combobox.js +23 -30
  79. package/dist/components/Commit.d.ts +5 -11
  80. package/dist/components/Commit.js +6 -5
  81. package/dist/components/Context.js +1 -1
  82. package/dist/components/ContextMenu.d.ts +21 -37
  83. package/dist/components/ContextMenu.js +34 -51
  84. package/dist/components/Conversation.d.ts +2 -4
  85. package/dist/components/Conversation.js +2 -2
  86. package/dist/components/DescriptionListParts.js +1 -1
  87. package/dist/components/Dialog.d.ts +6 -17
  88. package/dist/components/Dialog.js +17 -24
  89. package/dist/components/EnvironmentVariables.d.ts +1 -1
  90. package/dist/components/EnvironmentVariables.js +4 -3
  91. package/dist/components/Field.d.ts +17 -20
  92. package/dist/components/Field.js +16 -16
  93. package/dist/components/Fieldset.d.ts +2 -7
  94. package/dist/components/Fieldset.js +7 -6
  95. package/dist/components/FileTree.js +1 -1
  96. package/dist/components/Form.d.ts +1 -4
  97. package/dist/components/Form.js +3 -2
  98. package/dist/components/GithubMotionMark.js +1 -1
  99. package/dist/components/InlineCitation.d.ts +66 -0
  100. package/dist/components/InlineCitation.js +142 -0
  101. package/dist/components/Input.d.ts +1 -4
  102. package/dist/components/Input.js +3 -2
  103. package/dist/components/Marker.js +1 -1
  104. package/dist/components/McpConnectionRequest.js +2 -2
  105. package/dist/components/McpServerPicker.d.ts +1 -1
  106. package/dist/components/McpServerPicker.js +6 -5
  107. package/dist/components/Menu.d.ts +1 -1
  108. package/dist/components/Menu.js +33 -52
  109. package/dist/components/Menubar.d.ts +22 -43
  110. package/dist/components/Menubar.js +36 -53
  111. package/dist/components/Message.d.ts +3 -6
  112. package/dist/components/Message.js +1 -1
  113. package/dist/components/MessageScroller.d.ts +1 -1
  114. package/dist/components/MessageScroller.js +3 -3
  115. package/dist/components/Meter.d.ts +5 -20
  116. package/dist/components/Meter.js +11 -10
  117. package/dist/components/ModelSelector.d.ts +2 -6
  118. package/dist/components/ModelSelector.js +1 -1
  119. package/dist/components/NavigationMenu.d.ts +11 -33
  120. package/dist/components/NavigationMenu.js +23 -30
  121. package/dist/components/NumberField.d.ts +6 -24
  122. package/dist/components/NumberField.js +13 -12
  123. package/dist/components/Plan.d.ts +103 -0
  124. package/dist/components/Plan.js +113 -0
  125. package/dist/components/Popover.d.ts +9 -36
  126. package/dist/components/Popover.js +23 -34
  127. package/dist/components/PreviewCard.d.ts +6 -24
  128. package/dist/components/PreviewCard.js +13 -24
  129. package/dist/components/PricingBillingToggle.js +1 -1
  130. package/dist/components/PricingFAQ.js +1 -1
  131. package/dist/components/PricingPlanCard.js +3 -3
  132. package/dist/components/PricingUsageCalculator.js +2 -2
  133. package/dist/components/Progress.d.ts +3 -8
  134. package/dist/components/Progress.js +7 -10
  135. package/dist/components/PromptInput.d.ts +2 -2
  136. package/dist/components/PromptInput.js +52 -200
  137. package/dist/components/Queue.d.ts +6 -16
  138. package/dist/components/Queue.js +2 -2
  139. package/dist/components/RadioGroup.d.ts +3 -8
  140. package/dist/components/RadioGroup.js +7 -10
  141. package/dist/components/Reasoning.d.ts +4 -8
  142. package/dist/components/Reasoning.js +3 -3
  143. package/dist/components/ResizableSidePanel.js +2 -2
  144. package/dist/components/ResponsiveSidebarShell.d.ts +1 -1
  145. package/dist/components/ResponsiveSidebarShell.js +4 -3
  146. package/dist/components/ScrollArea.d.ts +5 -20
  147. package/dist/components/ScrollArea.js +11 -10
  148. package/dist/components/Select.d.ts +1 -1
  149. package/dist/components/Select.js +32 -55
  150. package/dist/components/Separator.d.ts +1 -5
  151. package/dist/components/Separator.js +3 -6
  152. package/dist/components/Slider.d.ts +6 -19
  153. package/dist/components/Slider.js +15 -14
  154. package/dist/components/Sources.d.ts +4 -9
  155. package/dist/components/Sources.js +3 -2
  156. package/dist/components/Stepper.js +2 -2
  157. package/dist/components/SubagentRunDetails.js +1 -1
  158. package/dist/components/SubagentRunIndicator.js +2 -2
  159. package/dist/components/SubagentRunList.js +1 -2
  160. package/dist/components/SubagentRunSelector.d.ts +2 -11
  161. package/dist/components/SubagentRunSelector.js +16 -15
  162. package/dist/components/Switch.d.ts +2 -5
  163. package/dist/components/Switch.js +5 -8
  164. package/dist/components/Tabs.d.ts +2 -2
  165. package/dist/components/Tabs.js +10 -16
  166. package/dist/components/Task.d.ts +4 -9
  167. package/dist/components/Task.js +4 -3
  168. package/dist/components/Terminal.d.ts +2 -3
  169. package/dist/components/Terminal.js +3 -3
  170. package/dist/components/TestResults.d.ts +4 -9
  171. package/dist/components/TestResults.js +3 -2
  172. package/dist/components/Textarea.js +1 -1
  173. package/dist/components/ThemeModeControl.js +1 -1
  174. package/dist/components/ThinkChat.d.ts +21 -11
  175. package/dist/components/ThinkChat.js +5 -3
  176. package/dist/components/ThinkChatActivity.d.ts +1 -1
  177. package/dist/components/ThinkChatActivity.js +26 -7
  178. package/dist/components/ThinkChatContext.d.ts +1 -1
  179. package/dist/components/ThinkChatToolPanels.js +2 -2
  180. package/dist/components/ThinkExecutionDetail.js +2 -2
  181. package/dist/components/ThinkExecutionStatus.js +2 -2
  182. package/dist/components/ThinkExecutionWorkbench.js +2 -2
  183. package/dist/components/ThinkFullApp.d.ts +33 -9
  184. package/dist/components/ThinkFullApp.js +98 -69
  185. package/dist/components/ThinkFullAppViewSwitch.d.ts +1 -1
  186. package/dist/components/ThinkFullAppViewSwitch.js +2 -2
  187. package/dist/components/ThinkPendingApproval.d.ts +60 -0
  188. package/dist/components/ThinkPendingApproval.js +99 -0
  189. package/dist/components/ThinkRecoveryNotice.d.ts +2 -0
  190. package/dist/components/ThinkRecoveryNotice.js +40 -0
  191. package/dist/components/ThinkRoutine.js +1 -0
  192. package/dist/components/ThinkRoutineBrowser.js +6 -6
  193. package/dist/components/ThinkRoutineDetail.js +1 -1
  194. package/dist/components/ThinkRoutineForm.js +2 -2
  195. package/dist/components/ThinkRoutineLibrary.d.ts +9 -0
  196. package/dist/components/ThinkRoutineLibrary.js +67 -20
  197. package/dist/components/ThinkRoutineRuns.js +1 -1
  198. package/dist/components/ThinkThreadPicker.js +2 -2
  199. package/dist/components/ThinkThreadShell.d.ts +1 -1
  200. package/dist/components/Toast.d.ts +7 -28
  201. package/dist/components/Toast.js +15 -14
  202. package/dist/components/Toggle.d.ts +1 -1
  203. package/dist/components/Toggle.js +5 -5
  204. package/dist/components/ToggleGroup.d.ts +1 -1
  205. package/dist/components/ToggleGroup.js +8 -15
  206. package/dist/components/ToolApproval.d.ts +28 -0
  207. package/dist/components/ToolApproval.js +35 -0
  208. package/dist/components/ToolInvocation.d.ts +26 -0
  209. package/dist/components/ToolInvocation.js +72 -0
  210. package/dist/components/Toolbar.d.ts +6 -24
  211. package/dist/components/Toolbar.js +13 -12
  212. package/dist/components/Tooltip.d.ts +3 -9
  213. package/dist/components/Tooltip.js +7 -10
  214. package/dist/components/WebPreview.d.ts +1 -2
  215. package/dist/components/WebPreview.js +4 -3
  216. package/dist/components/Workspace.d.ts +1 -1
  217. package/dist/components/Workspace.js +5 -20
  218. package/dist/components/WorkspaceBrowser.d.ts +1 -1
  219. package/dist/components/WorkspaceBrowser.js +3 -3
  220. package/dist/components/WorkspaceExplorer.d.ts +3 -31
  221. package/dist/components/WorkspaceExplorer.js +3 -3
  222. package/dist/components/WorkspaceFile.d.ts +1 -1
  223. package/dist/components/WorkspaceFileView.d.ts +1 -1
  224. package/dist/components/WorkspaceFileView.js +1 -1
  225. package/dist/components/WorkspaceHeader.js +1 -1
  226. package/dist/components/WorkspaceLink.js +1 -1
  227. package/dist/components/icons.d.ts +2 -2
  228. package/dist/components/icons.js +2 -2
  229. package/dist/{copy-button-DtPMgN7e.d.ts → copy-button-CQx3LQAC.d.ts} +1 -2
  230. package/dist/{copy-button-Dejn5heL.js → copy-button-cYsJBauI.js} +1 -1
  231. package/dist/{icons-CpfUer49.js → icons--FqCZEc3.js} +3 -2
  232. package/dist/{icons-GQd1xF4e.d.ts → icons-DpUqY8Mp.d.ts} +6 -1
  233. package/dist/styles/agent-activity-preview.css +4 -0
  234. package/dist/styles/agent-chat.css +0 -41
  235. package/dist/styles/agent-connection.css +0 -12
  236. package/dist/styles/agent-tool-detail.css +54 -0
  237. package/dist/styles/approval.css +172 -0
  238. package/dist/styles/artifact.css +0 -12
  239. package/dist/styles/browser-run-panel.css +5 -2
  240. package/dist/styles/chain-of-thought.css +0 -8
  241. package/dist/styles/checkpoint.css +58 -0
  242. package/dist/styles/combobox.css +1 -1
  243. package/dist/styles/commit.css +0 -21
  244. package/dist/styles/context-menu.css +0 -8
  245. package/dist/styles/environment-variables.css +0 -13
  246. package/dist/styles/file-tree.css +0 -16
  247. package/dist/styles/index.css +8 -4
  248. package/dist/styles/inline-citation.css +107 -0
  249. package/dist/styles/mcp-server-picker.css +0 -30
  250. package/dist/styles/menu.css +0 -29
  251. package/dist/styles/menubar.css +0 -8
  252. package/dist/styles/message-scroller.css +0 -12
  253. package/dist/styles/message.css +0 -12
  254. package/dist/styles/model-selector.css +0 -20
  255. package/dist/styles/plan.css +127 -0
  256. package/dist/styles/popover.css +0 -36
  257. package/dist/styles/prompt-input.css +2 -195
  258. package/dist/styles/recipes.css +114 -5
  259. package/dist/styles/responsive-sidebar-shell.css +16 -19
  260. package/dist/styles/sources.css +0 -8
  261. package/dist/styles/subagent-run.css +12 -70
  262. package/dist/styles/task.css +0 -16
  263. package/dist/styles/test-results.css +0 -13
  264. package/dist/styles/think-full-app.css +12 -38
  265. package/dist/styles/think-routine-library.css +12 -20
  266. package/dist/styles/think-thread-picker.css +15 -0
  267. package/dist/styles/toast.css +0 -7
  268. package/dist/styles/utilities.css +31 -0
  269. package/dist/styles/web-preview.css +0 -21
  270. package/dist/styles/workspace-explorer.css +5 -55
  271. package/dist/think-agent-Cip5KAPj.d.ts +7 -0
  272. package/dist/utils/codex-model-catalog.d.ts +4 -4
  273. package/dist/utils/structured-code.d.ts +1 -1
  274. package/dist/workspace-path-L_KmjRjq.js +26 -0
  275. package/package.json +3 -4
  276. package/dist/class-names-9UtZwb0J.js +0 -12
  277. package/dist/components/AppFrame.d.ts +0 -24
  278. package/dist/components/AppFrame.js +0 -25
  279. package/dist/components/Shell.d.ts +0 -163
  280. package/dist/components/Shell.js +0 -137
  281. package/dist/components/SubagentRun.d.ts +0 -86
  282. package/dist/components/SubagentRun.js +0 -108
  283. package/dist/styles/app-frame.css +0 -15
  284. package/dist/styles/shell.css +0 -122
@@ -0,0 +1,227 @@
1
+ import { t as cx } from "../class-names-Bk-QLWWI.js";
2
+ import { P as PencilIcon } from "../icons--FqCZEc3.js";
3
+ import { Button } from "./Button.js";
4
+ import * as React from "react";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ //#region src/components/Approval.tsx
7
+ /** Presentation-only frame for a human approval request. */
8
+ function Approval({ className, ref, ...props }) {
9
+ return /* @__PURE__ */ jsx("div", {
10
+ ref,
11
+ role: "group",
12
+ "data-slot": "approval",
13
+ className: cx("approval", className),
14
+ ...props
15
+ });
16
+ }
17
+ /** Question and optional queue position for an approval request. */
18
+ function ApprovalHeader({ className, ref, ...props }) {
19
+ return /* @__PURE__ */ jsx("div", {
20
+ ref,
21
+ "data-slot": "approval-header",
22
+ className: cx("approval__header", className),
23
+ ...props
24
+ });
25
+ }
26
+ /** The request phrased as a human-readable question. */
27
+ function ApprovalQuestion({ className, ref, ...props }) {
28
+ return /* @__PURE__ */ jsx("span", {
29
+ ref,
30
+ "data-slot": "approval-question",
31
+ className: cx("approval__question", className),
32
+ ...props
33
+ });
34
+ }
35
+ /** Position of the current request in an app-owned approval queue. */
36
+ function ApprovalCount({ className, ref, ...props }) {
37
+ return /* @__PURE__ */ jsx("span", {
38
+ ref,
39
+ "data-slot": "approval-count",
40
+ className: cx("approval__count", className),
41
+ ...props
42
+ });
43
+ }
44
+ /** Bounded, read-only preview of the operation being authorized. */
45
+ function ApprovalPreview({ className, ref, ...props }) {
46
+ return /* @__PURE__ */ jsx("div", {
47
+ ref,
48
+ "data-slot": "approval-preview",
49
+ className: cx("approval__preview", className),
50
+ ...props
51
+ });
52
+ }
53
+ /** One labelled value in an approval preview. */
54
+ function ApprovalPreviewRow({ children, className, label, ref, ...props }) {
55
+ return /* @__PURE__ */ jsxs("div", {
56
+ ref,
57
+ "data-slot": "approval-preview-row",
58
+ className: cx("approval__preview-row", className),
59
+ ...props,
60
+ children: [
61
+ label !== void 0 ? /* @__PURE__ */ jsx("span", {
62
+ className: "approval__preview-key",
63
+ children: label
64
+ }) : null,
65
+ label !== void 0 && children !== void 0 ? " " : null,
66
+ children
67
+ ]
68
+ });
69
+ }
70
+ function formatApprovalValue(value) {
71
+ if (typeof value === "string") return value;
72
+ return JSON.stringify(value) ?? String(value);
73
+ }
74
+ /** Renders unknown upstream input without changing or normalizing its shape. */
75
+ function ApprovalInputPreview({ input }) {
76
+ const entries = input && typeof input === "object" && !Array.isArray(input) ? Object.entries(input) : void 0;
77
+ return /* @__PURE__ */ jsx(ApprovalPreview, { children: entries ? entries.map(([key, value]) => /* @__PURE__ */ jsx(ApprovalPreviewRow, {
78
+ label: key,
79
+ children: formatApprovalValue(value)
80
+ }, key)) : /* @__PURE__ */ jsx(ApprovalPreviewRow, { children: formatApprovalValue(input) }) });
81
+ }
82
+ function getErrorMessage(error) {
83
+ if (error instanceof Error && error.message.trim()) return error.message;
84
+ return "The approval could not be submitted. Try again.";
85
+ }
86
+ /**
87
+ * Keyboard-operable approve/deny controls shared by inline and durable adapters.
88
+ * Arrow keys move between approve and deny, `1` returns to approve, and Enter
89
+ * in the reason field submits a denial. Async failures stay visible and are
90
+ * announced politely without coupling this presentation to a transport.
91
+ */
92
+ function ApprovalDecision({ className, onDecision, onSkip, subject = "this action", ref, ...props }) {
93
+ const [selected, setSelected] = React.useState("approve");
94
+ const [reason, setReason] = React.useState("");
95
+ const [busy, setBusy] = React.useState(false);
96
+ const [errorMessage, setErrorMessage] = React.useState("");
97
+ const busyRef = React.useRef(false);
98
+ const approveRef = React.useRef(null);
99
+ const reasonRef = React.useRef(null);
100
+ const reasonId = React.useId();
101
+ const respond = async (approved) => {
102
+ if (busyRef.current) return;
103
+ busyRef.current = true;
104
+ setBusy(true);
105
+ setErrorMessage("");
106
+ const trimmed = reason.trim();
107
+ try {
108
+ await onDecision({
109
+ approved,
110
+ reason: !approved && trimmed ? trimmed : void 0
111
+ });
112
+ } catch (error) {
113
+ setErrorMessage(getErrorMessage(error));
114
+ } finally {
115
+ busyRef.current = false;
116
+ setBusy(false);
117
+ }
118
+ };
119
+ return /* @__PURE__ */ jsxs("div", {
120
+ ref,
121
+ "data-slot": "approval-options",
122
+ className: cx("approval__options", className),
123
+ "aria-busy": busy || void 0,
124
+ onKeyDown: (event) => {
125
+ if (event.key === "ArrowDown" || event.key === "ArrowUp") {
126
+ event.preventDefault();
127
+ (selected === "approve" ? reasonRef : approveRef).current?.focus();
128
+ } else if (event.key === "1" && event.target !== reasonRef.current) approveRef.current?.focus();
129
+ },
130
+ ...props,
131
+ children: [
132
+ /* @__PURE__ */ jsxs(Button, {
133
+ ref: approveRef,
134
+ type: "button",
135
+ size: "sm",
136
+ variant: "ghost",
137
+ color: "neutral",
138
+ className: "approval__option",
139
+ "data-selected": selected === "approve" || void 0,
140
+ disabled: busy,
141
+ onClick: () => void respond(true),
142
+ onFocus: () => setSelected("approve"),
143
+ children: [
144
+ /* @__PURE__ */ jsx("span", {
145
+ className: "approval__key",
146
+ children: "1"
147
+ }),
148
+ "Yes, approve",
149
+ /* @__PURE__ */ jsx("span", {
150
+ className: "approval__arrows",
151
+ "aria-hidden": "true",
152
+ children: "↑↓"
153
+ })
154
+ ]
155
+ }),
156
+ /* @__PURE__ */ jsxs("div", {
157
+ className: "approval__option approval__deny",
158
+ "data-selected": selected === "deny" || void 0,
159
+ children: [
160
+ /* @__PURE__ */ jsx("span", {
161
+ className: "approval__key",
162
+ "aria-hidden": "true",
163
+ children: /* @__PURE__ */ jsx(PencilIcon, { size: 11 })
164
+ }),
165
+ /* @__PURE__ */ jsxs("label", {
166
+ className: "approval__deny-label",
167
+ htmlFor: reasonId,
168
+ children: ["No, deny", /* @__PURE__ */ jsxs("span", {
169
+ className: "sigvelo-visually-hidden",
170
+ children: [" ", subject]
171
+ })]
172
+ }),
173
+ /* @__PURE__ */ jsx("input", {
174
+ id: reasonId,
175
+ ref: reasonRef,
176
+ type: "text",
177
+ className: "approval__reason",
178
+ placeholder: "Tell the agent what to do differently",
179
+ value: reason,
180
+ disabled: busy,
181
+ onFocus: () => setSelected("deny"),
182
+ onChange: (event) => {
183
+ setSelected("deny");
184
+ setReason(event.currentTarget.value);
185
+ },
186
+ onKeyDown: (event) => {
187
+ if (event.key === "Enter" && !event.nativeEvent.isComposing) {
188
+ event.preventDefault();
189
+ respond(false);
190
+ }
191
+ }
192
+ }),
193
+ onSkip ? /* @__PURE__ */ jsx(Button, {
194
+ type: "button",
195
+ size: "xs",
196
+ variant: "ghost",
197
+ color: "neutral",
198
+ className: "approval__skip",
199
+ disabled: busy,
200
+ onClick: onSkip,
201
+ children: "Skip"
202
+ }) : null,
203
+ /* @__PURE__ */ jsxs(Button, {
204
+ type: "button",
205
+ size: "xs",
206
+ color: "primary",
207
+ className: "approval__submit",
208
+ disabled: busy,
209
+ onClick: () => void respond(selected === "approve"),
210
+ children: [busy ? "Submitting…" : selected === "approve" ? "Approve" : "Submit denial", !busy ? /* @__PURE__ */ jsx("kbd", {
211
+ className: "approval__kbd",
212
+ children: "⏎"
213
+ }) : null]
214
+ })
215
+ ]
216
+ }),
217
+ /* @__PURE__ */ jsx("span", {
218
+ className: cx("approval__status", !errorMessage && "sigvelo-visually-hidden"),
219
+ role: "status",
220
+ "aria-atomic": "true",
221
+ children: errorMessage || (busy ? "Submitting approval" : "")
222
+ })
223
+ ]
224
+ });
225
+ }
226
+ //#endregion
227
+ export { Approval, ApprovalCount, ApprovalDecision, ApprovalHeader, ApprovalInputPreview, ApprovalPreview, ApprovalPreviewRow, ApprovalQuestion, formatApprovalValue };
@@ -83,8 +83,7 @@ declare function ArtifactActions({
83
83
  }: ArtifactActionsProps & {
84
84
  ref?: React.Ref<HTMLDivElement>;
85
85
  }): React.JSX.Element;
86
- interface ArtifactActionProps extends Omit<ButtonProps, "children" | "variant" | "size" | "color" | "className"> {
87
- className?: string;
86
+ interface ArtifactActionProps extends Omit<ButtonProps, "children" | "variant" | "size" | "color"> {
88
87
  /** Accessible label for the button. */
89
88
  label?: string;
90
89
  /** Tooltip text shown on hover. Defaults to label. */
@@ -103,8 +102,7 @@ declare function ArtifactAction({
103
102
  children,
104
103
  ...props
105
104
  }: ArtifactActionProps): React.JSX.Element;
106
- interface ArtifactCloseProps extends Omit<ButtonProps, "children" | "variant" | "size" | "color" | "className"> {
107
- className?: string;
105
+ interface ArtifactCloseProps extends Omit<ButtonProps, "children" | "variant" | "size" | "color"> {
108
106
  /** Accessible label for the close button. */
109
107
  label?: string;
110
108
  children?: React.ReactNode;
@@ -1,5 +1,5 @@
1
- import { t as cx } from "../class-names-9UtZwb0J.js";
2
- import { Y as XIcon } from "../icons-CpfUer49.js";
1
+ import { t as cx } from "../class-names-Bk-QLWWI.js";
2
+ import { X as XIcon } from "../icons--FqCZEc3.js";
3
3
  import { Button } from "./Button.js";
4
4
  import { Tooltip } from "./Tooltip.js";
5
5
  import "react";
@@ -86,7 +86,7 @@ function ArtifactAction({ className, label, tooltip, icon, children, ...props })
86
86
  className: cx("artifact__action", className),
87
87
  ...props,
88
88
  children: [Icon ? /* @__PURE__ */ jsx(Icon, {}) : icon ?? children, accessibleLabel ? /* @__PURE__ */ jsx("span", {
89
- className: "sr-only",
89
+ className: "sigvelo-visually-hidden",
90
90
  children: accessibleLabel
91
91
  }) : null]
92
92
  });
@@ -6,99 +6,77 @@ declare function Input({
6
6
  className,
7
7
  ref,
8
8
  ...props
9
- }: Omit<React.ComponentPropsWithRef<typeof Autocomplete$1.Input>, "className"> & {
10
- className?: string;
11
- } & {
9
+ }: React.ComponentPropsWithRef<typeof Autocomplete$1.Input> & {
12
10
  ref?: React.Ref<HTMLInputElement>;
13
11
  }): React.JSX.Element;
14
12
  declare function Trigger({
15
13
  className,
16
14
  ref,
17
15
  ...props
18
- }: Omit<React.ComponentPropsWithRef<typeof Autocomplete$1.Trigger>, "className"> & {
19
- className?: string;
20
- } & {
16
+ }: React.ComponentPropsWithRef<typeof Autocomplete$1.Trigger> & {
21
17
  ref?: React.Ref<HTMLButtonElement>;
22
18
  }): React.JSX.Element;
23
19
  declare function Clear({
24
20
  className,
25
21
  ref,
26
22
  ...props
27
- }: Omit<React.ComponentPropsWithRef<typeof Autocomplete$1.Clear>, "className"> & {
28
- className?: string;
29
- } & {
23
+ }: React.ComponentPropsWithRef<typeof Autocomplete$1.Clear> & {
30
24
  ref?: React.Ref<HTMLButtonElement>;
31
25
  }): React.JSX.Element;
32
26
  declare function Positioner({
33
27
  className,
34
28
  ref,
35
29
  ...props
36
- }: Omit<React.ComponentPropsWithRef<typeof Autocomplete$1.Positioner>, "className"> & {
37
- className?: string;
38
- } & {
30
+ }: React.ComponentPropsWithRef<typeof Autocomplete$1.Positioner> & {
39
31
  ref?: React.Ref<HTMLDivElement>;
40
32
  }): React.JSX.Element;
41
33
  declare function Popup({
42
34
  className,
43
35
  ref,
44
36
  ...props
45
- }: Omit<React.ComponentPropsWithRef<typeof Autocomplete$1.Popup>, "className"> & {
46
- className?: string;
47
- } & {
37
+ }: React.ComponentPropsWithRef<typeof Autocomplete$1.Popup> & {
48
38
  ref?: React.Ref<HTMLDivElement>;
49
39
  }): React.JSX.Element;
50
40
  declare function List({
51
41
  className,
52
42
  ref,
53
43
  ...props
54
- }: Omit<React.ComponentPropsWithRef<typeof Autocomplete$1.List>, "className"> & {
55
- className?: string;
56
- } & {
44
+ }: React.ComponentPropsWithRef<typeof Autocomplete$1.List> & {
57
45
  ref?: React.Ref<HTMLDivElement>;
58
46
  }): React.JSX.Element;
59
47
  declare function Item({
60
48
  className,
61
49
  ref,
62
50
  ...props
63
- }: Omit<React.ComponentPropsWithRef<typeof Autocomplete$1.Item>, "className"> & {
64
- className?: string;
65
- } & {
51
+ }: React.ComponentPropsWithRef<typeof Autocomplete$1.Item> & {
66
52
  ref?: React.Ref<HTMLDivElement>;
67
53
  }): React.JSX.Element;
68
54
  declare function Empty({
69
55
  className,
70
56
  ref,
71
57
  ...props
72
- }: Omit<React.ComponentPropsWithRef<typeof Autocomplete$1.Empty>, "className"> & {
73
- className?: string;
74
- } & {
58
+ }: React.ComponentPropsWithRef<typeof Autocomplete$1.Empty> & {
75
59
  ref?: React.Ref<HTMLDivElement>;
76
60
  }): React.JSX.Element;
77
61
  declare function Status({
78
62
  className,
79
63
  ref,
80
64
  ...props
81
- }: Omit<React.ComponentPropsWithRef<typeof Autocomplete$1.Status>, "className"> & {
82
- className?: string;
83
- } & {
65
+ }: React.ComponentPropsWithRef<typeof Autocomplete$1.Status> & {
84
66
  ref?: React.Ref<HTMLDivElement>;
85
67
  }): React.JSX.Element;
86
68
  declare function Group({
87
69
  className,
88
70
  ref,
89
71
  ...props
90
- }: Omit<React.ComponentPropsWithRef<typeof Autocomplete$1.Group>, "className"> & {
91
- className?: string;
92
- } & {
72
+ }: React.ComponentPropsWithRef<typeof Autocomplete$1.Group> & {
93
73
  ref?: React.Ref<HTMLDivElement>;
94
74
  }): React.JSX.Element;
95
75
  declare function GroupLabel({
96
76
  className,
97
77
  ref,
98
78
  ...props
99
- }: Omit<React.ComponentPropsWithRef<typeof Autocomplete$1.GroupLabel>, "className"> & {
100
- className?: string;
101
- } & {
79
+ }: React.ComponentPropsWithRef<typeof Autocomplete$1.GroupLabel> & {
102
80
  ref?: React.Ref<HTMLDivElement>;
103
81
  }): React.JSX.Element;
104
82
  /**
@@ -1,9 +1,10 @@
1
+ import { n as mergeBaseClassName } from "../class-names-Bk-QLWWI.js";
1
2
  import "react";
2
3
  import { jsx } from "react/jsx-runtime";
3
4
  import { Autocomplete as Autocomplete$1 } from "@base-ui/react/autocomplete";
4
5
  //#region src/components/Autocomplete.tsx
5
- function Input({ className = "", ref, ...props }) {
6
- const classes = ["autocomplete__input", className].filter(Boolean).join(" ");
6
+ function Input({ className, ref, ...props }) {
7
+ const classes = mergeBaseClassName(["autocomplete__input"].filter(Boolean).join(" "), className);
7
8
  return /* @__PURE__ */ jsx(Autocomplete$1.Input, {
8
9
  ref,
9
10
  "data-slot": "autocomplete-input",
@@ -11,8 +12,8 @@ function Input({ className = "", ref, ...props }) {
11
12
  ...props
12
13
  });
13
14
  }
14
- function Trigger({ className = "", ref, ...props }) {
15
- const classes = ["autocomplete__trigger", className].filter(Boolean).join(" ");
15
+ function Trigger({ className, ref, ...props }) {
16
+ const classes = mergeBaseClassName(["autocomplete__trigger"].filter(Boolean).join(" "), className);
16
17
  return /* @__PURE__ */ jsx(Autocomplete$1.Trigger, {
17
18
  ref,
18
19
  "data-slot": "autocomplete-trigger",
@@ -20,8 +21,8 @@ function Trigger({ className = "", ref, ...props }) {
20
21
  ...props
21
22
  });
22
23
  }
23
- function Clear({ className = "", ref, ...props }) {
24
- const classes = ["autocomplete__clear", className].filter(Boolean).join(" ");
24
+ function Clear({ className, ref, ...props }) {
25
+ const classes = mergeBaseClassName(["autocomplete__clear"].filter(Boolean).join(" "), className);
25
26
  return /* @__PURE__ */ jsx(Autocomplete$1.Clear, {
26
27
  ref,
27
28
  "data-slot": "autocomplete-clear",
@@ -29,12 +30,8 @@ function Clear({ className = "", ref, ...props }) {
29
30
  ...props
30
31
  });
31
32
  }
32
- function Positioner({ className = "", ref, ...props }) {
33
- const classes = [
34
- "autocomplete__positioner",
35
- "base-ui-positioner",
36
- className
37
- ].filter(Boolean).join(" ");
33
+ function Positioner({ className, ref, ...props }) {
34
+ const classes = mergeBaseClassName(["autocomplete__positioner", "base-ui-positioner"].filter(Boolean).join(" "), className);
38
35
  return /* @__PURE__ */ jsx(Autocomplete$1.Positioner, {
39
36
  ref,
40
37
  "data-slot": "autocomplete-positioner",
@@ -42,12 +39,8 @@ function Positioner({ className = "", ref, ...props }) {
42
39
  ...props
43
40
  });
44
41
  }
45
- function Popup({ className = "", ref, ...props }) {
46
- const classes = [
47
- "autocomplete__popup",
48
- "base-ui-popup",
49
- className
50
- ].filter(Boolean).join(" ");
42
+ function Popup({ className, ref, ...props }) {
43
+ const classes = mergeBaseClassName(["autocomplete__popup", "base-ui-popup"].filter(Boolean).join(" "), className);
51
44
  return /* @__PURE__ */ jsx(Autocomplete$1.Popup, {
52
45
  ref,
53
46
  "data-slot": "autocomplete-content",
@@ -55,8 +48,8 @@ function Popup({ className = "", ref, ...props }) {
55
48
  ...props
56
49
  });
57
50
  }
58
- function List({ className = "", ref, ...props }) {
59
- const classes = ["autocomplete__list", className].filter(Boolean).join(" ");
51
+ function List({ className, ref, ...props }) {
52
+ const classes = mergeBaseClassName(["autocomplete__list"].filter(Boolean).join(" "), className);
60
53
  return /* @__PURE__ */ jsx(Autocomplete$1.List, {
61
54
  ref,
62
55
  "data-slot": "autocomplete-list",
@@ -64,8 +57,8 @@ function List({ className = "", ref, ...props }) {
64
57
  ...props
65
58
  });
66
59
  }
67
- function Item({ className = "", ref, ...props }) {
68
- const classes = ["autocomplete__item", className].filter(Boolean).join(" ");
60
+ function Item({ className, ref, ...props }) {
61
+ const classes = mergeBaseClassName(["autocomplete__item"].filter(Boolean).join(" "), className);
69
62
  return /* @__PURE__ */ jsx(Autocomplete$1.Item, {
70
63
  ref,
71
64
  "data-slot": "autocomplete-item",
@@ -73,8 +66,8 @@ function Item({ className = "", ref, ...props }) {
73
66
  ...props
74
67
  });
75
68
  }
76
- function Empty({ className = "", ref, ...props }) {
77
- const classes = ["autocomplete__empty", className].filter(Boolean).join(" ");
69
+ function Empty({ className, ref, ...props }) {
70
+ const classes = mergeBaseClassName(["autocomplete__empty"].filter(Boolean).join(" "), className);
78
71
  return /* @__PURE__ */ jsx(Autocomplete$1.Empty, {
79
72
  ref,
80
73
  "data-slot": "autocomplete-empty",
@@ -82,8 +75,8 @@ function Empty({ className = "", ref, ...props }) {
82
75
  ...props
83
76
  });
84
77
  }
85
- function Status({ className = "", ref, ...props }) {
86
- const classes = ["autocomplete__status", className].filter(Boolean).join(" ");
78
+ function Status({ className, ref, ...props }) {
79
+ const classes = mergeBaseClassName(["autocomplete__status"].filter(Boolean).join(" "), className);
87
80
  return /* @__PURE__ */ jsx(Autocomplete$1.Status, {
88
81
  ref,
89
82
  "data-slot": "autocomplete-status",
@@ -91,8 +84,8 @@ function Status({ className = "", ref, ...props }) {
91
84
  ...props
92
85
  });
93
86
  }
94
- function Group({ className = "", ref, ...props }) {
95
- const classes = ["autocomplete__group", className].filter(Boolean).join(" ");
87
+ function Group({ className, ref, ...props }) {
88
+ const classes = mergeBaseClassName(["autocomplete__group"].filter(Boolean).join(" "), className);
96
89
  return /* @__PURE__ */ jsx(Autocomplete$1.Group, {
97
90
  ref,
98
91
  "data-slot": "autocomplete-group",
@@ -100,8 +93,8 @@ function Group({ className = "", ref, ...props }) {
100
93
  ...props
101
94
  });
102
95
  }
103
- function GroupLabel({ className = "", ref, ...props }) {
104
- const classes = ["autocomplete__group-label", className].filter(Boolean).join(" ");
96
+ function GroupLabel({ className, ref, ...props }) {
97
+ const classes = mergeBaseClassName(["autocomplete__group-label"].filter(Boolean).join(" "), className);
105
98
  return /* @__PURE__ */ jsx(Autocomplete$1.GroupLabel, {
106
99
  ref,
107
100
  "data-slot": "autocomplete-group-label",
@@ -5,25 +5,17 @@ import { Avatar as Avatar$1 } from "@base-ui/react/avatar";
5
5
  /**
6
6
  * Props for the Avatar.Root component.
7
7
  */
8
- interface AvatarRootProps extends Omit<React.ComponentPropsWithoutRef<typeof Avatar$1.Root>, "className"> {
9
- /** Additional CSS class names */
10
- className?: string;
8
+ interface AvatarRootProps extends React.ComponentPropsWithoutRef<typeof Avatar$1.Root> {
11
9
  size?: "default" | "sm" | "lg";
12
10
  }
13
11
  /**
14
12
  * Props for the Avatar.Image component.
15
13
  */
16
- interface AvatarImageProps extends Omit<React.ComponentPropsWithoutRef<typeof Avatar$1.Image>, "className"> {
17
- /** Additional CSS class names */
18
- className?: string;
19
- }
14
+ interface AvatarImageProps extends React.ComponentPropsWithoutRef<typeof Avatar$1.Image> {}
20
15
  /**
21
16
  * Props for the Avatar.Fallback component.
22
17
  */
23
- interface AvatarFallbackProps extends Omit<React.ComponentPropsWithoutRef<typeof Avatar$1.Fallback>, "className"> {
24
- /** Additional CSS class names */
25
- className?: string;
26
- }
18
+ interface AvatarFallbackProps extends React.ComponentPropsWithoutRef<typeof Avatar$1.Fallback> {}
27
19
  interface AvatarGroupProps extends React.HTMLAttributes<HTMLDivElement> {}
28
20
  interface AvatarGroupCountProps extends React.HTMLAttributes<HTMLDivElement> {}
29
21
  interface AvatarBadgeProps extends React.HTMLAttributes<HTMLSpanElement> {}
@@ -1,3 +1,4 @@
1
+ import { n as mergeBaseClassName } from "../class-names-Bk-QLWWI.js";
1
2
  import "react";
2
3
  import { jsx } from "react/jsx-runtime";
3
4
  import { Avatar as Avatar$1 } from "@base-ui/react/avatar";
@@ -15,8 +16,8 @@ import { Avatar as Avatar$1 } from "@base-ui/react/avatar";
15
16
  *
16
17
  * @see {@link https://base-ui.com/react/components/avatar | Base UI Avatar}
17
18
  */
18
- function AvatarRoot({ className = "", size = "default", ref, ...props }) {
19
- const classes = ["avatar", className].filter(Boolean).join(" ");
19
+ function AvatarRoot({ className, size = "default", ref, ...props }) {
20
+ const classes = mergeBaseClassName(["avatar"].filter(Boolean).join(" "), className);
20
21
  return /* @__PURE__ */ jsx(Avatar$1.Root, {
21
22
  ref,
22
23
  "data-slot": "avatar",
@@ -28,8 +29,8 @@ function AvatarRoot({ className = "", size = "default", ref, ...props }) {
28
29
  /**
29
30
  * Displays the avatar image. Renders an `<img>` element.
30
31
  */
31
- function AvatarImage({ className = "", ref, ...props }) {
32
- const classes = ["avatar__image", className].filter(Boolean).join(" ");
32
+ function AvatarImage({ className, ref, ...props }) {
33
+ const classes = mergeBaseClassName(["avatar__image"].filter(Boolean).join(" "), className);
33
34
  return /* @__PURE__ */ jsx(Avatar$1.Image, {
34
35
  ref,
35
36
  "data-slot": "avatar-image",
@@ -41,8 +42,8 @@ function AvatarImage({ className = "", ref, ...props }) {
41
42
  * Displays when the image fails to load or isn't provided.
42
43
  * Typically contains initials or an icon. Renders a `<span>` element.
43
44
  */
44
- function AvatarFallback({ className = "", ref, ...props }) {
45
- const classes = ["avatar__fallback", className].filter(Boolean).join(" ");
45
+ function AvatarFallback({ className, ref, ...props }) {
46
+ const classes = mergeBaseClassName(["avatar__fallback"].filter(Boolean).join(" "), className);
46
47
  return /* @__PURE__ */ jsx(Avatar$1.Fallback, {
47
48
  ref,
48
49
  "data-slot": "avatar-fallback",
@@ -50,27 +51,27 @@ function AvatarFallback({ className = "", ref, ...props }) {
50
51
  ...props
51
52
  });
52
53
  }
53
- function AvatarGroup({ className = "", ref, ...props }) {
54
+ function AvatarGroup({ className, ref, ...props }) {
54
55
  return /* @__PURE__ */ jsx("div", {
55
56
  ref,
56
57
  "data-slot": "avatar-group",
57
- className: ["avatar-group", className].filter(Boolean).join(" "),
58
+ className: mergeBaseClassName(["avatar-group"].filter(Boolean).join(" "), className),
58
59
  ...props
59
60
  });
60
61
  }
61
- function AvatarGroupCount({ className = "", ref, ...props }) {
62
+ function AvatarGroupCount({ className, ref, ...props }) {
62
63
  return /* @__PURE__ */ jsx("div", {
63
64
  ref,
64
65
  "data-slot": "avatar-group-count",
65
- className: ["avatar-group__count", className].filter(Boolean).join(" "),
66
+ className: mergeBaseClassName(["avatar-group__count"].filter(Boolean).join(" "), className),
66
67
  ...props
67
68
  });
68
69
  }
69
- function AvatarBadge({ className = "", ref, ...props }) {
70
+ function AvatarBadge({ className, ref, ...props }) {
70
71
  return /* @__PURE__ */ jsx("span", {
71
72
  ref,
72
73
  "data-slot": "avatar-badge",
73
- className: ["avatar__badge", className].filter(Boolean).join(" "),
74
+ className: mergeBaseClassName(["avatar__badge"].filter(Boolean).join(" "), className),
74
75
  ...props
75
76
  });
76
77
  }
@@ -1,5 +1,5 @@
1
- import { t as cx } from "../class-names-9UtZwb0J.js";
2
- import { B as SpinnerIcon, w as MaximizeIcon } from "../icons-CpfUer49.js";
1
+ import { t as cx } from "../class-names-Bk-QLWWI.js";
2
+ import { T as MaximizeIcon, V as SpinnerIcon } from "../icons--FqCZEc3.js";
3
3
  import { Button } from "./Button.js";
4
4
  import { Dialog } from "./Dialog.js";
5
5
  import { Badge } from "./Badge.js";
@@ -1,5 +1,5 @@
1
- import { t as cx } from "../class-names-9UtZwb0J.js";
2
- import { M as PauseIcon, P as PlayIcon } from "../icons-CpfUer49.js";
1
+ import { t as cx } from "../class-names-Bk-QLWWI.js";
2
+ import { F as PlayIcon, N as PauseIcon } from "../icons--FqCZEc3.js";
3
3
  import { Button } from "./Button.js";
4
4
  import { Slider } from "./Slider.js";
5
5
  import * as React from "react";