@mcp-b/react-components 0.7.0 → 0.8.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 (75) hide show
  1. package/dist/AgentChat-403mckDG.d.ts +101 -0
  2. package/dist/BrowserLiveView-ZktFZiMD.d.ts +47 -0
  3. package/dist/BrowserReplay-6G-mnwcn.d.ts +40 -0
  4. package/dist/{CodeBlock-BK0sOAbV.js → CodeBlock-XNQOupQ3.js} +1 -1
  5. package/dist/{FileTree-BWQZ0FSi.js → FileTree-wMyZhhHO.js} +1 -1
  6. package/dist/ModelSelector-9G_-GooI.js +306 -0
  7. package/dist/ThinkChatActivity-CeHzk6-K.d.ts +73 -0
  8. package/dist/ThinkChatContext-BLAAb8J5.d.ts +28 -0
  9. package/dist/components/Activity.js +1 -1
  10. package/dist/components/AgentChat.d.ts +1 -100
  11. package/dist/components/AgentChat.js +12 -7
  12. package/dist/components/AgentConnection.d.ts +43 -2
  13. package/dist/components/AgentConnection.js +154 -3
  14. package/dist/components/Artifact.js +1 -1
  15. package/dist/components/BrowserLiveView.d.ts +1 -46
  16. package/dist/components/BrowserLiveView.js +1 -1
  17. package/dist/components/BrowserReplay.d.ts +1 -39
  18. package/dist/components/BrowserReplay.js +1 -1
  19. package/dist/components/ChainOfThought.d.ts +1 -1
  20. package/dist/components/ChainOfThought.js +1 -1
  21. package/dist/components/ChatGptSignInScreen.d.ts +38 -0
  22. package/dist/components/ChatGptSignInScreen.js +201 -0
  23. package/dist/components/CodeBlock.js +1 -1
  24. package/dist/components/Commit.js +1 -1
  25. package/dist/components/ContextMenu.js +1 -1
  26. package/dist/components/Conversation.js +1 -1
  27. package/dist/components/Dialog.js +1 -1
  28. package/dist/components/EnvironmentVariables.js +1 -1
  29. package/dist/components/FileTree.js +1 -1
  30. package/dist/components/McpServerPicker.js +7 -5
  31. package/dist/components/Menubar.js +1 -1
  32. package/dist/components/Message.js +1 -1
  33. package/dist/components/MessageScroller.js +2 -2
  34. package/dist/components/ModelSelector.js +1 -305
  35. package/dist/components/NavigationMenu.js +1 -1
  36. package/dist/components/PromptInput.js +6 -5
  37. package/dist/components/Queue.js +1 -1
  38. package/dist/components/Reasoning.js +1 -1
  39. package/dist/components/Select.js +1 -1
  40. package/dist/components/Sources.js +1 -1
  41. package/dist/components/Stepper.js +1 -1
  42. package/dist/components/Task.js +1 -1
  43. package/dist/components/Terminal.js +4 -3
  44. package/dist/components/TestResults.js +1 -1
  45. package/dist/components/ThinkChat.d.ts +15 -7
  46. package/dist/components/ThinkChat.js +1 -1
  47. package/dist/components/ThinkChatActivity.d.ts +2 -72
  48. package/dist/components/ThinkChatActivity.js +4 -3
  49. package/dist/components/ThinkChatContext.d.ts +1 -27
  50. package/dist/components/ThinkChatToolPanels.js +1 -1
  51. package/dist/components/ThinkChatToolParts.js +4 -4
  52. package/dist/components/ThinkExecutionWorkbench.d.ts +27 -0
  53. package/dist/components/ThinkExecutionWorkbench.js +450 -0
  54. package/dist/components/ThinkFullApp.d.ts +61 -0
  55. package/dist/components/ThinkFullApp.js +258 -0
  56. package/dist/components/ThinkThreadPicker.d.ts +88 -0
  57. package/dist/components/ThinkThreadPicker.js +282 -0
  58. package/dist/components/WebPreview.js +1 -1
  59. package/dist/components/WorkspaceExplorer.js +5 -4
  60. package/dist/components/icons.d.ts +2 -2
  61. package/dist/components/icons.js +2 -2
  62. package/dist/{copy-button-CB2MWcau.js → copy-button-C6JSKtFE.js} +1 -1
  63. package/dist/{icons-BYpJY6L2.d.ts → icons-CbjtbIJK.d.ts} +3 -1
  64. package/dist/{icons-BCNawx-T.js → icons-D2Q5n5C1.js} +37 -1
  65. package/dist/styles/agent-connection.css +33 -5
  66. package/dist/styles/chatgpt-sign-in-screen.css +224 -0
  67. package/dist/styles/code-block.css +3 -1
  68. package/dist/styles/index.css +3 -0
  69. package/dist/styles/message-scroller.css +24 -1
  70. package/dist/styles/prompt-input.css +1 -0
  71. package/dist/styles/think-full-app.css +731 -0
  72. package/dist/styles/think-thread-picker.css +449 -0
  73. package/dist/utils/mcp-server-catalog.d.ts +28 -3
  74. package/dist/utils/mcp-server-catalog.js +27 -1
  75. package/package.json +7 -8
