"""Renderers for user and assistant chat messages."""

from __future__ import annotations

from rich.console import RenderableType
from rich.box import ROUNDED
from rich.panel import Panel
from rich.text import Text

from .base import ContentRenderer


class UserMessageRenderer(ContentRenderer):
    """Render a user message bubble."""

    def accepts(self, msg: dict) -> bool:
        return msg.get("type") == "user_message"

    def render(self, msg: dict) -> RenderableType:
        text = msg.get("content", "")
        return Panel(
            Text(text, style="bright_white"),
            title="You",
            title_align="left",
            border_style="blue",
            box=ROUNDED,
        )


class AssistantMessageRenderer(ContentRenderer):
    """Render a completed assistant response as a panel."""

    def accepts(self, msg: dict) -> bool:
        return msg.get("type") == "assistant_message"

    def render(self, msg: dict) -> RenderableType:
        text = msg.get("content", "")
        return Panel(
            Text(text, style="bright_white"),
            title="Navi",
            title_align="left",
            border_style="green",
            box=ROUNDED,
        )
