@scalewing/react 1.16.0 → 1.18.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 (40) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +27 -4
  3. package/dist/components/ActionBar.d.ts +16 -6
  4. package/dist/components/ActionBar.js +1 -1
  5. package/dist/components/DenominationGrid.d.ts +2 -2
  6. package/dist/components/DenominationGrid.js +4 -2
  7. package/dist/components/Dialog.d.ts +32 -1
  8. package/dist/components/Dialog.js +4 -3
  9. package/dist/components/ScrollRegion.d.ts +4 -1
  10. package/dist/components/ScrollRegion.js +11 -2
  11. package/dist/components/Tabs.d.ts +22 -2
  12. package/dist/components/Tabs.js +4 -3
  13. package/dist/components/denomination-grid/DenominationStrip.js +2 -1
  14. package/dist/components/denomination-grid/DenominationTiles.d.ts +2 -2
  15. package/dist/components/denomination-grid/DenominationTiles.js +12 -7
  16. package/dist/components/denomination-grid/types.d.ts +19 -0
  17. package/dist/components/denomination-grid/validate.js +17 -0
  18. package/dist/components/dialog/DialogTitle.d.ts +15 -0
  19. package/dist/components/dialog/DialogTitle.js +14 -0
  20. package/dist/components/use-scroll-overflow.d.ts +9 -0
  21. package/dist/components/use-scroll-overflow.js +44 -0
  22. package/dist/css/css-action-bar.js +7 -0
  23. package/dist/css/css-denomination-cell-tones.d.ts +9 -0
  24. package/dist/css/css-denomination-cell-tones.js +52 -0
  25. package/dist/css/css-denomination-grid.js +10 -1
  26. package/dist/css/css-dialog.d.ts +2 -0
  27. package/dist/css/css-dialog.js +125 -3
  28. package/dist/css/css-scroll-region.d.ts +16 -2
  29. package/dist/css/css-scroll-region.js +68 -2
  30. package/dist/css/css-tabs.d.ts +1 -0
  31. package/dist/css/css-tabs.js +42 -1
  32. package/dist/css/stacking.js +3 -2
  33. package/dist/css/stylesheet.js +2 -0
  34. package/dist/denomination-cells.d.ts +3 -1
  35. package/dist/denomination-cells.js +6 -2
  36. package/dist/index.d.ts +2 -2
  37. package/dist/scroll-overflow.d.ts +14 -0
  38. package/dist/scroll-overflow.js +26 -0
  39. package/dist/styles.css +158 -0
  40. package/package.json +1 -1
package/dist/styles.css CHANGED
@@ -1363,6 +1363,12 @@ body {
1363
1363
  outline-offset: calc(-1 * var(--sw-focus-ring-width));
1364
1364
  }
1365
1365
 