@@ -1,4 +1,4 @@
1
- import { a as CheckIcon, l as CopyIcon } from "./icons-BCNawx-T.js";
1
+ import { a as CheckIcon, l as CopyIcon } from "./icons-D2Q5n5C1.js";
2
2
  import { Button } from "./components/Button.js";
3
3
  import { Tooltip, TooltipPopup, TooltipPortal, TooltipPositioner, TooltipTrigger } from "./components/Tooltip.js";
4
4
  import * as React from "react";
@@ -35,8 +35,10 @@ declare const ArrowUpIcon: (props: IconProps) => React.JSX.Element;
35
35
  declare const DownloadIcon: (props: IconProps) => React.JSX.Element;
36
36
  declare const RefreshIcon: (props: IconProps) => React.JSX.Element;
37
37
  declare const DotIcon: (props: IconProps) => React.JSX.Element;
38
+ declare const EllipsisIcon: (props: IconProps) => React.JSX.Element;
38
39
  declare const SpinnerIcon: (props: IconProps) => React.JSX.Element;
39
40
  declare const SearchIcon: (props: IconProps) => React.JSX.Element;
41
+ declare const SidebarIcon: (props: IconProps) => React.JSX.Element;
40
42
  declare const TerminalIcon: (props: IconProps) => React.JSX.Element;
41
43
  declare const LinkIcon: (props: IconProps) => React.JSX.Element;
42
44
  declare const WarningIcon: (props: IconProps) => React.JSX.Element;
@@ -46,4 +48,4 @@ declare const ImageIcon: (props: IconProps) => React.JSX.Element;
46
48
  declare const MonitorIcon: (props: IconProps) => React.JSX.Element;
47
49
  declare const MaximizeIcon: (props: IconProps) => React.JSX.Element;
48
50
  //#endregion
