179 lines
7.7 KiB
TypeScript
179 lines
7.7 KiB
TypeScript
import { allPropertiesValuesToUndefined } from "../tools/allPropertiesValuesToUndefined";
|
|
import { assert } from "tsafe/assert";
|
|
import type { I18nBase } from "../i18n";
|
|
import type { ThemeType } from "../bin/keycloakify/generateFtl";
|
|
import type { Equals } from "tsafe";
|
|
import type { LoginThemeTemplateProps } from "../templates/LoginThemeTemplate";
|
|
|
|
export namespace KcProps {
|
|
export type Login = KcPropsGeneric<
|
|
| KcTemplateClassKey.Login
|
|
| "kcLogoLink"
|
|
| "kcLogoClass"
|
|
| "kcContainerClass"
|
|
| "kcContentClass"
|
|
| "kcFeedbackAreaClass"
|
|
| "kcLocaleClass"
|
|
| "kcAlertIconClasserror"
|
|
| "kcFormAreaClass"
|
|
| "kcFormSocialAccountListClass"
|
|
| "kcFormSocialAccountDoubleListClass"
|
|
| "kcFormSocialAccountListLinkClass"
|
|
| "kcWebAuthnKeyIcon"
|
|
| "kcWebAuthnDefaultIcon"
|
|
| "kcFormClass"
|
|
| "kcFormGroupErrorClass"
|
|
| "kcLabelClass"
|
|
| "kcInputClass"
|
|
| "kcInputErrorMessageClass"
|
|
| "kcInputWrapperClass"
|
|
| "kcFormOptionsClass"
|
|
| "kcFormButtonsClass"
|
|
| "kcFormSettingClass"
|
|
| "kcTextareaClass"
|
|
| "kcInfoAreaClass"
|
|
| "kcFormGroupHeader"
|
|
| "kcButtonClass"
|
|
| "kcButtonPrimaryClass"
|
|
| "kcButtonDefaultClass"
|
|
| "kcButtonLargeClass"
|
|
| "kcButtonBlockClass"
|
|
| "kcInputLargeClass"
|
|
| "kcSrOnlyClass"
|
|
| "kcSelectAuthListClass"
|
|
| "kcSelectAuthListItemClass"
|
|
| "kcSelectAuthListItemFillClass"
|
|
| "kcSelectAuthListItemInfoClass"
|
|
| "kcSelectAuthListItemLeftClass"
|
|
| "kcSelectAuthListItemBodyClass"
|
|
| "kcSelectAuthListItemDescriptionClass"
|
|
| "kcSelectAuthListItemHeadingClass"
|
|
| "kcSelectAuthListItemHelpTextClass"
|
|
| "kcSelectAuthListItemIconPropertyClass"
|
|
| "kcSelectAuthListItemIconClass"
|
|
| "kcSelectAuthListItemTitle"
|
|
| "kcAuthenticatorDefaultClass"
|
|
| "kcAuthenticatorPasswordClass"
|
|
| "kcAuthenticatorOTPClass"
|
|
| "kcAuthenticatorWebAuthnClass"
|
|
| "kcAuthenticatorWebAuthnPasswordlessClass"
|
|
| "kcSelectOTPListClass"
|
|
| "kcSelectOTPListItemClass"
|
|
| "kcAuthenticatorOtpCircleClass"
|
|
| "kcSelectOTPItemHeadingClass"
|
|
| "kcFormOptionsWrapperClass"
|
|
>;
|
|
|
|
export type Account = KcPropsGeneric<KcTemplateClassKey.Account>;
|
|
}
|
|
|
|
export const defaultKcProps = {
|
|
"login": {
|
|
...defaultKcTemplateProps.login,
|
|
"kcLogoLink": "http://www.keycloak.org",
|
|
"kcLogoClass": "login-pf-brand",
|
|
"kcContainerClass": "container-fluid",
|
|
"kcContentClass": ["col-sm-8", "col-sm-offset-2", "col-md-6", "col-md-offset-3", "col-lg-6", "col-lg-offset-3"],
|
|
"kcFeedbackAreaClass": ["col-md-12"],
|
|
"kcLocaleClass": ["col-xs-12", "col-sm-1"],
|
|
"kcAlertIconClasserror": ["pficon", "pficon-error-circle-o"],
|
|
|
|
"kcFormAreaClass": ["col-sm-10", "col-sm-offset-1", "col-md-8", "col-md-offset-2", "col-lg-8", "col-lg-offset-2"],
|
|
"kcFormSocialAccountListClass": ["login-pf-social", "list-unstyled", "login-pf-social-all"],
|
|
"kcFormSocialAccountDoubleListClass": ["login-pf-social-double-col"],
|
|
"kcFormSocialAccountListLinkClass": ["login-pf-social-link"],
|
|
"kcWebAuthnKeyIcon": ["pficon", "pficon-key"],
|
|
"kcWebAuthnDefaultIcon": ["pficon", "pficon-key"],
|
|
|
|
"kcFormClass": ["form-horizontal"],
|
|
"kcFormGroupErrorClass": ["has-error"],
|
|
"kcLabelClass": ["control-label"],
|
|
"kcInputClass": ["form-control"],
|
|
"kcInputErrorMessageClass": ["pf-c-form__helper-text", "pf-m-error", "required", "kc-feedback-text"],
|
|
"kcInputWrapperClass": ["col-xs-12", "col-sm-12", "col-md-12", "col-lg-12"],
|
|
"kcFormOptionsClass": ["col-xs-12", "col-sm-12", "col-md-12", "col-lg-12"],
|
|
"kcFormButtonsClass": ["col-xs-12", "col-sm-12", "col-md-12", "col-lg-12"],
|
|
"kcFormSettingClass": ["login-pf-settings"],
|
|
"kcTextareaClass": ["form-control"],
|
|
|
|
"kcInfoAreaClass": ["col-xs-12", "col-sm-4", "col-md-4", "col-lg-5", "details"],
|
|
|
|
// user-profile grouping
|
|
"kcFormGroupHeader": ["pf-c-form__group"],
|
|
|
|
// css classes for form buttons main class used for all buttons
|
|
"kcButtonClass": ["btn"],
|
|
// classes defining priority of the button - primary or default (there is typically only one priority button for the form)
|
|
"kcButtonPrimaryClass": ["btn-primary"],
|
|
"kcButtonDefaultClass": ["btn-default"],
|
|
// classes defining size of the button
|
|
"kcButtonLargeClass": ["btn-lg"],
|
|
"kcButtonBlockClass": ["btn-block"],
|
|
|
|
// css classes for input
|
|
"kcInputLargeClass": ["input-lg"],
|
|
|
|
// css classes for form accessability
|
|
"kcSrOnlyClass": ["sr-only"],
|
|
|
|
// css classes for select-authenticator form
|
|
"kcSelectAuthListClass": ["list-group", "list-view-pf"],
|
|
"kcSelectAuthListItemClass": ["list-group-item", "list-view-pf-stacked"],
|
|
"kcSelectAuthListItemFillClass": ["pf-l-split__item", "pf-m-fill"],
|
|
"kcSelectAuthListItemIconPropertyClass": ["fa-2x", "select-auth-box-icon-properties"],
|
|
"kcSelectAuthListItemIconClass": ["pf-l-split__item", "select-auth-box-icon"],
|
|
"kcSelectAuthListItemTitle": ["select-auth-box-paragraph"],
|
|
"kcSelectAuthListItemInfoClass": ["list-view-pf-main-info"],
|
|
"kcSelectAuthListItemLeftClass": ["list-view-pf-left"],
|
|
"kcSelectAuthListItemBodyClass": ["list-view-pf-body"],
|
|
"kcSelectAuthListItemDescriptionClass": ["list-view-pf-description"],
|
|
"kcSelectAuthListItemHeadingClass": ["list-group-item-heading"],
|
|
"kcSelectAuthListItemHelpTextClass": ["list-group-item-text"],
|
|
|
|
// css classes for the authenticators
|
|
"kcAuthenticatorDefaultClass": ["fa", "list-view-pf-icon-lg"],
|
|
"kcAuthenticatorPasswordClass": ["fa", "fa-unlock list-view-pf-icon-lg"],
|
|
"kcAuthenticatorOTPClass": ["fa", "fa-mobile", "list-view-pf-icon-lg"],
|
|
"kcAuthenticatorWebAuthnClass": ["fa", "fa-key", "list-view-pf-icon-lg"],
|
|
"kcAuthenticatorWebAuthnPasswordlessClass": ["fa", "fa-key", "list-view-pf-icon-lg"],
|
|
|
|
//css classes for the OTP Login Form
|
|
"kcSelectOTPListClass": ["card-pf", "card-pf-view", "card-pf-view-select", "card-pf-view-single-select"],
|
|
"kcSelectOTPListItemClass": ["card-pf-body", "card-pf-top-element"],
|
|
"kcAuthenticatorOtpCircleClass": ["fa", "fa-mobile", "card-pf-icon-circle"],
|
|
"kcSelectOTPItemHeadingClass": ["card-pf-title", "text-center"],
|
|
"kcFormOptionsWrapperClass": []
|
|
},
|
|
"account": {
|
|
...defaultKcTemplateProps.account
|
|
}
|
|
};
|
|
|
|
assert<Equals<keyof typeof defaultKcProps, ThemeType>>();
|
|
assert<typeof defaultKcProps.login extends KcProps.Login ? true : false>();
|
|
assert<typeof defaultKcProps.account extends KcProps.Account ? true : false>();
|
|
|
|
/** To use if you don't want any default */
|
|
export const allClearKcProps = {
|
|
"login": allPropertiesValuesToUndefined(defaultKcProps.login),
|
|
"account": allPropertiesValuesToUndefined(defaultKcProps.account)
|
|
};
|
|
|
|
assert<Equals<keyof typeof allClearKcProps, ThemeType>>();
|
|
|
|
export namespace PageProps {
|
|
export type Login<KcContext, I18n extends I18nBase> = {
|
|
kcContext: KcContext;
|
|
i18n: I18n;
|
|
doFetchDefaultThemeResources?: boolean;
|
|
LoginThemeTemplate: (props: LoginThemeTemplateProps<any, any>) => JSX.Element | null;
|
|
} & KcProps.Login;
|
|
|
|
export type Account<KcContext, I18n extends I18nBase> = {
|
|
kcContext: KcContext;
|
|
i18n: I18n;
|
|
doFetchDefaultThemeResources?: boolean;
|
|
AccountThemeTemplate: (props: LoginThemeTemplateProps<any, any>) => JSX.Element | null;
|
|
} & KcProps.Account;
|
|
}
|