@scattered-light/loomiere-base-ui 0.6.1 → 0.7.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/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 +540 -0
- package/dist/custom/collection/index.js +1489 -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 +29 -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 +2349 -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 +140 -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 +35 -7
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
1
|
+
/* @scattered-light/loomiere-base-ui 0.7.1 · styles for @base-ui/react 1.9.0 */
|
|
2
2
|
/* Input - Mojave Theme
|
|
3
3
|
*
|
|
4
4
|
* No component tokens: the look is the field concept (tokens/semantic/field.json),
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
1
|
+
/* @scattered-light/loomiere-base-ui 0.7.1 · styles for @base-ui/react 1.9.0 */
|
|
2
2
|
/* Menu - Mojave Theme
|
|
3
3
|
*
|
|
4
4
|
* No component tokens. The trigger is a Button. The popup is the popup concept, rows are item rows at the
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
1
|
+
/* @scattered-light/loomiere-base-ui 0.7.1 · styles for @base-ui/react 1.9.0 */
|
|
2
2
|
/* Menubar - Mojave Theme
|
|
3
3
|
*
|
|
4
4
|
* No component tokens. A row of quiet triggers, each opening a menu. The popup is the popup concept, rows are item rows at the
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
1
|
+
/* @scattered-light/loomiere-base-ui 0.7.1 · styles for @base-ui/react 1.9.0 */
|
|
2
2
|
/* Meter - Mojave Theme
|
|
3
3
|
*
|
|
4
4
|
* A gauge (tokens/semantic/gauge.json). The fill is the solid color of the scope around it:
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
1
|
+
/* @scattered-light/loomiere-base-ui 0.7.1 · styles for @base-ui/react 1.9.0 */
|
|
2
2
|
/* Navigation Menu - Mojave Theme
|
|
3
3
|
*
|
|
4
4
|
* The strip is the bar concept, the panel is the popup concept and each link is an item
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
1
|
+
/* @scattered-light/loomiere-base-ui 0.7.1 · styles for @base-ui/react 1.9.0 */
|
|
2
2
|
/* Number Field - Mojave Theme
|
|
3
3
|
*
|
|
4
4
|
* No component tokens. The input is Input (Input.css) and the label, description and
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
1
|
+
/* @scattered-light/loomiere-base-ui 0.7.1 · styles for @base-ui/react 1.9.0 */
|
|
2
2
|
/* OTP Field - Mojave Theme
|
|
3
3
|
*
|
|
4
4
|
* One-time code entry: a row of single-character inputs. Each slot is the same control as Input
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
1
|
+
/* @scattered-light/loomiere-base-ui 0.7.1 · styles for @base-ui/react 1.9.0 */
|
|
2
2
|
/* Preview Card - Mojave Theme
|
|
3
3
|
*
|
|
4
4
|
* The popup concept (surface, arrow, motion) with a title-magnify title and condense
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
1
|
+
/* @scattered-light/loomiere-base-ui 0.7.1 · styles for @base-ui/react 1.9.0 */
|
|
2
2
|
/* Progress - Mojave Theme
|
|
3
3
|
*
|
|
4
4
|
* A gauge (tokens/semantic/gauge.json), the same bar as Meter. The fill is the solid color of
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
1
|
+
/* @scattered-light/loomiere-base-ui 0.7.1 · styles for @base-ui/react 1.9.0 */
|
|
2
2
|
/* Radio - Mojave Theme
|
|
3
3
|
* Same box as Checkbox, always round. Sizes follow the label the same way, and the
|
|
4
4
|
* dot is a share of the circle (check.dot-scale).
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
1
|
+
/* @scattered-light/loomiere-base-ui 0.7.1 · styles for @base-ui/react 1.9.0 */
|
|
2
2
|
/* Scroll Area - Mojave Theme
|
|
3
3
|
*
|
|
4
4
|
* The scrollbar is the content scrollbar (content.scrollbar-*): a track that stays clear until
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
1
|
+
/* @scattered-light/loomiere-base-ui 0.7.1 · styles for @base-ui/react 1.9.0 */
|
|
2
2
|
/* Select - Mojave Theme
|
|
3
3
|
*
|
|
4
4
|
* The trigger is a field (the field pattern, control sizes, the base text style); the
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
1
|
+
/* @scattered-light/loomiere-base-ui 0.7.1 · styles for @base-ui/react 1.9.0 */
|
|
2
2
|
/* Separator - Mojave Theme
|
|
3
3
|
*
|
|
4
4
|
* A hairline in the everyday divider color (border.default), one stroke thick, with a step of
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
1
|
+
/* @scattered-light/loomiere-base-ui 0.7.1 · styles for @base-ui/react 1.9.0 */
|
|
2
2
|
/* Slider - Mojave Theme
|
|
3
3
|
*
|
|
4
4
|
* A slider is a gauge you can drag: the track, fill and label row are gauge.* (the same bar as
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
1
|
+
/* @scattered-light/loomiere-base-ui 0.7.1 · styles for @base-ui/react 1.9.0 */
|
|
2
2
|
/* Switch - Mojave Theme
|
|
3
3
|
* Switch keeps its track sizes. The thumb, its travel and the ON/OFF text are
|
|
4
4
|
* worked out from them: the thumb fills the track's height inside the padding,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
1
|
+
/* @scattered-light/loomiere-base-ui 0.7.1 · styles for @base-ui/react 1.9.0 */
|
|
2
2
|
/* Tabs - Mojave Theme
|
|
3
3
|
*
|
|
4
4
|
* No component tokens. The divider, the selected line and color, hover and the disabled
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
1
|
+
/* @scattered-light/loomiere-base-ui 0.7.1 · styles for @base-ui/react 1.9.0 */
|
|
2
2
|
/* Toast - Mojave Theme
|
|
3
3
|
*
|
|
4
4
|
* A toast is a notice (tokens/semantic/notice.json) on the popup surface. A toast whose type
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
1
|
+
/* @scattered-light/loomiere-base-ui 0.7.1 · styles for @base-ui/react 1.9.0 */
|
|
2
2
|
/* Toggle - Mojave Theme
|
|
3
3
|
* A toggle is a button that stays pressed: the same heights, padding, gap and
|
|
4
4
|
* trigger text style as a button of the same size. Pressed, it takes its emphasis level's
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
1
|
+
/* @scattered-light/loomiere-base-ui 0.7.1 · styles for @base-ui/react 1.9.0 */
|
|
2
2
|
/* Toggle Group - Mojave Theme
|
|
3
3
|
*
|
|
4
4
|
* No component tokens. The strip is the bar concept (tokens/semantic/bar.json); the
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
1
|
+
/* @scattered-light/loomiere-base-ui 0.7.1 · styles for @base-ui/react 1.9.0 */
|
|
2
2
|
/* Toolbar - Mojave Theme
|
|
3
3
|
*
|
|
4
4
|
* The strip is the bar concept (tokens/semantic/bar.json). Buttons, toggles, selects
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
1
|
+
/* @scattered-light/loomiere-base-ui 0.7.1 · styles for @base-ui/react 1.9.0 */
|
|
2
2
|
/* Tooltip - Mojave Theme
|
|
3
3
|
*
|
|
4
4
|
* The inverse surface (surface.inverse, text.on-inverse-surface) with condense text, so a tooltip
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/* @scattered-light/loomiere-base-ui 0.7.1 · styles for @base-ui/react 1.9.0 */
|
|
2
|
+
/* Badge
|
|
3
|
+
*
|
|
4
|
+
* A status or count label. Not a Base UI part, and not interactive: no hover or focus.
|
|
5
|
+
* Colors are the emphasis levels (--sl-e-bg, --sl-e-fg, --sl-e-border), so data-emphasis,
|
|
6
|
+
* data-status and data-color all recolor it. The default level is subtle, from
|
|
7
|
+
* DEFAULT_LEVELS. The shape is radius.pill. Sizes are badge.* (tokens/component/badge.json).
|
|
8
|
+
*
|
|
9
|
+
* Text is the trigger style of the same tier (trigger-minimize, trigger-condense,
|
|
10
|
+
* trigger-base): medium weight, and those three tiers already exist. subtitle is bold,
|
|
11
|
+
* which would shout, and label only exists at base. Icons use icon-size of that same
|
|
12
|
+
* tier (a badge icon is a mark beside the label, not a control that fills the line the
|
|
13
|
+
* way a Button icon does).
|
|
14
|
+
*
|
|
15
|
+
* Min width equals the height on every badge, so a single digit is a circle and a
|
|
16
|
+
* wider label is unchanged. Padding stays, so "12" does not touch the pill edges.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
.Badge {
|
|
20
|
+
font-family: var(--sl-font-trigger-condense-font-family);
|
|
21
|
+
font-size: var(--sl-font-trigger-condense-font-size);
|
|
22
|
+
font-weight: var(--sl-font-trigger-condense-font-weight);
|
|
23
|
+
line-height: var(--sl-font-trigger-condense-line-height);
|
|
24
|
+
letter-spacing: var(--sl-font-trigger-condense-letter-spacing);
|
|
25
|
+
display: inline-flex;
|
|
26
|
+
align-items: center;
|
|
27
|
+
justify-content: center;
|
|
28
|
+
gap: var(--sl-badge-gap-condense);
|
|
29
|
+
height: var(--sl-badge-height-condense);
|
|
30
|
+
min-width: var(--sl-badge-height-condense);
|
|
31
|
+
padding-inline: var(--sl-badge-padding-inline-condense);
|
|
32
|
+
border: var(--sl-stroke-default) solid var(--sl-e-border);
|
|
33
|
+
border-radius: var(--sl-radius-pill);
|
|
34
|
+
background: var(--sl-e-bg);
|
|
35
|
+
color: var(--sl-e-fg);
|
|
36
|
+
white-space: nowrap;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.Badge[data-size='minimize'] {
|
|
40
|
+
font-family: var(--sl-font-trigger-minimize-font-family);
|
|
41
|
+
font-size: var(--sl-font-trigger-minimize-font-size);
|
|
42
|
+
font-weight: var(--sl-font-trigger-minimize-font-weight);
|
|
43
|
+
line-height: var(--sl-font-trigger-minimize-line-height);
|
|
44
|
+
letter-spacing: var(--sl-font-trigger-minimize-letter-spacing);
|
|
45
|
+
gap: var(--sl-badge-gap-minimize);
|
|
46
|
+
height: var(--sl-badge-height-minimize);
|
|
47
|
+
min-width: var(--sl-badge-height-minimize);
|
|
48
|
+
padding-inline: var(--sl-badge-padding-inline-minimize);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.Badge[data-size='base'] {
|
|
52
|
+
font-family: var(--sl-font-trigger-base-font-family);
|
|
53
|
+
font-size: var(--sl-font-trigger-base-font-size);
|
|
54
|
+
font-weight: var(--sl-font-trigger-base-font-weight);
|
|
55
|
+
line-height: var(--sl-font-trigger-base-line-height);
|
|
56
|
+
letter-spacing: var(--sl-font-trigger-base-letter-spacing);
|
|
57
|
+
gap: var(--sl-badge-gap-base);
|
|
58
|
+
height: var(--sl-badge-height-base);
|
|
59
|
+
min-width: var(--sl-badge-height-base);
|
|
60
|
+
padding-inline: var(--sl-badge-padding-inline-base);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.Badge svg,
|
|
64
|
+
.Badge .material-symbols-outlined {
|
|
65
|
+
width: var(--sl-icon-size-condense);
|
|
66
|
+
height: var(--sl-icon-size-condense);
|
|
67
|
+
font-size: var(--sl-icon-size-condense);
|
|
68
|
+
line-height: 1;
|
|
69
|
+
flex-shrink: 0;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.Badge[data-size='minimize'] svg,
|
|
73
|
+
.Badge[data-size='minimize'] .material-symbols-outlined {
|
|
74
|
+
width: var(--sl-icon-size-minimize);
|
|
75
|
+
height: var(--sl-icon-size-minimize);
|
|
76
|
+
font-size: var(--sl-icon-size-minimize);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.Badge[data-size='base'] svg,
|
|
80
|
+
.Badge[data-size='base'] .material-symbols-outlined {
|
|
81
|
+
width: var(--sl-icon-size-base);
|
|
82
|
+
height: var(--sl-icon-size-base);
|
|
83
|
+
font-size: var(--sl-icon-size-base);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/* A status dot, in the label color. */
|
|
87
|
+
.Badge[data-dot]::before {
|
|
88
|
+
content: '';
|
|
89
|
+
width: var(--sl-badge-dot-condense);
|
|
90
|
+
height: var(--sl-badge-dot-condense);
|
|
91
|
+
border-radius: var(--sl-radius-pill);
|
|
92
|
+
background: currentColor;
|
|
93
|
+
flex-shrink: 0;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.Badge[data-size='minimize'][data-dot]::before {
|
|
97
|
+
width: var(--sl-badge-dot-minimize);
|
|
98
|
+
height: var(--sl-badge-dot-minimize);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.Badge[data-size='base'][data-dot]::before {
|
|
102
|
+
width: var(--sl-badge-dot-base);
|
|
103
|
+
height: var(--sl-badge-dot-base);
|
|
104
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/* @scattered-light/loomiere-base-ui 0.7.1 · styles for @base-ui/react 1.9.0 */
|
|
2
|
+
/* Collection
|
|
3
|
+
*
|
|
4
|
+
* DataTable, DataList, the toolbar and the pagination, in one place so the two views
|
|
5
|
+
* share the table concept. Sections: toolbar, table additions, groups, list, pagination, sizes.
|
|
6
|
+
* Each section is its own file so the design system can name the part. This file brings them in.
|
|
7
|
+
*
|
|
8
|
+
* The selection bar replaces the trailing controls (filters, sort, actions) and leaves
|
|
9
|
+
* the tabs and the search where they are, so selecting rows does not grow the toolbar.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
@import './CollectionToolbar.css';
|
|
13
|
+
@import './DataTable.css';
|
|
14
|
+
@import './DataList.css';
|
|
15
|
+
@import './CollectionPagination.css';
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/* @scattered-light/loomiere-base-ui 0.7.1 · styles for @base-ui/react 1.9.0 */
|
|
2
|
+
/* Pagination
|
|
3
|
+
*
|
|
4
|
+
* Not tied to a collection. Anything with a page, a page count and a total can use it.
|
|
5
|
+
* Previous and Next are quiet buttons. The count reads "1–25 of 312".
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
.CollectionPagination {
|
|
9
|
+
display: flex;
|
|
10
|
+
flex-wrap: wrap;
|
|
11
|
+
align-items: center;
|
|
12
|
+
gap: var(--sl-collection-toolbar-gap);
|
|
13
|
+
margin-block-start: var(--sl-collection-toolbar-gap);
|
|
14
|
+
color: var(--sl-table-subtle-color);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.CollectionPagination p {
|
|
18
|
+
font-family: var(--sl-font-body-condense-font-family);
|
|
19
|
+
font-size: var(--sl-font-body-condense-font-size);
|
|
20
|
+
font-weight: var(--sl-font-body-condense-font-weight);
|
|
21
|
+
line-height: var(--sl-font-body-condense-line-height);
|
|
22
|
+
letter-spacing: var(--sl-font-body-condense-letter-spacing);
|
|
23
|
+
margin: 0;
|
|
24
|
+
}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/* @scattered-light/loomiere-base-ui 0.7.1 · styles for @base-ui/react 1.9.0 */
|
|
2
|
+
/* Collection toolbar
|
|
3
|
+
*
|
|
4
|
+
* The wrap follows the toolbar's own width, not the window: a table in a narrow pane wraps
|
|
5
|
+
* even when the page is wide. Search grows to fill the row beside the trailing controls, and
|
|
6
|
+
* wraps to its own line before it shrinks under collection.search-min-width. Under the narrow
|
|
7
|
+
* width it takes the full row and filters wrap under it.
|
|
8
|
+
* A container query cannot read the width token, so the component also sets data-narrow.
|
|
9
|
+
*
|
|
10
|
+
* The search icon and the clear button sit inside the field. The browser's own search cancel
|
|
11
|
+
* is hidden by the reset, so the clear button is the only one, in every browser.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
.CollectionToolbar {
|
|
15
|
+
container-type: inline-size;
|
|
16
|
+
display: flex;
|
|
17
|
+
flex-direction: column;
|
|
18
|
+
gap: var(--sl-collection-toolbar-gap);
|
|
19
|
+
margin-block-end: var(--sl-collection-toolbar-gap);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.CollectionToolbarMain,
|
|
23
|
+
.CollectionSelectionBar,
|
|
24
|
+
.CollectionSort {
|
|
25
|
+
display: flex;
|
|
26
|
+
flex-wrap: wrap;
|
|
27
|
+
align-items: center;
|
|
28
|
+
gap: var(--sl-collection-toolbar-gap);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.CollectionSearch {
|
|
32
|
+
display: flex;
|
|
33
|
+
align-items: center;
|
|
34
|
+
gap: var(--sl-collection-toolbar-gap);
|
|
35
|
+
flex: 1 1 0;
|
|
36
|
+
min-width: min(100%, var(--sl-collection-search-min-width));
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.CollectionSearchField {
|
|
40
|
+
position: relative;
|
|
41
|
+
flex: 1 1 auto;
|
|
42
|
+
min-width: 0;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/* Scoped to the field so it wins over Input.css, which loads later. */
|
|
46
|
+
.CollectionSearchField .Input {
|
|
47
|
+
min-width: 0;
|
|
48
|
+
padding-inline-start: calc(var(--sl-control-padding-inline) + var(--sl-icon-size-magnify) + var(--sl-space-2));
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.CollectionSearchField[data-filled] .Input {
|
|
52
|
+
padding-inline-end: calc(var(--sl-control-padding-inline) + var(--sl-icon-button-size));
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.CollectionSearchIcon {
|
|
56
|
+
position: absolute;
|
|
57
|
+
inset-inline-start: var(--sl-control-padding-inline);
|
|
58
|
+
inset-block-start: 50%;
|
|
59
|
+
transform: translateY(-50%);
|
|
60
|
+
width: var(--sl-icon-size-magnify);
|
|
61
|
+
height: var(--sl-icon-size-magnify);
|
|
62
|
+
font-size: var(--sl-icon-size-magnify);
|
|
63
|
+
line-height: 1;
|
|
64
|
+
color: var(--sl-field-affix-color);
|
|
65
|
+
pointer-events: none;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.CollectionSearchClear {
|
|
69
|
+
display: flex;
|
|
70
|
+
align-items: center;
|
|
71
|
+
justify-content: center;
|
|
72
|
+
flex-shrink: 0;
|
|
73
|
+
width: var(--sl-icon-button-size);
|
|
74
|
+
height: var(--sl-icon-button-size);
|
|
75
|
+
padding: 0;
|
|
76
|
+
border: none;
|
|
77
|
+
border-radius: var(--sl-icon-button-radius);
|
|
78
|
+
background: transparent;
|
|
79
|
+
color: var(--sl-icon-button-color);
|
|
80
|
+
cursor: pointer;
|
|
81
|
+
outline: none;
|
|
82
|
+
transition: var(--sl-icon-button-transition);
|
|
83
|
+
position: absolute;
|
|
84
|
+
inset-inline-end: var(--sl-space-3);
|
|
85
|
+
inset-block-start: 50%;
|
|
86
|
+
transform: translateY(-50%);
|
|
87
|
+
font-size: var(--sl-icon-size-magnify);
|
|
88
|
+
line-height: 1;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.CollectionSearchClear:hover {
|
|
92
|
+
background: var(--sl-icon-button-background-hover);
|
|
93
|
+
color: var(--sl-icon-button-color-hover);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.CollectionSearchClear:focus-visible {
|
|
97
|
+
outline: var(--sl-focus-outline);
|
|
98
|
+
outline-offset: var(--sl-focus-outline-offset);
|
|
99
|
+
box-shadow: 0 0 0 var(--sl-focus-halo-spread) var(--sl-focus-halo-color);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/* The trailing controls join the main row one by one, so each keeps its own width and
|
|
103
|
+
wraps under the search on its own rather than squeezing. Search takes what is left. */
|
|
104
|
+
.CollectionToolbarTrailing {
|
|
105
|
+
display: contents;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.CollectionSelectionBar {
|
|
109
|
+
flex: 0 0 auto;
|
|
110
|
+
max-width: 100%;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/* Select.css and Combobox.css fill their container. In the row they size to their text. */
|
|
114
|
+
.CollectionToolbarMain .SelectTrigger,
|
|
115
|
+
.CollectionToolbarMain .ComboboxInputWrapper {
|
|
116
|
+
flex: none;
|
|
117
|
+
width: auto;
|
|
118
|
+
max-width: 100%;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.CollectionToolbarActions {
|
|
122
|
+
display: flex;
|
|
123
|
+
flex-wrap: wrap;
|
|
124
|
+
gap: var(--sl-collection-toolbar-gap);
|
|
125
|
+
margin-inline-start: auto;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/* The width token is measured in JS (data-narrow). A container query cannot read a custom property. */
|
|
129
|
+
.CollectionToolbar[data-narrow] .CollectionSearch,
|
|
130
|
+
.CollectionView[data-narrow] .CollectionSearch {
|
|
131
|
+
flex-basis: 100%;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
.CollectionCount {
|
|
135
|
+
font-family: var(--sl-font-body-condense-font-family);
|
|
136
|
+
font-size: var(--sl-font-body-condense-font-size);
|
|
137
|
+
font-weight: var(--sl-font-body-condense-font-weight);
|
|
138
|
+
line-height: var(--sl-font-body-condense-line-height);
|
|
139
|
+
letter-spacing: var(--sl-font-body-condense-letter-spacing);
|
|
140
|
+
}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/* @scattered-light/loomiere-base-ui 0.7.1 · styles for @base-ui/react 1.9.0 */
|
|
2
|
+
/* DataList
|
|
3
|
+
*
|
|
4
|
+
* The same rows as the table, in one container with the table's borders, hover, selected
|
|
5
|
+
* and current states. Not a stack of floating cards: the two views should read as one family.
|
|
6
|
+
* variant=cards adds the surface radius and a gap when a queue should read as separate items.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
.DataList {
|
|
10
|
+
font-family: var(--sl-font-body-condense-font-family);
|
|
11
|
+
font-size: var(--sl-font-body-condense-font-size);
|
|
12
|
+
font-weight: var(--sl-font-body-condense-font-weight);
|
|
13
|
+
line-height: var(--sl-font-body-condense-line-height);
|
|
14
|
+
letter-spacing: var(--sl-font-body-condense-letter-spacing);
|
|
15
|
+
color: var(--sl-table-color);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.DataList ul {
|
|
19
|
+
margin: 0;
|
|
20
|
+
padding: 0;
|
|
21
|
+
list-style: none;
|
|
22
|
+
background: var(--sl-table-background);
|
|
23
|
+
border: var(--sl-stroke-default) solid var(--sl-table-border-color);
|
|
24
|
+
border-radius: var(--sl-table-radius);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.DataList li {
|
|
28
|
+
display: flex;
|
|
29
|
+
align-items: flex-start;
|
|
30
|
+
gap: var(--sl-collection-list-row-gap);
|
|
31
|
+
padding-block: var(--sl-collection-list-row-padding-block);
|
|
32
|
+
padding-inline: var(--sl-table-cell-padding-inline);
|
|
33
|
+
border-bottom: var(--sl-stroke-default) solid var(--sl-table-row-border-color);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.DataList li:last-child {
|
|
37
|
+
border-bottom: none;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.DataList[data-size='md'] li {
|
|
41
|
+
padding-block: var(--sl-collection-list-row-padding-block);
|
|
42
|
+
min-height: var(--sl-collection-row-height-md);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.DataList li[data-selected] {
|
|
46
|
+
background: var(--sl-table-row-selected);
|
|
47
|
+
color: var(--sl-table-color);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.DataList li[aria-current='true'] {
|
|
51
|
+
background: var(--sl-table-row-current);
|
|
52
|
+
color: var(--sl-table-color);
|
|
53
|
+
box-shadow: inset var(--sl-stroke-strong) 0 0 0 var(--sl-border-accent);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
@media (hover: hover) {
|
|
57
|
+
.DataList li:hover:not([data-selected], [aria-current='true']) {
|
|
58
|
+
background: var(--sl-table-row-hover);
|
|
59
|
+
color: var(--sl-table-color);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.DataListPrimary {
|
|
64
|
+
font-family: var(--sl-font-subtitle-condense-font-family);
|
|
65
|
+
font-size: var(--sl-font-subtitle-condense-font-size);
|
|
66
|
+
font-weight: var(--sl-font-subtitle-condense-font-weight);
|
|
67
|
+
line-height: var(--sl-font-subtitle-condense-line-height);
|
|
68
|
+
letter-spacing: var(--sl-font-subtitle-condense-letter-spacing);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.DataListSecondary,
|
|
72
|
+
.DataListMeta,
|
|
73
|
+
.DataListSummary {
|
|
74
|
+
font-family: var(--sl-font-body-condense-font-family);
|
|
75
|
+
font-size: var(--sl-font-body-condense-font-size);
|
|
76
|
+
font-weight: var(--sl-font-body-condense-font-weight);
|
|
77
|
+
line-height: var(--sl-font-body-condense-line-height);
|
|
78
|
+
letter-spacing: var(--sl-font-body-condense-letter-spacing);
|
|
79
|
+
color: var(--sl-table-subtle-color);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.DataListBody {
|
|
83
|
+
display: flex;
|
|
84
|
+
flex: 1;
|
|
85
|
+
flex-direction: column;
|
|
86
|
+
gap: var(--sl-space-1);
|
|
87
|
+
min-width: 0;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.DataListMeta {
|
|
91
|
+
display: flex;
|
|
92
|
+
flex-wrap: wrap;
|
|
93
|
+
gap: var(--sl-collection-list-row-gap);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.DataListAmount {
|
|
97
|
+
margin-inline-start: auto;
|
|
98
|
+
font-variant-numeric: tabular-nums;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.DataListGroup {
|
|
102
|
+
background: var(--sl-table-group-header-background);
|
|
103
|
+
color: var(--sl-table-header-color);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.DataList[data-variant='cards'] ul {
|
|
107
|
+
display: flex;
|
|
108
|
+
flex-direction: column;
|
|
109
|
+
gap: var(--sl-collection-list-row-gap);
|
|
110
|
+
background: transparent;
|
|
111
|
+
border: 0;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
.DataList[data-variant='cards'] li {
|
|
115
|
+
background: var(--sl-table-background);
|
|
116
|
+
border: var(--sl-stroke-default) solid var(--sl-table-border-color);
|
|
117
|
+
border-radius: var(--sl-table-radius);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.DataList[data-loading] ul {
|
|
121
|
+
opacity: var(--sl-item-opacity-disabled);
|
|
122
|
+
transition: opacity var(--sl-duration-fast) var(--sl-easing-default);
|
|
123
|
+
}
|