@mcp-b/react-components 0.35.0 → 0.37.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 (184) hide show
  1. package/dist/{AgentChat-mpacmRU1.d.ts → AgentChat-CVO7xyLC.d.ts} +1 -1
  2. package/dist/{CodeBlock-DzGhYyNe.d.ts → CodeBlock-C380GD5t.d.ts} +2 -5
  3. package/dist/{CodeBlock-CM5gfmdq.js → CodeBlock-DO4Hdu1R.js} +4 -3
  4. package/dist/{Dialog-DeOSJ0Oy.d.ts → Dialog-B_FhRWaz.d.ts} +22 -37
  5. package/dist/{FileTree-4WP4Uc_m.js → FileTree-DbQMpvxV.js} +1 -1
  6. package/dist/{Menu-DVmjBIuM.d.ts → Menu-yb6QXWA3.d.ts} +64 -75
  7. package/dist/{PromptInput-DOyee1kM.d.ts → PromptInput-BRX7FhjH.d.ts} +7 -272
  8. package/dist/ResponsiveSidebarShell-DWjULskY.d.ts +68 -0
  9. package/dist/{Select-D96d09ww.d.ts → Select-RrceeEIe.d.ts} +17 -52
  10. package/dist/{ThinkChat-DbzqSTBt.js → ThinkChat-DQh59CeC.js} +6 -8
  11. package/dist/{ThinkChatActivity-BZyN5MBg.d.ts → ThinkChatActivity-Dkmm2pIj.d.ts} +1 -1
  12. package/dist/{ToggleGroup-CSBWfPXo.d.ts → ToggleGroup-_pQMyHGM.d.ts} +5 -7
  13. package/dist/{WorkspaceFile-CVAzjTt6.d.ts → WorkspaceFile-BLaFmMrt.d.ts} +1 -1
  14. package/dist/{WorkspaceFileView-BmxSbhRu.js → WorkspaceFileView-Cu_ZG6HJ.js} +11 -17
  15. package/dist/components/agents-sdk/AgentActivity.js +1 -1
  16. package/dist/components/agents-sdk/AgentActivityPreview.js +4 -4
  17. package/dist/components/agents-sdk/AgentChat.d.ts +1 -1
  18. package/dist/components/agents-sdk/AgentChat.js +36 -30
  19. package/dist/components/agents-sdk/BrowserLiveView.d.ts +47 -1
  20. package/dist/components/agents-sdk/BrowserLiveView.js +2 -2
  21. package/dist/components/agents-sdk/BrowserReplay.d.ts +40 -1
  22. package/dist/components/agents-sdk/BrowserReplay.js +1 -1
  23. package/dist/components/agents-sdk/BrowserRunPanel.js +2 -2
  24. package/dist/components/agents-sdk/McpConnectionRequest.js +15 -16
  25. package/dist/components/agents-sdk/McpConnectorForm.js +1 -1
  26. package/dist/components/agents-sdk/McpPluginCatalog.d.ts +1 -1
  27. package/dist/components/agents-sdk/McpPluginCatalog.js +19 -26
  28. package/dist/components/agents-sdk/McpServerPicker.d.ts +2 -2
  29. package/dist/components/agents-sdk/McpServerPicker.js +20 -18
  30. package/dist/components/agents-sdk/ModelSelector.d.ts +9 -9
  31. package/dist/components/agents-sdk/ModelSelector.js +504 -1
  32. package/dist/components/agents-sdk/PromptInputApproval.js +1 -1
  33. package/dist/components/agents-sdk/PromptInputCommands.d.ts +1 -1
  34. package/dist/components/agents-sdk/PromptInputCommands.js +1 -1
  35. package/dist/components/agents-sdk/SubagentRunIndicator.js +1 -1
  36. package/dist/components/agents-sdk/SubagentRunSelector.js +2 -2
  37. package/dist/components/agents-sdk/ThinkChat.d.ts +17 -107
  38. package/dist/components/agents-sdk/ThinkChat.js +2 -12
  39. package/dist/components/agents-sdk/ThinkChatActivity.d.ts +2 -4
  40. package/dist/components/agents-sdk/ThinkChatActivity.js +2 -2
  41. package/dist/components/agents-sdk/ThinkChatToolPanels.js +2 -2
  42. package/dist/components/agents-sdk/ThinkExecutionDetail.js +1 -1
  43. package/dist/components/agents-sdk/ThinkExecutionStatus.js +1 -1
  44. package/dist/components/agents-sdk/ThinkExecutionWorkbench.js +3 -3
  45. package/dist/components/agents-sdk/ThinkFullApp.d.ts +4 -4
  46. package/dist/components/agents-sdk/ThinkFullApp.js +10 -14
  47. package/dist/components/agents-sdk/ThinkFullAppViewSwitch.d.ts +1 -1
  48. package/dist/components/agents-sdk/ThinkFullAppViewSwitch.js +1 -1
  49. package/dist/components/agents-sdk/ThinkRecoveryNotice.js +1 -1
  50. package/dist/components/agents-sdk/ThinkRoutineBrowser.js +2 -2
  51. package/dist/components/agents-sdk/ThinkRoutineDetail.js +1 -1
  52. package/dist/components/agents-sdk/ThinkRoutineForm.js +3 -3
  53. package/dist/components/agents-sdk/ThinkRoutineLibrary.d.ts +2 -3
  54. package/dist/components/agents-sdk/ThinkRoutineLibrary.js +4 -4
  55. package/dist/components/agents-sdk/ThinkRoutineRuns.js +2 -2
  56. package/dist/components/agents-sdk/ThinkThreadPicker.js +6 -7
  57. package/dist/components/agents-sdk/ThinkThreadShell.d.ts +1 -1
  58. package/dist/components/agents-sdk/Workspace.d.ts +140 -2
  59. package/dist/components/agents-sdk/WorkspaceBrowser.d.ts +1 -1
  60. package/dist/components/agents-sdk/WorkspaceBrowser.js +1 -1
  61. package/dist/components/agents-sdk/WorkspaceExplorer.d.ts +32 -5
  62. package/dist/components/agents-sdk/WorkspaceExplorer.js +3 -5
  63. package/dist/components/agents-sdk/WorkspaceFile.d.ts +1 -1
  64. package/dist/components/agents-sdk/WorkspaceFileView.d.ts +1 -1
  65. package/dist/components/agents-sdk/WorkspaceFileView.js +1 -1
  66. package/dist/components/agents-sdk/WorkspaceHeader.js +1 -1
  67. package/dist/components/agents-sdk/WorkspaceMountManager.js +2 -2
  68. package/dist/components/ai-sdk/Activity.d.ts +5 -0
  69. package/dist/components/ai-sdk/Activity.js +34 -14
  70. package/dist/components/ai-sdk/AgentChatStartScreen.js +1 -1
  71. package/dist/components/ai-sdk/Approval.js +2 -2
  72. package/dist/components/ai-sdk/Artifact.js +1 -1
  73. package/dist/components/ai-sdk/ChainOfThought.js +1 -1
  74. package/dist/components/ai-sdk/Checkpoint.js +1 -1
  75. package/dist/components/ai-sdk/CodeBlock.d.ts +1 -1
  76. package/dist/components/ai-sdk/CodeBlock.js +1 -1
  77. package/dist/components/ai-sdk/Conversation.js +1 -1
  78. package/dist/components/ai-sdk/Goal.js +1 -1
  79. package/dist/components/ai-sdk/InlineCitation.js +1 -1
  80. package/dist/components/ai-sdk/MediaPreviewCard.js +1 -1
  81. package/dist/components/ai-sdk/Message.js +2 -6
  82. package/dist/components/ai-sdk/MessageScroller.d.ts +5 -0
  83. package/dist/components/ai-sdk/MessageScroller.js +19 -13
  84. package/dist/components/ai-sdk/MessageScrollerVirtual.js +19 -11
  85. package/dist/components/ai-sdk/Plan.js +1 -1
  86. package/dist/components/ai-sdk/PromptInput.d.ts +2 -2
  87. package/dist/components/ai-sdk/PromptInput.js +126 -129
  88. package/dist/components/ai-sdk/Queue.js +2 -2
  89. package/dist/components/ai-sdk/Reasoning.d.ts +3 -4
  90. package/dist/components/ai-sdk/Reasoning.js +30 -14
  91. package/dist/components/ai-sdk/Sources.js +1 -1
  92. package/dist/components/ai-sdk/Task.js +1 -1
  93. package/dist/components/ai-sdk/ToolInvocation.d.ts +3 -5
  94. package/dist/components/extension/ChatGptSignInScreen.js +3 -3
  95. package/dist/components/extension/CodexModelSelector.d.ts +1 -1
  96. package/dist/components/extension/CodexModelSelector.js +2 -2
  97. package/dist/components/extension/ConversationTabPicker.js +3 -3
  98. package/dist/components/foundations/Accordion.d.ts +1 -3
  99. package/dist/components/foundations/Accordion.js +1 -3
  100. package/dist/components/foundations/AlertDialog.d.ts +16 -36
  101. package/dist/components/foundations/Autocomplete.d.ts +12 -33
  102. package/dist/components/foundations/Autocomplete.js +2 -1
  103. package/dist/components/foundations/Card.d.ts +3 -3
  104. package/dist/components/foundations/Card.js +3 -3
  105. package/dist/components/foundations/Checkbox.js +1 -1
  106. package/dist/components/foundations/Collapsible.js +1 -1
  107. package/dist/components/foundations/Combobox.d.ts +119 -2
  108. package/dist/components/foundations/Combobox.js +6 -23
  109. package/dist/components/foundations/ContextMenu.d.ts +50 -57
  110. package/dist/components/foundations/ContextMenu.js +5 -29
  111. package/dist/components/foundations/DescriptionList.d.ts +34 -2
  112. package/dist/components/foundations/DescriptionList.js +33 -2
  113. package/dist/components/foundations/Dialog.d.ts +1 -1
  114. package/dist/components/foundations/Dialog.js +2 -1
  115. package/dist/components/foundations/Menu.d.ts +1 -1
  116. package/dist/components/foundations/Menu.js +3 -21
  117. package/dist/components/foundations/Menubar.d.ts +35 -64
  118. package/dist/components/foundations/Menubar.js +4 -23
  119. package/dist/components/foundations/Popover.d.ts +8 -21
  120. package/dist/components/foundations/Popover.js +3 -48
  121. package/dist/components/foundations/PreviewCard.d.ts +44 -29
  122. package/dist/components/foundations/PreviewCard.js +3 -6
  123. package/dist/components/foundations/RadioGroup.d.ts +4 -6
  124. package/dist/components/foundations/SearchField.js +1 -1
  125. package/dist/components/foundations/Select.d.ts +1 -1
  126. package/dist/components/foundations/Select.js +8 -22
  127. package/dist/components/foundations/Slider.d.ts +31 -44
  128. package/dist/components/foundations/Slider.js +26 -25
  129. package/dist/components/foundations/Stepper.d.ts +3 -3
  130. package/dist/components/foundations/Stepper.js +6 -7
  131. package/dist/components/foundations/Toast.js +1 -1
  132. package/dist/components/foundations/ToggleGroup.d.ts +1 -1
  133. package/dist/components/foundations/ToggleGroup.js +1 -1
  134. package/dist/components/foundations/Tooltip.d.ts +6 -8
  135. package/dist/components/foundations/Tooltip.js +4 -3
  136. package/dist/components/foundations/icons.js +1 -1
  137. package/dist/components/general-purpose/Commit.js +3 -3
  138. package/dist/components/general-purpose/EnvironmentVariables.js +2 -2
  139. package/dist/components/general-purpose/FileTree.js +1 -1
  140. package/dist/components/general-purpose/PricingBillingToggle.d.ts +2 -3
  141. package/dist/components/general-purpose/PricingBillingToggle.js +5 -23
  142. package/dist/components/general-purpose/PricingPage.d.ts +3 -4
  143. package/dist/components/general-purpose/PricingPlanCard.js +2 -2
  144. package/dist/components/general-purpose/PricingUsageCalculator.js +2 -2
  145. package/dist/components/general-purpose/ResponsiveSidebarShell.d.ts +1 -67
  146. package/dist/components/general-purpose/ResponsiveSidebarShell.js +1 -1
  147. package/dist/components/general-purpose/SettingsFormDialog.d.ts +7 -2
  148. package/dist/components/general-purpose/SettingsFormDialog.js +19 -4
  149. package/dist/components/general-purpose/SetupChecklist.js +1 -1
  150. package/dist/components/general-purpose/Terminal.js +4 -4
  151. package/dist/components/general-purpose/TestResults.js +1 -1
  152. package/dist/components/general-purpose/ThemeModeControl.js +2 -2
  153. package/dist/components/general-purpose/WebPreview.js +5 -5
  154. package/dist/components/nanites/AgentConnection.js +17 -12
  155. package/dist/components/nanites/AgentToolDetail.js +4 -4
  156. package/dist/{copy-button-CsNSSKYG.js → copy-button-4YvddK4e.js} +1 -1
  157. package/dist/{mcp-server-U71zhxFF.js → mcp-server-SD_S-IpB.js} +18 -2
  158. package/dist/message-scroller-C8cplcQO.js +32 -0
  159. package/dist/provider-logos-zjZycgV6.js +74 -0
  160. package/dist/styles/agent-chat.css +9 -0
  161. package/dist/styles/agent-connection.css +4 -31
  162. package/dist/styles/alert-dialog.css +0 -2
  163. package/dist/styles/base-ui-motion.css +7 -5
  164. package/dist/styles/chatgpt-sign-in-screen.css +5 -3
  165. package/dist/styles/dialog.css +0 -2
  166. package/dist/styles/model-selector.css +30 -12
  167. package/dist/styles/popover.css +0 -1
  168. package/dist/styles/preview-card.css +0 -4
  169. package/dist/styles/pricing-page.css +1 -13
  170. package/dist/styles/prompt-input.css +12 -10
  171. package/dist/styles/recipes.css +22 -14
  172. package/dist/styles/slider.css +2 -2
  173. package/dist/styles/tooltip.css +0 -1
  174. package/dist/utils/structured-code.d.ts +1 -1
  175. package/package.json +18 -8
  176. package/dist/BrowserLiveView-tJTWkoyu.d.ts +0 -48
  177. package/dist/BrowserReplay-B0BQZr-N.d.ts +0 -41
  178. package/dist/Combobox-WrrDDaEv.d.ts +0 -154
  179. package/dist/ModelSelector-DtBxWqRn.js +0 -504
  180. package/dist/Workspace-GTlqvcIn.d.ts +0 -278
  181. package/dist/WorkspaceExplorer-Cu044amt.d.ts +0 -32
  182. package/dist/components/foundations/DescriptionListParts.d.ts +0 -37
  183. package/dist/components/foundations/DescriptionListParts.js +0 -35
  184. package/dist/{icons-B1Qw05te.js → icons-B4mGvCvc.js} +1 -1