49
- export { SearchIcon as A, MonitorIcon as C, PlayIcon as D, PencilIcon as E, WrenchIcon as F, XIcon as I, SquareIcon as M, TerminalIcon as N, PlusIcon as O, WarningIcon as P, MinusIcon as S, PauseIcon as T, IconProps as _, CheckIcon as a, LinkIcon as b, ChevronRightIcon as c, DownloadIcon as d, EyeIcon as f, FolderOpenIcon as g, FolderIcon as h, ArrowUpIcon as i, SpinnerIcon as j, RefreshIcon as k, CopyIcon as l, FileIcon as m, ArrowLeftIcon as n, ChevronDownIcon as o, EyeOffIcon as p, ArrowRightIcon as r, ChevronLeftIcon as s, ArrowDownIcon as t, DotIcon as u, ImageIcon as v, PaperclipIcon as w, MaximizeIcon as x, InfoIcon as y };
51
+ export { RefreshIcon as A, MinusIcon as C, PencilIcon as D, PauseIcon as E, TerminalIcon as F, WarningIcon as I, WrenchIcon as L, SidebarIcon as M, SpinnerIcon as N, PlayIcon as O, SquareIcon as P, XIcon as R, MaximizeIcon as S, PaperclipIcon as T, FolderOpenIcon as _, CheckIcon as a, InfoIcon as b, ChevronRightIcon as c, DownloadIcon as d, EllipsisIcon as f, FolderIcon as g, FileIcon as h, ArrowUpIcon as i, SearchIcon as j, PlusIcon as k, CopyIcon as l, EyeOffIcon as m, ArrowLeftIcon as n, ChevronDownIcon as o, EyeIcon as p, ArrowRightIcon as r, ChevronLeftIcon as s, ArrowDownIcon as t, DotIcon as u, IconProps as v, MonitorIcon as w, LinkIcon as x, ImageIcon as y };
@@ -152,6 +152,32 @@ const DotIcon = (props) => /* @__PURE__ */ jsx(Icon, {
152
152
  stroke: "none"
153
153
  })
154
154
  });
155
+ const EllipsisIcon = (props) => /* @__PURE__ */ jsxs(Icon, {
156
+ ...props,
157
+ children: [
158
+ /* @__PURE__ */ jsx("circle", {
159
+ cx: "3.5",
160
+ cy: "8",
161
+ r: "0.75",
162
+ fill: "currentColor",
163
+ stroke: "none"
164
+ }),
165
+ /* @__PURE__ */ jsx("circle", {
166
+ cx: "8",
167
+ cy: "8",
168
+ r: "0.75",
169
+ fill: "currentColor",
170
+ stroke: "none"
171
+ }),
172
+ /* @__PURE__ */ jsx("circle", {
173
+ cx: "12.5",
174
+ cy: "8",
175
+ r: "0.75",
176
+ fill: "currentColor",
177
+ stroke: "none"
178
+ })
179
+ ]
180
+ });
155
181
  const SpinnerIcon = (props) => /* @__PURE__ */ jsx(Icon, {
156
182
  ...props,
157
183
  children: /* @__PURE__ */ jsx("path", { d: "M8 1.5A6.5 6.5 0 1 1 1.5 8" })
@@ -164,6 +190,16 @@ const SearchIcon = (props) => /* @__PURE__ */ jsxs(Icon, {
164
190
  r: "4.5"
165
191
  }), /* @__PURE__ */ jsx("path", { d: "M13.5 13.5 10.5 10.5" })]
166
192
  });
