1use gpui::{Div, Render};
2use story::Story;
3
4use crate::prelude::*;
5use crate::{Icon, ListItem};
6
7pub struct ListItemStory;
8
9impl Render for ListItemStory {
10 type Element = Div;
11
12 fn render(&mut self, _cx: &mut ViewContext<Self>) -> Self::Element {
13 Story::container()
14 .child(Story::title_for::<ListItem>())
15 .child(Story::label("Default"))
16 .child(ListItem::new("hello_world").child("Hello, world!"))
17 .child(Story::label("With left icon"))
18 .child(
19 ListItem::new("with_left_icon")
20 .child("Hello, world!")
21 .left_icon(Icon::Bell),
22 )
23 .child(Story::label("With left avatar"))
24 .child(
25 ListItem::new("with_left_avatar")
26 .child("Hello, world!")
27 .left_avatar(SharedString::from(
28 "https://avatars.githubusercontent.com/u/1714999?v=4",
29 )),
30 )
31 .child(Story::label("With `on_click`"))
32 .child(
33 ListItem::new("with_on_click")
34 .child("Click me")
35 .on_click(|_event, _cx| {
36 println!("Clicked!");
37 }),
38 )
39 .child(Story::label("With `on_secondary_mouse_down`"))
40 .child(
41 ListItem::new("with_on_secondary_mouse_down")
42 .child("Right click me")
43 .on_secondary_mouse_down(|_event, _cx| {
44 println!("Right mouse down!");
45 }),
46 )
47 }
48}