@andreyyolkin/keycloakify-vue 0.1.0

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 (349) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +109 -0
  3. package/keycloakify-vue/account/DefaultPage.vue +55 -0
  4. package/keycloakify-vue/account/DefaultPage.vue.d.ts +14 -0
  5. package/keycloakify-vue/account/KcContext/index.d.ts +1 -0
  6. package/keycloakify-vue/account/KcContext/index.js +0 -0
  7. package/keycloakify-vue/account/Template.useInitialize.d.ts +13 -0
  8. package/keycloakify-vue/account/Template.useInitialize.js +20 -0
  9. package/keycloakify-vue/account/Template.vue +178 -0
  10. package/keycloakify-vue/account/Template.vue.d.ts +17 -0
  11. package/keycloakify-vue/account/TemplateProps.d.ts +9 -0
  12. package/keycloakify-vue/account/TemplateProps.js +0 -0
  13. package/keycloakify-vue/account/i18n/i18n.d.ts +11 -0
  14. package/keycloakify-vue/account/i18n/i18n.js +0 -0
  15. package/keycloakify-vue/account/i18n/i18nBuilder.d.ts +18 -0
  16. package/keycloakify-vue/account/i18n/i18nBuilder.js +29 -0
  17. package/keycloakify-vue/account/i18n/index.d.ts +1 -0
  18. package/keycloakify-vue/account/i18n/index.js +1 -0
  19. package/keycloakify-vue/account/i18n/useI18n.d.ts +28 -0
  20. package/keycloakify-vue/account/i18n/useI18n.js +67 -0
  21. package/keycloakify-vue/account/index.d.ts +4 -0
  22. package/keycloakify-vue/account/index.js +8 -0
  23. package/keycloakify-vue/account/pages/Account.vue +182 -0
  24. package/keycloakify-vue/account/pages/Account.vue.d.ts +9 -0
  25. package/keycloakify-vue/account/pages/Applications.vue +192 -0
  26. package/keycloakify-vue/account/pages/Applications.vue.d.ts +9 -0
  27. package/keycloakify-vue/account/pages/FederatedIdentity.vue +123 -0
  28. package/keycloakify-vue/account/pages/FederatedIdentity.vue.d.ts +9 -0
  29. package/keycloakify-vue/account/pages/Log.vue +64 -0
  30. package/keycloakify-vue/account/pages/Log.vue.d.ts +9 -0
  31. package/keycloakify-vue/account/pages/NotImplemented.vue +24 -0
  32. package/keycloakify-vue/account/pages/NotImplemented.vue.d.ts +6 -0
  33. package/keycloakify-vue/account/pages/PageProps.d.ts +9 -0
  34. package/keycloakify-vue/account/pages/PageProps.js +0 -0
  35. package/keycloakify-vue/account/pages/Password.vue +247 -0
  36. package/keycloakify-vue/account/pages/Password.vue.d.ts +9 -0
  37. package/keycloakify-vue/account/pages/Sessions.vue +84 -0
  38. package/keycloakify-vue/account/pages/Sessions.vue.d.ts +9 -0
  39. package/keycloakify-vue/account/pages/Totp.vue +308 -0
  40. package/keycloakify-vue/account/pages/Totp.vue.d.ts +9 -0
  41. package/keycloakify-vue/bin/index.js +14 -0
  42. package/keycloakify-vue/bin/initialize-account-theme/boilerplate/KcContext.js +0 -0
  43. package/keycloakify-vue/bin/initialize-account-theme/boilerplate/KcPage.vue +23 -0
  44. package/keycloakify-vue/bin/initialize-account-theme/boilerplate/KcPageStory.js +18 -0
  45. package/keycloakify-vue/bin/initialize-account-theme/boilerplate/KcPageStory.vue +13 -0
  46. package/keycloakify-vue/bin/initialize-account-theme/boilerplate/i18n.js +5 -0
  47. package/keycloakify-vue/login/DefaultPage.vue +167 -0
  48. package/keycloakify-vue/login/DefaultPage.vue.d.ts +20 -0
  49. package/keycloakify-vue/login/Template.useInitialize.d.ts +18 -0
  50. package/keycloakify-vue/login/Template.useInitialize.js +49 -0
  51. package/keycloakify-vue/login/Template.vue +239 -0
  52. package/keycloakify-vue/login/Template.vue.d.ts +26 -0
  53. package/keycloakify-vue/login/TemplateProps.d.ts +14 -0
  54. package/keycloakify-vue/login/TemplateProps.js +0 -0
  55. package/keycloakify-vue/login/components/AddRemoveButtonsMultiValuedAttribute.vue +59 -0
  56. package/keycloakify-vue/login/components/AddRemoveButtonsMultiValuedAttribute.vue.d.ts +15 -0
  57. package/keycloakify-vue/login/components/FieldErrors.vue +35 -0
  58. package/keycloakify-vue/login/components/FieldErrors.vue.d.ts +14 -0
  59. package/keycloakify-vue/login/components/GroupLabel.vue +68 -0
  60. package/keycloakify-vue/login/components/GroupLabel.vue.d.ts +14 -0
  61. package/keycloakify-vue/login/components/InputFieldByType.vue +94 -0
  62. package/keycloakify-vue/login/components/InputFieldByType.vue.d.ts +4 -0
  63. package/keycloakify-vue/login/components/InputFieldByTypeProps.d.ts +12 -0
  64. package/keycloakify-vue/login/components/InputFieldByTypeProps.js +0 -0
  65. package/keycloakify-vue/login/components/InputTag.vue +105 -0
  66. package/keycloakify-vue/login/components/InputTag.vue.d.ts +7 -0
  67. package/keycloakify-vue/login/components/InputTagSelects.vue +108 -0
  68. package/keycloakify-vue/login/components/InputTagSelects.vue.d.ts +4 -0
  69. package/keycloakify-vue/login/components/LogoutOtherSessions.vue +27 -0
  70. package/keycloakify-vue/login/components/LogoutOtherSessions.vue.d.ts +9 -0
  71. package/keycloakify-vue/login/components/PasswordWrapper.vue +42 -0
  72. package/keycloakify-vue/login/components/PasswordWrapper.vue.d.ts +20 -0
  73. package/keycloakify-vue/login/components/SelectTag.vue +74 -0
  74. package/keycloakify-vue/login/components/SelectTag.vue.d.ts +4 -0
  75. package/keycloakify-vue/login/components/TermsAcceptance.vue +59 -0
  76. package/keycloakify-vue/login/components/TermsAcceptance.vue.d.ts +13 -0
  77. package/keycloakify-vue/login/components/TextareaTag.vue +47 -0
  78. package/keycloakify-vue/login/components/TextareaTag.vue.d.ts +4 -0
  79. package/keycloakify-vue/login/components/UserProfileFormFields.vue +119 -0
  80. package/keycloakify-vue/login/components/UserProfileFormFields.vue.d.ts +33 -0
  81. package/keycloakify-vue/login/components/UserProfileFormFieldsProps.d.ts +22 -0
  82. package/keycloakify-vue/login/components/UserProfileFormFieldsProps.js +0 -0
  83. package/keycloakify-vue/login/components/inputLabel.d.ts +4 -0
  84. package/keycloakify-vue/login/components/inputLabel.js +15 -0
  85. package/keycloakify-vue/login/i18n/i18n.d.ts +11 -0
  86. package/keycloakify-vue/login/i18n/i18n.js +0 -0
  87. package/keycloakify-vue/login/i18n/i18nBuilder.d.ts +18 -0
  88. package/keycloakify-vue/login/i18n/i18nBuilder.js +29 -0
  89. package/keycloakify-vue/login/i18n/index.d.ts +1 -0
  90. package/keycloakify-vue/login/i18n/index.js +1 -0
  91. package/keycloakify-vue/login/i18n/useI18n.d.ts +28 -0
  92. package/keycloakify-vue/login/i18n/useI18n.js +67 -0
  93. package/keycloakify-vue/login/index.d.ts +5 -0
  94. package/keycloakify-vue/login/index.js +10 -0
  95. package/keycloakify-vue/login/lib/useUserProfileForm.d.ts +53 -0
  96. package/keycloakify-vue/login/lib/useUserProfileForm.js +50 -0
  97. package/keycloakify-vue/login/pages/Code.vue +54 -0
  98. package/keycloakify-vue/login/pages/Code.vue.d.ts +9 -0
  99. package/keycloakify-vue/login/pages/DeleteAccountConfirm.vue +69 -0
  100. package/keycloakify-vue/login/pages/DeleteAccountConfirm.vue.d.ts +9 -0
  101. package/keycloakify-vue/login/pages/DeleteCredential.vue +56 -0
  102. package/keycloakify-vue/login/pages/DeleteCredential.vue.d.ts +9 -0
  103. package/keycloakify-vue/login/pages/Error.vue +41 -0
  104. package/keycloakify-vue/login/pages/Error.vue.d.ts +9 -0
  105. package/keycloakify-vue/login/pages/FrontchannelLogout.vue +67 -0
  106. package/keycloakify-vue/login/pages/FrontchannelLogout.vue.d.ts +9 -0
  107. package/keycloakify-vue/login/pages/IdpReviewUserProfile.vue +77 -0
  108. package/keycloakify-vue/login/pages/IdpReviewUserProfile.vue.d.ts +14 -0
  109. package/keycloakify-vue/login/pages/Info.vue +61 -0
  110. package/keycloakify-vue/login/pages/Info.vue.d.ts +9 -0
  111. package/keycloakify-vue/login/pages/LinkIdpAction.vue +66 -0
  112. package/keycloakify-vue/login/pages/LinkIdpAction.vue.d.ts +9 -0
  113. package/keycloakify-vue/login/pages/Login.vue +230 -0
  114. package/keycloakify-vue/login/pages/Login.vue.d.ts +9 -0
  115. package/keycloakify-vue/login/pages/LoginConfigTotp.vue +233 -0
  116. package/keycloakify-vue/login/pages/LoginConfigTotp.vue.d.ts +9 -0
  117. package/keycloakify-vue/login/pages/LoginIdpLinkConfirm.vue +57 -0
  118. package/keycloakify-vue/login/pages/LoginIdpLinkConfirm.vue.d.ts +9 -0
  119. package/keycloakify-vue/login/pages/LoginIdpLinkConfirmOverride.vue +56 -0
  120. package/keycloakify-vue/login/pages/LoginIdpLinkConfirmOverride.vue.d.ts +9 -0
  121. package/keycloakify-vue/login/pages/LoginIdpLinkEmail.vue +52 -0
  122. package/keycloakify-vue/login/pages/LoginIdpLinkEmail.vue.d.ts +9 -0
  123. package/keycloakify-vue/login/pages/LoginOauth2DeviceVerifyUserCode.vue +82 -0
  124. package/keycloakify-vue/login/pages/LoginOauth2DeviceVerifyUserCode.vue.d.ts +9 -0
  125. package/keycloakify-vue/login/pages/LoginOauthGrant.vue +131 -0
  126. package/keycloakify-vue/login/pages/LoginOauthGrant.vue.d.ts +9 -0
  127. package/keycloakify-vue/login/pages/LoginOtp.vue +135 -0
  128. package/keycloakify-vue/login/pages/LoginOtp.vue.d.ts +9 -0
  129. package/keycloakify-vue/login/pages/LoginPageExpired.vue +44 -0
  130. package/keycloakify-vue/login/pages/LoginPageExpired.vue.d.ts +9 -0
  131. package/keycloakify-vue/login/pages/LoginPasskeysConditionalAuthenticate.useScript.d.ts +21 -0
  132. package/keycloakify-vue/login/pages/LoginPasskeysConditionalAuthenticate.useScript.js +74 -0
  133. package/keycloakify-vue/login/pages/LoginPasskeysConditionalAuthenticate.vue +255 -0
  134. package/keycloakify-vue/login/pages/LoginPasskeysConditionalAuthenticate.vue.d.ts +9 -0
  135. package/keycloakify-vue/login/pages/LoginPassword.useScript.d.ts +23 -0
  136. package/keycloakify-vue/login/pages/LoginPassword.useScript.js +64 -0
  137. package/keycloakify-vue/login/pages/LoginPassword.vue +191 -0
  138. package/keycloakify-vue/login/pages/LoginPassword.vue.d.ts +9 -0
  139. package/keycloakify-vue/login/pages/LoginRecoveryAuthnCodeConfig.useScript.d.ts +9 -0
  140. package/keycloakify-vue/login/pages/LoginRecoveryAuthnCodeConfig.useScript.js +139 -0
  141. package/keycloakify-vue/login/pages/LoginRecoveryAuthnCodeConfig.vue +183 -0
  142. package/keycloakify-vue/login/pages/LoginRecoveryAuthnCodeConfig.vue.d.ts +9 -0
  143. package/keycloakify-vue/login/pages/LoginRecoveryAuthnCodeInput.vue +90 -0
  144. package/keycloakify-vue/login/pages/LoginRecoveryAuthnCodeInput.vue.d.ts +9 -0
  145. package/keycloakify-vue/login/pages/LoginResetOtp.vue +88 -0
  146. package/keycloakify-vue/login/pages/LoginResetOtp.vue.d.ts +9 -0
  147. package/keycloakify-vue/login/pages/LoginResetPassword.vue +114 -0
  148. package/keycloakify-vue/login/pages/LoginResetPassword.vue.d.ts +9 -0
  149. package/keycloakify-vue/login/pages/LoginUpdatePassword.vue +145 -0
  150. package/keycloakify-vue/login/pages/LoginUpdatePassword.vue.d.ts +9 -0
  151. package/keycloakify-vue/login/pages/LoginUpdateProfile.vue +94 -0
  152. package/keycloakify-vue/login/pages/LoginUpdateProfile.vue.d.ts +14 -0
  153. package/keycloakify-vue/login/pages/LoginUsername.useScript.d.ts +23 -0
  154. package/keycloakify-vue/login/pages/LoginUsername.useScript.js +64 -0
  155. package/keycloakify-vue/login/pages/LoginUsername.vue +263 -0
  156. package/keycloakify-vue/login/pages/LoginUsername.vue.d.ts +9 -0
  157. package/keycloakify-vue/login/pages/LoginVerifyEmail.vue +39 -0
  158. package/keycloakify-vue/login/pages/LoginVerifyEmail.vue.d.ts +9 -0
  159. package/keycloakify-vue/login/pages/LoginX509Info.vue +120 -0
  160. package/keycloakify-vue/login/pages/LoginX509Info.vue.d.ts +9 -0
  161. package/keycloakify-vue/login/pages/LogoutConfirm.vue +73 -0
  162. package/keycloakify-vue/login/pages/LogoutConfirm.vue.d.ts +9 -0
  163. package/keycloakify-vue/login/pages/NotImplemented.vue +12 -0
  164. package/keycloakify-vue/login/pages/NotImplemented.vue.d.ts +6 -0
  165. package/keycloakify-vue/login/pages/PageProps.d.ts +9 -0
  166. package/keycloakify-vue/login/pages/PageProps.js +0 -0
  167. package/keycloakify-vue/login/pages/Register.vue +158 -0
  168. package/keycloakify-vue/login/pages/Register.vue.d.ts +14 -0
  169. package/keycloakify-vue/login/pages/SamlPostForm.vue +75 -0
  170. package/keycloakify-vue/login/pages/SamlPostForm.vue.d.ts +9 -0
  171. package/keycloakify-vue/login/pages/SelectAuthenticator.vue +65 -0
  172. package/keycloakify-vue/login/pages/SelectAuthenticator.vue.d.ts +9 -0
  173. package/keycloakify-vue/login/pages/SelectOrganization.vue +89 -0
  174. package/keycloakify-vue/login/pages/SelectOrganization.vue.d.ts +9 -0
  175. package/keycloakify-vue/login/pages/Terms.vue +56 -0
  176. package/keycloakify-vue/login/pages/Terms.vue.d.ts +9 -0
  177. package/keycloakify-vue/login/pages/UpdateEmail.vue +100 -0
  178. package/keycloakify-vue/login/pages/UpdateEmail.vue.d.ts +14 -0
  179. package/keycloakify-vue/login/pages/WebauthnAuthenticate.useScript.d.ts +22 -0
  180. package/keycloakify-vue/login/pages/WebauthnAuthenticate.useScript.js +53 -0
  181. package/keycloakify-vue/login/pages/WebauthnAuthenticate.vue +186 -0
  182. package/keycloakify-vue/login/pages/WebauthnAuthenticate.vue.d.ts +9 -0
  183. package/keycloakify-vue/login/pages/WebauthnError.vue +84 -0
  184. package/keycloakify-vue/login/pages/WebauthnError.vue.d.ts +9 -0
  185. package/keycloakify-vue/login/pages/WebauthnRegister.useScript.d.ts +28 -0
  186. package/keycloakify-vue/login/pages/WebauthnRegister.useScript.js +75 -0
  187. package/keycloakify-vue/login/pages/WebauthnRegister.vue +105 -0
  188. package/keycloakify-vue/login/pages/WebauthnRegister.vue.d.ts +9 -0
  189. package/keycloakify-vue/tools/useInsertLinkTags.d.ts +12 -0
  190. package/keycloakify-vue/tools/useInsertLinkTags.js +47 -0
  191. package/keycloakify-vue/tools/useInsertScriptTags.d.ts +19 -0
  192. package/keycloakify-vue/tools/useInsertScriptTags.js +56 -0
  193. package/keycloakify-vue/tools/useSetClassName.d.ts +4 -0
  194. package/keycloakify-vue/tools/useSetClassName.js +16 -0
  195. package/package.json +553 -0
  196. package/src/account/DefaultPage.vue +55 -0
  197. package/src/account/KcContext/index.ts +1 -0
  198. package/src/account/Template.useInitialize.ts +34 -0
  199. package/src/account/Template.vue +178 -0
  200. package/src/account/TemplateProps.ts +11 -0
  201. package/src/account/i18n/i18n.ts +16 -0
  202. package/src/account/i18n/i18nBuilder.ts +100 -0
  203. package/src/account/i18n/index.ts +1 -0
  204. package/src/account/i18n/useI18n.ts +128 -0
  205. package/src/account/index.ts +4 -0
  206. package/src/account/pages/Account.vue +182 -0
  207. package/src/account/pages/Applications.vue +192 -0
  208. package/src/account/pages/FederatedIdentity.vue +123 -0
  209. package/src/account/pages/Log.vue +64 -0
  210. package/src/account/pages/NotImplemented.vue +24 -0
  211. package/src/account/pages/PageProps.ts +10 -0
  212. package/src/account/pages/Password.vue +247 -0
  213. package/src/account/pages/Sessions.vue +84 -0
  214. package/src/account/pages/Totp.vue +308 -0
  215. package/src/bin/initialize-account-theme/boilerplate/KcContext.ts +11 -0
  216. package/src/bin/initialize-account-theme/boilerplate/KcPage.vue +23 -0
  217. package/src/bin/initialize-account-theme/boilerplate/KcPageStory.ts +22 -0
  218. package/src/bin/initialize-account-theme/boilerplate/KcPageStory.vue +13 -0
  219. package/src/bin/initialize-account-theme/boilerplate/i18n.ts +8 -0
  220. package/src/login/DefaultPage.vue +167 -0
  221. package/src/login/Template.useInitialize.ts +71 -0
  222. package/src/login/Template.vue +239 -0
  223. package/src/login/TemplateProps.ts +17 -0
  224. package/src/login/components/AddRemoveButtonsMultiValuedAttribute.vue +59 -0
  225. package/src/login/components/FieldErrors.vue +35 -0
  226. package/src/login/components/GroupLabel.vue +68 -0
  227. package/src/login/components/InputFieldByType.vue +94 -0
  228. package/src/login/components/InputFieldByTypeProps.ts +13 -0
  229. package/src/login/components/InputTag.vue +105 -0
  230. package/src/login/components/InputTagSelects.vue +108 -0
  231. package/src/login/components/LogoutOtherSessions.vue +27 -0
  232. package/src/login/components/PasswordWrapper.vue +42 -0
  233. package/src/login/components/SelectTag.vue +74 -0
  234. package/src/login/components/TermsAcceptance.vue +59 -0
  235. package/src/login/components/TextareaTag.vue +47 -0
  236. package/src/login/components/UserProfileFormFields.vue +119 -0
  237. package/src/login/components/UserProfileFormFieldsProps.ts +22 -0
  238. package/src/login/components/inputLabel.ts +18 -0
  239. package/src/login/i18n/i18n.ts +16 -0
  240. package/src/login/i18n/i18nBuilder.ts +100 -0
  241. package/src/login/i18n/index.ts +1 -0
  242. package/src/login/i18n/useI18n.ts +128 -0
  243. package/src/login/index.ts +5 -0
  244. package/src/login/lib/useUserProfileForm.ts +121 -0
  245. package/src/login/pages/Code.vue +54 -0
  246. package/src/login/pages/DeleteAccountConfirm.vue +69 -0
  247. package/src/login/pages/DeleteCredential.vue +56 -0
  248. package/src/login/pages/Error.vue +41 -0
  249. package/src/login/pages/FrontchannelLogout.vue +67 -0
  250. package/src/login/pages/IdpReviewUserProfile.vue +77 -0
  251. package/src/login/pages/Info.vue +61 -0
  252. package/src/login/pages/LinkIdpAction.vue +66 -0
  253. package/src/login/pages/Login.vue +230 -0
  254. package/src/login/pages/LoginConfigTotp.vue +233 -0
  255. package/src/login/pages/LoginIdpLinkConfirm.vue +57 -0
  256. package/src/login/pages/LoginIdpLinkConfirmOverride.vue +56 -0
  257. package/src/login/pages/LoginIdpLinkEmail.vue +52 -0
  258. package/src/login/pages/LoginOauth2DeviceVerifyUserCode.vue +82 -0
  259. package/src/login/pages/LoginOauthGrant.vue +131 -0
  260. package/src/login/pages/LoginOtp.vue +135 -0
  261. package/src/login/pages/LoginPageExpired.vue +44 -0
  262. package/src/login/pages/LoginPasskeysConditionalAuthenticate.useScript.ts +96 -0
  263. package/src/login/pages/LoginPasskeysConditionalAuthenticate.vue +255 -0
  264. package/src/login/pages/LoginPassword.useScript.ts +88 -0
  265. package/src/login/pages/LoginPassword.vue +191 -0
  266. package/src/login/pages/LoginRecoveryAuthnCodeConfig.useScript.ts +152 -0
  267. package/src/login/pages/LoginRecoveryAuthnCodeConfig.vue +183 -0
  268. package/src/login/pages/LoginRecoveryAuthnCodeInput.vue +90 -0
  269. package/src/login/pages/LoginResetOtp.vue +88 -0
  270. package/src/login/pages/LoginResetPassword.vue +114 -0
  271. package/src/login/pages/LoginUpdatePassword.vue +145 -0
  272. package/src/login/pages/LoginUpdateProfile.vue +94 -0
  273. package/src/login/pages/LoginUsername.useScript.ts +88 -0
  274. package/src/login/pages/LoginUsername.vue +263 -0
  275. package/src/login/pages/LoginVerifyEmail.vue +39 -0
  276. package/src/login/pages/LoginX509Info.vue +120 -0
  277. package/src/login/pages/LogoutConfirm.vue +73 -0
  278. package/src/login/pages/NotImplemented.vue +12 -0
  279. package/src/login/pages/PageProps.ts +10 -0
  280. package/src/login/pages/Register.vue +158 -0
  281. package/src/login/pages/SamlPostForm.vue +75 -0
  282. package/src/login/pages/SelectAuthenticator.vue +65 -0
  283. package/src/login/pages/SelectOrganization.vue +89 -0
  284. package/src/login/pages/Terms.vue +56 -0
  285. package/src/login/pages/UpdateEmail.vue +100 -0
  286. package/src/login/pages/WebauthnAuthenticate.useScript.ts +75 -0
  287. package/src/login/pages/WebauthnAuthenticate.vue +186 -0
  288. package/src/login/pages/WebauthnError.vue +84 -0
  289. package/src/login/pages/WebauthnRegister.useScript.ts +109 -0
  290. package/src/login/pages/WebauthnRegister.vue +105 -0
  291. package/src/tools/useInsertLinkTags.ts +62 -0
  292. package/src/tools/useInsertScriptTags.ts +75 -0
  293. package/src/tools/useSetClassName.ts +15 -0
  294. package/stories/account/KcContext.ts +13 -0
  295. package/stories/account/KcContextMock.ts +26 -0
  296. package/stories/account/KcPage.vue +26 -0
  297. package/stories/account/KcPageStory.vue +13 -0
  298. package/stories/account/i18n.ts +7 -0
  299. package/stories/account/pages/Account.stories.ts +22 -0
  300. package/stories/account/pages/Applications.stories.ts +70 -0
  301. package/stories/account/pages/FederatedIdentity.stories.ts +64 -0
  302. package/stories/account/pages/Log.stories.ts +42 -0
  303. package/stories/account/pages/Password.stories.ts +22 -0
  304. package/stories/account/pages/Sessions.stories.ts +41 -0
  305. package/stories/account/pages/Totp.stories.ts +33 -0
  306. package/stories/kc.gen.ts +17 -0
  307. package/stories/login/KcContext.ts +13 -0
  308. package/stories/login/KcContextMock.ts +26 -0
  309. package/stories/login/KcPage.vue +28 -0
  310. package/stories/login/KcPageStory.vue +13 -0
  311. package/stories/login/i18n.ts +7 -0
  312. package/stories/login/pages/Code.stories.ts +50 -0
  313. package/stories/login/pages/DeleteAccountConfirm.stories.ts +32 -0
  314. package/stories/login/pages/DeleteCredential.stories.ts +23 -0
  315. package/stories/login/pages/Error.stories.ts +53 -0
  316. package/stories/login/pages/FrontchannelLogout.stories.ts +24 -0
  317. package/stories/login/pages/IdpReviewUserProfile.stories.ts +56 -0
  318. package/stories/login/pages/Info.stories.ts +52 -0
  319. package/stories/login/pages/LinkIdpAction.stories.ts +30 -0
  320. package/stories/login/pages/Login.stories.ts +76 -0
  321. package/stories/login/pages/LoginConfigTotp.stories.ts +53 -0
  322. package/stories/login/pages/LoginIdpLinkConfirm.stories.ts +34 -0
  323. package/stories/login/pages/LoginIdpLinkConfirmOverride.stories.ts +14 -0
  324. package/stories/login/pages/LoginIdpLinkEmail.stories.ts +60 -0
  325. package/stories/login/pages/LoginOauth2DeviceVerifyUserCode.stories.ts +42 -0
  326. package/stories/login/pages/LoginOauthGrant.stories.ts +95 -0
  327. package/stories/login/pages/LoginOtp.stories.ts +92 -0
  328. package/stories/login/pages/LoginPageExpired.stories.ts +29 -0
  329. package/stories/login/pages/LoginPasskeysConditionalAuthenticate.stories.ts +14 -0
  330. package/stories/login/pages/LoginPassword.stories.ts +49 -0
  331. package/stories/login/pages/LoginRecoveryAuthnCodeConfig.stories.ts +28 -0
  332. package/stories/login/pages/LoginRecoveryAuthnCodeInput.stories.ts +14 -0
  333. package/stories/login/pages/LoginResetOtp.stories.ts +69 -0
  334. package/stories/login/pages/LoginResetPassword.stories.ts +48 -0
  335. package/stories/login/pages/LoginUpdatePassword.stories.ts +52 -0
  336. package/stories/login/pages/LoginUpdateProfile.stories.ts +29 -0
  337. package/stories/login/pages/LoginUsername.stories.ts +25 -0
  338. package/stories/login/pages/LoginVerifyEmail.stories.ts +63 -0
  339. package/stories/login/pages/LoginX509Info.stories.ts +29 -0
  340. package/stories/login/pages/LogoutConfirm.stories.ts +35 -0
  341. package/stories/login/pages/Register.stories.ts +76 -0
  342. package/stories/login/pages/SamlPostForm.stories.ts +14 -0
  343. package/stories/login/pages/SelectAuthenticator.stories.ts +89 -0
  344. package/stories/login/pages/SelectOrganization.stories.ts +63 -0
  345. package/stories/login/pages/Terms.stories.ts +78 -0
  346. package/stories/login/pages/UpdateEmail.stories.ts +28 -0
  347. package/stories/login/pages/WebauthnAuthenticate.stories.ts +147 -0
  348. package/stories/login/pages/WebauthnError.stories.ts +77 -0
  349. package/stories/login/pages/WebauthnRegister.stories.ts +54 -0
