@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.
Files changed (114) hide show
  1. package/dist/{ThinkChatActivity-DyGHj01E.d.ts → ThinkChatActivity-CsDql-ER.d.ts} +3 -0
  2. package/dist/{WorkspaceFileView-D0yFwoDr.js → WorkspaceFileView-DwdXiKku.js} +15 -20
  3. package/dist/components/agents-sdk/AgentActivity.js +3 -2
  4. package/dist/components/agents-sdk/AgentChat.js +1 -0
  5. package/dist/components/agents-sdk/BrowserRunPanel.js +2 -1
  6. package/dist/components/agents-sdk/ManagerOffice.d.ts +39 -27
  7. package/dist/components/agents-sdk/ManagerOffice.js +80 -44
  8. package/dist/components/agents-sdk/McpPluginCatalog.js +4 -2
  9. package/dist/components/agents-sdk/ModelSelector.js +1 -1
  10. package/dist/components/agents-sdk/SubagentRunSelector.js +1 -1
  11. package/dist/components/agents-sdk/ThinkChat.d.ts +1 -1
  12. package/dist/components/agents-sdk/ThinkChat.js +1 -1
  13. package/dist/components/agents-sdk/ThinkChatActivity.d.ts +1 -1
  14. package/dist/components/agents-sdk/ThinkChatActivity.js +19 -5
  15. package/dist/components/agents-sdk/ThinkChatToolPanels.js +6 -2
  16. package/dist/components/agents-sdk/ThinkExecutionDetail.js +3 -1
  17. package/dist/components/agents-sdk/ThinkExecutionWorkbench.js +1 -0
  18. package/dist/components/agents-sdk/ThinkFullApp.d.ts +40 -88
  19. package/dist/components/agents-sdk/ThinkFullApp.js +75 -124
  20. package/dist/components/agents-sdk/ThinkFullAppViewSwitch.d.ts +1 -1
  21. package/dist/components/agents-sdk/ThinkFullAppViewSwitch.js +1 -1
  22. package/dist/components/agents-sdk/ThinkRoutineDetail.js +1 -1
  23. package/dist/components/agents-sdk/ThinkRoutineLibrary.d.ts +7 -6
  24. package/dist/components/agents-sdk/ThinkRoutineLibrary.js +57 -65
  25. package/dist/components/agents-sdk/ThinkThreadPicker.js +2 -1
  26. package/dist/components/agents-sdk/WorkspaceExplorer.js +2 -1
  27. package/dist/components/agents-sdk/WorkspaceFileView.js +1 -1
  28. package/dist/components/ai-sdk/MessageScroller.js +2 -1
  29. package/dist/components/ai-sdk/MessageScrollerVirtual.js +1 -0
  30. package/dist/components/ai-sdk/PromptInput.js +20 -14
  31. package/dist/components/extension/ChatGptSignInScreen.js +1 -0
  32. package/dist/components/foundations/ToggleGroup.d.ts +79 -1
  33. package/dist/components/foundations/ToggleGroup.js +1 -1
  34. package/dist/components/foundations/Toolbar.d.ts +151 -1
  35. package/dist/components/general-purpose/AppFrame.js +1 -0
  36. package/dist/components/general-purpose/AppTopBar.d.ts +96 -1
  37. package/dist/components/general-purpose/PricingBillingToggle.js +1 -1
  38. package/dist/components/general-purpose/PricingUsageCalculator.js +1 -1
  39. package/dist/components/general-purpose/ResizableSidePanel.d.ts +8 -0
  40. package/dist/components/general-purpose/ResizableSidePanel.js +3 -2
  41. package/dist/components/general-purpose/ResponsiveSidebarShell.d.ts +59 -49
  42. package/dist/components/general-purpose/ResponsiveSidebarShell.js +74 -74
  43. package/dist/components/general-purpose/WebPreview.d.ts +3 -0
  44. package/dist/components/general-purpose/WebPreview.js +2 -2
  45. package/dist/components/nanites/AgentToolDetail.js +4 -3
  46. package/dist/styles/accordion.css +1 -0
  47. package/dist/styles/action-guide.css +8 -7
  48. package/dist/styles/activity-header.css +13 -39
  49. package/dist/styles/activity.css +40 -55
  50. package/dist/styles/agent-attention.css +14 -14
  51. package/dist/styles/agent-chat.css +62 -45
  52. package/dist/styles/agent-connection.css +10 -4
  53. package/dist/styles/agent-tool-detail.css +4 -4
  54. package/dist/styles/alert-dialog.css +4 -4
  55. package/dist/styles/app-frame.css +1 -3
  56. package/dist/styles/app-top-bar.css +5 -9
  57. package/dist/styles/approval.css +1 -0
  58. package/dist/styles/artifact.css +6 -6
  59. package/dist/styles/attachment-preview.css +5 -4
  60. package/dist/styles/browser-replay.css +6 -6
  61. package/dist/styles/browser-run-panel.css +1 -0
  62. package/dist/styles/button.css +15 -6
  63. package/dist/styles/card.css +5 -5
  64. package/dist/styles/chatgpt-sign-in-screen.css +1 -1
  65. package/dist/styles/code-block.css +14 -13
  66. package/dist/styles/codex-model-selector.css +2 -0
  67. package/dist/styles/collapsible.css +1 -0
  68. package/dist/styles/commit.css +6 -6
  69. package/dist/styles/context.css +9 -9
  70. package/dist/styles/conversation-tab-picker.css +1 -1
  71. package/dist/styles/conversation.css +6 -8
  72. package/dist/styles/dialog.css +4 -4
  73. package/dist/styles/empty-state.css +3 -3
  74. package/dist/styles/environment-variables.css +9 -9
  75. package/dist/styles/field.css +2 -1
  76. package/dist/styles/fieldset.css +2 -2
  77. package/dist/styles/index.css +3 -3
  78. package/dist/styles/manager-office.css +23 -29
  79. package/dist/styles/mcp-plugin-catalog.css +11 -10
  80. package/dist/styles/mcp-server-picker.css +3 -3
  81. package/dist/styles/message-scroller.css +9 -11
  82. package/dist/styles/message.css +43 -20
  83. package/dist/styles/navigation-menu.css +1 -0
  84. package/dist/styles/plan.css +13 -12
  85. package/dist/styles/pricing-page.css +26 -23
  86. package/dist/styles/prompt-input.css +18 -5
  87. package/dist/styles/queue.css +1 -0
  88. package/dist/styles/reasoning.css +1 -9
  89. package/dist/styles/recipes.css +28 -1
  90. package/dist/styles/responsive-sidebar-shell.css +44 -16
  91. package/dist/styles/separator.css +5 -5
  92. package/dist/styles/sources.css +4 -4
  93. package/dist/styles/stepper.css +1 -0
  94. package/dist/styles/streamdown.css +31 -21
  95. package/dist/styles/tabs.css +1 -0
  96. package/dist/styles/task.css +5 -17
  97. package/dist/styles/terminal.css +10 -10
  98. package/dist/styles/test-results.css +6 -6
  99. package/dist/styles/think-execution-status.css +2 -2
  100. package/dist/styles/think-execution-workbench.css +12 -15
  101. package/dist/styles/think-full-app.css +26 -64
  102. package/dist/styles/think-routine-library.css +26 -55
  103. package/dist/styles/think-thread-picker.css +9 -9
  104. package/dist/styles/utilities.css +33 -0
  105. package/dist/styles/web-preview.css +20 -19
  106. package/dist/styles/workspace-explorer.css +18 -21
  107. package/dist/styles/workspace-mount-manager.css +2 -2
  108. package/dist/utils/favicon.d.ts +6 -1
  109. package/dist/utils/favicon.js +18 -1
  110. package/package.json +2 -2
  111. package/dist/AppTopBar-ZdgmB_Lu.d.ts +0 -97
  112. package/dist/ToggleGroup-BrQZOQn_.d.ts +0 -80
  113. package/dist/Toolbar-CBOseBQr.d.ts +0 -152
  114. package/dist/{ThinkChat-BES_3Mb-.js → ThinkChat-DkA4Wr71.js} +1 -1
