keycloakify 10.0.0-rc.99 → 10.0.0

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 (503) hide show
  1. package/PUBLIC_URL.js +2 -2
  2. package/PUBLIC_URL.js.map +1 -1
  3. package/README.md +28 -242
  4. package/account/KcContext/KcContext.d.ts +4 -1
  5. package/account/KcContext/KcContext.js.map +1 -1
  6. package/account/KcContext/kcContextMocks.js +7 -4
  7. package/account/KcContext/kcContextMocks.js.map +1 -1
  8. package/account/Template.js +3 -1
  9. package/account/Template.js.map +1 -1
  10. package/account/i18n/GenericI18n.d.ts +6 -0
  11. package/account/i18n/GenericI18n.js +2 -0
  12. package/account/i18n/GenericI18n.js.map +1 -0
  13. package/account/i18n/i18n.d.ts +24 -30
  14. package/account/i18n/i18n.js +50 -70
  15. package/account/i18n/i18n.js.map +1 -1
  16. package/account/i18n/index.d.ts +4 -3
  17. package/account/i18n/index.js.map +1 -1
  18. package/account/i18n/messages_defaultSet/ar.js.map +1 -0
  19. package/account/i18n/messages_defaultSet/ca.js.map +1 -0
  20. package/account/i18n/messages_defaultSet/cs.js.map +1 -0
  21. package/account/i18n/messages_defaultSet/da.js.map +1 -0
  22. package/account/i18n/messages_defaultSet/de.js.map +1 -0
  23. package/account/i18n/messages_defaultSet/el.js.map +1 -0
  24. package/account/i18n/messages_defaultSet/en.js.map +1 -0
  25. package/account/i18n/messages_defaultSet/es.js.map +1 -0
  26. package/account/i18n/messages_defaultSet/fa.js.map +1 -0
  27. package/account/i18n/messages_defaultSet/fi.js.map +1 -0
  28. package/account/i18n/messages_defaultSet/fr.js.map +1 -0
  29. package/account/i18n/messages_defaultSet/hu.js.map +1 -0
  30. package/account/i18n/{baseMessages → messages_defaultSet}/index.d.ts +1 -1
  31. package/account/i18n/{baseMessages → messages_defaultSet}/index.js +3 -3
  32. package/account/i18n/messages_defaultSet/index.js.map +1 -0
  33. package/account/i18n/messages_defaultSet/it.js.map +1 -0
  34. package/account/i18n/messages_defaultSet/ja.js.map +1 -0
  35. package/account/i18n/messages_defaultSet/lt.js.map +1 -0
  36. package/account/i18n/messages_defaultSet/lv.js.map +1 -0
  37. package/account/i18n/messages_defaultSet/nl.js.map +1 -0
  38. package/account/i18n/messages_defaultSet/no.js.map +1 -0
  39. package/account/i18n/messages_defaultSet/pl.js.map +1 -0
  40. package/account/i18n/messages_defaultSet/pt-BR.js.map +1 -0
  41. package/account/i18n/messages_defaultSet/ru.js.map +1 -0
  42. package/account/i18n/messages_defaultSet/sk.js.map +1 -0
  43. package/account/i18n/messages_defaultSet/sv.js.map +1 -0
  44. package/account/i18n/messages_defaultSet/th.js.map +1 -0
  45. package/account/i18n/messages_defaultSet/tr.js.map +1 -0
  46. package/account/i18n/messages_defaultSet/uk.js.map +1 -0
  47. package/account/i18n/messages_defaultSet/zh-CN.js.map +1 -0
  48. package/account/i18n/useI18n.d.ts +6 -5
  49. package/account/i18n/useI18n.js +37 -4
  50. package/account/i18n/useI18n.js.map +1 -1
  51. package/account/pages/FederatedIdentity.js +1 -1
  52. package/account/pages/FederatedIdentity.js.map +1 -1
  53. package/account/pages/Totp.js +5 -1
  54. package/account/pages/Totp.js.map +1 -1
  55. package/bin/193.index.js +5 -5
  56. package/bin/{490.index.js → 246.index.js} +22 -4
  57. package/bin/31.index.js +264 -203
  58. package/bin/440.index.js +178 -106
  59. package/bin/453.index.js +59 -7
  60. package/bin/526.index.js +525 -137
  61. package/bin/599.index.js +567 -0
  62. package/bin/{893.index.js → 622.index.js} +239 -231
  63. package/bin/{36.index.js → 678.index.js} +577 -71
  64. package/bin/{180.index.js → 697.index.js} +611 -526
  65. package/bin/743.index.js +70 -0
  66. package/bin/780.index.js +895 -0
  67. package/bin/786.index.js +185 -0
  68. package/bin/932.index.js +740 -52
  69. package/bin/{966.index.js → 941.index.js} +2 -19
  70. package/bin/97.index.js +29 -7
  71. package/bin/main.js +22 -10
  72. package/bin/shared/KeycloakVersionRange.d.ts +3 -3
  73. package/bin/shared/buildContext.d.ts +52 -16
  74. package/bin/shared/buildContext.js.map +1 -1
  75. package/bin/shared/constants.d.ts +18 -17
  76. package/bin/shared/constants.js +15 -14
  77. package/bin/shared/constants.js.map +1 -1
  78. package/bin/shared/copyKeycloakResourcesToPublic.js.map +1 -1
  79. package/bin/shared/downloadKeycloakDefaultTheme.js.map +1 -1
  80. package/bin/shared/generateKcGenTs.d.ts +3 -0
  81. package/bin/shared/generateKcGenTs.js.map +1 -1
  82. package/bin/shared/getLatestsSemVersionedTag.d.ts +15 -0
  83. package/bin/shared/getLatestsSemVersionedTag.js.map +1 -0
  84. package/bin/shared/promptKeycloakVersion.d.ts +3 -1
  85. package/bin/shared/promptKeycloakVersion.js.map +1 -1
  86. package/lib/getKcClsx.js +2 -1
  87. package/lib/getKcClsx.js.map +1 -1
  88. package/login/KcContext/KcContext.d.ts +10 -11
  89. package/login/KcContext/KcContext.js.map +1 -1
  90. package/login/KcContext/kcContextMocks.js +4 -5
  91. package/login/KcContext/kcContextMocks.js.map +1 -1
  92. package/login/Template.js +13 -7
  93. package/login/Template.js.map +1 -1
  94. package/login/TemplateProps.d.ts +0 -1
  95. package/login/UserProfileFormFields.js +6 -5
  96. package/login/UserProfileFormFields.js.map +1 -1
  97. package/login/i18n/GenericI18n.d.ts +6 -0
  98. package/login/i18n/GenericI18n.js +2 -0
  99. package/login/i18n/GenericI18n.js.map +1 -0
  100. package/login/i18n/i18n.d.ts +22 -32
  101. package/login/i18n/i18n.js +51 -92
  102. package/login/i18n/i18n.js.map +1 -1
  103. package/login/i18n/index.d.ts +4 -3
  104. package/login/i18n/index.js.map +1 -1
  105. package/login/i18n/messages_defaultSet/ar.js.map +1 -0
  106. package/login/i18n/messages_defaultSet/ca.js.map +1 -0
  107. package/login/i18n/messages_defaultSet/cs.js.map +1 -0
  108. package/login/i18n/messages_defaultSet/da.js.map +1 -0
  109. package/login/i18n/messages_defaultSet/de.js.map +1 -0
  110. package/login/i18n/messages_defaultSet/el.js.map +1 -0
  111. package/login/i18n/messages_defaultSet/en.js.map +1 -0
  112. package/login/i18n/messages_defaultSet/es.js.map +1 -0
  113. package/login/i18n/messages_defaultSet/fa.js.map +1 -0
  114. package/login/i18n/messages_defaultSet/fi.js.map +1 -0
  115. package/login/i18n/messages_defaultSet/fr.js.map +1 -0
  116. package/login/i18n/messages_defaultSet/hu.js.map +1 -0
  117. package/login/i18n/{baseMessages → messages_defaultSet}/index.d.ts +1 -1
  118. package/login/i18n/{baseMessages → messages_defaultSet}/index.js +3 -3
  119. package/login/i18n/messages_defaultSet/index.js.map +1 -0
  120. package/login/i18n/messages_defaultSet/it.js.map +1 -0
  121. package/login/i18n/messages_defaultSet/ja.js.map +1 -0
  122. package/login/i18n/messages_defaultSet/lt.js.map +1 -0
  123. package/login/i18n/messages_defaultSet/lv.js.map +1 -0
  124. package/login/i18n/messages_defaultSet/nl.js.map +1 -0
  125. package/login/i18n/messages_defaultSet/no.js.map +1 -0
  126. package/login/i18n/messages_defaultSet/pl.js.map +1 -0
  127. package/login/i18n/messages_defaultSet/pt-BR.js.map +1 -0
  128. package/login/i18n/messages_defaultSet/ru.js.map +1 -0
  129. package/login/i18n/messages_defaultSet/sk.js.map +1 -0
  130. package/login/i18n/messages_defaultSet/sv.js.map +1 -0
  131. package/login/i18n/messages_defaultSet/th.js.map +1 -0
  132. package/login/i18n/messages_defaultSet/tr.js.map +1 -0
  133. package/login/i18n/messages_defaultSet/uk.js.map +1 -0
  134. package/login/i18n/messages_defaultSet/zh-CN.js.map +1 -0
  135. package/login/i18n/useI18n.d.ts +6 -5
  136. package/login/i18n/useI18n.js +37 -4
  137. package/login/i18n/useI18n.js.map +1 -1
  138. package/login/lib/useUserProfileForm.d.ts +2 -0
  139. package/login/lib/useUserProfileForm.js +44 -10
  140. package/login/lib/useUserProfileForm.js.map +1 -1
  141. package/login/pages/Error.js +1 -1
  142. package/login/pages/Error.js.map +1 -1
  143. package/login/pages/Info.js +15 -3
  144. package/login/pages/Info.js.map +1 -1
  145. package/login/pages/Login.js +6 -2
  146. package/login/pages/Login.js.map +1 -1
  147. package/login/pages/LoginConfigTotp.js +5 -1
  148. package/login/pages/LoginConfigTotp.js.map +1 -1
  149. package/login/pages/LoginOtp.js +3 -1
  150. package/login/pages/LoginOtp.js.map +1 -1
  151. package/login/pages/LoginPassword.js +3 -1
  152. package/login/pages/LoginPassword.js.map +1 -1
  153. package/login/pages/LoginRecoveryAuthnCodeInput.js +3 -1
  154. package/login/pages/LoginRecoveryAuthnCodeInput.js.map +1 -1
  155. package/login/pages/LoginResetPassword.js +3 -1
  156. package/login/pages/LoginResetPassword.js.map +1 -1
  157. package/login/pages/LoginUpdatePassword.js +5 -1
  158. package/login/pages/LoginUpdatePassword.js.map +1 -1
  159. package/login/pages/Register.js +3 -1
  160. package/login/pages/Register.js.map +1 -1
  161. package/login/pages/SamlPostForm.js +1 -1
  162. package/login/pages/SamlPostForm.js.map +1 -1
  163. package/login/pages/SelectAuthenticator.js +2 -2
  164. package/login/pages/SelectAuthenticator.js.map +1 -1
  165. package/login/pages/WebauthnAuthenticate.js +3 -3
  166. package/login/pages/WebauthnAuthenticate.js.map +1 -1
  167. package/login/pages/WebauthnRegister.js +2 -2
  168. package/package.json +265 -245
  169. package/src/PUBLIC_URL.ts +2 -2
  170. package/src/account/KcContext/KcContext.ts +4 -1
  171. package/src/account/KcContext/kcContextMocks.ts +7 -4
  172. package/src/account/Template.tsx +6 -1
  173. package/src/account/i18n/GenericI18n.tsx +6 -0
  174. package/src/account/i18n/i18n.tsx +91 -129
  175. package/src/account/i18n/index.ts +4 -3
  176. package/src/account/i18n/{baseMessages → messages_defaultSet}/index.ts +3 -3
  177. package/src/account/i18n/useI18n.tsx +95 -0
  178. package/src/account/pages/FederatedIdentity.tsx +1 -1
  179. package/src/account/pages/Totp.tsx +16 -6
  180. package/src/bin/add-story.ts +42 -10
  181. package/src/bin/eject-page.ts +119 -11
  182. package/src/bin/initialize-account-theme/copyBoilerplate.ts +32 -0
  183. package/src/bin/initialize-account-theme/index.ts +1 -0
  184. package/src/bin/initialize-account-theme/initialize-account-theme.ts +112 -0
  185. package/src/bin/initialize-account-theme/initializeAccountTheme_multiPage.ts +21 -0
  186. package/src/bin/initialize-account-theme/initializeAccountTheme_singlePage.ts +152 -0
  187. package/src/bin/initialize-account-theme/src/multi-page/KcContext.ts +12 -0
  188. package/src/bin/initialize-account-theme/src/multi-page/KcPage.tsx +25 -0
  189. package/src/bin/initialize-account-theme/src/multi-page/KcPageStory.tsx +38 -0
  190. package/src/bin/initialize-account-theme/src/multi-page/i18n.ts +5 -0
  191. package/src/bin/initialize-account-theme/src/single-page/KcContext.ts +7 -0
  192. package/src/bin/initialize-account-theme/src/single-page/KcPage.tsx +11 -0
  193. package/src/bin/initialize-account-theme/updateAccountThemeImplementationInConfig.ts +92 -0
  194. package/src/bin/initialize-email-theme.ts +1 -1
  195. package/src/bin/keycloakify/buildJars/buildJar.ts +38 -24
  196. package/src/bin/keycloakify/buildJars/buildJars.ts +6 -3
  197. package/src/bin/keycloakify/buildJars/getKeycloakVersionRangeForJar.ts +5 -5
  198. package/src/bin/keycloakify/generateFtl/generateFtl.ts +16 -16
  199. package/src/bin/keycloakify/generateFtl/kcContextDeclarationTemplate.ftl +471 -364
  200. package/src/bin/keycloakify/generateResources/bringInAccountV1.ts +7 -7
  201. package/src/bin/keycloakify/generateResources/generateMessageProperties.ts +3 -3
  202. package/src/bin/keycloakify/generateResources/generateResourcesForMainTheme.ts +125 -59
  203. package/src/bin/keycloakify/generateResources/generateResourcesForThemeVariant.ts +2 -2
  204. package/src/bin/keycloakify/generateResources/readExtraPageNames.ts +5 -8
  205. package/src/bin/keycloakify/keycloakify.ts +8 -6
  206. package/src/bin/keycloakify/replacers/replaceImportsInCssCode.ts +41 -27
  207. package/src/bin/keycloakify/replacers/replaceImportsInJsCode/replaceImportsInJsCode.ts +2 -2
  208. package/src/bin/keycloakify/replacers/replaceImportsInJsCode/vite.ts +6 -6
  209. package/src/bin/keycloakify/replacers/replaceImportsInJsCode/webpack.ts +4 -4
  210. package/src/bin/main.ts +16 -2
  211. package/src/bin/shared/KeycloakVersionRange.ts +4 -4
  212. package/src/bin/shared/buildContext.ts +360 -251
  213. package/src/bin/shared/constants.ts +19 -17
  214. package/src/bin/shared/copyKeycloakResourcesToPublic.ts +6 -6
  215. package/src/bin/shared/downloadKeycloakDefaultTheme.ts +48 -27
  216. package/src/bin/shared/downloadKeycloakStaticResources.ts +2 -2
  217. package/src/bin/shared/generateKcGenTs.ts +110 -3
  218. package/src/bin/shared/getLatestsSemVersionedTag.ts +201 -0
  219. package/src/bin/shared/promptKeycloakVersion.ts +20 -80
  220. package/src/bin/start-keycloak/appBuild.ts +15 -11
  221. package/src/bin/start-keycloak/keycloakifyBuild.ts +3 -3
  222. package/src/bin/start-keycloak/myrealm-realm-18.json +4 -4
  223. package/src/bin/start-keycloak/myrealm-realm-19.json +4 -4
  224. package/src/bin/start-keycloak/myrealm-realm-20.json +4 -4
  225. package/src/bin/start-keycloak/myrealm-realm-21.json +4 -4
  226. package/src/bin/start-keycloak/myrealm-realm-23.json +3 -3
  227. package/src/bin/start-keycloak/myrealm-realm-24.json +4 -4
  228. package/src/bin/start-keycloak/myrealm-realm-25.json +4 -4
  229. package/src/bin/start-keycloak/start-keycloak.ts +256 -102
  230. package/src/bin/tools/assertNoPnpmDlx.ts +4 -2
  231. package/src/bin/tools/downloadAndExtractArchive.ts +10 -9
  232. package/src/bin/tools/fetchProxyOptions.ts +32 -11
  233. package/src/bin/tools/npmInstall.ts +63 -0
  234. package/src/bin/tools/octokit-addons/getLatestsSemVersionedTag.ts +3 -2
  235. package/src/bin/tsconfig.json +3 -1
  236. package/src/lib/getKcClsx.ts +2 -2
  237. package/src/login/KcContext/KcContext.ts +10 -28
  238. package/src/login/KcContext/kcContextMocks.ts +5 -6
  239. package/src/login/Template.tsx +32 -54
  240. package/src/login/TemplateProps.ts +0 -1
  241. package/src/login/UserProfileFormFields.tsx +15 -11
  242. package/src/login/i18n/GenericI18n.tsx +6 -0
  243. package/src/login/i18n/i18n.tsx +91 -166
  244. package/src/login/i18n/index.ts +4 -3
  245. package/src/login/i18n/{baseMessages → messages_defaultSet}/index.ts +3 -3
  246. package/src/login/i18n/useI18n.tsx +95 -0
  247. package/src/login/lib/useUserProfileForm.tsx +68 -20
  248. package/src/login/pages/Error.tsx +1 -1
  249. package/src/login/pages/Info.tsx +26 -6
  250. package/src/login/pages/Login.tsx +20 -9
  251. package/src/login/pages/LoginConfigTotp.tsx +16 -6
  252. package/src/login/pages/LoginOtp.tsx +8 -3
  253. package/src/login/pages/LoginPassword.tsx +8 -3
  254. package/src/login/pages/LoginRecoveryAuthnCodeInput.tsx +8 -3
  255. package/src/login/pages/LoginResetPassword.tsx +8 -3
  256. package/src/login/pages/LoginUpdatePassword.tsx +55 -47
  257. package/src/login/pages/Register.tsx +8 -3
  258. package/src/login/pages/SamlPostForm.tsx +1 -1
  259. package/src/login/pages/SelectAuthenticator.tsx +4 -4
  260. package/src/login/pages/WebauthnAuthenticate.tsx +5 -5
  261. package/src/login/pages/WebauthnRegister.tsx +2 -2
  262. package/src/tools/useInsertLinkTags.ts +9 -1
  263. package/src/tools/useInsertScriptTags.ts +9 -1
  264. package/src/vite-plugin/vite-plugin.ts +15 -13
  265. package/stories/account/pages/Log.stories.tsx +1 -0
  266. package/stories/account-spa/index.stories.tsx +94 -0
  267. package/stories/intro/intro.stories.tsx +90 -0
  268. package/stories/login/pages/Info.stories.tsx +7 -2
  269. package/stories/login/pages/Login.stories.tsx +25 -13
  270. package/stories/login/pages/Register.stories.tsx +11 -9
  271. package/stories/login/pages/SelectAuthenticator.stories.tsx +41 -0
  272. package/stories/login/pages/Terms.stories.tsx +6 -2
  273. package/tools/useInsertLinkTags.js +7 -1
  274. package/tools/useInsertLinkTags.js.map +1 -1
  275. package/tools/useInsertScriptTags.js +7 -1
  276. package/tools/useInsertScriptTags.js.map +1 -1
  277. package/vite-plugin/index.js +25820 -25686
  278. package/vite-plugin/vite-plugin.d.ts +6 -4
  279. package/account/i18n/baseMessages/ar.js.map +0 -1
  280. package/account/i18n/baseMessages/ca.js.map +0 -1
  281. package/account/i18n/baseMessages/cs.js.map +0 -1
  282. package/account/i18n/baseMessages/da.js.map +0 -1
  283. package/account/i18n/baseMessages/de.js.map +0 -1
  284. package/account/i18n/baseMessages/el.js.map +0 -1
  285. package/account/i18n/baseMessages/en.js.map +0 -1
  286. package/account/i18n/baseMessages/es.js.map +0 -1
  287. package/account/i18n/baseMessages/fa.js.map +0 -1
  288. package/account/i18n/baseMessages/fi.js.map +0 -1
  289. package/account/i18n/baseMessages/fr.js.map +0 -1
  290. package/account/i18n/baseMessages/hu.js.map +0 -1
  291. package/account/i18n/baseMessages/index.js.map +0 -1
  292. package/account/i18n/baseMessages/it.js.map +0 -1
  293. package/account/i18n/baseMessages/ja.js.map +0 -1
  294. package/account/i18n/baseMessages/lt.js.map +0 -1
  295. package/account/i18n/baseMessages/lv.js.map +0 -1
  296. package/account/i18n/baseMessages/nl.js.map +0 -1
  297. package/account/i18n/baseMessages/no.js.map +0 -1
  298. package/account/i18n/baseMessages/pl.js.map +0 -1
  299. package/account/i18n/baseMessages/pt-BR.js.map +0 -1
  300. package/account/i18n/baseMessages/ru.js.map +0 -1
  301. package/account/i18n/baseMessages/sk.js.map +0 -1
  302. package/account/i18n/baseMessages/sv.js.map +0 -1
  303. package/account/i18n/baseMessages/th.js.map +0 -1
  304. package/account/i18n/baseMessages/tr.js.map +0 -1
  305. package/account/i18n/baseMessages/uk.js.map +0 -1
  306. package/account/i18n/baseMessages/zh-CN.js.map +0 -1
  307. package/bin/538.index.js +0 -108
  308. package/login/i18n/baseMessages/ar.js.map +0 -1
  309. package/login/i18n/baseMessages/ca.js.map +0 -1
  310. package/login/i18n/baseMessages/cs.js.map +0 -1
  311. package/login/i18n/baseMessages/da.js.map +0 -1
  312. package/login/i18n/baseMessages/de.js.map +0 -1
  313. package/login/i18n/baseMessages/el.js.map +0 -1
  314. package/login/i18n/baseMessages/en.js.map +0 -1
  315. package/login/i18n/baseMessages/es.js.map +0 -1
  316. package/login/i18n/baseMessages/fa.js.map +0 -1
  317. package/login/i18n/baseMessages/fi.js.map +0 -1
  318. package/login/i18n/baseMessages/fr.js.map +0 -1
  319. package/login/i18n/baseMessages/hu.js.map +0 -1
  320. package/login/i18n/baseMessages/index.js.map +0 -1
  321. package/login/i18n/baseMessages/it.js.map +0 -1
  322. package/login/i18n/baseMessages/ja.js.map +0 -1
  323. package/login/i18n/baseMessages/lt.js.map +0 -1
  324. package/login/i18n/baseMessages/lv.js.map +0 -1
  325. package/login/i18n/baseMessages/nl.js.map +0 -1
  326. package/login/i18n/baseMessages/no.js.map +0 -1
  327. package/login/i18n/baseMessages/pl.js.map +0 -1
  328. package/login/i18n/baseMessages/pt-BR.js.map +0 -1
  329. package/login/i18n/baseMessages/ru.js.map +0 -1
  330. package/login/i18n/baseMessages/sk.js.map +0 -1
  331. package/login/i18n/baseMessages/sv.js.map +0 -1
  332. package/login/i18n/baseMessages/th.js.map +0 -1
  333. package/login/i18n/baseMessages/tr.js.map +0 -1
  334. package/login/i18n/baseMessages/uk.js.map +0 -1
  335. package/login/i18n/baseMessages/zh-CN.js.map +0 -1
  336. package/src/account/i18n/useI18n.ts +0 -44
  337. package/src/login/i18n/useI18n.ts +0 -44
  338. package/src/tools/ExtractAfterStartingWith.ts +0 -4
  339. package/tools/ExtractAfterStartingWith.d.ts +0 -1
  340. package/tools/ExtractAfterStartingWith.js +0 -2
  341. package/tools/ExtractAfterStartingWith.js.map +0 -1
  342. /package/account/i18n/{baseMessages → messages_defaultSet}/ar.d.ts +0 -0
  343. /package/account/i18n/{baseMessages → messages_defaultSet}/ar.js +0 -0
  344. /package/account/i18n/{baseMessages → messages_defaultSet}/ca.d.ts +0 -0
  345. /package/account/i18n/{baseMessages → messages_defaultSet}/ca.js +0 -0
  346. /package/account/i18n/{baseMessages → messages_defaultSet}/cs.d.ts +0 -0
  347. /package/account/i18n/{baseMessages → messages_defaultSet}/cs.js +0 -0
  348. /package/account/i18n/{baseMessages → messages_defaultSet}/da.d.ts +0 -0
  349. /package/account/i18n/{baseMessages → messages_defaultSet}/da.js +0 -0
  350. /package/account/i18n/{baseMessages → messages_defaultSet}/de.d.ts +0 -0
  351. /package/account/i18n/{baseMessages → messages_defaultSet}/de.js +0 -0
  352. /package/account/i18n/{baseMessages → messages_defaultSet}/el.d.ts +0 -0
  353. /package/account/i18n/{baseMessages → messages_defaultSet}/el.js +0 -0
  354. /package/account/i18n/{baseMessages → messages_defaultSet}/en.d.ts +0 -0
  355. /package/account/i18n/{baseMessages → messages_defaultSet}/en.js +0 -0
  356. /package/account/i18n/{baseMessages → messages_defaultSet}/es.d.ts +0 -0
  357. /package/account/i18n/{baseMessages → messages_defaultSet}/es.js +0 -0
  358. /package/account/i18n/{baseMessages → messages_defaultSet}/fa.d.ts +0 -0
  359. /package/account/i18n/{baseMessages → messages_defaultSet}/fa.js +0 -0
  360. /package/account/i18n/{baseMessages → messages_defaultSet}/fi.d.ts +0 -0
  361. /package/account/i18n/{baseMessages → messages_defaultSet}/fi.js +0 -0
  362. /package/account/i18n/{baseMessages → messages_defaultSet}/fr.d.ts +0 -0
  363. /package/account/i18n/{baseMessages → messages_defaultSet}/fr.js +0 -0
  364. /package/account/i18n/{baseMessages → messages_defaultSet}/hu.d.ts +0 -0
  365. /package/account/i18n/{baseMessages → messages_defaultSet}/hu.js +0 -0
  366. /package/account/i18n/{baseMessages → messages_defaultSet}/it.d.ts +0 -0
  367. /package/account/i18n/{baseMessages → messages_defaultSet}/it.js +0 -0
  368. /package/account/i18n/{baseMessages → messages_defaultSet}/ja.d.ts +0 -0
  369. /package/account/i18n/{baseMessages → messages_defaultSet}/ja.js +0 -0
  370. /package/account/i18n/{baseMessages → messages_defaultSet}/lt.d.ts +0 -0
  371. /package/account/i18n/{baseMessages → messages_defaultSet}/lt.js +0 -0
  372. /package/account/i18n/{baseMessages → messages_defaultSet}/lv.d.ts +0 -0
  373. /package/account/i18n/{baseMessages → messages_defaultSet}/lv.js +0 -0
  374. /package/account/i18n/{baseMessages → messages_defaultSet}/nl.d.ts +0 -0
  375. /package/account/i18n/{baseMessages → messages_defaultSet}/nl.js +0 -0
  376. /package/account/i18n/{baseMessages → messages_defaultSet}/no.d.ts +0 -0
  377. /package/account/i18n/{baseMessages → messages_defaultSet}/no.js +0 -0
  378. /package/account/i18n/{baseMessages → messages_defaultSet}/pl.d.ts +0 -0
  379. /package/account/i18n/{baseMessages → messages_defaultSet}/pl.js +0 -0
  380. /package/account/i18n/{baseMessages → messages_defaultSet}/pt-BR.d.ts +0 -0
  381. /package/account/i18n/{baseMessages → messages_defaultSet}/pt-BR.js +0 -0
  382. /package/account/i18n/{baseMessages → messages_defaultSet}/ru.d.ts +0 -0
  383. /package/account/i18n/{baseMessages → messages_defaultSet}/ru.js +0 -0
  384. /package/account/i18n/{baseMessages → messages_defaultSet}/sk.d.ts +0 -0
  385. /package/account/i18n/{baseMessages → messages_defaultSet}/sk.js +0 -0
  386. /package/account/i18n/{baseMessages → messages_defaultSet}/sv.d.ts +0 -0
  387. /package/account/i18n/{baseMessages → messages_defaultSet}/sv.js +0 -0
  388. /package/account/i18n/{baseMessages → messages_defaultSet}/th.d.ts +0 -0
  389. /package/account/i18n/{baseMessages → messages_defaultSet}/th.js +0 -0
  390. /package/account/i18n/{baseMessages → messages_defaultSet}/tr.d.ts +0 -0
  391. /package/account/i18n/{baseMessages → messages_defaultSet}/tr.js +0 -0
  392. /package/account/i18n/{baseMessages → messages_defaultSet}/uk.d.ts +0 -0
  393. /package/account/i18n/{baseMessages → messages_defaultSet}/uk.js +0 -0
  394. /package/account/i18n/{baseMessages → messages_defaultSet}/zh-CN.d.ts +0 -0
  395. /package/account/i18n/{baseMessages → messages_defaultSet}/zh-CN.js +0 -0
  396. /package/login/i18n/{baseMessages → messages_defaultSet}/ar.d.ts +0 -0
  397. /package/login/i18n/{baseMessages → messages_defaultSet}/ar.js +0 -0
  398. /package/login/i18n/{baseMessages → messages_defaultSet}/ca.d.ts +0 -0
  399. /package/login/i18n/{baseMessages → messages_defaultSet}/ca.js +0 -0
  400. /package/login/i18n/{baseMessages → messages_defaultSet}/cs.d.ts +0 -0
  401. /package/login/i18n/{baseMessages → messages_defaultSet}/cs.js +0 -0
  402. /package/login/i18n/{baseMessages → messages_defaultSet}/da.d.ts +0 -0
  403. /package/login/i18n/{baseMessages → messages_defaultSet}/da.js +0 -0
  404. /package/login/i18n/{baseMessages → messages_defaultSet}/de.d.ts +0 -0
  405. /package/login/i18n/{baseMessages → messages_defaultSet}/de.js +0 -0
  406. /package/login/i18n/{baseMessages → messages_defaultSet}/el.d.ts +0 -0
  407. /package/login/i18n/{baseMessages → messages_defaultSet}/el.js +0 -0
  408. /package/login/i18n/{baseMessages → messages_defaultSet}/en.d.ts +0 -0
  409. /package/login/i18n/{baseMessages → messages_defaultSet}/en.js +0 -0
  410. /package/login/i18n/{baseMessages → messages_defaultSet}/es.d.ts +0 -0
  411. /package/login/i18n/{baseMessages → messages_defaultSet}/es.js +0 -0
  412. /package/login/i18n/{baseMessages → messages_defaultSet}/fa.d.ts +0 -0
  413. /package/login/i18n/{baseMessages → messages_defaultSet}/fa.js +0 -0
  414. /package/login/i18n/{baseMessages → messages_defaultSet}/fi.d.ts +0 -0
  415. /package/login/i18n/{baseMessages → messages_defaultSet}/fi.js +0 -0
  416. /package/login/i18n/{baseMessages → messages_defaultSet}/fr.d.ts +0 -0
  417. /package/login/i18n/{baseMessages → messages_defaultSet}/fr.js +0 -0
  418. /package/login/i18n/{baseMessages → messages_defaultSet}/hu.d.ts +0 -0
  419. /package/login/i18n/{baseMessages → messages_defaultSet}/hu.js +0 -0
  420. /package/login/i18n/{baseMessages → messages_defaultSet}/it.d.ts +0 -0
  421. /package/login/i18n/{baseMessages → messages_defaultSet}/it.js +0 -0
  422. /package/login/i18n/{baseMessages → messages_defaultSet}/ja.d.ts +0 -0
  423. /package/login/i18n/{baseMessages → messages_defaultSet}/ja.js +0 -0
  424. /package/login/i18n/{baseMessages → messages_defaultSet}/lt.d.ts +0 -0
  425. /package/login/i18n/{baseMessages → messages_defaultSet}/lt.js +0 -0
  426. /package/login/i18n/{baseMessages → messages_defaultSet}/lv.d.ts +0 -0
  427. /package/login/i18n/{baseMessages → messages_defaultSet}/lv.js +0 -0
  428. /package/login/i18n/{baseMessages → messages_defaultSet}/nl.d.ts +0 -0
  429. /package/login/i18n/{baseMessages → messages_defaultSet}/nl.js +0 -0
  430. /package/login/i18n/{baseMessages → messages_defaultSet}/no.d.ts +0 -0
  431. /package/login/i18n/{baseMessages → messages_defaultSet}/no.js +0 -0
  432. /package/login/i18n/{baseMessages → messages_defaultSet}/pl.d.ts +0 -0
  433. /package/login/i18n/{baseMessages → messages_defaultSet}/pl.js +0 -0
  434. /package/login/i18n/{baseMessages → messages_defaultSet}/pt-BR.d.ts +0 -0
  435. /package/login/i18n/{baseMessages → messages_defaultSet}/pt-BR.js +0 -0
  436. /package/login/i18n/{baseMessages → messages_defaultSet}/ru.d.ts +0 -0
  437. /package/login/i18n/{baseMessages → messages_defaultSet}/ru.js +0 -0
  438. /package/login/i18n/{baseMessages → messages_defaultSet}/sk.d.ts +0 -0
  439. /package/login/i18n/{baseMessages → messages_defaultSet}/sk.js +0 -0
  440. /package/login/i18n/{baseMessages → messages_defaultSet}/sv.d.ts +0 -0
  441. /package/login/i18n/{baseMessages → messages_defaultSet}/sv.js +0 -0
  442. /package/login/i18n/{baseMessages → messages_defaultSet}/th.d.ts +0 -0
  443. /package/login/i18n/{baseMessages → messages_defaultSet}/th.js +0 -0
  444. /package/login/i18n/{baseMessages → messages_defaultSet}/tr.d.ts +0 -0
  445. /package/login/i18n/{baseMessages → messages_defaultSet}/tr.js +0 -0
  446. /package/login/i18n/{baseMessages → messages_defaultSet}/uk.d.ts +0 -0
  447. /package/login/i18n/{baseMessages → messages_defaultSet}/uk.js +0 -0
  448. /package/login/i18n/{baseMessages → messages_defaultSet}/zh-CN.d.ts +0 -0
  449. /package/login/i18n/{baseMessages → messages_defaultSet}/zh-CN.js +0 -0
  450. /package/src/account/i18n/{baseMessages → messages_defaultSet}/ar.ts +0 -0
  451. /package/src/account/i18n/{baseMessages → messages_defaultSet}/ca.ts +0 -0
  452. /package/src/account/i18n/{baseMessages → messages_defaultSet}/cs.ts +0 -0
  453. /package/src/account/i18n/{baseMessages → messages_defaultSet}/da.ts +0 -0
  454. /package/src/account/i18n/{baseMessages → messages_defaultSet}/de.ts +0 -0
  455. /package/src/account/i18n/{baseMessages → messages_defaultSet}/el.ts +0 -0
  456. /package/src/account/i18n/{baseMessages → messages_defaultSet}/en.ts +0 -0
  457. /package/src/account/i18n/{baseMessages → messages_defaultSet}/es.ts +0 -0
  458. /package/src/account/i18n/{baseMessages → messages_defaultSet}/fa.ts +0 -0
  459. /package/src/account/i18n/{baseMessages → messages_defaultSet}/fi.ts +0 -0
  460. /package/src/account/i18n/{baseMessages → messages_defaultSet}/fr.ts +0 -0
  461. /package/src/account/i18n/{baseMessages → messages_defaultSet}/hu.ts +0 -0
  462. /package/src/account/i18n/{baseMessages → messages_defaultSet}/it.ts +0 -0
  463. /package/src/account/i18n/{baseMessages → messages_defaultSet}/ja.ts +0 -0
  464. /package/src/account/i18n/{baseMessages → messages_defaultSet}/lt.ts +0 -0
  465. /package/src/account/i18n/{baseMessages → messages_defaultSet}/lv.ts +0 -0
  466. /package/src/account/i18n/{baseMessages → messages_defaultSet}/nl.ts +0 -0
  467. /package/src/account/i18n/{baseMessages → messages_defaultSet}/no.ts +0 -0
  468. /package/src/account/i18n/{baseMessages → messages_defaultSet}/pl.ts +0 -0
  469. /package/src/account/i18n/{baseMessages → messages_defaultSet}/pt-BR.ts +0 -0
  470. /package/src/account/i18n/{baseMessages → messages_defaultSet}/ru.ts +0 -0
  471. /package/src/account/i18n/{baseMessages → messages_defaultSet}/sk.ts +0 -0
  472. /package/src/account/i18n/{baseMessages → messages_defaultSet}/sv.ts +0 -0
  473. /package/src/account/i18n/{baseMessages → messages_defaultSet}/th.ts +0 -0
  474. /package/src/account/i18n/{baseMessages → messages_defaultSet}/tr.ts +0 -0
  475. /package/src/account/i18n/{baseMessages → messages_defaultSet}/uk.ts +0 -0
  476. /package/src/account/i18n/{baseMessages → messages_defaultSet}/zh-CN.ts +0 -0
  477. /package/src/login/i18n/{baseMessages → messages_defaultSet}/ar.ts +0 -0
  478. /package/src/login/i18n/{baseMessages → messages_defaultSet}/ca.ts +0 -0
  479. /package/src/login/i18n/{baseMessages → messages_defaultSet}/cs.ts +0 -0
  480. /package/src/login/i18n/{baseMessages → messages_defaultSet}/da.ts +0 -0
  481. /package/src/login/i18n/{baseMessages → messages_defaultSet}/de.ts +0 -0
  482. /package/src/login/i18n/{baseMessages → messages_defaultSet}/el.ts +0 -0
  483. /package/src/login/i18n/{baseMessages → messages_defaultSet}/en.ts +0 -0
  484. /package/src/login/i18n/{baseMessages → messages_defaultSet}/es.ts +0 -0
  485. /package/src/login/i18n/{baseMessages → messages_defaultSet}/fa.ts +0 -0
  486. /package/src/login/i18n/{baseMessages → messages_defaultSet}/fi.ts +0 -0
  487. /package/src/login/i18n/{baseMessages → messages_defaultSet}/fr.ts +0 -0
  488. /package/src/login/i18n/{baseMessages → messages_defaultSet}/hu.ts +0 -0
  489. /package/src/login/i18n/{baseMessages → messages_defaultSet}/it.ts +0 -0
  490. /package/src/login/i18n/{baseMessages → messages_defaultSet}/ja.ts +0 -0
  491. /package/src/login/i18n/{baseMessages → messages_defaultSet}/lt.ts +0 -0
  492. /package/src/login/i18n/{baseMessages → messages_defaultSet}/lv.ts +0 -0
  493. /package/src/login/i18n/{baseMessages → messages_defaultSet}/nl.ts +0 -0
  494. /package/src/login/i18n/{baseMessages → messages_defaultSet}/no.ts +0 -0
  495. /package/src/login/i18n/{baseMessages → messages_defaultSet}/pl.ts +0 -0
  496. /package/src/login/i18n/{baseMessages → messages_defaultSet}/pt-BR.ts +0 -0
  497. /package/src/login/i18n/{baseMessages → messages_defaultSet}/ru.ts +0 -0
  498. /package/src/login/i18n/{baseMessages → messages_defaultSet}/sk.ts +0 -0
  499. /package/src/login/i18n/{baseMessages → messages_defaultSet}/sv.ts +0 -0
  500. /package/src/login/i18n/{baseMessages → messages_defaultSet}/th.ts +0 -0
  501. /package/src/login/i18n/{baseMessages → messages_defaultSet}/tr.ts +0 -0
  502. /package/src/login/i18n/{baseMessages → messages_defaultSet}/uk.ts +0 -0
  503. /package/src/login/i18n/{baseMessages → messages_defaultSet}/zh-CN.ts +0 -0
