@mcp-b/react-components 0.40.0 → 0.42.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (228) 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/{CodeBlock-CWk1FVtm.js → CodeBlock-BjELA-_s.js} +1 -1
  4. package/dist/{FileTree-xqHYBw4g.js → FileTree-DMYRdT6R.js} +1 -1
  5. package/dist/McpConnectorForm-MRm1r59e.d.ts +39 -0
  6. package/dist/{Message-DBsHHhcM.d.ts → Message-D_vCVEGB.d.ts} +20 -1
  7. package/dist/{ThinkChatActivity-D6-_5Phw.d.ts → ThinkChatActivity-CsDql-ER.d.ts} +4 -1
  8. package/dist/{ThinkExecutionRun-lYYgyeE1.d.ts → ThinkExecutionRun-k8bpyXqt.d.ts} +3 -3
  9. package/dist/{WorkspaceFileView-Lab3om3F.js → WorkspaceFileView-DwdXiKku.js} +17 -22
  10. package/dist/{WorkspaceMessageResponse-Cy28WGSz.d.ts → WorkspaceMessageResponse-D66ty4FO.d.ts} +1 -1
  11. package/dist/components/agents-sdk/AgentActivity.js +4 -3
  12. package/dist/components/agents-sdk/AgentChat.d.ts +1 -1
  13. package/dist/components/agents-sdk/AgentChat.js +42 -18
  14. package/dist/components/agents-sdk/AgentToolRunsContext.d.ts +1 -1
  15. package/dist/components/agents-sdk/AgentToolRunsContext.js +12 -0
  16. package/dist/components/agents-sdk/BrowserLiveScreen.d.ts +135 -0
  17. package/dist/components/agents-sdk/BrowserLiveScreen.js +637 -0
  18. package/dist/components/agents-sdk/BrowserLiveView.d.ts +2 -2
  19. package/dist/components/agents-sdk/BrowserLiveView.js +6 -9
  20. package/dist/components/agents-sdk/BrowserReplay.js +1 -1
  21. package/dist/components/agents-sdk/BrowserRunPanel.d.ts +1 -1
  22. package/dist/components/agents-sdk/BrowserRunPanel.js +8 -13
  23. package/dist/components/agents-sdk/ManagerOffice.d.ts +168 -0
  24. package/dist/components/agents-sdk/ManagerOffice.js +698 -0
  25. package/dist/components/agents-sdk/McpConnectionRequest.js +3 -3
  26. package/dist/components/agents-sdk/McpConnectorForm.d.ts +1 -38
  27. package/dist/components/agents-sdk/McpPluginCatalog.d.ts +8 -2
  28. package/dist/components/agents-sdk/McpPluginCatalog.js +82 -62
  29. package/dist/components/agents-sdk/McpServerPicker.d.ts +1 -1
  30. package/dist/components/agents-sdk/McpServerPicker.js +2 -2
  31. package/dist/components/agents-sdk/ModelSelector.js +1 -1
  32. package/dist/components/agents-sdk/PromptInputCommands.js +1 -1
  33. package/dist/components/agents-sdk/SubagentRunDetails.d.ts +1 -9
  34. package/dist/components/agents-sdk/SubagentRunDetails.js +1 -9
  35. package/dist/components/agents-sdk/SubagentRunIndicator.js +1 -1
  36. package/dist/components/agents-sdk/SubagentRunSelector.d.ts +4 -2
  37. package/dist/components/agents-sdk/SubagentRunSelector.js +7 -6
  38. package/dist/components/agents-sdk/ThinkChat.d.ts +4 -4
  39. package/dist/components/agents-sdk/ThinkChatActivity.d.ts +1 -1
  40. package/dist/components/agents-sdk/ThinkChatActivity.js +18 -4
  41. package/dist/components/agents-sdk/ThinkChatToolPanels.js +7 -3
  42. package/dist/components/agents-sdk/ThinkExecutionDetail.d.ts +1 -1
  43. package/dist/components/agents-sdk/ThinkExecutionDetail.js +45 -43
  44. package/dist/components/agents-sdk/ThinkExecutionRun.d.ts +2 -2
  45. package/dist/components/agents-sdk/ThinkExecutionRun.js +5 -6
  46. package/dist/components/agents-sdk/ThinkExecutionStatus.d.ts +1 -1
  47. package/dist/components/agents-sdk/ThinkExecutionStatus.js +8 -12
  48. package/dist/components/agents-sdk/ThinkExecutionWorkbench.d.ts +8 -1
  49. package/dist/components/agents-sdk/ThinkExecutionWorkbench.js +43 -37
  50. package/dist/components/agents-sdk/ThinkFullApp.d.ts +42 -78
  51. package/dist/components/agents-sdk/ThinkFullApp.js +121 -202
  52. package/dist/components/agents-sdk/ThinkFullAppViewSwitch.d.ts +1 -1
  53. package/dist/components/agents-sdk/ThinkRoutine.d.ts +1 -1
  54. package/dist/components/agents-sdk/ThinkRoutineBrowser.js +1 -1
  55. package/dist/components/agents-sdk/ThinkRoutineDetail.js +4 -15
  56. package/dist/components/agents-sdk/ThinkRoutineForm.js +1 -1
  57. package/dist/components/agents-sdk/ThinkRoutineLibrary.d.ts +7 -6
  58. package/dist/components/agents-sdk/ThinkRoutineLibrary.js +112 -140
  59. package/dist/components/agents-sdk/ThinkRoutineRuns.d.ts +1 -1
  60. package/dist/components/agents-sdk/ThinkRoutineRuns.js +3 -10
  61. package/dist/components/agents-sdk/ThinkThreadPicker.js +2 -1
  62. package/dist/components/agents-sdk/WorkspaceBrowser.js +1 -1
  63. package/dist/components/agents-sdk/WorkspaceExplorer.js +2 -1
  64. package/dist/components/agents-sdk/WorkspaceFileView.js +1 -1
  65. package/dist/components/agents-sdk/WorkspaceHeader.js +2 -1
  66. package/dist/components/agents-sdk/WorkspaceMessageResponse.d.ts +1 -1
  67. package/dist/components/agents-sdk/WorkspaceMountManager.js +11 -11
  68. package/dist/components/ai-sdk/Activity.js +1 -1
  69. package/dist/components/ai-sdk/AgentAttention.d.ts +1 -1
  70. package/dist/components/ai-sdk/AgentChatStartScreen.js +1 -1
  71. package/dist/components/ai-sdk/Approval.js +1 -1
  72. package/dist/components/ai-sdk/Artifact.js +1 -1
  73. package/dist/components/ai-sdk/ChainOfThought.d.ts +1 -1
  74. package/dist/components/ai-sdk/ChainOfThought.js +1 -1
  75. package/dist/components/ai-sdk/Checkpoint.js +1 -1
  76. package/dist/components/ai-sdk/CodeBlock.js +1 -1
  77. package/dist/components/ai-sdk/Conversation.js +1 -1
  78. package/dist/components/ai-sdk/Goal.js +1 -1
  79. package/dist/components/ai-sdk/MediaPreviewCard.js +1 -1
  80. package/dist/components/ai-sdk/Message.d.ts +2 -2
  81. package/dist/components/ai-sdk/Message.js +25 -3
  82. package/dist/components/ai-sdk/MessageScroller.js +3 -2
  83. package/dist/components/ai-sdk/MessageScrollerVirtual.js +2 -1
  84. package/dist/components/ai-sdk/Plan.js +1 -1
  85. package/dist/components/ai-sdk/PromptInput.js +21 -15
  86. package/dist/components/ai-sdk/Queue.d.ts +4 -4
  87. package/dist/components/ai-sdk/Queue.js +6 -15
  88. package/dist/components/ai-sdk/Reasoning.js +1 -1
  89. package/dist/components/ai-sdk/Sources.js +1 -1
  90. package/dist/components/ai-sdk/Task.d.ts +2 -2
  91. package/dist/components/ai-sdk/Task.js +2 -2
  92. package/dist/components/extension/ChatGptSignInScreen.js +2 -1
  93. package/dist/components/extension/CodexModelSelector.js +1 -1
  94. package/dist/components/extension/ConversationTabPicker.js +1 -1
  95. package/dist/components/foundations/Avatar.d.ts +1 -10
  96. package/dist/components/foundations/Avatar.js +1 -10
  97. package/dist/components/foundations/Checkbox.js +1 -1
  98. package/dist/components/foundations/CheckboxGroup.js +1 -0
  99. package/dist/components/foundations/ContextMenu.js +1 -1
  100. package/dist/components/foundations/LinkButton.d.ts +12 -10
  101. package/dist/components/foundations/LinkButton.js +15 -11
  102. package/dist/components/foundations/Menubar.js +1 -1
  103. package/dist/components/foundations/SearchField.js +1 -1
  104. package/dist/components/foundations/Select.js +1 -1
  105. package/dist/components/foundations/Stepper.js +1 -1
  106. package/dist/components/foundations/Toast.js +1 -1
  107. package/dist/components/foundations/ToggleGroup.d.ts +79 -1
  108. package/dist/components/foundations/icons.d.ts +2 -2
  109. package/dist/components/foundations/icons.js +2 -2
  110. package/dist/components/general-purpose/AppFrame.js +1 -0
  111. package/dist/components/general-purpose/AppTopBar.d.ts +6 -0
  112. package/dist/components/general-purpose/AppTopBar.js +2 -1
  113. package/dist/components/general-purpose/Commit.d.ts +2 -2
  114. package/dist/components/general-purpose/Commit.js +5 -13
  115. package/dist/components/general-purpose/EnvironmentVariables.d.ts +2 -2
  116. package/dist/components/general-purpose/EnvironmentVariables.js +4 -7
  117. package/dist/components/general-purpose/FileTree.js +1 -1
  118. package/dist/components/general-purpose/PricingBillingToggle.js +4 -9
  119. package/dist/components/general-purpose/PricingPlanCard.js +15 -14
  120. package/dist/components/general-purpose/ResizableSidePanel.d.ts +8 -0
  121. package/dist/components/general-purpose/ResizableSidePanel.js +3 -2
  122. package/dist/components/general-purpose/ResponsiveSidebarShell.d.ts +105 -2
  123. package/dist/components/general-purpose/ResponsiveSidebarShell.js +112 -56
  124. package/dist/components/general-purpose/SetupChecklist.js +1 -1
  125. package/dist/components/general-purpose/Terminal.d.ts +1 -1
  126. package/dist/components/general-purpose/Terminal.js +4 -12
  127. package/dist/components/general-purpose/TestResults.d.ts +1 -1
  128. package/dist/components/general-purpose/TestResults.js +8 -21
  129. package/dist/components/general-purpose/ThemeModeControl.js +1 -1
  130. package/dist/components/general-purpose/WebPreview.d.ts +4 -1
  131. package/dist/components/general-purpose/WebPreview.js +6 -14
  132. package/dist/components/nanites/AgentConnection.js +2 -2
  133. package/dist/components/nanites/AgentToolDetail.d.ts +1 -1
  134. package/dist/components/nanites/AgentToolDetail.js +6 -5
  135. package/dist/components/nanites/NaniteScene.js +11 -11
  136. package/dist/{copy-button-Bc7jsYv_.js → copy-button-lys9N_aI.js} +1 -1
  137. package/dist/{icons-DwgNir1Q.d.ts → icons-0corjfxR.d.ts} +1 -16
  138. package/dist/{icons-MmIXciMO.js → icons-CVFSeTJn.js} +2 -5
  139. package/dist/styles/accordion.css +1 -0
  140. package/dist/styles/action-guide.css +8 -7
  141. package/dist/styles/activity-header.css +13 -39
  142. package/dist/styles/activity.css +40 -55
  143. package/dist/styles/agent-attention.css +19 -19
  144. package/dist/styles/agent-chat.css +94 -42
  145. package/dist/styles/agent-connection.css +10 -4
  146. package/dist/styles/agent-tool-detail.css +5 -15
  147. package/dist/styles/alert-dialog.css +4 -4
  148. package/dist/styles/app-frame.css +1 -3
  149. package/dist/styles/app-icon.css +12 -18
  150. package/dist/styles/app-top-bar.css +31 -9
  151. package/dist/styles/approval.css +1 -0
  152. package/dist/styles/artifact.css +6 -6
  153. package/dist/styles/attachment-preview.css +5 -4
  154. package/dist/styles/avatar.css +6 -22
  155. package/dist/styles/base.css +2 -8
  156. package/dist/styles/browser-live-screen.css +38 -0
  157. package/dist/styles/browser-live-view.css +12 -4
  158. package/dist/styles/browser-replay.css +6 -6
  159. package/dist/styles/browser-run-panel.css +21 -18
  160. package/dist/styles/button.css +15 -6
  161. package/dist/styles/card.css +5 -5
  162. package/dist/styles/chatgpt-sign-in-screen.css +6 -6
  163. package/dist/styles/code-block.css +14 -13
  164. package/dist/styles/codex-model-selector.css +2 -0
  165. package/dist/styles/collapsible.css +1 -0
  166. package/dist/styles/commit.css +30 -7
  167. package/dist/styles/context.css +9 -9
  168. package/dist/styles/conversation-tab-picker.css +1 -1
  169. package/dist/styles/conversation.css +6 -8
  170. package/dist/styles/dialog.css +4 -4
  171. package/dist/styles/empty-state.css +3 -3
  172. package/dist/styles/environment-variables.css +12 -9
  173. package/dist/styles/field.css +2 -1
  174. package/dist/styles/fieldset.css +2 -2
  175. package/dist/styles/index.css +8 -7
  176. package/dist/styles/manager-office.css +480 -0
  177. package/dist/styles/mcp-plugin-catalog.css +44 -39
  178. package/dist/styles/mcp-server-picker.css +4 -4
  179. package/dist/styles/message-scroller.css +9 -11
  180. package/dist/styles/message.css +74 -28
  181. package/dist/styles/nanite-scene.css +9 -9
  182. package/dist/styles/navigation-menu.css +1 -0
  183. package/dist/styles/plan.css +13 -12
  184. package/dist/styles/pricing-page.css +37 -30
  185. package/dist/styles/prompt-input.css +26 -18
  186. package/dist/styles/queue.css +1 -0
  187. package/dist/styles/reasoning.css +1 -9
  188. package/dist/styles/recipes.css +29 -58
  189. package/dist/styles/responsive-sidebar-shell.css +107 -29
  190. package/dist/styles/separator.css +5 -5
  191. package/dist/styles/sources.css +4 -4
  192. package/dist/styles/stepper.css +1 -0
  193. package/dist/styles/streamdown.css +31 -21
  194. package/dist/styles/subagent-run.css +20 -3
  195. package/dist/styles/tabs.css +1 -0
  196. package/dist/styles/task.css +5 -17
  197. package/dist/styles/terminal.css +29 -10
  198. package/dist/styles/test-results.css +16 -7
  199. package/dist/styles/think-execution-status.css +10 -26
  200. package/dist/styles/think-execution-workbench.css +98 -108
  201. package/dist/styles/think-full-app.css +75 -225
  202. package/dist/styles/think-routine-library.css +26 -95
  203. package/dist/styles/think-thread-picker.css +17 -12
  204. package/dist/styles/transition-surface.css +7 -8
  205. package/dist/styles/utilities.css +75 -0
  206. package/dist/styles/web-preview.css +46 -22
  207. package/dist/styles/workspace-explorer.css +22 -44
  208. package/dist/styles/workspace-mount-manager.css +24 -2
  209. package/dist/utils/favicon.d.ts +6 -1
  210. package/dist/utils/favicon.js +18 -1
  211. package/package.json +37 -35
  212. package/dist/ResponsiveSidebarShell-DWjULskY.d.ts +0 -68
  213. package/dist/ToggleGroup-_pQMyHGM.d.ts +0 -80
  214. package/dist/components/agents-sdk/AgentActivityPreview.d.ts +0 -46
  215. package/dist/components/agents-sdk/AgentActivityPreview.js +0 -93
  216. package/dist/components/agents-sdk/ThinkThreadShell.d.ts +0 -38
  217. package/dist/components/agents-sdk/ThinkThreadShell.js +0 -27
  218. package/dist/components/foundations/Badge.d.ts +0 -62
  219. package/dist/components/foundations/Badge.js +0 -55
  220. package/dist/components/foundations/StatusPill.d.ts +0 -43
  221. package/dist/components/foundations/StatusPill.js +0 -35
  222. package/dist/components/general-purpose/Shell.d.ts +0 -149
  223. package/dist/components/general-purpose/Shell.js +0 -116
  224. package/dist/styles/agent-activity-preview-overlay.css +0 -169
  225. package/dist/styles/agent-activity-preview.css +0 -209
  226. package/dist/styles/badge.css +0 -120
  227. package/dist/styles/shell.css +0 -122
  228. package/dist/styles/status-pill.css +0 -39
