import { useTranslation } from "react-i18next"; import { cn } from "@/lib/utils"; import type { Message } from "@/types"; export function MessageBubble({ message }: { message: Message }) { const { t } = useTranslation(); const isUser = message.role === "user"; const isSystem = message.role === "system"; const content = readableContent(message, t); return (
{!isSystem ? (
{isUser ? t("sessions.roleUser") : t("sessions.roleAssistant")}
) : null}

{content}

); } function readableContent(message: Message, t: (key: string, options?: Record) => string) { const text = message.content_text?.trim(); if (text) return text; const payload = message.content_json; if (!payload) return t("sessions.noTextContent"); if (typeof payload === "string") return payload; if (Array.isArray(payload)) return t("sessions.structuredItems", { count: payload.length }); if (typeof payload === "object") { const record = payload as Record; for (const key of ["text", "message", "answer", "output", "result", "content"]) { const value = record[key]; if (typeof value === "string" && value.trim()) return value; } return t("sessions.structuredMessage"); } return String(payload); }