37 lines
1.1 KiB
Rust
37 lines
1.1 KiB
Rust
use crate::i18n::t;
|
|
use crate::ui::dashboard::model::DashboardViewState;
|
|
use ratatui::{
|
|
Frame,
|
|
layout::{Alignment, Rect},
|
|
style::{Color, Style},
|
|
text::{Line, Span},
|
|
widgets::{Block, Borders, Paragraph},
|
|
};
|
|
|
|
pub fn render_header(frame: &mut Frame, area: Rect, state: &DashboardViewState) {
|
|
let title = if state.is_loading {
|
|
t("loading").to_string()
|
|
} else {
|
|
format!("{} - {}", t("dashboard-header"), state.title)
|
|
};
|
|
let description = state
|
|
.descriptions
|
|
.as_ref()
|
|
.filter(|s| !s.trim().is_empty())
|
|
.map(|s| format!(" - {}", s))
|
|
.unwrap_or("".to_string());
|
|
|
|
let header = Paragraph::new(Line::from(vec![
|
|
Span::styled("📈 ", Style::default().fg(Color::Cyan)),
|
|
Span::styled(title, Style::default().fg(Color::White).bold()),
|
|
Span::styled(description, Style::default().fg(Color::White).bold()),
|
|
]))
|
|
.alignment(Alignment::Center)
|
|
.block(
|
|
Block::default()
|
|
.borders(Borders::ALL)
|
|
.style(Style::default().fg(Color::Blue)),
|
|
);
|
|
|
|
frame.render_widget(header, area);
|
|
}
|