uptime-kuma-dashboard/src/ui/components/header.rs
2025-12-29 06:50:18 -04:00

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