use crate::app::AppState;
use crate::ui::style::{self, Emphasis};
use ratatui::Frame;
use ratatui::layout::Rect;
use ratatui::widgets::{Clear, List, ListItem};
use super::utils;
pub fn render(frame: &mut Frame, area: Rect, state: &AppState) {
let max_idx = state.pr_list.len().saturating_sub(1);
let selected = state.pr_selected.min(max_idx);
let items: Vec<ListItem> = if state.pr_list.is_empty() {
vec![ListItem::new("No PRs found").style(style::text(&state.theme, Emphasis::Muted))]
} else {
state
.pr_list
.iter()
.enumerate()
.map(|(i, pr)| {
let style_item = if i == selected {
style::selection(&state.theme)
} else {
style::body_style(&state.theme)
};
ListItem::new(format!("#{} {}", pr.number, pr.title)).style(style_item)
})
.collect()
};
let title = format!(
"PR helper [{} / {}] (Enter=checkout, o=open, Esc=close)",
selected.saturating_add(1),
state.pr_list.len().max(1)
);
let popup = utils::center_rect(60, 50, area);
frame.render_widget(Clear, popup);
let list = List::new(items)
.style(style::body_style(&state.theme))
.block(style::pane_block(&state.theme, title.to_string(), true));
frame.render_widget(list, popup);
}