193
+ const SidebarIcon = (props) => /* @__PURE__ */ jsxs(Icon, {
194
+ ...props,
195
+ children: [/* @__PURE__ */ jsx("rect", {
196
+ x: "2.5",
197
+ y: "2.5",
198
+ width: "11",
199
+ height: "11",
200
+ rx: "1.5"
201
+ }), /* @__PURE__ */ jsx("path", { d: "M6 2.5v11" })]
202
+ });
167
203
  const TerminalIcon = (props) => /* @__PURE__ */ jsxs(Icon, {
168
204
  ...props,
169
205
  children: [
@@ -252,4 +288,4 @@ const MaximizeIcon = (props) => /* @__PURE__ */ jsxs(Icon, {
252
288
  ]
253
289
  });
254
290
  //#endregion
255
- export { SpinnerIcon as A, PaperclipIcon as C, PlusIcon as D, PlayIcon as E, XIcon as F, TerminalIcon as M, WarningIcon as N, RefreshIcon as O, WrenchIcon as P, MonitorIcon as S, PencilIcon as T, ImageIcon as _, CheckIcon as a, MaximizeIcon as b, ChevronRightIcon as c, DownloadIcon as d, EyeIcon as f, FolderOpenIcon as g, FolderIcon as h, ArrowUpIcon as i, SquareIcon as j, SearchIcon as k, CopyIcon as l, FileIcon as m, ArrowLeftIcon as n, ChevronDownIcon as o, EyeOffIcon as p, ArrowRightIcon as r, ChevronLeftIcon as s, ArrowDownIcon as t, DotIcon as u, InfoIcon as v, PauseIcon as w, MinusIcon as x, LinkIcon as y };
291
+ export { SearchIcon as A, MonitorIcon as C, PlayIcon as D, PencilIcon as E, WarningIcon as F, WrenchIcon as I, XIcon as L, SpinnerIcon as M, SquareIcon as N, PlusIcon as O, TerminalIcon as P, MinusIcon as S, PauseIcon as T, FolderOpenIcon as _, CheckIcon as a, LinkIcon as b, ChevronRightIcon as c, DownloadIcon as d, EllipsisIcon as f, FolderIcon as g, FileIcon as h, ArrowUpIcon as i, SidebarIcon as j, RefreshIcon as k, CopyIcon as l, EyeOffIcon as m, ArrowLeftIcon as n, ChevronDownIcon as o, EyeIcon as p, ArrowRightIcon as r, ChevronLeftIcon as s, ArrowDownIcon as t, DotIcon as u, ImageIcon as v, PaperclipIcon as w, MaximizeIcon as x, InfoIcon as y };
@@ -131,13 +131,8 @@
131
131
  inset 0 0 0 1px var(--sigvelo-color-primary-border-subtle);
132
132
  }
133
133
 
134
- .agent-connect .code-block {
135
- min-inline-size: 0;
136
- }
137
-
138
134
  .agent-connect .code-block__container {
139
135
  max-block-size: 13.5rem;
140
- overflow-y: auto;
141
136
  }
142
137
 
143
138
  .agent-connect .code-block__content,
@@ -297,6 +292,39 @@
297
292
  outline-offset: 2px;
298
293
  }
299
294
 
295
+ .agent-connect__mcp-form {
296
+ display: grid;
297
+ gap: 0.75rem;
298
+ min-inline-size: 0;
299
+ }
300
+
301
+ .agent-connect__mcp-form--row {
302
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, 10rem), 1fr));
303
+ align-items: end;
304
+ padding: 0.75rem;
305
+ background: var(--sigvelo-color-surface);
306
+ }
307
+
308
+ .agent-connect__mcp-form-actions {
309
+ display: flex;
310
+ flex-wrap: wrap;
311
+ gap: 0.5rem;
312
+ }
313
+
314
+ .agent-connect__mcp-form--row .agent-connect__mcp-form-actions {
315
+ align-self: end;
316
+ }
317
+
318
+ .agent-connect__mcp-form-status {
319
+ align-self: end;
320
+ min-inline-size: 0;
321
+ color: var(--sigvelo-color-text-muted);
322
+ font-size: var(--sigvelo-text-xs);
323
+ font-weight: var(--sigvelo-font-weight-semibold);
324
+ line-height: 1.25;
325
+ overflow-wrap: anywhere;
326
+ }
327
+
300
328
  .agent-connect-trigger {
301
329
  inline-size: 100%;
302
330
  }
