@scalewing/react 1.30.0 → 1.32.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 (100) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/README.md +23 -5
  3. package/dist/components/ActionMenu.d.ts +10 -1
  4. package/dist/components/ActionMenu.js +7 -2
  5. package/dist/components/AppHeader.d.ts +9 -1
  6. package/dist/components/AppHeader.js +6 -2
  7. package/dist/components/Box.d.ts +10 -2
  8. package/dist/components/Button.d.ts +27 -2
  9. package/dist/components/Button.js +5 -3
  10. package/dist/components/ButtonGroup.d.ts +9 -1
  11. package/dist/components/ButtonGroup.js +8 -2
  12. package/dist/components/Combobox.d.ts +14 -0
  13. package/dist/components/Combobox.js +125 -0
  14. package/dist/components/DateField.d.ts +9 -1
  15. package/dist/components/DateField.js +4 -3
  16. package/dist/components/DenominationGrid.d.ts +5 -3
  17. package/dist/components/DenominationGrid.js +21 -11
  18. package/dist/components/Dialog.d.ts +9 -1
  19. package/dist/components/Dialog.js +8 -4
  20. package/dist/components/Field.d.ts +25 -0
  21. package/dist/components/Field.js +56 -6
  22. package/dist/components/FieldLabelText.d.ts +21 -3
  23. package/dist/components/FieldLabelText.js +16 -4
  24. package/dist/components/FilterChips.d.ts +9 -1
  25. package/dist/components/FilterChips.js +4 -2
  26. package/dist/components/Nav.d.ts +14 -2
  27. package/dist/components/Nav.js +6 -2
  28. package/dist/components/SegmentedControl.d.ts +5 -2
  29. package/dist/components/SegmentedControl.js +2 -1
  30. package/dist/components/Select.d.ts +9 -1
  31. package/dist/components/Select.js +4 -3
  32. package/dist/components/Stepper.d.ts +13 -0
  33. package/dist/components/Stepper.js +8 -2
  34. package/dist/components/combobox/ComboboxPopup.d.ts +25 -0
  35. package/dist/components/combobox/ComboboxPopup.js +68 -0
  36. package/dist/components/combobox/entries.d.ts +18 -0
  37. package/dist/components/combobox/entries.js +34 -0
  38. package/dist/components/combobox/types.d.ts +71 -0
  39. package/dist/components/combobox/types.js +1 -0
  40. package/dist/components/combobox/validate.d.ts +3 -0
  41. package/dist/components/combobox/validate.js +44 -0
  42. package/dist/components/denomination-grid/DenominationStrip.d.ts +4 -2
  43. package/dist/components/denomination-grid/DenominationStrip.js +3 -2
  44. package/dist/components/denomination-grid/DenominationTiles.d.ts +1 -1
  45. package/dist/components/denomination-grid/EntryCell.js +1 -1
  46. package/dist/components/denomination-grid/StripRow.js +5 -2
  47. package/dist/components/denomination-grid/types.d.ts +35 -1
  48. package/dist/components/dialog/DialogTitle.d.ts +5 -3
  49. package/dist/components/dialog/DialogTitle.js +4 -4
  50. package/dist/components/field/SearchFrame.d.ts +16 -0
  51. package/dist/components/field/SearchFrame.js +32 -0
  52. package/dist/css/css-action-menu-trigger.d.ts +11 -0
  53. package/dist/css/css-action-menu-trigger.js +66 -0
  54. package/dist/css/css-action-menu.js +7 -2
  55. package/dist/css/css-app-header-bar.d.ts +10 -0
  56. package/dist/css/css-app-header-bar.js +26 -0
  57. package/dist/css/css-box-border.d.ts +6 -1
  58. package/dist/css/css-box-border.js +8 -4
  59. package/dist/css/css-button-group-attached.js +5 -2
  60. package/dist/css/css-button-group-track.d.ts +11 -0
  61. package/dist/css/css-button-group-track.js +48 -0
  62. package/dist/css/css-button.d.ts +19 -2
  63. package/dist/css/css-button.js +31 -1
  64. package/dist/css/css-chrome.js +14 -1
  65. package/dist/css/css-combobox.d.ts +2 -0
  66. package/dist/css/css-combobox.js +136 -0
  67. package/dist/css/css-components.js +6 -0
  68. package/dist/css/css-data.js +3 -2
  69. package/dist/css/css-date-field.js +2 -1
  70. package/dist/css/css-denomination-appearance.d.ts +21 -0
  71. package/dist/css/css-denomination-appearance.js +114 -0
  72. package/dist/css/css-denomination-cell-tones.d.ts +8 -0
  73. package/dist/css/css-denomination-cell-tones.js +20 -1
  74. package/dist/css/css-denomination-grid.js +4 -0
  75. package/dist/css/css-dialog-banded.d.ts +11 -0
  76. package/dist/css/css-dialog-banded.js +84 -0
  77. package/dist/css/css-field-search.d.ts +2 -0
  78. package/dist/css/css-field-search.js +118 -0
  79. package/dist/css/css-field.js +4 -0
  80. package/dist/css/css-multi-select.js +2 -1
  81. package/dist/css/css-nav-words.d.ts +13 -0
  82. package/dist/css/css-nav-words.js +51 -0
  83. package/dist/css/css-notice.d.ts +4 -11
  84. package/dist/css/css-notice.js +6 -22
  85. package/dist/css/css-segmented-raised.d.ts +3 -0
  86. package/dist/css/css-segmented-raised.js +72 -0
  87. package/dist/css/css-segmented.js +9 -3
  88. package/dist/css/css-select.js +2 -1
  89. package/dist/css/css-split.js +2 -1
  90. package/dist/css/css-stepper.js +7 -0
  91. package/dist/css/quiet-fill.d.ts +7 -0
  92. package/dist/css/quiet-fill.js +7 -0
  93. package/dist/css/stacking.js +6 -2
  94. package/dist/css/stylesheet.js +4 -0
  95. package/dist/css/tone-tint.d.ts +21 -0
  96. package/dist/css/tone-tint.js +23 -0
  97. package/dist/index.d.ts +13 -10
  98. package/dist/index.js +11 -8
  99. package/dist/styles.css +505 -12
  100. package/package.json +1 -1
