agent_core/tui/layout/
helpers.rs1use ratatui::layout::{Constraint, Direction, Layout, Rect};
4
5pub fn vstack(area: Rect, constraints: &[Constraint]) -> Vec<Rect> {
7 Layout::default()
8 .direction(Direction::Vertical)
9 .constraints(constraints)
10 .split(area)
11 .to_vec()
12}
13
14pub fn hstack(area: Rect, constraints: &[Constraint]) -> Vec<Rect> {
16 Layout::default()
17 .direction(Direction::Horizontal)
18 .constraints(constraints)
19 .split(area)
20 .to_vec()
21}
22
23pub fn centered(area: Rect, width: u16, height: u16) -> Rect {
25 let x = area.x + (area.width.saturating_sub(width)) / 2;
26 let y = area.y + (area.height.saturating_sub(height)) / 2;
27 Rect::new(x, y, width.min(area.width), height.min(area.height))
28}
29
30pub fn with_margin(area: Rect, margin: u16) -> Rect {
32 Rect::new(
33 area.x + margin,
34 area.y + margin,
35 area.width.saturating_sub(margin * 2),
36 area.height.saturating_sub(margin * 2),
37 )
38}