@mcp-b/react-components 0.20.4 → 0.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{AgentActivity-D2SHSGFX.d.ts → AgentActivity-D3OvrC02.d.ts} +14 -1
- package/dist/{AgentChat-C-ZyXbJz.d.ts → AgentChat-Dvkn8lce.d.ts} +23 -0
- package/dist/AgentChatStartScreen-CvXJBr4y.d.ts +57 -0
- package/dist/{ModelSelector-pecWyOFI.js → ModelSelector-CEd8M9eK.js} +14 -7
- package/dist/{ThinkChatActivity-CdbL0aoA.d.ts → ThinkChatActivity-FY1VWXgh.d.ts} +8 -7
- package/dist/{ThinkChatActivitySummary-D1xOrNrq.d.ts → ThinkChatActivitySummary-kr5fE0wg.d.ts} +14 -5
- package/dist/{ToggleGroup-DNd6cDJZ.d.ts → ToggleGroup-BW1jrhAF.d.ts} +10 -0
- package/dist/components/Activity.d.ts +33 -17
- package/dist/components/Activity.js +39 -27
- package/dist/components/AgentActivity.d.ts +1 -1
- package/dist/components/AgentActivityPreview.d.ts +1 -1
- package/dist/components/AgentActivityPreview.js +2 -2
- package/dist/components/AgentChat.d.ts +1 -1
- package/dist/components/AgentChat.js +142 -129
- package/dist/components/AgentChatStartScreen.d.ts +2 -0
- package/dist/components/AgentChatStartScreen.js +82 -0
- package/dist/components/Approval.js +2 -4
- package/dist/components/BrowserLiveView.js +5 -7
- package/dist/components/BrowserReplay.js +5 -4
- package/dist/components/BrowserRunPanel.js +1 -1
- package/dist/components/ChatGptSignInScreen.js +1 -1
- package/dist/components/Conversation.d.ts +1 -22
- package/dist/components/Conversation.js +2 -29
- package/dist/components/EmptyState.d.ts +46 -0
- package/dist/components/EmptyState.js +50 -0
- package/dist/components/Kbd.d.ts +32 -0
- package/dist/components/Kbd.js +34 -0
- package/dist/components/MessageScroller.js +1 -0
- package/dist/components/ModelSelector.d.ts +10 -4
- package/dist/components/ModelSelector.js +2 -2
- package/dist/components/PricingBillingToggle.js +1 -0
- package/dist/components/PromptInput.js +3 -2
- package/dist/components/Reasoning.js +1 -1
- package/dist/components/StatusPill.d.ts +43 -0
- package/dist/components/StatusPill.js +35 -0
- package/dist/components/Stepper.js +1 -5
- package/dist/components/TestResults.js +15 -15
- package/dist/components/ThinkChat.d.ts +9 -3
- package/dist/components/ThinkChatActivity.d.ts +2 -2
- package/dist/components/ThinkChatActivity.js +27 -15
- package/dist/components/ThinkChatActivitySummary.d.ts +2 -2
- package/dist/components/ThinkChatActivitySummary.js +69 -66
- package/dist/components/ThinkExecutionDetail.js +4 -4
- package/dist/components/ThinkExecutionRun.js +2 -2
- package/dist/components/ThinkExecutionWorkbench.js +5 -4
- package/dist/components/ThinkFullAppViewSwitch.d.ts +1 -1
- package/dist/components/ThinkRoutine.js +2 -10
- package/dist/components/ThinkRoutineBrowser.js +1 -0
- package/dist/components/ThinkRoutineRuns.js +3 -2
- package/dist/components/ThinkThreadPicker.js +4 -2
- package/dist/components/ToggleGroup.d.ts +1 -1
- package/dist/components/ToggleGroup.js +54 -7
- package/dist/components/ToolInvocation.js +1 -1
- package/dist/styles/accordion.css +2 -1
- package/dist/styles/activity-header.css +45 -25
- package/dist/styles/activity.css +26 -4
- package/dist/styles/agent-activity-preview-overlay.css +51 -12
- package/dist/styles/agent-activity-preview.css +34 -33
- package/dist/styles/agent-attention.css +9 -16
- package/dist/styles/agent-chat.css +199 -0
- package/dist/styles/agent-connection.css +10 -10
- package/dist/styles/alert-dialog.css +5 -2
- package/dist/styles/app-top-bar.css +4 -4
- package/dist/styles/approval.css +1 -7
- package/dist/styles/artifact.css +5 -5
- package/dist/styles/attachment-preview.css +1 -1
- package/dist/styles/badge.css +1 -1
- package/dist/styles/base-ui-motion.css +1 -1
- package/dist/styles/base.css +110 -3
- package/dist/styles/browser-control-overlay.css +16 -6
- package/dist/styles/browser-live-view.css +5 -38
- package/dist/styles/browser-replay.css +4 -8
- package/dist/styles/browser-run-panel.css +5 -19
- package/dist/styles/button.css +4 -2
- package/dist/styles/card.css +4 -4
- package/dist/styles/chain-of-thought.css +1 -2
- package/dist/styles/chatgpt-sign-in-screen.css +9 -7
- package/dist/styles/checkbox-group.css +4 -4
- package/dist/styles/code-block.css +9 -9
- package/dist/styles/commit.css +1 -1
- package/dist/styles/context-menu.css +1 -1
- package/dist/styles/conversation.css +7 -42
- package/dist/styles/description-list.css +2 -2
- package/dist/styles/dialog.css +17 -2
- package/dist/styles/empty-state.css +48 -0
- package/dist/styles/environment-variables.css +8 -8
- package/dist/styles/field.css +2 -2
- package/dist/styles/fieldset.css +1 -1
- package/dist/styles/file-tree.css +1 -1
- package/dist/styles/github-motion-mark.css +1 -1
- package/dist/styles/index.css +3 -0
- package/dist/styles/inline-citation.css +1 -1
- package/dist/styles/kbd.css +40 -0
- package/dist/styles/label.css +1 -1
- package/dist/styles/mcp-server-picker.css +1 -1
- package/dist/styles/media-preview-card.css +5 -3
- package/dist/styles/menu.css +1 -1
- package/dist/styles/message-scroller.css +7 -25
- package/dist/styles/message.css +5 -7
- package/dist/styles/model-selector.css +5 -8
- package/dist/styles/plan.css +1 -1
- package/dist/styles/popover.css +1 -1
- package/dist/styles/preview-card.css +1 -1
- package/dist/styles/pricing-page.css +37 -35
- package/dist/styles/prompt-input.css +19 -41
- package/dist/styles/queue.css +3 -3
- package/dist/styles/recipes.css +92 -9
- package/dist/styles/resizable-side-panel.css +1 -1
- package/dist/styles/responsive-sidebar-shell.css +5 -6
- package/dist/styles/scrollbars.css +32 -3
- package/dist/styles/sources.css +2 -2
- package/dist/styles/status-pill.css +39 -0
- package/dist/styles/stepper.css +2 -2
- package/dist/styles/streamdown.css +39 -35
- package/dist/styles/subagent-run.css +3 -3
- package/dist/styles/switch.css +1 -3
- package/dist/styles/tabs.css +1 -1
- package/dist/styles/task.css +2 -2
- package/dist/styles/terminal.css +6 -6
- package/dist/styles/test-results.css +2 -3
- package/dist/styles/textarea.css +1 -1
- package/dist/styles/theme-mode-control.css +3 -4
- package/dist/styles/think-execution-status.css +4 -23
- package/dist/styles/think-execution-workbench.css +3 -4
- package/dist/styles/think-full-app.css +3 -3
- package/dist/styles/think-routine-library.css +22 -24
- package/dist/styles/think-thread-picker.css +20 -47
- package/dist/styles/toast.css +2 -2
- package/dist/styles/toggle-group.css +76 -3
- package/dist/styles/tooltip.css +1 -2
- package/dist/styles/utilities.css +73 -0
- package/dist/styles/web-preview.css +4 -4
- package/dist/styles/workspace-explorer.css +6 -8
- package/package.json +2 -2
|
@@ -153,7 +153,7 @@
|
|
|
153
153
|
|
|
154
154
|
.think-routine-browser__routine {
|
|
155
155
|
inline-size: 100%;
|
|
156
|
-
min-block-size:
|
|
156
|
+
min-block-size: var(--sigvelo-spacing-14);
|
|
157
157
|
display: grid;
|
|
158
158
|
grid-template-columns: auto minmax(0, 1fr);
|
|
159
159
|
align-items: center;
|
|
@@ -217,7 +217,7 @@
|
|
|
217
217
|
.think-routine-library__detail {
|
|
218
218
|
inline-size: min(100%, 64rem);
|
|
219
219
|
margin-inline: auto;
|
|
220
|
-
padding: clamp(
|
|
220
|
+
padding: clamp(var(--sigvelo-spacing-4), 3vw, var(--sigvelo-spacing-8));
|
|
221
221
|
}
|
|
222
222
|
|
|
223
223
|
.think-routine-library__detail-header,
|
|
@@ -229,7 +229,7 @@
|
|
|
229
229
|
|
|
230
230
|
.think-routine-library__detail-header {
|
|
231
231
|
justify-content: space-between;
|
|
232
|
-
padding-block-end: clamp(
|
|
232
|
+
padding-block-end: clamp(var(--sigvelo-spacing-4), 3vw, var(--sigvelo-spacing-8));
|
|
233
233
|
}
|
|
234
234
|
|
|
235
235
|
.think-routine-library__detail-heading {
|
|
@@ -242,8 +242,8 @@
|
|
|
242
242
|
|
|
243
243
|
.think-routine-library__detail-header h1,
|
|
244
244
|
.think-routine-library__create-header h1 {
|
|
245
|
-
font-size: clamp(
|
|
246
|
-
line-height:
|
|
245
|
+
font-size: clamp(var(--sigvelo-text-lg), 2.5vw, var(--sigvelo-text-2xl));
|
|
246
|
+
line-height: var(--sigvelo-leading-tight);
|
|
247
247
|
}
|
|
248
248
|
|
|
249
249
|
.think-routine-library__detail-heading > p:last-child,
|
|
@@ -257,12 +257,12 @@
|
|
|
257
257
|
.think-routine-library__detail-grid {
|
|
258
258
|
display: grid;
|
|
259
259
|
grid-template-columns: minmax(0, 1.35fr) minmax(15rem, 0.65fr);
|
|
260
|
-
gap: clamp(
|
|
261
|
-
padding-block-end: clamp(
|
|
260
|
+
gap: clamp(var(--sigvelo-spacing-4), 3vw, var(--sigvelo-spacing-8));
|
|
261
|
+
padding-block-end: clamp(var(--sigvelo-spacing-4), 3vw, var(--sigvelo-spacing-8));
|
|
262
262
|
}
|
|
263
263
|
|
|
264
264
|
.think-routine-library__section-heading {
|
|
265
|
-
min-block-size:
|
|
265
|
+
min-block-size: var(--sigvelo-spacing-8);
|
|
266
266
|
display: flex;
|
|
267
267
|
align-items: flex-start;
|
|
268
268
|
justify-content: space-between;
|
|
@@ -280,7 +280,7 @@
|
|
|
280
280
|
margin: 0;
|
|
281
281
|
color: var(--sigvelo-color-text);
|
|
282
282
|
font-size: var(--sigvelo-text-sm);
|
|
283
|
-
line-height:
|
|
283
|
+
line-height: var(--sigvelo-leading-relaxed);
|
|
284
284
|
white-space: pre-wrap;
|
|
285
285
|
}
|
|
286
286
|
|
|
@@ -326,7 +326,7 @@
|
|
|
326
326
|
}
|
|
327
327
|
|
|
328
328
|
.think-routine-library__runs {
|
|
329
|
-
padding-block-end: clamp(
|
|
329
|
+
padding-block-end: clamp(var(--sigvelo-spacing-4), 3vw, var(--sigvelo-spacing-8));
|
|
330
330
|
}
|
|
331
331
|
|
|
332
332
|
.think-routine-library__run-list {
|
|
@@ -348,15 +348,15 @@
|
|
|
348
348
|
}
|
|
349
349
|
|
|
350
350
|
.think-routine-library__run-marker {
|
|
351
|
-
inline-size:
|
|
352
|
-
block-size:
|
|
351
|
+
inline-size: var(--sigvelo-control-icon-size-md);
|
|
352
|
+
block-size: var(--sigvelo-control-icon-size-md);
|
|
353
353
|
flex: 0 0 auto;
|
|
354
354
|
}
|
|
355
355
|
|
|
356
356
|
.think-routine-library__run-marker svg {
|
|
357
357
|
display: block;
|
|
358
|
-
inline-size:
|
|
359
|
-
block-size:
|
|
358
|
+
inline-size: var(--sigvelo-control-icon-size-md);
|
|
359
|
+
block-size: var(--sigvelo-control-icon-size-md);
|
|
360
360
|
}
|
|
361
361
|
|
|
362
362
|
.think-routine-library__run > span {
|
|
@@ -370,18 +370,14 @@
|
|
|
370
370
|
text-overflow: ellipsis;
|
|
371
371
|
}
|
|
372
372
|
|
|
373
|
-
.think-routine-library__empty-runs {
|
|
374
|
-
color: var(--sigvelo-color-text-muted);
|
|
375
|
-
font-size: var(--sigvelo-text-xs);
|
|
376
|
-
}
|
|
377
|
-
|
|
378
373
|
.think-routine-library__run-kind {
|
|
379
374
|
text-transform: capitalize;
|
|
380
375
|
}
|
|
381
376
|
|
|
377
|
+
/* One rule, not two — this selector was declared twice in this file. */
|
|
382
378
|
.think-routine-library__empty-runs {
|
|
383
|
-
|
|
384
|
-
|
|
379
|
+
--sigvelo-recipe-empty-state-padding-block: var(--sigvelo-spacing-4);
|
|
380
|
+
|
|
385
381
|
border-block: var(--sigvelo-border-style) var(--sigvelo-border-width)
|
|
386
382
|
var(--sigvelo-color-neutral-border-subtle);
|
|
387
383
|
}
|
|
@@ -423,7 +419,7 @@
|
|
|
423
419
|
.think-routine-library__create {
|
|
424
420
|
min-block-size: 0;
|
|
425
421
|
overflow: auto;
|
|
426
|
-
padding: clamp(
|
|
422
|
+
padding: clamp(var(--sigvelo-spacing-4), 3vw, var(--sigvelo-spacing-8));
|
|
427
423
|
}
|
|
428
424
|
|
|
429
425
|
.think-routine-library__create-header,
|
|
@@ -433,7 +429,7 @@
|
|
|
433
429
|
}
|
|
434
430
|
|
|
435
431
|
.think-routine-library__create-header {
|
|
436
|
-
margin-block-end: clamp(
|
|
432
|
+
margin-block-end: clamp(var(--sigvelo-spacing-4), 3vw, var(--sigvelo-spacing-8));
|
|
437
433
|
}
|
|
438
434
|
|
|
439
435
|
.think-routine-library__create-header > div {
|
|
@@ -486,8 +482,10 @@
|
|
|
486
482
|
@container responsive-sidebar-shell (inline-size <= 56rem) {
|
|
487
483
|
.think-routine-library__browser {
|
|
488
484
|
inline-size: 100%;
|
|
485
|
+
/* Narrow enough that the browser stops being a column beside the detail
|
|
486
|
+
and starts covering it, so it takes the overlay stack. */
|
|
489
487
|
border-inline-end: 0;
|
|
490
|
-
box-shadow: var(--sigvelo-
|
|
488
|
+
box-shadow: var(--sigvelo-elevation-overlay);
|
|
491
489
|
}
|
|
492
490
|
}
|
|
493
491
|
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
display: inline-flex;
|
|
57
57
|
align-items: center;
|
|
58
58
|
gap: var(--sigvelo-spacing-0-5);
|
|
59
|
-
min-inline-size:
|
|
59
|
+
min-inline-size: var(--sigvelo-spacing-4);
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
.think-thread-status-indicators__item svg {
|
|
@@ -68,10 +68,6 @@
|
|
|
68
68
|
color: var(--sigvelo-color-primary-text);
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
-
.think-thread-status-indicators__item[data-status="running"] svg {
|
|
72
|
-
animation: sigvelo-icon-spin 900ms linear infinite;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
71
|
.think-thread-status-indicators__item[data-status="attention"] {
|
|
76
72
|
color: var(--sigvelo-color-warning-text);
|
|
77
73
|
}
|
|
@@ -96,33 +92,23 @@
|
|
|
96
92
|
|
|
97
93
|
.think-thread-picker__viewport {
|
|
98
94
|
--think-thread-picker-fade-size: min(12%, 2.5rem);
|
|
95
|
+
--sigvelo-scroll-fade-start: min(
|
|
96
|
+
var(--think-thread-picker-fade-size),
|
|
97
|
+
var(--scroll-area-overflow-y-start, 0px)
|
|
98
|
+
);
|
|
99
|
+
--sigvelo-scroll-fade-end: min(
|
|
100
|
+
var(--think-thread-picker-fade-size),
|
|
101
|
+
var(--scroll-area-overflow-y-end, 0px)
|
|
102
|
+
);
|
|
99
103
|
|
|
100
|
-
padding: var(--sigvelo-spacing-1-5)
|
|
104
|
+
padding: var(--sigvelo-spacing-1-5) var(--sigvelo-spacing-2) var(--sigvelo-spacing-3);
|
|
101
105
|
overscroll-behavior: contain;
|
|
102
106
|
scrollbar-gutter: stable;
|
|
103
|
-
-webkit-mask-image: linear-gradient(
|
|
104
|
-
to bottom,
|
|
105
|
-
transparent 0,
|
|
106
|
-
#000 min(var(--think-thread-picker-fade-size), var(--scroll-area-overflow-y-start, 0px)),
|
|
107
|
-
#000
|
|
108
|
-
calc(100% - min(var(--think-thread-picker-fade-size), var(--scroll-area-overflow-y-end, 0px))),
|
|
109
|
-
transparent 100%
|
|
110
|
-
);
|
|
111
|
-
mask-image: linear-gradient(
|
|
112
|
-
to bottom,
|
|
113
|
-
transparent 0,
|
|
114
|
-
#000 min(var(--think-thread-picker-fade-size), var(--scroll-area-overflow-y-start, 0px)),
|
|
115
|
-
#000
|
|
116
|
-
calc(100% - min(var(--think-thread-picker-fade-size), var(--scroll-area-overflow-y-end, 0px))),
|
|
117
|
-
transparent 100%
|
|
118
|
-
);
|
|
119
|
-
-webkit-mask-repeat: no-repeat;
|
|
120
|
-
mask-repeat: no-repeat;
|
|
121
107
|
}
|
|
122
108
|
|
|
123
109
|
.think-thread-picker__list {
|
|
124
110
|
display: grid;
|
|
125
|
-
gap:
|
|
111
|
+
gap: 1px;
|
|
126
112
|
margin: 0;
|
|
127
113
|
padding: 0;
|
|
128
114
|
list-style: none;
|
|
@@ -249,7 +235,7 @@
|
|
|
249
235
|
|
|
250
236
|
.think-thread-picker__delete-error svg {
|
|
251
237
|
flex: 0 0 auto;
|
|
252
|
-
margin-block-start: 0
|
|
238
|
+
margin-block-start: var(--sigvelo-spacing-0-5);
|
|
253
239
|
}
|
|
254
240
|
|
|
255
241
|
.think-thread-picker__thread-time {
|
|
@@ -262,8 +248,8 @@
|
|
|
262
248
|
display: inline-flex;
|
|
263
249
|
align-items: center;
|
|
264
250
|
justify-content: center;
|
|
265
|
-
inline-size:
|
|
266
|
-
block-size:
|
|
251
|
+
inline-size: var(--sigvelo-control-icon-size-md);
|
|
252
|
+
block-size: var(--sigvelo-control-icon-size-md);
|
|
267
253
|
color: var(--sigvelo-color-text-muted);
|
|
268
254
|
}
|
|
269
255
|
|
|
@@ -281,20 +267,10 @@
|
|
|
281
267
|
color: var(--sigvelo-color-primary-text);
|
|
282
268
|
}
|
|
283
269
|
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
.
|
|
288
|
-
.think-thread-picker__thread-status
|
|
289
|
-
svg,
|
|
290
|
-
.think-thread-picker__thread[data-thread-status="submitted"]
|
|
291
|
-
.think-thread-picker__thread-status
|
|
292
|
-
svg,
|
|
293
|
-
.think-thread-picker__thread[data-thread-status="recovering"]
|
|
294
|
-
.think-thread-picker__thread-status
|
|
295
|
-
svg {
|
|
296
|
-
animation: sigvelo-icon-spin 900ms linear infinite;
|
|
297
|
-
}
|
|
270
|
+
/* The six statuses this rule used to list were `isThreadBusy` written out a
|
|
271
|
+
second time, and those are exactly the ones that render SpinnerIcon, which
|
|
272
|
+
spins itself. A DotIcon never needed the rule and would have started turning
|
|
273
|
+
the moment the two lists disagreed. */
|
|
298
274
|
|
|
299
275
|
.think-thread-picker__thread[data-thread-status="error"] .think-thread-picker__thread-status {
|
|
300
276
|
color: var(--sigvelo-color-danger-text);
|
|
@@ -307,10 +283,7 @@
|
|
|
307
283
|
}
|
|
308
284
|
|
|
309
285
|
.think-thread-picker__empty {
|
|
310
|
-
margin:
|
|
311
|
-
color: var(--sigvelo-color-text-muted);
|
|
312
|
-
font-size: var(--sigvelo-text-compact);
|
|
313
|
-
line-height: var(--sigvelo-leading-snug);
|
|
286
|
+
margin: var(--sigvelo-spacing-2);
|
|
314
287
|
}
|
|
315
288
|
|
|
316
289
|
.think-thread-picker__footer {
|
|
@@ -397,7 +370,7 @@
|
|
|
397
370
|
|
|
398
371
|
@media (forced-colors: active) {
|
|
399
372
|
.think-thread-picker {
|
|
400
|
-
border-inline-end:
|
|
373
|
+
border-inline-end: var(--sigvelo-border-style) var(--sigvelo-border-width) canvastext;
|
|
401
374
|
background: canvas;
|
|
402
375
|
color: canvastext;
|
|
403
376
|
box-shadow: none;
|
package/dist/styles/toast.css
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
position: fixed;
|
|
3
3
|
inset-block-end: var(--sigvelo-spacing-4);
|
|
4
4
|
inset-inline-end: var(--sigvelo-spacing-4);
|
|
5
|
-
z-index:
|
|
5
|
+
z-index: var(--sigvelo-z-toast);
|
|
6
6
|
inline-size: min(24rem, calc(100dvi - var(--sigvelo-spacing-8)));
|
|
7
7
|
max-inline-size: 100%;
|
|
8
8
|
pointer-events: none;
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
position: absolute;
|
|
16
16
|
inset-inline: 0;
|
|
17
17
|
inset-block-end: 0;
|
|
18
|
-
z-index: calc(
|
|
18
|
+
z-index: calc(var(--sigvelo-z-toast) - var(--toast-index));
|
|
19
19
|
display: flex;
|
|
20
20
|
flex-direction: column;
|
|
21
21
|
inline-size: 100%;
|
|
@@ -33,9 +33,7 @@
|
|
|
33
33
|
.toggle-group__item[data-pressed] {
|
|
34
34
|
background-color: var(--sigvelo-color-canvas);
|
|
35
35
|
color: var(--sigvelo-color-text);
|
|
36
|
-
box-shadow:
|
|
37
|
-
0 1px 3px 0 color-mix(in oklab, var(--sigvelo-color-text), transparent 90%),
|
|
38
|
-
0 1px 2px -1px color-mix(in oklab, var(--sigvelo-color-text), transparent 90%);
|
|
36
|
+
box-shadow: var(--sigvelo-elevation-raised);
|
|
39
37
|
}
|
|
40
38
|
|
|
41
39
|
@media (forced-colors: active) {
|
|
@@ -44,3 +42,78 @@
|
|
|
44
42
|
outline-offset: -2px;
|
|
45
43
|
}
|
|
46
44
|
}
|
|
45
|
+
|
|
46
|
+
/*
|
|
47
|
+
* Segmented: one thumb that travels, rather than each item lighting up its own
|
|
48
|
+
* background. Same anatomy, same track — a segmented control is how this group
|
|
49
|
+
* presents itself when the choice is a mode rather than a set of switches, so
|
|
50
|
+
* it is a modifier here instead of a second component with a second track.
|
|
51
|
+
*
|
|
52
|
+
* The position comes from JavaScript because nothing in CSS can produce it: see
|
|
53
|
+
* `useSegmentedThumb`.
|
|
54
|
+
*/
|
|
55
|
+
.toggle-group--segmented {
|
|
56
|
+
position: relative;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.toggle-group__thumb {
|
|
60
|
+
position: absolute;
|
|
61
|
+
/* Physical `left`, deliberately: it is fed `offsetLeft`, which is physical.
|
|
62
|
+
`translate` rather than moving `left` itself keeps the travel on the
|
|
63
|
+
compositor. */
|
|
64
|
+
left: 0;
|
|
65
|
+
inset-block: var(--sigvelo-spacing-1);
|
|
66
|
+
inline-size: var(--toggle-group-thumb-size, 0);
|
|
67
|
+
translate: var(--toggle-group-thumb-start, 0) 0;
|
|
68
|
+
border-radius: calc(var(--sigvelo-radius-md) - 2px);
|
|
69
|
+
background-color: var(--sigvelo-color-canvas);
|
|
70
|
+
box-shadow: var(--sigvelo-elevation-raised);
|
|
71
|
+
transition:
|
|
72
|
+
translate var(--sigvelo-motion-duration-interaction) var(--sigvelo-motion-ease-change),
|
|
73
|
+
inline-size var(--sigvelo-motion-duration-interaction) var(--sigvelo-motion-ease-change);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.toggle-group--sm .toggle-group__thumb {
|
|
77
|
+
inset-block: var(--sigvelo-spacing-0-5);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.toggle-group--lg .toggle-group__thumb {
|
|
81
|
+
inset-block: var(--sigvelo-spacing-1-5);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/* Before the first measurement, and whenever the group allows an empty
|
|
85
|
+
selection, there is no segment for the thumb to sit on. */
|
|
86
|
+
.toggle-group--segmented:not(:has(.toggle-group__item[data-pressed])) .toggle-group__thumb {
|
|
87
|
+
opacity: 0;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/* The thumb draws the pressed state now; leaving the item's own copy underneath
|
|
91
|
+
would double the elevation and show a second edge as the thumb slides off. */
|
|
92
|
+
.toggle-group--segmented .toggle-group__item[data-pressed] {
|
|
93
|
+
background-color: transparent;
|
|
94
|
+
box-shadow: none;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.toggle-group--segmented .toggle-group__item {
|
|
98
|
+
position: relative;
|
|
99
|
+
z-index: 1;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
@media (prefers-reduced-motion: reduce) {
|
|
103
|
+
.toggle-group__thumb {
|
|
104
|
+
transition: none;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
:root[data-motion="reduce"] .toggle-group__thumb {
|
|
109
|
+
transition: none;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/* Backgrounds are dropped in forced colors, so the travelling thumb would
|
|
113
|
+
vanish and take the selected state with it. */
|
|
114
|
+
@media (forced-colors: active) {
|
|
115
|
+
.toggle-group__thumb {
|
|
116
|
+
outline: var(--sigvelo-focus-ring-forced);
|
|
117
|
+
outline-offset: -2px;
|
|
118
|
+
}
|
|
119
|
+
}
|
package/dist/styles/tooltip.css
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
.tooltip__popup {
|
|
2
2
|
--sigvelo-recipe-popup-arrow-size: var(--sigvelo-spacing-2);
|
|
3
3
|
--sigvelo-recipe-surface-padding: var(--sigvelo-spacing-1) var(--sigvelo-spacing-2);
|
|
4
|
-
--sigvelo-recipe-surface-shadow: var(--sigvelo-shadow-sm);
|
|
5
4
|
|
|
6
|
-
z-index:
|
|
5
|
+
z-index: var(--sigvelo-z-overlay);
|
|
7
6
|
max-inline-size: min(20rem, var(--available-width));
|
|
8
7
|
overflow-block: auto;
|
|
9
8
|
font-size: var(--sigvelo-text-xs);
|
|
@@ -33,3 +33,76 @@
|
|
|
33
33
|
min-inline-size: 0;
|
|
34
34
|
flex: 1;
|
|
35
35
|
}
|
|
36
|
+
|
|
37
|
+
/*
|
|
38
|
+
* Truncation by fade rather than by ellipsis. An ellipsis is a character the
|
|
39
|
+
* reader has to parse — in a value slot ("gpt-5.1-codex-m…") it reads as part
|
|
40
|
+
* of the value. A mask just stops. Use it where the text is data; keep
|
|
41
|
+
* .sigvelo-truncate where the text is a sentence and the ellipsis is a
|
|
42
|
+
* legitimate signal that words were dropped.
|
|
43
|
+
*/
|
|
44
|
+
.sigvelo-truncate-fade {
|
|
45
|
+
--sigvelo-truncate-fade-distance: 1rem;
|
|
46
|
+
overflow: hidden;
|
|
47
|
+
white-space: nowrap;
|
|
48
|
+
mask-image: linear-gradient(
|
|
49
|
+
to right,
|
|
50
|
+
#000 calc(100% - var(--sigvelo-truncate-fade-distance)),
|
|
51
|
+
transparent 100%
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/* Clamp to N lines. -1 keeps the mechanism while removing the limit, so a
|
|
56
|
+
component can drop the cap from script without swapping classes. */
|
|
57
|
+
.sigvelo-line-clamp {
|
|
58
|
+
--sigvelo-line-clamp: 2;
|
|
59
|
+
display: -webkit-box;
|
|
60
|
+
-webkit-box-orient: vertical;
|
|
61
|
+
-webkit-line-clamp: var(--sigvelo-line-clamp);
|
|
62
|
+
overflow: hidden;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/*
|
|
66
|
+
* Scrollbars that appear on hover or keyboard focus and stay out of the way
|
|
67
|
+
* otherwise. scrollbar-gutter reserves the track either way, so revealing the
|
|
68
|
+
* bar never reflows the content beside it. Coarse pointers have no hover to
|
|
69
|
+
* key off and overlay their scrollbars anyway, so they are left alone.
|
|
70
|
+
*/
|
|
71
|
+
@media (any-pointer: fine) {
|
|
72
|
+
.sigvelo-scrollbar-on-hover {
|
|
73
|
+
scrollbar-gutter: stable;
|
|
74
|
+
scrollbar-color: transparent transparent;
|
|
75
|
+
transition: scrollbar-color var(--sigvelo-motion-duration-interaction)
|
|
76
|
+
var(--sigvelo-motion-ease-change);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.sigvelo-scrollbar-on-hover:hover,
|
|
80
|
+
.sigvelo-scrollbar-on-hover:focus-within {
|
|
81
|
+
scrollbar-color: var(--sigvelo-color-neutral-border) transparent;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/*
|
|
86
|
+
* Comfortable reading measure for long-form agent output. Applied to the prose
|
|
87
|
+
* container, not the panel: the panel still fills the pane, the paragraphs stop
|
|
88
|
+
* at a readable line length inside it.
|
|
89
|
+
*/
|
|
90
|
+
.sigvelo-measure {
|
|
91
|
+
max-inline-size: var(--sigvelo-measure-prose);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/* Code, tables, and diagrams read worse wrapped than wide, so they opt out of
|
|
95
|
+
the prose measure without leaving the same container. */
|
|
96
|
+
.sigvelo-measure-wide {
|
|
97
|
+
max-inline-size: var(--sigvelo-measure-wide-block);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/*
|
|
101
|
+
* Reader-controlled text size for prose. Scales the message body only —
|
|
102
|
+
* toolbars, labels, and controls keep resolving through the rem type ramp,
|
|
103
|
+
* because a reader asking for larger message text is not asking for a taller
|
|
104
|
+
* composer. Descendants that should scale with it must size in em.
|
|
105
|
+
*/
|
|
106
|
+
.sigvelo-reader-text {
|
|
107
|
+
font-size: calc(1em * var(--sigvelo-chat-font-scale));
|
|
108
|
+
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
display: flex;
|
|
3
3
|
align-items: center;
|
|
4
4
|
gap: var(--sigvelo-spacing-1-5);
|
|
5
|
-
padding-block:
|
|
5
|
+
padding-block: var(--sigvelo-spacing-2);
|
|
6
6
|
padding-inline: var(--sigvelo-spacing-2-5);
|
|
7
7
|
background-color: var(--sigvelo-color-neutral-bg-subtle);
|
|
8
8
|
border-block-end: var(--sigvelo-border-style) var(--sigvelo-border-width)
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
display: flex;
|
|
41
41
|
align-items: center;
|
|
42
42
|
justify-content: center;
|
|
43
|
-
padding:
|
|
43
|
+
padding: var(--sigvelo-spacing-8);
|
|
44
44
|
color: var(--sigvelo-color-text-muted);
|
|
45
45
|
font-size: var(--sigvelo-text-compact);
|
|
46
46
|
text-align: center;
|
|
@@ -105,7 +105,7 @@
|
|
|
105
105
|
.web-preview__console-item {
|
|
106
106
|
display: grid;
|
|
107
107
|
grid-template-columns: auto 1fr auto;
|
|
108
|
-
gap:
|
|
108
|
+
gap: var(--sigvelo-spacing-2);
|
|
109
109
|
align-items: baseline;
|
|
110
110
|
padding-block: var(--sigvelo-spacing-1-5);
|
|
111
111
|
padding-inline: var(--sigvelo-spacing-3);
|
|
@@ -140,6 +140,6 @@
|
|
|
140
140
|
|
|
141
141
|
@media (forced-colors: active) {
|
|
142
142
|
.web-preview {
|
|
143
|
-
border:
|
|
143
|
+
border: var(--sigvelo-border-style) var(--sigvelo-border-width) CanvasText;
|
|
144
144
|
}
|
|
145
145
|
}
|
|
@@ -10,11 +10,9 @@
|
|
|
10
10
|
overflow: hidden;
|
|
11
11
|
font-family: inherit;
|
|
12
12
|
color: var(--sigvelo-color-text);
|
|
13
|
-
background-color: var(--sigvelo-color-surface);
|
|
14
|
-
border: var(--sigvelo-border-style) var(--sigvelo-border-width)
|
|
15
|
-
var(--sigvelo-color-neutral-border-subtle);
|
|
13
|
+
background-color: var(--sigvelo-color-surface-raised);
|
|
16
14
|
border-radius: var(--sigvelo-radius-xl);
|
|
17
|
-
box-shadow: var(--sigvelo-
|
|
15
|
+
box-shadow: var(--sigvelo-elevation-raised);
|
|
18
16
|
container-type: inline-size;
|
|
19
17
|
}
|
|
20
18
|
|
|
@@ -132,8 +130,8 @@
|
|
|
132
130
|
z-index: 2;
|
|
133
131
|
inset-block-start: calc(var(--sigvelo-density-compact-control-height) + var(--sigvelo-spacing-2));
|
|
134
132
|
inset-inline-end: var(--sigvelo-spacing-2);
|
|
135
|
-
background-color: var(--sigvelo-color-surface);
|
|
136
|
-
box-shadow: var(--sigvelo-
|
|
133
|
+
background-color: var(--sigvelo-color-surface-raised);
|
|
134
|
+
box-shadow: var(--sigvelo-elevation-floating);
|
|
137
135
|
}
|
|
138
136
|
|
|
139
137
|
.workspace-explorer__filter {
|
|
@@ -408,8 +406,8 @@
|
|
|
408
406
|
}
|
|
409
407
|
|
|
410
408
|
.workspace-explorer__image-trigger:focus-visible {
|
|
411
|
-
outline:
|
|
412
|
-
|
|
409
|
+
outline: none;
|
|
410
|
+
box-shadow: var(--sigvelo-recipe-focus-shadow);
|
|
413
411
|
}
|
|
414
412
|
|
|
415
413
|
.workspace-explorer__image-trigger[aria-disabled="true"] {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mcp-b/react-components",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.21.0",
|
|
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": {
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"streamdown": "^2.5.0",
|
|
58
58
|
"unist-util-visit": "^5.1.0",
|
|
59
59
|
"yet-another-react-lightbox": "^3.32.1",
|
|
60
|
-
"@mcp-b/design-tokens": "0.
|
|
60
|
+
"@mcp-b/design-tokens": "0.21.0"
|
|
61
61
|
},
|
|
62
62
|
"devDependencies": {
|
|
63
63
|
"@ai-sdk/react": "^3.0.222",
|