@mcp-b/react-components 0.44.1 → 0.46.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 (170) hide show
  1. package/dist/{AgentChat-Bibfj7u1.d.ts → AgentChat-BLmQghkt.d.ts} +2 -2
  2. package/dist/{AgentToolRunsContext-daY67hFM.d.ts → AgentToolRunsContext-jtmveaRE.d.ts} +8 -7
  3. package/dist/{CodeBlock-Dl7a3Wqo.js → CodeBlock-BpooTofO.js} +1 -1
  4. package/dist/{FileTree-Uu3ZnW1u.js → FileTree-CAXWXH63.js} +1 -1
  5. package/dist/{McpConnectorForm-MRm1r59e.d.ts → McpConnectorForm-BETdVBRk.d.ts} +1 -1
  6. package/dist/{McpPluginCatalog-mbGw8FTu.d.ts → McpPluginCatalog-C6ip9IvL.d.ts} +2 -2
  7. package/dist/{PromptInput-BRX7FhjH.d.ts → PromptInput-DtJHyp0S.d.ts} +27 -22
  8. package/dist/{ResponsiveSidebarShell-DOXd5T-d.d.ts → ResponsiveSidebarShell-BTVPxLJK.d.ts} +12 -0
  9. package/dist/{SetupChecklist-DOp-zqjh.js → SetupChecklist-DyPZWzK2.js} +2 -2
  10. package/dist/{ThinkChat-BES_3Mb-.js → ThinkChat-qztQ6Clo.js} +7 -22
  11. package/dist/{ThinkChatActivity-CgvmTXXB.d.ts → ThinkChatActivity-B3lGVS-6.d.ts} +1 -1
  12. package/dist/{WorkspaceFileView-BublZXky.js → WorkspaceFileView-BvDbKM2c.js} +3 -3
  13. package/dist/components/agents-sdk/AgentActivity.js +1 -1
  14. package/dist/components/agents-sdk/AgentChat.d.ts +1 -1
  15. package/dist/components/agents-sdk/AgentChat.js +44 -40
  16. package/dist/components/agents-sdk/AgentEvent.d.ts +42 -0
  17. package/dist/components/agents-sdk/AgentEvent.js +96 -0
  18. package/dist/components/agents-sdk/AgentToolRunsContext.d.ts +1 -1
  19. package/dist/components/agents-sdk/AgentToolRunsContext.js +11 -7
  20. package/dist/components/agents-sdk/BrowserLiveScreen.js +1 -1
  21. package/dist/components/agents-sdk/BrowserLiveView.js +1 -1
  22. package/dist/components/agents-sdk/BrowserReplay.js +2 -2
  23. package/dist/components/agents-sdk/BrowserRunPanel.js +1 -1
  24. package/dist/components/agents-sdk/ManagerOffice.d.ts +106 -11
  25. package/dist/components/agents-sdk/ManagerOffice.js +1193 -151
  26. package/dist/components/agents-sdk/McpConnectionRequest.d.ts +1 -1
  27. package/dist/components/agents-sdk/McpConnectionRequest.js +11 -5
  28. package/dist/components/agents-sdk/McpConnectorForm.d.ts +1 -1
  29. package/dist/components/agents-sdk/McpConnectorForm.js +1 -1
  30. package/dist/components/agents-sdk/McpPluginCatalog.d.ts +1 -1
  31. package/dist/components/agents-sdk/McpPluginCatalog.js +11 -7
  32. package/dist/components/agents-sdk/McpServerPicker.d.ts +2 -2
  33. package/dist/components/agents-sdk/McpServerPicker.js +4 -4
  34. package/dist/components/agents-sdk/ModelSelector.js +5 -5
  35. package/dist/components/agents-sdk/PromptInputApproval.js +1 -1
  36. package/dist/components/agents-sdk/PromptInputCommands.d.ts +5 -2
  37. package/dist/components/agents-sdk/PromptInputCommands.js +81 -3
  38. package/dist/components/agents-sdk/SubagentRunDetails.js +1 -1
  39. package/dist/components/agents-sdk/SubagentRunIndicator.d.ts +21 -3
  40. package/dist/components/agents-sdk/SubagentRunIndicator.js +56 -6
  41. package/dist/components/agents-sdk/SubagentRunSelector.js +5 -12
  42. package/dist/components/agents-sdk/ThinkChat.d.ts +4 -5
  43. package/dist/components/agents-sdk/ThinkChat.js +1 -1
  44. package/dist/components/agents-sdk/ThinkChatActivity.d.ts +1 -1
  45. package/dist/components/agents-sdk/ThinkChatActivity.js +3 -3
  46. package/dist/components/agents-sdk/ThinkChatActivitySummary.js +1 -1
  47. package/dist/components/agents-sdk/ThinkChatToolPanels.js +2 -2
  48. package/dist/components/agents-sdk/ThinkExecutionDetail.js +3 -3
  49. package/dist/components/agents-sdk/ThinkExecutionRun.js +1 -1
  50. package/dist/components/agents-sdk/ThinkExecutionStatus.js +1 -1
  51. package/dist/components/agents-sdk/ThinkExecutionWorkbench.js +3 -3
  52. package/dist/components/agents-sdk/ThinkFullApp.d.ts +14 -4
  53. package/dist/components/agents-sdk/ThinkFullApp.js +51 -5
  54. package/dist/components/agents-sdk/ThinkFullAppViewSwitch.js +1 -1
  55. package/dist/components/agents-sdk/ThinkPendingApproval.js +1 -1
  56. package/dist/components/agents-sdk/ThinkRecoveryNotice.js +1 -1
  57. package/dist/components/agents-sdk/ThinkRoutineBrowser.js +3 -3
  58. package/dist/components/agents-sdk/ThinkRoutineDetail.js +1 -1
  59. package/dist/components/agents-sdk/ThinkRoutineForm.js +4 -4
  60. package/dist/components/agents-sdk/ThinkRoutineLibrary.d.ts +1 -1
  61. package/dist/components/agents-sdk/ThinkRoutineLibrary.js +4 -4
  62. package/dist/components/agents-sdk/ThinkRoutineRuns.js +1 -1
  63. package/dist/components/agents-sdk/ThinkSidepanel.d.ts +22 -4
  64. package/dist/components/agents-sdk/ThinkSidepanel.js +87 -35
  65. package/dist/components/agents-sdk/ThinkThreadPicker.js +5 -5
  66. package/dist/components/agents-sdk/Workspace.js +1 -1
  67. package/dist/components/agents-sdk/WorkspaceBrowser.js +1 -1
  68. package/dist/components/agents-sdk/WorkspaceExplorer.js +1 -1
  69. package/dist/components/agents-sdk/WorkspaceFileView.js +1 -1
  70. package/dist/components/agents-sdk/WorkspaceHeader.js +1 -1
  71. package/dist/components/agents-sdk/WorkspaceMountManager.js +4 -21
  72. package/dist/components/ai-sdk/Activity.js +1 -1
  73. package/dist/components/ai-sdk/AgentChatStartScreen.js +1 -1
  74. package/dist/components/ai-sdk/Approval.js +2 -2
  75. package/dist/components/ai-sdk/Artifact.js +1 -1
  76. package/dist/components/ai-sdk/ChainOfThought.d.ts +1 -1
  77. package/dist/components/ai-sdk/ChainOfThought.js +1 -1
  78. package/dist/components/ai-sdk/Checkpoint.js +1 -1
  79. package/dist/components/ai-sdk/CodeBlock.js +1 -1
  80. package/dist/components/ai-sdk/ComposerLink.d.ts +27 -0
  81. package/dist/components/ai-sdk/ComposerLink.js +111 -0
  82. package/dist/components/ai-sdk/ConnectedAppCards.js +3 -3
  83. package/dist/components/ai-sdk/Context.js +1 -1
  84. package/dist/components/ai-sdk/Conversation.js +1 -1
  85. package/dist/components/ai-sdk/Goal.js +2 -2
  86. package/dist/components/ai-sdk/InlineCitation.js +1 -1
  87. package/dist/components/ai-sdk/MediaPreviewCard.js +1 -1
  88. package/dist/components/ai-sdk/Message.js +19 -3
  89. package/dist/components/ai-sdk/MessageScroller.js +1 -1
  90. package/dist/components/ai-sdk/MessageScrollerVirtual.js +1 -1
  91. package/dist/components/ai-sdk/Plan.js +2 -2
  92. package/dist/components/ai-sdk/PromptInput.d.ts +2 -2
  93. package/dist/components/ai-sdk/PromptInput.js +67 -61
  94. package/dist/components/ai-sdk/PromptInputComposerEditor.d.ts +31 -0
  95. package/dist/components/ai-sdk/PromptInputComposerEditor.js +198 -0
  96. package/dist/components/ai-sdk/Queue.js +2 -2
  97. package/dist/components/ai-sdk/Reasoning.js +2 -2
  98. package/dist/components/ai-sdk/Sources.js +1 -1
  99. package/dist/components/ai-sdk/Task.js +1 -1
  100. package/dist/components/ai-sdk/ToolInvocation.js +1 -1
  101. package/dist/components/extension/ChatGptSignInScreen.js +2 -2
  102. package/dist/components/extension/CodexModelSelector.js +2 -2
  103. package/dist/components/extension/ConversationTabPicker.js +2 -2
  104. package/dist/components/foundations/AppIcon.js +1 -1
  105. package/dist/components/foundations/Checkbox.js +1 -1
  106. package/dist/components/foundations/Collapsible.js +1 -1
  107. package/dist/components/foundations/ContextMenu.js +1 -1
  108. package/dist/components/foundations/Menubar.js +1 -1
  109. package/dist/components/foundations/SearchField.js +1 -1
  110. package/dist/components/foundations/Select.js +1 -1
  111. package/dist/components/foundations/Stepper.js +1 -1
  112. package/dist/components/foundations/Toast.js +1 -1
  113. package/dist/components/foundations/ToggleGroup.d.ts +1 -1
  114. package/dist/components/foundations/ToggleGroup.js +1 -1
  115. package/dist/components/foundations/icons.d.ts +1 -1
  116. package/dist/components/foundations/icons.js +1 -1
  117. package/dist/components/general-purpose/Commit.js +2 -2
  118. package/dist/components/general-purpose/EnvironmentVariables.js +2 -2
  119. package/dist/components/general-purpose/FileTree.js +1 -1
  120. package/dist/components/general-purpose/PricingBillingToggle.js +1 -1
  121. package/dist/components/general-purpose/PricingPlanCard.js +2 -2
  122. package/dist/components/general-purpose/PricingUsageCalculator.js +2 -2
  123. package/dist/components/general-purpose/ResizableSidePanel.js +1 -1
  124. package/dist/components/general-purpose/ResponsiveSidebarShell.d.ts +1 -1
  125. package/dist/components/general-purpose/ResponsiveSidebarShell.js +72 -22
  126. package/dist/components/general-purpose/SettingsFormDialog.js +2 -2
  127. package/dist/components/general-purpose/SetupChecklist.js +1 -1
  128. package/dist/components/general-purpose/Terminal.js +2 -2
  129. package/dist/components/general-purpose/TestResults.js +1 -1
  130. package/dist/components/general-purpose/ThemeModeControl.js +2 -2
  131. package/dist/components/general-purpose/WebPreview.js +3 -3
  132. package/dist/components/nanites/AgentConnection.js +2 -2
  133. package/dist/components/nanites/AgentToolDetail.js +4 -4
  134. package/dist/{copy-button-DHhf-J1d.js → copy-button-D7ySsRRo.js} +1 -1
  135. package/dist/{format-DB2mX9DA.js → format-COCyV98Z.js} +23 -1
  136. package/dist/{icons-Dw-im7lg.js → icons-BNEY4gO5.js} +44 -4
  137. package/dist/{icons-6ZnyZJiR.d.ts → icons-D0Pd2P9v.d.ts} +9 -4
  138. package/dist/{mcp-server-SD_S-IpB.js → mcp-server-7NR24ASj.js} +31 -4
  139. package/dist/{mcp-server-catalog-CCj2ItkV.d.ts → mcp-server-catalog-Cbu483Zb.d.ts} +9 -9
  140. package/dist/{progress-ring-BEocM1e3.js → progress-ring-Cgii90dC.js} +1 -1
  141. package/dist/{provider-logos-zjZycgV6.js → provider-logos-DWYY8wNz.js} +31 -6
  142. package/dist/styles/action-guide.css +4 -0
  143. package/dist/styles/agent-attention.css +5 -1
  144. package/dist/styles/agent-chat.css +21 -18
  145. package/dist/styles/agent-event.css +14 -0
  146. package/dist/styles/app-icon.css +21 -0
  147. package/dist/styles/avatar.css +2 -1
  148. package/dist/styles/base.css +4 -0
  149. package/dist/styles/brand-marks.css +22 -0
  150. package/dist/styles/button.css +10 -0
  151. package/dist/styles/composer-link.css +99 -0
  152. package/dist/styles/connected-app-card.css +9 -0
  153. package/dist/styles/github-motion-mark.css +8 -1
  154. package/dist/styles/index.css +3 -0
  155. package/dist/styles/manager-office.css +1313 -73
  156. package/dist/styles/mcp-plugin-catalog.css +4 -0
  157. package/dist/styles/mcp-server-picker.css +2 -0
  158. package/dist/styles/message-scroller.css +5 -0
  159. package/dist/styles/prompt-input.css +14 -53
  160. package/dist/styles/responsive-sidebar-shell.css +47 -0
  161. package/dist/styles/subagent-run.css +29 -19
  162. package/dist/styles/think-full-app.css +139 -4
  163. package/dist/styles/think-sidepanel.css +9 -5
  164. package/dist/styles/think-thread-picker.css +13 -12
  165. package/dist/styles/workspace-mount-manager.css +0 -22
  166. package/dist/utils/composer-link.d.ts +59 -0
  167. package/dist/utils/composer-link.js +203 -0
  168. package/dist/utils/mcp-server-catalog.d.ts +1 -1
  169. package/dist/utils/mcp-server-catalog.js +9 -9
  170. package/package.json +8 -8
