@mcp-b/react-components 0.17.0 → 0.19.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 (294) hide show
  1. package/dist/{AgentActivity-BNUNrP9O.d.ts → AgentActivity-D2SHSGFX.d.ts} +1 -1
  2. package/dist/{AgentChat-CRuMi1Pb.d.ts → AgentChat-ClxViuUM.d.ts} +1 -20
  3. package/dist/{Button-FX_hpqxm.d.ts → Button-DLGzHsjc.d.ts} +13 -7
  4. package/dist/{CodeBlock-Co1noLbC.js → CodeBlock-Bb-IPBc_.js} +9 -6
  5. package/dist/{CodeBlock-Dnpr88ZQ.d.ts → CodeBlock-gV4kZeCI.d.ts} +2 -9
  6. package/dist/{FileTree-B7bBsUyU.js → FileTree-CUlXfnmc.js} +42 -16
  7. package/dist/{Message-C4eYRogZ.js → Message-rZEaaD8Q.js} +13 -20
  8. package/dist/{ModelSelector-BNrZlY_Y.js → ModelSelector-4GsCWcZV.js} +15 -22
  9. package/dist/{PromptInput-OLfXPuHM.d.ts → PromptInput-Bdh9pqlo.d.ts} +4 -6
  10. package/dist/{Select-CwSqP07Y.d.ts → Select-B_13gg_J.d.ts} +2 -2
  11. package/dist/{Tabs-9zddXDQo.d.ts → Tabs-ColWK-XA.d.ts} +10 -2
  12. package/dist/{ThinkChat-DInElus-.js → ThinkChat-15EhfvYJ.js} +84 -61
  13. package/dist/{ThinkChatActivity-BgesTfZ4.d.ts → ThinkChatActivity-Bzot45kX.d.ts} +4 -7
  14. package/dist/{ThinkChatActivitySummary-BPmu9a-c.d.ts → ThinkChatActivitySummary-D1xOrNrq.d.ts} +1 -1
  15. package/dist/{Toggle-DaXpe1Lc.d.ts → Toggle-JKZ43D5S.d.ts} +1 -1
  16. package/dist/{ToggleGroup-yseEWkOC.d.ts → ToggleGroup-DNd6cDJZ.d.ts} +2 -2
  17. package/dist/Workspace-Jez8ffUj.d.ts +274 -0
  18. package/dist/{WorkspaceExplorer-sZewzT2O.d.ts → WorkspaceExplorer-B9dQWNVK.d.ts} +2 -2
  19. package/dist/{WorkspaceFile-C8UzuSH4.d.ts → WorkspaceFile-CzyHnESE.d.ts} +1 -1
  20. package/dist/{WorkspaceFileView-DNdGAEiX.js → WorkspaceFileView-CEdArlOT.js} +120 -127
  21. package/dist/{WorkspaceLink-B1ykV1dS.js → WorkspaceLink-BYYeTQLf.js} +6 -27
  22. package/dist/{WorkspaceLink-DK1DWMHe.d.ts → WorkspaceLink-O-EBKUJ8.d.ts} +6 -9
  23. package/dist/{class-names-Bk-QLWWI.js → class-names-BiMDVpUo.js} +4 -1
  24. package/dist/components/Accordion.js +7 -2
  25. package/dist/components/Activity.js +2 -2
  26. package/dist/components/AgentActivity.d.ts +1 -1
  27. package/dist/components/AgentActivity.js +4 -5
  28. package/dist/components/AgentActivityPreview.d.ts +9 -9
  29. package/dist/components/AgentActivityPreview.js +8 -12
  30. package/dist/components/AgentAttention.d.ts +1 -1
  31. package/dist/components/AgentAttention.js +1 -1
  32. package/dist/components/AgentChat.d.ts +1 -1
  33. package/dist/components/AgentChat.js +94 -62
  34. package/dist/components/AgentChatMessageEditor.js +2 -2
  35. package/dist/components/AgentChatTurnError.js +2 -2
  36. package/dist/components/AgentConnection.js +3 -3
  37. package/dist/components/AgentMessageParts.js +1 -1
  38. package/dist/components/AgentToolDetail.d.ts +6 -4
  39. package/dist/components/AgentToolDetail.js +12 -10
  40. package/dist/components/AlertDialog.js +1 -1
  41. package/dist/components/AppTopBar.d.ts +24 -7
  42. package/dist/components/AppTopBar.js +32 -8
  43. package/dist/components/Approval.js +4 -4
  44. package/dist/components/Artifact.d.ts +1 -1
  45. package/dist/components/Artifact.js +6 -4
  46. package/dist/components/Autocomplete.js +1 -1
  47. package/dist/components/Avatar.d.ts +1 -1
  48. package/dist/components/Avatar.js +2 -2
  49. package/dist/components/Badge.js +3 -0
  50. package/dist/components/BrowserLiveView.js +27 -12
  51. package/dist/components/BrowserReplay.js +4 -3
  52. package/dist/components/BrowserRunPanel.js +5 -5
  53. package/dist/components/Button.d.ts +1 -1
  54. package/dist/components/Button.js +14 -11
  55. package/dist/components/Card.d.ts +7 -8
  56. package/dist/components/Card.js +19 -10
  57. package/dist/components/ChainOfThought.d.ts +1 -1
  58. package/dist/components/ChainOfThought.js +2 -2
  59. package/dist/components/ChatGptSignInScreen.js +8 -8
  60. package/dist/components/Checkbox.js +2 -2
  61. package/dist/components/CheckboxGroup.js +1 -1
  62. package/dist/components/Checkpoint.js +2 -2
  63. package/dist/components/CodeBlock.d.ts +1 -1
  64. package/dist/components/CodeBlock.js +1 -1
  65. package/dist/components/CodexModelSelector.js +35 -15
  66. package/dist/components/Collapsible.js +2 -2
  67. package/dist/components/Combobox.js +1 -1
  68. package/dist/components/Commit.d.ts +1 -1
  69. package/dist/components/Commit.js +3 -3
  70. package/dist/components/Context.js +1 -1
  71. package/dist/components/ContextMenu.js +2 -2
  72. package/dist/components/Conversation.d.ts +1 -1
  73. package/dist/components/Conversation.js +5 -4
  74. package/dist/components/DescriptionListParts.js +1 -1
  75. package/dist/components/Dialog.js +1 -1
  76. package/dist/components/EnvironmentVariables.d.ts +1 -1
  77. package/dist/components/EnvironmentVariables.js +3 -3
  78. package/dist/components/Field.js +5 -2
  79. package/dist/components/Fieldset.js +1 -1
  80. package/dist/components/FileTree.d.ts +6 -0
  81. package/dist/components/FileTree.js +1 -1
  82. package/dist/components/Form.js +1 -1
  83. package/dist/components/GithubMotionMark.js +1 -1
  84. package/dist/components/IconButton.d.ts +2 -3
  85. package/dist/components/IconButton.js +2 -1
  86. package/dist/components/InlineCitation.js +1 -1
  87. package/dist/components/Input.js +1 -1
  88. package/dist/components/Marker.js +1 -1
  89. package/dist/components/McpConnectionRequest.js +2 -2
  90. package/dist/components/McpServerPicker.js +2 -2
  91. package/dist/components/MediaPreviewCard.d.ts +103 -0
  92. package/dist/components/MediaPreviewCard.js +193 -0
  93. package/dist/components/Menu.js +1 -1
  94. package/dist/components/Menubar.js +2 -2
  95. package/dist/components/Message.d.ts +4 -1
  96. package/dist/components/Message.js +1 -1
  97. package/dist/components/MessageScroller.d.ts +1 -1
  98. package/dist/components/MessageScroller.js +5 -4
  99. package/dist/components/Meter.js +1 -1
  100. package/dist/components/ModelSelector.d.ts +4 -3
  101. package/dist/components/ModelSelector.js +1 -1
  102. package/dist/components/NavigationMenu.js +1 -1
  103. package/dist/components/NumberField.js +1 -1
  104. package/dist/components/Plan.js +2 -2
  105. package/dist/components/Popover.js +1 -1
  106. package/dist/components/PreviewCard.js +1 -1
  107. package/dist/components/PricingBillingToggle.js +1 -1
  108. package/dist/components/PricingFAQ.js +1 -1
  109. package/dist/components/PricingPage.js +2 -1
  110. package/dist/components/PricingPlanCard.js +4 -3
  111. package/dist/components/PricingUsageCalculator.js +2 -2
  112. package/dist/components/Progress.js +1 -1
  113. package/dist/components/PromptInput.d.ts +1 -1
  114. package/dist/components/PromptInput.js +31 -18
  115. package/dist/components/Queue.d.ts +1 -1
  116. package/dist/components/Queue.js +2 -3
  117. package/dist/components/RadioGroup.js +1 -1
  118. package/dist/components/Reasoning.js +3 -6
  119. package/dist/components/ResizableSidePanel.js +1 -1
  120. package/dist/components/ResponsiveSidebarShell.js +16 -10
  121. package/dist/components/ScrollArea.js +2 -1
  122. package/dist/components/SearchField.d.ts +43 -0
  123. package/dist/components/SearchField.js +52 -0
  124. package/dist/components/Select.d.ts +1 -1
  125. package/dist/components/Select.js +5 -6
  126. package/dist/components/Separator.js +1 -1
  127. package/dist/components/Slider.js +1 -1
  128. package/dist/components/Sources.js +2 -2
  129. package/dist/components/Stepper.js +16 -9
  130. package/dist/components/SubagentRunDetails.js +1 -1
  131. package/dist/components/SubagentRunIndicator.js +2 -2
  132. package/dist/components/SubagentRunList.d.ts +3 -5
  133. package/dist/components/SubagentRunList.js +3 -4
  134. package/dist/components/SubagentRunSelector.d.ts +8 -12
  135. package/dist/components/SubagentRunSelector.js +17 -20
  136. package/dist/components/Switch.d.ts +2 -2
  137. package/dist/components/Switch.js +4 -5
  138. package/dist/components/Tabs.d.ts +2 -2
  139. package/dist/components/Tabs.js +12 -3
  140. package/dist/components/Task.js +2 -2
  141. package/dist/components/Terminal.d.ts +2 -2
  142. package/dist/components/Terminal.js +5 -4
  143. package/dist/components/TestResults.js +10 -6
  144. package/dist/components/Textarea.js +1 -1
  145. package/dist/components/ThemeModeControl.js +1 -1
  146. package/dist/components/ThinkChat.d.ts +33 -20
  147. package/dist/components/ThinkChat.js +4 -4
  148. package/dist/components/ThinkChatActivity.d.ts +2 -2
  149. package/dist/components/ThinkChatActivity.js +8 -10
  150. package/dist/components/ThinkChatActivitySummary.d.ts +1 -1
  151. package/dist/components/ThinkChatActivitySummary.js +7 -3
  152. package/dist/components/ThinkChatToolPanels.js +26 -16
  153. package/dist/components/ThinkExecutionDetail.js +2 -2
  154. package/dist/components/ThinkExecutionStatus.js +2 -2
  155. package/dist/components/ThinkExecutionWorkbench.d.ts +30 -8
  156. package/dist/components/ThinkExecutionWorkbench.js +70 -134
  157. package/dist/components/ThinkFullApp.d.ts +36 -35
  158. package/dist/components/ThinkFullApp.js +156 -109
  159. package/dist/components/ThinkFullAppViewSwitch.d.ts +1 -1
  160. package/dist/components/ThinkFullAppViewSwitch.js +1 -1
  161. package/dist/components/ThinkRecoveryNotice.js +18 -12
  162. package/dist/components/ThinkRoutineBrowser.d.ts +17 -9
  163. package/dist/components/ThinkRoutineBrowser.js +33 -40
  164. package/dist/components/ThinkRoutineDetail.d.ts +5 -2
  165. package/dist/components/ThinkRoutineDetail.js +4 -4
  166. package/dist/components/ThinkRoutineForm.d.ts +3 -2
  167. package/dist/components/ThinkRoutineForm.js +11 -10
  168. package/dist/components/ThinkRoutineLibrary.d.ts +24 -31
  169. package/dist/components/ThinkRoutineLibrary.js +57 -80
  170. package/dist/components/ThinkRoutineRuns.d.ts +3 -2
  171. package/dist/components/ThinkRoutineRuns.js +31 -24
  172. package/dist/components/ThinkThreadPicker.d.ts +17 -11
  173. package/dist/components/ThinkThreadPicker.js +163 -39
  174. package/dist/components/Toast.js +1 -1
  175. package/dist/components/Toggle.d.ts +1 -1
  176. package/dist/components/Toggle.js +9 -7
  177. package/dist/components/ToggleGroup.d.ts +1 -1
  178. package/dist/components/ToggleGroup.js +15 -13
  179. package/dist/components/ToolInvocation.js +1 -1
  180. package/dist/components/Toolbar.js +1 -1
  181. package/dist/components/Tooltip.d.ts +8 -1
  182. package/dist/components/Tooltip.js +11 -2
  183. package/dist/components/TransitionSurface.d.ts +27 -0
  184. package/dist/components/TransitionSurface.js +20 -0
  185. package/dist/components/WebPreview.d.ts +5 -5
  186. package/dist/components/WebPreview.js +68 -54
  187. package/dist/components/Workspace.d.ts +2 -2
  188. package/dist/components/Workspace.js +358 -328
  189. package/dist/components/WorkspaceBrowser.d.ts +4 -7
  190. package/dist/components/WorkspaceBrowser.js +15 -25
  191. package/dist/components/WorkspaceExplorer.d.ts +5 -5
  192. package/dist/components/WorkspaceExplorer.js +19 -32
  193. package/dist/components/WorkspaceFile.d.ts +1 -1
  194. package/dist/components/WorkspaceFileView.d.ts +14 -2
  195. package/dist/components/WorkspaceFileView.js +1 -1
  196. package/dist/components/WorkspaceHeader.d.ts +0 -8
  197. package/dist/components/WorkspaceHeader.js +3 -15
  198. package/dist/components/WorkspaceLink.d.ts +1 -1
  199. package/dist/components/WorkspaceLink.js +1 -1
  200. package/dist/components/icons.d.ts +2 -2
  201. package/dist/components/icons.js +2 -2
  202. package/dist/{copy-button-cYsJBauI.js → copy-button-BtRwhRks.js} +3 -2
  203. package/dist/{copy-button-CQx3LQAC.d.ts → copy-button-D7aAYA-2.d.ts} +1 -1
  204. package/dist/{icons--FqCZEc3.js → icons-DKXiSepE.js} +7 -3
  205. package/dist/{icons-DpUqY8Mp.d.ts → icons-DkRtZmvT.d.ts} +22 -2
  206. package/dist/navigation-link-Cob7KBlM.js +19 -0
  207. package/dist/styles/accordion.css +4 -19
  208. package/dist/styles/activity.css +48 -56
  209. package/dist/styles/agent-activity-preview.css +2 -0
  210. package/dist/styles/agent-chat.css +14 -22
  211. package/dist/styles/alert-dialog.css +16 -18
  212. package/dist/styles/app-top-bar.css +17 -9
  213. package/dist/styles/approval.css +11 -6
  214. package/dist/styles/artifact.css +6 -6
  215. package/dist/styles/autocomplete.css +2 -1
  216. package/dist/styles/avatar.css +35 -30
  217. package/dist/styles/badge.css +10 -10
  218. package/dist/styles/base-ui-motion.css +94 -39
  219. package/dist/styles/browser-control-overlay.css +0 -1
  220. package/dist/styles/browser-live-view.css +39 -22
  221. package/dist/styles/browser-replay.css +1 -1
  222. package/dist/styles/browser-run-panel.css +8 -4
  223. package/dist/styles/button.css +36 -33
  224. package/dist/styles/card.css +5 -6
  225. package/dist/styles/chain-of-thought.css +22 -16
  226. package/dist/styles/checkbox.css +18 -5
  227. package/dist/styles/codex-model-selector.css +46 -8
  228. package/dist/styles/collapsible.css +10 -10
  229. package/dist/styles/combobox.css +3 -2
  230. package/dist/styles/commit.css +19 -18
  231. package/dist/styles/composition-motion.css +83 -0
  232. package/dist/styles/context-menu.css +3 -3
  233. package/dist/styles/context.css +11 -10
  234. package/dist/styles/conversation.css +18 -23
  235. package/dist/styles/dialog.css +15 -15
  236. package/dist/styles/field.css +32 -12
  237. package/dist/styles/file-tree.css +69 -9
  238. package/dist/styles/form.css +1 -1
  239. package/dist/styles/index.css +5 -0
  240. package/dist/styles/input.css +2 -2
  241. package/dist/styles/marker.css +14 -13
  242. package/dist/styles/mcp-server-picker.css +20 -17
  243. package/dist/styles/media-preview-card.css +160 -0
  244. package/dist/styles/menu.css +11 -11
  245. package/dist/styles/menubar.css +12 -11
  246. package/dist/styles/message.css +27 -21
  247. package/dist/styles/meter.css +2 -2
  248. package/dist/styles/model-selector.css +16 -14
  249. package/dist/styles/motion-reduction.css +29 -0
  250. package/dist/styles/navigation-menu.css +14 -30
  251. package/dist/styles/number-field.css +22 -4
  252. package/dist/styles/plan.css +5 -0
  253. package/dist/styles/popover.css +15 -16
  254. package/dist/styles/preview-card.css +2 -32
  255. package/dist/styles/progress.css +8 -3
  256. package/dist/styles/prompt-input.css +87 -70
  257. package/dist/styles/queue.css +48 -32
  258. package/dist/styles/radio.css +19 -12
  259. package/dist/styles/reasoning.css +2 -1
  260. package/dist/styles/recipes.css +109 -37
  261. package/dist/styles/resizable-side-panel.css +4 -10
  262. package/dist/styles/responsive-sidebar-shell.css +16 -15
  263. package/dist/styles/scroll-area.css +32 -15
  264. package/dist/styles/search-field.css +21 -0
  265. package/dist/styles/select.css +19 -12
  266. package/dist/styles/slider.css +25 -29
  267. package/dist/styles/sources.css +3 -3
  268. package/dist/styles/stepper.css +36 -26
  269. package/dist/styles/subagent-run.css +1 -1
  270. package/dist/styles/switch.css +32 -29
  271. package/dist/styles/tabs.css +79 -23
  272. package/dist/styles/task.css +13 -9
  273. package/dist/styles/test-results.css +29 -23
  274. package/dist/styles/theme-mode-control.css +8 -0
  275. package/dist/styles/think-execution-workbench.css +18 -15
  276. package/dist/styles/think-full-app.css +45 -68
  277. package/dist/styles/think-routine-library.css +43 -24
  278. package/dist/styles/think-thread-picker.css +193 -51
  279. package/dist/styles/toast.css +48 -27
  280. package/dist/styles/toggle-group.css +2 -36
  281. package/dist/styles/toggle.css +29 -5
  282. package/dist/styles/toolbar.css +25 -27
  283. package/dist/styles/tooltip.css +2 -32
  284. package/dist/styles/transition-surface.css +55 -0
  285. package/dist/styles/workspace-explorer.css +99 -44
  286. package/dist/summarize-tool-input-CqTcGRYy.js +15 -0
  287. package/dist/utils/codex-model-catalog.d.ts +2 -8
  288. package/dist/utils/codex-model-catalog.js +2 -16
  289. package/dist/utils/mcp-server-catalog.d.ts +139 -0
  290. package/dist/utils/mcp-server-catalog.js +98 -0
  291. package/dist/utils/structured-code.d.ts +1 -1
  292. package/package.json +13 -7
  293. package/dist/Workspace-C9RFoxcu.d.ts +0 -62
  294. package/dist/summarize-tool-input-BUJsENSn.js +0 -12
