@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,89 +1,89 @@
1
- import { Alert, AlertDescription } from "@/components/ui/alert";
2
- import { Input } from "@/components/ui/input";
3
- import { kcSanitize } from "keycloakify/lib/kcSanitize";
4
-
5
- import { Button } from "@/components/ui/button";
6
-
7
- import { MdContentCopy } from "react-icons/md";
8
-
9
- import { useI18n } from '@/login/i18n';
10
- import { useKcContext } from '@/login/KcContext';
11
- import { useState } from 'react';
12
- import { MdCheck } from "react-icons/md";
13
- import { assert } from "tsafe/assert";
14
- import { Template } from "../../components/Template";
15
-
16
- export function Page() {
17
-
18
- const { kcContext } = useKcContext();
19
- assert(kcContext.pageId === "code.ftl");
20
-
21
- const [copied, setCopied] = useState(false);
22
-
23
- const { msg } = useI18n();
24
-
25
-
26
- const handleCopy = async () => {
27
- try {
28
- await navigator.clipboard.writeText(kcContext.code.code ?? "");
29
- setCopied(true);
30
- setTimeout(() => setCopied(false), 2000);
31
- } catch (err) {
32
- console.error("Failed to copy text: ", err);
33
- }
34
- };
35
-
36
- return (
37
- <Template
38
- headerNode={
39
- kcContext.code.success ? msg("codeSuccessTitle") : msg("codeErrorTitle", kcContext.code.error)
40
- }
41
- >
42
- <div id="kc-code">
43
- {kcContext.code.success ? (
44
- <>
45
- <Alert variant="success" className=" my-3">
46
- <AlertDescription>
47
- <span>{msg("copyCodeInstruction")}</span>
48
- </AlertDescription>
49
- </Alert>
50
- <div className="relative">
51
- <Input
52
- id="code"
53
- defaultValue={kcContext.code.code}
54
- readOnly
55
- className="font-mono"
56
- />
57
-
58
- <Button
59
- onClick={handleCopy}
60
- variant="secondary"
61
- size="icon"
62
- className="size-4 absolute end-2 top-1/2 transform -translate-y-1/2"
63
- >
64
- {copied ? (
65
- <MdCheck className="text-green-500" />
66
- ) : (
67
- <MdContentCopy />
68
- )}
69
- </Button>
70
- </div>
71
- </>
72
- ) : (
73
- kcContext.code.error && (
74
- <Alert variant="error" className="my-3">
75
- <AlertDescription>
76
- <p
77
- id="error"
78
- dangerouslySetInnerHTML={{
79
- __html: kcSanitize(kcContext.code.error)
80
- }}
81
- />
82
- </AlertDescription>
83
- </Alert>
84
- )
85
- )}
86
- </div>
87
- </Template>
88
- );
89
- }
1
+ import { Alert, AlertDescription } from "@/components/ui/alert";
2
+ import { Input } from "@/components/ui/input";
3
+ import { kcSanitize } from "keycloakify/lib/kcSanitize";
4
+
5
+ import { Button } from "@/components/ui/button";
6
+
7
+ import { MdContentCopy } from "react-icons/md";
8
+
9
+ import { useI18n } from "@/login/i18n";
10
+ import { useKcContext } from "@/login/KcContext";
11
+ import { useState } from "react";
12
+ import { MdCheck } from "react-icons/md";
13
+ import { assert } from "tsafe/assert";
14
+ import { Template } from "../../components/Template";
15
+
16
+ export function Page() {
17
+ const { kcContext } = useKcContext();
18
+ assert(kcContext.pageId === "code.ftl");
19
+
20
+ const [copied, setCopied] = useState(false);
21
+
22
+ const { msg } = useI18n();
23
+
24
+ const handleCopy = async () => {
25
+ try {
26
+ await navigator.clipboard.writeText(kcContext.code.code ?? "");
27
+ setCopied(true);
28
+ setTimeout(() => setCopied(false), 2000);
29
+ } catch (err) {
30
+ console.error("Failed to copy text: ", err);
31
+ }
32
+ };
33
+
34
+ return (
35
+ <Template
36
+ headerNode={
37
+ kcContext.code.success
38
+ ? msg("codeSuccessTitle")
39
+ : msg("codeErrorTitle", kcContext.code.error)
40
+ }
41
+ >
42
+ <div id="kc-code">
43
+ {kcContext.code.success ? (
44
+ <>
45
+ <Alert variant="success" className=" my-3">
46
+ <AlertDescription>
47
+ <span>{msg("copyCodeInstruction")}</span>
48
+ </AlertDescription>
49
+ </Alert>
50
+ <div className="relative">
51
+ <Input
52
+ id="code"
53
+ defaultValue={kcContext.code.code}
54
+ readOnly
55
+ className="font-mono"
56
+ />
57
+
58
+ <Button
59
+ onClick={handleCopy}
60
+ variant="secondary"
61
+ size="icon"
62
+ className="size-4 absolute end-2 top-1/2 transform -translate-y-1/2"
63
+ >
64
+ {copied ? (
65
+ <MdCheck className="text-green-500" />
66
+ ) : (
67
+ <MdContentCopy />
68
+ )}
69
+ </Button>
70
+ </div>
71
+ </>
72
+ ) : (
73
+ kcContext.code.error && (
74
+ <Alert variant="error" className="my-3">
75
+ <AlertDescription>
76
+ <p
77
+ id="error"
78
+ dangerouslySetInnerHTML={{
79
+ __html: kcSanitize(kcContext.code.error)
80
+ }}
81
+ />
82
+ </AlertDescription>
83
+ </Alert>
84
+ )
85
+ )}
86
+ </div>
87
+ </Template>
88
+ );
89
+ }
@@ -1,3 +1,3 @@
1
- import { Page } from "./Page";
2
-
3
- export default Page;
1
+ import { Page } from "./Page";
2
+
3
+ export default Page;
@@ -11,59 +11,50 @@ export default meta;
11
11
 
