@mcp-b/react-components 0.40.0 → 0.42.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (228) hide show
  1. package/dist/{AgentChat-CVO7xyLC.d.ts → AgentChat-DVr2giwD.d.ts} +1 -1
  2. package/dist/{AgentToolRunsContext-BCVqCtJ1.d.ts → AgentToolRunsContext-daY67hFM.d.ts} +12 -0
  3. package/dist/{CodeBlock-CWk1FVtm.js → CodeBlock-BjELA-_s.js} +1 -1
  4. package/dist/{FileTree-xqHYBw4g.js → FileTree-DMYRdT6R.js} +1 -1
  5. package/dist/McpConnectorForm-MRm1r59e.d.ts +39 -0
  6. package/dist/{Message-DBsHHhcM.d.ts → Message-D_vCVEGB.d.ts} +20 -1
  7. package/dist/{ThinkChatActivity-D6-_5Phw.d.ts → ThinkChatActivity-CsDql-ER.d.ts} +4 -1
  8. package/dist/{ThinkExecutionRun-lYYgyeE1.d.ts → ThinkExecutionRun-k8bpyXqt.d.ts} +3 -3
  9. package/dist/{WorkspaceFileView-Lab3om3F.js → WorkspaceFileView-DwdXiKku.js} +17 -22
  10. package/dist/{WorkspaceMessageResponse-Cy28WGSz.d.ts → WorkspaceMessageResponse-D66ty4FO.d.ts} +1 -1
  11. package/dist/components/agents-sdk/AgentActivity.js +4 -3
  12. package/dist/components/agents-sdk/AgentChat.d.ts +1 -1
  13. package/dist/components/agents-sdk/AgentChat.js +42 -18
  14. package/dist/components/agents-sdk/AgentToolRunsContext.d.ts +1 -1
  15. package/dist/components/agents-sdk/AgentToolRunsContext.js +12 -0
  16. package/dist/components/agents-sdk/BrowserLiveScreen.d.ts +135 -0
  17. package/dist/components/agents-sdk/BrowserLiveScreen.js +637 -0
  18. package/dist/components/agents-sdk/BrowserLiveView.d.ts +2 -2
  19. package/dist/components/agents-sdk/BrowserLiveView.js +6 -9
  20. package/dist/components/agents-sdk/BrowserReplay.js +1 -1
  21. package/dist/components/agents-sdk/BrowserRunPanel.d.ts +1 -1
  22. package/dist/components/agents-sdk/BrowserRunPanel.js +8 -13
  23. package/dist/components/agents-sdk/ManagerOffice.d.ts +168 -0
  24. package/dist/components/agents-sdk/ManagerOffice.js +698 -0
  25. package/dist/components/agents-sdk/McpConnectionRequest.js +3 -3
  26. package/dist/components/agents-sdk/McpConnectorForm.d.ts +1 -38
  27. package/dist/components/agents-sdk/McpPluginCatalog.d.ts +8 -2
  28. package/dist/components/agents-sdk/McpPluginCatalog.js +82 -62
  29. package/dist/components/agents-sdk/McpServerPicker.d.ts +1 -1
  30. package/dist/components/agents-sdk/McpServerPicker.js +2 -2
  31. package/dist/components/agents-sdk/ModelSelector.js +1 -1
  32. package/dist/components/agents-sdk/PromptInputCommands.js +1 -1
  33. package/dist/components/agents-sdk/SubagentRunDetails.d.ts +1 -9
  34. package/dist/components/agents-sdk/SubagentRunDetails.js +1 -9
  35. package/dist/components/agents-sdk/SubagentRunIndicator.js +1 -1
  36. package/dist/components/agents-sdk/SubagentRunSelector.d.ts +4 -2
  37. package/dist/components/agents-sdk/SubagentRunSelector.js +7 -6
  38. package/dist/components/agents-sdk/ThinkChat.d.ts +4 -4
  39. package/dist/components/agents-sdk/ThinkChatActivity.d.ts +1 -1
  40. package/dist/components/agents-sdk/ThinkChatActivity.js +18 -4
  41. package/dist/components/agents-sdk/ThinkChatToolPanels.js +7 -3
  42. package/dist/components/agents-sdk/ThinkExecutionDetail.d.ts +1 -1
  43. package/dist/components/agents-sdk/ThinkExecutionDetail.js +45 -43
  44. package/dist/components/agents-sdk/ThinkExecutionRun.d.ts +2 -2
  45. package/dist/components/agents-sdk/ThinkExecutionRun.js +5 -6
  46. package/dist/components/agents-sdk/ThinkExecutionStatus.d.ts +1 -1
  47. package/dist/components/agents-sdk/ThinkExecutionStatus.js +8 -12
  48. package/dist/components/agents-sdk/ThinkExecutionWorkbench.d.ts +8 -1
  49. package/dist/components/agents-sdk/ThinkExecutionWorkbench.js +43 -37
  50. package/dist/components/agents-sdk/ThinkFullApp.d.ts +42 -78
  51. package/dist/components/agents-sdk/ThinkFullApp.js +121 -202
  52. package/dist/components/agents-sdk/ThinkFullAppViewSwitch.d.ts +1 -1
  53. package/dist/components/agents-sdk/ThinkRoutine.d.ts +1 -1
  54. package/dist/components/agents-sdk/ThinkRoutineBrowser.js +1 -1
  55. package/dist/components/agents-sdk/ThinkRoutineDetail.js +4 -15
  56. package/dist/components/agents-sdk/ThinkRoutineForm.js +1 -1
  57. package/dist/components/agents-sdk/ThinkRoutineLibrary.d.ts +7 -6
  58. package/dist/components/agents-sdk/ThinkRoutineLibrary.js +112 -140
  59. package/dist/components/agents-sdk/ThinkRoutineRuns.d.ts +1 -1
  60. package/dist/components/agents-sdk/ThinkRoutineRuns.js +3 -10
  61. package/dist/components/agents-sdk/ThinkThreadPicker.js +2 -1
  62. package/dist/components/agents-sdk/WorkspaceBrowser.js +1 -1
  63. package/dist/components/agents-sdk/WorkspaceExplorer.js +2 -1
  64. package/dist/components/agents-sdk/WorkspaceFileView.js +1 -1
  65. package/dist/components/agents-sdk/WorkspaceHeader.js +2 -1
  66. package/dist/components/agents-sdk/WorkspaceMessageResponse.d.ts +1 -1
  67. package/dist/components/agents-sdk/WorkspaceMountManager.js +11 -11
  68. package/dist/components/ai-sdk/Activity.js +1 -1
  69. package/dist/components/ai-sdk/AgentAttention.d.ts +1 -1
  70. package/dist/components/ai-sdk/AgentChatStartScreen.js +1 -1
  71. package/dist/components/ai-sdk/Approval.js +1 -1
  72. package/dist/components/ai-sdk/Artifact.js +1 -1
  73. package/dist/components/ai-sdk/ChainOfThought.d.ts +1 -1
  74. package/dist/components/ai-sdk/ChainOfThought.js +1 -1
  75. package/dist/components/ai-sdk/Checkpoint.js +1 -1
  76. package/dist/components/ai-sdk/CodeBlock.js +1 -1
  77. package/dist/components/ai-sdk/Conversation.js +1 -1
  78. package/dist/components/ai-sdk/Goal.js +1 -1
  79. package/dist/components/ai-sdk/MediaPreviewCard.js +1 -1
  80. package/dist/components/ai-sdk/Message.d.ts +2 -2
  81. package/dist/components/ai-sdk/Message.js +25 -3
  82. package/dist/components/ai-sdk/MessageScroller.js +3 -2
  83. package/dist/components/ai-sdk/MessageScrollerVirtual.js +2 -1
  84. package/dist/components/ai-sdk/Plan.js +1 -1
  85. package/dist/components/ai-sdk/PromptInput.js +21 -15
  86. package/dist/components/ai-sdk/Queue.d.ts +4 -4
  87. package/dist/components/ai-sdk/Queue.js +6 -15
  88. package/dist/components/ai-sdk/Reasoning.js +1 -1
  89. package/dist/components/ai-sdk/Sources.js +1 -1
  90. package/dist/components/ai-sdk/Task.d.ts +2 -2
  91. package/dist/components/ai-sdk/Task.js +2 -2
  92. package/dist/components/extension/ChatGptSignInScreen.js +2 -1
  93. package/dist/components/extension/CodexModelSelector.js +1 -1
  94. package/dist/components/extension/ConversationTabPicker.js +1 -1
  95. package/dist/components/foundations/Avatar.d.ts +1 -10
  96. package/dist/components/foundations/Avatar.js +1 -10
  97. package/dist/components/foundations/Checkbox.js +1 -1
  98. package/dist/components/foundations/CheckboxGroup.js +1 -0
  99. package/dist/components/foundations/ContextMenu.js +1 -1
  100. package/dist/components/foundations/LinkButton.d.ts +12 -10
  101. package/dist/components/foundations/LinkButton.js +15 -11
  102. package/dist/components/foundations/Menubar.js +1 -1
  103. package/dist/components/foundations/SearchField.js +1 -1
  104. package/dist/components/foundations/Select.js +1 -1
  105. package/dist/components/foundations/Stepper.js +1 -1
  106. package/dist/components/foundations/Toast.js +1 -1
  107. package/dist/components/foundations/ToggleGroup.d.ts +79 -1
  108. package/dist/components/foundations/icons.d.ts +2 -2
  109. package/dist/components/foundations/icons.js +2 -2
  110. package/dist/components/general-purpose/AppFrame.js +1 -0
  111. package/dist/components/general-purpose/AppTopBar.d.ts +6 -0
  112. package/dist/components/general-purpose/AppTopBar.js +2 -1
  113. package/dist/components/general-purpose/Commit.d.ts +2 -2
  114. package/dist/components/general-purpose/Commit.js +5 -13
  115. package/dist/components/general-purpose/EnvironmentVariables.d.ts +2 -2
  116. package/dist/components/general-purpose/EnvironmentVariables.js +4 -7
  117. package/dist/components/general-purpose/FileTree.js +1 -1
  118. package/dist/components/general-purpose/PricingBillingToggle.js +4 -9
  119. package/dist/components/general-purpose/PricingPlanCard.js +15 -14
  120. package/dist/components/general-purpose/ResizableSidePanel.d.ts +8 -0
  121. package/dist/components/general-purpose/ResizableSidePanel.js +3 -2
  122. package/dist/components/general-purpose/ResponsiveSidebarShell.d.ts +105 -2
  123. package/dist/components/general-purpose/ResponsiveSidebarShell.js +112 -56
  124. package/dist/components/general-purpose/SetupChecklist.js +1 -1
  125. package/dist/components/general-purpose/Terminal.d.ts +1 -1
  126. package/dist/components/general-purpose/Terminal.js +4 -12
  127. package/dist/components/general-purpose/TestResults.d.ts +1 -1
  128. package/dist/components/general-purpose/TestResults.js +8 -21
  129. package/dist/components/general-purpose/ThemeModeControl.js +1 -1
  130. package/dist/components/general-purpose/WebPreview.d.ts +4 -1
  131. package/dist/components/general-purpose/WebPreview.js +6 -14
  132. package/dist/components/nanites/AgentConnection.js +2 -2
  133. package/dist/components/nanites/AgentToolDetail.d.ts +1 -1
  134. package/dist/components/nanites/AgentToolDetail.js +6 -5
  135. package/dist/components/nanites/NaniteScene.js +11 -11
  136. package/dist/{copy-button-Bc7jsYv_.js → copy-button-lys9N_aI.js} +1 -1
  137. package/dist/{icons-DwgNir1Q.d.ts → icons-0corjfxR.d.ts} +1 -16
  138. package/dist/{icons-MmIXciMO.js → icons-CVFSeTJn.js} +2 -5
  139. package/dist/styles/accordion.css +1 -0
  140. package/dist/styles/action-guide.css +8 -7
  141. package/dist/styles/activity-header.css +13 -39
  142. package/dist/styles/activity.css +40 -55
  143. package/dist/styles/agent-attention.css +19 -19
  144. package/dist/styles/agent-chat.css +94 -42
  145. package/dist/styles/agent-connection.css +10 -4
  146. package/dist/styles/agent-tool-detail.css +5 -15
  147. package/dist/styles/alert-dialog.css +4 -4
  148. package/dist/styles/app-frame.css +1 -3
  149. package/dist/styles/app-icon.css +12 -18
  150. package/dist/styles/app-top-bar.css +31 -9
  151. package/dist/styles/approval.css +1 -0
  152. package/dist/styles/artifact.css +6 -6
  153. package/dist/styles/attachment-preview.css +5 -4
  154. package/dist/styles/avatar.css +6 -22
  155. package/dist/styles/base.css +2 -8
  156. package/dist/styles/browser-live-screen.css +38 -0
  157. package/dist/styles/browser-live-view.css +12 -4
  158. package/dist/styles/browser-replay.css +6 -6
  159. package/dist/styles/browser-run-panel.css +21 -18
  160. package/dist/styles/button.css +15 -6
  161. package/dist/styles/card.css +5 -5
  162. package/dist/styles/chatgpt-sign-in-screen.css +6 -6
  163. package/dist/styles/code-block.css +14 -13
  164. package/dist/styles/codex-model-selector.css +2 -0
  165. package/dist/styles/collapsible.css +1 -0
  166. package/dist/styles/commit.css +30 -7
  167. package/dist/styles/context.css +9 -9
  168. package/dist/styles/conversation-tab-picker.css +1 -1
  169. package/dist/styles/conversation.css +6 -8
  170. package/dist/styles/dialog.css +4 -4
  171. package/dist/styles/empty-state.css +3 -3
  172. package/dist/styles/environment-variables.css +12 -9
  173. package/dist/styles/field.css +2 -1
  174. package/dist/styles/fieldset.css +2 -2
  175. package/dist/styles/index.css +8 -7
  176. package/dist/styles/manager-office.css +480 -0
  177. package/dist/styles/mcp-plugin-catalog.css +44 -39
  178. package/dist/styles/mcp-server-picker.css +4 -4
  179. package/dist/styles/message-scroller.css +9 -11
  180. package/dist/styles/message.css +74 -28
  181. package/dist/styles/nanite-scene.css +9 -9
  182. package/dist/styles/navigation-menu.css +1 -0
  183. package/dist/styles/plan.css +13 -12
  184. package/dist/styles/pricing-page.css +37 -30
  185. package/dist/styles/prompt-input.css +26 -18
  186. package/dist/styles/queue.css +1 -0
  187. package/dist/styles/reasoning.css +1 -9
  188. package/dist/styles/recipes.css +29 -58
  189. package/dist/styles/responsive-sidebar-shell.css +107 -29
  190. package/dist/styles/separator.css +5 -5
  191. package/dist/styles/sources.css +4 -4
  192. package/dist/styles/stepper.css +1 -0
  193. package/dist/styles/streamdown.css +31 -21
  194. package/dist/styles/subagent-run.css +20 -3
  195. package/dist/styles/tabs.css +1 -0
  196. package/dist/styles/task.css +5 -17
  197. package/dist/styles/terminal.css +29 -10
  198. package/dist/styles/test-results.css +16 -7
  199. package/dist/styles/think-execution-status.css +10 -26
  200. package/dist/styles/think-execution-workbench.css +98 -108
  201. package/dist/styles/think-full-app.css +75 -225
  202. package/dist/styles/think-routine-library.css +26 -95
  203. package/dist/styles/think-thread-picker.css +17 -12
  204. package/dist/styles/transition-surface.css +7 -8
  205. package/dist/styles/utilities.css +75 -0
  206. package/dist/styles/web-preview.css +46 -22
  207. package/dist/styles/workspace-explorer.css +22 -44
  208. package/dist/styles/workspace-mount-manager.css +24 -2
  209. package/dist/utils/favicon.d.ts +6 -1
  210. package/dist/utils/favicon.js +18 -1
  211. package/package.json +37 -35
  212. package/dist/ResponsiveSidebarShell-DWjULskY.d.ts +0 -68
  213. package/dist/ToggleGroup-_pQMyHGM.d.ts +0 -80
  214. package/dist/components/agents-sdk/AgentActivityPreview.d.ts +0 -46
  215. package/dist/components/agents-sdk/AgentActivityPreview.js +0 -93
  216. package/dist/components/agents-sdk/ThinkThreadShell.d.ts +0 -38
  217. package/dist/components/agents-sdk/ThinkThreadShell.js +0 -27
  218. package/dist/components/foundations/Badge.d.ts +0 -62
  219. package/dist/components/foundations/Badge.js +0 -55
  220. package/dist/components/foundations/StatusPill.d.ts +0 -43
  221. package/dist/components/foundations/StatusPill.js +0 -35
  222. package/dist/components/general-purpose/Shell.d.ts +0 -149
  223. package/dist/components/general-purpose/Shell.js +0 -116
  224. package/dist/styles/agent-activity-preview-overlay.css +0 -169
  225. package/dist/styles/agent-activity-preview.css +0 -209
  226. package/dist/styles/badge.css +0 -120
  227. package/dist/styles/shell.css +0 -122
  228. package/dist/styles/status-pill.css +0 -39
