@mcp-b/react-components 0.20.1 → 0.20.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. package/dist/{CodeBlock-Bb-IPBc_.js → CodeBlock-ygtuzqJd.js} +1 -1
  2. package/dist/{FileTree-CUlXfnmc.js → FileTree-CdgfccsM.js} +5 -5
  3. package/dist/{Message-rZEaaD8Q.js → Message-DzuteocT.js} +4 -3
  4. package/dist/{ModelSelector-4GsCWcZV.js → ModelSelector-pecWyOFI.js} +4 -3
  5. package/dist/{WorkspaceFileView-CEdArlOT.js → WorkspaceFileView-Bxx4wEzJ.js} +5 -11
  6. package/dist/components/Accordion.js +4 -4
  7. package/dist/components/Activity.js +2 -2
  8. package/dist/components/AgentActivity.js +1 -1
  9. package/dist/components/AgentActivityPreview.js +1 -1
  10. package/dist/components/AgentAttention.js +2 -2
  11. package/dist/components/AgentChat.js +4 -4
  12. package/dist/components/AgentConnection.js +2 -2
  13. package/dist/components/AgentMessageParts.js +1 -1
  14. package/dist/components/AgentToolDetail.js +1 -1
  15. package/dist/components/AlertDialog.js +8 -8
  16. package/dist/components/AppTopBar.js +1 -1
  17. package/dist/components/Approval.js +1 -1
  18. package/dist/components/Artifact.js +1 -1
  19. package/dist/components/Autocomplete.js +11 -11
  20. package/dist/components/Avatar.js +6 -6
  21. package/dist/components/BrowserLiveView.js +2 -2
  22. package/dist/components/BrowserReplay.js +4 -7
  23. package/dist/components/BrowserRunPanel.js +2 -2
  24. package/dist/components/Card.js +8 -11
  25. package/dist/components/ChainOfThought.js +2 -2
  26. package/dist/components/ChatGptSignInScreen.js +2 -2
  27. package/dist/components/Checkbox.js +2 -2
  28. package/dist/components/CheckboxGroup.js +7 -7
  29. package/dist/components/Checkpoint.js +1 -1
  30. package/dist/components/CodeBlock.js +1 -1
  31. package/dist/components/CodexModelSelector.js +5 -4
  32. package/dist/components/Collapsible.js +2 -2
  33. package/dist/components/Combobox.js +11 -11
  34. package/dist/components/Commit.js +4 -4
  35. package/dist/components/Context.js +3 -1
  36. package/dist/components/ContextMenu.js +13 -13
  37. package/dist/components/Conversation.js +3 -8
  38. package/dist/components/Dialog.js +6 -6
  39. package/dist/components/EnvironmentVariables.js +3 -3
  40. package/dist/components/Field.js +7 -7
  41. package/dist/components/Fieldset.js +3 -3
  42. package/dist/components/FileTree.js +1 -1
  43. package/dist/components/Form.js +1 -1
  44. package/dist/components/InlineCitation.js +2 -2
  45. package/dist/components/Input.js +1 -1
  46. package/dist/components/Label.js +2 -1
  47. package/dist/components/McpConnectionRequest.js +1 -1
  48. package/dist/components/McpServerPicker.js +3 -3
  49. package/dist/components/MediaPreviewCard.js +5 -4
  50. package/dist/components/Menu.js +17 -17
  51. package/dist/components/Menubar.js +14 -14
  52. package/dist/components/Message.js +1 -1
  53. package/dist/components/MessageScroller.js +2 -1
  54. package/dist/components/Meter.js +5 -5
  55. package/dist/components/ModelSelector.js +1 -1
  56. package/dist/components/NaniteScene.js +2 -1
  57. package/dist/components/NavigationMenu.js +11 -11
  58. package/dist/components/NumberField.js +6 -6
  59. package/dist/components/Plan.js +1 -1
  60. package/dist/components/Popover.js +12 -14
  61. package/dist/components/PreviewCard.js +6 -6
  62. package/dist/components/PricingPage.js +2 -1
  63. package/dist/components/PricingPlanCard.js +1 -1
  64. package/dist/components/Progress.js +4 -4
  65. package/dist/components/PromptInput.js +10 -12
  66. package/dist/components/Queue.js +1 -1
  67. package/dist/components/RadioGroup.js +4 -4
  68. package/dist/components/Reasoning.js +2 -2
  69. package/dist/components/ResizableSidePanel.js +3 -5
  70. package/dist/components/ResponsiveSidebarShell.js +4 -3
  71. package/dist/components/ScrollArea.js +6 -6
  72. package/dist/components/SearchField.js +1 -1
  73. package/dist/components/Select.js +15 -15
  74. package/dist/components/Slider.js +7 -7
  75. package/dist/components/Sources.js +2 -2
  76. package/dist/components/Stepper.js +2 -6
  77. package/dist/components/SubagentRunDetails.js +2 -1
  78. package/dist/components/SubagentRunIndicator.js +1 -1
  79. package/dist/components/SubagentRunSelector.js +1 -1
  80. package/dist/components/Switch.js +3 -3
  81. package/dist/components/Tabs.js +2 -2
  82. package/dist/components/Task.js +2 -2
  83. package/dist/components/Terminal.js +2 -2
  84. package/dist/components/TestResults.js +18 -18
  85. package/dist/components/ThemeModeControl.js +1 -1
  86. package/dist/components/ThinkChatActivity.js +2 -1
  87. package/dist/components/ThinkChatActivitySummary.js +14 -5
  88. package/dist/components/ThinkChatToolPanels.js +1 -1
  89. package/dist/components/ThinkExecutionDetail.js +1 -1
  90. package/dist/components/ThinkExecutionRun.js +2 -2
  91. package/dist/components/ThinkExecutionStatus.js +1 -1
  92. package/dist/components/ThinkExecutionWorkbench.js +2 -2
  93. package/dist/components/ThinkFullApp.js +4 -74
  94. package/dist/components/ThinkPendingApproval.js +1 -3
  95. package/dist/components/ThinkRoutine.d.ts +1 -1
  96. package/dist/components/ThinkRoutine.js +3 -10
  97. package/dist/components/ThinkRoutineBrowser.js +9 -9
  98. package/dist/components/ThinkRoutineDetail.js +1 -1
  99. package/dist/components/ThinkRoutineForm.js +1 -1
  100. package/dist/components/ThinkRoutineLibrary.js +1 -1
  101. package/dist/components/ThinkThreadPicker.js +4 -3
  102. package/dist/components/ThinkThreadShell.js +2 -1
  103. package/dist/components/Toast.js +6 -6
  104. package/dist/components/ToggleGroup.js +2 -2
  105. package/dist/components/Tooltip.js +4 -4
  106. package/dist/components/WebPreview.js +1 -1
  107. package/dist/components/WorkspaceBrowser.js +1 -1
  108. package/dist/components/WorkspaceExplorer.js +2 -2
  109. package/dist/components/WorkspaceFileView.js +1 -1
  110. package/dist/components/WorkspaceHeader.js +1 -1
  111. package/dist/components/icons.js +1 -1
  112. package/dist/{copy-button-BtRwhRks.js → copy-button-vo1paUSi.js} +1 -1
  113. package/dist/format-S6uWyoSb.js +38 -0
  114. package/dist/{icons-DKXiSepE.js → icons-DyOM0EJs.js} +2 -1
  115. package/dist/{merge-refs-KlanQB7A.js → merge-refs-DF_7w2x_.js} +1 -1
  116. package/dist/styles/accordion.css +2 -1
  117. package/dist/styles/activity-header.css +4 -18
  118. package/dist/styles/activity.css +1 -1
  119. package/dist/styles/agent-activity-preview-overlay.css +12 -0
  120. package/dist/styles/agent-activity-preview.css +3 -3
  121. package/dist/styles/agent-attention.css +7 -21
  122. package/dist/styles/agent-connection.css +3 -3
  123. package/dist/styles/app-top-bar.css +2 -5
  124. package/dist/styles/artifact.css +1 -1
  125. package/dist/styles/attachment-preview.css +1 -1
  126. package/dist/styles/badge.css +1 -1
  127. package/dist/styles/base.css +15 -0
  128. package/dist/styles/browser-control-overlay.css +4 -3
  129. package/dist/styles/browser-live-view.css +2 -11
  130. package/dist/styles/browser-replay.css +3 -3
  131. package/dist/styles/browser-run-panel.css +3 -12
  132. package/dist/styles/button.css +1 -1
  133. package/dist/styles/chain-of-thought.css +3 -15
  134. package/dist/styles/chatgpt-sign-in-screen.css +2 -2
  135. package/dist/styles/checkbox-group.css +1 -7
  136. package/dist/styles/code-block.css +5 -5
  137. package/dist/styles/codex-model-selector.css +0 -6
  138. package/dist/styles/commit.css +2 -8
  139. package/dist/styles/environment-variables.css +4 -7
  140. package/dist/styles/fieldset.css +1 -1
  141. package/dist/styles/file-tree.css +2 -2
  142. package/dist/styles/github-motion-mark.css +1 -1
  143. package/dist/styles/inline-citation.css +1 -4
  144. package/dist/styles/label.css +1 -1
  145. package/dist/styles/mcp-server-picker.css +1 -4
  146. package/dist/styles/menu.css +1 -1
  147. package/dist/styles/message-scroller.css +3 -21
  148. package/dist/styles/message.css +1 -7
  149. package/dist/styles/model-selector.css +1 -1
  150. package/dist/styles/plan.css +1 -1
  151. package/dist/styles/pricing-page.css +37 -35
  152. package/dist/styles/prompt-input.css +4 -35
  153. package/dist/styles/queue.css +2 -2
  154. package/dist/styles/recipes.css +26 -2
  155. package/dist/styles/sources.css +2 -5
  156. package/dist/styles/stepper.css +1 -7
  157. package/dist/styles/streamdown.css +28 -25
  158. package/dist/styles/subagent-run.css +0 -3
  159. package/dist/styles/task.css +2 -2
  160. package/dist/styles/terminal.css +4 -4
  161. package/dist/styles/test-results.css +3 -18
  162. package/dist/styles/theme-mode-control.css +3 -4
  163. package/dist/styles/think-execution-status.css +1 -7
  164. package/dist/styles/think-execution-workbench.css +1 -4
  165. package/dist/styles/think-full-app.css +1 -4
  166. package/dist/styles/think-routine-library.css +8 -8
  167. package/dist/styles/think-thread-picker.css +14 -36
  168. package/dist/styles/toggle-group.css +1 -1
  169. package/dist/styles/utilities.css +6 -2
  170. package/dist/styles/web-preview.css +4 -4
  171. package/dist/styles/workspace-explorer.css +3 -3
  172. package/dist/view-transitions-DyUP0lSg.js +77 -0
  173. package/package.json +2 -2
