keycloakify 10.0.0-rc.37 → 10.0.0-rc.39
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/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/193.index.js +13 -13
- package/bin/{430.index.js → 214.index.js} +161 -2
- package/bin/3.index.js +165 -149
- package/bin/322.index.js +595 -0
- package/bin/453.index.js +3 -3
- package/bin/526.index.js +42 -632
- package/bin/538.index.js +563 -0
- package/bin/932.index.js +7 -7
- package/bin/{890.index.js → 941.index.js} +2 -159
- package/bin/944.index.js +621 -0
- package/bin/961.index.js +5 -5
- package/bin/97.index.js +3 -3
- package/bin/{314.index.js → 98.index.js} +217 -48
- package/bin/main.js +20 -8
- package/lib/getKcClsx.d.ts +11 -0
- package/lib/getKcClsx.js +55 -0
- package/lib/getKcClsx.js.map +1 -0
- package/login/Fallback.d.ts +2 -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 +6 -5
- package/login/UserProfileFormFields.js +35 -36
- 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/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 +2 -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 +2 -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 +2 -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 +6 -6
- package/login/pages/Terms.js.map +1 -1
- package/login/pages/UpdateEmail.d.ts +2 -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 +27 -22
- 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/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/add-story.ts +3 -3
- package/src/bin/copy-keycloak-resources-to-public.ts +3 -3
- package/src/bin/download-keycloak-default-theme.ts +5 -5
- package/src/bin/eject-page.ts +3 -3
- package/src/bin/initialize-email-theme.ts +5 -5
- package/src/bin/keycloakify/buildJars/buildJar.ts +14 -14
- package/src/bin/keycloakify/buildJars/buildJars.ts +8 -8
- package/src/bin/keycloakify/buildJars/generatePom.ts +9 -9
- package/src/bin/keycloakify/generateFtl/generateFtl.ts +12 -12
- package/src/bin/keycloakify/generateSrcMainResources/bringInAccountV1.ts +7 -7
- package/src/bin/keycloakify/generateSrcMainResources/generateMessageProperties.ts +2 -66
- package/src/bin/keycloakify/generateSrcMainResources/generateSrcMainResources.ts +9 -9
- package/src/bin/keycloakify/generateSrcMainResources/generateSrcMainResourcesForMainTheme.ts +30 -24
- package/src/bin/keycloakify/generateSrcMainResources/generateSrcMainResourcesForThemeVariant.ts +8 -8
- package/src/bin/keycloakify/generateStartKeycloakTestingContainer.ts +9 -9
- package/src/bin/keycloakify/keycloakify.ts +11 -11
- package/src/bin/keycloakify/replacers/replaceImportsInCssCode.ts +6 -6
- package/src/bin/keycloakify/replacers/replaceImportsInInlineCssCode.ts +7 -7
- package/src/bin/keycloakify/replacers/replaceImportsInJsCode/replaceImportsInJsCode.ts +10 -10
- package/src/bin/keycloakify/replacers/replaceImportsInJsCode/vite.ts +13 -13
- package/src/bin/keycloakify/replacers/replaceImportsInJsCode/webpack.ts +11 -11
- package/src/bin/main.ts +17 -2
- package/src/bin/shared/{buildOptions.ts → buildContext.ts} +65 -51
- package/src/bin/shared/copyKeycloakResourcesToPublic.ts +12 -12
- package/src/bin/shared/downloadKeycloakDefaultTheme.ts +7 -7
- package/src/bin/shared/downloadKeycloakStaticResources.ts +7 -7
- package/src/bin/shared/generateKcGenTs.ts +61 -0
- package/src/bin/shared/getThemeSrcDirPath.ts +3 -3
- package/src/bin/start-keycloak/appBuild.ts +11 -11
- package/src/bin/start-keycloak/keycloakifyBuild.ts +7 -7
- package/src/bin/start-keycloak/start-keycloak.ts +34 -22
- package/src/bin/tools/escapeStringForPropertiesFile.ts +64 -0
- package/src/bin/tools/getNpmWorkspaceRootDirPath.ts +3 -3
- package/src/bin/update-kc-gen.ts +13 -0
- package/src/lib/getKcClsx.ts +89 -0
- package/src/login/Fallback.tsx +2 -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 +67 -84
- package/src/login/i18n/i18n.tsx +208 -129
- package/src/login/i18n/index.ts +10 -2
- 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 +18 -21
- 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 +29 -30
- 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 +27 -46
- package/src/login/pages/SamlPostForm.tsx +5 -5
- package/src/login/pages/SelectAuthenticator.tsx +24 -26
- package/src/login/pages/Terms.tsx +9 -16
- package/src/login/pages/UpdateEmail.tsx +29 -33
- 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 +29 -21
- 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 +243 -102
- package/vite-plugin/vite-plugin.d.ts +3 -3
- package/account/lib/useGetClassName.d.ts +0 -7
- package/account/lib/useGetClassName.js.map +0 -1
- package/bin/795.index.js +0 -1197
- package/lib/isStorybook.d.ts +0 -1
- package/lib/isStorybook.js +0 -3
- package/lib/isStorybook.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/isStorybook.ts +0 -3
- 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,25 @@
|
|
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>;
|
11
|
+
doMakeUserConfirmPassword: boolean;
|
12
12
|
};
|
13
13
|
|
14
14
|
export default function IdpReviewUserProfile(props: IdpReviewUserProfileProps) {
|
15
|
-
const { kcContext,
|
15
|
+
const { kcContext, doUseDefaultCss, Template, classes, UserProfileFormFields, doMakeUserConfirmPassword } = props;
|
16
16
|
|
17
|
-
const {
|
17
|
+
const { kcClsx } = getKcClsx({
|
18
18
|
doUseDefaultCss,
|
19
19
|
classes
|
20
20
|
});
|
21
21
|
|
22
|
-
const { msg, msgStr } =
|
22
|
+
const { msg, msgStr } = useI18n({ kcContext });
|
23
23
|
|
24
24
|
const { url, messagesPerField } = kcContext;
|
25
25
|
|
@@ -27,30 +27,27 @@ export default function IdpReviewUserProfile(props: IdpReviewUserProfileProps) {
|
|
27
27
|
|
28
28
|
return (
|
29
29
|
<Template
|
30
|
-
{
|
30
|
+
kcContext={kcContext}
|
31
|
+
doUseDefaultCss={doUseDefaultCss}
|
32
|
+
classes={classes}
|
31
33
|
displayMessage={messagesPerField.exists("global")}
|
32
34
|
displayRequiredFields
|
33
35
|
headerNode={msg("loginIdpReviewProfileTitle")}
|
34
36
|
>
|
35
|
-
<form id="kc-idp-review-profile-form" className={
|
37
|
+
<form id="kc-idp-review-profile-form" className={kcClsx("kcFormClass")} action={url.loginAction} method="post">
|
36
38
|
<UserProfileFormFields
|
37
39
|
kcContext={kcContext}
|
38
40
|
onIsFormSubmittableValueChange={setIsFomSubmittable}
|
39
|
-
|
40
|
-
|
41
|
+
kcClsx={kcClsx}
|
42
|
+
doMakeUserConfirmPassword={doMakeUserConfirmPassword}
|
41
43
|
/>
|
42
|
-
<div className={
|
43
|
-
<div id="kc-form-options" className={
|
44
|
-
<div className={
|
44
|
+
<div className={kcClsx("kcFormGroupClass")}>
|
45
|
+
<div id="kc-form-options" className={kcClsx("kcFormOptionsClass")}>
|
46
|
+
<div className={kcClsx("kcFormOptionsWrapperClass")} />
|
45
47
|
</div>
|
46
|
-
<div id="kc-form-buttons" className={
|
48
|
+
<div id="kc-form-buttons" className={kcClsx("kcFormButtonsClass")}>
|
47
49
|
<input
|
48
|
-
className={
|
49
|
-
getClassName("kcButtonClass"),
|
50
|
-
getClassName("kcButtonPrimaryClass"),
|
51
|
-
getClassName("kcButtonBlockClass"),
|
52
|
-
getClassName("kcButtonLargeClass")
|
53
|
-
)}
|
50
|
+
className={kcClsx("kcButtonClass", "kcButtonPrimaryClass", "kcButtonBlockClass", "kcButtonLargeClass")}
|
54
51
|
type="submit"
|
55
52
|
value={msgStr("doSubmit")}
|
56
53
|
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"
|