Change tree symbols to blue color across all panels

- Add Typography::tree() style using blue Theme::highlight() color
- Update system, backup, and services widgets to use consistent blue tree styling
- Centralizes tree color management in theme module for easy maintenance
This commit is contained in:
Christoffer Martinsson 2025-10-23 20:16:10 +02:00
parent 65479c14af
commit 51375e8020
5 changed files with 15 additions and 11 deletions

View File

@ -55,7 +55,6 @@ Repos:
- Add keyboard navigation between panels "Shift-Tab" - Add keyboard navigation between panels "Shift-Tab"
- Add lower statusbar with dynamic updated shortcuts when switchng between panels - Add lower statusbar with dynamic updated shortcuts when switchng between panels
- Add scrolling support when text do not fit
## Remote execution (agent/dashboard) ## Remote execution (agent/dashboard)

View File

@ -324,4 +324,11 @@ impl Typography {
.bg(Theme::background()) .bg(Theme::background())
.add_modifier(Modifier::BOLD) .add_modifier(Modifier::BOLD)
} }
/// Tree symbols style (blue color)
pub fn tree() -> Style {
Style::default()
.fg(Theme::highlight())
.bg(Theme::background())
}
} }

View File

@ -348,7 +348,7 @@ impl Widget for BackupWidget {
if let Some(duration) = self.duration_seconds { if let Some(duration) = self.duration_seconds {
let duration_text = self.format_duration(duration); let duration_text = self.format_duration(duration);
lines.push(ratatui::text::Line::from(vec![ lines.push(ratatui::text::Line::from(vec![
ratatui::text::Span::styled(" └─ ", Typography::secondary()), ratatui::text::Span::styled(" └─ ", Typography::tree()),
ratatui::text::Span::styled(format!("Duration: {}", duration_text), Typography::secondary()) ratatui::text::Span::styled(format!("Duration: {}", duration_text), Typography::secondary())
])); ]));
} }
@ -369,7 +369,7 @@ impl Widget for BackupWidget {
// Serial number as sub-item // Serial number as sub-item
if let Some(serial) = &self.backup_disk_serial_number { if let Some(serial) = &self.backup_disk_serial_number {
lines.push(ratatui::text::Line::from(vec![ lines.push(ratatui::text::Line::from(vec![
ratatui::text::Span::styled(" ├─ ", Typography::secondary()), ratatui::text::Span::styled(" ├─ ", Typography::tree()),
ratatui::text::Span::styled(format!("S/N: {}", serial), Typography::secondary()) ratatui::text::Span::styled(format!("S/N: {}", serial), Typography::secondary())
])); ]));
} }
@ -379,7 +379,7 @@ impl Widget for BackupWidget {
let used_str = Self::format_size_with_proper_units(used); let used_str = Self::format_size_with_proper_units(used);
let total_str = Self::format_size_with_proper_units(total); let total_str = Self::format_size_with_proper_units(total);
lines.push(ratatui::text::Line::from(vec![ lines.push(ratatui::text::Line::from(vec![
ratatui::text::Span::styled(" └─ ", Typography::secondary()), ratatui::text::Span::styled(" └─ ", Typography::tree()),
ratatui::text::Span::styled(format!("Usage: {}/{}", used_str, total_str), Typography::secondary()) ratatui::text::Span::styled(format!("Usage: {}/{}", used_str, total_str), Typography::secondary())
])); ]));
} }

View File

@ -170,9 +170,7 @@ impl ServicesWidget {
// Indentation and tree prefix // Indentation and tree prefix
ratatui::text::Span::styled( ratatui::text::Span::styled(
format!(" {} ", tree_symbol), format!(" {} ", tree_symbol),
Style::default() Typography::tree(),
.fg(Theme::secondary_text())
.bg(Theme::background()),
), ),
// Status icon // Status icon
ratatui::text::Span::styled( ratatui::text::Span::styled(

View File

@ -286,7 +286,7 @@ impl SystemWidget {
let mut drive_spans = vec![ let mut drive_spans = vec![
Span::raw(" "), Span::raw(" "),
Span::styled(tree_symbol, Typography::secondary()), Span::styled(tree_symbol, Typography::tree()),
Span::raw(" "), Span::raw(" "),
]; ];
drive_spans.extend(StatusIcons::create_status_spans(drive.status.clone(), &drive_text)); drive_spans.extend(StatusIcons::create_status_spans(drive.status.clone(), &drive_text));
@ -298,7 +298,7 @@ impl SystemWidget {
let tree_symbol = "└─"; let tree_symbol = "└─";
let mut usage_spans = vec![ let mut usage_spans = vec![
Span::raw(" "), Span::raw(" "),
Span::styled(tree_symbol, Typography::secondary()), Span::styled(tree_symbol, Typography::tree()),
Span::raw(" "), Span::raw(" "),
]; ];
usage_spans.extend(StatusIcons::create_status_spans(pool.status.clone(), &usage_text)); usage_spans.extend(StatusIcons::create_status_spans(pool.status.clone(), &usage_text));
@ -435,7 +435,7 @@ impl Widget for SystemWidget {
let freq_text = self.format_cpu_frequency(); let freq_text = self.format_cpu_frequency();
lines.push(Line::from(vec![ lines.push(Line::from(vec![
Span::styled(" └─ ", Typography::secondary()), Span::styled(" └─ ", Typography::tree()),
Span::styled(format!("Freq: {}", freq_text), Typography::secondary()) Span::styled(format!("Freq: {}", freq_text), Typography::secondary())
])); ]));
@ -453,7 +453,7 @@ impl Widget for SystemWidget {
let tmp_text = self.format_tmp_usage(); let tmp_text = self.format_tmp_usage();
let mut tmp_spans = vec![ let mut tmp_spans = vec![
Span::styled(" └─ ", Typography::secondary()), Span::styled(" └─ ", Typography::tree()),
]; ];
tmp_spans.extend(StatusIcons::create_status_spans( tmp_spans.extend(StatusIcons::create_status_spans(
self.memory_status.clone(), self.memory_status.clone(),