@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.
Files changed (134) hide show
  1. package/dist/{AgentActivity-D2SHSGFX.d.ts → AgentActivity-D3OvrC02.d.ts} +14 -1
  2. package/dist/{AgentChat-C-ZyXbJz.d.ts → AgentChat-Dvkn8lce.d.ts} +23 -0
  3. package/dist/AgentChatStartScreen-CvXJBr4y.d.ts +57 -0
  4. package/dist/{ModelSelector-pecWyOFI.js → ModelSelector-CEd8M9eK.js} +14 -7
  5. package/dist/{ThinkChatActivity-CdbL0aoA.d.ts → ThinkChatActivity-FY1VWXgh.d.ts} +8 -7
  6. package/dist/{ThinkChatActivitySummary-D1xOrNrq.d.ts → ThinkChatActivitySummary-kr5fE0wg.d.ts} +14 -5
  7. package/dist/{ToggleGroup-DNd6cDJZ.d.ts → ToggleGroup-BW1jrhAF.d.ts} +10 -0
  8. package/dist/components/Activity.d.ts +33 -17
  9. package/dist/components/Activity.js +39 -27
  10. package/dist/components/AgentActivity.d.ts +1 -1
  11. package/dist/components/AgentActivityPreview.d.ts +1 -1
  12. package/dist/components/AgentActivityPreview.js +2 -2
  13. package/dist/components/AgentChat.d.ts +1 -1
  14. package/dist/components/AgentChat.js +142 -129
  15. package/dist/components/AgentChatStartScreen.d.ts +2 -0
  16. package/dist/components/AgentChatStartScreen.js +82 -0
  17. package/dist/components/Approval.js +2 -4
  18. package/dist/components/BrowserLiveView.js +5 -7
  19. package/dist/components/BrowserReplay.js +5 -4
  20. package/dist/components/BrowserRunPanel.js +1 -1
  21. package/dist/components/ChatGptSignInScreen.js +1 -1
  22. package/dist/components/Conversation.d.ts +1 -22
  23. package/dist/components/Conversation.js +2 -29
  24. package/dist/components/EmptyState.d.ts +46 -0
  25. package/dist/components/EmptyState.js +50 -0
  26. package/dist/components/Kbd.d.ts +32 -0
  27. package/dist/components/Kbd.js +34 -0
  28. package/dist/components/MessageScroller.js +1 -0
  29. package/dist/components/ModelSelector.d.ts +10 -4
  30. package/dist/components/ModelSelector.js +2 -2
  31. package/dist/components/PricingBillingToggle.js +1 -0
  32. package/dist/components/PromptInput.js +3 -2
  33. package/dist/components/Reasoning.js +1 -1
  34. package/dist/components/StatusPill.d.ts +43 -0
  35. package/dist/components/StatusPill.js +35 -0
  36. package/dist/components/Stepper.js +1 -5
  37. package/dist/components/TestResults.js +15 -15
  38. package/dist/components/ThinkChat.d.ts +9 -3
  39. package/dist/components/ThinkChatActivity.d.ts +2 -2
  40. package/dist/components/ThinkChatActivity.js +27 -15
  41. package/dist/components/ThinkChatActivitySummary.d.ts +2 -2
  42. package/dist/components/ThinkChatActivitySummary.js +69 -66
  43. package/dist/components/ThinkExecutionDetail.js +4 -4
  44. package/dist/components/ThinkExecutionRun.js +2 -2
  45. package/dist/components/ThinkExecutionWorkbench.js +5 -4
  46. package/dist/components/ThinkFullAppViewSwitch.d.ts +1 -1
  47. package/dist/components/ThinkRoutine.js +2 -10
  48. package/dist/components/ThinkRoutineBrowser.js +1 -0
  49. package/dist/components/ThinkRoutineRuns.js +3 -2
  50. package/dist/components/ThinkThreadPicker.js +4 -2
  51. package/dist/components/ToggleGroup.d.ts +1 -1
  52. package/dist/components/ToggleGroup.js +54 -7
  53. package/dist/components/ToolInvocation.js +1 -1
  54. package/dist/styles/accordion.css +2 -1
  55. package/dist/styles/activity-header.css +45 -25
  56. package/dist/styles/activity.css +26 -4
  57. package/dist/styles/agent-activity-preview-overlay.css +51 -12
  58. package/dist/styles/agent-activity-preview.css +34 -33
  59. package/dist/styles/agent-attention.css +9 -16
  60. package/dist/styles/agent-chat.css +199 -0
  61. package/dist/styles/agent-connection.css +10 -10
  62. package/dist/styles/alert-dialog.css +5 -2
  63. package/dist/styles/app-top-bar.css +4 -4
  64. package/dist/styles/approval.css +1 -7
  65. package/dist/styles/artifact.css +5 -5
  66. package/dist/styles/attachment-preview.css +1 -1
  67. package/dist/styles/badge.css +1 -1
  68. package/dist/styles/base-ui-motion.css +1 -1
  69. package/dist/styles/base.css +110 -3
  70. package/dist/styles/browser-control-overlay.css +16 -6
  71. package/dist/styles/browser-live-view.css +5 -38
  72. package/dist/styles/browser-replay.css +4 -8
  73. package/dist/styles/browser-run-panel.css +5 -19
  74. package/dist/styles/button.css +4 -2
  75. package/dist/styles/card.css +4 -4
  76. package/dist/styles/chain-of-thought.css +1 -2
  77. package/dist/styles/chatgpt-sign-in-screen.css +9 -7
  78. package/dist/styles/checkbox-group.css +4 -4
  79. package/dist/styles/code-block.css +9 -9
  80. package/dist/styles/commit.css +1 -1
  81. package/dist/styles/context-menu.css +1 -1
  82. package/dist/styles/conversation.css +7 -42
  83. package/dist/styles/description-list.css +2 -2
  84. package/dist/styles/dialog.css +17 -2
  85. package/dist/styles/empty-state.css +48 -0
  86. package/dist/styles/environment-variables.css +8 -8
  87. package/dist/styles/field.css +2 -2
  88. package/dist/styles/fieldset.css +1 -1
  89. package/dist/styles/file-tree.css +1 -1
  90. package/dist/styles/github-motion-mark.css +1 -1
  91. package/dist/styles/index.css +3 -0
  92. package/dist/styles/inline-citation.css +1 -1
  93. package/dist/styles/kbd.css +40 -0
  94. package/dist/styles/label.css +1 -1
  95. package/dist/styles/mcp-server-picker.css +1 -1
  96. package/dist/styles/media-preview-card.css +5 -3
  97. package/dist/styles/menu.css +1 -1
  98. package/dist/styles/message-scroller.css +7 -25
  99. package/dist/styles/message.css +5 -7
  100. package/dist/styles/model-selector.css +5 -8
  101. package/dist/styles/plan.css +1 -1
  102. package/dist/styles/popover.css +1 -1
  103. package/dist/styles/preview-card.css +1 -1
  104. package/dist/styles/pricing-page.css +37 -35
  105. package/dist/styles/prompt-input.css +19 -41
  106. package/dist/styles/queue.css +3 -3
  107. package/dist/styles/recipes.css +92 -9
  108. package/dist/styles/resizable-side-panel.css +1 -1
  109. package/dist/styles/responsive-sidebar-shell.css +5 -6
  110. package/dist/styles/scrollbars.css +32 -3
  111. package/dist/styles/sources.css +2 -2
  112. package/dist/styles/status-pill.css +39 -0
  113. package/dist/styles/stepper.css +2 -2
  114. package/dist/styles/streamdown.css +39 -35
  115. package/dist/styles/subagent-run.css +3 -3
  116. package/dist/styles/switch.css +1 -3
  117. package/dist/styles/tabs.css +1 -1
  118. package/dist/styles/task.css +2 -2
  119. package/dist/styles/terminal.css +6 -6
  120. package/dist/styles/test-results.css +2 -3
  121. package/dist/styles/textarea.css +1 -1
  122. package/dist/styles/theme-mode-control.css +3 -4
  123. package/dist/styles/think-execution-status.css +4 -23
  124. package/dist/styles/think-execution-workbench.css +3 -4
  125. package/dist/styles/think-full-app.css +3 -3
  126. package/dist/styles/think-routine-library.css +22 -24
  127. package/dist/styles/think-thread-picker.css +20 -47
  128. package/dist/styles/toast.css +2 -2
  129. package/dist/styles/toggle-group.css +76 -3
  130. package/dist/styles/tooltip.css +1 -2
  131. package/dist/styles/utilities.css +73 -0
  132. package/dist/styles/web-preview.css +4 -4
  133. package/dist/styles/workspace-explorer.css +6 -8
  134. package/package.json +2 -2
