import GppBadIcon from "@mui/icons-material/GppBad"; import VerifiedIcon from "@mui/icons-material/VerifiedUser"; import { Box, BoxProps, CircularProgress, Typography, useTheme, } from "@mui/material"; import { BeatLoader } from "react-spinners"; export type Status = | "processing" | "disconnected" | "connecting" | "connected" | "disconnecting"; export const statusTextMap: Record = { processing: "Processing...", connected: "Connected", disconnected: "Not Connected", connecting: "Connecting...", disconnecting: "Disconnecting...", }; export default function ConnectionStatus( props: BoxProps<"div", { status?: Status }> ) { const theme = useTheme(); const { status = "disconnected" } = props; const { palette } = theme; const colorsMap: Record = { processing: palette.info.main, connected: palette.success.main, disconnected: palette.action.disabled, connecting: palette.info.main, disconnecting: palette.info.main, }; const pending = ["processing", "connecting", "disconnecting"].includes(status); const connected = status === "connected"; const disconnected = status === "disconnected"; return ( {pending && } {connected && ( )} {disconnected && ( )} {statusTextMap[status]} ); }