Skip to content

Commit

Permalink
icon_theme_selector: Add footer and related docs (#25042)
Browse files Browse the repository at this point in the history
I've seen that the Theme modal has a footer with 2 links: Theme Docs
(which links to Configuration > Themes) on the left, Install Themes on
the right. I've basically done the same to the Icon Theme modal -
however we seem to be missing a Configuration > Icon Themes doc, I've
basically checked how it was made for Themes and pretty much adapted for
Icon Themes. Maybe a better solution would be to combine both. Or add
Icon themes section under Themes.

I hope somebody from Zed can have a look and adapt this PR where needed.

<img width="553" alt="Screenshot 2025-02-19 at 6 37 20 PM"
src="https://github.com/user-attachments/assets/30602027-b7a7-4690-ba05-fc9eac313e67"
/>

Release Notes:

- N/A

---------

Co-authored-by: Marshall Bowers <[email protected]>
  • Loading branch information
beniaminzagan and maxdeviant authored Feb 20, 2025
1 parent b8ed6e8 commit 121aba7
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 0 deletions.
35 changes: 35 additions & 0 deletions crates/theme_selector/src/icon_theme_selector.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ use theme::{Appearance, IconTheme, ThemeMeta, ThemeRegistry, ThemeSettings};
use ui::{prelude::*, v_flex, ListItem, ListItemSpacing};
use util::ResultExt;
use workspace::{ui::HighlightedLabel, ModalView};
use zed_actions::Extensions;

pub(crate) struct IconThemeSelector {
picker: Entity<Picker<IconThemeSelectorDelegate>>,
Expand Down Expand Up @@ -273,4 +274,38 @@ impl PickerDelegate for IconThemeSelectorDelegate {
)),
)
}

fn render_footer(
&self,
_window: &mut Window,
cx: &mut Context<Picker<Self>>,
) -> Option<gpui::AnyElement> {
Some(
h_flex()
.p_2()
.w_full()
.justify_between()
.gap_2()
.border_t_1()
.border_color(cx.theme().colors().border_variant)
.child(
Button::new("docs", "View Icon Theme Docs")
.icon(IconName::ArrowUpRight)
.icon_position(IconPosition::End)
.icon_size(IconSize::XSmall)
.icon_color(Color::Muted)
.on_click(|_event, _window, cx| {
cx.open_url("https://zed.dev/docs/icon-themes");
}),
)
.child(
Button::new("more-icon-themes", "Install Icon Themes").on_click(
move |_event, window, cx| {
window.dispatch_action(Box::new(Extensions), cx);
},
),
)
.into_any_element(),
)
}
}
1 change: 1 addition & 0 deletions docs/src/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
- [Key bindings](./key-bindings.md)
- [Snippets](./snippets.md)
- [Themes](./themes.md)
- [Icon Themes](./icon-themes.md)
- [Vim Mode](./vim.md)

<!-- - [Globs](./globs.md) -->
Expand Down
33 changes: 33 additions & 0 deletions docs/src/icon-themes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Icon Themes

Zed comes with a built-in icon theme, with more icon themes available as extensions.

## Selecting an Icon Theme

See what icon themes are installed and preview them via the Icon Theme Selector, which you can open from the command palette with "icon theme selector: toggle".

Navigating through the icon theme list by moving up and down will change the icon theme in real time and hitting enter will save it to your settings file.

## Installing more Icon Themes

More icon themes are available from the Extensions page, which you can access via the command palette with "zed: Extensions" or the [Zed website](https://zed.dev/extensions).

## Configuring Icon Themes

Your selected icon theme is stored in your settings file. You can open your settings file from the command palette with "zed: open settings" (bound to `cmd-,` on macOS and `ctrl-,` on Linux).

Just like with themes, Zed allows for configuring different icon themes for light and dark mode. You can set the mode to `"light"` or `"dark"` to ignore the current system mode.

```json
{
"icon_theme": {
"mode": "system",
"light": "Light Icon Theme",
"dark": "Dark Icon Theme"
}
}
```

## Icon Theme Development

See: [Developing Zed Icon Themes](./extensions/icon-themes.md)

0 comments on commit 121aba7

Please sign in to comment.