@mcp-b/react-components 0.20.5 → 0.22.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 (234) hide show
  1. package/dist/{AgentActivity-D2SHSGFX.d.ts → AgentActivity-D3OvrC02.d.ts} +14 -1
  2. package/dist/{AgentChat-C-ZyXbJz.d.ts → AgentChat-Bm1qYbOo.d.ts} +24 -1
  3. package/dist/AgentChatStartScreen-DDZ25aax.d.ts +60 -0
  4. package/dist/{Button-yRInko9u.d.ts → Button-SBIz6Lqi.d.ts} +2 -1
  5. package/dist/{CodeBlock-ygtuzqJd.js → CodeBlock-Cp67Njo3.js} +1 -1
  6. package/dist/{CodeBlock-Bbls1CnA.d.ts → CodeBlock-yMpGqScn.d.ts} +1 -1
  7. package/dist/Dialog-BD8NBKaE.d.ts +122 -0
  8. package/dist/{FileTree-CdgfccsM.js → FileTree-DW60q1w7.js} +1 -1
  9. package/dist/IconButton-CFKhu6OR.d.ts +35 -0
  10. package/dist/{Message-DzuteocT.js → Message-_-bEYLAO.js} +9 -16
  11. package/dist/{ModelSelector-pecWyOFI.js → ModelSelector-Brvj9Cab.js} +15 -8
  12. package/dist/{PromptInput-Cq-8RoXD.d.ts → PromptInput-BjoPWaaG.d.ts} +15 -2
  13. package/dist/{ThinkChatActivity-CdbL0aoA.d.ts → ThinkChatActivity-2BobmuvR.d.ts} +8 -7
  14. package/dist/{ThinkChatActivitySummary-D1xOrNrq.d.ts → ThinkChatActivitySummary-kr5fE0wg.d.ts} +14 -5
  15. package/dist/{ToggleGroup-DNd6cDJZ.d.ts → ToggleGroup-BW1jrhAF.d.ts} +10 -0
  16. package/dist/{Workspace-CWtust-2.d.ts → Workspace-CIycQ4xE.d.ts} +1 -1
  17. package/dist/{WorkspaceExplorer-DGigwsgH.d.ts → WorkspaceExplorer-BCipn7Vd.d.ts} +1 -1
  18. package/dist/{WorkspaceFile-D8Un_xge.d.ts → WorkspaceFile-DMtRMwVv.d.ts} +1 -1
  19. package/dist/{WorkspaceFileView-Bxx4wEzJ.js → WorkspaceFileView-rUEN2iox.js} +4 -4
  20. package/dist/assets/think-browser-host.png +0 -0
  21. package/dist/components/ActionGuide.d.ts +85 -0
  22. package/dist/components/ActionGuide.js +94 -0
  23. package/dist/components/Activity.d.ts +33 -17
  24. package/dist/components/Activity.js +40 -28
  25. package/dist/components/AgentActivity.d.ts +1 -1
  26. package/dist/components/AgentActivity.js +3 -11
  27. package/dist/components/AgentActivityPreview.d.ts +1 -1
  28. package/dist/components/AgentActivityPreview.js +17 -16
  29. package/dist/components/AgentAttention.d.ts +1 -1
  30. package/dist/components/AgentChat.d.ts +1 -1
  31. package/dist/components/AgentChat.js +169 -136
  32. package/dist/components/AgentChatStartScreen.d.ts +2 -0
  33. package/dist/components/AgentChatStartScreen.js +88 -0
  34. package/dist/components/AgentConnection.d.ts +1 -1
  35. package/dist/components/AgentConnection.js +2 -2
  36. package/dist/components/AgentMessageParts.js +1 -1
  37. package/dist/components/AgentToolDetail.js +1 -1
  38. package/dist/components/AlertDialog.d.ts +2 -1
  39. package/dist/components/AlertDialog.js +8 -2
  40. package/dist/components/AppIcon.d.ts +58 -0
  41. package/dist/components/AppIcon.js +51 -0
  42. package/dist/components/AppTopBar.js +9 -10
  43. package/dist/components/Approval.js +3 -5
  44. package/dist/components/Artifact.d.ts +3 -7
  45. package/dist/components/Artifact.js +12 -18
  46. package/dist/components/Avatar.d.ts +7 -2
  47. package/dist/components/Avatar.js +4 -2
  48. package/dist/components/BrowserLiveView.js +6 -8
  49. package/dist/components/BrowserReplay.js +9 -9
  50. package/dist/components/BrowserRunPanel.js +2 -2
  51. package/dist/components/Button.d.ts +1 -1
  52. package/dist/components/ChainOfThought.d.ts +1 -1
  53. package/dist/components/ChainOfThought.js +1 -1
  54. package/dist/components/ChatGptSignInScreen.js +2 -2
  55. package/dist/components/Checkbox.js +1 -1
  56. package/dist/components/Checkpoint.js +1 -1
  57. package/dist/components/CodeBlock.d.ts +1 -1
  58. package/dist/components/CodeBlock.js +1 -1
  59. package/dist/components/CodexModelSelector.js +1 -1
  60. package/dist/components/Commit.d.ts +1 -1
  61. package/dist/components/Commit.js +3 -3
  62. package/dist/components/ContextMenu.js +1 -1
  63. package/dist/components/Conversation.d.ts +3 -24
  64. package/dist/components/Conversation.js +6 -34
  65. package/dist/components/Dialog.d.ts +1 -117
  66. package/dist/components/Dialog.js +9 -1
  67. package/dist/components/EmptyState.d.ts +46 -0
  68. package/dist/components/EmptyState.js +50 -0
  69. package/dist/components/EnvironmentVariables.d.ts +1 -1
  70. package/dist/components/EnvironmentVariables.js +2 -2
  71. package/dist/components/FileTree.js +1 -1
  72. package/dist/components/IconButton.d.ts +1 -31
  73. package/dist/components/IconButton.js +2 -1
  74. package/dist/components/Kbd.d.ts +32 -0
  75. package/dist/components/Kbd.js +34 -0
  76. package/dist/components/McpConnectionRequest.d.ts +1 -1
  77. package/dist/components/McpConnectionRequest.js +1 -1
  78. package/dist/components/McpPluginCatalog.d.ts +86 -0
  79. package/dist/components/McpPluginCatalog.js +364 -0
  80. package/dist/components/McpServerPicker.d.ts +2 -2
  81. package/dist/components/McpServerPicker.js +7 -13
  82. package/dist/components/MediaPreviewCard.js +1 -1
  83. package/dist/components/Menubar.js +1 -1
  84. package/dist/components/Message.d.ts +4 -8
  85. package/dist/components/Message.js +1 -1
  86. package/dist/components/MessageScroller.d.ts +1 -1
  87. package/dist/components/MessageScroller.js +1 -1
  88. package/dist/components/ModelSelector.d.ts +12 -6
  89. package/dist/components/ModelSelector.js +2 -2
  90. package/dist/components/Plan.js +1 -1
  91. package/dist/components/PricingBillingToggle.js +1 -0
  92. package/dist/components/PricingPlanCard.d.ts +1 -1
  93. package/dist/components/PricingPlanCard.js +10 -12
  94. package/dist/components/PromptInput.d.ts +2 -2
  95. package/dist/components/PromptInput.js +30 -12
  96. package/dist/components/Queue.d.ts +1 -1
  97. package/dist/components/Queue.js +2 -2
  98. package/dist/components/Reasoning.js +5 -10
  99. package/dist/components/ResponsiveSidebarShell.js +2 -1
  100. package/dist/components/SearchField.js +1 -1
  101. package/dist/components/Select.js +1 -1
  102. package/dist/components/Sources.js +1 -1
  103. package/dist/components/StatusPill.d.ts +43 -0
  104. package/dist/components/StatusPill.js +35 -0
  105. package/dist/components/Stepper.js +1 -1
  106. package/dist/components/SubagentRunIndicator.js +1 -1
  107. package/dist/components/SubagentRunSelector.js +1 -1
  108. package/dist/components/Task.js +1 -1
  109. package/dist/components/Terminal.d.ts +3 -3
  110. package/dist/components/Terminal.js +7 -8
  111. package/dist/components/TestResults.js +1 -1
  112. package/dist/components/ThemeModeControl.js +1 -1
  113. package/dist/components/ThinkChat.d.ts +12 -6
  114. package/dist/components/ThinkChatActivity.d.ts +2 -2
  115. package/dist/components/ThinkChatActivity.js +28 -16
  116. package/dist/components/ThinkChatActivitySummary.d.ts +2 -2
  117. package/dist/components/ThinkChatActivitySummary.js +67 -64
  118. package/dist/components/ThinkChatToolPanels.js +1 -1
  119. package/dist/components/ThinkExecutionDetail.js +5 -5
  120. package/dist/components/ThinkExecutionStatus.js +1 -1
  121. package/dist/components/ThinkExecutionWorkbench.js +19 -25
  122. package/dist/components/ThinkFullApp.d.ts +8 -4
  123. package/dist/components/ThinkFullApp.js +17 -2
  124. package/dist/components/ThinkFullAppViewSwitch.d.ts +1 -1
  125. package/dist/components/ThinkRoutineBrowser.js +3 -2
  126. package/dist/components/ThinkRoutineForm.js +3 -3
  127. package/dist/components/ThinkRoutineLibrary.js +2 -2
  128. package/dist/components/ThinkRoutineRuns.js +4 -3
  129. package/dist/components/ThinkThreadPicker.js +5 -4
  130. package/dist/components/Toast.d.ts +12 -2
  131. package/dist/components/Toast.js +14 -4
  132. package/dist/components/ToggleGroup.d.ts +1 -1
  133. package/dist/components/ToggleGroup.js +54 -7
  134. package/dist/components/ToolInvocation.js +1 -1
  135. package/dist/components/Tooltip.d.ts +6 -4
  136. package/dist/components/Tooltip.js +11 -4
  137. package/dist/components/WebPreview.d.ts +13 -6
  138. package/dist/components/WebPreview.js +55 -50
  139. package/dist/components/Workspace.d.ts +1 -1
  140. package/dist/components/WorkspaceBrowser.d.ts +1 -1
  141. package/dist/components/WorkspaceBrowser.js +1 -1
  142. package/dist/components/WorkspaceExplorer.d.ts +3 -3
  143. package/dist/components/WorkspaceExplorer.js +1 -1
  144. package/dist/components/WorkspaceFile.d.ts +1 -1
  145. package/dist/components/WorkspaceFileView.d.ts +1 -1
  146. package/dist/components/WorkspaceFileView.js +1 -1
  147. package/dist/components/WorkspaceHeader.js +1 -1
  148. package/dist/components/icons.d.ts +2 -2
  149. package/dist/components/icons.js +2 -2
  150. package/dist/{copy-button-BrvQ7z4W.d.ts → copy-button-EBv_B9F6.d.ts} +2 -2
  151. package/dist/{copy-button-vo1paUSi.js → copy-button-TWq8nZhc.js} +8 -8
  152. package/dist/{icons-DyOM0EJs.js → icons-ua6f_GH3.js} +3 -2
  153. package/dist/{icons-DkRtZmvT.d.ts → icons-wP1yFUXF.d.ts} +6 -1
  154. package/dist/mcp-server-catalog-DycejaJ5.d.ts +1077 -0
  155. package/dist/styles/action-guide.css +128 -0
  156. package/dist/styles/activity-header.css +41 -10
  157. package/dist/styles/activity.css +26 -4
  158. package/dist/styles/agent-activity-preview-overlay.css +51 -12
  159. package/dist/styles/agent-activity-preview.css +23 -53
  160. package/dist/styles/agent-attention.css +2 -2
  161. package/dist/styles/agent-chat.css +291 -57
  162. package/dist/styles/agent-connection.css +8 -8
  163. package/dist/styles/alert-dialog.css +5 -20
  164. package/dist/styles/app-icon.css +122 -0
  165. package/dist/styles/app-top-bar.css +4 -5
  166. package/dist/styles/approval.css +1 -7
  167. package/dist/styles/artifact.css +4 -4
  168. package/dist/styles/avatar.css +13 -0
  169. package/dist/styles/base-ui-motion.css +1 -1
  170. package/dist/styles/base.css +94 -3
  171. package/dist/styles/browser-control-overlay.css +16 -7
  172. package/dist/styles/browser-live-view.css +5 -38
  173. package/dist/styles/browser-replay.css +2 -6
  174. package/dist/styles/browser-run-panel.css +4 -18
  175. package/dist/styles/button.css +17 -1
  176. package/dist/styles/card.css +4 -4
  177. package/dist/styles/chain-of-thought.css +0 -1
  178. package/dist/styles/chatgpt-sign-in-screen.css +7 -5
  179. package/dist/styles/checkbox-group.css +3 -3
  180. package/dist/styles/code-block.css +4 -4
  181. package/dist/styles/context-menu.css +1 -1
  182. package/dist/styles/conversation.css +7 -42
  183. package/dist/styles/description-list.css +4 -4
  184. package/dist/styles/dialog.css +22 -7
  185. package/dist/styles/empty-state.css +48 -0
  186. package/dist/styles/environment-variables.css +4 -4
  187. package/dist/styles/field.css +2 -2
  188. package/dist/styles/index.css +6 -0
  189. package/dist/styles/inline-citation.css +1 -1
  190. package/dist/styles/kbd.css +40 -0
  191. package/dist/styles/mcp-plugin-catalog.css +296 -0
  192. package/dist/styles/mcp-server-picker.css +0 -26
  193. package/dist/styles/media-preview-card.css +5 -3
  194. package/dist/styles/message-scroller.css +4 -4
  195. package/dist/styles/message.css +11 -6
  196. package/dist/styles/model-selector.css +5 -8
  197. package/dist/styles/popover.css +1 -1
  198. package/dist/styles/preview-card.css +1 -1
  199. package/dist/styles/prompt-input.css +44 -54
  200. package/dist/styles/queue.css +2 -2
  201. package/dist/styles/recipes.css +83 -9
  202. package/dist/styles/resizable-side-panel.css +1 -1
  203. package/dist/styles/responsive-sidebar-shell.css +19 -14
  204. package/dist/styles/scrollbars.css +32 -3
  205. package/dist/styles/search-field.css +9 -0
  206. package/dist/styles/sources.css +1 -1
  207. package/dist/styles/status-pill.css +39 -0
  208. package/dist/styles/stepper.css +2 -2
  209. package/dist/styles/streamdown.css +13 -12
  210. package/dist/styles/subagent-run.css +3 -3
  211. package/dist/styles/switch.css +1 -3
  212. package/dist/styles/tabs.css +1 -1
  213. package/dist/styles/task.css +1 -1
  214. package/dist/styles/terminal.css +2 -2
  215. package/dist/styles/test-results.css +1 -2
  216. package/dist/styles/textarea.css +1 -1
  217. package/dist/styles/theme-mode-control.css +1 -1
  218. package/dist/styles/think-execution-status.css +4 -23
  219. package/dist/styles/think-execution-workbench.css +2 -3
  220. package/dist/styles/think-full-app.css +24 -4
  221. package/dist/styles/think-routine-library.css +14 -16
  222. package/dist/styles/think-thread-picker.css +9 -26
  223. package/dist/styles/toast.css +2 -23
  224. package/dist/styles/toggle-group.css +76 -3
  225. package/dist/styles/tooltip.css +1 -2
  226. package/dist/styles/utilities.css +73 -0
  227. package/dist/styles/web-preview.css +5 -0
  228. package/dist/styles/workspace-explorer.css +4 -6
  229. package/dist/utils/favicon.d.ts +10 -0
  230. package/dist/utils/favicon.js +18 -0
  231. package/dist/utils/mcp-server-catalog.d.ts +2 -1078
  232. package/dist/utils/mcp-server-catalog.js +3 -11
  233. package/dist/utils/structured-code.d.ts +1 -1
  234. package/package.json +2 -2
