@mcp-b/react-components 0.34.1 → 0.36.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 (161) hide show
  1. package/dist/{AgentChat-CV-GuYA6.d.ts → AgentChat-CVO7xyLC.d.ts} +22 -3
  2. package/dist/{CodeBlock-CM5gfmdq.js → CodeBlock-Bk4nn7l-.js} +4 -3
  3. package/dist/{CodeBlock-DzGhYyNe.d.ts → CodeBlock-C380GD5t.d.ts} +2 -5
  4. package/dist/{Dialog-DeOSJ0Oy.d.ts → Dialog-B_FhRWaz.d.ts} +22 -37
  5. package/dist/{Menu-DVmjBIuM.d.ts → Menu-yb6QXWA3.d.ts} +64 -75
  6. package/dist/{PromptInput-DOyee1kM.d.ts → PromptInput-BRX7FhjH.d.ts} +7 -272
  7. package/dist/ResponsiveSidebarShell-DWjULskY.d.ts +68 -0
  8. package/dist/{Select-D96d09ww.d.ts → Select-RrceeEIe.d.ts} +17 -52
  9. package/dist/{ThinkChat-en0UbkVv.js → ThinkChat-ByR-QT_D.js} +19 -12
  10. package/dist/{ThinkChatActivity-CgqpROz_.d.ts → ThinkChatActivity-Dkmm2pIj.d.ts} +1 -1
  11. package/dist/{ToggleGroup-CSBWfPXo.d.ts → ToggleGroup-BrQZOQn_.d.ts} +4 -6
  12. package/dist/{WorkspaceFile-C8Riev9j.d.ts → WorkspaceFile-BLaFmMrt.d.ts} +18 -2
  13. package/dist/{WorkspaceFileView-BtzVKAed.js → WorkspaceFileView-DTHJLKW_.js} +11 -17
  14. package/dist/components/agents-sdk/AgentChat.d.ts +2 -2
  15. package/dist/components/agents-sdk/AgentChat.js +47 -26
  16. package/dist/components/agents-sdk/BrowserLiveView.d.ts +47 -1
  17. package/dist/components/agents-sdk/BrowserReplay.d.ts +40 -1
  18. package/dist/components/agents-sdk/BrowserReplay.js +1 -1
  19. package/dist/components/agents-sdk/McpConnectionRequest.js +14 -15
  20. package/dist/components/agents-sdk/McpConnectorForm.js +1 -1
  21. package/dist/components/agents-sdk/McpPluginCatalog.d.ts +1 -1
  22. package/dist/components/agents-sdk/McpPluginCatalog.js +17 -24
  23. package/dist/components/agents-sdk/McpServerPicker.d.ts +2 -2
  24. package/dist/components/agents-sdk/McpServerPicker.js +19 -17
  25. package/dist/components/agents-sdk/ModelSelector.d.ts +9 -9
  26. package/dist/components/agents-sdk/ModelSelector.js +504 -1
  27. package/dist/components/agents-sdk/PromptInputCommands.d.ts +1 -1
  28. package/dist/components/agents-sdk/SubagentRunDetails.js +1 -1
  29. package/dist/components/agents-sdk/ThinkChat.d.ts +18 -95
  30. package/dist/components/agents-sdk/ThinkChat.js +2 -12
  31. package/dist/components/agents-sdk/ThinkChatActivity.d.ts +2 -4
  32. package/dist/components/agents-sdk/ThinkChatActivity.js +1 -1
  33. package/dist/components/agents-sdk/ThinkChatActivitySummary.js +1 -1
  34. package/dist/components/agents-sdk/ThinkChatToolPanels.js +3 -8
  35. package/dist/components/agents-sdk/ThinkExecutionDetail.js +5 -3
  36. package/dist/components/agents-sdk/ThinkExecutionRun.js +1 -1
  37. package/dist/components/agents-sdk/ThinkExecutionWorkbench.js +2 -2
  38. package/dist/components/agents-sdk/ThinkFullApp.d.ts +4 -4
  39. package/dist/components/agents-sdk/ThinkFullApp.js +12 -14
  40. package/dist/components/agents-sdk/ThinkFullAppViewSwitch.d.ts +1 -1
  41. package/dist/components/agents-sdk/ThinkPendingApproval.js +3 -3
  42. package/dist/components/agents-sdk/ThinkRoutineBrowser.js +5 -4
  43. package/dist/components/agents-sdk/ThinkRoutineForm.js +1 -1
  44. package/dist/components/agents-sdk/ThinkRoutineLibrary.d.ts +2 -3
  45. package/dist/components/agents-sdk/ThinkRoutineLibrary.js +11 -15
  46. package/dist/components/agents-sdk/ThinkThreadPicker.js +3 -4
  47. package/dist/components/agents-sdk/ThinkThreadShell.d.ts +1 -1
  48. package/dist/components/agents-sdk/Workspace.d.ts +140 -2
  49. package/dist/components/agents-sdk/Workspace.js +1 -1
  50. package/dist/components/agents-sdk/WorkspaceBrowser.d.ts +1 -1
  51. package/dist/components/agents-sdk/WorkspaceExplorer.d.ts +32 -5
  52. package/dist/components/agents-sdk/WorkspaceExplorer.js +3 -5
  53. package/dist/components/agents-sdk/WorkspaceFile.d.ts +2 -2
  54. package/dist/components/agents-sdk/WorkspaceFile.js +41 -4
  55. package/dist/components/agents-sdk/WorkspaceFileView.d.ts +1 -1
  56. package/dist/components/agents-sdk/WorkspaceFileView.js +1 -1
  57. package/dist/components/ai-sdk/Activity.d.ts +5 -0
  58. package/dist/components/ai-sdk/Activity.js +33 -13
  59. package/dist/components/ai-sdk/Approval.d.ts +1 -2
  60. package/dist/components/ai-sdk/Approval.js +4 -7
  61. package/dist/components/ai-sdk/CodeBlock.d.ts +1 -1
  62. package/dist/components/ai-sdk/CodeBlock.js +1 -1
  63. package/dist/components/ai-sdk/Context.js +1 -1
  64. package/dist/components/ai-sdk/Goal.js +1 -1
  65. package/dist/components/ai-sdk/Message.js +2 -6
  66. package/dist/components/ai-sdk/MessageScroller.d.ts +5 -0
  67. package/dist/components/ai-sdk/MessageScroller.js +18 -12
  68. package/dist/components/ai-sdk/MessageScrollerVirtual.js +18 -10
  69. package/dist/components/ai-sdk/Plan.js +1 -1
  70. package/dist/components/ai-sdk/PromptInput.d.ts +2 -2
  71. package/dist/components/ai-sdk/PromptInput.js +124 -127
  72. package/dist/components/ai-sdk/Queue.js +1 -1
  73. package/dist/components/ai-sdk/Reasoning.d.ts +3 -4
  74. package/dist/components/ai-sdk/Reasoning.js +29 -13
  75. package/dist/components/ai-sdk/ToolInvocation.d.ts +3 -5
  76. package/dist/components/ai-sdk/ToolInvocation.js +2 -2
  77. package/dist/components/extension/ChatGptSignInScreen.js +2 -2
  78. package/dist/components/extension/CodexModelSelector.d.ts +1 -1
  79. package/dist/components/extension/CodexModelSelector.js +1 -1
  80. package/dist/components/extension/ConversationTabPicker.js +1 -1
  81. package/dist/components/foundations/Accordion.d.ts +1 -3
  82. package/dist/components/foundations/Accordion.js +1 -3
  83. package/dist/components/foundations/AlertDialog.d.ts +16 -36
  84. package/dist/components/foundations/Autocomplete.d.ts +12 -33
  85. package/dist/components/foundations/Autocomplete.js +2 -1
  86. package/dist/components/foundations/Combobox.d.ts +119 -2
  87. package/dist/components/foundations/Combobox.js +6 -23
  88. package/dist/components/foundations/ContextMenu.d.ts +50 -57
  89. package/dist/components/foundations/ContextMenu.js +4 -28
  90. package/dist/components/foundations/DescriptionList.d.ts +34 -2
  91. package/dist/components/foundations/DescriptionList.js +33 -2
  92. package/dist/components/foundations/Dialog.d.ts +1 -1
  93. package/dist/components/foundations/Dialog.js +2 -1
  94. package/dist/components/foundations/EmptyState.d.ts +5 -2
  95. package/dist/components/foundations/EmptyState.js +11 -7
  96. package/dist/components/foundations/Menu.d.ts +1 -1
  97. package/dist/components/foundations/Menu.js +3 -21
  98. package/dist/components/foundations/Menubar.d.ts +35 -64
  99. package/dist/components/foundations/Menubar.js +3 -22
  100. package/dist/components/foundations/Popover.d.ts +8 -21
  101. package/dist/components/foundations/Popover.js +3 -48
  102. package/dist/components/foundations/PreviewCard.d.ts +44 -29
  103. package/dist/components/foundations/PreviewCard.js +3 -6
  104. package/dist/components/foundations/RadioGroup.d.ts +4 -6
  105. package/dist/components/foundations/Select.d.ts +1 -1
  106. package/dist/components/foundations/Select.js +7 -21
  107. package/dist/components/foundations/Slider.d.ts +31 -44
  108. package/dist/components/foundations/Slider.js +26 -25
  109. package/dist/components/foundations/Stepper.d.ts +3 -3
  110. package/dist/components/foundations/Stepper.js +5 -6
  111. package/dist/components/foundations/ToggleGroup.d.ts +1 -1
  112. package/dist/components/foundations/Tooltip.d.ts +6 -8
  113. package/dist/components/foundations/Tooltip.js +4 -3
  114. package/dist/components/general-purpose/Commit.js +1 -1
  115. package/dist/components/general-purpose/EnvironmentVariables.js +1 -1
  116. package/dist/components/general-purpose/PricingBillingToggle.d.ts +2 -3
  117. package/dist/components/general-purpose/PricingBillingToggle.js +4 -22
  118. package/dist/components/general-purpose/PricingPage.d.ts +3 -4
  119. package/dist/components/general-purpose/ResizableSidePanel.js +1 -1
  120. package/dist/components/general-purpose/ResponsiveSidebarShell.d.ts +1 -67
  121. package/dist/components/general-purpose/ResponsiveSidebarShell.js +1 -1
  122. package/dist/components/general-purpose/SettingsFormDialog.d.ts +7 -2
  123. package/dist/components/general-purpose/SettingsFormDialog.js +18 -3
  124. package/dist/components/general-purpose/Terminal.js +3 -3
  125. package/dist/components/general-purpose/ThemeModeControl.js +1 -1
  126. package/dist/components/general-purpose/WebPreview.js +4 -4
  127. package/dist/components/nanites/AgentConnection.js +16 -11
  128. package/dist/components/nanites/AgentToolDetail.js +6 -7
  129. package/dist/{format-CmopcfqJ.js → format-DB2mX9DA.js} +16 -1
  130. package/dist/{mcp-server-U71zhxFF.js → mcp-server-SD_S-IpB.js} +18 -2
  131. package/dist/message-scroller-C8cplcQO.js +32 -0
  132. package/dist/{progress-ring-Dz_ztrW2.js → progress-ring-BEocM1e3.js} +1 -1
  133. package/dist/provider-logos-zjZycgV6.js +74 -0
  134. package/dist/styles/agent-chat.css +25 -0
  135. package/dist/styles/agent-connection.css +4 -31
  136. package/dist/styles/agent-tool-detail.css +0 -7
  137. package/dist/styles/alert-dialog.css +0 -2
  138. package/dist/styles/base-ui-motion.css +7 -5
  139. package/dist/styles/chatgpt-sign-in-screen.css +5 -3
  140. package/dist/styles/dialog.css +0 -2
  141. package/dist/styles/field.css +2 -2
  142. package/dist/styles/model-selector.css +30 -12
  143. package/dist/styles/popover.css +0 -1
  144. package/dist/styles/preview-card.css +0 -4
  145. package/dist/styles/pricing-page.css +1 -13
  146. package/dist/styles/prompt-input.css +12 -10
  147. package/dist/styles/recipes.css +22 -14
  148. package/dist/styles/slider.css +2 -2
  149. package/dist/styles/think-execution-workbench.css +9 -13
  150. package/dist/styles/think-routine-library.css +2 -30
  151. package/dist/styles/tooltip.css +0 -1
  152. package/dist/utils/structured-code.d.ts +1 -1
  153. package/package.json +17 -7
  154. package/dist/BrowserLiveView-tJTWkoyu.d.ts +0 -48
  155. package/dist/BrowserReplay-B0BQZr-N.d.ts +0 -41
  156. package/dist/Combobox-WrrDDaEv.d.ts +0 -154
  157. package/dist/ModelSelector-DzdEs2fX.js +0 -504
  158. package/dist/Workspace-EhvvlHOB.d.ts +0 -278
  159. package/dist/WorkspaceExplorer-DygQnEyi.d.ts +0 -32
  160. package/dist/components/foundations/DescriptionListParts.d.ts +0 -37
  161. package/dist/components/foundations/DescriptionListParts.js +0 -35
