keycloakify 10.1.0-rc.0 → 10.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 (205) hide show
  1. package/PUBLIC_URL.js +2 -2
  2. package/PUBLIC_URL.js.map +1 -1
  3. package/account/KcContext/kcContextMocks.js +3 -3
  4. package/account/KcContext/kcContextMocks.js.map +1 -1
  5. package/bin/193.index.js +198 -62
  6. package/bin/{365.index.js → 20.index.js} +302 -263
  7. package/bin/31.index.js +15 -23
  8. package/bin/{430.index.js → 33.index.js} +579 -4
  9. package/bin/{678.index.js → 36.index.js} +2 -577
  10. package/bin/{440.index.js → 499.index.js} +259 -181
  11. package/bin/526.index.js +3 -784
  12. package/bin/599.index.js +4 -1
  13. package/bin/780.index.js +1 -1
  14. package/bin/{525.index.js → 903.index.js} +4840 -97
  15. package/bin/932.index.js +115 -886
  16. package/bin/main.js +4 -4
  17. package/bin/shared/buildContext.d.ts +0 -2
  18. package/bin/shared/buildContext.js.map +1 -1
  19. package/bin/shared/constants.d.ts +5 -6
  20. package/bin/shared/constants.js +5 -6
  21. package/bin/shared/constants.js.map +1 -1
  22. package/bin/shared/copyKeycloakResourcesToPublic.d.ts +2 -4
  23. package/bin/shared/copyKeycloakResourcesToPublic.js.map +1 -1
  24. package/login/KcContext/KcContext.d.ts +9 -18
  25. package/login/KcContext/KcContext.js.map +1 -1
  26. package/login/KcContext/kcContextMocks.js +6 -10
  27. package/login/KcContext/kcContextMocks.js.map +1 -1
  28. package/login/Template.js +4 -59
  29. package/login/Template.js.map +1 -1
  30. package/login/Template.useStylesAndScripts.d.ts +17 -0
  31. package/login/Template.useStylesAndScripts.js +69 -0
  32. package/login/Template.useStylesAndScripts.js.map +1 -0
  33. package/login/pages/Login.js +1 -1
  34. package/login/pages/Login.js.map +1 -1
  35. package/login/pages/LoginIdpLinkConfirmOverride.js +0 -1
  36. package/login/pages/LoginIdpLinkConfirmOverride.js.map +1 -1
  37. package/login/pages/LoginPasskeysConditionalAuthenticate.js +6 -49
  38. package/login/pages/LoginPasskeysConditionalAuthenticate.js.map +1 -1
  39. package/login/pages/LoginPasskeysConditionalAuthenticate.useScript.d.ts +20 -0
  40. package/login/pages/LoginPasskeysConditionalAuthenticate.useScript.js +49 -0
  41. package/login/pages/LoginPasskeysConditionalAuthenticate.useScript.js.map +1 -0
  42. package/login/pages/LoginRecoveryAuthnCodeConfig.js +4 -126
  43. package/login/pages/LoginRecoveryAuthnCodeConfig.js.map +1 -1
  44. package/login/pages/LoginRecoveryAuthnCodeConfig.useScript.d.ts +9 -0
  45. package/login/pages/LoginRecoveryAuthnCodeConfig.useScript.js +133 -0
  46. package/login/pages/LoginRecoveryAuthnCodeConfig.useScript.js.map +1 -0
  47. package/login/pages/LoginUsername.js +1 -1
  48. package/login/pages/LoginUsername.js.map +1 -1
  49. package/login/pages/Register.js +6 -3
  50. package/login/pages/Register.js.map +1 -1
  51. package/login/pages/WebauthnAuthenticate.js +13 -116
  52. package/login/pages/WebauthnAuthenticate.js.map +1 -1
  53. package/login/pages/WebauthnAuthenticate.useScript.d.ts +21 -0
  54. package/login/pages/WebauthnAuthenticate.useScript.js +41 -0
  55. package/login/pages/WebauthnAuthenticate.useScript.js.map +1 -0
  56. package/login/pages/WebauthnRegister.js +8 -178
  57. package/login/pages/WebauthnRegister.js.map +1 -1
  58. package/login/pages/WebauthnRegister.useScript.d.ts +27 -0
  59. package/login/pages/WebauthnRegister.useScript.js +49 -0
  60. package/login/pages/WebauthnRegister.useScript.js.map +1 -0
  61. package/package.json +125 -15
  62. package/res/account-v1/account.ftl +70 -0
  63. package/res/account-v1/applications.ftl +76 -0
  64. package/res/account-v1/federatedIdentity.ftl +42 -0
  65. package/res/account-v1/log.ftl +35 -0
  66. package/res/account-v1/messages/messages_ar.properties +406 -0
  67. package/res/account-v1/messages/messages_ca.properties +147 -0
  68. package/res/account-v1/messages/messages_cs.properties +171 -0
  69. package/res/account-v1/messages/messages_da.properties +339 -0
  70. package/res/account-v1/messages/messages_de.properties +353 -0
  71. package/res/account-v1/messages/messages_en.properties +404 -0
  72. package/res/account-v1/messages/messages_es.properties +147 -0
  73. package/res/account-v1/messages/messages_fi.properties +400 -0
  74. package/res/account-v1/messages/messages_fr.properties +180 -0
  75. package/res/account-v1/messages/messages_hu.properties +334 -0
  76. package/res/account-v1/messages/messages_it.properties +336 -0
  77. package/res/account-v1/messages/messages_ja.properties +335 -0
  78. package/res/account-v1/messages/messages_lt.properties +154 -0
  79. package/res/account-v1/messages/messages_lv.properties +197 -0
  80. package/res/account-v1/messages/messages_nl.properties +371 -0
  81. package/res/account-v1/messages/messages_no.properties +152 -0
  82. package/res/account-v1/messages/messages_pl.properties +248 -0
  83. package/res/account-v1/messages/messages_pt_BR.properties +349 -0
  84. package/res/account-v1/messages/messages_ru.properties +235 -0
  85. package/res/account-v1/messages/messages_sk.properties +196 -0
  86. package/res/account-v1/messages/messages_sv.properties +150 -0
  87. package/res/account-v1/messages/messages_tr.properties +315 -0
  88. package/res/account-v1/messages/messages_zh_CN.properties +153 -0
  89. package/res/account-v1/password.ftl +59 -0
  90. package/res/account-v1/resource-detail.ftl +277 -0
  91. package/res/account-v1/resources/css/account.css +277 -0
  92. package/res/account-v1/resources/img/icon-sidebar-active.png +0 -0
  93. package/res/account-v1/resources/img/keycloak-logo.png +0 -0
  94. package/res/account-v1/resources/img/logo.png +0 -0
  95. package/res/account-v1/resources/resources-common/img/favicon.ico +0 -0
  96. package/res/account-v1/resources/resources-common/node_modules/patternfly/dist/css/patternfly-additions.min.css +5 -0
  97. package/res/account-v1/resources/resources-common/node_modules/patternfly/dist/css/patternfly.min.css +8 -0
  98. package/res/account-v1/resources/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Bold-webfont.woff2 +0 -0
  99. package/res/account-v1/resources/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Light-webfont.woff2 +0 -0
  100. package/res/account-v1/resources/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Regular-webfont.woff2 +0 -0
  101. package/res/account-v1/resources/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Semibold-webfont.woff2 +0 -0
  102. package/res/account-v1/resources/resources-common/node_modules/patternfly/dist/fonts/PatternFlyIcons-webfont.ttf +0 -0
  103. package/res/account-v1/resources/resources-common/node_modules/patternfly/dist/fonts/PatternFlyIcons-webfont.woff +0 -0
  104. package/res/account-v1/resources.ftl +403 -0
  105. package/res/account-v1/sessions.ftl +44 -0
  106. package/res/account-v1/template.ftl +88 -0
  107. package/res/account-v1/theme.properties +14 -0
  108. package/res/account-v1/totp.ftl +141 -0
  109. package/res/public/.keycloakify/account/css/account.css +277 -0
  110. package/res/public/.keycloakify/account/img/icon-sidebar-active.png +0 -0
  111. package/res/public/.keycloakify/account/img/keycloak-logo.png +0 -0
  112. package/res/public/.keycloakify/account/img/logo.png +0 -0
  113. package/res/public/.keycloakify/account/resources-common/img/favicon.ico +0 -0
  114. package/res/public/.keycloakify/account/resources-common/node_modules/patternfly/dist/css/patternfly-additions.min.css +5 -0
  115. package/res/public/.keycloakify/account/resources-common/node_modules/patternfly/dist/css/patternfly.min.css +8 -0
  116. package/res/public/.keycloakify/account/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Bold-webfont.woff2 +0 -0
  117. package/res/public/.keycloakify/account/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Light-webfont.woff2 +0 -0
  118. package/res/public/.keycloakify/account/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Regular-webfont.woff2 +0 -0
  119. package/res/public/.keycloakify/account/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Semibold-webfont.woff2 +0 -0
  120. package/res/public/.keycloakify/account/resources-common/node_modules/patternfly/dist/fonts/PatternFlyIcons-webfont.ttf +0 -0
  121. package/res/public/.keycloakify/account/resources-common/node_modules/patternfly/dist/fonts/PatternFlyIcons-webfont.woff +0 -0
  122. package/res/public/.keycloakify/login/css/login.css +629 -0
  123. package/res/public/.keycloakify/login/img/feedback-error-arrow-down.png +0 -0
  124. package/res/public/.keycloakify/login/img/feedback-error-sign.png +0 -0
  125. package/res/public/.keycloakify/login/img/feedback-success-arrow-down.png +0 -0
  126. package/res/public/.keycloakify/login/img/feedback-success-sign.png +0 -0
  127. package/res/public/.keycloakify/login/img/feedback-warning-arrow-down.png +0 -0
  128. package/res/public/.keycloakify/login/img/feedback-warning-sign.png +0 -0
  129. package/res/public/.keycloakify/login/img/keycloak-bg.png +0 -0
  130. package/res/public/.keycloakify/login/img/keycloak-logo-text.png +0 -0
  131. package/res/public/.keycloakify/login/img/keycloak-logo.png +0 -0
  132. package/res/public/.keycloakify/login/js/authChecker.js +49 -0
  133. package/res/public/.keycloakify/login/js/common.js +48 -0
  134. package/res/public/.keycloakify/login/js/kcMultivalued.js +106 -0
  135. package/res/public/.keycloakify/login/js/kcNumberFormat.js +21 -0
  136. package/res/public/.keycloakify/login/js/kcNumberUnFormat.js +19 -0
  137. package/res/public/.keycloakify/login/js/menu-button-links.js +315 -0
  138. package/{src/bin/shared/downloadKeycloakDefaultTheme/extra-assets → res/public/.keycloakify/login/js}/passkeysConditionalAuth.js +1 -1
  139. package/res/public/.keycloakify/login/js/passwordVisibility.js +15 -0
  140. package/res/public/.keycloakify/login/js/userProfile.js +71 -0
  141. package/res/public/.keycloakify/login/js/webauthnRegister.js +140 -0
  142. package/res/public/.keycloakify/login/resources-common/img/favicon.ico +0 -0
  143. package/res/public/.keycloakify/login/resources-common/lib/pficon/pficon.css +22 -0
  144. package/res/public/.keycloakify/login/resources-common/lib/pficon/pficon.woff2 +0 -0
  145. package/res/public/.keycloakify/login/resources-common/node_modules/@patternfly/patternfly/patternfly.min.css +2 -0
  146. package/res/public/.keycloakify/login/resources-common/node_modules/jquery/dist/jquery.min.js +2 -0
  147. package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/css/patternfly-additions.min.css +5 -0
  148. package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/css/patternfly.min.css +8 -0
  149. package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Bold-webfont.ttf +0 -0
  150. package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Bold-webfont.woff +0 -0
  151. package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Bold-webfont.woff2 +0 -0
  152. package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Light-webfont.woff2 +0 -0
  153. package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Regular-webfont.woff2 +0 -0
  154. package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Semibold-webfont.woff2 +0 -0
  155. package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/fonts/PatternFlyIcons-webfont.ttf +0 -0
  156. package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/fonts/PatternFlyIcons-webfont.woff +0 -0
  157. package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/fonts/fontawesome-webfont.woff2 +0 -0
  158. package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/img/bg-login.jpg +0 -0
  159. package/res/public/.keycloakify/login/resources-common/node_modules/rfc4648/lib/rfc4648.js +178 -0
  160. package/src/PUBLIC_URL.ts +5 -3
  161. package/src/account/KcContext/kcContextMocks.ts +3 -3
  162. package/src/bin/copy-keycloak-resources-to-public.ts +1 -1
  163. package/src/bin/initialize-account-theme/initializeAccountTheme_singlePage.ts +4 -1
  164. package/src/bin/initialize-email-theme.ts +28 -8
  165. package/src/bin/keycloakify/buildJars/buildJar.ts +3 -7
  166. package/src/bin/keycloakify/generateFtl/generateFtl.ts +3 -7
  167. package/src/bin/keycloakify/generateResources/generateResourcesForMainTheme.ts +65 -90
  168. package/src/bin/keycloakify/keycloakify.ts +38 -21
  169. package/src/bin/keycloakify/replacers/replaceImportsInCssCode.ts +2 -2
  170. package/src/bin/keycloakify/replacers/replaceImportsInJsCode/vite.ts +3 -3
  171. package/src/bin/keycloakify/replacers/replaceImportsInJsCode/webpack.ts +3 -3
  172. package/src/bin/shared/buildContext.ts +1 -8
  173. package/src/bin/shared/constants.ts +5 -7
  174. package/src/bin/shared/copyKeycloakResourcesToPublic.ts +30 -40
  175. package/src/bin/start-keycloak/start-keycloak.ts +3 -7
  176. package/src/login/KcContext/KcContext.ts +9 -18
  177. package/src/login/KcContext/kcContextMocks.ts +5 -13
  178. package/src/login/Template.tsx +4 -67
  179. package/src/login/Template.useStylesAndScripts.ts +94 -0
  180. package/src/login/pages/Login.tsx +1 -1
  181. package/src/login/pages/LoginIdpLinkConfirmOverride.tsx +0 -1
  182. package/src/login/pages/LoginPasskeysConditionalAuthenticate.tsx +6 -81
  183. package/src/login/pages/LoginPasskeysConditionalAuthenticate.useScript.tsx +72 -0
  184. package/src/login/pages/LoginRecoveryAuthnCodeConfig.tsx +4 -126
  185. package/src/login/pages/LoginRecoveryAuthnCodeConfig.useScript.tsx +142 -0
  186. package/src/login/pages/LoginUsername.tsx +1 -1
  187. package/src/login/pages/Register.tsx +35 -13
  188. package/src/login/pages/WebauthnAuthenticate.tsx +20 -133
  189. package/src/login/pages/WebauthnAuthenticate.useScript.tsx +64 -0
  190. package/src/login/pages/WebauthnRegister.tsx +8 -195
  191. package/src/login/pages/WebauthnRegister.useScript.tsx +93 -0
  192. package/src/tools/useInsertScriptTags.ts +14 -4
  193. package/src/vite-plugin/vite-plugin.ts +11 -15
  194. package/tools/useInsertScriptTags.d.ts +2 -2
  195. package/tools/useInsertScriptTags.js +8 -2
  196. package/tools/useInsertScriptTags.js.map +1 -1
  197. package/vite-plugin/index.js +3357 -47132
  198. package/bin/697.index.js +0 -4749
  199. package/bin/shared/downloadKeycloakStaticResources.d.ts +0 -9
  200. package/bin/shared/downloadKeycloakStaticResources.js.map +0 -1
  201. package/src/bin/keycloakify/generateResources/bringInAccountV1.ts +0 -89
  202. package/src/bin/shared/downloadKeycloakDefaultTheme/downloadKeycloakDefaultTheme.ts +0 -337
  203. package/src/bin/shared/downloadKeycloakDefaultTheme/index.ts +0 -1
  204. package/src/bin/shared/downloadKeycloakStaticResources.ts +0 -53
  205. /package/{src/bin/shared/downloadKeycloakDefaultTheme/extra-assets → res/public/.keycloakify/login/js}/webauthnAuthenticate.js +0 -0
