use crate::render::renderable::Renderable; use crate::render::renderable::RowRenderable; use ratatui::style::Style; use ratatui::style::Styled as _; use ratatui::style::Stylize as _; use ratatui::widgets::Paragraph; use ratatui::widgets::Wrap; use unicode_width::UnicodeWidthStr; pub(crate) fn selection_option_row( index: usize, label: String, is_selected: bool, ) -> Box { let prefix = if is_selected { format!("› {}. ", index + 1) } else { format!(" {}. ", index + 1) }; let style = if is_selected { Style::default().cyan() } else { Style::default() }; let prefix_width = UnicodeWidthStr::width(prefix.as_str()) as u16; let mut row = RowRenderable::new(); row.push(prefix_width, prefix.set_style(style)); row.push( u16::MAX, Paragraph::new(label) .style(style) .wrap(Wrap { trim: false }), ); row.into() }