@mcp-b/react-components 0.44.1 → 0.45.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 (131) hide show
  1. package/dist/{AgentToolRunsContext-daY67hFM.d.ts → AgentToolRunsContext-jtmveaRE.d.ts} +8 -7
  2. package/dist/{CodeBlock-Dl7a3Wqo.js → CodeBlock-8K1p1BDU.js} +1 -1
  3. package/dist/{FileTree-Uu3ZnW1u.js → FileTree-QTP57Qz4.js} +1 -1
  4. package/dist/{ResponsiveSidebarShell-DOXd5T-d.d.ts → ResponsiveSidebarShell-BTVPxLJK.d.ts} +12 -0
  5. package/dist/{SetupChecklist-DOp-zqjh.js → SetupChecklist-CZeToAbu.js} +1 -1
  6. package/dist/{ThinkChat-BES_3Mb-.js → ThinkChat-CWMcl79Q.js} +3 -21
  7. package/dist/{WorkspaceFileView-BublZXky.js → WorkspaceFileView-DJ8Oxz57.js} +3 -3
  8. package/dist/components/agents-sdk/AgentActivity.js +1 -1
  9. package/dist/components/agents-sdk/AgentChat.js +18 -13
  10. package/dist/components/agents-sdk/AgentEvent.d.ts +42 -0
  11. package/dist/components/agents-sdk/AgentEvent.js +96 -0
  12. package/dist/components/agents-sdk/AgentToolRunsContext.d.ts +1 -1
  13. package/dist/components/agents-sdk/AgentToolRunsContext.js +11 -7
  14. package/dist/components/agents-sdk/BrowserLiveScreen.js +1 -1
  15. package/dist/components/agents-sdk/BrowserLiveView.js +1 -1
  16. package/dist/components/agents-sdk/BrowserReplay.js +2 -2
  17. package/dist/components/agents-sdk/BrowserRunPanel.js +1 -1
  18. package/dist/components/agents-sdk/ManagerOffice.d.ts +104 -10
  19. package/dist/components/agents-sdk/ManagerOffice.js +1171 -147
  20. package/dist/components/agents-sdk/McpConnectionRequest.js +2 -2
  21. package/dist/components/agents-sdk/McpConnectorForm.js +1 -1
  22. package/dist/components/agents-sdk/McpPluginCatalog.js +4 -4
  23. package/dist/components/agents-sdk/McpServerPicker.js +3 -3
  24. package/dist/components/agents-sdk/ModelSelector.js +4 -4
  25. package/dist/components/agents-sdk/PromptInputApproval.js +1 -1
  26. package/dist/components/agents-sdk/PromptInputCommands.js +1 -1
  27. package/dist/components/agents-sdk/SubagentRunDetails.js +1 -1
  28. package/dist/components/agents-sdk/SubagentRunIndicator.d.ts +21 -3
  29. package/dist/components/agents-sdk/SubagentRunIndicator.js +56 -6
  30. package/dist/components/agents-sdk/SubagentRunSelector.js +5 -12
  31. package/dist/components/agents-sdk/ThinkChat.d.ts +1 -2
  32. package/dist/components/agents-sdk/ThinkChat.js +1 -1
  33. package/dist/components/agents-sdk/ThinkChatActivity.js +3 -3
  34. package/dist/components/agents-sdk/ThinkChatActivitySummary.js +1 -1
  35. package/dist/components/agents-sdk/ThinkChatToolPanels.js +2 -2
  36. package/dist/components/agents-sdk/ThinkExecutionDetail.js +3 -3
  37. package/dist/components/agents-sdk/ThinkExecutionRun.js +1 -1
  38. package/dist/components/agents-sdk/ThinkExecutionStatus.js +1 -1
  39. package/dist/components/agents-sdk/ThinkExecutionWorkbench.js +3 -3
  40. package/dist/components/agents-sdk/ThinkFullApp.d.ts +13 -3
  41. package/dist/components/agents-sdk/ThinkFullApp.js +51 -5
  42. package/dist/components/agents-sdk/ThinkFullAppViewSwitch.js +1 -1
  43. package/dist/components/agents-sdk/ThinkPendingApproval.js +1 -1
  44. package/dist/components/agents-sdk/ThinkRecoveryNotice.js +1 -1
  45. package/dist/components/agents-sdk/ThinkRoutineBrowser.js +3 -3
  46. package/dist/components/agents-sdk/ThinkRoutineDetail.js +1 -1
  47. package/dist/components/agents-sdk/ThinkRoutineForm.js +4 -4
  48. package/dist/components/agents-sdk/ThinkRoutineLibrary.d.ts +1 -1
  49. package/dist/components/agents-sdk/ThinkRoutineLibrary.js +4 -4
  50. package/dist/components/agents-sdk/ThinkRoutineRuns.js +1 -1
  51. package/dist/components/agents-sdk/ThinkSidepanel.d.ts +22 -4
  52. package/dist/components/agents-sdk/ThinkSidepanel.js +69 -30
  53. package/dist/components/agents-sdk/ThinkThreadPicker.js +5 -5
  54. package/dist/components/agents-sdk/Workspace.js +1 -1
  55. package/dist/components/agents-sdk/WorkspaceBrowser.js +1 -1
  56. package/dist/components/agents-sdk/WorkspaceExplorer.js +1 -1
  57. package/dist/components/agents-sdk/WorkspaceFileView.js +1 -1
  58. package/dist/components/agents-sdk/WorkspaceHeader.js +1 -1
  59. package/dist/components/agents-sdk/WorkspaceMountManager.js +4 -21
  60. package/dist/components/ai-sdk/Activity.js +1 -1
  61. package/dist/components/ai-sdk/AgentChatStartScreen.js +1 -1
  62. package/dist/components/ai-sdk/Approval.js +2 -2
  63. package/dist/components/ai-sdk/Artifact.js +1 -1
  64. package/dist/components/ai-sdk/ChainOfThought.js +1 -1
  65. package/dist/components/ai-sdk/Checkpoint.js +1 -1
  66. package/dist/components/ai-sdk/CodeBlock.js +1 -1
  67. package/dist/components/ai-sdk/ConnectedAppCards.js +3 -3
  68. package/dist/components/ai-sdk/Context.js +1 -1
  69. package/dist/components/ai-sdk/Conversation.js +1 -1
  70. package/dist/components/ai-sdk/Goal.js +2 -2
  71. package/dist/components/ai-sdk/InlineCitation.js +1 -1
  72. package/dist/components/ai-sdk/MediaPreviewCard.js +1 -1
  73. package/dist/components/ai-sdk/Message.js +2 -2
  74. package/dist/components/ai-sdk/MessageScroller.js +1 -1
  75. package/dist/components/ai-sdk/MessageScrollerVirtual.js +1 -1
  76. package/dist/components/ai-sdk/Plan.js +2 -2
  77. package/dist/components/ai-sdk/PromptInput.js +3 -3
  78. package/dist/components/ai-sdk/Queue.js +2 -2
  79. package/dist/components/ai-sdk/Reasoning.js +2 -2
  80. package/dist/components/ai-sdk/Sources.js +1 -1
  81. package/dist/components/ai-sdk/Task.js +1 -1
  82. package/dist/components/ai-sdk/ToolInvocation.js +1 -1
  83. package/dist/components/extension/ChatGptSignInScreen.js +1 -1
  84. package/dist/components/extension/CodexModelSelector.js +2 -2
  85. package/dist/components/extension/ConversationTabPicker.js +2 -2
  86. package/dist/components/foundations/Checkbox.js +1 -1
  87. package/dist/components/foundations/Collapsible.js +1 -1
  88. package/dist/components/foundations/ContextMenu.js +1 -1
  89. package/dist/components/foundations/Menubar.js +1 -1
  90. package/dist/components/foundations/SearchField.js +1 -1
  91. package/dist/components/foundations/Select.js +1 -1
  92. package/dist/components/foundations/Stepper.js +1 -1
  93. package/dist/components/foundations/Toast.js +1 -1
  94. package/dist/components/foundations/ToggleGroup.d.ts +1 -1
  95. package/dist/components/foundations/ToggleGroup.js +1 -1
  96. package/dist/components/foundations/icons.js +1 -1
  97. package/dist/components/general-purpose/Commit.js +2 -2
  98. package/dist/components/general-purpose/EnvironmentVariables.js +2 -2
  99. package/dist/components/general-purpose/FileTree.js +1 -1
  100. package/dist/components/general-purpose/PricingBillingToggle.js +1 -1
  101. package/dist/components/general-purpose/PricingPlanCard.js +2 -2
  102. package/dist/components/general-purpose/PricingUsageCalculator.js +2 -2
  103. package/dist/components/general-purpose/ResizableSidePanel.js +1 -1
  104. package/dist/components/general-purpose/ResponsiveSidebarShell.d.ts +1 -1
  105. package/dist/components/general-purpose/ResponsiveSidebarShell.js +72 -22
  106. package/dist/components/general-purpose/SettingsFormDialog.js +2 -2
  107. package/dist/components/general-purpose/SetupChecklist.js +1 -1
  108. package/dist/components/general-purpose/Terminal.js +2 -2
  109. package/dist/components/general-purpose/TestResults.js +1 -1
  110. package/dist/components/general-purpose/ThemeModeControl.js +2 -2
  111. package/dist/components/general-purpose/WebPreview.js +3 -3
  112. package/dist/components/nanites/AgentConnection.js +2 -2
  113. package/dist/components/nanites/AgentToolDetail.js +4 -4
  114. package/dist/{copy-button-DHhf-J1d.js → copy-button-BpA7wQva.js} +1 -1
  115. package/dist/{format-DB2mX9DA.js → format-COCyV98Z.js} +23 -1
  116. package/dist/{progress-ring-BEocM1e3.js → progress-ring-Cgii90dC.js} +1 -1
  117. package/dist/styles/agent-event.css +14 -0
  118. package/dist/styles/avatar.css +2 -1
  119. package/dist/styles/base.css +4 -0
  120. package/dist/styles/button.css +10 -0
  121. package/dist/styles/index.css +1 -0
  122. package/dist/styles/manager-office.css +1303 -70
  123. package/dist/styles/message-scroller.css +5 -0
  124. package/dist/styles/responsive-sidebar-shell.css +47 -0
  125. package/dist/styles/subagent-run.css +29 -19
  126. package/dist/styles/think-full-app.css +139 -4
  127. package/dist/styles/think-sidepanel.css +0 -5
  128. package/dist/styles/think-thread-picker.css +13 -12
  129. package/dist/styles/workspace-mount-manager.css +0 -22
  130. package/package.json +8 -8
  131. package/dist/{icons-Dw-im7lg.js → icons-DbrksZyY.js} +1 -1
