@mcp-b/react-components 0.46.1 → 0.46.3

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.
@@ -15,9 +15,9 @@ import { t as CopyButton } from "../../copy-button-D7ySsRRo.js";
15
15
  import { Context, ContextContent, ContextContentBody, ContextContentHeader, ContextTrigger, getContextUsage, getContextUsedTokens } from "../ai-sdk/Context.js";
16
16
  import { VirtualMessageScroller } from "../ai-sdk/MessageScrollerVirtual.js";
17
17
  import { QueueItem, QueueItemActions, QueueItemContent } from "../ai-sdk/Queue.js";
18
- import { AgentEventRow, getAgentEvent } from "./AgentEvent.js";
19
18
  import { EmptyState } from "../foundations/EmptyState.js";
20
19
  import { TransitionSurface } from "../foundations/TransitionSurface.js";
20
+ import { AgentEventRow, getAgentEvent } from "./AgentEvent.js";
21
21
  import { PromptInputApproval, getApprovalRequestId, getApprovalStateKey, getPendingToolApprovals } from "./PromptInputApproval.js";
22
22
  import * as React from "react";
23
23
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -16,19 +16,37 @@ const BROWSER_LIVE_SCREEN_NEGOTIATION_TIMEOUT_MS = 1e4;
16
16
  */
17
17
  function BrowserLiveScreen({ sendSignal: sendHostSignal, subscribeSignals, protocol, getIceServers, label = "Employee browser", controlLabel = "Control employee browser", tabs = [], requestedTabId }) {
18
18
  const video = useRef(null);
19
+ const input = useRef(null);
20
+ const [videoElement, setVideoElement] = useState(null);
19
21
  const track = useRef(null);
20
22
  const attachVideo = useCallback((element) => {
21
23
  video.current = element;
22
24
  if (element) element.srcObject = track.current;
25
+ setVideoElement(element);
23
26
  }, []);
24
27
  const showTrack = useCallback((stream) => {
25
28
  track.current = stream;
26
- if (video.current) video.current.srcObject = stream;
29
+ if (video.current) {
30
+ video.current.srcObject = stream;
31
+ syncInputBounds();
32
+ }
27
33
  }, []);
28
34
  const channel = useRef(null);
29
35
  const geometry = useRef(null);
30
36
  const [phase, setPhase] = useState("connecting");
31
37
  const [failure, setFailure] = useState(null);
38
+ const syncVideoInputBounds = useEffectEvent(() => syncInputBounds());
39
+ useEffect(() => {
40
+ if (!videoElement) return;
41
+ videoElement.addEventListener("resize", syncVideoInputBounds);
42
+ const observer = new ResizeObserver(syncVideoInputBounds);
43
+ observer.observe(videoElement);
44
+ syncVideoInputBounds();
45
+ return () => {
46
+ videoElement.removeEventListener("resize", syncVideoInputBounds);
47
+ observer.disconnect();
48
+ };
49
+ }, [videoElement]);
32
50
  const sendSignal = useEffectEvent((viewerId, payload) => sendHostSignal({
33
51
  viewerId,
34
52
  payload
@@ -46,7 +64,6 @@ function BrowserLiveScreen({ sendSignal: sendHostSignal, subscribeSignals, proto
46
64
  }));
47
65
  });
48
66
  const dataChannelLabel = protocol.dataChannelLabel;
49
- const input = useRef(null);
50
67
  const handleWheel = useEffectEvent((event) => {
51
68
  event.preventDefault();
52
69
  const point = toPagePoint(event);
@@ -60,14 +77,27 @@ function BrowserLiveScreen({ sendSignal: sendHostSignal, subscribeSignals, proto
60
77
  modifiers: modifiers(event)
61
78
  }]);
62
79
  });
80
+ const [keyboardOpen, setKeyboardOpen] = useState(false);
81
+ const touch = useRef(null);
82
+ const mousePress = useRef(null);
83
+ function cancelPointerState() {
84
+ const activeTouch = touch.current;
85
+ const activeMouse = mousePress.current;
86
+ if (activeTouch) clearTimeout(activeTouch.holdTimer);
87
+ touch.current = null;
88
+ mousePress.current = null;
89
+ const releases = [];
90
+ if (activeTouch?.mode === "drag") releases.push(release(activeTouch.lastPage, "left", 0, 1, 0));
91
+ if (activeMouse?.pressed) releases.push(release(activeMouse.lastPage, activeMouse.button, 0, activeMouse.clickCount, activeMouse.modifiers));
92
+ sendInput(releases);
93
+ }
63
94
  const attachInput = useCallback((element) => {
95
+ if (input.current !== element) cancelPointerState();
64
96
  input.current?.removeEventListener("wheel", handleWheel);
65
97
  input.current = element;
66
98
  element?.addEventListener("wheel", handleWheel, { passive: false });
99
+ syncInputBounds();
67
100
  }, []);
68
- const [keyboardOpen, setKeyboardOpen] = useState(false);
69
- const touch = useRef(null);
70
- const mousePress = useRef(null);
71
101
  const [streamed, setStreamed] = useState(null);
