@marimo-team/islands 0.23.12-dev5 → 0.23.12-dev7
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/{chat-ui-BElU7iES.js → chat-ui-BEOvjkmJ.js} +2 -2
- package/dist/{code-visibility-C4oGgzI1.js → code-visibility-43gCeXKe.js} +12 -12
- package/dist/{formats-CGj29bgR.js → formats-d6MhLuQ9.js} +1 -1
- package/dist/{html-to-image-Pd4oj3-L.js → html-to-image-Di0mtt6O.js} +58 -58
- package/dist/main.js +1214 -1201
- package/dist/{process-output-nrhrehth.js → process-output-BLd4KuwX.js} +1 -1
- package/dist/{reveal-component-BnYITWzo.js → reveal-component-BQHpjptH.js} +3 -3
- package/dist/style.css +2 -2
- package/dist/{vega-component-CKPImOhx.js → vega-component-Pk6lyc_a.js} +1 -1
- package/package.json +3 -3
- package/src/components/ai/display-helpers.tsx +5 -5
- package/src/components/app-config/ai-config.tsx +5 -5
- package/src/components/app-config/mcp-config.tsx +3 -3
- package/src/components/chat/acp/agent-panel.tsx +3 -3
- package/src/components/chat/acp/blocks.tsx +36 -38
- package/src/components/chat/acp/common.tsx +12 -16
- package/src/components/chat/acp/scroll-to-bottom-button.tsx +1 -1
- package/src/components/chat/acp/session-tabs.tsx +2 -2
- package/src/components/chat/chat-history-popover.tsx +1 -1
- package/src/components/data-table/columns.tsx +2 -2
- package/src/components/data-table/filter-pill-editor.tsx +1 -1
- package/src/components/dependency-graph/minimap-content.tsx +1 -1
- package/src/components/editor/RecoveryButton.tsx +1 -1
- package/src/components/editor/actions/pair-with-agent-modal.tsx +2 -2
- package/src/components/editor/ai/ai-completion-editor.tsx +1 -1
- package/src/components/editor/cell/CreateCellButton.tsx +1 -1
- package/src/components/editor/chrome/panels/empty-state.tsx +1 -1
- package/src/components/editor/chrome/panels/outline/floating-outline.tsx +1 -1
- package/src/components/editor/chrome/wrapper/pending-ai-cells.tsx +1 -1
- package/src/components/editor/columns/cell-column.tsx +1 -1
- package/src/components/editor/columns/sortable-column.tsx +2 -2
- package/src/components/editor/output/MarimoErrorOutput.tsx +1 -1
- package/src/components/editor/output/TextOutput.tsx +2 -2
- package/src/components/slides/minimap.tsx +2 -2
- package/src/components/slides/reveal-component.tsx +1 -1
- package/src/components/ui/alert.tsx +1 -1
- package/src/components/ui/command.tsx +2 -2
- package/src/components/ui/reorderable-list.tsx +1 -1
- package/src/components/ui/table.tsx +2 -5
- package/src/core/codemirror/language/languages/sql/renderers.tsx +60 -68
- package/src/plugins/impl/MatrixPlugin.tsx +2 -2
- package/src/plugins/impl/TabsPlugin.tsx +1 -1
- package/src/plugins/impl/matplotlib/matplotlib-renderer.ts +1 -1
- package/src/plugins/impl/mpl-interactive/MplInteractivePlugin.tsx +155 -98
- package/src/plugins/impl/mpl-interactive/__tests__/MplInteractivePlugin.test.tsx +154 -1
- package/src/plugins/impl/mpl-interactive/mpl-websocket-shim.ts +10 -0
|
@@ -11,7 +11,7 @@ import { t as Tooltip } from "./tooltip-Czds6Qr8.js";
|
|
|
11
11
|
import { i as debounce_default } from "./constants-T20xxyNf.js";
|
|
12
12
|
import { T as useEvent_default, n as useTheme } from "./useTheme-BrYvK-_A.js";
|
|
13
13
|
import { s as uniq } from "./arrays-sEtDRoG4.js";
|
|
14
|
-
import { a as isValid, i as AlertTitle, n as Alert, t as arrow } from "./formats-
|
|
14
|
+
import { a as isValid, i as AlertTitle, n as Alert, t as arrow } from "./formats-d6MhLuQ9.js";
|
|
15
15
|
import { n as formats } from "./vega-loader.browser-CZ-J8Py3.js";
|
|
16
16
|
import { a as getContainerWidth, n as vegaLoadData, s as tooltipHandler } from "./loader-Boph2xIS.js";
|
|
17
17
|
import { t as j } from "./react-vega-B0sAlDTL.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@marimo-team/islands",
|
|
3
|
-
"version": "0.23.12-
|
|
3
|
+
"version": "0.23.12-dev7",
|
|
4
4
|
"main": "dist/main.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"type": "module",
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
"@replit/codemirror-vim": "^6.3.0",
|
|
72
72
|
"@revealjs/react": "^0.2.1",
|
|
73
73
|
"@streamdown/math": "^1.0.1",
|
|
74
|
-
"@tailwindcss/postcss": "^4.
|
|
74
|
+
"@tailwindcss/postcss": "^4.3.0",
|
|
75
75
|
"@tailwindcss/typography": "^0.5.19",
|
|
76
76
|
"@tanstack/react-table": "^8.21.3",
|
|
77
77
|
"@tanstack/react-virtual": "^3.13.23",
|
|
@@ -227,7 +227,7 @@
|
|
|
227
227
|
"storybook": "^10.3.5",
|
|
228
228
|
"stylelint": "^16.26.1",
|
|
229
229
|
"stylelint-config-standard": "^36.0.1",
|
|
230
|
-
"tailwindcss": "^4.
|
|
230
|
+
"tailwindcss": "^4.3.0",
|
|
231
231
|
"vega-typings": "^2.1.0",
|
|
232
232
|
"vite": "npm:rolldown-vite@7.3.1",
|
|
233
233
|
"vite-plugin-top-level-await": "^1.6.0",
|
|
@@ -5,15 +5,15 @@ import type { Role } from "@marimo-team/llm-info";
|
|
|
5
5
|
export function getTagColour(role: Role | "thinking"): string {
|
|
6
6
|
switch (role) {
|
|
7
7
|
case "chat":
|
|
8
|
-
return "bg-
|
|
8
|
+
return "bg-(--purple-3) text-(--purple-11)";
|
|
9
9
|
case "autocomplete":
|
|
10
|
-
return "bg-
|
|
10
|
+
return "bg-(--green-3) text-(--green-11)";
|
|
11
11
|
case "edit":
|
|
12
|
-
return "bg-
|
|
12
|
+
return "bg-(--blue-3) text-(--blue-11)";
|
|
13
13
|
case "thinking":
|
|
14
|
-
return "bg-
|
|
14
|
+
return "bg-(--purple-4) text-(--purple-12)";
|
|
15
15
|
}
|
|
16
|
-
return "bg-
|
|
16
|
+
return "bg-(--mauve-3) text-(--mauve-11)";
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
export function getCurrentRoleTooltip(role: Role): string {
|
|
@@ -488,11 +488,11 @@ const ModelListItem: React.FC<ModelListItemProps> = ({
|
|
|
488
488
|
<TreeItem
|
|
489
489
|
id={qualifiedId}
|
|
490
490
|
textValue={model.name}
|
|
491
|
-
className="pl-6 outline-
|
|
491
|
+
className="pl-6 outline-hidden data-focused:bg-muted/50 hover:bg-muted/50"
|
|
492
492
|
onAction={handleToggle}
|
|
493
493
|
>
|
|
494
494
|
<TreeItemContent>
|
|
495
|
-
<div className="flex items-center justify-between px-3 py-2.5 border-b last:border-b-0 cursor-pointer outline-
|
|
495
|
+
<div className="flex items-center justify-between px-3 py-2.5 border-b last:border-b-0 cursor-pointer outline-hidden">
|
|
496
496
|
<ModelInfoCard model={model} />
|
|
497
497
|
{model.custom && (
|
|
498
498
|
<Button
|
|
@@ -1465,10 +1465,10 @@ const ProviderTreeItem: React.FC<ProviderTreeItemProps> = ({
|
|
|
1465
1465
|
id={providerId}
|
|
1466
1466
|
hasChildItems={true}
|
|
1467
1467
|
textValue={providerId}
|
|
1468
|
-
className="outline-
|
|
1468
|
+
className="outline-hidden data-focused:bg-muted/50 group"
|
|
1469
1469
|
>
|
|
1470
1470
|
<TreeItemContent>
|
|
1471
|
-
<div className="flex items-center gap-3 px-2 py-3 hover:bg-muted/50 cursor-pointer outline-
|
|
1471
|
+
<div className="flex items-center gap-3 px-2 py-3 hover:bg-muted/50 cursor-pointer outline-hidden focus-visible:outline-hidden border-b group-data-expanded:border-b-0 rounded-sm">
|
|
1472
1472
|
<Checkbox
|
|
1473
1473
|
checked={checkboxState}
|
|
1474
1474
|
onCheckedChange={handleProviderToggle}
|
|
@@ -1600,7 +1600,7 @@ export const AiModelDisplayConfig: React.FC<AiConfigProps> = ({
|
|
|
1600
1600
|
<div className="bg-background">
|
|
1601
1601
|
<Tree
|
|
1602
1602
|
aria-label="AI Models by Provider"
|
|
1603
|
-
className="flex-1 overflow-auto outline-
|
|
1603
|
+
className="flex-1 overflow-auto outline-hidden focus-visible:outline-hidden"
|
|
1604
1604
|
selectionMode="none"
|
|
1605
1605
|
>
|
|
1606
1606
|
{listModelsByProvider.map(([providerId, models]) => (
|
|
@@ -131,8 +131,8 @@ export const MCPConfig: React.FC<MCPConfigProps> = ({ form, onSubmit }) => {
|
|
|
131
131
|
key={config.id}
|
|
132
132
|
className={`cursor-pointer transition-all ${
|
|
133
133
|
isChecked
|
|
134
|
-
? "border-
|
|
135
|
-
: "hover:border-
|
|
134
|
+
? "border-(--blue-9) bg-(--blue-2)"
|
|
135
|
+
: "hover:border-(--blue-7)"
|
|
136
136
|
}`}
|
|
137
137
|
onClick={() => togglePreset(config.id)}
|
|
138
138
|
>
|
|
@@ -144,7 +144,7 @@ export const MCPConfig: React.FC<MCPConfigProps> = ({ form, onSubmit }) => {
|
|
|
144
144
|
<span
|
|
145
145
|
className={`h-5 w-5 flex items-center justify-center rounded border ${
|
|
146
146
|
isChecked
|
|
147
|
-
? "border-
|
|
147
|
+
? "border-(--blue-7) bg-(--blue-7) text-foreground"
|
|
148
148
|
: "border-muted bg-background text-muted-foreground"
|
|
149
149
|
}`}
|
|
150
150
|
>
|
|
@@ -263,7 +263,7 @@ const LoadingIndicator = memo<LoadingIndicatorProps>(
|
|
|
263
263
|
}
|
|
264
264
|
|
|
265
265
|
return (
|
|
266
|
-
<div className="px-3 py-2 border-t bg-muted/30
|
|
266
|
+
<div className="px-3 py-2 border-t bg-muted/30 shrink-0">
|
|
267
267
|
<div className="flex items-center justify-between text-xs text-muted-foreground">
|
|
268
268
|
<div className="flex items-center gap-2">
|
|
269
269
|
<Spinner size="small" className="text-primary" />
|
|
@@ -352,7 +352,7 @@ const PromptArea = memo<PromptAreaProps>(
|
|
|
352
352
|
});
|
|
353
353
|
|
|
354
354
|
return (
|
|
355
|
-
<div className="border-t bg-background
|
|
355
|
+
<div className="border-t bg-background shrink-0">
|
|
356
356
|
<div
|
|
357
357
|
className={cn(
|
|
358
358
|
"px-3 py-2 min-h-[80px]",
|
|
@@ -583,7 +583,7 @@ const ChatContent = memo<ChatContentProps>(
|
|
|
583
583
|
};
|
|
584
584
|
|
|
585
585
|
return (
|
|
586
|
-
<div className="flex-1 flex flex-col overflow-hidden
|
|
586
|
+
<div className="flex-1 flex flex-col overflow-hidden shrink-0 relative">
|
|
587
587
|
{pendingPermission && (
|
|
588
588
|
<div className="p-3 border-b">
|
|
589
589
|
<PermissionRequest
|
|
@@ -119,20 +119,18 @@ export const ErrorBlock = (props: {
|
|
|
119
119
|
|
|
120
120
|
return (
|
|
121
121
|
<div
|
|
122
|
-
className="border border-
|
|
122
|
+
className="border border-(--red-6) bg-(--red-2) rounded-lg p-4 my-2"
|
|
123
123
|
data-block-type="error"
|
|
124
124
|
>
|
|
125
125
|
<div className="flex items-start gap-3">
|
|
126
|
-
<div className="
|
|
127
|
-
<XCircleIcon className="h-5 w-5 text-
|
|
126
|
+
<div className="shrink-0">
|
|
127
|
+
<XCircleIcon className="h-5 w-5 text-(--red-11)" />
|
|
128
128
|
</div>
|
|
129
129
|
<div className="flex-1 min-w-0">
|
|
130
130
|
<div className="flex items-center gap-2 mb-2">
|
|
131
|
-
<h4 className="text-sm font-medium text-
|
|
132
|
-
Agent Error
|
|
133
|
-
</h4>
|
|
131
|
+
<h4 className="text-sm font-medium text-(--red-11)">Agent Error</h4>
|
|
134
132
|
</div>
|
|
135
|
-
<div className="text-sm text-
|
|
133
|
+
<div className="text-sm text-(--red-11) leading-relaxed mb-3">
|
|
136
134
|
{message}
|
|
137
135
|
</div>
|
|
138
136
|
<div className="flex items-center gap-2">
|
|
@@ -141,7 +139,7 @@ export const ErrorBlock = (props: {
|
|
|
141
139
|
size="xs"
|
|
142
140
|
variant="outline"
|
|
143
141
|
onClick={props.onRetry}
|
|
144
|
-
className="text-
|
|
142
|
+
className="text-(--red-11) border-(--red-6) hover:bg-(--red-3)"
|
|
145
143
|
>
|
|
146
144
|
<RotateCcwIcon className="h-3 w-3 mr-1" />
|
|
147
145
|
Retry
|
|
@@ -152,7 +150,7 @@ export const ErrorBlock = (props: {
|
|
|
152
150
|
size="xs"
|
|
153
151
|
variant="ghost"
|
|
154
152
|
onClick={props.onDismiss}
|
|
155
|
-
className="text-
|
|
153
|
+
className="text-(--red-10) hover:bg-(--red-3)"
|
|
156
154
|
>
|
|
157
155
|
<XIcon className="h-3 w-3 mr-1" />
|
|
158
156
|
Dismiss
|
|
@@ -169,8 +167,8 @@ export const ReadyToChatBlock = () => {
|
|
|
169
167
|
return (
|
|
170
168
|
<div className="flex-1 flex items-center justify-center h-full min-h-[200px] flex-col">
|
|
171
169
|
<div className="text-center space-y-3">
|
|
172
|
-
<div className="w-12 h-12 mx-auto rounded-full bg-
|
|
173
|
-
<BotMessageSquareIcon className="h-6 w-6 text-
|
|
170
|
+
<div className="w-12 h-12 mx-auto rounded-full bg-(--blue-3) flex items-center justify-center">
|
|
171
|
+
<BotMessageSquareIcon className="h-6 w-6 text-(--blue-10)" />
|
|
174
172
|
</div>
|
|
175
173
|
<div>
|
|
176
174
|
<h3 className="text-lg font-medium text-foreground mb-1">
|
|
@@ -205,50 +203,50 @@ export const ConnectionChangeBlock = (props: {
|
|
|
205
203
|
icon: <WifiIcon className="h-4 w-4" />,
|
|
206
204
|
title: "Connected to Agent",
|
|
207
205
|
message: "Successfully established connection with the AI agent",
|
|
208
|
-
bgColor: "bg-
|
|
209
|
-
borderColor: "border-
|
|
210
|
-
textColor: "text-
|
|
211
|
-
iconColor: "text-
|
|
206
|
+
bgColor: "bg-(--blue-2)",
|
|
207
|
+
borderColor: "border-(--blue-6)",
|
|
208
|
+
textColor: "text-(--blue-11)",
|
|
209
|
+
iconColor: "text-(--blue-10)",
|
|
212
210
|
};
|
|
213
211
|
case "disconnected":
|
|
214
212
|
return {
|
|
215
213
|
icon: <WifiOffIcon className="h-4 w-4" />,
|
|
216
214
|
title: "Disconnected from Agent",
|
|
217
215
|
message: "Connection to the AI agent has been lost",
|
|
218
|
-
bgColor: "bg-
|
|
219
|
-
borderColor: "border-
|
|
220
|
-
textColor: "text-
|
|
221
|
-
iconColor: "text-
|
|
216
|
+
bgColor: "bg-(--amber-2)",
|
|
217
|
+
borderColor: "border-(--amber-6)",
|
|
218
|
+
textColor: "text-(--amber-11)",
|
|
219
|
+
iconColor: "text-(--amber-10)",
|
|
222
220
|
};
|
|
223
221
|
case "connecting":
|
|
224
222
|
return {
|
|
225
223
|
icon: <WifiIcon className="h-4 w-4 animate-pulse" />,
|
|
226
224
|
title: "Connecting to Agent",
|
|
227
225
|
message: "Establishing connection with the AI agent...",
|
|
228
|
-
bgColor: "bg-
|
|
229
|
-
borderColor: "border-
|
|
230
|
-
textColor: "text-
|
|
231
|
-
iconColor: "text-
|
|
226
|
+
bgColor: "bg-(--gray-2)",
|
|
227
|
+
borderColor: "border-(--gray-6)",
|
|
228
|
+
textColor: "text-(--gray-11)",
|
|
229
|
+
iconColor: "text-(--gray-10)",
|
|
232
230
|
};
|
|
233
231
|
case "error":
|
|
234
232
|
return {
|
|
235
233
|
icon: <WifiOffIcon className="h-4 w-4" />,
|
|
236
234
|
title: "Connection Error",
|
|
237
235
|
message: "Failed to connect to the AI agent",
|
|
238
|
-
bgColor: "bg-
|
|
239
|
-
borderColor: "border-
|
|
240
|
-
textColor: "text-
|
|
241
|
-
iconColor: "text-
|
|
236
|
+
bgColor: "bg-(--red-2)",
|
|
237
|
+
borderColor: "border-(--red-6)",
|
|
238
|
+
textColor: "text-(--red-11)",
|
|
239
|
+
iconColor: "text-(--red-10)",
|
|
242
240
|
};
|
|
243
241
|
default:
|
|
244
242
|
return {
|
|
245
243
|
icon: <WifiOffIcon className="h-4 w-4" />,
|
|
246
244
|
title: "Connection Status Changed",
|
|
247
245
|
message: `Agent connection status: ${status}`,
|
|
248
|
-
bgColor: "bg-
|
|
249
|
-
borderColor: "border-
|
|
250
|
-
textColor: "text-
|
|
251
|
-
iconColor: "text-
|
|
246
|
+
bgColor: "bg-(--gray-2)",
|
|
247
|
+
borderColor: "border-(--gray-6)",
|
|
248
|
+
textColor: "text-(--gray-11)",
|
|
249
|
+
iconColor: "text-(--gray-10)",
|
|
252
250
|
};
|
|
253
251
|
}
|
|
254
252
|
};
|
|
@@ -263,7 +261,7 @@ export const ConnectionChangeBlock = (props: {
|
|
|
263
261
|
data-status={status}
|
|
264
262
|
>
|
|
265
263
|
<div className="flex items-start gap-3">
|
|
266
|
-
<div className={`
|
|
264
|
+
<div className={`shrink-0 ${config.iconColor}`}>{config.icon}</div>
|
|
267
265
|
<div className="flex-1 min-w-0">
|
|
268
266
|
<div className="flex items-center gap-2 mb-1">
|
|
269
267
|
<h4 className={`text-sm font-medium ${config.textColor}`}>
|
|
@@ -362,7 +360,7 @@ export const PlansBlock = (props: { data: PlanNotificationEvent[] }) => {
|
|
|
362
360
|
|
|
363
361
|
export const UserMessagesBlock = (props: { data: UserNotificationEvent[] }) => {
|
|
364
362
|
return (
|
|
365
|
-
<div className="flex flex-col gap-2 text-muted-foreground border p-2 bg-background rounded break-
|
|
363
|
+
<div className="flex flex-col gap-2 text-muted-foreground border p-2 bg-background rounded wrap-break-word overflow-x-hidden">
|
|
366
364
|
<ContentBlocks data={props.data.map((item) => item.content)} />
|
|
367
365
|
</div>
|
|
368
366
|
);
|
|
@@ -454,7 +452,7 @@ export const ResourceBlock = (props: { data: ContentBlockOf<"resource"> }) => {
|
|
|
454
452
|
Formatted for agents, not humans.
|
|
455
453
|
</span>
|
|
456
454
|
{props.data.resource.mimeType === "text/plain" ? (
|
|
457
|
-
<pre className="text-xs whitespace-pre-wrap p-2 bg-muted rounded-md break-
|
|
455
|
+
<pre className="text-xs whitespace-pre-wrap p-2 bg-muted rounded-md wrap-break-word">
|
|
458
456
|
{props.data.resource.text}
|
|
459
457
|
</pre>
|
|
460
458
|
) : (
|
|
@@ -514,7 +512,7 @@ export const ResourceLinkBlock = (props: {
|
|
|
514
512
|
};
|
|
515
513
|
|
|
516
514
|
export const MimeIcon = (props: { mimeType: string }) => {
|
|
517
|
-
const classNames = "h-2 w-2
|
|
515
|
+
const classNames = "h-2 w-2 shrink-0";
|
|
518
516
|
if (props.mimeType.startsWith("image/")) {
|
|
519
517
|
return <FileImageIcon className={classNames} />;
|
|
520
518
|
}
|
|
@@ -647,10 +645,10 @@ export const DiffBlocks = (props: {
|
|
|
647
645
|
return (
|
|
648
646
|
<div
|
|
649
647
|
key={item.path}
|
|
650
|
-
className="border rounded-md overflow-hidden bg-
|
|
648
|
+
className="border rounded-md overflow-hidden bg-(--gray-2) overflow-y-auto scrollbar-thin max-h-64"
|
|
651
649
|
>
|
|
652
650
|
{/* File path header */}
|
|
653
|
-
<div className="px-2 py-1 bg-
|
|
651
|
+
<div className="px-2 py-1 bg-(--gray-2) border-b text-xs font-medium text-(--gray-11)">
|
|
654
652
|
{item.path}
|
|
655
653
|
</div>
|
|
656
654
|
<ReadonlyDiff
|
|
@@ -737,7 +735,7 @@ export const ToolBodyBlock = (props: {
|
|
|
737
735
|
}
|
|
738
736
|
// Show rawInput
|
|
739
737
|
return (
|
|
740
|
-
<pre className="bg-
|
|
738
|
+
<pre className="bg-(--slate-2) p-1 text-muted-foreground border border-(--slate-4) rounded text-xs overflow-auto scrollbar-thin max-h-64">
|
|
741
739
|
<JsonOutput data={rawInput} format="tree" />
|
|
742
740
|
</pre>
|
|
743
741
|
);
|
|
@@ -45,7 +45,7 @@ export const SimpleAccordion: React.FC<SimpleAccordionProps> = ({
|
|
|
45
45
|
case "error":
|
|
46
46
|
return <XCircleIcon className="h-3 w-3 text-destructive" />;
|
|
47
47
|
case "success":
|
|
48
|
-
return <CheckCircleIcon className="h-3 w-3 text-
|
|
48
|
+
return <CheckCircleIcon className="h-3 w-3 text-(--blue-9)" />;
|
|
49
49
|
default:
|
|
50
50
|
return defaultIcon;
|
|
51
51
|
}
|
|
@@ -63,7 +63,7 @@ export const SimpleAccordion: React.FC<SimpleAccordionProps> = ({
|
|
|
63
63
|
className={cn(
|
|
64
64
|
"py-1 text-xs border-border shadow-none! ring-0! bg-muted hover:bg-muted/30 px-2 gap-1 rounded-sm [&[data-state=open]>svg]:rotate-180",
|
|
65
65
|
status === "error" && "text-destructive/80",
|
|
66
|
-
status === "success" && "text-
|
|
66
|
+
status === "success" && "text-(--blue-8)",
|
|
67
67
|
)}
|
|
68
68
|
>
|
|
69
69
|
<span className="flex items-center gap-1">
|
|
@@ -105,32 +105,28 @@ export const ConnectionStatus: React.FC<ConnectionStatusProps> = memo(
|
|
|
105
105
|
icon: <WifiIcon className="h-3 w-3" />,
|
|
106
106
|
label: "Connected",
|
|
107
107
|
variant: "default" as const,
|
|
108
|
-
className:
|
|
109
|
-
"bg-[var(--blue-3)] text-[var(--blue-11)] border-[var(--blue-5)]",
|
|
108
|
+
className: "bg-(--blue-3) text-(--blue-11) border-(--blue-5)",
|
|
110
109
|
};
|
|
111
110
|
case "connecting":
|
|
112
111
|
return {
|
|
113
112
|
icon: <PlugIcon className="h-3 w-3 animate-pulse" />,
|
|
114
113
|
label: "Connecting",
|
|
115
114
|
variant: "secondary" as const,
|
|
116
|
-
className:
|
|
117
|
-
"bg-[var(--yellow-3)] text-[var(--yellow-11)] border-[var(--yellow-5)]",
|
|
115
|
+
className: "bg-(--yellow-3) text-(--yellow-11) border-(--yellow-5)",
|
|
118
116
|
};
|
|
119
117
|
case "disconnected":
|
|
120
118
|
return {
|
|
121
119
|
icon: <WifiOffIcon className="h-3 w-3" />,
|
|
122
120
|
label: "Disconnected",
|
|
123
121
|
variant: "outline" as const,
|
|
124
|
-
className:
|
|
125
|
-
"bg-[var(--red-3)] text-[var(--red-11)] border-[var(--red-5)]",
|
|
122
|
+
className: "bg-(--red-3) text-(--red-11) border-(--red-5)",
|
|
126
123
|
};
|
|
127
124
|
default:
|
|
128
125
|
return {
|
|
129
126
|
icon: <WifiOffIcon className="h-3 w-3" />,
|
|
130
127
|
label: status || "Unknown",
|
|
131
128
|
variant: "outline" as const,
|
|
132
|
-
className:
|
|
133
|
-
"bg-[var(--gray-3)] text-[var(--gray-11)] border-[var(--gray-5)]",
|
|
129
|
+
className: "bg-(--gray-3) text-(--gray-11) border-(--gray-5)",
|
|
134
130
|
};
|
|
135
131
|
}
|
|
136
132
|
};
|
|
@@ -158,14 +154,14 @@ interface PermissionRequestProps {
|
|
|
158
154
|
export const PermissionRequest: React.FC<PermissionRequestProps> = memo(
|
|
159
155
|
({ permission, onResolve }) => {
|
|
160
156
|
return (
|
|
161
|
-
<div className="border border-
|
|
157
|
+
<div className="border border-(--amber-8) bg-(--amber-2) rounded-lg p-2">
|
|
162
158
|
<div className="flex items-center gap-2 mb-3">
|
|
163
|
-
<ShieldCheckIcon className="h-4 w-4 text-
|
|
164
|
-
<h3 className="text-sm font-medium text-
|
|
159
|
+
<ShieldCheckIcon className="h-4 w-4 text-(--amber-11)" />
|
|
160
|
+
<h3 className="text-sm font-medium text-(--amber-11)">
|
|
165
161
|
Permission Request
|
|
166
162
|
</h3>
|
|
167
163
|
</div>
|
|
168
|
-
<p className="text-sm text-
|
|
164
|
+
<p className="text-sm text-(--amber-11) mb-3">
|
|
169
165
|
The AI agent is requesting permission to proceed:
|
|
170
166
|
</p>
|
|
171
167
|
<ToolBodyBlock data={permission.toolCall} />
|
|
@@ -177,8 +173,8 @@ export const PermissionRequest: React.FC<PermissionRequestProps> = memo(
|
|
|
177
173
|
variant="text"
|
|
178
174
|
className={
|
|
179
175
|
option.kind.startsWith("allow")
|
|
180
|
-
? "text-
|
|
181
|
-
: "text-
|
|
176
|
+
? "text-(--blue-10)"
|
|
177
|
+
: "text-(--red-10)"
|
|
182
178
|
}
|
|
183
179
|
onClick={() =>
|
|
184
180
|
onResolve({
|
|
@@ -35,7 +35,7 @@ const ScrollToBottomButton = memo<ScrollToBottomButtonProps>(
|
|
|
35
35
|
"shadow-md shadow-black/10",
|
|
36
36
|
"hover:bg-background hover:shadow-black/15",
|
|
37
37
|
"transition-all duration-200",
|
|
38
|
-
"focus:outline-
|
|
38
|
+
"focus:outline-hidden focus:ring-2 focus:ring-primary/50",
|
|
39
39
|
)}
|
|
40
40
|
>
|
|
41
41
|
<ArrowDownIcon className="h-4 w-4" />
|
|
@@ -45,7 +45,7 @@ const SessionTab: React.FC<SessionTabProps> = memo(
|
|
|
45
45
|
<Button
|
|
46
46
|
variant="ghost"
|
|
47
47
|
size="sm"
|
|
48
|
-
className="h-4 w-4 p-0 hover:bg-destructive/20 hover:text-destructive
|
|
48
|
+
className="h-4 w-4 p-0 hover:bg-destructive/20 hover:text-destructive shrink-0"
|
|
49
49
|
onClick={(e) => {
|
|
50
50
|
e.stopPropagation();
|
|
51
51
|
onClose(session.tabId);
|
|
@@ -131,7 +131,7 @@ export const SessionTabs: React.FC<SessionTabsProps> = memo(({ className }) => {
|
|
|
131
131
|
onSelectSession={handleSelectSession}
|
|
132
132
|
onCloseSession={handleCloseSession}
|
|
133
133
|
/>
|
|
134
|
-
<AgentSelector className="h-6
|
|
134
|
+
<AgentSelector className="h-6 shrink-0" />
|
|
135
135
|
</div>
|
|
136
136
|
);
|
|
137
137
|
});
|
|
@@ -107,7 +107,7 @@ export const ChatHistoryPopover: React.FC<ChatHistoryPopoverProps> = ({
|
|
|
107
107
|
<div className="flex-1 min-w-0">
|
|
108
108
|
<div className="text-sm truncate">{chat.title}</div>
|
|
109
109
|
</div>
|
|
110
|
-
<div className="text-xs text-muted-foreground/60 ml-2
|
|
110
|
+
<div className="text-xs text-muted-foreground/60 ml-2 shrink-0">
|
|
111
111
|
{timeAgo(chat.updatedAt, locale)}
|
|
112
112
|
</div>
|
|
113
113
|
</button>
|
|
@@ -503,7 +503,7 @@ function getCellStyleClass({
|
|
|
503
503
|
isNumeric && "tabular-nums",
|
|
504
504
|
justify === "center" && "text-center",
|
|
505
505
|
justify === "right" && "text-right",
|
|
506
|
-
wrapped && `${COLUMN_WRAPPING_STYLES} break-
|
|
506
|
+
wrapped && `${COLUMN_WRAPPING_STYLES} wrap-break-word`,
|
|
507
507
|
);
|
|
508
508
|
}
|
|
509
509
|
|
|
@@ -651,7 +651,7 @@ export function renderCellValue<TData, TValue>({
|
|
|
651
651
|
selectCell={selectCell}
|
|
652
652
|
rawStringValue={stringValue}
|
|
653
653
|
edges={{ leading, trailing }}
|
|
654
|
-
contentClassName="max-h-64 overflow-auto whitespace-pre-wrap break-
|
|
654
|
+
contentClassName="max-h-64 overflow-auto whitespace-pre-wrap wrap-break-word text-sm w-96"
|
|
655
655
|
buttonText="X"
|
|
656
656
|
wrapped={isWrapped}
|
|
657
657
|
>
|
|
@@ -435,7 +435,7 @@ const ValueSlot = <TData, TValue>({
|
|
|
435
435
|
const v =
|
|
436
436
|
value.kind === "multi-values" ? value : { kind: "multi-values" as const };
|
|
437
437
|
return (
|
|
438
|
-
<div className="min-w-
|
|
438
|
+
<div className="min-w-56 w-fit max-w-[24rem]">
|
|
439
439
|
<FilterByValuesPicker
|
|
440
440
|
column={column}
|
|
441
441
|
calculateTopKRows={calculateTopKRows}
|
|
@@ -107,7 +107,7 @@ const MinimapCell: React.FC<MinimapCellProps> = (props) => {
|
|
|
107
107
|
<svg
|
|
108
108
|
className={cn(
|
|
109
109
|
"absolute overflow-visible top-[10.5px] left-[calc(var(--spacing-extra-small,8px)+31px)] pointer-events-none",
|
|
110
|
-
isSelected ? "z-
|
|
110
|
+
isSelected ? "z-1" : "z-0",
|
|
111
111
|
getTextColor({ cell, selectedCell }),
|
|
112
112
|
)}
|
|
113
113
|
width="1"
|
|
@@ -76,7 +76,7 @@ const RecoveryModal = (props: {
|
|
|
76
76
|
Download unsaved changes?
|
|
77
77
|
</DialogTitle>
|
|
78
78
|
<DialogDescription
|
|
79
|
-
className="markdown break-
|
|
79
|
+
className="markdown wrap-break-word"
|
|
80
80
|
style={{ wordBreak: "break-word" }}
|
|
81
81
|
>
|
|
82
82
|
<div className="prose dark:prose-invert">
|
|
@@ -234,7 +234,7 @@ const CommandBlock: React.FC<{
|
|
|
234
234
|
if (multiline) {
|
|
235
235
|
return (
|
|
236
236
|
<div className="relative rounded-md bg-muted">
|
|
237
|
-
<pre className="max-h-64 overflow-auto whitespace-pre-wrap break-
|
|
237
|
+
<pre className="max-h-64 overflow-auto whitespace-pre-wrap wrap-break-word px-3 py-2 pr-10 font-mono text-xs select-all">
|
|
238
238
|
{display ?? command}
|
|
239
239
|
</pre>
|
|
240
240
|
<Tooltip content="Copied!" open={copied}>
|
|
@@ -257,7 +257,7 @@ const CommandBlock: React.FC<{
|
|
|
257
257
|
|
|
258
258
|
return (
|
|
259
259
|
<div className="flex items-center gap-2 rounded-md bg-muted px-3 py-2 font-mono text-xs">
|
|
260
|
-
<code className="flex-1 select-all break-
|
|
260
|
+
<code className="flex-1 select-all wrap-break-word">
|
|
261
261
|
{display ?? command}
|
|
262
262
|
</code>
|
|
263
263
|
<Tooltip content="Copied!" open={copied}>
|
|
@@ -142,7 +142,7 @@ export const CreateCellButton = ({
|
|
|
142
142
|
<DropdownMenuTrigger asChild={true}>
|
|
143
143
|
<Button
|
|
144
144
|
className={cn(
|
|
145
|
-
"border-none hover-action shadow-none! bg-transparent! focus-visible:outline-
|
|
145
|
+
"border-none hover-action shadow-none! bg-transparent! focus-visible:outline-hidden",
|
|
146
146
|
isAppInteractionDisabled(connectionState) && " inactive-button",
|
|
147
147
|
)}
|
|
148
148
|
onPointerDownCapture={handlePointerDownCapture}
|
|
@@ -20,7 +20,7 @@ export const PanelEmptyState = ({
|
|
|
20
20
|
{icon &&
|
|
21
21
|
// oxlint-disable-next-line react/no-clone-element
|
|
22
22
|
React.cloneElement(icon, {
|
|
23
|
-
className: "text-accent-foreground
|
|
23
|
+
className: "text-accent-foreground shrink-0",
|
|
24
24
|
})}
|
|
25
25
|
<span className="mt-1 text-accent-foreground">{title}</span>
|
|
26
26
|
</div>
|
|
@@ -38,7 +38,7 @@ export const FloatingOutline: React.FC = () => {
|
|
|
38
38
|
<OutlineList
|
|
39
39
|
className={cn(
|
|
40
40
|
"-top-4 max-h-[70vh] bg-background rounded-lg shadow-lg absolute overflow-auto transition-all duration-300 w-[300px] border",
|
|
41
|
-
isHovered ? "
|
|
41
|
+
isHovered ? "left-[-280px] opacity-100" : "left-[300px] opacity-0",
|
|
42
42
|
)}
|
|
43
43
|
items={items}
|
|
44
44
|
activeHeaderId={activeHeaderId}
|
|
@@ -74,7 +74,7 @@ export const PendingAICells: React.FC = () => {
|
|
|
74
74
|
<Button variant="ghost" size="icon" onClick={() => clickNext("up")}>
|
|
75
75
|
<ChevronUp className="h-3.5 w-3.5" />
|
|
76
76
|
</Button>
|
|
77
|
-
<span className="text-xs font-mono min-w-
|
|
77
|
+
<span className="text-xs font-mono min-w-14 text-center">
|
|
78
78
|
{currentIndex === null
|
|
79
79
|
? `${listStagedCells.length} pending`
|
|
80
80
|
: `${currentIndex + 1} / ${listStagedCells.length}`}
|
|
@@ -81,7 +81,7 @@ const ResizableComponent = ({
|
|
|
81
81
|
<div
|
|
82
82
|
ref={ref}
|
|
83
83
|
className={`w-[3px] cursor-col-resize transition-colors duration-200 z-100
|
|
84
|
-
relative before:content-[''] before:absolute before:inset-y-0 before
|
|
84
|
+
relative before:content-[''] before:absolute before:inset-y-0 before:left-[-3px]
|
|
85
85
|
before:right-[-3px] before:w-[9px] before:z-[-1]
|
|
86
86
|
hover/column:bg-[var(--slate-3)] dark:hover/column:bg-[var(--slate-5)]
|
|
87
87
|
hover/column:hover:bg-primary/60 dark:hover/column:hover:bg-primary/60`}
|
|
@@ -78,7 +78,7 @@ const SortableColumnInternal = React.forwardRef(
|
|
|
78
78
|
};
|
|
79
79
|
|
|
80
80
|
const dragHandle = (
|
|
81
|
-
<div className="px-2 pb-0 group flex items-center overflow-hidden border-b border-
|
|
81
|
+
<div className="px-2 pb-0 group flex items-center overflow-hidden border-b border-(--slate-7)">
|
|
82
82
|
<Tooltip content="Move column left" side="top" delayDuration={300}>
|
|
83
83
|
<Button
|
|
84
84
|
variant="text"
|
|
@@ -161,7 +161,7 @@ const SortableColumnInternal = React.forwardRef(
|
|
|
161
161
|
isOver && "bg-accent/20", // Add a background color when dragging over
|
|
162
162
|
)}
|
|
163
163
|
>
|
|
164
|
-
<div className="border border-
|
|
164
|
+
<div className="border border-(--slate-7)">
|
|
165
165
|
{dragHandle}
|
|
166
166
|
{props.children}
|
|
167
167
|
</div>
|
|
@@ -722,7 +722,7 @@ export const MarimoErrorOutput = ({
|
|
|
722
722
|
<Alert
|
|
723
723
|
variant={alertVariant}
|
|
724
724
|
className={cn(
|
|
725
|
-
"border-none font-code text-sm text-[0.84375rem] p-0 text-muted-foreground normal [
|
|
725
|
+
"border-none font-code text-sm text-[0.84375rem] p-0 text-muted-foreground normal has-[svg]:pl-0 space-y-2",
|
|
726
726
|
className,
|
|
727
727
|
)}
|
|
728
728
|
>
|
|
@@ -18,7 +18,7 @@ export const TextOutput = ({ text, channel, wrapText }: Props): JSX.Element => {
|
|
|
18
18
|
return (
|
|
19
19
|
<span
|
|
20
20
|
className={
|
|
21
|
-
wrapText ? "whitespace-pre-wrap break-
|
|
21
|
+
wrapText ? "whitespace-pre-wrap wrap-break-word" : "whitespace-pre"
|
|
22
22
|
}
|
|
23
23
|
>
|
|
24
24
|
<RenderTextWithLinks text={text} />
|
|
@@ -30,7 +30,7 @@ export const TextOutput = ({ text, channel, wrapText }: Props): JSX.Element => {
|
|
|
30
30
|
<span
|
|
31
31
|
className={cn(
|
|
32
32
|
!shouldRenderAnsi &&
|
|
33
|
-
(wrapText ? "whitespace-pre-wrap break-
|
|
33
|
+
(wrapText ? "whitespace-pre-wrap wrap-break-word" : "whitespace-pre"),
|
|
34
34
|
channel === "output" && "font-prose",
|
|
35
35
|
channel,
|
|
36
36
|
)}
|