@slotted/styles 0.0.0-stage → 0.1.0-beta.1
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/LICENSE +21 -0
- package/README.md +10 -2
- package/package.json +276 -3
- package/src/accordion/accordion.css +96 -0
- package/src/accordion/accordion.tokens.json +14 -0
- package/src/action-bar/action-bar.css +455 -0
- package/src/action-bar/action-bar.tokens.json +50 -0
- package/src/action-sheet/action-sheet.css +462 -0
- package/src/action-sheet/action-sheet.tokens.json +59 -0
- package/src/alert/alert.css +764 -0
- package/src/alert/alert.tokens.json +77 -0
- package/src/app-shell/app-shell.css +1899 -0
- package/src/app-shell/app-shell.tokens.json +88 -0
- package/src/aspect-ratio/aspect-ratio.css +131 -0
- package/src/aspect-ratio/aspect-ratio.tokens.json +1 -0
- package/src/attachment/attachment.css +906 -0
- package/src/attachment/attachment.tokens.json +85 -0
- package/src/avatar/avatar.css +598 -0
- package/src/avatar/avatar.tokens.json +64 -0
- package/src/avatar-group/avatar-group.css +268 -0
- package/src/avatar-group/avatar-group.tokens.json +16 -0
- package/src/badge/badge.css +462 -0
- package/src/badge/badge.tokens.json +58 -0
- package/src/breadcrumb/breadcrumb.css +441 -0
- package/src/breadcrumb/breadcrumb.tokens.json +50 -0
- package/src/button/button.css +754 -0
- package/src/button/button.tokens.json +72 -0
- package/src/button-group/button-group.css +455 -0
- package/src/button-group/button-group.tokens.json +11 -0
- package/src/calendar/calendar.css +846 -0
- package/src/calendar/calendar.tokens.json +67 -0
- package/src/card/card.css +602 -0
- package/src/card/card.tokens.json +68 -0
- package/src/carousel/carousel.css +860 -0
- package/src/carousel/carousel.tokens.json +62 -0
- package/src/cascader/cascader.css +1320 -0
- package/src/cascader/cascader.tokens.json +103 -0
- package/src/chart/chart.css +1473 -0
- package/src/chart/chart.tokens.json +107 -0
- package/src/checkbox/checkbox.css +1011 -0
- package/src/checkbox/checkbox.tokens.json +102 -0
- package/src/checkbox-group/checkbox-group.css +70 -0
- package/src/checkbox-group/checkbox-group.tokens.json +6 -0
- package/src/code-block/code-block.css +555 -0
- package/src/code-block/code-block.tokens.json +69 -0
- package/src/collapsible/collapsible.css +546 -0
- package/src/collapsible/collapsible.tokens.json +55 -0
- package/src/color-picker/color-picker.css +607 -0
- package/src/color-picker/color-picker.tokens.json +58 -0
- package/src/column-manager/column-manager.css +452 -0
- package/src/column-manager/column-manager.tokens.json +43 -0
- package/src/combobox/combobox.css +1048 -0
- package/src/combobox/combobox.tokens.json +112 -0
- package/src/command-palette/command-palette.css +1000 -0
- package/src/command-palette/command-palette.tokens.json +75 -0
- package/src/container/container.css +198 -0
- package/src/container/container.tokens.json +18 -0
- package/src/context-menu/context-menu.css +104 -0
- package/src/context-menu/context-menu.tokens.json +11 -0
- package/src/currency-field/currency-field.css +787 -0
- package/src/currency-field/currency-field.tokens.json +80 -0
- package/src/dashboard-grid/dashboard-grid.css +748 -0
- package/src/dashboard-grid/dashboard-grid.tokens.json +67 -0
- package/src/data-grid/data-grid.css +2484 -0
- package/src/data-grid/data-grid.tokens.json +100 -0
- package/src/data-list/data-list.css +455 -0
- package/src/data-list/data-list.tokens.json +35 -0
- package/src/date-field/date-field.css +560 -0
- package/src/date-field/date-field.tokens.json +80 -0
- package/src/date-picker/date-picker.css +420 -0
- package/src/date-picker/date-picker.tokens.json +49 -0
- package/src/date-range-picker/date-range-picker.css +983 -0
- package/src/date-range-picker/date-range-picker.tokens.json +109 -0
- package/src/datetime-field/datetime-field.css +850 -0
- package/src/datetime-field/datetime-field.tokens.json +91 -0
- package/src/datetime-picker/datetime-picker.css +843 -0
- package/src/datetime-picker/datetime-picker.tokens.json +78 -0
- package/src/datetime-range-picker/datetime-range-picker.css +1375 -0
- package/src/datetime-range-picker/datetime-range-picker.tokens.json +135 -0
- package/src/description-list/description-list.css +675 -0
- package/src/description-list/description-list.tokens.json +66 -0
- package/src/detail-panel/detail-panel.css +329 -0
- package/src/detail-panel/detail-panel.tokens.json +33 -0
- package/src/dialog/dialog.css +968 -0
- package/src/dialog/dialog.tokens.json +66 -0
- package/src/divider/divider.css +131 -0
- package/src/divider/divider.tokens.json +18 -0
- package/src/drawer/drawer.css +1303 -0
- package/src/drawer/drawer.tokens.json +75 -0
- package/src/entity-picker/entity-picker.css +1367 -0
- package/src/entity-picker/entity-picker.tokens.json +118 -0
- package/src/event-calendar/event-calendar.css +2148 -0
- package/src/event-calendar/event-calendar.tokens.json +87 -0
- package/src/field/field.css +707 -0
- package/src/field/field.tokens.json +58 -0
- package/src/field-group/field-group.css +226 -0
- package/src/field-group/field-group.tokens.json +33 -0
- package/src/filter-bar/filter-bar.css +1306 -0
- package/src/filter-bar/filter-bar.tokens.json +78 -0
- package/src/form/form.css +218 -0
- package/src/form/form.tokens.json +32 -0
- package/src/fullscreen/fullscreen.css +376 -0
- package/src/fullscreen/fullscreen.tokens.json +50 -0
- package/src/grid/grid.css +173 -0
- package/src/grid/grid.tokens.json +20 -0
- package/src/highlight/highlight.css +135 -0
- package/src/highlight/highlight.tokens.json +16 -0
- package/src/hover-card/hover-card.css +93 -0
- package/src/hover-card/hover-card.tokens.json +17 -0
- package/src/icon/icon.css +136 -0
- package/src/icon/icon.tokens.json +14 -0
- package/src/image/image.css +449 -0
- package/src/image/image.tokens.json +27 -0
- package/src/import-export-center/import-export-center.css +1175 -0
- package/src/import-export-center/import-export-center.tokens.json +84 -0
- package/src/inline/inline.css +149 -0
- package/src/inline/inline.tokens.json +14 -0
- package/src/inline-message/inline-message.css +396 -0
- package/src/inline-message/inline-message.tokens.json +19 -0
- package/src/kbd/kbd.css +490 -0
- package/src/kbd/kbd.tokens.json +40 -0
- package/src/link/link.css +237 -0
- package/src/link/link.tokens.json +25 -0
- package/src/list/list.css +240 -0
- package/src/list/list.tokens.json +42 -0
- package/src/list-item/list-item.css +937 -0
- package/src/list-item/list-item.tokens.json +114 -0
- package/src/listbox/listbox.css +674 -0
- package/src/listbox/listbox.tokens.json +72 -0
- package/src/loading-overlay/loading-overlay.css +730 -0
- package/src/loading-overlay/loading-overlay.tokens.json +48 -0
- package/src/markdown/markdown.css +168 -0
- package/src/markdown/markdown.tokens.json +18 -0
- package/src/menu/menu.css +817 -0
- package/src/menu/menu.tokens.json +78 -0
- package/src/menubar/menubar.css +170 -0
- package/src/menubar/menubar.tokens.json +32 -0
- package/src/message/message.css +1453 -0
- package/src/message/message.tokens.json +85 -0
- package/src/message-scroller/message-scroller.css +371 -0
- package/src/message-scroller/message-scroller.tokens.json +47 -0
- package/src/multi-select/multi-select.css +1427 -0
- package/src/multi-select/multi-select.tokens.json +114 -0
- package/src/navigation-menu/navigation-menu.css +1029 -0
- package/src/navigation-menu/navigation-menu.tokens.json +70 -0
- package/src/notification-center/notification-center.css +856 -0
- package/src/notification-center/notification-center.tokens.json +84 -0
- package/src/number-field/number-field.css +794 -0
- package/src/number-field/number-field.tokens.json +80 -0
- package/src/otp-input/otp-input.css +525 -0
- package/src/otp-input/otp-input.tokens.json +69 -0
- package/src/page/page.css +179 -0
- package/src/page/page.tokens.json +20 -0
- package/src/page-header/page-header.css +1181 -0
- package/src/page-header/page-header.tokens.json +71 -0
- package/src/pagination/pagination.css +500 -0
- package/src/pagination/pagination.tokens.json +56 -0
- package/src/popover/popover.css +526 -0
- package/src/popover/popover.tokens.json +60 -0
- package/src/progress-indicator/progress-indicator.css +1584 -0
- package/src/progress-indicator/progress-indicator.tokens.json +50 -0
- package/src/prompt-composer/prompt-composer.css +680 -0
- package/src/prompt-composer/prompt-composer.tokens.json +99 -0
- package/src/prose/prose.css +733 -0
- package/src/prose/prose.tokens.json +79 -0
- package/src/radio-group/radio-group.css +778 -0
- package/src/radio-group/radio-group.tokens.json +103 -0
- package/src/rating/rating.css +1071 -0
- package/src/rating/rating.tokens.json +88 -0
- package/src/result-state/result-state.css +980 -0
- package/src/result-state/result-state.tokens.json +63 -0
- package/src/runtime-properties.mjs +321 -0
- package/src/saved-views/saved-views.css +394 -0
- package/src/saved-views/saved-views.tokens.json +41 -0
- package/src/scroll-area/scroll-area.css +481 -0
- package/src/scroll-area/scroll-area.tokens.json +15 -0
- package/src/section/section.css +177 -0
- package/src/section/section.tokens.json +39 -0
- package/src/segmented-control/segmented-control.css +564 -0
- package/src/segmented-control/segmented-control.tokens.json +67 -0
- package/src/select/select.css +1593 -0
- package/src/select/select.tokens.json +110 -0
- package/src/side-navigation/side-navigation.css +1096 -0
- package/src/side-navigation/side-navigation.tokens.json +87 -0
- package/src/skeleton/skeleton.css +431 -0
- package/src/skeleton/skeleton.tokens.json +29 -0
- package/src/slider/slider.css +792 -0
- package/src/slider/slider.tokens.json +75 -0
- package/src/sparkline/sparkline.css +282 -0
- package/src/sparkline/sparkline.tokens.json +45 -0
- package/src/spinner/spinner.css +224 -0
- package/src/spinner/spinner.tokens.json +8 -0
- package/src/split-button/split-button.css +253 -0
- package/src/split-button/split-button.tokens.json +12 -0
- package/src/splitter/splitter.css +336 -0
- package/src/splitter/splitter.tokens.json +24 -0
- package/src/stack/stack.css +128 -0
- package/src/stack/stack.tokens.json +14 -0
- package/src/stat-card/stat-card.css +641 -0
- package/src/stat-card/stat-card.tokens.json +95 -0
- package/src/status-indicator/status-indicator.css +481 -0
- package/src/status-indicator/status-indicator.tokens.json +38 -0
- package/src/stepper/stepper.css +629 -0
- package/src/stepper/stepper.tokens.json +72 -0
- package/src/switch/switch.css +703 -0
- package/src/switch/switch.tokens.json +75 -0
- package/src/table/table.css +1482 -0
- package/src/table/table.tokens.json +69 -0
- package/src/table-of-contents/table-of-contents.css +533 -0
- package/src/table-of-contents/table-of-contents.tokens.json +53 -0
- package/src/tabs/tabs.css +998 -0
- package/src/tabs/tabs.tokens.json +82 -0
- package/src/tag/tag.css +768 -0
- package/src/tag/tag.tokens.json +85 -0
- package/src/tags-input/tags-input.css +757 -0
- package/src/tags-input/tags-input.tokens.json +84 -0
- package/src/text-field/text-field.css +900 -0
- package/src/text-field/text-field.tokens.json +87 -0
- package/src/textarea/textarea.css +365 -0
- package/src/textarea/textarea.tokens.json +59 -0
- package/src/time-field/time-field.css +719 -0
- package/src/time-field/time-field.tokens.json +86 -0
- package/src/time-picker/time-picker.css +665 -0
- package/src/time-picker/time-picker.tokens.json +66 -0
- package/src/time-range-picker/time-range-picker.css +1287 -0
- package/src/time-range-picker/time-range-picker.tokens.json +134 -0
- package/src/timeline/timeline.css +1596 -0
- package/src/timeline/timeline.tokens.json +96 -0
- package/src/toast/toast.css +943 -0
- package/src/toast/toast.tokens.json +90 -0
- package/src/toggle/toggle.css +290 -0
- package/src/toggle/toggle.tokens.json +54 -0
- package/src/toggle-group/toggle-group.css +463 -0
- package/src/toggle-group/toggle-group.tokens.json +54 -0
- package/src/toolbar/toolbar.css +434 -0
- package/src/toolbar/toolbar.tokens.json +49 -0
- package/src/tooltip/tooltip.css +368 -0
- package/src/tooltip/tooltip.tokens.json +39 -0
- package/src/top-navigation/top-navigation.css +1287 -0
- package/src/top-navigation/top-navigation.tokens.json +91 -0
- package/src/tour/tour.css +680 -0
- package/src/tour/tour.tokens.json +67 -0
- package/src/transfer/transfer.css +571 -0
- package/src/transfer/transfer.tokens.json +49 -0
- package/src/tree/tree.css +1000 -0
- package/src/tree/tree.tokens.json +80 -0
- package/src/typography/typography.css +211 -0
- package/src/typography/typography.tokens.json +31 -0
- package/src/upload/upload.css +1706 -0
- package/src/upload/upload.tokens.json +123 -0
- package/src/visually-hidden/visually-hidden.css +52 -0
- package/src/visually-hidden/visually-hidden.tokens.json +1 -0
- package/src/wizard/wizard.css +740 -0
- package/src/wizard/wizard.tokens.json +63 -0
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
[
|
|
2
|
+
"--slotted-border-strong",
|
|
3
|
+
"--slotted-border-subtle",
|
|
4
|
+
"--slotted-border-width-thick",
|
|
5
|
+
"--slotted-border-width-thin",
|
|
6
|
+
"--slotted-control-font-family",
|
|
7
|
+
"--slotted-control-font-size-md",
|
|
8
|
+
"--slotted-control-font-size-sm",
|
|
9
|
+
"--slotted-control-gap-md",
|
|
10
|
+
"--slotted-control-height-md",
|
|
11
|
+
"--slotted-control-icon-size-md",
|
|
12
|
+
"--slotted-control-inner-size-sm",
|
|
13
|
+
"--slotted-control-invalid-edge-width",
|
|
14
|
+
"--slotted-control-padding-inline-md",
|
|
15
|
+
"--slotted-control-padding-inline-sm",
|
|
16
|
+
"--slotted-control-transition-duration",
|
|
17
|
+
"--slotted-control-transition-easing",
|
|
18
|
+
"--slotted-data-grid-band-surface",
|
|
19
|
+
"--slotted-data-grid-block-size",
|
|
20
|
+
"--slotted-data-grid-border-color",
|
|
21
|
+
"--slotted-data-grid-border-color-strong",
|
|
22
|
+
"--slotted-data-grid-border-width",
|
|
23
|
+
"--slotted-data-grid-cell-padding-block",
|
|
24
|
+
"--slotted-data-grid-cell-padding-inline",
|
|
25
|
+
"--slotted-data-grid-changed-surface",
|
|
26
|
+
"--slotted-data-grid-color",
|
|
27
|
+
"--slotted-data-grid-color-muted",
|
|
28
|
+
"--slotted-data-grid-control-radius",
|
|
29
|
+
"--slotted-data-grid-cursor-color",
|
|
30
|
+
"--slotted-data-grid-filter-operator-size",
|
|
31
|
+
"--slotted-data-grid-filter-panel-size",
|
|
32
|
+
"--slotted-data-grid-filter-panel-size-date",
|
|
33
|
+
"--slotted-data-grid-filter-panel-size-datetime",
|
|
34
|
+
"--slotted-data-grid-font-family",
|
|
35
|
+
"--slotted-data-grid-font-size",
|
|
36
|
+
"--slotted-data-grid-gap",
|
|
37
|
+
"--slotted-data-grid-head-block-size",
|
|
38
|
+
"--slotted-data-grid-header-surface",
|
|
39
|
+
"--slotted-data-grid-header-surface-hover",
|
|
40
|
+
"--slotted-data-grid-icon-size",
|
|
41
|
+
"--slotted-data-grid-indent",
|
|
42
|
+
"--slotted-data-grid-pin-shadow-color",
|
|
43
|
+
"--slotted-data-grid-pin-shadow-size",
|
|
44
|
+
"--slotted-data-grid-radius",
|
|
45
|
+
"--slotted-data-grid-range-surface",
|
|
46
|
+
"--slotted-data-grid-row-block-size",
|
|
47
|
+
"--slotted-data-grid-row-color-selected",
|
|
48
|
+
"--slotted-data-grid-row-max-block-size",
|
|
49
|
+
"--slotted-data-grid-row-surface-hover",
|
|
50
|
+
"--slotted-data-grid-row-surface-selected",
|
|
51
|
+
"--slotted-data-grid-row-surface-selected-hover",
|
|
52
|
+
"--slotted-data-grid-row-surface-stripe",
|
|
53
|
+
"--slotted-data-grid-shadow",
|
|
54
|
+
"--slotted-data-grid-sticky-offset",
|
|
55
|
+
"--slotted-data-grid-sticky-offset-end",
|
|
56
|
+
"--slotted-data-grid-surface",
|
|
57
|
+
"--slotted-disabled-foreground",
|
|
58
|
+
"--slotted-duration-long",
|
|
59
|
+
"--slotted-duration-loop",
|
|
60
|
+
"--slotted-duration-short",
|
|
61
|
+
"--slotted-easing-standard",
|
|
62
|
+
"--slotted-focus-ring-color",
|
|
63
|
+
"--slotted-focus-ring-color-invalid",
|
|
64
|
+
"--slotted-focus-ring-offset",
|
|
65
|
+
"--slotted-focus-ring-width",
|
|
66
|
+
"--slotted-font-size-xs",
|
|
67
|
+
"--slotted-font-weight-medium",
|
|
68
|
+
"--slotted-font-weight-regular",
|
|
69
|
+
"--slotted-font-weight-semibold",
|
|
70
|
+
"--slotted-ground",
|
|
71
|
+
"--slotted-line-height-md",
|
|
72
|
+
"--slotted-popover-gap",
|
|
73
|
+
"--slotted-popover-padding-block-sm",
|
|
74
|
+
"--slotted-popover-padding-inline-sm",
|
|
75
|
+
"--slotted-radius-md",
|
|
76
|
+
"--slotted-radius-sm",
|
|
77
|
+
"--slotted-scrim",
|
|
78
|
+
"--slotted-shadow-xs",
|
|
79
|
+
"--slotted-space-1",
|
|
80
|
+
"--slotted-space-2",
|
|
81
|
+
"--slotted-space-3",
|
|
82
|
+
"--slotted-space-4",
|
|
83
|
+
"--slotted-space-5",
|
|
84
|
+
"--slotted-space-6",
|
|
85
|
+
"--slotted-space-8",
|
|
86
|
+
"--slotted-surface",
|
|
87
|
+
"--slotted-surface-sunken",
|
|
88
|
+
"--slotted-target-comfortable",
|
|
89
|
+
"--slotted-target-min",
|
|
90
|
+
"--slotted-text",
|
|
91
|
+
"--slotted-text-muted",
|
|
92
|
+
"--slotted-tone-accent-border",
|
|
93
|
+
"--slotted-tone-accent-solid",
|
|
94
|
+
"--slotted-tone-accent-subtle-hover",
|
|
95
|
+
"--slotted-tone-accent-surface",
|
|
96
|
+
"--slotted-tone-accent-text",
|
|
97
|
+
"--slotted-tone-danger-border",
|
|
98
|
+
"--slotted-tone-secondary-subtle-hover",
|
|
99
|
+
"--slotted-z-index-sticky"
|
|
100
|
+
]
|
|
@@ -0,0 +1,455 @@
|
|
|
1
|
+
@layer slotted.components {
|
|
2
|
+
/**
|
|
3
|
+
* ── The list of records ────────────────────────────────────────────────
|
|
4
|
+
*
|
|
5
|
+
* A small tabular set drawn as records. The set is `list`, each record is a
|
|
6
|
+
* `list-item`, and this sheet owns four things only: the bar above the set,
|
|
7
|
+
* the pairs of a record's fields, the target that covers a record, and the
|
|
8
|
+
* bar under the set. Everything a row already answers — its height at each
|
|
9
|
+
* density, its rule, its selected, current, disabled and loading grounds,
|
|
10
|
+
* its trailing column moving under the title below 22rem — is `list-item`'s,
|
|
11
|
+
* and this sheet does not restate it.
|
|
12
|
+
*
|
|
13
|
+
* The two composed families keep their own `data-part`. A part of this
|
|
14
|
+
* family is written on an element of its own, never on the `li`, so the row
|
|
15
|
+
* stays the row `list-item.css` recognises.
|
|
16
|
+
*/
|
|
17
|
+
[data-ui='data-list'][data-part='root'] {
|
|
18
|
+
/* The pop-in's two measures (`data-grid.css`, the pop-in): a field is at
|
|
19
|
+
least nine rems, so two sit side by side from eighteen, and a field that
|
|
20
|
+
has the row to itself puts its label in a track of seven and a half. */
|
|
21
|
+
--_field-min: 9rem;
|
|
22
|
+
--_field-label-inline: 7.5rem;
|
|
23
|
+
--_pad-inline: var(--slotted-control-padding-inline-md, 13px);
|
|
24
|
+
--_gap: var(--slotted-control-gap-md, 8px);
|
|
25
|
+
--_muted: var(--slotted-text-muted, GrayText);
|
|
26
|
+
--_rule: var(--slotted-border-subtle, ButtonBorder);
|
|
27
|
+
--_rule-width: var(--slotted-border-width-thin, 1px);
|
|
28
|
+
--_transition: var(--slotted-duration-short) var(--slotted-easing-standard);
|
|
29
|
+
|
|
30
|
+
color: var(--slotted-text, CanvasText);
|
|
31
|
+
container: slotted-data-list / inline-size;
|
|
32
|
+
display: flex;
|
|
33
|
+
flex-direction: column;
|
|
34
|
+
font-family: var(--slotted-font-family-sans, sans-serif);
|
|
35
|
+
min-inline-size: 0;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
[data-ui='data-list'][data-size='sm'] {
|
|
39
|
+
--_pad-inline: var(--slotted-control-padding-inline-sm, 10px);
|
|
40
|
+
--_gap: var(--slotted-control-gap-sm, 6px);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
[data-ui='data-list'][data-size='lg'] {
|
|
44
|
+
--_pad-inline: var(--slotted-control-padding-inline-lg, 16px);
|
|
45
|
+
--_gap: var(--slotted-control-gap-lg, 8px);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* ── The bar above the set ──────────────────────────────────────────────
|
|
50
|
+
*
|
|
51
|
+
* Select-all, the count and the sort control, on the row's own inset so the
|
|
52
|
+
* header's checkbox stands in the column every record's checkbox stands in.
|
|
53
|
+
* The rule under it is the set's first rule: a ruled list draws a line above
|
|
54
|
+
* every row but the first, and the header is what the first row sits under.
|
|
55
|
+
*/
|
|
56
|
+
[data-ui='data-list'] > [data-part='header'] {
|
|
57
|
+
align-items: center;
|
|
58
|
+
box-shadow: 0 var(--_rule-width) 0 0 var(--_rule);
|
|
59
|
+
box-sizing: border-box;
|
|
60
|
+
column-gap: var(--_gap);
|
|
61
|
+
display: flex;
|
|
62
|
+
flex-wrap: wrap;
|
|
63
|
+
font-size: var(--slotted-control-font-size-sm, 12px);
|
|
64
|
+
line-height: var(--slotted-line-height-sm, 1.45);
|
|
65
|
+
min-block-size: var(--slotted-control-height-md, 34px);
|
|
66
|
+
padding-block: var(--slotted-space-2, 0.25rem);
|
|
67
|
+
padding-inline: var(--_pad-inline);
|
|
68
|
+
row-gap: var(--slotted-space-1, 0.125rem);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/* A plain list draws no rule between its rows, so the bar draws none under
|
|
72
|
+
itself either. */
|
|
73
|
+
[data-ui='data-list'][data-variant='plain'] > [data-part='header'] {
|
|
74
|
+
box-shadow: none;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/* A framed set carries its own edge; the bar sits outside it and the rule
|
|
78
|
+
would double the frame's top. */
|
|
79
|
+
[data-ui='data-list'][data-variant='framed'] > [data-part='header'] {
|
|
80
|
+
box-shadow: none;
|
|
81
|
+
padding-inline: calc(var(--_pad-inline) + var(--_rule-width));
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
[data-ui='data-list'] [data-part='select-all'] {
|
|
85
|
+
display: inline-flex;
|
|
86
|
+
flex: none;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
[data-ui='data-list'] [data-part='count'] {
|
|
90
|
+
color: var(--_muted);
|
|
91
|
+
flex: 1 1 auto;
|
|
92
|
+
font-variant-numeric: tabular-nums;
|
|
93
|
+
min-inline-size: 0;
|
|
94
|
+
overflow-wrap: anywhere;
|
|
95
|
+
text-align: match-parent;
|
|
96
|
+
unicode-bidi: plaintext;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
[data-ui='data-list'] [data-part='sort'] {
|
|
100
|
+
display: inline-flex;
|
|
101
|
+
flex: none;
|
|
102
|
+
margin-inline-start: auto;
|
|
103
|
+
/* The trigger is a `plain`-sized ghost button whose inset would push its
|
|
104
|
+
label off the row's end; pulling it back by the button's own inset
|
|
105
|
+
lines the chevron up with the trailing value of every record. */
|
|
106
|
+
margin-inline-end: calc(var(--slotted-control-padding-inline-sm, 10px) * -1);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* The direction, drawn after the label: `table`'s own indicator, the
|
|
111
|
+
* chevron `Glyph` the binding draws in the button's `end` slot, turned a
|
|
112
|
+
* half turn for ascending. Without a key there is nothing to point at and
|
|
113
|
+
* the binding draws no mark.
|
|
114
|
+
*/
|
|
115
|
+
[data-ui='data-list'] [data-part='sort'] [data-part='end'] > [data-ui='icon'] {
|
|
116
|
+
transition: transform var(--_transition);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
[data-ui='data-list']
|
|
120
|
+
[data-part='sort'][data-direction='ascending']
|
|
121
|
+
[data-part='end']
|
|
122
|
+
> [data-ui='icon'] {
|
|
123
|
+
transform: rotate(180deg);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* ── The record ─────────────────────────────────────────────────────────
|
|
128
|
+
*
|
|
129
|
+
* The row is the positioning context for the target that covers it. The
|
|
130
|
+
* controls a record holds stand above that target, so pressing a checkbox,
|
|
131
|
+
* a disclosure or an action presses that control and not the record.
|
|
132
|
+
*/
|
|
133
|
+
[data-ui='data-list'] [data-ui='list-item'] {
|
|
134
|
+
position: relative;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
[data-ui='data-list']
|
|
138
|
+
[data-ui='list-item']
|
|
139
|
+
:is(
|
|
140
|
+
[data-part='selection'],
|
|
141
|
+
[data-part='more'],
|
|
142
|
+
[data-part='field-value'] :is(a, button, input, select, textarea, [tabindex])
|
|
143
|
+
),
|
|
144
|
+
[data-ui='data-list'] [data-ui='list-item'] > [data-part='actions'] {
|
|
145
|
+
position: relative;
|
|
146
|
+
z-index: 1;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
[data-ui='data-list'] [data-part='selection'],
|
|
150
|
+
[data-ui='data-list'] [data-part='media'] {
|
|
151
|
+
align-items: center;
|
|
152
|
+
display: inline-flex;
|
|
153
|
+
flex: none;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/* Both in one leading column: the chooser first, the picture after it. */
|
|
157
|
+
[data-ui='data-list'] [data-part='selection'] + [data-part='media'] {
|
|
158
|
+
margin-inline-start: var(--_gap);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* The title is the record's one destination or command. It is the row's
|
|
163
|
+
* `label` and nothing more to a reader — a link named by every field is a
|
|
164
|
+
* sentence nobody listens to twice — and its `::after` is the whole row to a
|
|
165
|
+
* pointer, which is where a phone reader's thumb lands.
|
|
166
|
+
*/
|
|
167
|
+
[data-ui='data-list'] :is(a, button)[data-part='title'] {
|
|
168
|
+
appearance: none;
|
|
169
|
+
background: none;
|
|
170
|
+
border: 0;
|
|
171
|
+
color: inherit;
|
|
172
|
+
cursor: pointer;
|
|
173
|
+
font: inherit;
|
|
174
|
+
margin: 0;
|
|
175
|
+
padding: 0;
|
|
176
|
+
text-align: inherit;
|
|
177
|
+
text-decoration: none;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
[data-ui='data-list'] :is(a, button)[data-part='title']::after {
|
|
181
|
+
border-radius: inherit;
|
|
182
|
+
content: '';
|
|
183
|
+
inset: 0;
|
|
184
|
+
position: absolute;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
[data-ui='data-list'] :is(a, button)[data-part='title']:focus-visible {
|
|
188
|
+
outline: none;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/* The ring is drawn by the target, inside the row, as `list-item` draws it
|
|
192
|
+
on its own content: a row is full width, and an outward ring on the first
|
|
193
|
+
record of a framed set is drawn under the frame. */
|
|
194
|
+
[data-ui='data-list'] :is(a, button)[data-part='title']:focus-visible::after {
|
|
195
|
+
outline: var(--slotted-focus-ring-width, 2px) solid
|
|
196
|
+
var(--slotted-focus-ring-color, currentColor);
|
|
197
|
+
outline-offset: calc(var(--slotted-focus-ring-offset, 2px) * -1);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
[data-ui='data-list']
|
|
201
|
+
[data-ui='list-item']:not([data-disabled]):not([data-loading])
|
|
202
|
+
:is(a[href], button:not(:disabled))[data-part='title']:hover {
|
|
203
|
+
text-decoration: underline;
|
|
204
|
+
text-decoration-thickness: from-font;
|
|
205
|
+
text-underline-offset: 0.2em;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* The row's pointer states, taken from the row. `list-item` washes a row
|
|
210
|
+
* whose content is the link or the button; here the target is the title and
|
|
211
|
+
* the content is a `div`, so the same two grounds are asked for from here —
|
|
212
|
+
* through the row's own `--_fill`, which already knows the tone and the
|
|
213
|
+
* selection it is painted over. Both hold back for `disabled` and `loading`.
|
|
214
|
+
*/
|
|
215
|
+
[data-ui='data-list']
|
|
216
|
+
[data-ui='list-item']:not([data-disabled]):not([data-loading]):has(
|
|
217
|
+
[data-part='title']:is(a[href], button:not(:disabled)):hover
|
|
218
|
+
) {
|
|
219
|
+
--_fill: var(--_hover, ButtonFace);
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
[data-ui='data-list']
|
|
223
|
+
[data-ui='list-item']:not([data-disabled]):not([data-loading]):has(
|
|
224
|
+
[data-part='title']:is(a[href], button:not(:disabled)):active
|
|
225
|
+
) {
|
|
226
|
+
--_fill: var(--_active, ButtonFace);
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
[data-ui='data-list']
|
|
230
|
+
[data-ui='list-item']:is([data-disabled], [data-loading])
|
|
231
|
+
[data-part='title'] {
|
|
232
|
+
cursor: default;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* The value read at a glance — a balance, a total — is the record's own ink
|
|
237
|
+
* and weight rather than `end`'s metadata grey: it is the figure a reader
|
|
238
|
+
* scans the column for. `--_text` is the row's ink at rest, which the row
|
|
239
|
+
* recedes itself while it loads or is disabled, and which a selection leaves
|
|
240
|
+
* alone, so a selected record keeps its figures in the page's ink.
|
|
241
|
+
*/
|
|
242
|
+
[data-ui='data-list'] [data-part='trailing'] {
|
|
243
|
+
color: var(--_text, CanvasText);
|
|
244
|
+
font-variant-numeric: tabular-nums;
|
|
245
|
+
font-weight: var(--slotted-font-weight-medium, 500);
|
|
246
|
+
overflow-wrap: anywhere;
|
|
247
|
+
text-align: end;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
/**
|
|
251
|
+
* ── The fields ─────────────────────────────────────────────────────────
|
|
252
|
+
*
|
|
253
|
+
* The pop-in's geometry, so a record reads the same in `data-grid` on a
|
|
254
|
+
* phone and here: as many columns of nine rems as the body holds, the label
|
|
255
|
+
* over the value. `description-list` answers the same pair at panel
|
|
256
|
+
* thresholds and gives a phone one stacked column; the contract says why the
|
|
257
|
+
* pair is drawn here instead.
|
|
258
|
+
*/
|
|
259
|
+
/**
|
|
260
|
+
* The fields and their disclosure are children of the row's content box and
|
|
261
|
+
* take its grid from the text column to the end, under the trailing value
|
|
262
|
+
* as well as under the title: inside the text column the trailing figure
|
|
263
|
+
* took a hundred pixels from every line of fields, and a phone's record
|
|
264
|
+
* fell to one squeezed column with its dates broken in two. Below
|
|
265
|
+
* `list-item`'s 22rem the grid has two columns and `-1` still names its end.
|
|
266
|
+
*/
|
|
267
|
+
[data-ui='data-list']
|
|
268
|
+
[data-ui='list-item']
|
|
269
|
+
> [data-part='content']
|
|
270
|
+
> :is([data-part='fields'], [data-part='more']) {
|
|
271
|
+
grid-column: 2 / -1;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
/* Below `list-item`'s own 22rem the leading column holds only the chooser
|
|
275
|
+
and the picture, and the fields take the row from its start edge: indented
|
|
276
|
+
under them the fields of a 240-pixel record were eleven rems wide. The
|
|
277
|
+
pop-in makes the same move below 600 pixels. */
|
|
278
|
+
@container slotted-list-item (max-inline-size: 22rem) {
|
|
279
|
+
[data-ui='data-list']
|
|
280
|
+
[data-ui='list-item']
|
|
281
|
+
> [data-part='content']
|
|
282
|
+
> :is([data-part='fields'], [data-part='more']) {
|
|
283
|
+
grid-column: 1 / -1;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
/* The box is a query container for its pairs. Its own tracks need no query:
|
|
288
|
+
`auto-fill` already gives one column below eighteen rems. */
|
|
289
|
+
[data-ui='data-list'] [data-part='fields'] {
|
|
290
|
+
column-gap: var(--slotted-space-4, 0.5rem);
|
|
291
|
+
container: slotted-data-list-fields / inline-size;
|
|
292
|
+
display: grid;
|
|
293
|
+
grid-template-columns: repeat(auto-fill, minmax(min(var(--_field-min), 100%), 1fr));
|
|
294
|
+
margin-block: var(--slotted-space-2, 0.25rem) 0;
|
|
295
|
+
margin-inline: 0;
|
|
296
|
+
padding: 0;
|
|
297
|
+
row-gap: var(--slotted-space-2, 0.25rem);
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
[data-ui='data-list'] [data-part='field'] {
|
|
301
|
+
display: flex;
|
|
302
|
+
flex-direction: column;
|
|
303
|
+
margin: 0;
|
|
304
|
+
min-inline-size: 0;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
[data-ui='data-list'] [data-part='field-label'] {
|
|
308
|
+
color: var(--_muted, GrayText);
|
|
309
|
+
font-size: var(--slotted-font-size-xs, 0.75rem);
|
|
310
|
+
font-weight: var(--slotted-font-weight-regular, 400);
|
|
311
|
+
line-height: var(--slotted-line-height-xs, 1.4);
|
|
312
|
+
margin: 0;
|
|
313
|
+
/* A label breaks between its words and inside one only when the word
|
|
314
|
+
alone is wider than the track: `anywhere` broke `Created` into two. */
|
|
315
|
+
overflow-wrap: break-word;
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
/* The value is the row's own ink and size, and it wraps: a field has no
|
|
319
|
+
other way to show what it holds, so it never truncates. */
|
|
320
|
+
[data-ui='data-list'] [data-part='field-value'] {
|
|
321
|
+
color: var(--_text, CanvasText);
|
|
322
|
+
font-weight: var(--slotted-font-weight-regular, 400);
|
|
323
|
+
line-height: var(--slotted-line-height-md, 1.5);
|
|
324
|
+
margin: 0;
|
|
325
|
+
min-inline-size: 0;
|
|
326
|
+
overflow-wrap: anywhere;
|
|
327
|
+
/* A value in another script takes its own direction and leaves the pairs
|
|
328
|
+
around it alone, as `list-item`'s title does. `plaintext` also moves
|
|
329
|
+
`start` to the value's own direction, and an English value in a
|
|
330
|
+
right-to-left record was set against the far edge, away from its label;
|
|
331
|
+
`match-parent` keeps the column on the record's start. */
|
|
332
|
+
text-align: match-parent;
|
|
333
|
+
unicode-bidi: plaintext;
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
[data-ui='data-list'] [data-part='field-value'][data-numeric] {
|
|
337
|
+
font-variant-numeric: tabular-nums;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
/* `—` is written by both bindings; the sheet only lowers its ink, the rule
|
|
341
|
+
`description-list` settled for the same mark. */
|
|
342
|
+
[data-ui='data-list'] [data-part='field-empty'] {
|
|
343
|
+
color: var(--_muted, GrayText);
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
/**
|
|
347
|
+
* One field to a line: the label beside the value, on the value's line. The
|
|
348
|
+
* label's track is the pop-in's seven and a half rems, capped at a third and a little more (35%)
|
|
349
|
+
* of the box, so a long label wraps and the value keeps its line. Below
|
|
350
|
+
* twelve rems that share is under four and a half, a label broke inside its own word
|
|
351
|
+
* and a date took two lines, so the pair returns to the label over the value.
|
|
352
|
+
*/
|
|
353
|
+
@container slotted-data-list-fields (min-inline-size: 12rem) and (max-inline-size: 19rem) {
|
|
354
|
+
[data-ui='data-list'] [data-part='field'] {
|
|
355
|
+
align-items: baseline;
|
|
356
|
+
column-gap: var(--slotted-space-3, 0.375rem);
|
|
357
|
+
display: grid;
|
|
358
|
+
grid-template-columns: minmax(0, min(var(--_field-label-inline), 35%)) minmax(0, 1fr);
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
/**
|
|
363
|
+
* The disclosure for the fields past the first few. It is text rather than
|
|
364
|
+
* a control-sized button, because it belongs to the record's text; its box
|
|
365
|
+
* still reaches the 24-pixel target.
|
|
366
|
+
*/
|
|
367
|
+
[data-ui='data-list'] [data-part='more'] {
|
|
368
|
+
align-items: center;
|
|
369
|
+
appearance: none;
|
|
370
|
+
background: none;
|
|
371
|
+
border: 0;
|
|
372
|
+
border-radius: var(--slotted-radius-sm, 4px);
|
|
373
|
+
color: var(--slotted-tone-accent-text, LinkText);
|
|
374
|
+
cursor: pointer;
|
|
375
|
+
display: inline-flex;
|
|
376
|
+
font: inherit;
|
|
377
|
+
font-size: var(--slotted-control-font-size-sm, 12px);
|
|
378
|
+
font-weight: var(--slotted-font-weight-medium, 500);
|
|
379
|
+
gap: var(--slotted-space-2, 0.25rem);
|
|
380
|
+
justify-self: start;
|
|
381
|
+
margin-block-start: var(--slotted-space-1, 0.125rem);
|
|
382
|
+
min-block-size: var(--slotted-target-min, 24px);
|
|
383
|
+
padding: 0;
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
/* The chevron is the `Glyph` the binding draws after the words; it turns a
|
|
387
|
+
half turn once the fields are shown. */
|
|
388
|
+
[data-ui='data-list'] [data-part='more'] > [data-ui='icon'] {
|
|
389
|
+
transition: transform var(--_transition);
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
[data-ui='data-list'] [data-part='more'][aria-expanded='true'] > [data-ui='icon'] {
|
|
393
|
+
transform: rotate(180deg);
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
[data-ui='data-list'] [data-part='more']:not(:disabled):hover {
|
|
397
|
+
text-decoration: underline;
|
|
398
|
+
text-decoration-thickness: from-font;
|
|
399
|
+
text-underline-offset: 0.2em;
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
[data-ui='data-list'] [data-part='more']:focus-visible {
|
|
403
|
+
outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
|
|
404
|
+
outline-offset: var(--slotted-focus-ring-offset, 2px);
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
[data-ui='data-list'] [data-ui='list-item'][data-disabled] [data-part='more'] {
|
|
408
|
+
color: var(--slotted-disabled-foreground, GrayText);
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
/**
|
|
412
|
+
* ── Refreshing, empty, loading, footer ─────────────────────────────────
|
|
413
|
+
*
|
|
414
|
+
* Over rows already shown the rows stay and recede, and nothing moves:
|
|
415
|
+
* `data-grid`'s rule for the same wait, at the same strength.
|
|
416
|
+
*/
|
|
417
|
+
[data-ui='data-list'][aria-busy='true'] > [data-ui='list'] {
|
|
418
|
+
opacity: 0.55;
|
|
419
|
+
pointer-events: none;
|
|
420
|
+
transition: opacity var(--_transition);
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
[data-ui='data-list'] > [data-part='empty'] {
|
|
424
|
+
padding-block: var(--slotted-space-8, 1.5rem);
|
|
425
|
+
padding-inline: var(--_pad-inline);
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
[data-ui='data-list'] > [data-part='loader'] {
|
|
429
|
+
display: block;
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
/* A skeleton record's lines stand where the text will: the title's at the
|
|
433
|
+
title's size, the description's under it. */
|
|
434
|
+
[data-ui='data-list'] > [data-part='loader'] [data-part='field-value'] [data-ui='skeleton'] {
|
|
435
|
+
vertical-align: middle;
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
[data-ui='data-list'] > [data-part='footer'] {
|
|
439
|
+
align-items: center;
|
|
440
|
+
display: flex;
|
|
441
|
+
flex-wrap: wrap;
|
|
442
|
+
gap: var(--_gap);
|
|
443
|
+
justify-content: center;
|
|
444
|
+
padding-block: var(--slotted-space-4, 0.5rem);
|
|
445
|
+
padding-inline: var(--_pad-inline);
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
[data-ui='data-list'] > [data-part='footer']:empty {
|
|
449
|
+
display: none;
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
[data-ui='data-list'] [data-part='load-more'] {
|
|
453
|
+
display: inline-flex;
|
|
454
|
+
}
|
|
455
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
[
|
|
2
|
+
"--slotted-border-subtle",
|
|
3
|
+
"--slotted-border-width-thin",
|
|
4
|
+
"--slotted-control-font-size-sm",
|
|
5
|
+
"--slotted-control-gap-lg",
|
|
6
|
+
"--slotted-control-gap-md",
|
|
7
|
+
"--slotted-control-gap-sm",
|
|
8
|
+
"--slotted-control-height-md",
|
|
9
|
+
"--slotted-control-padding-inline-lg",
|
|
10
|
+
"--slotted-control-padding-inline-md",
|
|
11
|
+
"--slotted-control-padding-inline-sm",
|
|
12
|
+
"--slotted-disabled-foreground",
|
|
13
|
+
"--slotted-duration-short",
|
|
14
|
+
"--slotted-easing-standard",
|
|
15
|
+
"--slotted-focus-ring-color",
|
|
16
|
+
"--slotted-focus-ring-offset",
|
|
17
|
+
"--slotted-focus-ring-width",
|
|
18
|
+
"--slotted-font-family-sans",
|
|
19
|
+
"--slotted-font-size-xs",
|
|
20
|
+
"--slotted-font-weight-medium",
|
|
21
|
+
"--slotted-font-weight-regular",
|
|
22
|
+
"--slotted-line-height-md",
|
|
23
|
+
"--slotted-line-height-sm",
|
|
24
|
+
"--slotted-line-height-xs",
|
|
25
|
+
"--slotted-radius-sm",
|
|
26
|
+
"--slotted-space-1",
|
|
27
|
+
"--slotted-space-2",
|
|
28
|
+
"--slotted-space-3",
|
|
29
|
+
"--slotted-space-4",
|
|
30
|
+
"--slotted-space-8",
|
|
31
|
+
"--slotted-target-min",
|
|
32
|
+
"--slotted-text",
|
|
33
|
+
"--slotted-text-muted",
|
|
34
|
+
"--slotted-tone-accent-text"
|
|
35
|
+
]
|