@utrecht/component-library-css 4.1.0 → 5.0.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.
package/dist/html.css CHANGED
@@ -1,233 +1,11 @@
1
- @charset "UTF-8";
2
- /**
3
- * @license EUPL-1.2
4
- * Copyright (c) 2021 Gemeente Utrecht
5
- */
6
- /* Collection of all semantic HTML styles in the component library */
7
- /**
8
- * @license EUPL-1.2
9
- * Copyright (c) 2021 Robbert Broersma
10
- */
11
- /**
12
- * @license EUPL-1.2
13
- * Copyright (c) 2021 Robbert Broersma
14
- */
15
- /* Collection of all semantic HTML styles in the component library */
16
- /**
17
- * @license EUPL-1.2
18
- * Copyright (c) 2020-2022 Gemeente Utrecht
19
- * Copyright (c) 2020-2022 Frameless B.V.
20
- */
21
- /**
22
- * @license EUPL-1.2
23
- * Copyright (c) 2020-2022 Gemeente Utrecht
24
- * Copyright (c) 2020-2022 Frameless B.V.
25
- */
26
- /**
27
- * @license EUPL-1.2
28
- * Copyright (c) 2021 Robbert Broersma
29
- */
30
- /**
31
- * @license EUPL-1.2
32
- * Copyright (c) 2021 Robbert Broersma
33
- */
34
- /**
35
- * @license EUPL-1.2
36
- * Copyright (c) 2021 Robbert Broersma
37
- */
38
- /**
39
- * @license EUPL-1.2
40
- * Copyright (c) 2021 The Knights Who Say NIH! B.V.
41
- * Copyright (c) 2021 Gemeente Utrecht
42
- */
43
- /**
44
- * @license EUPL-1.2
45
- * Copyright (c) 2021 Gemeente Utrecht
46
- * Copyright (c) 2021 Robbert Broersma
47
- */
48
- /* stylelint-disable-next-line block-no-empty */
49
- /**
50
- * @license EUPL-1.2
51
- * Copyright (c) 2021 Robbert Broersma
52
- */
53
- /**
54
- * @license EUPL-1.2
55
- * Copyright (c) 2021 Robbert Broersma
56
- */
57
- /**
58
- * @license EUPL-1.2
59
- * Copyright (c) 2021 Gemeente Utrecht
60
- * Copyright (c) 2021 Robbert Broersma
61
- */
62
- /* stylelint-disable-next-line block-no-empty */
63
- /* stylelint-disable-next-line block-no-empty */
64
- /**
65
- * @license EUPL-1.2
66
- * Copyright (c) 2020-2022 Gemeente Utrecht
67
- * Copyright (c) 2020-2022 Frameless B.V.
68
- */
69
- /**
70
- * @license EUPL-1.2
71
- * Copyright (c) 2020-2022 Gemeente Utrecht
72
- * Copyright (c) 2020-2022 Frameless B.V.
73
- */
74
- /**
75
- * @license EUPL-1.2
76
- * Copyright (c) 2020-2022 Gemeente Utrecht
77
- * Copyright (c) 2020-2022 Frameless B.V.
78
- */
79
- /**
80
- * @license EUPL-1.2
81
- * Copyright (c) 2020-2022 Gemeente Utrecht
82
- * Copyright (c) 2020-2022 Frameless B.V.
83
- */
84
- /**
85
- * @license EUPL-1.2
86
- * Copyright (c) 2020-2022 Gemeente Utrecht
87
- * Copyright (c) 2020-2022 Frameless B.V.
88
- */
89
- /**
90
- * @license EUPL-1.2
91
- * Copyright (c) 2021 Robbert Broersma
92
- */
93
- /**
94
- * @license EUPL-1.2
95
- * Copyright (c) 2021 Robbert Broersma
96
- */
97
- /**
98
- * @license EUPL-1.2
99
- * Copyright (c) 2021 Robbert Broersma
100
- */
101
- /**
102
- * @license EUPL-1.2
103
- * Copyright (c) 2021 Robbert Broersma
104
- */
105
- /**
106
- * @license EUPL-1.2
107
- * Copyright (c) 2021 Robbert Broersma
108
- */
109
- /**
110
- * @license EUPL-1.2
111
- * Copyright (c) 2021 Robbert Broersma
112
- */
113
- /**
114
- * @license EUPL-1.2
115
- * Copyright (c) 2020-2022 Gemeente Utrecht
116
- * Copyright (c) 2020-2022 Frameless B.V.
117
- */
118
- /**
119
- * @license EUPL-1.2
120
- * Copyright (c) 2020-2022 Gemeente Utrecht
121
- * Copyright (c) 2020-2022 Frameless B.V.
122
- */
123
- /**
124
- * @license EUPL-1.2
125
- * Copyright (c) 2021 Robbert Broersma
126
- */
127
- /**
128
- * @license EUPL-1.2
129
- * Copyright (c) 2021 Robbert Broersma
130
- */
131
- /**
132
- * @license EUPL-1.2
133
- * Copyright (c) 2021 Robbert Broersma
134
- */
135
- /* stylelint-disable-next-line block-no-empty */
136
- /**
137
- * @license EUPL-1.2
138
- * Copyright (c) 2021 Robbert Broersma
139
- */
140
- /**
141
- * @license EUPL-1.2
142
- * Copyright (c) 2021 Robbert Broersma
143
- */
144
- /**
145
- * @license EUPL-1.2
146
- * Copyright (c) 2021 Robbert Broersma
147
- */
148
- /**
149
- * @license EUPL-1.2
150
- * Copyright (c) 2021 Gemeente Utrecht
151
- * Copyright (c) 2021 Robbert Broersma
152
- * Copyright (c) 2021 The Knights Who Say NIH! B.V.
153
- */
154
- /**
155
- * @license EUPL-1.2
156
- * Copyright (c) 2021-2022 Frameless B.V.
157
- */
158
- /**
159
- * @license EUPL-1.2
160
- * Copyright (c) 2021 Robbert Broersma
161
- */
162
- /**
163
- * @license EUPL-1.2
164
- * Copyright (c) 2021 Gemeente Utrecht
165
- * Copyright (c) 2021 Robbert Broersma
166
- * Copyright (c) 2021 The Knights Who Say NIH! B.V.
167
- */
168
- /**
169
- * @license EUPL-1.2
170
- * Copyright (c) 2021-2022 Frameless B.V.
171
- */
172
- /**
173
- * @license EUPL-1.2
174
- * Copyright (c) 2021 Robbert Broersma
175
- */
176
- /**
177
- * @license EUPL-1.2
178
- * Copyright (c) 2021 Gemeente Utrecht
179
- * Copyright (c) 2021 Robbert Broersma
180
- * Copyright (c) 2021 The Knights Who Say NIH! B.V.
181
- */
182
- /**
183
- * @license EUPL-1.2
184
- * Copyright (c) 2021-2022 Frameless B.V.
185
- */
186
- /**
187
- * @license EUPL-1.2
188
- * Copyright (c) 2021 Robbert Broersma
189
- */
190
1
  /**
191
2
  * @license EUPL-1.2
192
- * Copyright (c) 2021 Gemeente Utrecht
193
- * Copyright (c) 2021 Robbert Broersma
194
3
  * Copyright (c) 2021 The Knights Who Say NIH! B.V.
195
4
  */
