@mcp-b/react-components 0.21.0 → 0.23.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 (168) hide show
  1. package/dist/{AgentChat-Dvkn8lce.d.ts → AgentChat-Bm1qYbOo.d.ts} +2 -2
  2. package/dist/{AgentChatStartScreen-CvXJBr4y.d.ts → AgentChatStartScreen-DDZ25aax.d.ts} +4 -1
  3. package/dist/{Button-yRInko9u.d.ts → Button-SBIz6Lqi.d.ts} +2 -1
  4. package/dist/{CodeBlock-ygtuzqJd.js → CodeBlock-Cp67Njo3.js} +1 -1
  5. package/dist/{CodeBlock-Bbls1CnA.d.ts → CodeBlock-yMpGqScn.d.ts} +1 -1
  6. package/dist/Dialog-BD8NBKaE.d.ts +122 -0
  7. package/dist/{FileTree-CdgfccsM.js → FileTree-DW60q1w7.js} +1 -1
  8. package/dist/IconButton-CFKhu6OR.d.ts +35 -0
  9. package/dist/{Message-DzuteocT.js → Message-_-bEYLAO.js} +9 -16
  10. package/dist/{ModelSelector-CEd8M9eK.js → ModelSelector-Brvj9Cab.js} +1 -1
  11. package/dist/{PromptInput-Cq-8RoXD.d.ts → PromptInput-BjoPWaaG.d.ts} +15 -2
  12. package/dist/{ThinkChatActivity-FY1VWXgh.d.ts → ThinkChatActivity-2BobmuvR.d.ts} +1 -1
  13. package/dist/{Workspace-CWtust-2.d.ts → Workspace-CIycQ4xE.d.ts} +1 -1
  14. package/dist/{WorkspaceExplorer-DGigwsgH.d.ts → WorkspaceExplorer-BCipn7Vd.d.ts} +1 -1
  15. package/dist/{WorkspaceFile-D8Un_xge.d.ts → WorkspaceFile-DMtRMwVv.d.ts} +1 -1
  16. package/dist/{WorkspaceFileView-Bxx4wEzJ.js → WorkspaceFileView-rUEN2iox.js} +4 -4
  17. package/dist/assets/think-browser-host.png +0 -0
  18. package/dist/components/ActionGuide.d.ts +85 -0
  19. package/dist/components/ActionGuide.js +94 -0
  20. package/dist/components/Activity.js +1 -1
  21. package/dist/components/AgentActivity.js +3 -11
  22. package/dist/components/AgentActivityPreview.js +15 -14
  23. package/dist/components/AgentAttention.d.ts +1 -1
  24. package/dist/components/AgentChat.d.ts +1 -1
  25. package/dist/components/AgentChat.js +33 -13
  26. package/dist/components/AgentChatStartScreen.d.ts +1 -1
  27. package/dist/components/AgentChatStartScreen.js +21 -15
  28. package/dist/components/AgentConnection.d.ts +1 -1
  29. package/dist/components/AgentConnection.js +2 -2
  30. package/dist/components/AgentMessageParts.js +1 -1
  31. package/dist/components/AgentToolDetail.js +1 -1
  32. package/dist/components/AlertDialog.d.ts +2 -1
  33. package/dist/components/AlertDialog.js +8 -2
  34. package/dist/components/AppIcon.d.ts +58 -0
  35. package/dist/components/AppIcon.js +51 -0
  36. package/dist/components/AppTopBar.js +9 -10
  37. package/dist/components/Approval.js +1 -1
  38. package/dist/components/Artifact.d.ts +3 -7
  39. package/dist/components/Artifact.js +12 -18
  40. package/dist/components/Avatar.d.ts +7 -2
  41. package/dist/components/Avatar.js +4 -2
  42. package/dist/components/BrowserLiveView.js +1 -1
  43. package/dist/components/BrowserReplay.js +4 -5
  44. package/dist/components/BrowserRunPanel.js +1 -1
  45. package/dist/components/Button.d.ts +1 -1
  46. package/dist/components/ChainOfThought.d.ts +1 -1
  47. package/dist/components/ChainOfThought.js +1 -1
  48. package/dist/components/ChatGptSignInScreen.js +2 -2
  49. package/dist/components/Checkbox.js +1 -1
  50. package/dist/components/Checkpoint.js +1 -1
  51. package/dist/components/CodeBlock.d.ts +1 -1
  52. package/dist/components/CodeBlock.js +1 -1
  53. package/dist/components/CodexModelSelector.js +1 -1
  54. package/dist/components/Commit.d.ts +1 -1
  55. package/dist/components/Commit.js +3 -3
  56. package/dist/components/ContextMenu.js +1 -1
  57. package/dist/components/Conversation.d.ts +2 -2
  58. package/dist/components/Conversation.js +4 -5
  59. package/dist/components/Dialog.d.ts +1 -117
  60. package/dist/components/Dialog.js +9 -1
  61. package/dist/components/EnvironmentVariables.d.ts +1 -1
  62. package/dist/components/EnvironmentVariables.js +2 -2
  63. package/dist/components/FileTree.js +1 -1
  64. package/dist/components/IconButton.d.ts +1 -31
  65. package/dist/components/IconButton.js +2 -1
  66. package/dist/components/McpConnectionRequest.d.ts +1 -1
  67. package/dist/components/McpConnectionRequest.js +1 -1
  68. package/dist/components/McpPluginCatalog.d.ts +86 -0
  69. package/dist/components/McpPluginCatalog.js +364 -0
  70. package/dist/components/McpServerPicker.d.ts +2 -2
  71. package/dist/components/McpServerPicker.js +7 -13
  72. package/dist/components/MediaPreviewCard.js +1 -1
  73. package/dist/components/Menubar.js +1 -1
  74. package/dist/components/Message.d.ts +4 -8
  75. package/dist/components/Message.js +1 -1
  76. package/dist/components/MessageScroller.d.ts +1 -1
  77. package/dist/components/MessageScroller.js +1 -1
  78. package/dist/components/ModelSelector.d.ts +2 -2
  79. package/dist/components/ModelSelector.js +1 -1
  80. package/dist/components/Plan.js +1 -1
  81. package/dist/components/PricingPlanCard.d.ts +1 -1
  82. package/dist/components/PricingPlanCard.js +10 -12
  83. package/dist/components/PromptInput.d.ts +2 -2
  84. package/dist/components/PromptInput.js +27 -10
  85. package/dist/components/Queue.d.ts +1 -1
  86. package/dist/components/Queue.js +2 -2
  87. package/dist/components/Reasoning.js +4 -9
  88. package/dist/components/ResponsiveSidebarShell.js +2 -1
  89. package/dist/components/ScrollArea.js +1 -0
  90. package/dist/components/SearchField.js +1 -1
  91. package/dist/components/Select.js +1 -1
  92. package/dist/components/Sources.js +1 -1
  93. package/dist/components/Stepper.js +1 -1
  94. package/dist/components/SubagentRunIndicator.js +1 -1
  95. package/dist/components/SubagentRunSelector.js +1 -1
  96. package/dist/components/Task.js +1 -1
  97. package/dist/components/Terminal.d.ts +3 -3
  98. package/dist/components/Terminal.js +7 -8
  99. package/dist/components/TestResults.js +1 -1
  100. package/dist/components/ThemeModeControl.js +1 -1
  101. package/dist/components/ThinkChat.d.ts +5 -5
  102. package/dist/components/ThinkChatActivity.d.ts +1 -1
  103. package/dist/components/ThinkChatActivity.js +1 -1
  104. package/dist/components/ThinkChatToolPanels.js +1 -1
  105. package/dist/components/ThinkExecutionDetail.js +1 -1
  106. package/dist/components/ThinkExecutionStatus.js +1 -1
  107. package/dist/components/ThinkExecutionWorkbench.js +14 -21
  108. package/dist/components/ThinkFullApp.d.ts +8 -4
  109. package/dist/components/ThinkFullApp.js +17 -2
  110. package/dist/components/ThinkRoutineBrowser.js +2 -2
  111. package/dist/components/ThinkRoutineForm.js +3 -3
  112. package/dist/components/ThinkRoutineLibrary.js +2 -2
  113. package/dist/components/ThinkRoutineRuns.js +1 -1
  114. package/dist/components/ThinkThreadPicker.js +2 -3
  115. package/dist/components/Toast.d.ts +12 -2
  116. package/dist/components/Toast.js +14 -4
  117. package/dist/components/Tooltip.d.ts +6 -4
  118. package/dist/components/Tooltip.js +11 -4
  119. package/dist/components/WebPreview.d.ts +13 -6
  120. package/dist/components/WebPreview.js +55 -50
  121. package/dist/components/Workspace.d.ts +1 -1
  122. package/dist/components/WorkspaceBrowser.d.ts +1 -1
  123. package/dist/components/WorkspaceBrowser.js +1 -1
  124. package/dist/components/WorkspaceExplorer.d.ts +3 -3
  125. package/dist/components/WorkspaceExplorer.js +1 -1
  126. package/dist/components/WorkspaceFile.d.ts +1 -1
  127. package/dist/components/WorkspaceFileView.d.ts +1 -1
  128. package/dist/components/WorkspaceFileView.js +1 -1
  129. package/dist/components/WorkspaceHeader.js +1 -1
  130. package/dist/components/icons.d.ts +2 -2
  131. package/dist/components/icons.js +2 -2
  132. package/dist/{copy-button-BrvQ7z4W.d.ts → copy-button-EBv_B9F6.d.ts} +2 -2
  133. package/dist/{copy-button-vo1paUSi.js → copy-button-TWq8nZhc.js} +8 -8
  134. package/dist/{icons-DyOM0EJs.js → icons-ua6f_GH3.js} +3 -2
  135. package/dist/{icons-DkRtZmvT.d.ts → icons-wP1yFUXF.d.ts} +6 -1
  136. package/dist/mcp-server-catalog-DycejaJ5.d.ts +1077 -0
  137. package/dist/styles/action-guide.css +128 -0
  138. package/dist/styles/agent-activity-preview-overlay.css +13 -1
  139. package/dist/styles/agent-activity-preview.css +3 -34
  140. package/dist/styles/agent-chat.css +110 -75
  141. package/dist/styles/alert-dialog.css +0 -18
  142. package/dist/styles/app-icon.css +122 -0
  143. package/dist/styles/app-top-bar.css +0 -1
  144. package/dist/styles/avatar.css +13 -0
  145. package/dist/styles/base.css +0 -1
  146. package/dist/styles/button.css +14 -0
  147. package/dist/styles/description-list.css +2 -2
  148. package/dist/styles/dialog.css +6 -6
  149. package/dist/styles/index.css +3 -0
  150. package/dist/styles/mcp-plugin-catalog.css +296 -0
  151. package/dist/styles/mcp-server-picker.css +0 -26
  152. package/dist/styles/message-scroller.css +5 -1
  153. package/dist/styles/message.css +7 -0
  154. package/dist/styles/prompt-input.css +26 -14
  155. package/dist/styles/recipes.css +27 -5
  156. package/dist/styles/responsive-sidebar-shell.css +14 -8
  157. package/dist/styles/search-field.css +9 -0
  158. package/dist/styles/think-full-app.css +22 -2
  159. package/dist/styles/think-thread-picker.css +1 -11
  160. package/dist/styles/toast.css +0 -21
  161. package/dist/styles/tokens.css +6 -0
  162. package/dist/styles/web-preview.css +5 -0
  163. package/dist/utils/favicon.d.ts +10 -0
  164. package/dist/utils/favicon.js +18 -0
  165. package/dist/utils/mcp-server-catalog.d.ts +2 -1078
  166. package/dist/utils/mcp-server-catalog.js +3 -11
  167. package/dist/utils/structured-code.d.ts +1 -1
  168. package/package.json +2 -2