@@ -0,0 +1,63 @@
1
+ import * as fs from "fs";
2
+ import { join as pathJoin } from "path";
3
+ import * as child_process from "child_process";
4
+ import chalk from "chalk";
5
+
6
+ export function npmInstall(params: { packageJsonDirPath: string }) {
7
+ const { packageJsonDirPath } = params;
8
+
9
+ const packageManagerBinName = (() => {
10
+ const packageMangers = [
11
+ {
12
+ binName: "yarn",
13
+ lockFileBasename: "yarn.lock"
14
+ },
15
+ {
16
+ binName: "npm",
17
+ lockFileBasename: "package-lock.json"
18
+ },
19
+ {
20
+ binName: "pnpm",
21
+ lockFileBasename: "pnpm-lock.yaml"
22
+ },
23
+ {
24
+ binName: "bun",
25
+ lockFileBasename: "bun.lockdb"
26
+ }
27
+ ] as const;
28
+
29
+ for (const packageManager of packageMangers) {
30
+ if (
31
+ fs.existsSync(
32
+ pathJoin(packageJsonDirPath, packageManager.lockFileBasename)
33
+ ) ||
34
+ fs.existsSync(pathJoin(process.cwd(), packageManager.lockFileBasename))
35
+ ) {
36
+ return packageManager.binName;
37
+ }
38
+ }
39
+
40
+ return undefined;
41
+ })();
42
+
43
+ install_dependencies: {
44
+ if (packageManagerBinName === undefined) {
45
+ break install_dependencies;
46
+ }
47
+
48
+ console.log(`Installing the new dependencies...`);
49
+
50
+ try {
51
+ child_process.execSync(`${packageManagerBinName} install`, {
52
+ cwd: packageJsonDirPath,
53
+ stdio: "inherit"
54
+ });
55
+ } catch {
56
+ console.log(
57
+ chalk.yellow(
58
+ `\`${packageManagerBinName} install\` failed, continuing anyway...`
59
+ )
60
+ );
61
+ }
62
+ }
63
+ }
@@ -9,13 +9,14 @@ export function getLatestsSemVersionedTagFactory(params: { octokit: Octokit }) {
9
9
  owner: string;
10
10
  repo: string;
11
11
  count: number;
12
+ doIgnoreReleaseCandidates: boolean;
12
13
  }): Promise<
