@scalewing/react 1.39.0 → 1.41.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.
Files changed (181) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/README.md +255 -5
  3. package/dist/calendar-labels.d.ts +2 -0
  4. package/dist/calendar-labels.js +7 -0
  5. package/dist/calendar-month.d.ts +6 -0
  6. package/dist/calendar-month.js +15 -0
  7. package/dist/components/BarChart.d.ts +20 -4
  8. package/dist/components/BarChart.js +13 -6
  9. package/dist/components/ButtonGroup.d.ts +8 -1
  10. package/dist/components/ButtonGroup.js +11 -2
  11. package/dist/components/DateField.d.ts +14 -2
  12. package/dist/components/DateField.js +14 -11
  13. package/dist/components/DateRangeButton.d.ts +65 -0
  14. package/dist/components/DateRangeButton.js +54 -0
  15. package/dist/components/DenominationGrid.d.ts +3 -2
  16. package/dist/components/DenominationGrid.js +21 -3
  17. package/dist/components/Dialog.d.ts +29 -13
  18. package/dist/components/Dialog.js +22 -20
  19. package/dist/components/Field.d.ts +13 -2
  20. package/dist/components/Field.js +14 -38
  21. package/dist/components/FilterChips.d.ts +7 -37
  22. package/dist/components/FilterChips.js +32 -24
  23. package/dist/components/ListGroup.d.ts +33 -0
  24. package/dist/components/ListGroup.js +19 -0
  25. package/dist/components/ListRow.d.ts +60 -0
  26. package/dist/components/ListRow.js +60 -0
  27. package/dist/components/NavCount.d.ts +21 -0
  28. package/dist/components/NavCount.js +23 -0
  29. package/dist/components/SectionNav.js +1 -8
  30. package/dist/components/SegmentedControl.d.ts +17 -1
  31. package/dist/components/SegmentedControl.js +11 -3
  32. package/dist/components/StatTile.d.ts +11 -4
  33. package/dist/components/StatTile.js +11 -4
  34. package/dist/components/Switch.d.ts +16 -1
  35. package/dist/components/Switch.js +17 -6
  36. package/dist/components/action-bar/ActionBarSummary.d.ts +10 -2
  37. package/dist/components/action-bar/ActionBarSummary.js +11 -2
  38. package/dist/components/{date-field → calendar}/CalendarGrid.d.ts +17 -2
  39. package/dist/components/{date-field → calendar}/CalendarGrid.js +11 -3
  40. package/dist/components/calendar/CalendarPopover.d.ts +25 -0
  41. package/dist/components/calendar/CalendarPopover.js +22 -0
  42. package/dist/components/calendar/MonthStep.d.ts +16 -0
  43. package/dist/components/calendar/MonthStep.js +17 -0
  44. package/dist/components/calendar/use-grid-focus.d.ts +18 -0
  45. package/dist/components/calendar/use-grid-focus.js +35 -0
  46. package/dist/components/calendar/wrap-tab.d.ts +7 -0
  47. package/dist/components/calendar/wrap-tab.js +29 -0
  48. package/dist/components/date-field/CalendarDialog.js +9 -67
  49. package/dist/components/date-field/CalendarEntryButton.d.ts +24 -0
  50. package/dist/components/date-field/CalendarEntryButton.js +16 -0
  51. package/dist/components/date-field/CalendarHeader.js +2 -11
  52. package/dist/components/date-field/TypedEntry.d.ts +26 -0
  53. package/dist/components/date-field/TypedEntry.js +13 -0
  54. package/dist/components/date-range/DateRangePopover.d.ts +7 -0
  55. package/dist/components/date-range/DateRangePopover.js +17 -0
  56. package/dist/components/date-range/DateRangeSheet.d.ts +7 -0
  57. package/dist/components/date-range/DateRangeSheet.js +15 -0
  58. package/dist/components/date-range/RangeMonths.d.ts +28 -0
  59. package/dist/components/date-range/RangeMonths.js +50 -0
  60. package/dist/components/date-range/RangePresets.d.ts +16 -0
  61. package/dist/components/date-range/RangePresets.js +10 -0
  62. package/dist/components/date-range/RangeSummary.d.ts +15 -0
  63. package/dist/components/date-range/RangeSummary.js +11 -0
  64. package/dist/components/date-range/range-panel-props.d.ts +31 -0
  65. package/dist/components/date-range/range-panel-props.js +1 -0
  66. package/dist/components/date-range/use-range-popup.d.ts +21 -0
  67. package/dist/components/date-range/use-range-popup.js +53 -0
  68. package/dist/components/denomination-grid/CountCell.d.ts +16 -0
  69. package/dist/components/denomination-grid/CountCell.js +14 -0
  70. package/dist/components/denomination-grid/DenominationStrip.d.ts +4 -1
  71. package/dist/components/denomination-grid/DenominationStrip.js +2 -2
  72. package/dist/components/denomination-grid/EntryCell.d.ts +3 -1
  73. package/dist/components/denomination-grid/EntryCell.js +2 -2
  74. package/dist/components/denomination-grid/StripRow.js +1 -10
  75. package/dist/components/denomination-grid/TransposedStrip.d.ts +17 -0
  76. package/dist/components/denomination-grid/TransposedStrip.js +43 -0
  77. package/dist/components/denomination-grid/types.d.ts +31 -0
  78. package/dist/components/denomination-grid/types.js +7 -1
  79. package/dist/components/denomination-grid/validate-options.d.ts +7 -0
  80. package/dist/components/denomination-grid/validate-options.js +27 -0
  81. package/dist/components/dialog/DialogFooter.d.ts +6 -5
  82. package/dist/components/dialog/DialogFooter.js +6 -6
  83. package/dist/components/dialog/validate.d.ts +24 -0
  84. package/dist/components/dialog/validate.js +23 -0
  85. package/dist/components/field/field-checks.d.ts +34 -0
  86. package/dist/components/field/field-checks.js +42 -0
  87. package/dist/components/filter-chips/FilterChip.d.ts +16 -0
  88. package/dist/components/filter-chips/FilterChip.js +20 -0
  89. package/dist/components/filter-chips/options.d.ts +75 -0
  90. package/dist/components/filter-chips/options.js +11 -0
  91. package/dist/components/filter-chips/validate.d.ts +9 -0
  92. package/dist/components/filter-chips/validate.js +48 -0
  93. package/dist/components/link-press.d.ts +7 -0
  94. package/dist/components/link-press.js +13 -0
  95. package/dist/components/list/ListRowAccessoryMark.d.ts +5 -0
  96. package/dist/components/list/ListRowAccessoryMark.js +7 -0
  97. package/dist/components/list/ListRowContent.d.ts +22 -0
  98. package/dist/components/list/ListRowContent.js +11 -0
  99. package/dist/components/list/list-row-container.d.ts +5 -0
  100. package/dist/components/list/list-row-container.js +6 -0
  101. package/dist/components/use-media-query.d.ts +5 -0
  102. package/dist/components/use-media-query.js +18 -0
  103. package/dist/css/chart-tones.d.ts +2 -0
  104. package/dist/css/chart-tones.js +5 -1
  105. package/dist/css/chevron.d.ts +6 -0
  106. package/dist/css/chevron.js +14 -0
  107. package/dist/css/css-bar-chart.d.ts +17 -2
  108. package/dist/css/css-bar-chart.js +38 -7
  109. package/dist/css/css-button-group-attached.d.ts +3 -0
  110. package/dist/css/css-button-group-attached.js +26 -5
  111. package/dist/css/css-button-group-track.js +1 -1
  112. package/dist/css/css-canvas-grouped.d.ts +17 -0
  113. package/dist/css/css-canvas-grouped.js +40 -0
  114. package/dist/css/css-checkbox.js +2 -2
  115. package/dist/css/css-components.js +15 -0
  116. package/dist/css/css-count-pill.d.ts +2 -0
  117. package/dist/css/css-count-pill.js +54 -0
  118. package/dist/css/css-date-field-calendar-entry.d.ts +11 -0
  119. package/dist/css/css-date-field-calendar-entry.js +50 -0
  120. package/dist/css/css-date-field.js +7 -2
  121. package/dist/css/css-date-range-presets.d.ts +2 -0
  122. package/dist/css/css-date-range-presets.js +109 -0
  123. package/dist/css/css-date-range.d.ts +2 -0
  124. package/dist/css/css-date-range.js +197 -0
  125. package/dist/css/css-denomination-grid.js +4 -0
  126. package/dist/css/css-denomination-transposed.d.ts +4 -0
  127. package/dist/css/css-denomination-transposed.js +178 -0
  128. package/dist/css/css-dialog-canvas.d.ts +3 -0
  129. package/dist/css/css-dialog-canvas.js +20 -0
  130. package/dist/css/css-dialog-frame.js +19 -2
  131. package/dist/css/css-dialog-grabber.d.ts +4 -0
  132. package/dist/css/css-dialog-grabber.js +56 -0
  133. package/dist/css/css-dialog.js +3 -2
  134. package/dist/css/css-document.js +3 -0
  135. package/dist/css/css-field-width.d.ts +12 -0
  136. package/dist/css/css-field-width.js +49 -0
  137. package/dist/css/css-field.js +4 -0
  138. package/dist/css/css-filter-chips-layout.d.ts +2 -0
  139. package/dist/css/css-filter-chips-layout.js +42 -0
  140. package/dist/css/css-filter-chips.js +4 -0
  141. package/dist/css/css-list-row.d.ts +8 -0
  142. package/dist/css/css-list-row.js +209 -0
  143. package/dist/css/css-list.d.ts +3 -0
  144. package/dist/css/css-list.js +85 -0
  145. package/dist/css/css-scroll-region.d.ts +18 -0
  146. package/dist/css/css-scroll-region.js +41 -0
  147. package/dist/css/css-section-nav-filled.js +2 -25
  148. package/dist/css/css-segmented-sizing.d.ts +13 -0
  149. package/dist/css/css-segmented-sizing.js +66 -0
  150. package/dist/css/css-segmented.js +4 -0
  151. package/dist/css/css-stat-tile.d.ts +7 -0
  152. package/dist/css/css-stat-tile.js +16 -0
  153. package/dist/css/css-steps.js +2 -2
  154. package/dist/css/css-switch.d.ts +6 -0
  155. package/dist/css/css-switch.js +39 -0
  156. package/dist/css/css-table-bounded-edges.js +4 -27
  157. package/dist/css/range-band.d.ts +2 -0
  158. package/dist/css/range-band.js +7 -0
  159. package/dist/css/stacking.d.ts +1 -0
  160. package/dist/css/stacking.js +6 -3
  161. package/dist/css/stylesheet.js +10 -0
  162. package/dist/date-field-labels.d.ts +5 -0
  163. package/dist/date-field-labels.js +1 -0
  164. package/dist/date-range-draft.d.ts +26 -0
  165. package/dist/date-range-draft.js +36 -0
  166. package/dist/date-range-input.d.ts +26 -0
  167. package/dist/date-range-input.js +58 -0
  168. package/dist/date-range-labels.d.ts +22 -0
  169. package/dist/date-range-labels.js +26 -0
  170. package/dist/date-range-view.d.ts +12 -0
  171. package/dist/date-range-view.js +29 -0
  172. package/dist/date-range-words.d.ts +11 -0
  173. package/dist/date-range-words.js +40 -0
  174. package/dist/index.d.ts +16 -9
  175. package/dist/index.js +14 -7
  176. package/dist/list-options.d.ts +71 -0
  177. package/dist/list-options.js +84 -0
  178. package/dist/styles.css +863 -41
  179. package/dist/theme/ThemeProvider.d.ts +11 -1
  180. package/dist/theme/ThemeProvider.js +4 -2
  181. package/package.json +1 -1