@@ -1,18 +1,11 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
2
  import { Collapsible } from "../foundations/Collapsible.js";
3
- import { C as FileIcon, m as ChevronRightIcon } from "../../icons-MmIXciMO.js";
4
- import { t as CopyButton } from "../../copy-button-Bc7jsYv_.js";
5
- import { Badge } from "../foundations/Badge.js";
3
+ import { S as FileIcon, p as ChevronRightIcon } from "../../icons-CVFSeTJn.js";
4
+ import { t as CopyButton } from "../../copy-button-lys9N_aI.js";
6
5
  import { Avatar } from "../foundations/Avatar.js";
7
6
  import "react";
8
7
  import { jsx, jsxs } from "react/jsx-runtime";
9
8
  //#region src/components/general-purpose/Commit.tsx
10
- const FILE_STATUS_COLOR = {
11
- added: "success",
12
- modified: "warning",
13
- deleted: "destructive",
14
- renamed: "primary"
15
- };
16
9
  const FILE_STATUS_LABEL = {
17
10
  added: "A",
18
11
  modified: "M",
@@ -27,7 +20,7 @@ const FILE_STATUS_LABEL = {
27
20
  * summaries with expandable file details. Do not use it as a generic
28
21
  * accordion; use Collapsible or Accordion directly.
29
22
  *
30
- * Styling consumes Sigvelo surface, border, spacing, radius, badge, and focus
23
+ * Styling consumes Sigvelo surface, border, spacing, radius, status, and focus
31
24
  * tokens. Add shared metadata/file affordances here instead of forking commit
32
25
  * cards in apps.
33
26
  *
@@ -197,12 +190,11 @@ function CommitFile({ className, children, ref, ...props }) {
197
190
  });
198
191
  }