13
14
  {
14
15
  tag: string;
15
16
  version: SemVer;
16
17
  }[]
17
18
  > {
18
- const { owner, repo, count } = params;
19
+ const { owner, repo, count, doIgnoreReleaseCandidates } = params;
19
20
 
20
21
  const semVersionedTags: { tag: string; version: SemVer }[] = [];
21
22
 
@@ -30,7 +31,7 @@ export function getLatestsSemVersionedTagFactory(params: { octokit: Octokit }) {
30
31
  continue;
31
32
  }
32
33
 
33
- if (version.rc !== undefined) {
34
+ if (doIgnoreReleaseCandidates && version.rc !== undefined) {
34
35
  continue;
35
36
  }
36
37
 
@@ -8,5 +8,7 @@
8
8
  "moduleResolution": "node",
9
9
  "outDir": "../../dist/bin",
10
10
  "rootDir": "."
11
- }
11
+ },
12
+ "include": ["**/*.ts", "**/*.tsx"],
13
+ "exclude": ["initialize-account-theme/src"]
12
14
  }
@@ -73,8 +73,8 @@ export function createGetKcClsx<ClassKey extends string>(params: {
73
73
 
74
74
  return clsx(
75
75
  classKey,
76
- doUseDefaultCss ? defaultClasses[classKey] : undefined,
77
- classes?.[classKey]
76
+ classes?.[classKey] ??
77
+ (doUseDefaultCss ? defaultClasses[classKey] : undefined)
78
78
  );
79
79
  }
80
80
  });
