aboutsummaryrefslogtreecommitdiff
path: root/src/ui/menus.rs
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-05-20 22:08:04 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-05-20 22:08:04 +0300
commitc584037c77c63f6a08f8837f357c89432b8043e7 (patch)
tree16647d6628a11dbbf5e576fb86f2a87b507e202e /src/ui/menus.rs
parentf7b26a911772dab16a49d982002d2bbe58e0956b (diff)
feat: badge outdated integration updates
Diffstat (limited to 'src/ui/menus.rs')
-rw-r--r--src/ui/menus.rs65
1 files changed, 22 insertions, 43 deletions
diff --git a/src/ui/menus.rs b/src/ui/menus.rs
index d17aa897..aa5e3b79 100644
--- a/src/ui/menus.rs
+++ b/src/ui/menus.rs
@@ -148,53 +148,32 @@ pub(super) fn render_global_launcher_menu(app: &AppState, frame: &mut Frame) {
let selected = idx == app.global_menu.highlighted;
let rect = Rect::new(inner.x, y, inner.width, 1);
- if *item == "update ready" {
- let line = if selected {
- Line::from(vec![
- Span::styled(
- " update ready ",
- Style::default()
- .fg(panel_contrast_fg(&app.palette))
- .bg(app.palette.accent)
- .add_modifier(Modifier::BOLD),
- ),
- Span::styled(
- "● ",
- Style::default()
- .fg(panel_contrast_fg(&app.palette))
- .bg(app.palette.accent)
- .add_modifier(Modifier::BOLD),
- ),
- ])
- } else {
- Line::from(vec![
- Span::styled(" update ready ", Style::default().fg(app.palette.text)),
- Span::styled(
- "● ",
- Style::default()
- .fg(app.palette.accent)
- .add_modifier(Modifier::BOLD),
- ),
- ])
- };
- frame.render_widget(Paragraph::new(line).alignment(Alignment::Left), rect);
- continue;
- }
-
- let style = if selected {
+ let selected_style = Style::default()
+ .fg(panel_contrast_fg(&app.palette))
+ .bg(app.palette.accent)
+ .add_modifier(Modifier::BOLD);
+ let item_style = if selected {
+ selected_style
+ } else {
+ Style::default().fg(app.palette.text)
+ };
+ let badge_style = if selected {
+ selected_style
+ } else {
Style::default()
- .fg(panel_contrast_fg(&app.palette))
- .bg(app.palette.accent)
+ .fg(app.palette.accent)
.add_modifier(Modifier::BOLD)
+ };
+
+ let line = if app.global_menu_item_has_badge(item) {
+ Line::from(vec![
+ Span::styled(" ●", badge_style),
+ Span::styled(format!(" {item} "), item_style),
+ ])
} else {
- Style::default().fg(app.palette.text)
+ Line::from(Span::styled(format!(" {item} "), item_style))
};
- frame.render_widget(
- Paragraph::new(format!(" {item} "))
- .style(style)
- .alignment(Alignment::Left),
- rect,
- );
+ frame.render_widget(Paragraph::new(line).alignment(Alignment::Left), rect);
}
}