Polish vertical tab lifecycle: hover ≠ active, close as a coin
Active and hover used the same ACTIVE_NAV_BG, so a selected row gave no feedback when the cursor crossed it — the contrast ladder was a single rung. Replace it with a four-state ladder shared by the home anchor, launcher rows, and tab rows: rest → transparent (HOVER_NAV_BG hover) active → ACTIVE_NAV_BG (ACTIVE_NAV_BG_HOVER hover) The choice lives in nav_row_palette(active) so the ladder cannot silently disagree across the three callers. Close (×) becomes an 18 px circular coin (was a 16 px square) with the warm-dark hover wash from CLOSE_HOVER_BG, shared by both row variants via a single render_row_close_button recipe — the button now reads as something to press, not a glyph in a square. Hoist sidebar_chrome.rs alongside sidebar.rs to host the shared constants/helpers and keep both files under the 500-line ceiling (444 / 198). cargo test ely_app --bin ely_app: 103 passed.
This commit is contained in:
@@ -11,6 +11,7 @@ pub(crate) mod plugin_detail_view;
|
||||
pub(crate) mod plugin_labels;
|
||||
pub(crate) mod settings_layout;
|
||||
pub(crate) mod sidebar;
|
||||
pub(crate) mod sidebar_chrome;
|
||||
pub(crate) mod sidebar_header;
|
||||
pub(crate) mod split_pane;
|
||||
pub(crate) mod topbar;
|
||||
@@ -23,7 +24,7 @@ pub(crate) use command_overlay::render_command_overlay;
|
||||
pub(crate) use home::render_home_page;
|
||||
pub(crate) use plugin_detail_view::render_plugin_detail_view;
|
||||
pub(crate) use settings_layout::render_settings_shell;
|
||||
pub(crate) use sidebar::{panel_bg, panel_shadow};
|
||||
pub(crate) use sidebar_chrome::{panel_bg, panel_shadow};
|
||||
pub(crate) use sidebar_header::{
|
||||
WorkspaceDisclosureAnchor, render_sidebar_header, render_workspace_disclosure,
|
||||
render_workspace_disclosure_backdrop,
|
||||
|
||||
Reference in New Issue
Block a user