196
- /**
197
- * @license EUPL-1.2
198
- * Copyright (c) 2021-2022 Frameless B.V.
199
- */
200
5
  /**
201
6
  * @license EUPL-1.2
202
7
  * Copyright (c) 2021 Robbert Broersma
203
- */
204
- /**
205
- * @license EUPL-1.2
206
8
  * Copyright (c) 2021 Gemeente Utrecht
207
- * Copyright (c) 2021 Robbert Broersma
208
- * Copyright (c) 2021 The Knights Who Say NIH! B.V.
209
- */
210
- /**
211
- * @license EUPL-1.2
212
- * Copyright (c) 2021-2022 Frameless B.V.
213
- */
214
- /**
215
- * @license EUPL-1.2
216
- * Copyright (c) 2021 Robbert Broersma
217
- */
218
- /**
219
- * @license EUPL-1.2
220
- * Copyright (c) 2021 Gemeente Utrecht
221
- * Copyright (c) 2021 Robbert Broersma
222
- * Copyright (c) 2021 The Knights Who Say NIH! B.V.
223
- */
224
- /**
225
- * @license EUPL-1.2
226
- * Copyright (c) 2021-2022 Frameless B.V.
227
- */
228
- /**
229
- * @license EUPL-1.2
230
- * Copyright (c) 2021 Robbert Broersma
231
9
  */
232
10
  /**
233
11
  * @license EUPL-1.2
@@ -237,215 +15,39 @@
237
15
  */
238
16
  /**
239
17
  * @license EUPL-1.2
240
- * Copyright (c) 2021 Robbert Broersma
241
- */
242
- /**
243
- * @license EUPL-1.2
244
- * Copyright (c) 2021 The Knights Who Say NIH! B.V.
245
- * Copyright (c) 2021 Gemeente Utrecht
246
- */
247
- /* stylelint-disable scss/no-global-function-names */
248
- /**
249
- * @license EUPL-1.2
250
- * Copyright (c) 2021 Gemeente Utrecht
251
- * Copyright (c) 2021 Robbert Broersma
252
- */
253
- /* stylelint-disable-next-line block-no-empty */
254
- /*
255
-
256
- # CSS implementation
257
-
258
- ## `text-decoration-skip`
259
-
260
- `text-decoration-skip` can be helpful to avoid making some texts unreadable.
261
- For example by obscuring Arabic diacritics.
262
-
263
- However, the combination of a greater thickness and skipping this thick underline
264
- leads to a very unappealing rendering of the underline. To avoid this,
265
- `text-decoration-skip` is disabled for interactive states.
266
-
267
- For design token configurations that have identical thickness for normal and interactive
268
- states, this will lead to the (undesirable) effect that the focus/hover effect is switching
269
- from an interrupted to an uninterrupted underline (for some texts).
270
-
271
- Apart from making `skip-ink` configurable for normal/focus/hover, there is no good solution yet.
272
-
273
- ---
274
-
275
- Disabling `text-decoration-skip` for interactive states obscures some texts, and we assume for now
276
- that moving the pointer away from a link or having focus elsewhere first is simple enough to
277
- not make this too inconvenient.
278
-
279
- ---
280
-
281
- Some folks implement the underline of links using `border-bottom` or even using a finely crafted
282
- `linear-gradient()` with a solid color at the bottom and transparent behind the text. These approaches
283
- would unfortunately not be able to provide the improved readability of `text-decoration-skip`.
284
-
285
- ## `text-decoration-thickness`
286
-
287
- Varying `text-decoration-thickness` can be used to distinguish interactive states.
288
-
289
- ---
290
-
291
- `text-decoration-thickness` appears to have rendering differences between Chrome and Safari.
292
- In Safari the line becomes thicker with extra pixels added to the bottom, while in Chrome
293
- the underline offset also seems to increase along with the thickness, which effectively means
294
- the underline is closer to the next line than in Safari.
295
-
296
- ---
297
-
298
- It might be nice to use font-relative units for `text-decoration-thickness`, and that is why we
299
- use the `max()` function to ensure the underline remains visible for every font size.
300
-
301
- ## `transition`
302
-
303
- `text-decoration-thickness` could be a candidate for animating between interactive states,
304
- however browsers don't seem to have implemented great looking supixel tweening yet.
305
-
306
- `text-decoration-skip` also makes the transition more challenging to implement.
307
-
308
- */
309
- /**
310
- * Simulate forced-colors mode.
311
- */
312
- /* stylelint-disable-next-line block-no-empty */
313
- /* stylelint-disable-next-line block-no-empty */
314
- /* stylelint-disable-next-line block-no-empty */
315
- /* stylelint-disable-next-line block-no-empty */
316
- /**
317
- * Link for elements such as `<img>` or `<article>`, that are not inline elements or plain text.
318
- *
319
- * Changing `display: inline` to `inline-block` ensures the focus outline is rendered around the entire box.
320
- */
321
- /**
322
- * @license EUPL-1.2
323
- * Copyright (c) 2021 Robbert Broersma
324
- */
325
- /**
326
- * @license EUPL-1.2
327
- * Copyright (c) 2021 Gemeente Utrecht
328
- * Copyright (c) 2021 Robbert Broersma
329
- */
330
- /**
331
- * @license EUPL-1.2
332
- * Copyright (c) 2021 Robbert Broersma
18
+ * Copyright (c) 2021-2022 Frameless B.V.
333
19
  */
