aboutsummaryrefslogtreecommitdiff
path: root/src/widgets/tabs.rs
diff options
context:
space:
mode:
authorpablu <me@pablu.de>2026-06-02 19:55:57 +0200
committerpablu <me@pablu.de>2026-06-02 19:55:57 +0200
commit0f9492c0da3ac6d391b7b0d32ea2a391b94a18f4 (patch)
treea1fb59a02068ad49ea40d055e3b5e00da3db63a3 /src/widgets/tabs.rs
parentb547e6758c635682c94794e5c13070a73c918203 (diff)
near feature parity with previous architecture
Diffstat (limited to 'src/widgets/tabs.rs')
-rw-r--r--src/widgets/tabs.rs24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/widgets/tabs.rs b/src/widgets/tabs.rs
new file mode 100644
index 0000000..aca7685
--- /dev/null
+++ b/src/widgets/tabs.rs
@@ -0,0 +1,24 @@
+use ratatui::{
+ Frame,
+ layout::Rect,
+ symbols,
+ widgets::{Block, Borders, Tabs},
+};
+
+use crate::{app::ViewState, theme::Theme};
+
+pub fn render_tab(frame: &mut Frame, area: Rect, selected_tab: &ViewState) {
+ let selected_index = match selected_tab {
+ ViewState::Dashboard => 0,
+ ViewState::InstalledPackages => 1,
+ ViewState::AvailablePackages => 2,
+ };
+
+ let tabs = Tabs::new(vec!["Dashboard", "Installed", "Browse"])
+ .block(Block::default().borders(Borders::ALL).style(Theme::block()))
+ .highlight_style(Theme::success())
+ .select(selected_index)
+ .divider(symbols::DOT)
+ .padding(" ", " ");
+ frame.render_widget(tabs, area);
+}