keycloakify 10.0.0-rc.8 → 10.0.0-rc.80

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 (824) 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 -35
  107. package/account/i18n/i18n.js +116 -97
  108. package/account/i18n/i18n.js.map +1 -1
  109. package/account/i18n/index.d.ts +5 -1
  110. package/account/i18n/index.js +2 -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/36.index.js +9980 -0
  148. package/bin/430.index.js +1349 -0
  149. package/bin/440.index.js +1455 -0
  150. package/bin/453.index.js +769 -0
  151. package/bin/456.index.js +6200 -0
  152. package/bin/490.index.js +75195 -0
  153. package/bin/525.index.js +41826 -0
  154. package/bin/526.index.js +973 -0
  155. package/bin/538.index.js +108 -0
  156. package/bin/720.index.js +243 -0
  157. package/bin/751.index.js +732 -0
  158. package/bin/837.index.js +794 -0
  159. package/bin/877.index.js +275 -0
  160. package/bin/932.index.js +269 -0
  161. package/bin/97.index.js +676 -0
  162. package/bin/main.js +7679 -146380
  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 +67 -0
  166. package/bin/shared/buildContext.js.map +1 -0
  167. package/bin/shared/constants.d.ts +17 -0
  168. package/bin/shared/constants.js +58 -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 +10 -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 +10 -1
  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 +11 -2
  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 +10 -1
  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 +10 -1
  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 +10 -1
  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 +10 -2
  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 +11 -2
  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 +11 -2
  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 +10 -2
  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 +10 -1
  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 +10 -1
  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 +11 -2
  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 +10 -1
  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 +10 -1
  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 +10 -1
  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 +10 -1
  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 +10 -1
  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 +10 -1
  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 +10 -1
  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 +10 -1
  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 +10 -1
  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 +10 -1
  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 +10 -1
  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 +10 -1
  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 +10 -1
  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 +10 -1
  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 +11 -2
  292. package/login/i18n/baseMessages/zh-CN.js.map +1 -1
  293. package/login/i18n/i18n.d.ts +38 -37
  294. package/login/i18n/i18n.js +132 -99
  295. package/login/i18n/i18n.js.map +1 -1
  296. package/login/i18n/index.d.ts +5 -1
  297. package/login/i18n/index.js +2 -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 -7
  303. package/login/index.js +1 -5
  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/useDownloadTerms.d.ts +15 -5
  309. package/login/lib/useDownloadTerms.js +37 -21
  310. package/login/lib/useDownloadTerms.js.map +1 -1
  311. package/login/lib/useUserProfileForm.d.ts +20 -8
  312. package/login/lib/useUserProfileForm.js +402 -295
  313. package/login/lib/useUserProfileForm.js.map +1 -1
  314. package/login/pages/Code.d.ts +1 -1
  315. package/login/pages/Code.js +3 -3
  316. package/login/pages/Code.js.map +1 -1
  317. package/login/pages/DeleteAccountConfirm.d.ts +1 -1
  318. package/login/pages/DeleteAccountConfirm.js +7 -4
  319. package/login/pages/DeleteAccountConfirm.js.map +1 -1
  320. package/login/pages/DeleteCredential.d.ts +1 -1
  321. package/login/pages/DeleteCredential.js +3 -4
  322. package/login/pages/DeleteCredential.js.map +1 -1
  323. package/login/pages/Error.d.ts +1 -1
  324. package/login/pages/Error.js +1 -1
  325. package/login/pages/Error.js.map +1 -1
  326. package/login/pages/FrontchannelLogout.d.ts +1 -1
  327. package/login/pages/FrontchannelLogout.js +1 -1
  328. package/login/pages/FrontchannelLogout.js.map +1 -1
  329. package/login/pages/IdpReviewUserProfile.d.ts +4 -3
  330. package/login/pages/IdpReviewUserProfile.js +4 -5
  331. package/login/pages/IdpReviewUserProfile.js.map +1 -1
  332. package/login/pages/Info.d.ts +1 -1
  333. package/login/pages/Info.js +5 -7
  334. package/login/pages/Info.js.map +1 -1
  335. package/login/pages/Login.d.ts +1 -1
  336. package/login/pages/Login.js +7 -7
  337. package/login/pages/Login.js.map +1 -1
  338. package/login/pages/LoginConfigTotp.d.ts +1 -1
  339. package/login/pages/LoginConfigTotp.js +6 -7
  340. package/login/pages/LoginConfigTotp.js.map +1 -1
  341. package/login/pages/LoginIdpLinkConfirm.d.ts +1 -1
  342. package/login/pages/LoginIdpLinkConfirm.js +3 -4
  343. package/login/pages/LoginIdpLinkConfirm.js.map +1 -1
  344. package/login/pages/LoginIdpLinkEmail.d.ts +2 -2
  345. package/login/pages/LoginIdpLinkEmail.js +1 -1
  346. package/login/pages/LoginIdpLinkEmail.js.map +1 -1
  347. package/login/pages/LoginOauth2DeviceVerifyUserCode.d.ts +3 -3
  348. package/login/pages/LoginOauth2DeviceVerifyUserCode.js +3 -4
  349. package/login/pages/LoginOauth2DeviceVerifyUserCode.js.map +1 -1
  350. package/login/pages/LoginOauthGrant.d.ts +3 -3
  351. package/login/pages/LoginOauthGrant.js +4 -5
  352. package/login/pages/LoginOauthGrant.js.map +1 -1
  353. package/login/pages/LoginOtp.d.ts +1 -1
  354. package/login/pages/LoginOtp.js +3 -4
  355. package/login/pages/LoginOtp.js.map +1 -1
  356. package/login/pages/LoginPageExpired.d.ts +1 -1
  357. package/login/pages/LoginPageExpired.js +1 -1
  358. package/login/pages/LoginPageExpired.js.map +1 -1
  359. package/login/pages/LoginPassword.d.ts +1 -1
  360. package/login/pages/LoginPassword.js +6 -6
  361. package/login/pages/LoginPassword.js.map +1 -1
  362. package/login/pages/LoginRecoveryAuthnCodeConfig.d.ts +1 -1
  363. package/login/pages/LoginRecoveryAuthnCodeConfig.js +16 -16
  364. package/login/pages/LoginRecoveryAuthnCodeConfig.js.map +1 -1
  365. package/login/pages/LoginRecoveryAuthnCodeInput.d.ts +1 -1
  366. package/login/pages/LoginRecoveryAuthnCodeInput.js +3 -4
  367. package/login/pages/LoginRecoveryAuthnCodeInput.js.map +1 -1
  368. package/login/pages/LoginResetOtp.d.ts +1 -1
  369. package/login/pages/LoginResetOtp.js +3 -4
  370. package/login/pages/LoginResetOtp.js.map +1 -1
  371. package/login/pages/LoginResetPassword.d.ts +1 -1
  372. package/login/pages/LoginResetPassword.js +4 -5
  373. package/login/pages/LoginResetPassword.js.map +1 -1
  374. package/login/pages/LoginUpdatePassword.d.ts +1 -1
  375. package/login/pages/LoginUpdatePassword.js +7 -8
  376. package/login/pages/LoginUpdatePassword.js.map +1 -1
  377. package/login/pages/LoginUpdateProfile.d.ts +4 -3
  378. package/login/pages/LoginUpdateProfile.js +5 -9
  379. package/login/pages/LoginUpdateProfile.js.map +1 -1
  380. package/login/pages/LoginUsername.d.ts +1 -1
  381. package/login/pages/LoginUsername.js +5 -5
  382. package/login/pages/LoginUsername.js.map +1 -1
  383. package/login/pages/LoginVerifyEmail.d.ts +1 -1
  384. package/login/pages/LoginVerifyEmail.js +1 -1
  385. package/login/pages/LoginVerifyEmail.js.map +1 -1
  386. package/login/pages/LoginX509Info.d.ts +1 -1
  387. package/login/pages/LoginX509Info.js +3 -4
  388. package/login/pages/LoginX509Info.js.map +1 -1
  389. package/login/pages/LogoutConfirm.d.ts +1 -1
  390. package/login/pages/LogoutConfirm.js +3 -4
  391. package/login/pages/LogoutConfirm.js.map +1 -1
  392. package/login/pages/PageProps.d.ts +3 -5
  393. package/login/pages/Register.d.ts +4 -3
  394. package/login/pages/Register.js +12 -17
  395. package/login/pages/Register.js.map +1 -1
  396. package/login/pages/SamlPostForm.d.ts +1 -1
  397. package/login/pages/SamlPostForm.js +1 -1
  398. package/login/pages/SamlPostForm.js.map +1 -1
  399. package/login/pages/SelectAuthenticator.d.ts +2 -2
  400. package/login/pages/SelectAuthenticator.js +3 -7
  401. package/login/pages/SelectAuthenticator.js.map +1 -1
  402. package/login/pages/Terms.d.ts +2 -2
  403. package/login/pages/Terms.js +8 -7
  404. package/login/pages/Terms.js.map +1 -1
  405. package/login/pages/UpdateEmail.d.ts +3 -2
  406. package/login/pages/UpdateEmail.js +6 -10
  407. package/login/pages/UpdateEmail.js.map +1 -1
  408. package/login/pages/WebauthnAuthenticate.d.ts +1 -1
  409. package/login/pages/WebauthnAuthenticate.js +25 -22
  410. package/login/pages/WebauthnAuthenticate.js.map +1 -1
  411. package/login/pages/WebauthnError.d.ts +1 -1
  412. package/login/pages/WebauthnError.js +4 -5
  413. package/login/pages/WebauthnError.js.map +1 -1
  414. package/login/pages/WebauthnRegister.d.ts +1 -1
  415. package/login/pages/WebauthnRegister.js +15 -16
  416. package/login/pages/WebauthnRegister.js.map +1 -1
  417. package/package.json +433 -319
  418. package/src/PUBLIC_URL.ts +3 -3
  419. package/src/account/{Fallback.tsx → DefaultPage.tsx} +5 -5
  420. package/src/account/{kcContext → KcContext}/KcContext.ts +24 -2
  421. package/src/account/KcContext/getKcContextMock.ts +69 -0
  422. package/src/account/KcContext/index.ts +2 -0
  423. package/src/account/KcContext/kcContextMocks.ts +190 -0
  424. package/src/account/Template.tsx +14 -16
  425. package/src/account/TemplateProps.ts +4 -5
  426. package/src/account/i18n/baseMessages/ar.ts +3 -1
  427. package/src/account/i18n/baseMessages/ca.ts +3 -1
  428. package/src/account/i18n/baseMessages/cs.ts +3 -1
  429. package/src/account/i18n/baseMessages/da.ts +3 -1
  430. package/src/account/i18n/baseMessages/de.ts +3 -1
  431. package/src/account/i18n/baseMessages/el.ts +3 -1
  432. package/src/account/i18n/baseMessages/en.ts +3 -1
  433. package/src/account/i18n/baseMessages/es.ts +3 -1
  434. package/src/account/i18n/baseMessages/fa.ts +3 -1
  435. package/src/account/i18n/baseMessages/fi.ts +3 -1
  436. package/src/account/i18n/baseMessages/fr.ts +3 -1
  437. package/src/account/i18n/baseMessages/hu.ts +3 -1
  438. package/src/account/i18n/baseMessages/it.ts +3 -1
  439. package/src/account/i18n/baseMessages/ja.ts +3 -1
  440. package/src/account/i18n/baseMessages/lt.ts +3 -1
  441. package/src/account/i18n/baseMessages/lv.ts +3 -1
  442. package/src/account/i18n/baseMessages/nl.ts +3 -1
  443. package/src/account/i18n/baseMessages/no.ts +3 -1
  444. package/src/account/i18n/baseMessages/pl.ts +3 -1
  445. package/src/account/i18n/baseMessages/pt-BR.ts +3 -1
  446. package/src/account/i18n/baseMessages/ru.ts +3 -1
  447. package/src/account/i18n/baseMessages/sk.ts +3 -1
  448. package/src/account/i18n/baseMessages/sv.ts +3 -1
  449. package/src/account/i18n/baseMessages/th.ts +3 -1
  450. package/src/account/i18n/baseMessages/tr.ts +3 -1
  451. package/src/account/i18n/baseMessages/uk.ts +3 -1
  452. package/src/account/i18n/baseMessages/zh-CN.ts +3 -1
  453. package/src/account/i18n/i18n.tsx +201 -142
  454. package/src/account/i18n/index.ts +5 -1
  455. package/src/account/i18n/useI18n.ts +44 -0
  456. package/src/account/index.ts +3 -10
  457. package/src/account/lib/kcClsx.ts +25 -0
  458. package/src/account/pages/Account.tsx +12 -18
  459. package/src/account/pages/Applications.tsx +8 -9
  460. package/src/account/pages/FederatedIdentity.tsx +3 -3
  461. package/src/account/pages/Log.tsx +5 -5
  462. package/src/account/pages/PageProps.ts +4 -6
  463. package/src/account/pages/Password.tsx +17 -19
  464. package/src/account/pages/Sessions.tsx +5 -6
  465. package/src/account/pages/Totp.tsx +18 -38
  466. package/src/bin/add-story.ts +104 -0
  467. package/src/bin/copy-keycloak-resources-to-public.ts +3 -6
  468. package/src/bin/eject-page.ts +256 -0
  469. package/src/bin/initialize-email-theme.ts +30 -26
  470. package/src/bin/keycloakify/buildJars/buildJar.ts +138 -77
  471. package/src/bin/keycloakify/buildJars/buildJars.ts +35 -31
  472. package/src/bin/keycloakify/buildJars/extensionVersions.ts +3 -2
  473. package/src/bin/keycloakify/buildJars/generatePom.ts +19 -11
  474. package/src/bin/keycloakify/buildJars/getKeycloakVersionRangeForJar.ts +42 -10
  475. package/src/bin/keycloakify/generateFtl/generateFtl.ts +64 -42
  476. package/src/bin/keycloakify/generateFtl/{ftl_object_to_js_code_declaring_an_object.ftl → kcContextDeclarationTemplate.ftl} +232 -193
  477. package/src/bin/keycloakify/generateResources/bringInAccountV1.ts +89 -0
  478. package/src/bin/keycloakify/{generateSrcMainResources → generateResources}/generateMessageProperties.ts +47 -53
  479. package/src/bin/keycloakify/generateResources/generateResources.ts +42 -0
  480. package/src/bin/keycloakify/generateResources/generateResourcesForMainTheme.ts +299 -0
  481. package/src/bin/keycloakify/generateResources/generateResourcesForThemeVariant.ts +70 -0
  482. package/src/bin/keycloakify/generateResources/index.ts +1 -0
  483. package/src/bin/keycloakify/{generateSrcMainResources → generateResources}/readExtraPageNames.ts +21 -7
  484. package/src/bin/keycloakify/{generateSrcMainResources → generateResources}/readFieldNameUsage.ts +34 -7
  485. package/src/bin/keycloakify/keycloakify.ts +50 -16
  486. package/src/bin/keycloakify/replacers/replaceImportsInCssCode.ts +42 -46
  487. package/src/bin/keycloakify/replacers/replaceImportsInJsCode/replaceImportsInJsCode.ts +14 -11
  488. package/src/bin/keycloakify/replacers/replaceImportsInJsCode/vite.ts +31 -16
  489. package/src/bin/keycloakify/replacers/replaceImportsInJsCode/webpack.ts +53 -18
  490. package/src/bin/main.ts +96 -44
  491. package/src/bin/shared/KeycloakVersionRange.ts +4 -2
  492. package/src/bin/shared/buildContext.ts +768 -0
  493. package/src/bin/shared/constants.ts +8 -4
  494. package/src/bin/shared/copyKeycloakResourcesToPublic.ts +35 -21
  495. package/src/bin/shared/downloadKeycloakDefaultTheme.ts +276 -0
  496. package/src/bin/shared/downloadKeycloakStaticResources.ts +30 -26
  497. package/src/bin/shared/generateKcGenTs.ts +68 -0
  498. package/src/bin/shared/metaInfKeycloakThemes.ts +25 -19
  499. package/src/bin/shared/promptKeycloakVersion.ts +39 -15
  500. package/src/bin/start-keycloak/appBuild.ts +129 -0
  501. package/src/bin/start-keycloak/index.ts +1 -0
  502. package/src/bin/start-keycloak/keycloakifyBuild.ts +42 -0
  503. package/src/bin/start-keycloak/myrealm-realm-18.json +2155 -0
  504. package/src/bin/start-keycloak/myrealm-realm-19.json +2186 -0
  505. package/src/bin/start-keycloak/myrealm-realm-20.json +2197 -0
  506. package/src/bin/start-keycloak/myrealm-realm-21.json +2201 -0
  507. package/src/bin/start-keycloak/myrealm-realm-23.json +2150 -0
  508. package/src/bin/start-keycloak/myrealm-realm-24.json +2318 -0
  509. package/src/bin/start-keycloak/myrealm-realm-25.json +2400 -0
  510. package/src/bin/start-keycloak/start-keycloak.ts +451 -0
  511. package/src/bin/tools/SemVer.ts +32 -13
  512. package/src/bin/tools/String.prototype.replaceAll.ts +9 -2
  513. package/src/bin/tools/crawl.ts +4 -1
  514. package/src/bin/tools/crc32.ts +42 -24
  515. package/src/bin/tools/downloadAndExtractArchive/downloadAndExtractArchive.ts +262 -0
  516. package/src/bin/tools/{fetchProxyOptions.ts → downloadAndExtractArchive/fetchProxyOptions.ts} +39 -8
  517. package/src/bin/tools/downloadAndExtractArchive/index.ts +1 -0
  518. package/src/bin/tools/escapeStringForPropertiesFile.ts +64 -0
  519. package/src/bin/tools/extractArchive.ts +140 -0
  520. package/src/bin/tools/getAbsoluteAndInOsFormatPath.ts +10 -2
  521. package/src/bin/tools/getNpmWorkspaceRootDirPath.ts +52 -6
  522. package/src/bin/tools/octokit-addons/getLatestsSemVersionedTag.ts +8 -2
  523. package/src/bin/tools/octokit-addons/listTags.ts +15 -4
  524. package/src/bin/tools/partitionPromiseSettledResults.ts +12 -3
  525. package/src/bin/tools/readThisNpmPackageVersion.ts +5 -1
  526. package/src/bin/tools/transformCodebase.ts +29 -10
  527. package/src/bin/tools/trimIndent.ts +4 -1
  528. package/src/bin/tsconfig.json +4 -3
  529. package/src/bin/update-kc-gen.ts +13 -0
  530. package/src/lib/getKcClsx.ts +89 -0
  531. package/src/login/{Fallback.tsx → DefaultPage.tsx} +7 -6
  532. package/src/login/{kcContext → KcContext}/KcContext.ts +58 -30
  533. package/src/login/KcContext/getKcContextMock.ts +69 -0
  534. package/src/login/KcContext/index.ts +8 -0
  535. package/src/login/KcContext/kcContextMocks.ts +583 -0
  536. package/src/login/Template.tsx +54 -57
  537. package/src/login/TemplateProps.ts +3 -6
  538. package/src/login/UserProfileFormFields.tsx +125 -210
  539. package/src/login/UserProfileFormFieldsProps.tsx +22 -0
  540. package/src/login/i18n/baseMessages/ar.ts +10 -1
  541. package/src/login/i18n/baseMessages/ca.ts +11 -2
  542. package/src/login/i18n/baseMessages/cs.ts +10 -1
  543. package/src/login/i18n/baseMessages/da.ts +10 -1
  544. package/src/login/i18n/baseMessages/de.ts +10 -1
  545. package/src/login/i18n/baseMessages/el.ts +10 -2
  546. package/src/login/i18n/baseMessages/en.ts +11 -2
  547. package/src/login/i18n/baseMessages/es.ts +11 -2
  548. package/src/login/i18n/baseMessages/fa.ts +10 -2
  549. package/src/login/i18n/baseMessages/fi.ts +10 -1
  550. package/src/login/i18n/baseMessages/fr.ts +10 -1
  551. package/src/login/i18n/baseMessages/hu.ts +11 -2
  552. package/src/login/i18n/baseMessages/it.ts +10 -1
  553. package/src/login/i18n/baseMessages/ja.ts +10 -1
  554. package/src/login/i18n/baseMessages/lt.ts +10 -1
  555. package/src/login/i18n/baseMessages/lv.ts +10 -1
  556. package/src/login/i18n/baseMessages/nl.ts +10 -1
  557. package/src/login/i18n/baseMessages/no.ts +10 -1
  558. package/src/login/i18n/baseMessages/pl.ts +10 -1
  559. package/src/login/i18n/baseMessages/pt-BR.ts +10 -1
  560. package/src/login/i18n/baseMessages/ru.ts +10 -1
  561. package/src/login/i18n/baseMessages/sk.ts +10 -1
  562. package/src/login/i18n/baseMessages/sv.ts +10 -1
  563. package/src/login/i18n/baseMessages/th.ts +10 -1
  564. package/src/login/i18n/baseMessages/tr.ts +10 -1
  565. package/src/login/i18n/baseMessages/uk.ts +10 -1
  566. package/src/login/i18n/baseMessages/zh-CN.ts +11 -2
  567. package/src/login/i18n/i18n.tsx +231 -143
  568. package/src/login/i18n/index.ts +5 -1
  569. package/src/login/i18n/useI18n.ts +44 -0
  570. package/src/login/index.ts +3 -10
  571. package/src/login/lib/kcClsx.ts +143 -0
  572. package/src/login/lib/useDownloadTerms.tsx +88 -0
  573. package/src/login/lib/useUserProfileForm.tsx +480 -351
  574. package/src/login/pages/Code.tsx +8 -5
  575. package/src/login/pages/DeleteAccountConfirm.tsx +15 -10
  576. package/src/login/pages/DeleteCredential.tsx +9 -7
  577. package/src/login/pages/Error.tsx +9 -2
  578. package/src/login/pages/FrontchannelLogout.tsx +6 -3
  579. package/src/login/pages/IdpReviewUserProfile.tsx +20 -21
  580. package/src/login/pages/Info.tsx +5 -8
  581. package/src/login/pages/Login.tsx +34 -53
  582. package/src/login/pages/LoginConfigTotp.tsx +35 -39
  583. package/src/login/pages/LoginIdpLinkConfirm.tsx +7 -18
  584. package/src/login/pages/LoginIdpLinkEmail.tsx +9 -3
  585. package/src/login/pages/LoginOauth2DeviceVerifyUserCode.tsx +24 -23
  586. package/src/login/pages/LoginOauthGrant.tsx +14 -20
  587. package/src/login/pages/LoginOtp.tsx +27 -30
  588. package/src/login/pages/LoginPageExpired.tsx +2 -2
  589. package/src/login/pages/LoginPassword.tsx +21 -31
  590. package/src/login/pages/LoginRecoveryAuthnCodeConfig.tsx +34 -34
  591. package/src/login/pages/LoginRecoveryAuthnCodeInput.tsx +19 -22
  592. package/src/login/pages/LoginResetOtp.tsx +19 -22
  593. package/src/login/pages/LoginResetPassword.tsx +21 -24
  594. package/src/login/pages/LoginUpdatePassword.tsx +40 -50
  595. package/src/login/pages/LoginUpdateProfile.tsx +32 -30
  596. package/src/login/pages/LoginUsername.tsx +23 -34
  597. package/src/login/pages/LoginVerifyEmail.tsx +5 -2
  598. package/src/login/pages/LoginX509Info.tsx +24 -33
  599. package/src/login/pages/LogoutConfirm.tsx +8 -14
  600. package/src/login/pages/PageProps.ts +3 -5
  601. package/src/login/pages/Register.tsx +48 -59
  602. package/src/login/pages/SamlPostForm.tsx +2 -2
  603. package/src/login/pages/SelectAuthenticator.tsx +23 -24
  604. package/src/login/pages/Terms.tsx +25 -24
  605. package/src/login/pages/UpdateEmail.tsx +30 -33
  606. package/src/login/pages/WebauthnAuthenticate.tsx +40 -44
  607. package/src/login/pages/WebauthnError.tsx +15 -19
  608. package/src/login/pages/WebauthnRegister.tsx +28 -37
  609. package/src/tools/Array.prototype.every.ts +4 -1
  610. package/src/tools/ExtractAfterStartingWith.ts +4 -0
  611. package/src/tools/LazyOrNot.ts +3 -1
  612. package/src/tools/Object.fromEntries.ts +23 -0
  613. package/src/tools/StatefulObservable/README.md +16 -0
  614. package/src/tools/StatefulObservable/StatefulObservable.ts +58 -0
  615. package/src/tools/StatefulObservable/hooks/index.ts +2 -0
  616. package/src/tools/StatefulObservable/hooks/useObservable.ts +25 -0
  617. package/src/tools/StatefulObservable/hooks/useRerenderOnChange.ts +19 -0
  618. package/src/tools/StatefulObservable/index.ts +2 -0
  619. package/src/tools/ValueOf.ts +2 -0
  620. package/src/tools/clsx.ts +6 -42
  621. package/src/tools/clsx_withTransform.ts +55 -0
  622. package/src/tools/deepAssign.ts +57 -19
  623. package/src/tools/formatNumber.ts +7 -3
  624. package/src/tools/react-markdown.ts +3 -0
  625. package/src/tools/structuredCloneButFunctions.ts +24 -0
  626. package/src/tools/useConstCallback.ts +3 -1
  627. package/src/tools/useInsertLinkTags.ts +78 -74
  628. package/src/tools/useInsertScriptTags.ts +69 -73
  629. package/src/tools/useOnFirstMount.ts +18 -0
  630. package/src/tools/useSetClassName.ts +4 -1
  631. package/src/vite-plugin/vite-plugin.ts +73 -37
  632. package/stories/account/pages/Account.stories.tsx +18 -0
  633. package/stories/account/pages/FederatedIdentity.stories.tsx +38 -0
  634. package/stories/account/pages/Log.stories.tsx +356 -0
  635. package/stories/account/pages/Password.stories.tsx +28 -0
  636. package/stories/account/pages/Sessions.stories.tsx +59 -0
  637. package/stories/account/pages/Totp.stories.tsx +182 -0
  638. package/stories/login/pages/Code.stories.tsx +18 -0
  639. package/stories/login/pages/DeleteAccountConfirm.stories.tsx +18 -0
  640. package/stories/login/pages/DeleteCredential.stories.tsx +18 -0
  641. package/stories/login/pages/Error.stories.tsx +28 -0
  642. package/stories/login/pages/FrontchannelLogout.stories.tsx +18 -0
  643. package/stories/login/pages/IdpReviewUserProfile.stories.tsx +18 -0
  644. package/stories/login/pages/Info.stories.tsx +52 -0
  645. package/stories/login/pages/Login.stories.tsx +221 -0
  646. package/stories/login/pages/LoginConfigTotp.stories.tsx +43 -0
  647. package/stories/login/pages/LoginDeviceVerifyUserCode.stories.tsx +18 -0
  648. package/stories/login/pages/LoginIdpLinkConfirm.stories.tsx +18 -0
  649. package/stories/login/pages/LoginIdpLinkEmail.stories.tsx +18 -0
  650. package/stories/login/pages/LoginOauth2DeviceVerifyUserCode.stories.tsx +18 -0
  651. package/stories/login/pages/LoginOauthGrant.stories.tsx +18 -0
  652. package/stories/login/pages/LoginOtp.stories.tsx +18 -0
  653. package/stories/login/pages/LoginPageExpired.stories.tsx +18 -0
  654. package/stories/login/pages/LoginPassword.stories.tsx +18 -0
  655. package/stories/login/pages/LoginRecoveryAuthnCodeConfig.stories.tsx +18 -0
  656. package/stories/login/pages/LoginRecoveryAuthnCodeInput.stories.tsx +18 -0
  657. package/stories/login/pages/LoginResetOtp.stories.tsx +18 -0
  658. package/stories/login/pages/LoginResetPassword.stories.tsx +31 -0
  659. package/stories/login/pages/LoginUpdatePassword.stories.tsx +18 -0
  660. package/stories/login/pages/LoginUpdateProfile.stories.tsx +18 -0
  661. package/stories/login/pages/LoginUsername.stories.tsx +31 -0
  662. package/stories/login/pages/LoginVerifyEmail.stories.tsx +30 -0
  663. package/stories/login/pages/LoginX509Info.stories.tsx +18 -0
  664. package/stories/login/pages/LogoutConfirm.stories.tsx +18 -0
  665. package/stories/login/pages/Register.stories.tsx +135 -0
  666. package/stories/login/pages/SamlPostForm.stories.tsx +18 -0
  667. package/stories/login/pages/SelectAuthenticator.stories.tsx +43 -0
  668. package/stories/login/pages/Terms.stories.tsx +42 -0
  669. package/stories/login/pages/UpdateEmail.stories.tsx +18 -0
  670. package/stories/login/pages/WebauthnAuthenticate.stories.tsx +18 -0
  671. package/stories/login/pages/WebauthnError.stories.tsx +18 -0
  672. package/stories/login/pages/WebauthnRegister.stories.tsx +18 -0
  673. package/tools/Array.prototype.every.js +2 -1
  674. package/tools/Array.prototype.every.js.map +1 -1
  675. package/tools/ExtractAfterStartingWith.d.ts +1 -0
  676. package/tools/ExtractAfterStartingWith.js +2 -0
  677. package/tools/ExtractAfterStartingWith.js.map +1 -0
  678. package/tools/HTMLElement.prototype.prepend.js.map +1 -1
  679. package/tools/Object.fromEntries.d.ts +1 -0
  680. package/tools/Object.fromEntries.js +17 -0
  681. package/tools/Object.fromEntries.js.map +1 -0
  682. package/tools/StatefulObservable/StatefulObservable.d.ts +8 -0
  683. package/tools/StatefulObservable/StatefulObservable.js +36 -0
  684. package/tools/StatefulObservable/StatefulObservable.js.map +1 -0
  685. package/tools/StatefulObservable/hooks/index.d.ts +2 -0
  686. package/tools/StatefulObservable/hooks/index.js +3 -0
  687. package/tools/StatefulObservable/hooks/index.js.map +1 -0
  688. package/tools/StatefulObservable/hooks/useObservable.d.ts +8 -0
  689. package/tools/StatefulObservable/hooks/useObservable.js +17 -0
  690. package/tools/StatefulObservable/hooks/useObservable.js.map +1 -0
  691. package/tools/StatefulObservable/hooks/useRerenderOnChange.d.ts +5 -0
  692. package/tools/StatefulObservable/hooks/useRerenderOnChange.js +14 -0
  693. package/tools/StatefulObservable/hooks/useRerenderOnChange.js.map +1 -0
  694. package/tools/StatefulObservable/index.d.ts +2 -0
  695. package/tools/StatefulObservable/index.js +3 -0
  696. package/tools/StatefulObservable/index.js.map +1 -0
  697. package/tools/ValueOf.d.ts +2 -0
  698. package/tools/ValueOf.js +2 -0
  699. package/tools/ValueOf.js.map +1 -0
  700. package/tools/clsx.d.ts +3 -2
  701. package/tools/clsx.js +5 -41
  702. package/tools/clsx.js.map +1 -1
  703. package/tools/clsx_withTransform.d.ts +5 -0
  704. package/tools/clsx_withTransform.js +43 -0
  705. package/tools/clsx_withTransform.js.map +1 -0
  706. package/tools/deepAssign.d.ts +1 -0
  707. package/tools/deepAssign.js +41 -16
  708. package/tools/deepAssign.js.map +1 -1
  709. package/tools/formatNumber.js +2 -1
  710. package/tools/formatNumber.js.map +1 -1
  711. package/tools/react-markdown.d.ts +3 -0
  712. package/tools/react-markdown.js +4 -0
  713. package/tools/react-markdown.js.map +1 -0
  714. package/tools/structuredCloneButFunctions.d.ts +7 -0
  715. package/tools/structuredCloneButFunctions.js +19 -0
  716. package/tools/structuredCloneButFunctions.js.map +1 -0
  717. package/tools/useConstCallback.js.map +1 -1
  718. package/tools/useInsertLinkTags.d.ts +11 -6
  719. package/tools/useInsertLinkTags.js +53 -52
  720. package/tools/useInsertLinkTags.js.map +1 -1
  721. package/tools/useInsertScriptTags.d.ts +15 -6
  722. package/tools/useInsertScriptTags.js +56 -61
  723. package/tools/useInsertScriptTags.js.map +1 -1
  724. package/tools/useOnFirstMount.d.ts +2 -0
  725. package/tools/useOnFirstMount.js +15 -0
  726. package/tools/useOnFirstMount.js.map +1 -0
  727. package/tools/useSetClassName.js.map +1 -1
  728. package/vite-plugin/index.d.ts +1 -0
  729. package/vite-plugin/index.js +53394 -0
  730. package/vite-plugin/vite-plugin.d.ts +5 -0
  731. package/account/Fallback.d.ts +0 -5
  732. package/account/Fallback.js.map +0 -1
  733. package/account/kcContext/KcContext.js.map +0 -1
  734. package/account/kcContext/createGetKcContext.d.ts +0 -19
  735. package/account/kcContext/createGetKcContext.js +0 -73
  736. package/account/kcContext/createGetKcContext.js.map +0 -1
  737. package/account/kcContext/getKcContext.d.ts +0 -13
  738. package/account/kcContext/getKcContext.js +0 -13
  739. package/account/kcContext/getKcContext.js.map +0 -1
  740. package/account/kcContext/getKcContextFromWindow.d.ts +0 -8
  741. package/account/kcContext/getKcContextFromWindow.js +0 -5
  742. package/account/kcContext/getKcContextFromWindow.js.map +0 -1
  743. package/account/kcContext/index.d.ts +0 -1
  744. package/account/kcContext/index.js +0 -2
  745. package/account/kcContext/index.js.map +0 -1
  746. package/account/kcContext/kcContextMocks.js +0 -215
  747. package/account/kcContext/kcContextMocks.js.map +0 -1
  748. package/account/lib/useGetClassName.d.ts +0 -7
  749. package/account/lib/useGetClassName.js +0 -19
  750. package/account/lib/useGetClassName.js.map +0 -1
  751. package/lib/isStorybook.d.ts +0 -1
  752. package/lib/isStorybook.js +0 -2
  753. package/lib/isStorybook.js.map +0 -1
  754. package/lib/useGetClassName.d.ts +0 -10
  755. package/lib/useGetClassName.js +0 -14
  756. package/lib/useGetClassName.js.map +0 -1
  757. package/login/Fallback.js.map +0 -1
  758. package/login/kcContext/KcContext.js.map +0 -1
  759. package/login/kcContext/createGetKcContext.d.ts +0 -19
  760. package/login/kcContext/createGetKcContext.js +0 -109
  761. package/login/kcContext/createGetKcContext.js.map +0 -1
  762. package/login/kcContext/getKcContext.d.ts +0 -13
  763. package/login/kcContext/getKcContext.js +0 -13
  764. package/login/kcContext/getKcContext.js.map +0 -1
  765. package/login/kcContext/getKcContextFromWindow.d.ts +0 -8
  766. package/login/kcContext/getKcContextFromWindow.js +0 -5
  767. package/login/kcContext/getKcContextFromWindow.js.map +0 -1
  768. package/login/kcContext/index.d.ts +0 -1
  769. package/login/kcContext/index.js +0 -2
  770. package/login/kcContext/index.js.map +0 -1
  771. package/login/kcContext/kcContextMocks.js +0 -390
  772. package/login/kcContext/kcContextMocks.js.map +0 -1
  773. package/login/lib/useGetClassName.d.ts +0 -7
  774. package/login/lib/useGetClassName.js +0 -130
  775. package/login/lib/useGetClassName.js.map +0 -1
  776. package/src/account/kcContext/createGetKcContext.ts +0 -108
  777. package/src/account/kcContext/getKcContext.ts +0 -21
  778. package/src/account/kcContext/getKcContextFromWindow.ts +0 -11
  779. package/src/account/kcContext/index.ts +0 -1
  780. package/src/account/kcContext/kcContextMocks.ts +0 -260
  781. package/src/account/lib/useGetClassName.ts +0 -20
  782. package/src/bin/download-builtin-keycloak-theme.ts +0 -30
  783. package/src/bin/eject-keycloak-page.ts +0 -126
  784. package/src/bin/keycloakify/generateSrcMainResources/bringInAccountV1.ts +0 -79
  785. package/src/bin/keycloakify/generateSrcMainResources/generateSrcMainResources.ts +0 -32
  786. package/src/bin/keycloakify/generateSrcMainResources/generateSrcMainResourcesForMainTheme.ts +0 -261
  787. package/src/bin/keycloakify/generateSrcMainResources/generateSrcMainResourcesForThemeVariant.ts +0 -56
  788. package/src/bin/keycloakify/generateSrcMainResources/index.ts +0 -1
  789. package/src/bin/keycloakify/generateStartKeycloakTestingContainer.ts +0 -60
  790. package/src/bin/keycloakify/replacers/replaceImportsInInlineCssCode.ts +0 -24
  791. package/src/bin/shared/buildOptions.ts +0 -277
  792. package/src/bin/shared/downloadAndUnzip.ts +0 -203
  793. package/src/bin/shared/downloadBuiltinKeycloakTheme.ts +0 -264
  794. package/src/bin/shared/getJarFileBasename.ts +0 -9
  795. package/src/bin/shared/getThemeSrcDirPath.ts +0 -47
  796. package/src/bin/start-keycloak.ts +0 -236
  797. package/src/bin/tools/unzip.ts +0 -141
  798. package/src/lib/isStorybook.ts +0 -1
  799. package/src/lib/useGetClassName.ts +0 -18
  800. package/src/login/kcContext/createGetKcContext.ts +0 -159
  801. package/src/login/kcContext/getKcContext.ts +0 -21
  802. package/src/login/kcContext/getKcContextFromWindow.ts +0 -11
  803. package/src/login/kcContext/index.ts +0 -1
  804. package/src/login/kcContext/kcContextMocks.ts +0 -630
  805. package/src/login/lib/useDownloadTerms.ts +0 -57
  806. package/src/login/lib/useGetClassName.ts +0 -132
  807. package/src/tools/AndByDiscriminatingKey.ts +0 -25
  808. package/src/tools/Markdown.ts +0 -3
  809. package/src/tools/deepClone.ts +0 -17
  810. package/src/tools/memoize.ts +0 -55
  811. package/tools/AndByDiscriminatingKey.d.ts +0 -5
  812. package/tools/AndByDiscriminatingKey.js +0 -2
  813. package/tools/AndByDiscriminatingKey.js.map +0 -1
  814. package/tools/Markdown.d.ts +0 -2
  815. package/tools/Markdown.js +0 -3
  816. package/tools/Markdown.js.map +0 -1
  817. package/tools/deepClone.d.ts +0 -2
  818. package/tools/deepClone.js +0 -14
  819. package/tools/deepClone.js.map +0 -1
  820. package/tools/memoize.d.ts +0 -7
  821. package/tools/memoize.js +0 -38
  822. package/tools/memoize.js.map +0 -1
  823. /package/account/{kcContext → KcContext}/KcContext.js +0 -0
  824. /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,11 +1,8 @@
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";
3
+ import messages_fallbackLanguage from "./baseMessages/en";
4
+ import { getMessages } from "./baseMessages";
5
+ import type { KcContext } from "../KcContext";
9
6
 
