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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/package.json +1 -1
  2. package/src/accordion/accordion.css +10 -10
  3. package/src/action-bar/action-bar.css +31 -32
  4. package/src/action-sheet/action-sheet.css +36 -36
  5. package/src/alert/alert.css +35 -35
  6. package/src/app-shell/app-shell.css +280 -299
  7. package/src/aspect-ratio/aspect-ratio.css +9 -9
  8. package/src/attachment/attachment.css +91 -99
  9. package/src/avatar/avatar.css +41 -41
  10. package/src/avatar-group/avatar-group.css +21 -22
  11. package/src/badge/badge.css +37 -37
  12. package/src/breadcrumb/breadcrumb.css +37 -37
  13. package/src/button/button.css +88 -69
  14. package/src/button-group/button-group.css +69 -73
  15. package/src/calendar/calendar.css +93 -103
  16. package/src/card/card.css +54 -61
  17. package/src/carousel/carousel.css +150 -161
  18. package/src/cascader/cascader.css +147 -151
  19. package/src/chart/chart.css +225 -240
  20. package/src/checkbox/checkbox.css +119 -124
  21. package/src/checkbox-group/checkbox-group.css +7 -7
  22. package/src/code-block/code-block.css +81 -85
  23. package/src/collapsible/collapsible.css +69 -76
  24. package/src/color-picker/color-picker.css +83 -91
  25. package/src/column-manager/column-manager.css +106 -114
  26. package/src/combobox/combobox.css +99 -101
  27. package/src/command-palette/command-palette.css +84 -90
  28. package/src/container/container.css +24 -24
  29. package/src/context-menu/context-menu.css +8 -8
  30. package/src/currency-field/currency-field.css +99 -104
  31. package/src/dashboard-grid/dashboard-grid.css +104 -107
  32. package/src/data-grid/data-grid.css +458 -456
  33. package/src/data-grid/data-grid.tokens.json +2 -0
  34. package/src/data-list/data-list.css +67 -69
  35. package/src/date-field/date-field.css +50 -50
  36. package/src/date-picker/date-picker.css +40 -42
  37. package/src/date-range-picker/date-range-picker.css +114 -118
  38. package/src/datetime-field/datetime-field.css +73 -78
  39. package/src/datetime-picker/datetime-picker.css +61 -63
  40. package/src/datetime-range-picker/datetime-range-picker.css +149 -156
  41. package/src/description-list/description-list.css +61 -64
  42. package/src/detail-panel/detail-panel.css +70 -70
  43. package/src/dialog/dialog.css +300 -148
  44. package/src/divider/divider.css +18 -18
  45. package/src/drawer/drawer.css +186 -209
  46. package/src/entity-picker/entity-picker.css +220 -239
  47. package/src/event-calendar/event-calendar.css +343 -385
  48. package/src/field/field.css +74 -78
  49. package/src/field-group/field-group.css +22 -25
  50. package/src/filter-bar/filter-bar.css +193 -209
  51. package/src/form/form.css +21 -24
  52. package/src/fullscreen/fullscreen.css +24 -25
  53. package/src/grid/grid.css +28 -28
  54. package/src/highlight/highlight.css +6 -6
  55. package/src/hover-card/hover-card.css +6 -6
  56. package/src/icon/icon.css +15 -15
  57. package/src/image/image.css +39 -39
  58. package/src/import-export-center/import-export-center.css +135 -156
  59. package/src/inline/inline.css +27 -27
  60. package/src/inline-message/inline-message.css +28 -28
  61. package/src/kbd/kbd.css +26 -26
  62. package/src/link/link.css +15 -15
  63. package/src/list/list.css +20 -20
  64. package/src/list-item/list-item.css +66 -66
  65. package/src/listbox/listbox.css +56 -59
  66. package/src/loading-overlay/loading-overlay.css +75 -92
  67. package/src/markdown/markdown.css +17 -17
  68. package/src/menu/menu.css +63 -65
  69. package/src/menubar/menubar.css +13 -13
  70. package/src/message/message.css +174 -202
  71. package/src/message-scroller/message-scroller.css +41 -42
  72. package/src/multi-select/multi-select.css +131 -137
  73. package/src/navigation-menu/navigation-menu.css +167 -188
  74. package/src/notification-center/notification-center.css +134 -148
  75. package/src/number-field/number-field.css +76 -81
  76. package/src/otp-input/otp-input.css +48 -48
  77. package/src/page/page.css +23 -23
  78. package/src/page-header/page-header.css +219 -280
  79. package/src/pagination/pagination.css +68 -72
  80. package/src/popover/popover.css +40 -49
  81. package/src/progress-indicator/progress-indicator.css +85 -90
  82. package/src/prompt-composer/prompt-composer.css +94 -99
  83. package/src/prose/prose.css +71 -75
  84. package/src/radio-group/radio-group.css +98 -103
  85. package/src/rating/rating.css +132 -132
  86. package/src/result-state/result-state.css +74 -77
  87. package/src/saved-views/saved-views.css +41 -47
  88. package/src/scroll-area/scroll-area.css +32 -35
  89. package/src/section/section.css +16 -16
  90. package/src/segmented-control/segmented-control.css +77 -79
  91. package/src/select/select.css +113 -115
  92. package/src/side-navigation/side-navigation.css +170 -180
  93. package/src/skeleton/skeleton.css +47 -48
  94. package/src/slider/slider.css +86 -88
  95. package/src/sparkline/sparkline.css +32 -32
  96. package/src/spinner/spinner.css +4 -4
  97. package/src/split-button/split-button.css +26 -31
  98. package/src/splitter/splitter.css +35 -35
  99. package/src/stack/stack.css +24 -24
  100. package/src/stat-card/stat-card.css +102 -103
  101. package/src/status-indicator/status-indicator.css +28 -28
  102. package/src/stepper/stepper.css +58 -62
  103. package/src/switch/switch.css +86 -92
  104. package/src/table/table.css +189 -198
  105. package/src/table-of-contents/table-of-contents.css +51 -54
  106. package/src/tabs/tabs.css +143 -162
  107. package/src/tag/tag.css +67 -71
  108. package/src/tags-input/tags-input.css +124 -74
  109. package/src/tags-input/tags-input.tokens.json +6 -1
  110. package/src/text-field/text-field.css +108 -126
  111. package/src/textarea/textarea.css +26 -26
  112. package/src/time-field/time-field.css +67 -67
  113. package/src/time-picker/time-picker.css +56 -58
  114. package/src/time-range-picker/time-range-picker.css +126 -133
  115. package/src/timeline/timeline.css +244 -266
  116. package/src/toast/toast.css +81 -90
  117. package/src/toggle/toggle.css +29 -33
  118. package/src/toggle-group/toggle-group.css +67 -71
  119. package/src/toolbar/toolbar.css +30 -35
  120. package/src/tooltip/tooltip.css +26 -26
  121. package/src/top-navigation/top-navigation.css +243 -259
  122. package/src/tour/tour.css +51 -60
  123. package/src/transfer/transfer.css +160 -164
  124. package/src/tree/tree.css +103 -111
  125. package/src/typography/typography.css +36 -36
  126. package/src/upload/upload.css +224 -224
  127. package/src/visually-hidden/visually-hidden.css +1 -1
  128. package/src/wizard/wizard.css +185 -197
