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 && (
{options.map((item) => (
- onChange(item)}
>
{item.label}
))}
)}
);
}
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}
);
}