Composite glass: inset highlights, blink, fade, panel tint
Closes the three "platform-impossible" gaps from the design audit without resorting to hacks or shaders. * chrome::glass — `render_inner_highlight(radius)` paints the design's `box-shadow: inset 0 0 0 1px` ring as an absolute overlay div with a 1 px top-edge highlight sliver. GPUI 0.2.2's BoxShadow has no inset flag, so the composite is the only way to keep the panel content unclipped while the ring rides on top. * chrome::animations — `blink` and `fade_in` wrap GPUI's first-class `with_animation` driver. Square-wave caret in the command header, 180 ms opacity ramp on the command backdrop and workspace disclosure list. * chrome::sidebar — panel_bg now tints toward the active wallpaper theme so the wallpaper bleeds through every glass surface, the closest honest substitute for backdrop-filter without a shader pass. * command_overlay split: row helpers move to chrome::command_rows so command_overlay drops from 504 → 232 lines, well under the 500-line ceiling. No behavior change. cargo test --workspace: 440 passed, 0 failed.
This commit is contained in:
@@ -13,6 +13,7 @@ use gpui_component::{
|
||||
button::{Button, ButtonVariants},
|
||||
};
|
||||
|
||||
use super::chrome::glass::render_inner_highlight;
|
||||
use super::chrome::panel_bg;
|
||||
use super::{ElyShell, ShellState, render::tab_profile_label};
|
||||
use crate::ToggleSidebar;
|
||||
@@ -37,6 +38,7 @@ impl ElyShell {
|
||||
div()
|
||||
.w(px(sidebar_width))
|
||||
.h_full()
|
||||
.relative()
|
||||
.flex()
|
||||
.flex_col()
|
||||
.items_center()
|
||||
@@ -88,6 +90,7 @@ impl ElyShell {
|
||||
self.render_compact_archived_button(index, archived_tab, cx)
|
||||
},
|
||||
))
|
||||
.child(render_inner_highlight(spacing::RADIUS_CARD))
|
||||
.into_any_element()
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user