334
20
  /**
335
21
  * @license EUPL-1.2
336
- * Copyright (c) 2021 Robbert Broersma
337
22
  * Copyright (c) 2021 Gemeente Utrecht
338
- */
339
- /**
340
- * @license EUPL-1.2
341
23
  * Copyright (c) 2021 Robbert Broersma
342
- */
343
- /**
344
- * @license EUPL-1.2
345
24
  * Copyright (c) 2021 The Knights Who Say NIH! B.V.
346
25
  */
347
26
  /**
348
27
  * @license EUPL-1.2
349
28
  * Copyright (c) 2021 Gemeente Utrecht
350
- */
351
- /**
352
- * @license EUPL-1.2
353
- * Copyright (c) 2021 Robbert Broersma
354
- */
355
- /**
356
- * @license EUPL-1.2
357
- * Copyright (c) 2021 Gemeente Utrecht
358
- * Copyright (c) 2021 Robbert Broersma
359
- */
360
- /* stylelint-disable-next-line block-no-empty */
361
- /* stylelint-disable-next-line block-no-empty */
362
- /**
363
- * @license EUPL-1.2
364
- * Copyright (c) 2021 Robbert Broersma
365
- */
366
- /**
367
- * @license EUPL-1.2
368
- * Copyright (c) 2021 Robbert Broersma
369
- */
370
- /**
371
- * @license EUPL-1.2
372
- * Copyright (c) 2021 Gemeente Utrecht
373
- * Copyright (c) 2021 Robbert Broersma
374
- */
375
- /* stylelint-disable-next-line block-no-empty */
376
- /* TODO: Enable ordering properties when the plugin supports logical CSS properties
377
- * https://github.com/hudochenkov/stylelint-order/pull/162 */
378
- /* stylelint-disable order/properties-alphabetical-order */
379
- /* stylelint-disable-next-line block-no-empty */
380
- /**
381
- * @license EUPL-1.2
382
29
  * Copyright (c) 2021 Robbert Broersma
383
30
  */
384
31
  /**
385
32
  * @license EUPL-1.2
386
- * Copyright (c) 2021 Gemeente Utrecht
387
- * Copyright (c) 2021 Robbert Broersma
388
33
  * Copyright (c) 2021 The Knights Who Say NIH! B.V.
389
- */
390
- /**
391
- * @license EUPL-1.2
392
- * Copyright (c) 2021 Robbert Broersma
393
- */
394
- /**
395
- * @license EUPL-1.2
396
- * Copyright (c) 2021 Robbert Broersma
397
- */
398
- /* stylelint-disable-next-line block-no-empty */
399
- /* stylelint-disable-next-line block-no-empty */
400
- /* stylelint-disable selector-class-pattern */
401
- /**
402
- * @license EUPL-1.2
403
- * Copyright (c) 2021 Robbert Broersma
404
- */
405
- /**
406
- * @license EUPL-1.2
407
- * Copyright (c) 2021 Robbert Broersma
408
- */
409
- /**
410
- * @license EUPL-1.2
411
34
  * Copyright (c) 2021 Gemeente Utrecht
412
- * Copyright (c) 2021 Robbert Broersma
413
- */
414
- /* stylelint-disable-next-line block-no-empty */
415
- /* TODO: Enable ordering properties when the plugin supports logical CSS properties
416
- * https://github.com/hudochenkov/stylelint-order/pull/162 */
417
- /* stylelint-disable order/properties-alphabetical-order */
418
- /**
419
- * @license EUPL-1.2
420
- * Copyright (c) 2021 Robbert Broersma
421
35
  */
422
36
  /**
423
37
  * @license EUPL-1.2
424
- * Copyright (c) 2021 Robbert Broersma
425
- */
426
- /**
427
- * @license EUPL-1.2
428
- * Copyright (c) 2021 Gemeente Utrecht
429
- * Copyright (c) 2021 Robbert Broersma
38
+ * Copyright (c) 2020-2022 Gemeente Utrecht
39
+ * Copyright (c) 2020-2022 Frameless B.V.
430
40
  */
431
- /* stylelint-disable-next-line block-no-empty */
432
- /* TODO: Enable ordering properties when the plugin supports logical CSS properties
433
- * https://github.com/hudochenkov/stylelint-order/pull/162 */
434
- /* stylelint-disable order/properties-alphabetical-order */
435
41
  /**
436
42
  * @license EUPL-1.2
437
43
  * Copyright (c) 2021 Robbert Broersma
438
44
  */
439
45
  /**
440
46
  * @license EUPL-1.2
441
- * Copyright (c) 2021 Robbert Broersma
442
47
  * Copyright (c) 2021 Gemeente Utrecht
443
48
  */
444
- /* Collection of all semantic HTML styles in the component library */
49
+ @charset "UTF-8";
445
50
  .utrecht-html {
446
- /* override the `:focus` selector above */
447
- /* stylelint-disable-next-line no-descending-specificity */
448
- /* stylelint-disable selector-class-pattern */
449
51
  --utrecht-space-around: 1;
450
52
  }