@@ -1,73 +1,23 @@
1
- .think-thread-shell {
2
- container-name: responsive-sidebar-shell think-full-app;
3
- }
4
-
5
1
  .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
2
  position: relative;
12
3
  container: think-full-app / inline-size;
13
- block-size: 100%;
14
- min-block-size: 0;
15
- min-inline-size: 0;
16
4
  display: grid;
17
- grid-template-rows: minmax(0, 1fr);
18
- background: var(--sigvelo-color-surface-under);
5
+ grid-template-rows: var(--sigvelo-layout-track-fill);
6
+ background: var(--sigvelo-color-surface);
19
7
  color: var(--sigvelo-color-text);
20
8
  font-family: inherit;
21
9
  }
22
10
 
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
11
  .think-full-app__view-scope {
28
12
  grid-column: 1;
29
13
  grid-row: 1;
30
14
  min-inline-size: 0;
31
15
  min-block-size: 0;
32
16
  display: grid;
33
- grid-template-columns: minmax(0, 1fr) var(--resizable-side-panel-size, 21.25rem);
34
- 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);
63
- }
64
-
65
- .think-full-app__mobile-view-switch {
66
- display: none;
67
- }
68
-
69
- .think-full-app__thread-trigger {
70
- display: none;
17
+ /* Conversation first and sized, workbench second and greedy. */
18
+ grid-template-columns: auto var(--sigvelo-layout-track-fill);
19
+ grid-template-rows: var(--sigvelo-layout-track-fill);
20
+ margin: var(--sigvelo-layout-gutter);
71
21
  }