@@ -1,5 +1,5 @@
1
1
  import { Collapsible } from "../foundations/Collapsible.js";
2
- import { E as IconProps } from "../../icons-6ZnyZJiR.js";
2
+ import { E as IconProps } from "../../icons-D0Pd2P9v.js";
3
3
  import * as React from "react";
4
4
 
5
5
  //#region src/components/ai-sdk/ChainOfThought.d.ts
@@ -1,6 +1,6 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { _ as DotIcon, d as CheckIcon, p as ChevronRightIcon, q as SpinnerIcon } from "../../icons-Dw-im7lg.js";
3
2
  import { Collapsible } from "../foundations/Collapsible.js";
3
+ import { _ as DotIcon, d as CheckIcon, p as ChevronRightIcon, q as SpinnerIcon } from "../../icons-BNEY4gO5.js";
4
4
  import "react";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
6
  //#region src/components/ai-sdk/ChainOfThought.tsx
@@ -1,5 +1,5 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { s as BookmarkIcon } from "../../icons-Dw-im7lg.js";
2
+ import { s as BookmarkIcon } from "../../icons-BNEY4gO5.js";
3
3
  import { Marker, MarkerIcon } from "../foundations/Marker.js";
4
4
  import "react";
5
5
  import { jsx } from "react/jsx-runtime";
