keycloakify 2.3.0 → 2.5.2

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 (177) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +156 -127
  3. package/bin/KeycloakVersion.js.map +1 -1
  4. package/bin/build-keycloak-theme/build-keycloak-theme.js +57 -54
  5. package/bin/build-keycloak-theme/build-keycloak-theme.js.map +1 -1
  6. package/bin/build-keycloak-theme/ftlValuesGlobalName.js.map +1 -1
  7. package/bin/build-keycloak-theme/generateDebugFiles/generateDebugFiles.js +4 -11
  8. package/bin/build-keycloak-theme/generateDebugFiles/generateDebugFiles.js.map +1 -1
  9. package/bin/build-keycloak-theme/generateFtl/common.ftl +72 -57
  10. package/bin/build-keycloak-theme/generateFtl/generateFtl.d.ts +1 -1
  11. package/bin/build-keycloak-theme/generateFtl/generateFtl.js +47 -44
  12. package/bin/build-keycloak-theme/generateFtl/generateFtl.js.map +1 -1
  13. package/bin/build-keycloak-theme/generateJavaStackFiles.js +12 -8
  14. package/bin/build-keycloak-theme/generateJavaStackFiles.js.map +1 -1
  15. package/bin/build-keycloak-theme/generateKeycloakThemeResources.js +20 -21
  16. package/bin/build-keycloak-theme/generateKeycloakThemeResources.js.map +1 -1
  17. package/bin/build-keycloak-theme/index.js.map +1 -1
  18. package/bin/build-keycloak-theme/replaceImportFromStatic.js +18 -30
  19. package/bin/build-keycloak-theme/replaceImportFromStatic.js.map +1 -1
  20. package/bin/download-builtin-keycloak-theme.js +2 -2
  21. package/bin/download-builtin-keycloak-theme.js.map +1 -1
  22. package/bin/generate-i18n-messages.js +9 -11
  23. package/bin/generate-i18n-messages.js.map +1 -1
  24. package/bin/link_in_test_app.js +6 -22
  25. package/bin/link_in_test_app.js.map +1 -1
  26. package/bin/tools/crawl.js.map +1 -1
  27. package/bin/tools/downloadAndUnzip.js +4 -5
  28. package/bin/tools/downloadAndUnzip.js.map +1 -1
  29. package/bin/tools/grant-exec-perms.js +4 -3
  30. package/bin/tools/grant-exec-perms.js.map +1 -1
  31. package/bin/tools/isInside.js.map +1 -1
  32. package/bin/tools/rm.js +1 -1
  33. package/bin/tools/rm.js.map +1 -1
  34. package/bin/tools/transformCodebase.js +7 -3
  35. package/bin/tools/transformCodebase.js.map +1 -1
  36. package/lib/components/Error.js +1 -2
  37. package/lib/components/Error.js.map +1 -1
  38. package/lib/components/Info.js +1 -15
  39. package/lib/components/Info.js.map +1 -1
  40. package/lib/components/KcApp.js +23 -10
  41. package/lib/components/KcApp.js.map +1 -1
  42. package/lib/components/KcProps.d.ts +4 -2
  43. package/lib/components/KcProps.js +10 -8
  44. package/lib/components/KcProps.js.map +1 -1
  45. package/lib/components/Login.js +20 -18
  46. package/lib/components/Login.js.map +1 -1
  47. package/lib/components/LoginIdpLinkConfirm.js.map +1 -1
  48. package/lib/components/LoginOtp.js +14 -15
  49. package/lib/components/LoginOtp.js.map +1 -1
  50. package/lib/components/LoginResetPassword.js +5 -7
  51. package/lib/components/LoginResetPassword.js.map +1 -1
  52. package/lib/components/LoginUpdateProfile.js +1 -5
  53. package/lib/components/LoginUpdateProfile.js.map +1 -1
  54. package/lib/components/LoginVerifyEmail.js.map +1 -1
  55. package/lib/components/Register.js +1 -4
  56. package/lib/components/Register.js.map +1 -1
  57. package/lib/components/RegisterUserProfile.d.ts +6 -0
  58. package/lib/components/RegisterUserProfile.js +78 -0
  59. package/lib/components/RegisterUserProfile.js.map +1 -0
  60. package/lib/components/Template.js +28 -43
  61. package/lib/components/Template.js.map +1 -1
  62. package/lib/components/Terms.js.map +1 -1
  63. package/lib/getKcContext/KcContextBase.d.ts +78 -18
  64. package/lib/getKcContext/KcContextBase.js +2 -3
  65. package/lib/getKcContext/KcContextBase.js.map +1 -1
  66. package/lib/getKcContext/getKcContext.d.ts +1 -3
  67. package/lib/getKcContext/getKcContext.js +5 -9
  68. package/lib/getKcContext/getKcContext.js.map +1 -1
  69. package/lib/getKcContext/kcContextMocks/kcContextMocks.d.ts +1 -0
  70. package/lib/getKcContext/kcContextMocks/kcContextMocks.js +187 -55
  71. package/lib/getKcContext/kcContextMocks/kcContextMocks.js.map +1 -1
  72. package/lib/getKcContext/kcContextMocks/urlResourcesPath.js.map +1 -1
  73. package/lib/i18n/KcLanguageTag.d.ts +25 -2
  74. package/lib/i18n/KcLanguageTag.js +27 -27
  75. package/lib/i18n/KcLanguageTag.js.map +1 -1
  76. package/lib/i18n/generated_kcMessages/11.0.3/account.js +27 -27
  77. package/lib/i18n/generated_kcMessages/11.0.3/account.js.map +1 -1
  78. package/lib/i18n/generated_kcMessages/11.0.3/admin.js +23 -23
  79. package/lib/i18n/generated_kcMessages/11.0.3/admin.js.map +1 -1
  80. package/lib/i18n/generated_kcMessages/11.0.3/email.js +97 -97
  81. package/lib/i18n/generated_kcMessages/11.0.3/email.js.map +1 -1
  82. package/lib/i18n/generated_kcMessages/11.0.3/login.js +30 -30
  83. package/lib/i18n/generated_kcMessages/11.0.3/login.js.map +1 -1
  84. package/lib/i18n/generated_kcMessages/15.0.2/account.js +29 -29
  85. package/lib/i18n/generated_kcMessages/15.0.2/account.js.map +1 -1
  86. package/lib/i18n/generated_kcMessages/15.0.2/admin.js +23 -23
  87. package/lib/i18n/generated_kcMessages/15.0.2/admin.js.map +1 -1
  88. package/lib/i18n/generated_kcMessages/15.0.2/email.js +111 -111
  89. package/lib/i18n/generated_kcMessages/15.0.2/email.js.map +1 -1
  90. package/lib/i18n/generated_kcMessages/15.0.2/login.js +32 -32
  91. package/lib/i18n/generated_kcMessages/15.0.2/login.js.map +1 -1
  92. package/lib/i18n/kcMessages/login.js +1 -1
  93. package/lib/i18n/kcMessages/login.js.map +1 -1
  94. package/lib/i18n/useKcLanguageTag.js +1 -3
  95. package/lib/i18n/useKcLanguageTag.js.map +1 -1
  96. package/lib/i18n/useKcMessage.d.ts +2 -1
  97. package/lib/i18n/useKcMessage.js +8 -6
  98. package/lib/i18n/useKcMessage.js.map +1 -1
  99. package/lib/keycloakJsAdapter.d.ts +6 -6
  100. package/lib/keycloakJsAdapter.js +10 -12
  101. package/lib/keycloakJsAdapter.js.map +1 -1
  102. package/lib/tools/ReactComponent.d.ts +2 -0
  103. package/lib/tools/ReactComponent.js +3 -0
  104. package/lib/tools/ReactComponent.js.map +1 -0
  105. package/lib/tools/allPropertiesValuesToUndefined.js +1 -2
  106. package/lib/tools/allPropertiesValuesToUndefined.js.map +1 -1
  107. package/lib/tools/appendHead.js +16 -12
  108. package/lib/tools/appendHead.js.map +1 -1
  109. package/lib/tools/assert.js.map +1 -1
  110. package/lib/tools/deepAssign.js +3 -4
  111. package/lib/tools/deepAssign.js.map +1 -1
  112. package/lib/tools/deepClone.js.map +1 -1
  113. package/package.json +26 -6
  114. package/src/bin/KeycloakVersion.ts +0 -2
  115. package/src/bin/build-keycloak-theme/build-keycloak-theme.ts +70 -77
  116. package/src/bin/build-keycloak-theme/ftlValuesGlobalName.ts +1 -2
  117. package/src/bin/build-keycloak-theme/generateDebugFiles/generateDebugFiles.ts +26 -37
  118. package/src/bin/build-keycloak-theme/generateDebugFiles/index.ts +1 -1
  119. package/src/bin/build-keycloak-theme/generateFtl/common.ftl +72 -57
  120. package/src/bin/build-keycloak-theme/generateFtl/generateFtl.ts +75 -95
  121. package/src/bin/build-keycloak-theme/generateFtl/index.ts +1 -1
  122. package/src/bin/build-keycloak-theme/generateJavaStackFiles.ts +38 -56
  123. package/src/bin/build-keycloak-theme/generateKeycloakThemeResources.ts +47 -85
  124. package/src/bin/build-keycloak-theme/index.ts +2 -4
  125. package/src/bin/build-keycloak-theme/replaceImportFromStatic.ts +34 -78
  126. package/src/bin/download-builtin-keycloak-theme.ts +5 -19
  127. package/src/bin/generate-i18n-messages.ts +13 -25
  128. package/src/bin/link_in_test_app.ts +9 -38
  129. package/src/bin/tools/crawl.ts +2 -12
  130. package/src/bin/tools/downloadAndUnzip.ts +6 -22
  131. package/src/bin/tools/getProjectRoot.ts +1 -1
  132. package/src/bin/tools/grant-exec-perms.ts +8 -7
  133. package/src/bin/tools/isInside.ts +2 -9
  134. package/src/bin/tools/rm.ts +21 -32
  135. package/src/bin/tools/transformCodebase.ts +20 -43
  136. package/src/lib/components/Error.tsx +3 -7
  137. package/src/lib/components/Info.tsx +23 -47
  138. package/src/lib/components/KcApp.tsx +25 -13
  139. package/src/lib/components/KcProps.ts +94 -92
  140. package/src/lib/components/Login.tsx +126 -116
  141. package/src/lib/components/LoginIdpLinkConfirm.tsx +38 -53
  142. package/src/lib/components/LoginOtp.tsx +39 -76
  143. package/src/lib/components/LoginResetPassword.tsx +9 -26
  144. package/src/lib/components/LoginUpdateProfile.tsx +104 -117
  145. package/src/lib/components/LoginVerifyEmail.tsx +3 -12
  146. package/src/lib/components/Register.tsx +76 -46
  147. package/src/lib/components/RegisterUserProfile.tsx +201 -0
  148. package/src/lib/components/Template.tsx +109 -161
  149. package/src/lib/components/Terms.tsx +4 -13
  150. package/src/lib/getKcContext/KcContextBase.ts +104 -53
  151. package/src/lib/getKcContext/getKcContext.ts +47 -78
  152. package/src/lib/getKcContext/index.ts +2 -2
  153. package/src/lib/getKcContext/kcContextMocks/index.ts +1 -1
  154. package/src/lib/getKcContext/kcContextMocks/kcContextMocks.ts +362 -241
  155. package/src/lib/getKcContext/kcContextMocks/urlResourcesPath.ts +1 -2
  156. package/src/lib/i18n/KcLanguageTag.ts +34 -45
  157. package/src/lib/i18n/generated_kcMessages/11.0.3/account.ts +3086 -3059
  158. package/src/lib/i18n/generated_kcMessages/11.0.3/admin.ts +248 -239
  159. package/src/lib/i18n/generated_kcMessages/11.0.3/email.ts +848 -633
  160. package/src/lib/i18n/generated_kcMessages/11.0.3/login.ts +4466 -4359
  161. package/src/lib/i18n/generated_kcMessages/15.0.2/account.ts +4247 -4202
  162. package/src/lib/i18n/generated_kcMessages/15.0.2/admin.ts +273 -264
  163. package/src/lib/i18n/generated_kcMessages/15.0.2/email.ts +997 -749
  164. package/src/lib/i18n/generated_kcMessages/15.0.2/login.ts +5352 -5212
  165. package/src/lib/i18n/kcMessages/login.ts +4 -9
  166. package/src/lib/i18n/useKcLanguageTag.ts +2 -16
  167. package/src/lib/i18n/useKcMessage.tsx +17 -20
  168. package/src/lib/index.ts +0 -1
  169. package/src/lib/keycloakJsAdapter.ts +23 -53
  170. package/src/lib/tools/AndByDiscriminatingKey.ts +16 -30
  171. package/src/lib/tools/DeepPartial.ts +1 -2
  172. package/src/lib/tools/ReactComponent.ts +4 -0
  173. package/src/lib/tools/allPropertiesValuesToUndefined.ts +1 -6
  174. package/src/lib/tools/appendHead.ts +28 -25
  175. package/src/lib/tools/assert.ts +1 -2
  176. package/src/lib/tools/deepAssign.ts +28 -46
  177. package/src/lib/tools/deepClone.ts +2 -3
