//! Overlay: loading / processing spinner — shown during blocking operations. use ratatui::style::{Modifier, Style}; use ratatui::text::Span; use ratatui::widgets::{Block, Paragraph}; use ratatui::Frame; use crate::view::theme::Theme; use tracing::debug; /// Render the Loading overlay. #[tracing::instrument(skip_all)] pub fn render( frame: &mut Frame, area: ratatui::layout::Rect, block: Block<'static>, state: &crate::state::AppStateRest, ) { debug!("Rendering Loading overlay, tick: {}", state.misc.tick_count); let block = block .title(Span::styled( " Loading ", Style::default() .fg(Theme::WARNING) .add_modifier(Modifier::BOLD), )) .border_style(Style::default().fg(Theme::WARNING)); let spinner = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"]; let frame_idx = (state.misc.tick_count as usize) % spinner.len(); let content = format!(" {} Processing, please wait...", spinner[frame_idx]); let paragraph = Paragraph::new(content).block(block); frame.render_widget(paragraph, area); }