Skip to main content

framework_tool_tui/tui/component/
footer.rs

1use 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}