@mcp-b/react-components 0.2.2 → 0.3.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 (51) hide show
  1. package/dist/{CodeBlock-BrCoypnc.js → CodeBlock-C2Xjxu9M.js} +1 -1
  2. package/dist/FileTree-D0c9Yj9U.js +310 -0
  3. package/dist/PromptInput-Dzn-fOPc.d.ts +444 -0
  4. package/dist/components/Activity.js +1 -1
  5. package/dist/components/AgentChat.d.ts +19 -9
  6. package/dist/components/AgentChat.js +27 -24
  7. package/dist/components/AgentConnection.js +2 -2
  8. package/dist/components/Artifact.js +1 -1
  9. package/dist/components/BrowserLiveView.d.ts +47 -0
  10. package/dist/components/BrowserLiveView.js +135 -0
  11. package/dist/components/BrowserReplay.d.ts +40 -0
  12. package/dist/components/BrowserReplay.js +187 -0
  13. package/dist/components/ChainOfThought.d.ts +1 -1
  14. package/dist/components/ChainOfThought.js +1 -1
  15. package/dist/components/CodeBlock.js +1 -1
  16. package/dist/components/Commit.js +1 -1
  17. package/dist/components/ContextMenu.js +1 -1
  18. package/dist/components/Conversation.js +1 -1
  19. package/dist/components/Dialog.js +1 -1
  20. package/dist/components/EnvironmentVariables.js +1 -1
  21. package/dist/components/FileTree.js +1 -309
  22. package/dist/components/Menubar.js +1 -1
  23. package/dist/components/Message.d.ts +2 -1
  24. package/dist/components/Message.js +1 -1
  25. package/dist/components/ModelSelector.js +1 -1
  26. package/dist/components/NavigationMenu.js +1 -1
  27. package/dist/components/PricingPage.js +1 -1
  28. package/dist/components/PromptInput.d.ts +2 -399
  29. package/dist/components/PromptInput.js +177 -2
  30. package/dist/components/Queue.js +1 -1
  31. package/dist/components/Reasoning.js +1 -1
  32. package/dist/components/Select.js +1 -1
  33. package/dist/components/Sources.js +1 -1
  34. package/dist/components/Stepper.js +1 -1
  35. package/dist/components/Task.js +1 -1
  36. package/dist/components/Terminal.js +2 -2
  37. package/dist/components/TestResults.js +1 -1
  38. package/dist/components/ThinkChat.d.ts +186 -0
  39. package/dist/components/ThinkChat.js +730 -0
  40. package/dist/components/Tool.d.ts +32 -28
  41. package/dist/components/Tool.js +29 -16
  42. package/dist/components/WebPreview.js +1 -1
  43. package/dist/components/WorkspaceExplorer.d.ts +102 -0
  44. package/dist/components/WorkspaceExplorer.js +352 -0
  45. package/dist/components/icons.d.ts +2 -2
  46. package/dist/components/icons.js +2 -2
  47. package/dist/{copy-button-DAPlB8Z0.js → copy-button-Dd6DEhOm.js} +1 -1
  48. package/dist/{icons-Bf7JMKk-.js → icons-DQC4Zw5R.js} +5 -1
  49. package/dist/{icons-BklFyZbx.d.ts → icons-ctdVxng0.d.ts} +2 -1
  50. package/dist/styles/prompt-input.css +149 -0
  51. package/package.json +26 -3