10
7
  export const fallbackLanguageTag = "en";
11
8
 
@@ -18,7 +15,7 @@ export type KcContextLike = {
18
15
 
19
16
  assert<KcContext extends KcContextLike ? true : false>();
20
17
 
21
- export type MessageKey = keyof typeof fallbackMessages | keyof (typeof keycloakifyExtraMessages)[typeof fallbackLanguageTag];
18
+ export type MessageKey = keyof typeof messages_fallbackLanguage;
22
19
 
23
20
  export type GenericI18n<MessageKey extends string> = {
24
21
  /**
@@ -31,7 +28,7 @@ export type GenericI18n<MessageKey extends string> = {
31
28
  * Redirect to this url to change the language.
32
29
  * After reload currentLanguageTag === newLanguageTag
33
30
  */
34
- getChangeLocalUrl: (newLanguageTag: string) => string;
31
+ getChangeLocaleUrl: (newLanguageTag: string) => string;
35
32
  /**
36
33
  * e.g. "en" => "English", "fr" => "Français", ...
37
34
  *
@@ -53,178 +50,240 @@ export type GenericI18n<MessageKey extends string> = {
53
50
  */
54
51
  msgStr: (key: MessageKey, ...args: (string | undefined)[]) => string;
55
52
  /**
53
+ * This is meant to be used when the key argument is variable, something that might have been configured by the user
54
+ * in the Keycloak admin for example.
55
+ *
56
56
  * Examples assuming currentLanguageTag === "en"
57
- * advancedMsg("${access-denied} foo bar") === <span>${msgStr("access-denied")} foo bar<span> === <span>Access denied foo bar</span>
57
+ * {
58
+ * en: {
59
+ * "access-denied": "Access denied",
60
+ * "foo": "Foo {0} {1}",
61
+ * "bar": "Bar {0}"
62
+ * }
63
+ * }
64
+ *
65
+ * advancedMsg("${access-denied} foo bar") === <span>{msgStr("access-denied")} foo bar<span> === <span>Access denied foo bar</span>
58
66
  * advancedMsg("${access-denied}") === advancedMsg("access-denied") === msg("access-denied") === <span>Access denied</span>
59
67
  * advancedMsg("${not-a-message-key}") === advancedMsg(not-a-message-key") === <span>not-a-message-key</span>
68
+ * advancedMsg("${bar}", "<strong>c</strong>")
69
+ * === <span>{msgStr("bar", "<strong>XXX</strong>")}<span>
70
+ * === <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)
71
+ * advancedMsg("${foo} xx ${bar}", "a", "b", "c")
72
+ * === <span>{msgStr("foo", "a", "b")} xx {msgStr("bar")}<span>
73
+ * === <span>Foo a b xx Bar {0}</span> (The substitution are only applied in the first message)
60
74
  */
61
75
  advancedMsg: (key: string, ...args: (string | undefined)[]) => JSX.Element;
62
76
  /**
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"
77
+ * See advancedMsg() but instead of returning a JSX.Element it returns a string.
66
78
  */
67
79
  advancedMsgStr: (key: string, ...args: (string | undefined)[]) => string;
68
- };
69
80
 
70
- export type I18n = GenericI18n<MessageKey>;
81
+ /**
82
+ * Initially the messages are in english (fallback language).
83
+ * The translations in the current language are being fetched dynamically.
84
+ * This property is true while the translations are being fetched.
85
+ */
86
+ isFetchingTranslations: boolean;
87
+ };
71
88
 
