@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.
- package/dist/components/agents-sdk/AgentChat.js +1 -1
- package/dist/components/agents-sdk/BrowserLiveScreen.js +141 -39
- package/dist/components/agents-sdk/BrowserReplay.js +1 -1
- package/dist/components/agents-sdk/ManagerOffice.js +11 -5
- package/dist/components/agents-sdk/ThinkChat.js +1 -1
- package/dist/components/agents-sdk/ThinkExecutionWorkbench.js +1 -1
- package/dist/components/agents-sdk/ThinkFullApp.js +1 -1
- package/dist/components/agents-sdk/ThinkFullAppViewSwitch.js +1 -1
- package/dist/components/agents-sdk/ThinkRoutineBrowser.js +1 -1
- package/dist/components/agents-sdk/ThinkRoutineForm.js +2 -2
- package/dist/components/agents-sdk/ThinkRoutineLibrary.js +2 -2
- package/dist/components/agents-sdk/ThinkSidepanel.js +4 -4
- package/dist/components/agents-sdk/WorkspaceBrowser.js +1 -1
- package/dist/components/agents-sdk/WorkspaceMountManager.js +1 -1
- package/dist/components/ai-sdk/PromptInput.js +1 -1
- package/dist/components/foundations/ToggleGroup.d.ts +1 -1
- package/dist/components/foundations/ToggleGroup.js +1 -1
- package/dist/components/general-purpose/PricingConfirmationDialog.js +1 -1
- package/dist/components/general-purpose/PricingUsageCalculator.js +1 -1
- package/dist/components/nanites/AgentToolDetail.js +2 -2
- package/dist/styles/manager-office.css +37 -117
- package/package.json +2 -2
- package/dist/{ThinkChat-CV0xWmL4.js → ThinkChat-qztQ6Clo.js} +1 -1
|
@@ -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)
|
|
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
|
-
|
|
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.
|
|
326
|
-
const deltaY = (gesture.lastClient.y - client.y) / gesture.view.
|
|
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 =
|
|
472
|
-
|
|
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
|
-
|
|
483
|
-
|
|
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
|
-
|
|
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
|
-
|
|
502
|
-
|
|
503
|
-
|
|
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
|
|
598
|
-
buttons
|
|
599
|
-
clickCount
|
|
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
|
|
606
|
-
buttons
|
|
607
|
-
clickCount
|
|
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.
|
|
622
|
-
y: renderedY / view.
|
|
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(
|
|
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(
|
|
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
|
-
|
|
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-
|
|
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-
|
|
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 {
|
|
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-
|
|
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
|
-
|
|
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:
|
|
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,
|
|
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:
|
|
781
|
-
block-size:
|
|
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:
|
|
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:
|
|
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:
|
|
813
|
-
block-size:
|
|
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:
|
|
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:
|
|
831
|
-
line-height: var(--sigvelo-leading
|
|
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:
|
|
836
|
-
line-height: var(--sigvelo-leading
|
|
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:
|
|
861
|
-
block-size:
|
|
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-
|
|
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:
|
|
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:
|
|
888
|
-
block-size:
|
|
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:
|
|
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:
|
|
1257
|
-
block-size:
|
|
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:
|
|
1338
|
-
block-size:
|
|
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
|
|
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:
|
|
1638
|
-
block-size:
|
|
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:
|
|
1563
|
+
color: var(--sigvelo-color-danger-text);
|
|
1644
1564
|
}
|
|
1645
1565
|
|
|
1646
1566
|
.manager-office__nav-status[data-status="unavailable"] {
|
|
1647
|
-
color:
|
|
1567
|
+
color: var(--sigvelo-color-warning-text);
|
|
1648
1568
|
}
|
|
1649
1569
|
|
|
1650
1570
|
.manager-office__nav-status[data-status="idle"] {
|
|
1651
|
-
color:
|
|
1571
|
+
color: var(--sigvelo-color-text-muted);
|
|
1652
1572
|
}
|
|
1653
1573
|
|
|
1654
1574
|
.manager-office__nav-status[data-status="offline"] {
|
|
1655
|
-
color:
|
|
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:
|
|
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.
|
|
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.
|
|
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";
|