diff --git a/crates/theme/src/lib.rs b/crates/theme/src/lib.rs index 920ba7e7c9..e280b224cc 100644 --- a/crates/theme/src/lib.rs +++ b/crates/theme/src/lib.rs @@ -47,6 +47,8 @@ pub struct Titlebar { pub offline_icon: OfflineIcon, pub icon_color: Color, pub avatar: ImageStyle, + pub sign_in_prompt: ContainedText, + pub hovered_sign_in_prompt: ContainedText, pub outdated_warning: ContainedText, } diff --git a/crates/workspace/src/lib.rs b/crates/workspace/src/lib.rs index 4ec16f4545..5901d694d3 100644 --- a/crates/workspace/src/lib.rs +++ b/crates/workspace/src/lib.rs @@ -953,36 +953,43 @@ impl Workspace { fn render_avatar(&self, cx: &mut RenderContext) -> ElementBox { let theme = &self.settings.borrow().theme; - let avatar = if let Some(avatar) = self + if let Some(avatar) = self .user_store .read(cx) .current_user() .and_then(|user| user.avatar.clone()) { - Image::new(avatar) - .with_style(theme.workspace.titlebar.avatar) - .boxed() + ConstrainedBox::new( + Align::new( + ConstrainedBox::new( + Image::new(avatar) + .with_style(theme.workspace.titlebar.avatar) + .boxed(), + ) + .with_width(theme.workspace.titlebar.avatar_width) + .boxed(), + ) + .boxed(), + ) + .with_width(theme.workspace.right_sidebar.width) + .boxed() } else { - MouseEventHandler::new::(0, cx, |_, _| { - Svg::new("icons/signed-out-12.svg") - .with_color(theme.workspace.titlebar.icon_color) + MouseEventHandler::new::(0, cx, |state, _| { + let style = if state.hovered { + &theme.workspace.titlebar.hovered_sign_in_prompt + } else { + &theme.workspace.titlebar.sign_in_prompt + }; + Label::new("Sign in".to_string(), style.text.clone()) + .contained() + .with_style(style.container) .boxed() }) .on_click(|cx| cx.dispatch_action(Authenticate)) .with_cursor_style(CursorStyle::PointingHand) + .aligned() .boxed() - }; - - ConstrainedBox::new( - Align::new( - ConstrainedBox::new(avatar) - .with_width(theme.workspace.titlebar.avatar_width) - .boxed(), - ) - .boxed(), - ) - .with_width(theme.workspace.right_sidebar.width) - .boxed() + } } } diff --git a/crates/zed/assets/themes/_base.toml b/crates/zed/assets/themes/_base.toml index cb53226103..94d4415421 100644 --- a/crates/zed/assets/themes/_base.toml +++ b/crates/zed/assets/themes/_base.toml @@ -13,6 +13,16 @@ icon_color = "$text.2.color" avatar = { corner_radius = 10, border = { width = 1, color = "#00000088" } } outdated_warning = { extends = "$text.2", size = 13 } +[workspace.titlebar.sign_in_prompt] +extends = "$text.2" +size = 13 +underline = true +padding = { right = 8 } + +[workspace.titlebar.hovered_sign_in_prompt] +extends = "$workspace.titlebar.sign_in_prompt" +color = "$text.1.color" + [workspace.titlebar.offline_icon] padding = { right = 4 } width = 16