keycloakify 10.0.0-rc.9 → 10.0.0-rc.91

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 (820) hide show
  1. package/PUBLIC_URL.d.ts +1 -1
  2. package/PUBLIC_URL.js +3 -3
  3. package/PUBLIC_URL.js.map +1 -1
  4. package/README.md +2 -3
  5. package/account/DefaultPage.d.ts +5 -0
  6. package/account/{Fallback.js → DefaultPage.js} +3 -3
  7. package/account/DefaultPage.js.map +1 -0
  8. package/account/{kcContext → KcContext}/KcContext.d.ts +13 -0
  9. package/account/KcContext/KcContext.js.map +1 -0
  10. package/account/KcContext/getKcContextMock.d.ts +24 -0
  11. package/account/KcContext/getKcContextMock.js +28 -0
  12. package/account/KcContext/getKcContextMock.js.map +1 -0
  13. package/account/KcContext/index.d.ts +2 -0
  14. package/account/KcContext/index.js +2 -0
  15. package/account/KcContext/index.js.map +1 -0
  16. package/account/{kcContext → KcContext}/kcContextMocks.d.ts +1 -1
  17. package/account/KcContext/kcContextMocks.js +143 -0
  18. package/account/KcContext/kcContextMocks.js.map +1 -0
  19. package/account/Template.d.ts +2 -2
  20. package/account/Template.js +12 -12
  21. package/account/Template.js.map +1 -1
  22. package/account/TemplateProps.d.ts +3 -5
  23. package/account/i18n/baseMessages/ar.d.ts +2 -0
  24. package/account/i18n/baseMessages/ar.js +3 -1
  25. package/account/i18n/baseMessages/ar.js.map +1 -1
  26. package/account/i18n/baseMessages/ca.d.ts +2 -0
  27. package/account/i18n/baseMessages/ca.js +3 -1
  28. package/account/i18n/baseMessages/ca.js.map +1 -1
  29. package/account/i18n/baseMessages/cs.d.ts +2 -0
  30. package/account/i18n/baseMessages/cs.js +3 -1
  31. package/account/i18n/baseMessages/cs.js.map +1 -1
  32. package/account/i18n/baseMessages/da.d.ts +2 -0
  33. package/account/i18n/baseMessages/da.js +3 -1
  34. package/account/i18n/baseMessages/da.js.map +1 -1
  35. package/account/i18n/baseMessages/de.d.ts +2 -0
  36. package/account/i18n/baseMessages/de.js +3 -1
  37. package/account/i18n/baseMessages/de.js.map +1 -1
  38. package/account/i18n/baseMessages/el.d.ts +2 -0
  39. package/account/i18n/baseMessages/el.js +3 -1
  40. package/account/i18n/baseMessages/el.js.map +1 -1
  41. package/account/i18n/baseMessages/en.d.ts +2 -0
  42. package/account/i18n/baseMessages/en.js +3 -1
  43. package/account/i18n/baseMessages/en.js.map +1 -1
  44. package/account/i18n/baseMessages/es.d.ts +2 -0
  45. package/account/i18n/baseMessages/es.js +3 -1
  46. package/account/i18n/baseMessages/es.js.map +1 -1
  47. package/account/i18n/baseMessages/fa.d.ts +2 -0
  48. package/account/i18n/baseMessages/fa.js +3 -1
  49. package/account/i18n/baseMessages/fa.js.map +1 -1
  50. package/account/i18n/baseMessages/fi.d.ts +2 -0
  51. package/account/i18n/baseMessages/fi.js +3 -1
  52. package/account/i18n/baseMessages/fi.js.map +1 -1
  53. package/account/i18n/baseMessages/fr.d.ts +2 -0
  54. package/account/i18n/baseMessages/fr.js +3 -1
  55. package/account/i18n/baseMessages/fr.js.map +1 -1
  56. package/account/i18n/baseMessages/hu.d.ts +2 -0
  57. package/account/i18n/baseMessages/hu.js +3 -1
  58. package/account/i18n/baseMessages/hu.js.map +1 -1
  59. package/account/i18n/baseMessages/index.d.ts +18 -0
  60. package/account/i18n/baseMessages/index.js.map +1 -1
  61. package/account/i18n/baseMessages/it.d.ts +2 -0
  62. package/account/i18n/baseMessages/it.js +3 -1
  63. package/account/i18n/baseMessages/it.js.map +1 -1
  64. package/account/i18n/baseMessages/ja.d.ts +2 -0
  65. package/account/i18n/baseMessages/ja.js +3 -1
  66. package/account/i18n/baseMessages/ja.js.map +1 -1
  67. package/account/i18n/baseMessages/lt.d.ts +2 -0
  68. package/account/i18n/baseMessages/lt.js +3 -1
  69. package/account/i18n/baseMessages/lt.js.map +1 -1
  70. package/account/i18n/baseMessages/lv.d.ts +2 -0
  71. package/account/i18n/baseMessages/lv.js +3 -1
  72. package/account/i18n/baseMessages/lv.js.map +1 -1
  73. package/account/i18n/baseMessages/nl.d.ts +2 -0
  74. package/account/i18n/baseMessages/nl.js +3 -1
  75. package/account/i18n/baseMessages/nl.js.map +1 -1
  76. package/account/i18n/baseMessages/no.d.ts +2 -0
  77. package/account/i18n/baseMessages/no.js +3 -1
  78. package/account/i18n/baseMessages/no.js.map +1 -1
  79. package/account/i18n/baseMessages/pl.d.ts +2 -0
  80. package/account/i18n/baseMessages/pl.js +3 -1
  81. package/account/i18n/baseMessages/pl.js.map +1 -1
  82. package/account/i18n/baseMessages/pt-BR.d.ts +2 -0
  83. package/account/i18n/baseMessages/pt-BR.js +3 -1
  84. package/account/i18n/baseMessages/pt-BR.js.map +1 -1
  85. package/account/i18n/baseMessages/ru.d.ts +2 -0
  86. package/account/i18n/baseMessages/ru.js +3 -1
  87. package/account/i18n/baseMessages/ru.js.map +1 -1
  88. package/account/i18n/baseMessages/sk.d.ts +2 -0
  89. package/account/i18n/baseMessages/sk.js +3 -1
  90. package/account/i18n/baseMessages/sk.js.map +1 -1
  91. package/account/i18n/baseMessages/sv.d.ts +2 -0
  92. package/account/i18n/baseMessages/sv.js +3 -1
  93. package/account/i18n/baseMessages/sv.js.map +1 -1
  94. package/account/i18n/baseMessages/th.d.ts +2 -0
  95. package/account/i18n/baseMessages/th.js +3 -1
  96. package/account/i18n/baseMessages/th.js.map +1 -1
  97. package/account/i18n/baseMessages/tr.d.ts +2 -0
  98. package/account/i18n/baseMessages/tr.js +3 -1
  99. package/account/i18n/baseMessages/tr.js.map +1 -1
  100. package/account/i18n/baseMessages/uk.d.ts +2 -0
  101. package/account/i18n/baseMessages/uk.js +3 -1
  102. package/account/i18n/baseMessages/uk.js.map +1 -1
  103. package/account/i18n/baseMessages/zh-CN.d.ts +2 -0
  104. package/account/i18n/baseMessages/zh-CN.js +3 -1
  105. package/account/i18n/baseMessages/zh-CN.js.map +1 -1
  106. package/account/i18n/i18n.d.ts +34 -36
  107. package/account/i18n/i18n.js +117 -98
  108. package/account/i18n/i18n.js.map +1 -1
  109. package/account/i18n/index.d.ts +4 -1
  110. package/account/i18n/index.js +1 -1
  111. package/account/i18n/index.js.map +1 -1
  112. package/account/i18n/useI18n.d.ts +13 -0
  113. package/account/i18n/useI18n.js +26 -0
  114. package/account/i18n/useI18n.js.map +1 -0
  115. package/account/index.d.ts +3 -7
  116. package/account/index.js +1 -5
  117. package/account/index.js.map +1 -1
  118. package/account/lib/kcClsx.d.ts +9 -0
  119. package/account/lib/kcClsx.js +19 -0
  120. package/account/lib/kcClsx.js.map +1 -0
  121. package/account/pages/Account.d.ts +1 -1
  122. package/account/pages/Account.js +7 -6
  123. package/account/pages/Account.js.map +1 -1
  124. package/account/pages/Applications.d.ts +1 -1
  125. package/account/pages/Applications.js +7 -8
  126. package/account/pages/Applications.js.map +1 -1
  127. package/account/pages/FederatedIdentity.d.ts +3 -3
  128. package/account/pages/FederatedIdentity.js +1 -1
  129. package/account/pages/FederatedIdentity.js.map +1 -1
  130. package/account/pages/Log.d.ts +1 -1
  131. package/account/pages/Log.js +3 -3
  132. package/account/pages/Log.js.map +1 -1
  133. package/account/pages/PageProps.d.ts +4 -6
  134. package/account/pages/Password.d.ts +1 -1
  135. package/account/pages/Password.js +16 -13
  136. package/account/pages/Password.js.map +1 -1
  137. package/account/pages/Sessions.d.ts +1 -1
  138. package/account/pages/Sessions.js +3 -4
  139. package/account/pages/Sessions.js.map +1 -1
  140. package/account/pages/Totp.d.ts +1 -1
  141. package/account/pages/Totp.js +5 -10
  142. package/account/pages/Totp.js.map +1 -1
  143. package/bin/180.index.js +4664 -0
  144. package/bin/193.index.js +160 -0
  145. package/bin/266.index.js +806 -0
  146. package/bin/304.index.js +1108 -0
  147. package/bin/31.index.js +801 -0
  148. package/bin/36.index.js +9980 -0
  149. package/bin/430.index.js +1349 -0
  150. package/bin/440.index.js +1466 -0
  151. package/bin/453.index.js +769 -0
  152. package/bin/456.index.js +6200 -0
  153. package/bin/490.index.js +75195 -0
  154. package/bin/525.index.js +41826 -0
  155. package/bin/526.index.js +986 -0
  156. package/bin/538.index.js +108 -0
  157. package/bin/720.index.js +243 -0
  158. package/bin/877.index.js +275 -0
  159. package/bin/893.index.js +712 -0
  160. package/bin/932.index.js +269 -0
  161. package/bin/97.index.js +676 -0
  162. package/bin/main.js +7675 -141754
  163. package/bin/shared/KeycloakVersionRange.d.ts +5 -0
  164. package/bin/shared/KeycloakVersionRange.js.map +1 -0
  165. package/bin/shared/buildContext.d.ts +74 -0
  166. package/bin/shared/buildContext.js.map +1 -0
  167. package/bin/shared/constants.d.ts +18 -0
  168. package/bin/shared/constants.js +59 -0
  169. package/bin/shared/constants.js.map +1 -0
  170. package/bin/shared/copyKeycloakResourcesToPublic.d.ts +8 -0
  171. package/bin/shared/copyKeycloakResourcesToPublic.js.map +1 -0
  172. package/bin/shared/downloadKeycloakDefaultTheme.d.ts +11 -0
  173. package/bin/shared/downloadKeycloakDefaultTheme.js.map +1 -0
  174. package/bin/shared/downloadKeycloakStaticResources.d.ts +9 -0
  175. package/bin/shared/downloadKeycloakStaticResources.js.map +1 -0
  176. package/bin/shared/generateKcGenTs.d.ts +12 -0
  177. package/bin/shared/generateKcGenTs.js.map +1 -0
  178. package/bin/shared/metaInfKeycloakThemes.d.ts +13 -0
  179. package/bin/shared/metaInfKeycloakThemes.js.map +1 -0
  180. package/bin/shared/promptKeycloakVersion.d.ts +7 -0
  181. package/bin/shared/promptKeycloakVersion.js.map +1 -0
  182. package/lib/BASE_URL.js.map +1 -1
  183. package/lib/getKcClsx.d.ts +11 -0
  184. package/lib/getKcClsx.js +55 -0
  185. package/lib/getKcClsx.js.map +1 -0
  186. package/login/{Fallback.d.ts → DefaultPage.d.ts} +7 -6
  187. package/login/{Fallback.js → DefaultPage.js} +2 -2
  188. package/login/DefaultPage.js.map +1 -0
  189. package/login/{kcContext → KcContext}/KcContext.d.ts +36 -17
  190. package/login/KcContext/KcContext.js.map +1 -0
  191. package/login/KcContext/getKcContextMock.d.ts +24 -0
  192. package/login/KcContext/getKcContextMock.js +28 -0
  193. package/login/KcContext/getKcContextMock.js.map +1 -0
  194. package/login/KcContext/index.d.ts +2 -0
  195. package/login/KcContext/index.js +2 -0
  196. package/login/KcContext/index.js.map +1 -0
  197. package/login/{kcContext → KcContext}/kcContextMocks.d.ts +1 -1
  198. package/login/KcContext/kcContextMocks.js +334 -0
  199. package/login/KcContext/kcContextMocks.js.map +1 -0
  200. package/login/Template.d.ts +2 -2
  201. package/login/Template.js +23 -23
  202. package/login/Template.js.map +1 -1
  203. package/login/TemplateProps.d.ts +3 -5
  204. package/login/UserProfileFormFields.d.ts +3 -20
  205. package/login/UserProfileFormFields.js +78 -122
  206. package/login/UserProfileFormFields.js.map +1 -1
  207. package/login/UserProfileFormFieldsProps.d.ts +24 -0
  208. package/login/UserProfileFormFieldsProps.js +2 -0
  209. package/login/UserProfileFormFieldsProps.js.map +1 -0
  210. package/login/i18n/baseMessages/ar.d.ts +9 -0
  211. package/login/i18n/baseMessages/ar.js +11 -2
  212. package/login/i18n/baseMessages/ar.js.map +1 -1
  213. package/login/i18n/baseMessages/ca.d.ts +10 -1
  214. package/login/i18n/baseMessages/ca.js +12 -3
  215. package/login/i18n/baseMessages/ca.js.map +1 -1
  216. package/login/i18n/baseMessages/cs.d.ts +9 -0
  217. package/login/i18n/baseMessages/cs.js +11 -2
  218. package/login/i18n/baseMessages/cs.js.map +1 -1
  219. package/login/i18n/baseMessages/da.d.ts +9 -0
  220. package/login/i18n/baseMessages/da.js +11 -2
  221. package/login/i18n/baseMessages/da.js.map +1 -1
  222. package/login/i18n/baseMessages/de.d.ts +9 -0
  223. package/login/i18n/baseMessages/de.js +11 -2
  224. package/login/i18n/baseMessages/de.js.map +1 -1
  225. package/login/i18n/baseMessages/el.d.ts +9 -1
  226. package/login/i18n/baseMessages/el.js +11 -3
  227. package/login/i18n/baseMessages/el.js.map +1 -1
  228. package/login/i18n/baseMessages/en.d.ts +10 -1
  229. package/login/i18n/baseMessages/en.js +12 -3
  230. package/login/i18n/baseMessages/en.js.map +1 -1
  231. package/login/i18n/baseMessages/es.d.ts +10 -1
  232. package/login/i18n/baseMessages/es.js +12 -3
  233. package/login/i18n/baseMessages/es.js.map +1 -1
  234. package/login/i18n/baseMessages/fa.d.ts +9 -1
  235. package/login/i18n/baseMessages/fa.js +11 -3
  236. package/login/i18n/baseMessages/fa.js.map +1 -1
  237. package/login/i18n/baseMessages/fi.d.ts +9 -0
  238. package/login/i18n/baseMessages/fi.js +11 -2
  239. package/login/i18n/baseMessages/fi.js.map +1 -1
  240. package/login/i18n/baseMessages/fr.d.ts +9 -0
  241. package/login/i18n/baseMessages/fr.js +11 -2
  242. package/login/i18n/baseMessages/fr.js.map +1 -1
  243. package/login/i18n/baseMessages/hu.d.ts +10 -1
  244. package/login/i18n/baseMessages/hu.js +12 -3
  245. package/login/i18n/baseMessages/hu.js.map +1 -1
  246. package/login/i18n/baseMessages/index.d.ts +109 -2
  247. package/login/i18n/baseMessages/index.js.map +1 -1
  248. package/login/i18n/baseMessages/it.d.ts +9 -0
  249. package/login/i18n/baseMessages/it.js +11 -2
  250. package/login/i18n/baseMessages/it.js.map +1 -1
  251. package/login/i18n/baseMessages/ja.d.ts +9 -0
  252. package/login/i18n/baseMessages/ja.js +11 -2
  253. package/login/i18n/baseMessages/ja.js.map +1 -1
  254. package/login/i18n/baseMessages/lt.d.ts +9 -0
  255. package/login/i18n/baseMessages/lt.js +11 -2
  256. package/login/i18n/baseMessages/lt.js.map +1 -1
  257. package/login/i18n/baseMessages/lv.d.ts +9 -0
  258. package/login/i18n/baseMessages/lv.js +11 -2
  259. package/login/i18n/baseMessages/lv.js.map +1 -1
  260. package/login/i18n/baseMessages/nl.d.ts +9 -0
  261. package/login/i18n/baseMessages/nl.js +11 -2
  262. package/login/i18n/baseMessages/nl.js.map +1 -1
  263. package/login/i18n/baseMessages/no.d.ts +9 -0
  264. package/login/i18n/baseMessages/no.js +11 -2
  265. package/login/i18n/baseMessages/no.js.map +1 -1
  266. package/login/i18n/baseMessages/pl.d.ts +9 -0
  267. package/login/i18n/baseMessages/pl.js +11 -2
  268. package/login/i18n/baseMessages/pl.js.map +1 -1
  269. package/login/i18n/baseMessages/pt-BR.d.ts +9 -0
  270. package/login/i18n/baseMessages/pt-BR.js +11 -2
  271. package/login/i18n/baseMessages/pt-BR.js.map +1 -1
  272. package/login/i18n/baseMessages/ru.d.ts +9 -0
  273. package/login/i18n/baseMessages/ru.js +11 -2
  274. package/login/i18n/baseMessages/ru.js.map +1 -1
  275. package/login/i18n/baseMessages/sk.d.ts +9 -0
  276. package/login/i18n/baseMessages/sk.js +11 -2
  277. package/login/i18n/baseMessages/sk.js.map +1 -1
  278. package/login/i18n/baseMessages/sv.d.ts +9 -0
  279. package/login/i18n/baseMessages/sv.js +11 -2
  280. package/login/i18n/baseMessages/sv.js.map +1 -1
  281. package/login/i18n/baseMessages/th.d.ts +9 -0
  282. package/login/i18n/baseMessages/th.js +11 -2
  283. package/login/i18n/baseMessages/th.js.map +1 -1
  284. package/login/i18n/baseMessages/tr.d.ts +9 -0
  285. package/login/i18n/baseMessages/tr.js +11 -2
  286. package/login/i18n/baseMessages/tr.js.map +1 -1
  287. package/login/i18n/baseMessages/uk.d.ts +9 -0
  288. package/login/i18n/baseMessages/uk.js +11 -2
  289. package/login/i18n/baseMessages/uk.js.map +1 -1
  290. package/login/i18n/baseMessages/zh-CN.d.ts +10 -1
  291. package/login/i18n/baseMessages/zh-CN.js +12 -3
  292. package/login/i18n/baseMessages/zh-CN.js.map +1 -1
  293. package/login/i18n/i18n.d.ts +38 -38
  294. package/login/i18n/i18n.js +133 -100
  295. package/login/i18n/i18n.js.map +1 -1
  296. package/login/i18n/index.d.ts +4 -1
  297. package/login/i18n/index.js +1 -1
  298. package/login/i18n/index.js.map +1 -1
  299. package/login/i18n/useI18n.d.ts +13 -0
  300. package/login/i18n/useI18n.js +26 -0
  301. package/login/i18n/useI18n.js.map +1 -0
  302. package/login/index.d.ts +3 -8
  303. package/login/index.js +1 -6
  304. package/login/index.js.map +1 -1
  305. package/login/lib/kcClsx.d.ts +9 -0
  306. package/login/lib/kcClsx.js +130 -0
  307. package/login/lib/kcClsx.js.map +1 -0
  308. package/login/lib/useUserProfileForm.d.ts +20 -8
  309. package/login/lib/useUserProfileForm.js +402 -295
  310. package/login/lib/useUserProfileForm.js.map +1 -1
  311. package/login/pages/Code.d.ts +1 -1
  312. package/login/pages/Code.js +3 -3
  313. package/login/pages/Code.js.map +1 -1
  314. package/login/pages/DeleteAccountConfirm.d.ts +1 -1
  315. package/login/pages/DeleteAccountConfirm.js +7 -4
  316. package/login/pages/DeleteAccountConfirm.js.map +1 -1
  317. package/login/pages/DeleteCredential.d.ts +1 -1
  318. package/login/pages/DeleteCredential.js +3 -4
  319. package/login/pages/DeleteCredential.js.map +1 -1
  320. package/login/pages/Error.d.ts +1 -1
  321. package/login/pages/Error.js +1 -1
  322. package/login/pages/Error.js.map +1 -1
  323. package/login/pages/FrontchannelLogout.d.ts +1 -1
  324. package/login/pages/FrontchannelLogout.js +1 -1
  325. package/login/pages/FrontchannelLogout.js.map +1 -1
  326. package/login/pages/IdpReviewUserProfile.d.ts +4 -3
  327. package/login/pages/IdpReviewUserProfile.js +4 -5
  328. package/login/pages/IdpReviewUserProfile.js.map +1 -1
  329. package/login/pages/Info.d.ts +1 -1
  330. package/login/pages/Info.js +5 -7
  331. package/login/pages/Info.js.map +1 -1
  332. package/login/pages/Login.d.ts +1 -1
  333. package/login/pages/Login.js +8 -8
  334. package/login/pages/Login.js.map +1 -1
  335. package/login/pages/LoginConfigTotp.d.ts +1 -1
  336. package/login/pages/LoginConfigTotp.js +6 -7
  337. package/login/pages/LoginConfigTotp.js.map +1 -1
  338. package/login/pages/LoginIdpLinkConfirm.d.ts +1 -1
  339. package/login/pages/LoginIdpLinkConfirm.js +3 -4
  340. package/login/pages/LoginIdpLinkConfirm.js.map +1 -1
  341. package/login/pages/LoginIdpLinkEmail.d.ts +2 -2
  342. package/login/pages/LoginIdpLinkEmail.js +1 -1
  343. package/login/pages/LoginIdpLinkEmail.js.map +1 -1
  344. package/login/pages/LoginOauth2DeviceVerifyUserCode.d.ts +3 -3
  345. package/login/pages/LoginOauth2DeviceVerifyUserCode.js +3 -4
  346. package/login/pages/LoginOauth2DeviceVerifyUserCode.js.map +1 -1
  347. package/login/pages/LoginOauthGrant.d.ts +3 -3
  348. package/login/pages/LoginOauthGrant.js +4 -5
  349. package/login/pages/LoginOauthGrant.js.map +1 -1
  350. package/login/pages/LoginOtp.d.ts +1 -1
  351. package/login/pages/LoginOtp.js +3 -4
  352. package/login/pages/LoginOtp.js.map +1 -1
  353. package/login/pages/LoginPageExpired.d.ts +1 -1
  354. package/login/pages/LoginPageExpired.js +1 -1
  355. package/login/pages/LoginPageExpired.js.map +1 -1
  356. package/login/pages/LoginPassword.d.ts +1 -1
  357. package/login/pages/LoginPassword.js +7 -7
  358. package/login/pages/LoginPassword.js.map +1 -1
  359. package/login/pages/LoginRecoveryAuthnCodeConfig.d.ts +1 -1
  360. package/login/pages/LoginRecoveryAuthnCodeConfig.js +16 -16
  361. package/login/pages/LoginRecoveryAuthnCodeConfig.js.map +1 -1
  362. package/login/pages/LoginRecoveryAuthnCodeInput.d.ts +1 -1
  363. package/login/pages/LoginRecoveryAuthnCodeInput.js +3 -4
  364. package/login/pages/LoginRecoveryAuthnCodeInput.js.map +1 -1
  365. package/login/pages/LoginResetOtp.d.ts +1 -1
  366. package/login/pages/LoginResetOtp.js +3 -4
  367. package/login/pages/LoginResetOtp.js.map +1 -1
  368. package/login/pages/LoginResetPassword.d.ts +1 -1
  369. package/login/pages/LoginResetPassword.js +4 -5
  370. package/login/pages/LoginResetPassword.js.map +1 -1
  371. package/login/pages/LoginUpdatePassword.d.ts +1 -1
  372. package/login/pages/LoginUpdatePassword.js +8 -9
  373. package/login/pages/LoginUpdatePassword.js.map +1 -1
  374. package/login/pages/LoginUpdateProfile.d.ts +4 -3
  375. package/login/pages/LoginUpdateProfile.js +5 -9
  376. package/login/pages/LoginUpdateProfile.js.map +1 -1
  377. package/login/pages/LoginUsername.d.ts +1 -1
  378. package/login/pages/LoginUsername.js +5 -5
  379. package/login/pages/LoginUsername.js.map +1 -1
  380. package/login/pages/LoginVerifyEmail.d.ts +1 -1
  381. package/login/pages/LoginVerifyEmail.js +1 -1
  382. package/login/pages/LoginVerifyEmail.js.map +1 -1
  383. package/login/pages/LoginX509Info.d.ts +1 -1
  384. package/login/pages/LoginX509Info.js +3 -4
  385. package/login/pages/LoginX509Info.js.map +1 -1
  386. package/login/pages/LogoutConfirm.d.ts +1 -1
  387. package/login/pages/LogoutConfirm.js +3 -4
  388. package/login/pages/LogoutConfirm.js.map +1 -1
  389. package/login/pages/PageProps.d.ts +3 -5
  390. package/login/pages/Register.d.ts +4 -3
  391. package/login/pages/Register.js +6 -19
  392. package/login/pages/Register.js.map +1 -1
  393. package/login/pages/SamlPostForm.d.ts +1 -1
  394. package/login/pages/SamlPostForm.js +1 -1
  395. package/login/pages/SamlPostForm.js.map +1 -1
  396. package/login/pages/SelectAuthenticator.d.ts +2 -2
  397. package/login/pages/SelectAuthenticator.js +3 -7
  398. package/login/pages/SelectAuthenticator.js.map +1 -1
  399. package/login/pages/Terms.d.ts +2 -2
  400. package/login/pages/Terms.js +3 -10
  401. package/login/pages/Terms.js.map +1 -1
  402. package/login/pages/UpdateEmail.d.ts +3 -2
  403. package/login/pages/UpdateEmail.js +6 -10
  404. package/login/pages/UpdateEmail.js.map +1 -1
  405. package/login/pages/WebauthnAuthenticate.d.ts +1 -1
  406. package/login/pages/WebauthnAuthenticate.js +25 -22
  407. package/login/pages/WebauthnAuthenticate.js.map +1 -1
  408. package/login/pages/WebauthnError.d.ts +1 -1
  409. package/login/pages/WebauthnError.js +4 -5
  410. package/login/pages/WebauthnError.js.map +1 -1
  411. package/login/pages/WebauthnRegister.d.ts +1 -1
  412. package/login/pages/WebauthnRegister.js +16 -17
  413. package/login/pages/WebauthnRegister.js.map +1 -1
  414. package/package.json +427 -326
  415. package/src/PUBLIC_URL.ts +3 -3
  416. package/src/account/{Fallback.tsx → DefaultPage.tsx} +5 -5
  417. package/src/account/{kcContext → KcContext}/KcContext.ts +24 -2
  418. package/src/account/KcContext/getKcContextMock.ts +69 -0
  419. package/src/account/KcContext/index.ts +2 -0
  420. package/src/account/KcContext/kcContextMocks.ts +190 -0
  421. package/src/account/Template.tsx +14 -16
  422. package/src/account/TemplateProps.ts +4 -5
  423. package/src/account/i18n/baseMessages/ar.ts +3 -1
  424. package/src/account/i18n/baseMessages/ca.ts +3 -1
  425. package/src/account/i18n/baseMessages/cs.ts +3 -1
  426. package/src/account/i18n/baseMessages/da.ts +3 -1
  427. package/src/account/i18n/baseMessages/de.ts +3 -1
  428. package/src/account/i18n/baseMessages/el.ts +3 -1
  429. package/src/account/i18n/baseMessages/en.ts +3 -1
  430. package/src/account/i18n/baseMessages/es.ts +3 -1
  431. package/src/account/i18n/baseMessages/fa.ts +3 -1
  432. package/src/account/i18n/baseMessages/fi.ts +3 -1
  433. package/src/account/i18n/baseMessages/fr.ts +3 -1
  434. package/src/account/i18n/baseMessages/hu.ts +3 -1
  435. package/src/account/i18n/baseMessages/it.ts +3 -1
  436. package/src/account/i18n/baseMessages/ja.ts +3 -1
  437. package/src/account/i18n/baseMessages/lt.ts +3 -1
  438. package/src/account/i18n/baseMessages/lv.ts +3 -1
  439. package/src/account/i18n/baseMessages/nl.ts +3 -1
  440. package/src/account/i18n/baseMessages/no.ts +3 -1
  441. package/src/account/i18n/baseMessages/pl.ts +3 -1
  442. package/src/account/i18n/baseMessages/pt-BR.ts +3 -1
  443. package/src/account/i18n/baseMessages/ru.ts +3 -1
  444. package/src/account/i18n/baseMessages/sk.ts +3 -1
  445. package/src/account/i18n/baseMessages/sv.ts +3 -1
  446. package/src/account/i18n/baseMessages/th.ts +3 -1
  447. package/src/account/i18n/baseMessages/tr.ts +3 -1
  448. package/src/account/i18n/baseMessages/uk.ts +3 -1
  449. package/src/account/i18n/baseMessages/zh-CN.ts +3 -1
  450. package/src/account/i18n/i18n.tsx +202 -144
  451. package/src/account/i18n/index.ts +4 -1
  452. package/src/account/i18n/useI18n.ts +44 -0
  453. package/src/account/index.ts +3 -10
  454. package/src/account/lib/kcClsx.ts +25 -0
  455. package/src/account/pages/Account.tsx +12 -18
  456. package/src/account/pages/Applications.tsx +8 -9
  457. package/src/account/pages/FederatedIdentity.tsx +3 -3
  458. package/src/account/pages/Log.tsx +5 -5
  459. package/src/account/pages/PageProps.ts +4 -6
  460. package/src/account/pages/Password.tsx +17 -19
  461. package/src/account/pages/Sessions.tsx +5 -6
  462. package/src/account/pages/Totp.tsx +18 -38
  463. package/src/bin/add-story.ts +104 -0
  464. package/src/bin/copy-keycloak-resources-to-public.ts +3 -6
  465. package/src/bin/eject-page.ts +256 -0
  466. package/src/bin/initialize-email-theme.ts +30 -26
  467. package/src/bin/keycloakify/buildJars/buildJar.ts +138 -77
  468. package/src/bin/keycloakify/buildJars/buildJars.ts +35 -31
  469. package/src/bin/keycloakify/buildJars/extensionVersions.ts +3 -2
  470. package/src/bin/keycloakify/buildJars/generatePom.ts +19 -11
  471. package/src/bin/keycloakify/buildJars/getKeycloakVersionRangeForJar.ts +42 -10
  472. package/src/bin/keycloakify/generateFtl/generateFtl.ts +74 -48
  473. package/src/bin/keycloakify/generateFtl/{ftl_object_to_js_code_declaring_an_object.ftl → kcContextDeclarationTemplate.ftl} +233 -194
  474. package/src/bin/keycloakify/generateResources/bringInAccountV1.ts +89 -0
  475. package/src/bin/keycloakify/generateResources/generateMessageProperties.ts +192 -0
  476. package/src/bin/keycloakify/generateResources/generateResources.ts +42 -0
  477. package/src/bin/keycloakify/generateResources/generateResourcesForMainTheme.ts +300 -0
  478. package/src/bin/keycloakify/generateResources/generateResourcesForThemeVariant.ts +70 -0
  479. package/src/bin/keycloakify/generateResources/index.ts +1 -0
  480. package/src/bin/keycloakify/{generateSrcMainResources → generateResources}/readExtraPageNames.ts +21 -7
  481. package/src/bin/keycloakify/generateResources/readFieldNameUsage.ts +91 -0
  482. package/src/bin/keycloakify/keycloakify.ts +50 -16
  483. package/src/bin/keycloakify/replacers/replaceImportsInCssCode.ts +42 -46
  484. package/src/bin/keycloakify/replacers/replaceImportsInJsCode/replaceImportsInJsCode.ts +15 -12
  485. package/src/bin/keycloakify/replacers/replaceImportsInJsCode/vite.ts +31 -16
  486. package/src/bin/keycloakify/replacers/replaceImportsInJsCode/webpack.ts +53 -18
  487. package/src/bin/main.ts +96 -44
  488. package/src/bin/shared/KeycloakVersionRange.ts +4 -2
  489. package/src/bin/shared/buildContext.ts +866 -0
  490. package/src/bin/shared/constants.ts +10 -4
  491. package/src/bin/shared/copyKeycloakResourcesToPublic.ts +32 -21
  492. package/src/bin/shared/downloadKeycloakDefaultTheme.ts +276 -0
  493. package/src/bin/shared/downloadKeycloakStaticResources.ts +30 -26
  494. package/src/bin/shared/generateKcGenTs.ts +68 -0
  495. package/src/bin/shared/metaInfKeycloakThemes.ts +25 -19
  496. package/src/bin/shared/promptKeycloakVersion.ts +39 -15
  497. package/src/bin/start-keycloak/appBuild.ts +169 -0
  498. package/src/bin/start-keycloak/index.ts +1 -0
  499. package/src/bin/start-keycloak/keycloakifyBuild.ts +40 -0
  500. package/src/bin/start-keycloak/myrealm-realm-18.json +2155 -0
  501. package/src/bin/start-keycloak/myrealm-realm-19.json +2186 -0
  502. package/src/bin/start-keycloak/myrealm-realm-20.json +2197 -0
  503. package/src/bin/start-keycloak/myrealm-realm-21.json +2201 -0
  504. package/src/bin/start-keycloak/myrealm-realm-23.json +2155 -0
  505. package/src/bin/start-keycloak/myrealm-realm-24.json +2318 -0
  506. package/src/bin/start-keycloak/myrealm-realm-25.json +2400 -0
  507. package/src/bin/start-keycloak/start-keycloak.ts +451 -0
  508. package/src/bin/tools/SemVer.ts +32 -13
  509. package/src/bin/tools/String.prototype.replaceAll.ts +9 -2
  510. package/src/bin/tools/crawl.ts +4 -1
  511. package/src/bin/tools/crc32.ts +42 -24
  512. package/src/bin/tools/downloadAndExtractArchive.ts +254 -0
  513. package/src/bin/tools/escapeStringForPropertiesFile.ts +64 -0
  514. package/src/bin/tools/extractArchive.ts +140 -0
  515. package/src/bin/tools/fetchProxyOptions.ts +76 -53
  516. package/src/bin/tools/getAbsoluteAndInOsFormatPath.ts +10 -2
  517. package/src/bin/tools/octokit-addons/getLatestsSemVersionedTag.ts +8 -2
  518. package/src/bin/tools/octokit-addons/listTags.ts +15 -4
  519. package/src/bin/tools/partitionPromiseSettledResults.ts +12 -3
  520. package/src/bin/tools/readThisNpmPackageVersion.ts +5 -1
  521. package/src/bin/tools/transformCodebase.ts +29 -10
  522. package/src/bin/tools/trimIndent.ts +4 -1
  523. package/src/bin/tsconfig.json +4 -3
  524. package/src/bin/update-kc-gen.ts +13 -0
  525. package/src/lib/getKcClsx.ts +89 -0
  526. package/src/login/{Fallback.tsx → DefaultPage.tsx} +7 -6
  527. package/src/login/{kcContext → KcContext}/KcContext.ts +58 -30
  528. package/src/login/KcContext/getKcContextMock.ts +69 -0
  529. package/src/login/KcContext/index.ts +8 -0
  530. package/src/login/KcContext/kcContextMocks.ts +583 -0
  531. package/src/login/Template.tsx +54 -57
  532. package/src/login/TemplateProps.ts +3 -6
  533. package/src/login/UserProfileFormFields.tsx +125 -210
  534. package/src/login/UserProfileFormFieldsProps.tsx +22 -0
  535. package/src/login/i18n/baseMessages/ar.ts +11 -2
  536. package/src/login/i18n/baseMessages/ca.ts +12 -3
  537. package/src/login/i18n/baseMessages/cs.ts +11 -2
  538. package/src/login/i18n/baseMessages/da.ts +11 -2
  539. package/src/login/i18n/baseMessages/de.ts +11 -2
  540. package/src/login/i18n/baseMessages/el.ts +11 -3
  541. package/src/login/i18n/baseMessages/en.ts +12 -3
  542. package/src/login/i18n/baseMessages/es.ts +12 -3
  543. package/src/login/i18n/baseMessages/fa.ts +11 -3
  544. package/src/login/i18n/baseMessages/fi.ts +11 -2
  545. package/src/login/i18n/baseMessages/fr.ts +11 -2
  546. package/src/login/i18n/baseMessages/hu.ts +12 -3
  547. package/src/login/i18n/baseMessages/it.ts +11 -2
  548. package/src/login/i18n/baseMessages/ja.ts +11 -2
  549. package/src/login/i18n/baseMessages/lt.ts +11 -2
  550. package/src/login/i18n/baseMessages/lv.ts +11 -2
  551. package/src/login/i18n/baseMessages/nl.ts +11 -2
  552. package/src/login/i18n/baseMessages/no.ts +11 -2
  553. package/src/login/i18n/baseMessages/pl.ts +11 -2
  554. package/src/login/i18n/baseMessages/pt-BR.ts +11 -2
  555. package/src/login/i18n/baseMessages/ru.ts +11 -2
  556. package/src/login/i18n/baseMessages/sk.ts +11 -2
  557. package/src/login/i18n/baseMessages/sv.ts +11 -2
  558. package/src/login/i18n/baseMessages/th.ts +11 -2
  559. package/src/login/i18n/baseMessages/tr.ts +11 -2
  560. package/src/login/i18n/baseMessages/uk.ts +11 -2
  561. package/src/login/i18n/baseMessages/zh-CN.ts +12 -3
  562. package/src/login/i18n/i18n.tsx +232 -145
  563. package/src/login/i18n/index.ts +4 -1
  564. package/src/login/i18n/useI18n.ts +44 -0
  565. package/src/login/index.ts +3 -11
  566. package/src/login/lib/kcClsx.ts +143 -0
  567. package/src/login/lib/useUserProfileForm.tsx +480 -351
  568. package/src/login/pages/Code.tsx +8 -5
  569. package/src/login/pages/DeleteAccountConfirm.tsx +15 -10
  570. package/src/login/pages/DeleteCredential.tsx +9 -7
  571. package/src/login/pages/Error.tsx +9 -2
  572. package/src/login/pages/FrontchannelLogout.tsx +6 -3
  573. package/src/login/pages/IdpReviewUserProfile.tsx +20 -21
  574. package/src/login/pages/Info.tsx +5 -8
  575. package/src/login/pages/Login.tsx +35 -54
  576. package/src/login/pages/LoginConfigTotp.tsx +35 -39
  577. package/src/login/pages/LoginIdpLinkConfirm.tsx +7 -18
  578. package/src/login/pages/LoginIdpLinkEmail.tsx +9 -3
  579. package/src/login/pages/LoginOauth2DeviceVerifyUserCode.tsx +24 -23
  580. package/src/login/pages/LoginOauthGrant.tsx +14 -20
  581. package/src/login/pages/LoginOtp.tsx +27 -30
  582. package/src/login/pages/LoginPageExpired.tsx +2 -2
  583. package/src/login/pages/LoginPassword.tsx +22 -32
  584. package/src/login/pages/LoginRecoveryAuthnCodeConfig.tsx +34 -34
  585. package/src/login/pages/LoginRecoveryAuthnCodeInput.tsx +19 -22
  586. package/src/login/pages/LoginResetOtp.tsx +19 -22
  587. package/src/login/pages/LoginResetPassword.tsx +21 -24
  588. package/src/login/pages/LoginUpdatePassword.tsx +41 -51
  589. package/src/login/pages/LoginUpdateProfile.tsx +32 -30
  590. package/src/login/pages/LoginUsername.tsx +23 -34
  591. package/src/login/pages/LoginVerifyEmail.tsx +5 -2
  592. package/src/login/pages/LoginX509Info.tsx +24 -33
  593. package/src/login/pages/LogoutConfirm.tsx +8 -14
  594. package/src/login/pages/PageProps.ts +3 -5
  595. package/src/login/pages/Register.tsx +37 -59
  596. package/src/login/pages/SamlPostForm.tsx +2 -2
  597. package/src/login/pages/SelectAuthenticator.tsx +23 -24
  598. package/src/login/pages/Terms.tsx +14 -24
  599. package/src/login/pages/UpdateEmail.tsx +30 -33
  600. package/src/login/pages/WebauthnAuthenticate.tsx +40 -44
  601. package/src/login/pages/WebauthnError.tsx +15 -19
  602. package/src/login/pages/WebauthnRegister.tsx +28 -37
  603. package/src/tools/Array.prototype.every.ts +4 -1
  604. package/src/tools/ExtractAfterStartingWith.ts +4 -0
  605. package/src/tools/LazyOrNot.ts +3 -1
  606. package/src/tools/Object.fromEntries.ts +23 -0
  607. package/src/tools/StatefulObservable/README.md +16 -0
  608. package/src/tools/StatefulObservable/StatefulObservable.ts +58 -0
  609. package/src/tools/StatefulObservable/hooks/index.ts +2 -0
  610. package/src/tools/StatefulObservable/hooks/useObservable.ts +25 -0
  611. package/src/tools/StatefulObservable/hooks/useRerenderOnChange.ts +19 -0
  612. package/src/tools/StatefulObservable/index.ts +2 -0
  613. package/src/tools/ValueOf.ts +2 -0
  614. package/src/tools/clsx.ts +6 -42
  615. package/src/tools/clsx_withTransform.ts +55 -0
  616. package/src/tools/deepAssign.ts +57 -19
  617. package/src/tools/formatNumber.ts +7 -3
  618. package/src/tools/structuredCloneButFunctions.ts +24 -0
  619. package/src/tools/useConstCallback.ts +3 -1
  620. package/src/tools/useInsertLinkTags.ts +78 -74
  621. package/src/tools/useInsertScriptTags.ts +69 -73
  622. package/src/tools/useOnFirstMount.ts +18 -0
  623. package/src/tools/useSetClassName.ts +4 -1
  624. package/src/vite-plugin/vite-plugin.ts +73 -37
  625. package/stories/account/pages/Account.stories.tsx +18 -0
  626. package/stories/account/pages/FederatedIdentity.stories.tsx +38 -0
  627. package/stories/account/pages/Log.stories.tsx +356 -0
  628. package/stories/account/pages/Password.stories.tsx +28 -0
  629. package/stories/account/pages/Sessions.stories.tsx +59 -0
  630. package/stories/account/pages/Totp.stories.tsx +182 -0
  631. package/stories/login/pages/Code.stories.tsx +18 -0
  632. package/stories/login/pages/DeleteAccountConfirm.stories.tsx +18 -0
  633. package/stories/login/pages/DeleteCredential.stories.tsx +18 -0
  634. package/stories/login/pages/Error.stories.tsx +28 -0
  635. package/stories/login/pages/FrontchannelLogout.stories.tsx +18 -0
  636. package/stories/login/pages/IdpReviewUserProfile.stories.tsx +18 -0
  637. package/stories/login/pages/Info.stories.tsx +52 -0
  638. package/stories/login/pages/Login.stories.tsx +221 -0
  639. package/stories/login/pages/LoginConfigTotp.stories.tsx +43 -0
  640. package/stories/login/pages/LoginDeviceVerifyUserCode.stories.tsx +18 -0
  641. package/stories/login/pages/LoginIdpLinkConfirm.stories.tsx +18 -0
  642. package/stories/login/pages/LoginIdpLinkEmail.stories.tsx +18 -0
  643. package/stories/login/pages/LoginOauth2DeviceVerifyUserCode.stories.tsx +18 -0
  644. package/stories/login/pages/LoginOauthGrant.stories.tsx +18 -0
  645. package/stories/login/pages/LoginOtp.stories.tsx +18 -0
  646. package/stories/login/pages/LoginPageExpired.stories.tsx +18 -0
  647. package/stories/login/pages/LoginPassword.stories.tsx +18 -0
  648. package/stories/login/pages/LoginRecoveryAuthnCodeConfig.stories.tsx +18 -0
  649. package/stories/login/pages/LoginRecoveryAuthnCodeInput.stories.tsx +18 -0
  650. package/stories/login/pages/LoginResetOtp.stories.tsx +18 -0
  651. package/stories/login/pages/LoginResetPassword.stories.tsx +31 -0
  652. package/stories/login/pages/LoginUpdatePassword.stories.tsx +18 -0
  653. package/stories/login/pages/LoginUpdateProfile.stories.tsx +18 -0
  654. package/stories/login/pages/LoginUsername.stories.tsx +31 -0
  655. package/stories/login/pages/LoginVerifyEmail.stories.tsx +30 -0
  656. package/stories/login/pages/LoginX509Info.stories.tsx +18 -0
  657. package/stories/login/pages/LogoutConfirm.stories.tsx +18 -0
  658. package/stories/login/pages/Register.stories.tsx +135 -0
  659. package/stories/login/pages/SamlPostForm.stories.tsx +18 -0
  660. package/stories/login/pages/SelectAuthenticator.stories.tsx +43 -0
  661. package/stories/login/pages/Terms.stories.tsx +43 -0
  662. package/stories/login/pages/UpdateEmail.stories.tsx +18 -0
  663. package/stories/login/pages/WebauthnAuthenticate.stories.tsx +18 -0
  664. package/stories/login/pages/WebauthnError.stories.tsx +18 -0
  665. package/stories/login/pages/WebauthnRegister.stories.tsx +18 -0
  666. package/tools/Array.prototype.every.js +2 -1
  667. package/tools/Array.prototype.every.js.map +1 -1
  668. package/tools/ExtractAfterStartingWith.d.ts +1 -0
  669. package/tools/ExtractAfterStartingWith.js +2 -0
  670. package/tools/ExtractAfterStartingWith.js.map +1 -0
  671. package/tools/HTMLElement.prototype.prepend.js.map +1 -1
  672. package/tools/Object.fromEntries.d.ts +1 -0
  673. package/tools/Object.fromEntries.js +17 -0
  674. package/tools/Object.fromEntries.js.map +1 -0
  675. package/tools/StatefulObservable/StatefulObservable.d.ts +8 -0
  676. package/tools/StatefulObservable/StatefulObservable.js +36 -0
  677. package/tools/StatefulObservable/StatefulObservable.js.map +1 -0
  678. package/tools/StatefulObservable/hooks/index.d.ts +2 -0
  679. package/tools/StatefulObservable/hooks/index.js +3 -0
  680. package/tools/StatefulObservable/hooks/index.js.map +1 -0
  681. package/tools/StatefulObservable/hooks/useObservable.d.ts +8 -0
  682. package/tools/StatefulObservable/hooks/useObservable.js +17 -0
  683. package/tools/StatefulObservable/hooks/useObservable.js.map +1 -0
  684. package/tools/StatefulObservable/hooks/useRerenderOnChange.d.ts +5 -0
  685. package/tools/StatefulObservable/hooks/useRerenderOnChange.js +14 -0
  686. package/tools/StatefulObservable/hooks/useRerenderOnChange.js.map +1 -0
  687. package/tools/StatefulObservable/index.d.ts +2 -0
  688. package/tools/StatefulObservable/index.js +3 -0
  689. package/tools/StatefulObservable/index.js.map +1 -0
  690. package/tools/ValueOf.d.ts +2 -0
  691. package/tools/ValueOf.js +2 -0
  692. package/tools/ValueOf.js.map +1 -0
  693. package/tools/clsx.d.ts +3 -2
  694. package/tools/clsx.js +5 -41
  695. package/tools/clsx.js.map +1 -1
  696. package/tools/clsx_withTransform.d.ts +5 -0
  697. package/tools/clsx_withTransform.js +43 -0
  698. package/tools/clsx_withTransform.js.map +1 -0
  699. package/tools/deepAssign.d.ts +1 -0
  700. package/tools/deepAssign.js +41 -16
  701. package/tools/deepAssign.js.map +1 -1
  702. package/tools/formatNumber.js +2 -1
  703. package/tools/formatNumber.js.map +1 -1
  704. package/tools/structuredCloneButFunctions.d.ts +7 -0
  705. package/tools/structuredCloneButFunctions.js +19 -0
  706. package/tools/structuredCloneButFunctions.js.map +1 -0
  707. package/tools/useConstCallback.js.map +1 -1
  708. package/tools/useInsertLinkTags.d.ts +11 -6
  709. package/tools/useInsertLinkTags.js +53 -52
  710. package/tools/useInsertLinkTags.js.map +1 -1
  711. package/tools/useInsertScriptTags.d.ts +15 -6
  712. package/tools/useInsertScriptTags.js +56 -61
  713. package/tools/useInsertScriptTags.js.map +1 -1
  714. package/tools/useOnFirstMount.d.ts +2 -0
  715. package/tools/useOnFirstMount.js +15 -0
  716. package/tools/useOnFirstMount.js.map +1 -0
  717. package/tools/useSetClassName.js.map +1 -1
  718. package/vite-plugin/index.d.ts +1 -0
  719. package/vite-plugin/index.js +53373 -0
  720. package/vite-plugin/vite-plugin.d.ts +5 -0
  721. package/account/Fallback.d.ts +0 -5
  722. package/account/Fallback.js.map +0 -1
  723. package/account/kcContext/KcContext.js.map +0 -1
  724. package/account/kcContext/createGetKcContext.d.ts +0 -19
  725. package/account/kcContext/createGetKcContext.js +0 -73
  726. package/account/kcContext/createGetKcContext.js.map +0 -1
  727. package/account/kcContext/getKcContext.d.ts +0 -13
  728. package/account/kcContext/getKcContext.js +0 -13
  729. package/account/kcContext/getKcContext.js.map +0 -1
  730. package/account/kcContext/getKcContextFromWindow.d.ts +0 -8
  731. package/account/kcContext/getKcContextFromWindow.js +0 -5
  732. package/account/kcContext/getKcContextFromWindow.js.map +0 -1
  733. package/account/kcContext/index.d.ts +0 -1
  734. package/account/kcContext/index.js +0 -2
  735. package/account/kcContext/index.js.map +0 -1
  736. package/account/kcContext/kcContextMocks.js +0 -215
  737. package/account/kcContext/kcContextMocks.js.map +0 -1
  738. package/account/lib/useGetClassName.d.ts +0 -7
  739. package/account/lib/useGetClassName.js +0 -19
  740. package/account/lib/useGetClassName.js.map +0 -1
  741. package/lib/isStorybook.d.ts +0 -1
  742. package/lib/isStorybook.js +0 -2
  743. package/lib/isStorybook.js.map +0 -1
  744. package/lib/useGetClassName.d.ts +0 -10
  745. package/lib/useGetClassName.js +0 -14
  746. package/lib/useGetClassName.js.map +0 -1
  747. package/login/Fallback.js.map +0 -1
  748. package/login/kcContext/KcContext.js.map +0 -1
  749. package/login/kcContext/createGetKcContext.d.ts +0 -19
  750. package/login/kcContext/createGetKcContext.js +0 -109
  751. package/login/kcContext/createGetKcContext.js.map +0 -1
  752. package/login/kcContext/getKcContext.d.ts +0 -13
  753. package/login/kcContext/getKcContext.js +0 -13
  754. package/login/kcContext/getKcContext.js.map +0 -1
  755. package/login/kcContext/getKcContextFromWindow.d.ts +0 -8
  756. package/login/kcContext/getKcContextFromWindow.js +0 -5
  757. package/login/kcContext/getKcContextFromWindow.js.map +0 -1
  758. package/login/kcContext/index.d.ts +0 -1
  759. package/login/kcContext/index.js +0 -2
  760. package/login/kcContext/index.js.map +0 -1
  761. package/login/kcContext/kcContextMocks.js +0 -390
  762. package/login/kcContext/kcContextMocks.js.map +0 -1
  763. package/login/lib/useDownloadTerms.d.ts +0 -17
  764. package/login/lib/useDownloadTerms.js +0 -32
  765. package/login/lib/useDownloadTerms.js.map +0 -1
  766. package/login/lib/useGetClassName.d.ts +0 -7
  767. package/login/lib/useGetClassName.js +0 -130
  768. package/login/lib/useGetClassName.js.map +0 -1
  769. package/src/account/kcContext/createGetKcContext.ts +0 -108
  770. package/src/account/kcContext/getKcContext.ts +0 -21
  771. package/src/account/kcContext/getKcContextFromWindow.ts +0 -11
  772. package/src/account/kcContext/index.ts +0 -1
  773. package/src/account/kcContext/kcContextMocks.ts +0 -260
  774. package/src/account/lib/useGetClassName.ts +0 -20
  775. package/src/bin/download-builtin-keycloak-theme.ts +0 -30
  776. package/src/bin/eject-keycloak-page.ts +0 -126
  777. package/src/bin/keycloakify/generateSrcMainResources/bringInAccountV1.ts +0 -79
  778. package/src/bin/keycloakify/generateSrcMainResources/generateMessageProperties.ts +0 -179
  779. package/src/bin/keycloakify/generateSrcMainResources/generateSrcMainResources.ts +0 -32
  780. package/src/bin/keycloakify/generateSrcMainResources/generateSrcMainResourcesForMainTheme.ts +0 -261
  781. package/src/bin/keycloakify/generateSrcMainResources/generateSrcMainResourcesForThemeVariant.ts +0 -56
  782. package/src/bin/keycloakify/generateSrcMainResources/index.ts +0 -1
  783. package/src/bin/keycloakify/generateSrcMainResources/readFieldNameUsage.ts +0 -56
  784. package/src/bin/keycloakify/generateStartKeycloakTestingContainer.ts +0 -60
  785. package/src/bin/keycloakify/replacers/replaceImportsInInlineCssCode.ts +0 -24
  786. package/src/bin/shared/buildOptions.ts +0 -277
  787. package/src/bin/shared/downloadAndUnzip.ts +0 -203
  788. package/src/bin/shared/downloadBuiltinKeycloakTheme.ts +0 -264
  789. package/src/bin/shared/getJarFileBasename.ts +0 -9
  790. package/src/bin/shared/getThemeSrcDirPath.ts +0 -47
  791. package/src/bin/start-keycloak.ts +0 -236
  792. package/src/bin/tools/getNpmWorkspaceRootDirPath.ts +0 -27
  793. package/src/bin/tools/unzip.ts +0 -141
  794. package/src/lib/isStorybook.ts +0 -1
  795. package/src/lib/useGetClassName.ts +0 -18
  796. package/src/login/kcContext/createGetKcContext.ts +0 -159
  797. package/src/login/kcContext/getKcContext.ts +0 -21
  798. package/src/login/kcContext/getKcContextFromWindow.ts +0 -11
  799. package/src/login/kcContext/index.ts +0 -1
  800. package/src/login/kcContext/kcContextMocks.ts +0 -630
  801. package/src/login/lib/useDownloadTerms.ts +0 -57
  802. package/src/login/lib/useGetClassName.ts +0 -132
  803. package/src/tools/AndByDiscriminatingKey.ts +0 -25
  804. package/src/tools/Markdown.ts +0 -3
  805. package/src/tools/deepClone.ts +0 -17
  806. package/src/tools/memoize.ts +0 -55
  807. package/tools/AndByDiscriminatingKey.d.ts +0 -5
  808. package/tools/AndByDiscriminatingKey.js +0 -2
  809. package/tools/AndByDiscriminatingKey.js.map +0 -1
  810. package/tools/Markdown.d.ts +0 -2
  811. package/tools/Markdown.js +0 -3
  812. package/tools/Markdown.js.map +0 -1
  813. package/tools/deepClone.d.ts +0 -2
  814. package/tools/deepClone.js +0 -14
  815. package/tools/deepClone.js.map +0 -1
  816. package/tools/memoize.d.ts +0 -7
  817. package/tools/memoize.js +0 -38
  818. package/tools/memoize.js.map +0 -1
  819. /package/account/{kcContext → KcContext}/KcContext.js +0 -0
  820. /package/login/{kcContext → KcContext}/KcContext.js +0 -0
