@mcp-b/react-components 0.41.0 → 0.42.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{ThinkChatActivity-DyGHj01E.d.ts → ThinkChatActivity-CsDql-ER.d.ts} +3 -0
- package/dist/{WorkspaceFileView-D0yFwoDr.js → WorkspaceFileView-DwdXiKku.js} +15 -20
- package/dist/components/agents-sdk/AgentActivity.js +3 -2
- package/dist/components/agents-sdk/AgentChat.js +1 -0
- package/dist/components/agents-sdk/BrowserRunPanel.js +2 -1
- package/dist/components/agents-sdk/ManagerOffice.d.ts +39 -27
- package/dist/components/agents-sdk/ManagerOffice.js +80 -44
- package/dist/components/agents-sdk/McpPluginCatalog.js +4 -2
- package/dist/components/agents-sdk/ModelSelector.js +1 -1
- package/dist/components/agents-sdk/SubagentRunSelector.js +1 -1
- package/dist/components/agents-sdk/ThinkChat.d.ts +1 -1
- package/dist/components/agents-sdk/ThinkChat.js +1 -1
- package/dist/components/agents-sdk/ThinkChatActivity.d.ts +1 -1
- package/dist/components/agents-sdk/ThinkChatActivity.js +19 -5
- package/dist/components/agents-sdk/ThinkChatToolPanels.js +6 -2
- package/dist/components/agents-sdk/ThinkExecutionDetail.js +3 -1
- package/dist/components/agents-sdk/ThinkExecutionWorkbench.js +1 -0
- package/dist/components/agents-sdk/ThinkFullApp.d.ts +40 -88
- package/dist/components/agents-sdk/ThinkFullApp.js +75 -124
- package/dist/components/agents-sdk/ThinkFullAppViewSwitch.d.ts +1 -1
- package/dist/components/agents-sdk/ThinkFullAppViewSwitch.js +1 -1
- package/dist/components/agents-sdk/ThinkRoutineDetail.js +1 -1
- package/dist/components/agents-sdk/ThinkRoutineLibrary.d.ts +7 -6
- package/dist/components/agents-sdk/ThinkRoutineLibrary.js +57 -65
- package/dist/components/agents-sdk/ThinkThreadPicker.js +2 -1
- package/dist/components/agents-sdk/WorkspaceExplorer.js +2 -1
- package/dist/components/agents-sdk/WorkspaceFileView.js +1 -1
- package/dist/components/ai-sdk/MessageScroller.js +2 -1
- package/dist/components/ai-sdk/MessageScrollerVirtual.js +1 -0
- package/dist/components/ai-sdk/PromptInput.js +20 -14
- package/dist/components/extension/ChatGptSignInScreen.js +1 -0
- package/dist/components/foundations/ToggleGroup.d.ts +79 -1
- package/dist/components/foundations/ToggleGroup.js +1 -1
- package/dist/components/foundations/Toolbar.d.ts +151 -1
- package/dist/components/general-purpose/AppFrame.js +1 -0
- package/dist/components/general-purpose/AppTopBar.d.ts +96 -1
- package/dist/components/general-purpose/PricingBillingToggle.js +1 -1
- package/dist/components/general-purpose/PricingUsageCalculator.js +1 -1
- package/dist/components/general-purpose/ResizableSidePanel.d.ts +8 -0
- package/dist/components/general-purpose/ResizableSidePanel.js +3 -2
- package/dist/components/general-purpose/ResponsiveSidebarShell.d.ts +59 -49
- package/dist/components/general-purpose/ResponsiveSidebarShell.js +74 -74
- package/dist/components/general-purpose/WebPreview.d.ts +3 -0
- package/dist/components/general-purpose/WebPreview.js +2 -2
- package/dist/components/nanites/AgentToolDetail.js +4 -3
- package/dist/styles/accordion.css +1 -0
- package/dist/styles/action-guide.css +8 -7
- package/dist/styles/activity-header.css +13 -39
- package/dist/styles/activity.css +40 -55
- package/dist/styles/agent-attention.css +14 -14
- package/dist/styles/agent-chat.css +62 -45
- package/dist/styles/agent-connection.css +10 -4
- package/dist/styles/agent-tool-detail.css +4 -4
- package/dist/styles/alert-dialog.css +4 -4
- package/dist/styles/app-frame.css +1 -3
- package/dist/styles/app-top-bar.css +5 -9
- package/dist/styles/approval.css +1 -0
- package/dist/styles/artifact.css +6 -6
- package/dist/styles/attachment-preview.css +5 -4
- package/dist/styles/browser-replay.css +6 -6
- package/dist/styles/browser-run-panel.css +1 -0
- package/dist/styles/button.css +15 -6
- package/dist/styles/card.css +5 -5
- package/dist/styles/chatgpt-sign-in-screen.css +1 -1
- package/dist/styles/code-block.css +14 -13
- package/dist/styles/codex-model-selector.css +2 -0
- package/dist/styles/collapsible.css +1 -0
- package/dist/styles/commit.css +6 -6
- package/dist/styles/context.css +9 -9
- package/dist/styles/conversation-tab-picker.css +1 -1
- package/dist/styles/conversation.css +6 -8
- package/dist/styles/dialog.css +4 -4
- package/dist/styles/empty-state.css +3 -3
- package/dist/styles/environment-variables.css +9 -9
- package/dist/styles/field.css +2 -1
- package/dist/styles/fieldset.css +2 -2
- package/dist/styles/index.css +3 -3
- package/dist/styles/manager-office.css +23 -29
- package/dist/styles/mcp-plugin-catalog.css +11 -10
- package/dist/styles/mcp-server-picker.css +3 -3
- package/dist/styles/message-scroller.css +9 -11
- package/dist/styles/message.css +43 -20
- package/dist/styles/navigation-menu.css +1 -0
- package/dist/styles/plan.css +13 -12
- package/dist/styles/pricing-page.css +26 -23
- package/dist/styles/prompt-input.css +18 -5
- package/dist/styles/queue.css +1 -0
- package/dist/styles/reasoning.css +1 -9
- package/dist/styles/recipes.css +28 -1
- package/dist/styles/responsive-sidebar-shell.css +44 -16
- package/dist/styles/separator.css +5 -5
- package/dist/styles/sources.css +4 -4
- package/dist/styles/stepper.css +1 -0
- package/dist/styles/streamdown.css +31 -21
- package/dist/styles/tabs.css +1 -0
- package/dist/styles/task.css +5 -17
- package/dist/styles/terminal.css +10 -10
- package/dist/styles/test-results.css +6 -6
- package/dist/styles/think-execution-status.css +2 -2
- package/dist/styles/think-execution-workbench.css +12 -15
- package/dist/styles/think-full-app.css +26 -64
- package/dist/styles/think-routine-library.css +26 -55
- package/dist/styles/think-thread-picker.css +9 -9
- package/dist/styles/utilities.css +33 -0
- package/dist/styles/web-preview.css +20 -19
- package/dist/styles/workspace-explorer.css +18 -21
- package/dist/styles/workspace-mount-manager.css +2 -2
- package/dist/utils/favicon.d.ts +6 -1
- package/dist/utils/favicon.js +18 -1
- package/package.json +2 -2
- package/dist/AppTopBar-ZdgmB_Lu.d.ts +0 -97
- package/dist/ToggleGroup-BrQZOQn_.d.ts +0 -80
- package/dist/Toolbar-CBOseBQr.d.ts +0 -152
- package/dist/{ThinkChat-BES_3Mb-.js → ThinkChat-DkA4Wr71.js} +1 -1
|
@@ -22,6 +22,39 @@
|
|
|
22
22
|
list-style: none;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
+
/* 1D compositions hosts assemble themselves. Components that already own
|
|
26
|
+
anatomy use the matching data-recipe; these are for app markup. */
|
|
27
|
+
.sigvelo-stack {
|
|
28
|
+
display: flex;
|
|
29
|
+
flex-direction: column;
|
|
30
|
+
gap: var(--sigvelo-layout-stack);
|
|
31
|
+
min-inline-size: 0;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.sigvelo-cluster {
|
|
35
|
+
display: flex;
|
|
36
|
+
flex-wrap: wrap;
|
|
37
|
+
align-items: center;
|
|
38
|
+
gap: var(--sigvelo-layout-cluster);
|
|
39
|
+
min-inline-size: 0;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.sigvelo-fill {
|
|
43
|
+
min-inline-size: 0;
|
|
44
|
+
min-block-size: 0;
|
|
45
|
+
block-size: 100%;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.sigvelo-page {
|
|
49
|
+
box-sizing: border-box;
|
|
50
|
+
min-inline-size: 0;
|
|
51
|
+
inline-size: 100%;
|
|
52
|
+
max-inline-size: var(--sigvelo-layout-content);
|
|
53
|
+
margin-inline: auto;
|
|
54
|
+
padding-block: var(--sigvelo-layout-stack);
|
|
55
|
+
padding-inline: var(--sigvelo-layout-gutter);
|
|
56
|
+
}
|
|
57
|
+
|
|
25
58
|
.sigvelo-truncate {
|
|
26
59
|
overflow: hidden;
|
|
27
60
|
text-overflow: ellipsis;
|
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
position: relative;
|
|
6
6
|
display: flex;
|
|
7
7
|
align-items: center;
|
|
8
|
-
min-block-size:
|
|
9
|
-
gap: var(--sigvelo-
|
|
8
|
+
min-block-size: var(--sigvelo-layout-chrome);
|
|
9
|
+
gap: var(--sigvelo-layout-cluster);
|
|
10
10
|
padding-block: var(--sigvelo-spacing-1);
|
|
11
|
-
padding-inline: var(--sigvelo-
|
|
11
|
+
padding-inline: var(--sigvelo-layout-gutter);
|
|
12
12
|
border-block-end: var(--sigvelo-border-style) var(--sigvelo-border-width)
|
|
13
13
|
var(--sigvelo-color-neutral-border-subtle);
|
|
14
14
|
box-shadow: var(--sigvelo-elevation-bar);
|
|
@@ -20,19 +20,20 @@
|
|
|
20
20
|
|
|
21
21
|
.web-preview__url-form {
|
|
22
22
|
flex: 1;
|
|
23
|
-
min-
|
|
23
|
+
min-inline-size: 0;
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
.web-preview__url {
|
|
27
|
-
|
|
27
|
+
inline-size: 100%;
|
|
28
28
|
font-family: var(--sigvelo-font-mono);
|
|
29
29
|
font-size: var(--sigvelo-text-xs);
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
.web-preview__body {
|
|
33
33
|
flex: 1;
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
/* Preview canvas floor. Not --sigvelo-layout-sidebar. */
|
|
35
|
+
min-block-size: 16rem;
|
|
36
|
+
inline-size: 100%;
|
|
36
37
|
border: none;
|
|
37
38
|
}
|
|
38
39
|
|
|
@@ -55,15 +56,15 @@
|
|
|
55
56
|
flex-direction: column;
|
|
56
57
|
border-block-start: var(--sigvelo-border-style) var(--sigvelo-border-width)
|
|
57
58
|
var(--sigvelo-color-neutral-border-subtle);
|
|
58
|
-
max-
|
|
59
|
+
max-block-size: 12rem;
|
|
59
60
|
}
|
|
60
61
|
|
|
61
62
|
.web-preview__console-header {
|
|
62
63
|
display: flex;
|
|
63
64
|
align-items: center;
|
|
64
65
|
justify-content: space-between;
|
|
65
|
-
padding-block: var(--sigvelo-
|
|
66
|
-
padding-inline: var(--sigvelo-
|
|
66
|
+
padding-block: var(--sigvelo-layout-cluster);
|
|
67
|
+
padding-inline: var(--sigvelo-layout-gutter);
|
|
67
68
|
border: 0;
|
|
68
69
|
font-size: var(--sigvelo-text-2xs);
|
|
69
70
|
font-weight: var(--sigvelo-font-weight-bold);
|
|
@@ -93,18 +94,18 @@
|
|
|
93
94
|
|
|
94
95
|
.web-preview__console-scroll {
|
|
95
96
|
flex: 1;
|
|
96
|
-
min-
|
|
97
|
+
min-block-size: 0;
|
|
97
98
|
}
|
|
98
99
|
|
|
99
100
|
.web-preview__console-viewport {
|
|
100
|
-
|
|
101
|
-
|
|
101
|
+
inline-size: 100%;
|
|
102
|
+
block-size: 100%;
|
|
102
103
|
overflow: auto;
|
|
103
104
|
}
|
|
104
105
|
|
|
105
106
|
.web-preview__console-empty {
|
|
106
|
-
padding-block: var(--sigvelo-
|
|
107
|
-
padding-inline: var(--sigvelo-
|
|
107
|
+
padding-block: var(--sigvelo-layout-gutter);
|
|
108
|
+
padding-inline: var(--sigvelo-layout-gutter);
|
|
108
109
|
font-size: var(--sigvelo-text-xs);
|
|
109
110
|
color: var(--sigvelo-color-text-muted);
|
|
110
111
|
text-align: center;
|
|
@@ -112,11 +113,11 @@
|
|
|
112
113
|
|
|
113
114
|
.web-preview__console-item {
|
|
114
115
|
display: grid;
|
|
115
|
-
grid-template-columns: auto
|
|
116
|
-
gap: var(--sigvelo-
|
|
116
|
+
grid-template-columns: auto var(--sigvelo-layout-track-fill) auto;
|
|
117
|
+
gap: var(--sigvelo-layout-cluster);
|
|
117
118
|
align-items: baseline;
|
|
118
|
-
padding-block: var(--sigvelo-
|
|
119
|
-
padding-inline: var(--sigvelo-
|
|
119
|
+
padding-block: var(--sigvelo-layout-cluster);
|
|
120
|
+
padding-inline: var(--sigvelo-layout-gutter);
|
|
120
121
|
font-family: var(--sigvelo-font-mono);
|
|
121
122
|
font-size: var(--sigvelo-text-xs);
|
|
122
123
|
border-block-end: var(--sigvelo-border-style) var(--sigvelo-border-width)
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
flex: 0 0 auto;
|
|
75
75
|
min-block-size: var(--sigvelo-density-compact-control-height);
|
|
76
76
|
padding-block: var(--sigvelo-spacing-0-5);
|
|
77
|
-
padding-inline: var(--sigvelo-
|
|
77
|
+
padding-inline: var(--sigvelo-layout-gutter);
|
|
78
78
|
border-block-end: var(--sigvelo-border-style) var(--sigvelo-border-width)
|
|
79
79
|
var(--sigvelo-color-neutral-border-subtle);
|
|
80
80
|
}
|
|
@@ -175,9 +175,9 @@
|
|
|
175
175
|
flex: 1;
|
|
176
176
|
align-items: center;
|
|
177
177
|
justify-content: center;
|
|
178
|
-
padding-block: var(--sigvelo-
|
|
179
|
-
padding-inline: var(--sigvelo-
|
|
180
|
-
font-size: var(--sigvelo-text-
|
|
178
|
+
padding-block: var(--sigvelo-layout-stack);
|
|
179
|
+
padding-inline: var(--sigvelo-layout-gutter);
|
|
180
|
+
font-size: var(--sigvelo-text-prose);
|
|
181
181
|
color: var(--sigvelo-color-text-muted);
|
|
182
182
|
text-align: center;
|
|
183
183
|
}
|
|
@@ -201,8 +201,8 @@
|
|
|
201
201
|
margin-inline: auto;
|
|
202
202
|
padding-block: var(--sigvelo-spacing-8) var(--sigvelo-spacing-12);
|
|
203
203
|
padding-inline: var(--sigvelo-spacing-6);
|
|
204
|
-
font-size: var(--sigvelo-text-
|
|
205
|
-
line-height: var(--sigvelo-leading
|
|
204
|
+
font-size: var(--sigvelo-text-prose);
|
|
205
|
+
line-height: var(--sigvelo-text-prose-leading);
|
|
206
206
|
}
|
|
207
207
|
|
|
208
208
|
.workspace-explorer__markdown-content > :first-child {
|
|
@@ -248,21 +248,15 @@
|
|
|
248
248
|
|
|
249
249
|
.workspace-explorer__markdown-content [data-streamdown="heading-1"] {
|
|
250
250
|
margin-block: var(--sigvelo-spacing-8) var(--sigvelo-spacing-3);
|
|
251
|
-
font-size: var(--sigvelo-text-fluid-2xl);
|
|
252
|
-
font-weight: var(--sigvelo-font-weight-bold);
|
|
253
|
-
line-height: var(--sigvelo-leading-tight);
|
|
254
251
|
}
|
|
255
252
|
|
|
256
253
|
.workspace-explorer__markdown-content [data-streamdown="heading-2"] {
|
|
257
254
|
margin-block: var(--sigvelo-spacing-8) var(--sigvelo-spacing-2);
|
|
258
|
-
font-size: var(--sigvelo-text-fluid-lg);
|
|
259
|
-
font-weight: var(--sigvelo-font-weight-bold);
|
|
260
255
|
}
|
|
261
256
|
|
|
262
257
|
.workspace-explorer__markdown-content
|
|
263
258
|
:is([data-streamdown="heading-3"], [data-streamdown="heading-4"]) {
|
|
264
259
|
margin-block: var(--sigvelo-spacing-6) var(--sigvelo-spacing-2);
|
|
265
|
-
font-size: var(--sigvelo-text-lg);
|
|
266
260
|
}
|
|
267
261
|
|
|
268
262
|
.workspace-explorer__skill {
|
|
@@ -275,7 +269,7 @@
|
|
|
275
269
|
.workspace-explorer__skill-kicker {
|
|
276
270
|
margin-block-end: var(--sigvelo-spacing-2);
|
|
277
271
|
color: var(--sigvelo-color-text-muted);
|
|
278
|
-
font-size: var(--sigvelo-text-
|
|
272
|
+
font-size: var(--sigvelo-text-meta);
|
|
279
273
|
font-weight: var(--sigvelo-font-weight-semibold);
|
|
280
274
|
letter-spacing: var(--sigvelo-tracking-wider);
|
|
281
275
|
text-transform: uppercase;
|
|
@@ -295,10 +289,10 @@
|
|
|
295
289
|
|
|
296
290
|
.workspace-explorer__skill-metadata {
|
|
297
291
|
display: grid;
|
|
298
|
-
grid-template-columns: max-content
|
|
292
|
+
grid-template-columns: max-content var(--sigvelo-layout-track-fill);
|
|
299
293
|
gap: var(--sigvelo-spacing-1) var(--sigvelo-spacing-3);
|
|
300
294
|
margin-block: var(--sigvelo-spacing-4) 0;
|
|
301
|
-
font-size: var(--sigvelo-text-
|
|
295
|
+
font-size: var(--sigvelo-text-prose);
|
|
302
296
|
}
|
|
303
297
|
|
|
304
298
|
.workspace-explorer__skill-metadata dt {
|
|
@@ -319,7 +313,7 @@
|
|
|
319
313
|
gap: var(--sigvelo-spacing-1-5);
|
|
320
314
|
margin-block-start: var(--sigvelo-spacing-4);
|
|
321
315
|
color: var(--sigvelo-color-success-text);
|
|
322
|
-
font-size: var(--sigvelo-text-
|
|
316
|
+
font-size: var(--sigvelo-text-prose);
|
|
323
317
|
font-weight: var(--sigvelo-font-weight-semibold);
|
|
324
318
|
}
|
|
325
319
|
|
|
@@ -331,7 +325,7 @@
|
|
|
331
325
|
margin-block: var(--sigvelo-spacing-2) 0;
|
|
332
326
|
padding-inline-start: var(--sigvelo-spacing-6);
|
|
333
327
|
color: var(--sigvelo-color-danger-text);
|
|
334
|
-
font-size: var(--sigvelo-text-
|
|
328
|
+
font-size: var(--sigvelo-text-prose);
|
|
335
329
|
}
|
|
336
330
|
|
|
337
331
|
.workspace-explorer__media-scroll {
|
|
@@ -370,6 +364,7 @@
|
|
|
370
364
|
display: flex;
|
|
371
365
|
inline-size: 100%;
|
|
372
366
|
block-size: 100%;
|
|
367
|
+
/* Image well floor. Not --sigvelo-layout-sidebar. */
|
|
373
368
|
min-block-size: 16rem;
|
|
374
369
|
align-items: center;
|
|
375
370
|
justify-content: center;
|
|
@@ -442,7 +437,7 @@
|
|
|
442
437
|
flex-wrap: wrap;
|
|
443
438
|
gap: var(--sigvelo-spacing-2) var(--sigvelo-spacing-4);
|
|
444
439
|
margin: 0;
|
|
445
|
-
font-size: var(--sigvelo-text-
|
|
440
|
+
font-size: var(--sigvelo-text-meta);
|
|
446
441
|
}
|
|
447
442
|
|
|
448
443
|
.workspace-explorer__media-details > div {
|
|
@@ -464,7 +459,7 @@
|
|
|
464
459
|
|
|
465
460
|
.workspace-explorer__media-transcript {
|
|
466
461
|
flex: 0 0 auto;
|
|
467
|
-
font-size: var(--sigvelo-text-
|
|
462
|
+
font-size: var(--sigvelo-text-prose);
|
|
468
463
|
}
|
|
469
464
|
|
|
470
465
|
.workspace-explorer__media-fallback,
|
|
@@ -472,7 +467,7 @@
|
|
|
472
467
|
max-inline-size: 42rem;
|
|
473
468
|
margin: 0;
|
|
474
469
|
color: var(--sigvelo-color-text-muted);
|
|
475
|
-
font-size: var(--sigvelo-text-
|
|
470
|
+
font-size: var(--sigvelo-text-prose);
|
|
476
471
|
text-align: center;
|
|
477
472
|
}
|
|
478
473
|
|
|
@@ -526,6 +521,7 @@
|
|
|
526
521
|
}
|
|
527
522
|
}
|
|
528
523
|
|
|
524
|
+
/* Local wrap. Not --sigvelo-layout-break-compact. */
|
|
529
525
|
@container (inline-size < 30rem) {
|
|
530
526
|
.workspace-explorer__filter {
|
|
531
527
|
margin-inline: var(--sigvelo-spacing-1-5);
|
|
@@ -545,9 +541,10 @@
|
|
|
545
541
|
}
|
|
546
542
|
}
|
|
547
543
|
|
|
544
|
+
/* Local wrap. Not --sigvelo-layout-break-compact. */
|
|
548
545
|
@container (inline-size < 24rem) {
|
|
549
546
|
.workspace-explorer__skill-metadata {
|
|
550
|
-
grid-template-columns:
|
|
547
|
+
grid-template-columns: var(--sigvelo-layout-track-fill);
|
|
551
548
|
gap: 0;
|
|
552
549
|
}
|
|
553
550
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
.workspace-mount-manager__content {
|
|
2
2
|
display: grid;
|
|
3
|
-
gap: var(--sigvelo-
|
|
3
|
+
gap: var(--sigvelo-layout-gutter);
|
|
4
4
|
}
|
|
5
5
|
|
|
6
6
|
.workspace-mount-manager__error,
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
.workspace-mount-manager__list {
|
|
14
|
-
gap: var(--sigvelo-
|
|
14
|
+
gap: var(--sigvelo-layout-cluster);
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
.workspace-mount-manager__error {
|
package/dist/utils/favicon.d.ts
CHANGED
|
@@ -6,5 +6,10 @@
|
|
|
6
6
|
* `<link rel="icon">` should prefer that resolved URL because it may point elsewhere.
|
|
7
7
|
*/
|
|
8
8
|
declare function inferFaviconUrl(url: string): string | undefined;
|
|
9
|
+
/**
|
|
10
|
+
* Browsers block public pages from fetching loopback URLs (private network
|
|
11
|
+
* access). Skip those favicons when the document is not itself on loopback.
|
|
12
|
+
*/
|
|
13
|
+
declare function canRequestFavicon(src: string, documentOrigin?: string): boolean;
|
|
9
14
|
//#endregion
|
|
10
|
-
export { inferFaviconUrl };
|
|
15
|
+
export { canRequestFavicon, inferFaviconUrl };
|
package/dist/utils/favicon.js
CHANGED
|
@@ -14,5 +14,22 @@ function inferFaviconUrl(url) {
|
|
|
14
14
|
return;
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
|
+
function isLoopbackHost(hostname) {
|
|
18
|
+
return hostname === "localhost" || hostname === "127.0.0.1" || hostname === "[::1]";
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Browsers block public pages from fetching loopback URLs (private network
|
|
22
|
+
* access). Skip those favicons when the document is not itself on loopback.
|
|
23
|
+
*/
|
|
24
|
+
function canRequestFavicon(src, documentOrigin = globalThis.location?.origin) {
|
|
25
|
+
try {
|
|
26
|
+
const favicon = new URL(src);
|
|
27
|
+
if (!documentOrigin) return true;
|
|
28
|
+
const page = new URL(documentOrigin);
|
|
29
|
+
return !(isLoopbackHost(favicon.hostname) && !isLoopbackHost(page.hostname));
|
|
30
|
+
} catch {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
17
34
|
//#endregion
|
|
18
|
-
export { inferFaviconUrl };
|
|
35
|
+
export { canRequestFavicon, inferFaviconUrl };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mcp-b/react-components",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.42.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": {
|
|
@@ -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.
|
|
56
|
+
"@mcp-b/design-tokens": "0.42.0"
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
59
59
|
"@ai-sdk/react": "^3.0.249",
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import { a as ToolbarLinkProps, n as ToolbarButtonProps, r as ToolbarGroupProps, t as Toolbar } from "./Toolbar-CBOseBQr.js";
|
|
2
|
-
import * as React from "react";
|
|
3
|
-
import { useRender } from "@base-ui/react/use-render";
|
|
4
|
-
|
|
5
|
-
//#region src/components/general-purpose/AppTopBar.d.ts
|
|
6
|
-
interface AppTopBarRootProps extends React.ComponentPropsWithoutRef<typeof Toolbar.Root> {
|
|
7
|
-
/** Accessible name describing the controls in this application bar. */
|
|
8
|
-
"aria-label": string;
|
|
9
|
-
/**
|
|
10
|
-
* Where the title sits. An application bar centres it between the control
|
|
11
|
-
* groups; a panel header labels its leading edge instead.
|
|
12
|
-
*/
|
|
13
|
-
titleAlign?: "center" | "start";
|
|
14
|
-
}
|
|
15
|
-
interface AppTopBarGroupProps extends ToolbarGroupProps {}
|
|
16
|
-
interface AppTopBarTitleProps extends useRender.ComponentProps<"div"> {}
|
|
17
|
-
interface AppTopBarButtonProps extends Omit<ToolbarButtonProps, "aria-label"> {
|
|
18
|
-
ref?: React.Ref<HTMLButtonElement>;
|
|
19
|
-
/** Accessible name and default tooltip text for the icon-only control. */
|
|
20
|
-
label: string;
|
|
21
|
-
/** Tooltip text when it should differ from the accessible name. */
|
|
22
|
-
tooltip?: React.ReactNode;
|
|
23
|
-
}
|
|
24
|
-
interface AppTopBarLinkProps extends Omit<ToolbarLinkProps, "aria-label"> {
|
|
25
|
-
ref?: React.Ref<HTMLAnchorElement>;
|
|
26
|
-
/** Accessible name and default tooltip text for the icon-only link. */
|
|
27
|
-
label: string;
|
|
28
|
-
/** Tooltip text when it should differ from the accessible name. */
|
|
29
|
-
tooltip?: React.ReactNode;
|
|
30
|
-
}
|
|
31
|
-
interface AppTopBarControlProps extends ToolbarButtonProps {
|
|
32
|
-
ref?: React.Ref<HTMLButtonElement>;
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Stable application-level toolbar with composable leading, title, and trailing
|
|
36
|
-
* slots. Descendant buttons share Base UI's roving focus and tooltip provider.
|
|
37
|
-
*/
|
|
38
|
-
declare function AppTopBarRoot({
|
|
39
|
-
children,
|
|
40
|
-
className,
|
|
41
|
-
titleAlign,
|
|
42
|
-
...props
|
|
43
|
-
}: AppTopBarRootProps): React.JSX.Element;
|
|
44
|
-
declare function AppTopBarLeading({
|
|
45
|
-
className,
|
|
46
|
-
...props
|
|
47
|
-
}: AppTopBarGroupProps): React.JSX.Element;
|
|
48
|
-
declare function AppTopBarTitle({
|
|
49
|
-
className,
|
|
50
|
-
render,
|
|
51
|
-
ref,
|
|
52
|
-
...props
|
|
53
|
-
}: AppTopBarTitleProps): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
|
|
54
|
-
declare function AppTopBarTrailing({
|
|
55
|
-
className,
|
|
56
|
-
...props
|
|
57
|
-
}: AppTopBarGroupProps): React.JSX.Element;
|
|
58
|
-
declare function AppTopBarControl({
|
|
59
|
-
className,
|
|
60
|
-
...props
|
|
61
|
-
}: AppTopBarControlProps): React.JSX.Element;
|
|
62
|
-
declare function AppTopBarButton({
|
|
63
|
-
children,
|
|
64
|
-
className,
|
|
65
|
-
disabled,
|
|
66
|
-
label,
|
|
67
|
-
render,
|
|
68
|
-
tooltip,
|
|
69
|
-
...props
|
|
70
|
-
}: AppTopBarButtonProps): React.JSX.Element;
|
|
71
|
-
declare function AppTopBarLink({
|
|
72
|
-
children,
|
|
73
|
-
className,
|
|
74
|
-
label,
|
|
75
|
-
render,
|
|
76
|
-
tooltip,
|
|
77
|
-
...props
|
|
78
|
-
}: AppTopBarLinkProps): React.JSX.Element;
|
|
79
|
-
/**
|
|
80
|
-
* Composable application top bar with stable leading, title, and trailing
|
|
81
|
-
* slots. Icon controls use shared Toolbar roving focus and coordinated Tooltip
|
|
82
|
-
* behavior; their fixed slots do not resize when state icons change. Render an
|
|
83
|
-
* existing behavior-rich button through `Control` to retain those toolbar
|
|
84
|
-
* semantics without rebuilding the control. Use `Link` for navigation so an
|
|
85
|
-
* `href` or router-provided link keeps native link semantics.
|
|
86
|
-
*/
|
|
87
|
-
declare const AppTopBar: {
|
|
88
|
-
Root: typeof AppTopBarRoot;
|
|
89
|
-
Leading: typeof AppTopBarLeading;
|
|
90
|
-
Title: typeof AppTopBarTitle;
|
|
91
|
-
Trailing: typeof AppTopBarTrailing;
|
|
92
|
-
Control: typeof AppTopBarControl;
|
|
93
|
-
Button: typeof AppTopBarButton;
|
|
94
|
-
Link: typeof AppTopBarLink;
|
|
95
|
-
};
|
|
96
|
-
//#endregion
|
|
97
|
-
export { AppTopBarLinkProps as a, AppTopBarGroupProps as i, AppTopBarButtonProps as n, AppTopBarRootProps as o, AppTopBarControlProps as r, AppTopBarTitleProps as s, AppTopBar as t };
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import { r as ToggleVariantsOptions } from "./Toggle-DLrIf5YH.js";
|
|
2
|
-
import * as React from "react";
|
|
3
|
-
import { ToggleGroup } from "@base-ui/react/toggle-group";
|
|
4
|
-
import { Toggle } from "@base-ui/react/toggle";
|
|
5
|
-
|
|
6
|
-
//#region src/components/foundations/ToggleGroup.d.ts
|
|
7
|
-
type ToggleGroupSize = ToggleVariantsOptions["size"];
|
|
8
|
-
type ToggleGroupProps<Value extends string = string> = ToggleGroup.Props<Value> & {
|
|
9
|
-
variant?: ToggleVariantsOptions["variant"];
|
|
10
|
-
/**
|
|
11
|
-
* The size of the toggle group.
|
|
12
|
-
* @default 'md'
|
|
13
|
-
*/
|
|
14
|
-
size?: ToggleGroupSize;
|
|
15
|
-
spacing?: number;
|
|
16
|
-
/**
|
|
17
|
-
* Draws one shared thumb that slides between segments rather than lighting up
|
|
18
|
-
* each item's own background. This is the permission-mode / view-switch
|
|
19
|
-
* control; it is a presentation of this group, not a separate component.
|
|
20
|
-
*
|
|
21
|
-
* Only meaningful for single selection — a sliding thumb cannot be in two
|
|
22
|
-
* places, so a `multiple` group ignores it.
|
|
23
|
-
*/
|
|
24
|
-
segmented?: boolean;
|
|
25
|
-
};
|
|
26
|
-
interface ToggleGroupItemProps extends React.ComponentPropsWithRef<typeof Toggle>, Omit<ToggleVariantsOptions, "className"> {}
|
|
27
|
-
/**
|
|
28
|
-
* A toggle group component for selecting one or multiple options.
|
|
29
|
-
*
|
|
30
|
-
* @example
|
|
31
|
-
* ```tsx
|
|
32
|
-
* // Single selection (defaultValue is an array)
|
|
33
|
-
* <ToggleGroup.Root defaultValue={["center"]}>
|
|
34
|
-
* <ToggleGroup.Item value="left">Left</ToggleGroup.Item>
|
|
35
|
-
* <ToggleGroup.Item value="center">Center</ToggleGroup.Item>
|
|
36
|
-
* <ToggleGroup.Item value="right">Right</ToggleGroup.Item>
|
|
37
|
-
* </ToggleGroup.Root>
|
|
38
|
-
* ```
|
|
39
|
-
*
|
|
40
|
-
* @example
|
|
41
|
-
* ```tsx
|
|
42
|
-
* // Multiple selection
|
|
43
|
-
* <ToggleGroup.Root multiple defaultValue={["bold", "italic"]}>
|
|
44
|
-
* <ToggleGroup.Item value="bold">Bold</ToggleGroup.Item>
|
|
45
|
-
* <ToggleGroup.Item value="italic">Italic</ToggleGroup.Item>
|
|
46
|
-
* <ToggleGroup.Item value="underline">Underline</ToggleGroup.Item>
|
|
47
|
-
* </ToggleGroup.Root>
|
|
48
|
-
* ```
|
|
49
|
-
*
|
|
50
|
-
* @see {@link https://base-ui.com/react/components/toggle-group | Base UI Toggle Group}
|
|
51
|
-
*/
|
|
52
|
-
declare function ToggleGroupRoot<Value extends string>({
|
|
53
|
-
size,
|
|
54
|
-
spacing,
|
|
55
|
-
segmented,
|
|
56
|
-
variant,
|
|
57
|
-
className,
|
|
58
|
-
children,
|
|
59
|
-
style,
|
|
60
|
-
ref,
|
|
61
|
-
...props
|
|
62
|
-
}: ToggleGroupProps<Value>): React.JSX.Element;
|
|
63
|
-
/**
|
|
64
|
-
* A single toggle item within a ToggleGroup.
|
|
65
|
-
*/
|
|
66
|
-
declare function ToggleGroupItem({
|
|
67
|
-
className,
|
|
68
|
-
variant,
|
|
69
|
-
size,
|
|
70
|
-
ref,
|
|
71
|
-
...props
|
|
72
|
-
}: ToggleGroupItemProps & {
|
|
73
|
-
ref?: React.Ref<HTMLButtonElement>;
|
|
74
|
-
}): React.JSX.Element;
|
|
75
|
-
declare const ToggleGroup$1: {
|
|
76
|
-
Root: typeof ToggleGroupRoot;
|
|
77
|
-
Item: typeof ToggleGroupItem;
|
|
78
|
-
};
|
|
79
|
-
//#endregion
|
|
80
|
-
export { ToggleGroupItemProps as n, ToggleGroupProps as r, ToggleGroup$1 as t };
|
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import { Toolbar } from "@base-ui/react/toolbar";
|
|
3
|
-
|
|
4
|
-
//#region src/components/foundations/Toolbar.d.ts
|
|
5
|
-
/**
|
|
6
|
-
* Props for the Toolbar.Root component.
|
|
7
|
-
*/
|
|
8
|
-
interface ToolbarRootProps extends React.ComponentPropsWithoutRef<typeof Toolbar.Root> {}
|
|
9
|
-
/**
|
|
10
|
-
* Props for the Toolbar.Button component.
|
|
11
|
-
*/
|
|
12
|
-
interface ToolbarButtonProps extends React.ComponentPropsWithoutRef<typeof Toolbar.Button> {
|
|
13
|
-
/** Skip the default Button chrome when a composed control owns its visuals. */
|
|
14
|
-
unstyled?: boolean;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Props for the Toolbar.Link component.
|
|
18
|
-
*/
|
|
19
|
-
interface ToolbarLinkProps extends React.ComponentPropsWithoutRef<typeof Toolbar.Link> {
|
|
20
|
-
/** Skip the default Button chrome when a composed link owns its visuals. */
|
|
21
|
-
unstyled?: boolean;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Props for the Toolbar.Group component.
|
|
25
|
-
*/
|
|
26
|
-
interface ToolbarGroupProps extends React.ComponentPropsWithoutRef<typeof Toolbar.Group> {}
|
|
27
|
-
/**
|
|
28
|
-
* Props for the Toolbar.Separator component.
|
|
29
|
-
*/
|
|
30
|
-
interface ToolbarSeparatorProps extends React.ComponentPropsWithoutRef<typeof Toolbar.Separator> {}
|
|
31
|
-
/**
|
|
32
|
-
* Props for the Toolbar.Input component.
|
|
33
|
-
*/
|
|
34
|
-
interface ToolbarInputProps extends React.ComponentPropsWithoutRef<typeof Toolbar.Input> {}
|
|
35
|
-
/**
|
|
36
|
-
* Container for grouping toolbar buttons and controls.
|
|
37
|
-
*
|
|
38
|
-
* @example
|
|
39
|
-
* ```tsx
|
|
40
|
-
* <Toolbar.Root>
|
|
41
|
-
* <Toolbar.Button>Bold</Toolbar.Button>
|
|
42
|
-
* <Toolbar.Button>Italic</Toolbar.Button>
|
|
43
|
-
* <Toolbar.Separator />
|
|
44
|
-
* <Toolbar.Button>Align Left</Toolbar.Button>
|
|
45
|
-
* </Toolbar.Root>
|
|
46
|
-
* ```
|
|
47
|
-
*
|
|
48
|
-
* @see {@link https://base-ui.com/react/components/toolbar | Base UI Toolbar}
|
|
49
|
-
*/
|
|
50
|
-
declare function ToolbarRoot({
|
|
51
|
-
className,
|
|
52
|
-
ref,
|
|
53
|
-
...props
|
|
54
|
-
}: ToolbarRootProps & {
|
|
55
|
-
ref?: React.Ref<HTMLDivElement>;
|
|
56
|
-
}): React.JSX.Element;
|
|
57
|
-
/**
|
|
58
|
-
* A clickable button within the toolbar.
|
|
59
|
-
*/
|
|
60
|
-
declare function ToolbarButton({
|
|
61
|
-
unstyled,
|
|
62
|
-
className,
|
|
63
|
-
ref,
|
|
64
|
-
...props
|
|
65
|
-
}: ToolbarButtonProps & {
|
|
66
|
-
ref?: React.Ref<HTMLButtonElement>;
|
|
67
|
-
}): React.JSX.Element;
|
|
68
|
-
/**
|
|
69
|
-
* A link element within the toolbar.
|
|
70
|
-
*/
|
|
71
|
-
declare function ToolbarLink({
|
|
72
|
-
unstyled,
|
|
73
|
-
className,
|
|
74
|
-
ref,
|
|
75
|
-
...props
|
|
76
|
-
}: ToolbarLinkProps & {
|
|
77
|
-
ref?: React.Ref<HTMLAnchorElement>;
|
|
78
|
-
}): React.JSX.Element;
|
|
79
|
-
/**
|
|
80
|
-
* Groups toolbar items together.
|
|
81
|
-
*/
|
|
82
|
-
declare function ToolbarGroup({
|
|
83
|
-
className,
|
|
84
|
-
ref,
|
|
85
|
-
...props
|
|
86
|
-
}: ToolbarGroupProps & {
|
|
87
|
-
ref?: React.Ref<HTMLDivElement>;
|
|
88
|
-
}): React.JSX.Element;
|
|
89
|
-
/**
|
|
90
|
-
* Visual separator between toolbar sections.
|
|
91
|
-
*/
|
|
92
|
-
declare function ToolbarSeparator({
|
|
93
|
-
className,
|
|
94
|
-
ref,
|
|
95
|
-
...props
|
|
96
|
-
}: ToolbarSeparatorProps & {
|
|
97
|
-
ref?: React.Ref<HTMLDivElement>;
|
|
98
|
-
}): React.JSX.Element;
|
|
99
|
-
/**
|
|
100
|
-
* Input element within the toolbar.
|
|
101
|
-
*/
|
|
102
|
-
declare function ToolbarInput({
|
|
103
|
-
className,
|
|
104
|
-
ref,
|
|
105
|
-
...props
|
|
106
|
-
}: ToolbarInputProps & {
|
|
107
|
-
ref?: React.Ref<HTMLInputElement>;
|
|
108
|
-
}): React.JSX.Element;
|
|
109
|
-
/**
|
|
110
|
-
* A container for grouping buttons and controls.
|
|
111
|
-
* Provides keyboard navigation between items.
|
|
112
|
-
*
|
|
113
|
-
* @example
|
|
114
|
-
* ```tsx
|
|
115
|
-
* // Text formatting toolbar
|
|
116
|
-
* <Toolbar.Root>
|
|
117
|
-
* <Toolbar.Group>
|
|
118
|
-
* <Toolbar.Button>Bold</Toolbar.Button>
|
|
119
|
-
* <Toolbar.Button>Italic</Toolbar.Button>
|
|
120
|
-
* <Toolbar.Button>Underline</Toolbar.Button>
|
|
121
|
-
* </Toolbar.Group>
|
|
122
|
-
* <Toolbar.Separator />
|
|
123
|
-
* <Toolbar.Group>
|
|
124
|
-
* <Toolbar.Button>Left</Toolbar.Button>
|
|
125
|
-
* <Toolbar.Button>Center</Toolbar.Button>
|
|
126
|
-
* <Toolbar.Button>Right</Toolbar.Button>
|
|
127
|
-
* </Toolbar.Group>
|
|
128
|
-
* </Toolbar.Root>
|
|
129
|
-
* ```
|
|
130
|
-
*
|
|
131
|
-
* @example
|
|
132
|
-
* ```tsx
|
|
133
|
-
* // Vertical toolbar
|
|
134
|
-
* <Toolbar.Root orientation="vertical">
|
|
135
|
-
* <Toolbar.Button>Item 1</Toolbar.Button>
|
|
136
|
-
* <Toolbar.Button>Item 2</Toolbar.Button>
|
|
137
|
-
* <Toolbar.Button>Item 3</Toolbar.Button>
|
|
138
|
-
* </Toolbar.Root>
|
|
139
|
-
* ```
|
|
140
|
-
*
|
|
141
|
-
* @see {@link https://base-ui.com/react/components/toolbar | Base UI Toolbar}
|
|
142
|
-
*/
|
|
143
|
-
declare const Toolbar$1: {
|
|
144
|
-
Root: typeof ToolbarRoot;
|
|
145
|
-
Button: typeof ToolbarButton;
|
|
146
|
-
Link: typeof ToolbarLink;
|
|
147
|
-
Group: typeof ToolbarGroup;
|
|
148
|
-
Separator: typeof ToolbarSeparator;
|
|
149
|
-
Input: typeof ToolbarInput;
|
|
150
|
-
};
|
|
151
|
-
//#endregion
|
|
152
|
-
export { ToolbarLinkProps as a, ToolbarInputProps as i, ToolbarButtonProps as n, ToolbarRootProps as o, ToolbarGroupProps as r, ToolbarSeparatorProps as s, Toolbar$1 as t };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { TransitionSurface } from "./components/foundations/TransitionSurface.js";
|
|
2
|
-
import { AgentChat, compactingNotice } from "./components/agents-sdk/AgentChat.js";
|
|
3
2
|
import { AgentToolRunsProvider, useOptionalAgentToolRuns, useSourceScopedAgentToolEvents } from "./components/agents-sdk/AgentToolRunsContext.js";
|
|
3
|
+
import { AgentChat, compactingNotice } from "./components/agents-sdk/AgentChat.js";
|
|
4
4
|
import { SubagentRunList } from "./components/agents-sdk/SubagentRunList.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";
|