1use gpui::Render;
2use story::{Story, 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 Story::container()
12 .child(Story::title_for::<Avatar>())
13 .child(
14 StorySection::new()
15 .child(StoryItem::new(
16 "Default",
17 Avatar::new("https://avatars.githubusercontent.com/u/1714999?v=4"),
18 ))
19 .child(StoryItem::new(
20 "Default",
21 Avatar::new("https://avatars.githubusercontent.com/u/326587?v=4"),
22 )),
23 )
24 .child(
25 StorySection::new()
26 .child(StoryItem::new(
27 "With free availability indicator",
28 Avatar::new("https://avatars.githubusercontent.com/u/326587?v=4")
29 .indicator(AvatarAvailabilityIndicator::new(Availability::Free)),
30 ))
31 .child(StoryItem::new(
32 "With busy availability indicator",
33 Avatar::new("https://avatars.githubusercontent.com/u/326587?v=4")
34 .indicator(AvatarAvailabilityIndicator::new(Availability::Busy)),
35 )),
36 )
37 .child(
38 StorySection::new()
39 .child(StoryItem::new(
40 "With info border",
41 Avatar::new("https://avatars.githubusercontent.com/u/326587?v=4")
42 .border_color(cx.theme().status().info_border),
43 ))
44 .child(StoryItem::new(
45 "With error border",
46 Avatar::new("https://avatars.githubusercontent.com/u/326587?v=4")
47 .border_color(cx.theme().status().error_border),
48 )),
49 )
50 .child(
51 StorySection::new()
52 .child(StoryItem::new(
53 "With muted audio indicator",
54 Avatar::new("https://avatars.githubusercontent.com/u/326587?v=4")
55 .indicator(AvatarAudioStatusIndicator::new(AudioStatus::Muted)),
56 ))
57 .child(StoryItem::new(
58 "With deafened audio indicator",
59 Avatar::new("https://avatars.githubusercontent.com/u/326587?v=4")
60 .indicator(AvatarAudioStatusIndicator::new(AudioStatus::Deafened)),
61 )),
62 )
63 }
64}