@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
@@ -2,20 +2,18 @@
2
2
  position: relative;
3
3
  display: flex;
4
4
  flex-direction: column;
5
- width: 100%;
6
- height: 100%;
7
- min-height: 0;
8
5
  overflow: hidden;
9
6
  font-family: inherit;
10
7
  color: var(--sigvelo-color-text);
11
8
  }
12
9
 
10
+ /* Scrollport fill. Not fill-host — that recipe is on the root. */
13
11
  .message-scroller__viewport {
14
12
  --message-scroller-fade-size: min(12%, 2.5rem);
15
- width: 100%;
16
- height: 100%;
17
- min-width: 0;
18
- min-height: 0;
13
+ inline-size: 100%;
14
+ block-size: 100%;
15
+ min-inline-size: 0;
16
+ min-block-size: 0;
19
17
  overflow-y: auto;
20
18
  overflow-x: hidden;
21
19
  overscroll-behavior: contain;
@@ -34,12 +32,12 @@
34
32
  .message-scroller__content {
35
33
  display: flex;
36
34
  flex-direction: column;
37
- gap: var(--sigvelo-spacing-4);
38
- min-height: 100%;
35
+ gap: var(--sigvelo-layout-stack);
36
+ min-block-size: 100%;
39
37
  }
40
38
 
41
39
  .message-scroller__item {
42
- min-width: 0;
40
+ min-inline-size: 0;
43
41
  flex-shrink: 0;
44
42
  /* Off-screen rows skip layout/paint entirely (Codex ships the same pair on
45
43
  turn content). `auto` keeps the last rendered size once measured; 15rem is
@@ -67,7 +65,7 @@
67
65
  position: absolute;
68
66
  inset-block-start: var(--message-scroller-virtual-block-start, 0px);
69
67
  inset-inline: 0;
70
- min-width: 0;
68
+ min-inline-size: 0;
71
69
  padding-inline: inherit;
72
70
  }
73
71
 
@@ -1,6 +1,9 @@
1
1
  .message {
2
2
  display: flex;
3
3
  flex-direction: column;
4
+ /* Codex --conversation-grouped-item-gap: 4px — activity, reasoning, and the
5
+ closing answer are one turn, not three. The 16px turn gap is the
6
+ virtualizer / conversation stack, not this row. */
4
7
  gap: var(--sigvelo-spacing-1);
5
8
  inline-size: 100%;
6
9
  min-inline-size: 0;
@@ -20,13 +23,14 @@
20
23
 
21
24
  .message__content {
22
25
  display: inline-block;
23
- max-inline-size: min(42rem, 85%);
26
+ max-inline-size: min(var(--sigvelo-measure-prose), 85%);
24
27
  min-inline-size: 0;
25
28
  padding-block: var(--sigvelo-spacing-2);
29
+ /* Bubble inset. Not --sigvelo-layout-gutter. */
26
30
  padding-inline: var(--sigvelo-spacing-3);
27
31
  border-radius: var(--sigvelo-radius-lg);
28
- font-size: var(--sigvelo-text-sm);
29
- line-height: var(--sigvelo-leading-normal);
32
+ font-size: var(--sigvelo-text-prose);
33
+ line-height: var(--sigvelo-text-prose-leading);
30
34
  background-color: var(--sigvelo-color-neutral-bg-subtle);
31
35
  color: var(--sigvelo-color-text);
32
36
  overflow-wrap: anywhere;
@@ -37,19 +41,28 @@
37
41
  color: var(--sigvelo-color-text);
38
42
  }
39
43
 
44
+ .message__content:has(> .message__response) {
45
+ font-size: var(--sigvelo-text-prose);
46
+ line-height: var(--sigvelo-text-prose-leading);
47
+ }
48
+
49
+ .message[data-from="user"] .message__content:has(> .message__response) {
50
+ font-family: var(--sigvelo-font-user-message);
51
+ }
52
+
40
53
  .message[data-from="assistant"] .message__content {
41
54
  display: block;
42
- inline-size: min(42rem, 85%);
55
+ /* The transcript column owns the measure. A second 68ch / 85% cap left the
56
+ answer sitting in the start half of an extension-width pane. */
57
+ inline-size: 100%;
43
58
  max-inline-size: 100%;
44
59
  background-color: transparent;
60
+ padding-block: 0;
45
61
  padding-inline: 0;
46
62
  }
47
63
 
48
- /* Structured parts can opt into the transcript rail without teaching Message
49
- which product feature they represent. The child still owns its own measure
50
- and responsive layout. */
51
- .message[data-from="assistant"] .message__content:has(> [data-message-layout="wide"]) {
52
- inline-size: 100%;
64
+ .message[data-from="assistant"] .message__content:has(> .message__response) {
65
+ font-family: var(--sigvelo-font-response);
53
66
  }
54
67
 
55
68
  .message[data-from="system"] .message__content {
@@ -59,7 +72,13 @@
59
72
  }
60
73
 
61
74
  .message__content > * + * {
62
- margin-block-start: var(--sigvelo-spacing-2);
75
+ margin-block-start: var(--sigvelo-spacing-1);
76
+ }
77
+
78
+ /* Tool activity is grouped with the closing answer, not a second turn. */
79
+ .message .activity {
80
+ max-inline-size: 100%;
81
+ margin-block: 0;
63
82
  }
64
83
 
65
84
  .message__content :where(pre) {
@@ -70,6 +89,7 @@
70
89
  .message__response {
71
90
  min-inline-size: 0;
72
91
  max-inline-size: 100%;
92
+ line-height: calc(var(--sigvelo-text-prose-leading) * var(--sigvelo-chat-font-scale));
73
93
  }
74
94
 
75
95
  .message__attachment {
@@ -77,7 +97,7 @@
77
97
  align-items: center;
78
98
  gap: var(--sigvelo-spacing-1-5);
79
99
  max-inline-size: 100%;
80
- font-size: var(--sigvelo-text-compact);
100
+ font-size: var(--sigvelo-text-meta);
81
101
  color: inherit;
82
102
  text-decoration: none;
83
103
  }
@@ -101,6 +121,7 @@
101
121
 
102
122
  .message__attachment-image {
103
123
  display: block;
124
+ /* Thumbnail cap. Not --sigvelo-layout-sidebar. */
104
125
  max-inline-size: 16rem;
105
126
  max-block-size: 16rem;
106
127
  border-radius: var(--sigvelo-radius-md);
@@ -109,11 +130,34 @@
109
130
  /* Quiet annotation under a part whose stored content was compacted. */
110
131
  .message__compacted {
111
132
  margin-block-start: var(--sigvelo-spacing-1);
112
- font-size: var(--sigvelo-text-xs);
133
+ font-size: var(--sigvelo-text-meta);
113
134
  font-style: italic;
114
135
  color: var(--sigvelo-color-text-muted);
115
136
  }
116
137
 
138
+ .message__meta {
139
+ display: flex;
140
+ align-items: center;
141
+ justify-content: flex-end;
142
+ min-block-size: var(--sigvelo-control-height-xs);
143
+ align-self: flex-end;
144
+ gap: var(--sigvelo-spacing-0-5);
145
+ color: var(--sigvelo-color-text-muted);
146
+ transition: opacity var(--sigvelo-motion-duration-interaction) var(--sigvelo-motion-ease-change);
147
+ }
148
+
149
+ .message__timestamp {
150
+ font-size: var(--sigvelo-text-meta);
151
+ font-variant-numeric: tabular-nums;
152
+ line-height: var(--sigvelo-text-meta-leading);
153
+ color: var(--sigvelo-color-text-muted);
154
+ white-space: nowrap;
155
+ }
156
+
157
+ .message__meta .message__actions[data-unavailable] {
158
+ visibility: hidden;
159
+ }
160
+
117
161
  .message__actions {
118
162
  display: inline-flex;
119
163
  align-items: center;
@@ -123,30 +167,32 @@
123
167
  }
124
168
 
125
169
  .message__actions--reserved {
126
- min-block-size: var(--sigvelo-control-height-sm);
127
- }
128
-
129
- .message[data-from="user"]:has(> .message__actions--inline) {
130
- flex-direction: row-reverse;
131
- align-items: center;
170
+ min-block-size: var(--sigvelo-control-height-xs);
132
171
  }
133
172
 
134
- .message[data-from="user"] > .message__actions--inline {
135
- align-self: center;
173
+ /* Hover chrome must not inflate the 16px turn gap. Always overlay the user
174
+ meta — headless Chromium (CI) does not match `(hover: hover)`, so gating
175
+ the positioning there left a ~32px in-flow row in Verify. */
176
+ .message[data-from="user"] {
177
+ position: relative;
136
178
  }
137
179
 
138
- .message[data-from="user"] > .message__actions--inline[data-unavailable] {
139
- visibility: hidden;
180
+ .message[data-from="user"] > .message__meta {
181
+ position: absolute;
182
+ inset-block-start: 100%;
183
+ inset-inline-end: 0;
184
+ z-index: 1;
185
+ min-block-size: 0;
140
186
  }
141
187
 
142
188
  @media (hover: hover) and (pointer: fine) {
143
- .message[data-from="user"] > .message__actions--inline {
189
+ .message__meta {
144
190
  opacity: 0;
145
191
  pointer-events: none;
146
192
  }
147
193
 
148
- .message[data-from="user"]:hover > .message__actions--inline,
149
- .message[data-from="user"]:focus-within > .message__actions--inline {
194
+ .message:hover > .message__meta,
195
+ .message:focus-within > .message__meta {
150
196
  opacity: 1;
151
197
  pointer-events: auto;
152
198
  }
@@ -173,7 +219,7 @@
173
219
  .message__edit-form {
174
220
  display: grid;
175
221
  gap: var(--sigvelo-spacing-3);
176
- inline-size: min(42rem, 85%);
222
+ inline-size: min(var(--sigvelo-measure-prose), 85%);
177
223
  padding: var(--sigvelo-spacing-3);
178
224
  color: var(--sigvelo-color-text);
179
225
  background-color: var(--sigvelo-color-surface-raised);
@@ -190,7 +236,7 @@
190
236
  display: flex;
191
237
  align-items: center;
192
238
  justify-content: space-between;
193
- gap: var(--sigvelo-spacing-2);
239
+ gap: var(--sigvelo-layout-cluster);
194
240
  inline-size: 100%;
195
241
  }
196
242
 
@@ -223,7 +269,7 @@
223
269
  }
224
270
 
225
271
  .message__branch-page {
226
- font-size: var(--sigvelo-text-xs);
272
+ font-size: var(--sigvelo-text-meta);
227
273
  font-variant-numeric: tabular-nums;
228
274
  color: var(--sigvelo-color-text-muted);
229
275
  padding-inline: var(--sigvelo-spacing-1-5);
@@ -46,7 +46,7 @@
46
46
  .nanite-scene__nanite,
47
47
  .nanite-scene__hat,
48
48
  .nanite-scene__glass,
49
- .nanite-scene__badge,
49
+ .nanite-scene__status-mark,
50
50
  .nanite-scene__sparkle,
51
51
  .nanite-scene__github-signal,
52
52
  .nanite-scene__github-node,
@@ -60,7 +60,7 @@
60
60
  }
61
61
 
62
62
  .nanite-scene__hat,
63
- .nanite-scene__badge,
63
+ .nanite-scene__status-mark,
64
64
  .nanite-scene__sparkle,
65
65
  .nanite-scene__github-signal,
66
66
  .nanite-scene__github-node,
@@ -74,7 +74,7 @@
74
74
  transform: translateY(-6px);
75
75
  }
76
76
 
77
- .nanite-scene__badge,
77
+ .nanite-scene__status-mark,
78
78
  .nanite-scene__sparkle {
79
79
  visibility: hidden;
80
80
  opacity: 0;
@@ -177,15 +177,15 @@
177
177
  animation-delay: 240ms;
178
178
  }
179
179
 
180
- .nanite-scene--celebrating .nanite-scene__badge,
181
- .nanite-scene--concerned .nanite-scene__badge {
180
+ .nanite-scene--celebrating .nanite-scene__status-mark,
181
+ .nanite-scene--concerned .nanite-scene__status-mark {
182
182
  visibility: visible;
183
183
  opacity: 1;
184
- animation: nanite-badge-pop 400ms cubic-bezier(0.34, 1.56, 0.64, 1) both;
184
+ animation: nanite-status-mark-pop 400ms cubic-bezier(0.34, 1.56, 0.64, 1) both;
185
185
  animation-delay: 500ms;
186
186
  }
187
187
 
188
- .nanite-scene--concerned .nanite-scene__badge {
188
+ .nanite-scene--concerned .nanite-scene__status-mark {
189
189
  animation-delay: 300ms;
190
190
  }
191
191
 
@@ -363,7 +363,7 @@
363
363
  }
364
364
  }
365
365
 
366
- @keyframes nanite-badge-pop {
366
+ @keyframes nanite-status-mark-pop {
367
367
  from {
368
368
  opacity: 0;
369
369
  transform: scale(0.4);
@@ -423,7 +423,7 @@
423
423
  .nanite-scene__nanite,
424
424
  .nanite-scene__hat,
425
425
  .nanite-scene__glass,
426
- .nanite-scene__badge,
426
+ .nanite-scene__status-mark,
427
427
  .nanite-scene__sparkle,
428
428
  .nanite-scene__github-signal,
429
429
  .nanite-scene__github-node,
@@ -66,6 +66,7 @@
66
66
 
67
67
  .navigation-menu__content {
68
68
  display: grid;
69
+ /* Popup density, not --sigvelo-layout-cluster. */
69
70
  gap: var(--sigvelo-spacing-2);
70
71
  padding: var(--sigvelo-spacing-2);
71
72
  }
@@ -2,8 +2,8 @@
2
2
  display: grid;
3
3
  gap: var(--sigvelo-spacing-0-5);
4
4
  min-inline-size: 0;
5
- padding-block: var(--sigvelo-spacing-2-5);
6
- padding-inline: var(--sigvelo-spacing-3);
5
+ padding-block: var(--sigvelo-layout-cluster);
6
+ padding-inline: 0;
7
7
  border-block-end: var(--sigvelo-border-width) var(--sigvelo-border-style)
8
8
  var(--sigvelo-color-neutral-border-subtle);
9
9
  }
@@ -19,31 +19,31 @@
19
19
 
20
20
  .plan__title {
21
21
  color: var(--sigvelo-color-text);
22
- font-size: var(--sigvelo-text-compact);
22
+ font-size: var(--sigvelo-text-prose);
23
23
  font-weight: var(--sigvelo-font-weight-semibold);
24
24
  line-height: var(--sigvelo-leading-tight);
25
25
  }
26
26
 
27
27
  .plan__description {
28
28
  color: var(--sigvelo-color-text-muted);
29
- font-size: var(--sigvelo-text-xs);
29
+ font-size: var(--sigvelo-text-meta);
30
30
  line-height: var(--sigvelo-leading-normal);
31
31
  }
32
32
 
33
33
  .plan__content {
34
34
  display: flex;
35
35
  flex-direction: column;
36
- gap: var(--sigvelo-spacing-3);
36
+ gap: var(--sigvelo-layout-gutter);
37
37
  margin: 0;
38
- padding-block: var(--sigvelo-spacing-3);
39
- padding-inline: var(--sigvelo-spacing-3);
38
+ padding-block: var(--sigvelo-layout-gutter);
39
+ padding-inline: 0;
40
40
  list-style: none;
41
41
  }
42
42
 
43
43
  .plan__step {
44
44
  position: relative;
45
45
  display: grid;
46
- grid-template-columns: var(--sigvelo-spacing-4) minmax(0, 1fr);
46
+ grid-template-columns: var(--sigvelo-spacing-4) var(--sigvelo-layout-track-fill);
47
47
  column-gap: var(--sigvelo-spacing-2);
48
48
  row-gap: var(--sigvelo-spacing-0-5);
49
49
  min-inline-size: 0;
@@ -104,7 +104,7 @@
104
104
 
105
105
  .plan__step-title {
106
106
  color: var(--sigvelo-color-text);
107
- font-size: var(--sigvelo-text-compact);
107
+ font-size: var(--sigvelo-text-prose);
108
108
  font-weight: var(--sigvelo-font-weight-semibold);
109
109
  line-height: var(--sigvelo-leading-tight);
110
110
  transition: color var(--sigvelo-motion-duration-interaction) var(--sigvelo-motion-ease-change);
@@ -116,7 +116,7 @@
116
116
 
117
117
  .plan__step-description {
118
118
  color: var(--sigvelo-color-text-muted);
119
- font-size: var(--sigvelo-text-xs);
119
+ font-size: var(--sigvelo-text-meta);
120
120
  line-height: var(--sigvelo-leading-normal);
121
121
  }
122
122
 
@@ -132,7 +132,7 @@
132
132
  padding-block: var(--sigvelo-spacing-1);
133
133
  padding-inline: var(--sigvelo-spacing-2-5);
134
134
  color: var(--sigvelo-color-text);
135
- font-size: var(--sigvelo-text-compact);
135
+ font-size: var(--sigvelo-text-prose);
136
136
  line-height: var(--sigvelo-leading-snug);
137
137
  background-color: var(--sigvelo-color-surface-raised);
138
138
  border: var(--sigvelo-border-width) var(--sigvelo-border-style)
@@ -158,8 +158,9 @@
158
158
  }
159
159
 
160
160
  .plan-summary__content {
161
+ /* Popover reading width. Not --sigvelo-layout-sidebar. */
161
162
  min-inline-size: 16rem;
162
- max-inline-size: min(24rem, calc(100vw - var(--sigvelo-spacing-8)));
163
+ max-inline-size: min(24rem, calc(100dvi - var(--sigvelo-spacing-8)));
163
164
  padding: 0;
164
165
  font-family: inherit;
165
166
  color: var(--sigvelo-color-text);
@@ -1,10 +1,12 @@
1
1
  .pricing-page {
2
2
  box-sizing: border-box;
3
- width: 100%;
4
- max-width: 1200px;
5
- margin: 0 auto;
6
- padding: clamp(var(--sigvelo-spacing-4), 4%, var(--sigvelo-spacing-12))
7
- clamp(var(--sigvelo-spacing-3), 3%, var(--sigvelo-spacing-6));
3
+ inline-size: 100%;
4
+ /* Marketing measure: wider than --sigvelo-layout-content so three plan
5
+ cards sit in one row. Application dossiers keep the 50rem content column. */
6
+ max-inline-size: 75rem;
7
+ margin-inline: auto;
8
+ padding-block: clamp(var(--sigvelo-layout-stack), 4%, var(--sigvelo-spacing-12));
9
+ padding-inline: clamp(var(--sigvelo-layout-gutter), 3%, var(--sigvelo-spacing-6));
8
10
  container-type: inline-size;
9
11
  }
10
12
 
@@ -12,7 +14,7 @@
12
14
 
13
15
  .pricing-page__header {
14
16
  text-align: center;
15
- margin-bottom: var(--sigvelo-spacing-12);
17
+ margin-block-end: var(--sigvelo-spacing-12);
16
18
  }
17
19
 
18
20
  .pricing-page__title {
@@ -54,8 +56,11 @@
54
56
  color: var(--sigvelo-color-text);
55
57
  }
56
58
 
57
- .pricing-page__billing-badge {
59
+ .pricing-page__billing-savings {
58
60
  margin-inline-start: var(--sigvelo-spacing-1-5);
61
+ color: var(--sigvelo-color-success-text);
62
+ font-size: var(--sigvelo-text-xs);
63
+ font-weight: var(--sigvelo-font-weight-semibold);
59
64
  }
60
65
 
61
66
  /* Plans Grid */
@@ -64,7 +69,7 @@
64
69
  display: grid;
65
70
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
66
71
  gap: var(--sigvelo-spacing-6);
67
- margin-bottom: var(--sigvelo-spacing-12);
72
+ margin-block-end: var(--sigvelo-spacing-12);
68
73
  }
69
74
 
70
75
  .pricing-page__plan {
@@ -81,15 +86,16 @@
81
86
  0 2px 4px -2px color-mix(in oklab, var(--sigvelo-color-primary-bg), transparent 90%);
82
87
  }
83
88
 
84
- .pricing-page__popular-badge {
85
- position: absolute;
86
- top: -0.625rem;
87
- left: 50%;
88
- transform: translateX(-50%);
89
+ .pricing-page__plan-header {
90
+ margin-block-end: var(--sigvelo-spacing-6);
89
91
  }
90
92
 
91
- .pricing-page__plan-header {
92
- margin-bottom: var(--sigvelo-spacing-6);
93
+ .pricing-page__popular-label {
94
+ display: block;
95
+ margin-block-end: var(--sigvelo-spacing-1);
96
+ color: var(--sigvelo-color-success-text);
97
+ font-size: var(--sigvelo-text-xs);
98
+ font-weight: var(--sigvelo-font-weight-semibold);
93
99
  }
94
100
 
95
101
  .pricing-page__plan-name {
@@ -108,7 +114,7 @@
108
114
  }
109
115
 
110
116
  .pricing-page__plan-price {
111
- margin-bottom: var(--sigvelo-spacing-6);
117
+ margin-block-end: var(--sigvelo-spacing-6);
112
118
  }
113
119
 
114
120
  .pricing-page__price-amount {
@@ -131,11 +137,11 @@
131
137
  font-size: var(--sigvelo-text-xs);
132
138
  font-weight: var(--sigvelo-font-weight-semibold);
133
139
  color: var(--sigvelo-color-success-bg);
134
- margin-top: var(--sigvelo-spacing-1);
140
+ margin-block-start: var(--sigvelo-spacing-1);
135
141
  }
136
142
 
137
143
  .pricing-page__plan-cta {
138
- width: 100%;
144
+ inline-size: 100%;
139
145
  }
140
146
 
141
147
  .pricing-page__features-separator {
@@ -168,8 +174,8 @@
168
174
  display: flex;
169
175
  align-items: center;
170
176
  justify-content: center;
171
- width: 1.25rem;
172
- height: 1.25rem;
177
+ inline-size: 1.25rem;
178
+ block-size: 1.25rem;
173
179
  flex-shrink: 0;
174
180
  color: var(--sigvelo-color-text-muted);
175
181
  }
@@ -185,13 +191,13 @@
185
191
  .pricing-page__feature-limit {
186
192
  font-size: var(--sigvelo-text-xs);
187
193
  color: var(--sigvelo-color-text-muted);
188
- margin-left: var(--sigvelo-spacing-1);
194
+ margin-inline-start: var(--sigvelo-spacing-1);
189
195
  }
190
196
 
191
197
  /* Calculator */
192
198
 
193
199
  .pricing-page__calculator {
194
- max-width: 600px;
200
+ max-inline-size: var(--sigvelo-layout-content);
195
201
  margin: 0 auto var(--sigvelo-spacing-12);
196
202
  padding: var(--sigvelo-spacing-8);
197
203
  }
@@ -212,7 +218,7 @@
212
218
  }
213
219
 
214
220
  .pricing-page__calculator-slider {
215
- margin-bottom: var(--sigvelo-spacing-2);
221
+ margin-block-end: var(--sigvelo-spacing-2);
216
222
  }
217
223
 
218
224
  .pricing-page__calculator-separator {
@@ -223,7 +229,7 @@
223
229
  display: flex;
224
230
  justify-content: space-between;
225
231
  align-items: center;
226
- margin-bottom: var(--sigvelo-spacing-3);
232
+ margin-block-end: var(--sigvelo-spacing-3);
227
233
  }
228
234
 
229
235
  .pricing-page__calculator-value {
@@ -237,7 +243,7 @@
237
243
  .pricing-page__calculator-range {
238
244
  display: flex;
239
245
  justify-content: space-between;
240
- margin-top: var(--sigvelo-spacing-2);
246
+ margin-block-start: var(--sigvelo-spacing-2);
241
247
  font-family: inherit;
242
248
  font-size: var(--sigvelo-text-xs);
243
249
  color: var(--sigvelo-color-text-muted);
@@ -247,7 +253,7 @@
247
253
  display: flex;
248
254
  justify-content: space-between;
249
255
  align-items: baseline;
250
- margin-bottom: var(--sigvelo-spacing-6);
256
+ margin-block-end: var(--sigvelo-spacing-6);
251
257
  }
252
258
 
253
259
  .pricing-page__calculator-result-label {
@@ -306,7 +312,7 @@
306
312
  /* FAQ */
307
313
 
308
314
  .pricing-page__faq {
309
- max-width: 700px;
315
+ max-inline-size: var(--sigvelo-layout-content);
310
316
  margin: 0 auto;
311
317
  }
312
318
 
@@ -328,7 +334,7 @@
328
334
 
329
335
  .pricing-page__confirm-summary {
330
336
  padding: var(--sigvelo-spacing-4);
331
- margin-bottom: var(--sigvelo-spacing-4);
337
+ margin-block-end: var(--sigvelo-spacing-4);
332
338
  background-color: var(--sigvelo-color-neutral-bg-subtle);
333
339
  border-radius: var(--sigvelo-radius-md);
334
340
  }
@@ -355,7 +361,8 @@
355
361
 
356
362
  /* Responsive */
357
363
 
358
- @container (max-width: 768px) {
364
+ /* Local wrap. Not --sigvelo-layout-break-compact. */
365
+ @container (inline-size <= 48rem) {
359
366
  .pricing-page__title {
360
367
  font-size: var(--sigvelo-text-3xl);
361
368
  }
@@ -365,7 +372,7 @@
365
372
  }
366
373
 
367
374
  .pricing-page__plans {
368
- grid-template-columns: 1fr;
375
+ grid-template-columns: var(--sigvelo-layout-track-fill);
369
376
  }
370
377
 
371
378
  .pricing-page__price-amount {