@mcp-b/react-components 0.20.1 → 0.20.4

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 (149) hide show
  1. package/dist/{CodeBlock-Bb-IPBc_.js → CodeBlock-ygtuzqJd.js} +1 -1
  2. package/dist/{FileTree-CUlXfnmc.js → FileTree-CdgfccsM.js} +5 -5
  3. package/dist/{Message-rZEaaD8Q.js → Message-DzuteocT.js} +4 -3
  4. package/dist/{ModelSelector-4GsCWcZV.js → ModelSelector-pecWyOFI.js} +4 -3
  5. package/dist/{WorkspaceFileView-CEdArlOT.js → WorkspaceFileView-Bxx4wEzJ.js} +5 -11
  6. package/dist/components/Accordion.js +4 -4
  7. package/dist/components/Activity.js +2 -2
  8. package/dist/components/AgentActivity.js +1 -1
  9. package/dist/components/AgentActivityPreview.js +1 -1
  10. package/dist/components/AgentAttention.js +2 -2
  11. package/dist/components/AgentChat.js +4 -4
  12. package/dist/components/AgentConnection.js +2 -2
  13. package/dist/components/AgentMessageParts.js +1 -1
  14. package/dist/components/AgentToolDetail.js +1 -1
  15. package/dist/components/AlertDialog.js +8 -8
  16. package/dist/components/AppTopBar.js +1 -1
  17. package/dist/components/Approval.js +1 -1
  18. package/dist/components/Artifact.js +1 -1
  19. package/dist/components/Autocomplete.js +11 -11
  20. package/dist/components/Avatar.js +6 -6
  21. package/dist/components/BrowserLiveView.js +2 -2
  22. package/dist/components/BrowserReplay.js +4 -7
  23. package/dist/components/BrowserRunPanel.js +2 -2
  24. package/dist/components/Card.js +8 -11
  25. package/dist/components/ChainOfThought.js +2 -2
  26. package/dist/components/ChatGptSignInScreen.js +2 -2
  27. package/dist/components/Checkbox.js +2 -2
  28. package/dist/components/CheckboxGroup.js +7 -7
  29. package/dist/components/Checkpoint.js +1 -1
  30. package/dist/components/CodeBlock.js +1 -1
  31. package/dist/components/CodexModelSelector.js +5 -4
  32. package/dist/components/Collapsible.js +2 -2
  33. package/dist/components/Combobox.js +11 -11
  34. package/dist/components/Commit.js +4 -4
  35. package/dist/components/Context.js +3 -1
  36. package/dist/components/ContextMenu.js +13 -13
  37. package/dist/components/Conversation.js +3 -8
  38. package/dist/components/Dialog.js +6 -6
  39. package/dist/components/EnvironmentVariables.js +3 -3
  40. package/dist/components/Field.js +7 -7
  41. package/dist/components/Fieldset.js +3 -3
  42. package/dist/components/FileTree.js +1 -1
  43. package/dist/components/Form.js +1 -1
  44. package/dist/components/InlineCitation.js +2 -2
  45. package/dist/components/Input.js +1 -1
  46. package/dist/components/Label.js +2 -1
  47. package/dist/components/McpConnectionRequest.js +1 -1
  48. package/dist/components/McpServerPicker.js +3 -3
  49. package/dist/components/MediaPreviewCard.js +5 -4
  50. package/dist/components/Menu.js +17 -17
  51. package/dist/components/Menubar.js +14 -14
  52. package/dist/components/Message.js +1 -1
  53. package/dist/components/MessageScroller.js +1 -1
  54. package/dist/components/Meter.js +5 -5
  55. package/dist/components/ModelSelector.js +1 -1
  56. package/dist/components/NaniteScene.js +2 -1
  57. package/dist/components/NavigationMenu.js +11 -11
  58. package/dist/components/NumberField.js +6 -6
  59. package/dist/components/Plan.js +1 -1
  60. package/dist/components/Popover.js +12 -14
  61. package/dist/components/PreviewCard.js +6 -6
  62. package/dist/components/PricingPage.js +2 -1
  63. package/dist/components/PricingPlanCard.js +1 -1
  64. package/dist/components/Progress.js +4 -4
  65. package/dist/components/PromptInput.js +10 -12
  66. package/dist/components/Queue.js +1 -1
  67. package/dist/components/RadioGroup.js +4 -4
  68. package/dist/components/Reasoning.js +2 -2
  69. package/dist/components/ResizableSidePanel.js +3 -5
  70. package/dist/components/ResponsiveSidebarShell.js +4 -3
  71. package/dist/components/ScrollArea.js +6 -6
  72. package/dist/components/SearchField.js +1 -1
  73. package/dist/components/Select.js +15 -15
  74. package/dist/components/Slider.js +7 -7
  75. package/dist/components/Sources.js +2 -2
  76. package/dist/components/Stepper.js +1 -1
  77. package/dist/components/SubagentRunDetails.js +2 -1
  78. package/dist/components/SubagentRunIndicator.js +1 -1
  79. package/dist/components/SubagentRunSelector.js +1 -1
  80. package/dist/components/Switch.js +3 -3
  81. package/dist/components/Tabs.js +2 -2
  82. package/dist/components/Task.js +2 -2
  83. package/dist/components/Terminal.js +2 -2
  84. package/dist/components/TestResults.js +3 -3
  85. package/dist/components/ThemeModeControl.js +1 -1
  86. package/dist/components/ThinkChatActivity.js +2 -1
  87. package/dist/components/ThinkChatActivitySummary.js +12 -3
  88. package/dist/components/ThinkChatToolPanels.js +1 -1
  89. package/dist/components/ThinkExecutionDetail.js +1 -1
  90. package/dist/components/ThinkExecutionStatus.js +1 -1
  91. package/dist/components/ThinkExecutionWorkbench.js +2 -2
  92. package/dist/components/ThinkFullApp.js +4 -74
  93. package/dist/components/ThinkPendingApproval.js +1 -3
  94. package/dist/components/ThinkRoutine.d.ts +1 -1
  95. package/dist/components/ThinkRoutine.js +2 -1
  96. package/dist/components/ThinkRoutineBrowser.js +9 -9
  97. package/dist/components/ThinkRoutineDetail.js +1 -1
  98. package/dist/components/ThinkRoutineForm.js +1 -1
  99. package/dist/components/ThinkRoutineLibrary.js +1 -1
  100. package/dist/components/ThinkThreadPicker.js +3 -3
  101. package/dist/components/ThinkThreadShell.js +2 -1
  102. package/dist/components/Toast.js +6 -6
  103. package/dist/components/ToggleGroup.js +2 -2
  104. package/dist/components/Tooltip.js +4 -4
  105. package/dist/components/WebPreview.js +1 -1
  106. package/dist/components/WorkspaceBrowser.js +1 -1
  107. package/dist/components/WorkspaceExplorer.js +2 -2
  108. package/dist/components/WorkspaceFileView.js +1 -1
  109. package/dist/components/WorkspaceHeader.js +1 -1
  110. package/dist/components/icons.js +1 -1
  111. package/dist/{copy-button-BtRwhRks.js → copy-button-vo1paUSi.js} +1 -1
  112. package/dist/format-S6uWyoSb.js +38 -0
  113. package/dist/{icons-DKXiSepE.js → icons-DyOM0EJs.js} +2 -1
  114. package/dist/{merge-refs-KlanQB7A.js → merge-refs-DF_7w2x_.js} +1 -1
  115. package/dist/styles/activity-header.css +0 -3
  116. package/dist/styles/activity.css +1 -1
  117. package/dist/styles/agent-attention.css +0 -7
  118. package/dist/styles/agent-connection.css +1 -1
  119. package/dist/styles/app-top-bar.css +2 -5
  120. package/dist/styles/browser-live-view.css +1 -10
  121. package/dist/styles/browser-run-panel.css +2 -11
  122. package/dist/styles/chain-of-thought.css +2 -14
  123. package/dist/styles/checkbox-group.css +0 -6
  124. package/dist/styles/codex-model-selector.css +0 -6
  125. package/dist/styles/commit.css +1 -7
  126. package/dist/styles/environment-variables.css +0 -3
  127. package/dist/styles/file-tree.css +1 -1
  128. package/dist/styles/inline-citation.css +1 -4
  129. package/dist/styles/mcp-server-picker.css +0 -3
  130. package/dist/styles/message.css +0 -6
  131. package/dist/styles/model-selector.css +1 -1
  132. package/dist/styles/prompt-input.css +3 -34
  133. package/dist/styles/queue.css +1 -1
  134. package/dist/styles/recipes.css +2 -2
  135. package/dist/styles/sources.css +1 -4
  136. package/dist/styles/stepper.css +1 -7
  137. package/dist/styles/subagent-run.css +0 -3
  138. package/dist/styles/task.css +1 -1
  139. package/dist/styles/test-results.css +2 -17
  140. package/dist/styles/theme-mode-control.css +1 -1
  141. package/dist/styles/think-execution-status.css +1 -7
  142. package/dist/styles/think-execution-workbench.css +0 -3
  143. package/dist/styles/think-full-app.css +0 -3
  144. package/dist/styles/think-thread-picker.css +2 -14
  145. package/dist/styles/toggle-group.css +1 -1
  146. package/dist/styles/utilities.css +6 -2
  147. package/dist/styles/workspace-explorer.css +1 -1
  148. package/dist/view-transitions-DyUP0lSg.js +77 -0
  149. package/package.json +2 -2
