@horon-ai/react 0.1.4 → 0.1.6
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/package.json +7 -2
- package/src/components/agent-activity.tsx +2 -2
- package/src/components/agent-lane.tsx +2 -2
- package/src/components/agent-lanes-timeline.tsx +3 -3
- package/src/components/agent-panel.tsx +2 -2
- package/src/components/agent-steering-panel.tsx +2 -2
- package/src/components/bot-instructions-panel.tsx +3 -3
- package/src/components/bot-memory-panel.tsx +1 -1
- package/src/components/bottom-sheet.tsx +2 -2
- package/src/components/calendar.tsx +1 -1
- package/src/components/chat-controls.tsx +2 -2
- package/src/components/code-panel.tsx +1 -1
- package/src/components/combobox.tsx +1 -1
- package/src/components/command-palette.tsx +1 -1
- package/src/components/composer.tsx +1 -0
- package/src/components/data-table.tsx +1 -1
- package/src/components/directory-card.tsx +1 -1
- package/src/components/document-extract-panel.tsx +6 -6
- package/src/components/file-drop.tsx +1 -1
- package/src/components/integration-row.tsx +1 -1
- package/src/components/knowledge-base-panel.tsx +1 -1
- package/src/components/list-detail.tsx +3 -3
- package/src/components/marketplace-card.tsx +1 -1
- package/src/components/mcp-server-row.tsx +1 -1
- package/src/components/menu.tsx +3 -3
- package/src/components/message-extras.tsx +2 -2
- package/src/components/orchestrator-panel.tsx +2 -2
- package/src/components/page-header.tsx +1 -1
- package/src/components/plan-step.tsx +1 -1
- package/src/components/plugin-row.tsx +1 -1
- package/src/components/research-run-panel.tsx +3 -3
- package/src/components/settings-list.tsx +1 -1
- package/src/components/sidebar.tsx +3 -3
- package/src/components/source-row.tsx +2 -2
- package/src/components/task-row.tsx +1 -1
- package/src/components/toast.tsx +1 -0
- package/src/components/tool-call.tsx +3 -3
- package/src/components/tool-calls-header.tsx +1 -1
package/package.json
CHANGED
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@horon-ai/react",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.6",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git+https://github.com/horon-ai/design.git",
|
|
7
7
|
"directory": "packages/react"
|
|
8
8
|
},
|
|
9
9
|
"type": "module",
|
|
10
|
+
"sideEffects": [
|
|
11
|
+
"./src/index.ts",
|
|
12
|
+
"./src/styles/globals.css",
|
|
13
|
+
"./src/lib/cursor-ghost.ts"
|
|
14
|
+
],
|
|
10
15
|
"files": [
|
|
11
16
|
"src",
|
|
12
17
|
"README.md"
|
|
@@ -30,7 +35,7 @@
|
|
|
30
35
|
"dependencies": {
|
|
31
36
|
"@base-ui/react": "^1.9.0",
|
|
32
37
|
"@fontsource-variable/geist-mono": "^5.3.0",
|
|
33
|
-
"@horon-ai/tokens": "0.1.
|
|
38
|
+
"@horon-ai/tokens": "0.1.6",
|
|
34
39
|
"@phosphor-icons/react": "^2.1.10",
|
|
35
40
|
"@tanstack/react-table": "^9.3.1",
|
|
36
41
|
"pretendard": "^1.3.9",
|
|
@@ -138,7 +138,7 @@ export function StreamingText({ text, streaming = true, smooth = true, className
|
|
|
138
138
|
<span
|
|
139
139
|
aria-hidden
|
|
140
140
|
className={cn(
|
|
141
|
-
"ml-px inline-block h-[1.15em] w-0.5 rounded-
|
|
141
|
+
"ml-px inline-block h-[1.15em] w-0.5 rounded-full bg-interactive-primary align-[-0.2em]",
|
|
142
142
|
!typing && "animate-caret",
|
|
143
143
|
)}
|
|
144
144
|
/>
|
|
@@ -242,7 +242,7 @@ export function WorkLog({
|
|
|
242
242
|
<details
|
|
243
243
|
open
|
|
244
244
|
className={cn(
|
|
245
|
-
"group flex w-full max-w-85 min-w-0 flex-col motion-details rounded-
|
|
245
|
+
"group flex w-full max-w-85 min-w-0 flex-col motion-details rounded-2xl border border-border-default bg-bg-surface p-1.5",
|
|
246
246
|
className,
|
|
247
247
|
)}
|
|
248
248
|
>
|
|
@@ -68,10 +68,10 @@ export function AgentLane({ status, bot, elapsed, task, tool, output, usage, cla
|
|
|
68
68
|
>
|
|
69
69
|
<div className="flex items-center gap-2 text-caption text-text-secondary">
|
|
70
70
|
{/* live-pulse draws its ring in currentColor, so the running wrapper carries the tile's sky tone. */}
|
|
71
|
-
<span className={cn("shrink-0 rounded-
|
|
71
|
+
<span className={cn("shrink-0 rounded-xs", status === "running" && "animate-live-pulse text-sky-400")}>
|
|
72
72
|
<span
|
|
73
73
|
className={cn(
|
|
74
|
-
"flex size-4.5 items-center justify-center rounded-
|
|
74
|
+
"flex size-4.5 items-center justify-center rounded-xs text-label-sm text-text-inverse motion-colors",
|
|
75
75
|
botTile[status],
|
|
76
76
|
)}
|
|
77
77
|
>
|
|
@@ -193,7 +193,7 @@ export function AgentLanesTimeline({
|
|
|
193
193
|
return (
|
|
194
194
|
<section
|
|
195
195
|
className={cn(
|
|
196
|
-
"flex w-full max-w-252.5 min-w-0 flex-col overflow-clip rounded-
|
|
196
|
+
"flex w-full max-w-252.5 min-w-0 flex-col overflow-clip rounded-xl border border-border-default bg-bg-surface",
|
|
197
197
|
className,
|
|
198
198
|
)}
|
|
199
199
|
{...props}
|
|
@@ -261,7 +261,7 @@ export function AgentLanesTimeline({
|
|
|
261
261
|
>
|
|
262
262
|
<span
|
|
263
263
|
className={cn(
|
|
264
|
-
"flex size-8.5 shrink-0 items-center justify-center rounded-
|
|
264
|
+
"flex size-8.5 shrink-0 items-center justify-center rounded-md text-label-md text-text-on-ink",
|
|
265
265
|
avatarTone[bot.tone],
|
|
266
266
|
)}
|
|
267
267
|
>
|
|
@@ -327,7 +327,7 @@ export function AgentLanesTimeline({
|
|
|
327
327
|
<div
|
|
328
328
|
key={task.id}
|
|
329
329
|
className={cn(
|
|
330
|
-
"absolute flex h-9 motion-rise items-center gap-1.5 overflow-clip rounded-
|
|
330
|
+
"absolute flex h-9 motion-rise items-center gap-1.5 overflow-clip rounded-md px-2.5 text-label-sm transition-[left,width,background-color,color,border-color] duration-280 ease-emphasized [&>svg]:size-3.5",
|
|
331
331
|
barTone[task.tone],
|
|
332
332
|
)}
|
|
333
333
|
style={{
|
|
@@ -34,7 +34,7 @@ export function AgentPanel({
|
|
|
34
34
|
return (
|
|
35
35
|
<section
|
|
36
36
|
className={cn(
|
|
37
|
-
"flex min-w-0 flex-col items-stretch gap-3 rounded-
|
|
37
|
+
"flex min-w-0 flex-col items-stretch gap-3 rounded-xl border border-border-default bg-bg-surface px-5 pt-4 pb-2",
|
|
38
38
|
className,
|
|
39
39
|
)}
|
|
40
40
|
{...props}
|
|
@@ -70,7 +70,7 @@ export function ComposerChip({ leading, tileClassName, className, children, ...p
|
|
|
70
70
|
{typeof leading === "string" ? (
|
|
71
71
|
<span
|
|
72
72
|
className={cn(
|
|
73
|
-
"flex size-4 items-center justify-center rounded-
|
|
73
|
+
"flex size-4 items-center justify-center rounded-xs text-label-sm text-text-inverse",
|
|
74
74
|
tileClassName ?? "bg-interactive-primary",
|
|
75
75
|
)}
|
|
76
76
|
>
|
|
@@ -102,7 +102,7 @@ function SteeringNoteRow({
|
|
|
102
102
|
return (
|
|
103
103
|
<li
|
|
104
104
|
className={cn(
|
|
105
|
-
"flex items-center gap-2.5 rounded-
|
|
105
|
+
"flex items-center gap-2.5 rounded-md bg-overlay-ink-4 py-2 pr-2.5 pl-3.5",
|
|
106
106
|
leaving ? "animate-pop-out" : "motion-rise",
|
|
107
107
|
)}
|
|
108
108
|
onAnimationEnd={(event) => {
|
|
@@ -201,7 +201,7 @@ export function AgentSteeringPanel({
|
|
|
201
201
|
return (
|
|
202
202
|
<section
|
|
203
203
|
className={cn(
|
|
204
|
-
"flex w-full max-w-130 min-w-0 flex-col overflow-clip rounded-
|
|
204
|
+
"flex w-full max-w-130 min-w-0 flex-col overflow-clip rounded-xl border border-border-default bg-bg-surface",
|
|
205
205
|
className,
|
|
206
206
|
)}
|
|
207
207
|
{...props}
|
|
@@ -259,7 +259,7 @@ export function BotInstructionsPanel({
|
|
|
259
259
|
return (
|
|
260
260
|
<section
|
|
261
261
|
className={cn(
|
|
262
|
-
"flex w-full max-w-155 min-w-0 flex-col overflow-clip rounded-
|
|
262
|
+
"flex w-full max-w-155 min-w-0 flex-col overflow-clip rounded-xl border border-border-default bg-bg-surface",
|
|
263
263
|
className,
|
|
264
264
|
)}
|
|
265
265
|
{...props}
|
|
@@ -307,7 +307,7 @@ export function BotInstructionsPanel({
|
|
|
307
307
|
onClick={onBotClick}
|
|
308
308
|
className="flex h-7.5 shrink-0 motion-press cursor-pointer items-center gap-1.5 rounded-full bg-overlay-ink-6 pr-2.5 pl-1.5 text-label-sm text-text-primary hover:bg-overlay-ink-10 focus-visible:outline-2 focus-visible:outline-text-brand"
|
|
309
309
|
>
|
|
310
|
-
<span className="flex size-4.5 items-center justify-center rounded-
|
|
310
|
+
<span className="flex size-4.5 items-center justify-center rounded-xs bg-interactive-primary text-label-sm text-text-inverse">
|
|
311
311
|
{bot.initial}
|
|
312
312
|
</span>
|
|
313
313
|
{bot.name}
|
|
@@ -315,7 +315,7 @@ export function BotInstructionsPanel({
|
|
|
315
315
|
</button>
|
|
316
316
|
) : (
|
|
317
317
|
<span className="flex h-7.5 shrink-0 items-center gap-1.5 rounded-full bg-overlay-ink-6 pr-2.5 pl-1.5 text-label-sm text-text-primary">
|
|
318
|
-
<span className="flex size-4.5 items-center justify-center rounded-
|
|
318
|
+
<span className="flex size-4.5 items-center justify-center rounded-xs bg-interactive-primary text-label-sm text-text-inverse">
|
|
319
319
|
{bot.initial}
|
|
320
320
|
</span>
|
|
321
321
|
{bot.name}
|
|
@@ -139,7 +139,7 @@ export function BotMemoryPanel({
|
|
|
139
139
|
return (
|
|
140
140
|
<section
|
|
141
141
|
className={cn(
|
|
142
|
-
"flex w-full max-w-140 min-w-0 flex-col overflow-clip rounded-
|
|
142
|
+
"flex w-full max-w-140 min-w-0 flex-col overflow-clip rounded-xl border border-border-default bg-bg-surface",
|
|
143
143
|
className,
|
|
144
144
|
)}
|
|
145
145
|
{...props}
|
|
@@ -94,7 +94,7 @@ export function BottomSheetContent({
|
|
|
94
94
|
<Drawer.Popup
|
|
95
95
|
className={cn(
|
|
96
96
|
"relative flex max-h-[calc(100dvh-2rem)] w-full flex-col items-stretch overflow-clip px-4 pt-2 outline-none",
|
|
97
|
-
solid ? "rounded-t-xl bg-bg-surface pb-6" : "veil-overlay rounded-t-
|
|
97
|
+
solid ? "rounded-t-xl bg-bg-surface pb-6" : "veil-overlay rounded-t-xl pb-5",
|
|
98
98
|
"transition-[translate] duration-320 ease-out-quint data-ending-style:translate-y-full data-ending-style:duration-220 data-ending-style:ease-in data-starting-style:translate-y-full",
|
|
99
99
|
detail ? "gap-4.5" : floating ? "gap-3" : "max-w-93.5 gap-1",
|
|
100
100
|
className,
|
|
@@ -103,7 +103,7 @@ export function BottomSheetContent({
|
|
|
103
103
|
>
|
|
104
104
|
<span
|
|
105
105
|
aria-hidden
|
|
106
|
-
className="relative mx-auto h-[5px] w-9 cursor-grab touch-none rounded-
|
|
106
|
+
className="relative mx-auto h-[5px] w-9 cursor-grab touch-none rounded-full bg-overlay-ink-20 active:cursor-grabbing"
|
|
107
107
|
/>
|
|
108
108
|
<Drawer.Content
|
|
109
109
|
className={cn(
|
|
@@ -324,7 +324,7 @@ export function Calendar(props: CalendarProps) {
|
|
|
324
324
|
? "veil-overlay"
|
|
325
325
|
: "bg-glass-thick",
|
|
326
326
|
variant === "popover"
|
|
327
|
-
? cn("rounded-
|
|
327
|
+
? cn("rounded-xl", containerSizeClass[size].popover)
|
|
328
328
|
: cn("rounded-xl", containerSizeClass[size].default),
|
|
329
329
|
// Paper renders every popover day on the label scale; the default calendar mixes body and label.
|
|
330
330
|
variant === "popover" && popoverDayTextClass[size],
|
|
@@ -152,13 +152,13 @@ export function VoiceInput({
|
|
|
152
152
|
onClick={onStop}
|
|
153
153
|
className="relative flex size-9 shrink-0 motion-press cursor-pointer items-center justify-center rounded-full bg-interactive-danger focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-text-brand"
|
|
154
154
|
>
|
|
155
|
-
<span className="size-3
|
|
155
|
+
<span className="size-3 bg-interactive-on-danger" />
|
|
156
156
|
</button>
|
|
157
157
|
<div aria-hidden className="relative flex min-w-0 flex-1 items-center gap-[3px] overflow-hidden">
|
|
158
158
|
{bars.map((bar, position) => (
|
|
159
159
|
<span
|
|
160
160
|
key={bar.id}
|
|
161
|
-
className={cn("w-[3px] shrink-0 rounded-
|
|
161
|
+
className={cn("w-[3px] shrink-0 rounded-full bg-interactive-primary-75", recording && "animate-wave")}
|
|
162
162
|
style={{ height: bar.height, animationDelay: recording ? `${position * 120}ms` : undefined }}
|
|
163
163
|
/>
|
|
164
164
|
))}
|
|
@@ -27,7 +27,7 @@ export function CodePanel({ className, ...props }: CodePanelProps) {
|
|
|
27
27
|
return (
|
|
28
28
|
<pre
|
|
29
29
|
className={cn(
|
|
30
|
-
"font-normal m-0 max-w-full overflow-x-auto rounded-
|
|
30
|
+
"font-normal m-0 max-w-full overflow-x-auto rounded-md border border-border-default bg-neutral-50 px-4 py-3.5 font-mono text-[12px]/[21px] whitespace-pre text-syntax-string dark:border-border-strong dark:bg-neutral-800",
|
|
31
31
|
className,
|
|
32
32
|
)}
|
|
33
33
|
{...props}
|
|
@@ -290,7 +290,7 @@ export function Combobox(props: ComboboxProps) {
|
|
|
290
290
|
{shortLabel(item)}
|
|
291
291
|
<BaseCombobox.ChipRemove
|
|
292
292
|
aria-label={`Remove ${item.label}`}
|
|
293
|
-
className="flex cursor-pointer rounded-full p-0.5 text-text-secondary hover:bg-overlay-ink-10 hover:text-text-primary"
|
|
293
|
+
className="flex cursor-pointer rounded-full p-0.5 text-text-secondary hover:bg-overlay-ink-10 hover:text-text-primary focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-text-brand"
|
|
294
294
|
>
|
|
295
295
|
<X />
|
|
296
296
|
</BaseCombobox.ChipRemove>
|
|
@@ -120,7 +120,7 @@ export function CommandPalette({
|
|
|
120
120
|
aria-label={placeholder}
|
|
121
121
|
className={cn(
|
|
122
122
|
// 560px where it fits; the viewport's 8px gutters cap `w-full` below that.
|
|
123
|
-
"relative flex w-full max-w-140 motion-popup flex-col overflow-clip rounded-
|
|
123
|
+
"relative flex w-full max-w-140 motion-popup flex-col overflow-clip rounded-xl p-1.5",
|
|
124
124
|
surface === "glass" ? "veil-overlay" : "border border-border-default bg-bg-surface shadow-palette",
|
|
125
125
|
"duration-240 data-starting-style:translate-y-2",
|
|
126
126
|
className,
|
|
@@ -98,6 +98,7 @@ export function Composer({
|
|
|
98
98
|
onSubmit={submit}
|
|
99
99
|
className={cn(
|
|
100
100
|
"relative flex max-w-full min-w-0 items-center overflow-clip rounded-full motion-colors has-[input:focus-visible]:border-border-strong",
|
|
101
|
+
"has-[input:focus-visible]:outline-2 has-[input:focus-visible]:outline-offset-2 has-[input:focus-visible]:outline-text-brand",
|
|
101
102
|
surface === "glass" ? "veil-field" : "border border-border-default bg-bg-surface",
|
|
102
103
|
sizeClass[size],
|
|
103
104
|
className,
|
|
@@ -105,7 +105,7 @@ export function DataTableHeader({ icon, title, actions, className }: DataTableHe
|
|
|
105
105
|
return (
|
|
106
106
|
<div className={cn("flex items-center gap-3 px-6 py-4.5 group-data-[device=mobile]/dt:px-4.5", className)}>
|
|
107
107
|
{icon && (
|
|
108
|
-
<span className="flex size-6.5 shrink-0 items-center justify-center rounded-
|
|
108
|
+
<span className="flex size-6.5 shrink-0 items-center justify-center rounded-xs bg-bg-brand text-text-brand [&>svg]:size-4">
|
|
109
109
|
{icon}
|
|
110
110
|
</span>
|
|
111
111
|
)}
|
|
@@ -59,7 +59,7 @@ export function DirectoryCard({
|
|
|
59
59
|
{...props}
|
|
60
60
|
>
|
|
61
61
|
{surface === "glass" && <LiquidGlass />}
|
|
62
|
-
<span className="relative flex size-10 shrink-0 items-center justify-center rounded-
|
|
62
|
+
<span className="relative flex size-10 shrink-0 items-center justify-center rounded-md bg-sky-500 text-neutral-50 [&>svg]:size-5">
|
|
63
63
|
{icon}
|
|
64
64
|
</span>
|
|
65
65
|
<span className="relative flex min-w-0 flex-1 flex-col gap-0.5">
|
|
@@ -217,7 +217,7 @@ export function DocumentExtractPanel({
|
|
|
217
217
|
return (
|
|
218
218
|
<section
|
|
219
219
|
className={cn(
|
|
220
|
-
"@container flex w-full max-w-280 min-w-0 flex-col overflow-clip rounded-
|
|
220
|
+
"@container flex w-full max-w-280 min-w-0 flex-col overflow-clip rounded-xl border border-border-default bg-bg-surface",
|
|
221
221
|
className,
|
|
222
222
|
)}
|
|
223
223
|
{...props}
|
|
@@ -225,7 +225,7 @@ export function DocumentExtractPanel({
|
|
|
225
225
|
<div className="flex flex-col @4xl:flex-row">
|
|
226
226
|
<div className="flex min-w-0 flex-col @4xl:w-135 @4xl:shrink-0">
|
|
227
227
|
<div className="flex flex-wrap items-center gap-2 px-5 py-3">
|
|
228
|
-
<span className="flex size-7 shrink-0 items-center justify-center rounded-
|
|
228
|
+
<span className="flex size-7 shrink-0 items-center justify-center rounded-md bg-overlay-ink-5 text-text-danger">
|
|
229
229
|
<FilePdf aria-hidden className="size-4" />
|
|
230
230
|
</span>
|
|
231
231
|
{onOpenFile ? (
|
|
@@ -331,7 +331,7 @@ export function DocumentExtractPanel({
|
|
|
331
331
|
</span>
|
|
332
332
|
) : null}
|
|
333
333
|
</div>
|
|
334
|
-
<div className="flex flex-col overflow-x-auto rounded-
|
|
334
|
+
<div className="flex flex-col overflow-x-auto rounded-md border border-overlay-ink-10 px-3 py-0.5">
|
|
335
335
|
<div className="flex min-w-52 flex-col">
|
|
336
336
|
<div className="flex items-center gap-2 py-2 text-caption text-text-secondary">
|
|
337
337
|
{field.columns.map((column) => (
|
|
@@ -384,7 +384,7 @@ export function DocumentExtractPanel({
|
|
|
384
384
|
onClick={() => resolve(field.id)}
|
|
385
385
|
aria-label={needsCheck ? `Confirm ${field.label}` : undefined}
|
|
386
386
|
className={cn(
|
|
387
|
-
"flex h-9 min-w-0 flex-1 items-center gap-2 rounded-
|
|
387
|
+
"flex h-9 min-w-0 flex-1 items-center gap-2 rounded-md border px-3 text-start motion-colors",
|
|
388
388
|
needsCheck
|
|
389
389
|
? "cursor-pointer border-border-danger bg-overlay-ink-12 hover:bg-overlay-ink-14 focus-visible:outline-2 focus-visible:outline-text-brand"
|
|
390
390
|
: "cursor-default border-transparent bg-overlay-ink-4",
|
|
@@ -416,7 +416,7 @@ export function DocumentExtractPanel({
|
|
|
416
416
|
</>
|
|
417
417
|
) : null}
|
|
418
418
|
{view === "json" ? (
|
|
419
|
-
<pre className="animate-slide-shift-next overflow-x-auto rounded-
|
|
419
|
+
<pre className="animate-slide-shift-next overflow-x-auto rounded-md bg-overlay-ink-4 p-3 font-mono text-caption whitespace-pre text-text-primary">
|
|
420
420
|
{json}
|
|
421
421
|
</pre>
|
|
422
422
|
) : null}
|
|
@@ -454,7 +454,7 @@ export function DocumentExtractPanel({
|
|
|
454
454
|
<span className="min-w-0 flex-1" />
|
|
455
455
|
{bot ? (
|
|
456
456
|
<>
|
|
457
|
-
<span className="flex size-5 items-center justify-center rounded-
|
|
457
|
+
<span className="flex size-5 items-center justify-center rounded-xs bg-interactive-primary text-label-sm text-text-inverse">
|
|
458
458
|
{bot.initial}
|
|
459
459
|
</span>
|
|
460
460
|
<span className="text-caption text-text-secondary">
|
|
@@ -94,7 +94,7 @@ export function FileDrop({
|
|
|
94
94
|
onDragLeave={() => setDragging(false)}
|
|
95
95
|
onDrop={onDrop}
|
|
96
96
|
className={cn(
|
|
97
|
-
"relative flex w-full max-w-[550px] cursor-pointer items-center justify-center gap-2 overflow-clip rounded-
|
|
97
|
+
"relative flex w-full max-w-[550px] cursor-pointer items-center justify-center gap-2 overflow-clip rounded-md border-[1.5px] border-dashed border-border-dashed px-4 py-3 text-label-md text-text-secondary motion-colors",
|
|
98
98
|
"has-[:focus-visible]:outline-2 has-[:focus-visible]:outline-offset-2 has-[:focus-visible]:outline-text-brand",
|
|
99
99
|
// The dashed edge stays put (border-style cannot transition) and the active state adds an inner rim.
|
|
100
100
|
"data-dragging:border-border-brand data-dragging:shadow-[inset_0_0_0_1px_var(--color-text-brand)]",
|
|
@@ -95,7 +95,7 @@ export function IntegrationRow({
|
|
|
95
95
|
{surface === "glass" && <LiquidGlass />}
|
|
96
96
|
<span
|
|
97
97
|
className={cn(
|
|
98
|
-
"relative flex size-10 shrink-0 items-center justify-center rounded-
|
|
98
|
+
"relative flex size-10 shrink-0 items-center justify-center rounded-md motion-colors [&>svg]:size-5",
|
|
99
99
|
surface === "glass" && status === "not-connected"
|
|
100
100
|
? "bg-overlay-ink-6 text-text-secondary"
|
|
101
101
|
: tileClass[status],
|
|
@@ -120,7 +120,7 @@ export function KnowledgeBasePanel({
|
|
|
120
120
|
return (
|
|
121
121
|
<section
|
|
122
122
|
className={cn(
|
|
123
|
-
"flex w-full max-w-200 min-w-0 flex-col items-stretch gap-3 rounded-
|
|
123
|
+
"flex w-full max-w-200 min-w-0 flex-col items-stretch gap-3 rounded-xl border border-border-default bg-bg-surface px-5 py-4.5",
|
|
124
124
|
className,
|
|
125
125
|
)}
|
|
126
126
|
{...props}
|
|
@@ -121,7 +121,7 @@ export function ListDetail({
|
|
|
121
121
|
role="option"
|
|
122
122
|
aria-selected={item.id === selected?.id}
|
|
123
123
|
data-selected={item.id === selected?.id ? "" : undefined}
|
|
124
|
-
className="flex cursor-pointer flex-col gap-1 rounded-
|
|
124
|
+
className="flex cursor-pointer flex-col gap-1 rounded-md px-3 py-2.5 text-left motion-colors hover:bg-overlay-ink-4 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-text-brand data-selected:bg-overlay-ink-6 data-selected:hover:bg-overlay-ink-8"
|
|
125
125
|
onClick={() => {
|
|
126
126
|
setInner(item.id);
|
|
127
127
|
onValueChange?.(item.id);
|
|
@@ -165,7 +165,7 @@ export function ListDetailHeader({ icon, title, description, actions, className,
|
|
|
165
165
|
return (
|
|
166
166
|
<div className={cn("flex flex-wrap items-center gap-3", className)} {...props}>
|
|
167
167
|
{icon && (
|
|
168
|
-
<span className="flex size-10 shrink-0 items-center justify-center rounded-
|
|
168
|
+
<span className="flex size-10 shrink-0 items-center justify-center rounded-md bg-sky-100 text-sky-700 dark:bg-sky-900 dark:text-sky-300 [&_svg]:size-5">
|
|
169
169
|
{icon}
|
|
170
170
|
</span>
|
|
171
171
|
)}
|
|
@@ -301,7 +301,7 @@ export function ListDetailInstructions({
|
|
|
301
301
|
aria-label="Edit instructions"
|
|
302
302
|
value={text}
|
|
303
303
|
rows={6}
|
|
304
|
-
className="block w-full resize-y rounded-
|
|
304
|
+
className="block w-full resize-y rounded-md border border-border-default bg-bg-inset px-4 py-3.5 font-mono text-[12px]/[21px] text-text-primary focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-text-brand"
|
|
305
305
|
onChange={(event) => {
|
|
306
306
|
setInner(event.target.value);
|
|
307
307
|
onValueChange?.(event.target.value);
|
|
@@ -85,7 +85,7 @@ export function MarketplaceCard({
|
|
|
85
85
|
<div className="relative flex items-center gap-3">
|
|
86
86
|
<span
|
|
87
87
|
aria-hidden
|
|
88
|
-
className="flex size-10 shrink-0 items-center justify-center rounded-
|
|
88
|
+
className="flex size-10 shrink-0 items-center justify-center rounded-md bg-neutral-900 text-label-md text-neutral-50"
|
|
89
89
|
>
|
|
90
90
|
{initials}
|
|
91
91
|
</span>
|
|
@@ -119,7 +119,7 @@ export function McpServerRow({
|
|
|
119
119
|
)}
|
|
120
120
|
{...props}
|
|
121
121
|
>
|
|
122
|
-
<span className="flex size-10 shrink-0 items-center justify-center rounded-
|
|
122
|
+
<span className="flex size-10 shrink-0 items-center justify-center rounded-md bg-sky-500 text-label-md text-neutral-50">
|
|
123
123
|
{initials ?? name.slice(0, 2).toUpperCase()}
|
|
124
124
|
</span>
|
|
125
125
|
<div className="flex min-w-0 grow basis-40 flex-col gap-1">
|
package/src/components/menu.tsx
CHANGED
|
@@ -64,8 +64,8 @@ export type MenuContentProps = WithClass<ComponentProps<typeof BaseMenu.Popup>>
|
|
|
64
64
|
*/
|
|
65
65
|
export const menuPopupClass = {
|
|
66
66
|
glass: "rounded-xl veil-overlay",
|
|
67
|
-
solid: "rounded-
|
|
68
|
-
paper: "rounded-
|
|
67
|
+
solid: "rounded-xl bg-glass-fill-solid shadow-popover",
|
|
68
|
+
paper: "rounded-lg border border-border-default bg-bg-default shadow-[0_12px_32px_#0A142424]",
|
|
69
69
|
} as const;
|
|
70
70
|
|
|
71
71
|
/**
|
|
@@ -168,7 +168,7 @@ export function MenuItem({
|
|
|
168
168
|
<BaseMenu.Item
|
|
169
169
|
className={cn(
|
|
170
170
|
"relative flex w-full cursor-pointer items-center gap-2.5 motion-colors outline-none select-none data-disabled:cursor-not-allowed data-disabled:opacity-40 data-highlighted:bg-overlay-ink-6",
|
|
171
|
-
surface === "glass" ? "rounded-md px-3" : "rounded-
|
|
171
|
+
surface === "glass" ? "rounded-md px-3" : "rounded-md px-2.5",
|
|
172
172
|
description ? "h-12" : surface === "glass" ? "h-10" : "h-9",
|
|
173
173
|
selected && "bg-bg-brand data-highlighted:bg-bg-brand",
|
|
174
174
|
className,
|
|
@@ -116,11 +116,11 @@ export function Attachment({ name, detail, thumbnail, onRemove, removeLabel = "R
|
|
|
116
116
|
{thumbnail ? (
|
|
117
117
|
<span
|
|
118
118
|
aria-hidden
|
|
119
|
-
className="size-10 shrink-0 rounded-
|
|
119
|
+
className="size-10 shrink-0 rounded-md bg-cover bg-center"
|
|
120
120
|
style={{ backgroundImage: `url(${JSON.stringify(thumbnail)})` }}
|
|
121
121
|
/>
|
|
122
122
|
) : (
|
|
123
|
-
<span className="flex size-10 shrink-0 items-center justify-center rounded-
|
|
123
|
+
<span className="flex size-10 shrink-0 items-center justify-center rounded-md bg-accent-sky-500-16 text-text-brand">
|
|
124
124
|
<FileText aria-hidden className="size-5" />
|
|
125
125
|
</span>
|
|
126
126
|
)}
|
|
@@ -117,7 +117,7 @@ export function OrchestratorPanel({
|
|
|
117
117
|
return (
|
|
118
118
|
<section
|
|
119
119
|
className={cn(
|
|
120
|
-
"flex w-full min-w-0 flex-col overflow-clip rounded-
|
|
120
|
+
"flex w-full min-w-0 flex-col overflow-clip rounded-xl border border-border-default bg-bg-surface",
|
|
121
121
|
className,
|
|
122
122
|
)}
|
|
123
123
|
>
|
|
@@ -151,7 +151,7 @@ export function OrchestratorPanel({
|
|
|
151
151
|
<div role="separator" className="h-px bg-overlay-ink-8" />
|
|
152
152
|
<div className="flex flex-col gap-2.5 px-5 pt-4 pb-5">
|
|
153
153
|
<div className="flex flex-wrap items-center gap-2">
|
|
154
|
-
<span className="flex size-5.5 shrink-0 items-center justify-center rounded-
|
|
154
|
+
<span className="flex size-5.5 shrink-0 items-center justify-center rounded-xs bg-interactive-primary text-label-sm text-text-inverse">
|
|
155
155
|
{lead.initial}
|
|
156
156
|
</span>
|
|
157
157
|
<span className="min-w-0 truncate text-label-lg text-text-primary">{lead.name}</span>
|
|
@@ -54,7 +54,7 @@ export function PageHeader({
|
|
|
54
54
|
return (
|
|
55
55
|
<header
|
|
56
56
|
className={cn(
|
|
57
|
-
"relative flex max-w-full min-w-0 flex-col gap-1.5 overflow-clip rounded-
|
|
57
|
+
"relative flex max-w-full min-w-0 flex-col gap-1.5 overflow-clip rounded-xl p-2",
|
|
58
58
|
surface === "glass" ? "bg-glass-regular" : "border border-border-default bg-bg-surface",
|
|
59
59
|
className,
|
|
60
60
|
)}
|
|
@@ -116,7 +116,7 @@ export function PluginRow({
|
|
|
116
116
|
>
|
|
117
117
|
<span
|
|
118
118
|
aria-hidden
|
|
119
|
-
className="flex size-10 shrink-0 items-center justify-center rounded-
|
|
119
|
+
className="flex size-10 shrink-0 items-center justify-center rounded-md bg-sky-500 text-label-md text-neutral-50"
|
|
120
120
|
>
|
|
121
121
|
{initials}
|
|
122
122
|
</span>
|
|
@@ -155,7 +155,7 @@ export function ResearchRunPanel({
|
|
|
155
155
|
return (
|
|
156
156
|
<section
|
|
157
157
|
className={cn(
|
|
158
|
-
"flex w-full max-w-150 min-w-0 flex-col overflow-clip rounded-
|
|
158
|
+
"flex w-full max-w-150 min-w-0 flex-col overflow-clip rounded-xl border border-border-default bg-bg-surface",
|
|
159
159
|
className,
|
|
160
160
|
)}
|
|
161
161
|
{...props}
|
|
@@ -188,7 +188,7 @@ export function ResearchRunPanel({
|
|
|
188
188
|
>
|
|
189
189
|
<Spinner size={14} />
|
|
190
190
|
<span className="min-w-0 text-label-md text-text-primary">{statusLabel}</span>
|
|
191
|
-
<span aria-hidden className="h-3 w-0.5 shrink-0 animate-caret rounded-
|
|
191
|
+
<span aria-hidden className="h-3 w-0.5 shrink-0 animate-caret rounded-full bg-interactive-primary" />
|
|
192
192
|
{meta.length > 0 && (
|
|
193
193
|
<span className="text-caption text-text-secondary tabular-nums">
|
|
194
194
|
{meta.map((entry, index) => (
|
|
@@ -205,7 +205,7 @@ export function ResearchRunPanel({
|
|
|
205
205
|
<div aria-live="polite" className="flex flex-wrap items-center gap-x-1.5 gap-y-1">
|
|
206
206
|
<Spinner size={14} />
|
|
207
207
|
<span className="min-w-0 text-label-md text-text-primary">{statusLabel}</span>
|
|
208
|
-
<span aria-hidden className="h-3 w-0.5 shrink-0 animate-caret rounded-
|
|
208
|
+
<span aria-hidden className="h-3 w-0.5 shrink-0 animate-caret rounded-full bg-interactive-primary" />
|
|
209
209
|
{meta.length > 0 && (
|
|
210
210
|
<span className="text-caption text-text-secondary tabular-nums">
|
|
211
211
|
{meta.map((entry, index) => (
|
|
@@ -110,7 +110,7 @@ export function SettingsRowIcon({ className, ...props }: WithClass<ComponentProp
|
|
|
110
110
|
<span
|
|
111
111
|
aria-hidden
|
|
112
112
|
className={cn(
|
|
113
|
-
"flex size-8 shrink-0 items-center justify-center rounded-
|
|
113
|
+
"flex size-8 shrink-0 items-center justify-center rounded-sm bg-bg-subtle text-text-primary [&_svg]:size-4",
|
|
114
114
|
className,
|
|
115
115
|
)}
|
|
116
116
|
{...props}
|
|
@@ -265,7 +265,7 @@ export function SidebarWorkspaceSwitch({ initial, name, className, ...props }: S
|
|
|
265
265
|
<button
|
|
266
266
|
type="button"
|
|
267
267
|
className={cn(
|
|
268
|
-
"flex h-9 min-w-0 flex-1 cursor-pointer items-center gap-1.5 rounded-
|
|
268
|
+
"flex h-9 min-w-0 flex-1 cursor-pointer items-center gap-1.5 rounded-md pr-1 pl-2 text-left motion-colors hover:bg-overlay-ink-6 data-popup-open:bg-overlay-ink-6",
|
|
269
269
|
"focus-visible:outline-2 focus-visible:outline-text-brand",
|
|
270
270
|
className,
|
|
271
271
|
)}
|
|
@@ -532,7 +532,7 @@ export function SidebarAccount({ initials, name, email, className, ...props }: S
|
|
|
532
532
|
)}
|
|
533
533
|
{...props}
|
|
534
534
|
>
|
|
535
|
-
<span className="flex size-9 shrink-0 items-center justify-center rounded-
|
|
535
|
+
<span className="flex size-9 shrink-0 items-center justify-center rounded-md bg-sky-200 text-label-md text-surface-ink">
|
|
536
536
|
{initials}
|
|
537
537
|
</span>
|
|
538
538
|
<span className="flex min-w-0 flex-1 flex-col">
|
|
@@ -701,7 +701,7 @@ export function SidebarAddButton({ icon = addIcon, className, children, ...props
|
|
|
701
701
|
<button
|
|
702
702
|
type="button"
|
|
703
703
|
className={cn(
|
|
704
|
-
"relative mt-2 flex h-9 w-full cursor-pointer items-center justify-center gap-1.5 rounded-
|
|
704
|
+
"relative mt-2 flex h-9 w-full cursor-pointer items-center justify-center gap-1.5 rounded-md text-label-md text-text-secondary motion-colors hover:bg-overlay-ink-4",
|
|
705
705
|
"focus-visible:outline-2 focus-visible:outline-text-brand",
|
|
706
706
|
className,
|
|
707
707
|
)}
|
|
@@ -93,11 +93,11 @@ export function SourceRow({
|
|
|
93
93
|
"flex flex-wrap items-center gap-x-3 gap-y-2 px-2 py-3",
|
|
94
94
|
variant === "list"
|
|
95
95
|
? "relative after:absolute after:inset-x-2 after:bottom-0 after:h-px after:bg-overlay-ink-8 last:after:hidden"
|
|
96
|
-
: "rounded-
|
|
96
|
+
: "rounded-lg border border-border-default bg-bg-surface px-3",
|
|
97
97
|
className,
|
|
98
98
|
)}
|
|
99
99
|
>
|
|
100
|
-
<span className="flex size-8 shrink-0 items-center justify-center rounded-
|
|
100
|
+
<span className="flex size-8 shrink-0 items-center justify-center rounded-md bg-overlay-ink-5 text-text-primary [&>svg]:size-4">
|
|
101
101
|
{icon}
|
|
102
102
|
</span>
|
|
103
103
|
<span className="flex min-w-0 flex-1 flex-col gap-0.5">
|
|
@@ -116,7 +116,7 @@ export function TaskRow({
|
|
|
116
116
|
<div className="flex items-center gap-1.5 text-caption text-text-secondary">
|
|
117
117
|
<span
|
|
118
118
|
className={cn(
|
|
119
|
-
"flex size-4.5 shrink-0 items-center justify-center rounded-
|
|
119
|
+
"flex size-4.5 shrink-0 items-center justify-center rounded-xs text-label-sm",
|
|
120
120
|
bot.tileClassName ? cn("text-text-inverse", bot.tileClassName) : botTile[status],
|
|
121
121
|
)}
|
|
122
122
|
>
|
package/src/components/toast.tsx
CHANGED
|
@@ -92,6 +92,7 @@ function ToastList({ size, surface }: {
|
|
|
92
92
|
aria-label="Close"
|
|
93
93
|
className={cn(
|
|
94
94
|
"relative flex shrink-0 motion-press cursor-pointer text-text-secondary motion-colors hover:text-text-primary",
|
|
95
|
+
"focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-text-brand",
|
|
95
96
|
"after:absolute after:-inset-2 after:content-['']",
|
|
96
97
|
closeSizeClass[size],
|
|
97
98
|
)}
|
|
@@ -168,7 +168,7 @@ function Section({
|
|
|
168
168
|
</button>
|
|
169
169
|
)}
|
|
170
170
|
</div>
|
|
171
|
-
<div className="min-w-0 rounded-
|
|
171
|
+
<div className="min-w-0 rounded-md bg-bg-subtle px-3.5 py-3">{children}</div>
|
|
172
172
|
{footer}
|
|
173
173
|
</div>
|
|
174
174
|
);
|
|
@@ -250,14 +250,14 @@ export function ToolCall({
|
|
|
250
250
|
<Collapsible.Panel className="motion-collapse">
|
|
251
251
|
<div className="flex min-w-0 flex-col gap-3.5 px-4 pb-4">
|
|
252
252
|
{status === "failed" && error && (
|
|
253
|
-
<div className="flex items-center gap-2.5 rounded-
|
|
253
|
+
<div className="flex items-center gap-2.5 rounded-md bg-bg-danger px-3.5 py-3">
|
|
254
254
|
<WarningCircle aria-hidden className="size-4 shrink-0 text-text-danger" />
|
|
255
255
|
<p className="min-w-0 flex-1 text-body-sm text-text-danger">{error}</p>
|
|
256
256
|
{onRetry && (
|
|
257
257
|
<button
|
|
258
258
|
type="button"
|
|
259
259
|
onClick={onRetry}
|
|
260
|
-
className="flex h-7.5 shrink-0 motion-press cursor-pointer items-center gap-1.5 rounded-full border border-border-default bg-bg-surface px-2.5 text-label-sm text-text-primary"
|
|
260
|
+
className="flex h-7.5 shrink-0 motion-press cursor-pointer items-center gap-1.5 rounded-full border border-border-default bg-bg-surface px-2.5 text-label-sm text-text-primary focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-text-brand"
|
|
261
261
|
>
|
|
262
262
|
<ArrowClockwise aria-hidden className="size-3.5" />
|
|
263
263
|
Retry
|
|
@@ -75,7 +75,7 @@ export function ToolCallsHeader({
|
|
|
75
75
|
{chips.length > 0 && (
|
|
76
76
|
<span className="flex shrink-0 items-center">
|
|
77
77
|
{Children.map(chips, (icon) => (
|
|
78
|
-
<span className="-ml-2 flex size-7 shrink-0 items-center justify-center rounded-
|
|
78
|
+
<span className="-ml-2 flex size-7 shrink-0 items-center justify-center rounded-md bg-bg-subtle text-text-secondary ring-2 ring-bg-surface first:ml-0 [&>svg]:size-3.5">
|
|
79
79
|
{icon}
|
|
80
80
|
</span>
|
|
81
81
|
))}
|