@@ -0,0 +1,122 @@
1
+ .avatar.app-icon {
2
+ --sigvelo-recipe-app-icon-size: var(--sigvelo-spacing-8);
3
+ --sigvelo-recipe-app-icon-radius: 30%;
4
+
5
+ position: relative;
6
+ display: inline-flex;
7
+ align-items: center;
8
+ justify-content: center;
9
+ inline-size: var(--sigvelo-recipe-app-icon-size);
10
+ block-size: var(--sigvelo-recipe-app-icon-size);
11
+ flex: none;
12
+ overflow: hidden;
13
+ border-radius: var(--sigvelo-recipe-app-icon-radius);
14
+ background: var(--sigvelo-color-surface-raised);
15
+ box-shadow: 0 var(--sigvelo-spacing-1) var(--sigvelo-spacing-4)
16
+ color-mix(in oklab, transparent, var(--sigvelo-color-shadow) 5%);
17
+ corner-shape: round;
18
+ user-select: none;
19
+ }
20
+
21
+ .app-icon[data-app-icon-size="xs"] {
22
+ --sigvelo-recipe-app-icon-size: var(--sigvelo-spacing-5);
23
+ }
24
+
25
+ .app-icon[data-app-icon-size="sm"] {
26
+ --sigvelo-recipe-app-icon-size: var(--sigvelo-spacing-6);
27
+ --sigvelo-recipe-app-icon-radius: 37.5%;
28
+ }
29
+
30
+ .app-icon[data-app-icon-size="lg"] {
31
+ --sigvelo-recipe-app-icon-size: var(--sigvelo-spacing-10);
32
+ }
33
+
34
+ .app-icon[data-app-icon-size="xl"] {
35
+ --sigvelo-recipe-app-icon-size: var(--sigvelo-spacing-12);
36
+ }
37
+
38
+ .app-icon[data-app-icon-variant="surface"],
39
+ .app-icon[data-app-icon-variant="contrast"] {
40
+ padding: var(--sigvelo-spacing-2);
41
+ }
42
+
43
+ .app-icon[data-app-icon-variant="surface"] {
44
+ background: var(--sigvelo-color-surface-raised);
45
+ }
46
+
47
+ .app-icon[data-app-icon-variant="contrast"] {
48
+ background: var(--sigvelo-color-primary-bg);
49
+ color: var(--sigvelo-color-primary-text-on-bg);
50
+ }
51
+
52
+ .app-icon::after {
53
+ position: absolute;
54
+ inset: 0;
55
+ border-radius: inherit;
56
+ box-shadow: inset 0 0 0 var(--sigvelo-border-width-hairline)
57
+ color-mix(in oklab, transparent, var(--sigvelo-color-shadow) 10%);
58
+ content: "";
59
+ pointer-events: none;
60
+ }
61
+
62
+ .app-icon__image,
63
+ .app-icon__fallback,
64
+ .app-icon > :where(svg, img) {
65
+ inline-size: 100%;
66
+ block-size: 100%;
67
+ }
68
+
69
+ .app-icon__image {
70
+ display: block;
71
+ object-fit: cover;
72
+ }
73
+
74
+ .app-icon__image[data-fit="contain"] {
75
+ object-fit: contain;
76
+ }
77
+
78
+ .app-icon__fallback {
79
+ display: flex;
80
+ align-items: center;
81
+ justify-content: center;
82
+ border-radius: inherit;
83
+ background: var(--sigvelo-color-surface-raised);
84
+ color: var(--sigvelo-color-text-muted);
85
+ font-size: var(--sigvelo-text-xs);
86
+ font-weight: var(--sigvelo-font-weight-semibold);
87
+ }
88
+
89
+ .app-icon[data-app-icon-variant="contrast"] .app-icon__fallback {
90
+ background: inherit;
91
+ color: inherit;
92
+ }
93
+
94
+ .app-icon-stack {
95
+ display: inline-flex;
96
+ align-items: center;
97
+ block-size: 0;
98
+ isolation: isolate;
99
+ }
100
+
101
+ .app-icon-stack > .app-icon {
102
+ position: relative;
103
+ z-index: 1;
104
+ }
105
+
106
+ .app-icon-stack > .app-icon:not(:first-child) {
107
+ margin-inline-start: calc(-1 * var(--sigvelo-spacing-2));
108
+ }
109
+
110
+ .app-icon-stack > .app-icon:first-child {
111
+ z-index: 3;
112
+ }
113
+
114
+ .app-icon-stack > .app-icon:nth-child(2) {
115
+ z-index: 2;
116
+ }
117
+
118
+ @media (forced-colors: active) {
119
+ .app-icon {
120
+ border: var(--sigvelo-border-style) var(--sigvelo-border-width) CanvasText;
121
+ }
122
+ }
@@ -16,7 +16,6 @@
16
16
  padding-inline: calc(var(--sigvelo-spacing-2) + env(safe-area-inset-left, 0px))
