keycloakify 10.0.0-rc.4 → 10.0.0-rc.41

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 (1004) hide show
  1. package/PUBLIC_URL.d.ts +1 -1
  2. package/PUBLIC_URL.js +2 -2
  3. package/PUBLIC_URL.js.map +1 -1
  4. package/account/DefaultPage.d.ts +5 -0
  5. package/account/{Fallback.js → DefaultPage.js} +5 -2
  6. package/account/DefaultPage.js.map +1 -0
  7. package/account/{kcContext → KcContext}/KcContext.d.ts +74 -44
  8. package/account/KcContext/KcContext.js.map +1 -0
  9. package/account/KcContext/getKcContextMock.d.ts +24 -0
  10. package/account/KcContext/getKcContextMock.js +28 -0
  11. package/account/KcContext/getKcContextMock.js.map +1 -0
  12. package/account/KcContext/index.d.ts +2 -0
  13. package/account/KcContext/index.js +2 -0
  14. package/account/KcContext/index.js.map +1 -0
  15. package/account/{kcContext → KcContext}/kcContextMocks.d.ts +1 -1
  16. package/account/KcContext/kcContextMocks.js +151 -0
  17. package/account/KcContext/kcContextMocks.js.map +1 -0
  18. package/account/Template.d.ts +2 -2
  19. package/account/Template.js +10 -10
  20. package/account/Template.js.map +1 -1
  21. package/account/TemplateProps.d.ts +3 -5
  22. package/account/i18n/baseMessages/ar.d.ts +2 -0
  23. package/account/i18n/baseMessages/ar.js +3 -1
  24. package/account/i18n/baseMessages/ar.js.map +1 -1
  25. package/account/i18n/baseMessages/ca.d.ts +2 -0
  26. package/account/i18n/baseMessages/ca.js +3 -1
  27. package/account/i18n/baseMessages/ca.js.map +1 -1
  28. package/account/i18n/baseMessages/cs.d.ts +2 -0
  29. package/account/i18n/baseMessages/cs.js +3 -1
  30. package/account/i18n/baseMessages/cs.js.map +1 -1
  31. package/account/i18n/baseMessages/da.d.ts +2 -0
  32. package/account/i18n/baseMessages/da.js +3 -1
  33. package/account/i18n/baseMessages/da.js.map +1 -1
  34. package/account/i18n/baseMessages/de.d.ts +2 -0
  35. package/account/i18n/baseMessages/de.js +3 -1
  36. package/account/i18n/baseMessages/de.js.map +1 -1
  37. package/account/i18n/baseMessages/el.d.ts +2 -0
  38. package/account/i18n/baseMessages/el.js +3 -1
  39. package/account/i18n/baseMessages/el.js.map +1 -1
  40. package/account/i18n/baseMessages/en.d.ts +2 -0
  41. package/account/i18n/baseMessages/en.js +3 -1
  42. package/account/i18n/baseMessages/en.js.map +1 -1
  43. package/account/i18n/baseMessages/es.d.ts +2 -0
  44. package/account/i18n/baseMessages/es.js +3 -1
  45. package/account/i18n/baseMessages/es.js.map +1 -1
  46. package/account/i18n/baseMessages/fa.d.ts +2 -0
  47. package/account/i18n/baseMessages/fa.js +3 -1
  48. package/account/i18n/baseMessages/fa.js.map +1 -1
  49. package/account/i18n/baseMessages/fi.d.ts +2 -0
  50. package/account/i18n/baseMessages/fi.js +3 -1
  51. package/account/i18n/baseMessages/fi.js.map +1 -1
  52. package/account/i18n/baseMessages/fr.d.ts +2 -0
  53. package/account/i18n/baseMessages/fr.js +3 -1
  54. package/account/i18n/baseMessages/fr.js.map +1 -1
  55. package/account/i18n/baseMessages/hu.d.ts +2 -0
  56. package/account/i18n/baseMessages/hu.js +3 -1
  57. package/account/i18n/baseMessages/hu.js.map +1 -1
  58. package/account/i18n/baseMessages/index.d.ts +18 -0
  59. package/account/i18n/baseMessages/it.d.ts +2 -0
  60. package/account/i18n/baseMessages/it.js +3 -1
  61. package/account/i18n/baseMessages/it.js.map +1 -1
  62. package/account/i18n/baseMessages/ja.d.ts +2 -0
  63. package/account/i18n/baseMessages/ja.js +3 -1
  64. package/account/i18n/baseMessages/ja.js.map +1 -1
  65. package/account/i18n/baseMessages/lt.d.ts +2 -0
  66. package/account/i18n/baseMessages/lt.js +3 -1
  67. package/account/i18n/baseMessages/lt.js.map +1 -1
  68. package/account/i18n/baseMessages/lv.d.ts +2 -0
  69. package/account/i18n/baseMessages/lv.js +3 -1
  70. package/account/i18n/baseMessages/lv.js.map +1 -1
  71. package/account/i18n/baseMessages/nl.d.ts +2 -0
  72. package/account/i18n/baseMessages/nl.js +3 -1
  73. package/account/i18n/baseMessages/nl.js.map +1 -1
  74. package/account/i18n/baseMessages/no.d.ts +2 -0
  75. package/account/i18n/baseMessages/no.js +3 -1
  76. package/account/i18n/baseMessages/no.js.map +1 -1
  77. package/account/i18n/baseMessages/pl.d.ts +2 -0
  78. package/account/i18n/baseMessages/pl.js +3 -1
  79. package/account/i18n/baseMessages/pl.js.map +1 -1
  80. package/account/i18n/baseMessages/pt-BR.d.ts +2 -0
  81. package/account/i18n/baseMessages/pt-BR.js +3 -1
  82. package/account/i18n/baseMessages/pt-BR.js.map +1 -1
  83. package/account/i18n/baseMessages/ru.d.ts +2 -0
  84. package/account/i18n/baseMessages/ru.js +3 -1
  85. package/account/i18n/baseMessages/ru.js.map +1 -1
  86. package/account/i18n/baseMessages/sk.d.ts +2 -0
  87. package/account/i18n/baseMessages/sk.js +3 -1
  88. package/account/i18n/baseMessages/sk.js.map +1 -1
  89. package/account/i18n/baseMessages/sv.d.ts +2 -0
  90. package/account/i18n/baseMessages/sv.js +3 -1
  91. package/account/i18n/baseMessages/sv.js.map +1 -1
  92. package/account/i18n/baseMessages/th.d.ts +2 -0
  93. package/account/i18n/baseMessages/th.js +3 -1
  94. package/account/i18n/baseMessages/th.js.map +1 -1
  95. package/account/i18n/baseMessages/tr.d.ts +2 -0
  96. package/account/i18n/baseMessages/tr.js +3 -1
  97. package/account/i18n/baseMessages/tr.js.map +1 -1
  98. package/account/i18n/baseMessages/uk.d.ts +2 -0
  99. package/account/i18n/baseMessages/uk.js +3 -1
  100. package/account/i18n/baseMessages/uk.js.map +1 -1
  101. package/account/i18n/baseMessages/zh-CN.d.ts +2 -0
  102. package/account/i18n/baseMessages/zh-CN.js +3 -1
  103. package/account/i18n/baseMessages/zh-CN.js.map +1 -1
  104. package/account/i18n/i18n.d.ts +31 -32
  105. package/account/i18n/i18n.js +135 -94
  106. package/account/i18n/i18n.js.map +1 -1
  107. package/account/i18n/index.d.ts +5 -1
  108. package/account/i18n/index.js +2 -1
  109. package/account/i18n/index.js.map +1 -1
  110. package/account/index.d.ts +3 -7
  111. package/account/index.js +1 -5
  112. package/account/index.js.map +1 -1
  113. package/account/lib/kcClsx.d.ts +9 -0
  114. package/account/lib/kcClsx.js +19 -0
  115. package/account/lib/kcClsx.js.map +1 -0
  116. package/account/pages/Account.d.ts +1 -1
  117. package/account/pages/Account.js +7 -6
  118. package/account/pages/Account.js.map +1 -1
  119. package/account/pages/Applications.d.ts +1 -1
  120. package/account/pages/Applications.js +7 -8
  121. package/account/pages/Applications.js.map +1 -1
  122. package/account/pages/FederatedIdentity.d.ts +7 -0
  123. package/account/pages/FederatedIdentity.js +8 -0
  124. package/account/pages/FederatedIdentity.js.map +1 -0
  125. package/account/pages/Log.d.ts +1 -1
  126. package/account/pages/Log.js +3 -3
  127. package/account/pages/Log.js.map +1 -1
  128. package/account/pages/PageProps.d.ts +4 -6
  129. package/account/pages/Password.d.ts +1 -1
  130. package/account/pages/Password.js +13 -12
  131. package/account/pages/Password.js.map +1 -1
  132. package/account/pages/Sessions.d.ts +1 -1
  133. package/account/pages/Sessions.js +3 -8
  134. package/account/pages/Sessions.js.map +1 -1
  135. package/account/pages/Totp.d.ts +1 -1
  136. package/account/pages/Totp.js +8 -8
  137. package/account/pages/Totp.js.map +1 -1
  138. package/bin/180.index.js +4664 -0
  139. package/bin/193.index.js +160 -0
  140. package/bin/214.index.js +1508 -0
  141. package/bin/246.index.js +75213 -0
  142. package/bin/3.index.js +1616 -0
  143. package/bin/322.index.js +595 -0
  144. package/bin/36.index.js +9980 -0
  145. package/bin/420.index.js +508 -0
  146. package/bin/453.index.js +188 -0
  147. package/bin/480.index.js +466 -0
  148. package/bin/509.index.js +438 -0
  149. package/bin/525.index.js +41826 -0
  150. package/bin/526.index.js +757 -0
  151. package/bin/538.index.js +598 -0
  152. package/bin/772.index.js +1524 -0
  153. package/bin/818.index.js +1802 -0
  154. package/bin/932.index.js +328 -0
  155. package/bin/941.index.js +4215 -0
  156. package/bin/944.index.js +621 -0
  157. package/bin/961.index.js +263 -0
  158. package/bin/97.index.js +96 -0
  159. package/bin/98.index.js +1234 -0
  160. package/bin/main.js +9356 -0
  161. package/bin/{keycloakify/generateFtl/pageId.d.ts → shared/constants.d.ts} +16 -1
  162. package/bin/shared/constants.js +60 -0
  163. package/bin/shared/constants.js.map +1 -0
  164. package/lib/getKcClsx.d.ts +11 -0
  165. package/lib/getKcClsx.js +55 -0
  166. package/lib/getKcClsx.js.map +1 -0
  167. package/login/{Fallback.d.ts → DefaultPage.d.ts} +6 -5
  168. package/login/{Fallback.js → DefaultPage.js} +2 -2
  169. package/login/DefaultPage.js.map +1 -0
  170. package/login/{kcContext → KcContext}/KcContext.d.ts +23 -12
  171. package/login/{kcContext → KcContext}/KcContext.js +1 -0
  172. package/login/KcContext/KcContext.js.map +1 -0
  173. package/login/KcContext/getKcContextMock.d.ts +24 -0
  174. package/login/KcContext/getKcContextMock.js +28 -0
  175. package/login/KcContext/getKcContextMock.js.map +1 -0
  176. package/login/KcContext/index.d.ts +2 -0
  177. package/login/KcContext/index.js +2 -0
  178. package/login/KcContext/index.js.map +1 -0
  179. package/login/{kcContext → KcContext}/kcContextMocks.d.ts +1 -1
  180. package/login/KcContext/kcContextMocks.js +319 -0
  181. package/login/KcContext/kcContextMocks.js.map +1 -0
  182. package/login/Template.d.ts +2 -2
  183. package/login/Template.js +22 -22
  184. package/login/Template.js.map +1 -1
  185. package/login/TemplateProps.d.ts +3 -5
  186. package/login/UserProfileFormFields.d.ts +6 -4
  187. package/login/UserProfileFormFields.js +72 -116
  188. package/login/UserProfileFormFields.js.map +1 -1
  189. package/login/i18n/baseMessages/ar.d.ts +9 -0
  190. package/login/i18n/baseMessages/ar.js +10 -1
  191. package/login/i18n/baseMessages/ar.js.map +1 -1
  192. package/login/i18n/baseMessages/ca.d.ts +10 -1
  193. package/login/i18n/baseMessages/ca.js +11 -2
  194. package/login/i18n/baseMessages/ca.js.map +1 -1
  195. package/login/i18n/baseMessages/cs.d.ts +9 -0
  196. package/login/i18n/baseMessages/cs.js +10 -1
  197. package/login/i18n/baseMessages/cs.js.map +1 -1
  198. package/login/i18n/baseMessages/da.d.ts +9 -0
  199. package/login/i18n/baseMessages/da.js +10 -1
  200. package/login/i18n/baseMessages/da.js.map +1 -1
  201. package/login/i18n/baseMessages/de.d.ts +9 -0
  202. package/login/i18n/baseMessages/de.js +10 -1
  203. package/login/i18n/baseMessages/de.js.map +1 -1
  204. package/login/i18n/baseMessages/el.d.ts +9 -1
  205. package/login/i18n/baseMessages/el.js +10 -2
  206. package/login/i18n/baseMessages/el.js.map +1 -1
  207. package/login/i18n/baseMessages/en.d.ts +10 -1
  208. package/login/i18n/baseMessages/en.js +11 -2
  209. package/login/i18n/baseMessages/en.js.map +1 -1
  210. package/login/i18n/baseMessages/es.d.ts +10 -1
  211. package/login/i18n/baseMessages/es.js +11 -2
  212. package/login/i18n/baseMessages/es.js.map +1 -1
  213. package/login/i18n/baseMessages/fa.d.ts +9 -1
  214. package/login/i18n/baseMessages/fa.js +10 -2
  215. package/login/i18n/baseMessages/fa.js.map +1 -1
  216. package/login/i18n/baseMessages/fi.d.ts +9 -0
  217. package/login/i18n/baseMessages/fi.js +10 -1
  218. package/login/i18n/baseMessages/fi.js.map +1 -1
  219. package/login/i18n/baseMessages/fr.d.ts +9 -0
  220. package/login/i18n/baseMessages/fr.js +10 -1
  221. package/login/i18n/baseMessages/fr.js.map +1 -1
  222. package/login/i18n/baseMessages/hu.d.ts +10 -1
  223. package/login/i18n/baseMessages/hu.js +11 -2
  224. package/login/i18n/baseMessages/hu.js.map +1 -1
  225. package/login/i18n/baseMessages/index.d.ts +109 -2
  226. package/login/i18n/baseMessages/it.d.ts +9 -0
  227. package/login/i18n/baseMessages/it.js +10 -1
  228. package/login/i18n/baseMessages/it.js.map +1 -1
  229. package/login/i18n/baseMessages/ja.d.ts +9 -0
  230. package/login/i18n/baseMessages/ja.js +10 -1
  231. package/login/i18n/baseMessages/ja.js.map +1 -1
  232. package/login/i18n/baseMessages/lt.d.ts +9 -0
  233. package/login/i18n/baseMessages/lt.js +10 -1
  234. package/login/i18n/baseMessages/lt.js.map +1 -1
  235. package/login/i18n/baseMessages/lv.d.ts +9 -0
  236. package/login/i18n/baseMessages/lv.js +10 -1
  237. package/login/i18n/baseMessages/lv.js.map +1 -1
  238. package/login/i18n/baseMessages/nl.d.ts +9 -0
  239. package/login/i18n/baseMessages/nl.js +10 -1
  240. package/login/i18n/baseMessages/nl.js.map +1 -1
  241. package/login/i18n/baseMessages/no.d.ts +9 -0
  242. package/login/i18n/baseMessages/no.js +10 -1
  243. package/login/i18n/baseMessages/no.js.map +1 -1
  244. package/login/i18n/baseMessages/pl.d.ts +9 -0
  245. package/login/i18n/baseMessages/pl.js +10 -1
  246. package/login/i18n/baseMessages/pl.js.map +1 -1
  247. package/login/i18n/baseMessages/pt-BR.d.ts +9 -0
  248. package/login/i18n/baseMessages/pt-BR.js +10 -1
  249. package/login/i18n/baseMessages/pt-BR.js.map +1 -1
  250. package/login/i18n/baseMessages/ru.d.ts +9 -0
  251. package/login/i18n/baseMessages/ru.js +10 -1
  252. package/login/i18n/baseMessages/ru.js.map +1 -1
  253. package/login/i18n/baseMessages/sk.d.ts +9 -0
  254. package/login/i18n/baseMessages/sk.js +10 -1
  255. package/login/i18n/baseMessages/sk.js.map +1 -1
  256. package/login/i18n/baseMessages/sv.d.ts +9 -0
  257. package/login/i18n/baseMessages/sv.js +10 -1
  258. package/login/i18n/baseMessages/sv.js.map +1 -1
  259. package/login/i18n/baseMessages/th.d.ts +9 -0
  260. package/login/i18n/baseMessages/th.js +10 -1
  261. package/login/i18n/baseMessages/th.js.map +1 -1
  262. package/login/i18n/baseMessages/tr.d.ts +9 -0
  263. package/login/i18n/baseMessages/tr.js +10 -1
  264. package/login/i18n/baseMessages/tr.js.map +1 -1
  265. package/login/i18n/baseMessages/uk.d.ts +9 -0
  266. package/login/i18n/baseMessages/uk.js +10 -1
  267. package/login/i18n/baseMessages/uk.js.map +1 -1
  268. package/login/i18n/baseMessages/zh-CN.d.ts +10 -1
  269. package/login/i18n/baseMessages/zh-CN.js +11 -2
  270. package/login/i18n/baseMessages/zh-CN.js.map +1 -1
  271. package/login/i18n/i18n.d.ts +32 -34
  272. package/login/i18n/i18n.js +144 -96
  273. package/login/i18n/i18n.js.map +1 -1
  274. package/login/i18n/index.d.ts +5 -1
  275. package/login/i18n/index.js +2 -1
  276. package/login/i18n/index.js.map +1 -1
  277. package/login/index.d.ts +3 -7
  278. package/login/index.js +1 -5
  279. package/login/index.js.map +1 -1
  280. package/login/lib/kcClsx.d.ts +9 -0
  281. package/login/lib/kcClsx.js +130 -0
  282. package/login/lib/kcClsx.js.map +1 -0
  283. package/login/lib/useDownloadTerms.d.ts +12 -3
  284. package/login/lib/useDownloadTerms.js +16 -21
  285. package/login/lib/useDownloadTerms.js.map +1 -1
  286. package/login/lib/useUserProfileForm.d.ts +18 -6
  287. package/login/lib/useUserProfileForm.js +276 -195
  288. package/login/lib/useUserProfileForm.js.map +1 -1
  289. package/login/pages/Code.d.ts +1 -1
  290. package/login/pages/Code.js +3 -3
  291. package/login/pages/Code.js.map +1 -1
  292. package/login/pages/DeleteAccountConfirm.d.ts +1 -1
  293. package/login/pages/DeleteAccountConfirm.js +7 -4
  294. package/login/pages/DeleteAccountConfirm.js.map +1 -1
  295. package/login/pages/DeleteCredential.d.ts +1 -1
  296. package/login/pages/DeleteCredential.js +3 -4
  297. package/login/pages/DeleteCredential.js.map +1 -1
  298. package/login/pages/Error.d.ts +1 -1
  299. package/login/pages/Error.js +1 -1
  300. package/login/pages/Error.js.map +1 -1
  301. package/login/pages/FrontchannelLogout.d.ts +1 -1
  302. package/login/pages/FrontchannelLogout.js +1 -1
  303. package/login/pages/FrontchannelLogout.js.map +1 -1
  304. package/login/pages/IdpReviewUserProfile.d.ts +3 -2
  305. package/login/pages/IdpReviewUserProfile.js +4 -5
  306. package/login/pages/IdpReviewUserProfile.js.map +1 -1
  307. package/login/pages/Info.d.ts +1 -1
  308. package/login/pages/Info.js +1 -1
  309. package/login/pages/Info.js.map +1 -1
  310. package/login/pages/Login.d.ts +1 -1
  311. package/login/pages/Login.js +7 -7
  312. package/login/pages/Login.js.map +1 -1
  313. package/login/pages/LoginConfigTotp.d.ts +1 -1
  314. package/login/pages/LoginConfigTotp.js +6 -7
  315. package/login/pages/LoginConfigTotp.js.map +1 -1
  316. package/login/pages/LoginIdpLinkConfirm.d.ts +1 -1
  317. package/login/pages/LoginIdpLinkConfirm.js +3 -4
  318. package/login/pages/LoginIdpLinkConfirm.js.map +1 -1
  319. package/login/pages/LoginIdpLinkEmail.d.ts +2 -2
  320. package/login/pages/LoginIdpLinkEmail.js +1 -1
  321. package/login/pages/LoginIdpLinkEmail.js.map +1 -1
  322. package/login/pages/LoginOauth2DeviceVerifyUserCode.d.ts +3 -3
  323. package/login/pages/LoginOauth2DeviceVerifyUserCode.js +3 -4
  324. package/login/pages/LoginOauth2DeviceVerifyUserCode.js.map +1 -1
  325. package/login/pages/LoginOauthGrant.d.ts +3 -3
  326. package/login/pages/LoginOauthGrant.js +4 -5
  327. package/login/pages/LoginOauthGrant.js.map +1 -1
  328. package/login/pages/LoginOtp.d.ts +1 -1
  329. package/login/pages/LoginOtp.js +3 -4
  330. package/login/pages/LoginOtp.js.map +1 -1
  331. package/login/pages/LoginPageExpired.d.ts +1 -1
  332. package/login/pages/LoginPageExpired.js +1 -1
  333. package/login/pages/LoginPageExpired.js.map +1 -1
  334. package/login/pages/LoginPassword.d.ts +1 -1
  335. package/login/pages/LoginPassword.js +6 -6
  336. package/login/pages/LoginPassword.js.map +1 -1
  337. package/login/pages/LoginRecoveryAuthnCodeConfig.d.ts +1 -1
  338. package/login/pages/LoginRecoveryAuthnCodeConfig.js +16 -16
  339. package/login/pages/LoginRecoveryAuthnCodeConfig.js.map +1 -1
  340. package/login/pages/LoginRecoveryAuthnCodeInput.d.ts +1 -1
  341. package/login/pages/LoginRecoveryAuthnCodeInput.js +3 -4
  342. package/login/pages/LoginRecoveryAuthnCodeInput.js.map +1 -1
  343. package/login/pages/LoginResetOtp.d.ts +1 -1
  344. package/login/pages/LoginResetOtp.js +3 -4
  345. package/login/pages/LoginResetOtp.js.map +1 -1
  346. package/login/pages/LoginResetPassword.d.ts +1 -1
  347. package/login/pages/LoginResetPassword.js +4 -5
  348. package/login/pages/LoginResetPassword.js.map +1 -1
  349. package/login/pages/LoginUpdatePassword.d.ts +1 -1
  350. package/login/pages/LoginUpdatePassword.js +7 -8
  351. package/login/pages/LoginUpdatePassword.js.map +1 -1
  352. package/login/pages/LoginUpdateProfile.d.ts +4 -3
  353. package/login/pages/LoginUpdateProfile.js +5 -11
  354. package/login/pages/LoginUpdateProfile.js.map +1 -1
  355. package/login/pages/LoginUsername.d.ts +1 -1
  356. package/login/pages/LoginUsername.js +5 -5
  357. package/login/pages/LoginUsername.js.map +1 -1
  358. package/login/pages/LoginVerifyEmail.d.ts +1 -1
  359. package/login/pages/LoginVerifyEmail.js +1 -1
  360. package/login/pages/LoginVerifyEmail.js.map +1 -1
  361. package/login/pages/LoginX509Info.d.ts +1 -1
  362. package/login/pages/LoginX509Info.js +3 -4
  363. package/login/pages/LoginX509Info.js.map +1 -1
  364. package/login/pages/LogoutConfirm.d.ts +1 -1
  365. package/login/pages/LogoutConfirm.js +3 -4
  366. package/login/pages/LogoutConfirm.js.map +1 -1
  367. package/login/pages/PageProps.d.ts +3 -5
  368. package/login/pages/Register.d.ts +3 -2
  369. package/login/pages/Register.js +7 -17
  370. package/login/pages/Register.js.map +1 -1
  371. package/login/pages/SamlPostForm.d.ts +1 -1
  372. package/login/pages/SamlPostForm.js +1 -1
  373. package/login/pages/SamlPostForm.js.map +1 -1
  374. package/login/pages/SelectAuthenticator.d.ts +2 -2
  375. package/login/pages/SelectAuthenticator.js +3 -7
  376. package/login/pages/SelectAuthenticator.js.map +1 -1
  377. package/login/pages/Terms.d.ts +1 -1
  378. package/login/pages/Terms.js +6 -7
  379. package/login/pages/Terms.js.map +1 -1
  380. package/login/pages/UpdateEmail.d.ts +2 -1
  381. package/login/pages/UpdateEmail.js +6 -12
  382. package/login/pages/UpdateEmail.js.map +1 -1
  383. package/login/pages/WebauthnAuthenticate.d.ts +1 -1
  384. package/login/pages/WebauthnAuthenticate.js +25 -22
  385. package/login/pages/WebauthnAuthenticate.js.map +1 -1
  386. package/login/pages/WebauthnError.d.ts +1 -1
  387. package/login/pages/WebauthnError.js +4 -5
  388. package/login/pages/WebauthnError.js.map +1 -1
  389. package/login/pages/WebauthnRegister.d.ts +1 -1
  390. package/login/pages/WebauthnRegister.js +15 -16
  391. package/login/pages/WebauthnRegister.js.map +1 -1
  392. package/package.json +241 -589
  393. package/src/PUBLIC_URL.ts +5 -2
  394. package/src/account/{Fallback.tsx → DefaultPage.tsx} +7 -4
  395. package/src/account/{kcContext → KcContext}/KcContext.ts +94 -48
  396. package/src/account/KcContext/getKcContextMock.ts +69 -0
  397. package/src/account/KcContext/index.ts +2 -0
  398. package/src/account/KcContext/kcContextMocks.ts +199 -0
  399. package/src/account/Template.tsx +12 -14
  400. package/src/account/TemplateProps.ts +4 -5
  401. package/src/account/i18n/baseMessages/ar.ts +3 -1
  402. package/src/account/i18n/baseMessages/ca.ts +3 -1
  403. package/src/account/i18n/baseMessages/cs.ts +3 -1
  404. package/src/account/i18n/baseMessages/da.ts +3 -1
  405. package/src/account/i18n/baseMessages/de.ts +3 -1
  406. package/src/account/i18n/baseMessages/el.ts +3 -1
  407. package/src/account/i18n/baseMessages/en.ts +3 -1
  408. package/src/account/i18n/baseMessages/es.ts +3 -1
  409. package/src/account/i18n/baseMessages/fa.ts +3 -1
  410. package/src/account/i18n/baseMessages/fi.ts +3 -1
  411. package/src/account/i18n/baseMessages/fr.ts +3 -1
  412. package/src/account/i18n/baseMessages/hu.ts +3 -1
  413. package/src/account/i18n/baseMessages/it.ts +3 -1
  414. package/src/account/i18n/baseMessages/ja.ts +3 -1
  415. package/src/account/i18n/baseMessages/lt.ts +3 -1
  416. package/src/account/i18n/baseMessages/lv.ts +3 -1
  417. package/src/account/i18n/baseMessages/nl.ts +3 -1
  418. package/src/account/i18n/baseMessages/no.ts +3 -1
  419. package/src/account/i18n/baseMessages/pl.ts +3 -1
  420. package/src/account/i18n/baseMessages/pt-BR.ts +3 -1
  421. package/src/account/i18n/baseMessages/ru.ts +3 -1
  422. package/src/account/i18n/baseMessages/sk.ts +3 -1
  423. package/src/account/i18n/baseMessages/sv.ts +3 -1
  424. package/src/account/i18n/baseMessages/th.ts +3 -1
  425. package/src/account/i18n/baseMessages/tr.ts +3 -1
  426. package/src/account/i18n/baseMessages/uk.ts +3 -1
  427. package/src/account/i18n/baseMessages/zh-CN.ts +3 -1
  428. package/src/account/i18n/i18n.tsx +230 -137
  429. package/src/account/i18n/index.ts +5 -1
  430. package/src/account/index.ts +3 -10
  431. package/src/account/lib/kcClsx.ts +25 -0
  432. package/src/account/pages/Account.tsx +12 -18
  433. package/src/account/pages/Applications.tsx +10 -11
  434. package/src/account/pages/FederatedIdentity.tsx +58 -0
  435. package/src/account/pages/Log.tsx +5 -5
  436. package/src/account/pages/PageProps.ts +4 -6
  437. package/src/account/pages/Password.tsx +17 -19
  438. package/src/account/pages/Sessions.tsx +5 -9
  439. package/src/account/pages/Totp.tsx +39 -54
  440. package/src/bin/add-story.ts +109 -0
  441. package/src/bin/copy-keycloak-resources-to-public.ts +7 -106
  442. package/src/bin/download-keycloak-default-theme.ts +63 -0
  443. package/src/bin/eject-page.ts +258 -0
  444. package/src/bin/initialize-email-theme.ts +39 -30
  445. package/src/bin/keycloakify/buildJars/buildJar.ts +198 -78
  446. package/src/bin/keycloakify/buildJars/buildJars.ts +45 -27
  447. package/src/bin/keycloakify/buildJars/extensionVersions.ts +2 -1
  448. package/src/bin/keycloakify/buildJars/generatePom.ts +19 -11
  449. package/src/bin/keycloakify/buildJars/getKeycloakVersionRangeForJar.ts +73 -21
  450. package/src/bin/keycloakify/generateFtl/ftl_object_to_js_code_declaring_an_object.ftl +54 -31
  451. package/src/bin/keycloakify/generateFtl/generateFtl.ts +72 -23
  452. package/src/bin/keycloakify/generateFtl/index.ts +0 -1
  453. package/src/bin/keycloakify/generateSrcMainResources/bringInAccountV1.ts +90 -0
  454. package/src/bin/keycloakify/{generateTheme → generateSrcMainResources}/generateMessageProperties.ts +32 -44
  455. package/src/bin/keycloakify/generateSrcMainResources/generateSrcMainResources.ts +34 -0
  456. package/src/bin/keycloakify/generateSrcMainResources/generateSrcMainResourcesForMainTheme.ts +320 -0
  457. package/src/bin/keycloakify/generateSrcMainResources/generateSrcMainResourcesForThemeVariant.ts +80 -0
  458. package/src/bin/keycloakify/generateSrcMainResources/index.ts +1 -0
  459. package/src/bin/keycloakify/{generateTheme → generateSrcMainResources}/readExtraPageNames.ts +21 -8
  460. package/src/bin/keycloakify/generateSrcMainResources/readFieldNameUsage.ts +83 -0
  461. package/src/bin/keycloakify/generateStartKeycloakTestingContainer.ts +27 -13
  462. package/src/bin/keycloakify/index.ts +0 -7
  463. package/src/bin/keycloakify/keycloakify.ts +79 -72
  464. package/src/bin/keycloakify/replacers/replaceImportsInCssCode.ts +29 -10
  465. package/src/bin/keycloakify/replacers/replaceImportsInInlineCssCode.ts +13 -9
  466. package/src/bin/keycloakify/replacers/replaceImportsInJsCode/replaceImportsInJsCode.ts +14 -11
  467. package/src/bin/keycloakify/replacers/replaceImportsInJsCode/vite.ts +32 -14
  468. package/src/bin/keycloakify/replacers/replaceImportsInJsCode/webpack.ts +54 -16
  469. package/src/bin/main.ts +241 -0
  470. package/src/bin/shared/KeycloakVersionRange.ts +9 -0
  471. package/src/bin/shared/buildContext.ts +324 -0
  472. package/src/bin/{keycloakify/generateFtl/pageId.ts → shared/constants.ts} +31 -1
  473. package/src/bin/shared/copyKeycloakResourcesToPublic.ts +104 -0
  474. package/src/bin/shared/downloadKeycloakDefaultTheme.ts +207 -0
  475. package/src/bin/shared/downloadKeycloakStaticResources.ts +53 -0
  476. package/src/bin/shared/generateKcGenTs.ts +71 -0
  477. package/src/bin/shared/getJarFileBasename.ts +11 -0
  478. package/src/bin/{getThemeSrcDirPath.ts → shared/getThemeSrcDirPath.ts} +9 -6
  479. package/src/bin/shared/metaInfKeycloakThemes.ts +61 -0
  480. package/src/bin/shared/promptKeycloakVersion.ts +125 -0
  481. package/src/bin/start-keycloak/appBuild.ts +129 -0
  482. package/src/bin/start-keycloak/index.ts +1 -0
  483. package/src/bin/start-keycloak/keycloakifyBuild.ts +41 -0
  484. package/src/bin/start-keycloak/myrealm-realm-23.json +2142 -0
  485. package/src/bin/start-keycloak/myrealm-realm-24.json +2318 -0
  486. package/src/bin/start-keycloak/start-keycloak.ts +492 -0
  487. package/src/bin/tools/SemVer.ts +32 -13
  488. package/src/bin/tools/String.prototype.replaceAll.ts +9 -2
  489. package/src/bin/tools/crawl.ts +4 -1
  490. package/src/bin/tools/crc32.ts +42 -24
  491. package/src/bin/tools/downloadAndExtractArchive/downloadAndExtractArchive.ts +262 -0
  492. package/src/bin/tools/downloadAndExtractArchive/fetchProxyOptions.ts +96 -0
  493. package/src/bin/tools/downloadAndExtractArchive/index.ts +1 -0
  494. package/src/bin/tools/escapeStringForPropertiesFile.ts +64 -0
  495. package/src/bin/tools/extractArchive.ts +140 -0
  496. package/src/bin/tools/fetchProxyOptions.ts +31 -8
  497. package/src/bin/tools/fs.rmSync.ts +4 -4
  498. package/src/bin/tools/getAbsoluteAndInOsFormatPath.ts +17 -2
  499. package/src/bin/tools/getNpmWorkspaceRootDirPath.ts +73 -0
  500. package/src/bin/tools/octokit-addons/getLatestsSemVersionedTag.ts +8 -2
  501. package/src/bin/tools/octokit-addons/listTags.ts +15 -4
  502. package/src/bin/tools/partitionPromiseSettledResults.ts +12 -3
  503. package/src/bin/tools/{readThisNpmProjectVersion.ts → readThisNpmPackageVersion.ts} +6 -2
  504. package/src/bin/tools/transformCodebase.ts +29 -10
  505. package/src/bin/tools/trimIndent.ts +4 -1
  506. package/src/bin/tsconfig.json +4 -3
  507. package/src/bin/update-kc-gen.ts +13 -0
  508. package/src/lib/getKcClsx.ts +89 -0
  509. package/src/login/{Fallback.tsx → DefaultPage.tsx} +6 -5
  510. package/src/login/{kcContext → KcContext}/KcContext.ts +58 -27
  511. package/src/login/KcContext/getKcContextMock.ts +69 -0
  512. package/src/login/KcContext/index.ts +8 -0
  513. package/src/login/KcContext/kcContextMocks.ts +565 -0
  514. package/src/login/Template.tsx +52 -55
  515. package/src/login/TemplateProps.ts +3 -6
  516. package/src/login/UserProfileFormFields.tsx +127 -194
  517. package/src/login/i18n/baseMessages/ar.ts +10 -1
  518. package/src/login/i18n/baseMessages/ca.ts +11 -2
  519. package/src/login/i18n/baseMessages/cs.ts +10 -1
  520. package/src/login/i18n/baseMessages/da.ts +10 -1
  521. package/src/login/i18n/baseMessages/de.ts +10 -1
  522. package/src/login/i18n/baseMessages/el.ts +10 -2
  523. package/src/login/i18n/baseMessages/en.ts +11 -2
  524. package/src/login/i18n/baseMessages/es.ts +11 -2
  525. package/src/login/i18n/baseMessages/fa.ts +10 -2
  526. package/src/login/i18n/baseMessages/fi.ts +10 -1
  527. package/src/login/i18n/baseMessages/fr.ts +10 -1
  528. package/src/login/i18n/baseMessages/hu.ts +11 -2
  529. package/src/login/i18n/baseMessages/it.ts +10 -1
  530. package/src/login/i18n/baseMessages/ja.ts +10 -1
  531. package/src/login/i18n/baseMessages/lt.ts +10 -1
  532. package/src/login/i18n/baseMessages/lv.ts +10 -1
  533. package/src/login/i18n/baseMessages/nl.ts +10 -1
  534. package/src/login/i18n/baseMessages/no.ts +10 -1
  535. package/src/login/i18n/baseMessages/pl.ts +10 -1
  536. package/src/login/i18n/baseMessages/pt-BR.ts +10 -1
  537. package/src/login/i18n/baseMessages/ru.ts +10 -1
  538. package/src/login/i18n/baseMessages/sk.ts +10 -1
  539. package/src/login/i18n/baseMessages/sv.ts +10 -1
  540. package/src/login/i18n/baseMessages/th.ts +10 -1
  541. package/src/login/i18n/baseMessages/tr.ts +10 -1
  542. package/src/login/i18n/baseMessages/uk.ts +10 -1
  543. package/src/login/i18n/baseMessages/zh-CN.ts +11 -2
  544. package/src/login/i18n/i18n.tsx +248 -139
  545. package/src/login/i18n/index.ts +5 -1
  546. package/src/login/index.ts +3 -10
  547. package/src/login/lib/kcClsx.ts +143 -0
  548. package/src/login/lib/useDownloadTerms.ts +32 -32
  549. package/src/login/lib/useUserProfileForm.tsx +360 -233
  550. package/src/login/pages/Code.tsx +8 -5
  551. package/src/login/pages/DeleteAccountConfirm.tsx +15 -10
  552. package/src/login/pages/DeleteCredential.tsx +9 -7
  553. package/src/login/pages/Error.tsx +9 -2
  554. package/src/login/pages/FrontchannelLogout.tsx +6 -3
  555. package/src/login/pages/IdpReviewUserProfile.tsx +19 -20
  556. package/src/login/pages/Info.tsx +5 -2
  557. package/src/login/pages/Login.tsx +34 -53
  558. package/src/login/pages/LoginConfigTotp.tsx +28 -39
  559. package/src/login/pages/LoginIdpLinkConfirm.tsx +7 -18
  560. package/src/login/pages/LoginIdpLinkEmail.tsx +9 -3
  561. package/src/login/pages/LoginOauth2DeviceVerifyUserCode.tsx +24 -23
  562. package/src/login/pages/LoginOauthGrant.tsx +14 -20
  563. package/src/login/pages/LoginOtp.tsx +27 -30
  564. package/src/login/pages/LoginPageExpired.tsx +2 -2
  565. package/src/login/pages/LoginPassword.tsx +21 -31
  566. package/src/login/pages/LoginRecoveryAuthnCodeConfig.tsx +34 -34
  567. package/src/login/pages/LoginRecoveryAuthnCodeInput.tsx +19 -22
  568. package/src/login/pages/LoginResetOtp.tsx +19 -22
  569. package/src/login/pages/LoginResetPassword.tsx +21 -24
  570. package/src/login/pages/LoginUpdatePassword.tsx +40 -50
  571. package/src/login/pages/LoginUpdateProfile.tsx +31 -30
  572. package/src/login/pages/LoginUsername.tsx +23 -34
  573. package/src/login/pages/LoginVerifyEmail.tsx +5 -2
  574. package/src/login/pages/LoginX509Info.tsx +24 -33
  575. package/src/login/pages/LogoutConfirm.tsx +8 -14
  576. package/src/login/pages/PageProps.ts +3 -5
  577. package/src/login/pages/Register.tsx +35 -47
  578. package/src/login/pages/SamlPostForm.tsx +2 -2
  579. package/src/login/pages/SelectAuthenticator.tsx +23 -24
  580. package/src/login/pages/Terms.tsx +18 -18
  581. package/src/login/pages/UpdateEmail.tsx +29 -32
  582. package/src/login/pages/WebauthnAuthenticate.tsx +40 -44
  583. package/src/login/pages/WebauthnError.tsx +15 -19
  584. package/src/login/pages/WebauthnRegister.tsx +28 -37
  585. package/src/tools/Array.prototype.every.ts +4 -1
  586. package/src/tools/ExtractAfterStartingWith.ts +4 -0
  587. package/src/tools/LazyOrNot.ts +3 -1
  588. package/src/tools/Object.fromEntries.ts +23 -0
  589. package/src/tools/StatefulObservable/README.md +16 -0
  590. package/src/tools/StatefulObservable/StatefulObservable.ts +58 -0
  591. package/src/tools/StatefulObservable/hooks/index.ts +2 -0
  592. package/src/tools/StatefulObservable/hooks/useObservable.ts +25 -0
  593. package/src/tools/StatefulObservable/hooks/useRerenderOnChange.ts +19 -0
  594. package/src/tools/StatefulObservable/index.ts +2 -0
  595. package/src/tools/ValueOf.ts +2 -0
  596. package/src/tools/clsx.ts +6 -42
  597. package/src/tools/clsx_withTransform.ts +55 -0
  598. package/src/tools/deepAssign.ts +57 -19
  599. package/src/tools/formatNumber.ts +4 -1
  600. package/src/tools/structuredCloneButFunctions.ts +24 -0
  601. package/src/tools/useConstCallback.ts +3 -1
  602. package/src/tools/useInsertLinkTags.ts +78 -74
  603. package/src/tools/useInsertScriptTags.ts +69 -73
  604. package/src/tools/useOnFirstMount.ts +18 -0
  605. package/src/tools/useSetClassName.ts +4 -1
  606. package/src/vite-plugin/tsconfig.json +2 -1
  607. package/src/vite-plugin/vite-plugin.ts +81 -61
  608. package/stories/account/pages/Account.stories.tsx +18 -0
  609. package/stories/account/pages/FederatedIdentity.stories.tsx +38 -0
  610. package/stories/account/pages/Log.stories.tsx +356 -0
  611. package/stories/account/pages/Password.stories.tsx +28 -0
  612. package/stories/account/pages/Sessions.stories.tsx +59 -0
  613. package/stories/account/pages/Totp.stories.tsx +182 -0
  614. package/stories/login/pages/Code.stories.tsx +18 -0
  615. package/stories/login/pages/DeleteAccountConfirm.stories.tsx +18 -0
  616. package/stories/login/pages/DeleteCredential.stories.tsx +18 -0
  617. package/stories/login/pages/Error.stories.tsx +28 -0
  618. package/stories/login/pages/FrontchannelLogout.stories.tsx +18 -0
  619. package/stories/login/pages/IdpReviewUserProfile.stories.tsx +18 -0
  620. package/stories/login/pages/Info.stories.tsx +52 -0
  621. package/stories/login/pages/Login.stories.tsx +182 -0
  622. package/stories/login/pages/LoginConfigTotp.stories.tsx +43 -0
  623. package/stories/login/pages/LoginDeviceVerifyUserCode.stories.tsx +18 -0
  624. package/stories/login/pages/LoginIdpLinkConfirm.stories.tsx +18 -0
  625. package/stories/login/pages/LoginIdpLinkEmail.stories.tsx +18 -0
  626. package/stories/login/pages/LoginOauth2DeviceVerifyUserCode.stories.tsx +18 -0
  627. package/stories/login/pages/LoginOauthGrant.stories.tsx +18 -0
  628. package/stories/login/pages/LoginOtp.stories.tsx +18 -0
  629. package/stories/login/pages/LoginPageExpired.stories.tsx +18 -0
  630. package/stories/login/pages/LoginPassword.stories.tsx +18 -0
  631. package/stories/login/pages/LoginRecoveryAuthnCodeConfig.stories.tsx +18 -0
  632. package/stories/login/pages/LoginRecoveryAuthnCodeInput.stories.tsx +18 -0
  633. package/stories/login/pages/LoginResetOtp.stories.tsx +18 -0
  634. package/stories/login/pages/LoginResetPassword.stories.tsx +31 -0
  635. package/stories/login/pages/LoginUpdatePassword.stories.tsx +18 -0
  636. package/stories/login/pages/LoginUpdateProfile.stories.tsx +18 -0
  637. package/stories/login/pages/LoginUsername.stories.tsx +31 -0
  638. package/stories/login/pages/LoginVerifyEmail.stories.tsx +18 -0
  639. package/stories/login/pages/LoginX509Info.stories.tsx +18 -0
  640. package/stories/login/pages/LogoutConfirm.stories.tsx +18 -0
  641. package/stories/login/pages/Register.stories.tsx +114 -0
  642. package/stories/login/pages/SamlPostForm.stories.tsx +18 -0
  643. package/stories/login/pages/SelectAuthenticator.stories.tsx +43 -0
  644. package/stories/login/pages/Terms.stories.tsx +42 -0
  645. package/stories/login/pages/UpdateEmail.stories.tsx +18 -0
  646. package/stories/login/pages/WebauthnAuthenticate.stories.tsx +18 -0
  647. package/stories/login/pages/WebauthnError.stories.tsx +18 -0
  648. package/stories/login/pages/WebauthnRegister.stories.tsx +18 -0
  649. package/tools/Array.prototype.every.js +2 -1
  650. package/tools/Array.prototype.every.js.map +1 -1
  651. package/tools/ExtractAfterStartingWith.d.ts +1 -0
  652. package/tools/ExtractAfterStartingWith.js +2 -0
  653. package/tools/ExtractAfterStartingWith.js.map +1 -0
  654. package/tools/Object.fromEntries.d.ts +1 -0
  655. package/tools/Object.fromEntries.js +17 -0
  656. package/tools/Object.fromEntries.js.map +1 -0
  657. package/tools/StatefulObservable/StatefulObservable.d.ts +8 -0
  658. package/tools/StatefulObservable/StatefulObservable.js +36 -0
  659. package/tools/StatefulObservable/StatefulObservable.js.map +1 -0
  660. package/tools/StatefulObservable/hooks/index.d.ts +2 -0
  661. package/tools/StatefulObservable/hooks/index.js +3 -0
  662. package/tools/StatefulObservable/hooks/index.js.map +1 -0
  663. package/tools/StatefulObservable/hooks/useObservable.d.ts +8 -0
  664. package/tools/StatefulObservable/hooks/useObservable.js +17 -0
  665. package/tools/StatefulObservable/hooks/useObservable.js.map +1 -0
  666. package/tools/StatefulObservable/hooks/useRerenderOnChange.d.ts +5 -0
  667. package/tools/StatefulObservable/hooks/useRerenderOnChange.js +14 -0
  668. package/tools/StatefulObservable/hooks/useRerenderOnChange.js.map +1 -0
  669. package/tools/StatefulObservable/index.d.ts +2 -0
  670. package/tools/StatefulObservable/index.js +3 -0
  671. package/tools/StatefulObservable/index.js.map +1 -0
  672. package/tools/ValueOf.d.ts +2 -0
  673. package/tools/ValueOf.js +2 -0
  674. package/tools/ValueOf.js.map +1 -0
  675. package/tools/clsx.d.ts +3 -2
  676. package/tools/clsx.js +5 -41
  677. package/tools/clsx.js.map +1 -1
  678. package/tools/clsx_withTransform.d.ts +5 -0
  679. package/tools/clsx_withTransform.js +43 -0
  680. package/tools/clsx_withTransform.js.map +1 -0
  681. package/tools/deepAssign.d.ts +1 -0
  682. package/tools/deepAssign.js +41 -16
  683. package/tools/deepAssign.js.map +1 -1
  684. package/tools/formatNumber.js.map +1 -1
  685. package/tools/structuredCloneButFunctions.d.ts +7 -0
  686. package/tools/structuredCloneButFunctions.js +19 -0
  687. package/tools/structuredCloneButFunctions.js.map +1 -0
  688. package/tools/useConstCallback.js.map +1 -1
  689. package/tools/useInsertLinkTags.d.ts +11 -6
  690. package/tools/useInsertLinkTags.js +53 -52
  691. package/tools/useInsertLinkTags.js.map +1 -1
  692. package/tools/useInsertScriptTags.d.ts +15 -6
  693. package/tools/useInsertScriptTags.js +56 -61
  694. package/tools/useInsertScriptTags.js.map +1 -1
  695. package/tools/useOnFirstMount.d.ts +2 -0
  696. package/tools/useOnFirstMount.js +15 -0
  697. package/tools/useOnFirstMount.js.map +1 -0
  698. package/tools/useSetClassName.js.map +1 -1
  699. package/vite-plugin/index.js +51304 -5
  700. package/vite-plugin/vite-plugin.d.ts +3 -4
  701. package/account/Fallback.d.ts +0 -5
  702. package/account/Fallback.js.map +0 -1
  703. package/account/kcContext/KcContext.js.map +0 -1
  704. package/account/kcContext/createGetKcContext.d.ts +0 -19
  705. package/account/kcContext/createGetKcContext.js +0 -73
  706. package/account/kcContext/createGetKcContext.js.map +0 -1
  707. package/account/kcContext/getKcContext.d.ts +0 -13
  708. package/account/kcContext/getKcContext.js +0 -13
  709. package/account/kcContext/getKcContext.js.map +0 -1
  710. package/account/kcContext/getKcContextFromWindow.d.ts +0 -8
  711. package/account/kcContext/getKcContextFromWindow.js +0 -5
  712. package/account/kcContext/getKcContextFromWindow.js.map +0 -1
  713. package/account/kcContext/index.d.ts +0 -1
  714. package/account/kcContext/index.js +0 -2
  715. package/account/kcContext/index.js.map +0 -1
  716. package/account/kcContext/kcContextMocks.js +0 -207
  717. package/account/kcContext/kcContextMocks.js.map +0 -1
  718. package/account/lib/useGetClassName.d.ts +0 -7
  719. package/account/lib/useGetClassName.js +0 -19
  720. package/account/lib/useGetClassName.js.map +0 -1
  721. package/bin/constants.d.ts +0 -10
  722. package/bin/constants.js +0 -13
  723. package/bin/constants.js.map +0 -1
  724. package/bin/copy-keycloak-resources-to-public.d.ts +0 -14
  725. package/bin/copy-keycloak-resources-to-public.js +0 -216
  726. package/bin/copy-keycloak-resources-to-public.js.map +0 -1
  727. package/bin/download-builtin-keycloak-theme.d.ts +0 -10
  728. package/bin/download-builtin-keycloak-theme.js +0 -352
  729. package/bin/download-builtin-keycloak-theme.js.map +0 -1
  730. package/bin/downloadAndUnzip.d.ts +0 -16
  731. package/bin/downloadAndUnzip.js +0 -255
  732. package/bin/downloadAndUnzip.js.map +0 -1
  733. package/bin/eject-keycloak-page.d.ts +0 -2
  734. package/bin/eject-keycloak-page.js +0 -132
  735. package/bin/eject-keycloak-page.js.map +0 -1
  736. package/bin/getThemeSrcDirPath.d.ts +0 -6
  737. package/bin/getThemeSrcDirPath.js +0 -123
  738. package/bin/getThemeSrcDirPath.js.map +0 -1
  739. package/bin/initialize-email-theme.d.ts +0 -2
  740. package/bin/initialize-email-theme.js +0 -121
  741. package/bin/initialize-email-theme.js.map +0 -1
  742. package/bin/keycloakify/buildJars/buildJar.d.ts +0 -14
  743. package/bin/keycloakify/buildJars/buildJar.js +0 -224
  744. package/bin/keycloakify/buildJars/buildJar.js.map +0 -1
  745. package/bin/keycloakify/buildJars/buildJars.d.ts +0 -10
  746. package/bin/keycloakify/buildJars/buildJars.js +0 -95
  747. package/bin/keycloakify/buildJars/buildJars.js.map +0 -1
  748. package/bin/keycloakify/buildJars/extensionVersions.d.ts +0 -12
  749. package/bin/keycloakify/buildJars/extensionVersions.js +0 -7
  750. package/bin/keycloakify/buildJars/extensionVersions.js.map +0 -1
  751. package/bin/keycloakify/buildJars/generatePom.d.ts +0 -13
  752. package/bin/keycloakify/buildJars/generatePom.js +0 -95
  753. package/bin/keycloakify/buildJars/generatePom.js.map +0 -1
  754. package/bin/keycloakify/buildJars/getKeycloakVersionRangeForJar.d.ts +0 -6
  755. package/bin/keycloakify/buildJars/getKeycloakVersionRangeForJar.js +0 -35
  756. package/bin/keycloakify/buildJars/getKeycloakVersionRangeForJar.js.map +0 -1
  757. package/bin/keycloakify/buildJars/index.d.ts +0 -1
  758. package/bin/keycloakify/buildJars/index.js +0 -18
  759. package/bin/keycloakify/buildJars/index.js.map +0 -1
  760. package/bin/keycloakify/buildOptions/UserProvidedBuildOptions.d.ts +0 -35
  761. package/bin/keycloakify/buildOptions/UserProvidedBuildOptions.js +0 -14
  762. package/bin/keycloakify/buildOptions/UserProvidedBuildOptions.js.map +0 -1
  763. package/bin/keycloakify/buildOptions/buildOptions.d.ts +0 -25
  764. package/bin/keycloakify/buildOptions/buildOptions.js +0 -178
  765. package/bin/keycloakify/buildOptions/buildOptions.js.map +0 -1
  766. package/bin/keycloakify/buildOptions/getCacheDirPath.d.ts +0 -5
  767. package/bin/keycloakify/buildOptions/getCacheDirPath.js +0 -22
  768. package/bin/keycloakify/buildOptions/getCacheDirPath.js.map +0 -1
  769. package/bin/keycloakify/buildOptions/getNpmWorkspaceRootDirPath.d.ts +0 -5
  770. package/bin/keycloakify/buildOptions/getNpmWorkspaceRootDirPath.js +0 -86
  771. package/bin/keycloakify/buildOptions/getNpmWorkspaceRootDirPath.js.map +0 -1
  772. package/bin/keycloakify/buildOptions/getReactAppRootDirPath.d.ts +0 -5
  773. package/bin/keycloakify/buildOptions/getReactAppRootDirPath.js +0 -26
  774. package/bin/keycloakify/buildOptions/getReactAppRootDirPath.js.map +0 -1
  775. package/bin/keycloakify/buildOptions/index.d.ts +0 -1
  776. package/bin/keycloakify/buildOptions/index.js +0 -18
  777. package/bin/keycloakify/buildOptions/index.js.map +0 -1
  778. package/bin/keycloakify/buildOptions/parsedPackageJson.d.ts +0 -10
  779. package/bin/keycloakify/buildOptions/parsedPackageJson.js +0 -49
  780. package/bin/keycloakify/buildOptions/parsedPackageJson.js.map +0 -1
  781. package/bin/keycloakify/buildOptions/resolvedViteConfig.d.ts +0 -13
  782. package/bin/keycloakify/buildOptions/resolvedViteConfig.js +0 -77
  783. package/bin/keycloakify/buildOptions/resolvedViteConfig.js.map +0 -1
  784. package/bin/keycloakify/generateFtl/ftl_object_to_js_code_declaring_an_object.ftl +0 -521
  785. package/bin/keycloakify/generateFtl/generateFtl.d.ts +0 -23
  786. package/bin/keycloakify/generateFtl/generateFtl.js +0 -169
  787. package/bin/keycloakify/generateFtl/generateFtl.js.map +0 -1
  788. package/bin/keycloakify/generateFtl/index.d.ts +0 -2
  789. package/bin/keycloakify/generateFtl/index.js +0 -19
  790. package/bin/keycloakify/generateFtl/index.js.map +0 -1
  791. package/bin/keycloakify/generateFtl/pageId.js +0 -41
  792. package/bin/keycloakify/generateFtl/pageId.js.map +0 -1
  793. package/bin/keycloakify/generateStartKeycloakTestingContainer.d.ts +0 -13
  794. package/bin/keycloakify/generateStartKeycloakTestingContainer.js +0 -86
  795. package/bin/keycloakify/generateStartKeycloakTestingContainer.js.map +0 -1
  796. package/bin/keycloakify/generateTheme/bringInAccountV1.d.ts +0 -9
  797. package/bin/keycloakify/generateTheme/bringInAccountV1.js +0 -153
  798. package/bin/keycloakify/generateTheme/bringInAccountV1.js.map +0 -1
  799. package/bin/keycloakify/generateTheme/downloadKeycloakStaticResources.d.ts +0 -11
  800. package/bin/keycloakify/generateTheme/downloadKeycloakStaticResources.js +0 -102
  801. package/bin/keycloakify/generateTheme/downloadKeycloakStaticResources.js.map +0 -1
  802. package/bin/keycloakify/generateTheme/generateMessageProperties.d.ts +0 -8
  803. package/bin/keycloakify/generateTheme/generateMessageProperties.js +0 -271
  804. package/bin/keycloakify/generateTheme/generateMessageProperties.js.map +0 -1
  805. package/bin/keycloakify/generateTheme/generateSrcMainResources.d.ts +0 -21
  806. package/bin/keycloakify/generateTheme/generateSrcMainResources.js +0 -340
  807. package/bin/keycloakify/generateTheme/generateSrcMainResources.js.map +0 -1
  808. package/bin/keycloakify/generateTheme/generateTheme.d.ts +0 -13
  809. package/bin/keycloakify/generateTheme/generateTheme.js +0 -115
  810. package/bin/keycloakify/generateTheme/generateTheme.js.map +0 -1
  811. package/bin/keycloakify/generateTheme/generateThemeVariants.d.ts +0 -5
  812. package/bin/keycloakify/generateTheme/generateThemeVariants.js +0 -67
  813. package/bin/keycloakify/generateTheme/generateThemeVariants.js.map +0 -1
  814. package/bin/keycloakify/generateTheme/index.d.ts +0 -1
  815. package/bin/keycloakify/generateTheme/index.js +0 -18
  816. package/bin/keycloakify/generateTheme/index.js.map +0 -1
  817. package/bin/keycloakify/generateTheme/readExtraPageNames.d.ts +0 -5
  818. package/bin/keycloakify/generateTheme/readExtraPageNames.js +0 -105
  819. package/bin/keycloakify/generateTheme/readExtraPageNames.js.map +0 -1
  820. package/bin/keycloakify/generateTheme/readFieldNameUsage.d.ts +0 -7
  821. package/bin/keycloakify/generateTheme/readFieldNameUsage.js +0 -141
  822. package/bin/keycloakify/generateTheme/readFieldNameUsage.js.map +0 -1
  823. package/bin/keycloakify/index.d.ts +0 -2
  824. package/bin/keycloakify/index.js +0 -23
  825. package/bin/keycloakify/index.js.map +0 -1
  826. package/bin/keycloakify/keycloakify.d.ts +0 -1
  827. package/bin/keycloakify/keycloakify.js +0 -167
  828. package/bin/keycloakify/keycloakify.js.map +0 -1
  829. package/bin/keycloakify/replacers/replaceImportsInCssCode.d.ts +0 -15
  830. package/bin/keycloakify/replacers/replaceImportsInCssCode.js +0 -88
  831. package/bin/keycloakify/replacers/replaceImportsInCssCode.js.map +0 -1
  832. package/bin/keycloakify/replacers/replaceImportsInInlineCssCode.d.ts +0 -9
  833. package/bin/keycloakify/replacers/replaceImportsInInlineCssCode.js +0 -38
  834. package/bin/keycloakify/replacers/replaceImportsInInlineCssCode.js.map +0 -1
  835. package/bin/keycloakify/replacers/replaceImportsInJsCode/index.d.ts +0 -1
  836. package/bin/keycloakify/replacers/replaceImportsInJsCode/index.js +0 -18
  837. package/bin/keycloakify/replacers/replaceImportsInJsCode/index.js.map +0 -1
  838. package/bin/keycloakify/replacers/replaceImportsInJsCode/replaceImportsInJsCode.d.ts +0 -12
  839. package/bin/keycloakify/replacers/replaceImportsInJsCode/replaceImportsInJsCode.js +0 -70
  840. package/bin/keycloakify/replacers/replaceImportsInJsCode/replaceImportsInJsCode.js.map +0 -1
  841. package/bin/keycloakify/replacers/replaceImportsInJsCode/vite.d.ts +0 -13
  842. package/bin/keycloakify/replacers/replaceImportsInJsCode/vite.js +0 -95
  843. package/bin/keycloakify/replacers/replaceImportsInJsCode/vite.js.map +0 -1
  844. package/bin/keycloakify/replacers/replaceImportsInJsCode/webpack.d.ts +0 -12
  845. package/bin/keycloakify/replacers/replaceImportsInJsCode/webpack.js +0 -103
  846. package/bin/keycloakify/replacers/replaceImportsInJsCode/webpack.js.map +0 -1
  847. package/bin/promptKeycloakVersion.d.ts +0 -3
  848. package/bin/promptKeycloakVersion.js +0 -121
  849. package/bin/promptKeycloakVersion.js.map +0 -1
  850. package/bin/tools/OptionalIfCanBeUndefined.d.ts +0 -14
  851. package/bin/tools/OptionalIfCanBeUndefined.js +0 -3
  852. package/bin/tools/OptionalIfCanBeUndefined.js.map +0 -1
  853. package/bin/tools/SemVer.d.ts +0 -26
  854. package/bin/tools/SemVer.js +0 -119
  855. package/bin/tools/SemVer.js.map +0 -1
  856. package/bin/tools/String.prototype.replaceAll.d.ts +0 -1
  857. package/bin/tools/String.prototype.replaceAll.js +0 -29
  858. package/bin/tools/String.prototype.replaceAll.js.map +0 -1
  859. package/bin/tools/crawl.d.ts +0 -5
  860. package/bin/tools/crawl.js +0 -74
  861. package/bin/tools/crawl.js.map +0 -1
  862. package/bin/tools/crc32.d.ts +0 -9
  863. package/bin/tools/crc32.js +0 -64
  864. package/bin/tools/crc32.js.map +0 -1
  865. package/bin/tools/deflate.d.ts +0 -24
  866. package/bin/tools/deflate.js +0 -155
  867. package/bin/tools/deflate.js.map +0 -1
  868. package/bin/tools/fetchProxyOptions.d.ts +0 -5
  869. package/bin/tools/fetchProxyOptions.js +0 -172
  870. package/bin/tools/fetchProxyOptions.js.map +0 -1
  871. package/bin/tools/fs.existsAsync.d.ts +0 -1
  872. package/bin/tools/fs.existsAsync.js +0 -86
  873. package/bin/tools/fs.existsAsync.js.map +0 -1
  874. package/bin/tools/fs.rm.d.ts +0 -8
  875. package/bin/tools/fs.rm.js +0 -151
  876. package/bin/tools/fs.rm.js.map +0 -1
  877. package/bin/tools/fs.rmSync.d.ts +0 -8
  878. package/bin/tools/fs.rmSync.js +0 -58
  879. package/bin/tools/fs.rmSync.js.map +0 -1
  880. package/bin/tools/getAbsoluteAndInOsFormatPath.d.ts +0 -4
  881. package/bin/tools/getAbsoluteAndInOsFormatPath.js +0 -16
  882. package/bin/tools/getAbsoluteAndInOsFormatPath.js.map +0 -1
  883. package/bin/tools/getThisCodebaseRootDirPath.d.ts +0 -1
  884. package/bin/tools/getThisCodebaseRootDirPath.js +0 -43
  885. package/bin/tools/getThisCodebaseRootDirPath.js.map +0 -1
  886. package/bin/tools/isInside.d.ts +0 -4
  887. package/bin/tools/isInside.js +0 -10
  888. package/bin/tools/isInside.js.map +0 -1
  889. package/bin/tools/kebabCaseToSnakeCase.d.ts +0 -1
  890. package/bin/tools/kebabCaseToSnakeCase.js +0 -35
  891. package/bin/tools/kebabCaseToSnakeCase.js.map +0 -1
  892. package/bin/tools/logger.d.ts +0 -12
  893. package/bin/tools/logger.js +0 -23
  894. package/bin/tools/logger.js.map +0 -1
  895. package/bin/tools/octokit-addons/getLatestsSemVersionedTag.d.ts +0 -14
  896. package/bin/tools/octokit-addons/getLatestsSemVersionedTag.js +0 -119
  897. package/bin/tools/octokit-addons/getLatestsSemVersionedTag.js.map +0 -1
  898. package/bin/tools/octokit-addons/listTags.d.ts +0 -13
  899. package/bin/tools/octokit-addons/listTags.js +0 -154
  900. package/bin/tools/octokit-addons/listTags.js.map +0 -1
  901. package/bin/tools/partitionPromiseSettledResults.d.ts +0 -2
  902. package/bin/tools/partitionPromiseSettledResults.js +0 -41
  903. package/bin/tools/partitionPromiseSettledResults.js.map +0 -1
  904. package/bin/tools/readThisNpmProjectVersion.d.ts +0 -1
  905. package/bin/tools/readThisNpmProjectVersion.js +0 -37
  906. package/bin/tools/readThisNpmProjectVersion.js.map +0 -1
  907. package/bin/tools/tee.d.ts +0 -3
  908. package/bin/tools/tee.js +0 -37
  909. package/bin/tools/tee.js.map +0 -1
  910. package/bin/tools/transformCodebase.d.ts +0 -20
  911. package/bin/tools/transformCodebase.js +0 -97
  912. package/bin/tools/transformCodebase.js.map +0 -1
  913. package/bin/tools/trimIndent.d.ts +0 -5
  914. package/bin/tools/trimIndent.js +0 -82
  915. package/bin/tools/trimIndent.js.map +0 -1
  916. package/bin/tools/unzip.d.ts +0 -2
  917. package/bin/tools/unzip.js +0 -274
  918. package/bin/tools/unzip.js.map +0 -1
  919. package/index.d.ts +0 -1
  920. package/index.js +0 -2
  921. package/index.js.map +0 -1
  922. package/lib/isStorybook.d.ts +0 -1
  923. package/lib/isStorybook.js +0 -2
  924. package/lib/isStorybook.js.map +0 -1
  925. package/lib/keycloakJsAdapter.d.ts +0 -51
  926. package/lib/keycloakJsAdapter.js +0 -74
  927. package/lib/keycloakJsAdapter.js.map +0 -1
  928. package/lib/useGetClassName.d.ts +0 -10
  929. package/lib/useGetClassName.js +0 -14
  930. package/lib/useGetClassName.js.map +0 -1
  931. package/login/Fallback.js.map +0 -1
  932. package/login/kcContext/KcContext.js.map +0 -1
  933. package/login/kcContext/createGetKcContext.d.ts +0 -19
  934. package/login/kcContext/createGetKcContext.js +0 -109
  935. package/login/kcContext/createGetKcContext.js.map +0 -1
  936. package/login/kcContext/getKcContext.d.ts +0 -13
  937. package/login/kcContext/getKcContext.js +0 -13
  938. package/login/kcContext/getKcContext.js.map +0 -1
  939. package/login/kcContext/getKcContextFromWindow.d.ts +0 -8
  940. package/login/kcContext/getKcContextFromWindow.js +0 -5
  941. package/login/kcContext/getKcContextFromWindow.js.map +0 -1
  942. package/login/kcContext/index.d.ts +0 -1
  943. package/login/kcContext/index.js +0 -2
  944. package/login/kcContext/index.js.map +0 -1
  945. package/login/kcContext/kcContextMocks.js +0 -390
  946. package/login/kcContext/kcContextMocks.js.map +0 -1
  947. package/login/lib/useGetClassName.d.ts +0 -7
  948. package/login/lib/useGetClassName.js +0 -130
  949. package/login/lib/useGetClassName.js.map +0 -1
  950. package/src/account/kcContext/createGetKcContext.ts +0 -108
  951. package/src/account/kcContext/getKcContext.ts +0 -21
  952. package/src/account/kcContext/getKcContextFromWindow.ts +0 -11
  953. package/src/account/kcContext/index.ts +0 -1
  954. package/src/account/kcContext/kcContextMocks.ts +0 -254
  955. package/src/account/lib/useGetClassName.ts +0 -20
  956. package/src/bin/constants.ts +0 -13
  957. package/src/bin/download-builtin-keycloak-theme.ts +0 -290
  958. package/src/bin/downloadAndUnzip.ts +0 -203
  959. package/src/bin/eject-keycloak-page.ts +0 -64
  960. package/src/bin/keycloakify/buildOptions/UserProvidedBuildOptions.ts +0 -21
  961. package/src/bin/keycloakify/buildOptions/buildOptions.ts +0 -189
  962. package/src/bin/keycloakify/buildOptions/getCacheDirPath.ts +0 -25
  963. package/src/bin/keycloakify/buildOptions/getNpmWorkspaceRootDirPath.ts +0 -49
  964. package/src/bin/keycloakify/buildOptions/getReactAppRootDirPath.ts +0 -23
  965. package/src/bin/keycloakify/buildOptions/index.ts +0 -1
  966. package/src/bin/keycloakify/buildOptions/parsedPackageJson.ts +0 -32
  967. package/src/bin/keycloakify/buildOptions/resolvedViteConfig.ts +0 -74
  968. package/src/bin/keycloakify/generateTheme/bringInAccountV1.ts +0 -78
  969. package/src/bin/keycloakify/generateTheme/downloadKeycloakStaticResources.ts +0 -49
  970. package/src/bin/keycloakify/generateTheme/generateSrcMainResources.ts +0 -267
  971. package/src/bin/keycloakify/generateTheme/generateTheme.ts +0 -44
  972. package/src/bin/keycloakify/generateTheme/generateThemeVariants.ts +0 -50
  973. package/src/bin/keycloakify/generateTheme/index.ts +0 -1
  974. package/src/bin/keycloakify/generateTheme/readFieldNameUsage.ts +0 -55
  975. package/src/bin/promptKeycloakVersion.ts +0 -49
  976. package/src/bin/tools/logger.ts +0 -27
  977. package/src/bin/tools/unzip.ts +0 -141
  978. package/src/index.ts +0 -1
  979. package/src/lib/isStorybook.ts +0 -1
  980. package/src/lib/keycloakJsAdapter.ts +0 -118
  981. package/src/lib/useGetClassName.ts +0 -18
  982. package/src/login/kcContext/createGetKcContext.ts +0 -159
  983. package/src/login/kcContext/getKcContext.ts +0 -21
  984. package/src/login/kcContext/getKcContextFromWindow.ts +0 -11
  985. package/src/login/kcContext/index.ts +0 -1
  986. package/src/login/kcContext/kcContextMocks.ts +0 -631
  987. package/src/login/lib/useGetClassName.ts +0 -132
  988. package/src/tools/AndByDiscriminatingKey.ts +0 -25
  989. package/src/tools/deepClone.ts +0 -17
  990. package/src/tools/memoize.ts +0 -55
  991. package/tools/AndByDiscriminatingKey.d.ts +0 -5
  992. package/tools/AndByDiscriminatingKey.js +0 -2
  993. package/tools/AndByDiscriminatingKey.js.map +0 -1
  994. package/tools/deepClone.d.ts +0 -2
  995. package/tools/deepClone.js +0 -14
  996. package/tools/deepClone.js.map +0 -1
  997. package/tools/memoize.d.ts +0 -7
  998. package/tools/memoize.js +0 -38
  999. package/tools/memoize.js.map +0 -1
  1000. package/vite-plugin/index.js.map +0 -1
  1001. package/vite-plugin/tsconfig.tsbuildinfo +0 -1
  1002. package/vite-plugin/vite-plugin.js +0 -158
  1003. package/vite-plugin/vite-plugin.js.map +0 -1
  1004. /package/account/{kcContext → KcContext}/KcContext.js +0 -0
