keycloakify 10.0.0-rc.36 → 10.0.0-rc.38
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/account/Fallback.d.ts +1 -2
- package/account/Fallback.js.map +1 -1
- package/account/KcContext/KcContext.d.ts +6 -6
- package/account/KcContext/getKcContextMock.d.ts +9 -9
- package/account/KcContext/getKcContextMock.js +3 -3
- package/account/KcContext/getKcContextMock.js.map +1 -1
- package/account/Template.d.ts +1 -2
- package/account/Template.js +7 -6
- package/account/Template.js.map +1 -1
- package/account/TemplateProps.d.ts +1 -3
- package/account/i18n/i18n.d.ts +9 -4
- package/account/i18n/i18n.js +132 -87
- package/account/i18n/i18n.js.map +1 -1
- package/account/i18n/index.d.ts +9 -2
- package/account/i18n/index.js +5 -1
- package/account/i18n/index.js.map +1 -1
- package/account/index.d.ts +1 -1
- package/account/lib/kcClsx.d.ts +9 -0
- package/account/lib/{useGetClassName.js → kcClsx.js} +3 -3
- package/account/lib/kcClsx.js.map +1 -0
- package/account/pages/Account.d.ts +1 -2
- package/account/pages/Account.js +9 -7
- package/account/pages/Account.js.map +1 -1
- package/account/pages/Applications.d.ts +1 -2
- package/account/pages/Applications.js +7 -7
- package/account/pages/Applications.js.map +1 -1
- package/account/pages/FederatedIdentity.d.ts +1 -2
- package/account/pages/FederatedIdentity.js +4 -3
- package/account/pages/FederatedIdentity.js.map +1 -1
- package/account/pages/Log.d.ts +1 -2
- package/account/pages/Log.js +6 -5
- package/account/pages/Log.js.map +1 -1
- package/account/pages/PageProps.d.ts +2 -4
- package/account/pages/Password.d.ts +1 -2
- package/account/pages/Password.js +10 -9
- package/account/pages/Password.js.map +1 -1
- package/account/pages/Sessions.d.ts +1 -2
- package/account/pages/Sessions.js +6 -6
- package/account/pages/Sessions.js.map +1 -1
- package/account/pages/Totp.d.ts +1 -2
- package/account/pages/Totp.js +6 -5
- package/account/pages/Totp.js.map +1 -1
- package/bin/{314.index.js → 21.index.js} +162 -4
- package/bin/{430.index.js → 214.index.js} +161 -2
- package/bin/3.index.js +81 -65
- package/bin/526.index.js +3 -2
- package/bin/538.index.js +552 -0
- package/bin/795.index.js +3 -2
- package/bin/{890.index.js → 941.index.js} +2 -159
- package/bin/main.js +19 -7
- package/lib/getKcClsx.d.ts +11 -0
- package/lib/getKcClsx.js +44 -0
- package/lib/getKcClsx.js.map +1 -0
- package/login/Fallback.d.ts +1 -2
- package/login/Fallback.js.map +1 -1
- package/login/KcContext/KcContext.d.ts +6 -6
- package/login/KcContext/getKcContextMock.d.ts +9 -9
- package/login/KcContext/getKcContextMock.js +3 -3
- package/login/KcContext/getKcContextMock.js.map +1 -1
- package/login/Template.d.ts +1 -2
- package/login/Template.js +10 -9
- package/login/Template.js.map +1 -1
- package/login/TemplateProps.d.ts +1 -3
- package/login/UserProfileFormFields.d.ts +5 -5
- package/login/UserProfileFormFields.js +35 -34
- package/login/UserProfileFormFields.js.map +1 -1
- package/login/i18n/i18n.d.ts +9 -4
- package/login/i18n/i18n.js +136 -91
- package/login/i18n/i18n.js.map +1 -1
- package/login/i18n/index.d.ts +9 -2
- package/login/i18n/index.js +5 -1
- package/login/i18n/index.js.map +1 -1
- package/login/index.d.ts +1 -1
- package/login/lib/kcClsx.d.ts +9 -0
- package/login/lib/{useGetClassName.js → kcClsx.js} +3 -3
- package/login/lib/kcClsx.js.map +1 -0
- package/login/lib/useUserProfileForm.d.ts +9 -6
- package/login/lib/useUserProfileForm.js +7 -5
- package/login/lib/useUserProfileForm.js.map +1 -1
- package/login/pages/Code.d.ts +1 -2
- package/login/pages/Code.js +6 -5
- package/login/pages/Code.js.map +1 -1
- package/login/pages/DeleteAccountConfirm.d.ts +1 -2
- package/login/pages/DeleteAccountConfirm.js +7 -7
- package/login/pages/DeleteAccountConfirm.js.map +1 -1
- package/login/pages/DeleteCredential.d.ts +1 -2
- package/login/pages/DeleteCredential.js +6 -6
- package/login/pages/DeleteCredential.js.map +1 -1
- package/login/pages/Error.d.ts +1 -2
- package/login/pages/Error.js +4 -3
- package/login/pages/Error.js.map +1 -1
- package/login/pages/FrontchannelLogout.d.ts +1 -2
- package/login/pages/FrontchannelLogout.js +4 -3
- package/login/pages/FrontchannelLogout.js.map +1 -1
- package/login/pages/IdpReviewUserProfile.d.ts +1 -2
- package/login/pages/IdpReviewUserProfile.js +6 -6
- package/login/pages/IdpReviewUserProfile.js.map +1 -1
- package/login/pages/Info.d.ts +1 -2
- package/login/pages/Info.js +4 -3
- package/login/pages/Info.js.map +1 -1
- package/login/pages/Login.d.ts +1 -2
- package/login/pages/Login.js +10 -8
- package/login/pages/Login.js.map +1 -1
- package/login/pages/LoginConfigTotp.d.ts +1 -2
- package/login/pages/LoginConfigTotp.js +8 -7
- package/login/pages/LoginConfigTotp.js.map +1 -1
- package/login/pages/LoginIdpLinkConfirm.d.ts +1 -2
- package/login/pages/LoginIdpLinkConfirm.js +6 -6
- package/login/pages/LoginIdpLinkConfirm.js.map +1 -1
- package/login/pages/LoginIdpLinkEmail.d.ts +1 -2
- package/login/pages/LoginIdpLinkEmail.js +4 -3
- package/login/pages/LoginIdpLinkEmail.js.map +1 -1
- package/login/pages/LoginOauth2DeviceVerifyUserCode.d.ts +1 -2
- package/login/pages/LoginOauth2DeviceVerifyUserCode.js +6 -6
- package/login/pages/LoginOauth2DeviceVerifyUserCode.js.map +1 -1
- package/login/pages/LoginOauthGrant.d.ts +1 -2
- package/login/pages/LoginOauthGrant.js +7 -7
- package/login/pages/LoginOauthGrant.js.map +1 -1
- package/login/pages/LoginOtp.d.ts +1 -2
- package/login/pages/LoginOtp.js +6 -6
- package/login/pages/LoginOtp.js.map +1 -1
- package/login/pages/LoginPageExpired.d.ts +1 -2
- package/login/pages/LoginPageExpired.js +4 -3
- package/login/pages/LoginPageExpired.js.map +1 -1
- package/login/pages/LoginPassword.d.ts +1 -2
- package/login/pages/LoginPassword.js +9 -7
- package/login/pages/LoginPassword.js.map +1 -1
- package/login/pages/LoginRecoveryAuthnCodeConfig.d.ts +1 -2
- package/login/pages/LoginRecoveryAuthnCodeConfig.js +9 -7
- package/login/pages/LoginRecoveryAuthnCodeConfig.js.map +1 -1
- package/login/pages/LoginRecoveryAuthnCodeInput.d.ts +1 -2
- package/login/pages/LoginRecoveryAuthnCodeInput.js +6 -6
- package/login/pages/LoginRecoveryAuthnCodeInput.js.map +1 -1
- package/login/pages/LoginResetOtp.d.ts +1 -2
- package/login/pages/LoginResetOtp.js +6 -6
- package/login/pages/LoginResetOtp.js.map +1 -1
- package/login/pages/LoginResetPassword.d.ts +1 -2
- package/login/pages/LoginResetPassword.js +7 -7
- package/login/pages/LoginResetPassword.js.map +1 -1
- package/login/pages/LoginUpdatePassword.d.ts +1 -2
- package/login/pages/LoginUpdatePassword.js +10 -9
- package/login/pages/LoginUpdatePassword.js.map +1 -1
- package/login/pages/LoginUpdateProfile.d.ts +1 -2
- package/login/pages/LoginUpdateProfile.js +7 -12
- package/login/pages/LoginUpdateProfile.js.map +1 -1
- package/login/pages/LoginUsername.d.ts +1 -2
- package/login/pages/LoginUsername.js +8 -7
- package/login/pages/LoginUsername.js.map +1 -1
- package/login/pages/LoginVerifyEmail.d.ts +1 -2
- package/login/pages/LoginVerifyEmail.js +4 -3
- package/login/pages/LoginVerifyEmail.js.map +1 -1
- package/login/pages/LoginX509Info.d.ts +1 -2
- package/login/pages/LoginX509Info.js +6 -6
- package/login/pages/LoginX509Info.js.map +1 -1
- package/login/pages/LogoutConfirm.d.ts +1 -2
- package/login/pages/LogoutConfirm.js +6 -6
- package/login/pages/LogoutConfirm.js.map +1 -1
- package/login/pages/PageProps.d.ts +2 -4
- package/login/pages/Register.d.ts +1 -2
- package/login/pages/Register.js +8 -16
- package/login/pages/Register.js.map +1 -1
- package/login/pages/SamlPostForm.d.ts +1 -2
- package/login/pages/SamlPostForm.js +4 -3
- package/login/pages/SamlPostForm.js.map +1 -1
- package/login/pages/SelectAuthenticator.d.ts +1 -2
- package/login/pages/SelectAuthenticator.js +6 -9
- package/login/pages/SelectAuthenticator.js.map +1 -1
- package/login/pages/Terms.d.ts +1 -2
- package/login/pages/Terms.js +7 -7
- package/login/pages/Terms.js.map +1 -1
- package/login/pages/UpdateEmail.d.ts +1 -2
- package/login/pages/UpdateEmail.js +8 -12
- package/login/pages/UpdateEmail.js.map +1 -1
- package/login/pages/WebauthnAuthenticate.d.ts +1 -2
- package/login/pages/WebauthnAuthenticate.js +13 -12
- package/login/pages/WebauthnAuthenticate.js.map +1 -1
- package/login/pages/WebauthnError.d.ts +1 -2
- package/login/pages/WebauthnError.js +7 -7
- package/login/pages/WebauthnError.js.map +1 -1
- package/login/pages/WebauthnRegister.d.ts +1 -2
- package/login/pages/WebauthnRegister.js +9 -8
- package/login/pages/WebauthnRegister.js.map +1 -1
- package/package.json +24 -16
- package/src/account/Fallback.tsx +1 -2
- package/src/account/KcContext/KcContext.ts +7 -7
- package/src/account/KcContext/getKcContextMock.ts +13 -24
- package/src/account/Template.tsx +8 -8
- package/src/account/TemplateProps.ts +1 -6
- package/src/account/i18n/i18n.tsx +204 -125
- package/src/account/i18n/index.ts +10 -2
- package/src/account/index.ts +1 -1
- package/src/account/lib/{useGetClassName.ts → kcClsx.ts} +6 -2
- package/src/account/pages/Account.tsx +15 -21
- package/src/account/pages/Applications.tsx +8 -9
- package/src/account/pages/FederatedIdentity.tsx +5 -5
- package/src/account/pages/Log.tsx +8 -8
- package/src/account/pages/PageProps.ts +2 -4
- package/src/account/pages/Password.tsx +13 -16
- package/src/account/pages/Sessions.tsx +9 -10
- package/src/account/pages/Totp.tsx +19 -28
- package/src/bin/keycloakify/generateSrcMainResources/generateMessageProperties.ts +2 -66
- package/src/bin/keycloakify/generateSrcMainResources/generateSrcMainResourcesForMainTheme.ts +7 -1
- package/src/bin/main.ts +15 -0
- package/src/bin/shared/buildOptions.ts +5 -2
- package/src/bin/shared/generateKcGenTs.ts +61 -0
- package/src/bin/tools/escapeStringForPropertiesFile.ts +64 -0
- package/src/bin/update-kc-gen.ts +13 -0
- package/src/lib/getKcClsx.ts +75 -0
- package/src/login/Fallback.tsx +1 -2
- package/src/login/KcContext/KcContext.ts +7 -7
- package/src/login/KcContext/getKcContextMock.ts +13 -24
- package/src/login/Template.tsx +36 -37
- package/src/login/TemplateProps.ts +1 -6
- package/src/login/UserProfileFormFields.tsx +66 -81
- package/src/login/i18n/i18n.tsx +208 -129
- package/src/login/i18n/index.ts +10 -2
- package/src/login/index.ts +1 -1
- package/src/login/lib/{useGetClassName.ts → kcClsx.ts} +6 -2
- package/src/login/lib/useUserProfileForm.tsx +29 -21
- package/src/login/pages/Code.tsx +10 -8
- package/src/login/pages/DeleteAccountConfirm.tsx +9 -10
- package/src/login/pages/DeleteCredential.tsx +11 -10
- package/src/login/pages/Error.tsx +5 -5
- package/src/login/pages/FrontchannelLogout.tsx +7 -5
- package/src/login/pages/IdpReviewUserProfile.tsx +16 -25
- package/src/login/pages/Info.tsx +7 -5
- package/src/login/pages/Login.tsx +34 -53
- package/src/login/pages/LoginConfigTotp.tsx +30 -38
- package/src/login/pages/LoginIdpLinkConfirm.tsx +10 -21
- package/src/login/pages/LoginIdpLinkEmail.tsx +5 -5
- package/src/login/pages/LoginOauth2DeviceVerifyUserCode.tsx +19 -24
- package/src/login/pages/LoginOauthGrant.tsx +14 -21
- package/src/login/pages/LoginOtp.tsx +29 -33
- package/src/login/pages/LoginPageExpired.tsx +5 -5
- package/src/login/pages/LoginPassword.tsx +23 -33
- package/src/login/pages/LoginRecoveryAuthnCodeConfig.tsx +21 -25
- package/src/login/pages/LoginRecoveryAuthnCodeInput.tsx +21 -25
- package/src/login/pages/LoginResetOtp.tsx +21 -25
- package/src/login/pages/LoginResetPassword.tsx +21 -25
- package/src/login/pages/LoginUpdatePassword.tsx +42 -52
- package/src/login/pages/LoginUpdateProfile.tsx +26 -33
- package/src/login/pages/LoginUsername.tsx +23 -35
- package/src/login/pages/LoginVerifyEmail.tsx +7 -5
- package/src/login/pages/LoginX509Info.tsx +27 -36
- package/src/login/pages/LogoutConfirm.tsx +11 -17
- package/src/login/pages/PageProps.ts +2 -4
- package/src/login/pages/Register.tsx +24 -49
- package/src/login/pages/SamlPostForm.tsx +5 -5
- package/src/login/pages/SelectAuthenticator.tsx +24 -26
- package/src/login/pages/Terms.tsx +11 -18
- package/src/login/pages/UpdateEmail.tsx +26 -36
- package/src/login/pages/WebauthnAuthenticate.tsx +26 -32
- package/src/login/pages/WebauthnError.tsx +11 -22
- package/src/login/pages/WebauthnRegister.tsx +20 -28
- package/src/tools/clsx.ts +6 -48
- package/src/tools/clsx_withTransform.ts +55 -0
- package/src/vite-plugin/vite-plugin.ts +14 -6
- package/tools/clsx.d.ts +3 -2
- package/tools/clsx.js +5 -41
- package/tools/clsx.js.map +1 -1
- package/tools/clsx_withTransform.d.ts +5 -0
- package/tools/clsx_withTransform.js +43 -0
- package/tools/clsx_withTransform.js.map +1 -0
- package/vite-plugin/index.js +167 -37
- package/account/lib/useGetClassName.d.ts +0 -7
- package/account/lib/useGetClassName.js.map +0 -1
- package/lib/useGetClassName.d.ts +0 -10
- package/lib/useGetClassName.js +0 -14
- package/lib/useGetClassName.js.map +0 -1
- package/login/lib/useGetClassName.d.ts +0 -7
- package/login/lib/useGetClassName.js.map +0 -1
- package/src/lib/useGetClassName.ts +0 -27
@@ -1,15 +1,14 @@
|
|
1
|
-
import {
|
2
|
-
import { useGetClassName } from "keycloakify/login/lib/useGetClassName";
|
1
|
+
import { getKcClsx } from "keycloakify/login/lib/kcClsx";
|
3
2
|
import type { PageProps } from "keycloakify/login/pages/PageProps";
|
4
3
|
import type { KcContext } from "../KcContext";
|
5
|
-
import
|
4
|
+
import { useI18n } from "../i18n";
|
6
5
|
|
7
|
-
export default function DeleteCredential(props: PageProps<Extract<KcContext, { pageId: "delete-credential.ftl" }
|
8
|
-
const { kcContext,
|
6
|
+
export default function DeleteCredential(props: PageProps<Extract<KcContext, { pageId: "delete-credential.ftl" }>>) {
|
7
|
+
const { kcContext, doUseDefaultCss, Template, classes } = props;
|
9
8
|
|
10
|
-
const { msgStr, msg } =
|
9
|
+
const { msgStr, msg } = useI18n({ kcContext });
|
11
10
|
|
12
|
-
const {
|
11
|
+
const { kcClsx } = getKcClsx({
|
13
12
|
doUseDefaultCss,
|
14
13
|
classes
|
15
14
|
});
|
@@ -18,21 +17,23 @@ export default function DeleteCredential(props: PageProps<Extract<KcContext, { p
|
|
18
17
|
|
19
18
|
return (
|
20
19
|
<Template
|
21
|
-
{
|
20
|
+
kcContext={kcContext}
|
21
|
+
doUseDefaultCss={doUseDefaultCss}
|
22
|
+
classes={classes}
|
22
23
|
displayMessage={false}
|
23
24
|
headerNode={msg("deleteCredentialTitle", credentialLabel)}
|
24
25
|
>
|
25
26
|
<div id="kc-delete-text">{msg("deleteCredentialMessage", credentialLabel)}</div>
|
26
27
|
<form className="form-actions" action={url.loginAction} method="POST">
|
27
28
|
<input
|
28
|
-
className={
|
29
|
+
className={kcClsx("kcButtonClass", "kcButtonPrimaryClass", "kcButtonLargeClass")}
|
29
30
|
name="accept"
|
30
31
|
id="kc-accept"
|
31
32
|
type="submit"
|
32
33
|
value={msgStr("doConfirmDelete")}
|
33
34
|
/>
|
34
35
|
<input
|
35
|
-
className={
|
36
|
+
className={kcClsx("kcButtonClass", "kcButtonDefaultClass", "kcButtonLargeClass")}
|
36
37
|
name="cancel-aia"
|
37
38
|
value={msgStr("doCancel")}
|
38
39
|
id="kc-decline"
|
@@ -1,16 +1,16 @@
|
|
1
1
|
import type { PageProps } from "keycloakify/login/pages/PageProps";
|
2
2
|
import type { KcContext } from "../KcContext";
|
3
|
-
import
|
3
|
+
import { useI18n } from "../i18n";
|
4
4
|
|
5
|
-
export default function Error(props: PageProps<Extract<KcContext, { pageId: "error.ftl" }
|
6
|
-
const { kcContext,
|
5
|
+
export default function Error(props: PageProps<Extract<KcContext, { pageId: "error.ftl" }>>) {
|
6
|
+
const { kcContext, doUseDefaultCss, Template, classes } = props;
|
7
7
|
|
8
8
|
const { message, client, skipLink } = kcContext;
|
9
9
|
|
10
|
-
const { msg } =
|
10
|
+
const { msg } = useI18n({ kcContext });
|
11
11
|
|
12
12
|
return (
|
13
|
-
<Template {
|
13
|
+
<Template kcContext={kcContext} doUseDefaultCss={doUseDefaultCss} classes={classes} displayMessage={false} headerNode={msg("errorTitle")}>
|
14
14
|
<div id="kc-error-message">
|
15
15
|
<p className="instruction">{message.summary}</p>
|
16
16
|
{!skipLink && client !== undefined && client.baseUrl !== undefined && (
|
@@ -1,14 +1,14 @@
|
|
1
1
|
import { useEffect } from "react";
|
2
2
|
import type { PageProps } from "keycloakify/login/pages/PageProps";
|
3
3
|
import type { KcContext } from "../KcContext";
|
4
|
-
import
|
4
|
+
import { useI18n } from "../i18n";
|
5
5
|
|
6
|
-
export default function FrontchannelLogout(props: PageProps<Extract<KcContext, { pageId: "frontchannel-logout.ftl" }
|
7
|
-
const { kcContext,
|
6
|
+
export default function FrontchannelLogout(props: PageProps<Extract<KcContext, { pageId: "frontchannel-logout.ftl" }>>) {
|
7
|
+
const { kcContext, doUseDefaultCss, Template, classes } = props;
|
8
8
|
|
9
9
|
const { logout } = kcContext;
|
10
10
|
|
11
|
-
const { msg, msgStr } =
|
11
|
+
const { msg, msgStr } = useI18n({ kcContext });
|
12
12
|
|
13
13
|
useEffect(() => {
|
14
14
|
if (logout.logoutRedirectUri) {
|
@@ -18,7 +18,9 @@ export default function FrontchannelLogout(props: PageProps<Extract<KcContext, {
|
|
18
18
|
|
19
19
|
return (
|
20
20
|
<Template
|
21
|
-
{
|
21
|
+
kcContext={kcContext}
|
22
|
+
doUseDefaultCss={doUseDefaultCss}
|
23
|
+
classes={classes}
|
22
24
|
documentTitle={msgStr("frontchannel-logout.title")}
|
23
25
|
headerNode={msg("frontchannel-logout.title")}
|
24
26
|
>
|
@@ -1,25 +1,24 @@
|
|
1
1
|
import { useState } from "react";
|
2
|
-
import { clsx } from "keycloakify/tools/clsx";
|
3
2
|
import type { LazyOrNot } from "keycloakify/tools/LazyOrNot";
|
4
|
-
import {
|
3
|
+
import { getKcClsx } from "keycloakify/login/lib/kcClsx";
|
5
4
|
import type { PageProps } from "keycloakify/login/pages/PageProps";
|
6
5
|
import type { UserProfileFormFieldsProps } from "keycloakify/login/UserProfileFormFields";
|
7
6
|
import type { KcContext } from "../KcContext";
|
8
|
-
import
|
7
|
+
import { useI18n } from "../i18n";
|
9
8
|
|
10
|
-
type IdpReviewUserProfileProps = PageProps<Extract<KcContext, { pageId: "idp-review-user-profile.ftl" }
|
9
|
+
type IdpReviewUserProfileProps = PageProps<Extract<KcContext, { pageId: "idp-review-user-profile.ftl" }>> & {
|
11
10
|
UserProfileFormFields: LazyOrNot<(props: UserProfileFormFieldsProps) => JSX.Element>;
|
12
11
|
};
|
13
12
|
|
14
13
|
export default function IdpReviewUserProfile(props: IdpReviewUserProfileProps) {
|
15
|
-
const { kcContext,
|
14
|
+
const { kcContext, doUseDefaultCss, Template, classes, UserProfileFormFields } = props;
|
16
15
|
|
17
|
-
const {
|
16
|
+
const { kcClsx } = getKcClsx({
|
18
17
|
doUseDefaultCss,
|
19
18
|
classes
|
20
19
|
});
|
21
20
|
|
22
|
-
const { msg, msgStr } =
|
21
|
+
const { msg, msgStr } = useI18n({ kcContext });
|
23
22
|
|
24
23
|
const { url, messagesPerField } = kcContext;
|
25
24
|
|
@@ -27,30 +26,22 @@ export default function IdpReviewUserProfile(props: IdpReviewUserProfileProps) {
|
|
27
26
|
|
28
27
|
return (
|
29
28
|
<Template
|
30
|
-
{
|
29
|
+
kcContext={kcContext}
|
30
|
+
doUseDefaultCss={doUseDefaultCss}
|
31
|
+
classes={classes}
|
31
32
|
displayMessage={messagesPerField.exists("global")}
|
32
33
|
displayRequiredFields
|
33
34
|
headerNode={msg("loginIdpReviewProfileTitle")}
|
34
35
|
>
|
35
|
-
<form id="kc-idp-review-profile-form" className={
|
36
|
-
<UserProfileFormFields
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
getClassName={getClassName}
|
41
|
-
/>
|
42
|
-
<div className={getClassName("kcFormGroupClass")}>
|
43
|
-
<div id="kc-form-options" className={getClassName("kcFormOptionsClass")}>
|
44
|
-
<div className={getClassName("kcFormOptionsWrapperClass")} />
|
36
|
+
<form id="kc-idp-review-profile-form" className={kcClsx("kcFormClass")} action={url.loginAction} method="post">
|
37
|
+
<UserProfileFormFields kcContext={kcContext} onIsFormSubmittableValueChange={setIsFomSubmittable} kcClsx={kcClsx} />
|
38
|
+
<div className={kcClsx("kcFormGroupClass")}>
|
39
|
+
<div id="kc-form-options" className={kcClsx("kcFormOptionsClass")}>
|
40
|
+
<div className={kcClsx("kcFormOptionsWrapperClass")} />
|
45
41
|
</div>
|
46
|
-
<div id="kc-form-buttons" className={
|
42
|
+
<div id="kc-form-buttons" className={kcClsx("kcFormButtonsClass")}>
|
47
43
|
<input
|
48
|
-
className={
|
49
|
-
getClassName("kcButtonClass"),
|
50
|
-
getClassName("kcButtonPrimaryClass"),
|
51
|
-
getClassName("kcButtonBlockClass"),
|
52
|
-
getClassName("kcButtonLargeClass")
|
53
|
-
)}
|
44
|
+
className={kcClsx("kcButtonClass", "kcButtonPrimaryClass", "kcButtonBlockClass", "kcButtonLargeClass")}
|
54
45
|
type="submit"
|
55
46
|
value={msgStr("doSubmit")}
|
56
47
|
disabled={!isFomSubmittable}
|
package/src/login/pages/Info.tsx
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
import { assert } from "keycloakify/tools/assert";
|
2
2
|
import type { PageProps } from "keycloakify/login/pages/PageProps";
|
3
3
|
import type { KcContext } from "../KcContext";
|
4
|
-
import
|
4
|
+
import { useI18n } from "../i18n";
|
5
5
|
|
6
|
-
export default function Info(props: PageProps<Extract<KcContext, { pageId: "info.ftl" }
|
7
|
-
const { kcContext,
|
6
|
+
export default function Info(props: PageProps<Extract<KcContext, { pageId: "info.ftl" }>>) {
|
7
|
+
const { kcContext, doUseDefaultCss, Template, classes } = props;
|
8
8
|
|
9
|
-
const { msgStr, msg } =
|
9
|
+
const { msgStr, msg } = useI18n({ kcContext });
|
10
10
|
|
11
11
|
assert(
|
12
12
|
kcContext.message !== undefined,
|
@@ -17,7 +17,9 @@ export default function Info(props: PageProps<Extract<KcContext, { pageId: "info
|
|
17
17
|
|
18
18
|
return (
|
19
19
|
<Template
|
20
|
-
{
|
20
|
+
kcContext={kcContext}
|
21
|
+
doUseDefaultCss={doUseDefaultCss}
|
22
|
+
classes={classes}
|
21
23
|
displayMessage={false}
|
22
24
|
headerNode={messageHeader !== undefined ? <>{messageHeader}</> : <>{message.summary}</>}
|
23
25
|
>
|
@@ -2,27 +2,30 @@ import { useState, useEffect, useReducer } from "react";
|
|
2
2
|
import { assert } from "tsafe/assert";
|
3
3
|
import { clsx } from "keycloakify/tools/clsx";
|
4
4
|
import type { PageProps } from "keycloakify/login/pages/PageProps";
|
5
|
-
import {
|
5
|
+
import { getKcClsx, type KcClsx } from "keycloakify/login/lib/kcClsx";
|
6
6
|
import type { KcContext } from "../KcContext";
|
7
|
-
import type
|
7
|
+
import { useI18n, type I18n } from "../i18n";
|
8
8
|
|
9
|
-
export default function Login(props: PageProps<Extract<KcContext, { pageId: "login.ftl" }
|
10
|
-
const { kcContext,
|
9
|
+
export default function Login(props: PageProps<Extract<KcContext, { pageId: "login.ftl" }>>) {
|
10
|
+
const { kcContext, doUseDefaultCss, Template, classes } = props;
|
11
11
|
|
12
|
-
const {
|
12
|
+
const { kcClsx } = getKcClsx({
|
13
13
|
doUseDefaultCss,
|
14
14
|
classes
|
15
15
|
});
|
16
16
|
|
17
17
|
const { social, realm, url, usernameHidden, login, auth, registrationDisabled, messagesPerField } = kcContext;
|
18
18
|
|
19
|
+
const i18n = useI18n({ kcContext });
|
19
20
|
const { msg, msgStr } = i18n;
|
20
21
|
|
21
22
|
const [isLoginButtonDisabled, setIsLoginButtonDisabled] = useState(false);
|
22
23
|
|
23
24
|
return (
|
24
25
|
<Template
|
25
|
-
{
|
26
|
+
kcContext={kcContext}
|
27
|
+
doUseDefaultCss={doUseDefaultCss}
|
28
|
+
classes={classes}
|
26
29
|
displayMessage={!messagesPerField.existsError("username", "password")}
|
27
30
|
headerNode={msg("loginAccountTitle")}
|
28
31
|
displayInfo={realm.password && realm.registrationAllowed && !registrationDisabled}
|
@@ -41,32 +44,23 @@ export default function Login(props: PageProps<Extract<KcContext, { pageId: "log
|
|
41
44
|
socialProvidersNode={
|
42
45
|
<>
|
43
46
|
{realm.password && social.providers?.length && (
|
44
|
-
<div id="kc-social-providers" className={
|
47
|
+
<div id="kc-social-providers" className={kcClsx("kcFormSocialAccountSectionClass")}>
|
45
48
|
<hr />
|
46
49
|
<h2>{msg("identity-provider-login-label")}</h2>
|
47
|
-
<ul
|
48
|
-
className={clsx(
|
49
|
-
getClassName("kcFormSocialAccountListClass"),
|
50
|
-
social.providers.length > 3 && getClassName("kcFormSocialAccountListGridClass")
|
51
|
-
)}
|
52
|
-
>
|
50
|
+
<ul className={kcClsx("kcFormSocialAccountListClass", social.providers.length > 3 && "kcFormSocialAccountListGridClass")}>
|
53
51
|
{social.providers.map((...[p, , providers]) => (
|
54
52
|
<li key={p.alias}>
|
55
53
|
<a
|
56
54
|
id={`social-${p.alias}`}
|
57
|
-
className={
|
58
|
-
|
59
|
-
providers.length > 3 &&
|
55
|
+
className={kcClsx(
|
56
|
+
"kcFormSocialAccountListButtonClass",
|
57
|
+
providers.length > 3 && "kcFormSocialAccountGridItem"
|
60
58
|
)}
|
61
59
|
type="button"
|
62
60
|
href={p.loginUrl}
|
63
61
|
>
|
64
|
-
{p.iconClasses && (
|
65
|
-
|
66
|
-
)}
|
67
|
-
<span
|
68
|
-
className={clsx(getClassName("kcFormSocialAccountNameClass"), p.iconClasses && "kc-social-icon-text")}
|
69
|
-
>
|
62
|
+
{p.iconClasses && <i className={clsx(kcClsx("kcCommonLogoIdP"), p.iconClasses)} aria-hidden="true"></i>}
|
63
|
+
<span className={clsx(kcClsx("kcFormSocialAccountNameClass"), p.iconClasses && "kc-social-icon-text")}>
|
70
64
|
{p.displayName}
|
71
65
|
</span>
|
72
66
|
</a>
|
@@ -91,8 +85,8 @@ export default function Login(props: PageProps<Extract<KcContext, { pageId: "log
|
|
91
85
|
method="post"
|
92
86
|
>
|
93
87
|
{!usernameHidden && (
|
94
|
-
<div className={
|
95
|
-
<label htmlFor="username" className={
|
88
|
+
<div className={kcClsx("kcFormGroupClass")}>
|
89
|
+
<label htmlFor="username" className={kcClsx("kcLabelClass")}>
|
96
90
|
{!realm.loginWithEmailAllowed
|
97
91
|
? msg("username")
|
98
92
|
: !realm.registrationEmailAsUsername
|
@@ -102,7 +96,7 @@ export default function Login(props: PageProps<Extract<KcContext, { pageId: "log
|
|
102
96
|
<input
|
103
97
|
tabIndex={2}
|
104
98
|
id="username"
|
105
|
-
className={
|
99
|
+
className={kcClsx("kcInputClass")}
|
106
100
|
name="username"
|
107
101
|
defaultValue={login.username ?? ""}
|
108
102
|
type="text"
|
@@ -111,22 +105,22 @@ export default function Login(props: PageProps<Extract<KcContext, { pageId: "log
|
|
111
105
|
aria-invalid={messagesPerField.existsError("username", "password")}
|
112
106
|
/>
|
113
107
|
{messagesPerField.existsError("username", "password") && (
|
114
|
-
<span id="input-error" className={
|
108
|
+
<span id="input-error" className={kcClsx("kcInputErrorMessageClass")} aria-live="polite">
|
115
109
|
{messagesPerField.getFirstError("username", "password")}
|
116
110
|
</span>
|
117
111
|
)}
|
118
112
|
</div>
|
119
113
|
)}
|
120
114
|
|
121
|
-
<div className={
|
122
|
-
<label htmlFor="password" className={
|
115
|
+
<div className={kcClsx("kcFormGroupClass")}>
|
116
|
+
<label htmlFor="password" className={kcClsx("kcLabelClass")}>
|
123
117
|
{msg("password")}
|
124
118
|
</label>
|
125
|
-
<PasswordWrapper
|
119
|
+
<PasswordWrapper kcClsx={kcClsx} i18n={i18n} passwordInputId="password">
|
126
120
|
<input
|
127
121
|
tabIndex={3}
|
128
122
|
id="password"
|
129
|
-
className={
|
123
|
+
className={kcClsx("kcInputClass")}
|
130
124
|
name="password"
|
131
125
|
type="password"
|
132
126
|
autoComplete="current-password"
|
@@ -134,13 +128,13 @@ export default function Login(props: PageProps<Extract<KcContext, { pageId: "log
|
|
134
128
|
/>
|
135
129
|
</PasswordWrapper>
|
136
130
|
{usernameHidden && messagesPerField.existsError("username", "password") && (
|
137
|
-
<span id="input-error" className={
|
131
|
+
<span id="input-error" className={kcClsx("kcInputErrorMessageClass")} aria-live="polite">
|
138
132
|
{messagesPerField.getFirstError("username", "password")}
|
139
133
|
</span>
|
140
134
|
)}
|
141
135
|
</div>
|
142
136
|
|
143
|
-
<div className={
|
137
|
+
<div className={kcClsx("kcFormGroupClass", "kcFormSettingClass")}>
|
144
138
|
<div id="kc-form-options">
|
145
139
|
{realm.rememberMe && !usernameHidden && (
|
146
140
|
<div className="checkbox">
|
@@ -157,7 +151,7 @@ export default function Login(props: PageProps<Extract<KcContext, { pageId: "log
|
|
157
151
|
</div>
|
158
152
|
)}
|
159
153
|
</div>
|
160
|
-
<div className={
|
154
|
+
<div className={kcClsx("kcFormOptionsWrapperClass")}>
|
161
155
|
{realm.resetPasswordAllowed && (
|
162
156
|
<span>
|
163
157
|
<a tabIndex={6} href={url.loginResetCredentialsUrl}>
|
@@ -168,17 +162,12 @@ export default function Login(props: PageProps<Extract<KcContext, { pageId: "log
|
|
168
162
|
</div>
|
169
163
|
</div>
|
170
164
|
|
171
|
-
<div id="kc-form-buttons" className={
|
165
|
+
<div id="kc-form-buttons" className={kcClsx("kcFormGroupClass")}>
|
172
166
|
<input type="hidden" id="id-hidden-input" name="credentialId" value={auth.selectedCredential} />
|
173
167
|
<input
|
174
168
|
tabIndex={7}
|
175
169
|
disabled={isLoginButtonDisabled}
|
176
|
-
className={
|
177
|
-
getClassName("kcButtonClass"),
|
178
|
-
getClassName("kcButtonPrimaryClass"),
|
179
|
-
getClassName("kcButtonBlockClass"),
|
180
|
-
getClassName("kcButtonLargeClass")
|
181
|
-
)}
|
170
|
+
className={kcClsx("kcButtonClass", "kcButtonPrimaryClass", "kcButtonBlockClass", "kcButtonLargeClass")}
|
182
171
|
name="login"
|
183
172
|
id="kc-login"
|
184
173
|
type="submit"
|
@@ -193,13 +182,8 @@ export default function Login(props: PageProps<Extract<KcContext, { pageId: "log
|
|
193
182
|
);
|
194
183
|
}
|
195
184
|
|
196
|
-
function PasswordWrapper(props: {
|
197
|
-
|
198
|
-
i18n: I18n;
|
199
|
-
passwordInputId: string;
|
200
|
-
children: JSX.Element;
|
201
|
-
}) {
|
202
|
-
const { getClassName, i18n, passwordInputId, children } = props;
|
185
|
+
function PasswordWrapper(props: { kcClsx: KcClsx; i18n: I18n; passwordInputId: string; children: JSX.Element }) {
|
186
|
+
const { kcClsx, i18n, passwordInputId, children } = props;
|
203
187
|
|
204
188
|
const { msgStr } = i18n;
|
205
189
|
|
@@ -214,19 +198,16 @@ function PasswordWrapper(props: {
|
|
214
198
|
}, [isPasswordRevealed]);
|
215
199
|
|
216
200
|
return (
|
217
|
-
<div className={
|
201
|
+
<div className={kcClsx("kcInputGroup")}>
|
218
202
|
{children}
|
219
203
|
<button
|
220
204
|
type="button"
|
221
|
-
className={
|
205
|
+
className={kcClsx("kcFormPasswordVisibilityButtonClass")}
|
222
206
|
aria-label={msgStr(isPasswordRevealed ? "hidePassword" : "showPassword")}
|
223
207
|
aria-controls={passwordInputId}
|
224
208
|
onClick={toggleIsPasswordRevealed}
|
225
209
|
>
|
226
|
-
<i
|
227
|
-
className={getClassName(isPasswordRevealed ? "kcFormPasswordVisibilityIconHide" : "kcFormPasswordVisibilityIconShow")}
|
228
|
-
aria-hidden
|
229
|
-
/>
|
210
|
+
<i className={kcClsx(isPasswordRevealed ? "kcFormPasswordVisibilityIconHide" : "kcFormPasswordVisibilityIconShow")} aria-hidden />
|
230
211
|
</button>
|
231
212
|
</div>
|
232
213
|
);
|
@@ -1,23 +1,24 @@
|
|
1
|
-
import {
|
2
|
-
import { useGetClassName } from "keycloakify/login/lib/useGetClassName";
|
1
|
+
import { getKcClsx, KcClsx } from "keycloakify/login/lib/kcClsx";
|
3
2
|
import type { PageProps } from "keycloakify/login/pages/PageProps";
|
4
3
|
import type { KcContext } from "../KcContext";
|
5
|
-
import type
|
4
|
+
import { useI18n, type I18n } from "../i18n";
|
6
5
|
|
7
|
-
export default function LoginConfigTotp(props: PageProps<Extract<KcContext, { pageId: "login-config-totp.ftl" }
|
8
|
-
const { kcContext,
|
6
|
+
export default function LoginConfigTotp(props: PageProps<Extract<KcContext, { pageId: "login-config-totp.ftl" }>>) {
|
7
|
+
const { kcContext, doUseDefaultCss, Template, classes } = props;
|
9
8
|
|
10
|
-
const {
|
9
|
+
const { kcClsx } = getKcClsx({
|
11
10
|
doUseDefaultCss,
|
12
11
|
classes
|
13
12
|
});
|
14
13
|
|
15
14
|
const { url, isAppInitiatedAction, totp, mode, messagesPerField } = kcContext;
|
16
15
|
|
16
|
+
const i18n = useI18n({ kcContext });
|
17
|
+
|
17
18
|
const { msg, msgStr, advancedMsg } = i18n;
|
18
19
|
|
19
20
|
return (
|
20
|
-
<Template {
|
21
|
+
<Template kcContext={kcContext} doUseDefaultCss={doUseDefaultCss} classes={classes} headerNode={msg("loginTotpTitle")}>
|
21
22
|
<>
|
22
23
|
<ol id="kc-totp-settings">
|
23
24
|
<li>
|
@@ -87,26 +88,26 @@ export default function LoginConfigTotp(props: PageProps<Extract<KcContext, { pa
|
|
87
88
|
</li>
|
88
89
|
</ol>
|
89
90
|
|
90
|
-
<form action={url.loginAction} className={
|
91
|
-
<div className={
|
92
|
-
<div className={
|
93
|
-
<label htmlFor="totp" className={
|
91
|
+
<form action={url.loginAction} className={kcClsx("kcFormClass")} id="kc-totp-settings-form" method="post">
|
92
|
+
<div className={kcClsx("kcFormGroupClass")}>
|
93
|
+
<div className={kcClsx("kcInputWrapperClass")}>
|
94
|
+
<label htmlFor="totp" className={kcClsx("kcLabelClass")}>
|
94
95
|
{msg("authenticatorCode")}
|
95
96
|
</label>{" "}
|
96
97
|
<span className="required">*</span>
|
97
98
|
</div>
|
98
|
-
<div className={
|
99
|
+
<div className={kcClsx("kcInputWrapperClass")}>
|
99
100
|
<input
|
100
101
|
type="text"
|
101
102
|
id="totp"
|
102
103
|
name="totp"
|
103
104
|
autoComplete="off"
|
104
|
-
className={
|
105
|
+
className={kcClsx("kcInputClass")}
|
105
106
|
aria-invalid={messagesPerField.existsError("totp")}
|
106
107
|
/>
|
107
108
|
|
108
109
|
{messagesPerField.existsError("totp") && (
|
109
|
-
<span id="input-error-otp-code" className={
|
110
|
+
<span id="input-error-otp-code" className={kcClsx("kcInputErrorMessageClass")} aria-live="polite">
|
110
111
|
{messagesPerField.get("totp")}
|
111
112
|
</span>
|
112
113
|
)}
|
@@ -115,54 +116,45 @@ export default function LoginConfigTotp(props: PageProps<Extract<KcContext, { pa
|
|
115
116
|
{mode && <input type="hidden" id="mode" value={mode} />}
|
116
117
|
</div>
|
117
118
|
|
118
|
-
<div className={
|
119
|
-
<div className={
|
120
|
-
<label htmlFor="userLabel" className={
|
119
|
+
<div className={kcClsx("kcFormGroupClass")}>
|
120
|
+
<div className={kcClsx("kcInputWrapperClass")}>
|
121
|
+
<label htmlFor="userLabel" className={kcClsx("kcLabelClass")}>
|
121
122
|
{msg("loginTotpDeviceName")}
|
122
123
|
</label>{" "}
|
123
124
|
{totp.otpCredentials.length >= 1 && <span className="required">*</span>}
|
124
125
|
</div>
|
125
|
-
<div className={
|
126
|
+
<div className={kcClsx("kcInputWrapperClass")}>
|
126
127
|
<input
|
127
128
|
type="text"
|
128
129
|
id="userLabel"
|
129
130
|
name="userLabel"
|
130
131
|
autoComplete="off"
|
131
|
-
className={
|
132
|
+
className={kcClsx("kcInputClass")}
|
132
133
|
aria-invalid={messagesPerField.existsError("userLabel")}
|
133
134
|
/>
|
134
135
|
{messagesPerField.existsError("userLabel") && (
|
135
|
-
<span id="input-error-otp-label" className={
|
136
|
+
<span id="input-error-otp-label" className={kcClsx("kcInputErrorMessageClass")} aria-live="polite">
|
136
137
|
{messagesPerField.get("userLabel")}
|
137
138
|
</span>
|
138
139
|
)}
|
139
140
|
</div>
|
140
141
|
</div>
|
141
142
|
|
142
|
-
<div className={
|
143
|
-
<LogoutOtherSessions {
|
143
|
+
<div className={kcClsx("kcFormGroupClass")}>
|
144
|
+
<LogoutOtherSessions kcClsx={kcClsx} i18n={i18n} />
|
144
145
|
</div>
|
145
146
|
|
146
147
|
{isAppInitiatedAction ? (
|
147
148
|
<>
|
148
149
|
<input
|
149
150
|
type="submit"
|
150
|
-
className={
|
151
|
-
getClassName("kcButtonClass"),
|
152
|
-
getClassName("kcButtonPrimaryClass"),
|
153
|
-
getClassName("kcButtonLargeClass")
|
154
|
-
)}
|
151
|
+
className={kcClsx("kcButtonClass", "kcButtonPrimaryClass", "kcButtonLargeClass")}
|
155
152
|
id="saveTOTPBtn"
|
156
153
|
value={msgStr("doSubmit")}
|
157
154
|
/>
|
158
155
|
<button
|
159
156
|
type="submit"
|
160
|
-
className={
|
161
|
-
getClassName("kcButtonClass"),
|
162
|
-
getClassName("kcButtonDefaultClass"),
|
163
|
-
getClassName("kcButtonLargeClass"),
|
164
|
-
getClassName("kcButtonLargeClass")
|
165
|
-
)}
|
157
|
+
className={kcClsx("kcButtonClass", "kcButtonDefaultClass", "kcButtonLargeClass", "kcButtonLargeClass")}
|
166
158
|
id="cancelTOTPBtn"
|
167
159
|
name="cancel-aia"
|
168
160
|
value="true"
|
@@ -173,7 +165,7 @@ export default function LoginConfigTotp(props: PageProps<Extract<KcContext, { pa
|
|
173
165
|
) : (
|
174
166
|
<input
|
175
167
|
type="submit"
|
176
|
-
className={
|
168
|
+
className={kcClsx("kcButtonClass", "kcButtonPrimaryClass", "kcButtonLargeClass")}
|
177
169
|
id="saveTOTPBtn"
|
178
170
|
value={msgStr("doSubmit")}
|
179
171
|
/>
|
@@ -184,14 +176,14 @@ export default function LoginConfigTotp(props: PageProps<Extract<KcContext, { pa
|
|
184
176
|
);
|
185
177
|
}
|
186
178
|
|
187
|
-
function LogoutOtherSessions(props: {
|
188
|
-
const {
|
179
|
+
function LogoutOtherSessions(props: { kcClsx: KcClsx; i18n: I18n }) {
|
180
|
+
const { kcClsx, i18n } = props;
|
189
181
|
|
190
182
|
const { msg } = i18n;
|
191
183
|
|
192
184
|
return (
|
193
|
-
<div id="kc-form-options" className={
|
194
|
-
<div className={
|
185
|
+
<div id="kc-form-options" className={kcClsx("kcFormOptionsClass")}>
|
186
|
+
<div className={kcClsx("kcFormOptionsWrapperClass")}>
|
195
187
|
<div className="checkbox">
|
196
188
|
<label>
|
197
189
|
<input type="checkbox" id="logout-sessions" name="logout-sessions" value="on" defaultChecked={true} />
|
@@ -1,33 +1,27 @@
|
|
1
|
-
import {
|
2
|
-
import { useGetClassName } from "keycloakify/login/lib/useGetClassName";
|
1
|
+
import { getKcClsx } from "keycloakify/login/lib/kcClsx";
|
3
2
|
import type { PageProps } from "keycloakify/login/pages/PageProps";
|
4
3
|
import type { KcContext } from "../KcContext";
|
5
|
-
import
|
4
|
+
import { useI18n } from "../i18n";
|
6
5
|
|
7
|
-
export default function LoginIdpLinkConfirm(props: PageProps<Extract<KcContext, { pageId: "login-idp-link-confirm.ftl" }
|
8
|
-
const { kcContext,
|
6
|
+
export default function LoginIdpLinkConfirm(props: PageProps<Extract<KcContext, { pageId: "login-idp-link-confirm.ftl" }>>) {
|
7
|
+
const { kcContext, doUseDefaultCss, Template, classes } = props;
|
9
8
|
|
10
|
-
const {
|
9
|
+
const { kcClsx } = getKcClsx({
|
11
10
|
doUseDefaultCss,
|
12
11
|
classes
|
13
12
|
});
|
14
13
|
|
15
14
|
const { url, idpAlias } = kcContext;
|
16
15
|
|
17
|
-
const { msg } =
|
16
|
+
const { msg } = useI18n({ kcContext });
|
18
17
|
|
19
18
|
return (
|
20
|
-
<Template {
|
19
|
+
<Template kcContext={kcContext} doUseDefaultCss={doUseDefaultCss} classes={classes} headerNode={msg("confirmLinkIdpTitle")}>
|
21
20
|
<form id="kc-register-form" action={url.loginAction} method="post">
|
22
|
-
<div className={
|
21
|
+
<div className={kcClsx("kcFormGroupClass")}>
|
23
22
|
<button
|
24
23
|
type="submit"
|
25
|
-
className={
|
26
|
-
getClassName("kcButtonClass"),
|
27
|
-
getClassName("kcButtonDefaultClass"),
|
28
|
-
getClassName("kcButtonBlockClass"),
|
29
|
-
getClassName("kcButtonLargeClass")
|
30
|
-
)}
|
24
|
+
className={kcClsx("kcButtonClass", "kcButtonDefaultClass", "kcButtonBlockClass", "kcButtonLargeClass")}
|
31
25
|
name="submitAction"
|
32
26
|
id="updateProfile"
|
33
27
|
value="updateProfile"
|
@@ -36,12 +30,7 @@ export default function LoginIdpLinkConfirm(props: PageProps<Extract<KcContext,
|
|
36
30
|
</button>
|
37
31
|
<button
|
38
32
|
type="submit"
|
39
|
-
className={
|
40
|
-
getClassName("kcButtonClass"),
|
41
|
-
getClassName("kcButtonDefaultClass"),
|
42
|
-
getClassName("kcButtonBlockClass"),
|
43
|
-
getClassName("kcButtonLargeClass")
|
44
|
-
)}
|
33
|
+
className={kcClsx("kcButtonClass", "kcButtonDefaultClass", "kcButtonBlockClass", "kcButtonLargeClass")}
|
45
34
|
name="submitAction"
|
46
35
|
id="linkAccount"
|
47
36
|
value="linkAccount"
|