199
192
  function CommitFileStatus({ className, status, ref, ...props }) {
200
- return /* @__PURE__ */ jsx(Badge, {
193
+ return /* @__PURE__ */ jsx("span", {
201
194
  ...props,
202
195
  ref,
203
- color: FILE_STATUS_COLOR[status],
204
- size: "sm",
205
196
  className: cx("commit__file-status", className),
197
+ "data-status": status,
206
198
  "aria-label": status,
207
199
  children: FILE_STATUS_LABEL[status]
208
200
  });
@@ -22,7 +22,7 @@ interface EnvironmentVariablesProps extends React.HTMLAttributes<HTMLDivElement>
22
22
  * environment keys and copyable values. Do not treat masking as a security
23
23
  * boundary; do not render secrets for users who are not allowed to see them.
24
24
  *
25
- * Sigvelo changes: composes Badge, Button, Switch, and Tooltip; maps copy and
25
+ * Sigvelo changes: composes Button, Switch, and Tooltip; maps copy and
26
26
  * reveal controls to Sigvelo CSS tokens; keeps masking local to the component.
27
27
  *
28
28
  * Values need visible labels and copy buttons need accessible labels. Styling
@@ -156,7 +156,7 @@ declare function EnvironmentVariableCopyButton({
156
156
  timeout,
157
157
  ...props
158
158
  }: EnvironmentVariableCopyButtonProps): React.JSX.Element;
159
- interface EnvironmentVariableRequiredProps extends Omit<React.HTMLAttributes<HTMLSpanElement>, "color"> {}
159
+ interface EnvironmentVariableRequiredProps extends React.HTMLAttributes<HTMLSpanElement> {}
160
160
  declare function EnvironmentVariableRequired({
161
161
  className,
162
162
  children,
@@ -1,7 +1,6 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { S as EyeOffIcon, x as EyeIcon } from "../../icons-MmIXciMO.js";
3
- import { t as CopyButton } from "../../copy-button-Bc7jsYv_.js";
4
- import { Badge } from "../foundations/Badge.js";
2
+ import { b as EyeIcon, x as EyeOffIcon } from "../../icons-CVFSeTJn.js";
3
+ import { t as CopyButton } from "../../copy-button-lys9N_aI.js";
5
4
  import { Switch } from "../foundations/Switch.js";
6
5
  import * as React from "react";
7
6
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -26,7 +25,7 @@ function useVariableContext() {
26
25
  * environment keys and copyable values. Do not treat masking as a security
27
26
  * boundary; do not render secrets for users who are not allowed to see them.
28
27
  *
29
- * Sigvelo changes: composes Badge, Button, Switch, and Tooltip; maps copy and
28
+ * Sigvelo changes: composes Button, Switch, and Tooltip; maps copy and
30
29
  * reveal controls to Sigvelo CSS tokens; keeps masking local to the component.
31
30
  *
32
31
  * Values need visible labels and copy buttons need accessible labels. Styling
@@ -185,11 +184,9 @@ function EnvironmentVariableCopyButton({ className, format = "value", label, onC
185
184
  });
186
185
  }
187
186
  function EnvironmentVariableRequired({ className, children, ref, ...props }) {
188
- return /* @__PURE__ */ jsx(Badge, {
187
+ return /* @__PURE__ */ jsx("span", {
189
188
  ...props,
190
189
  ref,
191
- color: "warning",
192
- size: "sm",
193
190
  className: cx("environment-variables__required", className),
194
191
  children: children ?? "Required"
195
192
  });
@@ -1,2 +1,2 @@
1
- import { a as FileTreeIcon, i as FileTreeFolder, n as FileTreeActions, o as FileTreeName, r as FileTreeFile, t as FileTree } from "../../FileTree-xqHYBw4g.js";
1
+ import { a as FileTreeIcon, i as FileTreeFolder, n as FileTreeActions, o as FileTreeName, r as FileTreeFile, t as FileTree } from "../../FileTree-DMYRdT6R.js";
2
2
  export { FileTree, FileTreeActions, FileTreeFile, FileTreeFolder, FileTreeIcon, FileTreeName };
@@ -1,5 +1,4 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { Badge } from "../foundations/Badge.js";
3
2
  import { Switch } from "../foundations/Switch.js";
4
3
  import { ToggleGroup } from "../foundations/ToggleGroup.js";
5
4
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -26,10 +25,8 @@ function PricingBillingToggle({ value, onValueChange, yearlySavingsPercent, vari
26
25
  /* @__PURE__ */ jsxs("span", {
27
26
  className: "pricing-page__period-label",
28
27
  "data-active": isYearly || void 0,
29
- children: ["Yearly", /* @__PURE__ */ jsxs(Badge, {
30
- color: "success",
31
- size: "sm",
32
- className: "pricing-page__billing-badge",
28
+ children: ["Yearly", /* @__PURE__ */ jsxs("span", {
29
+ className: "pricing-page__billing-savings",
33
30
  children: [
34
31
  "Save ",
35
32
  yearlySavingsPercent,
@@ -51,10 +48,8 @@ function PricingBillingToggle({ value, onValueChange, yearlySavingsPercent, vari
51
48
  children: "Monthly"
52
49
  }), /* @__PURE__ */ jsxs(ToggleGroup.Item, {
53
50
  value: "yearly",
54
- children: ["Yearly", /* @__PURE__ */ jsxs(Badge, {
55
- color: "success",
56
- size: "sm",
57
- className: "pricing-page__billing-badge",
51
+ children: ["Yearly", /* @__PURE__ */ jsxs("span", {
52
+ className: "pricing-page__billing-savings",
58
53
  children: [
59
54
  "-",
60
55
  yearlySavingsPercent,
@@ -1,10 +1,9 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { F as MinusIcon, O as InfoIcon, d as CheckIcon } from "../../icons-MmIXciMO.js";
2
+ import { M as MinusIcon, T as InfoIcon, d as CheckIcon } from "../../icons-CVFSeTJn.js";
3
3
  import { Button } from "../foundations/Button.js";
4
4
  import { IconButton } from "../foundations/IconButton.js";
5
5
  import { Separator } from "../foundations/Separator.js";
6
6
  import { Card } from "../foundations/Card.js";
7
- import { Badge } from "../foundations/Badge.js";
8
7
  import { getPlanPrice, getPlanYearlySavings } from "./Pricing.js";
9
8
  import { jsx, jsxs } from "react/jsx-runtime";
10
9
  //#region src/components/general-purpose/PricingPlanCard.tsx
@@ -24,20 +23,22 @@ function PricingPlanCard({ plan, billingPeriod, action = "select", onSelect, cla
24
23
  className: cx("pricing-page__plan", className),
25
24
  "data-popular": plan.popular || void 0,
26
25
  children: [
27
- plan.popular ? /* @__PURE__ */ jsx(Badge, {
28
- color: "success",
29
- className: "pricing-page__popular-badge",
30
- children: "Most Popular"
31
- }) : null,
32
26
  /* @__PURE__ */ jsxs("div", {
33
27
  className: "pricing-page__plan-header",
34
- children: [/* @__PURE__ */ jsx("h2", {
35
- className: "pricing-page__plan-name",
36
- children: plan.name
37
- }), /* @__PURE__ */ jsx("p", {
38
- className: "pricing-page__plan-description",
39
- children: plan.description
40
- })]
28
+ children: [
29
+ plan.popular ? /* @__PURE__ */ jsx("span", {
30
+ className: "pricing-page__popular-label",
31
+ children: "Most popular"
32
+ }) : null,
33
+ /* @__PURE__ */ jsx("h2", {
34
+ className: "pricing-page__plan-name",
35
+ children: plan.name
36
+ }),
37
+ /* @__PURE__ */ jsx("p", {
38
+ className: "pricing-page__plan-description",
39
+ children: plan.description
40
+ })
41
+ ]
41
42
  }),
42
43
  /* @__PURE__ */ jsxs("div", {
43
44
  className: "pricing-page__plan-price",
@@ -22,6 +22,13 @@ interface ResizableSidePanelRootProps extends React.HTMLAttributes<HTMLDivElemen
22
22
  collapseThreshold?: number;
23
23
  /** Called once pointer resizing crosses `collapseThreshold`. */
24
24
  onCollapse?: () => void;
25
+ /**
26
+ * Consumer-owned custom property mirroring the panel size, e.g.
27
+ * `--my-app-conversation-size`. Nested roots each write the shared
28
+ * `--resizable-side-panel-size` too, where the nearest writer wins; a named
29
+ * variable frees consumer stylesheets from that proximity rule.
30
+ */
31
+ sizeVariable?: `--${string}`;
25
32
  }
26
33
  interface ResizableSidePanelHandleProps extends Omit<SeparatorProps, "aria-label" | "aria-orientation" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "decorative" | "orientation"> {}
27
34
  /**
@@ -41,6 +48,7 @@ declare function ResizableSidePanelRoot({
41
48
  onCollapse,
42
49
  ref,
43
50
  side,
51
+ sizeVariable,
44
52
  style,
45
53
  ...props
46
54
  }: ResizableSidePanelRootProps & {
@@ -14,7 +14,7 @@ function panelSizeDelta(physicalDelta, side, direction) {
14
14
  * Shared sizing seam for a logical start- or end-side panel. Consumers retain
15
15
  * ownership of panel placement, visibility, compact behavior, and top bars.
16
16
  */
17
- function ResizableSidePanelRoot({ children, className, collapseThreshold, defaultSize, keyboardStep = 24, label, maxSize, minSize, onSizeChange, onCollapse, ref, side = "start", style, ...props }) {
17
+ function ResizableSidePanelRoot({ children, className, collapseThreshold, defaultSize, keyboardStep = 24, label, maxSize, minSize, onSizeChange, onCollapse, ref, side = "start", sizeVariable, style, ...props }) {
18
18
  const [size, setInnerSize] = React.useState(() => clamp(defaultSize, minSize, maxSize));
19
19
  const cleanupResizeRef = React.useRef(null);
20
20
  const setSize = React.useCallback((nextSize) => {
@@ -92,7 +92,8 @@ function ResizableSidePanelRoot({ children, className, collapseThreshold, defaul
92
92
  ]);
93
93
  const rootStyle = {
94
94
  ...style,
95
- "--resizable-side-panel-size": `${size}px`
95
+ "--resizable-side-panel-size": `${size}px`,
96
+ ...sizeVariable ? { [sizeVariable]: `${size}px` } : {}
96
97
  };
97
98
  return /* @__PURE__ */ jsx(ResizableSidePanelContext.Provider, {
98
99
  value: context,
@@ -1,2 +1,105 @@
1
- import { i as ResponsiveSidebarShellTopBarControls, n as ResponsiveSidebarShellControls, r as ResponsiveSidebarShellProps, t as ResponsiveSidebarShell } from "../../ResponsiveSidebarShell-DWjULskY.js";
2
- export { ResponsiveSidebarShell, ResponsiveSidebarShellControls, ResponsiveSidebarShellProps, ResponsiveSidebarShellTopBarControls };
1
+ import * as React from "react";
2
+
3
+ //#region src/components/general-purpose/ResponsiveSidebarShell.d.ts
4
+ interface ResponsiveSidebarShellControls {
5
+ /** Close the sidebar and move focus to the main content. */
6
+ closeSidebar: () => void;
7
+ /** Close only when the shell is currently using its compact drawer layout. */
8
+ closeSidebarOnCompact: () => void;
9
+ }
10
+ /**
11
+ * Bar slot content shared by every shell-owning surface's `bar` prop, so an
12
+ * app writes one shape whether it is configuring ThinkFullApp, the routine
13
+ * library, or the shell directly.
14
+ */
15
+ interface AppBarSlots {
16
+ /**
17
+ * App-owned route element rendered as a labelled back control. Back owns
18
+ * the leading slot the same way `leading` does: the shell's own sidebar
19
+ * toggle stands down and compact sidebars stay reachable through
20
+ * `compactTitleTrigger`.
21
+ */
22
+ back?: {
23
+ label: string;
24
+ link: React.ReactElement;
25
+ };
26
+ /** App-owned leading navigation that owns the leading slot at every width. */
27
+ leading?: React.ReactNode;
28
+ /** Compact-only navigation that replaces the drawer trigger without hiding the wide rail toggle. */
29
+ compactLeading?: React.ReactNode;
30
+ /** Bar title content. Hidden at compact widths when `compactTitleTrigger` stands in. */
31
+ title?: React.ReactNode;
32
+ /** Content placed in the bar's trailing group. */
33
+ actions?: React.ReactNode;
34
+ }
35
+ interface ResponsiveSidebarShellBar extends AppBarSlots {
36
+ /** Element the bar title renders into, e.g. `<h1 id={…}/>` for a labelled page. */
37
+ titleRender?: React.ReactElement<Record<string, unknown>>;
38
+ /**
39
+ * Label content for a compact-width drawer trigger that replaces the plain
40
+ * title and the icon toggle: the title itself becomes the control that opens
41
+ * the sidebar. The shell renders the button and the disclosure chevron.
42
+ */
43
+ compactTitleTrigger?: React.ReactNode;
44
+ /** Accessible name for the bar toolbar. Defaults to "Application controls". */
45
+ label?: string;
46
+ /** Class for the bar root, the owning surface's styling hook. */
47
+ className?: string;
48
+ /**
49
+ * No bar row at all — for content that brings its own application bar.
50
+ * Distinct from passing no slots: an empty shell with a sidebar still shows
51
+ * a bar carrying the toggle.
52
+ */
53
+ hidden?: boolean;
54
+ }
55
+ interface ResponsiveSidebarShellProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "children" | "title"> {
56
+ /**
57
+ * Navigation or other secondary surface shown beside the selected content.
58
+ * Omit for a shell that is only a bar row over content — the app bar then
59
+ * has one mount point whether or not a sidebar exists.
60
+ *
61
+ * Open/closed is shell-internal: it is ephemeral presentation state, not a
62
+ * route, so no host controls it and no resize ever writes into a router.
63
+ */
64
+ sidebar?: React.ReactNode | ((controls: ResponsiveSidebarShellControls) => React.ReactNode);
65
+ /** Main content. */
66
+ children?: React.ReactNode;
67
+ /** Short noun used by the toggle and resize control, such as “threads” or “schedules”. */
68
+ sidebarLabel?: string;
69
+ /** Initial desktop sidebar width in CSS pixels. */
70
+ defaultSidebarWidth?: number;
71
+ /** Shell-owned application bar composed from slots. */
72
+ bar?: ResponsiveSidebarShellBar;
73
+ /**
74
+ * Host-owned error shown in the main column above the content, without
75
+ * replacing it. The shell renders the alert anatomy; pass the message.
76
+ */
77
+ error?: React.ReactNode;
78
+ /** Accessible name for the mobile peek target that returns to the main content. */
79
+ showMainLabel?: string;
80
+ }
81
+ /**
82
+ * The one application shell: responsive master-detail with a resizable desktop
83
+ * sidebar, a compact floating drawer that leaves the main content in place as
84
+ * a dismiss target, and a shell-owned application bar composed from slots.
85
+ * The root exposes `data-sidebar-open="true" | "false"` as its public styling
86
+ * hook, and its container name `responsive-sidebar-shell` is public contract:
87
+ * surfaces that compose the shell size themselves against it.
88
+ */
89
+ declare function ResponsiveSidebarShell({
90
+ sidebar,
91
+ sidebarLabel,
92
+ defaultSidebarWidth,
93
+ bar,
94
+ error,
95
+ showMainLabel,
96
+ className,
97
+ children,
98
+ ref,
99
+ style,
100
+ ...props
101
+ }: ResponsiveSidebarShellProps & {
102
+ ref?: React.Ref<HTMLDivElement>;
103
+ }): React.JSX.Element;
104
+ //#endregion
105
+ export { AppBarSlots, ResponsiveSidebarShell, ResponsiveSidebarShellBar, ResponsiveSidebarShellControls, ResponsiveSidebarShellProps };
@@ -1,5 +1,5 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { q as SidebarIcon } from "../../icons-MmIXciMO.js";
2
+ import { $ as WarningIcon, W as SidebarIcon, f as ChevronDownIcon, r as ArrowLeftIcon } from "../../icons-CVFSeTJn.js";
3
3
  import { Button } from "../foundations/Button.js";
4
4
  import { t as capitalize } from "../../format-DB2mX9DA.js";
5
5
  import { n as mergeRefs } from "../../merge-refs-DF_7w2x_.js";
@@ -8,37 +8,57 @@ import { ResizableSidePanel } from "./ResizableSidePanel.js";
8
8
  import * as React from "react";
9
9
  import { jsx, jsxs } from "react/jsx-runtime";
10
10
  //#region src/components/general-purpose/ResponsiveSidebarShell.tsx
11
+ /** Matches --sigvelo-layout-sidebar (16rem). */
11
12
  const sidebarDefaultWidth = 256;
12
13
  const sidebarMinWidth = 224;
13
14
  const sidebarMaxWidth = 384;
14
15
  const sidebarKeyboardStep = 24;
16
+ /** Matches --sigvelo-layout-break-compact. */
15
17
  const compactSidebarWidthRem = 56;
16
- function useControllableSidebar({ sidebarOpen, defaultSidebarOpen, onSidebarOpenChange }) {
17
- const [innerOpen, setInnerOpen] = React.useState(defaultSidebarOpen ?? true);
18
- return [sidebarOpen ?? innerOpen, React.useCallback((next) => {
19
- if (sidebarOpen === void 0) setInnerOpen(next);
20
- onSidebarOpenChange?.(next);
21
- }, [sidebarOpen, onSidebarOpenChange])];
22
- }
23
18
  function isCompactSidebar(root) {
24
19
  const rootFontSize = Number.parseFloat(getComputedStyle(document.documentElement).fontSize) || 16;
25
- return root.getBoundingClientRect().width <= compactSidebarWidthRem * rootFontSize;
20
+ return root.offsetWidth <= compactSidebarWidthRem * rootFontSize;
26
21
  }
27
22
  /**
28
- * Responsive master-detail shell with a resizable desktop sidebar and a compact
29
- * floating sidebar that leaves the main content in place as a dismiss target.
30
- * The root exposes `data-sidebar-open="true" | "false"` as its public styling hook.
23
+ * The one application shell: responsive master-detail with a resizable desktop
24
+ * sidebar, a compact floating drawer that leaves the main content in place as
25
+ * a dismiss target, and a shell-owned application bar composed from slots.
26
+ * The root exposes `data-sidebar-open="true" | "false"` as its public styling
27
+ * hook, and its container name `responsive-sidebar-shell` is public contract:
28
+ * surfaces that compose the shell size themselves against it.
31
29
  */
32
- function ResponsiveSidebarShell({ sidebar, topBar, sidebarLabel, sidebarOpen, defaultSidebarOpen, defaultSidebarWidth = sidebarDefaultWidth, onSidebarOpenChange, toolbarLabel = "Sidebar controls", showMainLabel = "Show main content", className, children, ref, style, ...props }) {
30
+ function ResponsiveSidebarShell({ sidebar, sidebarLabel = "sidebar", defaultSidebarWidth = sidebarDefaultWidth, bar, error, showMainLabel = "Show main content", className, children, ref, style, ...props }) {
33
31
  const sidebarId = React.useId();
34
32
  const rootRef = React.useRef(null);
35
33
  const mainRef = React.useRef(null);
36
34
  const openerRef = React.useRef(null);
37
- const [isSidebarOpen, setSidebarOpen] = useControllableSidebar({
38
- sidebarOpen,
39
- defaultSidebarOpen,
40
- onSidebarOpenChange
41
- });
35
+ const compactRef = React.useRef(null);
36
+ const restoreSidebarOnWideRef = React.useRef(true);
37
+ const [isSidebarOpen, setSidebarOpen] = React.useState(true);
38
+ React.useLayoutEffect(() => {
39
+ const root = rootRef.current;
40
+ if (!root) return;
41
+ const syncLayout = () => {
42
+ if (root.offsetWidth <= 0) return;
43
+ const compact = isCompactSidebar(root);
44
+ const wasCompact = compactRef.current;
45
+ compactRef.current = compact;
46
+ if (wasCompact === null) {
47
+ if (compact) setSidebarOpen(false);
48
+ return;
49
+ }
50
+ if (!wasCompact && compact) {
51
+ restoreSidebarOnWideRef.current = isSidebarOpen;
52
+ if (isSidebarOpen) setSidebarOpen(false);
53
+ } else if (wasCompact && !compact && restoreSidebarOnWideRef.current) setSidebarOpen(true);
54
+ };
55
+ syncLayout();
56
+ if (typeof ResizeObserver === "undefined") return;
57
+ const observer = new ResizeObserver(syncLayout);
58
+ observer.observe(root);
59
+ return () => observer.disconnect();
60
+ }, [isSidebarOpen]);
61
+ const hasSidebar = sidebar != null;
42
62
  const toggleLabel = capitalize(sidebarLabel);
43
63
  const toggleTooltip = `${isSidebarOpen ? "Hide" : "Show"} ${sidebarLabel}`;
44
64
  const updateSidebar = React.useCallback((update, restoreFocus) => {
@@ -47,82 +67,118 @@ function ResponsiveSidebarShell({ sidebar, topBar, sidebarLabel, sidebarOpen, de
47
67
  }, []);
48
68
  const closeSidebar = React.useCallback(() => {
49
69
  updateSidebar(() => setSidebarOpen(false), () => mainRef.current?.focus({ preventScroll: true }));
50
- }, [setSidebarOpen, updateSidebar]);
70
+ }, [updateSidebar]);
51
71
  const closeSidebarOnCompact = React.useCallback(() => {
52
72
  if (rootRef.current && isCompactSidebar(rootRef.current)) closeSidebar();
53
73
  }, [closeSidebar]);
54
74
  const toggleSidebar = React.useCallback((trigger) => {
55
75
  if (trigger) openerRef.current = trigger;
56
76
  updateSidebar(() => setSidebarOpen(!isSidebarOpen));
57
- }, [
58
- isSidebarOpen,
59
- setSidebarOpen,
60
- updateSidebar
61
- ]);
77
+ }, [isSidebarOpen, updateSidebar]);
62
78
  const dismissSidebar = React.useCallback(() => {
63
79
  updateSidebar(() => setSidebarOpen(false), () => openerRef.current?.focus({ preventScroll: true }));
64
- }, [setSidebarOpen, updateSidebar]);
80
+ }, [updateSidebar]);
65
81
  const sidebarContent = typeof sidebar === "function" ? sidebar({
66
82
  closeSidebar,
67
83
  closeSidebarOnCompact
68
84
  }) : sidebar;
69
- const sidebarToggle = /* @__PURE__ */ jsx(AppTopBar.Button, {
70
- className: "responsive-sidebar-shell__toggle",
71
- label: toggleLabel,
72
- tooltip: toggleTooltip,
73
- type: "button",
74
- "aria-controls": sidebarId,
75
- "aria-expanded": isSidebarOpen,
76
- onClick: (event) => toggleSidebar(event.currentTarget),
77
- children: /* @__PURE__ */ jsx(SidebarIcon, {})
78
- });
79
- const topBarContent = typeof topBar === "function" ? topBar({
80
- sidebarId,
81
- sidebarOpen: isSidebarOpen,
82
- sidebarToggle,
83
- toggleSidebar
84
- }) : topBar;
85
- return /* @__PURE__ */ jsxs("div", {
85
+ const hasAppLeading = bar?.back != null || bar?.leading != null;
86
+ const hasTitleTrigger = hasSidebar && bar?.compactTitleTrigger != null && bar?.compactLeading == null;
87
+ const hasTopBar = !bar?.hidden && (hasSidebar || bar?.back != null || bar?.leading != null || bar?.compactLeading != null || bar?.title != null || bar?.actions != null);
88
+ const compactLeadingMode = hasTitleTrigger ? "trigger" : !hasAppLeading && bar?.compactLeading != null ? "custom" : void 0;
89
+ return /* @__PURE__ */ jsx("div", {
86
90
  ref: mergeRefs(rootRef, ref),
87
91
  className: cx("responsive-sidebar-shell", className),
92
+ "data-recipe": "fill-host",
88
93
  style,
89
94
  ...props,
90
- "data-sidebar-open": isSidebarOpen ? "true" : "false",
95
+ "data-sidebar-open": hasSidebar && isSidebarOpen ? "true" : "false",
91
96
  onKeyDown: (event) => {
92
97
  props.onKeyDown?.(event);
93
- if (!event.defaultPrevented && event.key === "Escape" && isSidebarOpen && rootRef.current && isCompactSidebar(rootRef.current)) {
98
+ if (!event.defaultPrevented && event.key === "Escape" && hasSidebar && isSidebarOpen && rootRef.current && isCompactSidebar(rootRef.current)) {
94
99
  event.preventDefault();
95
100
  dismissSidebar();
96
101
  }
97
102
  },
98
- children: [topBarContent ?? /* @__PURE__ */ jsx(AppTopBar.Root, {
99
- "aria-label": toolbarLabel,
100
- children: /* @__PURE__ */ jsx(AppTopBar.Leading, { children: sidebarToggle })
101
- }), /* @__PURE__ */ jsxs(ResizableSidePanel.Root, {
103
+ children: /* @__PURE__ */ jsxs(ResizableSidePanel.Root, {
102
104
  className: "responsive-sidebar-shell__frame",
103
105
  label: sidebarLabel,
104
106
  side: "start",
107
+ sizeVariable: "--responsive-sidebar-shell-sidebar-size",
105
108
  defaultSize: defaultSidebarWidth,
106
109
  minSize: sidebarMinWidth,
107
110
  maxSize: sidebarMaxWidth,
108
111
  keyboardStep: sidebarKeyboardStep,
109
112
  children: [
110
- isSidebarOpen ? /* @__PURE__ */ jsx(ResizableSidePanel.Handle, { className: "responsive-sidebar-shell__resizer" }) : null,
111
- /* @__PURE__ */ jsx("div", {
113
+ hasSidebar && isSidebarOpen ? /* @__PURE__ */ jsx(ResizableSidePanel.Handle, { className: "responsive-sidebar-shell__resizer" }) : null,
114
+ hasSidebar ? /* @__PURE__ */ jsx("div", {
112
115
  id: sidebarId,
113
116
  className: "responsive-sidebar-shell__sidebar",
114
117
  "aria-hidden": isSidebarOpen ? void 0 : true,
115
118
  inert: isSidebarOpen ? void 0 : true,
116
119
  children: sidebarContent
117
- }),
118
- /* @__PURE__ */ jsx("div", {
120
+ }) : null,
121
+ /* @__PURE__ */ jsxs("div", {
119
122
  ref: mainRef,
120
123
  className: "responsive-sidebar-shell__main",
121
- "data-recipe": "application-plane",
122
124
  tabIndex: -1,
123
- children
125
+ children: [
126
+ hasTopBar ? /* @__PURE__ */ jsxs(AppTopBar.Root, {
127
+ "aria-label": bar?.label ?? "Application controls",
128
+ className: bar?.className,
129
+ "data-compact-leading": compactLeadingMode,
130
+ children: [
131
+ hasSidebar || hasAppLeading || bar?.compactLeading != null ? /* @__PURE__ */ jsxs(AppTopBar.Leading, { children: [
132
+ bar?.back ? /* @__PURE__ */ jsx(AppTopBar.Link, {
133
+ label: bar.back.label,
134
+ render: bar.back.link,
135
+ children: /* @__PURE__ */ jsx(ArrowLeftIcon, {})
136
+ }) : null,
137
+ bar?.leading,
138
+ !hasAppLeading && hasSidebar ? /* @__PURE__ */ jsx(AppTopBar.Button, {
139
+ className: "responsive-sidebar-shell__toggle",
140
+ label: toggleLabel,
141
+ tooltip: toggleTooltip,
142
+ type: "button",
143
+ "aria-controls": sidebarId,
144
+ "aria-expanded": isSidebarOpen,
145
+ onClick: (event) => toggleSidebar(event.currentTarget),
146
+ children: /* @__PURE__ */ jsx(SidebarIcon, {})
147
+ }) : null,
148
+ compactLeadingMode === "custom" ? /* @__PURE__ */ jsx("span", {
149
+ className: "responsive-sidebar-shell__compact-leading",
150
+ children: bar?.compactLeading
151
+ }) : null
152
+ ] }) : null,
153
+ bar?.title != null || hasTitleTrigger ? /* @__PURE__ */ jsxs(AppTopBar.Title, {
154
+ render: bar?.titleRender,
155
+ children: [bar?.title != null ? /* @__PURE__ */ jsx("span", {
156
+ className: "responsive-sidebar-shell__title-text",
157
+ children: bar.title
158
+ }) : null, hasTitleTrigger ? /* @__PURE__ */ jsxs(Button, {
159
+ type: "button",
160
+ variant: "ghost",
161
+ color: "neutral",
162
+ size: "sm",
163
+ className: "responsive-sidebar-shell__title-trigger",
164
+ "aria-controls": sidebarId,
165
+ "aria-expanded": isSidebarOpen,
166
+ onClick: (event) => toggleSidebar(event.currentTarget),
167
+ children: [bar?.compactTitleTrigger, /* @__PURE__ */ jsx(ChevronDownIcon, { "aria-hidden": "true" })]
168
+ }) : null]
169
+ }) : null,
170
+ bar?.actions != null ? /* @__PURE__ */ jsx(AppTopBar.Trailing, { children: bar.actions }) : null
171
+ ]
172
+ }) : null,
173
+ error != null ? /* @__PURE__ */ jsxs("div", {
174
+ className: "responsive-sidebar-shell__error",
175
+ role: "alert",
176
+ children: [/* @__PURE__ */ jsx(WarningIcon, { "aria-hidden": "true" }), /* @__PURE__ */ jsx("span", { children: error })]
177
+ }) : null,
178
+ children
179
+ ]
124
180
  }),
125
- isSidebarOpen ? /* @__PURE__ */ jsx(Button, {
181
+ hasSidebar && isSidebarOpen ? /* @__PURE__ */ jsx(Button, {
126
182
  type: "button",
127
183
  variant: "ghost",
128
184
  color: "neutral",
@@ -131,7 +187,7 @@ function ResponsiveSidebarShell({ sidebar, topBar, sidebarLabel, sidebarOpen, de
131
187
  onClick: closeSidebar
132
188
  }) : null
133
189
  ]
134
- })]
190
+ })
135
191
  });
136
192
  }
137
193
  //#endregion
@@ -1,5 +1,5 @@
1
1
  import { n as mergeBaseClassName } from "../../class-names-BiMDVpUo.js";
2
- import { U as PlusIcon, d as CheckIcon, f as ChevronDownIcon, nt as WarningIcon } from "../../icons-MmIXciMO.js";
2
+ import { $ as WarningIcon, B as PlusIcon, d as CheckIcon, f as ChevronDownIcon } from "../../icons-CVFSeTJn.js";
3
3
  import { Button } from "../foundations/Button.js";
4
4
  import { Menu } from "../foundations/Menu.js";
5
5
  import * as React from "react";
@@ -63,7 +63,7 @@ declare function TerminalTitle({
63
63
  ref?: React.Ref<HTMLSpanElement>;
64
64
  }): React.JSX.Element;
65
65
  type TerminalStatusValue = "idle" | "running" | "success" | "error";
66
- interface TerminalStatusProps extends Omit<React.HTMLAttributes<HTMLSpanElement>, "color"> {
66
+ interface TerminalStatusProps extends React.HTMLAttributes<HTMLSpanElement> {
67
67
  status: TerminalStatusValue;
68
68
  }
69
69
  declare function TerminalStatus({
@@ -1,8 +1,7 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { et as TerminalIcon, it as XIcon } from "../../icons-MmIXciMO.js";
2
+ import { Z as TerminalIcon, tt as XIcon } from "../../icons-CVFSeTJn.js";
3
3
  import { IconButton } from "../foundations/IconButton.js";
4
- import { t as CopyButton } from "../../copy-button-Bc7jsYv_.js";
5
- import { Badge } from "../foundations/Badge.js";
4
+ import { t as CopyButton } from "../../copy-button-lys9N_aI.js";
6
5
  import { ScrollArea } from "../foundations/ScrollArea.js";
7
6
  import * as React from "react";
8
7
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -123,19 +122,12 @@ function TerminalTitle({ className, children, ref, ...props }) {
123
122
  children: [/* @__PURE__ */ jsx(TerminalIcon, { "aria-hidden": "true" }), children ?? "Terminal"]
124
123
  });
125
124
  }
126
- const STATUS_COLOR = {
127
- idle: "neutral",
128
- running: "primary",
129
- success: "success",
130
- error: "destructive"
131
- };
132
125
  function TerminalStatus({ className, status, ref, ...props }) {
133
- return /* @__PURE__ */ jsx(Badge, {
126
+ return /* @__PURE__ */ jsx("span", {
134
127
  ...props,
135
128
  ref,
136
- color: STATUS_COLOR[status],
137
- size: "sm",
138
129
  className: cx("terminal__status", className),
130
+ "data-status": status,
139
131
  children: status
140
132
  });
141
133
  }
@@ -30,7 +30,7 @@ interface TestResultsProps extends React.HTMLAttributes<HTMLDivElement> {
30
30
  * Built internally for CI/test output in agent and developer workflows. Use it
31
31
  * for structured test reports. Do not use it for generic status dashboards.
32
32
  *
33
- * Sigvelo changes: composes Collapsible, Badge, and Progress; maps status
33
+ * Sigvelo changes: composes Collapsible and Progress; maps status
34
34
  * color and spacing to Sigvelo CSS tokens; opens failed suites by default.
35
35
  *
36
36
  * Suite triggers inherit Collapsible keyboard behavior. Error stacks should be