use bmux_tui::paint::PaintCx;
use bmux_tui::prelude::{Line, Span, Style};
use bmux_tui::style::Modifier;
use super::picker_render::{
picker_list_area, render_picker_chrome, render_picker_list, render_picker_status,
};
use super::render::TuiTheme;
use super::worktree_picker::WorktreePickerApp;
pub fn render_picker(app: &mut WorktreePickerApp, frame: &mut PaintCx<'_, '_>, theme: TuiTheme) {
let Some((inner, list_y)) = render_picker_chrome(
" Worktrees ",
&header_line(),
app.filter_mut(),
"Filter worktrees",
frame,
theme,
) else {
return;
};
let bottom_y = render_picker_status(inner, app.status(), theme.muted, frame, theme);
let Some(list_area) = picker_list_area(inner, list_y, bottom_y) else {
return;
};
let items = app.list_items(theme.muted);
render_picker_list(
&items,
app.list_render_state(list_area.height),
list_area,
frame,
theme,
);
}
fn header_line() -> Line {
Line::from_spans(vec![
Span::styled("Bcode worktrees", Style::new().add_modifier(Modifier::BOLD)),
Span::raw(" Enter attaches current session Esc cancels"),
])
}