@mcp-b/react-components 0.20.1 → 0.20.5

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 (173) 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 +2 -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 +2 -6
  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 +18 -18
  85. package/dist/components/ThemeModeControl.js +1 -1
  86. package/dist/components/ThinkChatActivity.js +2 -1
  87. package/dist/components/ThinkChatActivitySummary.js +14 -5
  88. package/dist/components/ThinkChatToolPanels.js +1 -1
  89. package/dist/components/ThinkExecutionDetail.js +1 -1
  90. package/dist/components/ThinkExecutionRun.js +2 -2
  91. package/dist/components/ThinkExecutionStatus.js +1 -1
  92. package/dist/components/ThinkExecutionWorkbench.js +2 -2
  93. package/dist/components/ThinkFullApp.js +4 -74
  94. package/dist/components/ThinkPendingApproval.js +1 -3
  95. package/dist/components/ThinkRoutine.d.ts +1 -1
  96. package/dist/components/ThinkRoutine.js +3 -10
  97. package/dist/components/ThinkRoutineBrowser.js +9 -9
  98. package/dist/components/ThinkRoutineDetail.js +1 -1
  99. package/dist/components/ThinkRoutineForm.js +1 -1
  100. package/dist/components/ThinkRoutineLibrary.js +1 -1
  101. package/dist/components/ThinkThreadPicker.js +4 -3
  102. package/dist/components/ThinkThreadShell.js +2 -1
  103. package/dist/components/Toast.js +6 -6
  104. package/dist/components/ToggleGroup.js +2 -2
  105. package/dist/components/Tooltip.js +4 -4
  106. package/dist/components/WebPreview.js +1 -1
  107. package/dist/components/WorkspaceBrowser.js +1 -1
  108. package/dist/components/WorkspaceExplorer.js +2 -2
  109. package/dist/components/WorkspaceFileView.js +1 -1
  110. package/dist/components/WorkspaceHeader.js +1 -1
  111. package/dist/components/icons.js +1 -1
  112. package/dist/{copy-button-BtRwhRks.js → copy-button-vo1paUSi.js} +1 -1
  113. package/dist/format-S6uWyoSb.js +38 -0
  114. package/dist/{icons-DKXiSepE.js → icons-DyOM0EJs.js} +2 -1
  115. package/dist/{merge-refs-KlanQB7A.js → merge-refs-DF_7w2x_.js} +1 -1
  116. package/dist/styles/accordion.css +2 -1
  117. package/dist/styles/activity-header.css +4 -18
  118. package/dist/styles/activity.css +1 -1
  119. package/dist/styles/agent-activity-preview-overlay.css +12 -0
  120. package/dist/styles/agent-activity-preview.css +3 -3
  121. package/dist/styles/agent-attention.css +7 -21
  122. package/dist/styles/agent-connection.css +3 -3
  123. package/dist/styles/app-top-bar.css +2 -5
  124. package/dist/styles/artifact.css +1 -1
  125. package/dist/styles/attachment-preview.css +1 -1
  126. package/dist/styles/badge.css +1 -1
  127. package/dist/styles/base.css +15 -0
  128. package/dist/styles/browser-control-overlay.css +4 -3
  129. package/dist/styles/browser-live-view.css +2 -11
  130. package/dist/styles/browser-replay.css +3 -3
  131. package/dist/styles/browser-run-panel.css +3 -12
  132. package/dist/styles/button.css +1 -1
  133. package/dist/styles/chain-of-thought.css +3 -15
  134. package/dist/styles/chatgpt-sign-in-screen.css +2 -2
  135. package/dist/styles/checkbox-group.css +1 -7
  136. package/dist/styles/code-block.css +5 -5
  137. package/dist/styles/codex-model-selector.css +0 -6
  138. package/dist/styles/commit.css +2 -8
  139. package/dist/styles/environment-variables.css +4 -7
  140. package/dist/styles/fieldset.css +1 -1
  141. package/dist/styles/file-tree.css +2 -2
  142. package/dist/styles/github-motion-mark.css +1 -1
  143. package/dist/styles/inline-citation.css +1 -4
  144. package/dist/styles/label.css +1 -1
  145. package/dist/styles/mcp-server-picker.css +1 -4
  146. package/dist/styles/menu.css +1 -1
  147. package/dist/styles/message-scroller.css +3 -21
  148. package/dist/styles/message.css +1 -7
  149. package/dist/styles/model-selector.css +1 -1
  150. package/dist/styles/plan.css +1 -1
  151. package/dist/styles/pricing-page.css +37 -35
  152. package/dist/styles/prompt-input.css +4 -35
  153. package/dist/styles/queue.css +2 -2
  154. package/dist/styles/recipes.css +26 -2
  155. package/dist/styles/sources.css +2 -5
  156. package/dist/styles/stepper.css +1 -7
  157. package/dist/styles/streamdown.css +28 -25
  158. package/dist/styles/subagent-run.css +0 -3
  159. package/dist/styles/task.css +2 -2
  160. package/dist/styles/terminal.css +4 -4
  161. package/dist/styles/test-results.css +3 -18
  162. package/dist/styles/theme-mode-control.css +3 -4
  163. package/dist/styles/think-execution-status.css +1 -7
  164. package/dist/styles/think-execution-workbench.css +1 -4
  165. package/dist/styles/think-full-app.css +1 -4
  166. package/dist/styles/think-routine-library.css +8 -8
  167. package/dist/styles/think-thread-picker.css +14 -36
  168. package/dist/styles/toggle-group.css +1 -1
  169. package/dist/styles/utilities.css +6 -2
  170. package/dist/styles/web-preview.css +4 -4
  171. package/dist/styles/workspace-explorer.css +3 -3
  172. package/dist/view-transitions-DyUP0lSg.js +77 -0
  173. package/package.json +2 -2
