@mcp-b/react-components 0.51.2 → 0.53.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (196) hide show
  1. package/dist/{CodeBlock--r6GS8YV.d.ts → CodeBlock-DJ99TQWy.d.ts} +1 -1
  2. package/dist/{CodeBlock-g8sADidM.js → CodeBlock-Dw1z6jc8.js} +2 -1
  3. package/dist/EmployeeChrome-B605rpVz.d.ts +233 -0
  4. package/dist/{FileTree-DruTQ-oa.js → FileTree-okaLnS5j.js} +1 -1
  5. package/dist/{IconButton-ByiyjkYE.d.ts → IconButton-CAlFVb2L.d.ts} +3 -0
  6. package/dist/{ManagerOffice-D-7SOJ4x.js → ManagerOffice-CJwBAEMv.js} +17 -12
  7. package/dist/McpPluginCatalog-DNeHDrts.d.ts +94 -0
  8. package/dist/{Message-DyaTBiV7.d.ts → Message-COsMPZSC.d.ts} +2 -2
  9. package/dist/{ResponsiveSidebarShell-CAmmtQTR.d.ts → ResponsiveSidebarShell-BUBQa_IV.d.ts} +3 -1
  10. package/dist/{SetupChecklist-Btmy3-_C.js → SetupChecklist-DWyifWWg.js} +6 -5
  11. package/dist/{ThinkThreadPicker-yetGX_s5.d.ts → ThinkThreadPicker-DX0lL-P7.d.ts} +3 -0
  12. package/dist/{Workspace-HzGrWDX3.d.ts → Workspace-mzMZSdts.d.ts} +1 -1
  13. package/dist/WorkspaceConceptPanel-97ZyVpZI.js +20 -0
  14. package/dist/{WorkspaceFile-Bouauobc.d.ts → WorkspaceFile-19WP0EU1.d.ts} +1 -1
  15. package/dist/{WorkspaceFileView-DYPtRVpM.js → WorkspaceFileView-DQDWUpAH.js} +3 -2
  16. package/dist/{WorkspaceMessageResponse-8lOSAbw_.d.ts → WorkspaceMessageResponse-BApg8KZv.d.ts} +1 -1
  17. package/dist/WorkspaceMountManager-CkLI1B-G.d.ts +33 -0
  18. package/dist/assets/sigvelo-logo.svg +54 -0
  19. package/dist/components/agents-sdk/AgentActivity.js +1 -1
  20. package/dist/components/agents-sdk/AgentChat.d.ts +6 -2
  21. package/dist/components/agents-sdk/AgentChat.js +12 -18
  22. package/dist/components/agents-sdk/BrowserLiveScreen.js +1 -1
  23. package/dist/components/agents-sdk/BrowserLiveView.js +1 -1
  24. package/dist/components/agents-sdk/BrowserReplay.js +1 -1
  25. package/dist/components/agents-sdk/BrowserRunPanel.js +1 -1
  26. package/dist/components/agents-sdk/EmployeeApp.d.ts +43 -30
  27. package/dist/components/agents-sdk/EmployeeApp.js +47 -34
  28. package/dist/components/agents-sdk/EmployeeChat.d.ts +31 -10
  29. package/dist/components/agents-sdk/EmployeeChat.js +35 -7
  30. package/dist/components/agents-sdk/EmployeeChrome.d.ts +1 -219
  31. package/dist/components/agents-sdk/EmployeeChrome.js +219 -162
  32. package/dist/components/agents-sdk/EmployeeSchedules.d.ts +1 -1
  33. package/dist/components/agents-sdk/EmployeeSchedules.js +2 -3
  34. package/dist/components/agents-sdk/EmployeeStartScreen.d.ts +12 -11
  35. package/dist/components/agents-sdk/EmployeeStartScreen.js +22 -15
  36. package/dist/components/agents-sdk/ManagerAccountActions.js +2 -3
  37. package/dist/components/agents-sdk/ManagerOffice.js +1 -2
  38. package/dist/components/agents-sdk/ManagerOfficeScreens.d.ts +2 -2
  39. package/dist/components/agents-sdk/ManagerOfficeScreens.js +33 -13
  40. package/dist/components/agents-sdk/McpConnectionRequest.js +2 -2
  41. package/dist/components/agents-sdk/McpConnectorForm.js +1 -1
  42. package/dist/components/agents-sdk/McpPluginCatalog.d.ts +1 -93
  43. package/dist/components/agents-sdk/McpPluginCatalog.js +5 -5
  44. package/dist/components/agents-sdk/McpServerPicker.js +5 -5
  45. package/dist/components/agents-sdk/ModelSelector.js +4 -4
  46. package/dist/components/agents-sdk/PromptInputApproval.js +1 -1
  47. package/dist/components/agents-sdk/PromptInputCommands.js +1 -1
  48. package/dist/components/agents-sdk/SubagentRunIndicator.js +1 -1
  49. package/dist/components/agents-sdk/SubagentRunPanel.d.ts +3 -0
  50. package/dist/components/agents-sdk/SubagentRunPanel.js +67 -47
  51. package/dist/components/agents-sdk/SubagentRunSelector.js +1 -1
  52. package/dist/components/agents-sdk/ThinkChat.d.ts +1 -1
  53. package/dist/components/agents-sdk/ThinkChatActivity.js +2 -2
  54. package/dist/components/agents-sdk/ThinkChatToolPanels.js +2 -2
  55. package/dist/components/agents-sdk/ThinkExecutionDetail.js +2 -2
  56. package/dist/components/agents-sdk/ThinkExecutionStatus.js +1 -1
  57. package/dist/components/agents-sdk/ThinkExecutionWorkbench.js +7 -14
  58. package/dist/components/agents-sdk/ThinkFullApp.d.ts +2 -0
  59. package/dist/components/agents-sdk/ThinkFullApp.js +2 -0
  60. package/dist/components/agents-sdk/ThinkRecoveryNotice.js +1 -1
  61. package/dist/components/agents-sdk/ThinkRoutineActions.js +1 -1
  62. package/dist/components/agents-sdk/ThinkRoutineBrowser.js +2 -2
  63. package/dist/components/agents-sdk/ThinkRoutineDetail.js +1 -1
  64. package/dist/components/agents-sdk/ThinkRoutineForm.js +3 -3
  65. package/dist/components/agents-sdk/ThinkRoutineRuns.js +1 -1
  66. package/dist/components/agents-sdk/ThinkThreadPicker.d.ts +1 -1
  67. package/dist/components/agents-sdk/ThinkThreadPicker.js +32 -19
  68. package/dist/components/agents-sdk/WorkbenchBack.d.ts +18 -0
  69. package/dist/components/agents-sdk/WorkbenchBack.js +27 -0
  70. package/dist/components/agents-sdk/Workspace.d.ts +1 -1
  71. package/dist/components/agents-sdk/WorkspaceBrowser.d.ts +1 -1
  72. package/dist/components/agents-sdk/WorkspaceBrowser.js +3 -1
  73. package/dist/components/agents-sdk/WorkspaceConcept.d.ts +1 -1
  74. package/dist/components/agents-sdk/WorkspaceCorrespondence.js +6 -6
  75. package/dist/components/agents-sdk/WorkspaceExecution.js +13 -10
  76. package/dist/components/agents-sdk/WorkspaceExplorer.d.ts +4 -1
  77. package/dist/components/agents-sdk/WorkspaceExplorer.js +13 -4
  78. package/dist/components/agents-sdk/WorkspaceFile.d.ts +1 -1
  79. package/dist/components/agents-sdk/WorkspaceFileView.d.ts +1 -1
  80. package/dist/components/agents-sdk/WorkspaceFileView.js +1 -1
  81. package/dist/components/agents-sdk/WorkspaceHeader.js +1 -1
  82. package/dist/components/agents-sdk/WorkspaceLive.d.ts +2 -2
  83. package/dist/components/agents-sdk/WorkspaceMessageResponse.d.ts +1 -1
  84. package/dist/components/agents-sdk/WorkspaceMountManager.d.ts +1 -32
  85. package/dist/components/agents-sdk/WorkspaceMountManager.js +2 -2
  86. package/dist/components/agents-sdk/WorkspaceProject.js +7 -5
  87. package/dist/components/agents-sdk/WorkspaceUserScript.js +7 -5
  88. package/dist/components/ai-sdk/Activity.js +1 -1
  89. package/dist/components/ai-sdk/AgentChatStartScreen.js +1 -1
  90. package/dist/components/ai-sdk/Approval.js +2 -2
  91. package/dist/components/ai-sdk/Artifact.d.ts +1 -1
  92. package/dist/components/ai-sdk/Artifact.js +1 -1
  93. package/dist/components/ai-sdk/ChainOfThought.js +1 -1
  94. package/dist/components/ai-sdk/Checkpoint.js +1 -1
  95. package/dist/components/ai-sdk/CodeBlock.d.ts +1 -1
  96. package/dist/components/ai-sdk/CodeBlock.js +1 -1
  97. package/dist/components/ai-sdk/ComposerLink.js +1 -1
  98. package/dist/components/ai-sdk/ConnectedAppCards.js +3 -3
  99. package/dist/components/ai-sdk/Context.js +1 -1
  100. package/dist/components/ai-sdk/Conversation.d.ts +1 -1
  101. package/dist/components/ai-sdk/Conversation.js +1 -1
  102. package/dist/components/ai-sdk/Goal.js +1 -1
  103. package/dist/components/ai-sdk/MediaPreviewCard.js +1 -1
  104. package/dist/components/ai-sdk/Message.d.ts +1 -1
  105. package/dist/components/ai-sdk/Message.js +2 -2
  106. package/dist/components/ai-sdk/MessageScroller.js +1 -1
  107. package/dist/components/ai-sdk/MessageScrollerVirtual.js +1 -1
  108. package/dist/components/ai-sdk/Plan.js +1 -1
  109. package/dist/components/ai-sdk/PromptInput.js +46 -43
  110. package/dist/components/ai-sdk/Queue.js +1 -1
  111. package/dist/components/ai-sdk/Reasoning.js +1 -1
  112. package/dist/components/ai-sdk/Sources.js +1 -1
  113. package/dist/components/ai-sdk/Task.js +1 -1
  114. package/dist/components/extension/ChatGptSignInScreen.d.ts +1 -1
  115. package/dist/components/extension/ChatGptSignInScreen.js +61 -186
  116. package/dist/components/extension/CodexModelSelector.js +4 -8
  117. package/dist/components/extension/ConversationTabPicker.js +2 -2
  118. package/dist/components/foundations/Checkbox.js +1 -1
  119. package/dist/components/foundations/Collapsible.js +1 -1
  120. package/dist/components/foundations/ContextMenu.js +1 -1
  121. package/dist/components/foundations/IconButton.d.ts +1 -1
  122. package/dist/components/foundations/IconButton.js +7 -4
  123. package/dist/components/foundations/Menubar.js +1 -1
  124. package/dist/components/foundations/SearchField.js +1 -1
  125. package/dist/components/foundations/Select.js +1 -1
  126. package/dist/components/foundations/Stepper.js +1 -1
  127. package/dist/components/foundations/Toast.js +1 -1
  128. package/dist/components/foundations/icons.js +1 -1
  129. package/dist/components/general-purpose/AccountSignInDialog.d.ts +5 -9
  130. package/dist/components/general-purpose/AccountSignInDialog.js +13 -5
  131. package/dist/components/general-purpose/BrandLoading.d.ts +14 -0
  132. package/dist/components/general-purpose/BrandLoading.js +25 -0
  133. package/dist/components/general-purpose/Commit.d.ts +1 -1
  134. package/dist/components/general-purpose/Commit.js +2 -2
  135. package/dist/components/general-purpose/EnvironmentVariables.d.ts +1 -1
  136. package/dist/components/general-purpose/EnvironmentVariables.js +2 -2
  137. package/dist/components/general-purpose/FileTree.js +1 -1
  138. package/dist/components/general-purpose/PricingBillingToggle.js +1 -1
  139. package/dist/components/general-purpose/PricingPlanCard.js +2 -2
  140. package/dist/components/general-purpose/PricingUsageCalculator.js +2 -2
  141. package/dist/components/general-purpose/ResponsiveSidebarShell.d.ts +1 -1
  142. package/dist/components/general-purpose/ResponsiveSidebarShell.js +59 -27
  143. package/dist/components/general-purpose/SettingsFormDialog.js +2 -2
  144. package/dist/components/general-purpose/SetupChecklist.js +1 -1
  145. package/dist/components/general-purpose/StatusScreen.d.ts +13 -2
  146. package/dist/components/general-purpose/StatusScreen.js +27 -3
  147. package/dist/components/general-purpose/Terminal.d.ts +2 -2
  148. package/dist/components/general-purpose/Terminal.js +2 -2
  149. package/dist/components/general-purpose/TestResults.js +1 -1
  150. package/dist/components/general-purpose/ThemeModeControl.js +1 -1
  151. package/dist/components/general-purpose/WebPreview.d.ts +1 -1
  152. package/dist/components/general-purpose/WebPreview.js +2 -2
  153. package/dist/components/nanites/AgentConnection.js +2 -2
  154. package/dist/components/nanites/AgentToolDetail.js +2 -2
  155. package/dist/{copy-button-OUwOdgEm.d.ts → copy-button-CJYYgCIU.d.ts} +1 -1
  156. package/dist/{copy-button-CSDuDfdP.js → copy-button-Dk2vRe9j.js} +1 -1
  157. package/dist/styles/activity.css +2 -2
  158. package/dist/styles/agent-chat.css +6 -105
  159. package/dist/styles/app-root.css +9 -0
  160. package/dist/styles/app-top-bar.css +10 -4
  161. package/dist/styles/avatar.css +2 -2
  162. package/dist/styles/base.css +6 -2
  163. package/dist/styles/brand-loading.css +58 -0
  164. package/dist/styles/brand.test.ts +158 -0
  165. package/dist/styles/browser-control-overlay.css +22 -0
  166. package/dist/styles/button.css +22 -1
  167. package/dist/styles/chatgpt-sign-in-screen.css +111 -225
  168. package/dist/styles/code-block.css +5 -0
  169. package/dist/styles/codex-model-selector.css +2 -12
  170. package/dist/styles/description-list.css +9 -2
  171. package/dist/styles/employee-app.css +19 -1
  172. package/dist/styles/employee-chrome.css +39 -5
  173. package/dist/styles/file-tree.css +15 -2
  174. package/dist/styles/index.css +1 -0
  175. package/dist/styles/manager-office.css +80 -55
  176. package/dist/styles/manager-work.css +5 -11
  177. package/dist/styles/mcp-plugin-catalog.css +29 -34
  178. package/dist/styles/mcp-server-picker.css +13 -5
  179. package/dist/styles/prompt-input.css +3 -13
  180. package/dist/styles/queue.css +1 -1
  181. package/dist/styles/recipes.css +9 -2
  182. package/dist/styles/responsive-sidebar-shell-motion.test.ts +67 -0
  183. package/dist/styles/responsive-sidebar-shell.css +70 -25
  184. package/dist/styles/search-field.css +8 -6
  185. package/dist/styles/subagent-run.css +81 -0
  186. package/dist/styles/switch.css +7 -0
  187. package/dist/styles/think-execution-workbench.css +0 -17
  188. package/dist/styles/think-full-app.css +11 -4
  189. package/dist/styles/think-thread-picker.css +16 -38
  190. package/dist/styles/workspace-concepts.css +29 -2
  191. package/dist/styles/workspace-explorer.css +6 -48
  192. package/dist/utils/structured-code.d.ts +1 -1
  193. package/dist/{workspace-assets-Bg7XhPsk.js → workspace-assets-C3QT6UlQ.js} +1 -1
  194. package/package.json +2 -2
  195. package/dist/styles/extension-status.css +0 -46
  196. package/dist/{icons-cuEtsgj9.js → icons-CeGfXO21.js} +1 -1
