nextdeck 0.1.0

A TUI wrapper for cargo-nextest, Clap-powered xtasks, and more.
use ratatui::layout::{Constraint, Direction, Layout, Margin, Rect};

pub(in crate::ui) fn modal_inner_area(percent_x: u16, percent_y: u16, area: Rect) -> Rect {
    centered_rect(percent_x, percent_y, area).inner(Margin {
        horizontal: 1,
        vertical: 1,
    })
}

pub(in crate::ui) fn panel_body_page_size(area: Rect) -> usize {
    area.height.saturating_sub(2).max(1) as usize
}

pub(in crate::ui) fn centered_rect(percent_x: u16, percent_y: u16, area: Rect) -> Rect {
    let vertical = Layout::default()
        .direction(Direction::Vertical)
        .constraints([
            Constraint::Percentage((100 - percent_y) / 2),
            Constraint::Percentage(percent_y),
            Constraint::Percentage((100 - percent_y) / 2),
        ])
        .split(area);
    Layout::default()
        .direction(Direction::Horizontal)
        .constraints([
            Constraint::Percentage((100 - percent_x) / 2),
            Constraint::Percentage(percent_x),
            Constraint::Percentage((100 - percent_x) / 2),
        ])
        .split(vertical[1])[1]
}