1pub mod body;
2pub mod footer;
3pub mod header;
4
5use ratatui::{
6 layout::{Constraint, Layout, Rect},
7 Frame,
8};
9
10use crate::app::App;
11
12use self::{body::render_body, footer::render_footer, header::render_header};
13
14pub fn view(model: &mut App, f: &mut Frame) {
16 let size = f.size();
18 check_size(&size);
19
20 let [header, body, footer] = Layout::vertical([
21 Constraint::Length(3),
22 Constraint::Min(10),
23 Constraint::Max(10),
24 ])
25 .areas(size);
26
27 render_header(f, header);
28
29 render_body(model, f, body);
30
31 render_footer(model, footer, f);
32}
33
34fn check_size(f: &Rect) {
36 if f.width < 52 {
37 panic!("Require width >= 52, (got {})", f.width);
38 }
39 if f.height < 28 {
40 panic!("Require height >= 28, (got {})", f.height);
41 }
42}