"use client"; import type { ChatMessage as ChatMessageType, ActiveMCQ } from '@/types'; import { cn } from '@/lib/utils'; import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'; import { Bot, User, AlertTriangle, CheckCircle, Info } from 'lucide-react'; import { Card, CardContent } from '@/components/ui/card'; import { MCQOptions } from './mcq-options'; import { useState, useEffect } from 'react'; interface ChatMessageProps { message: ChatMessageType; activeMCQ?: ActiveMCQ | null; isAwaitingActiveMCQAnswer?: boolean; onOptionSelectActiveMCQ?: (option: string, isCorrect: boolean) => void; incorrectAttemptsForMCQ?: string[]; } export function ChatMessage({ message, activeMCQ, isAwaitingActiveMCQAnswer, onOptionSelectActiveMCQ, incorrectAttemptsForMCQ, }: ChatMessageProps) { const isUser = message.sender === 'user'; const Icon = isUser ? User : Bot; const avatarFallback = isUser ? 'U' : 'AI'; const [formattedTime, setFormattedTime] = useState(''); useEffect(() => { if (message.timestamp) { setFormattedTime(new Date(message.timestamp).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })); } }, [message.timestamp]); return (
{message.mcq.mcq}
{isAwaitingActiveMCQAnswer && onOptionSelectActiveMCQ && ({message.text}
} {message.type === 'feedback' && message.text && ({message.text}
{message.text}
You chose: "{message.text}"
)} {formattedTime && ({formattedTime}
)}