@@ -135,7 +135,9 @@ const messages= {
135
135
  "invalidPasswordNotUsernameMessage": "Ugyldig passord: kan ikke være likt brukernavn.",
136
136
  "invalidPasswordRegexPatternMessage": "Ugyldig passord: tilfredsstiller ikke kravene for passord-mønster.",
137
137
  "invalidPasswordHistoryMessage": "Ugyldig passord: kan ikke være likt noen av de {0} foregående passordene.",
138
- "locale_fa": "فارسی"
138
+ "locale_fa": "فارسی",
139
+ "newPasswordSameAsOld": "Det nye passordet må være forskjellig fra det gamle",
140
+ "passwordConfirmNotMatch": "Passordbekreftelsen stemmer ikke"
139
141
  };
140
142
 
141
143
  export default messages;
@@ -336,7 +336,9 @@ const messages= {
336
336
  "error-invalid-date": "Nieprawidłowa data.",
337
337
  "error-user-attribute-read-only": "Pole {0} jest tylko do odczytu.",
338
338
  "error-username-invalid-character": "Login zawiera nieprawidłowy znak.",
339
- "error-person-name-invalid-character": "Nazwa zawiera nieprawidłowy znak."
339
+ "error-person-name-invalid-character": "Nazwa zawiera nieprawidłowy znak.",
340
+ "newPasswordSameAsOld": "Nowe hasło musi być inne niż stare",
341
+ "passwordConfirmNotMatch": "Potwierdzenie hasła nie pasuje"
340
342
  };