12
12
  type Story = StoryObj<typeof meta>;
13
13
 
14
- export const Default: Story = {
15
- render: () => <KcPageStory />
16
- };
14
+ export const Default: Story = {};
15
+
17
16
  export const Arabic: Story = {
18
- render: () => (
19
- <KcPageStory
20
- kcContext={{
21
- locale: {
22
- currentLanguageTag: "ar",
23
- rtl: true
24
- }
25
- }}
26
- />
27
- )
17
+ args: {
18
+ kcContext: {
19
+ locale: {
20
+ currentLanguageTag: "ar",
21
+ rtl: true
22
+ }
23
+ }
24
+ }
28
25
  };
29
26
  export const French: Story = {
30
- render: () => (
31
- <KcPageStory
32
- kcContext={{
33
- locale: {
34
- currentLanguageTag: "fr"
35
- }
36
- }}
37
- />
38
- )
27
+ args: {
28
+ kcContext: {
29
+ locale: {
30
+ currentLanguageTag: "fr",
31
+ rtl: false
32
+ }
33
+ }
34
+ }
39
35
  };
36
+
40
37
  export const WithAIAFlow: Story = {
41
- render: () => (
42
- <KcPageStory
43
- kcContext={{
44
- triggered_from_aia: true,
45
- url: { loginAction: "/login-action" }
46
- }}
47
- />
48
- )
38
+ args: {
39
+ kcContext: {
40
+ triggered_from_aia: true,
41
+ url: { loginAction: "/login-action" }
42
+ }
43
+ }
49
44
  };
50
45
  export const WithoutAIAFlow: Story = {
51
- render: () => (
52
- <KcPageStory
53
- kcContext={{
54
- triggered_from_aia: false,
55
- url: { loginAction: "/login-action" }
56
- }}
57
- />
58
- )
46
+ args: {
47
+ kcContext: {
48
+ triggered_from_aia: false,
49
+ url: { loginAction: "/login-action" }
50
+ }
51
+ }
59
52
  };
60
53
  export const WithCustomButtonStyle: Story = {
61
- render: () => (
62
- <KcPageStory
63
- kcContext={{
64
- triggered_from_aia: true,
65
- url: { loginAction: "/login-action" }
66
- }}
67
- />
68
- )
54
+ args: {
55
+ kcContext: {
56
+ triggered_from_aia: true,
57
+ url: { loginAction: "/login-action" }
58
+ }
59
+ }
69
60
  };
