import type { ClassKey } from "keycloakify/login/TemplateProps"; import { useRerenderOnStateChange } from "evt/hooks"; import { Markdown } from "keycloakify/tools/Markdown"; import { evtTermMarkdown } from "keycloakify/login/lib/useDownloadTerms"; import type { KcContext } from "keycloakify/login/kcContext/KcContext"; import type { I18n } from "./i18n"; export type PropsOfTermsAcceptance = { kcContext: KcContextLike; i18n: I18n; getClassName: (classKey: ClassKey) => string; }; type KcContextLike = { termsAcceptanceRequired?: boolean; messagesPerField: Pick; }; export function TermsAcceptance(props: PropsOfTermsAcceptance) { const { kcContext: { termsAcceptanceRequired = false } } = props; if (!termsAcceptanceRequired) { return null; } return ; } export function TermsAcceptanceEnabled(props: PropsOfTermsAcceptance) { const { i18n, getClassName, kcContext: { messagesPerField } } = props; const { msg } = i18n; useRerenderOnStateChange(evtTermMarkdown); const termMarkdown = evtTermMarkdown.state; if (termMarkdown === undefined) { return null; } return ( <>
{msg("termsTitle")}
{termMarkdown}
{messagesPerField.existsError("termsAccepted") && (
{messagesPerField.get("termsAccepted")}
)}
); }