341
343
 
342
344
  export default messages;
@@ -306,7 +306,9 @@ const messages= {
306
306
  "openshift.scope.user_check-access": "Informações de acesso do usuário",
307
307
  "openshift.scope.user_full": "Acesso Completo",
308
308
  "openshift.scope.list-projects": "Listar projetos",
309
- "locale_fa": "فارسی"
309
+ "locale_fa": "فارسی",
310
+ "newPasswordSameAsOld": "A nova senha deve ser diferente da antiga",
311
+ "passwordConfirmNotMatch": "A confirmação da senha não corresponde"
310
312
  };
311
313
 
312
314
  export default messages;
@@ -203,7 +203,9 @@ const messages= {
203
203
  "invalidPasswordRegexPatternMessage": "Некорректный пароль: пароль не удовлетворяет регулярному выражению.",
204
204
  "invalidPasswordHistoryMessage": "Некорректный пароль: пароль не должен совпадать с последним(и) {0} паролями.",
205
205
  "invalidPasswordGenericMessage": "Некорректный пароль: новый пароль не соответствует правилам пароля.",
206
- "locale_fa": "فارسی"
206
+ "locale_fa": "فارسی",
207
+ "newPasswordSameAsOld": "Новый пароль должен отличаться от старого",
208
+ "passwordConfirmNotMatch": "Подтверждение пароля не совпадает"
207
209
  };