@@ -1,5 +1,5 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
- import { B as PlayIcon, K as SpinnerIcon, Q as WarningIcon, d as ChevronDownIcon, y as EllipsisIcon } from "../icons-DKXiSepE.js";
2
+ import { B as PlayIcon, K as SpinnerIcon, Q as WarningIcon, d as ChevronDownIcon, y as EllipsisIcon } from "../icons-DyOM0EJs.js";
3
3
  import { t as NavigationLink } from "../navigation-link-Cob7KBlM.js";
4
4
  import { Button, buttonVariants } from "./Button.js";
5
5
  import { Menu } from "./Menu.js";
@@ -1,5 +1,5 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
- import { K as SpinnerIcon, Q as WarningIcon, V as PlusIcon, _ as DotIcon, t as ArchiveIcon } from "../icons-DKXiSepE.js";
2
+ import { K as SpinnerIcon, Q as WarningIcon, V as PlusIcon, _ as DotIcon, t as ArchiveIcon } from "../icons-DyOM0EJs.js";
3
3
  import { t as NavigationLink } from "../navigation-link-Cob7KBlM.js";
4
4
  import { Button, buttonVariants } from "./Button.js";
5
5
  import { SearchField } from "./SearchField.js";
@@ -161,7 +161,7 @@ function ThinkThreadPicker({ threads, renderThreadLink, onCreate, onDelete, clas
161
161
  /* @__PURE__ */ jsxs("header", {
162
162
  className: "think-thread-picker__header",
163
163
  children: [/* @__PURE__ */ jsx("h2", {
164
- className: "think-thread-picker__title",
164
+ className: "think-thread-picker__title sigvelo-truncate",
165
165
  children: title
166
166
  }), /* @__PURE__ */ jsx(ThinkThreadStatusIndicators, { summary: statusSummary })]
167
167
  }),
@@ -187,6 +187,7 @@ function ThinkThreadPicker({ threads, renderThreadLink, onCreate, onDelete, clas
187
187
  className: "think-thread-picker__scroll",
188
188
  children: [/* @__PURE__ */ jsx(ScrollArea.Viewport, {
189
189
  className: "think-thread-picker__viewport",
190
+ "data-recipe": "scroll-fade-y",
190
191
  "aria-label": "Thread list",
191
192
  children: visibleThreads.length ? /* @__PURE__ */ jsx("ul", {
192
193
  className: "think-thread-picker__list",
@@ -210,7 +211,7 @@ function ThinkThreadPicker({ threads, renderThreadLink, onCreate, onDelete, clas
210
211
  }),
211
212
  "data-thread-status": thread.status,
212
213
  children: [/* @__PURE__ */ jsx("span", {
213
- className: "think-thread-picker__thread-title",
214
+ className: "think-thread-picker__thread-title sigvelo-truncate",
214
215
  children: thread.title
215
216
  }), statusLabel ? /* @__PURE__ */ jsx("span", {
216
217
  className: "think-thread-picker__thread-status",
@@ -1,3 +1,4 @@
1
+ import { t as cx } from "../class-names-BiMDVpUo.js";
1
2
  import { ResponsiveSidebarShell } from "./ResponsiveSidebarShell.js";
2
3
  import "react";
3
4
  import { jsx } from "react/jsx-runtime";
@@ -10,7 +11,7 @@ function ThinkThreadShell({ sidebar, sidebarOpen, defaultSidebarOpen, onSidebarO
10
11
  return /* @__PURE__ */ jsx(ResponsiveSidebarShell, {
11
12
  ...props,
12
13
  ref,
13
- className: ["think-thread-shell", className].filter(Boolean).join(" "),
14
+ className: cx("think-thread-shell", className),
14
15
  sidebar,
15
16
  sidebarLabel: "threads",
16
17
  sidebarOpen,
@@ -24,7 +24,7 @@ const ToastProvider = (props) => {
24
24
  * Container for displaying toasts.
25
25
  */
26
26
  function ToastViewport({ className, ref, ...props }) {
27
- const classes = mergeBaseClassName(["toast__viewport"].filter(Boolean).join(" "), className);
27
+ const classes = mergeBaseClassName("toast__viewport", className);
28
28
  return /* @__PURE__ */ jsx(Toast$1.Viewport, {
29
29
  ref,
30
30
  "data-slot": "toast-viewport",
@@ -36,7 +36,7 @@ function ToastViewport({ className, ref, ...props }) {
36
36
  * Individual toast wrapper.
37
37
  */
38
38
  function ToastRoot({ className, ref, ...props }) {
39
- const classes = mergeBaseClassName(["toast"].filter(Boolean).join(" "), className);
39
+ const classes = mergeBaseClassName("toast", className);
40
40
  return /* @__PURE__ */ jsx(Toast$1.Root, {
41
41
  ref,
42
42
  "data-slot": "toast",
@@ -48,7 +48,7 @@ function ToastRoot({ className, ref, ...props }) {
48
48
  * Container for the contents of a toast.
49
49
  */
50
50
  function ToastContent({ className, ref, ...props }) {
51
- const classes = mergeBaseClassName(["toast__content"].filter(Boolean).join(" "), className);
51
+ const classes = mergeBaseClassName("toast__content", className);
52
52
  return /* @__PURE__ */ jsx(Toast$1.Content, {
53
53
  ref,
54
54
  "data-slot": "toast-content",
@@ -60,7 +60,7 @@ function ToastContent({ className, ref, ...props }) {
60
60
  * Title that labels the toast. Renders an `<h2>` element.
61
61
  */
62
62
  function ToastTitle({ className, ref, ...props }) {
63
- const classes = mergeBaseClassName(["toast__title"].filter(Boolean).join(" "), className);
63
+ const classes = mergeBaseClassName("toast__title", className);
64
64
  return /* @__PURE__ */ jsx(Toast$1.Title, {
65
65
  ref,
66
66
  "data-slot": "toast-title",
@@ -72,7 +72,7 @@ function ToastTitle({ className, ref, ...props }) {
72
72
  * Description text for the toast. Renders a `<p>` element.
73
73
  */
74
74
  function ToastDescription({ className, ref, ...props }) {
75
- const classes = mergeBaseClassName(["toast__description"].filter(Boolean).join(" "), className);
75
+ const classes = mergeBaseClassName("toast__description", className);
76
76
  return /* @__PURE__ */ jsx(Toast$1.Description, {
77
77
  ref,
78
78
  "data-slot": "toast-description",
@@ -102,7 +102,7 @@ function ToastAction({ render, className, ref, ...props }) {
102
102
  * Close button that dismisses the toast.
103
103
  */
104
104
  function ToastClose({ className, ref, ...props }) {
105
- const classes = mergeBaseClassName(["toast__close"].filter(Boolean).join(" "), className);
105
+ const classes = mergeBaseClassName("toast__close", className);
106
106
  return /* @__PURE__ */ jsx(Toast$1.Close, {
107
107
  ref,
108
108
  "data-slot": "toast-close",
@@ -1,4 +1,4 @@
1
- import { n as mergeBaseClassName } from "../class-names-BiMDVpUo.js";
1
+ import { n as mergeBaseClassName, t as cx } from "../class-names-BiMDVpUo.js";
2
2
  import { toggleVariants } from "./Toggle.js";
3
3
  import * as React from "react";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -44,7 +44,7 @@ function ToggleGroupRoot({ size = "md", spacing = 0, variant = "default", classN
44
44
  ...style,
45
45
  gap
46
46
  };
47
- const classes = mergeBaseClassName(["toggle-group", size !== "md" && `toggle-group--${size}`].filter(Boolean).join(" "), className);
47
+ const classes = mergeBaseClassName(cx("toggle-group", size !== "md" && `toggle-group--${size}`), className);
48
48
  const contextValue = React.useMemo(() => ({
49
49
  variant,
50
50
  size,
@@ -38,7 +38,7 @@ function TooltipTrigger(props) {
38
38
  });
39
39
  }
40
40
  function TooltipPositioner({ className, ref, ...props }) {
41
- const classes = mergeBaseClassName(["tooltip__positioner", "base-ui-positioner"].filter(Boolean).join(" "), className);
41
+ const classes = mergeBaseClassName("tooltip__positioner base-ui-positioner", className);
42
42
  return /* @__PURE__ */ jsx(Tooltip$1.Positioner, {
43
43
  ref,
44
44
  "data-slot": "tooltip-positioner",
@@ -47,7 +47,7 @@ function TooltipPositioner({ className, ref, ...props }) {
47
47
  });
48
48
  }
49
49
  function TooltipPopup({ className, ref, role = "tooltip", ...props }) {
50
- const classes = mergeBaseClassName(["tooltip__popup", "base-ui-popup"].filter(Boolean).join(" "), className);
50
+ const classes = mergeBaseClassName("tooltip__popup base-ui-popup", className);
51
51
  return /* @__PURE__ */ jsx(Tooltip$1.Popup, {
52
52
  ref,
53
53
  role,
@@ -62,7 +62,7 @@ function TooltipPopup({ className, ref, role = "tooltip", ...props }) {
62
62
  * positioner, popup, and this viewport when that behavior is needed.
63
63
  */
64
64
  function TooltipViewport({ className, ref, ...props }) {
65
- const classes = mergeBaseClassName(["tooltip__viewport"].filter(Boolean).join(" "), className);
65
+ const classes = mergeBaseClassName("tooltip__viewport", className);
66
66
  return /* @__PURE__ */ jsx(Tooltip$1.Viewport, {
67
67
  ref,
68
68
  "data-slot": "tooltip-viewport",
@@ -71,7 +71,7 @@ function TooltipViewport({ className, ref, ...props }) {
71
71
  });
72
72
  }
73
73
  function TooltipArrow({ className, ref, ...props }) {
74
- const classes = mergeBaseClassName(["tooltip__arrow"].filter(Boolean).join(" "), className);
74
+ const classes = mergeBaseClassName("tooltip__arrow", className);
75
75
  return /* @__PURE__ */ jsx(Tooltip$1.Arrow, {
76
76
  ref,
77
77
  "data-slot": "tooltip-arrow",
@@ -1,5 +1,5 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
- import { U as RefreshIcon, d as ChevronDownIcon, i as ArrowRightIcon, r as ArrowLeftIcon } from "../icons-DKXiSepE.js";
2
+ import { U as RefreshIcon, d as ChevronDownIcon, i as ArrowRightIcon, r as ArrowLeftIcon } from "../icons-DyOM0EJs.js";
3
3
  import { Button } from "./Button.js";
4
4
  import { Tooltip } from "./Tooltip.js";
5
5
  import { Badge } from "./Badge.js";
@@ -1,4 +1,4 @@
1
- import { i as FileTreeFolder, r as FileTreeFile, t as FileTree } from "../FileTree-CUlXfnmc.js";
1
+ import { i as FileTreeFolder, r as FileTreeFile, t as FileTree } from "../FileTree-CdgfccsM.js";
2
2
  import { SearchField } from "./SearchField.js";
3
3
  import { WorkspaceHeader } from "./WorkspaceHeader.js";
4
4
  import * as React from "react";
@@ -1,9 +1,9 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
2
  import { a as WorkspaceNavigationRestorationBoundary, n as WorkspaceNavigationProvider, o as useRequiredWorkspaceNavigationRestoration, r as resolveWorkspaceLink, t as WorkspaceFileLink } from "../WorkspaceLink-BYYeTQLf.js";
3
+ import { n as mergeRefs } from "../merge-refs-DF_7w2x_.js";
3
4
  import { inferWorkspaceLanguage, inferWorkspaceMedia, isWorkspaceMarkdownPath, isWorkspaceMediaPath, isWorkspaceSkillPath, parseWorkspaceSkill } from "./WorkspaceFile.js";
4
5
  import { WorkspaceBrowser } from "./WorkspaceBrowser.js";
5
- import { t as WorkspaceFileView } from "../WorkspaceFileView-CEdArlOT.js";
6
- import { t as mergeRefs } from "../merge-refs-KlanQB7A.js";
6
+ import { t as WorkspaceFileView } from "../WorkspaceFileView-Bxx4wEzJ.js";
7
7
  import { useWorkspace, workspaceBinaryFileQueryOptions, workspaceDirectoryQueryOptions, workspaceFileAssetQueryOptions, workspaceFileStatQueryOptions, workspaceInfoQueryOptions, workspaceQueryKey, workspaceTextFileQueryOptions } from "./Workspace.js";
8
8
  import * as React from "react";
9
9
  import { jsx } from "react/jsx-runtime";
@@ -1,2 +1,2 @@
1
- import { t as WorkspaceFileView } from "../WorkspaceFileView-CEdArlOT.js";
1
+ import { t as WorkspaceFileView } from "../WorkspaceFileView-Bxx4wEzJ.js";
2
2
  export { WorkspaceFileView };
@@ -1,4 +1,4 @@
1
- import { U as RefreshIcon } from "../icons-DKXiSepE.js";
1
+ import { U as RefreshIcon } from "../icons-DyOM0EJs.js";
2
2
  import { AppTopBar } from "./AppTopBar.js";
3
3
  import "react";
4
4
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -1,2 +1,2 @@
1
- import { $ as WrenchIcon, A as McpIcon, B as PlayIcon, C as FolderIcon, D as InfoIcon, E as ImageIcon, F as MoonIcon, G as SidebarIcon, H as QueueIcon, I as MoveToFrontIcon, J as StopIcon, K as SpinnerIcon, L as PaperclipIcon, M as MicrophoneIcon, N as MinusIcon, O as LinkIcon, P as MonitorIcon, Q as WarningIcon, R as PauseIcon, S as FileIcon, T as HashIcon, U as RefreshIcon, V as PlusIcon, W as SearchIcon, X as TerminalIcon, Y as SunIcon, Z as TrashIcon, _ as DotIcon, a as ArrowUpIcon, b as EyeIcon, c as BrainIcon, d as ChevronDownIcon, et as XIcon, f as ChevronLeftIcon, g as DiscordIcon, h as CopyIcon, i as ArrowRightIcon, j as MessageSquareIcon, k as MaximizeIcon, l as CalendarIcon, m as CodeIcon, n as ArrowDownIcon, o as BookmarkIcon, p as ChevronRightIcon, q as SquareIcon, r as ArrowLeftIcon, s as BoxIcon, t as ArchiveIcon, u as CheckIcon, v as DownloadIcon, w as FolderOpenIcon, x as EyeOffIcon, y as EllipsisIcon, z as PencilIcon } from "../icons-DKXiSepE.js";
1
+ import { $ as WrenchIcon, A as McpIcon, B as PlayIcon, C as FolderIcon, D as InfoIcon, E as ImageIcon, F as MoonIcon, G as SidebarIcon, H as QueueIcon, I as MoveToFrontIcon, J as StopIcon, K as SpinnerIcon, L as PaperclipIcon, M as MicrophoneIcon, N as MinusIcon, O as LinkIcon, P as MonitorIcon, Q as WarningIcon, R as PauseIcon, S as FileIcon, T as HashIcon, U as RefreshIcon, V as PlusIcon, W as SearchIcon, X as TerminalIcon, Y as SunIcon, Z as TrashIcon, _ as DotIcon, a as ArrowUpIcon, b as EyeIcon, c as BrainIcon, d as ChevronDownIcon, et as XIcon, f as ChevronLeftIcon, g as DiscordIcon, h as CopyIcon, i as ArrowRightIcon, j as MessageSquareIcon, k as MaximizeIcon, l as CalendarIcon, m as CodeIcon, n as ArrowDownIcon, o as BookmarkIcon, p as ChevronRightIcon, q as SquareIcon, r as ArrowLeftIcon, s as BoxIcon, t as ArchiveIcon, u as CheckIcon, v as DownloadIcon, w as FolderOpenIcon, x as EyeOffIcon, y as EllipsisIcon, z as PencilIcon } from "../icons-DyOM0EJs.js";
2
2
  export { ArchiveIcon, ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowUpIcon, BookmarkIcon, BoxIcon, BrainIcon, CalendarIcon, CheckIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, CodeIcon, CopyIcon, DiscordIcon, DotIcon, DownloadIcon, EllipsisIcon, EyeIcon, EyeOffIcon, FileIcon, FolderIcon, FolderOpenIcon, HashIcon, ImageIcon, InfoIcon, LinkIcon, MaximizeIcon, McpIcon, MessageSquareIcon, MicrophoneIcon, MinusIcon, MonitorIcon, MoonIcon, MoveToFrontIcon, PaperclipIcon, PauseIcon, PencilIcon, PlayIcon, PlusIcon, QueueIcon, RefreshIcon, SearchIcon, SidebarIcon, SpinnerIcon, SquareIcon, StopIcon, SunIcon, TerminalIcon, TrashIcon, WarningIcon, WrenchIcon, XIcon };
@@ -1,4 +1,4 @@
1
- import { h as CopyIcon, u as CheckIcon } from "./icons-DKXiSepE.js";
1
+ import { h as CopyIcon, u as CheckIcon } from "./icons-DyOM0EJs.js";
2
2
  import { Button } from "./components/Button.js";
3
3
  import { Tooltip } from "./components/Tooltip.js";
4
4
  import * as React from "react";
@@ -0,0 +1,38 @@
1
+ //#region src/components/_internal/format.ts
2
+ /**
3
+ * Small string/number formatting helpers shared across components, so the same
4
+ * one-liners are not re-derived in each file.
5
+ */
6
+ /**
7
+ * Constrains `value` to the inclusive `[min, max]` range.
8
+ */
9
+ function clamp(value, min, max) {
10
+ return Math.min(max, Math.max(min, value));
11
+ }
12
+ /**
13
+ * Uppercases the first character of `value`, leaving the rest untouched.
14
+ */
15
+ function capitalize(value) {
16
+ return value.charAt(0).toUpperCase() + value.slice(1);
17
+ }
18
+ /**
19
+ * Turns a `kebab-case` or `snake_case` identifier into a space-separated,
20
+ * word-capitalized label (e.g. `"service-tier"` → `"Service Tier"`).
21
+ */
22
+ function titleCase(value) {
23
+ return value.split(/[-_]/).filter(Boolean).map((word) => word[0].toUpperCase() + word.slice(1)).join(" ");
24
+ }
25
+ /**
26
+ * Formats a whole number of seconds as a clock string — `m:ss`, widening to
27
+ * `h:mm:ss` once it reaches an hour. Negative and fractional inputs are floored
28
+ * to whole seconds, so callers that need rounding should round before calling.
29
+ */
30
+ function formatClock(totalSeconds) {
31
+ const total = Math.max(0, Math.floor(totalSeconds));
32
+ const hours = Math.floor(total / 3600);
33
+ const minutes = Math.floor(total % 3600 / 60);
34
+ const seconds = String(total % 60).padStart(2, "0");
35
+ return hours > 0 ? `${hours}:${String(minutes).padStart(2, "0")}:${seconds}` : `${minutes}:${seconds}`;
36
+ }
37
+ //#endregion
38
+ export { titleCase as i, clamp as n, formatClock as r, capitalize as t };
@@ -1,3 +1,4 @@
1
+ import { t as cx } from "./class-names-BiMDVpUo.js";
1
2
  import { jsx } from "react/jsx-runtime";
2
3
  import { Archive, ArrowDown, ArrowLeft, ArrowRight, ArrowUp, Bookmark, Box, Brain, CalendarDays, Check, ChevronDown, ChevronLeft, ChevronRight, CircleStop, CodeXml, Copy, CornerDownRight, Dot, Download, Ellipsis, Eye, EyeOff, File, Folder, FolderOpen, Hash, Image, Info, Link2, ListRestart, LoaderCircle, Maximize2, MessageSquare, Mic, Minus, Monitor, Moon, PanelLeft, Paperclip, Pause, Pencil, Play, Plus, RefreshCw, Search, Square, Sun, Terminal, Trash2, TriangleAlert, Wrench, X } from "lucide-react";
3
4
  import { SiDiscord, SiModelcontextprotocol } from "react-icons/si";
@@ -61,7 +62,7 @@ function SpinnerIcon({ className, size = 16, strokeWidth = 1.75, ...props }) {
61
62
  strokeWidth,
62
63
  "aria-hidden": "true",
63
64
  focusable: "false",
64
- className: ["sigvelo-icon--spinner", className].filter(Boolean).join(" "),
65
+ className: cx("sigvelo-icon--spinner", className),
65
66
  ...props
66
67
  });
67
68
  }
@@ -15,4 +15,4 @@ function mergeRefs(...refs) {
15
15
  };
16
16
  }
17
17
  //#endregion
18
- export { mergeRefs as t };
18
+ export { mergeRefs as n, assignRef as t };
@@ -3,7 +3,8 @@
3
3
  }
4
4
 
5
5
  .accordion__item {
6
- border-block-end: 1px solid var(--sigvelo-color-neutral-border-muted);
6
+ border-block-end: var(--sigvelo-border-style) var(--sigvelo-border-width)
7
+ var(--sigvelo-color-neutral-border-muted);
7
8
  }
8
9
 
9
10
  .accordion__item:last-child {
@@ -18,9 +18,6 @@
18
18
  min-width: 0;
19
19
  max-width: max-content;
20
20
  color: var(--sigvelo-color-text);
21
- overflow: hidden;
22
- text-overflow: ellipsis;
23
- white-space: nowrap;
24
21
  }
25
22
 
26
23
  .activity__item-icon {
@@ -31,29 +28,18 @@
31
28
 
32
29
  .activity[data-streaming] .activity__header-label,
33
30
  .activity__header[data-streaming] .activity__header-label {
34
- --activity-shimmer-base: color-mix(in oklab, var(--sigvelo-color-text-muted), transparent 20%);
31
+ --sigvelo-shimmer-base: color-mix(in oklab, var(--sigvelo-color-text-muted), transparent 20%);
35
32
  background: linear-gradient(
36
33
  90deg,
37
- var(--activity-shimmer-base) 0%,
38
- var(--activity-shimmer-base) 40%,
34
+ var(--sigvelo-shimmer-base) 0% 40%,
39
35
  var(--sigvelo-color-text) 50%,
40
- var(--activity-shimmer-base) 60%,
41
- var(--activity-shimmer-base) 100%
36
+ var(--sigvelo-shimmer-base) 60% 100%
42
37
  );
43
38
  background-size: 200% 100%;
44
39
  -webkit-background-clip: text;
45
40
  background-clip: text;
46
41
  color: transparent;
47
- animation: activity-shimmer 2.4s linear infinite;
48
- }
49
-
50
- @keyframes activity-shimmer {
51
- from {
52
- background-position: 100% 0;
53
- }
54
- to {
55
- background-position: -100% 0;
56
- }
42
+ animation: sigvelo-text-shimmer var(--sigvelo-motion-duration-shimmer) linear infinite;
57
43
  }
58
44
 
59
45
  @media (prefers-reduced-motion: reduce) {
@@ -339,7 +339,7 @@
339
339
 
340
340
  @media (forced-colors: active) {
341
341
  .activity__trigger:focus-visible {
342
- outline: 2px solid Highlight;
342
+ outline: var(--sigvelo-focus-ring-forced);
343
343
  outline-offset: 2px;
344
344
  }
345
345
  }
@@ -61,6 +61,18 @@
61
61
  }
62
62
  }
63
63
 
64
+ /* Shadow-local copy of base.css's sigvelo-text-shimmer — keyframes do not cross
65
+ shadow roots, so the imported activity header shimmer needs it defined here.
66
+ --sigvelo-motion-duration-shimmer inherits across the boundary. */
67
+ @keyframes sigvelo-text-shimmer {
68
+ from {
69
+ background-position: 100% 0;
70
+ }
71
+ to {
72
+ background-position: -100% 0;
73
+ }
74
+ }
75
+
64
76
  @media (prefers-color-scheme: dark) {
65
77
  :host {
66
78
  --sigvelo-color-warning-text: #f0aa45;
@@ -94,7 +94,7 @@
94
94
  }
95
95
 
96
96
  .agent-activity-preview__item:first-child {
97
- padding-inline-end: calc(2rem + var(--sigvelo-spacing-0-5));
97
+ padding-inline-end: calc(var(--sigvelo-spacing-8) + var(--sigvelo-spacing-0-5));
98
98
  }
99
99
 
100
100
  .agent-activity-preview__row {
@@ -166,7 +166,7 @@
166
166
  .agent-activity-preview__favicons {
167
167
  display: flex;
168
168
  align-items: center;
169
- padding-inline-start: 0.25rem;
169
+ padding-inline-start: var(--sigvelo-spacing-1);
170
170
  }
171
171
 
172
172
  .agent-activity-preview__favicons img {
@@ -234,6 +234,6 @@
234
234
  .agent-activity-preview__dismiss,
235
235
  .agent-activity-preview__file-action,
236
236
  .agent-activity-preview__favicons img {
237
- border: 1px solid CanvasText;
237
+ border: var(--sigvelo-border-style) var(--sigvelo-border-width) CanvasText;
238
238
  }
239
239
  }
@@ -4,7 +4,8 @@
4
4
  min-width: 0;
5
5
  gap: var(--sigvelo-spacing-1-5);
6
6
  padding: var(--sigvelo-spacing-1-5);
7
- border: 1px solid var(--sigvelo-color-neutral-border-muted);
7
+ border: var(--sigvelo-border-style) var(--sigvelo-border-width)
8
+ var(--sigvelo-color-neutral-border-muted);
8
9
  border-radius: var(--sigvelo-radius-md);
9
10
  color: var(--sigvelo-color-text);
10
11
  background: var(--sigvelo-color-surface);
@@ -60,13 +61,6 @@
60
61
  line-height: 1.35;
61
62
  }
62
63
 
63
- .agent-attention__title,
64
- .agent-attention__description {
65
- overflow: hidden;
66
- text-overflow: ellipsis;
67
- white-space: nowrap;
68
- }
69
-
70
64
  .agent-attention__title {
71
65
  font-size: var(--sigvelo-text-compact);
72
66
  font-weight: var(--sigvelo-font-weight-semibold);
@@ -97,26 +91,18 @@
97
91
  }
98
92
 
99
93
  .agent-attention[data-busy] .agent-attention__title {
100
- --agent-attention-shimmer: color-mix(in oklab, var(--sigvelo-color-text-muted), transparent 20%);
94
+ --sigvelo-shimmer-base: color-mix(in oklab, var(--sigvelo-color-text-muted), transparent 20%);
101
95
  background: linear-gradient(
102
96
  90deg,
103
- var(--agent-attention-shimmer) 0% 40%,
97
+ var(--sigvelo-shimmer-base) 0% 40%,
104
98
  var(--sigvelo-color-text) 50%,
105
- var(--agent-attention-shimmer) 60% 100%
99
+ var(--sigvelo-shimmer-base) 60% 100%
106
100
  );
107
101
  background-size: 200% 100%;
102
+ -webkit-background-clip: text;
108
103
  background-clip: text;
109
104
  color: transparent;
110
- animation: agent-attention-shimmer 2.4s linear infinite;
111
- }
112
-
113
- @keyframes agent-attention-shimmer {
114
- from {
115
- background-position: 100% 0;
116
- }
117
- to {
118
- background-position: -100% 0;
119
- }
105
+ animation: sigvelo-text-shimmer var(--sigvelo-motion-duration-shimmer) linear infinite;
120
106
  }
121
107
 
122
108
  @media (prefers-reduced-motion: reduce), (forced-colors: active) {
@@ -52,10 +52,10 @@
52
52
  .agent-connect__targets {
53
53
  display: grid;
54
54
  grid-template-columns: repeat(4, minmax(0, 1fr));
55
- gap: 0.25rem;
55
+ gap: var(--sigvelo-spacing-1);
56
56
  min-inline-size: 0;
57
57
  margin: 0;
58
- padding: 0.25rem;
58
+ padding: var(--sigvelo-spacing-1);
59
59
  border: var(--sigvelo-border-style) var(--sigvelo-border-width)
60
60
  var(--sigvelo-color-neutral-border-subtle);
61
61
  border-radius: var(--sigvelo-radius-md);
@@ -175,7 +175,7 @@
175
175
  }
176
176
 
177
177
  .agent-connect__target[data-selected="true"] {
178
- outline: 2px solid Highlight;
178
+ outline: var(--sigvelo-focus-ring-forced);
179
179
  outline-offset: -2px;
180
180
  }
181
181
  }
@@ -38,13 +38,10 @@
38
38
  max-inline-size: min(20rem, 45vw);
39
39
  align-self: center;
40
40
  justify-self: center;
41
- overflow: hidden;
42
41
  color: var(--sigvelo-color-text);
43
42
  font-size: var(--sigvelo-density-compact-control-font-size);
44
43
  font-weight: var(--sigvelo-font-weight-semibold);
45
44
  line-height: var(--sigvelo-leading-tight);
46
- text-overflow: ellipsis;
47
- white-space: nowrap;
48
45
  }
49
46
 
50
47
  .app-top-bar__trailing {
@@ -98,13 +95,13 @@
98
95
  }
99
96
 
100
97
  .app-top-bar__button:focus-visible {
101
- outline: 2px solid Highlight;
98
+ outline: var(--sigvelo-focus-ring-forced);
102
99
  outline-offset: 2px;
103
100
  box-shadow: none;
104
101
  }
105
102
 
106
103
  .app-top-bar__button:is([aria-expanded="true"], [data-popup-open], [data-pressed]) {
107
- outline: 2px solid Highlight;
104
+ outline: var(--sigvelo-focus-ring-forced);
108
105
  outline-offset: -2px;
109
106
  }
110
107
  }
@@ -63,6 +63,6 @@
63
63
 
64
64
  @media (forced-colors: active) {
65
65
  .artifact {
66
- border: 1px solid CanvasText;
66
+ border: var(--sigvelo-border-style) var(--sigvelo-border-width) CanvasText;
67
67
  }
68
68
  }
@@ -14,7 +14,7 @@
14
14
  }
15
15
 
16
16
  .attachment-preview__name {
17
- margin-block-start: 0.5rem;
17
+ margin-block-start: var(--sigvelo-spacing-2);
18
18
  font-size: var(--sigvelo-text-xs);
19
19
  color: var(--sigvelo-color-text-muted);
20
20
  text-align: center;
@@ -110,7 +110,7 @@
110
110
 
111
111
  @media (forced-colors: active) {
112
112
  .badge {
113
- border: 1px solid ButtonText;
113
+ border: var(--sigvelo-border-style) var(--sigvelo-border-width) ButtonText;
114
114
  }
115
115
 
116
116
  .badge--ghost,
@@ -35,6 +35,21 @@ body {
35
35
  }
36
36
  }
37
37
 
38
+ /*
39
+ * Canonical "busy/streaming" text-shimmer sweep. Components own the gradient
40
+ * treatment and state gating; they share this keyframe and
41
+ * --sigvelo-motion-duration-shimmer. Shadow-isolated bundles keep a local copy
42
+ * (keyframes do not cross shadow roots), the same as sigvelo-icon-spin.
43
+ */
44
+ @keyframes sigvelo-text-shimmer {
45
+ from {
46
+ background-position: 100% 0;
47
+ }
48
+ to {
49
+ background-position: -100% 0;
50
+ }
51
+ }
52
+
38
53
  @media (prefers-reduced-motion: reduce) {
39
54
  .sigvelo-icon--spinner {
40
55
  animation: none;
@@ -85,7 +85,7 @@
85
85
  :host .takeover,
86
86
  :host .owner {
87
87
  background: var(--browser-control-accent);
88
- border: 1px solid var(--browser-control-accent-text);
88
+ border: var(--sigvelo-border-style) var(--sigvelo-border-width) var(--browser-control-accent-text);
89
89
  box-shadow: 0 2px 10px var(--browser-control-shadow);
90
90
  color: var(--browser-control-accent-text);
91
91
  }
@@ -120,7 +120,8 @@
120
120
  :host .banner {
121
121
  align-items: center;
122
122
  background: var(--browser-control-warning);
123
- border: 1px solid var(--browser-control-warning-text);
123
+ border: var(--sigvelo-border-style) var(--sigvelo-border-width)
124
+ var(--browser-control-warning-text);
124
125
  border-radius: 14px;
125
126
  box-shadow: 0 4px 18px var(--browser-control-shadow);
126
127
  color: var(--browser-control-warning-text);
@@ -147,7 +148,7 @@
147
148
 
148
149
  :host .banner .done,
149
150
  :host .banner .cannot {
150
- border: 1px solid currentcolor;
151
+ border: var(--sigvelo-border-style) var(--sigvelo-border-width) currentcolor;
151
152
  color: inherit;
152
153
  flex-shrink: 0;
153
154
  }
@@ -41,7 +41,7 @@
41
41
  .browser-live-view__badge-dot {
42
42
  inline-size: var(--sigvelo-spacing-1-5);
43
43
  block-size: var(--sigvelo-spacing-1-5);
44
- border-radius: 50%;
44
+ border-radius: var(--sigvelo-radius-circle);
45
45
  background-color: currentColor;
46
46
  animation: browser-live-view-pulse 1.4s ease-in-out infinite;
47
47
  }
@@ -66,9 +66,6 @@
66
66
  font-size: var(--sigvelo-text-xs);
67
67
  color: var(--sigvelo-color-text-muted);
68
68
  max-inline-size: 80%;
69
- overflow: hidden;
70
- text-overflow: ellipsis;
71
- white-space: nowrap;
72
69
  }
73
70
 
74
71
  /* An expired view showing a screenshot fallback keeps the image flush */
@@ -95,7 +92,7 @@
95
92
  }
96
93
 
97
94
  .browser-live-view__state-spinner {
98
- animation: browser-live-view-spin 900ms linear infinite;
95
+ animation: sigvelo-icon-spin 900ms linear infinite;
99
96
  }
100
97
 
101
98
  /* Expand affordance, video-player style: quiet until the box is hovered or
@@ -157,12 +154,6 @@
157
154
  }
158
155
  }
159
156
 
160
- @keyframes browser-live-view-spin {
161
- to {
162
- transform: rotate(360deg);
163
- }
164
- }
165
-
166
157
  @media (prefers-reduced-motion: reduce) {
167
158
  .browser-live-view__badge-dot,
168
159
  .browser-live-view__state-spinner {
@@ -39,7 +39,7 @@
39
39
  inset: 0;
40
40
  display: grid;
41
41
  place-content: center;
42
- padding: 1rem;
42
+ padding: var(--sigvelo-spacing-4);
43
43
  color: var(--sigvelo-color-text-muted);
44
44
  font-size: var(--sigvelo-text-compact);
45
45
  text-align: center;
@@ -49,7 +49,7 @@
49
49
  display: flex;
50
50
  align-items: center;
51
51
  gap: var(--sigvelo-spacing-2-5);
52
- padding-block: 0.5rem;
52
+ padding-block: var(--sigvelo-spacing-2);
53
53
  padding-inline: var(--sigvelo-spacing-3);
54
54
  border-block-start: var(--sigvelo-border-style) var(--sigvelo-border-width)
55
55
  var(--sigvelo-color-neutral-border-subtle);
@@ -184,6 +184,6 @@
184
184
 
185
185
  @media (forced-colors: active) {
186
186
  .browser-replay {
187
- border: 1px solid CanvasText;
187
+ border: var(--sigvelo-border-style) var(--sigvelo-border-width) CanvasText;
188
188
  }
189
189
  }