72
22
 
73
23
  .think-full-app__view-switch {
@@ -76,67 +26,65 @@
76
26
  background: transparent;
77
27
  }
78
28
 
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);
84
- }
85
-
86
29
  .think-full-app__chat-surface {
87
30
  grid-column: 1;
88
31
  grid-row: 1;
32
+ /* The conversation carries the resize, so the workbench can simply take the
33
+ rest of the row. */
34
+ inline-size: var(--think-full-app-conversation-size, var(--sigvelo-layout-conversation));
89
35
  min-inline-size: 0;
90
36
  min-block-size: 0;
91
37
  display: grid;
92
- grid-template-columns: minmax(0, 1fr);
93
- grid-template-rows: minmax(0, 1fr);
38
+ grid-template-columns: var(--sigvelo-layout-track-fill);
39
+ grid-template-rows: var(--sigvelo-layout-track-fill);
94
40
  overflow: hidden;
95
- background: var(--sigvelo-color-surface);
41
+ transition: inline-size var(--sigvelo-motion-duration-layout) var(--sigvelo-motion-ease-change);
42
+ }
43
+
44
+ /* A length rather than `auto`: closing has to interpolate from the open width,
45
+ and a length-to-auto transition never finishes. */
46
+ .think-full-app[data-has-workbench="false"] .think-full-app__chat-surface {
47
+ inline-size: calc(100cqi - var(--sigvelo-layout-gutter) * 2);
48
+ }
49
+
50
+ body.is-resizing-side-panel .think-full-app__chat-surface {
51
+ transition: none;
96
52
  }
