@mcp-b/react-components 0.20.0 → 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 (156) hide show
  1. package/dist/{AgentChat-CaQaT0LF.d.ts → AgentChat-C-ZyXbJz.d.ts} +3 -0
  2. package/dist/{CodeBlock-Bb-IPBc_.js → CodeBlock-ygtuzqJd.js} +1 -1
  3. package/dist/{FileTree-CUlXfnmc.js → FileTree-CdgfccsM.js} +5 -5
  4. package/dist/{Message-rZEaaD8Q.js → Message-DzuteocT.js} +4 -3
  5. package/dist/{ModelSelector-4GsCWcZV.js → ModelSelector-pecWyOFI.js} +4 -3
  6. package/dist/{ThinkChat-15EhfvYJ.js → ThinkChat-E_HrfH76.js} +15 -6
  7. package/dist/{ThinkChatActivity-CnIJPvV5.d.ts → ThinkChatActivity-CdbL0aoA.d.ts} +1 -1
  8. package/dist/{WorkspaceFileView-CEdArlOT.js → WorkspaceFileView-Bxx4wEzJ.js} +5 -11
  9. package/dist/components/Accordion.js +4 -4
  10. package/dist/components/Activity.js +2 -2
  11. package/dist/components/AgentActivity.js +1 -1
  12. package/dist/components/AgentActivityPreview.js +1 -1
  13. package/dist/components/AgentAttention.js +2 -2
  14. package/dist/components/AgentChat.d.ts +1 -1
  15. package/dist/components/AgentChat.js +8 -6
  16. package/dist/components/AgentConnection.js +2 -2
  17. package/dist/components/AgentMessageParts.js +1 -1
  18. package/dist/components/AgentToolDetail.js +2 -2
  19. package/dist/components/AlertDialog.js +8 -8
  20. package/dist/components/AppTopBar.js +1 -1
  21. package/dist/components/Approval.js +1 -1
  22. package/dist/components/Artifact.js +1 -1
  23. package/dist/components/Autocomplete.js +11 -11
  24. package/dist/components/Avatar.js +6 -6
  25. package/dist/components/BrowserLiveView.js +2 -2
  26. package/dist/components/BrowserReplay.js +4 -7
  27. package/dist/components/BrowserRunPanel.js +2 -2
  28. package/dist/components/Card.js +8 -11
  29. package/dist/components/ChainOfThought.js +2 -2
  30. package/dist/components/ChatGptSignInScreen.js +2 -2
  31. package/dist/components/Checkbox.js +2 -2
  32. package/dist/components/CheckboxGroup.js +7 -7
  33. package/dist/components/Checkpoint.js +1 -1
  34. package/dist/components/CodeBlock.js +1 -1
  35. package/dist/components/CodexModelSelector.js +5 -4
  36. package/dist/components/Collapsible.js +2 -2
  37. package/dist/components/Combobox.js +11 -11
  38. package/dist/components/Commit.js +4 -4
  39. package/dist/components/Context.js +3 -1
  40. package/dist/components/ContextMenu.js +13 -13
  41. package/dist/components/Conversation.js +3 -8
  42. package/dist/components/Dialog.js +6 -6
  43. package/dist/components/EnvironmentVariables.js +3 -3
  44. package/dist/components/Field.js +7 -7
  45. package/dist/components/Fieldset.js +3 -3
  46. package/dist/components/FileTree.js +1 -1
  47. package/dist/components/Form.js +1 -1
  48. package/dist/components/InlineCitation.js +2 -2
  49. package/dist/components/Input.js +1 -1
  50. package/dist/components/Label.js +2 -1
  51. package/dist/components/McpConnectionRequest.js +1 -1
  52. package/dist/components/McpServerPicker.js +3 -3
  53. package/dist/components/MediaPreviewCard.js +5 -4
  54. package/dist/components/Menu.js +17 -17
  55. package/dist/components/Menubar.js +14 -14
  56. package/dist/components/Message.js +1 -1
  57. package/dist/components/MessageScroller.js +1 -1
  58. package/dist/components/Meter.js +5 -5
  59. package/dist/components/ModelSelector.js +1 -1
  60. package/dist/components/NaniteScene.js +2 -1
  61. package/dist/components/NavigationMenu.js +11 -11
  62. package/dist/components/NumberField.js +6 -6
  63. package/dist/components/Plan.js +1 -1
  64. package/dist/components/Popover.js +12 -14
  65. package/dist/components/PreviewCard.js +6 -6
  66. package/dist/components/PricingPage.js +2 -1
  67. package/dist/components/PricingPlanCard.js +1 -1
  68. package/dist/components/Progress.js +4 -4
  69. package/dist/components/PromptInput.js +10 -12
  70. package/dist/components/Queue.js +1 -1
  71. package/dist/components/RadioGroup.js +4 -4
  72. package/dist/components/Reasoning.js +2 -2
  73. package/dist/components/ResizableSidePanel.js +3 -5
  74. package/dist/components/ResponsiveSidebarShell.js +4 -3
  75. package/dist/components/ScrollArea.js +6 -6
  76. package/dist/components/SearchField.js +1 -1
  77. package/dist/components/Select.js +15 -15
  78. package/dist/components/Slider.js +7 -7
  79. package/dist/components/Sources.js +2 -2
  80. package/dist/components/Stepper.js +1 -1
  81. package/dist/components/SubagentRunDetails.js +2 -1
  82. package/dist/components/SubagentRunIndicator.js +1 -1
  83. package/dist/components/SubagentRunSelector.js +1 -1
  84. package/dist/components/Switch.js +3 -3
  85. package/dist/components/Tabs.js +2 -2
  86. package/dist/components/Task.js +2 -2
  87. package/dist/components/Terminal.js +2 -2
  88. package/dist/components/TestResults.js +3 -3
  89. package/dist/components/ThemeModeControl.js +1 -1
  90. package/dist/components/ThinkChat.d.ts +12 -3
  91. package/dist/components/ThinkChat.js +1 -1
  92. package/dist/components/ThinkChatActivity.d.ts +1 -1
  93. package/dist/components/ThinkChatActivity.js +2 -1
  94. package/dist/components/ThinkChatActivitySummary.js +17 -4
  95. package/dist/components/ThinkChatToolPanels.js +10 -5
  96. package/dist/components/ThinkExecutionDetail.js +1 -1
  97. package/dist/components/ThinkExecutionStatus.js +1 -1
  98. package/dist/components/ThinkExecutionWorkbench.js +2 -2
  99. package/dist/components/ThinkFullApp.js +6 -76
  100. package/dist/components/ThinkPendingApproval.js +1 -3
  101. package/dist/components/ThinkRoutine.d.ts +1 -1
  102. package/dist/components/ThinkRoutine.js +2 -1
  103. package/dist/components/ThinkRoutineBrowser.js +9 -9
  104. package/dist/components/ThinkRoutineDetail.js +1 -1
  105. package/dist/components/ThinkRoutineForm.js +1 -1
  106. package/dist/components/ThinkRoutineLibrary.js +1 -1
  107. package/dist/components/ThinkThreadPicker.js +3 -3
  108. package/dist/components/ThinkThreadShell.js +2 -1
  109. package/dist/components/Toast.js +6 -6
  110. package/dist/components/ToggleGroup.js +2 -2
  111. package/dist/components/Tooltip.js +4 -4
  112. package/dist/components/WebPreview.js +1 -1
  113. package/dist/components/WorkspaceBrowser.js +1 -1
  114. package/dist/components/WorkspaceExplorer.js +2 -2
  115. package/dist/components/WorkspaceFileView.js +1 -1
  116. package/dist/components/WorkspaceHeader.js +1 -1
  117. package/dist/components/icons.js +1 -1
  118. package/dist/{copy-button-BtRwhRks.js → copy-button-vo1paUSi.js} +1 -1
  119. package/dist/format-S6uWyoSb.js +38 -0
  120. package/dist/{icons-DKXiSepE.js → icons-DyOM0EJs.js} +2 -1
  121. package/dist/{merge-refs-KlanQB7A.js → merge-refs-DF_7w2x_.js} +1 -1
  122. package/dist/styles/activity-header.css +0 -3
  123. package/dist/styles/activity.css +1 -1
  124. package/dist/styles/agent-attention.css +0 -7
  125. package/dist/styles/agent-connection.css +1 -1
  126. package/dist/styles/app-top-bar.css +2 -5
  127. package/dist/styles/browser-live-view.css +1 -10
  128. package/dist/styles/browser-run-panel.css +2 -11
  129. package/dist/styles/chain-of-thought.css +2 -14
  130. package/dist/styles/checkbox-group.css +0 -6
  131. package/dist/styles/codex-model-selector.css +0 -6
  132. package/dist/styles/commit.css +1 -7
  133. package/dist/styles/environment-variables.css +0 -3
  134. package/dist/styles/file-tree.css +1 -1
  135. package/dist/styles/inline-citation.css +1 -4
  136. package/dist/styles/mcp-server-picker.css +0 -3
  137. package/dist/styles/message.css +0 -6
  138. package/dist/styles/model-selector.css +1 -1
  139. package/dist/styles/prompt-input.css +3 -34
  140. package/dist/styles/queue.css +1 -1
  141. package/dist/styles/recipes.css +2 -2
  142. package/dist/styles/sources.css +1 -4
  143. package/dist/styles/stepper.css +1 -7
  144. package/dist/styles/subagent-run.css +0 -3
  145. package/dist/styles/task.css +1 -1
  146. package/dist/styles/test-results.css +2 -17
  147. package/dist/styles/theme-mode-control.css +1 -1
  148. package/dist/styles/think-execution-status.css +1 -7
  149. package/dist/styles/think-execution-workbench.css +0 -3
  150. package/dist/styles/think-full-app.css +0 -3
  151. package/dist/styles/think-thread-picker.css +2 -14
  152. package/dist/styles/toggle-group.css +1 -1
  153. package/dist/styles/utilities.css +6 -2
  154. package/dist/styles/workspace-explorer.css +1 -1
  155. package/dist/view-transitions-DyUP0lSg.js +77 -0
  156. package/package.json +2 -2
