@slotted/styles 0.1.0-beta.1 → 0.1.0-beta.10

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 (176) 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 +43 -35
  6. package/src/alert/alert.tokens.json +5 -0
  7. package/src/app-shell/app-shell.css +356 -301
  8. package/src/aspect-ratio/aspect-ratio.css +9 -9
  9. package/src/attachment/attachment.css +91 -99
  10. package/src/avatar/avatar.css +71 -41
  11. package/src/avatar/avatar.tokens.json +7 -0
  12. package/src/avatar-group/avatar-group.css +21 -22
  13. package/src/badge/badge.css +45 -37
  14. package/src/badge/badge.tokens.json +5 -0
  15. package/src/breadcrumb/breadcrumb.css +37 -37
  16. package/src/button/button.css +139 -64
  17. package/src/button/button.tokens.json +10 -0
  18. package/src/button-group/button-group.css +76 -72
  19. package/src/button-group/button-group.tokens.json +2 -0
  20. package/src/calendar/calendar.css +93 -103
  21. package/src/card/card.css +54 -61
  22. package/src/carousel/carousel.css +150 -161
  23. package/src/cascader/cascader.css +152 -153
  24. package/src/cascader/cascader.tokens.json +1 -0
  25. package/src/chart/chart.css +242 -239
  26. package/src/chart/chart.tokens.json +1 -0
  27. package/src/checkbox/checkbox.css +119 -124
  28. package/src/checkbox-group/checkbox-group.css +7 -7
  29. package/src/code-block/code-block.css +81 -85
  30. package/src/collapsible/collapsible.css +69 -76
  31. package/src/color-picker/color-picker.css +83 -91
  32. package/src/column-manager/column-manager.css +106 -114
  33. package/src/combobox/combobox.css +132 -107
  34. package/src/combobox/combobox.tokens.json +1 -0
  35. package/src/command-palette/command-palette.css +84 -90
  36. package/src/container/container.css +24 -24
  37. package/src/context-menu/context-menu.css +8 -8
  38. package/src/currency-field/currency-field.css +210 -88
  39. package/src/currency-field/currency-field.tokens.json +13 -0
  40. package/src/dashboard-grid/dashboard-grid.css +148 -116
  41. package/src/data-grid/data-grid.css +504 -469
  42. package/src/data-grid/data-grid.tokens.json +2 -0
  43. package/src/data-list/data-list.css +81 -70
  44. package/src/data-list/data-list.tokens.json +2 -1
  45. package/src/date-field/date-field.css +55 -52
  46. package/src/date-field/date-field.tokens.json +1 -0
  47. package/src/date-picker/date-picker.css +40 -42
  48. package/src/date-range-picker/date-range-picker.css +114 -118
  49. package/src/datetime-field/datetime-field.css +78 -80
  50. package/src/datetime-field/datetime-field.tokens.json +1 -0
  51. package/src/datetime-picker/datetime-picker.css +61 -63
  52. package/src/datetime-range-picker/datetime-range-picker.css +149 -156
  53. package/src/description-list/description-list.css +61 -64
  54. package/src/detail-panel/detail-panel.css +70 -70
  55. package/src/dialog/dialog.css +334 -153
  56. package/src/dialog/dialog.tokens.json +5 -0
  57. package/src/divider/divider.css +18 -18
  58. package/src/drawer/drawer.css +186 -209
  59. package/src/entity-picker/entity-picker.css +238 -241
  60. package/src/entity-picker/entity-picker.tokens.json +1 -0
  61. package/src/event-calendar/event-calendar.css +343 -385
  62. package/src/field/field.css +74 -78
  63. package/src/field-group/field-group.css +22 -25
  64. package/src/filter-bar/filter-bar.css +193 -209
  65. package/src/form/form.css +34 -24
  66. package/src/form/form.tokens.json +1 -0
  67. package/src/fullscreen/fullscreen.css +24 -25
  68. package/src/grid/grid.css +28 -28
  69. package/src/highlight/highlight.css +6 -6
  70. package/src/hover-card/hover-card.css +6 -6
  71. package/src/icon/icon.css +19 -15
  72. package/src/icon/icon.tokens.json +1 -0
  73. package/src/image/image.css +39 -39
  74. package/src/import-export-center/import-export-center.css +135 -156
  75. package/src/inline/inline.css +27 -27
  76. package/src/inline-message/inline-message.css +52 -28
  77. package/src/inline-message/inline-message.tokens.json +4 -0
  78. package/src/kbd/kbd.css +30 -26
  79. package/src/link/link.css +15 -15
  80. package/src/list/list.css +44 -17
  81. package/src/list/list.tokens.json +4 -0
  82. package/src/list-item/list-item.css +80 -66
  83. package/src/list-item/list-item.tokens.json +7 -0
  84. package/src/listbox/listbox.css +56 -59
  85. package/src/loading-overlay/loading-overlay.css +75 -92
  86. package/src/markdown/markdown.css +17 -17
  87. package/src/menu/menu.css +83 -63
  88. package/src/menubar/menubar.css +13 -13
  89. package/src/message/message.css +182 -202
  90. package/src/message/message.tokens.json +5 -0
  91. package/src/message-scroller/message-scroller.css +41 -42
  92. package/src/multi-select/multi-select.css +152 -145
  93. package/src/multi-select/multi-select.tokens.json +1 -0
  94. package/src/navigation-menu/navigation-menu.css +167 -188
  95. package/src/notification-center/notification-center.css +140 -148
  96. package/src/notification-center/notification-center.tokens.json +3 -0
  97. package/src/number-field/number-field.css +84 -83
  98. package/src/number-field/number-field.tokens.json +1 -0
  99. package/src/otp-input/otp-input.css +67 -57
  100. package/src/otp-input/otp-input.tokens.json +1 -0
  101. package/src/page/page.css +23 -23
  102. package/src/page-header/page-header.css +268 -281
  103. package/src/page-header/page-header.tokens.json +1 -0
  104. package/src/pagination/pagination.css +68 -72
  105. package/src/popover/popover.css +40 -49
  106. package/src/progress-indicator/progress-indicator.css +177 -120
  107. package/src/progress-indicator/progress-indicator.tokens.json +1 -1
  108. package/src/prompt-composer/prompt-composer.css +221 -102
  109. package/src/prompt-composer/prompt-composer.tokens.json +15 -0
  110. package/src/prose/prose.css +71 -75
  111. package/src/radio-group/radio-group.css +98 -103
  112. package/src/rating/rating.css +136 -132
  113. package/src/rating/rating.tokens.json +1 -0
  114. package/src/result-state/result-state.css +74 -77
  115. package/src/runtime-properties.mjs +2 -0
  116. package/src/saved-views/saved-views.css +41 -47
  117. package/src/scroll-area/scroll-area.css +39 -32
  118. package/src/section/section.css +161 -41
  119. package/src/section/section.tokens.json +7 -2
  120. package/src/segmented-control/segmented-control.css +254 -97
  121. package/src/segmented-control/segmented-control.tokens.json +15 -11
  122. package/src/select/select.css +118 -117
  123. package/src/select/select.tokens.json +1 -0
  124. package/src/side-navigation/side-navigation.css +179 -182
  125. package/src/side-navigation/side-navigation.tokens.json +1 -0
  126. package/src/skeleton/skeleton.css +47 -48
  127. package/src/slider/slider.css +86 -88
  128. package/src/sparkline/sparkline.css +62 -40
  129. package/src/sparkline/sparkline.tokens.json +2 -0
  130. package/src/spinner/spinner.css +39 -182
  131. package/src/spinner/spinner.tokens.json +0 -2
  132. package/src/split-button/split-button.css +30 -31
  133. package/src/split-button/split-button.tokens.json +1 -0
  134. package/src/splitter/splitter.css +35 -35
  135. package/src/stack/stack.css +24 -24
  136. package/src/stat-card/stat-card.css +341 -224
  137. package/src/stat-card/stat-card.tokens.json +3 -0
  138. package/src/status-indicator/status-indicator.css +28 -28
  139. package/src/stepper/stepper.css +58 -62
  140. package/src/switch/switch.css +86 -92
  141. package/src/table/table.css +310 -165
  142. package/src/table/table.tokens.json +6 -0
  143. package/src/table-of-contents/table-of-contents.css +51 -54
  144. package/src/tabs/tabs.css +330 -302
  145. package/src/tabs/tabs.tokens.json +8 -5
  146. package/src/tag/tag.css +79 -71
  147. package/src/tag/tag.tokens.json +9 -0
  148. package/src/tags-input/tags-input.css +145 -82
  149. package/src/tags-input/tags-input.tokens.json +7 -1
  150. package/src/text-field/text-field.css +132 -136
  151. package/src/text-field/text-field.tokens.json +1 -0
  152. package/src/textarea/textarea.css +31 -28
  153. package/src/textarea/textarea.tokens.json +1 -0
  154. package/src/time-field/time-field.css +72 -69
  155. package/src/time-field/time-field.tokens.json +1 -0
  156. package/src/time-picker/time-picker.css +56 -58
  157. package/src/time-range-picker/time-range-picker.css +126 -133
  158. package/src/timeline/timeline.css +254 -266
  159. package/src/timeline/timeline.tokens.json +5 -0
  160. package/src/toast/toast.css +89 -90
  161. package/src/toast/toast.tokens.json +5 -0
  162. package/src/toggle/toggle.css +62 -25
  163. package/src/toggle/toggle.tokens.json +8 -0
  164. package/src/toggle-group/toggle-group.css +106 -60
  165. package/src/toggle-group/toggle-group.tokens.json +10 -0
  166. package/src/toolbar/toolbar.css +30 -35
  167. package/src/tooltip/tooltip.css +26 -26
  168. package/src/top-navigation/top-navigation.css +243 -259
  169. package/src/tour/tour.css +51 -60
  170. package/src/transfer/transfer.css +160 -164
  171. package/src/tree/tree.css +103 -111
  172. package/src/typography/typography.css +40 -36
  173. package/src/typography/typography.tokens.json +1 -0
  174. package/src/upload/upload.css +224 -224
  175. package/src/visually-hidden/visually-hidden.css +1 -1
  176. package/src/wizard/wizard.css +185 -197
