@salt-ds/core 1.14.0 → 1.16.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 (164) hide show
  1. package/css/salt-core.css +261 -9
  2. package/dist-cjs/accordion/AccordionHeader.css.js +1 -1
  3. package/dist-cjs/card/Card.css.js +1 -1
  4. package/dist-cjs/file-drop-zone/FileDropZone.css.js +6 -0
  5. package/dist-cjs/file-drop-zone/FileDropZone.css.js.map +1 -0
  6. package/dist-cjs/file-drop-zone/FileDropZone.js +99 -0
  7. package/dist-cjs/file-drop-zone/FileDropZone.js.map +1 -0
  8. package/dist-cjs/file-drop-zone/FileDropZoneIcon.js +25 -0
  9. package/dist-cjs/file-drop-zone/FileDropZoneIcon.js.map +1 -0
  10. package/dist-cjs/file-drop-zone/FileDropZoneTrigger.js +58 -0
  11. package/dist-cjs/file-drop-zone/FileDropZoneTrigger.js.map +1 -0
  12. package/dist-cjs/file-drop-zone/internal/utils.js +30 -0
  13. package/dist-cjs/file-drop-zone/internal/utils.js.map +1 -0
  14. package/dist-cjs/index.js +20 -0
  15. package/dist-cjs/index.js.map +1 -1
  16. package/dist-cjs/navigation-item/ConditionalWrapper.js +35 -0
  17. package/dist-cjs/navigation-item/ConditionalWrapper.js.map +1 -0
  18. package/dist-cjs/navigation-item/ExpansionIcon.js +29 -0
  19. package/dist-cjs/navigation-item/ExpansionIcon.js.map +1 -0
  20. package/dist-cjs/navigation-item/NavigationItem.css.js +6 -0
  21. package/dist-cjs/navigation-item/NavigationItem.css.js.map +1 -0
  22. package/dist-cjs/navigation-item/NavigationItem.js +82 -0
  23. package/dist-cjs/navigation-item/NavigationItem.js.map +1 -0
  24. package/dist-cjs/pagination/CompactInput.css.js +6 -0
  25. package/dist-cjs/pagination/CompactInput.css.js.map +1 -0
  26. package/dist-cjs/pagination/CompactInput.js +67 -0
  27. package/dist-cjs/pagination/CompactInput.js.map +1 -0
  28. package/dist-cjs/pagination/CompactPaginator.css.js +6 -0
  29. package/dist-cjs/pagination/CompactPaginator.css.js.map +1 -0
  30. package/dist-cjs/pagination/CompactPaginator.js +87 -0
  31. package/dist-cjs/pagination/CompactPaginator.js.map +1 -0
  32. package/dist-cjs/pagination/GoToInput.css.js +6 -0
  33. package/dist-cjs/pagination/GoToInput.css.js.map +1 -0
  34. package/dist-cjs/pagination/GoToInput.js +92 -0
  35. package/dist-cjs/pagination/GoToInput.js.map +1 -0
  36. package/dist-cjs/pagination/PageButton.css.js +6 -0
  37. package/dist-cjs/pagination/PageButton.css.js.map +1 -0
  38. package/dist-cjs/pagination/PageButton.js +49 -0
  39. package/dist-cjs/pagination/PageButton.js.map +1 -0
  40. package/dist-cjs/pagination/PageRanges.css.js +6 -0
  41. package/dist-cjs/pagination/PageRanges.css.js.map +1 -0
  42. package/dist-cjs/pagination/PageRanges.js +78 -0
  43. package/dist-cjs/pagination/PageRanges.js.map +1 -0
  44. package/dist-cjs/pagination/Pagination.css.js +6 -0
  45. package/dist-cjs/pagination/Pagination.css.js.map +1 -0
  46. package/dist-cjs/pagination/Pagination.js +85 -0
  47. package/dist-cjs/pagination/Pagination.js.map +1 -0
  48. package/dist-cjs/pagination/PaginationContext.js +17 -0
  49. package/dist-cjs/pagination/PaginationContext.js.map +1 -0
  50. package/dist-cjs/pagination/Paginator.css.js +6 -0
  51. package/dist-cjs/pagination/Paginator.css.js.map +1 -0
  52. package/dist-cjs/pagination/Paginator.js +74 -0
  53. package/dist-cjs/pagination/Paginator.js.map +1 -0
  54. package/dist-cjs/pagination/usePagination.js +27 -0
  55. package/dist-cjs/pagination/usePagination.js.map +1 -0
  56. package/dist-cjs/pagination/usePaginationContext.js +19 -0
  57. package/dist-cjs/pagination/usePaginationContext.js.map +1 -0
  58. package/dist-cjs/panel/Panel.css.js +1 -1
  59. package/dist-cjs/scrim/Scrim.css.js +6 -0
  60. package/dist-cjs/scrim/Scrim.css.js.map +1 -0
  61. package/dist-cjs/scrim/Scrim.js +44 -0
  62. package/dist-cjs/scrim/Scrim.js.map +1 -0
  63. package/dist-cjs/toggle-button-group/ToggleButtonGroup.js +3 -2
  64. package/dist-cjs/toggle-button-group/ToggleButtonGroup.js.map +1 -1
  65. package/dist-cjs/toggle-button-group/ToggleButtonGroupContext.js.map +1 -1
  66. package/dist-cjs/tooltip/Tooltip.js +2 -1
  67. package/dist-cjs/tooltip/Tooltip.js.map +1 -1
  68. package/dist-cjs/utils/useFloatingUI/useFloatingUI.js +17 -2
  69. package/dist-cjs/utils/useFloatingUI/useFloatingUI.js.map +1 -1
  70. package/dist-es/accordion/AccordionHeader.css.js +1 -1
  71. package/dist-es/card/Card.css.js +1 -1
  72. package/dist-es/file-drop-zone/FileDropZone.css.js +4 -0
  73. package/dist-es/file-drop-zone/FileDropZone.css.js.map +1 -0
  74. package/dist-es/file-drop-zone/FileDropZone.js +95 -0
  75. package/dist-es/file-drop-zone/FileDropZone.js.map +1 -0
  76. package/dist-es/file-drop-zone/FileDropZoneIcon.js +21 -0
  77. package/dist-es/file-drop-zone/FileDropZoneIcon.js.map +1 -0
  78. package/dist-es/file-drop-zone/FileDropZoneTrigger.js +54 -0
  79. package/dist-es/file-drop-zone/FileDropZoneTrigger.js.map +1 -0
  80. package/dist-es/file-drop-zone/internal/utils.js +25 -0
  81. package/dist-es/file-drop-zone/internal/utils.js.map +1 -0
  82. package/dist-es/index.js +10 -0
  83. package/dist-es/index.js.map +1 -1
  84. package/dist-es/navigation-item/ConditionalWrapper.js +31 -0
  85. package/dist-es/navigation-item/ConditionalWrapper.js.map +1 -0
  86. package/dist-es/navigation-item/ExpansionIcon.js +25 -0
  87. package/dist-es/navigation-item/ExpansionIcon.js.map +1 -0
  88. package/dist-es/navigation-item/NavigationItem.css.js +4 -0
  89. package/dist-es/navigation-item/NavigationItem.css.js.map +1 -0
  90. package/dist-es/navigation-item/NavigationItem.js +78 -0
  91. package/dist-es/navigation-item/NavigationItem.js.map +1 -0
  92. package/dist-es/pagination/CompactInput.css.js +4 -0
  93. package/dist-es/pagination/CompactInput.css.js.map +1 -0
  94. package/dist-es/pagination/CompactInput.js +63 -0
  95. package/dist-es/pagination/CompactInput.js.map +1 -0
  96. package/dist-es/pagination/CompactPaginator.css.js +4 -0
  97. package/dist-es/pagination/CompactPaginator.css.js.map +1 -0
  98. package/dist-es/pagination/CompactPaginator.js +83 -0
  99. package/dist-es/pagination/CompactPaginator.js.map +1 -0
  100. package/dist-es/pagination/GoToInput.css.js +4 -0
  101. package/dist-es/pagination/GoToInput.css.js.map +1 -0
  102. package/dist-es/pagination/GoToInput.js +88 -0
  103. package/dist-es/pagination/GoToInput.js.map +1 -0
  104. package/dist-es/pagination/PageButton.css.js +4 -0
  105. package/dist-es/pagination/PageButton.css.js.map +1 -0
  106. package/dist-es/pagination/PageButton.js +45 -0
  107. package/dist-es/pagination/PageButton.js.map +1 -0
  108. package/dist-es/pagination/PageRanges.css.js +4 -0
  109. package/dist-es/pagination/PageRanges.css.js.map +1 -0
  110. package/dist-es/pagination/PageRanges.js +74 -0
  111. package/dist-es/pagination/PageRanges.js.map +1 -0
  112. package/dist-es/pagination/Pagination.css.js +4 -0
  113. package/dist-es/pagination/Pagination.css.js.map +1 -0
  114. package/dist-es/pagination/Pagination.js +81 -0
  115. package/dist-es/pagination/Pagination.js.map +1 -0
  116. package/dist-es/pagination/PaginationContext.js +13 -0
  117. package/dist-es/pagination/PaginationContext.js.map +1 -0
  118. package/dist-es/pagination/Paginator.css.js +4 -0
  119. package/dist-es/pagination/Paginator.css.js.map +1 -0
  120. package/dist-es/pagination/Paginator.js +70 -0
  121. package/dist-es/pagination/Paginator.js.map +1 -0
  122. package/dist-es/pagination/usePagination.js +23 -0
  123. package/dist-es/pagination/usePagination.js.map +1 -0
  124. package/dist-es/pagination/usePaginationContext.js +15 -0
  125. package/dist-es/pagination/usePaginationContext.js.map +1 -0
  126. package/dist-es/panel/Panel.css.js +1 -1
  127. package/dist-es/scrim/Scrim.css.js +4 -0
  128. package/dist-es/scrim/Scrim.css.js.map +1 -0
  129. package/dist-es/scrim/Scrim.js +40 -0
  130. package/dist-es/scrim/Scrim.js.map +1 -0
  131. package/dist-es/toggle-button-group/ToggleButtonGroup.js +3 -2
  132. package/dist-es/toggle-button-group/ToggleButtonGroup.js.map +1 -1
  133. package/dist-es/toggle-button-group/ToggleButtonGroupContext.js.map +1 -1
  134. package/dist-es/tooltip/Tooltip.js +2 -1
  135. package/dist-es/tooltip/Tooltip.js.map +1 -1
  136. package/dist-es/utils/useFloatingUI/useFloatingUI.js +18 -3
  137. package/dist-es/utils/useFloatingUI/useFloatingUI.js.map +1 -1
  138. package/dist-types/file-drop-zone/FileDropZone.d.ts +17 -0
  139. package/dist-types/file-drop-zone/FileDropZoneIcon.d.ts +9 -0
  140. package/dist-types/file-drop-zone/FileDropZoneTrigger.d.ts +22 -0
  141. package/dist-types/file-drop-zone/index.d.ts +3 -0
  142. package/dist-types/file-drop-zone/internal/utils.d.ts +3 -0
  143. package/dist-types/index.d.ts +4 -0
  144. package/dist-types/navigation-item/ConditionalWrapper.d.ts +8 -0
  145. package/dist-types/navigation-item/ExpansionIcon.d.ts +2 -0
  146. package/dist-types/navigation-item/NavigationItem.d.ts +36 -0
  147. package/dist-types/navigation-item/index.d.ts +1 -0
  148. package/dist-types/pagination/CompactInput.d.ts +2 -0
  149. package/dist-types/pagination/CompactPaginator.d.ts +1 -0
  150. package/dist-types/pagination/GoToInput.d.ts +16 -0
  151. package/dist-types/pagination/PageButton.d.ts +6 -0
  152. package/dist-types/pagination/PageRanges.d.ts +5 -0
  153. package/dist-types/pagination/Pagination.d.ts +20 -0
  154. package/dist-types/pagination/PaginationContext.d.ts +7 -0
  155. package/dist-types/pagination/Paginator.d.ts +12 -0
  156. package/dist-types/pagination/index.d.ts +5 -0
  157. package/dist-types/pagination/usePagination.d.ts +2 -0
  158. package/dist-types/pagination/usePaginationContext.d.ts +1 -0
  159. package/dist-types/scrim/Scrim.d.ts +13 -0
  160. package/dist-types/scrim/index.d.ts +1 -0
  161. package/dist-types/toggle-button-group/ToggleButtonGroup.d.ts +3 -2
  162. package/dist-types/toggle-button-group/ToggleButtonGroupContext.d.ts +5 -3
  163. package/dist-types/utils/useFloatingUI/useFloatingUI.d.ts +6 -2
  164. package/package.json +1 -1
