keycloak-theme-editor 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 (343) hide show
  1. package/LICENSE +200 -0
  2. package/README.md +147 -0
  3. package/bin/cli.js +1270 -0
  4. package/dist/assets/EditorContent-CB5V7FK7.js +134 -0
  5. package/dist/assets/RedHatDisplay-Bold-4NfIjmgI.woff2 +0 -0
  6. package/dist/assets/RedHatDisplay-BoldItalic-pTGisv8w.woff2 +0 -0
  7. package/dist/assets/RedHatDisplay-Medium-C1BzJLzv.woff2 +0 -0
  8. package/dist/assets/RedHatDisplay-MediumItalic-ZwmBpJRm.woff2 +0 -0
  9. package/dist/assets/RedHatDisplayVF-CYDHf1NI.woff2 +0 -0
  10. package/dist/assets/RedHatDisplayVF-Italic-CRpusWc8.woff2 +0 -0
  11. package/dist/assets/RedHatMono-Italic-CV5TsSDj.woff2 +0 -0
  12. package/dist/assets/RedHatMono-Regular-e08YtVYm.woff2 +0 -0
  13. package/dist/assets/RedHatMonoVF-C4fMH6Vz.woff2 +0 -0
  14. package/dist/assets/RedHatMonoVF-Italic-DGQo2ogW.woff2 +0 -0
  15. package/dist/assets/RedHatText-Italic-BLl-MYdo.woff2 +0 -0
  16. package/dist/assets/RedHatText-Medium-CFPgPIaW.woff2 +0 -0
  17. package/dist/assets/RedHatText-MediumItalic-B14GYUh6.woff2 +0 -0
  18. package/dist/assets/RedHatText-Regular-BDARZx4I.woff2 +0 -0
  19. package/dist/assets/RedHatTextVF-Italic-Dkj_WqbA.woff2 +0 -0
  20. package/dist/assets/RedHatTextVF-wYvZ7prR.woff2 +0 -0
  21. package/dist/assets/StylingPanel-BaNmfAl5.js +10 -0
  22. package/dist/assets/codemirror-CPFVGfiJ.js +12 -0
  23. package/dist/assets/fa-solid-900-DguXoeIz.woff2 +0 -0
  24. package/dist/assets/fflate-BiS96k4e.js +1 -0
  25. package/dist/assets/index-Dm1pQXDh.css +1 -0
  26. package/dist/assets/index-DtQiX03K.js +2 -0
  27. package/dist/assets/mdi-C-ens7Qz.js +1 -0
  28. package/dist/assets/patternfly-BbS2qD2Z.js +1 -0
  29. package/dist/assets/patternfly-ZUQBYYQM.css +1 -0
  30. package/dist/assets/patternfly-addons-C5K6YGth.css +1 -0
  31. package/dist/assets/patternfly.min-DYq-aGv-.css +1 -0
  32. package/dist/assets/pf-v5-pficon-Di6gTOT4.woff2 +0 -0
  33. package/dist/assets/pf-v6-pficon-Dy6oiu9u.woff2 +0 -0
  34. package/dist/assets/react-BwQcSK_q.js +9 -0
  35. package/dist/assets/vendor-DPuiCcTY.js +2 -0
  36. package/dist/assets/zustand-Cd1unGLA.js +1 -0
  37. package/dist/index.html +17 -0
  38. package/dist/keycloak-dev-resources/assets/fonts/RedHatDisplay/RedHatDisplay-Black.woff2 +0 -0
  39. package/dist/keycloak-dev-resources/assets/fonts/RedHatDisplay/RedHatDisplay-BlackItalic.woff2 +0 -0
  40. package/dist/keycloak-dev-resources/assets/fonts/RedHatDisplay/RedHatDisplay-Bold.woff2 +0 -0
  41. package/dist/keycloak-dev-resources/assets/fonts/RedHatDisplay/RedHatDisplay-BoldItalic.woff2 +0 -0
  42. package/dist/keycloak-dev-resources/assets/fonts/RedHatDisplay/RedHatDisplay-Italic.woff2 +0 -0
  43. package/dist/keycloak-dev-resources/assets/fonts/RedHatDisplay/RedHatDisplay-Light.woff2 +0 -0
  44. package/dist/keycloak-dev-resources/assets/fonts/RedHatDisplay/RedHatDisplay-LightItalic.woff2 +0 -0
  45. package/dist/keycloak-dev-resources/assets/fonts/RedHatDisplay/RedHatDisplay-Medium.woff2 +0 -0
  46. package/dist/keycloak-dev-resources/assets/fonts/RedHatDisplay/RedHatDisplay-MediumItalic.woff2 +0 -0
  47. package/dist/keycloak-dev-resources/assets/fonts/RedHatDisplay/RedHatDisplay-Regular.woff2 +0 -0
  48. package/dist/keycloak-dev-resources/assets/fonts/RedHatDisplay/RedHatDisplayVF-Italic.woff2 +0 -0
  49. package/dist/keycloak-dev-resources/assets/fonts/RedHatDisplay/RedHatDisplayVF.woff2 +0 -0
  50. package/dist/keycloak-dev-resources/assets/fonts/RedHatDisplay-Black.woff2 +0 -0
  51. package/dist/keycloak-dev-resources/assets/fonts/RedHatDisplay-BlackItalic.woff2 +0 -0
  52. package/dist/keycloak-dev-resources/assets/fonts/RedHatDisplay-Bold.woff2 +0 -0
  53. package/dist/keycloak-dev-resources/assets/fonts/RedHatDisplay-BoldItalic.woff2 +0 -0
  54. package/dist/keycloak-dev-resources/assets/fonts/RedHatDisplay-Italic.woff2 +0 -0
  55. package/dist/keycloak-dev-resources/assets/fonts/RedHatDisplay-Light.woff2 +0 -0
  56. package/dist/keycloak-dev-resources/assets/fonts/RedHatDisplay-LightItalic.woff2 +0 -0
  57. package/dist/keycloak-dev-resources/assets/fonts/RedHatDisplay-Medium.woff2 +0 -0
  58. package/dist/keycloak-dev-resources/assets/fonts/RedHatDisplay-MediumItalic.woff2 +0 -0
  59. package/dist/keycloak-dev-resources/assets/fonts/RedHatDisplay-Regular.woff2 +0 -0
  60. package/dist/keycloak-dev-resources/assets/fonts/RedHatDisplayVF-Italic.woff2 +0 -0
  61. package/dist/keycloak-dev-resources/assets/fonts/RedHatDisplayVF.woff2 +0 -0
  62. package/dist/keycloak-dev-resources/assets/fonts/RedHatMono/RedHatMono-Bold.woff2 +0 -0
  63. package/dist/keycloak-dev-resources/assets/fonts/RedHatMono/RedHatMono-BoldItalic.woff2 +0 -0
  64. package/dist/keycloak-dev-resources/assets/fonts/RedHatMono/RedHatMono-Italic.woff2 +0 -0
  65. package/dist/keycloak-dev-resources/assets/fonts/RedHatMono/RedHatMono-Light.woff2 +0 -0
  66. package/dist/keycloak-dev-resources/assets/fonts/RedHatMono/RedHatMono-LightItalic.woff2 +0 -0
  67. package/dist/keycloak-dev-resources/assets/fonts/RedHatMono/RedHatMono-Medium.woff2 +0 -0
  68. package/dist/keycloak-dev-resources/assets/fonts/RedHatMono/RedHatMono-MediumItalic.woff2 +0 -0
  69. package/dist/keycloak-dev-resources/assets/fonts/RedHatMono/RedHatMono-Regular.woff2 +0 -0
  70. package/dist/keycloak-dev-resources/assets/fonts/RedHatMono/RedHatMonoVF-Italic.woff2 +0 -0
  71. package/dist/keycloak-dev-resources/assets/fonts/RedHatMono/RedHatMonoVF.woff2 +0 -0
  72. package/dist/keycloak-dev-resources/assets/fonts/RedHatMono-Bold.woff2 +0 -0
  73. package/dist/keycloak-dev-resources/assets/fonts/RedHatMono-BoldItalic.woff2 +0 -0
  74. package/dist/keycloak-dev-resources/assets/fonts/RedHatMono-Italic.woff2 +0 -0
  75. package/dist/keycloak-dev-resources/assets/fonts/RedHatMono-Light.woff2 +0 -0
  76. package/dist/keycloak-dev-resources/assets/fonts/RedHatMono-LightItalic.woff2 +0 -0
  77. package/dist/keycloak-dev-resources/assets/fonts/RedHatMono-Medium.woff2 +0 -0
  78. package/dist/keycloak-dev-resources/assets/fonts/RedHatMono-MediumItalic.woff2 +0 -0
  79. package/dist/keycloak-dev-resources/assets/fonts/RedHatMono-Regular.woff2 +0 -0
  80. package/dist/keycloak-dev-resources/assets/fonts/RedHatMonoVF-Italic.woff2 +0 -0
  81. package/dist/keycloak-dev-resources/assets/fonts/RedHatMonoVF.woff2 +0 -0
  82. package/dist/keycloak-dev-resources/assets/fonts/RedHatText/RedHatText-Bold.woff2 +0 -0
  83. package/dist/keycloak-dev-resources/assets/fonts/RedHatText/RedHatText-BoldItalic.woff2 +0 -0
  84. package/dist/keycloak-dev-resources/assets/fonts/RedHatText/RedHatText-Italic.woff2 +0 -0
  85. package/dist/keycloak-dev-resources/assets/fonts/RedHatText/RedHatText-Light.woff2 +0 -0
  86. package/dist/keycloak-dev-resources/assets/fonts/RedHatText/RedHatText-LightItalic.woff2 +0 -0
  87. package/dist/keycloak-dev-resources/assets/fonts/RedHatText/RedHatText-Medium.woff2 +0 -0
  88. package/dist/keycloak-dev-resources/assets/fonts/RedHatText/RedHatText-MediumItalic.woff2 +0 -0
  89. package/dist/keycloak-dev-resources/assets/fonts/RedHatText/RedHatText-Regular.woff2 +0 -0
  90. package/dist/keycloak-dev-resources/assets/fonts/RedHatText/RedHatTextVF-Italic.woff2 +0 -0
  91. package/dist/keycloak-dev-resources/assets/fonts/RedHatText/RedHatTextVF.woff2 +0 -0
  92. package/dist/keycloak-dev-resources/assets/fonts/RedHatText-Bold.woff2 +0 -0
  93. package/dist/keycloak-dev-resources/assets/fonts/RedHatText-BoldItalic.woff2 +0 -0
  94. package/dist/keycloak-dev-resources/assets/fonts/RedHatText-Italic.woff2 +0 -0
  95. package/dist/keycloak-dev-resources/assets/fonts/RedHatText-Light.woff2 +0 -0
  96. package/dist/keycloak-dev-resources/assets/fonts/RedHatText-LightItalic.woff2 +0 -0
  97. package/dist/keycloak-dev-resources/assets/fonts/RedHatText-Medium.woff2 +0 -0
  98. package/dist/keycloak-dev-resources/assets/fonts/RedHatText-MediumItalic.woff2 +0 -0
  99. package/dist/keycloak-dev-resources/assets/fonts/RedHatText-Regular.woff2 +0 -0
  100. package/dist/keycloak-dev-resources/assets/fonts/RedHatTextVF-Italic.woff2 +0 -0
  101. package/dist/keycloak-dev-resources/assets/fonts/RedHatTextVF.woff2 +0 -0
  102. package/dist/keycloak-dev-resources/assets/fonts/fa-solid-900.woff2 +0 -0
  103. package/dist/keycloak-dev-resources/assets/fonts/webfonts/fa-solid-900.woff2 +0 -0
  104. package/dist/keycloak-dev-resources/img/keycloak-bg-darken.svg +1 -0
  105. package/dist/keycloak-dev-resources/img/keycloak-bg.png +0 -0
  106. package/dist/keycloak-dev-resources/img/keycloak-logo-text.svg +1 -0
  107. package/dist/keycloak-dev-resources/patternfly-addons.css +8430 -0
  108. package/dist/keycloak-dev-resources/patternfly.min.css +2 -0
  109. package/dist/keycloak-dev-resources/themes/base/login/messages/messages_en.properties +5 -0
  110. package/dist/keycloak-dev-resources/themes/base/login/mock-extension-showcase.ftl +13 -0
  111. package/dist/keycloak-dev-resources/themes/base/login/resources/css/preview.css +5 -0
  112. package/dist/keycloak-dev-resources/themes/base/login/resources/css/quick-start.css +16 -0
  113. package/dist/keycloak-dev-resources/themes/base/login/resources/css/styles.css +2 -0
  114. package/dist/keycloak-dev-resources/themes/base/login/theme.properties +143 -0
  115. package/dist/keycloak-dev-resources/themes/horizontal-card/login/footer.ftl +32 -0
  116. package/dist/keycloak-dev-resources/themes/horizontal-card/login/messages/messages_en.properties +6 -0
  117. package/dist/keycloak-dev-resources/themes/horizontal-card/login/resources/css/preview.css +5 -0
  118. package/dist/keycloak-dev-resources/themes/horizontal-card/login/resources/css/quick-start.css +31 -0
  119. package/dist/keycloak-dev-resources/themes/horizontal-card/login/resources/css/styles.css +1149 -0
  120. package/dist/keycloak-dev-resources/themes/horizontal-card/login/template.ftl +234 -0
  121. package/dist/keycloak-dev-resources/themes/horizontal-card/login/theme.properties +142 -0
  122. package/dist/keycloak-dev-resources/themes/modern-gradient/login/footer.ftl +12 -0
  123. package/dist/keycloak-dev-resources/themes/modern-gradient/login/messages/messages_en.properties +6 -0
  124. package/dist/keycloak-dev-resources/themes/modern-gradient/login/resources/css/preview.css +13 -0
  125. package/dist/keycloak-dev-resources/themes/modern-gradient/login/resources/css/quick-start.css +39 -0
  126. package/dist/keycloak-dev-resources/themes/modern-gradient/login/resources/css/styles.css +1371 -0
  127. package/dist/keycloak-dev-resources/themes/modern-gradient/login/template.ftl +296 -0
  128. package/dist/keycloak-dev-resources/themes/modern-gradient/login/theme.properties +142 -0
  129. package/dist/keycloak-dev-resources/themes/themes.json +42 -0
  130. package/dist/keycloak-dev-resources/themes/v2/login/footer.ftl +15 -0
  131. package/dist/keycloak-dev-resources/themes/v2/login/messages/messages_en.properties +5 -0
  132. package/dist/keycloak-dev-resources/themes/v2/login/mock-extension-showcase.ftl +13 -0
  133. package/dist/keycloak-dev-resources/themes/v2/login/resources/css/preview.css +5 -0
  134. package/dist/keycloak-dev-resources/themes/v2/login/resources/css/quick-start.css +16 -0
  135. package/dist/keycloak-dev-resources/themes/v2/login/resources/css/styles.css +426 -0
  136. package/dist/keycloak-dev-resources/themes/v2/login/resources/img/keycloak-bg-darken.svg +1 -0
  137. package/dist/keycloak-dev-resources/themes/v2/login/resources/img/keycloak-bg.png +0 -0
  138. package/dist/keycloak-dev-resources/themes/v2/login/resources/img/keycloak-logo-text.svg +1 -0
  139. package/dist/keycloak-dev-resources/themes/v2/login/template.ftl +287 -0
  140. package/dist/keycloak-dev-resources/themes/v2/login/theme.properties +125 -0
  141. package/dist/keycloak-upstream/base/login/cli_splash.ftl +7 -0
  142. package/dist/keycloak-upstream/base/login/code.ftl +19 -0
  143. package/dist/keycloak-upstream/base/login/delete-account-confirm.ftl +33 -0
  144. package/dist/keycloak-upstream/base/login/delete-credential.ftl +15 -0
  145. package/dist/keycloak-upstream/base/login/error.ftl +16 -0
  146. package/dist/keycloak-upstream/base/login/footer.ftl +3 -0
  147. package/dist/keycloak-upstream/base/login/frontchannel-logout.ftl +30 -0
  148. package/dist/keycloak-upstream/base/login/idp-review-user-profile.ftl +23 -0
  149. package/dist/keycloak-upstream/base/login/info.ftl +24 -0
  150. package/dist/keycloak-upstream/base/login/link-idp-action.ftl +15 -0
  151. package/dist/keycloak-upstream/base/login/login-config-totp.ftl +115 -0
  152. package/dist/keycloak-upstream/base/login/login-idp-link-confirm-override.ftl +12 -0
  153. package/dist/keycloak-upstream/base/login/login-idp-link-confirm.ftl +15 -0
  154. package/dist/keycloak-upstream/base/login/login-idp-link-email.ftl +16 -0
  155. package/dist/keycloak-upstream/base/login/login-oauth-grant.ftl +68 -0
  156. package/dist/keycloak-upstream/base/login/login-oauth2-device-verify-user-code.ftl +31 -0
  157. package/dist/keycloak-upstream/base/login/login-otp.ftl +59 -0
  158. package/dist/keycloak-upstream/base/login/login-page-expired.ftl +11 -0
  159. package/dist/keycloak-upstream/base/login/login-passkeys-conditional-authenticate.ftl +147 -0
  160. package/dist/keycloak-upstream/base/login/login-password.ftl +52 -0
  161. package/dist/keycloak-upstream/base/login/login-recovery-authn-code-config.ftl +186 -0
  162. package/dist/keycloak-upstream/base/login/login-recovery-authn-code-input.ftl +46 -0
  163. package/dist/keycloak-upstream/base/login/login-reset-otp.ftl +33 -0
  164. package/dist/keycloak-upstream/base/login/login-reset-password.ftl +39 -0
  165. package/dist/keycloak-upstream/base/login/login-update-password.ftl +77 -0
  166. package/dist/keycloak-upstream/base/login/login-update-profile.ftl +28 -0
  167. package/dist/keycloak-upstream/base/login/login-username.ftl +92 -0
  168. package/dist/keycloak-upstream/base/login/login-verify-email.ftl +36 -0
  169. package/dist/keycloak-upstream/base/login/login-x509-info.ftl +55 -0
  170. package/dist/keycloak-upstream/base/login/login.ftl +120 -0
  171. package/dist/keycloak-upstream/base/login/logout-confirm.ftl +38 -0
  172. package/dist/keycloak-upstream/base/login/passkeys.ftl +45 -0
  173. package/dist/keycloak-upstream/base/login/password-commons.ftl +12 -0
  174. package/dist/keycloak-upstream/base/login/register-commons.ftl +27 -0
  175. package/dist/keycloak-upstream/base/login/register.ftl +112 -0
  176. package/dist/keycloak-upstream/base/login/saml-post-form.ftl +25 -0
  177. package/dist/keycloak-upstream/base/login/select-authenticator.ftl +36 -0
  178. package/dist/keycloak-upstream/base/login/select-organization.ftl +23 -0
  179. package/dist/keycloak-upstream/base/login/template.ftl +204 -0
  180. package/dist/keycloak-upstream/base/login/terms.ftl +15 -0
  181. package/dist/keycloak-upstream/base/login/theme.properties +1 -0
  182. package/dist/keycloak-upstream/base/login/update-email.ftl +30 -0
  183. package/dist/keycloak-upstream/base/login/user-profile-commons.ftl +210 -0
  184. package/dist/keycloak-upstream/base/login/webauthn-authenticate.ftl +104 -0
  185. package/dist/keycloak-upstream/base/login/webauthn-error.ftl +36 -0
  186. package/dist/keycloak-upstream/base/login/webauthn-register.ftl +66 -0
  187. package/dist/keycloak-upstream/base/messages/messages_en.properties +563 -0
  188. package/dist/keycloak-upstream/base/theme-properties.json +1 -0
  189. package/dist/keycloak-upstream/v2/login/buttons.ftl +24 -0
  190. package/dist/keycloak-upstream/v2/login/code.ftl +96 -0
  191. package/dist/keycloak-upstream/v2/login/delete-account-confirm.ftl +40 -0
  192. package/dist/keycloak-upstream/v2/login/delete-credential.ftl +21 -0
  193. package/dist/keycloak-upstream/v2/login/field.ftl +162 -0
  194. package/dist/keycloak-upstream/v2/login/footer.ftl +3 -0
  195. package/dist/keycloak-upstream/v2/login/link-idp-action.ftl +21 -0
  196. package/dist/keycloak-upstream/v2/login/login-config-totp.ftl +124 -0
  197. package/dist/keycloak-upstream/v2/login/login-oauth-grant.ftl +59 -0
  198. package/dist/keycloak-upstream/v2/login/login-otp.ftl +47 -0
  199. package/dist/keycloak-upstream/v2/login/login-password.ftl +21 -0
  200. package/dist/keycloak-upstream/v2/login/login-recovery-authn-code-config.ftl +180 -0
  201. package/dist/keycloak-upstream/v2/login/login-recovery-authn-code-input.ftl +15 -0
  202. package/dist/keycloak-upstream/v2/login/login-reset-password.ftl +29 -0
  203. package/dist/keycloak-upstream/v2/login/login-update-password.ftl +32 -0
  204. package/dist/keycloak-upstream/v2/login/login-username.ftl +51 -0
  205. package/dist/keycloak-upstream/v2/login/login.ftl +56 -0
  206. package/dist/keycloak-upstream/v2/login/password-commons.ftl +8 -0
  207. package/dist/keycloak-upstream/v2/login/password-validation.ftl +53 -0
  208. package/dist/keycloak-upstream/v2/login/register-commons.ftl +27 -0
  209. package/dist/keycloak-upstream/v2/login/register.ftl +68 -0
  210. package/dist/keycloak-upstream/v2/login/select-authenticator.ftl +41 -0
  211. package/dist/keycloak-upstream/v2/login/social-providers.ftl +95 -0
  212. package/dist/keycloak-upstream/v2/login/template.ftl +266 -0
  213. package/dist/keycloak-upstream/v2/login/terms.ftl +21 -0
  214. package/dist/keycloak-upstream/v2/login/theme.properties +130 -0
  215. package/dist/keycloak-upstream/v2/login/update-email.ftl +29 -0
  216. package/dist/keycloak-upstream/v2/login/user-profile-commons.ftl +237 -0
  217. package/dist/keycloak-upstream/v2/login/webauthn-authenticate.ftl +131 -0
  218. package/dist/keycloak-upstream/v2/login/webauthn-error.ftl +35 -0
  219. package/dist/keycloak-upstream/v2/login/webauthn-register.ftl +63 -0
  220. package/dist/keycloak-upstream/v2/messages/messages_en.properties +563 -0
  221. package/dist/keycloak-upstream/v2/theme-properties.json +109 -0
  222. package/package.json +100 -0
  223. package/public/keycloak-dev-resources/img/keycloak-bg-darken.svg +1 -0
  224. package/public/keycloak-dev-resources/img/keycloak-bg.png +0 -0
  225. package/public/keycloak-dev-resources/img/keycloak-logo-text.svg +1 -0
  226. package/public/keycloak-dev-resources/themes/base/login/messages/messages_en.properties +5 -0
  227. package/public/keycloak-dev-resources/themes/base/login/mock-extension-showcase.ftl +13 -0
  228. package/public/keycloak-dev-resources/themes/base/login/resources/css/preview.css +5 -0
  229. package/public/keycloak-dev-resources/themes/base/login/resources/css/quick-start.css +16 -0
  230. package/public/keycloak-dev-resources/themes/base/login/resources/css/styles.css +2 -0
  231. package/public/keycloak-dev-resources/themes/base/login/theme.properties +143 -0
  232. package/public/keycloak-dev-resources/themes/horizontal-card/login/footer.ftl +32 -0
  233. package/public/keycloak-dev-resources/themes/horizontal-card/login/messages/messages_en.properties +6 -0
  234. package/public/keycloak-dev-resources/themes/horizontal-card/login/resources/css/preview.css +5 -0
  235. package/public/keycloak-dev-resources/themes/horizontal-card/login/resources/css/quick-start.css +31 -0
  236. package/public/keycloak-dev-resources/themes/horizontal-card/login/resources/css/styles.css +1149 -0
  237. package/public/keycloak-dev-resources/themes/horizontal-card/login/template.ftl +234 -0
  238. package/public/keycloak-dev-resources/themes/horizontal-card/login/theme.properties +142 -0
  239. package/public/keycloak-dev-resources/themes/modern-gradient/login/footer.ftl +12 -0
  240. package/public/keycloak-dev-resources/themes/modern-gradient/login/messages/messages_en.properties +6 -0
  241. package/public/keycloak-dev-resources/themes/modern-gradient/login/resources/css/preview.css +13 -0
  242. package/public/keycloak-dev-resources/themes/modern-gradient/login/resources/css/quick-start.css +39 -0
  243. package/public/keycloak-dev-resources/themes/modern-gradient/login/resources/css/styles.css +1371 -0
  244. package/public/keycloak-dev-resources/themes/modern-gradient/login/template.ftl +296 -0
  245. package/public/keycloak-dev-resources/themes/modern-gradient/login/theme.properties +142 -0
  246. package/public/keycloak-dev-resources/themes/themes.json +42 -0
  247. package/public/keycloak-dev-resources/themes/v2/login/footer.ftl +15 -0
  248. package/public/keycloak-dev-resources/themes/v2/login/messages/messages_en.properties +5 -0
  249. package/public/keycloak-dev-resources/themes/v2/login/mock-extension-showcase.ftl +13 -0
  250. package/public/keycloak-dev-resources/themes/v2/login/resources/css/preview.css +5 -0
  251. package/public/keycloak-dev-resources/themes/v2/login/resources/css/quick-start.css +16 -0
  252. package/public/keycloak-dev-resources/themes/v2/login/resources/css/styles.css +426 -0
  253. package/public/keycloak-dev-resources/themes/v2/login/resources/img/keycloak-bg-darken.svg +1 -0
  254. package/public/keycloak-dev-resources/themes/v2/login/resources/img/keycloak-bg.png +0 -0
  255. package/public/keycloak-dev-resources/themes/v2/login/resources/img/keycloak-logo-text.svg +1 -0
  256. package/public/keycloak-dev-resources/themes/v2/login/template.ftl +287 -0
  257. package/public/keycloak-dev-resources/themes/v2/login/theme.properties +125 -0
  258. package/public/keycloak-upstream/base/login/cli_splash.ftl +7 -0
  259. package/public/keycloak-upstream/base/login/code.ftl +19 -0
  260. package/public/keycloak-upstream/base/login/delete-account-confirm.ftl +33 -0
  261. package/public/keycloak-upstream/base/login/delete-credential.ftl +15 -0
  262. package/public/keycloak-upstream/base/login/error.ftl +16 -0
  263. package/public/keycloak-upstream/base/login/footer.ftl +3 -0
  264. package/public/keycloak-upstream/base/login/frontchannel-logout.ftl +30 -0
  265. package/public/keycloak-upstream/base/login/idp-review-user-profile.ftl +23 -0
  266. package/public/keycloak-upstream/base/login/info.ftl +24 -0
  267. package/public/keycloak-upstream/base/login/link-idp-action.ftl +15 -0
  268. package/public/keycloak-upstream/base/login/login-config-totp.ftl +115 -0
  269. package/public/keycloak-upstream/base/login/login-idp-link-confirm-override.ftl +12 -0
  270. package/public/keycloak-upstream/base/login/login-idp-link-confirm.ftl +15 -0
  271. package/public/keycloak-upstream/base/login/login-idp-link-email.ftl +16 -0
  272. package/public/keycloak-upstream/base/login/login-oauth-grant.ftl +68 -0
  273. package/public/keycloak-upstream/base/login/login-oauth2-device-verify-user-code.ftl +31 -0
  274. package/public/keycloak-upstream/base/login/login-otp.ftl +59 -0
  275. package/public/keycloak-upstream/base/login/login-page-expired.ftl +11 -0
  276. package/public/keycloak-upstream/base/login/login-passkeys-conditional-authenticate.ftl +147 -0
  277. package/public/keycloak-upstream/base/login/login-password.ftl +52 -0
  278. package/public/keycloak-upstream/base/login/login-recovery-authn-code-config.ftl +186 -0
  279. package/public/keycloak-upstream/base/login/login-recovery-authn-code-input.ftl +46 -0
  280. package/public/keycloak-upstream/base/login/login-reset-otp.ftl +33 -0
  281. package/public/keycloak-upstream/base/login/login-reset-password.ftl +39 -0
  282. package/public/keycloak-upstream/base/login/login-update-password.ftl +77 -0
  283. package/public/keycloak-upstream/base/login/login-update-profile.ftl +28 -0
  284. package/public/keycloak-upstream/base/login/login-username.ftl +92 -0
  285. package/public/keycloak-upstream/base/login/login-verify-email.ftl +36 -0
  286. package/public/keycloak-upstream/base/login/login-x509-info.ftl +55 -0
  287. package/public/keycloak-upstream/base/login/login.ftl +120 -0
  288. package/public/keycloak-upstream/base/login/logout-confirm.ftl +38 -0
  289. package/public/keycloak-upstream/base/login/passkeys.ftl +45 -0
  290. package/public/keycloak-upstream/base/login/password-commons.ftl +12 -0
  291. package/public/keycloak-upstream/base/login/register-commons.ftl +27 -0
  292. package/public/keycloak-upstream/base/login/register.ftl +112 -0
  293. package/public/keycloak-upstream/base/login/saml-post-form.ftl +25 -0
  294. package/public/keycloak-upstream/base/login/select-authenticator.ftl +36 -0
  295. package/public/keycloak-upstream/base/login/select-organization.ftl +23 -0
  296. package/public/keycloak-upstream/base/login/template.ftl +204 -0
  297. package/public/keycloak-upstream/base/login/terms.ftl +15 -0
  298. package/public/keycloak-upstream/base/login/theme.properties +1 -0
  299. package/public/keycloak-upstream/base/login/update-email.ftl +30 -0
  300. package/public/keycloak-upstream/base/login/user-profile-commons.ftl +210 -0
  301. package/public/keycloak-upstream/base/login/webauthn-authenticate.ftl +104 -0
  302. package/public/keycloak-upstream/base/login/webauthn-error.ftl +36 -0
  303. package/public/keycloak-upstream/base/login/webauthn-register.ftl +66 -0
  304. package/public/keycloak-upstream/base/messages/messages_en.properties +563 -0
  305. package/public/keycloak-upstream/base/theme-properties.json +1 -0
  306. package/public/keycloak-upstream/v2/login/buttons.ftl +24 -0
  307. package/public/keycloak-upstream/v2/login/code.ftl +96 -0
  308. package/public/keycloak-upstream/v2/login/delete-account-confirm.ftl +40 -0
  309. package/public/keycloak-upstream/v2/login/delete-credential.ftl +21 -0
  310. package/public/keycloak-upstream/v2/login/field.ftl +162 -0
  311. package/public/keycloak-upstream/v2/login/footer.ftl +3 -0
  312. package/public/keycloak-upstream/v2/login/link-idp-action.ftl +21 -0
  313. package/public/keycloak-upstream/v2/login/login-config-totp.ftl +124 -0
  314. package/public/keycloak-upstream/v2/login/login-oauth-grant.ftl +59 -0
  315. package/public/keycloak-upstream/v2/login/login-otp.ftl +47 -0
  316. package/public/keycloak-upstream/v2/login/login-password.ftl +21 -0
  317. package/public/keycloak-upstream/v2/login/login-recovery-authn-code-config.ftl +180 -0
  318. package/public/keycloak-upstream/v2/login/login-recovery-authn-code-input.ftl +15 -0
  319. package/public/keycloak-upstream/v2/login/login-reset-password.ftl +29 -0
  320. package/public/keycloak-upstream/v2/login/login-update-password.ftl +32 -0
  321. package/public/keycloak-upstream/v2/login/login-username.ftl +51 -0
  322. package/public/keycloak-upstream/v2/login/login.ftl +56 -0
  323. package/public/keycloak-upstream/v2/login/password-commons.ftl +8 -0
  324. package/public/keycloak-upstream/v2/login/password-validation.ftl +53 -0
  325. package/public/keycloak-upstream/v2/login/register-commons.ftl +27 -0
  326. package/public/keycloak-upstream/v2/login/register.ftl +68 -0
  327. package/public/keycloak-upstream/v2/login/select-authenticator.ftl +41 -0
  328. package/public/keycloak-upstream/v2/login/social-providers.ftl +95 -0
  329. package/public/keycloak-upstream/v2/login/template.ftl +266 -0
  330. package/public/keycloak-upstream/v2/login/terms.ftl +21 -0
  331. package/public/keycloak-upstream/v2/login/theme.properties +130 -0
  332. package/public/keycloak-upstream/v2/login/update-email.ftl +29 -0
  333. package/public/keycloak-upstream/v2/login/user-profile-commons.ftl +237 -0
  334. package/public/keycloak-upstream/v2/login/webauthn-authenticate.ftl +131 -0
  335. package/public/keycloak-upstream/v2/login/webauthn-error.ftl +35 -0
  336. package/public/keycloak-upstream/v2/login/webauthn-register.ftl +63 -0
  337. package/public/keycloak-upstream/v2/messages/messages_en.properties +563 -0
  338. package/public/keycloak-upstream/v2/theme-properties.json +109 -0
  339. package/tools/generate-preview.ts +320 -0
  340. package/tools/kc-context-mocks/index.ts +29 -0
  341. package/tools/kc-context-mocks/kc-page-story.ts +14 -0
  342. package/tools/kc-context-mocks/kc-page.ts +53 -0
  343. package/tools/preview-renderer/preview-renderer.jar +0 -0
