icon_button.rs

 1use gpui::{Div, Render};
 2use story::Story;
 3
 4use crate::{prelude::*, Tooltip};
 5use crate::{Icon, IconButton};
 6
 7pub struct IconButtonStory;
 8
 9impl Render for IconButtonStory {
10    type Element = Div;
11
12    fn render(&mut self, _cx: &mut ViewContext<Self>) -> Self::Element {
13        Story::container()
14            .child(Story::title_for::<IconButton>())
15            .child(Story::label("Default"))
16            .child(div().w_8().child(IconButton::new("icon_a", Icon::Hash)))
17            .child(Story::label("Selected"))
18            .child(
19                div()
20                    .w_8()
21                    .child(IconButton::new("icon_a", Icon::Hash).selected(true)),
22            )
23            .child(Story::label("Selected with `selected_icon`"))
24            .child(
25                div().w_8().child(
26                    IconButton::new("icon_a", Icon::AudioOn)
27                        .selected(true)
28                        .selected_icon(Icon::AudioOff),
29                ),
30            )
31            .child(Story::label("Disabled"))
32            .child(
33                div()
34                    .w_8()
35                    .child(IconButton::new("icon_a", Icon::Hash).disabled(true)),
36            )
37            .child(Story::label("With `on_click`"))
38            .child(
39                div()
40                    .w_8()
41                    .child(
42                        IconButton::new("with_on_click", Icon::Ai).on_click(|_event, _cx| {
43                            println!("Clicked!");
44                        }),
45                    ),
46            )
47            .child(Story::label("With `tooltip`"))
48            .child(
49                div().w_8().child(
50                    IconButton::new("with_tooltip", Icon::MessageBubbles)
51                        .tooltip(|cx| Tooltip::text("Open messages", cx)),
52                ),
53            )
54    }
55}