@@ -0,0 +1,224 @@
1
+ .chatgpt-sign-in {
2
+ --chatgpt-sign-in-pointer-x: 50%;
3
+ --chatgpt-sign-in-pointer-y: 58%;
4
+
5
+ position: relative;
6
+ isolation: isolate;
7
+ overflow: hidden;
8
+ block-size: 100%;
9
+ min-inline-size: 17.5rem;
10
+ display: grid;
11
+ place-items: center;
12
+ padding: clamp(1.25rem, 5vw, 3rem);
13
+ background-color: var(--sigvelo-color-canvas);
14
+ background-image:
15
+ linear-gradient(
16
+ color-mix(in oklab, var(--sigvelo-color-neutral-border-subtle), transparent 42%) 1px,
17
+ transparent 1px
18
+ ),
19
+ linear-gradient(
20
+ 90deg,
21
+ color-mix(in oklab, var(--sigvelo-color-neutral-border-subtle), transparent 42%) 1px,
22
+ transparent 1px
23
+ );
24
+ background-size: 2rem 2rem;
25
+ color: var(--sigvelo-color-text);
26
+ font-family: var(--sigvelo-font-sans);
27
+ }
28
+
29
+ .chatgpt-sign-in::before {
30
+ content: "";
31
+ position: absolute;
32
+ z-index: 0;
33
+ inset: 0;
34
+ background:
35
+ radial-gradient(
36
+ circle at var(--chatgpt-sign-in-pointer-x) var(--chatgpt-sign-in-pointer-y),
37
+ color-mix(in oklab, var(--sigvelo-color-primary-bg), transparent 72%),
38
+ transparent 12rem
39
+ ),
40
+ radial-gradient(
41
+ circle at var(--chatgpt-sign-in-pointer-x) var(--chatgpt-sign-in-pointer-y),
42
+ color-mix(in oklab, var(--sigvelo-color-primary-bg-muted), transparent 86%),
43
+ transparent 18rem
44
+ );
45
+ opacity: 0;
46
+ pointer-events: none;
47
+ transition: opacity var(--sigvelo-duration-medium) var(--sigvelo-ease-standard);
48
+ }
49
+
50
+ .chatgpt-sign-in[data-pointer-active="true"]::before {
51
+ opacity: 1;
52
+ }
53
+
54
+ .chatgpt-sign-in__panel {
55
+ position: relative;
56
+ z-index: 1;
57
+ isolation: isolate;
58
+ display: grid;
59
+ gap: 1.25rem;
60
+ justify-items: center;
61
+ text-align: center;
62
+ }
63
+
64
+ .chatgpt-sign-in__brand {
65
+ display: grid;
66
+ gap: 0.375rem;
67
+ justify-items: center;
68
+ }
69
+
70
+ .chatgpt-sign-in__brand h1 {
71
+ margin: 0;
72
+ color: var(--sigvelo-color-text);
73
+ font-size: var(--sigvelo-text-2xl);
74
+ font-weight: var(--sigvelo-font-weight-bold);
75
+ letter-spacing: 0;
76
+ line-height: 1.1;
77
+ }
78
+
79
+ .chatgpt-sign-in__brand p {
80
+ display: inline-flex;
81
+ align-items: center;
82
+ gap: 0.375rem;
83
+ margin: 0;
84
+ color: var(--sigvelo-color-text-muted);
85
+ font-size: var(--sigvelo-text-sm);
86
+ font-weight: var(--sigvelo-font-weight-semibold);
87
+ line-height: 1.25;
88
+ }
89
+
90
+ .chatgpt-sign-in__brand-mark,
91
+ .chatgpt-sign-in__logo {
92
+ display: inline-flex;
93
+ }
94
+
95
+ .chatgpt-sign-in__brand-mark :where(img, svg) {
96
+ inline-size: 1.35rem;
97
+ block-size: 1.35rem;
98
+ filter: drop-shadow(
99
+ 0 0.25rem 0.5rem color-mix(in oklab, var(--sigvelo-color-primary-bg), transparent 72%)
100
+ );
101
+ }
102
+
103
+ .chatgpt-sign-in__button {
104
+ --chatgpt-sign-in-button-x: 50%;
105
+ --chatgpt-sign-in-button-y: 50%;
106
+
107
+ position: relative;
108
+ isolation: isolate;
109
+ overflow: hidden;
110
+ min-inline-size: min(100%, 16.75rem);
111
+ box-shadow:
112
+ inset 0 0 0 1px color-mix(in oklab, var(--sigvelo-color-primary-text-on-bg), transparent 84%),
113
+ 0 0.75rem 1.5rem color-mix(in oklab, var(--sigvelo-color-primary-bg), transparent 78%);
114
+ translate: 0;
115
+ scale: 1;
116
+ transition:
117
+ background-color var(--sigvelo-duration-fast) var(--sigvelo-ease-standard),
118
+ box-shadow var(--sigvelo-duration-fast) var(--sigvelo-ease-standard),
119
+ filter var(--sigvelo-duration-fast) var(--sigvelo-ease-standard),
120
+ scale var(--sigvelo-duration-fast) var(--sigvelo-ease-standard),
121
+ translate var(--sigvelo-duration-fast) var(--sigvelo-ease-standard);
122
+ }
123
+
124
+ .chatgpt-sign-in__button::before {
125
+ content: "";
126
+ position: absolute;
127
+ z-index: 0;
128
+ inset: 0;
129
+ background: radial-gradient(
130
+ circle at var(--chatgpt-sign-in-button-x) var(--chatgpt-sign-in-button-y),
131
+ color-mix(in oklab, var(--sigvelo-color-primary-text-on-bg), transparent 70%),
132
+ transparent 42%
133
+ );
134
+ opacity: 0;
135
+ pointer-events: none;
136
+ transition: opacity var(--sigvelo-duration-fast) var(--sigvelo-ease-standard);
137
+ }
138
+
139
+ .chatgpt-sign-in__button::after {
140
+ content: "";
141
+ position: absolute;
142
+ z-index: 0;
143
+ inset: 1px;
144
+ border-radius: inherit;
145
+ background: radial-gradient(
146
+ circle at var(--chatgpt-sign-in-button-x) var(--chatgpt-sign-in-button-y),
147
+ color-mix(in oklab, var(--sigvelo-color-primary-text-on-bg), transparent 88%),
148
+ transparent 55%
149
+ );
150
+ opacity: 0.45;
151
+ pointer-events: none;
152
+ }
153
+
154
+ .chatgpt-sign-in__button:hover:not([data-disabled]) {
155
+ box-shadow:
156
+ inset 0 0 0 1px color-mix(in oklab, var(--sigvelo-color-primary-text-on-bg), transparent 76%),
157
+ 0 0.9rem 1.9rem color-mix(in oklab, var(--sigvelo-color-primary-bg), transparent 72%);
158
+ translate: 0 -0.0625rem;
159
+ }
160
+
161
+ .chatgpt-sign-in__button:hover:not([data-disabled])::before {
162
+ opacity: 1;
163
+ }
164
+
165
+ .chatgpt-sign-in__button:active:not([data-disabled]) {
166
+ translate: 0 0.0625rem;
167
+ scale: 0.99;
168
+ }
169
+
170
+ .chatgpt-sign-in__button-icon,
171
+ .chatgpt-sign-in__button-label {
172
+ position: relative;
173
+ z-index: 1;
174
+ }
175
+
176
+ .chatgpt-sign-in__button-icon {
177
+ display: inline-flex;
178
+ rotate: 0deg;
179
+ scale: 1;
180
+ transition:
181
+ rotate var(--sigvelo-duration-fast) var(--sigvelo-ease-standard),
182
+ scale var(--sigvelo-duration-fast) var(--sigvelo-ease-standard);
183
+ }
184
+
185
+ .chatgpt-sign-in__button:hover:not([data-disabled]) .chatgpt-sign-in__button-icon {
186
+ rotate: -4deg;
187
+ scale: 1.06;
188
+ }
189
+
190
+ .chatgpt-sign-in__logo {
191
+ color: inherit;
192
+ }
193
+
194
+ @media (prefers-reduced-motion: reduce) {
195
+ .chatgpt-sign-in::before,
196
+ .chatgpt-sign-in__button,
197
+ .chatgpt-sign-in__button::before,
198
+ .chatgpt-sign-in__button-icon {
199
+ transition: none;
200
+ }
201
+ }
202
+
203
+ @media (hover: none), (pointer: coarse) {
204
+ .chatgpt-sign-in::before,
205
+ .chatgpt-sign-in__button::before,
206
+ .chatgpt-sign-in__button::after {
207
+ display: none;
208
+ }
209
+ }
210
+
211
+ @media (forced-colors: active) {
212
+ .chatgpt-sign-in::before,
213
+ .chatgpt-sign-in__button::before,
214
+ .chatgpt-sign-in__button::after {
215
+ display: none;
216
+ }
217
+
218
+ .chatgpt-sign-in__button {
219
+ background-image: none;
220
+ box-shadow: none;
221
+ outline: 1px solid ButtonText;
222
+ outline-offset: 2px;
223
+ }
224
+ }
@@ -2,6 +2,7 @@
2
2
  display: flex;
