use ratatui::layout::{Constraint, Direction, Layout, Rect};
const SIDEBAR_MIN: u16 = 28;
const SIDEBAR_MAX: u16 = 36;
const HEADER_ROWS: u16 = 1;
const STATUS_ROWS: u16 = 1;
#[derive(Debug, Clone, Copy)]
pub struct OuterRects {
pub header: Rect,
pub sidebar: Rect,
pub pane: Rect,
pub status: Rect,
}
pub fn outer_split(area: Rect) -> OuterRects {
let vparts = Layout::default()
.direction(Direction::Vertical)
.constraints([
Constraint::Length(HEADER_ROWS),
Constraint::Min(3),
Constraint::Length(STATUS_ROWS),
])
.split(area);
let body = vparts[1];
let sidebar_w = if body.width >= 110 {
SIDEBAR_MAX
} else if body.width >= 80 {
SIDEBAR_MIN
} else {
(body.width * 4 / 10).max(20)
};
let hparts = Layout::default()
.direction(Direction::Horizontal)
.constraints([
Constraint::Length(sidebar_w),
Constraint::Length(2),
Constraint::Min(0),
])
.split(body);
OuterRects {
header: vparts[0],
sidebar: hparts[0],
pane: hparts[2],
status: vparts[2],
}
}