17
17
  calc(var(--sigvelo-spacing-2) + env(safe-area-inset-right, 0px));
18
18
  border: 0;
19
- border-block-end: 0;
20
19
  border-radius: 0;
21
20
  background: var(--sigvelo-color-surface);
22
21
  }
@@ -26,6 +26,15 @@
26
26
  --sigvelo-recipe-avatar-badge-size: var(--sigvelo-spacing-3);
27
27
  }
28
28
 
29
+ .avatar[data-size="xl"] {
30
+ --sigvelo-recipe-avatar-size: var(--sigvelo-spacing-14);
31
+ --sigvelo-recipe-avatar-badge-size: var(--sigvelo-spacing-4);
32
+ }
33
+
34
+ .avatar[data-shape="rounded"] {
35
+ border-radius: var(--sigvelo-radius-md);
36
+ }
37
+
29
38
  .avatar__image {
30
39
  inline-size: 100%;
31
40
  block-size: 100%;
@@ -38,6 +47,10 @@
38
47
  scale var(--sigvelo-motion-duration-presence) var(--sigvelo-motion-ease-enter);
39
48
  }
40
49
 
50
+ .avatar__image[data-fit="contain"] {
51
+ object-fit: contain;
52
+ }
53
+
41
54
  .avatar__image[data-starting-style],
