#![allow(dead_code)]
use ratatui::layout::Rect;
use ratatui::style::{Color, Modifier, Style};
use ratatui::text::{Line, Span};
use ratatui::widgets::Paragraph;
use ratatui::Frame;
use crate::tui::theme::Theme;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Mode {
Login,
Normal,
Palette,
Busy,
}
impl Mode {
fn label(self) -> &'static str {
match self {
Mode::Login => " LOGIN ",
Mode::Normal => " READY ",
Mode::Palette => " PALETTE ",
Mode::Busy => " RUNNING ",
}
}
}
pub fn render(frame: &mut Frame, area: Rect, theme: &Theme, mode: Mode, hint: &str) {
let badge_bg = match mode {
Mode::Login => theme.warning,
Mode::Normal => theme.accent,
Mode::Palette => theme.warning,
Mode::Busy => theme.success,
};
let spans = vec![
Span::styled(
mode.label(),
Style::default()
.bg(badge_bg)
.fg(Color::Black)
.add_modifier(Modifier::BOLD),
),
Span::raw(" "),
Span::styled(
format!("zc · theme:{}", theme.name),
Style::default().fg(theme.muted),
),
Span::raw(" "),
Span::styled(hint.to_string(), Style::default().fg(theme.muted)),
];
frame.render_widget(Paragraph::new(Line::from(spans)), area);
}