@@ -1,69 +1,46 @@
1
-
2
-
3
1
  import * as fs from "fs";
4
2
  import * as path from "path";
5
3
  import { crawl } from "./crawl";
6
- import { id } from "tsafe/id";
4
+ import { id } from "tsafe/id";
7
5
 
8
- type TransformSourceCode =
9
- (params: {
10
- sourceCode: Buffer;
11
- filePath: string;
12
- }) => {
13
- modifiedSourceCode: Buffer;
14
- newFileName?: string;
15
- } | undefined;
6
+ type TransformSourceCode = (params: { sourceCode: Buffer; filePath: string }) =>
7
+ | {
8
+ modifiedSourceCode: Buffer;
9
+ newFileName?: string;
10
+ }
11
+ | undefined;
16
12
 
17
13
  /** Apply a transformation function to every file of directory */
18
- export function transformCodebase(
19
- params: {
20
- srcDirPath: string;
21
- destDirPath: string;
22
- transformSourceCode?: TransformSourceCode;
23
- }
24
- ) {
25
-
26
- const {
27
- srcDirPath,
28
- destDirPath,
29
- transformSourceCode = id<TransformSourceCode>(({ sourceCode }) => ({ "modifiedSourceCode": sourceCode }))
14
+ export function transformCodebase(params: { srcDirPath: string; destDirPath: string; transformSourceCode?: TransformSourceCode }) {
15
+ const {
16
+ srcDirPath,
17
+ destDirPath,
18
+ transformSourceCode = id<TransformSourceCode>(({ sourceCode }) => ({
19
+ "modifiedSourceCode": sourceCode,
20
+ })),
30
21
  } = params;
31
22
 
32
23
  for (const file_relative_path of crawl(srcDirPath)) {
33
-
34
24
  const filePath = path.join(srcDirPath, file_relative_path);
35
25
 
36
26
  const transformSourceCodeResult = transformSourceCode({
37
27
  "sourceCode": fs.readFileSync(filePath),
38
- "filePath": path.join(srcDirPath, file_relative_path)
28
+ "filePath": path.join(srcDirPath, file_relative_path),
39
29
  });
40
30
 
41
31
  if (transformSourceCodeResult === undefined) {
42
32
  continue;
43
33
  }
44
34
 
45
- fs.mkdirSync(
46
- path.dirname(
47
- path.join(
48
- destDirPath,
49
- file_relative_path
50
- )
51
- ),
52
- { "recursive": true }
53
- );
35
+ fs.mkdirSync(path.dirname(path.join(destDirPath, file_relative_path)), {
36
+ "recursive": true,
37
+ });
54
38
 
55
39
  const { newFileName, modifiedSourceCode } = transformSourceCodeResult;
56
40
 
57
41
  fs.writeFileSync(
58
- path.join(
59
- path.dirname(path.join(destDirPath, file_relative_path)),
60
- newFileName ?? path.basename(file_relative_path)
61
- ),
62
- modifiedSourceCode
42
+ path.join(path.dirname(path.join(destDirPath, file_relative_path)), newFileName ?? path.basename(file_relative_path)),
43
+ modifiedSourceCode,
63
44
  );
64
-
65
45
  }
66
-
67
-
68
46
  }
69
-
@@ -4,8 +4,7 @@ import type { KcProps } from "./KcProps";
4
4
  import type { KcContextBase } from "../getKcContext/KcContextBase";
5
5
  import { useKcMessage } from "../i18n/useKcMessage";
6
6
 
7
- export const Error = memo(({ kcContext, ...props }: { kcContext: KcContextBase.Error; } & KcProps) => {
8
-
7
+ export const Error = memo(({ kcContext, ...props }: { kcContext: KcContextBase.Error } & KcProps) => {
9
8
  const { msg } = useKcMessage();
10
9
 
11
10
  const { message, client } = kcContext;
@@ -19,18 +18,15 @@ export const Error = memo(({ kcContext, ...props }: { kcContext: KcContextBase.E
19
18
  formNode={
20
19
  <div id="kc-error-message">
21
20
  <p className="instruction">{message.summary}</p>
22
- {
23
- client !== undefined && client.baseUrl !== undefined &&
21
+ {client !== undefined && client.baseUrl !== undefined && (
24
22
  <p>
25
23
  <a id="backToApplication" href={client.baseUrl}>
26
24
  {msg("backToApplication")}
27
25
  </a>
28
26
  </p>
29
- }
27
+ )}
30
28
  </div>
31
29
  }
32
30
  />
33
31
  );
34
32
  });
35
-
36
-
@@ -1,4 +1,3 @@
1
-
2
1
  import { memo } from "react";
3
2
  import { Template } from "./Template";
4
3
  import type { KcProps } from "./KcProps";
@@ -6,68 +5,45 @@ import { assert } from "../tools/assert";
6
5
  import type { KcContextBase } from "../getKcContext/KcContextBase";
7
6
  import { useKcMessage } from "../i18n/useKcMessage";
8
7
 
9
- export const Info = memo(({ kcContext, ...props }: { kcContext: KcContextBase.Info; } & KcProps) => {
10
-
8
+ export const Info = memo(({ kcContext, ...props }: { kcContext: KcContextBase.Info } & KcProps) => {
11
9
  const { msg } = useKcMessage();
12
10
 
13
11
  assert(kcContext.message !== undefined);
14
12
 
15
- const {
16
- messageHeader,
17
- message,
18
- requiredActions,
19
- skipLink,
20
- pageRedirectUri,
21
- actionUri,
22
- client
23
- } = kcContext;
13
+ const { messageHeader, message, requiredActions, skipLink, pageRedirectUri, actionUri, client } = kcContext;
24
14
 
25
15
  return (
26
16
  <Template
27
17
  {...{ kcContext, ...props }}
28
18
  doFetchDefaultThemeResources={true}
29
19
  displayMessage={false}
30
- headerNode={
31
- messageHeader !== undefined ?
32
- <>{messageHeader}</>
33
- :
34
- <>{message.summary}</>
35
- }
20
+ headerNode={messageHeader !== undefined ? <>{messageHeader}</> : <>{message.summary}</>}
36
21
  formNode={
37
22
  <div id="kc-info-message">
38
- <p className="instruction">{message.summary}
39
-
40
- {
41
- requiredActions !== undefined &&
42
- <b>
43
- {
44
- requiredActions
45
- .map(requiredAction => msg(`requiredAction.${requiredAction}` as const))
46
- .join(",")
47
- }
48
-
49
- </b>
50
-
51
- }
23
+ <p className="instruction">
24
+ {message.summary}
52
25
 
26
+ {requiredActions !== undefined && (
27
+ <b>{requiredActions.map(requiredAction => msg(`requiredAction.${requiredAction}` as const)).join(",")}</b>
28
+ )}
53
29
  </p>
54
- {
55
- !skipLink &&
56
- pageRedirectUri !== undefined ?
57
- <p><a href={pageRedirectUri}>{(msg("backToApplication"))}</a></p>
58
- :
59
- actionUri !== undefined ?
60
- <p><a href={actionUri}>{msg("proceedWithAction")}</a></p>
61
- :
62
- client.baseUrl !== undefined &&
63
- <p><a href={client.baseUrl}>{msg("backToApplication")}</a></p>
64
- }
30
+ {!skipLink && pageRedirectUri !== undefined ? (
31
+ <p>
32
+ <a href={pageRedirectUri}>{msg("backToApplication")}</a>
33
+ </p>
34
+ ) : actionUri !== undefined ? (
35
+ <p>
36
+ <a href={actionUri}>{msg("proceedWithAction")}</a>
37
+ </p>
38
+ ) : (
39
+ client.baseUrl !== undefined && (
40
+ <p>
41
+ <a href={client.baseUrl}>{msg("backToApplication")}</a>
42
+ </p>
43
+ )
44
+ )}
65
45
  </div>
66
-
67
-
68
46
  }
69
47
  />
70
48
  );
71
49
  });
72
-
73
-
@@ -1,9 +1,9 @@
1
-
2
1
  import { memo } from "react";
3
2
  import type { KcContextBase } from "../getKcContext/KcContextBase";
4
3
  import type { KcProps } from "./KcProps";
5
4
  import { Login } from "./Login";
6
5
  import { Register } from "./Register";
6
+ import { RegisterUserProfile } from "./RegisterUserProfile";
7
7
  import { Info } from "./Info";
8
8
  import { Error } from "./Error";
9
9
  import { LoginResetPassword } from "./LoginResetPassword";
@@ -13,17 +13,29 @@ import { LoginOtp } from "./LoginOtp";
13
13
  import { LoginUpdateProfile } from "./LoginUpdateProfile";
14
14
  import { LoginIdpLinkConfirm } from "./LoginIdpLinkConfirm";
15
15
 
16
- export const KcApp = memo(({ kcContext, ...props }: { kcContext: KcContextBase; } & KcProps) => {
16
+ export const KcApp = memo(({ kcContext, ...props }: { kcContext: KcContextBase } & KcProps) => {
17
17
  switch (kcContext.pageId) {
18
- case "login.ftl": return <Login {...{ kcContext, ...props }} />;
19
- case "register.ftl": return <Register {...{ kcContext, ...props }} />;
20
- case "info.ftl": return <Info {...{ kcContext, ...props }} />;
21
- case "error.ftl": return <Error {...{ kcContext, ...props }} />;
22
- case "login-reset-password.ftl": return <LoginResetPassword {...{ kcContext, ...props }} />;
23
- case "login-verify-email.ftl": return <LoginVerifyEmail {...{ kcContext, ...props }} />;
24
- case "terms.ftl": return <Terms {...{ kcContext, ...props }} />;
25
- case "login-otp.ftl": return <LoginOtp {...{ kcContext, ...props }} />;
26
- case "login-update-profile.ftl": return <LoginUpdateProfile {...{ kcContext, ...props }} />;
27
- case "login-idp-link-confirm.ftl": return <LoginIdpLinkConfirm {...{ kcContext, ...props }} />;
18
+ case "login.ftl":
19
+ return <Login {...{ kcContext, ...props }} />;
20
+ case "register.ftl":
21
+ return <Register {...{ kcContext, ...props }} />;
22
+ case "register-user-profile.ftl":
23
+ return <RegisterUserProfile {...{ kcContext, ...props }} />;
24
+ case "info.ftl":
25
+ return <Info {...{ kcContext, ...props }} />;
26
+ case "error.ftl":
27
+ return <Error {...{ kcContext, ...props }} />;
28
+ case "login-reset-password.ftl":
29
+ return <LoginResetPassword {...{ kcContext, ...props }} />;
30
+ case "login-verify-email.ftl":
31
+ return <LoginVerifyEmail {...{ kcContext, ...props }} />;
32
+ case "terms.ftl":
33
+ return <Terms {...{ kcContext, ...props }} />;
34
+ case "login-otp.ftl":
35
+ return <LoginOtp {...{ kcContext, ...props }} />;
36
+ case "login-update-profile.ftl":
37
+ return <LoginUpdateProfile {...{ kcContext, ...props }} />;
38
+ case "login-idp-link-confirm.ftl":
39
+ return <LoginIdpLinkConfirm {...{ kcContext, ...props }} />;
28
40
  }
29
- });
41
+ });
@@ -1,39 +1,39 @@
1
-
2
1
  import { allPropertiesValuesToUndefined } from "../tools/allPropertiesValuesToUndefined";
3
- import { doExtends } from "tsafe/doExtends";
2
+ import { assert } from "tsafe/assert";
4
3
 
5
4
  /** Class names can be provided as an array or separated by whitespace */
6
- export type KcPropsGeneric<CssClasses extends string> = { [key in CssClasses]: readonly string[] | string | undefined; };
5
+ export type KcPropsGeneric<CssClasses extends string> = {
6
+ [key in CssClasses]: readonly string[] | string | undefined;
7
+ };
7
8
 
8
9
  export type KcTemplateClassKey =
9
- "stylesCommon" |
10
- "styles" |
11
- "scripts" |
12
- "kcHtmlClass" |
13
- "kcLoginClass" |
14
- "kcHeaderClass" |
15
- "kcHeaderWrapperClass" |
16
- "kcFormCardClass" |
17
- "kcFormCardAccountClass" |
18
- "kcFormHeaderClass" |
19
- "kcLocaleWrapperClass" |
20
- "kcContentWrapperClass" |
21
- "kcLabelWrapperClass" |
22
- "kcContentWrapperClass" |
23
- "kcLabelWrapperClass" |
24
- "kcFormGroupClass" |
25
- "kcResetFlowIcon" |
26
- "kcResetFlowIcon" |
27
- "kcFeedbackSuccessIcon" |
28
- "kcFeedbackWarningIcon" |
29
- "kcFeedbackErrorIcon" |
30
- "kcFeedbackInfoIcon" |
31
- "kcContentWrapperClass" |
32
- "kcFormSocialAccountContentClass" |
33
- "kcFormSocialAccountClass" |
34
- "kcSignUpClass" |
35
- "kcInfoAreaWrapperClass"
36
- ;
10
+ | "stylesCommon"
11
+ | "styles"
12
+ | "scripts"
13
+ | "kcHtmlClass"
14
+ | "kcLoginClass"
15
+ | "kcHeaderClass"
16
+ | "kcHeaderWrapperClass"
17
+ | "kcFormCardClass"
18
+ | "kcFormCardAccountClass"
19
+ | "kcFormHeaderClass"
20
+ | "kcLocaleWrapperClass"
21
+ | "kcContentWrapperClass"
22
+ | "kcLabelWrapperClass"
23
+ | "kcContentWrapperClass"
24
+ | "kcLabelWrapperClass"
25
+ | "kcFormGroupClass"
26
+ | "kcResetFlowIcon"
27
+ | "kcResetFlowIcon"
28
+ | "kcFeedbackSuccessIcon"
29
+ | "kcFeedbackWarningIcon"
30
+ | "kcFeedbackErrorIcon"
31
+ | "kcFeedbackInfoIcon"
32
+ | "kcContentWrapperClass"
33
+ | "kcFormSocialAccountContentClass"
34
+ | "kcFormSocialAccountClass"
35
+ | "kcSignUpClass"
36
+ | "kcInfoAreaWrapperClass";
37
37
 
38
38
  export type KcTemplateProps = KcPropsGeneric<KcTemplateClassKey>;
39
39
 
@@ -41,7 +41,7 @@ export const defaultKcTemplateProps = {
41
41
  "stylesCommon": [
42
42
  "node_modules/patternfly/dist/css/patternfly.min.css",
43
43
  "node_modules/patternfly/dist/css/patternfly-additions.min.css",
44
- "lib/zocial/zocial.css"
44
+ "lib/zocial/zocial.css",
45
45
  ],
46
46
  "styles": ["css/login.css"],
47
47
  "scripts": [],
@@ -64,67 +64,67 @@ export const defaultKcTemplateProps = {
64
64
  "kcFormGroupClass": ["form-group"],
65
65
  "kcLabelWrapperClass": ["col-xs-12", "col-sm-12", "col-md-12", "col-lg-12"],
66
66
  "kcSignUpClass": ["login-pf-signup"],
67
- "kcInfoAreaWrapperClass": []
67
+ "kcInfoAreaWrapperClass": [],
68
68
  } as const;
69
69
 
70
-
71
- doExtends<typeof defaultKcTemplateProps, KcTemplateProps>();
70
+ assert<typeof defaultKcTemplateProps extends KcTemplateProps ? true : false>();
72
71
 
73
72
  /** Tu use if you don't want any default */
74
- export const allClearKcTemplateProps =
75
- allPropertiesValuesToUndefined(defaultKcTemplateProps);
73
+ export const allClearKcTemplateProps = allPropertiesValuesToUndefined(defaultKcTemplateProps);
76
74
 
77
- doExtends<typeof allClearKcTemplateProps, KcTemplateProps>();
75
+ assert<typeof allClearKcTemplateProps extends KcTemplateProps ? true : false>();
78
76
 
79
77
  export type KcProps = KcPropsGeneric<
80
- KcTemplateClassKey |
81
- "kcLogoLink" |
82
- "kcLogoClass" |
83
- "kcContainerClass" |
84
- "kcContentClass" |
85
- "kcFeedbackAreaClass" |
86
- "kcLocaleClass" |
87
- "kcAlertIconClasserror" |
88
- "kcFormAreaClass" |
89
- "kcFormSocialAccountListClass" |
90
- "kcFormSocialAccountDoubleListClass" |
91
- "kcFormSocialAccountListLinkClass" |
92
- "kcWebAuthnKeyIcon" |
93
- "kcFormClass" |
94
- "kcFormGroupErrorClass" |
95
- "kcLabelClass" |
96
- "kcInputClass" |
97
- "kcInputWrapperClass" |
98
- "kcFormOptionsClass" |
99
- "kcFormButtonsClass" |
100
- "kcFormSettingClass" |
101
- "kcTextareaClass" |
102
- "kcInfoAreaClass" |
103
- "kcButtonClass" |
104
- "kcButtonPrimaryClass" |
105
- "kcButtonDefaultClass" |
106
- "kcButtonLargeClass" |
107
- "kcButtonBlockClass" |
108
- "kcInputLargeClass" |
109
- "kcSrOnlyClass" |
110
- "kcSelectAuthListClass" |
111
- "kcSelectAuthListItemClass" |
112
- "kcSelectAuthListItemInfoClass" |
113
- "kcSelectAuthListItemLeftClass" |
114
- "kcSelectAuthListItemBodyClass" |
115
- "kcSelectAuthListItemDescriptionClass" |
116
- "kcSelectAuthListItemHeadingClass" |
117
- "kcSelectAuthListItemHelpTextClass" |
118
- "kcAuthenticatorDefaultClass" |
119
- "kcAuthenticatorPasswordClass" |
120
- "kcAuthenticatorOTPClass" |
121
- "kcAuthenticatorWebAuthnClass" |
122
- "kcAuthenticatorWebAuthnPasswordlessClass" |
123
- "kcSelectOTPListClass" |
124
- "kcSelectOTPListItemClass" |
125
- "kcAuthenticatorOtpCircleClass" |
126
- "kcSelectOTPItemHeadingClass" |
127
- "kcFormOptionsWrapperClass"
78
+ | KcTemplateClassKey
79
+ | "kcLogoLink"
80
+ | "kcLogoClass"
81
+ | "kcContainerClass"
82
+ | "kcContentClass"
83
+ | "kcFeedbackAreaClass"
84
+ | "kcLocaleClass"
85
+ | "kcAlertIconClasserror"
86
+ | "kcFormAreaClass"
87
+ | "kcFormSocialAccountListClass"
88
+ | "kcFormSocialAccountDoubleListClass"
89
+ | "kcFormSocialAccountListLinkClass"
90
+ | "kcWebAuthnKeyIcon"
91
+ | "kcFormClass"
92
+ | "kcFormGroupErrorClass"
93
+ | "kcLabelClass"
94
+ | "kcInputClass"
95
+ | "kcInputErrorMessageClass"
96
+ | "kcInputWrapperClass"
97
+ | "kcFormOptionsClass"
98
+ | "kcFormButtonsClass"
99
+ | "kcFormSettingClass"
100
+ | "kcTextareaClass"
101
+ | "kcInfoAreaClass"
102
+ | "kcFormGroupHeader"
103
+ | "kcButtonClass"
104
+ | "kcButtonPrimaryClass"
105
+ | "kcButtonDefaultClass"
106
+ | "kcButtonLargeClass"
107
+ | "kcButtonBlockClass"
108
+ | "kcInputLargeClass"
109
+ | "kcSrOnlyClass"
110
+ | "kcSelectAuthListClass"
111
+ | "kcSelectAuthListItemClass"
112
+ | "kcSelectAuthListItemInfoClass"
113
+ | "kcSelectAuthListItemLeftClass"
114
+ | "kcSelectAuthListItemBodyClass"
115
+ | "kcSelectAuthListItemDescriptionClass"
116
+ | "kcSelectAuthListItemHeadingClass"
117
+ | "kcSelectAuthListItemHelpTextClass"
118
+ | "kcAuthenticatorDefaultClass"
119
+ | "kcAuthenticatorPasswordClass"
120
+ | "kcAuthenticatorOTPClass"
121
+ | "kcAuthenticatorWebAuthnClass"
122
+ | "kcAuthenticatorWebAuthnPasswordlessClass"
123
+ | "kcSelectOTPListClass"
124
+ | "kcSelectOTPListItemClass"
125
+ | "kcAuthenticatorOtpCircleClass"
126
+ | "kcSelectOTPItemHeadingClass"
127
+ | "kcFormOptionsWrapperClass"
128
128
  >;
129
129
 
130
130
  export const defaultKcProps = {
@@ -147,6 +147,7 @@ export const defaultKcProps = {
147
147
  "kcFormGroupErrorClass": ["has-error"],
148
148
  "kcLabelClass": ["control-label"],
149
149
  "kcInputClass": ["form-control"],
150
+ "kcInputErrorMessageClass": ["pf-c-form__helper-text", "pf-m-error", "required", "kc-feedback-text"],
150
151
  "kcInputWrapperClass": ["col-xs-12", "col-sm-12", "col-md-12", "col-lg-12"],
151
152
  "kcFormOptionsClass": ["col-xs-12", "col-sm-12", "col-md-12", "col-lg-12"],
152
153
  "kcFormButtonsClass": ["col-xs-12", "col-sm-12", "col-md-12", "col-lg-12"],
@@ -155,6 +156,9 @@ export const defaultKcProps = {
155
156
 
156
157
  "kcInfoAreaClass": ["col-xs-12", "col-sm-4", "col-md-4", "col-lg-5", "details"],
157
158
 
159
+ // user-profile grouping
160
+ "kcFormGroupHeader": ["pf-c-form__group"],
161
+
158
162
  // css classes for form buttons main class used for all buttons
159
163
  "kcButtonClass": ["btn"],
160
164
  // classes defining priority of the button - primary or default (there is typically only one priority button for the form)
@@ -192,14 +196,12 @@ export const defaultKcProps = {
192
196
  "kcSelectOTPListItemClass": ["card-pf-body", "card-pf-top-element"],
193
197
  "kcAuthenticatorOtpCircleClass": ["fa", "fa-mobile", "card-pf-icon-circle"],
194
198
  "kcSelectOTPItemHeadingClass": ["card-pf-title", "text-center"],
195
- "kcFormOptionsWrapperClass": []
199
+ "kcFormOptionsWrapperClass": [],
196
200
  } as const;
197
201
 
198
- doExtends<typeof defaultKcProps, KcProps>();
202
+ assert<typeof defaultKcProps extends KcProps ? true : false>();
199
203
 
200
204
  /** Tu use if you don't want any default */
201
- export const allClearKcProps =
202
- allPropertiesValuesToUndefined(defaultKcProps);
203
-
204
- doExtends<typeof allClearKcProps, KcProps>();
205
+ export const allClearKcProps = allPropertiesValuesToUndefined(defaultKcProps);
205
206
 
207
+ assert<typeof allClearKcProps extends KcProps ? true : false>();