From f2799e89c9a862b183144e75fca740fd4d4dc224 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=B7=E7=94=B5=E8=8A=BD=E8=A1=A3?= Date: Sun, 10 May 2026 00:56:25 -0400 Subject: [PATCH] Sharpen sidebar polish: profile chip chevron + close-hover bg MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The profile chip in the sidebar footer used a chevron-down icon, which universally signals "this opens an inline popover," but its handler just navigates to ely://settings/profiles. Swap to chevron-right so the icon honors what the click actually does. The per-row tab close (×) button hovered with rgba(0x281e1414) — 8% alpha — which read as no hover at all on the cream panel. Bump to ~30% alpha (CLOSE_HOVER_BG) so the hit target snaps in like Arc/Dia. --- crates/ely_app/src/shell/chrome/sidebar.rs | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/crates/ely_app/src/shell/chrome/sidebar.rs b/crates/ely_app/src/shell/chrome/sidebar.rs index 46ed212..a65481d 100644 --- a/crates/ely_app/src/shell/chrome/sidebar.rs +++ b/crates/ely_app/src/shell/chrome/sidebar.rs @@ -169,9 +169,13 @@ impl ElyShell { .child(profile_name), ) .child( + // The profile chip navigates to settings/profiles — + // it's not a popover. Use a right-chevron so the icon + // promises "this opens a page" instead of the down + // chevron that promises "this opens a menu inline". div() .text_color(rgb(colors::INK_4)) - .child(IconName::ChevronDown), + .child(IconName::ChevronRight), ) .into_any_element() } @@ -278,7 +282,7 @@ impl ElyShell { .text_color(rgb(colors::INK_4)) .opacity(0.0) .group_hover(group_name, |style| style.opacity(1.0)) - .hover(|style| style.bg(rgba(0x281e1414)).text_color(rgb(colors::INK))) + .hover(|style| style.bg(rgba(CLOSE_HOVER_BG)).text_color(rgb(colors::INK))) .cursor_pointer() .on_click(cx.listener(move |shell, _, window, cx| { shell.close_tab_by_id(&close_tab_id, window, cx); @@ -380,7 +384,7 @@ impl ElyShell { .text_color(rgb(colors::INK_4)) .opacity(0.0) .group_hover(group_name, |style| style.opacity(1.0)) - .hover(|style| style.bg(rgba(0x281e1414)).text_color(rgb(colors::INK))) + .hover(|style| style.bg(rgba(CLOSE_HOVER_BG)).text_color(rgb(colors::INK))) .cursor_pointer() .on_click(cx.listener(move |shell, _, window, cx| { shell.close_tab_by_id(&close_tab_id, window, cx); @@ -452,6 +456,13 @@ fn section_label(label: &'static str) -> impl IntoElement { } pub(crate) const ACTIVE_NAV_BG: u32 = 0xffffffd9; + +/// Hover tint behind the per-row close (×) button. Was 8% alpha, which +/// was visually indistinguishable from the panel background and made +/// the click target read as inert. Brought to ~30% alpha so the +/// hover registers as a real "press here" surface, matching the +/// confidence of close buttons in Arc/Dia/Zen. +const CLOSE_HOVER_BG: u32 = 0x281e144d; const UNREAD_BADGE_BG: u32 = 0x281e140f; /// 50% white inner border that traces every glass panel — the GPUI