@@ -1,5 +1,5 @@
1
1
  import { n as mergeBaseClassName } from "../../class-names-BiMDVpUo.js";
2
- import { nt as XIcon } from "../../icons-Dw-im7lg.js";
2
+ import { nt as XIcon } from "../../icons-DbrksZyY.js";
3
3
  import { buttonVariants } from "./Button.js";
4
4
  import "react";
5
5
  import { jsx } from "react/jsx-runtime";
@@ -1,7 +1,7 @@
1
1
  import { r as ToggleVariantsOptions } from "../../Toggle-DLrIf5YH.js";
2
2
  import * as React from "react";
3
- import { ToggleGroup as ToggleGroup$1 } from "@base-ui/react/toggle-group";
4
3
  import { Toggle } from "@base-ui/react/toggle";
4
+ import { ToggleGroup as ToggleGroup$1 } from "@base-ui/react/toggle-group";
5
5
 
6
6
  //#region src/components/foundations/ToggleGroup.d.ts
7
7
  type ToggleGroupSize = ToggleVariantsOptions["size"];
@@ -3,8 +3,8 @@ import { n as mergeRefs } from "../../merge-refs-DF_7w2x_.js";
3
3
  import { toggleVariants } from "./Toggle.js";
4
4
  import * as React from "react";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