@@ -1,10 +1,12 @@
1
1
  .pricing-page {
2
2
  box-sizing: border-box;
3
- width: 100%;
4
- max-width: 1200px;
5
- margin: 0 auto;
6
- padding: clamp(var(--sigvelo-spacing-4), 4%, var(--sigvelo-spacing-12))
7
- clamp(var(--sigvelo-spacing-3), 3%, var(--sigvelo-spacing-6));
3
+ inline-size: 100%;
4
+ /* Marketing measure: wider than --sigvelo-layout-content so three plan
5
+ cards sit in one row. Application dossiers keep the 50rem content column. */
6
+ max-inline-size: 75rem;
7
+ margin-inline: auto;
8
+ padding-block: clamp(var(--sigvelo-layout-stack), 4%, var(--sigvelo-spacing-12));
9
+ padding-inline: clamp(var(--sigvelo-layout-gutter), 3%, var(--sigvelo-spacing-6));
8
10
  container-type: inline-size;
9
11
  }
10
12
 
@@ -12,7 +14,7 @@
12
14
 
13
15
  .pricing-page__header {
14
16
  text-align: center;
15
- margin-bottom: var(--sigvelo-spacing-12);
17
+ margin-block-end: var(--sigvelo-spacing-12);
16
18
  }
17
19
 
18
20
  .pricing-page__title {
@@ -67,7 +69,7 @@
67
69
  display: grid;
68
70
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
69
71
  gap: var(--sigvelo-spacing-6);
70
- margin-bottom: var(--sigvelo-spacing-12);
72
+ margin-block-end: var(--sigvelo-spacing-12);
71
73
  }