@@ -1,14 +1,16 @@
1
1
  import "keycloakify/tools/Array.prototype.every";
2
2
  import { useMemo, useReducer, useEffect, Fragment, type Dispatch } from "react";
3
+ import { assert, type Equals } from "tsafe/assert";
3
4
  import { id } from "tsafe/id";
4
- import type { MessageKey } from "keycloakify/login/i18n/i18n";
5
- import type { Attribute, Validators } from "keycloakify/login/kcContext/KcContext";
5
+ import { structuredCloneButFunctions } from "keycloakify/tools/structuredCloneButFunctions";
6
6
  import { useConstCallback } from "keycloakify/tools/useConstCallback";
7
7
  import { emailRegexp } from "keycloakify/tools/emailRegExp";
8
- import type { KcContext, PasswordPolicies } from "keycloakify/login/kcContext/KcContext";
9
- import { assert, type Equals } from "tsafe/assert";
10
8
  import { formatNumber } from "keycloakify/tools/formatNumber";
11
- import { createUseInsertScriptTags } from "keycloakify/tools/useInsertScriptTags";
9
+ import { useInsertScriptTags } from "keycloakify/tools/useInsertScriptTags";
10
+ import type { PasswordPolicies, Attribute, Validators } from "keycloakify/login/KcContext";
11
+ import type { KcContext } from "../KcContext";
12
+ import type { MessageKey } from "keycloakify/login/i18n";
13
+ import { KcContextLike as KcContextLike_i18n } from "keycloakify/login/i18n";
12
14
  import type { I18n } from "../i18n";
