@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,62 +1,62 @@
1
- import { useInsertScriptTags } from "@keycloakify/login-ui/tools/useInsertScriptTags";
2
- import { waitForElementMountedOnDom } from "@keycloakify/login-ui/tools/waitForElementMountedOnDom";
3
- import { useEffect } from "react";
4
- import { assert } from "tsafe/assert";
5
- import { useKcContext } from "../../KcContext";
6
- import { useI18n } from "../../i18n";
7
-
8
- export function useScript(params: { webAuthnButtonId: string }) {
9
- const { webAuthnButtonId } = params;
10
-
11
- const { kcContext } = useKcContext();
12
- assert(kcContext.pageId === "webauthn-register.ftl");
13
-
14
- const { msgStr, isFetchingTranslations } = useI18n();
15
-
16
- const { insertScriptTags } = useInsertScriptTags({
17
- effectId: "LoginRecoveryAuthnCodeConfig",
18
- scriptTags: [
19
- {
20
- type: "module",
21
- textContent: () => `
22
- import { registerByWebAuthn } from "${import.meta.env.BASE_URL}keycloak-theme/login/js/webauthnRegister.js";
23
- const registerButton = document.getElementById('${webAuthnButtonId}');
24
- registerButton.addEventListener("click", function() {
25
- const input = {
26
- challenge : '${kcContext.challenge}',
27
- userid : '${kcContext.userid}',
28
- username : '${kcContext.username}',
29
- signatureAlgorithms : ${JSON.stringify(kcContext.signatureAlgorithms)},
30
- rpEntityName : ${JSON.stringify(kcContext.rpEntityName)},
31
- rpId : ${JSON.stringify(kcContext.rpId)},
32
- attestationConveyancePreference : ${JSON.stringify(kcContext.attestationConveyancePreference)},
33
- authenticatorAttachment : ${JSON.stringify(kcContext.authenticatorAttachment)},
34
- requireResidentKey : ${JSON.stringify(kcContext.requireResidentKey)},
35
- userVerificationRequirement : ${JSON.stringify(kcContext.userVerificationRequirement)},
36
- createTimeout : ${kcContext.createTimeout},
37
- excludeCredentialIds : ${JSON.stringify(kcContext.excludeCredentialIds)},
38
- initLabel : ${JSON.stringify(msgStr("webauthn-registration-init-label"))},
39
- initLabelPrompt : ${JSON.stringify(msgStr("webauthn-registration-init-label-prompt"))},
40
- errmsg : ${JSON.stringify(msgStr("webauthn-unsupported-browser-text"))}
41
- };
42
- registerByWebAuthn(input);
43
- });
44
- `
45
- }
46
- ]
47
- });
48
-
49
- useEffect(() => {
50
- if (isFetchingTranslations) {
51
- return;
52
- }
53
-
54
- (async () => {
55
- await waitForElementMountedOnDom({
56
- elementId: webAuthnButtonId
57
- });
58
-
59
- insertScriptTags();
60
- })();
61
- }, [isFetchingTranslations]);
62
- }
1
+ import { useInsertScriptTags } from "@keycloakify/login-ui/tools/useInsertScriptTags";
2
+ import { waitForElementMountedOnDom } from "@keycloakify/login-ui/tools/waitForElementMountedOnDom";
3
+ import { useEffect } from "react";
4
+ import { assert } from "tsafe/assert";
5
+ import { useKcContext } from "../../KcContext";
6
+ import { useI18n } from "../../i18n";
7
+
8
+ export function useScript(params: { webAuthnButtonId: string }) {
9
+ const { webAuthnButtonId } = params;
10
+
11
+ const { kcContext } = useKcContext();
12
+ assert(kcContext.pageId === "webauthn-register.ftl");
13
+
14
+ const { msgStr, isFetchingTranslations } = useI18n();
15
+
16
+ const { insertScriptTags } = useInsertScriptTags({
17
+ effectId: "LoginRecoveryAuthnCodeConfig",
18
+ scriptTags: [
19
+ {
20
+ type: "module",
21
+ textContent: () => `
22
+ import { registerByWebAuthn } from "${import.meta.env.BASE_URL}keycloak-theme/login/js/webauthnRegister.js";
23
+ const registerButton = document.getElementById('${webAuthnButtonId}');
24
+ registerButton.addEventListener("click", function() {
25
+ const input = {
26
+ challenge : '${kcContext.challenge}',
27
+ userid : '${kcContext.userid}',
28
+ username : '${kcContext.username}',
29
+ signatureAlgorithms : ${JSON.stringify(kcContext.signatureAlgorithms)},
30
+ rpEntityName : ${JSON.stringify(kcContext.rpEntityName)},
31
+ rpId : ${JSON.stringify(kcContext.rpId)},
32
+ attestationConveyancePreference : ${JSON.stringify(kcContext.attestationConveyancePreference)},
33
+ authenticatorAttachment : ${JSON.stringify(kcContext.authenticatorAttachment)},
34
+ requireResidentKey : ${JSON.stringify(kcContext.requireResidentKey)},
35
+ userVerificationRequirement : ${JSON.stringify(kcContext.userVerificationRequirement)},
36
+ createTimeout : ${kcContext.createTimeout},
37
+ excludeCredentialIds : ${JSON.stringify(kcContext.excludeCredentialIds)},
38
+ initLabel : ${JSON.stringify(msgStr("webauthn-registration-init-label"))},
39
+ initLabelPrompt : ${JSON.stringify(msgStr("webauthn-registration-init-label-prompt"))},
40
+ errmsg : ${JSON.stringify(msgStr("webauthn-unsupported-browser-text"))}
41
+ };
42
+ registerByWebAuthn(input);
43
+ });
44
+ `
45
+ }
46
+ ]
47
+ });
48
+
49
+ useEffect(() => {
50
+ if (isFetchingTranslations) {
51
+ return;
52
+ }
53
+
54
+ (async () => {
55
+ await waitForElementMountedOnDom({
56
+ elementId: webAuthnButtonId
57
+ });
58
+
59
+ insertScriptTags();
60
+ })();
61
+ }, [isFetchingTranslations]);
62
+ }
@@ -1,45 +1,45 @@
1
- const SESSION_STORAGE_KEY = "kc-color-scheme";
2
-
3
- export function getTheme(
4
- kcContextDarkMode: boolean | undefined
5
- ): "dark" | "light" | "system" {
6
- from_admin_policy: {
7
- if (kcContextDarkMode === undefined || kcContextDarkMode === true) {
8
- break from_admin_policy;
9
- }
10
- return "light";
11
- }
12
-
13
- from_url: {
14
- const url = new URL(window.location.href);
15
-
16
- const value = url.searchParams.get("dark");
17
-
18
- if (value === null) {
19
- break from_url;
20
- }
21
-
22
- {
23
- url.searchParams.delete("dark");
24
- window.history.replaceState({}, "", url.toString());
25
- }
26
-
27
- const isDark = value === "true";
28
-
29
- sessionStorage.setItem(SESSION_STORAGE_KEY, `${isDark}`);
30
-
31
- return isDark ? "dark" : "light";
32
- }
33
-
34
- from_session_storage: {
35
- const value = sessionStorage.getItem(SESSION_STORAGE_KEY);
36
-
37
- if (value === null) {
38
- break from_session_storage;
39
- }
40
-
41
- return value === "true" ? "dark" : "light";
42
- }
43
-
44
- return "system";
45
- }
1
+ const SESSION_STORAGE_KEY = "kc-color-scheme";
2
+
3
+ export function getTheme(
4
+ kcContextDarkMode: boolean | undefined
5
+ ): "dark" | "light" | "system" {
6
+ from_admin_policy: {
7
+ if (kcContextDarkMode === undefined || kcContextDarkMode === true) {
8
+ break from_admin_policy;
9
+ }
10
+ return "light";
11
+ }
12
+
13
+ from_url: {
14
+ const url = new URL(window.location.href);
15
+
16
+ const value = url.searchParams.get("dark");
17
+
18
+ if (value === null) {
19
+ break from_url;
20
+ }
21
+
22
+ {
23
+ url.searchParams.delete("dark");
24
+ window.history.replaceState({}, "", url.toString());
25
+ }
26
+
27
+ const isDark = value === "true";
28
+
29
+ sessionStorage.setItem(SESSION_STORAGE_KEY, `${isDark}`);
30
+
31
+ return isDark ? "dark" : "light";
32
+ }
33
+
34
+ from_session_storage: {
35
+ const value = sessionStorage.getItem(SESSION_STORAGE_KEY);
36
+
37
+ if (value === null) {
38
+ break from_session_storage;
39
+ }
40
+
41
+ return value === "true" ? "dark" : "light";
42
+ }
43
+
44
+ return "system";
45
+ }
@@ -1,36 +1,34 @@
1
- import { ThemeProvider } from '@/components/theme-provider';
2
- import type { ClassKey } from "@keycloakify/login-ui/useKcClsx";
3
- import type { ReactNode } from "react";
4
- import { useKcContext } from './KcContext';
5
- import { getTheme } from './shared/getColorScheme';
6
-
7
- type Classes = { [key in ClassKey]?: string };
8
-
9
- type StyleLevelCustomization = {
10
- doUseDefaultCss: boolean;
11
- classes?: Classes;
12
- loadCustomStylesheet?: () => void;
13
- Provider?: (props: { children: ReactNode }) => ReactNode;
14
- };
15
-
16
- // eslint-disable-next-line react-refresh/only-export-components
17
- function Provider(props: { children: ReactNode }) {
18
- const { children } = props;
19
-
20
- const { kcContext } = useKcContext();
21
-
22
-
23
- return (
24
- <ThemeProvider defaultTheme={getTheme(kcContext.darkMode)}>
25
- {children}
26
- </ThemeProvider>
27
- );
28
- }
29
-
30
-
31
- export function useStyleLevelCustomization(): StyleLevelCustomization {
32
- return {
33
- doUseDefaultCss: false,
34
- Provider
35
- };
36
- }
1
+ import { ThemeProvider } from "@/components/theme-provider";
2
+ import type { ClassKey } from "@keycloakify/login-ui/useKcClsx";
3
+ import type { ReactNode } from "react";
4
+ import { useKcContext } from "./KcContext";
5
+ import { getTheme } from "./shared/getColorScheme";
6
+
7
+ type Classes = { [key in ClassKey]?: string };
8
+
9
+ type StyleLevelCustomization = {
10
+ doUseDefaultCss: boolean;
11
+ classes?: Classes;
12
+ loadCustomStylesheet?: () => void;
13
+ Provider?: (props: { children: ReactNode }) => ReactNode;
14
+ };
15
+
16
+ // eslint-disable-next-line react-refresh/only-export-components
17
+ function Provider(props: { children: ReactNode }) {
18
+ const { children } = props;
19
+
20
+ const { kcContext } = useKcContext();
21
+
22
+ return (
23
+ <ThemeProvider defaultTheme={getTheme(kcContext.darkMode)}>
24
+ {children}
25
+ </ThemeProvider>
26
+ );
27
+ }
28
+
29
+ export function useStyleLevelCustomization(): StyleLevelCustomization {
30
+ return {
31
+ doUseDefaultCss: false,
32
+ Provider
33
+ };
34
+ }
@@ -1 +1,11 @@
1
- {"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}
1
+ {
2
+ "name": "",
3
+ "short_name": "",
4
+ "icons": [
5
+ { "src": "/android-chrome-192x192.png", "sizes": "192x192", "type": "image/png" },
6
+ { "src": "/android-chrome-512x512.png", "sizes": "512x512", "type": "image/png" }
7
+ ],
8
+ "theme_color": "#ffffff",
9
+ "background_color": "#ffffff",
10
+ "display": "standalone"
11
+ }
package/package.json CHANGED
@@ -1,14 +1,19 @@
1
1
  {
2
2
  "name": "@oussemasahbeni/keycloakify-login-shadcn",
3
- "version": "250004.0.3",
3
+ "version": "250004.0.8",
4
4
  "description": "Keycloakify Shadcn Theme extensions",
5
5
  "license": "MIT",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/Oussemasahbeni/keycloakify-shadcn-starter.git"
9
+ },
6
10
  "type": "module",
7
11
  "main": "keycloak-theme/login/index.js",
8
12
  "files": [
9
13
  "keycloak-theme"
10
14
  ],
11
15
  "peerDependencies": {
16
+ "@keycloakify/login-ui": "~250004.6.5",
12
17
  "@radix-ui/react-checkbox": "^1.3.3",
13
18
  "@radix-ui/react-dialog": "^1.1.15",
14
19
  "@radix-ui/react-dropdown-menu": "^2.1.16",
@@ -24,7 +29,6 @@
24
29
  "clsx": "^2.1.1",
25
30
  "cmdk": "^1.1.1",
26
31
  "input-otp": "^1.4.2",
27
- "@keycloakify/login-ui": "~250004.6.5",
28
32
  "lucide-react": "^0.473.0",
29
33
  "react-icons": "^5.5.0",
30
34
  "tailwind-merge": "^2.6.0",