@@ -17,7 +17,7 @@
17
17
  }
18
18
 
19
19
  .preview-card__backdrop {
20
- z-index: 50;
20
+ z-index: var(--sigvelo-z-overlay);
21
21
  }
22
22
 
23
23
  .preview-card__popup {
@@ -3,7 +3,8 @@
3
3
  width: 100%;
4
4
  max-width: 1200px;
5
5
  margin: 0 auto;
6
- padding: clamp(1rem, 4%, 3rem) clamp(0.75rem, 3%, 1.5rem);
6
+ padding: clamp(var(--sigvelo-spacing-4), 4%, var(--sigvelo-spacing-12))
7
+ clamp(var(--sigvelo-spacing-3), 3%, var(--sigvelo-spacing-6));
7
8
  container-type: inline-size;
8
9
  }
9
10
 
@@ -11,13 +12,13 @@
11
12
 
12
13
  .pricing-page__header {
13
14
  text-align: center;
14
- margin-bottom: 3rem;
15
+ margin-bottom: var(--sigvelo-spacing-12);
15
16
  }
16
17
 
17
18
  .pricing-page__title {
18
19
  font-family: inherit;
19
20
  font-size: 2.5rem;
20
- font-weight: 700;
21
+ font-weight: var(--sigvelo-font-weight-bold);
21
22
  line-height: var(--sigvelo-leading-tight);
22
23
  color: var(--sigvelo-color-text);
23
24
  margin: 0 0 var(--sigvelo-spacing-3);
@@ -27,20 +28,20 @@
27
28
  font-family: inherit;
28
29
  font-size: var(--sigvelo-text-lg);
29
30
  color: var(--sigvelo-color-text-muted);
30
- margin: 0 0 2rem;
31
+ margin: 0 0 var(--sigvelo-spacing-8);
31
32
  }