3
3
  flex-direction: column;
4
4
  width: 100%;
5
+ min-inline-size: 0;
5
6
  font-family: var(--sigvelo-font-sans);
6
7
  /* Fill-based containment: no perimeter border */
7
8
  background-color: var(--sigvelo-color-neutral-bg-subtle);
@@ -47,8 +48,9 @@
47
48
 
48
49
  .code-block__container {
49
50
  position: relative;
51
+ min-inline-size: 0;
50
52
  overflow-x: auto;
51
- overflow-y: clip;
53
+ overflow-y: auto;
52
54
  }
53
55
 
54
56
  .code-block__content {
@@ -72,6 +72,7 @@
72
72
  @import "./file-tree.css" layer(components);
73
73
  @import "./message.css" layer(components);
74
74
  @import "./model-selector.css" layer(components);
75
+ @import "./chatgpt-sign-in-screen.css" layer(components);
75
76
  @import "./prompt-input.css" layer(components);
76
77
  @import "./queue.css" layer(components);
77
78
  @import "./reasoning.css" layer(components);
@@ -79,6 +80,8 @@
79
80
  @import "./task.css" layer(components);
80
81
  @import "./terminal.css" layer(components);
81
82
  @import "./test-results.css" layer(components);
83
+ @import "./think-full-app.css" layer(components);
84
+ @import "./think-thread-picker.css" layer(components);
82
85
  @import "./web-preview.css" layer(components);
83
86
  @import "./workspace-explorer.css" layer(components);
84
87
 
@@ -11,6 +11,9 @@
11
11
  }