@@ -0,0 +1,95 @@
1
+ <#macro show social>
2
+ <div class="${properties.kcLoginMainFooterBand!}">
3
+ <span class="${properties.kcLoginMainFooterBandItem!} ${properties.kcLoginMainFooterHelperText!}">
4
+ ${msg("identity-provider-login-label")}
5
+ </span>
6
+ </div>
7
+ <div id="kc-social-providers" class="${properties.kcFormSocialAccountSectionClass!}">
8
+ <ul class="${properties.kcFormSocialAccountListClass!} <#if social.providers?size gt 3>${properties.kcFormSocialAccountListGridClass!}</#if>">
9
+ <#list social.providers as p>
10
+ <li class="<#if social.providers?size gt 3>${properties.kcFormSocialAccountGridItem!}<#else>${properties.kcFormSocialAccountListItemClass!}</#if>">
11
+ <a data-once-link data-disabled-class="${properties.kcFormSocialAccountListButtonDisabledClass!}" id="social-${p.alias}"
12
+ class="${properties.kcFormSocialAccountListButtonClass!}" aria-label="${p.displayName}"
13
+ type="button" href="${p.loginUrl}">
14
+ <#if p.iconClasses?has_content>
15
+ <span class="${p.iconClasses!}">${p.displayName!}</span>
16
+ <#else>
17
+ <#switch p.providerId>
18
+ <#case "google">
19
+ <svg viewBox="0 0 48 48" class="google" aria-hidden="true">
20
+ <path fill="#EA4335" d="M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z"></path>
21
+ <path fill="#4285F4" d="M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z"></path>
22
+ <path fill="#FBBC05" d="M10.53 28.59c-.48-1.45-.76-2.99-.76-4.59s.27-3.14.76-4.59l-7.98-6.19C.92 16.46 0 20.12 0 24c0 3.88.92 7.54 2.56 10.78l7.97-6.19z"></path>
23
+ <path fill="#34A853" d="M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z"></path>
24
+ <path fill="none" d="M0 0h48v48H0z"></path>
25
+ </svg>
26
+ <#break>
27
+ <#case "github">
28
+ <svg aria-hidden="true" viewBox="0 0 496 512">
29
+ <path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/>
30
+ </svg>
31
+ <#break>
32
+ <#case "facebook">
33
+ <svg aria-hidden="true" viewBox="0 0 448 512">
34
+ <path d="M448 56.7v398.5c0 13.7-11.1 24.7-24.7 24.7H309.1V306.5h58.2l8.7-67.6h-67v-43.2c0-19.6 5.4-32.9 33.5-32.9h35.8v-60.5c-6.2-.8-27.4-2.7-52.2-2.7-51.6 0-87 31.5-87 89.4v49.9h-58.4v67.6h58.4V480H24.7C11.1 480 0 468.9 0 455.3V56.7C0 43.1 11.1 32 24.7 32h398.5c13.7 0 24.8 11.1 24.8 24.7z"/>
35
+ </svg>
36
+ <#break>
37
+ <#case "gitlab">
38
+ <svg aria-hidden="true" viewBox="0 0 512 512">
39
+ <path d="M29.782 199.732L256 493.714 8.074 309.699c-6.856-5.142-9.712-13.996-7.141-21.993l28.849-87.974zm75.405-174.806c-3.142-8.854-15.709-8.854-18.851 0L29.782 199.732h131.961L105.187 24.926zm56.556 174.806L256 493.714l94.257-293.982H161.743zm349.324 87.974l-28.849-87.974L256 493.714l247.926-184.015c6.855-5.142 9.711-13.996 7.141-21.993zm-85.404-262.78c-3.142-8.854-15.709-8.854-18.851 0l-56.555 174.806h131.961L425.663 24.926z"/>
40
+ </svg>
41
+ <#break>
42
+ <#case "linkedin">
43
+ <#case "linkedin-openid-connect">
44
+ <svg aria-hidden="true" viewBox="0 0 448 512">
45
+ <path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"/>
46
+ </svg>
47
+ <#break>
48
+ <#case "openshift-v4">
49
+ <svg viewBox="116 0 100 100" aria-hidden="true">
50
+ <path d="M145.7,45.3l-16.1,5.8c0.2,2.6,0.6,5.1,1.3,7.6l15.3-5.6C145.7,50.6,145.5,47.9,145.7,45.3M216.7,27.5c-1.1-2.3-2.4-4.5-3.9-6.6l-16.1,5.8c1.9,1.9,3.4,4.1,4.7,6.4L216.7,27.5zM181.4,23c3.3,1.6,6.2,3.7,8.7,6.2l16.1-5.8c-4.4-6.2-10.5-11.5-17.9-14.9c-22.9-10.7-50.3-0.7-61,22.2c-3.5,7.4-4.8,15.3-4.1,23l16.1-5.8c0.3-3.5,1.1-7,2.7-10.3C148.7,22.5,166.4,16,181.4,23M131.9,58.4l-15.3,5.6c1.4,5.6,3.8,10.8,7.2,15.5l16-5.8C135.8,69.4,133,64.1,131.9,58.4M198.5,52.3c-0.3,3.5-1.1,7-2.7,10.3C188.8,77.5,171,84,156.1,77c-3.3-1.6-6.3-3.7-8.7-6.2l-16,5.8c4.4,6.2,10.5,11.5,17.9,14.9c22.9,10.7,50.3,0.7,61-22.2c3.5-7.4,4.7-15.3,4.1-22.9L198.5,52.3zM202.4,32.7l-15.3,5.6c2.8,5.1,4.2,10.9,3.7,16.8l16-5.8C206.5,43.5,204.9,37.9,202.4,32.7"></path>
51
+ </svg>
52
+ <#break>
53
+ <#case "stackoverflow">
54
+ <svg viewBox="0 0 384 512" aria-hidden="true">
55
+ <path d="M290.7 311L95 269.7 86.8 309l195.7 41zm51-87L188.2 95.7l-25.5 30.8 153.5 128.3zm-31.2 39.7L129.2 179l-16.7 36.5L293.7 300zM262 32l-32 24 119.3 160.3 32-24zm20.5 328h-200v39.7h200zm39.7 80H42.7V320h-40v160h359.5V320h-40z"></path>
56
+ </svg>
57
+ <#break>
58
+ <#case "twitter">
59
+ <svg viewBox="0 0 1200 1227" aria-hidden="true" fill="none" xmlns="http://www.w3.org/2000/svg">
60
+ <path d="M714.163 519.284L1160.89 0H1055.03L667.137 450.887L357.328 0H0L468.492 681.821L0 1226.37H105.866L515.491 750.218L842.672 1226.37H1200L714.137 519.284H714.163ZM569.165 687.828L521.697 619.934L144.011 79.6944H306.615L611.412 515.685L658.88 583.579L1055.08 1150.3H892.476L569.165 687.854V687.828Z" fill="white"/>
61
+ </svg>
62
+ <#break>
63
+ <#case "microsoft">
64
+ <svg viewBox="0 0 448 512" aria-hidden="true">
65
+ <path d="M0 32h214.6v214.6H0V32zm233.4 0H448v214.6H233.4V32zM0 265.4h214.6V480H0V265.4zm233.4 0H448V480H233.4V265.4z"></path>
66
+ </svg>
67
+ <#break>
68
+ <#case "bitbucket">
69
+ <svg viewBox="0 0 512 512" aria-hidden="true">
70
+ <path d="M22.2 32A16 16 0 0 0 6 47.8a26.35 26.35 0 0 0 .2 2.8l67.9 412.1a21.77 21.77 0 0 0 21.3 18.2h325.7a16 16 0 0 0 16-13.4L505 50.7a16 16 0 0 0-13.2-18.3 24.58 24.58 0 0 0-2.8-.2L22.2 32zm285.9 297.8h-104l-28.1-147h157.3l-25.2 147z"></path>
71
+ </svg>
72
+ <#break>
73
+ <#case "instagram">
74
+ <svg viewBox="0 0 448 512" aria-hidden="true">
75
+ <path d="M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"></path>
76
+ </svg>
77
+ <#break>
78
+ <#case "paypal">
79
+ <svg viewBox="0 0 384 512" aria-hidden="true">
80
+ <path d="M111.4 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.3c-7.6 0-13.1-6.6-12.1-13.9L58.8 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2zM357.1 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6z"></path>
81
+ </svg>
82
+ <#break>
83
+ <#default>
84
+ <svg viewBox="0 0 512 512" aria-hidden="true">
85
+ <path d="M239.1 6.3l-208 78c-18.7 7-31.1 25-31.1 45v225.1c0 18.2 10.3 34.8 26.5 42.9l208 104c13.5 6.8 29.4 6.8 42.9 0l208-104c16.3-8.1 26.5-24.8 26.5-42.9V129.3c0-20-12.4-37.9-31.1-44.9l-208-78C262 2.2 250 2.2 239.1 6.3zM256 68.4l192 72v1.1l-192 78-192-78v-1.1l192-72zm32 356V275.5l160-65v133.9l-160 80z"/>
86
+ </svg>
87
+ </#switch>
88
+ <span class="${properties.kcFormSocialAccountNameClass!}">${p.displayName!}</span>
89
+ </#if>
90
+ </a>
91
+ </li>
92
+ </#list>
93
+ </ul>
94
+ </div>
95
+ </#macro>
@@ -0,0 +1,266 @@
1
+ <#import "field.ftl" as field>
2
+ <#import "footer.ftl" as loginFooter>
3
+ <#macro username>
4
+ <#assign label>
5
+ <#if !realm.loginWithEmailAllowed>${msg("username")}<#elseif !realm.registrationEmailAsUsername>${msg("usernameOrEmail")}<#else>${msg("email")}</#if>
6
+ </#assign>
7
+ <@field.group name="username" label=label>
8
+ <div class="${properties.kcInputGroup}">
9
+ <div class="${properties.kcInputGroupItemClass} ${properties.kcFill}">
10
+ <span class="${properties.kcInputClass} ${properties.kcFormReadOnlyClass}">
11
+ <input id="kc-attempted-username" value="${auth.attemptedUsername}" readonly>
12
+ </span>
13
+ </div>
14
+ <div class="${properties.kcInputGroupItemClass}">
15
+ <button id="reset-login" class="${properties.kcFormPasswordVisibilityButtonClass} kc-login-tooltip" type="button"
16
+ aria-label="${msg('restartLoginTooltip')}" onclick="location.href='${url.loginRestartFlowUrl}'">
17
+ <i class="fa-sync-alt fas" aria-hidden="true"></i>
18
+ <span class="kc-tooltip-text">${msg("restartLoginTooltip")}</span>
19
+ </button>
20
+ </div>
21
+ </div>
22
+ </@field.group>
23
+ </#macro>
24
+
25
+ <#macro registrationLayout bodyClass="" displayInfo=false displayMessage=true displayRequiredFields=false>
26
+ <!DOCTYPE html>
27
+ <html class="${properties.kcHtmlClass!}" lang="${lang}"<#if realm.internationalizationEnabled> dir="${(locale.rtl)?then('rtl','ltr')}"</#if>>
28
+
29
+ <head>
30
+ <meta charset="utf-8">
31
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
32
+ <meta name="color-scheme" content="light${darkMode?then(' dark', '')}">
33
+ <meta name="viewport" content="width=device-width, initial-scale=1">
34
+
35
+ <#if properties.meta?has_content>
36
+ <#list properties.meta?split(' ') as meta>
37
+ <meta name="${meta?split('==')[0]}" content="${meta?split('==')[1]}"/>
38
+ </#list>
39
+ </#if>
40
+ <title>${msg("loginTitle",(realm.displayName!''))}</title>
41
+ <link rel="icon" href="${url.resourcesPath}/img/favicon.ico" />
42
+ <#if properties.stylesCommon?has_content>
43
+ <#list properties.stylesCommon?split(' ') as style>
44
+ <link href="${url.resourcesCommonPath}/${style}" rel="stylesheet" />
45
+ </#list>
46
+ </#if>
47
+ <#if properties.styles?has_content>
48
+ <#list properties.styles?split(' ') as style>
49
+ <link href="${url.resourcesPath}/${style}" rel="stylesheet" />
50
+ </#list>
51
+ </#if>
52
+ <script type="importmap">
53
+ {
54
+ "imports": {
55
+ "rfc4648": "${url.resourcesCommonPath}/vendor/rfc4648/rfc4648.js"
56
+ }
57
+ }
58
+ </script>
59
+ <#if darkMode>
60
+ <script type="module" async blocking="render">
61
+ const DARK_MODE_CLASS = "${properties.kcDarkModeClass}";
62
+ const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
63
+
64
+ updateDarkMode(mediaQuery.matches);
65
+ mediaQuery.addEventListener("change", (event) => updateDarkMode(event.matches));
66
+
67
+ function updateDarkMode(isEnabled) {
68
+ const { classList } = document.documentElement;
69
+
70
+ if (isEnabled) {
71
+ classList.add(DARK_MODE_CLASS);
72
+ } else {
73
+ classList.remove(DARK_MODE_CLASS);
74
+ }
75
+ }
76
+ </script>
77
+ </#if>
78
+ <#if properties.scripts?has_content>
79
+ <#list properties.scripts?split(' ') as script>
80
+ <script src="${url.resourcesPath}/${script}" type="text/javascript"></script>
81
+ </#list>
82
+ </#if>
83
+ <#if scripts??>
84
+ <#list scripts as script>
85
+ <script src="${script}" type="text/javascript"></script>
86
+ </#list>
87
+ </#if>
88
+ <script type="module" src="${url.resourcesPath}/js/passwordVisibility.js"></script>
89
+ <script type="module">
90
+ <#outputformat "JavaScript">
91
+ import { startSessionPolling } from "${url.resourcesPath}/js/authChecker.js";
92
+
93
+ startSessionPolling(
94
+ ${url.ssoLoginInOtherTabsUrl?c}
95
+ );
96
+ </#outputformat>
97
+ </script>
98
+ <script type="module">
99
+ document.addEventListener("click", (event) => {
100
+ const link = event.target.closest("a[data-once-link]");
101
+
102
+ if (!link) {
103
+ return;
104
+ }
105
+
106
+ if (link.getAttribute("aria-disabled") === "true") {
107
+ event.preventDefault();
108
+ return;
109
+ }
110
+
111
+ const { disabledClass } = link.dataset;
112
+
113
+ if (disabledClass) {
114
+ link.classList.add(...disabledClass.trim().split(/\s+/));
115
+ }
116
+
117
+ link.setAttribute("role", "link");
118
+ link.setAttribute("aria-disabled", "true");
119
+ });
120
+ </script>
121
+ <#if authenticationSession??>
122
+ <script type="module">
123
+ <#outputformat "JavaScript">
124
+ import { checkAuthSession } from "${url.resourcesPath}/js/authChecker.js";
125
+
126
+ checkAuthSession(
127
+ ${authenticationSession.authSessionIdHash?c}
128
+ );
129
+ </#outputformat>
130
+ </script>
131
+ </#if>
132
+ <script>
133
+ // Workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=1404468
134
+ const isFirefox = true;
135
+ </script>
136
+ </head>
137
+
138
+ <body id="keycloak-bg" class="${properties.kcBodyClass!}" data-page-id="login-${pageId}">
139
+ <div class="${properties.kcLogin!}">
140
+ <div class="${properties.kcLoginContainer!}">
141
+ <header id="kc-header" class="pf-v5-c-login__header">
142
+ <div id="kc-header-wrapper"
143
+ class="pf-v5-c-brand">${kcSanitize(msg("loginTitleHtml",(realm.displayNameHtml!'')))?no_esc}</div>
144
+ </header>
145
+ <main class="${properties.kcLoginMain!}">
146
+ <div class="${properties.kcLoginMainHeader!}">
147
+ <h1 class="${properties.kcLoginMainTitle!}" id="kc-page-title"><#nested "header"></h1>
148
+ <#if realm.internationalizationEnabled && locale.supported?size gt 1>
149
+ <div class="${properties.kcLoginMainHeaderUtilities!}">
150
+ <div class="${properties.kcInputClass!}">
151
+ <select
152
+ aria-label="${msg("languages")}"
153
+ id="login-select-toggle"
154
+ onchange="if (this.value) window.location.href=this.value"
155
+ >
156
+ <#list locale.supported?sort_by("label") as l>
157
+ <option
158
+ value="${l.url}"
159
+ ${(l.languageTag == locale.currentLanguageTag)?then('selected','')}
160
+ >
161
+ ${l.label}
162
+ </option>
163
+ </#list>
164
+ </select>
165
+ <span class="${properties.kcFormControlUtilClass}">
166
+ <span class="${properties.kcFormControlToggleIcon!}">
167
+ <svg
168
+ class="pf-v5-svg"
169
+ viewBox="0 0 320 512"
170
+ fill="currentColor"
171
+ aria-hidden="true"
172
+ role="img"
173
+ width="1em"
174
+ height="1em"
175
+ >
176
+ <path
177
+ d="M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z"
178
+ >
179
+ </path>
180
+ </svg>
181
+ </span>
182
+ </span>
183
+ </div>
184
+ </div>
185
+ </#if>
186
+ </div>
187
+ <div class="${properties.kcLoginMainBody!}">
188
+ <#if !(auth?has_content && auth.showUsername() && !auth.showResetCredentials())>
189
+ <#if displayRequiredFields>
190
+ <div class="${properties.kcContentWrapperClass!}">
191
+ <div class="${properties.kcLabelWrapperClass!} subtitle">
192
+ <span class="${properties.kcInputHelperTextItemTextClass!}">
193
+ <span class="${properties.kcInputRequiredClass!}">*</span> ${msg("requiredFields")}
194
+ </span>
195
+ </div>
196
+ </div>
197
+ </#if>
198
+ <#else>
199
+ <#if displayRequiredFields>
200
+ <div class="${properties.kcContentWrapperClass!}">
201
+ <div class="${properties.kcLabelWrapperClass!} subtitle">
202
+ <span class="${properties.kcInputHelperTextItemTextClass!}">
203
+ <span class="${properties.kcInputRequiredClass!}">*</span> ${msg("requiredFields")}
204
+ </span>
205
+ </div>
206
+ <div class="${properties.kcFormClass} ${properties.kcContentWrapperClass}">
207
+ <#nested "show-username">
208
+ <@username />
209
+ </div>
210
+ </div>
211
+ <#else>
212
+ <div class="${properties.kcFormClass} ${properties.kcContentWrapperClass}">
213
+ <#nested "show-username">
214
+ <@username />
215
+ </div>
216
+ </#if>
217
+ </#if>
218
+
219
+ <#-- App-initiated actions should not see warning messages about the need to complete the action -->
220
+ <#-- during login. -->
221
+ <#if displayMessage && message?has_content && (message.type != 'warning' || !isAppInitiatedAction??)>
222
+ <div class="${properties.kcAlertClass!} pf-m-${(message.type = 'error')?then('danger', message.type)}">
223
+ <div class="${properties.kcAlertIconClass!}">
224
+ <#if message.type = 'success'><span class="${properties.kcFeedbackSuccessIcon!}"></span></#if>
225
+ <#if message.type = 'warning'><span class="${properties.kcFeedbackWarningIcon!}"></span></#if>
226
+ <#if message.type = 'error'><span class="${properties.kcFeedbackErrorIcon!}"></span></#if>
227
+ <#if message.type = 'info'><span class="${properties.kcFeedbackInfoIcon!}"></span></#if>
228
+ </div>
229
+ <span class="${properties.kcAlertTitleClass!} kc-feedback-text">${message.summary}</span>
230
+ </div>
231
+ </#if>
232
+
233
+ <#nested "form">
234
+
235
+ <#if auth?has_content && auth.showTryAnotherWayLink()>
236
+ <form id="kc-select-try-another-way-form" action="${url.loginAction}" method="post" novalidate="novalidate">
237
+ <input type="hidden" name="tryAnotherWay" value="on"/>
238
+ <a id="try-another-way" href="javascript:document.forms['kc-select-try-another-way-form'].requestSubmit()"
239
+ class="${properties.kcButtonSecondaryClass} ${properties.kcButtonBlockClass} ${properties.kcMarginTopClass}">
240
+ ${msg("doTryAnotherWay")}
241
+ </a>
242
+ </form>
243
+ </#if>
244
+
245
+ <div class="${properties.kcLoginMainFooter!}">
246
+ <#nested "socialProviders">
247
+
248
+ <#if displayInfo>
249
+ <div id="kc-info" class="${properties.kcLoginMainFooterBand!} ${properties.kcFormClass}">
250
+ <div id="kc-info-wrapper" class="${properties.kcLoginMainFooterBandItem!}">
251
+ <#nested "info">
252
+ </div>
253
+ </div>
254
+ </#if>
255
+ </div>
256
+ </div>
257
+
258
+ <div class="${properties.kcLoginMainFooter!}">
259
+ <@loginFooter.content/>
260
+ </div>
261
+ </main>
262
+ </div>
263
+ </div>
264
+ </body>
265
+ </html>
266
+ </#macro>
@@ -0,0 +1,21 @@
1
+ <#import "template.ftl" as layout>
2
+ <#import "buttons.ftl" as buttons>
3
+
4
+ <@layout.registrationLayout displayMessage=false; section>
5
+ <!-- template: terms.ftl -->
6
+
7
+ <#if section = "header">
8
+ ${msg("termsTitle")}
9
+ <#elseif section = "form">
10
+ <div class="${properties.kcContentWrapperClass}">
11
+ ${kcSanitize(msg("termsText"))?no_esc}
12
+ </div>
13
+ <form class="${properties.kcFormClass!}" action="${url.loginAction}" method="POST">
14
+ <@buttons.actionGroup horizontal=true>
15
+ <@buttons.button name="accept" id="kc-accept" label="doAccept" class=["kcButtonPrimaryClass"]/>
16
+ <@buttons.button name="cancel" id="kc-decline" label="doDecline" class=["kcButtonSecondaryClass"]/>
17
+ </@buttons.actionGroup>
18
+ </form>
19
+ <div class="clearfix"></div>
20
+ </#if>
21
+ </@layout.registrationLayout>
@@ -0,0 +1,130 @@
1
+ parent=base
2
+ import=common/keycloak
3
+
4
+ styles=css/styles.css
5
+ stylesCommon=vendor/patternfly-v5/patternfly.min.css vendor/patternfly-v5/patternfly-addons.css
6
+
7
+ darkMode=true
8
+
9
+ kcFormGroupClass=pf-v5-c-form__group
10
+ kcFormGroupLabelClass=pf-v5-c-form__group-label pf-v5-u-pb-xs
11
+ kcFormLabelClass=pf-v5-c-form__label
12
+ kcFormLabelTextClass=pf-v5-c-form__label-text
13
+
14
+ kcLabelClass=pf-v5-c-form__label
15
+ kcInputClass=pf-v5-c-form-control
16
+ kcInputGroup=pf-v5-c-input-group
17
+ kcFormHelperTextClass=pf-v5-c-form__helper-text
18
+ kcInputHelperTextClass=pf-v5-c-helper-text pf-v5-u-display-flex pf-v5-u-justify-content-space-between
19
+ kcInputHelperTextItemClass=pf-v5-c-helper-text__item
20
+ kcInputHelperTextItemTextClass=pf-v5-c-helper-text__item-text
21
+ kcInputGroupItemClass=pf-v5-c-input-group__item
22
+ kcFill=pf-m-fill
23
+ kcError=pf-m-error
24
+ kcLoginFooterBand=pf-v5-c-login__main-footer-band
25
+ kcLoginFooterBandItem=pf-v5-c-login__main-footer-band-item
26
+
27
+ kcCheckboxClass=pf-v5-c-check
28
+ kcCheckboxInputClass=pf-v5-c-check__input
29
+ kcCheckboxLabelClass=pf-v5-c-check__label
30
+ kcCheckboxLabelRequiredClass=pf-v5-c-check__label-required
31
+
32
+ kcInputRequiredClass=pf-v5-c-form__label-required
33
+ kcInputErrorMessageClass=pf-v5-c-helper-text__item-text pf-m-error kc-feedback-text
34
+ kcFormControlUtilClass=pf-v5-c-form-control__utilities
35
+ kcInputErrorIconStatusClass=pf-v5-c-form-control__icon pf-m-status
36
+ kcInputErrorIconClass=fas fa-exclamation-circle
37
+ kcAlertClass=pf-v5-c-alert pf-m-inline pf-v5-u-mb-md
38
+ kcAlertIconClass=pf-v5-c-alert__icon
39
+ kcAlertTitleClass=pf-v5-c-alert__title
40
+ kcAlertDescriptionClass=pf-v5-c-alert__description
41
+ kcFormPasswordVisibilityButtonClass=pf-v5-c-button pf-m-control
42
+ kcFormPasswordVisibilityIconShow=fa-eye fas
43
+ kcFormPasswordVisibilityIconHide=fa-eye-slash fas
44
+ kcFormControlToggleIcon=pf-v5-c-form-control__toggle-icon
45
+ kcFormActionGroupClass=pf-v5-c-form__actions pf-v5-u-pt-xs
46
+ kcFormReadOnlyClass=pf-m-readonly
47
+
48
+ kcPanelClass=pf-v5-c-panel pf-m-raised
49
+ kcPanelMainClass=pf-v5-c-panel__main
50
+ kcPanelMainBodyClass=pf-v5-c-panel__main-body
51
+ kcListClass=pf-v5-c-list
52
+
53
+ kcButtonClass=pf-v5-c-button
54
+ kcButtonPrimaryClass=pf-v5-c-button pf-m-primary
55
+ kcButtonSecondaryClass=pf-v5-c-button pf-m-secondary
56
+ kcButtonBlockClass=pf-m-block
57
+ kcButtonLinkClass=pf-v5-c-button pf-m-link
58
+ kcCommonLogoIdP=pf-v5-c-login__main-footer-links-item
59
+ kcFormSocialAccountListClass=pf-v5-c-login__main-body pf-v5-u-pl-0 pf-v5-u-pr-0
60
+ kcFormSocialAccountListItemClass=pf-v5-u-pb-sm
61
+ kcFormSocialAccountNameClass=pf-v5-u-m-auto
62
+ kcFormSocialAccountListButtonClass=pf-v5-c-button pf-m-secondary pf-m-block pf-v5-u-display-flex pf-v5-u-align-items-center pf-v5-u-justify-content-space-between
63
+ kcFormSocialAccountListButtonDisabledClass=pf-m-aria-disabled
64
+ kcFormSocialAccountListGridClass=pf-v5-l-grid pf-m-gutter pf-m-all-6-col-on-xl pf-m-all-6-col-on-sm
65
+ kcFormSocialAccountGridItem=pf-v5-l-grid__item
66
+
67
+ kcLoginClass=pf-v5-c-login__main
68
+ kcFormClass=pf-v5-c-form pf-v5-u-w-100
69
+ kcFormCardClass=card-pf
70
+
71
+ kcResetFlowIcon=pf-icon fas fa-share-square
72
+
73
+ kcSelectAuthListClass=pf-v5-c-data-list select-auth-container
74
+ kcSelectAuthListItemWrapperClass=pf-v5-c-data-list__item pf-m-clickable
75
+ kcSelectAuthListItemClass=pf-v5-c-data-list__item-row select-auth-box-parent
76
+ kcSelectAuthListItemHeadingClass=pf-v5-u-font-family-heading select-auth-box-headline
77
+ kcSelectAuthListItemBodyClass=pf-v5-c-data-list__cell pf-m-no-fill pf-v5-u-pt-md pf-v5-u-pb-md
78
+ kcSelectAuthListItemIconClass=pf-v5-c-data-list__cell pf-m-icon pf-v5-u-display-flex pf-v5-u-pt-0 pf-v5-u-align-items-center
79
+ kcSelectAuthListItemFillClass=pf-v5-c-data-list__item-action
80
+ kcSelectAuthListItemDescriptionClass=pf-v5-c-data-list__cell pf-m-no-fill select-auth-box-desc
81
+
82
+ kcRecoveryCodesWarning=pf-v5-c-alert pf-m-warning pf-m-inline pf-v5-u-mb-md kc-recovery-codes-warning
83
+ kcLogin=pf-v5-c-login
84
+ kcLoginContainer=pf-v5-c-login__container
85
+ kcLoginMain=pf-v5-c-login__main
86
+ kcLoginMainHeader=pf-v5-c-login__main-header
87
+ kcLoginMainFooter=pf-v5-c-login__main-footer
88
+ kcLoginMainFooterBand=pf-v5-c-login__main-footer-band
89
+ kcLoginMainFooterBandItem=pf-v5-c-login__main-footer-band-item
90
+ kcLoginMainFooterHelperText=pf-v5-u-font-size-sm pf-v5-u-color-200
91
+ kcLoginMainTitle=pf-v5-c-title pf-m-3xl
92
+ kcLoginMainHeaderUtilities=pf-v5-c-login__main-header-utilities
93
+ kcLoginMainBody=pf-v5-c-login__main-body
94
+
95
+ kcContentWrapperClass=pf-v5-u-mb-md-on-md
96
+ kcWebAuthnDefaultIcon=pf-v5-c-icon pf-m-lg
97
+ kcMarginTopClass=pf-v5-u-mt-md-on-md
98
+
99
+ kcLoginOTPListClass=pf-v5-c-tile
100
+ kcLoginOTPListItemHeaderClass=pf-v5-c-tile__header pf-m-stacked
101
+ kcLoginOTPListItemIconBodyClass=pf-v5-c-tile__icon
102
+ kcLoginOTPListItemIconClass=fa fa-mobile
103
+ kcLoginOTPListItemTitleClass=pf-v5-c-tile__title
104
+ kcLoginOTPListSelectedClass=pf-m-selected
105
+
106
+ kcCopyIconClass=fas fa-copy
107
+ kcCheckIconClass=fas fa-check
108
+ kcAngleRightIconClass=fas fa-angle-right
109
+ kcAngleDownIconClass=fas fa-angle-down
110
+ kcExpandedClass=pf-m-expanded
111
+
112
+ kcCodeClipboardCopyClass=pf-v5-c-clipboard-copy
113
+ kcCodeClipboardCopyGroupClass=pf-v5-c-clipboard-copy__group
114
+ kcCodeClipboardCopyContentClass=pf-v5-c-clipboard-copy__expandable-content
115
+
116
+ kcDarkModeClass=pf-v5-theme-dark
117
+
118
+ kcHtmlClass=login-pf
119
+ kcLogoIdP-facebook=
120
+ kcLogoIdP-google=
121
+ kcLogoIdP-github=
122
+ kcLogoIdP-linkedin=
123
+ kcLogoIdP-instagram=
124
+ kcLogoIdP-microsoft=
125
+ kcLogoIdP-bitbucket=
126
+ kcLogoIdP-gitlab=
127
+ kcLogoIdP-paypal=
128
+ kcLogoIdP-stackoverflow=
129
+ kcLogoIdP-twitter=
130
+ kcLogoIdP-openshift-v4=
@@ -0,0 +1,29 @@
1
+ <#import "template.ftl" as layout>
2
+ <#import "password-commons.ftl" as passwordCommons>
3
+ <#import "user-profile-commons.ftl" as userProfileCommons>
4
+ <#import "buttons.ftl" as buttons>
5
+ <@layout.registrationLayout displayMessage=messagesPerField.exists('global') displayRequiredFields=false; section>
6
+ <#if section = "header">
7
+ ${msg("updateEmailTitle")}
8
+ <#elseif section = "form">
9
+ <form id="kc-update-email-form" class="${properties.kcFormClass!}" action="${url.loginAction}" method="post">
10
+ <@userProfileCommons.userProfileFormFields/>
11
+
12
+ <div class="${properties.kcFormGroupClass!}">
13
+ <div id="kc-form-options" class="${properties.kcFormOptionsClass!}">
14
+ <div class="${properties.kcFormOptionsWrapperClass!}">
15
+ </div>
16
+ </div>
17
+
18
+ <@passwordCommons.logoutOtherSessions/>
19
+
20
+ <@buttons.actionGroup horizontal=true>
21
+ <@buttons.button id="kc-submit" label="doSubmit" class=["kcButtonPrimaryClass","kcButtonBlockClass"]/>
22
+ <#if isAppInitiatedAction??>
23
+ <@buttons.button id="kc-cancel" label="doCancel" class=["kcButtonSecondaryClass","kcButtonBlockClass"] name="cancel-aia" value="true"/>
24
+ </#if>
25
+ </@buttons.actionGroup>
26
+ </div>
27
+ </form>
28
+ </#if>
29
+ </@layout.registrationLayout>