// Copyright: © 2026 TWWIM UG. All rights reserved. (www.twwim.com) import { Bot, User, Headset, AlertCircle } from 'lucide-react'; import { useTranslation } from '@/i18n/TranslationProvider'; import type { ConversationMessage } from '../lib/types'; interface MessageBubbleProps { message: ConversationMessage; } function formatTime(date: Date | string, locale: string): string { const d = typeof date === 'string' ? new Date(date) : date; return d.toLocaleTimeString(locale, { hour: '2-digit', minute: '2-digit' }); } export function MessageBubble({ message }: MessageBubbleProps) { const { t, locale } = useTranslation(); if (message.role === 'system') { return (
{t(`conversations.systemEvent.${message.content}`)}
); } const isVisitor = message.role === 'user'; const isOperator = message.role === 'operator'; const icon = isVisitor ? : isOperator ? : ; const authorLabel = isVisitor ? t('conversations.author.visitor') : isOperator ? message.operatorName ?? t('conversations.author.operator') : t('conversations.author.assistant'); const bubbleColor = isVisitor ? 'bg-slate-100 text-slate-900' : isOperator ? 'bg-violet-600 text-white' : 'bg-emerald-600 text-white'; const alignment = isVisitor ? 'items-start' : 'items-end'; const bubbleAlignment = isVisitor ? 'self-start' : 'self-end'; const iconBg = isVisitor ? 'bg-slate-200 text-slate-600' : isOperator ? 'bg-violet-100 text-violet-700' : 'bg-emerald-100 text-emerald-700'; return (
{icon} {authorLabel} · {formatTime(message.createdAt, locale)}
{message.content}
); }