Skip to main content

rab/agent/ui/components/
info_message.rs

1use crate::agent::ui::theme::ThemeKey;
2use crate::agent::ui::theme::current_theme;
3use crate::tui::Component;
4use crate::tui::components::Text;
5/// Component for info/status messages — simple dim text line.
6/// Matches pi's `showStatus()` style with `theme.fg_key(ThemeKey::Dim, message)`.
7pub struct InfoMessageComponent {
8    text: Text,
9}
10
11impl InfoMessageComponent {
12    pub fn new(message: impl Into<String>) -> Self {
13        let theme = current_theme();
14        let styled = theme.fg_key(ThemeKey::Dim, &format!(" {}", message.into()));
15        Self {
16            text: Text::new(styled, 0, 0, None),
17        }
18    }
19}
20
21impl Component for InfoMessageComponent {
22    fn render(&mut self, width: usize) -> Vec<String> {
23        self.text.render(width)
24    }
25
26    fn invalidate(&mut self) {
27        self.text.invalidate();
28    }
29}