@oussemasahbeni/keycloakify-login-shadcn 250004.0.2 → 250004.0.7

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 (174) hide show
  1. package/keycloak-theme/components/ui/alert.tsx +4 -4
  2. package/keycloak-theme/components/ui/dropdown-menu.tsx +5 -5
  3. package/keycloak-theme/components/ui/input.tsx +1 -1
  4. package/keycloak-theme/components/ui/select.tsx +4 -4
  5. package/keycloak-theme/components/ui/separator.tsx +1 -1
  6. package/keycloak-theme/login/KcContext.ts +23 -19
  7. package/keycloak-theme/login/KcPage.tsx +47 -60
  8. package/keycloak-theme/login/assets/img/auth-logo.svg +100 -100
  9. package/keycloak-theme/login/assets/img/shape.svg +71 -71
  10. package/keycloak-theme/login/components/LogoutOtherSessions.tsx +26 -26
  11. package/keycloak-theme/login/components/PasswordWrapper.tsx +35 -35
  12. package/keycloak-theme/login/components/Template/Template.tsx +227 -226
  13. package/keycloak-theme/login/components/Template/index.ts +1 -1
  14. package/keycloak-theme/login/components/Template/useInitializeTemplate.ts +61 -61
  15. package/keycloak-theme/login/components/UserProfileFormFields/AddRemoveButtonsMultiValuedAttribute.tsx +61 -61
  16. package/keycloak-theme/login/components/UserProfileFormFields/DO_MAKE_USER_CONFIRM_PASSWORD.ts +2 -2
  17. package/keycloak-theme/login/components/UserProfileFormFields/FieldErrors.tsx +28 -28
  18. package/keycloak-theme/login/components/UserProfileFormFields/GroupLabel.tsx +70 -70
  19. package/keycloak-theme/login/components/UserProfileFormFields/InputFieldByType.tsx +58 -58
  20. package/keycloak-theme/login/components/UserProfileFormFields/InputTag.tsx +116 -116
  21. package/keycloak-theme/login/components/UserProfileFormFields/InputTagSelects.tsx +135 -135
  22. package/keycloak-theme/login/components/UserProfileFormFields/SelectTag.tsx +114 -114
  23. package/keycloak-theme/login/components/UserProfileFormFields/TextareaTag.tsx +42 -42
  24. package/keycloak-theme/login/components/UserProfileFormFields/UserProfileFormFields.tsx +127 -127
  25. package/keycloak-theme/login/components/UserProfileFormFields/index.ts +1 -1
  26. package/keycloak-theme/login/i18n.ts +47 -51
  27. package/keycloak-theme/login/mocks/getKcContextMock.ts +22 -18
  28. package/keycloak-theme/login/pages/PageIndex.tsx +134 -134
  29. package/keycloak-theme/login/pages/code/Page.stories.tsx +62 -78
  30. package/keycloak-theme/login/pages/code/Page.tsx +89 -89
  31. package/keycloak-theme/login/pages/code/index.ts +3 -3
  32. package/keycloak-theme/login/pages/delete-account-confirm/Page.stories.tsx +39 -46
  33. package/keycloak-theme/login/pages/delete-account-confirm/Page.tsx +63 -63
  34. package/keycloak-theme/login/pages/delete-account-confirm/index.ts +3 -3
  35. package/keycloak-theme/login/pages/delete-credential/Page.stories.tsx +26 -30
  36. package/keycloak-theme/login/pages/delete-credential/Page.tsx +51 -51
  37. package/keycloak-theme/login/pages/delete-credential/index.ts +3 -3
  38. package/keycloak-theme/login/pages/error/Page.stories.tsx +47 -58
  39. package/keycloak-theme/login/pages/error/Page.tsx +42 -42
  40. package/keycloak-theme/login/pages/error/index.ts +3 -3
  41. package/keycloak-theme/login/pages/frontchannel-logout/Page.stories.tsx +25 -32
  42. package/keycloak-theme/login/pages/frontchannel-logout/Page.tsx +84 -84
  43. package/keycloak-theme/login/pages/frontchannel-logout/index.ts +3 -3
  44. package/keycloak-theme/login/pages/idp-review-user-profile/Page.stories.tsx +46 -58
  45. package/keycloak-theme/login/pages/idp-review-user-profile/Page.tsx +52 -52
  46. package/keycloak-theme/login/pages/idp-review-user-profile/index.ts +3 -3
  47. package/keycloak-theme/login/pages/info/Page.stories.tsx +50 -60
  48. package/keycloak-theme/login/pages/info/Page.tsx +92 -92
  49. package/keycloak-theme/login/pages/link-idp-action/Page.stories.tsx +32 -16
  50. package/keycloak-theme/login/pages/link-idp-action/Page.tsx +43 -43
  51. package/keycloak-theme/login/pages/link-idp-action/index.ts +3 -3
  52. package/keycloak-theme/login/pages/login/Form.tsx +242 -242
  53. package/keycloak-theme/login/pages/login/Info.tsx +29 -29
  54. package/keycloak-theme/login/pages/login/Page.stories.tsx +345 -365
  55. package/keycloak-theme/login/pages/login/Page.tsx +44 -44
  56. package/keycloak-theme/login/pages/login/SocialProviders.tsx +107 -107
  57. package/keycloak-theme/login/pages/login/index.ts +3 -3
  58. package/keycloak-theme/login/pages/login/providers/apple.svg +3 -3
  59. package/keycloak-theme/login/pages/login/providers/bitbucket.svg +11 -11
  60. package/keycloak-theme/login/pages/login/providers/discord.svg +4 -4
  61. package/keycloak-theme/login/pages/login/providers/facebook.svg +5 -5
  62. package/keycloak-theme/login/pages/login/providers/github.svg +3 -3
  63. package/keycloak-theme/login/pages/login/providers/gitlab.svg +7 -7
  64. package/keycloak-theme/login/pages/login/providers/google.svg +7 -7
  65. package/keycloak-theme/login/pages/login/providers/instagram.svg +31 -31
  66. package/keycloak-theme/login/pages/login/providers/linkedin.svg +3 -3
  67. package/keycloak-theme/login/pages/login/providers/microsoft.svg +6 -6
  68. package/keycloak-theme/login/pages/login/providers/oidc.svg +5 -5
  69. package/keycloak-theme/login/pages/login/providers/openshift.svg +7 -7
  70. package/keycloak-theme/login/pages/login/providers/paypal.svg +6 -6
  71. package/keycloak-theme/login/pages/login/providers/slack.svg +11 -11
  72. package/keycloak-theme/login/pages/login/providers/stackoverflow.svg +5 -5
  73. package/keycloak-theme/login/pages/login/providers/x.svg +3 -3
  74. package/keycloak-theme/login/pages/login/useProviderLogos.tsx +39 -39
  75. package/keycloak-theme/login/pages/login/useScript.tsx +62 -62
  76. package/keycloak-theme/login/pages/login-config-totp/Page.stories.tsx +45 -59
  77. package/keycloak-theme/login/pages/login-config-totp/Page.tsx +240 -240
  78. package/keycloak-theme/login/pages/login-config-totp/index.ts +3 -3
  79. package/keycloak-theme/login/pages/login-idp-link-confirm/Page.stories.tsx +30 -34
  80. package/keycloak-theme/login/pages/login-idp-link-confirm/Page.tsx +43 -43
  81. package/keycloak-theme/login/pages/login-idp-link-confirm/index.ts +3 -3
  82. package/keycloak-theme/login/pages/login-idp-link-confirm-override/Page.stories.tsx +16 -22
  83. package/keycloak-theme/login/pages/login-idp-link-confirm-override/Page.tsx +47 -47
  84. package/keycloak-theme/login/pages/login-idp-link-confirm-override/index.ts +3 -3
  85. package/keycloak-theme/login/pages/login-idp-link-email/Page.stories.tsx +54 -62
  86. package/keycloak-theme/login/pages/login-idp-link-email/Page.tsx +54 -54
  87. package/keycloak-theme/login/pages/login-idp-link-email/index.ts +3 -3
  88. package/keycloak-theme/login/pages/login-oauth-grant/Page.stories.tsx +39 -45
  89. package/keycloak-theme/login/pages/login-oauth-grant/Page.tsx +126 -126
  90. package/keycloak-theme/login/pages/login-oauth-grant/index.ts +3 -3
  91. package/keycloak-theme/login/pages/login-oauth2-device-verify-user-code/Page.stories.tsx +38 -48
  92. package/keycloak-theme/login/pages/login-oauth2-device-verify-user-code/Page.tsx +58 -58
  93. package/keycloak-theme/login/pages/login-oauth2-device-verify-user-code/index.ts +3 -3
  94. package/keycloak-theme/login/pages/login-otp/Page.stories.tsx +82 -96
  95. package/keycloak-theme/login/pages/login-otp/Page.tsx +108 -108
  96. package/keycloak-theme/login/pages/login-otp/index.ts +3 -3
  97. package/keycloak-theme/login/pages/login-page-expired/Page.stories.tsx +28 -36
  98. package/keycloak-theme/login/pages/login-page-expired/Page.tsx +47 -47
  99. package/keycloak-theme/login/pages/login-page-expired/index.ts +3 -3
  100. package/keycloak-theme/login/pages/login-passkeys-conditional-authenticate/Page.stories.tsx +20 -0
  101. package/keycloak-theme/login/pages/login-passkeys-conditional-authenticate/Page.tsx +233 -233
  102. package/keycloak-theme/login/pages/login-passkeys-conditional-authenticate/index.ts +3 -3
  103. package/keycloak-theme/login/pages/login-passkeys-conditional-authenticate/useScript.tsx +63 -63
  104. package/keycloak-theme/login/pages/login-password/Page.stories.tsx +55 -56
  105. package/keycloak-theme/login/pages/login-password/Page.tsx +149 -149
  106. package/keycloak-theme/login/pages/login-password/index.ts +3 -3
  107. package/keycloak-theme/login/pages/login-password/useScript.tsx +63 -63
  108. package/keycloak-theme/login/pages/login-recovery-authn-code-config/Page.stories.tsx +28 -36
  109. package/keycloak-theme/login/pages/login-recovery-authn-code-config/Page.tsx +181 -181
  110. package/keycloak-theme/login/pages/login-recovery-authn-code-config/index.ts +3 -3
  111. package/keycloak-theme/login/pages/login-recovery-authn-code-config/useScript.tsx +145 -145
  112. package/keycloak-theme/login/pages/login-recovery-authn-code-input/Page.stories.tsx +16 -22
  113. package/keycloak-theme/login/pages/login-recovery-authn-code-input/Page.tsx +70 -70
  114. package/keycloak-theme/login/pages/login-recovery-authn-code-input/index.ts +3 -3
  115. package/keycloak-theme/login/pages/login-reset-otp/Page.stories.tsx +62 -74
  116. package/keycloak-theme/login/pages/login-reset-otp/Page.tsx +86 -86
  117. package/keycloak-theme/login/pages/login-reset-otp/index.ts +3 -3
  118. package/keycloak-theme/login/pages/login-reset-password/Form.tsx +68 -68
  119. package/keycloak-theme/login/pages/login-reset-password/Page.stories.tsx +44 -54
  120. package/keycloak-theme/login/pages/login-reset-password/Page.tsx +27 -27
  121. package/keycloak-theme/login/pages/login-reset-password/index.ts +3 -3
  122. package/keycloak-theme/login/pages/login-update-password/Page.stories.tsx +40 -50
  123. package/keycloak-theme/login/pages/login-update-password/Page.tsx +111 -111
  124. package/keycloak-theme/login/pages/login-update-password/index.ts +3 -3
  125. package/keycloak-theme/login/pages/login-update-profile/Page.stories.tsx +28 -36
  126. package/keycloak-theme/login/pages/login-update-profile/Page.tsx +68 -68
  127. package/keycloak-theme/login/pages/login-update-profile/index.ts +3 -3
  128. package/keycloak-theme/login/pages/login-username/Page.stories.tsx +32 -42
  129. package/keycloak-theme/login/pages/login-username/Page.tsx +246 -246
  130. package/keycloak-theme/login/pages/login-username/index.ts +3 -3
  131. package/keycloak-theme/login/pages/login-username/useScript.tsx +62 -62
  132. package/keycloak-theme/login/pages/login-verify-email/Page.stories.tsx +68 -80
  133. package/keycloak-theme/login/pages/login-verify-email/Page.tsx +38 -38
  134. package/keycloak-theme/login/pages/login-verify-email/index.ts +3 -3
  135. package/keycloak-theme/login/pages/login-x509-info/Page.stories.tsx +29 -37
  136. package/keycloak-theme/login/pages/login-x509-info/Page.tsx +75 -75
  137. package/keycloak-theme/login/pages/login-x509-info/index.ts +3 -3
  138. package/keycloak-theme/login/pages/logout-confirm/Page.stories.tsx +34 -42
  139. package/keycloak-theme/login/pages/logout-confirm/Page.tsx +53 -53
  140. package/keycloak-theme/login/pages/logout-confirm/index.ts +3 -3
  141. package/keycloak-theme/login/pages/register/Form.tsx +106 -106
  142. package/keycloak-theme/login/pages/register/Page.stories.tsx +23 -6
  143. package/keycloak-theme/login/pages/register/Page.tsx +26 -26
  144. package/keycloak-theme/login/pages/register/TermsAcceptance.tsx +56 -56
  145. package/keycloak-theme/login/pages/register/index.ts +3 -3
  146. package/keycloak-theme/login/pages/saml-post-form/Page.stories.tsx +16 -22
  147. package/keycloak-theme/login/pages/saml-post-form/Page.tsx +66 -66
  148. package/keycloak-theme/login/pages/saml-post-form/index.ts +3 -3
  149. package/keycloak-theme/login/pages/select-authenticator/Page.stories.tsx +83 -95
  150. package/keycloak-theme/login/pages/select-authenticator/Page.tsx +100 -100
  151. package/keycloak-theme/login/pages/select-authenticator/index.ts +3 -3
  152. package/keycloak-theme/login/pages/select-organization/Page.stories.tsx +62 -49
  153. package/keycloak-theme/login/pages/select-organization/Page.tsx +126 -126
  154. package/keycloak-theme/login/pages/select-organization/index.ts +3 -3
  155. package/keycloak-theme/login/pages/terms/Page.stories.tsx +15 -0
  156. package/keycloak-theme/login/pages/terms/Page.tsx +51 -51
  157. package/keycloak-theme/login/pages/terms/index.ts +3 -3
  158. package/keycloak-theme/login/pages/update-email/Page.stories.tsx +27 -35
  159. package/keycloak-theme/login/pages/update-email/Page.tsx +62 -62
  160. package/keycloak-theme/login/pages/update-email/index.ts +3 -3
  161. package/keycloak-theme/login/pages/webauthn-authenticate/Page.stories.tsx +112 -126
  162. package/keycloak-theme/login/pages/webauthn-authenticate/Page.tsx +202 -202
  163. package/keycloak-theme/login/pages/webauthn-authenticate/index.ts +3 -3
  164. package/keycloak-theme/login/pages/webauthn-authenticate/useScript.tsx +55 -55
  165. package/keycloak-theme/login/pages/webauthn-error/Page.stories.tsx +54 -66
  166. package/keycloak-theme/login/pages/webauthn-error/Page.tsx +73 -73
  167. package/keycloak-theme/login/pages/webauthn-error/index.ts +3 -3
  168. package/keycloak-theme/login/pages/webauthn-register/Page.stories.tsx +39 -49
  169. package/keycloak-theme/login/pages/webauthn-register/Page.tsx +78 -78
  170. package/keycloak-theme/login/pages/webauthn-register/index.ts +3 -3
  171. package/keycloak-theme/login/pages/webauthn-register/useScript.tsx +62 -62
  172. package/keycloak-theme/login/shared/getColorScheme.ts +45 -0
  173. package/keycloak-theme/login/styleLevelCustomization.tsx +36 -17
  174. package/package.json +6 -5
