@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,394 @@
|
|
|
1
|
+
@layer slotted.components {
|
|
2
|
+
/**
|
|
3
|
+
* The named views of a grid, and the one in use.
|
|
4
|
+
*
|
|
5
|
+
* root ▸ trigger (name · modified · chevron) · revert
|
|
6
|
+
*
|
|
7
|
+
* panel (in the popover)
|
|
8
|
+
* ┌──────────────────────────────────────┐
|
|
9
|
+
* │ list ▸ item ▸ apply (✓ name ⌖) actions│
|
|
10
|
+
* │ item ▸ form | confirm │
|
|
11
|
+
* │ form (save as) │
|
|
12
|
+
* │ footer ▸ Save as new view… · Save │
|
|
13
|
+
* └──────────────────────────────────────┘
|
|
14
|
+
*
|
|
15
|
+
* The panel is portalled out of the root, so it carries the family's
|
|
16
|
+
* `data-ui` itself — the answer `filter-bar`'s rule and `table`'s filter
|
|
17
|
+
* panel already give — and the locals below are declared on both. The
|
|
18
|
+
* buttons, the field and the menu inside are their families', reached
|
|
19
|
+
* with child combinators so a `label` or a `root` of theirs is never
|
|
20
|
+
* restyled.
|
|
21
|
+
*/
|
|
22
|
+
[data-ui='saved-views'] {
|
|
23
|
+
--_text: var(--slotted-text, CanvasText);
|
|
24
|
+
--_muted: var(--slotted-text-muted, GrayText);
|
|
25
|
+
--_hover: var(--slotted-tone-secondary-subtle-hover, ButtonFace);
|
|
26
|
+
--_active: var(--slotted-tone-secondary-subtle-active, ButtonFace);
|
|
27
|
+
--_height: var(--slotted-control-height-md, 34px);
|
|
28
|
+
--_height-sm: var(--slotted-control-height-sm, 30px);
|
|
29
|
+
--_padding-inline: var(--slotted-control-padding-inline-md, 13px);
|
|
30
|
+
--_gap: var(--slotted-control-gap-md, 8px);
|
|
31
|
+
--_font-size: var(--slotted-control-font-size-md, 13px);
|
|
32
|
+
--_icon-size: var(--slotted-control-icon-size-md, 16px);
|
|
33
|
+
--_icon-size-sm: var(--slotted-control-icon-size-sm, 14px);
|
|
34
|
+
--_radius: var(--slotted-control-radius, 4px);
|
|
35
|
+
--_duration: var(--slotted-control-transition-duration);
|
|
36
|
+
--_easing: var(--slotted-control-transition-easing);
|
|
37
|
+
|
|
38
|
+
box-sizing: border-box;
|
|
39
|
+
color: var(--_text);
|
|
40
|
+
font-family: var(--slotted-font-family-sans, ui-sans-serif, system-ui, sans-serif);
|
|
41
|
+
font-size: var(--_font-size);
|
|
42
|
+
line-height: var(--slotted-line-height-md, 1.5);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/* ── The row on the page ─────────────────────────────────────────────── */
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* The trigger and revert on one row that wraps: at 240 pixels the revert
|
|
49
|
+
* control drops under the trigger rather than pushing it out of the box.
|
|
50
|
+
*/
|
|
51
|
+
[data-ui='saved-views'][data-part='root'] {
|
|
52
|
+
display: inline-flex;
|
|
53
|
+
flex-wrap: wrap;
|
|
54
|
+
align-items: center;
|
|
55
|
+
gap: var(--slotted-space-3, 0.375rem);
|
|
56
|
+
min-inline-size: 0;
|
|
57
|
+
max-inline-size: 100%;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* A control at rest, as a select's closed control is: the resting edge, the
|
|
62
|
+
* control shadow and the control surface, so the view in use reads as a
|
|
63
|
+
* value the reader can change rather than as a heading.
|
|
64
|
+
*/
|
|
65
|
+
[data-ui='saved-views'] > [data-part='trigger'] {
|
|
66
|
+
display: inline-flex;
|
|
67
|
+
align-items: center;
|
|
68
|
+
gap: var(--_gap);
|
|
69
|
+
box-sizing: border-box;
|
|
70
|
+
min-inline-size: 0;
|
|
71
|
+
max-inline-size: 100%;
|
|
72
|
+
min-block-size: var(--_height);
|
|
73
|
+
margin: 0;
|
|
74
|
+
padding-block: 0;
|
|
75
|
+
padding-inline: var(--_padding-inline);
|
|
76
|
+
border: var(--slotted-control-border-width, 1px) solid
|
|
77
|
+
var(--slotted-control-border-color, ButtonBorder);
|
|
78
|
+
border-radius: var(--_radius);
|
|
79
|
+
background: var(--slotted-control-surface, Canvas);
|
|
80
|
+
box-shadow: var(--slotted-control-shadow, none);
|
|
81
|
+
color: var(--_text);
|
|
82
|
+
font: inherit;
|
|
83
|
+
font-weight: var(--slotted-font-weight-medium, 500);
|
|
84
|
+
cursor: pointer;
|
|
85
|
+
transition: background-color var(--_duration) var(--_easing);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/** Truncated on one line; the whole name stays in the DOM and in the button's name. */
|
|
89
|
+
[data-ui='saved-views'] > [data-part='trigger'] > [data-label] {
|
|
90
|
+
min-inline-size: 0;
|
|
91
|
+
overflow: hidden;
|
|
92
|
+
text-overflow: ellipsis;
|
|
93
|
+
white-space: nowrap;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/** The chevron, an `icon` after the name, turning over while the layer is open. */
|
|
97
|
+
[data-ui='saved-views'] > [data-part='trigger'] > [data-ui='icon'] {
|
|
98
|
+
margin-inline-end: calc(var(--slotted-space-2, 0.25rem) * -1);
|
|
99
|
+
color: var(--_muted);
|
|
100
|
+
transition: rotate var(--_duration) var(--_easing);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
[data-ui='saved-views'][data-open] > [data-part='trigger'] > [data-ui='icon'] {
|
|
104
|
+
rotate: 180deg;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
[data-ui='saved-views'] > [data-part='trigger']:hover:not(:disabled) {
|
|
108
|
+
background: var(--_hover);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
[data-ui='saved-views'] > [data-part='trigger']:active:not(:disabled) {
|
|
112
|
+
background: var(--_active);
|
|
113
|
+
transition-duration: var(--slotted-duration-instant);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* The mark: a dot in the accent solid and the word, in the muted ink and
|
|
118
|
+
* the regular weight, so the name stays the loudest thing in the control
|
|
119
|
+
* and the state is never colour alone.
|
|
120
|
+
*/
|
|
121
|
+
[data-ui='saved-views'] > [data-part='trigger'] > [data-part='modified'] {
|
|
122
|
+
display: inline-flex;
|
|
123
|
+
flex: none;
|
|
124
|
+
align-items: center;
|
|
125
|
+
gap: var(--slotted-space-2, 0.25rem);
|
|
126
|
+
color: var(--_muted);
|
|
127
|
+
/* The trigger's own size: the type scale's small step is larger than the
|
|
128
|
+
control's text at dense, and the mark outgrew the name it qualifies. */
|
|
129
|
+
font-size: inherit;
|
|
130
|
+
font-weight: var(--slotted-font-weight-regular, 400);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
[data-ui='saved-views'] > [data-part='trigger'] > [data-part='modified']::before {
|
|
134
|
+
content: '';
|
|
135
|
+
flex: none;
|
|
136
|
+
inline-size: var(--slotted-space-4, 0.5rem);
|
|
137
|
+
block-size: var(--slotted-space-4, 0.5rem);
|
|
138
|
+
border-radius: var(--slotted-radius-full, 9999px);
|
|
139
|
+
background-color: var(--slotted-tone-accent-solid);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/** Revert: a ghost control with the counter-clockwise arrow, at the trigger's height. */
|
|
143
|
+
[data-ui='saved-views'] > [data-part='revert'] {
|
|
144
|
+
display: inline-flex;
|
|
145
|
+
align-items: center;
|
|
146
|
+
gap: var(--slotted-space-3, 0.375rem);
|
|
147
|
+
box-sizing: border-box;
|
|
148
|
+
min-block-size: var(--_height);
|
|
149
|
+
margin: 0;
|
|
150
|
+
padding-block: 0;
|
|
151
|
+
padding-inline: var(--slotted-space-4, 0.5rem);
|
|
152
|
+
border: var(--slotted-control-border-width, 1px) solid transparent;
|
|
153
|
+
border-radius: var(--_radius);
|
|
154
|
+
background: transparent;
|
|
155
|
+
color: var(--slotted-tone-accent-text, LinkText);
|
|
156
|
+
font: inherit;
|
|
157
|
+
font-weight: var(--slotted-font-weight-medium, 500);
|
|
158
|
+
cursor: pointer;
|
|
159
|
+
transition: background-color var(--_duration) var(--_easing);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
[data-ui='saved-views'] > [data-part='revert']:hover:not(:disabled) {
|
|
163
|
+
background: var(--slotted-tone-accent-subtle-hover, ButtonFace);
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
[data-ui='saved-views'] > [data-part='revert']:active:not(:disabled) {
|
|
167
|
+
background: var(--slotted-tone-accent-subtle-active, ButtonFace);
|
|
168
|
+
transition-duration: var(--slotted-duration-instant);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
[data-ui='saved-views'] > [data-part='trigger']:focus-visible,
|
|
172
|
+
[data-ui='saved-views'] > [data-part='revert']:focus-visible {
|
|
173
|
+
outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
|
|
174
|
+
outline-offset: var(--slotted-focus-ring-offset, 2px);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/* ── The panel ───────────────────────────────────────────────────────── */
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* A width of its own, for the reason `filter-bar`'s editor has one: a
|
|
181
|
+
* popover shrink-wraps, and a list that took the width of its longest name
|
|
182
|
+
* would change width as views are renamed. The padding keeps a row's hover
|
|
183
|
+
* ground off the popover's rounded edge.
|
|
184
|
+
*/
|
|
185
|
+
[data-ui='saved-views'][data-part='panel'] {
|
|
186
|
+
display: grid;
|
|
187
|
+
/* One track that grows to the token and gives way to zero: the panel's
|
|
188
|
+
min-content is nothing and its max-content the token, so a popover
|
|
189
|
+
with less room than 18rem narrows the panel instead of clipping it. */
|
|
190
|
+
grid-template-columns: minmax(0, var(--slotted-saved-views-panel-inline-size, 18rem));
|
|
191
|
+
gap: var(--slotted-space-4, 0.5rem);
|
|
192
|
+
max-inline-size: 100%;
|
|
193
|
+
padding: var(--slotted-space-2, 0.25rem);
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
[data-ui='saved-views'][data-part='panel'] > [data-part='list'] {
|
|
197
|
+
display: grid;
|
|
198
|
+
gap: var(--slotted-space-1, 0.125rem);
|
|
199
|
+
margin: 0;
|
|
200
|
+
padding: 0;
|
|
201
|
+
list-style: none;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/** A row: the view's name across, its actions at the inline end. */
|
|
205
|
+
[data-ui='saved-views'][data-part='panel'] > [data-part='list'] > [data-part='item'] {
|
|
206
|
+
display: grid;
|
|
207
|
+
grid-template-columns: minmax(0, 1fr) auto;
|
|
208
|
+
align-items: start;
|
|
209
|
+
gap: var(--slotted-space-1, 0.125rem);
|
|
210
|
+
margin: 0;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
[data-ui='saved-views'][data-part='panel']
|
|
214
|
+
> [data-part='list']
|
|
215
|
+
> [data-part='item'][data-editing] {
|
|
216
|
+
grid-template-columns: minmax(0, 1fr);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* The view's name as a row-wide button: a column for the check the view in
|
|
221
|
+
* use carries, the name, then the default mark right after the name, on
|
|
222
|
+
* its first line.
|
|
223
|
+
* The check's column is reserved on every row, so the names line up: the
|
|
224
|
+
* binding draws the check on the view in use alone, and the name keeps the
|
|
225
|
+
* second column whether the check stands before it or not.
|
|
226
|
+
*/
|
|
227
|
+
[data-ui='saved-views'][data-part='panel'] [data-part='apply'] {
|
|
228
|
+
display: grid;
|
|
229
|
+
grid-template-columns: var(--_icon-size-sm) minmax(0, max-content) auto;
|
|
230
|
+
justify-content: start;
|
|
231
|
+
align-content: center;
|
|
232
|
+
/* The marks beside the name share its baseline: an empty box offers its
|
|
233
|
+
bottom edge, and each mark moves down from there onto the text band. */
|
|
234
|
+
align-items: baseline;
|
|
235
|
+
column-gap: var(--slotted-space-4, 0.5rem);
|
|
236
|
+
box-sizing: border-box;
|
|
237
|
+
inline-size: 100%;
|
|
238
|
+
min-block-size: var(--_height-sm);
|
|
239
|
+
margin: 0;
|
|
240
|
+
padding-block: var(--slotted-space-2, 0.25rem);
|
|
241
|
+
padding-inline: var(--slotted-space-4, 0.5rem);
|
|
242
|
+
border: 0;
|
|
243
|
+
border-radius: var(--_radius);
|
|
244
|
+
background: transparent;
|
|
245
|
+
color: var(--_text);
|
|
246
|
+
font: inherit;
|
|
247
|
+
text-align: start;
|
|
248
|
+
cursor: pointer;
|
|
249
|
+
transition: background-color var(--_duration) var(--_easing);
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/**
|
|
253
|
+
* The check, an `icon` on the name's first line and on its text rather than
|
|
254
|
+
* its line box (`docs/build-briefing.md`, Decisions already taken). Its
|
|
255
|
+
* bottom sits on the baseline; the translate lowers it by half its size less
|
|
256
|
+
* half the band, the midpoint of cap height and x-height, so its centre is
|
|
257
|
+
* the band's.
|
|
258
|
+
*/
|
|
259
|
+
[data-ui='saved-views'][data-part='panel'] [data-part='apply'] > [data-ui='icon'] {
|
|
260
|
+
color: var(--slotted-tone-accent-text);
|
|
261
|
+
translate: 0 calc(var(--_icon-size-sm) / 2 - (1cap + 1ex) / 4);
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
[data-ui='saved-views'][data-part='panel']
|
|
265
|
+
[data-part='item'][data-current]
|
|
266
|
+
> [data-part='apply'] {
|
|
267
|
+
font-weight: var(--slotted-font-weight-medium, 500);
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
/** A long name wraps inside the row; nothing is cut. */
|
|
271
|
+
[data-ui='saved-views'][data-part='panel'] [data-part='apply'] > [data-label] {
|
|
272
|
+
grid-column: 2;
|
|
273
|
+
min-inline-size: 0;
|
|
274
|
+
overflow-wrap: anywhere;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
[data-ui='saved-views'][data-part='panel'] [data-part='apply']:hover:not(:disabled),
|
|
278
|
+
[data-ui='saved-views'][data-part='panel'] [data-part='actions']:hover:not(:disabled) {
|
|
279
|
+
background: var(--_hover);
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
[data-ui='saved-views'][data-part='panel'] [data-part='apply']:active:not(:disabled),
|
|
283
|
+
[data-ui='saved-views'][data-part='panel'] [data-part='actions']:active:not(:disabled) {
|
|
284
|
+
background: var(--_active);
|
|
285
|
+
transition-duration: var(--slotted-duration-instant);
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
/** The pin: the view a visit opens on. The word beside it is for the ear only. */
|
|
289
|
+
[data-ui='saved-views'][data-part='panel'] [data-part='apply'] > [data-part='default-mark'] {
|
|
290
|
+
/* A flex box, so the pin `icon` inside is laid out as an item and not on
|
|
291
|
+
a line of its own that would stand taller than the mark. */
|
|
292
|
+
display: flex;
|
|
293
|
+
position: relative;
|
|
294
|
+
inline-size: var(--_icon-size-sm);
|
|
295
|
+
block-size: var(--_icon-size-sm);
|
|
296
|
+
/* A mark of the name, not a third column: half the row's gap from it. */
|
|
297
|
+
margin-inline-start: calc(var(--slotted-space-2, 0.25rem) - var(--slotted-space-4, 0.5rem));
|
|
298
|
+
translate: 0 calc(var(--_icon-size-sm) / 2 - (1cap + 1ex) / 4);
|
|
299
|
+
color: var(--_muted);
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
[data-ui='saved-views'][data-part='panel']
|
|
303
|
+
[data-part='default-mark']
|
|
304
|
+
> span:not([data-ui='icon']) {
|
|
305
|
+
position: absolute;
|
|
306
|
+
inline-size: 1px;
|
|
307
|
+
block-size: 1px;
|
|
308
|
+
overflow: hidden;
|
|
309
|
+
clip-path: inset(50%);
|
|
310
|
+
white-space: nowrap;
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
/**
|
|
314
|
+
* The row's menu: a square at the small control height with the ellipsis
|
|
315
|
+
* `icon`, muted at rest and on the text ink under the pointer.
|
|
316
|
+
*/
|
|
317
|
+
[data-ui='saved-views'][data-part='panel'] [data-part='actions'] {
|
|
318
|
+
display: inline-grid;
|
|
319
|
+
place-items: center;
|
|
320
|
+
box-sizing: border-box;
|
|
321
|
+
inline-size: var(--_height-sm);
|
|
322
|
+
block-size: var(--_height-sm);
|
|
323
|
+
margin: 0;
|
|
324
|
+
padding: 0;
|
|
325
|
+
border: 0;
|
|
326
|
+
border-radius: var(--_radius);
|
|
327
|
+
background: transparent;
|
|
328
|
+
color: var(--_muted);
|
|
329
|
+
cursor: pointer;
|
|
330
|
+
transition:
|
|
331
|
+
background-color var(--_duration) var(--_easing),
|
|
332
|
+
color var(--_duration) var(--_easing);
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
[data-ui='saved-views'][data-part='panel'] [data-part='actions'][data-open],
|
|
336
|
+
[data-ui='saved-views'][data-part='panel'] [data-part='actions']:hover:not(:disabled) {
|
|
337
|
+
color: var(--_text);
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
/** Drawn inward: the rows sit one space step apart and an outward ring would cross the next. */
|
|
341
|
+
[data-ui='saved-views'][data-part='panel'] [data-part='apply']:focus-visible,
|
|
342
|
+
[data-ui='saved-views'][data-part='panel'] [data-part='actions']:focus-visible {
|
|
343
|
+
outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
|
|
344
|
+
outline-offset: calc(var(--slotted-focus-ring-offset, 2px) * -1);
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
/* ── Forms, confirmation, footer ─────────────────────────────────────── */
|
|
348
|
+
|
|
349
|
+
/**
|
|
350
|
+
* The name form, in a row for a rename and above the footer for a new
|
|
351
|
+
* view; and the confirmation, in the row being deleted. Both stand on the
|
|
352
|
+
* sunken surface so the row reads as one being edited.
|
|
353
|
+
*/
|
|
354
|
+
[data-ui='saved-views'][data-part='panel'] [data-part='form'],
|
|
355
|
+
[data-ui='saved-views'][data-part='panel'] [data-part='confirm'] {
|
|
356
|
+
display: grid;
|
|
357
|
+
gap: var(--slotted-space-4, 0.5rem);
|
|
358
|
+
margin: 0;
|
|
359
|
+
padding: var(--slotted-space-4, 0.5rem);
|
|
360
|
+
border-radius: var(--_radius);
|
|
361
|
+
background: var(--slotted-surface-sunken, Canvas);
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
[data-ui='saved-views'][data-part='panel'] [data-part='confirm'] > p {
|
|
365
|
+
margin: 0;
|
|
366
|
+
overflow-wrap: anywhere;
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
[data-ui='saved-views'][data-part='panel']
|
|
370
|
+
:is([data-part='form'], [data-part='confirm'])
|
|
371
|
+
> [data-buttons] {
|
|
372
|
+
display: flex;
|
|
373
|
+
flex-wrap: wrap;
|
|
374
|
+
justify-content: flex-end;
|
|
375
|
+
gap: var(--slotted-space-3, 0.375rem);
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
/** Save as new view… then Save, at the inline end, under a rule. */
|
|
379
|
+
[data-ui='saved-views'][data-part='panel'] > [data-part='footer'] {
|
|
380
|
+
display: flex;
|
|
381
|
+
flex-wrap: wrap;
|
|
382
|
+
justify-content: flex-end;
|
|
383
|
+
gap: var(--slotted-space-3, 0.375rem);
|
|
384
|
+
padding-block-start: var(--slotted-space-4, 0.5rem);
|
|
385
|
+
border-block-start: var(--slotted-border-width-thin, 1px) solid
|
|
386
|
+
var(--slotted-border-subtle, transparent);
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
@media (forced-colors: active) {
|
|
390
|
+
[data-ui='saved-views'] > [data-part='trigger'] > [data-part='modified']::before {
|
|
391
|
+
forced-color-adjust: none;
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
[
|
|
2
|
+
"--slotted-border-subtle",
|
|
3
|
+
"--slotted-border-width-thin",
|
|
4
|
+
"--slotted-control-border-color",
|
|
5
|
+
"--slotted-control-border-width",
|
|
6
|
+
"--slotted-control-font-size-md",
|
|
7
|
+
"--slotted-control-gap-md",
|
|
8
|
+
"--slotted-control-height-md",
|
|
9
|
+
"--slotted-control-height-sm",
|
|
10
|
+
"--slotted-control-icon-size-md",
|
|
11
|
+
"--slotted-control-icon-size-sm",
|
|
12
|
+
"--slotted-control-padding-inline-md",
|
|
13
|
+
"--slotted-control-radius",
|
|
14
|
+
"--slotted-control-shadow",
|
|
15
|
+
"--slotted-control-surface",
|
|
16
|
+
"--slotted-control-transition-duration",
|
|
17
|
+
"--slotted-control-transition-easing",
|
|
18
|
+
"--slotted-duration-instant",
|
|
19
|
+
"--slotted-focus-ring-color",
|
|
20
|
+
"--slotted-focus-ring-offset",
|
|
21
|
+
"--slotted-focus-ring-width",
|
|
22
|
+
"--slotted-font-family-sans",
|
|
23
|
+
"--slotted-font-weight-medium",
|
|
24
|
+
"--slotted-font-weight-regular",
|
|
25
|
+
"--slotted-line-height-md",
|
|
26
|
+
"--slotted-radius-full",
|
|
27
|
+
"--slotted-saved-views-panel-inline-size",
|
|
28
|
+
"--slotted-space-1",
|
|
29
|
+
"--slotted-space-2",
|
|
30
|
+
"--slotted-space-3",
|
|
31
|
+
"--slotted-space-4",
|
|
32
|
+
"--slotted-surface-sunken",
|
|
33
|
+
"--slotted-text",
|
|
34
|
+
"--slotted-text-muted",
|
|
35
|
+
"--slotted-tone-accent-solid",
|
|
36
|
+
"--slotted-tone-accent-subtle-active",
|
|
37
|
+
"--slotted-tone-accent-subtle-hover",
|
|
38
|
+
"--slotted-tone-accent-text",
|
|
39
|
+
"--slotted-tone-secondary-subtle-active",
|
|
40
|
+
"--slotted-tone-secondary-subtle-hover"
|
|
41
|
+
]
|