@mcp-b/react-components 0.40.0 → 0.41.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 (196) hide show
  1. package/dist/{AgentChat-CVO7xyLC.d.ts → AgentChat-DVr2giwD.d.ts} +1 -1
  2. package/dist/{AgentToolRunsContext-BCVqCtJ1.d.ts → AgentToolRunsContext-daY67hFM.d.ts} +12 -0
  3. package/dist/AppTopBar-ZdgmB_Lu.d.ts +97 -0
  4. package/dist/{CodeBlock-CWk1FVtm.js → CodeBlock-BjELA-_s.js} +1 -1
  5. package/dist/{FileTree-xqHYBw4g.js → FileTree-DMYRdT6R.js} +1 -1
  6. package/dist/McpConnectorForm-MRm1r59e.d.ts +39 -0
  7. package/dist/{Message-DBsHHhcM.d.ts → Message-D_vCVEGB.d.ts} +20 -1
  8. package/dist/{ThinkChatActivity-D6-_5Phw.d.ts → ThinkChatActivity-DyGHj01E.d.ts} +1 -1
  9. package/dist/{ThinkExecutionRun-lYYgyeE1.d.ts → ThinkExecutionRun-k8bpyXqt.d.ts} +3 -3
  10. package/dist/{ToggleGroup-_pQMyHGM.d.ts → ToggleGroup-BrQZOQn_.d.ts} +1 -1
  11. package/dist/Toolbar-CBOseBQr.d.ts +152 -0
  12. package/dist/{WorkspaceFileView-Lab3om3F.js → WorkspaceFileView-D0yFwoDr.js} +2 -2
  13. package/dist/{WorkspaceMessageResponse-Cy28WGSz.d.ts → WorkspaceMessageResponse-D66ty4FO.d.ts} +1 -1
  14. package/dist/components/agents-sdk/AgentActivity.js +1 -1
  15. package/dist/components/agents-sdk/AgentChat.d.ts +1 -1
  16. package/dist/components/agents-sdk/AgentChat.js +41 -18
  17. package/dist/components/agents-sdk/AgentToolRunsContext.d.ts +1 -1
  18. package/dist/components/agents-sdk/AgentToolRunsContext.js +12 -0
  19. package/dist/components/agents-sdk/BrowserLiveScreen.d.ts +135 -0
  20. package/dist/components/agents-sdk/BrowserLiveScreen.js +637 -0
  21. package/dist/components/agents-sdk/BrowserLiveView.d.ts +2 -2
  22. package/dist/components/agents-sdk/BrowserLiveView.js +6 -9
  23. package/dist/components/agents-sdk/BrowserReplay.js +1 -1
  24. package/dist/components/agents-sdk/BrowserRunPanel.d.ts +1 -1
  25. package/dist/components/agents-sdk/BrowserRunPanel.js +6 -12
  26. package/dist/components/agents-sdk/ManagerOffice.d.ts +156 -0
  27. package/dist/components/agents-sdk/ManagerOffice.js +662 -0
  28. package/dist/components/agents-sdk/McpConnectionRequest.js +3 -3
  29. package/dist/components/agents-sdk/McpConnectorForm.d.ts +1 -38
  30. package/dist/components/agents-sdk/McpPluginCatalog.d.ts +8 -2
  31. package/dist/components/agents-sdk/McpPluginCatalog.js +80 -62
  32. package/dist/components/agents-sdk/McpServerPicker.d.ts +1 -1
  33. package/dist/components/agents-sdk/McpServerPicker.js +2 -2
  34. package/dist/components/agents-sdk/ModelSelector.js +2 -2
  35. package/dist/components/agents-sdk/PromptInputCommands.js +1 -1
  36. package/dist/components/agents-sdk/SubagentRunDetails.d.ts +1 -9
  37. package/dist/components/agents-sdk/SubagentRunDetails.js +1 -9
  38. package/dist/components/agents-sdk/SubagentRunIndicator.js +1 -1
  39. package/dist/components/agents-sdk/SubagentRunSelector.d.ts +4 -2
  40. package/dist/components/agents-sdk/SubagentRunSelector.js +7 -6
  41. package/dist/components/agents-sdk/ThinkChat.d.ts +4 -4
  42. package/dist/components/agents-sdk/ThinkChat.js +1 -1
  43. package/dist/components/agents-sdk/ThinkChatActivity.d.ts +1 -1
  44. package/dist/components/agents-sdk/ThinkChatActivity.js +1 -1
  45. package/dist/components/agents-sdk/ThinkChatToolPanels.js +1 -1
  46. package/dist/components/agents-sdk/ThinkExecutionDetail.d.ts +1 -1
  47. package/dist/components/agents-sdk/ThinkExecutionDetail.js +43 -43
  48. package/dist/components/agents-sdk/ThinkExecutionRun.d.ts +2 -2
  49. package/dist/components/agents-sdk/ThinkExecutionRun.js +5 -6
  50. package/dist/components/agents-sdk/ThinkExecutionStatus.d.ts +1 -1
  51. package/dist/components/agents-sdk/ThinkExecutionStatus.js +8 -12
  52. package/dist/components/agents-sdk/ThinkExecutionWorkbench.d.ts +8 -1
  53. package/dist/components/agents-sdk/ThinkExecutionWorkbench.js +42 -37
  54. package/dist/components/agents-sdk/ThinkFullApp.d.ts +18 -6
  55. package/dist/components/agents-sdk/ThinkFullApp.js +113 -145
  56. package/dist/components/agents-sdk/ThinkFullAppViewSwitch.d.ts +1 -1
  57. package/dist/components/agents-sdk/ThinkFullAppViewSwitch.js +1 -1
  58. package/dist/components/agents-sdk/ThinkRoutine.d.ts +1 -1
  59. package/dist/components/agents-sdk/ThinkRoutineBrowser.js +1 -1
  60. package/dist/components/agents-sdk/ThinkRoutineDetail.js +5 -16
  61. package/dist/components/agents-sdk/ThinkRoutineForm.js +1 -1
  62. package/dist/components/agents-sdk/ThinkRoutineLibrary.js +69 -89
  63. package/dist/components/agents-sdk/ThinkRoutineRuns.d.ts +1 -1
  64. package/dist/components/agents-sdk/ThinkRoutineRuns.js +3 -10
  65. package/dist/components/agents-sdk/ThinkThreadPicker.js +2 -2
  66. package/dist/components/agents-sdk/WorkspaceBrowser.js +1 -1
  67. package/dist/components/agents-sdk/WorkspaceExplorer.js +1 -1
  68. package/dist/components/agents-sdk/WorkspaceFileView.js +1 -1
  69. package/dist/components/agents-sdk/WorkspaceHeader.js +2 -1
  70. package/dist/components/agents-sdk/WorkspaceMessageResponse.d.ts +1 -1
  71. package/dist/components/agents-sdk/WorkspaceMountManager.js +11 -11
  72. package/dist/components/ai-sdk/Activity.js +1 -1
  73. package/dist/components/ai-sdk/AgentAttention.d.ts +1 -1
  74. package/dist/components/ai-sdk/AgentChatStartScreen.js +1 -1
  75. package/dist/components/ai-sdk/Approval.js +1 -1
  76. package/dist/components/ai-sdk/Artifact.js +1 -1
  77. package/dist/components/ai-sdk/ChainOfThought.d.ts +1 -1
  78. package/dist/components/ai-sdk/ChainOfThought.js +1 -1
  79. package/dist/components/ai-sdk/Checkpoint.js +1 -1
  80. package/dist/components/ai-sdk/CodeBlock.js +1 -1
  81. package/dist/components/ai-sdk/Conversation.js +1 -1
  82. package/dist/components/ai-sdk/Goal.js +1 -1
  83. package/dist/components/ai-sdk/MediaPreviewCard.js +1 -1
  84. package/dist/components/ai-sdk/Message.d.ts +2 -2
  85. package/dist/components/ai-sdk/Message.js +25 -3
  86. package/dist/components/ai-sdk/MessageScroller.js +1 -1
  87. package/dist/components/ai-sdk/MessageScrollerVirtual.js +1 -1
  88. package/dist/components/ai-sdk/Plan.js +1 -1
  89. package/dist/components/ai-sdk/PromptInput.js +1 -1
  90. package/dist/components/ai-sdk/Queue.d.ts +4 -4
  91. package/dist/components/ai-sdk/Queue.js +6 -15
  92. package/dist/components/ai-sdk/Reasoning.js +1 -1
  93. package/dist/components/ai-sdk/Sources.js +1 -1
  94. package/dist/components/ai-sdk/Task.d.ts +2 -2
  95. package/dist/components/ai-sdk/Task.js +2 -2
  96. package/dist/components/extension/ChatGptSignInScreen.js +1 -1
  97. package/dist/components/extension/CodexModelSelector.js +1 -1
  98. package/dist/components/extension/ConversationTabPicker.js +1 -1
  99. package/dist/components/foundations/Avatar.d.ts +1 -10
  100. package/dist/components/foundations/Avatar.js +1 -10
  101. package/dist/components/foundations/Checkbox.js +1 -1
  102. package/dist/components/foundations/CheckboxGroup.js +1 -0
  103. package/dist/components/foundations/ContextMenu.js +1 -1
  104. package/dist/components/foundations/LinkButton.d.ts +12 -10
  105. package/dist/components/foundations/LinkButton.js +15 -11
  106. package/dist/components/foundations/Menubar.js +1 -1
  107. package/dist/components/foundations/SearchField.js +1 -1
  108. package/dist/components/foundations/Select.js +1 -1
  109. package/dist/components/foundations/Stepper.js +1 -1
  110. package/dist/components/foundations/Toast.js +1 -1
  111. package/dist/components/foundations/ToggleGroup.d.ts +1 -1
  112. package/dist/components/foundations/ToggleGroup.js +1 -1
  113. package/dist/components/foundations/Toolbar.d.ts +1 -151
  114. package/dist/components/foundations/icons.d.ts +2 -2
  115. package/dist/components/foundations/icons.js +2 -2
  116. package/dist/components/general-purpose/AppTopBar.d.ts +1 -90
  117. package/dist/components/general-purpose/AppTopBar.js +2 -1
  118. package/dist/components/general-purpose/Commit.d.ts +2 -2
  119. package/dist/components/general-purpose/Commit.js +5 -13
  120. package/dist/components/general-purpose/EnvironmentVariables.d.ts +2 -2
  121. package/dist/components/general-purpose/EnvironmentVariables.js +4 -7
  122. package/dist/components/general-purpose/FileTree.js +1 -1
  123. package/dist/components/general-purpose/PricingBillingToggle.js +5 -10
  124. package/dist/components/general-purpose/PricingPlanCard.js +15 -14
  125. package/dist/components/general-purpose/PricingUsageCalculator.js +1 -1
  126. package/dist/components/general-purpose/ResponsiveSidebarShell.d.ts +95 -2
  127. package/dist/components/general-purpose/ResponsiveSidebarShell.js +90 -34
  128. package/dist/components/general-purpose/SetupChecklist.js +1 -1
  129. package/dist/components/general-purpose/Terminal.d.ts +1 -1
  130. package/dist/components/general-purpose/Terminal.js +4 -12
  131. package/dist/components/general-purpose/TestResults.d.ts +1 -1
  132. package/dist/components/general-purpose/TestResults.js +8 -21
  133. package/dist/components/general-purpose/ThemeModeControl.js +1 -1
  134. package/dist/components/general-purpose/WebPreview.d.ts +1 -1
  135. package/dist/components/general-purpose/WebPreview.js +4 -12
  136. package/dist/components/nanites/AgentConnection.js +2 -2
  137. package/dist/components/nanites/AgentToolDetail.d.ts +1 -1
  138. package/dist/components/nanites/AgentToolDetail.js +7 -7
  139. package/dist/components/nanites/NaniteScene.js +11 -11
  140. package/dist/{copy-button-Bc7jsYv_.js → copy-button-lys9N_aI.js} +1 -1
  141. package/dist/{icons-DwgNir1Q.d.ts → icons-0corjfxR.d.ts} +1 -16
  142. package/dist/{icons-MmIXciMO.js → icons-CVFSeTJn.js} +2 -5
  143. package/dist/styles/agent-attention.css +5 -5
  144. package/dist/styles/agent-chat.css +47 -12
  145. package/dist/styles/agent-tool-detail.css +2 -12
  146. package/dist/styles/app-icon.css +12 -18
  147. package/dist/styles/app-top-bar.css +32 -6
  148. package/dist/styles/avatar.css +6 -22
  149. package/dist/styles/base.css +2 -8
  150. package/dist/styles/browser-live-screen.css +38 -0
  151. package/dist/styles/browser-live-view.css +12 -4
  152. package/dist/styles/browser-run-panel.css +20 -18
  153. package/dist/styles/chatgpt-sign-in-screen.css +5 -5
  154. package/dist/styles/commit.css +24 -1
  155. package/dist/styles/environment-variables.css +3 -0
  156. package/dist/styles/index.css +5 -4
  157. package/dist/styles/manager-office.css +486 -0
  158. package/dist/styles/mcp-plugin-catalog.css +39 -35
  159. package/dist/styles/mcp-server-picker.css +1 -1
  160. package/dist/styles/message.css +41 -18
  161. package/dist/styles/nanite-scene.css +9 -9
  162. package/dist/styles/pricing-page.css +12 -8
  163. package/dist/styles/prompt-input.css +8 -13
  164. package/dist/styles/recipes.css +1 -57
  165. package/dist/styles/responsive-sidebar-shell.css +70 -20
  166. package/dist/styles/subagent-run.css +20 -3
  167. package/dist/styles/terminal.css +19 -0
  168. package/dist/styles/test-results.css +10 -1
  169. package/dist/styles/think-execution-status.css +8 -24
  170. package/dist/styles/think-execution-workbench.css +98 -105
  171. package/dist/styles/think-full-app.css +81 -193
  172. package/dist/styles/think-routine-library.css +0 -40
  173. package/dist/styles/think-thread-picker.css +8 -3
  174. package/dist/styles/transition-surface.css +7 -8
  175. package/dist/styles/utilities.css +42 -0
  176. package/dist/styles/web-preview.css +28 -5
  177. package/dist/styles/workspace-explorer.css +4 -23
  178. package/dist/styles/workspace-mount-manager.css +22 -0
  179. package/package.json +37 -35
  180. package/dist/ResponsiveSidebarShell-DWjULskY.d.ts +0 -68
  181. package/dist/components/agents-sdk/AgentActivityPreview.d.ts +0 -46
  182. package/dist/components/agents-sdk/AgentActivityPreview.js +0 -93
  183. package/dist/components/agents-sdk/ThinkThreadShell.d.ts +0 -38
  184. package/dist/components/agents-sdk/ThinkThreadShell.js +0 -27
  185. package/dist/components/foundations/Badge.d.ts +0 -62
  186. package/dist/components/foundations/Badge.js +0 -55
  187. package/dist/components/foundations/StatusPill.d.ts +0 -43
  188. package/dist/components/foundations/StatusPill.js +0 -35
  189. package/dist/components/general-purpose/Shell.d.ts +0 -149
  190. package/dist/components/general-purpose/Shell.js +0 -116
  191. package/dist/styles/agent-activity-preview-overlay.css +0 -169
  192. package/dist/styles/agent-activity-preview.css +0 -209
  193. package/dist/styles/badge.css +0 -120
  194. package/dist/styles/shell.css +0 -122
  195. package/dist/styles/status-pill.css +0 -39
  196. package/dist/{ThinkChat-DkA4Wr71.js → ThinkChat-BES_3Mb-.js} +1 -1