package/css/salt-core.css CHANGED
@@ -42,6 +42,7 @@
42
42
  .saltAccordionHeader:disabled {
43
43
  background: var(--salt-actionable-secondary-background);
44
44
  color: var(--salt-content-primary-foreground-disabled);
45
+ cursor: var(--salt-actionable-cursor-disabled);
45
46
  }
46
47
  .saltAccordionHeader-icon {
47
48
  transition: transform var(--salt-duration-perceptible) ease-in-out;
@@ -350,10 +351,6 @@
350
351
  border-width: var(--salt-size-border);
351
352
  border-style: var(--salt-container-borderStyle);
352
353
  padding: var(--saltCard-padding, var(--salt-spacing-300));
353
- font-family: var(--salt-text-fontFamily);
354
- font-size: var(--salt-text-fontSize);
355
- font-weight: var(--salt-text-fontWeight);
356
- line-height: var(--salt-text-lineHeight);
357
354
  }
358
355
  .saltCard-primary {
359
356
  background: var(--saltCard-background, var(--salt-container-primary-background));
@@ -628,6 +625,43 @@ a:link .saltInteractableCard * {
628
625
  color: var(--salt-content-primary-foreground);
629
626
  }
630
627
 
628
+ /* src/file-drop-zone/FileDropZone.css */
629
+ .saltFileDropZone {
630
+ color: var(--saltFileDropZone-text-color, var(--salt-text-primary-foreground));
631
+ display: inline-flex;
632
+ background: var(--saltFileDropZone-background, var(--salt-container-primary-background));
633
+ text-align: center;
634
+ align-items: center;
635
+ justify-content: center;
636
+ border: var(--saltFileDropZone-border, var(--salt-size-border-strong) var(--salt-target-borderStyle) var(--salt-container-primary-borderColor));
637
+ flex-direction: column;
638
+ padding: var(--salt-spacing-200);
639
+ gap: var(--salt-spacing-200);
640
+ width: 100%;
641
+ font-size: var(--saltFileDropZone-fontSize, var(--salt-text-fontSize));
642
+ font-family: var(--saltFileDropZone-fontFamily, var(--salt-text-fontFamily));
643
+ line-height: var(--saltFileDropZone-lineHeight, var(--salt-text-lineHeight));
644
+ }
645
+ .saltFileDropZone-active {
646
+ background: var(--salt-target-background-hover);
647
+ border: var(--salt-size-border-strong) var(--salt-target-borderStyle-hover) var(--salt-target-borderColor-hover);
648
+ }
649
+ .saltFileDropZone-error {
650
+ border: var(--salt-size-border-strong) var(--salt-target-borderStyle) var(--salt-status-error-borderColor);
651
+ }
652
+ .saltFileDropZone-success {
653
+ border: var(--salt-size-border-strong) var(--salt-target-borderStyle) var(--salt-status-success-borderColor);
654
+ }
655
+ .saltFileDropZone .input-hidden {
656
+ display: none;
657
+ }
658
+ .saltFileDropZone-disabled {
659
+ background: var(--salt-container-primary-background-disabled);
660
+ border: var(--salt-size-border-strong) var(--salt-target-borderStyle) var(--salt-container-primary-borderColor-disabled);
661
+ cursor: var(--salt-target-cursor-disabled);
662
+ color: var(--salt-content-primary-foreground-disabled);
663
+ }
664
+
631
665
  /* src/flex-item/FlexItem.css */
632
666
  .saltFlexItem {
633
667
  --saltFlexItem-alignment: auto;
@@ -1258,6 +1292,205 @@ a:link .saltInteractableCard * {
1258
1292
  --saltButton-height: calc(var(--salt-size-base) - var(--salt-spacing-100));
1259
1293
  }
1260
1294
 
1295
+ /* src/navigation-item/NavigationItem.css */
1296
+ .saltNavigationItem-wrapper {
1297
+ display: flex;
1298
+ gap: var(--salt-spacing-100);
1299
+ align-items: center;
1300
+ position: relative;
1301
+ background: none;
1302
+ border: none;
1303
+ font-size: var(--salt-text-fontSize);
1304
+ text-decoration: none;
1305
+ cursor: var(--salt-selectable-cursor-hover);
1306
+ transition: all var(--salt-duration-instant) ease-in-out;
1307
+ }
1308
+ .saltNavigationItem-rootItem {
1309
+ font-weight: var(--salt-text-fontWeight-strong);
1310
+ }
1311
+ .saltNavigationItem-label .saltIcon {
1312
+ top: var(--salt-spacing-25);
1313
+ }
1314
+ .saltNavigationItem-horizontal {
1315
+ min-height: calc(var(--salt-size-base) + var(--salt-spacing-100) * 2);
1316
+ padding: 0 var(--salt-spacing-100);
1317
+ width: fit-content;
1318
+ }
1319
+ .saltNavigationItem-vertical {
1320
+ min-height: calc(var(--salt-size-base) + var(--salt-spacing-50) * 2);
1321
+ padding-top: 0;
1322
+ padding-bottom: 0;
1323
+ padding-right: var(--salt-spacing-100);
1324
+ padding-left: calc(var(--salt-spacing-300) * (min(var(--saltNavigationItem-level, 0) + 1, 2)));
1325
+ width: 100%;
1326
+ }
1327
+ .saltNavigationItem-label {
1328
+ color: var(--salt-content-primary-foreground);
1329
+ line-height: var(--salt-text-lineHeight);
1330
+ font-family: var(--salt-text-fontFamily);
1331
+ padding-left: calc(var(--saltNavigationItem-level, 0) * var(--salt-spacing-100));
1332
+ flex: 1;
1333
+ text-align: left;
1334
+ display: flex;
1335
+ align-items: baseline;
1336
+ gap: var(--salt-spacing-100);
1337
+ }
1338
+ .saltNavigationItem-horizontal {
1339
+ min-height: calc(var(--salt-size-base) + var(--salt-spacing-100) * 2);
1340
+ padding: 0 var(--salt-spacing-100);
1341
+ width: fit-content;
1342
+ }
1343
+ .saltNavigationItem-vertical {
1344
+ --saltButton-margin: var(--salt-spacing-50) 0;
1345
+ min-height: calc(var(--salt-size-base) + var(--salt-spacing-50) * 2);
1346
+ padding-right: var(--salt-spacing-100);
1347
+ padding-left: calc(var(--salt-spacing-300) * (min(var(--saltNavigationItem-level, 0) + 1, 2)));
1348
+ width: 100%;
1349
+ }
1350
+ .saltNavigationItem-label {
1351
+ color: var(--salt-content-primary-foreground);
1352
+ line-height: var(--salt-text-lineHeight);
1353
+ font-family: var(--salt-text-fontFamily);
1354
+ padding-left: calc(var(--saltNavigationItem-level, 0) * var(--salt-spacing-100));
1355
+ flex: 1;
1356
+ text-align: left;
1357
+ display: flex;
1358
+ align-items: baseline;
1359
+ gap: var(--salt-spacing-100);
1360
+ }
1361
+ .saltNavigationItem-label .saltBadge {
1362
+ margin-left: auto;
1363
+ }
1364
+ .saltNavigationItem-wrapper:focus-visible {
1365
+ outline: var(--salt-focused-outline);
1366
+ }
1367
+ .saltNavigationItem-wrapper:focus:not(:focus-visible) {
1368
+ outline: 0;
1369
+ }
1370
+ .saltNavigationItem-wrapper::after {
1371
+ content: "";
1372
+ position: absolute;
1373
+ top: var(--salt-spacing-25);
1374
+ left: 0;
1375
+ display: block;
1376
+ }
1377
+ .saltNavigationItem-horizontal::after {
1378
+ width: 100%;
1379
+ height: var(--salt-size-indicator);
1380
+ }
1381
+ .saltNavigationItem-vertical::after {
1382
+ width: var(--salt-size-indicator);
1383
+ left: var(--salt-spacing-25);
1384
+ height: calc(100% - var(--salt-spacing-50));
1385
+ }
1386
+ .saltNavigationItem-wrapper:hover::after,
1387
+ .saltNavigationItem-wrapper:focus-visible::after {
1388
+ background: var(--salt-navigable-indicator-hover);
1389
+ transition: all var(--salt-duration-perceptible) ease-in-out;
1390
+ }
1391
+ .saltNavigationItem-active::after,
1392
+ .saltNavigationItem-active:hover::after,
1393
+ .saltNavigationItem-active:focus::after {
1394
+ background: var(--salt-navigable-indicator-active);
1395
+ transition: all var(--salt-duration-perceptible) ease-in-out;
1396
+ }
1397
+
1398
+ /* src/pagination/CompactInput.css */
1399
+ .saltCompactInput {
1400
+ --saltInput-paddingLeft: 0;
1401
+ --saltInput-paddingRight: 0;
1402
+ }
1403
+ .saltCompactInput-defaultSize.saltInput {
1404
+ --saltInput-minWidth: var(--salt-size-base);
1405
+ width: var(--salt-size-base);
1406
+ }
1407
+
1408
+ /* src/pagination/CompactPaginator.css */
1409
+ .saltCompactPaginator {
1410
+ flex-wrap: nowrap;
1411
+ display: flex;
1412
+ gap: var(--salt-spacing-100);
1413
+ align-items: center;
1414
+ }
1415
+ .saltCompactPaginator-arrowButton {
1416
+ --saltButton-width: var(--salt-size-base);
1417
+ --saltButton-height: var(--salt-size-base);
1418
+ --saltButton-padding: var(--salt-spacing-100);
1419
+ }
1420
+
1421
+ /* src/pagination/GoToInput.css */
1422
+ .saltGoToInput.saltFormField {
1423
+ display: flex;
1424
+ flex-direction: row;
1425
+ gap: var(--salt-spacing-100);
1426
+ align-items: baseline;
1427
+ text-wrap: nowrap;
1428
+ }
1429
+ .saltGoToInput-input {
1430
+ height: var(--salt-size-base);
1431
+ --saltInput-minWidth: unset;
1432
+ }
1433
+ .saltGoToInput-inputDefaultSize {
1434
+ --saltInput-minWidth: var(--salt-size-base);
1435
+ max-width: var(--salt-size-base);
1436
+ width: var(--salt-size-base);
1437
+ }
1438
+
1439
+ /* src/pagination/PageButton.css */
1440
+ .saltPageButton {
1441
+ --saltButton-minWidth: var(--salt-size-base);
1442
+ --saltButton-fontWeight: var(--salt-text-fontWeight);
1443
+ --saltButton-height: var(--salt-size-base);
1444
+ --saltButton-text-color: var(--salt-content-primary-foreground);
1445
+ --saltButton-background-active: var(--salt-selectable-background-selected);
1446
+ --saltButton-text-color-active: var(--salt-content-primary-foreground);
1447
+ }
1448
+ .saltPageButton:hover,
1449
+ .saltPageButton:focus-visible {
1450
+ --saltButton-background-hover: var(--salt-selectable-background-hover);
1451
+ }
1452
+ .saltPageButton:disabled {
1453
+ --saltButton-text-color-disabled: var(--salt-content-secondary-foreground);
1454
+ --saltButton-cursor-disabled: var(--salt-editable-cursor-readonly);
1455
+ }
1456
+ .saltPageButton-selected {
1457
+ --saltButton-background: var(--salt-selectable-background-selected);
1458
+ }
1459
+ .saltPageButton-selected:focus-visible {
1460
+ --saltButton-background-hover: var(--salt-selectable-background-selected);
1461
+ }
1462
+ .saltPageButton-fixed {
1463
+ --saltButton-padding: 0;
1464
+ }
1465
+
1466
+ /* src/pagination/PageRanges.css */
1467
+ .saltPageRanges-ellipsis {
1468
+ display: inline-flex;
1469
+ width: var(--salt-size-base);
1470
+ height: var(--salt-size-base);
1471
+ line-height: var(--salt-size-base);
1472
+ justify-content: center;
1473
+ }
1474
+
1475
+ /* src/pagination/Pagination.css */
1476
+ .saltPagination {
1477
+ display: flex;
1478
+ flex-direction: row;
1479
+ align-items: center;
1480
+ }
1481
+
1482
+ /* src/pagination/Paginator.css */
1483
+ .saltPaginator {
1484
+ display: flex;
1485
+ flex-wrap: nowrap;
1486
+ }
1487
+ .saltPaginator-arrowButton-previous {
1488
+ --saltButton-margin: 0 var(--salt-spacing-100) 0 0;
1489
+ }
1490
+ .saltPaginator-arrowButton-next {
1491
+ --saltButton-margin: 0 0 0 var(--salt-spacing-100);
1492
+ }
1493
+
1261
1494
  /* src/panel/Panel.css */
1262
1495
  .saltPanel-primary.saltPanel {
1263
1496
  --panel-background: var(--salt-container-primary-background);
@@ -1272,10 +1505,6 @@ a:link .saltInteractableCard * {
1272
1505
  overflow: auto;
1273
1506
  padding: var(--saltPanel-padding, var(--salt-size-container-spacing));
1274
1507
  width: var(--saltPanel-width, 100%);
1275
- font-family: var(--salt-text-fontFamily);
1276
- font-size: var(--salt-text-fontSize);
1277
- font-weight: var(--salt-text-fontWeight);
1278
- line-height: var(--salt-text-lineHeight);
1279
1508
  }
1280
1509
 
1281
1510
  /* src/pill/Pill.css */
@@ -1466,6 +1695,29 @@ a:link .saltInteractableCard * {
1466
1695
  display: contents;
1467
1696
  }
1468
1697
 
1698
+ /* src/scrim/Scrim.css */
1699
+ .saltScrim {
1700
+ top: 0;
1701
+ left: 0;
1702
+ right: 0;
1703
+ width: 100%;
1704
+ bottom: 0;
1705
+ height: 100%;
1706
+ display: flex;
1707
+ z-index: calc(var(--salt-zIndex-drawer) - 1);
1708
+ position: absolute;
1709
+ align-items: center;
1710
+ justify-content: center;
1711
+ background: var(--saltScrim-background, var(--salt-overlayable-background));
1712
+ -webkit-tap-highlight-color: transparent;
1713
+ }
1714
+ .saltScrim:focus {
1715
+ outline: none;
1716
+ }
1717
+ .saltScrim-fixed {
1718
+ position: fixed;
1719
+ }
1720
+
1469
1721
  /* src/spinner/Spinner.css */
1470
1722
  .saltSpinner {
1471
1723
  position: relative;
@@ -2010,4 +2262,4 @@ label.saltText small,
2010
2262
  --tooltip-status-borderColor: var(--salt-status-success-borderColor);
2011
2263
  }
2012
2264
 
2013
- /* src/db34249f-f078-49b5-82e2-7cf5b355cc79.css */
2265
+ /* src/5a631c50-4361-4f71-ba22-4406730ca401.css */
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var css_248z = ".saltAccordionHeader {\n display: flex;\n gap: var(--salt-spacing-100);\n padding: var(--salt-spacing-50) var(--salt-spacing-100);\n align-items: center;\n border: 0;\n width: 100%;\n min-height: calc(var(--salt-size-base) + var(--salt-spacing-100));\n background: var(--salt-actionable-secondary-background);\n font-size: var(--salt-text-fontSize);\n line-height: var(--salt-text-lineHeight);\n font-family: var(--salt-text-fontFamily);\n color: var(--salt-content-primary-foreground);\n font-weight: var(--salt-text-fontWeight-strong);\n text-align: left;\n cursor: var(--salt-actionable-cursor-hover);\n}\n\n.saltAccordionHeader:focus-visible {\n outline: var(--salt-focused-outline);\n outline-offset: calc(-1 * var(--salt-focused-outlineWidth));\n}\n\n.saltAccordionHeader:disabled {\n background: var(--salt-actionable-secondary-background);\n color: var(--salt-content-primary-foreground-disabled);\n}\n\n.saltAccordionHeader-icon {\n transition: transform var(--salt-duration-perceptible) ease-in-out;\n}\n\n.saltAccordionHeader[aria-expanded=\"true\"] > .saltAccordionHeader-icon {\n transform: rotate(90deg);\n}\n\n.saltAccordionHeader-error {\n background: var(--salt-status-error-background);\n}\n\n.saltAccordionHeader-error:focus-visible {\n outline-color: var(--salt-status-error-borderColor);\n}\n\n.saltAccordionHeader-warning {\n background: var(--salt-status-warning-background);\n}\n\n.saltAccordionHeader-warning:focus-visible {\n outline-color: var(--salt-status-warning-borderColor);\n}\n\n.saltAccordionHeader-success {\n background: var(--salt-status-success-background);\n}\n\n.saltAccordionHeader-success:focus-visible {\n outline-color: var(--salt-status-error-borderColor);\n}\n\n.saltAccordionHeader .saltAccordionHeader-statusIndicator {\n margin-left: auto;\n}\n";
3
+ var css_248z = ".saltAccordionHeader {\n display: flex;\n gap: var(--salt-spacing-100);\n padding: var(--salt-spacing-50) var(--salt-spacing-100);\n align-items: center;\n border: 0;\n width: 100%;\n min-height: calc(var(--salt-size-base) + var(--salt-spacing-100));\n background: var(--salt-actionable-secondary-background);\n font-size: var(--salt-text-fontSize);\n line-height: var(--salt-text-lineHeight);\n font-family: var(--salt-text-fontFamily);\n color: var(--salt-content-primary-foreground);\n font-weight: var(--salt-text-fontWeight-strong);\n text-align: left;\n cursor: var(--salt-actionable-cursor-hover);\n}\n\n.saltAccordionHeader:focus-visible {\n outline: var(--salt-focused-outline);\n outline-offset: calc(-1 * var(--salt-focused-outlineWidth));\n}\n\n.saltAccordionHeader:disabled {\n background: var(--salt-actionable-secondary-background);\n color: var(--salt-content-primary-foreground-disabled);\n cursor: var(--salt-actionable-cursor-disabled);\n}\n\n.saltAccordionHeader-icon {\n transition: transform var(--salt-duration-perceptible) ease-in-out;\n}\n\n.saltAccordionHeader[aria-expanded=\"true\"] > .saltAccordionHeader-icon {\n transform: rotate(90deg);\n}\n\n.saltAccordionHeader-error {\n background: var(--salt-status-error-background);\n}\n\n.saltAccordionHeader-error:focus-visible {\n outline-color: var(--salt-status-error-borderColor);\n}\n\n.saltAccordionHeader-warning {\n background: var(--salt-status-warning-background);\n}\n\n.saltAccordionHeader-warning:focus-visible {\n outline-color: var(--salt-status-warning-borderColor);\n}\n\n.saltAccordionHeader-success {\n background: var(--salt-status-success-background);\n}\n\n.saltAccordionHeader-success:focus-visible {\n outline-color: var(--salt-status-error-borderColor);\n}\n\n.saltAccordionHeader .saltAccordionHeader-statusIndicator {\n margin-left: auto;\n}\n";
4
4
 
5
5
  module.exports = css_248z;
6
6
  //# sourceMappingURL=AccordionHeader.css.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var css_248z = "/* Styles applied to the root element */\n.saltCard {\n box-shadow: var(--saltCard-boxShadow, var(--salt-overlayable-shadow));\n border-width: var(--salt-size-border);\n border-style: var(--salt-container-borderStyle);\n padding: var(--saltCard-padding, var(--salt-spacing-300));\n\n font-family: var(--salt-text-fontFamily);\n font-size: var(--salt-text-fontSize);\n font-weight: var(--salt-text-fontWeight);\n line-height: var(--salt-text-lineHeight);\n}\n\n.saltCard-primary {\n background: var(--saltCard-background, var(--salt-container-primary-background));\n border-color: var(--salt-container-primary-borderColor);\n}\n\n.saltCard-secondary {\n background: var(--saltCard-background, var(--salt-container-secondary-background));\n border-color: var(--salt-container-secondary-borderColor);\n}\n\n/*\n * **Deprecated:** The following styles are deprecated\n * Use Interactable Card component instead\n * for interactable styling\n */\n\n/* **Deprecated:** Styles applied if `interactable={true}` */\n.saltCard-interactable {\n display: block;\n transition: none;\n}\n\n/* **Deprecated:** Styles applied on hover if `interactable={true}` */\na:focus .saltCard-interactable,\n.saltCard-interactable:hover {\n box-shadow: var(--saltCard-boxShadow-hover, var(--salt-overlayable-shadow-hover));\n cursor: var(--saltCard-cursor-hover, var(--salt-selectable-cursor-hover));\n position: relative;\n}\n\n/* **Deprecated:** Styles applied on active state if `interactable={true}` */\n.saltCard-interactable:active {\n box-shadow: var(--saltCard-boxShadow-active, var(--salt-overlayable-shadow-hover));\n outline: var(--salt-focused-outline);\n outline-offset: var(--salt-focused-outlineOffset);\n}\n\n/* **Deprecated:** Styles applied on hover if `interactable={true}` and `disabled={true}` */\na:focus .saltCard-interactable.saltCard-disabled,\n.saltCard-interactable.saltCard-disabled:hover,\n.saltCard-interactable.saltCard-disabled:active {\n box-shadow: var(--saltCard-boxShadow-disabled, var(--salt-overlayable-shadow));\n}\n\n/* **Deprecated:** Styles applied if `disabled={true}` */\n.saltCard-disabled,\n.saltCard-disabled.saltCard-interactable,\na:focus .saltCard-interactable.saltCard-disabled {\n border-color: var(--salt-container-primary-borderColor-disabled);\n color: var(--saltCard-color-disabled, var(--salt-content-primary-foreground-disabled));\n cursor: var(--saltCard-cursor-disabled, var(--salt-selectable-cursor-disabled));\n outline: none;\n}\n\n/* **Deprecated:** Styles applied to nested divs if `disabled={true}` */\n.saltCard-disabled div {\n pointer-events: none;\n}\n";
3
+ var css_248z = "/* Styles applied to the root element */\n.saltCard {\n box-shadow: var(--saltCard-boxShadow, var(--salt-overlayable-shadow));\n border-width: var(--salt-size-border);\n border-style: var(--salt-container-borderStyle);\n padding: var(--saltCard-padding, var(--salt-spacing-300));\n}\n\n.saltCard-primary {\n background: var(--saltCard-background, var(--salt-container-primary-background));\n border-color: var(--salt-container-primary-borderColor);\n}\n\n.saltCard-secondary {\n background: var(--saltCard-background, var(--salt-container-secondary-background));\n border-color: var(--salt-container-secondary-borderColor);\n}\n\n/*\n * **Deprecated:** The following styles are deprecated\n * Use Interactable Card component instead\n * for interactable styling\n */\n\n/* **Deprecated:** Styles applied if `interactable={true}` */\n.saltCard-interactable {\n display: block;\n transition: none;\n}\n\n/* **Deprecated:** Styles applied on hover if `interactable={true}` */\na:focus .saltCard-interactable,\n.saltCard-interactable:hover {\n box-shadow: var(--saltCard-boxShadow-hover, var(--salt-overlayable-shadow-hover));\n cursor: var(--saltCard-cursor-hover, var(--salt-selectable-cursor-hover));\n position: relative;\n}\n\n/* **Deprecated:** Styles applied on active state if `interactable={true}` */\n.saltCard-interactable:active {\n box-shadow: var(--saltCard-boxShadow-active, var(--salt-overlayable-shadow-hover));\n outline: var(--salt-focused-outline);\n outline-offset: var(--salt-focused-outlineOffset);\n}\n\n/* **Deprecated:** Styles applied on hover if `interactable={true}` and `disabled={true}` */\na:focus .saltCard-interactable.saltCard-disabled,\n.saltCard-interactable.saltCard-disabled:hover,\n.saltCard-interactable.saltCard-disabled:active {\n box-shadow: var(--saltCard-boxShadow-disabled, var(--salt-overlayable-shadow));\n}\n\n/* **Deprecated:** Styles applied if `disabled={true}` */\n.saltCard-disabled,\n.saltCard-disabled.saltCard-interactable,\na:focus .saltCard-interactable.saltCard-disabled {\n border-color: var(--salt-container-primary-borderColor-disabled);\n color: var(--saltCard-color-disabled, var(--salt-content-primary-foreground-disabled));\n cursor: var(--saltCard-cursor-disabled, var(--salt-selectable-cursor-disabled));\n outline: none;\n}\n\n/* **Deprecated:** Styles applied to nested divs if `disabled={true}` */\n.saltCard-disabled div {\n pointer-events: none;\n}\n";
4
4
 
5
5
  module.exports = css_248z;
6
6
  //# sourceMappingURL=Card.css.js.map
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ var css_248z = ".saltFileDropZone {\n color: var(--saltFileDropZone-text-color, var(--salt-text-primary-foreground));\n display: inline-flex;\n background: var(--saltFileDropZone-background, var(--salt-container-primary-background));\n text-align: center;\n align-items: center;\n justify-content: center;\n border: var(--saltFileDropZone-border, var(--salt-size-border-strong) var(--salt-target-borderStyle) var(--salt-container-primary-borderColor));\n flex-direction: column;\n padding: var(--salt-spacing-200);\n gap: var(--salt-spacing-200);\n width: 100%;\n font-size: var(--saltFileDropZone-fontSize, var(--salt-text-fontSize));\n font-family: var(--saltFileDropZone-fontFamily, var(--salt-text-fontFamily));\n line-height: var(--saltFileDropZone-lineHeight, var(--salt-text-lineHeight));\n}\n\n.saltFileDropZone-active {\n background: var(--salt-target-background-hover);\n border: var(--salt-size-border-strong) var(--salt-target-borderStyle-hover) var(--salt-target-borderColor-hover);\n}\n\n/* Styles applied if `status=\"error\" */\n.saltFileDropZone-error {\n border: var(--salt-size-border-strong) var(--salt-target-borderStyle) var(--salt-status-error-borderColor);\n}\n\n/* Styles applied if `status=\"success\" */\n.saltFileDropZone-success {\n border: var(--salt-size-border-strong) var(--salt-target-borderStyle) var(--salt-status-success-borderColor);\n}\n\n.saltFileDropZone .input-hidden {\n display: none;\n}\n\n/* Styles applied if `disabled={true}` */\n.saltFileDropZone-disabled {\n background: var(--salt-container-primary-background-disabled);\n border: var(--salt-size-border-strong) var(--salt-target-borderStyle) var(--salt-container-primary-borderColor-disabled);\n cursor: var(--salt-target-cursor-disabled);\n color: var(--salt-content-primary-foreground-disabled);\n}\n";
4
+
5
+ module.exports = css_248z;
6
+ //# sourceMappingURL=FileDropZone.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileDropZone.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,99 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var clsx = require('clsx');
7
+ var React = require('react');
8
+ var utils = require('./internal/utils.js');
9
+ var window = require('@salt-ds/window');
10
+ var styles = require('@salt-ds/styles');
11
+ var FileDropZone$1 = require('./FileDropZone.css.js');
12
+ var makePrefixer = require('../utils/makePrefixer.js');
13
+ require('../utils/useFloatingUI/useFloatingUI.js');
14
+ var useForkRef = require('../utils/useForkRef.js');
15
+ require('../utils/useId.js');
16
+ require('../salt-provider/SaltProvider.js');
17
+ require('../viewport/ViewportProvider.js');
18
+
19
+ const withBaseName = makePrefixer.makePrefixer("saltFileDropZone");
20
+ const FileDropZone = React.forwardRef(
21
+ function FileDropZone2({
22
+ status,
23
+ className,
24
+ children,
25
+ disabled,
26
+ onDragOver,
27
+ onDragLeave,
28
+ onDrop,
29
+ ...restProps
30
+ }, ref) {
31
+ const targetWindow = window.useWindow();
32
+ styles.useComponentCssInjection({
33
+ testId: "salt-file-drop-zone",
34
+ css: FileDropZone$1,
35
+ window: targetWindow
36
+ });
37
+ const [isActive, setActive] = React.useState(false);
38
+ const regionRef = React.useRef(null);
39
+ const handleRef = useForkRef.useForkRef(ref, regionRef);
40
+ const handleDragOver = (event) => {
41
+ event.preventDefault();
42
+ event.stopPropagation();
43
+ if (disabled) {
44
+ if (event.dataTransfer) {
45
+ event.dataTransfer.dropEffect = "none";
46
+ }
47
+ return;
48
+ }
49
+ if (event.dataTransfer) {
50
+ event.dataTransfer.dropEffect = "copy";
51
+ }
52
+ if (!isActive && utils.containsFiles(event)) {
53
+ setActive(true);
54
+ }
55
+ onDragOver == null ? void 0 : onDragOver(event);
56
+ };
57
+ const handleDragLeave = (event) => {
58
+ if (disabled) {
59
+ return;
60
+ }
61
+ const region = regionRef == null ? void 0 : regionRef.current;
62
+ const eventTarget = event.relatedTarget;
63
+ if (eventTarget !== region && !(region == null ? void 0 : region.contains(eventTarget))) {
64
+ setActive(false);
65
+ }
66
+ onDragLeave == null ? void 0 : onDragLeave(event);
67
+ };
68
+ const handleDrop = (event) => {
69
+ if (disabled) {
70
+ return;
71
+ }
72
+ event.preventDefault();
73
+ const files = utils.extractFiles(event);
74
+ setActive(false);
75
+ onDrop == null ? void 0 : onDrop(event, files);
76
+ };
77
+ return /* @__PURE__ */ jsxRuntime.jsx("div", {
78
+ className: clsx.clsx(
79
+ withBaseName(),
80
+ {
81
+ [withBaseName(status)]: status,
82
+ [withBaseName("active")]: isActive,
83
+ [withBaseName("disabled")]: disabled
84
+ },
85
+ className
86
+ ),
87
+ "aria-disabled": disabled,
88
+ onDragLeave: handleDragLeave,
89
+ onDragOver: handleDragOver,
90
+ onDrop: handleDrop,
91
+ ref: handleRef,
92
+ ...restProps,
93
+ children
94
+ });
95
+ }
96
+ );
97
+
98
+ exports.FileDropZone = FileDropZone;
99
+ //# sourceMappingURL=FileDropZone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileDropZone.js","sources":["../src/file-drop-zone/FileDropZone.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport {\n DragEventHandler,\n forwardRef,\n DragEvent,\n useRef,\n useState,\n ComponentPropsWithoutRef,\n} from \"react\";\nimport { containsFiles, extractFiles } from \"./internal/utils\";\n\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\n\nimport fileDropZoneCss from \"./FileDropZone.css\";\nimport { ValidationStatus } from \"../status-indicator\";\nimport { makePrefixer, useForkRef } from \"../utils\";\n\nexport interface FileDropZoneProps\n extends Omit<ComponentPropsWithoutRef<\"div\">, \"onDrop\"> {\n /**\n * If `true`, the file drop zone will be disabled.\n */\n disabled?: boolean;\n /**\n * Status indicator to be displayed.\n */\n status?: Omit<ValidationStatus, \"info\" | \"warning\">;\n /**\n * Callback for on drop event\n */\n onDrop?: (event: DragEvent<HTMLDivElement>, files: File[]) => void;\n}\n\nconst withBaseName = makePrefixer(\"saltFileDropZone\");\n\nexport const FileDropZone = forwardRef<HTMLDivElement, FileDropZoneProps>(\n function FileDropZone(\n {\n status,\n className,\n children,\n disabled,\n onDragOver,\n onDragLeave,\n onDrop,\n ...restProps\n },\n ref\n ) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-file-drop-zone\",\n css: fileDropZoneCss,\n window: targetWindow,\n });\n const [isActive, setActive] = useState(false);\n\n const regionRef = useRef<HTMLDivElement>(null);\n const handleRef = useForkRef(ref, regionRef);\n\n const handleDragOver: DragEventHandler<HTMLDivElement> = (event) => {\n // Need to cancel the default events to allow drop\n // https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/Drag_operations#droptargets\n\n event.preventDefault();\n event.stopPropagation();\n\n if (disabled) {\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = \"none\";\n }\n return;\n }\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = \"copy\";\n }\n if (!isActive && containsFiles(event)) {\n setActive(true);\n }\n onDragOver?.(event);\n };\n\n const handleDragLeave: DragEventHandler<HTMLDivElement> = (event) => {\n if (disabled) {\n return;\n }\n const region = regionRef?.current;\n const eventTarget = event.relatedTarget;\n if (eventTarget !== region && !region?.contains(eventTarget as Node)) {\n setActive(false);\n }\n onDragLeave?.(event);\n };\n\n const handleDrop: DragEventHandler<HTMLDivElement> = (event) => {\n if (disabled) {\n return;\n }\n event.preventDefault();\n const files = extractFiles(event);\n setActive(false);\n onDrop?.(event, files);\n };\n\n return (\n <div\n className={clsx(\n withBaseName(),\n {\n [withBaseName(status as string)]: status,\n [withBaseName(\"active\")]: isActive,\n [withBaseName(\"disabled\")]: disabled,\n },\n className\n )}\n aria-disabled={disabled}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n ref={handleRef}\n {...restProps}\n >\n {children}\n </div>\n );\n }\n);\n"],"names":["makePrefixer","forwardRef","FileDropZone","useWindow","useComponentCssInjection","fileDropZoneCss","useState","useRef","useForkRef","containsFiles","extractFiles","jsx","clsx"],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var React = require('react');
7
+ var icons = require('@salt-ds/icons');
8
+ var StatusIndicator = require('../status-indicator/StatusIndicator.js');
9
+
10
+ const FileDropZoneIcon = React.forwardRef(function FileDropZoneIcon2({ status, size = 2, ...rest }, ref) {
11
+ const iconProps = {
12
+ ref,
13
+ size,
14
+ ...rest
15
+ };
16
+ return status ? /* @__PURE__ */ jsxRuntime.jsx(StatusIndicator.StatusIndicator, {
17
+ status,
18
+ ...iconProps
19
+ }) : /* @__PURE__ */ jsxRuntime.jsx(icons.UploadIcon, {
20
+ ...iconProps
21
+ });
22
+ });
23
+
24
+ exports.FileDropZoneIcon = FileDropZoneIcon;
25
+ //# sourceMappingURL=FileDropZoneIcon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileDropZoneIcon.js","sources":["../src/file-drop-zone/FileDropZoneIcon.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport { IconProps, UploadIcon } from \"@salt-ds/icons\";\nimport { StatusIndicator, ValidationStatus } from \"../status-indicator\";\n\nexport interface FileDropZoneIconProps extends IconProps {\n /**\n * Status indicator to be displayed.\n */\n status?: ValidationStatus;\n}\n\nexport const FileDropZoneIcon = forwardRef<\n SVGSVGElement,\n FileDropZoneIconProps\n>(function FileDropZoneIcon({ status, size = 2, ...rest }, ref) {\n const iconProps = {\n ref,\n size,\n ...rest,\n };\n return status ? (\n <StatusIndicator status={status} {...iconProps} />\n ) : (\n <UploadIcon {...iconProps} />\n );\n});\n"],"names":["forwardRef","FileDropZoneIcon","jsx","StatusIndicator","UploadIcon"],"mappings":";;;;;;;;;AAWa,MAAA,gBAAA,GAAmBA,gBAG9B,CAAA,SAASC,iBAAiB,CAAA,EAAE,QAAQ,IAAO,GAAA,CAAA,EAAA,GAAM,IAAK,EAAA,EAAG,GAAK,EAAA;AAC9D,EAAA,MAAM,SAAY,GAAA;AAAA,IAChB,GAAA;AAAA,IACA,IAAA;AAAA,IACA,GAAG,IAAA;AAAA,GACL,CAAA;AACA,EAAA,OAAO,yBACJC,cAAA,CAAAC,+BAAA,EAAA;AAAA,IAAgB,MAAA;AAAA,IAAiB,GAAG,SAAA;AAAA,GAAW,oBAE/CD,cAAA,CAAAE,gBAAA,EAAA;AAAA,IAAY,GAAG,SAAA;AAAA,GAAW,CAAA,CAAA;AAE/B,CAAC;;;;"}
@@ -0,0 +1,58 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var React = require('react');
7
+ require('../utils/useFloatingUI/useFloatingUI.js');
8
+ var useForkRef = require('../utils/useForkRef.js');
9
+ require('../utils/useId.js');
10
+ require('../salt-provider/SaltProvider.js');
11
+ require('../viewport/ViewportProvider.js');
12
+ require('clsx');
13
+ var Button = require('../button/Button.js');
14
+
15
+ const FileDropZoneTrigger = React.forwardRef(function FileDropZoneTrigger2({ accept, children, disabled, multiple = false, onChange, ...rest }, ref) {
16
+ const buttonRef = React.useRef(null);
17
+ const fileInputRef = React.useRef(null);
18
+ const triggerRef = useForkRef.useForkRef(ref, buttonRef);
19
+ const handleFocus = (event) => {
20
+ var _a;
21
+ event.stopPropagation();
22
+ (_a = buttonRef.current) == null ? void 0 : _a.focus();
23
+ };
24
+ const handleClick = (event) => {
25
+ var _a;
26
+ event.stopPropagation();
27
+ (_a = fileInputRef.current) == null ? void 0 : _a.click();
28
+ };
29
+ const handleChange = (event) => {
30
+ var _a;
31
+ const files = Array.from((_a = event.target.files) != null ? _a : []);
32
+ onChange == null ? void 0 : onChange(event, files);
33
+ };
34
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {
35
+ children: [
36
+ /* @__PURE__ */ jsxRuntime.jsx(Button.Button, {
37
+ onClick: handleClick,
38
+ disabled,
39
+ ref: triggerRef,
40
+ ...rest,
41
+ children: children != null ? children : "Browse files"
42
+ }),
43
+ /* @__PURE__ */ jsxRuntime.jsx("input", {
44
+ accept,
45
+ className: "input-hidden",
46
+ disabled,
47
+ multiple,
48
+ onChange: handleChange,
49
+ onFocus: handleFocus,
50
+ ref: fileInputRef,
51
+ type: "file"
52
+ })
53
+ ]
54
+ });
55
+ });
56
+
57
+ exports.FileDropZoneTrigger = FileDropZoneTrigger;
58
+ //# sourceMappingURL=FileDropZoneTrigger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileDropZoneTrigger.js","sources":["../src/file-drop-zone/FileDropZoneTrigger.tsx"],"sourcesContent":["import {\n FocusEvent,\n forwardRef,\n HTMLAttributes,\n SyntheticEvent,\n useRef,\n} from \"react\";\nimport { useForkRef } from \"../utils\";\nimport { Button } from \"../button\";\n\nexport interface FileDropZoneTriggerProps\n extends Omit<HTMLAttributes<HTMLButtonElement>, \"onChange\"> {\n /**\n * `accept` attribute for HTML <input>.\n *\n * A comma separated list of file types the user can pick from the file input dialog box.\n */\n accept?: string;\n /**\n * Disable all trigger elements.\n */\n disabled?: boolean;\n /**\n * Allows multiple files to be uploaded.\n */\n multiple?: boolean;\n /**\n * Callback for input change event\n */\n onChange?: (event: SyntheticEvent<HTMLInputElement>, files: File[]) => void;\n}\n\nexport const FileDropZoneTrigger = forwardRef<\n HTMLButtonElement,\n FileDropZoneTriggerProps\n>(function FileDropZoneTrigger(\n { accept, children, disabled, multiple = false, onChange, ...rest },\n ref\n) {\n const buttonRef = useRef<HTMLButtonElement>(null);\n const fileInputRef = useRef<HTMLInputElement>(null);\n const triggerRef = useForkRef(ref, buttonRef);\n\n // As an ADA requirement when dialog is closed and the focus is returned to the input, we need to\n // move focus back on the button element so that all labels can be announced correctly\n const handleFocus = (event: FocusEvent<HTMLInputElement>) => {\n event.stopPropagation();\n buttonRef.current?.focus();\n };\n\n const handleClick = (event: SyntheticEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n fileInputRef.current?.click();\n };\n\n const handleChange = (event: SyntheticEvent<HTMLInputElement>) => {\n const files = Array.from((event.target as HTMLInputElement).files ?? []);\n onChange?.(event, files);\n };\n return (\n <>\n <Button\n onClick={handleClick}\n disabled={disabled}\n ref={triggerRef}\n {...rest}\n >\n {children ?? \"Browse files\"}\n </Button>\n <input\n accept={accept}\n className=\"input-hidden\"\n disabled={disabled}\n multiple={multiple}\n onChange={handleChange}\n onFocus={handleFocus}\n ref={fileInputRef}\n type=\"file\"\n />\n </>\n );\n});\n"],"names":["forwardRef","FileDropZoneTrigger","useRef","useForkRef","jsxs","Fragment","jsx","Button"],"mappings":";;;;;;;;;;;;;;AAgCO,MAAM,mBAAsB,GAAAA,gBAAA,CAGjC,SAASC,oBAAAA,CACT,EAAE,MAAA,EAAQ,QAAU,EAAA,QAAA,EAAU,QAAW,GAAA,KAAA,EAAO,QAAa,EAAA,GAAA,IAAA,IAC7D,GACA,EAAA;AACA,EAAM,MAAA,SAAA,GAAYC,aAA0B,IAAI,CAAA,CAAA;AAChD,EAAM,MAAA,YAAA,GAAeA,aAAyB,IAAI,CAAA,CAAA;AAClD,EAAM,MAAA,UAAA,GAAaC,qBAAW,CAAA,GAAA,EAAK,SAAS,CAAA,CAAA;AAI5C,EAAM,MAAA,WAAA,GAAc,CAAC,KAAwC,KAAA;AA7C/D,IAAA,IAAA,EAAA,CAAA;AA8CI,IAAA,KAAA,CAAM,eAAgB,EAAA,CAAA;AACtB,IAAA,CAAA,EAAA,GAAA,SAAA,CAAU,YAAV,IAAmB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAA,EAAA,CAAA;AAAA,GACrB,CAAA;AAEA,EAAM,MAAA,WAAA,GAAc,CAAC,KAA6C,KAAA;AAlDpE,IAAA,IAAA,EAAA,CAAA;AAmDI,IAAA,KAAA,CAAM,eAAgB,EAAA,CAAA;AACtB,IAAA,CAAA,EAAA,GAAA,YAAA,CAAa,YAAb,IAAsB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAA,EAAA,CAAA;AAAA,GACxB,CAAA;AAEA,EAAM,MAAA,YAAA,GAAe,CAAC,KAA4C,KAAA;AAvDpE,IAAA,IAAA,EAAA,CAAA;AAwDI,IAAM,MAAA,KAAA,GAAQ,MAAM,IAAM,CAAA,CAAA,EAAA,GAAA,KAAA,CAAM,OAA4B,KAAlC,KAAA,IAAA,GAAA,EAAA,GAA2C,EAAE,CAAA,CAAA;AACvE,IAAA,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAW,KAAO,EAAA,KAAA,CAAA,CAAA;AAAA,GACpB,CAAA;AACA,EACE,uBAAAC,eAAA,CAAAC,mBAAA,EAAA;AAAA,IACE,QAAA,EAAA;AAAA,sBAACC,cAAA,CAAAC,aAAA,EAAA;AAAA,QACC,OAAS,EAAA,WAAA;AAAA,QACT,QAAA;AAAA,QACA,GAAK,EAAA,UAAA;AAAA,QACJ,GAAG,IAAA;AAAA,QAEH,QAAY,EAAA,QAAA,IAAA,IAAA,GAAA,QAAA,GAAA,cAAA;AAAA,OACf,CAAA;AAAA,sBACCD,cAAA,CAAA,OAAA,EAAA;AAAA,QACC,MAAA;AAAA,QACA,SAAU,EAAA,cAAA;AAAA,QACV,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAU,EAAA,YAAA;AAAA,QACV,OAAS,EAAA,WAAA;AAAA,QACT,GAAK,EAAA,YAAA;AAAA,QACL,IAAK,EAAA,MAAA;AAAA,OACP,CAAA;AAAA,KAAA;AAAA,GACF,CAAA,CAAA;AAEJ,CAAC;;;;"}
@@ -0,0 +1,30 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const containsFiles = (e) => {
6
+ if (!e.dataTransfer) {
7
+ const target = e.target;
8
+ return target == null ? void 0 : target.files;
9
+ }
10
+ return Array.prototype.some.call(
11
+ e.dataTransfer.types,
12
+ (type) => type === "Files"
13
+ );
14
+ };
15
+ const extractFiles = (e) => {
16
+ var _a;
17
+ if (containsFiles(e)) {
18
+ if (e.dataTransfer) {
19
+ return Array.from(e.dataTransfer.files);
20
+ }
21
+ if (e.target) {
22
+ return Array.from((_a = e.target.files) != null ? _a : []);
23
+ }
24
+ }
25
+ return [];
26
+ };
27
+
28
+ exports.containsFiles = containsFiles;
29
+ exports.extractFiles = extractFiles;
30
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sources":["../src/file-drop-zone/internal/utils.ts"],"sourcesContent":["import { DragEvent } from \"react\";\n\nexport const containsFiles = (e: DragEvent) => {\n if (!e.dataTransfer) {\n const target = e.target as HTMLInputElement;\n return target?.files;\n }\n\n return Array.prototype.some.call(\n e.dataTransfer.types,\n (type) => type === \"Files\"\n );\n};\n\nexport const extractFiles = (e: DragEvent): File[] => {\n if (containsFiles(e)) {\n if (e.dataTransfer) {\n return Array.from(e.dataTransfer.files);\n }\n\n if (e.target) {\n return Array.from((e.target as HTMLInputElement).files ?? []);\n }\n }\n\n return [];\n};\n"],"names":[],"mappings":";;;;AAEa,MAAA,aAAA,GAAgB,CAAC,CAAiB,KAAA;AAC7C,EAAI,IAAA,CAAC,EAAE,YAAc,EAAA;AACnB,IAAA,MAAM,SAAS,CAAE,CAAA,MAAA,CAAA;AACjB,IAAA,OAAO,MAAQ,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,KAAA,CAAA;AAAA,GACjB;AAEA,EAAO,OAAA,KAAA,CAAM,UAAU,IAAK,CAAA,IAAA;AAAA,IAC1B,EAAE,YAAa,CAAA,KAAA;AAAA,IACf,CAAC,SAAS,IAAS,KAAA,OAAA;AAAA,GACrB,CAAA;AACF,EAAA;AAEa,MAAA,YAAA,GAAe,CAAC,CAAyB,KAAA;AAdtD,EAAA,IAAA,EAAA,CAAA;AAeE,EAAI,IAAA,aAAA,CAAc,CAAC,CAAG,EAAA;AACpB,IAAA,IAAI,EAAE,YAAc,EAAA;AAClB,MAAA,OAAO,KAAM,CAAA,IAAA,CAAK,CAAE,CAAA,YAAA,CAAa,KAAK,CAAA,CAAA;AAAA,KACxC;AAEA,IAAA,IAAI,EAAE,MAAQ,EAAA;AACZ,MAAA,OAAO,MAAM,IAAM,CAAA,CAAA,EAAA,GAAA,CAAA,CAAE,OAA4B,KAA9B,KAAA,IAAA,GAAA,EAAA,GAAuC,EAAE,CAAA,CAAA;AAAA,KAC9D;AAAA,GACF;AAEA,EAAA,OAAO,EAAC,CAAA;AACV;;;;;"}
package/dist-cjs/index.js CHANGED
@@ -26,6 +26,9 @@ var InteractableCard = require('./card/InteractableCard.js');
26
26
  var Checkbox = require('./checkbox/Checkbox.js');