package/dist/styles.css CHANGED
@@ -828,8 +828,8 @@ body {
828
828
  }
829
829
 
830
830
  /* Backdrop blur makes a glass surface its own stacking context, so it lifts while it holds an open popup (see stacking.ts). */
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) {
831
+ .sw-card-glass:has(.sw-select-list, .sw-action-menu-list, .sw-multi-select-panel, .sw-combobox-popup, .sw-tooltip:not([hidden]), .sw-date-field-calendar),
832
+ .sw-accordion:has(.sw-select-list, .sw-action-menu-list, .sw-multi-select-panel, .sw-combobox-popup, .sw-tooltip:not([hidden]), .sw-date-field-calendar) {
833
833
  position: relative;
834
834
  z-index: 4;
835
835
  }
@@ -913,6 +913,13 @@ body {
913
913
  .sw-button-tertiary { background: var(--sw-color-tertiary); border-color: transparent; color: var(--sw-color-onTertiary); }
914
914
  .sw-button-ghost { background: transparent; border-color: transparent; color: var(--sw-color-accent); }
915
915
  .sw-button-danger { background: var(--sw-color-danger); border-color: transparent; color: var(--sw-color-onDanger); }
916
+ .sw-button-neutral { background: color-mix(in srgb, var(--sw-color-muted) 16%, transparent); border-color: transparent; color: var(--sw-color-text); }
917
+ .sw-button-disabled-neutral:disabled:not(.sw-button-ghost) {
918
+ background: color-mix(in srgb, var(--sw-color-muted) 16%, transparent);
919
+ border-color: transparent;
920
+ color: color-mix(in srgb, var(--sw-color-muted) 48%, transparent);
921
+ opacity: 1;
922
+ }
916
923
  .sw-button[aria-pressed='true'] { box-shadow: 0 0 0 2px var(--sw-color-background), 0 0 0 4px var(--sw-color-accent); }
917
924
  .sw-button[aria-pressed='true']:focus-visible { outline-offset: calc(var(--sw-focus-ring-offset) + 4px); }
918
925
  @media (forced-colors: active) {
@@ -978,6 +985,30 @@ body {
978
985
  .sw-button-group.sw-button-group-attached > * { width: auto; }
979
986
  }
980
987
 
988
+ .sw-button-group.sw-button-group-attached.sw-button-group-track {
989
+ background: color-mix(in srgb, var(--sw-color-muted) 16%, transparent);
990
+ border-radius: var(--sw-radius-sm);
991
+ }
992
+
993
+ .sw-button-group.sw-button-group-attached.sw-button-group-track > .sw-button {
994
+ background: transparent;
995
+ border-color: transparent;
996
+ color: var(--sw-color-text);
997
+ }
998
+
999
+ .sw-button-group.sw-button-group-attached.sw-button-group-track > .sw-button + .sw-button {
1000
+ border-inline-start-color: var(--sw-color-border);
1001
+ }
1002
+
1003
+ .sw-button-group.sw-button-group-attached.sw-button-group-track > .sw-button:disabled {
1004
+ opacity: var(--sw-disabled-opacity);
1005
+ }
1006
+
1007
+ @media (forced-colors: active) {
1008
+ .sw-button-group.sw-button-group-attached.sw-button-group-track { outline: 1px solid CanvasText; }
1009
+ .sw-button-group.sw-button-group-attached.sw-button-group-track > .sw-button[aria-pressed='true'] { border-color: Highlight; }
1010
+ }
1011
+
981
1012
  .sw-checkbox {
982
1013
  display: flex;
983
1014
  flex-direction: column;
@@ -1319,7 +1350,7 @@ body {
1319
1350
  color: var(--sw-color-warning);
1320
1351
  }
1321
1352
 
1322
- :is(.sw-button-primary, .sw-button-secondary, .sw-button-tertiary, .sw-button-danger) .sw-badge { background: var(--sw-color-surface); color: var(--sw-color-text); }
1353
+ :is(.sw-button-primary, .sw-button-secondary, .sw-button-tertiary, .sw-button-danger, .sw-button-neutral) .sw-badge { background: var(--sw-color-surface); color: var(--sw-color-text); }
1323
1354
 
1324
1355
  .sw-segmented-field {
1325
1356
  display: inline-flex;
@@ -1411,12 +1442,12 @@ body {
1411
1442
  color: var(--sw-color-onAccent);
1412
1443
  }
1413
1444
 
1414
- .sw-segmented.sw-segmented-with-icons:not(.sw-segmented-filled) {
1445
+ .sw-segmented.sw-segmented-with-icons:not(.sw-segmented-filled, .sw-segmented-raised) {
1415
1446
  background: var(--sw-color-subtle);
1416
1447
  border-color: transparent;
1417
1448
  }
1418
1449
 
1419
- .sw-segmented-with-icons:not(.sw-segmented-filled) .sw-segmented-item-selected {
1450
+ .sw-segmented-with-icons:not(.sw-segmented-filled, .sw-segmented-raised) .sw-segmented-item-selected {
1420
1451
  box-shadow: var(--sw-elevation-sm);
1421
1452
  }
1422
1453
 
@@ -1427,7 +1458,7 @@ body {
1427
1458
  justify-content: center;
1428
1459
  }
1429
1460
 
1430
- .sw-segmented-with-icons:not(.sw-segmented-filled) .sw-segmented-item {
1461
+ .sw-segmented-with-icons:not(.sw-segmented-filled, .sw-segmented-raised) .sw-segmented-item {
1431
1462
  font-size: 15px;
1432
1463
  letter-spacing: -0.2px;
1433
1464
  line-height: 20px;
@@ -1445,11 +1476,57 @@ body {
1445
1476
  }
1446
1477
 
1447
1478
  @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; }
1479
+ .sw-segmented.sw-segmented-with-icons:not(.sw-segmented-filled, .sw-segmented-raised) { border-color: CanvasText; }
1480
+ .sw-segmented-with-icons:not(.sw-segmented-filled, .sw-segmented-raised) .sw-segmented-item-selected { outline: 2px solid Highlight; }
1450
1481
  .sw-segmented.sw-segmented-with-icons[aria-invalid='true'] { border-color: Mark; }
1451
1482
  }
1452
1483
 
1484
+ .sw-segmented.sw-segmented-raised {
1485
+ background: color-mix(in srgb, var(--sw-color-muted) 16%, transparent);
1486
+ border-color: transparent;
1487
+ border-radius: calc(var(--sw-radius-sm) + 2px);
1488
+ }
1489
+
1490
+ /* Sized to its segments even where the field is stretched (a Stack). */
1491
+ .sw-segmented-field > .sw-segmented.sw-segmented-raised {
1492
+ align-self: flex-start;
1493
+ }
1494
+
1495
+ .sw-segmented.sw-segmented-raised .sw-segmented-item {
1496
+ border-radius: var(--sw-radius-sm);
1497
+ color: var(--sw-color-text);
1498
+ font-size: 15px;
1499
+ font-weight: 500;
1500
+ letter-spacing: -0.2px;
1501
+ line-height: 20px;
1502
+ min-height: var(--sw-control-md-min-height);
1503
+ padding-inline: var(--sw-space-4);
1504
+ }
1505
+
1506
+ .sw-segmented.sw-segmented-raised.sw-segmented-with-icons .sw-segmented-item {
1507
+ padding-inline: var(--sw-space-2) var(--sw-space-3);
1508
+ }
1509
+
1510
+ .sw-segmented.sw-segmented-raised .sw-segmented-item-selected {
1511
+ background: var(--sw-color-surface);
1512
+ box-shadow: var(--sw-elevation-sm);
1513
+ font-weight: 600;
1514
+ }
1515
+
1516
+ [data-theme='dark'] .sw-segmented.sw-segmented-raised .sw-segmented-item-selected {
1517
+ box-shadow: inset 0 0 0 1px var(--sw-color-muted);
1518
+ }
1519
+
1520
+ .sw-segmented.sw-segmented-raised[aria-invalid='true'] {
1521
+ border-color: var(--sw-color-danger);
1522
+ }
1523
+
1524
+ @media (forced-colors: active) {
1525
+ .sw-segmented.sw-segmented-raised { border-color: CanvasText; }
1526
+ .sw-segmented.sw-segmented-raised .sw-segmented-item-selected { outline: 2px solid Highlight; }
1527
+ .sw-segmented.sw-segmented-raised[aria-invalid='true'] { border-color: Mark; }
1528
+ }
1529
+
1453
1530
  .sw-segmented-disabled {
1454
1531
  opacity: var(--sw-disabled-opacity);
1455
1532
  }
@@ -2242,6 +2319,17 @@ body {
2242
2319
  -webkit-backdrop-filter: blur(var(--sw-glass-blur)) saturate(var(--sw-glass-saturate));
2243
2320
  }
2244
2321
 
2322
+ .sw-app-header-bar {
2323
+ backdrop-filter: none;
2324
+ -webkit-backdrop-filter: none;
2325
+ background: var(--sw-color-surface);
2326
+ border-color: var(--sw-color-border);
2327
+ border-radius: 0;
2328
+ border-style: solid;
2329
+ border-width: 0 0 1px;
2330
+ box-shadow: none;
2331
+ }
2332
+
2245
2333
  .sw-app-header-sticky {
2246
2334
  position: sticky;
2247
2335
  top: 0;
@@ -2278,6 +2366,32 @@ body {
2278
2366
  }
2279
2367
  }
2280
2368
 
2369
+ .sw-nav.sw-nav-words :is(a, .sw-button) {
2370
+ background: transparent;
2371
+ border: 1px solid transparent;
2372
+ color: var(--sw-color-muted);
2373
+ font-size: 15px;
2374
+ font-weight: 500;
2375
+ letter-spacing: -0.2px;
2376
+ line-height: 20px;
2377
+ text-decoration: none;
2378
+ }
2379
+
2380
+ @media (hover: hover) {
2381
+ .sw-nav.sw-nav-words :is(a, .sw-button):hover:not(:disabled, [aria-disabled='true']) {
2382
+ color: var(--sw-color-text);
2383
+ }
2384
+ }
2385
+
2386
+ .sw-nav.sw-nav-words :is(a, .sw-button)[aria-current]:not([aria-current='false']) {
2387
+ color: var(--sw-color-text);
2388
+ font-weight: 600;
2389
+ }
2390
+
2391
+ @media (forced-colors: active) {
2392
+ .sw-nav.sw-nav-words :is(a, .sw-button)[aria-current]:not([aria-current='false']) { border-color: Highlight; text-decoration: underline; }
2393
+ }
2394
+
2281
2395
  .sw-field-xs :is(select, input, textarea) {
2282
2396
  font-size: 13px;
2283
2397
  letter-spacing: -0.08px;
@@ -2603,6 +2717,52 @@ body {
2603
2717
  .sw-dialog-footer { border-top-color: CanvasText; }
2604
2718
  }
2605
2719
 
2720
+ .sw-dialog-banded {
2721
+ backdrop-filter: none;
2722
+ -webkit-backdrop-filter: none;
2723
+ background: var(--sw-color-surface);
2724
+ border-color: transparent;
2725
+ box-shadow: var(--sw-elevation-md);
2726
+ }
2727
+
2728
+ .sw-dialog-banded .sw-dialog-header {
2729
+ align-items: center;
2730
+ background: var(--sw-color-surface);
2731
+ border-bottom: 1px solid var(--sw-color-border);
2732
+ margin: calc(-1 * var(--sw-space-5)) calc(-1 * var(--sw-space-5)) 0;
2733
+ padding: var(--sw-space-4) var(--sw-space-5);
2734
+ position: sticky;
2735
+ top: calc(-1 * var(--sw-space-5));
2736
+ z-index: 5;
2737
+ }
2738
+
2739
+ @media not all and (min-width: 48rem) {
2740
+ .sw-dialog-sheet-below-md.sw-dialog-banded .sw-dialog-header {
2741
+ margin-left: calc(-1 * max(var(--sw-space-5), env(safe-area-inset-left, 0px)));
2742
+ margin-right: calc(-1 * max(var(--sw-space-5), env(safe-area-inset-right, 0px)));
2743
+ padding-left: max(var(--sw-space-5), env(safe-area-inset-left, 0px));
2744
+ padding-right: max(var(--sw-space-5), env(safe-area-inset-right, 0px));
2745
+ }
2746
+ }
2747
+
2748
+ .sw-dialog-banded .sw-button.sw-dialog-close {
2749
+ background: color-mix(in srgb, var(--sw-color-muted) 16%, transparent);
2750
+ border-radius: var(--sw-radius-pill);
2751
+ color: var(--sw-color-text);
2752
+ margin: 0;
2753
+ }
2754
+
2755
+ @media (hover: hover) {
2756
+ .sw-dialog-banded .sw-button.sw-dialog-close:hover {
2757
+ background: color-mix(in srgb, var(--sw-color-muted) 24%, transparent);
2758
+ }
2759
+ }
2760
+
2761
+ @media (forced-colors: active) {
2762
+ .sw-dialog-banded { border-color: CanvasText; }
2763
+ .sw-dialog-banded .sw-dialog-header { border-bottom-color: CanvasText; }
2764
+ }
2765
+
2606
2766
  .sw-accordion {
2607
2767
  background: var(--sw-glass-fill);
2608
2768
  border: 1px solid var(--sw-glass-border);
@@ -3020,6 +3180,155 @@ body {
3020
3180
  }
3021
3181
  }
3022
3182
 
3183
+ .sw-action-menu-trigger.sw-action-menu-trigger-text {
3184
+ align-items: center;
3185
+ background: transparent;
3186
+ border-color: transparent;
3187
+ display: inline-flex;
3188
+ font-family: var(--sw-font-sans);
3189
+ font-size: 15px;
3190
+ font-weight: 500;
3191
+ gap: var(--sw-space-2);
3192
+ letter-spacing: -0.2px;
3193
+ line-height: 20px;
3194
+ min-height: var(--sw-control-sm-min-height);
3195
+ padding-inline: var(--sw-space-3) var(--sw-space-2);
3196
+ }
3197
+
3198
+ .sw-action-menu-trigger.sw-action-menu-trigger-text::after {
3199
+ border-bottom: 2px solid var(--sw-color-muted);
3200
+ border-right: 2px solid var(--sw-color-muted);
3201
+ box-sizing: border-box;
3202
+ height: var(--sw-space-2);
3203
+ width: var(--sw-space-2);
3204
+ content: '';
3205
+ flex: none;
3206
+ transform: translateY(-25%) rotate(45deg);
3207
+ }
3208
+
3209
+ .sw-action-menu-trigger.sw-action-menu-trigger-text[aria-expanded='true'] {
3210
+ background: color-mix(in srgb, var(--sw-color-muted) 16%, transparent);
3211
+ }
3212
+
3213
+ @media (hover: hover) {
3214
+ .sw-action-menu-trigger.sw-action-menu-trigger-text:hover:not(:disabled) {
3215
+ background: color-mix(in srgb, var(--sw-color-muted) 16%, transparent);
3216
+ }
3217
+ }
3218
+
3219
+ @media (pointer: coarse) {
3220
+ .sw-action-menu-trigger.sw-action-menu-trigger-text { min-height: var(--sw-control-md-min-height); }
3221
+ }
3222
+
3223
+ @media (forced-colors: active) {
3224
+ .sw-action-menu-trigger.sw-action-menu-trigger-text::after { border-color: CanvasText; }
3225
+ .sw-action-menu-trigger.sw-action-menu-trigger-text[aria-expanded='true'] { border-color: Highlight; }
3226
+ }
3227
+
3228
+ .sw-combobox {
3229
+ max-width: 100%;
3230
+ min-width: 0;
3231
+ }
3232
+
3233
+ .sw-combobox-popup {
3234
+ background: var(--sw-glass-fill);
3235
+ border: 1px solid var(--sw-glass-border);
3236
+ border-radius: var(--sw-radius-sm);
3237
+ box-shadow: var(--sw-elevation-sm), inset 0 1px 0 var(--sw-glass-specular);
3238
+ backdrop-filter: blur(var(--sw-glass-blur)) saturate(var(--sw-glass-saturate));
3239
+ -webkit-backdrop-filter: blur(var(--sw-glass-blur)) saturate(var(--sw-glass-saturate));
3240
+ box-sizing: border-box;
3241
+ color: var(--sw-color-text);
3242
+ inset: auto;
3243
+ margin: 0;
3244
+ max-height: min(var(--sw-select-max), calc(100% - var(--sw-space-2) - var(--sw-space-2)));
3245
+ max-width: calc(100% - var(--sw-space-2) - var(--sw-space-2));
3246
+ overflow: auto;
3247
+ padding: var(--sw-space-1);
3248
+ position: fixed;
3249
+ z-index: 10;
3250
+ }
3251
+
3252
+ .sw-combobox-heading {
3253
+ color: var(--sw-color-muted);
3254
+ font-family: var(--sw-font-sans);
3255
+ font-size: 13px;
3256
+ font-weight: 600;
3257
+ letter-spacing: -0.08px;
3258
+ line-height: 18px;
3259
+ padding: var(--sw-space-2) var(--sw-space-3) var(--sw-space-1);
3260
+ }
3261
+
3262
+ .sw-combobox-option {
3263
+ align-items: center;
3264
+ border-radius: var(--sw-radius-sm);
3265
+ box-sizing: border-box;
3266
+ column-gap: var(--sw-space-2);
3267
+ cursor: pointer;
3268
+ display: flex;
3269
+ flex-wrap: wrap;
3270
+ font-family: var(--sw-font-sans);
3271
+ font-size: 15px;
3272
+ letter-spacing: -0.2px;
3273
+ line-height: 20px;
3274
+ min-height: var(--sw-control-md-min-height);
3275
+ overflow-wrap: anywhere;
3276
+ padding: var(--sw-space-1) var(--sw-space-3);
3277
+ }
3278
+
3279
+ .sw-combobox-option + .sw-combobox-option {
3280
+ border-top: 1px solid var(--sw-color-border);
3281
+ }
3282
+
3283
+ .sw-combobox-label {
3284
+ font-weight: 600;
3285
+ }
3286
+
3287
+ .sw-combobox-description {
3288
+ color: var(--sw-color-muted);
3289
+ font-size: 13px;
3290
+ letter-spacing: -0.08px;
3291
+ line-height: 18px;
3292
+ }
3293
+
3294
+ .sw-combobox-option[aria-selected='true'] {
3295
+ background: color-mix(in srgb, var(--sw-color-muted) 16%, transparent);
3296
+ }
3297
+
3298
+ .sw-combobox-option[aria-disabled='true'] {
3299
+ cursor: not-allowed;
3300
+ }
3301
+
3302
+ .sw-combobox-option[aria-disabled='true'] .sw-combobox-label {
3303
+ color: var(--sw-color-muted);
3304
+ }
3305
+
3306
+ .sw-combobox-action {
3307
+ border-top: 1px solid var(--sw-color-border);
3308
+ color: var(--sw-color-accent);
3309
+ margin-top: var(--sw-space-1);
3310
+ }
3311
+
3312
+ .sw-combobox-empty,
3313
+ .sw-combobox-note {
3314
+ color: var(--sw-color-muted);
3315
+ font-family: var(--sw-font-sans);
3316
+ font-size: 13px;
3317
+ letter-spacing: -0.08px;
3318
+ line-height: 18px;
3319
+ padding: var(--sw-space-2) var(--sw-space-3);
3320
+ }
3321
+
3322
+ @media (forced-colors: active) {
3323
+ .sw-combobox-popup { border-color: CanvasText; }
3324
+ .sw-combobox-option[aria-selected='true'] { background: Highlight; color: HighlightText; forced-color-adjust: none; }
3325
+ .sw-combobox-option[aria-selected='true'] .sw-combobox-description { color: HighlightText; }
3326
+ .sw-combobox-option[aria-selected='true'] .sw-badge { forced-color-adjust: auto; }
3327
+ .sw-combobox-option[aria-disabled='true'] .sw-combobox-label { color: GrayText; }
3328
+ .sw-combobox-option[aria-selected='true'][aria-disabled='true'] .sw-combobox-label { color: HighlightText; }
3329
+ .sw-combobox-option + .sw-combobox-option { border-color: CanvasText; }
3330
+ .sw-combobox-action { border-color: CanvasText; }
3331
+ }
3023
3332
  .sw-multi-select {
3024
3333
  display: inline-flex;
3025
3334
  max-width: 100%;
@@ -4289,10 +4598,10 @@ body {
4289
4598
  .sw-denomination-tile-list { grid-template-columns: repeat(3, minmax(0, 1fr)); }
4290
4599
  }
4291
4600
 
4292
- .sw-denomination-cell-tone-accent { --sw-denomination-cell-tone: var(--sw-color-accent); }
4293
- .sw-denomination-cell-tone-success { --sw-denomination-cell-tone: var(--sw-color-success); }
4294
- .sw-denomination-cell-tone-danger { --sw-denomination-cell-tone: var(--sw-color-danger); }
4295
- .sw-denomination-cell-tone-warning { --sw-denomination-cell-tone: var(--sw-color-warning); }
4601
+ .sw-denomination-cell-tone-accent { --sw-denomination-cell-tone: var(--sw-color-accent); --sw-denomination-cell-fill: var(--sw-color-accentSubtle); --sw-denomination-cell-ink: color-mix(in srgb, var(--sw-color-accent) 70%, var(--sw-color-text)); }
4602
+ .sw-denomination-cell-tone-success { --sw-denomination-cell-tone: var(--sw-color-success); --sw-denomination-cell-fill: color-mix(in srgb, var(--sw-color-success) 10%, var(--sw-color-surface)); --sw-denomination-cell-ink: color-mix(in srgb, var(--sw-color-success) 70%, var(--sw-color-text)); }
4603
+ .sw-denomination-cell-tone-danger { --sw-denomination-cell-tone: var(--sw-color-danger); --sw-denomination-cell-fill: color-mix(in srgb, var(--sw-color-danger) 10%, var(--sw-color-surface)); --sw-denomination-cell-ink: color-mix(in srgb, var(--sw-color-danger) 70%, var(--sw-color-text)); }
4604
+ .sw-denomination-cell-tone-warning { --sw-denomination-cell-tone: var(--sw-color-warning); --sw-denomination-cell-fill: color-mix(in srgb, var(--sw-color-warning) 10%, var(--sw-color-surface)); --sw-denomination-cell-ink: color-mix(in srgb, var(--sw-color-warning) 70%, var(--sw-color-text)); }
4296
4605
 
4297
4606
  .sw-denomination-grid .sw-denomination-cell.sw-denomination-cell-toned,
4298
4607
  .sw-denomination-grid .sw-denomination-cell-toned .sw-denomination-cell {
@@ -4305,9 +4614,19 @@ body {
4305
4614
  box-shadow: inset 0 0 0 1px var(--sw-denomination-cell-tone);
4306
4615
  }
4307
4616
 
4617
+ /* A pill: the count on its tone's tint, in the tone's ink (a Notice's words: 4.5:1 on the tint unless the palette's own tone is under it). */
4618
+ .sw-denomination-cell-tones-pill .sw-denomination-cell-toned .sw-denomination-cell-value:not(:empty) {
4619
+ background: var(--sw-denomination-cell-fill);
4620
+ border-radius: var(--sw-radius-sm);
4621
+ color: var(--sw-denomination-cell-ink);
4622
+ display: inline-block;
4623
+ padding: calc(var(--sw-space-1) / 2) var(--sw-space-2);
4624
+ }
4625
+
4308
4626
  @media (forced-colors: active) {
4309
4627
  .sw-denomination-grid .sw-denomination-cell-zero.sw-denomination-cell-toned,
4310
4628
  .sw-denomination-grid .sw-denomination-cell-toned .sw-denomination-cell-zero { color: GrayText; }
4629
+ .sw-denomination-cell-tones-pill .sw-denomination-cell-toned .sw-denomination-cell-value:not(:empty) { color: inherit; outline: 1px solid CanvasText; }
4311
4630
  }
4312
4631
 
4313
4632
  .sw-denomination-strip td.sw-denomination-entry {
@@ -4424,6 +4743,74 @@ body {
4424
4743
  .sw-denomination-labels-plain .sw-denomination-label { color: CanvasText; }
4425
4744
  }
4426
4745
 
4746
+ .sw-denomination-scroll-framed {
4747
+ background: var(--sw-color-surface);
4748
+ border: 1px solid var(--sw-color-border);
4749
+ border-radius: var(--sw-radius-sm);
4750
+ box-sizing: border-box;
4751
+ }
4752
+
4753
+ .sw-denomination-strip.sw-denomination-framed :where(th, td) {
4754
+ padding: var(--sw-space-4) var(--sw-space-3);
4755
+ }
4756
+
4757
+ .sw-denomination-strip.sw-denomination-framed thead :where(th, td),
4758
+ .sw-denomination-strip.sw-denomination-framed thead .sw-denomination-corner:first-child {
4759
+ background: var(--sw-color-subtle);
4760
+ padding-block: var(--sw-space-2);
4761
+ }
4762
+
4763
+ .sw-denomination-strip.sw-denomination-framed :is(th, td) + :is(th, td) {
4764
+ border-inline-start: 1px solid var(--sw-color-border);
4765
+ }
4766
+
4767
+ .sw-denomination-strip.sw-denomination-framed :where(.sw-denomination-label) {
4768
+ backdrop-filter: none;
4769
+ -webkit-backdrop-filter: none;
4770
+ background: var(--sw-color-surface);
4771
+ }
4772
+
4773
+ .sw-denomination-strip.sw-denomination-framed .sw-denomination-label {
4774
+ padding-inline: var(--sw-space-3);
4775
+ }
4776
+
4777
+ .sw-denomination-strip.sw-denomination-framed .sw-denomination-head:not(.sw-denomination-total-head),
4778
+ .sw-denomination-strip.sw-denomination-framed .sw-denomination-cell {
4779
+ text-align: center;
4780
+ }
4781
+
4782
+ .sw-denomination-strip.sw-denomination-framed .sw-denomination-cell {
4783
+ font-size: 15px;
4784
+ letter-spacing: -0.2px;
4785
+ line-height: 20px;
4786
+ }
4787
+
4788
+ @media not all and (min-width: 48rem) {
4789
+ .sw-denomination-strip.sw-denomination-framed :where(th, td),
4790
+ .sw-denomination-strip.sw-denomination-framed .sw-denomination-label { padding-inline: var(--sw-space-2); }
4791
+ .sw-denomination-strip.sw-denomination-framed .sw-denomination-total,
4792
+ .sw-denomination-strip.sw-denomination-framed .sw-denomination-total-head { border-inline-start: 0; padding: 0; }
4793
+ }
4794
+
4795
+ @media (forced-colors: active) {
4796
+ .sw-denomination-scroll-framed,
4797
+ .sw-denomination-strip.sw-denomination-framed :is(th, td) + :is(th, td) { border-color: CanvasText; }
4798
+ }
4799
+
4800
+ .sw-denomination-totals-strong .sw-denomination-total {
4801
+ font-size: 15px;
4802
+ font-weight: 700;
4803
+ letter-spacing: -0.2px;
4804
+ line-height: 20px;
4805
+ }
4806
+
4807
+ .sw-denomination-totals-strong .sw-denomination-total-inline { font-weight: 700; }
4808
+
4809
+ .sw-denomination-totals-strong .sw-denomination-row-neutral .sw-denomination-total,
4810
+ .sw-denomination-totals-strong .sw-denomination-row-neutral .sw-denomination-total-inline {
4811
+ color: var(--sw-color-text);
4812
+ }
4813
+
4427
4814
  @media (forced-colors: active) {
4428
4815
  .sw-denomination-label { border-inline-start-color: CanvasText; color: CanvasText; }
4429
4816
  .sw-denomination-strip .sw-denomination-label::before { background: CanvasText; forced-color-adjust: none; }
@@ -4516,6 +4903,104 @@ body {
4516
4903
 
4517
4904
  [data-theme] .sw-field-adorned > input:disabled { background: transparent; }
4518
4905
 
4906
+ .sw-field-adorned.sw-field-search {
4907
+ gap: var(--sw-space-2);
4908
+ padding-inline-end: 0;
4909
+ }
4910
+
4911
+ .sw-field-search-leading {
4912
+ color: var(--sw-color-muted);
4913
+ display: inline-flex;
4914
+ flex: none;
4915
+ }
4916
+
4917
+ [data-theme] .sw-field-search > input[type='search'] {
4918
+ appearance: none;
4919
+ -webkit-appearance: none;
4920
+ }
4921
+
4922
+ .sw-field-search > input[type='search']::-webkit-search-cancel-button,
4923
+ .sw-field-search > input[type='search']::-webkit-search-decoration {
4924
+ -webkit-appearance: none;
4925
+ appearance: none;
4926
+ display: none;
4927
+ }
4928
+
4929
+ .sw-field-search > input:last-child {
4930
+ margin-inline-end: var(--sw-control-md-padding-inline);
4931
+ }
4932
+
4933
+ .sw-field-search-clear {
4934
+ align-items: center;
4935
+ align-self: stretch;
4936
+ appearance: none;
4937
+ background: transparent;
4938
+ border: 0;
4939
+ border-radius: var(--sw-radius-sm);
4940
+ color: inherit;
4941
+ cursor: pointer;
4942
+ display: inline-flex;
4943
+ flex: none;
4944
+ justify-content: center;
4945
+ margin: 0;
4946
+ min-width: var(--sw-control-xs-min-height);
4947
+ padding: 0 var(--sw-space-2);
4948
+ }
4949
+
4950
+ .sw-field-search-clear:focus-visible {
4951
+ outline: var(--sw-focus-ring-width) solid var(--sw-color-accent);
4952
+ outline-offset: calc(-1 * var(--sw-focus-ring-width));
4953
+ }
4954
+
4955
+ /* One ring at a time: the clear button's own while it has focus. */
4956
+ .sw-field-search:has(.sw-field-search-clear:focus-visible) {
4957
+ outline: none;
4958
+ }
4959
+
4960
+ .sw-field-search-clear:hover .sw-field-search-cross {
4961
+ background: var(--sw-color-text);
4962
+ }
4963
+
4964
+ .sw-field-xs .sw-field-search > input:last-child {
4965
+ margin-inline-end: var(--sw-control-xs-padding-inline);
4966
+ }
4967
+
4968
+ .sw-field-search-cross {
4969
+ background: var(--sw-color-muted);
4970
+ border-radius: var(--sw-radius-pill);
4971
+ display: inline-block;
4972
+ height: var(--sw-space-4);
4973
+ position: relative;
4974
+ width: var(--sw-space-4);
4975
+ }
4976
+
4977
+ .sw-field-search-cross::before,
4978
+ .sw-field-search-cross::after {
4979
+ background: var(--sw-color-surface);
4980
+ border-radius: 1px;
4981
+ content: '';
4982
+ height: 2px;
4983
+ inset: 0;
4984
+ margin: auto;
4985
+ position: absolute;
4986
+ width: calc(var(--sw-space-2) + 2px);
4987
+ }
4988
+
4989
+ .sw-field-search-cross::before { transform: rotate(45deg); }
4990
+ .sw-field-search-cross::after { transform: rotate(-45deg); }
4991
+
4992
+ @media (pointer: coarse) {
4993
+ .sw-field-search-clear { min-width: var(--sw-control-md-min-height); }
4994
+ }
4995
+
4996
+ @media (forced-colors: active) {
4997
+ .sw-field-search-leading { color: FieldText; }
4998
+ /* Backgrounds are forced in this mode; the disc keeps its own system colours. */
4999
+ .sw-field-search-cross { background: ButtonText; forced-color-adjust: none; }
5000
+ .sw-field-search-cross::before,
5001
+ .sw-field-search-cross::after { background: ButtonFace; }
5002
+ }
5003
+
4519
5004
  [data-theme] .sw-field-changed > :is(input, select, textarea),
4520
5005
  .sw-field-changed .sw-field-adorned {
4521
5006
  border-color: var(--sw-color-accent);
@@ -4645,6 +5130,12 @@ body {
4645
5130
  background-image: linear-gradient(color-mix(in srgb, var(--sw-color-accent) 12%, transparent), color-mix(in srgb, var(--sw-color-accent) 12%, transparent));
4646
5131
  }
4647
5132
 
5133
+ /* A plain limit: − at min and + at max keep their look, still disabled. */
5134
+ .sw-stepper-limit-plain .sw-stepper-button:disabled {
5135
+ cursor: default;
5136
+ opacity: 1;
5137
+ }
5138
+
4648
5139
  /* Read-only: the buttons keep their room, so the count lines up with an editable one. */
4649
5140
  .sw-stepper-readonly .sw-stepper-button { visibility: hidden; }
4650
5141
 
@@ -5100,6 +5591,7 @@ body {
5100
5591
 
5101
5592
  .sw-border { border: 1px solid var(--sw-color-border); }
5102
5593
  .sw-border-dashed { border: 1px dashed var(--sw-color-border); }
5594
+ .sw-border-bottom { border-width: 0 0 1px; border-style: solid; border-color: var(--sw-color-border); }
5103
5595
 
5104
5596
  @media (prefers-reduced-transparency: reduce) {
5105
5597
  .sw-card-glass,
@@ -5118,6 +5610,7 @@ body {
5118
5610
  .sw-select-list,
5119
5611
  .sw-action-menu-list,
5120
5612
  .sw-multi-select-panel,
5613
+ .sw-combobox-popup,
5121
5614
  .sw-date-field-calendar,
5122
5615
  .sw-toast {
5123
5616
  background: var(--sw-color-surface);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scalewing/react",
3
- "version": "1.30.0",
3
+ "version": "1.32.0",
4
4
  "description": "Scalewing DOM components and package-owned CSS utilities.",
5
5
  "type": "module",
6
6
  "license": "MIT",