42
55
  .avatar__image[data-ending-style] {
43
56
  opacity: 0;
@@ -35,7 +35,6 @@
35
35
  :where(
36
36
  .agent-activity-preview__badge,
37
37
  .agent-activity-preview__dismiss,
38
- .agent-activity-preview__favicons img,
39
38
  .agent-activity-preview__unviewed-dot,
40
39
  .approval__key,
41
40
  .avatar,
@@ -58,6 +58,8 @@
58
58
  /* Normal appearance */
59
59
 
60
60
  .button--normal.button--primary {
61
+ --sigvelo-recipe-button-radius: var(--sigvelo-radius-full);
62
+
61
63
  background-color: var(--sigvelo-color-primary-bg);
62
64
  color: var(--sigvelo-color-primary-text-on-bg);
63
65
  }
@@ -116,6 +118,18 @@
116
118
  background-color: color-mix(in oklab, transparent, var(--sigvelo-color-danger-bg) 7.5%);
117
119
  }
118
120
 
121
+ /* Raised surface appearance */
122
+
123
+ .button--surface {
124
+ background-color: var(--sigvelo-color-surface-raised);
125
+ color: var(--sigvelo-color-text);
126
+ box-shadow: var(--sigvelo-elevation-raised);
127
+ }
128
+
129
+ .button--surface:hover:not([data-disabled], :active) {
130
+ background-color: var(--sigvelo-color-neutral-bg-subtle);
131
+ }
132
+
119
133
  /* Ghost appearance */
120
134
 
121
135
  .button--ghost {
@@ -2,6 +2,8 @@
2
2
  display: grid;
3
3
  gap: var(--sigvelo-spacing-2);
4
4
  margin: 0;
5
+ font-size: var(--sigvelo-text-sm);
6
+ line-height: var(--sigvelo-text-sm-leading);
5
7
  }
6
8
 
7
9
  .description-list__item {
@@ -17,8 +19,6 @@
17
19
  .description-list__details {
18
20
  margin: 0;
19
21
  overflow-wrap: anywhere;
20
- font-family: var(--sigvelo-font-mono);
21
- font-size: var(--sigvelo-text-xs);
22
22
  text-align: end;
23
23
  }
24
24
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  The blur does run on every frame of the open fade — the scrim covers the
6
6
  viewport, so each frame re-filters all of it. What makes that affordable is
7
- the filter itself: one 8px radius, no second pass. An earlier
7
+ the filter itself: one 1px radius, no second pass. An earlier
8
8
  blur(24px) saturate(180%) cost about a third of the Storybook suite in
9
9
  timing failures, in stories that had nothing to do with dialogs.
10
10
 
@@ -50,16 +50,16 @@
50
50
  }
51
51
 
52
52
  .dialog__title {
53
- font-size: var(--sigvelo-text-base);
54
- font-weight: var(--sigvelo-font-weight-semibold);
55
- line-height: var(--sigvelo-leading-compact);
53
+ font-size: var(--sigvelo-text-lg);
54
+ font-weight: var(--sigvelo-font-weight-normal);
55
+ line-height: var(--sigvelo-text-lg-leading);
56
56
  color: var(--sigvelo-color-text);
57
57
  margin-block-end: var(--sigvelo-spacing-1);
58
58
  }
59
59
 
60
60
  .dialog__description {
61
- font-size: var(--sigvelo-text-compact);
62
- line-height: var(--sigvelo-leading-normal);
61
+ font-size: var(--sigvelo-text-sm);
62
+ line-height: var(--sigvelo-text-sm-leading);
63
63
  color: var(--sigvelo-color-text-muted);
64
64
  margin-block-end: var(--sigvelo-spacing-3);
65
65
  }
@@ -25,8 +25,10 @@
25
25
  @import "./attachment-preview.css" layer(components);
26
26
  @import "./autocomplete.css" layer(components);
27
27
  @import "./avatar.css" layer(components);
28
+ @import "./app-icon.css" layer(components);
28
29
  @import "./badge.css" layer(components);
29
30
  @import "./button.css" layer(components);
31
+ @import "./action-guide.css" layer(components);
30
32
  @import "./card.css" layer(components);
31
33
  @import "./checkbox.css" layer(components);
32
34
  @import "./checkbox-group.css" layer(components);
@@ -52,6 +54,7 @@
52
54
  @import "./nanite-scene.css" layer(components);
53
55
  @import "./number-field.css" layer(components);
54
56
  @import "./popover.css" layer(components);
57
+ @import "./mcp-plugin-catalog.css" layer(components);
55
58
  @import "./mcp-server-picker.css" layer(components);
56
59
  @import "./mcp-connection-request.css" layer(components);
57
60
  @import "./preview-card.css" layer(components);
@@ -0,0 +1,296 @@
1
+ .mcp-plugin-catalog {
2
+ container: mcp-plugin-catalog / inline-size;
3
+ box-sizing: border-box;
4
+ inline-size: 100%;
5
+ max-inline-size: var(--sigvelo-measure-wide-block);
6
+ padding-inline: var(--sigvelo-spacing-4);
7
+ margin-inline: auto;
8
+ color: var(--sigvelo-color-text);
9
+ }
10
+
11
+ .mcp-plugin-catalog__header,
12
+ .mcp-plugin-catalog__heading-copy,
13
+ .mcp-plugin-catalog__installed,
14
+ .mcp-plugin-catalog__sections,
15
+ .mcp-plugin-catalog__section {
16
+ display: grid;
17
+ }
18
+
19
+ .mcp-plugin-catalog__header {
20
+ gap: var(--sigvelo-spacing-4);
21
+ margin-block-end: var(--sigvelo-spacing-6);
22
+ }
23
+
24
+ .mcp-plugin-catalog__heading-copy {
25
+ gap: var(--sigvelo-spacing-1);
26
+ }
27
+
28
+ .mcp-plugin-catalog__heading,
29
+ .mcp-plugin-catalog__description,
30
+ .mcp-plugin-catalog__section-heading,
31
+ .mcp-plugin-catalog__empty,
32
+ .mcp-plugin-details p {
33
+ margin: 0;
34
+ }
35
+
36
+ .mcp-plugin-catalog__heading {
37
+ font-size: var(--sigvelo-text-3xl);
38
+ font-weight: var(--sigvelo-font-weight-normal);
39
+ line-height: var(--sigvelo-text-3xl-leading);
40
+ letter-spacing: var(--sigvelo-tracking-normal);
41
+ }
42
+
43
+ .mcp-plugin-catalog__description {
44
+ max-inline-size: var(--sigvelo-measure-prose);
45
+ color: var(--sigvelo-color-text-muted);
46
+ font-size: var(--sigvelo-text-base);
47
+ line-height: var(--sigvelo-text-base-leading);
48
+ }
49
+
50
+ .mcp-plugin-catalog__search {
51
+ inline-size: 100%;
52
+ }
53
+
54
+ .mcp-plugin-catalog__installed {
55
+ gap: var(--sigvelo-spacing-2);
56
+ margin-block-end: var(--sigvelo-spacing-6);
57
+ }
58
+
59
+ .mcp-plugin-catalog__installed-list,
60
+ .mcp-plugin-catalog__list {
61
+ padding: 0;
62
+ margin: 0;
63
+ list-style: none;
64
+ }
65
+
66
+ .mcp-plugin-catalog__installed-list {
67
+ display: flex;
68
+ gap: var(--sigvelo-spacing-2);
69
+ overflow-x: auto;
70
+ }
71
+
72
+ .mcp-plugin-catalog__sections {
73
+ gap: var(--sigvelo-spacing-6);
74
+ }
75
+
76
+ .mcp-plugin-catalog__section {
77
+ gap: var(--sigvelo-spacing-2);
78
+ }
79
+
80
+ .mcp-plugin-catalog__section-heading {
81
+ color: var(--sigvelo-color-text);
82
+ font-size: var(--sigvelo-text-sm);
83
+ font-weight: var(--sigvelo-font-weight-semibold);
84
+ line-height: var(--sigvelo-text-sm-leading);
85
+ }
86
+
87
+ .mcp-plugin-catalog__list {
88
+ display: grid;
89
+ gap: var(--sigvelo-spacing-4) var(--sigvelo-spacing-2);
90
+ margin-inline: calc(-1 * var(--sigvelo-spacing-2));
91
+ }
92
+
93
+ .mcp-plugin-catalog__card {
94
+ display: grid;
95
+ grid-template-columns: minmax(0, 1fr) auto;
96
+ align-items: center;
97
+ gap: var(--sigvelo-spacing-2);
98
+ min-block-size: var(--sigvelo-spacing-14);
99
+ padding-inline-end: var(--sigvelo-spacing-2);
100
+ border-radius: var(--sigvelo-radius-lg);
101
+ transition: background-color var(--sigvelo-motion-duration-interaction)
102
+ var(--sigvelo-motion-ease-change);
103
+ }
104
+
105
+ .mcp-plugin-catalog__card:hover {
106
+ background-color: var(--sigvelo-color-neutral-bg-subtle);
107
+ }
108
+
109
+ .mcp-plugin-catalog__card .button:hover:not([data-disabled]) {
110
+ background-color: transparent;
111
+ }
112
+
113
+ .mcp-plugin-catalog__card-main {
114
+ display: grid;
115
+ grid-template-columns: var(--sigvelo-spacing-10) minmax(0, 1fr);
116
+ align-items: center;
117
+ justify-content: start;
118
+ gap: var(--sigvelo-spacing-3-5);
119
+ inline-size: 100%;
120
+ min-inline-size: 0;
121
+ padding-inline: var(--sigvelo-spacing-2);
122
+ text-align: start;
123
+ white-space: normal;
124
+ }
125
+
126
+ .mcp-plugin-catalog__card-copy {
127
+ display: grid;
128
+ min-inline-size: 0;
129
+ }
130
+
131
+ .mcp-plugin-catalog__card-name {
132
+ font-size: var(--sigvelo-text-sm);
133
+ font-weight: var(--sigvelo-font-weight-normal);
134
+ line-height: var(--sigvelo-text-compact-leading);
135
+ }
136
+
137
+ .mcp-plugin-catalog__card-description {
138
+ color: var(--sigvelo-color-text-muted);
139
+ font-size: var(--sigvelo-text-compact);
140
+ line-height: var(--sigvelo-text-compact-leading);
141
+ }
142
+
143
+ .mcp-plugin-catalog__empty {
144
+ padding-block: var(--sigvelo-spacing-8);
145
+ color: var(--sigvelo-color-text-muted);
146
+ font-size: var(--sigvelo-text-sm);
147
+ text-align: center;
148
+ }
149
+
150
+ .dialog__popup.mcp-plugin-details {
151
+ --sigvelo-recipe-surface-padding: 0;
152
+
153
+ display: block;
154
+ max-inline-size: 36.25rem;
155
+ overflow-block: auto;
156
+ overflow-inline: hidden;
157
+ overscroll-behavior: contain;
158
+ }
159
+
160
+ .mcp-plugin-details__hero {
161
+ position: relative;
162
+ isolation: isolate;
163
+ display: flex;
164
+ flex-direction: column;
165
+ align-items: center;
166
+ gap: var(--sigvelo-spacing-4);
167
+ min-block-size: 22.75rem;
168
+ padding-block-start: calc(var(--sigvelo-spacing-12) + var(--sigvelo-spacing-1));
169
+ overflow: hidden;
170
+ background:
171
+ radial-gradient(
172
+ ellipse 48% 135% at 0% 38%,
173
+ var(--sigvelo-color-warning-400) 0%,
174
+ transparent 74%
175
+ ),
176
+ radial-gradient(
177
+ ellipse 50% 85% at 48% -8%,
178
+ var(--sigvelo-color-primary-300) 0%,
179
+ transparent 78%
180
+ ),
181
+ radial-gradient(
182
+ ellipse 68% 78% at 42% 112%,
183
+ var(--sigvelo-color-primary-700) 0%,
184
+ transparent 72%
185
+ ),
186
+ linear-gradient(
187
+ 108deg,
188
+ var(--sigvelo-color-primary-600),
189
+ var(--sigvelo-color-primary-400) 70%,
190
+ var(--sigvelo-color-primary-500)
191
+ );
192
+ color: var(--sigvelo-color-primary-text-on-bg);
193
+ }
194
+
195
+ .mcp-plugin-details__hero > .dialog__close {
196
+ position: absolute;
197
+ inset-block-start: var(--sigvelo-spacing-2);
198
+ inset-inline-end: var(--sigvelo-spacing-2);
199
+ color: inherit;
200
+ }
201
+
202
+ .mcp-plugin-details__hero > .dialog__close:hover:not([data-disabled]) {
203
+ background-color: color-mix(in oklab, transparent, white 12%);
204
+ }
205
+
206
+ .mcp-plugin-details__title-copy {
207
+ display: flex;
208
+ flex-direction: column;
209
+ align-items: center;
210
+ text-align: center;
211
+ }
212
+
213
+ .mcp-plugin-details__identity {
214
+ display: flex;
215
+ align-items: center;
216
+ gap: var(--sigvelo-spacing-3-5);
217
+ }
218
+
219
+ .mcp-plugin-details__identity > .separator {
220
+ block-size: var(--sigvelo-spacing-8);
221
+ background-color: color-mix(in oklab, currentcolor, transparent 30%);
222
+ }
223
+
224
+ .mcp-plugin-details__title-copy {
225
+ gap: var(--sigvelo-spacing-2);
226
+ inline-size: 100%;
227
+ padding-inline: var(--sigvelo-spacing-5);
228
+ }
229
+
230
+ .mcp-plugin-details__title {
231
+ margin: 0;
232
+ color: inherit;
233
+ font-size: var(--sigvelo-text-2xl);
234
+ font-weight: var(--sigvelo-font-weight-semibold);
235
+ line-height: var(--sigvelo-text-2xl-leading);
236
+ }
237
+
238
+ .mcp-plugin-details__state {
239
+ color: inherit;
240
+ font-size: var(--sigvelo-text-xs);
241
+ line-height: var(--sigvelo-text-xs-leading);
242
+ opacity: 0.8;
243
+ }
244
+
245
+ .mcp-plugin-details__description {
246
+ display: -webkit-box;
247
+ max-inline-size: 33.75rem;
248
+ max-block-size: calc(5 * var(--sigvelo-text-sm-leading));
249
+ margin: 0;
250
+ overflow: hidden;
251
+ color: inherit;
252
+ font-size: var(--sigvelo-text-sm);
253
+ line-height: var(--sigvelo-text-sm-leading);
254
+ text-align: center;
255
+ -webkit-box-orient: vertical;
256
+ -webkit-line-clamp: 5;
257
+ }
258
+
259
+ .mcp-plugin-details__footer {
260
+ display: flex;
261
+ justify-content: center;
262
+ margin-block-start: auto;
263
+ padding-block: var(--sigvelo-spacing-4) var(--sigvelo-spacing-8);
264
+ }
265
+
266
+ .mcp-plugin-details__disclosure {
267
+ display: grid;
268
+ gap: var(--sigvelo-spacing-2-5);
269
+ padding: var(--sigvelo-spacing-4) var(--sigvelo-spacing-5);
270
+ color: var(--sigvelo-color-text-subtle);
271
+ font-size: var(--sigvelo-text-xs);
272
+ line-height: var(--sigvelo-leading-snug);
273
+ }
274
+
275
+ .mcp-plugin-details__disclosure strong {
276
+ color: var(--sigvelo-color-text);
277
+ font-weight: var(--sigvelo-font-weight-semibold);
278
+ }
279
+
280
+ @media (forced-colors: active) {
281
+ .mcp-plugin-details__hero {
282
+ background: Canvas;
283
+ color: CanvasText;
284
+ }
285
+ }
286
+
287
+ @container mcp-plugin-catalog (inline-size >= 36rem) {
288
+ .mcp-plugin-catalog__header {
289
+ grid-template-columns: minmax(0, 1fr) 16rem;
290
+ align-items: end;
291
+ }
292
+
293
+ .mcp-plugin-catalog__list {
294
+ grid-template-columns: repeat(2, minmax(0, 1fr));
295
+ }
296
+ }
@@ -74,28 +74,6 @@
74
74
  object-fit: contain;
75
75
  }