27
27
  var CheckboxGroup = require('./checkbox/CheckboxGroup.js');
28
28
  var CheckboxIcon = require('./checkbox/CheckboxIcon.js');
29
+ var FileDropZone = require('./file-drop-zone/FileDropZone.js');
30
+ var FileDropZoneIcon = require('./file-drop-zone/FileDropZoneIcon.js');
31
+ var FileDropZoneTrigger = require('./file-drop-zone/FileDropZoneTrigger.js');
29
32
  var FlexItem = require('./flex-item/FlexItem.js');
30
33
  var FlexLayout = require('./flex-layout/FlexLayout.js');
31
34
  var FlowLayout = require('./flow-layout/FlowLayout.js');
@@ -39,11 +42,18 @@ var GridLayout = require('./grid-layout/GridLayout.js');
39
42
  var Input = require('./input/Input.js');
40
43
  var Link = require('./link/Link.js');
41
44
  var MultilineInput = require('./multiline-input/MultilineInput.js');
45
+ var NavigationItem = require('./navigation-item/NavigationItem.js');
46
+ var Pagination = require('./pagination/Pagination.js');
47
+ var Paginator = require('./pagination/Paginator.js');
48
+ var CompactInput = require('./pagination/CompactInput.js');
49
+ var CompactPaginator = require('./pagination/CompactPaginator.js');
50
+ var GoToInput = require('./pagination/GoToInput.js');
42
51
  var Panel = require('./panel/Panel.js');
