import { useState } from 'react' import ReactMarkdown from 'react-markdown' import { User, Bot } from 'lucide-react' import { MessageActions } from './MessageActions' import { SourceBadges } from './SourceBadges' import { WhyDrawer } from './WhyDrawer' import type { Message } from '../types' interface ChatMessageProps { message: Message onRegenerate: () => void isLast: boolean } export function ChatMessage({ message, onRegenerate, isLast }: ChatMessageProps) { const [focusChunkId, setFocusChunkId] = useState(null) const isUser = message.role === 'user' const isStreaming = message.status === 'streaming' return (
{isUser ? : }
{isUser ? (

{message.content}

) : ( <> {message.content ? ( {message.content} ) : isStreaming ? (
) : null} )}
{!isUser && message.status !== 'streaming' && message.content && ( <> setFocusChunkId(id === focusChunkId ? null : id)} /> )}
) }