@@ -126,9 +126,6 @@
126
126
  font-family: var(--sigvelo-font-mono);
127
127
  font-size: var(--sigvelo-text-compact);
128
128
  font-weight: var(--sigvelo-font-weight-normal);
129
- overflow: hidden;
130
- text-overflow: ellipsis;
131
- white-space: nowrap;
132
129
  }
133
130
 
134
131
  .test-results__suite-stats {
@@ -191,7 +188,7 @@
191
188
 
192
189
  .test-results__test-status--running {
193
190
  color: var(--sigvelo-color-primary-text);
194
- animation: test-results-spin 1.4s linear infinite;
191
+ animation: sigvelo-icon-spin 1.4s linear infinite;
195
192
  }
196
193
 
197
194
  .test-results__test-name {
@@ -200,9 +197,6 @@
200
197
  font-family: var(--sigvelo-font-mono);
201
198
  font-size: var(--sigvelo-text-compact);
202
199
  color: var(--sigvelo-color-text);
203
- overflow: hidden;
204
- text-overflow: ellipsis;
205
- white-space: nowrap;
206
200
  }
207
201
 
208
202
  .test-results__test-duration {
@@ -250,15 +244,6 @@
250
244
  font-weight: var(--sigvelo-font-weight-semibold);
251
245
  }
252
246
 
253
- @keyframes test-results-spin {
254
- from {
255
- transform: rotate(0deg);
256
- }
257
- to {
258
- transform: rotate(360deg);
259
- }
260
- }
261
-
262
247
  @media (prefers-reduced-motion: reduce) {
263
248
  .test-results__progress-segment {
264
249
  transition: none;
@@ -281,11 +266,11 @@
281
266
  .test-results,
282
267
  .test-results__test,
283
268
  .test-results__suite {
284
- border: 1px solid CanvasText;
269
+ border: var(--sigvelo-border-style) var(--sigvelo-border-width) CanvasText;
285
270
  }
286
271
 
287
272
  .test-results__suite-trigger:focus-visible {
288
- outline: 2px solid Highlight;
273
+ outline: var(--sigvelo-focus-ring-forced);
289
274
  outline-offset: 2px;
290
275
  }
291
276
  }
@@ -45,9 +45,8 @@
45
45
 
46
46
  .theme-mode-control__item.radio:focus-visible {
47
47
  z-index: 1;
48
- outline: var(--sigvelo-focus-ring);
49
- outline-offset: var(--sigvelo-focus-offset);
50
- box-shadow: none;
48
+ outline: none;
49
+ box-shadow: var(--sigvelo-recipe-focus-shadow);
51
50
  }
52
51
 
53
52
  .theme-mode-control__item.radio[data-disabled] {
@@ -75,6 +74,6 @@
75
74
  }
76
75
 
77
76
  .theme-mode-control__item.radio:focus-visible {
78
- outline: 2px solid Highlight;
77
+ outline: var(--sigvelo-focus-ring-forced);
79
78
  }
80
79
  }
@@ -26,13 +26,7 @@
26
26
  [data-status="rollingBack"]
27
27
  )
