@mcp-b/react-components 0.50.1 → 0.51.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 (28) hide show
  1. package/dist/components/agents-sdk/AgentChat.js +2 -2
  2. package/dist/components/agents-sdk/AgentEvent.js +2 -2
  3. package/dist/components/agents-sdk/BrowserLiveScreen.d.ts +8 -7
  4. package/dist/components/agents-sdk/BrowserLiveScreen.js +16 -21
  5. package/dist/components/agents-sdk/EmployeeChrome.js +3 -3
  6. package/dist/components/agents-sdk/EmployeeSchedules.js +2 -2
  7. package/dist/components/agents-sdk/EmployeeStartScreen.js +2 -2
  8. package/dist/components/agents-sdk/ManagerAccountActions.js +1 -1
  9. package/dist/components/agents-sdk/ManagerOffice.js +1 -1
  10. package/dist/components/agents-sdk/ManagerOfficeScreens.js +1 -1
  11. package/dist/components/agents-sdk/McpPluginCatalog.js +1 -1
  12. package/dist/components/agents-sdk/ModelEndpointDialog.js +1 -1
  13. package/dist/components/agents-sdk/ThinkChatActivity.js +2 -2
  14. package/dist/components/agents-sdk/ThinkRoutineActions.js +1 -1
  15. package/dist/components/agents-sdk/ThinkRoutineForm.js +2 -2
  16. package/dist/components/agents-sdk/ThinkThreadPicker.js +1 -1
  17. package/dist/components/agents-sdk/WorkspaceCorrespondence.js +1 -1
  18. package/dist/components/agents-sdk/WorkspaceExecution.js +2 -2
  19. package/dist/components/agents-sdk/WorkspaceProject.js +1 -1
  20. package/dist/components/agents-sdk/WorkspaceUserScript.js +1 -1
  21. package/dist/components/foundations/ToggleGroup.d.ts +1 -1
  22. package/dist/components/foundations/ToggleGroup.js +1 -1
  23. package/dist/components/general-purpose/PricingUsageCalculator.js +1 -1
  24. package/dist/components/general-purpose/ThemeModeControl.js +1 -1
  25. package/dist/components/nanites/AgentToolDetail.js +4 -4
  26. package/package.json +2 -2
  27. package/dist/{ManagerOffice-CqOggftJ.js → ManagerOffice-5pEFpoV3.js} +1 -1
  28. package/dist/{workspace-assets-C3QT6UlQ.js → workspace-assets-wW_lQLYK.js} +1 -1
@@ -8,11 +8,11 @@ import { AgentMessageParts } from "../ai-sdk/AgentMessageParts.js";
8
8
  import { Marker, MarkerContent } from "../foundations/Marker.js";
9
9
  import { VirtualMessageScroller } from "../ai-sdk/MessageScrollerVirtual.js";
10
10
  import { Queue, QueueItem, QueueItemAction, QueueItemActions, QueueItemContent, QueueItemIndicator, QueueList } from "../ai-sdk/Queue.js";
11
+ import { EmptyState } from "../foundations/EmptyState.js";
12
+ import { TransitionSurface } from "../foundations/TransitionSurface.js";
11
13
  import { AgentEventRow, getAgentEvent } from "./AgentEvent.js";
12
14
  import { AgentChatQueueProvider, useOptionalAgentChatQueue } from "./AgentChatQueue.js";
13
15
  import { PromptInputApproval, getApprovalStateKey, getPendingToolApprovals } from "./PromptInputApproval.js";
14
- import { EmptyState } from "../foundations/EmptyState.js";
15
- import { TransitionSurface } from "../foundations/TransitionSurface.js";
16
16
  import * as React from "react";
17
17
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
18
18
  import { useRender } from "@base-ui/react/use-render";
@@ -2,9 +2,9 @@ import { t as cx } from "../../class-names-BiMDVpUo.js";
2
2
  import { Activity, ActivityContent, ActivityText, ActivityTrigger } from "../ai-sdk/Activity.js";
3
3
  import { r as firstLine } from "../../format-COCyV98Z.js";
4
4
  import { MessageResponse } from "../ai-sdk/Message.js";
