use ratatui::Frame;
use ratatui::style::Style;
use ratatui::text::{Line, Span};
use ratatui::widgets::{Clear, Paragraph};
use crate::app::{App, PromptKind};
use crate::ui::centered;
const WIDTH: u16 = 56;
pub fn render(f: &mut Frame, app: &App) {
let theme = &app.theme;
let prompt = &app.prompt;
let area = centered(f.area(), WIDTH, 5);
f.render_widget(Clear, area);
let typed = Line::from(vec![
Span::raw(" "),
Span::styled(prompt.input.clone(), Style::new().bold()),
Span::styled("▏", Style::new().fg(theme.accent)),
]);
let message = match &prompt.error {
Some(err) => Line::from(Span::styled(
format!(" {err}"),
Style::new().fg(theme.error),
)),
None => Line::from(Span::raw(" ").style(app.theme.subtle())),
};
let (title, hint) = match prompt.kind {
PromptKind::Ticker => (
" Add ticker ".to_string(),
" enter add · esc cancel · Save in settings keeps it",
),
PromptKind::Position => (
format!(" Position · {} ", prompt.target),
" qty avg · enter save · empty clears · esc cancel",
),
};
let hint = Line::from(Span::raw(hint).style(app.theme.subtle()));
f.render_widget(
Paragraph::new(vec![typed, message, hint]).block(theme.modal().title(theme.heading(title))),
area,
);
}