28
28
  svg {
29
- animation: think-execution-status-spin 0.8s linear infinite;
30
- }
31
-
32
- @keyframes think-execution-status-spin {
33
- to {
34
- transform: rotate(360deg);
35
- }
29
+ animation: sigvelo-icon-spin 0.8s linear infinite;
36
30
  }
37
31
 
38
32
  @media (prefers-reduced-motion: reduce) {
@@ -144,11 +144,8 @@
144
144
 
145
145
  .think-execution-workbench__run-title {
146
146
  min-inline-size: 0;
147
- overflow: hidden;
148
147
  font-size: var(--sigvelo-text-compact);
149
148
  font-weight: var(--sigvelo-font-weight-semibold);
150
- text-overflow: ellipsis;
151
- white-space: nowrap;
152
149
  }
153
150
 
154
151
  .think-execution-workbench__run-copy code,
@@ -268,7 +265,7 @@
268
265
 
269
266
  @media (forced-colors: active) {
270
267
  .think-execution-workbench {
271
- border: 1px solid canvastext;
268
+ border: var(--sigvelo-border-style) var(--sigvelo-border-width) canvastext;
272
269
  background: canvas;
273
270
  color: canvastext;
274
271
  box-shadow: none;
@@ -187,9 +187,6 @@ body.is-resizing-side-panel .think-full-app__view-scope {
187
187
 
188
188
  .think-full-app__thread-trigger-title {
189
189
  min-inline-size: 0;
190
- overflow: hidden;
191
- text-overflow: ellipsis;
192
- white-space: nowrap;
193
190
  }
194
191
 
195
192
  .think-full-app__thread-trigger > svg {
@@ -308,7 +305,7 @@ body.is-resizing-side-panel .think-full-app__view-scope {
308
305
  .think-full-app__workbench,
309
306
  .think-full-app__app-bar,
310
307
  .think-full-app__workbench-view-switch {
311
- border: 1px solid canvastext;
308
+ border: var(--sigvelo-border-style) var(--sigvelo-border-width) canvastext;
312
309
  background: canvas;
313
310
  color: canvastext;
314
311
  box-shadow: none;
@@ -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(1rem, 3vw, 2rem);
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(1rem, 3vw, 2rem);
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,7 +242,7 @@
242
242
 
243
243
  .think-routine-library__detail-header h1,
244
244
  .think-routine-library__create-header h1 {
245
- font-size: clamp(1.125rem, 2.5vw, 1.5rem);
245
+ font-size: clamp(var(--sigvelo-text-lg), 2.5vw, var(--sigvelo-text-2xl));
246
246
  line-height: 1.12;
247
247
  }
248
248
 
@@ -257,8 +257,8 @@
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(1rem, 3vw, 2rem);
261
- padding-block-end: clamp(1rem, 3vw, 2rem);
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 {
@@ -326,7 +326,7 @@
326
326
  }
327
327
 
328
328
  .think-routine-library__runs {
329
- padding-block-end: clamp(1rem, 3vw, 2rem);
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 {
@@ -423,7 +423,7 @@
423
423
  .think-routine-library__create {
424
424
  min-block-size: 0;
425
425
  overflow: auto;
426
- padding: clamp(1rem, 3vw, 2rem);
426
+ padding: clamp(var(--sigvelo-spacing-4), 3vw, var(--sigvelo-spacing-8));
427
427
  }
428
428
 
429
429
  .think-routine-library__create-header,
@@ -433,7 +433,7 @@
433
433
  }
434
434
 
435
435
  .think-routine-library__create-header {
436
- margin-block-end: clamp(1rem, 3vw, 2rem);
436
+ margin-block-end: clamp(var(--sigvelo-spacing-4), 3vw, var(--sigvelo-spacing-8));
437
437
  }
438
438
 
439
439
  .think-routine-library__create-header > div {
@@ -27,13 +27,10 @@
27
27
  min-inline-size: 0;
28
28
  margin: 0;
29
29
  flex: 1 1 auto;
30
- overflow: hidden;
31
30
  color: var(--sigvelo-color-text-muted);
32
31
  font-size: var(--sigvelo-density-compact-control-font-size);
33
32
  font-weight: var(--sigvelo-font-weight-semibold);
34
33
  line-height: var(--sigvelo-leading-tight);
35
- text-overflow: ellipsis;
36
- white-space: nowrap;
37
34
  }
38
35
 
39
36
  .think-thread-picker__search {
@@ -72,7 +69,7 @@
72
69
  }
73
70
 
74
71
  .think-thread-status-indicators__item[data-status="running"] svg {
75
- animation: think-thread-picker-spin 900ms linear infinite;
72
+ animation: sigvelo-icon-spin 900ms linear infinite;
76
73
  }
77
74
 
78
75
  .think-thread-status-indicators__item[data-status="attention"] {
@@ -99,28 +96,18 @@
99
96
 
100
97
  .think-thread-picker__viewport {
101
98
  --think-thread-picker-fade-size: min(12%, 2.5rem);
99
+ --sigvelo-scroll-fade-start: min(
100
+ var(--think-thread-picker-fade-size),
101
+ var(--scroll-area-overflow-y-start, 0px)
102
+ );
103
+ --sigvelo-scroll-fade-end: min(
104
+ var(--think-thread-picker-fade-size),
105
+ var(--scroll-area-overflow-y-end, 0px)
106
+ );
102
107
 
103
- padding: var(--sigvelo-spacing-1-5) 0.5rem var(--sigvelo-spacing-3);
108
+ padding: var(--sigvelo-spacing-1-5) var(--sigvelo-spacing-2) var(--sigvelo-spacing-3);
104
109
  overscroll-behavior: contain;
105
110
  scrollbar-gutter: stable;
106
- -webkit-mask-image: linear-gradient(
107
- to bottom,
108
- transparent 0,
109
- #000 min(var(--think-thread-picker-fade-size), var(--scroll-area-overflow-y-start, 0px)),
110
- #000
111
- calc(100% - min(var(--think-thread-picker-fade-size), var(--scroll-area-overflow-y-end, 0px))),
112
- transparent 100%
113
- );
114
- mask-image: linear-gradient(
115
- to bottom,
116
- transparent 0,
117
- #000 min(var(--think-thread-picker-fade-size), var(--scroll-area-overflow-y-start, 0px)),
118
- #000
119
- calc(100% - min(var(--think-thread-picker-fade-size), var(--scroll-area-overflow-y-end, 0px))),
120
- transparent 100%
121
- );
122
- -webkit-mask-repeat: no-repeat;
123
- mask-repeat: no-repeat;
124
111
  }
125
112
 
126
113
  .think-thread-picker__list {
@@ -180,11 +167,8 @@
180
167
  .think-thread-picker__thread-title {
181
168
  min-inline-size: 0;
182
169
  display: block;
183
- overflow: hidden;
184
170
  font-size: var(--sigvelo-density-compact-control-font-size);
185
171
  line-height: var(--sigvelo-leading-tight);
186
- text-overflow: ellipsis;
187
- white-space: nowrap;
188
172
  }
189
173
 
190
174
  .think-thread-picker__delete {
@@ -255,7 +239,7 @@
255
239
 
256
240
  .think-thread-picker__delete-error svg {
257
241
  flex: 0 0 auto;
258
- margin-block-start: 0.125rem;
242
+ margin-block-start: var(--sigvelo-spacing-0-5);
259
243
  }
260
244
 
261
245
  .think-thread-picker__thread-time {
@@ -299,7 +283,7 @@
299
283
  .think-thread-picker__thread[data-thread-status="recovering"]
300
284
  .think-thread-picker__thread-status
301
285
  svg {
302
- animation: think-thread-picker-spin 900ms linear infinite;
286
+ animation: sigvelo-icon-spin 900ms linear infinite;
303
287
  }
304
288
 
305
289
  .think-thread-picker__thread[data-thread-status="error"] .think-thread-picker__thread-status {
@@ -313,7 +297,7 @@
313
297
  }
314
298
 
315
299
  .think-thread-picker__empty {
316
- margin: 0.5rem;
300
+ margin: var(--sigvelo-spacing-2);
317
301
  color: var(--sigvelo-color-text-muted);
318
302
  font-size: var(--sigvelo-text-compact);
319
303
  line-height: var(--sigvelo-leading-snug);
@@ -339,12 +323,6 @@
339
323
  flex: 0 0 auto;
340
324
  }
341
325
 
342
- @keyframes think-thread-picker-spin {
343
- to {
344
- transform: rotate(360deg);
345
- }
346
- }
347
-
348
326
  @container responsive-sidebar-shell (inline-size <= 56rem) {
349
327
  .think-thread-picker {
350
328
  block-size: auto;
@@ -409,7 +387,7 @@
409
387
 
410
388
  @media (forced-colors: active) {
411
389
  .think-thread-picker {
412
- border-inline-end: 1px solid canvastext;
390
+ border-inline-end: var(--sigvelo-border-style) var(--sigvelo-border-width) canvastext;
413
391
  background: canvas;
414
392
  color: canvastext;
415
393
  box-shadow: none;
@@ -40,7 +40,7 @@
40
40
 
41
41
  @media (forced-colors: active) {
42
42
  .toggle-group__item[data-pressed] {
43
- outline: 2px solid Highlight;
43
+ outline: var(--sigvelo-focus-ring-forced);
44
44
  outline-offset: -2px;
45
45
  }
46
46
  }
@@ -23,9 +23,13 @@
23
23
  }
24
24
 
25
25
  .sigvelo-truncate {
26
- min-inline-size: 0;
27
- flex: 1;
28
26
  overflow: hidden;
29
27
  text-overflow: ellipsis;
30
28
  white-space: nowrap;
31
29
  }
30
+
31
+ /* Truncating flex child that also grows to fill its track. */
32
+ .sigvelo-truncate-grow {
33
+ min-inline-size: 0;
34
+ flex: 1;
35
+ }
@@ -2,7 +2,7 @@
2
2
  display: flex;
3
3
  align-items: center;
4
4
  gap: var(--sigvelo-spacing-1-5);
5
- padding-block: 0.5rem;
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: 2rem;
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: 0.5rem;
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: 1px solid CanvasText;
143
+ border: var(--sigvelo-border-style) var(--sigvelo-border-width) CanvasText;
144
144
  }
145
145
  }
@@ -408,8 +408,8 @@
408
408
  }
409
409
 
410
410
  .workspace-explorer__image-trigger:focus-visible {
411
- outline: var(--sigvelo-focus-ring);
412
- outline-offset: var(--sigvelo-focus-offset);
411
+ outline: none;
412
+ box-shadow: var(--sigvelo-recipe-focus-shadow);
413
413
  }
414
414
 
415
415
  .workspace-explorer__image-trigger[aria-disabled="true"] {
@@ -534,7 +534,7 @@
534
534
 
535
535
  @media (forced-colors: active) {
536
536
  .workspace-explorer__tree .file-tree__node:is([data-focused], :focus-visible) {
537
- outline: 2px solid Highlight;
537
+ outline: var(--sigvelo-focus-ring-forced);
538
538
  outline-offset: -2px;
539
539
  background-color: Canvas;
540
540
  color: CanvasText;
@@ -0,0 +1,77 @@
1
+ import { flushSync } from "react-dom";
2
+ //#region src/components/_internal/view-transitions.ts
3
+ let documentScopeSequence = 0;
4
+ let restoreActiveDocumentScope = null;
5
+ /**
6
+ * Reports whether motion should be suppressed, honoring both the app-level
7
+ * `data-motion="reduce"` override and the `prefers-reduced-motion` media query.
8
+ * Returns `true` (reduced) when there is no document, e.g. during SSR.
9
+ */
10
+ function motionIsReduced() {
11
+ if (typeof document === "undefined") return true;
12
+ if (document.documentElement.dataset.motion === "reduce") return true;
13
+ return window.matchMedia?.("(prefers-reduced-motion: reduce)").matches ?? false;
14
+ }
15
+ function isReactTestEnvironment() {
16
+ return globalThis.IS_REACT_ACT_ENVIRONMENT;
17
+ }
18
+ function scopeDocumentTransition(scope) {
19
+ if (!(scope instanceof HTMLElement || scope instanceof SVGElement)) return null;
20
+ restoreActiveDocumentScope?.();
21
+ const rootStyle = document.documentElement.style;
22
+ const scopeStyle = scope.style;
23
+ const rootValue = rootStyle.getPropertyValue("view-transition-name");
24
+ const rootPriority = rootStyle.getPropertyPriority("view-transition-name");
25
+ const scopeValue = scopeStyle.getPropertyValue("view-transition-name");
26
+ const scopePriority = scopeStyle.getPropertyPriority("view-transition-name");
27
+ rootStyle.setProperty("view-transition-name", "none", "important");
28
+ scopeStyle.setProperty("view-transition-name", `sigvelo-transition-scope-${++documentScopeSequence}`, "important");
29
+ let active = true;
30
+ const restore = () => {
31
+ if (!active) return;
32
+ active = false;
33
+ if (rootValue) rootStyle.setProperty("view-transition-name", rootValue, rootPriority);
34
+ else rootStyle.removeProperty("view-transition-name");
35
+ if (scopeValue) scopeStyle.setProperty("view-transition-name", scopeValue, scopePriority);
36
+ else scopeStyle.removeProperty("view-transition-name");
37
+ if (restoreActiveDocumentScope === restore) restoreActiveDocumentScope = null;
38
+ };
39
+ restoreActiveDocumentScope = restore;
40
+ return restore;
41
+ }
42
+ /**
43
+ * Runs one synchronous React update inside the narrowest supported native view
44
+ * transition. Unsupported and reduced-motion environments commit immediately.
45
+ */
46
+ function runViewTransition({ scope, update }) {
47
+ let committed = false;
48
+ const commitOnce = () => {
49
+ if (committed) return;
50
+ committed = true;
51
+ flushSync(update);
52
+ };
53
+ if (typeof document === "undefined" || motionIsReduced() || isReactTestEnvironment()) {
54
+ commitOnce();
55
+ return null;
56
+ }
57
+ const scopedHost = scope;
58
+ const documentHost = document;
59
+ const useScopedHost = typeof scopedHost?.startViewTransition === "function";
60
+ const host = useScopedHost ? scopedHost : typeof documentHost.startViewTransition === "function" ? documentHost : null;
61
+ if (!host?.startViewTransition) {
62
+ commitOnce();
63
+ return null;
64
+ }
65
+ const restoreDocumentScope = useScopedHost ? null : scopeDocumentTransition(scope);
66
+ try {
67
+ const transition = host.startViewTransition(commitOnce);
68
+ if (restoreDocumentScope) transition.finished.finally(restoreDocumentScope).catch(() => void 0);
69
+ return transition;
70
+ } catch {
71
+ restoreDocumentScope?.();
72
+ commitOnce();
73
+ return null;
74
+ }
75
+ }
76
+ //#endregion
77
+ export { runViewTransition as n, motionIsReduced as t };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mcp-b/react-components",
3
- "version": "0.20.1",
3
+ "version": "0.20.5",
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.20.1"
60
+ "@mcp-b/design-tokens": "0.20.5"
61
61
  },
62
62
  "devDependencies": {
63
63
  "@ai-sdk/react": "^3.0.222",