@mcp-b/react-components 0.20.5 → 0.22.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 (234) hide show
  1. package/dist/{AgentActivity-D2SHSGFX.d.ts → AgentActivity-D3OvrC02.d.ts} +14 -1
  2. package/dist/{AgentChat-C-ZyXbJz.d.ts → AgentChat-Bm1qYbOo.d.ts} +24 -1
  3. package/dist/AgentChatStartScreen-DDZ25aax.d.ts +60 -0
  4. package/dist/{Button-yRInko9u.d.ts → Button-SBIz6Lqi.d.ts} +2 -1
  5. package/dist/{CodeBlock-ygtuzqJd.js → CodeBlock-Cp67Njo3.js} +1 -1
  6. package/dist/{CodeBlock-Bbls1CnA.d.ts → CodeBlock-yMpGqScn.d.ts} +1 -1
  7. package/dist/Dialog-BD8NBKaE.d.ts +122 -0
  8. package/dist/{FileTree-CdgfccsM.js → FileTree-DW60q1w7.js} +1 -1
  9. package/dist/IconButton-CFKhu6OR.d.ts +35 -0
  10. package/dist/{Message-DzuteocT.js → Message-_-bEYLAO.js} +9 -16
  11. package/dist/{ModelSelector-pecWyOFI.js → ModelSelector-Brvj9Cab.js} +15 -8
  12. package/dist/{PromptInput-Cq-8RoXD.d.ts → PromptInput-BjoPWaaG.d.ts} +15 -2
  13. package/dist/{ThinkChatActivity-CdbL0aoA.d.ts → ThinkChatActivity-2BobmuvR.d.ts} +8 -7
  14. package/dist/{ThinkChatActivitySummary-D1xOrNrq.d.ts → ThinkChatActivitySummary-kr5fE0wg.d.ts} +14 -5
  15. package/dist/{ToggleGroup-DNd6cDJZ.d.ts → ToggleGroup-BW1jrhAF.d.ts} +10 -0
  16. package/dist/{Workspace-CWtust-2.d.ts → Workspace-CIycQ4xE.d.ts} +1 -1
  17. package/dist/{WorkspaceExplorer-DGigwsgH.d.ts → WorkspaceExplorer-BCipn7Vd.d.ts} +1 -1
  18. package/dist/{WorkspaceFile-D8Un_xge.d.ts → WorkspaceFile-DMtRMwVv.d.ts} +1 -1
  19. package/dist/{WorkspaceFileView-Bxx4wEzJ.js → WorkspaceFileView-rUEN2iox.js} +4 -4
  20. package/dist/assets/think-browser-host.png +0 -0
  21. package/dist/components/ActionGuide.d.ts +85 -0
  22. package/dist/components/ActionGuide.js +94 -0
  23. package/dist/components/Activity.d.ts +33 -17
  24. package/dist/components/Activity.js +40 -28
  25. package/dist/components/AgentActivity.d.ts +1 -1
  26. package/dist/components/AgentActivity.js +3 -11
  27. package/dist/components/AgentActivityPreview.d.ts +1 -1
  28. package/dist/components/AgentActivityPreview.js +17 -16
  29. package/dist/components/AgentAttention.d.ts +1 -1
  30. package/dist/components/AgentChat.d.ts +1 -1
  31. package/dist/components/AgentChat.js +169 -136
  32. package/dist/components/AgentChatStartScreen.d.ts +2 -0
  33. package/dist/components/AgentChatStartScreen.js +88 -0
  34. package/dist/components/AgentConnection.d.ts +1 -1
  35. package/dist/components/AgentConnection.js +2 -2
  36. package/dist/components/AgentMessageParts.js +1 -1
  37. package/dist/components/AgentToolDetail.js +1 -1
  38. package/dist/components/AlertDialog.d.ts +2 -1
  39. package/dist/components/AlertDialog.js +8 -2
  40. package/dist/components/AppIcon.d.ts +58 -0
  41. package/dist/components/AppIcon.js +51 -0
  42. package/dist/components/AppTopBar.js +9 -10
  43. package/dist/components/Approval.js +3 -5
  44. package/dist/components/Artifact.d.ts +3 -7
  45. package/dist/components/Artifact.js +12 -18
  46. package/dist/components/Avatar.d.ts +7 -2
  47. package/dist/components/Avatar.js +4 -2
  48. package/dist/components/BrowserLiveView.js +6 -8
  49. package/dist/components/BrowserReplay.js +9 -9
  50. package/dist/components/BrowserRunPanel.js +2 -2
  51. package/dist/components/Button.d.ts +1 -1
  52. package/dist/components/ChainOfThought.d.ts +1 -1
  53. package/dist/components/ChainOfThought.js +1 -1
  54. package/dist/components/ChatGptSignInScreen.js +2 -2
  55. package/dist/components/Checkbox.js +1 -1
  56. package/dist/components/Checkpoint.js +1 -1
  57. package/dist/components/CodeBlock.d.ts +1 -1
  58. package/dist/components/CodeBlock.js +1 -1
  59. package/dist/components/CodexModelSelector.js +1 -1
  60. package/dist/components/Commit.d.ts +1 -1
  61. package/dist/components/Commit.js +3 -3
  62. package/dist/components/ContextMenu.js +1 -1
  63. package/dist/components/Conversation.d.ts +3 -24
  64. package/dist/components/Conversation.js +6 -34
  65. package/dist/components/Dialog.d.ts +1 -117
  66. package/dist/components/Dialog.js +9 -1
  67. package/dist/components/EmptyState.d.ts +46 -0
  68. package/dist/components/EmptyState.js +50 -0
  69. package/dist/components/EnvironmentVariables.d.ts +1 -1
  70. package/dist/components/EnvironmentVariables.js +2 -2
  71. package/dist/components/FileTree.js +1 -1
  72. package/dist/components/IconButton.d.ts +1 -31
  73. package/dist/components/IconButton.js +2 -1
  74. package/dist/components/Kbd.d.ts +32 -0
  75. package/dist/components/Kbd.js +34 -0
  76. package/dist/components/McpConnectionRequest.d.ts +1 -1
  77. package/dist/components/McpConnectionRequest.js +1 -1
  78. package/dist/components/McpPluginCatalog.d.ts +86 -0
  79. package/dist/components/McpPluginCatalog.js +364 -0
  80. package/dist/components/McpServerPicker.d.ts +2 -2
  81. package/dist/components/McpServerPicker.js +7 -13
  82. package/dist/components/MediaPreviewCard.js +1 -1
  83. package/dist/components/Menubar.js +1 -1
  84. package/dist/components/Message.d.ts +4 -8
  85. package/dist/components/Message.js +1 -1
  86. package/dist/components/MessageScroller.d.ts +1 -1
  87. package/dist/components/MessageScroller.js +1 -1
  88. package/dist/components/ModelSelector.d.ts +12 -6
  89. package/dist/components/ModelSelector.js +2 -2
  90. package/dist/components/Plan.js +1 -1
  91. package/dist/components/PricingBillingToggle.js +1 -0
  92. package/dist/components/PricingPlanCard.d.ts +1 -1
  93. package/dist/components/PricingPlanCard.js +10 -12
  94. package/dist/components/PromptInput.d.ts +2 -2
  95. package/dist/components/PromptInput.js +30 -12
  96. package/dist/components/Queue.d.ts +1 -1
  97. package/dist/components/Queue.js +2 -2
  98. package/dist/components/Reasoning.js +5 -10
  99. package/dist/components/ResponsiveSidebarShell.js +2 -1
  100. package/dist/components/SearchField.js +1 -1
  101. package/dist/components/Select.js +1 -1
  102. package/dist/components/Sources.js +1 -1
  103. package/dist/components/StatusPill.d.ts +43 -0
  104. package/dist/components/StatusPill.js +35 -0
  105. package/dist/components/Stepper.js +1 -1
  106. package/dist/components/SubagentRunIndicator.js +1 -1
  107. package/dist/components/SubagentRunSelector.js +1 -1
  108. package/dist/components/Task.js +1 -1
  109. package/dist/components/Terminal.d.ts +3 -3
  110. package/dist/components/Terminal.js +7 -8
  111. package/dist/components/TestResults.js +1 -1
  112. package/dist/components/ThemeModeControl.js +1 -1
  113. package/dist/components/ThinkChat.d.ts +12 -6
  114. package/dist/components/ThinkChatActivity.d.ts +2 -2
  115. package/dist/components/ThinkChatActivity.js +28 -16
  116. package/dist/components/ThinkChatActivitySummary.d.ts +2 -2
  117. package/dist/components/ThinkChatActivitySummary.js +67 -64
  118. package/dist/components/ThinkChatToolPanels.js +1 -1
  119. package/dist/components/ThinkExecutionDetail.js +5 -5
  120. package/dist/components/ThinkExecutionStatus.js +1 -1
  121. package/dist/components/ThinkExecutionWorkbench.js +19 -25
  122. package/dist/components/ThinkFullApp.d.ts +8 -4
  123. package/dist/components/ThinkFullApp.js +17 -2
  124. package/dist/components/ThinkFullAppViewSwitch.d.ts +1 -1
  125. package/dist/components/ThinkRoutineBrowser.js +3 -2
  126. package/dist/components/ThinkRoutineForm.js +3 -3
  127. package/dist/components/ThinkRoutineLibrary.js +2 -2
  128. package/dist/components/ThinkRoutineRuns.js +4 -3
  129. package/dist/components/ThinkThreadPicker.js +5 -4
  130. package/dist/components/Toast.d.ts +12 -2
  131. package/dist/components/Toast.js +14 -4
  132. package/dist/components/ToggleGroup.d.ts +1 -1
  133. package/dist/components/ToggleGroup.js +54 -7
  134. package/dist/components/ToolInvocation.js +1 -1
  135. package/dist/components/Tooltip.d.ts +6 -4
  136. package/dist/components/Tooltip.js +11 -4
  137. package/dist/components/WebPreview.d.ts +13 -6
  138. package/dist/components/WebPreview.js +55 -50
  139. package/dist/components/Workspace.d.ts +1 -1
  140. package/dist/components/WorkspaceBrowser.d.ts +1 -1
  141. package/dist/components/WorkspaceBrowser.js +1 -1
  142. package/dist/components/WorkspaceExplorer.d.ts +3 -3
  143. package/dist/components/WorkspaceExplorer.js +1 -1
  144. package/dist/components/WorkspaceFile.d.ts +1 -1
  145. package/dist/components/WorkspaceFileView.d.ts +1 -1
  146. package/dist/components/WorkspaceFileView.js +1 -1
  147. package/dist/components/WorkspaceHeader.js +1 -1
  148. package/dist/components/icons.d.ts +2 -2
  149. package/dist/components/icons.js +2 -2
  150. package/dist/{copy-button-BrvQ7z4W.d.ts → copy-button-EBv_B9F6.d.ts} +2 -2
  151. package/dist/{copy-button-vo1paUSi.js → copy-button-TWq8nZhc.js} +8 -8
  152. package/dist/{icons-DyOM0EJs.js → icons-ua6f_GH3.js} +3 -2
  153. package/dist/{icons-DkRtZmvT.d.ts → icons-wP1yFUXF.d.ts} +6 -1
  154. package/dist/mcp-server-catalog-DycejaJ5.d.ts +1077 -0
  155. package/dist/styles/action-guide.css +128 -0
  156. package/dist/styles/activity-header.css +41 -10
  157. package/dist/styles/activity.css +26 -4
  158. package/dist/styles/agent-activity-preview-overlay.css +51 -12
  159. package/dist/styles/agent-activity-preview.css +23 -53
  160. package/dist/styles/agent-attention.css +2 -2
  161. package/dist/styles/agent-chat.css +291 -57
  162. package/dist/styles/agent-connection.css +8 -8
  163. package/dist/styles/alert-dialog.css +5 -20
  164. package/dist/styles/app-icon.css +122 -0
  165. package/dist/styles/app-top-bar.css +4 -5
  166. package/dist/styles/approval.css +1 -7
  167. package/dist/styles/artifact.css +4 -4
  168. package/dist/styles/avatar.css +13 -0
  169. package/dist/styles/base-ui-motion.css +1 -1
  170. package/dist/styles/base.css +94 -3
  171. package/dist/styles/browser-control-overlay.css +16 -7
  172. package/dist/styles/browser-live-view.css +5 -38
  173. package/dist/styles/browser-replay.css +2 -6
  174. package/dist/styles/browser-run-panel.css +4 -18
  175. package/dist/styles/button.css +17 -1
  176. package/dist/styles/card.css +4 -4
  177. package/dist/styles/chain-of-thought.css +0 -1
  178. package/dist/styles/chatgpt-sign-in-screen.css +7 -5
  179. package/dist/styles/checkbox-group.css +3 -3
  180. package/dist/styles/code-block.css +4 -4
  181. package/dist/styles/context-menu.css +1 -1
  182. package/dist/styles/conversation.css +7 -42
  183. package/dist/styles/description-list.css +4 -4
  184. package/dist/styles/dialog.css +22 -7
  185. package/dist/styles/empty-state.css +48 -0
  186. package/dist/styles/environment-variables.css +4 -4
  187. package/dist/styles/field.css +2 -2
  188. package/dist/styles/index.css +6 -0
  189. package/dist/styles/inline-citation.css +1 -1
  190. package/dist/styles/kbd.css +40 -0
  191. package/dist/styles/mcp-plugin-catalog.css +296 -0
  192. package/dist/styles/mcp-server-picker.css +0 -26
  193. package/dist/styles/media-preview-card.css +5 -3
  194. package/dist/styles/message-scroller.css +4 -4
  195. package/dist/styles/message.css +11 -6
  196. package/dist/styles/model-selector.css +5 -8
  197. package/dist/styles/popover.css +1 -1
  198. package/dist/styles/preview-card.css +1 -1
  199. package/dist/styles/prompt-input.css +44 -54
  200. package/dist/styles/queue.css +2 -2
  201. package/dist/styles/recipes.css +83 -9
  202. package/dist/styles/resizable-side-panel.css +1 -1
  203. package/dist/styles/responsive-sidebar-shell.css +19 -14
  204. package/dist/styles/scrollbars.css +32 -3
  205. package/dist/styles/search-field.css +9 -0
  206. package/dist/styles/sources.css +1 -1
  207. package/dist/styles/status-pill.css +39 -0
  208. package/dist/styles/stepper.css +2 -2
  209. package/dist/styles/streamdown.css +13 -12
  210. package/dist/styles/subagent-run.css +3 -3
  211. package/dist/styles/switch.css +1 -3
  212. package/dist/styles/tabs.css +1 -1
  213. package/dist/styles/task.css +1 -1
  214. package/dist/styles/terminal.css +2 -2
  215. package/dist/styles/test-results.css +1 -2
  216. package/dist/styles/textarea.css +1 -1
  217. package/dist/styles/theme-mode-control.css +1 -1
  218. package/dist/styles/think-execution-status.css +4 -23
  219. package/dist/styles/think-execution-workbench.css +2 -3
  220. package/dist/styles/think-full-app.css +24 -4
  221. package/dist/styles/think-routine-library.css +14 -16
  222. package/dist/styles/think-thread-picker.css +9 -26
  223. package/dist/styles/toast.css +2 -23
  224. package/dist/styles/toggle-group.css +76 -3
  225. package/dist/styles/tooltip.css +1 -2
  226. package/dist/styles/utilities.css +73 -0
  227. package/dist/styles/web-preview.css +5 -0
  228. package/dist/styles/workspace-explorer.css +4 -6
  229. package/dist/utils/favicon.d.ts +10 -0
  230. package/dist/utils/favicon.js +18 -0
  231. package/dist/utils/mcp-server-catalog.d.ts +2 -1078
  232. package/dist/utils/mcp-server-catalog.js +3 -11
  233. package/dist/utils/structured-code.d.ts +1 -1
  234. package/package.json +2 -2