451
53
  .utrecht-html article {
@@ -475,13 +77,6 @@ however browsers don't seem to have implemented great looking supixel tweening y
475
77
  .utrecht-html input[type=reset i],
476
78
  .utrecht-html input[type=submit i],
477
79
  .utrecht-html button {
478
- /*
479
- `--_utrecht-button-hint` is the internal prefix for the applied optional hint, it is not an API.
480
- The hint color takes priority over the appearance color.
481
-
482
- `--_utrecht-button-appearance` is the internal prefix for the appearance
483
- (primary-action, secondary-action or subtle), it is not an API.
484
- */
485
80
  --_utrecht-button-background-color: var(
486
81
  --_utrecht-button-hint-background-color,
487
82
  var(--_utrecht-button-appearance-background-color, var(--utrecht-button-background-color))
@@ -674,6 +269,8 @@ however browsers don't seem to have implemented great looking supixel tweening y
674
269
  --utrecht-button-border-bottom-width,
675
270
  var(--_utrecht-button-border-width, 0)
676
271
  );
272
+ --_utrecht-button-font-size: var(--_utrecht-button-appearance-font-size, var(--utrecht-button-font-size));
273
+ --_utrecht-button-line-height: var(--_utrecht-button-appearance-line-height, var(--utrecht-button-line-height));
677
274
  --utrecht-icon-size: var(--utrecht-button-icon-size, 1em);
678
275
  align-items: center;
679
276
  background-color: var(--_utrecht-button-background-color);
@@ -688,13 +285,13 @@ however browsers don't seem to have implemented great looking supixel tweening y
688
285
  color: var(--_utrecht-button-color);
689
286
  cursor: var(--utrecht-action-activate-cursor, revert);
690
287
  display: inline-flex;
691
- font-family: var(--utrecht-button-font-family, var(--utrecht-document-font-family));
692
- font-size: var(--utrecht-button-font-size, var(--utrecht-document-font-family, inherit));
288
+ font-family: var(--_utrecht-button-font-family, var(--utrecht-document-font-family));
289
+ font-size: var(--_utrecht-button-font-size, var(--utrecht-document-font-family, inherit));
693
290
  font-weight: var(--_utrecht-button-appearance-font-weight, var(--utrecht-button-font-weight));
694
291
  gap: var(--utrecht-button-icon-gap);
695
292
  inline-size: var(--utrecht-button-inline-size, auto);
696
293
  justify-content: center;
697
- line-height: var(--utrecht-button-line-height);
294
+ line-height: var(--_utrecht-button-line-height);
698
295
  max-inline-size: var(--utrecht-button-max-inline-size, fit-content);
699
296
  min-block-size: var(--utrecht-button-min-block-size, 44px);
700
297
  min-inline-size: var(--utrecht-button-min-inline-size, 44px);
@@ -748,11 +345,6 @@ however browsers don't seem to have implemented great looking supixel tweening y
748
345
  scale: var(--utrecht-button-focus-scale, 1);
749
346
  }
750
347
  .utrecht-html button:focus-visible {
751
- /* the pseudo-class for `:focus-visible` is implemented via the mixin */
752
- /* - The browser default focus ring should apply when these CSS custom properties are not set.
753
- * - Make the `box-shadow` value available, so components that have their own `box-shadow`
754
- * can combine it with the focus ring box shadow.
755
- */
756
348
  --_utrecht-focus-ring-box-shadow: 0 0 0 var(--utrecht-focus-outline-width, 0)
757
349
  var(--utrecht-focus-inverse-outline-color, transparent);
758
350
  box-shadow: var(--_utrecht-focus-ring-box-shadow);
@@ -762,7 +354,7 @@ however browsers don't seem to have implemented great looking supixel tweening y
762
354
  outline-width: var(--utrecht-focus-outline-width, revert);
763
355
  }
764
356
  .utrecht-html input[type=checkbox i] {
765
- margin-block-end: 0; /* reset native margin for input[type="checkbox"] */
357
+ margin-block-end: 0;
766
358
  margin-block-start: 0;
767
359
  margin-inline-end: 0;
768
360
  margin-inline-start: 0;
@@ -774,10 +366,6 @@ however browsers don't seem to have implemented great looking supixel tweening y
774
366
  cursor: var(--utrecht-action-disabled-cursor, revert);
775
367
  }
776
368
  .utrecht-html input[type=checkbox i]:focus {
777
- /* - The browser default focus ring should apply when these CSS custom properties are not set.
778
- * - Make the `box-shadow` value available, so components that have their own `box-shadow`
779
- * can combine it with the focus ring box shadow.
780
- */
781
369
  --_utrecht-focus-ring-box-shadow: 0 0 0 var(--utrecht-focus-outline-width, 0)
782
370
  var(--utrecht-focus-inverse-outline-color, transparent);
783
371
  box-shadow: var(--_utrecht-focus-ring-box-shadow);
@@ -787,12 +375,12 @@ however browsers don't seem to have implemented great looking supixel tweening y
787
375
  outline-width: var(--utrecht-focus-outline-width, revert);
788
376
  }
789
377
  .utrecht-html input[type=checkbox i]:focus:not(:focus-visible) {
790
- /* undo focus ring */
791
378
  box-shadow: none;
792
379
  outline-style: revert;
793
380
  }
794
381
  .utrecht-html body {
795
- /* reset `font-smoothing: antialiasing`, prefer automatic (`subpixel-antialiasing`) behavior for high-dpi screens */
382
+ -webkit-font-smoothing: auto !important;
383
+ -moz-osx-font-smoothing: auto !important;
796
384
  color: var(--utrecht-document-color, inherit);
797
385
  font-family: var(--utrecht-document-font-family, inherit);
798
386
  font-size: var(--utrecht-document-font-size, inherit);
@@ -805,12 +393,9 @@ however browsers don't seem to have implemented great looking supixel tweening y
805
393
  background-color: var(--utrecht-document-background-color, inherit);
806
394
  }
807
395
  .utrecht-html body :lang(ar) {
808
- /* `letter-spacing` design tokens break Arabic text rendering, avoid that */
809
396
  letter-spacing: 0 !important;
810
397
  }
811
398
  .utrecht-html code {
812
- /* Use `monospace` as fallback both when the custom property isn't set and when the font is not available */
813
- /* Use `inherit` as font-size, to override interfering CSS such as: `code { font-size: 16px }` */
814
399
  background-color: var(--utrecht-code-background-color);
815
400
  color: var(--utrecht-code-color);
816
401
  font-family: var(--utrecht-code-font-family, monospace), monospace;
@@ -827,7 +412,6 @@ however browsers don't seem to have implemented great looking supixel tweening y
827
412
  .utrecht-html fieldset {
828
413
  margin-block-end: calc(var(--utrecht-space-around, 0) * var(--utrecht-form-fieldset-margin-block-end, 0));
829
414
  margin-block-start: calc(var(--utrecht-space-around, 0) * var(--utrecht-form-fieldset-margin-block-start, 0));
830
- /* `all: revert` unfortunately has as side-effect that the `hidde` attribute has no effect */
831
415
  all: revert;
832
416
  border: 0;
833
417
  margin-inline-end: 0;
@@ -1025,14 +609,6 @@ however browsers don't seem to have implemented great looking supixel tweening y
1025
609
  background-color: var(--utrecht-link-focus-background-color, transparent);
1026
610
  text-decoration-skip: none;
1027
611
  text-decoration-skip-ink: none;
1028
- /*
1029
- * WCAG SC 2.4.12: Focus Not Obscured
1030
- * Use `z-index` to ensure the focus ring is stacked above adjecent elements with a `background`
1031
- */
1032
- /* - The browser default focus ring should apply when these CSS custom properties are not set.
1033
- * - Make the `box-shadow` value available, so components that have their own `box-shadow`
1034
- * can combine it with the focus ring box shadow.
1035
- */
1036
612
  --_utrecht-focus-ring-box-shadow: 0 0 0 var(--utrecht-focus-outline-width, 0)
1037
613
  var(--utrecht-focus-inverse-outline-color, transparent);
1038
614
  box-shadow: var(--_utrecht-focus-ring-box-shadow);
@@ -1043,7 +619,6 @@ however browsers don't seem to have implemented great looking supixel tweening y
1043
619
  z-index: var(--utrecht-stack-focus-z-index, 1);
1044
620
  }
1045
621
  .utrecht-html a:focus:not(:focus-visible) {
1046
- /* undo focus ring */
1047
622
  box-shadow: none;
1048
623
  outline-style: revert;
1049
624
  }
@@ -1051,7 +626,6 @@ however browsers don't seem to have implemented great looking supixel tweening y
1051
626
  white-space: nowrap;
1052
627
  }
1053
628
  .utrecht-html ol {
1054
- /* Configure `box-sizing` and `text-align` for `--center` */
1055
629
  box-sizing: border-box;
1056
630
  font-family: var(--utrecht-document-font-family, inherit);
1057
631
  font-size: var(--utrecht-ordered-list-font-size, var(--utrecht-unordered-list-font-size, var(--utrecht-document-font-size, inherit)));
@@ -1098,8 +672,6 @@ however browsers don't seem to have implemented great looking supixel tweening y
1098
672
  font-size: inherit;
1099
673
  }
1100
674
  .utrecht-html pre:has(> code:only-child) {
1101
- /* Use `monospace` as fallback both when the custom property isn't set and when the font is not available */
1102
- /* Use `inherit` as font-size, to override interfering CSS such as: `code { font-size: 16px }` */
1103
675
  background-color: var(--utrecht-code-background-color);
1104
676
  color: var(--utrecht-code-color);
1105
677
  font-family: var(--utrecht-code-font-family, monospace), monospace;
@@ -1132,14 +704,6 @@ however browsers don't seem to have implemented great looking supixel tweening y
1132
704
  display: contents;
1133
705
  }
1134
706
  .utrecht-html input[type=radio i] {
1135
- /*
1136
- * Use 24x24px as hardcoded minimum target size, to meet WCAG 2.5.8 standards.
1137
- * https://www.w3.org/WAI/WCAG22/Understanding/target-size-minimum.html
1138
- */
1139
- /*
1140
- * For the `radial-gradient()` use a 5% gradient size to improve anti-aliasing.
1141
- * With a 0% gradient, the circle will have jagged edges.
1142
- */
1143
707
  -webkit-appearance: none;
1144
708
  -moz-appearance: none;
1145
709
  appearance: none;
@@ -1184,8 +748,6 @@ however browsers don't seem to have implemented great looking supixel tweening y
1184
748
  -webkit-user-select: none;
1185
749
  user-select: none;
1186
750
  vertical-align: top;
1187
- /* override the `:focus` selector above */
1188
- /* stylelint-disable-next-line no-descending-specificity */
1189
751
  }
1190
752
  .utrecht-html input[type=radio i]:checked {
1191
753
  --_utrecht-radio-button-icon-size: var(--utrecht-radio-button-icon-size, 50%);
@@ -1207,28 +769,18 @@ however browsers don't seem to have implemented great looking supixel tweening y
1207
769
  --_utrecht-radio-button-state-hover-color: var(--utrecht-radio-button-checked-hover-color);
1208
770
  }
1209
771
  .utrecht-html input[type=radio i]:disabled {
1210
- /*
1211
- * The disabled radio button should have:
1212
- * - should have no active effect
1213
- * - should have no focus effect
1214
- * - should have no hover effect
1215
- * - should have a working focus-visible effect, in case someone sets `<input type="radio" disabled tabindex="0">`
1216
- */
1217
772
  --_utrecht-radio-button-background-color: var(--utrecht-radio-button-disabled-background-color);
1218
773
  --_utrecht-radio-button-border-color: var(--utrecht-radio-button-disabled-border-color);
1219
774
  --_utrecht-radio-button-border-width: var(--utrecht-radio-button-disabled-border-width);
1220
775
  --_utrecht-radio-button-color: var(--utrecht-radio-button-disabled-color);
1221
- /* no focus effect */
1222
776
  --_utrecht-radio-button-focus-background-color: var(--_utrecht-radio-button-background-color);
1223
777
  --_utrecht-radio-button-focus-border-color: var(--_utrecht-radio-button-border-color);
1224
778
  --_utrecht-radio-button-focus-border-width: var(--_utrecht-radio-button-border-width);
1225
779
  --_utrecht-radio-button-focus-color: var(--_utrecht-radio-button-color);
1226
- /* no active effect */
1227
780
  --_utrecht-radio-button-active-background-color: var(--_utrecht-radio-button-background-color);
1228
781
  --_utrecht-radio-button-active-border-color: var(--_utrecht-radio-button-border-color);
1229
782
  --_utrecht-radio-button-active-border-width: var(--_utrecht-radio-button-border-width);
1230
783
  --_utrecht-radio-button-active-color: var(--_utrecht-radio-button-color);
1231
- /* no hover effect */
1232
784
  --_utrecht-radio-button-hover-background-color: var(--_utrecht-radio-button-background-color);
1233
785
  --_utrecht-radio-button-hover-border-color: var(--_utrecht-radio-button-border-color);
1234
786
  --_utrecht-radio-button-hover-border-width: var(--_utrecht-radio-button-border-width);
@@ -1259,10 +811,6 @@ however browsers don't seem to have implemented great looking supixel tweening y
1259
811
  );
1260
812
  }
