import React from 'react'; import { Avatar } from '../Avatar'; import { Button } from '../Button'; import { Icon } from '../Icon'; import { Spinner } from '../Spinner'; import { QaheraIconName } from '../types'; export interface ChatMessage { id: string; role: 'user' | 'assistant' | 'system'; content: string; timestamp?: string; avatarUrl?: string; } export interface ChatStreamProps extends React.HTMLAttributes { messages: ChatMessage[]; onSend?: (message: string) => void; placeholder?: string; isLoading?: boolean; title?: string; } export function ChatStream({ messages, onSend, placeholder = 'اكتب رسالتك...', isLoading = false, title = 'المساعد الذكي', className = '', ...props }: ChatStreamProps) { const [draft, setDraft] = React.useState(''); const handleSend = () => { if (draft.trim() && onSend) { onSend(draft.trim()); setDraft(''); } }; return (
{/* Header */}
{title}
{/* Messages */}
{messages.map((msg) => (
{msg.content} {msg.timestamp && (
{msg.timestamp}
)}
))} {isLoading && (
جاري الكتابة...
)}
{/* Composer */}
setDraft(e.target.value)} onKeyDown={(e) => e.key === 'Enter' && handleSend()} placeholder={placeholder} style={{ flex: 1 }} aria-label={placeholder} />
); }