import React, { useState } from 'react';
import { User, Sparkles, ChevronDown, ChevronRight } from 'lucide-react';
import MarkdownRenderer from './MarkdownRenderer';
import ProcessFlow from './ProcessFlow';
import { ChatMessage } from '../types';
interface ChatMessageProps {
message: ChatMessage;
isLast?: boolean;
}
const ChatMessageItem = ({ message, isLast }: ChatMessageProps) => {
const isUser = message.role === 'user';
const [showThinking, setShowThinking] = useState(false);
// Check if there is any thinking data to show
const hasThinkingData = message.analysis || (message.experts && message.experts.length > 0);
return (
{/* Avatar */}
{/* Content */}
{isUser ? 'You' : 'Prisma'}
{/* Thinking Process Accordion (Only for AI) */}
{!isUser && hasThinkingData && (
{showThinking && (
)}
)}
{/* Text Content */}
{message.content ? (
) : (
message.isThinking &&
)}
{/* Internal Monologue (Synthesis Thoughts) - Optional Footer */}
{!isUser && message.synthesisThoughts && (
Show Internal Monologue
{message.synthesisThoughts}
)}
);
};
export default ChatMessageItem;