@mcp-b/react-components 0.41.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 (114) hide show
  1. package/dist/{ThinkChatActivity-DyGHj01E.d.ts → ThinkChatActivity-CsDql-ER.d.ts} +3 -0
  2. package/dist/{WorkspaceFileView-D0yFwoDr.js → WorkspaceFileView-DwdXiKku.js} +15 -20
  3. package/dist/components/agents-sdk/AgentActivity.js +3 -2
  4. package/dist/components/agents-sdk/AgentChat.js +1 -0
  5. package/dist/components/agents-sdk/BrowserRunPanel.js +2 -1
  6. package/dist/components/agents-sdk/ManagerOffice.d.ts +39 -27
  7. package/dist/components/agents-sdk/ManagerOffice.js +80 -44
  8. package/dist/components/agents-sdk/McpPluginCatalog.js +4 -2
  9. package/dist/components/agents-sdk/ModelSelector.js +1 -1
  10. package/dist/components/agents-sdk/SubagentRunSelector.js +1 -1
  11. package/dist/components/agents-sdk/ThinkChat.d.ts +1 -1
  12. package/dist/components/agents-sdk/ThinkChat.js +1 -1
  13. package/dist/components/agents-sdk/ThinkChatActivity.d.ts +1 -1
  14. package/dist/components/agents-sdk/ThinkChatActivity.js +19 -5
  15. package/dist/components/agents-sdk/ThinkChatToolPanels.js +6 -2
  16. package/dist/components/agents-sdk/ThinkExecutionDetail.js +3 -1
  17. package/dist/components/agents-sdk/ThinkExecutionWorkbench.js +1 -0
  18. package/dist/components/agents-sdk/ThinkFullApp.d.ts +40 -88
  19. package/dist/components/agents-sdk/ThinkFullApp.js +75 -124
  20. package/dist/components/agents-sdk/ThinkFullAppViewSwitch.d.ts +1 -1
  21. package/dist/components/agents-sdk/ThinkFullAppViewSwitch.js +1 -1
  22. package/dist/components/agents-sdk/ThinkRoutineDetail.js +1 -1
  23. package/dist/components/agents-sdk/ThinkRoutineLibrary.d.ts +7 -6
  24. package/dist/components/agents-sdk/ThinkRoutineLibrary.js +57 -65
  25. package/dist/components/agents-sdk/ThinkThreadPicker.js +2 -1
  26. package/dist/components/agents-sdk/WorkspaceExplorer.js +2 -1
  27. package/dist/components/agents-sdk/WorkspaceFileView.js +1 -1
  28. package/dist/components/ai-sdk/MessageScroller.js +2 -1
  29. package/dist/components/ai-sdk/MessageScrollerVirtual.js +1 -0
  30. package/dist/components/ai-sdk/PromptInput.js +20 -14
  31. package/dist/components/extension/ChatGptSignInScreen.js +1 -0
  32. package/dist/components/foundations/ToggleGroup.d.ts +79 -1
  33. package/dist/components/foundations/ToggleGroup.js +1 -1
  34. package/dist/components/foundations/Toolbar.d.ts +151 -1
  35. package/dist/components/general-purpose/AppFrame.js +1 -0
  36. package/dist/components/general-purpose/AppTopBar.d.ts +96 -1
  37. package/dist/components/general-purpose/PricingBillingToggle.js +1 -1
  38. package/dist/components/general-purpose/PricingUsageCalculator.js +1 -1
  39. package/dist/components/general-purpose/ResizableSidePanel.d.ts +8 -0
  40. package/dist/components/general-purpose/ResizableSidePanel.js +3 -2
  41. package/dist/components/general-purpose/ResponsiveSidebarShell.d.ts +59 -49
  42. package/dist/components/general-purpose/ResponsiveSidebarShell.js +74 -74
  43. package/dist/components/general-purpose/WebPreview.d.ts +3 -0
  44. package/dist/components/general-purpose/WebPreview.js +2 -2
  45. package/dist/components/nanites/AgentToolDetail.js +4 -3
  46. package/dist/styles/accordion.css +1 -0
  47. package/dist/styles/action-guide.css +8 -7
  48. package/dist/styles/activity-header.css +13 -39
  49. package/dist/styles/activity.css +40 -55
  50. package/dist/styles/agent-attention.css +14 -14
  51. package/dist/styles/agent-chat.css +62 -45
  52. package/dist/styles/agent-connection.css +10 -4
  53. package/dist/styles/agent-tool-detail.css +4 -4
  54. package/dist/styles/alert-dialog.css +4 -4
  55. package/dist/styles/app-frame.css +1 -3
  56. package/dist/styles/app-top-bar.css +5 -9
  57. package/dist/styles/approval.css +1 -0
  58. package/dist/styles/artifact.css +6 -6
  59. package/dist/styles/attachment-preview.css +5 -4
  60. package/dist/styles/browser-replay.css +6 -6
  61. package/dist/styles/browser-run-panel.css +1 -0
  62. package/dist/styles/button.css +15 -6
  63. package/dist/styles/card.css +5 -5
  64. package/dist/styles/chatgpt-sign-in-screen.css +1 -1
  65. package/dist/styles/code-block.css +14 -13
  66. package/dist/styles/codex-model-selector.css +2 -0
  67. package/dist/styles/collapsible.css +1 -0
  68. package/dist/styles/commit.css +6 -6
  69. package/dist/styles/context.css +9 -9
  70. package/dist/styles/conversation-tab-picker.css +1 -1
  71. package/dist/styles/conversation.css +6 -8
  72. package/dist/styles/dialog.css +4 -4
  73. package/dist/styles/empty-state.css +3 -3
  74. package/dist/styles/environment-variables.css +9 -9
  75. package/dist/styles/field.css +2 -1
  76. package/dist/styles/fieldset.css +2 -2
  77. package/dist/styles/index.css +3 -3
  78. package/dist/styles/manager-office.css +23 -29
  79. package/dist/styles/mcp-plugin-catalog.css +11 -10
  80. package/dist/styles/mcp-server-picker.css +3 -3
  81. package/dist/styles/message-scroller.css +9 -11
  82. package/dist/styles/message.css +43 -20
  83. package/dist/styles/navigation-menu.css +1 -0
  84. package/dist/styles/plan.css +13 -12
  85. package/dist/styles/pricing-page.css +26 -23
  86. package/dist/styles/prompt-input.css +18 -5
  87. package/dist/styles/queue.css +1 -0
  88. package/dist/styles/reasoning.css +1 -9
  89. package/dist/styles/recipes.css +28 -1
  90. package/dist/styles/responsive-sidebar-shell.css +44 -16
  91. package/dist/styles/separator.css +5 -5
  92. package/dist/styles/sources.css +4 -4
  93. package/dist/styles/stepper.css +1 -0
  94. package/dist/styles/streamdown.css +31 -21
  95. package/dist/styles/tabs.css +1 -0
  96. package/dist/styles/task.css +5 -17
  97. package/dist/styles/terminal.css +10 -10
  98. package/dist/styles/test-results.css +6 -6
  99. package/dist/styles/think-execution-status.css +2 -2
  100. package/dist/styles/think-execution-workbench.css +12 -15
  101. package/dist/styles/think-full-app.css +26 -64
  102. package/dist/styles/think-routine-library.css +26 -55
  103. package/dist/styles/think-thread-picker.css +9 -9
  104. package/dist/styles/utilities.css +33 -0
  105. package/dist/styles/web-preview.css +20 -19
  106. package/dist/styles/workspace-explorer.css +18 -21
  107. package/dist/styles/workspace-mount-manager.css +2 -2
  108. package/dist/utils/favicon.d.ts +6 -1
  109. package/dist/utils/favicon.js +18 -1
  110. package/package.json +2 -2
  111. package/dist/AppTopBar-ZdgmB_Lu.d.ts +0 -97
  112. package/dist/ToggleGroup-BrQZOQn_.d.ts +0 -80
  113. package/dist/Toolbar-CBOseBQr.d.ts +0 -152
  114. package/dist/{ThinkChat-BES_3Mb-.js → ThinkChat-DkA4Wr71.js} +1 -1