@@ -7,7 +7,9 @@
7
7
  "--slotted-control-font-size-md",
8
8
  "--slotted-control-font-size-sm",
9
9
  "--slotted-control-gap-md",
10
+ "--slotted-control-height-lg",
10
11
  "--slotted-control-height-md",
12
+ "--slotted-control-height-sm",
11
13
  "--slotted-control-icon-size-md",
12
14
  "--slotted-control-inner-size-sm",
13
15
  "--slotted-control-invalid-edge-width",
@@ -14,7 +14,7 @@
14
14
  * family is written on an element of its own, never on the `li`, so the row
15
15
  * stays the row `list-item.css` recognises.
16
16
  */
17
- [data-ui='data-list'][data-part='root'] {
17
+ [data-ui-data-list][data-part-root] {
18
18
  /* The pop-in's two measures (`data-grid.css`, the pop-in): a field is at
19
19
  least nine rems, so two sit side by side from eighteen, and a field that
20
20
  has the row to itself puts its label in a track of seven and a half. */
@@ -35,12 +35,12 @@
35
35
  min-inline-size: 0;
36
36
  }
37
37
 
38
- [data-ui='data-list'][data-size='sm'] {
38
+ [data-ui-data-list][data-size='sm'] {
39
39
  --_pad-inline: var(--slotted-control-padding-inline-sm, 10px);
40
40
  --_gap: var(--slotted-control-gap-sm, 6px);
41
41
  }
42
42
 
43
- [data-ui='data-list'][data-size='lg'] {
43
+ [data-ui-data-list][data-size='lg'] {
44
44
  --_pad-inline: var(--slotted-control-padding-inline-lg, 16px);
45
45
  --_gap: var(--slotted-control-gap-lg, 8px);
46
46
  }
@@ -53,7 +53,7 @@
53
53
  * The rule under it is the set's first rule: a ruled list draws a line above
54
54
  * every row but the first, and the header is what the first row sits under.
55
55
  */
56
- [data-ui='data-list'] > [data-part='header'] {
56
+ [data-ui-data-list] > [data-part-header] {
57
57
  align-items: center;
58
58
  box-shadow: 0 var(--_rule-width) 0 0 var(--_rule);
59
59
  box-sizing: border-box;
@@ -70,23 +70,23 @@
70
70
 
71
71
  /* A plain list draws no rule between its rows, so the bar draws none under
72
72
  itself either. */
73
- [data-ui='data-list'][data-variant='plain'] > [data-part='header'] {
73
+ [data-ui-data-list][data-variant='plain'] > [data-part-header] {
74
74
  box-shadow: none;
75
75
  }
76
76
 
77
77
  /* A framed set carries its own edge; the bar sits outside it and the rule
78
78
  would double the frame's top. */
79
- [data-ui='data-list'][data-variant='framed'] > [data-part='header'] {
79
+ [data-ui-data-list][data-variant='framed'] > [data-part-header] {
80
80
  box-shadow: none;
81
81
  padding-inline: calc(var(--_pad-inline) + var(--_rule-width));
82
82
  }
83
83
 
84
- [data-ui='data-list'] [data-part='select-all'] {
84
+ [data-ui-data-list] [data-part-select-all] {
85
85
  display: inline-flex;
86
86
  flex: none;
87
87
  }
88
88
 
89
- [data-ui='data-list'] [data-part='count'] {
89
+ [data-ui-data-list] [data-part-count] {
90
90
  color: var(--_muted);
91
91
  flex: 1 1 auto;
92
92
  font-variant-numeric: tabular-nums;
@@ -96,7 +96,7 @@
96
96
  unicode-bidi: plaintext;
97
97
  }
98
98
 
99
- [data-ui='data-list'] [data-part='sort'] {
99
+ [data-ui-data-list] [data-part-sort] {
100
100
  display: inline-flex;
101
101
  flex: none;
102
102
  margin-inline-start: auto;
@@ -112,14 +112,14 @@
112
112
  * half turn for ascending. Without a key there is nothing to point at and
113
113
  * the binding draws no mark.
114
114
  */
115
- [data-ui='data-list'] [data-part='sort'] [data-part='end'] > [data-ui='icon'] {
115
+ [data-ui-data-list] [data-part-sort] [data-part-end] > [data-ui-icon] {
116
116
  transition: transform var(--_transition);
117
117
  }
118
118
 
119
- [data-ui='data-list']
120
- [data-part='sort'][data-direction='ascending']
121
- [data-part='end']
122
- > [data-ui='icon'] {
119
+ [data-ui-data-list]
120
+ [data-part-sort][data-direction='ascending']
121
+ [data-part-end]
122
+ > [data-ui-icon] {
123
123
  transform: rotate(180deg);
124
124
  }
125
125
 
@@ -130,31 +130,31 @@
130
130
  * controls a record holds stand above that target, so pressing a checkbox,
131
131
  * a disclosure or an action presses that control and not the record.
132
132
  */
133
- [data-ui='data-list'] [data-ui='list-item'] {
133
+ [data-ui-data-list] [data-ui-list-item] {
134
134
  position: relative;
135
135
  }
136
136
 
137
- [data-ui='data-list']
138
- [data-ui='list-item']
137
+ [data-ui-data-list]
138
+ [data-ui-list-item]
139
139
  :is(
140
- [data-part='selection'],
141
- [data-part='more'],
142
- [data-part='field-value'] :is(a, button, input, select, textarea, [tabindex])
140
+ [data-part-selection],
141
+ [data-part-more],
142
+ [data-part-field-value] :is(a, button, input, select, textarea, [tabindex])
143
143
  ),
144
- [data-ui='data-list'] [data-ui='list-item'] > [data-part='actions'] {
144
+ [data-ui-data-list] [data-ui-list-item] > [data-part-actions] {
145
145
  position: relative;
146
146
  z-index: 1;
147
147
  }
148
148
 
149
- [data-ui='data-list'] [data-part='selection'],
150
- [data-ui='data-list'] [data-part='media'] {
149
+ [data-ui-data-list] [data-part-selection],
150
+ [data-ui-data-list] [data-part-media] {
151
151
  align-items: center;
152
152
  display: inline-flex;
153
153
  flex: none;
154
154
  }
155
155
 
156
156
  /* Both in one leading column: the chooser first, the picture after it. */
157
- [data-ui='data-list'] [data-part='selection'] + [data-part='media'] {
157
+ [data-ui-data-list] [data-part-selection] + [data-part-media] {
158
158
  margin-inline-start: var(--_gap);
159
159
  }
160
160
 
@@ -164,7 +164,7 @@
164
164
  * sentence nobody listens to twice — and its `::after` is the whole row to a
165
165
  * pointer, which is where a phone reader's thumb lands.
166
166
  */
167
- [data-ui='data-list'] :is(a, button)[data-part='title'] {
167
+ [data-ui-data-list] :is(a, button)[data-part-title] {
168
168
  appearance: none;
169
169
  background: none;
170
170
  border: 0;
@@ -177,29 +177,29 @@
177
177
  text-decoration: none;
178
178
  }
179
179
 
180
- [data-ui='data-list'] :is(a, button)[data-part='title']::after {
180
+ [data-ui-data-list] :is(a, button)[data-part-title]::after {
181
181
  border-radius: inherit;
182
182
  content: '';
183
183
  inset: 0;
184
184
  position: absolute;
185
185
  }
186
186
 
187
- [data-ui='data-list'] :is(a, button)[data-part='title']:focus-visible {
187
+ [data-ui-data-list] :is(a, button)[data-part-title]:focus-visible {
188
188
  outline: none;
189
189
  }
190
190
 
191
191
  /* The ring is drawn by the target, inside the row, as `list-item` draws it
192
192
  on its own content: a row is full width, and an outward ring on the first
193
193
  record of a framed set is drawn under the frame. */
194
- [data-ui='data-list'] :is(a, button)[data-part='title']:focus-visible::after {
194
+ [data-ui-data-list] :is(a, button)[data-part-title]:focus-visible::after {
195
195
  outline: var(--slotted-focus-ring-width, 2px) solid
196
196
  var(--slotted-focus-ring-color, currentColor);
197
197
  outline-offset: calc(var(--slotted-focus-ring-offset, 2px) * -1);
198
198
  }
199
199
 
200
- [data-ui='data-list']
201
- [data-ui='list-item']:not([data-disabled]):not([data-loading])
202
- :is(a[href], button:not(:disabled))[data-part='title']:hover {
200
+ [data-ui-data-list]
201
+ [data-ui-list-item]:not([data-disabled]):not([data-loading])
202
+ :is(a[href], button:not(:disabled))[data-part-title]:hover {
203
203
  text-decoration: underline;
204
204
  text-decoration-thickness: from-font;
205
205
  text-underline-offset: 0.2em;
@@ -212,23 +212,21 @@
212
212
  * through the row's own `--_fill`, which already knows the tone and the
213
213
  * selection it is painted over. Both hold back for `disabled` and `loading`.
214
214
  */
215
- [data-ui='data-list']
216
- [data-ui='list-item']:not([data-disabled]):not([data-loading]):has(
217
- [data-part='title']:is(a[href], button:not(:disabled)):hover
215
+ [data-ui-data-list]
216
+ [data-ui-list-item]:not([data-disabled]):not([data-loading]):has(
217
+ [data-part-title]:is(a[href], button:not(:disabled)):hover
218
218
  ) {
219
219
  --_fill: var(--_hover, ButtonFace);
220
220
  }
221
221
 
222
- [data-ui='data-list']
223
- [data-ui='list-item']:not([data-disabled]):not([data-loading]):has(
224
- [data-part='title']:is(a[href], button:not(:disabled)):active
222
+ [data-ui-data-list]
223
+ [data-ui-list-item]:not([data-disabled]):not([data-loading]):has(
224
+ [data-part-title]:is(a[href], button:not(:disabled)):active
225
225
  ) {
226
226
  --_fill: var(--_active, ButtonFace);
227
227
  }
228
228
 
229
- [data-ui='data-list']
230
- [data-ui='list-item']:is([data-disabled], [data-loading])
231
- [data-part='title'] {
229
+ [data-ui-data-list] [data-ui-list-item]:is([data-disabled], [data-loading]) [data-part-title] {
232
230
  cursor: default;
233
231
  }
234
232
 
@@ -239,7 +237,7 @@
239
237
  * recedes itself while it loads or is disabled, and which a selection leaves
240
238
  * alone, so a selected record keeps its figures in the page's ink.
241
239
  */
242
- [data-ui='data-list'] [data-part='trailing'] {
240
+ [data-ui-data-list] [data-part-trailing] {
243
241
  color: var(--_text, CanvasText);
244
242
  font-variant-numeric: tabular-nums;
245
243
  font-weight: var(--slotted-font-weight-medium, 500);
@@ -264,10 +262,10 @@
264
262
  * fell to one squeezed column with its dates broken in two. Below
265
263
  * `list-item`'s 22rem the grid has two columns and `-1` still names its end.
266
264
  */
267
- [data-ui='data-list']
268
- [data-ui='list-item']
269
- > [data-part='content']
270
- > :is([data-part='fields'], [data-part='more']) {
265
+ [data-ui-data-list]
266
+ [data-ui-list-item]
267
+ > [data-part-content]
268
+ > :is([data-part-fields], [data-part-more]) {
271
269
  grid-column: 2 / -1;
272
270
  }
273
271
 
@@ -276,17 +274,17 @@
276
274
  under them the fields of a 240-pixel record were eleven rems wide. The
277
275
  pop-in makes the same move below 600 pixels. */
278
276
  @container slotted-list-item (max-inline-size: 22rem) {
279
- [data-ui='data-list']
280
- [data-ui='list-item']
281
- > [data-part='content']
282
- > :is([data-part='fields'], [data-part='more']) {
277
+ [data-ui-data-list]
278
+ [data-ui-list-item]
279
+ > [data-part-content]
280
+ > :is([data-part-fields], [data-part-more]) {
283
281
  grid-column: 1 / -1;
284
282
  }
285
283
  }
286
284
 
287
285
  /* The box is a query container for its pairs. Its own tracks need no query:
288
286
  `auto-fill` already gives one column below eighteen rems. */
289
- [data-ui='data-list'] [data-part='fields'] {
287
+ [data-ui-data-list] [data-part-fields] {
290
288
  column-gap: var(--slotted-space-4, 0.5rem);
291
289
  container: slotted-data-list-fields / inline-size;
292
290
  display: grid;
@@ -297,14 +295,14 @@
297
295
  row-gap: var(--slotted-space-2, 0.25rem);
298
296
  }
299
297
 
300
- [data-ui='data-list'] [data-part='field'] {
298
+ [data-ui-data-list] [data-part-field] {
301
299
  display: flex;
302
300
  flex-direction: column;
303
301
  margin: 0;
304
302
  min-inline-size: 0;
305
303
  }
306
304
 
307
- [data-ui='data-list'] [data-part='field-label'] {
305
+ [data-ui-data-list] [data-part-field-label] {
308
306
  color: var(--_muted, GrayText);
309
307
  font-size: var(--slotted-font-size-xs, 0.75rem);
310
308
  font-weight: var(--slotted-font-weight-regular, 400);
@@ -317,7 +315,7 @@
317
315
 
318
316
  /* The value is the row's own ink and size, and it wraps: a field has no
319
317
  other way to show what it holds, so it never truncates. */
320
- [data-ui='data-list'] [data-part='field-value'] {
318
+ [data-ui-data-list] [data-part-field-value] {
321
319
  color: var(--_text, CanvasText);
322
320
  font-weight: var(--slotted-font-weight-regular, 400);
323
321
  line-height: var(--slotted-line-height-md, 1.5);
@@ -333,13 +331,13 @@
333
331
  unicode-bidi: plaintext;
334
332
  }
335
333
 
336
- [data-ui='data-list'] [data-part='field-value'][data-numeric] {
334
+ [data-ui-data-list] [data-part-field-value][data-numeric] {
337
335
  font-variant-numeric: tabular-nums;
338
336
  }
339
337
 
340
338
  /* `—` is written by both bindings; the sheet only lowers its ink, the rule
341
339
  `description-list` settled for the same mark. */
342
- [data-ui='data-list'] [data-part='field-empty'] {
340
+ [data-ui-data-list] [data-part-field-empty] {
343
341
  color: var(--_muted, GrayText);
344
342
  }
345
343
 
@@ -351,7 +349,7 @@
351
349
  * and a date took two lines, so the pair returns to the label over the value.
352
350
  */
353
351
  @container slotted-data-list-fields (min-inline-size: 12rem) and (max-inline-size: 19rem) {
354
- [data-ui='data-list'] [data-part='field'] {
352
+ [data-ui-data-list] [data-part-field] {
355
353
  align-items: baseline;
356
354
  column-gap: var(--slotted-space-3, 0.375rem);
357
355
  display: grid;
@@ -364,7 +362,7 @@
364
362
  * a control-sized button, because it belongs to the record's text; its box
365
363
  * still reaches the 24-pixel target.
366
364
  */
367
- [data-ui='data-list'] [data-part='more'] {
365
+ [data-ui-data-list] [data-part-more] {
368
366
  align-items: center;
369
367
  appearance: none;
370
368
  background: none;
@@ -385,26 +383,26 @@
385
383
 
386
384
  /* The chevron is the `Glyph` the binding draws after the words; it turns a
387
385
  half turn once the fields are shown. */
388
- [data-ui='data-list'] [data-part='more'] > [data-ui='icon'] {
386
+ [data-ui-data-list] [data-part-more] > [data-ui-icon] {
389
387
  transition: transform var(--_transition);
390
388
  }
391
389
 
392
- [data-ui='data-list'] [data-part='more'][aria-expanded='true'] > [data-ui='icon'] {
390
+ [data-ui-data-list] [data-part-more][aria-expanded='true'] > [data-ui-icon] {
393
391
  transform: rotate(180deg);
394
392
  }
395
393
 
396
- [data-ui='data-list'] [data-part='more']:not(:disabled):hover {
394
+ [data-ui-data-list] [data-part-more]:not(:disabled):hover {
397
395
  text-decoration: underline;
398
396
  text-decoration-thickness: from-font;
399
397
  text-underline-offset: 0.2em;
400
398
  }
401
399
 
402
- [data-ui='data-list'] [data-part='more']:focus-visible {
400
+ [data-ui-data-list] [data-part-more]:focus-visible {
403
401
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
404
402
  outline-offset: var(--slotted-focus-ring-offset, 2px);
405
403
  }
406
404
 
407
- [data-ui='data-list'] [data-ui='list-item'][data-disabled] [data-part='more'] {
405
+ [data-ui-data-list] [data-ui-list-item][data-disabled] [data-part-more] {
408
406
  color: var(--slotted-disabled-foreground, GrayText);
409
407
  }
410
408
 
@@ -414,28 +412,41 @@
414
412
  * Over rows already shown the rows stay and recede, and nothing moves:
415
413
  * `data-grid`'s rule for the same wait, at the same strength.
416
414
  */
417
- [data-ui='data-list'][aria-busy='true'] > [data-ui='list'] {
415
+ [data-ui-data-list] > [data-ui-list] {
416
+ /* The containing block of the veil a busy list lays over its rows. */
417
+ position: relative;
418
+ }
419
+
420
+ [data-ui-data-list][aria-busy='true'] > [data-ui-list] {
418
421
  opacity: 0.55;
419
- pointer-events: none;
420
422
  transition: opacity var(--_transition);
421
423
  }
422
424
 
423
- [data-ui='data-list'] > [data-part='empty'] {
425
+ /* A veil refuses the press, as `data-grid`'s does: `pointer-events: none`
426
+ on the list is inherited, and toggling it restyled every row. */
427
+ [data-ui-data-list][aria-busy='true'] > [data-ui-list]::after {
428
+ content: '';
429
+ inset: 0;
430
+ position: absolute;
431
+ z-index: calc(var(--slotted-z-index-sticky, 100) + 4);
432
+ }
433
+
434
+ [data-ui-data-list] > [data-part-empty] {
424
435
  padding-block: var(--slotted-space-8, 1.5rem);
425
436
  padding-inline: var(--_pad-inline);
426
437
  }
427
438
 
428
- [data-ui='data-list'] > [data-part='loader'] {
439
+ [data-ui-data-list] > [data-part-loader] {
429
440
  display: block;
430
441
  }
431
442
 
432
443
  /* A skeleton record's lines stand where the text will: the title's at the
433
444
  title's size, the description's under it. */
434
- [data-ui='data-list'] > [data-part='loader'] [data-part='field-value'] [data-ui='skeleton'] {
445
+ [data-ui-data-list] > [data-part-loader] [data-part-field-value] [data-ui-skeleton] {
435
446
  vertical-align: middle;
436
447
  }
437
448
 
438
- [data-ui='data-list'] > [data-part='footer'] {
449
+ [data-ui-data-list] > [data-part-footer] {
439
450
  align-items: center;
440
451
  display: flex;
441
452
  flex-wrap: wrap;
@@ -445,11 +456,11 @@
445
456
  padding-inline: var(--_pad-inline);
446
457
  }
447
458
 
448
- [data-ui='data-list'] > [data-part='footer']:empty {
459
+ [data-ui-data-list] > [data-part-footer]:empty {
449
460
  display: none;
450
461
  }
451
462
 
452
- [data-ui='data-list'] [data-part='load-more'] {
463
+ [data-ui-data-list] [data-part-load-more] {
453
464
  display: inline-flex;
454
465
  }
455
466
  }
@@ -31,5 +31,6 @@
31
31
  "--slotted-target-min",
32
32
  "--slotted-text",
33
33
  "--slotted-text-muted",
34
- "--slotted-tone-accent-text"
34
+ "--slotted-tone-accent-text",
35
+ "--slotted-z-index-sticky"
35
36
  ]