package/dist/styles.css CHANGED
@@ -614,6 +614,18 @@ body {
614
614
  color-scheme: dark;
615
615
  }
616
616
 
617
+ [data-theme] {
618
+ --sw-canvas-grouped: color-mix(in srgb, var(--sw-color-muted) 7%, var(--sw-color-background));
619
+ }
620
+
621
+ [data-theme='dark'] {
622
+ --sw-canvas-grouped: var(--sw-color-background);
623
+ }
624
+
625
+ [data-theme][data-canvas='grouped'] {
626
+ background-color: var(--sw-canvas-grouped);
627
+ }
628
+
617
629
  [data-theme] a {
618
630
  color: var(--sw-color-accent);
619
631
  text-decoration: none;
@@ -970,21 +982,21 @@ body {
970
982
  border-radius: 0;
971
983
  }
972
984
 
973
- .sw-button-group.sw-button-group-attached > .sw-button + .sw-button {
985
+ .sw-button-group.sw-button-group-attached > .sw-button ~ .sw-button {
974
986
  margin-inline-start: -1px;
975
987
  }
976
988
 
977
- .sw-button-group.sw-button-group-attached > .sw-button:first-child {
989
+ .sw-button-group.sw-button-group-attached > .sw-button:first-of-type {
978
990
  border-end-start-radius: var(--sw-radius-sm);
979
991
  border-start-start-radius: var(--sw-radius-sm);
980
992
  }
981
993
 
982
- .sw-button-group.sw-button-group-attached > .sw-button:last-child {
994
+ .sw-button-group.sw-button-group-attached > .sw-button:last-of-type {
983
995
  border-end-end-radius: var(--sw-radius-sm);
984
996
  border-start-end-radius: var(--sw-radius-sm);
985
997
  }
986
998
 
987
- .sw-button-group.sw-button-group-attached > .sw-button + .sw-button:not(.sw-button-secondary) {
999
+ .sw-button-group.sw-button-group-attached > .sw-button ~ .sw-button:not(.sw-button-secondary) {
988
1000
  border-inline-start-color: color-mix(in srgb, currentColor 30%, transparent);
989
1001
  }
990
1002
 
@@ -1003,6 +1015,12 @@ body {
1003
1015
  .sw-button-group.sw-button-group-attached > * { width: auto; }
1004
1016
  }
1005
1017
 
1018
+ /* Its own block, after the phone row's, so a group that does not fill is unchanged. */
1019
+ @media not all and (min-width: 48rem) {
1020
+ .sw-button-group.sw-button-group-attached.sw-button-group-full-below-md { width: 100%; }
1021
+ .sw-button-group.sw-button-group-attached.sw-button-group-full-below-md > .sw-button { flex: 1 1 0; min-width: 0; }
1022
+ }
1023
+
1006
1024
  .sw-button-group.sw-button-group-attached.sw-button-group-track {
1007
1025
  background: color-mix(in srgb, var(--sw-color-muted) 16%, transparent);
1008
1026
  border-radius: var(--sw-radius-sm);
@@ -1014,7 +1032,7 @@ body {
1014
1032
  color: var(--sw-color-text);
1015
1033
  }
1016
1034
 
1017
- .sw-button-group.sw-button-group-attached.sw-button-group-track > .sw-button + .sw-button {
1035
+ .sw-button-group.sw-button-group-attached.sw-button-group-track > .sw-button ~ .sw-button {
1018
1036
  border-inline-start-color: var(--sw-color-border);
1019
1037
  }
1020
1038
 
@@ -1545,6 +1563,37 @@ body {
1545
1563
  .sw-segmented.sw-segmented-raised[aria-invalid='true'] { border-color: Mark; }
1546
1564
  }
1547
1565
 
1566
+ @media not all and (min-width: 48rem) {
1567
+ .sw-segmented-field.sw-segmented-field-full-below-md {
1568
+ align-self: stretch;
1569
+ display: flex;
1570
+ width: 100%;
1571
+ }
1572
+ .sw-segmented-field.sw-segmented-field-full-below-md > .sw-segmented {
1573
+ align-self: stretch;
1574
+ display: grid;
1575
+ grid-auto-columns: minmax(0, 1fr);
1576
+ grid-auto-flow: column;
1577
+ }
1578
+ }
1579
+
1580
+ .sw-segmented.sw-segmented-sm .sw-segmented-item {
1581
+ min-width: 0;
1582
+ overflow: hidden;
1583
+ white-space: nowrap;
1584
+ }
1585
+
1586
+ .sw-segmented.sw-segmented-sm:not(.sw-segmented-with-icons) .sw-segmented-item {
1587
+ padding-inline: var(--sw-space-2);
1588
+ }
1589
+
1590
+ .sw-segmented-sm .sw-segmented-item-label {
1591
+ display: block;
1592
+ min-width: 0;
1593
+ overflow: hidden;
1594
+ text-overflow: ellipsis;
1595
+ }
1596
+
1548
1597
  .sw-segmented-disabled {
1549
1598
  opacity: var(--sw-disabled-opacity);
1550
1599
  }
@@ -1952,13 +2001,16 @@ body {
1952
2001
  }
1953
2002
 
1954
2003
  @media (forced-colors: active) {
1955
- .sw-table-bounded.sw-scroll-more-top > .sw-table-sticky > thead > tr:last-child > :is(th, td)::before,
1956
- .sw-table-bounded.sw-scroll-more-bottom > .sw-table > .sw-table-footer-sticky > tr:first-child > :is(th, td)::before { background: none; border-color: CanvasText; }
1957
2004
  .sw-table-bounded.sw-scroll-more-top:not(:has(> .sw-table > thead)),
1958
2005
  .sw-table-bounded.sw-scroll-more-bottom:not(:has(> .sw-table > .sw-table-footer-sticky)),
1959
2006
  .sw-table-bounded.sw-scroll-more-top.sw-scroll-more-bottom:not(:has(> .sw-table > thead)):not(:has(> .sw-table > .sw-table-footer-sticky)) { background-image: none; }
1960
2007
  }
1961
2008
 
2009
+ @media (forced-colors: active) {
2010
+ .sw-table-bounded.sw-scroll-more-top > .sw-table-sticky > thead > tr:last-child > :is(th, td)::before,
2011
+ .sw-table-bounded.sw-scroll-more-bottom > .sw-table > .sw-table-footer-sticky > tr:first-child > :is(th, td)::before { background: none; border-color: CanvasText; }
2012
+ }
2013
+
1962
2014
  .sw-table-bounded:focus-visible > .sw-table-sticky > thead > tr > :is(th, td),
1963
2015
  .sw-table-bounded:focus-visible > .sw-table > .sw-table-footer-sticky > tr > :is(th, td) {
1964
2016
  box-shadow: var(--sw-table-ring-block, 0 0 transparent), var(--sw-table-ring-start, 0 0 transparent), var(--sw-table-ring-end, 0 0 transparent);
@@ -2188,6 +2240,36 @@ body {
2188
2240
  .sw-date-field-error { color: var(--sw-color-danger); }
2189
2241
  .sw-date-field-error:empty { position: absolute; }
2190
2242
 
2243
+ .sw-button.sw-date-field-calendar-entry {
2244
+ align-self: flex-start;
2245
+ border-radius: var(--sw-radius-sm);
2246
+ flex: none;
2247
+ justify-content: flex-start;
2248
+ max-width: 100%;
2249
+ text-align: start;
2250
+ white-space: nowrap;
2251
+ }
2252
+
2253
+ /* A long day or word in a narrow column ends in an ellipsis; the name keeps it whole. */
2254
+ .sw-date-field-calendar-entry-text {
2255
+ min-width: 0;
2256
+ overflow: hidden;
2257
+ text-overflow: ellipsis;
2258
+ }
2259
+
2260
+ .sw-button.sw-date-field-calendar-entry .sw-date-field-glyph {
2261
+ height: var(--sw-space-4);
2262
+ width: var(--sw-space-4);
2263
+ }
2264
+
2265
+ .sw-button.sw-date-field-calendar-entry.sw-date-field-calendar-entry-invalid {
2266
+ border-color: var(--sw-color-danger);
2267
+ }
2268
+
2269
+ @media (forced-colors: active) {
2270
+ .sw-button.sw-date-field-calendar-entry.sw-date-field-calendar-entry-invalid { border-color: Mark; }
2271
+ }
2272
+
2191
2273
  .sw-date-field-calendar {
2192
2274
  background: var(--sw-glass-fill);
2193
2275
  border: 1px solid var(--sw-glass-border);
@@ -2387,25 +2469,514 @@ body {
2387
2469
  }
2388
2470
  }
2389
2471
 
2390
- .sw-button.sw-calendar-button {
2472
+ .sw-button.sw-calendar-button {
2473
+ flex: none;
2474
+ padding-inline: 0;
2475
+ }
2476
+
2477
+ .sw-button-xs.sw-calendar-button { min-width: var(--sw-control-xs-min-height); }
2478
+ .sw-button-sm.sw-calendar-button { min-width: var(--sw-control-sm-min-height); }
2479
+ .sw-button-md.sw-calendar-button { min-width: var(--sw-control-md-min-height); }
2480
+
2481
+ @media (pointer: coarse) {
2482
+ .sw-button.sw-calendar-button {
2483
+ min-height: var(--sw-control-md-min-height);
2484
+ min-width: var(--sw-control-md-min-height);
2485
+ }
2486
+ }
2487
+
2488
+ .sw-calendar-button:not(.sw-button-md) .sw-date-field-glyph {
2489
+ height: var(--sw-space-4);
2490
+ width: var(--sw-space-4);
2491
+ }
2492
+
2493
+ .sw-date-range-button {
2494
+ font-variant-numeric: tabular-nums;
2495
+ white-space: nowrap;
2496
+ }
2497
+
2498
+ .sw-date-range-button:not(.sw-button-md) .sw-date-field-glyph {
2499
+ height: var(--sw-space-4);
2500
+ width: var(--sw-space-4);
2501
+ }
2502
+
2503
+ @media (pointer: coarse) {
2504
+ .sw-button.sw-date-range-button,
2505
+ .sw-date-range-actions > .sw-button { min-height: var(--sw-control-md-min-height); }
2506
+ }
2507
+
2508
+ .sw-date-field-calendar.sw-date-range-popover {
2509
+ gap: 0;
2510
+ padding: 0;
2511
+ }
2512
+
2513
+ .sw-date-range-body {
2514
+ display: flex;
2515
+ flex-direction: column;
2516
+ }
2517
+
2518
+ @media (min-width: 64rem) {
2519
+ .sw-date-range-body { flex-direction: row; }
2520
+ }
2521
+
2522
+ .sw-date-range-footer {
2523
+ align-items: center;
2524
+ border-top: 1px solid var(--sw-color-border);
2525
+ contain: inline-size;
2526
+ display: flex;
2527
+ flex-wrap: wrap;
2528
+ gap: var(--sw-space-2) var(--sw-space-4);
2529
+ padding: var(--sw-space-3);
2530
+ }
2531
+
2532
+ .sw-date-range-summary {
2533
+ color: var(--sw-color-muted);
2534
+ flex: 1 1 auto;
2535
+ font-size: 13px;
2536
+ line-height: 18px;
2537
+ min-width: 0;
2538
+ }
2539
+
2540
+ .sw-date-range-status { display: inline; }
2541
+
2542
+ .sw-date-range-line {
2543
+ color: var(--sw-color-text);
2544
+ display: block;
2545
+ font-size: 15px;
2546
+ font-weight: 600;
2547
+ line-height: 20px;
2548
+ }
2549
+
2550
+ .sw-date-range-actions {
2551
+ display: flex;
2552
+ gap: var(--sw-space-2);
2553
+ margin-inline-start: auto;
2554
+ }
2555
+
2556
+ .sw-date-range-months {
2557
+ display: flex;
2558
+ gap: var(--sw-space-5);
2559
+ justify-content: center;
2560
+ padding: var(--sw-space-3);
2561
+ }
2562
+
2563
+ .sw-date-range-month {
2564
+ display: flex;
2565
+ flex-direction: column;
2566
+ gap: var(--sw-space-1);
2567
+ }
2568
+
2569
+ .sw-date-range-month-header {
2570
+ align-items: center;
2571
+ display: grid;
2572
+ grid-template-columns: var(--sw-control-md-min-height) 1fr var(--sw-control-md-min-height);
2573
+ min-height: var(--sw-control-md-min-height);
2574
+ }
2575
+
2576
+ .sw-date-range-month-title {
2577
+ font-size: 15px;
2578
+ font-weight: 600;
2579
+ grid-column: 2;
2580
+ line-height: 20px;
2581
+ text-align: center;
2582
+ }
2583
+
2584
+ .sw-date-range-months .sw-date-field-day-in-range[aria-selected='true']:not(.sw-date-field-day-range-start, .sw-date-field-day-range-end) {
2585
+ background: color-mix(in srgb, var(--sw-color-accent) 16%, transparent);
2586
+ border-color: transparent;
2587
+ border-radius: 0;
2588
+ color: var(--sw-color-text);
2589
+ font-weight: inherit;
2590
+ }
2591
+
2592
+ .sw-date-range-months .sw-date-field-day-in-range[aria-selected='true']:not(.sw-date-field-day-range-start, .sw-date-field-day-range-end):hover:not([aria-disabled='true']) { background: color-mix(in srgb, var(--sw-color-accent) 24%, transparent); }
2593
+
2594
+ .sw-date-range-months .sw-date-field-day-in-range[aria-selected='true']:not(.sw-date-field-day-range-start, .sw-date-field-day-range-end)[aria-current='date'] { border-color: var(--sw-color-accent); }
2595
+
2596
+ .sw-date-range-sheet .sw-date-range-months { padding: 0; }
2597
+
2598
+ .sw-date-range-sheet .sw-dialog-footer-actions {
2599
+ flex: 1 1 100%;
2600
+ margin-inline-start: 0;
2601
+ }
2602
+
2603
+ .sw-date-range-sheet-footer {
2604
+ display: flex;
2605
+ flex: 1 1 100%;
2606
+ flex-direction: column;
2607
+ gap: var(--sw-space-2);
2608
+ }
2609
+
2610
+ .sw-date-range-sheet-footer .sw-date-range-hint {
2611
+ color: var(--sw-color-muted);
2612
+ font-size: 13px;
2613
+ line-height: 18px;
2614
+ }
2615
+
2616
+ .sw-date-range-sheet-footer .sw-date-range-actions {
2617
+ display: grid;
2618
+ grid-template-columns: 1fr 2fr;
2619
+ margin-inline-start: 0;
2620
+ }
2621
+
2622
+ .sw-date-range-presets {
2623
+ contain: inline-size;
2624
+ display: flex;
2625
+ flex-wrap: wrap;
2626
+ gap: var(--sw-space-1);
2627
+ padding: var(--sw-space-3) var(--sw-space-3) 0;
2628
+ }
2629
+
2630
+ @media (min-width: 64rem) {
2631
+ .sw-date-range-presets:not(.sw-date-range-presets-row) {
2632
+ border-inline-end: 1px solid var(--sw-color-border);
2633
+ contain: none;
2634
+ flex-direction: column;
2635
+ flex-wrap: nowrap;
2636
+ padding: var(--sw-space-3) var(--sw-space-2);
2637
+ }
2638
+ }
2639
+
2640
+ .sw-date-range-preset {
2641
+ appearance: none;
2642
+ background: transparent;
2643
+ border: 1px solid transparent;
2644
+ border-radius: var(--sw-radius-sm);
2645
+ box-sizing: border-box;
2646
+ color: var(--sw-color-text);
2647
+ cursor: pointer;
2648
+ flex: none;
2649
+ font-family: var(--sw-font-sans);
2650
+ font-size: 15px;
2651
+ font-weight: 400;
2652
+ line-height: 20px;
2653
+ margin: 0;
2654
+ min-height: var(--sw-control-sm-min-height);
2655
+ padding: 0 var(--sw-control-sm-padding-inline);
2656
+ text-align: start;
2657
+ white-space: nowrap;
2658
+ }
2659
+
2660
+ .sw-date-range-preset:hover,
2661
+ .sw-date-range-preset[aria-pressed='true'] {
2662
+ background: color-mix(in srgb, var(--sw-color-muted) 16%, transparent);
2663
+ }
2664
+
2665
+ .sw-date-range-preset[aria-pressed='true'] {
2666
+ font-weight: 600;
2667
+ }
2668
+
2669
+ .sw-date-range-preset:focus { outline: none; }
2670
+
2671
+ .sw-date-range-preset:focus-visible {
2672
+ outline: var(--sw-focus-ring-width) solid var(--sw-color-accent);
2673
+ outline-offset: var(--sw-focus-ring-offset);
2674
+ }
2675
+
2676
+ .sw-date-range-presets-row {
2677
+ contain: none;
2678
+ flex-wrap: nowrap;
2679
+ gap: var(--sw-space-2);
2680
+ overflow-x: auto;
2681
+ padding: var(--sw-focus-ring-width) var(--sw-focus-ring-offset);
2682
+ }
2683
+
2684
+ .sw-date-range-presets-row .sw-date-range-preset {
2685
+ background: color-mix(in srgb, var(--sw-color-muted) 16%, transparent);
2686
+ border-radius: var(--sw-radius-pill);
2687
+ }
2688
+
2689
+ .sw-date-range-presets-row .sw-date-range-preset[aria-pressed='true'] {
2690
+ background: var(--sw-color-text);
2691
+ color: var(--sw-color-surface);
2692
+ }
2693
+
2694
+ @media (pointer: coarse) {
2695
+ .sw-date-range-preset { min-height: var(--sw-control-md-min-height); }
2696
+ }
2697
+
2698
+ @media (forced-colors: active) {
2699
+ .sw-date-range-presets { border-color: CanvasText; }
2700
+ .sw-date-range-presets-row .sw-date-range-preset { border-color: ButtonText; }
2701
+ .sw-date-range-preset[aria-pressed='true'],
2702
+ .sw-date-range-presets-row .sw-date-range-preset[aria-pressed='true'] {
2703
+ background: Highlight;
2704
+ color: HighlightText;
2705
+ forced-color-adjust: none;
2706
+ }
2707
+ }
2708
+
2709
+ @media (forced-colors: active) {
2710
+ .sw-date-range-footer { border-top-color: CanvasText; }
2711
+ .sw-date-range-months .sw-date-field-day-in-range[aria-selected='true']:not(.sw-date-field-day-range-start, .sw-date-field-day-range-end),
2712
+ .sw-date-range-months .sw-date-field-day-in-range[aria-selected='true']:not(.sw-date-field-day-range-start, .sw-date-field-day-range-end):hover:not([aria-disabled='true']) {
2713
+ background: Mark;
2714
+ color: MarkText;
2715
+ forced-color-adjust: none;
2716
+ }
2717
+ }
2718
+
2719
+ .sw-list {
2720
+ list-style: none;
2721
+ margin: 0;
2722
+ padding: 0;
2723
+ }
2724
+
2725
+ .sw-list > .sw-list-item + .sw-list-item,
2726
+ .sw-list-group-plain .sw-list > .sw-list-item:first-child,
2727
+ .sw-list-group-footer {
2728
+ border-top: 1px solid var(--sw-color-border);
2729
+ }
2730
+
2731
+ .sw-list-group-panel {
2732
+ background: var(--sw-color-surface);
2733
+ border: 1px solid var(--sw-color-border);
2734
+ border-radius: var(--sw-radius-md);
2735
+ overflow: clip;
2736
+ }
2737
+
2738
+ .sw-list-group-scroll {
2739
+ overflow: auto;
2740
+ position: relative;
2741
+ width: 100%;
2742
+ }
2743
+
2744
+ .sw-list-group-scroll:focus-visible {
2745
+ outline: var(--sw-focus-ring-width) solid var(--sw-color-accent);
2746
+ outline-offset: calc(-1 * var(--sw-focus-ring-width));
2747
+ }
2748
+
2749
+ .sw-list-group-scroll.sw-scroll-more-start { box-shadow: inset var(--sw-space-6) 0 var(--sw-space-5) calc(-1 * var(--sw-space-5)) color-mix(in srgb, var(--sw-color-text) 28%, transparent); }
2750
+ .sw-list-group-scroll.sw-scroll-more-end { box-shadow: inset calc(-1 * var(--sw-space-6)) 0 var(--sw-space-5) calc(-1 * var(--sw-space-5)) color-mix(in srgb, var(--sw-color-text) 28%, transparent); }
2751
+ .sw-list-group-scroll.sw-scroll-more-start:dir(rtl) { box-shadow: inset calc(-1 * var(--sw-space-6)) 0 var(--sw-space-5) calc(-1 * var(--sw-space-5)) color-mix(in srgb, var(--sw-color-text) 28%, transparent); }
2752
+ .sw-list-group-scroll.sw-scroll-more-end:dir(rtl) { box-shadow: inset var(--sw-space-6) 0 var(--sw-space-5) calc(-1 * var(--sw-space-5)) color-mix(in srgb, var(--sw-color-text) 28%, transparent); }
2753
+ .sw-list-group-scroll.sw-scroll-more-start.sw-scroll-more-end { box-shadow: inset var(--sw-space-6) 0 var(--sw-space-5) calc(-1 * var(--sw-space-5)) color-mix(in srgb, var(--sw-color-text) 28%, transparent), inset calc(-1 * var(--sw-space-6)) 0 var(--sw-space-5) calc(-1 * var(--sw-space-5)) color-mix(in srgb, var(--sw-color-text) 28%, transparent); }
2754
+
2755
+ .sw-list-group-scroll {
2756
+ max-height: calc(var(--sw-list-max-rows) * (2 * var(--sw-space-3) + 20px + 18px + 1px));
2757
+ }
2758
+
2759
+ .sw-list-group-scroll.sw-scroll-more-top,
2760
+ .sw-list-group-scroll.sw-scroll-more-bottom {
2761
+ background-repeat: no-repeat;
2762
+ background-size: 100% var(--sw-space-5);
2763
+ }
2764
+
2765
+ .sw-list-group-scroll.sw-scroll-more-top {
2766
+ background-image: linear-gradient(to bottom, color-mix(in srgb, var(--sw-color-text) 28%, transparent), transparent);
2767
+ background-position: top;
2768
+ }
2769
+
2770
+ .sw-list-group-scroll.sw-scroll-more-bottom {
2771
+ background-image: linear-gradient(to top, color-mix(in srgb, var(--sw-color-text) 28%, transparent), transparent);
2772
+ background-position: bottom;
2773
+ }
2774
+
2775
+ .sw-list-group-scroll.sw-scroll-more-top.sw-scroll-more-bottom {
2776
+ background-image: linear-gradient(to bottom, color-mix(in srgb, var(--sw-color-text) 28%, transparent), transparent), linear-gradient(to top, color-mix(in srgb, var(--sw-color-text) 28%, transparent), transparent);
2777
+ background-position: top, bottom;
2778
+ }
2779
+
2780
+ @media (forced-colors: active) {
2781
+ .sw-list-group-scroll.sw-scroll-more-top,
2782
+ .sw-list-group-scroll.sw-scroll-more-bottom,
2783
+ .sw-list-group-scroll.sw-scroll-more-top.sw-scroll-more-bottom { background-image: none; }
2784
+ }
2785
+
2786
+ @media (forced-colors: active) {
2787
+ .sw-list > .sw-list-item + .sw-list-item,
2788
+ .sw-list-group-plain .sw-list > .sw-list-item:first-child,
2789
+ .sw-list-group-footer,
2790
+ .sw-list-group-panel { border-color: CanvasText; }
2791
+ }
2792
+
2793
+ @media print {
2794
+ .sw-list-group-scroll { max-height: none; }
2795
+ }
2796
+
2797
+ .sw-list-row {
2798
+ align-items: flex-start;
2799
+ appearance: none;
2800
+ background: transparent;
2801
+ border: 0;
2802
+ box-sizing: border-box;
2803
+ color: var(--sw-color-text);
2804
+ display: flex;
2805
+ font-family: var(--sw-font-sans);
2806
+ font-size: 15px;
2807
+ gap: var(--sw-space-3);
2808
+ line-height: 20px;
2809
+ margin: 0;
2810
+ padding: var(--sw-space-3) var(--sw-space-4);
2811
+ text-align: start;
2812
+ text-decoration: none;
2813
+ width: 100%;
2814
+ }
2815
+
2816
+ .sw-list-group-plain .sw-list-row { padding-inline: 0; }
2817
+
2818
+ .sw-list-row-pressable { cursor: pointer; }
2819
+
2820
+ @media (hover: hover) {
2821
+ .sw-list-row-pressable:hover:not(.sw-list-row-disabled) { background: color-mix(in srgb, var(--sw-color-muted) 16%, transparent); }
2822
+ }
2823
+
2824
+ .sw-list-row-pressable:active:not(.sw-list-row-disabled) { background: color-mix(in srgb, var(--sw-color-muted) 16%, transparent); }
2825
+
2826
+ .sw-list-row-pressable:focus { outline: none; }
2827
+
2828
+ .sw-list-row-pressable:focus-visible {
2829
+ outline: var(--sw-focus-ring-width) solid var(--sw-color-accent);
2830
+ outline-offset: calc(-1 * var(--sw-focus-ring-width));
2831
+ }
2832
+
2833
+ /* A link row keeps the text colour and the inset ring over the canvas link rules. */
2834
+ [data-theme] a.sw-list-row,
2835
+ [data-theme] a.sw-list-row:hover {
2836
+ color: var(--sw-color-text);
2837
+ }
2838
+
2839
+ [data-theme] a.sw-list-row:focus-visible {
2840
+ outline-offset: calc(-1 * var(--sw-focus-ring-width));
2841
+ }
2842
+
2843
+ .sw-list-row-disabled {
2844
+ cursor: not-allowed;
2845
+ opacity: var(--sw-disabled-opacity);
2846
+ }
2847
+
2848
+ @media (pointer: coarse) {
2849
+ .sw-list-row-pressable { min-height: var(--sw-control-md-min-height); }
2850
+ }
2851
+
2852
+ /* Forced colours drop the fill, so a hovered row is outlined instead, as a pressable table row is. */
2853
+ @media (forced-colors: active) {
2854
+ .sw-list-row-pressable:hover:not(.sw-list-row-disabled) {
2855
+ outline: var(--sw-focus-ring-width) solid Highlight;
2856
+ outline-offset: calc(-1 * var(--sw-focus-ring-width));
2857
+ }
2858
+ }
2859
+
2860
+ .sw-list-row-leading {
2861
+ align-items: center;
2862
+ display: flex;
2863
+ flex: none;
2864
+ height: 20px;
2865
+ }
2866
+
2867
+ .sw-list-row-label,
2868
+ .sw-list-row-end {
2869
+ display: flex;
2870
+ flex-direction: column;
2871
+ min-width: 0;
2872
+ }
2873
+
2874
+ .sw-list-row-label { flex: 1 1 auto; }
2875
+
2876
+ .sw-list-row-end {
2877
+ align-items: flex-end;
2878
+ flex: none;
2879
+ max-width: 50%;
2880
+ text-align: end;
2881
+ }
2882
+
2883
+ .sw-list-row-title {
2884
+ font-weight: 600;
2885
+ overflow-wrap: anywhere;
2886
+ }
2887
+
2888
+ .sw-list-row-title-plain { font-weight: 400; }
2889
+
2890
+ .sw-list-row-title-danger { color: var(--sw-color-danger); }
2891
+
2892
+ .sw-list-row-detail,
2893
+ .sw-list-row-value-detail {
2894
+ color: var(--sw-color-muted);
2895
+ font-size: 13px;
2896
+ line-height: 18px;
2897
+ }
2898
+
2899
+ /* The label takes the wrap; the end keeps its words whole up to half the row. */
2900
+ .sw-list-row-detail { overflow-wrap: anywhere; }
2901
+
2902
+ .sw-list-row-value,
2903
+ .sw-list-row-value-detail { font-variant-numeric: tabular-nums; }
2904
+
2905
+ .sw-list-row-value { font-weight: 600; }
2906
+
2907
+ .sw-list-row-value-success { color: var(--sw-color-success); }
2908
+ .sw-list-row-value-danger { color: var(--sw-color-danger); }
2909
+ .sw-list-row-value-muted { color: var(--sw-color-muted); }
2910
+ .sw-list-row-value-accent { color: var(--sw-color-accent); }
2911
+ .sw-list-row-value-warning { color: color-mix(in srgb, var(--sw-color-warning) 50%, var(--sw-color-text)); }
2912
+
2913
+ .sw-list-row-chevron {
2914
+ border-bottom: 2px solid var(--sw-color-muted);
2915
+ border-right: 2px solid var(--sw-color-muted);
2916
+ box-sizing: border-box;
2917
+ height: var(--sw-space-2);
2918
+ width: var(--sw-space-2);
2919
+ flex: none;
2920
+ margin-block-start: calc((20px - var(--sw-space-2)) / 2);
2921
+ margin-inline-end: var(--sw-space-1);
2922
+ transform: rotate(-45deg);
2923
+ }
2924
+
2925
+ .sw-list-row-chevron:dir(rtl) { transform: rotate(135deg); }
2926
+
2927
+ .sw-list-row-check {
2928
+ border-bottom: 2px solid var(--sw-color-accent);
2929
+ border-right: 2px solid var(--sw-color-accent);
2930
+ box-sizing: border-box;
2391
2931
  flex: none;
2392
- padding-inline: 0;
2932
+ height: var(--sw-space-3);
2933
+ margin-block-start: calc((20px - var(--sw-space-3)) / 2);
2934
+ margin-inline-end: var(--sw-space-1);
2935
+ transform: rotate(45deg);
2936
+ width: var(--sw-space-2);
2393
2937
  }
2394
2938
 
2395
- .sw-button-xs.sw-calendar-button { min-width: var(--sw-control-xs-min-height); }
2396
- .sw-button-sm.sw-calendar-button { min-width: var(--sw-control-sm-min-height); }
2397
- .sw-button-md.sw-calendar-button { min-width: var(--sw-control-md-min-height); }
2939
+ @media (forced-colors: active) {
2940
+ .sw-list-row-check { border-color: CanvasText; }
2941
+ }
2398
2942
 
2399
- @media (pointer: coarse) {
2400
- .sw-button.sw-calendar-button {
2401
- min-height: var(--sw-control-md-min-height);
2402
- min-width: var(--sw-control-md-min-height);
2403
- }
2943
+ [data-theme] .sw-section-nav-count,
2944
+ [data-theme] .sw-nav-count {
2945
+ align-items: center;
2946
+ background: var(--sw-color-danger);
2947
+ border-radius: var(--sw-radius-pill);
2948
+ box-sizing: border-box;
2949
+ color: var(--sw-color-onDanger);
2950
+ display: inline-flex;
2951
+ font-size: 13px;
2952
+ font-variant-numeric: tabular-nums;
2953
+ font-weight: 700;
2954
+ justify-content: center;
2955
+ letter-spacing: -0.08px;
2956
+ line-height: 1;
2957
+ min-height: calc(var(--sw-space-5) - var(--sw-space-1));
2958
+ min-width: calc(var(--sw-space-5) - var(--sw-space-1));
2959
+ padding-inline: var(--sw-space-1);
2404
2960
  }
2405
2961
 
2406
- .sw-calendar-button:not(.sw-button-md) .sw-date-field-glyph {
2407
- height: var(--sw-space-4);
2408
- width: var(--sw-space-4);
2962
+ /*
2963
+ * A Nav link holding a count lays out as SectionNav's link does: the words
2964
+ * and the pill centred on one line a space-2 apart (the space text node
2965
+ * that keeps the name collapses), so the link is as tall as its siblings
2966
+ * and its words stay level with theirs. A Button already does this. At
2967
+ * zero specificity, so a link's `hideBelow` or `hideFrom` still hides it.
2968
+ * In forced colours a current link's underline runs under the pill's
2969
+ * figure too, as the pill is a flex item of the link.
2970
+ */
2971
+ :where(.sw-nav a:has(> .sw-nav-count)) {
2972
+ align-items: center;
2973
+ display: inline-flex;
2974
+ gap: var(--sw-space-2);
2975
+ }
2976
+
2977
+ @media (forced-colors: active) {
2978
+ [data-theme] .sw-section-nav-count,
2979
+ [data-theme] .sw-nav-count { border: 1px solid CanvasText; }
2409
2980
  }
2410
2981
 
2411
2982
  .sw-bar-chart {
@@ -2467,6 +3038,7 @@ body {
2467
3038
  .sw-bar-chart-fill-success { background: var(--sw-color-success); }
2468
3039
  .sw-bar-chart-fill-warning { background: var(--sw-color-warning); }
2469
3040
  .sw-bar-chart-fill-danger { background: var(--sw-color-danger); }
3041
+ .sw-bar-chart-fill-neutral { background: var(--sw-color-muted); }
2470
3042
 
2471
3043
  .sw-bar-chart-value {
2472
3044
  color: var(--sw-color-text);
@@ -2525,6 +3097,16 @@ body {
2525
3097
  .sw-bar-chart-diverging .sw-bar-chart-track::before { background: CanvasText; }
2526
3098
  }
2527
3099
 
3100
+ .sw-bar-chart-bare .sw-bar-chart-track {
3101
+ background: transparent;
3102
+ border-color: transparent;
3103
+ }
3104
+
3105
+ /* Forced colours replace a transparent edge; the canvas colour hides it. */
3106
+ @media (forced-colors: active) {
3107
+ .sw-bar-chart-bare .sw-bar-chart-track { border-color: Canvas; }
3108
+ }
3109
+
2528
3110
  @media (forced-colors: active) {
2529
3111
  .sw-bar-chart-fill { background: CanvasText; }
2530
3112
  }
@@ -3041,31 +3623,12 @@ body {
3041
3623
  font-weight: 600;
3042
3624
  }
3043
3625
 
3044
- [data-theme] .sw-section-nav-count {
3045
- align-items: center;
3046
- background: var(--sw-color-danger);
3047
- border-radius: var(--sw-radius-pill);
3048
- box-sizing: border-box;
3049
- color: var(--sw-color-onDanger);
3050
- display: inline-flex;
3051
- font-size: 13px;
3052
- font-variant-numeric: tabular-nums;
3053
- font-weight: 700;
3054
- justify-content: center;
3055
- letter-spacing: -0.08px;
3056
- line-height: 1;
3057
- min-height: calc(var(--sw-space-5) - var(--sw-space-1));
3058
- min-width: calc(var(--sw-space-5) - var(--sw-space-1));
3059
- padding-inline: var(--sw-space-1);
3060
- }
3061
-
3062
3626
  @media (pointer: coarse) {
3063
3627
  [data-theme] .sw-section-nav.sw-section-nav-filled .sw-section-nav-link { min-height: var(--sw-control-md-min-height); }
3064
3628
  }
3065
3629
 
3066
3630
  @media (forced-colors: active) {
3067
3631
  [data-theme] .sw-section-nav.sw-section-nav-filled .sw-section-nav-link[aria-current] { border-color: Highlight; }
3068
- [data-theme] .sw-section-nav-count { border: 1px solid CanvasText; }
3069
3632
  }
3070
3633
 
3071
3634
  @media (pointer: coarse) {
@@ -3226,13 +3789,27 @@ body {
3226
3789
 
3227
3790
  .sw-dialog-footer-status {
3228
3791
  align-items: center;
3792
+ column-gap: var(--sw-space-2);
3229
3793
  display: flex;
3230
3794
  flex: 1 1 auto;
3795
+ flex-wrap: wrap;
3796
+ min-width: 0;
3797
+ }
3798
+
3799
+ /* The status line: muted caption words beside the actions. Its children
3800
+ sit on one row and wrap as one phrase. */
3801
+ .sw-dialog-footer-note {
3802
+ color: var(--sw-color-muted);
3803
+ font-family: var(--sw-font-sans);
3804
+ font-size: 13px;
3805
+ line-height: 18px;
3231
3806
  min-width: 0;
3807
+ overflow-wrap: anywhere;
3232
3808
  }
3233
3809
 
3234
- /* With no summary the live region stays in the dialog, so a first figure
3235
- is still announced, but it takes no room in the footer. */
3810
+ /* With no figure and no status line the live region stays in the
3811
+ dialog, so a first figure is still announced, but it takes no room in
3812
+ the footer. */
3236
3813
  .sw-dialog-footer-status:empty {
3237
3814
  clip-path: inset(50%);
3238
3815
  height: 1px;
@@ -3300,6 +3877,36 @@ body {
3300
3877
  .sw-dialog-banded .sw-dialog-header { border-bottom-color: CanvasText; }
3301
3878
  }
3302
3879
 
3880
+ .sw-dialog.sw-dialog-canvas-grouped {
3881
+ backdrop-filter: none;
3882
+ -webkit-backdrop-filter: none;
3883
+ background: var(--sw-canvas-grouped);
3884
+ }
3885
+
3886
+ .sw-dialog-grabber { display: none; }
3887
+
3888
+ @media not all and (min-width: 48rem) {
3889
+ .sw-dialog-sheet-below-md .sw-dialog-grabber {
3890
+ background: color-mix(in srgb, var(--sw-color-muted) 40%, transparent);
3891
+ border-radius: var(--sw-radius-pill);
3892
+ display: block;
3893
+ height: var(--sw-space-1);
3894
+ margin: calc(var(--sw-space-2) - var(--sw-space-5)) auto var(--sw-space-3);
3895
+ position: sticky;
3896
+ top: calc(var(--sw-space-2) - var(--sw-space-5));
3897
+ width: var(--sw-space-6);
3898
+ z-index: 6;
3899
+ }
3900
+
3901
+ .sw-dialog-sheet-below-md.sw-dialog-banded.sw-dialog-has-grabber .sw-dialog-header {
3902
+ padding-top: var(--sw-space-5);
3903
+ }
3904
+
3905
+ @media (forced-colors: active) {
3906
+ .sw-dialog-sheet-below-md .sw-dialog-grabber { background: CanvasText; forced-color-adjust: none; }
3907
+ }
3908
+ }
3909
+
3303
3910
  .sw-accordion {
3304
3911
  background: var(--sw-glass-fill);
3305
3912
  border: 1px solid var(--sw-glass-border);
@@ -4188,6 +4795,29 @@ body {
4188
4795
  line-height: 18px;
4189
4796
  }
4190
4797
 
4798
+ .sw-switch-trailing {
4799
+ align-items: flex-start;
4800
+ display: flex;
4801
+ gap: var(--sw-space-3);
4802
+ justify-content: space-between;
4803
+ width: 100%;
4804
+ }
4805
+
4806
+ .sw-switch-trailing .sw-switch-copy {
4807
+ flex: 1 1 auto;
4808
+ min-width: 0;
4809
+ padding-block: calc((var(--sw-control-md-min-height) - 20px) / 2);
4810
+ }
4811
+
4812
+ .sw-switch-success .sw-switch-input:checked + .sw-switch-track {
4813
+ background: var(--sw-color-success);
4814
+ border-color: var(--sw-color-success);
4815
+ }
4816
+
4817
+ @media (forced-colors: active) {
4818
+ .sw-switch-success .sw-switch-input:checked + .sw-switch-track { background: Highlight; border-color: Highlight; }
4819
+ }
4820
+
4191
4821
  @media (prefers-reduced-motion: reduce) {
4192
4822
  .sw-switch-thumb { transition: none; }
4193
4823
  }
@@ -4547,6 +5177,15 @@ body {
4547
5177
  overflow-wrap: anywhere;
4548
5178
  }
4549
5179
 
5180
+ /* A plain tile is its figure alone, top-aligned, inside the card around it. */
5181
+ .sw-stat-tile-plain {
5182
+ align-items: flex-start;
5183
+ background: transparent;
5184
+ border: 0;
5185
+ border-radius: 0;
5186
+ padding: 0;
5187
+ }
5188
+
4550
5189
  .sw-stat-tile-primary {
4551
5190
  background: var(--sw-color-accent);
4552
5191
  border-color: transparent;
@@ -4807,6 +5446,28 @@ body {
4807
5446
  border-color: var(--sw-color-danger);
4808
5447
  }
4809
5448
 
5449
+ .sw-filter-chip-count-inline {
5450
+ font-variant-numeric: tabular-nums;
5451
+ }
5452
+
5453
+ .sw-filter-chips-scroll .sw-filter-chips-options {
5454
+ flex-wrap: nowrap;
5455
+ margin: calc(-1 * calc(var(--sw-focus-ring-width) + var(--sw-focus-ring-offset)));
5456
+ overflow-x: auto;
5457
+ overscroll-behavior-x: contain;
5458
+ padding: calc(var(--sw-focus-ring-width) + var(--sw-focus-ring-offset));
5459
+ scrollbar-width: thin;
5460
+ }
5461
+
5462
+ .sw-filter-chips-scroll .sw-filter-chip {
5463
+ flex: none;
5464
+ max-width: none;
5465
+ }
5466
+
5467
+ .sw-filter-chips-scroll .sw-filter-chip-face {
5468
+ white-space: nowrap;
5469
+ }
5470
+
4810
5471
  @media (forced-colors: active) {
4811
5472
  .sw-filter-chip-face { background: Canvas; border-color: CanvasText; color: CanvasText; }
4812
5473
  .sw-filter-chips-error { color: Mark; }
@@ -5384,6 +6045,146 @@ body {
5384
6045
  .sw-denomination-strip .sw-denomination-value-row .sw-denomination-value { color: CanvasText; }
5385
6046
  }
5386
6047
 
6048
+ .sw-denomination-transposed {
6049
+ border-collapse: collapse;
6050
+ width: 100%;
6051
+ }
6052
+
6053
+ .sw-denomination-transposed th,
6054
+ .sw-denomination-transposed td {
6055
+ padding: var(--sw-space-1) var(--sw-space-2);
6056
+ vertical-align: middle;
6057
+ }
6058
+
6059
+ .sw-denomination-transposed tbody tr,
6060
+ .sw-denomination-transposed tfoot tr {
6061
+ border-top: 1px solid var(--sw-color-border);
6062
+ }
6063
+
6064
+ .sw-denomination-transposed .sw-denomination-transposed-head {
6065
+ vertical-align: bottom;
6066
+ white-space: nowrap;
6067
+ }
6068
+
6069
+ .sw-denomination-transposed .sw-denomination-label-line {
6070
+ justify-content: flex-end;
6071
+ }
6072
+
6073
+ .sw-denomination-transposed-label {
6074
+ color: var(--sw-color-text);
6075
+ font-size: 15px;
6076
+ font-weight: 600;
6077
+ letter-spacing: -0.2px;
6078
+ line-height: 20px;
6079
+ text-align: start;
6080
+ white-space: nowrap;
6081
+ }
6082
+
6083
+ .sw-denomination-transposed td.sw-denomination-entry {
6084
+ padding: var(--sw-space-1);
6085
+ }
6086
+
6087
+ .sw-denomination-transposed-entry .sw-denomination-transposed-head,
6088
+ .sw-denomination-transposed-entry .sw-denomination-cell {
6089
+ text-align: center;
6090
+ }
6091
+
6092
+ .sw-denomination-transposed-entry .sw-denomination-label-line {
6093
+ justify-content: center;
6094
+ }
6095
+
6096
+ .sw-denomination-transposed-value {
6097
+ background: var(--sw-color-subtle);
6098
+ font-size: 15px;
6099
+ font-variant-numeric: tabular-nums;
6100
+ font-weight: 500;
6101
+ letter-spacing: -0.2px;
6102
+ line-height: 20px;
6103
+ text-align: center;
6104
+ white-space: nowrap;
6105
+ }
6106
+
6107
+ .sw-denomination-transposed-total {
6108
+ color: var(--sw-denomination-tone);
6109
+ font-size: 13px;
6110
+ font-variant-numeric: tabular-nums;
6111
+ font-weight: 600;
6112
+ letter-spacing: -0.08px;
6113
+ line-height: 18px;
6114
+ text-align: end;
6115
+ white-space: nowrap;
6116
+ }
6117
+
6118
+ .sw-denomination-transposed-entry .sw-denomination-transposed-total {
6119
+ text-align: center;
6120
+ }
6121
+
6122
+ /* The denomination column and its corner stay in view, as the strip's labels do. */
6123
+ .sw-denomination-transposed .sw-denomination-transposed-label,
6124
+ .sw-denomination-transposed :is(thead, tfoot) .sw-denomination-corner:first-child {
6125
+ background: var(--sw-glass-fill);
6126
+ backdrop-filter: blur(var(--sw-glass-blur)) saturate(var(--sw-glass-saturate));
6127
+ -webkit-backdrop-filter: blur(var(--sw-glass-blur)) saturate(var(--sw-glass-saturate));
6128
+ inset-inline-start: 0;
6129
+ position: sticky;
6130
+ z-index: 1;
6131
+ }
6132
+
6133
+ .sw-denomination-scroll-transposed.sw-scroll-more-start .sw-denomination-transposed-label::after {
6134
+ background: linear-gradient(to right, color-mix(in srgb, var(--sw-color-text) 28%, transparent), transparent);
6135
+ content: '';
6136
+ inset-block: 0;
6137
+ inset-inline-start: 100%;
6138
+ pointer-events: none;
6139
+ position: absolute;
6140
+ width: var(--sw-space-5);
6141
+ }
6142
+
6143
+ .sw-denomination-scroll-transposed.sw-scroll-more-start:dir(rtl) .sw-denomination-transposed-label::after {
6144
+ background: linear-gradient(to left, color-mix(in srgb, var(--sw-color-text) 28%, transparent), transparent);
6145
+ }
6146
+
6147
+ @media (forced-colors: active) {
6148
+ .sw-denomination-scroll-transposed.sw-scroll-more-start .sw-denomination-transposed-label::after { display: none; }
6149
+ }
6150
+
6151
+ .sw-denomination-transposed-quiet {
6152
+ background: var(--sw-color-subtle);
6153
+ }
6154
+
6155
+ /* Over a toned count's full strength (three classes, emitted later). */
6156
+ .sw-denomination-grid.sw-denomination-transposed .sw-denomination-transposed-disabled:is(.sw-denomination-cell, .sw-denomination-transposed-value, .sw-denomination-transposed-total, .sw-denomination-transposed-head) {
6157
+ opacity: var(--sw-disabled-opacity);
6158
+ }
6159
+
6160
+ @media (forced-colors: active) {
6161
+ .sw-denomination-transposed-value,
6162
+ .sw-denomination-transposed-quiet { background: Canvas; }
6163
+ .sw-denomination-transposed-label,
6164
+ .sw-denomination-transposed-value,
6165
+ .sw-denomination-transposed-total { color: CanvasText; }
6166
+ }
6167
+
6168
+ .sw-denomination-cell-signed.sw-denomination-cell-positive {
6169
+ color: var(--sw-color-success);
6170
+ }
6171
+
6172
+ .sw-denomination-cell-negative.sw-denomination-cell-plain {
6173
+ color: var(--sw-color-text);
6174
+ }
6175
+
6176
+ .sw-denomination-count-digits .sw-denomination-entry .sw-stepper-full .sw-stepper-track {
6177
+ font-size: 17px;
6178
+ font-variant-numeric: tabular-nums;
6179
+ font-weight: 600;
6180
+ grid-template-columns: var(--sw-space-6) minmax(calc(var(--sw-denomination-count-digits) * 1ch + 2 * var(--sw-space-1) + 2px), 1fr) var(--sw-space-6);
6181
+ }
6182
+
6183
+ @media (forced-colors: active) {
6184
+ .sw-denomination-cell-signed.sw-denomination-cell-positive,
6185
+ .sw-denomination-cell-negative.sw-denomination-cell-plain { color: CanvasText; }
6186
+ }
6187
+
5387
6188
  @media (forced-colors: active) {
5388
6189
  .sw-denomination-label { border-inline-start-color: CanvasText; color: CanvasText; }
5389
6190
  .sw-denomination-strip .sw-denomination-label::before { background: CanvasText; forced-color-adjust: none; }
@@ -5612,6 +6413,27 @@ body {
5612
6413
  linear-gradient(135deg, var(--sw-color-muted) 50%, transparent 50%); }
5613
6414
  }
5614
6415
 
6416
+ .sw-field-width-xs { --sw-field-width: 4rem; }
6417
+ .sw-field-width-sm { --sw-field-width: 6rem; }
6418
+ .sw-field-width-md { --sw-field-width: 8rem; }
6419
+ .sw-field-width-lg { --sw-field-width: 12rem; }
6420
+ .sw-field-width-xl { --sw-field-width: 16rem; }
6421
+
6422
+ .sw-field-sized > :is(input[type='text'], input[type='email'], input[type='number'], input[type='search'], input[type='url'], input[type='password'], input:not([type]), textarea, select, .sw-field-adorned, .sw-field-search) {
6423
+ align-self: flex-start;
6424
+ box-sizing: border-box;
6425
+ inline-size: min(100%, var(--sw-field-width));
6426
+ max-inline-size: 100%;
6427
+ }
6428
+
6429
+ [data-theme] .sw-field-sized > select {
6430
+ height: var(--sw-control-md-min-height);
6431
+ }
6432
+
6433
+ [data-theme] .sw-field-xs.sw-field-sized > select {
6434
+ height: var(--sw-control-xs-min-height);
6435
+ }
6436
+
5615
6437
  @media (forced-colors: active) {
5616
6438
  [data-theme] .sw-field-invalid :is(input, select, textarea),
5617
6439
  .sw-field-invalid .sw-field-adorned { border-color: Mark; }