icon.rs

 1use gpui::Render;
 2use story::Story;
 3use strum::IntoEnumIterator;
 4
 5use crate::{prelude::*, DecoratedIcon, IconDecoration};
 6use crate::{Icon, IconName};
 7
 8pub struct IconStory;
 9
10impl Render for IconStory {
11    fn render(&mut self, _cx: &mut ViewContext<Self>) -> impl IntoElement {
12        let icons = IconName::iter();
13
14        Story::container()
15            .child(Story::title_for::<Icon>())
16            .child(Story::label("DecoratedIcon"))
17            .child(DecoratedIcon::new(
18                Icon::new(IconName::Bell).color(Color::Muted),
19                IconDecoration::IndicatorDot,
20            ))
21            .child(
22                DecoratedIcon::new(Icon::new(IconName::Bell), IconDecoration::IndicatorDot)
23                    .decoration_color(Color::Accent),
24            )
25            .child(DecoratedIcon::new(
26                Icon::new(IconName::Bell).color(Color::Muted),
27                IconDecoration::Strikethrough,
28            ))
29            .child(
30                DecoratedIcon::new(Icon::new(IconName::Bell), IconDecoration::X)
31                    .decoration_color(Color::Error),
32            )
33            .child(Story::label("All Icons"))
34            .child(div().flex().gap_3().children(icons.map(Icon::new)))
35    }
36}