"""Status panel widget for the TUI."""

from __future__ import annotations

from __future__ import annotations

from textual.app import ComposeResult
from textual.containers import Vertical
from textual.widgets import Static


class StatusPanel(Vertical):
    """Right-side panel showing session/profile/model/connection info."""

    DEFAULT_CSS = """
    StatusPanel {
        border: solid $primary-darken-2;
        padding: 1;
        height: 1fr;
        width: 1fr;
    }
    """

    def __init__(self) -> None:
        super().__init__()
        self._profile = Static("Profile: -")
        self._session = Static("Session: -")
        self._model = Static("Model: -")
        self._connection = Static("Connection: offline", classes="connection")
        self._hint = Static("Ctrl+P palette | /help commands")

    def compose(self) -> ComposeResult:
        yield Static("[b]Navi Code[/b]", classes="title")
        yield self._profile
        yield self._session
        yield self._model
        yield self._connection
        yield Static("", classes="spacer")
        yield self._hint

    def set_profile(self, profile_id: str) -> None:
        self._profile.update(f"Profile: {profile_id}")

    def set_session(self, session_id: str) -> None:
        short = session_id[:8] if len(session_id) > 8 else session_id
        self._session.update(f"Session: {short}")

    def set_model(self, model: str) -> None:
        self._model.update(f"Model: {model}")

    def set_connection(self, connected: bool, detail: str = "") -> None:
        if connected:
            self._connection.update(f"[green]Connection: online[/green] {detail}")
        else:
            self._connection.update(f"[red]Connection: offline[/red] {detail}")
