import { assert } from "keycloakify/tools/assert"; import { clsx } from "keycloakify/tools/clsx"; import { usePrepareTemplate } from "keycloakify/lib/usePrepareTemplate"; import { type TemplateProps, defaultTemplateClasses } from "keycloakify/TemplateProps"; import { useGetClassName } from "keycloakify/lib/useGetClassName"; type KcContext = import("./kcContext/KcContextBase").KcContextBase.Common; import type { I18nBase as I18n } from "./i18n"; export default function Template(props: TemplateProps) { const { displayInfo = false, displayMessage = true, displayRequiredFields = false, displayWide = false, showAnotherWayIfPresent = true, headerNode, showUsernameNode = null, formNode, infoNode = null, kcContext, i18n, doUseDefaultCss, classes } = props; const { getClassName } = useGetClassName({ "defaultClasses": !doUseDefaultCss ? undefined : defaultTemplateClasses, classes }); const { msg, changeLocale, labelBySupportedLanguageTag, currentLanguageTag } = i18n; const { realm, locale, auth, url, message, isAppInitiatedAction } = kcContext; const { isReady } = usePrepareTemplate({ "doFetchDefaultThemeResources": doUseDefaultCss, url, "stylesCommon": [ "node_modules/patternfly/dist/css/patternfly.min.css", "node_modules/patternfly/dist/css/patternfly-additions.min.css", "lib/zocial/zocial.css" ], "styles": ["css/login.css"], "htmlClassName": getClassName("kcHtmlClass") }); if (!isReady) { return null; } return (
{msg("loginTitleHtml", realm.displayNameHtml)}
{realm.internationalizationEnabled && (assert(locale !== undefined), true) && locale.supported.length > 1 && (
{/* eslint-disable-next-line jsx-a11y/anchor-is-valid */} {labelBySupportedLanguageTag[currentLanguageTag]}
)} {!(auth !== undefined && auth.showUsername && !auth.showResetCredentials) ? ( displayRequiredFields ? (
* {msg("requiredFields")}

{headerNode}

) : (

{headerNode}

) ) : displayRequiredFields ? (
* {msg("requiredFields")}
{showUsernameNode}
{msg("restartLoginTooltip")}
) : ( <> {showUsernameNode}
{msg("restartLoginTooltip")}
)}
{/* App-initiated actions should not see warning messages about the need to complete the action during login. */} {displayMessage && message !== undefined && (message.type !== "warning" || !isAppInitiatedAction) && (
{message.type === "success" && } {message.type === "warning" && } {message.type === "error" && } {message.type === "info" && }
)} {formNode} {auth !== undefined && auth.showTryAnotherWayLink && showAnotherWayIfPresent && (
)} {displayInfo && (
{infoNode}
)}
); }