@mcp-b/react-components 0.20.5 → 0.22.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 (234) hide show
  1. package/dist/{AgentActivity-D2SHSGFX.d.ts → AgentActivity-D3OvrC02.d.ts} +14 -1
  2. package/dist/{AgentChat-C-ZyXbJz.d.ts → AgentChat-Bm1qYbOo.d.ts} +24 -1
  3. package/dist/AgentChatStartScreen-DDZ25aax.d.ts +60 -0
  4. package/dist/{Button-yRInko9u.d.ts → Button-SBIz6Lqi.d.ts} +2 -1
  5. package/dist/{CodeBlock-ygtuzqJd.js → CodeBlock-Cp67Njo3.js} +1 -1
  6. package/dist/{CodeBlock-Bbls1CnA.d.ts → CodeBlock-yMpGqScn.d.ts} +1 -1
  7. package/dist/Dialog-BD8NBKaE.d.ts +122 -0
  8. package/dist/{FileTree-CdgfccsM.js → FileTree-DW60q1w7.js} +1 -1
  9. package/dist/IconButton-CFKhu6OR.d.ts +35 -0
  10. package/dist/{Message-DzuteocT.js → Message-_-bEYLAO.js} +9 -16
  11. package/dist/{ModelSelector-pecWyOFI.js → ModelSelector-Brvj9Cab.js} +15 -8
  12. package/dist/{PromptInput-Cq-8RoXD.d.ts → PromptInput-BjoPWaaG.d.ts} +15 -2
  13. package/dist/{ThinkChatActivity-CdbL0aoA.d.ts → ThinkChatActivity-2BobmuvR.d.ts} +8 -7
  14. package/dist/{ThinkChatActivitySummary-D1xOrNrq.d.ts → ThinkChatActivitySummary-kr5fE0wg.d.ts} +14 -5
  15. package/dist/{ToggleGroup-DNd6cDJZ.d.ts → ToggleGroup-BW1jrhAF.d.ts} +10 -0
  16. package/dist/{Workspace-CWtust-2.d.ts → Workspace-CIycQ4xE.d.ts} +1 -1
  17. package/dist/{WorkspaceExplorer-DGigwsgH.d.ts → WorkspaceExplorer-BCipn7Vd.d.ts} +1 -1
  18. package/dist/{WorkspaceFile-D8Un_xge.d.ts → WorkspaceFile-DMtRMwVv.d.ts} +1 -1
  19. package/dist/{WorkspaceFileView-Bxx4wEzJ.js → WorkspaceFileView-rUEN2iox.js} +4 -4
  20. package/dist/assets/think-browser-host.png +0 -0
  21. package/dist/components/ActionGuide.d.ts +85 -0
  22. package/dist/components/ActionGuide.js +94 -0
  23. package/dist/components/Activity.d.ts +33 -17
  24. package/dist/components/Activity.js +40 -28
  25. package/dist/components/AgentActivity.d.ts +1 -1
  26. package/dist/components/AgentActivity.js +3 -11
  27. package/dist/components/AgentActivityPreview.d.ts +1 -1
  28. package/dist/components/AgentActivityPreview.js +17 -16
  29. package/dist/components/AgentAttention.d.ts +1 -1
  30. package/dist/components/AgentChat.d.ts +1 -1
  31. package/dist/components/AgentChat.js +169 -136
  32. package/dist/components/AgentChatStartScreen.d.ts +2 -0
  33. package/dist/components/AgentChatStartScreen.js +88 -0
  34. package/dist/components/AgentConnection.d.ts +1 -1
  35. package/dist/components/AgentConnection.js +2 -2
  36. package/dist/components/AgentMessageParts.js +1 -1
  37. package/dist/components/AgentToolDetail.js +1 -1
  38. package/dist/components/AlertDialog.d.ts +2 -1
  39. package/dist/components/AlertDialog.js +8 -2
  40. package/dist/components/AppIcon.d.ts +58 -0
  41. package/dist/components/AppIcon.js +51 -0
  42. package/dist/components/AppTopBar.js +9 -10
  43. package/dist/components/Approval.js +3 -5
  44. package/dist/components/Artifact.d.ts +3 -7
  45. package/dist/components/Artifact.js +12 -18
  46. package/dist/components/Avatar.d.ts +7 -2
  47. package/dist/components/Avatar.js +4 -2
  48. package/dist/components/BrowserLiveView.js +6 -8
  49. package/dist/components/BrowserReplay.js +9 -9
  50. package/dist/components/BrowserRunPanel.js +2 -2
  51. package/dist/components/Button.d.ts +1 -1
  52. package/dist/components/ChainOfThought.d.ts +1 -1
  53. package/dist/components/ChainOfThought.js +1 -1
  54. package/dist/components/ChatGptSignInScreen.js +2 -2
  55. package/dist/components/Checkbox.js +1 -1
  56. package/dist/components/Checkpoint.js +1 -1
  57. package/dist/components/CodeBlock.d.ts +1 -1
  58. package/dist/components/CodeBlock.js +1 -1
  59. package/dist/components/CodexModelSelector.js +1 -1
  60. package/dist/components/Commit.d.ts +1 -1
  61. package/dist/components/Commit.js +3 -3
  62. package/dist/components/ContextMenu.js +1 -1
  63. package/dist/components/Conversation.d.ts +3 -24
  64. package/dist/components/Conversation.js +6 -34
  65. package/dist/components/Dialog.d.ts +1 -117
  66. package/dist/components/Dialog.js +9 -1
  67. package/dist/components/EmptyState.d.ts +46 -0
  68. package/dist/components/EmptyState.js +50 -0
  69. package/dist/components/EnvironmentVariables.d.ts +1 -1
  70. package/dist/components/EnvironmentVariables.js +2 -2
  71. package/dist/components/FileTree.js +1 -1
  72. package/dist/components/IconButton.d.ts +1 -31
  73. package/dist/components/IconButton.js +2 -1
  74. package/dist/components/Kbd.d.ts +32 -0
  75. package/dist/components/Kbd.js +34 -0
  76. package/dist/components/McpConnectionRequest.d.ts +1 -1
  77. package/dist/components/McpConnectionRequest.js +1 -1
  78. package/dist/components/McpPluginCatalog.d.ts +86 -0
  79. package/dist/components/McpPluginCatalog.js +364 -0
  80. package/dist/components/McpServerPicker.d.ts +2 -2
  81. package/dist/components/McpServerPicker.js +7 -13
  82. package/dist/components/MediaPreviewCard.js +1 -1
  83. package/dist/components/Menubar.js +1 -1
  84. package/dist/components/Message.d.ts +4 -8
  85. package/dist/components/Message.js +1 -1
  86. package/dist/components/MessageScroller.d.ts +1 -1
  87. package/dist/components/MessageScroller.js +1 -1
  88. package/dist/components/ModelSelector.d.ts +12 -6
  89. package/dist/components/ModelSelector.js +2 -2
  90. package/dist/components/Plan.js +1 -1
  91. package/dist/components/PricingBillingToggle.js +1 -0
  92. package/dist/components/PricingPlanCard.d.ts +1 -1
  93. package/dist/components/PricingPlanCard.js +10 -12
  94. package/dist/components/PromptInput.d.ts +2 -2
  95. package/dist/components/PromptInput.js +30 -12
  96. package/dist/components/Queue.d.ts +1 -1
  97. package/dist/components/Queue.js +2 -2
  98. package/dist/components/Reasoning.js +5 -10
  99. package/dist/components/ResponsiveSidebarShell.js +2 -1
  100. package/dist/components/SearchField.js +1 -1
  101. package/dist/components/Select.js +1 -1
  102. package/dist/components/Sources.js +1 -1
  103. package/dist/components/StatusPill.d.ts +43 -0
  104. package/dist/components/StatusPill.js +35 -0
  105. package/dist/components/Stepper.js +1 -1
  106. package/dist/components/SubagentRunIndicator.js +1 -1
  107. package/dist/components/SubagentRunSelector.js +1 -1
  108. package/dist/components/Task.js +1 -1
  109. package/dist/components/Terminal.d.ts +3 -3
  110. package/dist/components/Terminal.js +7 -8
  111. package/dist/components/TestResults.js +1 -1
  112. package/dist/components/ThemeModeControl.js +1 -1
  113. package/dist/components/ThinkChat.d.ts +12 -6
  114. package/dist/components/ThinkChatActivity.d.ts +2 -2
  115. package/dist/components/ThinkChatActivity.js +28 -16
  116. package/dist/components/ThinkChatActivitySummary.d.ts +2 -2
  117. package/dist/components/ThinkChatActivitySummary.js +67 -64
  118. package/dist/components/ThinkChatToolPanels.js +1 -1
  119. package/dist/components/ThinkExecutionDetail.js +5 -5
  120. package/dist/components/ThinkExecutionStatus.js +1 -1
  121. package/dist/components/ThinkExecutionWorkbench.js +19 -25
  122. package/dist/components/ThinkFullApp.d.ts +8 -4
  123. package/dist/components/ThinkFullApp.js +17 -2
  124. package/dist/components/ThinkFullAppViewSwitch.d.ts +1 -1
  125. package/dist/components/ThinkRoutineBrowser.js +3 -2
  126. package/dist/components/ThinkRoutineForm.js +3 -3
  127. package/dist/components/ThinkRoutineLibrary.js +2 -2
  128. package/dist/components/ThinkRoutineRuns.js +4 -3
  129. package/dist/components/ThinkThreadPicker.js +5 -4
  130. package/dist/components/Toast.d.ts +12 -2
  131. package/dist/components/Toast.js +14 -4
  132. package/dist/components/ToggleGroup.d.ts +1 -1
  133. package/dist/components/ToggleGroup.js +54 -7
  134. package/dist/components/ToolInvocation.js +1 -1
  135. package/dist/components/Tooltip.d.ts +6 -4
  136. package/dist/components/Tooltip.js +11 -4
  137. package/dist/components/WebPreview.d.ts +13 -6
  138. package/dist/components/WebPreview.js +55 -50
  139. package/dist/components/Workspace.d.ts +1 -1
  140. package/dist/components/WorkspaceBrowser.d.ts +1 -1
  141. package/dist/components/WorkspaceBrowser.js +1 -1
  142. package/dist/components/WorkspaceExplorer.d.ts +3 -3
  143. package/dist/components/WorkspaceExplorer.js +1 -1
  144. package/dist/components/WorkspaceFile.d.ts +1 -1
  145. package/dist/components/WorkspaceFileView.d.ts +1 -1
  146. package/dist/components/WorkspaceFileView.js +1 -1
  147. package/dist/components/WorkspaceHeader.js +1 -1
  148. package/dist/components/icons.d.ts +2 -2
  149. package/dist/components/icons.js +2 -2
  150. package/dist/{copy-button-BrvQ7z4W.d.ts → copy-button-EBv_B9F6.d.ts} +2 -2
  151. package/dist/{copy-button-vo1paUSi.js → copy-button-TWq8nZhc.js} +8 -8
  152. package/dist/{icons-DyOM0EJs.js → icons-ua6f_GH3.js} +3 -2
  153. package/dist/{icons-DkRtZmvT.d.ts → icons-wP1yFUXF.d.ts} +6 -1
  154. package/dist/mcp-server-catalog-DycejaJ5.d.ts +1077 -0
  155. package/dist/styles/action-guide.css +128 -0
  156. package/dist/styles/activity-header.css +41 -10
  157. package/dist/styles/activity.css +26 -4
  158. package/dist/styles/agent-activity-preview-overlay.css +51 -12
  159. package/dist/styles/agent-activity-preview.css +23 -53
  160. package/dist/styles/agent-attention.css +2 -2
  161. package/dist/styles/agent-chat.css +291 -57
  162. package/dist/styles/agent-connection.css +8 -8
  163. package/dist/styles/alert-dialog.css +5 -20
  164. package/dist/styles/app-icon.css +122 -0
  165. package/dist/styles/app-top-bar.css +4 -5
  166. package/dist/styles/approval.css +1 -7
  167. package/dist/styles/artifact.css +4 -4
  168. package/dist/styles/avatar.css +13 -0
  169. package/dist/styles/base-ui-motion.css +1 -1
  170. package/dist/styles/base.css +94 -3
  171. package/dist/styles/browser-control-overlay.css +16 -7
  172. package/dist/styles/browser-live-view.css +5 -38
  173. package/dist/styles/browser-replay.css +2 -6
  174. package/dist/styles/browser-run-panel.css +4 -18
  175. package/dist/styles/button.css +17 -1
  176. package/dist/styles/card.css +4 -4
  177. package/dist/styles/chain-of-thought.css +0 -1
  178. package/dist/styles/chatgpt-sign-in-screen.css +7 -5
  179. package/dist/styles/checkbox-group.css +3 -3
  180. package/dist/styles/code-block.css +4 -4
  181. package/dist/styles/context-menu.css +1 -1
  182. package/dist/styles/conversation.css +7 -42
  183. package/dist/styles/description-list.css +4 -4
  184. package/dist/styles/dialog.css +22 -7
  185. package/dist/styles/empty-state.css +48 -0
  186. package/dist/styles/environment-variables.css +4 -4
  187. package/dist/styles/field.css +2 -2
  188. package/dist/styles/index.css +6 -0
  189. package/dist/styles/inline-citation.css +1 -1
  190. package/dist/styles/kbd.css +40 -0
  191. package/dist/styles/mcp-plugin-catalog.css +296 -0
  192. package/dist/styles/mcp-server-picker.css +0 -26
  193. package/dist/styles/media-preview-card.css +5 -3
  194. package/dist/styles/message-scroller.css +4 -4
  195. package/dist/styles/message.css +11 -6
  196. package/dist/styles/model-selector.css +5 -8
  197. package/dist/styles/popover.css +1 -1
  198. package/dist/styles/preview-card.css +1 -1
  199. package/dist/styles/prompt-input.css +44 -54
  200. package/dist/styles/queue.css +2 -2
  201. package/dist/styles/recipes.css +83 -9
  202. package/dist/styles/resizable-side-panel.css +1 -1
  203. package/dist/styles/responsive-sidebar-shell.css +19 -14
  204. package/dist/styles/scrollbars.css +32 -3
  205. package/dist/styles/search-field.css +9 -0
  206. package/dist/styles/sources.css +1 -1
  207. package/dist/styles/status-pill.css +39 -0
  208. package/dist/styles/stepper.css +2 -2
  209. package/dist/styles/streamdown.css +13 -12
  210. package/dist/styles/subagent-run.css +3 -3
  211. package/dist/styles/switch.css +1 -3
  212. package/dist/styles/tabs.css +1 -1
  213. package/dist/styles/task.css +1 -1
  214. package/dist/styles/terminal.css +2 -2
  215. package/dist/styles/test-results.css +1 -2
  216. package/dist/styles/textarea.css +1 -1
  217. package/dist/styles/theme-mode-control.css +1 -1
  218. package/dist/styles/think-execution-status.css +4 -23
  219. package/dist/styles/think-execution-workbench.css +2 -3
  220. package/dist/styles/think-full-app.css +24 -4
  221. package/dist/styles/think-routine-library.css +14 -16
  222. package/dist/styles/think-thread-picker.css +9 -26
  223. package/dist/styles/toast.css +2 -23
  224. package/dist/styles/toggle-group.css +76 -3
  225. package/dist/styles/tooltip.css +1 -2
  226. package/dist/styles/utilities.css +73 -0
  227. package/dist/styles/web-preview.css +5 -0
  228. package/dist/styles/workspace-explorer.css +4 -6
  229. package/dist/utils/favicon.d.ts +10 -0
  230. package/dist/utils/favicon.js +18 -0
  231. package/dist/utils/mcp-server-catalog.d.ts +2 -1078
  232. package/dist/utils/mcp-server-catalog.js +3 -11
  233. package/dist/utils/structured-code.d.ts +1 -1
  234. package/package.json +2 -2