12
12
 
13
13
  .message-scroller__viewport {
14
+ --message-scroller-fade-size: min(12%, 2.5rem);
15
+ --message-scroller-fade-t: 0px;
16
+ --message-scroller-fade-b: 0px;
14
17
  width: 100%;
15
18
  height: 100%;
16
19
  min-width: 0;
@@ -20,6 +23,26 @@
20
23
  overscroll-behavior: contain;
21
24
  scrollbar-gutter: stable;
22
25
  contain: content;
26
+ -webkit-mask-image: linear-gradient(
27
+ to bottom,
28
+ transparent 0,
29
+ #000 var(--message-scroller-fade-t),
30
+ #000 calc(100% - var(--message-scroller-fade-b)),
31
+ transparent 100%
32
+ );
33
+ mask-image: linear-gradient(
34
+ to bottom,
35
+ transparent 0,
36
+ #000 var(--message-scroller-fade-t),
37
+ #000 calc(100% - var(--message-scroller-fade-b)),
38
+ transparent 100%
39
+ );
40
+ -webkit-mask-repeat: no-repeat;
41
+ mask-repeat: no-repeat;
42
+ }
43
+
44
+ .message-scroller__viewport[data-scrollable~="end"] {
45
+ --message-scroller-fade-b: var(--message-scroller-fade-b-size, var(--message-scroller-fade-size));
23
46
  }
24
47
 
25
48
  .message-scroller__content {
@@ -40,8 +63,8 @@
40
63
  inset-block-end: 1rem;
41
64
  z-index: 1;
42
65
  translate: -50% 0;
66
+ border-radius: 999rem;
43
67
  box-shadow: var(--sigvelo-shadow-sm);
44
- background-color: var(--sigvelo-color-surface);
45
68
  transition:
46
69
  opacity var(--sigvelo-duration-fast) var(--sigvelo-ease-standard),
47
70
  scale var(--sigvelo-duration-fast) var(--sigvelo-ease-standard),
@@ -205,6 +205,7 @@
205
205
 
206
206
  .prompt-input__submit {
207
207
  flex-shrink: 0;
208
+ border-radius: 999rem;
208
209
  }
209
210
 
210
211
  .prompt-input__submit-spinner {