@@ -26,7 +26,7 @@
26
26
  * the result-state inside are theirs, reached with child combinators so a
27
27
  * `title`, an `actions` or a `description` of theirs is never restyled.
28
28
  */
29
- [data-ui='notification-center'] {
29
+ [data-ui-notification-center] {
30
30
  --_text: var(--slotted-text, CanvasText);
31
31
  --_muted: var(--slotted-text-muted, GrayText);
32
32
  --_rule: var(--slotted-notification-center-border, var(--slotted-border-subtle, ButtonBorder));
@@ -128,7 +128,7 @@
128
128
  * would collapse to nothing; `sm` states a floor, capped by the viewport
129
129
  * for a phone, and `100%` keeps it filling a host that has a width.
130
130
  */
131
- [data-ui='notification-center'][data-size='sm'] {
131
+ [data-ui-notification-center][data-size='sm'] {
132
132
  min-inline-size: var(
133
133
  --slotted-notification-center-min-inline-size-sm,
134
134
  min(22rem, calc(100vw - var(--slotted-space-8, 2rem)))
@@ -165,7 +165,7 @@
165
165
  * The title pushes the rest to the end; a control that wraps lands at the
166
166
  * end of its own line, under the one before it, not at the start.
167
167
  */
168
- [data-ui='notification-center'] > [data-part='header'] {
168
+ [data-ui-notification-center] > [data-part-header] {
169
169
  align-items: center;
170
170
  border-block-end: var(--_rule-size) solid var(--_rule);
171
171
  display: flex;
@@ -177,7 +177,7 @@
177
177
  padding-inline: var(--_inset-inline);
178
178
  }
179
179
 
180
- [data-ui='notification-center'] > [data-part='header'] > [data-part='title'] {
180
+ [data-ui-notification-center] > [data-part-header] > [data-part-title] {
181
181
  align-items: center;
182
182
  color: var(--_text);
183
183
  display: inline-flex;
@@ -203,7 +203,7 @@
203
203
  * is what waits.
204
204
  */
205
205
  /** One measure for both dimensions: a single digit is a circle, two digits a pill. */
206
- [data-ui='notification-center'] [data-part='count'] {
206
+ [data-ui-notification-center] [data-part-count] {
207
207
  align-items: center;
208
208
  background-color: var(--slotted-surface-sunken, Canvas);
209
209
  block-size: var(--_count-box);
@@ -223,21 +223,18 @@
223
223
  padding-inline: var(--slotted-space-2, 0.25rem);
224
224
  }
225
225
 
226
- [data-ui='notification-center']
227
- > [data-part='header']
228
- > [data-part='title']
229
- > [data-part='count'] {
226
+ [data-ui-notification-center] > [data-part-header] > [data-part-title] > [data-part-count] {
230
227
  background-color: var(--slotted-tone-accent-surface, Canvas);
231
228
  color: var(--slotted-tone-accent-text, Highlight);
232
229
  }
233
230
 
234
231
  /** The slot a Button sits in, pushed to the end of the row; the consumer's actions after it. */
235
- [data-ui='notification-center'] > [data-part='header'] > [data-part='mark-all'] {
232
+ [data-ui-notification-center] > [data-part-header] > [data-part-mark-all] {
236
233
  display: inline-flex;
237
234
  }
238
235
 
239
236
  /** The consumer's controls read at the row's meta size: a link beside a small button, not beside the title. */
240
- [data-ui='notification-center'] > [data-part='header'] > [data-part='actions'] {
237
+ [data-ui-notification-center] > [data-part-header] > [data-part-actions] {
241
238
  align-items: center;
242
239
  display: inline-flex;
243
240
  font-size: var(--_meta-size);
@@ -251,7 +248,7 @@
251
248
  * The strip sits on the header's rule, so the tabs family's own track is
252
249
  * off (`track="none"`) and the marker lands on the line the header drew.
253
250
  */
254
- [data-ui='notification-center'] > [data-part='views'] {
251
+ [data-ui-notification-center] > [data-part-views] {
255
252
  border-block-end: var(--_rule-size) solid var(--_rule);
256
253
  min-inline-size: 0;
257
254
  padding-inline: var(--_inset-inline);
@@ -265,8 +262,8 @@
265
262
  * the idiom `timeline` set for the same two controls; `fresh` in the accent
266
263
  * pair so it reads as something new, `more` in the secondary.
267
264
  */
268
- [data-ui='notification-center'] > [data-part='fresh'],
269
- [data-ui='notification-center'] > button[data-part='more'] {
265
+ [data-ui-notification-center] > [data-part-fresh],
266
+ [data-ui-notification-center] > button[data-part-more] {
270
267
  align-items: center;
271
268
  appearance: none;
272
269
  background-color: var(--_ground);
@@ -292,35 +289,35 @@
292
289
  color var(--_duration) var(--_easing);
293
290
  }
294
291
 
295
- [data-ui='notification-center'] > [data-part='fresh'] {
292
+ [data-ui-notification-center] > [data-part-fresh] {
296
293
  background-color: var(--slotted-tone-accent-surface, Canvas);
297
294
  border-color: var(--slotted-tone-accent-border, Highlight);
298
295
  color: var(--slotted-tone-accent-text, Highlight);
299
296
  }
300
297
 
301
- [data-ui='notification-center'] > [data-part='fresh']:enabled:hover {
298
+ [data-ui-notification-center] > [data-part-fresh]:enabled:hover {
302
299
  background-color: var(--slotted-tone-accent-subtle-hover, Canvas);
303
300
  }
304
301
 
305
- [data-ui='notification-center'] > [data-part='fresh']:enabled:active {
302
+ [data-ui-notification-center] > [data-part-fresh]:enabled:active {
306
303
  background-color: var(--slotted-tone-accent-subtle-active, Canvas);
307
304
  }
308
305
 
309
- [data-ui='notification-center'] > button[data-part='more']:enabled:hover {
306
+ [data-ui-notification-center] > button[data-part-more]:enabled:hover {
310
307
  background-color: var(--_hover);
311
308
  }
312
309
 
313
- [data-ui='notification-center'] > button[data-part='more']:enabled:active {
310
+ [data-ui-notification-center] > button[data-part-more]:enabled:active {
314
311
  background-color: var(--_active);
315
312
  }
316
313
 
317
- [data-ui='notification-center'] > button[data-part='more']:disabled {
314
+ [data-ui-notification-center] > button[data-part-more]:disabled {
318
315
  color: var(--slotted-disabled-foreground, GrayText);
319
316
  cursor: default;
320
317
  }
321
318
 
322
319
  /** Under growing=scroll the sentinel is a box the observer watches, and it says it is waiting. */
323
- [data-ui='notification-center'] > div[data-part='more'] {
320
+ [data-ui-notification-center] > div[data-part-more] {
324
321
  color: var(--_muted);
325
322
  font-size: var(--_meta-size);
326
323
  line-height: var(--_meta-line-height);
@@ -330,8 +327,8 @@
330
327
  text-align: center;
331
328
  }
332
329
 
333
- [data-ui='notification-center'] > [data-part='fresh']:focus-visible,
334
- [data-ui='notification-center'] > button[data-part='more']:focus-visible {
330
+ [data-ui-notification-center] > [data-part-fresh]:focus-visible,
331
+ [data-ui-notification-center] > button[data-part-more]:focus-visible {
335
332
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
336
333
  outline-offset: var(--slotted-focus-ring-offset, 2px);
337
334
  }
@@ -347,7 +344,7 @@
347
344
  * is `scroll-area`'s: a reserved gutter so the rows do not move when the
348
345
  * feed grows past the panel, the thin platform bar, the family's ink on it.
349
346
  */
350
- [data-ui='notification-center'] > [data-part='feed'] {
347
+ [data-ui-notification-center] > [data-part-feed] {
351
348
  display: flex;
352
349
  flex: 1 1 auto;
353
350
  flex-direction: column;
@@ -361,17 +358,17 @@
361
358
  }
362
359
 
363
360
  /** The footer draws its own rule above, so the last row gives up the one below it: one seam, not two. */
364
- [data-ui='notification-center']
365
- > [data-part='feed']:has(+ [data-part='footer'])
366
- > [data-part='item']:last-child,
367
- [data-ui='notification-center']
368
- > [data-part='feed']:has(+ [data-part='footer'])
369
- > [data-part='group']:last-child
370
- > [data-part='item']:last-child {
361
+ [data-ui-notification-center]
362
+ > [data-part-feed]:has(+ [data-part-footer])
363
+ > [data-part-item]:last-child,
364
+ [data-ui-notification-center]
365
+ > [data-part-feed]:has(+ [data-part-footer])
366
+ > [data-part-group]:last-child
367
+ > [data-part-item]:last-child {
371
368
  border-block-end: 0;
372
369
  }
373
370
 
374
- [data-ui='notification-center'] > [data-part='feed'] > [data-part='group'] {
371
+ [data-ui-notification-center] > [data-part-feed] > [data-part-group] {
375
372
  display: flex;
376
373
  flex-direction: column;
377
374
  min-inline-size: 0;
@@ -381,10 +378,7 @@
381
378
  * A group's heading: an overline in the muted text, on the feed's inset, so
382
379
  * the groups read as one list with dates between rather than as boxes.
383
380
  */
384
- [data-ui='notification-center']
385
- > [data-part='feed']
386
- > [data-part='group']
387
- > [data-part='group-label'] {
381
+ [data-ui-notification-center] > [data-part-feed] > [data-part-group] > [data-part-group-label] {
388
382
  color: var(--_muted);
389
383
  font-size: var(--slotted-font-size-xs, 0.75rem);
390
384
  font-weight: var(--slotted-font-weight-semibold, 600);
@@ -403,7 +397,7 @@
403
397
  * rows and not as a column of cards. The visual, the title's first line
404
398
  * and the controls are centred on one axis.
405
399
  */
406
- [data-ui='notification-center'] > [data-part='feed'] [data-part='item'] {
400
+ [data-ui-notification-center] > [data-part-feed] [data-part-item] {
407
401
  align-items: flex-start;
408
402
  border-block-end: var(--_rule-size) solid var(--_rule);
409
403
  display: grid;
@@ -416,29 +410,29 @@
416
410
  transition: background-color var(--_duration) var(--_easing);
417
411
  }
418
412
 
419
- [data-ui='notification-center'] > [data-part='feed'] [data-part='item'][data-tone='secondary'] {
413
+ [data-ui-notification-center] > [data-part-feed] [data-part-item][data-tone='secondary'] {
420
414
  --_tone-solid: var(--slotted-tone-secondary-solid, ButtonText);
421
415
  --_tone-text: var(--slotted-tone-secondary-text, ButtonText);
422
416
  --_tone-surface: var(--slotted-tone-secondary-surface, Canvas);
423
417
  }
424
- [data-ui='notification-center'] > [data-part='feed'] [data-part='item'][data-tone='success'] {
418
+ [data-ui-notification-center] > [data-part-feed] [data-part-item][data-tone='success'] {
425
419
  --_tone-solid: var(--slotted-tone-success-solid, ButtonText);
426
420
  --_tone-text: var(--slotted-tone-success-text, ButtonText);
427
421
  --_tone-surface: var(--slotted-tone-success-surface, Canvas);
428
422
  }
429
- [data-ui='notification-center'] > [data-part='feed'] [data-part='item'][data-tone='warning'] {
423
+ [data-ui-notification-center] > [data-part-feed] [data-part-item][data-tone='warning'] {
430
424
  --_tone-solid: var(--slotted-tone-warning-solid, ButtonText);
431
425
  --_tone-text: var(--slotted-tone-warning-text, ButtonText);
432
426
  --_tone-surface: var(--slotted-tone-warning-surface, Canvas);
433
427
  }
434
- [data-ui='notification-center'] > [data-part='feed'] [data-part='item'][data-tone='danger'] {
428
+ [data-ui-notification-center] > [data-part-feed] [data-part-item][data-tone='danger'] {
435
429
  --_tone-solid: var(--slotted-tone-danger-solid, ButtonText);
436
430
  --_tone-text: var(--slotted-tone-danger-text, ButtonText);
437
431
  --_tone-surface: var(--slotted-tone-danger-surface, Canvas);
438
432
  }
439
433
 
440
434
  /** Unread stands on the wash; read stands on the surface. The dot says the same thing a second way. */
441
- [data-ui='notification-center'] > [data-part='feed'] [data-part='item']:not([data-read]) {
435
+ [data-ui-notification-center] > [data-part-feed] [data-part-item]:not([data-read]) {
442
436
  background-color: var(--_unread-ground);
443
437
  }
444
438
 
@@ -447,9 +441,7 @@
447
441
  * vocabulary's: an item is never disabled, and the rule says so where the
448
442
  * states test looks.
449
443
  */
450
- [data-ui='notification-center']
451
- > [data-part='feed']
452
- [data-part='item']:not([data-disabled]):hover {
444
+ [data-ui-notification-center] > [data-part-feed] [data-part-item]:not([data-disabled]):hover {
453
445
  background-color: var(--_hover);
454
446
  }
455
447
 
@@ -458,12 +450,12 @@
458
450
  * ring is drawn inward, because the rows touch and an outward ring would be
459
451
  * cut by the neighbours.
460
452
  */
461
- [data-ui='notification-center'] > [data-part='feed'] [data-part='item']:focus-visible {
453
+ [data-ui-notification-center] > [data-part-feed] [data-part-item]:focus-visible {
462
454
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
463
455
  outline-offset: calc(var(--slotted-focus-ring-offset, 2px) * -1);
464
456
  }
465
457
 
466
- [data-ui='notification-center'] > [data-part='feed'] [data-part='item'] > [data-part='visual'] {
458
+ [data-ui-notification-center] > [data-part-feed] [data-part-item] > [data-part-visual] {
467
459
  align-items: center;
468
460
  display: flex;
469
461
  grid-column: 1;
@@ -472,10 +464,10 @@
472
464
  }
473
465
 
474
466
  /** Without a visual the words take the column. */
475
- [data-ui='notification-center']
476
- > [data-part='feed']
477
- [data-part='item']:not(:has(> [data-part='visual']))
478
- > [data-part='content'] {
467
+ [data-ui-notification-center]
468
+ > [data-part-feed]
469
+ [data-part-item]:not(:has(> [data-part-visual]))
470
+ > [data-part-content] {
479
471
  grid-column: 1 / 3;
480
472
  }
481
473
 
@@ -504,10 +496,10 @@
504
496
  * the consumer put there. The disc is the wrapper's own background, centred
505
497
  * on the box the glyph is centred in, so the two stay concentric.
506
498
  */
507
- [data-ui='notification-center']
508
- > [data-part='feed']
509
- [data-part='item']
510
- > [data-part='visual']:empty:not([data-tone]) {
499
+ [data-ui-notification-center]
500
+ > [data-part-feed]
501
+ [data-part-item]
502
+ > [data-part-visual]:empty:not([data-tone]) {
511
503
  display: none;
512
504
  }
513
505
 
@@ -517,10 +509,10 @@
517
509
  * rather than percentages of the ray (Chrome paints a `calc(100% - …)`
518
510
  * stop as a ramp several pixels wide).
519
511
  */
520
- [data-ui='notification-center']
521
- > [data-part='feed']
522
- [data-part='item']
523
- > [data-part='visual'][data-tone]:has(> [data-tone-glyph]) {
512
+ [data-ui-notification-center]
513
+ > [data-part-feed]
514
+ [data-part-item]
515
+ > [data-part-visual][data-tone]:has(> [data-tone-glyph]) {
524
516
  --slotted-icon-size: var(--_visual-glyph);
525
517
 
526
518
  align-items: center;
@@ -541,7 +533,7 @@
541
533
  * line and the offset centres that line on the visual — a visual taller
542
534
  * than the line pushes the words down, never the other way.
543
535
  */
544
- [data-ui='notification-center'] > [data-part='feed'] [data-part='item'] > [data-part='content'] {
536
+ [data-ui-notification-center] > [data-part-feed] [data-part-item] > [data-part-content] {
545
537
  display: flex;
546
538
  flex-direction: column;
547
539
  font-size: var(--_item-title-size);
@@ -552,11 +544,11 @@
552
544
  min-inline-size: 0;
553
545
  }
554
546
 
555
- [data-ui='notification-center']
556
- > [data-part='feed']
557
- [data-part='item']
558
- > [data-part='content']
559
- > [data-part='title'] {
547
+ [data-ui-notification-center]
548
+ > [data-part-feed]
549
+ [data-part-item]
550
+ > [data-part-content]
551
+ > [data-part-title] {
560
552
  -webkit-box-orient: vertical;
561
553
  -webkit-line-clamp: var(--slotted-notification-center-title-clamp, 2);
562
554
  color: var(--_text);
@@ -571,11 +563,11 @@
571
563
  }
572
564
 
573
565
  /** Unread says so with weight as well as with the dot and the wash. */
574
- [data-ui='notification-center']
575
- > [data-part='feed']
576
- [data-part='item']:not([data-read])
577
- > [data-part='content']
578
- > [data-part='title'] {
566
+ [data-ui-notification-center]
567
+ > [data-part-feed]
568
+ [data-part-item]:not([data-read])
569
+ > [data-part-content]
570
+ > [data-part-title] {
579
571
  font-weight: var(--slotted-font-weight-semibold, 600);
580
572
  }
581
573
 
@@ -584,38 +576,38 @@
584
576
  * opens the thing, and the controls stand above it so they take their own
585
577
  * press. The ring stays on the article, which is what has focus.
586
578
  */
587
- [data-ui='notification-center']
588
- > [data-part='feed']
589
- [data-part='item']
590
- > [data-part='content']
591
- > a[data-part='title']::after {
579
+ [data-ui-notification-center]
580
+ > [data-part-feed]
581
+ [data-part-item]
582
+ > [data-part-content]
583
+ > a[data-part-title]::after {
592
584
  content: '';
593
585
  inset: 0;
594
586
  position: absolute;
595
587
  }
596
588
 
597
- [data-ui='notification-center']
598
- > [data-part='feed']
599
- [data-part='item']
600
- > [data-part='content']
601
- > a[data-part='title']:not([data-disabled]):hover {
589
+ [data-ui-notification-center]
590
+ > [data-part-feed]
591
+ [data-part-item]
592
+ > [data-part-content]
593
+ > a[data-part-title]:not([data-disabled]):hover {
602
594
  text-decoration: underline;
603
595
  text-underline-offset: 0.15em;
604
596
  }
605
597
 
606
- [data-ui='notification-center']
607
- > [data-part='feed']
608
- [data-part='item']
609
- > [data-part='content']
610
- > a[data-part='title']:focus-visible {
598
+ [data-ui-notification-center]
599
+ > [data-part-feed]
600
+ [data-part-item]
601
+ > [data-part-content]
602
+ > a[data-part-title]:focus-visible {
611
603
  outline: none;
612
604
  }
613
605
 
614
- [data-ui='notification-center']
615
- > [data-part='feed']
616
- [data-part='item']
617
- > [data-part='content']
618
- > [data-part='description'] {
606
+ [data-ui-notification-center]
607
+ > [data-part-feed]
608
+ [data-part-item]
609
+ > [data-part-content]
610
+ > [data-part-description] {
619
611
  -webkit-box-orient: vertical;
620
612
  -webkit-line-clamp: var(--slotted-notification-center-description-clamp, 3);
621
613
  color: var(--_muted);
@@ -627,11 +619,11 @@
627
619
  overflow-wrap: anywhere;
628
620
  }
629
621
 
630
- [data-ui='notification-center']
631
- > [data-part='feed']
632
- [data-part='item']
633
- > [data-part='content']
634
- > [data-part='time'] {
622
+ [data-ui-notification-center]
623
+ > [data-part-feed]
624
+ [data-part-item]
625
+ > [data-part-content]
626
+ > [data-part-time] {
635
627
  color: var(--_muted);
636
628
  font-size: var(--_meta-size);
637
629
  font-variant-numeric: tabular-nums;
@@ -639,11 +631,11 @@
639
631
  }
640
632
 
641
633
  /** The consumer's controls for the item, above the covering link. */
642
- [data-ui='notification-center']
643
- > [data-part='feed']
644
- [data-part='item']
645
- > [data-part='content']
646
- > [data-part='actions'] {
634
+ [data-ui-notification-center]
635
+ > [data-part-feed]
636
+ [data-part-item]
637
+ > [data-part-content]
638
+ > [data-part-actions] {
647
639
  align-items: center;
648
640
  display: flex;
649
641
  flex-wrap: wrap;
@@ -655,7 +647,7 @@
655
647
 
656
648
  /* ── The family's controls ───────────────────────────────────────────── */
657
649
 
658
- [data-ui='notification-center'] > [data-part='feed'] [data-part='item'] > [data-part='controls'] {
650
+ [data-ui-notification-center] > [data-part-feed] [data-part-item] > [data-part-controls] {
659
651
  display: flex;
660
652
  gap: var(--slotted-space-1, 0.125rem);
661
653
  grid-column: 3;
@@ -674,10 +666,10 @@
674
666
  * unread, `dot` while read (the control offers to mark it unread), and `x`
675
667
  * to dismiss; the control hands its icon box the glyph size.
676
668
  */
677
- [data-ui='notification-center']
678
- > [data-part='feed']
679
- [data-part='item']
680
- > [data-part='controls']
669
+ [data-ui-notification-center]
670
+ > [data-part-feed]
671
+ [data-part-item]
672
+ > [data-part-controls]
681
673
  > button {
682
674
  --slotted-icon-size: var(--_glyph);
683
675
 
@@ -700,10 +692,10 @@
700
692
  background-color var(--_duration) var(--_easing);
701
693
  }
702
694
 
703
- [data-ui='notification-center']
704
- > [data-part='feed']
705
- [data-part='item']
706
- > [data-part='controls']
695
+ [data-ui-notification-center]
696
+ > [data-part-feed]
697
+ [data-part-item]
698
+ > [data-part-controls]
707
699
  > button::before {
708
700
  /* The halo: the target minimum, centred on the box, taking the press and drawing nothing. */
709
701
  block-size: max(var(--_control), var(--slotted-target-min, 24px));
@@ -715,58 +707,58 @@
715
707
  translate: -50% -50%;
716
708
  }
717
709
 
718
- [data-ui='notification-center']
719
- > [data-part='feed']
720
- [data-part='item']
721
- > [data-part='controls']
710
+ [data-ui-notification-center]
711
+ > [data-part-feed]
712
+ [data-part-item]
713
+ > [data-part-controls]
722
714
  > button:enabled:hover {
723
715
  background-color: var(--_hover);
724
716
  color: var(--_text);
725
717
  }
726
718
 
727
- [data-ui='notification-center']
728
- > [data-part='feed']
729
- [data-part='item']
730
- > [data-part='controls']
719
+ [data-ui-notification-center]
720
+ > [data-part-feed]
721
+ [data-part-item]
722
+ > [data-part-controls]
731
723
  > button:enabled:active {
732
724
  background-color: var(--_active);
733
725
  }
734
726
 
735
- [data-ui='notification-center']
736
- > [data-part='feed']
737
- [data-part='item']
738
- > [data-part='controls']
727
+ [data-ui-notification-center]
728
+ > [data-part-feed]
729
+ [data-part-item]
730
+ > [data-part-controls]
739
731
  > button:focus-visible {
740
732
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
741
733
  outline-offset: var(--slotted-focus-ring-offset, 2px);
742
734
  }
743
735
 
744
736
  /** The `controls` axis: a product with its own triage keeps one of the two, or neither. */
745
- [data-ui='notification-center'][data-controls='read']
746
- > [data-part='feed']
747
- [data-part='item']
748
- > [data-part='controls']
749
- > [data-part='dismiss'],
750
- [data-ui='notification-center'][data-controls='dismiss']
751
- > [data-part='feed']
752
- [data-part='item']
753
- > [data-part='controls']
754
- > [data-part='read-toggle'],
755
- [data-ui='notification-center'][data-controls='none']
756
- > [data-part='feed']
757
- [data-part='item']
758
- > [data-part='controls'] {
737
+ [data-ui-notification-center][data-controls='read']
738
+ > [data-part-feed]
739
+ [data-part-item]
740
+ > [data-part-controls]
741
+ > [data-part-dismiss],
742
+ [data-ui-notification-center][data-controls='dismiss']
743
+ > [data-part-feed]
744
+ [data-part-item]
745
+ > [data-part-controls]
746
+ > [data-part-read-toggle],
747
+ [data-ui-notification-center][data-controls='none']
748
+ > [data-part-feed]
749
+ [data-part-item]
750
+ > [data-part-controls] {
759
751
  display: none;
760
752
  }
761
753
 
762
754
  /* ── Loading, empty and the footer ───────────────────────────────────── */
763
755
 
764
756
  /** The waiting rows are skeleton's; the family gives them the item's inset and rule, and no wash. */
765
- [data-ui='notification-center'] > [data-part='feed'] > [data-part='item'][aria-hidden] {
757
+ [data-ui-notification-center] > [data-part-feed] > [data-part-item][aria-hidden] {
766
758
  background-color: transparent;
767
759
  }
768
760
 
769
- [data-ui='notification-center'] > [data-part='empty'] {
761
+ [data-ui-notification-center] > [data-part-empty] {
770
762
  color: var(--_muted);
771
763
  display: grid;
772
764
  font-size: var(--_meta-size);
@@ -778,7 +770,7 @@
778
770
  text-align: center;
779
771
  }
780
772
 
781
- [data-ui='notification-center'] > [data-part='footer'] {
773
+ [data-ui-notification-center] > [data-part-footer] {
782
774
  align-items: center;
783
775
  border-block-start: var(--_rule-size) solid var(--_rule);
784
776
  display: flex;
@@ -799,14 +791,11 @@
799
791
  * the title.
800
792
  */
801
793
  @container notification-center (max-width: 319px) {
802
- [data-ui='notification-center'] > [data-part='feed'] [data-part='item'] {
794
+ [data-ui-notification-center] > [data-part-feed] [data-part-item] {
803
795
  grid-template-columns: auto minmax(0, 1fr);
804
796
  }
805
797
 
806
- [data-ui='notification-center']
807
- > [data-part='feed']
808
- [data-part='item']
809
- > [data-part='controls'] {
798
+ [data-ui-notification-center] > [data-part-feed] [data-part-item] > [data-part-controls] {
810
799
  grid-column: 2;
811
800
  justify-content: flex-end;
812
801
  margin-block-start: var(--slotted-space-2, 0.25rem);
@@ -827,10 +816,7 @@
827
816
  * the halo already reached there.
828
817
  */
829
818
  @media (pointer: coarse) {
830
- [data-ui='notification-center']
831
- > [data-part='feed']
832
- [data-part='item']
833
- > [data-part='controls'] {
819
+ [data-ui-notification-center] > [data-part-feed] [data-part-item] > [data-part-controls] {
834
820
  --_control: var(--slotted-target-comfortable, 44px);
835
821
 
836
822
  margin-block-start: calc((var(--_visual) - var(--_control)) / 2);
@@ -846,7 +832,7 @@
846
832
  * carries unread.
847
833
  */
848
834
  @media (forced-colors: active) {
849
- [data-ui='notification-center'] [data-part='count'] {
835
+ [data-ui-notification-center] [data-part-count] {
850
836
  background-color: Highlight;
851
837
  border-color: Highlight;
852
838
  color: HighlightText;