@oussemasahbeni/keycloakify-login-shadcn 250004.0.3 → 250004.0.8

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.
Files changed (187) hide show
  1. package/keycloak-theme/components/langauges.tsx +1 -1
  2. package/keycloak-theme/components/theme-toggle.tsx +0 -1
  3. package/keycloak-theme/components/ui/alert.tsx +1 -2
  4. package/keycloak-theme/components/ui/button.tsx +1 -2
  5. package/keycloak-theme/components/ui/card.tsx +0 -1
  6. package/keycloak-theme/components/ui/checkbox.tsx +0 -1
  7. package/keycloak-theme/components/ui/dropdown-menu.tsx +14 -4
  8. package/keycloak-theme/components/ui/field.tsx +0 -1
  9. package/keycloak-theme/components/ui/input-otp.tsx +0 -1
  10. package/keycloak-theme/components/ui/input.tsx +0 -1
  11. package/keycloak-theme/components/ui/label.tsx +1 -2
  12. package/keycloak-theme/components/ui/radio-group.tsx +0 -1
  13. package/keycloak-theme/components/ui/select.tsx +12 -4
  14. package/keycloak-theme/components/ui/separator.tsx +0 -1
  15. package/keycloak-theme/components/ui/tooltip.tsx +0 -1
  16. package/keycloak-theme/login/KcContext.ts +23 -23
  17. package/keycloak-theme/login/KcPage.tsx +45 -47
  18. package/keycloak-theme/login/assets/img/auth-logo.svg +100 -100
  19. package/keycloak-theme/login/assets/img/shape.svg +71 -71
  20. package/keycloak-theme/login/components/LogoutOtherSessions.tsx +24 -26
  21. package/keycloak-theme/login/components/PasswordWrapper.tsx +35 -35
  22. package/keycloak-theme/login/components/Template/Template.tsx +279 -227
  23. package/keycloak-theme/login/components/Template/index.ts +1 -1
  24. package/keycloak-theme/login/components/Template/useInitializeTemplate.ts +61 -61
  25. package/keycloak-theme/login/components/UserProfileFormFields/AddRemoveButtonsMultiValuedAttribute.tsx +65 -61
  26. package/keycloak-theme/login/components/UserProfileFormFields/DO_MAKE_USER_CONFIRM_PASSWORD.ts +2 -2
  27. package/keycloak-theme/login/components/UserProfileFormFields/FieldErrors.tsx +33 -29
  28. package/keycloak-theme/login/components/UserProfileFormFields/GroupLabel.tsx +90 -71
  29. package/keycloak-theme/login/components/UserProfileFormFields/InputFieldByType.tsx +66 -59
  30. package/keycloak-theme/login/components/UserProfileFormFields/InputLabel.tsx +0 -1
  31. package/keycloak-theme/login/components/UserProfileFormFields/InputTag.tsx +133 -116
  32. package/keycloak-theme/login/components/UserProfileFormFields/InputTagSelects.tsx +150 -136
  33. package/keycloak-theme/login/components/UserProfileFormFields/SelectTag.tsx +135 -114
  34. package/keycloak-theme/login/components/UserProfileFormFields/TextareaTag.tsx +55 -43
  35. package/keycloak-theme/login/components/UserProfileFormFields/UserProfileFormFields.tsx +133 -127
  36. package/keycloak-theme/login/components/UserProfileFormFields/index.ts +1 -1
  37. package/keycloak-theme/login/i18n.ts +47 -47
  38. package/keycloak-theme/login/mocks/KcPageStory.tsx +6 -2
  39. package/keycloak-theme/login/mocks/getKcContextMock.ts +22 -22
  40. package/keycloak-theme/login/pages/PageIndex.tsx +130 -134
  41. package/keycloak-theme/login/pages/code/Page.stories.tsx +57 -70
  42. package/keycloak-theme/login/pages/code/Page.tsx +89 -89
  43. package/keycloak-theme/login/pages/code/index.ts +3 -3
  44. package/keycloak-theme/login/pages/delete-account-confirm/Page.stories.tsx +37 -46
  45. package/keycloak-theme/login/pages/delete-account-confirm/Page.tsx +60 -63
  46. package/keycloak-theme/login/pages/delete-account-confirm/index.ts +3 -3
  47. package/keycloak-theme/login/pages/delete-credential/Page.stories.tsx +25 -30
  48. package/keycloak-theme/login/pages/delete-credential/Page.tsx +56 -51
  49. package/keycloak-theme/login/pages/delete-credential/index.ts +3 -3
  50. package/keycloak-theme/login/pages/error/Page.stories.tsx +46 -58
  51. package/keycloak-theme/login/pages/error/Page.tsx +43 -42
  52. package/keycloak-theme/login/pages/error/index.ts +3 -3
  53. package/keycloak-theme/login/pages/frontchannel-logout/Page.stories.tsx +25 -32
  54. package/keycloak-theme/login/pages/frontchannel-logout/Page.tsx +82 -84
  55. package/keycloak-theme/login/pages/frontchannel-logout/index.ts +3 -3
  56. package/keycloak-theme/login/pages/idp-review-user-profile/Page.stories.tsx +46 -59
  57. package/keycloak-theme/login/pages/idp-review-user-profile/Page.tsx +49 -52
  58. package/keycloak-theme/login/pages/idp-review-user-profile/index.ts +3 -3
  59. package/keycloak-theme/login/pages/info/Page.stories.tsx +50 -60
  60. package/keycloak-theme/login/pages/info/Page.tsx +94 -92
  61. package/keycloak-theme/login/pages/link-idp-action/Page.stories.tsx +32 -16
  62. package/keycloak-theme/login/pages/link-idp-action/Page.tsx +45 -43
  63. package/keycloak-theme/login/pages/link-idp-action/index.ts +3 -3
  64. package/keycloak-theme/login/pages/login/Form.tsx +242 -242
  65. package/keycloak-theme/login/pages/login/Info.tsx +29 -29
  66. package/keycloak-theme/login/pages/login/Page.stories.tsx +346 -365
  67. package/keycloak-theme/login/pages/login/Page.tsx +43 -44
  68. package/keycloak-theme/login/pages/login/SocialProviders.tsx +93 -107
  69. package/keycloak-theme/login/pages/login/index.ts +3 -3
  70. package/keycloak-theme/login/pages/login/providers/apple.svg +3 -3
  71. package/keycloak-theme/login/pages/login/providers/bitbucket.svg +11 -11
  72. package/keycloak-theme/login/pages/login/providers/discord.svg +4 -4
  73. package/keycloak-theme/login/pages/login/providers/facebook.svg +5 -5
  74. package/keycloak-theme/login/pages/login/providers/github.svg +3 -3
  75. package/keycloak-theme/login/pages/login/providers/gitlab.svg +7 -7
  76. package/keycloak-theme/login/pages/login/providers/google.svg +7 -7
  77. package/keycloak-theme/login/pages/login/providers/instagram.svg +31 -31
  78. package/keycloak-theme/login/pages/login/providers/linkedin.svg +3 -3
  79. package/keycloak-theme/login/pages/login/providers/microsoft.svg +6 -6
  80. package/keycloak-theme/login/pages/login/providers/oidc.svg +5 -5
  81. package/keycloak-theme/login/pages/login/providers/openshift.svg +7 -7
  82. package/keycloak-theme/login/pages/login/providers/paypal.svg +6 -6
  83. package/keycloak-theme/login/pages/login/providers/slack.svg +11 -11
  84. package/keycloak-theme/login/pages/login/providers/stackoverflow.svg +5 -5
  85. package/keycloak-theme/login/pages/login/providers/x.svg +3 -3
  86. package/keycloak-theme/login/pages/login/useProviderLogos.tsx +39 -39
  87. package/keycloak-theme/login/pages/login/useScript.tsx +62 -62
  88. package/keycloak-theme/login/pages/login-config-totp/Page.stories.tsx +45 -60
  89. package/keycloak-theme/login/pages/login-config-totp/Page.tsx +253 -240
  90. package/keycloak-theme/login/pages/login-config-totp/index.ts +3 -3
  91. package/keycloak-theme/login/pages/login-idp-link-confirm/Page.stories.tsx +30 -35
  92. package/keycloak-theme/login/pages/login-idp-link-confirm/Page.tsx +40 -43
  93. package/keycloak-theme/login/pages/login-idp-link-confirm/index.ts +3 -3
  94. package/keycloak-theme/login/pages/login-idp-link-confirm-override/Page.stories.tsx +16 -23
  95. package/keycloak-theme/login/pages/login-idp-link-confirm-override/Page.tsx +44 -47
  96. package/keycloak-theme/login/pages/login-idp-link-confirm-override/index.ts +3 -3
  97. package/keycloak-theme/login/pages/login-idp-link-email/Page.stories.tsx +54 -63
  98. package/keycloak-theme/login/pages/login-idp-link-email/Page.tsx +51 -54
  99. package/keycloak-theme/login/pages/login-idp-link-email/index.ts +3 -3
  100. package/keycloak-theme/login/pages/login-oauth-grant/Page.stories.tsx +39 -45
  101. package/keycloak-theme/login/pages/login-oauth-grant/Page.tsx +136 -126
  102. package/keycloak-theme/login/pages/login-oauth-grant/index.ts +3 -3
  103. package/keycloak-theme/login/pages/login-oauth2-device-verify-user-code/Page.stories.tsx +38 -48
  104. package/keycloak-theme/login/pages/login-oauth2-device-verify-user-code/Page.tsx +56 -58
  105. package/keycloak-theme/login/pages/login-oauth2-device-verify-user-code/index.ts +3 -3
  106. package/keycloak-theme/login/pages/login-otp/Page.stories.tsx +82 -97
  107. package/keycloak-theme/login/pages/login-otp/Page.tsx +117 -108
  108. package/keycloak-theme/login/pages/login-otp/index.ts +3 -3
  109. package/keycloak-theme/login/pages/login-page-expired/Page.stories.tsx +28 -37
  110. package/keycloak-theme/login/pages/login-page-expired/Page.tsx +45 -47
  111. package/keycloak-theme/login/pages/login-page-expired/index.ts +3 -3
  112. package/keycloak-theme/login/pages/login-passkeys-conditional-authenticate/Page.stories.tsx +20 -0
  113. package/keycloak-theme/login/pages/login-passkeys-conditional-authenticate/Page.tsx +290 -233
  114. package/keycloak-theme/login/pages/login-passkeys-conditional-authenticate/index.ts +3 -3
  115. package/keycloak-theme/login/pages/login-passkeys-conditional-authenticate/useScript.tsx +63 -63
  116. package/keycloak-theme/login/pages/login-password/Page.stories.tsx +55 -56
  117. package/keycloak-theme/login/pages/login-password/Page.tsx +148 -149
  118. package/keycloak-theme/login/pages/login-password/index.ts +3 -3
  119. package/keycloak-theme/login/pages/login-password/useScript.tsx +62 -63
  120. package/keycloak-theme/login/pages/login-recovery-authn-code-config/Page.stories.tsx +28 -36
  121. package/keycloak-theme/login/pages/login-recovery-authn-code-config/Page.tsx +178 -181
  122. package/keycloak-theme/login/pages/login-recovery-authn-code-config/index.ts +3 -3
  123. package/keycloak-theme/login/pages/login-recovery-authn-code-config/useScript.tsx +145 -145
  124. package/keycloak-theme/login/pages/login-recovery-authn-code-input/Page.stories.tsx +16 -22
  125. package/keycloak-theme/login/pages/login-recovery-authn-code-input/Page.tsx +69 -70
  126. package/keycloak-theme/login/pages/login-recovery-authn-code-input/index.ts +3 -3
  127. package/keycloak-theme/login/pages/login-reset-otp/Page.stories.tsx +62 -75
  128. package/keycloak-theme/login/pages/login-reset-otp/Page.tsx +85 -86
  129. package/keycloak-theme/login/pages/login-reset-otp/index.ts +3 -3
  130. package/keycloak-theme/login/pages/login-reset-password/Form.tsx +67 -68
  131. package/keycloak-theme/login/pages/login-reset-password/Page.stories.tsx +44 -55
  132. package/keycloak-theme/login/pages/login-reset-password/Page.tsx +27 -27
  133. package/keycloak-theme/login/pages/login-reset-password/index.ts +3 -3
  134. package/keycloak-theme/login/pages/login-update-password/Page.stories.tsx +40 -51
  135. package/keycloak-theme/login/pages/login-update-password/Page.tsx +109 -111
  136. package/keycloak-theme/login/pages/login-update-password/index.ts +3 -3
  137. package/keycloak-theme/login/pages/login-update-profile/Page.stories.tsx +28 -37
  138. package/keycloak-theme/login/pages/login-update-profile/Page.tsx +67 -68
  139. package/keycloak-theme/login/pages/login-update-profile/index.ts +3 -3
  140. package/keycloak-theme/login/pages/login-username/Page.stories.tsx +32 -43
  141. package/keycloak-theme/login/pages/login-username/Page.tsx +246 -246
  142. package/keycloak-theme/login/pages/login-username/index.ts +3 -3
  143. package/keycloak-theme/login/pages/login-username/useScript.tsx +62 -62
  144. package/keycloak-theme/login/pages/login-verify-email/Page.stories.tsx +68 -81
  145. package/keycloak-theme/login/pages/login-verify-email/Page.tsx +37 -38
  146. package/keycloak-theme/login/pages/login-verify-email/index.ts +3 -3
  147. package/keycloak-theme/login/pages/login-x509-info/Page.stories.tsx +29 -38
  148. package/keycloak-theme/login/pages/login-x509-info/Page.tsx +72 -75
  149. package/keycloak-theme/login/pages/login-x509-info/index.ts +3 -3
  150. package/keycloak-theme/login/pages/logout-confirm/Page.stories.tsx +34 -43
  151. package/keycloak-theme/login/pages/logout-confirm/Page.tsx +50 -53
  152. package/keycloak-theme/login/pages/logout-confirm/index.ts +3 -3
  153. package/keycloak-theme/login/pages/register/Form.tsx +107 -106
  154. package/keycloak-theme/login/pages/register/Page.stories.tsx +40 -14
  155. package/keycloak-theme/login/pages/register/Page.tsx +26 -26
  156. package/keycloak-theme/login/pages/register/TermsAcceptance.tsx +55 -56
  157. package/keycloak-theme/login/pages/register/index.ts +3 -3
  158. package/keycloak-theme/login/pages/saml-post-form/Page.stories.tsx +16 -23
  159. package/keycloak-theme/login/pages/saml-post-form/Page.tsx +64 -66
  160. package/keycloak-theme/login/pages/saml-post-form/index.ts +3 -3
  161. package/keycloak-theme/login/pages/select-authenticator/Page.stories.tsx +83 -96
  162. package/keycloak-theme/login/pages/select-authenticator/Page.tsx +97 -100
  163. package/keycloak-theme/login/pages/select-authenticator/index.ts +3 -3
  164. package/keycloak-theme/login/pages/select-organization/Page.stories.tsx +62 -49
  165. package/keycloak-theme/login/pages/select-organization/Page.tsx +123 -126
  166. package/keycloak-theme/login/pages/select-organization/index.ts +3 -3
  167. package/keycloak-theme/login/pages/terms/Page.stories.tsx +15 -0
  168. package/keycloak-theme/login/pages/terms/Page.tsx +49 -51
  169. package/keycloak-theme/login/pages/terms/index.ts +3 -3
  170. package/keycloak-theme/login/pages/update-email/Page.stories.tsx +27 -36
  171. package/keycloak-theme/login/pages/update-email/Page.tsx +61 -62
  172. package/keycloak-theme/login/pages/update-email/index.ts +3 -3
  173. package/keycloak-theme/login/pages/webauthn-authenticate/Page.stories.tsx +112 -127
  174. package/keycloak-theme/login/pages/webauthn-authenticate/Page.tsx +206 -202
  175. package/keycloak-theme/login/pages/webauthn-authenticate/index.ts +3 -3
  176. package/keycloak-theme/login/pages/webauthn-authenticate/useScript.tsx +55 -55
  177. package/keycloak-theme/login/pages/webauthn-error/Page.stories.tsx +52 -67
  178. package/keycloak-theme/login/pages/webauthn-error/Page.tsx +70 -73
  179. package/keycloak-theme/login/pages/webauthn-error/index.ts +3 -3
  180. package/keycloak-theme/login/pages/webauthn-register/Page.stories.tsx +39 -50
  181. package/keycloak-theme/login/pages/webauthn-register/Page.tsx +78 -78
  182. package/keycloak-theme/login/pages/webauthn-register/index.ts +3 -3
  183. package/keycloak-theme/login/pages/webauthn-register/useScript.tsx +62 -62
  184. package/keycloak-theme/login/shared/getColorScheme.ts +45 -45
  185. package/keycloak-theme/login/styleLevelCustomization.tsx +34 -36
  186. package/keycloak-theme/public/site.webmanifest +11 -1
  187. package/package.json +6 -2
