@iloveagents/foundry-web-ui 0.33.2 → 0.33.3
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.
|
@@ -480,6 +480,13 @@ export const FOUNDRY_VIOLET_THEME = {
|
|
|
480
480
|
border: "oklch(92% 0.008 290)",
|
|
481
481
|
input: "oklch(92% 0.008 290)",
|
|
482
482
|
ring: "oklch(43% 0.24 286)",
|
|
483
|
+
heading: "var(--primary)",
|
|
484
|
+
contentHeading1: "var(--primary)",
|
|
485
|
+
contentHeading2: "var(--foreground)",
|
|
486
|
+
contentHeading3: "var(--foreground)",
|
|
487
|
+
contentHeading4: "var(--foreground)",
|
|
488
|
+
contentHeading5: "var(--foreground)",
|
|
489
|
+
contentHeading6: "var(--foreground)",
|
|
483
490
|
},
|
|
484
491
|
sidebar: {
|
|
485
492
|
light: {
|
|
@@ -489,8 +496,8 @@ export const FOUNDRY_VIOLET_THEME = {
|
|
|
489
496
|
sidebarPrimaryForeground: "oklch(100% 0 0)",
|
|
490
497
|
sidebarAccent: "color-mix(in srgb, var(--primary) 4%, var(--background) 96%)",
|
|
491
498
|
sidebarAccentForeground: "color-mix(in srgb, var(--foreground) 92%, var(--primary) 8%)",
|
|
492
|
-
sidebarSelected: "var(--
|
|
493
|
-
sidebarSelectedForeground: "var(--
|
|
499
|
+
sidebarSelected: "var(--sidebar)",
|
|
500
|
+
sidebarSelectedForeground: "var(--sidebar-primary)",
|
|
494
501
|
sidebarIcon: "color-mix(in srgb, var(--sidebar-foreground) 60%, transparent)",
|
|
495
502
|
sidebarBorder: "color-mix(in srgb, var(--border) 96%, var(--foreground) 4%)",
|
|
496
503
|
sidebarRing: "oklch(43% 0.24 286)",
|
|
@@ -502,8 +509,8 @@ export const FOUNDRY_VIOLET_THEME = {
|
|
|
502
509
|
sidebarPrimaryForeground: "oklch(0.98 0 0)",
|
|
503
510
|
sidebarAccent: "color-mix(in srgb, var(--primary) 8%, var(--background) 92%)",
|
|
504
511
|
sidebarAccentForeground: "color-mix(in srgb, var(--foreground) 90%, white 10%)",
|
|
505
|
-
sidebarSelected: "
|
|
506
|
-
sidebarSelectedForeground: "var(--
|
|
512
|
+
sidebarSelected: "var(--sidebar)",
|
|
513
|
+
sidebarSelectedForeground: "var(--sidebar-primary)",
|
|
507
514
|
sidebarIcon: "color-mix(in srgb, var(--sidebar-foreground) 60%, transparent)",
|
|
508
515
|
sidebarBorder: "color-mix(in srgb, var(--border) 90%, white 10%)",
|
|
509
516
|
sidebarRing: "oklch(0.72 0.18 286)",
|
|
@@ -529,6 +536,13 @@ export const FOUNDRY_VIOLET_THEME = {
|
|
|
529
536
|
border: "oklch(1 0.01 286 / 12%)",
|
|
530
537
|
input: "oklch(1 0.01 286 / 15%)",
|
|
531
538
|
ring: "oklch(0.72 0.18 286)",
|
|
539
|
+
heading: "var(--primary)",
|
|
540
|
+
contentHeading1: "var(--primary)",
|
|
541
|
+
contentHeading2: "var(--foreground)",
|
|
542
|
+
contentHeading3: "var(--foreground)",
|
|
543
|
+
contentHeading4: "var(--foreground)",
|
|
544
|
+
contentHeading5: "var(--foreground)",
|
|
545
|
+
contentHeading6: "var(--foreground)",
|
|
532
546
|
},
|
|
533
547
|
typography: {
|
|
534
548
|
bodyFont: '"Segoe UI", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, sans-serif',
|
|
@@ -7,7 +7,7 @@ export declare function ConversationHistory({ groups, workspaceId, onClose, show
|
|
|
7
7
|
showBack?: boolean;
|
|
8
8
|
welcome?: boolean;
|
|
9
9
|
compact?: boolean;
|
|
10
|
-
/** The global start page shows
|
|
10
|
+
/** The global start page shows recent and pinned chats below the composer. */
|
|
11
11
|
home?: boolean;
|
|
12
12
|
onViewAll?: () => void;
|
|
13
13
|
/** Current content entity. Compact homes show only an exact match unless this is the workspace root. */
|
|
@@ -5,6 +5,7 @@ import { Fragment, useEffect, useState } from "react";
|
|
|
5
5
|
import { Link } from "react-router";
|
|
6
6
|
import { ArrowLeft, MessageSquare, MoreHorizontal, Pin, Loader2, ChevronDown, Check, MessagesSquare, PauseCircle, Copy, } from "lucide-react";
|
|
7
7
|
import { useChatRuns, isChatRunActive } from "../lib/chat-runs-store.js";
|
|
8
|
+
const HOME_SECTION_LIMIT = 5;
|
|
8
9
|
/** History is a view of existing navigation targets, never a second chat runtime. */
|
|
9
10
|
export function ConversationHistory({ groups, workspaceId, onClose, showBack = true, welcome = false, compact = false, home = false, onViewAll, entityId, rootContext = false, }) {
|
|
10
11
|
const [loadingTo, setLoadingTo] = useState(null);
|
|
@@ -76,8 +77,12 @@ export function ConversationHistory({ groups, workspaceId, onClose, showBack = t
|
|
|
76
77
|
}
|
|
77
78
|
return (active(b) - active(a) || Number(Boolean(b.meta?.pinned)) - Number(Boolean(a.meta?.pinned)));
|
|
78
79
|
});
|
|
79
|
-
const homeRecentItems = home
|
|
80
|
-
|
|
80
|
+
const homeRecentItems = home
|
|
81
|
+
? items.filter((item) => !item.meta?.pinned).slice(0, HOME_SECTION_LIMIT)
|
|
82
|
+
: [];
|
|
83
|
+
const homePinnedItems = home
|
|
84
|
+
? items.filter((item) => item.meta?.pinned).slice(0, HOME_SECTION_LIMIT)
|
|
85
|
+
: [];
|
|
81
86
|
const homeHasItems = homeRecentItems.length > 0 || homePinnedItems.length > 0;
|
|
82
87
|
const visibleItems = compact ? items.slice(0, 3) : items;
|
|
83
88
|
const activeItems = visibleItems.filter((item) => {
|
|
@@ -105,9 +110,9 @@ export function ConversationHistory({ groups, workspaceId, onClose, showBack = t
|
|
|
105
110
|
? "w-full"
|
|
106
111
|
: compact
|
|
107
112
|
? "w-full"
|
|
108
|
-
: "mx-auto flex min-h-0 w-full max-w-3xl flex-1 flex-col px-4 pb-4", children: [welcome && (_jsxs("div", { className: "pb-6 pt-8", children: [_jsx("h1", { className: "text-xl font-semibold", children: "How can I help?" }), _jsx("p", { className: "mt-2 text-sm text-muted-foreground", children: "Start something new or continue a recent chat." })] })), showBack && (_jsxs("button", { onClick: onClose, className: "mb-4 flex items-center gap-2 py-2 text-xs text-muted-foreground hover:text-foreground", children: [_jsx(ArrowLeft, { size: 14 }), " Back to chat"] })), (!compact || items.length > 0) && (
|
|
109
|
-
? "mb-2 mt-5 flex items-center justify-
|
|
110
|
-
: "mb-2 mt-2 flex items-center justify-between", children:
|
|
113
|
+
: "mx-auto flex min-h-0 w-full max-w-3xl flex-1 flex-col px-4 pb-4", children: [welcome && (_jsxs("div", { className: "pb-6 pt-8", children: [_jsx("h1", { className: "text-xl font-semibold", children: "How can I help?" }), _jsx("p", { className: "mt-2 text-sm text-muted-foreground", children: "Start something new or continue a recent chat." })] })), showBack && (_jsxs("button", { onClick: onClose, className: "mb-4 flex items-center gap-2 py-2 text-xs text-muted-foreground hover:text-foreground", children: [_jsx(ArrowLeft, { size: 14 }), " Back to chat"] })), (!compact || items.length > 0) && (_jsx("div", { className: home
|
|
114
|
+
? "mb-2 mt-5 flex items-center justify-center px-1 text-center"
|
|
115
|
+
: "mb-2 mt-2 flex items-center justify-between", children: _jsx("h2", { className: compact ? "text-xs font-medium text-muted-foreground" : "text-base font-semibold", children: home ? "Your chats" : compact ? "Recent chats" : "Chat history" }) })), Boolean(workspaceId) && !compact && (_jsx("div", { className: "mb-3", children: _jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsxs(Button, { variant: "outline", "aria-label": "History filter", className: "w-full justify-between font-normal shadow-none", children: [_jsx("span", { className: "truncate", children: all ? "All chats" : "Last used in this workspace" }), _jsx(ChevronDown, { className: "size-4 shrink-0 text-muted-foreground", "aria-hidden": "true" })] }) }), _jsx(DropdownMenuContent, { align: "start", className: "w-[var(--radix-dropdown-menu-trigger-width)]", children: [
|
|
111
116
|
{ value: false, label: "Last used in this workspace" },
|
|
112
117
|
{ value: true, label: "All chats" },
|
|
113
118
|
].map((option) => (_jsxs(DropdownMenuItem, { role: "menuitemradio", "aria-checked": all === option.value, onSelect: () => setAll(option.value), children: [_jsx("span", { className: "flex-1", children: option.label }), all === option.value && _jsx(Check, { className: "size-4", "aria-hidden": "true" })] }, option.label))) })] }) })), !compact && (_jsx(Input, { "aria-label": "Search chats", placeholder: "Search chats", value: search, onChange: (event) => setSearch(event.target.value), className: "mb-3" })), _jsx("span", { className: "sr-only", role: "status", children: copiedId ? "Chat ID copied" : "" }), loadError && (_jsx("p", { role: "alert", className: "mb-2 text-xs text-destructive", children: loadError })), _jsxs("div", { className: home
|
|
@@ -154,7 +159,7 @@ export function ConversationHistory({ groups, workspaceId, onClose, showBack = t
|
|
|
154
159
|
onClose();
|
|
155
160
|
}, "data-conversation-row": true, className: home
|
|
156
161
|
? "flex min-w-0 flex-1 items-center gap-3 rounded-lg px-2 py-2 text-left text-sm focus-visible:outline-2 focus-visible:outline-primary"
|
|
157
|
-
: "flex min-w-0 flex-1 items-center gap-2 rounded-lg px-2 py-1.5 text-sm hover:bg-muted focus-visible:outline-2 focus-visible:outline-primary", children: [loadingTo === item.to ? (_jsx(Loader2, { className: "size-4 shrink-0 animate-spin text-muted-foreground", "aria-label": "Opening chat" })) : runFor(item)?.status === "running" ? (_jsx(Loader2, { className: "size-4 shrink-0 animate-spin text-primary motion-reduce:animate-none", "aria-hidden": true })) : runFor(item)?.status === "waiting" ? (_jsx(PauseCircle, { className: "size-4 shrink-0 text-primary", "aria-hidden": true })) : item.meta?.pinned ? (_jsx(Pin, { className: "size-4 shrink-0 text-muted-foreground", "aria-label": "Pinned chat" })) : (_jsx(MessageSquare, { className: "size-4 shrink-0 text-muted-foreground" })), _jsxs("span", { className: "min-w-0 flex-1", children: [_jsx("span", { className: "block truncate", children: item.label }), " ", runFor(item) && isChatRunActive(runFor(item)) ? (_jsx("span", { className: "block text-xs text-primary", children: runFor(item)?.status === "waiting" ? "Waiting for you" : "Running" })) : ((!compact || rootContext) && (_jsx("span", { className: "block truncate text-xs text-muted-foreground", children: !all &&
|
|
162
|
+
: "flex min-w-0 flex-1 items-center gap-2 rounded-lg px-2 py-1.5 text-sm hover:bg-muted focus-visible:outline-2 focus-visible:outline-primary", children: [loadingTo === item.to ? (_jsx(Loader2, { className: "size-4 shrink-0 animate-spin text-muted-foreground", "aria-label": "Opening chat" })) : runFor(item)?.status === "running" ? (_jsx(Loader2, { className: "size-4 shrink-0 animate-spin text-primary motion-reduce:animate-none", "aria-hidden": true })) : runFor(item)?.status === "waiting" ? (_jsx(PauseCircle, { className: "size-4 shrink-0 text-primary", "aria-hidden": true })) : item.meta?.pinned ? (_jsx(Pin, { className: "size-4 shrink-0 text-muted-foreground", "aria-label": "Pinned chat" })) : (_jsx(MessageSquare, { className: "size-4 shrink-0 text-muted-foreground" })), _jsxs("span", { className: "min-w-0 flex-1", children: [_jsx("span", { className: "block truncate", children: item.label }), " ", runFor(item) && isChatRunActive(runFor(item)) ? (_jsx("span", { className: "block text-xs text-primary", children: runFor(item)?.status === "waiting" ? "Waiting for you" : "Running" })) : ((home || !compact || rootContext) && (_jsx("span", { className: "block truncate text-xs text-muted-foreground", children: !all &&
|
|
158
163
|
typeof item.meta?.previewEntityName === "string" &&
|
|
159
164
|
item.meta.previewEntityName
|
|
160
165
|
? `Last at ${item.meta.previewEntityName}`
|
|
@@ -181,5 +186,5 @@ export function ConversationHistory({ groups, workspaceId, onClose, showBack = t
|
|
|
181
186
|
.catch(() => setLoadError(`Could not copy. Chat ID: ${decodeURIComponent(id)}`));
|
|
182
187
|
}, children: [_jsx(Copy, { className: "size-4" }), "Copy chat ID"] }), Boolean(item.actions?.length) && _jsx(DropdownMenuSeparator, {}), item.actions?.map((action) => (_jsxs(Fragment, { children: [action.separator && _jsx(DropdownMenuSeparator, {}), _jsxs(DropdownMenuItem, { onSelect: () => {
|
|
183
188
|
void action.handler();
|
|
184
|
-
}, className: action.destructive ? "text-destructive" : undefined, children: [_jsx(action.icon, { className: "mr-2 size-4" }), action.label] })] }, action.label)))] })] })] }, item.to)))] }, section.label))), items.length === 0 && !compact && (_jsx("p", { className: "py-3 text-sm text-muted-foreground", children: search ? "No matching chats" : "No chats yet" }))] }), compact && onViewAll && !home && (_jsxs(Button, { variant: "ghost", size: "sm", onClick: onViewAll, className: "mt-1 h-9 w-fit gap-2 px-2 text-sm font-normal text-muted-foreground [@media(pointer:coarse)]:min-h-11", children: [_jsx(MessagesSquare, { className: "size-4", "aria-hidden": true }), "Chat history"] }))] }));
|
|
189
|
+
}, className: action.destructive ? "text-destructive" : undefined, children: [_jsx(action.icon, { className: "mr-2 size-4" }), action.label] })] }, action.label)))] })] })] }, item.to)))] }, section.label))), items.length === 0 && !compact && (_jsx("p", { className: "py-3 text-sm text-muted-foreground", children: search ? "No matching chats" : "No chats yet" }))] }), home && onViewAll && (_jsx("div", { className: "mt-2 flex justify-center", children: _jsxs(Button, { variant: "ghost", size: "sm", onClick: onViewAll, className: "h-9 w-fit gap-2 px-2 text-sm font-normal text-muted-foreground [@media(pointer:coarse)]:min-h-11", children: [_jsx(MessagesSquare, { className: "size-4", "aria-hidden": true }), "View all conversations"] }) })), compact && onViewAll && !home && (_jsxs(Button, { variant: "ghost", size: "sm", onClick: onViewAll, className: "mt-1 h-9 w-fit gap-2 px-2 text-sm font-normal text-muted-foreground [@media(pointer:coarse)]:min-h-11", children: [_jsx(MessagesSquare, { className: "size-4", "aria-hidden": true }), "Chat history"] }))] }));
|
|
185
190
|
}
|
|
@@ -25,10 +25,10 @@ export function SelectionBridge({ children }) {
|
|
|
25
25
|
top: rect.top - bounds.top,
|
|
26
26
|
height: rect.height,
|
|
27
27
|
left: rect.left - bounds.left + 0.5,
|
|
28
|
-
rowRight: rect.right - bounds.left - 1,
|
|
29
28
|
width: bounds.width,
|
|
30
29
|
navHeight: bounds.height,
|
|
31
30
|
surfaceWidth: node.nextElementSibling?.getBoundingClientRect().width ?? 0,
|
|
31
|
+
radius: Math.min(16, rect.height / 2, Number.parseFloat(getComputedStyle(row).borderTopLeftRadius) || 0),
|
|
32
32
|
}
|
|
33
33
|
: null);
|
|
34
34
|
});
|
|
@@ -46,6 +46,10 @@ export function SelectionBridge({ children }) {
|
|
|
46
46
|
attributes: true,
|
|
47
47
|
attributeFilter: ["class", "style", "data-active-nav-row"],
|
|
48
48
|
});
|
|
49
|
+
mutation?.observe(document.documentElement, {
|
|
50
|
+
attributes: true,
|
|
51
|
+
attributeFilter: ["class", "style"],
|
|
52
|
+
});
|
|
49
53
|
node.addEventListener("scroll", measure, true);
|
|
50
54
|
measure();
|
|
51
55
|
return () => {
|
|
@@ -55,27 +59,55 @@ export function SelectionBridge({ children }) {
|
|
|
55
59
|
node.removeEventListener("scroll", measure, true);
|
|
56
60
|
};
|
|
57
61
|
}, []);
|
|
58
|
-
return (_jsxs("div", { ref: root, "data-connected-navigation": anchor ? "true" : undefined, className: "relative flex shrink-0",
|
|
62
|
+
return (_jsxs("div", { ref: root, "data-connected-navigation": anchor ? "true" : undefined, className: "relative flex shrink-0", style: {
|
|
63
|
+
"--connected-row-radius": anchor ? `${anchor.radius}px` : undefined,
|
|
64
|
+
}, children: [_jsx("style", { children: `
|
|
59
65
|
[data-connected-navigation="true"] + [data-workbench-surface]::after { display: none; }
|
|
60
66
|
.workbench-preview [data-sidebar-surface="desktop"] nav { padding-right: 16px; }
|
|
61
67
|
.workbench-preview [data-sidebar-surface="desktop"] { border-right-color: transparent; }
|
|
62
68
|
[data-connected-navigation="true"] [data-sidebar-surface="desktop"] [data-active-nav-row="true"] {
|
|
63
|
-
|
|
69
|
+
background: var(--background);
|
|
70
|
+
border-color: transparent;
|
|
71
|
+
border-top-right-radius: 0;
|
|
72
|
+
border-bottom-right-radius: 0;
|
|
73
|
+
}
|
|
74
|
+
[data-connected-navigation="true"] [data-sidebar-surface="desktop"] [data-active-nav-row="true"]::after {
|
|
75
|
+
content: "";
|
|
76
|
+
position: absolute;
|
|
77
|
+
z-index: 0;
|
|
78
|
+
inset-block: 0;
|
|
79
|
+
left: 100%;
|
|
80
|
+
width: 16px;
|
|
81
|
+
background: var(--background);
|
|
82
|
+
}
|
|
83
|
+
[data-connected-navigation="true"] [data-sidebar-surface="desktop"] [data-active-nav-row="true"]::before {
|
|
84
|
+
content: "";
|
|
85
|
+
position: absolute;
|
|
86
|
+
z-index: 1;
|
|
87
|
+
inset-block: 5px;
|
|
88
|
+
left: 5px;
|
|
89
|
+
right: -10px;
|
|
90
|
+
border-radius: max(0px, calc(var(--connected-row-radius) - 5px));
|
|
91
|
+
background: var(--sidebar-selected);
|
|
92
|
+
pointer-events: none;
|
|
93
|
+
}
|
|
94
|
+
[data-connected-navigation="true"] [data-sidebar-surface="desktop"] [data-active-nav-row="true"] > * {
|
|
95
|
+
z-index: 2;
|
|
64
96
|
}
|
|
65
|
-
` }), children, anchor && (_jsx("svg", { "aria-hidden": "true", className: "pointer-events-none absolute z-20", style: { inset: 0, width: anchor.width + anchor.surfaceWidth, height: anchor.navHeight }, viewBox: `0 0 ${anchor.width + anchor.surfaceWidth} ${anchor.navHeight}`, children: _jsx("path", { fill: "none", stroke: "var(--sidebar-ring)", strokeOpacity: 0.6, strokeWidth: 1, d: `M ${anchor.width +
|
|
66
|
-
H ${anchor.width + anchor.surfaceWidth -
|
|
67
|
-
Q ${anchor.width + anchor.surfaceWidth - 0.5},0.5 ${anchor.width + anchor.surfaceWidth - 0.5}
|
|
68
|
-
V ${anchor.navHeight -
|
|
69
|
-
Q ${anchor.width + anchor.surfaceWidth - 0.5},${anchor.navHeight - 0.5} ${anchor.width + anchor.surfaceWidth -
|
|
70
|
-
H ${anchor.width +
|
|
71
|
-
Q ${anchor.width - 0.5},${anchor.navHeight - 0.5} ${anchor.width - 0.5},${anchor.navHeight -
|
|
72
|
-
V ${anchor.top + anchor.height +
|
|
73
|
-
Q ${anchor.width - 0.5},${anchor.top + anchor.height - 0.5} ${anchor.width -
|
|
74
|
-
H ${anchor.left +
|
|
75
|
-
Q ${anchor.left},${anchor.top + anchor.height - 0.5} ${anchor.left},${anchor.top + anchor.height -
|
|
76
|
-
V ${anchor.top +
|
|
77
|
-
Q ${anchor.left},${anchor.top + 0.5} ${anchor.left +
|
|
78
|
-
H ${anchor.width -
|
|
79
|
-
Q ${anchor.width - 0.5},${anchor.top + 0.5} ${anchor.width - 0.5},${anchor.top -
|
|
80
|
-
V
|
|
97
|
+
` }), children, anchor && (_jsx("svg", { "aria-hidden": "true", className: "pointer-events-none absolute z-20", style: { inset: 0, width: anchor.width + anchor.surfaceWidth, height: anchor.navHeight }, viewBox: `0 0 ${anchor.width + anchor.surfaceWidth} ${anchor.navHeight}`, children: _jsx("path", { fill: "none", stroke: "var(--sidebar-ring)", strokeOpacity: 0.6, strokeWidth: 1, d: `M ${anchor.width + anchor.radius},0.5
|
|
98
|
+
H ${anchor.width + anchor.surfaceWidth - anchor.radius}
|
|
99
|
+
Q ${anchor.width + anchor.surfaceWidth - 0.5},0.5 ${anchor.width + anchor.surfaceWidth - 0.5},${anchor.radius}
|
|
100
|
+
V ${anchor.navHeight - anchor.radius}
|
|
101
|
+
Q ${anchor.width + anchor.surfaceWidth - 0.5},${anchor.navHeight - 0.5} ${anchor.width + anchor.surfaceWidth - anchor.radius},${anchor.navHeight - 0.5}
|
|
102
|
+
H ${anchor.width + anchor.radius}
|
|
103
|
+
Q ${anchor.width - 0.5},${anchor.navHeight - 0.5} ${anchor.width - 0.5},${anchor.navHeight - anchor.radius}
|
|
104
|
+
V ${anchor.top + anchor.height + anchor.radius}
|
|
105
|
+
Q ${anchor.width - 0.5},${anchor.top + anchor.height - 0.5} ${anchor.width - anchor.radius},${anchor.top + anchor.height - 0.5}
|
|
106
|
+
H ${anchor.left + anchor.radius}
|
|
107
|
+
Q ${anchor.left},${anchor.top + anchor.height - 0.5} ${anchor.left},${anchor.top + anchor.height - anchor.radius}
|
|
108
|
+
V ${anchor.top + anchor.radius}
|
|
109
|
+
Q ${anchor.left},${anchor.top + 0.5} ${anchor.left + anchor.radius},${anchor.top + 0.5}
|
|
110
|
+
H ${anchor.width - anchor.radius}
|
|
111
|
+
Q ${anchor.width - 0.5},${anchor.top + 0.5} ${anchor.width - 0.5},${anchor.top - anchor.radius}
|
|
112
|
+
V ${anchor.radius} Q ${anchor.width - 0.5},0.5 ${anchor.width + anchor.radius},0.5 Z` }) }))] }));
|
|
81
113
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@iloveagents/foundry-web-ui",
|
|
3
|
-
"version": "0.33.
|
|
3
|
+
"version": "0.33.3",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "React agent UI core for Foundry UI — chat, composer, AG-UI adapter for assistant-ui, tool cards, panels, sidebar, theme runtime, and UI stores.",
|
|
6
6
|
"keywords": [
|
|
@@ -80,8 +80,8 @@
|
|
|
80
80
|
"recharts": "^3.10.1",
|
|
81
81
|
"remark-gfm": "^4.0.0",
|
|
82
82
|
"tailwind-merge": "^3.5.0",
|
|
83
|
-
"@iloveagents/foundry-agent": "^0.33.
|
|
84
|
-
"@iloveagents/foundry-web-primitives": "^0.33.
|
|
83
|
+
"@iloveagents/foundry-agent": "^0.33.3",
|
|
84
|
+
"@iloveagents/foundry-web-primitives": "^0.33.3"
|
|
85
85
|
},
|
|
86
86
|
"devDependencies": {
|
|
87
87
|
"@ag-ui/client": "^0.0.52",
|