@@ -39,7 +39,7 @@ button[data-streamdown="link"] {
39
39
  }
40
40
 
41
41
  [data-streamdown="inline-code"] {
42
- padding-block: 0.0625rem;
42
+ padding-block: 1px;
43
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);
@@ -62,14 +62,15 @@ 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"] {
@@ -222,7 +223,7 @@ button[data-streamdown="link"] {
222
223
  background-color: transparent;
223
224
  font-family: var(--sigvelo-font-mono);
224
225
  font-size: var(--sigvelo-text-compact);
225
- line-height: 1.55;
226
+ line-height: var(--sigvelo-leading-normal);
226
227
  overflow: visible;
227
228
  }
228
229
 
@@ -288,7 +289,7 @@ button[data-streamdown="link"] {
288
289
  [data-streamdown="table-fullscreen"] {
289
290
  position: fixed;
290
291
  inset: 0;
291
- z-index: 50;
292
+ z-index: var(--sigvelo-z-overlay);
292
293
  background-color: var(--sigvelo-color-surface);
293
294
  }
294
295
 
@@ -343,17 +344,17 @@ button[data-streamdown="link"] {
343
344
  position: absolute;
344
345
  top: 100%;
345
346
  right: 0;
346
- z-index: 20;
347
+ z-index: var(--sigvelo-z-chrome);
347
348
  display: flex;
348
349
  flex-direction: column;
349
350
  min-width: 7.5rem;
350
351
  margin-block-start: var(--sigvelo-spacing-1);
351
352
  overflow: hidden;
352
- border-radius: var(--sigvelo-radius-md);
353
- border: var(--sigvelo-border-style) var(--sigvelo-border-width)
354
- var(--sigvelo-color-neutral-border-subtle);
355
- background-color: var(--sigvelo-color-surface);
356
- 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);
357
358
  }
