avatar.rs

 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}