- import { ToggleGroup as ToggleGroup$1 } from "@base-ui/react/toggle-group";
7
6
  import { Toggle } from "@base-ui/react/toggle";
7
+ import { ToggleGroup as ToggleGroup$1 } from "@base-ui/react/toggle-group";
8
8
  //#region src/components/foundations/ToggleGroup.tsx
9
9
  /**
10
10
  * Tracks the pressed item's box so the segmented thumb can slide to it instead
@@ -1,2 +1,2 @@
1
- import { $ as TrashIcon, A as McpIcon, B as PlayIcon, C as FolderIcon, D as LinkIcon, E as KeyboardIcon, F as MoonIcon, G as SidebarIcon, H as QueueIcon, I as MoveToFrontIcon, J as SquareIcon, K as SlackIcon, L as PaperclipIcon, M as MicrophoneIcon, N as MinusIcon, O as MailIcon, P as MonitorIcon, Q as TerminalIcon, R as PauseIcon, S as FileIcon, T as InfoIcon, U as RefreshIcon, V as PlusIcon, W as SearchIcon, X as SunIcon, Y as StopIcon, Z as TargetIcon, _ as DotIcon, a as ArrowUpIcon, b as EyeIcon, c as BoxIcon, d as CheckIcon, et as WarningIcon, f as ChevronDownIcon, g as DiscordIcon, h as CopyIcon, i as ArrowRightIcon, j as MessageSquareIcon, k as MaximizeIcon, l as BrainIcon, m as CodeIcon, n as ArrowDownIcon, nt as XIcon, o as ArrowUpRightIcon, p as ChevronRightIcon, q as SpinnerIcon, r as ArrowLeftIcon, s as BookmarkIcon, t as ArchiveIcon, tt as WrenchIcon, u as CalendarIcon, v as DownloadIcon, w as FolderOpenIcon, x as EyeOffIcon, y as EllipsisIcon, z as PencilIcon } from "../../icons-Dw-im7lg.js";
1
+ import { $ as TrashIcon, A as McpIcon, B as PlayIcon, C as FolderIcon, D as LinkIcon, E as KeyboardIcon, F as MoonIcon, G as SidebarIcon, H as QueueIcon, I as MoveToFrontIcon, J as SquareIcon, K as SlackIcon, L as PaperclipIcon, M as MicrophoneIcon, N as MinusIcon, O as MailIcon, P as MonitorIcon, Q as TerminalIcon, R as PauseIcon, S as FileIcon, T as InfoIcon, U as RefreshIcon, V as PlusIcon, W as SearchIcon, X as SunIcon, Y as StopIcon, Z as TargetIcon, _ as DotIcon, a as ArrowUpIcon, b as EyeIcon, c as BoxIcon, d as CheckIcon, et as WarningIcon, f as ChevronDownIcon, g as DiscordIcon, h as CopyIcon, i as ArrowRightIcon, j as MessageSquareIcon, k as MaximizeIcon, l as BrainIcon, m as CodeIcon, n as ArrowDownIcon, nt as XIcon, o as ArrowUpRightIcon, p as ChevronRightIcon, q as SpinnerIcon, r as ArrowLeftIcon, s as BookmarkIcon, t as ArchiveIcon, tt as WrenchIcon, u as CalendarIcon, v as DownloadIcon, w as FolderOpenIcon, x as EyeOffIcon, y as EllipsisIcon, z as PencilIcon } from "../../icons-DbrksZyY.js";
2
2
  export { ArchiveIcon, ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowUpIcon, ArrowUpRightIcon, BookmarkIcon, BoxIcon, BrainIcon, CalendarIcon, CheckIcon, ChevronDownIcon, ChevronRightIcon, CodeIcon, CopyIcon, DiscordIcon, DotIcon, DownloadIcon, EllipsisIcon, EyeIcon, EyeOffIcon, FileIcon, FolderIcon, FolderOpenIcon, InfoIcon, KeyboardIcon, LinkIcon, MailIcon, MaximizeIcon, McpIcon, MessageSquareIcon, MicrophoneIcon, MinusIcon, MonitorIcon, MoonIcon, MoveToFrontIcon, PaperclipIcon, PauseIcon, PencilIcon, PlayIcon, PlusIcon, QueueIcon, RefreshIcon, SearchIcon, SidebarIcon, SlackIcon, SpinnerIcon, SquareIcon, StopIcon, SunIcon, TargetIcon, TerminalIcon, TrashIcon, WarningIcon, WrenchIcon, XIcon };
@@ -1,7 +1,7 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { S as FileIcon, p as ChevronRightIcon } from "../../icons-Dw-im7lg.js";
3
2
  import { Collapsible } from "../foundations/Collapsible.js";
4
- import { t as CopyButton } from "../../copy-button-DHhf-J1d.js";
3
+ import { S as FileIcon, p as ChevronRightIcon } from "../../icons-DbrksZyY.js";
4
+ import { t as CopyButton } from "../../copy-button-BpA7wQva.js";
5
5
  import { Avatar } from "../foundations/Avatar.js";
6
6
  import "react";
7
7
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,6 +1,6 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { b as EyeIcon, x as EyeOffIcon } from "../../icons-Dw-im7lg.js";
3
- import { t as CopyButton } from "../../copy-button-DHhf-J1d.js";
2
+ import { b as EyeIcon, x as EyeOffIcon } from "../../icons-DbrksZyY.js";
3
+ import { t as CopyButton } from "../../copy-button-BpA7wQva.js";
4
4
  import { Switch } from "../foundations/Switch.js";
5
5
  import * as React from "react";
6
6
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -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-Uu3ZnW1u.js";
1
+ import { a as FileTreeIcon, i as FileTreeFolder, n as FileTreeActions, o as FileTreeName, r as FileTreeFile, t as FileTree } from "../../FileTree-QTP57Qz4.js";
2
2
  export { FileTree, FileTreeActions, FileTreeFile, FileTreeFolder, FileTreeIcon, FileTreeName };
@@ -1,6 +1,6 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { ToggleGroup } from "../foundations/ToggleGroup.js";
3
2
  import { Switch } from "../foundations/Switch.js";
3
+ import { ToggleGroup } from "../foundations/ToggleGroup.js";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
5
5
  //#region src/components/general-purpose/PricingBillingToggle.tsx
6
6
  /** Controlled billing-period selector composed from the shared Switch or ToggleGroup. */
