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}