208
210
 
209
211
  export default messages;
@@ -173,7 +173,9 @@ const messages= {
173
173
  "permissionRequestion": "Žiadosti o povolenie",
174
174
  "permission": "Oprávnenie",
175
175
  "shares": "podiel (y)",
176
- "locale_fa": "فارسی"
176
+ "locale_fa": "فارسی",
177
+ "newPasswordSameAsOld": "Nové heslo musí byť odlišné od starého",
178
+ "passwordConfirmNotMatch": "Potvrdenie hesla sa nezhoduje"
177
179
  };
178
180
 
179
181
  export default messages;
@@ -132,7 +132,9 @@ const messages= {
132
132
  "invalidPasswordRegexPatternMessage": "Ogiltigt lösenord: matchar inte kravet för lösenordsmönster.",
133
133
  "invalidPasswordHistoryMessage": "Ogiltigt lösenord: Får inte vara samma som de senaste {0} lösenorden.",
134
134
  "invalidPasswordGenericMessage": "Ogiltigt lösenord: Det nya lösenordet stämmer inte med lösenordspolicyn.",
135
- "locale_fa": "فارسی"
135
+ "locale_fa": "فارسی",
136
+ "newPasswordSameAsOld": "Det nya lösenordet måste skilja sig från det gamla",
137
+ "passwordConfirmNotMatch": "Lösenordsbekräftelsen matchar inte"
136
138
  };
