Skip to main content

flow_tui/
theme.rs

1use flow_core::{AnsiColor, ThemeColors};
2use ratatui::style::Color;
3
4pub fn to_ratatui_color(ansi: &AnsiColor) -> Color {
5    Color::Indexed(ansi.0)
6}
7
8#[derive(Debug, Clone)]
9pub struct TuiTheme {
10    pub primary: Color,
11    pub secondary: Color,
12    pub background: Color,
13    pub foreground: Color,
14    pub accent: Color,
15    pub muted: Color,
16    pub border: Color,
17    pub pending: Color,
18    pub in_progress: Color,
19    pub done: Color,
20    pub blocked: Color,
21    pub error: Color,
22    pub warning: Color,
23}
24
25impl From<&ThemeColors> for TuiTheme {
26    fn from(colors: &ThemeColors) -> Self {
27        Self {
28            primary: to_ratatui_color(&colors.primary),
29            secondary: to_ratatui_color(&colors.secondary),
30            background: to_ratatui_color(&colors.background),
31            foreground: to_ratatui_color(&colors.foreground),
32            accent: to_ratatui_color(&colors.accent),
33            muted: to_ratatui_color(&colors.muted),
34            border: to_ratatui_color(&colors.border),
35            pending: to_ratatui_color(&colors.pending),
36            in_progress: to_ratatui_color(&colors.in_progress),
37            done: to_ratatui_color(&colors.done),
38            blocked: to_ratatui_color(&colors.blocked),
39            error: to_ratatui_color(&colors.error),
40            warning: to_ratatui_color(&colors.warning),
41        }
42    }
43}