1261
813
  .utrecht-html input[type=radio i]:focus-visible {
1262
- /* - The browser default focus ring should apply when these CSS custom properties are not set.
1263
- * - Make the `box-shadow` value available, so components that have their own `box-shadow`
1264
- * can combine it with the focus ring box shadow.
1265
- */
1266
814
  --_utrecht-focus-ring-box-shadow: 0 0 0 var(--utrecht-focus-outline-width, 0)
1267
815
  var(--utrecht-focus-inverse-outline-color, transparent);
1268
816
  box-shadow: var(--_utrecht-focus-ring-box-shadow);
@@ -1327,16 +875,11 @@ however browsers don't seem to have implemented great looking supixel tweening y
1327
875
  padding-block-start: var(--utrecht-select-padding-block-start, var(--utrecht-form-control-padding-block-start));
1328
876
  padding-inline-end: var(--utrecht-select-padding-inline-end, var(--utrecht-form-control-padding-inline-end));
1329
877
  padding-inline-start: var(--utrecht-select-padding-inline-start, var(--utrecht-form-control-padding-inline-start));
1330
- /* <select> does not have a `readonly` attribute */
1331
878
  }
1332
879
  .utrecht-html select:focus {
1333
880
  background-color: var(--utrecht-select-focus-background-color, var(--utrecht-form-control-focus-background-color, var(--utrecht-select-background-color, var(--utrecht-form-control-background-color))));
1334
881
  border-color: var(--utrecht-select-focus-border-color, var(--utrecht-form-control-focus-border-color, var(--utrecht-select-border-color, var(--utrecht-form-control-border-color))));
1335
882
  color: var(--utrecht-select-focus-color, var(--utrecht-form-control-focus-color, var(--utrecht-select-color, var(--utrecht-form-control-color))));
1336
- /* - The browser default focus ring should apply when these CSS custom properties are not set.
1337
- * - Make the `box-shadow` value available, so components that have their own `box-shadow`
1338
- * can combine it with the focus ring box shadow.
1339
- */
1340
883
  --_utrecht-focus-ring-box-shadow: 0 0 0 var(--utrecht-focus-outline-width, 0)
1341
884
  var(--utrecht-focus-inverse-outline-color, transparent);
1342
885
  box-shadow: var(--_utrecht-focus-ring-box-shadow);
@@ -1346,7 +889,6 @@ however browsers don't seem to have implemented great looking supixel tweening y
1346
889
  outline-width: var(--utrecht-focus-outline-width, revert);
1347
890
  }
