@slotted/styles 0.1.0-beta.8 → 0.1.0-beta.9

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 (128) hide show
  1. package/package.json +1 -1
  2. package/src/accordion/accordion.css +10 -10
  3. package/src/action-bar/action-bar.css +31 -32
  4. package/src/action-sheet/action-sheet.css +36 -36
  5. package/src/alert/alert.css +35 -35
  6. package/src/app-shell/app-shell.css +280 -299
  7. package/src/aspect-ratio/aspect-ratio.css +9 -9
  8. package/src/attachment/attachment.css +91 -99
  9. package/src/avatar/avatar.css +41 -41
  10. package/src/avatar-group/avatar-group.css +21 -22
  11. package/src/badge/badge.css +37 -37
  12. package/src/breadcrumb/breadcrumb.css +37 -37
  13. package/src/button/button.css +88 -69
  14. package/src/button-group/button-group.css +69 -73
  15. package/src/calendar/calendar.css +93 -103
  16. package/src/card/card.css +54 -61
  17. package/src/carousel/carousel.css +150 -161
  18. package/src/cascader/cascader.css +147 -151
  19. package/src/chart/chart.css +225 -240
  20. package/src/checkbox/checkbox.css +119 -124
  21. package/src/checkbox-group/checkbox-group.css +7 -7
  22. package/src/code-block/code-block.css +81 -85
  23. package/src/collapsible/collapsible.css +69 -76
  24. package/src/color-picker/color-picker.css +83 -91
  25. package/src/column-manager/column-manager.css +106 -114
  26. package/src/combobox/combobox.css +99 -101
  27. package/src/command-palette/command-palette.css +84 -90
  28. package/src/container/container.css +24 -24
  29. package/src/context-menu/context-menu.css +8 -8
  30. package/src/currency-field/currency-field.css +99 -104
  31. package/src/dashboard-grid/dashboard-grid.css +104 -107
  32. package/src/data-grid/data-grid.css +458 -456
  33. package/src/data-grid/data-grid.tokens.json +2 -0
  34. package/src/data-list/data-list.css +67 -69
  35. package/src/date-field/date-field.css +50 -50
  36. package/src/date-picker/date-picker.css +40 -42
  37. package/src/date-range-picker/date-range-picker.css +114 -118
  38. package/src/datetime-field/datetime-field.css +73 -78
  39. package/src/datetime-picker/datetime-picker.css +61 -63
  40. package/src/datetime-range-picker/datetime-range-picker.css +149 -156
  41. package/src/description-list/description-list.css +61 -64
  42. package/src/detail-panel/detail-panel.css +70 -70
  43. package/src/dialog/dialog.css +300 -148
  44. package/src/divider/divider.css +18 -18
  45. package/src/drawer/drawer.css +186 -209
  46. package/src/entity-picker/entity-picker.css +220 -239
  47. package/src/event-calendar/event-calendar.css +343 -385
  48. package/src/field/field.css +74 -78
  49. package/src/field-group/field-group.css +22 -25
  50. package/src/filter-bar/filter-bar.css +193 -209
  51. package/src/form/form.css +21 -24
  52. package/src/fullscreen/fullscreen.css +24 -25
  53. package/src/grid/grid.css +28 -28
  54. package/src/highlight/highlight.css +6 -6
  55. package/src/hover-card/hover-card.css +6 -6
  56. package/src/icon/icon.css +15 -15
  57. package/src/image/image.css +39 -39
  58. package/src/import-export-center/import-export-center.css +135 -156
  59. package/src/inline/inline.css +27 -27
  60. package/src/inline-message/inline-message.css +28 -28
  61. package/src/kbd/kbd.css +26 -26
  62. package/src/link/link.css +15 -15
  63. package/src/list/list.css +20 -20
  64. package/src/list-item/list-item.css +66 -66
  65. package/src/listbox/listbox.css +56 -59
  66. package/src/loading-overlay/loading-overlay.css +75 -92
  67. package/src/markdown/markdown.css +17 -17
  68. package/src/menu/menu.css +63 -65
  69. package/src/menubar/menubar.css +13 -13
  70. package/src/message/message.css +174 -202
  71. package/src/message-scroller/message-scroller.css +41 -42
  72. package/src/multi-select/multi-select.css +131 -137
  73. package/src/navigation-menu/navigation-menu.css +167 -188
  74. package/src/notification-center/notification-center.css +134 -148
  75. package/src/number-field/number-field.css +76 -81
  76. package/src/otp-input/otp-input.css +48 -48
  77. package/src/page/page.css +23 -23
  78. package/src/page-header/page-header.css +219 -280
  79. package/src/pagination/pagination.css +68 -72
  80. package/src/popover/popover.css +40 -49
  81. package/src/progress-indicator/progress-indicator.css +85 -90
  82. package/src/prompt-composer/prompt-composer.css +94 -99
  83. package/src/prose/prose.css +71 -75
  84. package/src/radio-group/radio-group.css +98 -103
  85. package/src/rating/rating.css +132 -132
  86. package/src/result-state/result-state.css +74 -77
  87. package/src/saved-views/saved-views.css +41 -47
  88. package/src/scroll-area/scroll-area.css +32 -35
  89. package/src/section/section.css +16 -16
  90. package/src/segmented-control/segmented-control.css +77 -79
  91. package/src/select/select.css +113 -115
  92. package/src/side-navigation/side-navigation.css +170 -180
  93. package/src/skeleton/skeleton.css +47 -48
  94. package/src/slider/slider.css +86 -88
  95. package/src/sparkline/sparkline.css +32 -32
  96. package/src/spinner/spinner.css +4 -4
  97. package/src/split-button/split-button.css +26 -31
  98. package/src/splitter/splitter.css +35 -35
  99. package/src/stack/stack.css +24 -24
  100. package/src/stat-card/stat-card.css +102 -103
  101. package/src/status-indicator/status-indicator.css +28 -28
  102. package/src/stepper/stepper.css +58 -62
  103. package/src/switch/switch.css +86 -92
  104. package/src/table/table.css +189 -198
  105. package/src/table-of-contents/table-of-contents.css +51 -54
  106. package/src/tabs/tabs.css +143 -162
  107. package/src/tag/tag.css +67 -71
  108. package/src/tags-input/tags-input.css +124 -74
  109. package/src/tags-input/tags-input.tokens.json +6 -1
  110. package/src/text-field/text-field.css +108 -126
  111. package/src/textarea/textarea.css +26 -26
  112. package/src/time-field/time-field.css +67 -67
  113. package/src/time-picker/time-picker.css +56 -58
  114. package/src/time-range-picker/time-range-picker.css +126 -133
  115. package/src/timeline/timeline.css +244 -266
  116. package/src/toast/toast.css +81 -90
  117. package/src/toggle/toggle.css +29 -33
  118. package/src/toggle-group/toggle-group.css +67 -71
  119. package/src/toolbar/toolbar.css +30 -35
  120. package/src/tooltip/tooltip.css +26 -26
  121. package/src/top-navigation/top-navigation.css +243 -259
  122. package/src/tour/tour.css +51 -60
  123. package/src/transfer/transfer.css +160 -164
  124. package/src/tree/tree.css +103 -111
  125. package/src/typography/typography.css +36 -36
  126. package/src/upload/upload.css +224 -224
  127. package/src/visually-hidden/visually-hidden.css +1 -1
  128. package/src/wizard/wizard.css +185 -197
