@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
@@ -1,12 +1,41 @@
1
- :where(.message__content pre, .observability-table-wrap) {
1
+ /*
2
+ * Thin scrollbars on every scroll container the system owns.
3
+ *
4
+ * A default platform scrollbar inside a 15px-radius popup is the single
5
+ * loudest thing on the screen, so menus, lists, panels, and code blocks all
6
+ * take the same quiet treatment: thin, colored from the neutral ramp, and
7
+ * gutter-stable where a scrollbar appearing would otherwise shift text.
8
+ *
9
+ * Only containers that actually scroll are listed. Adding one means adding it
10
+ * here, not restating scrollbar-color in the component file.
11
+ */
12
+ :where(
13
+ .message__content pre,
14
+ .observability-table-wrap,
15
+ [data-recipe~="wide-scroll-picker"],
16
+ [data-slot="autocomplete-list"],
17
+ [data-slot="combobox-list"],
18
+ [data-slot="context-menu-content"],
19
+ [data-slot="dialog-content"],
20
+ [data-slot="dropdown-menu-content"],
21
+ [data-slot="menubar-content"],
22
+ [data-slot="popover-content"],
23
+ [data-slot="select-content"]
24
+ ) {
2
25
  --scrollbar-thumb: var(--app-scrollbar-thumb, var(--sigvelo-color-neutral-border-muted));
3
- --scrollbar-track: var(--app-scrollbar-track, var(--sigvelo-color-neutral-bg-subtle));
26
+ --scrollbar-track: var(--app-scrollbar-track, transparent);
4
27
 
5
28
  scrollbar-color: var(--scrollbar-thumb) var(--scrollbar-track);
6
- scrollbar-gutter: stable;
7
29
  scrollbar-width: thin;
8
30
  }
9
31
 
32
+ /* Reserving the gutter only matters where text would otherwise reflow. */
33
+ :where(.message__content pre, .observability-table-wrap) {
34
+ --scrollbar-track: var(--app-scrollbar-track, var(--sigvelo-color-neutral-bg-subtle));
35
+
36
+ scrollbar-gutter: stable;
37
+ }
38
+
10
39
  :where(.message__content pre) {
11
40
  overflow-x: auto;
12
41
  overflow-y: clip;
@@ -67,7 +67,7 @@
67
67
  .sources__link-description {
68
68
  font-size: var(--sigvelo-text-xs);
69
69
  color: var(--sigvelo-color-text-muted);
70
- line-height: 1.4;
70
+ line-height: var(--sigvelo-leading-snug);
71
71
  overflow: hidden;
72
72
  text-overflow: ellipsis;
73
73
  display: -webkit-box;
@@ -83,7 +83,7 @@
83
83
 
84
84
  @media (forced-colors: active) {
85
85
  .sources__link {
86
- border: 1px solid CanvasText;
86
+ border: var(--sigvelo-border-style) var(--sigvelo-border-width) CanvasText;
87
87
  }
88
88
 
89
89
  .sources__link:focus-visible {
@@ -0,0 +1,39 @@
1
+ /*
2
+ * The chip itself is `.badge`. Only the indicator lives here.
3
+ */
4
+ .status-pill__dot {
5
+ inline-size: var(--sigvelo-spacing-1-5);
6
+ block-size: var(--sigvelo-spacing-1-5);
7
+ flex-shrink: 0;
8
+ border-radius: var(--sigvelo-radius-circle);
9
+ /* currentColor, so the dot follows whichever badge color it was given rather
10
+ than needing a matching set of its own. */
11
+ background-color: currentColor;
12
+ }
13
+
14
+ .status-pill[data-busy] .status-pill__dot {
15
+ animation: sigvelo-status-pulse var(--sigvelo-motion-duration-pulse) ease-in-out infinite;
16
+ }
17
+
18
+ @keyframes sigvelo-status-pulse {
19
+ 0%,
20
+ 100% {
21
+ opacity: 1;
22
+ }
23
+
24
+ 50% {
25
+ opacity: 0.4;
26
+ }
27
+ }
28
+
29
+ /* The dot stays; only its breathing stops. A still dot still reads as a state
30
+ indicator, which is the part carrying meaning. */
31
+ @media (prefers-reduced-motion: reduce) {
32
+ .status-pill[data-busy] .status-pill__dot {
33
+ animation: none;
34
+ }
35
+ }
36
+
37
+ :root[data-motion="reduce"] .status-pill[data-busy] .status-pill__dot {
38
+ animation: none;
39
+ }
@@ -119,7 +119,7 @@
119
119
  }
120
120
 
121
121
  .stepper__indicator[data-loading] .stepper__indicator-content {
122
- animation: sigvelo-icon-spin 800ms linear infinite;
122
+ animation: sigvelo-icon-spin var(--sigvelo-motion-duration-spin) linear infinite;
123
123
  }
124
124
 
125
125
  .stepper__separator {
@@ -170,7 +170,7 @@
170
170
  margin-block-start: calc(var(--sigvelo-spacing-1) - var(--sigvelo-border-width));
171
171
  color: var(--sigvelo-color-text-muted);
172
172
  font-size: var(--sigvelo-text-compact);
173
- line-height: 1.35;
173
+ line-height: var(--sigvelo-leading-snug);
174
174
  }
175
175
 
176
176
  .stepper__panel {
@@ -39,8 +39,8 @@ button[data-streamdown="link"] {
39
39
  }
40
40
 
41
41
  [data-streamdown="inline-code"] {
42
- padding-block: 0.0625rem;
43
- padding-inline: 0.25rem;
42
+ padding-block: 1px;
43
+ padding-inline: var(--sigvelo-spacing-1);
44
44
  border-radius: var(--sigvelo-radius-xs);
45
45
  background-color: var(--sigvelo-color-neutral-bg-subtle);
46
46
  font-family: var(--sigvelo-font-mono);
@@ -62,18 +62,19 @@ button[data-streamdown="link"] {
62
62
  [data-streamdown="heading-5"],
63
63
  [data-streamdown="heading-6"] {
64
64
  margin-block: var(--sigvelo-spacing-3) var(--sigvelo-spacing-1-5);
65
- font-size: 1.125em;
65
+ font-size: var(--sigvelo-text-base);
66
66
  font-weight: var(--sigvelo-font-weight-semibold);
67
- line-height: var(--sigvelo-leading-compact);
67
+ line-height: var(--sigvelo-text-base-leading);
68
68
  }
69
69
 
70
70
  [data-streamdown="heading-1"],
71
71
  [data-streamdown="heading-2"] {
72
- font-size: 1.25em;
72
+ font-size: var(--sigvelo-text-lg);
73
+ line-height: var(--sigvelo-text-lg-leading);
73
74
  }
74
75
 
75
76
  [data-streamdown="blockquote"] {
76
- margin-block: 0.5rem;
77
+ margin-block: var(--sigvelo-spacing-2);
77
78
  padding-inline-start: var(--sigvelo-spacing-3);
78
79
  border-inline-start: 2px solid var(--sigvelo-color-neutral-border-subtle);
79
80
  color: var(--sigvelo-color-text-muted);
@@ -81,8 +82,8 @@ button[data-streamdown="link"] {
81
82
 
82
83
  [data-streamdown="ordered-list"],
83
84
  [data-streamdown="unordered-list"] {
84
- margin-block: 0.25rem;
85
- padding-inline-start: 1.25rem;
85
+ margin-block: var(--sigvelo-spacing-1);
86
+ padding-inline-start: var(--sigvelo-spacing-5);
86
87
  }
87
88
 
88
89
  [data-streamdown="ordered-list"] {
@@ -102,15 +103,16 @@ button[data-streamdown="link"] {
102
103
  }
103
104
 
104
105
  [data-streamdown="horizontal-rule"] {
105
- margin-block: 1rem;
106
+ margin-block: var(--sigvelo-spacing-4);
106
107
  border: 0;
107
- border-block-start: 1px solid var(--sigvelo-color-neutral-border-subtle);
108
+ border-block-start: var(--sigvelo-border-style) var(--sigvelo-border-width)
109
+ var(--sigvelo-color-neutral-border-subtle);
108
110
  }
109
111
 
110
112
  .message__response img {
111
113
  display: inline-block;
112
114
  max-width: 100%;
113
- margin-block: 0.5rem;
115
+ margin-block: var(--sigvelo-spacing-2);
114
116
  border-radius: var(--sigvelo-radius-md);
115
117
  }
116
118
 
@@ -127,7 +129,7 @@ button[data-streamdown="link"] {
127
129
  display: inline-flex;
128
130
  align-items: center;
129
131
  justify-content: center;
130
- padding: 0.25rem;
132
+ padding: var(--sigvelo-spacing-1);
131
133
  border: 0;
132
134
  border-radius: var(--sigvelo-radius-sm);
133
135
  background: transparent;
@@ -163,9 +165,9 @@ button[data-streamdown="link"] {
163
165
  [data-streamdown="mermaid-block"] {
164
166
  display: flex;
165
167
  flex-direction: column;
166
- gap: 0.25rem;
168
+ gap: var(--sigvelo-spacing-1);
167
169
  width: 100%;
168
- margin-block: 0.5rem;
170
+ margin-block: var(--sigvelo-spacing-2);
169
171
  padding: var(--sigvelo-spacing-1-5);
170
172
  border-radius: var(--sigvelo-radius-lg);
171
173
  background-color: var(--sigvelo-color-neutral-bg-subtle);
@@ -175,7 +177,7 @@ button[data-streamdown="link"] {
175
177
  display: flex;
176
178
  align-items: center;
177
179
  min-height: 1.5rem;
178
- padding-inline: 0.5rem;
180
+ padding-inline: var(--sigvelo-spacing-2);
179
181
  font-family: var(--sigvelo-font-mono);
180
182
  font-size: var(--sigvelo-text-xs);
181
183
  text-transform: lowercase;
@@ -202,7 +204,7 @@ button[data-streamdown="link"] {
202
204
  display: flex;
203
205
  flex-shrink: 0;
204
206
  align-items: center;
205
- gap: 0.25rem;
207
+ gap: var(--sigvelo-spacing-1);
206
208
  pointer-events: auto;
207
209
  border-radius: var(--sigvelo-radius-md);
208
210
  background-color: var(--sigvelo-color-neutral-bg-subtle);
@@ -216,12 +218,12 @@ button[data-streamdown="link"] {
216
218
 
217
219
  [data-streamdown="code-block-body"] pre {
218
220
  margin: 0;
219
- padding-block: 0.5rem;
220
- padding-inline: 0.5rem;
221
+ padding-block: var(--sigvelo-spacing-2);
222
+ padding-inline: var(--sigvelo-spacing-2);
221
223
  background-color: transparent;
222
224
  font-family: var(--sigvelo-font-mono);
223
225
  font-size: var(--sigvelo-text-compact);
224
- line-height: 1.55;
226
+ line-height: var(--sigvelo-leading-normal);
225
227
  overflow: visible;
226
228
  }
227
229
 
@@ -240,8 +242,8 @@ button[data-streamdown="link"] {
240
242
  [data-streamdown="table-wrapper"] {
241
243
  display: flex;
242
244
  flex-direction: column;
243
- gap: 0.25rem;
244
- margin-block: 0.5rem;
245
+ gap: var(--sigvelo-spacing-1);
246
+ margin-block: var(--sigvelo-spacing-2);
245
247
  min-inline-size: 0;
246
248
  max-inline-size: 100%;
247
249
  }
@@ -251,7 +253,7 @@ button[data-streamdown="link"] {
251
253
  display: flex;
252
254
  align-items: center;
253
255
  justify-content: flex-end;
254
- gap: 0.25rem;
256
+ gap: var(--sigvelo-spacing-1);
255
257
  }
256
258
 
257
259
  /* Anonymous scroll container around the table. */
@@ -268,9 +270,10 @@ button[data-streamdown="link"] {
268
270
 
269
271
  [data-streamdown="table-header-cell"],
270
272
  [data-streamdown="table-cell"] {
271
- padding-block: 0.25rem;
272
- padding-inline: 0.5rem;
273
- border-block-end: 1px solid var(--sigvelo-color-neutral-border-subtle);
273
+ padding-block: var(--sigvelo-spacing-1);
274
+ padding-inline: var(--sigvelo-spacing-2);
275
+ border-block-end: var(--sigvelo-border-style) var(--sigvelo-border-width)
276
+ var(--sigvelo-color-neutral-border-subtle);
274
277
  text-align: start;
275
278
  vertical-align: top;
276
279
  overflow-wrap: anywhere;
@@ -286,7 +289,7 @@ button[data-streamdown="link"] {
286
289
  [data-streamdown="table-fullscreen"] {
287
290
  position: fixed;
288
291
  inset: 0;
289
- z-index: 50;
292
+ z-index: var(--sigvelo-z-overlay);
290
293
  background-color: var(--sigvelo-color-surface);
291
294
  }
292
295
 
@@ -300,15 +303,15 @@ button[data-streamdown="link"] {
300
303
  display: flex;
301
304
  align-items: center;
302
305
  justify-content: flex-end;
303
- gap: 0.25rem;
306
+ gap: var(--sigvelo-spacing-1);
304
307
  padding: var(--sigvelo-spacing-3);
305
308
  }
306
309
 
307
310
  [data-streamdown="table-fullscreen"] > div > div:last-child {
308
311
  flex: 1;
309
312
  overflow: auto;
310
- padding-block: 0 1rem;
311
- padding-inline: 1rem;
313
+ padding-block: 0 var(--sigvelo-spacing-4);
314
+ padding-inline: var(--sigvelo-spacing-4);
312
315
  }
313
316
 
314
317
  [data-streamdown="table-fullscreen"] thead {
@@ -341,16 +344,17 @@ button[data-streamdown="link"] {
341
344
  position: absolute;
342
345
  top: 100%;
343
346
  right: 0;
344
- z-index: 20;
347
+ z-index: var(--sigvelo-z-chrome);
345
348
  display: flex;
346
349
  flex-direction: column;
347
350
  min-width: 7.5rem;
348
- margin-block-start: 0.25rem;
351
+ margin-block-start: var(--sigvelo-spacing-1);
349
352
  overflow: hidden;
350
- border-radius: var(--sigvelo-radius-md);
351
- border: 1px solid var(--sigvelo-color-neutral-border-subtle);
352
- background-color: var(--sigvelo-color-surface);
353
- box-shadow: var(--sigvelo-shadow-md);
353
+ /* Draws its edge from the overlay ring at the same radius as every other
354
+ popup in the system, rather than from a 1px border of its own. */
355
+ border-radius: var(--sigvelo-radius-lg);
356
+ background-color: var(--sigvelo-color-surface-raised);
357
+ box-shadow: var(--sigvelo-elevation-overlay);
354
358
  }
355
359
 
356
360
  :is(
@@ -38,7 +38,7 @@
38
38
  .subagent-run__tray-label {
39
39
  color: var(--sigvelo-color-text-muted);
40
40
  font-size: var(--sigvelo-text-xs);
41
- line-height: 1.4;
41
+ line-height: var(--sigvelo-leading-snug);
42
42
  }
43
43
 
44
44
  .subagent-run__title {
@@ -57,8 +57,8 @@
57
57
  flex: 0 0 auto;
58
58
  align-items: center;
59
59
  justify-content: center;
60
- inline-size: 1rem;
61
- block-size: 1rem;
60
+ inline-size: var(--sigvelo-control-icon-size-md);
61
+ block-size: var(--sigvelo-control-icon-size-md);
62
62
  color: var(--sigvelo-color-text-muted);
63
63
  }
64
64
 
@@ -80,9 +80,7 @@
80
80
  block-size: var(--sigvelo-recipe-switch-thumb-size);
81
81
  background-color: var(--sigvelo-color-canvas);
82
82
  border-radius: var(--sigvelo-radius-full);
83
- box-shadow:
84
- 0 1px 3px 0 color-mix(in oklab, var(--sigvelo-color-text), transparent 90%),
85
- 0 1px 2px -1px color-mix(in oklab, var(--sigvelo-color-text), transparent 90%);
83
+ box-shadow: var(--sigvelo-elevation-raised);
86
84
  translate: 0;
87
85
  transition: translate var(--sigvelo-motion-duration-interaction) var(--sigvelo-motion-ease-change);
88
86
  }
@@ -186,7 +186,7 @@
186
186
 
187
187
  .tabs__panel:focus-visible {
188
188
  outline: none;
189
- box-shadow: inset 0 0 0 2px color-mix(in oklab, var(--sigvelo-color-focus), transparent 80%);
189
+ box-shadow: var(--sigvelo-recipe-focus-shadow-inset);
190
190
  border-radius: var(--sigvelo-radius-md);
191
191
  }
192
192
 
@@ -72,7 +72,7 @@
72
72
  position: relative;
73
73
  font-size: var(--sigvelo-text-compact);
74
74
  color: var(--sigvelo-color-text);
75
- line-height: var(--sigvelo-leading-body);
75
+ line-height: var(--sigvelo-leading-relaxed);
76
76
  }
77
77
 
78
78
  .task__item::before {
@@ -119,7 +119,7 @@
119
119
  @media (forced-colors: active) {
120
120
  .task__trigger,
121
121
  .task__list {
122
- border: 1px solid CanvasText;
122
+ border: var(--sigvelo-border-style) var(--sigvelo-border-width) CanvasText;
123
123
  }
124
124
 
125
125
  .task__trigger:focus-visible {
@@ -12,8 +12,8 @@
12
12
  .terminal__header {
13
13
  display: flex;
14
14
  align-items: center;
15
- gap: 0.5rem;
16
- padding-block: 0.5rem;
15
+ gap: var(--sigvelo-spacing-2);
16
+ padding-block: var(--sigvelo-spacing-2);
17
17
  padding-inline: var(--sigvelo-spacing-3);
18
18
  background-color: color-mix(in oklab, var(--sigvelo-color-neutral-950) 80%, white 20%);
19
19
  border-block-end: var(--sigvelo-border-style) var(--sigvelo-border-width)
@@ -32,7 +32,7 @@
32
32
  .terminal__actions {
33
33
  display: inline-flex;
34
34
  align-items: center;
35
- gap: 0.25rem;
35
+ gap: var(--sigvelo-spacing-1);
36
36
  margin-inline-start: auto;
37
37
  }
38
38
 
@@ -51,7 +51,7 @@
51
51
  width: 100%;
52
52
  height: 100%;
53
53
  padding-block: var(--sigvelo-spacing-2-5);
54
- padding-inline: 0.875rem;
54
+ padding-inline: var(--sigvelo-spacing-3-5);
55
55
  overflow: auto;
56
56
  }
57
57
 
@@ -59,7 +59,7 @@
59
59
  margin: 0;
60
60
  font-family: var(--sigvelo-font-mono);
61
61
  font-size: var(--sigvelo-text-xs);
62
- line-height: var(--sigvelo-leading-body);
62
+ line-height: var(--sigvelo-leading-relaxed);
63
63
  color: var(--sigvelo-color-neutral-100);
64
64
  white-space: pre-wrap;
65
65
  word-break: break-word;
@@ -89,6 +89,6 @@
89
89
 
90
90
  @media (forced-colors: active) {
91
91
  .terminal {
92
- border: 1px solid CanvasText;
92
+ border: var(--sigvelo-border-style) var(--sigvelo-border-width) CanvasText;
93
93
  }
94
94
  }
@@ -188,7 +188,6 @@
188
188
 
189
189
  .test-results__test-status--running {
190
190
  color: var(--sigvelo-color-primary-text);
191
- animation: sigvelo-icon-spin 1.4s linear infinite;
192
191
  }
193
192
 
194
193
  .test-results__test-name {
@@ -226,7 +225,7 @@
226
225
  padding-inline: var(--sigvelo-spacing-3);
227
226
  font-family: var(--sigvelo-font-mono);
228
227
  font-size: var(--sigvelo-text-2xs);
229
- line-height: 1.55;
228
+ line-height: var(--sigvelo-leading-normal);
230
229
  color: var(--sigvelo-color-danger-text);
231
230
  background-color: var(--sigvelo-color-danger-bg-subtle);
232
231
  border: var(--sigvelo-border-style) var(--sigvelo-border-width)
@@ -266,7 +265,7 @@
266
265
  .test-results,
267
266
  .test-results__test,
268
267
  .test-results__suite {
269
- border: 1px solid CanvasText;
268
+ border: var(--sigvelo-border-style) var(--sigvelo-border-width) CanvasText;
270
269
  }
271
270
 
272
271
  .test-results__suite-trigger:focus-visible {
@@ -1,7 +1,7 @@
1
1
  .textarea {
2
2
  inline-size: 100%;
3
3
  block-size: auto;
4
- min-block-size: 5rem;
4
+ min-block-size: var(--sigvelo-spacing-20);
5
5
  padding-block: var(--sigvelo-spacing-2);
6
6
  line-height: var(--sigvelo-leading-relaxed);
7
7
  }
@@ -12,7 +12,7 @@
12
12
  .theme-mode-control__item.radio {
13
13
  display: inline-flex;
14
14
  inline-size: auto;
15
- min-inline-size: 2.75rem;
15
+ min-inline-size: var(--sigvelo-spacing-11);
16
16
  block-size: 2.75rem;
17
17
  align-items: center;
18
18
  justify-content: center;
@@ -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] {
@@ -18,26 +18,7 @@
18
18
  color: var(--sigvelo-color-primary-text);
19
19
  }
20
20
 
21
- .think-execution-status:is(
22
- [data-status="running"],
23
- [data-status="pending"],
24
- [data-status="queued"],
25
- [data-status="waitingForPause"],
26
- [data-status="rollingBack"]
27
- )
28
- svg {
29
- animation: sigvelo-icon-spin 0.8s linear infinite;
30
- }
31
-
32
- @media (prefers-reduced-motion: reduce) {
33
- .think-execution-status:is(
34
- [data-status="running"],
35
- [data-status="pending"],
36
- [data-status="queued"],
37
- [data-status="waitingForPause"],
38
- [data-status="rollingBack"]
39
- )
40
- svg {
41
- animation: none;
42
- }
43
- }
21
+ /* Nothing spins the icon here. Exactly the statuses this file used to list are
22
+ the ones that resolve to the primary tone, and the primary tone renders
23
+ SpinnerIcon, which already spins itself and already stops under reduced
24
+ motion. The list was a copy of that mapping that could drift away from it. */
@@ -80,10 +80,9 @@
80
80
  }
81
81
 
82
82
  .think-execution-workbench__empty {
83
+ --sigvelo-recipe-empty-state-padding-block: var(--sigvelo-spacing-2-5);
84
+
83
85
  margin: var(--sigvelo-spacing-3);
84
- padding: var(--sigvelo-spacing-2-5) 0;
85
- color: var(--sigvelo-color-text-muted);
86
- font-size: var(--sigvelo-text-compact);
87
86
  }
88
87
 
89
88
  .think-execution-workbench__list {
@@ -265,7 +264,7 @@
265
264
 
266
265
  @media (forced-colors: active) {
267
266
  .think-execution-workbench {
268
- border: 1px solid canvastext;
267
+ border: var(--sigvelo-border-style) var(--sigvelo-border-width) canvastext;
269
268
  background: canvas;
270
269
  color: canvastext;
271
270
  box-shadow: none;
@@ -61,7 +61,7 @@
61
61
  .think-full-app > .think-full-app__app-bar {
62
62
  grid-column: 1 / -1;
63
63
  grid-row: 1;
64
- z-index: 20;
64
+ z-index: var(--sigvelo-z-chrome);
65
65
  }
66
66
 
67
67
  .think-full-app__chat-surface {
@@ -267,7 +267,7 @@ body.is-resizing-side-panel .think-full-app__view-scope {
267
267
  }
268
268
 
269
269
  .think-full-app .message__content {
270
- line-height: 1.45;
270
+ line-height: var(--sigvelo-leading-normal);
271
271
  }
272
272
 
273
273
  .think-full-app .message[data-from="user"] .message__content {
@@ -305,7 +305,7 @@ body.is-resizing-side-panel .think-full-app__view-scope {
305
305
  .think-full-app__workbench,
306
306
  .think-full-app__app-bar,
307
307
  .think-full-app__workbench-view-switch {
308
- border: 1px solid canvastext;
308
+ border: var(--sigvelo-border-style) var(--sigvelo-border-width) canvastext;
309
309
  background: canvas;
310
310
  color: canvastext;
311
311
  box-shadow: none;