5
- import { useOptionalAgentToolRuns } from "./AgentToolRunsContext.js";
6
- import { getSubagentRunName } from "./SubagentRunIndicator.js";
7
5
  import { NaniteMark } from "../nanites/NaniteScene.js";
6
+ import { getSubagentRunName } from "./SubagentRunIndicator.js";
7
+ import { useOptionalAgentToolRuns } from "./AgentToolRunsContext.js";
8
8
  import "react";
9
9
  import { jsx, jsxs } from "react/jsx-runtime";
10
10
  import { isTextUIPart } from "ai";
@@ -14,6 +14,7 @@ type BrowserLiveScreenSignal = {
14
14
  type BrowserLiveScreenSignalPayload = {
15
15
  kind: "offer";
16
16
  sdp: string;
17
+ tabId: number;
17
18
  } | {
18
19
  kind: "answer";
19
20
  sdp: string;
@@ -70,9 +71,6 @@ type BrowserLiveScreenInput = {
70
71
  events: BrowserLiveScreenInputEvent[];
71
72
  };
72
73
  type BrowserLiveScreenCommand = {
73
- kind: "selectTab";
74
- tabId: number;
75
- } | {
76
74
  kind: "navigate";
77
75
  tabId: number;
78
76
  action: "back" | "reload";
@@ -111,14 +109,16 @@ interface BrowserLiveScreenProps {
111
109
  * from state, because Chrome's screencast carries only page pixels.
112
110
  */
113
111
  tabs?: readonly BrowserLiveScreenTab[];
114
- /** Claimed tab the host wants visible when the data channel becomes usable. */
115
- requestedTabId?: number;
112
+ /** The host owns this viewer's tab selection, typically in its route. */
113
+ tabId?: number;
114
+ /** Requests a new tab selection; the host commits it through `tabId`. */
115
+ onTabChange(this: void, tabId: number): void;
116
116
  }
117
117
  /**
118
118
  * A complete interactive viewer for an employee's claimed browser tabs.
119
119
  *
120
120
  * The host supplies only signaling transport, ICE configuration, and claimed
121
- * tab summaries. This component owns the peer connection, remote-input
121
+ * tab summaries and selection. This component owns the peer connection, remote-input
122
122
  * mapping, reconnect lifecycle, synthesized browser chrome, and cleanup.
123
123
  */
124
124
  declare function BrowserLiveScreen({
@@ -129,7 +129,8 @@ declare function BrowserLiveScreen({
129
129
  label,
130
130
  controlLabel,
131
131
  tabs,
132
- requestedTabId
132
+ tabId: selectedTabId,
133
+ onTabChange
133
134
  }: BrowserLiveScreenProps): import("react").JSX.Element;
134
135
  //#endregion
135
136
  export { BrowserLiveScreen, BrowserLiveScreenCommand, BrowserLiveScreenFrameMetadata, BrowserLiveScreenInput, BrowserLiveScreenInputEvent, BrowserLiveScreenProps, BrowserLiveScreenProtocol, BrowserLiveScreenSignal, BrowserLiveScreenSignalPayload, BrowserLiveScreenStatus, BrowserLiveScreenTab };
@@ -11,10 +11,10 @@ const BROWSER_LIVE_SCREEN_NEGOTIATION_TIMEOUT_MS = 1e4;
11
11
  * A complete interactive viewer for an employee's claimed browser tabs.
12
12
  *
13
13
  * The host supplies only signaling transport, ICE configuration, and claimed
14
- * tab summaries. This component owns the peer connection, remote-input
14
+ * tab summaries and selection. This component owns the peer connection, remote-input
15
15
  * mapping, reconnect lifecycle, synthesized browser chrome, and cleanup.
16
16
  */
17
- function BrowserLiveScreen({ sendSignal: sendHostSignal, subscribeSignals, protocol, getIceServers, label = "Employee browser", controlLabel = "Control employee browser", tabs = [], requestedTabId }) {
17
+ function BrowserLiveScreen({ sendSignal: sendHostSignal, subscribeSignals, protocol, getIceServers, label = "Employee browser", controlLabel = "Control employee browser", tabs = [], tabId: selectedTabId, onTabChange }) {
18
18
  const video = useRef(null);
19
19
  const input = useRef(null);
20
20
  const [inputElement, setInputElement] = useState(null);
@@ -59,13 +59,7 @@ function BrowserLiveScreen({ sendSignal: sendHostSignal, subscribeSignals, proto
59
59
  useLayoutEffect(() => {
60
60
  currentProtocol.current = protocol;
61
61
  }, [protocol]);
62
- const selectRequestedTab = useEffectEvent((data) => {
63
- if (requestedTabId === void 0 || data?.readyState !== "open") return;
64
- data.send(currentProtocol.current.serializeCommand({
65
- kind: "selectTab",
66
- tabId: requestedTabId
67
- }));
68
- });
62
+ const captureTabId = tabs.some((tab) => tab.tabId === selectedTabId) ? selectedTabId : void 0;
69
63
  const dataChannelLabel = protocol.dataChannelLabel;
70
64
  const handleWheel = useEffectEvent((event) => {
71
65
  event.preventDefault();
@@ -107,6 +101,13 @@ function BrowserLiveScreen({ sendSignal: sendHostSignal, subscribeSignals, proto
107
101
  }, [inputElement]);
108
102
  const [streamed, setStreamed] = useState(null);
109
103
  useEffect(() => {
104
+ if (captureTabId === void 0) {
105
+ setPhase("idle");
106
+ setStreamed(null);
107
+ return;
108
+ }
109
+ const tabId = captureTabId;
110
+ setPhase("connecting");
110
111
  let disposed = false;
111
112
  let connection;
112
113
  let viewerId = "";
@@ -220,8 +221,6 @@ function BrowserLiveScreen({ sendSignal: sendHostSignal, subscribeSignals, proto
220
221
  };
221
222
  const dataChannel = peer.createDataChannel(dataChannelLabel);
222
223
  channel.current = dataChannel;
223
- dataChannel.onopen = () => selectRequestedTab(dataChannel);
224
- selectRequestedTab(dataChannel);
225
224
  dataChannel.onmessage = (event) => {
226
225
  if (disposed || peer !== connection || channel.current !== dataChannel) return;
227
226
  const status = parseStatus(event.data);
@@ -236,6 +235,7 @@ function BrowserLiveScreen({ sendSignal: sendHostSignal, subscribeSignals, proto
236
235
  return;
237
236
  }
238
237
  if (status.kind === "streaming") {
238
+ if (status.tabId !== tabId) return;
239
239
  const previous = geometry.current;
240
240
  if (previous?.tabId !== status.tabId || previous.streamGeneration !== status.streamGeneration) cancelPointerState();
241
241
  geometry.current = status;
@@ -253,7 +253,8 @@ function BrowserLiveScreen({ sendSignal: sendHostSignal, subscribeSignals, proto
253
253
  if (disposed || peer !== connection) return;
254
254
  await sendSignal(currentViewerId, {
255
255
  kind: "offer",
256
- sdp: offer.sdp ?? ""
256
+ sdp: offer.sdp ?? "",
257
+ tabId
257
258
  });
258
259
  }
259
260
  function restart() {
@@ -270,10 +271,7 @@ function BrowserLiveScreen({ sendSignal: sendHostSignal, subscribeSignals, proto
270
271
  unsubscribe();
271
272
  closeCurrent(true);
272
273
  };
273
- }, [dataChannelLabel]);
274
- useEffect(() => {
275
- selectRequestedTab(channel.current);
276
- }, [requestedTabId]);
274
+ }, [dataChannelLabel, captureTabId]);
277
275
  function sendInput(events) {
278
276
  const open = channel.current;
279
277
  const status = geometry.current;
@@ -628,11 +626,8 @@ function BrowserLiveScreen({ sendSignal: sendHostSignal, subscribeSignals, proto
628
626
  title: tab.title || tab.url || `Tab ${String(tab.tabId)}`,
629
627
  ...tab.url === void 0 ? {} : { url: tab.url }
630
628
  })),
631
- selectedTabId: streamed ? String(streamed.tabId) : null,
632
- onSelectTab: (id) => sendCommand({
633
- kind: "selectTab",
634
- tabId: Number(id)
635
- }),
629
+ selectedTabId: captureTabId === void 0 ? null : String(captureTabId),
630
+ onSelectTab: (id) => onTabChange(Number(id)),
636
631
  url: displayUrl,
637
632
  onOpenUrl: (next) => {
638
633
  if (!streamed) return;
@@ -9,15 +9,15 @@ import { AgentChatStartScreen, AgentChatStartScreenComposer, AgentChatStartScree
9
9
  import { DescriptionList } from "../foundations/DescriptionList.js";
10
10
  import { Avatar } from "../foundations/Avatar.js";
11
11
  import { ChatGptSignInScreen } from "../extension/ChatGptSignInScreen.js";
12
- import { SubagentRunLabel, getSubagentRunName } from "./SubagentRunIndicator.js";
13
12
  import { EmptyState } from "../foundations/EmptyState.js";
14
- import { AgentChat } from "./AgentChat.js";
15
- import "../foundations/icons.js";
16
13
  import { Switch } from "../foundations/Switch.js";
17
14
  import { useTheme } from "../foundations/ThemeProvider.js";
15
+ import "../foundations/icons.js";
18
16
  import { ActionGuide, ActionGuideAction, ActionGuideList, ActionGuideSection } from "../general-purpose/ActionGuide.js";
19
17
  import { AppTopBar } from "../general-purpose/AppTopBar.js";
20
18
  import { ResponsiveSidebarShell, useResponsiveSidebarShell } from "../general-purpose/ResponsiveSidebarShell.js";
19
+ import { SubagentRunLabel, getSubagentRunName } from "./SubagentRunIndicator.js";
20
+ import { AgentChat } from "./AgentChat.js";
21
21
  import { McpServerIcon } from "./McpServerIcon.js";
22
22
  import { ThinkThreadPicker } from "./ThinkThreadPicker.js";
23
23
  import * as React from "react";
@@ -1,9 +1,9 @@
1
1
  import { R as PencilIcon, r as ArrowLeftIcon } from "../../icons-CeGfXO21.js";
2
+ import { LinkButton } from "../foundations/LinkButton.js";
2
3
  import "../foundations/icons.js";
3
- import { StatusScreen } from "../general-purpose/StatusScreen.js";
4
4
  import { AppTopBar } from "../general-purpose/AppTopBar.js";
5
5
  import { ResponsiveSidebarShell } from "../general-purpose/ResponsiveSidebarShell.js";
6
- import { LinkButton } from "../foundations/LinkButton.js";
6
+ import { StatusScreen } from "../general-purpose/StatusScreen.js";
7
7
  import { EmployeeChrome } from "./EmployeeChrome.js";
8
8
  import { getThinkExecutionRunId } from "./ThinkExecutionRun.js";
9
9
  import { ThinkRoutineActions, useThinkRoutineActions } from "./ThinkRoutineActions.js";
@@ -1,11 +1,11 @@
1
1
  import { C as FolderIcon, G as SlackIcon, I as PaperclipIcon, c as BoxIcon, g as DiscordIcon } from "../../icons-CeGfXO21.js";
2
2
  import { Button } from "../foundations/Button.js";
3
3
  import { Menu } from "../foundations/Menu.js";
4
+ import { AppIcon } from "../foundations/AppIcon.js";
4
5
  import "../foundations/icons.js";
5
6
  import { ActionGuideAction } from "../general-purpose/ActionGuide.js";
6
- import { AppIcon } from "../foundations/AppIcon.js";
7
- import { EmployeeChrome } from "./EmployeeChrome.js";
8
7
  import { t as SetupChecklistAction } from "../../SetupChecklist-O6qmgwz4.js";
8
+ import { EmployeeChrome } from "./EmployeeChrome.js";
9
9
  import { McpServerPickerAction, McpServerPickerItems } from "./McpServerPicker.js";
10
10
  import { WorkspaceMountManager } from "./WorkspaceMountManager.js";
11
11
  import "react";
@@ -2,9 +2,9 @@ import { B as PlusIcon, y as EllipsisIcon } from "../../icons-CeGfXO21.js";
2
2
  import { Menu } from "../foundations/Menu.js";
3
3
  import { IconButton } from "../foundations/IconButton.js";
4
4
  import { a as formatErrorMessage } from "../../format-COCyV98Z.js";
5
+ import { Toast } from "../foundations/Toast.js";
5
6
  import "../foundations/icons.js";
6
7
  import { AppTopBar } from "../general-purpose/AppTopBar.js";
7
- import { Toast } from "../foundations/Toast.js";
8
8
  import "react";
9
9
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
10
10
  //#region src/components/agents-sdk/ManagerAccountActions.tsx
@@ -1,3 +1,3 @@
1
1
  import "../foundations/icons.js";
2
- import { n as ManagerOfficeSidebar, r as ManagerOfficeSidebarAlert, t as ManagerOffice } from "../../ManagerOffice-CqOggftJ.js";
2
+ import { n as ManagerOfficeSidebar, r as ManagerOfficeSidebarAlert, t as ManagerOffice } from "../../ManagerOffice-5pEFpoV3.js";
3
3
  export { ManagerOffice, ManagerOfficeSidebar, ManagerOfficeSidebarAlert };
@@ -5,7 +5,7 @@ import { AppTopBar } from "../general-purpose/AppTopBar.js";
5
5
  import { ResponsiveSidebarShell } from "../general-purpose/ResponsiveSidebarShell.js";
6
6
  import { ThinkThreadPicker } from "./ThinkThreadPicker.js";
7
7
  import { EmployeeChrome } from "./EmployeeChrome.js";
8
- import { n as ManagerOfficeSidebar, r as ManagerOfficeSidebarAlert, t as ManagerOffice } from "../../ManagerOffice-CqOggftJ.js";
8
+ import { n as ManagerOfficeSidebar, r as ManagerOfficeSidebarAlert, t as ManagerOffice } from "../../ManagerOffice-5pEFpoV3.js";
9
9
  import "react";
10
10
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
11
11
  //#region src/components/agents-sdk/ManagerOfficeScreens.tsx
@@ -8,8 +8,8 @@ import { Dialog } from "../foundations/Dialog.js";
8
8
  import { a as formatErrorMessage } from "../../format-COCyV98Z.js";
9
9
  import { Separator } from "../foundations/Separator.js";
10
10
  import { AppIcon } from "../foundations/AppIcon.js";
11
- import { McpServerIcon } from "./McpServerIcon.js";
12
11
  import { SearchField } from "../foundations/SearchField.js";
12
+ import { McpServerIcon } from "./McpServerIcon.js";
13
13
  import { t as getMcpServerProjection } from "../../mcp-server-mAErsxHU.js";
14
14
  import { McpServerSetupDialog } from "./McpServerPicker.js";
15
15
  import * as React from "react";
@@ -1,6 +1,6 @@
1
1
  import { Field } from "../foundations/Field.js";
2
- import { SettingsFormDialog } from "../general-purpose/SettingsFormDialog.js";
3
2
  import { Checkbox } from "../foundations/Checkbox.js";
3
+ import { SettingsFormDialog } from "../general-purpose/SettingsFormDialog.js";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
5
5
  //#region src/components/agents-sdk/ModelEndpointDialog.tsx
6
6
  /** Shared connection form; the host owns validation, credentials and persistence. */
@@ -3,9 +3,9 @@ import { Activity, ActivityContent, ActivityItem, ActivityItemGroup, ActivityTex
3
3
  import { Button } from "../foundations/Button.js";
4
4
  import { MessageResponse } from "../ai-sdk/Message.js";
5
5
  import { t as NavigationLink } from "../../navigation-link-kqMa81v5.js";
6
- import { AgentActivityFavicon, AgentActivityIcon } from "./AgentActivity.js";
7
- import { useOptionalAgentToolRuns } from "./AgentToolRunsContext.js";
8
6
  import { getSubagentRunName } from "./SubagentRunIndicator.js";
7
+ import { useOptionalAgentToolRuns } from "./AgentToolRunsContext.js";
8
+ import { AgentActivityFavicon, AgentActivityIcon } from "./AgentActivity.js";
9
9
  import { useOptionalThinkChatLive } from "./ThinkChatContext.js";
10
10
  import { isBrowserToolPart, isExecuteToolPart, isFetchToolPart, isPartWorking, isSessionContextToolPart, isSkillToolPart, isThinkChatActivityPart, isWorkspaceToolPart } from "./ThinkChatToolParts.js";
11
11
  import { ThinkChatBrowserPanel, ThinkChatExecutePanel, ThinkChatFetchPanel, ThinkChatSessionContextPanel, ThinkChatSkillPanel, ThinkChatWorkspacePanel } from "./ThinkChatToolPanels.js";
@@ -2,8 +2,8 @@ import { K as SpinnerIcon, Q as TrashIcon, z as PlayIcon } from "../../icons-CeG
2
2
  import { Button } from "../foundations/Button.js";
3
3
  import { a as formatErrorMessage } from "../../format-COCyV98Z.js";
4
4
  import { n as mergeRefs } from "../../merge-refs-DF_7w2x_.js";
5
- import { AppTopBar } from "../general-purpose/AppTopBar.js";
6
5
  import { AlertDialog } from "../foundations/AlertDialog.js";
6
+ import { AppTopBar } from "../general-purpose/AppTopBar.js";
7
7
  import * as React from "react";
8
8
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
9
9
  import { mergeProps } from "@base-ui/react/merge-props";
@@ -6,12 +6,12 @@ import { Form } from "../foundations/Form.js";
6
6
  import { Textarea } from "../foundations/Textarea.js";
7
7
  import { a as formatErrorMessage } from "../../format-COCyV98Z.js";
8
8
  import { Select } from "../foundations/Select.js";
9
- import { AppTopBar } from "../general-purpose/AppTopBar.js";
10
- import { Fieldset } from "../foundations/Fieldset.js";
11
9
  import { Checkbox } from "../foundations/Checkbox.js";
12
10
  import { CheckboxGroup } from "../foundations/CheckboxGroup.js";
13
11
  import { Combobox } from "../foundations/Combobox.js";
12
+ import { Fieldset } from "../foundations/Fieldset.js";
14
13
  import { NumberField } from "../foundations/NumberField.js";
14
+ import { AppTopBar } from "../general-purpose/AppTopBar.js";
15
15
  import * as React from "react";
16
16
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
17
17
  //#region src/components/agents-sdk/ThinkRoutineForm.tsx
@@ -4,8 +4,8 @@ import { Button, buttonVariants } from "../foundations/Button.js";
4
4
  import { a as formatErrorMessage } from "../../format-COCyV98Z.js";
5
5
  import { n as isPlainPrimaryLinkActivation, t as NavigationLink } from "../../navigation-link-kqMa81v5.js";
6
6
  import { ScrollArea } from "../foundations/ScrollArea.js";
7
- import { EmptyState } from "../foundations/EmptyState.js";
8
7
  import { AlertDialog } from "../foundations/AlertDialog.js";
8
+ import { EmptyState } from "../foundations/EmptyState.js";
9
9
  import { LinkButton } from "../foundations/LinkButton.js";
10
10
  import { SearchField } from "../foundations/SearchField.js";
11
11
  import * as React from "react";
@@ -9,7 +9,7 @@ import { Card, CardAction, CardContent, CardFooter, CardHeader, CardTitle } from
9
9
  import { DescriptionList } from "../foundations/DescriptionList.js";
10
10
  import { Input } from "../foundations/Input.js";
11
11
  import { EmailMessageCard, SlackMessageCard } from "../ai-sdk/ConnectedAppCards.js";
12
- import { i as WorkspaceDeleteControl, r as httpUrl, t as FaviconMark } from "../../workspace-assets-C3QT6UlQ.js";
12
+ import { i as WorkspaceDeleteControl, r as httpUrl, t as FaviconMark } from "../../workspace-assets-wW_lQLYK.js";
13
13
  import * as React from "react";
14
14
  import { createElement } from "react";
15
15
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -8,9 +8,9 @@ import { a as formatErrorMessage, o as formatUnknownValue, r as firstLine } from
8
8
  import { Card, CardAction, CardContent, CardDescription, CardHeader, CardTitle } from "../foundations/Card.js";
9
9
  import { DescriptionList } from "../foundations/DescriptionList.js";
10
10
  import { Input } from "../foundations/Input.js";
11
- import { EmptyState } from "../foundations/EmptyState.js";
12
11
  import { Checkbox } from "../foundations/Checkbox.js";
13
- import { i as WorkspaceDeleteControl, n as WorkspaceComposerLink, r as httpUrl, t as FaviconMark } from "../../workspace-assets-C3QT6UlQ.js";
12
+ import { EmptyState } from "../foundations/EmptyState.js";
13
+ import { i as WorkspaceDeleteControl, n as WorkspaceComposerLink, r as httpUrl, t as FaviconMark } from "../../workspace-assets-wW_lQLYK.js";
14
14
  import * as React from "react";
15
15
  import { createElement } from "react";
16
16
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -7,7 +7,7 @@ import { Card, CardAction, CardContent, CardDescription, CardHeader, CardTitle }
7
7
  import { DescriptionList } from "../foundations/DescriptionList.js";
8
8
  import { EmptyState } from "../foundations/EmptyState.js";
9
9
  import { LinkButton } from "../foundations/LinkButton.js";
10
- import { i as WorkspaceDeleteControl, n as WorkspaceComposerLink, t as FaviconMark } from "../../workspace-assets-C3QT6UlQ.js";
10
+ import { i as WorkspaceDeleteControl, n as WorkspaceComposerLink, t as FaviconMark } from "../../workspace-assets-wW_lQLYK.js";
11
11
  import * as React from "react";
12
12
  import { jsx, jsxs } from "react/jsx-runtime";
13
13
  import { useQuery } from "@tanstack/react-query";
@@ -5,7 +5,7 @@ import { Card, CardAction, CardContent, CardDescription, CardHeader, CardTitle }
5
5
  import { DescriptionList } from "../foundations/DescriptionList.js";
6
6
  import { EmptyState } from "../foundations/EmptyState.js";
7
7
  import { Switch } from "../foundations/Switch.js";
8
- import { i as WorkspaceDeleteControl, n as WorkspaceComposerLink, t as FaviconMark } from "../../workspace-assets-C3QT6UlQ.js";
8
+ import { i as WorkspaceDeleteControl, n as WorkspaceComposerLink, t as FaviconMark } from "../../workspace-assets-wW_lQLYK.js";
9
9
  import * as React from "react";
10
10
  import { jsx, jsxs } from "react/jsx-runtime";
11
11
  //#region src/components/agents-sdk/WorkspaceUserScript.tsx
@@ -1,7 +1,7 @@
1
1
  import { ToggleVariantsOptions } from "./Toggle.js";
2
2
  import * as React from "react";
3
- import { ToggleGroup as ToggleGroup$1 } from "@base-ui/react/toggle-group";
4
3
  import { Toggle } from "@base-ui/react/toggle";
4
+ import { ToggleGroup as ToggleGroup$1 } from "@base-ui/react/toggle-group";
5
5
 
6
6
  //#region src/components/foundations/ToggleGroup.d.ts
7
7
  type ToggleGroupSize = ToggleVariantsOptions["size"];
@@ -3,8 +3,8 @@ import { n as mergeRefs } from "../../merge-refs-DF_7w2x_.js";
3
3
  import { toggleVariants } from "./Toggle.js";
4
4
  import * as React from "react";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
- import { ToggleGroup as ToggleGroup$1 } from "@base-ui/react/toggle-group";
7
6
  import { Toggle } from "@base-ui/react/toggle";
7
+ import { ToggleGroup as ToggleGroup$1 } from "@base-ui/react/toggle-group";
8
8
  //#region src/components/foundations/ToggleGroup.tsx
9
9
  /**
10
10
  * Tracks the pressed item's box so the segmented thumb can slide to it instead
@@ -1,8 +1,8 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
2
  import { Card } from "../foundations/Card.js";
3
3
  import { Separator } from "../foundations/Separator.js";
4
- import { Slider } from "../foundations/Slider.js";
5
4
  import { Progress } from "../foundations/Progress.js";
5
+ import { Slider } from "../foundations/Slider.js";
6
6
  import { formatPricingUsage, getUsagePrice } from "./Pricing.js";
7
7
  import * as React from "react";
8
8
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,6 +1,6 @@
1
1
  import { F as MoonIcon, P as MonitorIcon, Y as SunIcon } from "../../icons-CeGfXO21.js";
2
- import { useTheme } from "../foundations/ThemeProvider.js";
3
2
  import { Radio, RadioGroup } from "../foundations/RadioGroup.js";
3
+ import { useTheme } from "../foundations/ThemeProvider.js";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
5
5
  //#region src/components/general-purpose/ThemeModeControl.tsx
6
6
  const modes = [
@@ -1,13 +1,13 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
2
  import { r as ArrowLeftIcon } from "../../icons-CeGfXO21.js";
3
3
  import { MessageActions } from "../ai-sdk/Message.js";
4
- import { SubagentRunIndicator, getSubagentRunName } from "../agents-sdk/SubagentRunIndicator.js";
5
- import { NaniteMark } from "./NaniteScene.js";
6
4
  import { TransitionSurface } from "../foundations/TransitionSurface.js";
7
- import { AgentChat } from "../agents-sdk/AgentChat.js";
8
5
  import { AppTopBar } from "../general-purpose/AppTopBar.js";
9
- import { ThinkChat } from "../agents-sdk/ThinkChat.js";
6
+ import { NaniteMark } from "./NaniteScene.js";
7
+ import { SubagentRunIndicator, getSubagentRunName } from "../agents-sdk/SubagentRunIndicator.js";
10
8
  import { SubagentRunMetadata } from "../agents-sdk/SubagentRunDetails.js";
9
+ import { AgentChat } from "../agents-sdk/AgentChat.js";
10
+ import { ThinkChat } from "../agents-sdk/ThinkChat.js";
11
11
  import * as React from "react";
12
12
  import { jsx, jsxs } from "react/jsx-runtime";
13
13
  import { useAgentChat } from "@cloudflare/think/react";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mcp-b/react-components",
3
- "version": "0.50.1",
3
+ "version": "0.51.0",
4
4
  "description": "MCP-B React components built on Base UI and shared design tokens, including Cloudflare Think chat primitives.",
5
5
  "homepage": "https://design-system.sigvelo.com",
6
6
  "bugs": {
@@ -54,7 +54,7 @@
54
54
  "streamdown": "^2.5.0",
55
55
  "unist-util-visit": "^5.1.0",
56
56
  "yet-another-react-lightbox": "^3.32.2",
57
- "@mcp-b/design-tokens": "0.50.1"
57
+ "@mcp-b/design-tokens": "0.51.0"
58
58
  },
59
59
  "devDependencies": {
60
60
  "@ai-sdk/react": "^3.0.249",
@@ -7,8 +7,8 @@ import { AgentAttention, AgentAttentionActions, AgentAttentionBody, AgentAttenti
7
7
  import { Tooltip } from "./components/foundations/Tooltip.js";
8
8
  import { Avatar } from "./components/foundations/Avatar.js";
9
9
  import { CorrespondentName, correspondentHandleLabel } from "./components/ai-sdk/Correspondent.js";
10
- import { EmptyState } from "./components/foundations/EmptyState.js";
11
10
  import { AppIcon } from "./components/foundations/AppIcon.js";
11
+ import { EmptyState } from "./components/foundations/EmptyState.js";
12
12
  import { LinkButton } from "./components/foundations/LinkButton.js";
13
13
  import { getThinkExecutionRunStatus } from "./components/agents-sdk/ThinkExecutionRun.js";
14
14
  import * as React from "react";
@@ -5,8 +5,8 @@ import { Button } from "./components/foundations/Button.js";
5
5
  import { Tooltip } from "./components/foundations/Tooltip.js";
6
6
  import { IconButton } from "./components/foundations/IconButton.js";
7
7
  import { ComposerLink } from "./components/ai-sdk/ComposerLink.js";
8
- import { AppIcon } from "./components/foundations/AppIcon.js";
9
8
  import { AlertDialog } from "./components/foundations/AlertDialog.js";
9
+ import { AppIcon } from "./components/foundations/AppIcon.js";
10
10
  import * as React from "react";
11
11
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
12
12
  //#region src/components/_internal/workspace-delete.tsx