1348
891
  .utrecht-html select:focus:not(:focus-visible) {
1349
- /* undo focus ring */
1350
892
  box-shadow: none;
1351
893
  outline-style: revert;
1352
894
  }
@@ -1378,9 +920,6 @@ however browsers don't seem to have implemented great looking supixel tweening y
1378
920
  --utrecht-space-around: 1;
1379
921
  }
1380
922
  .utrecht-html table {
1381
- /* `border-collapse: collapse` results in a broken border for sticky header and sticky footer.
1382
- * Therefore we need to use `border-collapse: separate` instead.
1383
- */
1384
923
  border-collapse: separate;
1385
924
  border-color: var(--utrecht-table-border-color, 0);
1386
925
  border-spacing: 0;
@@ -1420,7 +959,6 @@ however browsers don't seem to have implemented great looking supixel tweening y
1420
959
  }
1421
960
  .utrecht-html th {
1422
961
  --utrecht-icon-size: var(--utrecht-table-cell-icon-size);
1423
- /* In tables `block-size` acts as `min-block-size`, but `min-block-size` is a clearer name for the design token */
1424
962
  block-size: var(--utrecht-table-cell-line-height, 1em);
1425
963
  line-height: var(--utrecht-table-cell-line-height, inherit);
1426
964
  padding-block-end: var(--utrecht-table-cell-padding-block-end, 0);
@@ -1438,7 +976,6 @@ however browsers don't seem to have implemented great looking supixel tweening y
1438
976
  .utrecht-html th,
1439
977
  .utrecht-html td {
1440
978
  --utrecht-icon-size: var(--utrecht-table-cell-icon-size);
1441
- /* In tables `block-size` acts as `min-block-size`, but `min-block-size` is a clearer name for the design token */
1442
979
  block-size: var(--utrecht-table-cell-line-height, 1em);
1443
980
  line-height: var(--utrecht-table-cell-line-height, inherit);
1444
981
  padding-block-end: var(--utrecht-table-cell-padding-block-end, 0);
@@ -1468,12 +1005,10 @@ however browsers don't seem to have implemented great looking supixel tweening y
1468
1005
  .utrecht-html tfoot > tr > th.numeric,
1469
1006
  .utrecht-html th[scope=column].numeric {
1470
1007
  --_utrecht-table-cell-text-align: right;
1471
- /* stylelint-disable-next-line declaration-property-value-disallowed-list */
1472
1008
  text-align: var(--_utrecht-table-cell-text-align);
1473
1009
  }
1474
1010
  .utrecht-html td.numeric {
1475
1011
  --_utrecht-table-cell-text-align: right;
1476
- /* stylelint-disable-next-line declaration-property-value-disallowed-list */
1477
1012
  text-align: var(--_utrecht-table-cell-text-align);
1478
1013
  font-variant-numeric: lining-nums tabular-nums;
1479
1014
  }
@@ -1494,9 +1029,8 @@ however browsers don't seem to have implemented great looking supixel tweening y
1494
1029
  color: var(--utrecht-table-row-alternate-odd-color);
1495
1030
  }
1496
1031
  .utrecht-html textarea {
1497
- /* Fall back to `resize: vertical` for browsers that don't support `resize: block` */
1498
1032
  background-color: var(--utrecht-textarea-background-color, var(--utrecht-form-control-background-color));
1499
- block-size: initial; /* harden */
1033
+ block-size: initial;
1500
1034
  border-width: var(--utrecht-textarea-border-width, var(--utrecht-form-control-border-width));
1501
1035
  border-block-end-width: var(--utrecht-textarea-border-bottom-width, var(--utrecht-textarea-border-width, var(--utrecht-form-control-border-width)));
1502
1036
  border-color: var(--utrecht-textarea-border-color, var(--utrecht-form-control-border-color));
@@ -1506,7 +1040,7 @@ however browsers don't seem to have implemented great looking supixel tweening y
1506
1040
  color: var(--utrecht-textarea-color, var(--utrecht-form-control-color));
1507
1041
  font-family: var(--utrecht-textarea-font-family, var(--utrecht-form-control-font-family));
1508
1042
  font-size: var(--utrecht-textarea-font-size, var(--utrecht-form-control-font-size, inherit));
1509
- font-weight: initial; /* harden */
1043
+ font-weight: initial;
1510
1044
  inline-size: 100%;
1511
1045
  line-height: var(--utrecht-textarea-line-height, initial);
1512
1046
  max-inline-size: var(--utrecht-textarea-max-inline-size, var(--utrecht-form-control-max-inline-size));
@@ -1518,21 +1052,11 @@ however browsers don't seem to have implemented great looking supixel tweening y
1518
1052
  padding-inline-start: var(--utrecht-textarea-padding-inline-start, var(--utrecht-form-control-padding-inline-start, initial));
1519
1053
  resize: vertical;
1520
1054
  resize: block;
1521
- /* The `textarea:read-only` pseudo selector applies to both `<textarea readonly>` and `<textarea disabled>` */
1522
- /*
1523
- * The `textarea:disabled` pseudo selector applies to `<textarea disabled>`, but not to `<textarea aria-disabled="true">`
1524
- *
1525
- * We consider `disabled` more specific than `read-only`, so the `:disabled` selector should come after the `:read-only` selector.
1526
- */
1527
1055
  }
1528
1056
  .utrecht-html textarea:focus {
1529
1057
  background-color: var(--utrecht-textarea-focus-background-color, var(--utrecht-form-control-focus-background-color, var(--utrecht-textarea-background-color, var(--utrecht-form-control-background-color))));
1530
1058
  border-color: var(--utrecht-textarea-focus-border-color, var(--utrecht-form-control-focus-border-color, var(--utrecht-textarea-border-color, var(--utrecht-form-control-border-color))));
1531
1059
  color: var(--utrecht-textarea-focus-color, var(--utrecht-form-control-focus-color, var(--utrecht-textarea-color, var(--utrecht-form-control-color))));
1532
- /* - The browser default focus ring should apply when these CSS custom properties are not set.
1533
- * - Make the `box-shadow` value available, so components that have their own `box-shadow`
1534
- * can combine it with the focus ring box shadow.
1535
- */
1536
1060
  --_utrecht-focus-ring-box-shadow: 0 0 0 var(--utrecht-focus-outline-width, 0)
1537
1061
  var(--utrecht-focus-inverse-outline-color, transparent);
1538
1062
  box-shadow: var(--_utrecht-focus-ring-box-shadow);
@@ -1542,7 +1066,6 @@ however browsers don't seem to have implemented great looking supixel tweening y
1542
1066
  outline-width: var(--utrecht-focus-outline-width, revert);
1543
1067
  }
1544
1068
  .utrecht-html textarea:focus:not(:focus-visible) {
1545
- /* undo focus ring */
1546
1069
  box-shadow: none;
1547
1070
  outline-style: revert;
1548
1071
  }
@@ -1589,21 +1112,7 @@ however browsers don't seem to have implemented great looking supixel tweening y
1589
1112
  .utrecht-html input[type=time i],
1590
1113
  .utrecht-html input[type=url i],
1591
1114
  .utrecht-html input[type=week i] {
1592
- /* The average character inline-size is an approximation, with a default that works for Dutch text.
1593
- * The average might need to be configured specifically, for other scripts (CJK characters)
1594
- * and very wide or very narrow fonts.
1595
- * For monospace fonts it can be set to `1ch`.
1596
- */
1597
1115
  --_utrecht-textbox-value-char: 0.667em + 0.334ch;
1598
- /* Because this element uses `border-box` box-sizing, we need to manually add up the
1599
- * border width, padding width and the content width.
1600
- *
1601
- * Browsers and browser addons can add buttons inside the content box, for example
1602
- * for autocomplete. To avoid overlap between the UI and the text, we reserve
1603
- * some additional pixels to make space. We use 44px in accordance with the WCAG target size.
1604
- *
1605
- * When you are certain an element has no such UI, you can set the `autocomplete-ui-size` to `0px` (not to `0`).
1606
- */
1607
1116
  --_utrecht-textbox-max-inline-size: calc(
1608
1117
  calc(var(--utrecht-textbox-value-max-length) * var(--_utrecht-textbox-value-char)) +
1609
1118
  var(--utrecht-textbox-padding-inline-end, var(--utrecht-form-control-padding-inline-end, 0)) +
@@ -1612,7 +1121,7 @@ however browsers don't seem to have implemented great looking supixel tweening y
1612
1121
  var(--utrecht-textbox-autocomplete-ui-size, 44px)
1613
1122
  );
1614
1123
  background-color: var(--utrecht-textbox-background-color, var(--utrecht-form-control-background-color));
1615
- block-size: initial; /* harden */
1124
+ block-size: initial;
1616
1125
  border-width: var(--utrecht-textbox-border-width, var(--utrecht-form-control-border-width));
1617
1126
  border-block-end-width: var(--utrecht-textbox-border-bottom-width, var(--utrecht-textbox-border-width, var(--utrecht-form-control-border-width)));
1618
1127
  border-color: var(--utrecht-textbox-border-color, var(--utrecht-form-control-border-color));
@@ -1622,7 +1131,7 @@ however browsers don't seem to have implemented great looking supixel tweening y
1622
1131
  color: var(--utrecht-textbox-color, var(--utrecht-form-control-color));
1623
1132
  font-family: var(--utrecht-textbox-font-family, var(--utrecht-form-control-font-family));
1624
1133
  font-size: var(--utrecht-textbox-font-size, var(--utrecht-form-control-font-size, inherit));
1625
- font-weight: initial; /* harden */
1134
+ font-weight: initial;
1626
1135
  inline-size: 100%;
1627
1136
  line-height: var(--utrecht-textbox-line-height, var(--utrecht-form-control-line-height, initial));
1628
1137
  min-block-size: var(--utrecht-pointer-target-min-size, 44px);
@@ -1632,12 +1141,6 @@ however browsers don't seem to have implemented great looking supixel tweening y
1632
1141
  padding-block-start: var(--utrecht-textbox-padding-block-start, var(--utrecht-form-control-padding-block-start, 0));
1633
1142
  padding-inline-end: var(--utrecht-textbox-padding-inline-end, var(--utrecht-form-control-padding-inline-end, initial));
1634
1143
  padding-inline-start: var(--utrecht-textbox-padding-inline-start, var(--utrecht-form-control-padding-inline-start, initial));
1635
- /* The `input:read-only` pseudo selector applies to both `<input readonly>` and `<input disabled>` */
1636
- /*
1637
- * The `input:disabled` pseudo selector applies to `<input disabled>`, but not to `<input aria-disabled="true">`
1638
- *
1639
- * We consider `disabled` more specific than `read-only`, so the `:disabled` selector should come after the `:read-only` selector.
1640
- */
1641
1144
  }
1642
1145
  .utrecht-html input:not([type]):focus,
1643
1146
  .utrecht-html input[type=date i]:focus,
@@ -1655,10 +1158,6 @@ however browsers don't seem to have implemented great looking supixel tweening y
1655
1158
  background-color: var(--utrecht-textbox-focus-background-color, var(--utrecht-form-control-focus-background-color, var(--utrecht-textbox-background-color, var(--utrecht-form-control-background-color))));
1656
1159
  border-color: var(--utrecht-textbox-focus-border-color, var(--utrecht-form-control-focus-border-color, var(--utrecht-textbox-border-color, var(--utrecht-form-control-border-color))));
1657
1160
  color: var(--utrecht-textbox-focus-color, var(--utrecht-form-control-focus-color, var(--utrecht-textbox-color, var(--utrecht-form-control-color))));
1658
- /* - The browser default focus ring should apply when these CSS custom properties are not set.
1659
- * - Make the `box-shadow` value available, so components that have their own `box-shadow`
1660
- * can combine it with the focus ring box shadow.
1661
- */
1662
1161
  --_utrecht-focus-ring-box-shadow: 0 0 0 var(--utrecht-focus-outline-width, 0)
1663
1162
  var(--utrecht-focus-inverse-outline-color, transparent);
1664
1163
  box-shadow: var(--_utrecht-focus-ring-box-shadow);
@@ -1680,7 +1179,6 @@ however browsers don't seem to have implemented great looking supixel tweening y
1680
1179
  .utrecht-html input[type=time i]:focus:not(:focus-visible),
1681
1180
  .utrecht-html input[type=url i]:focus:not(:focus-visible),
1682
1181
  .utrecht-html input[type=week i]:focus:not(:focus-visible) {
1683
- /* undo focus ring */
1684
1182
  box-shadow: none;
1685
1183
  outline-style: revert;
1686
1184
  }
@@ -1803,7 +1301,7 @@ however browsers don't seem to have implemented great looking supixel tweening y
1803
1301
  .utrecht-html input[inputmode=tel i],
1804
1302
  .utrecht-html input[type=number i],
1805
1303
  .utrecht-html input[type=tel i] {
1806
- -moz-appearance: textfield; /* avoid spinner input in Firefox */
1304
+ -moz-appearance: textfield;
1807
1305
  font-variant-numeric: lining-nums tabular-nums;
1808
1306
  }
1809
1307
  .utrecht-html input[inputmode=email i],
@@ -1813,7 +1311,6 @@ however browsers don't seem to have implemented great looking supixel tweening y
1813
1311
  font-variant-ligatures: none;
1814
1312
  }
1815
1313
  .utrecht-html ul {
1816
- /* Configure `box-sizing` and `text-align` for `--center` */
1817
1314
  box-sizing: border-box;
1818
1315
  font-family: var(--utrecht-document-font-family, inherit);
1819
1316
  font-size: var(--utrecht-unordered-list-font-size, var(--utrecht-document-font-size, inherit));