/* Copyright 2024 New Vector Ltd. SPDX-License-Identifier: AGPL-3.0-only Please see LICENSE in the repository root for full details. */ import { type ChangeEvent, type FC, useCallback, useId } from "react"; import { Heading, InlineField, Label, RadioControl, Separator, } from "@vector-im/compound-web"; import { useTranslation } from "react-i18next"; import { type MediaDevice } from "../livekit/MediaDevicesContext"; import styles from "./DeviceSelection.module.css"; interface Props { devices: MediaDevice; title: string; numberedLabel: (number: number) => string; } export const DeviceSelection: FC = ({ devices, title, numberedLabel, }) => { const { t } = useTranslation(); const groupId = useId(); const onChange = useCallback( (e: ChangeEvent) => { devices.select(e.target.value); }, [devices], ); if (devices.available.size == 0) return null; return (
{title}
{[...devices.available].map(([id, label]) => ( } > ))}
); };