76
76
 
77
- .mcp-server-picker__avatar {
78
- inline-size: var(--sigvelo-control-icon-size-lg);
79
- block-size: var(--sigvelo-control-icon-size-lg);
80
- background-color: transparent;
81
- border-radius: var(--sigvelo-radius-sm);
82
- }
83
-
84
- .mcp-server-picker__avatar-image,
85
- .mcp-server-picker__avatar-fallback {
86
- border-radius: var(--sigvelo-radius-sm);
87
- }
88
-
89
- .mcp-server-picker__avatar-image {
90
- object-fit: contain;
91
- }
92
-
93
- .mcp-server-picker__avatar-fallback {
94
- font-size: var(--sigvelo-text-xs);
95
- font-weight: var(--sigvelo-font-weight-bold);
96
- line-height: var(--sigvelo-leading-none);
97
- }
98
-
99
77
  .mcp-server-picker__copy {
100
78
  display: flex;
101
79
  align-items: baseline;
@@ -195,10 +173,6 @@
195
173
  }
196
174
 
197
175
  @media (forced-colors: active) {
198
- .mcp-server-picker__avatar-fallback {
199
- border: var(--sigvelo-border-style) var(--sigvelo-border-width) ButtonText;
200
- }
201
-
202
176
  .mcp-server-picker__row-shell:has(.mcp-server-picker__row[data-highlighted]) {
203
177
  outline: 1px solid Highlight;
204
178
  }
@@ -24,7 +24,11 @@
24
24
  }