@@ -1,63 +1,60 @@
1
- import { Alert, AlertDescription } from "@/components/ui/alert";
2
- import { Button } from "@/components/ui/button";
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
-
10
- const { kcContext } = useKcContext();
11
- assert(kcContext.pageId === "delete-account-confirm.ftl");
12
-
13
- const { msg, msgStr } = useI18n();
14
-
15
- return (
16
- <Template
17
- headerNode={msg("deleteAccountConfirm")}
18
- >
19
- <form action={kcContext.url.loginAction} className="space-y-6" method="post">
20
- <Alert variant="warning" className="my-3">
21
- <AlertDescription>
22
- <span>{msg("irreversibleAction")}</span>
23
- </AlertDescription>
24
- </Alert>
25
-
26
- <div className="space-y-4">
27
- <p className="text-foreground">{msg("deletingImplies")}</p>
28
-
29
- <ul className="list-disc list-inside space-y-2 text-muted-foreground pl-4">
30
- <li>{msg("loggingOutImmediately")}</li>
31
- <li>{msg("errasingData")}</li>
32
- </ul>
33
-
34
- <p className="text-foreground font-medium mt-6">
35
- {msg("finalDeletionConfirmation")}
36
- </p>
37
- </div>
38
-
39
- <div className="flex flex-col sm:flex-row gap-3 sm:justify-between mt-6">
40
- {kcContext.triggered_from_aia && (
41
- <Button
42
- variant="outline"
43
- type="submit"
44
- name="cancel-aia"
45
- value="true"
46
- className="sm:flex-1"
47
- >
48
- {msgStr("doCancel")}
49
- </Button>
50
- )}
51
-
52
- <Button
53
- type="submit"
54
- variant="destructive"
55
- className="sm:flex-1 text-white"
56
- >
57
- {msgStr("doConfirmDelete")}
58
- </Button>
59
- </div>
60
- </form>
61
- </Template>
62
- );
63
- }
1
+ import { Alert, AlertDescription } from "@/components/ui/alert";
2
+ import { Button } from "@/components/ui/button";
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 === "delete-account-confirm.ftl");
11
+
12
+ const { msg, msgStr } = useI18n();
13
+
14
+ return (
15
+ <Template headerNode={msg("deleteAccountConfirm")}>
16
+ <form action={kcContext.url.loginAction} className="space-y-6" method="post">
17
+ <Alert variant="warning" className="my-3">
18
+ <AlertDescription>
19
+ <span>{msg("irreversibleAction")}</span>
20
+ </AlertDescription>
21
+ </Alert>
22
+
23
+ <div className="space-y-4">
24
+ <p className="text-foreground">{msg("deletingImplies")}</p>
25
+
26
+ <ul className="list-disc list-inside space-y-2 text-muted-foreground pl-4">
27
+ <li>{msg("loggingOutImmediately")}</li>
28
+ <li>{msg("errasingData")}</li>
29
+ </ul>
30
+
31
+ <p className="text-foreground font-medium mt-6">
32
+ {msg("finalDeletionConfirmation")}
33
+ </p>
34
+ </div>
35
+
36
+ <div className="flex flex-col sm:flex-row gap-3 sm:justify-between mt-6">
37
+ {kcContext.triggered_from_aia && (
38
+ <Button
39
+ variant="outline"
40
+ type="submit"
41
+ name="cancel-aia"
42
+ value="true"
43
+ className="sm:flex-1"
44
+ >
45
+ {msgStr("doCancel")}
46
+ </Button>
47
+ )}
48
+
49
+ <Button
50
+ type="submit"
51
+ variant="destructive"
52
+ className="sm:flex-1 text-white"
53
+ >
54
+ {msgStr("doConfirmDelete")}
55
+ </Button>
56
+ </div>
57
+ </form>
58
+ </Template>
59
+ );
60
+ }
@@ -1,3 +1,3 @@
1
- import { Page } from "./Page";
2
-
3
- export default Page;
1
+ import { Page } from "./Page";
2
+
3
+ export default Page;
@@ -11,39 +11,34 @@ export default meta;
11
11
 
12
12
  type Story = StoryObj<typeof meta>;
13
13
 
14
- export const Default: Story = {
15
- render: () => <KcPageStory />
16
- };
14
+ export const Default: Story = {};
15
+
17
16
  export const Arabic: Story = {
18
- render: () => (
19
- <KcPageStory
20
- kcContext={{
21
- locale: {
22
- currentLanguageTag: "ar",
23
- rtl: true
24
- }
25
- }}
26
- />
27
- )
17
+ args: {
18
+ kcContext: {
19
+ locale: {
20
+ currentLanguageTag: "ar",
21
+ rtl: true
22
+ }
23
+ }
24
+ }
28
25
  };