72
74
 
73
75
  .pricing-page__plan {
@@ -85,7 +87,7 @@
85
87
  }
86
88
 
87
89
  .pricing-page__plan-header {
88
- margin-bottom: var(--sigvelo-spacing-6);
90
+ margin-block-end: var(--sigvelo-spacing-6);
89
91
  }
90
92
 
91
93
  .pricing-page__popular-label {
@@ -112,7 +114,7 @@
112
114
  }
113
115
 
114
116
  .pricing-page__plan-price {
115
- margin-bottom: var(--sigvelo-spacing-6);
117
+ margin-block-end: var(--sigvelo-spacing-6);
116
118
  }
117
119
 
118
120
  .pricing-page__price-amount {
@@ -135,11 +137,11 @@
135
137
  font-size: var(--sigvelo-text-xs);
136
138
  font-weight: var(--sigvelo-font-weight-semibold);
137
139
  color: var(--sigvelo-color-success-bg);
138
- margin-top: var(--sigvelo-spacing-1);
140
+ margin-block-start: var(--sigvelo-spacing-1);
139
141
  }
140
142
 
141
143
  .pricing-page__plan-cta {
142
- width: 100%;
144
+ inline-size: 100%;
143
145
  }
144
146
 
145
147
  .pricing-page__features-separator {
@@ -172,8 +174,8 @@
172
174
  display: flex;
173
175
  align-items: center;
174
176
  justify-content: center;
175
- width: 1.25rem;
176
- height: 1.25rem;
177
+ inline-size: 1.25rem;
178
+ block-size: 1.25rem;
177
179
  flex-shrink: 0;
178
180
  color: var(--sigvelo-color-text-muted);
179
181
  }
@@ -189,13 +191,13 @@
189
191
  .pricing-page__feature-limit {
190
192
  font-size: var(--sigvelo-text-xs);
191
193
  color: var(--sigvelo-color-text-muted);
192
- margin-left: var(--sigvelo-spacing-1);
194
+ margin-inline-start: var(--sigvelo-spacing-1);
193
195
  }
194
196
 
195
197
  /* Calculator */
196
198
 
197
199
  .pricing-page__calculator {
198
- max-width: 600px;
200
+ max-inline-size: var(--sigvelo-layout-content);
199
201
  margin: 0 auto var(--sigvelo-spacing-12);
200
202
  padding: var(--sigvelo-spacing-8);
201
203
  }
@@ -216,7 +218,7 @@
216
218
  }
217
219
 
218
220
  .pricing-page__calculator-slider {
219
- margin-bottom: var(--sigvelo-spacing-2);
221
+ margin-block-end: var(--sigvelo-spacing-2);
220
222
  }
221
223
 
222
224
  .pricing-page__calculator-separator {
@@ -227,7 +229,7 @@
227
229
  display: flex;
228
230
  justify-content: space-between;
229
231
  align-items: center;
230
- margin-bottom: var(--sigvelo-spacing-3);
232
+ margin-block-end: var(--sigvelo-spacing-3);
231
233
  }
232
234
 