@@ -1,4 +1,4 @@
1
- import { A as CodeBlockLanguage } from "./CodeBlock-Bbls1CnA.js";
1
+ import { A as CodeBlockLanguage } from "./CodeBlock-yMpGqScn.js";
2
2
  import { SkillParseResult } from "agent-skills-ts-sdk";
3
3
  import { FileInfo } from "@cloudflare/shell";
4
4
 
@@ -1,10 +1,10 @@
1
- import { Q as WarningIcon, b as EyeIcon, et as XIcon, k as MaximizeIcon, m as CodeIcon, u as CheckIcon, v as DownloadIcon } from "./icons-DyOM0EJs.js";
2
- import { t as NavigationLink } from "./navigation-link-Cob7KBlM.js";
3
1
  import { buttonVariants } from "./components/Button.js";
2
+ import { $ as WarningIcon, A as MaximizeIcon, d as CheckIcon, h as CodeIcon, tt as XIcon, x as EyeIcon, y as DownloadIcon } from "./icons-ua6f_GH3.js";
3
+ import { t as NavigationLink } from "./navigation-link-Cob7KBlM.js";
4
4
  import { c as useWorkspaceNavigationContext, s as useWorkspaceNavigationRestoration } from "./WorkspaceLink-BYYeTQLf.js";