@@ -0,0 +1,193 @@
1
+ import { t as cx } from "../class-names-BiMDVpUo.js";
2
+ import { B as PlayIcon } from "../icons-DKXiSepE.js";
3
+ import { n as mergeRefs } from "../merge-refs-DF_7w2x_.js";
4
+ import { Card } from "./Card.js";
5
+ import * as React from "react";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ //#region src/components/MediaPreviewCard.tsx
8
+ const MediaPreviewCardContext = React.createContext(null);
9
+ function useMediaPreviewCardContext() {
10
+ const context = React.useContext(MediaPreviewCardContext);
11
+ if (!context) throw new Error("MediaPreviewCardVideo must be rendered inside MediaPreviewCard.");
12
+ return context;
13
+ }
14
+ /**
15
+ * A media-led card that plays its decorative preview only while a mouse is
16
+ * hovering the card or keyboard focus is within it. The preview pauses and
17
+ * resets when both forms of intent leave, and remains poster-only when the
18
+ * user prefers reduced motion.
19
+ *
20
+ * Keep routing and product data in the consumer. Place its link and ordinary
21
+ * Card content inside this root so the entire composition keeps native link
22
+ * semantics.
23
+ */
24
+ function MediaPreviewCard({ children, className, onBlurCapture, onFocusCapture, onPointerEnter, onPointerLeave, ref, ...props }) {
25
+ const videoRef = React.useRef(null);
26
+ const pointerInsideRef = React.useRef(false);
27
+ const focusInsideRef = React.useRef(false);
28
+ const [playing, setPlaying] = React.useState(false);
29
+ const stopPreview = React.useCallback(() => {
30
+ const video = videoRef.current;
31
+ if (!video) return;
32
+ video.pause();
33
+ if (video.readyState >= HTMLMediaElement.HAVE_METADATA) try {
34
+ video.currentTime = 0;
35
+ } catch {}
36
+ setPlaying(false);
37
+ }, []);
38
+ const startPreview = React.useCallback(() => {
39
+ const video = videoRef.current;
40
+ if (!video || typeof window !== "undefined" && (window.matchMedia("(prefers-reduced-motion: reduce)").matches || document.documentElement.dataset.motion === "reduce")) return;
41
+ video.play().catch(() => {
42
+ setPlaying(false);
43
+ });
44
+ }, []);
45
+ React.useEffect(() => {
46
+ const media = window.matchMedia("(prefers-reduced-motion: reduce)");
47
+ const root = document.documentElement;
48
+ const stopWhenReduced = () => {
49
+ if (media.matches || root.dataset.motion === "reduce") stopPreview();
50
+ };
51
+ const observer = new MutationObserver(stopWhenReduced);
52
+ media.addEventListener("change", stopWhenReduced);
53
+ observer.observe(root, { attributeFilter: ["data-motion"] });
54
+ return () => {
55
+ media.removeEventListener("change", stopWhenReduced);
56
+ observer.disconnect();
57
+ };
58
+ }, [stopPreview]);
59
+ const context = React.useMemo(() => ({
60
+ setPlaying,
61
+ videoRef
62
+ }), []);
63
+ return /* @__PURE__ */ jsx(MediaPreviewCardContext.Provider, {
64
+ value: context,
65
+ children: /* @__PURE__ */ jsx(Card, {
66
+ ref,
67
+ "data-slot": "media-preview-card",
68
+ "data-playing": playing ? "true" : "false",
69
+ className: cx("media-preview-card", className),
70
+ onPointerEnter: (event) => {
71
+ onPointerEnter?.(event);
72
+ if (event.defaultPrevented || event.pointerType !== "mouse") return;
73
+ pointerInsideRef.current = true;
74
+ startPreview();
75
+ },
76
+ onPointerLeave: (event) => {
77
+ onPointerLeave?.(event);
78
+ if (event.defaultPrevented) return;
79
+ pointerInsideRef.current = false;
80
+ if (!focusInsideRef.current) stopPreview();
81
+ },
82
+ onFocusCapture: (event) => {
83
+ onFocusCapture?.(event);
84
+ if (event.defaultPrevented) return;
85
+ focusInsideRef.current = true;
86
+ startPreview();
87
+ },
88
+ onBlurCapture: (event) => {
89
+ onBlurCapture?.(event);
90
+ if (event.defaultPrevented) return;
91
+ if (event.currentTarget.contains(event.relatedTarget)) return;
92
+ focusInsideRef.current = false;
93
+ if (!pointerInsideRef.current) stopPreview();
94
+ },
95
+ ...props,
96
+ children
97
+ })
98
+ });
99
+ }
100
+ /**
101
+ * Decorative, silent preview media for MediaPreviewCard. Native source
102
+ * children allow callers to provide WebM followed by MP4 without the design
103
+ * system owning storage or URLs.
104
+ */
105
+ function MediaPreviewCardVideo({ children, className, height, onEnded, onPause, onPlaying, poster, ref, style, width, ...props }) {
106
+ const { setPlaying, videoRef } = useMediaPreviewCardContext();
107
+ return /* @__PURE__ */ jsxs("div", {
108
+ "data-slot": "media-preview-card-media",
109
+ className: "media-preview-card__media",
110
+ style: { "--media-preview-card-aspect-ratio": `${width} / ${height}` },
111
+ children: [/* @__PURE__ */ jsx("video", {
112
+ ...props,
113
+ ref: mergeRefs(ref, (node) => {
114
+ videoRef.current = node;
115
+ }),
116
+ "data-slot": "media-preview-card-video",
117
+ className: cx("media-preview-card__video", className),
118
+ style,
119
+ poster,
120
+ width,
121
+ height,
122
+ muted: true,
123
+ loop: true,
124
+ playsInline: true,
125
+ preload: "none",
126
+ "aria-hidden": "true",
127
+ onPlaying: (event) => {
128
+ setPlaying(true);
129
+ onPlaying?.(event);
130
+ },
131
+ onPause: (event) => {
132
+ setPlaying(false);
133
+ onPause?.(event);
134
+ },
135
+ onEnded: (event) => {
136
+ setPlaying(false);
137
+ onEnded?.(event);
138
+ },
139
+ children
140
+ }), /* @__PURE__ */ jsx("span", {
141
+ className: "media-preview-card__play",
142
+ "aria-hidden": "true",
143
+ children: /* @__PURE__ */ jsx(PlayIcon, {})
144
+ })]
145
+ });
146
+ }
147
+ /**
148
+ * Positions sibling controls above the preview without nesting them inside the
149
+ * card's primary link. Use this slot for compact secondary actions such as a
150
+ * menu trigger; the consumer remains responsible for each control's behavior
151
+ * and accessible name.
152
+ */
153
+ function MediaPreviewCardActions({ className, ref, ...props }) {
154
+ return /* @__PURE__ */ jsx("div", {
155
+ ref,
156
+ "data-slot": "media-preview-card-actions",
157
+ className: cx("media-preview-card__actions", className),
158
+ ...props
159
+ });
160
+ }
161
+ /**
162
+ * Reserves the same frame as preview media when a card has no poster or video.
163
+ * Keep any explanatory copy visually hidden so the quiet fallback remains
164
+ * useful without competing with the card title.
165
+ */
166
+ function MediaPreviewCardPlaceholder({ className, ref, ...props }) {
167
+ return /* @__PURE__ */ jsx("div", {
168
+ ref,
169
+ "data-slot": "media-preview-card-placeholder",
170
+ className: cx("media-preview-card__placeholder", className),
171
+ ...props
172
+ });
173
+ }
174
+ /** Compact facts shown immediately below a preview. */
175
+ function MediaPreviewCardMeta({ className, ref, ...props }) {
176
+ return /* @__PURE__ */ jsx("div", {
177
+ ref,
178
+ "data-slot": "media-preview-card-meta",
179
+ className: cx("media-preview-card__meta", className),
180
+ ...props
181
+ });
182
+ }
183
+ /** A single icon-led fact inside MediaPreviewCardMeta. */
184
+ function MediaPreviewCardFact({ className, ref, ...props }) {
185
+ return /* @__PURE__ */ jsx("span", {
186
+ ref,
187
+ "data-slot": "media-preview-card-fact",
188
+ className: cx("media-preview-card__fact", className),
189
+ ...props
190
+ });
191
+ }
192
+ //#endregion
193
+ export { MediaPreviewCard, MediaPreviewCardActions, MediaPreviewCardFact, MediaPreviewCardMeta, MediaPreviewCardPlaceholder, MediaPreviewCardVideo };
@@ -1,4 +1,4 @@
1
- import { n as mergeBaseClassName } from "../class-names-Bk-QLWWI.js";
1
+ import { n as mergeBaseClassName } from "../class-names-BiMDVpUo.js";
2
2
  import "react";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  import { Menu as Menu$1 } from "@base-ui/react/menu";