@@ -26,9 +26,17 @@ import { Dialog as Dialog$1 } from "@base-ui/react/dialog";
26
26
  *
27
27
  * @see {@link https://base-ui.com/react/components/dialog | Base UI Dialog}
28
28
  */
29
- function DialogTrigger(props) {
29
+ function DialogTrigger({ render, className, ...props }) {
30
+ const classes = mergeBaseClassName(render == null ? buttonVariants({
31
+ variant: "normal",
32
+ color: "primary",
33
+ size: "sm",
34
+ className: "dialog__trigger"
35
+ }) : "dialog__trigger", className);
30
36
  return /* @__PURE__ */ jsx(Dialog$1.Trigger, {
31
37
  "data-slot": "dialog-trigger",
38
+ render,
39
+ className: classes,
32
40
  ...props
33
41
  });
34
42
  }
@@ -0,0 +1,46 @@
1
+ import * as React from "react";
2
+
3
+ //#region src/components/EmptyState.d.ts
4
+ interface EmptyStateProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"> {
5
+ /** Optional glyph above the title, in a quiet circular well. */
6
+ icon?: React.ReactNode;
7
+ /** What is absent, as a short noun phrase. */
8
+ title?: React.ReactNode;
9
+ /** One sentence on how to make it non-empty. */
10
+ description?: React.ReactNode;
11
+ }
12
+ /**
13
+ * Placeholder for a region that has nothing in it yet.
14
+ *
15
+ * There is no size prop. A one-line "No results" and a full centred block are
16
+ * the same component with different content — pass only `description` for the
17
+ * first and add `icon` and `title` for the second. Filling and centring a
18
+ * region is the container's job, not this component's; set
19
+ * `--sigvelo-recipe-empty-state-padding-block` where a roomier well is wanted.
20
+ *
21
+ * `children` replaces the whole stack, for the cases that need an action.
22
+ *
23
+ * @example
24
+ * ```tsx
25
+ * <EmptyState description="No runs yet." />
26
+ *
27
+ * <EmptyState
28
+ * icon={<MessageIcon />}
29
+ * title="Start a conversation"
30
+ * description="Ask the agent to inspect, plan, or build."
31
+ * />
32
+ * ```
33
+ */
34
+ declare function EmptyState({
35
+ className,
36
+ icon,
37
+ title,
38
+ description,
39
+ children,
40
+ ref,
41
+ ...props
42
+ }: EmptyStateProps & {
43
+ ref?: React.Ref<HTMLDivElement>;
44
+ }): React.JSX.Element;
45
+ //#endregion
46
+ export { EmptyState, EmptyStateProps };
@@ -0,0 +1,50 @@
1
+ import { t as cx } from "../class-names-BiMDVpUo.js";
2
+ import "react";
3
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
4
+ //#region src/components/EmptyState.tsx
5
+ /**
6
+ * Placeholder for a region that has nothing in it yet.
7
+ *
8
+ * There is no size prop. A one-line "No results" and a full centred block are
9
+ * the same component with different content — pass only `description` for the
10
+ * first and add `icon` and `title` for the second. Filling and centring a
11
+ * region is the container's job, not this component's; set
12
+ * `--sigvelo-recipe-empty-state-padding-block` where a roomier well is wanted.
13
+ *
14
+ * `children` replaces the whole stack, for the cases that need an action.
15
+ *
16
+ * @example
17
+ * ```tsx
18
+ * <EmptyState description="No runs yet." />
19
+ *
20
+ * <EmptyState
21
+ * icon={<MessageIcon />}
22
+ * title="Start a conversation"
23
+ * description="Ask the agent to inspect, plan, or build."
24
+ * />
25
+ * ```
26
+ */
27
+ function EmptyState({ className, icon, title, description, children, ref, ...props }) {
28
+ return /* @__PURE__ */ jsx("div", {
29
+ ref,
30
+ className: cx("empty-state", className),
31
+ ...props,
32
+ children: children ?? /* @__PURE__ */ jsxs(Fragment, { children: [
33
+ icon ? /* @__PURE__ */ jsx("span", {
34
+ className: "empty-state__icon",
35
+ "aria-hidden": "true",
36
+ children: icon
37
+ }) : null,
38
+ title ? /* @__PURE__ */ jsx("div", {
39
+ className: "empty-state__title",
40
+ children: title
41
+ }) : null,
42
+ description ? /* @__PURE__ */ jsx("div", {
43
+ className: "empty-state__description",
44
+ children: description
45
+ }) : null
46
+ ] })
47
+ });
48
+ }
49
+ //#endregion
50
+ export { EmptyState };
@@ -1,4 +1,4 @@
1
- import { t as CopyButtonProps } from "../copy-button-BrvQ7z4W.js";
1
+ import { t as CopyButtonProps } from "../copy-button-EBv_B9F6.js";
2
2
  import * as React from "react";
3
3
 
4
4
  //#region src/components/EnvironmentVariables.d.ts
@@ -1,6 +1,6 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
- import { b as EyeIcon, x as EyeOffIcon } from "../icons-DyOM0EJs.js";
3
- import { t as CopyButton } from "../copy-button-vo1paUSi.js";
2
+ import { S as EyeOffIcon, x as EyeIcon } from "../icons-ua6f_GH3.js";
3
+ import { t as CopyButton } from "../copy-button-TWq8nZhc.js";
4
4
  import { Badge } from "./Badge.js";
5
5
  import { Switch } from "./Switch.js";
6
6
  import * as React from "react";
@@ -1,2 +1,2 @@
1
- import { a as FileTreeIcon, i as FileTreeFolder, n as FileTreeActions, o as FileTreeName, r as FileTreeFile, t as FileTree } from "../FileTree-CdgfccsM.js";
1
+ import { a as FileTreeIcon, i as FileTreeFolder, n as FileTreeActions, o as FileTreeName, r as FileTreeFile, t as FileTree } from "../FileTree-DW60q1w7.js";
2
2
  export { FileTree, FileTreeActions, FileTreeFile, FileTreeFolder, FileTreeIcon, FileTreeName };
@@ -1,32 +1,2 @@
1
- import { i as ButtonSize, r as ButtonProps } from "../Button-yRInko9u.js";
2
- import * as React from "react";
3
-
4
- //#region src/components/IconButton.d.ts
5
- interface IconButtonProps extends Omit<ButtonProps, "aria-label" | "children" | "size"> {
6
- /** Decorative icon rendered inside the square button. */
7
- children: React.ReactNode;
8
- /** Accessible name and default tooltip text for the icon-only control. */
9
- label: string;
10
- /** Tooltip content when it should differ from the accessible name. */
11
- tooltip?: React.ReactNode;
12
- /** Preferred side for the tooltip. */
13
- tooltipSide?: "top" | "right" | "bottom" | "left";
14
- /** Square button size. */
15
- size?: ButtonSize;
16
- }
17
- /**
18
- * A square, icon-only button with a required accessible name and matching
19
- * tooltip. Use text buttons for actions whose consequence an icon cannot make
20
- * clear on its own.
21
- */
22
- declare function IconButton({
23
- children,
24
- label,
25
- size,
26
- tooltip,
27
- tooltipSide,
28
- type,
29
- ...props
30
- }: IconButtonProps): React.JSX.Element;
31
- //#endregion
1
+ import { n as IconButtonProps, t as IconButton } from "../IconButton-CFKhu6OR.js";
32
2
  export { IconButton, IconButtonProps };
@@ -8,9 +8,10 @@ import { jsx, jsxs } from "react/jsx-runtime";
8
8
  * tooltip. Use text buttons for actions whose consequence an icon cannot make
9
9
  * clear on its own.
10
10
  */
11
- function IconButton({ children, label, size = "sm", tooltip = label, tooltipSide = "top", type = "button", ...props }) {
11
+ function IconButton({ children, label, size = "sm", tooltip = label, tooltipSide = "top", type = "button", ref, ...props }) {
12
12
  return /* @__PURE__ */ jsxs(Tooltip.Root, { children: [/* @__PURE__ */ jsx(Tooltip.Trigger, {
13
13
  render: /* @__PURE__ */ jsx(Button, {
14
+ ref,
14
15
  type,
15
16
  size,
16
17
  iconOnly: true,
@@ -0,0 +1,32 @@
1
+ import { useRender } from "@base-ui/react/use-render";
2
+
3
+ //#region src/components/Kbd.d.ts
4
+ type KbdRenderState = {
5
+ slot: "kbd";
6
+ };
7
+ interface KbdProps extends useRender.ComponentProps<"kbd", KbdRenderState> {}
8
+ /**
9
+ * A keyboard key or chord, rendered as a quiet inline chip.
10
+ *
11
+ * The chip draws itself from `currentColor`, so it reads correctly on a page
12
+ * surface, inside a menu row, and on the inverted surface of a tooltip without
13
+ * a variant prop deciding which. Put one key per element; a chord is several
14
+ * elements with separators between them, so a screen reader announces the keys
15
+ * rather than the punctuation.
16
+ *
17
+ * @example
18
+ * ```tsx
19
+ * <Kbd>⏎</Kbd>
20
+ * <span>
21
+ * <Kbd>⌘</Kbd> <Kbd>K</Kbd>
22
+ * </span>
23
+ * ```
24
+ */
25
+ declare function Kbd({
26
+ className,
27
+ render,
28
+ ref,
29
+ ...props
30
+ }: KbdProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
31
+ //#endregion
32
+ export { Kbd, KbdProps };
@@ -0,0 +1,34 @@
1
+ import { t as cx } from "../class-names-BiMDVpUo.js";
2
+ import { useRender } from "@base-ui/react/use-render";
3
+ //#region src/components/Kbd.tsx
4
+ /**
5
+ * A keyboard key or chord, rendered as a quiet inline chip.
6
+ *
7
+ * The chip draws itself from `currentColor`, so it reads correctly on a page
8
+ * surface, inside a menu row, and on the inverted surface of a tooltip without
9
+ * a variant prop deciding which. Put one key per element; a chord is several
10
+ * elements with separators between them, so a screen reader announces the keys
11
+ * rather than the punctuation.
12
+ *
13
+ * @example
14
+ * ```tsx
15
+ * <Kbd>⏎</Kbd>
16
+ * <span>
17
+ * <Kbd>⌘</Kbd> <Kbd>K</Kbd>
18
+ * </span>
19
+ * ```
20
+ */
21
+ function Kbd({ className, render, ref, ...props }) {
22
+ return useRender({
23
+ defaultTagName: "kbd",
24
+ render,
25
+ ref,
26
+ props: {
27
+ ...props,
28
+ className: cx("kbd", className)
29
+ },
30
+ state: { slot: "kbd" }
31
+ });
32
+ }
33
+ //#endregion
34
+ export { Kbd };
@@ -1,4 +1,4 @@
1
- import { McpServerCard } from "../utils/mcp-server-catalog.js";
1
+ import { o as McpServerCard } from "../mcp-server-catalog-DycejaJ5.js";
2
2
  import * as React from "react";
3
3
  import { DynamicToolUIPart, ToolUIPart } from "ai";
4
4
  import { MCPServersState } from "agents";
@@ -1,6 +1,6 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
- import { A as McpIcon, K as SpinnerIcon, Q as WarningIcon, u as CheckIcon } from "../icons-DyOM0EJs.js";
3
2
  import { Button } from "./Button.js";
3
+ import { $ as WarningIcon, d as CheckIcon, j as McpIcon, q as SpinnerIcon } from "../icons-ua6f_GH3.js";
4
4
  import { AgentAttention, AgentAttentionActions, AgentAttentionBody, AgentAttentionHeader } from "./AgentAttention.js";
5
5
  import { getMcpServerEntry, getMcpServerRuntimeState } from "../utils/mcp-server-catalog.js";
6
6
  import { DescriptionList } from "./DescriptionList.js";
@@ -0,0 +1,86 @@
1
+ import { o as McpServerCard } from "../mcp-server-catalog-DycejaJ5.js";
2
+ import { l as DialogProps } from "../Dialog-BD8NBKaE.js";
3
+ import * as React from "react";
4
+ import { MCPServersState } from "agents";
5
+
6
+ //#region src/components/McpPluginCatalog.d.ts
7
+ /** Optional plugin-specific copy layered over the canonical MCP server card. */
8
+ interface McpPluginDetails {
9
+ developerName?: string;
10
+ marketplaceName?: string;
11
+ longDescription?: string;
12
+ capabilities?: readonly string[];
13
+ skills?: readonly string[];
14
+ }
15
+ interface McpPluginCatalogProps extends Omit<React.HTMLAttributes<HTMLElement>, "onSelect"> {
16
+ /** Canonical connector cards. The directory does not create a second plugin registry. */
17
+ servers: readonly McpServerCard[];
18
+ /** Upstream Agents MCP state used to project connected and recovery states. */
19
+ mcp?: MCPServersState;
20
+ /** Optional plugin metadata keyed by the canonical server ID. */
21
+ detailsByServerId?: Readonly<Record<string, McpPluginDetails | undefined>>;
22
+ /** Server IDs promoted into the Featured section, in display order. */
23
+ featuredServerIds?: readonly string[];
24
+ /** Host product name paired with the plugin in the connection dialog. */
25
+ brandName?: string;
26
+ /** Host product mark paired with the plugin in the connection dialog. */
27
+ brandLogo?: React.ReactNode;
28
+ /** Product-authored trust and data-sharing copy. Pass null to omit it. */
29
+ disclosure?: React.ReactNode;
30
+ /** Starts or recovers the existing MCP connection path. */
31
+ onConnect?: (server: McpServerCard) => void | Promise<void>;
32
+ /** Removes the exact upstream MCP entry. */
33
+ onDisconnect?: (serverId: string) => void | Promise<void>;
34
+ heading?: React.ReactNode;
35
+ description?: React.ReactNode;
36
+ searchLabel?: string;
37
+ emptyMessage?: React.ReactNode;
38
+ }
39
+ interface McpPluginDetailsDialogProps {
40
+ /** Selected canonical server card. Passing null closes the dialog. */
41
+ server: McpServerCard | null;
42
+ details?: McpPluginDetails;
43
+ mcp?: MCPServersState;
44
+ brandName?: string;
45
+ brandLogo?: React.ReactNode;
46
+ disclosure?: React.ReactNode;
47
+ onConnect?: (server: McpServerCard) => void | Promise<void>;
48
+ onDisconnect?: (serverId: string) => void | Promise<void>;
49
+ onOpenChange: NonNullable<DialogProps["onOpenChange"]>;
50
+ }
51
+ /**
52
+ * Searchable plugin directory backed by the same MCP cards and live Agents
53
+ * state as {@link McpServerPicker}. Selecting a row opens the shared details
54
+ * dialog; connecting still delegates to the host's existing MCP/OAuth path.
55
+ */
56
+ declare function McpPluginCatalog({
57
+ servers,
58
+ mcp,
59
+ detailsByServerId,
60
+ featuredServerIds,
61
+ brandName,
62
+ brandLogo,
63
+ disclosure,
64
+ onConnect,
65
+ onDisconnect,
66
+ heading,
67
+ description,
68
+ searchLabel,
69
+ emptyMessage,
70
+ className,
71
+ ...props
72
+ }: McpPluginCatalogProps): React.JSX.Element;
73
+ /** Reference-derived plugin detail surface without a parallel install state. */
74
+ declare function McpPluginDetailsDialog({
75
+ server,
76
+ details,
77
+ mcp,
78
+ brandName,
79
+ brandLogo,
80
+ disclosure,
81
+ onConnect,
82
+ onDisconnect,
83
+ onOpenChange
84
+ }: McpPluginDetailsDialogProps): React.JSX.Element;
85
+ //#endregion
86
+ export { McpPluginCatalog, McpPluginCatalogProps, McpPluginDetails, McpPluginDetailsDialog, McpPluginDetailsDialogProps };