233
235
  .pricing-page__calculator-value {
@@ -241,7 +243,7 @@
241
243
  .pricing-page__calculator-range {
242
244
  display: flex;
243
245
  justify-content: space-between;
244
- margin-top: var(--sigvelo-spacing-2);
246
+ margin-block-start: var(--sigvelo-spacing-2);
245
247
  font-family: inherit;
246
248
  font-size: var(--sigvelo-text-xs);
247
249
  color: var(--sigvelo-color-text-muted);
@@ -251,7 +253,7 @@
251
253
  display: flex;
252
254
  justify-content: space-between;
253
255
  align-items: baseline;
254
- margin-bottom: var(--sigvelo-spacing-6);
256
+ margin-block-end: var(--sigvelo-spacing-6);
255
257
  }
256
258
 
257
259
  .pricing-page__calculator-result-label {
@@ -310,7 +312,7 @@
310
312
  /* FAQ */
311
313
 
312
314
  .pricing-page__faq {
313
- max-width: 700px;
315
+ max-inline-size: var(--sigvelo-layout-content);
314
316
  margin: 0 auto;
315
317
  }
316
318
 
@@ -332,7 +334,7 @@
332
334
 
333
335
  .pricing-page__confirm-summary {
334
336
  padding: var(--sigvelo-spacing-4);
335
- margin-bottom: var(--sigvelo-spacing-4);
337
+ margin-block-end: var(--sigvelo-spacing-4);
336
338
  background-color: var(--sigvelo-color-neutral-bg-subtle);
337
339
  border-radius: var(--sigvelo-radius-md);
338
340
  }
@@ -359,7 +361,8 @@
359
361
 
360
362
  /* Responsive */
361
363
 
362
- @container (max-width: 768px) {
364
+ /* Local wrap. Not --sigvelo-layout-break-compact. */
365
+ @container (inline-size <= 48rem) {
363
366
  .pricing-page__title {
364
367
  font-size: var(--sigvelo-text-3xl);
365
368
  }
@@ -369,7 +372,7 @@
369
372
  }
370
373
 
371
374
  .pricing-page__plans {
372
- grid-template-columns: 1fr;
375
+ grid-template-columns: var(--sigvelo-layout-track-fill);
373
376
  }
374
377
 
375
378
  .pricing-page__price-amount {
@@ -14,7 +14,9 @@
14
14
  not a border: a 0.5px ring stays crisp at any zoom and does not add a pixel
15
15
  of layout. Forced colors restores a real border at the end of this file. */
16
16
  border: 0;
17
- border-radius: calc(var(--sigvelo-radius-xl) + var(--sigvelo-spacing-2));
17
+ --prompt-input-radius: calc(var(--sigvelo-radius-xl) + var(--sigvelo-spacing-2));
18
+
19
+ border-radius: var(--prompt-input-radius);
18
20
  box-shadow: var(--sigvelo-elevation-floating);
19
21
  font-family: inherit;
20
22
  color: var(--sigvelo-color-text);
@@ -95,8 +97,12 @@
95
97
  }
96
98
 
97
99
  /* A supporting tray shares one material and overlap contract whether it sits
98
- above the composer for queued work or below it for first-turn utilities. */
100
+ above the composer for queued work or below it for first-turn utilities.
101
+ Overlap the card radius, not the hairline: the composer edge is a shadow,
102
+ so a 1px tuck leaves the tray reading as a second pill. */
99
103
  :where(.prompt-input__tray) {
104
+ --prompt-input-tray-overlap: calc(var(--sigvelo-radius-xl) + var(--sigvelo-spacing-2));
105
+
100
106
  display: flex;
101
107
  align-items: center;
102
108
  min-block-size: var(--sigvelo-control-height-xl);
@@ -109,12 +115,16 @@
109
115
  }
110
116
 
111
117
  .prompt-input__tray[data-side="top"] {
112
- margin-block-end: calc(-1 * var(--sigvelo-border-width));
118
+ z-index: 0;
119
+ margin-block-end: calc(-1 * var(--prompt-input-tray-overlap));
120
+ padding-block-end: calc(var(--prompt-input-tray-overlap) + var(--sigvelo-spacing-1));
113
121
  border-radius: var(--sigvelo-radius-2xl) var(--sigvelo-radius-2xl) 0 0;
114
122
  }
115
123
 
116
124
  .prompt-input__tray[data-side="bottom"] {
117
- margin-block-start: calc(-1 * var(--sigvelo-border-width));
125
+ z-index: 0;
126
+ margin-block-start: calc(-1 * var(--prompt-input-tray-overlap));
127
+ padding-block-start: calc(var(--prompt-input-tray-overlap) + var(--sigvelo-spacing-1));
118
128
  border-radius: 0 0 var(--sigvelo-radius-2xl) var(--sigvelo-radius-2xl);
119
129
  }
120
130
 
@@ -370,6 +380,7 @@
370
380
  white-space: nowrap;
371
381
  }
372
382
 
383
+ /* Local wrap. Not --sigvelo-layout-break-compact. */
373
384
  @container prompt-input (inline-size <= 36rem) {
374
385
  .prompt-input__footer {
375
386
  gap: var(--sigvelo-spacing-1);
@@ -416,6 +427,7 @@
416
427
  }
417
428
  }
418
429
 
430
+ /* Local wrap. Not --sigvelo-layout-break-compact. */
419
431
  @container prompt-input (inline-size <= 22rem) {
420
432
  .prompt-input__context-trigger {
421
433
  inline-size: var(--sigvelo-control-height-xs);
@@ -548,7 +560,7 @@
548
560
 
549
561
  .prompt-input__command-copy {
550
562
  display: grid;
551
- grid-template-columns: auto minmax(0, 1fr) auto;
563
+ grid-template-columns: auto var(--sigvelo-layout-track-fill) auto;
552
564
  align-items: baseline;
553
565
  column-gap: var(--sigvelo-spacing-2);
554
566
  min-inline-size: 0;
@@ -610,6 +622,7 @@
610
622
  opacity: 1;
611
623
  }
612
624
 
625
+ /* Local wrap. Not --sigvelo-layout-break-compact. */
613
626
  @container prompt-input (inline-size < 28rem) {
614
627
  .prompt-input__reference-label {
615
628
  max-inline-size: 12rem;
@@ -69,6 +69,7 @@
69
69
  }
70
70
 
71
71
  .queue__list-scroll {
72
+ /* Scrollbar inset, not --sigvelo-layout-stack. */
72
73
  padding-inline-end: var(--sigvelo-spacing-4);
73
74
  }
74
75
 
@@ -5,13 +5,5 @@
5
5
  }
6
6
 
7
7
  .reasoning__text {
8
- padding-inline-start: var(--sigvelo-spacing-3);
9
- border-inline-start: var(--sigvelo-border-style) calc(var(--sigvelo-border-width) * 2)
10
- var(--sigvelo-color-neutral-border-subtle);
11
- }
12
-
13
- @media (forced-colors: active) {
14
- .reasoning__text {
15
- border-inline-start: 2px solid CanvasText;
16
- }
8
+ padding-inline-start: 0;
17
9
  }
@@ -48,6 +48,10 @@
48
48
  --sigvelo-recipe-group-label-font-size: var(--sigvelo-text-xs);
49
49
  --sigvelo-recipe-group-label-font-weight: var(--sigvelo-font-weight-semibold);
50
50
  --sigvelo-recipe-group-label-line-height: inherit;
51
+ --sigvelo-recipe-layout-gutter: var(--sigvelo-layout-gutter);
52
+ --sigvelo-recipe-layout-gap: var(--sigvelo-layout-gap);
53
+ --sigvelo-recipe-layout-stack: var(--sigvelo-layout-stack);
54
+ --sigvelo-recipe-layout-cluster: var(--sigvelo-layout-cluster);
51
55
  }
52
56
 
53
57
  :where([data-slot="select-trigger"][data-size="sm"], .toggle--sm) {
@@ -136,9 +140,32 @@
136
140
  scrollbar-gutter: stable;
137
141
  }
138
142
 
143
+ /* Host-filling application surfaces. Display mode stays with the component;
144
+ this only stops a shell from inventing its own 100% / min-size contract. */
145
+ :where([data-recipe~="fill-host"]) {
146
+ min-inline-size: 0;
147
+ min-block-size: 0;
148
+ inline-size: 100%;
149
+ block-size: 100%;
150
+ }
151
+
152
+ /* Capped page column. Padding and measure come from the layout tokens so a
153
+ dossier, a run list, and a start screen sit on the same edges. */
154
+ :where([data-recipe~="page"]) {
155
+ box-sizing: border-box;
156
+ min-inline-size: 0;
157
+ inline-size: 100%;
158
+ max-inline-size: var(--sigvelo-layout-content);
159
+ margin-inline: auto;
160
+ padding-block: var(--sigvelo-recipe-layout-stack);
161
+ padding-inline: var(--sigvelo-recipe-layout-gutter);
162
+ }
163
+
139
164
  :where([data-recipe~="framed-panel"]) {
140
165
  display: flex;
141
166
  flex-direction: column;
167
+ min-inline-size: 0;
168
+ min-block-size: 0;
142
169
  inline-size: 100%;
143
170
  overflow: hidden;
144
171
  font-family: inherit;
@@ -403,7 +430,7 @@
403
430
  [data-slot="autocomplete-item"]
404
431
  )[data-highlighted] {
405
432
  color: var(--sigvelo-color-neutral-text-on-subtle);
406
- background-color: var(--sigvelo-color-neutral-bg-subtle);
433
+ background-color: var(--sigvelo-color-neutral-bg-selected);
407
434
  }
408
435
 
409
436
  :where(
@@ -4,11 +4,8 @@
4
4
  paints. */
5
5
  .responsive-sidebar-shell {
6
6
  container: responsive-sidebar-shell / inline-size;
7
- block-size: 100%;
8
- min-inline-size: 0;
9
- min-block-size: 0;
10
7
  display: grid;
11
- grid-template-rows: minmax(0, 1fr);
8
+ grid-template-rows: var(--sigvelo-layout-track-fill);
12
9
  background: var(--sigvelo-color-surface);
13
10
  }
14
11
 
@@ -21,8 +18,10 @@
21
18
  min-inline-size: 0;
22
19
  min-block-size: 0;
23
20
  display: grid;
24
- grid-template-columns: var(--resizable-side-panel-size, 16rem) minmax(0, 1fr);
25
- grid-template-rows: minmax(0, 1fr);
21
+ grid-template-columns:
22
+ var(--responsive-sidebar-shell-sidebar-size, var(--sigvelo-layout-sidebar))
23
+ var(--sigvelo-layout-track-fill);
24
+ grid-template-rows: var(--sigvelo-layout-track-fill);
26
25
  overflow: hidden;
27
26
  color: var(--sigvelo-color-text);
28
27
  font-family: inherit;
@@ -55,13 +54,42 @@
55
54
  display: grid;
56
55
  /* The bar's own row, so it never overlaps the content it labels. Auto, not a
57
56
  reserved height: a shell with no bar keeps the whole column for content. */
58
- grid-template-rows: auto minmax(0, 1fr);
57
+ grid-template-rows: auto var(--sigvelo-layout-track-fill);
59
58
  }
60
59
 
61
60
  .responsive-sidebar-shell__peek {
62
61
  display: none;
63
62
  }
64
63
 
64
+ /* Floats over the main column so an error never reflows the content it
65
+ annotates; the column stays the positioning context. */
66
+ .responsive-sidebar-shell__main {
67
+ position: relative;
68
+ }
69
+
70
+ .responsive-sidebar-shell__error {
71
+ position: absolute;
72
+ z-index: 2;
73
+ inset-block-start: var(--sigvelo-layout-gutter);
74
+ inset-inline: 50% auto;
75
+ max-inline-size: min(32rem, calc(100% - var(--sigvelo-layout-gutter) * 2));
76
+ padding: var(--sigvelo-layout-cluster) var(--sigvelo-layout-gutter);
77
+ border: var(--sigvelo-border-style) var(--sigvelo-border-width)
78
+ var(--sigvelo-color-danger-border-subtle);
79
+ border-radius: var(--sigvelo-radius-sm);
80
+ translate: -50% 0;
81
+ display: flex;
82
+ align-items: center;
83
+ gap: var(--sigvelo-spacing-2);
84
+ color: var(--sigvelo-color-danger-text);
85
+ background: var(--sigvelo-color-danger-bg-subtle);
86
+ font-size: var(--sigvelo-text-compact);
87
+ }
88
+
89
+ .responsive-sidebar-shell__error > svg {
90
+ flex: 0 0 auto;
91
+ }
92
+
65
93
  /* Wide widths show the plain title and the icon toggle; the compact trigger
66
94
  only exists below the drawer breakpoint, where the title itself becomes the
67
95
  control that opens the sidebar. */
@@ -86,7 +114,7 @@
86
114
  }
87
115
 
88
116
  .responsive-sidebar-shell[data-sidebar-open="false"] > .responsive-sidebar-shell__frame {
89
- grid-template-columns: minmax(0, 1fr);
117
+ grid-template-columns: var(--sigvelo-layout-track-fill);
90
118
  }
91
119
 
92
120
  .responsive-sidebar-shell[data-sidebar-open="false"]
@@ -106,9 +134,10 @@
106
134
  grid-column: 1;
107
135
  }
108
136
 
137
+ /* 56rem matches --sigvelo-layout-break-compact. Container queries cannot read var(). */
109
138
  @container responsive-sidebar-shell (inline-size <= 56rem) {
110
139
  .responsive-sidebar-shell__frame {
111
- grid-template-columns: minmax(0, 1fr);
140
+ grid-template-columns: var(--sigvelo-layout-track-fill);
112
141
  }
113
142
 
114
143
  .responsive-sidebar-shell__sidebar,
@@ -121,10 +150,10 @@
121
150
  position: relative;
122
151
  z-index: calc(var(--sigvelo-z-chrome) + 3);
123
152
  inset-inline-start: 50%;
124
- inline-size: min(calc(100cqi - var(--sigvelo-spacing-3)), 34rem);
153
+ inline-size: min(calc(100cqi - var(--sigvelo-layout-gutter)), 34rem);
125
154
  max-inline-size: none;
126
155
  block-size: auto;
127
- max-block-size: min(32rem, calc(100% - var(--sigvelo-spacing-3)));
156
+ max-block-size: min(32rem, calc(100% - var(--sigvelo-layout-gutter)));
128
157
  align-self: start;
129
158
  margin-block-start: var(--sigvelo-spacing-1);
130
159
  overflow: hidden;
@@ -149,11 +178,10 @@
149
178
 
150
179
  /* The title stands in for both its own text and the icon toggle: one
151
180
  labelled control that opens the drawer, instead of an anonymous icon
152
- beside a dead title. Shallow owner classes keep this independent of the
153
- app bar's incidental DOM anatomy. */
154
- .responsive-sidebar-shell__toggle--replaced-by-title,
155
- .responsive-sidebar-shell__toggle--replaced-by-compact-leading,
156
- .responsive-sidebar-shell__title-text--replaced-by-trigger {
181
+ beside a dead title. The bar names its compact takeover once
182
+ (`data-compact-leading`) instead of tagging each hidden control. */
183
+ [data-compact-leading] .responsive-sidebar-shell__toggle,
184
+ [data-compact-leading="trigger"] .responsive-sidebar-shell__title-text {
157
185
  display: none;
158
186
  }
159
187
 
@@ -4,12 +4,12 @@
4
4
  }
5
5
 
6
6
  .separator--horizontal {
7
- width: 100%;
8
- height: 1px;
7
+ inline-size: 100%;
8
+ block-size: 1px;
9
9
  }
10
10
 
11
11
  .separator--vertical {
12
- width: 1px;
13
- height: 100%;
14
- min-height: 1rem;
12
+ inline-size: 1px;
13
+ block-size: 100%;
14
+ min-block-size: 1rem;
15
15
  }
@@ -30,7 +30,7 @@
30
30
  align-items: flex-start;
31
31
  gap: var(--sigvelo-spacing-1-5);
32
32
  padding-block: var(--sigvelo-spacing-1-5);
33
- padding-inline: var(--sigvelo-spacing-2);
33
+ padding-inline: 0;
34
34
  color: var(--sigvelo-color-text);
35
35
  background-color: var(--sigvelo-color-surface);
36
36
  border: var(--sigvelo-border-style) var(--sigvelo-border-width)
@@ -67,13 +67,13 @@
67
67
  }
68
68
 
69
69
  .sources__link-title {
70
- font-size: var(--sigvelo-text-compact);
70
+ font-size: var(--sigvelo-text-prose);
71
71
  font-weight: var(--sigvelo-font-weight-semibold);
72
72
  color: var(--sigvelo-color-text);
73
73
  }
74
74
 
75
75
  .sources__link-description {
76
- font-size: var(--sigvelo-text-xs);
76
+ font-size: var(--sigvelo-text-meta);
77
77
  color: var(--sigvelo-color-text-muted);
78
78
  line-height: var(--sigvelo-leading-snug);
79
79
  overflow: hidden;
@@ -84,7 +84,7 @@
84
84
  }
85
85
 
86
86
  .sources__link-host {
87
- font-size: var(--sigvelo-text-2xs);
87
+ font-size: var(--sigvelo-text-meta);
88
88
  color: var(--sigvelo-color-text-muted);
89
89
  font-variant-numeric: tabular-nums;
90
90
  }
@@ -189,6 +189,7 @@
189
189
  }