@@ -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, {})]
@@ -1,3 +1,4 @@
1
+ import { t as cx } from "../class-names-BiMDVpUo.js";
1
2
  import "react";
2
3
  import { jsx } from "react/jsx-runtime";
3
4
  import { useRender } from "@base-ui/react/use-render";
@@ -22,11 +23,7 @@ function Card({ hover = false, size = "default", className = "", children, ref,
22
23
  ref,
23
24
  "data-slot": "card",
24
25
  "data-size": size,
25
- className: [
26
- "card",
27
- hover && "card--hover",
28
- className
29
- ].filter(Boolean).join(" "),
26
+ className: cx("card", hover && "card--hover", className),
30
27
  ...props,
31
28
  children
32
29
  });
@@ -35,7 +32,7 @@ function CardHeader({ className = "", ref, ...props }) {
35
32
  return /* @__PURE__ */ jsx("div", {
36
33
  ref,
37
34
  "data-slot": "card-header",
38
- className: ["card__header", className].filter(Boolean).join(" "),
35
+ className: cx("card__header", className),
39
36
  ...props
40
37
  });
41
38
  }
@@ -47,7 +44,7 @@ function CardTitle({ className = "", render, ref, ...props }) {
47
44
  props: {
48
45
  ...props,
49
46
  "data-slot": "card-title",
50
- className: ["card__title", className].filter(Boolean).join(" ")
47
+ className: cx("card__title", className)
51
48
  }
52
49
  });
