@slotted/styles 0.1.0-beta.0 → 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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@slotted/styles",
3
- "version": "0.1.0-beta.0",
3
+ "version": "0.1.0-beta.10",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -3,7 +3,7 @@
3
3
  * A set of disclosures that share a value.
4
4
  *
5
5
  * Nothing here selects into `collapsible`. A rule reaching
6
- * `[data-ui='collapsible']` from this stylesheet would make one family's DOM
6
+ * `[data-ui-collapsible]` from this stylesheet would make one family's DOM
7
7
  * part of another's contract, so moving an item inside a wrapper would change
8
8
  * its appearance with no test to notice — the rule `checkbox-group` set for
9
9
  * every group family in the library. The group arranges its items and draws
@@ -13,7 +13,7 @@
13
13
  * The set is a single column. A horizontally stacked set of sections of which
14
14
  * one is open is a tab list, and `tabs` owns it.
15
15
  */
16
- [data-ui='accordion'] {
16
+ [data-ui-accordion] {
17
17
  --_rule-size: var(--slotted-border-width-thin, 1px);
18
18
  /**
19
19
  * The distance between two cards under `separated`. Every other variant
@@ -28,11 +28,11 @@
28
28
  min-inline-size: 0;
29
29
  }
30
30
 
31
- [data-ui='accordion'][data-size='sm'] {
31
+ [data-ui-accordion][data-size='sm'] {
32
32
  --_gap: var(--slotted-space-3, 0.375rem);
33
33
  }
34
34
 
35
- [data-ui='accordion'][data-size='lg'] {
35
+ [data-ui-accordion][data-size='lg'] {
36
36
  --_gap: var(--slotted-space-5, 0.75rem);
37
37
  }
38
38
 
@@ -43,7 +43,7 @@
43
43
  * one list and what keeps an item from having to know whether it is the last
44
44
  * one. The bottom of the stack is the set's own edge, so the set draws it.
45
45
  */
46
- [data-ui='accordion'][data-variant='ruled'] {
46
+ [data-ui-accordion][data-variant='ruled'] {
47
47
  border-block-end: var(--_rule-size) solid
48
48
  var(--slotted-accordion-rule-color, var(--slotted-border-subtle, ButtonBorder));
49
49
  }
@@ -53,7 +53,7 @@
53
53
  * own edge is the rule above the first item and below the last, and `clip` is
54
54
  * what makes the corner an item's hover fill meets the corner the frame drew.
55
55
  */
56
- [data-ui='accordion'][data-variant='framed'] {
56
+ [data-ui-accordion][data-variant='framed'] {
57
57
  background-color: var(--slotted-accordion-surface, var(--slotted-surface-raised, Canvas));
58
58
  border: var(--_rule-size) solid
59
59
  var(--slotted-accordion-rule-color, var(--slotted-border-subtle, ButtonBorder));
@@ -70,9 +70,9 @@
70
70
  * The child is reached structurally rather than by its identity. Which
71
71
  * element is first is the group's own layout fact; what that element is
72
72
  * inside remains the item family's, which is why nothing here names
73
- * `[data-ui='collapsible']` or one of its parts.
73
+ * `[data-ui-collapsible]` or one of its parts.
74
74
  */
75
- [data-ui='accordion'][data-variant='framed'] > :first-child {
75
+ [data-ui-accordion][data-variant='framed'] > :first-child {
76
76
  border-block-start-color: transparent;
77
77
  }
78
78
 
@@ -81,7 +81,7 @@
81
81
  * border and radius, and the only thing left for the set is the air between
82
82
  * them.
83
83
  */
84
- [data-ui='accordion'][data-variant='separated'] {
84
+ [data-ui-accordion][data-variant='separated'] {
85
85
  row-gap: var(--slotted-accordion-gap, var(--_gap));
86
86
  }
87
87
 
@@ -90,7 +90,7 @@
90
90
  * native one, which is what actually stops the press; this is the colour that
91
91
  * says so for the words the set draws itself, if a consumer puts any in it.
92
92
  */
93
- [data-ui='accordion'][data-disabled] {
93
+ [data-ui-accordion][data-disabled] {
94
94
  color: var(--slotted-disabled-foreground, GrayText);
95
95
  }
96
96
  }
@@ -18,7 +18,7 @@
18
18
  * overflow trigger. Everything else a reader sees belongs to the control the
19
19
  * consumer placed.
20
20
  */
21
- [data-ui='action-bar'] {
21
+ [data-ui-action-bar] {
22
22
  /**
23
23
  * The bar's own rhythm, from the control scales, so the three densities
24
24
  * move it without a rule of their own.
@@ -56,7 +56,7 @@
56
56
  padding-inline: var(--slotted-action-bar-inset-inline, var(--_inset-inline));
57
57
  }
58
58
 
59
- [data-ui='action-bar'][data-size='sm'] {
59
+ [data-ui-action-bar][data-size='sm'] {
60
60
  --_gap: var(--slotted-control-gap-sm, 0.375rem);
61
61
  --_inset-block: var(--slotted-space-3, 0.375rem);
62
62
  --_inset-inline: var(--slotted-space-4, 0.5rem);
@@ -66,7 +66,7 @@
66
66
  --_separator-inset: var(--slotted-space-1, 0.125rem);
67
67
  }
68
68
 
69
- [data-ui='action-bar'][data-size='lg'] {
69
+ [data-ui-action-bar][data-size='lg'] {
70
70
  --_gap: var(--slotted-control-gap-lg, 0.5rem);
71
71
  --_inset-block: var(--slotted-space-5, 0.75rem);
72
72
  --_inset-inline: var(--slotted-space-6, 1rem);
@@ -82,8 +82,8 @@
82
82
  * still consumes the gap of the column that holds it — and, under `raised`,
83
83
  * draws a rule straight across the screen with nothing under it.
84
84
  */
85
- [data-ui='action-bar']:not(:has([data-part='actions'] > *:not([hidden]))):not(
86
- :has([data-part='status'])
85
+ [data-ui-action-bar]:not(:has([data-part-actions] > *:not([hidden]))):not(
86
+ :has([data-part-status])
87
87
  ) {
88
88
  display: none;
89
89
  }
@@ -99,7 +99,7 @@
99
99
  * or above a table. It takes the surface and one hairline at the top, which
100
100
  * is the whole of the separation a bar at the end of a region needs.
101
101
  */
102
- [data-ui='action-bar'][data-variant='raised'] {
102
+ [data-ui-action-bar][data-variant='raised'] {
103
103
  background-color: var(--slotted-action-bar-background, var(--slotted-surface, Canvas));
104
104
  border-block-start: var(--slotted-border-width-thin, 1px) solid
105
105
  var(--slotted-action-bar-border-color, var(--slotted-border-subtle, ButtonBorder));
@@ -120,7 +120,7 @@
120
120
  * of the surveyed implementations composes with the page's own chrome; each
121
121
  * of them fixes the bar and then compensates.
122
122
  */
123
- [data-ui='action-bar'][data-sticky] {
123
+ [data-ui-action-bar][data-sticky] {
124
124
  inset-block-end: var(--slotted-page-sticky-bottom, 0px);
125
125
  position: sticky;
126
126
  z-index: var(--slotted-z-index-sticky, 100);
@@ -133,13 +133,13 @@
133
133
  * existence under the reader's hands is the jump
134
134
  * `docs/component-features.md` §11 forbids by name.
135
135
  */
136
- [data-ui='action-bar'][data-status] {
136
+ [data-ui-action-bar][data-status] {
137
137
  transition:
138
138
  translate var(--_duration) var(--_easing),
139
139
  opacity var(--_duration) var(--_easing);
140
140
  }
141
141
 
142
- [data-ui='action-bar']:is([data-status='entering'], [data-status='exiting']) {
142
+ [data-ui-action-bar]:is([data-status='entering'], [data-status='exiting']) {
143
143
  opacity: 0;
144
144
  translate: 0 100%;
145
145
  }
@@ -151,7 +151,7 @@
151
151
  * what is selected. It takes what is left over and gives way first, so a long
152
152
  * message shortens itself rather than pushing the actions off the bar.
153
153
  */
154
- [data-ui='action-bar'] [data-part='status'] {
154
+ [data-ui-action-bar] [data-part-status] {
155
155
  align-items: center;
156
156
  color: var(--slotted-action-bar-status-color, var(--slotted-text-muted, GrayText));
157
157
  display: flex;
@@ -171,7 +171,7 @@
171
171
  * action and never the last action itself. The property is logical, so the
172
172
  * anchor mirrors with the bar in a right-to-left document.
173
173
  */
174
- [data-ui='action-bar'] [data-part='actions'] {
174
+ [data-ui-action-bar] [data-part-actions] {
175
175
  align-items: center;
176
176
  display: flex;
177
177
  flex: 0 0 auto;
@@ -196,12 +196,12 @@
196
196
  * buttons, Polaris puts them at the end, Fluent at the start. The anchor is
197
197
  * what `end` is, so the other two are the ones that state a margin.
198
198
  */
199
- [data-ui='action-bar'][data-align='start'] [data-part='actions'] {
199
+ [data-ui-action-bar][data-align='start'] [data-part-actions] {
200
200
  justify-content: flex-start;
201
201
  margin-inline: 0 auto;
202
202
  }
203
203
 
204
- [data-ui='action-bar'][data-align='center'] [data-part='actions'] {
204
+ [data-ui-action-bar][data-align='center'] [data-part-actions] {
205
205
  justify-content: center;
206
206
  margin-inline: auto;
207
207
  }
@@ -210,8 +210,7 @@
210
210
  * A bar with no status region at all still puts its run where `align` says,
211
211
  * which without this is where the first `auto` margin happens to leave it.
212
212
  */
213
- [data-ui='action-bar'][data-align='center']:not(:has([data-part='status']))
214
- [data-part='actions'] {
213
+ [data-ui-action-bar][data-align='center']:not(:has([data-part-status])) [data-part-actions] {
215
214
  margin-inline: auto;
216
215
  }
217
216
 
@@ -225,7 +224,7 @@
225
224
  * It paints nothing: everything a reader sees inside it belongs to the
226
225
  * control the consumer placed.
227
226
  */
228
- [data-ui='action-bar'] [data-part='action'] {
227
+ [data-ui-action-bar] [data-part-action] {
229
228
  align-items: center;
230
229
  display: inline-flex;
231
230
  flex: none;
@@ -239,8 +238,8 @@
239
238
  * and without this every collapsed unit stays on the bar and the collapse
240
239
  * does nothing at all.
241
240
  */
242
- [data-ui='action-bar']
243
- :is([data-part='action'], [data-part='separator'], [data-part='overflow'])[hidden] {
241
+ [data-ui-action-bar]
242
+ :is([data-part-action], [data-part-separator], [data-part-overflow])[hidden] {
244
243
  display: none;
245
244
  }
246
245
 
@@ -257,7 +256,7 @@
257
256
  * It is a part of this family rather than the `divider` family because its
258
257
  * geometry belongs to the bar: it is measured against the controls beside it.
259
258
  */
260
- [data-ui='action-bar'] [data-part='separator'] {
259
+ [data-ui-action-bar] [data-part-separator] {
261
260
  align-self: stretch;
262
261
  background-color: var(
263
262
  --slotted-action-bar-separator-color,
@@ -283,7 +282,7 @@
283
282
  * Its accessible name carries the count, so what a reader hears is a number
284
283
  * rather than three dots.
285
284
  */
286
- [data-ui='action-bar'] [data-part='overflow'] {
285
+ [data-ui-action-bar] [data-part-overflow] {
287
286
  align-items: center;
288
287
  appearance: none;
289
288
  background-color: transparent;
@@ -321,7 +320,7 @@
321
320
  }
322
321
 
323
322
  /* The ground moves under the pointer and nothing else does. */
324
- [data-ui='action-bar'] [data-part='overflow']:not(:disabled):hover {
323
+ [data-ui-action-bar] [data-part-overflow]:not(:disabled):hover {
325
324
  background-color: var(
326
325
  --slotted-action-bar-overflow-hover-background,
327
326
  var(--slotted-tone-secondary-subtle-hover)
@@ -329,7 +328,7 @@
329
328
  color: var(--slotted-action-bar-overflow-hover-color, var(--slotted-text, CanvasText));
330
329
  }
331
330
 
332
- [data-ui='action-bar'] [data-part='overflow']:not(:disabled):active {
331
+ [data-ui-action-bar] [data-part-overflow]:not(:disabled):active {
333
332
  background-color: var(
334
333
  --slotted-action-bar-overflow-active-background,
335
334
  var(--slotted-tone-secondary-subtle-active)
@@ -341,7 +340,7 @@
341
340
  * reader who moved the pointer off the trigger loses every sign of which
342
341
  * control the layer belongs to.
343
342
  */
344
- [data-ui='action-bar'] [data-part='overflow'][data-open] {
343
+ [data-ui-action-bar] [data-part-overflow][data-open] {
345
344
  background-color: var(
346
345
  --slotted-action-bar-overflow-open-background,
347
346
  var(--slotted-tone-secondary-subtle-active)
@@ -355,12 +354,12 @@
355
354
  * looking operable, and it answers neither hover nor press, which is the
356
355
  * precedence `docs/state-and-events.md` fixes.
357
356
  */
358
- [data-ui='action-bar'] [data-part='overflow']:disabled {
357
+ [data-ui-action-bar] [data-part-overflow]:disabled {
359
358
  color: var(--slotted-disabled-foreground, GrayText);
360
359
  cursor: default;
361
360
  }
362
361
 
363
- [data-ui='action-bar'] [data-part='overflow']:focus-visible {
362
+ [data-ui-action-bar] [data-part-overflow]:focus-visible {
364
363
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
365
364
  outline-offset: var(--slotted-focus-ring-offset, 2px);
366
365
  }
@@ -389,7 +388,7 @@
389
388
  * the order a form is read in, and only the paint is reversed. `stretch`
390
389
  * fills the column, because a column of natural widths is a ragged edge.
391
390
  */
392
- [data-ui='action-bar'] [data-part='actions'] {
391
+ [data-ui-action-bar] [data-part-actions] {
393
392
  --_stacked: 1;
394
393
 
395
394
  align-items: stretch;
@@ -398,7 +397,7 @@
398
397
  margin-inline: 0;
399
398
  }
400
399
 
401
- [data-ui='action-bar'] [data-part='action'] > * {
400
+ [data-ui-action-bar] [data-part-action] > * {
402
401
  inline-size: 100%;
403
402
  }
404
403
 
@@ -409,7 +408,7 @@
409
408
  * painted at the top of the column by the reversal, which is where the
410
409
  * action that confirms belongs.
411
410
  */
412
- [data-ui='action-bar'] [data-part='overflow'] {
411
+ [data-ui-action-bar] [data-part-overflow] {
413
412
  display: none;
414
413
  }
415
414
 
@@ -417,7 +416,7 @@
417
416
  * A rule that divided two controls in a row divides two rows here, so it
418
417
  * turns with them.
419
418
  */
420
- [data-ui='action-bar'] [data-part='separator'] {
419
+ [data-ui-action-bar] [data-part-separator] {
421
420
  block-size: var(--slotted-border-width-thin, 1px);
422
421
  inline-size: auto;
423
422
  margin-block: calc(var(--_gap) / 2);
@@ -425,14 +424,14 @@
425
424
  min-block-size: 0;
426
425
  }
427
426
 
428
- [data-ui='action-bar'] [data-part='status'] {
427
+ [data-ui-action-bar] [data-part-status] {
429
428
  flex: 1 1 100%;
430
429
  }
431
430
 
432
431
  /* What the consumer put in the status, addressed as the part's child and
433
432
  never by a class of its own: while the bar is a column the status fills
434
433
  the row, as an action does two rules above. */
435
- [data-ui='action-bar'] [data-part='status'] > * {
434
+ [data-ui-action-bar] [data-part-status] > * {
436
435
  align-content: space-between;
437
436
  inline-size: 100%;
438
437
  }
@@ -447,7 +446,7 @@
447
446
  * destructive action and a frequent one is still there to read.
448
447
  */
449
448
  @media (forced-colors: active) {
450
- [data-ui='action-bar'] [data-part='separator'] {
449
+ [data-ui-action-bar] [data-part-separator] {
451
450
  background-color: CanvasText;
452
451
  forced-color-adjust: none;
453
452
  }
@@ -22,7 +22,7 @@
22
22
  * Every part is reached with a child combinator, except the rows of the
23
23
  * list, which a group may hold one level down.
24
24
  */
25
- [data-ui='action-sheet'] {
25
+ [data-ui-action-sheet] {
26
26
  /** The row's inset, which the header, every item and the footer share. */
27
27
  --_inset: var(--slotted-control-padding-inline-lg, 16px);
28
28
  --_gap: var(--slotted-control-gap-lg, 8px);
@@ -93,7 +93,7 @@
93
93
  }
94
94
 
95
95
  @media (pointer: coarse) {
96
- [data-ui='action-sheet'] {
96
+ [data-ui-action-sheet] {
97
97
  --_label-size: var(--slotted-font-size-lg, 1rem);
98
98
  }
99
99
  }
@@ -105,7 +105,7 @@
105
105
  * set small and the actions large — the hierarchy UIKit and Ionic draw, and
106
106
  * the reverse of `drawer`, whose title names a task the body carries out.
107
107
  */
108
- [data-ui='action-sheet'] > [data-part='header'] {
108
+ [data-ui-action-sheet] > [data-part-header] {
109
109
  border-block-end: var(--_rule-size) solid var(--_rule);
110
110
  display: grid;
111
111
  padding-block: var(--slotted-space-6, 1rem) var(--slotted-space-5, 0.75rem);
@@ -113,7 +113,7 @@
113
113
  row-gap: var(--slotted-space-1, 0.125rem);
114
114
  }
115
115
 
116
- [data-ui='action-sheet'] [data-part='title'] {
116
+ [data-ui-action-sheet] [data-part-title] {
117
117
  color: var(--slotted-text, CanvasText);
118
118
  font-family: var(
119
119
  --slotted-font-family-heading,
@@ -126,7 +126,7 @@
126
126
  overflow-wrap: anywhere;
127
127
  }
128
128
 
129
- [data-ui='action-sheet'] [data-part='message'] {
129
+ [data-ui-action-sheet] [data-part-message] {
130
130
  color: var(--_muted);
131
131
  font-size: var(--slotted-font-size-sm, 0.8125rem);
132
132
  line-height: var(--slotted-line-height-sm, 1.45);
@@ -147,7 +147,7 @@
147
147
  * row was 44 pixels and a three-line label was painted over the two items
148
148
  * below it.
149
149
  */
150
- [data-ui='action-sheet'] > [data-part='list'] {
150
+ [data-ui-action-sheet] > [data-part-list] {
151
151
  --_mark: 0px;
152
152
  --_column-gap: 0px;
153
153
 
@@ -170,7 +170,7 @@
170
170
  padding-inline: var(--_list-inset);
171
171
  }
172
172
 
173
- [data-ui='action-sheet'] > [data-part='list']:has([data-part='icon']) {
173
+ [data-ui-action-sheet] > [data-part-list]:has([data-part-icon]) {
174
174
  --_mark: var(--_icon-size);
175
175
  --_column-gap: var(--_gap);
176
176
  }
@@ -179,17 +179,17 @@
179
179
  * The home indicator sits under the last row of a sheet with no footer, so
180
180
  * that row carries the bottom inset instead.
181
181
  */
182
- [data-ui='action-sheet']:not(:has(> [data-part='footer'])) > [data-part='list'] {
182
+ [data-ui-action-sheet]:not(:has(> [data-part-footer])) > [data-part-list] {
183
183
  padding-block-end: calc(var(--slotted-space-2, 0.25rem) + env(safe-area-inset-bottom, 0px));
184
184
  }
185
185
 
186
- [data-ui='action-sheet'] [data-part='group'] {
186
+ [data-ui-action-sheet] [data-part-group] {
187
187
  display: grid;
188
188
  grid-auto-rows: max-content;
189
189
  grid-template-columns: minmax(0, 1fr);
190
190
  }
191
191
 
192
- [data-ui='action-sheet'] [data-part='group-label'] {
192
+ [data-ui-action-sheet] [data-part-group-label] {
193
193
  color: var(--_muted);
194
194
  font-size: var(--slotted-font-size-sm, 0.8125rem);
195
195
  font-weight: var(--slotted-font-weight-semibold, 600);
@@ -198,7 +198,7 @@
198
198
  padding-inline: calc(var(--_inset) - var(--_list-inset));
199
199
  }
200
200
 
201
- [data-ui='action-sheet'] [data-part='separator'] {
201
+ [data-ui-action-sheet] [data-part-separator] {
202
202
  background-color: var(--_rule);
203
203
  block-size: var(--_rule-size);
204
204
  border: 0;
@@ -215,7 +215,7 @@
215
215
  * `min-block-size` rather than a height, because an item with a description
216
216
  * is two lines tall and still has to clear the target.
217
217
  */
218
- [data-ui='action-sheet'] [data-part='item'] {
218
+ [data-ui-action-sheet] [data-part-item] {
219
219
  align-content: center;
220
220
  appearance: none;
221
221
  background: transparent;
@@ -251,13 +251,13 @@
251
251
  * pointer that has not moved focus yet, before the script has run, still
252
252
  * gets the hover.
253
253
  */
254
- [data-ui='action-sheet'] [data-part='item']:focus {
254
+ [data-ui-action-sheet] [data-part-item]:focus {
255
255
  background-color: var(--_highlight);
256
256
  outline: none;
257
257
  }
258
258
 
259
259
  @media (hover: hover) {
260
- [data-ui='action-sheet'] [data-part='item']:hover:not([data-disabled]):not([data-loading]) {
260
+ [data-ui-action-sheet] [data-part-item]:hover:not([data-disabled]):not([data-loading]) {
261
261
  background-color: var(--_highlight);
262
262
  }
263
263
  }
@@ -266,12 +266,12 @@
266
266
  * Inset, so the ring follows the row's own corner and never meets the
267
267
  * neighbour's edge.
268
268
  */
269
- [data-ui='action-sheet'] [data-part='item']:focus-visible {
269
+ [data-ui-action-sheet] [data-part-item]:focus-visible {
270
270
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
271
271
  outline-offset: calc(-1 * var(--slotted-focus-ring-width, 2px));
272
272
  }
273
273
 
274
- [data-ui='action-sheet'] [data-part='item']:active:not([data-disabled]):not([data-loading]) {
274
+ [data-ui-action-sheet] [data-part-item]:active:not([data-disabled]):not([data-loading]) {
275
275
  background-color: var(--_highlight-active);
276
276
  }
277
277
 
@@ -279,16 +279,16 @@
279
279
  * Focusable and inert, as the menu pattern requires, and legible rather than
280
280
  * faded: the words keep the theme's disabled ink at its contrast.
281
281
  */
282
- [data-ui='action-sheet'] [data-part='item'][data-disabled] {
282
+ [data-ui-action-sheet] [data-part-item][data-disabled] {
283
283
  color: var(--slotted-disabled-foreground, GrayText);
284
284
  cursor: not-allowed;
285
285
  }
286
286
 
287
- [data-ui='action-sheet'] [data-part='item'][data-disabled]:focus {
287
+ [data-ui-action-sheet] [data-part-item][data-disabled]:focus {
288
288
  background-color: var(--slotted-disabled-background, ButtonFace);
289
289
  }
290
290
 
291
- [data-ui='action-sheet'] [data-part='item'][data-loading] {
291
+ [data-ui-action-sheet] [data-part-item][data-loading] {
292
292
  cursor: progress;
293
293
  }
294
294
 
@@ -298,7 +298,7 @@
298
298
  * The mark sits on the label's first line rather than on the middle of a
299
299
  * two-line item: the line box is the item's, and the box is one line tall.
300
300
  */
301
- [data-ui='action-sheet'] [data-part='icon'] {
301
+ [data-ui-action-sheet] [data-part-icon] {
302
302
  --slotted-icon-size: var(--_icon-size);
303
303
  --slotted-spinner-size: var(--_icon-size);
304
304
 
@@ -311,19 +311,19 @@
311
311
  justify-content: center;
312
312
  }
313
313
 
314
- [data-ui='action-sheet'] [data-part='icon'] > * {
314
+ [data-ui-action-sheet] [data-part-icon] > * {
315
315
  flex: none;
316
316
  font-size: var(--_icon-size);
317
317
  }
318
318
 
319
- [data-ui='action-sheet'] [data-part='label'] {
319
+ [data-ui-action-sheet] [data-part-label] {
320
320
  grid-column: 2;
321
321
  grid-row: 1;
322
322
  min-inline-size: 0;
323
323
  overflow-wrap: anywhere;
324
324
  }
325
325
 
326
- [data-ui='action-sheet'] [data-part='description'] {
326
+ [data-ui-action-sheet] [data-part-description] {
327
327
  color: var(--_muted);
328
328
  font-size: var(--slotted-font-size-sm, 0.8125rem);
329
329
  grid-column: 2;
@@ -333,7 +333,7 @@
333
333
  overflow-wrap: anywhere;
334
334
  }
335
335
 
336
- [data-ui='action-sheet'] [data-part='item'][data-disabled] > [data-part='description'] {
336
+ [data-ui-action-sheet] [data-part-item][data-disabled] > [data-part-description] {
337
337
  color: inherit;
338
338
  }
339
339
 
@@ -344,31 +344,31 @@
344
344
  * The tone paints the words, the mark and the highlight together; `danger`
345
345
  * is the destructive action.
346
346
  */
347
- [data-ui='action-sheet'] [data-part='item'][data-tone='accent'] {
347
+ [data-ui-action-sheet] [data-part-item][data-tone='accent'] {
348
348
  --_accent: var(--slotted-tone-accent-text);
349
349
  --_highlight: var(--slotted-tone-accent-surface);
350
350
  --_highlight-active: var(--slotted-tone-accent-subtle-active);
351
351
  }
352
352
 
353
- [data-ui='action-sheet'] [data-part='item'][data-tone='secondary'] {
353
+ [data-ui-action-sheet] [data-part-item][data-tone='secondary'] {
354
354
  --_accent: var(--slotted-tone-secondary-text);
355
355
  --_highlight: var(--slotted-tone-secondary-surface);
356
356
  --_highlight-active: var(--slotted-tone-secondary-subtle-active);
357
357
  }
358
358
 
359
- [data-ui='action-sheet'] [data-part='item'][data-tone='success'] {
359
+ [data-ui-action-sheet] [data-part-item][data-tone='success'] {
360
360
  --_accent: var(--slotted-tone-success-text);
361
361
  --_highlight: var(--slotted-tone-success-surface);
362
362
  --_highlight-active: var(--slotted-tone-success-subtle-active);
363
363
  }
364
364
 
365
- [data-ui='action-sheet'] [data-part='item'][data-tone='warning'] {
365
+ [data-ui-action-sheet] [data-part-item][data-tone='warning'] {
366
366
  --_accent: var(--slotted-tone-warning-text);
367
367
  --_highlight: var(--slotted-tone-warning-surface);
368
368
  --_highlight-active: var(--slotted-tone-warning-subtle-active);
369
369
  }
370
370
 
371
- [data-ui='action-sheet'] [data-part='item'][data-tone='danger'] {
371
+ [data-ui-action-sheet] [data-part-item][data-tone='danger'] {
372
372
  --_accent: var(--slotted-tone-danger-text);
373
373
  --_highlight: var(--slotted-tone-danger-surface);
374
374
  --_highlight-active: var(--slotted-tone-danger-subtle-active);
@@ -381,7 +381,7 @@
381
381
  * more action. It carries the bottom safe-area inset, which is where a
382
382
  * phone's home indicator sits.
383
383
  */
384
- [data-ui='action-sheet'] > [data-part='footer'] {
384
+ [data-ui-action-sheet] > [data-part-footer] {
385
385
  background: var(--slotted-action-sheet-footer-surface, var(--slotted-surface-sunken, Canvas));
386
386
  border-block-start: var(--_rule-size) solid var(--_rule);
387
387
  display: grid;
@@ -395,7 +395,7 @@
395
395
  * A button with a face, on the band: the one control of the sheet that is
396
396
  * not an item, and the one that always works — it is never disabled.
397
397
  */
398
- [data-ui='action-sheet'] [data-part='cancel'] {
398
+ [data-ui-action-sheet] [data-part-cancel] {
399
399
  appearance: none;
400
400
  background: var(--slotted-control-surface, ButtonFace);
401
401
  border: var(--slotted-control-border-width, 1px) solid
@@ -421,7 +421,7 @@
421
421
  }
422
422
 
423
423
  @media (hover: hover) {
424
- [data-ui='action-sheet'] [data-part='cancel']:hover:not(:disabled) {
424
+ [data-ui-action-sheet] [data-part-cancel]:hover:not(:disabled) {
425
425
  background: var(--slotted-tone-secondary-subtle-hover, ButtonFace);
426
426
  }
427
427
  }
@@ -430,13 +430,13 @@
430
430
  * `button`'s press: the face settles a hairline and gives up its lift. It is
431
431
  * instant, as a press is, and the ground eases back on release.
432
432
  */
433
- [data-ui='action-sheet'] [data-part='cancel']:active:not(:disabled) {
433
+ [data-ui-action-sheet] [data-part-cancel]:active:not(:disabled) {
434
434
  background: var(--slotted-tone-secondary-subtle-active, ButtonFace);
435
435
  box-shadow: none;
436
436
  translate: 0 var(--slotted-border-width-thin, 1px);
437
437
  }
438
438
 
439
- [data-ui='action-sheet'] [data-part='cancel']:focus-visible {
439
+ [data-ui-action-sheet] [data-part-cancel]:focus-visible {
440
440
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
441
441
  outline-offset: var(--slotted-focus-ring-offset, 2px);
442
442
  }
@@ -448,13 +448,13 @@
448
448
  * so the focused row would lose its highlight.
449
449
  */
450
450
  @media (forced-colors: active) {
451
- [data-ui='action-sheet'] [data-part='item']:focus {
451
+ [data-ui-action-sheet] [data-part-item]:focus {
452
452
  background-color: Highlight;
453
453
  color: HighlightText;
454
454
  forced-color-adjust: none;
455
455
  }
456
456
 
457
- [data-ui='action-sheet'] [data-part='item'][data-disabled]:focus {
457
+ [data-ui-action-sheet] [data-part-item][data-disabled]:focus {
458
458
  background-color: Highlight;
459
459
  color: GrayText;
460
460
  }