@@ -1,6 +1,7 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { n as ArrowDownIcon } from "../../icons-B1Qw05te.js";
2
+ import { n as ArrowDownIcon } from "../../icons-B4mGvCvc.js";
3
3
  import { Button } from "../foundations/Button.js";
4
+ import { t as messageScrollerContract } from "../../message-scroller-C8cplcQO.js";
4
5
  import * as React from "react";
5
6
  import { jsx, jsxs } from "react/jsx-runtime";
6
7
  import { useVirtualizer } from "@tanstack/react-virtual";
@@ -37,6 +38,7 @@ function VirtualMessageScroller({ items, getItemKey, renderItem, estimateSize =
37
38
  const warnedBadKey = React.useRef(false);
38
39
  const [atEnd, setAtEnd] = React.useState(true);
39
40
  const [scrollEdges, setScrollEdges] = React.useState();
41
+ const { "aria-live": contentAriaLive = "off", "aria-relevant": contentAriaRelevant = messageScrollerContract.content.ariaRelevant, className: contentClassName, role: contentRole = messageScrollerContract.content.role, style: contentStyle, ...resolvedContentProps } = contentProps ?? {};
40
42
  React.useEffect(() => {
41
43
  if (warnedBadKey.current) return;
42
44
  const seen = /* @__PURE__ */ new Set();
@@ -72,28 +74,33 @@ function VirtualMessageScroller({ items, getItemKey, renderItem, estimateSize =
72
74
  virtualizer.scrollToEnd();
73
75
  }, []);
74
76
  return /* @__PURE__ */ jsxs("div", {
75
- className: cx("message-scroller", className),
77
+ "data-slot": messageScrollerContract.root.slot,
78
+ className: cx(messageScrollerContract.root.className, className),
76
79
  ...props,
77
80
  children: [/* @__PURE__ */ jsx("div", {
78
81
  ref: viewportRef,
79
- "data-slot": "message-scroller-viewport",
82
+ "aria-label": messageScrollerContract.viewport.ariaLabel,
83
+ "data-slot": messageScrollerContract.viewport.slot,
80
84
  "data-recipe": "scroll-fade-y",
81
85
  "data-scrollable": scrollEdges,
82
- className: "message-scroller__viewport",
86
+ className: messageScrollerContract.viewport.className,
87
+ role: messageScrollerContract.viewport.role,
88
+ tabIndex: messageScrollerContract.viewport.tabIndex,
83
89
  children: items.length === 0 ? emptyState : /* @__PURE__ */ jsx("div", {
84
- role: "log",
85
- "aria-live": "off",
86
- ...contentProps,
87
- className: cx("message-scroller__virtual-content", contentProps?.className),
90
+ ...resolvedContentProps,
91
+ "aria-live": contentAriaLive,
92
+ "aria-relevant": contentAriaRelevant,
93
+ className: cx(messageScrollerContract.content.virtualClassName, contentClassName),
94
+ role: contentRole,
88
95
  style: {
89
- ...contentProps?.style,
96
+ ...contentStyle,
90
97
  height: virtualizer.getTotalSize()
91
98
  },
92
99
  children: virtualizer.getVirtualItems().map((virtualItem) => /* @__PURE__ */ jsx("div", {
93
100
  ref: virtualizer.measureElement,
94
101
  "data-index": virtualItem.index,
95
102
  "data-item-key": virtualItem.key,
96
- className: "message-scroller__virtual-item",
103
+ className: messageScrollerContract.item.virtualClassName,
97
104
  style: { transform: `translateY(${virtualItem.start}px)` },
98
105
  children: renderItem(items[virtualItem.index], virtualItem.index)
99
106
  }, virtualItem.key))
@@ -105,7 +112,8 @@ function VirtualMessageScroller({ items, getItemKey, renderItem, estimateSize =
105
112
  size: "sm",
106
113
  iconOnly: true,
107
114
  ...scrollButtonProps,
108
- className: cx("message-scroller__button", scrollButtonProps?.className),
115
+ className: cx(messageScrollerContract.button.className, scrollButtonProps?.className),
116
+ "data-slot": messageScrollerContract.button.slot,
109
117
  "data-direction": "end",
110
118
  "data-active": !atEnd,
111
119
  tabIndex: atEnd ? -1 : void 0,
@@ -1,5 +1,5 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { d as CheckIcon, i as ArrowRightIcon, v as DotIcon } from "../../icons-B1Qw05te.js";
2
+ import { d as CheckIcon, i as ArrowRightIcon, v as DotIcon } from "../../icons-B4mGvCvc.js";
3
3
  import { Popover } from "../foundations/Popover.js";
4
4
  import { t as ProgressRing } from "../../progress-ring-BEocM1e3.js";
5
5
  import * as React from "react";
@@ -1,2 +1,2 @@
1
- import { $ as PromptInputFooterProps, A as PromptInputCommandEmptyProps, At as PromptInputTabsListProps, B as PromptInputCommandListProps, Bt as TooltipSide, C as PromptInputButtonProps, Ct as PromptInputTabBodyProps, D as PromptInputCommandComposerProps, Dt as PromptInputTabLabelProps, E as PromptInputCommandComposer, Et as PromptInputTabLabel, F as PromptInputCommandInput, Ft as PromptInputTooltipConfig, G as PromptInputContextAction, H as PromptInputCommandSeparator, Ht as usePromptInputController, I as PromptInputCommandInputProps, It as PromptInputTray, J as PromptInputContextSelectorProps, K as PromptInputContextItem, L as PromptInputCommandItem, Lt as PromptInputTrayProps, M as PromptInputCommandGroupLabel, Mt as PromptInputTextareaProps, N as PromptInputCommandGroupLabelProps, Nt as PromptInputTools, O as PromptInputCommandDefinition, Ot as PromptInputTabProps, P as PromptInputCommandGroupProps, Pt as PromptInputToolsProps, Q as PromptInputFooter, R as PromptInputCommandItemProps, Rt as PromptInputVoiceInput, S as PromptInputButton, St as PromptInputTabBody, T as PromptInputCommand, Tt as PromptInputTabItemProps, U as PromptInputCommandSeparatorProps, Ut as useProviderAttachments, V as PromptInputCommandProps, Vt as usePromptInputAttachments, W as PromptInputCommandTrigger, X as PromptInputDictation, Y as PromptInputControllerProps, Z as PromptInputDictationProps, _ as PromptInputAttachmentProps, _t as PromptInputSelect, a as PromptInputActionAddAttachmentsProps, at as PromptInputHoverCardProps, b as PromptInputBody, bt as PromptInputSubmitProps, c as PromptInputActionMenu, ct as PromptInputMessage, d as PromptInputActionMenuItem, dt as PromptInputProps, et as PromptInputHeader, f as PromptInputActionMenuItemProps, ft as PromptInputProvider, g as PromptInputAttachment, gt as PromptInputReferencesProps, h as PromptInputActionMenuTriggerProps, ht as PromptInputReferences, i as PromptInputActionAddAttachments, it as PromptInputHoverCardContentProps, j as PromptInputCommandGroup, jt as PromptInputTextarea, k as PromptInputCommandEmpty, kt as PromptInputTabsList, l as PromptInputActionMenuContent, lt as PromptInputPermissionSelector, m as PromptInputActionMenuTrigger, mt as PromptInputReference, n as PermissionMode, nt as PromptInputHoverCard, o as PromptInputActionAddScreenshot, ot as PromptInputHoverCardTrigger, p as PromptInputActionMenuProps, pt as PromptInputProviderProps, q as PromptInputContextSelector, r as PromptInput, rt as PromptInputHoverCardContent, s as PromptInputActionAddScreenshotProps, st as PromptInputHoverCardTriggerProps, t as AttachmentsContext, tt as PromptInputHeaderProps, u as PromptInputActionMenuContentProps, ut as PromptInputPermissionSelectorProps, v as PromptInputAttachments, vt as PromptInputSelectProps, w as PromptInputButtonTooltip, wt as PromptInputTabItem, x as PromptInputBodyProps, xt as PromptInputTab, y as PromptInputAttachmentsProps, yt as PromptInputSubmit, z as PromptInputCommandList, zt as TextInputContext } from "../../PromptInput-DOyee1kM.js";
2
- export { AttachmentsContext, PermissionMode, PromptInput, PromptInputActionAddAttachments, PromptInputActionAddAttachmentsProps, PromptInputActionAddScreenshot, PromptInputActionAddScreenshotProps, PromptInputActionMenu, PromptInputActionMenuContent, PromptInputActionMenuContentProps, PromptInputActionMenuItem, PromptInputActionMenuItemProps, PromptInputActionMenuProps, PromptInputActionMenuTrigger, PromptInputActionMenuTriggerProps, 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, PromptInputTray, PromptInputTrayProps, PromptInputVoiceInput, TextInputContext, TooltipSide, usePromptInputAttachments, usePromptInputController, useProviderAttachments };
1
+ import { $ as PromptInputReferences, A as PromptInputContextItem, B as PromptInputHoverCard, C as PromptInputButtonProps, Ct as usePromptInputAttachments, D as PromptInputCommandDefinition, E as PromptInputCommandComposerProps, F as PromptInputDictationProps, G as PromptInputHoverCardTriggerProps, H as PromptInputHoverCardContentProps, I as PromptInputFooter, J as PromptInputPermissionSelectorProps, K as PromptInputMessage, L as PromptInputFooterProps, M as PromptInputContextSelectorProps, N as PromptInputControllerProps, O as PromptInputCommandTrigger, P as PromptInputDictation, Q as PromptInputReference, R as PromptInputHeader, S as PromptInputButton, St as TooltipSide, T as PromptInputCommandComposer, Tt as useProviderAttachments, U as PromptInputHoverCardProps, V as PromptInputHoverCardContent, W as PromptInputHoverCardTrigger, X as PromptInputProvider, Y as PromptInputProps, Z as PromptInputProviderProps, _ as PromptInputAttachmentProps, _t as PromptInputTooltipConfig, a as PromptInputActionAddAttachmentsProps, at as PromptInputTabBodyProps, b as PromptInputBody, bt as PromptInputVoiceInput, c as PromptInputActionMenu, ct as PromptInputTabLabel, d as PromptInputActionMenuItem, dt as PromptInputTabsList, et as PromptInputReferencesProps, f as PromptInputActionMenuItemProps, ft as PromptInputTabsListProps, g as PromptInputAttachment, gt as PromptInputToolsProps, h as PromptInputActionMenuTriggerProps, ht as PromptInputTools, i as PromptInputActionAddAttachments, it as PromptInputTabBody, j as PromptInputContextSelector, k as PromptInputContextAction, l as PromptInputActionMenuContent, lt as PromptInputTabLabelProps, m as PromptInputActionMenuTrigger, mt as PromptInputTextareaProps, n as PermissionMode, nt as PromptInputSubmitProps, o as PromptInputActionAddScreenshot, ot as PromptInputTabItem, p as PromptInputActionMenuProps, pt as PromptInputTextarea, q as PromptInputPermissionSelector, r as PromptInput, rt as PromptInputTab, s as PromptInputActionAddScreenshotProps, st as PromptInputTabItemProps, t as AttachmentsContext, tt as PromptInputSubmit, u as PromptInputActionMenuContentProps, ut as PromptInputTabProps, v as PromptInputAttachments, vt as PromptInputTray, w as PromptInputButtonTooltip, wt as usePromptInputController, x as PromptInputBodyProps, xt as TextInputContext, y as PromptInputAttachmentsProps, yt as PromptInputTrayProps, z as PromptInputHeaderProps } from "../../PromptInput-BRX7FhjH.js";
2
+ export { AttachmentsContext, PermissionMode, PromptInput, PromptInputActionAddAttachments, PromptInputActionAddAttachmentsProps, PromptInputActionAddScreenshot, PromptInputActionAddScreenshotProps, PromptInputActionMenu, PromptInputActionMenuContent, PromptInputActionMenuContentProps, PromptInputActionMenuItem, PromptInputActionMenuItemProps, PromptInputActionMenuProps, PromptInputActionMenuTrigger, PromptInputActionMenuTriggerProps, PromptInputAttachment, PromptInputAttachmentProps, PromptInputAttachments, PromptInputAttachmentsProps, PromptInputBody, PromptInputBodyProps, PromptInputButton, PromptInputButtonProps, PromptInputButtonTooltip, PromptInputCommandComposer, PromptInputCommandComposerProps, PromptInputCommandDefinition, 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, PromptInputSubmit, PromptInputSubmitProps, PromptInputTab, PromptInputTabBody, PromptInputTabBodyProps, PromptInputTabItem, PromptInputTabItemProps, PromptInputTabLabel, PromptInputTabLabelProps, PromptInputTabProps, PromptInputTabsList, PromptInputTabsListProps, PromptInputTextarea, PromptInputTextareaProps, PromptInputTools, PromptInputToolsProps, PromptInputTooltipConfig, PromptInputTray, PromptInputTrayProps, PromptInputVoiceInput, TextInputContext, TooltipSide, usePromptInputAttachments, usePromptInputController, useProviderAttachments };
@@ -1,20 +1,59 @@
1
1
  import { n as mergeBaseClassName, t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { C as FileIcon, F as MonitorIcon, H as PlusIcon, J as SpinnerIcon, N as MicrophoneIcon, R as PaperclipIcon, X as StopIcon, Y as SquareIcon, a as ArrowUpIcon, d as CheckIcon, f as ChevronDownIcon, nt as WrenchIcon, rt as XIcon, tt as WarningIcon, w as FolderIcon } from "../../icons-B1Qw05te.js";
2
+ import { C as FileIcon, F as MonitorIcon, H as PlusIcon, J as SpinnerIcon, N as MicrophoneIcon, R as PaperclipIcon, X as StopIcon, Y as SquareIcon, a as ArrowUpIcon, d as CheckIcon, f as ChevronDownIcon, nt as WrenchIcon, rt as XIcon, tt as WarningIcon, w as FolderIcon } from "../../icons-B4mGvCvc.js";
3
3
  import { Button } from "../foundations/Button.js";
4
4
  import { Tooltip } from "../foundations/Tooltip.js";
5
5
  import { IconButton } from "../foundations/IconButton.js";
6
- import { t as AttachmentPreview } from "../../attachment-preview-1CXJvrmb.js";
7
- import { i as formatErrorMessage, n as clamp, r as formatClock } from "../../format-DB2mX9DA.js";
8
- import { Combobox } from "../foundations/Combobox.js";
6
+ import { Autocomplete } from "../foundations/Autocomplete.js";
9
7
  import { Kbd } from "../foundations/Kbd.js";
10
8
  import { Menu } from "../foundations/Menu.js";
11
- import { Select } from "../foundations/Select.js";
9
+ import { PreviewCard } from "../foundations/PreviewCard.js";
12
10
  import { Tabs } from "../foundations/Tabs.js";
11
+ import { t as AttachmentPreview } from "../../attachment-preview-1CXJvrmb.js";
12
+ import { i as formatErrorMessage, n as clamp, r as formatClock } from "../../format-DB2mX9DA.js";
13
+ import { n as mergeRefs } from "../../merge-refs-DF_7w2x_.js";
13
14
  import * as React from "react";
14
15
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
15
16
  //#region src/components/ai-sdk/PromptInput.tsx
16
17
  const PromptInputController = React.createContext(null);
17
18
  const LocalAttachmentsContext = React.createContext(null);
19
+ function useAttachmentStore() {
20
+ const [files, setFiles] = React.useState([]);
21
+ const filesRef = React.useRef(files);
22
+ React.useEffect(() => {
23
+ filesRef.current = files;
24
+ }, [files]);
25
+ React.useEffect(() => () => {
26
+ revokeFileUrls(filesRef.current);
27
+ }, []);
28
+ const add = React.useCallback((incomingFiles) => {
29
+ const incoming = Array.from(incomingFiles);
30
+ setFiles((current) => [...current, ...incoming.map(fileToPart)]);
31
+ }, []);
32
+ const remove = React.useCallback((id) => {
33
+ setFiles((current) => {
34
+ const found = current.find((file) => file.id === id);
35
+ if (found?.url) URL.revokeObjectURL(found.url);
36
+ return current.filter((file) => file.id !== id);
37
+ });
38
+ }, []);
39
+ const clear = React.useCallback(() => {
40
+ setFiles((current) => {
41
+ revokeFileUrls(current);
42
+ return [];
43
+ });
44
+ }, []);
45
+ return React.useMemo(() => ({
46
+ add,
47
+ clear,
48
+ files,
49
+ remove
50
+ }), [
51
+ add,
52
+ clear,
53
+ files,
54
+ remove
55
+ ]);
56
+ }
18
57
  function usePromptInputController() {
19
58
  const ctx = React.useContext(PromptInputController);
20
59
  if (!ctx) throw new Error("Wrap your component inside <PromptInputProvider> to use usePromptInputController().");
@@ -36,46 +75,14 @@ function usePromptInputAttachments() {
36
75
  }
37
76
  function PromptInputProvider({ initialInput = "", children }) {
38
77
  const [textInput, setTextInput] = React.useState(initialInput);
39
- const [attachmentFiles, setAttachmentFiles] = React.useState([]);
78
+ const attachmentStore = useAttachmentStore();
40
79
  const fileInputRef = React.useRef(null);
41
80
  const openRef = React.useRef(() => {});
42
- const attachmentsRef = React.useRef(attachmentFiles);
43
- React.useEffect(() => {
44
- attachmentsRef.current = attachmentFiles;
45
- }, [attachmentFiles]);
46
- React.useEffect(() => () => {
47
- revokeFileUrls(attachmentsRef.current);
48
- }, []);
49
- const add = React.useCallback((files) => {
50
- const incoming = Array.from(files);
51
- setAttachmentFiles((prev) => [...prev, ...incoming.map(fileToPart)]);
52
- }, []);
53
- const remove = React.useCallback((id) => {
54
- setAttachmentFiles((prev) => {
55
- const found = prev.find((file) => file.id === id);
56
- if (found?.url) URL.revokeObjectURL(found.url);
57
- return prev.filter((file) => file.id !== id);
58
- });
59
- }, []);
60
- const clear = React.useCallback(() => {
61
- setAttachmentFiles((prev) => {
62
- revokeFileUrls(prev);
63
- return [];
64
- });
65
- }, []);
66
81
  const attachments = React.useMemo(() => ({
67
- add,
68
- clear,
82
+ ...attachmentStore,
69
83
  fileInputRef,
70
- files: attachmentFiles,
71
- openFileDialog: () => openRef.current(),
72
- remove
73
- }), [
74
- add,
75
- attachmentFiles,
76
- clear,
77
- remove
78
- ]);
84
+ openFileDialog: () => openRef.current()
85
+ }), [attachmentStore]);
79
86
  const controller = React.useMemo(() => ({
80
87
  __registerFileInput: (ref, open) => {
81
88
  fileInputRef.current = ref.current;
@@ -99,7 +106,7 @@ function PromptInputProvider({ initialInput = "", children }) {
99
106
  * Adapted from Vercel AI Elements and restyled with Sigvelo CSS tokens.
100
107
  *
101
108
  * Use for assistant/chat submit forms. Do not use it as a generic textarea or
102
- * non-chat form. Sigvelo changes: uses shared Menu, Select, Combobox, Tabs,
109
+ * non-chat form. Sigvelo changes: uses shared Menu, Autocomplete, Tabs,
103
110
  * Button, and Tooltip components; maps styles to CSS tokens; and adds local
104
111
  * attachment helpers.
105
112
  *
@@ -126,19 +133,15 @@ function PromptInputProvider({ initialInput = "", children }) {
126
133
  */
127
134
  function PromptInput({ className, accept, multiple, globalDrop, syncHiddenInput, maxFiles, maxFileSize, onError, onSubmit, children, ref, ...props }) {
128
135
  const controller = useOptionalPromptInputController();
129
- const usingProvider = Boolean(controller);
130
136
  const formRef = React.useRef(null);
131
137
  const inputRef = React.useRef(null);
132
- const [localFiles, setLocalFiles] = React.useState([]);
138
+ const { add: addLocalFiles, clear: clearLocalFiles, files: localFiles, remove: removeLocalFile } = useAttachmentStore();
133
139
  const files = controller?.attachments.files ?? localFiles;
134
140
  const filesRef = React.useRef(files);
135
141
  React.useEffect(() => {
136
142
  filesRef.current = files;
137
143
  }, [files]);
138
144
  React.useImperativeHandle(ref, () => formRef.current, []);
139
- React.useEffect(() => () => {
140
- if (!usingProvider) revokeFileUrls(filesRef.current);
141
- }, [usingProvider]);
142
145
  const matchesAccept = React.useCallback((file) => {
143
146
  if (!accept?.trim()) return true;
144
147
  return accept.split(",").map((pattern) => pattern.trim()).filter(Boolean).some((pattern) => pattern.endsWith("/*") ? file.type.startsWith(pattern.slice(0, -1)) : file.type === pattern);
@@ -169,8 +172,9 @@ function PromptInput({ className, accept, multiple, globalDrop, syncHiddenInput,
169
172
  });
170
173
  if (!capped.length) return;
171
174
  if (controller) controller.attachments.add(capped);
172
- else setLocalFiles((prev) => [...prev, ...capped.map(fileToPart)]);
175
+ else addLocalFiles(capped);
173
176
  }, [
177
+ addLocalFiles,
174
178
  controller,
175
179
  matchesAccept,
176
180
  maxFileSize,
@@ -183,22 +187,15 @@ function PromptInput({ className, accept, multiple, globalDrop, syncHiddenInput,
183
187
  controller.attachments.remove(attachmentId);
184
188
  return;
185
189
  }
186
- setLocalFiles((prev) => {
187
- const found = prev.find((file) => file.id === attachmentId);
188
- if (found?.url) URL.revokeObjectURL(found.url);
189
- return prev.filter((file) => file.id !== attachmentId);
190
- });
191
- }, [controller]);
190
+ removeLocalFile(attachmentId);
191
+ }, [controller, removeLocalFile]);
192
192
  const clearAttachments = React.useCallback(() => {
193
193
  if (controller) {
194
194
  controller.attachments.clear();
195
195
  return;
196
196
  }
197
- setLocalFiles((prev) => {
198
- revokeFileUrls(prev);
199
- return [];
200
- });
201
- }, [controller]);
197
+ clearLocalFiles();
198
+ }, [clearLocalFiles, controller]);
202
199
  const openFileDialog = React.useCallback(() => inputRef.current?.click(), []);
203
200
  React.useEffect(() => {
204
201
  if (!controller) return;
@@ -904,67 +901,85 @@ function PromptInputSubmit({ className, status = "ready", onStop, variant = "nor
904
901
  children: children ?? (isQueueing ? /* @__PURE__ */ jsx(ArrowUpIcon, {}) : defaultSubmitIcon(status))
905
902
  });
906
903
  }
907
- const PromptInputSelect = Select;
908
904
  const PromptInputHoverCardContext = React.createContext(null);
909
- function composePromptInputEventHandler(handler, followup) {
905
+ function preservePromptInputEventCancellation(handler, cancellation) {
910
906
  return (event) => {
911
907
  handler?.(event);
912
- if (!event.defaultPrevented) followup?.();
908
+ cancellation.current = event.defaultPrevented;
909
+ if (event.defaultPrevented) event.preventBaseUIHandler?.();
913
910
  };
914
911
  }
915
912
  function PromptInputHoverCard({ openDelay = 0, closeDelay = 0, className, children, ref, ...props }) {
916
- const [open, setOpen] = React.useState(false);
917
- const timer = React.useRef(void 0);
918
- const clearTimer = React.useCallback(() => window.clearTimeout(timer.current), []);
919
- const openNow = React.useCallback(() => {
920
- clearTimer();
921
- timer.current = window.setTimeout(() => setOpen(true), openDelay);
922
- }, [clearTimer, openDelay]);
923
- const closeLater = React.useCallback(() => {
924
- clearTimer();
925
- timer.current = window.setTimeout(() => setOpen(false), closeDelay);
926
- }, [clearTimer, closeDelay]);
927
- React.useEffect(() => clearTimer, [clearTimer]);
913
+ const portalContainer = React.useRef(null);
914
+ const cancelNextOpen = React.useRef(false);
915
+ const cancelNextClose = React.useRef(false);
928
916
  const value = React.useMemo(() => ({
929
- open,
930
- openNow,
931
- closeLater
932
- }), [
933
- closeLater,
934
- open,
935
- openNow
936
- ]);
917
+ cancelNextClose,
918
+ cancelNextOpen,
919
+ closeDelay,
920
+ openDelay,
921
+ portalContainer
922
+ }), [closeDelay, openDelay]);
937
923
  return /* @__PURE__ */ jsx(PromptInputHoverCardContext.Provider, {
938
924
  value,
939
925
  children: /* @__PURE__ */ jsx("div", {
940
- ref,
926
+ ref: mergeRefs(ref, portalContainer),
941
927
  className: cx("prompt-input__hover-card", className),
942
928
  ...props,
943
- children
929
+ children: /* @__PURE__ */ jsx(PreviewCard.Root, {
930
+ onOpenChange: (open, eventDetails) => {
931
+ const isTriggerInteraction = eventDetails.reason === "trigger-focus" || eventDetails.reason === "trigger-hover";
932
+ const cancellation = open ? cancelNextOpen : cancelNextClose;
933
+ if (isTriggerInteraction && cancellation.current) {
934
+ cancellation.current = false;
935
+ eventDetails.cancel();
936
+ }
937
+ },
938
+ children
939
+ })
944
940
  })
945
941
  });
946
942
  }
947
943
  function PromptInputHoverCardTrigger({ className, ref, onFocus, onBlur, onMouseEnter, onMouseLeave, ...props }) {
948
944
  const context = React.useContext(PromptInputHoverCardContext);
949
- return /* @__PURE__ */ jsx("span", {
945
+ if (!context) return /* @__PURE__ */ jsx("span", {
950
946
  ref,
951
947
  className: cx("prompt-input__hover-card-trigger", className),
952
- onFocus: composePromptInputEventHandler(onFocus, context?.openNow),
953
- onBlur: composePromptInputEventHandler(onBlur, context?.closeLater),
954
- onMouseEnter: composePromptInputEventHandler(onMouseEnter, context?.openNow),
955
- onMouseLeave: composePromptInputEventHandler(onMouseLeave, context?.closeLater),
948
+ onFocus,
949
+ onBlur,
950
+ onMouseEnter,
951
+ onMouseLeave,
952
+ ...props
953
+ });
954
+ return /* @__PURE__ */ jsx(PreviewCard.Trigger, {
955
+ render: /* @__PURE__ */ jsx("span", { ref }),
956
+ delay: context.openDelay,
957
+ closeDelay: context.closeDelay,
958
+ className: cx("prompt-input__hover-card-trigger", className),
959
+ onFocus: preservePromptInputEventCancellation(onFocus, context.cancelNextOpen),
960
+ onBlur: preservePromptInputEventCancellation(onBlur, context.cancelNextClose),
961
+ onMouseEnter: preservePromptInputEventCancellation(onMouseEnter, context.cancelNextOpen),
962
+ onMouseLeave: preservePromptInputEventCancellation(onMouseLeave, context.cancelNextClose),
956
963
  ...props
957
964
  });
958
965
  }
959
966
  function PromptInputHoverCardContent({ className, ref, onMouseEnter, onMouseLeave, ...props }) {
960
967
  const context = React.useContext(PromptInputHoverCardContext);
961
- if (!context?.open) return null;
962
- return /* @__PURE__ */ jsx("div", {
963
- ref,
964
- className: cx("prompt-input__hover-card-content", className),
965
- onMouseEnter: composePromptInputEventHandler(onMouseEnter, context.openNow),
966
- onMouseLeave: composePromptInputEventHandler(onMouseLeave, context.closeLater),
967
- ...props
968
+ if (!context) return null;
969
+ return /* @__PURE__ */ jsx(PreviewCard.Portal, {
970
+ container: context.portalContainer,
971
+ children: /* @__PURE__ */ jsx(PreviewCard.Positioner, {
972
+ align: "start",
973
+ side: "bottom",
974
+ sideOffset: 6,
975
+ children: /* @__PURE__ */ jsx(PreviewCard.Popup, {
976
+ ref,
977
+ className: cx("prompt-input__hover-card-content", className),
978
+ onMouseEnter: preservePromptInputEventCancellation(onMouseEnter, context.cancelNextOpen),
979
+ onMouseLeave: preservePromptInputEventCancellation(onMouseLeave, context.cancelNextClose),
980
+ ...props
981
+ })
982
+ })
968
983
  });
969
984
  }
970
985
  const PromptInputTabsList = Tabs.List;
@@ -984,20 +999,6 @@ function PromptInputTabItem({ className, ref, ...props }) {
984
999
  ...props
985
1000
  });
986
1001
  }
987
- const PromptInputCommand = Combobox;
988
- const PromptInputCommandInput = Combobox.Input;
989
- function PromptInputCommandList({ className, ref, ...props }) {
990
- return /* @__PURE__ */ jsx(Combobox.List, {
991
- ref,
992
- className: mergeBaseClassName("prompt-input__command-list", className),
993
- ...props
994
- });
995
- }
996
- const PromptInputCommandEmpty = Combobox.Empty;
997
- const PromptInputCommandGroup = Combobox.Group;
998
- const PromptInputCommandGroupLabel = Combobox.GroupLabel;
999
- const PromptInputCommandItem = Combobox.Item;
1000
- const PromptInputCommandSeparator = Combobox.Separator;
1001
1002
  /**
1002
1003
  * Controlled PromptInput textarea with slash-command discovery. The host owns
1003
1004
  * both the command catalog and the draft policy applied after selection.
@@ -1007,7 +1008,7 @@ function PromptInputCommandComposer({ commands, mentionCommands, value, onValueC
1007
1008
  const [dismissedValue, setDismissedValue] = React.useState(null);
1008
1009
  React.useImperativeHandle(ref, () => inputRef.current, []);
1009
1010
  const match = /^\s*([/@])([^\n]*)$/u.exec(value);
1010
- const trigger = match?.[1];
1011
+ const trigger = match?.[1] === "/" || match?.[1] === "@" ? match[1] : void 0;
1011
1012
  const sourceCommands = trigger === "@" ? mentionCommands ?? [] : commands;
1012
1013
  const normalizedQuery = (match?.[2]?.trim() ?? "").toLocaleLowerCase();
1013
1014
  const filtered = sourceCommands.filter((command) => {
@@ -1025,50 +1026,46 @@ function PromptInputCommandComposer({ commands, mentionCommands, value, onValueC
1025
1026
  label,
1026
1027
  items: filtered.filter((command) => (command.group ?? "") === label)
1027
1028
  }));
1028
- return /* @__PURE__ */ jsxs(PromptInputCommand.Root, {
1029
+ return /* @__PURE__ */ jsxs(Autocomplete.Root, {
1029
1030
  items: groups,
1030
1031
  filteredItems: groups,
1031
1032
  filter: null,
1032
- value: null,
1033
- inputValue: value,
1033
+ value,
1034
1034
  open,
1035
1035
  autoHighlight: true,
1036
- itemToStringLabel: (command) => command.label,
1037
1036
  itemToStringValue: (command) => command.value,
1038
- onInputValueChange: (next, { reason }) => {
1037
+ onValueChange: (next, { reason }) => {
1039
1038
  if (reason !== "input-change") return;
1040
1039
  setDismissedValue(null);
1041
- onValueChange(String(next));
1040
+ onValueChange(next);
1042
1041
  },
1043
1042
  onOpenChange: (nextOpen) => {
1044
1043
  if (!nextOpen) setDismissedValue(value);
1045
1044
  },
1046
- onValueChange: (command, { reason }) => {
1047
- if (!command || Array.isArray(command) || reason !== "item-press") return;
1048
- onCommandSelect(command, trigger ?? "/");
1049
- },
1050
- children: [/* @__PURE__ */ jsx(PromptInputCommandInput, { render: /* @__PURE__ */ jsx(PromptInputTextarea, {
1045
+ children: [/* @__PURE__ */ jsx(Autocomplete.Input, { render: /* @__PURE__ */ jsx(PromptInputTextarea, {
1051
1046
  ...textareaProps,
1052
1047
  ref: inputRef,
1053
1048
  value,
1054
1049
  onKeyDown
1055
- }) }), /* @__PURE__ */ jsx(Combobox.Portal, { children: /* @__PURE__ */ jsx(Combobox.Positioner, {
1050
+ }) }), /* @__PURE__ */ jsx(Autocomplete.Portal, { children: /* @__PURE__ */ jsx(Autocomplete.Positioner, {
1056
1051
  anchor: () => inputRef.current?.closest(".prompt-input__body") ?? null,
1057
1052
  side: "top",
1058
1053
  sideOffset: 8,
1059
1054
  align: "start",
1060
1055
  className: "prompt-input__command-positioner",
1061
- children: /* @__PURE__ */ jsxs(Combobox.Popup, {
1056
+ children: /* @__PURE__ */ jsxs(Autocomplete.Popup, {
1062
1057
  className: "prompt-input__command-popup",
1063
1058
  "data-recipe": "composer-command-surface",
1064
- children: [/* @__PURE__ */ jsx(PromptInputCommandList, {
1059
+ children: [/* @__PURE__ */ jsx(Autocomplete.List, {
1060
+ className: "prompt-input__command-list",
1065
1061
  "data-command-trigger": trigger,
1066
- children: (group) => /* @__PURE__ */ jsxs(PromptInputCommandGroup, {
1062
+ children: (group) => /* @__PURE__ */ jsxs(Autocomplete.Group, {
1067
1063
  items: group.items,
1068
- children: [group.label ? /* @__PURE__ */ jsx(PromptInputCommandGroupLabel, { children: group.label }) : null, /* @__PURE__ */ jsx(Combobox.Collection, { children: (command) => /* @__PURE__ */ jsxs(PromptInputCommandItem, {
1064
+ children: [group.label ? /* @__PURE__ */ jsx(Autocomplete.GroupLabel, { children: group.label }) : null, /* @__PURE__ */ jsx(Autocomplete.Collection, { children: (command) => /* @__PURE__ */ jsxs(Autocomplete.Item, {
1069
1065
  value: command,
1070
1066
  disabled: command.disabled,
1071
1067
  className: "prompt-input__command-item",
1068
+ onClick: () => onCommandSelect(command, trigger ?? "/"),
1072
1069
  children: [command.icon ? /* @__PURE__ */ jsx("span", {
1073
1070
  className: "prompt-input__command-icon",
1074
1071
  children: command.icon
@@ -1091,7 +1088,7 @@ function PromptInputCommandComposer({ commands, mentionCommands, value, onValueC
1091
1088
  })]
1092
1089
  }, command.id) })]
1093
1090
  }, group.label || "ungrouped")
1094
- }), /* @__PURE__ */ jsx(PromptInputCommandEmpty, { children: trigger === "@" ? mentionEmptyMessage : emptyMessage })]
1091
+ }), /* @__PURE__ */ jsx(Autocomplete.Empty, { children: trigger === "@" ? mentionEmptyMessage : emptyMessage })]
1095
1092
  })
1096
1093
  }) })]
1097
1094
  });
@@ -1287,4 +1284,4 @@ function createId() {
1287
1284
  return globalThis.crypto?.randomUUID?.() ?? `prompt-input-${Date.now()}-${Math.random()}`;
1288
1285
  }
1289
1286
  //#endregion
1290
- export { PromptInput, PromptInputActionAddAttachments, PromptInputActionAddScreenshot, PromptInputActionMenu, PromptInputActionMenuContent, PromptInputActionMenuItem, PromptInputActionMenuTrigger, PromptInputAttachment, PromptInputAttachments, PromptInputBody, PromptInputButton, PromptInputCommand, PromptInputCommandComposer, PromptInputCommandEmpty, PromptInputCommandGroup, PromptInputCommandGroupLabel, PromptInputCommandInput, PromptInputCommandItem, PromptInputCommandList, PromptInputCommandSeparator, PromptInputContextSelector, PromptInputDictation, PromptInputFooter, PromptInputHeader, PromptInputHoverCard, PromptInputHoverCardContent, PromptInputHoverCardTrigger, PromptInputPermissionSelector, PromptInputProvider, PromptInputReferences, PromptInputSelect, PromptInputSubmit, PromptInputTab, PromptInputTabBody, PromptInputTabItem, PromptInputTabLabel, PromptInputTabsList, PromptInputTextarea, PromptInputTools, PromptInputTray, usePromptInputAttachments, usePromptInputController, useProviderAttachments };
1287
+ export { PromptInput, PromptInputActionAddAttachments, PromptInputActionAddScreenshot, PromptInputActionMenu, PromptInputActionMenuContent, PromptInputActionMenuItem, PromptInputActionMenuTrigger, PromptInputAttachment, PromptInputAttachments, PromptInputBody, PromptInputButton, PromptInputCommandComposer, PromptInputContextSelector, PromptInputDictation, PromptInputFooter, PromptInputHeader, PromptInputHoverCard, PromptInputHoverCardContent, PromptInputHoverCardTrigger, PromptInputPermissionSelector, PromptInputProvider, PromptInputReferences, PromptInputSubmit, PromptInputTab, PromptInputTabBody, PromptInputTabItem, PromptInputTabLabel, PromptInputTabsList, PromptInputTextarea, PromptInputTools, PromptInputTray, usePromptInputAttachments, usePromptInputController, useProviderAttachments };
@@ -1,6 +1,6 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { C as FileIcon, d as CheckIcon, m as ChevronRightIcon, v as DotIcon } from "../../icons-B1Qw05te.js";
3
2
  import { Collapsible } from "../foundations/Collapsible.js";
3
+ import { C as FileIcon, d as CheckIcon, m as ChevronRightIcon, v as DotIcon } from "../../icons-B4mGvCvc.js";
4
4
  import { Button } from "../foundations/Button.js";
5
5
  import { Badge } from "../foundations/Badge.js";
6
6
  import { ScrollArea } from "../foundations/ScrollArea.js";
@@ -102,7 +102,7 @@ function QueueList({ className, children, ref, ...props }) {
102
102
  ...props,
103
103
  children: [/* @__PURE__ */ jsx(ScrollArea.Viewport, {
104
104
  className: "queue__list-viewport",
105
- children: /* @__PURE__ */ jsx("div", {
105
+ children: /* @__PURE__ */ jsx(ScrollArea.Content, {
106
106
  className: "queue__list-scroll",
107
107
  children: /* @__PURE__ */ jsx("ul", {
108
108
  className: "queue__list-inner",
@@ -1,4 +1,5 @@
1
1
  import { Collapsible } from "../foundations/Collapsible.js";
2
+ import { ActivityProps } from "./Activity.js";
2
3
  import * as React from "react";
3
4
 
4
5
  //#region src/components/ai-sdk/Reasoning.d.ts
@@ -9,10 +10,10 @@ interface ReasoningContextValue {
9
10
  duration?: number;
10
11
  }
11
12
  declare function useReasoning(): ReasoningContextValue;
12
- interface ReasoningProps extends Omit<React.ComponentProps<typeof Collapsible.Root>, "onOpenChange" | "unstyled"> {
13
+ interface ReasoningProps extends Omit<ActivityProps, "isStreaming" | "stateKey"> {
13
14
  /**
14
15
  * Whether the model is currently generating reasoning. When true the
15
- * component auto-opens.
16
+ * component requests to open; a controlled consumer remains authoritative.
16
17
  */
17
18
  isStreaming?: boolean;
18
19
  /**
@@ -20,8 +21,6 @@ interface ReasoningProps extends Omit<React.ComponentProps<typeof Collapsible.Ro
20
21
  * When omitted, the component measures the duration automatically.
21
22
  */
22
23
  duration?: number;
23
- /** Called when the open state changes. */
24
- onOpenChange?: (open: boolean) => void;
25
24
  }
26
25
  /**
27
26
  * A collapsible "thinking" block for showing model reasoning (e.g. DeepSeek
@@ -1,13 +1,33 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { J as SpinnerIcon } from "../../icons-B1Qw05te.js";
3
- import { Collapsible } from "../foundations/Collapsible.js";
4
- import { ActivityContent, ActivityText, ActivityTrigger } from "./Activity.js";
2
+ import { J as SpinnerIcon } from "../../icons-B4mGvCvc.js";
3
+ import { Activity, ActivityContent, ActivityText, ActivityTrigger } from "./Activity.js";
5
4
  import { MessageResponse } from "./Message.js";
6
5
  import * as React from "react";
7
6
  import { jsx } from "react/jsx-runtime";
8
7
  //#region src/components/ai-sdk/Reasoning.tsx
9
8
  const ReasoningContext = React.createContext(null);
10
9
  const MS_IN_S = 1e3;
10
+ function createProgrammaticOpenChangeDetails() {
11
+ let isCanceled = false;
12
+ let isPropagationAllowed = false;
13
+ return {
14
+ reason: "none",
15
+ event: new Event("base-ui"),
16
+ trigger: void 0,
17
+ cancel: () => {
18
+ isCanceled = true;
19
+ },
20
+ allowPropagation: () => {
21
+ isPropagationAllowed = true;
22
+ },
23
+ get isCanceled() {
24
+ return isCanceled;
25
+ },
26
+ get isPropagationAllowed() {
27
+ return isPropagationAllowed;
28
+ }
29
+ };
30
+ }
11
31
  function useReasoning() {
12
32
  const ctx = React.useContext(ReasoningContext);
13
33
  if (!ctx) throw new Error("Reasoning subcomponents must be used inside <Reasoning>.");
@@ -38,10 +58,10 @@ function Reasoning({ className, isStreaming = false, duration, open, defaultOpen
38
58
  const currentOpen = isControlled ? open : internalOpen;
39
59
  const preventAutoOpen = defaultOpen === false;
40
60
  const resolvedDuration = duration ?? (isStreaming || startTimeRef.current !== null ? void 0 : internalDuration);
41
- const setOpenState = React.useCallback((next) => {
61
+ const setOpenState = React.useCallback((next, eventDetails = createProgrammaticOpenChangeDetails()) => {
42
62
  if (next === currentOpen) return;
43
- if (!isControlled) setInternalOpen(next);
44
- onOpenChange?.(next);
63
+ onOpenChange?.(next, eventDetails);
64
+ if (!eventDetails.isCanceled && !isControlled) setInternalOpen(next);
45
65
  }, [
46
66
  currentOpen,
47
67
  isControlled,
@@ -65,9 +85,6 @@ function Reasoning({ className, isStreaming = false, duration, open, defaultOpen
65
85
  preventAutoOpen,
66
86
  setOpenState
67
87
  ]);
68
- const handleOpenChange = React.useCallback((next) => {
69
- setOpenState(next);
70
- }, [setOpenState]);
71
88
  const ctx = React.useMemo(() => ({
72
89
  isStreaming,
73
90
  isOpen: currentOpen,
@@ -81,15 +98,14 @@ function Reasoning({ className, isStreaming = false, duration, open, defaultOpen
81
98
  ]);
82
99
  return /* @__PURE__ */ jsx(ReasoningContext.Provider, {
83
100
  value: ctx,
84
- children: /* @__PURE__ */ jsx(Collapsible.Root, {
101
+ children: /* @__PURE__ */ jsx(Activity, {
85
102
  ref,
86
103
  "data-slot": "reasoning",
87
- className: cx("activity", "reasoning", className),
104
+ className: cx("reasoning", className),
105
+ isStreaming,
88
106
  open: currentOpen,
89
- onOpenChange: handleOpenChange,
90
- "data-streaming": isStreaming ? "" : void 0,
107
+ onOpenChange: setOpenState,
91
108
  ...props,
92
- unstyled: true,
93
109
  children
94
110
  })
95
111
  });
@@ -1,6 +1,6 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { k as LinkIcon, m as ChevronRightIcon } from "../../icons-B1Qw05te.js";
3
2
  import { Collapsible } from "../foundations/Collapsible.js";
3
+ import { k as LinkIcon, m as ChevronRightIcon } from "../../icons-B4mGvCvc.js";
4
4
  import "react";
5
5
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
6
  //#region src/components/ai-sdk/Sources.tsx