/* Copyright 2022-2024 New Vector Ltd. Copyright 2026 Element Creations Ltd. SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial Please see LICENSE in the repository root for full details. */ import { type ComponentPropsWithoutRef, type FC } from "react"; import classNames from "classnames"; import { useTranslation } from "react-i18next"; import { Button as CpdButton, Tooltip } from "@vector-im/compound-web"; import { MicOnSolidIcon, MicOffSolidIcon, VideoCallSolidIcon, VideoCallOffSolidIcon, EndCallIcon, ShareScreenSolidIcon, SettingsSolidIcon, } from "@vector-im/compound-design-tokens/assets/web/icons"; import styles from "./Button.module.css"; interface MicButtonProps extends ComponentPropsWithoutRef<"button"> { enabled: boolean; size?: "sm" | "lg"; } export const MicButton: FC = ({ enabled, ...props }) => { const { t } = useTranslation(); const Icon = enabled ? MicOnSolidIcon : MicOffSolidIcon; const label = enabled ? t("mute_microphone_button_label") : t("unmute_microphone_button_label"); return ( ); }; interface VideoButtonProps extends ComponentPropsWithoutRef<"button"> { enabled: boolean; size?: "sm" | "lg"; } export const VideoButton: FC = ({ enabled, ...props }) => { const { t } = useTranslation(); const Icon = enabled ? VideoCallSolidIcon : VideoCallOffSolidIcon; const label = enabled ? t("stop_video_button_label") : t("start_video_button_label"); return ( ); }; interface ShareScreenButtonProps extends ComponentPropsWithoutRef<"button"> { enabled: boolean; size: "sm" | "lg"; } export const ShareScreenButton: FC = ({ enabled, ...props }) => { const { t } = useTranslation(); const label = enabled ? t("stop_screenshare_button_label") : t("screenshare_button_label"); return ( ); }; interface EndCallButtonProps extends ComponentPropsWithoutRef<"button"> { size?: "sm" | "lg"; } export const EndCallButton: FC = ({ className, ...props }) => { const { t } = useTranslation(); return ( ); }; interface SettingsButtonProps extends ComponentPropsWithoutRef<"button"> { size?: "sm" | "lg"; } export const SettingsButton: FC = (props) => { const { t } = useTranslation(); return ( ); };