@scalewing/react 1.28.0 → 1.30.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/CHANGELOG.md +60 -0
- package/README.md +48 -4
- package/dist/components/ActionMenu.d.ts +14 -0
- package/dist/components/ActionMenu.js +4 -0
- package/dist/components/ButtonGroup.d.ts +9 -1
- package/dist/components/ButtonGroup.js +2 -2
- package/dist/components/Checkbox.js +5 -4
- package/dist/components/FilterChips.d.ts +17 -1
- package/dist/components/FilterChips.js +11 -6
- package/dist/components/GlyphTile.d.ts +21 -0
- package/dist/components/GlyphTile.js +17 -0
- package/dist/components/MultiSelect.d.ts +10 -0
- package/dist/components/MultiSelect.js +62 -0
- package/dist/components/ScrollRegion.d.ts +6 -2
- package/dist/components/ScrollRegion.js +9 -3
- package/dist/components/SectionNav.d.ts +25 -2
- package/dist/components/SectionNav.js +13 -4
- package/dist/components/SegmentedControl.d.ts +8 -0
- package/dist/components/SegmentedControl.js +4 -3
- package/dist/components/Table.d.ts +49 -5
- package/dist/components/Table.js +11 -4
- package/dist/components/action-menu/ActionMenuList.js +7 -7
- package/dist/components/checkbox/CheckboxControl.d.ts +9 -0
- package/dist/components/checkbox/CheckboxControl.js +9 -0
- package/dist/components/multi-select/MultiSelectPanel.d.ts +25 -0
- package/dist/components/multi-select/MultiSelectPanel.js +41 -0
- package/dist/components/multi-select/types.d.ts +35 -0
- package/dist/components/multi-select/types.js +1 -0
- package/dist/components/multi-select/validate.d.ts +3 -0
- package/dist/components/multi-select/validate.js +25 -0
- package/dist/components/table/TableCell.d.ts +8 -0
- package/dist/components/table/TableCell.js +4 -2
- package/dist/components/table/TableRow.d.ts +39 -0
- package/dist/components/table/TableRow.js +8 -0
- package/dist/components/use-scroll-overflow.d.ts +8 -3
- package/dist/components/use-scroll-overflow.js +15 -4
- package/dist/css/css-action-menu.js +41 -0
- package/dist/css/css-button-group-attached.d.ts +2 -0
- package/dist/css/css-button-group-attached.js +70 -0
- package/dist/css/css-button.js +5 -1
- package/dist/css/css-components.js +8 -0
- package/dist/css/css-filter-chips.js +26 -0
- package/dist/css/css-glyph-tile.d.ts +5 -0
- package/dist/css/css-glyph-tile.js +57 -0
- package/dist/css/css-multi-select.d.ts +2 -0
- package/dist/css/css-multi-select.js +156 -0
- package/dist/css/css-section-nav-filled.d.ts +6 -0
- package/dist/css/css-section-nav-filled.js +80 -0
- package/dist/css/css-section-nav.js +4 -0
- package/dist/css/css-segmented.js +58 -0
- package/dist/css/css-table-footer.d.ts +2 -0
- package/dist/css/css-table-footer.js +57 -0
- package/dist/css/css-table-ledger.d.ts +10 -0
- package/dist/css/css-table-ledger.js +122 -0
- package/dist/css/css-table.js +8 -0
- package/dist/css/css-variables.js +11 -1
- package/dist/css/stacking.d.ts +9 -3
- package/dist/css/stacking.js +29 -9
- package/dist/css/stylesheet.js +4 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.js +4 -2
- package/dist/styles.css +501 -7
- package/package.json +2 -2
package/dist/styles.css
CHANGED
|
@@ -19,6 +19,14 @@
|
|
|
19
19
|
--sw-color-warning: #B54708;
|
|
20
20
|
--sw-color-border: #D2D2D7;
|
|
21
21
|
--sw-button-secondary-border: #D2D2D7;
|
|
22
|
+
--sw-categorical-green: #2E8F47;
|
|
23
|
+
--sw-categorical-blue: #0A7AFF;
|
|
24
|
+
--sw-categorical-orange: #D57F00;
|
|
25
|
+
--sw-categorical-purple: #8E5CD9;
|
|
26
|
+
--sw-categorical-teal: #1A96AD;
|
|
27
|
+
--sw-categorical-rose: #C2415D;
|
|
28
|
+
--sw-categorical-neutral: #8E8E93;
|
|
29
|
+
--sw-categorical-on: #FFFFFF;
|
|
22
30
|
--sw-space-0: 0px;
|
|
23
31
|
--sw-space-1: 4px;
|
|
24
32
|
--sw-space-2: 8px;
|
|
@@ -84,6 +92,14 @@
|
|
|
84
92
|
--sw-color-warning: #FDB022;
|
|
85
93
|
--sw-color-border: #3A3A3C;
|
|
86
94
|
--sw-button-secondary-border: #3A3A3C;
|
|
95
|
+
--sw-categorical-green: #2E8F47;
|
|
96
|
+
--sw-categorical-blue: #0A7AFF;
|
|
97
|
+
--sw-categorical-orange: #D57F00;
|
|
98
|
+
--sw-categorical-purple: #8E5CD9;
|
|
99
|
+
--sw-categorical-teal: #1A96AD;
|
|
100
|
+
--sw-categorical-rose: #C2415D;
|
|
101
|
+
--sw-categorical-neutral: #8E8E93;
|
|
102
|
+
--sw-categorical-on: #FFFFFF;
|
|
87
103
|
--sw-space-0: 0px;
|
|
88
104
|
--sw-space-1: 4px;
|
|
89
105
|
--sw-space-2: 8px;
|
|
@@ -812,10 +828,10 @@ body {
|
|
|
812
828
|
}
|
|
813
829
|
|
|
814
830
|
/* Backdrop blur makes a glass surface its own stacking context, so it lifts while it holds an open popup (see stacking.ts). */
|
|
815
|
-
.sw-card-glass:has(.sw-select-list, .sw-action-menu-list, .sw-tooltip:not([hidden]), .sw-date-field-calendar),
|
|
816
|
-
.sw-accordion:has(.sw-select-list, .sw-action-menu-list, .sw-tooltip:not([hidden]), .sw-date-field-calendar) {
|
|
831
|
+
.sw-card-glass:has(.sw-select-list, .sw-action-menu-list, .sw-multi-select-panel, .sw-tooltip:not([hidden]), .sw-date-field-calendar),
|
|
832
|
+
.sw-accordion:has(.sw-select-list, .sw-action-menu-list, .sw-multi-select-panel, .sw-tooltip:not([hidden]), .sw-date-field-calendar) {
|
|
817
833
|
position: relative;
|
|
818
|
-
z-index:
|
|
834
|
+
z-index: 4;
|
|
819
835
|
}
|
|
820
836
|
|
|
821
837
|
.sw-card-outlined {
|
|
@@ -915,6 +931,53 @@ body {
|
|
|
915
931
|
.sw-button-group > * { width: 100%; }
|
|
916
932
|
}
|
|
917
933
|
|
|
934
|
+
.sw-button-group.sw-button-group-attached {
|
|
935
|
+
align-items: stretch;
|
|
936
|
+
display: inline-flex;
|
|
937
|
+
flex-wrap: nowrap;
|
|
938
|
+
gap: 0;
|
|
939
|
+
isolation: isolate;
|
|
940
|
+
max-width: 100%;
|
|
941
|
+
width: fit-content;
|
|
942
|
+
}
|
|
943
|
+
|
|
944
|
+
.sw-button-group.sw-button-group-attached > .sw-button {
|
|
945
|
+
border-radius: 0;
|
|
946
|
+
}
|
|
947
|
+
|
|
948
|
+
.sw-button-group.sw-button-group-attached > .sw-button + .sw-button {
|
|
949
|
+
margin-inline-start: -1px;
|
|
950
|
+
}
|
|
951
|
+
|
|
952
|
+
.sw-button-group.sw-button-group-attached > .sw-button:first-child {
|
|
953
|
+
border-end-start-radius: var(--sw-radius-sm);
|
|
954
|
+
border-start-start-radius: var(--sw-radius-sm);
|
|
955
|
+
}
|
|
956
|
+
|
|
957
|
+
.sw-button-group.sw-button-group-attached > .sw-button:last-child {
|
|
958
|
+
border-end-end-radius: var(--sw-radius-sm);
|
|
959
|
+
border-start-end-radius: var(--sw-radius-sm);
|
|
960
|
+
}
|
|
961
|
+
|
|
962
|
+
.sw-button-group.sw-button-group-attached > .sw-button + .sw-button:not(.sw-button-secondary) {
|
|
963
|
+
border-inline-start-color: color-mix(in srgb, currentColor 30%, transparent);
|
|
964
|
+
}
|
|
965
|
+
|
|
966
|
+
.sw-button-group.sw-button-group-attached > .sw-button[aria-pressed='true'] {
|
|
967
|
+
position: relative;
|
|
968
|
+
z-index: 1;
|
|
969
|
+
}
|
|
970
|
+
|
|
971
|
+
.sw-button-group.sw-button-group-attached > .sw-button:focus-visible {
|
|
972
|
+
position: relative;
|
|
973
|
+
z-index: 2;
|
|
974
|
+
}
|
|
975
|
+
|
|
976
|
+
@media not all and (min-width: 48rem) {
|
|
977
|
+
.sw-button-group.sw-button-group-attached { align-items: stretch; flex-direction: row; }
|
|
978
|
+
.sw-button-group.sw-button-group-attached > * { width: auto; }
|
|
979
|
+
}
|
|
980
|
+
|
|
918
981
|
.sw-checkbox {
|
|
919
982
|
display: flex;
|
|
920
983
|
flex-direction: column;
|
|
@@ -1348,6 +1411,45 @@ body {
|
|
|
1348
1411
|
color: var(--sw-color-onAccent);
|
|
1349
1412
|
}
|
|
1350
1413
|
|
|
1414
|
+
.sw-segmented.sw-segmented-with-icons:not(.sw-segmented-filled) {
|
|
1415
|
+
background: var(--sw-color-subtle);
|
|
1416
|
+
border-color: transparent;
|
|
1417
|
+
}
|
|
1418
|
+
|
|
1419
|
+
.sw-segmented-with-icons:not(.sw-segmented-filled) .sw-segmented-item-selected {
|
|
1420
|
+
box-shadow: var(--sw-elevation-sm);
|
|
1421
|
+
}
|
|
1422
|
+
|
|
1423
|
+
.sw-segmented-with-icons .sw-segmented-item {
|
|
1424
|
+
align-items: center;
|
|
1425
|
+
display: inline-flex;
|
|
1426
|
+
gap: var(--sw-space-2);
|
|
1427
|
+
justify-content: center;
|
|
1428
|
+
}
|
|
1429
|
+
|
|
1430
|
+
.sw-segmented-with-icons:not(.sw-segmented-filled) .sw-segmented-item {
|
|
1431
|
+
font-size: 15px;
|
|
1432
|
+
letter-spacing: -0.2px;
|
|
1433
|
+
line-height: 20px;
|
|
1434
|
+
min-height: var(--sw-control-md-min-height);
|
|
1435
|
+
padding-inline: var(--sw-space-2) var(--sw-space-3);
|
|
1436
|
+
}
|
|
1437
|
+
|
|
1438
|
+
.sw-segmented-item-icon {
|
|
1439
|
+
display: inline-flex;
|
|
1440
|
+
flex: none;
|
|
1441
|
+
}
|
|
1442
|
+
|
|
1443
|
+
.sw-segmented.sw-segmented-with-icons[aria-invalid='true'] {
|
|
1444
|
+
border-color: var(--sw-color-danger);
|
|
1445
|
+
}
|
|
1446
|
+
|
|
1447
|
+
@media (forced-colors: active) {
|
|
1448
|
+
.sw-segmented.sw-segmented-with-icons:not(.sw-segmented-filled) { border-color: CanvasText; }
|
|
1449
|
+
.sw-segmented-with-icons:not(.sw-segmented-filled) .sw-segmented-item-selected { outline: 2px solid Highlight; }
|
|
1450
|
+
.sw-segmented.sw-segmented-with-icons[aria-invalid='true'] { border-color: Mark; }
|
|
1451
|
+
}
|
|
1452
|
+
|
|
1351
1453
|
.sw-segmented-disabled {
|
|
1352
1454
|
opacity: var(--sw-disabled-opacity);
|
|
1353
1455
|
}
|
|
@@ -1538,6 +1640,118 @@ body {
|
|
|
1538
1640
|
.sw-table-sort-none { opacity: 1; }
|
|
1539
1641
|
}
|
|
1540
1642
|
|
|
1643
|
+
.sw-table .sw-table-tone-success {
|
|
1644
|
+
color: var(--sw-color-success);
|
|
1645
|
+
}
|
|
1646
|
+
|
|
1647
|
+
.sw-table .sw-table-tone-danger {
|
|
1648
|
+
color: var(--sw-color-danger);
|
|
1649
|
+
}
|
|
1650
|
+
|
|
1651
|
+
.sw-table .sw-table-tone-muted {
|
|
1652
|
+
color: var(--sw-color-muted);
|
|
1653
|
+
}
|
|
1654
|
+
|
|
1655
|
+
.sw-table .sw-table-tone-accent {
|
|
1656
|
+
color: var(--sw-color-accent);
|
|
1657
|
+
}
|
|
1658
|
+
|
|
1659
|
+
.sw-table-column-rules :is(th, td) + :is(th, td) {
|
|
1660
|
+
border-inline-start: 1px solid var(--sw-color-border);
|
|
1661
|
+
}
|
|
1662
|
+
|
|
1663
|
+
/* A sticky header cell is positioned, so the next cell's fill covers a
|
|
1664
|
+
collapsed border; its rule is a border on its own ::after instead, so
|
|
1665
|
+
forced colours keep it and the logical inset mirrors it. */
|
|
1666
|
+
.sw-table-sticky.sw-table-column-rules thead :is(th, td) + :is(th, td)::after {
|
|
1667
|
+
border-inline-start: 1px solid var(--sw-color-border);
|
|
1668
|
+
content: '';
|
|
1669
|
+
inset-block: 0;
|
|
1670
|
+
inset-inline-start: 0;
|
|
1671
|
+
pointer-events: none;
|
|
1672
|
+
position: absolute;
|
|
1673
|
+
}
|
|
1674
|
+
|
|
1675
|
+
:where(.sw-table tbody, .sw-table tfoot) th[scope='row'] {
|
|
1676
|
+
color: inherit;
|
|
1677
|
+
font: inherit;
|
|
1678
|
+
letter-spacing: inherit;
|
|
1679
|
+
}
|
|
1680
|
+
|
|
1681
|
+
.sw-table-row-sub > th[scope='row'] {
|
|
1682
|
+
padding-inline-start: calc(var(--sw-space-3) + var(--sw-space-6) + var(--sw-space-3));
|
|
1683
|
+
position: relative;
|
|
1684
|
+
}
|
|
1685
|
+
|
|
1686
|
+
.sw-table-compact .sw-table-row-sub > th[scope='row'] {
|
|
1687
|
+
padding-inline-start: calc(var(--sw-space-2) + var(--sw-space-6) + var(--sw-space-3));
|
|
1688
|
+
}
|
|
1689
|
+
|
|
1690
|
+
.sw-table-row-sub > th[scope='row']::after {
|
|
1691
|
+
block-size: var(--sw-space-5);
|
|
1692
|
+
border-inline-start: 2px solid var(--sw-color-border);
|
|
1693
|
+
content: '';
|
|
1694
|
+
inset-block-start: 50%;
|
|
1695
|
+
inset-inline-start: calc(var(--sw-space-3) + var(--sw-space-6));
|
|
1696
|
+
pointer-events: none;
|
|
1697
|
+
position: absolute;
|
|
1698
|
+
transform: translateY(-50%);
|
|
1699
|
+
}
|
|
1700
|
+
|
|
1701
|
+
.sw-table-compact .sw-table-row-sub > th[scope='row']::after {
|
|
1702
|
+
inset-inline-start: calc(var(--sw-space-2) + var(--sw-space-6));
|
|
1703
|
+
}
|
|
1704
|
+
|
|
1705
|
+
.sw-table .sw-table-row-struck > :is(td, th) {
|
|
1706
|
+
background: var(--sw-color-subtle);
|
|
1707
|
+
color: var(--sw-color-muted);
|
|
1708
|
+
text-decoration: line-through;
|
|
1709
|
+
}
|
|
1710
|
+
|
|
1711
|
+
.sw-table .sw-table-row-struck > [class*='sw-table-tone-'] {
|
|
1712
|
+
color: var(--sw-color-muted);
|
|
1713
|
+
}
|
|
1714
|
+
|
|
1715
|
+
@media (forced-colors: active) {
|
|
1716
|
+
.sw-table-column-rules :is(th, td) + :is(th, td),
|
|
1717
|
+
.sw-table-sticky.sw-table-column-rules thead :is(th, td) + :is(th, td)::after { border-color: CanvasText; }
|
|
1718
|
+
.sw-table-row-sub > th[scope='row']::after { border-color: CanvasText; }
|
|
1719
|
+
}
|
|
1720
|
+
|
|
1721
|
+
.sw-table tfoot :is(th, td) {
|
|
1722
|
+
font-weight: 600;
|
|
1723
|
+
position: relative;
|
|
1724
|
+
}
|
|
1725
|
+
|
|
1726
|
+
.sw-table tfoot > tr:first-child > :is(th, td)::before {
|
|
1727
|
+
border-top: 2px solid var(--sw-color-border);
|
|
1728
|
+
content: '';
|
|
1729
|
+
/* Over the last body row's 1 px border, so the rule reads 2 px. */
|
|
1730
|
+
inset-block-start: -1px;
|
|
1731
|
+
inset-inline: 0;
|
|
1732
|
+
pointer-events: none;
|
|
1733
|
+
position: absolute;
|
|
1734
|
+
}
|
|
1735
|
+
|
|
1736
|
+
.sw-table .sw-table-footer-sticky :is(th, td) {
|
|
1737
|
+
background: var(--sw-glass-fill);
|
|
1738
|
+
backdrop-filter: blur(var(--sw-glass-blur)) saturate(var(--sw-glass-saturate));
|
|
1739
|
+
-webkit-backdrop-filter: blur(var(--sw-glass-blur)) saturate(var(--sw-glass-saturate));
|
|
1740
|
+
bottom: 0;
|
|
1741
|
+
position: sticky;
|
|
1742
|
+
z-index: 2;
|
|
1743
|
+
}
|
|
1744
|
+
|
|
1745
|
+
.sw-table-wrap.sw-scroll-fits:has(> .sw-table > .sw-table-footer-sticky) {
|
|
1746
|
+
overflow: visible;
|
|
1747
|
+
}
|
|
1748
|
+
|
|
1749
|
+
@media (forced-colors: active) {
|
|
1750
|
+
.sw-table tfoot > tr:first-child > :is(th, td)::before { border-color: CanvasText; }
|
|
1751
|
+
.sw-table .sw-table-footer-sticky :is(th, td),
|
|
1752
|
+
.sw-table-sticky thead th { background: Canvas; backdrop-filter: none; -webkit-backdrop-filter: none; }
|
|
1753
|
+
}
|
|
1754
|
+
|
|
1541
1755
|
.sw-table-row-selected > :first-child {
|
|
1542
1756
|
position: relative;
|
|
1543
1757
|
}
|
|
@@ -2031,7 +2245,7 @@ body {
|
|
|
2031
2245
|
.sw-app-header-sticky {
|
|
2032
2246
|
position: sticky;
|
|
2033
2247
|
top: 0;
|
|
2034
|
-
z-index:
|
|
2248
|
+
z-index: 5;
|
|
2035
2249
|
}
|
|
2036
2250
|
|
|
2037
2251
|
.sw-nav {
|
|
@@ -2155,6 +2369,54 @@ body {
|
|
|
2155
2369
|
}
|
|
2156
2370
|
}
|
|
2157
2371
|
|
|
2372
|
+
.sw-section-nav.sw-section-nav-filled .sw-section-nav-list {
|
|
2373
|
+
border-bottom: 0;
|
|
2374
|
+
}
|
|
2375
|
+
|
|
2376
|
+
/* (0,4,0): outranks the underline and the side list's start bar. */
|
|
2377
|
+
[data-theme] .sw-section-nav.sw-section-nav-filled .sw-section-nav-link {
|
|
2378
|
+
border: 2px solid transparent;
|
|
2379
|
+
border-radius: var(--sw-radius-sm);
|
|
2380
|
+
font-weight: 500;
|
|
2381
|
+
margin-bottom: 0;
|
|
2382
|
+
min-height: var(--sw-control-sm-min-height);
|
|
2383
|
+
padding-inline: var(--sw-control-sm-padding-inline);
|
|
2384
|
+
}
|
|
2385
|
+
|
|
2386
|
+
[data-theme] .sw-section-nav.sw-section-nav-filled .sw-section-nav-link[aria-current] {
|
|
2387
|
+
background: color-mix(in srgb, var(--sw-color-muted) 18%, transparent);
|
|
2388
|
+
border-color: transparent;
|
|
2389
|
+
color: var(--sw-color-text);
|
|
2390
|
+
font-weight: 600;
|
|
2391
|
+
}
|
|
2392
|
+
|
|
2393
|
+
[data-theme] .sw-section-nav-count {
|
|
2394
|
+
align-items: center;
|
|
2395
|
+
background: var(--sw-color-danger);
|
|
2396
|
+
border-radius: var(--sw-radius-pill);
|
|
2397
|
+
box-sizing: border-box;
|
|
2398
|
+
color: var(--sw-color-onDanger);
|
|
2399
|
+
display: inline-flex;
|
|
2400
|
+
font-size: 13px;
|
|
2401
|
+
font-variant-numeric: tabular-nums;
|
|
2402
|
+
font-weight: 700;
|
|
2403
|
+
justify-content: center;
|
|
2404
|
+
letter-spacing: -0.08px;
|
|
2405
|
+
line-height: 1;
|
|
2406
|
+
min-height: calc(var(--sw-space-5) - var(--sw-space-1));
|
|
2407
|
+
min-width: calc(var(--sw-space-5) - var(--sw-space-1));
|
|
2408
|
+
padding-inline: var(--sw-space-1);
|
|
2409
|
+
}
|
|
2410
|
+
|
|
2411
|
+
@media (pointer: coarse) {
|
|
2412
|
+
[data-theme] .sw-section-nav.sw-section-nav-filled .sw-section-nav-link { min-height: var(--sw-control-md-min-height); }
|
|
2413
|
+
}
|
|
2414
|
+
|
|
2415
|
+
@media (forced-colors: active) {
|
|
2416
|
+
[data-theme] .sw-section-nav.sw-section-nav-filled .sw-section-nav-link[aria-current] { border-color: Highlight; }
|
|
2417
|
+
[data-theme] .sw-section-nav-count { border: 1px solid CanvasText; }
|
|
2418
|
+
}
|
|
2419
|
+
|
|
2158
2420
|
@media (pointer: coarse) {
|
|
2159
2421
|
[data-theme] .sw-section-nav-link { min-height: var(--sw-control-md-min-height); }
|
|
2160
2422
|
}
|
|
@@ -2705,6 +2967,47 @@ body {
|
|
|
2705
2967
|
color: var(--sw-color-danger);
|
|
2706
2968
|
}
|
|
2707
2969
|
|
|
2970
|
+
/*
|
|
2971
|
+
* A command's detail: its current value at the inline end in the muted
|
|
2972
|
+
* colour, then a chevron pointing to the inline end (mirrored right to
|
|
2973
|
+
* left). A long value wraps between words, never inside one (the command
|
|
2974
|
+
* itself may break anywhere), and the chevron stays last.
|
|
2975
|
+
*/
|
|
2976
|
+
.sw-action-menu-detail {
|
|
2977
|
+
align-items: center;
|
|
2978
|
+
color: var(--sw-color-muted);
|
|
2979
|
+
display: inline-flex;
|
|
2980
|
+
gap: var(--sw-space-2);
|
|
2981
|
+
margin-inline-start: auto;
|
|
2982
|
+
overflow-wrap: normal;
|
|
2983
|
+
padding-inline-start: var(--sw-space-3);
|
|
2984
|
+
text-align: end;
|
|
2985
|
+
}
|
|
2986
|
+
|
|
2987
|
+
.sw-action-menu-chevron {
|
|
2988
|
+
border-bottom: 2px solid var(--sw-color-muted);
|
|
2989
|
+
border-right: 2px solid var(--sw-color-muted);
|
|
2990
|
+
box-sizing: border-box;
|
|
2991
|
+
height: var(--sw-space-2);
|
|
2992
|
+
width: var(--sw-space-2);
|
|
2993
|
+
flex: none;
|
|
2994
|
+
transform: rotate(-45deg);
|
|
2995
|
+
}
|
|
2996
|
+
|
|
2997
|
+
.sw-action-menu-chevron:dir(rtl) {
|
|
2998
|
+
transform: rotate(135deg);
|
|
2999
|
+
}
|
|
3000
|
+
|
|
3001
|
+
/* A hairline that sets a command apart from the ones above. */
|
|
3002
|
+
.sw-action-menu-separator {
|
|
3003
|
+
border-top: 1px solid var(--sw-color-border);
|
|
3004
|
+
margin-block: var(--sw-space-1);
|
|
3005
|
+
}
|
|
3006
|
+
|
|
3007
|
+
@media (forced-colors: active) {
|
|
3008
|
+
.sw-action-menu-chevron { border-color: CanvasText; }
|
|
3009
|
+
}
|
|
3010
|
+
|
|
2708
3011
|
/* A coarse pointer gets the full touch target: the trigger at least square, and every command as tall. */
|
|
2709
3012
|
@media (pointer: coarse) {
|
|
2710
3013
|
.sw-action-menu-trigger {
|
|
@@ -2717,6 +3020,138 @@ body {
|
|
|
2717
3020
|
}
|
|
2718
3021
|
}
|
|
2719
3022
|
|
|
3023
|
+
.sw-multi-select {
|
|
3024
|
+
display: inline-flex;
|
|
3025
|
+
max-width: 100%;
|
|
3026
|
+
}
|
|
3027
|
+
|
|
3028
|
+
.sw-multi-select-trigger {
|
|
3029
|
+
align-items: center;
|
|
3030
|
+
appearance: none;
|
|
3031
|
+
background-color: var(--sw-glass-fill);
|
|
3032
|
+
border: 1px solid var(--sw-color-border);
|
|
3033
|
+
border-radius: var(--sw-radius-sm);
|
|
3034
|
+
box-sizing: border-box;
|
|
3035
|
+
color: var(--sw-color-text);
|
|
3036
|
+
column-gap: var(--sw-space-2);
|
|
3037
|
+
cursor: pointer;
|
|
3038
|
+
display: inline-flex;
|
|
3039
|
+
font-family: var(--sw-font-sans);
|
|
3040
|
+
font-size: 15px;
|
|
3041
|
+
font-weight: 600;
|
|
3042
|
+
letter-spacing: -0.2px;
|
|
3043
|
+
line-height: 20px;
|
|
3044
|
+
margin: 0;
|
|
3045
|
+
max-width: 100%;
|
|
3046
|
+
min-height: var(--sw-control-md-min-height);
|
|
3047
|
+
padding-inline: var(--sw-control-md-padding-inline);
|
|
3048
|
+
}
|
|
3049
|
+
|
|
3050
|
+
.sw-multi-select-trigger::after {
|
|
3051
|
+
border-bottom: 2px solid var(--sw-color-muted);
|
|
3052
|
+
border-right: 2px solid var(--sw-color-muted);
|
|
3053
|
+
box-sizing: border-box;
|
|
3054
|
+
height: var(--sw-space-2);
|
|
3055
|
+
width: var(--sw-space-2);
|
|
3056
|
+
content: '';
|
|
3057
|
+
flex: none;
|
|
3058
|
+
margin-inline-start: var(--sw-space-2);
|
|
3059
|
+
transform: translateY(-25%) rotate(45deg);
|
|
3060
|
+
}
|
|
3061
|
+
|
|
3062
|
+
.sw-multi-select-trigger:focus-visible {
|
|
3063
|
+
outline: var(--sw-focus-ring-width) solid var(--sw-color-accent);
|
|
3064
|
+
outline-offset: var(--sw-focus-ring-offset);
|
|
3065
|
+
}
|
|
3066
|
+
|
|
3067
|
+
.sw-multi-select-trigger:disabled {
|
|
3068
|
+
cursor: not-allowed;
|
|
3069
|
+
opacity: var(--sw-disabled-opacity);
|
|
3070
|
+
}
|
|
3071
|
+
|
|
3072
|
+
.sw-multi-select-label {
|
|
3073
|
+
color: var(--sw-color-muted);
|
|
3074
|
+
font-weight: 500;
|
|
3075
|
+
}
|
|
3076
|
+
|
|
3077
|
+
.sw-multi-select-summary {
|
|
3078
|
+
min-width: 0;
|
|
3079
|
+
overflow: hidden;
|
|
3080
|
+
text-overflow: ellipsis;
|
|
3081
|
+
white-space: nowrap;
|
|
3082
|
+
}
|
|
3083
|
+
|
|
3084
|
+
.sw-multi-select-panel {
|
|
3085
|
+
background: var(--sw-glass-fill);
|
|
3086
|
+
border: 1px solid var(--sw-glass-border);
|
|
3087
|
+
border-radius: var(--sw-radius-sm);
|
|
3088
|
+
box-shadow: var(--sw-elevation-sm), inset 0 1px 0 var(--sw-glass-specular);
|
|
3089
|
+
backdrop-filter: blur(var(--sw-glass-blur)) saturate(var(--sw-glass-saturate));
|
|
3090
|
+
-webkit-backdrop-filter: blur(var(--sw-glass-blur)) saturate(var(--sw-glass-saturate));
|
|
3091
|
+
box-sizing: border-box;
|
|
3092
|
+
color: var(--sw-color-text);
|
|
3093
|
+
display: flex;
|
|
3094
|
+
flex-direction: column;
|
|
3095
|
+
inset: auto;
|
|
3096
|
+
margin: 0;
|
|
3097
|
+
/* The viewport, not --sw-select-max: the list is short and should show
|
|
3098
|
+
whole rather than scroll inside a 22rem cap. */
|
|
3099
|
+
max-height: calc(100% - var(--sw-space-2) - var(--sw-space-2));
|
|
3100
|
+
max-width: calc(100% - var(--sw-space-2) - var(--sw-space-2));
|
|
3101
|
+
min-width: var(--sw-select-max);
|
|
3102
|
+
overflow: auto;
|
|
3103
|
+
padding: var(--sw-space-1);
|
|
3104
|
+
position: fixed;
|
|
3105
|
+
width: max-content;
|
|
3106
|
+
z-index: 10;
|
|
3107
|
+
}
|
|
3108
|
+
|
|
3109
|
+
.sw-multi-select-commands {
|
|
3110
|
+
border-bottom: 1px solid var(--sw-color-border);
|
|
3111
|
+
display: flex;
|
|
3112
|
+
justify-content: space-between;
|
|
3113
|
+
margin-bottom: var(--sw-space-1);
|
|
3114
|
+
padding-bottom: var(--sw-space-1);
|
|
3115
|
+
}
|
|
3116
|
+
|
|
3117
|
+
.sw-multi-select-row-separated {
|
|
3118
|
+
border-top: 1px solid var(--sw-color-border);
|
|
3119
|
+
margin-top: var(--sw-space-1);
|
|
3120
|
+
padding-top: var(--sw-space-1);
|
|
3121
|
+
}
|
|
3122
|
+
|
|
3123
|
+
.sw-checkbox-label.sw-multi-select-option {
|
|
3124
|
+
border-radius: var(--sw-radius-sm);
|
|
3125
|
+
box-sizing: border-box;
|
|
3126
|
+
font-family: var(--sw-font-sans);
|
|
3127
|
+
font-size: 15px;
|
|
3128
|
+
font-weight: 400;
|
|
3129
|
+
letter-spacing: -0.2px;
|
|
3130
|
+
line-height: 20px;
|
|
3131
|
+
padding-inline: var(--sw-space-2);
|
|
3132
|
+
width: 100%;
|
|
3133
|
+
}
|
|
3134
|
+
|
|
3135
|
+
.sw-multi-select-option:hover {
|
|
3136
|
+
background: color-mix(in srgb, var(--sw-color-muted) 16%, transparent);
|
|
3137
|
+
}
|
|
3138
|
+
|
|
3139
|
+
.sw-multi-select-icon {
|
|
3140
|
+
display: inline-flex;
|
|
3141
|
+
flex: none;
|
|
3142
|
+
}
|
|
3143
|
+
|
|
3144
|
+
.sw-multi-select-text {
|
|
3145
|
+
min-width: 0;
|
|
3146
|
+
}
|
|
3147
|
+
|
|
3148
|
+
@media (forced-colors: active) {
|
|
3149
|
+
.sw-multi-select-trigger::after { border-color: CanvasText; }
|
|
3150
|
+
.sw-multi-select-panel { border-color: CanvasText; }
|
|
3151
|
+
.sw-multi-select-commands,
|
|
3152
|
+
.sw-multi-select-row-separated { border-color: CanvasText; }
|
|
3153
|
+
}
|
|
3154
|
+
|
|
2720
3155
|
.sw-action-bar {
|
|
2721
3156
|
align-items: center;
|
|
2722
3157
|
background: var(--sw-glass-fill);
|
|
@@ -2808,14 +3243,14 @@ body {
|
|
|
2808
3243
|
.sw-action-bar-sticky {
|
|
2809
3244
|
bottom: calc(var(--sw-space-2) + env(safe-area-inset-bottom, 0px));
|
|
2810
3245
|
position: sticky;
|
|
2811
|
-
z-index:
|
|
3246
|
+
z-index: 3;
|
|
2812
3247
|
}
|
|
2813
3248
|
|
|
2814
3249
|
@media not all and (min-width: 48rem) {
|
|
2815
3250
|
.sw-action-bar-sticky-below-md {
|
|
2816
3251
|
bottom: calc(var(--sw-space-2) + env(safe-area-inset-bottom, 0px));
|
|
2817
3252
|
position: sticky;
|
|
2818
|
-
z-index:
|
|
3253
|
+
z-index: 3;
|
|
2819
3254
|
}
|
|
2820
3255
|
}
|
|
2821
3256
|
|
|
@@ -3126,6 +3561,39 @@ body {
|
|
|
3126
3561
|
.sw-notice-band { border-width: 0 0 1px; }
|
|
3127
3562
|
}
|
|
3128
3563
|
|
|
3564
|
+
.sw-glyph-tile {
|
|
3565
|
+
align-items: center;
|
|
3566
|
+
background: var(--sw-glyph-tile-fill);
|
|
3567
|
+
border-radius: var(--sw-radius-sm);
|
|
3568
|
+
box-sizing: border-box;
|
|
3569
|
+
color: var(--sw-categorical-on);
|
|
3570
|
+
display: inline-flex;
|
|
3571
|
+
flex: none;
|
|
3572
|
+
justify-content: center;
|
|
3573
|
+
}
|
|
3574
|
+
|
|
3575
|
+
.sw-glyph-tile > svg {
|
|
3576
|
+
flex: none;
|
|
3577
|
+
height: var(--sw-space-4);
|
|
3578
|
+
width: var(--sw-space-4);
|
|
3579
|
+
}
|
|
3580
|
+
|
|
3581
|
+
.sw-glyph-tile-green { --sw-glyph-tile-fill: var(--sw-categorical-green); }
|
|
3582
|
+
.sw-glyph-tile-blue { --sw-glyph-tile-fill: var(--sw-categorical-blue); }
|
|
3583
|
+
.sw-glyph-tile-orange { --sw-glyph-tile-fill: var(--sw-categorical-orange); }
|
|
3584
|
+
.sw-glyph-tile-purple { --sw-glyph-tile-fill: var(--sw-categorical-purple); }
|
|
3585
|
+
.sw-glyph-tile-teal { --sw-glyph-tile-fill: var(--sw-categorical-teal); }
|
|
3586
|
+
.sw-glyph-tile-rose { --sw-glyph-tile-fill: var(--sw-categorical-rose); }
|
|
3587
|
+
.sw-glyph-tile-neutral { --sw-glyph-tile-fill: var(--sw-categorical-neutral); }
|
|
3588
|
+
|
|
3589
|
+
.sw-glyph-tile-sm { height: var(--sw-space-5); width: var(--sw-space-5); }
|
|
3590
|
+
.sw-glyph-tile-md { height: var(--sw-control-xs-min-height); width: var(--sw-control-xs-min-height); }
|
|
3591
|
+
.sw-glyph-tile-lg { height: var(--sw-space-6); width: var(--sw-space-6); }
|
|
3592
|
+
|
|
3593
|
+
@media (forced-colors: active) {
|
|
3594
|
+
.sw-glyph-tile { border: 1px solid CanvasText; color: CanvasText; }
|
|
3595
|
+
}
|
|
3596
|
+
|
|
3129
3597
|
.sw-tooltip-anchor {
|
|
3130
3598
|
display: inline-flex;
|
|
3131
3599
|
position: relative;
|
|
@@ -3357,7 +3825,7 @@ body {
|
|
|
3357
3825
|
-webkit-backdrop-filter: blur(var(--sw-glass-blur)) saturate(var(--sw-glass-saturate));
|
|
3358
3826
|
position: sticky;
|
|
3359
3827
|
top: env(safe-area-inset-top, 0px);
|
|
3360
|
-
z-index:
|
|
3828
|
+
z-index: 5;
|
|
3361
3829
|
}
|
|
3362
3830
|
|
|
3363
3831
|
@media (prefers-reduced-transparency: reduce) {
|
|
@@ -3472,11 +3940,35 @@ body {
|
|
|
3472
3940
|
opacity: var(--sw-disabled-opacity);
|
|
3473
3941
|
}
|
|
3474
3942
|
|
|
3943
|
+
/*
|
|
3944
|
+
* An error: the message under the chips in the danger colour (a polite live
|
|
3945
|
+
* region, out of the layout while empty) and every chip's edge in danger,
|
|
3946
|
+
* the chosen one too (it keeps its accent fill), in normal and forced
|
|
3947
|
+
* colours alike.
|
|
3948
|
+
*/
|
|
3949
|
+
.sw-filter-chips-error {
|
|
3950
|
+
color: var(--sw-color-danger);
|
|
3951
|
+
display: block;
|
|
3952
|
+
font-family: var(--sw-font-sans);
|
|
3953
|
+
font-size: 13px;
|
|
3954
|
+
line-height: 18px;
|
|
3955
|
+
padding-top: var(--sw-space-2);
|
|
3956
|
+
}
|
|
3957
|
+
|
|
3958
|
+
.sw-filter-chips-error:empty { position: absolute; }
|
|
3959
|
+
|
|
3960
|
+
.sw-filter-chips[aria-invalid='true'] .sw-filter-chip-face {
|
|
3961
|
+
border-color: var(--sw-color-danger);
|
|
3962
|
+
}
|
|
3963
|
+
|
|
3475
3964
|
@media (forced-colors: active) {
|
|
3476
3965
|
.sw-filter-chip-face { background: Canvas; border-color: CanvasText; color: CanvasText; }
|
|
3966
|
+
.sw-filter-chips-error { color: Mark; }
|
|
3477
3967
|
.sw-filter-chip-input:checked + .sw-filter-chip-face { background: Highlight; border-color: Highlight; color: HighlightText; }
|
|
3478
3968
|
.sw-filter-chip-input:focus-visible + .sw-filter-chip-face { outline-color: Highlight; }
|
|
3479
3969
|
.sw-filter-chip-count { color: inherit; }
|
|
3970
|
+
/* After the checked rule, so every chip, the chosen one too, takes the edge. */
|
|
3971
|
+
.sw-filter-chips[aria-invalid='true'] .sw-filter-chip-face { border-color: Mark; }
|
|
3480
3972
|
}
|
|
3481
3973
|
|
|
3482
3974
|
.sw-grid {
|
|
@@ -4617,6 +5109,7 @@ body {
|
|
|
4617
5109
|
.sw-badge-neutral,
|
|
4618
5110
|
.sw-segmented,
|
|
4619
5111
|
.sw-table-sticky thead th,
|
|
5112
|
+
.sw-table .sw-table-footer-sticky :is(th, td),
|
|
4620
5113
|
.sw-denomination-strip .sw-denomination-label,
|
|
4621
5114
|
.sw-denomination-strip thead .sw-denomination-corner:first-child,
|
|
4622
5115
|
.sw-bar-chart-track,
|
|
@@ -4624,6 +5117,7 @@ body {
|
|
|
4624
5117
|
.sw-accordion,
|
|
4625
5118
|
.sw-select-list,
|
|
4626
5119
|
.sw-action-menu-list,
|
|
5120
|
+
.sw-multi-select-panel,
|
|
4627
5121
|
.sw-date-field-calendar,
|
|
4628
5122
|
.sw-toast {
|
|
4629
5123
|
background: var(--sw-color-surface);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@scalewing/react",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.30.0",
|
|
4
4
|
"description": "Scalewing DOM components and package-owned CSS utilities.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"README.md"
|
|
39
39
|
],
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@scalewing/tokens": "^1.
|
|
41
|
+
"@scalewing/tokens": "^1.5.0"
|
|
42
42
|
},
|
|
43
43
|
"peerDependencies": {
|
|
44
44
|
"react": "^19.0.0",
|