@@ -5,7 +5,7 @@
5
5
  inline-size: 100%;
6
6
  min-block-size: var(--sigvelo-control-height-xs);
7
7
  padding-block: var(--sigvelo-spacing-0-5);
8
- padding-inline: var(--sigvelo-spacing-2);
8
+ padding-inline: 0;
9
9
  /* Ploy-style: hairline outline on the canvas, plain content inside */
10
10
  background-color: transparent;
11
11
  border: var(--sigvelo-border-style) var(--sigvelo-border-width)
@@ -13,7 +13,7 @@
13
13
  border-radius: var(--sigvelo-radius-md);
14
14
  color: var(--sigvelo-color-text-muted);
15
15
  font-family: inherit;
16
- font-size: var(--sigvelo-text-compact);
16
+ font-size: var(--sigvelo-text-prose);
17
17
  font-weight: var(--sigvelo-font-weight-semibold);
18
18
  text-align: start;
19
19
  cursor: pointer;
@@ -55,7 +55,7 @@
55
55
  gap: var(--sigvelo-spacing-1-5);
56
56
  margin: 0;
57
57
  padding-block: var(--sigvelo-spacing-2);
58
- padding-inline: var(--sigvelo-spacing-3);
58
+ padding-inline: 0;
59
59
  list-style: none;
