@scalewing/react 1.39.0 → 1.40.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 (95) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/README.md +102 -0
  3. package/dist/calendar-month.d.ts +6 -0
  4. package/dist/calendar-month.js +15 -0
  5. package/dist/components/DateRangeButton.d.ts +65 -0
  6. package/dist/components/DateRangeButton.js +54 -0
  7. package/dist/components/ListGroup.d.ts +33 -0
  8. package/dist/components/ListGroup.js +19 -0
  9. package/dist/components/ListRow.d.ts +51 -0
  10. package/dist/components/ListRow.js +59 -0
  11. package/dist/components/NavCount.d.ts +21 -0
  12. package/dist/components/NavCount.js +23 -0
  13. package/dist/components/SectionNav.js +1 -8
  14. package/dist/components/StatTile.d.ts +11 -4
  15. package/dist/components/StatTile.js +11 -4
  16. package/dist/components/{date-field → calendar}/CalendarGrid.d.ts +17 -2
  17. package/dist/components/{date-field → calendar}/CalendarGrid.js +11 -3
  18. package/dist/components/calendar/CalendarPopover.d.ts +25 -0
  19. package/dist/components/calendar/CalendarPopover.js +22 -0
  20. package/dist/components/calendar/MonthStep.d.ts +16 -0
  21. package/dist/components/calendar/MonthStep.js +17 -0
  22. package/dist/components/calendar/use-grid-focus.d.ts +18 -0
  23. package/dist/components/calendar/use-grid-focus.js +35 -0
  24. package/dist/components/calendar/wrap-tab.d.ts +7 -0
  25. package/dist/components/calendar/wrap-tab.js +29 -0
  26. package/dist/components/date-field/CalendarDialog.js +9 -67
  27. package/dist/components/date-field/CalendarHeader.js +2 -11
  28. package/dist/components/date-range/DateRangePopover.d.ts +7 -0
  29. package/dist/components/date-range/DateRangePopover.js +17 -0
  30. package/dist/components/date-range/DateRangeSheet.d.ts +7 -0
  31. package/dist/components/date-range/DateRangeSheet.js +15 -0
  32. package/dist/components/date-range/RangeMonths.d.ts +28 -0
  33. package/dist/components/date-range/RangeMonths.js +50 -0
  34. package/dist/components/date-range/RangePresets.d.ts +16 -0
  35. package/dist/components/date-range/RangePresets.js +10 -0
  36. package/dist/components/date-range/RangeSummary.d.ts +15 -0
  37. package/dist/components/date-range/RangeSummary.js +11 -0
  38. package/dist/components/date-range/range-panel-props.d.ts +31 -0
  39. package/dist/components/date-range/range-panel-props.js +1 -0
  40. package/dist/components/date-range/use-range-popup.d.ts +21 -0
  41. package/dist/components/date-range/use-range-popup.js +53 -0
  42. package/dist/components/link-press.d.ts +7 -0
  43. package/dist/components/link-press.js +13 -0
  44. package/dist/components/list/ListRowAccessoryMark.d.ts +5 -0
  45. package/dist/components/list/ListRowAccessoryMark.js +7 -0
  46. package/dist/components/list/ListRowContent.d.ts +20 -0
  47. package/dist/components/list/ListRowContent.js +10 -0
  48. package/dist/components/list/list-row-container.d.ts +5 -0
  49. package/dist/components/list/list-row-container.js +6 -0
  50. package/dist/components/use-media-query.d.ts +5 -0
  51. package/dist/components/use-media-query.js +18 -0
  52. package/dist/css/chevron.d.ts +6 -0
  53. package/dist/css/chevron.js +14 -0
  54. package/dist/css/css-button-group-attached.js +8 -4
  55. package/dist/css/css-button-group-track.js +1 -1
  56. package/dist/css/css-checkbox.js +2 -2
  57. package/dist/css/css-components.js +9 -0
  58. package/dist/css/css-count-pill.d.ts +2 -0
  59. package/dist/css/css-count-pill.js +54 -0
  60. package/dist/css/css-date-field.js +3 -2
  61. package/dist/css/css-date-range-presets.d.ts +2 -0
  62. package/dist/css/css-date-range-presets.js +109 -0
  63. package/dist/css/css-date-range.d.ts +2 -0
  64. package/dist/css/css-date-range.js +197 -0
  65. package/dist/css/css-list-row.d.ts +2 -0
  66. package/dist/css/css-list-row.js +193 -0
  67. package/dist/css/css-list.d.ts +3 -0
  68. package/dist/css/css-list.js +85 -0
  69. package/dist/css/css-scroll-region.d.ts +18 -0
  70. package/dist/css/css-scroll-region.js +41 -0
  71. package/dist/css/css-section-nav-filled.js +2 -25
  72. package/dist/css/css-stat-tile.d.ts +7 -0
  73. package/dist/css/css-stat-tile.js +16 -0
  74. package/dist/css/css-steps.js +2 -2
  75. package/dist/css/css-table-bounded-edges.js +4 -27
  76. package/dist/css/range-band.d.ts +2 -0
  77. package/dist/css/range-band.js +7 -0
  78. package/dist/css/stacking.js +2 -2
  79. package/dist/css/stylesheet.js +6 -0
  80. package/dist/date-range-draft.d.ts +26 -0
  81. package/dist/date-range-draft.js +36 -0
  82. package/dist/date-range-input.d.ts +26 -0
  83. package/dist/date-range-input.js +58 -0
  84. package/dist/date-range-labels.d.ts +22 -0
  85. package/dist/date-range-labels.js +26 -0
  86. package/dist/date-range-view.d.ts +12 -0
  87. package/dist/date-range-view.js +29 -0
  88. package/dist/date-range-words.d.ts +11 -0
  89. package/dist/date-range-words.js +40 -0
  90. package/dist/index.d.ts +6 -1
  91. package/dist/index.js +6 -1
  92. package/dist/list-options.d.ts +70 -0
  93. package/dist/list-options.js +77 -0
  94. package/dist/styles.css +507 -26
  95. package/package.json +1 -1