43
52
  var Pill = require('./pill/Pill.js');
44
53
  var RadioButton = require('./radio-button/RadioButton.js');
45
54
  var RadioButtonGroup = require('./radio-button/RadioButtonGroup.js');
46
55
  var RadioButtonIcon = require('./radio-button/RadioButtonIcon.js');
56
+ var Scrim = require('./scrim/Scrim.js');
47
57
  var Spinner = require('./spinner/Spinner.js');
48
58
  var StackLayout = require('./stack-layout/StackLayout.js');
49
59
  var StatusAdornment = require('./status-adornment/StatusAdornment.js');
@@ -117,6 +127,9 @@ exports.InteractableCard = InteractableCard.InteractableCard;
117
127
  exports.Checkbox = Checkbox.Checkbox;
118
128
  exports.CheckboxGroup = CheckboxGroup.CheckboxGroup;
119
129
  exports.CheckboxIcon = CheckboxIcon.CheckboxIcon;
130
+ exports.FileDropZone = FileDropZone.FileDropZone;
131
+ exports.FileDropZoneIcon = FileDropZoneIcon.FileDropZoneIcon;
132
+ exports.FileDropZoneTrigger = FileDropZoneTrigger.FileDropZoneTrigger;
120
133
  exports.FLEX_ITEM_ALIGNMENTS = FlexItem.FLEX_ITEM_ALIGNMENTS;