@@ -1,2 +1,2 @@
1
- import { A as SpinnerIcon, C as MinusIcon, D as PlusIcon, E as PlayIcon, F as XIcon, M as TerminalIcon, N as WarningIcon, O as RefreshIcon, P as WrenchIcon, S as MaximizeIcon, T as PauseIcon, _ as FolderOpenIcon, a as BrainIcon, b as InfoIcon, c as ChevronLeftIcon, d as DotIcon, f as DownloadIcon, g as FolderIcon, h as FileIcon, i as ArrowUpIcon, j as SquareIcon, k as SearchIcon, l as ChevronRightIcon, m as EyeOffIcon, n as ArrowLeftIcon, o as CheckIcon, p as EyeIcon, r as ArrowRightIcon, s as ChevronDownIcon, t as ArrowDownIcon, u as CopyIcon, v as IconProps, w as MonitorIcon, x as LinkIcon, y as ImageIcon } from "../icons-BklFyZbx.js";
2
- export { ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowUpIcon, BrainIcon, CheckIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, CopyIcon, DotIcon, DownloadIcon, EyeIcon, EyeOffIcon, FileIcon, FolderIcon, FolderOpenIcon, IconProps, ImageIcon, InfoIcon, LinkIcon, MaximizeIcon, MinusIcon, MonitorIcon, PauseIcon, PlayIcon, PlusIcon, RefreshIcon, SearchIcon, SpinnerIcon, SquareIcon, TerminalIcon, WarningIcon, WrenchIcon, XIcon };
1
+ import { A as SearchIcon, C as MinusIcon, D as PlayIcon, E as PencilIcon, F as WrenchIcon, I as XIcon, M as SquareIcon, N as TerminalIcon, O as PlusIcon, P as WarningIcon, S as MaximizeIcon, T as PauseIcon, _ as FolderOpenIcon, a as BrainIcon, b as InfoIcon, c as ChevronLeftIcon, d as DotIcon, f as DownloadIcon, g as FolderIcon, h as FileIcon, i as ArrowUpIcon, j as SpinnerIcon, k as RefreshIcon, l as ChevronRightIcon, m as EyeOffIcon, n as ArrowLeftIcon, o as CheckIcon, p as EyeIcon, r as ArrowRightIcon, s as ChevronDownIcon, t as ArrowDownIcon, u as CopyIcon, v as IconProps, w as MonitorIcon, x as LinkIcon, y as ImageIcon } from "../icons-ctdVxng0.js";
2
+ export { ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowUpIcon, BrainIcon, CheckIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, CopyIcon, DotIcon, DownloadIcon, EyeIcon, EyeOffIcon, FileIcon, FolderIcon, FolderOpenIcon, IconProps, ImageIcon, InfoIcon, LinkIcon, MaximizeIcon, MinusIcon, MonitorIcon, PauseIcon, PencilIcon, PlayIcon, PlusIcon, RefreshIcon, SearchIcon, SpinnerIcon, SquareIcon, TerminalIcon, WarningIcon, WrenchIcon, XIcon };
@@ -1,2 +1,2 @@
1
- import { A as SquareIcon, C as MonitorIcon, D as RefreshIcon, E as PlusIcon, M as WarningIcon, N as WrenchIcon, O as SearchIcon, P as XIcon, S as MinusIcon, T as PlayIcon, _ as FolderOpenIcon, a as BrainIcon, b as LinkIcon, c as ChevronLeftIcon, d as DotIcon, f as DownloadIcon, g as FolderIcon, h as FileIcon, i as ArrowUpIcon, j as TerminalIcon, k as SpinnerIcon, l as ChevronRightIcon, m as EyeOffIcon, n as ArrowLeftIcon, o as CheckIcon, p as EyeIcon, r as ArrowRightIcon, s as ChevronDownIcon, t as ArrowDownIcon, u as CopyIcon, v as ImageIcon, w as PauseIcon, x as MaximizeIcon, y as InfoIcon } from "../icons-Bf7JMKk-.js";
2
- export { ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowUpIcon, BrainIcon, CheckIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, CopyIcon, DotIcon, DownloadIcon, EyeIcon, EyeOffIcon, FileIcon, FolderIcon, FolderOpenIcon, ImageIcon, InfoIcon, LinkIcon, MaximizeIcon, MinusIcon, MonitorIcon, PauseIcon, PlayIcon, PlusIcon, RefreshIcon, SearchIcon, SpinnerIcon, SquareIcon, TerminalIcon, WarningIcon, WrenchIcon, XIcon };
1
+ import { A as SpinnerIcon, C as MonitorIcon, D as PlusIcon, E as PlayIcon, F as XIcon, M as TerminalIcon, N as WarningIcon, O as RefreshIcon, P as WrenchIcon, S as MinusIcon, T as PencilIcon, _ as FolderOpenIcon, a as BrainIcon, b as LinkIcon, c as ChevronLeftIcon, d as DotIcon, f as DownloadIcon, g as FolderIcon, h as FileIcon, i as ArrowUpIcon, j as SquareIcon, k as SearchIcon, l as ChevronRightIcon, m as EyeOffIcon, n as ArrowLeftIcon, o as CheckIcon, p as EyeIcon, r as ArrowRightIcon, s as ChevronDownIcon, t as ArrowDownIcon, u as CopyIcon, v as ImageIcon, w as PauseIcon, x as MaximizeIcon, y as InfoIcon } from "../icons-DQC4Zw5R.js";
2
+ export { ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowUpIcon, BrainIcon, CheckIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, CopyIcon, DotIcon, DownloadIcon, EyeIcon, EyeOffIcon, FileIcon, FolderIcon, FolderOpenIcon, ImageIcon, InfoIcon, LinkIcon, MaximizeIcon, MinusIcon, MonitorIcon, PauseIcon, PencilIcon, PlayIcon, PlusIcon, RefreshIcon, SearchIcon, SpinnerIcon, SquareIcon, TerminalIcon, WarningIcon, WrenchIcon, XIcon };
@@ -1,4 +1,4 @@
1
- import { o as CheckIcon, u as CopyIcon } from "./icons-Bf7JMKk-.js";
1
+ import { o as CheckIcon, u as CopyIcon } from "./icons-DQC4Zw5R.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";
@@ -51,6 +51,10 @@ const XIcon = (props) => /* @__PURE__ */ jsx(Icon, {
51
51
  ...props,
52
52
  children: /* @__PURE__ */ jsx("path", { d: "M4 4L12 12M12 4L4 12" })
53
53
  });
