avatar.rs

 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}