/** * Theme configuration for the chat bubble */ export interface ChatTheme { backgrounds: { light: string; dark: string; surfaceLight: string; surfaceDark: string; }; colors: { primary: string; primaryHover?: string; success?: string; error?: string; warning?: string; }; text: { primary: string; secondary: string; tertiary: string; onPrimary: string; }; borders: { light: string; dark: string; }; messageBubbles: { assistant: { background: string; textColor: string; borderRadius: string; }; user: { background: string; textColor: string; borderRadius: string; }; }; fonts: { family: string; sizes: { xs: string; sm: string; base: string; lg: string; xl: string; }; }; } /** * Avatar configuration */ export interface AvatarConfig { type: 'icon' | 'image' | 'text'; src?: string; icon?: string; text?: string; alt?: string; backgroundColor?: string; textColor?: string; showOnlineStatus?: boolean; size?: 'sm' | 'md' | 'lg'; } /** * Header action button configuration */ export interface HeaderActionButton { id: string; icon: string; ariaLabel: string; onClick?: () => void; visible?: boolean; } /** * Chat header configuration */ export interface ChatHeaderConfig { avatar: AvatarConfig; title: string; subtitle?: string; actions?: HeaderActionButton[]; showBorder?: boolean; } /** * Message sender type */ export type MessageSender = 'assistant' | 'user'; /** * Message status */ export type MessageStatus = 'sending' | 'streaming' | 'sent' | 'error'; /** * Individual message data */ export interface Message { id: string; sender: MessageSender; content: string; timestamp: Date | string; avatar?: AvatarConfig; senderLabel?: string; status?: MessageStatus; error?: string; } /** * Input action button configuration */ export interface InputActionButton { id: string; icon: string; ariaLabel: string; onClick?: () => void; visible?: boolean; position?: 'left' | 'right'; } /** * Chat input configuration */ export interface ChatInputConfig { placeholder?: string; actions?: InputActionButton[]; showSendButton?: boolean; showAttachment?: boolean; showEmoji?: boolean; showVoice?: boolean; disclaimer?: string; maxLength?: number; } /** * Typing indicator configuration */ export interface TypingIndicatorConfig { show: boolean; avatar?: AvatarConfig; dotColor?: string; } /** * Date separator configuration */ export interface DateSeparatorConfig { format?: 'relative' | 'absolute' | 'custom'; customFormatter?: (date: Date) => string; } /** * Main chat bubble configuration */ export interface ChatBubbleConfig { theme?: Partial; header?: ChatHeaderConfig; input?: ChatInputConfig; messages?: Message[]; typingIndicator?: TypingIndicatorConfig; dateSeparator?: DateSeparatorConfig; maxWidth?: string; height?: string; className?: string; darkMode?: boolean; } /** * Default theme configuration */ export declare const defaultTheme: ChatTheme;