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); }