@scalewing/react 1.8.0 → 1.9.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 (77) hide show
  1. package/CHANGELOG.md +140 -0
  2. package/README.md +69 -2
  3. package/dist/anchored-position.d.ts +28 -0
  4. package/dist/anchored-position.js +17 -0
  5. package/dist/calendar-keys.d.ts +19 -0
  6. package/dist/calendar-keys.js +39 -0
  7. package/dist/calendar-labels.d.ts +12 -0
  8. package/dist/calendar-labels.js +32 -0
  9. package/dist/calendar-month.d.ts +36 -0
  10. package/dist/calendar-month.js +111 -0
  11. package/dist/calendar-years.d.ts +14 -0
  12. package/dist/calendar-years.js +20 -0
  13. package/dist/components/Accordion.d.ts +6 -1
  14. package/dist/components/Accordion.js +12 -3
  15. package/dist/components/ActionBar.d.ts +30 -0
  16. package/dist/components/ActionBar.js +13 -0
  17. package/dist/components/Box.d.ts +7 -3
  18. package/dist/components/Box.js +2 -2
  19. package/dist/components/DateField.d.ts +15 -1
  20. package/dist/components/DateField.js +58 -18
  21. package/dist/components/Field.d.ts +5 -1
  22. package/dist/components/Field.js +16 -4
  23. package/dist/components/FieldAdornment.d.ts +20 -0
  24. package/dist/components/FieldAdornment.js +34 -0
  25. package/dist/components/Grid.d.ts +4 -1
  26. package/dist/components/Grid.js +2 -2
  27. package/dist/components/Progress.d.ts +3 -1
  28. package/dist/components/Progress.js +2 -2
  29. package/dist/components/date-field/CalendarDialog.d.ts +26 -0
  30. package/dist/components/date-field/CalendarDialog.js +93 -0
  31. package/dist/components/date-field/CalendarGrid.d.ts +23 -0
  32. package/dist/components/date-field/CalendarGrid.js +36 -0
  33. package/dist/components/date-field/CalendarHeader.d.ts +18 -0
  34. package/dist/components/date-field/CalendarHeader.js +33 -0
  35. package/dist/components/date-field/DateFieldGlyph.d.ts +9 -0
  36. package/dist/components/date-field/DateFieldGlyph.js +15 -0
  37. package/dist/components/date-field/use-anchored-popover.d.ts +8 -0
  38. package/dist/components/date-field/use-anchored-popover.js +61 -0
  39. package/dist/components/date-field/use-date-entry.d.ts +20 -0
  40. package/dist/components/date-field/use-date-entry.js +61 -0
  41. package/dist/components/date-field/use-lang-locale.d.ts +7 -0
  42. package/dist/components/date-field/use-lang-locale.js +17 -0
  43. package/dist/css/css-accordion.js +55 -8
  44. package/dist/css/css-action-bar.d.ts +4 -0
  45. package/dist/css/css-action-bar.js +99 -0
  46. package/dist/css/css-action-menu.js +2 -1
  47. package/dist/css/css-box-border.d.ts +5 -0
  48. package/dist/css/css-box-border.js +24 -0
  49. package/dist/css/css-chrome.js +2 -1
  50. package/dist/css/css-components.js +10 -6
  51. package/dist/css/css-data.js +2 -1
  52. package/dist/css/css-date-field.js +241 -11
  53. package/dist/css/css-denomination-grid.js +2 -1
  54. package/dist/css/css-document.d.ts +2 -0
  55. package/dist/css/css-document.js +2 -1
  56. package/dist/css/css-field.js +61 -1
  57. package/dist/css/css-select.js +2 -1
  58. package/dist/css/css-tooltip.js +2 -1
  59. package/dist/css/stacking.d.ts +10 -0
  60. package/dist/css/stacking.js +47 -0
  61. package/dist/css/stylesheet.js +4 -0
  62. package/dist/date-entry-validity.d.ts +10 -0
  63. package/dist/date-entry-validity.js +16 -0
  64. package/dist/date-entry.d.ts +32 -0
  65. package/dist/date-entry.js +106 -0
  66. package/dist/date-field-labels.d.ts +38 -0
  67. package/dist/date-field-labels.js +22 -0
  68. package/dist/date-field-locale.d.ts +8 -0
  69. package/dist/date-field-locale.js +27 -0
  70. package/dist/date-formatters.d.ts +13 -0
  71. package/dist/date-formatters.js +28 -0
  72. package/dist/date-only.d.ts +23 -0
  73. package/dist/date-only.js +63 -9
  74. package/dist/index.d.ts +5 -3
  75. package/dist/index.js +3 -2
  76. package/dist/styles.css +388 -21
  77. package/package.json +1 -1
