Files
zesdex/src/view/status.rs
T

52 lines
1.4 KiB
Rust
Raw Normal View History

use ratatui::layout::Rect;
use ratatui::style::{Style, Modifier};
use ratatui::text::{Line, Span};
use ratatui::widgets::Block;
use ratatui::Frame;
use super::theme::Theme;
pub fn draw_status_bar(frame: &mut Frame, area: Rect, state: &crate::app::state::rest::AppStateRest) {
let left_text = Span::styled(
" [zesdex] ",
Style::default()
.fg(Theme::TEXT)
.add_modifier(Modifier::BOLD),
);
let agent_status = if state.turn_in_flight() {
"PROCESSING"
} else if state.misc.api_connected {
"READY"
} else {
"NO API"
};
let status_color = if state.misc.api_connected {
Theme::MODE_AUTO
} else if state.turn_in_flight() {
Theme::MODE_YOLO
} else {
Theme::DIM
};
let center_text = Span::styled(
format!(" | {} | {} ", state.settings.provider, agent_status),
Style::default().fg(status_color),
);
let right_text = Span::styled(
format!(" | {} ", state.settings.model),
Style::default().fg(Theme::DIM),
);
let line = Line::from(vec![left_text, center_text, right_text]);
let block = Block::default()
.style(
Style::default()
.bg(Theme::STATUS_BAR_BG)
.fg(Theme::TEXT),
);
let paragraph = ratatui::widgets::Paragraph::new(line).block(block);
frame.render_widget(paragraph, area);
}