@@ -37,5 +37,20 @@ function formatClock(totalSeconds) {
37
37
  function formatErrorMessage(error) {
38
38
  return error instanceof Error ? error.message : String(error);
39
39
  }
40
+ /**
41
+ * Renders an unknown upstream value as display text. Tool arguments, results,
42
+ * and audit records arrive in shapes this package never declared, so a bigint,
43
+ * a cycle, or a value `JSON.stringify` has no answer for is an ordinary input
44
+ * here rather than a thrown render. `space` is `JSON.stringify`'s, so a block
45
+ * panel passes `2` and an inline row passes nothing.
46
+ */
47
+ function formatUnknownValue(value, space) {
48
+ if (typeof value === "string") return value;
49
+ try {
50
+ return JSON.stringify(value, (_key, item) => typeof item === "bigint" ? `${item}n` : item, space) ?? String(value);
51
+ } catch {
52
+ return String(value);
53
+ }
54
+ }
40
55
  //#endregion
41
- export { titleCase as a, formatErrorMessage as i, clamp as n, formatClock as r, capitalize as t };
56
+ export { formatUnknownValue as a, formatErrorMessage as i, clamp as n, titleCase as o, formatClock as r, capitalize as t };
@@ -1,4 +1,4 @@
1
- import { getMcpServerIconSrc, getMcpServerRuntimeState } from "./utils/mcp-server-catalog.js";
1
+ import { getMcpServerEntry, getMcpServerIconSrc, getMcpServerRuntimeState } from "./utils/mcp-server-catalog.js";
2
2
  import { AppIcon } from "./components/foundations/AppIcon.js";
3
3
  import { jsx, jsxs } from "react/jsx-runtime";
4
4
  //#region src/components/_internal/mcp-server.tsx
@@ -9,6 +9,22 @@ function getMcpServerConnectionKind(server) {
9
9
  if (state === "connecting" || state === "discovering" || state === "connected" && !server.error) return "connecting";
10
10
  return "reconnect";
11
11
  }
12
+ /**
13
+ * Resolve one catalog card to the exact Agents SDK entry that owns its live
14
+ * connection state. An explicit server ID is authoritative for authorization
15
+ * flows and deliberately never falls back to a matching catalog entry.
16
+ */
17
+ function getMcpServerProjection(card, mcp, serverId) {
18
+ const assignedServer = serverId === void 0 ? void 0 : mcp?.servers[serverId];
19
+ const entry = serverId === void 0 ? getMcpServerEntry(card, mcp) : assignedServer ? [serverId, assignedServer] : void 0;
20
+ const server = entry?.[1];
21
+ return {
22
+ connectionKind: getMcpServerConnectionKind(server),
23
+ runtimeState: server ? getMcpServerRuntimeState(server) : void 0,
24
+ server,
25
+ serverId: entry?.[0]
26
+ };
27
+ }
12
28
  function McpServerIcon({ server, size = "lg", variant }) {
13
29
  const src = getMcpServerIconSrc(server);
14
30
  return /* @__PURE__ */ jsxs(AppIcon.Root, {
@@ -23,4 +39,4 @@ function McpServerIcon({ server, size = "lg", variant }) {
23
39
  });
24
40
  }
25
41
  //#endregion
26
- export { getMcpServerConnectionKind as n, McpServerIcon as t };
42
+ export { getMcpServerProjection as n, McpServerIcon as t };
@@ -0,0 +1,32 @@
1
+ //#region src/components/_internal/message-scroller.ts
2
+ const messageScrollerContract = {
3
+ root: {
4
+ className: "message-scroller",
5
+ slot: "message-scroller"
6
+ },
7
+ viewport: {
8
+ ariaLabel: "Messages",
9
+ className: "message-scroller__viewport",
10
+ role: "region",
11
+ slot: "message-scroller-viewport",
12
+ tabIndex: 0
13
+ },
14
+ content: {
15
+ ariaRelevant: "additions",
16
+ className: "message-scroller__content",
17
+ role: "log",
18
+ slot: "message-scroller-content",
19
+ virtualClassName: "message-scroller__virtual-content"
20
+ },
21
+ item: {
22
+ className: "message-scroller__item",
23
+ slot: "message-scroller-item",
24
+ virtualClassName: "message-scroller__virtual-item"
25
+ },
26
+ button: {
27
+ className: "message-scroller__button",
28
+ slot: "message-scroller-button"
29
+ }
30
+ };
31
+ //#endregion
32
+ export { messageScrollerContract as t };
@@ -1,4 +1,4 @@
1
- import { n as clamp } from "./format-CmopcfqJ.js";
1
+ import { n as clamp } from "./format-DB2mX9DA.js";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
3
  //#region src/components/_internal/progress-ring.tsx
4
4
  /**
@@ -0,0 +1,74 @@
1
+ import "react";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ //#region src/components/_internal/provider-logos.tsx
4
+ function Svg({ children, size = 16, ...props }) {
5
+ return /* @__PURE__ */ jsx("svg", {
6
+ width: size,
7
+ height: size,
8
+ viewBox: "0 0 24 24",
9
+ fill: "currentColor",
10
+ xmlns: "http://www.w3.org/2000/svg",
11
+ "aria-hidden": "true",
12
+ focusable: "false",
13
+ ...props,
14
+ children
15
+ });
16
+ }
17
+ const OpenAILogo = (props) => /* @__PURE__ */ jsx(Svg, {
18
+ ...props,
19
+ children: /* @__PURE__ */ jsx("path", { d: "M22.28 9.81a5.99 5.99 0 0 0-.52-4.91 6.05 6.05 0 0 0-6.52-2.9A6.05 6.05 0 0 0 10.58 0a6.05 6.05 0 0 0-5.77 4.18 5.99 5.99 0 0 0-4 2.9 6.05 6.05 0 0 0 .74 7.09 5.99 5.99 0 0 0 .52 4.91 6.05 6.05 0 0 0 6.52 2.9A5.99 5.99 0 0 0 13.25 24a6.05 6.05 0 0 0 5.77-4.19 5.99 5.99 0 0 0 4-2.9 6.05 6.05 0 0 0-.74-7.1ZM13.25 22.44a4.48 4.48 0 0 1-2.88-1.04l.14-.08 4.79-2.76a.78.78 0 0 0 .39-.68v-6.75l2.02 1.17c.02 0 .04.03.04.05v5.58a4.5 4.5 0 0 1-4.5 4.5ZM3.57 18.3a4.5 4.5 0 0 1-.54-3.03l.14.09 4.79 2.76a.78.78 0 0 0 .78 0l5.85-3.37v2.33c0 .02 0 .04-.03.06L9.72 19.94a4.5 4.5 0 0 1-6.15-1.64ZM2.31 7.88a4.48 4.48 0 0 1 2.35-1.97v5.69a.78.78 0 0 0 .39.67l5.83 3.36-2.02 1.17a.07.07 0 0 1-.07 0l-4.83-2.8A4.5 4.5 0 0 1 2.3 7.9Zm16.64 3.87L13.1 8.37l2.02-1.17c.02 0 .05-.01.07 0l4.83 2.8a4.5 4.5 0 0 1-.67 8.11V12.4a.77.77 0 0 0-.4-.66Zm2-3.03-.14-.09-4.78-2.78a.78.78 0 0 0-.79 0L9.4 9.25V6.92c0-.02 0-.04.02-.05l4.83-2.79a4.5 4.5 0 0 1 6.68 4.66Zm-12.68 4.17-2.02-1.17a.07.07 0 0 1-.04-.06V6.1a4.5 4.5 0 0 1 7.38-3.45l-.14.08L8.66 5.5a.78.78 0 0 0-.4.68v6.74Zm1.1-2.36 2.6-1.5 2.61 1.5v3l-2.6 1.5-2.6-1.5Z" })
20
+ });
21
+ const AnthropicLogo = (props) => /* @__PURE__ */ jsxs(Svg, {
22
+ ...props,
23
+ children: [/* @__PURE__ */ jsx("path", { d: "M13.83 4H17.3L24 20h-3.47l-1.37-3.52h-7L10.82 20H7.36ZM13.25 13.58h4.8l-2.4-6.15Z" }), /* @__PURE__ */ jsx("path", { d: "M0 4h3.47l6.7 16H6.7Z" })]
24
+ });
25
+ const GoogleLogo = (props) => /* @__PURE__ */ jsx(Svg, {
26
+ ...props,
27
+ children: /* @__PURE__ */ jsx("path", { d: "M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20Zm0 2a8 8 0 0 1 5.34 2.05l-2.2 2.2A5 5 0 1 0 17 12.6h-5v-2.6h7.9A8 8 0 0 1 12 20 8 8 0 0 1 12 4Z" })
28
+ });
29
+ const MetaLogo = (props) => /* @__PURE__ */ jsx(Svg, {
30
+ ...props,
31
+ children: /* @__PURE__ */ jsx("path", { d: "M2 12.5c0-3.5 1.8-6.5 4.4-6.5 1.8 0 3.2 1.3 4.9 3.8 2.2 3.2 3.3 5 4.6 5 1 0 1.5-.8 1.5-2.3 0-2.1-1-4.3-2.7-4.3-1 0-2 .6-3.2 2l-1.3-1.7C11.5 6.8 12.9 6 14.5 6c3 0 5.5 3.3 5.5 7 0 3.3-1.6 5-3.8 5-2.3 0-3.6-1.6-6-5.3C8.9 10.4 8 9.2 6.8 9.2 5.4 9.2 4.3 10.6 4.3 13c0 1.8.5 3 1.3 3 .6 0 1.1-.3 1.8-1.1l1.3 1.7C7.6 17.6 6.3 18 5.3 18 3.3 18 2 16 2 12.5Z" })
32
+ });
33
+ const KimiLogo = (props) => /* @__PURE__ */ jsxs(Svg, {
34
+ ...props,
35
+ children: [/* @__PURE__ */ jsx("circle", {
36
+ cx: "12",
37
+ cy: "12",
38
+ r: "9.5",
39
+ fill: "none",
40
+ stroke: "currentColor",
41
+ strokeWidth: "1.5"
42
+ }), /* @__PURE__ */ jsx("path", {
43
+ d: "M8 7.5v9M8 12l4.5-4.5M8 12l5 4.5M14 7.5h2.5v9H14z",
44
+ fill: "none",
45
+ stroke: "currentColor",
46
+ strokeWidth: "1.5",
47
+ strokeLinecap: "round",
48
+ strokeLinejoin: "round"
49
+ })]
50
+ });
51
+ const FallbackLogo = (props) => /* @__PURE__ */ jsx(Svg, {
52
+ ...props,
53
+ children: /* @__PURE__ */ jsx("circle", {
54
+ cx: "12",
55
+ cy: "12",
56
+ r: "3"
57
+ })
58
+ });
59
+ /**
60
+ * Resolves a provider string to its logo component.
61
+ * Unknown providers get a neutral dot fallback.
62
+ */
63
+ function ProviderLogo({ provider, ...props }) {
64
+ switch (provider.toLowerCase()) {
65
+ case "openai": return /* @__PURE__ */ jsx(OpenAILogo, { ...props });
66
+ case "anthropic": return /* @__PURE__ */ jsx(AnthropicLogo, { ...props });
67
+ case "google": return /* @__PURE__ */ jsx(GoogleLogo, { ...props });
68
+ case "meta": return /* @__PURE__ */ jsx(MetaLogo, { ...props });
69
+ case "kimi": return /* @__PURE__ */ jsx(KimiLogo, { ...props });
70
+ default: return /* @__PURE__ */ jsx(FallbackLogo, { ...props });
71
+ }
72
+ }
73
+ //#endregion
74
+ export { ProviderLogo as t };
@@ -57,6 +57,22 @@
57
57
  --message-scroller-button-inset-block-end: var(--sigvelo-spacing-2);
58
58
  }
