Tray record popover
Top-level composition: the floating black rounded window the user sees first. Pulls UI-02 → UI-11 together — workspace chip, capture-mode tabs, display source card, camera + microphone rows, system audio, on-screen overlay summary, and the recording controls footer.
States
| State | Story |
|---|---|
| Default | tray-record-popover-default |
| Workspace menu open | tray-record-popover-workspace-open |
| Camera menu open | tray-record-popover-camera-open |
| Microphone menu open | tray-record-popover-microphone-open |
| System-audio expanded | tray-record-popover-system-audio-open |
| On-screen options open | tray-record-popover-on-screen-open |
| Start disabled | tray-record-popover-start-disabled |
API
#![allow(unused)] fn main() { use ui_storybook::components::recorder::{ TrayRecordPopover, OpenRecorderPopoverKind, }; use ui_storybook::fixtures::recorder::sample_tray_record_popover; view! { <TrayRecordPopover view=sample_tray_record_popover(OpenRecorderPopoverKind::None) /> } }
Composition
flowchart TD
Popover[TrayRecordPopover] --> Header[Workspace chip + CaptureModeTabs]
Popover --> Body[tray-record-body]
Body --> Display[DisplaySourceCard]
Body --> Sources[CaptureSourceRow × 2]
Body --> Audio[SystemAudioRow + AppList]
Body --> OnScreen[On-screen summary chip]
Popover --> Footer[RecordingControlsFooter]
Popover --> Overlay[OpenRecorderPopoverKind overlay]
OpenRecorderPopoverKind is the only state. The component itself
doesn't track which menu is open — the parent (app-ui) owns that
signal. This keeps the popover snapshot-stable and lets the same
component drive both keyboard-navigation closing and outside-click
closing without owning either policy.