import Box from "@mui/material/Box"; import CssBaseline from "@mui/material/CssBaseline"; import { ThemeProvider } from "@mui/material/styles"; import React, {FC, useLayoutEffect} from "react"; import ErrorPage from "./components/ErrorPage"; import Footer from "./components/Footer"; import Header from "./components/Header"; import SignOutConfirmPage from "./components/SignOutConfirmPage"; import { ToolbarOffset } from "./components/ToolbarOffset"; import UserInfoPage from "./components/UserInfoPage"; import WebAuthnRegistrationPage from "./components/WebAuthnRegistrationPage"; import { SubpageContextProvider } from "./context/Subpage"; import { createTheme } from "./theme"; import { PageData } from "./types"; const App: FC = () => { const data = (window["POMERIUM_DATA"] || {}) as PageData; const primary = data?.primaryColor || "#6F43E7"; const secondary = data?.secondaryColor || "#49AAA1"; const theme = createTheme(primary, secondary); let body: React.ReactNode = <>; switch (data?.page) { case "Error": body = ; break; case "SignOutConfirm": body = ; break; case "DeviceEnrolled": case "UserInfo": body = ; break; case "WebAuthnRegistration": body = ; break; } useLayoutEffect(() => { const favicon = document.getElementById( 'favicon' ) as HTMLAnchorElement | null; if (favicon) { favicon.href = data?.faviconUrl || '/.pomerium/favicon.ico'; } const extraFaviconLinks = document.getElementsByClassName( 'pomerium_favicon' ) as HTMLCollectionOf | null; for (const link of extraFaviconLinks) { link.style.display = data?.faviconUrl ? 'none' : ''; } }, []) return (
{body}