121
134
  exports.FlexItem = FlexItem.FlexItem;
122
135
  exports.FLEX_ALIGNMENT_BASE = FlexLayout.FLEX_ALIGNMENT_BASE;
@@ -134,11 +147,18 @@ exports.GridLayout = GridLayout.GridLayout;
134
147
  exports.Input = Input.Input;
135
148
  exports.Link = Link.Link;
136
149
  exports.MultilineInput = MultilineInput.MultilineInput;
150
+ exports.NavigationItem = NavigationItem.NavigationItem;
151
+ exports.Pagination = Pagination.Pagination;
152
+ exports.Paginator = Paginator.Paginator;
153
+ exports.CompactInput = CompactInput.CompactInput;
154
+ exports.CompactPaginator = CompactPaginator.CompactPaginator;
155
+ exports.GoToInput = GoToInput.GoToInput;
137
156
  exports.Panel = Panel.Panel;
138
157
  exports.Pill = Pill.Pill;
139
158
  exports.RadioButton = RadioButton.RadioButton;
140
159
  exports.RadioButtonGroup = RadioButtonGroup.RadioButtonGroup;
141
160
  exports.RadioButtonIcon = RadioButtonIcon.RadioButtonIcon;
161
+ exports.Scrim = Scrim.Scrim;
142
162
  exports.Spinner = Spinner.Spinner;
143
163
  exports.SpinnerSizeValues = Spinner.SpinnerSizeValues;
144
164
  exports.StackLayout = StackLayout.StackLayout;