@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.
- package/package.json +1 -1
- package/src/accordion/accordion.css +10 -10
- package/src/action-bar/action-bar.css +31 -32
- package/src/action-sheet/action-sheet.css +36 -36
- package/src/alert/alert.css +43 -35
- package/src/alert/alert.tokens.json +5 -0
- package/src/app-shell/app-shell.css +356 -301
- package/src/aspect-ratio/aspect-ratio.css +9 -9
- package/src/attachment/attachment.css +91 -99
- package/src/avatar/avatar.css +71 -41
- package/src/avatar/avatar.tokens.json +7 -0
- package/src/avatar-group/avatar-group.css +21 -22
- package/src/badge/badge.css +45 -37
- package/src/badge/badge.tokens.json +5 -0
- package/src/breadcrumb/breadcrumb.css +37 -37
- package/src/button/button.css +139 -64
- package/src/button/button.tokens.json +10 -0
- package/src/button-group/button-group.css +76 -72
- package/src/button-group/button-group.tokens.json +2 -0
- package/src/calendar/calendar.css +93 -103
- package/src/card/card.css +54 -61
- package/src/carousel/carousel.css +150 -161
- package/src/cascader/cascader.css +152 -153
- package/src/cascader/cascader.tokens.json +1 -0
- package/src/chart/chart.css +242 -239
- package/src/chart/chart.tokens.json +1 -0
- package/src/checkbox/checkbox.css +119 -124
- package/src/checkbox-group/checkbox-group.css +7 -7
- package/src/code-block/code-block.css +81 -85
- package/src/collapsible/collapsible.css +69 -76
- package/src/color-picker/color-picker.css +83 -91
- package/src/column-manager/column-manager.css +106 -114
- package/src/combobox/combobox.css +132 -107
- package/src/combobox/combobox.tokens.json +1 -0
- package/src/command-palette/command-palette.css +84 -90
- package/src/container/container.css +24 -24
- package/src/context-menu/context-menu.css +8 -8
- package/src/currency-field/currency-field.css +210 -88
- package/src/currency-field/currency-field.tokens.json +13 -0
- package/src/dashboard-grid/dashboard-grid.css +148 -116
- package/src/data-grid/data-grid.css +504 -469
- package/src/data-grid/data-grid.tokens.json +2 -0
- package/src/data-list/data-list.css +81 -70
- package/src/data-list/data-list.tokens.json +2 -1
- package/src/date-field/date-field.css +55 -52
- package/src/date-field/date-field.tokens.json +1 -0
- package/src/date-picker/date-picker.css +40 -42
- package/src/date-range-picker/date-range-picker.css +114 -118
- package/src/datetime-field/datetime-field.css +78 -80
- package/src/datetime-field/datetime-field.tokens.json +1 -0
- package/src/datetime-picker/datetime-picker.css +61 -63
- package/src/datetime-range-picker/datetime-range-picker.css +149 -156
- package/src/description-list/description-list.css +61 -64
- package/src/detail-panel/detail-panel.css +70 -70
- package/src/dialog/dialog.css +334 -153
- package/src/dialog/dialog.tokens.json +5 -0
- package/src/divider/divider.css +18 -18
- package/src/drawer/drawer.css +186 -209
- package/src/entity-picker/entity-picker.css +238 -241
- package/src/entity-picker/entity-picker.tokens.json +1 -0
- package/src/event-calendar/event-calendar.css +343 -385
- package/src/field/field.css +74 -78
- package/src/field-group/field-group.css +22 -25
- package/src/filter-bar/filter-bar.css +193 -209
- package/src/form/form.css +34 -24
- package/src/form/form.tokens.json +1 -0
- package/src/fullscreen/fullscreen.css +24 -25
- package/src/grid/grid.css +28 -28
- package/src/highlight/highlight.css +6 -6
- package/src/hover-card/hover-card.css +6 -6
- package/src/icon/icon.css +19 -15
- package/src/icon/icon.tokens.json +1 -0
- package/src/image/image.css +39 -39
- package/src/import-export-center/import-export-center.css +135 -156
- package/src/inline/inline.css +27 -27
- package/src/inline-message/inline-message.css +52 -28
- package/src/inline-message/inline-message.tokens.json +4 -0
- package/src/kbd/kbd.css +30 -26
- package/src/link/link.css +15 -15
- package/src/list/list.css +44 -17
- package/src/list/list.tokens.json +4 -0
- package/src/list-item/list-item.css +80 -66
- package/src/list-item/list-item.tokens.json +7 -0
- package/src/listbox/listbox.css +56 -59
- package/src/loading-overlay/loading-overlay.css +75 -92
- package/src/markdown/markdown.css +17 -17
- package/src/menu/menu.css +83 -63
- package/src/menubar/menubar.css +13 -13
- package/src/message/message.css +182 -202
- package/src/message/message.tokens.json +5 -0
- package/src/message-scroller/message-scroller.css +41 -42
- package/src/multi-select/multi-select.css +152 -145
- package/src/multi-select/multi-select.tokens.json +1 -0
- package/src/navigation-menu/navigation-menu.css +167 -188
- package/src/notification-center/notification-center.css +140 -148
- package/src/notification-center/notification-center.tokens.json +3 -0
- package/src/number-field/number-field.css +84 -83
- package/src/number-field/number-field.tokens.json +1 -0
- package/src/otp-input/otp-input.css +67 -57
- package/src/otp-input/otp-input.tokens.json +1 -0
- package/src/page/page.css +23 -23
- package/src/page-header/page-header.css +268 -281
- package/src/page-header/page-header.tokens.json +1 -0
- package/src/pagination/pagination.css +68 -72
- package/src/popover/popover.css +40 -49
- package/src/progress-indicator/progress-indicator.css +177 -120
- package/src/progress-indicator/progress-indicator.tokens.json +1 -1
- package/src/prompt-composer/prompt-composer.css +221 -102
- package/src/prompt-composer/prompt-composer.tokens.json +15 -0
- package/src/prose/prose.css +71 -75
- package/src/radio-group/radio-group.css +98 -103
- package/src/rating/rating.css +136 -132
- package/src/rating/rating.tokens.json +1 -0
- package/src/result-state/result-state.css +74 -77
- package/src/runtime-properties.mjs +2 -0
- package/src/saved-views/saved-views.css +41 -47
- package/src/scroll-area/scroll-area.css +39 -32
- package/src/section/section.css +161 -41
- package/src/section/section.tokens.json +7 -2
- package/src/segmented-control/segmented-control.css +254 -97
- package/src/segmented-control/segmented-control.tokens.json +15 -11
- package/src/select/select.css +118 -117
- package/src/select/select.tokens.json +1 -0
- package/src/side-navigation/side-navigation.css +179 -182
- package/src/side-navigation/side-navigation.tokens.json +1 -0
- package/src/skeleton/skeleton.css +47 -48
- package/src/slider/slider.css +86 -88
- package/src/sparkline/sparkline.css +62 -40
- package/src/sparkline/sparkline.tokens.json +2 -0
- package/src/spinner/spinner.css +39 -182
- package/src/spinner/spinner.tokens.json +0 -2
- package/src/split-button/split-button.css +30 -31
- package/src/split-button/split-button.tokens.json +1 -0
- package/src/splitter/splitter.css +35 -35
- package/src/stack/stack.css +24 -24
- package/src/stat-card/stat-card.css +341 -224
- package/src/stat-card/stat-card.tokens.json +3 -0
- package/src/status-indicator/status-indicator.css +28 -28
- package/src/stepper/stepper.css +58 -62
- package/src/switch/switch.css +86 -92
- package/src/table/table.css +310 -165
- package/src/table/table.tokens.json +6 -0
- package/src/table-of-contents/table-of-contents.css +51 -54
- package/src/tabs/tabs.css +330 -302
- package/src/tabs/tabs.tokens.json +8 -5
- package/src/tag/tag.css +79 -71
- package/src/tag/tag.tokens.json +9 -0
- package/src/tags-input/tags-input.css +145 -82
- package/src/tags-input/tags-input.tokens.json +7 -1
- package/src/text-field/text-field.css +132 -136
- package/src/text-field/text-field.tokens.json +1 -0
- package/src/textarea/textarea.css +31 -28
- package/src/textarea/textarea.tokens.json +1 -0
- package/src/time-field/time-field.css +72 -69
- package/src/time-field/time-field.tokens.json +1 -0
- package/src/time-picker/time-picker.css +56 -58
- package/src/time-range-picker/time-range-picker.css +126 -133
- package/src/timeline/timeline.css +254 -266
- package/src/timeline/timeline.tokens.json +5 -0
- package/src/toast/toast.css +89 -90
- package/src/toast/toast.tokens.json +5 -0
- package/src/toggle/toggle.css +62 -25
- package/src/toggle/toggle.tokens.json +8 -0
- package/src/toggle-group/toggle-group.css +106 -60
- package/src/toggle-group/toggle-group.tokens.json +10 -0
- package/src/toolbar/toolbar.css +30 -35
- package/src/tooltip/tooltip.css +26 -26
- package/src/top-navigation/top-navigation.css +243 -259
- package/src/tour/tour.css +51 -60
- package/src/transfer/transfer.css +160 -164
- package/src/tree/tree.css +103 -111
- package/src/typography/typography.css +40 -36
- package/src/typography/typography.tokens.json +1 -0
- package/src/upload/upload.css +224 -224
- package/src/visually-hidden/visually-hidden.css +1 -1
- package/src/wizard/wizard.css +185 -197
package/src/badge/badge.css
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
* that keeps an icon-only badge the same height as a text one, and the
|
|
17
17
|
* minimum inline size that makes a one-figure pill a circle.
|
|
18
18
|
*/
|
|
19
|
-
[data-ui
|
|
19
|
+
[data-ui-badge][data-part-root] {
|
|
20
20
|
/**
|
|
21
21
|
* Tone. The default is the one a badge carrying a value should speak in: a
|
|
22
22
|
* badge with no tone stated is holding a number, not an opinion.
|
|
@@ -123,11 +123,11 @@
|
|
|
123
123
|
|
|
124
124
|
/* ── Tone: which of the five semantic colours the badge speaks in ─────── */
|
|
125
125
|
|
|
126
|
-
[data-ui
|
|
126
|
+
[data-ui-badge][data-part-root][data-tone='secondary'] {
|
|
127
127
|
--_edge: var(--_border);
|
|
128
128
|
}
|
|
129
129
|
|
|
130
|
-
[data-ui
|
|
130
|
+
[data-ui-badge][data-part-root][data-tone='accent'] {
|
|
131
131
|
--_solid: var(--slotted-tone-accent-solid);
|
|
132
132
|
--_on-solid: var(--slotted-tone-accent-on-solid);
|
|
133
133
|
--_surface: var(--slotted-tone-accent-surface);
|
|
@@ -135,7 +135,7 @@
|
|
|
135
135
|
--_text: var(--slotted-tone-accent-text);
|
|
136
136
|
}
|
|
137
137
|
|
|
138
|
-
[data-ui
|
|
138
|
+
[data-ui-badge][data-part-root][data-tone='success'] {
|
|
139
139
|
--_solid: var(--slotted-tone-success-solid);
|
|
140
140
|
--_on-solid: var(--slotted-tone-success-on-solid);
|
|
141
141
|
--_surface: var(--slotted-tone-success-surface);
|
|
@@ -143,7 +143,15 @@
|
|
|
143
143
|
--_text: var(--slotted-tone-success-text);
|
|
144
144
|
}
|
|
145
145
|
|
|
146
|
-
[data-ui
|
|
146
|
+
[data-ui-badge][data-part-root][data-tone='info'] {
|
|
147
|
+
--_solid: var(--slotted-tone-info-solid);
|
|
148
|
+
--_on-solid: var(--slotted-tone-info-on-solid);
|
|
149
|
+
--_surface: var(--slotted-tone-info-surface);
|
|
150
|
+
--_border: var(--slotted-tone-info-border);
|
|
151
|
+
--_text: var(--slotted-tone-info-text);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
[data-ui-badge][data-part-root][data-tone='warning'] {
|
|
147
155
|
--_solid: var(--slotted-tone-warning-solid);
|
|
148
156
|
--_on-solid: var(--slotted-tone-warning-on-solid);
|
|
149
157
|
--_surface: var(--slotted-tone-warning-surface);
|
|
@@ -151,7 +159,7 @@
|
|
|
151
159
|
--_text: var(--slotted-tone-warning-text);
|
|
152
160
|
}
|
|
153
161
|
|
|
154
|
-
[data-ui
|
|
162
|
+
[data-ui-badge][data-part-root][data-tone='danger'] {
|
|
155
163
|
--_solid: var(--slotted-tone-danger-solid);
|
|
156
164
|
--_on-solid: var(--slotted-tone-danger-on-solid);
|
|
157
165
|
--_surface: var(--slotted-tone-danger-surface);
|
|
@@ -180,19 +188,19 @@
|
|
|
180
188
|
* border looks like and disagree about which of them should wear it.
|
|
181
189
|
*/
|
|
182
190
|
|
|
183
|
-
[data-ui
|
|
191
|
+
[data-ui-badge][data-part-root][data-variant='solid'] {
|
|
184
192
|
background-color: var(--_solid, ButtonFace);
|
|
185
193
|
border-color: var(--_edge, ButtonFace);
|
|
186
194
|
color: var(--_on-solid, ButtonText);
|
|
187
195
|
}
|
|
188
196
|
|
|
189
|
-
[data-ui
|
|
197
|
+
[data-ui-badge][data-part-root][data-variant='soft'] {
|
|
190
198
|
background-color: var(--_surface, ButtonFace);
|
|
191
199
|
border-color: var(--_border, ButtonBorder);
|
|
192
200
|
color: var(--_text, ButtonText);
|
|
193
201
|
}
|
|
194
202
|
|
|
195
|
-
[data-ui
|
|
203
|
+
[data-ui-badge][data-part-root][data-variant='outline'] {
|
|
196
204
|
background-color: transparent;
|
|
197
205
|
border-color: var(--_border, ButtonBorder);
|
|
198
206
|
color: var(--_text, ButtonText);
|
|
@@ -200,7 +208,7 @@
|
|
|
200
208
|
|
|
201
209
|
/* ── Size ─────────────────────────────────────────────────────────────── */
|
|
202
210
|
|
|
203
|
-
[data-ui
|
|
211
|
+
[data-ui-badge][data-part-root][data-size='sm'] {
|
|
204
212
|
--_font-size: var(--slotted-control-font-size-sm, 12px);
|
|
205
213
|
/* `0px` rather than `0`: a unitless zero inside the `--_block-size` sum
|
|
206
214
|
makes the whole calculation invalid, and `min-block-size` silently fell
|
|
@@ -216,7 +224,7 @@
|
|
|
216
224
|
* a rounding error: a 12px badge and a 13px badge should not carry visibly
|
|
217
225
|
* different glyphs.
|
|
218
226
|
*/
|
|
219
|
-
[data-ui
|
|
227
|
+
[data-ui-badge][data-part-root][data-size='lg'] {
|
|
220
228
|
--_font-size: var(--slotted-control-font-size-lg, 14px);
|
|
221
229
|
--_icon-size: var(--slotted-control-icon-size-md, 16px);
|
|
222
230
|
--_inset-block: var(--slotted-space-2, 0.25rem);
|
|
@@ -226,7 +234,7 @@
|
|
|
226
234
|
|
|
227
235
|
/* ── Shape ────────────────────────────────────────────────────────────── */
|
|
228
236
|
|
|
229
|
-
[data-ui
|
|
237
|
+
[data-ui-badge][data-part-root][data-shape='square'] {
|
|
230
238
|
border-radius: var(--slotted-badge-radius, var(--slotted-radius-sm, 4px));
|
|
231
239
|
}
|
|
232
240
|
|
|
@@ -244,7 +252,7 @@
|
|
|
244
252
|
* A dot renders no value, so nothing is clipped. Text a consumer forces into
|
|
245
253
|
* one overflows rather than disappearing.
|
|
246
254
|
*/
|
|
247
|
-
[data-ui
|
|
255
|
+
[data-ui-badge][data-part-root][data-shape='dot'] {
|
|
248
256
|
block-size: var(--_dot-size);
|
|
249
257
|
border-color: var(--slotted-badge-dot-border-color, var(--slotted-border-strong, CanvasText));
|
|
250
258
|
border-radius: var(--slotted-radius-full, 9999px);
|
|
@@ -262,7 +270,7 @@
|
|
|
262
270
|
* can make the root an `<a>` and a ring that appears only where a family
|
|
263
271
|
* expects focus is a ring that goes missing.
|
|
264
272
|
*/
|
|
265
|
-
[data-ui
|
|
273
|
+
[data-ui-badge][data-part-root]:focus-visible {
|
|
266
274
|
outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
|
|
267
275
|
outline-offset: var(--slotted-focus-ring-offset, 2px);
|
|
268
276
|
}
|
|
@@ -293,14 +301,14 @@
|
|
|
293
301
|
* below its content inside the flex root, which is the condition
|
|
294
302
|
* `text-overflow` needs to have anything to do.
|
|
295
303
|
*/
|
|
296
|
-
[data-ui
|
|
304
|
+
[data-ui-badge] [data-part-label] {
|
|
297
305
|
min-inline-size: 0;
|
|
298
306
|
overflow: hidden;
|
|
299
307
|
text-overflow: ellipsis;
|
|
300
308
|
}
|
|
301
309
|
|
|
302
310
|
@supports (text-box: trim-both cap alphabetic) {
|
|
303
|
-
[data-ui
|
|
311
|
+
[data-ui-badge] [data-part-label] {
|
|
304
312
|
/**
|
|
305
313
|
* A descender and a tall diacritic both live outside a box trimmed to the
|
|
306
314
|
* cap and the baseline, and `overflow: hidden` cut them off — visible in
|
|
@@ -323,8 +331,8 @@
|
|
|
323
331
|
* from its container, and a bare glyph host such as `ng-icon` reads the
|
|
324
332
|
* slot's font-size, so both are the glyph scale.
|
|
325
333
|
*/
|
|
326
|
-
[data-ui
|
|
327
|
-
[data-ui
|
|
334
|
+
[data-ui-badge] [data-part-start],
|
|
335
|
+
[data-ui-badge] [data-part-end] {
|
|
328
336
|
--slotted-icon-size: var(--_icon-size);
|
|
329
337
|
|
|
330
338
|
align-items: center;
|
|
@@ -338,8 +346,8 @@
|
|
|
338
346
|
line-height: 1;
|
|
339
347
|
}
|
|
340
348
|
|
|
341
|
-
[data-ui
|
|
342
|
-
[data-ui
|
|
349
|
+
[data-ui-badge] [data-part-start] > *,
|
|
350
|
+
[data-ui-badge] [data-part-end] > * {
|
|
343
351
|
block-size: 100%;
|
|
344
352
|
display: block;
|
|
345
353
|
inline-size: 100%;
|
|
@@ -358,7 +366,7 @@
|
|
|
358
366
|
* frame is read in. Everything else — which corner, how far in from it — is
|
|
359
367
|
* written in logical insets and mirrors on its own.
|
|
360
368
|
*/
|
|
361
|
-
[data-ui
|
|
369
|
+
[data-ui-badge][data-part-anchor] {
|
|
362
370
|
--_dir: 1;
|
|
363
371
|
/* Half the badge's own size. A proportion of the box rather than a step of
|
|
364
372
|
any scale, which is why it is geometry here and not a token. */
|
|
@@ -389,25 +397,25 @@
|
|
|
389
397
|
vertical-align: middle;
|
|
390
398
|
}
|
|
391
399
|
|
|
392
|
-
[data-ui
|
|
400
|
+
[data-ui-badge][data-part-anchor]:dir(rtl) {
|
|
393
401
|
--_dir: -1;
|
|
394
402
|
}
|
|
395
403
|
|
|
396
|
-
[data-ui
|
|
404
|
+
[data-ui-badge][data-part-anchor][data-overlap='circle'] {
|
|
397
405
|
--_anchor-inset: 14%;
|
|
398
406
|
}
|
|
399
407
|
|
|
400
|
-
[data-ui
|
|
401
|
-
[data-ui
|
|
408
|
+
[data-ui-badge][data-part-anchor][data-placement='top-start'],
|
|
409
|
+
[data-ui-badge][data-part-anchor][data-placement='bottom-start'] {
|
|
402
410
|
--_overhang-inline: -50%;
|
|
403
411
|
}
|
|
404
412
|
|
|
405
|
-
[data-ui
|
|
406
|
-
[data-ui
|
|
413
|
+
[data-ui-badge][data-part-anchor][data-placement='bottom-start'],
|
|
414
|
+
[data-ui-badge][data-part-anchor][data-placement='bottom-end'] {
|
|
407
415
|
--_overhang-block: 50%;
|
|
408
416
|
}
|
|
409
417
|
|
|
410
|
-
[data-ui
|
|
418
|
+
[data-ui-badge][data-part-anchor] > [data-ui-badge][data-part-root] {
|
|
411
419
|
/**
|
|
412
420
|
* The ring is what separates the badge from whatever it is sitting on.
|
|
413
421
|
* It is a token rather than a boolean, because a badge inside a card, a
|
|
@@ -424,23 +432,23 @@
|
|
|
424
432
|
z-index: 1;
|
|
425
433
|
}
|
|
426
434
|
|
|
427
|
-
[data-ui
|
|
428
|
-
[data-ui
|
|
435
|
+
[data-ui-badge][data-part-anchor][data-placement='top-end'] > [data-part-root],
|
|
436
|
+
[data-ui-badge][data-part-anchor][data-placement='top-start'] > [data-part-root] {
|
|
429
437
|
inset-block-start: var(--_anchor-inset);
|
|
430
438
|
}
|
|
431
439
|
|
|
432
|
-
[data-ui
|
|
433
|
-
[data-ui
|
|
440
|
+
[data-ui-badge][data-part-anchor][data-placement='bottom-end'] > [data-part-root],
|
|
441
|
+
[data-ui-badge][data-part-anchor][data-placement='bottom-start'] > [data-part-root] {
|
|
434
442
|
inset-block-end: var(--_anchor-inset);
|
|
435
443
|
}
|
|
436
444
|
|
|
437
|
-
[data-ui
|
|
438
|
-
[data-ui
|
|
445
|
+
[data-ui-badge][data-part-anchor][data-placement='top-end'] > [data-part-root],
|
|
446
|
+
[data-ui-badge][data-part-anchor][data-placement='bottom-end'] > [data-part-root] {
|
|
439
447
|
inset-inline-end: var(--_anchor-inset);
|
|
440
448
|
}
|
|
441
449
|
|
|
442
|
-
[data-ui
|
|
443
|
-
[data-ui
|
|
450
|
+
[data-ui-badge][data-part-anchor][data-placement='top-start'] > [data-part-root],
|
|
451
|
+
[data-ui-badge][data-part-anchor][data-placement='bottom-start'] > [data-part-root] {
|
|
444
452
|
inset-inline-start: var(--_anchor-inset);
|
|
445
453
|
}
|
|
446
454
|
|
|
@@ -455,7 +463,7 @@
|
|
|
455
463
|
* from the page.
|
|
456
464
|
*/
|
|
457
465
|
@media (forced-colors: active) {
|
|
458
|
-
[data-ui
|
|
466
|
+
[data-ui-badge][data-part-root] {
|
|
459
467
|
border-color: currentColor;
|
|
460
468
|
}
|
|
461
469
|
}
|
|
@@ -40,6 +40,11 @@
|
|
|
40
40
|
"--slotted-tone-danger-solid",
|
|
41
41
|
"--slotted-tone-danger-surface",
|
|
42
42
|
"--slotted-tone-danger-text",
|
|
43
|
+
"--slotted-tone-info-border",
|
|
44
|
+
"--slotted-tone-info-on-solid",
|
|
45
|
+
"--slotted-tone-info-solid",
|
|
46
|
+
"--slotted-tone-info-surface",
|
|
47
|
+
"--slotted-tone-info-text",
|
|
43
48
|
"--slotted-tone-secondary-border",
|
|
44
49
|
"--slotted-tone-secondary-on-solid",
|
|
45
50
|
"--slotted-tone-secondary-solid-hover",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* rule `link` arrived at after painting hover with a fill role; a trail is
|
|
13
13
|
* text for the same reason a link is.
|
|
14
14
|
*/
|
|
15
|
-
[data-ui
|
|
15
|
+
[data-ui-breadcrumb] {
|
|
16
16
|
--_rest: var(--slotted-breadcrumb-color, var(--slotted-text-muted, GrayText));
|
|
17
17
|
--_strong: var(--slotted-breadcrumb-color-current, var(--slotted-text, CanvasText));
|
|
18
18
|
--_hover: var(
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
* inline gap because two wrapped lines of one type size need less air between
|
|
60
60
|
* them than two words do beside each other.
|
|
61
61
|
*/
|
|
62
|
-
[data-ui
|
|
62
|
+
[data-ui-breadcrumb] [data-part-list] {
|
|
63
63
|
align-items: center;
|
|
64
64
|
display: flex;
|
|
65
65
|
flex-wrap: wrap;
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
);
|
|
80
80
|
}
|
|
81
81
|
|
|
82
|
-
[data-ui
|
|
82
|
+
[data-ui-breadcrumb] [data-part-item] {
|
|
83
83
|
align-items: center;
|
|
84
84
|
column-gap: var(--_gap);
|
|
85
85
|
display: flex;
|
|
@@ -104,7 +104,7 @@
|
|
|
104
104
|
* crumb rendered and the collapse did nothing at all. The capture is what
|
|
105
105
|
* said so; both bindings write the attribute and neither could have known.
|
|
106
106
|
*/
|
|
107
|
-
[data-ui
|
|
107
|
+
[data-ui-breadcrumb] [data-part-item][hidden] {
|
|
108
108
|
display: none;
|
|
109
109
|
}
|
|
110
110
|
|
|
@@ -120,12 +120,12 @@
|
|
|
120
120
|
* frame of a drag, and the ellipsis returns in the same frame to the place
|
|
121
121
|
* the crumbs leave.
|
|
122
122
|
*/
|
|
123
|
-
[data-ui
|
|
123
|
+
[data-ui-breadcrumb][data-expanded] [data-part-item] {
|
|
124
124
|
transition: opacity var(--slotted-duration-medium) var(--slotted-easing-enter);
|
|
125
125
|
}
|
|
126
126
|
|
|
127
127
|
@starting-style {
|
|
128
|
-
[data-ui
|
|
128
|
+
[data-ui-breadcrumb][data-expanded] [data-part-item] {
|
|
129
129
|
opacity: 0;
|
|
130
130
|
}
|
|
131
131
|
}
|
|
@@ -139,7 +139,7 @@
|
|
|
139
139
|
* it distinguishes the one crumb being addressed from the seven beside it.
|
|
140
140
|
*/
|
|
141
141
|
|
|
142
|
-
[data-ui
|
|
142
|
+
[data-ui-breadcrumb] :is([data-part-link], [data-part-page], [data-part-trigger]) {
|
|
143
143
|
border-radius: var(--slotted-breadcrumb-radius, var(--slotted-control-radius, 4px));
|
|
144
144
|
display: block;
|
|
145
145
|
/**
|
|
@@ -165,7 +165,7 @@
|
|
|
165
165
|
white-space: nowrap;
|
|
166
166
|
}
|
|
167
167
|
|
|
168
|
-
[data-ui
|
|
168
|
+
[data-ui-breadcrumb] [data-part-link] {
|
|
169
169
|
color: inherit;
|
|
170
170
|
}
|
|
171
171
|
|
|
@@ -175,7 +175,7 @@
|
|
|
175
175
|
* the pointer, and a chevron after the label that says a list opens here
|
|
176
176
|
* rather than a page. It keeps the line's height; the menu is the consumer's.
|
|
177
177
|
*/
|
|
178
|
-
[data-ui
|
|
178
|
+
[data-ui-breadcrumb] [data-part-trigger] {
|
|
179
179
|
appearance: none;
|
|
180
180
|
background-color: transparent;
|
|
181
181
|
border: 0;
|
|
@@ -187,7 +187,7 @@
|
|
|
187
187
|
}
|
|
188
188
|
|
|
189
189
|
/* The switcher of the page the reader is on is still the page. */
|
|
190
|
-
[data-ui
|
|
190
|
+
[data-ui-breadcrumb] [data-part-trigger][aria-current='page'] {
|
|
191
191
|
color: var(--_strong);
|
|
192
192
|
font-weight: var(--slotted-breadcrumb-page-weight, var(--slotted-font-weight-medium, 500));
|
|
193
193
|
}
|
|
@@ -201,26 +201,26 @@
|
|
|
201
201
|
* An atomic inline box takes no underline, so the hover rule marks the words
|
|
202
202
|
* and not the glyph.
|
|
203
203
|
*/
|
|
204
|
-
[data-ui
|
|
205
|
-
:is([data-part
|
|
206
|
-
> :is([data-ui
|
|
204
|
+
[data-ui-breadcrumb]
|
|
205
|
+
:is([data-part-link], [data-part-page], [data-part-trigger])
|
|
206
|
+
> :is([data-ui-icon], [data-ui-avatar]) {
|
|
207
207
|
margin-inline-end: var(--slotted-breadcrumb-content-gap, var(--slotted-space-3, 6px));
|
|
208
208
|
}
|
|
209
209
|
|
|
210
|
-
[data-ui
|
|
211
|
-
:is([data-part
|
|
212
|
-
> [data-ui
|
|
210
|
+
[data-ui-breadcrumb]
|
|
211
|
+
:is([data-part-link], [data-part-page], [data-part-trigger])
|
|
212
|
+
> [data-ui-badge] {
|
|
213
213
|
margin-inline-start: var(--slotted-breadcrumb-content-gap, var(--slotted-space-3, 6px));
|
|
214
214
|
}
|
|
215
215
|
|
|
216
216
|
/* The switcher's chevron is its last element, after the label. */
|
|
217
|
-
[data-ui
|
|
217
|
+
[data-ui-breadcrumb] [data-part-trigger] > [data-ui-icon]:last-child {
|
|
218
218
|
margin-inline: var(--slotted-space-2, 4px) 0;
|
|
219
219
|
transition: rotate var(--slotted-duration-short) var(--slotted-easing-standard);
|
|
220
220
|
}
|
|
221
221
|
|
|
222
222
|
/* The chevron turns while the menu it opened is up, and back when it closes. */
|
|
223
|
-
[data-ui
|
|
223
|
+
[data-ui-breadcrumb] [data-part-trigger][data-open] > [data-ui-icon]:last-child {
|
|
224
224
|
rotate: 180deg;
|
|
225
225
|
}
|
|
226
226
|
|
|
@@ -230,19 +230,19 @@
|
|
|
230
230
|
* weight is on the one crumb that never moves, so nothing beside it shifts
|
|
231
231
|
* when the pointer arrives.
|
|
232
232
|
*/
|
|
233
|
-
[data-ui
|
|
233
|
+
[data-ui-breadcrumb] [data-part-page] {
|
|
234
234
|
color: var(--_strong);
|
|
235
235
|
font-weight: var(--slotted-breadcrumb-page-weight, var(--slotted-font-weight-medium, 500));
|
|
236
236
|
}
|
|
237
237
|
|
|
238
|
-
[data-ui
|
|
238
|
+
[data-ui-breadcrumb] :is([data-part-link], [data-part-trigger]):not([data-disabled]):hover {
|
|
239
239
|
color: var(--_hover);
|
|
240
240
|
text-decoration-color: currentColor;
|
|
241
241
|
}
|
|
242
242
|
|
|
243
243
|
/* An open switcher holds the pressed colour for as long as its menu is up. */
|
|
244
|
-
[data-ui
|
|
245
|
-
:is([data-part
|
|
244
|
+
[data-ui-breadcrumb]
|
|
245
|
+
:is([data-part-link], [data-part-trigger]):not([data-disabled]):is(:active, [data-open]) {
|
|
246
246
|
color: var(--_strong);
|
|
247
247
|
/* Without the pointer over it an open switcher would read as the page:
|
|
248
248
|
same colour, no mark. The underline says which crumb the menu is from. */
|
|
@@ -254,12 +254,12 @@
|
|
|
254
254
|
* brings only the underline, and a press — or the menu it opened — steps the
|
|
255
255
|
* label back to the hover mix. Hover and press still differ, as on a link.
|
|
256
256
|
*/
|
|
257
|
-
[data-ui
|
|
257
|
+
[data-ui-breadcrumb] [data-part-trigger][aria-current='page']:not([data-disabled]):hover {
|
|
258
258
|
color: var(--_strong);
|
|
259
259
|
}
|
|
260
260
|
|
|
261
|
-
[data-ui
|
|
262
|
-
[data-part
|
|
261
|
+
[data-ui-breadcrumb]
|
|
262
|
+
[data-part-trigger][aria-current='page']:not([data-disabled]):is(:active, [data-open]) {
|
|
263
263
|
color: var(--_hover);
|
|
264
264
|
}
|
|
265
265
|
|
|
@@ -273,13 +273,13 @@
|
|
|
273
273
|
* box, so a ring drawn outside crossed both separators — at two pixels out,
|
|
274
274
|
* and on its own edge at dense.
|
|
275
275
|
*/
|
|
276
|
-
[data-ui
|
|
276
|
+
[data-ui-breadcrumb] :is([data-part-link], [data-part-trigger]):focus-visible {
|
|
277
277
|
outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
|
|
278
278
|
outline-offset: var(--slotted-breadcrumb-focus-ring-offset, 1px);
|
|
279
279
|
text-decoration-color: currentColor;
|
|
280
280
|
}
|
|
281
281
|
|
|
282
|
-
[data-ui
|
|
282
|
+
[data-ui-breadcrumb] [data-part-ellipsis]:focus-visible {
|
|
283
283
|
outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
|
|
284
284
|
outline-offset: var(
|
|
285
285
|
--slotted-breadcrumb-ellipsis-focus-ring-offset,
|
|
@@ -300,7 +300,7 @@
|
|
|
300
300
|
* with children shows the children and the empty one shows the rule.
|
|
301
301
|
*/
|
|
302
302
|
|
|
303
|
-
[data-ui
|
|
303
|
+
[data-ui-breadcrumb] [data-part-separator] {
|
|
304
304
|
align-items: center;
|
|
305
305
|
color: var(--_separator);
|
|
306
306
|
display: flex;
|
|
@@ -308,7 +308,7 @@
|
|
|
308
308
|
justify-content: center;
|
|
309
309
|
}
|
|
310
310
|
|
|
311
|
-
[data-ui
|
|
311
|
+
[data-ui-breadcrumb] [data-part-separator]:empty {
|
|
312
312
|
background-color: currentColor;
|
|
313
313
|
/* Rounded, so a rule of `0.9em` ends on a whole pixel: 12 at 13px, 11 dense. */
|
|
314
314
|
block-size: round(nearest, var(--slotted-breadcrumb-separator-length, 0.9em), 1px);
|
|
@@ -325,7 +325,7 @@
|
|
|
325
325
|
* trail itself runs the other way. `:dir()` rather than an ancestor `[dir]`,
|
|
326
326
|
* so a trail inside a left-to-right island leans the way that island reads.
|
|
327
327
|
*/
|
|
328
|
-
[data-ui
|
|
328
|
+
[data-ui-breadcrumb] [data-part-separator]:empty:dir(rtl) {
|
|
329
329
|
rotate: calc(-1 * var(--slotted-breadcrumb-separator-skew, 20deg));
|
|
330
330
|
}
|
|
331
331
|
|
|
@@ -359,7 +359,7 @@
|
|
|
359
359
|
* reader hears is a count rather than three dots.
|
|
360
360
|
*/
|
|
361
361
|
|
|
362
|
-
[data-ui
|
|
362
|
+
[data-ui-breadcrumb] [data-part-ellipsis] {
|
|
363
363
|
--slotted-icon-size: var(--_icon-size);
|
|
364
364
|
|
|
365
365
|
align-items: center;
|
|
@@ -394,7 +394,7 @@
|
|
|
394
394
|
}
|
|
395
395
|
|
|
396
396
|
/* The halo that completes the target where the line is shorter than it. */
|
|
397
|
-
[data-ui
|
|
397
|
+
[data-ui-breadcrumb] [data-part-ellipsis]::after {
|
|
398
398
|
content: '';
|
|
399
399
|
inset: min(0px, calc((100% - var(--slotted-target-min, 24px)) / 2));
|
|
400
400
|
position: absolute;
|
|
@@ -403,17 +403,17 @@
|
|
|
403
403
|
/* On a finger the halo reaches the comfortable size in both axes; the box
|
|
404
404
|
keeps the line's height, so the trail does not grow. */
|
|
405
405
|
@media (pointer: coarse) {
|
|
406
|
-
[data-ui
|
|
406
|
+
[data-ui-breadcrumb] [data-part-ellipsis]::after {
|
|
407
407
|
inset: min(0px, calc((100% - var(--slotted-target-comfortable, 44px)) / 2));
|
|
408
408
|
}
|
|
409
409
|
}
|
|
410
410
|
|
|
411
411
|
/* The ground moves under the pointer and nothing else does (R2). */
|
|
412
|
-
[data-ui
|
|
412
|
+
[data-ui-breadcrumb] [data-part-ellipsis]:not([data-disabled]):hover {
|
|
413
413
|
background-color: var(--slotted-breadcrumb-ellipsis-background-hover, var(--_ellipsis-hover));
|
|
414
414
|
}
|
|
415
415
|
|
|
416
|
-
[data-ui
|
|
416
|
+
[data-ui-breadcrumb] [data-part-ellipsis]:not([data-disabled]):active {
|
|
417
417
|
background-color: var(--slotted-breadcrumb-ellipsis-background-active, var(--_ellipsis-active));
|
|
418
418
|
}
|
|
419
419
|
|
|
@@ -430,11 +430,11 @@
|
|
|
430
430
|
*/
|
|
431
431
|
|
|
432
432
|
@media (forced-colors: active) {
|
|
433
|
-
[data-ui
|
|
433
|
+
[data-ui-breadcrumb] [data-part-separator]:empty {
|
|
434
434
|
background-color: GrayText;
|
|
435
435
|
}
|
|
436
436
|
|
|
437
|
-
[data-ui
|
|
437
|
+
[data-ui-breadcrumb] [data-part-ellipsis] {
|
|
438
438
|
border: var(--slotted-border-width-thin, 1px) solid ButtonBorder;
|
|
439
439
|
}
|
|
440
440
|
}
|