72
102
  useEffect(() => {
73
103
  let disposed = false;
@@ -90,6 +120,7 @@ function BrowserLiveScreen({ sendSignal: sendHostSignal, subscribeSignals, proto
90
120
  const closing = connection;
91
121
  const closingViewerId = viewerId;
92
122
  connection = void 0;
123
+ cancelPointerState();
93
124
  channel.current = null;
94
125
  geometry.current = null;
95
126
  if (!disposed) setStreamed(null);
@@ -188,14 +219,19 @@ function BrowserLiveScreen({ sendSignal: sendHostSignal, subscribeSignals, proto
188
219
  const status = parseStatus(event.data);
189
220
  if (!status) return;
190
221
  if (status.kind === "idle") {
222
+ cancelPointerState();
191
223
  geometry.current = null;
224
+ syncInputBounds();
192
225
  setFailure(null);
193
226
  setPhase("idle");
194
227
  setStreamed(null);
195
228
  return;
196
229
  }
197
230
  if (status.kind === "streaming") {
231
+ const previous = geometry.current;
232
+ if (previous?.tabId !== status.tabId || previous.streamGeneration !== status.streamGeneration) cancelPointerState();
198
233
  geometry.current = status;
234
+ syncInputBounds();
199
235
  setFailure(null);
200
236
  setPhase("streaming");
201
237
  setStreamed(status);
@@ -275,11 +311,29 @@ function BrowserLiveScreen({ sendSignal: sendHostSignal, subscribeSignals, proto
275
311
  renderedTop: bounds.top + (bounds.height - renderedHeight) / 2,
276
312
  renderedWidth,
277
313
  renderedHeight,
278
- zoomX: renderedWidth / status.metadata.deviceWidth,
279
- zoomY: renderedHeight / status.metadata.deviceHeight,
280
- offsetTop: status.metadata.offsetTop
314
+ zoom: renderedWidth / status.metadata.deviceWidth
281
315
  };
282
316
  }
317
+ function syncInputBounds() {
318
+ const element = input.current;
319
+ if (!element) return;
320
+ const view = currentViewGeometry();
321
+ const surface = element.parentElement;
322
+ if (!view || !surface) {
323
+ element.style.removeProperty("inset");
324
+ element.style.removeProperty("left");
325
+ element.style.removeProperty("top");
326
+ element.style.removeProperty("width");
327
+ element.style.removeProperty("height");
328
+ return;
329
+ }
330
+ const bounds = surface.getBoundingClientRect();
331
+ element.style.inset = "auto";
332
+ element.style.left = `${view.renderedLeft - bounds.left}px`;
333
+ element.style.top = `${view.renderedTop - bounds.top}px`;
334
+ element.style.width = `${view.renderedWidth}px`;
335
+ element.style.height = `${view.renderedHeight}px`;
336
+ }
283
337
  function toPagePoint(event) {
284
338
  const view = currentViewGeometry();
285
339
  return view ? pointWithin(view, event) : null;
@@ -303,7 +357,7 @@ function BrowserLiveScreen({ sendSignal: sendHostSignal, subscribeSignals, proto
303
357
  lastPage: startPage,
304
358
  holdTimer: setTimeout(() => {
305
359
  gesture.mode = "drag";
306
- sendInput([move(startPage, 0), press(startPage)]);
360
+ sendInput([move(startPage, 0, 0), press(startPage, "left", 1, 1, 0)]);
307
361
  }, TOUCH_HOLD_MS)
308
362
  };
309
363
  touch.current = gesture;
@@ -322,8 +376,8 @@ function BrowserLiveScreen({ sendSignal: sendHostSignal, subscribeSignals, proto
322
376
  gesture.mode = "scroll";
323
377
  }
324
378
  if (gesture.mode === "scroll") {
325
- const deltaX = (gesture.lastClient.x - client.x) / gesture.view.zoomX;
326
- const deltaY = (gesture.lastClient.y - client.y) / gesture.view.zoomY;
379
+ const deltaX = (gesture.lastClient.x - client.x) / gesture.view.zoom;
380
+ const deltaY = (gesture.lastClient.y - client.y) / gesture.view.zoom;
327
381
  gesture.lastClient = client;
328
382
  if (deltaX !== 0 || deltaY !== 0) sendInput([{
329
383
  kind: "mouse",
@@ -337,7 +391,7 @@ function BrowserLiveScreen({ sendSignal: sendHostSignal, subscribeSignals, proto
337
391
  const point = pointWithin(gesture.view, event);
338
392
  if (!point) return;
339
393
  gesture.lastPage = point;
340
- sendInput([move(point, 1)]);
394
+ sendInput([move(point, 1, 0)]);
341
395
  }
342
396
  function endTouch(event, cancelled) {
343
397
  const gesture = touch.current;
@@ -348,13 +402,21 @@ function BrowserLiveScreen({ sendSignal: sendHostSignal, subscribeSignals, proto
348
402
  if (gesture.mode === "pending") {
349
403
  if (cancelled) return;
350
404
  sendInput([
351
- move(gesture.startPage, 0),
352
- press(gesture.startPage),
353
- release(gesture.startPage)
405
+ move(gesture.startPage, 0, 0),
406
+ press(gesture.startPage, "left", 1, 1, 0),
407
+ release(gesture.startPage, "left", 0, 1, 0)
354
408
  ]);
355
409
  return;
356
410
  }
357
- if (gesture.mode === "drag") sendInput([release(gesture.lastPage)]);
411
+ if (gesture.mode === "drag") sendInput([release(gesture.lastPage, "left", 0, 1, 0)]);
412
+ }
413
+ function endMouse(event) {
414
+ const gesture = mousePress.current;
415
+ if (!gesture || event.pointerId !== gesture.pointerId) return;
416
+ const point = toPagePoint(event) ?? gesture.lastPage;
417
+ mousePress.current = null;
418
+ if (!gesture.pressed) return;
419
+ sendInput([release(point, gesture.button, event.buttons, gesture.clickCount, modifiers(event))]);
358
420
  }
359
421
  const notice = failure ?? (phase === "streaming" ? void 0 : PHASE_TEXT[phase]);
360
422
  const streamedTab = streamed ? tabs.find((tab) => tab.tabId === streamed.tabId) : void 0;
@@ -425,7 +487,7 @@ function BrowserLiveScreen({ sendSignal: sendHostSignal, subscribeSignals, proto
425
487
  onKeyDown: (event) => {
426
488
  event.currentTarget.removeAttribute("data-pointer-focus");
427
489
  if (event.nativeEvent.isComposing) return;
428
- if (event.key === "Enter") event.preventDefault();
490
+ if (event.key === "Enter" || event.key === "Tab") event.preventDefault();
429
491
  sendInput([{
430
492
  kind: "key",
431
493
  type: "keyDown",
@@ -459,6 +521,15 @@ function BrowserLiveScreen({ sendSignal: sendHostSignal, subscribeSignals, proto
459
521
  event.preventDefault();
460
522
  },
461
523
  onBlur: (event) => event.currentTarget.removeAttribute("data-pointer-focus"),
524
+ onMouseDown: (event) => {
525
+ const gesture = mousePress.current;
526
+ if (!gesture || gesture.pressed) return;
527
+ gesture.button = mouseButton(event.button);
528
+ gesture.clickCount = event.detail > 0 ? event.detail : 1;
529
+ gesture.modifiers = modifiers(event);
530
+ gesture.pressed = true;
531
+ sendInput([press(gesture.lastPage, gesture.button, event.buttons, gesture.clickCount, gesture.modifiers)]);
532
+ },
462
533
  onPointerDown: (event) => {
463
534
  event.currentTarget.dataset.pointerFocus = "";
464
535
  if (event.pointerType === "touch") {
@@ -467,9 +538,20 @@ function BrowserLiveScreen({ sendSignal: sendHostSignal, subscribeSignals, proto
467
538
  }
468
539
  const point = toPagePoint(event);
469
540
  if (point) {
541
+ const button = mouseButton(event.button);
542
+ const clickCount = event.detail > 0 ? event.detail : 1;
543
+ const modifierMask = modifiers(event);
544
+ const pressed = event.pointerType !== "mouse";
470
545
  event.currentTarget.setPointerCapture(event.pointerId);
471
- mousePress.current = point;
472
- sendInput([press(point)]);
546
+ mousePress.current = {
547
+ button,
548
+ clickCount,
549
+ lastPage: point,
550
+ modifiers: modifierMask,
551
+ pointerId: event.pointerId,
552
+ pressed
553
+ };
554
+ if (pressed) sendInput([press(point, button, event.buttons, clickCount, modifierMask)]);
473
555
  }
474
556
  },
475
557
  onPointerMove: (event) => {
@@ -479,8 +561,12 @@ function BrowserLiveScreen({ sendSignal: sendHostSignal, subscribeSignals, proto
479
561
  }
480
562
  const point = toPagePoint(event);
481
563
  if (point) {
482
- if (mousePress.current) mousePress.current = point;
483
- sendInput([move(point, event.buttons)]);
564
+ const modifierMask = modifiers(event);
565
+ if (mousePress.current) {
566
+ mousePress.current.lastPage = point;
567
+ mousePress.current.modifiers = modifierMask;
568
+ }
569
+ sendInput([move(point, event.buttons, modifierMask)]);
484
570
  }
485
571
  },
486
572
  onPointerUp: (event) => {
@@ -488,9 +574,7 @@ function BrowserLiveScreen({ sendSignal: sendHostSignal, subscribeSignals, proto
488
574
  endTouch(event, false);
489
575
  return;
490
576
  }
491
- const point = toPagePoint(event) ?? mousePress.current;
492
- mousePress.current = null;
493
- if (point) sendInput([release(point)]);
577
+ endMouse(event);
494
578
  if (event.currentTarget.hasPointerCapture(event.pointerId)) event.currentTarget.releasePointerCapture(event.pointerId);
495
579
  },
496
580
  onPointerCancel: (event) => {
@@ -498,9 +582,14 @@ function BrowserLiveScreen({ sendSignal: sendHostSignal, subscribeSignals, proto
498
582
  endTouch(event, true);
499
583
  return;
500
584
  }
501
- const point = toPagePoint(event) ?? mousePress.current;
502
- mousePress.current = null;
503
- if (point) sendInput([release(point)]);
585
+ endMouse(event);
586
+ },
587
+ onLostPointerCapture: (event) => {
588
+ if (event.pointerType === "touch") {
589
+ endTouch(event, true);
590
+ return;
591
+ }
592
+ endMouse(event);
504
593
  }
505
594
  }),
506
595
  /* @__PURE__ */ jsx(Button, {
@@ -590,36 +679,49 @@ function normalizeOpenUrl(raw) {
590
679
  }
591
680
  return null;
592
681
  }
593
- const press = (p) => ({
682
+ const press = (p, button, buttons, clickCount, modifierMask) => ({
594
683
  kind: "mouse",
595
684
  type: "mousePressed",
596
685
  ...p,
597
- button: "left",
598
- buttons: 1,
599
- clickCount: 1
686
+ button,
687
+ buttons,
688
+ clickCount,
689
+ modifiers: modifierMask
600
690
  });
601
- const release = (p) => ({
691
+ const release = (p, button, buttons, clickCount, modifierMask) => ({
602
692
  kind: "mouse",
603
693
  type: "mouseReleased",
604
694
  ...p,
605
- button: "left",
606
- buttons: 0,
607
- clickCount: 1
695
+ button,
696
+ buttons,
697
+ clickCount,
698
+ modifiers: modifierMask
608
699
  });
609
- const move = (p, buttons) => ({
700
+ const move = (p, buttons, modifierMask) => ({
610
701
  kind: "mouse",
611
702
  type: "mouseMoved",
612
703
  ...p,
613
- buttons
704
+ buttons,
705
+ modifiers: modifierMask
614
706
  });
707
+ function mouseButton(button) {
708
+ return MOUSE_BUTTONS[button] ?? "none";
709
+ }
710
+ const MOUSE_BUTTONS = {
711
+ 0: "left",
712
+ 1: "middle",
713
+ 2: "right",
714
+ 3: "back",
715
+ 4: "forward"
716
+ };
615
717
  /** A client point in the picture's own page coordinates, or null if outside it. */
616
718
  function pointWithin(view, event) {
617
719
  const renderedX = event.clientX - view.renderedLeft;
618
720
  const renderedY = event.clientY - view.renderedTop;
619
721
  if (renderedX < 0 || renderedY < 0 || renderedX > view.renderedWidth || renderedY > view.renderedHeight) return null;
620
722
  return {
621
- x: renderedX / view.zoomX,
622
- y: renderedY / view.zoomY - view.offsetTop
723
+ x: renderedX / view.zoom,
724
+ y: renderedY / view.zoom
623
725
  };
624
726
  }
625
727
  /** CDP's modifier bitmask: alt, ctrl, meta, shift. */
@@ -2,8 +2,8 @@ import { t as cx } from "../../class-names-BiMDVpUo.js";
2
2
  import { B as PlayIcon, R as PauseIcon } from "../../icons-BNEY4gO5.js";
3
3
  import { IconButton } from "../foundations/IconButton.js";
4
4
  import { i as formatClock } from "../../format-COCyV98Z.js";
5
- import { Slider } from "../foundations/Slider.js";
6
5
  import { EmptyState } from "../foundations/EmptyState.js";
6
+ import { Slider } from "../foundations/Slider.js";
7
7
  import * as React from "react";
8
8
  import { jsx, jsxs } from "react/jsx-runtime";
9
9
  import { Replayer } from "@rrweb/replay";
@@ -10,11 +10,11 @@ import { Avatar } from "../foundations/Avatar.js";
10
10
  import { AppIcon } from "../foundations/AppIcon.js";
11
11
  import { n as findCatalogMcpServerCard } from "../../mcp-server-7NR24ASj.js";
12
12
  import { Select } from "../foundations/Select.js";
13
- import { AppTopBar } from "../general-purpose/AppTopBar.js";
14
- import { ResponsiveSidebarShell } from "../general-purpose/ResponsiveSidebarShell.js";
15
13
  import { EmptyState } from "../foundations/EmptyState.js";
16
14
  import { LinkButton } from "../foundations/LinkButton.js";
17
15
  import "../foundations/icons.js";
16
+ import { AppTopBar } from "../general-purpose/AppTopBar.js";
17
+ import { ResponsiveSidebarShell } from "../general-purpose/ResponsiveSidebarShell.js";
18
18
  import * as React from "react";
19
19
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
20
20
  //#region src/components/_internal/chrome-profile-colors.ts
@@ -938,10 +938,14 @@ function DashboardCard({ card, collapsed, color, index, now, onToggleCollapsed,
938
938
  });
939
939
  }
940
940
  function DashboardFilterMenu({ label, onToggle, options, selected }) {
941
- return /* @__PURE__ */ jsxs(Menu.Root, { children: [/* @__PURE__ */ jsxs(Menu.Trigger, {
941
+ return /* @__PURE__ */ jsxs(Menu.Root, { children: [/* @__PURE__ */ jsxs(Button, {
942
+ variant: "outline",
943
+ color: "neutral",
944
+ size: "sm",
942
945
  "aria-label": `${label} filter`,
943
946
  className: "manager-office__filter-trigger",
944
947
  "data-active": selected.size || void 0,
948
+ render: /* @__PURE__ */ jsx(Menu.Trigger, { unstyled: true }),
945
949
  children: [
946
950
  /* @__PURE__ */ jsx("span", { children: label }),
947
951
  selected.size ? /* @__PURE__ */ jsx("strong", { children: selected.size }) : null,
@@ -961,10 +965,12 @@ function DashboardFilterMenu({ label, onToggle, options, selected }) {
961
965
  }) })] });
962
966
  }
963
967
  function AssignWorkMenu({ employees, profileColors, renderLink }) {
964
- return /* @__PURE__ */ jsxs(Menu.Root, { children: [/* @__PURE__ */ jsxs(Menu.Trigger, {
968
+ return /* @__PURE__ */ jsxs(Menu.Root, { children: [/* @__PURE__ */ jsxs(Button, {
969
+ size: "sm",
965
970
  className: "manager-office__assignment-trigger",
966
971
  disabled: !employees.length,
967
- children: [/* @__PURE__ */ jsx("span", { children: "Assign work" }), /* @__PURE__ */ jsx(ChevronDownIcon, {})]
972
+ render: /* @__PURE__ */ jsx(Menu.Trigger, { unstyled: true }),
973
+ children: ["Assign work", /* @__PURE__ */ jsx(ChevronDownIcon, {})]
968
974
  }), /* @__PURE__ */ jsx(Menu.Portal, { children: /* @__PURE__ */ jsx(Menu.Positioner, {
969
975
  align: "end",
970
976
  sideOffset: 6,
@@ -1,2 +1,2 @@
1
- import { a as thinkPendingExecutionApprovalsQueryOptions, i as ThinkChatRoot, n as ThinkChatMessages, o as useThinkChat, r as ThinkChatProvider, s as useThinkPendingExecutionApprovals, t as ThinkChat } from "../../ThinkChat-CV0xWmL4.js";
1
+ import { a as thinkPendingExecutionApprovalsQueryOptions, i as ThinkChatRoot, n as ThinkChatMessages, o as useThinkChat, r as ThinkChatProvider, s as useThinkPendingExecutionApprovals, t as ThinkChat } from "../../ThinkChat-qztQ6Clo.js";
2
2
  export { ThinkChat, ThinkChatMessages, ThinkChatProvider, ThinkChatRoot, thinkPendingExecutionApprovalsQueryOptions, useThinkChat, useThinkPendingExecutionApprovals };
@@ -5,8 +5,8 @@ import { IconButton } from "../foundations/IconButton.js";
5
5
  import { Menu } from "../foundations/Menu.js";
6
6
  import { a as formatErrorMessage } from "../../format-COCyV98Z.js";
7
7
  import { t as NavigationLink } from "../../navigation-link-kqMa81v5.js";
8
- import { AppTopBar } from "../general-purpose/AppTopBar.js";
9
8
  import { EmptyState } from "../foundations/EmptyState.js";
9
+ import { AppTopBar } from "../general-purpose/AppTopBar.js";
10
10
  import { getThinkExecutionRunAccessibleName, getThinkExecutionRunId, getThinkExecutionRunStatus, getThinkExecutionRunStatusTone, isThinkSubmissionRun } from "./ThinkExecutionRun.js";
11
11
  import { ThinkExecutionRunSummary } from "./ThinkExecutionStatus.js";
12
12
  import { ThinkExecutionDetail } from "./ThinkExecutionDetail.js";
@@ -6,7 +6,7 @@ import { n as mergeRefs } from "../../merge-refs-DF_7w2x_.js";
6
6
  import { ResizableSidePanel } from "../general-purpose/ResizableSidePanel.js";
7
7
  import { ResponsiveSidebarShell } from "../general-purpose/ResponsiveSidebarShell.js";
8
8
  import { a as WorkspaceNavigationRestorationBoundary, i as WorkspaceNavigationFocusRestorer, n as WorkspaceNavigationProvider } from "../../WorkspaceLink-DtH66bAY.js";
9
- import { c as resolveThinkApprovalProps, s as useThinkPendingExecutionApprovals, t as ThinkChat } from "../../ThinkChat-CV0xWmL4.js";
9
+ import { c as resolveThinkApprovalProps, s as useThinkPendingExecutionApprovals, t as ThinkChat } from "../../ThinkChat-qztQ6Clo.js";
10
10
  import { McpPluginCatalog } from "./McpPluginCatalog.js";
11
11
  import { ThinkFullAppViewSwitch } from "./ThinkFullAppViewSwitch.js";
12
12
  import { ThinkThreadStatusIndicators } from "./ThinkThreadPicker.js";
@@ -1,6 +1,6 @@
1
1
  import { n as mergeBaseClassName } from "../../class-names-BiMDVpUo.js";
2
- import { AppTopBar } from "../general-purpose/AppTopBar.js";
3
2
  import { ToggleGroup } from "../foundations/ToggleGroup.js";
3
+ import { AppTopBar } from "../general-purpose/AppTopBar.js";
4
4
  import "react";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  //#region src/components/agents-sdk/ThinkFullAppViewSwitch.tsx
@@ -4,9 +4,9 @@ import { buttonVariants } from "../foundations/Button.js";
4
4
  import { Tooltip } from "../foundations/Tooltip.js";
5
5
  import { t as capitalize } from "../../format-COCyV98Z.js";
6
6
  import { t as NavigationLink } from "../../navigation-link-kqMa81v5.js";
7
- import { ToggleGroup } from "../foundations/ToggleGroup.js";
8
7
  import { EmptyState } from "../foundations/EmptyState.js";
9
8
  import { SearchField } from "../foundations/SearchField.js";
9
+ import { ToggleGroup } from "../foundations/ToggleGroup.js";
10
10
  import { getThinkRoutineNextRun } from "./ThinkRoutine.js";
11
11
  import * as React from "react";
12
12
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -6,12 +6,12 @@ import { Form } from "../foundations/Form.js";
6
6
  import { Textarea } from "../foundations/Textarea.js";
7
7
  import { a as formatErrorMessage } from "../../format-COCyV98Z.js";
8
8
  import { Select } from "../foundations/Select.js";
9
- import { AppTopBar } from "../general-purpose/AppTopBar.js";
10
9
  import { Checkbox } from "../foundations/Checkbox.js";
11
- import { Fieldset } from "../foundations/Fieldset.js";
12
10
  import { CheckboxGroup } from "../foundations/CheckboxGroup.js";
13
11
  import { Combobox } from "../foundations/Combobox.js";
12
+ import { Fieldset } from "../foundations/Fieldset.js";
14
13
  import { NumberField } from "../foundations/NumberField.js";
14
+ import { AppTopBar } from "../general-purpose/AppTopBar.js";
15
15
  import * as React from "react";
16
16
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
17
17
  //#region src/components/agents-sdk/ThinkRoutineForm.tsx
@@ -3,10 +3,10 @@ import { $ as TrashIcon, B as PlayIcon, q as SpinnerIcon, z as PencilIcon } from
3
3
  import { buttonVariants } from "../foundations/Button.js";
4
4
  import { a as formatErrorMessage } from "../../format-COCyV98Z.js";
5
5
  import { n as isPlainPrimaryLinkActivation, t as NavigationLink } from "../../navigation-link-kqMa81v5.js";
6
- import { AppTopBar } from "../general-purpose/AppTopBar.js";
7
6
  import { AlertDialog } from "../foundations/AlertDialog.js";
8
- import { ResponsiveSidebarShell } from "../general-purpose/ResponsiveSidebarShell.js";
9
7
  import { EmptyState } from "../foundations/EmptyState.js";
8
+ import { AppTopBar } from "../general-purpose/AppTopBar.js";
9
+ import { ResponsiveSidebarShell } from "../general-purpose/ResponsiveSidebarShell.js";
10
10
  import { ThinkRoutineBrowser } from "./ThinkRoutineBrowser.js";
11
11
  import { ThinkRoutineDetail } from "./ThinkRoutineDetail.js";
12
12
  import * as React from "react";
@@ -9,15 +9,15 @@ import { AppIcon } from "../foundations/AppIcon.js";
9
9
  import { n as findCatalogMcpServerCard, t as McpServerIcon } from "../../mcp-server-7NR24ASj.js";
10
10
  import { DescriptionList } from "../foundations/DescriptionList.js";
11
11
  import { ChatGptSignInScreen } from "../extension/ChatGptSignInScreen.js";
12
+ import { EmptyState } from "../foundations/EmptyState.js";
13
+ import { Switch } from "../foundations/Switch.js";
14
+ import { useTheme } from "../foundations/ThemeProvider.js";
15
+ import "../foundations/icons.js";
12
16
  import { ActionGuide } from "../general-purpose/ActionGuide.js";
13
17
  import { AppTopBar } from "../general-purpose/AppTopBar.js";
14
- import { Switch } from "../foundations/Switch.js";
15
18
  import { t as SetupChecklistAction } from "../../SetupChecklist-DyPZWzK2.js";
16
- import { useTheme } from "../foundations/ThemeProvider.js";
17
19
  import { NaniteMark } from "../nanites/NaniteScene.js";
18
20
  import { SubagentRunLabel } from "./SubagentRunIndicator.js";
19
- import { EmptyState } from "../foundations/EmptyState.js";
20
- import "../foundations/icons.js";
21
21
  import { McpServerPickerAction, McpServerPickerItems } from "./McpServerPicker.js";
22
22
  import { getThinkExecutionRunId } from "./ThinkExecutionRun.js";
23
23
  import { ThinkThreadPicker, summarizeThinkThreads } from "./ThinkThreadPicker.js";
@@ -1,5 +1,5 @@
1
- import { i as FileTreeFolder, r as FileTreeFile, t as FileTree } from "../../FileTree-CAXWXH63.js";
2
1
  import { SearchField } from "../foundations/SearchField.js";
2
+ import { i as FileTreeFolder, r as FileTreeFile, t as FileTree } from "../../FileTree-CAXWXH63.js";
3
3
  import { WorkspaceHeader } from "./WorkspaceHeader.js";
4
4
  import * as React from "react";
5
5
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -2,8 +2,8 @@ import { L as PaperclipIcon } from "../../icons-BNEY4gO5.js";
2
2
  import { Button } from "../foundations/Button.js";
3
3
  import { Card, CardFooter, CardHeader, CardTitle } from "../foundations/Card.js";
4
4
  import { Popover } from "../foundations/Popover.js";
5
- import { AppTopBar } from "../general-purpose/AppTopBar.js";
6
5
  import { EmptyState } from "../foundations/EmptyState.js";
6
+ import { AppTopBar } from "../general-purpose/AppTopBar.js";
7
7
  import "react";
8
8
  import { jsx, jsxs } from "react/jsx-runtime";
9
9
  //#region src/components/agents-sdk/WorkspaceMountManager.tsx
@@ -1042,7 +1042,7 @@ function PromptInputCommandComposer({ commands, mentionCommands, value, onValueC
1042
1042
  ...command.keywords ?? []
1043
1043
  ].filter((term) => Boolean(term)).some((term) => term.toLocaleLowerCase().includes(normalizedQuery));
1044
1044
  });
1045
- const hasTriggeredCatalog = trigger === "/" ? commands.length > 0 : trigger === "@" && mentionCommands !== void 0;
1045
+ const hasTriggeredCatalog = trigger === "/" ? commands.length > 0 && (match?.triggerIndex === 0 || filtered.length > 0) : trigger === "@" && mentionCommands !== void 0;
1046
1046
  const open = Boolean(match && hasTriggeredCatalog) && dismissedValue !== value;
1047
1047
  const groups = Array.from(new Set(filtered.map((command) => command.group ?? ""))).map((label) => ({
1048
1048
  label,
@@ -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,6 +1,6 @@
1
1
  import { Button } from "../foundations/Button.js";
2
- import { getPlanPrice, getPlanYearlySavings } from "./Pricing.js";
3
2
  import { AlertDialog } from "../foundations/AlertDialog.js";
3
+ import { getPlanPrice, getPlanYearlySavings } from "./Pricing.js";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
5
5
  //#region src/components/general-purpose/PricingConfirmationDialog.tsx
6
6
  function getActionLabel(action) {
@@ -1,9 +1,9 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
2
  import { Card } from "../foundations/Card.js";
3
3
  import { Separator } from "../foundations/Separator.js";
4
- import { formatPricingUsage, getUsagePrice } from "./Pricing.js";
5
4
  import { Progress } from "../foundations/Progress.js";
6
5
  import { Slider } from "../foundations/Slider.js";
6
+ import { formatPricingUsage, getUsagePrice } from "./Pricing.js";
7
7
  import * as React from "react";
8
8
  import { jsx, jsxs } from "react/jsx-runtime";
9
9
  //#region src/components/general-purpose/PricingUsageCalculator.tsx
@@ -1,11 +1,11 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
2
  import { r as ArrowLeftIcon } from "../../icons-BNEY4gO5.js";
3
+ import { TransitionSurface } from "../foundations/TransitionSurface.js";
3
4
  import { AppTopBar } from "../general-purpose/AppTopBar.js";
4
5
  import { NaniteMark } from "./NaniteScene.js";
5
6
  import { SubagentRunIndicator, getSubagentRunName } from "../agents-sdk/SubagentRunIndicator.js";
6
7
  import { SubagentRunMilestone, SubagentRunMilestones, SubagentRunProgress } from "../agents-sdk/SubagentRunDetails.js";
7
- import { TransitionSurface } from "../foundations/TransitionSurface.js";
8
- import { t as ThinkChat } from "../../ThinkChat-CV0xWmL4.js";
8
+ import { t as ThinkChat } from "../../ThinkChat-qztQ6Clo.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";
@@ -12,12 +12,6 @@
12
12
  background: var(--sigvelo-color-surface);
13
13
  }
14
14
 
15
- .manager-office--dashboard .app-top-bar__title {
16
- font-size: var(--sigvelo-text-base);
17
- font-weight: var(--sigvelo-font-weight-bold);
18
- line-height: var(--sigvelo-text-base-leading);
19
- }
20
-
21
15
  .manager-office__dashboard {
22
16
  min-inline-size: 0;
23
17
  min-block-size: 0;
@@ -180,24 +174,6 @@
180
174
  background: transparent;
181
175
  }
182
176
 
183
- .manager-office__add-employee {
184
- min-inline-size: var(--sigvelo-control-height-md);
185
- min-block-size: var(--sigvelo-control-height-md);
186
- padding: var(--sigvelo-spacing-1);
187
- border: 0;
188
- border-radius: var(--sigvelo-radius-md);
189
- background: transparent;
190
- }
191
-
192
- .manager-office__add-employee:hover:not([data-disabled]) {
193
- background: var(--sigvelo-color-neutral-bg-subtle);
194
- }
195
-
196
- .manager-office__add-employee > svg {
197
- inline-size: var(--sigvelo-density-compact-control-icon-size);
198
- block-size: var(--sigvelo-density-compact-control-icon-size);
199
- }
200
-
201
177
  .manager-office__filters-main {
202
178
  flex: 1;
203
179
  min-inline-size: 0;
@@ -240,14 +216,8 @@
240
216
  }
241
217
 
242
218
  .manager-office__filter-trigger {
243
- min-block-size: var(--sigvelo-control-height-md);
244
219
  flex: none;
245
- display: inline-flex;
246
- align-items: center;
247
220
  gap: var(--sigvelo-spacing-1);
248
- border-color: var(--sigvelo-color-neutral-border-muted);
249
- background: var(--sigvelo-color-surface);
250
- font-size: var(--sigvelo-text-xs);
251
221
  }
252
222
 
253
223
  .manager-office__filter-trigger[data-active] {
@@ -260,12 +230,6 @@
260
230
  font-size: var(--sigvelo-text-2xs);
261
231
  }
262
232
 
263
- .manager-office__filter-trigger > svg {
264
- inline-size: var(--sigvelo-density-compact-control-icon-size);
265
- block-size: var(--sigvelo-density-compact-control-icon-size);
266
- color: var(--sigvelo-color-text-muted);
267
- }
268
-
269
233
  .manager-office__filter-clear {
270
234
  flex: none;
271
235
  gap: var(--sigvelo-spacing-1);
@@ -296,13 +260,8 @@
296
260
 
297
261
  .manager-office__analytics {
298
262
  min-inline-size: 0;
299
- padding: var(--sigvelo-spacing-4);
300
263
  display: grid;
301
- gap: var(--sigvelo-spacing-3);
302
- border: var(--sigvelo-border-style) var(--sigvelo-border-width)
303
- var(--sigvelo-color-neutral-border-subtle);
304
- border-radius: var(--sigvelo-radius-lg);
305
- background: color-mix(in oklab, var(--sigvelo-color-neutral-bg-subtle), transparent 38%);
264
+ gap: var(--sigvelo-layout-gap);
306
265
  }
307
266
 
308
267
  .manager-office__analytics-header {
@@ -315,9 +274,6 @@
315
274
 
316
275
  .manager-office__analytics-header h2 {
317
276
  margin: 0;
318
- }
319
-
320
- .manager-office__analytics-header h2 {
321
277
  font-size: var(--sigvelo-text-base);
322
278
  line-height: var(--sigvelo-text-base-leading);
323
279
  }
@@ -357,15 +313,11 @@
357
313
 
358
314
  .manager-office__analytics-series {
359
315
  min-inline-size: 0;
360
- padding: var(--sigvelo-spacing-3);
316
+ padding: var(--sigvelo-spacing-3) 0;
361
317
  display: grid;
362
318
  grid-template-columns: minmax(0, 1fr);
363
319
  align-content: start;
364
320
  gap: var(--sigvelo-spacing-2);
365
- border: var(--sigvelo-border-style) var(--sigvelo-border-width)
366
- var(--sigvelo-color-neutral-border-muted);
367
- border-radius: var(--sigvelo-radius-md);
368
- background: var(--sigvelo-color-surface);
369
321
  color: var(--sigvelo-color-viz-series-1);
370
322
  }
371
323
 
@@ -492,34 +444,10 @@
492
444
  }
493
445
 
494
446
  .manager-office__assignment-trigger {
495
- min-block-size: var(--sigvelo-control-height-md);
496
- display: inline-flex;
497
- align-items: center;
498
- justify-content: flex-start;
499
- gap: var(--sigvelo-spacing-2);
500
- border-color: var(--sigvelo-color-primary-bg);
501
- background: var(--sigvelo-color-primary-bg);
502
- color: var(--sigvelo-color-primary-text-on-bg);
503
- font-size: var(--sigvelo-text-xs);
447
+ flex: none;
504
448
  white-space: nowrap;
505
449
  }
506
450
 
507
- .manager-office__assignment-trigger > svg {
508
- inline-size: var(--sigvelo-density-compact-control-icon-size);
509
- block-size: var(--sigvelo-density-compact-control-icon-size);
510
- }
511
-
512
- .manager-office__assignment-trigger > svg:last-child {
513
- }
514
-
515
- .manager-office__assignment-trigger:hover:not([data-disabled]) {
516
- background: var(--sigvelo-color-primary-bg-hover);
517
- }
518
-
519
- .manager-office__assignment-trigger:active:not([data-disabled]) {
520
- background: var(--sigvelo-color-primary-bg-press);
521
- }
522
-
523
451
  .manager-office__assignment-popup {
524
452
  inline-size: min(22rem, calc(100vw - 2 * var(--sigvelo-spacing-4)));
525
453
  max-block-size: 24rem;
@@ -696,7 +624,6 @@
696
624
  border-radius: var(--sigvelo-radius-md);
697
625
  background: var(--sigvelo-color-surface);
698
626
  color: var(--sigvelo-color-text);
699
- box-shadow: var(--sigvelo-elevation-raised);
700
627
  }
701
628
 
702
629
  .manager-office__dashboard-card-header {
@@ -709,7 +636,6 @@
709
636
 
710
637
  .manager-office__dashboard-card[data-collapsed] {
711
638
  gap: 0;
712
- box-shadow: none;
713
639
  }
714
640
 
715
641
  .manager-office__dashboard-card-owner,
@@ -765,10 +691,10 @@
765
691
  }
766
692
 
767
693
  .manager-office__browser-chrome {
768
- block-size: 1.45rem;
694
+ block-size: var(--sigvelo-spacing-6);
769
695
  padding-inline: var(--sigvelo-spacing-2);
770
696
  display: grid;
771
- grid-template-columns: repeat(3, 0.35rem) minmax(0, 1fr);
697
+ grid-template-columns: repeat(3, var(--sigvelo-spacing-1-5)) minmax(0, 1fr);
772
698
  align-items: center;
773
699
  gap: var(--sigvelo-spacing-1);
774
700
  border-block-end: var(--sigvelo-border-style) var(--sigvelo-border-width)
@@ -777,8 +703,8 @@
777
703
  }
778
704
 
779
705
  .manager-office__browser-chrome > span {
780
- inline-size: 0.35rem;
781
- block-size: 0.35rem;
706
+ inline-size: var(--sigvelo-spacing-1-5);
707
+ block-size: var(--sigvelo-spacing-1-5);
782
708
  border-radius: 50%;
783
709
  background: var(--sigvelo-color-neutral-border);
784
710
  }
@@ -789,14 +715,15 @@
789
715
  min-inline-size: 0;
790
716
  overflow: hidden;
791
717
  color: var(--sigvelo-color-text-subtle);
792
- font-size: 0.55em;
718
+ font-size: var(--sigvelo-text-2xs);
719
+ line-height: var(--sigvelo-text-2xs-leading);
793
720
  text-overflow: ellipsis;
794
721
  white-space: nowrap;
795
722
  }
796
723
 
797
724
  .manager-office__browser-page {
798
725
  position: absolute;
799
- inset: 1.45rem 0 0;
726
+ inset: var(--sigvelo-spacing-6) 0 0;
800
727
  padding: var(--sigvelo-spacing-3);
801
728
  display: grid;
802
729
  grid-template-columns: auto minmax(0, 1fr);
@@ -809,8 +736,8 @@
809
736
  }
810
737
 
811
738
  .manager-office__browser-page-mark {
812
- inline-size: 1.35rem;
813
- block-size: 1.35rem;
739
+ inline-size: var(--sigvelo-spacing-5);
740
+ block-size: var(--sigvelo-spacing-5);
814
741
  border-radius: var(--sigvelo-radius-sm);
815
742
  background: var(--sigvelo-color-primary-bg);
816
743
  }
@@ -818,7 +745,7 @@
818
745
  min-inline-size: 0;
819
746
  display: grid;
820
747
  align-content: start;
821
- gap: 2px;
748
+ gap: var(--sigvelo-spacing-0-5);
822
749
  }
823
750
  .manager-office__browser-page-copy strong,
824
751
  .manager-office__browser-page-copy small {
@@ -827,13 +754,13 @@
827
754
  white-space: nowrap;
828
755
  }
829
756
  .manager-office__browser-page-copy strong {
830
- font-size: 0.68em;
831
- line-height: var(--sigvelo-leading-tight);
757
+ font-size: var(--sigvelo-text-2xs);
758
+ line-height: var(--sigvelo-text-2xs-leading);
832
759
  }
833
760
  .manager-office__browser-page-copy small {
834
761
  color: var(--sigvelo-color-text-muted);
835
- font-size: 0.52em;
836
- line-height: var(--sigvelo-leading-tight);
762
+ font-size: var(--sigvelo-text-2xs);
763
+ line-height: var(--sigvelo-text-2xs-leading);
837
764
  }
838
765
  .manager-office__browser-page-lines {
839
766
  grid-column: 1 / -1;
@@ -857,11 +784,11 @@
857
784
  position: absolute;
858
785
  inset-inline-end: 22%;
859
786
  inset-block-end: 22%;
860
- inline-size: 0.55rem;
861
- block-size: 0.75rem;
787
+ inline-size: var(--sigvelo-spacing-2-5);
788
+ block-size: var(--sigvelo-spacing-3);
862
789
  background: var(--sigvelo-color-text);
863
790
  clip-path: polygon(0 0, 100% 70%, 58% 72%, 42% 100%);
864
- animation: manager-office-browser-cursor 2.8s ease-in-out infinite;
791
+ animation: manager-office-browser-cursor 2.8s var(--sigvelo-ease-standard) infinite;
865
792
  }
866
793
  @keyframes manager-office-browser-cursor {
867
794
  0%,
@@ -880,12 +807,13 @@
880
807
  align-items: center;
881
808
  gap: var(--sigvelo-spacing-1);
882
809
  color: var(--sigvelo-color-text-muted);
883
- font-size: 0.58em;
810
+ font-size: var(--sigvelo-text-2xs);
884
811
  font-weight: var(--sigvelo-font-weight-semibold);
812
+ line-height: var(--sigvelo-text-2xs-leading);
885
813
  }
886
814
  .manager-office__browser-state > svg {
887
- inline-size: 0.65rem;
888
- block-size: 0.65rem;
815
+ inline-size: var(--sigvelo-control-icon-size-xs);
816
+ block-size: var(--sigvelo-control-icon-size-xs);
889
817
  }
890
818
  .manager-office__browser-preview[data-lane="working"] .manager-office__browser-state {
891
819
  color: var(--sigvelo-color-primary-text);
@@ -954,9 +882,6 @@
954
882
  .manager-office__filters-main {
955
883
  flex: none;
956
884
  }
957
- .manager-office__analytics {
958
- padding: var(--sigvelo-spacing-3);
959
- }
960
885
  .manager-office__analytics-header {
961
886
  align-items: stretch;
962
887
  flex-direction: column;
@@ -993,10 +918,6 @@
993
918
  @media (width <= 38rem) {
994
919
  .manager-office__assignment-trigger {
995
920
  inline-size: auto;
996
- min-block-size: var(--sigvelo-density-compact-control-height);
997
- padding-inline: var(--sigvelo-spacing-2);
998
- gap: var(--sigvelo-spacing-1);
999
- font-size: var(--sigvelo-text-xs);
1000
921
  }
1001
922
  }
1002
923
 
@@ -1078,7 +999,7 @@
1078
999
  }
1079
1000
 
1080
1001
  .manager-office__employee-nav {
1081
- --manager-office-roster-scrollbar-size: 4px;
1002
+ --manager-office-roster-scrollbar-size: var(--sigvelo-spacing-1);
1082
1003
  min-inline-size: 0;
1083
1004
  margin: 0;
1084
1005
  padding: var(--sigvelo-spacing-1) var(--sigvelo-spacing-2);
@@ -1253,8 +1174,8 @@
1253
1174
  position: absolute;
1254
1175
  inset-inline-start: 50%;
1255
1176
  inset-block-end: -1px;
1256
- inline-size: 1.125rem;
1257
- block-size: 2px;
1177
+ inline-size: var(--sigvelo-spacing-4);
1178
+ block-size: var(--sigvelo-spacing-0-5);
1258
1179
  border-radius: var(--sigvelo-radius-full);
1259
1180
  background: var(--sigvelo-color-text);
1260
1181
  content: "";
@@ -1334,13 +1255,13 @@
1334
1255
  position: absolute;
1335
1256
  inset-inline-end: -1px;
1336
1257
  inset-block-end: -1px;
1337
- inline-size: 15px;
1338
- block-size: 15px;
1258
+ inline-size: var(--sigvelo-spacing-4);
1259
+ block-size: var(--sigvelo-spacing-4);
1339
1260
  display: grid;
1340
1261
  place-items: center;
1341
1262
  border-radius: var(--sigvelo-radius-xs);
1342
1263
  background: var(--sigvelo-color-surface);
1343
- box-shadow: 0 0 0 1.5px var(--sigvelo-color-surface);
1264
+ box-shadow: 0 0 0 var(--sigvelo-border-width) var(--sigvelo-color-surface);
1344
1265
  }
1345
1266
 
1346
1267
  .manager-office__identity {
@@ -1634,25 +1555,24 @@
1634
1555
  }
1635
1556
 
1636
1557
  .manager-office__nav-status > svg {
1637
- inline-size: 11px;
1638
- block-size: 11px;
1639
- stroke-width: 2.35;
1558
+ inline-size: var(--sigvelo-control-icon-size-xs);
1559
+ block-size: var(--sigvelo-control-icon-size-xs);
1640
1560
  }
1641
1561
 
1642
1562
  .manager-office__nav-status:is([data-status="needs-you"], [data-status="issue"]) {
1643
- color: light-dark(#b3261e, #ff8a80);
1563
+ color: var(--sigvelo-color-danger-text);
1644
1564
  }
1645
1565
 
1646
1566
  .manager-office__nav-status[data-status="unavailable"] {
1647
- color: light-dark(#7c2d12, #fb923c);
1567
+ color: var(--sigvelo-color-warning-text);
1648
1568
  }
1649
1569
 
1650
1570
  .manager-office__nav-status[data-status="idle"] {
1651
- color: light-dark(#087f5b, #4fd1a1);
1571
+ color: var(--sigvelo-color-text-muted);
1652
1572
  }
1653
1573
 
1654
1574
  .manager-office__nav-status[data-status="offline"] {
1655
- color: light-dark(#667085, #a7afbe);
1575
+ color: var(--sigvelo-color-text-muted);
1656
1576
  }
1657
1577
 
1658
1578
  .manager-office__thread-status[data-status="error"] {
@@ -1660,7 +1580,7 @@
1660
1580
  }
1661
1581
 
1662
1582
  .manager-office__nav-status:is([data-status="working"], [data-status="connecting"]) {
1663
- color: light-dark(#0b57d0, #69a7ff);
1583
+ color: var(--sigvelo-color-primary-text);
1664
1584
  }
1665
1585
 
1666
1586
  .manager-office__thread-status[data-status="running"] {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mcp-b/react-components",
3
- "version": "0.46.1",
3
+ "version": "0.46.3",
4
4
  "description": "MCP-B React components built on Base UI and shared design tokens, including Cloudflare Think chat primitives.",
5
5
  "homepage": "https://design-system.sigvelo.com",
6
6
  "bugs": {
@@ -53,7 +53,7 @@
53
53
  "streamdown": "^2.5.0",
54
54
  "unist-util-visit": "^5.1.0",
55
55
  "yet-another-react-lightbox": "^3.32.2",
56
- "@mcp-b/design-tokens": "0.46.1"
56
+ "@mcp-b/design-tokens": "0.46.3"
57
57
  },
58
58
  "devDependencies": {
59
59
  "@ai-sdk/react": "^3.0.249",
@@ -1,6 +1,6 @@
1
1
  import { composerDraftToPrompt, parseComposerLinks } from "./utils/composer-link.js";
2
- import { AgentToolRunsProvider, useSourceScopedAgentToolEvents } from "./components/agents-sdk/AgentToolRunsContext.js";
3
2
  import { TransitionSurface } from "./components/foundations/TransitionSurface.js";
3
+ import { AgentToolRunsProvider, useSourceScopedAgentToolEvents } from "./components/agents-sdk/AgentToolRunsContext.js";
4
4
  import { AgentChat, compactingNotice } from "./components/agents-sdk/AgentChat.js";
5
5
  import { ThinkChatContext, ThinkChatLiveContext, useOptionalThinkChatContext, useThinkChatContext } from "./components/agents-sdk/ThinkChatContext.js";
6
6
  import { ThinkChatActivity, createThinkChatActivityRenderer, renderThinkChatActivityPart } from "./components/agents-sdk/ThinkChatActivity.js";