@@ -1,5 +1,5 @@
1
- import { n as mergeBaseClassName } from "../class-names-Bk-QLWWI.js";
2
- import { m as DotIcon, s as CheckIcon } from "../icons--FqCZEc3.js";
1
+ import { n as mergeBaseClassName } from "../class-names-BiMDVpUo.js";
2
+ import { _ as DotIcon, u as CheckIcon } from "../icons-DKXiSepE.js";
3
3
  import "react";
4
4
  import { jsx } from "react/jsx-runtime";
5
5
  import { Menu } from "@base-ui/react/menu";
@@ -1,4 +1,4 @@
1
- import { r as ButtonProps } from "../Button-FX_hpqxm.js";
1
+ import { r as ButtonProps } from "../Button-DLGzHsjc.js";
2
2
  import * as React from "react";
3
3
  import { FileUIPart, UIMessage } from "ai";
4
4
  import { StreamdownProps } from "streamdown";
@@ -128,6 +128,8 @@ declare function MessageToolbar({
128
128
  ref?: React.Ref<HTMLDivElement>;
129
129
  }): React.JSX.Element;
130
130
  interface MessageBranchProps extends React.HTMLAttributes<HTMLDivElement> {
131
+ /** Number of response branches rendered by MessageBranchContent. */
132
+ branchCount: number;
131
133
  /** Zero-based index of the initially selected branch. */
132
134
  defaultBranch?: number;
133
135
  /** Controlled branch index. */
@@ -142,6 +144,7 @@ interface MessageBranchProps extends React.HTMLAttributes<HTMLDivElement> {
142
144
  */
143
145
  declare function MessageBranch({
144
146
  className,
147
+ branchCount,
145
148
  defaultBranch,
146
149
  branch,
147
150
  onBranchChange,
@@ -1,2 +1,2 @@
1
- import { a as MessageBranch, c as MessageBranchPage, d as MessageContent, f as MessageResponse, i as MessageAttachment, l as MessageBranchPrevious, n as MessageAction, o as MessageBranchContent, p as MessageToolbar, r as MessageActions, s as MessageBranchNext, t as Message, u as MessageBranchSelector } from "../Message-C4eYRogZ.js";
1
+ import { a as MessageBranch, c as MessageBranchPage, d as MessageContent, f as MessageResponse, i as MessageAttachment, l as MessageBranchPrevious, n as MessageAction, o as MessageBranchContent, p as MessageToolbar, r as MessageActions, s as MessageBranchNext, t as Message, u as MessageBranchSelector } from "../Message-rZEaaD8Q.js";
2
2
  export { Message, MessageAction, MessageActions, MessageAttachment, MessageBranch, MessageBranchContent, MessageBranchNext, MessageBranchPage, MessageBranchPrevious, MessageBranchSelector, MessageContent, MessageResponse, MessageToolbar };
@@ -1,4 +1,4 @@
1
- import { r as ButtonProps } from "../Button-FX_hpqxm.js";
1
+ import { r as ButtonProps } from "../Button-DLGzHsjc.js";
2
2
  import * as React from "react";
3
3
  import { MessageScroller as MessageScroller$1, useMessageScroller, useMessageScrollerScrollable, useMessageScrollerVisibility } from "@shadcn/react/message-scroller";
4
4
 
@@ -1,5 +1,5 @@
1
- import { t as cx } from "../class-names-Bk-QLWWI.js";
2
- import { t as ArrowDownIcon } from "../icons--FqCZEc3.js";
1
+ import { t as cx } from "../class-names-BiMDVpUo.js";
2
+ import { n as ArrowDownIcon } from "../icons-DKXiSepE.js";
3
3
  import { Button } from "./Button.js";
4
4
  import "react";
5
5
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -41,7 +41,7 @@ function MessageScrollerItem({ className, scrollAnchor = false, ...props }) {
41
41
  ...props
42
42
  });
43
43
  }
44
- function MessageScrollerButton({ className, children, color = "neutral", direction = "end", render, size = "icon-sm", variant = "normal", ...props }) {
44
+ function MessageScrollerButton({ className, children, color = "neutral", direction = "end", render, size = "sm", variant = "normal", ...props }) {
45
45
  return /* @__PURE__ */ jsx(MessageScroller$1.Button, {
46
46
  "data-slot": "message-scroller-button",
47
47
  direction,
@@ -49,7 +49,8 @@ function MessageScrollerButton({ className, children, color = "neutral", directi
49
49
  render: render ?? /* @__PURE__ */ jsx(Button, {
50
50
  color,
51
51
  size,
52
- variant
52
+ variant,
53
+ iconOnly: true
53
54
  }),
54
55
  ...props,
55
56
  children: children ?? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(ArrowDownIcon, {}), /* @__PURE__ */ jsx("span", {
@@ -1,4 +1,4 @@
1
- import { n as mergeBaseClassName } from "../class-names-Bk-QLWWI.js";
1
+ import { n as mergeBaseClassName } from "../class-names-BiMDVpUo.js";
2
2
  import "react";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  import { Meter as Meter$1 } from "@base-ui/react/meter";
@@ -1,4 +1,5 @@
1
- import { r as ButtonProps } from "../Button-FX_hpqxm.js";
1
+ import { r as ButtonProps } from "../Button-DLGzHsjc.js";
2
+ import { DialogProps } from "./Dialog.js";
2
3
  import { SeparatorProps } from "./Separator.js";
3
4
  import * as React from "react";
4
5
  import Cloudflare from "cloudflare";
@@ -54,8 +55,8 @@ interface ModelSelectorProps extends React.HTMLAttributes<HTMLDivElement> {
54
55
  open?: boolean;
55
56
  /** Initial dialog open state for uncontrolled usage. */
56
57
  defaultOpen?: boolean;
57
- /** Called when the dialog opens or closes. */
58
- onOpenChange?: (open: boolean) => void;
58
+ /** Receives Base UI's full open-change event details. */
59
+ onOpenChange?: DialogProps["onOpenChange"];
59
60
  /** Additional class names for layout only; do not restyle dialog internals from apps. */
60
61
  className?: string;
61
62
  /** Trigger, content, search input, grouped list, and items. */
@@ -1,2 +1,2 @@
1
- import { _ as getCloudflareModelProvider, a as ModelSelectorEmpty, b as normalizeCloudflareModelSelectorModels, c as ModelSelectorItem, d as ModelSelectorLogoGroup, f as ModelSelectorName, g as formatCloudflareModelProvider, h as ModelSelectorTrigger, i as ModelSelectorDialog, l as ModelSelectorList, m as ModelSelectorShortcut, n as ModelSelector, o as ModelSelectorGroup, p as ModelSelectorSeparator, r as ModelSelectorContent, s as ModelSelectorInput, t as CloudflareModelSelector, u as ModelSelectorLogo, v as isCloudflareRunnableModelId, x as readCloudflareModelId, y as listCloudflareModelSelectorOptions } from "../ModelSelector-BNrZlY_Y.js";
1
+ import { _ as getCloudflareModelProvider, a as ModelSelectorEmpty, b as normalizeCloudflareModelSelectorModels, c as ModelSelectorItem, d as ModelSelectorLogoGroup, f as ModelSelectorName, g as formatCloudflareModelProvider, h as ModelSelectorTrigger, i as ModelSelectorDialog, l as ModelSelectorList, m as ModelSelectorShortcut, n as ModelSelector, o as ModelSelectorGroup, p as ModelSelectorSeparator, r as ModelSelectorContent, s as ModelSelectorInput, t as CloudflareModelSelector, u as ModelSelectorLogo, v as isCloudflareRunnableModelId, x as readCloudflareModelId, y as listCloudflareModelSelectorOptions } from "../ModelSelector-4GsCWcZV.js";
2
2
  export { CloudflareModelSelector, ModelSelector, ModelSelectorContent, ModelSelectorDialog, ModelSelectorEmpty, ModelSelectorGroup, ModelSelectorInput, ModelSelectorItem, ModelSelectorList, ModelSelectorLogo, ModelSelectorLogoGroup, ModelSelectorName, ModelSelectorSeparator, ModelSelectorShortcut, ModelSelectorTrigger, formatCloudflareModelProvider, getCloudflareModelProvider, isCloudflareRunnableModelId, listCloudflareModelSelectorOptions, normalizeCloudflareModelSelectorModels, readCloudflareModelId };
@@ -1,4 +1,4 @@
1
- import { n as mergeBaseClassName } from "../class-names-Bk-QLWWI.js";
1
+ import { n as mergeBaseClassName } from "../class-names-BiMDVpUo.js";
2
2
  import "react";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  import { NavigationMenu as NavigationMenu$1 } from "@base-ui/react/navigation-menu";
@@ -1,4 +1,4 @@
1
- import { n as mergeBaseClassName } from "../class-names-Bk-QLWWI.js";
1
+ import { n as mergeBaseClassName } from "../class-names-BiMDVpUo.js";
2
2
  import "react";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  import { NumberField as NumberField$1 } from "@base-ui/react/number-field";
@@ -1,5 +1,5 @@
1
- import { t as cx } from "../class-names-Bk-QLWWI.js";
2
- import { m as DotIcon, r as ArrowRightIcon, s as CheckIcon } from "../icons--FqCZEc3.js";
1
+ import { t as cx } from "../class-names-BiMDVpUo.js";
2
+ import { _ as DotIcon, i as ArrowRightIcon, u as CheckIcon } from "../icons-DKXiSepE.js";
3
3
  import * as React from "react";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
5
5
  //#region src/components/Plan.tsx
@@ -1,4 +1,4 @@
1
- import { n as mergeBaseClassName } from "../class-names-Bk-QLWWI.js";
1
+ import { n as mergeBaseClassName } from "../class-names-BiMDVpUo.js";
2
2
  import * as React from "react";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  import { Popover as Popover$1 } from "@base-ui/react/popover";
@@ -1,4 +1,4 @@
1
- import { n as mergeBaseClassName } from "../class-names-Bk-QLWWI.js";
1
+ import { n as mergeBaseClassName } from "../class-names-BiMDVpUo.js";
2
2
  import "react";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  import { PreviewCard as PreviewCard$1 } from "@base-ui/react/preview-card";
@@ -1,4 +1,4 @@
1
- import { t as cx } from "../class-names-Bk-QLWWI.js";
1
+ import { t as cx } from "../class-names-BiMDVpUo.js";
2
2
  import { Badge } from "./Badge.js";
3
3
  import { Checkbox } from "./Checkbox.js";
4
4
  import { Switch } from "./Switch.js";
@@ -1,4 +1,4 @@
1
- import { t as cx } from "../class-names-Bk-QLWWI.js";
1
+ import { t as cx } from "../class-names-BiMDVpUo.js";
2
2
  import { Accordion } from "./Accordion.js";
3
3
  import * as React from "react";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -7,6 +7,7 @@ import { PricingUsageCalculator } from "./PricingUsageCalculator.js";
7
7
  import * as React from "react";
8
8
  import { jsx, jsxs } from "react/jsx-runtime";
9
9
  //#region src/components/PricingPage.tsx
10
+ const EMPTY_USAGE_TIERS = [];
10
11
  /**
11
12
  * A comprehensive pricing page component that demonstrates all pricing-related
12
13
  * components working together.
@@ -28,7 +29,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
28
29
  * />
29
30
  * ```
30
31
  */
31
- function PricingPage({ title = "Simple, transparent pricing", subtitle, plans, faq, showUsageCalculator = false, usageTiers = [], maxUsage = 1e5, usageUnit = "API calls", onSelectPlan, onConfirmUpgrade, className = "", billingToggleVariant, productIds, currentProductId, isSubscribed = false, checkoutUrl = "/api/checkout", switchPlanUrl = "/api/switch-plan", portalUrl = "/api/portal", isLoggedIn = false, loginUrl = "/auth/login", hasPolarAccount = false, onCheckout, onSwitchPlan, onPortalRedirect }) {
32
+ function PricingPage({ title = "Simple, transparent pricing", subtitle, plans, faq, showUsageCalculator = false, usageTiers = EMPTY_USAGE_TIERS, maxUsage = 1e5, usageUnit = "API calls", onSelectPlan, onConfirmUpgrade, className = "", billingToggleVariant, productIds, currentProductId, isSubscribed = false, checkoutUrl = "/api/checkout", switchPlanUrl = "/api/switch-plan", portalUrl = "/api/portal", isLoggedIn = false, loginUrl = "/auth/login", hasPolarAccount = false, onCheckout, onSwitchPlan, onPortalRedirect }) {
32
33
  const [billingPeriod, setBillingPeriod] = React.useState("monthly");
33
34
  const [selectedPlan, setSelectedPlan] = React.useState(null);
34
35
  const [confirmDialogOpen, setConfirmDialogOpen] = React.useState(false);
@@ -1,5 +1,5 @@
1
- import { t as cx } from "../class-names-Bk-QLWWI.js";
2
- import { C as InfoIcon, k as MinusIcon, s as CheckIcon } from "../icons--FqCZEc3.js";
1
+ import { t as cx } from "../class-names-BiMDVpUo.js";
2
+ import { D as InfoIcon, N as MinusIcon, u as CheckIcon } from "../icons-DKXiSepE.js";
3
3
  import { Button } from "./Button.js";
4
4
  import { Tooltip } from "./Tooltip.js";
5
5
  import { Separator } from "./Separator.js";
@@ -94,7 +94,8 @@ function PricingPlanCard({ plan, billingPeriod, action = "select", onSelect, cla
94
94
  render: /* @__PURE__ */ jsx(Button, {
95
95
  variant: "ghost",
96
96
  color: "neutral",
97
- size: "icon-sm",
97
+ size: "sm",
98
+ iconOnly: true,
98
99
  "aria-label": `More information about ${feature.name}`
99
100
  }),
100
101
  children: /* @__PURE__ */ jsx(InfoIcon, { size: 14 })
@@ -1,4 +1,4 @@
1
- import { t as cx } from "../class-names-Bk-QLWWI.js";
1
+ import { t as cx } from "../class-names-BiMDVpUo.js";
2
2
  import { Separator } from "./Separator.js";
3
3
  import { Progress } from "./Progress.js";
4
4
  import { Slider } from "./Slider.js";
@@ -9,7 +9,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
9
9
  //#region src/components/PricingUsageCalculator.tsx
10
10
  /** Self-contained usage estimator composed from Card, Slider, Progress, and Separator. */
11
11
  function PricingUsageCalculator({ usageTiers, maxUsage = 1e5, usageUnit = "API calls", defaultUsage = 5e4, className }) {
12
- const [usage, setUsage] = React.useState(Math.min(defaultUsage, maxUsage));
12
+ const [usage, setUsage] = React.useState(() => Math.min(defaultUsage, maxUsage));
13
13
  return /* @__PURE__ */ jsxs(Card, {
14
14
  className: cx("pricing-page__calculator", className),
15
15
  children: [
@@ -1,4 +1,4 @@
1
- import { n as mergeBaseClassName } from "../class-names-Bk-QLWWI.js";
1
+ import { n as mergeBaseClassName } from "../class-names-BiMDVpUo.js";
2
2
  import "react";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  import { Progress as Progress$1 } from "@base-ui/react/progress";
@@ -1,2 +1,2 @@
1
- import { $ as PromptInputDictationProps, A as PromptInputCommandDefinition, At as PromptInputTabProps, B as PromptInputCommandItemProps, Bt as getApprovalRequestId, C as PromptInputBodyProps, Ct as PromptInputTab, D as PromptInputCommand, Dt as PromptInputTabItemProps, E as PromptInputButtonTooltip, Et as PromptInputTabItem, F as PromptInputCommandGroupLabelProps, Ft as PromptInputTools, G as PromptInputCommandSeparatorProps, Gt as useProviderAttachments, H as PromptInputCommandListProps, Ht as getPendingToolApprovals, I as PromptInputCommandGroupProps, It as PromptInputToolsProps, J as PromptInputContextItem, K as PromptInputCommandTrigger, L as PromptInputCommandInput, Lt as PromptInputTooltipConfig, M as PromptInputCommandEmptyProps, Mt as PromptInputTabsListProps, N as PromptInputCommandGroup, Nt as PromptInputTextarea, O as PromptInputCommandComposer, Ot as PromptInputTabLabel, P as PromptInputCommandGroupLabel, Pt as PromptInputTextareaProps, Q as PromptInputDictation, R as PromptInputCommandInputProps, Rt as TextInputContext, S as PromptInputBody, St as PromptInputSubmitProps, T as PromptInputButtonProps, Tt as PromptInputTabBodyProps, U as PromptInputCommandProps, Ut as usePromptInputAttachments, V as PromptInputCommandList, Vt as getApprovalStateKey, W as PromptInputCommandSeparator, Wt as usePromptInputController, X as PromptInputContextSelectorProps, Y as PromptInputContextSelector, Z as PromptInputControllerProps, _ as PromptInputApprovalProps, _t as PromptInputReferences, a as PromptInputActionAddAttachmentsProps, at as PromptInputHoverCardContent, b as PromptInputAttachments, bt as PromptInputSelectProps, c as PromptInputActionMenu, ct as PromptInputHoverCardTrigger, d as PromptInputActionMenuItem, dt as PromptInputPermissionSelector, et as PromptInputFooter, f as PromptInputActionMenuItemProps, ft as PromptInputPermissionSelectorProps, g as PromptInputApproval, gt as PromptInputReference, h as PromptInputActionMenuTriggerProps, ht as PromptInputProviderProps, i as PromptInputActionAddAttachments, it as PromptInputHoverCard, j as PromptInputCommandEmpty, jt as PromptInputTabsList, k as PromptInputCommandComposerProps, kt as PromptInputTabLabelProps, l as PromptInputActionMenuContent, lt as PromptInputHoverCardTriggerProps, m as PromptInputActionMenuTrigger, mt as PromptInputProvider, n as PermissionMode, nt as PromptInputHeader, o as PromptInputActionAddScreenshot, ot as PromptInputHoverCardContentProps, p as PromptInputActionMenuProps, pt as PromptInputProps, q as PromptInputContextAction, r as PromptInput, rt as PromptInputHeaderProps, s as PromptInputActionAddScreenshotProps, st as PromptInputHoverCardProps, t as AttachmentsContext, tt as PromptInputFooterProps, u as PromptInputActionMenuContentProps, ut as PromptInputMessage, v as PromptInputAttachment, vt as PromptInputReferencesProps, w as PromptInputButton, wt as PromptInputTabBody, x as PromptInputAttachmentsProps, xt as PromptInputSubmit, y as PromptInputAttachmentProps, yt as PromptInputSelect, z as PromptInputCommandItem, zt as TooltipSide } from "../PromptInput-OLfXPuHM.js";
1
+ import { $ as PromptInputDictationProps, A as PromptInputCommandDefinition, At as PromptInputTabProps, B as PromptInputCommandItemProps, Bt as getApprovalRequestId, C as PromptInputBodyProps, Ct as PromptInputTab, D as PromptInputCommand, Dt as PromptInputTabItemProps, E as PromptInputButtonTooltip, Et as PromptInputTabItem, F as PromptInputCommandGroupLabelProps, Ft as PromptInputTools, G as PromptInputCommandSeparatorProps, Gt as useProviderAttachments, H as PromptInputCommandListProps, Ht as getPendingToolApprovals, I as PromptInputCommandGroupProps, It as PromptInputToolsProps, J as PromptInputContextItem, K as PromptInputCommandTrigger, L as PromptInputCommandInput, Lt as PromptInputTooltipConfig, M as PromptInputCommandEmptyProps, Mt as PromptInputTabsListProps, N as PromptInputCommandGroup, Nt as PromptInputTextarea, O as PromptInputCommandComposer, Ot as PromptInputTabLabel, P as PromptInputCommandGroupLabel, Pt as PromptInputTextareaProps, Q as PromptInputDictation, R as PromptInputCommandInputProps, Rt as TextInputContext, S as PromptInputBody, St as PromptInputSubmitProps, T as PromptInputButtonProps, Tt as PromptInputTabBodyProps, U as PromptInputCommandProps, Ut as usePromptInputAttachments, V as PromptInputCommandList, Vt as getApprovalStateKey, W as PromptInputCommandSeparator, Wt as usePromptInputController, X as PromptInputContextSelectorProps, Y as PromptInputContextSelector, Z as PromptInputControllerProps, _ as PromptInputApprovalProps, _t as PromptInputReferences, a as PromptInputActionAddAttachmentsProps, at as PromptInputHoverCardContent, b as PromptInputAttachments, bt as PromptInputSelectProps, c as PromptInputActionMenu, ct as PromptInputHoverCardTrigger, d as PromptInputActionMenuItem, dt as PromptInputPermissionSelector, et as PromptInputFooter, f as PromptInputActionMenuItemProps, ft as PromptInputPermissionSelectorProps, g as PromptInputApproval, gt as PromptInputReference, h as PromptInputActionMenuTriggerProps, ht as PromptInputProviderProps, i as PromptInputActionAddAttachments, it as PromptInputHoverCard, j as PromptInputCommandEmpty, jt as PromptInputTabsList, k as PromptInputCommandComposerProps, kt as PromptInputTabLabelProps, l as PromptInputActionMenuContent, lt as PromptInputHoverCardTriggerProps, m as PromptInputActionMenuTrigger, mt as PromptInputProvider, n as PermissionMode, nt as PromptInputHeader, o as PromptInputActionAddScreenshot, ot as PromptInputHoverCardContentProps, p as PromptInputActionMenuProps, pt as PromptInputProps, q as PromptInputContextAction, r as PromptInput, rt as PromptInputHeaderProps, s as PromptInputActionAddScreenshotProps, st as PromptInputHoverCardProps, t as AttachmentsContext, tt as PromptInputFooterProps, u as PromptInputActionMenuContentProps, ut as PromptInputMessage, v as PromptInputAttachment, vt as PromptInputReferencesProps, w as PromptInputButton, wt as PromptInputTabBody, x as PromptInputAttachmentsProps, xt as PromptInputSubmit, y as PromptInputAttachmentProps, yt as PromptInputSelect, z as PromptInputCommandItem, zt as TooltipSide } from "../PromptInput-Bdh9pqlo.js";
2
2
  export { AttachmentsContext, PermissionMode, PromptInput, PromptInputActionAddAttachments, PromptInputActionAddAttachmentsProps, PromptInputActionAddScreenshot, PromptInputActionAddScreenshotProps, PromptInputActionMenu, PromptInputActionMenuContent, PromptInputActionMenuContentProps, PromptInputActionMenuItem, PromptInputActionMenuItemProps, PromptInputActionMenuProps, PromptInputActionMenuTrigger, PromptInputActionMenuTriggerProps, PromptInputApproval, PromptInputApprovalProps, PromptInputAttachment, PromptInputAttachmentProps, PromptInputAttachments, PromptInputAttachmentsProps, PromptInputBody, PromptInputBodyProps, PromptInputButton, PromptInputButtonProps, PromptInputButtonTooltip, PromptInputCommand, PromptInputCommandComposer, PromptInputCommandComposerProps, PromptInputCommandDefinition, PromptInputCommandEmpty, PromptInputCommandEmptyProps, PromptInputCommandGroup, PromptInputCommandGroupLabel, PromptInputCommandGroupLabelProps, PromptInputCommandGroupProps, PromptInputCommandInput, PromptInputCommandInputProps, PromptInputCommandItem, PromptInputCommandItemProps, PromptInputCommandList, PromptInputCommandListProps, PromptInputCommandProps, PromptInputCommandSeparator, PromptInputCommandSeparatorProps, PromptInputCommandTrigger, PromptInputContextAction, PromptInputContextItem, PromptInputContextSelector, PromptInputContextSelectorProps, PromptInputControllerProps, PromptInputDictation, PromptInputDictationProps, PromptInputFooter, PromptInputFooterProps, PromptInputHeader, PromptInputHeaderProps, PromptInputHoverCard, PromptInputHoverCardContent, PromptInputHoverCardContentProps, PromptInputHoverCardProps, PromptInputHoverCardTrigger, PromptInputHoverCardTriggerProps, PromptInputMessage, PromptInputPermissionSelector, PromptInputPermissionSelectorProps, PromptInputProps, PromptInputProvider, PromptInputProviderProps, PromptInputReference, PromptInputReferences, PromptInputReferencesProps, PromptInputSelect, PromptInputSelectProps, PromptInputSubmit, PromptInputSubmitProps, PromptInputTab, PromptInputTabBody, PromptInputTabBodyProps, PromptInputTabItem, PromptInputTabItemProps, PromptInputTabLabel, PromptInputTabLabelProps, PromptInputTabProps, PromptInputTabsList, PromptInputTabsListProps, PromptInputTextarea, PromptInputTextareaProps, PromptInputTools, PromptInputToolsProps, PromptInputTooltipConfig, TextInputContext, TooltipSide, getApprovalRequestId, getApprovalStateKey, getPendingToolApprovals, usePromptInputAttachments, usePromptInputController, useProviderAttachments };
@@ -1,5 +1,5 @@
1
- import { n as mergeBaseClassName, t as cx } from "../class-names-Bk-QLWWI.js";
2
- import { A as MonitorIcon, H as SquareIcon, I as PlusIcon, J as WarningIcon, M as PaperclipIcon, O as MicrophoneIcon, V as SpinnerIcon, W as StopIcon, X as XIcon, Y as WrenchIcon, b as FolderIcon, c as ChevronDownIcon, i as ArrowUpIcon, s as CheckIcon, y as FileIcon } from "../icons--FqCZEc3.js";
1
+ import { n as mergeBaseClassName, t as cx } from "../class-names-BiMDVpUo.js";
2
+ import { $ as WrenchIcon, C as FolderIcon, J as StopIcon, K as SpinnerIcon, L as PaperclipIcon, M as MicrophoneIcon, P as MonitorIcon, Q as WarningIcon, S as FileIcon, V as PlusIcon, a as ArrowUpIcon, d as ChevronDownIcon, et as XIcon, q as SquareIcon, u as CheckIcon } from "../icons-DKXiSepE.js";
3
3
  import { Button } from "./Button.js";
4
4
  import { Tooltip } from "./Tooltip.js";
5
5
  import { t as AttachmentPreview } from "../attachment-preview-DIs50Q0h.js";
@@ -41,7 +41,9 @@ function PromptInputProvider({ initialInput = "", children }) {
41
41
  const fileInputRef = React.useRef(null);
42
42
  const openRef = React.useRef(() => {});
43
43
  const attachmentsRef = React.useRef(attachmentFiles);
44
- attachmentsRef.current = attachmentFiles;
44
+ React.useEffect(() => {
45
+ attachmentsRef.current = attachmentFiles;
46
+ }, [attachmentFiles]);
45
47
  React.useEffect(() => () => {
46
48
  revokeFileUrls(attachmentsRef.current);
47
49
  }, []);
@@ -131,7 +133,9 @@ function PromptInput({ className, accept, multiple, globalDrop, syncHiddenInput,
131
133
  const [localFiles, setLocalFiles] = React.useState([]);
132
134
  const files = controller?.attachments.files ?? localFiles;
133
135
  const filesRef = React.useRef(files);
134
- filesRef.current = files;
136
+ React.useEffect(() => {
137
+ filesRef.current = files;
138
+ }, [files]);
135
139
  React.useImperativeHandle(ref, () => formRef.current, []);
136
140
  React.useEffect(() => () => {
137
141
  if (!usingProvider) revokeFileUrls(filesRef.current);
@@ -174,6 +178,7 @@ function PromptInput({ className, accept, multiple, globalDrop, syncHiddenInput,
174
178
  maxFiles,
175
179
  onError
176
180
  ]);
181
+ const addDroppedFiles = React.useEffectEvent(add);
177
182
  const remove = React.useCallback((attachmentId) => {
178
183
  if (controller) {
179
184
  controller.attachments.remove(attachmentId);
@@ -213,7 +218,7 @@ function PromptInput({ className, accept, multiple, globalDrop, syncHiddenInput,
213
218
  const onDrop = (event) => {
214
219
  const dragEvent = event;
215
220
  if (dragEvent.dataTransfer?.types.includes("Files")) dragEvent.preventDefault();
216
- if (dragEvent.dataTransfer?.files?.length) add(dragEvent.dataTransfer.files);
221
+ if (dragEvent.dataTransfer?.files?.length) addDroppedFiles(dragEvent.dataTransfer.files);
217
222
  };
218
223
  target.addEventListener("dragover", onDragOver);
219
224
  target.addEventListener("drop", onDrop);
@@ -221,7 +226,7 @@ function PromptInput({ className, accept, multiple, globalDrop, syncHiddenInput,
221
226
  target.removeEventListener("dragover", onDragOver);
222
227
  target.removeEventListener("drop", onDrop);
223
228
  };
224
- }, [add, globalDrop]);
229
+ }, [globalDrop]);
225
230
  const attachmentsCtx = React.useMemo(() => ({
226
231
  add,
227
232
  clear: clearAttachments,
@@ -373,7 +378,7 @@ function PromptInputTextarea({ className, placeholder = "How can I help?", rows
373
378
  const controller = useOptionalPromptInputController();
374
379
  const attachments = usePromptInputAttachments();
375
380
  const innerRef = React.useRef(null);
376
- const [isComposing, setIsComposing] = React.useState(false);
381
+ const isComposingRef = React.useRef(false);
377
382
  React.useImperativeHandle(ref, () => innerRef.current, []);
378
383
  const resize = React.useCallback(() => {
379
384
  const el = innerRef.current;
@@ -406,17 +411,17 @@ function PromptInputTextarea({ className, placeholder = "How can I help?", rows
406
411
  placeholder,
407
412
  rows,
408
413
  onCompositionEnd: (event) => {
409
- setIsComposing(false);
414
+ isComposingRef.current = false;
410
415
  onCompositionEnd?.(event);
411
416
  },
412
417
  onCompositionStart: (event) => {
413
- setIsComposing(true);
418
+ isComposingRef.current = true;
414
419
  onCompositionStart?.(event);
415
420
  },
416
421
  onKeyDown: (event) => {
417
422
  onKeyDown?.(event);
418
423
  if (event.defaultPrevented) return;
419
- if (event.key === "Enter" && !event.shiftKey && !isComposing && !event.nativeEvent.isComposing) {
424
+ if (event.key === "Enter" && !event.shiftKey && !isComposingRef.current && !event.nativeEvent.isComposing) {
420
425
  event.preventDefault();
421
426
  event.currentTarget.form?.requestSubmit();
422
427
  }
@@ -448,8 +453,10 @@ function PromptInputTextarea({ className, placeholder = "How can I help?", rows
448
453
  ...controlledProps
449
454
  });
450
455
  }
451
- function PromptInputButton({ className, tooltip, variant = "ghost", color = "neutral", size, children, "aria-label": ariaLabel, ref, ...props }) {
452
- const resolvedSize = size ?? (React.Children.count(children) > 1 ? "xs" : "icon-xs");
456
+ function PromptInputButton({ className, tooltip, variant = "ghost", color = "neutral", size, iconOnly, children, "aria-label": ariaLabel, ref, ...props }) {
457
+ const childCount = React.Children.count(children);
458
+ const resolvedSize = size ?? "xs";
459
+ const resolvedIconOnly = iconOnly ?? childCount <= 1;
453
460
  const tooltipConfig = typeof tooltip === "string" ? { content: tooltip } : tooltip;
454
461
  const fallbackLabel = ariaLabel ?? (typeof tooltipConfig?.content === "string" ? tooltipConfig.content : void 0);
455
462
  const hasResponsiveLabel = Boolean(tooltipConfig && React.Children.count(children) > 1);
@@ -459,6 +466,7 @@ function PromptInputButton({ className, tooltip, variant = "ghost", color = "neu
459
466
  variant,
460
467
  color,
461
468
  size: resolvedSize,
469
+ iconOnly: resolvedIconOnly,
462
470
  className: cx("prompt-input__button", className),
463
471
  "aria-label": fallbackLabel,
464
472
  "data-responsive-label": hasResponsiveLabel || void 0,
@@ -593,7 +601,8 @@ function PromptInputDictation({ voice, beforeStart, className, disabled, ref, ..
593
601
  type: "button",
594
602
  variant: "normal",
595
603
  color: "neutral",
596
- size: "icon",
604
+ size: "xs",
605
+ iconOnly: true,
597
606
  "aria-label": "Stop dictation",
598
607
  onClick: () => voice.stop(),
599
608
  children: /* @__PURE__ */ jsx(SquareIcon, { size: 12 })
@@ -602,7 +611,8 @@ function PromptInputDictation({ voice, beforeStart, className, disabled, ref, ..
602
611
  className: "prompt-input__recording-button",
603
612
  type: "button",
604
613
  color: "primary",
605
- size: "icon",
614
+ size: "xs",
615
+ iconOnly: true,
606
616
  "aria-label": "Stop dictation and send",
607
617
  onClick: () => {
608
618
  submitAfterStopRef.current = true;
@@ -631,7 +641,9 @@ function PromptInputRecordingWaveform({ active, level }) {
631
641
  const containerRef = React.useRef(null);
632
642
  const historyRef = React.useRef([]);
633
643
  const levelRef = React.useRef(level);
634
- levelRef.current = level;
644
+ React.useEffect(() => {
645
+ levelRef.current = level;
646
+ }, [level]);
635
647
  React.useEffect(() => {
636
648
  const canvas = canvasRef.current;
637
649
  const container = containerRef.current;
@@ -843,9 +855,9 @@ function PromptInputPermissionSelector({ value, onValueChange, question = "How s
843
855
  })
844
856
  }) }) })] });
845
857
  }
846
- function PromptInputSubmit({ className, status = "ready", onStop, variant = "normal", color = "primary", size = "icon-xs", onClick, children, label, allowSubmitWhileBusy = false, hasContent = false, ref, ...props }) {
858
+ function PromptInputSubmit({ className, status = "ready", onStop, variant = "normal", color = "primary", size = "xs", onClick, children, label, hasContent = false, ref, ...props }) {
847
859
  const isBusy = status === "submitted" || status === "streaming";
848
- const isQueueing = isBusy && allowSubmitWhileBusy && hasContent;
860
+ const isQueueing = isBusy && hasContent;
849
861
  const isStopping = isBusy && !isQueueing;
850
862
  const resolvedLabel = label ?? (isQueueing ? "Queue message" : defaultSubmitLabel(status));
851
863
  return /* @__PURE__ */ jsx(Button, {
@@ -854,6 +866,7 @@ function PromptInputSubmit({ className, status = "ready", onStop, variant = "nor
854
866
  variant,
855
867
  color,
856
868
  size,
869
+ iconOnly: true,
857
870
  className: cx("prompt-input__submit", className),
858
871
  "data-status": status,
859
872
  "aria-label": resolvedLabel,
@@ -1140,7 +1153,7 @@ function PromptInputReferences({ references, onRemove, className, ref, ...props
1140
1153
  type: "button",
1141
1154
  variant: "ghost",
1142
1155
  color: "primary",
1143
- size: "lg",
1156
+ size: "xs",
1144
1157
  className: "prompt-input__reference",
1145
1158
  "aria-label": `Remove ${reference.label}`,
1146
1159
  onClick: () => onRemove(reference),
@@ -1,5 +1,5 @@
1
1
  import { t as Collapsible } from "../Collapsible-N64ASIQr.js";
2
- import { r as ButtonProps } from "../Button-FX_hpqxm.js";
2
+ import { r as ButtonProps } from "../Button-DLGzHsjc.js";
3
3
  import { ScrollArea } from "./ScrollArea.js";
4
4
  import * as React from "react";
5
5
 
@@ -1,6 +1,6 @@
1
- import { t as cx } from "../class-names-Bk-QLWWI.js";
1
+ import { t as cx } from "../class-names-BiMDVpUo.js";
2
2
  import { Collapsible } from "./Collapsible.js";
3
- import { m as DotIcon, s as CheckIcon, u as ChevronRightIcon, y as FileIcon } from "../icons--FqCZEc3.js";
3
+ import { S as FileIcon, _ as DotIcon, p as ChevronRightIcon, u as CheckIcon } from "../icons-DKXiSepE.js";
4
4
  import { Button } from "./Button.js";
5
5
  import { Badge } from "./Badge.js";
6
6
  import { ScrollArea } from "./ScrollArea.js";
@@ -90,7 +90,6 @@ function QueueSectionLabel({ className, children, count, label, icon, ref, ...pr
90
90
  children !== void 0 && count !== void 0 ? /* @__PURE__ */ jsx(Badge, {
91
91
  color: "neutral",
92
92
  size: "sm",
93
- className: "queue__section-count",
94
93
  children: count
95
94
  }) : null
96
95
  ]
@@ -1,4 +1,4 @@
1
- import { n as mergeBaseClassName } from "../class-names-Bk-QLWWI.js";
1
+ import { n as mergeBaseClassName } from "../class-names-BiMDVpUo.js";
2
2
  import "react";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  import { RadioGroup as RadioGroup$1 } from "@base-ui/react/radio-group";