@mcp-b/react-components 0.40.0 → 0.42.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (228) hide show
  1. package/dist/{AgentChat-CVO7xyLC.d.ts → AgentChat-DVr2giwD.d.ts} +1 -1
  2. package/dist/{AgentToolRunsContext-BCVqCtJ1.d.ts → AgentToolRunsContext-daY67hFM.d.ts} +12 -0
  3. package/dist/{CodeBlock-CWk1FVtm.js → CodeBlock-BjELA-_s.js} +1 -1
  4. package/dist/{FileTree-xqHYBw4g.js → FileTree-DMYRdT6R.js} +1 -1
  5. package/dist/McpConnectorForm-MRm1r59e.d.ts +39 -0
  6. package/dist/{Message-DBsHHhcM.d.ts → Message-D_vCVEGB.d.ts} +20 -1
  7. package/dist/{ThinkChatActivity-D6-_5Phw.d.ts → ThinkChatActivity-CsDql-ER.d.ts} +4 -1
  8. package/dist/{ThinkExecutionRun-lYYgyeE1.d.ts → ThinkExecutionRun-k8bpyXqt.d.ts} +3 -3
  9. package/dist/{WorkspaceFileView-Lab3om3F.js → WorkspaceFileView-DwdXiKku.js} +17 -22
  10. package/dist/{WorkspaceMessageResponse-Cy28WGSz.d.ts → WorkspaceMessageResponse-D66ty4FO.d.ts} +1 -1
  11. package/dist/components/agents-sdk/AgentActivity.js +4 -3
  12. package/dist/components/agents-sdk/AgentChat.d.ts +1 -1
  13. package/dist/components/agents-sdk/AgentChat.js +42 -18
  14. package/dist/components/agents-sdk/AgentToolRunsContext.d.ts +1 -1
  15. package/dist/components/agents-sdk/AgentToolRunsContext.js +12 -0
  16. package/dist/components/agents-sdk/BrowserLiveScreen.d.ts +135 -0
  17. package/dist/components/agents-sdk/BrowserLiveScreen.js +637 -0
  18. package/dist/components/agents-sdk/BrowserLiveView.d.ts +2 -2
  19. package/dist/components/agents-sdk/BrowserLiveView.js +6 -9
  20. package/dist/components/agents-sdk/BrowserReplay.js +1 -1
  21. package/dist/components/agents-sdk/BrowserRunPanel.d.ts +1 -1
  22. package/dist/components/agents-sdk/BrowserRunPanel.js +8 -13
  23. package/dist/components/agents-sdk/ManagerOffice.d.ts +168 -0
  24. package/dist/components/agents-sdk/ManagerOffice.js +698 -0
  25. package/dist/components/agents-sdk/McpConnectionRequest.js +3 -3
  26. package/dist/components/agents-sdk/McpConnectorForm.d.ts +1 -38
  27. package/dist/components/agents-sdk/McpPluginCatalog.d.ts +8 -2
  28. package/dist/components/agents-sdk/McpPluginCatalog.js +82 -62
  29. package/dist/components/agents-sdk/McpServerPicker.d.ts +1 -1
  30. package/dist/components/agents-sdk/McpServerPicker.js +2 -2
  31. package/dist/components/agents-sdk/ModelSelector.js +1 -1
  32. package/dist/components/agents-sdk/PromptInputCommands.js +1 -1
  33. package/dist/components/agents-sdk/SubagentRunDetails.d.ts +1 -9
  34. package/dist/components/agents-sdk/SubagentRunDetails.js +1 -9
  35. package/dist/components/agents-sdk/SubagentRunIndicator.js +1 -1
  36. package/dist/components/agents-sdk/SubagentRunSelector.d.ts +4 -2
  37. package/dist/components/agents-sdk/SubagentRunSelector.js +7 -6
  38. package/dist/components/agents-sdk/ThinkChat.d.ts +4 -4
  39. package/dist/components/agents-sdk/ThinkChatActivity.d.ts +1 -1
  40. package/dist/components/agents-sdk/ThinkChatActivity.js +18 -4
  41. package/dist/components/agents-sdk/ThinkChatToolPanels.js +7 -3
  42. package/dist/components/agents-sdk/ThinkExecutionDetail.d.ts +1 -1
  43. package/dist/components/agents-sdk/ThinkExecutionDetail.js +45 -43
  44. package/dist/components/agents-sdk/ThinkExecutionRun.d.ts +2 -2
  45. package/dist/components/agents-sdk/ThinkExecutionRun.js +5 -6
  46. package/dist/components/agents-sdk/ThinkExecutionStatus.d.ts +1 -1
  47. package/dist/components/agents-sdk/ThinkExecutionStatus.js +8 -12
  48. package/dist/components/agents-sdk/ThinkExecutionWorkbench.d.ts +8 -1
  49. package/dist/components/agents-sdk/ThinkExecutionWorkbench.js +43 -37
  50. package/dist/components/agents-sdk/ThinkFullApp.d.ts +42 -78
  51. package/dist/components/agents-sdk/ThinkFullApp.js +121 -202
  52. package/dist/components/agents-sdk/ThinkFullAppViewSwitch.d.ts +1 -1
  53. package/dist/components/agents-sdk/ThinkRoutine.d.ts +1 -1
  54. package/dist/components/agents-sdk/ThinkRoutineBrowser.js +1 -1
  55. package/dist/components/agents-sdk/ThinkRoutineDetail.js +4 -15
  56. package/dist/components/agents-sdk/ThinkRoutineForm.js +1 -1
  57. package/dist/components/agents-sdk/ThinkRoutineLibrary.d.ts +7 -6
  58. package/dist/components/agents-sdk/ThinkRoutineLibrary.js +112 -140
  59. package/dist/components/agents-sdk/ThinkRoutineRuns.d.ts +1 -1
  60. package/dist/components/agents-sdk/ThinkRoutineRuns.js +3 -10
  61. package/dist/components/agents-sdk/ThinkThreadPicker.js +2 -1
  62. package/dist/components/agents-sdk/WorkspaceBrowser.js +1 -1
  63. package/dist/components/agents-sdk/WorkspaceExplorer.js +2 -1
  64. package/dist/components/agents-sdk/WorkspaceFileView.js +1 -1
  65. package/dist/components/agents-sdk/WorkspaceHeader.js +2 -1
  66. package/dist/components/agents-sdk/WorkspaceMessageResponse.d.ts +1 -1
  67. package/dist/components/agents-sdk/WorkspaceMountManager.js +11 -11
  68. package/dist/components/ai-sdk/Activity.js +1 -1
  69. package/dist/components/ai-sdk/AgentAttention.d.ts +1 -1
  70. package/dist/components/ai-sdk/AgentChatStartScreen.js +1 -1
  71. package/dist/components/ai-sdk/Approval.js +1 -1
  72. package/dist/components/ai-sdk/Artifact.js +1 -1
  73. package/dist/components/ai-sdk/ChainOfThought.d.ts +1 -1
  74. package/dist/components/ai-sdk/ChainOfThought.js +1 -1
  75. package/dist/components/ai-sdk/Checkpoint.js +1 -1
  76. package/dist/components/ai-sdk/CodeBlock.js +1 -1
  77. package/dist/components/ai-sdk/Conversation.js +1 -1
  78. package/dist/components/ai-sdk/Goal.js +1 -1
  79. package/dist/components/ai-sdk/MediaPreviewCard.js +1 -1
  80. package/dist/components/ai-sdk/Message.d.ts +2 -2
  81. package/dist/components/ai-sdk/Message.js +25 -3
  82. package/dist/components/ai-sdk/MessageScroller.js +3 -2
  83. package/dist/components/ai-sdk/MessageScrollerVirtual.js +2 -1
  84. package/dist/components/ai-sdk/Plan.js +1 -1
  85. package/dist/components/ai-sdk/PromptInput.js +21 -15
  86. package/dist/components/ai-sdk/Queue.d.ts +4 -4
  87. package/dist/components/ai-sdk/Queue.js +6 -15
  88. package/dist/components/ai-sdk/Reasoning.js +1 -1
  89. package/dist/components/ai-sdk/Sources.js +1 -1
  90. package/dist/components/ai-sdk/Task.d.ts +2 -2
  91. package/dist/components/ai-sdk/Task.js +2 -2
  92. package/dist/components/extension/ChatGptSignInScreen.js +2 -1
  93. package/dist/components/extension/CodexModelSelector.js +1 -1
  94. package/dist/components/extension/ConversationTabPicker.js +1 -1
  95. package/dist/components/foundations/Avatar.d.ts +1 -10
  96. package/dist/components/foundations/Avatar.js +1 -10
  97. package/dist/components/foundations/Checkbox.js +1 -1
  98. package/dist/components/foundations/CheckboxGroup.js +1 -0
  99. package/dist/components/foundations/ContextMenu.js +1 -1
  100. package/dist/components/foundations/LinkButton.d.ts +12 -10
  101. package/dist/components/foundations/LinkButton.js +15 -11
  102. package/dist/components/foundations/Menubar.js +1 -1
  103. package/dist/components/foundations/SearchField.js +1 -1
  104. package/dist/components/foundations/Select.js +1 -1
  105. package/dist/components/foundations/Stepper.js +1 -1
  106. package/dist/components/foundations/Toast.js +1 -1
  107. package/dist/components/foundations/ToggleGroup.d.ts +79 -1
  108. package/dist/components/foundations/icons.d.ts +2 -2
  109. package/dist/components/foundations/icons.js +2 -2
  110. package/dist/components/general-purpose/AppFrame.js +1 -0
  111. package/dist/components/general-purpose/AppTopBar.d.ts +6 -0
  112. package/dist/components/general-purpose/AppTopBar.js +2 -1
  113. package/dist/components/general-purpose/Commit.d.ts +2 -2
  114. package/dist/components/general-purpose/Commit.js +5 -13
  115. package/dist/components/general-purpose/EnvironmentVariables.d.ts +2 -2
  116. package/dist/components/general-purpose/EnvironmentVariables.js +4 -7
  117. package/dist/components/general-purpose/FileTree.js +1 -1
  118. package/dist/components/general-purpose/PricingBillingToggle.js +4 -9
  119. package/dist/components/general-purpose/PricingPlanCard.js +15 -14
  120. package/dist/components/general-purpose/ResizableSidePanel.d.ts +8 -0
  121. package/dist/components/general-purpose/ResizableSidePanel.js +3 -2
  122. package/dist/components/general-purpose/ResponsiveSidebarShell.d.ts +105 -2
  123. package/dist/components/general-purpose/ResponsiveSidebarShell.js +112 -56
  124. package/dist/components/general-purpose/SetupChecklist.js +1 -1
  125. package/dist/components/general-purpose/Terminal.d.ts +1 -1
  126. package/dist/components/general-purpose/Terminal.js +4 -12
  127. package/dist/components/general-purpose/TestResults.d.ts +1 -1
  128. package/dist/components/general-purpose/TestResults.js +8 -21
  129. package/dist/components/general-purpose/ThemeModeControl.js +1 -1
  130. package/dist/components/general-purpose/WebPreview.d.ts +4 -1
  131. package/dist/components/general-purpose/WebPreview.js +6 -14
  132. package/dist/components/nanites/AgentConnection.js +2 -2
  133. package/dist/components/nanites/AgentToolDetail.d.ts +1 -1
  134. package/dist/components/nanites/AgentToolDetail.js +6 -5
  135. package/dist/components/nanites/NaniteScene.js +11 -11
  136. package/dist/{copy-button-Bc7jsYv_.js → copy-button-lys9N_aI.js} +1 -1
  137. package/dist/{icons-DwgNir1Q.d.ts → icons-0corjfxR.d.ts} +1 -16
  138. package/dist/{icons-MmIXciMO.js → icons-CVFSeTJn.js} +2 -5
  139. package/dist/styles/accordion.css +1 -0
  140. package/dist/styles/action-guide.css +8 -7
  141. package/dist/styles/activity-header.css +13 -39
  142. package/dist/styles/activity.css +40 -55
  143. package/dist/styles/agent-attention.css +19 -19
  144. package/dist/styles/agent-chat.css +94 -42
  145. package/dist/styles/agent-connection.css +10 -4
  146. package/dist/styles/agent-tool-detail.css +5 -15
  147. package/dist/styles/alert-dialog.css +4 -4
  148. package/dist/styles/app-frame.css +1 -3
  149. package/dist/styles/app-icon.css +12 -18
  150. package/dist/styles/app-top-bar.css +31 -9
  151. package/dist/styles/approval.css +1 -0
  152. package/dist/styles/artifact.css +6 -6
  153. package/dist/styles/attachment-preview.css +5 -4
  154. package/dist/styles/avatar.css +6 -22
  155. package/dist/styles/base.css +2 -8
  156. package/dist/styles/browser-live-screen.css +38 -0
  157. package/dist/styles/browser-live-view.css +12 -4
  158. package/dist/styles/browser-replay.css +6 -6
  159. package/dist/styles/browser-run-panel.css +21 -18
  160. package/dist/styles/button.css +15 -6
  161. package/dist/styles/card.css +5 -5
  162. package/dist/styles/chatgpt-sign-in-screen.css +6 -6
  163. package/dist/styles/code-block.css +14 -13
  164. package/dist/styles/codex-model-selector.css +2 -0
  165. package/dist/styles/collapsible.css +1 -0
  166. package/dist/styles/commit.css +30 -7
  167. package/dist/styles/context.css +9 -9
  168. package/dist/styles/conversation-tab-picker.css +1 -1
  169. package/dist/styles/conversation.css +6 -8
  170. package/dist/styles/dialog.css +4 -4
  171. package/dist/styles/empty-state.css +3 -3
  172. package/dist/styles/environment-variables.css +12 -9
  173. package/dist/styles/field.css +2 -1
  174. package/dist/styles/fieldset.css +2 -2
  175. package/dist/styles/index.css +8 -7
  176. package/dist/styles/manager-office.css +480 -0
  177. package/dist/styles/mcp-plugin-catalog.css +44 -39
  178. package/dist/styles/mcp-server-picker.css +4 -4
  179. package/dist/styles/message-scroller.css +9 -11
  180. package/dist/styles/message.css +74 -28
  181. package/dist/styles/nanite-scene.css +9 -9
  182. package/dist/styles/navigation-menu.css +1 -0
  183. package/dist/styles/plan.css +13 -12
  184. package/dist/styles/pricing-page.css +37 -30
  185. package/dist/styles/prompt-input.css +26 -18
  186. package/dist/styles/queue.css +1 -0
  187. package/dist/styles/reasoning.css +1 -9
  188. package/dist/styles/recipes.css +29 -58
  189. package/dist/styles/responsive-sidebar-shell.css +107 -29
  190. package/dist/styles/separator.css +5 -5
  191. package/dist/styles/sources.css +4 -4
  192. package/dist/styles/stepper.css +1 -0
  193. package/dist/styles/streamdown.css +31 -21
  194. package/dist/styles/subagent-run.css +20 -3
  195. package/dist/styles/tabs.css +1 -0
  196. package/dist/styles/task.css +5 -17
  197. package/dist/styles/terminal.css +29 -10
  198. package/dist/styles/test-results.css +16 -7
  199. package/dist/styles/think-execution-status.css +10 -26
  200. package/dist/styles/think-execution-workbench.css +98 -108
  201. package/dist/styles/think-full-app.css +75 -225
  202. package/dist/styles/think-routine-library.css +26 -95
  203. package/dist/styles/think-thread-picker.css +17 -12
  204. package/dist/styles/transition-surface.css +7 -8
  205. package/dist/styles/utilities.css +75 -0
  206. package/dist/styles/web-preview.css +46 -22
  207. package/dist/styles/workspace-explorer.css +22 -44
  208. package/dist/styles/workspace-mount-manager.css +24 -2
  209. package/dist/utils/favicon.d.ts +6 -1
  210. package/dist/utils/favicon.js +18 -1
  211. package/package.json +37 -35
  212. package/dist/ResponsiveSidebarShell-DWjULskY.d.ts +0 -68
  213. package/dist/ToggleGroup-_pQMyHGM.d.ts +0 -80
  214. package/dist/components/agents-sdk/AgentActivityPreview.d.ts +0 -46
  215. package/dist/components/agents-sdk/AgentActivityPreview.js +0 -93
  216. package/dist/components/agents-sdk/ThinkThreadShell.d.ts +0 -38
  217. package/dist/components/agents-sdk/ThinkThreadShell.js +0 -27
  218. package/dist/components/foundations/Badge.d.ts +0 -62
  219. package/dist/components/foundations/Badge.js +0 -55
  220. package/dist/components/foundations/StatusPill.d.ts +0 -43
  221. package/dist/components/foundations/StatusPill.js +0 -35
  222. package/dist/components/general-purpose/Shell.d.ts +0 -149
  223. package/dist/components/general-purpose/Shell.js +0 -116
  224. package/dist/styles/agent-activity-preview-overlay.css +0 -169
  225. package/dist/styles/agent-activity-preview.css +0 -209
  226. package/dist/styles/badge.css +0 -120
  227. package/dist/styles/shell.css +0 -122
  228. package/dist/styles/status-pill.css +0 -39
