@mcp-b/react-components 0.7.1 → 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.
- package/dist/{CodeBlock-D9koxDA7.js → CodeBlock-XNQOupQ3.js} +1 -1
- package/dist/{FileTree-BdK93Uuu.js → FileTree-wMyZhhHO.js} +1 -1
- package/dist/{ModelSelector-MQvK-pNb.js → ModelSelector-9G_-GooI.js} +1 -1
- package/dist/{ThinkChatContext-CC94HL4u.d.ts → ThinkChatContext-BLAAb8J5.d.ts} +1 -1
- package/dist/components/Activity.js +1 -1
- package/dist/components/AgentChat.js +12 -7
- package/dist/components/AgentConnection.js +2 -2
- package/dist/components/Artifact.js +1 -1
- package/dist/components/BrowserLiveView.js +1 -1
- package/dist/components/BrowserReplay.js +1 -1
- package/dist/components/ChainOfThought.d.ts +1 -1
- package/dist/components/ChainOfThought.js +1 -1
- package/dist/components/ChatGptSignInScreen.js +2 -2
- package/dist/components/CodeBlock.js +1 -1
- package/dist/components/Commit.js +1 -1
- package/dist/components/ContextMenu.js +1 -1
- package/dist/components/Conversation.js +1 -1
- package/dist/components/Dialog.js +1 -1
- package/dist/components/EnvironmentVariables.js +1 -1
- package/dist/components/FileTree.js +1 -1
- package/dist/components/McpServerPicker.js +7 -5
- package/dist/components/Menubar.js +1 -1
- package/dist/components/Message.js +1 -1
- package/dist/components/MessageScroller.js +1 -1
- package/dist/components/ModelSelector.js +1 -1
- package/dist/components/NavigationMenu.js +1 -1
- package/dist/components/PromptInput.js +6 -5
- package/dist/components/Queue.js +1 -1
- package/dist/components/Reasoning.js +1 -1
- package/dist/components/Select.js +1 -1
- package/dist/components/Sources.js +1 -1
- package/dist/components/Stepper.js +1 -1
- package/dist/components/Task.js +1 -1
- package/dist/components/Terminal.js +4 -3
- package/dist/components/TestResults.js +1 -1
- package/dist/components/ThinkChat.d.ts +6 -8
- package/dist/components/ThinkChatActivity.js +4 -3
- package/dist/components/ThinkChatContext.d.ts +1 -1
- package/dist/components/ThinkChatToolPanels.js +1 -1
- package/dist/components/ThinkChatToolParts.js +4 -4
- package/dist/components/ThinkExecutionWorkbench.d.ts +27 -0
- package/dist/components/ThinkExecutionWorkbench.js +450 -0
- package/dist/components/ThinkFullApp.d.ts +47 -9
- package/dist/components/ThinkFullApp.js +155 -72
- package/dist/components/ThinkThreadPicker.d.ts +88 -0
- package/dist/components/ThinkThreadPicker.js +282 -0
- package/dist/components/WebPreview.js +1 -1
- package/dist/components/WorkspaceExplorer.js +5 -4
- package/dist/components/icons.d.ts +2 -2
- package/dist/components/icons.js +2 -2
- package/dist/{copy-button-TVhDAroI.js → copy-button-C6JSKtFE.js} +1 -1
- package/dist/{icons-BRI54ATJ.d.ts → icons-CbjtbIJK.d.ts} +2 -1
- package/dist/{icons-BAlTbWWP.js → icons-D2Q5n5C1.js} +11 -1
- package/dist/styles/index.css +1 -0
- package/dist/styles/think-full-app.css +439 -26
- package/dist/styles/think-thread-picker.css +449 -0
- package/dist/utils/mcp-server-catalog.d.ts +5 -2
- package/package.json +7 -8
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
import { t as cx } from "../class-names-9UtZwb0J.js";
|
|
2
|
+
import { M as SpinnerIcon, O as PlusIcon, j as SidebarIcon, u as DotIcon } from "../icons-D2Q5n5C1.js";
|
|
3
|
+
import { Button } from "./Button.js";
|
|
4
|
+
import { Tooltip, TooltipPopup, TooltipPortal, TooltipPositioner, TooltipTrigger } from "./Tooltip.js";
|
|
5
|
+
import { ScrollArea } from "./ScrollArea.js";
|
|
6
|
+
import * as React from "react";
|
|
7
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
+
//#region src/components/ThinkThreadPicker.tsx
|
|
9
|
+
const threadSidebarDefaultWidth = 256;
|
|
10
|
+
const threadSidebarMinWidth = 224;
|
|
11
|
+
const threadSidebarMaxWidth = 384;
|
|
12
|
+
const threadSidebarKeyboardStep = 24;
|
|
13
|
+
function useControllableSidebar({ sidebarOpen, defaultSidebarOpen, onSidebarOpenChange }) {
|
|
14
|
+
const [innerOpen, setInnerOpen] = React.useState(defaultSidebarOpen ?? true);
|
|
15
|
+
return [sidebarOpen ?? innerOpen, React.useCallback((next) => {
|
|
16
|
+
if (sidebarOpen === void 0) setInnerOpen(next);
|
|
17
|
+
onSidebarOpenChange?.(next);
|
|
18
|
+
}, [sidebarOpen, onSidebarOpenChange])];
|
|
19
|
+
}
|
|
20
|
+
function clampThreadSidebarWidth(width) {
|
|
21
|
+
return Math.min(threadSidebarMaxWidth, Math.max(threadSidebarMinWidth, width));
|
|
22
|
+
}
|
|
23
|
+
function beginThreadSidebarResize(event, current, apply) {
|
|
24
|
+
event.preventDefault();
|
|
25
|
+
const startX = event.clientX;
|
|
26
|
+
const onMove = (move) => {
|
|
27
|
+
apply(clampThreadSidebarWidth(current + move.clientX - startX));
|
|
28
|
+
};
|
|
29
|
+
const onUp = () => {
|
|
30
|
+
window.removeEventListener("pointermove", onMove);
|
|
31
|
+
window.removeEventListener("pointerup", onUp);
|
|
32
|
+
window.removeEventListener("pointercancel", onUp);
|
|
33
|
+
document.body.classList.remove("is-resizing-columns");
|
|
34
|
+
};
|
|
35
|
+
document.body.classList.add("is-resizing-columns");
|
|
36
|
+
window.addEventListener("pointermove", onMove);
|
|
37
|
+
window.addEventListener("pointerup", onUp);
|
|
38
|
+
window.addEventListener("pointercancel", onUp);
|
|
39
|
+
}
|
|
40
|
+
function toThreadDate(value) {
|
|
41
|
+
if (value === void 0) return void 0;
|
|
42
|
+
const date = value instanceof Date ? value : new Date(value);
|
|
43
|
+
return Number.isNaN(date.getTime()) ? void 0 : date;
|
|
44
|
+
}
|
|
45
|
+
function formatThreadTimestamp(thread) {
|
|
46
|
+
const date = toThreadDate(thread.updatedAt ?? thread.createdAt);
|
|
47
|
+
if (thread.updatedAtLabel) return {
|
|
48
|
+
date,
|
|
49
|
+
label: thread.updatedAtLabel
|
|
50
|
+
};
|
|
51
|
+
if (!date) return void 0;
|
|
52
|
+
const elapsed = Math.max(0, Date.now() - date.getTime());
|
|
53
|
+
const minute = 6e4;
|
|
54
|
+
const hour = 60 * minute;
|
|
55
|
+
const day = 24 * hour;
|
|
56
|
+
if (elapsed < hour) return {
|
|
57
|
+
date,
|
|
58
|
+
label: `${Math.max(1, Math.round(elapsed / minute))}m`
|
|
59
|
+
};
|
|
60
|
+
if (elapsed < day) return {
|
|
61
|
+
date,
|
|
62
|
+
label: `${Math.round(elapsed / hour)}h`
|
|
63
|
+
};
|
|
64
|
+
if (elapsed < 7 * day) return {
|
|
65
|
+
date,
|
|
66
|
+
label: `${Math.round(elapsed / day)}d`
|
|
67
|
+
};
|
|
68
|
+
return {
|
|
69
|
+
date,
|
|
70
|
+
label: date.toLocaleDateString(void 0, {
|
|
71
|
+
month: "short",
|
|
72
|
+
day: "numeric"
|
|
73
|
+
})
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
function formatThreadStatus(thread) {
|
|
77
|
+
if (thread.statusLabel) return thread.statusLabel;
|
|
78
|
+
if (!thread.status || thread.status === "idle" || thread.status === "ready") return void 0;
|
|
79
|
+
return thread.status.replaceAll("-", " ");
|
|
80
|
+
}
|
|
81
|
+
function isThreadBusy(status) {
|
|
82
|
+
return status === "pending" || status === "running" || status === "starting" || status === "streaming" || status === "submitted" || status === "recovering";
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Thread roster UI for sub-agent chat apps.
|
|
86
|
+
*
|
|
87
|
+
* This component does not call Think or Cloudflare RPC methods directly. Feed
|
|
88
|
+
* it from the parent agent's roster method, then route `onSelect` into the
|
|
89
|
+
* child `useAgent({ sub: [...] })` name. Keep backend contract notes beside the
|
|
90
|
+
* parent Think agent because `listThreads()`/`createThread()` are app-owned.
|
|
91
|
+
*/
|
|
92
|
+
function ThinkThreadPicker({ threads, selectedId, onSelect, onCreate, className, title = "Recents", "aria-label": ariaLabel = "Threads", ref, ...props }) {
|
|
93
|
+
return /* @__PURE__ */ jsxs("aside", {
|
|
94
|
+
ref,
|
|
95
|
+
className: cx("think-thread-picker", className),
|
|
96
|
+
...props,
|
|
97
|
+
children: [
|
|
98
|
+
/* @__PURE__ */ jsx("header", {
|
|
99
|
+
className: "think-thread-picker__header",
|
|
100
|
+
children: /* @__PURE__ */ jsx("h2", {
|
|
101
|
+
className: "think-thread-picker__title",
|
|
102
|
+
children: title
|
|
103
|
+
})
|
|
104
|
+
}),
|
|
105
|
+
/* @__PURE__ */ jsx("nav", {
|
|
106
|
+
className: "think-thread-picker__nav",
|
|
107
|
+
"aria-label": ariaLabel,
|
|
108
|
+
children: /* @__PURE__ */ jsxs(ScrollArea.Root, {
|
|
109
|
+
className: "think-thread-picker__scroll",
|
|
110
|
+
children: [/* @__PURE__ */ jsx(ScrollArea.Viewport, {
|
|
111
|
+
className: "think-thread-picker__viewport",
|
|
112
|
+
"aria-label": "Thread list",
|
|
113
|
+
children: threads.length ? /* @__PURE__ */ jsx("ul", {
|
|
114
|
+
className: "think-thread-picker__list",
|
|
115
|
+
children: threads.map((thread) => {
|
|
116
|
+
const timestamp = formatThreadTimestamp(thread);
|
|
117
|
+
const statusLabel = formatThreadStatus(thread);
|
|
118
|
+
const busy = isThreadBusy(thread.status);
|
|
119
|
+
return /* @__PURE__ */ jsx("li", {
|
|
120
|
+
className: "think-thread-picker__item",
|
|
121
|
+
children: /* @__PURE__ */ jsxs(Button, {
|
|
122
|
+
type: "button",
|
|
123
|
+
variant: "ghost",
|
|
124
|
+
color: "neutral",
|
|
125
|
+
size: "sm",
|
|
126
|
+
className: "think-thread-picker__thread",
|
|
127
|
+
"data-selected": thread.id === selectedId ? "true" : "false",
|
|
128
|
+
"data-status": thread.status,
|
|
129
|
+
"aria-current": thread.id === selectedId ? "page" : void 0,
|
|
130
|
+
onClick: () => onSelect(thread.id),
|
|
131
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
132
|
+
className: "think-thread-picker__thread-title",
|
|
133
|
+
children: thread.title
|
|
134
|
+
}), statusLabel ? /* @__PURE__ */ jsx("span", {
|
|
135
|
+
className: "think-thread-picker__thread-status",
|
|
136
|
+
role: "img",
|
|
137
|
+
"aria-label": statusLabel,
|
|
138
|
+
title: statusLabel,
|
|
139
|
+
children: busy ? /* @__PURE__ */ jsx(SpinnerIcon, {}) : /* @__PURE__ */ jsx(DotIcon, {})
|
|
140
|
+
}) : timestamp?.date ? /* @__PURE__ */ jsx("time", {
|
|
141
|
+
className: "think-thread-picker__thread-time",
|
|
142
|
+
dateTime: timestamp.date.toISOString(),
|
|
143
|
+
title: timestamp.date.toLocaleString(),
|
|
144
|
+
children: timestamp.label
|
|
145
|
+
}) : timestamp ? /* @__PURE__ */ jsx("span", {
|
|
146
|
+
className: "think-thread-picker__thread-time",
|
|
147
|
+
children: timestamp.label
|
|
148
|
+
}) : null]
|
|
149
|
+
})
|
|
150
|
+
}, thread.id);
|
|
151
|
+
})
|
|
152
|
+
}) : /* @__PURE__ */ jsx("p", {
|
|
153
|
+
className: "think-thread-picker__empty",
|
|
154
|
+
children: "No threads yet."
|
|
155
|
+
})
|
|
156
|
+
}), /* @__PURE__ */ jsx(ScrollArea.Scrollbar, {
|
|
157
|
+
orientation: "vertical",
|
|
158
|
+
children: /* @__PURE__ */ jsx(ScrollArea.Thumb, {})
|
|
159
|
+
})]
|
|
160
|
+
})
|
|
161
|
+
}),
|
|
162
|
+
onCreate ? /* @__PURE__ */ jsx("div", {
|
|
163
|
+
className: "think-thread-picker__footer",
|
|
164
|
+
children: /* @__PURE__ */ jsxs(Button, {
|
|
165
|
+
type: "button",
|
|
166
|
+
variant: "normal",
|
|
167
|
+
color: "neutral",
|
|
168
|
+
size: "sm",
|
|
169
|
+
className: "think-thread-picker__create",
|
|
170
|
+
onClick: () => void onCreate(),
|
|
171
|
+
children: [/* @__PURE__ */ jsx(PlusIcon, {}), /* @__PURE__ */ jsx("span", { children: "New thread" })]
|
|
172
|
+
})
|
|
173
|
+
}) : null
|
|
174
|
+
]
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Layout wrapper for a thread picker beside one selected `ThinkFullApp`.
|
|
179
|
+
*
|
|
180
|
+
* Mobile keeps the drawer at about 80% width so the selected chat remains
|
|
181
|
+
* visible as a preview. It only owns layout; callers still own the parent agent,
|
|
182
|
+
* selected child agent, chat hook, and shared workspace.
|
|
183
|
+
*/
|
|
184
|
+
function ThinkThreadShell({ sidebar, sidebarOpen, defaultSidebarOpen, onSidebarOpenChange, className, children, ref, style, ...props }) {
|
|
185
|
+
const sidebarId = React.useId();
|
|
186
|
+
const [isSidebarOpen, setSidebarOpen] = useControllableSidebar({
|
|
187
|
+
sidebarOpen,
|
|
188
|
+
defaultSidebarOpen,
|
|
189
|
+
onSidebarOpenChange
|
|
190
|
+
});
|
|
191
|
+
const [sidebarWidth, setSidebarWidth] = React.useState(threadSidebarDefaultWidth);
|
|
192
|
+
const toggleLabel = isSidebarOpen ? "Hide threads" : "Show threads";
|
|
193
|
+
const rootStyle = {
|
|
194
|
+
...style,
|
|
195
|
+
"--think-thread-sidebar-w": `${sidebarWidth}px`
|
|
196
|
+
};
|
|
197
|
+
const resizeThreadSidebarBy = (delta) => {
|
|
198
|
+
setSidebarWidth((current) => clampThreadSidebarWidth(current + delta));
|
|
199
|
+
};
|
|
200
|
+
return /* @__PURE__ */ jsx("div", {
|
|
201
|
+
ref,
|
|
202
|
+
className: cx("think-thread-shell", className),
|
|
203
|
+
style: rootStyle,
|
|
204
|
+
...props,
|
|
205
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
206
|
+
className: "think-thread-shell__frame",
|
|
207
|
+
"data-sidebar-open": isSidebarOpen ? "true" : "false",
|
|
208
|
+
children: [
|
|
209
|
+
/* @__PURE__ */ jsx("div", {
|
|
210
|
+
className: "think-thread-shell__toolbar",
|
|
211
|
+
role: "toolbar",
|
|
212
|
+
"aria-label": "Thread controls",
|
|
213
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
214
|
+
className: "think-thread-shell__panel-toggle",
|
|
215
|
+
children: /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsx(Button, {
|
|
216
|
+
type: "button",
|
|
217
|
+
variant: "ghost",
|
|
218
|
+
color: "neutral",
|
|
219
|
+
size: "icon",
|
|
220
|
+
"aria-label": toggleLabel,
|
|
221
|
+
"aria-controls": sidebarId,
|
|
222
|
+
"aria-expanded": isSidebarOpen,
|
|
223
|
+
"aria-pressed": isSidebarOpen,
|
|
224
|
+
"data-selected": isSidebarOpen,
|
|
225
|
+
onClick: () => setSidebarOpen(!isSidebarOpen),
|
|
226
|
+
children: /* @__PURE__ */ jsx(SidebarIcon, {})
|
|
227
|
+
}) }), /* @__PURE__ */ jsx(TooltipPortal, { children: /* @__PURE__ */ jsx(TooltipPositioner, {
|
|
228
|
+
side: "bottom",
|
|
229
|
+
sideOffset: 6,
|
|
230
|
+
children: /* @__PURE__ */ jsx(TooltipPopup, { children: toggleLabel })
|
|
231
|
+
}) })] })
|
|
232
|
+
})
|
|
233
|
+
}),
|
|
234
|
+
isSidebarOpen ? /* @__PURE__ */ jsx("button", {
|
|
235
|
+
type: "button",
|
|
236
|
+
role: "separator",
|
|
237
|
+
"aria-label": "Resize threads panel",
|
|
238
|
+
"aria-orientation": "vertical",
|
|
239
|
+
"aria-valuemin": threadSidebarMinWidth,
|
|
240
|
+
"aria-valuemax": threadSidebarMaxWidth,
|
|
241
|
+
"aria-valuenow": sidebarWidth,
|
|
242
|
+
className: "think-thread-shell__resizer",
|
|
243
|
+
onPointerDown: (event) => beginThreadSidebarResize(event, sidebarWidth, setSidebarWidth),
|
|
244
|
+
onKeyDown: (event) => {
|
|
245
|
+
if (event.key === "ArrowLeft") {
|
|
246
|
+
event.preventDefault();
|
|
247
|
+
resizeThreadSidebarBy(-24);
|
|
248
|
+
} else if (event.key === "ArrowRight") {
|
|
249
|
+
event.preventDefault();
|
|
250
|
+
resizeThreadSidebarBy(threadSidebarKeyboardStep);
|
|
251
|
+
} else if (event.key === "Home") {
|
|
252
|
+
event.preventDefault();
|
|
253
|
+
setSidebarWidth(threadSidebarMinWidth);
|
|
254
|
+
} else if (event.key === "End") {
|
|
255
|
+
event.preventDefault();
|
|
256
|
+
setSidebarWidth(threadSidebarMaxWidth);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
}) : null,
|
|
260
|
+
/* @__PURE__ */ jsx("div", {
|
|
261
|
+
id: sidebarId,
|
|
262
|
+
className: "think-thread-shell__sidebar",
|
|
263
|
+
"aria-hidden": isSidebarOpen ? void 0 : true,
|
|
264
|
+
inert: isSidebarOpen ? void 0 : true,
|
|
265
|
+
children: sidebar
|
|
266
|
+
}),
|
|
267
|
+
/* @__PURE__ */ jsx("div", {
|
|
268
|
+
className: "think-thread-shell__main",
|
|
269
|
+
children
|
|
270
|
+
}),
|
|
271
|
+
isSidebarOpen ? /* @__PURE__ */ jsx("button", {
|
|
272
|
+
type: "button",
|
|
273
|
+
className: "think-thread-shell__peek",
|
|
274
|
+
"aria-label": "Show selected thread",
|
|
275
|
+
onClick: () => setSidebarOpen(false)
|
|
276
|
+
}) : null
|
|
277
|
+
]
|
|
278
|
+
})
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
//#endregion
|
|
282
|
+
export { ThinkThreadPicker, ThinkThreadShell };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as cx } from "../class-names-9UtZwb0J.js";
|
|
2
|
-
import { k as RefreshIcon, n as ArrowLeftIcon, o as ChevronDownIcon, r as ArrowRightIcon } from "../icons-
|
|
2
|
+
import { k as RefreshIcon, n as ArrowLeftIcon, o as ChevronDownIcon, r as ArrowRightIcon } from "../icons-D2Q5n5C1.js";
|
|
3
3
|
import { Button } from "./Button.js";
|
|
4
4
|
import { Tooltip, TooltipPopup, TooltipPortal, TooltipPositioner, TooltipTrigger } from "./Tooltip.js";
|
|
5
5
|
import { Badge } from "./Badge.js";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { t as cx } from "../class-names-9UtZwb0J.js";
|
|
2
|
-
import { A as SearchIcon, h as FileIcon, k as RefreshIcon, n as ArrowLeftIcon } from "../icons-
|
|
2
|
+
import { A as SearchIcon, h as FileIcon, k as RefreshIcon, n as ArrowLeftIcon } from "../icons-D2Q5n5C1.js";
|
|
3
3
|
import { Button } from "./Button.js";
|
|
4
|
-
import { a as CodeBlockCopyButton, i as CodeBlockContent, n as CodeBlockActions, o as CodeBlockFilename, p as CodeBlockTitle, r as CodeBlockContainer, s as CodeBlockHeader, t as CodeBlock } from "../CodeBlock-
|
|
5
|
-
import { i as FileTreeFolder, r as FileTreeFile, t as FileTree } from "../FileTree-
|
|
4
|
+
import { a as CodeBlockCopyButton, i as CodeBlockContent, n as CodeBlockActions, o as CodeBlockFilename, p as CodeBlockTitle, r as CodeBlockContainer, s as CodeBlockHeader, t as CodeBlock } from "../CodeBlock-XNQOupQ3.js";
|
|
5
|
+
import { i as FileTreeFolder, r as FileTreeFile, t as FileTree } from "../FileTree-wMyZhhHO.js";
|
|
6
6
|
import * as React from "react";
|
|
7
7
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
8
8
|
//#region src/components/WorkspaceExplorer.tsx
|
|
@@ -193,7 +193,8 @@ const LANGUAGE_BY_EXTENSION = {
|
|
|
193
193
|
};
|
|
194
194
|
/** Best-effort syntax-highlighting language from a file path; unknown extensions render as plain text. */
|
|
195
195
|
function inferWorkspaceLanguage(path) {
|
|
196
|
-
|
|
196
|
+
const extension = basename(path).split(".").at(-1)?.toLowerCase() ?? "";
|
|
197
|
+
return LANGUAGE_BY_EXTENSION[extension] ?? "text";
|
|
197
198
|
}
|
|
198
199
|
/**
|
|
199
200
|
* A Think workspace file browser with a preview pane: lazy directory tree,
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { A as RefreshIcon, C as MinusIcon, D as PencilIcon, E as PauseIcon, F as
|
|
2
|
-
export { ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowUpIcon, CheckIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, CopyIcon, DotIcon, DownloadIcon, EllipsisIcon, EyeIcon, EyeOffIcon, FileIcon, FolderIcon, FolderOpenIcon, IconProps, ImageIcon, InfoIcon, LinkIcon, MaximizeIcon, MinusIcon, MonitorIcon, PaperclipIcon, PauseIcon, PencilIcon, PlayIcon, PlusIcon, RefreshIcon, SearchIcon, SpinnerIcon, SquareIcon, TerminalIcon, WarningIcon, WrenchIcon, XIcon };
|
|
1
|
+
import { A as RefreshIcon, C as MinusIcon, D as PencilIcon, E as PauseIcon, F as TerminalIcon, I as WarningIcon, L as WrenchIcon, M as SidebarIcon, N as SpinnerIcon, O as PlayIcon, P as SquareIcon, R as XIcon, S as MaximizeIcon, T as PaperclipIcon, _ as FolderOpenIcon, a as CheckIcon, b as InfoIcon, c as ChevronRightIcon, d as DownloadIcon, f as EllipsisIcon, g as FolderIcon, h as FileIcon, i as ArrowUpIcon, j as SearchIcon, k as PlusIcon, l as CopyIcon, m as EyeOffIcon, n as ArrowLeftIcon, o as ChevronDownIcon, p as EyeIcon, r as ArrowRightIcon, s as ChevronLeftIcon, t as ArrowDownIcon, u as DotIcon, v as IconProps, w as MonitorIcon, x as LinkIcon, y as ImageIcon } from "../icons-CbjtbIJK.js";
|
|
2
|
+
export { ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowUpIcon, CheckIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, CopyIcon, DotIcon, DownloadIcon, EllipsisIcon, EyeIcon, EyeOffIcon, FileIcon, FolderIcon, FolderOpenIcon, IconProps, ImageIcon, InfoIcon, LinkIcon, MaximizeIcon, MinusIcon, MonitorIcon, PaperclipIcon, PauseIcon, PencilIcon, PlayIcon, PlusIcon, RefreshIcon, SearchIcon, SidebarIcon, SpinnerIcon, SquareIcon, TerminalIcon, WarningIcon, WrenchIcon, XIcon };
|
package/dist/components/icons.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { A as SearchIcon, C as MonitorIcon, D as PlayIcon, E as PencilIcon, F as
|
|
2
|
-
export { ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowUpIcon, CheckIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, CopyIcon, DotIcon, DownloadIcon, EllipsisIcon, EyeIcon, EyeOffIcon, FileIcon, FolderIcon, FolderOpenIcon, ImageIcon, InfoIcon, LinkIcon, MaximizeIcon, MinusIcon, MonitorIcon, PaperclipIcon, PauseIcon, PencilIcon, PlayIcon, PlusIcon, RefreshIcon, SearchIcon, SpinnerIcon, SquareIcon, TerminalIcon, WarningIcon, WrenchIcon, XIcon };
|
|
1
|
+
import { A as SearchIcon, C as MonitorIcon, D as PlayIcon, E as PencilIcon, F as WarningIcon, I as WrenchIcon, L as XIcon, M as SpinnerIcon, N as SquareIcon, O as PlusIcon, P as TerminalIcon, S as MinusIcon, T as PauseIcon, _ as FolderOpenIcon, a as CheckIcon, b as LinkIcon, c as ChevronRightIcon, d as DownloadIcon, f as EllipsisIcon, g as FolderIcon, h as FileIcon, i as ArrowUpIcon, j as SidebarIcon, k as RefreshIcon, l as CopyIcon, m as EyeOffIcon, n as ArrowLeftIcon, o as ChevronDownIcon, p as EyeIcon, r as ArrowRightIcon, s as ChevronLeftIcon, t as ArrowDownIcon, u as DotIcon, v as ImageIcon, w as PaperclipIcon, x as MaximizeIcon, y as InfoIcon } from "../icons-D2Q5n5C1.js";
|
|
2
|
+
export { ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowUpIcon, CheckIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, CopyIcon, DotIcon, DownloadIcon, EllipsisIcon, EyeIcon, EyeOffIcon, FileIcon, FolderIcon, FolderOpenIcon, ImageIcon, InfoIcon, LinkIcon, MaximizeIcon, MinusIcon, MonitorIcon, PaperclipIcon, PauseIcon, PencilIcon, PlayIcon, PlusIcon, RefreshIcon, SearchIcon, SidebarIcon, SpinnerIcon, SquareIcon, TerminalIcon, WarningIcon, WrenchIcon, XIcon };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as CheckIcon, l as CopyIcon } from "./icons-
|
|
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";
|
|
@@ -38,6 +38,7 @@ declare const DotIcon: (props: IconProps) => React.JSX.Element;
|
|
|
38
38
|
declare const EllipsisIcon: (props: IconProps) => React.JSX.Element;
|
|
39
39
|
declare const SpinnerIcon: (props: IconProps) => React.JSX.Element;
|
|
40
40
|
declare const SearchIcon: (props: IconProps) => React.JSX.Element;
|
|
41
|
+
declare const SidebarIcon: (props: IconProps) => React.JSX.Element;
|
|
41
42
|
declare const TerminalIcon: (props: IconProps) => React.JSX.Element;
|
|
42
43
|
declare const LinkIcon: (props: IconProps) => React.JSX.Element;
|
|
43
44
|
declare const WarningIcon: (props: IconProps) => React.JSX.Element;
|
|
@@ -47,4 +48,4 @@ declare const ImageIcon: (props: IconProps) => React.JSX.Element;
|
|
|
47
48
|
declare const MonitorIcon: (props: IconProps) => React.JSX.Element;
|
|
48
49
|
declare const MaximizeIcon: (props: IconProps) => React.JSX.Element;
|
|
49
50
|
//#endregion
|
|
50
|
-
export { RefreshIcon as A, MinusIcon as C, PencilIcon as D, PauseIcon as E,
|
|
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 };
|
|
@@ -190,6 +190,16 @@ const SearchIcon = (props) => /* @__PURE__ */ jsxs(Icon, {
|
|
|
190
190
|
r: "4.5"
|
|
191
191
|
}), /* @__PURE__ */ jsx("path", { d: "M13.5 13.5 10.5 10.5" })]
|
|
192
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
|
+
});
|
|
193
203
|
const TerminalIcon = (props) => /* @__PURE__ */ jsxs(Icon, {
|
|
194
204
|
...props,
|
|
195
205
|
children: [
|
|
@@ -278,4 +288,4 @@ const MaximizeIcon = (props) => /* @__PURE__ */ jsxs(Icon, {
|
|
|
278
288
|
]
|
|
279
289
|
});
|
|
280
290
|
//#endregion
|
|
281
|
-
export { SearchIcon as A, MonitorIcon as C, PlayIcon as D, PencilIcon as E,
|
|
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 };
|
package/dist/styles/index.css
CHANGED
|
@@ -81,6 +81,7 @@
|
|
|
81
81
|
@import "./terminal.css" layer(components);
|
|
82
82
|
@import "./test-results.css" layer(components);
|
|
83
83
|
@import "./think-full-app.css" layer(components);
|
|
84
|
+
@import "./think-thread-picker.css" layer(components);
|
|
84
85
|
@import "./web-preview.css" layer(components);
|
|
85
86
|
@import "./workspace-explorer.css" layer(components);
|
|
86
87
|
|