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 SignedOutPage from "./components/SignedOutPage"; 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 "SignedOut": 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}