97
53
 
98
54
  .think-full-app__chat,
99
55
  .think-full-app__chat-inner {
100
- --agent-chat-content-max-inline-size: 46rem;
56
+ --agent-chat-content-max-inline-size: var(--sigvelo-measure-wide-block);
101
57
  min-inline-size: 0;
102
58
  min-block-size: 0;
103
59
  display: grid;
104
- grid-template-columns: minmax(0, 1fr);
105
- grid-template-rows: minmax(0, 1fr);
60
+ grid-template-columns: var(--sigvelo-layout-track-fill);
61
+ grid-template-rows: var(--sigvelo-layout-track-fill);
106
62
  overflow: hidden;
107
63
  }
108
64
 
109
65
  .think-full-app__chat-inner {
110
- grid-template-rows: minmax(0, 1fr) auto;
66
+ grid-template-rows: var(--sigvelo-layout-track-fill) auto;
111
67
  }
112
68
 
69
+ /* Transparent column: the aside positions the plane, it is not a material of
70
+ its own. */
113
71
  .think-full-app__aside {
114
72
  grid-column: 2;
115
73
  grid-row: 1;
116
74
  min-inline-size: 0;
117
75
  min-block-size: 0;
118
76
  display: grid;
119
- 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
- );
77
+ grid-template-rows: var(--sigvelo-layout-track-fill);
78
+ /* A margin, not a column gap: with no panels at all the aside is absent and
79
+ a gap would still hold its track open. */
80
+ margin-inline-start: var(--sigvelo-layout-gap);
128
81
  }
