ui_storybook/fixtures/
audio_apps.rs1use crate::components::recorder::{AppIconView, AudioAppView, SystemAudioView};
5
6fn app_icon(id: &str, monogram: &str, color: &str) -> AppIconView {
7 AppIconView {
8 id: id.to_owned(),
9 monogram: monogram.to_owned(),
10 color: color.to_owned(),
11 }
12}
13
14#[must_use]
16pub fn sample_audio_apps() -> Vec<AudioAppView> {
17 vec![
18 AudioAppView {
19 id: "spotify".to_owned(),
20 name: "Spotify".to_owned(),
21 context: "Discover Weekly · 18 m left".to_owned(),
22 selected: true,
23 suggested: true,
24 live: true,
25 level: Some(0.62),
26 icon: app_icon("spotify", "S", "#16a34a"),
27 },
28 AudioAppView {
29 id: "chrome-yt".to_owned(),
30 name: "Chrome — YouTube".to_owned(),
31 context: "Tab 3 · TWIR podcast ep 42".to_owned(),
32 selected: true,
33 suggested: true,
34 live: false,
35 level: Some(0.18),
36 icon: app_icon("chrome", "C", "#fbbf24"),
37 },
38 AudioAppView {
39 id: "discord".to_owned(),
40 name: "Discord".to_owned(),
41 context: "#engineering".to_owned(),
42 selected: false,
43 suggested: true,
44 live: false,
45 level: Some(0.05),
46 icon: app_icon("discord", "D", "#5865f2"),
47 },
48 AudioAppView {
49 id: "zoom".to_owned(),
50 name: "Zoom".to_owned(),
51 context: "Idle · last call 12m ago".to_owned(),
52 selected: false,
53 suggested: false,
54 live: false,
55 level: None,
56 icon: app_icon("zoom", "Z", "#0ea5e9"),
57 },
58 AudioAppView {
59 id: "messages".to_owned(),
60 name: "Messages".to_owned(),
61 context: "Notification sounds".to_owned(),
62 selected: false,
63 suggested: false,
64 live: false,
65 level: None,
66 icon: app_icon("messages", "M", "#22c55e"),
67 },
68 ]
69}
70
71#[must_use]
73pub fn sample_audio_apps_none_selected() -> Vec<AudioAppView> {
74 sample_audio_apps()
75 .into_iter()
76 .map(|mut a| {
77 a.selected = false;
78 a
79 })
80 .collect()
81}
82
83#[must_use]
85pub fn sample_audio_apps_all_selected() -> Vec<AudioAppView> {
86 sample_audio_apps()
87 .into_iter()
88 .map(|mut a| {
89 a.selected = true;
90 a
91 })
92 .collect()
93}
94
95#[must_use]
97pub fn sample_system_audio_view(
98 enabled: bool,
99 expanded: bool,
100 selected_apps: &[AudioAppView],
101 total: usize,
102) -> SystemAudioView {
103 let icon_stack: Vec<AppIconView> = selected_apps.iter().map(|a| a.icon.clone()).collect();
104 SystemAudioView {
105 enabled,
106 expanded,
107 selected_count: selected_apps.iter().filter(|a| a.selected).count(),
108 total_count: total,
109 icon_stack,
110 }
111}