@@ -1,2 +1,2 @@
1
- import { a as CodeBlockCopyButton, c as CodeBlockLanguageSelector, d as CodeBlockLanguageSelectorTrigger, f as CodeBlockLanguageSelectorValue, i as CodeBlockContent, l as CodeBlockLanguageSelectorContent, m as CODE_BLOCK_LANGUAGES, n as CodeBlockActions, o as CodeBlockFilename, p as CodeBlockTitle, r as CodeBlockContainer, s as CodeBlockHeader, t as CodeBlock, u as CodeBlockLanguageSelectorItem } from "../../CodeBlock-Dl7a3Wqo.js";
1
+ import { a as CodeBlockCopyButton, c as CodeBlockLanguageSelector, d as CodeBlockLanguageSelectorTrigger, f as CodeBlockLanguageSelectorValue, i as CodeBlockContent, l as CodeBlockLanguageSelectorContent, m as CODE_BLOCK_LANGUAGES, n as CodeBlockActions, o as CodeBlockFilename, p as CodeBlockTitle, r as CodeBlockContainer, s as CodeBlockHeader, t as CodeBlock, u as CodeBlockLanguageSelectorItem } from "../../CodeBlock-BpooTofO.js";
2
2
  export { CODE_BLOCK_LANGUAGES, CodeBlock, CodeBlockActions, CodeBlockContainer, CodeBlockContent, CodeBlockCopyButton, CodeBlockFilename, CodeBlockHeader, CodeBlockLanguageSelector, CodeBlockLanguageSelectorContent, CodeBlockLanguageSelectorItem, CodeBlockLanguageSelectorTrigger, CodeBlockLanguageSelectorValue, CodeBlockTitle };