25
25
 
26
26
  .message-scroller__viewport[data-scrollable~="end"] {
27
- --sigvelo-scroll-fade-end: var(--message-scroller-fade-b-size, var(--message-scroller-fade-size));
27
+ --sigvelo-scroll-fade-end: var(--message-scroller-fade-size);
28
+ }
29
+
30
+ .message-scroller__viewport[data-scrollable~="start"] {
31
+ --sigvelo-scroll-fade-start: var(--message-scroller-fade-size);
28
32
  }
29
33
 
30
34
  .message-scroller__content {
@@ -45,6 +45,13 @@
45
45
  padding-inline: 0;
46
46
  }
47
47
 
48
+ /* Structured parts can opt into the transcript rail without teaching Message
49
+ which product feature they represent. The child still owns its own measure
50
+ and responsive layout. */
51
+ .message[data-from="assistant"] .message__content:has(> [data-message-layout="wide"]) {
52
+ inline-size: 100%;
53
+ }
54
+
48
55
  .message[data-from="system"] .message__content {
49
56
  background-color: transparent;
50
57
  color: var(--sigvelo-color-text-muted);
@@ -93,6 +93,30 @@
93
93
  min-block-size: var(--sigvelo-spacing-6);
94
94
  }
95
95
 
96
+ /* A supporting tray shares one material and overlap contract whether it sits
97
+ above the composer for queued work or below it for first-turn utilities. */
98
+ :where(.prompt-input__tray) {
99
+ display: flex;
100
+ align-items: center;
101
+ min-block-size: var(--sigvelo-control-height-xl);
102
+ min-inline-size: 0;
103
+ gap: var(--sigvelo-spacing-2);
104
+ margin-inline: var(--sigvelo-spacing-5);
105
+ padding: var(--sigvelo-spacing-1);
106
+ background-color: var(--sigvelo-color-neutral-bg-subtle);
107
+ color: var(--sigvelo-color-text-muted);
108
+ }
109
+
110
+ .prompt-input__tray[data-side="top"] {
111
+ margin-block-end: calc(-1 * var(--sigvelo-border-width));
112
+ border-radius: var(--sigvelo-radius-2xl) var(--sigvelo-radius-2xl) 0 0;
113
+ }
114
+
115
+ .prompt-input__tray[data-side="bottom"] {
116
+ margin-block-start: calc(-1 * var(--sigvelo-border-width));
117
+ border-radius: 0 0 var(--sigvelo-radius-2xl) var(--sigvelo-radius-2xl);
118
+ }
119
+
96
120
  .prompt-input__attachments {
97
121
  display: flex;
98
122
  flex-wrap: wrap;
@@ -122,8 +146,8 @@
122
146
 
123
147
  .prompt-input__attachment-zoom {
124
148
  display: block;
149
+ min-block-size: 0;
125
150
  padding: 0;
126
- border: none;
127
151
  background: none;
128
152
  cursor: zoom-in;
129
153
  }
@@ -140,18 +164,6 @@
140
164
  color: var(--sigvelo-color-text-muted);
141
165
  }
142
166
 
143
- .prompt-input__attachment-remove {
144
- display: inline-flex;
145
- align-items: center;
146
- justify-content: center;
147
- padding: var(--sigvelo-spacing-0-5);
148
- border: none;
149
- border-radius: var(--sigvelo-radius-sm);
150
- background: none;
151
- color: var(--sigvelo-color-text-muted);
152
- cursor: pointer;
153
- }
154
-
155
167
  .prompt-input__attachment[data-image] .prompt-input__attachment-remove {
156
168
  position: absolute;
157
169
  inset-block-start: var(--sigvelo-spacing-0-5);
@@ -159,7 +171,7 @@
159
171
  background-color: color-mix(in oklab, var(--sigvelo-color-surface), transparent 20%);
160
172
  }
161
173
 
162
- .prompt-input__attachment-remove:hover {
174
+ .prompt-input__attachment-remove:hover:not([data-disabled]) {
163
175
  color: var(--sigvelo-color-text);
164
176
  background-color: color-mix(in oklab, transparent, var(--sigvelo-color-text) 8%);
165
177
  }