catfood-bar 0.3.0

A system bar component of the catfood utility suite
Documentation
use crate::component_manager::ComponentManager;
use ratatui::{
    Frame,
    prelude::Stylize,
    style::Color,
    text::{Line, Span},
    widgets::Paragraph,
};

#[derive(Debug)]
pub struct MiddleBar;

impl MiddleBar {
    pub fn new() -> color_eyre::Result<Self> {
        Ok(Self)
    }

    pub fn update(&mut self) -> color_eyre::Result<()> {
        Ok(())
    }

    pub fn render(
        &self,
        frame: &mut Frame,
        area: ratatui::layout::Rect,
        component_manager: &ComponentManager,
    ) {
        let components = component_manager.get_bar_components("middle");
        let colorize = component_manager.get_colorize();

        if components.is_empty() {
            return;
        }

        let spans: Vec<Span> = components
            .iter()
            .flat_map(|component| component.render_as_spans_with_colorize(colorize))
            .collect();

        let middle_line = Line::from(spans);

        frame.render_widget(
            Paragraph::new(middle_line).centered().fg(Color::White),
            area,
        );
    }
}