@multiplatform.one/keycloak-theme 7.83.1 → 7.84.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 (43) hide show
  1. package/dist/cjs/SpringboardStyles.cjs +61 -0
  2. package/dist/cjs/SpringboardStyles.native.js +67 -0
  3. package/dist/cjs/SpringboardStyles.native.js.map +1 -0
  4. package/dist/cjs/css.cjs +555 -0
  5. package/dist/cjs/css.native.js +559 -0
  6. package/dist/cjs/css.native.js.map +1 -0
  7. package/dist/cjs/glyph.cjs +71 -0
  8. package/dist/cjs/glyph.native.js +75 -0
  9. package/dist/cjs/glyph.native.js.map +1 -0
  10. package/dist/cjs/index.cjs +53 -0
  11. package/dist/cjs/index.native.js +56 -0
  12. package/dist/cjs/index.native.js.map +1 -0
  13. package/dist/cjs/themeName.cjs +42 -0
  14. package/dist/cjs/themeName.native.js +45 -0
  15. package/dist/cjs/themeName.native.js.map +1 -0
  16. package/dist/cjs/tokens.cjs +133 -0
  17. package/dist/cjs/tokens.native.js +136 -0
  18. package/dist/cjs/tokens.native.js.map +1 -0
  19. package/dist/esm/SpringboardStyles.mjs +35 -0
  20. package/dist/esm/SpringboardStyles.mjs.map +1 -0
  21. package/dist/esm/SpringboardStyles.native.js +38 -0
  22. package/dist/esm/SpringboardStyles.native.js.map +1 -0
  23. package/dist/esm/css.mjs +530 -0
  24. package/dist/esm/css.mjs.map +1 -0
  25. package/dist/esm/css.native.js +531 -0
  26. package/dist/esm/css.native.js.map +1 -0
  27. package/dist/esm/glyph.mjs +42 -0
  28. package/dist/esm/glyph.mjs.map +1 -0
  29. package/dist/esm/glyph.native.js +43 -0
  30. package/dist/esm/glyph.native.js.map +1 -0
  31. package/dist/esm/index.mjs +7 -0
  32. package/dist/esm/index.mjs.map +1 -0
  33. package/dist/esm/index.native.js +7 -0
  34. package/dist/esm/index.native.js.map +1 -0
  35. package/dist/esm/themeName.mjs +15 -0
  36. package/dist/esm/themeName.mjs.map +1 -0
  37. package/dist/esm/themeName.native.js +15 -0
  38. package/dist/esm/themeName.native.js.map +1 -0
  39. package/dist/esm/tokens.mjs +98 -0
  40. package/dist/esm/tokens.mjs.map +1 -0
  41. package/dist/esm/tokens.native.js +98 -0
  42. package/dist/esm/tokens.native.js.map +1 -0
  43. package/package.json +12 -3
