1use gpui::Render;
2use story::{StoryContainer, StoryItem, StorySection};
3
4use crate::{prelude::*, AudioStatus, Availability, AvatarAvailabilityIndicator};
5use crate::{Avatar, AvatarAudioStatusIndicator};
6
7pub struct AvatarStory;
8
9impl Render for AvatarStory {
10 fn render(&mut self, cx: &mut ViewContext<Self>) -> impl IntoElement {
11 StoryContainer::new("Avatar", "crates/ui/src/components/stories/avatar.rs")
12 .child(
13 StorySection::new()
14 .child(StoryItem::new(
15 "Default",
16 Avatar::new("https://avatars.githubusercontent.com/u/1714999?v=4"),
17 ))
18 .child(StoryItem::new(
19 "Default",
20 Avatar::new("https://avatars.githubusercontent.com/u/326587?v=4"),
21 )),
22 )
23 .child(
24 StorySection::new()
25 .child(StoryItem::new(
26 "With free availability indicator",
27 Avatar::new("https://avatars.githubusercontent.com/u/326587?v=4")
28 .indicator(AvatarAvailabilityIndicator::new(Availability::Free)),
29 ))
30 .child(StoryItem::new(
31 "With busy availability indicator",
32 Avatar::new("https://avatars.githubusercontent.com/u/326587?v=4")
33 .indicator(AvatarAvailabilityIndicator::new(Availability::Busy)),
34 )),
35 )
36 .child(
37 StorySection::new()
38 .child(StoryItem::new(
39 "With info border",
40 Avatar::new("https://avatars.githubusercontent.com/u/326587?v=4")
41 .border_color(cx.theme().status().info_border),
42 ))
43 .child(StoryItem::new(
44 "With error border",
45 Avatar::new("https://avatars.githubusercontent.com/u/326587?v=4")
46 .border_color(cx.theme().status().error_border),
47 )),
48 )
49 .child(
50 StorySection::new()
51 .child(StoryItem::new(
52 "With muted audio indicator",
53 Avatar::new("https://avatars.githubusercontent.com/u/326587?v=4")
54 .indicator(AvatarAudioStatusIndicator::new(AudioStatus::Muted)),
55 ))
56 .child(StoryItem::new(
57 "With deafened audio indicator",
58 Avatar::new("https://avatars.githubusercontent.com/u/326587?v=4")
59 .indicator(AvatarAudioStatusIndicator::new(AudioStatus::Deafened)),
60 )),
61 )
62 }
63}