From 05e274615388ad6a3a8a18a552257d6d05723779 Mon Sep 17 00:00:00 2001 From: pmqueiroz Date: Tue, 19 May 2026 12:42:36 -0300 Subject: [PATCH] feat(settings): add About tab with brand and version --- assets/brand/nova-brand.png | Bin 0 -> 41503 bytes assets/brand/nova-brand.svg | 21 +++++ src/ui/app_state/nova.rs | 1 + src/ui/components/mod.rs | 1 + src/ui/components/settings.rs | 126 +++++++++++++++------------- src/ui/components/settings_about.rs | 35 ++++++++ 6 files changed, 126 insertions(+), 58 deletions(-) create mode 100644 assets/brand/nova-brand.png create mode 100644 assets/brand/nova-brand.svg create mode 100644 src/ui/components/settings_about.rs diff --git a/assets/brand/nova-brand.png b/assets/brand/nova-brand.png new file mode 100644 index 0000000000000000000000000000000000000000..0e8a8de836b058c528dfd5ea0d9c7c9bf283f037 GIT binary patch literal 41503 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 + + + + + + + + + + + + + + + + + + + + diff --git a/src/ui/app_state/nova.rs b/src/ui/app_state/nova.rs index 43a9f9b..f28ee3e 100644 --- a/src/ui/app_state/nova.rs +++ b/src/ui/app_state/nova.rs @@ -20,6 +20,7 @@ pub enum SettingsTab { StatusBar, Ai, Raw, + About, } #[derive(Debug, Clone)] diff --git a/src/ui/components/mod.rs b/src/ui/components/mod.rs index c894bf7..a7cbba9 100644 --- a/src/ui/components/mod.rs +++ b/src/ui/components/mod.rs @@ -7,6 +7,7 @@ mod search_bar; mod section_label; mod setting_row; mod settings; +mod settings_about; mod settings_ai; mod settings_general; mod settings_keybindings; diff --git a/src/ui/components/settings.rs b/src/ui/components/settings.rs index 6dd5878..bc0acab 100644 --- a/src/ui/components/settings.rs +++ b/src/ui/components/settings.rs @@ -15,7 +15,8 @@ use crate::ui::{ }; use super::{ - settings_ai, settings_general, settings_keybindings, settings_status_bar, settings_theme, + settings_about, settings_ai, settings_general, settings_keybindings, settings_status_bar, + settings_theme, }; const SIDEBAR_WIDTH: f32 = 160.0; @@ -133,68 +134,76 @@ fn modal_inner<'a>( let body = row![ sidebar_nav(active_tab), rule::vertical(1), - container( - scrollable(match active_tab { - SettingsTab::General => settings_general::general_tab(settings, shell_input), - SettingsTab::Theme => settings_theme::theme_tab(settings), - SettingsTab::Keybindings => - settings_keybindings::keybindings_tab(settings, recording_index), - SettingsTab::StatusBar => settings_status_bar::status_bar_tab(settings), - SettingsTab::Ai => settings_ai::ai_tab(settings), - SettingsTab::Raw => edit_raw_tab(raw_content), - }) - .height(Length::Fill) - .direction(scrollable::Direction::Vertical( - scrollable::Scrollbar::new() - .width(4) - .margin(4) - .scroller_width(4), - )) - .style(|_t, _status| scrollable::Style { - container: container::Style::default(), - vertical_rail: scrollable::Rail { - background: None, - border: Border::default(), - scroller: scrollable::Scroller { - background: Color { - r: 0.5, - g: 0.5, - b: 0.5, - a: 0.35, - } - .into(), - border: Border { - color: Color::TRANSPARENT, - radius: Radius::new(4.0), - width: 0.0, + if *active_tab == SettingsTab::About { + container(settings_about::about_tab()) + .width(Length::Fill) + .height(Length::Fill) + } else { + container( + scrollable(match active_tab { + SettingsTab::General => settings_general::general_tab(settings, shell_input), + SettingsTab::Theme => settings_theme::theme_tab(settings), + SettingsTab::Keybindings => { + settings_keybindings::keybindings_tab(settings, recording_index) + } + SettingsTab::StatusBar => settings_status_bar::status_bar_tab(settings), + SettingsTab::Ai => settings_ai::ai_tab(settings), + SettingsTab::Raw => edit_raw_tab(raw_content), + SettingsTab::About => unreachable!(), + }) + .height(Length::Fill) + .direction(scrollable::Direction::Vertical( + scrollable::Scrollbar::new() + .width(4) + .margin(4) + .scroller_width(4), + )) + .style(|_t, _status| scrollable::Style { + container: container::Style::default(), + vertical_rail: scrollable::Rail { + background: None, + border: Border::default(), + scroller: scrollable::Scroller { + background: Color { + r: 0.5, + g: 0.5, + b: 0.5, + a: 0.35, + } + .into(), + border: Border { + color: Color::TRANSPARENT, + radius: Radius::new(4.0), + width: 0.0, + }, + }, + }, + horizontal_rail: scrollable::Rail { + background: None, + border: Border::default(), + scroller: scrollable::Scroller { + background: Color::TRANSPARENT.into(), + border: Border::default(), }, }, - }, - horizontal_rail: scrollable::Rail { - background: None, - border: Border::default(), - scroller: scrollable::Scroller { + gap: None, + auto_scroll: scrollable::AutoScroll { background: Color::TRANSPARENT.into(), border: Border::default(), + shadow: Shadow::default(), + icon: Color::TRANSPARENT, }, - }, - gap: None, - auto_scroll: scrollable::AutoScroll { - background: Color::TRANSPARENT.into(), - border: Border::default(), - shadow: Shadow::default(), - icon: Color::TRANSPARENT, - }, - }), - ) - .padding(Padding { - top: 16.0, - bottom: 16.0, - left: 20.0, - right: 16.0, - }) - .width(Length::Fill) - .height(Length::Fill), + }), + ) + .padding(Padding { + top: 16.0, + bottom: 16.0, + left: 20.0, + right: 16.0, + }) + .width(Length::Fill) + .height(Length::Fill) + }, ] .height(Length::Fill); @@ -263,6 +272,7 @@ fn sidebar_nav<'a>(active_tab: &'a SettingsTab) -> Element<'a, Message> { (SettingsTab::StatusBar, "Status Bar"), (SettingsTab::Ai, "AI"), (SettingsTab::Raw, "Raw"), + (SettingsTab::About, "About"), ]; let mut nav = column![].spacing(2).padding(Padding::from([8, 6])); diff --git a/src/ui/components/settings_about.rs b/src/ui/components/settings_about.rs new file mode 100644 index 0000000..eafc450 --- /dev/null +++ b/src/ui/components/settings_about.rs @@ -0,0 +1,35 @@ +use iced::{ + ContentFit, Element, Length, + alignment::Horizontal, + widget::{column, container, svg, text}, +}; + +use crate::ui::{app_state::Message, theme}; + +const BRAND_SVG: &[u8] = include_bytes!("../../../assets/brand/nova-brand.svg"); + +static BRAND_HANDLE: std::sync::LazyLock = + std::sync::LazyLock::new(|| svg::Handle::from_memory(BRAND_SVG)); + +pub(super) fn about_tab<'a>() -> Element<'a, Message> { + let fg_muted = theme::color::runtime().foreground_muted; + + container( + column![ + svg(BRAND_HANDLE.clone()) + .width(260) + .content_fit(ContentFit::Contain), + text(format!("v{}", env!("CARGO_PKG_VERSION"))) + .font(theme::font::regular()) + .size(12) + .color(fg_muted), + ] + .spacing(12) + .align_x(Horizontal::Center), + ) + .width(Length::Fill) + .height(Length::Fill) + .align_x(Horizontal::Center) + .align_y(iced::alignment::Vertical::Center) + .into() +}