use ratatui::{ Frame, layout::Rect, style::{Color, Modifier, Style}, text::{Line, Span}, widgets::{Block, Borders, Paragraph}, }; use crate::app::AppState; pub fn render(f: &mut Frame, state: &AppState, area: Rect) { let label_style = Style::default() .fg(Color::Yellow) .add_modifier(Modifier::BOLD); let value_style = Style::default().fg(Color::White); let section_style = Style::default() .fg(Color::Cyan) .add_modifier(Modifier::BOLD); let pad = " "; let mut lines = vec![ Line::default(), Line::from(Span::styled("--- Database Statistics ---", section_style)), ]; if let Some(ref stats) = state.database_stats { for (key, value) in stats { lines.push(Line::from(vec![ Span::raw(pad), Span::styled(format!("{key:<20}"), label_style), Span::styled(value.clone(), value_style), ])); } } else { lines.push(Line::from(vec![ Span::raw(pad), Span::raw("Press 'r' to load database statistics"), ])); } lines.push(Line::default()); lines.push(Line::from(Span::styled("--- Actions ---", section_style))); lines.push(Line::from(vec![ Span::raw(pad), Span::raw("v: Vacuum database"), ])); lines.push(Line::from(vec![ Span::raw(pad), Span::raw("Esc: Return to library"), ])); let paragraph = Paragraph::new(lines) .block(Block::default().borders(Borders::ALL).title(" Database ")); f.render_widget(paragraph, area); }