import React from 'react'; export declare enum RoleEnum { USER = "user", ASSISTANT = "assistant" } export type Role = { /** * 角色类型 * @type { 'user' | 'assistant' } * @default undefined */ role: 'user' | 'assistant'; /** * 头像 * @type { string | React.ReactNode } * @default undefined */ avatar?: string | React.ReactNode; /** * 名称 * @type { string } * @default undefined */ name?: string; }; export interface Message { /** * 角色 * @type { 'user' | 'assistant' } * @default undefined */ role: Role['role']; /** * 内容 * @type { string } * @default undefined */ content?: string; /** * 是否加载中 * @type { boolean } * @default undefined */ loading?: boolean | React.ReactNode; /** * 时间 * @type { number | string } * @default undefined */ time?: number | string; /** * 状态 * @type { 'success' | 'error' | 'pending' } * @default undefined */ status?: 'success' | 'error' | 'pending'; /** * 刷新回调 * @type { () => void } * @default undefined */ onRefresh?: () => void; } export interface BubbleListPropsItem extends Message, Role { /** * 自定义类名 * @type { string } * @default undefined */ className?: string; } export interface BubbleListProps { /** * 角色列表 * @type { Role[] } * @default undefined */ roles: Role[]; /** * 消息列表 * @type { Message[] } * @default undefined */ messages: Message[]; /** * 加载中占位内容 * @type { string | React.ReactNode } * @default undefined */ fallbackPlaceholder?: string | React.ReactNode; /** * 加载状态 * @type { boolean } * @default undefined */ loading?: boolean; /** * 渲染每一个消息气泡的方法 * @type { (props: BubbleListPropsItem) => React.ReactNode } * @default undefined */ children: (props: BubbleListPropsItem) => React.ReactNode; /** * 自定义类名 */ className?: string; /** * 自定义样式 * @type { React.CSSProperties } * @default undefined */ style?: React.CSSProperties; } export interface BubbleProps extends Role, Message { /** * 是否展示头部 * @type { boolean } * @default undefined */ showHeader?: boolean; /** * 自定义类名 * @type { string } * @default undefined */ className?: string; /** * 头部插槽 * @type { React.ReactNode | ((props: BubbleProps) => React.ReactNode) } * @default undefined */ header?: React.ReactNode | ((props: BubbleProps) => React.ReactNode); /** * 底部插槽 * @type { React.ReactNode | ((props: BubbleProps) => React.ReactNode) } * @default undefined */ footer?: React.ReactNode | ((props: BubbleProps) => React.ReactNode); /** * 底部插槽位置 * @type { 'inner' | 'outside' } * @default undefined */ footerPlacement?: 'inner' | 'outside'; /** * 变体样式 * @type { 'outlined' | 'filled' | 'shadow' | 'borderless' } * @default undefined */ variant?: 'outlined' | 'filled' | 'shadow' | 'borderless'; /** * 卡片形状 * @type { 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' } * @default undefined */ shape?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right'; }