package/dist/styles.css CHANGED
@@ -733,11 +733,11 @@ body {
733
733
  -webkit-backdrop-filter: blur(var(--sw-glass-blur)) saturate(var(--sw-glass-saturate));
734
734
  }
735
735
 
736
- /* Backdrop blur makes a glass surface its own stacking context, so an open popup inside it would paint under the next surface. */
737
- .sw-card-glass:has(.sw-select-list, .sw-action-menu-list:not([hidden]), .sw-tooltip:not([hidden])),
738
- .sw-accordion:has(.sw-select-list, .sw-action-menu-list:not([hidden]), .sw-tooltip:not([hidden])) {
736
+ /* Backdrop blur makes a glass surface its own stacking context, so it lifts while it holds an open popup (see stacking.ts). */
737
+ .sw-card-glass:has(.sw-select-list, .sw-action-menu-list:not([hidden]), .sw-tooltip:not([hidden]), .sw-date-field-calendar),
738
+ .sw-accordion:has(.sw-select-list, .sw-action-menu-list:not([hidden]), .sw-tooltip:not([hidden]), .sw-date-field-calendar) {
739
739
  position: relative;
740
- z-index: 1;
740
+ z-index: 3;
741
741
  }
742
742
 
743
743
  .sw-card-outlined {
@@ -1296,7 +1296,15 @@ body {
1296
1296
  line-height: 20px;
1297
1297
  }
1298
1298
 
1299
- .sw-date-field-input {
1299
+ .sw-date-field-control {
1300
+ align-self: flex-start;
1301
+ display: flex;
1302
+ max-width: 100%;
1303
+ min-width: 0;
1304
+ position: relative;
1305
+ }
1306
+
1307
+ .sw-date-field .sw-date-field-control > .sw-date-field-input {
1300
1308
  background: var(--sw-glass-fill);
1301
1309
  border: 1px solid var(--sw-color-border);
1302
1310
  border-radius: var(--sw-radius-sm);
@@ -1304,26 +1312,78 @@ body {
1304
1312
  color: var(--sw-color-text);
1305
1313
  font-family: var(--sw-font-sans);
1306
1314
  font-size: 17px;
1315
+ font-variant-numeric: tabular-nums;
1316
+ margin: 0;
1317
+ max-width: 100%;
1307
1318
  min-height: var(--sw-control-md-min-height);
1308
1319
  min-width: 0;
1309
- padding-inline: var(--sw-control-md-padding-inline);
1310
- width: 100%;
1320
+ padding-inline: var(--sw-control-md-padding-inline) var(--sw-control-md-min-height);
1321
+ width: calc(12ch + var(--sw-control-md-padding-inline) + var(--sw-control-md-min-height));
1322
+ }
1323
+
1324
+ .sw-date-field .sw-date-field-control > .sw-date-field-input::placeholder {
1325
+ color: var(--sw-color-muted);
1326
+ opacity: 1;
1327
+ }
1328
+
1329
+ .sw-date-field .sw-date-field-control > .sw-date-field-input:focus {
1330
+ box-shadow: none;
1331
+ outline: none;
1311
1332
  }
1312
1333
 
1313
- .sw-date-field-input:focus-visible {
1334
+ .sw-date-field .sw-date-field-control > .sw-date-field-input:focus-visible {
1314
1335
  outline: var(--sw-focus-ring-width) solid var(--sw-color-accent);
1315
1336
  outline-offset: var(--sw-focus-ring-offset);
1316
1337
  }
1317
1338
 
1318
- .sw-date-field-input[aria-invalid='true'] {
1339
+ .sw-date-field .sw-date-field-control > .sw-date-field-input[aria-invalid='true'] {
1319
1340
  border-color: var(--sw-color-danger);
1320
1341
  }
1321
1342
 
1322
- .sw-date-field-input:disabled {
1343
+ .sw-date-field .sw-date-field-control > .sw-date-field-input:disabled,
1344
+ .sw-date-field-button:disabled {
1323
1345
  cursor: not-allowed;
1324
1346
  opacity: var(--sw-disabled-opacity);
1325
1347
  }
1326
1348
 
1349
+ .sw-date-field-button {
1350
+ align-items: center;
1351
+ appearance: none;
1352
+ background: transparent;
1353
+ border: 0;
1354
+ border-radius: var(--sw-radius-sm);
1355
+ color: var(--sw-color-muted);
1356
+ cursor: pointer;
1357
+ display: flex;
1358
+ inset-block: 0;
1359
+ inset-inline-end: 0;
1360
+ justify-content: center;
1361
+ margin: 0;
1362
+ padding: 0;
1363
+ position: absolute;
1364
+ width: var(--sw-control-md-min-height);
1365
+ }
1366
+
1367
+ .sw-date-field-button:hover:not(:disabled),
1368
+ .sw-date-field-button[aria-expanded='true'] {
1369
+ color: var(--sw-color-text);
1370
+ }
1371
+
1372
+ .sw-date-field-glyph {
1373
+ fill: none;
1374
+ flex: none;
1375
+ height: var(--sw-space-5);
1376
+ stroke: currentColor;
1377
+ stroke-linecap: round;
1378
+ stroke-linejoin: round;
1379
+ stroke-width: 1.75;
1380
+ width: var(--sw-space-5);
1381
+ }
1382
+
1383
+ [dir='rtl'] .sw-date-field-glyph-directional {
1384
+ transform: scaleX(-1);
1385
+ }
1386
+
1327
1387
  .sw-date-field-description,
1328
1388
  .sw-date-field-error {
1329
1389
  font-family: var(--sw-font-sans);
@@ -1334,12 +1394,154 @@ body {
1334
1394
  .sw-date-field-description { color: var(--sw-color-muted); }
1335
1395
  .sw-date-field-error { color: var(--sw-color-danger); }
1336
1396
 
1397
+ .sw-date-field-calendar {
1398
+ background: var(--sw-glass-fill);
1399
+ border: 1px solid var(--sw-glass-border);
1400
+ border-radius: var(--sw-radius-md);
1401
+ box-shadow: var(--sw-elevation-md), inset 0 1px 0 var(--sw-glass-specular);
1402
+ backdrop-filter: blur(var(--sw-glass-blur)) saturate(var(--sw-glass-saturate));
1403
+ -webkit-backdrop-filter: blur(var(--sw-glass-blur)) saturate(var(--sw-glass-saturate));
1404
+ box-sizing: border-box;
1405
+ color: var(--sw-color-text);
1406
+ display: flex;
1407
+ flex-direction: column;
1408
+ font-family: var(--sw-font-sans);
1409
+ gap: var(--sw-space-2);
1410
+ height: auto;
1411
+ inset: auto;
1412
+ margin: 0;
1413
+ max-width: calc(100vw - var(--sw-space-2) - var(--sw-space-2));
1414
+ overflow: visible;
1415
+ padding: var(--sw-space-3);
1416
+ position: fixed;
1417
+ width: max-content;
1418
+ z-index: 10;
1419
+ }
1420
+
1421
+ .sw-date-field-header {
1422
+ align-items: center;
1423
+ display: flex;
1424
+ gap: var(--sw-space-1);
1425
+ justify-content: space-between;
1426
+ }
1427
+
1428
+ .sw-date-field-jump {
1429
+ display: flex;
1430
+ gap: var(--sw-space-1);
1431
+ min-width: 0;
1432
+ }
1433
+
1434
+ .sw-date-field-step {
1435
+ align-items: center;
1436
+ appearance: none;
1437
+ background: transparent;
1438
+ border: 0;
1439
+ border-radius: var(--sw-radius-pill);
1440
+ color: var(--sw-color-text);
1441
+ cursor: pointer;
1442
+ display: flex;
1443
+ flex: none;
1444
+ height: var(--sw-control-md-min-height);
1445
+ justify-content: center;
1446
+ margin: 0;
1447
+ padding: 0;
1448
+ width: var(--sw-control-md-min-height);
1449
+ }
1450
+
1451
+ .sw-date-field-step[aria-disabled='true'] {
1452
+ cursor: not-allowed;
1453
+ opacity: var(--sw-disabled-opacity);
1454
+ }
1455
+
1456
+ .sw-date-field-grid {
1457
+ border-collapse: separate;
1458
+ border-spacing: 0;
1459
+ table-layout: fixed;
1460
+ }
1461
+
1462
+ .sw-date-field-grid th {
1463
+ color: var(--sw-color-muted);
1464
+ font-size: 13px;
1465
+ font-weight: normal;
1466
+ line-height: 18px;
1467
+ padding: 0 0 var(--sw-space-1);
1468
+ text-align: center;
1469
+ }
1470
+
1471
+ .sw-date-field-day {
1472
+ border: 1px solid transparent;
1473
+ border-radius: var(--sw-radius-pill);
1474
+ box-sizing: border-box;
1475
+ cursor: pointer;
1476
+ font-size: 15px;
1477
+ font-variant-numeric: tabular-nums;
1478
+ height: var(--sw-control-md-min-height);
1479
+ padding: 0;
1480
+ text-align: center;
1481
+ vertical-align: middle;
1482
+ width: var(--sw-control-md-min-height);
1483
+ }
1484
+
1485
+ .sw-date-field-day-outside {
1486
+ color: var(--sw-color-muted);
1487
+ }
1488
+
1489
+ .sw-date-field-step:hover:not([aria-disabled='true']),
1490
+ .sw-date-field-day:hover:not([aria-disabled='true']) {
1491
+ background: color-mix(in srgb, var(--sw-color-muted) 16%, transparent);
1492
+ }
1493
+
1494
+ .sw-date-field-day[aria-current='date'] {
1495
+ border-color: var(--sw-color-accent);
1496
+ color: var(--sw-color-accent);
1497
+ font-weight: 600;
1498
+ }
1499
+
1500
+ .sw-date-field-day[aria-selected='true'],
1501
+ .sw-date-field-day[aria-selected='true']:hover {
1502
+ background: var(--sw-color-accent);
1503
+ border-color: var(--sw-color-accent);
1504
+ color: var(--sw-color-onAccent);
1505
+ font-weight: 600;
1506
+ }
1507
+
1508
+ .sw-date-field-day[aria-disabled='true'] {
1509
+ cursor: not-allowed;
1510
+ opacity: var(--sw-disabled-opacity);
1511
+ }
1512
+
1513
+ .sw-date-field-button:focus,
1514
+ .sw-date-field-step:focus,
1515
+ .sw-date-field-day:focus {
1516
+ outline: none;
1517
+ }
1518
+
1519
+ .sw-date-field-button:focus-visible,
1520
+ .sw-date-field-step:focus-visible,
1521
+ .sw-date-field-day:focus-visible {
1522
+ outline: var(--sw-focus-ring-width) solid var(--sw-color-accent);
1523
+ outline-offset: var(--sw-focus-ring-offset);
1524
+ }
1525
+
1526
+ .sw-date-field-footer {
1527
+ display: flex;
1528
+ gap: var(--sw-space-1);
1529
+ justify-content: flex-end;
1530
+ }
1531
+
1337
1532
  @media (prefers-reduced-transparency: reduce) {
1338
- .sw-date-field-input { background: var(--sw-color-surface); }
1533
+ .sw-date-field .sw-date-field-control > .sw-date-field-input { background: var(--sw-color-surface); }
1339
1534
  }
1340
1535
 
1341
1536
  @media (forced-colors: active) {
1342
- .sw-date-field-input[aria-invalid='true'] { border-color: CanvasText; }
1537
+ .sw-date-field .sw-date-field-control > .sw-date-field-input[aria-invalid='true'] { border-color: CanvasText; }
1538
+ .sw-date-field-calendar { border-color: CanvasText; }
1539
+ .sw-date-field-day[aria-current='date'] { border-color: CanvasText; }
1540
+ .sw-date-field-day[aria-selected='true'] {
1541
+ background: Highlight;
1542
+ color: HighlightText;
1543
+ forced-color-adjust: none;
1544
+ }
1343
1545
  }
1344
1546
 
1345
1547
  .sw-bar-chart {
@@ -1434,7 +1636,7 @@ body {
1434
1636
  .sw-app-header-sticky {
1435
1637
  position: sticky;
1436
1638
  top: 0;
1437
- z-index: 2;
1639
+ z-index: 4;
1438
1640
  }
1439
1641
 
1440
1642
  .sw-nav {
@@ -1513,18 +1715,27 @@ body {
1513
1715
  color: var(--sw-color-text);
1514
1716
  }
1515
1717
 
1718
+ /* A nested disclosure sits inside a larger surface, so its corners are smaller. */
1719
+ .sw-accordion-sm { border-radius: var(--sw-radius-md); }
1720
+
1516
1721
  .sw-accordion-summary {
1722
+ align-items: center;
1723
+ box-sizing: border-box;
1517
1724
  cursor: pointer;
1518
- display: list-item;
1725
+ display: flex;
1726
+ gap: var(--sw-space-3);
1727
+ list-style: none;
1519
1728
  min-height: var(--sw-control-md-min-height);
1520
1729
  }
1521
1730
 
1522
- .sw-accordion-summary::-webkit-details-marker {
1523
- color: var(--sw-color-muted);
1524
- }
1731
+ /* A nested header is an sm control, still a comfortable pointer and touch target. */
1732
+ .sw-accordion-sm > .sw-accordion-summary { min-height: var(--sw-control-sm-min-height); }
1525
1733
 
1526
- .sw-accordion-summary::marker {
1527
- color: var(--sw-color-muted);
1734
+ .sw-accordion-heading {
1735
+ display: flex;
1736
+ flex: 1 1 auto;
1737
+ flex-direction: column;
1738
+ min-width: 0;
1528
1739
  }
1529
1740
 
1530
1741
  .sw-accordion-summary:focus-visible {
@@ -1532,6 +1743,35 @@ body {
1532
1743
  outline-offset: var(--sw-focus-ring-offset);
1533
1744
  }
1534
1745
 
1746
+ /* A token chevron replaces the user-agent triangle: it points to the inline end when closed and down when open. */
1747
+ .sw-accordion-summary::-webkit-details-marker { display: none; }
1748
+
1749
+ .sw-accordion-marker {
1750
+ border-bottom: 2px solid var(--sw-color-muted);
1751
+ border-right: 2px solid var(--sw-color-muted);
1752
+ box-sizing: border-box;
1753
+ flex: none;
1754
+ height: var(--sw-space-2);
1755
+ margin-inline-end: var(--sw-space-1);
1756
+ transform: rotate(-45deg);
1757
+ transition: transform var(--sw-motion-default) var(--sw-motion-easing);
1758
+ width: var(--sw-space-2);
1759
+ }
1760
+
1761
+ .sw-accordion-marker:dir(rtl) { transform: rotate(135deg); }
1762
+
1763
+ .sw-accordion[open] > .sw-accordion-summary .sw-accordion-marker {
1764
+ transform: rotate(45deg);
1765
+ }
1766
+
1767
+ @media (prefers-reduced-motion: reduce) {
1768
+ .sw-accordion-marker { transition: none; }
1769
+ }
1770
+
1771
+ @media (forced-colors: active) {
1772
+ .sw-accordion-marker { border-color: CanvasText; }
1773
+ }
1774
+
1535
1775
  .sw-select {
1536
1776
  max-width: 100%;
1537
1777
  width: max-content;
@@ -1617,7 +1857,7 @@ body {
1617
1857
  padding: var(--sw-space-1);
1618
1858
  position: absolute;
1619
1859
  width: max-content;
1620
- z-index: 3;
1860
+ z-index: 10;
1621
1861
  }
1622
1862
 
1623
1863
  .sw-select-option {
@@ -1733,6 +1973,74 @@ body {
1733
1973
  color: var(--sw-color-danger);
1734
1974
  }
1735
1975
 
1976
+ .sw-action-bar {
1977
+ align-items: center;
1978
+ background: var(--sw-glass-fill);
1979
+ border: 1px solid var(--sw-glass-border);
1980
+ border-radius: var(--sw-radius-lg);
1981
+ box-shadow: inset 0 1px 0 var(--sw-glass-specular);
1982
+ backdrop-filter: blur(var(--sw-glass-blur)) saturate(var(--sw-glass-saturate));
1983
+ -webkit-backdrop-filter: blur(var(--sw-glass-blur)) saturate(var(--sw-glass-saturate));
1984
+ box-sizing: border-box;
1985
+ color: var(--sw-color-text);
1986
+ display: flex;
1987
+ flex-wrap: wrap;
1988
+ gap: var(--sw-space-2) var(--sw-space-4);
1989
+ padding-block: var(--sw-space-3);
1990
+ padding-left: max(var(--sw-space-4), env(safe-area-inset-left, 0px));
1991
+ padding-right: max(var(--sw-space-4), env(safe-area-inset-right, 0px));
1992
+ }
1993
+
1994
+ .sw-action-bar-status {
1995
+ color: var(--sw-color-muted);
1996
+ flex: 1 1 auto;
1997
+ font-family: var(--sw-font-sans);
1998
+ font-size: 13px;
1999
+ line-height: 18px;
2000
+ margin: 0;
2001
+ min-width: 0;
2002
+ }
2003
+
2004
+ /* With no status the live region stays in the page, so a first status is
2005
+ still announced, but it takes no room in the bar. */
2006
+ .sw-action-bar-status:empty {
2007
+ clip-path: inset(50%);
2008
+ height: 1px;
2009
+ overflow: hidden;
2010
+ position: absolute;
2011
+ width: 1px;
2012
+ }
2013
+
2014
+ .sw-action-bar-actions {
2015
+ align-items: center;
2016
+ display: flex;
2017
+ flex: 0 1 auto;
2018
+ flex-wrap: wrap;
2019
+ gap: var(--sw-space-2);
2020
+ justify-content: flex-end;
2021
+ margin-inline-start: auto;
2022
+ }
2023
+
2024
+ @media not all and (min-width: 48rem) {
2025
+ .sw-action-bar-status,
2026
+ .sw-action-bar-actions { flex-basis: 100%; }
2027
+ .sw-action-bar-actions > * { flex: 1 1 auto; }
2028
+ }
2029
+
2030
+ .sw-action-bar-sticky {
2031
+ bottom: calc(var(--sw-space-2) + env(safe-area-inset-bottom, 0px));
2032
+ position: sticky;
2033
+ z-index: 2;
2034
+ }
2035
+
2036
+ @media not all and (min-width: 48rem) {
2037
+ .sw-action-bar-sticky-below-md {
2038
+ bottom: calc(var(--sw-space-2) + env(safe-area-inset-bottom, 0px));
2039
+ position: sticky;
2040
+ z-index: 2;
2041
+ }
2042
+ }
2043
+
1736
2044
  .sw-switch {
1737
2045
  align-items: center;
1738
2046
  cursor: pointer;
@@ -2486,8 +2794,62 @@ body {
2486
2794
  border-color: var(--sw-color-danger);
2487
2795
  }
2488
2796
 
2797
+ .sw-field-adorned {
2798
+ background-color: var(--sw-glass-fill);
2799
+ border: 1px solid var(--sw-color-border);
2800
+ border-radius: var(--sw-radius-sm);
2801
+ color: inherit;
2802
+ font-family: inherit;
2803
+ font-size: inherit;
2804
+ padding-inline: var(--sw-control-md-padding-inline);
2805
+ align-items: center;
2806
+ box-sizing: border-box;
2807
+ cursor: text;
2808
+ display: flex;
2809
+ gap: var(--sw-space-1);
2810
+ min-height: var(--sw-control-md-min-height);
2811
+ }
2812
+
2813
+ [data-theme] .sw-field-adorned > input {
2814
+ align-self: stretch;
2815
+ background: transparent;
2816
+ border: 0;
2817
+ border-radius: 0;
2818
+ flex: 1 1 auto;
2819
+ min-height: 0;
2820
+ min-width: 0;
2821
+ padding-inline: 0;
2822
+ }
2823
+
2824
+ [data-theme] .sw-field-adorned > input:focus-visible { outline: none; }
2825
+
2826
+ .sw-field-adorned:focus-within {
2827
+ outline: var(--sw-focus-ring-width) solid var(--sw-color-accent);
2828
+ outline-offset: var(--sw-focus-ring-offset);
2829
+ }
2830
+
2831
+ .sw-field-prefix,
2832
+ .sw-field-suffix {
2833
+ color: var(--sw-color-muted);
2834
+ flex: none;
2835
+ user-select: none;
2836
+ white-space: nowrap;
2837
+ }
2838
+
2839
+ .sw-field-xs .sw-field-adorned {
2840
+ font-size: 13px;
2841
+ letter-spacing: -0.08px;
2842
+ line-height: 18px;
2843
+ min-height: var(--sw-control-xs-min-height);
2844
+ padding-inline: var(--sw-control-xs-padding-inline);
2845
+ }
2846
+
2847
+ .sw-field-invalid .sw-field-adorned { border-color: var(--sw-color-danger); }
2848
+
2489
2849
  @media (forced-colors: active) {
2490
- [data-theme] .sw-field-invalid :is(input, select, textarea) { border-color: Mark; }
2850
+ [data-theme] .sw-field-invalid :is(input, select, textarea),
2851
+ .sw-field-invalid .sw-field-adorned { border-color: Mark; }
2852
+ .sw-field-prefix, .sw-field-suffix { color: CanvasText; }
2491
2853
  .sw-field-error, .sw-field-required { color: Mark; }
2492
2854
  }
2493
2855
 
@@ -2650,9 +3012,13 @@ body {
2650
3012
  .sw-hide-below-md { display: none; }
2651
3013
  }
2652
3014
 
3015
+ .sw-border { border: 1px solid var(--sw-color-border); }
3016
+ .sw-border-dashed { border: 1px dashed var(--sw-color-border); }
3017
+
2653
3018
  @media (prefers-reduced-transparency: reduce) {
2654
3019
  .sw-card-glass,
2655
3020
  .sw-app-header,
3021
+ .sw-action-bar,
2656
3022
  .sw-badge-neutral,
2657
3023
  .sw-segmented,
2658
3024
  .sw-table-sticky thead th,
@@ -2663,6 +3029,7 @@ body {
2663
3029
  .sw-accordion,
2664
3030
  .sw-select-list,
2665
3031
  .sw-action-menu-list,
3032
+ .sw-date-field-calendar,
2666
3033
  .sw-toast {
2667
3034
  background: var(--sw-color-surface);
2668
3035
  backdrop-filter: none;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scalewing/react",
3
- "version": "1.8.0",
3
+ "version": "1.9.0",
4
4
  "description": "Scalewing DOM components and package-owned CSS utilities.",
5
5
  "type": "module",
6
6
  "license": "MIT",