/** * MessageBubble.jsx - Individual Message Component (Clean Rebuild) */ const { useState } = React; function MessageBubble({ message, t }) { const [showCopy, setShowCopy] = useState(false); const [copied, setCopied] = useState(false); const isUser = message.role === 'user'; const handleCopy = async () => { try { await navigator.clipboard.writeText(message.content); setCopied(true); setTimeout(() => setCopied(false), 2000); } catch (error) { console.error('Failed to copy:', error); } }; return (
!isUser && setShowCopy(true)} onMouseLeave={() => !isUser && setShowCopy(false)} >
{message.content}
{/* Copy Button for AI messages */} {!isUser && showCopy && ( )} {/* Timestamp */}
{new Date(message.created_at).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })}
); } window.MessageBubble = MessageBubble;