@@ -1,23 +1,10 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
2
  import { Collapsible } from "../foundations/Collapsible.js";
3
- import { Y as SpinnerIcon, d as CheckIcon, it as XIcon, m as ChevronRightIcon } from "../../icons-MmIXciMO.js";
4
- import { Badge } from "../foundations/Badge.js";
3
+ import { K as SpinnerIcon, d as CheckIcon, p as ChevronRightIcon, tt as XIcon } from "../../icons-CVFSeTJn.js";
5
4
  import { Progress } from "../foundations/Progress.js";
6
5
  import * as React from "react";
7
6
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
8
7
  //#region src/components/general-purpose/TestResults.tsx
9
- const STATUS_COLOR = {
10
- passed: "success",
11
- failed: "destructive",
12
- skipped: "warning",
13
- running: "primary"
14
- };
15
- const STATUS_LABEL = {
16
- passed: "PASS",
17
- failed: "FAIL",
18
- skipped: "SKIP",
19
- running: "RUN"
20
- };
21
8
  const TestResultsContext = React.createContext({});
22
9
  /**
23
10
  * Displays a test suite report with summary stats, progress bar, and
@@ -26,7 +13,7 @@ const TestResultsContext = React.createContext({});
26
13
  * Built internally for CI/test output in agent and developer workflows. Use it
27
14
  * for structured test reports. Do not use it for generic status dashboards.
28
15
  *
29
- * Sigvelo changes: composes Collapsible, Badge, and Progress; maps status
16
+ * Sigvelo changes: composes Collapsible and Progress; maps status
30
17
  * color and spacing to Sigvelo CSS tokens; opens failed suites by default.
31
18
  *
32
19
  * Suite triggers inherit Collapsible keyboard behavior. Error stacks should be
@@ -85,8 +72,9 @@ function TestResultsSummary({ className, children, ref, ...props }) {
85
72
  ref,
86
73
  className: cx("test-results__summary", className),
87
74
  ...props,
88
- children: children ?? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(Badge, {
89
- color: STATUS_COLOR[overall],
75
+ children: children ?? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("strong", {
76
+ className: "test-results__outcome",
77
+ "data-status": overall,
90
78
  children: overall === "passed" ? "All tests passed" : `${summary.failed} failed`
91
79
  }), /* @__PURE__ */ jsxs("span", {
92
80
  className: "test-results__stats",
@@ -201,10 +189,9 @@ function TestSuiteName({ className, children, ref, ...props }) {
201
189
  "aria-hidden": "true",
202
190
  children: /* @__PURE__ */ jsx(ChevronRightIcon, {})
203
191
  }),
204
- /* @__PURE__ */ jsx(Badge, {
205
- color: STATUS_COLOR[status],
206
- size: "sm",
207
- children: STATUS_LABEL[status]
192
+ /* @__PURE__ */ jsx(TestStatus, {
193
+ status,
194
+ "aria-label": `${status} suite`
208
195
  }),
209
196
  /* @__PURE__ */ jsx("span", {
210
197
  className: "test-results__suite-name sigvelo-truncate",
@@ -1,4 +1,4 @@
1
- import { I as MonitorIcon, L as MoonIcon, Q as SunIcon } from "../../icons-MmIXciMO.js";
1
+ import { N as MonitorIcon, P as MoonIcon, Y as SunIcon } from "../../icons-CVFSeTJn.js";
2
2
  import { Radio, RadioGroup } from "../foundations/RadioGroup.js";
3
3
  import { useTheme } from "../foundations/ThemeProvider.js";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -25,6 +25,8 @@ interface WebPreviewProps extends React.HTMLAttributes<HTMLDivElement> {
25
25
  className?: string;
26
26
  /** Navigation, body, and optional console slots. */
27
27
  children?: React.ReactNode;
28
+ /** Extra recipes composed with the framed-panel contract. */
29
+ "data-recipe"?: string;
28
30
  }
29
31
  /**
30
32
  * An iframe preview with a navigation bar, URL input, and optional console
@@ -35,7 +37,7 @@ interface WebPreviewProps extends React.HTMLAttributes<HTMLDivElement> {
35
37
  * known URL with local navigation controls. Do not use it for trusted app
36
38
  * embedding that needs custom iframe permissions; add those explicitly here.
37
39
  *
38
- * Sigvelo changes: composes IconButton, Input, ScrollArea, and Badge; keeps a
40
+ * Sigvelo changes: composes IconButton, Input, and ScrollArea; keeps a
39
41
  * conservative sandbox; and maps navigation and console UI to Sigvelo CSS
40
42
  * tokens.
41
43
  *
@@ -64,6 +66,7 @@ declare function WebPreview({
64
66
  onUrlChange,
65
67
  children,
66
68
  ref,
69
+ "data-recipe": recipe,
67
70
  ...props
68
71
  }: WebPreviewProps & {
69
72
  ref?: React.Ref<HTMLDivElement>;
@@ -1,8 +1,7 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
2
  import { Collapsible } from "../foundations/Collapsible.js";
3
- import { G as RefreshIcon, f as ChevronDownIcon, i as ArrowRightIcon, r as ArrowLeftIcon } from "../../icons-MmIXciMO.js";
3
+ import { H as RefreshIcon, f as ChevronDownIcon, i as ArrowRightIcon, r as ArrowLeftIcon } from "../../icons-CVFSeTJn.js";
4
4
  import { IconButton } from "../foundations/IconButton.js";
5
- import { Badge } from "../foundations/Badge.js";
6
5
  import { ScrollArea } from "../foundations/ScrollArea.js";
7
6
  import { Input } from "../foundations/Input.js";
8
7
  import * as React from "react";
@@ -23,7 +22,7 @@ function useWebPreviewContext() {
23
22
  * known URL with local navigation controls. Do not use it for trusted app
24
23
  * embedding that needs custom iframe permissions; add those explicitly here.
25
24
  *
26
- * Sigvelo changes: composes IconButton, Input, ScrollArea, and Badge; keeps a
25
+ * Sigvelo changes: composes IconButton, Input, and ScrollArea; keeps a
27
26
  * conservative sandbox; and maps navigation and console UI to Sigvelo CSS
28
27
  * tokens.
29
28
  *
@@ -45,7 +44,7 @@ function useWebPreviewContext() {
45
44
  * </WebPreview>
46
45
  * ```
47
46
  */
48
- function WebPreview({ className, defaultUrl = "", url: controlledUrl, onUrlChange, children, ref, ...props }) {
47
+ function WebPreview({ className, defaultUrl = "", url: controlledUrl, onUrlChange, children, ref, "data-recipe": recipe, ...props }) {
49
48
  const [navigation, setNavigation] = React.useState(() => ({
50
49
  history: defaultUrl ? [defaultUrl] : [],
51
50
  index: defaultUrl ? 0 : -1
@@ -127,7 +126,7 @@ function WebPreview({ className, defaultUrl = "", url: controlledUrl, onUrlChang
127
126
  ref,
128
127
  className: cx("web-preview", className),
129
128
  ...props,
130
- "data-recipe": "framed-panel",
129
+ "data-recipe": cx("framed-panel", recipe),
131
130
  children
132
131
  })
133
132
  });
@@ -238,12 +237,6 @@ function WebPreviewBody({ className, loading, src, ref, interactive = true, ...p
238
237
  ...props
239
238
  }, iframeSrc), loading] });
240
239
  }
241
- const LEVEL_COLOR = {
242
- log: "neutral",
243
- info: "primary",
244
- warn: "warning",
245
- error: "destructive"
246
- };
247
240
  function WebPreviewConsole({ className, logs = [], children, ref, ...props }) {
248
241
  const { consoleOpen, setConsoleOpen } = useWebPreviewContext();
249
242
  return /* @__PURE__ */ jsxs(Collapsible.Root, {
@@ -272,9 +265,8 @@ function WebPreviewConsole({ className, logs = [], children, ref, ...props }) {
272
265
  }) : logs.map((log, index) => /* @__PURE__ */ jsxs("li", {
273
266
  className: cx("web-preview__console-item", `web-preview__console-item--${log.level}`),
274
267
  children: [
275
- /* @__PURE__ */ jsx(Badge, {
276
- color: LEVEL_COLOR[log.level],
277
- size: "sm",
268
+ /* @__PURE__ */ jsx("span", {
269
+ className: "web-preview__console-level",
278
270
  children: log.level
279
271
  }),
280
272
  /* @__PURE__ */ jsx("span", {
@@ -1,7 +1,7 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { A as LinkIcon } from "../../icons-MmIXciMO.js";
2
+ import { D as LinkIcon } from "../../icons-CVFSeTJn.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-CWk1FVtm.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-BjELA-_s.js";
5
5
  import { Popover } from "../foundations/Popover.js";
6
6
  import { ToggleGroup } from "../foundations/ToggleGroup.js";
7
7
  import * as React from "react";
@@ -22,7 +22,7 @@ interface AgentToolDetailProps<State = unknown, MessageT extends UIMessage = UIM
22
22
  backLink?: React.ReactElement;
23
23
  /**
24
24
  * Route-owned run controls (the app's cancel callable, for example),
25
- * rendered in a `SubagentRunActions` bar pinned to the bottom edge.
25
+ * rendered in the top bar's trailing slot after the status mark.
26
26
  */
27
27
  actions?: React.ReactNode;
28
28
  }
@@ -1,10 +1,10 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { r as ArrowLeftIcon } from "../../icons-MmIXciMO.js";
2
+ import { r as ArrowLeftIcon } from "../../icons-CVFSeTJn.js";
3
3
  import { TransitionSurface } from "../foundations/TransitionSurface.js";
4
4
  import { AppTopBar } from "../general-purpose/AppTopBar.js";
5
5
  import { NaniteMark } from "./NaniteScene.js";
6
6
  import { SubagentRunIndicator, getSubagentRunName } from "../agents-sdk/SubagentRunIndicator.js";
7
- import { SubagentRunActions, SubagentRunMilestone, SubagentRunMilestones, SubagentRunProgress } from "../agents-sdk/SubagentRunDetails.js";
7
+ import { SubagentRunMilestone, SubagentRunMilestones, SubagentRunProgress } from "../agents-sdk/SubagentRunDetails.js";
8
8
  import { t as ThinkChat } from "../../ThinkChat-DkA4Wr71.js";
9
9
  import * as React from "react";
10
10
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -29,8 +29,10 @@ function AgentToolDetail({ actions, backLink, chat, className, messages, ref, ru
29
29
  "data-slot": "agent-tool-detail",
30
30
  className: cx("agent-tool-detail", className),
31
31
  ...props,
32
+ "data-recipe": "fill-host",
32
33
  children: [
33
34
  /* @__PURE__ */ jsxs(AppTopBar.Root, {
35
+ titleAlign: "start",
34
36
  "aria-label": `${name} controls`,
35
37
  children: [
36
38
  /* @__PURE__ */ jsxs(AppTopBar.Leading, { children: [backLink ? /* @__PURE__ */ jsx(AppTopBar.Link, {
@@ -43,7 +45,7 @@ function AgentToolDetail({ actions, backLink, chat, className, messages, ref, ru
43
45
  className: "agent-tool-detail__title",
44
46
  children: name
45
47
  }) }),
46
- /* @__PURE__ */ jsx(AppTopBar.Trailing, { children: /* @__PURE__ */ jsx(SubagentRunIndicator, { run }) })
48
+ /* @__PURE__ */ jsxs(AppTopBar.Trailing, { children: [/* @__PURE__ */ jsx(SubagentRunIndicator, { run }), actions] })
47
49
  ]
48
50
  }),
49
51
  progressLabel || run.milestones?.length || run.error || run.summary ? /* @__PURE__ */ jsxs("div", {
@@ -80,8 +82,7 @@ function AgentToolDetail({ actions, backLink, chat, className, messages, ref, ru
80
82
  showComposer: false,
81
83
  loading: true
82
84
  })
83
- }),
84
- actions ? /* @__PURE__ */ jsx(SubagentRunActions, { children: actions }) : null
85
+ })
85
86
  ]
86
87
  });
87
88
  }
@@ -16,8 +16,8 @@ const SCREEN_BORDER = "#3a5068";
16
16
  const SCREEN_LINE = "#2e3d50";
17
17
  const SCREEN_ICON_WARN = "#c87832";
18
18
  const GLASS_STROKE = "#8ba7b8";
19
- const BADGE_SUCCESS = "#0f7b6c";
20
- const BADGE_FAIL = "#dc2626";
19
+ const STATUS_MARK_SUCCESS = "#0f7b6c";
20
+ const STATUS_MARK_FAIL = "#dc2626";
21
21
  const TRIO_XS = [
22
22
  40,
23
23
  100,
@@ -108,8 +108,8 @@ function NaniteScene({ variant, mode = "trio", className, title }) {
108
108
  }
109
109
  const showBrowser = variant !== "idle" && variant !== "helmet";
110
110
  const showGlass = variant === "working";
111
- const showSuccessBadge = variant === "celebrating";
112
- const showFailBadge = variant === "concerned";
111
+ const showSuccessMark = variant === "celebrating";
112
+ const showFailMark = variant === "concerned";
113
113
  const soloViewBox = showBrowser ? "0 0 120 56" : "0 0 52 56";
114
114
  const soloWidth = showBrowser ? 120 : 52;
115
115
  const naniteX = 24;
@@ -265,15 +265,15 @@ function NaniteScene({ variant, mode = "trio", className, title }) {
265
265
  })]
266
266
  })
267
267
  }) : null,
268
- showSuccessBadge ? /* @__PURE__ */ jsx("g", {
268
+ showSuccessMark ? /* @__PURE__ */ jsx("g", {
269
269
  transform: `translate(96, ${screenCy - 10})`,
270
270
  children: /* @__PURE__ */ jsxs("g", {
271
- className: "nanite-scene__badge",
271
+ className: "nanite-scene__status-mark",
272
272
  children: [/* @__PURE__ */ jsx("circle", {
273
273
  cx: "0",
274
274
  cy: "0",
275
275
  r: "7",
276
- fill: BADGE_SUCCESS,
276
+ fill: STATUS_MARK_SUCCESS,
277
277
  stroke: "#ffffff",
278
278
  strokeWidth: "1.5"
279
279
  }), /* @__PURE__ */ jsx("path", {
@@ -286,16 +286,16 @@ function NaniteScene({ variant, mode = "trio", className, title }) {
286
286
  })]
287
287
  })
288
288
  }) : null,
289
- showFailBadge ? /* @__PURE__ */ jsx("g", {
289
+ showFailMark ? /* @__PURE__ */ jsx("g", {
290
290
  transform: `translate(96, ${screenCy - 10})`,
291
291
  children: /* @__PURE__ */ jsxs("g", {
292
- className: "nanite-scene__badge",
292
+ className: "nanite-scene__status-mark",
293
293
  children: [
294
294
  /* @__PURE__ */ jsx("circle", {
295
295
  cx: "0",
296
296
  cy: "0",
297
297
  r: "7",
298
- fill: BADGE_FAIL,
298
+ fill: STATUS_MARK_FAIL,
299
299
  stroke: "#ffffff",
300
300
  strokeWidth: "1.5"
301
301
  }),
@@ -320,7 +320,7 @@ function NaniteScene({ variant, mode = "trio", className, title }) {
320
320
  ]
321
321
  })
322
322
  }) : null,
323
- showSuccessBadge ? /* @__PURE__ */ jsxs("g", {
323
+ showSuccessMark ? /* @__PURE__ */ jsxs("g", {
324
324
  className: "nanite-scene__sparkles",
325
325
  children: [
326
326
  /* @__PURE__ */ jsx("circle", {
@@ -1,4 +1,4 @@
1
- import { d as CheckIcon, g as CopyIcon } from "./icons-MmIXciMO.js";
1
+ import { d as CheckIcon, h as CopyIcon } from "./icons-CVFSeTJn.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";
@@ -22,11 +22,6 @@ declare const ChevronDownIcon: ({
22
22
  strokeWidth,
23
23
  ...props
24
24
  }: IconProps) => import("react").JSX.Element;
25
- declare const ChevronLeftIcon: ({
26
- size,
27
- strokeWidth,
28
- ...props
29
- }: IconProps) => import("react").JSX.Element;
30
25
  declare const CheckIcon: ({
31
26
  size,
32
27
  strokeWidth,
@@ -238,11 +233,6 @@ declare const CalendarIcon: ({
238
233
  strokeWidth,
239
234
  ...props
240
235
  }: IconProps) => import("react").JSX.Element;
241
- declare const HashIcon: ({
242
- size,
243
- strokeWidth,
244
- ...props
245
- }: IconProps) => import("react").JSX.Element;
246
236
  declare const WrenchIcon: ({
247
237
  size,
248
238
  strokeWidth,
@@ -253,11 +243,6 @@ declare const InfoIcon: ({
253
243
  strokeWidth,
254
244
  ...props
255
245
  }: IconProps) => import("react").JSX.Element;
256
- declare const ImageIcon: ({
257
- size,
258
- strokeWidth,
259
- ...props
260
- }: IconProps) => import("react").JSX.Element;
261
246
  declare const MonitorIcon: ({
262
247
  size,
263
248
  strokeWidth,
@@ -301,4 +286,4 @@ declare const MaximizeIcon: ({
301
286
  ...props
302
287
  }: IconProps) => import("react").JSX.Element;
303
288
  //#endregion
304
- export { StopIcon as $, InfoIcon as A, MoveToFrontIcon as B, EyeOffIcon as C, HashIcon as D, FolderOpenIcon as E, MessageSquareIcon as F, PlusIcon as G, PauseIcon as H, MicrophoneIcon as I, SearchIcon as J, QueueIcon as K, MinusIcon as L, LinkIcon as M, MaximizeIcon as N, IconProps as O, McpIcon as P, SquareIcon as Q, MonitorIcon as R, EyeIcon as S, FolderIcon as T, PencilIcon as U, PaperclipIcon as V, PlayIcon as W, SlackIcon as X, SidebarIcon as Y, SpinnerIcon as Z, CopyIcon as _, ArrowUpIcon as a, WrenchIcon as at, DownloadIcon as b, BoxIcon as c, CalendarIcon as d, SunIcon as et, CheckIcon as f, CodeIcon as g, ChevronRightIcon as h, ArrowRightIcon as i, WarningIcon as it, KeyboardIcon as j, ImageIcon as k, BrainIcon as l, ChevronLeftIcon as m, ArrowDownIcon as n, TerminalIcon as nt, ArrowUpRightIcon as o, XIcon as ot, ChevronDownIcon as p, RefreshIcon as q, ArrowLeftIcon as r, TrashIcon as rt, BookmarkIcon as s, ArchiveIcon as t, TargetIcon as tt, BrandIconProps as u, DiscordIcon as v, FileIcon as w, EllipsisIcon as x, DotIcon as y, MoonIcon as z };
289
+ export { TerminalIcon as $, MaximizeIcon as A, PencilIcon as B, FileIcon as C, InfoIcon as D, IconProps as E, MonitorIcon as F, SearchIcon as G, PlusIcon as H, MoonIcon as I, SpinnerIcon as J, SidebarIcon as K, MoveToFrontIcon as L, MessageSquareIcon as M, MicrophoneIcon as N, KeyboardIcon as O, MinusIcon as P, TargetIcon as Q, PaperclipIcon as R, EyeOffIcon as S, FolderOpenIcon as T, QueueIcon as U, PlayIcon as V, RefreshIcon as W, StopIcon as X, SquareIcon as Y, SunIcon as Z, DiscordIcon as _, ArrowUpIcon as a, EllipsisIcon as b, BoxIcon as c, CalendarIcon as d, TrashIcon as et, CheckIcon as f, CopyIcon as g, CodeIcon as h, ArrowRightIcon as i, McpIcon as j, LinkIcon as k, BrainIcon as l, ChevronRightIcon as m, ArrowDownIcon as n, WrenchIcon as nt, ArrowUpRightIcon as o, ChevronDownIcon as p, SlackIcon as q, ArrowLeftIcon as r, XIcon as rt, BookmarkIcon as s, ArchiveIcon as t, WarningIcon as tt, BrandIconProps as u, DotIcon as v, FolderIcon as w, EyeIcon as x, DownloadIcon as y, PauseIcon as z };
@@ -1,6 +1,6 @@
1
1
  import { t as cx } from "./class-names-BiMDVpUo.js";
2
2
  import { jsx } from "react/jsx-runtime";
3
- import { Archive, ArrowDown, ArrowLeft, ArrowRight, ArrowUp, ArrowUpRight, Bookmark, Box, Brain, CalendarDays, Check, ChevronDown, ChevronLeft, ChevronRight, CircleStop, CodeXml, Copy, CornerDownRight, Dot, Download, Ellipsis, Eye, EyeOff, File, Folder, FolderOpen, Hash, Image, Info, Keyboard, Link2, ListRestart, LoaderCircle, Maximize2, MessageSquare, Mic, Minus, Monitor, Moon, PanelLeft, Paperclip, Pause, Pencil, Play, Plus, RefreshCw, Search, Square, Sun, Target, Terminal, Trash2, TriangleAlert, Wrench, X } from "lucide-react";
3
+ import { Archive, ArrowDown, ArrowLeft, ArrowRight, ArrowUp, ArrowUpRight, Bookmark, Box, Brain, CalendarDays, Check, ChevronDown, ChevronRight, CircleStop, CodeXml, Copy, CornerDownRight, Dot, Download, Ellipsis, Eye, EyeOff, File, Folder, FolderOpen, Info, Keyboard, Link2, ListRestart, LoaderCircle, Maximize2, MessageSquare, Mic, Minus, Monitor, Moon, PanelLeft, Paperclip, Pause, Pencil, Play, Plus, RefreshCw, Search, Square, Sun, Target, Terminal, Trash2, TriangleAlert, Wrench, X } from "lucide-react";
4
4
  import { FaSlack } from "react-icons/fa6";
5
5
  import { SiDiscord, SiModelcontextprotocol } from "react-icons/si";
6
6
  //#region src/components/_internal/icons.tsx
@@ -27,7 +27,6 @@ function brandIcon(Component) {
27
27
  }
28
28
  const ChevronRightIcon = icon(ChevronRight);
29
29
  const ChevronDownIcon = icon(ChevronDown);
30
- const ChevronLeftIcon = icon(ChevronLeft);
31
30
  const CheckIcon = icon(Check);
32
31
  const CodeIcon = icon(CodeXml);
33
32
  const XIcon = icon(X);
@@ -79,10 +78,8 @@ const WarningIcon = icon(TriangleAlert);
79
78
  const BoxIcon = icon(Box);
80
79
  const BrainIcon = icon(Brain);
81
80
  const CalendarIcon = icon(CalendarDays);
82
- const HashIcon = icon(Hash);
83
81
  const WrenchIcon = icon(Wrench);
84
82
  const InfoIcon = icon(Info);
85
- const ImageIcon = icon(Image);
86
83
  const MonitorIcon = icon(Monitor);
87
84
  const MessageSquareIcon = icon(MessageSquare);
88
85
  const McpIcon = brandIcon(SiModelcontextprotocol);
@@ -93,4 +90,4 @@ const SunIcon = icon(Sun);
93
90
  const TargetIcon = icon(Target);
94
91
  const MaximizeIcon = icon(Maximize2);
95
92
  //#endregion
96
- export { TargetIcon as $, LinkIcon as A, PauseIcon as B, FileIcon as C, ImageIcon as D, HashIcon as E, MinusIcon as F, RefreshIcon as G, PlayIcon as H, MonitorIcon as I, SlackIcon as J, SearchIcon as K, MoonIcon as L, McpIcon as M, MessageSquareIcon as N, InfoIcon as O, MicrophoneIcon as P, SunIcon as Q, MoveToFrontIcon as R, EyeOffIcon as S, FolderOpenIcon as T, PlusIcon as U, PencilIcon as V, QueueIcon as W, SquareIcon as X, SpinnerIcon as Y, StopIcon as Z, DiscordIcon as _, ArrowUpIcon as a, EllipsisIcon as b, BoxIcon as c, CheckIcon as d, TerminalIcon as et, ChevronDownIcon as f, CopyIcon as g, CodeIcon as h, ArrowRightIcon as i, XIcon as it, MaximizeIcon as j, KeyboardIcon as k, BrainIcon as l, ChevronRightIcon as m, ArrowDownIcon as n, WarningIcon as nt, ArrowUpRightIcon as o, ChevronLeftIcon as p, SidebarIcon as q, ArrowLeftIcon as r, WrenchIcon as rt, BookmarkIcon as s, ArchiveIcon as t, TrashIcon as tt, CalendarIcon as u, DotIcon as v, FolderIcon as w, EyeIcon as x, DownloadIcon as y, PaperclipIcon as z };
93
+ export { WarningIcon as $, MessageSquareIcon as A, PlusIcon as B, FolderIcon as C, LinkIcon as D, KeyboardIcon as E, MoveToFrontIcon as F, SlackIcon as G, RefreshIcon as H, PaperclipIcon as I, StopIcon as J, SpinnerIcon as K, PauseIcon as L, MinusIcon as M, MonitorIcon as N, MaximizeIcon as O, MoonIcon as P, TrashIcon as Q, PencilIcon as R, FileIcon as S, InfoIcon as T, SearchIcon as U, QueueIcon as V, SidebarIcon as W, TargetIcon as X, SunIcon as Y, TerminalIcon as Z, DotIcon as _, ArrowUpIcon as a, EyeIcon as b, BoxIcon as c, CheckIcon as d, WrenchIcon as et, ChevronDownIcon as f, DiscordIcon as g, CopyIcon as h, ArrowRightIcon as i, MicrophoneIcon as j, McpIcon as k, BrainIcon as l, CodeIcon as m, ArrowDownIcon as n, ArrowUpRightIcon as o, ChevronRightIcon as p, SquareIcon as q, ArrowLeftIcon as r, BookmarkIcon as s, ArchiveIcon as t, XIcon as tt, CalendarIcon as u, DownloadIcon as v, FolderOpenIcon as w, EyeOffIcon as x, EllipsisIcon as y, PlayIcon as z };
@@ -62,6 +62,7 @@
62
62
  }
63
63
 
64
64
  .accordion__panel > * {
65
+ /* Disclosure content, not --sigvelo-layout-stack. */
65
66
  padding-block-end: var(--sigvelo-spacing-4);
66
67
  padding-inline: var(--sigvelo-recipe-control-padding-inline);
67
68
  }
@@ -3,13 +3,13 @@
3
3
  display: grid;
4
4
  gap: var(--sigvelo-spacing-8);
5
5
  inline-size: 100%;
6
- padding: var(--sigvelo-spacing-2) var(--sigvelo-spacing-2) var(--sigvelo-spacing-8);
6
+ padding: var(--sigvelo-layout-cluster) var(--sigvelo-layout-gutter) var(--sigvelo-spacing-8);
7
7
  color: var(--sigvelo-color-text);
8
8
  }
9
9
 
10
10
  .action-guide__header {
11
11
  display: grid;
12
- gap: var(--sigvelo-spacing-4);
12
+ gap: var(--sigvelo-layout-stack);
13
13
  }
14
14
 
15
15
  .action-guide__title,
@@ -32,13 +32,13 @@
32
32
 
33
33
  .action-guide__section {
34
34
  display: grid;
35
- gap: var(--sigvelo-spacing-4);
35
+ gap: var(--sigvelo-layout-stack);
36
36
  }
37
37
 
38
38
  .action-guide__list {
39
39
  display: grid;
40
- grid-template-columns: minmax(0, 1fr);
41
- gap: var(--sigvelo-spacing-3);
40
+ grid-template-columns: var(--sigvelo-layout-track-fill);
41
+ gap: var(--sigvelo-layout-gutter);
42
42
  margin: 0;
43
43
  padding: 0;
44
44
  list-style: none;
@@ -115,9 +115,10 @@
115
115
  border-radius: var(--sigvelo-radius-lg);
116
116
  }
117
117
 
118
- @container action-guide (width > 30rem) {
118
+ /* Local wrap. Not --sigvelo-layout-break-compact. */
119
+ @container action-guide (inline-size > 30rem) {
119
120
  .action-guide__list[data-layout="cards"] {
120
- grid-template-columns: repeat(2, minmax(0, 1fr));
121
+ grid-template-columns: repeat(2, var(--sigvelo-layout-track-fill));
121
122
  }
122
123
  }
123
124
 
@@ -1,58 +1,32 @@
1
1
  .activity__header {
2
2
  display: flex;
3
- width: 100%;
4
- min-width: 0;
3
+ inline-size: 100%;
4
+ min-inline-size: 0;
5
5
  align-items: center;
6
6
  gap: var(--sigvelo-spacing-1-5);
7
- color: color-mix(in oklab, var(--sigvelo-color-text-muted), transparent 20%);
7
+ color: inherit;
8
8
  font-family: inherit;
9
- font-size: var(--sigvelo-text-compact);
10
- font-weight: var(--sigvelo-font-weight-semibold);
9
+ font-size: var(--sigvelo-text-prose);
10
+ font-weight: var(--sigvelo-font-weight-normal);
11
+ line-height: var(--sigvelo-text-prose-leading);
11
12
  text-align: start;
12
13
  }
13
14
 
14
- /*
15
- * The action holds its content width and the detail absorbs whatever is left,
16
- * so the two shrink in the right order: a long path loses its tail while
17
- * "Reading" stays legible. Basis 0 on the detail is what makes it the flexible
18
- * one; the trailing affordance stays adjacent until the width is exhausted.
19
- *
20
- * With no detail present the action is the only flexible item, so a settled
21
- * summary sentence still truncates rather than inflating its owner.
22
- */
15
+ /* Action keeps its content width; the detail takes the leftover track. */
23
16
  .activity__header-action {
24
17
  flex: 0 1 auto;
25
- min-width: 0;
26
- max-width: max-content;
27
- overflow: hidden;
28
- color: var(--sigvelo-color-text);
29
- text-overflow: ellipsis;
30
- white-space: nowrap;
18
+ min-inline-size: 0;
19
+ color: inherit;
20
+ overflow-wrap: anywhere;
31
21
  }
32
22
 
33
- /*
34
- * The target of the action — a path, a command, a query. Muted, because in a
35
- * column of activity lines the verb is what the reader scans for.
36
- *
37
- * Faded rather than ellipsed: this is data, and a trailing "…" reads as part of
38
- * the value it is truncating.
39
- *
40
- * The fade is unconditional because it does not need a condition. Growing to
41
- * fill the free space means the box is wider than short text, so the gradient
42
- * lands on empty space and only bites once the text actually reaches the edge.
43
- */
23
+ /* Path, command, or query. Muted so the verb stays the scan target. */
44
24
  .activity__header-detail {
45
25
  flex: 1 1 0;
46
- min-width: 0;
47
- overflow: hidden;
26
+ min-inline-size: 0;
48
27
  color: var(--sigvelo-color-text-muted);
49
28
  font-weight: var(--sigvelo-font-weight-normal);
50
- white-space: nowrap;
51
- mask-image: linear-gradient(
52
- to right,
53
- #000 calc(100% - var(--sigvelo-spacing-4)),
54
- transparent 100%
55
- );
29
+ overflow-wrap: anywhere;
56
30
  }
57
31
 
58
32
  .activity__item-icon {