@@ -1,126 +1,126 @@
1
- import { Button } from "@/components/ui/button";
2
- import { CardDescription } from "@/components/ui/card";
3
- import { useI18n } from '@/login/i18n';
4
- import { useKcContext } from '@/login/KcContext';
5
- import { assert } from 'tsafe/assert';
6
- import { Template } from "../../components/Template";
7
-
8
- export function Page() {
9
- const { kcContext } = useKcContext();
10
- assert(kcContext.pageId === "login-oauth-grant.ftl");
11
-
12
- const { msg, msgStr, advancedMsg, advancedMsgStr } = useI18n();
13
-
14
-
15
- return (
16
- <Template
17
- bodyClassName="oauth"
18
- headerNode={
19
- <div className="flex flex-col items-center space-y-3">
20
- {kcContext.client.attributes.logoUri && (
21
- <img
22
- src={kcContext.client.attributes.logoUri}
23
- alt="Client logo"
24
- className="h-12 w-auto object-contain"
25
- />
26
- )}
27
- <p className="text-lg font-medium text-center">
28
- {kcContext.client.name
29
- ? msg("oauthGrantTitle", advancedMsgStr(kcContext.client.name))
30
- : msg("oauthGrantTitle", kcContext.client.clientId)}
31
- </p>
32
- </div>
33
- }
34
- >
35
- <div className="space-y-6">
36
- <div className="text-base">{msg("oauthGrantRequest")}</div>
37
-
38
- <div className="space-y-4">
39
- <div className="space-y-2">
40
- {kcContext.oauth.clientScopesRequested.map(clientScope => (
41
- <div
42
- key={clientScope.consentScreenText}
43
- className="flex items-start space-x-2"
44
- >
45
- <div className="w-2 h-2 bg-primary rounded-full mt-2 shrink-0" />
46
- <span className="text-sm text-muted-foreground">
47
- {advancedMsg(clientScope.consentScreenText)}
48
- {clientScope.dynamicScopeParameter && (
49
- <>
50
- :{" "}
51
- <span className="font-medium text-foreground">
52
- {clientScope.dynamicScopeParameter}
53
- </span>
54
- </>
55
- )}
56
- </span>
57
- </div>
58
- ))}
59
- </div>
60
-
61
- {(kcContext.client.attributes.policyUri || kcContext.client.attributes.tosUri) && (
62
- <>
63
- <div className="space-y-2">
64
- <CardDescription className="text-xs">
65
- {kcContext.client.name
66
- ? msg(
67
- "oauthGrantInformation",
68
- advancedMsgStr(kcContext.client.name)
69
- )
70
- : msg("oauthGrantInformation", kcContext.client.clientId)}
71
- </CardDescription>
72
- <div className="flex flex-wrap gap-2 text-xs">
73
- {kcContext.client.attributes.tosUri && (
74
- <a
75
- href={kcContext.client.attributes.tosUri}
76
- target="_blank"
77
- rel="noopener noreferrer"
78
- className="text-primary dark:text-white hover:text-primary/80 underline underline-offset-4"
79
- >
80
- {msg("oauthGrantTos")}
81
- </a>
82
- )}
83
- {kcContext.client.attributes.policyUri && (
84
- <a
85
- href={kcContext.client.attributes.policyUri}
86
- target="_blank"
87
- rel="noopener noreferrer"
88
- className="text-primary dark:text-white hover:text-primary/80 underline underline-offset-4"
89
- >
90
- {msg("oauthGrantPolicy")}
91
- </a>
92
- )}
93
- </div>
94
- </div>
95
- </>
96
- )}
97
- </div>
98
-
99
- <div>
100
- <form className="w-full" action={kcContext.url.oauthAction} method="POST">
101
- <input type="hidden" name="code" value={kcContext.oauth.code} />
102
- <div className="flex flex-col sm:flex-row gap-3 w-full">
103
- <Button
104
- type="submit"
105
- name="cancel"
106
- id="kc-cancel"
107
- variant="outline"
108
- className="flex-1"
109
- >
110
- {msgStr("doNo")}
111
- </Button>
112
- <Button
113
- type="submit"
114
- name="accept"
115
- id="kc-login"
116
- className="flex-1"
117
- >
118
- {msgStr("doYes")}
119
- </Button>
120
- </div>
121
- </form>
122
- </div>
123
- </div>
124
- </Template>
125
- );
126
- }
1
+ import { Button } from "@/components/ui/button";
2
+ import { CardDescription } from "@/components/ui/card";
3
+ import { useI18n } from '@/login/i18n';
4
+ import { useKcContext } from '@/login/KcContext';
5
+ import { assert } from 'tsafe/assert';
6
+ import { Template } from "../../components/Template";
7
+
8
+ export function Page() {
9
+ const { kcContext } = useKcContext();
10
+ assert(kcContext.pageId === "login-oauth-grant.ftl");
11
+
12
+ const { msg, msgStr, advancedMsg, advancedMsgStr } = useI18n();
13
+
14
+
15
+ return (
16
+ <Template
17
+ bodyClassName="oauth"
18
+ headerNode={
19
+ <div className="flex flex-col items-center space-y-3">
20
+ {kcContext.client.attributes.logoUri && (
21
+ <img
22
+ src={kcContext.client.attributes.logoUri}
23
+ alt="Client logo"
24
+ className="h-12 w-auto object-contain"
25
+ />
26
+ )}
27
+ <p className="text-lg font-medium text-center">
28
+ {kcContext.client.name
29
+ ? msg("oauthGrantTitle", advancedMsgStr(kcContext.client.name))
30
+ : msg("oauthGrantTitle", kcContext.client.clientId)}
31
+ </p>
32
+ </div>
33
+ }
34
+ >
35
+ <div className="space-y-6">
36
+ <div className="text-base">{msg("oauthGrantRequest")}</div>
37
+
38
+ <div className="space-y-4">
39
+ <div className="space-y-2">
40
+ {kcContext.oauth.clientScopesRequested.map(clientScope => (
41
+ <div
42
+ key={clientScope.consentScreenText}
43
+ className="flex items-start space-x-2"
44
+ >
45
+ <div className="w-2 h-2 bg-primary rounded-full mt-2 shrink-0" />
46
+ <span className="text-sm text-muted-foreground">
47
+ {advancedMsg(clientScope.consentScreenText)}
48
+ {clientScope.dynamicScopeParameter && (
49
+ <>
50
+ :{" "}
51
+ <span className="font-medium text-foreground">
52
+ {clientScope.dynamicScopeParameter}
53
+ </span>
54
+ </>
55
+ )}
56
+ </span>
57
+ </div>
58
+ ))}
59
+ </div>
60
+
61
+ {(kcContext.client.attributes.policyUri || kcContext.client.attributes.tosUri) && (
62
+ <>
63
+ <div className="space-y-2">
64
+ <CardDescription className="text-xs">
65
+ {kcContext.client.name
66
+ ? msg(
67
+ "oauthGrantInformation",
68
+ advancedMsgStr(kcContext.client.name)
69
+ )
70
+ : msg("oauthGrantInformation", kcContext.client.clientId)}
71
+ </CardDescription>
72
+ <div className="flex flex-wrap gap-2 text-xs">
73
+ {kcContext.client.attributes.tosUri && (
74
+ <a
75
+ href={kcContext.client.attributes.tosUri}
76
+ target="_blank"
77
+ rel="noopener noreferrer"
78
+ className="text-primary dark:text-white hover:text-primary/80 underline underline-offset-4"
79
+ >
80
+ {msg("oauthGrantTos")}
81
+ </a>
82
+ )}
83
+ {kcContext.client.attributes.policyUri && (
84
+ <a
85
+ href={kcContext.client.attributes.policyUri}
86
+ target="_blank"
87
+ rel="noopener noreferrer"
88
+ className="text-primary dark:text-white hover:text-primary/80 underline underline-offset-4"
89
+ >
90
+ {msg("oauthGrantPolicy")}
91
+ </a>
92
+ )}
93
+ </div>
94
+ </div>
95
+ </>
96
+ )}
97
+ </div>
98
+
99
+ <div>
100
+ <form className="w-full" action={kcContext.url.oauthAction} method="POST">
101
+ <input type="hidden" name="code" value={kcContext.oauth.code} />
102
+ <div className="flex flex-col sm:flex-row gap-3 w-full">
103
+ <Button
104
+ type="submit"
105
+ name="cancel"
106
+ id="kc-cancel"
107
+ variant="outline"
108
+ className="flex-1"
109
+ >
110
+ {msgStr("doNo")}
111
+ </Button>
112
+ <Button
113
+ type="submit"
114
+ name="accept"
115
+ id="kc-login"
116
+ className="flex-1"
117
+ >
118
+ {msgStr("doYes")}
119
+ </Button>
120
+ </div>
121
+ </form>
122
+ </div>
123
+ </div>
124
+ </Template>
125
+ );
126
+ }
@@ -1,3 +1,3 @@
1
- import { Page } from "./Page";
2
-
3
- export default Page;
1
+ import { Page } from "./Page";
2
+
3
+ export default Page;
@@ -13,32 +13,26 @@ export default meta;
13
13
 
