framework_tool_tui/tui/component/
footer.rs1use ratatui::{
2 layout::{Constraint, Rect},
3 style::Style,
4 widgets::{Block, BorderType, Borders, Paragraph},
5 Frame,
6};
7
8use crate::{
9 app::{FOOTER_HELP, VERSION},
10 framework::info::FrameworkInfo,
11 tui::{component::Component, theme::Theme},
12};
13
14pub struct FooterComponent;
15
16impl Component for FooterComponent {
17 fn render(&mut self, frame: &mut Frame, area: Rect, theme: &Theme, _info: &FrameworkInfo) {
18 let block = Block::default()
19 .title(" Help ")
20 .borders(Borders::ALL)
21 .border_style(Style::default().fg(theme.border))
22 .border_type(BorderType::Rounded);
23
24 let [help_area, version_area] =
25 ratatui::layout::Layout::horizontal([Constraint::Min(1), Constraint::Max(12)])
26 .horizontal_margin(1)
27 .areas(block.inner(area));
28
29 frame.render_widget(
30 Paragraph::new(FOOTER_HELP).style(Style::default().fg(theme.indication_ok)),
31 help_area,
32 );
33 frame.render_widget(
34 Paragraph::new(format!("v{}", VERSION))
35 .style(Style::default().fg(theme.highlighted_text))
36 .alignment(ratatui::prelude::Alignment::Right),
37 version_area,
38 );
39
40 frame.render_widget(block, area);
41 }
42}