Camera
camera.setSelectedDeviceId(event.target.value)}
disabled={camera.devicePickerStatus !== 'ready'}
aria-describedby={
camera.devicePickerMessage
? 'scanner-camera-select-hint'
: undefined
}
className="w-full px-3 py-2 rounded-xl text-sm focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2"
style={{
backgroundColor: 'var(--bg-secondary)',
border: '1px solid var(--border)',
color: 'var(--text-primary)',
minHeight: 44,
'--tw-ring-color': 'var(--accent-ember)',
'--tw-ring-offset-color': 'transparent',
}}
>
{camera.videoDevices.map((device) => (
{device.label || 'Camera'}
))}
{camera.devicePickerMessage && (
{camera.devicePickerMessage}
)}
deskGalleryInputRef.current?.click()}
>
Upload Image
batchInputRef.current?.click()}
>
Batch Scan
Auto-detect
setIsAutoDetectPaused((paused) => !paused)}
className="relative inline-flex h-7 w-12 flex-shrink-0 rounded-full transition-colors duration-200 focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2"
style={{
backgroundColor: !isAutoDetectPaused
? 'var(--accent-ember)'
: 'var(--bg-tertiary)',
border: '1px solid var(--border)',
minWidth: 44,
minHeight: 44,
'--tw-ring-color': 'var(--accent-ember)',
'--tw-ring-offset-color': 'transparent',
}}
>
)}