129
82
 
130
83
  .think-full-app__resizer {
131
84
  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;
85
+ /* Centre the handle in the column gap rather than on the grid edge: the
86
+ conversation is inset by the gutter and the gap sits beyond its edge. */
87
+ translate: calc(var(--sigvelo-layout-gap) * 1.5) 0;
140
88
  }
141
89
 
142
90
  .think-full-app__workbench-slot,
@@ -150,12 +98,11 @@ body.is-resizing-side-panel .think-full-app__view-scope {
150
98
  overflow: hidden;
151
99
  }
152
100
 
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
- );
101
+ /* The app's one raised plane. Panels fill it and never draw a second edge. */
102
+ .think-full-app__workbench-slot {
103
+ border-radius: var(--sigvelo-radius-lg);
104
+ background: var(--sigvelo-color-surface-raised);
105
+ box-shadow: var(--sigvelo-elevation-floating);
159
106
  }
160
107
 
161
108
  /* The panel stands in for itself while its first read is in flight, so the
@@ -164,84 +111,53 @@ body.is-resizing-side-panel .think-full-app__view-scope {
164
111
  justify-content: center;
165
112
  }
166
113
 
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
114
  .think-full-app__workbench-panel {
178
115
  padding: 0;
179
116
  }
180
117
 
118
+ /* Host panels fill the plane rather than sizing to their content. Only visible
119
+ once the plane became the wide side of the split. */
120
+ .think-full-app__workbench-panel > * {
121
+ flex: 1;
122
+ min-block-size: 0;
123
+ }
124
+
181
125
  .think-full-app__workbench-panel:focus-visible {
182
126
  outline: 2px solid var(--sigvelo-color-focus);
183
127
  outline-offset: -2px;
184
128
  }