@@ -1,6 +1,6 @@
1
1
  import { t as cx } from "./class-names-BiMDVpUo.js";
2
2
  import { Select } from "./components/Select.js";
3
- import { t as CopyButton } from "./copy-button-BtRwhRks.js";
3
+ import { t as CopyButton } from "./copy-button-vo1paUSi.js";
4
4
  import * as React from "react";
5
5
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
6
  import { createHighlighter } from "shiki";
@@ -1,5 +1,5 @@
1
1
  import { t as cx } from "./class-names-BiMDVpUo.js";
2
- import { C as FolderIcon, S as FileIcon, p as ChevronRightIcon, w as FolderOpenIcon } from "./icons-DKXiSepE.js";
2
+ import { C as FolderIcon, S as FileIcon, p as ChevronRightIcon, w as FolderOpenIcon } from "./icons-DyOM0EJs.js";
3
3
  import { t as NavigationLink } from "./navigation-link-Cob7KBlM.js";
4
4
  import * as React from "react";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -231,7 +231,7 @@ function FileTreeFolder({ className, path, name, level = 0, children, ref, ...pr
231
231
  children: isExpanded ? /* @__PURE__ */ jsx(FolderOpenIcon, {}) : /* @__PURE__ */ jsx(FolderIcon, {})
232
232
  }),
233
233
  /* @__PURE__ */ jsx("span", {
234
- className: "file-tree__name sigvelo-truncate",
234
+ className: "file-tree__name sigvelo-truncate sigvelo-truncate-grow",
235
235
  children: name
236
236
  })
237
237
  ]
@@ -270,7 +270,7 @@ function FileTreeFile({ className, path, name, icon, render, level = 0, ref, ...
270
270
  "aria-hidden": "true",
271
271
  children: icon ?? /* @__PURE__ */ jsx(FileIcon, {})
272
272
  }), /* @__PURE__ */ jsx("span", {
273
- className: "file-tree__name sigvelo-truncate",
273
+ className: "file-tree__name sigvelo-truncate sigvelo-truncate-grow",
274
274
  children: name
275
275
  })]
276
276
  }) : /* @__PURE__ */ jsxs("button", {
@@ -289,7 +289,7 @@ function FileTreeFile({ className, path, name, icon, render, level = 0, ref, ...
289
289
  "aria-hidden": "true",
290
290
  children: icon ?? /* @__PURE__ */ jsx(FileIcon, {})
291
291
  }), /* @__PURE__ */ jsx("span", {
292
- className: "file-tree__name sigvelo-truncate",
292
+ className: "file-tree__name sigvelo-truncate sigvelo-truncate-grow",
293
293
  children: name
294
294
  })]
295
295
  })