358
359
 
359
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 {
@@ -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;
@@ -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)
@@ -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;
@@ -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 {
@@ -15,7 +15,7 @@
15
15
  min-inline-size: 0;
16
16
  display: grid;
17
17
  grid-template-rows: minmax(0, 1fr);
18
- background: var(--sigvelo-color-canvas);
18
+ background: var(--sigvelo-color-surface-under);
19
19
  color: var(--sigvelo-color-text);
20
20
  font-family: inherit;
21
21
  }
@@ -32,10 +32,28 @@
32
32
  display: grid;
33
33
  grid-template-columns: minmax(0, 1fr) var(--resizable-side-panel-size, 21.25rem);
34
34
  grid-template-rows: minmax(0, 1fr);
35
+ overflow: hidden;
35
36
  transition: grid-template-columns var(--sigvelo-motion-duration-layout)
36
37
  var(--sigvelo-motion-ease-change);
37
38
  }
38
39
 
40
+ .think-full-app[data-has-workbench-topbar="false"] > .think-full-app__view-scope {
41
+ margin-block-start: var(--sigvelo-spacing-2);
42
+ }
43
+
44
+ /* ResponsiveSidebarShell owns the outer material when a thread sidebar is
45
+ present. Flatten the nested app so the hierarchy still has exactly one
46
+ raised primary plane. */
47
+ .think-full-app[data-has-thread-sidebar="true"] {
48
+ background: var(--sigvelo-color-surface);
49
+ }
50
+
51
+ .think-full-app[data-has-thread-sidebar="true"] > .think-full-app__view-scope {
52
+ margin: 0;
53
+ border-radius: 0;
54
+ box-shadow: none;
55
+ }
56
+
39
57
  .think-full-app[data-has-workbench-topbar="true"] > .think-full-app__view-scope {
40
58
  grid-row: 2;
41
59
  }