package/dist/styles.css CHANGED
@@ -970,21 +970,21 @@ body {
970
970
  border-radius: 0;
971
971
  }
972
972
 
973
- .sw-button-group.sw-button-group-attached > .sw-button + .sw-button {
973
+ .sw-button-group.sw-button-group-attached > .sw-button ~ .sw-button {
974
974
  margin-inline-start: -1px;
975
975
  }
976
976
 
977
- .sw-button-group.sw-button-group-attached > .sw-button:first-child {
977
+ .sw-button-group.sw-button-group-attached > .sw-button:first-of-type {
978
978
  border-end-start-radius: var(--sw-radius-sm);
979
979
  border-start-start-radius: var(--sw-radius-sm);
980
980
  }
981
981
 
982
- .sw-button-group.sw-button-group-attached > .sw-button:last-child {
982
+ .sw-button-group.sw-button-group-attached > .sw-button:last-of-type {
983
983
  border-end-end-radius: var(--sw-radius-sm);
984
984
  border-start-end-radius: var(--sw-radius-sm);
985
985
  }
986
986
 
987
- .sw-button-group.sw-button-group-attached > .sw-button + .sw-button:not(.sw-button-secondary) {
987
+ .sw-button-group.sw-button-group-attached > .sw-button ~ .sw-button:not(.sw-button-secondary) {
988
988
  border-inline-start-color: color-mix(in srgb, currentColor 30%, transparent);
989
989
  }
990
990
 
@@ -1014,7 +1014,7 @@ body {
1014
1014
  color: var(--sw-color-text);
1015
1015
  }
1016
1016
 
1017
- .sw-button-group.sw-button-group-attached.sw-button-group-track > .sw-button + .sw-button {
1017
+ .sw-button-group.sw-button-group-attached.sw-button-group-track > .sw-button ~ .sw-button {
1018
1018
  border-inline-start-color: var(--sw-color-border);
1019
1019
  }
1020
1020
 
@@ -1952,13 +1952,16 @@ body {
1952
1952
  }
1953
1953
 
1954
1954
  @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
1955
  .sw-table-bounded.sw-scroll-more-top:not(:has(> .sw-table > thead)),
1958
1956
  .sw-table-bounded.sw-scroll-more-bottom:not(:has(> .sw-table > .sw-table-footer-sticky)),
1959
1957
  .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
1958
  }
1961
1959
 
1960
+ @media (forced-colors: active) {
1961
+ .sw-table-bounded.sw-scroll-more-top > .sw-table-sticky > thead > tr:last-child > :is(th, td)::before,
1962
+ .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; }
1963
+ }
1964
+
1962
1965
  .sw-table-bounded:focus-visible > .sw-table-sticky > thead > tr > :is(th, td),
1963
1966
  .sw-table-bounded:focus-visible > .sw-table > .sw-table-footer-sticky > tr > :is(th, td) {
1964
1967
  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);
@@ -2408,6 +2411,494 @@ body {
2408
2411
  width: var(--sw-space-4);
2409
2412
  }
2410
2413
 
2414
+ .sw-date-range-button {
2415
+ font-variant-numeric: tabular-nums;
2416
+ white-space: nowrap;
2417
+ }
2418
+
2419
+ .sw-date-range-button:not(.sw-button-md) .sw-date-field-glyph {
2420
+ height: var(--sw-space-4);
2421
+ width: var(--sw-space-4);
2422
+ }
2423
+
2424
+ @media (pointer: coarse) {
2425
+ .sw-button.sw-date-range-button,
2426
+ .sw-date-range-actions > .sw-button { min-height: var(--sw-control-md-min-height); }
2427
+ }
2428
+
2429
+ .sw-date-field-calendar.sw-date-range-popover {
2430
+ gap: 0;
2431
+ padding: 0;
2432
+ }
2433
+
2434
+ .sw-date-range-body {
2435
+ display: flex;
2436
+ flex-direction: column;
2437
+ }
2438
+
2439
+ @media (min-width: 64rem) {
2440
+ .sw-date-range-body { flex-direction: row; }
2441
+ }
2442
+
2443
+ .sw-date-range-footer {
2444
+ align-items: center;
2445
+ border-top: 1px solid var(--sw-color-border);
2446
+ contain: inline-size;
2447
+ display: flex;
2448
+ flex-wrap: wrap;
2449
+ gap: var(--sw-space-2) var(--sw-space-4);
2450
+ padding: var(--sw-space-3);
2451
+ }
2452
+
2453
+ .sw-date-range-summary {
2454
+ color: var(--sw-color-muted);
2455
+ flex: 1 1 auto;
2456
+ font-size: 13px;
2457
+ line-height: 18px;
2458
+ min-width: 0;
2459
+ }
2460
+
2461
+ .sw-date-range-status { display: inline; }
2462
+
2463
+ .sw-date-range-line {
2464
+ color: var(--sw-color-text);
2465
+ display: block;
2466
+ font-size: 15px;
2467
+ font-weight: 600;
2468
+ line-height: 20px;
2469
+ }
2470
+
2471
+ .sw-date-range-actions {
2472
+ display: flex;
2473
+ gap: var(--sw-space-2);
2474
+ margin-inline-start: auto;
2475
+ }
2476
+
2477
+ .sw-date-range-months {
2478
+ display: flex;
2479
+ gap: var(--sw-space-5);
2480
+ justify-content: center;
2481
+ padding: var(--sw-space-3);
2482
+ }
2483
+
2484
+ .sw-date-range-month {
2485
+ display: flex;
2486
+ flex-direction: column;
2487
+ gap: var(--sw-space-1);
2488
+ }
2489
+
2490
+ .sw-date-range-month-header {
2491
+ align-items: center;
2492
+ display: grid;
2493
+ grid-template-columns: var(--sw-control-md-min-height) 1fr var(--sw-control-md-min-height);
2494
+ min-height: var(--sw-control-md-min-height);
2495
+ }
2496
+
2497
+ .sw-date-range-month-title {
2498
+ font-size: 15px;
2499
+ font-weight: 600;
2500
+ grid-column: 2;
2501
+ line-height: 20px;
2502
+ text-align: center;
2503
+ }
2504
+
2505
+ .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) {
2506
+ background: color-mix(in srgb, var(--sw-color-accent) 16%, transparent);
2507
+ border-color: transparent;
2508
+ border-radius: 0;
2509
+ color: var(--sw-color-text);
2510
+ font-weight: inherit;
2511
+ }
2512
+
2513
+ .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); }
2514
+
2515
+ .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); }
2516
+
2517
+ .sw-date-range-sheet .sw-date-range-months { padding: 0; }
2518
+
2519
+ .sw-date-range-sheet .sw-dialog-footer-actions {
2520
+ flex: 1 1 100%;
2521
+ margin-inline-start: 0;
2522
+ }
2523
+
2524
+ .sw-date-range-sheet-footer {
2525
+ display: flex;
2526
+ flex: 1 1 100%;
2527
+ flex-direction: column;
2528
+ gap: var(--sw-space-2);
2529
+ }
2530
+
2531
+ .sw-date-range-sheet-footer .sw-date-range-hint {
2532
+ color: var(--sw-color-muted);
2533
+ font-size: 13px;
2534
+ line-height: 18px;
2535
+ }
2536
+
2537
+ .sw-date-range-sheet-footer .sw-date-range-actions {
2538
+ display: grid;
2539
+ grid-template-columns: 1fr 2fr;
2540
+ margin-inline-start: 0;
2541
+ }
2542
+
2543
+ .sw-date-range-presets {
2544
+ contain: inline-size;
2545
+ display: flex;
2546
+ flex-wrap: wrap;
2547
+ gap: var(--sw-space-1);
2548
+ padding: var(--sw-space-3) var(--sw-space-3) 0;
2549
+ }
2550
+
2551
+ @media (min-width: 64rem) {
2552
+ .sw-date-range-presets:not(.sw-date-range-presets-row) {
2553
+ border-inline-end: 1px solid var(--sw-color-border);
2554
+ contain: none;
2555
+ flex-direction: column;
2556
+ flex-wrap: nowrap;
2557
+ padding: var(--sw-space-3) var(--sw-space-2);
2558
+ }
2559
+ }
2560
+
2561
+ .sw-date-range-preset {
2562
+ appearance: none;
2563
+ background: transparent;
2564
+ border: 1px solid transparent;
2565
+ border-radius: var(--sw-radius-sm);
2566
+ box-sizing: border-box;
2567
+ color: var(--sw-color-text);
2568
+ cursor: pointer;
2569
+ flex: none;
2570
+ font-family: var(--sw-font-sans);
2571
+ font-size: 15px;
2572
+ font-weight: 400;
2573
+ line-height: 20px;
2574
+ margin: 0;
2575
+ min-height: var(--sw-control-sm-min-height);
2576
+ padding: 0 var(--sw-control-sm-padding-inline);
2577
+ text-align: start;
2578
+ white-space: nowrap;
2579
+ }
2580
+
2581
+ .sw-date-range-preset:hover,
2582
+ .sw-date-range-preset[aria-pressed='true'] {
2583
+ background: color-mix(in srgb, var(--sw-color-muted) 16%, transparent);
2584
+ }
2585
+
2586
+ .sw-date-range-preset[aria-pressed='true'] {
2587
+ font-weight: 600;
2588
+ }
2589
+
2590
+ .sw-date-range-preset:focus { outline: none; }
2591
+
2592
+ .sw-date-range-preset:focus-visible {
2593
+ outline: var(--sw-focus-ring-width) solid var(--sw-color-accent);
2594
+ outline-offset: var(--sw-focus-ring-offset);
2595
+ }
2596
+
2597
+ .sw-date-range-presets-row {
2598
+ contain: none;
2599
+ flex-wrap: nowrap;
2600
+ gap: var(--sw-space-2);
2601
+ overflow-x: auto;
2602
+ padding: var(--sw-focus-ring-width) var(--sw-focus-ring-offset);
2603
+ }
2604
+
2605
+ .sw-date-range-presets-row .sw-date-range-preset {
2606
+ background: color-mix(in srgb, var(--sw-color-muted) 16%, transparent);
2607
+ border-radius: var(--sw-radius-pill);
2608
+ }
2609
+
2610
+ .sw-date-range-presets-row .sw-date-range-preset[aria-pressed='true'] {
2611
+ background: var(--sw-color-text);
2612
+ color: var(--sw-color-surface);
2613
+ }
2614
+
2615
+ @media (pointer: coarse) {
2616
+ .sw-date-range-preset { min-height: var(--sw-control-md-min-height); }
2617
+ }
2618
+
2619
+ @media (forced-colors: active) {
2620
+ .sw-date-range-presets { border-color: CanvasText; }
2621
+ .sw-date-range-presets-row .sw-date-range-preset { border-color: ButtonText; }
2622
+ .sw-date-range-preset[aria-pressed='true'],
2623
+ .sw-date-range-presets-row .sw-date-range-preset[aria-pressed='true'] {
2624
+ background: Highlight;
2625
+ color: HighlightText;
2626
+ forced-color-adjust: none;
2627
+ }
2628
+ }
2629
+
2630
+ @media (forced-colors: active) {
2631
+ .sw-date-range-footer { border-top-color: CanvasText; }
2632
+ .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),
2633
+ .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']) {
2634
+ background: Mark;
2635
+ color: MarkText;
2636
+ forced-color-adjust: none;
2637
+ }
2638
+ }
2639
+
2640
+ .sw-list {
2641
+ list-style: none;
2642
+ margin: 0;
2643
+ padding: 0;
2644
+ }
2645
+
2646
+ .sw-list > .sw-list-item + .sw-list-item,
2647
+ .sw-list-group-plain .sw-list > .sw-list-item:first-child,
2648
+ .sw-list-group-footer {
2649
+ border-top: 1px solid var(--sw-color-border);
2650
+ }
2651
+
2652
+ .sw-list-group-panel {
2653
+ background: var(--sw-color-surface);
2654
+ border: 1px solid var(--sw-color-border);
2655
+ border-radius: var(--sw-radius-md);
2656
+ overflow: clip;
2657
+ }
2658
+
2659
+ .sw-list-group-scroll {
2660
+ overflow: auto;
2661
+ position: relative;
2662
+ width: 100%;
2663
+ }
2664
+
2665
+ .sw-list-group-scroll:focus-visible {
2666
+ outline: var(--sw-focus-ring-width) solid var(--sw-color-accent);
2667
+ outline-offset: calc(-1 * var(--sw-focus-ring-width));
2668
+ }
2669
+
2670
+ .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); }
2671
+ .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); }
2672
+ .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); }
2673
+ .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); }
2674
+ .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); }
2675
+
2676
+ .sw-list-group-scroll {
2677
+ max-height: calc(var(--sw-list-max-rows) * (2 * var(--sw-space-3) + 20px + 18px + 1px));
2678
+ }
2679
+
2680
+ .sw-list-group-scroll.sw-scroll-more-top,
2681
+ .sw-list-group-scroll.sw-scroll-more-bottom {
2682
+ background-repeat: no-repeat;
2683
+ background-size: 100% var(--sw-space-5);
2684
+ }
2685
+
2686
+ .sw-list-group-scroll.sw-scroll-more-top {
2687
+ background-image: linear-gradient(to bottom, color-mix(in srgb, var(--sw-color-text) 28%, transparent), transparent);
2688
+ background-position: top;
2689
+ }
2690
+
2691
+ .sw-list-group-scroll.sw-scroll-more-bottom {
2692
+ background-image: linear-gradient(to top, color-mix(in srgb, var(--sw-color-text) 28%, transparent), transparent);
2693
+ background-position: bottom;
2694
+ }
2695
+
2696
+ .sw-list-group-scroll.sw-scroll-more-top.sw-scroll-more-bottom {
2697
+ 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);
2698
+ background-position: top, bottom;
2699
+ }
2700
+
2701
+ @media (forced-colors: active) {
2702
+ .sw-list-group-scroll.sw-scroll-more-top,
2703
+ .sw-list-group-scroll.sw-scroll-more-bottom,
2704
+ .sw-list-group-scroll.sw-scroll-more-top.sw-scroll-more-bottom { background-image: none; }
2705
+ }
2706
+
2707
+ @media (forced-colors: active) {
2708
+ .sw-list > .sw-list-item + .sw-list-item,
2709
+ .sw-list-group-plain .sw-list > .sw-list-item:first-child,
2710
+ .sw-list-group-footer,
2711
+ .sw-list-group-panel { border-color: CanvasText; }
2712
+ }
2713
+
2714
+ @media print {
2715
+ .sw-list-group-scroll { max-height: none; }
2716
+ }
2717
+
2718
+ .sw-list-row {
2719
+ align-items: flex-start;
2720
+ appearance: none;
2721
+ background: transparent;
2722
+ border: 0;
2723
+ box-sizing: border-box;
2724
+ color: var(--sw-color-text);
2725
+ display: flex;
2726
+ font-family: var(--sw-font-sans);
2727
+ font-size: 15px;
2728
+ gap: var(--sw-space-3);
2729
+ line-height: 20px;
2730
+ margin: 0;
2731
+ padding: var(--sw-space-3) var(--sw-space-4);
2732
+ text-align: start;
2733
+ text-decoration: none;
2734
+ width: 100%;
2735
+ }
2736
+
2737
+ .sw-list-group-plain .sw-list-row { padding-inline: 0; }
2738
+
2739
+ .sw-list-row-pressable { cursor: pointer; }
2740
+
2741
+ @media (hover: hover) {
2742
+ .sw-list-row-pressable:hover:not(.sw-list-row-disabled) { background: color-mix(in srgb, var(--sw-color-muted) 16%, transparent); }
2743
+ }
2744
+
2745
+ .sw-list-row-pressable:active:not(.sw-list-row-disabled) { background: color-mix(in srgb, var(--sw-color-muted) 16%, transparent); }
2746
+
2747
+ .sw-list-row-pressable:focus { outline: none; }
2748
+
2749
+ .sw-list-row-pressable:focus-visible {
2750
+ outline: var(--sw-focus-ring-width) solid var(--sw-color-accent);
2751
+ outline-offset: calc(-1 * var(--sw-focus-ring-width));
2752
+ }
2753
+
2754
+ /* A link row keeps the text colour and the inset ring over the canvas link rules. */
2755
+ [data-theme] a.sw-list-row,
2756
+ [data-theme] a.sw-list-row:hover {
2757
+ color: var(--sw-color-text);
2758
+ }
2759
+
2760
+ [data-theme] a.sw-list-row:focus-visible {
2761
+ outline-offset: calc(-1 * var(--sw-focus-ring-width));
2762
+ }
2763
+
2764
+ .sw-list-row-disabled {
2765
+ cursor: not-allowed;
2766
+ opacity: var(--sw-disabled-opacity);
2767
+ }
2768
+
2769
+ @media (pointer: coarse) {
2770
+ .sw-list-row-pressable { min-height: var(--sw-control-md-min-height); }
2771
+ }
2772
+
2773
+ /* Forced colours drop the fill, so a hovered row is outlined instead, as a pressable table row is. */
2774
+ @media (forced-colors: active) {
2775
+ .sw-list-row-pressable:hover:not(.sw-list-row-disabled) {
2776
+ outline: var(--sw-focus-ring-width) solid Highlight;
2777
+ outline-offset: calc(-1 * var(--sw-focus-ring-width));
2778
+ }
2779
+ }
2780
+
2781
+ .sw-list-row-leading {
2782
+ align-items: center;
2783
+ display: flex;
2784
+ flex: none;
2785
+ height: 20px;
2786
+ }
2787
+
2788
+ .sw-list-row-label,
2789
+ .sw-list-row-end {
2790
+ display: flex;
2791
+ flex-direction: column;
2792
+ min-width: 0;
2793
+ }
2794
+
2795
+ .sw-list-row-label { flex: 1 1 auto; }
2796
+
2797
+ .sw-list-row-end {
2798
+ align-items: flex-end;
2799
+ flex: none;
2800
+ max-width: 50%;
2801
+ text-align: end;
2802
+ }
2803
+
2804
+ .sw-list-row-title {
2805
+ font-weight: 600;
2806
+ overflow-wrap: anywhere;
2807
+ }
2808
+
2809
+ .sw-list-row-title-plain { font-weight: 400; }
2810
+
2811
+ .sw-list-row-title-danger { color: var(--sw-color-danger); }
2812
+
2813
+ .sw-list-row-detail,
2814
+ .sw-list-row-value-detail {
2815
+ color: var(--sw-color-muted);
2816
+ font-size: 13px;
2817
+ line-height: 18px;
2818
+ }
2819
+
2820
+ /* The label takes the wrap; the end keeps its words whole up to half the row. */
2821
+ .sw-list-row-detail { overflow-wrap: anywhere; }
2822
+
2823
+ .sw-list-row-value,
2824
+ .sw-list-row-value-detail { font-variant-numeric: tabular-nums; }
2825
+
2826
+ .sw-list-row-value { font-weight: 600; }
2827
+
2828
+ .sw-list-row-value-success { color: var(--sw-color-success); }
2829
+ .sw-list-row-value-danger { color: var(--sw-color-danger); }
2830
+ .sw-list-row-value-muted { color: var(--sw-color-muted); }
2831
+ .sw-list-row-value-accent { color: var(--sw-color-accent); }
2832
+
2833
+ .sw-list-row-chevron {
2834
+ border-bottom: 2px solid var(--sw-color-muted);
2835
+ border-right: 2px solid var(--sw-color-muted);
2836
+ box-sizing: border-box;
2837
+ height: var(--sw-space-2);
2838
+ width: var(--sw-space-2);
2839
+ flex: none;
2840
+ margin-block-start: calc((20px - var(--sw-space-2)) / 2);
2841
+ margin-inline-end: var(--sw-space-1);
2842
+ transform: rotate(-45deg);
2843
+ }
2844
+
2845
+ .sw-list-row-chevron:dir(rtl) { transform: rotate(135deg); }
2846
+
2847
+ .sw-list-row-check {
2848
+ border-bottom: 2px solid var(--sw-color-accent);
2849
+ border-right: 2px solid var(--sw-color-accent);
2850
+ box-sizing: border-box;
2851
+ flex: none;
2852
+ height: var(--sw-space-3);
2853
+ margin-block-start: calc((20px - var(--sw-space-3)) / 2);
2854
+ margin-inline-end: var(--sw-space-1);
2855
+ transform: rotate(45deg);
2856
+ width: var(--sw-space-2);
2857
+ }
2858
+
2859
+ @media (forced-colors: active) {
2860
+ .sw-list-row-check { border-color: CanvasText; }
2861
+ }
2862
+
2863
+ [data-theme] .sw-section-nav-count,
2864
+ [data-theme] .sw-nav-count {
2865
+ align-items: center;
2866
+ background: var(--sw-color-danger);
2867
+ border-radius: var(--sw-radius-pill);
2868
+ box-sizing: border-box;
2869
+ color: var(--sw-color-onDanger);
2870
+ display: inline-flex;
2871
+ font-size: 13px;
2872
+ font-variant-numeric: tabular-nums;
2873
+ font-weight: 700;
2874
+ justify-content: center;
2875
+ letter-spacing: -0.08px;
2876
+ line-height: 1;
2877
+ min-height: calc(var(--sw-space-5) - var(--sw-space-1));
2878
+ min-width: calc(var(--sw-space-5) - var(--sw-space-1));
2879
+ padding-inline: var(--sw-space-1);
2880
+ }
2881
+
2882
+ /*
2883
+ * A Nav link holding a count lays out as SectionNav's link does: the words
2884
+ * and the pill centred on one line a space-2 apart (the space text node
2885
+ * that keeps the name collapses), so the link is as tall as its siblings
2886
+ * and its words stay level with theirs. A Button already does this. At
2887
+ * zero specificity, so a link's `hideBelow` or `hideFrom` still hides it.
2888
+ * In forced colours a current link's underline runs under the pill's
2889
+ * figure too, as the pill is a flex item of the link.
2890
+ */
2891
+ :where(.sw-nav a:has(> .sw-nav-count)) {
2892
+ align-items: center;
2893
+ display: inline-flex;
2894
+ gap: var(--sw-space-2);
2895
+ }
2896
+
2897
+ @media (forced-colors: active) {
2898
+ [data-theme] .sw-section-nav-count,
2899
+ [data-theme] .sw-nav-count { border: 1px solid CanvasText; }
2900
+ }
2901
+
2411
2902
  .sw-bar-chart {
2412
2903
  display: grid;
2413
2904
  gap: var(--sw-space-2);
@@ -3041,31 +3532,12 @@ body {
3041
3532
  font-weight: 600;
3042
3533
  }
3043
3534
 
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
3535
  @media (pointer: coarse) {
3063
3536
  [data-theme] .sw-section-nav.sw-section-nav-filled .sw-section-nav-link { min-height: var(--sw-control-md-min-height); }
3064
3537
  }
3065
3538
 
3066
3539
  @media (forced-colors: active) {
3067
3540
  [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
3541
  }
3070
3542
 
3071
3543
  @media (pointer: coarse) {
@@ -4547,6 +5019,15 @@ body {
4547
5019
  overflow-wrap: anywhere;
4548
5020
  }
4549
5021
 
5022
+ /* A plain tile is its figure alone, top-aligned, inside the card around it. */
5023
+ .sw-stat-tile-plain {
5024
+ align-items: flex-start;
5025
+ background: transparent;
5026
+ border: 0;
5027
+ border-radius: 0;
5028
+ padding: 0;
5029
+ }
5030
+
4550
5031
  .sw-stat-tile-primary {
4551
5032
  background: var(--sw-color-accent);
4552
5033
  border-color: transparent;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scalewing/react",
3
- "version": "1.39.0",
3
+ "version": "1.40.0",
4
4
  "description": "Scalewing DOM components and package-owned CSS utilities.",
5
5
  "type": "module",
6
6
  "license": "MIT",