@@ -1,9 +1,8 @@
1
1
  import type { ThemeType, LoginThemePageId } from "keycloakify/bin/shared/constants";
2
- import type { ExtractAfterStartingWith } from "keycloakify/tools/ExtractAfterStartingWith";
3
2
  import type { ValueOf } from "keycloakify/tools/ValueOf";
4
3
  import { assert } from "tsafe/assert";
5
4
  import type { Equals } from "tsafe";
6
- import type { MessageKey } from "../i18n/i18n";
5
+ import type { ClassKey } from "keycloakify/login/TemplateProps";
7
6
 
8
7
  export type ExtendKcContext<
9
8
  KcContextExtension extends { properties?: Record<string, string | undefined> },
@@ -80,8 +79,8 @@ export declare namespace KcContext {
80
79
  };
81
80
  realm: {
82
81
  name: string;
83
- displayName?: string;
84
- displayNameHtml?: string;
82
+ displayName: string;
83
+ displayNameHtml: string;
85
84
  internationalizationEnabled: boolean;
86
85
  registrationEmailAsUsername: boolean;
87
86
  };
@@ -155,8 +154,7 @@ export declare namespace KcContext {
155
154
  };
156
155
  properties: {};
157
156
  "x-keycloakify": {
158
- realmMessageBundleUserProfile: Record<string, string> | undefined;
159
- realmMessageBundleTermsText: string | undefined;
157
+ messages: Record<string, string>;
160
158
  };