53
50
  }
@@ -59,7 +56,7 @@ function CardDescription({ className = "", render, ref, ...props }) {
59
56
  props: {
60
57
  ...props,
61
58
  "data-slot": "card-description",
62
- className: ["card__description", className].filter(Boolean).join(" ")
59
+ className: cx("card__description", className)
63
60
  }
64
61
  });
65
62
  }
@@ -67,7 +64,7 @@ function CardAction({ className = "", ref, ...props }) {
67
64
  return /* @__PURE__ */ jsx("div", {
68
65
  ref,
69
66
  "data-slot": "card-action",
70
- className: ["card__action", className].filter(Boolean).join(" "),
67
+ className: cx("card__action", className),
71
68
  ...props
72
69
  });
73
70
  }
@@ -75,7 +72,7 @@ function CardContent({ className = "", ref, ...props }) {
75
72
  return /* @__PURE__ */ jsx("div", {
76
73
  ref,
77
74
  "data-slot": "card-content",
78
- className: ["card__content", className].filter(Boolean).join(" "),
75
+ className: cx("card__content", className),
79
76
  ...props
80
77
  });
81
78
  }
@@ -83,7 +80,7 @@ function CardFooter({ className = "", ref, ...props }) {
83
80
  return /* @__PURE__ */ jsx("div", {
84
81
  ref,
85
82
  "data-slot": "card-footer",
86
- className: ["card__footer", className].filter(Boolean).join(" "),
83
+ className: cx("card__footer", className),
87
84
  ...props
88
85
  });
89
86
  }
@@ -1,6 +1,6 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
2
  import { Collapsible } from "./Collapsible.js";
3
- import { K as SpinnerIcon, _ as DotIcon, p as ChevronRightIcon, u as CheckIcon } from "../icons-DKXiSepE.js";
3
+ import { K as SpinnerIcon, _ as DotIcon, p as ChevronRightIcon, u as CheckIcon } from "../icons-DyOM0EJs.js";
4
4
  import "react";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
6
  //#region src/components/ChainOfThought.tsx
