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 conflicts: Vec<&crate::git::parsers::status::StatusEntry> = state
.status_entries
.iter()
.filter(|e| e.conflict)
.collect();
let max_idx = conflicts.len().saturating_sub(1);
let selected = state.conflicts_popup_selected.min(max_idx);
let items: Vec<ListItem> = if conflicts.is_empty() {
vec![ListItem::new("No conflicts found").style(style::text(&state.theme, Emphasis::Muted))]
} else {
conflicts
.iter()
.enumerate()
.map(|(i, entry)| {
let style_item = if i == selected {
style::selection(&state.theme)
} else {
style::body_style(&state.theme)
};
ListItem::new(entry.path.clone()).style(style_item)
})
.collect()
};
let title = format!(
"Conflicts [{} / {}] (Enter=jump, o=open, Esc=close)",
selected.saturating_add(1),
conflicts.len().max(1)
);
let popup = utils::center_rect(50, 40, area);
frame.render_widget(Clear, popup);
let list = List::new(items)
.style(style::body_style(&state.theme))
.block(style::pane_block(&state.theme, title, true));
frame.render_widget(list, popup);
}