32
33
 
33
34
  .pricing-page__billing-toggle {
34
35
  display: flex;
35
36
  flex-direction: column;
36
37
  align-items: center;
37
- gap: 1rem;
38
+ gap: var(--sigvelo-spacing-4);
38
39
  }
39
40
 
40
41
  .pricing-page__toggle-options {
41
42
  display: flex;
42
43
  align-items: center;
43
- gap: 0.5rem;
44
+ gap: var(--sigvelo-spacing-2);
44
45
  }
45
46
 
46
47
  .pricing-page__toggle-label {
@@ -74,15 +75,15 @@
74
75
  .pricing-page__plans {
75
76
  display: grid;
76
77
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
77
- gap: 1.5rem;
78
- margin-bottom: 3rem;
78
+ gap: var(--sigvelo-spacing-6);
79
+ margin-bottom: var(--sigvelo-spacing-12);
79
80
  }
80
81
 
81
82
  .pricing-page__plan {
82
83
  position: relative;
83
84
  display: flex;
84
85
  flex-direction: column;
85
- padding: 1.5rem;
86
+ padding: var(--sigvelo-spacing-6);
86
87
  }
87
88
 
88
89
  .pricing-page__plan[data-popular] {
@@ -100,7 +101,7 @@
100
101
  }
101
102
 
102
103
  .pricing-page__plan-header {
103
- margin-bottom: 1.5rem;
104
+ margin-bottom: var(--sigvelo-spacing-6);
104
105
  }
105
106
 
106
107
  .pricing-page__plan-name {
@@ -108,7 +109,7 @@
108
109
  font-size: var(--sigvelo-text-xl);
109
110
  font-weight: 600;
110
111
  color: var(--sigvelo-color-text);
111
- margin: 0 0 0.25rem;
112
+ margin: 0 0 var(--sigvelo-spacing-1);
112
113
  }
113
114
 
114
115
  .pricing-page__plan-description {
@@ -119,13 +120,13 @@
119
120
  }
120
121
 
121
122
  .pricing-page__plan-price {
122
- margin-bottom: 1.5rem;
123
+ margin-bottom: var(--sigvelo-spacing-6);
123
124
  }
124
125
 
125
126
  .pricing-page__price-amount {
126
127
  font-family: inherit;
127
128
  font-size: 2.5rem;
128
- font-weight: 700;
129
+ font-weight: var(--sigvelo-font-weight-bold);
129
130
  font-variant-numeric: tabular-nums;
130
131
  color: var(--sigvelo-color-text);
131
132
  }
@@ -140,9 +141,9 @@
140
141
  display: block;
141
142
  font-family: inherit;
142
143
  font-size: var(--sigvelo-text-xs);
143
- font-weight: 500;
144
+ font-weight: var(--sigvelo-font-weight-semibold);
144
145
  color: var(--sigvelo-color-success-bg);
145
- margin-top: 0.25rem;
146
+ margin-top: var(--sigvelo-spacing-1);
146
147
  }
147
148
 
148
149
  .pricing-page__plan-cta {
@@ -150,7 +151,7 @@
150
151
  }
151
152
 
152
153
  .pricing-page__features-separator {
153
- margin: 1.5rem 0;
154
+ margin: var(--sigvelo-spacing-6) 0;
154
155
  }
155
156
 
