import { Tab, TabList, makeStyles, typographyStyles, } from "@fluentui/react-components"; import { AppsListDetailFilled, AppsListDetailRegular, DesktopFilled, DesktopRegular, InfoFilled, InfoRegular, bundleIcon, } from "@fluentui/react-icons"; import React from "react"; import { Rights, ServerApi } from "./api/ServerApi"; import { AuthRouteWidget } from "./routes/AuthRouteWidget"; import { AsyncWidget } from "./widgets/AsyncWidget"; import { MainMenu } from "./widgets/MainMenu"; import { SystemInfoWidget } from "./widgets/SystemInfoWidget"; import { VirtualMachinesWidget } from "./widgets/VirtualMachinesWidget"; import { GroupsWidget } from "./widgets/GroupsWidget"; const useStyles = makeStyles({ title: typographyStyles.title2, }); const InfoIcon = bundleIcon(InfoFilled, InfoRegular); const DesktopIcon = bundleIcon(DesktopFilled, DesktopRegular); const AppListIcon = bundleIcon(AppsListDetailFilled, AppsListDetailRegular); export function App() { return ( } /> ); } function AppInner(): React.ReactElement { if (!ServerApi.Config.authenticated && !ServerApi.Config.disable_auth) return ; return ; } function AuthenticatedApp(): React.ReactElement { const styles = useStyles(); const [tab, setTab] = React.useState<"group" | "vm" | "info">("group"); const [rights, setRights] = React.useState(); const load = async () => { const rights = await ServerApi.GetRights(); setRights(rights); if (rights!.groups.length > 0) setTab("group"); else if (rights!.vms.length > 0) setTab("vm"); else setTab("info"); }; return ( { return (
VirtWebRemote
setTab(d.value as any)} > {rights!.groups.length > 0 && ( }> Groups )} {rights!.vms.length > 0 && ( }> Virtual machines )} {rights!.sys_info && ( }> System info )}
{tab === "group" && } {tab === "vm" && } {tab === "info" && }
); }} /> ); }