diff --git a/crates/op-editor-ui/src/widgets/agent_settings_builtin_parts.rs b/crates/op-editor-ui/src/widgets/agent_settings_builtin_parts.rs index 8424b8099..b41407ce6 100644 --- a/crates/op-editor-ui/src/widgets/agent_settings_builtin_parts.rs +++ b/crates/op-editor-ui/src/widgets/agent_settings_builtin_parts.rs @@ -153,8 +153,10 @@ pub fn paint_preset_menu( let item = preset_item_rect(card, i); let active = agent.preset == preset.key; let hovered = settings.builtin_preset_menu_hover == Some(preset.key); - if active || hovered { + if active { cx.backend.fill_round_rect(item, 5.0, theme.muted); + } else if hovered { + cx.backend.fill_round_rect(item, 5.0, theme.button_hover); } if active { draw_icon( diff --git a/crates/op-editor-ui/src/widgets/agent_settings_panel_card.rs b/crates/op-editor-ui/src/widgets/agent_settings_panel_card.rs index 766c78eeb..38a9c4495 100644 --- a/crates/op-editor-ui/src/widgets/agent_settings_panel_card.rs +++ b/crates/op-editor-ui/src/widgets/agent_settings_panel_card.rs @@ -29,16 +29,12 @@ pub(super) fn paint_agent_card( card: Rect, index: usize, ) { - let outlined = matches!(provider, AgentProvider::ClaudeCode); let card_hovered = settings.hover_provider == index; - // Chrome via jian Card; the fill choice stays caller-side so the look is - // preserved exactly: outlined ClaudeCode -> muted, hover -> accent wash, - // else transparent. The whole-card hover wash keeps the row reading as - // "pointing at this card" rather than only the trailing button. - let fill = if outlined { - Some(theme.muted) - } else if card_hovered { - Some(theme.accent) + // Every provider card looks the same: transparent by default + a single + // jian-standard `button_hover` wash on hover (no per-provider special fill), + // so hovering any card reads identically. + let fill = if card_hovered { + Some(theme.button_hover) } else { None }; diff --git a/crates/op-editor-ui/src/widgets/layer_panel.rs b/crates/op-editor-ui/src/widgets/layer_panel.rs index 2e75d06cc..b49634bae 100644 --- a/crates/op-editor-ui/src/widgets/layer_panel.rs +++ b/crates/op-editor-ui/src/widgets/layer_panel.rs @@ -513,7 +513,8 @@ impl Widget for LayerPanel { cx.backend .fill_round_rect(row, 6.0, self.theme.row_selected); } else if page.hovered { - cx.backend.fill_round_rect(row, 6.0, self.theme.muted); + cx.backend + .fill_round_rect(row, 6.0, self.theme.button_hover); } let label_x = row.origin.x + 12.0; let label_max_x = rect.origin.x + rect.size.x - ROW_PAD_X - 18.0; @@ -602,7 +603,8 @@ impl Widget for LayerPanel { cx.backend .fill_round_rect(row, 6.0, self.theme.row_selected_primary); } else if item.hovered { - cx.backend.fill_round_rect(row, 6.0, self.theme.muted); + cx.backend + .fill_round_rect(row, 6.0, self.theme.button_hover); } let indent = ROW_PAD_X + item.depth as f32 * 12.0; diff --git a/crates/op-editor-ui/src/widgets/property_panel_flex.rs b/crates/op-editor-ui/src/widgets/property_panel_flex.rs index 9cec4ffec..b5699d3d9 100644 --- a/crates/op-editor-ui/src/widgets/property_panel_flex.rs +++ b/crates/op-editor-ui/src/widgets/property_panel_flex.rs @@ -570,9 +570,8 @@ pub fn paint_padding_mode_popover( for (i, rect) in rows.iter().enumerate() { let mode = PaddingEditMode::ALL[i]; if hover == Some(i) { - // Muted row wash matching the other dropdown hovers - // (file menu / locale / shape picker). - cx.backend.fill_round_rect(*rect, 6.0, theme.muted); + // jian-standard button_hover row wash, matching the other dropdowns. + cx.backend.fill_round_rect(*rect, 6.0, theme.button_hover); } paint_radio_circle( cx,