@scattered-light/loomiere-base-ui 0.6.0 → 0.7.0
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/README.md +135 -5
- package/dist/chunk-JUUPOOQQ.js +3723 -0
- package/dist/chunk-JUUPOOQQ.js.map +1 -0
- package/dist/chunk-M7KJASGK.js +802 -0
- package/dist/chunk-M7KJASGK.js.map +1 -0
- package/dist/chunk-Y2CPBMFJ.js +147 -0
- package/dist/chunk-Y2CPBMFJ.js.map +1 -0
- package/dist/custom/collection/index.d.ts +534 -0
- package/dist/custom/collection/index.js +1471 -0
- package/dist/custom/collection/index.js.map +1 -0
- package/dist/custom/index.d.ts +5 -0
- package/dist/custom/index.js +4 -0
- package/dist/custom/index.js.map +1 -0
- package/dist/design-system/components/Badge/README.md +35 -0
- package/dist/design-system/components/Badge/preview.html +19 -0
- package/dist/design-system/components/Collection/README.md +14 -0
- package/dist/design-system/components/CollectionPagination/README.md +15 -0
- package/dist/design-system/components/CollectionToolbar/README.md +24 -0
- package/dist/design-system/components/DataList/README.md +39 -0
- package/dist/design-system/components/DataList/preview.html +475 -0
- package/dist/design-system/components/DataTable/README.md +41 -0
- package/dist/design-system/components/DataTable/preview.html +475 -0
- package/dist/design-system/components/DatePicker/README.md +55 -0
- package/dist/design-system/components/DatePicker/preview.html +475 -0
- package/dist/design-system/components/EditableList/README.md +33 -0
- package/dist/design-system/components/EditableList/preview.html +475 -0
- package/dist/design-system/components/EmptyState/README.md +60 -0
- package/dist/design-system/components/EmptyState/preview.html +475 -0
- package/dist/design-system/components/ListDetail/README.md +43 -0
- package/dist/design-system/components/ListDetail/preview.html +475 -0
- package/dist/design-system/components/MoneyField/README.md +52 -0
- package/dist/design-system/components/MoneyField/preview.html +475 -0
- package/dist/design-system/components/Splitter/README.md +42 -0
- package/dist/design-system/components/Splitter/preview.html +475 -0
- package/dist/design-system/components/Table/README.md +2 -1
- package/dist/design-system/components/Table/preview.html +1 -1
- package/dist/design-system/components/bundle.js +7 -5
- package/dist/design-system/components/index.d.ts +3 -21
- package/dist/design-system/components/styles.css +2266 -186
- package/dist/index-ChJXlxzq.d.ts +809 -0
- package/dist/index.d.ts +3 -21
- package/dist/index.js +176 -891
- package/dist/index.js.map +1 -1
- package/dist/styles/components/Accordion.css +1 -1
- package/dist/styles/components/AlertDialog.css +1 -1
- package/dist/styles/components/Autocomplete.css +1 -1
- package/dist/styles/components/Avatar.css +1 -1
- package/dist/styles/components/Button.css +1 -1
- package/dist/styles/components/Checkbox.css +1 -1
- package/dist/styles/components/CheckboxGroup.css +1 -1
- package/dist/styles/components/Collapsible.css +1 -1
- package/dist/styles/components/Combobox.css +1 -1
- package/dist/styles/components/ContextMenu.css +1 -1
- package/dist/styles/components/Dialog.css +1 -1
- package/dist/styles/components/Drawer.css +1 -1
- package/dist/styles/components/Field.css +1 -1
- package/dist/styles/components/Fieldset.css +1 -1
- package/dist/styles/components/Form.css +1 -1
- package/dist/styles/components/Input.css +1 -1
- package/dist/styles/components/Menu.css +1 -1
- package/dist/styles/components/Menubar.css +1 -1
- package/dist/styles/components/Meter.css +1 -1
- package/dist/styles/components/NavigationMenu.css +1 -1
- package/dist/styles/components/NumberField.css +1 -1
- package/dist/styles/components/OTPField.css +1 -1
- package/dist/styles/components/Popover.css +1 -1
- package/dist/styles/components/PreviewCard.css +1 -1
- package/dist/styles/components/Progress.css +1 -1
- package/dist/styles/components/Radio.css +1 -1
- package/dist/styles/components/ScrollArea.css +1 -1
- package/dist/styles/components/Select.css +1 -1
- package/dist/styles/components/Separator.css +1 -1
- package/dist/styles/components/Slider.css +1 -1
- package/dist/styles/components/Switch.css +1 -1
- package/dist/styles/components/Tabs.css +1 -1
- package/dist/styles/components/Toast.css +1 -1
- package/dist/styles/components/Toggle.css +1 -1
- package/dist/styles/components/ToggleGroup.css +1 -1
- package/dist/styles/components/Toolbar.css +1 -1
- package/dist/styles/components/Tooltip.css +1 -1
- package/dist/styles/custom/Badge.css +104 -0
- package/dist/styles/custom/Collection.css +15 -0
- package/dist/styles/custom/CollectionPagination.css +24 -0
- package/dist/styles/custom/CollectionToolbar.css +57 -0
- package/dist/styles/custom/DataList.css +123 -0
- package/dist/styles/custom/DataTable.css +120 -0
- package/dist/styles/custom/DatePicker.css +572 -0
- package/dist/styles/custom/EditableList.css +98 -0
- package/dist/styles/custom/EmptyState.css +255 -0
- package/dist/styles/custom/ListDetail.css +126 -0
- package/dist/styles/custom/MoneyField.css +344 -0
- package/dist/styles/custom/Splitter.css +207 -0
- package/dist/styles/{components → custom}/Table.css +31 -4
- package/dist/styles/index.css +12 -2
- package/dist/styles/reset/accessibility.css +1 -1
- package/dist/styles/reset/reset-accessibility.css +1 -1
- package/dist/styles/reset/reset-tailwind.css +1 -1
- package/dist/styles/reset/reset.css +1 -1
- package/dist/styles/tailwind.css +12 -2
- package/package.json +36 -8
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
/* @scattered-light/loomiere-base-ui 0.7.0 · styles for @base-ui/react 1.9.0 */
|
|
2
|
+
/* EmptyState
|
|
3
|
+
*
|
|
4
|
+
* The block a page, pane, table, list or popup shows when it has nothing to show.
|
|
5
|
+
* One look for every kind. data-kind only picks the media tone and, in the component,
|
|
6
|
+
* the default icon and whether the block is announced. Sizes are empty.*
|
|
7
|
+
* (tokens/semantic/empty.json). No border and no fill: the container provides those.
|
|
8
|
+
*
|
|
9
|
+
* The circle uses the subtle emphasis level (--sl-e-bg, --sl-e-fg), the same variables
|
|
10
|
+
* Badge uses. data-status on the media recolors it. A parent data-color does too:
|
|
11
|
+
* the subtle chrome pin skips this circle when a color scope is on an ancestor
|
|
12
|
+
* (Badge keeps the pin). A brand pair re-points fill and text, not that chrome
|
|
13
|
+
* scope. The circle stays chrome subtle inside a pair, the same as Badge, so a
|
|
14
|
+
* pair does not get its own selector. High contrast and the vision themes come
|
|
15
|
+
* with those variables. The title stays
|
|
16
|
+
* text-primary and the description text-secondary: an error's title is not red,
|
|
17
|
+
* because a sentence has to stay readable. Neutral kinds use the chrome palette,
|
|
18
|
+
* which is what subtle resolves to when no status is set.
|
|
19
|
+
*
|
|
20
|
+
* Text is a whole style per size, not a font-size on its own. Compact is a table
|
|
21
|
+
* row or a popup, so the title is subtitle-condense (bold, the row's size) and the
|
|
22
|
+
* description is body-condense. Standard is a pane: title-condense, the section
|
|
23
|
+
* heading, with body-base under it. Spacious is a page: title-magnify, the next
|
|
24
|
+
* title up, still body-base so the sentence doesn't grow with the heading.
|
|
25
|
+
* Unselected is the quiet pane beside a list, so it drops the circle, the icon is
|
|
26
|
+
* text-tertiary, and the title steps down one tier: subtitle-minimize where the
|
|
27
|
+
* others use a condense style (there is no title at minimize), and title-condense
|
|
28
|
+
* where the others use title-magnify.
|
|
29
|
+
*
|
|
30
|
+
* Compact is a row (icon, text, actions) centered across the cell. Standard and
|
|
31
|
+
* spacious are a column. They take margin-block: auto so a flex or grid column
|
|
32
|
+
* centers them in the leftover space; in normal flow that margin is zero, so a
|
|
33
|
+
* page that isn't a column doesn't grow a hole. There is no data-fill attribute.
|
|
34
|
+
*
|
|
35
|
+
* The icon for unselected is left_click: the pane is waiting for a choice in the
|
|
36
|
+
* list beside it, which an empty inbox would not say.
|
|
37
|
+
*
|
|
38
|
+
* A popup's empty slot already pads a plain sentence (popup-empty). When the child
|
|
39
|
+
* is an EmptyState, that padding drops so the two don't add. Menu.Empty has no
|
|
40
|
+
* popup-empty padding of its own, so it needs nothing here.
|
|
41
|
+
*/
|
|
42
|
+
|
|
43
|
+
/* ============================================
|
|
44
|
+
ROOT
|
|
45
|
+
============================================ */
|
|
46
|
+
|
|
47
|
+
.EmptyState {
|
|
48
|
+
box-sizing: border-box;
|
|
49
|
+
display: flex;
|
|
50
|
+
flex-direction: column;
|
|
51
|
+
align-items: center;
|
|
52
|
+
justify-content: center;
|
|
53
|
+
gap: var(--sl-empty-gap-standard);
|
|
54
|
+
width: 100%;
|
|
55
|
+
padding-block: var(--sl-empty-padding-block-standard);
|
|
56
|
+
padding-inline: var(--sl-empty-padding-inline-standard);
|
|
57
|
+
color: var(--sl-text-primary);
|
|
58
|
+
text-align: center;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/* ============================================
|
|
62
|
+
MEDIA
|
|
63
|
+
============================================ */
|
|
64
|
+
|
|
65
|
+
.EmptyStateMedia {
|
|
66
|
+
display: inline-flex;
|
|
67
|
+
flex-shrink: 0;
|
|
68
|
+
align-items: center;
|
|
69
|
+
justify-content: center;
|
|
70
|
+
width: var(--sl-empty-media-size-standard);
|
|
71
|
+
height: var(--sl-empty-media-size-standard);
|
|
72
|
+
border-radius: var(--sl-radius-pill);
|
|
73
|
+
background: var(--sl-e-bg);
|
|
74
|
+
color: var(--sl-e-fg);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.EmptyStateMedia:not([data-custom]) .material-symbols-outlined,
|
|
78
|
+
.EmptyStateMedia:not([data-custom]) svg {
|
|
79
|
+
width: var(--sl-icon-size-magnify);
|
|
80
|
+
height: var(--sl-icon-size-magnify);
|
|
81
|
+
font-size: var(--sl-icon-size-magnify);
|
|
82
|
+
line-height: 1;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/* An illustration the app passed in. No circle and no tint. */
|
|
86
|
+
.EmptyStateMedia[data-custom] {
|
|
87
|
+
width: auto;
|
|
88
|
+
height: auto;
|
|
89
|
+
background: none;
|
|
90
|
+
color: inherit;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/* ============================================
|
|
94
|
+
TEXT
|
|
95
|
+
============================================ */
|
|
96
|
+
|
|
97
|
+
.EmptyStateText {
|
|
98
|
+
display: flex;
|
|
99
|
+
flex-direction: column;
|
|
100
|
+
align-items: center;
|
|
101
|
+
gap: var(--sl-empty-text-gap-standard);
|
|
102
|
+
min-width: 0;
|
|
103
|
+
max-width: var(--sl-empty-description-max-width);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.EmptyStateTitle {
|
|
107
|
+
font-family: var(--sl-font-title-condense-font-family);
|
|
108
|
+
font-size: var(--sl-font-title-condense-font-size);
|
|
109
|
+
font-weight: var(--sl-font-title-condense-font-weight);
|
|
110
|
+
line-height: var(--sl-font-title-condense-line-height);
|
|
111
|
+
letter-spacing: var(--sl-font-title-condense-letter-spacing);
|
|
112
|
+
margin: 0;
|
|
113
|
+
max-width: 100%;
|
|
114
|
+
color: var(--sl-text-primary);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.EmptyStateDescription {
|
|
118
|
+
font-family: var(--sl-font-body-base-font-family);
|
|
119
|
+
font-size: var(--sl-font-body-base-font-size);
|
|
120
|
+
font-weight: var(--sl-font-body-base-font-weight);
|
|
121
|
+
line-height: var(--sl-font-body-base-line-height);
|
|
122
|
+
letter-spacing: var(--sl-font-body-base-letter-spacing);
|
|
123
|
+
margin: 0;
|
|
124
|
+
max-width: 100%;
|
|
125
|
+
color: var(--sl-text-secondary);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/* ============================================
|
|
129
|
+
ACTIONS
|
|
130
|
+
============================================ */
|
|
131
|
+
|
|
132
|
+
.EmptyStateActions {
|
|
133
|
+
display: flex;
|
|
134
|
+
flex-wrap: wrap;
|
|
135
|
+
align-items: center;
|
|
136
|
+
justify-content: center;
|
|
137
|
+
gap: var(--sl-empty-actions-gap);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/* ============================================
|
|
141
|
+
SIZES
|
|
142
|
+
============================================ */
|
|
143
|
+
|
|
144
|
+
.EmptyState[data-size='compact'] {
|
|
145
|
+
flex-direction: row;
|
|
146
|
+
flex-wrap: wrap;
|
|
147
|
+
gap: var(--sl-empty-gap-compact);
|
|
148
|
+
padding-block: var(--sl-empty-padding-block-compact);
|
|
149
|
+
padding-inline: var(--sl-empty-padding-inline-compact);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
.EmptyState[data-size='compact'] .EmptyStateText {
|
|
153
|
+
gap: var(--sl-empty-text-gap-compact);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
.EmptyState[data-size='compact'] .EmptyStateTitle {
|
|
157
|
+
font-family: var(--sl-font-subtitle-condense-font-family);
|
|
158
|
+
font-size: var(--sl-font-subtitle-condense-font-size);
|
|
159
|
+
font-weight: var(--sl-font-subtitle-condense-font-weight);
|
|
160
|
+
line-height: var(--sl-font-subtitle-condense-line-height);
|
|
161
|
+
letter-spacing: var(--sl-font-subtitle-condense-letter-spacing);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
.EmptyState[data-size='compact'] .EmptyStateDescription {
|
|
165
|
+
font-family: var(--sl-font-body-condense-font-family);
|
|
166
|
+
font-size: var(--sl-font-body-condense-font-size);
|
|
167
|
+
font-weight: var(--sl-font-body-condense-font-weight);
|
|
168
|
+
line-height: var(--sl-font-body-condense-line-height);
|
|
169
|
+
letter-spacing: var(--sl-font-body-condense-letter-spacing);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/* Icon only. The tone stays on the glyph, so an error is still an error. */
|
|
173
|
+
.EmptyState[data-size='compact'] .EmptyStateMedia {
|
|
174
|
+
width: auto;
|
|
175
|
+
height: auto;
|
|
176
|
+
background: none;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
.EmptyState[data-size='compact'] .EmptyStateMedia:not([data-custom]) .material-symbols-outlined,
|
|
180
|
+
.EmptyState[data-size='compact'] .EmptyStateMedia:not([data-custom]) svg {
|
|
181
|
+
width: var(--sl-icon-size-condense);
|
|
182
|
+
height: var(--sl-icon-size-condense);
|
|
183
|
+
font-size: var(--sl-icon-size-condense);
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
.EmptyState[data-size='spacious'] {
|
|
187
|
+
gap: var(--sl-empty-gap-spacious);
|
|
188
|
+
padding-block: var(--sl-empty-padding-block-spacious);
|
|
189
|
+
padding-inline: var(--sl-empty-padding-inline-spacious);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
.EmptyState[data-size='spacious'] .EmptyStateText {
|
|
193
|
+
gap: var(--sl-empty-text-gap-spacious);
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
.EmptyState[data-size='spacious'] .EmptyStateTitle {
|
|
197
|
+
font-family: var(--sl-font-title-magnify-font-family);
|
|
198
|
+
font-size: var(--sl-font-title-magnify-font-size);
|
|
199
|
+
font-weight: var(--sl-font-title-magnify-font-weight);
|
|
200
|
+
line-height: var(--sl-font-title-magnify-line-height);
|
|
201
|
+
letter-spacing: var(--sl-font-title-magnify-letter-spacing);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
.EmptyState[data-size='spacious'] .EmptyStateMedia {
|
|
205
|
+
width: var(--sl-empty-media-size-spacious);
|
|
206
|
+
height: var(--sl-empty-media-size-spacious);
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
.EmptyState[data-size='spacious'] .EmptyStateMedia:not([data-custom]) .material-symbols-outlined,
|
|
210
|
+
.EmptyState[data-size='spacious'] .EmptyStateMedia:not([data-custom]) svg {
|
|
211
|
+
width: var(--sl-icon-size-maximize);
|
|
212
|
+
height: var(--sl-icon-size-maximize);
|
|
213
|
+
font-size: var(--sl-icon-size-maximize);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
/* ============================================
|
|
217
|
+
PLACES
|
|
218
|
+
============================================ */
|
|
219
|
+
|
|
220
|
+
/* A flex or grid column centers the block in the space left over. */
|
|
221
|
+
.EmptyState:is([data-size='standard'], [data-size='spacious']) {
|
|
222
|
+
margin-block: auto;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/* The detail pane before a row is picked. Quieter than the list beside it. */
|
|
226
|
+
.EmptyState[data-kind='unselected'] .EmptyStateMedia {
|
|
227
|
+
width: auto;
|
|
228
|
+
height: auto;
|
|
229
|
+
background: none;
|
|
230
|
+
color: var(--sl-text-tertiary);
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
.EmptyState[data-kind='unselected'][data-size='compact'] .EmptyStateTitle,
|
|
234
|
+
.EmptyState[data-kind='unselected'][data-size='standard'] .EmptyStateTitle {
|
|
235
|
+
font-family: var(--sl-font-subtitle-minimize-font-family);
|
|
236
|
+
font-size: var(--sl-font-subtitle-minimize-font-size);
|
|
237
|
+
font-weight: var(--sl-font-subtitle-minimize-font-weight);
|
|
238
|
+
line-height: var(--sl-font-subtitle-minimize-line-height);
|
|
239
|
+
letter-spacing: var(--sl-font-subtitle-minimize-letter-spacing);
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
.EmptyState[data-kind='unselected'][data-size='spacious'] .EmptyStateTitle {
|
|
243
|
+
font-family: var(--sl-font-title-condense-font-family);
|
|
244
|
+
font-size: var(--sl-font-title-condense-font-size);
|
|
245
|
+
font-weight: var(--sl-font-title-condense-font-weight);
|
|
246
|
+
line-height: var(--sl-font-title-condense-line-height);
|
|
247
|
+
letter-spacing: var(--sl-font-title-condense-letter-spacing);
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
/* The popup slot pads a plain sentence. An EmptyState brings its own padding. */
|
|
251
|
+
.ComboboxEmpty:has(> .EmptyState),
|
|
252
|
+
.AutocompleteEmpty:has(> .EmptyState) {
|
|
253
|
+
padding: 0;
|
|
254
|
+
color: inherit;
|
|
255
|
+
}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/* @scattered-light/loomiere-base-ui 0.7.0 · styles for @base-ui/react 1.9.0 */
|
|
2
|
+
/* ListDetail
|
|
3
|
+
*
|
|
4
|
+
* The detail of one item, next to its list. Not a Base UI part. It is a Splitter
|
|
5
|
+
* when this element is at least list-detail.split-min-width wide, measured on the
|
|
6
|
+
* element itself so it still works inside another panel. Narrower, the detail is
|
|
7
|
+
* the existing Drawer (the default) or it replaces the list, which stays mounted
|
|
8
|
+
* and hidden so its scroll position survives Back.
|
|
9
|
+
*
|
|
10
|
+
* The list stays in the splitter's first panel whether the detail is open, closed,
|
|
11
|
+
* or in a drawer, so its scroll survives. The detail is portaled into a node the
|
|
12
|
+
* component created, and that node moves. The list sits on the page surface. The
|
|
13
|
+
* detail sits on surface.raised: a pane
|
|
14
|
+
* beside the list, one step off the page, with the splitter line as the only
|
|
15
|
+
* divider. A modal surface would make the pane look like a dialog stuck in the
|
|
16
|
+
* layout. Drawer mode does not restyle that; it uses the Drawer's own modal
|
|
17
|
+
* surface, title and Close, so it matches every other drawer.
|
|
18
|
+
*
|
|
19
|
+
* The header title is text-title-condense. title-amplify is for a dialog or a
|
|
20
|
+
* drawer, a layer over the page. A pane heading shares the view with the list,
|
|
21
|
+
* so the condensed title fits the row. Close is a quiet icon-only Button: a
|
|
22
|
+
* text Close would compete with the title and the actions in a short header.
|
|
23
|
+
* Page mode puts Back, icon and word, where Close was.
|
|
24
|
+
*
|
|
25
|
+
* Focus moves to the heading when the detail opens, and back to the row when it
|
|
26
|
+
* closes. Changing the title because another row was picked does not move focus.
|
|
27
|
+
* Escape closes only when it bubbles out of the detail, so an open menu handles
|
|
28
|
+
* it first. Nothing listens on window. Page changes are announced by that focus
|
|
29
|
+
* move; there is no live region.
|
|
30
|
+
*
|
|
31
|
+
* data-layout is split, drawer or page. data-open is set while the detail is open.
|
|
32
|
+
*/
|
|
33
|
+
|
|
34
|
+
.ListDetail {
|
|
35
|
+
display: flex;
|
|
36
|
+
flex-direction: column;
|
|
37
|
+
width: 100%;
|
|
38
|
+
height: 100%;
|
|
39
|
+
min-width: 0;
|
|
40
|
+
min-height: 0;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.ListDetailHost,
|
|
44
|
+
.ListDetailSlot,
|
|
45
|
+
.ListDetailSplit,
|
|
46
|
+
.ListDetailList,
|
|
47
|
+
.ListDetailDetail {
|
|
48
|
+
display: flex;
|
|
49
|
+
flex-direction: column;
|
|
50
|
+
min-width: 0;
|
|
51
|
+
min-height: 0;
|
|
52
|
+
height: 100%;
|
|
53
|
+
flex: 1;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.ListDetailList {
|
|
57
|
+
overflow: auto;
|
|
58
|
+
background: transparent;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.ListDetail[data-layout='split'],
|
|
62
|
+
.ListDetail[data-layout='drawer'],
|
|
63
|
+
.ListDetail[data-layout='page'] {
|
|
64
|
+
min-width: 0;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.ListDetail[data-open] .ListDetailList {
|
|
68
|
+
min-height: 0;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.ListDetailDetail[data-layout='split'],
|
|
72
|
+
.ListDetailDetail[data-layout='page'] {
|
|
73
|
+
background: var(--sl-surface-raised);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.ListDetailDetail[data-layout='drawer'] {
|
|
77
|
+
background: transparent;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.DrawerPopup .ListDetailHeader,
|
|
81
|
+
.ListDetailDetail[data-layout='drawer'] .ListDetailBody {
|
|
82
|
+
padding: 0;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.ListDetailHeader {
|
|
86
|
+
display: flex;
|
|
87
|
+
align-items: center;
|
|
88
|
+
gap: var(--sl-list-detail-header-gap);
|
|
89
|
+
padding: var(--sl-list-detail-header-padding);
|
|
90
|
+
flex: none;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.ListDetailTitle {
|
|
94
|
+
font-family: var(--sl-font-title-condense-font-family);
|
|
95
|
+
font-size: var(--sl-font-title-condense-font-size);
|
|
96
|
+
font-weight: var(--sl-font-title-condense-font-weight);
|
|
97
|
+
line-height: var(--sl-font-title-condense-line-height);
|
|
98
|
+
letter-spacing: var(--sl-font-title-condense-letter-spacing);
|
|
99
|
+
margin: 0;
|
|
100
|
+
flex: 1;
|
|
101
|
+
min-width: 0;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.ListDetailHeader .DrawerTitle {
|
|
105
|
+
flex: 1;
|
|
106
|
+
min-width: 0;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.ListDetailActions {
|
|
110
|
+
display: flex;
|
|
111
|
+
align-items: center;
|
|
112
|
+
gap: var(--sl-list-detail-header-gap);
|
|
113
|
+
flex: none;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
.ListDetailBody {
|
|
117
|
+
flex: 1;
|
|
118
|
+
min-height: 0;
|
|
119
|
+
overflow: auto;
|
|
120
|
+
padding-inline: var(--sl-list-detail-header-padding);
|
|
121
|
+
padding-block-end: var(--sl-list-detail-header-padding);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
.ListDetail[data-layout='drawer'] .ListDetailDetail {
|
|
125
|
+
background: transparent;
|
|
126
|
+
}
|