@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
package/src/link/link.css CHANGED
@@ -19,7 +19,7 @@
19
19
  * theme already holds to the highest ratio in each scheme cannot fail the
20
20
  * same way.
21
21
  */
22
- [data-ui='link'] {
22
+ [data-ui-link] {
23
23
  --_strong: var(--slotted-text, CanvasText);
24
24
  --_rest: var(--slotted-link-color, var(--slotted-tone-accent-text, LinkText));
25
25
  --_hover: var(
@@ -80,7 +80,7 @@
80
80
  * pointer. Fluent calls it `subtle`, Primer `muted`, Polaris `monochrome`,
81
81
  * and all three describe the same two colours.
82
82
  */
83
- [data-ui='link'][data-variant='neutral'] {
83
+ [data-ui-link][data-variant='neutral'] {
84
84
  --_rest: var(--slotted-link-color, currentColor);
85
85
  --_hover: var(--slotted-link-color-hover, var(--slotted-tone-accent-text, LinkText));
86
86
  --_active: var(
@@ -94,7 +94,7 @@
94
94
  * ground, so hover has nowhere further to go and the underline carries the
95
95
  * state on its own.
96
96
  */
97
- [data-ui='link'][data-variant='inverse'] {
97
+ [data-ui-link][data-variant='inverse'] {
98
98
  --_strong: var(--slotted-text-inverse, Canvas);
99
99
  --_rest: var(--slotted-link-color, var(--slotted-text-inverse, Canvas));
100
100
  }
@@ -108,12 +108,12 @@
108
108
  * where there is no sentence for it to disappear into.
109
109
  */
110
110
 
111
- [data-ui='link'][data-underline='hover'],
112
- [data-ui='link'][data-underline='none'] {
111
+ [data-ui-link][data-underline='hover'],
112
+ [data-ui-link][data-underline='none'] {
113
113
  text-decoration-line: none;
114
114
  }
115
115
 
116
- [data-ui='link'][data-underline='hover']:not([data-disabled]):hover {
116
+ [data-ui-link][data-underline='hover']:not([data-disabled]):hover {
117
117
  text-decoration-line: underline;
118
118
  }
119
119
 
@@ -122,7 +122,7 @@
122
122
  * `none` is left alone: it says the underline does not exist, not that it is
123
123
  * waiting for something.
124
124
  */
125
- [data-ui='link'][data-underline='hover']:focus-visible {
125
+ [data-ui-link][data-underline='hover']:focus-visible {
126
126
  text-decoration-line: underline;
127
127
  }
128
128
 
@@ -134,19 +134,19 @@
134
134
  * in this repository can read this rule back.
135
135
  */
136
136
 
137
- [data-ui='link'][data-visited]:visited {
137
+ [data-ui-link][data-visited]:visited {
138
138
  color: var(--_visited);
139
139
  }
140
140
 
141
141
  /* ── Hover and press, held back for disabled ────────────────────────────── */
142
142
 
143
- [data-ui='link']:not([data-disabled]):hover {
143
+ [data-ui-link]:not([data-disabled]):hover {
144
144
  --_underline: currentColor;
145
145
 
146
146
  color: var(--_hover);
147
147
  }
148
148
 
149
- [data-ui='link']:not([data-disabled]):active {
149
+ [data-ui-link]:not([data-disabled]):active {
150
150
  --_underline: currentColor;
151
151
 
152
152
  color: var(--_active);
@@ -159,7 +159,7 @@
159
159
  * offset reaches into the line above.
160
160
  */
161
161
 
162
- [data-ui='link']:focus-visible {
162
+ [data-ui-link]:focus-visible {
163
163
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
164
164
  outline-offset: var(--slotted-link-focus-ring-offset, 1px);
165
165
  }
@@ -172,7 +172,7 @@
172
172
  * reads as a link that is not available rather than as plain text.
173
173
  */
174
174
 
175
- [data-ui='link'][data-disabled] {
175
+ [data-ui-link][data-disabled] {
176
176
  color: var(--slotted-link-color-disabled, var(--slotted-disabled-foreground, GrayText));
177
177
  cursor: not-allowed;
178
178
  }
@@ -196,7 +196,7 @@
196
196
  * `--slotted-icon-size`, which the part states at the size of the text.
197
197
  */
198
198
 
199
- [data-ui='link'] [data-part='external-icon'] {
199
+ [data-ui-link] [data-part-external-icon] {
200
200
  --slotted-icon-size: var(--slotted-link-external-icon-size, 1em);
201
201
 
202
202
  margin-inline-start: var(--slotted-link-external-icon-gap, 0.15em);
@@ -217,7 +217,7 @@
217
217
  * it.
218
218
  */
219
219
 
220
- [data-ui='link'][aria-current]:not([aria-current='false']) {
220
+ [data-ui-link][aria-current]:not([aria-current='false']) {
221
221
  --_rest: var(--slotted-link-color-current, var(--slotted-text, CanvasText));
222
222
  }
223
223
 
@@ -230,7 +230,7 @@
230
230
  */
231
231
 
232
232
  @media (forced-colors: active) {
233
- [data-ui='link'] {
233
+ [data-ui-link] {
234
234
  text-decoration-line: underline;
235
235
  }
236
236
  }
package/src/list/list.css CHANGED
@@ -3,7 +3,7 @@
3
3
  * ── The set ────────────────────────────────────────────────────────────
4
4
  *
5
5
  * A vertical run of related rows. The rows are `list-item`, a family of its
6
- * own, and **no selector here reaches `[data-ui='list-item']`** — the rule
6
+ * own, and **no selector here reaches `[data-ui-list-item]`** — the rule
7
7
  * `accordion` and `collapsible` set for the same relationship. What the set
8
8
  * decides it hands to each row through the binding, as a `data-` attribute
9
9
  * the row's own stylesheet reads.
@@ -19,8 +19,8 @@
19
19
  * here and on `section-list`, which is what Safari and VoiceOver need once
20
20
  * the marker is removed.
21
21
  */
22
- [data-ui='list'][data-part='root'],
23
- [data-ui='list'] [data-part='section-list'] {
22
+ [data-ui-list][data-part-root],
23
+ [data-ui-list] [data-part-section-list] {
24
24
  /* The row's own number. The set opens the count; each group opens its own,
25
25
  so a numbered list of groups restarts rather than running through. */
26
26
  counter-reset: slotted-list-item;
@@ -37,7 +37,7 @@
37
37
  padding-inline: 0;
38
38
  }
39
39
 
40
- [data-ui='list'][data-part='root'] {
40
+ [data-ui-list][data-part-root] {
41
41
  /* The distance between rows, and it is spent only by `separated`. The other
42
42
  three variants separate rows with a line or with nothing, so a gap there
43
43
  would be space the reader cannot account for. */
@@ -79,7 +79,7 @@
79
79
  * roomy settings list stand on the same page without either of them lying
80
80
  * about the density.
81
81
  */
82
- [data-ui='list'][data-part='root'][data-size='sm'] {
82
+ [data-ui-list][data-part-root][data-size='sm'] {
83
83
  --_gap: var(--slotted-list-gap-sm, var(--slotted-space-2, 0.25rem));
84
84
  --_section-inset-block: var(
85
85
  --slotted-list-section-padding-block-sm,
@@ -92,7 +92,7 @@
92
92
  --_empty-inset: var(--slotted-list-empty-padding-sm, var(--slotted-space-6, 1rem));
93
93
  }
94
94
 
95
- [data-ui='list'][data-part='root'][data-size='lg'] {
95
+ [data-ui-list][data-part-root][data-size='lg'] {
96
96
  --_gap: var(--slotted-list-gap-lg, var(--slotted-space-4, 0.5rem));
97
97
  --_section-inset-block: var(
98
98
  --slotted-list-section-padding-block-lg,
@@ -115,7 +115,7 @@
115
115
  *
116
116
  * `plain` and `ruled` draw nothing on the set.
117
117
  */
118
- [data-ui='list'][data-part='root'][data-variant='framed'] {
118
+ [data-ui-list][data-part-root][data-variant='framed'] {
119
119
  background-color: var(--_surface);
120
120
  border: var(--_frame-width) solid var(--_frame-color);
121
121
  border-radius: var(--_frame-radius);
@@ -125,7 +125,7 @@
125
125
  overflow: clip;
126
126
  }
127
127
 
128
- [data-ui='list'][data-part='root'][data-variant='separated'] {
128
+ [data-ui-list][data-part-root][data-variant='separated'] {
129
129
  row-gap: var(--_gap);
130
130
  }
131
131
 
@@ -135,7 +135,7 @@
135
135
  * React Aria each leave the heading loose among the rows instead, so a reader
136
136
  * hears a heading inside a set rather than a set with a name.
137
137
  */
138
- [data-ui='list'] [data-part='section'] {
138
+ [data-ui-list] [data-part-section] {
139
139
  display: flex;
140
140
  flex-direction: column;
141
141
  min-inline-size: 0;
@@ -143,8 +143,8 @@
143
143
 
144
144
  /* A separated set gaps its groups too, and a group gaps its own rows. Both
145
145
  read the one distance the root declared. */
146
- [data-ui='list'][data-variant='separated'] [data-part='section'],
147
- [data-ui='list'][data-variant='separated'] [data-part='section-list'] {
146
+ [data-ui-list][data-variant='separated'] [data-part-section],
147
+ [data-ui-list][data-variant='separated'] [data-part-section-list] {
148
148
  row-gap: var(--_gap);
149
149
  }
150
150
 
@@ -153,7 +153,7 @@
153
153
  * titles under it stand in one column, which is the alignment that makes a
154
154
  * grouped list read as one list rather than as several.
155
155
  */
156
- [data-ui='list'] [data-part='section-label'] {
156
+ [data-ui-list] [data-part-section-label] {
157
157
  color: var(--_section-color);
158
158
  font-size: var(--_section-font-size);
159
159
  font-weight: var(--_section-weight);
@@ -178,8 +178,8 @@
178
178
  * `disableGutters` leaves out: it removes the padding and leaves the line
179
179
  * inset, so a flush list draws a rule stopping short of the box it is in.
180
180
  */
181
- [data-ui='list'][data-inset] [data-part='section-label'],
182
- [data-ui='list'][data-inset] [data-part='empty'] {
181
+ [data-ui-list][data-inset] [data-part-section-label],
182
+ [data-ui-list][data-inset] [data-part-empty] {
183
183
  padding-inline: 0;
184
184
  }
185
185
 
@@ -193,7 +193,34 @@
193
193
  * level is the library's own sticky step, so a heading never rises above an
194
194
  * overlay that is above the page.
195
195
  */
196
- [data-ui='list'] [data-part='section-label'][data-sticky] {
196
+ /* A heading with an end sets the name at the start and the end content on
197
+ the same line, at the end. */
198
+ [data-ui-list] [data-part-section-label]:has(> [data-part-section-end]) {
199
+ align-items: baseline;
200
+ display: flex;
201
+ gap: var(--slotted-space-4, 0.5rem);
202
+ justify-content: space-between;
203
+ }
204
+
205
+ [data-ui-list] [data-part-section-end] {
206
+ flex: none;
207
+ font-variant-numeric: tabular-nums;
208
+ white-space: nowrap;
209
+ }
210
+
211
+ /**
212
+ * `ruled`: the name in the text colour over a rule, with no ground behind it
213
+ * — a day of a phone list with its balance at the end. The sticky ground is
214
+ * still the set's surface, so the rows passing under it are covered.
215
+ */
216
+ [data-ui-list] [data-part-section-label][data-variant='ruled'] {
217
+ border-block-end: var(--slotted-border-width-thin, 1px) solid
218
+ var(--slotted-list-section-rule-color, var(--slotted-border-subtle, GrayText));
219
+ color: var(--slotted-list-section-ruled-color, var(--slotted-text, CanvasText));
220
+ font-weight: var(--slotted-font-weight-medium, 500);
221
+ }
222
+
223
+ [data-ui-list] [data-part-section-label][data-sticky] {
197
224
  background-color: var(--_surface);
198
225
  inset-block-start: 0;
199
226
  position: sticky;
@@ -209,7 +236,7 @@
209
236
  * The family supplies the box, the height and the muted ink. The words are
210
237
  * the page's, and `result-state` is what goes in here.
211
238
  */
212
- [data-ui='list'] [data-part='empty'] {
239
+ [data-ui-list] [data-part-empty] {
213
240
  align-items: center;
214
241
  color: var(--_empty-color);
215
242
  display: flex;
@@ -234,7 +261,7 @@
234
261
  * loading panel. What is left for the set is the pointer, which is the one
235
262
  * signal that belongs to the box rather than to its content.
236
263
  */
237
- [data-ui='list'][data-part='root'][data-loading] {
264
+ [data-ui-list][data-part-root][data-loading] {
238
265
  cursor: progress;
239
266
  }
240
267
  }
@@ -5,6 +5,7 @@
5
5
  "--slotted-control-padding-inline-md",
6
6
  "--slotted-control-padding-inline-sm",
7
7
  "--slotted-font-size-xs",
8
+ "--slotted-font-weight-medium",
8
9
  "--slotted-font-weight-semibold",
9
10
  "--slotted-line-height-sm",
10
11
  "--slotted-list-background",
@@ -28,6 +29,8 @@
28
29
  "--slotted-list-section-padding-block",
29
30
  "--slotted-list-section-padding-block-lg",
30
31
  "--slotted-list-section-padding-block-sm",
32
+ "--slotted-list-section-rule-color",
33
+ "--slotted-list-section-ruled-color",
31
34
  "--slotted-radius-md",
32
35
  "--slotted-space-2",
33
36
  "--slotted-space-3",
@@ -37,6 +40,7 @@
37
40
  "--slotted-space-8",
38
41
  "--slotted-space-9",
39
42
  "--slotted-surface",
43
+ "--slotted-text",
40
44
  "--slotted-text-muted",
41
45
  "--slotted-z-index-sticky"
42
46
  ]