60
60
  /* Bounded so expanding never blows out the conversation scroll position */
61
61
  max-block-size: 20rem;
@@ -69,23 +69,11 @@
69
69
  }
70
70
 
71
71
  .task__item {
72
- position: relative;
73
- font-size: var(--sigvelo-text-compact);
72
+ font-size: var(--sigvelo-text-prose);
74
73
  color: var(--sigvelo-color-text);
75
74
  line-height: var(--sigvelo-leading-relaxed);
76
75
  }
77
76
 
78
- .task__item::before {
79
- content: "";
80
- position: absolute;
81
- inset-inline-start: calc(-1 * var(--sigvelo-spacing-2));
82
- inset-block-start: var(--sigvelo-spacing-2-5);
83
- inline-size: var(--sigvelo-spacing-1);
84
- block-size: var(--sigvelo-spacing-1);
85
- border-radius: var(--sigvelo-radius-full);
86
- background-color: var(--sigvelo-color-neutral-border-muted);
87
- }
88
-
89
77
  @media (any-pointer: coarse) {
90
78
  .task__trigger {
91
79
  min-block-size: var(--sigvelo-control-height-xl);
@@ -102,7 +90,7 @@
102
90
  background-color: var(--sigvelo-color-neutral-bg-subtle);
103
91
  border-radius: var(--sigvelo-radius-sm);
104
92
  font-family: var(--sigvelo-font-mono);
105
- font-size: var(--sigvelo-text-xs);
93
+ font-size: var(--sigvelo-text-meta);
106
94
  color: var(--sigvelo-color-text);
107
95
  vertical-align: baseline;
108
96
  }
@@ -1,7 +1,7 @@
1
1
  .terminal {
2
2
  display: flex;
3
3
  flex-direction: column;
4
- width: 100%;
4
+ inline-size: 100%;
5
5
  font-family: inherit;
6
6
  background-color: var(--sigvelo-color-neutral-950, var(--sigvelo-color-neutral-900));
7
7
  color: var(--sigvelo-color-neutral-100);
@@ -12,9 +12,9 @@
12
12
  .terminal__header {
13
13
  display: flex;
14
14
  align-items: center;
15
- gap: var(--sigvelo-spacing-2);
16
- padding-block: var(--sigvelo-spacing-2);
17
- padding-inline: var(--sigvelo-spacing-3);
15
+ gap: var(--sigvelo-layout-cluster);
16
+ padding-block: var(--sigvelo-layout-cluster);
17
+ padding-inline: var(--sigvelo-layout-gutter);
18
18
  background-color: color-mix(in oklab, var(--sigvelo-color-neutral-950) 80%, white 20%);
19
19
  border-block-end: var(--sigvelo-border-style) var(--sigvelo-border-width)
20
20
  color-mix(in oklab, var(--sigvelo-color-neutral-700) 40%, transparent);
@@ -62,13 +62,13 @@
62
62
 
63
63
  .terminal__content {
64
64
  flex: 1;
65
- max-height: 24rem;
66
- min-height: 8rem;
65
+ max-block-size: 24rem;
66
+ min-block-size: 8rem;
67
67
  }
68
68
 
69
69
  .terminal__content-viewport {
70
- width: 100%;
71
- height: 100%;
70
+ inline-size: 100%;
71
+ block-size: 100%;
72
72
  padding-block: var(--sigvelo-spacing-2-5);
73
73
  padding-inline: var(--sigvelo-spacing-3-5);
74
74
  overflow: auto;
@@ -86,8 +86,8 @@
86
86
 
87
87
  .terminal__cursor {
88
88
  display: inline-block;
89
- width: 0.5rem;
90
- height: 1em;
89
+ inline-size: 0.5rem;
90
+ block-size: 1em;
91
91
  vertical-align: text-bottom;
92
92
  background-color: var(--sigvelo-color-neutral-100);
93
93
  margin-inline-start: var(--sigvelo-spacing-0-5);
@@ -1,9 +1,9 @@
1
1
  .test-results__header {
2
2
  display: flex;
3
3
  flex-direction: column;
4
- gap: var(--sigvelo-spacing-2);
5
- padding-block: var(--sigvelo-spacing-2);
6
- padding-inline: var(--sigvelo-spacing-3);
4
+ gap: var(--sigvelo-layout-cluster);
5
+ padding-block: var(--sigvelo-layout-cluster);
6
+ padding-inline: var(--sigvelo-layout-gutter);
7
7
  border-block-end: var(--sigvelo-border-style) var(--sigvelo-border-width)
8
8
  var(--sigvelo-color-neutral-border-subtle);
9
9
  }
@@ -163,7 +163,7 @@
163
163
  align-items: center;
164
164
  gap: var(--sigvelo-spacing-1-5);
165
165
  padding-block: var(--sigvelo-spacing-1-5);
166
- padding-inline: var(--sigvelo-spacing-4);
166
+ padding-inline: var(--sigvelo-layout-gutter);
167
167
  font-size: var(--sigvelo-text-compact);
168
168
  border-block-end: var(--sigvelo-border-style) var(--sigvelo-border-width)
169
169
  var(--sigvelo-color-neutral-border-subtle);
@@ -230,8 +230,8 @@
230
230
 
231
231
  .test-results__error-text {
232
232
  margin: 0;
233
- padding-block: var(--sigvelo-spacing-2);
234
- padding-inline: var(--sigvelo-spacing-3);
233
+ padding-block: var(--sigvelo-layout-cluster);
234
+ padding-inline: var(--sigvelo-layout-gutter);
235
235
  font-family: var(--sigvelo-font-mono);
236
236
  font-size: var(--sigvelo-text-2xs);
237
237
  line-height: var(--sigvelo-leading-normal);
@@ -37,9 +37,9 @@
37
37
  min-inline-size: 0;
38
38
  inline-size: 100%;
39
39
  display: grid;
40
- grid-template-columns: auto minmax(0, 1fr);
40
+ grid-template-columns: auto var(--sigvelo-layout-track-fill);
41
41
  align-items: center;
42
- gap: var(--sigvelo-spacing-2);
42
+ gap: var(--sigvelo-layout-cluster);
43
43
  text-align: start;
44
44
  }
45
45
 
@@ -32,10 +32,10 @@
32
32
  .think-execution-workbench__error {
33
33
  position: absolute;
34
34
  z-index: 2;
35
- inset-block-start: var(--sigvelo-spacing-3);
35
+ inset-block-start: var(--sigvelo-layout-gutter);
36
36
  inset-inline: 50% auto;
37
- max-inline-size: min(32rem, calc(100% - 2rem));
38
- padding: var(--sigvelo-spacing-2) var(--sigvelo-spacing-3);
37
+ max-inline-size: min(32rem, calc(100% - var(--sigvelo-layout-gutter) * 2));
38
+ padding: var(--sigvelo-layout-cluster) var(--sigvelo-layout-gutter);
39
39
  border: var(--sigvelo-border-style) var(--sigvelo-border-width)
40
40
  var(--sigvelo-color-danger-border-subtle);
41
41
  border-radius: var(--sigvelo-radius-sm);
@@ -52,7 +52,7 @@
52
52
  min-block-size: 0;
53
53
  display: grid;
54
54
  flex: 1;
55
- grid-template-rows: minmax(0, 1fr);
55
+ grid-template-rows: var(--sigvelo-layout-track-fill);
56
56
  overflow: hidden;
57
57
  }
58
58
 
@@ -68,7 +68,7 @@
68
68
  .think-execution-workbench__list-header,
69
69
  .think-execution-workbench__list,
70
70
  .think-execution-workbench__empty {
71
- inline-size: min(100%, 50rem);
71
+ inline-size: min(100%, var(--sigvelo-layout-content));
72
72
  margin-inline: auto;
73
73
  }
74
74
 
@@ -76,9 +76,9 @@
76
76
  display: flex;
77
77
  align-items: center;
78
78
  justify-content: space-between;
79
- gap: var(--sigvelo-spacing-2);
79
+ gap: var(--sigvelo-layout-cluster);
80
80
  min-block-size: var(--sigvelo-control-height-lg);
81
- padding-inline: var(--sigvelo-spacing-3);
81
+ padding-inline: var(--sigvelo-layout-gutter);
82
82
  }
83
83
 
84
84
  .think-execution-workbench__list-header h3 {
@@ -90,7 +90,7 @@
90
90
 
91
91
  /* Same hairline-bounded band the routine library gives its empty run section. */
92
92
  .think-execution-workbench__empty {
93
- --sigvelo-recipe-empty-state-padding-block: var(--sigvelo-spacing-4);
93
+ --sigvelo-recipe-empty-state-padding-block: var(--sigvelo-layout-stack);
94
94
 
95
95
  border-block: var(--sigvelo-border-style) var(--sigvelo-border-width)
96
96
  var(--sigvelo-color-neutral-border-subtle);
@@ -107,7 +107,7 @@
107
107
 
108
108
  .think-execution-workbench__list > li {
109
109
  display: grid;
110
- grid-template-columns: minmax(0, 1fr) auto;
110
+ grid-template-columns: var(--sigvelo-layout-track-fill) auto;
111
111
  align-items: center;
112
112
  min-inline-size: 0;
113
113
  border-radius: var(--sigvelo-radius-md);
@@ -134,12 +134,9 @@
134
134
  .think-execution-detail {
135
135
  display: grid;
136
136
  align-content: start;
137
- gap: var(--sigvelo-spacing-4);
138
- /* The routine library's single-column measure and page padding. */
139
- inline-size: min(100%, 46rem);
140
- min-inline-size: 0;
141
- margin-inline: auto;
142
- padding: clamp(var(--sigvelo-spacing-4), 3vw, var(--sigvelo-spacing-8));
137
+ gap: var(--sigvelo-layout-stack);
138
+ /* `page` owns the measure and gutter; keep the roomier first-read block pad. */
139
+ --sigvelo-recipe-layout-stack: clamp(var(--sigvelo-layout-stack), 3vw, var(--sigvelo-spacing-8));
143
140
  }
144
141
 
145
142
  /* Only the container concerns — the block inside is `EmptyState`, and this
@@ -1,18 +1,8 @@
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 {
5
- container-name: responsive-sidebar-shell think-full-app;
6
- }
7
-
8
1
  .think-full-app {
9
2
  position: relative;
10
3
  container: think-full-app / inline-size;
11
- block-size: 100%;
12
- min-block-size: 0;
13
- min-inline-size: 0;
14
4
  display: grid;
15
- grid-template-rows: minmax(0, 1fr);
5
+ grid-template-rows: var(--sigvelo-layout-track-fill);
16
6
  background: var(--sigvelo-color-surface);
17
7
  color: var(--sigvelo-color-text);
18
8
  font-family: inherit;
@@ -25,13 +15,9 @@
25
15
  min-block-size: 0;
26
16
  display: grid;
27
17
  /* Conversation first and sized, workbench second and greedy. */
28
- grid-template-columns: auto minmax(0, 1fr);
29
- grid-template-rows: minmax(0, 1fr);
30
- margin: var(--sigvelo-spacing-3);
31
- }
32
-
33
- .think-full-app__mobile-view-switch {
34
- display: none;
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);
35
21
  }
36
22
 
37
23
  .think-full-app__view-switch {
@@ -40,28 +26,17 @@
40
26
  background: transparent;
41
27
  }
42
28
 
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;
52
- }
53
-
54
29
  .think-full-app__chat-surface {
55
30
  grid-column: 1;
56
31
  grid-row: 1;
57
32
  /* The conversation carries the resize, so the workbench can simply take the
58
33
  rest of the row. */
59
- inline-size: var(--resizable-side-panel-size, 24.5rem);
34
+ inline-size: var(--think-full-app-conversation-size, var(--sigvelo-layout-conversation));
60
35
  min-inline-size: 0;
61
36
  min-block-size: 0;
62
37
  display: grid;
63
- grid-template-columns: minmax(0, 1fr);
64
- grid-template-rows: minmax(0, 1fr);
38
+ grid-template-columns: var(--sigvelo-layout-track-fill);
39
+ grid-template-rows: var(--sigvelo-layout-track-fill);
65
40
  overflow: hidden;
66
41
  transition: inline-size var(--sigvelo-motion-duration-layout) var(--sigvelo-motion-ease-change);
67
42
  }
@@ -69,7 +44,7 @@
69
44
  /* A length rather than `auto`: closing has to interpolate from the open width,
70
45
  and a length-to-auto transition never finishes. */
71
46
  .think-full-app[data-has-workbench="false"] .think-full-app__chat-surface {
72
- inline-size: calc(100cqi - var(--sigvelo-spacing-3) * 2);
47
+ inline-size: calc(100cqi - var(--sigvelo-layout-gutter) * 2);
73
48
  }
74
49
 
75
50
  body.is-resizing-side-panel .think-full-app__chat-surface {
@@ -78,17 +53,17 @@ body.is-resizing-side-panel .think-full-app__chat-surface {
78
53
 
79
54
  .think-full-app__chat,
80
55
  .think-full-app__chat-inner {
81
- --agent-chat-content-max-inline-size: 46rem;
56
+ --agent-chat-content-max-inline-size: var(--sigvelo-measure-wide-block);
82
57
  min-inline-size: 0;
83
58
  min-block-size: 0;
84
59
  display: grid;
85
- grid-template-columns: minmax(0, 1fr);
86
- grid-template-rows: minmax(0, 1fr);
60
+ grid-template-columns: var(--sigvelo-layout-track-fill);
61
+ grid-template-rows: var(--sigvelo-layout-track-fill);
87
62
  overflow: hidden;
88
63
  }
89
64
 
90
65
  .think-full-app__chat-inner {
91
- grid-template-rows: minmax(0, 1fr) auto;
66
+ grid-template-rows: var(--sigvelo-layout-track-fill) auto;
92
67
  }
93
68
 
94
69
  /* Transparent column: the aside positions the plane, it is not a material of
@@ -99,17 +74,17 @@ body.is-resizing-side-panel .think-full-app__chat-surface {
99
74
  min-inline-size: 0;
100
75
  min-block-size: 0;
101
76
  display: grid;
102
- grid-template-rows: minmax(0, 1fr);
77
+ grid-template-rows: var(--sigvelo-layout-track-fill);
103
78
  /* A margin, not a column gap: with no panels at all the aside is absent and
104
79
  a gap would still hold its track open. */
105
- margin-inline-start: var(--sigvelo-spacing-3);
80
+ margin-inline-start: var(--sigvelo-layout-gap);
106
81
  }
107
82
 
108
83
  .think-full-app__resizer {
109
84
  z-index: 5;
110
85
  /* Centre the handle in the column gap rather than on the grid edge: the
111
86
  conversation is inset by the gutter and the gap sits beyond its edge. */
112
- translate: calc(var(--sigvelo-spacing-3) * 1.5) 0;
87
+ translate: calc(var(--sigvelo-layout-gap) * 1.5) 0;
113
88
  }
114
89
 
115
90
  .think-full-app__workbench-slot,
@@ -152,12 +127,13 @@ body.is-resizing-side-panel .think-full-app__chat-surface {
152
127
  outline-offset: -2px;
153
128
  }
154
129
 
130
+ /* 56rem matches --sigvelo-layout-break-compact. Container queries cannot read var(). */
155
131
  @container think-full-app (inline-size <= 56rem) {
156
132
  /* A side panel or phone has no desktop chrome around the app, so an inset
157
133
  plane reads as a card in a frame. Flatten to one edge-to-edge surface,
158
134
  app bar included — the frame never shows. */
159
135
  .think-full-app__view-scope {
160
- grid-template-columns: minmax(0, 1fr);
136
+ grid-template-columns: var(--sigvelo-layout-track-fill);
161
137
  margin: 0;
162
138
  overflow: hidden;
163
139
  }
@@ -167,9 +143,10 @@ body.is-resizing-side-panel .think-full-app__chat-surface {
167
143
  }
168
144
 
169
145
  /* 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 {
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 {
173
150
  inline-size: auto;
174
151
  transition: none;
175
152
  }
@@ -183,20 +160,6 @@ body.is-resizing-side-panel .think-full-app__chat-surface {
183
160
  box-shadow: none;
184
161
  }
185
162
 
186
- .think-full-app__app-bar[data-app-chrome="false"] {
187
- display: grid;
188
- }
189
-
190
- /* One switch at a time: compact swaps the whole view rather than opening a
191
- panel beside the conversation. */
192
- .think-full-app__workbench-view-switch {
193
- display: none;
194
- }
195
-
196
- .think-full-app__mobile-view-switch {
197
- display: flex;
198
- }
199
-
200
163
  .think-full-app__chat-surface,
201
164
  .think-full-app__workbench-slot,
202
165
  .think-full-app__workbench {
@@ -226,12 +189,11 @@ body.is-resizing-side-panel .think-full-app__chat-surface {
226
189
 
227
190
  .think-full-app__chat,
228
191
  .think-full-app__chat-inner {
229
- --agent-chat-content-max-inline-size: 34rem;
230
- }
231
-
232
- /* An immersive workbench view owns the whole viewport. */
233
- .think-full-app__app-bar[data-hide-in-workbench][data-mobile-view="workbench"] {
234
- 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);
235
197
  }
236
198
  }
237
199
 
@@ -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,17 +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
32
  .think-routine-library__browser {
65
33
  min-inline-size: 0;
66
34
  min-block-size: 0;
67
35
  overflow: auto;
68
- padding: var(--sigvelo-spacing-3) var(--sigvelo-spacing-2);
36
+ padding: var(--sigvelo-layout-gutter) var(--sigvelo-layout-cluster);
69
37
  border-inline-end: var(--sigvelo-border-style) var(--sigvelo-border-width)
70
38
  var(--sigvelo-color-neutral-border-subtle);
71
39
  background: color-mix(
@@ -79,15 +47,15 @@
79
47
  display: flex;
80
48
  align-items: center;
81
49
  justify-content: space-between;
82
- gap: var(--sigvelo-spacing-2);
50
+ gap: var(--sigvelo-layout-cluster);
83
51
  margin-block-end: var(--sigvelo-spacing-2);
84
52
  }
85
53
 
86
- .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 {
87
55
  padding-inline-start: var(--sigvelo-spacing-12);
88
56
  }
89
57
 
90
- .think-routine-library__layout[data-sidebar-open="false"] .think-routine-library__detail {
58
+ .think-routine-library[data-sidebar-open="false"] .think-routine-library__detail {
91
59
  padding-block-start: clamp(3.75rem, 6vw, 4.5rem);
92
60
  }
93
61
 
@@ -125,7 +93,7 @@
125
93
  inline-size: 100%;
126
94
  min-block-size: var(--sigvelo-spacing-14);
127
95
  display: grid;
128
- grid-template-columns: auto minmax(0, 1fr);
96
+ grid-template-columns: auto var(--sigvelo-layout-track-fill);
129
97
  align-items: center;
130
98
  gap: var(--sigvelo-spacing-2);
131
99
  padding: var(--sigvelo-spacing-2);
@@ -179,21 +147,21 @@
179
147
  }
180
148
 
181
149
  .think-routine-library__detail {
182
- inline-size: min(100%, 64rem);
150
+ inline-size: min(100%, var(--sigvelo-layout-content));
183
151
  margin-inline: auto;
184
- padding: clamp(var(--sigvelo-spacing-4), 3vw, var(--sigvelo-spacing-8));
152
+ padding: clamp(var(--sigvelo-layout-stack), 3vw, var(--sigvelo-spacing-8));
185
153
  }
186
154
 
187
155
  .think-routine-library__detail-header,
188
156
  .think-routine-library__create-header {
189
157
  display: flex;
190
158
  align-items: flex-start;
191
- gap: var(--sigvelo-spacing-4);
159
+ gap: var(--sigvelo-layout-stack);
192
160
  }
193
161
 
194
162
  .think-routine-library__detail-header {
195
163
  justify-content: space-between;
196
- 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));
197
165
  }
198
166
 
199
167
  .think-routine-library__detail-heading {
@@ -250,7 +218,7 @@
250
218
 
251
219
  .think-routine-library__facts > div {
252
220
  display: grid;
253
- grid-template-columns: 5.5rem minmax(0, 1fr);
221
+ grid-template-columns: 5.5rem var(--sigvelo-layout-track-fill);
254
222
  gap: var(--sigvelo-spacing-3);
255
223
  padding-block: var(--sigvelo-spacing-2-5);
256
224
  border-block-end: var(--sigvelo-border-style) var(--sigvelo-border-width)
@@ -309,7 +277,7 @@
309
277
 
310
278
  /* One rule, not two — this selector was declared twice in this file. */
311
279
  .think-routine-library__empty-runs {
312
- --sigvelo-recipe-empty-state-padding-block: var(--sigvelo-spacing-4);
280
+ --sigvelo-recipe-empty-state-padding-block: var(--sigvelo-layout-stack);
313
281
 
314
282
  border-block: var(--sigvelo-border-style) var(--sigvelo-border-width)
315
283
  var(--sigvelo-color-neutral-border-subtle);
@@ -329,7 +297,7 @@
329
297
 
330
298
  .think-routine-library__create-header,
331
299
  .think-routine-library__form {
332
- inline-size: min(100%, 46rem);
300
+ inline-size: min(100%, var(--sigvelo-layout-content));
333
301
  margin-inline: auto;
334
302
  }
335
303
 
@@ -343,47 +311,50 @@
343
311
 
344
312
  .think-routine-library__form {
345
313
  display: grid;
346
- gap: var(--sigvelo-spacing-3);
314
+ gap: var(--sigvelo-layout-gutter);
347
315
  }
348
316
 
349
317
  .think-routine-library__form-row {
350
318
  display: grid;
351
- grid-template-columns: repeat(2, minmax(0, 1fr));
352
- gap: var(--sigvelo-spacing-4);
319
+ grid-template-columns: repeat(2, var(--sigvelo-layout-track-fill));
320
+ gap: var(--sigvelo-layout-stack);
353
321
  }
354
322
 
355
323
  .think-routine-library__select-field {
356
324
  min-inline-size: 0;
357
325
  display: grid;
358
- gap: var(--sigvelo-spacing-3);
326
+ gap: var(--sigvelo-layout-gutter);
359
327
  }
360
328
 
361
329
  .think-routine-library__form-actions {
362
330
  display: flex;
363
331
  justify-content: flex-end;
364
- gap: var(--sigvelo-spacing-2);
365
- padding-block-start: var(--sigvelo-spacing-4);
332
+ gap: var(--sigvelo-layout-cluster);
333
+ padding-block-start: var(--sigvelo-layout-stack);
366
334
  border-block-start: var(--sigvelo-border-style) var(--sigvelo-border-width)
367
335
  var(--sigvelo-color-neutral-border-subtle);
368
336
  }
369
337
 
370
- @container (width < 52rem) {
338
+ /* Local wrap. Not --sigvelo-layout-break-compact. */
339
+ @container (inline-size < 52rem) {
371
340
  .think-routine-library__detail-grid {
372
- grid-template-columns: minmax(0, 1fr);
341
+ grid-template-columns: var(--sigvelo-layout-track-fill);
373
342
  }
374
343
  }
375
344
 
376
- @container (width < 40rem) {
345
+ /* Local wrap. Not --sigvelo-layout-break-compact. */
346
+ @container (inline-size < 40rem) {
377
347
  .think-routine-library__detail-header,
378
348
  .think-routine-library__create-header {
379
349
  flex-wrap: wrap;
380
350
  }
381
351
 
382
352
  .think-routine-library__form-row {
383
- grid-template-columns: minmax(0, 1fr);
353
+ grid-template-columns: var(--sigvelo-layout-track-fill);
384
354
  }
385
355
  }
386
356
 
357
+ /* 56rem matches --sigvelo-layout-break-compact. Container queries cannot read var(). */
387
358
  @container responsive-sidebar-shell (inline-size <= 56rem) {
388
359
  .think-routine-library__browser {
389
360
  inline-size: 100%;
@@ -3,7 +3,7 @@
3
3
  block-size: 100%;
4
4
  min-block-size: 0;
5
5
  display: grid;
6
- grid-template-rows: auto auto minmax(0, 1fr) auto;
6
+ grid-template-rows: auto auto var(--sigvelo-layout-track-fill) auto;
7
7
  overflow: hidden;
8
8
  border-inline-end: 0;
9
9
  /* No material of its own: it fills whatever holds it — the shell's rail, the
@@ -20,10 +20,8 @@
20
20
  align-items: center;
21
21
  gap: var(--sigvelo-density-compact-control-gap);
22
22
  padding-block: var(--sigvelo-spacing-1);
23
- padding-inline: calc(
24
- var(--sigvelo-density-compact-control-padding-inline) + env(safe-area-inset-left, 0px)
25
- )
26
- var(--sigvelo-density-compact-control-padding-inline);
23
+ padding-inline: calc(var(--sigvelo-layout-gutter) + env(safe-area-inset-left, 0px))
24
+ var(--sigvelo-layout-gutter);
27
25
  }
28
26
 
29
27
  .think-thread-picker__title {
@@ -94,7 +92,7 @@
94
92
  }
95
93
 
96
94
  .think-thread-picker__viewport {
97
- padding: var(--sigvelo-spacing-1-5) var(--sigvelo-spacing-2) var(--sigvelo-spacing-3);
95
+ padding: var(--sigvelo-layout-cluster) var(--sigvelo-layout-gutter) var(--sigvelo-layout-gutter);
98
96
  overscroll-behavior: contain;
99
97
  scrollbar-gutter: stable;
100
98
  }
@@ -118,9 +116,9 @@
118
116
  min-inline-size: 0;
119
117
  min-block-size: var(--sigvelo-density-compact-control-height);
120
118
  display: grid;
121
- grid-template-columns: minmax(0, 1fr) auto;
119
+ grid-template-columns: var(--sigvelo-layout-track-fill) auto;
122
120
  padding-block: 0;
123
- padding-inline: var(--sigvelo-density-compact-control-padding-inline);
121
+ padding-inline: var(--sigvelo-layout-gutter);
124
122
  align-items: center;
125
123
  justify-content: flex-start;
126
124
  column-gap: var(--sigvelo-spacing-1);
@@ -132,7 +130,7 @@
132
130
 
133
131
  .think-thread-picker__item:has(.think-thread-picker__delete) .think-thread-picker__thread {
134
132
  grid-template-columns:
135
- minmax(0, 1fr)
133
+ var(--sigvelo-layout-track-fill)
136
134
  minmax(var(--sigvelo-density-compact-control-height), max-content);
137
135
  }
138
136
 
@@ -301,6 +299,7 @@
301
299
  flex: 0 0 auto;
302
300
  }
303
301
 
302
+ /* 56rem matches --sigvelo-layout-break-compact. Container queries cannot read var(). */
304
303
  @container responsive-sidebar-shell (inline-size <= 56rem) {
305
304
  .think-thread-picker {
306
305
  block-size: auto;
@@ -331,6 +330,7 @@
331
330
  .think-thread-picker__scroll,
332
331
  .think-thread-picker__viewport {
333
332
  block-size: auto;
333
+ /* Compact drawer list cap. Not --sigvelo-layout-sidebar. */
334
334
  max-block-size: min(16rem, 42dvh);
335
335
  }
336
336