14
14
  type Story = StoryObj<typeof meta>;
15
15
 
16
- export const Default: Story = {
17
- render: () => <KcPageStory />
18
- };
16
+ export const Default: Story = {};
19
17
 
20
18
  export const Arabic: Story = {
21
- render: () => (
22
- <KcPageStory
23
- kcContext={{
24
- locale: {
25
- currentLanguageTag: "ar",
26
- rtl: true
27
- }
28
- }}
29
- />
30
- )
19
+ args: {
20
+ kcContext: {
21
+ locale: {
22
+ currentLanguageTag: "ar",
23
+ rtl: true
24
+ }
25
+ }
26
+ }
31
27
  };
32
28
  export const French: Story = {
33
- render: () => (
34
- <KcPageStory
35
- kcContext={{
36
- locale: {
37
- currentLanguageTag: "fr"
38
- }
39
- }}
40
- />
41
- )
29
+ args: {
30
+ kcContext: {
31
+ locale: {
32
+ currentLanguageTag: "fr"
33
+ }
34
+ }
35
+ }
42
36
  };
43
37
 
44
38
  /**
@@ -48,19 +42,17 @@ export const French: Story = {
48
42
  * - Key Aspect: Ensures the error message is properly shown when the user enters an invalid code.
49
43
  */