29
26
  export const French: Story = {
30
- render: () => (
31
- <KcPageStory
32
- kcContext={{
33
- locale: {
34
- currentLanguageTag: "fr"
35
- }
36
- }}
37
- />
38
- )
27
+ args: {
28
+ kcContext: {
29
+ locale: {
30
+ currentLanguageTag: "fr",
31
+ rtl: false
32
+ }
33
+ }
34
+ }
39
35
  };
36
+
40
37
  export const WithCustomCredentialLabel: Story = {
41
- render: () => (
42
- <KcPageStory
43
- kcContext={{
44
- credentialLabel: "Test Credential",
45
- url: { loginAction: "/login-action" }
46
- }}
47
- />
48
- )
38
+ args: {
39
+ kcContext: {
40
+ credentialLabel: "Test Credential",
41
+ url: { loginAction: "/login-action" }
42
+ }
43
+ }
49
44
  };
@@ -1,51 +1,56 @@
1
- import { Alert, AlertDescription } from "@/components/ui/alert";
2
- import { Button } from "@/components/ui/button";
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
- ) {
10
- const { kcContext } = useKcContext();
11
- assert(kcContext.pageId === "delete-credential.ftl");
12
-
13
- const { msgStr, msg } = useI18n();
14
-
15
- return (
16
- <Template
17
- displayMessage={false}
18
- headerNode={msg("deleteCredentialTitle", kcContext.credentialLabel)}
19
- >
20
- <Alert variant="warning" className=" my-3">
21
- <AlertDescription>
22
- <span>{msg("deleteCredentialMessage", kcContext.credentialLabel)}</span>
23
- </AlertDescription>
24
- </Alert>
25
-
26
- <form className="form-actions" action={kcContext.url.loginAction} method="POST">
27
- <div className="flex flex-col sm:flex-row gap-3 sm:justify-between mt-6">
28
- <Button
29
- variant="outline"
30
- name="cancel-aia"
31
- id="kc-decline"
32
- type="submit"
33
- className="sm:flex-1"
34
- >
35
- {msgStr("doCancel")}
36
- </Button>
37
-
38
- <Button
39
- name="accept"
40
- id="kc-accept"
41
- type="submit"
42
- variant="destructive"
43
- className="sm:flex-1 text-white"
44
- >
45
- {msgStr("doConfirmDelete")}
46
- </Button>
47
- </div>
48
- </form>
49
- </Template>
50
- );
51
- }
1
+ import { Alert, AlertDescription } from "@/components/ui/alert";
2
+ import { Button } from "@/components/ui/button";
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 === "delete-credential.ftl");
11
+
12
+ const { msgStr, msg } = useI18n();
13
+
14
+ return (
15
+ <Template
16
+ displayMessage={false}
17
+ headerNode={msg("deleteCredentialTitle", kcContext.credentialLabel)}
18
+ >
19
+ <Alert variant="warning" className=" my-3">
20
+ <AlertDescription>
21
+ <span>
22
+ {msg("deleteCredentialMessage", kcContext.credentialLabel)}
23
+ </span>
24
+ </AlertDescription>
25
+ </Alert>
26
+
27
+ <form
28
+ className="form-actions"
29
+ action={kcContext.url.loginAction}
30
+ method="POST"
31
+ >
32
+ <div className="flex flex-col sm:flex-row gap-3 sm:justify-between mt-6">
33
+ <Button
34
+ variant="outline"
35
+ name="cancel-aia"
36
+ id="kc-decline"
37
+ type="submit"
38
+ className="sm:flex-1"
39
+ >
40
+ {msgStr("doCancel")}
41
+ </Button>
42
+
43
+ <Button
44
+ name="accept"
45
+ id="kc-accept"
46
+ type="submit"
47
+ variant="destructive"
48
+ className="sm:flex-1 text-white"
49
+ >
50
+ {msgStr("doConfirmDelete")}
51
+ </Button>
52
+ </div>
53
+ </form>
54
+ </Template>
55
+ );
56
+ }
@@ -1,3 +1,3 @@
1
- import { Page } from "./Page";
2
-
3
- export default Page;
1
+ import { Page } from "./Page";
2
+
3
+ export default Page;