@@ -61,7 +79,8 @@
61
79
  .think-full-app > .think-full-app__app-bar {
62
80
  grid-column: 1 / -1;
63
81
  grid-row: 1;
64
- z-index: 20;
82
+ z-index: var(--sigvelo-z-chrome);
83
+ background: var(--sigvelo-color-surface-under);
65
84
  }
66
85
 
67
86
  .think-full-app__chat-surface {
@@ -245,7 +264,7 @@ body.is-resizing-side-panel .think-full-app__view-scope {
245
264
 
246
265
  .think-full-app .think-full-app__chat .agent-chat__transcript-content {
247
266
  gap: var(--sigvelo-spacing-2-5);
248
- padding-block-start: calc(var(--sigvelo-spacing-3) + env(safe-area-inset-top, 0px));
267
+ padding-block-start: calc(var(--sigvelo-spacing-5) + env(safe-area-inset-top, 0px));
249
268
  padding-inline: var(--sigvelo-spacing-3);
250
269
  }
251
270
 
@@ -267,7 +286,7 @@ body.is-resizing-side-panel .think-full-app__view-scope {
267
286
  }
268
287
 
269
288
  .think-full-app .message__content {
270
- line-height: 1.45;
289
+ line-height: var(--sigvelo-leading-normal);
271
290
  }
272
291
 
273
292
  .think-full-app .message[data-from="user"] .message__content {
@@ -300,6 +319,7 @@ body.is-resizing-side-panel .think-full-app__view-scope {
300
319
  }
301
320
 
302
321
  @media (forced-colors: active) {
322
+ .think-full-app,
303
323
  .think-full-app__chat-surface,
304
324
  .think-full-app__aside,
305
325
  .think-full-app__workbench,
@@ -153,7 +153,7 @@
153
153
 
154
154
  .think-routine-browser__routine {
155
155
  inline-size: 100%;
156
- min-block-size: 3.5rem;
156
+ min-block-size: var(--sigvelo-spacing-14);
157
157
  display: grid;
158
158
  grid-template-columns: auto minmax(0, 1fr);
159
159
  align-items: center;
@@ -243,7 +243,7 @@
243
243
  .think-routine-library__detail-header h1,
244
244
  .think-routine-library__create-header h1 {
245
245
  font-size: clamp(var(--sigvelo-text-lg), 2.5vw, var(--sigvelo-text-2xl));
246
- line-height: 1.12;
246
+ line-height: var(--sigvelo-leading-tight);
247
247
  }
248
248
 
249
249
  .think-routine-library__detail-heading > p:last-child,
@@ -262,7 +262,7 @@
262
262
  }
263
263
 
264
264
  .think-routine-library__section-heading {
265
- min-block-size: 2rem;
265
+ min-block-size: var(--sigvelo-spacing-8);
266
266
  display: flex;
267
267
  align-items: flex-start;
268
268
  justify-content: space-between;
@@ -280,7 +280,7 @@
280
280
  margin: 0;
281
281
  color: var(--sigvelo-color-text);
282
282
  font-size: var(--sigvelo-text-sm);
283
- line-height: 1.7;
283
+ line-height: var(--sigvelo-leading-relaxed);
284
284
  white-space: pre-wrap;
285
285
  }
286
286
 
@@ -348,15 +348,15 @@
348
348
  }
349
349
 
350
350
  .think-routine-library__run-marker {
351
- inline-size: 1rem;
352
- block-size: 1rem;
351
+ inline-size: var(--sigvelo-control-icon-size-md);
352
+ block-size: var(--sigvelo-control-icon-size-md);
353
353
  flex: 0 0 auto;
354
354
  }
355
355
 
356
356
  .think-routine-library__run-marker svg {
357
357
  display: block;
358
- inline-size: 1rem;
359
- block-size: 1rem;
358
+ inline-size: var(--sigvelo-control-icon-size-md);
359
+ block-size: var(--sigvelo-control-icon-size-md);
360
360
  }
361
361
 
362
362
  .think-routine-library__run > span {
@@ -370,18 +370,14 @@
370
370
  text-overflow: ellipsis;
371
371
  }
372
372
 
373
- .think-routine-library__empty-runs {
374
- color: var(--sigvelo-color-text-muted);
375
- font-size: var(--sigvelo-text-xs);
376
- }
377
-
378
373
  .think-routine-library__run-kind {
379
374
  text-transform: capitalize;
380
375
  }
381
376
 
377
+ /* One rule, not two — this selector was declared twice in this file. */
382
378
  .think-routine-library__empty-runs {
383
- margin: 0;
384
- padding-block: var(--sigvelo-spacing-4);
379
+ --sigvelo-recipe-empty-state-padding-block: var(--sigvelo-spacing-4);
380
+
385
381
  border-block: var(--sigvelo-border-style) var(--sigvelo-border-width)
386
382
  var(--sigvelo-color-neutral-border-subtle);
387
383
  }
@@ -486,8 +482,10 @@
486
482
  @container responsive-sidebar-shell (inline-size <= 56rem) {
487
483
  .think-routine-library__browser {
488
484
  inline-size: 100%;
485
+ /* Narrow enough that the browser stops being a column beside the detail
486
+ and starts covering it, so it takes the overlay stack. */
489
487
  border-inline-end: 0;
490
- box-shadow: var(--sigvelo-shadow-lg);
488
+ box-shadow: var(--sigvelo-elevation-overlay);
491
489
  }
492
490
  }
493
491
 
@@ -6,7 +6,7 @@
6
6
  grid-template-rows: auto auto minmax(0, 1fr) auto;
7
7
  overflow: hidden;
8
8
  border-inline-end: 0;
9
- background: var(--sigvelo-color-surface);
9
+ background: var(--sigvelo-color-surface-under);
10
10
  color: var(--sigvelo-color-text);
11
11
  }
12
12
 
@@ -56,7 +56,7 @@
56
56
  display: inline-flex;
57
57
  align-items: center;
58
58
  gap: var(--sigvelo-spacing-0-5);
59
- min-inline-size: 1rem;
59
+ min-inline-size: var(--sigvelo-spacing-4);
60
60
  }
61
61
 
62
62
  .think-thread-status-indicators__item svg {
@@ -68,10 +68,6 @@
68
68
  color: var(--sigvelo-color-primary-text);
69
69
  }
70
70
 
71
- .think-thread-status-indicators__item[data-status="running"] svg {
72
- animation: sigvelo-icon-spin 900ms linear infinite;
73
- }
74
-
75
71
  .think-thread-status-indicators__item[data-status="attention"] {
76
72
  color: var(--sigvelo-color-warning-text);
77
73
  }
@@ -112,7 +108,7 @@
112
108
 
113
109
  .think-thread-picker__list {
114
110
  display: grid;
115
- gap: 0.0625rem;
111
+ gap: 1px;
116
112
  margin: 0;
117
113
  padding: 0;
118
114
  list-style: none;
@@ -252,8 +248,8 @@
252
248
  display: inline-flex;
253
249
  align-items: center;
254
250
  justify-content: center;
255
- inline-size: 1rem;
256
- block-size: 1rem;
251
+ inline-size: var(--sigvelo-control-icon-size-md);
252
+ block-size: var(--sigvelo-control-icon-size-md);
257
253
  color: var(--sigvelo-color-text-muted);
258
254
  }
259
255
 
@@ -271,20 +267,10 @@
271
267
  color: var(--sigvelo-color-primary-text);
272
268
  }
