@agent-platform/ui 0.0.14 → 0.0.16

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/index.js CHANGED
@@ -2,7 +2,7 @@ import { createContext, useRef, useEffect, useState, useMemo, useCallback, useCo
2
2
  import { clsx } from 'clsx';
3
3
  import { twMerge } from 'tailwind-merge';
4
4
  import { jsx, jsxs } from 'react/jsx-runtime';
5
- import { CaretDown, Gear, Paperclip, PaperPlaneTilt } from '@phosphor-icons/react/dist/ssr';
5
+ import { ChevronDown, PlusCircle, Send, Wrench } from 'lucide-react';
6
6
  import { cva } from 'class-variance-authority';
7
7
  import { Slot } from 'radix-ui';
8
8
  import ReactMarkdown from 'react-markdown';
@@ -103,10 +103,8 @@ function Button({
103
103
  function AgentHeader({
104
104
  historyLabel = "\u5C65\u6B74",
105
105
  onHistoryClick,
106
- onSettingsClick,
107
106
  onNewChatClick,
108
107
  newChatLabel = "\u65B0\u898F\u30C1\u30E3\u30C3\u30C8",
109
- settingsAriaLabel = "\u8A2D\u5B9A",
110
108
  isHistoryOpen = false,
111
109
  className
112
110
  }) {
@@ -127,7 +125,7 @@ function AgentHeader({
127
125
  children: [
128
126
  /* @__PURE__ */ jsx("span", { className: "text-sm font-semibold text-foreground", children: historyLabel }),
129
127
  /* @__PURE__ */ jsx(
130
- CaretDown,
128
+ ChevronDown,
131
129
  {
132
130
  className: cn("size-4 transition-transform duration-200", isHistoryOpen && "rotate-180")
133
131
  }
@@ -135,27 +133,9 @@ function AgentHeader({
135
133
  ]
136
134
  }
137
135
  ),
138
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1", children: [
139
- /* @__PURE__ */ jsx(
140
- Button,
141
- {
142
- variant: "ghost",
143
- size: "icon-sm",
144
- onClick: onSettingsClick,
145
- "aria-label": settingsAriaLabel,
146
- className: "text-foreground",
147
- children: /* @__PURE__ */ jsx(Gear, { className: "size-5" })
148
- }
149
- ),
150
- /* @__PURE__ */ jsx(
151
- Button,
152
- {
153
- size: "sm",
154
- onClick: onNewChatClick,
155
- className: "bg-foreground text-background text-xs font-medium hover:bg-foreground/90",
156
- children: newChatLabel
157
- }
158
- )
136
+ /* @__PURE__ */ jsxs(Button, { variant: "secondary", size: "xs", onClick: onNewChatClick, children: [
137
+ /* @__PURE__ */ jsx(PlusCircle, { className: "size-4", color: "gray" }),
138
+ newChatLabel
159
139
  ] })
160
140
  ]
161
141
  }
@@ -328,7 +308,6 @@ function AgentInput({
328
308
  value: controlledValue,
329
309
  onChange,
330
310
  onSend,
331
- onAttach,
332
311
  placeholder = "AI\u306B\u76F8\u8AC7\u3057\u3066\u307F\u307E\u3057\u3087\u3046",
333
312
  disabled = false,
334
313
  isLoading = false,
@@ -386,19 +365,6 @@ function AgentInput({
386
365
  "data-slot": "agent-input",
387
366
  className: cn("w-full border-t border-border bg-muted px-3 pb-3 pt-2", className),
388
367
  children: /* @__PURE__ */ jsxs("div", { className: "flex items-end gap-1 p-2 rounded-lg border border-border bg-background transition-colors", children: [
389
- /* @__PURE__ */ jsx(
390
- Button,
391
- {
392
- type: "button",
393
- variant: "ghost",
394
- size: "icon-sm",
395
- onClick: onAttach,
396
- disabled,
397
- "aria-label": "\u30D5\u30A1\u30A4\u30EB\u3092\u6DFB\u4ED8",
398
- className: "mb-0.5 text-muted-foreground hover:text-foreground",
399
- children: /* @__PURE__ */ jsx(Paperclip, { className: "size-4", weight: "bold" })
400
- }
401
- ),
402
368
  /* @__PURE__ */ jsx(
403
369
  Textarea,
404
370
  {
@@ -420,7 +386,7 @@ function AgentInput({
420
386
  onClick: handleSend,
421
387
  disabled: !canSend,
422
388
  "aria-label": "\u9001\u4FE1 (\u2318+Enter)",
423
- children: /* @__PURE__ */ jsx(PaperPlaneTilt, { className: "size-5", weight: "fill" })
389
+ children: /* @__PURE__ */ jsx(Send, { className: "size-5" })
424
390
  }
425
391
  )
426
392
  ] })
@@ -491,44 +457,16 @@ function Markdown({ content, className }) {
491
457
  const normalizedContent = normalizeAgentMarkdown(content);
492
458
  return /* @__PURE__ */ jsx("div", { className: cn("text-sm leading-relaxed", className), children: /* @__PURE__ */ jsx(ReactMarkdown, { remarkPlugins: [remarkGfm], components, children: normalizedContent }) });
493
459
  }
494
- var defaultStatusLabels = {
495
- pending: "\u5F85\u6A5F\u4E2D",
496
- "awaiting-approval": "\u627F\u8A8D\u5F85\u3061",
497
- executing: "\u5B9F\u884C\u4E2D",
498
- completed: "\u5B8C\u4E86",
499
- error: "\u30A8\u30E9\u30FC"
500
- };
501
- var statusColors = {
502
- pending: "bg-muted text-muted-foreground",
503
- "awaiting-approval": "bg-amber-50 text-amber-700 dark:bg-amber-950 dark:text-amber-300",
504
- executing: "bg-primary/10 text-primary",
505
- completed: "bg-green-50 text-green-600 dark:bg-green-950 dark:text-green-400",
506
- error: "bg-destructive/10 text-destructive"
507
- };
508
- function ToolCallCard({
509
- toolCallState,
510
- statusLabels,
511
- parametersLabel = "\u30D1\u30E9\u30E1\u30FC\u30BF",
512
- resultLabel = "\u7D50\u679C\u3092\u8868\u793A"
513
- }) {
514
- const { toolCall, status, result, error } = toolCallState;
515
- const toolLabel = toolCall.toolName;
516
- const mergedStatusLabels = statusLabels ? { ...defaultStatusLabels, ...statusLabels } : defaultStatusLabels;
517
- const statusLabel = mergedStatusLabels[status];
518
- return /* @__PURE__ */ jsxs("div", { className: "rounded-md p-1 mt-3 bg-card", children: [
519
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
520
- /* @__PURE__ */ jsx("span", { className: "text-xs font-medium text-foreground", children: toolLabel }),
521
- status === "executing" ? /* @__PURE__ */ jsx("div", { className: "h-3 w-3 animate-spin rounded-full border border-primary border-t-transparent" }) : /* @__PURE__ */ jsx("span", { className: cn("rounded-full px-2 py-0.5 text-[11px]", statusColors[status]), children: statusLabel })
460
+ function ToolCallGroup({ toolCallStates }) {
461
+ if (toolCallStates.length === 0) return null;
462
+ const isExecuting = toolCallStates.some((s) => s.status === "executing");
463
+ return /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5", children: [
464
+ /* @__PURE__ */ jsx(Wrench, { size: 14, strokeWidth: 1.5, className: "text-muted-foreground/60 shrink-0" }),
465
+ /* @__PURE__ */ jsxs("span", { className: "text-xs text-muted-foreground/60", children: [
466
+ toolCallStates.map((s) => s.toolCall.toolName).join(", "),
467
+ !isExecuting && " \u3092\u5B9F\u884C\u3057\u307E\u3057\u305F"
522
468
  ] }),
523
- /* @__PURE__ */ jsxs("details", { className: "mt-2", children: [
524
- /* @__PURE__ */ jsx("summary", { className: "cursor-pointer text-xs text-muted-foreground", children: parametersLabel }),
525
- /* @__PURE__ */ jsx("pre", { className: "mt-1 ml-4 overflow-x-auto rounded bg-muted p-2 text-xs text-muted-foreground", children: JSON.stringify(toolCall.input, null, 2) })
526
- ] }),
527
- status === "completed" && result !== void 0 && /* @__PURE__ */ jsxs("details", { className: "mt-2", children: [
528
- /* @__PURE__ */ jsx("summary", { className: "cursor-pointer text-xs text-muted-foreground", children: resultLabel }),
529
- /* @__PURE__ */ jsx("pre", { className: "mt-1 ml-4 max-h-40 overflow-auto rounded bg-muted p-2 text-xs text-muted-foreground", children: typeof result === "string" ? result : JSON.stringify(result, null, 2) })
530
- ] }),
531
- status === "error" && error && /* @__PURE__ */ jsx("div", { className: "mt-2 rounded bg-destructive/10 p-2 text-xs text-destructive", children: error })
469
+ isExecuting && /* @__PURE__ */ jsx("div", { className: "h-2.5 w-2.5 animate-spin rounded-full border border-muted-foreground/40 border-t-transparent shrink-0" })
532
470
  ] });
533
471
  }
534
472
 
@@ -539,6 +477,20 @@ function extractTextContent(content) {
539
477
  function extractToolCalls(content) {
540
478
  return content.filter((part) => part.type === "tool-call").map((part) => part.toolCall);
541
479
  }
480
+ function extractToolResults(content) {
481
+ return content.filter((part) => part.type === "tool-result").map((part) => part.toolResult);
482
+ }
483
+ function resolveToolCallState(toolCall, pendingToolCalls, toolResults) {
484
+ const pending = pendingToolCalls.find((p) => p.toolCall.toolCallId === toolCall.toolCallId);
485
+ if (pending) return pending;
486
+ const matchingResult = toolResults.find((r) => r.toolCallId === toolCall.toolCallId);
487
+ return {
488
+ toolCall,
489
+ status: matchingResult?.isError ? "error" : "completed",
490
+ result: matchingResult?.result,
491
+ error: matchingResult?.isError ? String(matchingResult.result) : void 0
492
+ };
493
+ }
542
494
  function shouldShowLoadingIndicator({
543
495
  messages,
544
496
  isLoading
@@ -553,60 +505,40 @@ function shouldShowLoadingIndicator({
553
505
  function MessageItem({ message, pendingToolCalls }) {
554
506
  const isUser = message.role === "user";
555
507
  const textContent = extractTextContent(message.content);
508
+ if (isUser) {
509
+ return /* @__PURE__ */ jsx("div", { className: "flex justify-end my-2", children: /* @__PURE__ */ jsx("div", { className: "max-w-3/4", children: /* @__PURE__ */ jsx("div", { className: "rounded-lg bg-muted text-foreground px-3 py-2.5", children: /* @__PURE__ */ jsx("div", { className: "whitespace-pre-wrap text-sm leading-relaxed", children: textContent }) }) }) });
510
+ }
556
511
  const toolCalls = extractToolCalls(message.content);
557
- if (!isUser && message.isStreaming && !textContent && toolCalls.length === 0) {
512
+ if (message.isStreaming && !textContent && toolCalls.length === 0) {
558
513
  return null;
559
514
  }
560
- return /* @__PURE__ */ jsx("div", { className: cn("flex", isUser ? "justify-end" : "justify-start"), children: /* @__PURE__ */ jsxs("div", { className: "max-w-3/4 space-y-1.5", children: [
561
- textContent && /* @__PURE__ */ jsx(
562
- "div",
515
+ if (toolCalls.length === 0 && textContent.length === 0) {
516
+ return null;
517
+ }
518
+ const toolResults = toolCalls.length > 0 ? extractToolResults(message.content) : [];
519
+ return /* @__PURE__ */ jsx("div", { className: "flex justify-start", children: /* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
520
+ textContent.length > 0 && /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(Markdown, { content: textContent }) }),
521
+ toolCalls.length > 0 && /* @__PURE__ */ jsx(
522
+ ToolCallGroup,
563
523
  {
564
- className: cn(
565
- "rounded-lg px-3 py-2",
566
- isUser ? "bg-muted text-foreground" : "border border-border bg-card text-card-foreground"
567
- ),
568
- children: isUser ? /* @__PURE__ */ jsx("div", { className: "whitespace-pre-wrap text-sm leading-relaxed", children: textContent }) : /* @__PURE__ */ jsx(Markdown, { content: textContent })
569
- }
570
- ),
571
- !isUser && toolCalls.length > 0 && /* @__PURE__ */ jsx("div", { className: "ml-2 space-y-1.5 border-l-2 border-border pl-2", children: toolCalls.map((tc) => {
572
- const toolCallState = pendingToolCalls.find(
573
- (p) => p.toolCall.toolCallId === tc.toolCallId
574
- );
575
- if (toolCallState) {
576
- return /* @__PURE__ */ jsx(
577
- ToolCallCard,
578
- {
579
- toolCallState
580
- },
581
- tc.toolCallId
582
- );
524
+ toolCallStates: toolCalls.map(
525
+ (tc) => resolveToolCallState(tc, pendingToolCalls, toolResults)
526
+ )
583
527
  }
584
- return null;
585
- }) })
528
+ )
586
529
  ] }) });
587
530
  }
588
- function LoadingDots() {
589
- return /* @__PURE__ */ jsxs("span", { className: "flex gap-0.5", "aria-hidden": "true", children: [
590
- /* @__PURE__ */ jsx("span", { className: "h-0.5 w-0.5 animate-dot-fade rounded-full bg-muted-foreground/50 [animation-delay:0ms]" }),
591
- /* @__PURE__ */ jsx("span", { className: "h-0.5 w-0.5 animate-dot-fade rounded-full bg-muted-foreground/50 [animation-delay:150ms]" }),
592
- /* @__PURE__ */ jsx("span", { className: "h-0.5 w-0.5 animate-dot-fade rounded-full bg-muted-foreground/50 [animation-delay:300ms]" })
593
- ] });
594
- }
595
531
  function MessageLoading({ className }) {
596
- return /* @__PURE__ */ jsx("output", { className: cn("flex justify-start", className), "aria-label": "AI\u5FDC\u7B54\u3092\u5F85\u6A5F\u4E2D", children: /* @__PURE__ */ jsx("div", { className: "max-w-xl", children: /* @__PURE__ */ jsx("div", { className: "rounded-lg border border-border bg-card px-3 py-2", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
597
- /* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: "\u8003\u3048\u4E2D" }),
598
- /* @__PURE__ */ jsx(LoadingDots, {})
599
- ] }) }) }) });
532
+ return /* @__PURE__ */ jsxs("output", { className: cn("flex items-center gap-1.5 my-1", className), "aria-label": "AI\u5FDC\u7B54\u3092\u5F85\u6A5F\u4E2D", children: [
533
+ /* @__PURE__ */ jsx("div", { className: "h-3 w-3 animate-spin rounded-full border border-primary border-t-transparent" }),
534
+ /* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground leading-1", children: "\u8003\u3048\u4E2D" })
535
+ ] });
600
536
  }
601
- function MessageList({
602
- messages,
603
- pendingToolCalls,
604
- isLoading = false
605
- }) {
537
+ function MessageList({ messages, pendingToolCalls, isLoading = false }) {
606
538
  const bottomRef = useRef(null);
607
539
  useEffect(() => {
608
540
  bottomRef.current?.scrollIntoView({ behavior: "smooth" });
609
- }, [messages, isLoading]);
541
+ }, []);
610
542
  if (messages.length === 0 && !isLoading) {
611
543
  return null;
612
544
  }
@@ -614,15 +546,8 @@ function MessageList({
614
546
  messages,
615
547
  isLoading
616
548
  });
617
- return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-3 p-3", children: [
618
- messages.map((message) => /* @__PURE__ */ jsx(
619
- MessageItem,
620
- {
621
- message,
622
- pendingToolCalls
623
- },
624
- message.id
625
- )),
549
+ return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-3 py-5 px-4", children: [
550
+ messages.map((message) => /* @__PURE__ */ jsx(MessageItem, { message, pendingToolCalls }, message.id)),
626
551
  showLoadingIndicator && /* @__PURE__ */ jsx(MessageLoading, {}),
627
552
  /* @__PURE__ */ jsx("div", { ref: bottomRef })
628
553
  ] });
@@ -739,7 +664,7 @@ function AgentContainerView({
739
664
  "div",
740
665
  {
741
666
  "data-slot": "agent-container",
742
- className: cn("flex h-full w-full flex-col mx-auto max-w-[1120px]", className),
667
+ className: cn("flex h-full w-full flex-col mx-auto max-w-180", className),
743
668
  children: [
744
669
  /* @__PURE__ */ jsxs("div", { ref: historyAreaRef, className: "relative", children: [
745
670
  /* @__PURE__ */ jsx(
@@ -772,24 +697,18 @@ function AgentContainerView({
772
697
  ),
773
698
  error && /* @__PURE__ */ jsx("div", { className: "mx-4 mb-4 rounded-lg bg-red-50 p-3 text-sm text-red-600", children: error })
774
699
  ] }) : /* @__PURE__ */ jsx("div", { className: "flex flex-1 flex-col items-center justify-center gap-6 bg-background px-4 py-4", children: /* @__PURE__ */ jsx(AgentGreeting, {}) }),
775
- /* @__PURE__ */ jsxs(
776
- "div",
777
- {
778
- className: "fixed bottom-0 left-0 right-0 mx-auto w-full max-w-[1120px] bg-background",
779
- children: [
780
- layoutState.shouldShowInput && /* @__PURE__ */ jsx(AgentInput, { ...inputProps }),
781
- layoutState.shouldShowToolApprovalPanel && /* @__PURE__ */ jsx(
782
- ToolApprovalPanel,
783
- {
784
- activeApprovalRequest,
785
- approveToolCall,
786
- rejectToolCall,
787
- toolApprovalLabels
788
- }
789
- )
790
- ]
791
- }
792
- )
700
+ /* @__PURE__ */ jsxs("div", { className: "fixed bottom-0 left-0 right-0 mx-auto w-full max-w-180 bg-background", children: [
701
+ layoutState.shouldShowInput && /* @__PURE__ */ jsx(AgentInput, { ...inputProps }),
702
+ layoutState.shouldShowToolApprovalPanel && /* @__PURE__ */ jsx(
703
+ ToolApprovalPanel,
704
+ {
705
+ activeApprovalRequest,
706
+ approveToolCall,
707
+ rejectToolCall,
708
+ toolApprovalLabels
709
+ }
710
+ )
711
+ ] })
793
712
  ]
794
713
  }
795
714
  );
@@ -4,18 +4,9 @@
4
4
  :root, :host {
5
5
  --color-red-50: oklch(97.1% 0.013 17.38);
6
6
  --color-red-600: oklch(57.7% 0.245 27.325);
7
- --color-amber-50: oklch(98.7% 0.022 95.277);
8
- --color-amber-300: oklch(87.9% 0.169 91.605);
9
- --color-amber-700: oklch(55.5% 0.163 48.998);
10
- --color-amber-950: oklch(27.9% 0.077 45.635);
11
- --color-green-50: oklch(98.2% 0.018 155.826);
12
- --color-green-400: oklch(79.2% 0.209 151.711);
13
- --color-green-600: oklch(62.7% 0.194 149.214);
14
- --color-green-950: oklch(26.6% 0.065 152.934);
15
7
  --color-white: #fff;
16
8
  --spacing: 0.25rem;
17
9
  --container-sm: 24rem;
18
- --container-xl: 36rem;
19
10
  --text-xs: 0.75rem;
20
11
  --text-xs--line-height: calc(1 / 0.75);
21
12
  --text-sm: 0.875rem;
@@ -87,6 +78,9 @@
87
78
  .my-1\.5 {
88
79
  margin-block: calc(var(--spacing) * 1.5);
89
80
  }
81
+ .my-2 {
82
+ margin-block: calc(var(--spacing) * 2);
83
+ }
90
84
  .my-3 {
91
85
  margin-block: calc(var(--spacing) * 3);
92
86
  }
@@ -105,21 +99,12 @@
105
99
  .mt-3 {
106
100
  margin-top: calc(var(--spacing) * 3);
107
101
  }
108
- .mb-0\.5 {
109
- margin-bottom: calc(var(--spacing) * 0.5);
110
- }
111
102
  .mb-1 {
112
103
  margin-bottom: calc(var(--spacing) * 1);
113
104
  }
114
105
  .mb-4 {
115
106
  margin-bottom: calc(var(--spacing) * 4);
116
107
  }
117
- .ml-2 {
118
- margin-left: calc(var(--spacing) * 2);
119
- }
120
- .ml-4 {
121
- margin-left: calc(var(--spacing) * 4);
122
- }
123
108
  .flex {
124
109
  display: flex;
125
110
  }
@@ -152,8 +137,8 @@
152
137
  width: calc(var(--spacing) * 10);
153
138
  height: calc(var(--spacing) * 10);
154
139
  }
155
- .h-0\.5 {
156
- height: calc(var(--spacing) * 0.5);
140
+ .h-2\.5 {
141
+ height: calc(var(--spacing) * 2.5);
157
142
  }
158
143
  .h-3 {
159
144
  height: calc(var(--spacing) * 3);
@@ -173,9 +158,6 @@
173
158
  .h-full {
174
159
  height: 100%;
175
160
  }
176
- .max-h-40 {
177
- max-height: calc(var(--spacing) * 40);
178
- }
179
161
  .max-h-\[60vh\] {
180
162
  max-height: 60vh;
181
163
  }
@@ -185,8 +167,8 @@
185
167
  .min-h-16 {
186
168
  min-height: calc(var(--spacing) * 16);
187
169
  }
188
- .w-0\.5 {
189
- width: calc(var(--spacing) * 0.5);
170
+ .w-2\.5 {
171
+ width: calc(var(--spacing) * 2.5);
190
172
  }
191
173
  .w-3 {
192
174
  width: calc(var(--spacing) * 3);
@@ -197,15 +179,12 @@
197
179
  .max-w-3\/4 {
198
180
  max-width: calc(3 / 4 * 100%);
199
181
  }
200
- .max-w-\[1120px\] {
201
- max-width: 1120px;
182
+ .max-w-180 {
183
+ max-width: calc(var(--spacing) * 180);
202
184
  }
203
185
  .max-w-sm {
204
186
  max-width: var(--container-sm);
205
187
  }
206
- .max-w-xl {
207
- max-width: var(--container-xl);
208
- }
209
188
  .min-w-full {
210
189
  min-width: 100%;
211
190
  }
@@ -224,9 +203,6 @@
224
203
  .animate-spin {
225
204
  animation: var(--animate-spin);
226
205
  }
227
- .cursor-pointer {
228
- cursor: pointer;
229
- }
230
206
  .resize-none {
231
207
  resize: none;
232
208
  }
@@ -260,9 +236,6 @@
260
236
  .justify-start {
261
237
  justify-content: flex-start;
262
238
  }
263
- .gap-0\.5 {
264
- gap: calc(var(--spacing) * 0.5);
265
- }
266
239
  .gap-1 {
267
240
  gap: calc(var(--spacing) * 1);
268
241
  }
@@ -290,9 +263,6 @@
290
263
  text-overflow: ellipsis;
291
264
  white-space: nowrap;
292
265
  }
293
- .overflow-auto {
294
- overflow: auto;
295
- }
296
266
  .overflow-x-auto {
297
267
  overflow-x: auto;
298
268
  }
@@ -343,6 +313,12 @@
343
313
  .border-input {
344
314
  border-color: var(--input);
345
315
  }
316
+ .border-muted-foreground\/40 {
317
+ border-color: var(--muted-foreground);
318
+ @supports (color: color-mix(in lab, red, red)) {
319
+ border-color: color-mix(in oklab, var(--muted-foreground) 40%, transparent);
320
+ }
321
+ }
346
322
  .border-primary {
347
323
  border-color: var(--primary);
348
324
  }
@@ -352,9 +328,6 @@
352
328
  .border-l-primary {
353
329
  border-left-color: var(--primary);
354
330
  }
355
- .bg-amber-50 {
356
- background-color: var(--color-amber-50);
357
- }
358
331
  .bg-background {
359
332
  background-color: var(--background);
360
333
  }
@@ -376,27 +349,9 @@
376
349
  .bg-destructive {
377
350
  background-color: var(--destructive);
378
351
  }
379
- .bg-destructive\/10 {
380
- background-color: var(--destructive);
381
- @supports (color: color-mix(in lab, red, red)) {
382
- background-color: color-mix(in oklab, var(--destructive) 10%, transparent);
383
- }
384
- }
385
- .bg-foreground {
386
- background-color: var(--foreground);
387
- }
388
- .bg-green-50 {
389
- background-color: var(--color-green-50);
390
- }
391
352
  .bg-muted {
392
353
  background-color: var(--muted);
393
354
  }
394
- .bg-muted-foreground\/50 {
395
- background-color: var(--muted-foreground);
396
- @supports (color: color-mix(in lab, red, red)) {
397
- background-color: color-mix(in oklab, var(--muted-foreground) 50%, transparent);
398
- }
399
- }
400
355
  .bg-muted\/50 {
401
356
  background-color: var(--muted);
402
357
  @supports (color: color-mix(in lab, red, red)) {
@@ -415,12 +370,6 @@
415
370
  background-color: color-mix(in oklab, var(--primary) 5%, transparent);
416
371
  }
417
372
  }
418
- .bg-primary\/10 {
419
- background-color: var(--primary);
420
- @supports (color: color-mix(in lab, red, red)) {
421
- background-color: color-mix(in oklab, var(--primary) 10%, transparent);
422
- }
423
- }
424
373
  .bg-red-50 {
425
374
  background-color: var(--color-red-50);
426
375
  }
@@ -475,6 +424,9 @@
475
424
  .py-4 {
476
425
  padding-block: calc(var(--spacing) * 4);
477
426
  }
427
+ .py-5 {
428
+ padding-block: calc(var(--spacing) * 5);
429
+ }
478
430
  .pt-1 {
479
431
  padding-top: calc(var(--spacing) * 1);
480
432
  }
@@ -487,9 +439,6 @@
487
439
  .pb-\[97px\] {
488
440
  padding-bottom: 97px;
489
441
  }
490
- .pl-2 {
491
- padding-left: calc(var(--spacing) * 2);
492
- }
493
442
  .pl-3 {
494
443
  padding-left: calc(var(--spacing) * 3);
495
444
  }
@@ -515,8 +464,9 @@
515
464
  font-size: var(--text-xs);
516
465
  line-height: var(--tw-leading, var(--text-xs--line-height));
517
466
  }
518
- .text-\[11px\] {
519
- font-size: 11px;
467
+ .leading-1 {
468
+ --tw-leading: calc(var(--spacing) * 1);
469
+ line-height: calc(var(--spacing) * 1);
520
470
  }
521
471
  .leading-relaxed {
522
472
  --tw-leading: var(--leading-relaxed);
@@ -547,27 +497,21 @@
547
497
  .whitespace-pre-wrap {
548
498
  white-space: pre-wrap;
549
499
  }
550
- .text-amber-700 {
551
- color: var(--color-amber-700);
552
- }
553
- .text-background {
554
- color: var(--background);
555
- }
556
500
  .text-card-foreground {
557
501
  color: var(--card-foreground);
558
502
  }
559
- .text-destructive {
560
- color: var(--destructive);
561
- }
562
503
  .text-foreground {
563
504
  color: var(--foreground);
564
505
  }
565
- .text-green-600 {
566
- color: var(--color-green-600);
567
- }
568
506
  .text-muted-foreground {
569
507
  color: var(--muted-foreground);
570
508
  }
509
+ .text-muted-foreground\/60 {
510
+ color: var(--muted-foreground);
511
+ @supports (color: color-mix(in lab, red, red)) {
512
+ color: color-mix(in oklab, var(--muted-foreground) 60%, transparent);
513
+ }
514
+ }
571
515
  .text-primary {
572
516
  color: var(--primary);
573
517
  }
@@ -635,15 +579,6 @@
635
579
  --tw-outline-style: none;
636
580
  outline-style: none;
637
581
  }
638
- .\[animation-delay\:0ms\] {
639
- animation-delay: 0ms;
640
- }
641
- .\[animation-delay\:150ms\] {
642
- animation-delay: 150ms;
643
- }
644
- .\[animation-delay\:300ms\] {
645
- animation-delay: 300ms;
646
- }
647
582
  .\[publish\:check-auth\] {
648
583
  publish: check-auth;
649
584
  }
@@ -679,16 +614,6 @@
679
614
  }
680
615
  }
681
616
  }
682
- .hover\:bg-foreground\/90 {
683
- &:hover {
684
- @media (hover: hover) {
685
- background-color: var(--foreground);
686
- @supports (color: color-mix(in lab, red, red)) {
687
- background-color: color-mix(in oklab, var(--foreground) 90%, transparent);
688
- }
689
- }
690
- }
691
- }
692
617
  .hover\:bg-muted {
693
618
  &:hover {
694
619
  @media (hover: hover) {
@@ -733,13 +658,6 @@
733
658
  }
734
659
  }
735
660
  }
736
- .hover\:text-foreground {
737
- &:hover {
738
- @media (hover: hover) {
739
- color: var(--foreground);
740
- }
741
- }
742
- }
743
661
  .hover\:text-primary\/80 {
744
662
  &:hover {
745
663
  @media (hover: hover) {
@@ -855,11 +773,6 @@
855
773
  border-color: var(--input);
856
774
  }
857
775
  }
858
- .dark\:bg-amber-950 {
859
- @media (prefers-color-scheme: dark) {
860
- background-color: var(--color-amber-950);
861
- }
862
- }
863
776
  .dark\:bg-destructive\/60 {
864
777
  @media (prefers-color-scheme: dark) {
865
778
  background-color: var(--destructive);
@@ -868,11 +781,6 @@
868
781
  }
869
782
  }
870
783
  }
871
- .dark\:bg-green-950 {
872
- @media (prefers-color-scheme: dark) {
873
- background-color: var(--color-green-950);
874
- }
875
- }
876
784
  .dark\:bg-input\/30 {
877
785
  @media (prefers-color-scheme: dark) {
878
786
  background-color: var(--input);
@@ -881,16 +789,6 @@
881
789
  }
882
790
  }
883
791
  }
884
- .dark\:text-amber-300 {
885
- @media (prefers-color-scheme: dark) {
886
- color: var(--color-amber-300);
887
- }
888
- }
889
- .dark\:text-green-400 {
890
- @media (prefers-color-scheme: dark) {
891
- color: var(--color-green-400);
892
- }
893
- }
894
792
  .dark\:hover\:bg-accent\/50 {
895
793
  @media (prefers-color-scheme: dark) {
896
794
  &:hover {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-platform/ui",
3
- "version": "0.0.14",
3
+ "version": "0.0.16",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "sideEffects": [
@@ -25,7 +25,6 @@
25
25
  "access": "public"
26
26
  },
27
27
  "peerDependencies": {
28
- "@phosphor-icons/react": "^2.1.0",
29
28
  "react": "^19.0.0",
30
29
  "react-dom": "^19.0.0"
31
30
  },
@@ -33,13 +32,13 @@
33
32
  "better-auth": "^1.4.20",
34
33
  "class-variance-authority": "^0.7.1",
35
34
  "clsx": "^2.1.1",
35
+ "lucide-react": "^0.574.0",
36
36
  "radix-ui": "^1.4.3",
37
37
  "react-markdown": "^10.1.0",
38
38
  "remark-gfm": "^4.0.1",
39
39
  "tailwind-merge": "^3.4.0"
40
40
  },
41
41
  "devDependencies": {
42
- "@phosphor-icons/react": "^2.1.10",
43
42
  "@tailwindcss/cli": "^4",
44
43
  "@types/react": "^19",
45
44
  "@types/react-dom": "^19",