Audio Device Select
A microphone, speaker or source picker with permission, loading and disconnected states.
Installation
$ pnpm dlx shadcn@latest add @audiocn/audio-device-selectUsage
import { AudioDeviceSelect } from "@/components/ui/audio-device-select";const { devices, permission, requestPermission } = useAudioDevices();
<AudioDeviceSelect
devices={devices}
onRequestPermission={requestPermission}
onValueChange={setDeviceId}
permission={permission}
value={deviceId}
/>;Devices come in as a prop, so the select works with useAudioDevices or with any device list, such as one from a native backend.
Anatomy
<AudioDeviceSelect devices={devices}>
<AudioDeviceSelectTrigger>
<AudioDeviceSelectValue placeholder="Select a microphone" />
</AudioDeviceSelectTrigger>
<AudioDeviceSelectContent />
<AudioDeviceSelectPreview>
<LiveWaveform source={analyser.visual} />
</AudioDeviceSelectPreview>
</AudioDeviceSelect>AudioDeviceSelectContent renders one item per device. Pass children to render items yourself with AudioDeviceSelectItem.
Examples
States
Selected device, a "None" option, a device that was unplugged, and loading.
Behaviour
- A selected device that disappears is kept and shown as "(disconnected)", so the selection is never lost silently.
- Devices with
statusunavailableorpermission-requiredare disabled. - The default device is marked.
Theming
| Data attribute | On | Meaning |
|---|---|---|
data-loading | trigger | Devices are loading |
data-permission | trigger | granted, prompt or denied |
data-missing | trigger | The selected device is gone |
API reference
Prop
Type