1366
+ .sw-table-wrap.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); }
1367
+ .sw-table-wrap.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); }
1368
+ .sw-table-wrap.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); }
1369
+ .sw-table-wrap.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); }
1370
+ .sw-table-wrap.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); }
1371
+
1366
1372
  .sw-table {
1367
1373
  border-collapse: collapse;
1368
1374
  width: 100%;
@@ -1884,6 +1890,32 @@ body {
1884
1890
  max-width: min(var(--sw-dialog-max-lg), calc(100vw - var(--sw-space-8)));
1885
1891
  }
1886
1892
 
1893
+ @media not all and (min-width: 48rem) {
1894
+ .sw-dialog-sheet-below-md {
1895
+ border-radius: var(--sw-radius-lg) var(--sw-radius-lg) 0 0;
1896
+ border-width: 1px 0 0;
1897
+ margin: auto 0 0;
1898
+ max-height: min(100vh - var(--sw-space-8), 100dvh - var(--sw-space-8));
1899
+ max-width: none;
1900
+ padding-bottom: calc(var(--sw-space-5) + env(safe-area-inset-bottom, 0px));
1901
+ padding-left: max(var(--sw-space-5), env(safe-area-inset-left, 0px));
1902
+ padding-right: max(var(--sw-space-5), env(safe-area-inset-right, 0px));
1903
+ width: 100%;
1904
+ }
1905
+
1906
+ .sw-dialog-sheet-below-md[open] {
1907
+ animation: sw-dialog-sheet-in var(--sw-motion-default) var(--sw-motion-easing);
1908
+ }
1909
+ }
1910
+
1911
+ @keyframes sw-dialog-sheet-in {
1912
+ from { translate: 0 100%; }
1913
+ }
1914
+
1915
+ @media (prefers-reduced-motion: reduce) {
1916
+ .sw-dialog-sheet-below-md[open] { animation: none; }
1917
+ }
1918
+
1887
1919
  .sw-dialog::backdrop {
1888
1920
  background: color-mix(in srgb, var(--sw-color-text) 28%, transparent);
1889
1921
  }
@@ -1893,6 +1925,59 @@ body {
1893
1925
  outline-offset: var(--sw-focus-ring-offset);
1894
1926
  }
1895
1927
 
1928
+ .sw-dialog-header {
1929
+ align-items: flex-start;
1930
+ display: flex;
1931
+ gap: var(--sw-space-2);
1932
+ }
1933
+
1934
+ .sw-dialog-header > :first-child {
1935
+ flex: 1 1 auto;
1936
+ min-width: 0;
1937
+ }
1938
+
1939
+ .sw-button.sw-dialog-close {
1940
+ flex: none;
1941
+ padding-inline: 0;
1942
+ min-width: var(--sw-control-sm-min-height);
1943
+ margin-block: calc((28px - var(--sw-control-sm-min-height)) / 2);
1944
+ margin-inline-end: calc((var(--sw-space-4) - var(--sw-control-sm-min-height)) / 2);
1945
+ }
1946
+
1947
+ @media (pointer: coarse) {
1948
+ .sw-button.sw-dialog-close {
1949
+ min-height: var(--sw-control-md-min-height);
1950
+ min-width: var(--sw-control-md-min-height);
1951
+ margin-block: calc((28px - var(--sw-control-md-min-height)) / 2);
1952
+ margin-inline-end: calc((var(--sw-space-4) - var(--sw-control-md-min-height)) / 2);
1953
+ }
1954
+ }
1955
+
1956
+ /* Private control chrome: two strokes crossed in a space-4 square, in the
1957
+ button's color; borders, so forced colors keep them. */
1958
+ .sw-dialog-close-glyph {
1959
+ flex: none;
1960
+ height: var(--sw-space-4);
1961
+ position: relative;
1962
+ width: var(--sw-space-4);
1963
+ }
1964
+
1965
+ .sw-dialog-close-glyph::before,
1966
+ .sw-dialog-close-glyph::after {
1967
+ border-top: 2px solid currentColor;
1968
+ border-radius: 1px;
1969
+ box-sizing: border-box;
1970
+ content: '';
1971
+ left: 0;
1972
+ margin-top: -1px;
1973
+ position: absolute;
1974
+ top: 50%;
1975
+ width: 100%;
1976
+ }
1977
+
1978
+ .sw-dialog-close-glyph::before { transform: rotate(45deg); }
1979
+ .sw-dialog-close-glyph::after { transform: rotate(-45deg); }
1980
+
1896
1981
  .sw-accordion {
1897
1982
  background: var(--sw-glass-fill);
1898
1983
  border: 1px solid var(--sw-glass-border);
@@ -2266,14 +2351,21 @@ body {
2266
2351
  padding-right: max(var(--sw-space-4), env(safe-area-inset-right, 0px));
2267
2352
  }
2268
2353
 
2354
+ /* A Badge and a short line sit on one row a small gap apart; a line that
2355
+ does not fit beside the badge wraps under it. */
2269
2356
  .sw-action-bar-status {
2357
+ align-items: center;
2270
2358
  color: var(--sw-color-muted);
2359
+ column-gap: var(--sw-space-2);
2360
+ display: flex;
2271
2361
  flex: 1 1 auto;
2362
+ flex-wrap: wrap;
2272
2363
  font-family: var(--sw-font-sans);
2273
2364
  font-size: 13px;
2274
2365
  line-height: 18px;
2275
2366
  margin: 0;
2276
2367
  min-width: 0;
2368
+ row-gap: var(--sw-space-1);
2277
2369
  }
2278
2370
 
2279
2371
  /* With no status the live region stays in the page, so a first status is
@@ -2668,8 +2760,26 @@ body {
2668
2760
  outline-offset: var(--sw-focus-ring-offset);
2669
2761
  }
2670
2762
 
2763
+ .sw-tabs-sticky {
2764
+ background: color-mix(in srgb, var(--sw-color-background) 90%, transparent);
2765
+ backdrop-filter: blur(var(--sw-glass-blur)) saturate(var(--sw-glass-saturate));
2766
+ -webkit-backdrop-filter: blur(var(--sw-glass-blur)) saturate(var(--sw-glass-saturate));
2767
+ position: sticky;
2768
+ top: env(safe-area-inset-top, 0px);
2769
+ z-index: 4;
2770
+ }
2771
+
2772
+ @media (prefers-reduced-transparency: reduce) {
2773
+ .sw-tabs-sticky {
2774
+ background: var(--sw-color-background);
2775
+ backdrop-filter: none;
2776
+ -webkit-backdrop-filter: none;
2777
+ }
2778
+ }
2779
+
2671
2780
  @media (forced-colors: active) {
2672
2781
  .sw-tab-selected { border-bottom-color: Highlight; color: Highlight; }
2782
+ .sw-tabs-sticky { background: Canvas; backdrop-filter: none; -webkit-backdrop-filter: none; }
2673
2783
  }
2674
2784
 
2675
2785
  .sw-filter-chips {
@@ -2854,6 +2964,33 @@ body {
2854
2964
  outline-offset: calc(-1 * var(--sw-focus-ring-width));
2855
2965
  }
2856
2966
 
2967
+ .sw-denomination-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); }
2968
+ .sw-denomination-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); }
2969
+ .sw-denomination-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); }
2970
+ .sw-denomination-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); }
2971
+ .sw-denomination-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); }
2972
+
2973
+ .sw-denomination-scroll.sw-scroll-more-start .sw-denomination-strip .sw-denomination-label::after,
2974
+ .sw-denomination-scroll.sw-scroll-more-start .sw-denomination-strip thead .sw-denomination-corner:first-child::after {
2975
+ background: linear-gradient(to right, color-mix(in srgb, var(--sw-color-text) 28%, transparent), transparent);
2976
+ content: '';
2977
+ inset-block: 0;
2978
+ inset-inline-start: 100%;
2979
+ pointer-events: none;
2980
+ position: absolute;
2981
+ width: var(--sw-space-5);
2982
+ }
2983
+
2984
+ .sw-denomination-scroll.sw-scroll-more-start:dir(rtl) .sw-denomination-strip .sw-denomination-label::after,
2985
+ .sw-denomination-scroll.sw-scroll-more-start:dir(rtl) .sw-denomination-strip thead .sw-denomination-corner:first-child::after {
2986
+ background: linear-gradient(to left, color-mix(in srgb, var(--sw-color-text) 28%, transparent), transparent);
2987
+ }
2988
+
2989
+ @media (forced-colors: active) {
2990
+ .sw-denomination-scroll.sw-scroll-more-start .sw-denomination-strip .sw-denomination-label::after,
2991
+ .sw-denomination-scroll.sw-scroll-more-start .sw-denomination-strip thead .sw-denomination-corner:first-child::after { display: none; }
2992
+ }
2993
+
2857
2994
  .sw-denomination-strip {
2858
2995
  border-collapse: collapse;
2859
2996
  width: 100%;
@@ -3068,6 +3205,27 @@ body {
3068
3205
  .sw-denomination-tile-list { grid-template-columns: repeat(3, minmax(0, 1fr)); }
3069
3206
  }
3070
3207
 
3208
+ .sw-denomination-cell-tone-accent { --sw-denomination-cell-tone: var(--sw-color-accent); }
3209
+ .sw-denomination-cell-tone-success { --sw-denomination-cell-tone: var(--sw-color-success); }
3210
+ .sw-denomination-cell-tone-danger { --sw-denomination-cell-tone: var(--sw-color-danger); }
3211
+ .sw-denomination-cell-tone-warning { --sw-denomination-cell-tone: var(--sw-color-warning); }
3212
+
3213
+ .sw-denomination-grid .sw-denomination-cell.sw-denomination-cell-toned,
3214
+ .sw-denomination-grid .sw-denomination-cell-toned .sw-denomination-cell {
3215
+ color: var(--sw-denomination-cell-tone);
3216
+ opacity: 1;
3217
+ }
3218
+
3219
+ .sw-denomination-tile.sw-denomination-cell-toned {
3220
+ border-color: var(--sw-denomination-cell-tone);
3221
+ box-shadow: inset 0 0 0 1px var(--sw-denomination-cell-tone);
3222
+ }
3223
+
3224
+ @media (forced-colors: active) {
3225
+ .sw-denomination-grid .sw-denomination-cell-zero.sw-denomination-cell-toned,
3226
+ .sw-denomination-grid .sw-denomination-cell-toned .sw-denomination-cell-zero { color: GrayText; }
3227
+ }
3228
+
3071
3229
  @media (forced-colors: active) {
3072
3230
  .sw-denomination-label { border-inline-start-color: CanvasText; color: CanvasText; }
3073
3231
  .sw-denomination-strip .sw-denomination-label::before { background: CanvasText; forced-color-adjust: none; }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scalewing/react",
3
- "version": "1.16.0",
3
+ "version": "1.18.0",
4
4
  "description": "Scalewing DOM components and package-owned CSS utilities.",
5
5
  "type": "module",
6
6
  "license": "MIT",