@@ -307,7 +307,7 @@ function FileTreeIcon({ className, children, ref, ...props }) {
307
307
  function FileTreeName({ className, children, ref, ...props }) {
308
308
  return /* @__PURE__ */ jsx("span", {
309
309
  ref,
310
- className: cx("file-tree__name", "sigvelo-truncate", className),
310
+ className: cx("file-tree__name", "sigvelo-truncate", "sigvelo-truncate-grow", className),
311
311
  ...props,
312
312
  children
313
313
  });
@@ -1,9 +1,10 @@
1
1
  import { t as cx } from "./class-names-BiMDVpUo.js";
2
- import { S as FileIcon, i as ArrowRightIcon, r as ArrowLeftIcon } from "./icons-DKXiSepE.js";
2
+ import { S as FileIcon, i as ArrowRightIcon, r as ArrowLeftIcon } from "./icons-DyOM0EJs.js";
3
3
  import { Button } from "./components/Button.js";
4
4
  import { Tooltip } from "./components/Tooltip.js";
5
5
  import { c as useWorkspaceNavigationContext, r as resolveWorkspaceLink, t as WorkspaceFileLink } from "./WorkspaceLink-BYYeTQLf.js";
6
6
  import { t as AttachmentPreview } from "./attachment-preview-DIs50Q0h.js";
7
+ import { n as clamp } from "./format-S6uWyoSb.js";
7
8
  import * as React from "react";
8
9
  import { jsx, jsxs } from "react/jsx-runtime";
9
10
  import { cjk } from "@streamdown/cjk";
@@ -185,7 +186,7 @@ function MessageAttachment({ part, className, ...props }) {
185
186
  download: part.filename,
186
187
  ...props,
187
188
  children: [/* @__PURE__ */ jsx(FileIcon, { className: "message__attachment-icon" }), /* @__PURE__ */ jsx("span", {
188
- className: "message__attachment-name",
189
+ className: "message__attachment-name sigvelo-truncate",
189
190
  children: name
190
191
  })]
191
192
  });
@@ -284,7 +285,7 @@ function MessageBranch({ className, branchCount, defaultBranch = 0, branch, onBr
284
285
  function MessageBranchContent({ className, children, ref, ...props }) {
285
286
  const { branchIndex } = useMessageBranch("MessageBranchContent");
286
287
  const items = React.Children.toArray(children);
287
- const safeIndex = items.length === 0 ? 0 : Math.min(Math.max(branchIndex, 0), items.length - 1);
288
+ const safeIndex = items.length === 0 ? 0 : clamp(branchIndex, 0, items.length - 1);
288
289
  return /* @__PURE__ */ jsx("div", {
289
290
  ref,
290
291
  className: cx("message__branch-content", className),
@@ -1,7 +1,8 @@
1
1
  import { t as cx } from "./class-names-BiMDVpUo.js";
2
- import { W as SearchIcon, d as ChevronDownIcon } from "./icons-DKXiSepE.js";
2
+ import { W as SearchIcon, d as ChevronDownIcon } from "./icons-DyOM0EJs.js";
3
3
  import { Button } from "./components/Button.js";
4
4
  import { Dialog } from "./components/Dialog.js";
5
+ import { i as titleCase } from "./format-S6uWyoSb.js";
5
6
  import { Separator } from "./components/Separator.js";
6
7
  import { Input } from "./components/Input.js";
7
8
  import * as React from "react";
@@ -152,7 +153,7 @@ function getCloudflareModelProvider(modelId) {
152
153
  function formatCloudflareModelProvider(provider) {
153
154
  const normalized = provider.trim().toLowerCase();
154
155
  if (cloudflareModelProviderLabels[normalized]) return cloudflareModelProviderLabels[normalized];
155
- return normalized.split(/[-_]/).filter(Boolean).map((word) => word[0].toUpperCase() + word.slice(1)).join(" ");
156
+ return titleCase(normalized);
156
157
  }
157
158
  function normalizeCloudflareModelSelectorModels(models) {
158
159
  const seen = /* @__PURE__ */ new Set();
@@ -477,7 +478,7 @@ function ModelSelectorLogoGroup({ className, children, ref, ...props }) {
477
478
  function ModelSelectorName({ className, children, ref, ...props }) {
478
479
  return /* @__PURE__ */ jsx("span", {
479
480
  ref,
480
- className: cx("model-selector__name", "sigvelo-truncate", className),
481
+ className: cx("model-selector__name", "sigvelo-truncate", "sigvelo-truncate-grow", className),
481
482
  ...props,
482
483
  children
483
484
  });
@@ -1,9 +1,10 @@
1
- import { Q as WarningIcon, b as EyeIcon, et as XIcon, k as MaximizeIcon, m as CodeIcon, u as CheckIcon, v as DownloadIcon } from "./icons-DKXiSepE.js";
1
+ import { Q as WarningIcon, b as EyeIcon, et as XIcon, k as MaximizeIcon, m as CodeIcon, u as CheckIcon, v as DownloadIcon } from "./icons-DyOM0EJs.js";
2
2
  import { t as NavigationLink } from "./navigation-link-Cob7KBlM.js";
3
3
  import { buttonVariants } from "./components/Button.js";
4
4
  import { c as useWorkspaceNavigationContext, s as useWorkspaceNavigationRestoration } from "./WorkspaceLink-BYYeTQLf.js";
5
- import { f as MessageResponse, m as createWorkspaceRehypePlugins } from "./Message-rZEaaD8Q.js";
6
- import { a as CodeBlockCopyButton, i as CodeBlockContent, r as CodeBlockContainer, t as CodeBlock } from "./CodeBlock-Bb-IPBc_.js";
5
+ import { r as formatClock } from "./format-S6uWyoSb.js";
6
+ import { f as MessageResponse, m as createWorkspaceRehypePlugins } from "./Message-DzuteocT.js";
7
+ import { a as CodeBlockCopyButton, i as CodeBlockContent, r as CodeBlockContainer, t as CodeBlock } from "./CodeBlock-ygtuzqJd.js";
7
8
  import { AppTopBar } from "./components/AppTopBar.js";
8
9
  import { inferWorkspaceLanguage, inferWorkspaceMedia, isWorkspaceMarkdownPath, isWorkspaceSkillPath, parseWorkspaceSkill } from "./components/WorkspaceFile.js";
9
10
  import { WorkspaceHeader } from "./components/WorkspaceHeader.js";
@@ -160,16 +161,9 @@ function formatBytes(size) {
160
161
  }
161
162
  return `${value >= 10 ? value.toFixed(0) : value.toFixed(1)} ${unit}`;
162
163
  }
163
- function formatDuration(duration) {
164
- const seconds = Math.max(0, Math.round(duration));
165
- const hours = Math.floor(seconds / 3600);
166
- const minutes = Math.floor(seconds % 3600 / 60);
167
- const remainder = seconds % 60;
168
- return hours > 0 ? `${hours}:${String(minutes).padStart(2, "0")}:${String(remainder).padStart(2, "0")}` : `${minutes}:${String(remainder).padStart(2, "0")}`;
169
- }
170
164
  function WorkspaceMediaDetails({ mimeType, size, dimensions, dimensionsPending = false, duration, durationPending = false, transcriptUrl }) {
171
165
  const dimensionValue = dimensionsPending ? "Loading…" : dimensions ? `${dimensions.width} × ${dimensions.height} px` : null;
172
- const durationValue = durationPending ? "Loading…" : duration !== void 0 && duration !== null ? formatDuration(duration) : null;
166
+ const durationValue = durationPending ? "Loading…" : duration !== void 0 && duration !== null ? formatClock(Math.round(duration)) : null;
173
167
  return /* @__PURE__ */ jsxs("figcaption", {
174
168
  className: "workspace-explorer__media-caption",
175
169
  children: [/* @__PURE__ */ jsxs("dl", {
@@ -23,7 +23,7 @@ import { jsx } from "react/jsx-runtime";
23
23
  * @see {@link https://base-ui.com/react/components/accordion | Base UI Accordion}
24
24
  */
25
25
  function AccordionRoot({ className, ref, ...props }) {
26
- const classes = mergeBaseClassName(["accordion"].filter(Boolean).join(" "), className);
26
+ const classes = mergeBaseClassName("accordion", className);
27
27
  return /* @__PURE__ */ jsx(Accordion$1.Root, {
28
28
  ref,
29
29
  "data-slot": "accordion",
@@ -35,7 +35,7 @@ function AccordionRoot({ className, ref, ...props }) {
35
35
  * A single item within an Accordion.
36
36
  */
37
37
  function AccordionItem({ className, ref, ...props }) {
38
- const classes = mergeBaseClassName(["accordion__item"].filter(Boolean).join(" "), className);
38
+ const classes = mergeBaseClassName("accordion__item", className);
39
39
  return /* @__PURE__ */ jsx(Accordion$1.Item, {
40
40
  ref,
41
41
  "data-slot": "accordion-item",
@@ -44,7 +44,7 @@ function AccordionItem({ className, ref, ...props }) {
44
44
  });
45
45
  }
46
46
  function AccordionHeader({ className, ref, ...props }) {
47
- const classes = mergeBaseClassName(["accordion__header"].filter(Boolean).join(" "), className);
47
+ const classes = mergeBaseClassName("accordion__header", className);
48
48
  return /* @__PURE__ */ jsx(Accordion$1.Header, {
49
49
  ref,
50
50
  "data-slot": "accordion-header",
@@ -59,7 +59,7 @@ function AccordionHeader({ className, ref, ...props }) {
59
59
  * The clickable trigger button within an AccordionItem.
60
60
  */
61
61
  function AccordionTrigger({ className, ref, ...props }) {
62
- const classes = mergeBaseClassName(["accordion__trigger"].filter(Boolean).join(" "), className);
62
+ const classes = mergeBaseClassName("accordion__trigger", className);
63
63
  return /* @__PURE__ */ jsx(Accordion$1.Trigger, {
64
64
  ref,
65
65
  "data-slot": "accordion-trigger",
@@ -1,6 +1,6 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
2
  import { Collapsible } from "./Collapsible.js";
3
- import { p as ChevronRightIcon } from "../icons-DKXiSepE.js";
3
+ import { p as ChevronRightIcon } from "../icons-DyOM0EJs.js";
4
4
  import "react";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
6
  //#region src/components/Activity.tsx
@@ -52,7 +52,7 @@ function ActivityHeader({ className, icon, isStreaming = false, label = "Working
52
52
  children: icon
53
53
  }) : null,
54
54
  /* @__PURE__ */ jsx("span", {
55
- className: "activity__header-label",
55
+ className: "activity__header-label sigvelo-truncate",
56
56
  children: label
57
57
  }),
58
58
  trailing
@@ -1,4 +1,4 @@
1
- import { $ as WrenchIcon, D as InfoIcon, O as LinkIcon, P as MonitorIcon, Q as WarningIcon, S as FileIcon, W as SearchIcon, X as TerminalIcon, z as PencilIcon } from "../icons-DKXiSepE.js";
1
+ import { $ as WrenchIcon, D as InfoIcon, O as LinkIcon, P as MonitorIcon, Q as WarningIcon, S as FileIcon, W as SearchIcon, X as TerminalIcon, z as PencilIcon } from "../icons-DyOM0EJs.js";
2
2
  import * as React from "react";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  //#region src/components/AgentActivity.tsx
@@ -1,5 +1,5 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
- import { A as McpIcon, K as SpinnerIcon, Q as WarningIcon, S as FileIcon, et as XIcon } from "../icons-DKXiSepE.js";
2
+ import { A as McpIcon, K as SpinnerIcon, Q as WarningIcon, S as FileIcon, et as XIcon } from "../icons-DyOM0EJs.js";
3
3
  import { ActivityHeader } from "./Activity.js";
4
4
  import { AgentActivityFavicon, AgentActivityIcon } from "./AgentActivity.js";
5
5
  import { t as NavigationLink } from "../navigation-link-Cob7KBlM.js";
@@ -23,10 +23,10 @@ function AgentAttentionHeading({ description, icon, title }) {
23
23
  }) : null, /* @__PURE__ */ jsxs("span", {
24
24
  className: "agent-attention__text",
25
25
  children: [/* @__PURE__ */ jsx("span", {
26
- className: "agent-attention__title",
26
+ className: "agent-attention__title sigvelo-truncate",
27
27
  children: title
28
28
  }), description ? /* @__PURE__ */ jsx("span", {
29
- className: "agent-attention__description",
29
+ className: "agent-attention__description sigvelo-truncate",
30
30
  children: description
31
31
  }) : null]
32
32
  })] });
@@ -1,6 +1,6 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
- import { H as QueueIcon, I as MoveToFrontIcon, U as RefreshIcon, V as PlusIcon, Z as TrashIcon, z as PencilIcon } from "../icons-DKXiSepE.js";
3
- import { n as MessageAction, r as MessageActions, t as Message } from "../Message-rZEaaD8Q.js";
2
+ import { H as QueueIcon, I as MoveToFrontIcon, U as RefreshIcon, V as PlusIcon, Z as TrashIcon, z as PencilIcon } from "../icons-DyOM0EJs.js";
3
+ import { n as MessageAction, r as MessageActions, t as Message } from "../Message-DzuteocT.js";
4
4
  import { AgentMessageParts } from "./AgentMessageParts.js";
5
5
  import { Context, ContextContent, ContextContentBody, ContextContentHeader, ContextTrigger, getContextUsage, getContextUsedTokens } from "./Context.js";
6
6
  import { MessageScroller, MessageScrollerButton, MessageScrollerContent, MessageScrollerItem, MessageScrollerProvider, MessageScrollerViewport } from "./MessageScroller.js";
@@ -10,7 +10,7 @@ import { Marker, MarkerContent } from "./Marker.js";
10
10
  import { Menu } from "./Menu.js";
11
11
  import { TransitionSurface } from "./TransitionSurface.js";
12
12
  import { PromptInput, PromptInputActionAddAttachments, PromptInputActionMenu, PromptInputActionMenuContent, PromptInputActionMenuTrigger, PromptInputApproval, PromptInputAttachments, PromptInputBody, PromptInputButton, PromptInputCommandComposer, PromptInputContextSelector, PromptInputDictation, PromptInputFooter, PromptInputHeader, PromptInputPermissionSelector, PromptInputReferences, PromptInputSubmit, PromptInputTextarea, PromptInputTools, getApprovalRequestId, getApprovalStateKey, getPendingToolApprovals, usePromptInputAttachments } from "./PromptInput.js";
13
- import { t as CopyButton } from "../copy-button-BtRwhRks.js";
13
+ import { t as CopyButton } from "../copy-button-vo1paUSi.js";
14
14
  import * as React from "react";
15
15
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
16
16
  import { isCompactionMessage } from "agents/experimental/memory/utils";
@@ -399,7 +399,7 @@ function AgentChat({ className, messages, status = "ready", onSubmit, showCompos
399
399
  children: /* @__PURE__ */ jsx(QueueIcon, {})
400
400
  }),
401
401
  /* @__PURE__ */ jsx("span", {
402
- className: "agent-chat__queued-text sigvelo-truncate",
402
+ className: "agent-chat__queued-text sigvelo-truncate sigvelo-truncate-grow",
403
403
  children: messageText
404
404
  }),
405
405
  /* @__PURE__ */ jsxs("button", {
@@ -1,10 +1,10 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
- import { O as LinkIcon } from "../icons-DKXiSepE.js";
2
+ import { O as LinkIcon } from "../icons-DyOM0EJs.js";
3
3
  import { Button } from "./Button.js";
4
4
  import { Popover } from "./Popover.js";
5
5
  import { Field } from "./Field.js";
6
6
  import { Form } from "./Form.js";
7
- import { a as CodeBlockCopyButton, i as CodeBlockContent, n as CodeBlockActions, p as CodeBlockTitle, r as CodeBlockContainer, s as CodeBlockHeader, t as CodeBlock } from "../CodeBlock-Bb-IPBc_.js";
7
+ import { a as CodeBlockCopyButton, i as CodeBlockContent, n as CodeBlockActions, p as CodeBlockTitle, r as CodeBlockContainer, s as CodeBlockHeader, t as CodeBlock } from "../CodeBlock-ygtuzqJd.js";
8
8
  import { CUSTOM_MCP_SERVER_CARD } from "../utils/mcp-server-catalog.js";
9
9
  import * as React from "react";
10
10
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- import { d as MessageContent, f as MessageResponse, i as MessageAttachment } from "../Message-rZEaaD8Q.js";
1
+ import { d as MessageContent, f as MessageResponse, i as MessageAttachment } from "../Message-DzuteocT.js";
2
2
  import { Reasoning, ReasoningContent, ReasoningTrigger } from "./Reasoning.js";
3
3
  import { Source, Sources, SourcesContent, SourcesTrigger } from "./Sources.js";
4
4
  import { ToolInvocation } from "./ToolInvocation.js";
@@ -1,5 +1,5 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
- import { r as ArrowLeftIcon } from "../icons-DKXiSepE.js";
2
+ import { r as ArrowLeftIcon } from "../icons-DyOM0EJs.js";
3
3
  import { TransitionSurface } from "./TransitionSurface.js";
4
4
  import { AppTopBar } from "./AppTopBar.js";
5
5
  import { NaniteMark } from "./NaniteScene.js";
@@ -33,7 +33,7 @@ import { AlertDialog as AlertDialog$1 } from "@base-ui/react/alert-dialog";
33
33
  * @see {@link https://base-ui.com/react/components/alert-dialog | Base UI Alert Dialog}
34
34
  */
35
35
  function AlertDialogTrigger({ className, ref, ...props }) {
36
- const classes = mergeBaseClassName(["alert-dialog__trigger"].filter(Boolean).join(" "), className);
36
+ const classes = mergeBaseClassName("alert-dialog__trigger", className);
37
37
  return /* @__PURE__ */ jsx(AlertDialog$1.Trigger, {
38
38
  ref,
39
39
  "data-slot": "alert-dialog-trigger",
@@ -42,7 +42,7 @@ function AlertDialogTrigger({ className, ref, ...props }) {
42
42
  });
43
43
  }
44
44
  function AlertDialogBackdrop({ className, ref, ...props }) {
45
- const classes = mergeBaseClassName(["alert-dialog__backdrop", "base-ui-backdrop"].filter(Boolean).join(" "), className);
45
+ const classes = mergeBaseClassName("alert-dialog__backdrop base-ui-backdrop", className);
46
46
  return /* @__PURE__ */ jsx(AlertDialog$1.Backdrop, {
47
47
  ref,
48
48
  "data-slot": "alert-dialog-overlay",
@@ -51,7 +51,7 @@ function AlertDialogBackdrop({ className, ref, ...props }) {
51
51
  });
52
52
  }
53
53
  function AlertDialogViewport({ className, ref, ...props }) {
54
- const classes = mergeBaseClassName(["alert-dialog__viewport"].filter(Boolean).join(" "), className);
54
+ const classes = mergeBaseClassName("alert-dialog__viewport", className);
55
55
  return /* @__PURE__ */ jsx(AlertDialog$1.Viewport, {
56
56
  ref,
57
57
  "data-slot": "alert-dialog-viewport",
@@ -76,7 +76,7 @@ function AlertDialogHeader({ className, ref, ...props }) {
76
76
  return /* @__PURE__ */ jsx("div", {
77
77
  ref,
78
78
  "data-slot": "alert-dialog-header",
79
- className: mergeBaseClassName(["alert-dialog__header"].filter(Boolean).join(" "), className),
79
+ className: mergeBaseClassName("alert-dialog__header", className),
80
80
  ...props
81
81
  });
82
82
  }
@@ -84,7 +84,7 @@ function AlertDialogFooter({ className, ref, ...props }) {
84
84
  return /* @__PURE__ */ jsx("div", {
85
85
  ref,
86
86
  "data-slot": "alert-dialog-footer",
87
- className: mergeBaseClassName(["alert-dialog__footer"].filter(Boolean).join(" "), className),
87
+ className: mergeBaseClassName("alert-dialog__footer", className),
88
88
  ...props
89
89
  });
90
90
  }
@@ -92,12 +92,12 @@ function AlertDialogMedia({ className, ref, ...props }) {
92
92
  return /* @__PURE__ */ jsx("div", {
93
93
  ref,
94
94
  "data-slot": "alert-dialog-media",
95
- className: mergeBaseClassName(["alert-dialog__media"].filter(Boolean).join(" "), className),
95
+ className: mergeBaseClassName("alert-dialog__media", className),
96
96
  ...props
97
97
  });
98
98
  }
99
99
  function AlertDialogTitle({ className, ref, ...props }) {
100
- const classes = mergeBaseClassName(["alert-dialog__title"].filter(Boolean).join(" "), className);
100
+ const classes = mergeBaseClassName("alert-dialog__title", className);
101
101
  return /* @__PURE__ */ jsx(AlertDialog$1.Title, {
102
102
  ref,
103
103
  "data-slot": "alert-dialog-title",
@@ -106,7 +106,7 @@ function AlertDialogTitle({ className, ref, ...props }) {
106
106
  });
107
107
  }
108
108
  function AlertDialogDescription({ className, ref, ...props }) {
109
- const classes = mergeBaseClassName(["alert-dialog__description"].filter(Boolean).join(" "), className);
109
+ const classes = mergeBaseClassName("alert-dialog__description", className);
110
110
  return /* @__PURE__ */ jsx(AlertDialog$1.Description, {
111
111
  ref,
112
112
  "data-slot": "alert-dialog-description",
@@ -31,7 +31,7 @@ function AppTopBarTitle({ className, render, ref, ...props }) {
31
31
  props: {
32
32
  ...props,
33
33
  "data-slot": "app-top-bar-title",
34
- className: cx("app-top-bar__title", className)
34
+ className: cx("app-top-bar__title", "sigvelo-truncate", className)
35
35
  }
36
36
  });
37
37
  }
@@ -1,5 +1,5 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
- import { z as PencilIcon } from "../icons-DKXiSepE.js";
2
+ import { z as PencilIcon } from "../icons-DyOM0EJs.js";
3
3
  import { Button } from "./Button.js";
4
4
  import * as React from "react";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,5 +1,5 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
- import { et as XIcon } from "../icons-DKXiSepE.js";
2
+ import { et as XIcon } from "../icons-DyOM0EJs.js";
3
3
  import { Button } from "./Button.js";
4
4
  import { Tooltip } from "./Tooltip.js";
5
5
  import "react";
@@ -4,7 +4,7 @@ import { jsx } from "react/jsx-runtime";
4
4
  import { Autocomplete as Autocomplete$1 } from "@base-ui/react/autocomplete";
5
5
  //#region src/components/Autocomplete.tsx
6
6
  function Input({ className, ref, ...props }) {
7
- const classes = mergeBaseClassName(["autocomplete__input"].filter(Boolean).join(" "), className);
7
+ const classes = mergeBaseClassName("autocomplete__input", className);
8
8
  return /* @__PURE__ */ jsx(Autocomplete$1.Input, {
9
9
  ref,
10
10
  "data-slot": "autocomplete-input",
@@ -13,7 +13,7 @@ function Input({ className, ref, ...props }) {
13
13
  });
14
14
  }
15
15
  function Trigger({ className, ref, ...props }) {
16
- const classes = mergeBaseClassName(["autocomplete__trigger"].filter(Boolean).join(" "), className);
16
+ const classes = mergeBaseClassName("autocomplete__trigger", className);
17
17
  return /* @__PURE__ */ jsx(Autocomplete$1.Trigger, {
18
18
  ref,
19
19
  "data-slot": "autocomplete-trigger",
@@ -22,7 +22,7 @@ function Trigger({ className, ref, ...props }) {
22
22
  });
23
23
  }
24
24
  function Clear({ className, ref, ...props }) {
25
- const classes = mergeBaseClassName(["autocomplete__clear"].filter(Boolean).join(" "), className);
25
+ const classes = mergeBaseClassName("autocomplete__clear", className);
26
26
  return /* @__PURE__ */ jsx(Autocomplete$1.Clear, {
27
27
  ref,
28
28
  "data-slot": "autocomplete-clear",
@@ -31,7 +31,7 @@ function Clear({ className, ref, ...props }) {
31
31
  });
32
32
  }
33
33
  function Positioner({ className, ref, ...props }) {
34
- const classes = mergeBaseClassName(["autocomplete__positioner", "base-ui-positioner"].filter(Boolean).join(" "), className);
34
+ const classes = mergeBaseClassName("autocomplete__positioner base-ui-positioner", className);
35
35
  return /* @__PURE__ */ jsx(Autocomplete$1.Positioner, {
36
36
  ref,
37
37
  "data-slot": "autocomplete-positioner",
@@ -40,7 +40,7 @@ function Positioner({ className, ref, ...props }) {
40
40
  });
41
41
  }
42
42
  function Popup({ className, ref, ...props }) {
43
- const classes = mergeBaseClassName(["autocomplete__popup", "base-ui-popup"].filter(Boolean).join(" "), className);
43
+ const classes = mergeBaseClassName("autocomplete__popup base-ui-popup", className);
44
44
  return /* @__PURE__ */ jsx(Autocomplete$1.Popup, {
45
45
  ref,
46
46
  "data-slot": "autocomplete-content",
@@ -49,7 +49,7 @@ function Popup({ className, ref, ...props }) {
49
49
  });
50
50
  }
51
51
  function List({ className, ref, ...props }) {
52
- const classes = mergeBaseClassName(["autocomplete__list"].filter(Boolean).join(" "), className);
52
+ const classes = mergeBaseClassName("autocomplete__list", className);
53
53
  return /* @__PURE__ */ jsx(Autocomplete$1.List, {
54
54
  ref,
55
55
  "data-slot": "autocomplete-list",
@@ -58,7 +58,7 @@ function List({ className, ref, ...props }) {
58
58
  });
59
59
  }
60
60
  function Item({ className, ref, ...props }) {
61
- const classes = mergeBaseClassName(["autocomplete__item"].filter(Boolean).join(" "), className);
61
+ const classes = mergeBaseClassName("autocomplete__item", className);
62
62
  return /* @__PURE__ */ jsx(Autocomplete$1.Item, {
63
63
  ref,
64
64
  "data-slot": "autocomplete-item",
@@ -67,7 +67,7 @@ function Item({ className, ref, ...props }) {
67
67
  });
68
68
  }
69
69
  function Empty({ className, ref, ...props }) {
70
- const classes = mergeBaseClassName(["autocomplete__empty"].filter(Boolean).join(" "), className);
70
+ const classes = mergeBaseClassName("autocomplete__empty", className);
71
71
  return /* @__PURE__ */ jsx(Autocomplete$1.Empty, {
72
72
  ref,
73
73
  "data-slot": "autocomplete-empty",
@@ -76,7 +76,7 @@ function Empty({ className, ref, ...props }) {
76
76
  });
77
77
  }
78
78
  function Status({ className, ref, ...props }) {
79
- const classes = mergeBaseClassName(["autocomplete__status"].filter(Boolean).join(" "), className);
79
+ const classes = mergeBaseClassName("autocomplete__status", className);
80
80
  return /* @__PURE__ */ jsx(Autocomplete$1.Status, {
81
81
  ref,
82
82
  "data-slot": "autocomplete-status",
@@ -85,7 +85,7 @@ function Status({ className, ref, ...props }) {
85
85
  });
86
86
  }
87
87
  function Group({ className, ref, ...props }) {
88
- const classes = mergeBaseClassName(["autocomplete__group"].filter(Boolean).join(" "), className);
88
+ const classes = mergeBaseClassName("autocomplete__group", className);
89
89
  return /* @__PURE__ */ jsx(Autocomplete$1.Group, {
90
90
  ref,
91
91
  "data-slot": "autocomplete-group",
@@ -94,7 +94,7 @@ function Group({ className, ref, ...props }) {
94
94
  });
95
95
  }
96
96
  function GroupLabel({ className, ref, ...props }) {
97
- const classes = mergeBaseClassName(["autocomplete__group-label"].filter(Boolean).join(" "), className);
97
+ const classes = mergeBaseClassName("autocomplete__group-label", className);
98
98
  return /* @__PURE__ */ jsx(Autocomplete$1.GroupLabel, {
99
99
  ref,
100
100
  "data-slot": "autocomplete-group-label",
@@ -17,7 +17,7 @@ import { Avatar as Avatar$1 } from "@base-ui/react/avatar";
17
17
  * @see {@link https://base-ui.com/react/components/avatar | Base UI Avatar}
18
18
  */
19
19
  function AvatarRoot({ className, size = "md", ref, ...props }) {
20
- const classes = mergeBaseClassName(["avatar"].filter(Boolean).join(" "), className);
20
+ const classes = mergeBaseClassName("avatar", className);
21
21
  return /* @__PURE__ */ jsx(Avatar$1.Root, {
22
22
  ref,
23
23
  "data-slot": "avatar",
@@ -30,7 +30,7 @@ function AvatarRoot({ className, size = "md", ref, ...props }) {
30
30
  * Displays the avatar image. Renders an `<img>` element.
31
31
  */
32
32
  function AvatarImage({ className, ref, ...props }) {
33
- const classes = mergeBaseClassName(["avatar__image"].filter(Boolean).join(" "), className);
33
+ const classes = mergeBaseClassName("avatar__image", className);
34
34
  return /* @__PURE__ */ jsx(Avatar$1.Image, {
35
35
  ref,
36
36
  "data-slot": "avatar-image",
@@ -43,7 +43,7 @@ function AvatarImage({ className, ref, ...props }) {
43
43
  * Typically contains initials or an icon. Renders a `<span>` element.
44
44
  */
45
45
  function AvatarFallback({ className, ref, ...props }) {
46
- const classes = mergeBaseClassName(["avatar__fallback"].filter(Boolean).join(" "), className);
46
+ const classes = mergeBaseClassName("avatar__fallback", className);
47
47
  return /* @__PURE__ */ jsx(Avatar$1.Fallback, {
48
48
  ref,
49
49
  "data-slot": "avatar-fallback",
@@ -55,7 +55,7 @@ function AvatarGroup({ className, ref, ...props }) {
55
55
  return /* @__PURE__ */ jsx("div", {
56
56
  ref,
57
57
  "data-slot": "avatar-group",
58
- className: mergeBaseClassName(["avatar-group"].filter(Boolean).join(" "), className),
58
+ className: mergeBaseClassName("avatar-group", className),
59
59
  ...props
60
60
  });
61
61
  }
@@ -63,7 +63,7 @@ function AvatarGroupCount({ className, ref, ...props }) {
63
63
  return /* @__PURE__ */ jsx("div", {
64
64
  ref,
65
65
  "data-slot": "avatar-group-count",
66
- className: mergeBaseClassName(["avatar-group__count"].filter(Boolean).join(" "), className),
66
+ className: mergeBaseClassName("avatar-group__count", className),
67
67
  ...props
68
68
  });
69
69
  }
@@ -71,7 +71,7 @@ function AvatarBadge({ className, ref, ...props }) {
71
71
  return /* @__PURE__ */ jsx("span", {
72
72
  ref,
73
73
  "data-slot": "avatar-badge",
74
- className: mergeBaseClassName(["avatar__badge"].filter(Boolean).join(" "), className),
74
+ className: mergeBaseClassName("avatar__badge", className),
75
75
  ...props
76
76
  });
77
77
  }
@@ -1,5 +1,5 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
- import { K as SpinnerIcon, k as MaximizeIcon } from "../icons-DKXiSepE.js";
2
+ import { K as SpinnerIcon, k as MaximizeIcon } from "../icons-DyOM0EJs.js";
3
3
  import { Button } from "./Button.js";
4
4
  import { Dialog } from "./Dialog.js";
5
5
  import { TransitionSurface } from "./TransitionSurface.js";
@@ -15,7 +15,7 @@ function EndedState({ title, detail }) {
15
15
  className: "browser-live-view__ended-title",
16
16
  children: title
17
17
  }), detail ? /* @__PURE__ */ jsx("span", {
18
- className: "browser-live-view__ended-detail",
18
+ className: "browser-live-view__ended-detail sigvelo-truncate",
19
19
  children: detail
20
20
  }) : null]
21
21
  });
@@ -1,15 +1,12 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
- import { B as PlayIcon, R as PauseIcon } from "../icons-DKXiSepE.js";
2
+ import { B as PlayIcon, R as PauseIcon } from "../icons-DyOM0EJs.js";
3
3
  import { Button } from "./Button.js";
4
+ import { r as formatClock } from "../format-S6uWyoSb.js";
4
5
  import { Slider } from "./Slider.js";
5
6
  import * as React from "react";
6
7
  import { jsx, jsxs } from "react/jsx-runtime";
7
8
  import { Replayer } from "@rrweb/replay";
8
9
  //#region src/components/BrowserReplay.tsx
9
- function formatReplayTime(ms) {
10
- const totalSeconds = Math.max(0, Math.floor(ms / 1e3));
11
- return `${Math.floor(totalSeconds / 60)}:${String(totalSeconds % 60).padStart(2, "0")}`;
12
- }
13
10
  function labelReplayFrame(stage) {
14
11
  const frame = stage.querySelector("iframe");
15
12
  if (frame) frame.title = "Browser session replay";
@@ -175,9 +172,9 @@ function BrowserReplay({ className, events, autoPlay, ref, ...props }) {
175
172
  /* @__PURE__ */ jsxs("span", {
176
173
  className: "browser-replay__time",
177
174
  children: [
178
- formatReplayTime(currentTime),
175
+ formatClock(currentTime / 1e3),
179
176
  " / ",
180
- formatReplayTime(duration)
177
+ formatClock(duration / 1e3)
181
178
  ]
182
179
  })
183
180
  ]
@@ -1,5 +1,5 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
- import { K as SpinnerIcon, et as XIcon } from "../icons-DKXiSepE.js";
2
+ import { K as SpinnerIcon, et as XIcon } from "../icons-DyOM0EJs.js";
3
3
  import { Button } from "./Button.js";
4
4
  import { Tabs } from "./Tabs.js";
5
5
  import { BrowserLiveView } from "./BrowserLiveView.js";
@@ -94,7 +94,7 @@ function BrowserRunPanel({ liveView, onRefresh, onCloseSession, loading, error,
94
94
  "aria-hidden": "true",
95
95
  children: targetGlyph(candidate)
96
96
  }), /* @__PURE__ */ jsx("span", {
97
- className: "browser-run-panel__tab-title",
97
+ className: "browser-run-panel__tab-title sigvelo-truncate",
98
98
  children: targetLabel(candidate)
99
99
  })]
100
100
  }, candidate.targetId)), /* @__PURE__ */ jsx(Tabs.Indicator, {})]