54
+ const PencilIcon = (props) => /* @__PURE__ */ jsx(Icon, {
55
+ ...props,
56
+ children: /* @__PURE__ */ jsx("path", { d: "M11.1 2.6a1.4 1.4 0 0 1 2 2L5.5 12.2l-2.8.8.8-2.8z" })
57
+ });
54
58
  const CopyIcon = (props) => /* @__PURE__ */ jsxs(Icon, {
55
59
  ...props,
56
60
  children: [/* @__PURE__ */ jsx("rect", {
@@ -258,4 +262,4 @@ const MaximizeIcon = (props) => /* @__PURE__ */ jsxs(Icon, {
258
262
  ]
259
263
  });
260
264
  //#endregion
261
- export { SquareIcon as A, MonitorIcon as C, RefreshIcon as D, PlusIcon as E, WarningIcon as M, WrenchIcon as N, SearchIcon as O, XIcon as P, MinusIcon as S, PlayIcon as T, FolderOpenIcon as _, BrainIcon as a, LinkIcon as b, ChevronLeftIcon as c, DotIcon as d, DownloadIcon as f, FolderIcon as g, FileIcon as h, ArrowUpIcon as i, TerminalIcon as j, SpinnerIcon as k, ChevronRightIcon as l, EyeOffIcon as m, ArrowLeftIcon as n, CheckIcon as o, EyeIcon as p, ArrowRightIcon as r, ChevronDownIcon as s, ArrowDownIcon as t, CopyIcon as u, ImageIcon as v, PauseIcon as w, MaximizeIcon as x, InfoIcon as y };
265
+ export { SpinnerIcon as A, MonitorIcon as C, PlusIcon as D, PlayIcon as E, XIcon as F, TerminalIcon as M, WarningIcon as N, RefreshIcon as O, WrenchIcon as P, MinusIcon as S, PencilIcon as T, FolderOpenIcon as _, BrainIcon as a, LinkIcon as b, ChevronLeftIcon as c, DotIcon as d, DownloadIcon as f, FolderIcon as g, FileIcon as h, ArrowUpIcon as i, SquareIcon as j, SearchIcon as k, ChevronRightIcon as l, EyeOffIcon as m, ArrowLeftIcon as n, CheckIcon as o, EyeIcon as p, ArrowRightIcon as r, ChevronDownIcon as s, ArrowDownIcon as t, CopyIcon as u, ImageIcon as v, PauseIcon as w, MaximizeIcon as x, InfoIcon as y };
@@ -16,6 +16,7 @@ declare const ChevronLeftIcon: (props: IconProps) => React.JSX.Element;
16
16
  declare const BrainIcon: (props: IconProps) => React.JSX.Element;
17
17
  declare const CheckIcon: (props: IconProps) => React.JSX.Element;
18
18
  declare const XIcon: (props: IconProps) => React.JSX.Element;
19
+ declare const PencilIcon: (props: IconProps) => React.JSX.Element;
19
20
  declare const CopyIcon: (props: IconProps) => React.JSX.Element;
20
21
  declare const EyeIcon: (props: IconProps) => React.JSX.Element;
21
22
  declare const EyeOffIcon: (props: IconProps) => React.JSX.Element;
@@ -45,4 +46,4 @@ declare const ImageIcon: (props: IconProps) => React.JSX.Element;
45
46
  declare const MonitorIcon: (props: IconProps) => React.JSX.Element;
46
47
  declare const MaximizeIcon: (props: IconProps) => React.JSX.Element;
47
48
  //#endregion
48
- export { SpinnerIcon as A, MinusIcon as C, PlusIcon as D, PlayIcon as E, XIcon as F, TerminalIcon as M, WarningIcon as N, RefreshIcon as O, WrenchIcon as P, MaximizeIcon as S, PauseIcon as T, FolderOpenIcon as _, BrainIcon as a, InfoIcon as b, ChevronLeftIcon as c, DotIcon as d, DownloadIcon as f, FolderIcon as g, FileIcon as h, ArrowUpIcon as i, SquareIcon as j, SearchIcon as k, ChevronRightIcon as l, EyeOffIcon as m, ArrowLeftIcon as n, CheckIcon as o, EyeIcon as p, ArrowRightIcon as r, ChevronDownIcon as s, ArrowDownIcon as t, CopyIcon as u, IconProps as v, MonitorIcon as w, LinkIcon as x, ImageIcon as y };
49
+ export { SearchIcon as A, MinusIcon 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, MaximizeIcon as S, PauseIcon as T, FolderOpenIcon as _, BrainIcon as a, InfoIcon as b, ChevronLeftIcon as c, DotIcon as d, DownloadIcon as f, FolderIcon as g, FileIcon as h, ArrowUpIcon as i, SpinnerIcon as j, RefreshIcon as k, ChevronRightIcon as l, EyeOffIcon as m, ArrowLeftIcon as n, CheckIcon as o, EyeIcon as p, ArrowRightIcon as r, ChevronDownIcon as s, ArrowDownIcon as t, CopyIcon as u, IconProps as v, MonitorIcon as w, LinkIcon as x, ImageIcon as y };
@@ -177,6 +177,155 @@
177
177
  flex-direction: column;
178
178
  }
179
179
 
180
+ /* Approval state: the composer becomes the confirmation */
181
+ .prompt-input__approval {
182
+ display: flex;
183
+ flex-direction: column;
184
+ gap: 0.5rem;
185
+ font-size: 0.875rem;
186
+ }
187
+
188
+ .prompt-input__approval-question {
189
+ display: flex;
190
+ align-items: baseline;
191
+ gap: 0.5rem;
192
+ line-height: 1.4;
193
+ }
194
+
195
+ .prompt-input__approval-question code {
196
+ font-family: var(--sigvelo-font-mono);
197
+ font-size: 0.8125em;
198
+ }
199
+
200
+ .prompt-input__approval-count {
201
+ margin-inline-start: auto;
202
+ flex-shrink: 0;
203
+ color: var(--sigvelo-color-text-muted);
204
+ font-size: 0.75rem;
205
+ }
206
+
207
+ .prompt-input__approval-preview {
208
+ max-height: 6rem;
209
+ padding-block: 0.375rem;
210
+ padding-inline: 0.625rem;
211
+ overflow: auto;
212
+ border: var(--sigvelo-border-style) var(--sigvelo-border-width)
213
+ var(--sigvelo-color-neutral-border-subtle);
214
+ border-radius: var(--sigvelo-radius-md);
215
+ color: var(--sigvelo-color-text-muted);
216
+ font-family: var(--sigvelo-font-mono);
217
+ font-size: 0.75rem;
218
+ line-height: 1.5;
219
+ }
220
+
221
+ .prompt-input__approval-preview-key {
222
+ color: var(--sigvelo-color-text);
223
+ }
224
+
225
+ .prompt-input__approval-preview-key::after {
226
+ content: ":";
227
+ }
228
+
229
+ .prompt-input__approval-options {
230
+ display: flex;
231
+ flex-direction: column;
232
+ gap: 0.125rem;
233
+ }
234
+
235
+ .prompt-input__approval-option {
236
+ display: flex;
237
+ align-items: center;
238
+ gap: 0.5rem;
239
+ width: 100%;
240
+ padding-block: 0.3125rem;
241
+ padding-inline: 0.5rem;
242
+ border: none;
243
+ border-radius: var(--sigvelo-radius-md);
244
+ background: transparent;
245
+ color: var(--sigvelo-color-text);
246
+ font: inherit;
247
+ text-align: start;
248
+ cursor: pointer;
249
+ }
250
+
251
+ .prompt-input__approval-option[data-selected] {
252
+ background-color: color-mix(in oklab, var(--sigvelo-color-text), transparent 92%);
253
+ }
254
+
255
+ .prompt-input__approval-option:disabled {
256
+ cursor: not-allowed;
257
+ opacity: 0.6;
258
+ }
259
+
260
+ .prompt-input__approval-key {
261
+ display: inline-flex;
262
+ align-items: center;
263
+ justify-content: center;
264
+ flex-shrink: 0;
265
+ inline-size: 1.125rem;
266
+ block-size: 1.125rem;
267
+ border: var(--sigvelo-border-style) var(--sigvelo-border-width)
268
+ var(--sigvelo-color-neutral-border-subtle);
269
+ border-radius: var(--sigvelo-radius-full);
270
+ color: var(--sigvelo-color-text-muted);
271
+ font-size: 0.6875rem;
272
+ }
273
+
274
+ .prompt-input__approval-option[data-selected] .prompt-input__approval-key {
275
+ border-color: var(--sigvelo-color-text);
276
+ background-color: var(--sigvelo-color-text);
277
+ color: var(--sigvelo-color-surface);
278
+ }
279
+
280
+ .prompt-input__approval-arrows {
281
+ margin-inline-start: auto;
282
+ color: var(--sigvelo-color-text-muted);
283
+ font-size: 0.75rem;
284
+ visibility: hidden;
285
+ }
286
+
287
+ .prompt-input__approval-option[data-selected] .prompt-input__approval-arrows {
288
+ visibility: visible;
289
+ }
290
+
291
+ .prompt-input__approval-deny {
292
+ cursor: text;
293
+ }
294
+
295
+ .prompt-input__approval-reason {
296
+ flex: 1;
297
+ min-width: 0;
298
+ padding: 0;
299
+ border: none;
300
+ background: transparent;
301
+ color: var(--sigvelo-color-text);
302
+ font: inherit;
303
+ }
304
+
305
+ .prompt-input__approval-reason::placeholder {
306
+ color: var(--sigvelo-color-text-muted);
307
+ }
308
+
309
+ .prompt-input__approval-reason:focus {
310
+ outline: none;
311
+ }
312
+
313
+ .prompt-input__approval-skip {
314
+ flex-shrink: 0;
315
+ color: var(--sigvelo-color-text-muted);
316
+ }
317
+
318
+ .prompt-input__approval-submit {
319
+ flex-shrink: 0;
320
+ gap: 0.375rem;
321
+ }
322
+
323
+ .prompt-input__approval-kbd {
324
+ font-family: inherit;
325
+ font-size: 0.75em;
326
+ opacity: 0.75;
327
+ }
328
+
180
329
  @keyframes prompt-input-spin {
181
330
  from {
182
331
  transform: rotate(0deg);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@mcp-b/react-components",
3
- "version": "0.2.2",
4
- "description": "MCP-B React components built on Base UI and shared design tokens.",
3
+ "version": "0.3.0",
4
+ "description": "MCP-B React components built on Base UI and shared design tokens, including Cloudflare Think chat primitives.",
5
5
  "homepage": "https://design-system.sigvelo.com",
6
6
  "bugs": {
7
7
  "url": "https://github.com/WebMCP-org/design-system/issues"
@@ -40,6 +40,8 @@
40
40
  },
41
41
  "dependencies": {
42
42
  "@base-ui/react": "~1.6.0",
43
+ "@cloudflare/codemode": "^0.4.2",
44
+ "@rrweb/replay": "^2.1.0",
43
45
  "@streamdown/cjk": "^1.0.3",
44
46
  "@streamdown/code": "^1.1.1",
45
47
  "@streamdown/math": "^1.0.2",
@@ -47,9 +49,13 @@
47
49
  "anser": "^2.3.5",
48
50
  "shiki": "^3.23.0",
49
51
  "streamdown": "^2.5.0",
50
- "@mcp-b/design-tokens": "0.2.2"
52
+ "@mcp-b/design-tokens": "0.3.0"
51
53
  },
52
54
  "devDependencies": {
55
+ "@ai-sdk/react": "^3.0.194",
56
+ "@cloudflare/shell": "^0.4.1",
57
+ "@cloudflare/think": "^0.12.1",
58
+ "@cloudflare/workers-types": "^4.20260630.1",
53
59
  "@storybook/addon-a11y": "^10.4.6",
54
60
  "@storybook/addon-docs": "^10.4.6",
55
61
  "@storybook/addon-mcp": "^0.6.0",
@@ -62,6 +68,7 @@
62
68
  "@vitest/browser-playwright": "^4.1.9",
63
69
  "@vitest/coverage-v8": "^4.1.9",
64
70
  "@vitest/mocker": "^4.1.9",
71
+ "agents": "^0.17.3",
65
72
  "ai": "^6.0.182",
66
73
  "playwright": "^1.61.0",
67
74
  "react": "^19.2.7",
@@ -73,11 +80,27 @@
73
80
  "vitest": "^4.1.9"
74
81
  },
75
82
  "peerDependencies": {
83
+ "@ai-sdk/react": "^3.0.194",
84
+ "@cloudflare/shell": "^0.4.1",
85
+ "@cloudflare/think": "^0.12.1",
86
+ "agents": "^0.17.3",
76
87
  "ai": "^6.0.182",
77
88
  "react": "^19.0.0",
78
89
  "react-dom": "^19.0.0"
79
90
  },
80
91
  "peerDependenciesMeta": {
92
+ "@ai-sdk/react": {
93
+ "optional": true
94
+ },
95
+ "@cloudflare/shell": {
96
+ "optional": true
97
+ },
98
+ "@cloudflare/think": {
99
+ "optional": true
100
+ },
101
+ "agents": {
102
+ "optional": true
103
+ },
81
104
  "ai": {
82
105
  "optional": true
83
106
  }