5
5
  import { r as formatClock } from "./format-S6uWyoSb.js";
6
- import { f as MessageResponse, m as createWorkspaceRehypePlugins } from "./Message-DzuteocT.js";
7
- import { a as CodeBlockCopyButton, i as CodeBlockContent, r as CodeBlockContainer, t as CodeBlock } from "./CodeBlock-ygtuzqJd.js";
6
+ import { f as MessageResponse, m as createWorkspaceRehypePlugins } from "./Message-_-bEYLAO.js";
7
+ import { a as CodeBlockCopyButton, i as CodeBlockContent, r as CodeBlockContainer, t as CodeBlock } from "./CodeBlock-Cp67Njo3.js";
8
8
  import { AppTopBar } from "./components/AppTopBar.js";
9
9
  import { inferWorkspaceLanguage, inferWorkspaceMedia, isWorkspaceMarkdownPath, isWorkspaceSkillPath, parseWorkspaceSkill } from "./components/WorkspaceFile.js";
10
10
  import { WorkspaceHeader } from "./components/WorkspaceHeader.js";
@@ -0,0 +1,85 @@
1
+ import { r as ButtonProps } from "../Button-SBIz6Lqi.js";
2
+ import * as React from "react";
3
+
4
+ //#region src/components/ActionGuide.d.ts
5
+ type ActionGuideHeadingLevel = 2 | 3 | 4 | 5 | 6;
6
+ type ActionGuideListLayout = "compact" | "cards" | "list";
7
+ interface ActionGuideProps extends Omit<React.ComponentPropsWithoutRef<"article">, "title"> {
8
+ /** Short, task-oriented introduction to the guide. */
9
+ title: React.ReactNode;
10
+ /** Optional sentence that explains what the guide helps the user do. */
11
+ description?: React.ReactNode;
12
+ /** Semantic heading level for the guide title. */
13
+ headingLevel?: ActionGuideHeadingLevel;
14
+ }
15
+ /**
16
+ * Composable, app-agnostic guide for presenting groups of useful actions.
17
+ *
18
+ * Product code owns the copy, icons, availability, and click behavior. This
19
+ * component owns only the shared article rhythm and responsive layout.
20
+ */
21
+ declare function ActionGuide({
22
+ title,
23
+ description,
24
+ headingLevel,
25
+ children,
26
+ className,
27
+ "aria-label": ariaLabel,
28
+ "aria-labelledby": ariaLabelledBy,
29
+ ref,
30
+ ...props
31
+ }: ActionGuideProps & {
32
+ ref?: React.Ref<HTMLElement>;
33
+ }): React.JSX.Element;
34
+ interface ActionGuideSectionProps extends Omit<React.ComponentPropsWithoutRef<"section">, "title"> {
35
+ /** Label for this group of related actions. */
36
+ title: React.ReactNode;
37
+ /** Semantic heading level for the section title. */
38
+ headingLevel?: ActionGuideHeadingLevel;
39
+ }
40
+ /** A labelled group inside an {@link ActionGuide}. */
41
+ declare function ActionGuideSection({
42
+ title,
43
+ headingLevel,
44
+ children,
45
+ className,
46
+ "aria-label": ariaLabel,
47
+ "aria-labelledby": ariaLabelledBy,
48
+ ref,
49
+ ...props
50
+ }: ActionGuideSectionProps & {
51
+ ref?: React.Ref<HTMLElement>;
52
+ }): React.JSX.Element;
53
+ interface ActionGuideListProps extends React.ComponentPropsWithoutRef<"ul"> {
54
+ /** Responsive arrangement for the actions in this group. */
55
+ layout?: ActionGuideListLayout;
56
+ }
57
+ /** Semantic action list with compact, card, and plain-row layouts. */
58
+ declare function ActionGuideList({
59
+ layout,
60
+ className,
61
+ ref,
62
+ ...props
63
+ }: ActionGuideListProps & {
64
+ ref?: React.Ref<HTMLUListElement>;
65
+ }): React.JSX.Element;
66
+ interface ActionGuideActionProps extends Omit<ButtonProps, "color" | "iconOnly" | "nativeButton" | "render" | "size" | "variant"> {
67
+ /** Decorative leading glyph or app mark. */
68
+ icon?: React.ReactNode;
69
+ /** Raised actions are prominent; ghost actions form a quieter task list. */
70
+ variant?: "surface" | "ghost";
71
+ }
72
+ /** One native-button action inside an {@link ActionGuideList}. */
73
+ declare function ActionGuideAction({
74
+ icon,
75
+ variant,
76
+ children,
77
+ className,
78
+ type,
79
+ ref,
80
+ ...props
81
+ }: ActionGuideActionProps & {
82
+ ref?: React.Ref<HTMLButtonElement>;
83
+ }): React.JSX.Element;
84
+ //#endregion
85
+ export { ActionGuide, ActionGuideAction, ActionGuideActionProps, ActionGuideHeadingLevel, ActionGuideList, ActionGuideListLayout, ActionGuideListProps, ActionGuideProps, ActionGuideSection, ActionGuideSectionProps };
@@ -0,0 +1,94 @@
1
+ import { t as cx } from "../class-names-BiMDVpUo.js";
2
+ import { Button } from "./Button.js";
3
+ import * as React from "react";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ //#region src/components/ActionGuide.tsx
6
+ /**
7
+ * Composable, app-agnostic guide for presenting groups of useful actions.
8
+ *
9
+ * Product code owns the copy, icons, availability, and click behavior. This
10
+ * component owns only the shared article rhythm and responsive layout.
11
+ */
12
+ function ActionGuide({ title, description, headingLevel = 2, children, className, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, ref, ...props }) {
13
+ const titleId = React.useId();
14
+ const Title = `h${headingLevel}`;
15
+ return /* @__PURE__ */ jsxs("article", {
16
+ ref,
17
+ "data-slot": "action-guide",
18
+ "data-message-layout": "wide",
19
+ className: cx("action-guide", className),
20
+ "aria-label": ariaLabel,
21
+ "aria-labelledby": ariaLabel ? void 0 : ariaLabelledBy ?? titleId,
22
+ ...props,
23
+ children: [/* @__PURE__ */ jsxs("header", {
24
+ "data-slot": "action-guide-header",
25
+ className: "action-guide__header",
26
+ children: [/* @__PURE__ */ jsx(Title, {
27
+ id: titleId,
28
+ "data-slot": "action-guide-title",
29
+ className: "action-guide__title",
30
+ children: title
31
+ }), description ? /* @__PURE__ */ jsx("p", {
32
+ "data-slot": "action-guide-description",
33
+ className: "action-guide__description",
34
+ children: description
35
+ }) : null]
36
+ }), children]
37
+ });
38
+ }
39
+ /** A labelled group inside an {@link ActionGuide}. */
40
+ function ActionGuideSection({ title, headingLevel = 3, children, className, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, ref, ...props }) {
41
+ const titleId = React.useId();
42
+ const Title = `h${headingLevel}`;
43
+ return /* @__PURE__ */ jsxs("section", {
44
+ ref,
45
+ "data-slot": "action-guide-section",
46
+ className: cx("action-guide__section", className),
47
+ "aria-label": ariaLabel,
48
+ "aria-labelledby": ariaLabel ? void 0 : ariaLabelledBy ?? titleId,
49
+ ...props,
50
+ children: [/* @__PURE__ */ jsx(Title, {
51
+ id: titleId,
52
+ "data-slot": "action-guide-section-title",
53
+ className: "action-guide__section-title",
54
+ children: title
55
+ }), children]
56
+ });
57
+ }
58
+ /** Semantic action list with compact, card, and plain-row layouts. */
59
+ function ActionGuideList({ layout = "compact", className, ref, ...props }) {
60
+ return /* @__PURE__ */ jsx("ul", {
61
+ ref,
62
+ "data-slot": "action-guide-list",
63
+ "data-layout": layout,
64
+ className: cx("action-guide__list", className),
65
+ ...props
66
+ });
67
+ }
68
+ /** One native-button action inside an {@link ActionGuideList}. */
69
+ function ActionGuideAction({ icon, variant = "surface", children, className, type = "button", ref, ...props }) {
70
+ return /* @__PURE__ */ jsx("li", {
71
+ "data-slot": "action-guide-item",
72
+ className: "action-guide__item",
73
+ children: /* @__PURE__ */ jsxs(Button, {
74
+ ref,
75
+ ...props,
76
+ type,
77
+ variant,
78
+ color: "neutral",
79
+ className: cx("action-guide__action", className),
80
+ children: [icon ? /* @__PURE__ */ jsx("span", {
81
+ "data-slot": "action-guide-action-icon",
82
+ className: "action-guide__action-icon",
83
+ "aria-hidden": true,
84
+ children: icon
85
+ }) : null, /* @__PURE__ */ jsx("span", {
86
+ "data-slot": "action-guide-action-label",
87
+ className: "action-guide__action-label",
88
+ children
89
+ })]
90
+ })
91
+ });
92
+ }
93
+ //#endregion
94
+ export { ActionGuide, ActionGuideAction, ActionGuideList, ActionGuideSection };
@@ -3,22 +3,22 @@ import * as React from "react";
3
3
 