137
139
 
138
140
  export default messages;
@@ -336,7 +336,9 @@ const messages= {
336
336
  "error-invalid-date": "วันที่ไม่ถูกต้อง",
337
337
  "error-user-attribute-read-only": "เขตข้อมูล {0} เป็นแบบอ่านอย่างเดียว",
338
338
  "error-username-invalid-character": "ชื่อผู้ใช้งานมีอักขระไม่ถูกต้อง",
339
- "error-person-name-invalid-character": "ชื่อมีอักขระไม่ถูกต้อง"
339
+ "error-person-name-invalid-character": "ชื่อมีอักขระไม่ถูกต้อง",
340
+ "newPasswordSameAsOld": "รหัสผ่านใหม่ต้องต่างจากรหัสผ่านเดิม",
341
+ "passwordConfirmNotMatch": "การยืนยันรหัสผ่านไม่ตรงกัน"
340
342
  };
341
343
 
342
344
  export default messages;
@@ -275,7 +275,9 @@ const messages= {
275
275
  "myPermissions": "İzinlerim",
276
276
  "waitingforApproval": "Onay bekleniyor",
277
277
  "anyPermission": "Herhangi bir izin",
278
- "locale_fa": "فارسی"
278
+ "locale_fa": "فارسی",
279
+ "newPasswordSameAsOld": "Yeni şifre eskisinden farklı olmalıdır",
280
+ "passwordConfirmNotMatch": "Şifre doğrulama eşleşmiyor"
279
281
  };
