import React, { useRef, useState, useEffect, forwardRef } from "react"; import classNames from "classnames"; import styles from "./RoomButton.module.css"; import { ReactComponent as MicIcon } from "./icons/Mic.svg"; import { ReactComponent as MuteMicIcon } from "./icons/MuteMic.svg"; import { ReactComponent as VideoIcon } from "./icons/Video.svg"; import { ReactComponent as DisableVideoIcon } from "./icons/DisableVideo.svg"; import { ReactComponent as HangupIcon } from "./icons/Hangup.svg"; import { ReactComponent as SettingsIcon } from "./icons/Settings.svg"; import { ReactComponent as FreedomIcon } from "./icons/Freedom.svg"; import { ReactComponent as SpotlightIcon } from "./icons/Spotlight.svg"; import { ReactComponent as ScreenshareIcon } from "./icons/Screenshare.svg"; import { ReactComponent as ChevronIcon } from "./icons/Chevron.svg"; import { ReactComponent as UserIcon } from "./icons/User.svg"; import { ReactComponent as CheckIcon } from "./icons/Check.svg"; import { useButton } from "@react-aria/button"; export const RoomButton = forwardRef( ({ on, off, className, children, ...rest }, ref) => { const { buttonProps } = useButton(rest, ref); return ( ); } ); export function DropdownButton({ onChange, options, value, children }) { const buttonRef = useRef(); const [open, setOpen] = useState(false); useEffect(() => { function onClick() { if (open) { setOpen(false); } } window.addEventListener("click", onClick); return () => { window.removeEventListener("click", onClick); }; }, [open]); return (
{children} {open && (
)}
); } export function MicButton({ muted, ...rest }) { return ( {muted ? "Unmute microphone" : "Mute microphone"} {muted ? : } ); } export function VideoButton({ muted, ...rest }) { return ( {muted ? "Turn on camera" : "Turn off camera"} {muted ? : } ); } export function ScreenshareButton({ enabled, className, ...rest }) { return ( {enabled ? "Stop sharing screen" : "Share screen"} ); } export function HangupButton({ className, ...rest }) { return ( Leave ); } export const HeaderButton = forwardRef( ({ on, className, children, ...rest }, ref) => { const { buttonProps } = useButton(rest, ref); return ( ); } ); export function HeaderDropdownButton({ children, content }) { const buttonRef = useRef(); const [open, setOpen] = useState(false); useEffect(() => { function onClick() { if (open) { setOpen(false); } } window.addEventListener("click", onClick); return () => { window.removeEventListener("click", onClick); }; }, [open]); return (
{open && (
)}
); } export function HeaderDropdownItem({ active, children, className, ...rest }) { return (
  • {children}
  • ); } export function UserMenu({ userName, children }) { return ( Profile
    {userName}
    ); } export function SettingsButton(props) { return ( Show Dev Tools ); } export function LayoutToggleButton({ layout, setLayout, ...rest }) { return ( setLayout("freedom")}> Freedom {layout === "freedom" && } setLayout("spotlight")}> Spotlight {layout === "spotlight" && ( )} } > Layout Type {layout === "spotlight" ? : } ); } export function ButtonTooltip({ className, children }) { return (
    {children}
    ); }