@scattered-light/loomiere-base-ui 0.7.0 → 0.8.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 +29 -4
- package/dist/{chunk-JUUPOOQQ.js → chunk-LJQ3RZDJ.js} +51 -3
- package/dist/chunk-LJQ3RZDJ.js.map +1 -0
- package/dist/custom/collection/index.d.ts +13 -2
- package/dist/custom/collection/index.js +53 -29
- package/dist/custom/collection/index.js.map +1 -1
- package/dist/custom/index.d.ts +1 -1
- package/dist/custom/index.js +1 -1
- package/dist/design-system/components/Collection/README.md +1 -1
- package/dist/design-system/components/CollectionToolbar/README.md +7 -2
- package/dist/design-system/components/ContextMenu/README.md +1 -1
- package/dist/design-system/components/ContextMenu/preview.html +1 -1
- package/dist/design-system/components/DataList/README.md +1 -1
- package/dist/design-system/components/DataList/preview.html +171 -171
- package/dist/design-system/components/DataTable/README.md +1 -1
- package/dist/design-system/components/DataTable/preview.html +176 -176
- package/dist/design-system/components/DescriptionList/README.md +41 -0
- package/dist/design-system/components/DescriptionList/preview.html +19 -0
- package/dist/design-system/components/Drawer/README.md +1 -1
- package/dist/design-system/components/ScrollArea/preview.html +2 -2
- package/dist/design-system/components/Sheet/README.md +46 -0
- package/dist/design-system/components/Sheet/preview.html +19 -0
- package/dist/design-system/components/StatFigure/README.md +38 -0
- package/dist/design-system/components/StatFigure/preview.html +19 -0
- package/dist/design-system/components/Table/README.md +2 -2
- package/dist/design-system/components/Table/preview.html +2 -2
- package/dist/design-system/components/bundle.js +7 -7
- package/dist/design-system/components/index.d.ts +1 -1
- package/dist/design-system/components/styles.css +457 -60
- package/dist/{index-ChJXlxzq.d.ts → index-CBAo353T.d.ts} +55 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +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 +8 -2
- 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 +1 -1
- package/dist/styles/custom/Collection.css +2 -2
- package/dist/styles/custom/CollectionPagination.css +1 -1
- package/dist/styles/custom/CollectionToolbar.css +87 -4
- package/dist/styles/custom/DataList.css +19 -1
- package/dist/styles/custom/DataTable.css +1 -1
- package/dist/styles/custom/DatePicker.css +1 -1
- package/dist/styles/custom/DescriptionList.css +75 -0
- package/dist/styles/custom/EditableList.css +1 -1
- package/dist/styles/custom/EmptyState.css +1 -1
- package/dist/styles/custom/ListDetail.css +1 -1
- package/dist/styles/custom/MoneyField.css +1 -1
- package/dist/styles/custom/Sheet.css +90 -0
- package/dist/styles/custom/Splitter.css +1 -1
- package/dist/styles/custom/StatFigure.css +60 -0
- package/dist/styles/custom/Table.css +63 -1
- package/dist/styles/index.css +4 -1
- package/dist/styles/reset/accessibility.css +1 -1
- package/dist/styles/reset/reset-accessibility.css +1 -1
- package/dist/styles/reset/reset-tailwind.css +2 -2
- package/dist/styles/reset/reset.css +2 -2
- package/dist/styles/tailwind.css +4 -1
- package/package.json +2 -2
- package/dist/chunk-JUUPOOQQ.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
@import url('https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,400,0..1,0');
|
|
2
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
2
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
3
3
|
/* Loomiere for Base UI: component styles. Brand-free: every value is a --sl- variable from a
|
|
4
4
|
Loomiere theme. Load the theme first:
|
|
5
5
|
@import '<your theme>/tokens.css';
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
/* Document defaults, in the reset layer so any unlayered rule wins over them, and so layered
|
|
10
10
|
frameworks (Chakra's recipes, Tailwind's utilities) are not undone by them. */
|
|
11
11
|
@layer reset {
|
|
12
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
12
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
13
13
|
/* CSS Reset - Mojave Theme */
|
|
14
14
|
|
|
15
15
|
/* ============================================
|
|
@@ -283,7 +283,7 @@ pre {
|
|
|
283
283
|
background: var(--sl-content-pre-background);
|
|
284
284
|
border: var(--sl-stroke-thin) solid var(--sl-content-pre-border);
|
|
285
285
|
color: var(--sl-content-pre-text);
|
|
286
|
-
border-radius: var(--sl-
|
|
286
|
+
border-radius: var(--sl-content-pre-radius);
|
|
287
287
|
overflow-x: auto;
|
|
288
288
|
margin-block: var(--sl-space-6);
|
|
289
289
|
}
|
|
@@ -453,7 +453,7 @@ hr {
|
|
|
453
453
|
}
|
|
454
454
|
}
|
|
455
455
|
@layer reset {
|
|
456
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
456
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
457
457
|
/* Accessibility — base rules (no theme color dependencies). Theme-specific focus/invalid: accessibility-theme.css */
|
|
458
458
|
|
|
459
459
|
/* Remove default focus; keyboard focus styled in accessibility-theme.css */
|
|
@@ -566,7 +566,7 @@ main:focus {
|
|
|
566
566
|
|
|
567
567
|
}
|
|
568
568
|
@layer reset {
|
|
569
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
569
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
570
570
|
/* Focus, invalid, contrast — requires theme tokens (after theme-accessibility.css). */
|
|
571
571
|
|
|
572
572
|
:focus-visible {
|
|
@@ -634,7 +634,7 @@ button,
|
|
|
634
634
|
|
|
635
635
|
}
|
|
636
636
|
/* Component styles */
|
|
637
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
637
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
638
638
|
/* Accordion - Mojave Theme
|
|
639
639
|
*
|
|
640
640
|
* No component tokens. Hover, press, chevron, divider and motion are the disclosure
|
|
@@ -755,7 +755,7 @@ button,
|
|
|
755
755
|
overflow: hidden;
|
|
756
756
|
}
|
|
757
757
|
|
|
758
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
758
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
759
759
|
/* Alert Dialog - Mojave Theme
|
|
760
760
|
*
|
|
761
761
|
* No component tokens and no rules of its own. An alert dialog looks exactly like a
|
|
@@ -764,7 +764,7 @@ button,
|
|
|
764
764
|
* cancel quiet, and a destructive one bold with data-color="error".
|
|
765
765
|
*/
|
|
766
766
|
|
|
767
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
767
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
768
768
|
/* Autocomplete - Mojave Theme
|
|
769
769
|
*
|
|
770
770
|
* No component tokens. The input is Input (Input.css), the clear button is an icon
|
|
@@ -966,7 +966,7 @@ button,
|
|
|
966
966
|
(reset-accessibility.css).
|
|
967
967
|
============================================ */
|
|
968
968
|
|
|
969
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
969
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
970
970
|
/* Avatar - Mojave Theme
|
|
971
971
|
*
|
|
972
972
|
* A round picture with a ring in the page color, so avatars in a group cut out of each other in
|
|
@@ -1074,7 +1074,7 @@ button,
|
|
|
1074
1074
|
}
|
|
1075
1075
|
}
|
|
1076
1076
|
|
|
1077
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
1077
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
1078
1078
|
/* Button - Mojave Theme
|
|
1079
1079
|
*
|
|
1080
1080
|
* Colors are the brand's emphasis levels, sizes are control.*, text is the trigger
|
|
@@ -1224,7 +1224,7 @@ button,
|
|
|
1224
1224
|
font-size: var(--sl-icon-size-maximize);
|
|
1225
1225
|
}
|
|
1226
1226
|
|
|
1227
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
1227
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
1228
1228
|
/* Checkbox - Mojave Theme
|
|
1229
1229
|
* Sizes follow the label: the box is the icon size one tier above the label's text
|
|
1230
1230
|
* tier (like a button's icon) and the check mark one tier below it.
|
|
@@ -1381,7 +1381,7 @@ button,
|
|
|
1381
1381
|
border-radius: var(--sl-radius-pill);
|
|
1382
1382
|
}
|
|
1383
1383
|
|
|
1384
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
1384
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
1385
1385
|
/* Checkbox Group - Mojave Theme */
|
|
1386
1386
|
|
|
1387
1387
|
/* Each checkbox row is already a full tap target tall, so the rows sit close. */
|
|
@@ -1397,7 +1397,7 @@ button,
|
|
|
1397
1397
|
pointer-events: none;
|
|
1398
1398
|
}
|
|
1399
1399
|
|
|
1400
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
1400
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
1401
1401
|
/* Collapsible - Mojave Theme
|
|
1402
1402
|
*
|
|
1403
1403
|
* No component tokens. Hover, press, chevron and motion are the disclosure concept
|
|
@@ -1513,7 +1513,7 @@ button,
|
|
|
1513
1513
|
background: var(--sl-surface-raised);
|
|
1514
1514
|
}
|
|
1515
1515
|
|
|
1516
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
1516
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
1517
1517
|
/* Combobox - Mojave Theme
|
|
1518
1518
|
*
|
|
1519
1519
|
* No component tokens. The input is Input (Input.css); the chips box is a field; the
|
|
@@ -1998,7 +1998,7 @@ button,
|
|
|
1998
1998
|
color: var(--sl-text-tertiary);
|
|
1999
1999
|
}
|
|
2000
2000
|
|
|
2001
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
2001
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
2002
2002
|
/* Context Menu - Mojave Theme
|
|
2003
2003
|
*
|
|
2004
2004
|
* No component tokens. Opens on right-click; the trigger area only sets the cursor. The popup is the popup concept, rows are item rows at the
|
|
@@ -2167,7 +2167,7 @@ button,
|
|
|
2167
2167
|
stroke-width: var(--sl-stroke-default);
|
|
2168
2168
|
}
|
|
2169
2169
|
|
|
2170
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
2170
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
2171
2171
|
/* Dialog and Alert dialog - Mojave Theme
|
|
2172
2172
|
*
|
|
2173
2173
|
* Both are centered modals built from the modal concept (tokens/semantic/modal.json):
|
|
@@ -2313,12 +2313,14 @@ button,
|
|
|
2313
2313
|
margin-top: var(--sl-modal-actions-spacing);
|
|
2314
2314
|
}
|
|
2315
2315
|
|
|
2316
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
2316
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
2317
2317
|
/* Drawer - a panel that slides in from an edge and can be swiped away.
|
|
2318
2318
|
The surface, scrim, heading and motion are the modal concept's (--sl-modal-*), so a
|
|
2319
2319
|
drawer reads as a dialog's sibling; only its size and grab bar are its own
|
|
2320
2320
|
(--sl-drawer-*). Base UI supplies the swipe through
|
|
2321
|
-
--drawer-swipe-movement-x/y and data-swipe-direction on the popup.
|
|
2321
|
+
--drawer-swipe-movement-x/y and data-swipe-direction on the popup.
|
|
2322
|
+
The working-paper rule (rule.width, 0 by default) replaces the top border with a heavier
|
|
2323
|
+
line in rule.color. It is an inset shadow, so it stays put while the drawer scrolls. */
|
|
2322
2324
|
|
|
2323
2325
|
.DrawerBackdrop {
|
|
2324
2326
|
position: fixed;
|
|
@@ -2355,6 +2357,8 @@ button,
|
|
|
2355
2357
|
overflow-y: auto;
|
|
2356
2358
|
overscroll-behavior: contain;
|
|
2357
2359
|
pointer-events: auto;
|
|
2360
|
+
border-top-width: max(0px, var(--sl-modal-border-width) - var(--sl-rule-width) * 1000);
|
|
2361
|
+
box-shadow: inset 0 var(--sl-rule-width) 0 0 var(--sl-rule-color), var(--sl-modal-shadow);
|
|
2358
2362
|
transform: translate(var(--drawer-swipe-movement-x, 0px), var(--drawer-swipe-movement-y, 0px));
|
|
2359
2363
|
transition: transform calc(var(--sl-modal-animation-duration) * var(--drawer-swipe-strength, 1)) var(--sl-modal-animation-easing);
|
|
2360
2364
|
}
|
|
@@ -2385,6 +2389,8 @@ button,
|
|
|
2385
2389
|
max-height: var(--sl-drawer-popup-max-size);
|
|
2386
2390
|
border-top: 0;
|
|
2387
2391
|
border-radius: 0 0 var(--sl-modal-radius) var(--sl-modal-radius);
|
|
2392
|
+
/* Its top edge is the screen's, so no rule. */
|
|
2393
|
+
box-shadow: var(--sl-modal-shadow);
|
|
2388
2394
|
}
|
|
2389
2395
|
|
|
2390
2396
|
.DrawerPopup[data-swipe-direction='right'] {
|
|
@@ -2440,7 +2446,7 @@ button,
|
|
|
2440
2446
|
color: var(--sl-modal-description-color);
|
|
2441
2447
|
}
|
|
2442
2448
|
|
|
2443
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
2449
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
2444
2450
|
/* Field - Mojave Theme
|
|
2445
2451
|
*
|
|
2446
2452
|
* Label, control, description and error. No component tokens: spacing is the field
|
|
@@ -2501,7 +2507,7 @@ textarea.FieldControl {
|
|
|
2501
2507
|
height: auto;
|
|
2502
2508
|
}
|
|
2503
2509
|
|
|
2504
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
2510
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
2505
2511
|
/* Fieldset - Mojave Theme
|
|
2506
2512
|
*
|
|
2507
2513
|
* No component tokens: a titled group of fields, spaced by the stack gaps, with
|
|
@@ -2543,7 +2549,7 @@ textarea.FieldControl {
|
|
|
2543
2549
|
color: var(--sl-text-secondary);
|
|
2544
2550
|
}
|
|
2545
2551
|
|
|
2546
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
2552
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
2547
2553
|
/* Form - Mojave Theme
|
|
2548
2554
|
*
|
|
2549
2555
|
* No component tokens: fields stack with the large block space, and the action
|
|
@@ -2563,7 +2569,7 @@ textarea.FieldControl {
|
|
|
2563
2569
|
margin-top: var(--sl-space-block-md);
|
|
2564
2570
|
}
|
|
2565
2571
|
|
|
2566
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
2572
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
2567
2573
|
/* Input - Mojave Theme
|
|
2568
2574
|
*
|
|
2569
2575
|
* No component tokens: the look is the field concept (tokens/semantic/field.json),
|
|
@@ -2700,7 +2706,7 @@ textarea.FieldControl {
|
|
|
2700
2706
|
padding-inline: var(--sl-control-padding-inline-lg);
|
|
2701
2707
|
}
|
|
2702
2708
|
|
|
2703
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
2709
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
2704
2710
|
/* Menu - Mojave Theme
|
|
2705
2711
|
*
|
|
2706
2712
|
* No component tokens. The trigger is a Button. The popup is the popup concept, rows are item rows at the
|
|
@@ -2849,7 +2855,7 @@ textarea.FieldControl {
|
|
|
2849
2855
|
color: var(--sl-text-tertiary);
|
|
2850
2856
|
}
|
|
2851
2857
|
|
|
2852
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
2858
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
2853
2859
|
/* Menubar - Mojave Theme
|
|
2854
2860
|
*
|
|
2855
2861
|
* No component tokens. A row of quiet triggers, each opening a menu. The popup is the popup concept, rows are item rows at the
|
|
@@ -3042,7 +3048,7 @@ textarea.FieldControl {
|
|
|
3042
3048
|
color: var(--sl-text-tertiary);
|
|
3043
3049
|
}
|
|
3044
3050
|
|
|
3045
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
3051
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
3046
3052
|
/* Meter - Mojave Theme
|
|
3047
3053
|
*
|
|
3048
3054
|
* A gauge (tokens/semantic/gauge.json). The fill is the solid color of the scope around it:
|
|
@@ -3105,7 +3111,7 @@ textarea.FieldControl {
|
|
|
3105
3111
|
height: var(--sl-gauge-height-lg);
|
|
3106
3112
|
}
|
|
3107
3113
|
|
|
3108
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
3114
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
3109
3115
|
/* Navigation Menu - Mojave Theme
|
|
3110
3116
|
*
|
|
3111
3117
|
* The strip is the bar concept, the panel is the popup concept and each link is an item
|
|
@@ -3525,7 +3531,7 @@ textarea.FieldControl {
|
|
|
3525
3531
|
width: 100%;
|
|
3526
3532
|
}
|
|
3527
3533
|
|
|
3528
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
3534
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
3529
3535
|
/* Number Field - Mojave Theme
|
|
3530
3536
|
*
|
|
3531
3537
|
* No component tokens. The input is Input (Input.css) and the label, description and
|
|
@@ -3616,7 +3622,7 @@ textarea.FieldControl {
|
|
|
3616
3622
|
user-select: none;
|
|
3617
3623
|
}
|
|
3618
3624
|
|
|
3619
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
3625
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
3620
3626
|
/* OTP Field - Mojave Theme
|
|
3621
3627
|
*
|
|
3622
3628
|
* One-time code entry: a row of single-character inputs. Each slot is the same control as Input
|
|
@@ -3679,7 +3685,7 @@ textarea.FieldControl {
|
|
|
3679
3685
|
letter-spacing: var(--sl-font-body-magnify-letter-spacing);
|
|
3680
3686
|
}
|
|
3681
3687
|
|
|
3682
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
3688
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
3683
3689
|
/* Popover - Mojave Theme */
|
|
3684
3690
|
|
|
3685
3691
|
/* ============================================
|
|
@@ -3844,7 +3850,7 @@ textarea.FieldControl {
|
|
|
3844
3850
|
fill: var(--sl-popup-arrow-stroke);
|
|
3845
3851
|
}
|
|
3846
3852
|
|
|
3847
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
3853
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
3848
3854
|
/* Preview Card - Mojave Theme
|
|
3849
3855
|
*
|
|
3850
3856
|
* The popup concept (surface, arrow, motion) with a title-magnify title and condense
|
|
@@ -3961,7 +3967,7 @@ textarea.FieldControl {
|
|
|
3961
3967
|
fill: var(--sl-popup-arrow-stroke);
|
|
3962
3968
|
}
|
|
3963
3969
|
|
|
3964
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
3970
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
3965
3971
|
/* Progress - Mojave Theme
|
|
3966
3972
|
*
|
|
3967
3973
|
* A gauge (tokens/semantic/gauge.json), the same bar as Meter. The fill is the solid color of
|
|
@@ -4038,7 +4044,7 @@ textarea.FieldControl {
|
|
|
4038
4044
|
height: var(--sl-gauge-height-lg);
|
|
4039
4045
|
}
|
|
4040
4046
|
|
|
4041
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
4047
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
4042
4048
|
/* Radio - Mojave Theme
|
|
4043
4049
|
* Same box as Checkbox, always round. Sizes follow the label the same way, and the
|
|
4044
4050
|
* dot is a share of the circle (check.dot-scale).
|
|
@@ -4190,7 +4196,7 @@ textarea.FieldControl {
|
|
|
4190
4196
|
gap: var(--sl-gap-stack-sm);
|
|
4191
4197
|
}
|
|
4192
4198
|
|
|
4193
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
4199
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
4194
4200
|
/* Scroll Area - Mojave Theme
|
|
4195
4201
|
*
|
|
4196
4202
|
* The scrollbar is the content scrollbar (content.scrollbar-*): a track that stays clear until
|
|
@@ -4272,7 +4278,7 @@ textarea.FieldControl {
|
|
|
4272
4278
|
background: transparent;
|
|
4273
4279
|
}
|
|
4274
4280
|
|
|
4275
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
4281
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
4276
4282
|
/* Select - Mojave Theme
|
|
4277
4283
|
*
|
|
4278
4284
|
* The trigger is a field (the field pattern, control sizes, the base text style); the
|
|
@@ -4557,7 +4563,7 @@ textarea.FieldControl {
|
|
|
4557
4563
|
stroke-width: var(--sl-stroke-default);
|
|
4558
4564
|
}
|
|
4559
4565
|
|
|
4560
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
4566
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
4561
4567
|
/* Separator - Mojave Theme
|
|
4562
4568
|
*
|
|
4563
4569
|
* A hairline in the everyday divider color (border.default), one stroke thick, with a step of
|
|
@@ -4585,7 +4591,7 @@ textarea.FieldControl {
|
|
|
4585
4591
|
margin-inline: var(--sl-space-4);
|
|
4586
4592
|
}
|
|
4587
4593
|
|
|
4588
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
4594
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
4589
4595
|
/* Slider - Mojave Theme
|
|
4590
4596
|
*
|
|
4591
4597
|
* A slider is a gauge you can drag: the track, fill and label row are gauge.* (the same bar as
|
|
@@ -4751,7 +4757,7 @@ textarea.FieldControl {
|
|
|
4751
4757
|
transform: translate(-50%, 50%);
|
|
4752
4758
|
}
|
|
4753
4759
|
|
|
4754
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
4760
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
4755
4761
|
/* Switch - Mojave Theme
|
|
4756
4762
|
* Switch keeps its track sizes. The thumb, its travel and the ON/OFF text are
|
|
4757
4763
|
* worked out from them: the thumb fills the track's height inside the padding,
|
|
@@ -4917,7 +4923,7 @@ textarea.FieldControl {
|
|
|
4917
4923
|
color: var(--sl-text-disabled);
|
|
4918
4924
|
}
|
|
4919
4925
|
|
|
4920
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
4926
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
4921
4927
|
/* Tabs - Mojave Theme
|
|
4922
4928
|
*
|
|
4923
4929
|
* No component tokens. The divider, the selected line and color, hover and the disabled
|
|
@@ -5053,7 +5059,7 @@ textarea.FieldControl {
|
|
|
5053
5059
|
padding: var(--sl-space-6);
|
|
5054
5060
|
}
|
|
5055
5061
|
|
|
5056
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
5062
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
5057
5063
|
/* Toast - Mojave Theme
|
|
5058
5064
|
*
|
|
5059
5065
|
* A toast is a notice (tokens/semantic/notice.json) on the popup surface. A toast whose type
|
|
@@ -5289,7 +5295,7 @@ textarea.FieldControl {
|
|
|
5289
5295
|
flex-shrink: 0;
|
|
5290
5296
|
}
|
|
5291
5297
|
|
|
5292
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
5298
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
5293
5299
|
/* Toggle - Mojave Theme
|
|
5294
5300
|
* A toggle is a button that stays pressed: the same heights, padding, gap and
|
|
5295
5301
|
* trigger text style as a button of the same size. Pressed, it takes its emphasis level's
|
|
@@ -5401,7 +5407,7 @@ textarea.FieldControl {
|
|
|
5401
5407
|
height: var(--sl-icon-size-maximize);
|
|
5402
5408
|
}
|
|
5403
5409
|
|
|
5404
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
5410
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
5405
5411
|
/* Toggle Group - Mojave Theme
|
|
5406
5412
|
*
|
|
5407
5413
|
* No component tokens. The strip is the bar concept (tokens/semantic/bar.json); the
|
|
@@ -5422,7 +5428,7 @@ textarea.FieldControl {
|
|
|
5422
5428
|
border-radius: var(--sl-radius-item);
|
|
5423
5429
|
}
|
|
5424
5430
|
|
|
5425
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
5431
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
5426
5432
|
/* Toolbar - Mojave Theme
|
|
5427
5433
|
*
|
|
5428
5434
|
* The strip is the bar concept (tokens/semantic/bar.json). Buttons, toggles, selects
|
|
@@ -5484,7 +5490,7 @@ textarea.FieldControl {
|
|
|
5484
5490
|
max-width: var(--sl-toolbar-input-max-width);
|
|
5485
5491
|
}
|
|
5486
5492
|
|
|
5487
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
5493
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
5488
5494
|
/* Tooltip - Mojave Theme
|
|
5489
5495
|
*
|
|
5490
5496
|
* The inverse surface (surface.inverse, text.on-inverse-surface) with condense text, so a tooltip
|
|
@@ -5545,7 +5551,7 @@ textarea.FieldControl {
|
|
|
5545
5551
|
}
|
|
5546
5552
|
|
|
5547
5553
|
/* Custom components: not Base UI parts. Built from existing concepts and tokens. */
|
|
5548
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
5554
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
5549
5555
|
/* Badge
|
|
5550
5556
|
*
|
|
5551
5557
|
* A status or count label. Not a Base UI part, and not interactive: no hover or focus.
|
|
@@ -5650,7 +5656,7 @@ textarea.FieldControl {
|
|
|
5650
5656
|
height: var(--sl-badge-dot-base);
|
|
5651
5657
|
}
|
|
5652
5658
|
|
|
5653
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
5659
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
5654
5660
|
/*
|
|
5655
5661
|
* DatePicker: a field that opens a calendar for one date or a period.
|
|
5656
5662
|
* Not a Base UI part. The popup is Popover on a wide viewport and Drawer
|
|
@@ -6223,7 +6229,7 @@ textarea.FieldControl {
|
|
|
6223
6229
|
flex-basis: 100%;
|
|
6224
6230
|
}
|
|
6225
6231
|
|
|
6226
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
6232
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
6227
6233
|
/* Money field
|
|
6228
6234
|
*
|
|
6229
6235
|
* An amount of money, built on Number field. The value is an integer in minor units
|
|
@@ -6568,7 +6574,7 @@ textarea.FieldControl {
|
|
|
6568
6574
|
letter-spacing: var(--sl-font-body-base-letter-spacing);
|
|
6569
6575
|
}
|
|
6570
6576
|
|
|
6571
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
6577
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
6572
6578
|
/* ListDetail
|
|
6573
6579
|
*
|
|
6574
6580
|
* The detail of one item, next to its list. Not a Base UI part. It is a Splitter
|
|
@@ -6695,7 +6701,7 @@ textarea.FieldControl {
|
|
|
6695
6701
|
background: transparent;
|
|
6696
6702
|
}
|
|
6697
6703
|
|
|
6698
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
6704
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
6699
6705
|
/* Splitter
|
|
6700
6706
|
*
|
|
6701
6707
|
* Two or more panels and a handle between them. Not a Base UI part. It follows the
|
|
@@ -6903,7 +6909,7 @@ textarea.FieldControl {
|
|
|
6903
6909
|
background: var(--sl-border-default);
|
|
6904
6910
|
}
|
|
6905
6911
|
|
|
6906
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
6912
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
6907
6913
|
/* EmptyState
|
|
6908
6914
|
*
|
|
6909
6915
|
* The block a page, pane, table, list or popup shows when it has nothing to show.
|
|
@@ -7159,7 +7165,7 @@ textarea.FieldControl {
|
|
|
7159
7165
|
color: inherit;
|
|
7160
7166
|
}
|
|
7161
7167
|
|
|
7162
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
7168
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
7163
7169
|
/* Table - Mojave Theme
|
|
7164
7170
|
*
|
|
7165
7171
|
* Base UI has no table, so this styles the native <table class="Table"> elements with the
|
|
@@ -7172,6 +7178,13 @@ textarea.FieldControl {
|
|
|
7172
7178
|
* `<tr><td data-empty colSpan={n}><EmptyState size="compact" … /></td></tr>`. A cell with
|
|
7173
7179
|
* only text still uses this rule's padding. A cell whose child is an EmptyState lets the
|
|
7174
7180
|
* empty state pad itself. The empty row does not take the row hover.
|
|
7181
|
+
*
|
|
7182
|
+
* Totals: tr data-total="subtotal" draws a single rule above the row, and data-total="grand"
|
|
7183
|
+
* a rule above and a double rule under, as on a working paper (table.total-*). They work in
|
|
7184
|
+
* tbody or tfoot. A tfoot row without data-total keeps the header tray band.
|
|
7185
|
+
*
|
|
7186
|
+
* The working-paper rule (rule.width, 0 by default) replaces the table's top border with a
|
|
7187
|
+
* heavier line in rule.color, drawn on the first row's cells so it stays with a sticky header.
|
|
7175
7188
|
*/
|
|
7176
7189
|
|
|
7177
7190
|
.Table {
|
|
@@ -7190,6 +7203,15 @@ textarea.FieldControl {
|
|
|
7190
7203
|
border-radius: var(--sl-table-radius);
|
|
7191
7204
|
overflow: hidden;
|
|
7192
7205
|
font-variant-numeric: tabular-nums;
|
|
7206
|
+
/* The top border steps aside while the working-paper rule is on (any rule.width above 0). */
|
|
7207
|
+
border-top-width: max(0px, var(--sl-stroke-default) - var(--sl-rule-width) * 1000);
|
|
7208
|
+
}
|
|
7209
|
+
|
|
7210
|
+
/* The working-paper rule, on the first row: the header, or the body when there is none.
|
|
7211
|
+
At rule.width 0 this is no border at all. */
|
|
7212
|
+
.Table > thead > tr:first-child > *,
|
|
7213
|
+
.Table:not(:has(> thead)) > tbody:first-of-type > tr:first-child > * {
|
|
7214
|
+
border-top: var(--sl-rule-width) solid var(--sl-rule-color);
|
|
7193
7215
|
}
|
|
7194
7216
|
|
|
7195
7217
|
.Table caption {
|
|
@@ -7301,6 +7323,52 @@ textarea.FieldControl {
|
|
|
7301
7323
|
border-bottom: none;
|
|
7302
7324
|
}
|
|
7303
7325
|
|
|
7326
|
+
/* Subtotal and grand total rows: rules instead of a band, in the subtitle weight.
|
|
7327
|
+
Hover and selection don't apply: a total is not a record. */
|
|
7328
|
+
.Table tr[data-total] > * {
|
|
7329
|
+
font-family: var(--sl-font-subtitle-condense-font-family);
|
|
7330
|
+
font-size: var(--sl-font-subtitle-condense-font-size);
|
|
7331
|
+
font-weight: var(--sl-font-subtitle-condense-font-weight);
|
|
7332
|
+
line-height: var(--sl-font-subtitle-condense-line-height);
|
|
7333
|
+
letter-spacing: var(--sl-font-subtitle-condense-letter-spacing);
|
|
7334
|
+
background: var(--sl-table-total-background);
|
|
7335
|
+
color: var(--sl-table-color);
|
|
7336
|
+
border-top: var(--sl-table-subtotal-rule-width) solid var(--sl-table-total-rule-color);
|
|
7337
|
+
}
|
|
7338
|
+
|
|
7339
|
+
.Table tbody tr[data-total] > * {
|
|
7340
|
+
border-bottom: var(--sl-stroke-default) solid var(--sl-table-row-border-color);
|
|
7341
|
+
}
|
|
7342
|
+
|
|
7343
|
+
.Table tbody tr[data-total]:last-child:not([data-total='grand']) > * {
|
|
7344
|
+
border-bottom: none;
|
|
7345
|
+
}
|
|
7346
|
+
|
|
7347
|
+
/* The grand total: a double rule under the figures. */
|
|
7348
|
+
.Table :is(tbody, tfoot) tr[data-total='grand'] > * {
|
|
7349
|
+
border-bottom: var(--sl-table-grand-total-rule-width) double var(--sl-table-total-rule-color);
|
|
7350
|
+
}
|
|
7351
|
+
|
|
7352
|
+
/* A label or blank cell in a total row can leave the rules off, so they only run under the
|
|
7353
|
+
figures: data-rule="none" on the cell. */
|
|
7354
|
+
.Table :is(tbody, tfoot) tr[data-total] > [data-rule='none'] {
|
|
7355
|
+
border-top-color: transparent;
|
|
7356
|
+
border-bottom-color: transparent;
|
|
7357
|
+
}
|
|
7358
|
+
|
|
7359
|
+
/* In the footer the body's last row has no line under it, so those cells keep the footer's
|
|
7360
|
+
usual line on top. */
|
|
7361
|
+
.Table tfoot tr[data-total] > [data-rule='none'] {
|
|
7362
|
+
border-top: var(--sl-stroke-default) solid var(--sl-table-border-color);
|
|
7363
|
+
}
|
|
7364
|
+
|
|
7365
|
+
@media (hover: hover) {
|
|
7366
|
+
.Table tbody tr[data-total]:hover > * {
|
|
7367
|
+
background: var(--sl-table-total-background);
|
|
7368
|
+
color: var(--sl-table-color);
|
|
7369
|
+
}
|
|
7370
|
+
}
|
|
7371
|
+
|
|
7304
7372
|
/* A header that stays put while the body scrolls (the table's wrapper scrolls) */
|
|
7305
7373
|
.Table[data-sticky-header] thead th {
|
|
7306
7374
|
position: sticky;
|
|
@@ -7331,23 +7399,28 @@ textarea.FieldControl {
|
|
|
7331
7399
|
color: inherit;
|
|
7332
7400
|
}
|
|
7333
7401
|
|
|
7334
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
7402
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
7335
7403
|
/* Collection
|
|
7336
7404
|
*
|
|
7337
7405
|
* DataTable, DataList, the toolbar and the pagination, in one place so the two views
|
|
7338
7406
|
* share the table concept. Sections: toolbar, table additions, groups, list, pagination, sizes.
|
|
7339
7407
|
* Each section is its own file so the design system can name the part. This file brings them in.
|
|
7340
7408
|
*
|
|
7341
|
-
* The selection bar replaces the trailing controls (filters, sort,
|
|
7409
|
+
* The selection bar replaces the trailing controls (filters, sort, actions) and leaves
|
|
7342
7410
|
* the tabs and the search where they are, so selecting rows does not grow the toolbar.
|
|
7343
7411
|
*/
|
|
7344
7412
|
|
|
7345
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
7413
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
7346
7414
|
/* Collection toolbar
|
|
7347
7415
|
*
|
|
7348
7416
|
* The wrap follows the toolbar's own width, not the window: a table in a narrow pane wraps
|
|
7349
|
-
* even when the page is wide. Search
|
|
7417
|
+
* even when the page is wide. Search grows to fill the row beside the trailing controls, and
|
|
7418
|
+
* wraps to its own line before it shrinks under collection.search-min-width. Under the narrow
|
|
7419
|
+
* width it takes the full row and filters wrap under it.
|
|
7350
7420
|
* A container query cannot read the width token, so the component also sets data-narrow.
|
|
7421
|
+
*
|
|
7422
|
+
* The search icon and the clear button sit inside the field. The browser's own search cancel
|
|
7423
|
+
* is hidden by the reset, so the clear button is the only one, in every browser.
|
|
7351
7424
|
*/
|
|
7352
7425
|
|
|
7353
7426
|
.CollectionToolbar {
|
|
@@ -7359,7 +7432,6 @@ textarea.FieldControl {
|
|
|
7359
7432
|
}
|
|
7360
7433
|
|
|
7361
7434
|
.CollectionToolbarMain,
|
|
7362
|
-
.CollectionToolbarTrailing,
|
|
7363
7435
|
.CollectionSelectionBar,
|
|
7364
7436
|
.CollectionSort {
|
|
7365
7437
|
display: flex;
|
|
@@ -7372,11 +7444,90 @@ textarea.FieldControl {
|
|
|
7372
7444
|
display: flex;
|
|
7373
7445
|
align-items: center;
|
|
7374
7446
|
gap: var(--sl-collection-toolbar-gap);
|
|
7447
|
+
flex: 1 1 0;
|
|
7448
|
+
min-width: min(100%, var(--sl-collection-search-min-width));
|
|
7449
|
+
}
|
|
7450
|
+
|
|
7451
|
+
.CollectionSearchField {
|
|
7452
|
+
position: relative;
|
|
7453
|
+
flex: 1 1 auto;
|
|
7375
7454
|
min-width: 0;
|
|
7376
7455
|
}
|
|
7377
7456
|
|
|
7378
|
-
.
|
|
7457
|
+
/* Scoped to the field so it wins over Input.css, which loads later. */
|
|
7458
|
+
.CollectionSearchField .Input {
|
|
7379
7459
|
min-width: 0;
|
|
7460
|
+
padding-inline-start: calc(var(--sl-control-padding-inline) + var(--sl-icon-size-magnify) + var(--sl-space-2));
|
|
7461
|
+
}
|
|
7462
|
+
|
|
7463
|
+
.CollectionSearchField[data-filled] .Input {
|
|
7464
|
+
padding-inline-end: calc(var(--sl-control-padding-inline) + var(--sl-icon-button-size));
|
|
7465
|
+
}
|
|
7466
|
+
|
|
7467
|
+
.CollectionSearchIcon {
|
|
7468
|
+
position: absolute;
|
|
7469
|
+
inset-inline-start: var(--sl-control-padding-inline);
|
|
7470
|
+
inset-block-start: 50%;
|
|
7471
|
+
transform: translateY(-50%);
|
|
7472
|
+
width: var(--sl-icon-size-magnify);
|
|
7473
|
+
height: var(--sl-icon-size-magnify);
|
|
7474
|
+
font-size: var(--sl-icon-size-magnify);
|
|
7475
|
+
line-height: 1;
|
|
7476
|
+
color: var(--sl-field-affix-color);
|
|
7477
|
+
pointer-events: none;
|
|
7478
|
+
}
|
|
7479
|
+
|
|
7480
|
+
.CollectionSearchClear {
|
|
7481
|
+
display: flex;
|
|
7482
|
+
align-items: center;
|
|
7483
|
+
justify-content: center;
|
|
7484
|
+
flex-shrink: 0;
|
|
7485
|
+
width: var(--sl-icon-button-size);
|
|
7486
|
+
height: var(--sl-icon-button-size);
|
|
7487
|
+
padding: 0;
|
|
7488
|
+
border: none;
|
|
7489
|
+
border-radius: var(--sl-icon-button-radius);
|
|
7490
|
+
background: transparent;
|
|
7491
|
+
color: var(--sl-icon-button-color);
|
|
7492
|
+
cursor: pointer;
|
|
7493
|
+
outline: none;
|
|
7494
|
+
transition: var(--sl-icon-button-transition);
|
|
7495
|
+
position: absolute;
|
|
7496
|
+
inset-inline-end: var(--sl-space-3);
|
|
7497
|
+
inset-block-start: 50%;
|
|
7498
|
+
transform: translateY(-50%);
|
|
7499
|
+
font-size: var(--sl-icon-size-magnify);
|
|
7500
|
+
line-height: 1;
|
|
7501
|
+
}
|
|
7502
|
+
|
|
7503
|
+
.CollectionSearchClear:hover {
|
|
7504
|
+
background: var(--sl-icon-button-background-hover);
|
|
7505
|
+
color: var(--sl-icon-button-color-hover);
|
|
7506
|
+
}
|
|
7507
|
+
|
|
7508
|
+
.CollectionSearchClear:focus-visible {
|
|
7509
|
+
outline: var(--sl-focus-outline);
|
|
7510
|
+
outline-offset: var(--sl-focus-outline-offset);
|
|
7511
|
+
box-shadow: 0 0 0 var(--sl-focus-halo-spread) var(--sl-focus-halo-color);
|
|
7512
|
+
}
|
|
7513
|
+
|
|
7514
|
+
/* The trailing controls join the main row one by one, so each keeps its own width and
|
|
7515
|
+
wraps under the search on its own rather than squeezing. Search takes what is left. */
|
|
7516
|
+
.CollectionToolbarTrailing {
|
|
7517
|
+
display: contents;
|
|
7518
|
+
}
|
|
7519
|
+
|
|
7520
|
+
.CollectionSelectionBar {
|
|
7521
|
+
flex: 0 0 auto;
|
|
7522
|
+
max-width: 100%;
|
|
7523
|
+
}
|
|
7524
|
+
|
|
7525
|
+
/* Select.css and Combobox.css fill their container. In the row they size to their text. */
|
|
7526
|
+
.CollectionToolbarMain .SelectTrigger,
|
|
7527
|
+
.CollectionToolbarMain .ComboboxInputWrapper {
|
|
7528
|
+
flex: none;
|
|
7529
|
+
width: auto;
|
|
7530
|
+
max-width: 100%;
|
|
7380
7531
|
}
|
|
7381
7532
|
|
|
7382
7533
|
.CollectionToolbarActions {
|
|
@@ -7400,7 +7551,7 @@ textarea.FieldControl {
|
|
|
7400
7551
|
letter-spacing: var(--sl-font-body-condense-letter-spacing);
|
|
7401
7552
|
}
|
|
7402
7553
|
|
|
7403
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
7554
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
7404
7555
|
/* DataTable additions on top of .Table.
|
|
7405
7556
|
*
|
|
7406
7557
|
* Sort buttons fill the header cell and inherit its hover, so old aria-sort markup keeps
|
|
@@ -7521,12 +7672,15 @@ textarea.FieldControl {
|
|
|
7521
7672
|
color: var(--sl-table-subtle-color);
|
|
7522
7673
|
}
|
|
7523
7674
|
|
|
7524
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
7675
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
7525
7676
|
/* DataList
|
|
7526
7677
|
*
|
|
7527
7678
|
* The same rows as the table, in one container with the table's borders, hover, selected
|
|
7528
7679
|
* and current states. Not a stack of floating cards: the two views should read as one family.
|
|
7529
7680
|
* variant=cards adds the surface radius and a gap when a queue should read as separate items.
|
|
7681
|
+
*
|
|
7682
|
+
* The working-paper rule (rule.width, 0 by default) replaces the top border with a heavier
|
|
7683
|
+
* line in rule.color: on the first row, or on each card's top edge.
|
|
7530
7684
|
*/
|
|
7531
7685
|
|
|
7532
7686
|
.DataList {
|
|
@@ -7545,6 +7699,13 @@ textarea.FieldControl {
|
|
|
7545
7699
|
background: var(--sl-table-background);
|
|
7546
7700
|
border: var(--sl-stroke-default) solid var(--sl-table-border-color);
|
|
7547
7701
|
border-radius: var(--sl-table-radius);
|
|
7702
|
+
/* The top border steps aside while the working-paper rule is on (any rule.width above 0). */
|
|
7703
|
+
border-top-width: max(0px, var(--sl-stroke-default) - var(--sl-rule-width) * 1000);
|
|
7704
|
+
}
|
|
7705
|
+
|
|
7706
|
+
/* The working-paper rule on the first row. At rule.width 0 this is no border at all. */
|
|
7707
|
+
.DataList ul > li:first-child {
|
|
7708
|
+
border-top: var(--sl-rule-width) solid var(--sl-rule-color);
|
|
7548
7709
|
}
|
|
7549
7710
|
|
|
7550
7711
|
.DataList li {
|
|
@@ -7638,6 +7799,14 @@ textarea.FieldControl {
|
|
|
7638
7799
|
background: var(--sl-table-background);
|
|
7639
7800
|
border: var(--sl-stroke-default) solid var(--sl-table-border-color);
|
|
7640
7801
|
border-radius: var(--sl-table-radius);
|
|
7802
|
+
border-top-width: max(0px, var(--sl-stroke-default) - var(--sl-rule-width) * 1000);
|
|
7803
|
+
box-shadow: inset 0 var(--sl-rule-width) 0 0 var(--sl-rule-color);
|
|
7804
|
+
}
|
|
7805
|
+
|
|
7806
|
+
.DataList[data-variant='cards'] li[aria-current='true'] {
|
|
7807
|
+
box-shadow:
|
|
7808
|
+
inset var(--sl-stroke-strong) 0 0 0 var(--sl-border-accent),
|
|
7809
|
+
inset 0 var(--sl-rule-width) 0 0 var(--sl-rule-color);
|
|
7641
7810
|
}
|
|
7642
7811
|
|
|
7643
7812
|
.DataList[data-loading] ul {
|
|
@@ -7645,7 +7814,7 @@ textarea.FieldControl {
|
|
|
7645
7814
|
transition: opacity var(--sl-duration-fast) var(--sl-easing-default);
|
|
7646
7815
|
}
|
|
7647
7816
|
|
|
7648
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
7817
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
7649
7818
|
/* Pagination
|
|
7650
7819
|
*
|
|
7651
7820
|
* Not tied to a collection. Anything with a page, a page count and a total can use it.
|
|
@@ -7670,7 +7839,7 @@ textarea.FieldControl {
|
|
|
7670
7839
|
margin: 0;
|
|
7671
7840
|
}
|
|
7672
7841
|
|
|
7673
|
-
/* @scattered-light/loomiere-base-ui 0.
|
|
7842
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
7674
7843
|
/* EditableList
|
|
7675
7844
|
*
|
|
7676
7845
|
* One table at every width, so a field is not submitted twice. Under the stack width each
|
|
@@ -7768,3 +7937,231 @@ textarea.FieldControl {
|
|
|
7768
7937
|
letter-spacing: var(--sl-font-subtitle-condense-letter-spacing);
|
|
7769
7938
|
}
|
|
7770
7939
|
}
|
|
7940
|
+
|
|
7941
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
7942
|
+
/* Sheet
|
|
7943
|
+
*
|
|
7944
|
+
* A working-paper surface: the raised surface with a heavier rule across its top
|
|
7945
|
+
* (sheet.rule-width in sheet.rule-color) instead of its top border, and an optional tab
|
|
7946
|
+
* label that sits on the rule like the tab of a ledger page. The tab is caps-condense on
|
|
7947
|
+
* the inverse surface. An action (an Edit link, a count) sits at the end of the header row.
|
|
7948
|
+
* Tokens: sheet.* (tokens/component/sheet.json).
|
|
7949
|
+
*
|
|
7950
|
+
* Content runs edge to edge, so a Table, DataList or leader DescriptionList inside lines up
|
|
7951
|
+
* with the sheet's sides; data-inset on SheetBody pads it by sheet.padding instead. A Table
|
|
7952
|
+
* inside drops its own outer border and corners, since the sheet is its frame.
|
|
7953
|
+
*/
|
|
7954
|
+
|
|
7955
|
+
.Sheet {
|
|
7956
|
+
box-sizing: border-box;
|
|
7957
|
+
display: flex;
|
|
7958
|
+
flex-direction: column;
|
|
7959
|
+
min-width: 0;
|
|
7960
|
+
}
|
|
7961
|
+
|
|
7962
|
+
.SheetHeader {
|
|
7963
|
+
display: flex;
|
|
7964
|
+
align-items: flex-end;
|
|
7965
|
+
gap: var(--sl-sheet-header-gap);
|
|
7966
|
+
min-height: var(--sl-sheet-tab-height);
|
|
7967
|
+
}
|
|
7968
|
+
|
|
7969
|
+
.SheetTab {
|
|
7970
|
+
font-family: var(--sl-font-caps-condense-font-family);
|
|
7971
|
+
font-size: var(--sl-font-caps-condense-font-size);
|
|
7972
|
+
font-weight: var(--sl-font-caps-condense-font-weight);
|
|
7973
|
+
line-height: var(--sl-font-caps-condense-line-height);
|
|
7974
|
+
letter-spacing: var(--sl-font-caps-condense-letter-spacing);
|
|
7975
|
+
text-transform: var(--sl-font-caps-condense-text-transform);
|
|
7976
|
+
display: inline-flex;
|
|
7977
|
+
align-items: center;
|
|
7978
|
+
height: var(--sl-sheet-tab-height);
|
|
7979
|
+
padding-inline: var(--sl-sheet-tab-padding-inline);
|
|
7980
|
+
background: var(--sl-sheet-tab-background);
|
|
7981
|
+
color: var(--sl-sheet-tab-color);
|
|
7982
|
+
border-radius: var(--sl-sheet-tab-radius) var(--sl-sheet-tab-radius) 0 0;
|
|
7983
|
+
white-space: nowrap;
|
|
7984
|
+
}
|
|
7985
|
+
|
|
7986
|
+
.SheetAction {
|
|
7987
|
+
font-family: var(--sl-font-subtitle-condense-font-family);
|
|
7988
|
+
font-size: var(--sl-font-subtitle-condense-font-size);
|
|
7989
|
+
font-weight: var(--sl-font-subtitle-condense-font-weight);
|
|
7990
|
+
line-height: var(--sl-font-subtitle-condense-line-height);
|
|
7991
|
+
letter-spacing: var(--sl-font-subtitle-condense-letter-spacing);
|
|
7992
|
+
margin-inline-start: auto;
|
|
7993
|
+
padding-block-end: var(--sl-space-1);
|
|
7994
|
+
}
|
|
7995
|
+
|
|
7996
|
+
.SheetBody {
|
|
7997
|
+
box-sizing: border-box;
|
|
7998
|
+
flex: 1;
|
|
7999
|
+
min-width: 0;
|
|
8000
|
+
background: var(--sl-sheet-background);
|
|
8001
|
+
border: var(--sl-sheet-border-width) solid var(--sl-sheet-border-color);
|
|
8002
|
+
border-top: var(--sl-sheet-rule-width) solid var(--sl-sheet-rule-color);
|
|
8003
|
+
border-radius: var(--sl-sheet-radius);
|
|
8004
|
+
/* Rows inside keep to the rounded corners. clip, not hidden, so a sticky header still sticks. */
|
|
8005
|
+
overflow: clip;
|
|
8006
|
+
}
|
|
8007
|
+
|
|
8008
|
+
/* Under a tab the top corners stay square, so the tab sits flush on the rule. */
|
|
8009
|
+
.Sheet[data-tab] > .SheetBody {
|
|
8010
|
+
border-start-start-radius: 0;
|
|
8011
|
+
border-start-end-radius: 0;
|
|
8012
|
+
}
|
|
8013
|
+
|
|
8014
|
+
.SheetBody[data-inset] {
|
|
8015
|
+
padding: var(--sl-sheet-padding);
|
|
8016
|
+
}
|
|
8017
|
+
|
|
8018
|
+
/* The sheet is the frame: a table or list inside drops its own outer edge. */
|
|
8019
|
+
.SheetBody > .Table,
|
|
8020
|
+
.SheetBody > .CollectionView .Table,
|
|
8021
|
+
.SheetBody > .DataList ul {
|
|
8022
|
+
border: 0;
|
|
8023
|
+
border-radius: 0;
|
|
8024
|
+
}
|
|
8025
|
+
|
|
8026
|
+
.SheetBody > .Table > thead > tr:first-child > *,
|
|
8027
|
+
.SheetBody > .Table:not(:has(> thead)) > tbody:first-of-type > tr:first-child > *,
|
|
8028
|
+
.SheetBody > .DataList ul > li:first-child {
|
|
8029
|
+
border-top: 0;
|
|
8030
|
+
}
|
|
8031
|
+
|
|
8032
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
8033
|
+
/* StatFigure
|
|
8034
|
+
*
|
|
8035
|
+
* One large figure with a caps label above and a caption under it. The label is
|
|
8036
|
+
* caps-condense, the figure uses the figures text family (mono, tabular numbers) at
|
|
8037
|
+
* stat-figure.figure-font-size, the caption is body-condense. data-underline="double"
|
|
8038
|
+
* draws a double rule under the figure only, the accountant's mark for a final total;
|
|
8039
|
+
* data-tone="accent" colors the figure; data-size="sm" makes it smaller for a row of figures.
|
|
8040
|
+
* Tokens: stat-figure.* (tokens/component/stat-figure.json).
|
|
8041
|
+
*/
|
|
8042
|
+
|
|
8043
|
+
.StatFigure {
|
|
8044
|
+
display: inline-flex;
|
|
8045
|
+
flex-direction: column;
|
|
8046
|
+
align-items: flex-start;
|
|
8047
|
+
gap: var(--sl-stat-figure-gap);
|
|
8048
|
+
min-width: 0;
|
|
8049
|
+
}
|
|
8050
|
+
|
|
8051
|
+
.StatFigureLabel {
|
|
8052
|
+
font-family: var(--sl-font-caps-condense-font-family);
|
|
8053
|
+
font-size: var(--sl-font-caps-condense-font-size);
|
|
8054
|
+
font-weight: var(--sl-font-caps-condense-font-weight);
|
|
8055
|
+
line-height: var(--sl-font-caps-condense-line-height);
|
|
8056
|
+
letter-spacing: var(--sl-font-caps-condense-letter-spacing);
|
|
8057
|
+
text-transform: var(--sl-font-caps-condense-text-transform);
|
|
8058
|
+
color: var(--sl-stat-figure-label-color);
|
|
8059
|
+
}
|
|
8060
|
+
|
|
8061
|
+
.StatFigureValue {
|
|
8062
|
+
font-family: var(--sl-font-figures-base-font-family);
|
|
8063
|
+
font-variant-numeric: var(--sl-font-figures-base-font-variant-numeric);
|
|
8064
|
+
font-size: var(--sl-stat-figure-figure-font-size);
|
|
8065
|
+
font-weight: var(--sl-stat-figure-figure-font-weight);
|
|
8066
|
+
line-height: var(--sl-stat-figure-figure-line-height);
|
|
8067
|
+
color: var(--sl-stat-figure-figure-color);
|
|
8068
|
+
white-space: nowrap;
|
|
8069
|
+
}
|
|
8070
|
+
|
|
8071
|
+
.StatFigure[data-size='sm'] .StatFigureValue {
|
|
8072
|
+
font-size: var(--sl-stat-figure-figure-font-size-sm);
|
|
8073
|
+
line-height: var(--sl-stat-figure-figure-line-height-sm);
|
|
8074
|
+
}
|
|
8075
|
+
|
|
8076
|
+
.StatFigure[data-tone='accent'] .StatFigureValue {
|
|
8077
|
+
color: var(--sl-stat-figure-figure-color-accent);
|
|
8078
|
+
}
|
|
8079
|
+
|
|
8080
|
+
.StatFigure[data-underline='double'] .StatFigureValue {
|
|
8081
|
+
border-bottom: var(--sl-stat-figure-underline-width) double var(--sl-stat-figure-underline-color);
|
|
8082
|
+
}
|
|
8083
|
+
|
|
8084
|
+
.StatFigureCaption {
|
|
8085
|
+
font-family: var(--sl-font-body-condense-font-family);
|
|
8086
|
+
font-size: var(--sl-font-body-condense-font-size);
|
|
8087
|
+
font-weight: var(--sl-font-body-condense-font-weight);
|
|
8088
|
+
line-height: var(--sl-font-body-condense-line-height);
|
|
8089
|
+
letter-spacing: var(--sl-font-body-condense-letter-spacing);
|
|
8090
|
+
color: var(--sl-stat-figure-caption-color);
|
|
8091
|
+
}
|
|
8092
|
+
|
|
8093
|
+
/* @scattered-light/loomiere-base-ui 0.8.0 · styles for @base-ui/react 1.9.0 */
|
|
8094
|
+
/* DescriptionList
|
|
8095
|
+
*
|
|
8096
|
+
* Label and value pairs in a native dl, one DescriptionItem (a div holding a dt and a dd)
|
|
8097
|
+
* per pair, with a hairline between pairs. The default variant sets labels in a column
|
|
8098
|
+
* beside their values. data-variant="leader" runs a dotted leader from each label to its
|
|
8099
|
+
* value, which sits at the end of the row, as on a working paper. Labels are body text
|
|
8100
|
+
* in the secondary color, values primary text with tabular numbers.
|
|
8101
|
+
* Tokens: description-list.* (tokens/component/description-list.json).
|
|
8102
|
+
*/
|
|
8103
|
+
|
|
8104
|
+
.DescriptionList {
|
|
8105
|
+
font-family: var(--sl-font-body-base-font-family);
|
|
8106
|
+
font-size: var(--sl-font-body-base-font-size);
|
|
8107
|
+
font-weight: var(--sl-font-body-base-font-weight);
|
|
8108
|
+
line-height: var(--sl-font-body-base-line-height);
|
|
8109
|
+
letter-spacing: var(--sl-font-body-base-letter-spacing);
|
|
8110
|
+
margin: 0;
|
|
8111
|
+
padding: 0;
|
|
8112
|
+
font-variant-numeric: tabular-nums;
|
|
8113
|
+
}
|
|
8114
|
+
|
|
8115
|
+
.DescriptionItem {
|
|
8116
|
+
display: grid;
|
|
8117
|
+
grid-template-columns: var(--sl-description-list-label-width) 2fr;
|
|
8118
|
+
align-items: baseline;
|
|
8119
|
+
column-gap: var(--sl-description-list-column-gap);
|
|
8120
|
+
padding-block: var(--sl-description-list-row-padding-block);
|
|
8121
|
+
padding-inline: var(--sl-description-list-row-padding-inline);
|
|
8122
|
+
border-bottom: var(--sl-stroke-default) solid var(--sl-description-list-row-border-color);
|
|
8123
|
+
}
|
|
8124
|
+
|
|
8125
|
+
.DescriptionItem:last-child {
|
|
8126
|
+
border-bottom: none;
|
|
8127
|
+
}
|
|
8128
|
+
|
|
8129
|
+
.DescriptionTerm {
|
|
8130
|
+
margin: 0;
|
|
8131
|
+
color: var(--sl-description-list-label-color);
|
|
8132
|
+
}
|
|
8133
|
+
|
|
8134
|
+
.DescriptionDetails {
|
|
8135
|
+
margin: 0;
|
|
8136
|
+
min-width: 0;
|
|
8137
|
+
color: var(--sl-description-list-value-color);
|
|
8138
|
+
overflow-wrap: anywhere;
|
|
8139
|
+
}
|
|
8140
|
+
|
|
8141
|
+
/* Leader: the label grows to fill the row, and its ::after is the dotted line that leads
|
|
8142
|
+
to the value. The line sits on the text's baseline. */
|
|
8143
|
+
.DescriptionList[data-variant='leader'] .DescriptionItem {
|
|
8144
|
+
display: flex;
|
|
8145
|
+
column-gap: var(--sl-description-list-leader-gap);
|
|
8146
|
+
}
|
|
8147
|
+
|
|
8148
|
+
.DescriptionList[data-variant='leader'] .DescriptionTerm {
|
|
8149
|
+
display: flex;
|
|
8150
|
+
flex: 1 1 auto;
|
|
8151
|
+
align-items: baseline;
|
|
8152
|
+
gap: var(--sl-description-list-leader-gap);
|
|
8153
|
+
min-width: 0;
|
|
8154
|
+
}
|
|
8155
|
+
|
|
8156
|
+
.DescriptionList[data-variant='leader'] .DescriptionTerm::after {
|
|
8157
|
+
content: '';
|
|
8158
|
+
flex: 1 1 var(--sl-space-6);
|
|
8159
|
+
min-width: var(--sl-space-6);
|
|
8160
|
+
border-bottom: var(--sl-description-list-leader-width) dotted var(--sl-description-list-leader-color);
|
|
8161
|
+
}
|
|
8162
|
+
|
|
8163
|
+
.DescriptionList[data-variant='leader'] .DescriptionDetails {
|
|
8164
|
+
flex: 0 1 auto;
|
|
8165
|
+
max-width: 60%;
|
|
8166
|
+
text-align: end;
|
|
8167
|
+
}
|