JerameeUC
1st Commit
46bca93
# /app/components/ChatMessage.py
from __future__ import annotations
import gradio as gr
from html import escape
def render_message(role: str, text: str) -> gr.HTML:
"""
Return a styled HTML bubble for a single message.
role: "user" | "bot"
"""
role = (role or "bot").lower()
txt = escape(text or "")
bg = "#eef2ff" if role == "user" else "#f1f5f9"
align = "flex-end" if role == "user" else "flex-start"
label = "You" if role == "user" else "Bot"
html = f"""
<div style="display:flex;justify-content:{align};margin:6px 0;">
<div style="max-width: 85%; border-radius:12px; padding:10px 12px; background:{bg}; border:1px solid #e2e8f0;">
<div style="font-size:12px; color:#64748b; margin-bottom:4px;">{label}</div>
<div style="white-space:pre-wrap; line-height:1.45; font-size:14px; color:#0f172a;">{txt}</div>
</div>
</div>
"""
return gr.HTML(value=html)