185
129
 
130
+ /* 56rem matches --sigvelo-layout-break-compact. Container queries cannot read var(). */
186
131
  @container think-full-app (inline-size <= 56rem) {
132
+ /* A side panel or phone has no desktop chrome around the app, so an inset
133
+ plane reads as a card in a frame. Flatten to one edge-to-edge surface,
134
+ app bar included — the frame never shows. */
187
135
  .think-full-app__view-scope {
188
- grid-template-columns: minmax(0, 1fr);
189
- }
190
-
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 {
136
+ grid-template-columns: var(--sigvelo-layout-track-fill);
196
137
  margin: 0;
197
- border-radius: 0;
198
- box-shadow: none;
199
- }
200
-
201
- .think-full-app > .think-full-app__app-bar {
202
- background: var(--sigvelo-color-surface);
203
- }
204
-
205
- .think-full-app__workbench-view-switch {
206
- display: none;
207
- }
208
-
209
- .think-full-app__mobile-view-switch {
210
- display: flex;
138
+ overflow: hidden;
211
139
  }
212
140
 
213
- .think-full-app__app-title {
214
- display: none;
141
+ .think-full-app__aside {
142
+ margin-inline-start: 0;
215
143
  }
216
144
 
217
- .think-full-app__thread-trigger {
145
+ /* Compact swaps between the two rather than seating them side by side, so
146
+ neither carries the desktop split's width. Repeat the closed-workbench
147
+ attribute so this beats `.think-full-app[data-has-workbench="false"]`. */
148
+ .think-full-app .think-full-app__chat-surface,
149
+ .think-full-app[data-has-workbench="false"] .think-full-app__chat-surface {
218
150
  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;
151
+ transition: none;
233
152
  }
234
153
 
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;
154
+ /* .think-full-app__workbench needs the extra class: panels that paint
155
+ themselves raised are defined after this stylesheet. */
156
+ .think-full-app__workbench-slot,
157
+ .think-full-app .think-full-app__workbench {
158
+ border-radius: 0;
159
+ background: var(--sigvelo-color-surface);
160
+ box-shadow: none;
245
161
  }
246
162
 
247
163
  .think-full-app__chat-surface,
@@ -261,7 +177,6 @@ body.is-resizing-side-panel .think-full-app__view-scope {
261
177
 
262
178
  .think-full-app__aside {
263
179
  display: contents;
264
- border-inline-start: 0;
265
180
  }
266
181
 
267
182
  .think-full-app__resizer {
@@ -274,85 +189,20 @@ body.is-resizing-side-panel .think-full-app__view-scope {
274
189
 
275
190
  .think-full-app__chat,
276
191
  .think-full-app__chat-inner {
277
- --agent-chat-content-max-inline-size: 34rem;
278
- }
279
-
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 {
345
- display: none;
192
+ /* Codex side panel: --thread-content-max-width: 100% and
193
+ --padding-toolbar: spacing*2 (8px). A 68ch cap left the transcript
194
+ as a start-aligned island in the pane. */
195
+ --agent-chat-content-max-inline-size: 100%;
196
+ --agent-chat-column-inset: var(--sigvelo-spacing-2);
346
197
  }
347
198
  }
348
199
 
349
200
  @media (forced-colors: active) {
350
201
  .think-full-app,
351
202
  .think-full-app__chat-surface,
352
- .think-full-app__aside,
203
+ .think-full-app__workbench-slot,
353
204
  .think-full-app__workbench,
354
- .think-full-app__app-bar,
355
- .think-full-app__workbench-view-switch {
205
+ .think-full-app__app-bar {
356
206
  border: var(--sigvelo-border-style) var(--sigvelo-border-width) canvastext;
357
207
  background: canvas;
358
208
  color: canvastext;
@@ -1,14 +1,7 @@
1
+ /* The shell is the library's root element; only its overrides live here. */
1
2
  .think-routine-library {
2
- position: relative;
3
- min-inline-size: 0;
4
3
  min-block-size: 38rem;
5
- block-size: 100%;
6
- display: grid;
7
- grid-template-rows: auto minmax(0, 1fr);
8
- overflow: hidden;
9
- color: var(--sigvelo-color-text);
10
4
  background: var(--sigvelo-color-canvas);
11
- container-type: inline-size;
12
5
  }
13
6
 
14
7
  .think-routine-detail,
@@ -20,25 +13,6 @@
20
13
  block-size: 100%;
21
14
  }
22
15
 
23
- .think-routine-library__error {
24
- position: absolute;
25
- z-index: 2;
26
- inset-block-start: var(--sigvelo-spacing-3);
27
- inset-inline: 50% auto;
28
- max-inline-size: min(32rem, calc(100% - 2rem));
29
- padding: var(--sigvelo-spacing-2) var(--sigvelo-spacing-3);
30
- border: var(--sigvelo-border-style) var(--sigvelo-border-width)
31
- var(--sigvelo-color-danger-border-subtle);
32
- border-radius: var(--sigvelo-radius-sm);
33
- translate: -50% 0;
34
- display: flex;
35
- align-items: center;
36
- gap: var(--sigvelo-spacing-2);
37
- color: var(--sigvelo-color-danger-text);
38
- background: var(--sigvelo-color-danger-bg-subtle);
39
- font-size: var(--sigvelo-text-compact);
40
- }
41
-
42
16
  .think-routine-library__detail-header h1,
43
17
  .think-routine-library__create-header h1 {
44
18
  margin: 0;
@@ -55,47 +29,11 @@
55
29
  text-transform: uppercase;
56
30
  }
57
31
 
58
- .think-routine-library__layout {
59
- grid-row: 1 / -1;
60
- min-block-size: 0;
61
- block-size: 100%;
62
- }
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
32
  .think-routine-library__browser {
95
33
  min-inline-size: 0;
96
34
  min-block-size: 0;
97
35
  overflow: auto;
98
- padding: var(--sigvelo-spacing-3) var(--sigvelo-spacing-2);
36
+ padding: var(--sigvelo-layout-gutter) var(--sigvelo-layout-cluster);
99
37
  border-inline-end: var(--sigvelo-border-style) var(--sigvelo-border-width)
100
38
  var(--sigvelo-color-neutral-border-subtle);
101
39
  background: color-mix(
@@ -109,15 +47,15 @@
109
47
  display: flex;
110
48
  align-items: center;
111
49
  justify-content: space-between;
112
- gap: var(--sigvelo-spacing-2);
50
+ gap: var(--sigvelo-layout-cluster);
113
51
  margin-block-end: var(--sigvelo-spacing-2);
114
52
  }
115
53
 
116
- .think-routine-library__layout[data-sidebar-open="true"] .think-routine-library__browser-toolbar {
54
+ .think-routine-library[data-sidebar-open="true"] .think-routine-library__browser-toolbar {
117
55
  padding-inline-start: var(--sigvelo-spacing-12);
118
56
  }
119
57
 
120
- .think-routine-library__layout[data-sidebar-open="false"] .think-routine-library__detail {
58
+ .think-routine-library[data-sidebar-open="false"] .think-routine-library__detail {
121
59
  padding-block-start: clamp(3.75rem, 6vw, 4.5rem);
122
60
  }
123
61
 
@@ -155,7 +93,7 @@
155
93
  inline-size: 100%;
156
94
  min-block-size: var(--sigvelo-spacing-14);
157
95
  display: grid;
158
- grid-template-columns: auto minmax(0, 1fr);
96
+ grid-template-columns: auto var(--sigvelo-layout-track-fill);
159
97
  align-items: center;
160
98
  gap: var(--sigvelo-spacing-2);
161
99
  padding: var(--sigvelo-spacing-2);
@@ -208,38 +146,28 @@
208
146
  overflow: auto;
209
147
  }
210
148
 
211
- @container responsive-sidebar-shell (inline-size <= 56rem) {
212
- .think-routine-library__layout .responsive-sidebar-shell__toggle {
213
- display: none;
214
- }
215
- }
216
-
217
149
  .think-routine-library__detail {
218
- inline-size: min(100%, 64rem);
150
+ inline-size: min(100%, var(--sigvelo-layout-content));
219
151
  margin-inline: auto;
220
- padding: clamp(var(--sigvelo-spacing-4), 3vw, var(--sigvelo-spacing-8));
152
+ padding: clamp(var(--sigvelo-layout-stack), 3vw, var(--sigvelo-spacing-8));
221
153
  }
222
154
 
223
155
  .think-routine-library__detail-header,
224
156
  .think-routine-library__create-header {
225
157
  display: flex;
226
158
  align-items: flex-start;
227
- gap: var(--sigvelo-spacing-4);
159
+ gap: var(--sigvelo-layout-stack);
228
160
  }
229
161
 
230
162
  .think-routine-library__detail-header {
231
163
  justify-content: space-between;
232
- padding-block-end: clamp(var(--sigvelo-spacing-4), 3vw, var(--sigvelo-spacing-8));
164
+ padding-block-end: clamp(var(--sigvelo-layout-stack), 3vw, var(--sigvelo-spacing-8));
233
165
  }
234
166
 
235
167
  .think-routine-library__detail-heading {
236
168
  min-inline-size: 0;
237
169
  }
238
170
 
239
- .think-routine-library__state {
240
- margin-block-end: var(--sigvelo-spacing-2);
241
- }
242
-
243
171
  .think-routine-library__detail-header h1,
244
172
  .think-routine-library__create-header h1 {
245
173
  font-size: clamp(var(--sigvelo-text-lg), 2.5vw, var(--sigvelo-text-2xl));
@@ -290,7 +218,7 @@
290
218
 
291
219
  .think-routine-library__facts > div {
292
220
  display: grid;
293
- grid-template-columns: 5.5rem minmax(0, 1fr);
221
+ grid-template-columns: 5.5rem var(--sigvelo-layout-track-fill);
294
222
  gap: var(--sigvelo-spacing-3);
295
223
  padding-block: var(--sigvelo-spacing-2-5);
296
224
  border-block-end: var(--sigvelo-border-style) var(--sigvelo-border-width)
@@ -349,7 +277,7 @@
349
277
 
350
278
  /* One rule, not two — this selector was declared twice in this file. */
351
279
  .think-routine-library__empty-runs {
352
- --sigvelo-recipe-empty-state-padding-block: var(--sigvelo-spacing-4);
280
+ --sigvelo-recipe-empty-state-padding-block: var(--sigvelo-layout-stack);
353
281
 
354
282
  border-block: var(--sigvelo-border-style) var(--sigvelo-border-width)
355
283
  var(--sigvelo-color-neutral-border-subtle);
@@ -369,7 +297,7 @@
369
297
 
370
298
  .think-routine-library__create-header,
371
299
  .think-routine-library__form {
372
- inline-size: min(100%, 46rem);
300
+ inline-size: min(100%, var(--sigvelo-layout-content));
373
301
  margin-inline: auto;
374
302
  }
375
303
 
@@ -383,47 +311,50 @@
383
311
 
384
312
  .think-routine-library__form {
385
313
  display: grid;
386
- gap: var(--sigvelo-spacing-3);
314
+ gap: var(--sigvelo-layout-gutter);
387
315
  }
388
316
 
389
317
  .think-routine-library__form-row {
390
318
  display: grid;
391
- grid-template-columns: repeat(2, minmax(0, 1fr));
392
- gap: var(--sigvelo-spacing-4);
319
+ grid-template-columns: repeat(2, var(--sigvelo-layout-track-fill));
320
+ gap: var(--sigvelo-layout-stack);
393
321
  }
394
322
 
395
323
  .think-routine-library__select-field {
396
324
  min-inline-size: 0;
397
325
  display: grid;
398
- gap: var(--sigvelo-spacing-3);
326
+ gap: var(--sigvelo-layout-gutter);
399
327
  }
400
328
 
401
329
  .think-routine-library__form-actions {
402
330
  display: flex;
403
331
  justify-content: flex-end;
404
- gap: var(--sigvelo-spacing-2);
405
- padding-block-start: var(--sigvelo-spacing-4);
332
+ gap: var(--sigvelo-layout-cluster);
333
+ padding-block-start: var(--sigvelo-layout-stack);
406
334
  border-block-start: var(--sigvelo-border-style) var(--sigvelo-border-width)
407
335
  var(--sigvelo-color-neutral-border-subtle);
408
336
  }
409
337
 
410
- @container (width < 52rem) {
338
+ /* Local wrap. Not --sigvelo-layout-break-compact. */
339
+ @container (inline-size < 52rem) {
411
340
  .think-routine-library__detail-grid {
412
- grid-template-columns: minmax(0, 1fr);
341
+ grid-template-columns: var(--sigvelo-layout-track-fill);
413
342
  }
414
343
  }
415
344
 
416
- @container (width < 40rem) {
345
+ /* Local wrap. Not --sigvelo-layout-break-compact. */
346
+ @container (inline-size < 40rem) {
417
347
  .think-routine-library__detail-header,
418
348
  .think-routine-library__create-header {
419
349
  flex-wrap: wrap;
420
350
  }
421
351
 
422
352
  .think-routine-library__form-row {
423
- grid-template-columns: minmax(0, 1fr);
353
+ grid-template-columns: var(--sigvelo-layout-track-fill);
424
354
  }
425
355
  }
426
356
 
357
+ /* 56rem matches --sigvelo-layout-break-compact. Container queries cannot read var(). */
427
358
  @container responsive-sidebar-shell (inline-size <= 56rem) {
428
359
  .think-routine-library__browser {
429
360
  inline-size: 100%;