59
59
 
60
+ /* Takes the whole transcript region, the way the scroller it stands in for
61
+ does, so nothing moves when the rows arrive. The composer floats over its
62
+ lower edge, so the spinner sits slightly high rather than under it. */
63
+ .agent-chat__transcript-loading {
64
+ display: grid;
65
+ block-size: 100%;
66
+ min-block-size: 0;
67
+ place-items: center;
68
+ padding-block-end: var(--agent-chat-composer-size, 5rem);
69
+ color: var(--sigvelo-color-text-muted);
70
+ }
71
+
72
+ .agent-chat[data-composer-hidden] .agent-chat__transcript-loading {
73
+ padding-block-end: 0;
74
+ }
75
+
60
76
  .agent-chat-start-screen {
61
77
  block-size: 100%;
62
78
  min-block-size: 0;
@@ -420,6 +436,15 @@
420
436
  block-size: var(--sigvelo-text-sm);
421
437
  }
422
438
 
439
+ .agent-chat__queued-content {
440
+ font-size: inherit;
441
+ line-height: inherit;
442
+ }
443
+
444
+ .agent-chat__queued-actions {
445
+ opacity: 1;
446
+ }
447
+
423
448
  .agent-chat__queued-action {
424
449
  flex: none;
425
450
  font-weight: var(--sigvelo-font-weight-normal);
@@ -49,35 +49,18 @@
49
49
  text-wrap: pretty;
50
50
  }
