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
@@ -69,7 +69,7 @@ const messages= {
69
69
  "internal": "Interný ",
70
70
  "unknown": "Neznámy",
71
71
  "termsTitle": "Zmluvné podmienky",
72
- "termsText": "<p>Zmluvné podmienky, ktoré sa majú definovať</p>",
72
+ "termsText": "",
73
73
  "termsPlainText": "Podmienky, ktoré sa majú definovať. ",
74
74
  "termsAcceptanceRequired": "Musíte súhlasiť s našimi podmienkami.",
75
75
  "acceptTerms": "Súhlasím s podmienkami",
@@ -437,7 +437,16 @@ const messages= {
437
437
  "logoutConfirmTitle": "Odhlásenie",
438
438
  "logoutConfirmHeader": "Chcete sa odhlásiť?",
439
439
  "doLogout": "Odhlásiť",
440
- "readOnlyUsernameMessage": "Nemôžete aktualizovať svoje používateľské meno, pretože je iba na čítanie."
440
+ "readOnlyUsernameMessage": "Nemôžete aktualizovať svoje používateľské meno, pretože je iba na čítanie.",
441
+ "shouldBeEqual": "{0} by mal byť rovnaký ako {1}",
442
+ "shouldBeDifferent": "{0} by mal byť odlišný od {1}",
443
+ "shouldMatchPattern": "Vzor by mal zodpovedať: `/{0}/`",
444
+ "mustBeAnInteger": "Musí byť celé číslo",
445
+ "notAValidOption": "Nie je platná možnosť",
446
+ "selectAnOption": "Vyberte možnosť",
447
+ "remove": "Odstrániť",
448
+ "addValue": "Pridať hodnotu",
449
+ "languages": "Jazyky"
441
450
  };
442
451
 
443
452
  export default messages;
@@ -42,7 +42,7 @@ const messages= {
42
42
  "codeErrorTitle": "Felkod: {0}",
43
43
  "termsTitle": "Användarvillkor",
44
44
  "termsTitleHtml": "Användarvillkor",
45
- "termsText": "<p>Användarvillkoren har ännu inte definierats</p>",
45
+ "termsText": "",
46
46
  "recaptchaFailed": "Ogiltig Recaptcha",
47
47
  "recaptchaNotConfigured": "Recaptcha krävs, men är inte inställd",
48
48
  "consentDenied": "Samtycke förnekat.",
@@ -191,7 +191,16 @@ const messages= {
191
191
  "clientDisabledMessage": "Klienten är inaktiverad.",
192
192
  "invalidParameterMessage": "Ogiltig parameter: {0}",
193
193
  "alreadyLoggedIn": "Du är redan inloggad.",
194
- "loginAccountTitle": "Logga in till ditt konto"
194
+ "loginAccountTitle": "Logga in till ditt konto",
195
+ "shouldBeEqual": "{0} bör vara lika med {1}",
196
+ "shouldBeDifferent": "{0} bör vara annorlunda än {1}",
197
+ "shouldMatchPattern": "Mönstret bör matcha: `/{0}/`",
198
+ "mustBeAnInteger": "Måste vara ett heltal",
199
+ "notAValidOption": "Inte ett giltigt alternativ",
200
+ "selectAnOption": "Välj ett alternativ",
201
+ "remove": "Ta bort",
202
+ "addValue": "Lägg till värde",
203
+ "languages": "Språk"
195
204
  };
196
205
 
197
206
  export default messages;
@@ -69,7 +69,7 @@ const messages= {
69
69
  "internal": "ภายใน",
70
70
  "unknown": "ไม่ทราบ",
71
71
  "termsTitle": "ข้อกำหนดและเงื่อนไข",
72
- "termsText": "<p>ข้อกำหนดและเงื่อนไขที่จะกำหนด</p>",
72
+ "termsText": "",
73
73
  "termsPlainText": "ข้อกำหนดและเงื่อนไขที่จะกำหนด",
74
74
  "termsAcceptanceRequired": "คุณต้องยอมรับข้อกำหนดและเงื่อนไขของเรา",
75
75
  "acceptTerms": "ฉันยอมรับข้อกำหนดและเงื่อนไข",
@@ -433,7 +433,16 @@ const messages= {
433
433
  "logoutConfirmTitle": "กำลังออกจากระบบ",
434
434
  "logoutConfirmHeader": "คุณต้องการออกจากระบบหรือไม่?",
435
435
  "doLogout": "ออกจากระบบ",
436
- "readOnlyUsernameMessage": "คุณไม่สามารถปรับปรุงชื่อผู้ใช้งานของคุณเนื่องจากเป็นข้อมูลแบบอ่านอย่างเดียว"
436
+ "readOnlyUsernameMessage": "คุณไม่สามารถปรับปรุงชื่อผู้ใช้งานของคุณเนื่องจากเป็นข้อมูลแบบอ่านอย่างเดียว",
437
+ "shouldBeEqual": "{0} ควรเท่ากับ {1}",
438
+ "shouldBeDifferent": "{0} ควรแตกต่างจาก {1}",
439
+ "shouldMatchPattern": "รูปแบบควรตรงกับ: `/{0}/`",
440
+ "mustBeAnInteger": "ต้องเป็นจำนวนเต็ม",
441
+ "notAValidOption": "ไม่ใช่ตัวเลือกที่ถูกต้อง",
442
+ "selectAnOption": "เลือกตัวเลือก",
443
+ "remove": "ลบ",
444
+ "addValue": "เพิ่มค่า",
445
+ "languages": "ภาษา"
437
446
  };
438
447
 
439
448
  export default messages;
@@ -46,7 +46,7 @@ const messages= {
46
46
  "browserContinuePrompt": "Tarayıcı aç ve girişe devam et? [e/h]:",
47
47
  "browserContinueAnswer": "h",
48
48
  "termsTitle": "Şartlar ve koşullar",
49
- "termsText": "<p>Tanımlanacak şartlar ve koşullar</p>",
49
+ "termsText": "",
50
50
  "termsPlainText": "Tanımlanacak şartlar ve koşullar.",
51
51
  "recaptchaFailed": "Geçersiz Recaptcha",
52
52
  "recaptchaNotConfigured": "Recaptcha gerekli, ancak yapılandırılmamış",
@@ -260,7 +260,16 @@ const messages= {
260
260
  "console-email-code": "E-posta Kodu:",
261
261
  "console-accept-terms": "Şartları kabul et? [e/h]:",
262
262
  "console-accept": "e",
263
- "readOnlyUsernameMessage": "Yazma korumalı olduğundan kullanıcı adınızı değiştiremezsiniz."
263
+ "readOnlyUsernameMessage": "Yazma korumalı olduğundan kullanıcı adınızı değiştiremezsiniz.",
264
+ "shouldBeEqual": "{0} {1} eşit olmalıdır",
265
+ "shouldBeDifferent": "{0} {1} farklı olmalıdır",
266
+ "shouldMatchPattern": "Desen eşleşmelidir: `/{0}/`",
267
+ "mustBeAnInteger": "Tam sayı olmalıdır",
268
+ "notAValidOption": "Geçerli bir seçenek değil",
269
+ "selectAnOption": "Bir seçenek seçin",
270
+ "remove": "Kaldır",
271
+ "addValue": "Değer ekle",
272
+ "languages": "Diller"
264
273
  };
265
274
 
266
275
  export default messages;
@@ -64,7 +64,7 @@ const messages= {
64
64
  "browserContinuePrompt": "Відкрити браузер і продовжити вхід? [y/n]:",
65
65
  "browserContinueAnswer": "y",
66
66
  "termsTitle": "Умови",
67
- "termsText": "<p>Положення та умови повинні бути визначені</p>",
67
+ "termsText": "",
68
68
  "termsPlainText": "Положення та умови, які будуть визначені.",
69
69
  "termsAcceptanceRequired": "Ви повинні погодитися з умовами.",
70
70
  "acceptTerms": "Я погоджуюсь з умовами",
@@ -432,7 +432,16 @@ const messages= {
432
432
  "logoutConfirmTitle": "Вихід",
433
433
  "logoutConfirmHeader": "Ви бажаєте вийти?",
434
434
  "doLogout": "Вийти",
435
- "readOnlyUsernameMessage": "Ви не можете оновити своє ім'я користувача, оскільки воно доступне лише для читання."
435
+ "readOnlyUsernameMessage": "Ви не можете оновити своє ім'я користувача, оскільки воно доступне лише для читання.",
436
+ "shouldBeEqual": "{0} повинно бути рівним {1}",
437
+ "shouldBeDifferent": "{0} повинно відрізнятися від {1}",
438
+ "shouldMatchPattern": "Шаблон повинен відповідати: `/{0}/`",
439
+ "mustBeAnInteger": "Повинно бути цілим числом",
440
+ "notAValidOption": "Не є дійсною опцією",
441
+ "selectAnOption": "Виберіть опцію",
442
+ "remove": "Видалити",
443
+ "addValue": "Додати значення",
444
+ "languages": "Мови"
436
445
  };
437
446
 
438
447
  export default messages;
@@ -69,7 +69,7 @@ const messages= {
69
69
  "internal": "内部",
70
70
  "unknown": "未知",
71
71
  "termsTitle": "条款",
72
- "termsText": "<p>需要确定的条款</p>",
72
+ "termsText": "",
73
73
  "termsPlainText": "需要确定的条款。",
74
74
  "termsAcceptanceRequired": "您必须同意我们的的服务条款。",
75
75
  "acceptTerms": "我同意服务条款",
@@ -346,7 +346,7 @@ const messages= {
346
346
  "locale_nl": "Nederlands",
347
347
  "locale_no": "Norsk",
348
348
  "locale_pl": "Polski",
349
- "locale_pt_BR": "Português (Brasil)",
349
+ "locale_pt-BR": "Português (Brasil)",
350
350
  "locale_ru": "Русский",
351
351
  "locale_sk": "Slovenčina",
352
352
  "locale_sv": "Svenska",
@@ -461,7 +461,16 @@ const messages= {
461
461
  "logoutConfirmTitle": "注销",
462
462
  "logoutConfirmHeader": "您确定要注销吗?",
463
463
  "doLogout": "注销",
464
- "readOnlyUsernameMessage": "由于用户名是只读的,您无法更新用户名。"
464
+ "readOnlyUsernameMessage": "由于用户名是只读的,您无法更新用户名。",
465
+ "shouldBeEqual": "{0} 应该等于 {1}",
466
+ "shouldBeDifferent": "{0} 应该不同于 {1}",
467
+ "shouldMatchPattern": "模式应匹配: `/{0}/`",
468
+ "mustBeAnInteger": "必须是整数",
469
+ "notAValidOption": "不是有效选项",
470
+ "selectAnOption": "选择一个选项",
471
+ "remove": "移除",
472
+ "addValue": "添加值",
473
+ "languages": "语言"
465
474
  };
466
475
 
467
476
  export default messages;
@@ -1,24 +1,24 @@
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?: {
14
10
  currentLanguageTag: string;
15
11
  supported: { languageTag: string; url: string; label: string }[];
16
12
  };
13
+ "x-keycloakify": {
14
+ realmMessageBundleUserProfile: Record<string, string> | undefined;
15
+ realmMessageBundleTermsText: string | undefined;
16
+ };
17
17
  };
18
18
 
19
19
  assert<KcContext extends KcContextLike ? true : false>();
20
20
 
21
- export type MessageKey = keyof typeof fallbackMessages | keyof (typeof keycloakifyExtraMessages)[typeof fallbackLanguageTag];
21
+ export type MessageKey = keyof typeof messages_fallbackLanguage;
22
22
 
23
23
  export type GenericI18n<MessageKey extends string> = {
24
24
  /**
@@ -31,7 +31,7 @@ export type GenericI18n<MessageKey extends string> = {
31
31
  * Redirect to this url to change the language.
32
32
  * After reload currentLanguageTag === newLanguageTag
33
33
  */
34
- getChangeLocalUrl: (newLanguageTag: string) => string;
34
+ getChangeLocaleUrl: (newLanguageTag: string) => string;
35
35
  /**
36
36
  * e.g. "en" => "English", "fr" => "Français", ...
37
37
  *
@@ -53,180 +53,267 @@ export type GenericI18n<MessageKey extends string> = {
53
53
  */
54
54
  msgStr: (key: MessageKey, ...args: (string | undefined)[]) => string;
55
55
  /**
56
+ * This is meant to be used when the key argument is variable, something that might have been configured by the user
57
+ * in the Keycloak admin for example.
58
+ *
56
59
  * Examples assuming currentLanguageTag === "en"
57
- * advancedMsg("${access-denied} foo bar") === <span>${msgStr("access-denied")} foo bar<span> === <span>Access denied foo bar</span>
60
+ * {
61
+ * en: {
62
+ * "access-denied": "Access denied",
63
+ * "foo": "Foo {0} {1}",
64
+ * "bar": "Bar {0}"
65
+ * }
66
+ * }
67
+ *
68
+ * advancedMsg("${access-denied} foo bar") === <span>{msgStr("access-denied")} foo bar<span> === <span>Access denied foo bar</span>
58
69
  * advancedMsg("${access-denied}") === advancedMsg("access-denied") === msg("access-denied") === <span>Access denied</span>
59
70
  * advancedMsg("${not-a-message-key}") === advancedMsg(not-a-message-key") === <span>not-a-message-key</span>
71
+ * advancedMsg("${bar}", "<strong>c</strong>")
72
+ * === <span>{msgStr("bar", "<strong>XXX</strong>")}<span>
73
+ * === <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)
74
+ * advancedMsg("${foo} xx ${bar}", "a", "b", "c")
75
+ * === <span>{msgStr("foo", "a", "b")} xx {msgStr("bar")}<span>
76
+ * === <span>Foo a b xx Bar {0}</span> (The substitution are only applied in the first message)
60
77
  */
61
78
  advancedMsg: (key: string, ...args: (string | undefined)[]) => JSX.Element;
62
79
  /**
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"
80
+ * See advancedMsg() but instead of returning a JSX.Element it returns a string.
66
81
  */
67
82
  advancedMsgStr: (key: string, ...args: (string | undefined)[]) => string;
68
- };
69
83
 
70
- export type I18n = GenericI18n<MessageKey>;
84
+ /**
85
+ * Initially the messages are in english (fallback language).
86
+ * The translations in the current language are being fetched dynamically.
87
+ * This property is true while the translations are being fetched.
88
+ */
89
+ isFetchingTranslations: boolean;
90
+ };
71
91
 
72
- export function createUseI18n<ExtraMessageKey extends string = never>(extraMessages: {
92
+ export function createGetI18n<ExtraMessageKey extends string = never>(messageBundle: {
73
93
  [languageTag: string]: { [key in ExtraMessageKey]: string };
74
94
  }) {
75
- function useI18n(params: { kcContext: KcContextLike }): GenericI18n<MessageKey | ExtraMessageKey> | null {
76
- const { kcContext } = params;
95
+ type I18n = GenericI18n<MessageKey | ExtraMessageKey>;
96
+
97
+ type Result = { i18n: I18n; prI18n_currentLanguage: Promise<I18n> | undefined };
77
98
 
78
- const [i18n, setI18n] = useState<GenericI18n<ExtraMessageKey | MessageKey> | undefined>(undefined);
99
+ const cachedResultByKcContext = new WeakMap<KcContextLike, Result>();
79
100
 
80
- const refHasStartedFetching = useRef(false);
101
+ function getI18n(params: { kcContext: KcContextLike }): Result {
102
+ const { kcContext } = params;
81
103
 
82
- useEffect(() => {
83
- if (refHasStartedFetching.current) {
84
- return;
104
+ use_cache: {
105
+ const cachedResult = cachedResultByKcContext.get(kcContext);
106
+
107
+ if (cachedResult === undefined) {
108
+ break use_cache;
85
109
  }
86
110
 
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
- }, []);
111
+ return cachedResult;
112
+ }
113
+
114
+ const partialI18n: Pick<I18n, "currentLanguageTag" | "getChangeLocaleUrl" | "labelBySupportedLanguageTag"> = {
115
+ currentLanguageTag: kcContext.locale?.currentLanguageTag ?? fallbackLanguageTag,
116
+ getChangeLocaleUrl: newLanguageTag => {
117
+ const { locale } = kcContext;
118
+
119
+ assert(locale !== undefined, "Internationalization not enabled");
120
+
121
+ const targetSupportedLocale = locale.supported.find(({ languageTag }) => languageTag === newLanguageTag);
123
122
 
124
- return i18n ?? null;
123
+ assert(targetSupportedLocale !== undefined, `${newLanguageTag} need to be enabled in Keycloak admin`);
124
+
125
+ return targetSupportedLocale.url;
126
+ },
127
+ labelBySupportedLanguageTag: Object.fromEntries((kcContext.locale?.supported ?? []).map(({ languageTag, label }) => [languageTag, label]))
128
+ };
129
+
130
+ const { createI18nTranslationFunctions } = createI18nTranslationFunctionsFactory<MessageKey, ExtraMessageKey>({
131
+ messages_fallbackLanguage,
132
+ messageBundle_fallbackLanguage: messageBundle[fallbackLanguageTag],
133
+ messageBundle_currentLanguage: messageBundle[partialI18n.currentLanguageTag],
134
+ realmMessageBundleUserProfile: kcContext["x-keycloakify"].realmMessageBundleUserProfile,
135
+ realmMessageBundleTermsText: kcContext["x-keycloakify"].realmMessageBundleTermsText
136
+ });
137
+
138
+ const isCurrentLanguageFallbackLanguage = partialI18n.currentLanguageTag === fallbackLanguageTag;
139
+
140
+ const result: Result = {
141
+ i18n: {
142
+ ...partialI18n,
143
+ ...createI18nTranslationFunctions({
144
+ messages_currentLanguage: isCurrentLanguageFallbackLanguage ? messages_fallbackLanguage : undefined
145
+ }),
146
+ isFetchingTranslations: !isCurrentLanguageFallbackLanguage
147
+ },
148
+ prI18n_currentLanguage: isCurrentLanguageFallbackLanguage
149
+ ? undefined
150
+ : (async () => {
151
+ const messages_currentLanguage = await getMessages(partialI18n.currentLanguageTag);
152
+
153
+ const i18n_currentLanguage: I18n = {
154
+ ...partialI18n,
155
+ ...createI18nTranslationFunctions({ messages_currentLanguage }),
156
+ isFetchingTranslations: false
157
+ };
158
+
159
+ // NOTE: This promise.resolve is just because without it we TypeScript
160
+ // gives a Variable 'result' is used before being assigned. error
161
+ await Promise.resolve().then(() => {
162
+ result.i18n = i18n_currentLanguage;
163
+ result.prI18n_currentLanguage = undefined;
164
+ });
165
+
166
+ return i18n_currentLanguage;
167
+ })()
168
+ };
169
+
170
+ cachedResultByKcContext.set(kcContext, result);
171
+
172
+ return result;
125
173
  }
126
174
 
127
- return { useI18n };
175
+ return { getI18n };
128
176
  }
129
177
 
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;
178
+ function createI18nTranslationFunctionsFactory<MessageKey extends string, ExtraMessageKey extends string>(params: {
179
+ messages_fallbackLanguage: Record<MessageKey, string>;
180
+ messageBundle_fallbackLanguage: Record<ExtraMessageKey, string> | undefined;
181
+ messageBundle_currentLanguage: Partial<Record<ExtraMessageKey, string>> | undefined;
182
+ realmMessageBundleUserProfile: Record<string, string> | undefined;
183
+ realmMessageBundleTermsText: string | undefined;
184
+ }) {
185
+ const { messageBundle_currentLanguage, realmMessageBundleUserProfile, realmMessageBundleTermsText } = params;
186
+
187
+ const messages_fallbackLanguage = {
188
+ ...params.messages_fallbackLanguage,
189
+ ...params.messageBundle_fallbackLanguage
190
+ };
135
191
 
136
- function resolveMsg(props: { key: string; args: (string | undefined)[]; doRenderMarkdown: boolean }): string | JSX.Element | undefined {
137
- const { key, args, doRenderMarkdown } = props;
192
+ function createI18nTranslationFunctions(params: {
193
+ messages_currentLanguage: Partial<Record<MessageKey, string>> | undefined;
194
+ }): Pick<GenericI18n<MessageKey | ExtraMessageKey>, "msg" | "msgStr" | "advancedMsg" | "advancedMsgStr"> {
195
+ const messages_currentLanguage = {
196
+ ...params.messages_currentLanguage,
197
+ ...messageBundle_currentLanguage
198
+ };
138
199
 
139
- const messageOrUndefined: string | undefined = (messages as any)[key] ?? (fallbackMessages as any)[key];
200
+ function resolveMsg(props: { key: string; args: (string | undefined)[]; doRenderAsHtml: boolean }): string | JSX.Element | undefined {
201
+ const { key, args, doRenderAsHtml } = props;
140
202
 
141
- if (messageOrUndefined === undefined) {
142
- return undefined;
143
- }
203
+ const messageOrUndefined: string | undefined = (() => {
204
+ const messageOrUndefined = (messages_currentLanguage as any)[key] ?? (messages_fallbackLanguage as any)[key];
144
205
 
145
- const message = messageOrUndefined;
206
+ if (key === "termsText" && realmMessageBundleTermsText !== undefined) {
207
+ return realmMessageBundleTermsText;
208
+ }
146
209
 
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];
210
+ return messageOrUndefined;
211
+ })();
153
212
 
154
- if (startIndex === undefined) {
155
- // No {0} in message (no arguments expected)
156
- return message;
213
+ if (messageOrUndefined === undefined) {
214
+ return undefined;
157
215
  }
158
216
 
159
- let messageWithArgsInjected = message;
217
+ const message = messageOrUndefined;
160
218
 
161
- args.forEach((arg, i) => {
162
- if (arg === undefined) {
163
- return;
219
+ const messageWithArgsInjectedIfAny = (() => {
220
+ const startIndex = message
221
+ .match(/{[0-9]+}/g)
222
+ ?.map(g => g.match(/{([0-9]+)}/)![1])
223
+ .map(indexStr => parseInt(indexStr))
224
+ .sort((a, b) => a - b)[0];
225
+
226
+ if (startIndex === undefined) {
227
+ // No {0} in message (no arguments expected)
228
+ return message;
164
229
  }
165
230
 
166
- messageWithArgsInjected = messageWithArgsInjected.replace(new RegExp(`\\{${i + startIndex}\\}`, "g"), arg);
167
- });
231
+ let messageWithArgsInjected = message;
168
232
 
169
- return messageWithArgsInjected;
170
- })();
233
+ args.forEach((arg, i) => {
234
+ if (arg === undefined) {
235
+ return;
236
+ }
171
237
 
172
- return doRenderMarkdown ? (
173
- <Markdown allowDangerousHtml renderers={{ "paragraph": "span" }}>
174
- {messageWithArgsInjectedIfAny}
175
- </Markdown>
176
- ) : (
177
- messageWithArgsInjectedIfAny
178
- );
179
- }
238
+ messageWithArgsInjected = messageWithArgsInjected.replace(
239
+ new RegExp(`\\{${i + startIndex}\\}`, "g"),
240
+ arg.replace(/</g, "&lt;").replace(/>/g, "&gt;")
241
+ );
242
+ });
180
243
 
181
- function resolveMsgAdvanced(props: { key: string; args: (string | undefined)[]; doRenderMarkdown: boolean }): JSX.Element | string {
182
- const { key, args, doRenderMarkdown } = props;
244
+ return messageWithArgsInjected;
245
+ })();
183
246
 
184
- const match = key.match(/^\$\{([^{]+)\}$/);
247
+ return doRenderAsHtml ? (
248
+ <span
249
+ // NOTE: The message is trusted. The arguments are not but are escaped.
250
+ dangerouslySetInnerHTML={{
251
+ __html: messageWithArgsInjectedIfAny
252
+ }}
253
+ />
254
+ ) : (
255
+ messageWithArgsInjectedIfAny
256
+ );
257
+ }
185
258
 
186
- const keyUnwrappedFromCurlyBraces = match === null ? key : match[1];
259
+ function resolveMsgAdvanced(props: { key: string; args: (string | undefined)[]; doRenderAsHtml: boolean }): JSX.Element | string {
260
+ const { key, args, doRenderAsHtml } = props;
261
+
262
+ if (realmMessageBundleUserProfile !== undefined && key in realmMessageBundleUserProfile) {
263
+ const resolvedMessage = realmMessageBundleUserProfile[key];
264
+
265
+ return doRenderAsHtml ? (
266
+ <span
267
+ // NOTE: The message is trusted. The arguments are not but are escaped.
268
+ dangerouslySetInnerHTML={{
269
+ __html: resolvedMessage
270
+ }}
271
+ />
272
+ ) : (
273
+ resolvedMessage
274
+ );
275
+ }
187
276
 
188
- const out = resolveMsg({
189
- "key": keyUnwrappedFromCurlyBraces,
190
- args,
191
- doRenderMarkdown
192
- });
277
+ if (!/\$\{[^}]+\}/.test(key)) {
278
+ const resolvedMessage = resolveMsg({ key, args, doRenderAsHtml });
193
279
 
194
- return (out !== undefined ? out : doRenderMarkdown ? <span>{keyUnwrappedFromCurlyBraces}</span> : keyUnwrappedFromCurlyBraces) as any;
195
- }
280
+ if (resolvedMessage === undefined) {
281
+ return doRenderAsHtml ? <span dangerouslySetInnerHTML={{ __html: key }} /> : key;
282
+ }
196
283
 
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
- }
284
+ return resolvedMessage;
285
+ }
286
+
287
+ let isFirstMatch = true;
204
288
 
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
- "selectAnOption": "Select an option",
213
- "remove": "Remove",
214
- "addValue": "Add value"
215
- },
216
- "fr": {
217
- /* spell-checker: disable */
218
- "shouldBeEqual": "{0} doit être égal à {1}",
219
- "shouldBeDifferent": "{0} doit être différent de {1}",
220
- "shouldMatchPattern": "Dois respecter le schéma: `/{0}/`",
221
- "mustBeAnInteger": "Doit être un nombre entier",
222
- "notAValidOption": "N'est pas une option valide",
223
-
224
- "logoutConfirmTitle": "Déconnexion",
225
- "logoutConfirmHeader": "Êtes-vous sûr(e) de vouloir vous déconnecter ?",
226
- "doLogout": "Se déconnecter",
227
- "selectAnOption": "Sélectionner une option",
228
- "remove": "Supprimer",
229
- "addValue": "Ajouter une valeur"
230
- /* spell-checker: enable */
289
+ const resolvedComplexMessage = key.replace(/\$\{([^}]+)\}/g, (...[, key_i]) => {
290
+ const replaceBy = resolveMsg({ key: key_i, args: isFirstMatch ? args : [], doRenderAsHtml: false }) ?? key_i;
291
+
292
+ isFirstMatch = false;
293
+
294
+ return replaceBy;
295
+ });
296
+
297
+ return doRenderAsHtml ? <span dangerouslySetInnerHTML={{ __html: resolvedComplexMessage }} /> : resolvedComplexMessage;
298
+ }
299
+
300
+ return {
301
+ msgStr: (key, ...args) => resolveMsg({ key, args, doRenderAsHtml: false }) as string,
302
+ msg: (key, ...args) => resolveMsg({ key, args, doRenderAsHtml: true }) as JSX.Element,
303
+ advancedMsg: (key, ...args) =>
304
+ resolveMsgAdvanced({
305
+ key,
306
+ args,
307
+ doRenderAsHtml: true
308
+ }) as JSX.Element,
309
+ advancedMsgStr: (key, ...args) =>
310
+ resolveMsgAdvanced({
311
+ key,
312
+ args,
313
+ doRenderAsHtml: false
314
+ }) as string
315
+ };
231
316
  }
232
- };
317
+
318
+ return { createI18nTranslationFunctions };
319
+ }
@@ -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";