280
282
 
281
283
  export default messages;
@@ -336,7 +336,9 @@ const messages= {
336
336
  "error-invalid-date": "Невірна дата.",
337
337
  "error-user-attribute-read-only": "Поле {0} лише для читання.",
338
338
  "error-username-invalid-character": "Ім'я користувача містить невірний символ.",
339
- "error-person-name-invalid-character": "Ім'я містить невірний символ."
339
+ "error-person-name-invalid-character": "Ім'я містить невірний символ.",
340
+ "newPasswordSameAsOld": "Новий пароль повинен відрізнятися від старого",
341
+ "passwordConfirmNotMatch": "Підтвердження пароля не співпадає"
340
342
  };
341
343
 
342
344
  export default messages;
@@ -145,7 +145,9 @@ const messages= {
145
145
  "invalidPasswordNotUsernameMessage": "无效的密码: 不能与用户名相同",
146
146
  "invalidPasswordRegexPatternMessage": "无效的密码: 无法与正则表达式匹配",
147
147
  "invalidPasswordHistoryMessage": "无效的密码: 不能与之前的{0} 个旧密码相同",
148
- "locale_fa": "فارسی"
148
+ "locale_fa": "فارسی",
149
+ "newPasswordSameAsOld": "新密码必须与旧密码不同",
150
+ "passwordConfirmNotMatch": "密码确认不匹配"
149
151
  };
150
152
 
151
153
  export default messages;
@@ -1,13 +1,9 @@
1
- import "minimal-polyfills/Object.fromEntries";
2
- //NOTE for later: https://github.com/remarkjs/react-markdown/blob/236182ecf30bd89c1e5a7652acaf8d0bf81e6170/src/renderers.js#L7-L35
3
- import { useEffect, useState, useRef } from "react";
4
- import fallbackMessages from "./baseMessages/en";
5
- import { getMessages } from "./baseMessages";
1
+ import "keycloakify/tools/Object.fromEntries";
6
2
  import { assert } from "tsafe/assert";
7
- import type { KcContext } from "../kcContext/KcContext";
8
- import { Markdown } from "keycloakify/tools/Markdown";
9
-
10
- export const fallbackLanguageTag = "en";
3
+ import messages_fallbackLanguage from "./baseMessages/en";
4
+ import { getMessages } from "./baseMessages";
5
+ import type { KcContext } from "../KcContext";
6
+ import { fallbackLanguageTag } from "keycloakify/bin/shared/constants";
11
7
 