@@ -1,47 +1,47 @@
1
- import { i18nBuilder } from "@keycloakify/login-ui/i18n";
2
- import type { ThemeName } from "../kc.gen";
3
-
4
- /** @see: https://docs.keycloakify.dev/features/i18n */
5
- const { I18nProvider, useI18n } = i18nBuilder
6
- .withThemeName<ThemeName>()
7
- .withCustomTranslations({
8
- en: {
9
- welcomeMessage:
10
- "Welcome to Acme inc - Your gateway to seamless planning and organization.",
11
- loginAccountTitle: "Login to your account",
12
- registerTitle: "Register a new account",
13
- email: "Email",
14
- enterCredentials: "Enter your credentials below to login",
15
- noAccount: "Don't have an account?",
16
- doRegister: "Sign up",
17
- "organization.selectTitle": "Choose Your Organization",
18
- "organization.pickPlaceholder": "Pick an organization to continue"
19
- },
20
- ar: {
21
- welcomeMessage: "مرحبًا بك في Acme inc - بوابتك إلى التخطيط والتنظيم السلس.",
22
- loginAccountTitle: "تسجيل الدخول إلى حسابك",
23
- registerTitle: "تسجيل حساب جديد",
24
- email: "البريد الإلكتروني",
25
- enterCredentials: "أدخل بيانات الاعتماد الخاصة بك أدناه لتسجيل الدخول",
26
- doRegister: "إنشاء حساب",
27
- noAccount: "ليس لديك حساب؟",
28
- "organization.selectTitle": "اختر مؤسستك",
29
- "organization.pickPlaceholder": "اختر مؤسسة للمتابعة"
30
- },
31
- fr: {
32
- welcomeMessage:
33
- "Bienvenue sur Acme inc Votre passerelle vers une planification et une organisation sans faille.",
34
- loginAccountTitle: "Connectez-vous à votre compte",
35
- registerTitle: "Créer un nouveau compte",
36
- email: "E-mail",
37
- enterCredentials:
38
- "Entrez vos informations d'identification ci-dessous pour vous connecter",
39
- doRegister: "S'inscrire",
40
- noAccount: "Vous n'avez pas de compte?",
41
- "organization.selectTitle": "Choisissez Votre Organisation",
42
- "organization.pickPlaceholder": "Sélectionnez une organisation pour continuer"
43
- }
44
- })
45
- .build();
46
-
47
- export { I18nProvider, useI18n };
1
+ import { i18nBuilder } from "@keycloakify/login-ui/i18n";
2
+ import type { ThemeName } from "../kc.gen";
3
+
4
+ /** @see: https://docs.keycloakify.dev/features/i18n */
5
+ const { I18nProvider, useI18n } = i18nBuilder
6
+ .withThemeName<ThemeName>()
7
+ .withCustomTranslations({
8
+ en: {
9
+ welcomeMessage:
10
+ "Welcome to Acme inc - Your gateway to seamless planning and organization.",
11
+ loginAccountTitle: "Login to your account",
12
+ registerTitle: "Register a new account",
13
+ email: "Email",
14
+ enterCredentials: "Enter your credentials below to login",
15
+ noAccount: "Don't have an account?",
16
+ doRegister: "Sign up",
17
+ "organization.selectTitle": "Choose Your Organization",
18
+ "organization.pickPlaceholder": "Pick an organization to continue"
19
+ },
20
+ ar: {
21
+ welcomeMessage: "مرحبًا بك في Acme inc - بوابتك إلى التخطيط والتنظيم السلس.",
22
+ loginAccountTitle: "تسجيل الدخول إلى حسابك",
23
+ registerTitle: "تسجيل حساب جديد",
24
+ email: "البريد الإلكتروني",
25
+ enterCredentials: "أدخل بيانات الاعتماد الخاصة بك أدناه لتسجيل الدخول",
26
+ doRegister: "إنشاء حساب",
27
+ noAccount: "ليس لديك حساب؟",
28
+ "organization.selectTitle": "اختر مؤسستك",
29
+ "organization.pickPlaceholder": "اختر مؤسسة للمتابعة"
30
+ },
31
+ fr: {
32
+ welcomeMessage:
33
+ "Bienvenue sur Acme inc Votre passerelle vers une planification et une organisation sans faille.",
34
+ loginAccountTitle: "Connectez-vous à votre compte",
35
+ registerTitle: "Créer un nouveau compte",
36
+ email: "E-mail",
37
+ enterCredentials:
38
+ "Entrez vos informations d'identification ci-dessous pour vous connecter",
39
+ doRegister: "S'inscrire",
40
+ noAccount: "Vous n'avez pas de compte?",
41
+ "organization.selectTitle": "Choisissez Votre Organisation",
42
+ "organization.pickPlaceholder": "Sélectionnez une organisation pour continuer"
43
+ }
44
+ })
45
+ .build();
46
+
47
+ export { I18nProvider, useI18n };
@@ -4,10 +4,14 @@ import type { KcContext } from "../KcContext";
4
4
  import KcPage from "../KcPage";