51
51
 
52
- .agent-connect__targets {
52
+ .agent-connect .agent-connect__targets {
53
53
  display: grid;
54
54
  grid-template-columns: repeat(4, minmax(0, 1fr));
55
- gap: var(--sigvelo-spacing-1);
56
55
  min-inline-size: 0;
57
56
  margin: 0;
58
57
  padding: var(--sigvelo-spacing-1);
59
58
  border: var(--sigvelo-border-style) var(--sigvelo-border-width)
60
59
  var(--sigvelo-color-neutral-border-subtle);
61
- border-radius: var(--sigvelo-radius-md);
62
- background: var(--sigvelo-color-neutral-bg-subtle);
63
60
  }
64
61
 
65
62
  .agent-connect__target {
66
- display: inline-flex;
67
- align-items: center;
68
- justify-content: center;
69
- min-block-size: var(--sigvelo-spacing-7);
70
63
  min-inline-size: 0;
71
- padding: 0 var(--sigvelo-spacing-2);
72
- border: 0;
73
- border-radius: var(--sigvelo-radius-sm);
74
- background: transparent;
75
- color: var(--sigvelo-color-text-muted);
76
- cursor: pointer;
77
- font: inherit;
78
- font-size: var(--sigvelo-text-xs);
79
- font-weight: var(--sigvelo-font-weight-semibold);
80
- line-height: var(--sigvelo-leading-tight);
81
64
  overflow-wrap: anywhere;
82
65
  text-align: center;
83
66
  }
@@ -92,23 +75,13 @@
92
75
  }