@@ -128,7 +128,7 @@ function ChainOfThoughtSearchResult({ className, children, title, href, ref, ...
128
128
  children: /* @__PURE__ */ jsx("a", {
129
129
  ref,
130
130
  href,
131
- className: cx("chain-of-thought__search-result", className),
131
+ className: cx("chain-of-thought__search-result", "sigvelo-truncate", className),
132
132
  target: "_blank",
133
133
  rel: "noreferrer",
134
134
  ...props,
@@ -1,7 +1,7 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
- import { K as SpinnerIcon } from "../icons-DKXiSepE.js";
2
+ import { K as SpinnerIcon } from "../icons-DyOM0EJs.js";
3
3
  import { Button } from "./Button.js";
4
- import { u as ModelSelectorLogo } from "../ModelSelector-4GsCWcZV.js";
4
+ import { u as ModelSelectorLogo } from "../ModelSelector-pecWyOFI.js";
5
5
  import "react";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
7
7
  //#region src/components/ChatGptSignInScreen.tsx
@@ -1,5 +1,5 @@
1
1
  import { n as mergeBaseClassName } from "../class-names-BiMDVpUo.js";
2
- import { u as CheckIcon } from "../icons-DKXiSepE.js";
2
+ import { u as CheckIcon } from "../icons-DyOM0EJs.js";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  import { Checkbox as Checkbox$1 } from "@base-ui/react/checkbox";
5
5
  //#region src/components/Checkbox.tsx
@@ -19,7 +19,7 @@ import { Checkbox as Checkbox$1 } from "@base-ui/react/checkbox";
19
19
  * @see {@link https://base-ui.com/react/components/checkbox | Base UI Checkbox}
20
20
  */
21
21
  function CheckboxRoot({ className, ref, ...props }) {
22
- const classes = mergeBaseClassName(["checkbox"].filter(Boolean).join(" "), className);
22
+ const classes = mergeBaseClassName("checkbox", className);
23
23
  return /* @__PURE__ */ jsx(Checkbox$1.Root, {
24
24
  ref,
25
25
  "data-slot": "checkbox",
@@ -63,7 +63,7 @@ function CheckboxGroupRoot({ className, layout = "stack", ref, ...props }) {
63
63
  return /* @__PURE__ */ jsx(CheckboxGroup$1, {
64
64
  ref,
65
65
  "data-layout": layout,
66
- className: mergeBaseClassName(["checkbox-group"].filter(Boolean).join(" "), className),
66
+ className: mergeBaseClassName("checkbox-group", className),
67
67
  ...props
68
68
  });
69
69
  }
@@ -71,7 +71,7 @@ function CheckboxGroupItem({ className, ref, ...props }) {
71
71
  return /* @__PURE__ */ jsx("label", {
72
72
  ref,
73
73
  "data-slot": "checkbox-group-item",
74
- className: mergeBaseClassName(["checkbox-group__item"].filter(Boolean).join(" "), className),
74
+ className: mergeBaseClassName("checkbox-group__item", className),
75
75
  ...props
76
76
  });
77
77
  }
@@ -79,7 +79,7 @@ function CheckboxGroupIcon({ className, ref, ...props }) {
79
79
  return /* @__PURE__ */ jsx("span", {
80
80
  ref,
81
81
  "data-slot": "checkbox-group-icon",
82
- className: mergeBaseClassName(["checkbox-group__icon"].filter(Boolean).join(" "), className),
82
+ className: mergeBaseClassName("checkbox-group__icon", className),
83
83
  ...props
84
84
  });
85
85
  }
@@ -87,7 +87,7 @@ function CheckboxGroupContent({ className, ref, ...props }) {
87
87
  return /* @__PURE__ */ jsx("span", {
88
88
  ref,
89
89
  "data-slot": "checkbox-group-content",
90
- className: mergeBaseClassName(["checkbox-group__content"].filter(Boolean).join(" "), className),
90
+ className: mergeBaseClassName("checkbox-group__content", className),
91
91
  ...props
92
92
  });
93
93
  }
@@ -95,7 +95,7 @@ function CheckboxGroupTitle({ className, ref, ...props }) {
95
95
  return /* @__PURE__ */ jsx("span", {
96
96
  ref,
97
97
  "data-slot": "checkbox-group-title",
98
- className: mergeBaseClassName(["checkbox-group__title"].filter(Boolean).join(" "), className),
98
+ className: mergeBaseClassName("checkbox-group__title", className),
99
99
  ...props
100
100
  });
101
101
  }
@@ -103,7 +103,7 @@ function CheckboxGroupDescription({ className, ref, ...props }) {
103
103
  return /* @__PURE__ */ jsx("span", {
104
104
  ref,
105
105
  "data-slot": "checkbox-group-description",
106
- className: mergeBaseClassName(["checkbox-group__description"].filter(Boolean).join(" "), className),
106
+ className: mergeBaseClassName("checkbox-group__description sigvelo-truncate", className),
107
107
  ...props
108
108
  });
109
109
  }
@@ -111,7 +111,7 @@ function CheckboxGroupTrailing({ className, ref, ...props }) {
111
111
  return /* @__PURE__ */ jsx("span", {
112
112
  ref,
113
113
  "data-slot": "checkbox-group-trailing",
114
- className: mergeBaseClassName(["checkbox-group__trailing"].filter(Boolean).join(" "), className),
114
+ className: mergeBaseClassName("checkbox-group__trailing", className),
115
115
  ...props
116
116
  });
117
117
  }
@@ -1,5 +1,5 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
- import { o as BookmarkIcon } from "../icons-DKXiSepE.js";
2
+ import { o as BookmarkIcon } from "../icons-DyOM0EJs.js";
3
3
  import { Marker, MarkerIcon } from "./Marker.js";
4
4
  import "react";
5
5
  import { jsx } from "react/jsx-runtime";
@@ -1,2 +1,2 @@
1
- import { a as CodeBlockCopyButton, c as CodeBlockLanguageSelector, d as CodeBlockLanguageSelectorTrigger, f as CodeBlockLanguageSelectorValue, h as CODE_BLOCK_LANGUAGES, i as CodeBlockContent, l as CodeBlockLanguageSelectorContent, m as highlightCode, n as CodeBlockActions, o as CodeBlockFilename, p as CodeBlockTitle, r as CodeBlockContainer, s as CodeBlockHeader, t as CodeBlock, u as CodeBlockLanguageSelectorItem } from "../CodeBlock-Bb-IPBc_.js";
1
+ import { a as CodeBlockCopyButton, c as CodeBlockLanguageSelector, d as CodeBlockLanguageSelectorTrigger, f as CodeBlockLanguageSelectorValue, h as CODE_BLOCK_LANGUAGES, i as CodeBlockContent, l as CodeBlockLanguageSelectorContent, m as highlightCode, n as CodeBlockActions, o as CodeBlockFilename, p as CodeBlockTitle, r as CodeBlockContainer, s as CodeBlockHeader, t as CodeBlock, u as CodeBlockLanguageSelectorItem } from "../CodeBlock-ygtuzqJd.js";
2
2
  export { CODE_BLOCK_LANGUAGES, CodeBlock, CodeBlockActions, CodeBlockContainer, CodeBlockContent, CodeBlockCopyButton, CodeBlockFilename, CodeBlockHeader, CodeBlockLanguageSelector, CodeBlockLanguageSelectorContent, CodeBlockLanguageSelectorItem, CodeBlockLanguageSelectorTrigger, CodeBlockLanguageSelectorValue, CodeBlockTitle, highlightCode };
@@ -1,6 +1,7 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
- import { U as RefreshIcon, c as BrainIcon, d as ChevronDownIcon, p as ChevronRightIcon, u as CheckIcon } from "../icons-DKXiSepE.js";
2
+ import { U as RefreshIcon, c as BrainIcon, d as ChevronDownIcon, p as ChevronRightIcon, u as CheckIcon } from "../icons-DyOM0EJs.js";
3
3
  import { Tooltip } from "./Tooltip.js";
4
+ import { i as titleCase } from "../format-S6uWyoSb.js";
4
5
  import { Menu } from "./Menu.js";
5
6
  import "react";
6
7
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -60,7 +61,7 @@ function CodexModelSelector({ models, selectedModelId = null, onSelectModel, sel
60
61
  })]
61
62
  }),
62
63
  /* @__PURE__ */ jsxs("span", {
63
- className: "codex-model-selector__summary",
64
+ className: "codex-model-selector__summary sigvelo-truncate",
64
65
  children: [/* @__PURE__ */ jsx("span", { children: selectedModelLabel }), selectedEffort ? /* @__PURE__ */ jsx("span", {
65
66
  className: cx("codex-model-selector__summary-effort", selectedEffort.reasoningEffort === "ultra" && "codex-model-selector__summary-effort--ultra"),
66
67
  children: selectedEffortLabel
@@ -143,7 +144,7 @@ function getServiceTiers(model) {
143
144
  }
144
145
  function formatSettingLabel(value) {
145
146
  if (value === "xhigh") return "Extra High";
146
- return value.split(/[-_]/).filter(Boolean).map((word) => word[0].toUpperCase() + word.slice(1)).join(" ");
147
+ return titleCase(value);
147
148
  }
148
149
  function CodexModelSelectorSubmenu({ label, value, disabled = false, children }) {
149
150
  return /* @__PURE__ */ jsxs(Menu.SubmenuRoot, { children: [/* @__PURE__ */ jsxs(Menu.SubmenuTrigger, {
@@ -152,7 +153,7 @@ function CodexModelSelectorSubmenu({ label, value, disabled = false, children })
152
153
  children: [
153
154
  /* @__PURE__ */ jsx("span", { children: label }),
154
155
  /* @__PURE__ */ jsx("span", {
155
- className: "codex-model-selector__submenu-value",
156
+ className: "codex-model-selector__submenu-value sigvelo-truncate",
156
157
  children: value
157
158
  }),
158
159
  /* @__PURE__ */ jsx(ChevronRightIcon, { className: "codex-model-selector__submenu-icon" })
@@ -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 "react";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  import { Collapsible as Collapsible$1 } from "@base-ui/react/collapsible";
@@ -42,7 +42,7 @@ function CollapsibleTrigger({ className, unstyled = false, ref, ...props }) {
42
42
  * Supports CSS animations via `--collapsible-panel-height` variable.
43
43
  */
44
44
  function CollapsiblePanel({ className, unstyled = false, ref, ...props }) {
45
- const classes = mergeBaseClassName(["base-ui-disclosure-panel", !unstyled && "collapsible__panel"].filter(Boolean).join(" "), className);
45
+ const classes = mergeBaseClassName(cx("base-ui-disclosure-panel", !unstyled && "collapsible__panel"), className);
46
46
  return /* @__PURE__ */ jsx(Collapsible$1.Panel, {
47
47
  ref,
48
48
  "data-slot": "collapsible-content",
@@ -4,7 +4,7 @@ import { jsx } from "react/jsx-runtime";
4
4
  import { Combobox as Combobox$1 } from "@base-ui/react/combobox";
5
5
  //#region src/components/Combobox.tsx
6
6
  function ComboboxInput({ className, ref, ...props }) {
7
- const classes = mergeBaseClassName(["combobox__input"].filter(Boolean).join(" "), className);
7
+ const classes = mergeBaseClassName("combobox__input", className);
8
8
  return /* @__PURE__ */ jsx(Combobox$1.Input, {
9
9
  ref,
10
10
  "data-slot": "combobox-input",
@@ -13,7 +13,7 @@ function ComboboxInput({ className, ref, ...props }) {
13
13
  });
14
14
  }
15
15
  function ComboboxTrigger({ className, ref, ...props }) {
16
- const classes = mergeBaseClassName(["combobox__trigger"].filter(Boolean).join(" "), className);
16
+ const classes = mergeBaseClassName("combobox__trigger", className);
17
17
  return /* @__PURE__ */ jsx(Combobox$1.Trigger, {
18
18
  ref,
19
19
  "data-slot": "combobox-trigger",
@@ -22,7 +22,7 @@ function ComboboxTrigger({ className, ref, ...props }) {
22
22
  });
23
23
  }
24
24
  function Clear({ className, ref, ...props }) {
25
- const classes = mergeBaseClassName(["combobox__clear"].filter(Boolean).join(" "), className);
25
+ const classes = mergeBaseClassName("combobox__clear", className);
26
26
  return /* @__PURE__ */ jsx(Combobox$1.Clear, {
27
27
  ref,
28
28
  "data-slot": "combobox-clear",
@@ -31,7 +31,7 @@ function Clear({ className, ref, ...props }) {
31
31
  });
32
32
  }
33
33
  function ComboboxPositioner({ className, ref, ...props }) {
34
- const classes = mergeBaseClassName(["combobox__positioner", "base-ui-positioner"].filter(Boolean).join(" "), className);
34
+ const classes = mergeBaseClassName("combobox__positioner base-ui-positioner", className);
35
35
  return /* @__PURE__ */ jsx(Combobox$1.Positioner, {
36
36
  ref,
37
37
  "data-slot": "combobox-positioner",
@@ -40,7 +40,7 @@ function ComboboxPositioner({ className, ref, ...props }) {
40
40
  });
41
41
  }
42
42
  function ComboboxPopup({ className, ref, ...props }) {
43
- const classes = mergeBaseClassName(["combobox__popup", "base-ui-popup"].filter(Boolean).join(" "), className);
43
+ const classes = mergeBaseClassName("combobox__popup base-ui-popup", className);
44
44
  return /* @__PURE__ */ jsx(Combobox$1.Popup, {
45
45
  ref,
46
46
  "data-slot": "combobox-content",
@@ -49,7 +49,7 @@ function ComboboxPopup({ className, ref, ...props }) {
49
49
  });
50
50
  }
51
51
  function ComboboxList({ className, ref, ...props }) {
52
- const classes = mergeBaseClassName(["combobox__list"].filter(Boolean).join(" "), className);
52
+ const classes = mergeBaseClassName("combobox__list", className);
53
53
  return /* @__PURE__ */ jsx(Combobox$1.List, {
54
54
  ref,
55
55
  "data-slot": "combobox-list",
@@ -58,7 +58,7 @@ function ComboboxList({ className, ref, ...props }) {
58
58
  });
59
59
  }
60
60
  function ComboboxItem({ className, ref, ...props }) {
61
- const classes = mergeBaseClassName(["combobox__item"].filter(Boolean).join(" "), className);
61
+ const classes = mergeBaseClassName("combobox__item", className);
62
62
  return /* @__PURE__ */ jsx(Combobox$1.Item, {
63
63
  ref,
64
64
  "data-slot": "combobox-item",
@@ -67,7 +67,7 @@ function ComboboxItem({ className, ref, ...props }) {
67
67
  });
68
68
  }
69
69
  function ItemIndicator({ className, ref, ...props }) {
70
- const classes = mergeBaseClassName(["combobox__item-indicator"].filter(Boolean).join(" "), className);
70
+ const classes = mergeBaseClassName("combobox__item-indicator", className);
71
71
  return /* @__PURE__ */ jsx(Combobox$1.ItemIndicator, {
72
72
  ref,
73
73
  "data-slot": "combobox-item-indicator",
@@ -76,7 +76,7 @@ function ItemIndicator({ className, ref, ...props }) {
76
76
  });
77
77
  }
78
78
  function ComboboxEmpty({ className, ref, ...props }) {
79
- const classes = mergeBaseClassName(["combobox__empty"].filter(Boolean).join(" "), className);
79
+ const classes = mergeBaseClassName("combobox__empty", className);
80
80
  return /* @__PURE__ */ jsx(Combobox$1.Empty, {
81
81
  ref,
82
82
  "data-slot": "combobox-empty",
@@ -85,7 +85,7 @@ function ComboboxEmpty({ className, ref, ...props }) {
85
85
  });
86
86
  }
87
87
  function ComboboxGroup({ className, ref, ...props }) {
88
- const classes = mergeBaseClassName(["combobox__group"].filter(Boolean).join(" "), className);
88
+ const classes = mergeBaseClassName("combobox__group", className);
89
89
  return /* @__PURE__ */ jsx(Combobox$1.Group, {
90
90
  ref,
91
91
  "data-slot": "combobox-group",
@@ -94,7 +94,7 @@ function ComboboxGroup({ className, ref, ...props }) {
94
94
  });
95
95
  }
96
96
  function ComboboxGroupLabel({ className, ref, ...props }) {
97
- const classes = mergeBaseClassName(["combobox__group-label"].filter(Boolean).join(" "), className);
97
+ const classes = mergeBaseClassName("combobox__group-label", className);
98
98
  return /* @__PURE__ */ jsx(Combobox$1.GroupLabel, {
99
99
  ref,
100
100
  "data-slot": "combobox-group-label",
@@ -1,7 +1,7 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
2
  import { Collapsible } from "./Collapsible.js";
3
- import { S as FileIcon, p as ChevronRightIcon } from "../icons-DKXiSepE.js";
4
- import { t as CopyButton } from "../copy-button-BtRwhRks.js";
3
+ import { S as FileIcon, p as ChevronRightIcon } from "../icons-DyOM0EJs.js";
4
+ import { t as CopyButton } from "../copy-button-vo1paUSi.js";
5
5
  import { Badge } from "./Badge.js";
6
6
  import { Avatar } from "./Avatar.js";
7
7
  import "react";
@@ -110,7 +110,7 @@ function CommitInfo({ className, children, ref, ...props }) {
110
110
  function CommitMessage({ className, children, ref, ...props }) {
111
111
  return /* @__PURE__ */ jsx("span", {
112
112
  ref,
113
- className: cx("commit__message", className),
113
+ className: cx("commit__message", "sigvelo-truncate", className),
114
114
  ...props,
115
115
  children
116
116
  });
@@ -219,7 +219,7 @@ function CommitFileIcon({ className, ref, ...props }) {
219
219
  function CommitFilePath({ className, children, ref, ...props }) {
220
220
  return /* @__PURE__ */ jsx("span", {
221
221
  ref,
222
- className: cx("commit__file-path", className),
222
+ className: cx("commit__file-path", "sigvelo-truncate", className),
223
223
  ...props,
224
224
  children
225
225
  });
@@ -1,4 +1,5 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
+ import { n as clamp } from "../format-S6uWyoSb.js";
2
3
  import { Popover } from "./Popover.js";
3
4
  import { Separator } from "./Separator.js";
4
5
  import * as React from "react";
@@ -95,6 +96,7 @@ function ContextContent({ className, side = "top", children, ...props }) {
95
96
  return /* @__PURE__ */ jsx(Popover.Portal, { children: /* @__PURE__ */ jsx(Popover.Positioner, {
96
97
  side,
97
98
  children: /* @__PURE__ */ jsx(Popover.Popup, {
99
+ "aria-label": "Context usage",
98
100
  className: cx("context__content", className),
99
101
  ...props,
100
102
  children
@@ -291,7 +293,7 @@ function getContextUsedTokens(usage) {
291
293
  function ProgressRing({ percent, size, stroke }) {
292
294
  const radius = (size - stroke) / 2;
293
295
  const circumference = 2 * Math.PI * radius;
294
- const offset = circumference - Math.max(0, Math.min(100, percent)) / 100 * circumference;
296
+ const offset = circumference - clamp(percent, 0, 100) / 100 * circumference;
295
297
  return /* @__PURE__ */ jsxs("svg", {
296
298
  width: size,
297
299
  height: size,
@@ -1,5 +1,5 @@
1
- import { n as mergeBaseClassName } from "../class-names-BiMDVpUo.js";
2
- import { _ as DotIcon, u as CheckIcon } from "../icons-DKXiSepE.js";
1
+ import { n as mergeBaseClassName, t as cx } from "../class-names-BiMDVpUo.js";
2
+ import { _ as DotIcon, u as CheckIcon } from "../icons-DyOM0EJs.js";
3
3
  import "react";
4
4
  import { jsx } from "react/jsx-runtime";
5
5
  import { ContextMenu as ContextMenu$1 } from "@base-ui/react/context-menu";
@@ -35,7 +35,7 @@ const ContextMenuRoot = (props) => {
35
35
  * Interactive area that activates the menu on right-click or long-press.
36
36
  */
37
37
  function ContextMenuTrigger({ className, ref, ...props }) {
38
- const classes = mergeBaseClassName(["context-menu__trigger"].filter(Boolean).join(" "), className);
38
+ const classes = mergeBaseClassName("context-menu__trigger", className);
39
39
  return /* @__PURE__ */ jsx(ContextMenu$1.Trigger, {
40
40
  ref,
41
41
  "data-slot": "context-menu-trigger",
@@ -56,7 +56,7 @@ const ContextMenuPortal = (props) => {
56
56
  * Positions the menu at the pointer location.
57
57
  */
58
58
  function ContextMenuPositioner({ className, ref, ...props }) {
59
- const classes = mergeBaseClassName(["context-menu__positioner", "base-ui-positioner"].filter(Boolean).join(" "), className);
59
+ const classes = mergeBaseClassName("context-menu__positioner base-ui-positioner", className);
60
60
  return /* @__PURE__ */ jsx(ContextMenu$1.Positioner, {
61
61
  ref,
62
62
  "data-slot": "context-menu-positioner",
@@ -68,7 +68,7 @@ function ContextMenuPositioner({ className, ref, ...props }) {
68
68
  * Container for menu items.
69
69
  */
70
70
  function ContextMenuPopup({ className, ref, ...props }) {
71
- const classes = mergeBaseClassName(["context-menu__popup", "base-ui-popup"].filter(Boolean).join(" "), className);
71
+ const classes = mergeBaseClassName("context-menu__popup base-ui-popup", className);
72
72
  return /* @__PURE__ */ jsx(ContextMenu$1.Popup, {
73
73
  ref,
74
74
  "data-slot": "context-menu-content",
@@ -80,7 +80,7 @@ function ContextMenuPopup({ className, ref, ...props }) {
80
80
  * Interactive menu item.
81
81
  */
82
82
  function ContextMenuItem({ className, inset, variant = "default", ref, ...props }) {
83
- const classes = mergeBaseClassName(["context-menu__item", inset && "context-menu__item--inset"].filter(Boolean).join(" "), className);
83
+ const classes = mergeBaseClassName(cx("context-menu__item", inset && "context-menu__item--inset"), className);
84
84
  return /* @__PURE__ */ jsx(ContextMenu$1.Item, {
85
85
  ref,
86
86
  "data-slot": "context-menu-item",
@@ -94,7 +94,7 @@ function ContextMenuItem({ className, inset, variant = "default", ref, ...props
94
94
  * Visual separator between menu sections.
95
95
  */
96
96
  function ContextMenuSeparator({ className, ref, ...props }) {
97
- const classes = mergeBaseClassName(["context-menu__separator"].filter(Boolean).join(" "), className);
97
+ const classes = mergeBaseClassName("context-menu__separator", className);
98
98
  return /* @__PURE__ */ jsx(ContextMenu$1.Separator, {
99
99
  ref,
100
100
  "data-slot": "context-menu-separator",
@@ -103,7 +103,7 @@ function ContextMenuSeparator({ className, ref, ...props }) {
103
103
  });
104
104
  }
105
105
  function ContextMenuGroup({ className, ref, ...props }) {
106
- const classes = mergeBaseClassName(["context-menu__group"].filter(Boolean).join(" "), className);
106
+ const classes = mergeBaseClassName("context-menu__group", className);
107
107
  return /* @__PURE__ */ jsx(ContextMenu$1.Group, {
108
108
  ref,
109
109
  "data-slot": "context-menu-group",
@@ -112,7 +112,7 @@ function ContextMenuGroup({ className, ref, ...props }) {
112
112
  });
113
113
  }
114
114
  function ContextMenuGroupLabel({ className, inset, ref, ...props }) {
115
- const classes = mergeBaseClassName(["context-menu__label", inset && "context-menu__label--inset"].filter(Boolean).join(" "), className);
115
+ const classes = mergeBaseClassName(cx("context-menu__label", inset && "context-menu__label--inset"), className);
116
116
  return /* @__PURE__ */ jsx(ContextMenu$1.GroupLabel, {
117
117
  ref,
118
118
  "data-slot": "context-menu-label",
@@ -122,7 +122,7 @@ function ContextMenuGroupLabel({ className, inset, ref, ...props }) {
122
122
  });
123
123
  }
124
124
  function ContextMenuCheckboxItem({ className, ref, ...props }) {
125
- const classes = mergeBaseClassName(["context-menu__checkbox-item"].filter(Boolean).join(" "), className);
125
+ const classes = mergeBaseClassName("context-menu__checkbox-item", className);
126
126
  return /* @__PURE__ */ jsx(ContextMenu$1.CheckboxItem, {
127
127
  ref,
128
128
  "data-slot": "context-menu-checkbox-item",
@@ -139,7 +139,7 @@ function ContextMenuCheckboxItemIndicator({ children, className, ...props }) {
139
139
  });
140
140
  }
141
141
  function ContextMenuRadioGroup({ className, ref, ...props }) {
142
- const classes = mergeBaseClassName(["context-menu__radio-group"].filter(Boolean).join(" "), className);
142
+ const classes = mergeBaseClassName("context-menu__radio-group", className);
143
143
  return /* @__PURE__ */ jsx(ContextMenu$1.RadioGroup, {
144
144
  ref,
145
145
  "data-slot": "context-menu-radio-group",
@@ -148,7 +148,7 @@ function ContextMenuRadioGroup({ className, ref, ...props }) {
148
148
  });
149
149
  }
150
150
  function ContextMenuRadioItem({ className, ref, ...props }) {
151
- const classes = mergeBaseClassName(["context-menu__radio-item"].filter(Boolean).join(" "), className);
151
+ const classes = mergeBaseClassName("context-menu__radio-item", className);
152
152
  return /* @__PURE__ */ jsx(ContextMenu$1.RadioItem, {
153
153
  ref,
154
154
  "data-slot": "context-menu-radio-item",
@@ -168,7 +168,7 @@ function ContextMenuShortcut({ className, ref, ...props }) {
168
168
  return /* @__PURE__ */ jsx("span", {
169
169
  ref,
170
170
  "data-slot": "context-menu-shortcut",
171
- className: mergeBaseClassName(["context-menu__shortcut"].filter(Boolean).join(" "), className),
171
+ className: mergeBaseClassName("context-menu__shortcut", className),
172
172
  ...props
173
173
  });
174
174
  }
@@ -1,6 +1,7 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
- import { n as ArrowDownIcon, v as DownloadIcon } from "../icons-DKXiSepE.js";
2
+ import { n as ArrowDownIcon, v as DownloadIcon } from "../icons-DyOM0EJs.js";
3
3
  import { Button } from "./Button.js";
4
+ import { t as assignRef } from "../merge-refs-DF_7w2x_.js";
4
5
  import { MessageScroller, MessageScrollerButton, MessageScrollerContent, MessageScrollerItem, MessageScrollerProvider, MessageScrollerViewport } from "./MessageScroller.js";
5
6
  import * as React from "react";
6
7
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -44,13 +45,7 @@ import { isReasoningUIPart, isTextUIPart } from "ai";
44
45
  * @see {@link https://elements.ai-sdk.dev/components/conversation | AI Elements Conversation}
45
46
  */
46
47
  function Conversation({ className, children, ref, ...props }) {
47
- const handleViewportRef = React.useCallback((element) => {
48
- if (typeof ref === "function") {
49
- ref(element);
50
- return;
51
- }
52
- if (ref) ref.current = element;
53
- }, [ref]);
48
+ const handleViewportRef = React.useCallback((element) => assignRef(ref, element), [ref]);
54
49
  return /* @__PURE__ */ jsx(MessageScrollerProvider, {
55
50
  autoScroll: true,
56
51
  defaultScrollPosition: "end",