12
8
  export type KcContextLike = {
13
9
  locale?: {
@@ -18,7 +14,7 @@ export type KcContextLike = {
18
14
 
19
15
  assert<KcContext extends KcContextLike ? true : false>();
20
16
 
21
- export type MessageKey = keyof typeof fallbackMessages | keyof (typeof keycloakifyExtraMessages)[typeof fallbackLanguageTag];
17
+ export type MessageKey = keyof typeof messages_fallbackLanguage;
22
18
 
23
19
  export type GenericI18n<MessageKey extends string> = {
24
20
  /**
@@ -31,7 +27,7 @@ export type GenericI18n<MessageKey extends string> = {
31
27
  * Redirect to this url to change the language.
32
28
  * After reload currentLanguageTag === newLanguageTag
33
29
  */
34
- getChangeLocalUrl: (newLanguageTag: string) => string;
30
+ getChangeLocaleUrl: (newLanguageTag: string) => string;
35
31
  /**
36
32
  * e.g. "en" => "English", "fr" => "Français", ...
37
33
  *
@@ -53,178 +49,240 @@ export type GenericI18n<MessageKey extends string> = {
53
49
  */
54
50
  msgStr: (key: MessageKey, ...args: (string | undefined)[]) => string;
55
51
  /**
52
+ * This is meant to be used when the key argument is variable, something that might have been configured by the user
53
+ * in the Keycloak admin for example.
54
+ *
56
55
  * Examples assuming currentLanguageTag === "en"
57
- * advancedMsg("${access-denied} foo bar") === <span>${msgStr("access-denied")} foo bar<span> === <span>Access denied foo bar</span>
56
+ * {
57
+ * en: {
58
+ * "access-denied": "Access denied",
59
+ * "foo": "Foo {0} {1}",
60
+ * "bar": "Bar {0}"
61
+ * }
62
+ * }
63
+ *
64
+ * advancedMsg("${access-denied} foo bar") === <span>{msgStr("access-denied")} foo bar<span> === <span>Access denied foo bar</span>
58
65
  * advancedMsg("${access-denied}") === advancedMsg("access-denied") === msg("access-denied") === <span>Access denied</span>
59
66
  * advancedMsg("${not-a-message-key}") === advancedMsg(not-a-message-key") === <span>not-a-message-key</span>
67
+ * advancedMsg("${bar}", "<strong>c</strong>")
68
+ * === <span>{msgStr("bar", "<strong>XXX</strong>")}<span>
69
+ * === <span>Bar &lt;strong&gt;XXX&lt;/strong&gt;</span> (The html in the arg is partially escaped for security reasons, it might be untrusted)
70
+ * advancedMsg("${foo} xx ${bar}", "a", "b", "c")
71
+ * === <span>{msgStr("foo", "a", "b")} xx {msgStr("bar")}<span>
72
+ * === <span>Foo a b xx Bar {0}</span> (The substitution are only applied in the first message)
60
73
  */
61
74
  advancedMsg: (key: string, ...args: (string | undefined)[]) => JSX.Element;
62
75
  /**
63
- * Examples assuming currentLanguageTag === "en"
64
- * advancedMsg("${access-denied} foo bar") === msg("access-denied") + " foo bar" === "Access denied foo bar"
65
- * advancedMsg("${not-a-message-key}") === advancedMsg(not-a-message-key") === "not-a-message-key"
76
+ * See advancedMsg() but instead of returning a JSX.Element it returns a string.
66
77
  */
67
78
  advancedMsgStr: (key: string, ...args: (string | undefined)[]) => string;
68
- };
69
79
 
70
- export type I18n = GenericI18n<MessageKey>;
80
+ /**
81
+ * Initially the messages are in english (fallback language).
82
+ * The translations in the current language are being fetched dynamically.
83
+ * This property is true while the translations are being fetched.
84
+ */
85
+ isFetchingTranslations: boolean;
86
+ };
71
87
 
72
- export function createUseI18n<ExtraMessageKey extends string = never>(extraMessages: {
88
+ export function createGetI18n<ExtraMessageKey extends string = never>(messageBundle: {
73
89
  [languageTag: string]: { [key in ExtraMessageKey]: string };
74
90
  }) {
75
- function useI18n(params: { kcContext: KcContextLike }): GenericI18n<MessageKey | ExtraMessageKey> | null {
76
- const { kcContext } = params;
91
+ type I18n = GenericI18n<MessageKey | ExtraMessageKey>;
92
+
93
+ type Result = { i18n: I18n; prI18n_currentLanguage: Promise<I18n> | undefined };
77
94
 
78
- const [i18n, setI18n] = useState<GenericI18n<ExtraMessageKey | MessageKey> | undefined>(undefined);
95
+ const cachedResultByKcContext = new WeakMap<KcContextLike, Result>();
79
96
 
80
- const refHasStartedFetching = useRef(false);
97
+ function getI18n(params: { kcContext: KcContextLike }): Result {
98
+ const { kcContext } = params;
81
99
 
82
- useEffect(() => {
83
- if (refHasStartedFetching.current) {
84
- return;
100
+ use_cache: {
101
+ const cachedResult = cachedResultByKcContext.get(kcContext);
102
+
103
+ if (cachedResult === undefined) {
104
+ break use_cache;
85
105
  }
86
106
 
87
- refHasStartedFetching.current = true;
88
-
89
- (async () => {
90
- const { currentLanguageTag = fallbackLanguageTag } = kcContext.locale ?? {};
91
-
92
- setI18n({
93
- ...createI18nTranslationFunctions({
94
- "fallbackMessages": {
95
- ...fallbackMessages,
96
- ...(keycloakifyExtraMessages[fallbackLanguageTag] ?? {}),
97
- ...(extraMessages[fallbackLanguageTag] ?? {})
98
- } as any,
99
- "messages": {
100
- ...(await getMessages(currentLanguageTag)),
101
- ...((keycloakifyExtraMessages as any)[currentLanguageTag] ?? {}),
102
- ...(extraMessages[currentLanguageTag] ?? {})
103
- } as any
104
- }),
105
- currentLanguageTag,
106
- "getChangeLocalUrl": newLanguageTag => {
107
- const { locale } = kcContext;
108
-
109
- assert(locale !== undefined, "Internationalization not enabled");
110
-
111
- const targetSupportedLocale = locale.supported.find(({ languageTag }) => languageTag === newLanguageTag);
112
-
113
- assert(targetSupportedLocale !== undefined, `${newLanguageTag} need to be enabled in Keycloak admin`);
114
-
115
- return targetSupportedLocale.url;
116
- },
117
- "labelBySupportedLanguageTag": Object.fromEntries(
118
- (kcContext.locale?.supported ?? []).map(({ languageTag, label }) => [languageTag, label])
119
- )
120
- });
121
- })();
122
- }, []);
107
+ return cachedResult;
108
+ }
109
+
110
+ const partialI18n: Pick<I18n, "currentLanguageTag" | "getChangeLocaleUrl" | "labelBySupportedLanguageTag"> = {
111
+ currentLanguageTag: kcContext.locale?.currentLanguageTag ?? fallbackLanguageTag,
112
+ getChangeLocaleUrl: newLanguageTag => {
113
+ const { locale } = kcContext;
114
+
115
+ assert(locale !== undefined, "Internationalization not enabled");
123
116
 
124
- return i18n ?? null;
117
+ const targetSupportedLocale = locale.supported.find(({ languageTag }) => languageTag === newLanguageTag);
118
+
119
+ assert(targetSupportedLocale !== undefined, `${newLanguageTag} need to be enabled in Keycloak admin`);
120
+
121
+ return targetSupportedLocale.url;
122
+ },
123
+ labelBySupportedLanguageTag: Object.fromEntries((kcContext.locale?.supported ?? []).map(({ languageTag, label }) => [languageTag, label]))
124
+ };
125
+
126
+ const { createI18nTranslationFunctions } = createI18nTranslationFunctionsFactory<MessageKey, ExtraMessageKey>({
127
+ messages_fallbackLanguage,
128
+ messageBundle_fallbackLanguage: messageBundle[fallbackLanguageTag],
129
+ messageBundle_currentLanguage: messageBundle[partialI18n.currentLanguageTag]
130
+ });
131
+
132
+ const isCurrentLanguageFallbackLanguage = partialI18n.currentLanguageTag === fallbackLanguageTag;
133
+
134
+ const result: Result = {
135
+ i18n: {
136
+ ...partialI18n,
137
+ ...createI18nTranslationFunctions({
138
+ messages_currentLanguage: isCurrentLanguageFallbackLanguage ? messages_fallbackLanguage : undefined
139
+ }),
140
+ isFetchingTranslations: !isCurrentLanguageFallbackLanguage
141
+ },
142
+ prI18n_currentLanguage: isCurrentLanguageFallbackLanguage
143
+ ? undefined
144
+ : (async () => {
145
+ const messages_currentLanguage = await getMessages(partialI18n.currentLanguageTag);
146
+
147
+ const i18n_currentLanguage: I18n = {
148
+ ...partialI18n,
149
+ ...createI18nTranslationFunctions({ messages_currentLanguage }),
150
+ isFetchingTranslations: false
151
+ };
152
+
153
+ // NOTE: This promise.resolve is just because without it we TypeScript
154
+ // gives a Variable 'result' is used before being assigned. error
155
+ await Promise.resolve().then(() => {
156
+ result.i18n = i18n_currentLanguage;
157
+ result.prI18n_currentLanguage = undefined;
158
+ });
159
+
160
+ return i18n_currentLanguage;
161
+ })()
162
+ };
163
+
164
+ cachedResultByKcContext.set(kcContext, result);
165
+
166
+ return result;
125
167
  }
126
168
 
127
- return { useI18n };
169
+ return { getI18n };
128
170
  }
129
171
 
130
- function createI18nTranslationFunctions<MessageKey extends string>(params: {
131
- fallbackMessages: Record<MessageKey, string>;
132
- messages: Record<MessageKey, string>;
133
- }): Pick<GenericI18n<MessageKey>, "msg" | "msgStr" | "advancedMsg" | "advancedMsgStr"> {
134
- const { fallbackMessages, messages } = params;
135
-
136
- function resolveMsg(props: { key: string; args: (string | undefined)[]; doRenderMarkdown: boolean }): string | JSX.Element | undefined {
137
- const { key, args, doRenderMarkdown } = props;
172
+ function createI18nTranslationFunctionsFactory<MessageKey extends string, ExtraMessageKey extends string>(params: {
173
+ messages_fallbackLanguage: Record<MessageKey, string>;
174
+ messageBundle_fallbackLanguage: Record<ExtraMessageKey, string> | undefined;
175
+ messageBundle_currentLanguage: Partial<Record<ExtraMessageKey, string>> | undefined;
176
+ }) {
177
+ const { messageBundle_currentLanguage } = params;
138
178
 
139
- const messageOrUndefined: string | undefined = (messages as any)[key] ?? (fallbackMessages as any)[key];
179
+ const messages_fallbackLanguage = {
180
+ ...params.messages_fallbackLanguage,
181
+ ...params.messageBundle_fallbackLanguage
182
+ };
140
183
 
141
- if (messageOrUndefined === undefined) {
142
- return undefined;
143
- }
184
+ function createI18nTranslationFunctions(params: {
185
+ messages_currentLanguage: Partial<Record<MessageKey, string>> | undefined;
186
+ }): Pick<GenericI18n<MessageKey | ExtraMessageKey>, "msg" | "msgStr" | "advancedMsg" | "advancedMsgStr"> {
187
+ const messages_currentLanguage = {
188
+ ...params.messages_currentLanguage,
189
+ ...messageBundle_currentLanguage
190
+ };
144
191
 
145
- const message = messageOrUndefined;
192
+ function resolveMsg(props: { key: string; args: (string | undefined)[]; doRenderAsHtml: boolean }): string | JSX.Element | undefined {
193
+ const { key, args, doRenderAsHtml } = props;
146
194
 
147
- const messageWithArgsInjectedIfAny = (() => {
148
- const startIndex = message
149
- .match(/{[0-9]+}/g)
150
- ?.map(g => g.match(/{([0-9]+)}/)![1])
151
- .map(indexStr => parseInt(indexStr))
152
- .sort((a, b) => a - b)[0];
195
+ const messageOrUndefined: string | undefined = (messages_currentLanguage as any)[key] ?? (messages_fallbackLanguage as any)[key];
153
196
 
154
- if (startIndex === undefined) {
155
- // No {0} in message (no arguments expected)
156
- return message;
197
+ if (messageOrUndefined === undefined) {
198
+ return undefined;
157
199
  }
158
200
 
159
- let messageWithArgsInjected = message;
201
+ const message = messageOrUndefined;
202
+
203
+ const messageWithArgsInjectedIfAny = (() => {
204
+ const startIndex = message
205
+ .match(/{[0-9]+}/g)
206
+ ?.map(g => g.match(/{([0-9]+)}/)![1])
207
+ .map(indexStr => parseInt(indexStr))
208
+ .sort((a, b) => a - b)[0];
160
209
 
161
- args.forEach((arg, i) => {
162
- if (arg === undefined) {
163
- return;
210
+ if (startIndex === undefined) {
211
+ // No {0} in message (no arguments expected)
212
+ return message;
164
213
  }
165
214
 
166
- messageWithArgsInjected = messageWithArgsInjected.replace(new RegExp(`\\{${i + startIndex}\\}`, "g"), arg);
167
- });
215
+ let messageWithArgsInjected = message;
168
216
 
169
- return messageWithArgsInjected;
170
- })();
217
+ args.forEach((arg, i) => {
218
+ if (arg === undefined) {
219
+ return;
220
+ }
171
221
 
172
- return doRenderMarkdown ? (
173
- <Markdown allowDangerousHtml renderers={{ "paragraph": "span" }}>
174
- {messageWithArgsInjectedIfAny}
175
- </Markdown>
176
- ) : (
177
- messageWithArgsInjectedIfAny
178
- );
179
- }
222
+ messageWithArgsInjected = messageWithArgsInjected.replace(
223
+ new RegExp(`\\{${i + startIndex}\\}`, "g"),
224
+ arg.replace(/</g, "&lt;").replace(/>/g, "&gt;")
225
+ );
226
+ });
180
227
 
181
- function resolveMsgAdvanced(props: { key: string; args: (string | undefined)[]; doRenderMarkdown: boolean }): JSX.Element | string {
182
- const { key, args, doRenderMarkdown } = props;
228
+ return messageWithArgsInjected;
229
+ })();
183
230
 
184
- const match = key.match(/^\$\{([^{]+)\}$/);
231
+ return doRenderAsHtml ? (
232
+ <span
233
+ // NOTE: The message is trusted. The arguments are not but are escaped.
234
+ dangerouslySetInnerHTML={{
235
+ __html: messageWithArgsInjectedIfAny
236
+ }}
237
+ />
238
+ ) : (
239
+ messageWithArgsInjectedIfAny
240
+ );
241
+ }
185
242
 
186
- const keyUnwrappedFromCurlyBraces = match === null ? key : match[1];
243
+ function resolveMsgAdvanced(props: { key: string; args: (string | undefined)[]; doRenderAsHtml: boolean }): JSX.Element | string {
244
+ const { key, args, doRenderAsHtml } = props;
187
245
 
188
- const out = resolveMsg({
189
- "key": keyUnwrappedFromCurlyBraces,
190
- args,
191
- doRenderMarkdown
192
- });
246
+ if (!/\$\{[^}]+\}/.test(key)) {
247
+ const resolvedMessage = resolveMsg({ key, args, doRenderAsHtml });
193
248
 
194
- return (out !== undefined ? out : doRenderMarkdown ? <span>{keyUnwrappedFromCurlyBraces}</span> : keyUnwrappedFromCurlyBraces) as any;
195
- }
249
+ if (resolvedMessage === undefined) {
250
+ return doRenderAsHtml ? <span dangerouslySetInnerHTML={{ __html: key }} /> : key;
251
+ }
196
252
 
197
- return {
198
- "msgStr": (key, ...args) => resolveMsg({ key, args, "doRenderMarkdown": false }) as string,
199
- "msg": (key, ...args) => resolveMsg({ key, args, "doRenderMarkdown": true }) as JSX.Element,
200
- "advancedMsg": (key, ...args) => resolveMsgAdvanced({ key, args, "doRenderMarkdown": true }) as JSX.Element,
201
- "advancedMsgStr": (key, ...args) => resolveMsgAdvanced({ key, args, "doRenderMarkdown": false }) as string
202
- };
203
- }
253
+ return resolvedMessage;
254
+ }
255
+
256
+ let isFirstMatch = true;
257
+
258
+ const resolvedComplexMessage = key.replace(/\$\{([^}]+)\}/g, (...[, key_i]) => {
259
+ const replaceBy = resolveMsg({ key: key_i, args: isFirstMatch ? args : [], doRenderAsHtml: false }) ?? key_i;
260
+
261
+ isFirstMatch = false;
262
+
263
+ return replaceBy;
264
+ });
265
+
266
+ return doRenderAsHtml ? <span dangerouslySetInnerHTML={{ __html: resolvedComplexMessage }} /> : resolvedComplexMessage;
267
+ }
204
268
 
205
- const keycloakifyExtraMessages = {
206
- "en": {
207
- "shouldBeEqual": "{0} should be equal to {1}",
208
- "shouldBeDifferent": "{0} should be different to {1}",
209
- "shouldMatchPattern": "Pattern should match: `/{0}/`",
210
- "mustBeAnInteger": "Must be an integer",
211
- "notAValidOption": "Not a valid option",
212
- "newPasswordSameAsOld": "New password must be different from the old one",
213
- "passwordConfirmNotMatch": "Password confirmation does not match"
214
- },
215
- "fr": {
216
- /* spell-checker: disable */
217
- "shouldBeEqual": "{0} doit être égal à {1}",
218
- "shouldBeDifferent": "{0} doit être différent de {1}",
219
- "shouldMatchPattern": "Dois respecter le schéma: `/{0}/`",
220
- "mustBeAnInteger": "Doit être un nombre entier",
221
- "notAValidOption": "N'est pas une option valide",
222
-
223
- "logoutConfirmTitle": "Déconnexion",
224
- "logoutConfirmHeader": "Êtes-vous sûr(e) de vouloir vous déconnecter ?",
225
- "doLogout": "Se déconnecter",
226
- "newPasswordSameAsOld": "Le nouveau mot de passe doit être différent de l'ancien",
227
- "passwordConfirmNotMatch": "La confirmation du mot de passe ne correspond pas"
228
- /* spell-checker: enable */
269
+ return {
270
+ msgStr: (key, ...args) => resolveMsg({ key, args, doRenderAsHtml: false }) as string,
271
+ msg: (key, ...args) => resolveMsg({ key, args, doRenderAsHtml: true }) as JSX.Element,
272
+ advancedMsg: (key, ...args) =>
273
+ resolveMsgAdvanced({
274
+ key,
275
+ args,
276
+ doRenderAsHtml: true
277
+ }) as JSX.Element,
278
+ advancedMsgStr: (key, ...args) =>
279
+ resolveMsgAdvanced({
280
+ key,
281
+ args,
282
+ doRenderAsHtml: false
283
+ }) as string
284
+ };
229
285
  }
230
- };
286
+
287
+ return { createI18nTranslationFunctions };
288
+ }
@@ -1 +1,4 @@
1
- export type { I18n } from "./i18n";
1
+ import type { GenericI18n, MessageKey, KcContextLike } from "./i18n";
2
+ export type { MessageKey, KcContextLike };
3
+ export type I18n = GenericI18n<MessageKey>;
4
+ export { createUseI18n } from "./useI18n";
@@ -0,0 +1,44 @@
1
+ import { useEffect, useState } from "react";
2
+ import {
3
+ createGetI18n,
4
+ type GenericI18n,
5
+ type MessageKey,
6
+ type KcContextLike
7
+ } from "./i18n";
8
+ import { Reflect } from "tsafe/Reflect";
9
+
10
+ export function createUseI18n<ExtraMessageKey extends string = never>(messageBundle: {
11
+ [languageTag: string]: { [key in ExtraMessageKey]: string };
12
+ }) {
13
+ type I18n = GenericI18n<MessageKey | ExtraMessageKey>;
14
+
15
+ const { getI18n } = createGetI18n(messageBundle);
16
+
17
+ function useI18n(params: { kcContext: KcContextLike }): { i18n: I18n } {
18
+ const { kcContext } = params;
19
+
20
+ const { i18n, prI18n_currentLanguage } = getI18n({ kcContext });
21
+
22
+ const [i18n_toReturn, setI18n_toReturn] = useState<I18n>(i18n);
23
+
24
+ useEffect(() => {
25
+ let isActive = true;
26
+
27
+ prI18n_currentLanguage?.then(i18n => {
28
+ if (!isActive) {
29
+ return;
30
+ }
31
+
32
+ setI18n_toReturn(i18n);
33
+ });
34
+
35
+ return () => {
36
+ isActive = false;
37
+ };
38
+ }, []);
39
+
40
+ return { i18n: i18n_toReturn };
41
+ }
42
+
43
+ return { useI18n, ofTypeI18n: Reflect<I18n>() };
44
+ }
@@ -1,10 +1,3 @@
1
- import Fallback from "keycloakify/account/Fallback";
2
-
3
- export default Fallback;
4
-
5
- export { getKcContext } from "keycloakify/account/kcContext/getKcContext";
6
- export { createGetKcContext } from "keycloakify/account/kcContext/createGetKcContext";
7
- export type { AccountThemePageId as PageId } from "keycloakify/bin/shared/constants";
8
- export { createUseI18n } from "keycloakify/account/i18n/i18n";
9
-
10
- export type { PageProps } from "keycloakify/account/pages/PageProps";
1
+ export type { ExtendKcContext } from "keycloakify/account/KcContext";
2
+ export type { ClassKey } from "keycloakify/account/TemplateProps";
3
+ export { createUseI18n } from "keycloakify/account/i18n";
@@ -0,0 +1,25 @@
1
+ import { createGetKcClsx } from "keycloakify/lib/getKcClsx";
2
+ import type { ClassKey } from "keycloakify/account/TemplateProps";
3
+
4
+ export const { getKcClsx } = createGetKcClsx<ClassKey>({
5
+ defaultClasses: {
6
+ kcHtmlClass: undefined,
7
+ kcBodyClass: undefined,
8
+ kcButtonClass: "btn",
9
+ kcContentWrapperClass: "row",
10
+ kcButtonPrimaryClass: "btn-primary",
11
+ kcButtonLargeClass: "btn-lg",
12
+ kcButtonDefaultClass: "btn-default",
13
+ kcFormClass: "form-horizontal",
14
+ kcFormGroupClass: "form-group",
15
+ kcInputWrapperClass: "col-xs-12 col-sm-12 col-md-12 col-lg-12",
16
+ kcLabelClass: "control-label",
17
+ kcInputClass: "form-control",
18
+ kcInputErrorMessageClass:
19
+ "pf-c-form__helper-text pf-m-error required kc-feedback-text"
20
+ }
21
+ });
22
+
23
+ export type { ClassKey };
24
+
25
+ export type KcClsx = ReturnType<typeof getKcClsx>["kcClsx"];