Newer
Older
navi-1 / clients / terminal / tui / renderers / error.py
"""Renderer for error events."""

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 clients.terminal.tui.themes import get_active_theme

from .base import ContentRenderer


class ErrorRenderer(ContentRenderer):
    """Render an error message panel."""

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

    def render(self, msg: dict) -> RenderableType:
        theme = get_active_theme()
        text = msg.get("message", "unknown error")
        return Panel(
            Text(text, style=f"bold {theme.error.hex}"),
            title="error",
            title_align="left",
            border_style=theme.error.hex,
            box=ROUNDED,
        )