upgate-presentation 0.1.1

Keep globally installed developer tools up to date
Documentation
use ratatui::layout::{Constraint, Layout, Margin, Rect};

pub(super) struct AppFrame {
    pub outer: Rect,
    pub header: Rect,
    pub header_separator: Rect,
    pub body: Rect,
    pub footer_separator: Rect,
    pub footer: Rect,
}

pub(super) fn app_frame(area: Rect) -> Option<AppFrame> {
    let inner = area.inner(Margin {
        vertical: 1,
        horizontal: 1,
    });
    if inner.height < 5 {
        return None;
    }

    let [header, header_separator, body, footer_separator, footer] = Layout::vertical([
        Constraint::Length(1),
        Constraint::Length(1),
        Constraint::Fill(1),
        Constraint::Length(1),
        Constraint::Length(1),
    ])
    .areas(inner);
    Some(AppFrame {
        outer: area,
        header,
        header_separator,
        body,
        footer_separator,
        footer,
    })
}