@@ -0,0 +1,27 @@
1
+ import { ParsedComposerLink } from "../../utils/composer-link.js";
2
+ import * as React from "react";
3
+
4
+ //#region src/components/ai-sdk/ComposerLink.d.ts
5
+ interface ComposerLinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {
6
+ href: string;
7
+ icon?: React.ReactNode;
8
+ }
9
+ declare function composerLinkIconSrc(parts: ParsedComposerLink | undefined): string | undefined;
10
+ declare function composerLinkUsesCube(parts: ParsedComposerLink | undefined): boolean;
11
+ declare function composerLinkAccent(parts: ParsedComposerLink | undefined): string | undefined;
12
+ /**
13
+ * Inline identity link for composer entities: slash commands, MCP mentions,
14
+ * skills, tabs, and files. The href is the source of truth; the visible node
15
+ * is text plus an optional brand mark, not a button chip.
16
+ */
17
+ declare function ComposerLink({
18
+ href,
19
+ icon,
20
+ className,
21
+ children,
22
+ onClick,
23
+ style,
24
+ ...props
25
+ }: ComposerLinkProps): React.JSX.Element;
26
+ //#endregion
27
+ export { ComposerLink, ComposerLinkProps, composerLinkAccent, composerLinkIconSrc, composerLinkUsesCube };
@@ -0,0 +1,111 @@
1
+ import { brandHexFromIconSrc, parseComposerHref, sampleImageAccent } from "../../utils/composer-link.js";
2
+ import { getMcpServerIconSrc } from "../../utils/mcp-server-catalog.js";
3
+ import { t as cx } from "../../class-names-BiMDVpUo.js";
4
+ import { c as BoxIcon } from "../../icons-BNEY4gO5.js";
5
+ import { n as findCatalogMcpServerCard } from "../../mcp-server-7NR24ASj.js";
6
+ import * as React from "react";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ //#region src/components/ai-sdk/ComposerLink.tsx
9
+ function composerLinkIconSrc(parts) {
10
+ if (!parts) return void 0;
11
+ if (parts.iconSrc) return parts.iconSrc;
12
+ if (parts.kind !== "mcp") return void 0;
13
+ const card = findCatalogMcpServerCard({
14
+ id: parts.value,
15
+ name: parts.value
16
+ });
17
+ return card ? getMcpServerIconSrc(card) : void 0;
18
+ }
19
+ function composerLinkUsesCube(parts) {
20
+ if (!parts) return false;
21
+ if (parts.chromeIcon === "box") return true;
22
+ return !composerLinkIconSrc(parts) && (parts.kind === "command" || parts.kind === "skill");
23
+ }
24
+ function composerLinkAccent(parts) {
25
+ const fromHref = brandHexFromIconSrc(parts?.iconSrc);
26
+ if (fromHref) return fromHref;
27
+ const fromSrc = brandHexFromIconSrc(composerLinkIconSrc(parts));
28
+ if (fromSrc) return fromSrc;
29
+ if (parts?.kind !== "mcp") return void 0;
30
+ const card = findCatalogMcpServerCard({
31
+ id: parts.value,
32
+ name: parts.value
33
+ });
34
+ return card ? brandHexFromIconSrc(getMcpServerIconSrc(card)) : void 0;
35
+ }
36
+ function applyComposerLinkColor(element, color) {
37
+ if (color) element.style.setProperty("--composer-link-color", color);
38
+ }
39
+ function bindSampledIconColor(link, known) {
40
+ if (known) {
41
+ applyComposerLinkColor(link, known);
42
+ return;
43
+ }
44
+ const image = link.querySelector("img");
45
+ if (!(image instanceof HTMLImageElement)) return;
46
+ const apply = () => {
47
+ const sampled = sampleImageAccent(image);
48
+ if (sampled) applyComposerLinkColor(link, sampled);
49
+ };
50
+ if (image.complete) apply();
51
+ else image.addEventListener("load", apply, { once: true });
52
+ }
53
+ function ComposerLinkIcon({ icon, parts }) {
54
+ if (icon) return /* @__PURE__ */ jsx("span", {
55
+ className: "composer-link__icon",
56
+ "aria-hidden": "true",
57
+ children: icon
58
+ });
59
+ const src = composerLinkIconSrc(parts);
60
+ if (src) return /* @__PURE__ */ jsx("img", {
61
+ alt: "",
62
+ "aria-hidden": "true",
63
+ className: "composer-link__icon",
64
+ decoding: "async",
65
+ draggable: false,
66
+ referrerPolicy: "no-referrer",
67
+ src
68
+ });
69
+ if (composerLinkUsesCube(parts)) return /* @__PURE__ */ jsx(BoxIcon, { className: "composer-link__icon" });
70
+ return null;
71
+ }
72
+ /**
73
+ * Inline identity link for composer entities: slash commands, MCP mentions,
74
+ * skills, tabs, and files. The href is the source of truth; the visible node
75
+ * is text plus an optional brand mark, not a button chip.
76
+ */
77
+ function ComposerLink({ href, icon, className, children, onClick, style, ...props }) {
78
+ const parts = parseComposerHref(href);
79
+ const kind = parts?.kind;
80
+ const accent = composerLinkAccent(parts);
81
+ const linkRef = React.useRef(null);
82
+ React.useLayoutEffect(() => {
83
+ const link = linkRef.current;
84
+ if (link) bindSampledIconColor(link, accent);
85
+ }, [accent, href]);
86
+ return /* @__PURE__ */ jsxs("a", {
87
+ ref: linkRef,
88
+ className: cx("composer-link", className),
89
+ "data-composer-link": kind,
90
+ href,
91
+ rel: "nofollow",
92
+ style: accent ? {
93
+ "--composer-link-color": accent,
94
+ ...style
95
+ } : style,
96
+ onClick: (event) => {
97
+ event.preventDefault();
98
+ onClick?.(event);
99
+ },
100
+ ...props,
101
+ children: [/* @__PURE__ */ jsx(ComposerLinkIcon, {
102
+ icon,
103
+ parts
104
+ }), /* @__PURE__ */ jsx("span", {
105
+ className: "composer-link__label",
106
+ children
107
+ })]
108
+ });
109
+ }
110
+ //#endregion
111
+ export { ComposerLink, composerLinkAccent, composerLinkIconSrc, composerLinkUsesCube };
@@ -1,11 +1,11 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { K as SlackIcon, O as MailIcon, _ as DotIcon, d as CheckIcon, nt as XIcon, u as CalendarIcon } from "../../icons-Dw-im7lg.js";
2
+ import { K as SlackIcon, O as MailIcon, _ as DotIcon, d as CheckIcon, nt as XIcon, u as CalendarIcon } from "../../icons-BNEY4gO5.js";
3
3
  import { Button } from "../foundations/Button.js";
4
4
  import { Field } from "../foundations/Field.js";
5
5
  import { Textarea } from "../foundations/Textarea.js";