4
4
  //#region src/components/Activity.d.ts
5
5
  interface ActivityProps extends Omit<React.ComponentProps<typeof Collapsible.Root>, "unstyled"> {
6
- /** While true, the trigger label shimmers. */
6
+ /** While true, the trigger action shimmers. */
7
7
  isStreaming?: boolean;
8
8
  }
9
9
  /**
10
10
  * A collapsible activity line that aggregates agent activity (tool calls,
11
11
  * file edits, searches) instead of rendering every call as its own block.
12
12
  * Borderless, Claude/Codex style: the collapsed state is a single plain text
13
- * line whose label shimmers while streaming — pass the latest action as the
14
- * label while streaming, and a short summary once settled. Expanding reveals
13
+ * line whose action shimmers while streaming — pass the latest action while
14
+ * streaming, and a short summary once settled. Expanding reveals
15
15
  * the full log. Compose with ActivityTrigger, ActivityContent, and
16
16
  * ActivityItem.
17
17
  *
18
18
  * @example
19
19
  * ```tsx
20
20
  * <Activity isStreaming={running}>
21
- * <ActivityTrigger label={running ? "Searching code" : "Read 2 files and searched code"} />
21
+ * <ActivityTrigger action={running ? "Searching code" : "Read 2 files and searched code"} />
22
22
  * <ActivityContent>
23
23
  * <ActivityItem>Searched code</ActivityItem>
24
24
  * <ActivityItem>Edited a file</ActivityItem>
@@ -35,20 +35,29 @@ declare function Activity({
35
35
  }: ActivityProps & {
36
36
  ref?: React.Ref<HTMLDivElement>;
37
37
  }): React.JSX.Element;
38
- interface ActivityTriggerProps extends Omit<React.ComponentProps<typeof Collapsible.Trigger>, "unstyled"> {
39
- /** Header text. Defaults to "Working…". */
40
- label?: React.ReactNode;
38
+ interface ActivityTriggerProps extends Omit<React.ComponentProps<typeof Collapsible.Trigger>, "unstyled" | "children"> {
39
+ /** The action being taken. Defaults to "Working…". */
40
+ action?: React.ReactNode;
41
+ /** What the action is being applied to, rendered quieter. See ActivityHeader. */
42
+ detail?: React.ReactNode;
41
43
  /** Optional leading icon for the header. */
42
44
  icon?: React.ReactNode;
43
45
  }