@@ -1,5 +1,5 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { W as SidebarIcon, et as WarningIcon, f as ChevronDownIcon, r as ArrowLeftIcon } from "../../icons-cuEtsgj9.js";
2
+ import { W as SidebarIcon, et as WarningIcon, f as ChevronDownIcon, r as ArrowLeftIcon } from "../../icons-CeGfXO21.js";
3
3
  import { Button } from "../foundations/Button.js";
4
4
  import { t as capitalize } from "../../format-COCyV98Z.js";
5
5
  import { n as mergeRefs } from "../../merge-refs-DF_7w2x_.js";
@@ -37,28 +37,12 @@ function isCompactSidebar(root) {
37
37
  const rootFontSize = Number.parseFloat(getComputedStyle(document.documentElement).fontSize) || 16;
38
38
  return root.offsetWidth <= compactSidebarWidthRem * rootFontSize;
39
39
  }
40
- /**
41
- * The one application shell: responsive master-detail with a resizable desktop
42
- * sidebar, a compact floating drawer that leaves the main content in place as
43
- * a dismiss target, and a shell-owned application bar composed from slots.
44
- * The root exposes `data-sidebar-open="true" | "false"` as its public styling
45
- * hook, and its container name `responsive-sidebar-shell` is public contract:
46
- * surfaces that compose the shell size themselves against it.
47
- */
48
- function ResponsiveSidebarShell({ sidebar, sidebarLabel = "sidebar", sidebarOpen, sidebarTogglePlacement = "main", defaultSidebarOpen, defaultSidebarWidth = sidebarDefaultWidth, onSidebarOpenChange, bar, error, showMainLabel = "Show main content", className, children, ref, style, ...props }) {
49
- const sidebarId = React.useId();
50
- const rootRef = React.useRef(null);
51
- const mainRef = React.useRef(null);
52
- const openerRef = React.useRef(null);
40
+ /** Owns the independent sidebar and main-content breakpoints. */
41
+ function useSidebarLayout({ rootRef, mainRef, isSidebarOpen, setSidebarOpen, primeSidebarOpen, wantsBuiltInDefault }) {
53
42
  const compactRef = React.useRef(null);
54
43
  const [compact, setCompact] = React.useState(true);
55
- const restoreSidebarOnWideRef = React.useRef(true);
56
- const [isSidebarOpen, setSidebarOpen, primeSidebarOpen] = useControllableSidebar({
57
- sidebarOpen,
58
- defaultSidebarOpen,
59
- onSidebarOpenChange
60
- });
61
- const wantsBuiltInDefault = sidebarOpen === void 0 && defaultSidebarOpen === void 0;
44
+ const [contentCompact, setContentCompact] = React.useState(true);
45
+ const restoreSidebarOnWideRef = React.useRef(isSidebarOpen);
62
46
  React.useLayoutEffect(() => {
63
47
  const root = rootRef.current;
64
48
  if (!root) return;
@@ -83,11 +67,55 @@ function ResponsiveSidebarShell({ sidebar, sidebarLabel = "sidebar", sidebarOpen
83
67
  observer.observe(root);
84
68
  return () => observer.disconnect();
85
69
  }, [
70
+ rootRef,
86
71
  isSidebarOpen,
87
72
  primeSidebarOpen,
88
73
  setSidebarOpen,
89
74
  wantsBuiltInDefault
90
75
  ]);
76
+ React.useLayoutEffect(() => {
77
+ const main = mainRef.current;
78
+ if (!main) return;
79
+ const syncContent = () => {
80
+ if (main.offsetWidth > 0) setContentCompact(isCompactSidebar(main));
81
+ };
82
+ syncContent();
83
+ if (typeof ResizeObserver === "undefined") return;
84
+ const observer = new ResizeObserver(syncContent);
85
+ observer.observe(main);
86
+ return () => observer.disconnect();
87
+ }, [mainRef]);
88
+ return {
89
+ compact,
90
+ contentCompact
91
+ };
92
+ }
93
+ /**
94
+ * The one application shell: responsive master-detail with a resizable desktop
95
+ * sidebar, a compact floating drawer that leaves the main content in place as
96
+ * a dismiss target, and a shell-owned application bar composed from slots.
97
+ * The root exposes `data-sidebar-open="true" | "false"` as its public styling
98
+ * hook, and its container name `responsive-sidebar-shell` is public contract:
99
+ * surfaces that compose the shell size themselves against it.
100
+ */
101
+ function ResponsiveSidebarShell({ sidebar, sidebarLabel = "sidebar", sidebarOpen, sidebarTogglePlacement = "main", defaultSidebarOpen, defaultSidebarWidth = sidebarDefaultWidth, onSidebarOpenChange, bar, error, showMainLabel = "Show main content", className, children, ref, style, ...props }) {
102
+ const sidebarId = React.useId();
103
+ const rootRef = React.useRef(null);
104
+ const mainRef = React.useRef(null);
105
+ const openerRef = React.useRef(null);
106
+ const [isSidebarOpen, setSidebarOpen, primeSidebarOpen] = useControllableSidebar({
107
+ sidebarOpen,
108
+ defaultSidebarOpen,
109
+ onSidebarOpenChange
110
+ });
111
+ const { compact, contentCompact } = useSidebarLayout({
112
+ rootRef,
113
+ mainRef,
114
+ isSidebarOpen,
115
+ setSidebarOpen,
116
+ primeSidebarOpen,
117
+ wantsBuiltInDefault: sidebarOpen === void 0 && defaultSidebarOpen === void 0
118
+ });
91
119
  const hasSidebar = sidebar != null;
92
120
  const sidebarVisible = hasSidebar && isSidebarOpen;
93
121
  const toggleLabel = capitalize(sidebarLabel);
@@ -115,10 +143,12 @@ function ResponsiveSidebarShell({ sidebar, sidebarLabel = "sidebar", sidebarOpen
115
143
  }, [setSidebarOpen, updateSidebar]);
116
144
  const controls = React.useMemo(() => ({
117
145
  compact,
146
+ contentCompact,
118
147
  closeSidebar,
119
148
  closeSidebarOnCompact
120
149
  }), [
121
150
  compact,
151
+ contentCompact,
122
152
  closeSidebar,
123
153
  closeSidebarOnCompact
124
154
  ]);
@@ -174,6 +204,7 @@ function ResponsiveSidebarShell({ sidebar, sidebarLabel = "sidebar", sidebarOpen
174
204
  /* @__PURE__ */ jsxs("div", {
175
205
  ref: mainRef,
176
206
  className: "responsive-sidebar-shell__main",
207
+ "data-content-compact": String(contentCompact),
177
208
  tabIndex: -1,
178
209
  children: [
179
210
  /* @__PURE__ */ jsx(SidebarAppBar, {
@@ -209,9 +240,8 @@ function ResponsiveSidebarShell({ sidebar, sidebarLabel = "sidebar", sidebarOpen
209
240
  }
210
241
  function SidebarAppBar({ bar, hasSidebar, sidebarTogglePlacement, sidebarId, isSidebarOpen, toggleSidebar, toggleLabel, toggleTooltip }) {
211
242
  const hasCustomLeading = bar?.leading != null;
212
- const hasAppLeading = bar?.back != null || hasCustomLeading;
213
243
  const hasTitleTrigger = hasSidebar && bar?.compactTitleTrigger != null && bar?.compactLeading == null;
214
- const mainSidebarToggle = hasSidebar && (sidebarTogglePlacement === "sidebar" || !hasCustomLeading) ? /* @__PURE__ */ jsx(AppTopBar.Button, {
244
+ const mainSidebarToggle = hasSidebar && (sidebarTogglePlacement === "sidebar" || !hasCustomLeading || !isSidebarOpen) ? /* @__PURE__ */ jsx(AppTopBar.Button, {
215
245
  className: cx("responsive-sidebar-shell__toggle", sidebarToggleClassName(sidebarTogglePlacement, hasTitleTrigger, bar?.compactLeading != null)),
216
246
  label: toggleLabel,
217
247
  tooltip: toggleTooltip,
@@ -221,7 +251,7 @@ function SidebarAppBar({ bar, hasSidebar, sidebarTogglePlacement, sidebarId, isS
221
251
  onClick: (event) => toggleSidebar(event.currentTarget),
222
252
  children: /* @__PURE__ */ jsx(SidebarIcon, {})
223
253
  }) : null;
224
- const compactLeadingMode = hasTitleTrigger ? "trigger" : !hasAppLeading && bar?.compactLeading != null ? "custom" : void 0;
254
+ const compactLeadingMode = hasTitleTrigger ? "trigger" : bar?.compactLeading != null ? "custom" : void 0;
225
255
  if (!hasSidebarAppBar(bar, hasSidebar)) return null;
226
256
  return /* @__PURE__ */ jsxs(AppTopBar.Root, {
227
257
  "aria-label": bar?.label ?? "Application controls",
@@ -270,15 +300,17 @@ function sidebarToggleClassName(placement, hasTitleTrigger, hasCompactLeading) {
270
300
  if (hasCompactLeading) return "responsive-sidebar-shell__toggle--replaced-by-compact-leading";
271
301
  }
272
302
  function SidebarAppBarLeading({ bar, mainSidebarToggle, compactLeadingMode }) {
303
+ const { contentCompact } = useResponsiveSidebarShell();
304
+ const compactNavigationActive = contentCompact && compactLeadingMode === "custom";
273
305
  if (mainSidebarToggle == null && bar?.back == null && bar?.leading == null && bar?.compactLeading == null) return null;
274
306
  return /* @__PURE__ */ jsxs(AppTopBar.Leading, { children: [
275
- bar?.back ? /* @__PURE__ */ jsx(AppTopBar.Link, {
307
+ mainSidebarToggle,
308
+ bar?.back && !compactNavigationActive ? /* @__PURE__ */ jsx(AppTopBar.Link, {
276
309
  label: bar.back.label,
277
310
  render: bar.back.link,
278
311
  children: /* @__PURE__ */ jsx(ArrowLeftIcon, {})
279
312
  }) : null,
280
- bar?.leading,
281
- mainSidebarToggle,
313
+ compactNavigationActive ? null : bar?.leading,
282
314
  compactLeadingMode === "custom" ? /* @__PURE__ */ jsx("span", {
283
315
  className: "responsive-sidebar-shell__compact-leading",
284
316
  children: bar?.compactLeading
@@ -1,8 +1,8 @@
1
1
  import { Button } from "../foundations/Button.js";
2
- import { Dialog } from "../foundations/Dialog.js";
3
- import { a as formatErrorMessage } from "../../format-COCyV98Z.js";
4
2
  import { Field } from "../foundations/Field.js";
5
3
  import { Form } from "../foundations/Form.js";
4
+ import { Dialog } from "../foundations/Dialog.js";
5
+ import { a as formatErrorMessage } from "../../format-COCyV98Z.js";
6
6
  import * as React from "react";
7
7
  import { jsx, jsxs } from "react/jsx-runtime";
8
8
  //#region src/components/general-purpose/SettingsFormDialog.tsx
@@ -1,2 +1,2 @@
1
- import { n as SetupChecklistGroup, t as SetupChecklistAction } from "../../SetupChecklist-Btmy3-_C.js";
1
+ import { n as SetupChecklistGroup, t as SetupChecklistAction } from "../../SetupChecklist-DWyifWWg.js";
2
2
  export { SetupChecklistAction, SetupChecklistGroup };
@@ -1,10 +1,21 @@
1
1
  import { EmptyStateProps } from "../foundations/EmptyState.js";
2
+ import * as React from "react";
2
3
 
3
4
  //#region src/components/general-purpose/StatusScreen.d.ts
4
5
  /** A whole-region status with one shared layout for its message and recovery actions. */
5
6
  declare function StatusScreen({
6
7
  role,
8
+ page,
9
+ title,
7
10
  ...props
8
- }: EmptyStateProps): import("react").JSX.Element;
11
+ }: EmptyStateProps & {
12
+ /** Standalone page semantics: a main landmark and level-one title. */page?: boolean;
13
+ }): React.JSX.Element;
14
+ /** Nonvisual route/status updates; the host supplies the localized announcement. */
15
+ declare function StatusAnnouncement({
16
+ children
17
+ }: {
18
+ children: React.ReactNode;
19
+ }): React.JSX.Element;
9
20
  //#endregion
10
- export { StatusScreen };
21
+ export { StatusAnnouncement, StatusScreen };
@@ -2,12 +2,36 @@ import { EmptyState } from "../foundations/EmptyState.js";
2
2
  import { jsx } from "react/jsx-runtime";
3
3
  //#region src/components/general-purpose/StatusScreen.tsx
4
4
  /** A whole-region status with one shared layout for its message and recovery actions. */
5
- function StatusScreen({ role = "status", ...props }) {
5
+ function StatusScreen({ role = "status", page = false, title, ...props }) {
6
+ if (page) return /* @__PURE__ */ jsx("main", {
7
+ className: "status-screen",
8
+ children: /* @__PURE__ */ jsx(EmptyState, {
9
+ ...props,
10
+ role,
11
+ title: title ? /* @__PURE__ */ jsx("h1", {
12
+ className: "status-screen__title",
13
+ children: title
14
+ }) : void 0
15
+ })
16
+ });
6
17
  return /* @__PURE__ */ jsx("section", {
7
18
  className: "status-screen",
8
19
  role,
9
- children: /* @__PURE__ */ jsx(EmptyState, { ...props })
20
+ children: /* @__PURE__ */ jsx(EmptyState, {
21
+ title,
22
+ ...props
23
+ })
24
+ });
25
+ }
26
+ /** Nonvisual route/status updates; the host supplies the localized announcement. */
27
+ function StatusAnnouncement({ children }) {
28
+ return /* @__PURE__ */ jsx("span", {
29
+ className: "sigvelo-visually-hidden",
30
+ role: "status",
31
+ "aria-live": "polite",
32
+ "aria-atomic": "true",
33
+ children
10
34
  });
11
35
  }
12
36
  //#endregion
13
- export { StatusScreen };
37
+ export { StatusAnnouncement, StatusScreen };
@@ -1,5 +1,5 @@
1
- import { n as IconButtonProps } from "../../IconButton-ByiyjkYE.js";
2
- import { t as CopyButtonProps } from "../../copy-button-OUwOdgEm.js";
1
+ import { n as IconButtonProps } from "../../IconButton-CAlFVb2L.js";
2
+ import { t as CopyButtonProps } from "../../copy-button-CJYYgCIU.js";
3
3
  import * as React from "react";
4
4
 
5
5
  //#region src/components/general-purpose/Terminal.d.ts
@@ -1,7 +1,7 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { Z as TerminalIcon, nt as XIcon } from "../../icons-cuEtsgj9.js";
2
+ import { Z as TerminalIcon, nt as XIcon } from "../../icons-CeGfXO21.js";
3
3
  import { IconButton } from "../foundations/IconButton.js";
4
- import { t as CopyButton } from "../../copy-button-CSDuDfdP.js";
4
+ import { t as CopyButton } from "../../copy-button-Dk2vRe9j.js";
5
5
  import { ScrollArea } from "../foundations/ScrollArea.js";
6
6
  import * as React from "react";
7
7
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -1,6 +1,6 @@
1
1
  import { n as mergeBaseClassName, t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { K as SpinnerIcon, d as CheckIcon, nt as XIcon, p as ChevronRightIcon } from "../../icons-cuEtsgj9.js";
3
2
  import { Collapsible } from "../foundations/Collapsible.js";
3
+ import { K as SpinnerIcon, d as CheckIcon, nt as XIcon, p as ChevronRightIcon } from "../../icons-CeGfXO21.js";
4
4
  import { Progress } from "../foundations/Progress.js";
5
5
  import * as React from "react";
6
6
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- import { F as MoonIcon, P as MonitorIcon, Y as SunIcon } from "../../icons-cuEtsgj9.js";
1
+ import { F as MoonIcon, P as MonitorIcon, Y as SunIcon } from "../../icons-CeGfXO21.js";
2
2
  import { useTheme } from "../foundations/ThemeProvider.js";
3
3
  import { Radio, RadioGroup } from "../foundations/RadioGroup.js";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- import { n as IconButtonProps } from "../../IconButton-ByiyjkYE.js";
1
+ import { n as IconButtonProps } from "../../IconButton-CAlFVb2L.js";
2
2
  import * as React from "react";
3
3
  import { useRender } from "@base-ui/react/use-render";
4
4
 
@@ -1,9 +1,9 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { H as RefreshIcon, f as ChevronDownIcon, i as ArrowRightIcon, r as ArrowLeftIcon } from "../../icons-cuEtsgj9.js";
3
2
  import { Collapsible } from "../foundations/Collapsible.js";
3
+ import { H as RefreshIcon, f as ChevronDownIcon, i as ArrowRightIcon, r as ArrowLeftIcon } from "../../icons-CeGfXO21.js";
4
4
  import { IconButton } from "../foundations/IconButton.js";
5
- import { ScrollArea } from "../foundations/ScrollArea.js";
6
5
  import { Input } from "../foundations/Input.js";
6
+ import { ScrollArea } from "../foundations/ScrollArea.js";
7
7
  import * as React from "react";
8
8
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
9
9
  import { useRender } from "@base-ui/react/use-render";
@@ -1,8 +1,8 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { D as LinkIcon } from "../../icons-cuEtsgj9.js";
2
+ import { D as LinkIcon } from "../../icons-CeGfXO21.js";
3
3
  import { Button } from "../foundations/Button.js";
4
+ import { a as CodeBlockCopyButton, i as CodeBlockContent, n as CodeBlockActions, p as CodeBlockTitle, r as CodeBlockContainer, s as CodeBlockHeader, t as CodeBlock } from "../../CodeBlock-Dw1z6jc8.js";
4
5
  import { Popover } from "../foundations/Popover.js";
5
- import { a as CodeBlockCopyButton, i as CodeBlockContent, n as CodeBlockActions, p as CodeBlockTitle, r as CodeBlockContainer, s as CodeBlockHeader, t as CodeBlock } from "../../CodeBlock-g8sADidM.js";
6
6
  import { ToggleGroup } from "../foundations/ToggleGroup.js";
7
7
  import * as React from "react";
8
8
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,10 +1,10 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { r as ArrowLeftIcon } from "../../icons-cuEtsgj9.js";
2
+ import { r as ArrowLeftIcon } from "../../icons-CeGfXO21.js";
3
3
  import { MessageActions } from "../ai-sdk/Message.js";
4
4
  import { SubagentRunIndicator, getSubagentRunName } from "../agents-sdk/SubagentRunIndicator.js";
5
5
  import { NaniteMark } from "./NaniteScene.js";
6
- import { TransitionSurface } from "../foundations/TransitionSurface.js";
7
6
  import { AgentChat } from "../agents-sdk/AgentChat.js";
7
+ import { TransitionSurface } from "../foundations/TransitionSurface.js";
8
8
  import { AppTopBar } from "../general-purpose/AppTopBar.js";
9
9
  import { ThinkChat } from "../agents-sdk/ThinkChat.js";
10
10
  import { SubagentRunMetadata } from "../agents-sdk/SubagentRunDetails.js";
@@ -1,4 +1,4 @@
1
- import { n as IconButtonProps } from "./IconButton-ByiyjkYE.js";
1
+ import { n as IconButtonProps } from "./IconButton-CAlFVb2L.js";
2
2
  import * as React from "react";
3
3
 
4
4
  //#region src/components/_internal/copy-button.d.ts
@@ -1,4 +1,4 @@
1
- import { d as CheckIcon, h as CopyIcon } from "./icons-cuEtsgj9.js";
1
+ import { d as CheckIcon, h as CopyIcon } from "./icons-CeGfXO21.js";
2
2
  import { IconButton } from "./components/foundations/IconButton.js";
3
3
  import * as React from "react";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -12,8 +12,8 @@
12
12
  margin-block: var(--sigvelo-spacing-2);
13
13
  font-family: inherit;
14
14
  /* Codex `conversation-body`: same ink as the turn, at 60%. Size matches
15
- chat (`text-size-chat`); opacity is what marks the row as status. */
16
- color: color-mix(in oklab, var(--sigvelo-color-text) 60%, transparent);
15
+ chat (`text-size-chat`); the muted foreground marks the row as status. */
16
+ color: var(--sigvelo-color-text-muted);
17
17
  }
18
18
 
19
19
  .activity__trigger {
@@ -67,12 +67,8 @@
67
67
  /* Takes the whole transcript region, the way the scroller it stands in for
68
68
  does, so nothing moves when the rows arrive. The composer floats over its
69
69
  lower edge, so the state sits slightly high rather than under it. The
70
- .empty-state inside brings its own type and colour. */
70
+ shared brand loading state brings its own type and colour. */
71
71
  .agent-chat__transcript-loading {
72
- display: grid;
73
- block-size: 100%;
74
- min-block-size: 0;
75
- place-items: center;
76
72
  padding-block-end: var(--agent-chat-dock-size, 5rem);
77
73
  }
78
74
 
@@ -98,10 +94,7 @@
98
94
  display: grid;
99
95
  align-content: start;
100
96
  grid-template-rows: var(--sigvelo-layout-track-fill) auto var(--sigvelo-layout-track-fill);
101
- inline-size: min(
102
- 100%,
103
- var(--agent-chat-content-max-inline-size, var(--sigvelo-measure-wide-block))
104
- );
97
+ inline-size: min(100%, var(--sigvelo-measure-prose));
105
98
  min-block-size: 100%;
106
99
  margin-inline: auto;
107
100
  padding-block: max(var(--agent-chat-start-screen-padding-block), env(safe-area-inset-top, 0px))
@@ -120,7 +113,7 @@
120
113
 
121
114
  .agent-chat-start-screen__heading {
122
115
  margin: 0;
123
- color: var(--sigvelo-color-text);
116
+ color: var(--sigvelo-color-primary-text);
124
117
  font-size: var(--sigvelo-text-lg);
125
118
  font-weight: var(--sigvelo-font-weight-normal);
126
119
  letter-spacing: var(--sigvelo-tracking-normal);
@@ -164,56 +157,14 @@
164
157
  inline-size: 100%;
165
158
  }
166
159
 
167
- /* The first-turn utility tray owns its buttons' treatment so every host gets
168
- the same quiet look without per-app classes. Hug the actions — a short
169
- viewport (Storybook addons, a short side panel) used to stretch this into
170
- a vacant slab. Space-between only when there are three slots to fill.
171
- Compact control tokens keep this strip on the same ramp as the composer.
172
- Count buttons only: opening a popup inserts non-layout focus guards. */
160
+ /* Keep the utility tray inset beneath the floating composer. */
173
161
  .agent-chat-start-screen__composer-tray {
174
162
  align-self: start;
175
- justify-content: start;
163
+ flex-wrap: wrap;
164
+ justify-content: center;
176
165
  min-block-size: 0;
177
166
  }
178
167
 
179
- .agent-chat-start-screen__composer-tray:has(
180
- > :nth-child(3 of .button):nth-last-child(1 of .button)
181
- ) {
182
- justify-content: space-between;
183
- }
184
-
185
- .agent-chat-start-screen__composer-tray > .button {
186
- --sigvelo-recipe-button-height: var(--sigvelo-density-compact-control-height);
187
- --sigvelo-recipe-button-font-size: var(--sigvelo-density-compact-control-font-size);
188
- --sigvelo-recipe-button-icon-size: var(--sigvelo-density-compact-control-icon-size);
189
-
190
- min-inline-size: 0;
191
- gap: var(--sigvelo-density-compact-control-gap);
192
- padding-inline: var(--sigvelo-density-compact-control-padding-inline);
193
- color: inherit;
194
- font-size: var(--sigvelo-density-compact-control-font-size);
195
- font-weight: var(--sigvelo-font-weight-normal);
196
- }
197
-
198
- .agent-chat-start-screen__composer-tray > .button > svg {
199
- flex: none;
200
- }
201
-
202
- .agent-chat-start-screen__composer-tray .app-icon {
203
- --sigvelo-recipe-app-icon-size: var(--sigvelo-spacing-5);
204
- }
205
-
206
- .agent-chat-start-screen__composer-tray .app-icon :is(svg, img) {
207
- inline-size: 100%;
208
- block-size: 100%;
209
- }
210
-
211
- .agent-chat-start-screen__composer-tray > .button > span:not(.app-icon-stack) {
212
- overflow: hidden;
213
- text-overflow: ellipsis;
214
- white-space: nowrap;
215
- }
216
-
217
168
  .agent-chat-start-screen__suggestions {
218
169
  grid-row: 3;
219
170
  align-self: start;
@@ -307,41 +258,6 @@
307
258
  opacity: 1;
308
259
  }
309
260
 
310
- /* First paint only. The start screen is replaced by the transcript after the
311
- first message, so this never re-runs mid-conversation. */
312
- @media (prefers-reduced-motion: no-preference) {
313
- .agent-chat-start-screen__primary > *,
314
- .agent-chat-starter {
315
- animation: agent-chat-start-screen-enter var(--sigvelo-motion-duration-disclosure)
316
- var(--sigvelo-ease-snappy) backwards;
317
- }
318
-
319
- .agent-chat-start-screen__primary > *:nth-child(2),
320
- .agent-chat-starter:nth-child(2) {
321
- animation-delay: calc(var(--sigvelo-motion-stagger-step) * 1);
322
- }
323
-
324
- .agent-chat-start-screen__content > *:nth-child(3),
325
- .agent-chat-starter:nth-child(3) {
326
- animation-delay: calc(var(--sigvelo-motion-stagger-step) * 2);
327
- }
328
-
329
- .agent-chat-starter:nth-child(4) {
330
- animation-delay: calc(var(--sigvelo-motion-stagger-step) * 3);
331
- }
332
-
333
- .agent-chat-starter:nth-child(n + 5) {
334
- animation-delay: calc(var(--sigvelo-motion-stagger-step) * 4);
335
- }
336
- }
337
-
338
- @keyframes agent-chat-start-screen-enter {
339
- from {
340
- opacity: 0;
341
- translate: 0 var(--sigvelo-motion-distance-md);
342
- }
343
- }
344
-
345
261
  /*
346
262
  * Once there is something in the composer, the screen quiets around it instead
347
263
  * of moving it: the heading slides down behind the composer and the starters
@@ -564,21 +480,6 @@
564
480
  font-size: var(--sigvelo-text-lg);
565
481
  }
566
482
 
567
- .agent-chat-start-screen__composer-tray:has(
568
- > :nth-child(3 of .button):nth-last-child(1 of .button)
569
- ) {
570
- display: grid;
571
- grid-template-columns: repeat(3, var(--sigvelo-layout-track-fill));
572
- }
573
-
574
- .agent-chat-start-screen__composer-tray:has(
575
- > :nth-child(3 of .button):nth-last-child(1 of .button)
576
- )
577
- > .button {
578
- inline-size: 100%;
579
- justify-content: center;
580
- }
581
-
582
483
  .agent-chat-starter__label {
583
484
  overflow: hidden;
584
485
  text-overflow: ellipsis;
@@ -0,0 +1,9 @@
1
+ /* Opt in only at a full-page application entrypoint. */
2
+ @layer app {
3
+ html,
4
+ body,
5
+ #app {
6
+ height: 100%;
7
+ overflow: hidden;
8
+ }
9
+ }
@@ -42,7 +42,8 @@
42
42
  max-inline-size: min(20rem, 45vw);
43
43
  align-self: center;
44
44
  justify-self: center;
45
- color: var(--sigvelo-color-text);
45
+ color: var(--sigvelo-color-primary-text);
46
+ letter-spacing: var(--sigvelo-tracking-tight);
46
47
  font-size: var(--sigvelo-density-compact-control-font-size);
47
48
  font-weight: var(--sigvelo-font-weight-semibold);
48
49
  line-height: var(--sigvelo-leading-tight);
@@ -56,14 +57,13 @@
56
57
  /* A panel header, not an application title bar: the symmetric track layout
57
58
  would float the name in the middle of the plane instead of labelling its
58
59
  leading edge. Only the trailing group still needs room of its own.
59
- Panel chrome also sits atop scrolling content, so it separates the Ploy
60
- way one hairline and a breath of shadow, still no fill. */
60
+ A single hairline separates scrolling content while the title stays flat
61
+ against its hosting surface in both themes. */
61
62
  .app-top-bar[data-title-align="start"] {
62
63
  position: relative;
63
64
  grid-template-columns: auto auto var(--sigvelo-layout-track-fill);
64
65
  border-block-end: var(--sigvelo-border-style) var(--sigvelo-border-width)
65
66
  var(--sigvelo-color-neutral-border-subtle);
66
- box-shadow: var(--sigvelo-elevation-bar);
67
67
  }
68
68
 
69
69
  .app-top-bar[data-title-align="start"] .app-top-bar__title {
@@ -126,3 +126,9 @@
126
126
  outline-offset: -2px;
127
127
  }
128
128
  }
129
+
130
+ /* A matching router destination does not select an action such as New thread. */
131
+ .app-top-bar__button:is([aria-pressed="true"], [data-pressed]) {
132
+ color: var(--sigvelo-color-primary-text-on-subtle);
133
+ background-color: var(--sigvelo-color-primary-bg-subtle);
134
+ }
@@ -64,7 +64,7 @@
64
64
  block-size: 100%;
65
65
  font-size: var(--sigvelo-text-sm);
66
66
  font-weight: var(--sigvelo-font-weight-semibold);
67
- color: var(--sigvelo-color-text-muted);
67
+ color: var(--sigvelo-color-neutral-text-on-subtle);
68
68
  text-transform: uppercase;
69
69
  background-color: var(--sigvelo-color-neutral-bg-subtle);
70
70
  border-radius: inherit;
@@ -109,7 +109,7 @@
109
109
  background-color: var(--sigvelo-color-neutral-bg-muted);
110
110
  border: 2px solid var(--sigvelo-color-canvas);
111
111
  border-radius: var(--sigvelo-radius-full);
112
- color: var(--sigvelo-color-text-muted);
112
+ color: var(--sigvelo-color-neutral-text-on-subtle);
113
113
  }
114
114
 
115
115
  .avatar-group:has(.avatar[data-size="sm"]) .avatar-group__count {
@@ -45,7 +45,6 @@
45
45
  .inline-citation__trigger,
46
46
  .media-preview-card__play,
47
47
  .manager-office__unread-dot,
48
- .manager-office__nav-status,
49
48
  .manager-office__employee-nav::-webkit-scrollbar-thumb,
50
49
  :where([data-layout="chat"]) .manager-office__employee-link[aria-current="page"]::after,
51
50
  .menu__radio-indicator::before,
@@ -70,7 +69,6 @@
70
69
  .stepper__separator,
71
70
  .stepper__trigger,
72
71
  .subagent-run__milestone::before,
73
- .subagent-run__selector,
74
72
  .switch,
75
73
  .switch__thumb,
76
74
  .task__item::before,
@@ -166,6 +164,12 @@ a {
166
164
  touch-action: manipulation;
167
165
  }
168
166
 
167
+ /* Native content links share the brand accent; control-owned link recipes
168
+ can still supply their own foreground in the components layer. */
169
+ :where(a[href]) {
170
+ color: var(--sigvelo-color-primary-text);
171
+ }
172
+
169
173
  button,
170
174
  input,
171
175
  optgroup,
@@ -0,0 +1,58 @@
1
+ .brand-loading {
2
+ display: flex;
3
+ flex-direction: column;
4
+ align-items: center;
5
+ justify-content: center;
6
+ gap: var(--sigvelo-layout-gutter);
7
+ inline-size: 100%;
8
+ block-size: 100%;
9
+ min-block-size: 0;
10
+ padding: var(--sigvelo-layout-gutter);
11
+ }
12
+
13
+ .brand-loading__mark {
14
+ position: relative;
15
+ display: block;
16
+ inline-size: var(--sigvelo-spacing-24);
17
+ aspect-ratio: 1;
18
+ flex: none;
19
+ }
20
+
21
+ .brand-loading__mark img {
22
+ display: block;
23
+ inline-size: 100%;
24
+ block-size: 100%;
25
+ }
26
+
27
+ .brand-loading__mark::after {
28
+ position: absolute;
29
+ inset: 0;
30
+ content: "";
31
+ background: linear-gradient(
32
+ 105deg,
33
+ transparent 38%,
34
+ var(--sigvelo-color-primary-text-on-bg) 50%,
35
+ transparent 62%
36
+ );
37
+ background-size: 300% 100%;
38
+ mask: url("../assets/sigvelo-logo.svg") center / contain no-repeat;
39
+ animation: sigvelo-text-shimmer var(--sigvelo-motion-duration-shimmer)
40
+ var(--sigvelo-motion-ease-change) infinite;
41
+ }
42
+
43
+ .brand-loading__label {
44
+ color: var(--sigvelo-color-text-muted);
45
+ font-size: var(--sigvelo-text-compact);
46
+ line-height: var(--sigvelo-text-compact-leading);
47
+ text-align: center;
48
+ }
49
+
50
+ @media (prefers-reduced-motion: reduce), (forced-colors: active) {
51
+ .brand-loading__mark::after {
52
+ display: none;
53
+ }
54
+ }
55
+
56
+ :root[data-motion="reduce"] .brand-loading__mark::after {
57
+ display: none;
58
+ }