6
- import { Input } from "../foundations/Input.js";
7
- import { DescriptionList } from "../foundations/DescriptionList.js";
8
6
  import { Card, CardAction, CardContent, CardFooter, CardHeader, CardTitle } from "../foundations/Card.js";
7
+ import { DescriptionList } from "../foundations/DescriptionList.js";
8
+ import { Input } from "../foundations/Input.js";
9
9
  import * as React from "react";
10
10
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
11
11
  //#region src/components/ai-sdk/ConnectedAppCards.tsx
@@ -1,7 +1,7 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
2
  import { Popover } from "../foundations/Popover.js";
3
3
  import { Separator } from "../foundations/Separator.js";
4
- import { t as ProgressRing } from "../../progress-ring-BEocM1e3.js";
4
+ import { t as ProgressRing } from "../../progress-ring-Cgii90dC.js";
5
5
  import * as React from "react";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
7
7
  //#region src/components/ai-sdk/Context.tsx
@@ -1,5 +1,5 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { n as ArrowDownIcon, v as DownloadIcon } from "../../icons-Dw-im7lg.js";
2
+ import { n as ArrowDownIcon, v as DownloadIcon } from "../../icons-BNEY4gO5.js";
3
3
  import { IconButton } from "../foundations/IconButton.js";
4
4
  import { t as assignRef } from "../../merge-refs-DF_7w2x_.js";
5
5
  import { MessageScroller, MessageScrollerButton, MessageScrollerContent, MessageScrollerItem, MessageScrollerProvider, MessageScrollerViewport } from "./MessageScroller.js";
@@ -1,7 +1,7 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { $ as TrashIcon, B as PlayIcon, R as PauseIcon, Z as TargetIcon } from "../../icons-Dw-im7lg.js";
2
+ import { $ as TrashIcon, B as PlayIcon, R as PauseIcon, Z as TargetIcon } from "../../icons-BNEY4gO5.js";
3
3
  import { IconButton } from "../foundations/IconButton.js";
4
- import { i as formatErrorMessage } from "../../format-DB2mX9DA.js";
4
+ import { a as formatErrorMessage } from "../../format-COCyV98Z.js";
5
5
  import * as React from "react";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
7
7
  //#region src/components/ai-sdk/Goal.tsx
@@ -1,6 +1,6 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { Popover } from "../foundations/Popover.js";
3
2
  import { PreviewCard } from "../foundations/PreviewCard.js";
3
+ import { Popover } from "../foundations/Popover.js";
4
4
  import "react";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
6
  //#region src/components/ai-sdk/InlineCitation.tsx
@@ -1,5 +1,5 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { B as PlayIcon } from "../../icons-Dw-im7lg.js";
2
+ import { B as PlayIcon } from "../../icons-BNEY4gO5.js";
3
3
  import { n as mergeRefs } from "../../merge-refs-DF_7w2x_.js";
4
4
  import { Card } from "../foundations/Card.js";
5
5
  import * as React from "react";
@@ -1,9 +1,11 @@
1
+ import { parseComposerHref } from "../../utils/composer-link.js";
1
2
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { S as FileIcon, i as ArrowRightIcon, r as ArrowLeftIcon } from "../../icons-Dw-im7lg.js";
3
+ import { S as FileIcon, i as ArrowRightIcon, r as ArrowLeftIcon } from "../../icons-BNEY4gO5.js";
3
4
  import { Button } from "../foundations/Button.js";
4
5
  import { IconButton } from "../foundations/IconButton.js";
5
6
  import { t as AttachmentPreview } from "../../attachment-preview-1CXJvrmb.js";
6
- import { n as clamp } from "../../format-DB2mX9DA.js";
7
+ import { n as clamp } from "../../format-COCyV98Z.js";
8
+ import { ComposerLink } from "./ComposerLink.js";
7
9
  import * as React from "react";
8
10
  import { jsx, jsxs } from "react/jsx-runtime";
9
11
  import { cjk } from "@streamdown/cjk";
@@ -78,7 +80,21 @@ const streamdownPlugins = {
78
80
  cjk,
79
81
  code
80
82
  };