190
190
 
191
191
  .stepper__content[data-spacing="compact"] {
192
+ /* Explicit density variant, not --sigvelo-layout-stack. */
192
193
  gap: var(--sigvelo-spacing-4);
193
194
  }
194
195
 
@@ -54,7 +54,8 @@ button[data-streamdown="link"] {
54
54
 
55
55
  /* ---- Block typography ---- */
56
56
 
57
- /* Chat-scale headings: markdown headings inside a message shouldn't shout. */
57
+ /* One heading ladder for every markdown surface (chat and workspace). Body
58
+ text stays --sigvelo-text-prose; only headings step up. */
58
59
  [data-streamdown="heading-1"],
59
60
  [data-streamdown="heading-2"],
60
61
  [data-streamdown="heading-3"],
@@ -62,17 +63,26 @@ button[data-streamdown="link"] {
62
63
  [data-streamdown="heading-5"],
63
64
  [data-streamdown="heading-6"] {
64
65
  margin-block: var(--sigvelo-spacing-3) var(--sigvelo-spacing-1-5);
65
- font-size: var(--sigvelo-text-base);
66
+ font-size: var(--sigvelo-text-prose);
66
67
  font-weight: var(--sigvelo-font-weight-semibold);
68
+ line-height: var(--sigvelo-text-prose-leading);
69
+ }
70
+
71
+ [data-streamdown="heading-3"] {
72
+ font-size: var(--sigvelo-text-base);
67
73
  line-height: var(--sigvelo-text-base-leading);
68
74
  }
69
75
 
70
- [data-streamdown="heading-1"],
71
76
  [data-streamdown="heading-2"] {
72
77
  font-size: var(--sigvelo-text-lg);
73
78
  line-height: var(--sigvelo-text-lg-leading);
74
79
  }
75
80
 
81
+ [data-streamdown="heading-1"] {
82
+ font-size: var(--sigvelo-text-xl);
83
+ line-height: var(--sigvelo-text-xl-leading);
84
+ }
85
+
76
86
  [data-streamdown="blockquote"] {
77
87
  margin-block: var(--sigvelo-spacing-2);
78
88
  padding-inline-start: var(--sigvelo-spacing-3);
@@ -111,7 +121,7 @@ button[data-streamdown="link"] {
111
121
 
112
122
  .message__response img {
113
123
  display: inline-block;
114
- max-width: 100%;
124
+ max-inline-size: 100%;
115
125
  margin-block: var(--sigvelo-spacing-2);
116
126
  border-radius: var(--sigvelo-radius-md);
117
127
  }
@@ -166,7 +176,7 @@ button[data-streamdown="link"] {
166
176
  display: flex;
167
177
  flex-direction: column;
168
178
  gap: var(--sigvelo-spacing-1);
169
- width: 100%;
179
+ inline-size: 100%;
170
180
  margin-block: var(--sigvelo-spacing-2);
171
181
  padding: var(--sigvelo-spacing-1-5);
172
182
  border-radius: var(--sigvelo-radius-lg);
@@ -176,10 +186,10 @@ button[data-streamdown="link"] {
176
186
  [data-streamdown="code-block-header"] {
177
187
  display: flex;
178
188
  align-items: center;
179
- min-height: 1.5rem;
189
+ min-block-size: 1.5rem;
180
190
  padding-inline: var(--sigvelo-spacing-2);
181
191
  font-family: var(--sigvelo-font-mono);
182
- font-size: var(--sigvelo-text-xs);
192
+ font-size: var(--sigvelo-text-meta);
183
193
  text-transform: lowercase;
184
194
  color: var(--sigvelo-color-text-muted);
185
195
  }
@@ -189,12 +199,12 @@ button[data-streamdown="link"] {
189
199
  :is([data-streamdown="code-block"], [data-streamdown="mermaid-block"])
190
200
  > div:has(> [data-streamdown$="-block-actions"]) {
191
201
  position: sticky;
192
- top: 0.25rem;
202
+ inset-block-start: 0.25rem;
193
203
  z-index: 1;
194
204
  display: flex;
195
205
  align-items: center;
196
206
  justify-content: flex-end;
197
- height: 1.5rem;
207
+ block-size: 1.5rem;
198
208
  margin-block-start: -1.75rem;
199
209
  pointer-events: none;
200
210
  }
@@ -222,8 +232,8 @@ button[data-streamdown="link"] {
222
232
  padding-inline: var(--sigvelo-spacing-2);
223
233
  background-color: transparent;
224
234
  font-family: var(--sigvelo-font-mono);
225
- font-size: var(--sigvelo-text-compact);
226
- line-height: var(--sigvelo-leading-normal);
235
+ font-size: var(--sigvelo-text-code);
236
+ line-height: var(--sigvelo-text-code-leading);
227
237
  overflow: visible;
228
238
  }
229
239
 
@@ -234,7 +244,7 @@ button[data-streamdown="link"] {
234
244
  }
235
245
 
236
246
  [data-streamdown="mermaid"] {
237
- width: 100%;
247
+ inline-size: 100%;
238
248
  }
239
249
 
240
250
  /* ---- Tables ---- */
@@ -263,9 +273,9 @@ button[data-streamdown="link"] {
263
273
  }
264
274
 
265
275
  [data-streamdown="table"] {
266
- width: 100%;
276
+ inline-size: 100%;
267
277
  border-collapse: collapse;
268
- font-size: var(--sigvelo-text-sm);
278
+ font-size: var(--sigvelo-text-prose);
269
279
  }
270
280
 
271
281
  [data-streamdown="table-header-cell"],
@@ -296,7 +306,7 @@ button[data-streamdown="link"] {
296
306
  [data-streamdown="table-fullscreen"] > div {
297
307
  display: flex;
298
308
  flex-direction: column;
299
- height: 100%;
309
+ block-size: 100%;
300
310
  }
301
311
 
302
312
  [data-streamdown="table-fullscreen"] > div > div:first-child {
@@ -316,7 +326,7 @@ button[data-streamdown="link"] {
316
326
 
317
327
  [data-streamdown="table-fullscreen"] thead {
318
328
  position: sticky;
319
- top: 0;
329
+ inset-block-start: 0;
320
330
  z-index: 1;
321
331
  background-color: var(--sigvelo-color-surface);
322
332
  }
@@ -342,12 +352,12 @@ button[data-streamdown="link"] {
342
352
  )
343
353
  .absolute {
344
354
  position: absolute;
345
- top: 100%;
346
- right: 0;
355
+ inset-block-start: 100%;
356
+ inset-inline-end: 0;
347
357
  z-index: var(--sigvelo-z-chrome);
348
358
  display: flex;
349
359
  flex-direction: column;
350
- min-width: 7.5rem;
360
+ min-inline-size: 7.5rem;
351
361
  margin-block-start: var(--sigvelo-spacing-1);
352
362
  overflow: hidden;
353
363
  /* Draws its edge from the overlay ring at the same radius as every other
@@ -365,11 +375,11 @@ button[data-streamdown="link"] {
365
375
  .absolute
366
376
  > button {
367
377
  justify-content: flex-start;
368
- width: 100%;
378
+ inline-size: 100%;
369
379
  padding-block: var(--sigvelo-spacing-1-5);
370
380
  padding-inline: var(--sigvelo-spacing-3);
371
381
  border-radius: 0;
372
- font-size: var(--sigvelo-text-sm);
382
+ font-size: var(--sigvelo-text-prose);
373
383
  color: var(--sigvelo-color-text);
374
384
  }
375
385
 
@@ -181,6 +181,7 @@
181
181
  }
182
182
 
183
183
  .tabs--bordered .tabs__panel {
184
+ /* Primitive panel inset, not --sigvelo-layout-stack. */
184
185
  padding: var(--sigvelo-spacing-4);
185
186
  }
186
187