93
76
 
94
77
  @media (pointer: coarse) {
95
- .agent-connect__target {
78
+ .agent-connect .agent-connect__target {
96
79
  min-block-size: var(--sigvelo-spacing-10);
97
80
  padding-inline: var(--sigvelo-spacing-3);
98
81
  }
99
82
  }
100
83
 
101
- .agent-connect__target:hover {
102
- color: var(--sigvelo-color-text);
103
- background: color-mix(in oklab, var(--sigvelo-color-neutral-bg-muted), transparent 38%);
104
- }
105
-
106
- .agent-connect__target:focus-visible {
107
- outline: none;
108
- box-shadow: var(--sigvelo-recipe-focus-shadow);
109
- }
110
-
111
- .agent-connect__target[data-selected="true"] {
84
+ .agent-connect .agent-connect__target[data-pressed] {
112
85
  border-color: var(--sigvelo-color-primary-border-muted);
113
86
  background: var(--sigvelo-color-surface);
114
87
  color: var(--sigvelo-color-text);
@@ -174,7 +147,7 @@
174
147
  border-color: ButtonText;
175
148
  }
176
149
 
177
- .agent-connect__target[data-selected="true"] {
150
+ .agent-connect .agent-connect__target[data-pressed] {
178
151
  outline: var(--sigvelo-focus-ring-forced);
179
152
  outline-offset: -2px;
180
153
  }
@@ -47,13 +47,6 @@
47
47
  block-size: 100%;
48
48
  }
49
49
 
50
- .agent-tool-detail__chat-loading {
51
- display: grid;
52
- place-items: center;
53
- block-size: 100%;
54
- color: var(--sigvelo-color-text-muted);
55
- }
56
-
57
50
  .agent-tool-detail > .subagent-run__actions {
58
51
  grid-row: 4;
59
52
  display: flex;
@@ -3,7 +3,6 @@
3
3
  .alert-dialog__backdrop {
4
4
  background-color: var(--sigvelo-color-backdrop);
5
5
  backdrop-filter: var(--sigvelo-glass-filter);
6
- z-index: var(--sigvelo-z-overlay);
7
6
  }
8
7
 
9
8
  .alert-dialog__popup {
@@ -13,7 +12,6 @@
13
12
  inset-block-start: 50%;
14
13
  inset-inline-start: 50%;
15
14
  translate: -50% -50%;
16
- z-index: var(--sigvelo-z-overlay);
17
15
  inline-size: calc(100% - var(--sigvelo-control-height-sm));
18
16
  max-inline-size: 28rem;
19
17
  max-block-size: calc(100dvb - var(--sigvelo-control-height-sm));
@@ -2,7 +2,9 @@
2
2
  * Base UI exposes presence state on popup parts. Keep its state contract in
3
3
  * CSS so all anchored surfaces enter, exit, and respect reduced motion alike.
4
4
  */
5
- .base-ui-positioner {
5
+ .base-ui-positioner,
6
+ .base-ui-backdrop,
7
+ .base-ui-modal-popup {
6
8
  z-index: var(--sigvelo-z-overlay);
7
9
  }
8
10
 
@@ -170,26 +172,26 @@
170
172
  .base-ui-adaptive-viewport[data-activation-direction~="left"] > [data-current][data-starting-style],
171
173
  .base-ui-adaptive-viewport[data-activation-direction~="right"]
172
174
  > [data-previous][data-ending-style] {
173
- translate: 25% 0;
175
+ translate: -25% 0;
174
176
  opacity: 0;
175
177
  }
176
178
 
177
179
  .base-ui-adaptive-viewport[data-activation-direction~="right"]
178
180
  > [data-current][data-starting-style],
179
181
  .base-ui-adaptive-viewport[data-activation-direction~="left"] > [data-previous][data-ending-style] {
180
- translate: -25% 0;
182
+ translate: 25% 0;
181
183
  opacity: 0;
182
184
  }
183
185
 
184
186
  .base-ui-adaptive-viewport[data-activation-direction~="up"] > [data-current][data-starting-style],
185
187
  .base-ui-adaptive-viewport[data-activation-direction~="down"] > [data-previous][data-ending-style] {
186
- translate: 0 25%;
188
+ translate: 0 -25%;
187
189
  opacity: 0;
188
190
  }
189
191
 
190
192
  .base-ui-adaptive-viewport[data-activation-direction~="down"] > [data-current][data-starting-style],
191
193
  .base-ui-adaptive-viewport[data-activation-direction~="up"] > [data-previous][data-ending-style] {
192
- translate: 0 -25%;
194
+ translate: 0 25%;
193
195
  opacity: 0;
194
196
  }
195
197
 
@@ -96,8 +96,7 @@
96
96
  line-height: var(--sigvelo-leading-compact);
97
97
  }
98
98
 
99
- .chatgpt-sign-in__brand-mark,
100
- .chatgpt-sign-in__logo {
99
+ .chatgpt-sign-in__brand-mark {
101
100
  display: inline-flex;
102
101
  }
103
102
 
@@ -198,7 +197,10 @@
198
197
  scale: 1.06;
199
198
  }
200
199
 
201
- .chatgpt-sign-in__logo {
200
+ .chatgpt-sign-in__button .chatgpt-sign-in__logo {
201
+ display: block;
202
+ inline-size: var(--sigvelo-control-icon-size-sm);
203
+ block-size: var(--sigvelo-control-icon-size-sm);
202
204
  color: inherit;
203
205
  }
204
206
 
@@ -15,7 +15,6 @@
15
15
  .dialog__backdrop {
16
16
  background-color: var(--sigvelo-color-backdrop);
17
17
  backdrop-filter: var(--sigvelo-glass-filter);
18
- z-index: var(--sigvelo-z-overlay);
19
18
  }
20
19
 
21
20
  .dialog__popup {
@@ -25,7 +24,6 @@
25
24
  inset-block-start: 50%;
26
25
  inset-inline-start: 50%;
27
26
  translate: -50% -50%;
28
- z-index: var(--sigvelo-z-overlay);
29
27
  inline-size: calc(100% - var(--sigvelo-control-height-sm));
30
28
  max-inline-size: 32rem;
31
29
  max-block-size: calc(100dvb - var(--sigvelo-spacing-8));
@@ -8,7 +8,7 @@
8
8
 
9
9
  .field[data-invalid] .field__label,
10
10
  .field[data-invalid] .field-title {
11
- color: var(--sigvelo-color-danger-bg);
11
+ color: var(--sigvelo-color-danger-text);
12
12
  }
13
13
 
14
14
  .field--horizontal {
@@ -103,7 +103,7 @@
103
103
  font-family: inherit;
104
104
  font-size: var(--sigvelo-text-xs);
105
105
  line-height: var(--sigvelo-leading-snug);
106
- color: var(--sigvelo-color-danger-bg);
106
+ color: var(--sigvelo-color-danger-text);
107
107
  margin: 0;
108
108
  opacity: 1;
109
109
  translate: 0;
@@ -40,12 +40,16 @@
40
40
  color: var(--sigvelo-color-text-muted);
41
41
  }
42
42
 
43
- .model-selector__input.input {
43
+ .model-selector__input {
44
+ box-sizing: border-box;
44
45
  flex: 1;
45
46
  min-inline-size: 0;
47
+ inline-size: 100%;
46
48
  block-size: auto;
49
+ margin: 0;
47
50
  padding: 0;
48
51
  border: none;
52
+ border-radius: 0;
49
53
  outline: none;
50
54
  background-color: transparent;
51
55
  color: var(--sigvelo-color-text);
@@ -53,7 +57,7 @@
53
57
  font-size: var(--sigvelo-text-sm);
54
58
  }
55
59
 
56
- .model-selector__input.input:focus-visible {
60
+ .model-selector__input:focus-visible {
57
61
  box-shadow: none;
58
62
  }
59
63
 
@@ -66,9 +70,28 @@
66
70
  }
67
71
 
68
72
  .model-selector__list {
69
- flex: 1;
70
- overflow: auto;
73
+ position: relative;
74
+ display: flex;
75
+ flex: 0 1 auto;
76
+ min-block-size: 0;
77
+ max-block-size: min(26rem, calc(100dvb - var(--sigvelo-spacing-24)));
78
+ overflow: hidden;
79
+ }
80
+
81
+ .model-selector__list-viewport {
82
+ flex: 1 1 auto;
83
+ min-block-size: 0;
84
+ overscroll-behavior: contain;
85
+ scroll-padding-block: var(--sigvelo-spacing-1);
86
+ }
87
+
88
+ .model-selector__list-content {
89
+ min-inline-size: 100%;
90
+ }
91
+
92
+ .model-selector__options {
71
93
  padding-block: var(--sigvelo-spacing-1);
94
+ outline: none;
72
95
  }
73
96
 
74
97
  .model-selector__group {
@@ -106,11 +129,11 @@
106
129
  }
107
130
 
108
131
  .model-selector__item:hover:not(:disabled):not([data-disabled]),
109
- .model-selector__item:focus-visible {
132
+ .model-selector__item[data-highlighted] {
110
133
  background-color: var(--sigvelo-color-neutral-bg-subtle);
111
134
  }
112
135
 
113
- .model-selector__item:focus-visible {
136
+ .model-selector__item[data-highlighted] {
114
137
  outline: none;
115
138
  box-shadow: var(--sigvelo-recipe-focus-shadow-inset);
116
139
  }
@@ -135,11 +158,6 @@
135
158
  }
136
159
  }
137
160
 
138
- /* Hide empty state when any group sibling has visible items. */
139
- .model-selector__list:has(.model-selector__group) .model-selector__empty {
140
- display: none;
141
- }
142
-
143
161
  .model-selector__separator {
144
162
  margin-block: var(--sigvelo-spacing-1);
145
163
  margin-inline: 0;
@@ -176,7 +194,7 @@
176
194
  }
177
195
 
178
196
  @media (forced-colors: active) {
179
- .model-selector__item:focus-visible,
197
+ .model-selector__item[data-highlighted],
180
198
  .model-selector__item:hover {
181
199
  outline: var(--sigvelo-focus-ring-forced);
182
200
  outline-offset: -2px;
@@ -1,5 +1,4 @@
1
1
  .popover__backdrop {
2
- z-index: var(--sigvelo-z-overlay);
3
2
  background-color: color-mix(in oklab, var(--sigvelo-color-text), transparent 50%);
4
3
  }
5
4
 
@@ -16,10 +16,6 @@
16
16
  border-radius: var(--sigvelo-radius-sm);
17
17
  }
18
18
 
19
- .preview-card__backdrop {
20
- z-index: var(--sigvelo-z-overlay);
21
- }
22
-
23
19
  .preview-card__popup {
24
20
  --sigvelo-recipe-surface-padding: var(--sigvelo-spacing-3);
25
21
 
@@ -33,19 +33,7 @@
33
33
 
34
34
  .pricing-page__billing-toggle {
35
35
  display: flex;
36
- flex-direction: column;
37
- align-items: center;
38
- gap: var(--sigvelo-spacing-4);
39
- }
40
-
41
- .pricing-page__toggle-options {
42
- display: flex;
43
- align-items: center;
44
- gap: var(--sigvelo-spacing-2);
45
- }
46
-
47
- .pricing-page__toggle-label {
48
- font-size: var(--sigvelo-text-xs);
36
+ justify-content: center;
49
37
  }
50
38
 
51
39
  .pricing-page__switch-container {
@@ -480,17 +480,19 @@
480
480
  display: inline-block;
481
481
  }
482
482
 
483
+ .prompt-input__hover-card-trigger {
484
+ color: inherit;
485
+ text-decoration: none;
486
+ cursor: inherit;
487
+ transition: none;
488
+ }
489
+
490
+ .prompt-input__hover-card-trigger:hover {
491
+ color: inherit;
492
+ }
493
+
483
494
  .prompt-input__hover-card-content {
484
- position: absolute;
485
- z-index: var(--sigvelo-z-chrome);
486
- inset-block-start: calc(100% + var(--sigvelo-spacing-1-5));
487
- inset-inline-start: 0;
488
495
  min-inline-size: 14rem;
489
- padding: var(--sigvelo-spacing-3);
490
- color: var(--sigvelo-color-text);
491
- background-color: var(--sigvelo-color-surface-raised);
492
- border-radius: var(--sigvelo-radius-md);
493
- box-shadow: var(--sigvelo-elevation-overlay);
494
496
  }
495
497
 
496
498
  .prompt-input__tab-label {
@@ -529,7 +531,7 @@
529
531
  overflow-block: auto;
530
532
  }
531
533
 
532
- .prompt-input__command-popup [data-slot="combobox-empty"]:empty {
534
+ .prompt-input__command-popup [data-slot="autocomplete-empty"]:empty {
533
535
  display: none;
534
536
  }
535
537
 
@@ -521,8 +521,9 @@
521
521
  [data-slot="hover-card-arrow"],
522
522
  [data-slot="navigation-menu-arrow"]
523
523
  )[data-side="top"] {
524
- border-block-start: none;
525
- border-inline-start: none;
524
+ bottom: calc(var(--sigvelo-recipe-popup-arrow-size) * -0.5);
525
+ border-top: none;
526
+ border-left: none;
526
527
  }
527
528
 
528
529
  :where(
@@ -532,8 +533,9 @@
532
533
  [data-slot="hover-card-arrow"],
533
534
  [data-slot="navigation-menu-arrow"]
534
535
  )[data-side="bottom"] {
535
- border-block-end: none;
536
- border-inline-end: none;
536
+ top: calc(var(--sigvelo-recipe-popup-arrow-size) * -0.5);
537
+ border-right: none;
538
+ border-bottom: none;
537
539
  }
538
540
 
539
541
  :where(
@@ -542,9 +544,14 @@
542
544
  [data-slot="tooltip-arrow"],
543
545
  [data-slot="hover-card-arrow"],
544
546
  [data-slot="navigation-menu-arrow"]
545
- )[data-side="left"] {
546
- border-block-end: none;
547
- border-inline-start: none;
547
+ ):where(
548
+ [data-side="left"],
549
+ [data-side="inline-start"]:dir(ltr),
550
+ [data-side="inline-end"]:dir(rtl)
551
+ ) {
552
+ right: calc(var(--sigvelo-recipe-popup-arrow-size) * -0.5);
553
+ border-bottom: none;
554
+ border-left: none;
548
555
  }
549
556
 
550
557
  :where(
@@ -553,9 +560,14 @@
553
560
  [data-slot="tooltip-arrow"],
554
561
  [data-slot="hover-card-arrow"],
555
562
  [data-slot="navigation-menu-arrow"]
556
- )[data-side="right"] {
557
- border-block-start: none;
558
- border-inline-end: none;
563
+ ):where(
564
+ [data-side="right"],
565
+ [data-side="inline-end"]:dir(ltr),
566
+ [data-side="inline-start"]:dir(rtl)
567
+ ) {
568
+ left: calc(var(--sigvelo-recipe-popup-arrow-size) * -0.5);
569
+ border-top: none;
570
+ border-right: none;
559
571
  }
560
572
 
561
573
  :where([data-slot="context-menu-item-indicator"], [data-slot="menubar-item-indicator"]) {
@@ -618,7 +630,6 @@
618
630
 
619
631
  :where(
620
632
  [data-slot="combobox-trigger"],
621
- [data-slot="combobox-clear"],
622
633
  [data-slot="autocomplete-trigger"],
623
634
  [data-slot="autocomplete-clear"]
624
635
  ) {
@@ -638,7 +649,6 @@
638
649
 
639
650
  :where(
640
651
  [data-slot="combobox-trigger"],
641
- [data-slot="combobox-clear"],
642
652
  [data-slot="autocomplete-trigger"],
643
653
  [data-slot="autocomplete-clear"]
644
654
  ):hover:not([data-disabled]) {
@@ -648,7 +658,6 @@
648
658
 
649
659
  :where(
650
660
  [data-slot="combobox-trigger"],
651
- [data-slot="combobox-clear"],
652
661
  [data-slot="autocomplete-trigger"],
653
662
  [data-slot="autocomplete-clear"]
654
663
  ):focus-visible {
@@ -658,7 +667,6 @@
658
667
 
659
668
  :where(
660
669
  [data-slot="combobox-trigger"],
661
- [data-slot="combobox-clear"],
662
670
  [data-slot="autocomplete-trigger"],
663
671
  [data-slot="autocomplete-clear"]
664
672
  )[data-disabled] {