@@ -1,13 +1,11 @@
1
- .think-thread-shell {
1
+ /* The app names the shell's own container so bar rules below can measure the
2
+ whole app, rail included — the bar lives in the shell's row, outside the
3
+ `.think-full-app` container. */
4
+ .think-full-app-shell {
2
5
  container-name: responsive-sidebar-shell think-full-app;
3
6
  }
4
7
 
5
8
  .think-full-app {
6
- --think-full-app-header-block-size: calc(
7
- var(--sigvelo-density-compact-control-height) + var(--sigvelo-spacing-2) +
8
- env(safe-area-inset-top, 0px)
9
- );
10
-
11
9
  position: relative;
12
10
  container: think-full-app / inline-size;
13
11
  block-size: 100%;
@@ -15,84 +13,67 @@
15
13
  min-inline-size: 0;
16
14
  display: grid;
17
15
  grid-template-rows: minmax(0, 1fr);
18
- background: var(--sigvelo-color-surface-under);
16
+ background: var(--sigvelo-color-surface);
19
17
  color: var(--sigvelo-color-text);
20
18
  font-family: inherit;
21
19
  }
22
20
 
23
- .think-full-app[data-has-workbench-topbar="true"] {
24
- grid-template-rows: var(--think-full-app-header-block-size) minmax(0, 1fr);
25
- }
26
-
27
21
  .think-full-app__view-scope {
28
22
  grid-column: 1;
29
23
  grid-row: 1;
30
24
  min-inline-size: 0;
31
25
  min-block-size: 0;
32
26
  display: grid;
33
- grid-template-columns: minmax(0, 1fr) var(--resizable-side-panel-size, 21.25rem);
27
+ /* Conversation first and sized, workbench second and greedy. */
28
+ grid-template-columns: auto minmax(0, 1fr);
34
29
  grid-template-rows: minmax(0, 1fr);
35
- overflow: hidden;
36
- transition: grid-template-columns var(--sigvelo-motion-duration-layout)
37
- var(--sigvelo-motion-ease-change);
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
-
57
- .think-full-app[data-has-workbench-topbar="true"] > .think-full-app__view-scope {
58
- grid-row: 2;
59
- }
60
-
61
- .think-full-app[data-has-workbench="false"] > .think-full-app__view-scope {
62
- grid-template-columns: minmax(0, 1fr);
30
+ margin: var(--sigvelo-spacing-3);
63
31
  }
64
32
 
65
33
  .think-full-app__mobile-view-switch {
66
34
  display: none;
67
35
  }
68
36
 
69
- .think-full-app__thread-trigger {
70
- display: none;
71
- }
72
-
73
37
  .think-full-app__view-switch {
74
38
  gap: var(--sigvelo-spacing-0-5);
75
39
  padding: 0;
76
40
  background: transparent;
77
41
  }
78
42
 
79
- .think-full-app > .think-full-app__app-bar {
80
- grid-column: 1 / -1;
81
- grid-row: 1;
82
- z-index: var(--sigvelo-z-chrome);
83
- background: var(--sigvelo-color-surface-under);
43
+ .think-full-app__app-bar {
44
+ /* Line the bar's controls up with the plane inset below it. */
45
+ padding-inline: var(--sigvelo-spacing-3);
46
+ }
47
+
48
+ /* Without host chrome the bar carries only the compact view switch, and that
49
+ is hidden above the breakpoint — reserve no room for it. */
50
+ .think-full-app__app-bar[data-app-chrome="false"] {
51
+ display: none;
84
52
  }
85
53
 
86
54
  .think-full-app__chat-surface {
87
55
  grid-column: 1;
88
56
  grid-row: 1;
57
+ /* The conversation carries the resize, so the workbench can simply take the
58
+ rest of the row. */
59
+ inline-size: var(--resizable-side-panel-size, 24.5rem);
89
60
  min-inline-size: 0;
90
61
  min-block-size: 0;
91
62
  display: grid;
92
63
  grid-template-columns: minmax(0, 1fr);
93
64
  grid-template-rows: minmax(0, 1fr);
94
65
  overflow: hidden;
95
- background: var(--sigvelo-color-surface);
66
+ transition: inline-size var(--sigvelo-motion-duration-layout) var(--sigvelo-motion-ease-change);
67
+ }
68
+
69
+ /* A length rather than `auto`: closing has to interpolate from the open width,
70
+ and a length-to-auto transition never finishes. */
71
+ .think-full-app[data-has-workbench="false"] .think-full-app__chat-surface {
72
+ inline-size: calc(100cqi - var(--sigvelo-spacing-3) * 2);
73
+ }
74
+
75
+ body.is-resizing-side-panel .think-full-app__chat-surface {
76
+ transition: none;
96
77
  }
97
78
 
98
79
  .think-full-app__chat,
@@ -110,6 +91,8 @@
110
91
  grid-template-rows: minmax(0, 1fr) auto;
111
92
  }
112
93
 
94
+ /* Transparent column: the aside positions the plane, it is not a material of
95
+ its own. */
113
96
  .think-full-app__aside {
114
97
  grid-column: 2;
115
98
  grid-row: 1;
@@ -117,26 +100,16 @@
117
100
  min-block-size: 0;
118
101
  display: grid;
119
102
  grid-template-rows: minmax(0, 1fr);
120
- overflow: hidden;
121
- border-inline-start: var(--sigvelo-border-style) var(--sigvelo-border-width)
122
- var(--sigvelo-color-neutral-border-subtle);
123
- background: color-mix(
124
- in oklab,
125
- var(--sigvelo-color-canvas),
126
- var(--sigvelo-color-primary-bg-subtle) 18%
127
- );
103
+ /* A margin, not a column gap: with no panels at all the aside is absent and
104
+ a gap would still hold its track open. */
105
+ margin-inline-start: var(--sigvelo-spacing-3);
128
106
  }
129
107
 
130
108
  .think-full-app__resizer {
131
109
  z-index: 5;
132
- }
133
-
134
- .think-full-app[data-has-workbench-topbar="true"] .think-full-app__resizer {
135
- inset-block-start: var(--think-full-app-header-block-size);
136
- }
137
-
138
- body.is-resizing-side-panel .think-full-app__view-scope {
139
- transition: none;
110
+ /* Centre the handle in the column gap rather than on the grid edge: the
111
+ conversation is inset by the gutter and the gap sits beyond its edge. */
112
+ translate: calc(var(--sigvelo-spacing-3) * 1.5) 0;
140
113
  }
141
114
 
142
115
  .think-full-app__workbench-slot,
@@ -150,12 +123,11 @@ body.is-resizing-side-panel .think-full-app__view-scope {
150
123
  overflow: hidden;
151
124
  }
152
125
 
153
- .think-full-app__workbench {
154
- background: color-mix(
155
- in oklab,
156
- var(--sigvelo-color-canvas),
157
- var(--sigvelo-color-primary-bg-subtle) 18%
158
- );
126
+ /* The app's one raised plane. Panels fill it and never draw a second edge. */
127
+ .think-full-app__workbench-slot {
128
+ border-radius: var(--sigvelo-radius-lg);
129
+ background: var(--sigvelo-color-surface-raised);
130
+ box-shadow: var(--sigvelo-elevation-floating);
159
131
  }
160
132
 
161
133
  /* The panel stands in for itself while its first read is in flight, so the
@@ -164,44 +136,59 @@ body.is-resizing-side-panel .think-full-app__view-scope {
164
136
  justify-content: center;
165
137
  }
166
138
 
167
- .think-full-app__workbench.workspace-explorer {
168
- border: 0;
169
- border-radius: 0;
170
- box-shadow: none;
171
- }
172
-
173
- .think-full-app__workbench-view-switch {
174
- margin-inline-start: auto;
175
- }
176
-
177
139
  .think-full-app__workbench-panel {
178
140
  padding: 0;
179
141
  }
180
142
 
143
+ /* Host panels fill the plane rather than sizing to their content. Only visible
144
+ once the plane became the wide side of the split. */
145
+ .think-full-app__workbench-panel > * {
146
+ flex: 1;
147
+ min-block-size: 0;
148
+ }
149
+
181
150
  .think-full-app__workbench-panel:focus-visible {
182
151
  outline: 2px solid var(--sigvelo-color-focus);
183
152
  outline-offset: -2px;
184
153
  }
185
154
 
186
155
  @container think-full-app (inline-size <= 56rem) {
156
+ /* A side panel or phone has no desktop chrome around the app, so an inset
157
+ plane reads as a card in a frame. Flatten to one edge-to-edge surface,
158
+ app bar included — the frame never shows. */
187
159
  .think-full-app__view-scope {
188
160
  grid-template-columns: minmax(0, 1fr);
161
+ margin: 0;
162
+ overflow: hidden;
189
163
  }
190
164
 
191
- /* A side panel or phone has no desktop chrome around the app, so the
192
- floating application plane reads as a card in a frame. Flatten to one
193
- edge-to-edge surface, app bar included — the frame never shows. */
194
- .think-full-app > .think-full-app__view-scope,
195
- .think-full-app[data-has-workbench-topbar="false"] > .think-full-app__view-scope {
196
- margin: 0;
165
+ .think-full-app__aside {
166
+ margin-inline-start: 0;
167
+ }
168
+
169
+ /* Compact swaps between the two rather than seating them side by side, so
170
+ neither carries the desktop split's width. The extra class matches the
171
+ closed-workbench rule this has to beat. */
172
+ .think-full-app .think-full-app__chat-surface {
173
+ inline-size: auto;
174
+ transition: none;
175
+ }
176
+
177
+ /* .think-full-app__workbench needs the extra class: panels that paint
178
+ themselves raised are defined after this stylesheet. */
179
+ .think-full-app__workbench-slot,
180
+ .think-full-app .think-full-app__workbench {
197
181
  border-radius: 0;
182
+ background: var(--sigvelo-color-surface);
198
183
  box-shadow: none;
199
184
  }
200
185
 
201
- .think-full-app > .think-full-app__app-bar {
202
- background: var(--sigvelo-color-surface);
186
+ .think-full-app__app-bar[data-app-chrome="false"] {
187
+ display: grid;
203
188
  }
204
189
 
190
+ /* One switch at a time: compact swaps the whole view rather than opening a
191
+ panel beside the conversation. */
205
192
  .think-full-app__workbench-view-switch {
206
193
  display: none;
207
194
  }
@@ -210,40 +197,6 @@ body.is-resizing-side-panel .think-full-app__view-scope {
210
197
  display: flex;
211
198
  }
212
199
 
213
- .think-full-app__app-title {
214
- display: none;
215
- }
216
-
217
- .think-full-app__thread-trigger {
218
- inline-size: auto;
219
- max-inline-size: min(22rem, 58vw);
220
- min-inline-size: 0;
221
- min-block-size: var(--sigvelo-density-compact-control-height);
222
- display: inline-flex;
223
- gap: var(--sigvelo-density-compact-control-gap);
224
- padding-inline: var(--sigvelo-density-compact-control-padding-inline);
225
- border-radius: var(--sigvelo-radius-md);
226
- color: var(--sigvelo-color-text);
227
- font-size: var(--sigvelo-density-compact-control-font-size);
228
- font-weight: var(--sigvelo-font-weight-semibold);
229
- }
230
-
231
- .think-full-app__thread-trigger-title {
232
- min-inline-size: 0;
233
- }
234
-
235
- .think-full-app__thread-trigger > svg {
236
- flex: 0 0 auto;
237
- inline-size: var(--sigvelo-density-compact-control-icon-size);
238
- block-size: var(--sigvelo-density-compact-control-icon-size);
239
- color: var(--sigvelo-color-text-muted);
240
- transition: rotate var(--sigvelo-motion-duration-interaction) var(--sigvelo-motion-ease-change);
241
- }
242
-
243
- .think-full-app__thread-trigger[aria-expanded="true"] > svg {
244
- rotate: 180deg;
245
- }
246
-
247
200
  .think-full-app__chat-surface,
248
201
  .think-full-app__workbench-slot,
249
202
  .think-full-app__workbench {
@@ -261,7 +214,6 @@ body.is-resizing-side-panel .think-full-app__view-scope {
261
214
 
262
215
  .think-full-app__aside {
263
216
  display: contents;
264
- border-inline-start: 0;
265
217
  }
266
218
 
267
219
  .think-full-app__resizer {
@@ -277,71 +229,8 @@ body.is-resizing-side-panel .think-full-app__view-scope {
277
229
  --agent-chat-content-max-inline-size: 34rem;
278
230
  }
279
231
 
280
- .think-full-app .think-full-app__chat .message-scroller__viewport {
281
- --message-scroller-fade-size: 3rem;
282
- }
283
-
284
- .think-full-app .think-full-app__chat .agent-chat__transcript-content {
285
- --message-scroller-virtual-block-start: calc(
286
- var(--sigvelo-spacing-5) + env(safe-area-inset-top, 0px)
287
- );
288
-
289
- padding-block-start: var(--message-scroller-virtual-block-start);
290
- /* Matches Codex's side-panel gutter (--padding-panel: 12px). */
291
- padding-inline: var(--sigvelo-spacing-3);
292
- }
293
-
294
- /* The base composer scrim already dissolves the transcript above the box. */
295
- .think-full-app .agent-chat__composer {
296
- padding-block: var(--sigvelo-spacing-2)
297
- max(var(--sigvelo-spacing-2), env(safe-area-inset-bottom, 0px));
298
- padding-inline: max(var(--sigvelo-spacing-3), env(safe-area-inset-left, 0px))
299
- max(var(--sigvelo-spacing-3), env(safe-area-inset-right, 0px));
300
- }
301
-
302
- /* The gutter above belongs to the composer pinned under a transcript. On the
303
- start screen the composer is in flow and the utility tray docks against
304
- the card's bottom edge, so any bottom padding here reads as the tray
305
- floating detached. */
306
- .think-full-app .agent-chat-start-screen__composer > .agent-chat__composer {
307
- padding: 0;
308
- }
309
-
310
- .think-full-app .prompt-input {
311
- gap: var(--sigvelo-spacing-1);
312
- padding-block: var(--sigvelo-spacing-2);
313
- padding-inline: var(--sigvelo-spacing-2-5);
314
- }
315
-
316
- .think-full-app .message__content {
317
- line-height: var(--sigvelo-leading-normal);
318
- }
319
-
320
- .think-full-app .message[data-from="user"] .message__content {
321
- padding-block: var(--sigvelo-spacing-1-5);
322
- padding-inline: var(--sigvelo-spacing-2-5);
323
- }
324
-
325
- .think-full-app .workspace-explorer__header {
326
- min-block-size: var(--sigvelo-density-compact-control-height);
327
- padding-block: 0;
328
- }
329
-
330
- .think-full-app .workspace-explorer__filter {
331
- margin-block: var(--sigvelo-spacing-1);
332
- margin-inline: var(--sigvelo-spacing-2);
333
- }
334
- }
335
-
336
- @container responsive-sidebar-shell (inline-size <= 56rem) {
337
- .think-thread-shell:has(.think-full-app) .responsive-sidebar-shell__toggle {
338
- display: none;
339
- }
340
-
341
- .think-thread-shell[data-hide-app-bar-in-workbench]:has(
342
- .think-full-app[data-mobile-view="workbench"]
343
- )
344
- > .app-top-bar {
232
+ /* An immersive workbench view owns the whole viewport. */
233
+ .think-full-app__app-bar[data-hide-in-workbench][data-mobile-view="workbench"] {
345
234
  display: none;
346
235
  }
347
236
  }
@@ -349,10 +238,9 @@ body.is-resizing-side-panel .think-full-app__view-scope {
349
238
  @media (forced-colors: active) {
350
239
  .think-full-app,
351
240
  .think-full-app__chat-surface,
352
- .think-full-app__aside,
241
+ .think-full-app__workbench-slot,
353
242
  .think-full-app__workbench,
354
- .think-full-app__app-bar,
355
- .think-full-app__workbench-view-switch {
243
+ .think-full-app__app-bar {
356
244
  border: var(--sigvelo-border-style) var(--sigvelo-border-width) canvastext;
357
245
  background: canvas;
358
246
  color: canvastext;
@@ -61,36 +61,6 @@
61
61
  block-size: 100%;
62
62
  }
63
63
 
64
- .think-routine-library__app-title {
65
- display: none;
66
- }
67
-
68
- .think-routine-library__schedule-trigger {
69
- display: inline-flex;
70
- max-inline-size: min(22rem, 58vw);
71
- min-inline-size: 0;
72
- gap: var(--sigvelo-density-compact-control-gap);
73
- color: var(--sigvelo-color-text);
74
- font-size: var(--sigvelo-density-compact-control-font-size);
75
- font-weight: var(--sigvelo-font-weight-semibold);
76
- }
77
-
78
- .think-routine-library__schedule-trigger span {
79
- min-inline-size: 0;
80
- overflow: hidden;
81
- text-overflow: ellipsis;
82
- white-space: nowrap;
83
- }
84
-
85
- .think-routine-library__schedule-trigger > svg {
86
- flex: 0 0 auto;
87
- transition: rotate var(--sigvelo-motion-duration-interaction) var(--sigvelo-motion-ease-change);
88
- }
89
-
90
- .think-routine-library__schedule-trigger[aria-expanded="true"] > svg {
91
- rotate: 180deg;
92
- }
93
-
94
64
  .think-routine-library__browser {
95
65
  min-inline-size: 0;
96
66
  min-block-size: 0;
@@ -208,12 +178,6 @@
208
178
  overflow: auto;
209
179
  }
210
180
 
211
- @container responsive-sidebar-shell (inline-size <= 56rem) {
212
- .think-routine-library__layout .responsive-sidebar-shell__toggle {
213
- display: none;
214
- }
215
- }
216
-
217
181
  .think-routine-library__detail {
218
182
  inline-size: min(100%, 64rem);
219
183
  margin-inline: auto;
@@ -236,10 +200,6 @@
236
200
  min-inline-size: 0;
237
201
  }
238
202
 
239
- .think-routine-library__state {
240
- margin-block-end: var(--sigvelo-spacing-2);
241
- }
242
-
243
203
  .think-routine-library__detail-header h1,
244
204
  .think-routine-library__create-header h1 {
245
205
  font-size: clamp(var(--sigvelo-text-lg), 2.5vw, var(--sigvelo-text-2xl));
@@ -6,7 +6,10 @@
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-under);
9
+ /* No material of its own: it fills whatever holds it — the shell's rail, the
10
+ compact drawer, a host's own panel — and painting a colour here would
11
+ cover the one that surface chose. */
12
+ background: transparent;
10
13
  color: var(--sigvelo-color-text);
11
14
  }
12
15
 
@@ -69,7 +72,7 @@
69
72
  }
70
73
 
71
74
  .think-thread-status-indicators__item[data-status="attention"] {
72
- color: var(--sigvelo-color-warning-text);
75
+ color: var(--sigvelo-color-danger-text);
73
76
  }
74
77
 
75
78
  .think-thread-status-indicators__item[data-status="failed"] {
@@ -266,10 +269,12 @@
266
269
  color: var(--sigvelo-color-danger-text);
267
270
  }
268
271
 
272
+ /* Stopped, not wrong: aborted/interrupted/skipped stay in the muted
273
+ monotone — colour is reserved for success, failure, and needs-a-human. */
269
274
  .think-thread-picker__thread[data-thread-status="aborted"] .think-thread-picker__thread-status,
270
275
  .think-thread-picker__thread[data-thread-status="interrupted"] .think-thread-picker__thread-status,
271
276
  .think-thread-picker__thread[data-thread-status="skipped"] .think-thread-picker__thread-status {
272
- color: var(--sigvelo-color-warning-text);
277
+ color: var(--sigvelo-color-text-muted);
273
278
  }
274
279
 
275
280
  .think-thread-picker__empty {
@@ -1,8 +1,7 @@
1
+ /* The exit transform is a hook: defaults live in the fallbacks at each use
2
+ site, and picking a `data-variant` declares a value on the element itself —
3
+ the component answering its own prop, which is meant to win. */
1
4
  .transition-surface {
2
- --transition-surface-inline: 0;
3
- --transition-surface-block: 0;
4
- --transition-surface-scale: 1;
5
-
6
5
  opacity: 1;
7
6
  translate: 0;
8
7
  scale: 1;
@@ -29,16 +28,16 @@
29
28
  .transition-surface[hidden] {
30
29
  display: none;
31
30
  opacity: 0;
32
- translate: var(--transition-surface-inline) var(--transition-surface-block);
33
- scale: var(--transition-surface-scale);
31
+ translate: var(--transition-surface-inline, 0) var(--transition-surface-block, 0);
32
+ scale: var(--transition-surface-scale, 1);
34
33
  transition-timing-function: var(--sigvelo-motion-ease-exit);
35
34
  }
36
35
 
37
36
  @starting-style {
38
37
  .transition-surface {
39
38
  opacity: 0;
40
- translate: var(--transition-surface-inline) var(--transition-surface-block);
41
- scale: var(--transition-surface-scale);
39
+ translate: var(--transition-surface-inline, 0) var(--transition-surface-block, 0);
40
+ scale: var(--transition-surface-scale, 1);
42
41
  }
43
42
  }
44
43
 
@@ -97,6 +97,48 @@
97
97
  max-inline-size: var(--sigvelo-measure-wide-block);
98
98
  }
99
99
 
100
+ /*
101
+ * The chevron on a disclosure trigger a consumer composed itself. Components
102
+ * that own their own trigger anatomy (Collapsible, MenuDisclosureGroup) style
103
+ * their marker directly; this is for app code putting an icon inside a
104
+ * `Collapsible.Trigger`, which otherwise re-derives the same two rules.
105
+ */
106
+ .sigvelo-disclosure-chevron {
107
+ transition: rotate var(--sigvelo-motion-duration-disclosure) var(--sigvelo-motion-ease-change);
108
+ }
109
+
110
+ :where([data-panel-open], [aria-expanded="true"]) .sigvelo-disclosure-chevron {
111
+ rotate: 180deg;
112
+ }
113
+
114
+ /*
115
+ * A prompt that has to outlive the reader's attention: a permission ask a
116
+ * browser will only grant from a gesture, an offer to reconnect. `Toast` is the
117
+ * wrong shape for these because it schedules its own dismissal, and these leave
118
+ * only when the reader acts. The layer is inert so the page underneath stays
119
+ * usable and only the control inside it takes the pointer back; the inset clears
120
+ * whatever the app already anchors to the bottom edge.
121
+ */
122
+ .sigvelo-floating-prompt {
123
+ --sigvelo-floating-prompt-inset: var(--sigvelo-spacing-4);
124
+
125
+ position: fixed;
126
+ inset-inline: 0;
127
+ inset-block-end: calc(env(safe-area-inset-bottom, 0px) + var(--sigvelo-floating-prompt-inset));
128
+ z-index: var(--sigvelo-z-toast);
129
+ display: flex;
130
+ justify-content: center;
131
+ pointer-events: none;
132
+ }
133
+
134
+ /* Floating reads as a pill, not as a form control, so the recipe radius goes
135
+ fully round here rather than at each consumer's call site. */
136
+ .sigvelo-floating-prompt > * {
137
+ --sigvelo-recipe-button-radius: var(--sigvelo-radius-full);
138
+
139
+ pointer-events: auto;
140
+ }
141
+
100
142
  /*
101
143
  * Reader-controlled text size for prose. Scales the message body only —
102
144
  * toolbars, labels, and controls keep resolving through the rem type ramp,
@@ -1,12 +1,17 @@
1
+ /* The card's chrome row (the Ploy bar): one bar height everywhere, muted
2
+ controls resting directly on whatever plane hosts the preview, separated
3
+ from the scrolling content by one hairline and a breath of shadow. */
1
4
  .web-preview__nav {
5
+ position: relative;
2
6
  display: flex;
3
7
  align-items: center;
8
+ min-block-size: calc(var(--sigvelo-density-compact-control-height) + var(--sigvelo-spacing-2));
4
9
  gap: var(--sigvelo-spacing-1-5);
5
- padding-block: var(--sigvelo-spacing-2);
6
- padding-inline: var(--sigvelo-spacing-2-5);
7
- background-color: var(--sigvelo-color-neutral-bg-subtle);
10
+ padding-block: var(--sigvelo-spacing-1);
11
+ padding-inline: var(--sigvelo-spacing-2);
8
12
  border-block-end: var(--sigvelo-border-style) var(--sigvelo-border-width)
9
13
  var(--sigvelo-color-neutral-border-subtle);
14
+ box-shadow: var(--sigvelo-elevation-bar);
10
15
  }
11
16
 
12
17
  .web-preview__nav-button {
@@ -29,7 +34,6 @@
29
34
  min-height: 16rem;
30
35
  width: 100%;
31
36
  border: none;
32
- background-color: var(--sigvelo-color-canvas);
33
37
  }
34
38
 
35
39
  .web-preview__body--readonly {
@@ -66,7 +70,6 @@
66
70
  text-transform: uppercase;
67
71
  letter-spacing: 0.05em;
68
72
  color: var(--sigvelo-color-text-muted);
69
- background-color: var(--sigvelo-color-neutral-bg-subtle);
70
73
  cursor: pointer;
71
74
  }
72
75
 
@@ -124,6 +127,26 @@
124
127
  border-block-end: none;
125
128
  }
126
129
 
130
+ .web-preview__console-level {
131
+ min-inline-size: 2.5rem;
132
+ color: var(--sigvelo-color-text-muted);
133
+ font-size: var(--sigvelo-text-2xs);
134
+ font-weight: var(--sigvelo-font-weight-semibold);
135
+ text-transform: uppercase;
136
+ }
137
+
138
+ .web-preview__console-item--info .web-preview__console-level {
139
+ color: var(--sigvelo-color-primary-text);
140
+ }
141
+
142
+ .web-preview__console-item--warn .web-preview__console-level {
143
+ color: var(--sigvelo-color-warning-text);
144
+ }
145
+
146
+ .web-preview__console-item--error .web-preview__console-level {
147
+ color: var(--sigvelo-color-danger-text);
148
+ }
149
+
127
150
  .web-preview__console-message {
128
151
  color: var(--sigvelo-color-text);
129
152
  word-break: break-word;