eazygit 0.5.1

A fast TUI for Git with staging, conflicts, rebase, and palette-first UX
Documentation
//! Operation log rendering.

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;

/// Render the operation log popup.
pub fn render(frame: &mut Frame, area: Rect, state: &AppState) {
    let popup = utils::center_rect(60, 30, area);
    frame.render_widget(Clear, popup);

    let lines: Vec<ListItem> = state
        .op_log
        .iter()
        .rev()
        .take(10)
        .rev()
        .map(|l| ListItem::new(l.clone()).style(style::text(&state.theme, Emphasis::Muted)))
        .collect();

    let title = "Op log (last 10) (Esc/q/Enter=close)";
    let list = List::new(lines)
        .style(style::body_style(&state.theme))
        .block(style::pane_block(&state.theme, title.to_string(), true));

    frame.render_widget(list, popup);
}