@@ -0,0 +1,530 @@
1
+ import { accent, caption, field, fontFamily as defaultFontFamily, icon, ink, plate, status, trigger, wallpaperColors, wallpaperLayers } from "./tokens.mjs";
2
+ function cssString(value) {
3
+ return JSON.stringify(value);
4
+ }
5
+ function customProperties() {
6
+ return [
7
+ // Surfaces.
8
+ `--kc-page-bg: ${wallpaperColors.base};`, `--kc-card-bg: ${plate.fill};`, `--kc-input-bg: ${field.background};`,
9
+ // Ink.
10
+ `--kc-text: ${ink.primary};`, `--kc-muted: ${ink.muted};`, `--kc-placeholder: ${ink.faint};`,
11
+ // Hairlines.
12
+ `--kc-border: ${field.border};`, `--kc-border-hover: ${field.borderHover};`, `--kc-border-focus: ${field.borderFocus};`, `--kc-border-strong: ${field.borderHover};`, `--kc-divider: ${field.divider};`,
13
+ // Interaction.
14
+ `--kc-hover-bg: ${field.ghost};`, `--kc-press-bg: ${field.ghostHover};`, `--kc-ring: ${accent.sky};`, `--kc-link: ${accent.sky};`,
15
+ // Call to action.
16
+ `--kc-cta-bg: ${accent.indigo};`, `--kc-cta-fg: ${ink.primary};`, `--kc-cta-hover: ${accent.indigoHover};`, `--kc-cta-press: ${accent.indigoPress};`,
17
+ // Disabled — washed chrome, lowest legible ink.
18
+ `--kc-disabled-bg: ${field.ghost};`, `--kc-disabled-border: ${field.border};`, `--kc-disabled-text: ${ink.faint};`,
19
+ // Feedback.
20
+ `--kc-error-text: ${status.error};`, `--kc-error-border: ${status.error};`, `--kc-warning-border: ${status.warning};`, `--kc-success-border: ${status.success};`, `--kc-info-border: ${status.info};`, `--kc-menu-shadow: rgba(0,0,0,0.45);`,
21
+ // Springboard's own, consumed only by this sheet.
22
+ `--sb-plate-fill: ${plate.fill};`, `--sb-plate-highlight: ${plate.highlight};`, `--sb-plate-radius: ${plate.radius}px;`, `--sb-icon-size: ${icon.size}px;`, `--sb-icon-radius: ${icon.radius}px;`, `--sb-caption-size: ${caption.fontSize}px;`, `--sb-caption-line: ${caption.lineHeight}px;`].join("\n ");
23
+ }
24
+ const onWallpaperShadow = `0 ${caption.shadowOffsetY}px ${caption.shadowBlur}px ${wallpaperColors.textShadow}`;
25
+ const plateShadow = `0 ${trigger.shadowOffsetY}px ${trigger.shadowBlur}px rgba(0,0,0,0.45)`;
26
+ const iconShadow = `0 ${icon.shadowOffsetY}px ${icon.shadowBlur}px ${icon.shadowColor}`;
27
+ function markRules(scope, mark) {
28
+ const monogramSize = Math.round(icon.size * 0.34);
29
+ const monogramLine = Math.round(icon.size * 0.4);
30
+ return `
31
+ /* \u2500\u2500 the estate's glyph: the springboard's own squircle \u2500\u2500\u2500\u2500\u2500\u2500 */
32
+ ${scope} .login-pf-page #kc-page-title,
33
+ ${scope} .login-pf-page #kc-username {
34
+ display: flex;
35
+ flex-direction: column;
36
+ align-items: center;
37
+ gap: ${caption.marginTop}px;
38
+ }
39
+ ${scope} .login-pf-page #kc-page-title::before,
40
+ ${scope} .login-pf-page #kc-username::before {
41
+ content: ${cssString(mark.monogram)};
42
+ box-sizing: border-box;
43
+ width: var(--sb-icon-size);
44
+ height: var(--sb-icon-size);
45
+ border-radius: var(--sb-icon-radius);
46
+ background: ${mark.background};
47
+ color: ${mark.foreground};
48
+ box-shadow: ${iconShadow};
49
+ display: flex;
50
+ align-items: center;
51
+ justify-content: center;
52
+ font-size: ${monogramSize}px;
53
+ line-height: ${monogramLine}px;
54
+ font-weight: 800;
55
+ letter-spacing: 0.5px;
56
+ user-select: none;
57
+ }`;
58
+ }
59
+ function buildSpringboardCss(options = {}) {
60
+ const {
61
+ mark,
62
+ fontFamily = defaultFontFamily,
63
+ focusRingWidthPx = 2,
64
+ focusRingOffsetPx = 2,
65
+ minPressTargetPx = 44,
66
+ cardMaxWidthPx = 420
67
+ } = options;
68
+ const scope = "html.login-pf";
69
+ const vars = customProperties();
70
+ const cardPadY = plate.paddingVertical + 12;
71
+ const cardPadX = plate.paddingHorizontal + 8;
72
+ return `
73
+ /* \u2500\u2500 springboard tokens, both colour schemes \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
74
+ /* One dark surface in light and dark alike \u2014 see ./tokens.ts. */
75
+ ${scope},
76
+ ${scope}.t_dark {
77
+ ${vars}
78
+ }
79
+
80
+ /* \u2500\u2500 the wallpaper \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
81
+ ${scope} {
82
+ background-color: ${wallpaperColors.base};
83
+ background-image: ${wallpaperLayers};
84
+ /* Fixed so the glows stay anchored to the viewport instead of tiling
85
+ down a page that grew a scrollbar (a long consent screen, a locale
86
+ list). The springboard's wallpaper is a layer behind everything, not
87
+ a background that scrolls with content. */
88
+ background-attachment: fixed;
89
+ background-repeat: no-repeat;
90
+ background-size: cover;
91
+ min-height: 100%;
92
+ }
93
+ ${scope} body {
94
+ background: transparent none;
95
+ color: ${ink.primary};
96
+ font-family: ${fontFamily};
97
+ -webkit-font-smoothing: antialiased;
98
+ }
99
+ ${scope} .login-pf-page {
100
+ background: transparent;
101
+ padding-bottom: 40px;
102
+ }
103
+
104
+ /* \u2500\u2500 the realm title, sitting straight on the wallpaper \u2500\u2500\u2500\u2500\u2500\u2500 */
105
+ /* Caption anatomy from the launcher: white with a halo, because this
106
+ text has no plate under it and may land on either glow. */
107
+ ${scope} .login-pf-page #kc-header-wrapper {
108
+ color: ${wallpaperColors.text};
109
+ text-shadow: ${onWallpaperShadow};
110
+ font-weight: 700;
111
+ font-size: 22px;
112
+ line-height: 1.3;
113
+ letter-spacing: normal;
114
+ text-transform: none;
115
+ padding: 44px 16px 18px;
116
+ }
117
+
118
+ /* \u2500\u2500 the card: the dock's glass shelf, grown to hold a form \u2500\u2500 */
119
+ ${scope} .login-pf-page .card-pf {
120
+ max-width: ${cardMaxWidthPx}px;
121
+ margin: 0 auto;
122
+ background: var(--sb-plate-fill);
123
+ border: 1px solid var(--sb-plate-highlight);
124
+ border-radius: var(--sb-plate-radius);
125
+ /* The shelf's top-edge inner highlight ('inset 0 1px 0 #fff4' in the
126
+ launcher payload) plus the trigger's elevation under the slab. */
127
+ box-shadow:
128
+ inset 0 1px 0 ${plate.highlight},
129
+ ${plateShadow};
130
+ /* "blur-ish" is the launcher's own word for the dock material. Where
131
+ backdrop-filter is unsupported the fill alone still reads as a slab,
132
+ so this degrades rather than breaks. */
133
+ backdrop-filter: blur(22px) saturate(140%);
134
+ -webkit-backdrop-filter: blur(22px) saturate(140%);
135
+ padding: ${cardPadY}px ${cardPadX}px;
136
+ overflow: hidden;
137
+ }
138
+ ${scope} .login-pf-page .login-pf-header h1,
139
+ ${scope} .login-pf-page #kc-page-title {
140
+ color: ${ink.primary};
141
+ font-weight: 700;
142
+ font-size: 20px;
143
+ line-height: 1.3;
144
+ margin: 0 0 ${plate.gap}px;
145
+ }
146
+ ${mark ? markRules(scope, mark) : ""}
147
+
148
+ /* \u2500\u2500 labels and prose \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
149
+ ${scope} .login-pf-page label,
150
+ ${scope} .login-pf-page .pf-c-form__label,
151
+ ${scope} .login-pf-page .pf-c-form__label-text {
152
+ color: ${ink.secondary};
153
+ font-weight: 500;
154
+ font-size: 14px;
155
+ }
156
+ ${scope} .login-pf-page .instruction,
157
+ ${scope} .login-pf-page .subtitle,
158
+ ${scope} .login-pf-page .pf-c-form__helper-text,
159
+ ${scope} .login-pf-page #kc-info,
160
+ ${scope} .login-pf-page .login-pf-signup {
161
+ color: ${ink.muted};
162
+ }
163
+ ${scope} .login-pf-page #kc-attempted-username {
164
+ color: ${ink.primary};
165
+ font-weight: 600;
166
+ }
167
+
168
+ /* \u2500\u2500 fields: inset into the slab, not laid on top of it \u2500\u2500\u2500\u2500\u2500\u2500 */
169
+ ${scope} .login-pf-page .pf-c-form-control,
170
+ ${scope} .login-pf-page input[type="text"],
171
+ ${scope} .login-pf-page input[type="password"],
172
+ ${scope} .login-pf-page input[type="email"],
173
+ ${scope} .login-pf-page input[type="tel"],
174
+ ${scope} .login-pf-page input[type="number"],
175
+ ${scope} .login-pf-page select,
176
+ ${scope} .login-pf-page textarea {
177
+ min-height: ${minPressTargetPx}px;
178
+ background-color: ${field.background};
179
+ color: ${ink.primary};
180
+ border: 1px solid ${field.border};
181
+ box-shadow: none;
182
+ }
183
+ ${scope} .login-pf-page .pf-c-form-control:hover,
184
+ ${scope} .login-pf-page select:hover,
185
+ ${scope} .login-pf-page textarea:hover {
186
+ border-color: ${field.borderHover};
187
+ }
188
+ ${scope} .login-pf-page .pf-c-form-control:focus,
189
+ ${scope} .login-pf-page select:focus,
190
+ ${scope} .login-pf-page textarea:focus {
191
+ border-color: ${field.borderFocus};
192
+ background-color: ${field.background};
193
+ }
194
+ ${scope} .login-pf-page .pf-c-form-control::placeholder,
195
+ ${scope} .login-pf-page input::placeholder {
196
+ color: ${ink.faint};
197
+ }
198
+ ${scope} .login-pf-page .pf-c-form-control[aria-invalid="true"] {
199
+ border-color: ${status.error};
200
+ }
201
+ /* \u2605 THE INPUT GROUP IS OPAQUE WHITE IN PATTERNFLY, and that one fact
202
+ defeats the whole field treatment above. '.pf-c-input-group' wraps the
203
+ password field and its visibility toggle; both of those are painted in
204
+ TRANSLUCENT springboard colours, so over a white parent the field
205
+ composites to mid-grey and the toggle to near-white \u2014 which is exactly
206
+ how it rendered before this rule existed. Clearing the parent is what
207
+ makes the two translucent children land on the slab instead. */
208
+ /* LC-149 FIELD-TRAILING-ACTION: the reveal sits inside the password field
209
+ as a chromeless trailing eye, not a bordered button beside it. The field
210
+ keeps the end cap clear, and PatternFly's in-field invalid glyph steps
211
+ aside for it. */
212
+ ${scope} .login-pf-page .pf-c-input-group {
213
+ background: transparent;
214
+ position: relative;
215
+ display: flex;
216
+ align-items: stretch;
217
+ }
218
+ ${scope} .login-pf-page .pf-c-input-group .pf-c-form-control,
219
+ ${scope} .login-pf-page .pf-c-input-group .pf-c-form-control[aria-invalid="true"] {
220
+ flex: 1 1 auto;
221
+ padding-inline-end: ${minPressTargetPx}px;
222
+ background-image: none;
223
+ }
224
+ ${scope} .login-pf-page .pf-c-input-group .pf-c-button.pf-m-control,
225
+ ${scope} .login-pf-page .pf-c-input-group .pf-c-button.pf-m-control:hover,
226
+ ${scope} .login-pf-page .pf-c-input-group .pf-c-button.pf-m-control:active {
227
+ position: absolute;
228
+ inset-block: 0;
229
+ inset-inline-end: 0;
230
+ z-index: 1;
231
+ width: ${minPressTargetPx}px;
232
+ min-width: ${minPressTargetPx}px;
233
+ min-height: 0;
234
+ padding: 0;
235
+ background-color: transparent;
236
+ border-color: transparent;
237
+ box-shadow: none;
238
+ color: ${ink.secondary};
239
+ }
240
+ ${scope} .login-pf-page .pf-c-input-group .pf-c-button.pf-m-control:hover {
241
+ color: ${ink.primary};
242
+ }
243
+
244
+ /* Chrome paints autofilled inputs a fixed pale yellow that no colour
245
+ property overrides \u2014 the inset shadow is the documented way to repaint
246
+ the field, and without it a remembered username lands as a white bar in
247
+ the middle of the slab. */
248
+ ${scope} .login-pf-page input:-webkit-autofill,
249
+ ${scope} .login-pf-page input:-webkit-autofill:hover,
250
+ ${scope} .login-pf-page input:-webkit-autofill:focus {
251
+ -webkit-box-shadow: 0 0 0 1000px ${field.background} inset;
252
+ -webkit-text-fill-color: ${ink.primary};
253
+ caret-color: ${ink.primary};
254
+ }
255
+
256
+ /* \u2500\u2500 buttons \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
257
+ ${scope} .login-pf-page .pf-c-button {
258
+ min-height: ${minPressTargetPx}px;
259
+ font-weight: 600;
260
+ }
261
+ ${scope} .login-pf-page .pf-c-button.pf-m-primary,
262
+ ${scope} .login-pf-page input.pf-m-primary[type="submit"],
263
+ ${scope} .login-pf-page input.pf-m-primary[type="button"] {
264
+ background-color: ${accent.indigo};
265
+ border-color: ${accent.indigo};
266
+ color: ${ink.primary};
267
+ box-shadow: ${iconShadow};
268
+ }
269
+ ${scope} .login-pf-page .pf-c-button.pf-m-primary:hover,
270
+ ${scope} .login-pf-page input.pf-m-primary[type="submit"]:hover {
271
+ background-color: ${accent.indigoHover};
272
+ border-color: ${accent.indigoHover};
273
+ }
274
+ ${scope} .login-pf-page .pf-c-button.pf-m-primary:active,
275
+ ${scope} .login-pf-page input.pf-m-primary[type="submit"]:active {
276
+ background-color: ${accent.indigoPress};
277
+ border-color: ${accent.indigoPress};
278
+ }
279
+ ${scope} .login-pf-page .pf-c-button.pf-m-primary:disabled,
280
+ ${scope} .login-pf-page input.pf-m-primary[type="submit"]:disabled {
281
+ background-color: ${field.ghost};
282
+ border-color: ${field.border};
283
+ color: ${ink.faint};
284
+ box-shadow: none;
285
+ }
286
+ ${scope} .login-pf-page .pf-c-button.pf-m-control,
287
+ ${scope} .login-pf-page .pf-c-button.pf-m-secondary,
288
+ ${scope} .login-pf-page .pf-c-button.btn-default:not(.pf-m-primary) {
289
+ background-color: ${field.ghost};
290
+ border-color: ${field.border};
291
+ color: ${ink.primary};
292
+ }
293
+ ${scope} .login-pf-page .pf-c-button.pf-m-control:hover,
294
+ ${scope} .login-pf-page .pf-c-button.pf-m-secondary:hover,
295
+ ${scope} .login-pf-page .pf-c-button.btn-default:not(.pf-m-primary):hover {
296
+ background-color: ${field.ghostHover};
297
+ border-color: ${field.borderHover};
298
+ color: ${ink.primary};
299
+ }
300
+ /* PatternFly draws control-button borders on an ::after overlay and
301
+ accents its bottom edge on interaction; on the slab that reads as a
302
+ stray underline beneath the password-visibility toggle. */
303
+ ${scope} .login-pf-page .pf-c-button::after,
304
+ ${scope} .login-pf-page .pf-c-button:hover::after,
305
+ ${scope} .login-pf-page .pf-c-button:focus::after,
306
+ ${scope} .login-pf-page .pf-c-button:active::after {
307
+ content: none;
308
+ }
309
+
310
+ /* \u2500\u2500 the remember-me checkbox \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
311
+ /* \u2605 THE RESET IS PART OF THE SKIN, not borrowed from the house sheet.
312
+ A native checkbox is a 13px white box drawn by the platform: no colour
313
+ property reaches it, so on the slab it reads as a bright chip with no
314
+ relationship to anything around it. 'appearance: none' is what makes it
315
+ paintable at all. The visual square stays 22px inside a transparent
316
+ border that pads the hit box out to the press-target floor, so the
317
+ control is small and the target is not (DG-A11Y-01).
318
+
319
+ The house sheet bakes its tick glyph as a data-URI at build time from
320
+ the ramp's CTA foreground, so the springboard's tick is restated here
321
+ rather than inherited through a custom property. */
322
+ ${scope} .login-pf-page input[type="checkbox"] {
323
+ appearance: none;
324
+ -webkit-appearance: none;
325
+ position: static;
326
+ box-sizing: content-box;
327
+ width: 22px;
328
+ height: 22px;
329
+ border: ${Math.round((minPressTargetPx - 22) / 2)}px solid transparent;
330
+ border-radius: ${Math.round((minPressTargetPx - 22) / 2) + 8}px;
331
+ background-clip: padding-box;
332
+ background-repeat: no-repeat;
333
+ background-position: center;
334
+ background-size: 15px 15px;
335
+ margin: 0 4px 0 0;
336
+ flex: 0 0 auto;
337
+ cursor: pointer;
338
+ background-color: ${field.background};
339
+ box-shadow: inset 0 0 0 1.5px ${field.borderHover};
340
+ }
341
+ ${scope} .login-pf-page .checkbox label,
342
+ ${scope} .login-pf-page .pf-c-check {
343
+ display: inline-flex;
344
+ align-items: center;
345
+ min-height: ${minPressTargetPx}px;
346
+ padding-left: 0;
347
+ margin: 0;
348
+ cursor: pointer;
349
+ }
350
+ ${scope} .login-pf-page input[type="checkbox"]:checked,
351
+ ${scope}.t_dark .login-pf-page input[type="checkbox"]:checked {
352
+ background-color: ${accent.indigo};
353
+ box-shadow: inset 0 0 0 1.5px ${accent.indigo};
354
+ background-image: url("data:image/svg+xml,${encodeURIComponent(`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="${ink.primary}" stroke-width="3.5" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6 9 17l-5-5"/></svg>`)}");
355
+ }
356
+
357
+ /* \u2500\u2500 links \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
358
+ ${scope} .login-pf-page a {
359
+ color: ${accent.sky};
360
+ }
361
+ ${scope} .login-pf-page a:hover {
362
+ color: ${accent.sky};
363
+ }
364
+
365
+ /* \u2500\u2500 alerts \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
366
+ ${scope} .login-pf-page .pf-c-alert.pf-m-inline {
367
+ background: ${field.background};
368
+ border: 1px solid ${field.border};
369
+ border-left-width: 3px;
370
+ border-left-color: ${status.info};
371
+ }
372
+ ${scope} .login-pf-page .pf-c-alert.pf-m-inline.pf-m-danger {
373
+ border-left-color: ${status.error};
374
+ }
375
+ ${scope} .login-pf-page .pf-c-alert.pf-m-inline.pf-m-warning {
376
+ border-left-color: ${status.warning};
377
+ }
378
+ ${scope} .login-pf-page .pf-c-alert.pf-m-inline.pf-m-success {
379
+ border-left-color: ${status.success};
380
+ }
381
+ ${scope} .login-pf-page .pf-c-alert__title {
382
+ color: ${ink.primary};
383
+ }
384
+ ${scope} .login-pf-page .pf-c-alert__icon {
385
+ color: ${ink.muted};
386
+ }
387
+ ${scope} .login-pf-page span#input-error,
388
+ ${scope} .login-pf-page [id^="input-error"],
389
+ ${scope} .login-pf-page .pf-m-error,
390
+ ${scope} .login-pf-page .required {
391
+ color: ${status.error};
392
+ }
393
+
394
+ /* \u2500\u2500 identity providers: the SSO buttons \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
395
+ /* \u2605 CHROME ONLY. Every provider row is an <a href={p.loginUrl}> that
396
+ keycloakify renders from social.providers; nothing here changes what
397
+ it points at, what it is called, or whether it appears. */
398
+ ${scope} .login-pf-page #kc-social-providers h2 {
399
+ color: ${ink.muted};
400
+ font-size: 13px;
401
+ font-weight: 500;
402
+ }
403
+ ${scope} .login-pf-page hr,
404
+ ${scope} .login-pf-page #kc-social-providers hr {
405
+ border-top: 1px solid ${field.divider};
406
+ opacity: 1;
407
+ }
408
+ ${scope} .login-pf-page .kc-social-item,
409
+ ${scope} .login-pf-page .kc-social-links a,
410
+ ${scope} .login-pf-page #kc-social-providers li a {
411
+ min-height: ${minPressTargetPx}px;
412
+ background: ${field.ghost};
413
+ border: 1px solid ${field.border};
414
+ border-radius: var(--sb-icon-radius);
415
+ color: ${ink.primary};
416
+ text-decoration: none;
417
+ }
418
+ ${scope} .login-pf-page .kc-social-item:hover,
419
+ ${scope} .login-pf-page .kc-social-links a:hover,
420
+ ${scope} .login-pf-page #kc-social-providers li a:hover {
421
+ background: ${field.ghostHover};
422
+ border-color: ${field.borderHover};
423
+ color: ${ink.primary};
424
+ }
425
+ ${scope} .login-pf-page .kc-social-provider-name,
426
+ ${scope} .login-pf-page .kc-social-icon-text {
427
+ color: ${ink.primary};
428
+ }
429
+
430
+ /* \u2500\u2500 the OTP credential tiles (login-otp.ftl) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
431
+ ${scope} .login-pf-page .pf-c-tile {
432
+ background: ${field.background};
433
+ border: 1px solid ${field.border};
434
+ border-radius: var(--sb-icon-radius);
435
+ color: ${ink.primary};
436
+ }
437
+ ${scope} .login-pf-page .pf-c-tile__input:checked + .pf-c-tile,
438
+ ${scope} .login-pf-page .pf-c-tile__input:checked + label {
439
+ border-color: ${accent.indigo};
440
+ background: ${field.ghostHover};
441
+ }
442
+ ${scope} .login-pf-page .pf-c-tile__title,
443
+ ${scope} .login-pf-page .pf-c-tile__icon {
444
+ color: ${ink.primary};
445
+ }
446
+
447
+ /* \u2500\u2500 the registration / back-to-app footer band \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
448
+ /* The stock sheet bleeds #kc-info to the card edge as a #f0f0f0 band.
449
+ On the slab it becomes the dock's own darker step. */
450
+ ${scope} .login-pf-page #kc-info {
451
+ margin: ${plate.gap}px -${cardPadX}px -${cardPadY}px;
452
+ padding: 0;
453
+ color: ${ink.muted};
454
+ }
455
+ ${scope} .login-pf-page #kc-info-wrapper {
456
+ background: rgba(8, 11, 20, 0.42);
457
+ border-top: 1px solid ${field.divider};
458
+ border-radius: 0 0 ${plate.radius - 1}px ${plate.radius - 1}px;
459
+ padding: 14px ${cardPadX}px;
460
+ color: ${ink.muted};
461
+ text-align: center;
462
+ }
463
+ ${scope} .login-pf-page #kc-info-wrapper a {
464
+ color: ${accent.sky};
465
+ }
466
+
467
+ /* \u2500\u2500 the locale menu \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
468
+ ${scope} .login-pf-page #kc-current-locale-link {
469
+ color: ${ink.muted};
470
+ }
471
+ ${scope} .login-pf-page #kc-current-locale-link:hover {
472
+ background: ${field.ghost};
473
+ color: ${ink.primary};
474
+ }
475
+ ${scope} .login-pf-page .pf-c-dropdown__menu {
476
+ background: ${wallpaperColors.base};
477
+ border: 1px solid ${plate.highlight};
478
+ box-shadow: ${plateShadow};
479
+ }
480
+ ${scope} .login-pf-page .pf-c-dropdown__menu-item {
481
+ color: ${ink.primary};
482
+ }
483
+ ${scope} .login-pf-page .pf-c-dropdown__menu-item:hover {
484
+ background: ${field.ghost};
485
+ color: ${ink.primary};
486
+ }
487
+
488
+ /* \u2500\u2500 focus ring (DG-A11Y-01: non-removable) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
489
+ /* !important outranks both PatternFly's focus styles and the house
490
+ ThemeProvider's global outline reset. The keyboard ring is the one
491
+ affordance a skin must never take away. */
492
+ ${scope} a:focus-visible,
493
+ ${scope} button:focus-visible,
494
+ ${scope} input:focus-visible,
495
+ ${scope} select:focus-visible,
496
+ ${scope} textarea:focus-visible,
497
+ ${scope} [tabindex]:focus-visible {
498
+ outline: ${focusRingWidthPx}px solid ${accent.sky} !important;
499
+ outline-offset: ${focusRingOffsetPx}px !important;
500
+ box-shadow: none !important;
501
+ }
502
+ /* LC-133 FOCUS-IS-BORDER (FZ-7717): a text field is the exception. It
503
+ focuses with its own border in the accent, at the width it already has,
504
+ so it changes colour and never size. */
505
+ ${scope} .login-pf-page .pf-c-form-control:focus,
506
+ ${scope} .login-pf-page .pf-c-form-control:focus-visible {
507
+ border-color: ${field.borderFocus};
508
+ outline: none !important;
509
+ }
510
+
511
+ /* \u2500\u2500 small screens keep the slab \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
512
+ @media (max-width: 767px) {
513
+ ${scope} .login-pf-page .card-pf {
514
+ margin: 0 12px;
515
+ background: var(--sb-plate-fill);
516
+ border: 1px solid var(--sb-plate-highlight);
517
+ border-radius: var(--sb-plate-radius);
518
+ box-shadow:
519
+ inset 0 1px 0 ${plate.highlight},
520
+ ${plateShadow};
521
+ }
522
+ ${scope} .login-pf-page #kc-header-wrapper {
523
+ padding: 28px 16px 14px;
524
+ font-size: 19px;
525
+ }
526
+ }
527
+ `;
528
+ }
529
+ export { buildSpringboardCss };
530
+ //# sourceMappingURL=css.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["accent","caption","field","fontFamily","defaultFontFamily","icon","ink","plate","status","trigger","wallpaperColors","wallpaperLayers","cssString","value","JSON","stringify","customProperties","base","fill","background","primary","muted","faint","border","borderHover","borderFocus","divider","ghost","ghostHover","sky","indigo","indigoHover","indigoPress","error","warning","success","info","highlight","radius","size","fontSize","lineHeight","join","onWallpaperShadow","shadowOffsetY","shadowBlur","textShadow","plateShadow","iconShadow","shadowColor","markRules","scope","mark","monogramSize","Math","round","monogramLine","marginTop","monogram","foreground","buildSpringboardCss","options","focusRingWidthPx","focusRingOffsetPx","minPressTargetPx","cardMaxWidthPx","vars","cardPadY","paddingVertical","cardPadX","paddingHorizontal","text","gap","secondary","encodeURIComponent"],"sources":["../../src/css.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}