keycloakify 10.0.0-rc.12 → 10.0.0-rc.120

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