@@ -0,0 +1,53 @@
1
+ import type { Attribute, PasswordPolicies, Validators } from 'keycloakify/login/KcContext';
2
+ import * as reactlessApi from 'keycloakify/login/lib/getUserProfileApi';
3
+ import { type ComputedRef, type VNode } from 'vue';
4
+ import type { I18n } from '../i18n/i18n';
5
+ export { getButtonToDisplayForMultivaluedAttributeField } from 'keycloakify/login/lib/getUserProfileApi';
6
+ export type FormFieldError = {
7
+ errorMessage: VNode;
8
+ errorMessageStr: string;
9
+ source: FormFieldError.Source;
10
+ fieldIndex: number | undefined;
11
+ };
12
+ export declare namespace FormFieldError {
13
+ type Source = Source.Validator | Source.PasswordPolicy | Source.Server | Source.Other;
14
+ namespace Source {
15
+ type Validator = {
16
+ type: 'validator';
17
+ name: keyof Validators;
18
+ };
19
+ type PasswordPolicy = {
20
+ type: 'passwordPolicy';
21
+ name: keyof PasswordPolicies;
22
+ };
23
+ type Server = {
24
+ type: 'server';
25
+ };
26
+ type Other = {
27
+ type: 'other';
28
+ rule: 'passwordConfirmMatchesPassword' | 'requiredField';
29
+ };
30
+ }
31
+ }
32
+ export type FormFieldState = {
33
+ attribute: Attribute;
34
+ displayableErrors: FormFieldError[];
35
+ valueOrValues: string | string[];
36
+ };
37
+ export type FormState = {
38
+ isFormSubmittable: boolean;
39
+ formFieldStates: FormFieldState[];
40
+ };
41
+ export type FormAction = reactlessApi.FormAction;
42
+ export type KcContextLike = reactlessApi.KcContextLike;
43
+ export type I18nLike = Pick<I18n, 'advancedMsg' | 'advancedMsgStr'>;
44
+ export type ParamsOfUseUserProfileForm = {
45
+ kcContext: KcContextLike;
46
+ doMakeUserConfirmPassword: boolean;
47
+ i18n: I18nLike;
48
+ };
49
+ export type ReturnTypeOfUseUserProfileForm = {
50
+ formState: ComputedRef<FormState>;
51
+ dispatchFormAction: (action: FormAction) => void;
52
+ };
53
+ export declare function useUserProfileForm(params: ParamsOfUseUserProfileForm): ReturnTypeOfUseUserProfileForm;
@@ -0,0 +1,50 @@
1
+ import * as reactlessApi from "keycloakify/login/lib/getUserProfileApi";
2
+ import { assert } from "tsafe/assert";
3
+ import { computed, onMounted, onUnmounted, ref } from "vue";
4
+ import { getButtonToDisplayForMultivaluedAttributeField } from "keycloakify/login/lib/getUserProfileApi";
5
+ {
6
+ assert();
7
+ }
8
+ {
9
+ assert();
10
+ }
11
+ {
12
+ assert();
13
+ }
14
+ {
15
+ assert();
16
+ }
17
+ function useUserProfileForm(params) {
18
+ const { doMakeUserConfirmPassword, i18n, kcContext } = params;
19
+ const { advancedMsg, advancedMsgStr } = i18n;
20
+ const api = reactlessApi.getUserProfileApi({
21
+ kcContext,
22
+ doMakeUserConfirmPassword
23
+ });
24
+ const formState_reactless = ref(api.getFormState());
25
+ let unsubscribe;
26
+ onMounted(() => {
27
+ unsubscribe = api.subscribeToFormState(() => {
28
+ formState_reactless.value = api.getFormState();
29
+ }).unsubscribe;
30
+ });
31
+ onUnmounted(() => unsubscribe?.());
32
+ const formState = computed(() => ({
33
+ isFormSubmittable: formState_reactless.value.isFormSubmittable,
34
+ formFieldStates: formState_reactless.value.formFieldStates.map((formFieldState_reactless) => ({
35
+ attribute: formFieldState_reactless.attribute,
36
+ valueOrValues: formFieldState_reactless.valueOrValues,
37
+ displayableErrors: formFieldState_reactless.displayableErrors.map((formFieldError_reactless) => ({
38
+ errorMessage: advancedMsg(...formFieldError_reactless.advancedMsgArgs),
39
+ errorMessageStr: advancedMsgStr(...formFieldError_reactless.advancedMsgArgs),
40
+ source: formFieldError_reactless.source,
41
+ fieldIndex: formFieldError_reactless.fieldIndex
42
+ }))
43
+ }))
44
+ }));
45
+ return { formState, dispatchFormAction: api.dispatchFormAction };
46
+ }
47
+ export {
48
+ getButtonToDisplayForMultivaluedAttributeField,
49
+ useUserProfileForm
50
+ };
@@ -0,0 +1,54 @@
1
+ <script setup lang="ts">
2
+ import { kcSanitize } from 'keycloakify/lib/kcSanitize';
3
+ import type { KcContext } from 'keycloakify/login/KcContext';
4
+ import { getKcClsx } from 'keycloakify/login/lib/kcClsx';
5
+ import type { I18n } from '../i18n/i18n';
6
+ import type { PageProps } from './PageProps';
7
+
8
+ const props = defineProps<PageProps<Extract<KcContext, { pageId: 'code.ftl' }>, I18n>>();
9
+
10
+ const { kcClsx } = getKcClsx({
11
+ doUseDefaultCss: props.doUseDefaultCss,
12
+ classes: props.classes,
13
+ });
14
+
15
+ const kcContext = props.kcContext;
16
+ const { code } = kcContext;
17
+ </script>
18
+
19
+ <template>
20
+ <component
21
+ :is="Template"
22
+ :kcContext="kcContext"
23
+ :i18n="props.i18n"
24
+ :doUseDefaultCss="doUseDefaultCss"
25
+ :classes="classes"
26
+ >
27
+ <template #header>
28
+ <component
29
+ v-if="code.success"
30
+ :is="props.i18n.msg('codeSuccessTitle')"
31
+ />
32
+ <component
33
+ v-else
34
+ :is="props.i18n.msg('codeErrorTitle', code.error)"
35
+ />
36
+ </template>
37
+
38
+ <div id="kc-code">
39
+ <template v-if="code.success">
40
+ <p><component :is="props.i18n.msg('copyCodeInstruction')" /></p>
41
+ <input
42
+ id="code"
43
+ :class="kcClsx('kcTextareaClass')"
44
+ :value="code.code"
45
+ />
46
+ </template>
47
+ <p
48
+ v-else-if="code.error"
49
+ id="error"
50
+ v-html="kcSanitize(code.error)"
51
+ />
52
+ </div>
53
+ </component>
54
+ </template>
@@ -0,0 +1,9 @@
1
+ import type { KcContext } from 'keycloakify/login/KcContext';
2
+ import type { I18n } from '../i18n/i18n';
3
+ import type { PageProps } from './PageProps';
4
+ type __VLS_Props = PageProps<Extract<KcContext, {
5
+ pageId: 'code.ftl';
6
+ }>, I18n>;
7
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
8
+ declare const _default: typeof __VLS_export;
9
+ export default _default;
@@ -0,0 +1,69 @@
1
+ <script setup lang="ts">
2
+ import type { KcContext } from 'keycloakify/login/KcContext';
3
+ import { getKcClsx } from 'keycloakify/login/lib/kcClsx';
4
+ import type { I18n } from '../i18n/i18n';
5
+ import type { PageProps } from './PageProps';
6
+
7
+ const props = defineProps<PageProps<Extract<KcContext, { pageId: 'delete-account-confirm.ftl' }>, I18n>>();
8
+
9
+ const { kcClsx } = getKcClsx({
10
+ doUseDefaultCss: props.doUseDefaultCss,
11
+ classes: props.classes,
12
+ });
13
+
14
+ const kcContext = props.kcContext;
15
+ const { url, triggered_from_aia } = kcContext;
16
+ </script>
17
+
18
+ <template>
19
+ <component
20
+ :is="Template"
21
+ :kcContext="kcContext"
22
+ :i18n="props.i18n"
23
+ :doUseDefaultCss="doUseDefaultCss"
24
+ :classes="classes"
25
+ >
26
+ <template #header>
27
+ <component :is="props.i18n.msg('deleteAccountConfirm')" />
28
+ </template>
29
+
30
+ <form
31
+ :action="url.loginAction"
32
+ class="form-vertical"
33
+ method="post"
34
+ >
35
+ <div
36
+ class="alert alert-warning"
37
+ style="margin-top: 0; margin-bottom: 30px"
38
+ >
39
+ <span class="pficon pficon-warning-triangle-o"></span>
40
+ <component :is="props.i18n.msg('irreversibleAction')" />
41
+ </div>
42
+ <p><component :is="props.i18n.msg('deletingImplies')" /></p>
43
+ <ul style="color: #72767b; list-style: disc; list-style-position: inside">
44
+ <li><component :is="props.i18n.msg('loggingOutImmediately')" /></li>
45
+ <li><component :is="props.i18n.msg('errasingData')" /></li>
46
+ </ul>
47
+ <p class="delete-account-text">
48
+ <component :is="props.i18n.msg('finalDeletionConfirmation')" />
49
+ </p>
50
+ <div id="kc-form-buttons">
51
+ <input
52
+ :class="kcClsx('kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonLargeClass')"
53
+ type="submit"
54
+ :value="props.i18n.msgStr('doConfirmDelete')"
55
+ />
56
+ <button
57
+ v-if="triggered_from_aia"
58
+ :class="kcClsx('kcButtonClass', 'kcButtonDefaultClass', 'kcButtonLargeClass')"
59
+ style="margin-left: calc(100% - 220px)"
60
+ type="submit"
61
+ name="cancel-aia"
62
+ value="true"
63
+ >
64
+ {{ props.i18n.msgStr('doCancel') }}
65
+ </button>
66
+ </div>
67
+ </form>
68
+ </component>
69
+ </template>
@@ -0,0 +1,9 @@
1
+ import type { KcContext } from 'keycloakify/login/KcContext';
2
+ import type { I18n } from '../i18n/i18n';
3
+ import type { PageProps } from './PageProps';
4
+ type __VLS_Props = PageProps<Extract<KcContext, {
5
+ pageId: 'delete-account-confirm.ftl';
6
+ }>, I18n>;
7
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
8
+ declare const _default: typeof __VLS_export;
9
+ export default _default;
@@ -0,0 +1,56 @@
1
+ <script setup lang="ts">
2
+ import type { KcContext } from 'keycloakify/login/KcContext';
3
+ import { getKcClsx } from 'keycloakify/login/lib/kcClsx';
4
+ import type { I18n } from '../i18n/i18n';
5
+ import type { PageProps } from './PageProps';
6
+
7
+ const props = defineProps<PageProps<Extract<KcContext, { pageId: 'delete-credential.ftl' }>, I18n>>();
8
+
9
+ const { kcClsx } = getKcClsx({
10
+ doUseDefaultCss: props.doUseDefaultCss,
11
+ classes: props.classes,
12
+ });
13
+
14
+ const kcContext = props.kcContext;
15
+ const { url, credentialLabel } = kcContext;
16
+ </script>
17
+
18
+ <template>
19
+ <component
20
+ :is="Template"
21
+ :kcContext="kcContext"
22
+ :i18n="props.i18n"
23
+ :doUseDefaultCss="doUseDefaultCss"
24
+ :classes="classes"
25
+ :displayMessage="false"
26
+ >
27
+ <template #header>
28
+ <component :is="props.i18n.msg('deleteCredentialTitle', credentialLabel)" />
29
+ </template>
30
+
31
+ <div id="kc-delete-text">
32
+ <component :is="props.i18n.msg('deleteCredentialMessage', credentialLabel)" />
33
+ </div>
34
+ <form
35
+ class="form-actions"
36
+ :action="url.loginAction"
37
+ method="POST"
38
+ >
39
+ <input
40
+ :class="kcClsx('kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonLargeClass')"
41
+ name="accept"
42
+ id="kc-accept"
43
+ type="submit"
44
+ :value="props.i18n.msgStr('doConfirmDelete')"
45
+ />
46
+ <input
47
+ :class="kcClsx('kcButtonClass', 'kcButtonDefaultClass', 'kcButtonLargeClass')"
48
+ name="cancel-aia"
49
+ :value="props.i18n.msgStr('doCancel')"
50
+ id="kc-decline"
51
+ type="submit"
52
+ />
53
+ </form>
54
+ <div class="clearfix" />
55
+ </component>
56
+ </template>
@@ -0,0 +1,9 @@
1
+ import type { KcContext } from 'keycloakify/login/KcContext';
2
+ import type { I18n } from '../i18n/i18n';
3
+ import type { PageProps } from './PageProps';
4
+ type __VLS_Props = PageProps<Extract<KcContext, {
5
+ pageId: 'delete-credential.ftl';
6
+ }>, I18n>;
7
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
8
+ declare const _default: typeof __VLS_export;
9
+ export default _default;
@@ -0,0 +1,41 @@
1
+ <script setup lang="ts">
2
+ import { kcSanitize } from 'keycloakify/lib/kcSanitize';
3
+ import type { KcContext } from 'keycloakify/login/KcContext';
4
+ import type { I18n } from '../i18n/i18n';
5
+ import type { PageProps } from './PageProps';
6
+
7
+ const props = defineProps<PageProps<Extract<KcContext, { pageId: 'error.ftl' }>, I18n>>();
8
+
9
+ const kcContext = props.kcContext;
10
+ const { message, client, skipLink } = kcContext;
11
+ </script>
12
+
13
+ <template>
14
+ <component
15
+ :is="Template"
16
+ :kcContext="kcContext"
17
+ :i18n="props.i18n"
18
+ :doUseDefaultCss="doUseDefaultCss"
19
+ :classes="classes"
20
+ :displayMessage="false"
21
+ >
22
+ <template #header>
23
+ <component :is="props.i18n.msg('errorTitle')" />
24
+ </template>
25
+
26
+ <div id="kc-error-message">
27
+ <p
28
+ class="instruction"
29
+ v-html="kcSanitize(message.summary)"
30
+ />
31
+ <p v-if="!skipLink && !!client?.baseUrl">
32
+ <a
33
+ id="backToApplication"
34
+ :href="client.baseUrl"
35
+ >
36
+ <component :is="props.i18n.msg('backToApplication')" />
37
+ </a>
38
+ </p>
39
+ </div>
40
+ </component>
41
+ </template>
@@ -0,0 +1,9 @@
1
+ import type { KcContext } from 'keycloakify/login/KcContext';
2
+ import type { I18n } from '../i18n/i18n';
3
+ import type { PageProps } from './PageProps';
4
+ type __VLS_Props = PageProps<Extract<KcContext, {
5
+ pageId: 'error.ftl';
6
+ }>, I18n>;
7
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
8
+ declare const _default: typeof __VLS_export;
9
+ export default _default;
@@ -0,0 +1,67 @@
1
+ <script setup lang="ts">
2
+ import type { KcContext } from 'keycloakify/login/KcContext';
3
+ import { ref, watch } from 'vue';
4
+ import type { I18n } from '../i18n/i18n';
5
+ import type { PageProps } from './PageProps';
6
+
7
+ const props = defineProps<PageProps<Extract<KcContext, { pageId: 'frontchannel-logout.ftl' }>, I18n>>();
8
+
9
+ const kcContext = props.kcContext;
10
+ const { logout } = kcContext;
11
+
12
+ const iframeLoadCount = ref(0);
13
+
14
+ watch(iframeLoadCount, (count) => {
15
+ if (!logout.logoutRedirectUri) {
16
+ return;
17
+ }
18
+
19
+ if (count !== logout.clients.length) {
20
+ return;
21
+ }
22
+
23
+ window.location.replace(logout.logoutRedirectUri);
24
+ });
25
+
26
+ function onIframeLoad() {
27
+ iframeLoadCount.value++;
28
+ }
29
+ </script>
30
+
31
+ <template>
32
+ <component
33
+ :is="Template"
34
+ :kcContext="kcContext"
35
+ :i18n="props.i18n"
36
+ :doUseDefaultCss="doUseDefaultCss"
37
+ :classes="classes"
38
+ :documentTitle="props.i18n.msgStr('frontchannel-logout.title')"
39
+ >
40
+ <template #header>
41
+ <component :is="props.i18n.msg('frontchannel-logout.title')" />
42
+ </template>
43
+
44
+ <p><component :is="props.i18n.msg('frontchannel-logout.message')" /></p>
45
+ <ul>
46
+ <li
47
+ v-for="client in logout.clients"
48
+ :key="client.name"
49
+ >
50
+ {{ client.name }}
51
+ <iframe
52
+ :src="client.frontChannelLogoutUrl"
53
+ style="display: none"
54
+ @load="onIframeLoad"
55
+ />
56
+ </li>
57
+ </ul>
58
+ <a
59
+ v-if="logout.logoutRedirectUri !== undefined"
60
+ id="continue"
61
+ class="btn btn-primary"
62
+ :href="logout.logoutRedirectUri"
63
+ >
64
+ <component :is="props.i18n.msg('doContinue')" />
65
+ </a>
66
+ </component>
67
+ </template>
@@ -0,0 +1,9 @@
1
+ import type { KcContext } from 'keycloakify/login/KcContext';
2
+ import type { I18n } from '../i18n/i18n';
3
+ import type { PageProps } from './PageProps';
4
+ type __VLS_Props = PageProps<Extract<KcContext, {
5
+ pageId: 'frontchannel-logout.ftl';
6
+ }>, I18n>;
7
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
8
+ declare const _default: typeof __VLS_export;
9
+ export default _default;
@@ -0,0 +1,77 @@
1
+ <script setup lang="ts">
2
+ import type { KcContext } from 'keycloakify/login/KcContext';
3
+ import { getKcClsx } from 'keycloakify/login/lib/kcClsx';
4
+ import { ref, type Component } from 'vue';
5
+ import type { UserProfileFormFieldsProps } from '../components/UserProfileFormFieldsProps';
6
+ import type { I18n } from '../i18n/i18n';
7
+ import type { PageProps } from './PageProps';
8
+
9
+ const props = defineProps<
10
+ PageProps<Extract<KcContext, { pageId: 'idp-review-user-profile.ftl' }>, I18n> & {
11
+ UserProfileFormFields: Component<UserProfileFormFieldsProps>;
12
+ doMakeUserConfirmPassword: boolean;
13
+ }
14
+ >();
15
+
16
+ const { kcClsx } = getKcClsx({
17
+ doUseDefaultCss: props.doUseDefaultCss,
18
+ classes: props.classes,
19
+ });
20
+
21
+ const kcContext = props.kcContext;
22
+ const { url, messagesPerField } = kcContext;
23
+
24
+ const isFormSubmittable = ref(false);
25
+ </script>
26
+
27
+ <template>
28
+ <component
29
+ :is="Template"
30
+ :kcContext="kcContext"
31
+ :i18n="props.i18n"
32
+ :doUseDefaultCss="doUseDefaultCss"
33
+ :classes="classes"
34
+ :displayMessage="messagesPerField.exists('global')"
35
+ :displayRequiredFields="true"
36
+ >
37
+ <template #header>
38
+ <component :is="props.i18n.msg('loginIdpReviewProfileTitle')" />
39
+ </template>
40
+
41
+ <form
42
+ id="kc-idp-review-profile-form"
43
+ :class="kcClsx('kcFormClass')"
44
+ :action="url.loginAction"
45
+ method="post"
46
+ >
47
+ <component
48
+ :is="UserProfileFormFields"
49
+ :kcContext="kcContext"
50
+ :i18n="props.i18n"
51
+ :kcClsx="kcClsx"
52
+ :onIsFormSubmittableValueChange="(value: boolean) => (isFormSubmittable = value)"
53
+ :doMakeUserConfirmPassword="doMakeUserConfirmPassword"
54
+ />
55
+
56
+ <div :class="kcClsx('kcFormGroupClass')">
57
+ <div
58
+ id="kc-form-options"
59
+ :class="kcClsx('kcFormOptionsClass')"
60
+ >
61
+ <div :class="kcClsx('kcFormOptionsWrapperClass')" />
62
+ </div>
63
+ <div
64
+ id="kc-form-buttons"
65
+ :class="kcClsx('kcFormButtonsClass')"
66
+ >
67
+ <input
68
+ :disabled="!isFormSubmittable"
69
+ :class="kcClsx('kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass')"
70
+ type="submit"
71
+ :value="props.i18n.msgStr('doSubmit')"
72
+ />
73
+ </div>
74
+ </div>
75
+ </form>
76
+ </component>
77
+ </template>
@@ -0,0 +1,14 @@
1
+ import type { KcContext } from 'keycloakify/login/KcContext';
2
+ import { type Component } from 'vue';
3
+ import type { UserProfileFormFieldsProps } from '../components/UserProfileFormFieldsProps';
4
+ import type { I18n } from '../i18n/i18n';
5
+ import type { PageProps } from './PageProps';
6
+ type __VLS_Props = PageProps<Extract<KcContext, {
7
+ pageId: 'idp-review-user-profile.ftl';
8
+ }>, I18n> & {
9
+ UserProfileFormFields: Component<UserProfileFormFieldsProps>;
10
+ doMakeUserConfirmPassword: boolean;
11
+ };
12
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
13
+ declare const _default: typeof __VLS_export;
14
+ export default _default;
@@ -0,0 +1,61 @@
1
+ <script setup lang="ts">
2
+ import { kcSanitize } from 'keycloakify/lib/kcSanitize';
3
+ import type { KcContext } from 'keycloakify/login/KcContext';
4
+ import { computed } from 'vue';
5
+ import type { I18n } from '../i18n/i18n';
6
+ import type { PageProps } from './PageProps';
7
+
8
+ const props = defineProps<PageProps<Extract<KcContext, { pageId: 'info.ftl' }>, I18n>>();
9
+
10
+ const kcContext = props.kcContext;
11
+ const { messageHeader, message, requiredActions, skipLink, pageRedirectUri, actionUri, client } = kcContext;
12
+
13
+ const headerHtml = computed(() =>
14
+ kcSanitize(messageHeader ? props.i18n.advancedMsgStr(messageHeader) : message.summary),
15
+ );
16
+
17
+ const bodyHtml = computed(() => {
18
+ let html = message.summary?.trim() ?? '';
19
+
20
+ if (requiredActions) {
21
+ html += ' <b>';
22
+ html += requiredActions.map((action) => props.i18n.advancedMsgStr(`requiredAction.${action}`)).join(', ');
23
+ html += '</b>';
24
+ }
25
+
26
+ return kcSanitize(html);
27
+ });
28
+ </script>
29
+
30
+ <template>
31
+ <component
32
+ :is="Template"
33
+ :kcContext="kcContext"
34
+ :i18n="props.i18n"
35
+ :doUseDefaultCss="doUseDefaultCss"
36
+ :classes="classes"
37
+ :displayMessage="false"
38
+ >
39
+ <template #header>
40
+ <span v-html="headerHtml" />
41
+ </template>
42
+
43
+ <div id="kc-info-message">
44
+ <p
45
+ class="instruction"
46
+ v-html="bodyHtml"
47
+ />
48
+ <template v-if="!skipLink">
49
+ <p v-if="pageRedirectUri">
50
+ <a :href="pageRedirectUri"><component :is="props.i18n.msg('backToApplication')" /></a>
51
+ </p>
52
+ <p v-else-if="actionUri">
53
+ <a :href="actionUri"><component :is="props.i18n.msg('proceedWithAction')" /></a>
54
+ </p>
55
+ <p v-else-if="client.baseUrl">
56
+ <a :href="client.baseUrl"><component :is="props.i18n.msg('backToApplication')" /></a>
57
+ </p>
58
+ </template>
59
+ </div>
60
+ </component>
61
+ </template>
@@ -0,0 +1,9 @@
1
+ import type { KcContext } from 'keycloakify/login/KcContext';
2
+ import type { I18n } from '../i18n/i18n';
3
+ import type { PageProps } from './PageProps';
4
+ type __VLS_Props = PageProps<Extract<KcContext, {
5
+ pageId: 'info.ftl';
6
+ }>, I18n>;
7
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
8
+ declare const _default: typeof __VLS_export;
9
+ export default _default;