import { lazy, Suspense } from "react"; import { __unsafe_useI18n as useI18n } from "./i18n"; import type { KcContext } from "./kcContext/KcContext"; import type { PageProps } from "keycloakify/pages/PageProps"; import type { I18nBase } from "./i18n"; import type { SetOptional } from "./tools/SetOptional"; const DefaultTemplate = lazy(() => import("keycloakify/Template")); const Login = lazy(() => import("keycloakify/pages/Login")); const Register = lazy(() => import("keycloakify/pages/Register")); const RegisterUserProfile = lazy(() => import("keycloakify/pages/RegisterUserProfile")); const Info = lazy(() => import("keycloakify/pages/Info")); const Error = lazy(() => import("keycloakify/pages/Error")); const LoginResetPassword = lazy(() => import("keycloakify/pages/LoginResetPassword")); const LoginVerifyEmail = lazy(() => import("keycloakify/pages/LoginVerifyEmail")); const Terms = lazy(() => import("keycloakify/pages/Terms")); const LoginOtp = lazy(() => import("keycloakify/pages/LoginOtp")); const LoginPassword = lazy(() => import("keycloakify/pages/LoginPassword")); const LoginUsername = lazy(() => import("keycloakify/pages/LoginUsername")); const WebauthnAuthenticate = lazy(() => import("keycloakify/pages/WebauthnAuthenticate")); const LoginUpdatePassword = lazy(() => import("keycloakify/pages/LoginUpdatePassword")); const LoginUpdateProfile = lazy(() => import("keycloakify/pages/LoginUpdateProfile")); const LoginIdpLinkConfirm = lazy(() => import("keycloakify/pages/LoginIdpLinkConfirm")); const LoginPageExpired = lazy(() => import("keycloakify/pages/LoginPageExpired")); const LoginIdpLinkEmail = lazy(() => import("keycloakify/pages/LoginIdpLinkEmail")); const LoginConfigTotp = lazy(() => import("keycloakify/pages/LoginConfigTotp")); const LogoutConfirm = lazy(() => import("keycloakify/pages/LogoutConfirm")); const UpdateUserProfile = lazy(() => import("keycloakify/pages/UpdateUserProfile")); const IdpReviewUserProfile = lazy(() => import("keycloakify/pages/IdpReviewUserProfile")); export default function KcApp(props_: SetOptional, "Template">) { const { kcContext, i18n: userProvidedI18n, Template = DefaultTemplate, ...kcProps } = props_; const i18n = (function useClosure() { const i18n = useI18n({ kcContext, "extraMessages": {}, "doSkip": userProvidedI18n !== undefined }); return userProvidedI18n ?? i18n; })(); if (i18n === null) { return null; } const commonProps = { i18n, Template, ...kcProps }; return ( {(() => { switch (kcContext.pageId) { case "login.ftl": return ; case "register.ftl": return ; case "register-user-profile.ftl": return ; case "info.ftl": return ; case "error.ftl": return ; case "login-reset-password.ftl": return ; case "login-verify-email.ftl": return ; case "terms.ftl": return ; case "login-otp.ftl": return ; case "login-username.ftl": return ; case "login-password.ftl": return ; case "webauthn-authenticate.ftl": return ; case "login-update-password.ftl": return ; case "login-update-profile.ftl": return ; case "login-idp-link-confirm.ftl": return ; case "login-idp-link-email.ftl": return ; case "login-page-expired.ftl": return ; case "login-config-totp.ftl": return ; case "logout-confirm.ftl": return ; case "update-user-profile.ftl": return ; case "idp-review-user-profile.ftl": return ; } })()} ); }