Skip to main content

ui_storybook/stories/
recorder_footer.rs

1//! Recording-controls-footer stories (M-UI.11 / AUT-131).
2
3use leptos::prelude::*;
4
5use crate::components::recorder::{RecordingControlsFooter, StartRecordingState};
6use crate::fixtures::recorder::{sample_recording_controls, sample_recording_controls_compact};
7
8use super::{Story, StoryViewport, render};
9
10/// All recording-controls-footer stories.
11#[must_use]
12pub fn stories() -> Vec<Story> {
13    vec![
14        Story {
15            id: "recording-footer-ready",
16            category: "Recorder",
17            title: "Recording footer — ready",
18            viewport: StoryViewport::Fixed {
19                width: 460,
20                height: 96,
21            },
22            render: render_ready,
23        },
24        Story {
25            id: "recording-footer-disabled",
26            category: "Recorder",
27            title: "Recording footer — disabled",
28            viewport: StoryViewport::Fixed {
29                width: 460,
30                height: 96,
31            },
32            render: render_disabled,
33        },
34        Story {
35            id: "recording-footer-loading",
36            category: "Recorder",
37            title: "Recording footer — loading",
38            viewport: StoryViewport::Fixed {
39                width: 460,
40                height: 96,
41            },
42            render: render_loading,
43        },
44        Story {
45            id: "recording-footer-permission-blocked",
46            category: "Recorder",
47            title: "Recording footer — permission blocked",
48            viewport: StoryViewport::Fixed {
49                width: 460,
50                height: 96,
51            },
52            render: render_permission_blocked,
53        },
54        Story {
55            id: "recording-footer-compact",
56            category: "Recorder",
57            title: "Recording footer — compact (no zoom, no countdown)",
58            viewport: StoryViewport::Fixed {
59                width: 460,
60                height: 96,
61            },
62            render: render_compact,
63        },
64    ]
65}
66
67fn render_ready() -> String {
68    render(view! {
69        <RecordingControlsFooter view=sample_recording_controls(StartRecordingState::Ready) />
70    })
71}
72
73fn render_disabled() -> String {
74    render(view! {
75        <RecordingControlsFooter view=sample_recording_controls(StartRecordingState::Disabled) />
76    })
77}
78
79fn render_loading() -> String {
80    render(view! {
81        <RecordingControlsFooter view=sample_recording_controls(StartRecordingState::Loading) />
82    })
83}
84
85fn render_permission_blocked() -> String {
86    render(view! {
87        <RecordingControlsFooter view=sample_recording_controls(StartRecordingState::PermissionBlocked) />
88    })
89}
90
91fn render_compact() -> String {
92    render(view! {
93        <RecordingControlsFooter view=sample_recording_controls_compact() />
94    })
95}