50
44
  export const WithErrorMessage: Story = {
51
- render: () => (
52
- <KcPageStory
53
- kcContext={{
54
- url: {
55
- oauth2DeviceVerificationAction: "/mock-oauth2-device-verification"
56
- },
57
- message: {
58
- summary: "The user code you entered is invalid. Please try again.",
59
- type: "error"
60
- }
61
- }}
62
- />
63
- )
45
+ args: {
46
+ kcContext: {
47
+ url: {
48
+ oauth2DeviceVerificationAction: "/mock-oauth2-device-verification"
49
+ },
50
+ message: {
51
+ summary: "The user code you entered is invalid. Please try again.",
52
+ type: "error"
53
+ }
54
+ }
55
+ }
64
56
  };
65
57
 
66
58
  /**
@@ -70,17 +62,15 @@ export const WithErrorMessage: Story = {
70
62
  * - Key Aspect: Ensures the form displays validation errors when the field is left empty.
71
63
  */
72
64
  export const WithEmptyInputField: Story = {
73
- render: () => (
74
- <KcPageStory
75
- kcContext={{
76
- url: {
77
- oauth2DeviceVerificationAction: "/mock-oauth2-device-verification"
78
- },
79
- message: {
80
- summary: "User code cannot be empty. Please enter a valid code.",
81
- type: "error"
82
- }
83
- }}
84
- />
85
- )
65
+ args: {
66
+ kcContext: {
67
+ url: {
68
+ oauth2DeviceVerificationAction: "/mock-oauth2-device-verification"
69
+ },
70
+ message: {
71
+ summary: "User code cannot be empty. Please enter a valid code.",
72
+ type: "error"
73
+ }
74
+ }
75
+ }
86
76
  };
