Detailed changes
@@ -933,7 +933,7 @@ impl AssistantPanel {
}
fn render_hamburger_button(cx: &mut ViewContext<Self>) -> impl IntoElement {
- IconButton::new("hamburger_button", Icon::Menu)
+ IconButton::new("hamburger_button", IconName::Menu)
.on_click(cx.listener(|this, _event, cx| {
if this.active_editor().is_some() {
this.set_active_editor_index(None, cx);
@@ -957,7 +957,7 @@ impl AssistantPanel {
}
fn render_split_button(cx: &mut ViewContext<Self>) -> impl IntoElement {
- IconButton::new("split_button", Icon::Snip)
+ IconButton::new("split_button", IconName::Snip)
.on_click(cx.listener(|this, _event, cx| {
if let Some(active_editor) = this.active_editor() {
active_editor.update(cx, |editor, cx| editor.split(&Default::default(), cx));
@@ -968,7 +968,7 @@ impl AssistantPanel {
}
fn render_assist_button(cx: &mut ViewContext<Self>) -> impl IntoElement {
- IconButton::new("assist_button", Icon::MagicWand)
+ IconButton::new("assist_button", IconName::MagicWand)
.on_click(cx.listener(|this, _event, cx| {
if let Some(active_editor) = this.active_editor() {
active_editor.update(cx, |editor, cx| editor.assist(&Default::default(), cx));
@@ -979,7 +979,7 @@ impl AssistantPanel {
}
fn render_quote_button(cx: &mut ViewContext<Self>) -> impl IntoElement {
- IconButton::new("quote_button", Icon::Quote)
+ IconButton::new("quote_button", IconName::Quote)
.on_click(cx.listener(|this, _event, cx| {
if let Some(workspace) = this.workspace.upgrade() {
cx.window_context().defer(move |cx| {
@@ -994,7 +994,7 @@ impl AssistantPanel {
}
fn render_plus_button(cx: &mut ViewContext<Self>) -> impl IntoElement {
- IconButton::new("plus_button", Icon::Plus)
+ IconButton::new("plus_button", IconName::Plus)
.on_click(cx.listener(|this, _event, cx| {
this.new_conversation(cx);
}))
@@ -1004,12 +1004,12 @@ impl AssistantPanel {
fn render_zoom_button(&self, cx: &mut ViewContext<Self>) -> impl IntoElement {
let zoomed = self.zoomed;
- IconButton::new("zoom_button", Icon::Maximize)
+ IconButton::new("zoom_button", IconName::Maximize)
.on_click(cx.listener(|this, _event, cx| {
this.toggle_zoom(&ToggleZoom, cx);
}))
.selected(zoomed)
- .selected_icon(Icon::Minimize)
+ .selected_icon(IconName::Minimize)
.icon_size(IconSize::Small)
.tooltip(move |cx| {
Tooltip::for_action(if zoomed { "Zoom Out" } else { "Zoom In" }, &ToggleZoom, cx)
@@ -1286,8 +1286,8 @@ impl Panel for AssistantPanel {
}
}
- fn icon(&self, cx: &WindowContext) -> Option<Icon> {
- Some(Icon::Ai).filter(|_| AssistantSettings::get_global(cx).button)
+ fn icon(&self, cx: &WindowContext) -> Option<IconName> {
+ Some(IconName::Ai).filter(|_| AssistantSettings::get_global(cx).button)
}
fn icon_tooltip(&self, _cx: &WindowContext) -> Option<&'static str> {
@@ -2349,7 +2349,7 @@ impl ConversationEditor {
div()
.id("error")
.tooltip(move |cx| Tooltip::text(error.clone(), cx))
- .child(IconElement::new(Icon::XCircle)),
+ .child(Icon::new(IconName::XCircle)),
)
} else {
None
@@ -2645,7 +2645,7 @@ impl Render for InlineAssistant {
.justify_center()
.w(measurements.gutter_width)
.child(
- IconButton::new("include_conversation", Icon::Ai)
+ IconButton::new("include_conversation", IconName::Ai)
.on_click(cx.listener(|this, _, cx| {
this.toggle_include_conversation(&ToggleIncludeConversation, cx)
}))
@@ -2660,7 +2660,7 @@ impl Render for InlineAssistant {
)
.children(if SemanticIndex::enabled(cx) {
Some(
- IconButton::new("retrieve_context", Icon::MagnifyingGlass)
+ IconButton::new("retrieve_context", IconName::MagnifyingGlass)
.on_click(cx.listener(|this, _, cx| {
this.toggle_retrieve_context(&ToggleRetrieveContext, cx)
}))
@@ -2682,7 +2682,7 @@ impl Render for InlineAssistant {
div()
.id("error")
.tooltip(move |cx| Tooltip::text(error_message.clone(), cx))
- .child(IconElement::new(Icon::XCircle).color(Color::Error)),
+ .child(Icon::new(IconName::XCircle).color(Color::Error)),
)
} else {
None
@@ -2957,7 +2957,7 @@ impl InlineAssistant {
div()
.id("error")
.tooltip(|cx| Tooltip::text("Not Authenticated. Please ensure you have a valid 'OPENAI_API_KEY' in your environment variables.", cx))
- .child(IconElement::new(Icon::XCircle))
+ .child(Icon::new(IconName::XCircle))
.into_any_element()
),
@@ -2965,7 +2965,7 @@ impl InlineAssistant {
div()
.id("error")
.tooltip(|cx| Tooltip::text("Not Indexed", cx))
- .child(IconElement::new(Icon::XCircle))
+ .child(Icon::new(IconName::XCircle))
.into_any_element()
),
@@ -2996,7 +2996,7 @@ impl InlineAssistant {
div()
.id("update")
.tooltip(move |cx| Tooltip::text(status_text.clone(), cx))
- .child(IconElement::new(Icon::Update).color(Color::Info))
+ .child(Icon::new(IconName::Update).color(Color::Info))
.into_any_element()
)
}
@@ -3005,7 +3005,7 @@ impl InlineAssistant {
div()
.id("check")
.tooltip(|cx| Tooltip::text("Index up to date", cx))
- .child(IconElement::new(Icon::Check).color(Color::Success))
+ .child(Icon::new(IconName::Check).color(Color::Success))
.into_any_element()
),
}
@@ -4,7 +4,7 @@ use gpui::{
};
use menu::Cancel;
use util::channel::ReleaseChannel;
-use workspace::ui::{h_stack, v_stack, Icon, IconElement, Label, StyledExt};
+use workspace::ui::{h_stack, v_stack, Icon, IconName, Label, StyledExt};
pub struct UpdateNotification {
version: SemanticVersion,
@@ -30,7 +30,7 @@ impl Render for UpdateNotification {
.child(
div()
.id("cancel")
- .child(IconElement::new(Icon::Close))
+ .child(Icon::new(IconName::Close))
.cursor_pointer()
.on_click(cx.listener(|this, _, cx| this.dismiss(&menu::Cancel, cx))),
),
@@ -20,7 +20,7 @@ use serde::{Deserialize, Serialize};
use settings::{Settings, SettingsStore};
use std::sync::Arc;
use time::{OffsetDateTime, UtcOffset};
-use ui::{prelude::*, Avatar, Button, Icon, IconButton, Label, TabBar, Tooltip};
+use ui::{prelude::*, Avatar, Button, IconButton, IconName, Label, TabBar, Tooltip};
use util::{ResultExt, TryFutureExt};
use workspace::{
dock::{DockPosition, Panel, PanelEvent},
@@ -281,12 +281,12 @@ impl ChatPanel {
)),
)
.end_child(
- IconButton::new("notes", Icon::File)
+ IconButton::new("notes", IconName::File)
.on_click(cx.listener(Self::open_notes))
.tooltip(|cx| Tooltip::text("Open notes", cx)),
)
.end_child(
- IconButton::new("call", Icon::AudioOn)
+ IconButton::new("call", IconName::AudioOn)
.on_click(cx.listener(Self::join_call))
.tooltip(|cx| Tooltip::text("Join call", cx)),
),
@@ -395,7 +395,7 @@ impl ChatPanel {
.w_8()
.visible_on_hover("")
.children(message_id_to_remove.map(|message_id| {
- IconButton::new(("remove", message_id), Icon::XCircle).on_click(
+ IconButton::new(("remove", message_id), IconName::XCircle).on_click(
cx.listener(move |this, _, cx| {
this.remove_message(message_id, cx);
}),
@@ -429,7 +429,7 @@ impl ChatPanel {
Button::new("sign-in", "Sign in")
.style(ButtonStyle::Filled)
.icon_color(Color::Muted)
- .icon(Icon::Github)
+ .icon(IconName::Github)
.icon_position(IconPosition::Start)
.full_width()
.on_click(cx.listener(move |this, _, cx| {
@@ -622,12 +622,12 @@ impl Panel for ChatPanel {
"ChatPanel"
}
- fn icon(&self, cx: &WindowContext) -> Option<ui::Icon> {
+ fn icon(&self, cx: &WindowContext) -> Option<ui::IconName> {
if !is_channels_feature_enabled(cx) {
return None;
}
- Some(ui::Icon::MessageBubbles).filter(|_| ChatPanelSettings::get_global(cx).button)
+ Some(ui::IconName::MessageBubbles).filter(|_| ChatPanelSettings::get_global(cx).button)
}
fn icon_tooltip(&self, _cx: &WindowContext) -> Option<&'static str> {
@@ -31,7 +31,7 @@ use smallvec::SmallVec;
use std::{mem, sync::Arc};
use theme::{ActiveTheme, ThemeSettings};
use ui::{
- prelude::*, Avatar, Button, Color, ContextMenu, Icon, IconButton, IconElement, IconSize, Label,
+ prelude::*, Avatar, Button, Color, ContextMenu, Icon, IconButton, IconName, IconSize, Label,
ListHeader, ListItem, Tooltip,
};
use util::{maybe, ResultExt, TryFutureExt};
@@ -848,7 +848,7 @@ impl CollabPanel {
.end_slot(if is_pending {
Label::new("Calling").color(Color::Muted).into_any_element()
} else if is_current_user {
- IconButton::new("leave-call", Icon::Exit)
+ IconButton::new("leave-call", IconName::Exit)
.style(ButtonStyle::Subtle)
.on_click(move |_, cx| Self::leave_call(cx))
.tooltip(|cx| Tooltip::text("Leave Call", cx))
@@ -897,7 +897,7 @@ impl CollabPanel {
h_stack()
.gap_1()
.child(render_tree_branch(is_last, false, cx))
- .child(IconButton::new(0, Icon::Folder)),
+ .child(IconButton::new(0, IconName::Folder)),
)
.child(Label::new(project_name.clone()))
.tooltip(move |cx| Tooltip::text(format!("Open {}", project_name), cx))
@@ -918,7 +918,7 @@ impl CollabPanel {
h_stack()
.gap_1()
.child(render_tree_branch(is_last, false, cx))
- .child(IconButton::new(0, Icon::Screen)),
+ .child(IconButton::new(0, IconName::Screen)),
)
.child(Label::new("Screen"))
.when_some(peer_id, |this, _| {
@@ -959,7 +959,7 @@ impl CollabPanel {
h_stack()
.gap_1()
.child(render_tree_branch(false, true, cx))
- .child(IconButton::new(0, Icon::File)),
+ .child(IconButton::new(0, IconName::File)),
)
.child(div().h_7().w_full().child(Label::new("notes")))
.tooltip(move |cx| Tooltip::text("Open Channel Notes", cx))
@@ -980,7 +980,7 @@ impl CollabPanel {
h_stack()
.gap_1()
.child(render_tree_branch(false, false, cx))
- .child(IconButton::new(0, Icon::MessageBubbles)),
+ .child(IconButton::new(0, IconName::MessageBubbles)),
)
.child(Label::new("chat"))
.tooltip(move |cx| Tooltip::text("Open Chat", cx))
@@ -1724,7 +1724,7 @@ impl CollabPanel {
.child(
Button::new("sign_in", "Sign in")
.icon_color(Color::Muted)
- .icon(Icon::Github)
+ .icon(IconName::Github)
.icon_position(IconPosition::Start)
.style(ButtonStyle::Filled)
.full_width()
@@ -1921,7 +1921,7 @@ impl CollabPanel {
let button = match section {
Section::ActiveCall => channel_link.map(|channel_link| {
let channel_link_copy = channel_link.clone();
- IconButton::new("channel-link", Icon::Copy)
+ IconButton::new("channel-link", IconName::Copy)
.icon_size(IconSize::Small)
.size(ButtonSize::None)
.visible_on_hover("section-header")
@@ -1933,13 +1933,13 @@ impl CollabPanel {
.into_any_element()
}),
Section::Contacts => Some(
- IconButton::new("add-contact", Icon::Plus)
+ IconButton::new("add-contact", IconName::Plus)
.on_click(cx.listener(|this, _, cx| this.toggle_contact_finder(cx)))
.tooltip(|cx| Tooltip::text("Search for new contact", cx))
.into_any_element(),
),
Section::Channels => Some(
- IconButton::new("add-channel", Icon::Plus)
+ IconButton::new("add-channel", IconName::Plus)
.on_click(cx.listener(|this, _, cx| this.new_root_channel(cx)))
.tooltip(|cx| Tooltip::text("Create a channel", cx))
.into_any_element(),
@@ -2010,7 +2010,7 @@ impl CollabPanel {
})
.when(!calling, |el| {
el.child(
- IconButton::new("remove_contact", Icon::Close)
+ IconButton::new("remove_contact", IconName::Close)
.icon_color(Color::Muted)
.visible_on_hover("")
.tooltip(|cx| Tooltip::text("Remove Contact", cx))
@@ -2071,13 +2071,13 @@ impl CollabPanel {
let controls = if is_incoming {
vec![
- IconButton::new("decline-contact", Icon::Close)
+ IconButton::new("decline-contact", IconName::Close)
.on_click(cx.listener(move |this, _, cx| {
this.respond_to_contact_request(user_id, false, cx);
}))
.icon_color(color)
.tooltip(|cx| Tooltip::text("Decline invite", cx)),
- IconButton::new("accept-contact", Icon::Check)
+ IconButton::new("accept-contact", IconName::Check)
.on_click(cx.listener(move |this, _, cx| {
this.respond_to_contact_request(user_id, true, cx);
}))
@@ -2086,7 +2086,7 @@ impl CollabPanel {
]
} else {
let github_login = github_login.clone();
- vec![IconButton::new("remove_contact", Icon::Close)
+ vec![IconButton::new("remove_contact", IconName::Close)
.on_click(cx.listener(move |this, _, cx| {
this.remove_contact(user_id, &github_login, cx);
}))
@@ -2126,13 +2126,13 @@ impl CollabPanel {
};
let controls = [
- IconButton::new("reject-invite", Icon::Close)
+ IconButton::new("reject-invite", IconName::Close)
.on_click(cx.listener(move |this, _, cx| {
this.respond_to_channel_invite(channel_id, false, cx);
}))
.icon_color(color)
.tooltip(|cx| Tooltip::text("Decline invite", cx)),
- IconButton::new("accept-invite", Icon::Check)
+ IconButton::new("accept-invite", IconName::Check)
.on_click(cx.listener(move |this, _, cx| {
this.respond_to_channel_invite(channel_id, true, cx);
}))
@@ -2150,7 +2150,7 @@ impl CollabPanel {
.child(h_stack().children(controls)),
)
.start_slot(
- IconElement::new(Icon::Hash)
+ Icon::new(IconName::Hash)
.size(IconSize::Small)
.color(Color::Muted),
)
@@ -2162,7 +2162,7 @@ impl CollabPanel {
cx: &mut ViewContext<Self>,
) -> ListItem {
ListItem::new("contact-placeholder")
- .child(IconElement::new(Icon::Plus))
+ .child(Icon::new(IconName::Plus))
.child(Label::new("Add a Contact"))
.selected(is_selected)
.on_click(cx.listener(|this, _, cx| this.toggle_contact_finder(cx)))
@@ -2246,7 +2246,7 @@ impl CollabPanel {
};
let messages_button = |cx: &mut ViewContext<Self>| {
- IconButton::new("channel_chat", Icon::MessageBubbles)
+ IconButton::new("channel_chat", IconName::MessageBubbles)
.icon_size(IconSize::Small)
.icon_color(if has_messages_notification {
Color::Default
@@ -2258,7 +2258,7 @@ impl CollabPanel {
};
let notes_button = |cx: &mut ViewContext<Self>| {
- IconButton::new("channel_notes", Icon::File)
+ IconButton::new("channel_notes", IconName::File)
.icon_size(IconSize::Small)
.icon_color(if has_notes_notification {
Color::Default
@@ -2315,9 +2315,13 @@ impl CollabPanel {
},
))
.start_slot(
- IconElement::new(if is_public { Icon::Public } else { Icon::Hash })
- .size(IconSize::Small)
- .color(Color::Muted),
+ Icon::new(if is_public {
+ IconName::Public
+ } else {
+ IconName::Hash
+ })
+ .size(IconSize::Small)
+ .color(Color::Muted),
)
.child(
h_stack()
@@ -2386,7 +2390,7 @@ impl CollabPanel {
.indent_level(depth + 1)
.indent_step_size(px(20.))
.start_slot(
- IconElement::new(Icon::Hash)
+ Icon::new(IconName::Hash)
.size(IconSize::Small)
.color(Color::Muted),
);
@@ -2500,10 +2504,10 @@ impl Panel for CollabPanel {
cx.notify();
}
- fn icon(&self, cx: &gpui::WindowContext) -> Option<ui::Icon> {
+ fn icon(&self, cx: &gpui::WindowContext) -> Option<ui::IconName> {
CollaborationPanelSettings::get_global(cx)
.button
- .then(|| ui::Icon::Collab)
+ .then(|| ui::IconName::Collab)
}
fn icon_tooltip(&self, _cx: &WindowContext) -> Option<&'static str> {
@@ -2646,11 +2650,11 @@ impl Render for DraggedChannelView {
.p_1()
.gap_1()
.child(
- IconElement::new(
+ Icon::new(
if self.channel.visibility == proto::ChannelVisibility::Public {
- Icon::Public
+ IconName::Public
} else {
- Icon::Hash
+ IconName::Hash
},
)
.size(IconSize::Small)
@@ -168,7 +168,7 @@ impl Render for ChannelModal {
.w_px()
.flex_1()
.gap_1()
- .child(IconElement::new(Icon::Hash).size(IconSize::Medium))
+ .child(Icon::new(IconName::Hash).size(IconSize::Medium))
.child(Label::new(channel_name)),
)
.child(
@@ -406,7 +406,7 @@ impl PickerDelegate for ChannelModalDelegate {
Some(ChannelRole::Guest) => Some(Label::new("Guest")),
_ => None,
})
- .child(IconButton::new("ellipsis", Icon::Ellipsis))
+ .child(IconButton::new("ellipsis", IconName::Ellipsis))
.children(
if let (Some((menu, _)), true) = (&self.context_menu, selected) {
Some(
@@ -155,9 +155,7 @@ impl PickerDelegate for ContactFinderDelegate {
.selected(selected)
.start_slot(Avatar::new(user.avatar_uri.clone()))
.child(Label::new(user.github_login.clone()))
- .end_slot::<IconElement>(
- icon_path.map(|icon_path| IconElement::from_path(icon_path)),
- ),
+ .end_slot::<Icon>(icon_path.map(|icon_path| Icon::from_path(icon_path))),
)
}
}
@@ -15,7 +15,7 @@ use std::sync::Arc;
use theme::{ActiveTheme, PlayerColors};
use ui::{
h_stack, popover_menu, prelude::*, Avatar, Button, ButtonLike, ButtonStyle, ContextMenu, Icon,
- IconButton, IconElement, TintColor, Tooltip,
+ IconButton, IconName, TintColor, Tooltip,
};
use util::ResultExt;
use vcs_menu::{build_branch_list, BranchList, OpenRecent as ToggleVcsMenu};
@@ -213,7 +213,7 @@ impl Render for CollabTitlebarItem {
.child(
div()
.child(
- IconButton::new("leave-call", ui::Icon::Exit)
+ IconButton::new("leave-call", ui::IconName::Exit)
.style(ButtonStyle::Subtle)
.tooltip(|cx| Tooltip::text("Leave call", cx))
.icon_size(IconSize::Small)
@@ -230,9 +230,9 @@ impl Render for CollabTitlebarItem {
IconButton::new(
"mute-microphone",
if is_muted {
- ui::Icon::MicMute
+ ui::IconName::MicMute
} else {
- ui::Icon::Mic
+ ui::IconName::Mic
},
)
.tooltip(move |cx| {
@@ -256,9 +256,9 @@ impl Render for CollabTitlebarItem {
IconButton::new(
"mute-sound",
if is_deafened {
- ui::Icon::AudioOff
+ ui::IconName::AudioOff
} else {
- ui::Icon::AudioOn
+ ui::IconName::AudioOn
},
)
.style(ButtonStyle::Subtle)
@@ -281,7 +281,7 @@ impl Render for CollabTitlebarItem {
)
.when(!read_only, |this| {
this.child(
- IconButton::new("screen-share", ui::Icon::Screen)
+ IconButton::new("screen-share", ui::IconName::Screen)
.style(ButtonStyle::Subtle)
.icon_size(IconSize::Small)
.selected(is_screen_sharing)
@@ -573,7 +573,7 @@ impl CollabTitlebarItem {
| client::Status::ReconnectionError { .. } => Some(
div()
.id("disconnected")
- .child(IconElement::new(Icon::Disconnected).size(IconSize::Small))
+ .child(Icon::new(IconName::Disconnected).size(IconSize::Small))
.tooltip(|cx| Tooltip::text("Disconnected", cx))
.into_any_element(),
),
@@ -643,7 +643,7 @@ impl CollabTitlebarItem {
h_stack()
.gap_0p5()
.child(Avatar::new(user.avatar_uri.clone()))
- .child(IconElement::new(Icon::ChevronDown).color(Color::Muted)),
+ .child(Icon::new(IconName::ChevronDown).color(Color::Muted)),
)
.style(ButtonStyle::Subtle)
.tooltip(move |cx| Tooltip::text("Toggle User Menu", cx)),
@@ -665,7 +665,7 @@ impl CollabTitlebarItem {
.child(
h_stack()
.gap_0p5()
- .child(IconElement::new(Icon::ChevronDown).color(Color::Muted)),
+ .child(Icon::new(IconName::ChevronDown).color(Color::Muted)),
)
.style(ButtonStyle::Subtle)
.tooltip(move |cx| Tooltip::text("Toggle User Menu", cx)),
@@ -19,7 +19,7 @@ use serde::{Deserialize, Serialize};
use settings::{Settings, SettingsStore};
use std::{sync::Arc, time::Duration};
use time::{OffsetDateTime, UtcOffset};
-use ui::{h_stack, prelude::*, v_stack, Avatar, Button, Icon, IconButton, IconElement, Label};
+use ui::{h_stack, prelude::*, v_stack, Avatar, Button, Icon, IconButton, IconName, Label};
use util::{ResultExt, TryFutureExt};
use workspace::{
dock::{DockPosition, Panel, PanelEvent},
@@ -553,7 +553,7 @@ impl Render for NotificationPanel {
.border_b_1()
.border_color(cx.theme().colors().border)
.child(Label::new("Notifications"))
- .child(IconElement::new(Icon::Envelope)),
+ .child(Icon::new(IconName::Envelope)),
)
.map(|this| {
if self.client.user_id().is_none() {
@@ -564,7 +564,7 @@ impl Render for NotificationPanel {
.child(
Button::new("sign_in_prompt_button", "Sign in")
.icon_color(Color::Muted)
- .icon(Icon::Github)
+ .icon(IconName::Github)
.icon_position(IconPosition::Start)
.style(ButtonStyle::Filled)
.full_width()
@@ -655,10 +655,10 @@ impl Panel for NotificationPanel {
}
}
- fn icon(&self, cx: &gpui::WindowContext) -> Option<Icon> {
+ fn icon(&self, cx: &gpui::WindowContext) -> Option<IconName> {
(NotificationPanelSettings::get_global(cx).button
&& self.notification_store.read(cx).notification_count() > 0)
- .then(|| Icon::Bell)
+ .then(|| IconName::Bell)
}
fn icon_tooltip(&self, _cx: &WindowContext) -> Option<&'static str> {
@@ -716,7 +716,7 @@ impl Render for NotificationToast {
.children(user.map(|user| Avatar::new(user.avatar_uri.clone())))
.child(Label::new(self.text.clone()))
.child(
- IconButton::new("close", Icon::Close)
+ IconButton::new("close", IconName::Close)
.on_click(cx.listener(|_, _, cx| cx.emit(DismissEvent))),
)
.on_click(cx.listener(|this, _, cx| {
@@ -17,7 +17,9 @@ use util::{paths, ResultExt};
use workspace::{
create_and_open_local_file,
item::ItemHandle,
- ui::{popover_menu, ButtonCommon, Clickable, ContextMenu, Icon, IconButton, IconSize, Tooltip},
+ ui::{
+ popover_menu, ButtonCommon, Clickable, ContextMenu, IconButton, IconName, IconSize, Tooltip,
+ },
StatusItemView, Toast, Workspace,
};
use zed_actions::OpenBrowser;
@@ -51,15 +53,15 @@ impl Render for CopilotButton {
.unwrap_or_else(|| all_language_settings.copilot_enabled(None, None));
let icon = match status {
- Status::Error(_) => Icon::CopilotError,
+ Status::Error(_) => IconName::CopilotError,
Status::Authorized => {
if enabled {
- Icon::Copilot
+ IconName::Copilot
} else {
- Icon::CopilotDisabled
+ IconName::CopilotDisabled
}
}
- _ => Icon::CopilotInit,
+ _ => IconName::CopilotInit,
};
if let Status::Error(e) = status {
@@ -4,7 +4,7 @@ use gpui::{
FocusableView, InteractiveElement, IntoElement, Model, ParentElement, Render, Styled,
Subscription, ViewContext,
};
-use ui::{prelude::*, Button, Icon, Label};
+use ui::{prelude::*, Button, IconName, Label};
use workspace::ModalView;
const COPILOT_SIGN_UP_URL: &'static str = "https://github.com/features/copilot";
@@ -175,7 +175,7 @@ impl Render for CopilotCodeVerification {
.w_32()
.h_16()
.flex_none()
- .path(Icon::ZedXCopilot.path())
+ .path(IconName::ZedXCopilot.path())
.text_color(cx.theme().colors().icon),
)
.child(prompt)
@@ -36,7 +36,7 @@ use std::{
};
use theme::ActiveTheme;
pub use toolbar_controls::ToolbarControls;
-use ui::{h_stack, prelude::*, Icon, IconElement, Label};
+use ui::{h_stack, prelude::*, Icon, IconName, Label};
use util::TryFutureExt;
use workspace::{
item::{BreadcrumbText, Item, ItemEvent, ItemHandle},
@@ -660,7 +660,7 @@ impl Item for ProjectDiagnosticsEditor {
then.child(
h_stack()
.gap_1()
- .child(IconElement::new(Icon::XCircle).color(Color::Error))
+ .child(Icon::new(IconName::XCircle).color(Color::Error))
.child(Label::new(self.summary.error_count.to_string()).color(
if selected {
Color::Default
@@ -674,9 +674,7 @@ impl Item for ProjectDiagnosticsEditor {
then.child(
h_stack()
.gap_1()
- .child(
- IconElement::new(Icon::ExclamationTriangle).color(Color::Warning),
- )
+ .child(Icon::new(IconName::ExclamationTriangle).color(Color::Warning))
.child(Label::new(self.summary.warning_count.to_string()).color(
if selected {
Color::Default
@@ -816,10 +814,10 @@ fn diagnostic_header_renderer(diagnostic: Diagnostic) -> RenderBlock {
.flex_none()
.map(|icon| {
if diagnostic.severity == DiagnosticSeverity::ERROR {
- icon.path(Icon::XCircle.path())
+ icon.path(IconName::XCircle.path())
.text_color(Color::Error.color(cx))
} else {
- icon.path(Icon::ExclamationTriangle.path())
+ icon.path(IconName::ExclamationTriangle.path())
.text_color(Color::Warning.color(cx))
}
}),
@@ -6,7 +6,7 @@ use gpui::{
};
use language::Diagnostic;
use lsp::LanguageServerId;
-use ui::{h_stack, prelude::*, Button, ButtonLike, Color, Icon, IconElement, Label, Tooltip};
+use ui::{h_stack, prelude::*, Button, ButtonLike, Color, Icon, IconName, Label, Tooltip};
use workspace::{item::ItemHandle, StatusItemView, ToolbarItemEvent, Workspace};
use crate::{Deploy, ProjectDiagnosticsEditor};
@@ -25,7 +25,7 @@ impl Render for DiagnosticIndicator {
let diagnostic_indicator = match (self.summary.error_count, self.summary.warning_count) {
(0, 0) => h_stack().map(|this| {
this.child(
- IconElement::new(Icon::Check)
+ Icon::new(IconName::Check)
.size(IconSize::Small)
.color(Color::Default),
)
@@ -33,7 +33,7 @@ impl Render for DiagnosticIndicator {
(0, warning_count) => h_stack()
.gap_1()
.child(
- IconElement::new(Icon::ExclamationTriangle)
+ Icon::new(IconName::ExclamationTriangle)
.size(IconSize::Small)
.color(Color::Warning),
)
@@ -41,7 +41,7 @@ impl Render for DiagnosticIndicator {
(error_count, 0) => h_stack()
.gap_1()
.child(
- IconElement::new(Icon::XCircle)
+ Icon::new(IconName::XCircle)
.size(IconSize::Small)
.color(Color::Error),
)
@@ -49,13 +49,13 @@ impl Render for DiagnosticIndicator {
(error_count, warning_count) => h_stack()
.gap_1()
.child(
- IconElement::new(Icon::XCircle)
+ Icon::new(IconName::XCircle)
.size(IconSize::Small)
.color(Color::Error),
)
.child(Label::new(error_count.to_string()).size(LabelSize::Small))
.child(
- IconElement::new(Icon::ExclamationTriangle)
+ Icon::new(IconName::ExclamationTriangle)
.size(IconSize::Small)
.color(Color::Warning),
)
@@ -66,7 +66,7 @@ impl Render for DiagnosticIndicator {
Some(
h_stack()
.gap_2()
- .child(IconElement::new(Icon::ArrowCircle).size(IconSize::Small))
+ .child(Icon::new(IconName::ArrowCircle).size(IconSize::Small))
.child(
Label::new("Checkingβ¦")
.size(LabelSize::Small)
@@ -1,7 +1,7 @@
use crate::ProjectDiagnosticsEditor;
use gpui::{div, EventEmitter, ParentElement, Render, ViewContext, WeakView};
use ui::prelude::*;
-use ui::{Icon, IconButton, Tooltip};
+use ui::{IconButton, IconName, Tooltip};
use workspace::{item::ItemHandle, ToolbarItemEvent, ToolbarItemLocation, ToolbarItemView};
pub struct ToolbarControls {
@@ -24,7 +24,7 @@ impl Render for ToolbarControls {
};
div().child(
- IconButton::new("toggle-warnings", Icon::ExclamationTriangle)
+ IconButton::new("toggle-warnings", IconName::ExclamationTriangle)
.tooltip(move |cx| Tooltip::text(tooltip, cx))
.on_click(cx.listener(|this, _, cx| {
if let Some(editor) = this.editor.as_ref().and_then(|editor| editor.upgrade()) {
@@ -99,8 +99,8 @@ use sum_tree::TreeMap;
use text::{OffsetUtf16, Rope};
use theme::{ActiveTheme, PlayerColor, StatusColors, SyntaxTheme, ThemeColors, ThemeSettings};
use ui::{
- h_stack, prelude::*, ButtonSize, ButtonStyle, Icon, IconButton, IconSize, ListItem, Popover,
- Tooltip,
+ h_stack, prelude::*, ButtonSize, ButtonStyle, IconButton, IconName, IconSize, ListItem,
+ Popover, Tooltip,
};
use util::{post_inc, RangeExt, ResultExt, TryFutureExt};
use workspace::{searchable::SearchEvent, ItemNavHistory, Pane, SplitDirection, ViewId, Workspace};
@@ -4223,7 +4223,7 @@ impl Editor {
) -> Option<IconButton> {
if self.available_code_actions.is_some() {
Some(
- IconButton::new("code_actions_indicator", ui::Icon::Bolt)
+ IconButton::new("code_actions_indicator", ui::IconName::Bolt)
.icon_size(IconSize::Small)
.icon_color(Color::Muted)
.selected(is_active)
@@ -4257,7 +4257,7 @@ impl Editor {
fold_data
.map(|(fold_status, buffer_row, active)| {
(active || gutter_hovered || fold_status == FoldStatus::Folded).then(|| {
- IconButton::new(ix as usize, ui::Icon::ChevronDown)
+ IconButton::new(ix as usize, ui::IconName::ChevronDown)
.on_click(cx.listener(move |editor, _e, cx| match fold_status {
FoldStatus::Folded => {
editor.unfold_at(&UnfoldAt { buffer_row }, cx);
@@ -4269,7 +4269,7 @@ impl Editor {
.icon_color(ui::Color::Muted)
.icon_size(ui::IconSize::Small)
.selected(fold_status == FoldStatus::Folded)
- .selected_icon(ui::Icon::ChevronRight)
+ .selected_icon(ui::IconName::ChevronRight)
.size(ui::ButtonSize::None)
})
})
@@ -9739,7 +9739,7 @@ pub fn diagnostic_block_renderer(diagnostic: Diagnostic, _is_valid: bool) -> Ren
),
)
.child(
- IconButton::new(("copy-block", cx.block_id), Icon::Copy)
+ IconButton::new(("copy-block", cx.block_id), IconName::Copy)
.icon_color(Color::Muted)
.size(ButtonSize::Compact)
.style(ButtonStyle::Transparent)
@@ -1,5 +1,5 @@
use gpui::{Render, ViewContext, WeakView};
-use ui::{prelude::*, ButtonCommon, Icon, IconButton, Tooltip};
+use ui::{prelude::*, ButtonCommon, IconButton, IconName, Tooltip};
use workspace::{item::ItemHandle, StatusItemView, Workspace};
use crate::{feedback_modal::FeedbackModal, GiveFeedback};
@@ -27,7 +27,7 @@ impl Render for DeployFeedbackButton {
})
})
.is_some();
- IconButton::new("give-feedback", Icon::Envelope)
+ IconButton::new("give-feedback", IconName::Envelope)
.style(ui::ButtonStyle::Subtle)
.icon_size(IconSize::Small)
.selected(is_open)
@@ -488,7 +488,7 @@ impl Render for FeedbackModal {
.child(
Button::new("community_repository", "Community Repository")
.style(ButtonStyle::Transparent)
- .icon(Icon::ExternalLink)
+ .icon(IconName::ExternalLink)
.icon_position(IconPosition::End)
.icon_size(IconSize::Small)
.on_click(open_community_repo),
@@ -30,7 +30,7 @@ use std::{
sync::Arc,
};
use theme::ThemeSettings;
-use ui::{prelude::*, v_stack, ContextMenu, IconElement, KeyBinding, Label, ListItem};
+use ui::{prelude::*, v_stack, ContextMenu, Icon, KeyBinding, Label, ListItem};
use unicase::UniCase;
use util::{maybe, ResultExt, TryFutureExt};
use workspace::{
@@ -1403,7 +1403,7 @@ impl ProjectPanel {
.indent_step_size(px(settings.indent_size))
.selected(is_selected)
.child(if let Some(icon) = &icon {
- div().child(IconElement::from_path(icon.to_string()).color(Color::Muted))
+ div().child(Icon::from_path(icon.to_string()).color(Color::Muted))
} else {
div().size(IconSize::default().rems()).invisible()
})
@@ -1590,7 +1590,7 @@ impl Render for DraggedProjectEntryView {
.indent_level(self.details.depth)
.indent_step_size(px(settings.indent_size))
.child(if let Some(icon) = &self.details.icon {
- div().child(IconElement::from_path(icon.to_string()))
+ div().child(Icon::from_path(icon.to_string()))
} else {
div()
})
@@ -1640,8 +1640,8 @@ impl Panel for ProjectPanel {
cx.notify();
}
- fn icon(&self, _: &WindowContext) -> Option<ui::Icon> {
- Some(ui::Icon::FileTree)
+ fn icon(&self, _: &WindowContext) -> Option<ui::IconName> {
+ Some(ui::IconName::FileTree)
}
fn icon_tooltip(&self, _cx: &WindowContext) -> Option<&'static str> {
@@ -6,7 +6,7 @@ use gpui::{
Subscription, View, ViewContext, WeakView,
};
use search::{buffer_search, BufferSearchBar};
-use ui::{prelude::*, ButtonSize, ButtonStyle, Icon, IconButton, IconSize, Tooltip};
+use ui::{prelude::*, ButtonSize, ButtonStyle, IconButton, IconName, IconSize, Tooltip};
use workspace::{
item::ItemHandle, ToolbarItemEvent, ToolbarItemLocation, ToolbarItemView, Workspace,
};
@@ -43,7 +43,7 @@ impl Render for QuickActionBar {
let inlay_hints_button = Some(QuickActionBarButton::new(
"toggle inlay hints",
- Icon::InlayHint,
+ IconName::InlayHint,
editor.read(cx).inlay_hints_enabled(),
Box::new(editor::ToggleInlayHints),
"Toggle Inlay Hints",
@@ -60,7 +60,7 @@ impl Render for QuickActionBar {
let search_button = Some(QuickActionBarButton::new(
"toggle buffer search",
- Icon::MagnifyingGlass,
+ IconName::MagnifyingGlass,
!self.buffer_search_bar.read(cx).is_dismissed(),
Box::new(buffer_search::Deploy { focus: false }),
"Buffer Search",
@@ -77,7 +77,7 @@ impl Render for QuickActionBar {
let assistant_button = QuickActionBarButton::new(
"toggle inline assistant",
- Icon::MagicWand,
+ IconName::MagicWand,
false,
Box::new(InlineAssist),
"Inline Assist",
@@ -107,7 +107,7 @@ impl EventEmitter<ToolbarItemEvent> for QuickActionBar {}
#[derive(IntoElement)]
struct QuickActionBarButton {
id: ElementId,
- icon: Icon,
+ icon: IconName,
toggled: bool,
action: Box<dyn Action>,
tooltip: SharedString,
@@ -117,7 +117,7 @@ struct QuickActionBarButton {
impl QuickActionBarButton {
fn new(
id: impl Into<ElementId>,
- icon: Icon,
+ icon: IconName,
toggled: bool,
action: Box<dyn Action>,
tooltip: impl Into<SharedString>,
@@ -21,7 +21,7 @@ use settings::Settings;
use std::{any::Any, sync::Arc};
use theme::ThemeSettings;
-use ui::{h_stack, prelude::*, Icon, IconButton, IconElement, ToggleButton, Tooltip};
+use ui::{h_stack, prelude::*, Icon, IconButton, IconName, ToggleButton, Tooltip};
use util::ResultExt;
use workspace::{
item::ItemHandle,
@@ -225,7 +225,7 @@ impl Render for BufferSearchBar {
.border_color(editor_border)
.min_w(rems(384. / 16.))
.rounded_lg()
- .child(IconElement::new(Icon::MagnifyingGlass))
+ .child(Icon::new(IconName::MagnifyingGlass))
.child(self.render_text_input(&self.query_editor, cx))
.children(supported_options.case.then(|| {
self.render_search_option_button(
@@ -287,7 +287,7 @@ impl Render for BufferSearchBar {
this.child(
IconButton::new(
"buffer-search-bar-toggle-replace-button",
- Icon::Replace,
+ IconName::Replace,
)
.style(ButtonStyle::Subtle)
.when(self.replace_enabled, |button| {
@@ -323,7 +323,7 @@ impl Render for BufferSearchBar {
)
.when(should_show_replace_input, |this| {
this.child(
- IconButton::new("search-replace-next", ui::Icon::ReplaceNext)
+ IconButton::new("search-replace-next", ui::IconName::ReplaceNext)
.tooltip(move |cx| {
Tooltip::for_action("Replace next", &ReplaceNext, cx)
})
@@ -332,7 +332,7 @@ impl Render for BufferSearchBar {
})),
)
.child(
- IconButton::new("search-replace-all", ui::Icon::ReplaceAll)
+ IconButton::new("search-replace-all", ui::IconName::ReplaceAll)
.tooltip(move |cx| {
Tooltip::for_action("Replace all", &ReplaceAll, cx)
})
@@ -350,7 +350,7 @@ impl Render for BufferSearchBar {
.gap_0p5()
.flex_none()
.child(
- IconButton::new("select-all", ui::Icon::SelectAll)
+ IconButton::new("select-all", ui::IconName::SelectAll)
.on_click(|_, cx| cx.dispatch_action(SelectAllMatches.boxed_clone()))
.tooltip(|cx| {
Tooltip::for_action("Select all matches", &SelectAllMatches, cx)
@@ -358,13 +358,13 @@ impl Render for BufferSearchBar {
)
.children(match_count)
.child(render_nav_button(
- ui::Icon::ChevronLeft,
+ ui::IconName::ChevronLeft,
self.active_match_index.is_some(),
"Select previous match",
&SelectPrevMatch,
))
.child(render_nav_button(
- ui::Icon::ChevronRight,
+ ui::IconName::ChevronRight,
self.active_match_index.is_some(),
"Select next match",
&SelectNextMatch,
@@ -38,7 +38,7 @@ use std::{
use theme::ThemeSettings;
use ui::{
- h_stack, prelude::*, v_stack, Icon, IconButton, IconElement, Label, LabelCommon, LabelSize,
+ h_stack, prelude::*, v_stack, Icon, IconButton, IconName, Label, LabelCommon, LabelSize,
Selectable, ToggleButton, Tooltip,
};
use util::{paths::PathMatcher, ResultExt as _};
@@ -432,7 +432,7 @@ impl Item for ProjectSearchView {
.unwrap_or_else(|| "Project search".into());
h_stack()
.gap_2()
- .child(IconElement::new(Icon::MagnifyingGlass).color(if selected {
+ .child(Icon::new(IconName::MagnifyingGlass).color(if selected {
Color::Default
} else {
Color::Muted
@@ -1616,12 +1616,12 @@ impl Render for ProjectSearchBar {
.on_action(cx.listener(|this, action, cx| this.confirm(action, cx)))
.on_action(cx.listener(|this, action, cx| this.previous_history_query(action, cx)))
.on_action(cx.listener(|this, action, cx| this.next_history_query(action, cx)))
- .child(IconElement::new(Icon::MagnifyingGlass))
+ .child(Icon::new(IconName::MagnifyingGlass))
.child(self.render_text_input(&search.query_editor, cx))
.child(
h_stack()
.child(
- IconButton::new("project-search-filter-button", Icon::Filter)
+ IconButton::new("project-search-filter-button", IconName::Filter)
.tooltip(|cx| {
Tooltip::for_action("Toggle filters", &ToggleFilters, cx)
})
@@ -1639,7 +1639,7 @@ impl Render for ProjectSearchBar {
this.child(
IconButton::new(
"project-search-case-sensitive",
- Icon::CaseSensitive,
+ IconName::CaseSensitive,
)
.tooltip(|cx| {
Tooltip::for_action(
@@ -1659,7 +1659,7 @@ impl Render for ProjectSearchBar {
)),
)
.child(
- IconButton::new("project-search-whole-word", Icon::WholeWord)
+ IconButton::new("project-search-whole-word", IconName::WholeWord)
.tooltip(|cx| {
Tooltip::for_action(
"Toggle whole word",
@@ -1738,7 +1738,7 @@ impl Render for ProjectSearchBar {
}),
)
.child(
- IconButton::new("project-search-toggle-replace", Icon::Replace)
+ IconButton::new("project-search-toggle-replace", IconName::Replace)
.on_click(cx.listener(|this, _, cx| {
this.toggle_replace(&ToggleReplace, cx);
}))
@@ -1755,7 +1755,7 @@ impl Render for ProjectSearchBar {
.border_1()
.border_color(cx.theme().colors().border)
.rounded_lg()
- .child(IconElement::new(Icon::Replace).size(ui::IconSize::Small))
+ .child(Icon::new(IconName::Replace).size(ui::IconSize::Small))
.child(self.render_text_input(&search.replacement_editor, cx))
} else {
// Fill out the space if we don't have a replacement editor.
@@ -1764,7 +1764,7 @@ impl Render for ProjectSearchBar {
let actions_column = h_stack()
.when(search.replace_enabled, |this| {
this.child(
- IconButton::new("project-search-replace-next", Icon::ReplaceNext)
+ IconButton::new("project-search-replace-next", IconName::ReplaceNext)
.on_click(cx.listener(|this, _, cx| {
if let Some(search) = this.active_project_search.as_ref() {
search.update(cx, |this, cx| {
@@ -1775,7 +1775,7 @@ impl Render for ProjectSearchBar {
.tooltip(|cx| Tooltip::for_action("Replace next match", &ReplaceNext, cx)),
)
.child(
- IconButton::new("project-search-replace-all", Icon::ReplaceAll)
+ IconButton::new("project-search-replace-all", IconName::ReplaceAll)
.on_click(cx.listener(|this, _, cx| {
if let Some(search) = this.active_project_search.as_ref() {
search.update(cx, |this, cx| {
@@ -1796,7 +1796,7 @@ impl Render for ProjectSearchBar {
this
})
.child(
- IconButton::new("project-search-prev-match", Icon::ChevronLeft)
+ IconButton::new("project-search-prev-match", IconName::ChevronLeft)
.disabled(search.active_match_index.is_none())
.on_click(cx.listener(|this, _, cx| {
if let Some(search) = this.active_project_search.as_ref() {
@@ -1810,7 +1810,7 @@ impl Render for ProjectSearchBar {
}),
)
.child(
- IconButton::new("project-search-next-match", Icon::ChevronRight)
+ IconButton::new("project-search-next-match", IconName::ChevronRight)
.disabled(search.active_match_index.is_none())
.on_click(cx.listener(|this, _, cx| {
if let Some(search) = this.active_project_search.as_ref() {
@@ -60,11 +60,11 @@ impl SearchOptions {
}
}
- pub fn icon(&self) -> ui::Icon {
+ pub fn icon(&self) -> ui::IconName {
match *self {
- SearchOptions::WHOLE_WORD => ui::Icon::WholeWord,
- SearchOptions::CASE_SENSITIVE => ui::Icon::CaseSensitive,
- SearchOptions::INCLUDE_IGNORED => ui::Icon::FileGit,
+ SearchOptions::WHOLE_WORD => ui::IconName::WholeWord,
+ SearchOptions::CASE_SENSITIVE => ui::IconName::CaseSensitive,
+ SearchOptions::INCLUDE_IGNORED => ui::IconName::FileGit,
_ => panic!("{:?} is not a named SearchOption", self),
}
}
@@ -3,7 +3,7 @@ use ui::IconButton;
use ui::{prelude::*, Tooltip};
pub(super) fn render_nav_button(
- icon: ui::Icon,
+ icon: ui::IconName,
active: bool,
tooltip: &'static str,
action: &'static dyn Action,
@@ -19,7 +19,7 @@ use workspace::{
dock::{DockPosition, Panel, PanelEvent},
item::Item,
pane,
- ui::Icon,
+ ui::IconName,
DraggedTab, Pane, Workspace,
};
@@ -71,7 +71,7 @@ impl TerminalPanel {
h_stack()
.gap_2()
.child(
- IconButton::new("plus", Icon::Plus)
+ IconButton::new("plus", IconName::Plus)
.icon_size(IconSize::Small)
.on_click(move |_, cx| {
terminal_panel
@@ -82,10 +82,10 @@ impl TerminalPanel {
)
.child({
let zoomed = pane.is_zoomed();
- IconButton::new("toggle_zoom", Icon::Maximize)
+ IconButton::new("toggle_zoom", IconName::Maximize)
.icon_size(IconSize::Small)
.selected(zoomed)
- .selected_icon(Icon::Minimize)
+ .selected_icon(IconName::Minimize)
.on_click(cx.listener(|pane, _, cx| {
pane.toggle_zoom(&workspace::ToggleZoom, cx);
}))
@@ -477,8 +477,8 @@ impl Panel for TerminalPanel {
"TerminalPanel"
}
- fn icon(&self, _cx: &WindowContext) -> Option<Icon> {
- Some(Icon::Terminal)
+ fn icon(&self, _cx: &WindowContext) -> Option<IconName> {
+ Some(IconName::Terminal)
}
fn icon_tooltip(&self, _cx: &WindowContext) -> Option<&'static str> {
@@ -20,7 +20,7 @@ use terminal::{
Clear, Copy, Event, MaybeNavigationTarget, Paste, ShowCharacterPalette, Terminal,
};
use terminal_element::TerminalElement;
-use ui::{h_stack, prelude::*, ContextMenu, Icon, IconElement, Label};
+use ui::{h_stack, prelude::*, ContextMenu, Icon, IconName, Label};
use util::{paths::PathLikeWithPosition, ResultExt};
use workspace::{
item::{BreadcrumbText, Item, ItemEvent},
@@ -690,7 +690,7 @@ impl Item for TerminalView {
let title = self.terminal().read(cx).title(true);
h_stack()
.gap_2()
- .child(IconElement::new(Icon::Terminal))
+ .child(Icon::new(IconName::Terminal))
.child(Label::new(title).color(if selected {
Color::Default
} else {
@@ -2,7 +2,7 @@ use gpui::{AnyView, DefiniteLength};
use crate::{prelude::*, IconPosition, KeyBinding};
use crate::{
- ButtonCommon, ButtonLike, ButtonSize, ButtonStyle, Icon, IconSize, Label, LineHeightStyle,
+ ButtonCommon, ButtonLike, ButtonSize, ButtonStyle, IconName, IconSize, Label, LineHeightStyle,
};
use super::button_icon::ButtonIcon;
@@ -14,11 +14,11 @@ pub struct Button {
label_color: Option<Color>,
label_size: Option<LabelSize>,
selected_label: Option<SharedString>,
- icon: Option<Icon>,
+ icon: Option<IconName>,
icon_position: Option<IconPosition>,
icon_size: Option<IconSize>,
icon_color: Option<Color>,
- selected_icon: Option<Icon>,
+ selected_icon: Option<IconName>,
key_binding: Option<KeyBinding>,
}
@@ -54,7 +54,7 @@ impl Button {
self
}
- pub fn icon(mut self, icon: impl Into<Option<Icon>>) -> Self {
+ pub fn icon(mut self, icon: impl Into<Option<IconName>>) -> Self {
self.icon = icon.into();
self
}
@@ -74,7 +74,7 @@ impl Button {
self
}
- pub fn selected_icon(mut self, icon: impl Into<Option<Icon>>) -> Self {
+ pub fn selected_icon(mut self, icon: impl Into<Option<IconName>>) -> Self {
self.selected_icon = icon.into();
self
}
@@ -1,4 +1,4 @@
-use crate::{prelude::*, Icon, IconElement, IconSize};
+use crate::{prelude::*, Icon, IconName, IconSize};
/// An icon that appears within a button.
///
@@ -6,17 +6,17 @@ use crate::{prelude::*, Icon, IconElement, IconSize};
/// or as a standalone icon, like in [`IconButton`](crate::IconButton).
#[derive(IntoElement)]
pub(super) struct ButtonIcon {
- icon: Icon,
+ icon: IconName,
size: IconSize,
color: Color,
disabled: bool,
selected: bool,
- selected_icon: Option<Icon>,
+ selected_icon: Option<IconName>,
selected_style: Option<ButtonStyle>,
}
impl ButtonIcon {
- pub fn new(icon: Icon) -> Self {
+ pub fn new(icon: IconName) -> Self {
Self {
icon,
size: IconSize::default(),
@@ -44,7 +44,7 @@ impl ButtonIcon {
self
}
- pub fn selected_icon(mut self, icon: impl Into<Option<Icon>>) -> Self {
+ pub fn selected_icon(mut self, icon: impl Into<Option<IconName>>) -> Self {
self.selected_icon = icon.into();
self
}
@@ -88,6 +88,6 @@ impl RenderOnce for ButtonIcon {
self.color
};
- IconElement::new(icon).size(self.size).color(icon_color)
+ Icon::new(icon).size(self.size).color(icon_color)
}
}
@@ -1,21 +1,21 @@
use gpui::{AnyView, DefiniteLength};
use crate::{prelude::*, SelectableButton};
-use crate::{ButtonCommon, ButtonLike, ButtonSize, ButtonStyle, Icon, IconSize};
+use crate::{ButtonCommon, ButtonLike, ButtonSize, ButtonStyle, IconName, IconSize};
use super::button_icon::ButtonIcon;
#[derive(IntoElement)]
pub struct IconButton {
base: ButtonLike,
- icon: Icon,
+ icon: IconName,
icon_size: IconSize,
icon_color: Color,
- selected_icon: Option<Icon>,
+ selected_icon: Option<IconName>,
}
impl IconButton {
- pub fn new(id: impl Into<ElementId>, icon: Icon) -> Self {
+ pub fn new(id: impl Into<ElementId>, icon: IconName) -> Self {
Self {
base: ButtonLike::new(id),
icon,
@@ -35,7 +35,7 @@ impl IconButton {
self
}
- pub fn selected_icon(mut self, icon: impl Into<Option<Icon>>) -> Self {
+ pub fn selected_icon(mut self, icon: impl Into<Option<IconName>>) -> Self {
self.selected_icon = icon.into();
self
}
@@ -1,7 +1,7 @@
use gpui::{div, prelude::*, ElementId, IntoElement, Styled, WindowContext};
use crate::prelude::*;
-use crate::{Color, Icon, IconElement, Selection};
+use crate::{Color, Icon, IconName, Selection};
pub type CheckHandler = Box<dyn Fn(&Selection, &mut WindowContext) + 'static>;
@@ -47,7 +47,7 @@ impl RenderOnce for Checkbox {
let group_id = format!("checkbox_group_{:?}", self.id);
let icon = match self.checked {
- Selection::Selected => Some(IconElement::new(Icon::Check).size(IconSize::Small).color(
+ Selection::Selected => Some(Icon::new(IconName::Check).size(IconSize::Small).color(
if self.disabled {
Color::Disabled
} else {
@@ -55,7 +55,7 @@ impl RenderOnce for Checkbox {
},
)),
Selection::Indeterminate => Some(
- IconElement::new(Icon::Dash)
+ Icon::new(IconName::Dash)
.size(IconSize::Small)
.color(if self.disabled {
Color::Disabled
@@ -1,6 +1,6 @@
use crate::{
- h_stack, prelude::*, v_stack, Icon, IconElement, KeyBinding, Label, List, ListItem,
- ListSeparator, ListSubHeader,
+ h_stack, prelude::*, v_stack, Icon, IconName, KeyBinding, Label, List, ListItem, ListSeparator,
+ ListSubHeader,
};
use gpui::{
px, Action, AnyElement, AppContext, DismissEvent, EventEmitter, FocusHandle, FocusableView,
@@ -14,7 +14,7 @@ enum ContextMenuItem {
Header(SharedString),
Entry {
label: SharedString,
- icon: Option<Icon>,
+ icon: Option<IconName>,
handler: Rc<dyn Fn(&mut WindowContext)>,
action: Option<Box<dyn Action>>,
},
@@ -117,7 +117,7 @@ impl ContextMenu {
label: label.into(),
action: Some(action.boxed_clone()),
handler: Rc::new(move |cx| cx.dispatch_action(action.boxed_clone())),
- icon: Some(Icon::Link),
+ icon: Some(IconName::Link),
});
self
}
@@ -280,7 +280,7 @@ impl Render for ContextMenu {
h_stack()
.gap_1()
.child(Label::new(label.clone()))
- .child(IconElement::new(*icon))
+ .child(Icon::new(*icon))
.into_any_element()
} else {
Label::new(label.clone()).into_any_element()
@@ -1,6 +1,6 @@
use gpui::ClickEvent;
-use crate::{prelude::*, Color, Icon, IconButton, IconSize};
+use crate::{prelude::*, Color, IconButton, IconName, IconSize};
#[derive(IntoElement)]
pub struct Disclosure {
@@ -32,8 +32,8 @@ impl RenderOnce for Disclosure {
IconButton::new(
self.id,
match self.is_open {
- true => Icon::ChevronDown,
- false => Icon::ChevronRight,
+ true => IconName::ChevronDown,
+ false => IconName::ChevronRight,
},
)
.icon_color(Color::Muted)
@@ -22,7 +22,7 @@ impl IconSize {
}
#[derive(Debug, PartialEq, Copy, Clone, EnumIter)]
-pub enum Icon {
+pub enum IconName {
Ai,
ArrowDown,
ArrowLeft,
@@ -111,118 +111,108 @@ pub enum Icon {
ZedXCopilot,
}
-impl Icon {
+impl IconName {
pub fn path(self) -> &'static str {
match self {
- Icon::Ai => "icons/ai.svg",
- Icon::ArrowDown => "icons/arrow_down.svg",
- Icon::ArrowLeft => "icons/arrow_left.svg",
- Icon::ArrowRight => "icons/arrow_right.svg",
- Icon::ArrowUp => "icons/arrow_up.svg",
- Icon::ArrowUpRight => "icons/arrow_up_right.svg",
- Icon::ArrowCircle => "icons/arrow_circle.svg",
- Icon::AtSign => "icons/at_sign.svg",
- Icon::AudioOff => "icons/speaker_off.svg",
- Icon::AudioOn => "icons/speaker_loud.svg",
- Icon::Backspace => "icons/backspace.svg",
- Icon::Bell => "icons/bell.svg",
- Icon::BellOff => "icons/bell_off.svg",
- Icon::BellRing => "icons/bell_ring.svg",
- Icon::Bolt => "icons/bolt.svg",
- Icon::CaseSensitive => "icons/case_insensitive.svg",
- Icon::Check => "icons/check.svg",
- Icon::ChevronDown => "icons/chevron_down.svg",
- Icon::ChevronLeft => "icons/chevron_left.svg",
- Icon::ChevronRight => "icons/chevron_right.svg",
- Icon::ChevronUp => "icons/chevron_up.svg",
- Icon::Close => "icons/x.svg",
- Icon::Collab => "icons/user_group_16.svg",
- Icon::Command => "icons/command.svg",
- Icon::Control => "icons/control.svg",
- Icon::Copilot => "icons/copilot.svg",
- Icon::CopilotDisabled => "icons/copilot_disabled.svg",
- Icon::CopilotError => "icons/copilot_error.svg",
- Icon::CopilotInit => "icons/copilot_init.svg",
- Icon::Copy => "icons/copy.svg",
- Icon::Dash => "icons/dash.svg",
- Icon::Delete => "icons/delete.svg",
- Icon::Disconnected => "icons/disconnected.svg",
- Icon::Ellipsis => "icons/ellipsis.svg",
- Icon::Envelope => "icons/feedback.svg",
- Icon::Escape => "icons/escape.svg",
- Icon::ExclamationTriangle => "icons/warning.svg",
- Icon::Exit => "icons/exit.svg",
- Icon::ExternalLink => "icons/external_link.svg",
- Icon::File => "icons/file.svg",
- Icon::FileDoc => "icons/file_icons/book.svg",
- Icon::FileGeneric => "icons/file_icons/file.svg",
- Icon::FileGit => "icons/file_icons/git.svg",
- Icon::FileLock => "icons/file_icons/lock.svg",
- Icon::FileRust => "icons/file_icons/rust.svg",
- Icon::FileToml => "icons/file_icons/toml.svg",
- Icon::FileTree => "icons/project.svg",
- Icon::Filter => "icons/filter.svg",
- Icon::Folder => "icons/file_icons/folder.svg",
- Icon::FolderOpen => "icons/file_icons/folder_open.svg",
- Icon::FolderX => "icons/stop_sharing.svg",
- Icon::Github => "icons/github.svg",
- Icon::Hash => "icons/hash.svg",
- Icon::InlayHint => "icons/inlay_hint.svg",
- Icon::Link => "icons/link.svg",
- Icon::MagicWand => "icons/magic_wand.svg",
- Icon::MagnifyingGlass => "icons/magnifying_glass.svg",
- Icon::MailOpen => "icons/mail_open.svg",
- Icon::Maximize => "icons/maximize.svg",
- Icon::Menu => "icons/menu.svg",
- Icon::MessageBubbles => "icons/conversations.svg",
- Icon::Mic => "icons/mic.svg",
- Icon::MicMute => "icons/mic_mute.svg",
- Icon::Minimize => "icons/minimize.svg",
- Icon::Option => "icons/option.svg",
- Icon::PageDown => "icons/page_down.svg",
- Icon::PageUp => "icons/page_up.svg",
- Icon::Plus => "icons/plus.svg",
- Icon::Public => "icons/public.svg",
- Icon::Quote => "icons/quote.svg",
- Icon::Replace => "icons/replace.svg",
- Icon::ReplaceAll => "icons/replace_all.svg",
- Icon::ReplaceNext => "icons/replace_next.svg",
- Icon::Return => "icons/return.svg",
- Icon::Screen => "icons/desktop.svg",
- Icon::SelectAll => "icons/select_all.svg",
- Icon::Shift => "icons/shift.svg",
- Icon::Snip => "icons/snip.svg",
- Icon::Space => "icons/space.svg",
- Icon::Split => "icons/split.svg",
- Icon::Tab => "icons/tab.svg",
- Icon::Terminal => "icons/terminal.svg",
- Icon::Update => "icons/update.svg",
- Icon::WholeWord => "icons/word_search.svg",
- Icon::XCircle => "icons/error.svg",
- Icon::ZedXCopilot => "icons/zed_x_copilot.svg",
+ IconName::Ai => "icons/ai.svg",
+ IconName::ArrowDown => "icons/arrow_down.svg",
+ IconName::ArrowLeft => "icons/arrow_left.svg",
+ IconName::ArrowRight => "icons/arrow_right.svg",
+ IconName::ArrowUp => "icons/arrow_up.svg",
+ IconName::ArrowUpRight => "icons/arrow_up_right.svg",
+ IconName::ArrowCircle => "icons/arrow_circle.svg",
+ IconName::AtSign => "icons/at_sign.svg",
+ IconName::AudioOff => "icons/speaker_off.svg",
+ IconName::AudioOn => "icons/speaker_loud.svg",
+ IconName::Backspace => "icons/backspace.svg",
+ IconName::Bell => "icons/bell.svg",
+ IconName::BellOff => "icons/bell_off.svg",
+ IconName::BellRing => "icons/bell_ring.svg",
+ IconName::Bolt => "icons/bolt.svg",
+ IconName::CaseSensitive => "icons/case_insensitive.svg",
+ IconName::Check => "icons/check.svg",
+ IconName::ChevronDown => "icons/chevron_down.svg",
+ IconName::ChevronLeft => "icons/chevron_left.svg",
+ IconName::ChevronRight => "icons/chevron_right.svg",
+ IconName::ChevronUp => "icons/chevron_up.svg",
+ IconName::Close => "icons/x.svg",
+ IconName::Collab => "icons/user_group_16.svg",
+ IconName::Command => "icons/command.svg",
+ IconName::Control => "icons/control.svg",
+ IconName::Copilot => "icons/copilot.svg",
+ IconName::CopilotDisabled => "icons/copilot_disabled.svg",
+ IconName::CopilotError => "icons/copilot_error.svg",
+ IconName::CopilotInit => "icons/copilot_init.svg",
+ IconName::Copy => "icons/copy.svg",
+ IconName::Dash => "icons/dash.svg",
+ IconName::Delete => "icons/delete.svg",
+ IconName::Disconnected => "icons/disconnected.svg",
+ IconName::Ellipsis => "icons/ellipsis.svg",
+ IconName::Envelope => "icons/feedback.svg",
+ IconName::Escape => "icons/escape.svg",
+ IconName::ExclamationTriangle => "icons/warning.svg",
+ IconName::Exit => "icons/exit.svg",
+ IconName::ExternalLink => "icons/external_link.svg",
+ IconName::File => "icons/file.svg",
+ IconName::FileDoc => "icons/file_icons/book.svg",
+ IconName::FileGeneric => "icons/file_icons/file.svg",
+ IconName::FileGit => "icons/file_icons/git.svg",
+ IconName::FileLock => "icons/file_icons/lock.svg",
+ IconName::FileRust => "icons/file_icons/rust.svg",
+ IconName::FileToml => "icons/file_icons/toml.svg",
+ IconName::FileTree => "icons/project.svg",
+ IconName::Filter => "icons/filter.svg",
+ IconName::Folder => "icons/file_icons/folder.svg",
+ IconName::FolderOpen => "icons/file_icons/folder_open.svg",
+ IconName::FolderX => "icons/stop_sharing.svg",
+ IconName::Github => "icons/github.svg",
+ IconName::Hash => "icons/hash.svg",
+ IconName::InlayHint => "icons/inlay_hint.svg",
+ IconName::Link => "icons/link.svg",
+ IconName::MagicWand => "icons/magic_wand.svg",
+ IconName::MagnifyingGlass => "icons/magnifying_glass.svg",
+ IconName::MailOpen => "icons/mail_open.svg",
+ IconName::Maximize => "icons/maximize.svg",
+ IconName::Menu => "icons/menu.svg",
+ IconName::MessageBubbles => "icons/conversations.svg",
+ IconName::Mic => "icons/mic.svg",
+ IconName::MicMute => "icons/mic_mute.svg",
+ IconName::Minimize => "icons/minimize.svg",
+ IconName::Option => "icons/option.svg",
+ IconName::PageDown => "icons/page_down.svg",
+ IconName::PageUp => "icons/page_up.svg",
+ IconName::Plus => "icons/plus.svg",
+ IconName::Public => "icons/public.svg",
+ IconName::Quote => "icons/quote.svg",
+ IconName::Replace => "icons/replace.svg",
+ IconName::ReplaceAll => "icons/replace_all.svg",
+ IconName::ReplaceNext => "icons/replace_next.svg",
+ IconName::Return => "icons/return.svg",
+ IconName::Screen => "icons/desktop.svg",
+ IconName::SelectAll => "icons/select_all.svg",
+ IconName::Shift => "icons/shift.svg",
+ IconName::Snip => "icons/snip.svg",
+ IconName::Space => "icons/space.svg",
+ IconName::Split => "icons/split.svg",
+ IconName::Tab => "icons/tab.svg",
+ IconName::Terminal => "icons/terminal.svg",
+ IconName::Update => "icons/update.svg",
+ IconName::WholeWord => "icons/word_search.svg",
+ IconName::XCircle => "icons/error.svg",
+ IconName::ZedXCopilot => "icons/zed_x_copilot.svg",
}
}
}
#[derive(IntoElement)]
-pub struct IconElement {
+pub struct Icon {
path: SharedString,
color: Color,
size: IconSize,
}
-impl RenderOnce for IconElement {
- fn render(self, cx: &mut WindowContext) -> impl IntoElement {
- svg()
- .size(self.size.rems())
- .flex_none()
- .path(self.path)
- .text_color(self.color.color(cx))
- }
-}
-
-impl IconElement {
- pub fn new(icon: Icon) -> Self {
+impl Icon {
+ pub fn new(icon: IconName) -> Self {
Self {
path: icon.path().into(),
color: Color::default(),
@@ -248,3 +238,13 @@ impl IconElement {
self
}
}
+
+impl RenderOnce for Icon {
+ fn render(self, cx: &mut WindowContext) -> impl IntoElement {
+ svg()
+ .size(self.size.rems())
+ .flex_none()
+ .path(self.path)
+ .text_color(self.color.color(cx))
+ }
+}
@@ -1,4 +1,4 @@
-use crate::{h_stack, prelude::*, Icon, IconElement, IconSize};
+use crate::{h_stack, prelude::*, Icon, IconName, IconSize};
use gpui::{relative, rems, Action, FocusHandle, IntoElement, Keystroke};
#[derive(IntoElement, Clone)]
@@ -26,16 +26,16 @@ impl RenderOnce for KeyBinding {
.text_color(cx.theme().colors().text_muted)
.when(keystroke.modifiers.function, |el| el.child(Key::new("fn")))
.when(keystroke.modifiers.control, |el| {
- el.child(KeyIcon::new(Icon::Control))
+ el.child(KeyIcon::new(IconName::Control))
})
.when(keystroke.modifiers.alt, |el| {
- el.child(KeyIcon::new(Icon::Option))
+ el.child(KeyIcon::new(IconName::Option))
})
.when(keystroke.modifiers.command, |el| {
- el.child(KeyIcon::new(Icon::Command))
+ el.child(KeyIcon::new(IconName::Command))
})
.when(keystroke.modifiers.shift, |el| {
- el.child(KeyIcon::new(Icon::Shift))
+ el.child(KeyIcon::new(IconName::Shift))
})
.when_some(key_icon, |el, icon| el.child(KeyIcon::new(icon)))
.when(key_icon.is_none(), |el| {
@@ -62,21 +62,21 @@ impl KeyBinding {
Some(Self::new(key_binding))
}
- fn icon_for_key(keystroke: &Keystroke) -> Option<Icon> {
+ fn icon_for_key(keystroke: &Keystroke) -> Option<IconName> {
match keystroke.key.as_str() {
- "left" => Some(Icon::ArrowLeft),
- "right" => Some(Icon::ArrowRight),
- "up" => Some(Icon::ArrowUp),
- "down" => Some(Icon::ArrowDown),
- "backspace" => Some(Icon::Backspace),
- "delete" => Some(Icon::Delete),
- "return" => Some(Icon::Return),
- "enter" => Some(Icon::Return),
- "tab" => Some(Icon::Tab),
- "space" => Some(Icon::Space),
- "escape" => Some(Icon::Escape),
- "pagedown" => Some(Icon::PageDown),
- "pageup" => Some(Icon::PageUp),
+ "left" => Some(IconName::ArrowLeft),
+ "right" => Some(IconName::ArrowRight),
+ "up" => Some(IconName::ArrowUp),
+ "down" => Some(IconName::ArrowDown),
+ "backspace" => Some(IconName::Backspace),
+ "delete" => Some(IconName::Delete),
+ "return" => Some(IconName::Return),
+ "enter" => Some(IconName::Return),
+ "tab" => Some(IconName::Tab),
+ "space" => Some(IconName::Space),
+ "escape" => Some(IconName::Escape),
+ "pagedown" => Some(IconName::PageDown),
+ "pageup" => Some(IconName::PageUp),
_ => None,
}
}
@@ -120,13 +120,13 @@ impl Key {
#[derive(IntoElement)]
pub struct KeyIcon {
- icon: Icon,
+ icon: IconName,
}
impl RenderOnce for KeyIcon {
fn render(self, _cx: &mut WindowContext) -> impl IntoElement {
div().w(rems(14. / 16.)).child(
- IconElement::new(self.icon)
+ Icon::new(self.icon)
.size(IconSize::Small)
.color(Color::Muted),
)
@@ -134,7 +134,7 @@ impl RenderOnce for KeyIcon {
}
impl KeyIcon {
- pub fn new(icon: Icon) -> Self {
+ pub fn new(icon: IconName) -> Self {
Self { icon }
}
}
@@ -1,10 +1,10 @@
use crate::prelude::*;
-use crate::{h_stack, Icon, IconElement, IconSize, Label};
+use crate::{h_stack, Icon, IconName, IconSize, Label};
#[derive(IntoElement)]
pub struct ListSubHeader {
label: SharedString,
- start_slot: Option<Icon>,
+ start_slot: Option<IconName>,
inset: bool,
}
@@ -17,7 +17,7 @@ impl ListSubHeader {
}
}
- pub fn left_icon(mut self, left_icon: Option<Icon>) -> Self {
+ pub fn left_icon(mut self, left_icon: Option<IconName>) -> Self {
self.start_slot = left_icon;
self
}
@@ -40,11 +40,10 @@ impl RenderOnce for ListSubHeader {
.flex()
.gap_1()
.items_center()
- .children(self.start_slot.map(|i| {
- IconElement::new(i)
- .color(Color::Muted)
- .size(IconSize::Small)
- }))
+ .children(
+ self.start_slot
+ .map(|i| Icon::new(i).color(Color::Muted).size(IconSize::Small)),
+ )
.child(Label::new(self.label.clone()).color(Color::Muted)),
),
)
@@ -1,7 +1,7 @@
use gpui::Render;
use story::Story;
-use crate::{prelude::*, Icon};
+use crate::{prelude::*, IconName};
use crate::{Button, ButtonStyle};
pub struct ButtonStory;
@@ -23,12 +23,12 @@ impl Render for ButtonStory {
.child(Story::label("With `label_color`"))
.child(Button::new("filled_with_label_color", "Click me").color(Color::Created))
.child(Story::label("With `icon`"))
- .child(Button::new("filled_with_icon", "Click me").icon(Icon::FileGit))
+ .child(Button::new("filled_with_icon", "Click me").icon(IconName::FileGit))
.child(Story::label("Selected with `icon`"))
.child(
Button::new("filled_and_selected_with_icon", "Click me")
.selected(true)
- .icon(Icon::FileGit),
+ .icon(IconName::FileGit),
)
.child(Story::label("Default (Subtle)"))
.child(Button::new("default_subtle", "Click me").style(ButtonStyle::Subtle))
@@ -3,17 +3,17 @@ use story::Story;
use strum::IntoEnumIterator;
use crate::prelude::*;
-use crate::{Icon, IconElement};
+use crate::{Icon, IconName};
pub struct IconStory;
impl Render for IconStory {
fn render(&mut self, _cx: &mut ViewContext<Self>) -> impl IntoElement {
- let icons = Icon::iter();
+ let icons = IconName::iter();
Story::container()
- .child(Story::title_for::<IconElement>())
+ .child(Story::title_for::<Icon>())
.child(Story::label("All Icons"))
- .child(div().flex().gap_3().children(icons.map(IconElement::new)))
+ .child(div().flex().gap_3().children(icons.map(Icon::new)))
}
}
@@ -2,7 +2,7 @@ use gpui::Render;
use story::{StoryContainer, StoryItem, StorySection};
use crate::{prelude::*, Tooltip};
-use crate::{Icon, IconButton};
+use crate::{IconButton, IconName};
pub struct IconButtonStory;
@@ -10,7 +10,7 @@ impl Render for IconButtonStory {
fn render(&mut self, _cx: &mut ViewContext<Self>) -> impl IntoElement {
let default_button = StoryItem::new(
"Default",
- IconButton::new("default_icon_button", Icon::Hash),
+ IconButton::new("default_icon_button", IconName::Hash),
)
.description("Displays an icon button.")
.usage(
@@ -21,7 +21,7 @@ impl Render for IconButtonStory {
let selected_button = StoryItem::new(
"Selected",
- IconButton::new("selected_icon_button", Icon::Hash).selected(true),
+ IconButton::new("selected_icon_button", IconName::Hash).selected(true),
)
.description("Displays an icon button that is selected.")
.usage(
@@ -32,9 +32,9 @@ impl Render for IconButtonStory {
let selected_with_selected_icon = StoryItem::new(
"Selected with `selected_icon`",
- IconButton::new("selected_with_selected_icon_button", Icon::AudioOn)
+ IconButton::new("selected_with_selected_icon_button", IconName::AudioOn)
.selected(true)
- .selected_icon(Icon::AudioOff),
+ .selected_icon(IconName::AudioOff),
)
.description(
"Displays an icon button that is selected and shows a different icon when selected.",
@@ -49,7 +49,7 @@ impl Render for IconButtonStory {
let disabled_button = StoryItem::new(
"Disabled",
- IconButton::new("disabled_icon_button", Icon::Hash).disabled(true),
+ IconButton::new("disabled_icon_button", IconName::Hash).disabled(true),
)
.description("Displays an icon button that is disabled.")
.usage(
@@ -60,7 +60,7 @@ impl Render for IconButtonStory {
let with_on_click_button = StoryItem::new(
"With `on_click`",
- IconButton::new("with_on_click_button", Icon::Ai).on_click(|_event, _cx| {
+ IconButton::new("with_on_click_button", IconName::Ai).on_click(|_event, _cx| {
println!("Clicked!");
}),
)
@@ -75,7 +75,7 @@ impl Render for IconButtonStory {
let with_tooltip_button = StoryItem::new(
"With `tooltip`",
- IconButton::new("with_tooltip_button", Icon::MessageBubbles)
+ IconButton::new("with_tooltip_button", IconName::MessageBubbles)
.tooltip(|cx| Tooltip::text("Open messages", cx)),
)
.description("Displays an icon button that has a tooltip when hovered.")
@@ -88,7 +88,7 @@ impl Render for IconButtonStory {
let selected_with_tooltip_button = StoryItem::new(
"Selected with `tooltip`",
- IconButton::new("selected_with_tooltip_button", Icon::InlayHint)
+ IconButton::new("selected_with_tooltip_button", IconName::InlayHint)
.selected(true)
.tooltip(|cx| Tooltip::text("Toggle inlay hints", cx)),
)
@@ -2,7 +2,7 @@ use gpui::Render;
use story::Story;
use crate::{prelude::*, IconButton};
-use crate::{Icon, ListHeader};
+use crate::{IconName, ListHeader};
pub struct ListHeaderStory;
@@ -13,19 +13,19 @@ impl Render for ListHeaderStory {
.child(Story::label("Default"))
.child(ListHeader::new("Section 1"))
.child(Story::label("With left icon"))
- .child(ListHeader::new("Section 2").start_slot(IconElement::new(Icon::Bell)))
+ .child(ListHeader::new("Section 2").start_slot(Icon::new(IconName::Bell)))
.child(Story::label("With left icon and meta"))
.child(
ListHeader::new("Section 3")
- .start_slot(IconElement::new(Icon::BellOff))
- .end_slot(IconButton::new("action_1", Icon::Bolt)),
+ .start_slot(Icon::new(IconName::BellOff))
+ .end_slot(IconButton::new("action_1", IconName::Bolt)),
)
.child(Story::label("With multiple meta"))
.child(
ListHeader::new("Section 4")
- .end_slot(IconButton::new("action_1", Icon::Bolt))
- .end_slot(IconButton::new("action_2", Icon::ExclamationTriangle))
- .end_slot(IconButton::new("action_3", Icon::Plus)),
+ .end_slot(IconButton::new("action_1", IconName::Bolt))
+ .end_slot(IconButton::new("action_2", IconName::ExclamationTriangle))
+ .end_slot(IconButton::new("action_3", IconName::Plus)),
)
}
}
@@ -2,7 +2,7 @@ use gpui::Render;
use story::Story;
use crate::{prelude::*, Avatar};
-use crate::{Icon, ListItem};
+use crate::{IconName, ListItem};
pub struct ListItemStory;
@@ -18,13 +18,13 @@ impl Render for ListItemStory {
ListItem::new("inset_list_item")
.inset(true)
.start_slot(
- IconElement::new(Icon::Bell)
+ Icon::new(IconName::Bell)
.size(IconSize::Small)
.color(Color::Muted),
)
.child("Hello, world!")
.end_slot(
- IconElement::new(Icon::Bell)
+ Icon::new(IconName::Bell)
.size(IconSize::Small)
.color(Color::Muted),
),
@@ -34,7 +34,7 @@ impl Render for ListItemStory {
ListItem::new("with start slot_icon")
.child("Hello, world!")
.start_slot(
- IconElement::new(Icon::Bell)
+ Icon::new(IconName::Bell)
.size(IconSize::Small)
.color(Color::Muted),
),
@@ -27,7 +27,7 @@ impl Render for TabStory {
h_stack().child(
Tab::new("tab_1")
.end_slot(
- IconButton::new("close_button", Icon::Close)
+ IconButton::new("close_button", IconName::Close)
.icon_color(Color::Muted)
.size(ButtonSize::None)
.icon_size(IconSize::XSmall),
@@ -38,16 +38,19 @@ impl Render for TabBarStory {
h_stack().child(
TabBar::new("tab_bar_1")
.start_child(
- IconButton::new("navigate_backward", Icon::ArrowLeft)
+ IconButton::new("navigate_backward", IconName::ArrowLeft)
.icon_size(IconSize::Small),
)
.start_child(
- IconButton::new("navigate_forward", Icon::ArrowRight)
+ IconButton::new("navigate_forward", IconName::ArrowRight)
.icon_size(IconSize::Small),
)
- .end_child(IconButton::new("new", Icon::Plus).icon_size(IconSize::Small))
.end_child(
- IconButton::new("split_pane", Icon::Split).icon_size(IconSize::Small),
+ IconButton::new("new", IconName::Plus).icon_size(IconSize::Small),
+ )
+ .end_child(
+ IconButton::new("split_pane", IconName::Split)
+ .icon_size(IconSize::Small),
)
.children(tabs),
),
@@ -15,6 +15,6 @@ pub use crate::{h_stack, v_stack};
pub use crate::{Button, ButtonSize, ButtonStyle, IconButton, SelectableButton};
pub use crate::{ButtonCommon, Color, StyledExt};
pub use crate::{Headline, HeadlineSize};
-pub use crate::{Icon, IconElement, IconPosition, IconSize};
+pub use crate::{Icon, IconName, IconPosition, IconSize};
pub use crate::{Label, LabelCommon, LabelSize, LineHeightStyle};
pub use theme::ActiveTheme;
@@ -28,7 +28,7 @@ pub trait Panel: FocusableView + EventEmitter<PanelEvent> {
fn set_position(&mut self, position: DockPosition, cx: &mut ViewContext<Self>);
fn size(&self, cx: &WindowContext) -> Pixels;
fn set_size(&mut self, size: Option<Pixels>, cx: &mut ViewContext<Self>);
- fn icon(&self, cx: &WindowContext) -> Option<ui::Icon>;
+ fn icon(&self, cx: &WindowContext) -> Option<ui::IconName>;
fn icon_tooltip(&self, cx: &WindowContext) -> Option<&'static str>;
fn toggle_action(&self) -> Box<dyn Action>;
fn icon_label(&self, _: &WindowContext) -> Option<String> {
@@ -52,7 +52,7 @@ pub trait PanelHandle: Send + Sync {
fn set_active(&self, active: bool, cx: &mut WindowContext);
fn size(&self, cx: &WindowContext) -> Pixels;
fn set_size(&self, size: Option<Pixels>, cx: &mut WindowContext);
- fn icon(&self, cx: &WindowContext) -> Option<ui::Icon>;
+ fn icon(&self, cx: &WindowContext) -> Option<ui::IconName>;
fn icon_tooltip(&self, cx: &WindowContext) -> Option<&'static str>;
fn toggle_action(&self, cx: &WindowContext) -> Box<dyn Action>;
fn icon_label(&self, cx: &WindowContext) -> Option<String>;
@@ -104,7 +104,7 @@ where
self.update(cx, |this, cx| this.set_size(size, cx))
}
- fn icon(&self, cx: &WindowContext) -> Option<ui::Icon> {
+ fn icon(&self, cx: &WindowContext) -> Option<ui::IconName> {
self.read(cx).icon(cx)
}
@@ -774,7 +774,7 @@ pub mod test {
self.size = size.unwrap_or(px(300.));
}
- fn icon(&self, _: &WindowContext) -> Option<ui::Icon> {
+ fn icon(&self, _: &WindowContext) -> Option<ui::IconName> {
None
}
@@ -175,7 +175,7 @@ pub mod simple_message_notification {
};
use std::sync::Arc;
use ui::prelude::*;
- use ui::{h_stack, v_stack, Button, Icon, IconElement, Label, StyledExt};
+ use ui::{h_stack, v_stack, Button, Icon, IconName, Label, StyledExt};
pub struct MessageNotification {
message: SharedString,
@@ -230,7 +230,7 @@ pub mod simple_message_notification {
.child(
div()
.id("cancel")
- .child(IconElement::new(Icon::Close))
+ .child(Icon::new(IconName::Close))
.cursor_pointer()
.on_click(cx.listener(|this, _, cx| this.dismiss(cx))),
),
@@ -31,8 +31,8 @@ use std::{
use theme::ThemeSettings;
use ui::{
- prelude::*, right_click_menu, ButtonSize, Color, Icon, IconButton, IconSize, Indicator, Label,
- Tab, TabBar, TabPosition, Tooltip,
+ prelude::*, right_click_menu, ButtonSize, Color, IconButton, IconName, IconSize, Indicator,
+ Label, Tab, TabBar, TabPosition, Tooltip,
};
use ui::{v_stack, ContextMenu};
use util::{maybe, truncate_and_remove_front, ResultExt};
@@ -384,7 +384,7 @@ impl Pane {
h_stack()
.gap_2()
.child(
- IconButton::new("plus", Icon::Plus)
+ IconButton::new("plus", IconName::Plus)
.icon_size(IconSize::Small)
.icon_color(Color::Muted)
.on_click(cx.listener(|pane, _, cx| {
@@ -406,7 +406,7 @@ impl Pane {
el.child(Self::render_menu_overlay(new_item_menu))
})
.child(
- IconButton::new("split", Icon::Split)
+ IconButton::new("split", IconName::Split)
.icon_size(IconSize::Small)
.icon_color(Color::Muted)
.on_click(cx.listener(|pane, _, cx| {
@@ -427,11 +427,11 @@ impl Pane {
)
.child({
let zoomed = pane.is_zoomed();
- IconButton::new("toggle_zoom", Icon::Maximize)
+ IconButton::new("toggle_zoom", IconName::Maximize)
.icon_size(IconSize::Small)
.icon_color(Color::Muted)
.selected(zoomed)
- .selected_icon(Icon::Minimize)
+ .selected_icon(IconName::Minimize)
.on_click(cx.listener(|pane, _, cx| {
pane.toggle_zoom(&crate::ToggleZoom, cx);
}))
@@ -1570,7 +1570,7 @@ impl Pane {
})
.start_slot::<Indicator>(indicator)
.end_slot(
- IconButton::new("close tab", Icon::Close)
+ IconButton::new("close tab", IconName::Close)
.icon_color(Color::Muted)
.size(ButtonSize::None)
.icon_size(IconSize::XSmall)
@@ -1676,7 +1676,7 @@ impl Pane {
h_stack()
.gap_2()
.child(
- IconButton::new("navigate_backward", Icon::ArrowLeft)
+ IconButton::new("navigate_backward", IconName::ArrowLeft)
.icon_size(IconSize::Small)
.on_click({
let view = cx.view().clone();
@@ -1686,7 +1686,7 @@ impl Pane {
.tooltip(|cx| Tooltip::for_action("Go Back", &GoBack, cx)),
)
.child(
- IconButton::new("navigate_forward", Icon::ArrowRight)
+ IconButton::new("navigate_forward", IconName::ArrowRight)
.icon_size(IconSize::Small)
.on_click({
let view = cx.view().clone();
@@ -12,7 +12,7 @@ use gpui::{
WindowContext,
};
use std::sync::{Arc, Weak};
-use ui::{h_stack, prelude::*, Icon, IconElement, Label};
+use ui::{h_stack, prelude::*, Icon, IconName, Label};
pub enum Event {
Close,
@@ -100,7 +100,7 @@ impl Item for SharedScreen {
) -> gpui::AnyElement {
h_stack()
.gap_1()
- .child(IconElement::new(Icon::Screen))
+ .child(Icon::new(IconName::Screen))
.child(
Label::new(format!("{}'s screen", self.user.github_login)).color(if selected {
Color::Default