/**
* 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;