273
269
 
274
- .think-thread-picker__thread[data-thread-status="pending"] .think-thread-picker__thread-status svg,
275
- .think-thread-picker__thread[data-thread-status="running"] .think-thread-picker__thread-status svg,
276
- .think-thread-picker__thread[data-thread-status="starting"] .think-thread-picker__thread-status svg,
277
- .think-thread-picker__thread[data-thread-status="streaming"]
278
- .think-thread-picker__thread-status
279
- svg,
280
- .think-thread-picker__thread[data-thread-status="submitted"]
281
- .think-thread-picker__thread-status
282
- svg,
283
- .think-thread-picker__thread[data-thread-status="recovering"]
284
- .think-thread-picker__thread-status
285
- svg {
286
- animation: sigvelo-icon-spin 900ms linear infinite;
287
- }
270
+ /* The six statuses this rule used to list were `isThreadBusy` written out a
271
+ second time, and those are exactly the ones that render SpinnerIcon, which
272
+ spins itself. A DotIcon never needed the rule and would have started turning
273
+ the moment the two lists disagreed. */
288
274
 
289
275
  .think-thread-picker__thread[data-thread-status="error"] .think-thread-picker__thread-status {
290
276
  color: var(--sigvelo-color-danger-text);
@@ -298,9 +284,6 @@
298
284
 
299
285
  .think-thread-picker__empty {
300
286
  margin: var(--sigvelo-spacing-2);
301
- color: var(--sigvelo-color-text-muted);
302
- font-size: var(--sigvelo-text-compact);
303
- line-height: var(--sigvelo-leading-snug);
304
287
  }
305
288
 
306
289
  .think-thread-picker__footer {
@@ -2,7 +2,7 @@
2
2
  position: fixed;
3
3
  inset-block-end: var(--sigvelo-spacing-4);
4
4
  inset-inline-end: var(--sigvelo-spacing-4);
5
- z-index: 100;
5
+ z-index: var(--sigvelo-z-toast);
6
6
  inline-size: min(24rem, calc(100dvi - var(--sigvelo-spacing-8)));
7
7
  max-inline-size: 100%;
8
8
  pointer-events: none;
@@ -15,7 +15,7 @@
15
15
  position: absolute;
16
16
  inset-inline: 0;
17
17
  inset-block-end: 0;
18
- z-index: calc(100 - var(--toast-index));
18
+ z-index: calc(var(--sigvelo-z-toast) - var(--toast-index));
19
19
  display: flex;
20
20
  flex-direction: column;
21
21
  inline-size: 100%;
@@ -77,37 +77,16 @@
77
77
  position: absolute;
78
78
  inset-block-start: var(--sigvelo-spacing-2);
79
79
  inset-inline-end: var(--sigvelo-spacing-2);
80
- display: flex;
81
- align-items: center;
82
- justify-content: center;
83
- inline-size: var(--sigvelo-control-height-xs);
84
- block-size: var(--sigvelo-control-height-xs);
85
- padding: 0;
86
- font-size: var(--sigvelo-text-base);
87
80
  color: var(--sigvelo-color-text-muted);
88
- background-color: transparent;
89
- border: none;
90
- border-radius: var(--sigvelo-radius-sm);
91
- cursor: pointer;
92
81
  opacity: 0;
93
- transition:
94
- opacity var(--sigvelo-motion-duration-interaction) var(--sigvelo-motion-ease-change),
95
- background-color var(--sigvelo-motion-duration-interaction) var(--sigvelo-motion-ease-change);
96
82
  }
97
83
 
98
84
  .toast:is(:hover, :focus-within) .toast__close {
99
85
  opacity: 1;
100
86
  }
101
87
 
102
- .toast__close:hover {
103
- background-color: var(--sigvelo-color-neutral-bg-subtle);
104
- color: var(--sigvelo-color-neutral-text-on-subtle);
105
- }
106
-
107
88
  .toast__close:focus-visible {
108
89
  opacity: 1;
109
- outline: none;
110
- box-shadow: var(--sigvelo-recipe-focus-shadow);
111
90
  }
112
91
 
113
92
  @media (hover: none) {
@@ -33,9 +33,7 @@
33
33
  .toggle-group__item[data-pressed] {
34
34
  background-color: var(--sigvelo-color-canvas);
35
35
  color: var(--sigvelo-color-text);
36
- box-shadow:
37
- 0 1px 3px 0 color-mix(in oklab, var(--sigvelo-color-text), transparent 90%),
38
- 0 1px 2px -1px color-mix(in oklab, var(--sigvelo-color-text), transparent 90%);
36
+ box-shadow: var(--sigvelo-elevation-raised);
39
37
  }
40
38
 
41
39
  @media (forced-colors: active) {
@@ -44,3 +42,78 @@
44
42
  outline-offset: -2px;
45
43
  }
46
44
  }
45
+
46
+ /*
47
+ * Segmented: one thumb that travels, rather than each item lighting up its own
48
+ * background. Same anatomy, same track — a segmented control is how this group
49
+ * presents itself when the choice is a mode rather than a set of switches, so
50
+ * it is a modifier here instead of a second component with a second track.
51
+ *
52
+ * The position comes from JavaScript because nothing in CSS can produce it: see
53
+ * `useSegmentedThumb`.
54
+ */
55
+ .toggle-group--segmented {
56
+ position: relative;
57
+ }
58
+
59
+ .toggle-group__thumb {
60
+ position: absolute;
61
+ /* Physical `left`, deliberately: it is fed `offsetLeft`, which is physical.
62
+ `translate` rather than moving `left` itself keeps the travel on the
63
+ compositor. */
64
+ left: 0;
65
+ inset-block: var(--sigvelo-spacing-1);
66
+ inline-size: var(--toggle-group-thumb-size, 0);
67
+ translate: var(--toggle-group-thumb-start, 0) 0;
68
+ border-radius: calc(var(--sigvelo-radius-md) - 2px);
69
+ background-color: var(--sigvelo-color-canvas);
70
+ box-shadow: var(--sigvelo-elevation-raised);
71
+ transition:
72
+ translate var(--sigvelo-motion-duration-interaction) var(--sigvelo-motion-ease-change),
73
+ inline-size var(--sigvelo-motion-duration-interaction) var(--sigvelo-motion-ease-change);
74
+ }
75
+
76
+ .toggle-group--sm .toggle-group__thumb {
77
+ inset-block: var(--sigvelo-spacing-0-5);
78
+ }
79
+
80
+ .toggle-group--lg .toggle-group__thumb {
81
+ inset-block: var(--sigvelo-spacing-1-5);
82
+ }
83
+
84
+ /* Before the first measurement, and whenever the group allows an empty
85
+ selection, there is no segment for the thumb to sit on. */
86
+ .toggle-group--segmented:not(:has(.toggle-group__item[data-pressed])) .toggle-group__thumb {
87
+ opacity: 0;
88
+ }
89
+
90
+ /* The thumb draws the pressed state now; leaving the item's own copy underneath
91
+ would double the elevation and show a second edge as the thumb slides off. */
92
+ .toggle-group--segmented .toggle-group__item[data-pressed] {
93
+ background-color: transparent;
94
+ box-shadow: none;
95
+ }
96
+
97
+ .toggle-group--segmented .toggle-group__item {
98
+ position: relative;
99
+ z-index: 1;
100
+ }
101
+
102
+ @media (prefers-reduced-motion: reduce) {
103
+ .toggle-group__thumb {
104
+ transition: none;
105
+ }
106
+ }
107
+
108
+ :root[data-motion="reduce"] .toggle-group__thumb {
109
+ transition: none;
110
+ }
111
+
112
+ /* Backgrounds are dropped in forced colors, so the travelling thumb would
113
+ vanish and take the selected state with it. */
114
+ @media (forced-colors: active) {
115
+ .toggle-group__thumb {
116
+ outline: var(--sigvelo-focus-ring-forced);
117
+ outline-offset: -2px;
118
+ }
119
+ }
@@ -1,9 +1,8 @@
1
1
  .tooltip__popup {
2
2
  --sigvelo-recipe-popup-arrow-size: var(--sigvelo-spacing-2);
3
3
  --sigvelo-recipe-surface-padding: var(--sigvelo-spacing-1) var(--sigvelo-spacing-2);
4
- --sigvelo-recipe-surface-shadow: var(--sigvelo-shadow-sm);
5
4
 
6
- z-index: 50;
5
+ z-index: var(--sigvelo-z-overlay);
7
6
  max-inline-size: min(20rem, var(--available-width));
8
7
  overflow-block: auto;
9
8
  font-size: var(--sigvelo-text-xs);