@@ -13,7 +13,7 @@
13
13
  * mirrors its state onto the root rather than styling through, so a control
14
14
  * used outside a field looks the same as one inside it.
15
15
  */
16
- [data-ui='otp-input'][data-part='root'] {
16
+ [data-ui-otp-input][data-part-root] {
17
17
  /**
18
18
  * A box is a square on the control's height at this density, so a code
19
19
  * beside a text field in the same form sits on the same row height. Its
@@ -71,7 +71,7 @@
71
71
  * native attribute a consumer wrote. `opacity: 1` rather than 0, because iOS
72
72
  * shows no paste menu on an invisible control (input-otp, `input.tsx`).
73
73
  */
74
- [data-ui='otp-input'] > [data-part='input'] {
74
+ [data-ui-otp-input] > [data-part-input] {
75
75
  appearance: none;
76
76
  background-color: transparent;
77
77
  block-size: 100%;
@@ -104,7 +104,7 @@
104
104
  * selected at every press, so the drag is refused — here for the engines
105
105
  * that read the property, and in both bindings on `dragstart`.
106
106
  */
107
- [data-ui='otp-input'] > [data-part='input']::selection {
107
+ [data-ui-otp-input] > [data-part-input]::selection {
108
108
  /**
109
109
  * `!important`, the only one in the library. An application that styles
110
110
  * its own `::selection` — and the workbench does, unlayered — outranks a
@@ -119,7 +119,7 @@
119
119
  -webkit-text-fill-color: transparent !important;
120
120
  }
121
121
 
122
- [data-ui='otp-input'] > [data-part='input'] {
122
+ [data-ui-otp-input] > [data-part-input] {
123
123
  -webkit-user-drag: none;
124
124
  }
125
125
 
@@ -130,7 +130,7 @@
130
130
  * code is a fact worth seeing, so the boxes sit on the accent surface the
131
131
  * theme owns rather than on the browser's yellow.
132
132
  */
133
- [data-ui='otp-input'] > [data-part='input']:autofill {
133
+ [data-ui-otp-input] > [data-part-input]:autofill {
134
134
  box-shadow: inset 0 0 0 100px
135
135
  var(--slotted-otp-input-autofill-background, var(--slotted-tone-accent-surface));
136
136
  -webkit-text-fill-color: transparent;
@@ -142,14 +142,14 @@
142
142
  * group is a row of boxes, and between two groups a short rule is drawn —
143
143
  * never a character, which would be read by nothing and mirrored by nothing.
144
144
  */
145
- [data-ui='otp-input'] > [data-part='group'] {
145
+ [data-ui-otp-input] > [data-part-group] {
146
146
  align-items: center;
147
147
  display: flex;
148
148
  gap: var(--_gap);
149
149
  min-inline-size: 0;
150
150
  }
151
151
 
152
- [data-ui='otp-input'] > [data-part='separator'] {
152
+ [data-ui-otp-input] > [data-part-separator] {
153
153
  background-color: var(
154
154
  --slotted-otp-input-separator-color,
155
155
  var(--slotted-control-border-color, ButtonBorder)
@@ -167,7 +167,7 @@
167
167
  * framed control carries. It shrinks before the row overflows — a code in a
168
168
  * 240-pixel column loses width, not boxes.
169
169
  */
170
- [data-ui='otp-input'] [data-part='slot'] {
170
+ [data-ui-otp-input] [data-part-slot] {
171
171
  align-items: center;
172
172
  background-color: var(--slotted-otp-input-background, var(--slotted-control-surface, Field));
173
173
  block-size: var(--_height);
@@ -205,7 +205,7 @@
205
205
  * so the caret and the filled state keep reading the DOM rather than the
206
206
  * paint.
207
207
  */
208
- [data-ui='otp-input'] [data-part='slot']:empty::before {
208
+ [data-ui-otp-input] [data-part-slot]:empty::before {
209
209
  color: var(--slotted-otp-input-placeholder-color, var(--slotted-text-muted));
210
210
  content: attr(data-placeholder);
211
211
  }
@@ -218,7 +218,7 @@
218
218
  * four-pixel speck in a thirty-four-pixel box, and a PIN pad draws its dots
219
219
  * larger than its digits.
220
220
  */
221
- [data-ui='otp-input'][data-mask] [data-part='slot']:not(:empty) {
221
+ [data-ui-otp-input][data-mask] [data-part-slot]:not(:empty) {
222
222
  font-size: var(--slotted-otp-input-mask-size, var(--slotted-font-size-2xl, 1.25rem));
223
223
  }
224
224
 
@@ -230,29 +230,29 @@
230
230
  * rather than two, and the raised box — hovered, current, focused — comes
231
231
  * forward so its whole edge is seen.
232
232
  */
233
- [data-ui='otp-input'][data-attached] > [data-part='group'] {
233
+ [data-ui-otp-input][data-attached] > [data-part-group] {
234
234
  gap: 0;
235
235
  }
236
236
 
237
- [data-ui='otp-input'][data-attached] [data-part='slot'] {
237
+ [data-ui-otp-input][data-attached] [data-part-slot] {
238
238
  border-radius: 0;
239
239
  }
240
240
 
241
- [data-ui='otp-input'][data-attached] [data-part='slot']:not(:first-child) {
241
+ [data-ui-otp-input][data-attached] [data-part-slot]:not(:first-child) {
242
242
  margin-inline-start: calc(var(--slotted-control-border-width, 1px) * -1);
243
243
  }
244
244
 
245
- [data-ui='otp-input'][data-attached] [data-part='slot']:first-child {
245
+ [data-ui-otp-input][data-attached] [data-part-slot]:first-child {
246
246
  border-start-start-radius: var(--_radius);
247
247
  border-end-start-radius: var(--_radius);
248
248
  }
249
249
 
250
- [data-ui='otp-input'][data-attached] [data-part='slot']:last-child {
250
+ [data-ui-otp-input][data-attached] [data-part-slot]:last-child {
251
251
  border-start-end-radius: var(--_radius);
252
252
  border-end-end-radius: var(--_radius);
253
253
  }
254
254
 
255
- [data-ui='otp-input'][data-attached] [data-part='slot'][data-current] {
255
+ [data-ui-otp-input][data-attached] [data-part-slot][data-current] {
256
256
  z-index: 1;
257
257
  }
258
258
 
@@ -263,19 +263,19 @@
263
263
  * same name, so a `lg` code is a `lg` word's size and one step larger than
264
264
  * a `lg` field's text.
265
265
  */
266
- [data-ui='otp-input'][data-part='root'][data-size='sm'] {
266
+ [data-ui-otp-input][data-part-root][data-size='sm'] {
267
267
  --_height: var(--slotted-control-height-sm, 30px);
268
268
  --_font-size: var(--slotted-font-size-sm, 0.8125rem);
269
269
  --_gap: var(--slotted-control-gap-sm, 6px);
270
270
  }
271
271
 
272
- [data-ui='otp-input'][data-part='root'][data-size='md'] {
272
+ [data-ui-otp-input][data-part-root][data-size='md'] {
273
273
  --_height: var(--slotted-control-height-md, 34px);
274
274
  --_font-size: var(--slotted-font-size-md, 0.875rem);
275
275
  --_gap: var(--slotted-control-gap-md, 8px);
276
276
  }
277
277
 
278
- [data-ui='otp-input'][data-part='root'][data-size='lg'] {
278
+ [data-ui-otp-input][data-part-root][data-size='lg'] {
279
279
  --_height: var(--slotted-control-height-lg, 38px);
280
280
  --_font-size: var(--slotted-font-size-lg, 1rem);
281
281
  --_gap: var(--slotted-control-gap-lg, 8px);
@@ -287,7 +287,7 @@
287
287
  * The same two steps `text-field` draws, with the same tokens behind them,
288
288
  * so a code under a text field in one form is one form.
289
289
  */
290
- [data-ui='otp-input'][data-variant='subtle'] [data-part='slot'] {
290
+ [data-ui-otp-input][data-variant='subtle'] [data-part-slot] {
291
291
  background-color: var(
292
292
  --slotted-otp-input-subtle-background,
293
293
  var(--slotted-surface-sunken, Canvas)
@@ -309,8 +309,8 @@
309
309
  * rather than blinking faster: an endless animation stops, it does not
310
310
  * hurry.
311
311
  */
312
- [data-ui='otp-input'][data-part='root']:has(> [data-part='input']:focus)
313
- [data-part='slot'][data-current]:empty::after {
312
+ [data-ui-otp-input][data-part-root]:has(> [data-part-input]:focus)
313
+ [data-part-slot][data-current]:empty::after {
314
314
  animation: slotted-otp-input-blink var(--slotted-duration-loop) step-end infinite;
315
315
  background-color: currentcolor;
316
316
  block-size: 1em;
@@ -332,8 +332,8 @@
332
332
  }
333
333
 
334
334
  @media (prefers-reduced-motion: reduce) {
335
- [data-ui='otp-input'][data-part='root']:has(> [data-part='input']:focus)
336
- [data-part='slot'][data-current]:empty::after {
335
+ [data-ui-otp-input][data-part-root]:has(> [data-part-input]:focus)
336
+ [data-part-slot][data-current]:empty::after {
337
337
  animation: none;
338
338
  }
339
339
  }
@@ -345,17 +345,17 @@
345
345
  * is always over the input, never over a box, so hover is the root's and it
346
346
  * lights the whole row: the row is one control.
347
347
  */
348
- [data-ui='otp-input'][data-part='root']:hover:not([data-disabled]):not([data-readonly]):not(
348
+ [data-ui-otp-input][data-part-root]:hover:not([data-disabled]):not([data-readonly]):not(
349
349
  [data-invalid]
350
350
  )
351
- [data-part='slot'] {
351
+ [data-part-slot] {
352
352
  border-color: var(--slotted-otp-input-hover-border-color, var(--slotted-tone-accent-border));
353
353
  }
354
354
 
355
- [data-ui='otp-input'][data-part='root'][data-variant='subtle']:hover:not([data-disabled]):not(
355
+ [data-ui-otp-input][data-part-root][data-variant='subtle']:hover:not([data-disabled]):not(
356
356
  [data-readonly]
357
357
  ):not([data-invalid])
358
- [data-part='slot'] {
358
+ [data-part-slot] {
359
359
  background-color: var(
360
360
  --slotted-otp-input-subtle-hover-background,
361
361
  var(--slotted-tone-secondary-subtle-hover)
@@ -372,13 +372,13 @@
372
372
  * keeps its danger edge on every box, and the ring says where the cursor
373
373
  * is — while the tint survives, because it says what the next key does.
374
374
  */
375
- [data-ui='otp-input'][data-part='root']:not([data-invalid]):has(> [data-part='input']:focus)
376
- [data-part='slot'][data-current] {
375
+ [data-ui-otp-input][data-part-root]:not([data-invalid]):has(> [data-part-input]:focus)
376
+ [data-part-slot][data-current] {
377
377
  border-color: var(--slotted-otp-input-current-border-color, var(--slotted-tone-accent-border));
378
378
  }
379
379
 
380
- [data-ui='otp-input'][data-part='root']:has(> [data-part='input']:focus)
381
- [data-part='slot'][data-current]:not(:empty) {
380
+ [data-ui-otp-input][data-part-root]:has(> [data-part-input]:focus)
381
+ [data-part-slot][data-current]:not(:empty) {
382
382
  background-color: var(
383
383
  --slotted-otp-input-selection-background,
384
384
  var(--slotted-tone-accent-surface)
@@ -392,8 +392,8 @@
392
392
  * whose caret is the thing that moved. A ring around the whole row would sit
393
393
  * still while the cursor moved inside it.
394
394
  */
395
- [data-ui='otp-input'][data-part='root']:has(> [data-part='input']:focus-visible)
396
- [data-part='slot'][data-current] {
395
+ [data-ui-otp-input][data-part-root]:has(> [data-part-input]:focus-visible)
396
+ [data-part-slot][data-current] {
397
397
  /**
398
398
  * The resting shadow, recoloured. The geometry is the foundation's and the
399
399
  * ink is the focus ring's, so the lift under the box and the ring around
@@ -412,14 +412,14 @@
412
412
  * colour on the root moves all of them at once — the rule `text-field`
413
413
  * wrote and every field family inherits.
414
414
  */
415
- [data-ui='otp-input'][data-part='root'][data-invalid] {
415
+ [data-ui-otp-input][data-part-root][data-invalid] {
416
416
  --slotted-focus-ring-color: var(
417
417
  --slotted-otp-input-invalid-focus-ring-color,
418
418
  var(--slotted-focus-ring-color-invalid, Highlight)
419
419
  );
420
420
  }
421
421
 
422
- [data-ui='otp-input'][data-part='root'][data-invalid] [data-part='slot'] {
422
+ [data-ui-otp-input][data-part-root][data-invalid] [data-part-slot] {
423
423
  --_invalid-edge-width: var(
424
424
  --slotted-otp-input-invalid-edge-width,
425
425
  var(--slotted-control-invalid-edge-width, 1px)
@@ -440,8 +440,8 @@
440
440
  box-shadow: var(--_invalid-edge);
441
441
  }
442
442
 
443
- [data-ui='otp-input'][data-part='root'][data-invalid]:has(> [data-part='input']:focus-visible)
444
- [data-part='slot'][data-current] {
443
+ [data-ui-otp-input][data-part-root][data-invalid]:has(> [data-part-input]:focus-visible)
444
+ [data-part-slot][data-current] {
445
445
  box-shadow:
446
446
  var(--_invalid-edge),
447
447
  var(--slotted-control-shadow-focus-geometry, 0 1px 4px -1px)
@@ -454,15 +454,15 @@
454
454
  * control draws its ring double, which a valid ring is not.
455
455
  */
456
456
  @media (forced-colors: active) {
457
- [data-ui='otp-input'][data-part='root'][data-invalid] [data-part='slot'] {
457
+ [data-ui-otp-input][data-part-root][data-invalid] [data-part-slot] {
458
458
  outline: var(--_invalid-edge-width) solid CanvasText;
459
459
  outline-offset: calc(
460
460
  -1 * (var(--slotted-control-border-width, 1px) + var(--_invalid-edge-width))
461
461
  );
462
462
  }
463
463
 
464
- [data-ui='otp-input'][data-part='root'][data-invalid]:has(> [data-part='input']:focus-visible)
465
- [data-part='slot'][data-current] {
464
+ [data-ui-otp-input][data-part-root][data-invalid]:has(> [data-part-input]:focus-visible)
465
+ [data-part-slot][data-current] {
466
466
  outline: calc(var(--slotted-focus-ring-width, 2px) + var(--_invalid-edge-width)) double
467
467
  var(--slotted-focus-ring-color, Highlight);
468
468
  outline-offset: var(--slotted-focus-ring-offset, 2px);
@@ -475,7 +475,7 @@
475
475
  * ground says "not yours to change" and the ink says nothing at all. No
476
476
  * caret either — there is nothing to type.
477
477
  */
478
- [data-ui='otp-input'][data-part='root'][data-readonly] [data-part='slot'] {
478
+ [data-ui-otp-input][data-part-root][data-readonly] [data-part-slot] {
479
479
  background-color: var(
480
480
  --slotted-otp-input-readonly-background,
481
481
  var(--slotted-tone-secondary-subtle-hover)
@@ -483,7 +483,7 @@
483
483
  cursor: default;
484
484
  }
485
485
 
486
- [data-ui='otp-input'][data-part='root'][data-readonly] [data-part='slot']::after {
486
+ [data-ui-otp-input][data-part-root][data-readonly] [data-part-slot]::after {
487
487
  content: none;
488
488
  }
489
489
 
@@ -493,14 +493,14 @@
493
493
  * disabled `fieldset` disables every control inside it, and the control has
494
494
  * no way to know.
495
495
  */
496
- [data-ui='otp-input'][data-part='root'][data-disabled],
497
- [data-ui='otp-input'][data-part='root']:has(> [data-part='input']:disabled) {
496
+ [data-ui-otp-input][data-part-root][data-disabled],
497
+ [data-ui-otp-input][data-part-root]:has(> [data-part-input]:disabled) {
498
498
  color: var(--slotted-otp-input-disabled-color, var(--slotted-disabled-foreground));
499
499
  cursor: not-allowed;
500
500
  }
501
501
 
502
- [data-ui='otp-input'][data-part='root'][data-disabled] [data-part='slot'],
503
- [data-ui='otp-input'][data-part='root']:has(> [data-part='input']:disabled) [data-part='slot'] {
502
+ [data-ui-otp-input][data-part-root][data-disabled] [data-part-slot],
503
+ [data-ui-otp-input][data-part-root]:has(> [data-part-input]:disabled) [data-part-slot] {
504
504
  background-color: var(
505
505
  --slotted-otp-input-disabled-background,
506
506
  var(--slotted-disabled-background)
@@ -518,7 +518,7 @@
518
518
  * theme already remaps.
519
519
  */
520
520
  @media (forced-colors: active) {
521
- [data-ui='otp-input'] > [data-part='input'] {
521
+ [data-ui-otp-input] > [data-part-input] {
522
522
  forced-color-adjust: none;
523
523
  }
524
524
  }
package/src/page/page.css CHANGED
@@ -3,7 +3,7 @@
3
3
  * The column of a screen: who scrolls, how wide the content is, where the
4
4
  * footer stays, how much air the body has.
5
5
  *
6
- * main[data-ui=page]
6
+ * main[data-ui-page]
7
7
  * ├─ scroll ▸ page-header · body ▸ container ▸ …
8
8
  * └─ footer ▸ container ▸ actions
9
9
  *
@@ -13,7 +13,7 @@
13
13
  * `self` the scroll part is the scroller, the page is exactly as tall as its
14
14
  * parent lets it be, and the footer sits below the scroller in the flow.
15
15
  */
16
- [data-ui='page'] {
16
+ [data-ui-page] {
17
17
  --_ground: var(--slotted-page-background-sunken, var(--slotted-surface-sunken, Canvas));
18
18
  --_padding-block: var(--slotted-page-padding-block, var(--slotted-space-8, 1.5rem));
19
19
  --_footer-ground: var(--slotted-page-footer-background, var(--slotted-surface, Canvas));
@@ -54,11 +54,11 @@
54
54
  min-inline-size: 0;
55
55
  }
56
56
 
57
- [data-ui='page'][data-ground='surface'] {
57
+ [data-ui-page][data-ground='surface'] {
58
58
  --_ground: var(--slotted-page-background-surface, var(--slotted-surface, Canvas));
59
59
  }
60
60
 
61
- [data-ui='page'] > [data-part='scroll'] {
61
+ [data-ui-page] > [data-part-scroll] {
62
62
  display: flex;
63
63
  flex: 1 0 auto;
64
64
  flex-direction: column;
@@ -72,11 +72,11 @@
72
72
  overflow-anchor: none;
73
73
  }
74
74
 
75
- [data-ui='page'][data-scroll='self'] {
75
+ [data-ui-page][data-scroll='self'] {
76
76
  block-size: 100%;
77
77
  min-block-size: 0;
78
78
  }
79
- [data-ui='page'][data-scroll='self'] > [data-part='scroll'] {
79
+ [data-ui-page][data-scroll='self'] > [data-part-scroll] {
80
80
  flex: 1 1 auto;
81
81
  min-block-size: 0;
82
82
  overflow: auto;
@@ -85,7 +85,7 @@
85
85
 
86
86
  /* ── The body ────────────────────────────────────────────────────────── */
87
87
 
88
- [data-ui='page'] > [data-part='scroll'] > [data-part='body'] {
88
+ [data-ui-page] > [data-part-scroll] > [data-part-body] {
89
89
  flex: 1 0 auto;
90
90
  min-inline-size: 0;
91
91
  padding-block: var(--_padding-block);
@@ -102,19 +102,19 @@
102
102
  * chrome above a filled list left its rows 155 of 667 pixels.
103
103
  */
104
104
  @container slotted-page (width >= 600px) {
105
- [data-ui='page'][data-fill] > [data-part='scroll'] > [data-part='body'] {
105
+ [data-ui-page][data-fill] > [data-part-scroll] > [data-part-body] {
106
106
  display: flex;
107
107
  flex: 1 1 auto;
108
108
  flex-direction: column;
109
109
  min-block-size: 0;
110
110
  }
111
- [data-ui='page'][data-fill] > [data-part='scroll'] > [data-part='body'] > * {
111
+ [data-ui-page][data-fill] > [data-part-scroll] > [data-part-body] > * {
112
112
  flex: 1 1 auto;
113
113
  min-block-size: 0;
114
114
  }
115
115
  }
116
116
 
117
- [data-ui='page'][data-loading] > [data-part='scroll'] > [data-part='body'] {
117
+ [data-ui-page][data-loading] > [data-part-scroll] > [data-part-body] {
118
118
  cursor: progress;
119
119
  }
120
120
 
@@ -126,7 +126,7 @@
126
126
  * under it. It enters from below and leaves the same way; presence holds
127
127
  * it through the exit.
128
128
  */
129
- [data-ui='page'] > [data-part='footer'] {
129
+ [data-ui-page] > [data-part-footer] {
130
130
  background-color: var(--_footer-ground);
131
131
  border-block-start: var(--slotted-border-width-thin, 1px) solid var(--_footer-rule);
132
132
  inset-block-end: 0;
@@ -138,16 +138,16 @@
138
138
  opacity var(--_duration) var(--_easing);
139
139
  z-index: var(--slotted-z-index-sticky, 100);
140
140
  }
141
- [data-ui='page'][data-scroll='self'] > [data-part='footer'] {
141
+ [data-ui-page][data-scroll='self'] > [data-part-footer] {
142
142
  position: static;
143
143
  }
144
- [data-ui='page'] > [data-part='footer'][data-status='entering'],
145
- [data-ui='page'] > [data-part='footer'][data-status='exiting'] {
144
+ [data-ui-page] > [data-part-footer][data-status='entering'],
145
+ [data-ui-page] > [data-part-footer][data-status='exiting'] {
146
146
  opacity: 0;
147
147
  translate: 0 100%;
148
148
  }
149
149
 
150
- [data-ui='page'] > [data-part='footer'] > * > [data-part='actions'] {
150
+ [data-ui-page] > [data-part-footer] > * > [data-part-actions] {
151
151
  align-items: center;
152
152
  display: flex;
153
153
  flex-wrap: wrap;
@@ -165,14 +165,14 @@
165
165
  * they take 16. The steps under 4 keep their own value.
166
166
  */
167
167
  @container slotted-page (width < 600px) {
168
- [data-ui='page'] [data-ui='container'][data-inset='5'],
169
- [data-ui='page'] [data-ui='container'][data-inset='6'],
170
- [data-ui='page'] [data-ui='container'][data-inset='7'],
171
- [data-ui='page'] [data-ui='container'][data-inset='8'],
172
- [data-ui='page'] [data-ui='container'][data-inset='9'],
173
- [data-ui='page'] [data-ui='container'][data-inset='10'],
174
- [data-ui='page'] [data-ui='container'][data-inset='11'],
175
- [data-ui='page'] [data-ui='container'][data-inset='12'] {
168
+ [data-ui-page] [data-ui-container][data-inset='5'],
169
+ [data-ui-page] [data-ui-container][data-inset='6'],
170
+ [data-ui-page] [data-ui-container][data-inset='7'],
171
+ [data-ui-page] [data-ui-container][data-inset='8'],
172
+ [data-ui-page] [data-ui-container][data-inset='9'],
173
+ [data-ui-page] [data-ui-container][data-inset='10'],
174
+ [data-ui-page] [data-ui-container][data-inset='11'],
175
+ [data-ui-page] [data-ui-container][data-inset='12'] {
176
176
  --_inset: var(--slotted-space-4, 0.5rem);
177
177
  }
178
178
  }