@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
@@ -76,6 +76,11 @@
76
76
  "--slotted-tone-danger-solid",
77
77
  "--slotted-tone-danger-surface",
78
78
  "--slotted-tone-danger-text",
79
+ "--slotted-tone-info-border",
80
+ "--slotted-tone-info-on-solid",
81
+ "--slotted-tone-info-solid",
82
+ "--slotted-tone-info-surface",
83
+ "--slotted-tone-info-text",
79
84
  "--slotted-tone-secondary-border",
80
85
  "--slotted-tone-secondary-on-solid",
81
86
  "--slotted-tone-secondary-solid",
@@ -39,7 +39,7 @@
39
39
  * The stylesheet's part in it is that no rule assumes a role: the same
40
40
  * picture is drawn whether a reader hears the words or reads them.
41
41
  */
42
- [data-ui='toast'][data-part='root'] {
42
+ [data-ui-toast][data-part-root] {
43
43
  /**
44
44
  * The distance from the edge of the screen, and the greatest width a
45
45
  * message is allowed. The width is the smaller of the two, so at 320
@@ -93,7 +93,7 @@
93
93
  * demonstrable on a documentation page: everything else about it is the
94
94
  * same, including the placement, which now names the edges of the panel.
95
95
  */
96
- [data-ui='toast'][data-part='root'][data-attach='inline'] {
96
+ [data-ui-toast][data-part-root][data-attach='inline'] {
97
97
  position: absolute;
98
98
  }
99
99
 
@@ -104,19 +104,19 @@
104
104
  * an Arabic one. Sonner's `bottom-right` is `bottom-right` in both.
105
105
  */
106
106
 
107
- [data-ui='toast'][data-part='root'][data-placement^='top'] {
107
+ [data-ui-toast][data-part-root][data-placement^='top'] {
108
108
  inset-block-start: var(--_offset);
109
109
  }
110
110
 
111
- [data-ui='toast'][data-part='root'][data-placement^='bottom'] {
111
+ [data-ui-toast][data-part-root][data-placement^='bottom'] {
112
112
  inset-block-end: var(--_offset);
113
113
  }
114
114
 
115
- [data-ui='toast'][data-part='root'][data-placement$='-start'] {
115
+ [data-ui-toast][data-part-root][data-placement$='-start'] {
116
116
  inset-inline-start: var(--_offset);
117
117
  }
118
118
 
119
- [data-ui='toast'][data-part='root'][data-placement$='-end'] {
119
+ [data-ui-toast][data-part-root][data-placement$='-end'] {
120
120
  inset-inline-end: var(--_offset);
121
121
  }
122
122
 
@@ -125,8 +125,8 @@
125
125
  * divide what is left. It is the one centring that needs no transform, so
126
126
  * the transform stays free for the enter, the exit and the swipe.
127
127
  */
128
- [data-ui='toast'][data-part='root'][data-placement='top'],
129
- [data-ui='toast'][data-part='root'][data-placement='bottom'] {
128
+ [data-ui-toast][data-part-root][data-placement='top'],
129
+ [data-ui-toast][data-part-root][data-placement='bottom'] {
130
130
  inset-inline: var(--_offset);
131
131
  margin-inline: auto;
132
132
  }
@@ -139,7 +139,7 @@
139
139
  * order, which puts the newest nearest the edge of the screen — where the
140
140
  * reader's eye already is — without moving it in the accessibility tree.
141
141
  */
142
- [data-ui='toast'] > [data-part='list'] {
142
+ [data-ui-toast] > [data-part-list] {
143
143
  display: flex;
144
144
  flex-direction: column;
145
145
  gap: var(--_gap);
@@ -149,7 +149,7 @@
149
149
  pointer-events: none;
150
150
  }
151
151
 
152
- [data-ui='toast'][data-placement^='bottom'] > [data-part='list'] {
152
+ [data-ui-toast][data-placement^='bottom'] > [data-part-list] {
153
153
  flex-direction: column-reverse;
154
154
  }
155
155
 
@@ -162,7 +162,7 @@
162
162
  * focus already inside a message can cause, so no press meant for the page
163
163
  * lands on an empty region.
164
164
  */
165
- [data-ui='toast'][data-expanded] > [data-part='list'] {
165
+ [data-ui-toast][data-expanded] > [data-part-list] {
166
166
  pointer-events: auto;
167
167
  }
168
168
 
@@ -172,7 +172,7 @@
172
172
  * the message away, with the actions under the words rather than beside
173
173
  * them so a second row exists only when there are actions to put in it.
174
174
  */
175
- [data-ui='toast'] > [data-part='list'] > [data-part='item'] {
175
+ [data-ui-toast] > [data-part-list] > [data-part-item] {
176
176
  /* The tone's five roles, defaulted to `accent`, restated by each tone
177
177
  below. Every one of them is a role the theme's contrast test measures. */
178
178
  --_solid: var(--slotted-tone-accent-solid);
@@ -302,11 +302,11 @@
302
302
  * shift is the same distance in the other direction rather than a second
303
303
  * number, so the two placements are one motion seen twice.
304
304
  */
305
- [data-ui='toast'][data-placement^='top'] > [data-part='list'] > [data-part='item'] {
305
+ [data-ui-toast][data-placement^='top'] > [data-part-list] > [data-part-item] {
306
306
  translate: 0 calc(-1 * var(--_enter-shift));
307
307
  }
308
308
 
309
- [data-ui='toast'] > [data-part='list'] > [data-part='item'][data-open] {
309
+ [data-ui-toast] > [data-part-list] > [data-part-item][data-open] {
310
310
  opacity: 1;
311
311
  translate: 0;
312
312
  transition:
@@ -325,7 +325,7 @@
325
325
  * is left, which is WCAG 2.2 SC 1.4.1 as well as a preference.
326
326
  */
327
327
 
328
- [data-ui='toast'] > [data-part='list'] > [data-part='item'][data-tone='accent'] {
328
+ [data-ui-toast] > [data-part-list] > [data-part-item][data-tone='accent'] {
329
329
  --_solid: var(--slotted-tone-accent-solid);
330
330
  --_on-solid: var(--slotted-tone-accent-on-solid);
331
331
  --_tone-surface: var(--slotted-tone-accent-surface);
@@ -333,7 +333,7 @@
333
333
  --_tone-text: var(--slotted-tone-accent-text);
334
334
  }
335
335
 
336
- [data-ui='toast'] > [data-part='list'] > [data-part='item'][data-tone='secondary'] {
336
+ [data-ui-toast] > [data-part-list] > [data-part-item][data-tone='secondary'] {
337
337
  --_solid: var(--slotted-tone-secondary-solid);
338
338
  --_on-solid: var(--slotted-tone-secondary-on-solid);
339
339
  --_tone-surface: var(--slotted-tone-secondary-surface);
@@ -341,7 +341,7 @@
341
341
  --_tone-text: var(--slotted-tone-secondary-text);
342
342
  }
343
343
 
344
- [data-ui='toast'] > [data-part='list'] > [data-part='item'][data-tone='success'] {
344
+ [data-ui-toast] > [data-part-list] > [data-part-item][data-tone='success'] {
345
345
  --_solid: var(--slotted-tone-success-solid);
346
346
  --_on-solid: var(--slotted-tone-success-on-solid);
347
347
  --_tone-surface: var(--slotted-tone-success-surface);
@@ -349,7 +349,15 @@
349
349
  --_tone-text: var(--slotted-tone-success-text);
350
350
  }
351
351
 
352
- [data-ui='toast'] > [data-part='list'] > [data-part='item'][data-tone='warning'] {
352
+ [data-ui-toast] > [data-part-list] > [data-part-item][data-tone='info'] {
353
+ --_solid: var(--slotted-tone-info-solid);
354
+ --_on-solid: var(--slotted-tone-info-on-solid);
355
+ --_tone-surface: var(--slotted-tone-info-surface);
356
+ --_tone-border: var(--slotted-tone-info-border);
357
+ --_tone-text: var(--slotted-tone-info-text);
358
+ }
359
+
360
+ [data-ui-toast] > [data-part-list] > [data-part-item][data-tone='warning'] {
353
361
  --_solid: var(--slotted-tone-warning-solid);
354
362
  --_on-solid: var(--slotted-tone-warning-on-solid);
355
363
  --_tone-surface: var(--slotted-tone-warning-surface);
@@ -357,7 +365,7 @@
357
365
  --_tone-text: var(--slotted-tone-warning-text);
358
366
  }
359
367
 
360
- [data-ui='toast'] > [data-part='list'] > [data-part='item'][data-tone='danger'] {
368
+ [data-ui-toast] > [data-part-list] > [data-part-item][data-tone='danger'] {
361
369
  --_solid: var(--slotted-tone-danger-solid);
362
370
  --_on-solid: var(--slotted-tone-danger-on-solid);
363
371
  --_tone-surface: var(--slotted-tone-danger-surface);
@@ -373,7 +381,7 @@
373
381
  * tone is in the mark and in nothing else, which is enough — it is the
374
382
  * silhouette that survives forced colours anyway.
375
383
  */
376
- [data-ui='toast'] > [data-part='list'] > [data-part='item'][data-variant='soft'] {
384
+ [data-ui-toast] > [data-part-list] > [data-part-item][data-variant='soft'] {
377
385
  --_ground: var(--_tone-surface);
378
386
  --_edge: var(--_tone-border);
379
387
  /* The tone's own text on the tone's own surface is the pair the theme
@@ -383,7 +391,7 @@
383
391
  --_ink-muted: var(--_tone-text);
384
392
  }
385
393
 
386
- [data-ui='toast'] > [data-part='list'] > [data-part='item'][data-variant='solid'] {
394
+ [data-ui-toast] > [data-part-list] > [data-part-item][data-variant='solid'] {
387
395
  --_ground: var(--_solid);
388
396
  --_edge: var(--_solid);
389
397
  --_ink: var(--_on-solid);
@@ -426,7 +434,7 @@
426
434
  * message waiting on a promise with no mark of its own draws none, and the
427
435
  * box stays, so the layout does not jump when the spinner becomes a tick.
428
436
  */
429
- [data-ui='toast'] > [data-part='list'] > [data-part='item'] > [data-part='icon'] {
437
+ [data-ui-toast] > [data-part-list] > [data-part-item] > [data-part-icon] {
430
438
  --slotted-icon-size: calc(var(--_mark-size) * 12 / 11);
431
439
  /**
432
440
  * The loading mark is `progress-indicator`'s contained loader, and these
@@ -466,7 +474,7 @@
466
474
  * to be clamped too, or an unbreakable word in the title sizes the track to
467
475
  * itself and the words run past the box that holds them.
468
476
  */
469
- [data-ui='toast'] > [data-part='list'] > [data-part='item'] > [data-part='content'] {
477
+ [data-ui-toast] > [data-part-list] > [data-part-item] > [data-part-content] {
470
478
  /* The other half of the mark's baseline group: see the mark above. */
471
479
  align-self: baseline;
472
480
  display: grid;
@@ -489,11 +497,7 @@
489
497
  * `Zwischenspeicherung` set the track to 183 pixels inside a box of 155, and
490
498
  * the words stood outside the message in every scheme.
491
499
  */
492
- [data-ui='toast']
493
- > [data-part='list']
494
- > [data-part='item']
495
- > [data-part='content']
496
- > [data-part='title'] {
500
+ [data-ui-toast] > [data-part-list] > [data-part-item] > [data-part-content] > [data-part-title] {
497
501
  font-family: var(
498
502
  --slotted-toast-title-font-family,
499
503
  var(
@@ -507,11 +511,11 @@
507
511
  overflow-wrap: anywhere;
508
512
  }
509
513
 
510
- [data-ui='toast']
511
- > [data-part='list']
512
- > [data-part='item']
513
- > [data-part='content']
514
- > [data-part='description'] {
514
+ [data-ui-toast]
515
+ > [data-part-list]
516
+ > [data-part-item]
517
+ > [data-part-content]
518
+ > [data-part-description] {
515
519
  color: var(--_ink-muted);
516
520
  margin: 0;
517
521
  min-inline-size: 0;
@@ -525,7 +529,7 @@
525
529
  * the consumer's own buttons: `button` already owns what a button is, and
526
530
  * naming one of two controls `cancel` would privilege one arrangement.
527
531
  */
528
- [data-ui='toast'] > [data-part='list'] > [data-part='item'] > [data-part='actions'] {
532
+ [data-ui-toast] > [data-part-list] > [data-part-item] > [data-part-actions] {
529
533
  align-items: center;
530
534
  display: flex;
531
535
  flex-wrap: wrap;
@@ -543,7 +547,7 @@
543
547
  * margin box is exactly one line and the inset above the message equals the
544
548
  * inset below.
545
549
  */
546
- [data-ui='toast'] > [data-part='list'] > [data-part='item'] > [data-part='close'] {
550
+ [data-ui-toast] > [data-part-list] > [data-part-item] > [data-part-close] {
547
551
  /* The cross is the binding's `Glyph` in an `icon` box at the glyph size
548
552
  the formula for this box reads. */
549
553
  --slotted-icon-size: var(--_glyph-size);
@@ -579,11 +583,11 @@
579
583
 
580
584
  /* `:enabled` is the guard the shared state test requires, and the reason it
581
585
  exists: a control the browser has already refused answers no pointer. */
582
- [data-ui='toast'] > [data-part='list'] > [data-part='item'] > [data-part='close']:enabled:hover {
586
+ [data-ui-toast] > [data-part-list] > [data-part-item] > [data-part-close]:enabled:hover {
583
587
  background-color: var(--_state-hover);
584
588
  }
585
589
 
586
- [data-ui='toast'] > [data-part='list'] > [data-part='item'] > [data-part='close']:enabled:active {
590
+ [data-ui-toast] > [data-part-list] > [data-part-item] > [data-part-close]:enabled:active {
587
591
  background-color: var(--_state-active);
588
592
  }
589
593
 
@@ -592,11 +596,11 @@
592
596
  44 pixels, and the ground and the ring stay square. The message clips its
593
597
  overflow, so the target ends at the message's padding edge. */
594
598
  @media (pointer: coarse) {
595
- [data-ui='toast'] > [data-part='list'] > [data-part='item'] > [data-part='close'] {
599
+ [data-ui-toast] > [data-part-list] > [data-part-item] > [data-part-close] {
596
600
  position: relative;
597
601
  }
598
602
 
599
- [data-ui='toast'] > [data-part='list'] > [data-part='item'] > [data-part='close']::after {
603
+ [data-ui-toast] > [data-part-list] > [data-part-item] > [data-part-close]::after {
600
604
  content: '';
601
605
  inset: min(0px, calc((100% - var(--slotted-target-comfortable, 44px)) / 2));
602
606
  position: absolute;
@@ -611,8 +615,8 @@
611
615
  * it exists because `F6` sends the keyboard here — a message the reader
612
616
  * cannot see they have arrived at is a message they cannot act on.
613
617
  */
614
- [data-ui='toast'] > [data-part='list'] > [data-part='item'] > [data-part='close']:focus-visible,
615
- [data-ui='toast'] > [data-part='list'] > [data-part='item']:focus-visible {
618
+ [data-ui-toast] > [data-part-list] > [data-part-item] > [data-part-close]:focus-visible,
619
+ [data-ui-toast] > [data-part-list] > [data-part-item]:focus-visible {
616
620
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
617
621
  }
618
622
 
@@ -621,7 +625,7 @@
621
625
  * the remaining-time bar has to stop at the rounded corner — and a ring
622
626
  * outside a control at that corner would be cut in half by it.
623
627
  */
624
- [data-ui='toast'] > [data-part='list'] > [data-part='item'] > [data-part='close']:focus-visible {
628
+ [data-ui-toast] > [data-part-list] > [data-part-item] > [data-part-close]:focus-visible {
625
629
  outline-offset: calc(-1 * var(--slotted-focus-ring-width, 2px));
626
630
  }
627
631
 
@@ -630,7 +634,7 @@
630
634
  * of the screen, and read on the box itself the ring was a thick blue border
631
635
  * rather than a ring around a card.
632
636
  */
633
- [data-ui='toast'] > [data-part='list'] > [data-part='item']:focus-visible {
637
+ [data-ui-toast] > [data-part-list] > [data-part-item]:focus-visible {
634
638
  outline-offset: var(--slotted-focus-ring-offset, 2px);
635
639
  }
636
640
 
@@ -643,10 +647,10 @@
643
647
  * fill, so a solid message adds a halo one ring-width wide just inside it,
644
648
  * in the ink its own words are in, for the ring to be read against.
645
649
  */
646
- [data-ui='toast']
647
- > [data-part='list']
648
- > [data-part='item'][data-variant='solid']
649
- > [data-part='close']:focus-visible {
650
+ [data-ui-toast]
651
+ > [data-part-list]
652
+ > [data-part-item][data-variant='solid']
653
+ > [data-part-close]:focus-visible {
650
654
  box-shadow: inset 0 0 0 calc(2 * var(--slotted-focus-ring-width, 2px)) var(--_on-solid);
651
655
  }
652
656
 
@@ -664,7 +668,7 @@
664
668
  * from the inline start in every writing direction with no origin to mirror.
665
669
  * The box is positioned, so nothing it does moves a word.
666
670
  */
667
- [data-ui='toast'] > [data-part='list'] > [data-part='item'] > [data-part='progress'] {
671
+ [data-ui-toast] > [data-part-list] > [data-part-item] > [data-part-progress] {
668
672
  animation-duration: var(--slotted-toast-duration, var(--slotted-duration-long));
669
673
  animation-fill-mode: forwards;
670
674
  animation-name: slotted-toast-countdown;
@@ -688,10 +692,10 @@
688
692
  * the one ink the contrast test holds against it, held back so it reads as a
689
693
  * measure rather than as a second border.
690
694
  */
691
- [data-ui='toast']
692
- > [data-part='list']
693
- > [data-part='item'][data-variant='solid']
694
- > [data-part='progress'] {
695
+ [data-ui-toast]
696
+ > [data-part-list]
697
+ > [data-part-item][data-variant='solid']
698
+ > [data-part-progress] {
695
699
  background-color: var(--_on-solid);
696
700
  opacity: 0.7;
697
701
  }
@@ -730,12 +734,12 @@
730
734
  * back in opacity, and the front one, which is the one being read, is at
731
735
  * full strength.
732
736
  */
733
- [data-ui='toast'][data-stacking='stack'] > [data-part='list'] {
737
+ [data-ui-toast][data-stacking='stack'] > [data-part-list] {
734
738
  display: block;
735
739
  position: relative;
736
740
  }
737
741
 
738
- [data-ui='toast'][data-stacking='stack'] > [data-part='list'] > [data-part='item'] {
742
+ [data-ui-toast][data-stacking='stack'] > [data-part-list] > [data-part-item] {
739
743
  block-size: var(--slotted-toast-front-height, auto);
740
744
  inset-inline: 0;
741
745
  position: absolute;
@@ -756,20 +760,20 @@
756
760
  * everything behind it share one strength: below that the pile is a stack of
757
761
  * ghosts, and only the front two edges are showing anyway.
758
762
  */
759
- [data-ui='toast'][data-stacking='stack'] > [data-part='list'] > [data-part='item'][data-open] {
763
+ [data-ui-toast][data-stacking='stack'] > [data-part-list] > [data-part-item][data-open] {
760
764
  opacity: calc(1 - min(var(--slotted-toast-index, 0), 2) * var(--_stack-fade));
761
765
  }
762
766
 
763
- [data-ui='toast'][data-stacking='stack'][data-placement^='bottom']
764
- > [data-part='list']
765
- > [data-part='item'] {
767
+ [data-ui-toast][data-stacking='stack'][data-placement^='bottom']
768
+ > [data-part-list]
769
+ > [data-part-item] {
766
770
  inset-block-end: 0;
767
771
  translate: 0 calc(-1 * var(--slotted-toast-index, 0) * var(--_stack-step));
768
772
  }
769
773
 
770
- [data-ui='toast'][data-stacking='stack'][data-placement^='top']
771
- > [data-part='list']
772
- > [data-part='item'] {
774
+ [data-ui-toast][data-stacking='stack'][data-placement^='top']
775
+ > [data-part-list]
776
+ > [data-part-item] {
773
777
  inset-block-start: 0;
774
778
  translate: 0 calc(var(--slotted-toast-index, 0) * var(--_stack-step));
775
779
  }
@@ -779,9 +783,7 @@
779
783
  * column, and the gap between two of them is the region's own gap — the
780
784
  * offset script writes already carries it.
781
785
  */
782
- [data-ui='toast'][data-stacking='stack'][data-expanded]
783
- > [data-part='list']
784
- > [data-part='item'] {
786
+ [data-ui-toast][data-stacking='stack'][data-expanded] > [data-part-list] > [data-part-item] {
785
787
  block-size: var(--slotted-toast-height, auto);
786
788
  }
787
789
 
@@ -793,25 +795,25 @@
793
795
  * messages hang from the list's edge at `placement`, so the list grows away
794
796
  * from that edge and nothing it holds moves.
795
797
  */
796
- [data-ui='toast'][data-stacking='stack'][data-expanded] > [data-part='list'] {
798
+ [data-ui-toast][data-stacking='stack'][data-expanded] > [data-part-list] {
797
799
  block-size: var(--slotted-toast-stack-height, auto);
798
800
  }
799
801
 
800
- [data-ui='toast'][data-stacking='stack'][data-expanded]
801
- > [data-part='list']
802
- > [data-part='item'][data-open] {
802
+ [data-ui-toast][data-stacking='stack'][data-expanded]
803
+ > [data-part-list]
804
+ > [data-part-item][data-open] {
803
805
  opacity: 1;
804
806
  }
805
807
 
806
- [data-ui='toast'][data-stacking='stack'][data-expanded][data-placement^='bottom']
807
- > [data-part='list']
808
- > [data-part='item'] {
808
+ [data-ui-toast][data-stacking='stack'][data-expanded][data-placement^='bottom']
809
+ > [data-part-list]
810
+ > [data-part-item] {
809
811
  translate: 0 calc(-1 * var(--slotted-toast-stack-offset, 0px));
810
812
  }
811
813
 
812
- [data-ui='toast'][data-stacking='stack'][data-expanded][data-placement^='top']
813
- > [data-part='list']
814
- > [data-part='item'] {
814
+ [data-ui-toast][data-stacking='stack'][data-expanded][data-placement^='top']
815
+ > [data-part-list]
816
+ > [data-part-item] {
815
817
  translate: 0 var(--slotted-toast-stack-offset, 0px);
816
818
  }
817
819
 
@@ -821,11 +823,11 @@
821
823
  * `min()` is what turns an index into that rule without a rule per depth —
822
824
  * the front message resolves to one and every other to zero.
823
825
  */
824
- [data-ui='toast'][data-stacking='stack'] > [data-part='list'] > [data-part='item'] > * {
826
+ [data-ui-toast][data-stacking='stack'] > [data-part-list] > [data-part-item] > * {
825
827
  transition: opacity var(--slotted-duration-medium) var(--slotted-easing-standard);
826
828
  }
827
829
 
828
- [data-ui='toast'][data-stacking='stack']:not([data-expanded]) [data-part='item'] > * {
830
+ [data-ui-toast][data-stacking='stack']:not([data-expanded]) [data-part-item] > * {
829
831
  opacity: calc(1 - min(1, var(--slotted-toast-index, 0)));
830
832
  }
831
833
 
@@ -837,7 +839,7 @@
837
839
  * message follows it exactly, with no transition in the way: a drag that
838
840
  * lags the finger reads as a stuck interface.
839
841
  */
840
- [data-ui='toast'] > [data-part='list'] > [data-part='item'][data-dragging] {
842
+ [data-ui-toast] > [data-part-list] > [data-part-item][data-dragging] {
841
843
  cursor: grabbing;
842
844
  transition: none;
843
845
  translate: var(--slotted-toast-swipe-x, 0px) var(--slotted-toast-swipe-y, 0px);
@@ -846,7 +848,7 @@
846
848
  user-select: none;
847
849
  }
848
850
 
849
- [data-ui='toast'][data-swipe='true'] > [data-part='list'] > [data-part='item'] {
851
+ [data-ui-toast][data-swipe='true'] > [data-part-list] > [data-part-item] {
850
852
  touch-action: none;
851
853
  }
852
854
 
@@ -859,7 +861,7 @@
859
861
  * container condition.
860
862
  */
861
863
  @container slotted-toast (max-width: 20rem) {
862
- [data-ui='toast'] > [data-part='list'] > [data-part='item'] {
864
+ [data-ui-toast] > [data-part-list] > [data-part-item] {
863
865
  --_inset-block: var(--slotted-toast-padding-block, var(--slotted-space-4, 0.5rem));
864
866
  --_inset-inline: var(--slotted-toast-padding-inline, var(--slotted-space-5, 0.75rem));
865
867
  }
@@ -870,7 +872,7 @@
870
872
  * the control, and `button` already ships `fullWidth` for a consumer who
871
873
  * wants otherwise.
872
874
  */
873
- [data-ui='toast'] > [data-part='list'] > [data-part='item'] > [data-part='actions'] {
875
+ [data-ui-toast] > [data-part-list] > [data-part-item] > [data-part-actions] {
874
876
  align-items: flex-start;
875
877
  flex-direction: column;
876
878
  }
@@ -885,11 +887,11 @@
885
887
  * own fill and a transparent border is not a colour the system remaps.
886
888
  */
887
889
  @media (forced-colors: active) {
888
- [data-ui='toast'] > [data-part='list'] > [data-part='item'] {
890
+ [data-ui-toast] > [data-part-list] > [data-part-item] {
889
891
  border-color: CanvasText;
890
892
  }
891
893
 
892
- [data-ui='toast'] > [data-part='list'] > [data-part='item'] > [data-part='icon'] {
894
+ [data-ui-toast] > [data-part-list] > [data-part-item] > [data-part-icon] {
893
895
  color: CanvasText;
894
896
  }
895
897
 
@@ -897,15 +899,12 @@
897
899
  * The control's glyph is stroked in `currentcolor`, so giving the control
898
900
  * a system colour repaints it, and the mark's slot the same.
899
901
  */
900
- [data-ui='toast'] > [data-part='list'] > [data-part='item'] > [data-part='close'] {
902
+ [data-ui-toast] > [data-part-list] > [data-part-item] > [data-part-close] {
901
903
  color: CanvasText;
902
904
  }
903
905
 
904
- [data-ui='toast'] > [data-part='list'] > [data-part='item'] > [data-part='close']:enabled:hover,
905
- [data-ui='toast']
906
- > [data-part='list']
907
- > [data-part='item']
908
- > [data-part='close']:enabled:active {
906
+ [data-ui-toast] > [data-part-list] > [data-part-item] > [data-part-close]:enabled:hover,
907
+ [data-ui-toast] > [data-part-list] > [data-part-item] > [data-part-close]:enabled:active {
909
908
  background-color: Highlight;
910
909
  color: HighlightText;
911
910
  }
@@ -914,7 +913,7 @@
914
913
  * A bar of system ink under every message, shortening, is a moving line
915
914
  * with no colour to say what it belongs to. The message still expires.
916
915
  */
917
- [data-ui='toast'] > [data-part='list'] > [data-part='item'] > [data-part='progress'] {
916
+ [data-ui-toast] > [data-part-list] > [data-part-item] > [data-part-progress] {
918
917
  background-color: CanvasText;
919
918
  opacity: 1;
920
919
  }
@@ -935,7 +934,7 @@
935
934
  * reached over the declared one, and the `timing` scene froze at 80 per cent.
936
935
  */
937
936
  @media (prefers-reduced-motion: reduce) {
938
- [data-ui='toast'] > [data-part='list'] > [data-part='item'] > [data-part='progress'] {
937
+ [data-ui-toast] > [data-part-list] > [data-part-item] > [data-part-progress] {
939
938
  animation-name: none;
940
939
  inline-size: 100%;
941
940
  }
@@ -71,6 +71,11 @@
71
71
  "--slotted-tone-danger-solid",
72
72
  "--slotted-tone-danger-surface",
73
73
  "--slotted-tone-danger-text",
74
+ "--slotted-tone-info-border",
75
+ "--slotted-tone-info-on-solid",
76
+ "--slotted-tone-info-solid",
77
+ "--slotted-tone-info-surface",
78
+ "--slotted-tone-info-text",
74
79
  "--slotted-tone-secondary-border",
75
80
  "--slotted-tone-secondary-on-solid",
76
81
  "--slotted-tone-secondary-solid",