43 lines
1.3 KiB
Rust
43 lines
1.3 KiB
Rust
use ratatui::layout::Rect;
|
|
use ratatui::style::{Modifier, Style};
|
|
use ratatui::widgets::Paragraph;
|
|
use ratatui::Frame;
|
|
|
|
use crate::theme;
|
|
|
|
pub fn render_props_form(frame: &mut Frame, area: Rect, fields: &[(&str, &str, bool)]) {
|
|
let theme = theme::get();
|
|
|
|
for (i, (label, value, selected)) in fields.iter().enumerate() {
|
|
let y = area.y + i as u16;
|
|
if y >= area.y + area.height {
|
|
break;
|
|
}
|
|
|
|
let (label_style, value_style) = if *selected {
|
|
(
|
|
Style::default()
|
|
.fg(theme.hint.key)
|
|
.add_modifier(Modifier::BOLD),
|
|
Style::default()
|
|
.fg(theme.ui.text_primary)
|
|
.bg(theme.ui.surface),
|
|
)
|
|
} else {
|
|
(
|
|
Style::default().fg(theme.ui.text_muted),
|
|
Style::default().fg(theme.ui.text_primary),
|
|
)
|
|
};
|
|
|
|
let label_area = Rect::new(area.x + 1, y, 14, 1);
|
|
let value_area = Rect::new(area.x + 16, y, area.width.saturating_sub(18), 1);
|
|
|
|
frame.render_widget(
|
|
Paragraph::new(format!("{label}:")).style(label_style),
|
|
label_area,
|
|
);
|
|
frame.render_widget(Paragraph::new(*value).style(value_style), value_area);
|
|
}
|
|
}
|