72
- export function createUseI18n<ExtraMessageKey extends string = never>(extraMessages: {
89
+ export function createGetI18n<ExtraMessageKey extends string = never>(messageBundle: {
73
90
  [languageTag: string]: { [key in ExtraMessageKey]: string };
74
91
  }) {
75
- function useI18n(params: { kcContext: KcContextLike }): GenericI18n<MessageKey | ExtraMessageKey> | null {
76
- const { kcContext } = params;
92
+ type I18n = GenericI18n<MessageKey | ExtraMessageKey>;
77
93
 
78
- const [i18n, setI18n] = useState<GenericI18n<ExtraMessageKey | MessageKey> | undefined>(undefined);
94
+ type Result = { i18n: I18n; prI18n_currentLanguage: Promise<I18n> | undefined };
95
+
96
+ const cachedResultByKcContext = new WeakMap<KcContextLike, Result>();
97
+
98
+ function getI18n(params: { kcContext: KcContextLike }): Result {
99
+ const { kcContext } = params;
79
100
 
80
- const refHasStartedFetching = useRef(false);
101
+ use_cache: {
102
+ const cachedResult = cachedResultByKcContext.get(kcContext);
81
103
 
82
- useEffect(() => {
83
- if (refHasStartedFetching.current) {
84
- return;
104
+ if (cachedResult === undefined) {
105
+ break use_cache;
85
106
  }
86
107
 
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
- }, []);
108
+ return cachedResult;
109
+ }
110
+
111
+ const partialI18n: Pick<I18n, "currentLanguageTag" | "getChangeLocaleUrl" | "labelBySupportedLanguageTag"> = {
112
+ currentLanguageTag: kcContext.locale?.currentLanguageTag ?? fallbackLanguageTag,
113
+ getChangeLocaleUrl: newLanguageTag => {
114
+ const { locale } = kcContext;
115
+
116
+ assert(locale !== undefined, "Internationalization not enabled");
117
+
118
+ const targetSupportedLocale = locale.supported.find(({ languageTag }) => languageTag === newLanguageTag);
123
119
 
124
- return i18n ?? null;
120
+ assert(targetSupportedLocale !== undefined, `${newLanguageTag} need to be enabled in Keycloak admin`);
121
+
122
+ return targetSupportedLocale.url;
123
+ },
124
+ labelBySupportedLanguageTag: Object.fromEntries((kcContext.locale?.supported ?? []).map(({ languageTag, label }) => [languageTag, label]))
125
+ };
126
+
127
+ const { createI18nTranslationFunctions } = createI18nTranslationFunctionsFactory<MessageKey, ExtraMessageKey>({
128
+ messages_fallbackLanguage,
129
+ messageBundle_fallbackLanguage: messageBundle[fallbackLanguageTag],
130
+ messageBundle_currentLanguage: messageBundle[partialI18n.currentLanguageTag]
131
+ });
132
+
133
+ const isCurrentLanguageFallbackLanguage = partialI18n.currentLanguageTag === fallbackLanguageTag;
134
+
135
+ const result: Result = {
136
+ i18n: {
137
+ ...partialI18n,
138
+ ...createI18nTranslationFunctions({
139
+ messages_currentLanguage: isCurrentLanguageFallbackLanguage ? messages_fallbackLanguage : undefined
140
+ }),
141
+ isFetchingTranslations: !isCurrentLanguageFallbackLanguage
142
+ },
143
+ prI18n_currentLanguage: isCurrentLanguageFallbackLanguage
144
+ ? undefined
145
+ : (async () => {
146
+ const messages_currentLanguage = await getMessages(partialI18n.currentLanguageTag);
147
+
148
+ const i18n_currentLanguage: I18n = {
149
+ ...partialI18n,
150
+ ...createI18nTranslationFunctions({ messages_currentLanguage }),
151
+ isFetchingTranslations: false
152
+ };
153
+
154
+ // NOTE: This promise.resolve is just because without it we TypeScript
155
+ // gives a Variable 'result' is used before being assigned. error
156
+ await Promise.resolve().then(() => {
157
+ result.i18n = i18n_currentLanguage;
158
+ result.prI18n_currentLanguage = undefined;
159
+ });
160
+
161
+ return i18n_currentLanguage;
162
+ })()
163
+ };
164
+
165
+ cachedResultByKcContext.set(kcContext, result);
166
+
167
+ return result;
125
168
  }
126
169
 
127
- return { useI18n };
170
+ return { getI18n };
128
171
  }
129
172
 
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;
173
+ function createI18nTranslationFunctionsFactory<MessageKey extends string, ExtraMessageKey extends string>(params: {
174
+ messages_fallbackLanguage: Record<MessageKey, string>;
175
+ messageBundle_fallbackLanguage: Record<ExtraMessageKey, string> | undefined;
176
+ messageBundle_currentLanguage: Partial<Record<ExtraMessageKey, string>> | undefined;
177
+ }) {
178
+ const { messageBundle_currentLanguage } = params;
138
179
 
139
- const messageOrUndefined: string | undefined = (messages as any)[key] ?? (fallbackMessages as any)[key];
180
+ const messages_fallbackLanguage = {
181
+ ...params.messages_fallbackLanguage,
182
+ ...params.messageBundle_fallbackLanguage
183
+ };
140
184
 
141
- if (messageOrUndefined === undefined) {
142
- return undefined;
143
- }
185
+ function createI18nTranslationFunctions(params: {
186
+ messages_currentLanguage: Partial<Record<MessageKey, string>> | undefined;
187
+ }): Pick<GenericI18n<MessageKey | ExtraMessageKey>, "msg" | "msgStr" | "advancedMsg" | "advancedMsgStr"> {
188
+ const messages_currentLanguage = {
189
+ ...params.messages_currentLanguage,
190
+ ...messageBundle_currentLanguage
191
+ };
144
192
 
145
- const message = messageOrUndefined;
193
+ function resolveMsg(props: { key: string; args: (string | undefined)[]; doRenderAsHtml: boolean }): string | JSX.Element | undefined {
194
+ const { key, args, doRenderAsHtml } = props;
146
195
 
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];
196
+ const messageOrUndefined: string | undefined = (messages_currentLanguage as any)[key] ?? (messages_fallbackLanguage as any)[key];
153
197
 
154
- if (startIndex === undefined) {
155
- // No {0} in message (no arguments expected)
156
- return message;
198
+ if (messageOrUndefined === undefined) {
199
+ return undefined;
157
200
  }
158
201
 
159
- let messageWithArgsInjected = message;
202
+ const message = messageOrUndefined;
203
+
204
+ const messageWithArgsInjectedIfAny = (() => {
205
+ const startIndex = message
206
+ .match(/{[0-9]+}/g)
207
+ ?.map(g => g.match(/{([0-9]+)}/)![1])
208
+ .map(indexStr => parseInt(indexStr))
209
+ .sort((a, b) => a - b)[0];
160
210
 
161
- args.forEach((arg, i) => {
162
- if (arg === undefined) {
163
- return;
211
+ if (startIndex === undefined) {
212
+ // No {0} in message (no arguments expected)
213
+ return message;
164
214
  }
165
215
 
166
- messageWithArgsInjected = messageWithArgsInjected.replace(new RegExp(`\\{${i + startIndex}\\}`, "g"), arg);
167
- });
216
+ let messageWithArgsInjected = message;
168
217
 
169
- return messageWithArgsInjected;
170
- })();
218
+ args.forEach((arg, i) => {
219
+ if (arg === undefined) {
220
+ return;
221
+ }
171
222
 
172
- return doRenderMarkdown ? (
173
- <Markdown allowDangerousHtml renderers={{ "paragraph": "span" }}>
174
- {messageWithArgsInjectedIfAny}
175
- </Markdown>
176
- ) : (
177
- messageWithArgsInjectedIfAny
178
- );
179
- }
223
+ messageWithArgsInjected = messageWithArgsInjected.replace(
224
+ new RegExp(`\\{${i + startIndex}\\}`, "g"),
225
+ arg.replace(/</g, "&lt;").replace(/>/g, "&gt;")
226
+ );
227
+ });
180
228
 
181
- function resolveMsgAdvanced(props: { key: string; args: (string | undefined)[]; doRenderMarkdown: boolean }): JSX.Element | string {
182
- const { key, args, doRenderMarkdown } = props;
229
+ return messageWithArgsInjected;
230
+ })();
183
231
 
184
- const match = key.match(/^\$\{([^{]+)\}$/);
232
+ return doRenderAsHtml ? (
233
+ <span
234
+ // NOTE: The message is trusted. The arguments are not but are escaped.
235
+ dangerouslySetInnerHTML={{
236
+ __html: messageWithArgsInjectedIfAny
237
+ }}
238
+ />
239
+ ) : (
240
+ messageWithArgsInjectedIfAny
241
+ );
242
+ }
185
243
 
186
- const keyUnwrappedFromCurlyBraces = match === null ? key : match[1];
244
+ function resolveMsgAdvanced(props: { key: string; args: (string | undefined)[]; doRenderAsHtml: boolean }): JSX.Element | string {
245
+ const { key, args, doRenderAsHtml } = props;
187
246
 
188
- const out = resolveMsg({
189
- "key": keyUnwrappedFromCurlyBraces,
190
- args,
191
- doRenderMarkdown
192
- });
247
+ if (!/\$\{[^}]+\}/.test(key)) {
248
+ const resolvedMessage = resolveMsg({ key, args, doRenderAsHtml });
193
249
 
194
- return (out !== undefined ? out : doRenderMarkdown ? <span>{keyUnwrappedFromCurlyBraces}</span> : keyUnwrappedFromCurlyBraces) as any;
195
- }
250
+ if (resolvedMessage === undefined) {
251
+ return doRenderAsHtml ? <span dangerouslySetInnerHTML={{ __html: key }} /> : key;
252
+ }
196
253
 
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
- }
254
+ return resolvedMessage;
255
+ }
256
+
257
+ let isFirstMatch = true;
258
+
259
+ const resolvedComplexMessage = key.replace(/\$\{([^}]+)\}/g, (...[, key_i]) => {
260
+ const replaceBy = resolveMsg({ key: key_i, args: isFirstMatch ? args : [], doRenderAsHtml: false }) ?? key_i;
261
+
262
+ isFirstMatch = false;
263
+
264
+ return replaceBy;
265
+ });
266
+
267
+ return doRenderAsHtml ? <span dangerouslySetInnerHTML={{ __html: resolvedComplexMessage }} /> : resolvedComplexMessage;
268
+ }
204
269
 
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 */
270
+ return {
271
+ msgStr: (key, ...args) => resolveMsg({ key, args, doRenderAsHtml: false }) as string,
272
+ msg: (key, ...args) => resolveMsg({ key, args, doRenderAsHtml: true }) as JSX.Element,
273
+ advancedMsg: (key, ...args) =>
274
+ resolveMsgAdvanced({
275
+ key,
276
+ args,
277
+ doRenderAsHtml: true
278
+ }) as JSX.Element,
279
+ advancedMsgStr: (key, ...args) =>
280
+ resolveMsgAdvanced({
281
+ key,
282
+ args,
283
+ doRenderAsHtml: false
284
+ }) as string
285
+ };
229
286
  }
230
- };
287
+
288
+ return { createI18nTranslationFunctions };
289
+ }
@@ -1 +1,5 @@
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";
5
+ export { fallbackLanguageTag } from "./i18n";
@@ -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>(extraMessages: {
11
+ [languageTag: string]: { [key in ExtraMessageKey]: string };
12
+ }) {
13
+ type I18n = GenericI18n<MessageKey | ExtraMessageKey>;
14
+
15
+ const { getI18n } = createGetI18n(extraMessages);
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"];