budget_tracker_tui 1.3.1

A feature rich TUI budget tracker app
use crate::app::state::App;
use crate::ui::helpers::centered_rect;
use ratatui::prelude::*;
use ratatui::widgets::*;

pub fn render_confirmation_dialog(f: &mut Frame, message: &str, area: Rect) {
    let dialog_area = centered_rect(60, 20, area);

    let dialog_block = Block::default()
        .title("Confirmation")
        .borders(Borders::ALL)
        .border_style(Style::default().fg(Color::Yellow));

    let dialog_text = Paragraph::new(message)
        .block(dialog_block)
        .style(Style::default().fg(Color::White))
        .alignment(Alignment::Center)
        .wrap(Wrap { trim: true });

    f.render_widget(Clear, dialog_area); // Clear the area behind the dialog
    f.render_widget(dialog_text, dialog_area);
}

pub fn render_selection_popup(f: &mut Frame, app: &mut App, area: Rect) {
    let popup_title = match app.mode {
        crate::app::state::AppMode::SelectingCategory => "Select Category (Enter/Esc)",
        crate::app::state::AppMode::SelectingSubcategory => "Select Subcategory (Enter/Esc)",
        crate::app::state::AppMode::SelectingRecurrenceFrequency => "Select Frequency (Enter/Esc)",
        _ => "Select Option",
    };

    let items: Vec<ListItem> = app
        .current_selection_list
        .iter()
        .map(|i| ListItem::new(i.as_str()).style(Style::default().fg(Color::White)))
        .collect();

    let list = List::new(items)
        .block(Block::default().title(popup_title).borders(Borders::ALL))
        .highlight_style(Style::default().add_modifier(Modifier::REVERSED))
        .highlight_symbol("> ");

    let popup_area = centered_rect(60, 50, area);

    f.render_widget(Clear, popup_area);
    f.render_stateful_widget(list, popup_area, &mut app.selection_list_state);
}