44
46
  interface ActivityHeaderProps extends Omit<React.HTMLAttributes<HTMLSpanElement>, "children"> {
45
- /** Current one-line activity label. */
46
- label?: React.ReactNode;
47
+ /** The action being taken, e.g. "Reading" or "Ran". */
48
+ action?: React.ReactNode;
49
+ /**
50
+ * What the action applies to: a path, a command, a query. Rendered in the
51
+ * muted role beside the action, which is what lets a reader find the verb at
52
+ * a glance in a column of activity lines. It also truncates first, so a long
53
+ * command loses its tail rather than pushing the action out of view.
54
+ */
55
+ detail?: React.ReactNode;
47
56
  /** Optional leading activity icon. */
48
57
  icon?: React.ReactNode;
49
58
  /** Optional trailing affordance supplied by the interactive owner. */
50
59
  trailing?: React.ReactNode;
51
- /** While true, the label uses the shared streaming treatment. */
60
+ /** While true, the action uses the shared streaming treatment. */
52
61
  isStreaming?: boolean;
53
62
  }
54
63
  /**
@@ -58,9 +67,10 @@ interface ActivityHeaderProps extends Omit<React.HTMLAttributes<HTMLSpanElement>
58
67
  */
59
68
  declare function ActivityHeader({
60
69
  className,
70
+ detail,
61
71
  icon,
62
72
  isStreaming,
63
- label,
73
+ action,
64
74
  trailing,
65
75
  ref,
66
76
  ...props
@@ -68,14 +78,14 @@ declare function ActivityHeader({
68
78
  ref?: React.Ref<HTMLSpanElement>;
69
79
  }): React.JSX.Element;
70
80
  /**
71
- * Clickable header line that toggles the activity log. The label shimmers
81
+ * Clickable header line that toggles the activity log. The action shimmers
72
82
  * while the parent Activity is streaming.
73
83
  */
74
84
  declare function ActivityTrigger({
75
85
  className,
76
- label,
86
+ action,
87
+ detail,
77
88
  icon,
78
- children,
79
89
  ref,
80
90
  ...props
81
91
  }: ActivityTriggerProps & {
@@ -92,8 +102,10 @@ declare function ActivityContent({
92
102
  ref?: React.Ref<HTMLDivElement>;
93
103
  }): React.JSX.Element;
94
104
  interface ActivityItemGroupProps extends Omit<React.ComponentProps<typeof Collapsible.Root>, "unstyled"> {
95
- /** The row text, e.g. "Ran bash · vp test". */
96
- label: React.ReactNode;
105
+ /** The action the row reports, e.g. "Ran" or "Edited". */
106
+ action: React.ReactNode;
107
+ /** What the action applied to — a path, a command. Rendered muted. */
108
+ detail?: React.ReactNode;
97
109
  /** Optional leading icon for the row. */
98
110
  icon?: React.ReactNode;
99
111
  }
@@ -104,7 +116,8 @@ interface ActivityItemGroupProps extends Omit<React.ComponentProps<typeof Collap
104
116
  */
105
117
  declare function ActivityItemGroup({
106
118
  className,
107
- label,
119
+ action,
120
+ detail,
108
121
  icon,
109
122
  children,
110
123
  ref,
@@ -125,6 +138,8 @@ declare function ActivityText({
125
138
  interface ActivityItemProps extends React.HTMLAttributes<HTMLDivElement> {
126
139
  /** Optional leading icon for the row. */
127
140
  icon?: React.ReactNode;
141
+ /** What the row's action applied to — a path, a command. Rendered muted. */
142
+ detail?: React.ReactNode;
128
143
  }
129
144
  /**
130
145
  * A single activity row — "Searched code", "Edited a file", etc. Free-form
@@ -133,6 +148,7 @@ interface ActivityItemProps extends React.HTMLAttributes<HTMLDivElement> {
133
148
  declare function ActivityItem({
134
149
  className,
135
150
  icon,
151
+ detail,
136
152
  children,
137
153
  ref,
138
154
  ...props
@@ -1,6 +1,6 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
2
  import { Collapsible } from "./Collapsible.js";
3
- import { p as ChevronRightIcon } from "../icons-DyOM0EJs.js";
3
+ import { m as ChevronRightIcon } from "../icons-ua6f_GH3.js";
4
4
  import "react";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
6
  //#region src/components/Activity.tsx
@@ -8,15 +8,15 @@ import { jsx, jsxs } from "react/jsx-runtime";
8
8
  * A collapsible activity line that aggregates agent activity (tool calls,
9
9
  * file edits, searches) instead of rendering every call as its own block.
10
10
  * Borderless, Claude/Codex style: the collapsed state is a single plain text
11
- * line whose label shimmers while streaming — pass the latest action as the
12
- * label while streaming, and a short summary once settled. Expanding reveals
11
+ * line whose action shimmers while streaming — pass the latest action while
12
+ * streaming, and a short summary once settled. Expanding reveals
13
13
  * the full log. Compose with ActivityTrigger, ActivityContent, and
14
14
  * ActivityItem.
15
15
  *
16
16
  * @example
17
17
  * ```tsx
18
18
  * <Activity isStreaming={running}>
19
- * <ActivityTrigger label={running ? "Searching code" : "Read 2 files and searched code"} />
19
+ * <ActivityTrigger action={running ? "Searching code" : "Read 2 files and searched code"} />
20
20
  * <ActivityContent>
21
21
  * <ActivityItem>Searched code</ActivityItem>
22
22
  * <ActivityItem>Edited a file</ActivityItem>
@@ -39,7 +39,7 @@ function Activity({ className, isStreaming = false, defaultOpen = false, ref, ..
39
39
  * disclosure behavior so a transcript, app shell, or injected preview can
40
40
  * provide the correct interaction semantics around the same visual.
41
41
  */
42
- function ActivityHeader({ className, icon, isStreaming = false, label = "Working…", trailing, ref, ...props }) {
42
+ function ActivityHeader({ className, detail, icon, isStreaming = false, action = "Working…", trailing, ref, ...props }) {
43
43
  return /* @__PURE__ */ jsxs("span", {
44
44
  ref,
45
45
  className: cx("activity__header", className),
@@ -52,25 +52,23 @@ function ActivityHeader({ className, icon, isStreaming = false, label = "Working
52
52
  children: icon
53
53
  }) : null,
54
54
  /* @__PURE__ */ jsx("span", {
55
- className: "activity__header-label sigvelo-truncate",
56
- children: label
55
+ className: "activity__header-action",
56
+ children: action
57
57
  }),
58
+ detail ? " " : null,
59
+ detail ? /* @__PURE__ */ jsx("span", {
60
+ className: "activity__header-detail",
61
+ children: detail
62
+ }) : null,
58
63
  trailing
59
64
  ]
60
65
  });
61
66
  }
62
67
  /**
63
- * Clickable header line that toggles the activity log. The label shimmers
68
+ * Clickable header line that toggles the activity log. The action shimmers
64
69
  * while the parent Activity is streaming.
65
70
  */
66
- function ActivityTrigger({ className, label = "Working…", icon, children, ref, ...props }) {
67
- if (children !== void 0 && children !== null) return /* @__PURE__ */ jsx(Collapsible.Trigger, {
68
- ref,
69
- className: cx("activity__trigger", className),
70
- ...props,
71
- unstyled: true,
72
- children
73
- });
71
+ function ActivityTrigger({ className, action = "Working…", detail, icon, ref, ...props }) {
74
72
  return /* @__PURE__ */ jsx(Collapsible.Trigger, {
75
73
  ref,
76
74
  className: cx("activity__trigger", className),
@@ -78,7 +76,8 @@ function ActivityTrigger({ className, label = "Working…", icon, children, ref,
78
76
  unstyled: true,
79
77
  children: /* @__PURE__ */ jsx(ActivityHeader, {
80
78
  icon,
81
- label,
79
+ action,
80
+ detail,
82
81
  trailing: /* @__PURE__ */ jsx("span", {
83
82
  className: "activity__trigger-icon",
84
83
  "aria-hidden": "true",
@@ -105,7 +104,7 @@ function ActivityContent({ className, children, ref, ...props }) {
105
104
  * like a plain ActivityItem; expanding reveals chrome-free detail (a Terminal,
106
105
  * a thought trace) flush inside the outer Activity log.
107
106
  */
108
- function ActivityItemGroup({ className, label, icon, children, ref, ...props }) {
107
+ function ActivityItemGroup({ className, action, detail, icon, children, ref, ...props }) {
109
108
  return /* @__PURE__ */ jsxs(Collapsible.Root, {
110
109
  ref,
111
110
  className: cx("activity__group", className),
@@ -122,8 +121,13 @@ function ActivityItemGroup({ className, label, icon, children, ref, ...props })
122
121
  }) : null,
123
122
  /* @__PURE__ */ jsx("span", {
124
123
  className: "activity__item-text",
125
- children: label
124
+ children: action
126
125
  }),
126
+ detail ? " " : null,
127
+ detail ? /* @__PURE__ */ jsx("span", {
128
+ className: "activity__item-detail",
129
+ children: detail
130
+ }) : null,
127
131
  /* @__PURE__ */ jsx("span", {
128
132
  className: "activity__group-icon",
129
133
  "aria-hidden": "true",
@@ -154,19 +158,27 @@ function ActivityText({ className, children, ref, ...props }) {
154
158
  * A single activity row — "Searched code", "Edited a file", etc. Free-form
155
159
  * content; keep it to one line so the streaming peek reads well.
156
160
  */
157
- function ActivityItem({ className, icon, children, ref, ...props }) {
161
+ function ActivityItem({ className, icon, detail, children, ref, ...props }) {
158
162
  return /* @__PURE__ */ jsxs("div", {
159
163
  ref,
160
164
  className: cx("activity__item", className),
161
165
  ...props,
162
- children: [icon ? /* @__PURE__ */ jsx("span", {
163
- className: "activity__item-icon",
164
- "aria-hidden": "true",
165
- children: icon
166
- }) : null, /* @__PURE__ */ jsx("span", {
167
- className: "activity__item-text",
168
- children
169
- })]
166
+ children: [
167
+ icon ? /* @__PURE__ */ jsx("span", {
168
+ className: "activity__item-icon",
169
+ "aria-hidden": "true",
170
+ children: icon
171
+ }) : null,
172
+ /* @__PURE__ */ jsx("span", {
173
+ className: "activity__item-text",
174
+ children
175
+ }),
176
+ detail ? " " : null,
177
+ detail ? /* @__PURE__ */ jsx("span", {
178
+ className: "activity__item-detail",
179
+ children: detail
180
+ }) : null
181
+ ]
170
182
  });
171
183
  }
172
184
  /** Scrollable monospaced output inside an ActivityPanel. */
@@ -1,2 +1,2 @@
1
- import { a as AgentActivityIconProps, i as AgentActivityIconKind, n as AgentActivityFaviconProps, o as AgentActivityMode, r as AgentActivityIcon, s as AgentActivitySummary, t as AgentActivityFavicon } from "../AgentActivity-D2SHSGFX.js";
1
+ import { a as AgentActivityIconProps, i as AgentActivityIconKind, n as AgentActivityFaviconProps, o as AgentActivityMode, r as AgentActivityIcon, s as AgentActivitySummary, t as AgentActivityFavicon } from "../AgentActivity-D3OvrC02.js";
2
2
  export { AgentActivityFavicon, AgentActivityFaviconProps, AgentActivityIcon, AgentActivityIconKind, AgentActivityIconProps, AgentActivityMode, AgentActivitySummary };
@@ -1,4 +1,5 @@
1
- import { $ as WrenchIcon, D as InfoIcon, O as LinkIcon, P as MonitorIcon, Q as WarningIcon, S as FileIcon, W as SearchIcon, X as TerminalIcon, z as PencilIcon } from "../icons-DyOM0EJs.js";
1
+ import { $ as WarningIcon, B as PencilIcon, C as FileIcon, F as MonitorIcon, G as SearchIcon, O as InfoIcon, Z as TerminalIcon, et as WrenchIcon, k as LinkIcon } from "../icons-ua6f_GH3.js";
2
+ import { inferFaviconUrl } from "../utils/favicon.js";
2
3
  import * as React from "react";
3
4
  import { jsx } from "react/jsx-runtime";
4
5
  //#region src/components/AgentActivity.tsx
@@ -18,7 +19,7 @@ function AgentActivityIcon({ kind }) {
18
19
  }
19
20
  /** Site favicon for URL-backed activity, with the shared icon vocabulary as fallback. */
20
21
  function AgentActivityFavicon({ fallbackKind = "web", url }) {
21
- const src = faviconHref(url);
22
+ const src = inferFaviconUrl(url);
22
23
  const [failedSrc, setFailedSrc] = React.useState(null);
23
24
  if (!src || failedSrc === src) return /* @__PURE__ */ jsx(AgentActivityIcon, { kind: fallbackKind });
24
25
  return /* @__PURE__ */ jsx("img", {
@@ -31,14 +32,5 @@ function AgentActivityFavicon({ fallbackKind = "web", url }) {
31
32
  onError: () => setFailedSrc(src)
32
33
  });
33
34
  }
34
- function faviconHref(url) {
35
- try {
36
- const parsed = new URL(url);
37
- if (parsed.protocol !== "http:" && parsed.protocol !== "https:") return null;
38
- return new URL("/favicon.ico", parsed.origin).href;
39
- } catch {
40
- return null;
41
- }
42
- }
43
35
  //#endregion
44
36
  export { AgentActivityFavicon, AgentActivityIcon };
@@ -1,5 +1,5 @@
1
1
  import { n as WorkspaceDestination } from "../WorkspaceLink-O-EBKUJ8.js";
2
- import { s as AgentActivitySummary } from "../AgentActivity-D2SHSGFX.js";
2
+ import { s as AgentActivitySummary } from "../AgentActivity-D3OvrC02.js";
3
3
  import * as React from "react";
4
4
 
5
5
  //#region src/components/AgentActivityPreview.d.ts
@@ -1,8 +1,10 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
- import { A as McpIcon, K as SpinnerIcon, Q as WarningIcon, S as FileIcon, et as XIcon } from "../icons-DyOM0EJs.js";
2
+ import { $ as WarningIcon, C as FileIcon, j as McpIcon, q as SpinnerIcon, tt as XIcon } from "../icons-ua6f_GH3.js";
3
3
  import { ActivityHeader } from "./Activity.js";
4
4
  import { AgentActivityFavicon, AgentActivityIcon } from "./AgentActivity.js";
5
5
  import { t as NavigationLink } from "../navigation-link-Cob7KBlM.js";
6
+ import { AppIcon } from "./AppIcon.js";
7
+ import { IconButton } from "./IconButton.js";
6
8
  import "react";
7
9
  import { jsx, jsxs } from "react/jsx-runtime";
8
10
  //#region src/components/AgentActivityPreview.tsx
@@ -21,10 +23,12 @@ function AgentActivityPreview({ "aria-label": ariaLabel = "Agent activity", bran
21
23
  "aria-hidden": "true",
22
24
  children: brandIcon
23
25
  }),
24
- onDismiss ? /* @__PURE__ */ jsx("button", {
25
- type: "button",
26
+ onDismiss ? /* @__PURE__ */ jsx(IconButton, {
26
27
  className: "agent-activity-preview__dismiss",
27
- "aria-label": "Hide agent activity",
28
+ color: "neutral",
29
+ label: "Hide agent activity",
30
+ size: "sm",
31
+ variant: "ghost",
28
32
  onClick: onDismiss,
29
33
  children: /* @__PURE__ */ jsx(XIcon, {})
30
34
  }) : null,
@@ -36,7 +40,7 @@ function AgentActivityPreview({ "aria-label": ariaLabel = "Agent activity", bran
36
40
  children: [/* @__PURE__ */ jsx(NavigationLink, {
37
41
  render: renderAgentLink(item),
38
42
  className: "agent-activity-preview__row",
39
- "aria-label": `${item.label}. ${statusLabel(item.status)}. Open agent.`,
43
+ "aria-label": `${item.action}. ${statusLabel(item.status)}. Open agent.`,
40
44
  "data-status": item.status,
41
45
  children: /* @__PURE__ */ jsx(ActivityHeader, {
42
46
  icon: item.url ? /* @__PURE__ */ jsx(AgentActivityFavicon, {
@@ -44,21 +48,18 @@ function AgentActivityPreview({ "aria-label": ariaLabel = "Agent activity", bran
44
48
  fallbackKind: item.iconKind
45
49
  }) : /* @__PURE__ */ jsx(AgentActivityIcon, { kind: item.iconKind }),
46
50
  isStreaming: item.status === "running",
47
- label: item.label,
51
+ action: item.action,
48
52
  trailing: /* @__PURE__ */ jsxs("span", {
49
53
  className: "agent-activity-preview__trailing",
50
54
  "aria-hidden": "true",
51
- children: [item.favicons?.length ? /* @__PURE__ */ jsx("span", {
52
- className: "agent-activity-preview__favicons",
53
- children: item.favicons.map((favicon) => /* @__PURE__ */ jsx("img", {
55
+ children: [item.favicons?.length ? /* @__PURE__ */ jsx(AppIcon.Stack, { children: item.favicons.map((favicon) => /* @__PURE__ */ jsxs(AppIcon.Root, {
56
+ size: "sm",
57
+ title: favicon.label,
58
+ children: [/* @__PURE__ */ jsx(AppIcon.Image, {
54
59
  src: favicon.src,
55
- alt: "",
56
- title: favicon.label,
57
- loading: "lazy",
58
- decoding: "async",
59
- referrerPolicy: "no-referrer"
60
- }, `${favicon.src}:${favicon.label}`))
61
- }) : null, /* @__PURE__ */ jsx(StatusIcon, { status: item.status })]
60
+ alt: ""
61
+ }), /* @__PURE__ */ jsx(AppIcon.Fallback, { children: favicon.label.slice(0, 1) })]
62
+ }, `${favicon.src}:${favicon.label}`)) }) : null, /* @__PURE__ */ jsx(StatusIcon, { status: item.status })]
62
63
  })
63
64
  })
64
65
  }), item.workspaceDestination && renderWorkspaceFileLink ? /* @__PURE__ */ jsx(NavigationLink, {
@@ -1,4 +1,4 @@
1
- import { r as ButtonProps } from "../Button-yRInko9u.js";
1
+ import { r as ButtonProps } from "../Button-SBIz6Lqi.js";
2
2
  import * as React from "react";
3
3
 
4
4
  //#region src/components/AgentAttention.d.ts
@@ -1,2 +1,2 @@
1
- import { a as PermissionModeControl, i as AgentChatRenderMessageContext, n as AgentChatComposerDraft, r as AgentChatProps, t as AgentChat } from "../AgentChat-C-ZyXbJz.js";
1
+ import { a as PermissionModeControl, i as AgentChatRenderMessageContext, n as AgentChatComposerDraft, r as AgentChatProps, t as AgentChat } from "../AgentChat-Bm1qYbOo.js";
2
2
  export { AgentChat, AgentChatComposerDraft, AgentChatProps, AgentChatRenderMessageContext, PermissionModeControl };