156
157
  .pricing-page__features {
@@ -164,7 +165,7 @@
164
165
  display: flex;
165
166
  align-items: flex-start;
166
167
  gap: var(--sigvelo-spacing-3);
167
- padding: 0.5rem 0;
168
+ padding: var(--sigvelo-spacing-2) 0;
168
169
  font-family: inherit;
169
170
  font-size: var(--sigvelo-text-sm);
170
171
  color: var(--sigvelo-color-text);
@@ -196,15 +197,15 @@
196
197
  .pricing-page__feature-limit {
197
198
  font-size: var(--sigvelo-text-xs);
198
199
  color: var(--sigvelo-color-text-muted);
199
- margin-left: 0.25rem;
200
+ margin-left: var(--sigvelo-spacing-1);
200
201
  }
201
202
 
202
203
  /* Calculator */
203
204
 
204
205
  .pricing-page__calculator {
205
206
  max-width: 600px;
206
- margin: 0 auto 3rem;
207
- padding: 2rem;
207
+ margin: 0 auto var(--sigvelo-spacing-12);
208
+ padding: var(--sigvelo-spacing-8);
208
209
  }
209
210
 
210
211
  .pricing-page__calculator-title {
@@ -212,22 +213,22 @@
212
213
  font-size: var(--sigvelo-text-xl);
213
214
  font-weight: 600;
214
215
  color: var(--sigvelo-color-text);
215
- margin: 0 0 0.5rem;
216
+ margin: 0 0 var(--sigvelo-spacing-2);
216
217
  }
217
218
 
218
219
  .pricing-page__calculator-description {
219
220
  font-family: inherit;
220
221
  font-size: var(--sigvelo-text-sm);
221
222
  color: var(--sigvelo-color-text-muted);
222
- margin: 0 0 1.5rem;
223
+ margin: 0 0 var(--sigvelo-spacing-6);
223
224
  }
224
225
 
225
226
  .pricing-page__calculator-slider {
226
- margin-bottom: 0.5rem;
227
+ margin-bottom: var(--sigvelo-spacing-2);
227
228
  }
228
229
 
229
230
  .pricing-page__calculator-separator {
230
- margin-block: 1.5rem;
231
+ margin-block: var(--sigvelo-spacing-6);
231
232
  }
232
233
 
233
234
  .pricing-page__calculator-labels {
@@ -248,7 +249,7 @@
248
249
  .pricing-page__calculator-range {
249
250
  display: flex;
250
251
  justify-content: space-between;
251
- margin-top: 0.5rem;
252
+ margin-top: var(--sigvelo-spacing-2);
252
253
  font-family: inherit;
253
254
  font-size: var(--sigvelo-text-xs);
254
255
  color: var(--sigvelo-color-text-muted);
@@ -258,7 +259,7 @@
258
259
  display: flex;
259
260
  justify-content: space-between;
260
261
  align-items: baseline;
261
- margin-bottom: 1.5rem;
262
+ margin-bottom: var(--sigvelo-spacing-6);
262
263
  }
263
264
 
264
265
  .pricing-page__calculator-result-label {
@@ -274,7 +275,7 @@
274
275
  .pricing-page__calculator-amount {
275
276
  font-family: inherit;
276
277
  font-size: 2rem;
277
- font-weight: 700;
278
+ font-weight: var(--sigvelo-font-weight-bold);
278
279
  font-variant-numeric: tabular-nums;
279
280
  color: var(--sigvelo-color-text);
280
281
  }
@@ -288,7 +289,7 @@
288
289
  .pricing-page__tiers {
289
290
  display: flex;
290
291
  flex-direction: column;
291
- gap: 1rem;
292
+ gap: var(--sigvelo-spacing-4);
292
293
  }
293
294
 
294
295
  .pricing-page__tier {
@@ -309,7 +310,7 @@
309
310
  }
310
311
 
311
312
  .pricing-page__tier-price {
312
- font-weight: 500;
313
+ font-weight: var(--sigvelo-font-weight-semibold);
313
314
  font-variant-numeric: tabular-nums;
314
315
  color: var(--sigvelo-color-text-muted);
315
316
  }
@@ -327,18 +328,19 @@
327
328
  font-weight: 600;
328
329
  color: var(--sigvelo-color-text);
329
330
  text-align: center;
330
- margin: 0 0 2rem;
331
+ margin: 0 0 var(--sigvelo-spacing-8);
331
332
  }
332
333
 
333
334
  .pricing-page__faq-accordion {
334
- border-top: 1px solid var(--sigvelo-color-neutral-border-muted);
335
+ border-top: var(--sigvelo-border-style) var(--sigvelo-border-width)
336
+ var(--sigvelo-color-neutral-border-muted);
335
337
  }
336
338
 
337
339
  /* Confirmation Dialog */
338
340
 
339
341
  .pricing-page__confirm-summary {
340
- padding: 1rem;
341
- margin-bottom: 1rem;
342
+ padding: var(--sigvelo-spacing-4);
343
+ margin-bottom: var(--sigvelo-spacing-4);
342
344
  background-color: var(--sigvelo-color-neutral-bg-subtle);
343
345
  border-radius: var(--sigvelo-radius-md);
344
346
  }
@@ -349,12 +351,12 @@
349
351
  font-family: inherit;
350
352
  font-size: var(--sigvelo-text-sm);
351
353
  color: var(--sigvelo-color-text);
352
- padding: 0.25rem 0;
354
+ padding: var(--sigvelo-spacing-1) 0;
353
355
  }
354
356
 
355
357
  .pricing-page__confirm-row[data-savings] {
356
358
  color: var(--sigvelo-color-success-bg);
357
- font-weight: 500;
359
+ font-weight: var(--sigvelo-font-weight-semibold);
358
360
  }
359
361
 
360
362
  .pricing-page__confirm-actions {
@@ -8,17 +8,17 @@
8
8
  gap: var(--sigvelo-density-compact-control-gap);
9
9
  padding-block: var(--sigvelo-spacing-2);
10
10
  padding-inline: var(--sigvelo-density-compact-control-padding-inline);
11
- background-color: var(--sigvelo-color-surface);
12
- /* Fields keep their border; hairline + soft shadow for the floating-composer look */
13
- border: var(--sigvelo-border-style) var(--sigvelo-border-width)
14
- var(--sigvelo-color-neutral-border-subtle);
11
+ background-color: var(--sigvelo-color-surface-raised);
12
+ /* The composer's edge is the hairline ring inside --sigvelo-elevation-floating,
13
+ not a border: a 0.5px ring stays crisp at any zoom and does not add a pixel
14
+ of layout. Forced colors restores a real border at the end of this file. */
15
+ border: 0;
15
16
  border-radius: calc(var(--sigvelo-radius-xl) + var(--sigvelo-spacing-2));
16
- box-shadow: var(--sigvelo-shadow-sm);
17
+ box-shadow: var(--sigvelo-elevation-floating);
17
18
  font-family: inherit;
18
19
  color: var(--sigvelo-color-text);
19
- transition:
20
- border-color var(--sigvelo-motion-duration-interaction) var(--sigvelo-motion-ease-change),
21
- box-shadow var(--sigvelo-motion-duration-interaction) var(--sigvelo-motion-ease-change);
20
+ transition: box-shadow var(--sigvelo-motion-duration-interaction)
21
+ var(--sigvelo-motion-ease-change);
22
22
  }
23
23
 
24
24
  .prompt-input__recording {
@@ -82,8 +82,7 @@
82
82
 
83
83
  /* Keep keyboard focus visible around the complete composer surface. */
84
84
  .prompt-input:focus-within {
85
- border-color: var(--sigvelo-color-focus);
86
- box-shadow: var(--sigvelo-recipe-focus-shadow-subtle);
85
+ box-shadow: var(--sigvelo-recipe-focus-shadow-subtle), var(--sigvelo-elevation-floating);
87
86
  }
88
87
 
89
88
  .prompt-input__header {
@@ -165,9 +164,13 @@
165
164
  background-color: color-mix(in oklab, transparent, var(--sigvelo-color-text) 8%);
166
165
  }
167
166
 
167
+ /* Absorbs any height the composer is given beyond its content, so a tall
168
+ composer grows its typing area and keeps the footer controls on the floor
169
+ instead of stranding them mid-box. */
168
170
  .prompt-input__body {
169
171
  display: flex;
170
172
  align-items: stretch;
173
+ flex: 1 1 auto;
171
174
  flex-wrap: wrap;
172
175
  gap: var(--sigvelo-spacing-1);
173
176
  inline-size: 100%;
@@ -276,10 +279,6 @@
276
279
  content: "";
277
280
  }
278
281
 
279
- .prompt-input__dictation[data-starting] .prompt-input__dictation-icon {
280
- animation: sigvelo-icon-spin 900ms linear infinite;
281
- }
282
-
283
282
  @media (prefers-reduced-motion: reduce) {
284
283
  .prompt-input__dictation[data-listening] .prompt-input__dictation-icon::before {
285
284
  transition: none;
@@ -295,19 +294,10 @@
295
294
  display: inline-block;
296
295
  }
297
296
 
297
+ /* Spacing only. The chip itself is .kbd, which derives from currentColor and
298
+ so already reads correctly against the tooltip's inverted surface. */
298
299
  .prompt-input__tooltip-shortcut {
299
- display: inline-flex;
300
- align-items: center;
301
- justify-content: center;
302
300
  margin-inline-start: var(--sigvelo-spacing-2);
303
- padding-block: 0.0625rem;
304
- padding-inline: var(--sigvelo-spacing-1);
305
- border: var(--sigvelo-border-width) solid color-mix(in oklab, currentColor, transparent 75%);
306
- border-radius: var(--sigvelo-radius-sm);
307
- font-family: var(--sigvelo-font-mono);
308
- font-size: 0.75em;
309
- font-weight: var(--sigvelo-font-weight-semibold);
310
- opacity: 0.85;
311
301
  }
312
302
 
313
303
  .prompt-input__submit {
@@ -321,10 +311,6 @@
321
311
  color: var(--sigvelo-color-text);
322
312
  }
323
313
 
324
- .prompt-input__submit-spinner {
325
- animation: sigvelo-icon-spin 900ms linear infinite;
326
- }
327
-
328
314
  .prompt-input__action-menu {
329
315
  min-inline-size: 12rem;
330
316
  }
@@ -475,17 +461,15 @@
475
461
 
476
462
  .prompt-input__hover-card-content {
477
463
  position: absolute;
478
- z-index: 20;
464
+ z-index: var(--sigvelo-z-chrome);
479
465
  inset-block-start: calc(100% + var(--sigvelo-spacing-1-5));
480
466
  inset-inline-start: 0;
481
467
  min-inline-size: 14rem;
482
468
  padding: var(--sigvelo-spacing-3);
483
469
  color: var(--sigvelo-color-text);
484
- background-color: var(--sigvelo-color-surface);
485
- border: var(--sigvelo-border-style) var(--sigvelo-border-width)
486
- var(--sigvelo-color-neutral-border-subtle);
470
+ background-color: var(--sigvelo-color-surface-raised);
487
471
  border-radius: var(--sigvelo-radius-md);
488
- box-shadow: var(--sigvelo-shadow-md);
472
+ box-shadow: var(--sigvelo-elevation-overlay);
489
473
  }
490
474
 
491
475
  .prompt-input__tab-label {
@@ -651,15 +635,9 @@
651
635
  margin-inline-start: auto;
652
636
  }
653
637
 
654
- @media (prefers-reduced-motion: reduce) {
655
- .prompt-input__submit-spinner {
656
- animation: none;
657
- }
658
- }
659
-
660
638
  @media (forced-colors: active) {
661
639
  .prompt-input {
662
- border: 1px solid CanvasText;
640
+ border: var(--sigvelo-border-style) var(--sigvelo-border-width) CanvasText;
663
641
  }
664
642
 
665
643
  .prompt-input:focus-within {
@@ -142,7 +142,7 @@
142
142
  gap: var(--sigvelo-spacing-1);
143
143
  font-size: var(--sigvelo-text-sm);
144
144
  color: var(--sigvelo-color-text);
145
- line-height: 1.4;
145
+ line-height: var(--sigvelo-leading-snug);
146
146
  transition:
147
147
  color var(--sigvelo-motion-duration-interaction) var(--sigvelo-motion-ease-change),
148
148
  text-decoration-color var(--sigvelo-motion-duration-interaction)
@@ -153,7 +153,7 @@
153
153
  margin: 0;
154
154
  font-size: var(--sigvelo-text-xs);
155
155
  color: var(--sigvelo-color-text-muted);
156
- line-height: 1.4;
156
+ line-height: var(--sigvelo-leading-snug);
157
157
  transition:
158
158
  color var(--sigvelo-motion-duration-interaction) var(--sigvelo-motion-ease-change),
159
159
  text-decoration-color var(--sigvelo-motion-duration-interaction)
@@ -233,7 +233,7 @@
233
233
 
234
234
  @media (forced-colors: active) {
235
235
  .queue__item-file {
236
- border: 1px solid CanvasText;
236
+ border: var(--sigvelo-border-style) var(--sigvelo-border-width) CanvasText;
237
237
  }
238
238
 
239
239
  .queue__section-trigger:focus-visible {
@@ -8,6 +8,7 @@
8
8
  --sigvelo-recipe-control-padding-inline: var(--sigvelo-density-compact-control-padding-inline);
9
9
  --sigvelo-recipe-control-gap: var(--sigvelo-density-compact-control-gap);
10
10
  --sigvelo-recipe-control-font-size: var(--sigvelo-density-compact-control-font-size);
11
+ --sigvelo-recipe-control-line-height: var(--sigvelo-density-compact-control-line-height);
11
12
  --sigvelo-recipe-control-icon-size: var(--sigvelo-density-compact-control-icon-size);
12
13
  --sigvelo-recipe-control-radius: var(--sigvelo-radius-md);
13
14
  --sigvelo-recipe-field-background: var(--sigvelo-color-canvas);
@@ -20,11 +21,17 @@
20
21
  --sigvelo-recipe-invalid-focus-shadow:
21
22
  0 0 0 2px var(--sigvelo-color-canvas),
22
23
  0 0 0 4px color-mix(in oklab, var(--sigvelo-color-danger-bg), transparent 80%);
24
+ /* The same ring drawn inward, for elements that fill their container and
25
+ have no room outside to grow one: menu items, tab panels, listbox rows. */
26
+ --sigvelo-recipe-focus-shadow-inset: inset 0 0 0 var(--sigvelo-focus-width)
27
+ var(--sigvelo-color-focus);
23
28
  --sigvelo-recipe-disabled-opacity: 0.5;
24
- --sigvelo-recipe-surface-background: var(--sigvelo-color-surface);
25
- --sigvelo-recipe-surface-border: var(--sigvelo-color-neutral-border-muted);
26
- --sigvelo-recipe-surface-radius: var(--sigvelo-radius-md);
27
- --sigvelo-recipe-surface-shadow: var(--sigvelo-shadow-lg);
29
+ --sigvelo-recipe-surface-background: var(--sigvelo-color-surface-raised);
30
+ /* The overlay elevation carries its own hairline ring, so the border is a
31
+ forced-colors affordance rather than the visible edge. */
32
+ --sigvelo-recipe-surface-border: transparent;
33
+ --sigvelo-recipe-surface-radius: var(--sigvelo-radius-lg);
34
+ --sigvelo-recipe-surface-shadow: var(--sigvelo-elevation-overlay);
28
35
  --sigvelo-recipe-surface-padding: var(--sigvelo-spacing-1);
29
36
  --sigvelo-recipe-popup-min-inline-size: 10rem;
30
37
  --sigvelo-recipe-popup-arrow-size: var(--sigvelo-spacing-3);
@@ -33,7 +40,8 @@
33
40
  --sigvelo-recipe-row-padding-inline: var(--sigvelo-density-compact-control-padding-inline);
34
41
  --sigvelo-recipe-row-gap: var(--sigvelo-density-compact-control-gap);
35
42
  --sigvelo-recipe-row-font-size: var(--sigvelo-density-compact-control-font-size);
36
- --sigvelo-recipe-row-radius: var(--sigvelo-radius-sm);
43
+ --sigvelo-recipe-row-line-height: var(--sigvelo-density-compact-control-line-height);
44
+ --sigvelo-recipe-row-radius: var(--sigvelo-radius-md);
37
45
  --sigvelo-recipe-group-label-padding-block: var(--sigvelo-spacing-1-5);
38
46
  --sigvelo-recipe-group-label-padding-inline: var(--sigvelo-recipe-row-padding-inline);
39
47
  --sigvelo-recipe-group-label-color: var(--sigvelo-color-text-muted);
@@ -46,6 +54,7 @@
46
54
  --sigvelo-recipe-control-height: var(--sigvelo-control-height-sm);
47
55
  --sigvelo-recipe-control-padding-inline: var(--sigvelo-control-padding-inline-sm);
48
56
  --sigvelo-recipe-control-font-size: var(--sigvelo-control-text-sm);
57
+ --sigvelo-recipe-control-line-height: var(--sigvelo-control-line-height-sm);
49
58
  --sigvelo-recipe-control-icon-size: var(--sigvelo-control-icon-size-sm);
50
59
  }
51
60
 
@@ -53,6 +62,7 @@
53
62
  --sigvelo-recipe-control-height: var(--sigvelo-control-height-md);
54
63
  --sigvelo-recipe-control-padding-inline: var(--sigvelo-control-padding-inline-md);
55
64
  --sigvelo-recipe-control-font-size: var(--sigvelo-control-text-md);
65
+ --sigvelo-recipe-control-line-height: var(--sigvelo-control-line-height-md);
56
66
  --sigvelo-recipe-control-icon-size: var(--sigvelo-control-icon-size-md);
57
67
  }
58
68
 
@@ -60,6 +70,7 @@
60
70
  --sigvelo-recipe-control-height: var(--sigvelo-control-height-lg);
61
71
  --sigvelo-recipe-control-padding-inline: var(--sigvelo-control-padding-inline-lg);
62
72
  --sigvelo-recipe-control-font-size: var(--sigvelo-control-text-lg);
73
+ --sigvelo-recipe-control-line-height: var(--sigvelo-control-line-height-lg);
63
74
  --sigvelo-recipe-control-icon-size: var(--sigvelo-control-icon-size-lg);
64
75
  }
65
76
 
@@ -97,13 +108,14 @@
97
108
  */
98
109
  :where([data-recipe~="composer-command-surface"]) {
99
110
  --sigvelo-recipe-surface-radius: var(--sigvelo-radius-xl);
100
- --sigvelo-recipe-surface-shadow: var(--sigvelo-shadow-xl);
111
+ --sigvelo-recipe-surface-shadow: var(--sigvelo-elevation-overlay);
101
112
  --sigvelo-recipe-surface-padding: var(--sigvelo-spacing-1);
102
113
  --sigvelo-recipe-row-min-height: var(--sigvelo-density-compact-control-height);
103
114
  --sigvelo-recipe-row-padding-block: var(--sigvelo-spacing-1);
104
115
  --sigvelo-recipe-row-padding-inline: var(--sigvelo-density-compact-control-padding-inline);
105
116
  --sigvelo-recipe-row-gap: var(--sigvelo-density-compact-control-gap);
106
117
  --sigvelo-recipe-row-font-size: var(--sigvelo-density-compact-control-font-size);
118
+ --sigvelo-recipe-row-line-height: var(--sigvelo-density-compact-control-line-height);
107
119
  --sigvelo-recipe-row-radius: var(--sigvelo-radius-md);
108
120
  --sigvelo-recipe-group-label-padding-block: var(--sigvelo-spacing-2);
109
121
  --sigvelo-recipe-group-label-padding-inline: var(
@@ -146,6 +158,71 @@
146
158
  color: var(--sigvelo-color-text);
147
159
  }
148
160
 
161
+ /* Reveal scrollability by fading the top/bottom edges. Owns only the mask
162
+ structure; each scroller drives --sigvelo-scroll-fade-start/end (default 0px)
163
+ from its own overflow signal. */
164
+ :where([data-recipe~="scroll-fade-y"]) {
165
+ --sigvelo-scroll-fade-start: 0px;
166
+ --sigvelo-scroll-fade-end: 0px;
167
+ -webkit-mask-image: linear-gradient(
168
+ to bottom,
169
+ transparent 0,
170
+ #000 var(--sigvelo-scroll-fade-start),
171
+ #000 calc(100% - var(--sigvelo-scroll-fade-end)),
172
+ transparent 100%
173
+ );
174
+ mask-image: linear-gradient(
175
+ to bottom,
176
+ transparent 0,
177
+ #000 var(--sigvelo-scroll-fade-start),
178
+ #000 calc(100% - var(--sigvelo-scroll-fade-end)),
179
+ transparent 100%
180
+ );
181
+ -webkit-mask-repeat: no-repeat;
182
+ mask-repeat: no-repeat;
183
+ }
184
+
185
+ /* The inline-axis partner, for toolbars, tab strips, and chip rows that scroll
186
+ sideways. Gradients take physical directions only, so start/end are swapped
187
+ under [dir="rtl"] rather than expressed logically. */
188
+ :where([data-recipe~="scroll-fade-x"]) {
189
+ --sigvelo-scroll-fade-start: 0px;
190
+ --sigvelo-scroll-fade-end: 0px;
191
+ -webkit-mask-image: linear-gradient(
192
+ to right,
193
+ transparent 0,
194
+ #000 var(--sigvelo-scroll-fade-start),
195
+ #000 calc(100% - var(--sigvelo-scroll-fade-end)),
196
+ transparent 100%
197
+ );
198
+ mask-image: linear-gradient(
199
+ to right,
200
+ transparent 0,
201
+ #000 var(--sigvelo-scroll-fade-start),
202
+ #000 calc(100% - var(--sigvelo-scroll-fade-end)),
203
+ transparent 100%
204
+ );
205
+ -webkit-mask-repeat: no-repeat;
206
+ mask-repeat: no-repeat;
207
+ }
208
+
209
+ :where([dir="rtl"] [data-recipe~="scroll-fade-x"], [data-recipe~="scroll-fade-x"][dir="rtl"]) {
210
+ -webkit-mask-image: linear-gradient(
211
+ to left,
212
+ transparent 0,
213
+ #000 var(--sigvelo-scroll-fade-start),
214
+ #000 calc(100% - var(--sigvelo-scroll-fade-end)),
215
+ transparent 100%
216
+ );
217
+ mask-image: linear-gradient(
218
+ to left,
219
+ transparent 0,
220
+ #000 var(--sigvelo-scroll-fade-start),
221
+ #000 calc(100% - var(--sigvelo-scroll-fade-end)),
222
+ transparent 100%
223
+ );
224
+ }
225
+
149
226
  @media (any-pointer: coarse) {
150
227
  :where(:root, [data-theme="light"], [data-theme="dark"]) {
151
228
  --sigvelo-recipe-row-min-height: var(--sigvelo-control-height-xl);
@@ -184,7 +261,7 @@
184
261
  padding-inline: var(--sigvelo-recipe-control-padding-inline);
185
262
  font-family: inherit;
186
263
  font-size: var(--sigvelo-recipe-control-font-size);
187
- line-height: var(--sigvelo-leading-compact);
264
+ line-height: var(--sigvelo-recipe-control-line-height);
188
265
  color: var(--sigvelo-color-text);
189
266
  background-color: var(--sigvelo-recipe-field-background);
190
267
  border: var(--sigvelo-border-style) var(--sigvelo-border-width) var(--sigvelo-recipe-field-border);
@@ -331,7 +408,7 @@
331
408
  padding-inline: var(--sigvelo-recipe-row-padding-inline);
332
409
  font-family: inherit;
333
410
  font-size: var(--sigvelo-recipe-row-font-size);
334
- line-height: var(--sigvelo-leading-compact);
411
+ line-height: var(--sigvelo-recipe-row-line-height);
335
412
  color: var(--sigvelo-color-text);
336
413
  text-decoration: none;
337
414
  border-radius: var(--sigvelo-recipe-row-radius);
@@ -496,7 +573,7 @@
496
573
  font-family: inherit;
497
574
  font-size: var(--sigvelo-recipe-control-font-size);
498
575
  font-weight: var(--sigvelo-font-weight-semibold);
499
- line-height: var(--sigvelo-leading-compact);
576
+ line-height: var(--sigvelo-recipe-control-line-height);
500
577
  color: var(--sigvelo-color-text);
501
578
  background-color: var(--sigvelo-color-canvas);
502
579
  border: var(--sigvelo-border-style) var(--sigvelo-border-width)
@@ -731,6 +808,12 @@
731
808
  }
732
809
 
733
810
  @media (forced-colors: active) {
811
+ /* Forced colors drops box-shadow, taking the hairline ring that normally
812
+ draws an overlay's edge with it. Give the border back its color. */
813
+ :where(:root, [data-theme="light"], [data-theme="dark"]) {
814
+ --sigvelo-recipe-surface-border: CanvasText;
815
+ }
816
+
734
817
  :where(
735
818
  [data-slot="input"],
736
819
  [data-slot="select-trigger"],
@@ -7,7 +7,7 @@
7
7
  .resizable-side-panel__handle {
8
8
  position: absolute;
9
9
  inset-block: 0;
10
- z-index: 25;
10
+ z-index: var(--sigvelo-z-panel);
11
11
  inline-size: var(--sigvelo-spacing-6);
12
12
  padding: 0;
13
13
  border: 0;
@@ -57,7 +57,7 @@
57
57
  }
58
58
 
59
59
  .responsive-sidebar-shell__resizer {
60
- z-index: 25;
60
+ z-index: var(--sigvelo-z-panel);
61
61
  }
62
62
 
63
63
  .responsive-sidebar-shell[data-sidebar-open="false"] > .responsive-sidebar-shell__frame {
@@ -94,7 +94,7 @@
94
94
 
95
95
  .responsive-sidebar-shell__sidebar {
96
96
  position: relative;
97
- z-index: 23;
97
+ z-index: calc(var(--sigvelo-z-chrome) + 3);
98
98
  inset-inline-start: 50%;
99
99
  inline-size: min(calc(100cqi - var(--sigvelo-spacing-3)), 34rem);
100
100
  max-inline-size: none;
@@ -103,10 +103,9 @@
103
103
  align-self: start;
104
104
  margin-block-start: var(--sigvelo-spacing-1);
105
105
  overflow: hidden;
106
- border: var(--sigvelo-border-style) var(--sigvelo-border-width)
107
- var(--sigvelo-color-neutral-border-subtle);
108
106
  border-radius: var(--sigvelo-radius-lg);
109
- box-shadow: var(--sigvelo-shadow-md);
107
+ background-color: var(--sigvelo-color-surface-raised);
108
+ box-shadow: var(--sigvelo-elevation-overlay);
110
109
  visibility: visible;
111
110
  opacity: 1;
112
111
  translate: -50% 0;
@@ -149,7 +148,7 @@
149
148
  position: absolute;
150
149
  inset-block: 0;
151
150
  inset-inline: 0;
152
- z-index: 22;
151
+ z-index: calc(var(--sigvelo-z-chrome) + 2);
153
152
  display: block;
154
153
  min-inline-size: 100%;
155
154
  padding: 0;