81
- const messageResponseComponents = { img: "img" };
83
+ function MessageResponseLink({ href, children, ...props }) {
84
+ return href && parseComposerHref(href) ? /* @__PURE__ */ jsx(ComposerLink, {
85
+ href,
86
+ children
87
+ }) : /* @__PURE__ */ jsx("a", {
88
+ href,
89
+ "data-streamdown": "link",
90
+ ...props,
91
+ children
92
+ });
93
+ }
94
+ const messageResponseComponents = {
95
+ img: "img",
96
+ a: MessageResponseLink
97
+ };
82
98
  const MessageResponse = React.memo(function MessageResponse({ className, components, ...props }) {
83
99
  return /* @__PURE__ */ jsx(Streamdown, {
84
100
  className: cx("message__response", "sigvelo-reader-text", className),
@@ -1,5 +1,5 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { n as ArrowDownIcon } from "../../icons-Dw-im7lg.js";
2
+ import { n as ArrowDownIcon } from "../../icons-BNEY4gO5.js";
3
3
  import { Button } from "../foundations/Button.js";
4
4
  import { t as messageScrollerContract } from "../../message-scroller-C8cplcQO.js";
5
5
  import "react";
@@ -1,5 +1,5 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { n as ArrowDownIcon } from "../../icons-Dw-im7lg.js";
2
+ import { n as ArrowDownIcon } from "../../icons-BNEY4gO5.js";
3
3
  import { Button } from "../foundations/Button.js";
4
4
  import { t as messageScrollerContract } from "../../message-scroller-C8cplcQO.js";
5
5
  import * as React from "react";
@@ -1,7 +1,7 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { _ as DotIcon, d as CheckIcon, i as ArrowRightIcon } from "../../icons-Dw-im7lg.js";
2
+ import { _ as DotIcon, d as CheckIcon, i as ArrowRightIcon } from "../../icons-BNEY4gO5.js";
3
3
  import { Popover } from "../foundations/Popover.js";
4
- import { t as ProgressRing } from "../../progress-ring-BEocM1e3.js";
4
+ import { t as ProgressRing } from "../../progress-ring-Cgii90dC.js";
5
5
  import * as React from "react";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
7
7
  //#region src/components/ai-sdk/Plan.tsx
@@ -1,2 +1,2 @@
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
+ import { $ as PromptInputSubmit, A as PromptInputContextItem, B as PromptInputHoverCard, C as PromptInputButtonProps, Ct as usePromptInputController, 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 usePromptInputAttachments, T as PromptInputCommandComposer, U as PromptInputHoverCardProps, V as PromptInputHoverCardContent, W as PromptInputHoverCardTrigger, X as PromptInputProvider, Y as PromptInputProps, Z as PromptInputProviderProps, _ as PromptInputAttachmentProps, _t as PromptInputTrayProps, a as PromptInputActionAddAttachmentsProps, at as PromptInputTabItemProps, b as PromptInputBody, bt as TooltipSide, c as PromptInputActionMenu, ct as PromptInputTabProps, d as PromptInputActionMenuItem, dt as PromptInputTextarea, et as PromptInputSubmitProps, f as PromptInputActionMenuItemProps, ft as PromptInputTextareaProps, g as PromptInputAttachment, gt as PromptInputTray, h as PromptInputActionMenuTriggerProps, ht as PromptInputTooltipConfig, i as PromptInputActionAddAttachments, it as PromptInputTabItem, j as PromptInputContextSelector, k as PromptInputContextAction, l as PromptInputActionMenuContent, lt as PromptInputTabsList, m as PromptInputActionMenuTrigger, mt as PromptInputToolsProps, n as PermissionMode, nt as PromptInputTabBody, o as PromptInputActionAddScreenshot, ot as PromptInputTabLabel, p as PromptInputActionMenuProps, pt as PromptInputTools, q as PromptInputPermissionSelector, r as PromptInput, rt as PromptInputTabBodyProps, s as PromptInputActionAddScreenshotProps, st as PromptInputTabLabelProps, t as AttachmentsContext, tt as PromptInputTab, u as PromptInputActionMenuContentProps, ut as PromptInputTabsListProps, v as PromptInputAttachments, vt as PromptInputVoiceInput, w as PromptInputButtonTooltip, wt as useProviderAttachments, x as PromptInputBodyProps, xt as composerLinksToReferences, y as PromptInputAttachmentsProps, yt as TextInputContext, z as PromptInputHeaderProps } from "../../PromptInput-DtJHyp0S.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, PromptInputSubmit, PromptInputSubmitProps, PromptInputTab, PromptInputTabBody, PromptInputTabBodyProps, PromptInputTabItem, PromptInputTabItemProps, PromptInputTabLabel, PromptInputTabLabelProps, PromptInputTabProps, PromptInputTabsList, PromptInputTabsListProps, PromptInputTextarea, PromptInputTextareaProps, PromptInputTools, PromptInputToolsProps, PromptInputTooltipConfig, PromptInputTray, PromptInputTrayProps, PromptInputVoiceInput, TextInputContext, TooltipSide, composerLinksToReferences, usePromptInputAttachments, usePromptInputController, useProviderAttachments };
@@ -1,16 +1,19 @@
1
+ import { composerTriggerMatch, parseComposerLinks, replaceComposerTrigger } from "../../utils/composer-link.js";
1
2
  import { n as mergeBaseClassName, t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { C as FolderIcon, J as SquareIcon, L as PaperclipIcon, M as MicrophoneIcon, P as MonitorIcon, S as FileIcon, V as PlusIcon, Y as StopIcon, a as ArrowUpIcon, d as CheckIcon, et as WarningIcon, f as ChevronDownIcon, nt as XIcon, q as SpinnerIcon, tt as WrenchIcon } from "../../icons-Dw-im7lg.js";
3
+ import { C as FolderIcon, J as SquareIcon, L as PaperclipIcon, M as MicrophoneIcon, P as MonitorIcon, S as FileIcon, V as PlusIcon, Y as StopIcon, a as ArrowUpIcon, d as CheckIcon, et as WarningIcon, f as ChevronDownIcon, nt as XIcon, q as SpinnerIcon, tt as WrenchIcon } from "../../icons-BNEY4gO5.js";
3
4
  import { Button } from "../foundations/Button.js";
4
5
  import { Tooltip } from "../foundations/Tooltip.js";
5
6
  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
7
  import { Autocomplete } from "../foundations/Autocomplete.js";
9
8
  import { Kbd } from "../foundations/Kbd.js";
10
9
  import { Menu } from "../foundations/Menu.js";
11
10
  import { PreviewCard } from "../foundations/PreviewCard.js";
12
11
  import { Tabs } from "../foundations/Tabs.js";
12
+ import { t as AttachmentPreview } from "../../attachment-preview-1CXJvrmb.js";
13
+ import { a as formatErrorMessage, i as formatClock, n as clamp } from "../../format-COCyV98Z.js";
13
14
  import { n as mergeRefs } from "../../merge-refs-DF_7w2x_.js";
15
+ import { ComposerLink } from "./ComposerLink.js";
16
+ import { PromptInputComposerEditor, readComposerDom, writeComposerDom } from "./PromptInputComposerEditor.js";
14
17
  import * as React from "react";
15
18
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
16
19
  //#region src/components/ai-sdk/PromptInput.tsx
@@ -235,17 +238,21 @@ function PromptInput({ className, accept, multiple, globalDrop, syncHiddenInput,
235
238
  ]);
236
239
  const handleSubmit = React.useCallback(async (event) => {
237
240
  event.preventDefault();
238
- const textarea = event.currentTarget.querySelector("textarea[data-prompt-input-textarea=\"true\"]");
239
- const text = controller?.textInput.value ?? textarea?.value.trim() ?? "";
241
+ const field = event.currentTarget.querySelector("[data-prompt-input-textarea=\"true\"]");
242
+ const fieldText = field instanceof HTMLTextAreaElement ? field.value : field?.isContentEditable ? readComposerDom(field) : "";
243
+ const text = (controller?.textInput.value ?? fieldText).trim();
240
244
  const submittedFiles = await Promise.all(files.map(resolveSubmittedFile));
241
245
  try {
242
246
  const submission = onSubmit?.({
243
247
  text,
244
248
  files: submittedFiles
245
249
  }, event);
246
- if (!controller && textarea) {
247
- textarea.value = "";
248
- textarea.dispatchEvent(new Event("input", { bubbles: true }));
250
+ if (!controller && field instanceof HTMLTextAreaElement) {
251
+ field.value = "";
252
+ field.dispatchEvent(new Event("input", { bubbles: true }));
253
+ } else if (!controller && field?.isContentEditable) {
254
+ field.replaceChildren();
255
+ field.dispatchEvent(new Event("input", { bubbles: true }));
249
256
  }
250
257
  controller?.textInput.clear();
251
258
  clearAttachments();
@@ -525,10 +532,11 @@ function PromptInputDictation({ voice, beforeStart, className, disabled, ref, ..
525
532
  voice.clear();
526
533
  return;
527
534
  }
528
- const textarea = buttonRef.current?.form?.querySelector("textarea[data-prompt-input-textarea=\"true\"]");
529
- if (!textarea) return;
530
- Object.getOwnPropertyDescriptor(HTMLTextAreaElement.prototype, "value")?.set?.call(textarea, appendDictationTranscript(textarea.value, addition));
531
- textarea.dispatchEvent(new Event("input", { bubbles: true }));
535
+ const field = buttonRef.current?.form?.querySelector("[data-prompt-input-textarea=\"true\"]");
536
+ if (!field) return;
537
+ if (field instanceof HTMLTextAreaElement) Object.getOwnPropertyDescriptor(HTMLTextAreaElement.prototype, "value")?.set?.call(field, appendDictationTranscript(field.value, addition));
538
+ else if (field.isContentEditable) writeComposerDom(field, appendDictationTranscript(readComposerDom(field), addition));
539
+ field.dispatchEvent(new Event("input", { bubbles: true }));
532
540
  voice.clear();
533
541
  }, [
534
542
  controller,
@@ -988,25 +996,42 @@ function PromptInputTabLabel({ className, ref, ...props }) {
988
996
  ...props
989
997
  });
990
998
  }
991
- function PromptInputTabItem({ className, ref, ...props }) {
992
- return /* @__PURE__ */ jsx("div", {
999
+ function PromptInputTabItem({ className, href, icon, children, ref, ...props }) {
1000
+ if (href) return /* @__PURE__ */ jsx(ComposerLink, {
1001
+ href,
1002
+ icon,
1003
+ className: cx("prompt-input__tab-item", className),
1004
+ children
1005
+ });
1006
+ return /* @__PURE__ */ jsxs("div", {
993
1007
  ref,
994
1008
  className: cx("prompt-input__tab-item", className),
995
- ...props
1009
+ ...props,
1010
+ children: [icon, children]
996
1011
  });
997
1012
  }
1013
+ function composerLinksToReferences(text) {
1014
+ return parseComposerLinks(text).map((link) => ({
1015
+ id: `${link.kind}:${link.value}`,
1016
+ value: link.value,
1017
+ label: link.label,
1018
+ href: link.href,
1019
+ iconSrc: link.iconSrc,
1020
+ trigger: link.kind === "mcp" || link.kind === "tab" ? "@" : "/"
1021
+ }));
1022
+ }
998
1023
  /**
999
- * Controlled PromptInput textarea with slash-command discovery. The host owns
1000
- * both the command catalog and the draft policy applied after selection.
1024
+ * Controlled composer field with slash-command and mention discovery.
1025
+ * Selection inserts a special href into the draft not a chip button.
1001
1026
  */
1002
- function PromptInputCommandComposer({ commands, mentionCommands, value, onValueChange, onCommandSelect, emptyMessage = "No commands found.", mentionEmptyMessage = "No MCP servers found.", onKeyDown, ref, ...textareaProps }) {
1027
+ function PromptInputCommandComposer({ commands, mentionCommands, value, onValueChange, onCommandSelect, emptyMessage = "No commands found.", mentionEmptyMessage = "No MCP servers found.", onKeyDown, ref, placeholder, disabled, className, minHeight, maxHeight, "aria-label": ariaLabel }) {
1003
1028
  const inputRef = React.useRef(null);
1004
1029
  const [dismissedValue, setDismissedValue] = React.useState(null);
1005
1030
  React.useImperativeHandle(ref, () => inputRef.current, []);
1006
- const match = /^\s*([/@])([^\n]*)$/u.exec(value);
1007
- const trigger = match?.[1] === "/" || match?.[1] === "@" ? match[1] : void 0;
1031
+ const match = composerTriggerMatch(value);
1032
+ const trigger = match?.trigger;
1008
1033
  const sourceCommands = trigger === "@" ? mentionCommands ?? [] : commands;
1009
- const normalizedQuery = (match?.[2]?.trim() ?? "").toLocaleLowerCase();
1034
+ const normalizedQuery = (match?.query.trim() ?? "").toLocaleLowerCase();
1010
1035
  const filtered = sourceCommands.filter((command) => {
1011
1036
  if (!normalizedQuery) return true;
1012
1037
  return [
@@ -1022,6 +1047,12 @@ function PromptInputCommandComposer({ commands, mentionCommands, value, onValueC
1022
1047
  label,
1023
1048
  items: filtered.filter((command) => (command.group ?? "") === label)
1024
1049
  }));
1050
+ const selectCommand = (command) => {
1051
+ const nextTrigger = trigger ?? "/";
1052
+ onValueChange(replaceComposerTrigger(value, command, nextTrigger));
1053
+ setDismissedValue(null);
1054
+ onCommandSelect(command, nextTrigger);
1055
+ };
1025
1056
  return /* @__PURE__ */ jsxs(Autocomplete.Root, {
1026
1057
  items: groups,
1027
1058
  filteredItems: groups,
@@ -1038,11 +1069,20 @@ function PromptInputCommandComposer({ commands, mentionCommands, value, onValueC
1038
1069
  onOpenChange: (nextOpen) => {
1039
1070
  if (!nextOpen) setDismissedValue(value);
1040
1071
  },
1041
- children: [/* @__PURE__ */ jsx(Autocomplete.Input, { render: /* @__PURE__ */ jsx(PromptInputTextarea, {
1042
- ...textareaProps,
1072
+ children: [/* @__PURE__ */ jsx(Autocomplete.Input, { render: /* @__PURE__ */ jsx(PromptInputComposerEditor, {
1043
1073
  ref: inputRef,
1044
- value,
1045
- onKeyDown
1074
+ draft: value,
1075
+ onDraftChange: (next) => {
1076
+ setDismissedValue(null);
1077
+ onValueChange(next);
1078
+ },
1079
+ onKeyDown,
1080
+ placeholder,
1081
+ disabled,
1082
+ className,
1083
+ minHeight,
1084
+ maxHeight,
1085
+ "aria-label": ariaLabel
1046
1086
  }) }), /* @__PURE__ */ jsx(Autocomplete.Portal, { children: /* @__PURE__ */ jsx(Autocomplete.Positioner, {
1047
1087
  anchor: () => inputRef.current?.closest(".prompt-input__body") ?? null,
1048
1088
  side: "top",
@@ -1061,7 +1101,7 @@ function PromptInputCommandComposer({ commands, mentionCommands, value, onValueC
1061
1101
  value: command,
1062
1102
  disabled: command.disabled,
1063
1103
  className: "prompt-input__command-item",
1064
- onClick: () => onCommandSelect(command, trigger ?? "/"),
1104
+ onClick: () => selectCommand(command),
1065
1105
  children: [command.icon ? /* @__PURE__ */ jsx("span", {
1066
1106
  className: "prompt-input__command-icon",
1067
1107
  children: command.icon
@@ -1089,40 +1129,6 @@ function PromptInputCommandComposer({ commands, mentionCommands, value, onValueC
1089
1129
  }) })]
1090
1130
  });
1091
1131
  }
1092
- /** Removable inline context selected from slash-command or mention pickers. */
1093
- function PromptInputReferences({ references, onRemove, className, ref, ...props }) {
1094
- if (!references.length) return null;
1095
- return /* @__PURE__ */ jsx("div", {
1096
- ref,
1097
- className: cx("prompt-input__references", className),
1098
- role: "group",
1099
- "aria-label": "Selected context",
1100
- ...props,
1101
- children: references.map((reference) => /* @__PURE__ */ jsxs(Button, {
1102
- type: "button",
1103
- variant: "ghost",
1104
- color: "primary",
1105
- size: "xs",
1106
- className: "prompt-input__reference",
1107
- "aria-label": `Remove ${reference.label}`,
1108
- onClick: () => onRemove(reference),
1109
- children: [
1110
- reference.icon ? /* @__PURE__ */ jsx("span", {
1111
- className: "prompt-input__reference-icon",
1112
- children: reference.icon
1113
- }) : null,
1114
- /* @__PURE__ */ jsx("span", {
1115
- className: "prompt-input__reference-label sigvelo-truncate",
1116
- children: reference.label
1117
- }),
1118
- /* @__PURE__ */ jsx(XIcon, {
1119
- className: "prompt-input__reference-remove",
1120
- size: 14
1121
- })
1122
- ]
1123
- }, `${reference.trigger ?? "reference"}:${reference.id}`))
1124
- });
1125
- }
1126
1132
  /** Controlled composer-footer picker for a host-owned folder or working context. */
1127
1133
  function PromptInputContextSelector({ items, value, onValueChange, categoryLabel = "Folder", unavailableLabel = "Folder unavailable", action }) {
1128
1134
  const selected = items.find((item) => item.value === value);
@@ -1290,4 +1296,4 @@ function createId() {
1290
1296
  return globalThis.crypto?.randomUUID?.() ?? `prompt-input-${Date.now()}-${Math.random()}`;
1291
1297
  }
1292
1298
  //#endregion
1293
- 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 };
1299
+ export { PromptInput, PromptInputActionAddAttachments, PromptInputActionAddScreenshot, PromptInputActionMenu, PromptInputActionMenuContent, PromptInputActionMenuItem, PromptInputActionMenuTrigger, PromptInputAttachment, PromptInputAttachments, PromptInputBody, PromptInputButton, PromptInputCommandComposer, PromptInputContextSelector, PromptInputDictation, PromptInputFooter, PromptInputHeader, PromptInputHoverCard, PromptInputHoverCardContent, PromptInputHoverCardTrigger, PromptInputPermissionSelector, PromptInputProvider, PromptInputSubmit, PromptInputTab, PromptInputTabBody, PromptInputTabItem, PromptInputTabLabel, PromptInputTabsList, PromptInputTextarea, PromptInputTools, PromptInputTray, composerLinksToReferences, usePromptInputAttachments, usePromptInputController, useProviderAttachments };
@@ -0,0 +1,31 @@
1
+ import * as React from "react";
2
+
3
+ //#region src/components/ai-sdk/PromptInputComposerEditor.d.ts
4
+ declare function writeComposerDom(element: HTMLElement, markdown: string): void;
5
+ declare function readComposerDom(element: HTMLElement): string;
6
+ interface PromptInputComposerEditorProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onChange" | "value"> {
7
+ /** Markdown draft. Named apart from Autocomplete's `value` so the two cannot collide. */
8
+ draft: string;
9
+ onDraftChange: (value: string) => void;
10
+ placeholder?: string;
11
+ minHeight?: number;
12
+ maxHeight?: number;
13
+ disabled?: boolean;
14
+ }
15
+ declare function PromptInputComposerEditor({
16
+ className,
17
+ placeholder,
18
+ minHeight,
19
+ maxHeight,
20
+ draft,
21
+ onDraftChange,
22
+ onKeyDown,
23
+ onPaste,
24
+ disabled,
25
+ ref,
26
+ ...props
27
+ }: PromptInputComposerEditorProps & {
28
+ ref?: React.Ref<HTMLDivElement>;
29
+ }): React.JSX.Element;
30
+ //#endregion
31
+ export { PromptInputComposerEditor, PromptInputComposerEditorProps, readComposerDom, writeComposerDom };