@@ -1,58 +1,58 @@
1
- import { Button } from "@/components/ui/button";
2
- import { Field, FieldLabel } from "@/components/ui/field";
3
- import { Input } from "@/components/ui/input";
4
- import { useI18n } from '@/login/i18n';
5
- import { useKcContext } from '@/login/KcContext';
6
- import { useKcClsx } from '@keycloakify/login-ui/useKcClsx';
7
- import { assert } from 'tsafe/assert';
8
- import { Template } from "../../components/Template";
9
-
10
- export function Page() {
11
- const { kcContext } = useKcContext();
12
- assert(kcContext.pageId === "login-oauth2-device-verify-user-code.ftl");
13
-
14
- const { msg, msgStr } = useI18n();
15
-
16
- const { kcClsx } = useKcClsx();
17
-
18
- return (
19
- <Template
20
- headerNode={msg("oauth2DeviceVerificationTitle")}
21
- >
22
- <form
23
- id="kc-user-verify-device-user-code-form"
24
- className="space-y-5"
25
- action={kcContext.url.oauth2DeviceVerificationAction}
26
- method="post"
27
- >
28
- <Field>
29
- <FieldLabel htmlFor="device-user-code">
30
- {msg("verifyOAuth2DeviceUserCode")}
31
- </FieldLabel>
32
- <Input
33
- id="device-user-code"
34
- name="device_user_code"
35
- autoComplete="off"
36
- type="text"
37
- className={kcClsx("kcInputClass")}
38
- autoFocus
39
- />
40
- </Field>
41
-
42
- <div className={kcClsx("kcFormGroupClass")}>
43
- <div id="kc-form-options" className={kcClsx("kcFormOptionsClass")}>
44
- <div className={kcClsx("kcFormOptionsWrapperClass")}></div>
45
- </div>
46
-
47
- <div id="kc-form-buttons" className={kcClsx("kcFormButtonsClass")}>
48
- <div className={kcClsx("kcFormButtonsWrapperClass")}>
49
- <Button className="w-full" type="submit">
50
- {msgStr("doSubmit")}
51
- </Button>
52
- </div>
53
- </div>
54
- </div>
55
- </form>
56
- </Template>
57
- );
58
- }
1
+ import { Button } from "@/components/ui/button";
2
+ import { Field, FieldLabel } from "@/components/ui/field";
3
+ import { Input } from "@/components/ui/input";
4
+ import { useI18n } from '@/login/i18n';
5
+ import { useKcContext } from '@/login/KcContext';
6
+ import { useKcClsx } from '@keycloakify/login-ui/useKcClsx';
7
+ import { assert } from 'tsafe/assert';
8
+ import { Template } from "../../components/Template";
9
+
10
+ export function Page() {
11
+ const { kcContext } = useKcContext();
12
+ assert(kcContext.pageId === "login-oauth2-device-verify-user-code.ftl");
13
+
14
+ const { msg, msgStr } = useI18n();
15
+
16
+ const { kcClsx } = useKcClsx();
17
+
18
+ return (
19
+ <Template
20
+ headerNode={msg("oauth2DeviceVerificationTitle")}
21
+ >
22
+ <form
23
+ id="kc-user-verify-device-user-code-form"
24
+ className="space-y-5"
25
+ action={kcContext.url.oauth2DeviceVerificationAction}
26
+ method="post"
27
+ >
28
+ <Field>
29
+ <FieldLabel htmlFor="device-user-code">
30
+ {msg("verifyOAuth2DeviceUserCode")}
31
+ </FieldLabel>
32
+ <Input
33
+ id="device-user-code"
34
+ name="device_user_code"
35
+ autoComplete="off"
36
+ type="text"
37
+ className={kcClsx("kcInputClass")}
38
+ autoFocus
39
+ />
40
+ </Field>
41
+
42
+ <div className={kcClsx("kcFormGroupClass")}>
43
+ <div id="kc-form-options" className={kcClsx("kcFormOptionsClass")}>
44
+ <div className={kcClsx("kcFormOptionsWrapperClass")}></div>
45
+ </div>
46
+
47
+ <div id="kc-form-buttons" className={kcClsx("kcFormButtonsClass")}>
48
+ <div className={kcClsx("kcFormButtonsWrapperClass")}>
49
+ <Button className="w-full" type="submit">
50
+ {msgStr("doSubmit")}
51
+ </Button>
52
+ </div>
53
+ </div>
54
+ </div>
55
+ </form>
56
+ </Template>
57
+ );
58
+ }
@@ -1,3 +1,3 @@
1
- import { Page } from "./Page";
2
-
3
- export default Page;
1
+ import { Page } from "./Page";
2
+
3
+ export default Page;