5
5
  export type { Meta, StoryObj } from "../../kc.gen";
6
6
 
7
- export function createKcPageStory<PageId extends KcContext["pageId"]>(params: { pageId: PageId }) {
7
+ export function createKcPageStory<PageId extends KcContext["pageId"]>(params: {
8
+ pageId: PageId;
9
+ }) {
8
10
  const { pageId } = params;
9
11
 
10
- function KcPageStory(props: { kcContext?: DeepPartial<Extract<KcContext, { pageId: PageId }>> }) {
12
+ function KcPageStory(props: {
13
+ kcContext?: DeepPartial<Extract<KcContext, { pageId: PageId }>>;
14
+ }) {
11
15
  const { kcContext: overrides } = props;
12
16
 
13
17
  const kcContextMock = getKcContextMock({
@@ -1,22 +1,22 @@
1
- import { createGetKcContextMock } from "@keycloakify/login-ui/KcContext/getKcContextMock";
2
- import { kcEnvDefaults, themeNames } from "../../kc.gen";
3
- import type { KcContextExtension, KcContextExtensionPerPage } from "../KcContext";
4
-
5
- const kcContextExtension: KcContextExtension = {
6
- themeName: themeNames[0],
7
- client: {
8
- baseUrl: "https://my-theme.keycloakify.dev"
9
- },
10
- darkMode: true,
11
- properties: {
12
- ...kcEnvDefaults
13
- }
14
- };
15
- const kcContextExtensionPerPage: KcContextExtensionPerPage = {};
16
-
17
- export const { getKcContextMock } = createGetKcContextMock({
18
- kcContextExtension,
19
- kcContextExtensionPerPage,
20
- overrides: {},
21
- overridesPerPage: {}
22
- });
1
+ import { createGetKcContextMock } from "@keycloakify/login-ui/KcContext/getKcContextMock";
2
+ import { kcEnvDefaults, themeNames } from "../../kc.gen";
3
+ import type { KcContextExtension, KcContextExtensionPerPage } from "../KcContext";
4
+
5
+ const kcContextExtension: KcContextExtension = {
6
+ themeName: themeNames[0],
7
+ client: {
8
+ baseUrl: "https://my-theme.keycloakify.dev"
9
+ },
10
+ darkMode: true,
11
+ properties: {
12
+ ...kcEnvDefaults
13
+ }
14
+ };
15
+ const kcContextExtensionPerPage: KcContextExtensionPerPage = {};
16
+
17
+ export const { getKcContextMock } = createGetKcContextMock({
18
+ kcContextExtension,
19
+ kcContextExtensionPerPage,
20
+ overrides: {},
21
+ overridesPerPage: {}
22
+ });
@@ -1,134 +1,130 @@
1
-
2
- import { Suspense, lazy } from "react";
3
- import { useKcContext } from "../KcContext";
4
-
5
-
6
- const Page_login = lazy(() => import("./login"));
7
- const Page_register = lazy(() => import("./register"));
8
- const Page_info = lazy(() => import("./info"));
9
- const Page_error = lazy(() => import("./error"));
10
- const Page_login_reset_password = lazy(() => import("./login-reset-password"));
11
- const Page_login_verify_email = lazy(() => import("./login-verify-email"));
12
- const Page_terms = lazy(() => import("./terms"));
13
- const Page_login_oauth2_device_verify_user_code = lazy(() => import("./login-oauth2-device-verify-user-code"));
14
- const Page_login_oauth_grant = lazy(() => import("./login-oauth-grant"));
15
- const Page_login_otp = lazy(() => import("./login-otp"));
16
- const Page_login_password = lazy(() => import("./login-password"));
17
- const Page_login_username = lazy(() => import("./login-username"));
18
- const Page_webauthn_authenticate = lazy(() => import("./webauthn-authenticate"));
19
- const Page_webauthn_register = lazy(() => import("./webauthn-register"));
20
- const Page_login_update_password = lazy(() => import("./login-update-password"));
21
- const Page_link_idp_action = lazy(() => import("./link-idp-action"));
22
- const Page_login_update_profile = lazy(() => import("./login-update-profile"));
23
- const Page_login_idp_link_confirm = lazy(() => import("./login-idp-link-confirm"));
24
- const Page_login_page_expired = lazy(() => import("./login-page-expired"));
25
- const Page_login_idp_link_email = lazy(() => import("./login-idp-link-email"));
26
- const Page_login_config_totp = lazy(() => import("./login-config-totp"));
27
- const Page_logout_confirm = lazy(() => import("./logout-confirm"));
28
- const Page_idp_review_user_profile = lazy(() => import("./idp-review-user-profile"));
29
- const Page_update_email = lazy(() => import("./update-email"));
30
- const Page_select_authenticator = lazy(() => import("./select-authenticator"));
31
- const Page_saml_post_form = lazy(() => import("./saml-post-form"));
32
- const Page_delete_credential = lazy(() => import("./delete-credential"));
33
- const Page_code = lazy(() => import("./code"));
34
- const Page_delete_account_confirm = lazy(() => import("./delete-account-confirm"));
35
- const Page_frontchannel_logout = lazy(() => import("./frontchannel-logout"));
36
- const Page_login_recovery_authn_code_config = lazy(() => import("./login-recovery-authn-code-config"));
37
- const Page_login_recovery_authn_code_input = lazy(() => import("./login-recovery-authn-code-input"));
38
- const Page_login_reset_otp = lazy(() => import("./login-reset-otp"));
39
- const Page_login_x509_info = lazy(() => import("./login-x509-info"));
40
- const Page_webauthn_error = lazy(() => import("./webauthn-error"));
41
- const Page_login_passkeys_conditional_authenticate = lazy(() => import("./login-passkeys-conditional-authenticate"));
42
- const Page_login_idp_link_confirm_override = lazy(() => import("./login-idp-link-confirm-override"));
43
- const Page_select_organization = lazy(() => import("./select-organization"));
44
-
45
- export function PageIndex() {
46
- const { kcContext } = useKcContext();
47
-
48
- return (
49
-
50
- <Suspense>
51
- {(() => {
52
- switch (kcContext.pageId) {
53
- case "login.ftl":
54
- return <Page_login />;
55
- case "register.ftl":
56
- return <Page_register />;
57
- case "info.ftl":
58
- return <Page_info />;
59
- case "error.ftl":
60
- return <Page_error />;
61
- case "login-reset-password.ftl":
62
- return <Page_login_reset_password />;
63
- case "login-verify-email.ftl":
64
- return <Page_login_verify_email />;
65
- case "terms.ftl":
66
- return <Page_terms />;
67
- case "login-oauth2-device-verify-user-code.ftl":
68
- return <Page_login_oauth2_device_verify_user_code />;
69
- case "login-oauth-grant.ftl":
70
- return <Page_login_oauth_grant />;
71
- case "login-otp.ftl":
72
- return <Page_login_otp />;
73
- case "login-username.ftl":
74
- return <Page_login_username />;
75
- case "login-password.ftl":
76
- return <Page_login_password />;
77
- case "webauthn-authenticate.ftl":
78
- return <Page_webauthn_authenticate />;
79
- case "webauthn-register.ftl":
80
- return <Page_webauthn_register />;
81
- case "login-update-password.ftl":
82
- return <Page_login_update_password />;
83
- case "link-idp-action.ftl":
84
- return <Page_link_idp_action />;
85
- case "login-update-profile.ftl":
86
- return <Page_login_update_profile />;
87
- case "login-idp-link-confirm.ftl":
88
- return <Page_login_idp_link_confirm />;
89
- case "login-idp-link-email.ftl":
90
- return <Page_login_idp_link_email />;
91
- case "login-page-expired.ftl":
92
- return <Page_login_page_expired />;
93
- case "login-config-totp.ftl":
94
- return <Page_login_config_totp />;
95
- case "logout-confirm.ftl":
96
- return <Page_logout_confirm />;
97
- case "idp-review-user-profile.ftl":
98
- return <Page_idp_review_user_profile />;
99
- case "update-email.ftl":
100
- return <Page_update_email />;
101
- case "select-authenticator.ftl":
102
- return <Page_select_authenticator />;
103
- case "saml-post-form.ftl":
104
- return <Page_saml_post_form />;
105
- case "delete-credential.ftl":
106
- return <Page_delete_credential />;
107
- case "code.ftl":
108
- return <Page_code />;
109
- case "delete-account-confirm.ftl":
110
- return <Page_delete_account_confirm />;
111
- case "frontchannel-logout.ftl":
112
- return <Page_frontchannel_logout />;
113
- case "login-recovery-authn-code-config.ftl":
114
- return <Page_login_recovery_authn_code_config />;
115
- case "login-recovery-authn-code-input.ftl":
116
- return <Page_login_recovery_authn_code_input />;
117
- case "login-reset-otp.ftl":
118
- return <Page_login_reset_otp />;
119
- case "login-x509-info.ftl":
120
- return <Page_login_x509_info />;
121
- case "webauthn-error.ftl":
122
- return <Page_webauthn_error />;
123
- case "login-passkeys-conditional-authenticate.ftl":
124
- return <Page_login_passkeys_conditional_authenticate />;
125
- case "login-idp-link-confirm-override.ftl":
126
- return <Page_login_idp_link_confirm_override />;
127
- case "select-organization.ftl":
128
- return <Page_select_organization />;
129
- }
130
-
131
- })()}
132
- </Suspense>
133
- );
134
- }
1
+ import { Suspense, lazy } from "react";
2
+ import { useKcContext } from "../KcContext";
3
+
4
+ const Page_login = lazy(() => import("./login"));
5
+ const Page_register = lazy(() => import("./register"));
6
+ const Page_info = lazy(() => import("./info"));
7
+ const Page_error = lazy(() => import("./error"));
8
+ const Page_login_reset_password = lazy(() => import("./login-reset-password"));
9
+ const Page_login_verify_email = lazy(() => import("./login-verify-email"));
10
+ const Page_terms = lazy(() => import("./terms"));
11
+ const Page_login_oauth2_device_verify_user_code = lazy(() => import("./login-oauth2-device-verify-user-code"));
12
+ const Page_login_oauth_grant = lazy(() => import("./login-oauth-grant"));
13
+ const Page_login_otp = lazy(() => import("./login-otp"));
14
+ const Page_login_password = lazy(() => import("./login-password"));
15
+ const Page_login_username = lazy(() => import("./login-username"));
16
+ const Page_webauthn_authenticate = lazy(() => import("./webauthn-authenticate"));
17
+ const Page_webauthn_register = lazy(() => import("./webauthn-register"));
18
+ const Page_login_update_password = lazy(() => import("./login-update-password"));
19
+ const Page_link_idp_action = lazy(() => import("./link-idp-action"));
20
+ const Page_login_update_profile = lazy(() => import("./login-update-profile"));
21
+ const Page_login_idp_link_confirm = lazy(() => import("./login-idp-link-confirm"));
22
+ const Page_login_page_expired = lazy(() => import("./login-page-expired"));
23
+ const Page_login_idp_link_email = lazy(() => import("./login-idp-link-email"));
24
+ const Page_login_config_totp = lazy(() => import("./login-config-totp"));
25
+ const Page_logout_confirm = lazy(() => import("./logout-confirm"));
26
+ const Page_idp_review_user_profile = lazy(() => import("./idp-review-user-profile"));
27
+ const Page_update_email = lazy(() => import("./update-email"));
28
+ const Page_select_authenticator = lazy(() => import("./select-authenticator"));
29
+ const Page_saml_post_form = lazy(() => import("./saml-post-form"));
30
+ const Page_delete_credential = lazy(() => import("./delete-credential"));
31
+ const Page_code = lazy(() => import("./code"));
32
+ const Page_delete_account_confirm = lazy(() => import("./delete-account-confirm"));
33
+ const Page_frontchannel_logout = lazy(() => import("./frontchannel-logout"));
34
+ const Page_login_recovery_authn_code_config = lazy(() => import("./login-recovery-authn-code-config"));
35
+ const Page_login_recovery_authn_code_input = lazy(() => import("./login-recovery-authn-code-input"));
36
+ const Page_login_reset_otp = lazy(() => import("./login-reset-otp"));
37
+ const Page_login_x509_info = lazy(() => import("./login-x509-info"));
38
+ const Page_webauthn_error = lazy(() => import("./webauthn-error"));
39
+ const Page_login_passkeys_conditional_authenticate = lazy(() => import("./login-passkeys-conditional-authenticate"));
40
+ const Page_login_idp_link_confirm_override = lazy(() => import("./login-idp-link-confirm-override"));
41
+ const Page_select_organization = lazy(() => import("./select-organization"));
42
+
43
+ export function PageIndex() {
44
+ const { kcContext } = useKcContext();
45
+
46
+ return (
47
+ <Suspense>
48
+ {(() => {
49
+ switch (kcContext.pageId) {
50
+ case "login.ftl":
51
+ return <Page_login />;
52
+ case "register.ftl":
53
+ return <Page_register />;
54
+ case "info.ftl":
55
+ return <Page_info />;
56
+ case "error.ftl":
57
+ return <Page_error />;
58
+ case "login-reset-password.ftl":
59
+ return <Page_login_reset_password />;
60
+ case "login-verify-email.ftl":
61
+ return <Page_login_verify_email />;
62
+ case "terms.ftl":
63
+ return <Page_terms />;
64
+ case "login-oauth2-device-verify-user-code.ftl":
65
+ return <Page_login_oauth2_device_verify_user_code />;
66
+ case "login-oauth-grant.ftl":
67
+ return <Page_login_oauth_grant />;
68
+ case "login-otp.ftl":
69
+ return <Page_login_otp />;
70
+ case "login-username.ftl":
71
+ return <Page_login_username />;
72
+ case "login-password.ftl":
73
+ return <Page_login_password />;
74
+ case "webauthn-authenticate.ftl":
75
+ return <Page_webauthn_authenticate />;
76
+ case "webauthn-register.ftl":
77
+ return <Page_webauthn_register />;
78
+ case "login-update-password.ftl":
79
+ return <Page_login_update_password />;
80
+ case "link-idp-action.ftl":
81
+ return <Page_link_idp_action />;
82
+ case "login-update-profile.ftl":
83
+ return <Page_login_update_profile />;
84
+ case "login-idp-link-confirm.ftl":
85
+ return <Page_login_idp_link_confirm />;
86
+ case "login-idp-link-email.ftl":
87
+ return <Page_login_idp_link_email />;
88
+ case "login-page-expired.ftl":
89
+ return <Page_login_page_expired />;
90
+ case "login-config-totp.ftl":
91
+ return <Page_login_config_totp />;
92
+ case "logout-confirm.ftl":
93
+ return <Page_logout_confirm />;
94
+ case "idp-review-user-profile.ftl":
95
+ return <Page_idp_review_user_profile />;
96
+ case "update-email.ftl":
97
+ return <Page_update_email />;
98
+ case "select-authenticator.ftl":
99
+ return <Page_select_authenticator />;
100
+ case "saml-post-form.ftl":
101
+ return <Page_saml_post_form />;
102
+ case "delete-credential.ftl":
103
+ return <Page_delete_credential />;
104
+ case "code.ftl":
105
+ return <Page_code />;
106
+ case "delete-account-confirm.ftl":
107
+ return <Page_delete_account_confirm />;
108
+ case "frontchannel-logout.ftl":
109
+ return <Page_frontchannel_logout />;
110
+ case "login-recovery-authn-code-config.ftl":
111
+ return <Page_login_recovery_authn_code_config />;
112
+ case "login-recovery-authn-code-input.ftl":
113
+ return <Page_login_recovery_authn_code_input />;
114
+ case "login-reset-otp.ftl":
115
+ return <Page_login_reset_otp />;
116
+ case "login-x509-info.ftl":
117
+ return <Page_login_x509_info />;
118
+ case "webauthn-error.ftl":
119
+ return <Page_webauthn_error />;
120
+ case "login-passkeys-conditional-authenticate.ftl":
121
+ return <Page_login_passkeys_conditional_authenticate />;
122
+ case "login-idp-link-confirm-override.ftl":
123
+ return <Page_login_idp_link_confirm_override />;
124
+ case "select-organization.ftl":
125
+ return <Page_select_organization />;
126
+ }
127
+ })()}
128
+ </Suspense>
129
+ );
130
+ }
@@ -11,89 +11,76 @@ export default meta;
11
11
 
12
12
  type Story = StoryObj<typeof meta>;
13
13
 
14
- export const Default: Story = {
15
- render: () => <KcPageStory />
14
+ export const Default: Story = {};
15
+
16
+ export const Arabic: Story = {
17
+ args: {
18
+ kcContext: {
19
+ locale: {
20
+ currentLanguageTag: "ar",
21
+ rtl: true
22
+ }
23
+ }
24
+ }
16
25
  };
17
26
 
27
+ export const French: Story = {
28
+ args: {
29
+ kcContext: {
30
+ locale: {
31
+ currentLanguageTag: "fr",
32
+ rtl: false
33
+ }
34
+ }
35
+ }
36
+ };
18
37
 
19
38
  /**
20
- * This reflects the state when "Dark Theme" is set to "Disabled" in the realm settings
39
+ * This reflects the state when "Dark Theme" is set to "Disabled" in the realm settings
21
40
  * (Theme configuration tab of the Keycloak Admin UI).
22
- *
23
- * You should enable this configuration if you want to hide the "dark mode switch"
24
- * and ensure that the theme always renders in light mode, even if the user's system
41
+ *
42
+ * You should enable this configuration if you want to hide the "dark mode switch"
43
+ * and ensure that the theme always renders in light mode, even if the user's system
25
44
  * preference is set to dark.
26
45
  */
27
46
  export const WithDarkModeForbidden: Story = {
28
- render: () => (
29
- <KcPageStory
30
- kcContext={{
31
- darkMode: false
32
- }}
33
- />
34
- )
47
+ args: {
48
+ kcContext: {
49
+ darkMode: false
50
+ }
51
+ }
35
52
  };
36
53
 
37
-
38
54
  export const WithErrorCode: Story = {
39
- render: () => (
40
- <KcPageStory
41
- kcContext={{
42
- code: {
43
- success: false,
44
- error: "Failed to generate code"
45
- }
46
- }}
47
- />
48
- )
49
- };
50
- export const Arabic: Story = {
51
- render: () => (
52
- <KcPageStory
53
- kcContext={{
54
- locale: {
55
- currentLanguageTag: "ar",
56
- rtl: true
57
- }
58
- }}
59
- />
60
- )
61
- };
62
- export const French: Story = {
63
- render: () => (
64
- <KcPageStory
65
- kcContext={{
66
- locale: {
67
- currentLanguageTag: "fr"
68
- }
69
- }}
70
- />
71
- )
55
+ args: {
56
+ kcContext: {
57
+ code: {
58
+ success: false,
59
+ error: "Failed to generate code"
60
+ }
61
+ }
62
+ }
72
63
  };
73
64
  export const WithFrenchLanguage: Story = {
74
- render: () => (
75
- <KcPageStory
76
- kcContext={{
77
- locale: {
78
- currentLanguageTag: "fr"
79
- },
80
- code: {
81
- success: true,
82
- code: "XYZ789"
83
- }
84
- }}
85
- />
86
- )
65
+ args: {
66
+ kcContext: {
67
+ locale: {
68
+ currentLanguageTag: "fr"
69
+ },
70
+ code: {
71
+ success: true,
72
+ code: "XYZ789"
73
+ }
74
+ }
75
+ }
87
76
  };
88
77
  export const WithHtmlErrorMessage: Story = {
89
- render: () => (
90
- <KcPageStory
91
- kcContext={{
92
- code: {
93
- success: false,
94
- error: "Something went wrong. <a href='https://example.com'>Try again</a>"
95
- }
96
- }}
97
- />
98
- )
78
+ args: {
79
+ kcContext: {
80
+ code: {
81
+ success: false,
82
+ error: "Something went wrong. <a href='https://example.com'>Try again</a>"
83
+ }
84
+ }
85
+ }
99
86
  };