use ratatui::{
layout::{Constraint, Direction, Flex, Layout, Rect},
Frame,
};
use crate::app::App;
use super::{header, sidebar, status_bar, task_list};
const SIDEBAR_MIN_WIDTH: u16 = 20;
const SIDEBAR_MAX_WIDTH: u16 = 35;
pub fn render_main_view(frame: &mut Frame, app: &App, area: Rect) {
let vertical_chunks = Layout::default()
.direction(Direction::Vertical)
.constraints([
Constraint::Length(3), Constraint::Fill(1), Constraint::Length(1), ])
.split(area);
header::render_header(frame, app, vertical_chunks[0]);
let sidebar_width = calculate_sidebar_width(vertical_chunks[1].width);
let horizontal_chunks = Layout::default()
.direction(Direction::Horizontal)
.flex(Flex::Start)
.constraints([
Constraint::Length(sidebar_width), Constraint::Fill(1), ])
.split(vertical_chunks[1]);
sidebar::render_sidebar(frame, app, horizontal_chunks[0]);
task_list::render_task_list(frame, app, horizontal_chunks[1]);
status_bar::render_status_bar(frame, app, vertical_chunks[2]);
}
fn calculate_sidebar_width(total_width: u16) -> u16 {
let target = total_width / 4; target.clamp(SIDEBAR_MIN_WIDTH, SIDEBAR_MAX_WIDTH)
}