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}