@agentxjs/ui 0.0.6 → 0.1.1
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/api/index.d.ts +2 -3
- package/dist/browser-Bab_T5G7.js +39 -0
- package/dist/browser-Bab_T5G7.js.map +1 -0
- package/dist/components/container/AgentList.d.ts +45 -0
- package/dist/components/container/Chat.d.ts +47 -0
- package/dist/components/container/ChatHeader.d.ts +41 -0
- package/dist/components/container/ToolCard.d.ts +69 -0
- package/dist/components/container/index.d.ts +24 -19
- package/dist/components/{message → container/message}/MessageList.d.ts +1 -1
- package/dist/components/{message → container/message}/index.d.ts +0 -1
- package/dist/components/{message → container/message}/items/AssistantMessage.d.ts +1 -1
- package/dist/components/{message → container/message}/items/ErrorAlert.d.ts +1 -1
- package/dist/components/{message → container/message}/items/ToolCallMessage.d.ts +1 -1
- package/dist/components/{message → container/message}/items/ToolResultMessage.d.ts +1 -1
- package/dist/components/{message → container/message}/items/ToolUseMessage.d.ts +1 -1
- package/dist/components/{message → container/message}/items/UserMessage.d.ts +1 -1
- package/dist/components/{message → container/message}/items/index.d.ts +0 -1
- package/dist/components/{message → container/message}/parts/ToolResultContent.d.ts +1 -1
- package/dist/components/element/Badge.d.ts +1 -1
- package/dist/components/element/Button.d.ts +2 -2
- package/dist/components/element/EmojiPicker.d.ts +64 -0
- package/dist/components/element/MessageAvatar.d.ts +1 -1
- package/dist/components/element/Toast.d.ts +71 -0
- package/dist/components/element/index.d.ts +4 -0
- package/dist/components/pane/InputPane.d.ts +74 -0
- package/dist/components/pane/InputToolBar.d.ts +74 -0
- package/dist/components/pane/ListPane.d.ts +128 -0
- package/dist/components/pane/MessagePane.d.ts +111 -0
- package/dist/components/pane/NavBar.d.ts +71 -0
- package/dist/components/pane/index.d.ts +32 -0
- package/dist/components/studio/Studio.d.ts +23 -28
- package/dist/components/studio/index.d.ts +13 -6
- package/dist/globals.css +1 -200
- package/dist/hooks/index.d.ts +27 -13
- package/dist/hooks/useAgent.d.ts +44 -13
- package/dist/hooks/useAgentX.d.ts +7 -6
- package/dist/hooks/useImages.d.ts +84 -0
- package/dist/index.js +21330 -61
- package/dist/index.js.map +1 -1
- package/package.json +6 -5
- package/dist/components/container/AgentPane.d.ts +0 -56
- package/dist/components/container/ContainerView.d.ts +0 -119
- package/dist/components/container/DefinitionPane.d.ts +0 -27
- package/dist/components/container/InputPane.d.ts +0 -44
- package/dist/components/container/InputToolBar.d.ts +0 -22
- package/dist/components/container/MessagePane.d.ts +0 -32
- package/dist/components/container/SessionPane.d.ts +0 -35
- package/dist/components/container/types.d.ts +0 -67
- package/dist/components/input/InputBox.d.ts +0 -43
- package/dist/components/input/index.d.ts +0 -1
- package/dist/components/message/StatusIndicator.d.ts +0 -28
- package/dist/components/message/items/SystemMessage.d.ts +0 -25
- package/dist/hooks/useSession.d.ts +0 -79
- package/dist/index-B8Ijbzyc.js +0 -27676
- package/dist/index-B8Ijbzyc.js.map +0 -1
- package/dist/index-BtOS4F-X.js +0 -3013
- package/dist/index-BtOS4F-X.js.map +0 -1
- /package/dist/components/{message → container/message}/parts/FileContent.d.ts +0 -0
- /package/dist/components/{message → container/message}/parts/ImageContent.d.ts +0 -0
- /package/dist/components/{message → container/message}/parts/TextContent.d.ts +0 -0
- /package/dist/components/{message → container/message}/parts/ThinkingContent.d.ts +0 -0
- /package/dist/components/{message → container/message}/parts/ToolCallContent.d.ts +0 -0
- /package/dist/components/{message → container/message}/parts/index.d.ts +0 -0
package/dist/api/index.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
export * from '../hooks';
|
|
2
|
-
export * from '../components/container';
|
|
3
2
|
export * from '../components/studio';
|
|
4
|
-
export * from '../components/
|
|
5
|
-
export * from '../components/
|
|
3
|
+
export * from '../components/container';
|
|
4
|
+
export * from '../components/pane';
|
|
6
5
|
export * from '../components/layout';
|
|
7
6
|
export * from '../components/element';
|
|
8
7
|
export * from '../components/typography';
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
function _mergeNamespaces(n, m) {
|
|
2
|
+
for (var i = 0; i < m.length; i++) {
|
|
3
|
+
const e = m[i];
|
|
4
|
+
if (typeof e !== "string" && !Array.isArray(e)) {
|
|
5
|
+
for (const k in e) {
|
|
6
|
+
if (k !== "default" && !(k in n)) {
|
|
7
|
+
const d = Object.getOwnPropertyDescriptor(e, k);
|
|
8
|
+
if (d) {
|
|
9
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
10
|
+
enumerable: true,
|
|
11
|
+
get: () => e[k]
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return Object.freeze(Object.defineProperty(n, Symbol.toStringTag, { value: "Module" }));
|
|
19
|
+
}
|
|
20
|
+
var browser$1;
|
|
21
|
+
var hasRequiredBrowser;
|
|
22
|
+
function requireBrowser() {
|
|
23
|
+
if (hasRequiredBrowser) return browser$1;
|
|
24
|
+
hasRequiredBrowser = 1;
|
|
25
|
+
browser$1 = function() {
|
|
26
|
+
throw new Error(
|
|
27
|
+
"ws does not work in the browser. Browser clients must use the native WebSocket object"
|
|
28
|
+
);
|
|
29
|
+
};
|
|
30
|
+
return browser$1;
|
|
31
|
+
}
|
|
32
|
+
var browserExports = requireBrowser();
|
|
33
|
+
const browser = /* @__PURE__ */ _mergeNamespaces({
|
|
34
|
+
__proto__: null
|
|
35
|
+
}, [browserExports]);
|
|
36
|
+
export {
|
|
37
|
+
browser as b
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=browser-Bab_T5G7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser-Bab_T5G7.js","sources":["../../../node_modules/.pnpm/ws@8.18.3/node_modules/ws/browser.js"],"sourcesContent":["'use strict';\n\nmodule.exports = function () {\n throw new Error(\n 'ws does not work in the browser. Browser clients must use the native ' +\n 'WebSocket object'\n );\n};\n"],"names":["browser"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAEAA,cAAiB,WAAY;AAC3B,UAAM,IAAI;AAAA,MACR;AAAA;EAGJ;;;;;;;","x_google_ignoreList":[0]}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { AgentX } from 'agentxjs';
|
|
2
|
+
export interface AgentListProps {
|
|
3
|
+
/**
|
|
4
|
+
* AgentX instance
|
|
5
|
+
*/
|
|
6
|
+
agentx: AgentX | null;
|
|
7
|
+
/**
|
|
8
|
+
* Container ID for creating new images
|
|
9
|
+
* @default "default"
|
|
10
|
+
*/
|
|
11
|
+
containerId?: string;
|
|
12
|
+
/**
|
|
13
|
+
* Currently selected image ID
|
|
14
|
+
*/
|
|
15
|
+
selectedId?: string | null;
|
|
16
|
+
/**
|
|
17
|
+
* Callback when a conversation is selected
|
|
18
|
+
* @param imageId - The selected image ID
|
|
19
|
+
* @param agentId - The agent ID (if online)
|
|
20
|
+
*/
|
|
21
|
+
onSelect?: (imageId: string, agentId: string | null) => void;
|
|
22
|
+
/**
|
|
23
|
+
* Callback when a new conversation is created
|
|
24
|
+
* @param imageId - The new image ID
|
|
25
|
+
*/
|
|
26
|
+
onNew?: (imageId: string) => void;
|
|
27
|
+
/**
|
|
28
|
+
* Title displayed in header
|
|
29
|
+
* @default "Conversations"
|
|
30
|
+
*/
|
|
31
|
+
title?: string;
|
|
32
|
+
/**
|
|
33
|
+
* Enable search functionality
|
|
34
|
+
* @default true
|
|
35
|
+
*/
|
|
36
|
+
searchable?: boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Additional class name
|
|
39
|
+
*/
|
|
40
|
+
className?: string;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* AgentList component
|
|
44
|
+
*/
|
|
45
|
+
export declare function AgentList({ agentx, containerId, selectedId, onSelect, onNew, title, searchable, className, }: AgentListProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { AgentX } from 'agentxjs';
|
|
2
|
+
export interface ChatProps {
|
|
3
|
+
/**
|
|
4
|
+
* AgentX instance
|
|
5
|
+
*/
|
|
6
|
+
agentx: AgentX | null;
|
|
7
|
+
/**
|
|
8
|
+
* Image ID for the conversation (preferred in Image-First model)
|
|
9
|
+
*/
|
|
10
|
+
imageId?: string | null;
|
|
11
|
+
/**
|
|
12
|
+
* Agent ID to chat with (legacy, use imageId instead)
|
|
13
|
+
* @deprecated Use imageId instead
|
|
14
|
+
*/
|
|
15
|
+
agentId?: string | null;
|
|
16
|
+
/**
|
|
17
|
+
* Agent name to display in header
|
|
18
|
+
*/
|
|
19
|
+
agentName?: string;
|
|
20
|
+
/**
|
|
21
|
+
* Callback when save button is clicked
|
|
22
|
+
* Note: In Image-First model, messages are auto-saved
|
|
23
|
+
*/
|
|
24
|
+
onSave?: () => void;
|
|
25
|
+
/**
|
|
26
|
+
* Show save button in toolbar
|
|
27
|
+
* @default true
|
|
28
|
+
*/
|
|
29
|
+
showSaveButton?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Input placeholder text
|
|
32
|
+
*/
|
|
33
|
+
placeholder?: string;
|
|
34
|
+
/**
|
|
35
|
+
* Height ratio for input pane (0-1)
|
|
36
|
+
* @default 0.25
|
|
37
|
+
*/
|
|
38
|
+
inputHeightRatio?: number;
|
|
39
|
+
/**
|
|
40
|
+
* Additional class name
|
|
41
|
+
*/
|
|
42
|
+
className?: string;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Chat component
|
|
46
|
+
*/
|
|
47
|
+
export declare function Chat({ agentx, imageId, agentId: legacyAgentId, agentName, onSave, showSaveButton, placeholder, inputHeightRatio, className, }: ChatProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ChatHeader - Header component for Chat interface
|
|
3
|
+
*
|
|
4
|
+
* Displays current agent information, status, and actions.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```tsx
|
|
8
|
+
* <ChatHeader
|
|
9
|
+
* agentName="Assistant"
|
|
10
|
+
* status="thinking"
|
|
11
|
+
* messageCount={5}
|
|
12
|
+
* />
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
import * as React from "react";
|
|
16
|
+
export interface ChatHeaderProps {
|
|
17
|
+
/**
|
|
18
|
+
* Agent name to display
|
|
19
|
+
*/
|
|
20
|
+
agentName?: string;
|
|
21
|
+
/**
|
|
22
|
+
* Current agent status
|
|
23
|
+
*/
|
|
24
|
+
status?: "idle" | "queued" | "thinking" | "responding" | "tool_executing" | "error";
|
|
25
|
+
/**
|
|
26
|
+
* Number of messages in conversation
|
|
27
|
+
*/
|
|
28
|
+
messageCount?: number;
|
|
29
|
+
/**
|
|
30
|
+
* Additional actions on the right side
|
|
31
|
+
*/
|
|
32
|
+
actions?: React.ReactNode;
|
|
33
|
+
/**
|
|
34
|
+
* Additional class name
|
|
35
|
+
*/
|
|
36
|
+
className?: string;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* ChatHeader component
|
|
40
|
+
*/
|
|
41
|
+
export declare function ChatHeader({ agentName, status, messageCount, actions, className, }: ChatHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ToolCard - Collapsible tool call/result card
|
|
3
|
+
*
|
|
4
|
+
* Displays tool execution with status indicators:
|
|
5
|
+
* - Executing: blue with spinner
|
|
6
|
+
* - Success: green with checkmark
|
|
7
|
+
* - Error: red with X
|
|
8
|
+
*
|
|
9
|
+
* Features:
|
|
10
|
+
* - Collapsible content
|
|
11
|
+
* - Status-based styling
|
|
12
|
+
* - Duration display
|
|
13
|
+
* - Input/Output sections
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```tsx
|
|
17
|
+
* <ToolCard
|
|
18
|
+
* name="Bash"
|
|
19
|
+
* status="success"
|
|
20
|
+
* input={{ command: "ls -la" }}
|
|
21
|
+
* output="file1.txt\nfile2.txt"
|
|
22
|
+
* duration={1.23}
|
|
23
|
+
* />
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export type ToolStatus = "executing" | "success" | "error";
|
|
27
|
+
export interface ToolCardProps {
|
|
28
|
+
/**
|
|
29
|
+
* Tool name
|
|
30
|
+
*/
|
|
31
|
+
name: string;
|
|
32
|
+
/**
|
|
33
|
+
* Tool call ID
|
|
34
|
+
*/
|
|
35
|
+
id?: string;
|
|
36
|
+
/**
|
|
37
|
+
* Current status
|
|
38
|
+
*/
|
|
39
|
+
status: ToolStatus;
|
|
40
|
+
/**
|
|
41
|
+
* Tool input parameters
|
|
42
|
+
*/
|
|
43
|
+
input?: Record<string, unknown>;
|
|
44
|
+
/**
|
|
45
|
+
* Tool output (string or object)
|
|
46
|
+
*/
|
|
47
|
+
output?: unknown;
|
|
48
|
+
/**
|
|
49
|
+
* Execution duration in seconds
|
|
50
|
+
*/
|
|
51
|
+
duration?: number;
|
|
52
|
+
/**
|
|
53
|
+
* Whether output is an error
|
|
54
|
+
*/
|
|
55
|
+
isError?: boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Default expanded state
|
|
58
|
+
*/
|
|
59
|
+
defaultExpanded?: boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Additional class name
|
|
62
|
+
*/
|
|
63
|
+
className?: string;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* ToolCard component
|
|
67
|
+
*/
|
|
68
|
+
export declare function ToolCard({ name, id, status, input, output, duration, isError, defaultExpanded, className, }: ToolCardProps): import("react/jsx-runtime").JSX.Element;
|
|
69
|
+
export default ToolCard;
|
|
@@ -1,22 +1,27 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Container Components -
|
|
2
|
+
* Container Components - Business Logic Layer
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* -
|
|
4
|
+
* Integration layer that combines Pane (UI) with Hooks (logic).
|
|
5
|
+
* These components:
|
|
6
|
+
* - Use AgentX hooks (useImages, useAgent)
|
|
7
|
+
* - Map hook data to pane props
|
|
8
|
+
* - Handle events and callbacks
|
|
9
|
+
* - Manage business state
|
|
10
|
+
*
|
|
11
|
+
* Architecture:
|
|
12
|
+
* ```
|
|
13
|
+
* pane/ (pure UI) + hooks/ (logic) = container/ (business components)
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* Components:
|
|
17
|
+
* - AgentList: Conversation list with CRUD operations
|
|
18
|
+
* - Chat: Chat interface with messages and input
|
|
7
19
|
*/
|
|
8
|
-
export {
|
|
9
|
-
export type {
|
|
10
|
-
export {
|
|
11
|
-
export type {
|
|
12
|
-
export {
|
|
13
|
-
export type {
|
|
14
|
-
export {
|
|
15
|
-
export type {
|
|
16
|
-
export { MessagePane } from './MessagePane';
|
|
17
|
-
export type { MessagePaneProps } from './MessagePane';
|
|
18
|
-
export { InputPane } from './InputPane';
|
|
19
|
-
export type { InputPaneProps } from './InputPane';
|
|
20
|
-
export { InputToolBar } from './InputToolBar';
|
|
21
|
-
export type { InputToolBarProps } from './InputToolBar';
|
|
22
|
-
export type { SessionItem, AgentDefinitionItem } from './types';
|
|
20
|
+
export { AgentList } from './AgentList';
|
|
21
|
+
export type { AgentListProps } from './AgentList';
|
|
22
|
+
export { Chat } from './Chat';
|
|
23
|
+
export type { ChatProps } from './Chat';
|
|
24
|
+
export { ChatHeader } from './ChatHeader';
|
|
25
|
+
export type { ChatHeaderProps } from './ChatHeader';
|
|
26
|
+
export { ToolCard } from './ToolCard';
|
|
27
|
+
export type { ToolCardProps, ToolStatus } from './ToolCard';
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export { UserMessage, type UserMessageProps } from './UserMessage';
|
|
2
2
|
export { AssistantMessage, type AssistantMessageProps } from './AssistantMessage';
|
|
3
|
-
export { SystemMessage, type SystemMessageProps } from './SystemMessage';
|
|
4
3
|
export { ToolCallMessage } from './ToolCallMessage';
|
|
5
4
|
export { ToolResultMessage } from './ToolResultMessage';
|
|
6
5
|
export { ToolUseMessage, type ToolUseMessageProps } from './ToolUseMessage';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { VariantProps } from 'class-variance-authority';
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
declare const badgeVariants: (props?: ({
|
|
4
|
-
variant?: "default" | "
|
|
4
|
+
variant?: "default" | "success" | "primary" | "info" | "secondary" | "warning" | "destructive" | "outline" | null | undefined;
|
|
5
5
|
} & import('class-variance-authority/types').ClassProp) | undefined) => string;
|
|
6
6
|
export interface BadgeProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof badgeVariants> {
|
|
7
7
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { VariantProps } from 'class-variance-authority';
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
declare const buttonVariants: (props?: ({
|
|
4
|
-
variant?: "default" | "link" | "
|
|
5
|
-
size?: "default" | "
|
|
4
|
+
variant?: "default" | "link" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined;
|
|
5
|
+
size?: "default" | "icon" | "sm" | "lg" | null | undefined;
|
|
6
6
|
} & import('class-variance-authority/types').ClassProp) | undefined) => string;
|
|
7
7
|
export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
|
|
8
8
|
asChild?: boolean;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EmojiPicker - Emoji selection component using emoji-mart
|
|
3
|
+
*
|
|
4
|
+
* A wrapper component around emoji-mart picker with theme support.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```tsx
|
|
8
|
+
* <EmojiPicker onEmojiSelect={(emoji) => console.log(emoji)} />
|
|
9
|
+
* ```
|
|
10
|
+
*/
|
|
11
|
+
import * as React from "react";
|
|
12
|
+
export interface Emoji {
|
|
13
|
+
id: string;
|
|
14
|
+
name: string;
|
|
15
|
+
native: string;
|
|
16
|
+
unified: string;
|
|
17
|
+
keywords: string[];
|
|
18
|
+
shortcodes: string;
|
|
19
|
+
}
|
|
20
|
+
export interface EmojiPickerProps {
|
|
21
|
+
/**
|
|
22
|
+
* Callback when an emoji is selected
|
|
23
|
+
*/
|
|
24
|
+
onEmojiSelect?: (emoji: Emoji) => void;
|
|
25
|
+
/**
|
|
26
|
+
* Theme mode
|
|
27
|
+
* @default 'auto'
|
|
28
|
+
*/
|
|
29
|
+
theme?: "auto" | "light" | "dark";
|
|
30
|
+
/**
|
|
31
|
+
* Locale for emoji names
|
|
32
|
+
* @default 'en'
|
|
33
|
+
*/
|
|
34
|
+
locale?: string;
|
|
35
|
+
/**
|
|
36
|
+
* Number of emojis per row
|
|
37
|
+
* @default 9
|
|
38
|
+
*/
|
|
39
|
+
perLine?: number;
|
|
40
|
+
/**
|
|
41
|
+
* Show preview of selected emoji
|
|
42
|
+
* @default false
|
|
43
|
+
*/
|
|
44
|
+
preview?: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Show search input
|
|
47
|
+
* @default true
|
|
48
|
+
*/
|
|
49
|
+
searchPosition?: "sticky" | "static" | "none";
|
|
50
|
+
/**
|
|
51
|
+
* Show skin tone selector
|
|
52
|
+
* @default true
|
|
53
|
+
*/
|
|
54
|
+
skinTonePosition?: "preview" | "search" | "none";
|
|
55
|
+
/**
|
|
56
|
+
* Maximum frequently used emojis
|
|
57
|
+
* @default 16
|
|
58
|
+
*/
|
|
59
|
+
maxFrequentRows?: number;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* EmojiPicker component
|
|
63
|
+
*/
|
|
64
|
+
export declare const EmojiPicker: React.FC<EmojiPickerProps>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { VariantProps } from 'class-variance-authority';
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
declare const avatarVariants: (props?: ({
|
|
4
|
-
variant?: "error" | "
|
|
4
|
+
variant?: "error" | "success" | "primary" | "info" | "secondary" | "warning" | "neutral" | null | undefined;
|
|
5
5
|
size?: "sm" | "md" | "lg" | null | undefined;
|
|
6
6
|
} & import('class-variance-authority/types').ClassProp) | undefined) => string;
|
|
7
7
|
export interface MessageAvatarProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof avatarVariants> {
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Toast - Notification component
|
|
3
|
+
*
|
|
4
|
+
* Displays temporary notifications to users.
|
|
5
|
+
* Supports different severity levels and auto-dismiss.
|
|
6
|
+
*/
|
|
7
|
+
import * as React from "react";
|
|
8
|
+
export type ToastSeverity = "info" | "warn" | "error" | "fatal";
|
|
9
|
+
export interface ToastProps {
|
|
10
|
+
/**
|
|
11
|
+
* Unique identifier for the toast
|
|
12
|
+
*/
|
|
13
|
+
id: string;
|
|
14
|
+
/**
|
|
15
|
+
* Toast message
|
|
16
|
+
*/
|
|
17
|
+
message: string;
|
|
18
|
+
/**
|
|
19
|
+
* Severity level
|
|
20
|
+
* @default "info"
|
|
21
|
+
*/
|
|
22
|
+
severity?: ToastSeverity;
|
|
23
|
+
/**
|
|
24
|
+
* Auto dismiss duration in milliseconds
|
|
25
|
+
* Set to 0 to disable auto dismiss
|
|
26
|
+
* @default 5000
|
|
27
|
+
*/
|
|
28
|
+
duration?: number;
|
|
29
|
+
/**
|
|
30
|
+
* Callback when toast is dismissed
|
|
31
|
+
*/
|
|
32
|
+
onDismiss?: (id: string) => void;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Toast component - Single toast notification
|
|
36
|
+
*/
|
|
37
|
+
export declare const Toast: React.FC<ToastProps>;
|
|
38
|
+
/**
|
|
39
|
+
* ToastContainer - Container for managing multiple toasts
|
|
40
|
+
*/
|
|
41
|
+
export interface ToastContainerProps {
|
|
42
|
+
/**
|
|
43
|
+
* Array of toasts to display
|
|
44
|
+
*/
|
|
45
|
+
toasts: ToastProps[];
|
|
46
|
+
/**
|
|
47
|
+
* Position of the toast container
|
|
48
|
+
* @default "top-right"
|
|
49
|
+
*/
|
|
50
|
+
position?: "top-right" | "top-left" | "bottom-right" | "bottom-left" | "top-center";
|
|
51
|
+
/**
|
|
52
|
+
* Maximum number of toasts to display
|
|
53
|
+
* @default 3
|
|
54
|
+
*/
|
|
55
|
+
maxToasts?: number;
|
|
56
|
+
/**
|
|
57
|
+
* Callback when toast is dismissed
|
|
58
|
+
*/
|
|
59
|
+
onDismiss?: (id: string) => void;
|
|
60
|
+
}
|
|
61
|
+
export declare const ToastContainer: React.FC<ToastContainerProps>;
|
|
62
|
+
/**
|
|
63
|
+
* useToast hook - Manage toasts state
|
|
64
|
+
*/
|
|
65
|
+
export interface UseToastReturn {
|
|
66
|
+
toasts: ToastProps[];
|
|
67
|
+
showToast: (message: string, severity?: ToastSeverity, duration?: number) => void;
|
|
68
|
+
dismissToast: (id: string) => void;
|
|
69
|
+
clearToasts: () => void;
|
|
70
|
+
}
|
|
71
|
+
export declare const useToast: () => UseToastReturn;
|
|
@@ -3,6 +3,8 @@ export { AgentLogo } from './AgentLogo';
|
|
|
3
3
|
export { AppHeader } from './AppHeader';
|
|
4
4
|
export { Badge } from './Badge';
|
|
5
5
|
export { Button } from './Button';
|
|
6
|
+
export { EmojiPicker } from './EmojiPicker';
|
|
7
|
+
export type { Emoji, EmojiPickerProps } from './EmojiPicker';
|
|
6
8
|
export { EmptyState } from './EmptyState';
|
|
7
9
|
export { ImageAttachment } from './ImageAttachment';
|
|
8
10
|
export { Input } from './Input';
|
|
@@ -16,3 +18,5 @@ export { SearchInput } from './SearchInput';
|
|
|
16
18
|
export { TabNavigation } from './TabNavigation';
|
|
17
19
|
export { TimeAgo } from './TimeAgo';
|
|
18
20
|
export { TokenUsagePie } from './TokenUsagePie';
|
|
21
|
+
export { Toast, ToastContainer, useToast } from './Toast';
|
|
22
|
+
export type { ToastProps, ToastSeverity, ToastContainerProps, UseToastReturn } from './Toast';
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { ToolBarItem } from './InputToolBar';
|
|
2
|
+
/**
|
|
3
|
+
* InputPane - Full-height input area (WeChat style)
|
|
4
|
+
*
|
|
5
|
+
* A pure UI component where the entire pane is an input area:
|
|
6
|
+
* - Toolbar at the top
|
|
7
|
+
* - Full-height textarea filling the space
|
|
8
|
+
* - Send button at bottom right corner
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```tsx
|
|
12
|
+
* <InputPane
|
|
13
|
+
* onSend={(text) => handleSend(text)}
|
|
14
|
+
* placeholder="Type a message..."
|
|
15
|
+
* toolbarItems={[
|
|
16
|
+
* { id: 'emoji', icon: <Smile />, label: 'Emoji' },
|
|
17
|
+
* { id: 'attach', icon: <Paperclip />, label: 'Attach' },
|
|
18
|
+
* ]}
|
|
19
|
+
* />
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
import * as React from "react";
|
|
23
|
+
export interface InputPaneProps {
|
|
24
|
+
/**
|
|
25
|
+
* Callback when user sends a message
|
|
26
|
+
*/
|
|
27
|
+
onSend?: (text: string) => void;
|
|
28
|
+
/**
|
|
29
|
+
* Callback when stop button is clicked (during loading)
|
|
30
|
+
*/
|
|
31
|
+
onStop?: () => void;
|
|
32
|
+
/**
|
|
33
|
+
* Whether the input is disabled
|
|
34
|
+
*/
|
|
35
|
+
disabled?: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Whether currently loading/processing
|
|
38
|
+
*/
|
|
39
|
+
isLoading?: boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Placeholder text
|
|
42
|
+
*/
|
|
43
|
+
placeholder?: string;
|
|
44
|
+
/**
|
|
45
|
+
* Toolbar items (left side)
|
|
46
|
+
*/
|
|
47
|
+
toolbarItems?: ToolBarItem[];
|
|
48
|
+
/**
|
|
49
|
+
* Toolbar items (right side)
|
|
50
|
+
*/
|
|
51
|
+
toolbarRightItems?: ToolBarItem[];
|
|
52
|
+
/**
|
|
53
|
+
* Callback when a toolbar item is clicked
|
|
54
|
+
*/
|
|
55
|
+
onToolbarItemClick?: (id: string) => void;
|
|
56
|
+
/**
|
|
57
|
+
* Show toolbar
|
|
58
|
+
* @default true when toolbarItems provided
|
|
59
|
+
*/
|
|
60
|
+
showToolbar?: boolean;
|
|
61
|
+
/**
|
|
62
|
+
* Additional class name
|
|
63
|
+
*/
|
|
64
|
+
className?: string;
|
|
65
|
+
/**
|
|
66
|
+
* Enable built-in emoji picker for toolbar item with id='emoji'
|
|
67
|
+
* @default true
|
|
68
|
+
*/
|
|
69
|
+
enableEmojiPicker?: boolean;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* InputPane component - WeChat style full-height input
|
|
73
|
+
*/
|
|
74
|
+
export declare const InputPane: React.ForwardRefExoticComponent<InputPaneProps & React.RefAttributes<HTMLDivElement>>;
|