@@ -0,0 +1,141 @@
1
+ <#import "template.ftl" as layout>
2
+ <@layout.mainLayout active='totp' bodyClass='totp'; section>
3
+
4
+ <div class="row">
5
+ <div class="col-md-10">
6
+ <h2>${msg("authenticatorTitle")}</h2>
7
+ </div>
8
+ <#if totp.otpCredentials?size == 0>
9
+ <div class="col-md-2 subtitle">
10
+ <span class="subtitle"><span class="required">*</span> ${msg("requiredFields")}</span>
11
+ </div>
12
+ </#if>
13
+ </div>
14
+
15
+ <#if totp.enabled>
16
+ <table class="table table-bordered table-striped">
17
+ <thead>
18
+ <#if totp.otpCredentials?size gt 1>
19
+ <tr>
20
+ <th colspan="4">${msg("configureAuthenticators")}</th>
21
+ </tr>
22
+ <#else>
23
+ <tr>
24
+ <th colspan="3">${msg("configureAuthenticators")}</th>
25
+ </tr>
26
+ </#if>
27
+ </thead>
28
+ <tbody>
29
+ <#list totp.otpCredentials as credential>
30
+ <tr>
31
+ <td class="provider">${msg("mobile")}</td>
32
+ <#if totp.otpCredentials?size gt 1>
33
+ <td class="provider">${credential.id}</td>
34
+ </#if>
35
+ <td class="provider">${credential.userLabel!}</td>
36
+ <td class="action">
37
+ <form action="${url.totpUrl}" method="post" class="form-inline">
38
+ <input type="hidden" id="stateChecker" name="stateChecker" value="${stateChecker}">
39
+ <input type="hidden" id="submitAction" name="submitAction" value="Delete">
40
+ <input type="hidden" id="credentialId" name="credentialId" value="${credential.id}">
41
+ <button id="remove-mobile" class="btn btn-default">
42
+ <i class="pficon pficon-delete"></i>
43
+ </button>
44
+ </form>
45
+ </td>
46
+ </tr>
47
+ </#list>
48
+ </tbody>
49
+ </table>
50
+ <#else>
51
+
52
+ <hr/>
53
+
54
+ <ol>
55
+ <li>
56
+ <p>${msg("totpStep1")}</p>
57
+
58
+ <ul>
59
+ <#list totp.supportedApplications as app>
60
+ <li>${msg(app)}</li>
61
+ </#list>
62
+ </ul>
63
+ </li>
64
+
65
+ <#if mode?? && mode = "manual">
66
+ <li>
67
+ <p>${msg("totpManualStep2")}</p>
68
+ <p><span id="kc-totp-secret-key">${totp.totpSecretEncoded}</span></p>
69
+ <p><a href="${totp.qrUrl}" id="mode-barcode">${msg("totpScanBarcode")}</a></p>
70
+ </li>
71
+ <li>
72
+ <p>${msg("totpManualStep3")}</p>
73
+ <ul>
74
+ <li id="kc-totp-type">${msg("totpType")}: ${msg("totp." + totp.policy.type)}</li>
75
+ <li id="kc-totp-algorithm">${msg("totpAlgorithm")}: ${totp.policy.getAlgorithmKey()}</li>
76
+ <li id="kc-totp-digits">${msg("totpDigits")}: ${totp.policy.digits}</li>
77
+ <#if totp.policy.type = "totp">
78
+ <li id="kc-totp-period">${msg("totpInterval")}: ${totp.policy.period}</li>
79
+ <#elseif totp.policy.type = "hotp">
80
+ <li id="kc-totp-counter">${msg("totpCounter")}: ${totp.policy.initialCounter}</li>
81
+ </#if>
82
+ </ul>
83
+ </li>
84
+ <#else>
85
+ <li>
86
+ <p>${msg("totpStep2")}</p>
87
+ <p><img src="data:image/png;base64, ${totp.totpSecretQrCode}" alt="Figure: Barcode"></p>
88
+ <p><a href="${totp.manualUrl}" id="mode-manual">${msg("totpUnableToScan")}</a></p>
89
+ </li>
90
+ </#if>
91
+ <li>
92
+ <p>${msg("totpStep3")}</p>
93
+ <p>${msg("totpStep3DeviceName")}</p>
94
+ </li>
95
+ </ol>
96
+
97
+ <hr/>
98
+
99
+ <form action="${url.totpUrl}" class="form-horizontal" method="post">
100
+ <input type="hidden" id="stateChecker" name="stateChecker" value="${stateChecker}">
101
+ <div class="form-group">
102
+ <div class="col-sm-2 col-md-2">
103
+ <label for="totp" class="control-label">${msg("authenticatorCode")}</label> <span class="required">*</span>
104
+ </div>
105
+
106
+ <div class="col-sm-10 col-md-10">
107
+ <input type="text" class="form-control" id="totp" name="totp" autocomplete="off" autofocus>
108
+ <input type="hidden" id="totpSecret" name="totpSecret" value="${totp.totpSecret}"/>
109
+ </div>
110
+
111
+
112
+ </div>
113
+
114
+ <div class="form-group" ${messagesPerField.printIfExists('userLabel',properties.kcFormGroupErrorClass!)}">
115
+ <div class="col-sm-2 col-md-2">
116
+ <label for="userLabel" class="control-label">${msg("totpDeviceName")}</label> <#if totp.otpCredentials?size gte 1><span class="required">*</span></#if>
117
+ </div>
118
+
119
+ <div class="col-sm-10 col-md-10">
120
+ <input type="text" class="form-control" id="userLabel" name="userLabel" autocomplete="off">
121
+ </div>
122
+ </div>
123
+
124
+ <div class="form-group">
125
+ <div id="kc-form-buttons" class="col-md-offset-2 col-md-10 submit">
126
+ <div class="">
127
+ <button type="submit"
128
+ class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonLargeClass!}"
129
+ id="saveTOTPBtn" name="submitAction" value="Save">${msg("doSave")}
130
+ </button>
131
+ <button type="submit"
132
+ class="${properties.kcButtonClass!} ${properties.kcButtonDefaultClass!} ${properties.kcButtonLargeClass!}"
133
+ id="cancelTOTPBtn" name="submitAction" value="Cancel">${msg("doCancel")}
134
+ </button>
135
+ </div>
136
+ </div>
137
+ </div>
138
+ </form>
139
+ </#if>
140
+
141
+ </@layout.mainLayout>
@@ -0,0 +1,277 @@
1
+ html {
2
+ height: 100%;
3
+ }
4
+
5
+ body {
6
+ background-color: #F9F9F9;
7
+ margin: 0;
8
+ padding: 0;
9
+ height: 100%;
10
+ }
11
+
12
+ header .navbar {
13
+ margin-bottom: 0;
14
+ min-height: inherit;
15
+ }
16
+
17
+ .header .container {
18
+ position: relative;
19
+ }
20
+
21
+ .navbar-title {
22
+ background-image: url('../img/logo.png');
23
+ height: 25px;
24
+ background-repeat: no-repeat;
25
+ width: 123px;
26
+ margin: 3px 10px 5px;
27
+ text-indent: -99999px;
28
+ }
29
+
30
+ .navbar-pf .navbar-utility {
31
+ right: 20px;
32
+ top: -34px !important;
33
+ font-size: 12px;
34
+ }
35
+
36
+ .navbar-pf .navbar-utility > li > a {
37
+ color: #fff !important;
38
+ padding-bottom: 12px;
39
+ padding-top: 11px;
40
+ border-left: medium none;
41
+ }
42
+
43
+ .container {
44
+ height: 100%;
45
+ }
46
+
47
+ .content-area {
48
+ background-color: #fff;
49
+ border-color: #CECECE;
50
+ border-style: solid;
51
+ border-width: 0 1px;
52
+ height: 100%;
53
+ padding: 0 30px;
54
+ }
55
+
56
+ .margin-bottom {
57
+ margin-bottom: 10px;
58
+ }
59
+
60
+ /* Sidebar */
61
+
62
+ .bs-sidebar {
63
+ background-color: #f9f9f9;
64
+ padding-top: 44px;
65
+ padding-right: 0;
66
+ padding-left: 0;
67
+ z-index: 20;
68
+ }
69
+ .bs-sidebar ul {
70
+ list-style: none;
71
+ padding-left: 12px;
72
+ }
73
+
74
+ .bs-sidebar ul li {
75
+ margin-bottom: 0.5em;
76
+ margin-left: -1em;
77
+ }
78
+ .bs-sidebar ul li a {
79
+ font-size: 14px;
80
+ padding-left: 25px;
81
+ color: #4d5258;
82
+ line-height: 28px;
83
+ display: block;
84
+ border-width: 1px 0 1px 1px;
85
+ border-style: solid;
86
+ border-color: #f9f9f9;
87
+ }
88
+ .bs-sidebar ul li a:hover,
89
+ .bs-sidebar ul li a:focus {
90
+ text-decoration: none;
91
+ color: #777777;
92
+ border-right: 2px solid #aaa;
93
+ }
94
+ .bs-sidebar ul li.active a {
95
+ background-color: #c7e5f0;
96
+ border-color: #56bae0;
97
+ font-weight: bold;
98
+ background-image: url(../img/icon-sidebar-active.png);
99
+ background-repeat: no-repeat;
100
+ background-position: right center;
101
+ }
102
+
103
+ .bs-sidebar ul li.active a:hover {
104
+ border-right: none;
105
+ }
106
+
107
+
108
+ .content-area h2 {
109
+ font-family: "Open Sans", sans-serif;
110
+ font-weight: 100;
111
+ font-size: 24px;
112
+ margin-bottom: 25px;
113
+ margin-top: 25px;
114
+ }
115
+
116
+ .subtitle {
117
+ text-align: right;
118
+ margin-top: 30px;
119
+ color: #909090;
120
+ }
121
+
122
+ .required {
123
+ color: #CB2915;
124
+ }
125
+
126
+
127
+ .alert {
128
+ margin-top: 30px;
129
+ margin-bottom: 0;
130
+ }
131
+
132
+ .feedback-aligner .alert {
133
+ background-position: 1.27273em center;
134
+ background-repeat: no-repeat;
135
+ border-radius: 2px;
136
+ border-width: 1px;
137
+ color: #4D5258;
138
+ display: inline-block;
139
+ font-size: 1.1em;
140
+ line-height: 1.4em;
141
+ margin: 0;
142
+ padding: 0.909091em 3.63636em;
143
+ position: relative;
144
+ text-align: left;
145
+ }
146
+ .alert.alert-success {
147
+ background-color: #E4F1E1;
148
+ border-color: #4B9E39;
149
+ }
150
+ .alert.alert-error {
151
+ background-color: #F8E7E7;
152
+ border-color: #B91415;
153
+ }
154
+ .alert.alert-warning {
155
+ background-color: #FEF1E9;
156
+ border-color: #F17528;
157
+ }
158
+ .alert.alert-info {
159
+ background-color: #E4F3FA;
160
+ border-color: #5994B2;
161
+ }
162
+
163
+ .form-horizontal {
164
+ border-top: 1px solid #E9E8E8;
165
+ padding-top: 23px;
166
+ }
167
+
168
+ .form-horizontal .control-label {
169
+ color: #909090;
170
+ line-height: 1.4em;
171
+ padding-top: 5px;
172
+ position: relative;
173
+ text-align: right;
174
+ width: 100%;
175
+ }
176
+
177
+ .form-group {
178
+ position: relative;
179
+ }
180
+
181
+ .control-label + .required {
182
+ position: absolute;
183
+ right: -2px;
184
+ top: 0;
185
+ }
186
+
187
+ #kc-form-buttons {
188
+ text-align: right;
189
+ margin-top: 10px;
190
+ }
191
+
192
+ #kc-form-buttons .btn-primary {
193
+ float: right;
194
+ margin-left: 8px;
195
+ }
196
+
197
+ /* Authenticator page */
198
+
199
+ ol {
200
+ padding-left: 40px;
201
+ }
202
+
203
+ ol li {
204
+ font-size: 13px;
205
+ margin-bottom: 10px;
206
+ position: relative;
207
+ }
208
+
209
+ ol li img {
210
+ margin-top: 15px;
211
+ margin-bottom: 5px;
212
+ border: 1px solid #eee;
213
+ }
214
+
215
+ hr + .form-horizontal {
216
+ border: none;
217
+ padding-top: 0;
218
+ }
219
+
220
+ .kc-dropdown{
221
+ position: relative;
222
+ }
223
+ .kc-dropdown > a{
224
+ display:block;
225
+ padding: 11px 10px 12px;
226
+ line-height: 12px;
227
+ font-size: 12px;
228
+ color: #fff !important;
229
+ text-decoration: none;
230
+ }
231
+ .kc-dropdown > a::after{
232
+ content: "\2c5";
233
+ margin-left: 4px;
234
+ }
235
+ .kc-dropdown:hover > a{
236
+ background-color: rgba(0,0,0,0.2);
237
+ }
238
+ .kc-dropdown ul li a{
239
+ padding: 1px 11px;
240
+ font-size: 12px;
241
+ color: #000 !important;
242
+ border: 1px solid #fff;
243
+ text-decoration: none;
244
+ display:block;
245
+ line-height: 20px;
246
+ }
247
+ .kc-dropdown ul li a:hover{
248
+ color: #4d5258;
249
+ background-color: #d4edfa;
250
+ border-color: #b3d3e7;
251
+ }
252
+ .kc-dropdown ul{
253
+ position: absolute;
254
+ z-index: 2000;
255
+ list-style:none;
256
+ display:none;
257
+ padding: 5px 0px;
258
+ margin: 0px;
259
+ background-color: #fff !important;
260
+ border: 1px solid #b6b6b6;
261
+ border-radius: 1px;
262
+ -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
263
+ box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
264
+ background-clip: padding-box;
265
+ min-width: 100px;
266
+ }
267
+ .kc-dropdown:hover ul{
268
+ display:block;
269
+ }
270
+
271
+
272
+ #kc-totp-secret-key {
273
+ border: 1px solid #eee;
274
+ font-size: 16px;
275
+ padding: 10px;
276
+ margin: 50px 0;
277
+ }