@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,66 @@
|
|
|
1
|
+
[
|
|
2
|
+
"--slotted-border-subtle",
|
|
3
|
+
"--slotted-border-width-thin",
|
|
4
|
+
"--slotted-control-font-size-md",
|
|
5
|
+
"--slotted-control-gap-md",
|
|
6
|
+
"--slotted-control-icon-size-md",
|
|
7
|
+
"--slotted-control-padding-inline-md",
|
|
8
|
+
"--slotted-control-radius",
|
|
9
|
+
"--slotted-control-transition-duration",
|
|
10
|
+
"--slotted-control-transition-easing",
|
|
11
|
+
"--slotted-description-list-cell-padding-block",
|
|
12
|
+
"--slotted-description-list-cell-padding-inline",
|
|
13
|
+
"--slotted-description-list-clamp",
|
|
14
|
+
"--slotted-description-list-color",
|
|
15
|
+
"--slotted-description-list-column-gap",
|
|
16
|
+
"--slotted-description-list-control-color",
|
|
17
|
+
"--slotted-description-list-control-color-complete",
|
|
18
|
+
"--slotted-description-list-control-color-hover",
|
|
19
|
+
"--slotted-description-list-control-surface-active",
|
|
20
|
+
"--slotted-description-list-control-surface-hover",
|
|
21
|
+
"--slotted-description-list-font-family",
|
|
22
|
+
"--slotted-description-list-font-size",
|
|
23
|
+
"--slotted-description-list-frame-radius",
|
|
24
|
+
"--slotted-description-list-glyph-size",
|
|
25
|
+
"--slotted-description-list-group-gap",
|
|
26
|
+
"--slotted-description-list-hint-color",
|
|
27
|
+
"--slotted-description-list-hint-font-size",
|
|
28
|
+
"--slotted-description-list-line-height",
|
|
29
|
+
"--slotted-description-list-placeholder-color",
|
|
30
|
+
"--slotted-description-list-radius",
|
|
31
|
+
"--slotted-description-list-row-gap",
|
|
32
|
+
"--slotted-description-list-rule-color",
|
|
33
|
+
"--slotted-description-list-stack-gap",
|
|
34
|
+
"--slotted-description-list-surface",
|
|
35
|
+
"--slotted-description-list-term-color",
|
|
36
|
+
"--slotted-description-list-term-min",
|
|
37
|
+
"--slotted-description-list-term-surface",
|
|
38
|
+
"--slotted-description-list-term-weight",
|
|
39
|
+
"--slotted-description-list-term-width",
|
|
40
|
+
"--slotted-description-list-toggle-color",
|
|
41
|
+
"--slotted-description-list-underline-offset",
|
|
42
|
+
"--slotted-focus-ring-color",
|
|
43
|
+
"--slotted-focus-ring-offset",
|
|
44
|
+
"--slotted-focus-ring-width",
|
|
45
|
+
"--slotted-font-family-sans",
|
|
46
|
+
"--slotted-font-size-xs",
|
|
47
|
+
"--slotted-font-weight-medium",
|
|
48
|
+
"--slotted-font-weight-regular",
|
|
49
|
+
"--slotted-line-height-md",
|
|
50
|
+
"--slotted-line-height-xs",
|
|
51
|
+
"--slotted-radius-md",
|
|
52
|
+
"--slotted-space-1",
|
|
53
|
+
"--slotted-space-2",
|
|
54
|
+
"--slotted-space-3",
|
|
55
|
+
"--slotted-space-4",
|
|
56
|
+
"--slotted-surface",
|
|
57
|
+
"--slotted-surface-sunken",
|
|
58
|
+
"--slotted-target-comfortable",
|
|
59
|
+
"--slotted-target-min",
|
|
60
|
+
"--slotted-text",
|
|
61
|
+
"--slotted-text-muted",
|
|
62
|
+
"--slotted-tone-accent-text",
|
|
63
|
+
"--slotted-tone-secondary-subtle-active",
|
|
64
|
+
"--slotted-tone-secondary-subtle-hover",
|
|
65
|
+
"--slotted-tone-success-text"
|
|
66
|
+
]
|
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
@layer slotted.components {
|
|
2
|
+
/**
|
|
3
|
+
* One record on screen. The top is `page-header`'s, the strip is `tabs`'s,
|
|
4
|
+
* a stacked unit is `section`'s, the waiting shape is `skeleton`'s and the
|
|
5
|
+
* column the content stands in is `container`'s; what this stylesheet
|
|
6
|
+
* draws is the two columns of the body, the rhythm between sections, the
|
|
7
|
+
* tabpanel a section becomes under `layout=tabs`, the message a missing
|
|
8
|
+
* record leaves, and the footer that stays.
|
|
9
|
+
*
|
|
10
|
+
* article ─────────────────────────────────────────────┐
|
|
11
|
+
* │ page-header (its own sticky rule; the strip in its │
|
|
12
|
+
* │ tabs slot) │
|
|
13
|
+
* ├─ body ▸ container ───────────────────────────────────┤
|
|
14
|
+
* │ banner │
|
|
15
|
+
* │ columns ▸ main ▸ section … │ aside │
|
|
16
|
+
* │ message (in place of columns under status ≠ ready) │
|
|
17
|
+
* ├─ footer (sticky at the bottom) ───────────────────── ┤
|
|
18
|
+
* └──────────────────────────────────────────────────────┘
|
|
19
|
+
*
|
|
20
|
+
* The root is the query container and the columns are three elements in, so
|
|
21
|
+
* the query can change their tracks (`docs/build-briefing.md`, _Decisions
|
|
22
|
+
* already taken_). The container between them is what aligns the body
|
|
23
|
+
* with the header's own container in every host: inside a page both read
|
|
24
|
+
* the page's width and inset, and in a drawer both fill it at one rem.
|
|
25
|
+
*
|
|
26
|
+
* Every part is reached from the part that owns it with a child
|
|
27
|
+
* combinator, because the content is other families — a section has a
|
|
28
|
+
* `body`, a description-list has a `description`, a result-state has a
|
|
29
|
+
* `message` — and a descendant rule would restyle theirs.
|
|
30
|
+
*/
|
|
31
|
+
[data-ui='detail-panel'] {
|
|
32
|
+
--_text: var(--slotted-text, CanvasText);
|
|
33
|
+
--_muted: var(--slotted-text-muted, GrayText);
|
|
34
|
+
--_rule: var(--slotted-detail-panel-border, var(--slotted-border-subtle, ButtonBorder));
|
|
35
|
+
/**
|
|
36
|
+
* The ground the sticky footer paints, so what scrolls under it is
|
|
37
|
+
* covered. Inside a page it is the page's own; outside, the surface.
|
|
38
|
+
*/
|
|
39
|
+
--_ground: var(--slotted-page-ground, var(--slotted-surface, Canvas));
|
|
40
|
+
/**
|
|
41
|
+
* The aside's track. Sixteen rem is Primer's minimum pane — 256 pixels,
|
|
42
|
+
* enough for a label and a name on one line — and the steps either side
|
|
43
|
+
* are two rem apart, which is what one type step moves a two-word label
|
|
44
|
+
* by. There is no token for a column's width; `drawer` states its extents
|
|
45
|
+
* the same way.
|
|
46
|
+
*/
|
|
47
|
+
--_aside-size: var(--slotted-detail-panel-aside-size-md, 16rem);
|
|
48
|
+
/** Between the two columns, and between the aside's rule and its text. */
|
|
49
|
+
--_gap: var(--slotted-detail-panel-gap-md, var(--slotted-space-8, 1.5rem));
|
|
50
|
+
/** Between two stacked sections, and between the banner and the body. */
|
|
51
|
+
--_rhythm: var(--slotted-detail-panel-rhythm, var(--slotted-space-8, 1.5rem));
|
|
52
|
+
/**
|
|
53
|
+
* Above the first thing in the column and below the last. A step more
|
|
54
|
+
* than the gap a section gives its own header, because the page-header's
|
|
55
|
+
* pill of controls straddles the chrome's edge and hangs half its height
|
|
56
|
+
* into the column: at a step less the first eyebrow met the pill.
|
|
57
|
+
*/
|
|
58
|
+
--_inset-block: var(--slotted-detail-panel-inset-block-md, var(--slotted-space-8, 1.5rem));
|
|
59
|
+
--_rule-size: var(--slotted-border-width-thin, 1px);
|
|
60
|
+
|
|
61
|
+
color: var(--_text);
|
|
62
|
+
container-name: detail-panel;
|
|
63
|
+
container-type: inline-size;
|
|
64
|
+
display: flex;
|
|
65
|
+
flex-direction: column;
|
|
66
|
+
font-family: var(--slotted-font-family-sans, ui-sans-serif, system-ui, sans-serif);
|
|
67
|
+
min-inline-size: 0;
|
|
68
|
+
position: relative;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
[data-ui='detail-panel'][data-size='sm'] {
|
|
72
|
+
--_aside-size: var(--slotted-detail-panel-aside-size-sm, 14rem);
|
|
73
|
+
--_gap: var(--slotted-detail-panel-gap-sm, var(--slotted-space-7, 1.25rem));
|
|
74
|
+
--_inset-block: var(--slotted-detail-panel-inset-block-sm, var(--slotted-space-7, 1.25rem));
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
[data-ui='detail-panel'][data-size='lg'] {
|
|
78
|
+
--_aside-size: var(--slotted-detail-panel-aside-size-lg, 18rem);
|
|
79
|
+
--_gap: var(--slotted-detail-panel-gap-lg, var(--slotted-space-9, 2rem));
|
|
80
|
+
--_inset-block: var(--slotted-detail-panel-inset-block-lg, var(--slotted-space-9, 2rem));
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* The root is the scroll container: a pane of a split, a card with a
|
|
85
|
+
* height. The page-header then sticks inside it, and a flex parent may
|
|
86
|
+
* shrink it, which `min-block-size: 0` is what allows. `overscroll-behavior`
|
|
87
|
+
* keeps a wheel at the end of the record from scrolling the page behind.
|
|
88
|
+
*/
|
|
89
|
+
[data-ui='detail-panel'][data-scroll='self'] {
|
|
90
|
+
block-size: 100%;
|
|
91
|
+
min-block-size: 0;
|
|
92
|
+
overflow: auto;
|
|
93
|
+
overscroll-behavior: contain;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/* ── The column ──────────────────────────────────────────────────────── */
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* The body takes the vertical inset and grows to push the footer to the
|
|
100
|
+
* bottom when the record is shorter than its host. Inside it the container
|
|
101
|
+
* is `container`'s own grid — its children land in the content track — so
|
|
102
|
+
* the banner, the columns and the message share one column and one rhythm.
|
|
103
|
+
*/
|
|
104
|
+
[data-ui='detail-panel'] > [data-part='body'] {
|
|
105
|
+
display: flex;
|
|
106
|
+
flex: 1 0 auto;
|
|
107
|
+
flex-direction: column;
|
|
108
|
+
min-inline-size: 0;
|
|
109
|
+
padding-block: var(--_inset-block);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
[data-ui='detail-panel'] > [data-part='body'] > [data-ui='container'] {
|
|
113
|
+
row-gap: var(--_rhythm);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
[data-ui='detail-panel'] > [data-part='body'] > [data-ui='container'] > [data-part='banner'] {
|
|
117
|
+
min-inline-size: 0;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/* ── The columns ─────────────────────────────────────────────────────── */
|
|
121
|
+
|
|
122
|
+
[data-ui='detail-panel'] > [data-part='body'] > [data-ui='container'] > [data-part='columns'] {
|
|
123
|
+
display: grid;
|
|
124
|
+
gap: var(--_gap);
|
|
125
|
+
grid-template-columns: minmax(0, 1fr);
|
|
126
|
+
min-inline-size: 0;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
[data-ui='detail-panel']
|
|
130
|
+
> [data-part='body']
|
|
131
|
+
> [data-ui='container']
|
|
132
|
+
> [data-part='columns']
|
|
133
|
+
> [data-part='main'] {
|
|
134
|
+
display: flex;
|
|
135
|
+
flex-direction: column;
|
|
136
|
+
gap: var(--_rhythm);
|
|
137
|
+
min-inline-size: 0;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Narrow, the aside follows the main column in the flow with a rule above
|
|
142
|
+
* it — the reading order it already has. `overflow-wrap` is for the value
|
|
143
|
+
* with no spaces, an identifier or a URL, which would otherwise widen the
|
|
144
|
+
* column past the record.
|
|
145
|
+
*/
|
|
146
|
+
[data-ui='detail-panel']
|
|
147
|
+
> [data-part='body']
|
|
148
|
+
> [data-ui='container']
|
|
149
|
+
> [data-part='columns']
|
|
150
|
+
> [data-part='aside'] {
|
|
151
|
+
border-block-start: var(--_rule-size) solid var(--_rule);
|
|
152
|
+
min-inline-size: 0;
|
|
153
|
+
overflow-wrap: anywhere;
|
|
154
|
+
padding-block-start: var(--_gap);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Above 600 pixels of the root's own width the aside stands beside the
|
|
159
|
+
* body in the column its axis names, separated by a rule at the gap's
|
|
160
|
+
* distance from both. The text-to-rule and the main-to-rule distances are
|
|
161
|
+
* the same number, so the rule reads as the middle of the gap rather than
|
|
162
|
+
* as an edge of the aside.
|
|
163
|
+
*/
|
|
164
|
+
@container detail-panel (min-width: 600px) {
|
|
165
|
+
[data-ui='detail-panel'] > [data-part='body'] > [data-ui='container'] > [data-part='columns'] {
|
|
166
|
+
grid-template-columns: minmax(0, 1fr) var(--_aside-size);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
[data-ui='detail-panel'][data-aside='start']
|
|
170
|
+
> [data-part='body']
|
|
171
|
+
> [data-ui='container']
|
|
172
|
+
> [data-part='columns'] {
|
|
173
|
+
grid-template-columns: var(--_aside-size) minmax(0, 1fr);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
[data-ui='detail-panel'][data-aside='none']
|
|
177
|
+
> [data-part='body']
|
|
178
|
+
> [data-ui='container']
|
|
179
|
+
> [data-part='columns'] {
|
|
180
|
+
grid-template-columns: minmax(0, 1fr);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
[data-ui='detail-panel']
|
|
184
|
+
> [data-part='body']
|
|
185
|
+
> [data-ui='container']
|
|
186
|
+
> [data-part='columns']
|
|
187
|
+
> [data-part='aside'] {
|
|
188
|
+
border-block-start: 0;
|
|
189
|
+
border-inline-start: var(--_rule-size) solid var(--_rule);
|
|
190
|
+
padding-block-start: 0;
|
|
191
|
+
padding-inline-start: var(--_gap);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
[data-ui='detail-panel'][data-aside='start']
|
|
195
|
+
> [data-part='body']
|
|
196
|
+
> [data-ui='container']
|
|
197
|
+
> [data-part='columns']
|
|
198
|
+
> [data-part='aside'] {
|
|
199
|
+
border-inline-end: var(--_rule-size) solid var(--_rule);
|
|
200
|
+
border-inline-start: 0;
|
|
201
|
+
order: -1;
|
|
202
|
+
padding-inline-end: var(--_gap);
|
|
203
|
+
padding-inline-start: 0;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
/* ── A section ───────────────────────────────────────────────────────── */
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* A hash link or a programmatic `section` lands the unit under the page
|
|
211
|
+
* chrome rather than behind it: the page-header republishes where its
|
|
212
|
+
* chrome ends, and the section reads it.
|
|
213
|
+
*/
|
|
214
|
+
[data-ui='detail-panel']
|
|
215
|
+
> [data-part='body']
|
|
216
|
+
> [data-ui='container']
|
|
217
|
+
> [data-part='columns']
|
|
218
|
+
> [data-part='main']
|
|
219
|
+
> [data-part='section'] {
|
|
220
|
+
min-inline-size: 0;
|
|
221
|
+
scroll-margin-block-start: var(--slotted-page-sticky-top, 0px);
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* Under `layout=tabs` the section is the tabpanel of the strip's tab.
|
|
226
|
+
* `[hidden]` carries `display: none` from the user-agent sheet at a
|
|
227
|
+
* specificity any rule here would beat, so the attribute is restated.
|
|
228
|
+
*/
|
|
229
|
+
[data-ui='detail-panel']
|
|
230
|
+
> [data-part='body']
|
|
231
|
+
> [data-ui='container']
|
|
232
|
+
> [data-part='columns']
|
|
233
|
+
> [data-part='main']
|
|
234
|
+
> [data-part='section'][hidden] {
|
|
235
|
+
display: none;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
/**
|
|
239
|
+
* The panel is in the page's tab sequence, which is where `Tab` from the
|
|
240
|
+
* strip goes. Its ring is the library's outward one, as `tabs` draws on its
|
|
241
|
+
* own panel: the section holds the consumer's content and has no inset of
|
|
242
|
+
* its own, so an inset ring would be drawn through its first line.
|
|
243
|
+
*/
|
|
244
|
+
[data-ui='detail-panel']
|
|
245
|
+
> [data-part='body']
|
|
246
|
+
> [data-ui='container']
|
|
247
|
+
> [data-part='columns']
|
|
248
|
+
> [data-part='main']
|
|
249
|
+
> [data-part='section'][role='tabpanel']:focus-visible {
|
|
250
|
+
outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
|
|
251
|
+
outline-offset: var(--slotted-focus-ring-offset, 2px);
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
/**
|
|
255
|
+
* A section arriving under `tabs` fades in — the one transition drawn on
|
|
256
|
+
* content rather than on a control, and the same one `tabs` draws on its
|
|
257
|
+
* panel, because the section is the thing that changed. Under `stacked`
|
|
258
|
+
* nothing arrives, so nothing moves.
|
|
259
|
+
*/
|
|
260
|
+
[data-ui='detail-panel'][data-layout='tabs']
|
|
261
|
+
> [data-part='body']
|
|
262
|
+
> [data-ui='container']
|
|
263
|
+
> [data-part='columns']
|
|
264
|
+
> [data-part='main']
|
|
265
|
+
> [data-part='section']:not([hidden]) {
|
|
266
|
+
animation: slotted-detail-panel-section-in var(--slotted-duration-short)
|
|
267
|
+
var(--slotted-easing-enter);
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
@keyframes slotted-detail-panel-section-in {
|
|
271
|
+
from {
|
|
272
|
+
opacity: 0;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
/**
|
|
277
|
+
* Under `tabs` the section has no heading — the tab is its name — and its
|
|
278
|
+
* own controls sit in a row at the inline end, above the content, where a
|
|
279
|
+
* stacked section's actions column would have put them.
|
|
280
|
+
*/
|
|
281
|
+
[data-ui='detail-panel']
|
|
282
|
+
> [data-part='body']
|
|
283
|
+
> [data-ui='container']
|
|
284
|
+
> [data-part='columns']
|
|
285
|
+
> [data-part='main']
|
|
286
|
+
> [data-part='section']
|
|
287
|
+
> [data-part='section-actions'] {
|
|
288
|
+
align-items: center;
|
|
289
|
+
display: flex;
|
|
290
|
+
flex-wrap: wrap;
|
|
291
|
+
gap: var(--slotted-control-gap-md, 8px);
|
|
292
|
+
justify-content: flex-end;
|
|
293
|
+
margin-block-end: var(--slotted-space-5, 0.75rem);
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
/* ── The message ─────────────────────────────────────────────────────── */
|
|
297
|
+
|
|
298
|
+
/**
|
|
299
|
+
* In place of the columns when the record is not there. Tall enough that a
|
|
300
|
+
* result-state reads as the record's absence rather than as a note under
|
|
301
|
+
* the header: four of the largest space step, which is the height of a
|
|
302
|
+
* short record.
|
|
303
|
+
*/
|
|
304
|
+
[data-ui='detail-panel'] > [data-part='body'] > [data-ui='container'] > [data-part='message'] {
|
|
305
|
+
display: grid;
|
|
306
|
+
min-block-size: calc(4 * var(--slotted-space-12, 4rem));
|
|
307
|
+
min-inline-size: 0;
|
|
308
|
+
place-items: center;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
/* ── The footer ──────────────────────────────────────────────────────── */
|
|
312
|
+
|
|
313
|
+
/**
|
|
314
|
+
* Stays at the bottom of whatever scrolls, under the chrome a page
|
|
315
|
+
* publishes there, painted so the content passing under it is covered.
|
|
316
|
+
* `margin-block-start: auto` puts it at the bottom of a record shorter
|
|
317
|
+
* than its host, and the container inside aligns its actions with the
|
|
318
|
+
* column above.
|
|
319
|
+
*/
|
|
320
|
+
[data-ui='detail-panel'] > [data-part='footer'] {
|
|
321
|
+
background-color: var(--_ground);
|
|
322
|
+
border-block-start: var(--_rule-size) solid var(--_rule);
|
|
323
|
+
inset-block-end: var(--slotted-page-sticky-bottom, 0px);
|
|
324
|
+
margin-block-start: auto;
|
|
325
|
+
padding-block: var(--slotted-space-4, 0.5rem);
|
|
326
|
+
position: sticky;
|
|
327
|
+
z-index: var(--slotted-z-index-sticky, 100);
|
|
328
|
+
}
|
|
329
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
[
|
|
2
|
+
"--slotted-border-subtle",
|
|
3
|
+
"--slotted-border-width-thin",
|
|
4
|
+
"--slotted-control-gap-md",
|
|
5
|
+
"--slotted-detail-panel-aside-size-lg",
|
|
6
|
+
"--slotted-detail-panel-aside-size-md",
|
|
7
|
+
"--slotted-detail-panel-aside-size-sm",
|
|
8
|
+
"--slotted-detail-panel-border",
|
|
9
|
+
"--slotted-detail-panel-gap-lg",
|
|
10
|
+
"--slotted-detail-panel-gap-md",
|
|
11
|
+
"--slotted-detail-panel-gap-sm",
|
|
12
|
+
"--slotted-detail-panel-inset-block-lg",
|
|
13
|
+
"--slotted-detail-panel-inset-block-md",
|
|
14
|
+
"--slotted-detail-panel-inset-block-sm",
|
|
15
|
+
"--slotted-detail-panel-rhythm",
|
|
16
|
+
"--slotted-duration-short",
|
|
17
|
+
"--slotted-easing-enter",
|
|
18
|
+
"--slotted-focus-ring-color",
|
|
19
|
+
"--slotted-focus-ring-offset",
|
|
20
|
+
"--slotted-focus-ring-width",
|
|
21
|
+
"--slotted-font-family-sans",
|
|
22
|
+
"--slotted-page-ground",
|
|
23
|
+
"--slotted-space-12",
|
|
24
|
+
"--slotted-space-4",
|
|
25
|
+
"--slotted-space-5",
|
|
26
|
+
"--slotted-space-7",
|
|
27
|
+
"--slotted-space-8",
|
|
28
|
+
"--slotted-space-9",
|
|
29
|
+
"--slotted-surface",
|
|
30
|
+
"--slotted-text",
|
|
31
|
+
"--slotted-text-muted",
|
|
32
|
+
"--slotted-z-index-sticky"
|
|
33
|
+
]
|