@@ -1,9 +1,9 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { N as MinusIcon, T as InfoIcon, d as CheckIcon } from "../../icons-Dw-im7lg.js";
2
+ import { N as MinusIcon, T as InfoIcon, d as CheckIcon } from "../../icons-DbrksZyY.js";
3
3
  import { Button } from "../foundations/Button.js";
4
4
  import { IconButton } from "../foundations/IconButton.js";
5
- import { Separator } from "../foundations/Separator.js";
6
5
  import { Card } from "../foundations/Card.js";
6
+ import { Separator } from "../foundations/Separator.js";
7
7
  import { getPlanPrice, getPlanYearlySavings } from "./Pricing.js";
8
8
  import { jsx, jsxs } from "react/jsx-runtime";
9
9
  //#region src/components/general-purpose/PricingPlanCard.tsx
@@ -1,8 +1,8 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
+ import { Card } from "../foundations/Card.js";
2
3
  import { Separator } from "../foundations/Separator.js";
3
- import { Slider } from "../foundations/Slider.js";
4
4
  import { Progress } from "../foundations/Progress.js";
5
- import { Card } from "../foundations/Card.js";
5
+ import { Slider } from "../foundations/Slider.js";
6
6
  import { formatPricingUsage, getUsagePrice } from "./Pricing.js";
7
7
  import * as React from "react";