161
159
  };
162
160
 
@@ -221,7 +219,7 @@ export declare namespace KcContext {
221
219
  export type Info = Common & {
222
220
  pageId: "info.ftl";
223
221
  messageHeader?: string;
224
- requiredActions?: ExtractAfterStartingWith<"requiredAction.", MessageKey>[];
222
+ requiredActions?: string[];
225
223
  skipLink: boolean;
226
224
  pageRedirectUri?: string;
227
225
  actionUri?: string;
@@ -384,7 +382,7 @@ export declare namespace KcContext {
384
382
  credentialId: string;
385
383
  transports: {
386
384
  iconClass: string;
387
- displayNameProperties?: MessageKey[];
385
+ displayNameProperties?: string[];
388
386
  };
389
387
  label: string;
390
388
  createdAt: string;
@@ -501,26 +499,9 @@ export declare namespace KcContext {
501
499
  export namespace SelectAuthenticator {
502
500
  export type AuthenticationSelection = {
503
501
  authExecId: string;
504
- displayName:
505
- | "otp-display-name"
506
- | "password-display-name"
507
- | "auth-username-form-display-name"
508
- | "auth-username-password-form-display-name"
509
- | "webauthn-display-name"
510
- | "webauthn-passwordless-display-name";
511
- helpText:
512
- | "otp-help-text"
513
- | "password-help-text"
514
- | "auth-username-form-help-text"
515
- | "auth-username-password-form-help-text"
516
- | "webauthn-help-text"
517
- | "webauthn-passwordless-help-text";
518
- iconCssClass?:
519
- | "kcAuthenticatorDefaultClass"
520
- | "kcAuthenticatorPasswordClass"
521
- | "kcAuthenticatorOTPClass"
522
- | "kcAuthenticatorWebAuthnClass"
523
- | "kcAuthenticatorWebAuthnPasswordlessClass";
502
+ displayName: string;
503
+ helpText: string;
504
+ iconCssClass?: ClassKey;
524
505
  };
525
506
  }
526
507
 
@@ -610,6 +591,7 @@ export type Attribute = {
610
591
  value?: string;
611
592
  values?: string[];
612
593
  group?: {
594
+ annotations: Record<string, string>;
613
595
  html5DataAnnotations: Record<string, string>;
614
596
  displayHeader?: string;
615
597
  name: string;
@@ -1,8 +1,8 @@
1
1
  import "keycloakify/tools/Object.fromEntries";
2
2
  import type { KcContext, Attribute } from "./KcContext";
3
3
  import {
4
- resources_common,
5
- keycloak_resources,
4
+ RESOURCES_COMMON,
5
+ KEYCLOAK_RESOURCES,
6
6
  type LoginThemePageId
7
7
  } from "keycloakify/bin/shared/constants";
8
8
  import { id } from "tsafe/id";
@@ -76,7 +76,7 @@ const attributesByName = Object.fromEntries(
76
76
  ]).map(attribute => [attribute.name, attribute])
77
77
  );
78
78
 
79
- const resourcesPath = `${BASE_URL}${keycloak_resources}/login/resources`;
79
+ const resourcesPath = `${BASE_URL}${KEYCLOAK_RESOURCES}/login/resources`;
80
80
 
81
81
  export const kcContextCommonMock: KcContext.Common = {
82
82
  themeVersion: "0.0.0",
@@ -86,7 +86,7 @@ export const kcContextCommonMock: KcContext.Common = {
86
86
  url: {
87
87
  loginAction: "#",
88
88
  resourcesPath,
89
- resourcesCommonPath: `${resourcesPath}/${resources_common}`,
89
+ resourcesCommonPath: `${resourcesPath}/${RESOURCES_COMMON}`,
90
90
  loginRestartFlowUrl: "#",
91
91
  loginUrl: "#",
92
92
  ssoLoginInOtherTabsUrl: "#"
@@ -162,8 +162,7 @@ export const kcContextCommonMock: KcContext.Common = {
162
162
  isAppInitiatedAction: false,
163
163
  properties: {},
164
164
  "x-keycloakify": {
165
- realmMessageBundleUserProfile: undefined,
166
- realmMessageBundleTermsText: undefined
165
+ messages: {}
167
166
  }
168
167
  };
169
168
 
@@ -15,7 +15,6 @@ export default function Template(props: TemplateProps<KcContext, I18n>) {
15
15
  displayMessage = true,
16
16
  displayRequiredFields = false,
17
17
  headerNode,
18
- showUsernameNode = null,
19
18
  socialProvidersNode = null,
20
19
  infoNode = null,
21
20
  documentTitle,
@@ -164,45 +163,10 @@ export default function Template(props: TemplateProps<KcContext, I18n>) {
164
163
  </div>
165
164
  </div>
166
165
  )}
167
- {!(auth !== undefined && auth.showUsername && !auth.showResetCredentials) ? (
168
- displayRequiredFields ? (
169
- <div className={kcClsx("kcContentWrapperClass")}>
170
- <div className={clsx(kcClsx("kcLabelWrapperClass"), "subtitle")}>
171
- <span className="subtitle">
172
- <span className="required">*</span>
173
- {msg("requiredFields")}
174
- </span>
175
- </div>
176
- <div className="col-md-10">
177
- <h1 id="kc-page-title">{headerNode}</h1>
178
- </div>
179
- </div>
180
- ) : (
166
+ {(() => {
167
+ const node = !(auth !== undefined && auth.showUsername && !auth.showResetCredentials) ? (
181
168
  <h1 id="kc-page-title">{headerNode}</h1>
182
- )
183
- ) : displayRequiredFields ? (
184
- <div className={kcClsx("kcContentWrapperClass")}>
185
- <div className={clsx(kcClsx("kcLabelWrapperClass"), "subtitle")}>
186
- <span className="subtitle">
187
- <span className="required">*</span> {msg("requiredFields")}
188
- </span>
189
- </div>
190
- <div className="col-md-10">
191
- {showUsernameNode}
192
- <div id="kc-username" className={kcClsx("kcFormGroupClass")}>
193
- <label id="kc-attempted-username">{auth.attemptedUsername}</label>
194
- <a id="reset-login" href={url.loginRestartFlowUrl} aria-label={msgStr("restartLoginTooltip")}>
195
- <div className="kc-login-tooltip">
196
- <i className={kcClsx("kcResetFlowIcon")}></i>
197
- <span className="kc-tooltip-text">{msg("restartLoginTooltip")}</span>
198
- </div>
199
- </a>
200
- </div>
201
- </div>
202
- </div>
203
- ) : (
204
- <>
205
- {showUsernameNode}
169
+ ) : (
206
170
  <div id="kc-username" className={kcClsx("kcFormGroupClass")}>
207
171
  <label id="kc-attempted-username">{auth.attemptedUsername}</label>
208
172
  <a id="reset-login" href={url.loginRestartFlowUrl} aria-label={msgStr("restartLoginTooltip")}>
@@ -212,8 +176,24 @@ export default function Template(props: TemplateProps<KcContext, I18n>) {
212
176
  </div>
213
177
  </a>
214
178
  </div>
215
- </>
216
- )}
179
+ );
180
+
181
+ if (displayRequiredFields) {
182
+ return (
183
+ <div className={kcClsx("kcContentWrapperClass")}>
184
+ <div className={clsx(kcClsx("kcLabelWrapperClass"), "subtitle")}>
185
+ <span className="subtitle">
186
+ <span className="required">*</span>
187
+ {msg("requiredFields")}
188
+ </span>
189
+ </div>
190
+ <div className="col-md-10">{node}</div>
191
+ </div>
192
+ );
193
+ }
194
+
195
+ return node;
196
+ })()}
217
197
  </header>
218
198
  <div id="kc-content">
219
199
  <div id="kc-content-wrapper">
@@ -244,19 +224,17 @@ export default function Template(props: TemplateProps<KcContext, I18n>) {
244
224
  {auth !== undefined && auth.showTryAnotherWayLink && (
245
225
  <form id="kc-select-try-another-way-form" action={url.loginAction} method="post">
246
226
  <div className={kcClsx("kcFormGroupClass")}>
247
- <div className={kcClsx("kcFormGroupClass")}>
248
- <input type="hidden" name="tryAnotherWay" value="on" />
249
- <a
250
- href="#"
251
- id="try-another-way"
252
- onClick={() => {
253
- document.forms["kc-select-try-another-way-form" as never].submit();
254
- return false;
255
- }}
256
- >
257
- {msg("doTryAnotherWay")}
258
- </a>
259
- </div>
227
+ <input type="hidden" name="tryAnotherWay" value="on" />
228
+ <a
229
+ href="#"
230
+ id="try-another-way"
231
+ onClick={() => {
232
+ document.forms["kc-select-try-another-way-form" as never].submit();
233
+ return false;
234
+ }}
235
+ >
236
+ {msg("doTryAnotherWay")}
237
+ </a>
260
238
  </div>
261
239
  </form>
262
240
  )}
@@ -12,7 +12,6 @@ export type TemplateProps<KcContext, I18n> = {
12
12
  displayRequiredFields?: boolean;
13
13
  showAnotherWayIfPresent?: boolean;
14
14
  headerNode: ReactNode;
15
- showUsernameNode?: ReactNode;
16
15
  socialProvidersNode?: ReactNode;
17
16
  infoNode?: ReactNode;
18
17
  documentTitle?: string;
@@ -1,5 +1,5 @@
1
1
  import { useEffect, useReducer, Fragment } from "react";
2
- import { assert } from "tsafe/assert";
2
+ import { assert } from "keycloakify/tools/assert";
3
3
  import type { KcClsx } from "keycloakify/login/lib/kcClsx";
4
4
  import {
5
5
  useUserProfileForm,
@@ -58,7 +58,7 @@ export default function UserProfileFormFields(props: UserProfileFormFieldsProps<
58
58
  <label htmlFor={attribute.name} className={kcClsx("kcLabelClass")}>
59
59
  {advancedMsg(attribute.displayName ?? "")}
60
60
  </label>
61
- {attribute.required && <>*</>}
61
+ {attribute.required && <> *</>}
62
62
  </div>
63
63
  <div className={kcClsx("kcInputWrapperClass")}>
64
64
  {attribute.annotations.inputHelperTextBefore !== undefined && (
@@ -70,7 +70,7 @@ export default function UserProfileFormFields(props: UserProfileFormFieldsProps<
70
70
  {advancedMsg(attribute.annotations.inputHelperTextBefore)}
71
71
  </div>
72
72
  )}
73
- <InputFiledByType
73
+ <InputFieldByType
74
74
  attribute={attribute}
75
75
  valueOrValues={valueOrValues}
76
76
  displayableErrors={displayableErrors}
@@ -188,7 +188,7 @@ function FieldErrors(props: { attribute: Attribute; displayableErrors: FormField
188
188
  .filter(error => error.fieldIndex === fieldIndex)
189
189
  .map(({ errorMessage }, i, arr) => (
190
190
  <Fragment key={i}>
191
- <span key={i}>{errorMessage}</span>
191
+ {errorMessage}
192
192
  {arr.length - 1 !== i && <br />}
193
193
  </Fragment>
194
194
  ))}
@@ -196,7 +196,7 @@ function FieldErrors(props: { attribute: Attribute; displayableErrors: FormField
196
196
  );
197
197
  }
198
198
 
199
- type InputFiledByTypeProps = {
199
+ type InputFieldByTypeProps = {
200
200
  attribute: Attribute;
201
201
  valueOrValues: string | string[];
202
202
  displayableErrors: FormFieldError[];
@@ -205,7 +205,7 @@ type InputFiledByTypeProps = {
205
205
  kcClsx: KcClsx;
206
206
  };
207
207
 
208
- function InputFiledByType(props: InputFiledByTypeProps) {
208
+ function InputFieldByType(props: InputFieldByTypeProps) {
209
209
  const { attribute, valueOrValues } = props;
210
210
 
211
211
  switch (attribute.annotations.inputType) {
@@ -274,9 +274,11 @@ function PasswordWrapper(props: { kcClsx: KcClsx; i18n: I18n; passwordInputId: s
274
274
  );
275
275
  }
276
276
 
277
- function InputTag(props: InputFiledByTypeProps & { fieldIndex: number | undefined }) {
277
+ function InputTag(props: InputFieldByTypeProps & { fieldIndex: number | undefined }) {
278
278
  const { attribute, fieldIndex, kcClsx, dispatchFormAction, valueOrValues, i18n, displayableErrors } = props;
279
279
 
280
+ const { advancedMsgStr } = i18n;
281
+
280
282
  return (
281
283
  <>
282
284
  <input
@@ -305,7 +307,9 @@ function InputTag(props: InputFiledByTypeProps & { fieldIndex: number | undefine
305
307
  aria-invalid={displayableErrors.find(error => error.fieldIndex === fieldIndex) !== undefined}
306
308
  disabled={attribute.readOnly}
307
309
  autoComplete={attribute.autocomplete}
308
- placeholder={attribute.annotations.inputTypePlaceholder}
310
+ placeholder={
311
+ attribute.annotations.inputTypePlaceholder === undefined ? undefined : advancedMsgStr(attribute.annotations.inputTypePlaceholder)
312
+ }
309
313
  pattern={attribute.annotations.inputTypePattern}
310
314
  size={attribute.annotations.inputTypeSize === undefined ? undefined : parseInt(`${attribute.annotations.inputTypeSize}`)}
311
315
  maxLength={
@@ -429,7 +433,7 @@ function AddRemoveButtonsMultiValuedAttribute(props: {
429
433
  );
430
434
  }
431
435
 
432
- function InputTagSelects(props: InputFiledByTypeProps) {
436
+ function InputTagSelects(props: InputFieldByTypeProps) {
433
437
  const { attribute, dispatchFormAction, kcClsx, valueOrValues } = props;
434
438
 
435
439
  const { advancedMsg } = props.i18n;
@@ -537,7 +541,7 @@ function InputTagSelects(props: InputFiledByTypeProps) {
537
541
  );
538
542
  }
539
543
 
540
- function TextareaTag(props: InputFiledByTypeProps) {
544
+ function TextareaTag(props: InputFieldByTypeProps) {
541
545
  const { attribute, dispatchFormAction, kcClsx, displayableErrors, valueOrValues } = props;
542
546
 
543
547
  assert(typeof valueOrValues === "string");
@@ -573,7 +577,7 @@ function TextareaTag(props: InputFiledByTypeProps) {
573
577
  );
574
578
  }
575
579
 
576
- function SelectTag(props: InputFiledByTypeProps) {
580
+ function SelectTag(props: InputFieldByTypeProps) {
577
581
  const { attribute, dispatchFormAction, kcClsx, displayableErrors, i18n, valueOrValues } = props;
578
582
 
579
583
  const { advancedMsg } = i18n;
@@ -0,0 +1,6 @@
1
+ import type { GenericI18n_noJsx } from "./i18n";
2
+
3
+ export type GenericI18n<MessageKey extends string> = GenericI18n_noJsx<MessageKey> & {
4
+ msg: (key: MessageKey, ...args: (string | undefined)[]) => JSX.Element;
5
+ advancedMsg: (key: string, ...args: (string | undefined)[]) => JSX.Element;
6
+ };