dnote-tui 0.5.10

TUI for dnote
use color_eyre::eyre::Result;
use ratatui::{prelude::*, widgets::Paragraph};

use crate::{
    components::Component,
    config::{PROJECT_NAME, PROJECT_VERSION},
    state::State,
};

#[derive(Default)]
pub struct HeaderPane {}

impl HeaderPane {
    pub fn new() -> Self {
        Self {}
    }
}

impl Component for HeaderPane {
    fn draw(&mut self, f: &mut Frame<'_>, area: Rect, _state: &mut State) -> Result<()> {
        let app_name = PROJECT_NAME.to_string();
        let app_version = PROJECT_VERSION.to_string();
        let line = Line::from(vec![
            Span::styled(
                format!("[ {} {} ", app_name, symbols::DOT),
                Style::default().fg(Color::Blue),
            ),
            Span::styled(
                format!("v{} ", app_version),
                Style::default().fg(Color::LightCyan),
            ),
            Span::styled("]", Style::default().fg(Color::Blue)),
        ]);
        let text = Text::from(vec![
            Line::from("").centered(),
            line.clone(),
            Line::from("").centered(),
        ])
        .centered();
        let paragraph = Paragraph::new(text).centered();
        f.render_widget(paragraph, area);

        Ok(())
    }
}