8
8
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,5 +1,5 @@
1
1
  import { n as mergeBaseClassName, t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { n as clamp } from "../../format-DB2mX9DA.js";
2
+ import { n as clamp } from "../../format-COCyV98Z.js";
3
3
  import { Separator } from "../foundations/Separator.js";
4
4
  import * as React from "react";
5
5
  import { jsx } from "react/jsx-runtime";
@@ -1,2 +1,2 @@
1
- import { a as ResponsiveSidebarShellProps, i as ResponsiveSidebarShellControls, n as ResponsiveSidebarShell, r as ResponsiveSidebarShellBar, t as AppBarSlots } from "../../ResponsiveSidebarShell-DOXd5T-d.js";
1
+ import { a as ResponsiveSidebarShellProps, i as ResponsiveSidebarShellControls, n as ResponsiveSidebarShell, r as ResponsiveSidebarShellBar, t as AppBarSlots } from "../../ResponsiveSidebarShell-BTVPxLJK.js";
2
2
  export { AppBarSlots, ResponsiveSidebarShell, ResponsiveSidebarShellBar, ResponsiveSidebarShellControls, ResponsiveSidebarShellProps };
@@ -1,7 +1,7 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { G as SidebarIcon, et as WarningIcon, f as ChevronDownIcon, r as ArrowLeftIcon } from "../../icons-Dw-im7lg.js";
2
+ import { G as SidebarIcon, et as WarningIcon, f as ChevronDownIcon, r as ArrowLeftIcon } from "../../icons-DbrksZyY.js";
3
3
  import { Button } from "../foundations/Button.js";
4
- import { t as capitalize } from "../../format-DB2mX9DA.js";
4
+ import { t as capitalize } from "../../format-COCyV98Z.js";
5
5
  import { n as mergeRefs } from "../../merge-refs-DF_7w2x_.js";
6
6
  import { AppTopBar } from "./AppTopBar.js";
7
7
  import { ResizableSidePanel } from "./ResizableSidePanel.js";
@@ -15,6 +15,17 @@ const sidebarMaxWidth = 384;
15
15
  const sidebarKeyboardStep = 24;
16
16
  /** Matches --sigvelo-layout-break-compact. */
17
17
  const compactSidebarWidthRem = 56;
18
+ function useControllableSidebar({ sidebarOpen, defaultSidebarOpen, onSidebarOpenChange }) {
19
+ const [innerOpen, setInnerOpen] = React.useState(defaultSidebarOpen ?? true);
20
+ return [
21
+ sidebarOpen ?? innerOpen,
22
+ React.useCallback((next) => {
23
+ if (sidebarOpen === void 0) setInnerOpen(next);
24
+ onSidebarOpenChange?.(next);
25
+ }, [sidebarOpen, onSidebarOpenChange]),
26
+ setInnerOpen
27
+ ];
28
+ }
18
29
  function isCompactSidebar(root) {
19
30
  const rootFontSize = Number.parseFloat(getComputedStyle(document.documentElement).fontSize) || 16;
20
31
  return root.offsetWidth <= compactSidebarWidthRem * rootFontSize;
@@ -27,14 +38,19 @@ function isCompactSidebar(root) {
27
38
  * hook, and its container name `responsive-sidebar-shell` is public contract:
28
39
  * surfaces that compose the shell size themselves against it.
29
40
  */
30
- function ResponsiveSidebarShell({ sidebar, sidebarLabel = "sidebar", defaultSidebarWidth = sidebarDefaultWidth, bar, error, showMainLabel = "Show main content", className, children, ref, style, ...props }) {
41
+ function ResponsiveSidebarShell({ sidebar, sidebarLabel = "sidebar", sidebarOpen, sidebarTogglePlacement = "main", defaultSidebarOpen, defaultSidebarWidth = sidebarDefaultWidth, onSidebarOpenChange, bar, error, showMainLabel = "Show main content", className, children, ref, style, ...props }) {
31
42
  const sidebarId = React.useId();
32
43
  const rootRef = React.useRef(null);
33
44
  const mainRef = React.useRef(null);
34
45
  const openerRef = React.useRef(null);
35
46
  const compactRef = React.useRef(null);
36
47
  const restoreSidebarOnWideRef = React.useRef(true);
37
- const [isSidebarOpen, setSidebarOpen] = React.useState(true);
48
+ const [isSidebarOpen, setSidebarOpen, primeSidebarOpen] = useControllableSidebar({
49
+ sidebarOpen,
50
+ defaultSidebarOpen,
51
+ onSidebarOpenChange
52
+ });
53
+ const wantsBuiltInDefault = sidebarOpen === void 0 && defaultSidebarOpen === void 0;
38
54
  React.useLayoutEffect(() => {
39
55
  const root = rootRef.current;
40
56
  if (!root) return;
@@ -44,7 +60,7 @@ function ResponsiveSidebarShell({ sidebar, sidebarLabel = "sidebar", defaultSide
44
60
  const wasCompact = compactRef.current;
45
61
  compactRef.current = compact;
46
62
  if (wasCompact === null) {
47
- if (compact) setSidebarOpen(false);
63
+ if (wantsBuiltInDefault && compact) primeSidebarOpen(false);
48
64
  return;
49
65
  }
50
66
  if (!wasCompact && compact) {
@@ -57,7 +73,12 @@ function ResponsiveSidebarShell({ sidebar, sidebarLabel = "sidebar", defaultSide
57
73
  const observer = new ResizeObserver(syncLayout);
58
74
  observer.observe(root);
59
75
  return () => observer.disconnect();
60
- }, [isSidebarOpen]);
76
+ }, [
77
+ isSidebarOpen,
78
+ primeSidebarOpen,
79
+ setSidebarOpen,
80
+ wantsBuiltInDefault
81
+ ]);
61
82
  const hasSidebar = sidebar != null;
62
83
  const toggleLabel = capitalize(sidebarLabel);
63
84
  const toggleTooltip = `${isSidebarOpen ? "Hide" : "Show"} ${sidebarLabel}`;
@@ -67,23 +88,54 @@ function ResponsiveSidebarShell({ sidebar, sidebarLabel = "sidebar", defaultSide
67
88
  }, []);
68
89
  const closeSidebar = React.useCallback(() => {
69
90
  updateSidebar(() => setSidebarOpen(false), () => mainRef.current?.focus({ preventScroll: true }));
70
- }, [updateSidebar]);
91
+ }, [setSidebarOpen, updateSidebar]);
71
92
  const closeSidebarOnCompact = React.useCallback(() => {
72
93
  if (rootRef.current && isCompactSidebar(rootRef.current)) closeSidebar();
73
94
  }, [closeSidebar]);
74
95
  const toggleSidebar = React.useCallback((trigger) => {
75
96
  if (trigger) openerRef.current = trigger;
76
97
  updateSidebar(() => setSidebarOpen(!isSidebarOpen));
77
- }, [isSidebarOpen, updateSidebar]);
98
+ }, [
99
+ isSidebarOpen,
100
+ setSidebarOpen,
101
+ updateSidebar
102
+ ]);
78
103
  const dismissSidebar = React.useCallback(() => {
79
104
  updateSidebar(() => setSidebarOpen(false), () => openerRef.current?.focus({ preventScroll: true }));
80
- }, [updateSidebar]);
105
+ }, [setSidebarOpen, updateSidebar]);
81
106
  const sidebarContent = typeof sidebar === "function" ? sidebar({
82
107
  closeSidebar,
83
108
  closeSidebarOnCompact
84
109
  }) : sidebar;
85
- const hasAppLeading = bar?.back != null || bar?.leading != null;
110
+ const hasCustomLeading = bar?.leading != null;
111
+ const hasAppLeading = bar?.back != null || hasCustomLeading;
86
112
  const hasTitleTrigger = hasSidebar && bar?.compactTitleTrigger != null && bar?.compactLeading == null;
113
+ const renderSidebarToggle = (className) => hasSidebar ? /* @__PURE__ */ jsx(AppTopBar.Button, {
114
+ className: cx("responsive-sidebar-shell__toggle", className),
115
+ label: toggleLabel,
116
+ tooltip: toggleTooltip,
117
+ type: "button",
118
+ "aria-controls": sidebarId,
119
+ "aria-expanded": isSidebarOpen,
120
+ onClick: (event) => toggleSidebar(event.currentTarget),
121
+ children: /* @__PURE__ */ jsx(SidebarIcon, {})
122
+ }) : null;
123
+ const renderSidebarToggleInSidebar = () => hasSidebar ? /* @__PURE__ */ jsx(Button, {
124
+ className: "responsive-sidebar-shell__toggle responsive-sidebar-shell__toggle--sidebar",
125
+ type: "button",
126
+ variant: "ghost",
127
+ color: "neutral",
128
+ size: "sm",
129
+ iconOnly: true,
130
+ "aria-label": toggleLabel,
131
+ title: toggleTooltip,
132
+ "aria-controls": sidebarId,
133
+ "aria-expanded": isSidebarOpen,
134
+ onClick: (event) => toggleSidebar(event.currentTarget),
135
+ children: /* @__PURE__ */ jsx(SidebarIcon, {})
136
+ }) : null;
137
+ const sidebarToggle = sidebarTogglePlacement === "sidebar" && isSidebarOpen ? renderSidebarToggleInSidebar() : null;
138
+ const mainSidebarToggle = sidebarTogglePlacement === "sidebar" || sidebarTogglePlacement === "main" && !hasCustomLeading ? renderSidebarToggle(sidebarTogglePlacement === "sidebar" ? "responsive-sidebar-shell__toggle--sidebar-fallback" : hasTitleTrigger ? "responsive-sidebar-shell__toggle--replaced-by-title" : bar?.compactLeading != null ? "responsive-sidebar-shell__toggle--replaced-by-compact-leading" : void 0) : null;
87
139
  const hasTopBar = !bar?.hidden && (hasSidebar || bar?.back != null || bar?.leading != null || bar?.compactLeading != null || bar?.title != null || bar?.actions != null || bar?.primary != null);
88
140
  const compactLeadingMode = hasTitleTrigger ? "trigger" : !hasAppLeading && bar?.compactLeading != null ? "custom" : void 0;
89
141
  return /* @__PURE__ */ jsx("div", {
@@ -93,6 +145,7 @@ function ResponsiveSidebarShell({ sidebar, sidebarLabel = "sidebar", defaultSide
93
145
  style,
94
146
  ...props,
95
147
  "data-sidebar-open": hasSidebar && isSidebarOpen ? "true" : "false",
148
+ "data-sidebar-toggle-placement": sidebarTogglePlacement,
96
149
  onKeyDown: (event) => {
97
150
  props.onKeyDown?.(event);
98
151
  if (!event.defaultPrevented && event.key === "Escape" && hasSidebar && isSidebarOpen && rootRef.current && isCompactSidebar(rootRef.current)) {
@@ -111,12 +164,18 @@ function ResponsiveSidebarShell({ sidebar, sidebarLabel = "sidebar", defaultSide
111
164
  keyboardStep: sidebarKeyboardStep,
112
165
  children: [
113
166
  hasSidebar && isSidebarOpen ? /* @__PURE__ */ jsx(ResizableSidePanel.Handle, { className: "responsive-sidebar-shell__resizer" }) : null,
114
- hasSidebar ? /* @__PURE__ */ jsx("div", {
167
+ hasSidebar ? /* @__PURE__ */ jsxs("div", {
115
168
  id: sidebarId,
116
169
  className: "responsive-sidebar-shell__sidebar",
117
170
  "aria-hidden": isSidebarOpen ? void 0 : true,
118
171
  inert: isSidebarOpen ? void 0 : true,
119
- children: sidebarContent
172
+ children: [sidebarToggle ? /* @__PURE__ */ jsx("div", {
173
+ className: "responsive-sidebar-shell__sidebar-leading",
174
+ children: sidebarToggle
175
+ }) : null, /* @__PURE__ */ jsx("div", {
176
+ className: "responsive-sidebar-shell__sidebar-content",
177
+ children: sidebarContent
178
+ })]
120
179
  }) : null,
121
180
  /* @__PURE__ */ jsxs("div", {
122
181
  ref: mainRef,
@@ -135,16 +194,7 @@ function ResponsiveSidebarShell({ sidebar, sidebarLabel = "sidebar", defaultSide
135
194
  children: /* @__PURE__ */ jsx(ArrowLeftIcon, {})
136
195
  }) : null,
137
196
  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,
197
+ !hasCustomLeading ? mainSidebarToggle : null,
148
198
  compactLeadingMode === "custom" ? /* @__PURE__ */ jsx("span", {
149
199
  className: "responsive-sidebar-shell__compact-leading",
150
200
  children: bar?.compactLeading
@@ -1,8 +1,8 @@
1
1
  import { Button } from "../foundations/Button.js";
2
- import { Dialog } from "../foundations/Dialog.js";
3
- import { i as formatErrorMessage } from "../../format-DB2mX9DA.js";
4
2
  import { Field } from "../foundations/Field.js";
5
3
  import { Form } from "../foundations/Form.js";
4
+ import { Dialog } from "../foundations/Dialog.js";
5
+ import { a as formatErrorMessage } from "../../format-COCyV98Z.js";
6
6
  import { Checkbox } from "../foundations/Checkbox.js";
7
7
  import * as React from "react";
8
8
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,2 +1,2 @@
1
- import { n as SetupChecklistGroup, t as SetupChecklistAction } from "../../SetupChecklist-DOp-zqjh.js";
1
+ import { n as SetupChecklistGroup, t as SetupChecklistAction } from "../../SetupChecklist-CZeToAbu.js";
2
2
  export { SetupChecklistAction, SetupChecklistGroup };
@@ -1,8 +1,8 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { Q as TerminalIcon, nt as XIcon } from "../../icons-Dw-im7lg.js";
2
+ import { Q as TerminalIcon, nt as XIcon } from "../../icons-DbrksZyY.js";
3
3
  import { IconButton } from "../foundations/IconButton.js";
4
+ import { t as CopyButton } from "../../copy-button-BpA7wQva.js";
4
5
  import { ScrollArea } from "../foundations/ScrollArea.js";
5
- import { t as CopyButton } from "../../copy-button-DHhf-J1d.js";
6
6
  import * as React from "react";
7
7
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
8
8
  import Anser from "anser";
@@ -1,6 +1,6 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { d as CheckIcon, nt as XIcon, p as ChevronRightIcon, q as SpinnerIcon } from "../../icons-Dw-im7lg.js";
3
2
  import { Collapsible } from "../foundations/Collapsible.js";
3
+ import { d as CheckIcon, nt as XIcon, p as ChevronRightIcon, q as SpinnerIcon } from "../../icons-DbrksZyY.js";
4
4
  import { Progress } from "../foundations/Progress.js";
5
5
  import * as React from "react";
6
6
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -1,6 +1,6 @@
1
- import { F as MoonIcon, P as MonitorIcon, X as SunIcon } from "../../icons-Dw-im7lg.js";
2
- import { useTheme } from "../foundations/ThemeProvider.js";
1
+ import { F as MoonIcon, P as MonitorIcon, X as SunIcon } from "../../icons-DbrksZyY.js";
3
2
  import { Radio, RadioGroup } from "../foundations/RadioGroup.js";
3
+ import { useTheme } from "../foundations/ThemeProvider.js";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
5
5
  //#region src/components/general-purpose/ThemeModeControl.tsx
6
6
  const modes = [
@@ -1,9 +1,9 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { U as RefreshIcon, f as ChevronDownIcon, i as ArrowRightIcon, r as ArrowLeftIcon } from "../../icons-Dw-im7lg.js";
3
- import { IconButton } from "../foundations/IconButton.js";
4
2
  import { Collapsible } from "../foundations/Collapsible.js";
5
- import { ScrollArea } from "../foundations/ScrollArea.js";
3
+ import { U as RefreshIcon, f as ChevronDownIcon, i as ArrowRightIcon, r as ArrowLeftIcon } from "../../icons-DbrksZyY.js";
4
+ import { IconButton } from "../foundations/IconButton.js";
6
5
  import { Input } from "../foundations/Input.js";
6
+ import { ScrollArea } from "../foundations/ScrollArea.js";
7
7
  import * as React from "react";
8
8
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
9
9
  //#region src/components/general-purpose/WebPreview.tsx
@@ -1,8 +1,8 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { D as LinkIcon } from "../../icons-Dw-im7lg.js";
2
+ import { D as LinkIcon } from "../../icons-DbrksZyY.js";
3
3
  import { Button } from "../foundations/Button.js";
4
+ import { a as CodeBlockCopyButton, i as CodeBlockContent, n as CodeBlockActions, p as CodeBlockTitle, r as CodeBlockContainer, s as CodeBlockHeader, t as CodeBlock } from "../../CodeBlock-8K1p1BDU.js";
4
5
  import { Popover } from "../foundations/Popover.js";
5
- import { a as CodeBlockCopyButton, i as CodeBlockContent, n as CodeBlockActions, p as CodeBlockTitle, r as CodeBlockContainer, s as CodeBlockHeader, t as CodeBlock } from "../../CodeBlock-Dl7a3Wqo.js";
6
6
  import { ToggleGroup } from "../foundations/ToggleGroup.js";
7
7
  import * as React from "react";
8
8
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,11 +1,11 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { r as ArrowLeftIcon } from "../../icons-Dw-im7lg.js";
2
+ import { r as ArrowLeftIcon } from "../../icons-DbrksZyY.js";
3
3
  import { TransitionSurface } from "../foundations/TransitionSurface.js";
4
4
  import { AppTopBar } from "../general-purpose/AppTopBar.js";
5
- import { SubagentRunMilestone, SubagentRunMilestones, SubagentRunProgress } from "../agents-sdk/SubagentRunDetails.js";
6
- import { SubagentRunIndicator, getSubagentRunName } from "../agents-sdk/SubagentRunIndicator.js";
7
5
  import { NaniteMark } from "./NaniteScene.js";
8
- import { t as ThinkChat } from "../../ThinkChat-BES_3Mb-.js";
6
+ import { SubagentRunIndicator, getSubagentRunName } from "../agents-sdk/SubagentRunIndicator.js";
7
+ import { SubagentRunMilestone, SubagentRunMilestones, SubagentRunProgress } from "../agents-sdk/SubagentRunDetails.js";
8
+ import { t as ThinkChat } from "../../ThinkChat-CWMcl79Q.js";
9
9
  import * as React from "react";
10
10
  import { jsx, jsxs } from "react/jsx-runtime";
11
11
  import { useAgentChat } from "@cloudflare/think/react";
@@ -1,4 +1,4 @@
1
- import { d as CheckIcon, h as CopyIcon } from "./icons-Dw-im7lg.js";
1
+ import { d as CheckIcon, h as CopyIcon } from "./icons-DbrksZyY.js";
2
2
  import { IconButton } from "./components/foundations/IconButton.js";
3
3
  import * as React from "react";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -38,6 +38,28 @@ function formatErrorMessage(error) {
38
38
  return error instanceof Error ? error.message : String(error);
39
39
  }
40
40
  /**
41
+ * How much of one line a collapsed row carries before it is cut. One bound for
42
+ * every such row — a run's status line, an activity row's detail — because
43
+ * they stack in the same transcript and two limits would read as drift.
44
+ */
45
+ const LINE_LIMIT = 160;
46
+ /**
47
+ * The trimmed, non-empty lines of `value`. Callers that want the newest line
48
+ * of a stream take the last one; `firstLine` covers the common case.
49
+ */
50
+ function textLines(value) {
51
+ return value.split("\n").map((entry) => entry.trim()).filter((entry) => entry.length > 0);
52
+ }
53
+ /**
54
+ * `value` reduced to the one line a collapsed row shows: its first non-empty
55
+ * line, cut with an ellipsis. Empty when `value` has no line to show, so a
56
+ * caller can fall back to its own wording.
57
+ */
58
+ function firstLine(value) {
59
+ const line = textLines(value).at(0) ?? "";
60
+ return line.length > LINE_LIMIT ? `${line.slice(0, LINE_LIMIT - 1)}…` : line;
61
+ }
62
+ /**
41
63
  * Renders an unknown upstream value as display text. Tool arguments, results,
42
64
  * and audit records arrive in shapes this package never declared, so a bigint,
43
65
  * a cycle, or a value `JSON.stringify` has no answer for is an ordinary input
@@ -53,4 +75,4 @@ function formatUnknownValue(value, space) {
53
75
  }
54
76
  }
55
77
  //#endregion
56
- export { formatUnknownValue as a, formatErrorMessage as i, clamp as n, titleCase as o, formatClock as r, capitalize as t };
78
+ export { formatErrorMessage as a, titleCase as c, formatClock as i, clamp as n, formatUnknownValue as o, firstLine as r, textLines as s, capitalize as t };
@@ -1,4 +1,4 @@
1
- import { n as clamp } from "./format-DB2mX9DA.js";
1
+ import { n as clamp } from "./format-COCyV98Z.js";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
3
  //#region src/components/_internal/progress-ring.tsx
4
4
  /**
@@ -0,0 +1,14 @@
1
+ /* A background run's report or completion notice in the transcript: an
2
+ activity row named for the run, expandable to the words the model
3
+ received. Provenance shows in the row, never as a user bubble. */
4
+
5
+ /* The Nanite stands in for an activity icon, so it takes that slot's measure
6
+ instead of the mark's own default. */
7
+ .agent-event .activity__item-icon .nanite-mark {
8
+ inline-size: 1rem;
9
+ block-size: 1.2rem;
10
+ }
11
+
12
+ .agent-event[data-status="error"] .activity__header-action {
13
+ color: var(--sigvelo-color-danger-text);
14
+ }
@@ -80,6 +80,7 @@
80
80
  }
81
81
 
82
82
  .avatar-group .avatar {
83
+ background-color: var(--sigvelo-color-neutral-bg-muted);
83
84
  margin-inline-start: -0.5rem;
84
85
  border: 2px solid var(--sigvelo-color-canvas);
85
86
  }
@@ -105,7 +106,7 @@
105
106
  flex-shrink: 0;
106
107
  margin-inline-start: -0.5rem;
107
108
  padding-inline: var(--sigvelo-spacing-1-5);
108
- background-color: var(--sigvelo-color-neutral-bg-subtle);
109
+ background-color: var(--sigvelo-color-neutral-bg-muted);
109
110
  border: 2px solid var(--sigvelo-color-canvas);
110
111
  border-radius: var(--sigvelo-radius-full);
111
112
  color: var(--sigvelo-color-text-muted);
@@ -44,7 +44,10 @@
44
44
  .empty-state__icon,
45
45
  .inline-citation__trigger,
46
46
  .media-preview-card__play,
47
+ .manager-office__analytics-series-copy .manager-office__analytics-average,
47
48
  .manager-office__unread-dot,
49
+ .manager-office__employee-link[aria-current="page"]::after,
50
+ .manager-office__employee-nav::-webkit-scrollbar-thumb,
48
51
  .menu__radio-indicator::before,
49
52
  .message-scroller__button,
50
53
  .plan-summary__trigger,
@@ -72,6 +75,7 @@
72
75
  .switch__thumb,
73
76
  .task__item::before,
74
77
  .test-results__test-status,
78
+ .think-full-app__resizer::before,
75
79
  .think-routine-library__routine-status,
76
80
  [data-slot="meter-indicator"],
77
81
  [data-slot="meter-track"],
@@ -81,6 +81,8 @@
81
81
  }
82
82
 
83
83
  .button--normal.button--destructive {
84
+ --sigvelo-recipe-button-radius: var(--sigvelo-radius-full);
85
+
84
86
  background-color: var(--sigvelo-color-danger-bg);
85
87
  color: var(--sigvelo-color-danger-text-on-bg);
86
88
  }
@@ -148,6 +150,14 @@
148
150
  background-color: color-mix(in oklab, transparent, var(--sigvelo-color-text) 5%);
149
151
  }
150
152
 
153
+ .button--ghost.button--destructive {
154
+ color: var(--sigvelo-color-danger-text);
155
+ }
156
+
157
+ .button--ghost.button--destructive:hover:not([data-disabled]) {
158
+ background-color: color-mix(in oklab, transparent, var(--sigvelo-color-danger-bg) 12.5%);
159
+ }
160
+
151
161
  /* Link appearance */
152
162
 
153
163
  .button--link {
@@ -18,6 +18,7 @@
18
18
  @import "./agent-attention.css" layer(components);
19
19
  @import "./agent-connection.css" layer(components);
20
20
  @import "./agent-chat.css" layer(components);
21
+ @import "./agent-event.css" layer(components);
21
22
  @import "./approval.css" layer(components);
22
23
  @import "./alert-dialog.css" layer(components);
23
24
  @import "./attachment-preview.css" layer(components);