@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.
- 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 +35 -35
- package/src/app-shell/app-shell.css +280 -299
- package/src/aspect-ratio/aspect-ratio.css +9 -9
- package/src/attachment/attachment.css +91 -99
- package/src/avatar/avatar.css +41 -41
- package/src/avatar-group/avatar-group.css +21 -22
- package/src/badge/badge.css +37 -37
- package/src/breadcrumb/breadcrumb.css +37 -37
- package/src/button/button.css +88 -69
- package/src/button-group/button-group.css +69 -73
- 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 +147 -151
- package/src/chart/chart.css +225 -240
- 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 +99 -101
- 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 +99 -104
- package/src/dashboard-grid/dashboard-grid.css +104 -107
- package/src/data-grid/data-grid.css +458 -456
- package/src/data-grid/data-grid.tokens.json +2 -0
- package/src/data-list/data-list.css +67 -69
- package/src/date-field/date-field.css +50 -50
- 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 +73 -78
- 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 +300 -148
- package/src/divider/divider.css +18 -18
- package/src/drawer/drawer.css +186 -209
- package/src/entity-picker/entity-picker.css +220 -239
- 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 +21 -24
- 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 +15 -15
- 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 +28 -28
- package/src/kbd/kbd.css +26 -26
- package/src/link/link.css +15 -15
- package/src/list/list.css +20 -20
- package/src/list-item/list-item.css +66 -66
- 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 +63 -65
- package/src/menubar/menubar.css +13 -13
- package/src/message/message.css +174 -202
- package/src/message-scroller/message-scroller.css +41 -42
- package/src/multi-select/multi-select.css +131 -137
- package/src/navigation-menu/navigation-menu.css +167 -188
- package/src/notification-center/notification-center.css +134 -148
- package/src/number-field/number-field.css +76 -81
- package/src/otp-input/otp-input.css +48 -48
- package/src/page/page.css +23 -23
- package/src/page-header/page-header.css +219 -280
- package/src/pagination/pagination.css +68 -72
- package/src/popover/popover.css +40 -49
- package/src/progress-indicator/progress-indicator.css +85 -90
- package/src/prompt-composer/prompt-composer.css +94 -99
- package/src/prose/prose.css +71 -75
- package/src/radio-group/radio-group.css +98 -103
- package/src/rating/rating.css +132 -132
- package/src/result-state/result-state.css +74 -77
- package/src/saved-views/saved-views.css +41 -47
- package/src/scroll-area/scroll-area.css +32 -35
- package/src/section/section.css +16 -16
- package/src/segmented-control/segmented-control.css +77 -79
- package/src/select/select.css +113 -115
- package/src/side-navigation/side-navigation.css +170 -180
- package/src/skeleton/skeleton.css +47 -48
- package/src/slider/slider.css +86 -88
- package/src/sparkline/sparkline.css +32 -32
- package/src/spinner/spinner.css +4 -4
- package/src/split-button/split-button.css +26 -31
- package/src/splitter/splitter.css +35 -35
- package/src/stack/stack.css +24 -24
- package/src/stat-card/stat-card.css +102 -103
- 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 +189 -198
- package/src/table-of-contents/table-of-contents.css +51 -54
- package/src/tabs/tabs.css +143 -162
- package/src/tag/tag.css +67 -71
- package/src/tags-input/tags-input.css +124 -74
- package/src/tags-input/tags-input.tokens.json +6 -1
- package/src/text-field/text-field.css +108 -126
- package/src/textarea/textarea.css +26 -26
- package/src/time-field/time-field.css +67 -67
- 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 +244 -266
- package/src/toast/toast.css +81 -90
- package/src/toggle/toggle.css +29 -33
- package/src/toggle-group/toggle-group.css +67 -71
- 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 +36 -36
- 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/button/button.css
CHANGED
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
* outline. The rebuild that preceded this one thickened the border on a
|
|
21
21
|
* pressed toggle, which moved every control beside it by two pixels.
|
|
22
22
|
*/
|
|
23
|
-
[data-ui
|
|
23
|
+
[data-ui-button] {
|
|
24
24
|
--_solid: var(--slotted-tone-accent-solid);
|
|
25
25
|
--_solid-hover: var(--slotted-tone-accent-solid-hover);
|
|
26
26
|
--_solid-active: var(--slotted-tone-accent-solid-active);
|
|
@@ -135,7 +135,7 @@
|
|
|
135
135
|
|
|
136
136
|
/* ── Tone: which of the five semantic colours the control speaks in ───── */
|
|
137
137
|
|
|
138
|
-
[data-ui
|
|
138
|
+
[data-ui-button][data-tone='secondary'] {
|
|
139
139
|
--_solid: var(--slotted-tone-secondary-solid);
|
|
140
140
|
--_solid-hover: var(--slotted-tone-secondary-solid-hover);
|
|
141
141
|
--_solid-active: var(--slotted-tone-secondary-solid-active);
|
|
@@ -163,7 +163,7 @@
|
|
|
163
163
|
* with the inverse text. A product that keeps the accent for data draws its
|
|
164
164
|
* primary action in it.
|
|
165
165
|
*/
|
|
166
|
-
[data-ui
|
|
166
|
+
[data-ui-button][data-tone='neutral'] {
|
|
167
167
|
--_solid: var(--slotted-tone-neutral-solid);
|
|
168
168
|
--_solid-hover: var(--slotted-tone-neutral-solid-hover);
|
|
169
169
|
--_solid-active: var(--slotted-tone-neutral-solid-active);
|
|
@@ -171,7 +171,7 @@
|
|
|
171
171
|
--_text: var(--slotted-tone-neutral-text);
|
|
172
172
|
}
|
|
173
173
|
|
|
174
|
-
[data-ui
|
|
174
|
+
[data-ui-button][data-tone='success'] {
|
|
175
175
|
--_solid: var(--slotted-tone-success-solid);
|
|
176
176
|
--_solid-hover: var(--slotted-tone-success-solid-hover);
|
|
177
177
|
--_solid-active: var(--slotted-tone-success-solid-active);
|
|
@@ -179,7 +179,7 @@
|
|
|
179
179
|
--_text: var(--slotted-tone-success-text);
|
|
180
180
|
}
|
|
181
181
|
|
|
182
|
-
[data-ui
|
|
182
|
+
[data-ui-button][data-tone='warning'] {
|
|
183
183
|
--_solid: var(--slotted-tone-warning-solid);
|
|
184
184
|
--_solid-hover: var(--slotted-tone-warning-solid-hover);
|
|
185
185
|
--_solid-active: var(--slotted-tone-warning-solid-active);
|
|
@@ -187,7 +187,7 @@
|
|
|
187
187
|
--_text: var(--slotted-tone-warning-text);
|
|
188
188
|
}
|
|
189
189
|
|
|
190
|
-
[data-ui
|
|
190
|
+
[data-ui-button][data-tone='danger'] {
|
|
191
191
|
--_solid: var(--slotted-tone-danger-solid);
|
|
192
192
|
--_solid-hover: var(--slotted-tone-danger-solid-hover);
|
|
193
193
|
--_solid-active: var(--slotted-tone-danger-solid-active);
|
|
@@ -197,7 +197,7 @@
|
|
|
197
197
|
|
|
198
198
|
/* ── Size: the control scale, one step of it per member instance ──────── */
|
|
199
199
|
|
|
200
|
-
[data-ui
|
|
200
|
+
[data-ui-button][data-size='sm'] {
|
|
201
201
|
--_height: var(--slotted-control-height-sm, 30px);
|
|
202
202
|
--_padding-inline: var(--slotted-control-padding-inline-sm, 10px);
|
|
203
203
|
--_font-size: var(--slotted-control-font-size-sm, 12px);
|
|
@@ -205,7 +205,7 @@
|
|
|
205
205
|
--_gap: var(--slotted-control-gap-sm, 6px);
|
|
206
206
|
}
|
|
207
207
|
|
|
208
|
-
[data-ui
|
|
208
|
+
[data-ui-button][data-size='lg'] {
|
|
209
209
|
--_height: var(--slotted-control-height-lg, 38px);
|
|
210
210
|
--_padding-inline: var(--slotted-control-padding-inline-lg, 16px);
|
|
211
211
|
--_font-size: var(--slotted-control-font-size-lg, 14px);
|
|
@@ -247,7 +247,7 @@
|
|
|
247
247
|
* sheet carried the shadow on the base rule for one release and every
|
|
248
248
|
* member inherited it, which is the defect this split exists to close.
|
|
249
249
|
*/
|
|
250
|
-
[data-ui
|
|
250
|
+
[data-ui-button][data-variant='solid'] {
|
|
251
251
|
background: var(--_solid, ButtonFace);
|
|
252
252
|
border-color: var(--_edge, ButtonBorder);
|
|
253
253
|
box-shadow: var(--slotted-control-shadow, none);
|
|
@@ -263,14 +263,14 @@
|
|
|
263
263
|
* button the darkest line on the form, and the foundation now keeps that
|
|
264
264
|
* step for the line between two surfaces.
|
|
265
265
|
*/
|
|
266
|
-
[data-ui
|
|
266
|
+
[data-ui-button][data-variant='outline'] {
|
|
267
267
|
background: transparent;
|
|
268
268
|
border-color: var(--slotted-control-border-color, ButtonBorder);
|
|
269
269
|
box-shadow: var(--slotted-control-shadow, none);
|
|
270
270
|
color: var(--_text, ButtonText);
|
|
271
271
|
}
|
|
272
272
|
|
|
273
|
-
[data-ui
|
|
273
|
+
[data-ui-button][data-variant='ghost'] {
|
|
274
274
|
background: transparent;
|
|
275
275
|
border-color: transparent;
|
|
276
276
|
color: var(--_text, ButtonText);
|
|
@@ -282,9 +282,9 @@
|
|
|
282
282
|
* rule: its solid step is the page's own colour, so it takes the band the way
|
|
283
283
|
* a bare control does.
|
|
284
284
|
*/
|
|
285
|
-
[data-ui
|
|
286
|
-
[data-ui
|
|
287
|
-
[data-ui
|
|
285
|
+
[data-ui-button][data-variant='outline'],
|
|
286
|
+
[data-ui-button][data-variant='ghost'],
|
|
287
|
+
[data-ui-button][data-variant='solid'][data-tone='secondary'] {
|
|
288
288
|
--_sweep-strength: 0.18;
|
|
289
289
|
}
|
|
290
290
|
|
|
@@ -306,7 +306,7 @@
|
|
|
306
306
|
* It sits above hover and below loading and disabled, which is the order
|
|
307
307
|
* `STATE_PRECEDENCE` sets.
|
|
308
308
|
*/
|
|
309
|
-
[data-ui
|
|
309
|
+
[data-ui-button][data-pressed]:not(:disabled):not([data-disabled]) {
|
|
310
310
|
background: var(--slotted-tone-accent-subtle-active, Highlight);
|
|
311
311
|
border-color: var(--slotted-tone-accent-border, Highlight);
|
|
312
312
|
/* A ghost toggle that is on has taken a fill and an edge, so it is a framed
|
|
@@ -340,13 +340,13 @@
|
|
|
340
340
|
* and nothing moves.
|
|
341
341
|
*/
|
|
342
342
|
|
|
343
|
-
[data-ui
|
|
343
|
+
[data-ui-button][data-variant='solid']:hover:not(:disabled):not([data-disabled]):not(
|
|
344
344
|
[data-loading]
|
|
345
345
|
):not([data-pressed]) {
|
|
346
346
|
background: var(--_solid-hover, Highlight);
|
|
347
347
|
}
|
|
348
348
|
|
|
349
|
-
[data-ui
|
|
349
|
+
[data-ui-button][data-variant='solid']:active:not(:disabled):not([data-disabled]):not(
|
|
350
350
|
[data-loading]
|
|
351
351
|
):not([data-pressed]) {
|
|
352
352
|
background: var(--_solid-active, Highlight);
|
|
@@ -355,19 +355,19 @@
|
|
|
355
355
|
transition-duration: var(--slotted-duration-instant);
|
|
356
356
|
}
|
|
357
357
|
|
|
358
|
-
[data-ui
|
|
358
|
+
[data-ui-button][data-variant='outline']:hover:not(:disabled):not([data-disabled]):not(
|
|
359
359
|
[data-loading]
|
|
360
360
|
):not([data-pressed]),
|
|
361
|
-
[data-ui
|
|
361
|
+
[data-ui-button][data-variant='ghost']:hover:not(:disabled):not([data-disabled]):not(
|
|
362
362
|
[data-loading]
|
|
363
363
|
):not([data-pressed]) {
|
|
364
364
|
background: var(--slotted-tone-secondary-subtle-hover, ButtonFace);
|
|
365
365
|
}
|
|
366
366
|
|
|
367
|
-
[data-ui
|
|
367
|
+
[data-ui-button][data-variant='outline']:active:not(:disabled):not([data-disabled]):not(
|
|
368
368
|
[data-loading]
|
|
369
369
|
):not([data-pressed]),
|
|
370
|
-
[data-ui
|
|
370
|
+
[data-ui-button][data-variant='ghost']:active:not(:disabled):not([data-disabled]):not(
|
|
371
371
|
[data-loading]
|
|
372
372
|
):not([data-pressed]) {
|
|
373
373
|
background: var(--slotted-tone-secondary-subtle-active, ButtonFace);
|
|
@@ -379,18 +379,18 @@
|
|
|
379
379
|
* ground's own hover step and never on the neutral one a toggle that is off
|
|
380
380
|
* hovers with — the two states share no surface in any of theirs.
|
|
381
381
|
*/
|
|
382
|
-
[data-ui
|
|
382
|
+
[data-ui-button][data-pressed]:hover:not(:disabled):not([data-disabled]):not([data-loading]) {
|
|
383
383
|
background: var(--slotted-tone-accent-subtle-hover, Highlight);
|
|
384
384
|
}
|
|
385
385
|
|
|
386
|
-
[data-ui
|
|
386
|
+
[data-ui-button][data-pressed]:active:not(:disabled):not([data-disabled]):not([data-loading]) {
|
|
387
387
|
background: var(--slotted-tone-accent-subtle-active, Highlight);
|
|
388
388
|
transition-duration: var(--slotted-duration-instant);
|
|
389
389
|
}
|
|
390
390
|
|
|
391
391
|
/* ── Focus ────────────────────────────────────────────────────────────── */
|
|
392
392
|
|
|
393
|
-
[data-ui
|
|
393
|
+
[data-ui-button]:focus-visible {
|
|
394
394
|
outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
|
|
395
395
|
outline-offset: var(--slotted-focus-ring-offset, 2px);
|
|
396
396
|
}
|
|
@@ -408,8 +408,8 @@
|
|
|
408
408
|
* is always there.
|
|
409
409
|
*/
|
|
410
410
|
|
|
411
|
-
[data-ui
|
|
412
|
-
[data-ui
|
|
411
|
+
[data-ui-button]:disabled,
|
|
412
|
+
[data-ui-button][data-disabled] {
|
|
413
413
|
/* Nothing a person cannot reach is lifted off the page — the rule
|
|
414
414
|
`text-field` states for the same shadow. */
|
|
415
415
|
box-shadow: none;
|
|
@@ -417,8 +417,8 @@
|
|
|
417
417
|
cursor: not-allowed;
|
|
418
418
|
}
|
|
419
419
|
|
|
420
|
-
[data-ui
|
|
421
|
-
[data-ui
|
|
420
|
+
[data-ui-button][data-variant='solid']:disabled,
|
|
421
|
+
[data-ui-button][data-variant='solid'][data-disabled] {
|
|
422
422
|
background: var(--slotted-disabled-background, ButtonFace);
|
|
423
423
|
/**
|
|
424
424
|
* The disabled border rather than the disabled surface, because in the
|
|
@@ -428,8 +428,8 @@
|
|
|
428
428
|
border-color: var(--slotted-disabled-border, ButtonBorder);
|
|
429
429
|
}
|
|
430
430
|
|
|
431
|
-
[data-ui
|
|
432
|
-
[data-ui
|
|
431
|
+
[data-ui-button][data-variant='outline']:disabled,
|
|
432
|
+
[data-ui-button][data-variant='outline'][data-disabled] {
|
|
433
433
|
background: transparent;
|
|
434
434
|
border-color: var(--slotted-disabled-border, GrayText);
|
|
435
435
|
}
|
|
@@ -440,8 +440,8 @@
|
|
|
440
440
|
* is `aria-pressed`, which the platform announces whether or not the control
|
|
441
441
|
* can be operated.
|
|
442
442
|
*/
|
|
443
|
-
[data-ui
|
|
444
|
-
[data-ui
|
|
443
|
+
[data-ui-button][data-pressed]:disabled,
|
|
444
|
+
[data-ui-button][data-pressed][data-disabled] {
|
|
445
445
|
background: var(--slotted-disabled-background, ButtonFace);
|
|
446
446
|
border-color: var(--slotted-disabled-border, GrayText);
|
|
447
447
|
color: var(--slotted-disabled-foreground, GrayText);
|
|
@@ -469,18 +469,18 @@
|
|
|
469
469
|
* a natively disabled control keeps the disabled tokens above, and a ghost
|
|
470
470
|
* stays flat and takes only the text.
|
|
471
471
|
*/
|
|
472
|
-
[data-ui
|
|
472
|
+
[data-ui-button][data-disabled]:not(:disabled) {
|
|
473
473
|
color: var(--slotted-text-muted, GrayText);
|
|
474
474
|
}
|
|
475
475
|
|
|
476
|
-
[data-ui
|
|
477
|
-
[data-ui
|
|
476
|
+
[data-ui-button][data-variant='solid'][data-disabled]:not(:disabled),
|
|
477
|
+
[data-ui-button][data-pressed][data-disabled]:not(:disabled) {
|
|
478
478
|
background: var(--slotted-tone-secondary-subtle-hover, ButtonFace);
|
|
479
479
|
border-color: var(--slotted-border-subtle, GrayText);
|
|
480
480
|
color: var(--slotted-text-muted, GrayText);
|
|
481
481
|
}
|
|
482
482
|
|
|
483
|
-
[data-ui
|
|
483
|
+
[data-ui-button][data-variant='outline'][data-disabled]:not(:disabled) {
|
|
484
484
|
border-color: var(--slotted-border-subtle, GrayText);
|
|
485
485
|
}
|
|
486
486
|
|
|
@@ -505,11 +505,11 @@
|
|
|
505
505
|
* supplies survives the wait and combines with the indicator's own.
|
|
506
506
|
*/
|
|
507
507
|
|
|
508
|
-
[data-ui
|
|
508
|
+
[data-ui-button][data-loading] {
|
|
509
509
|
cursor: progress;
|
|
510
510
|
}
|
|
511
511
|
|
|
512
|
-
[data-ui
|
|
512
|
+
[data-ui-button][data-loading]:has(> [data-part-indicator]) > :not([data-part-indicator]) {
|
|
513
513
|
opacity: 0;
|
|
514
514
|
}
|
|
515
515
|
|
|
@@ -518,14 +518,35 @@
|
|
|
518
518
|
* that waits. This family only says how big it is — the glyph box of its
|
|
519
519
|
* own step — and where it sits.
|
|
520
520
|
*/
|
|
521
|
-
[data-ui
|
|
521
|
+
[data-ui-button] [data-part-indicator] {
|
|
522
522
|
--slotted-spinner-size: var(--_icon-size);
|
|
523
523
|
|
|
524
524
|
flex: none;
|
|
525
525
|
}
|
|
526
526
|
|
|
527
|
+
/**
|
|
528
|
+
* The ring that stands in for a glyph takes the glyph's box. The glyph stays
|
|
529
|
+
* in the DOM, so the slot keeps its width, and is not drawn: the slot hides
|
|
530
|
+
* what it holds and the ring alone shows again. `IconButton` drew both side
|
|
531
|
+
* by side in a square of one glyph.
|
|
532
|
+
*/
|
|
533
|
+
[data-ui-button] [data-part-start]:has(> [data-part-indicator]),
|
|
534
|
+
[data-ui-button] [data-part-end]:has(> [data-part-indicator]),
|
|
535
|
+
[data-ui-button] [data-part-icon]:has(> [data-part-indicator]) {
|
|
536
|
+
visibility: hidden;
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
[data-ui-button] [data-part-start] > [data-part-indicator],
|
|
540
|
+
[data-ui-button] [data-part-end] > [data-part-indicator],
|
|
541
|
+
[data-ui-button] [data-part-icon] > [data-part-indicator] {
|
|
542
|
+
inset: 0;
|
|
543
|
+
margin: auto;
|
|
544
|
+
position: absolute;
|
|
545
|
+
visibility: visible;
|
|
546
|
+
}
|
|
547
|
+
|
|
527
548
|
/* Only the ring that has no visual slot to sit in is placed against the box. */
|
|
528
|
-
[data-ui
|
|
549
|
+
[data-ui-button] > [data-part-indicator] {
|
|
529
550
|
inset: 0;
|
|
530
551
|
/* `inset: 0` with a definite size and automatic margins centres on both
|
|
531
552
|
axes without naming a physical side. */
|
|
@@ -564,7 +585,7 @@
|
|
|
564
585
|
*/
|
|
565
586
|
@media (prefers-reduced-motion: no-preference) {
|
|
566
587
|
@media not (forced-colors: active) {
|
|
567
|
-
[data-ui
|
|
588
|
+
[data-ui-button]:not([data-shape])[data-loading]:has([data-part-indicator])::after {
|
|
568
589
|
/**
|
|
569
590
|
* The tile is crossed once per cycle, so the pair sets the speed the
|
|
570
591
|
* band travels rather than the time it takes: two heights per loop
|
|
@@ -588,19 +609,17 @@
|
|
|
588
609
|
* A band that travels against the reading direction reads as undoing
|
|
589
610
|
* rather than as progressing, so it is mirrored rather than reused.
|
|
590
611
|
*/
|
|
591
|
-
[data-ui
|
|
592
|
-
rtl
|
|
593
|
-
)::after {
|
|
612
|
+
[data-ui-button]:not([data-shape])[data-loading]:has([data-part-indicator]):dir(rtl)::after {
|
|
594
613
|
animation-direction: reverse;
|
|
595
614
|
background-image: linear-gradient(to left, transparent, currentColor 40%, transparent 80%);
|
|
596
615
|
}
|
|
597
616
|
|
|
598
|
-
[data-ui
|
|
599
|
-
> :not([data-part
|
|
617
|
+
[data-ui-button]:not([data-shape])[data-loading]:has(> [data-part-indicator])
|
|
618
|
+
> :not([data-part-indicator]) {
|
|
600
619
|
opacity: 1;
|
|
601
620
|
}
|
|
602
621
|
|
|
603
|
-
[data-ui
|
|
622
|
+
[data-ui-button]:not([data-shape])[data-loading] [data-part-indicator] {
|
|
604
623
|
opacity: 0;
|
|
605
624
|
position: absolute;
|
|
606
625
|
}
|
|
@@ -609,9 +628,9 @@
|
|
|
609
628
|
|
|
610
629
|
/* ── Parts ────────────────────────────────────────────────────────────── */
|
|
611
630
|
|
|
612
|
-
[data-ui
|
|
613
|
-
[data-ui
|
|
614
|
-
[data-ui
|
|
631
|
+
[data-ui-button] [data-part-start],
|
|
632
|
+
[data-ui-button] [data-part-end],
|
|
633
|
+
[data-ui-button] [data-part-icon] {
|
|
615
634
|
align-items: center;
|
|
616
635
|
block-size: var(--_icon-size);
|
|
617
636
|
box-sizing: border-box;
|
|
@@ -625,9 +644,9 @@
|
|
|
625
644
|
position: relative;
|
|
626
645
|
}
|
|
627
646
|
|
|
628
|
-
[data-ui
|
|
629
|
-
[data-ui
|
|
630
|
-
[data-ui
|
|
647
|
+
[data-ui-button] [data-part-start] > *:not([data-part-indicator], [data-ui-kbd]),
|
|
648
|
+
[data-ui-button] [data-part-end] > *:not([data-part-indicator], [data-ui-kbd]),
|
|
649
|
+
[data-ui-button] [data-part-icon] > *:not([data-part-indicator]) {
|
|
631
650
|
block-size: 100%;
|
|
632
651
|
display: block;
|
|
633
652
|
inline-size: 100%;
|
|
@@ -642,7 +661,7 @@
|
|
|
642
661
|
* below it. Here the slot takes the key's measure and the label's type, and
|
|
643
662
|
* the flex container centres the key on the label.
|
|
644
663
|
*/
|
|
645
|
-
[data-ui
|
|
664
|
+
[data-ui-button] :is([data-part-start], [data-part-end]):has(> [data-ui-kbd]) {
|
|
646
665
|
block-size: auto;
|
|
647
666
|
font-size: inherit;
|
|
648
667
|
inline-size: auto;
|
|
@@ -653,7 +672,7 @@
|
|
|
653
672
|
* height is 1, which centres a single line inside the box and crushes the
|
|
654
673
|
* second one. A token longer than the container breaks instead of escaping.
|
|
655
674
|
*/
|
|
656
|
-
[data-ui
|
|
675
|
+
[data-ui-button] [data-part-label] {
|
|
657
676
|
line-height: var(--slotted-line-height-sm, 1.45);
|
|
658
677
|
min-inline-size: 0;
|
|
659
678
|
overflow-wrap: anywhere;
|
|
@@ -684,7 +703,7 @@
|
|
|
684
703
|
* of a pixel, which is the only thing the term governs.
|
|
685
704
|
*/
|
|
686
705
|
@supports (text-box: trim-both cap alphabetic) {
|
|
687
|
-
[data-ui
|
|
706
|
+
[data-ui-button] [data-part-label] {
|
|
688
707
|
padding-block: calc((var(--slotted-line-height-sm, 1.45) * 1em - 0.75em) / 2);
|
|
689
708
|
text-box: trim-both cap alphabetic;
|
|
690
709
|
}
|
|
@@ -695,17 +714,17 @@
|
|
|
695
714
|
* letter. An icon-only control is exempt, because both of its sides hold
|
|
696
715
|
* the same glyph and its inset is zero.
|
|
697
716
|
*/
|
|
698
|
-
[data-ui
|
|
717
|
+
[data-ui-button]:not([data-shape]):has(> [data-part-start]) {
|
|
699
718
|
padding-inline-start: var(--_padding-inline-visual);
|
|
700
719
|
}
|
|
701
720
|
|
|
702
|
-
[data-ui
|
|
721
|
+
[data-ui-button]:not([data-shape]):has(> [data-part-end]) {
|
|
703
722
|
padding-inline-end: var(--_padding-inline-visual);
|
|
704
723
|
}
|
|
705
724
|
|
|
706
725
|
/* ── Inline size ──────────────────────────────────────────────────────── */
|
|
707
726
|
|
|
708
|
-
[data-ui
|
|
727
|
+
[data-ui-button][data-full-width] {
|
|
709
728
|
inline-size: 100%;
|
|
710
729
|
}
|
|
711
730
|
|
|
@@ -714,17 +733,17 @@
|
|
|
714
733
|
* label takes the free space, so `start` stays beside it and the end slot is
|
|
715
734
|
* pushed to the edge; flex follows the writing direction, so it mirrors.
|
|
716
735
|
*/
|
|
717
|
-
[data-ui
|
|
736
|
+
[data-ui-button][data-justify='between'] {
|
|
718
737
|
justify-content: space-between;
|
|
719
738
|
}
|
|
720
739
|
|
|
721
|
-
[data-ui
|
|
740
|
+
[data-ui-button][data-justify='between'] > [data-part-label] {
|
|
722
741
|
flex: 1 1 auto;
|
|
723
742
|
text-align: start;
|
|
724
743
|
}
|
|
725
744
|
|
|
726
745
|
/* What a trigger holds at its end — a shortcut, a count — is as wide as it is. */
|
|
727
|
-
[data-ui
|
|
746
|
+
[data-ui-button][data-justify='between'] > [data-part-end] {
|
|
728
747
|
inline-size: auto;
|
|
729
748
|
min-inline-size: var(--_icon-size);
|
|
730
749
|
}
|
|
@@ -736,7 +755,7 @@
|
|
|
736
755
|
* small in one axis is the family's to correct, and theme validation only
|
|
737
756
|
* guarantees the block axis.
|
|
738
757
|
*/
|
|
739
|
-
[data-ui
|
|
758
|
+
[data-ui-button][data-shape] {
|
|
740
759
|
aspect-ratio: 1;
|
|
741
760
|
inline-size: var(--_height);
|
|
742
761
|
min-block-size: max(var(--_height), var(--slotted-target-min, 24px));
|
|
@@ -745,7 +764,7 @@
|
|
|
745
764
|
padding-inline: 0;
|
|
746
765
|
}
|
|
747
766
|
|
|
748
|
-
[data-ui
|
|
767
|
+
[data-ui-button][data-shape='circle'] {
|
|
749
768
|
border-radius: var(--slotted-radius-full, 9999px);
|
|
750
769
|
}
|
|
751
770
|
|
|
@@ -759,16 +778,16 @@
|
|
|
759
778
|
* for a fill the system has flattened.
|
|
760
779
|
*/
|
|
761
780
|
@media (forced-colors: active) {
|
|
762
|
-
[data-ui
|
|
781
|
+
[data-ui-button] {
|
|
763
782
|
border-color: ButtonBorder;
|
|
764
783
|
}
|
|
765
784
|
|
|
766
|
-
[data-ui
|
|
785
|
+
[data-ui-button][data-pressed] {
|
|
767
786
|
border-color: Highlight;
|
|
768
787
|
}
|
|
769
788
|
|
|
770
|
-
[data-ui
|
|
771
|
-
[data-ui
|
|
789
|
+
[data-ui-button]:disabled,
|
|
790
|
+
[data-ui-button][data-disabled] {
|
|
772
791
|
border-color: GrayText;
|
|
773
792
|
color: GrayText;
|
|
774
793
|
}
|
|
@@ -779,7 +798,7 @@
|
|
|
779
798
|
* shows the wait, and the sweep above is the loop this sheet owns.
|
|
780
799
|
*/
|
|
781
800
|
@media (prefers-reduced-motion: reduce) {
|
|
782
|
-
[data-ui
|
|
801
|
+
[data-ui-button] [data-part-indicator] {
|
|
783
802
|
animation: none;
|
|
784
803
|
}
|
|
785
804
|
}
|