From 91a57cbc0f765a22b4caa4bf2afb3e5e9fbe8f64 Mon Sep 17 00:00:00 2001 From: Kenneth Date: Mon, 25 May 2026 18:43:26 +0100 Subject: [PATCH] wip: segmented control --- src/asset/font_icon/file_braces_corner.svg | 1 + src/asset/font_icon/message_circle_more.svg | 1 + src/component/font_icon.rs | 2 ++ src/screen/dashboard/pull_request_view.rs | 39 +++++++++++++-------- src/theme/catppuccin.rs | 4 +-- 5 files changed, 30 insertions(+), 17 deletions(-) create mode 100644 src/asset/font_icon/file_braces_corner.svg create mode 100644 src/asset/font_icon/message_circle_more.svg diff --git a/src/asset/font_icon/file_braces_corner.svg b/src/asset/font_icon/file_braces_corner.svg new file mode 100644 index 0000000..b045206 --- /dev/null +++ b/src/asset/font_icon/file_braces_corner.svg @@ -0,0 +1 @@ + diff --git a/src/asset/font_icon/message_circle_more.svg b/src/asset/font_icon/message_circle_more.svg new file mode 100644 index 0000000..54ae88f --- /dev/null +++ b/src/asset/font_icon/message_circle_more.svg @@ -0,0 +1 @@ + diff --git a/src/component/font_icon.rs b/src/component/font_icon.rs index 00b8cd6..9132141 100644 --- a/src/component/font_icon.rs +++ b/src/component/font_icon.rs @@ -43,6 +43,8 @@ define_font_icons!( Eye, RefreshCw, Star, + MessageCircleMore, + FileBracesCorner, ); #[derive(gpui::IntoElement)] diff --git a/src/screen/dashboard/pull_request_view.rs b/src/screen/dashboard/pull_request_view.rs index 46441c3..a5f15b2 100644 --- a/src/screen/dashboard/pull_request_view.rs +++ b/src/screen/dashboard/pull_request_view.rs @@ -2,7 +2,7 @@ use std::sync::Arc; use gpui::{ AppContext, InteractiveElement, IntoElement, ParentElement, StatefulInteractiveElement, Styled, - div, img, prelude::FluentBuilder, + div, img, linear_gradient, prelude::FluentBuilder, }; use crate::{ @@ -284,10 +284,7 @@ impl gpui::Render for PullRequestView { ) -> impl gpui::IntoElement { div().size_full().child(match &self.pull_request_query { | Some(q) => match read_query(q, cx) { - | QueryStatus::Loaded(pr) => match &self.diff_view { - | Some(v) => v.clone().into_any_element(), - | None => self.pr_content(pr, cx), - }, + | QueryStatus::Loaded(pr) => self.pr_content(pr, cx), | QueryStatus::Err(e) => div() .size_full() @@ -331,17 +328,29 @@ impl gpui::RenderOnce for Toolbar { .border_b_1() .border_color(theme.colors.border_muted) .child( - toolbar_button("pr-review-btn") - .leading(font_icon(FontIcon::Eye)) - .mr_1(), + div() + .flex() + .flex_row() + .items_center() + .justify_center() + .border_t_1() + .border_color(theme.colors.border_strong) + .rounded_sm() + .child( + div() + .px_2() + .py_1() + .bg(theme.colors.surface_elevated) + .child(font_icon(FontIcon::MessageCircleMore).size_3p5()), + ) + .child( + div() + .px_2() + .py_1() + .bg(theme.colors.surface_elevated) + .child(font_icon(FontIcon::FileBracesCorner).size_3p5()), + ), ) - .child( - toolbar_button("pr-review-btn") - .leading(font_icon(FontIcon::RefreshCw)) - .mr_1(), - ) - .child(divider().bg(theme.colors.border).mr_1()) - .child(toolbar_button("pr-review-btn").leading(font_icon(FontIcon::Star))) .child(div().flex_1()) .child( toolbar_button("pr-close-btn") diff --git a/src/theme/catppuccin.rs b/src/theme/catppuccin.rs index 1c6a38d..7065039 100644 --- a/src/theme/catppuccin.rs +++ b/src/theme/catppuccin.rs @@ -43,7 +43,7 @@ pub(crate) fn latte() -> Theme { colors: ThemeColors { background: hex(0xeff1f5), surface: hex(0xe6e9ef), - surface_elevated: hex(0xdce0e8), + surface_elevated: hex(0xeff1f5), surface_chrome: hex(0xdce0e8), surface_hover: hex(0xdce0e8), surface_active: hex(0xccd0da), @@ -152,7 +152,7 @@ pub(crate) fn mocha() -> Theme { colors: ThemeColors { background: hex(0x1e1e2e), surface: hex(0x181825), - surface_elevated: hex(0x313244), + surface_elevated: hex(0x45475a), surface_chrome: hex(0x11111b), surface_hover: hex(0x313244), surface_active: hex(0x45475a),