13
15
 
14
16
  export type FormFieldError = {
@@ -64,19 +66,20 @@ export type FormAction =
64
66
  fieldIndex: number | undefined;
65
67
  };
66
68
 
67
- export type KcContextLike = {
68
- messagesPerField: Pick<KcContext.Common["messagesPerField"], "existsError" | "get">;
69
- profile: {
70
- attributes: Attribute[];
71
- html5DataAnnotations?: Record<string, string>;
72
- };
73
- passwordRequired?: boolean;
74
- realm: { registrationEmailAsUsername: boolean };
75
- passwordPolicies?: PasswordPolicies;
76
- url: {
77
- resourcesPath: string;
69
+ export type KcContextLike = KcContextLike_i18n &
70
+ KcContextLike_useGetErrors & {
71
+ profile: {
72
+ attributesByName: Record<string, Attribute>;
73
+ html5DataAnnotations?: Record<string, string>;
74
+ };
75
+ passwordRequired?: boolean;
76
+ realm: { registrationEmailAsUsername: boolean };
77
+ url: {
78
+ resourcesPath: string;
79
+ };
78
80
  };
79
- };
81
+
82
+ assert<Extract<KcContext.Register, { pageId: "register.ftl" }> extends KcContextLike ? true : false>();
80
83
 
81
84
  export type ParamsOfUseUserProfileForm = {
82
85
  kcContext: KcContextLike;
@@ -102,17 +105,16 @@ namespace internal {
102
105
  };
103
106
  }
104
107
 
105
- const { useInsertScriptTags } = createUseInsertScriptTags();
106
-
107
108
  export function useUserProfileForm(params: ParamsOfUseUserProfileForm): ReturnTypeOfUseUserProfileForm {
108
109
  const { kcContext, i18n, doMakeUserConfirmPassword } = params;
109
110
 
110
111
  const { insertScriptTags } = useInsertScriptTags({
111
- "scriptTags": Object.keys(kcContext.profile?.html5DataAnnotations ?? {})
112
+ componentOrHookName: "useUserProfileForm",
113
+ scriptTags: Object.keys(kcContext.profile?.html5DataAnnotations ?? {})
112
114
  .filter(key => key !== "kcMultivalued" && key !== "kcNumberFormat") // NOTE: Keycloakify handles it.
113
115
  .map(key => ({
114
- "type": "module",
115
- "src": `${kcContext.url.resourcesPath}/js/${key}.js`
116
+ type: "module",
117
+ src: `${kcContext.url.resourcesPath}/js/${key}.js`
116
118
  }))
117
119
  });
118
120
 
@@ -136,7 +138,11 @@ export function useUserProfileForm(params: ParamsOfUseUserProfileForm): ReturnTy
136
138
 
137
139
  const attributes = (() => {
138
140
  retrocompat_patch: {
139
- if ("profile" in kcContext && "attributes" in kcContext.profile && kcContext.profile.attributes.length !== 0) {
141
+ if (
142
+ "profile" in kcContext &&
143
+ "attributesByName" in kcContext.profile &&
144
+ Object.keys(kcContext.profile.attributesByName).length !== 0
145
+ ) {
140
146
  break retrocompat_patch;
141
147
  }
142
148
 
@@ -146,15 +152,15 @@ export function useUserProfileForm(params: ParamsOfUseUserProfileForm): ReturnTy
146
152
  .filter(name => (name !== "username" ? true : !kcContext.realm.registrationEmailAsUsername))
147
153
  .map(name =>
148
154
  id<Attribute>({
149
- "name": name,
150
- "displayName": id<`\${${MessageKey}}`>(`\${${name}}`),
151
- "required": true,
152
- "value": (kcContext.register as any).formData[name] ?? "",
153
- "html5DataAnnotations": {},
154
- "readOnly": false,
155
- "validators": {},
156
- "annotations": {},
157
- "autocomplete": (() => {
155
+ name: name,
156
+ displayName: id<`\${${MessageKey}}`>(`\${${name}}`),
157
+ required: true,
158
+ value: (kcContext.register as any).formData[name] ?? "",
159
+ html5DataAnnotations: {},
160
+ readOnly: false,
161
+ validators: {},
162
+ annotations: {},
163
+ autocomplete: (() => {
158
164
  switch (name) {
159
165
  case "email":
160
166
  return "email";
@@ -174,15 +180,15 @@ export function useUserProfileForm(params: ParamsOfUseUserProfileForm): ReturnTy
174
180
  .filter(name => (name !== "username" ? true : (kcContext.user as any).editUsernameAllowed))
175
181
  .map(name =>
176
182
  id<Attribute>({
177
- "name": name,
178
- "displayName": id<`\${${MessageKey}}`>(`\${${name}}`),
179
- "required": true,
180
- "value": (kcContext as any).user[name] ?? "",
181
- "html5DataAnnotations": {},
182
- "readOnly": false,
183
- "validators": {},
184
- "annotations": {},
185
- "autocomplete": (() => {
183
+ name: name,
184
+ displayName: id<`\${${MessageKey}}`>(`\${${name}}`),
185
+ required: true,
186
+ value: (kcContext as any).user[name] ?? "",
187
+ html5DataAnnotations: {},
188
+ readOnly: false,
189
+ validators: {},
190
+ annotations: {},
191
+ autocomplete: (() => {
186
192
  switch (name) {
187
193
  case "email":
188
194
  return "email";
@@ -200,15 +206,15 @@ export function useUserProfileForm(params: ParamsOfUseUserProfileForm): ReturnTy
200
206
  //NOTE: Handle legacy update-email.ftl
201
207
  return [
202
208
  id<Attribute>({
203
- "name": "email",
204
- "displayName": id<`\${${MessageKey}}`>(`\${email}`),
205
- "required": true,
206
- "value": (kcContext.email as any).value ?? "",
207
- "html5DataAnnotations": {},
208
- "readOnly": false,
209
- "validators": {},
210
- "annotations": {},
211
- "autocomplete": "email"
209
+ name: "email",
210
+ displayName: id<`\${${MessageKey}}`>(`\${email}`),
211
+ required: true,
212
+ value: (kcContext.email as any).value ?? "",
213
+ html5DataAnnotations: {},
214
+ readOnly: false,
215
+ validators: {},
216
+ annotations: {},
217
+ autocomplete: "email"
212
218
  })
213
219
  ];
214
220
  }
@@ -216,7 +222,7 @@ export function useUserProfileForm(params: ParamsOfUseUserProfileForm): ReturnTy
216
222
  assert(false, "Unable to mock user profile from the current kcContext");
217
223
  }
218
224
 
219
- return kcContext.profile.attributes.map(attribute_pre_group_patch => {
225
+ return Object.values(kcContext.profile.attributesByName).map(attribute_pre_group_patch => {
220
226
  if (typeof attribute_pre_group_patch.group === "string" && attribute_pre_group_patch.group !== "") {
221
227
  const { group, groupDisplayHeader, groupDisplayDescription, groupAnnotations, ...rest } =
222
228
  attribute_pre_group_patch as Attribute & {
@@ -228,11 +234,11 @@ export function useUserProfileForm(params: ParamsOfUseUserProfileForm): ReturnTy
228
234
 
229
235
  return id<Attribute>({
230
236
  ...rest,
231
- "group": {
232
- "name": group,
233
- "displayHeader": groupDisplayHeader,
234
- "displayDescription": groupDisplayDescription,
235
- "html5DataAnnotations": {}
237
+ group: {
238
+ name: group,
239
+ displayHeader: groupDisplayHeader,
240
+ displayDescription: groupDisplayDescription,
241
+ html5DataAnnotations: {}
236
242
  }
237
243
  });
238
244
  }
@@ -242,7 +248,7 @@ export function useUserProfileForm(params: ParamsOfUseUserProfileForm): ReturnTy
242
248
  })();
243
249
 
244
250
  for (const attribute of attributes) {
245
- syntheticAttributes.push(attribute);
251
+ syntheticAttributes.push(structuredCloneButFunctions(attribute));
246
252
 
247
253
  add_password_and_password_confirm: {
248
254
  if (!kcContext.passwordRequired) {
@@ -257,38 +263,56 @@ export function useUserProfileForm(params: ParamsOfUseUserProfileForm): ReturnTy
257
263
 
258
264
  syntheticAttributes.push(
259
265
  {
260
- "name": "password",
261
- "displayName": id<`\${${MessageKey}}`>("${password}"),
262
- "required": true,
263
- "readOnly": false,
264
- "validators": {},
265
- "annotations": {},
266
- "autocomplete": "new-password",
267
- "html5DataAnnotations": {},
266
+ name: "password",
267
+ displayName: id<`\${${MessageKey}}`>("${password}"),
268
+ required: true,
269
+ readOnly: false,
270
+ validators: {},
271
+ annotations: {},
272
+ autocomplete: "new-password",
273
+ html5DataAnnotations: {},
268
274
  // NOTE: Compat with Keycloak version prior to 24
269
- ...({ "groupAnnotations": {} } as {})
275
+ ...({ groupAnnotations: {} } as {})
270
276
  },
271
277
  {
272
- "name": "password-confirm",
273
- "displayName": id<`\${${MessageKey}}`>("${passwordConfirm}"),
274
- "required": true,
275
- "readOnly": false,
276
- "validators": {},
277
- "annotations": {},
278
- "html5DataAnnotations": {},
279
- "autocomplete": "new-password",
278
+ name: "password-confirm",
279
+ displayName: id<`\${${MessageKey}}`>("${passwordConfirm}"),
280
+ required: true,
281
+ readOnly: false,
282
+ validators: {},
283
+ annotations: {},
284
+ html5DataAnnotations: {},
285
+ autocomplete: "new-password",
280
286
  // NOTE: Compat with Keycloak version prior to 24
281
- ...({ "groupAnnotations": {} } as {})
287
+ ...({ groupAnnotations: {} } as {})
282
288
  }
283
289
  );
284
290
  }
285
291
  }
286
292
 
293
+ // NOTE: Consistency patch
294
+ syntheticAttributes.forEach(attribute => {
295
+ if (getIsMultivaluedSingleField({ attribute })) {
296
+ attribute.multivalued = true;
297
+ }
298
+
299
+ if (attribute.multivalued) {
300
+ attribute.values ??= attribute.value !== undefined ? [attribute.value] : [];
301
+ delete attribute.value;
302
+ } else {
303
+ attribute.value ??= attribute.values?.[0];
304
+ delete attribute.values;
305
+ }
306
+ });
307
+
287
308
  return syntheticAttributes;
288
309
  })();
289
310
 
290
311
  const initialFormFieldState = (() => {
291
- const out: { attribute: Attribute; valueOrValues: string | string[] }[] = [];
312
+ const out: {
313
+ attribute: Attribute;
314
+ valueOrValues: string | string[];
315
+ }[] = [];
292
316
 
293
317
  for (const attribute of syntheticAttributes) {
294
318
  handle_multi_valued_attribute: {
@@ -296,10 +320,10 @@ export function useUserProfileForm(params: ParamsOfUseUserProfileForm): ReturnTy
296
320
  break handle_multi_valued_attribute;
297
321
  }
298
322
 
299
- const values = attribute.values ?? [""];
323
+ const values = attribute.values?.length ? attribute.values : [""];
300
324
 
301
325
  apply_validator_min_range: {
302
- if (attribute.annotations.inputType?.startsWith("multiselect")) {
326
+ if (getIsMultivaluedSingleField({ attribute })) {
303
327
  break apply_validator_min_range;
304
328
  }
305
329
 
@@ -311,7 +335,7 @@ export function useUserProfileForm(params: ParamsOfUseUserProfileForm): ReturnTy
311
335
 
312
336
  const { min: minStr } = validator;
313
337
 
314
- if (minStr === undefined) {
338
+ if (!minStr) {
315
339
  break apply_validator_min_range;
316
340
  }
317
341
 
@@ -324,7 +348,7 @@ export function useUserProfileForm(params: ParamsOfUseUserProfileForm): ReturnTy
324
348
 
325
349
  out.push({
326
350
  attribute,
327
- "valueOrValues": values
351
+ valueOrValues: values
328
352
  });
329
353
 
330
354
  continue;
@@ -332,7 +356,7 @@ export function useUserProfileForm(params: ParamsOfUseUserProfileForm): ReturnTy
332
356
 
333
357
  out.push({
334
358
  attribute,
335
- "valueOrValues": attribute.value ?? ""
359
+ valueOrValues: attribute.value ?? ""
336
360
  });
337
361
  }
338
362
 
@@ -340,14 +364,15 @@ export function useUserProfileForm(params: ParamsOfUseUserProfileForm): ReturnTy
340
364
  })();
341
365
 
342
366
  const initialState: internal.State = {
343
- "formFieldStates": initialFormFieldState.map(({ attribute, valueOrValues }) => ({
367
+ formFieldStates: initialFormFieldState.map(({ attribute, valueOrValues }) => ({
344
368
  attribute,
345
- "errors": getErrors({
346
- "attributeName": attribute.name,
347
- "formFieldStates": initialFormFieldState
369
+ errors: getErrors({
370
+ attributeName: attribute.name,
371
+ formFieldStates: initialFormFieldState
348
372
  }),
349
- "hasLostFocusAtLeastOnce": valueOrValues instanceof Array ? valueOrValues.map(() => false) : false,
350
- "valueOrValues": valueOrValues
373
+ hasLostFocusAtLeastOnce:
374
+ valueOrValues instanceof Array && !getIsMultivaluedSingleField({ attribute }) ? valueOrValues.map(() => false) : false,
375
+ valueOrValues: valueOrValues
351
376
  }))
352
377
  };
353
378
 
@@ -369,7 +394,7 @@ export function useUserProfileForm(params: ParamsOfUseUserProfileForm): ReturnTy
369
394
 
370
395
  const { kcNumberFormat } = attribute.html5DataAnnotations ?? {};
371
396
 
372
- if (kcNumberFormat === undefined) {
397
+ if (!kcNumberFormat) {
373
398
  break apply_formatters;
374
399
  }
375
400
 
@@ -381,8 +406,8 @@ export function useUserProfileForm(params: ParamsOfUseUserProfileForm): ReturnTy
381
406
  }
382
407
 
383
408
  formFieldState.errors = getErrors({
384
- "attributeName": formAction.name,
385
- "formFieldStates": state.formFieldStates
409
+ attributeName: formAction.name,
410
+ formFieldStates: state.formFieldStates
386
411
  });
387
412
 
388
413
  update_password_confirm: {
@@ -395,9 +420,9 @@ export function useUserProfileForm(params: ParamsOfUseUserProfileForm): ReturnTy
395
420
  }
396
421
 
397
422
  state = reducer(state, {
398
- "action": "update",
399
- "name": "password-confirm",
400
- "valueOrValues": formAction.valueOrValues
423
+ action: "update",
424
+ name: "password-confirm",
425
+ valueOrValues: formAction.valueOrValues
401
426
  });
402
427
  }
403
428
 
@@ -421,15 +446,15 @@ export function useUserProfileForm(params: ParamsOfUseUserProfileForm): ReturnTy
421
446
 
422
447
  const formState: FormState = useMemo(
423
448
  () => ({
424
- "formFieldStates": state.formFieldStates.map(
449
+ formFieldStates: state.formFieldStates.map(
425
450
  ({ errors, hasLostFocusAtLeastOnce: hasLostFocusAtLeastOnceOrArr, attribute, ...valueOrValuesWrap }) => ({
426
- "displayableErrors": errors.filter(error => {
451
+ displayableErrors: errors.filter(error => {
427
452
  const hasLostFocusAtLeastOnce =
428
453
  typeof hasLostFocusAtLeastOnceOrArr === "boolean"
429
454
  ? hasLostFocusAtLeastOnceOrArr
430
455
  : error.fieldIndex !== undefined
431
- ? hasLostFocusAtLeastOnceOrArr[error.fieldIndex]
432
- : hasLostFocusAtLeastOnceOrArr[hasLostFocusAtLeastOnceOrArr.length - 1];
456
+ ? hasLostFocusAtLeastOnceOrArr[error.fieldIndex]
457
+ : hasLostFocusAtLeastOnceOrArr[hasLostFocusAtLeastOnceOrArr.length - 1];
433
458
 
434
459
  switch (error.source.type) {
435
460
  case "server":
@@ -482,7 +507,7 @@ export function useUserProfileForm(params: ParamsOfUseUserProfileForm): ReturnTy
482
507
  ...valueOrValuesWrap
483
508
  })
484
509
  ),
485
- "isFormSubmittable": state.formFieldStates.every(({ errors }) => errors.length === 0)
510
+ isFormSubmittable: state.formFieldStates.every(({ errors }) => errors.length === 0)
486
511
  }),
487
512
  [state]
488
513
  );
@@ -493,7 +518,14 @@ export function useUserProfileForm(params: ParamsOfUseUserProfileForm): ReturnTy
493
518
  };
494
519
  }
495
520
 
496
- function useGetErrors(params: { kcContext: Pick<KcContextLike, "messagesPerField" | "passwordPolicies">; i18n: I18n }) {
521
+ type KcContextLike_useGetErrors = KcContextLike_i18n & {
522
+ messagesPerField: Pick<KcContext["messagesPerField"], "existsError" | "get">;
523
+ passwordPolicies?: PasswordPolicies;
524
+ };
525
+
526
+ assert<KcContextLike extends KcContextLike_useGetErrors ? true : false>();
527
+
528
+ function useGetErrors(params: { kcContext: KcContextLike_useGetErrors; i18n: I18n }) {
497
529
  const { kcContext, i18n } = params;
498
530
 
499
531
  const { messagesPerField, passwordPolicies } = kcContext;
@@ -501,7 +533,13 @@ function useGetErrors(params: { kcContext: Pick<KcContextLike, "messagesPerField
501
533
  const { msg, msgStr, advancedMsg, advancedMsgStr } = i18n;
502
534
 
503
535
  const getErrors = useConstCallback(
504
- (params: { attributeName: string; formFieldStates: { attribute: Attribute; valueOrValues: string | string[] }[] }): FormFieldError[] => {
536
+ (params: {
537
+ attributeName: string;
538
+ formFieldStates: {
539
+ attribute: Attribute;
540
+ valueOrValues: string | string[];
541
+ }[];
542
+ }): FormFieldError[] => {
505
543
  const { attributeName, formFieldStates } = params;
506
544
 
507
545
  const formFieldState = formFieldStates.find(({ attribute }) => attribute.name === attributeName);
@@ -516,7 +554,7 @@ function useGetErrors(params: { kcContext: Pick<KcContextLike, "messagesPerField
516
554
  unFormat_number: {
517
555
  const { kcNumberUnFormat } = attribute.html5DataAnnotations ?? {};
518
556
 
519
- if (kcNumberUnFormat === undefined) {
557
+ if (!kcNumberUnFormat) {
520
558
  break unFormat_number;
521
559
  }
522
560
 
@@ -534,7 +572,7 @@ function useGetErrors(params: { kcContext: Pick<KcContextLike, "messagesPerField
534
572
 
535
573
  server_side_error: {
536
574
  if (attribute.multivalued) {
537
- const defaultValues = attribute.values ?? [""];
575
+ const defaultValues = attribute.values?.length ? attribute.values : [""];
538
576
 
539
577
  assert(valueOrValues instanceof Array);
540
578
 
@@ -572,10 +610,10 @@ function useGetErrors(params: { kcContext: Pick<KcContextLike, "messagesPerField
572
610
  return [
573
611
  {
574
612
  errorMessageStr,
575
- "errorMessage": <span key={0}>{errorMessageStr}</span>,
576
- "fieldIndex": undefined,
577
- "source": {
578
- "type": "server"
613
+ errorMessage: <span key={0}>{errorMessageStr}</span>,
614
+ fieldIndex: undefined,
615
+ source: {
616
+ type: "server"
579
617
  }
580
618
  }
581
619
  ];
@@ -586,7 +624,7 @@ function useGetErrors(params: { kcContext: Pick<KcContextLike, "messagesPerField
586
624
  break handle_multi_valued_multi_fields;
587
625
  }
588
626
 
589
- if (attribute.annotations.inputType?.startsWith("multiselect")) {
627
+ if (getIsMultivaluedSingleField({ attribute })) {
590
628
  break handle_multi_valued_multi_fields;
591
629
  }
592
630
 
@@ -598,19 +636,19 @@ function useGetErrors(params: { kcContext: Pick<KcContextLike, "messagesPerField
598
636
  .map((...[, index]) => {
599
637
  const specificValueErrors = getErrors({
600
638
  attributeName,
601
- "formFieldStates": formFieldStates.map(formFieldState => {
639
+ formFieldStates: formFieldStates.map(formFieldState => {
602
640
  if (formFieldState.attribute.name === attributeName) {
603
641
  assert(formFieldState.valueOrValues instanceof Array);
604
642
  return {
605
- "attribute": {
643
+ attribute: {
606
644
  ...attribute,
607
- "annotations": {
645
+ annotations: {
608
646
  ...attribute.annotations,
609
- "inputType": undefined
647
+ inputType: undefined
610
648
  },
611
- "multivalued": false
649
+ multivalued: false
612
650
  },
613
- "valueOrValues": formFieldState.valueOrValues[index]
651
+ valueOrValues: formFieldState.valueOrValues[index]
614
652
  };
615
653
  }
616
654
 
@@ -626,7 +664,12 @@ function useGetErrors(params: { kcContext: Pick<KcContextLike, "messagesPerField
626
664
 
627
665
  return true;
628
666
  })
629
- .map((error): FormFieldError => ({ ...error, "fieldIndex": index }));
667
+ .map(
668
+ (error): FormFieldError => ({
669
+ ...error,
670
+ fieldIndex: index
671
+ })
672
+ );
630
673
  })
631
674
  .reduce((acc, errors) => [...acc, ...errors], []);
632
675
 
@@ -642,12 +685,12 @@ function useGetErrors(params: { kcContext: Pick<KcContextLike, "messagesPerField
642
685
  const msgArgs = ["error-user-attribute-required"] as const;
643
686
 
644
687
  errors.push({
645
- "errorMessage": <Fragment key={`${attributeName}-${errors.length}`}>{msg(...msgArgs)}</Fragment>,
646
- "errorMessageStr": msgStr(...msgArgs),
647
- "fieldIndex": undefined,
648
- "source": {
649
- "type": "other",
650
- "rule": "requiredField"
688
+ errorMessage: <Fragment key={`${attributeName}-${errors.length}`}>{msg(...msgArgs)}</Fragment>,
689
+ errorMessageStr: msgStr(...msgArgs),
690
+ fieldIndex: undefined,
691
+ source: {
692
+ type: "other",
693
+ rule: "requiredField"
651
694
  }
652
695
  });
653
696
  }
@@ -660,7 +703,7 @@ function useGetErrors(params: { kcContext: Pick<KcContextLike, "messagesPerField
660
703
  break handle_multi_valued_single_field;
661
704
  }
662
705
 
663
- if (!attribute.annotations.inputType?.startsWith("multiselect")) {
706
+ if (!getIsMultivaluedSingleField({ attribute })) {
664
707
  break handle_multi_valued_single_field;
665
708
  }
666
709
 
@@ -674,13 +717,13 @@ function useGetErrors(params: { kcContext: Pick<KcContextLike, "messagesPerField
674
717
 
675
718
  const { min: minStr } = validator;
676
719
 
677
- const min = minStr !== undefined ? parseInt(`${minStr}`) : attribute.required ? 1 : 0;
720
+ const min = minStr ? parseInt(`${minStr}`) : attribute.required ? 1 : 0;
678
721
 
679
722
  assert(!isNaN(min));
680
723
 
681
724
  const { max: maxStr } = validator;
682
725
 
683
- const max = maxStr === undefined ? Infinity : parseInt(`${maxStr}`);
726
+ const max = !maxStr ? Infinity : parseInt(`${maxStr}`);
684
727
 
685
728
  assert(!isNaN(max));
686
729
 
@@ -696,12 +739,12 @@ function useGetErrors(params: { kcContext: Pick<KcContextLike, "messagesPerField
696
739
 
697
740
  return [
698
741
  {
699
- "errorMessage": <Fragment key={0}>{msg(...msgArgs)}</Fragment>,
700
- "errorMessageStr": msgStr(...msgArgs),
701
- "fieldIndex": undefined,
702
- "source": {
703
- "type": "validator",
704
- "name": validatorName
742
+ errorMessage: <Fragment key={0}>{msg(...msgArgs)}</Fragment>,
743
+ errorMessageStr: msgStr(...msgArgs),
744
+ fieldIndex: undefined,
745
+ source: {
746
+ type: "validator",
747
+ name: validatorName
705
748
  }
706
749
  }
707
750
  ];
@@ -727,7 +770,7 @@ function useGetErrors(params: { kcContext: Pick<KcContextLike, "messagesPerField
727
770
 
728
771
  const policy = passwordPolicies[policyName];
729
772
 
730
- if (policy === undefined) {
773
+ if (!policy) {
731
774
  break check_password_policy_x;
732
775
  }
733
776
 
@@ -740,12 +783,12 @@ function useGetErrors(params: { kcContext: Pick<KcContextLike, "messagesPerField
740
783
  const msgArgs = ["invalidPasswordMinLengthMessage", `${minLength}`] as const;
741
784
 
742
785
  errors.push({
743
- "errorMessage": <Fragment key={`${attributeName}-${errors.length}`}>{msg(...msgArgs)}</Fragment>,
744
- "errorMessageStr": msgStr(...msgArgs),
745
- "fieldIndex": undefined,
746
- "source": {
747
- "type": "passwordPolicy",
748
- "name": policyName
786
+ errorMessage: <Fragment key={`${attributeName}-${errors.length}`}>{msg(...msgArgs)}</Fragment>,
787
+ errorMessageStr: msgStr(...msgArgs),
788
+ fieldIndex: undefined,
789
+ source: {
790
+ type: "passwordPolicy",
791
+ name: policyName
749
792
  }
750
793
  });
751
794
  }
@@ -755,7 +798,7 @@ function useGetErrors(params: { kcContext: Pick<KcContextLike, "messagesPerField
755
798
 
756
799
  const policy = passwordPolicies[policyName];
757
800
 
758
- if (policy === undefined) {
801
+ if (!policy) {
759
802
  break check_password_policy_x;
760
803
  }
761
804
 
@@ -768,12 +811,12 @@ function useGetErrors(params: { kcContext: Pick<KcContextLike, "messagesPerField
768
811
  const msgArgs = ["invalidPasswordMinDigitsMessage", `${minNumberOfDigits}`] as const;
769
812
 
770
813
  errors.push({
771
- "errorMessage": <Fragment key={`${attributeName}-${errors.length}`}>{msg(...msgArgs)}</Fragment>,
772
- "errorMessageStr": msgStr(...msgArgs),
773
- "fieldIndex": undefined,
774
- "source": {
775
- "type": "passwordPolicy",
776
- "name": policyName
814
+ errorMessage: <Fragment key={`${attributeName}-${errors.length}`}>{msg(...msgArgs)}</Fragment>,
815
+ errorMessageStr: msgStr(...msgArgs),
816
+ fieldIndex: undefined,
817
+ source: {
818
+ type: "passwordPolicy",
819
+ name: policyName
777
820
  }
778
821
  });
779
822
  }
@@ -783,7 +826,7 @@ function useGetErrors(params: { kcContext: Pick<KcContextLike, "messagesPerField
783
826
 
784
827
  const policy = passwordPolicies[policyName];
785
828
 
786
- if (policy === undefined) {
829
+ if (!policy) {
787
830
  break check_password_policy_x;
788
831
  }
789
832
 
@@ -798,12 +841,12 @@ function useGetErrors(params: { kcContext: Pick<KcContextLike, "messagesPerField
798
841
  const msgArgs = ["invalidPasswordMinLowerCaseCharsMessage", `${minNumberOfLowerCaseChar}`] as const;
799
842
 
800
843
  errors.push({
801
- "errorMessage": <Fragment key={`${attributeName}-${errors.length}`}>{msg(...msgArgs)}</Fragment>,
802
- "errorMessageStr": msgStr(...msgArgs),
803
- "fieldIndex": undefined,
804
- "source": {
805
- "type": "passwordPolicy",
806
- "name": policyName
844
+ errorMessage: <Fragment key={`${attributeName}-${errors.length}`}>{msg(...msgArgs)}</Fragment>,
845
+ errorMessageStr: msgStr(...msgArgs),
846
+ fieldIndex: undefined,
847
+ source: {
848
+ type: "passwordPolicy",
849
+ name: policyName
807
850
  }
808
851
  });
809
852
  }
@@ -813,7 +856,7 @@ function useGetErrors(params: { kcContext: Pick<KcContextLike, "messagesPerField
813
856
 
814
857
  const policy = passwordPolicies[policyName];
815
858
 
816
- if (policy === undefined) {
859
+ if (!policy) {
817
860
  break check_password_policy_x;
818
861
  }
819
862
 
@@ -828,12 +871,12 @@ function useGetErrors(params: { kcContext: Pick<KcContextLike, "messagesPerField
828
871
  const msgArgs = ["invalidPasswordMinUpperCaseCharsMessage", `${minNumberOfUpperCaseChar}`] as const;
829
872
 
830
873
  errors.push({
831
- "errorMessage": <Fragment key={`${attributeName}-${errors.length}`}>{msg(...msgArgs)}</Fragment>,
832
- "errorMessageStr": msgStr(...msgArgs),
833
- "fieldIndex": undefined,
834
- "source": {
835
- "type": "passwordPolicy",
836
- "name": policyName
874
+ errorMessage: <Fragment key={`${attributeName}-${errors.length}`}>{msg(...msgArgs)}</Fragment>,
875
+ errorMessageStr: msgStr(...msgArgs),
876
+ fieldIndex: undefined,
877
+ source: {
878
+ type: "passwordPolicy",
879
+ name: policyName
837
880
  }
838
881
  });
839
882
  }
@@ -843,7 +886,7 @@ function useGetErrors(params: { kcContext: Pick<KcContextLike, "messagesPerField
843
886
 
844
887
  const policy = passwordPolicies[policyName];
845
888
 
846
- if (policy === undefined) {
889
+ if (!policy) {
847
890
  break check_password_policy_x;
848
891
  }
849
892
 
@@ -856,12 +899,12 @@ function useGetErrors(params: { kcContext: Pick<KcContextLike, "messagesPerField
856
899
  const msgArgs = ["invalidPasswordMinSpecialCharsMessage", `${minNumberOfSpecialChar}`] as const;
857
900
 
858
901
  errors.push({
859
- "errorMessage": <Fragment key={`${attributeName}-${errors.length}`}>{msg(...msgArgs)}</Fragment>,
860
- "errorMessageStr": msgStr(...msgArgs),
861
- "fieldIndex": undefined,
862
- "source": {
863
- "type": "passwordPolicy",
864
- "name": policyName
902
+ errorMessage: <Fragment key={`${attributeName}-${errors.length}`}>{msg(...msgArgs)}</Fragment>,
903
+ errorMessageStr: msgStr(...msgArgs),
904
+ fieldIndex: undefined,
905
+ source: {
906
+ type: "passwordPolicy",
907
+ name: policyName
865
908
  }
866
909
  });
867
910
  }
@@ -877,7 +920,7 @@ function useGetErrors(params: { kcContext: Pick<KcContextLike, "messagesPerField
877
920
 
878
921
  const usernameFormFieldState = formFieldStates.find(formFieldState => formFieldState.attribute.name === "username");
879
922
 
880
- if (usernameFormFieldState === undefined) {
923
+ if (!usernameFormFieldState) {
881
924
  break check_password_policy_x;
882
925
  }
883
926
 
@@ -889,7 +932,7 @@ function useGetErrors(params: { kcContext: Pick<KcContextLike, "messagesPerField
889
932
  unFormat_number: {
890
933
  const { kcNumberUnFormat } = attribute.html5DataAnnotations ?? {};
891
934
 
892
- if (kcNumberUnFormat === undefined) {
935
+ if (!kcNumberUnFormat) {
893
936
  break unFormat_number;
894
937
  }
895
938
 
@@ -899,6 +942,10 @@ function useGetErrors(params: { kcContext: Pick<KcContextLike, "messagesPerField
899
942
  return valueOrValues;
900
943
  })();
901
944
 
945
+ if (usernameValue === "") {
946
+ break check_password_policy_x;
947
+ }
948
+
902
949
  if (value !== usernameValue) {
903
950
  break check_password_policy_x;
904
951
  }
@@ -906,12 +953,12 @@ function useGetErrors(params: { kcContext: Pick<KcContextLike, "messagesPerField
906
953
  const msgArgs = ["invalidPasswordNotUsernameMessage"] as const;
907
954
 
908
955
  errors.push({
909
- "errorMessage": <Fragment key={`${attributeName}-${errors.length}`}>{msg(...msgArgs)}</Fragment>,
910
- "errorMessageStr": msgStr(...msgArgs),
911
- "fieldIndex": undefined,
912
- "source": {
913
- "type": "passwordPolicy",
914
- "name": policyName
956
+ errorMessage: <Fragment key={`${attributeName}-${errors.length}`}>{msg(...msgArgs)}</Fragment>,
957
+ errorMessageStr: msgStr(...msgArgs),
958
+ fieldIndex: undefined,
959
+ source: {
960
+ type: "passwordPolicy",
961
+ name: policyName
915
962
  }
916
963
  });
917
964
  }
@@ -927,7 +974,7 @@ function useGetErrors(params: { kcContext: Pick<KcContextLike, "messagesPerField
927
974
 
928
975
  const emailFormFieldState = formFieldStates.find(formFieldState => formFieldState.attribute.name === "email");
929
976
 
930
- if (emailFormFieldState === undefined) {
977
+ if (!emailFormFieldState) {
931
978
  break check_password_policy_x;
932
979
  }
933
980
 
@@ -936,6 +983,10 @@ function useGetErrors(params: { kcContext: Pick<KcContextLike, "messagesPerField
936
983
  {
937
984
  const emailValue = emailFormFieldState.valueOrValues;
938
985
 
986
+ if (emailValue === "") {
987
+ break check_password_policy_x;
988
+ }
989
+
939
990
  if (value !== emailValue) {
940
991
  break check_password_policy_x;
941
992
  }
@@ -944,12 +995,12 @@ function useGetErrors(params: { kcContext: Pick<KcContextLike, "messagesPerField
944
995
  const msgArgs = ["invalidPasswordNotEmailMessage"] as const;
945
996
 
946
997
  errors.push({
947
- "errorMessage": <Fragment key={`${attributeName}-${errors.length}`}>{msg(...msgArgs)}</Fragment>,
948
- "errorMessageStr": msgStr(...msgArgs),
949
- "fieldIndex": undefined,
950
- "source": {
951
- "type": "passwordPolicy",
952
- "name": policyName
998
+ errorMessage: <Fragment key={`${attributeName}-${errors.length}`}>{msg(...msgArgs)}</Fragment>,
999
+ errorMessageStr: msgStr(...msgArgs),
1000
+ fieldIndex: undefined,
1001
+ source: {
1002
+ type: "passwordPolicy",
1003
+ name: policyName
953
1004
  }
954
1005
  });
955
1006
  }
@@ -977,12 +1028,12 @@ function useGetErrors(params: { kcContext: Pick<KcContextLike, "messagesPerField
977
1028
  const msgArgs = ["invalidPasswordConfirmMessage"] as const;
978
1029
 
979
1030
  errors.push({
980
- "errorMessage": <Fragment key={`${attributeName}-${errors.length}`}>{msg(...msgArgs)}</Fragment>,
981
- "errorMessageStr": msgStr(...msgArgs),
982
- "fieldIndex": undefined,
983
- "source": {
984
- "type": "other",
985
- "rule": "passwordConfirmMatchesPassword"
1031
+ errorMessage: <Fragment key={`${attributeName}-${errors.length}`}>{msg(...msgArgs)}</Fragment>,
1032
+ errorMessageStr: msgStr(...msgArgs),
1033
+ fieldIndex: undefined,
1034
+ source: {
1035
+ type: "other",
1036
+ rule: "passwordConfirmMatchesPassword"
986
1037
  }
987
1038
  });
988
1039
  }
@@ -1001,12 +1052,12 @@ function useGetErrors(params: { kcContext: Pick<KcContextLike, "messagesPerField
1001
1052
  const msgArgs = ["error-user-attribute-required"] as const;
1002
1053
 
1003
1054
  errors.push({
1004
- "errorMessage": <Fragment key={`${attributeName}-${errors.length}`}>{msg(...msgArgs)}</Fragment>,
1005
- "errorMessageStr": msgStr(...msgArgs),
1006
- "fieldIndex": undefined,
1007
- "source": {
1008
- "type": "other",
1009
- "rule": "requiredField"
1055
+ errorMessage: <Fragment key={`${attributeName}-${errors.length}`}>{msg(...msgArgs)}</Fragment>,
1056
+ errorMessageStr: msgStr(...msgArgs),
1057
+ fieldIndex: undefined,
1058
+ source: {
1059
+ type: "other",
1060
+ rule: "requiredField"
1010
1061
  }
1011
1062
  });
1012
1063
  }
@@ -1016,7 +1067,7 @@ function useGetErrors(params: { kcContext: Pick<KcContextLike, "messagesPerField
1016
1067
 
1017
1068
  const validator = validators[validatorName];
1018
1069
 
1019
- if (validator === undefined) {
1070
+ if (!validator) {
1020
1071
  break validator_x;
1021
1072
  }
1022
1073
 
@@ -1027,28 +1078,28 @@ function useGetErrors(params: { kcContext: Pick<KcContextLike, "messagesPerField
1027
1078
  }
1028
1079
 
1029
1080
  const source: FormFieldError.Source = {
1030
- "type": "validator",
1031
- "name": validatorName
1081
+ type: "validator",
1082
+ name: validatorName
1032
1083
  };
1033
1084
 
1034
- if (max !== undefined && value.length > parseInt(`${max}`)) {
1085
+ if (max && value.length > parseInt(`${max}`)) {
1035
1086
  const msgArgs = ["error-invalid-length-too-long", `${max}`] as const;
1036
1087
 
1037
1088
  errors.push({
1038
- "errorMessage": <Fragment key={`${attributeName}-${errors.length}`}>{msg(...msgArgs)}</Fragment>,
1039
- "errorMessageStr": msgStr(...msgArgs),
1040
- "fieldIndex": undefined,
1089
+ errorMessage: <Fragment key={`${attributeName}-${errors.length}`}>{msg(...msgArgs)}</Fragment>,
1090
+ errorMessageStr: msgStr(...msgArgs),
1091
+ fieldIndex: undefined,
1041
1092
  source
1042
1093
  });
1043
1094
  }
1044
1095
 
1045
- if (min !== undefined && value.length < parseInt(`${min}`)) {
1096
+ if (min && value.length < parseInt(`${min}`)) {
1046
1097
  const msgArgs = ["error-invalid-length-too-short", `${min}`] as const;
1047
1098
 
1048
1099
  errors.push({
1049
- "errorMessage": <Fragment key={`${attributeName}-${errors.length}`}>{msg(...msgArgs)}</Fragment>,
1050
- "errorMessageStr": msgStr(...msgArgs),
1051
- "fieldIndex": undefined,
1100
+ errorMessage: <Fragment key={`${attributeName}-${errors.length}`}>{msg(...msgArgs)}</Fragment>,
1101
+ errorMessageStr: msgStr(...msgArgs),
1102
+ fieldIndex: undefined,
1052
1103
  source
1053
1104
  });
1054
1105
  }
@@ -1076,12 +1127,12 @@ function useGetErrors(params: { kcContext: Pick<KcContextLike, "messagesPerField
1076
1127
  const msgArgs = [errorMessageKey ?? id<MessageKey>("shouldMatchPattern"), pattern] as const;
1077
1128
 
1078
1129
  errors.push({
1079
- "errorMessage": <Fragment key={`${attributeName}-${errors.length}`}>{advancedMsg(...msgArgs)}</Fragment>,
1080
- "errorMessageStr": advancedMsgStr(...msgArgs),
1081
- "fieldIndex": undefined,
1082
- "source": {
1083
- "type": "validator",
1084
- "name": validatorName
1130
+ errorMessage: <Fragment key={`${attributeName}-${errors.length}`}>{advancedMsg(...msgArgs)}</Fragment>,
1131
+ errorMessageStr: advancedMsgStr(...msgArgs),
1132
+ fieldIndex: undefined,
1133
+ source: {
1134
+ type: "validator",
1135
+ name: validatorName
1085
1136
  }
1086
1137
  });
1087
1138
  }
@@ -1115,12 +1166,12 @@ function useGetErrors(params: { kcContext: Pick<KcContextLike, "messagesPerField
1115
1166
  const msgArgs = [id<MessageKey>("invalidEmailMessage")] as const;
1116
1167
 
1117
1168
  errors.push({
1118
- "errorMessage": <Fragment key={`${attributeName}-${errors.length}`}>{msg(...msgArgs)}</Fragment>,
1119
- "errorMessageStr": msgStr(...msgArgs),
1120
- "fieldIndex": undefined,
1121
- "source": {
1122
- "type": "validator",
1123
- "name": validatorName
1169
+ errorMessage: <Fragment key={`${attributeName}-${errors.length}`}>{msg(...msgArgs)}</Fragment>,
1170
+ errorMessageStr: msgStr(...msgArgs),
1171
+ fieldIndex: undefined,
1172
+ source: {
1173
+ type: "validator",
1174
+ name: validatorName
1124
1175
  }
1125
1176
  });
1126
1177
  }
@@ -1143,43 +1194,43 @@ function useGetErrors(params: { kcContext: Pick<KcContextLike, "messagesPerField
1143
1194
  const intValue = parseInt(value);
1144
1195
 
1145
1196
  const source: FormFieldError.Source = {
1146
- "type": "validator",
1147
- "name": validatorName
1197
+ type: "validator",
1198
+ name: validatorName
1148
1199
  };
1149
1200
 
1150
1201
  if (isNaN(intValue)) {
1151
1202
  const msgArgs = ["mustBeAnInteger"] as const;
1152
1203
 
1153
1204
  errors.push({
1154
- "errorMessage": <Fragment key={`${attributeName}-${errors.length}`}>{msg(...msgArgs)}</Fragment>,
1155
- "errorMessageStr": msgStr(...msgArgs),
1156
- "fieldIndex": undefined,
1205
+ errorMessage: <Fragment key={`${attributeName}-${errors.length}`}>{msg(...msgArgs)}</Fragment>,
1206
+ errorMessageStr: msgStr(...msgArgs),
1207
+ fieldIndex: undefined,
1157
1208
  source
1158
1209
  });
1159
1210
 
1160
1211
  break validator_x;
1161
1212
  }
1162
1213
 
1163
- if (max !== undefined && intValue > parseInt(`${max}`)) {
1214
+ if (max && intValue > parseInt(`${max}`)) {
1164
1215
  const msgArgs = ["error-number-out-of-range-too-big", `${max}`] as const;
1165
1216
 
1166
1217
  errors.push({
1167
- "errorMessage": <Fragment key={`${attributeName}-${errors.length}`}>{msg(...msgArgs)}</Fragment>,
1168
- "errorMessageStr": msgStr(...msgArgs),
1169
- "fieldIndex": undefined,
1218
+ errorMessage: <Fragment key={`${attributeName}-${errors.length}`}>{msg(...msgArgs)}</Fragment>,
1219
+ errorMessageStr: msgStr(...msgArgs),
1220
+ fieldIndex: undefined,
1170
1221
  source
1171
1222
  });
1172
1223
 
1173
1224
  break validator_x;
1174
1225
  }
1175
1226
 
1176
- if (min !== undefined && intValue < parseInt(`${min}`)) {
1227
+ if (min && intValue < parseInt(`${min}`)) {
1177
1228
  const msgArgs = ["error-number-out-of-range-too-small", `${min}`] as const;
1178
1229
 
1179
1230
  errors.push({
1180
- "errorMessage": <Fragment key={`${attributeName}-${errors.length}`}>{msg(...msgArgs)}</Fragment>,
1181
- "errorMessageStr": msgStr(...msgArgs),
1182
- "fieldIndex": undefined,
1231
+ errorMessage: <Fragment key={`${attributeName}-${errors.length}`}>{msg(...msgArgs)}</Fragment>,
1232
+ errorMessageStr: msgStr(...msgArgs),
1233
+ fieldIndex: undefined,
1183
1234
  source
1184
1235
  });
1185
1236
 
@@ -1207,12 +1258,12 @@ function useGetErrors(params: { kcContext: Pick<KcContextLike, "messagesPerField
1207
1258
  const msgArgs = [id<MessageKey>("notAValidOption")] as const;
1208
1259
 
1209
1260
  errors.push({
1210
- "errorMessage": <Fragment key={`${attributeName}-${errors.length}`}>{advancedMsg(...msgArgs)}</Fragment>,
1211
- "errorMessageStr": advancedMsgStr(...msgArgs),
1212
- "fieldIndex": undefined,
1213
- "source": {
1214
- "type": "validator",
1215
- "name": validatorName
1261
+ errorMessage: <Fragment key={`${attributeName}-${errors.length}`}>{advancedMsg(...msgArgs)}</Fragment>,
1262
+ errorMessageStr: advancedMsgStr(...msgArgs),
1263
+ fieldIndex: undefined,
1264
+ source: {
1265
+ type: "validator",
1266
+ name: validatorName
1216
1267
  }
1217
1268
  });
1218
1269
  }
@@ -1225,3 +1276,79 @@ function useGetErrors(params: { kcContext: Pick<KcContextLike, "messagesPerField
1225
1276
 
1226
1277
  return { getErrors };
1227
1278
  }
1279
+
1280
+ function getIsMultivaluedSingleField(params: { attribute: Attribute }) {
1281
+ const { attribute } = params;
1282
+
1283
+ return attribute.annotations.inputType?.startsWith("multiselect") ?? false;
1284
+ }
1285
+
1286
+ export function getButtonToDisplayForMultivaluedAttributeField(params: { attribute: Attribute; values: string[]; fieldIndex: number }) {
1287
+ const { attribute, values, fieldIndex } = params;
1288
+
1289
+ const hasRemove = (() => {
1290
+ if (values.length === 1) {
1291
+ return false;
1292
+ }
1293
+
1294
+ const minCount = (() => {
1295
+ const { multivalued } = attribute.validators;
1296
+
1297
+ if (multivalued === undefined) {
1298
+ return undefined;
1299
+ }
1300
+
1301
+ const minStr = multivalued.min;
1302
+
1303
+ if (minStr === undefined) {
1304
+ return undefined;
1305
+ }
1306
+
1307
+ return parseInt(`${minStr}`);
1308
+ })();
1309
+
1310
+ if (minCount === undefined) {
1311
+ return true;
1312
+ }
1313
+
1314
+ if (values.length === minCount) {
1315
+ return false;
1316
+ }
1317
+
1318
+ return true;
1319
+ })();
1320
+
1321
+ const hasAdd = (() => {
1322
+ if (fieldIndex + 1 !== values.length) {
1323
+ return false;
1324
+ }
1325
+
1326
+ const maxCount = (() => {
1327
+ const { multivalued } = attribute.validators;
1328
+
1329
+ if (multivalued === undefined) {
1330
+ return undefined;
1331
+ }
1332
+
1333
+ const maxStr = multivalued.max;
1334
+
1335
+ if (maxStr === undefined) {
1336
+ return undefined;
1337
+ }
1338
+
1339
+ return parseInt(`${maxStr}`);
1340
+ })();
1341
+
1342
+ if (maxCount === undefined) {
1343
+ return false;
1344
+ }
1345
+
1346
+ if (values.length === maxCount) {
1347
+ return false;
1348
+ }
1349
+
1350
+ return true;
1351
+ })();
1352
+
1353
+ return { hasRemove, hasAdd };
1354
+ }