@salt-ds/lab 1.0.0-alpha.32 → 1.0.0-alpha.34

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 (142) hide show
  1. package/css/salt-lab.css +120 -231
  2. package/dist-cjs/calendar/Calendar.css.js +1 -1
  3. package/dist-cjs/calendar/internal/CalendarCarousel.css.js +1 -1
  4. package/dist-cjs/calendar/internal/CalendarCarousel.js +5 -29
  5. package/dist-cjs/calendar/internal/CalendarCarousel.js.map +1 -1
  6. package/dist-cjs/calendar/internal/CalendarContext.js.map +1 -1
  7. package/dist-cjs/calendar/internal/CalendarDay.css.js +1 -1
  8. package/dist-cjs/calendar/internal/CalendarDay.js +18 -19
  9. package/dist-cjs/calendar/internal/CalendarDay.js.map +1 -1
  10. package/dist-cjs/calendar/internal/CalendarMonth.css.js +1 -1
  11. package/dist-cjs/calendar/internal/CalendarMonth.js +0 -2
  12. package/dist-cjs/calendar/internal/CalendarMonth.js.map +1 -1
  13. package/dist-cjs/calendar/internal/CalendarNavigation.css.js +1 -1
  14. package/dist-cjs/calendar/internal/CalendarNavigation.js +74 -81
  15. package/dist-cjs/calendar/internal/CalendarNavigation.js.map +1 -1
  16. package/dist-cjs/calendar/internal/CalendarWeekHeader.css.js +1 -1
  17. package/dist-cjs/calendar/useCalendar.js +14 -8
  18. package/dist-cjs/calendar/useCalendar.js.map +1 -1
  19. package/dist-cjs/calendar/useCalendarDay.js +15 -5
  20. package/dist-cjs/calendar/useCalendarDay.js.map +1 -1
  21. package/dist-cjs/calendar/useSelection.js.map +1 -1
  22. package/dist-cjs/combo-box-next/ComboBoxNext.js +36 -13
  23. package/dist-cjs/combo-box-next/ComboBoxNext.js.map +1 -1
  24. package/dist-cjs/combo-box-next/useComboBoxNext.js +16 -15
  25. package/dist-cjs/combo-box-next/useComboBoxNext.js.map +1 -1
  26. package/dist-cjs/dialog/Dialog.css.js +1 -1
  27. package/dist-cjs/dialog/DialogHeader.css.js +6 -0
  28. package/dist-cjs/dialog/DialogHeader.css.js.map +1 -0
  29. package/dist-cjs/dialog/{DialogTitle.js → DialogHeader.js} +16 -16
  30. package/dist-cjs/dialog/DialogHeader.js.map +1 -0
  31. package/dist-cjs/dropdown-next/DropdownNext.js +7 -8
  32. package/dist-cjs/dropdown-next/DropdownNext.js.map +1 -1
  33. package/dist-cjs/form-field-legacy/FormLabel.css.js +1 -1
  34. package/dist-cjs/index.js +2 -6
  35. package/dist-cjs/index.js.map +1 -1
  36. package/dist-cjs/input-legacy/InputLegacy.css.js +1 -1
  37. package/dist-cjs/layer-layout/LayerLayout.css.js +1 -1
  38. package/dist-cjs/list/List.css.js +1 -1
  39. package/dist-cjs/list-control/ListControlContext.js +3 -1
  40. package/dist-cjs/list-control/ListControlContext.js.map +1 -1
  41. package/dist-cjs/list-control/ListControlState.js +16 -18
  42. package/dist-cjs/list-control/ListControlState.js.map +1 -1
  43. package/dist-cjs/option/Option.css.js +1 -1
  44. package/dist-cjs/option/Option.js +10 -20
  45. package/dist-cjs/option/Option.js.map +1 -1
  46. package/dist-cjs/option/OptionList.css.js +1 -1
  47. package/dist-cjs/overlay/Overlay.css.js +1 -1
  48. package/dist-cjs/tabs-next/TabNext.css.js +1 -1
  49. package/dist-cjs/tabs-next/TabstripNext.css.js +1 -1
  50. package/dist-cjs/tokenized-input/TokenizedInput.css.js +1 -1
  51. package/dist-cjs/tokenized-input-next/TokenizedInputNext.css.js +1 -1
  52. package/dist-es/calendar/Calendar.css.js +1 -1
  53. package/dist-es/calendar/internal/CalendarCarousel.css.js +1 -1
  54. package/dist-es/calendar/internal/CalendarCarousel.js +5 -29
  55. package/dist-es/calendar/internal/CalendarCarousel.js.map +1 -1
  56. package/dist-es/calendar/internal/CalendarContext.js.map +1 -1
  57. package/dist-es/calendar/internal/CalendarDay.css.js +1 -1
  58. package/dist-es/calendar/internal/CalendarDay.js +20 -21
  59. package/dist-es/calendar/internal/CalendarDay.js.map +1 -1
  60. package/dist-es/calendar/internal/CalendarMonth.css.js +1 -1
  61. package/dist-es/calendar/internal/CalendarMonth.js +0 -2
  62. package/dist-es/calendar/internal/CalendarMonth.js.map +1 -1
  63. package/dist-es/calendar/internal/CalendarNavigation.css.js +1 -1
  64. package/dist-es/calendar/internal/CalendarNavigation.js +75 -82
  65. package/dist-es/calendar/internal/CalendarNavigation.js.map +1 -1
  66. package/dist-es/calendar/internal/CalendarWeekHeader.css.js +1 -1
  67. package/dist-es/calendar/useCalendar.js +14 -8
  68. package/dist-es/calendar/useCalendar.js.map +1 -1
  69. package/dist-es/calendar/useCalendarDay.js +15 -5
  70. package/dist-es/calendar/useCalendarDay.js.map +1 -1
  71. package/dist-es/calendar/useSelection.js.map +1 -1
  72. package/dist-es/combo-box-next/ComboBoxNext.js +36 -13
  73. package/dist-es/combo-box-next/ComboBoxNext.js.map +1 -1
  74. package/dist-es/combo-box-next/useComboBoxNext.js +16 -15
  75. package/dist-es/combo-box-next/useComboBoxNext.js.map +1 -1
  76. package/dist-es/dialog/Dialog.css.js +1 -1
  77. package/dist-es/dialog/DialogHeader.css.js +4 -0
  78. package/dist-es/dialog/DialogHeader.css.js.map +1 -0
  79. package/dist-es/dialog/{DialogTitle.js → DialogHeader.js} +16 -16
  80. package/dist-es/dialog/DialogHeader.js.map +1 -0
  81. package/dist-es/dropdown-next/DropdownNext.js +8 -9
  82. package/dist-es/dropdown-next/DropdownNext.js.map +1 -1
  83. package/dist-es/form-field-legacy/FormLabel.css.js +1 -1
  84. package/dist-es/index.js +1 -3
  85. package/dist-es/index.js.map +1 -1
  86. package/dist-es/input-legacy/InputLegacy.css.js +1 -1
  87. package/dist-es/layer-layout/LayerLayout.css.js +1 -1
  88. package/dist-es/list/List.css.js +1 -1
  89. package/dist-es/list-control/ListControlContext.js +3 -1
  90. package/dist-es/list-control/ListControlContext.js.map +1 -1
  91. package/dist-es/list-control/ListControlState.js +16 -19
  92. package/dist-es/list-control/ListControlState.js.map +1 -1
  93. package/dist-es/option/Option.css.js +1 -1
  94. package/dist-es/option/Option.js +11 -21
  95. package/dist-es/option/Option.js.map +1 -1
  96. package/dist-es/option/OptionList.css.js +1 -1
  97. package/dist-es/overlay/Overlay.css.js +1 -1
  98. package/dist-es/tabs-next/TabNext.css.js +1 -1
  99. package/dist-es/tabs-next/TabstripNext.css.js +1 -1
  100. package/dist-es/tokenized-input/TokenizedInput.css.js +1 -1
  101. package/dist-es/tokenized-input-next/TokenizedInputNext.css.js +1 -1
  102. package/dist-types/calendar/internal/CalendarContext.d.ts +2 -2
  103. package/dist-types/calendar/internal/CalendarNavigation.d.ts +3 -7
  104. package/dist-types/calendar/useCalendarDay.d.ts +7 -4
  105. package/dist-types/calendar/useSelection.d.ts +4 -4
  106. package/dist-types/combo-box-next/ComboBoxNext.d.ts +7 -10
  107. package/dist-types/combo-box-next/useComboBoxNext.d.ts +6 -4
  108. package/dist-types/dialog/DialogHeader.d.ts +22 -0
  109. package/dist-types/dialog/index.d.ts +1 -1
  110. package/dist-types/dropdown-next/DropdownNext.d.ts +49 -7
  111. package/dist-types/index.d.ts +0 -1
  112. package/dist-types/list-control/ListControlContext.d.ts +1 -1
  113. package/dist-types/list-control/ListControlState.d.ts +14 -12
  114. package/dist-types/option/Option.d.ts +0 -4
  115. package/package.json +2 -2
  116. package/dist-cjs/dialog/DialogTitle.css.js +0 -6
  117. package/dist-cjs/dialog/DialogTitle.css.js.map +0 -1
  118. package/dist-cjs/dialog/DialogTitle.js.map +0 -1
  119. package/dist-cjs/drawer/Drawer.css.js +0 -6
  120. package/dist-cjs/drawer/Drawer.css.js.map +0 -1
  121. package/dist-cjs/drawer/Drawer.js +0 -104
  122. package/dist-cjs/drawer/Drawer.js.map +0 -1
  123. package/dist-cjs/drawer/DrawerCloseButton.css.js +0 -6
  124. package/dist-cjs/drawer/DrawerCloseButton.css.js.map +0 -1
  125. package/dist-cjs/drawer/DrawerCloseButton.js +0 -44
  126. package/dist-cjs/drawer/DrawerCloseButton.js.map +0 -1
  127. package/dist-es/dialog/DialogTitle.css.js +0 -4
  128. package/dist-es/dialog/DialogTitle.css.js.map +0 -1
  129. package/dist-es/dialog/DialogTitle.js.map +0 -1
  130. package/dist-es/drawer/Drawer.css.js +0 -4
  131. package/dist-es/drawer/Drawer.css.js.map +0 -1
  132. package/dist-es/drawer/Drawer.js +0 -100
  133. package/dist-es/drawer/Drawer.js.map +0 -1
  134. package/dist-es/drawer/DrawerCloseButton.css.js +0 -4
  135. package/dist-es/drawer/DrawerCloseButton.css.js.map +0 -1
  136. package/dist-es/drawer/DrawerCloseButton.js +0 -36
  137. package/dist-es/drawer/DrawerCloseButton.js.map +0 -1
  138. package/dist-types/calendar/useCalendar.d.ts +0 -60
  139. package/dist-types/dialog/DialogTitle.d.ts +0 -22
  140. package/dist-types/drawer/Drawer.d.ts +0 -28
  141. package/dist-types/drawer/DrawerCloseButton.d.ts +0 -2
  142. package/dist-types/drawer/index.d.ts +0 -2
@@ -1,4 +1,4 @@
1
- var css_248z = "/* Styles applied to root component (TokenizedInput) */\n.salt-density-medium {\n --tokenizedInput-gutter-size: var(--salt-size-basis-unit);\n --tokenizedInput-pill-group-y-padding: calc(var(--salt-size-unit) / 2);\n --tokenizedInput-last-pill-margin: var(--salt-size-unit);\n}\n.salt-density-touch {\n --tokenizedInput-gutter-size: var(--salt-size-basis-unit);\n --tokenizedInput-pill-group-y-padding: calc(var(--salt-size-unit) / 2 + 2px);\n --tokenizedInput-last-pill-margin: calc(var(--salt-size-unit) / 2);\n}\n\n.salt-density-low {\n --tokenizedInput-gutter-size: var(--salt-size-basis-unit);\n --tokenizedInput-pill-group-y-padding: calc(var(--salt-size-unit) / 2 + 1px);\n --tokenizedInput-last-pill-margin: calc(var(--salt-size-unit) / 2);\n}\n\n.salt-density-high {\n --tokenizedInput-gutter-size: calc(var(--salt-size-basis-unit) - 1px);\n --tokenizedInput-pill-group-y-padding: calc(var(--salt-size-unit) / 2 + 1px);\n --tokenizedInput-last-pill-margin: var(--salt-size-unit);\n}\n\n.saltTokenizedInput {\n --tokenizedInput-spacing: var(--salt-size-unit);\n --tokenizedInput-height: var(--salt-size-base);\n}\n\n.saltTokenizedInput {\n display: inline-flex;\n justify-content: space-between;\n min-width: 8em; /* same min-width as Input component */\n width: 100%;\n}\n\n/* Styles applied to root component on hover state */\n.saltTokenizedInput:hover {\n cursor: var(--salt-selectable-cursor-hover);\n}\n\n/* Styles applied to root component on hover state if `disabled={true}` */\n.saltTokenizedInput.saltTokenizedInput-disabled:hover {\n cursor: var(--salt-selectable-cursor-disabled);\n}\n\n/* Styles applied to container of pills */\n.saltTokenizedInput-pillGroup {\n align-content: flex-start;\n display: flex;\n flex: 1;\n flex-wrap: wrap;\n min-height: var(--tokenizedInput-height);\n padding: var(--tokenizedInput-pill-group-y-padding) var(--tokenizedInput-spacing);\n}\n\n/* Styles applied to root component if `disabled={true}` */\n.saltTokenizedInput-disabled {\n cursor: var(--salt-editable-cursor-disabled);\n opacity: var(--saltTokenizedInput-disabled-opacity, var(--salt-palette-opacity-disabled));\n}\n\n/* Styles applied to root component if `focused={true}` */\n.saltTokenizedInput-focused {\n outline: var(--saltTokenizedInput-focused-outline, var(--salt-focused-outline));\n}\n\n/* Styles applied to root component if `expanded={true}` */\n.saltTokenizedInput-expanded {\n height: auto;\n\n /* Pill CSS API */\n --saltPill-maxWidth: calc(100px - var(--salt-size-unit));\n}\n\n/* Styles applied to Input and Clear Button if `expanded={false}` */\n.saltTokenizedInput-hidden,\n.saltTokenizedInput-input.saltTokenizedInput-hidden,\n.saltButton.saltTokenizedInput-hidden {\n display: none;\n}\n\n/**\n Styles applied to inner Input component\n Used to be .inputRoot\n**/\n.saltInputLegacy.saltTokenizedInput-input {\n align-items: flex-start;\n cursor: text;\n flex-grow: 1;\n padding: 0;\n outline: none;\n width: auto;\n height: auto;\n min-width: 0;\n min-height: 0;\n}\n\n/* Styles applied to Clear Button */\n.saltTokenizedInput-clearButton {\n flex: none;\n align-self: flex-end;\n}\n\n/* Styles applied to Expand Button */\n.saltTokenizedInput-expandButton.saltButton {\n padding: 0 calc(var(--tokenizedInput-spacing) / 4);\n --saltButton-height: calc(var(--tokenizedInput-height) - var(--tokenizedInput-spacing) * 1.5);\n --saltButton-margin: calc(var(--tokenizedInput-gutter-size) / 2) 0;\n}\n\n/* Styles applied to root component and pill container if `expanded={true}` */\n.saltTokenizedInput-expanded,\n.saltTokenizedInput-expanded .saltTokenizedInput-pillGroup {\n height: auto;\n}\n\n/* TODO: Adjust specificity of .InputPill depending on styling solution.\n This is an example of internal sub-component naming convension. */\n.saltTokenizedInput .saltInputPill,\n.saltInputLegacy.saltTokenizedInput-input,\n.saltTokenizedInput-inputField.saltTokenizedInput-inputMultiline .saltTokenizedInput-input {\n margin: calc(var(--tokenizedInput-gutter-size) / 2) 0;\n height: calc(var(--tokenizedInput-height) - var(--tokenizedInput-spacing) * 1.5);\n}\n\n/* Styles applied to inner Pills */\n.saltTokenizedInput .saltInputPill {\n min-width: 0;\n margin-right: var(--tokenizedInput-gutter-size);\n --saltPill-maxWidth: 100px;\n}\n\n.saltTokenizedInput .saltInputPill > * {\n min-width: 0;\n}\n\n/* Styles applied to a Pill if `expanded={false} && index >= firstHiddenIndex` */\n.saltTokenizedInput .saltInputPill.saltInputPill-hidden {\n display: none;\n}\n\n/* Styles applied to the last visible Pill when all visible */\n.saltTokenizedInput .saltInputPill-pillLastVisible {\n margin-right: var(--saltTokenizedInput-pill-last-visible-marginRight, var(--tokenizedInput-last-pill-margin));\n}\n\n/* Styles applied to a Pill when active */\n.saltTokenizedInput .saltInputPill-pillActive {\n background: var(--saltTokenizedInput-pill-background-active, var(--salt-selectable-background-hover));\n}\n\n/* Styles applied to a Pills delete icon */\n.saltTokenizedInput .saltInputPill-pillActive .saltPill-deleteIcon {\n color: var(--saltTokenizedInput-pill-delete-icon-color, var(--salt-actionable-cta-foreground-hover));\n}\n\n/* Styles applied to a Pills delete button */\n.saltTokenizedInput .saltInputPill-pillActive .saltPill-deleteButton {\n color: var(--saltTokenizedInput-pill-delete-button-color-active, var(--salt-actionable-cta-foreground-hover));\n background: var(--saltTokenizedInput-pill-delete-button-background-active, var(--salt-actionable-cta-background-hover));\n}\n";
1
+ var css_248z = "/* Styles applied to root component (TokenizedInput) */\n.salt-density-medium {\n --tokenizedInput-gutter-size: var(--salt-size-basis-unit);\n --tokenizedInput-pill-group-y-padding: calc(var(--salt-size-unit) / 2);\n --tokenizedInput-last-pill-margin: var(--salt-size-unit);\n}\n.salt-density-touch {\n --tokenizedInput-gutter-size: var(--salt-size-basis-unit);\n --tokenizedInput-pill-group-y-padding: calc(var(--salt-size-unit) / 2 + 2px);\n --tokenizedInput-last-pill-margin: calc(var(--salt-size-unit) / 2);\n}\n\n.salt-density-low {\n --tokenizedInput-gutter-size: var(--salt-size-basis-unit);\n --tokenizedInput-pill-group-y-padding: calc(var(--salt-size-unit) / 2 + 1px);\n --tokenizedInput-last-pill-margin: calc(var(--salt-size-unit) / 2);\n}\n\n.salt-density-high {\n --tokenizedInput-gutter-size: calc(var(--salt-size-basis-unit) - 1px);\n --tokenizedInput-pill-group-y-padding: calc(var(--salt-size-unit) / 2 + 1px);\n --tokenizedInput-last-pill-margin: var(--salt-size-unit);\n}\n\n.saltTokenizedInput {\n --tokenizedInput-spacing: var(--salt-size-unit);\n --tokenizedInput-height: var(--salt-size-base);\n}\n\n.saltTokenizedInput {\n display: inline-flex;\n justify-content: space-between;\n min-width: 8em; /* same min-width as Input component */\n width: 100%;\n}\n\n/* Styles applied to root component on hover state */\n.saltTokenizedInput:hover {\n cursor: var(--salt-selectable-cursor-hover);\n}\n\n/* Styles applied to root component on hover state if `disabled={true}` */\n.saltTokenizedInput.saltTokenizedInput-disabled:hover {\n cursor: var(--salt-selectable-cursor-disabled);\n}\n\n/* Styles applied to container of pills */\n.saltTokenizedInput-pillGroup {\n align-content: flex-start;\n display: flex;\n flex: 1;\n flex-wrap: wrap;\n min-height: var(--tokenizedInput-height);\n padding: var(--tokenizedInput-pill-group-y-padding) var(--tokenizedInput-spacing);\n box-sizing: border-box;\n}\n\n/* Styles applied to root component if `disabled={true}` */\n.saltTokenizedInput-disabled {\n cursor: var(--salt-editable-cursor-disabled);\n opacity: var(--saltTokenizedInput-disabled-opacity, var(--salt-palette-opacity-disabled));\n}\n\n/* Styles applied to root component if `focused={true}` */\n.saltTokenizedInput-focused {\n outline: var(--saltTokenizedInput-focused-outline, var(--salt-focused-outline));\n}\n\n/* Styles applied to root component if `expanded={true}` */\n.saltTokenizedInput-expanded {\n height: auto;\n\n /* Pill CSS API */\n --saltPill-maxWidth: calc(100px - var(--salt-size-unit));\n}\n\n/* Styles applied to Input and Clear Button if `expanded={false}` */\n.saltTokenizedInput-hidden,\n.saltTokenizedInput-input.saltTokenizedInput-hidden,\n.saltButton.saltTokenizedInput-hidden {\n display: none;\n}\n\n/**\n Styles applied to inner Input component\n Used to be .inputRoot\n**/\n.saltInputLegacy.saltTokenizedInput-input {\n align-items: flex-start;\n cursor: text;\n flex-grow: 1;\n padding: 0;\n outline: none;\n width: auto;\n height: auto;\n min-width: 0;\n min-height: 0;\n}\n\n/* Styles applied to Clear Button */\n.saltTokenizedInput-clearButton {\n flex: none;\n align-self: flex-end;\n}\n\n/* Styles applied to Expand Button */\n.saltTokenizedInput-expandButton.saltButton {\n padding: 0 calc(var(--tokenizedInput-spacing) / 4);\n --saltButton-height: calc(var(--tokenizedInput-height) - var(--tokenizedInput-spacing) * 1.5);\n --saltButton-margin: calc(var(--tokenizedInput-gutter-size) / 2) 0;\n}\n\n/* Styles applied to root component and pill container if `expanded={true}` */\n.saltTokenizedInput-expanded,\n.saltTokenizedInput-expanded .saltTokenizedInput-pillGroup {\n height: auto;\n}\n\n/* TODO: Adjust specificity of .InputPill depending on styling solution.\n This is an example of internal sub-component naming convension. */\n.saltTokenizedInput .saltInputPill,\n.saltInputLegacy.saltTokenizedInput-input,\n.saltTokenizedInput-inputField.saltTokenizedInput-inputMultiline .saltTokenizedInput-input {\n margin: calc(var(--tokenizedInput-gutter-size) / 2) 0;\n height: calc(var(--tokenizedInput-height) - var(--tokenizedInput-spacing) * 1.5);\n}\n\n/* Styles applied to inner Pills */\n.saltTokenizedInput .saltInputPill {\n min-width: 0;\n margin-right: var(--tokenizedInput-gutter-size);\n --saltPill-maxWidth: 100px;\n}\n\n.saltTokenizedInput .saltInputPill > * {\n min-width: 0;\n}\n\n/* Styles applied to a Pill if `expanded={false} && index >= firstHiddenIndex` */\n.saltTokenizedInput .saltInputPill.saltInputPill-hidden {\n display: none;\n}\n\n/* Styles applied to the last visible Pill when all visible */\n.saltTokenizedInput .saltInputPill-pillLastVisible {\n margin-right: var(--saltTokenizedInput-pill-last-visible-marginRight, var(--tokenizedInput-last-pill-margin));\n}\n\n/* Styles applied to a Pill when active */\n.saltTokenizedInput .saltInputPill-pillActive {\n background: var(--saltTokenizedInput-pill-background-active, var(--salt-selectable-background-hover));\n}\n\n/* Styles applied to a Pills delete icon */\n.saltTokenizedInput .saltInputPill-pillActive .saltPill-deleteIcon {\n color: var(--saltTokenizedInput-pill-delete-icon-color, var(--salt-actionable-cta-foreground-hover));\n}\n\n/* Styles applied to a Pills delete button */\n.saltTokenizedInput .saltInputPill-pillActive .saltPill-deleteButton {\n color: var(--saltTokenizedInput-pill-delete-button-color-active, var(--salt-actionable-cta-foreground-hover));\n background: var(--saltTokenizedInput-pill-delete-button-background-active, var(--salt-actionable-cta-background-hover));\n}\n";
2
2
 
3
3
  export { css_248z as default };
4
4
  //# sourceMappingURL=TokenizedInput.css.js.map
@@ -1,4 +1,4 @@
1
- var css_248z = "/* Style applied to the root element */\n.saltTokenizedInputNext-container {\n width: 100%;\n}\n.saltTokenizedInputNext {\n --tokenizedInput-borderColor: var(--salt-editable-borderColor);\n --tokenizedInput-borderStyle: var(--salt-editable-borderStyle);\n --tokenizedInput-outlineColor: var(--salt-focused-outlineColor);\n --tokenizedInput-border: none;\n --tokenizedInput-activationIndicator-borderWidth: var(--salt-size-border);\n\n align-items: center;\n background: var(--tokenizedInput-background);\n border: var(--tokenizedInput-border);\n color: var(--salt-content-primary-foreground);\n display: inline-flex;\n flex-wrap: wrap;\n font-family: var(--salt-text-fontFamily);\n font-size: var(--salt-text-fontSize);\n height: 100%;\n line-height: var(--salt-text-lineHeight);\n min-height: var(--salt-size-base);\n padding: 0 var(--salt-spacing-100);\n position: relative;\n width: 100%;\n overflow: hidden;\n}\n\n/* Style applied on hover */\n.saltTokenizedInputNext:hover {\n --tokenizedInput-borderStyle: var(--salt-editable-borderStyle-hover);\n --tokenizedInput-borderColor: var(--salt-editable-borderColor-hover);\n\n background: var(--tokenizedInput-background-hover);\n cursor: var(--salt-editable-cursor-hover);\n}\n\n/* Style applied when active */\n.saltTokenizedInputNext:active {\n --tokenizedInput-borderColor: var(--salt-editable-borderColor-active);\n --tokenizedInput-borderStyle: var(--salt-editable-borderStyle-active);\n --tokenizedInput-activationIndicator-borderWidth: var(--salt-editable-borderWidth-active);\n\n background: var(--tokenizedInput-background-active);\n cursor: var(--salt-editable-cursor-active);\n}\n\n/* Class applied if `variant=\"primary\"` */\n.saltTokenizedInputNext-primary {\n --tokenizedInput-background: var(--salt-editable-primary-background);\n --tokenizedInput-background-active: var(--salt-editable-primary-background-active);\n --tokenizedInput-background-hover: var(--salt-editable-primary-background-hover);\n --tokenizedInput-background-disabled: var(--salt-editable-primary-background-disabled);\n --tokenizedInput-background-readonly: var(--salt-editable-primary-background-readonly);\n}\n\n/* Class applied if `variant=\"secondary\"` */\n.saltTokenizedInputNext-secondary {\n --tokenizedInput-background: var(--salt-editable-secondary-background);\n --tokenizedInput-background-active: var(--salt-editable-secondary-background-active);\n --tokenizedInput-background-hover: var(--salt-editable-secondary-background-active);\n --tokenizedInput-background-disabled: var(--salt-editable-secondary-background-disabled);\n --tokenizedInput-background-readonly: var(--salt-editable-secondary-background-readonly);\n}\n\n/* Style applied to input if `validationState=\"error\"` */\n.saltTokenizedInputNext-error,\n.saltTokenizedInputNext-error:hover {\n --tokenizedInput-background: var(--salt-status-error-background);\n --tokenizedInput-background-active: var(--salt-status-error-background);\n --tokenizedInput-background-hover: var(--salt-status-error-background);\n --tokenizedInput-borderColor: var(--salt-status-error-borderColor);\n --tokenizedInput-outlineColor: var(--salt-status-error-borderColor);\n}\n\n/* Style applied to input if `validationState=\"warning\"` */\n.saltTokenizedInputNext-warning,\n.saltTokenizedInputNext-warning:hover {\n --tokenizedInput-background: var(--salt-status-warning-background);\n --tokenizedInput-background-active: var(--salt-status-warning-background);\n --tokenizedInput-background-hover: var(--salt-status-warning-background);\n --tokenizedInput-borderColor: var(--salt-status-warning-borderColor);\n --tokenizedInput-outlineColor: var(--salt-status-warning-borderColor);\n}\n\n/* Style applied to input if `validationState=\"success\"` */\n.saltTokenizedInputNext-success,\n.saltTokenizedInputNext-success:hover {\n --tokenizedInput-background: var(--salt-status-success-background);\n --tokenizedInput-background-active: var(--salt-status-success-background);\n --tokenizedInput-background-hover: var(--salt-status-success-background);\n --tokenizedInput-borderColor: var(--salt-status-success-borderColor);\n --tokenizedInput-outlineColor: var(--salt-status-success-borderColor);\n}\n\n/* Style applied to inner textarea element */\n.saltTokenizedInputNext-textarea {\n background: none;\n border: none;\n box-sizing: content-box;\n color: inherit;\n cursor: inherit;\n display: inline-flex;\n flex-basis: 0;\n height: var(--salt-text-lineHeight);\n font: inherit;\n letter-spacing: 0;\n overflow: hidden;\n resize: none;\n padding: 0;\n min-width: 1px; /* requires a min width to be visible */\n}\n.saltTokenizedInputNext-expanded .saltTokenizedInputNext-textarea {\n flex-grow: 1;\n min-width: 4em; /* on expanded, use the same min-width as input*/\n}\n\n/* Style applied to placeholder */\n.saltTokenizedInputNext-textarea::placeholder {\n font-weight: var(--salt-text-fontWeight-small);\n}\n\n/* Reset in the class */\n.saltTokenizedInputNext-textarea:focus {\n outline: none;\n}\n\n/* Style applied to selected input */\n.saltTokenizedInputNext-textarea::selection {\n background: var(--salt-content-foreground-highlight);\n}\n\n/* Styling when focused */\n.saltTokenizedInputNext-focused {\n --tokenizedInput-borderColor: var(--tokenizedInput-outlineColor);\n --tokenizedInput-activationIndicator-borderWidth: var(--salt-editable-borderWidth-active);\n\n outline: var(--salt-focused-outlineWidth) var(--salt-focused-outlineStyle) var(--tokenizedInput-outlineColor);\n}\n\n/* Style applied if `readOnly={true}` */\n.saltTokenizedInputNext-readOnly,\n.saltTokenizedInputNext-readOnly:active,\n.saltTokenizedInputNext-readOnly:hover {\n --tokenizedInput-borderColor: var(--salt-editable-borderColor-readonly);\n --tokenizedInput-borderStyle: var(--salt-editable-borderStyle-readonly);\n --tokenizedInput-activationIndicator-borderWidth: var(--salt-size-border);\n\n background: var(--tokenizedInput-background-readonly);\n cursor: var(--salt-editable-cursor-readonly);\n}\n\n/* Style applied to selected text if `disabled={true}` */\n.saltTokenizedInputNext-disabled .saltTokenizedInputNext-textarea::selection {\n background: none;\n}\n\n/* Style applied when `disabled={true}` */\n.saltTokenizedInputNext-disabled,\n.saltTokenizedInputNext-disabled:hover,\n.saltTokenizedInputNext-disabled:active {\n --tokenizedInput-borderColor: var(--salt-editable-borderColor-disabled);\n --tokenizedInput-borderStyle: var(--salt-editable-borderStyle-disabled);\n --tokenizedInput-activationIndicator-borderWidth: var(--salt-size-border);\n\n background: var(--tokenizedInput-background-disabled);\n cursor: var(--salt-editable-cursor-disabled);\n color: var(--salt-content-primary-foreground-disabled);\n}\n\n/* Style for activation indicator */\n.saltTokenizedInputNext-activationIndicator {\n left: 0;\n bottom: 0;\n width: 100%;\n position: absolute;\n border-bottom: var(--tokenizedInput-activationIndicator-borderWidth) var(--tokenizedInput-borderStyle) var(--tokenizedInput-borderColor);\n}\n\n/* Style applied if `bordered={true}` */\n.saltTokenizedInputNext.saltTokenizedInputNext-bordered {\n --tokenizedInput-border: var(--salt-size-border) var(--salt-container-borderStyle) var(--tokenizedInput-borderColor);\n --tokenizedInput-activationIndicator-borderWidth: 0;\n}\n\n/* Style applied if active or focused when `bordered={true}` */\n.saltTokenizedInputNext-bordered:active,\n.saltTokenizedInputNext-bordered.saltTokenizedInputNext-focused {\n --tokenizedInput-activationIndicator-borderWidth: var(--salt-editable-borderWidth-active);\n}\n\n/* Styling when focused if `disabled={true}` or `readOnly={true}` when `bordered={true}` */\n.saltTokenizedInputNext-bordered.saltTokenizedInputNext-readOnly:hover,\n.saltTokenizedInputNext-bordered.saltTokenizedInputNext-disabled:hover {\n --tokenizedInput-activationIndicator-borderWidth: 0;\n}\n\n.saltTokenizedInputNext-statusAdornment {\n margin-left: auto;\n margin-right: var(--salt-spacing-100);\n}\n\n.saltTokenizedInputNext-endAdornmentContainer {\n margin-left: auto;\n align-self: self-end;\n display: inline-flex;\n min-height: var(--salt-size-base);\n}\n\n.saltTokenizedInputNext-statusAdornment ~ .saltTokenizedInputNext-endAdornmentContainer {\n margin-left: 0;\n}\n\n.saltTokenizedInputNext .saltButton {\n --saltButton-padding: 0;\n --saltButton-height: calc(var(--salt-size-base) - var(--salt-spacing-100));\n --saltButton-width: calc(var(--salt-size-base) - var(--salt-spacing-100));\n}\n\n.saltTokenizedInputNext .saltButton.saltTokenizedInputNext-endAdornment {\n --saltButton-margin: auto calc(var(--salt-spacing-50) * -1) auto auto;\n}\n.saltTokenizedInputNext-hidden {\n display: none;\n}\n";
1
+ var css_248z = "/* Style applied to the root element */\n.saltTokenizedInputNext-container {\n width: 100%;\n}\n.saltTokenizedInputNext {\n --tokenizedInput-borderColor: var(--salt-editable-borderColor);\n --tokenizedInput-borderStyle: var(--salt-editable-borderStyle);\n --tokenizedInput-outlineColor: var(--salt-focused-outlineColor);\n --tokenizedInput-border: none;\n --tokenizedInput-activationIndicator-borderWidth: var(--salt-size-border);\n\n align-items: center;\n background: var(--tokenizedInput-background);\n border: var(--tokenizedInput-border);\n color: var(--salt-content-primary-foreground);\n display: inline-flex;\n flex-wrap: wrap;\n font-family: var(--salt-text-fontFamily);\n font-size: var(--salt-text-fontSize);\n height: 100%;\n line-height: var(--salt-text-lineHeight);\n min-height: var(--salt-size-base);\n padding: 0 var(--salt-spacing-100);\n position: relative;\n width: 100%;\n overflow: hidden;\n box-sizing: border-box;\n}\n\n/* Style applied on hover */\n.saltTokenizedInputNext:hover {\n --tokenizedInput-borderStyle: var(--salt-editable-borderStyle-hover);\n --tokenizedInput-borderColor: var(--salt-editable-borderColor-hover);\n\n background: var(--tokenizedInput-background-hover);\n cursor: var(--salt-editable-cursor-hover);\n}\n\n/* Style applied when active */\n.saltTokenizedInputNext:active {\n --tokenizedInput-borderColor: var(--salt-editable-borderColor-active);\n --tokenizedInput-borderStyle: var(--salt-editable-borderStyle-active);\n --tokenizedInput-activationIndicator-borderWidth: var(--salt-editable-borderWidth-active);\n\n background: var(--tokenizedInput-background-active);\n cursor: var(--salt-editable-cursor-active);\n}\n\n/* Class applied if `variant=\"primary\"` */\n.saltTokenizedInputNext-primary {\n --tokenizedInput-background: var(--salt-editable-primary-background);\n --tokenizedInput-background-active: var(--salt-editable-primary-background-active);\n --tokenizedInput-background-hover: var(--salt-editable-primary-background-hover);\n --tokenizedInput-background-disabled: var(--salt-editable-primary-background-disabled);\n --tokenizedInput-background-readonly: var(--salt-editable-primary-background-readonly);\n}\n\n/* Class applied if `variant=\"secondary\"` */\n.saltTokenizedInputNext-secondary {\n --tokenizedInput-background: var(--salt-editable-secondary-background);\n --tokenizedInput-background-active: var(--salt-editable-secondary-background-active);\n --tokenizedInput-background-hover: var(--salt-editable-secondary-background-active);\n --tokenizedInput-background-disabled: var(--salt-editable-secondary-background-disabled);\n --tokenizedInput-background-readonly: var(--salt-editable-secondary-background-readonly);\n}\n\n/* Style applied to input if `validationState=\"error\"` */\n.saltTokenizedInputNext-error,\n.saltTokenizedInputNext-error:hover {\n --tokenizedInput-background: var(--salt-status-error-background);\n --tokenizedInput-background-active: var(--salt-status-error-background);\n --tokenizedInput-background-hover: var(--salt-status-error-background);\n --tokenizedInput-borderColor: var(--salt-status-error-borderColor);\n --tokenizedInput-outlineColor: var(--salt-status-error-borderColor);\n}\n\n/* Style applied to input if `validationState=\"warning\"` */\n.saltTokenizedInputNext-warning,\n.saltTokenizedInputNext-warning:hover {\n --tokenizedInput-background: var(--salt-status-warning-background);\n --tokenizedInput-background-active: var(--salt-status-warning-background);\n --tokenizedInput-background-hover: var(--salt-status-warning-background);\n --tokenizedInput-borderColor: var(--salt-status-warning-borderColor);\n --tokenizedInput-outlineColor: var(--salt-status-warning-borderColor);\n}\n\n/* Style applied to input if `validationState=\"success\"` */\n.saltTokenizedInputNext-success,\n.saltTokenizedInputNext-success:hover {\n --tokenizedInput-background: var(--salt-status-success-background);\n --tokenizedInput-background-active: var(--salt-status-success-background);\n --tokenizedInput-background-hover: var(--salt-status-success-background);\n --tokenizedInput-borderColor: var(--salt-status-success-borderColor);\n --tokenizedInput-outlineColor: var(--salt-status-success-borderColor);\n}\n\n/* Style applied to inner textarea element */\n.saltTokenizedInputNext-textarea {\n background: none;\n border: none;\n box-sizing: content-box;\n color: inherit;\n cursor: inherit;\n display: inline-flex;\n flex-basis: 0;\n height: var(--salt-text-lineHeight);\n font: inherit;\n letter-spacing: 0;\n overflow: hidden;\n resize: none;\n padding: 0;\n min-width: 1px; /* requires a min width to be visible */\n}\n.saltTokenizedInputNext-expanded .saltTokenizedInputNext-textarea {\n flex-grow: 1;\n min-width: 4em; /* on expanded, use the same min-width as input*/\n}\n\n/* Style applied to placeholder */\n.saltTokenizedInputNext-textarea::placeholder {\n font-weight: var(--salt-text-fontWeight-small);\n}\n\n/* Reset in the class */\n.saltTokenizedInputNext-textarea:focus {\n outline: none;\n}\n\n/* Style applied to selected input */\n.saltTokenizedInputNext-textarea::selection {\n background: var(--salt-content-foreground-highlight);\n}\n\n/* Styling when focused */\n.saltTokenizedInputNext-focused {\n --tokenizedInput-borderColor: var(--tokenizedInput-outlineColor);\n --tokenizedInput-activationIndicator-borderWidth: var(--salt-editable-borderWidth-active);\n\n outline: var(--salt-focused-outlineWidth) var(--salt-focused-outlineStyle) var(--tokenizedInput-outlineColor);\n}\n\n/* Style applied if `readOnly={true}` */\n.saltTokenizedInputNext-readOnly,\n.saltTokenizedInputNext-readOnly:active,\n.saltTokenizedInputNext-readOnly:hover {\n --tokenizedInput-borderColor: var(--salt-editable-borderColor-readonly);\n --tokenizedInput-borderStyle: var(--salt-editable-borderStyle-readonly);\n --tokenizedInput-activationIndicator-borderWidth: var(--salt-size-border);\n\n background: var(--tokenizedInput-background-readonly);\n cursor: var(--salt-editable-cursor-readonly);\n}\n\n/* Style applied to selected text if `disabled={true}` */\n.saltTokenizedInputNext-disabled .saltTokenizedInputNext-textarea::selection {\n background: none;\n}\n\n/* Style applied when `disabled={true}` */\n.saltTokenizedInputNext-disabled,\n.saltTokenizedInputNext-disabled:hover,\n.saltTokenizedInputNext-disabled:active {\n --tokenizedInput-borderColor: var(--salt-editable-borderColor-disabled);\n --tokenizedInput-borderStyle: var(--salt-editable-borderStyle-disabled);\n --tokenizedInput-activationIndicator-borderWidth: var(--salt-size-border);\n\n background: var(--tokenizedInput-background-disabled);\n cursor: var(--salt-editable-cursor-disabled);\n color: var(--salt-content-primary-foreground-disabled);\n}\n\n/* Style for activation indicator */\n.saltTokenizedInputNext-activationIndicator {\n left: 0;\n bottom: 0;\n width: 100%;\n position: absolute;\n border-bottom: var(--tokenizedInput-activationIndicator-borderWidth) var(--tokenizedInput-borderStyle) var(--tokenizedInput-borderColor);\n}\n\n/* Style applied if `bordered={true}` */\n.saltTokenizedInputNext.saltTokenizedInputNext-bordered {\n --tokenizedInput-border: var(--salt-size-border) var(--salt-container-borderStyle) var(--tokenizedInput-borderColor);\n --tokenizedInput-activationIndicator-borderWidth: 0;\n}\n\n/* Style applied if active or focused when `bordered={true}` */\n.saltTokenizedInputNext-bordered:active,\n.saltTokenizedInputNext-bordered.saltTokenizedInputNext-focused {\n --tokenizedInput-activationIndicator-borderWidth: var(--salt-editable-borderWidth-active);\n}\n\n/* Styling when focused if `disabled={true}` or `readOnly={true}` when `bordered={true}` */\n.saltTokenizedInputNext-bordered.saltTokenizedInputNext-readOnly:hover,\n.saltTokenizedInputNext-bordered.saltTokenizedInputNext-disabled:hover {\n --tokenizedInput-activationIndicator-borderWidth: 0;\n}\n\n.saltTokenizedInputNext-statusAdornment {\n margin-left: auto;\n margin-right: var(--salt-spacing-100);\n}\n\n.saltTokenizedInputNext-endAdornmentContainer {\n margin-left: auto;\n align-self: self-end;\n display: inline-flex;\n min-height: var(--salt-size-base);\n}\n\n.saltTokenizedInputNext-statusAdornment ~ .saltTokenizedInputNext-endAdornmentContainer {\n margin-left: 0;\n}\n\n.saltTokenizedInputNext .saltButton {\n --saltButton-padding: 0;\n --saltButton-height: calc(var(--salt-size-base) - var(--salt-spacing-100));\n --saltButton-width: calc(var(--salt-size-base) - var(--salt-spacing-100));\n}\n\n.saltTokenizedInputNext .saltButton.saltTokenizedInputNext-endAdornment {\n --saltButton-margin: auto calc(var(--salt-spacing-50) * -1) auto auto;\n}\n.saltTokenizedInputNext-hidden {\n display: none;\n}\n";
2
2
 
3
3
  export { css_248z as default };
4
4
  //# sourceMappingURL=TokenizedInputNext.css.js.map
@@ -1,8 +1,8 @@
1
1
  import { useCalendar } from "../useCalendar";
2
- declare type CalendarState = {
2
+ interface CalendarState {
3
3
  state: ReturnType<typeof useCalendar>["state"];
4
4
  helpers: ReturnType<typeof useCalendar>["helpers"];
5
- };
5
+ }
6
6
  declare const CalendarContext: import("react").Context<CalendarState | null>;
7
7
  declare function useCalendarContext(): CalendarState;
8
8
  export { CalendarContext, useCalendarContext };
@@ -1,12 +1,8 @@
1
- import { ButtonProps } from "@salt-ds/core";
2
1
  import { ComponentPropsWithRef } from "react";
3
- import { DropdownProps } from "../../dropdown";
2
+ import { ButtonProps } from "@salt-ds/core";
3
+ import { DropdownNextProps } from "../../dropdown-next";
4
4
  import { DateValue } from "@internationalized/date";
5
- declare type DropdownItem = {
6
- value: DateValue;
7
- disabled?: boolean;
8
- };
9
- declare type dateDropdownProps = DropdownProps<DropdownItem>;
5
+ declare type dateDropdownProps = DropdownNextProps<DateValue>;
10
6
  export interface CalendarNavigationProps extends ComponentPropsWithRef<"div"> {
11
7
  MonthDropdownProps?: dateDropdownProps;
12
8
  YearDropdownProps?: dateDropdownProps;
@@ -1,13 +1,15 @@
1
1
  import { DateValue } from "@internationalized/date";
2
2
  import { RefObject } from "react";
3
- export declare type DayStatus = {
3
+ export interface DayStatus {
4
4
  outOfRange?: boolean;
5
5
  selected?: boolean;
6
6
  today?: boolean;
7
- unselectable?: "medium" | "low" | false;
7
+ unselectable?: string | false;
8
+ highlighted?: string | false;
8
9
  focused?: boolean;
10
+ disabled?: boolean;
9
11
  hidden?: boolean;
10
- };
12
+ }
11
13
  export interface useCalendarDayProps {
12
14
  date: DateValue;
13
15
  month: DateValue;
@@ -15,5 +17,6 @@ export interface useCalendarDayProps {
15
17
  export declare function useCalendarDay({ date, month }: useCalendarDayProps, ref: RefObject<HTMLElement>): {
16
18
  status: DayStatus;
17
19
  dayProps: Omit<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref">;
18
- unselectableReason: string | undefined;
20
+ unselectableReason: string | false | void;
21
+ highlightedReason: string | false | void;
19
22
  };
@@ -10,14 +10,14 @@ interface BaseUseSelectionCalendarProps<SelectionVariantType> {
10
10
  }
11
11
  declare type SingleSelectionValueType = DateValue;
12
12
  declare type MultiSelectionValueType = DateValue[];
13
- declare type RangeSelectionValueType = {
13
+ interface RangeSelectionValueType {
14
14
  startDate?: DateValue;
15
15
  endDate?: DateValue;
16
- };
17
- declare type OffsetSelectionValueType = {
16
+ }
17
+ interface OffsetSelectionValueType {
18
18
  startDate?: DateValue;
19
19
  endDate?: DateValue;
20
- };
20
+ }
21
21
  export interface UseOffsetSelectionCalendarProps extends Omit<BaseUseSelectionCalendarProps<OffsetSelectionValueType>, "startDateOffset" | "endDateOffset"> {
22
22
  selectionVariant: "offset";
23
23
  startDateOffset?: (date: DateValue) => DateValue;
@@ -1,20 +1,17 @@
1
1
  import { ReactNode, Ref } from "react";
2
2
  import { InputProps } from "@salt-ds/core";
3
- import { ListControlProps } from "../list-control/ListControlState";
4
- export interface ComboBoxNextProps<Item = string> extends InputProps, Omit<ListControlProps<Item>, "value" | "defaultValue"> {
3
+ import { UseComboBoxNextProps } from "./useComboBoxNext";
4
+ export declare type ComboBoxNextProps<Item = string> = {
5
5
  /**
6
6
  * The options to display in the combo box.
7
7
  */
8
8
  children?: ReactNode;
9
+ } & UseComboBoxNextProps<Item> & InputProps;
10
+ export declare const ComboBoxNext: <Item = string>(props: {
9
11
  /**
10
- * The default value of the input.
11
- */
12
- defaultValue?: string | readonly string[] | number | undefined;
13
- /**
14
- * The value of the input. The component will be controlled if this prop is provided.
12
+ * The options to display in the combo box.
15
13
  */
16
- value?: string | readonly string[] | number | undefined;
17
- }
18
- export declare const ComboBoxNext: <Item = string>(props: ComboBoxNextProps<Item> & {
14
+ children?: ReactNode;
15
+ } & import("../list-control/ListControlState").ListControlProps<Item> & Pick<Omit<import("react").DetailedHTMLProps<import("react").InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, "ref">, "defaultValue" | "value"> & InputProps & {
19
16
  ref?: Ref<HTMLDivElement> | undefined;
20
17
  }) => JSX.Element;
@@ -1,8 +1,11 @@
1
1
  import { ListControlProps } from "../list-control/ListControlState";
2
- import { SyntheticEvent } from "react";
2
+ import { ComponentPropsWithoutRef, SyntheticEvent } from "react";
3
3
  import { OptionValue } from "../list-control/ListControlContext";
4
- export declare function useComboBoxNext<Item>(props: ListControlProps<Item>): {
4
+ export declare type UseComboBoxNextProps<Item> = ListControlProps<Item> & Pick<ComponentPropsWithoutRef<"input">, "value" | "defaultValue">;
5
+ export declare function useComboBoxNext<Item>(props: UseComboBoxNextProps<Item>): {
5
6
  select: (event: SyntheticEvent, option: OptionValue<Item>) => void;
7
+ valueState: string | number | readonly string[] | undefined;
8
+ setValueState: import("react").Dispatch<import("react").SetStateAction<string | number | readonly string[] | undefined>>;
6
9
  multiselect: boolean;
7
10
  openState: boolean;
8
11
  setOpen: (newOpen: boolean, reason?: import("../list-control/ListControlState").OpenChangeReason | undefined, key?: string | undefined) => void;
@@ -12,8 +15,6 @@ export declare function useComboBoxNext<Item>(props: ListControlProps<Item>): {
12
15
  selectedState: Item[];
13
16
  setSelectedState: import("react").Dispatch<import("react").SetStateAction<Item[]>>;
14
17
  clear: (event: SyntheticEvent<Element, Event>) => void;
15
- valueState: string | number | readonly string[] | undefined;
16
- setValueState: import("react").Dispatch<import("react").SetStateAction<string | number | readonly string[] | undefined>>;
17
18
  focusVisibleState: boolean;
18
19
  setFocusVisibleState: import("react").Dispatch<import("react").SetStateAction<boolean>>;
19
20
  focusedState: boolean;
@@ -25,4 +26,5 @@ export declare function useComboBoxNext<Item>(props: ListControlProps<Item>): {
25
26
  getIndexOfOption: (option: OptionValue<Item>) => number;
26
27
  getOptionsMatching: (predicate: (option: OptionValue<Item>) => boolean) => OptionValue<Item>[];
27
28
  getOptionFromSearch: (search: string, startFrom?: OptionValue<Item> | undefined) => OptionValue<Item> | undefined;
29
+ valueToString: (item: Item) => string;
28
30
  };
@@ -0,0 +1,22 @@
1
+ import { ReactNode, ComponentPropsWithoutRef } from "react";
2
+ import { ValidationStatus } from "@salt-ds/core";
3
+ interface DialogTitleProps extends ComponentPropsWithoutRef<"div"> {
4
+ /**
5
+ * The status of the Dialog
6
+ */
7
+ status?: ValidationStatus | undefined;
8
+ /**
9
+ * Displays the accent bar in the Dialog Title */
10
+ disableAccent?: boolean;
11
+ /**
12
+ * Displays the header at the top of the Dialog
13
+ */
14
+ header: ReactNode;
15
+ /**
16
+ * Displays the preheader just above the header
17
+ **/
18
+ preheader?: ReactNode;
19
+ className?: string;
20
+ }
21
+ export declare const DialogHeader: ({ className, header, preheader, disableAccent, status: statusProp, ...rest }: DialogTitleProps) => JSX.Element;
22
+ export {};
@@ -1,5 +1,5 @@
1
1
  export * from "./Dialog";
2
- export * from "./DialogTitle";
2
+ export * from "./DialogHeader";
3
3
  export * from "./DialogActions";
4
4
  export * from "./DialogContent";
5
5
  export * from "./DialogContext";
@@ -1,7 +1,7 @@
1
1
  import { ComponentPropsWithoutRef, ReactNode, Ref } from "react";
2
2
  import { ListControlProps } from "../list-control/ListControlState";
3
3
  import { ValidationStatus } from "@salt-ds/core";
4
- export interface DropdownNextProps<Item = string> extends Omit<ComponentPropsWithoutRef<"button">, "value" | "defaultValue">, ListControlProps<Item> {
4
+ export declare type DropdownNextProps<Item = string> = {
5
5
  /**
6
6
  * If `true`, the dropdown will be disabled.
7
7
  */
@@ -40,18 +40,60 @@ export interface DropdownNextProps<Item = string> extends Omit<ComponentPropsWit
40
40
  */
41
41
  variant?: "primary" | "secondary";
42
42
  /**
43
- * The default content of the dropdown shown in the button.
43
+ * The content of the dropdown shown in the button. The component will be controlled if this prop is provided.
44
+ */
45
+ value?: string;
46
+ /**
47
+ * Validation status, one of "error" | "warning" | "success".
48
+ */
49
+ validationStatus?: Exclude<ValidationStatus, "info">;
50
+ } & Omit<ComponentPropsWithoutRef<"button">, "value" | "defaultValue"> & ListControlProps<Item>;
51
+ export declare const DropdownNext: <Item = string>(props: {
52
+ /**
53
+ * If `true`, the dropdown will be disabled.
54
+ */
55
+ disabled?: boolean | undefined;
56
+ /**
57
+ * If `true`, the dropdown will be read-only.
58
+ */
59
+ readOnly?: boolean | undefined;
60
+ /**
61
+ * The options to display in the dropdown.
62
+ */
63
+ children?: ReactNode;
64
+ /**
65
+ * The marker to use in an empty read only dropdown.
66
+ * Use `''` to disable this feature. Defaults to '—'.
67
+ */
68
+ emptyReadOnlyMarker?: string | undefined;
69
+ /**
70
+ * If `true`, the dropdown will be multiselect.
71
+ */
72
+ multiselect?: boolean | undefined;
73
+ /**
74
+ * The text shown when the dropdown has no value.
75
+ */
76
+ placeholder?: string | undefined;
77
+ /**
78
+ * If `true`, the dropdown will be required.
44
79
  */
45
- defaultValue?: string | readonly string[] | number | undefined;
80
+ required?: boolean | undefined;
81
+ /**
82
+ * Start adornment component
83
+ */
84
+ startAdornment?: ReactNode;
85
+ /**
86
+ * Styling variant. Defaults to "primary".
87
+ */
88
+ variant?: "primary" | "secondary" | undefined;
46
89
  /**
47
90
  * The content of the dropdown shown in the button. The component will be controlled if this prop is provided.
48
91
  */
49
- value?: string | readonly string[] | number | undefined;
92
+ value?: string | undefined;
50
93
  /**
51
94
  * Validation status, one of "error" | "warning" | "success".
52
95
  */
53
- validationStatus?: Exclude<ValidationStatus, "info">;
54
- }
55
- export declare const DropdownNext: <Item = string>(props: DropdownNextProps<Item> & {
96
+ validationStatus?: "error" | "warning" | "success" | undefined;
97
+ } & Omit<Omit<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref">, "defaultValue" | "value"> & ListControlProps<Item> & {
56
98
  ref?: Ref<HTMLButtonElement> | undefined;
57
99
  }) => JSX.Element;
@@ -16,7 +16,6 @@ export * from "./content-status";
16
16
  export * from "./deck-item";
17
17
  export * from "./deck-layout";
18
18
  export * from "./dialog";
19
- export * from "./drawer";
20
19
  export * from "./dropdown";
21
20
  export * from "./dropdown-next";
22
21
  export * from "./editable-label";
@@ -3,7 +3,6 @@ export interface OptionValue<Item> {
3
3
  id: string;
4
4
  disabled: boolean;
5
5
  value: Item;
6
- text: string;
7
6
  }
8
7
  export declare type OpenChangeReason = "input" | "manual";
9
8
  export interface ListControlContextValue<Item> {
@@ -16,6 +15,7 @@ export interface ListControlContextValue<Item> {
16
15
  setActive: (option: OptionValue<Item>) => void;
17
16
  multiselect: boolean;
18
17
  focusVisibleState: boolean;
18
+ valueToString: (item: Item) => string;
19
19
  }
20
20
  export declare const ListControlContext: import("react").Context<ListControlContextValue<any>>;
21
21
  export declare function useListControlContext<Item>(): ListControlContextValue<Item>;
@@ -1,8 +1,14 @@
1
1
  import { SyntheticEvent } from "react";
2
2
  import { OptionValue } from "./ListControlContext";
3
3
  export declare type OpenChangeReason = "input" | "manual";
4
- export interface ListControlProps<Item> {
4
+ export declare type ListControlProps<Item> = {
5
+ /**
6
+ * If true, the control will be disabled.
7
+ */
5
8
  disabled?: boolean;
9
+ /**
10
+ * If true, the control will be read-only.
11
+ */
6
12
  readOnly?: boolean;
7
13
  /**
8
14
  * If true, the list will be open by default.
@@ -28,19 +34,16 @@ export interface ListControlProps<Item> {
28
34
  * Callback fired when the selected options change.
29
35
  */
30
36
  onSelectionChange?: (event: SyntheticEvent, newSelected: Item[]) => void;
31
- /**
32
- * The default value.
33
- */
34
- defaultValue?: string | readonly string[] | number | undefined;
35
- /**
36
- * The value. The component will be controlled if this prop is provided.
37
- */
38
- value?: string | readonly string[] | number | undefined;
39
37
  /**
40
38
  * If true, multiple options can be selected.
41
39
  */
42
40
  multiselect?: boolean;
43
- }
41
+ /**
42
+ * Callback used to convert an option's `value` to a string. This is needed when the value is different to the display value or the value is not a string.
43
+ */
44
+ valueToString?: (item: Item) => string;
45
+ };
46
+ export declare function defaultValueToString<Item>(item: Item): string;
44
47
  export declare function useListControl<Item>(props: ListControlProps<Item>): {
45
48
  multiselect: boolean;
46
49
  openState: boolean;
@@ -52,8 +55,6 @@ export declare function useListControl<Item>(props: ListControlProps<Item>): {
52
55
  setSelectedState: import("react").Dispatch<import("react").SetStateAction<Item[]>>;
53
56
  select: (event: SyntheticEvent, option: OptionValue<Item>) => void;
54
57
  clear: (event: SyntheticEvent) => void;
55
- valueState: string | number | readonly string[] | undefined;
56
- setValueState: import("react").Dispatch<import("react").SetStateAction<string | number | readonly string[] | undefined>>;
57
58
  focusVisibleState: boolean;
58
59
  setFocusVisibleState: import("react").Dispatch<import("react").SetStateAction<boolean>>;
59
60
  focusedState: boolean;
@@ -65,4 +66,5 @@ export declare function useListControl<Item>(props: ListControlProps<Item>): {
65
66
  getIndexOfOption: (option: OptionValue<Item>) => number;
66
67
  getOptionsMatching: (predicate: (option: OptionValue<Item>) => boolean) => OptionValue<Item>[];
67
68
  getOptionFromSearch: (search: string, startFrom?: OptionValue<Item> | undefined) => OptionValue<Item> | undefined;
69
+ valueToString: (item: Item) => string;
68
70
  };
@@ -8,10 +8,6 @@ export interface OptionProps extends ComponentPropsWithoutRef<"div"> {
8
8
  * The value of the option.
9
9
  */
10
10
  value: unknown;
11
- /**
12
- * The text value of the option. If not provided, the text value will be inferred from the children.
13
- */
14
- textValue?: string;
15
11
  /**
16
12
  * The content of the option.
17
13
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salt-ds/lab",
3
- "version": "1.0.0-alpha.32",
3
+ "version": "1.0.0-alpha.34",
4
4
  "license": "Apache-2.0",
5
5
  "repository": {
6
6
  "type": "git",
@@ -26,7 +26,7 @@
26
26
  "react-window": "^1.8.6",
27
27
  "rifm": "^0.12.0",
28
28
  "tinycolor2": "^1.4.2",
29
- "@salt-ds/core": "^1.18.0",
29
+ "@salt-ds/core": "^1.19.0",
30
30
  "@salt-ds/window": "^0.1.1",
31
31
  "@salt-ds/styles": "^0.2.1",
32
32
  "@salt-ds/icons": "^1.9.1"
@@ -1,6 +0,0 @@
1
- 'use strict';
2
-
3
- var css_248z = "/* Styles applied to the root element */\n.saltDialogTitle {\n padding-bottom: var(--salt-spacing-100);\n padding-left: var(--salt-spacing-300);\n padding-right: var(--salt-spacing-300);\n align-items: center;\n display: flex;\n flex-direction: row;\n gap: var(--salt-spacing-100);\n}\n\n.saltDialogTitle-title {\n margin: 0;\n}\n\n/* Styles applied to the status indicator icon overriding its default size */\n.saltDialogTitle .saltStatusIndicator.saltIcon {\n --icon-size: var(--salt-text-h2-lineHeight);\n}\n\n/* Styles applied to DialogTitle when accent={true} */\n.saltDialogTitle-withAccent {\n position: relative;\n}\n\n.saltDialogTitle-withAccent::before {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n bottom: var(--salt-spacing-100);\n width: var(--salt-size-accent);\n background: var(--salt-accent-background);\n}\n\n.saltDialogTitle-error::before {\n background: var(--salt-status-error-borderColor);\n}\n\n.saltDialogTitle-info::before {\n background: var(--salt-status-info-borderColor);\n}\n\n.saltDialogTitle-success::before {\n background: var(--salt-status-success-borderColor);\n}\n\n.saltDialogTitle-warning::before {\n background: var(--salt-status-warning-borderColor);\n}\n";
4
-
5
- module.exports = css_248z;
6
- //# sourceMappingURL=DialogTitle.css.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DialogTitle.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"DialogTitle.js","sources":["../src/dialog/DialogTitle.tsx"],"sourcesContent":["import { ReactNode, ComponentPropsWithoutRef } from \"react\";\nimport clsx from \"clsx\";\nimport {\n H2,\n StatusIndicator,\n ValidationStatus,\n makePrefixer,\n Text,\n} from \"@salt-ds/core\";\nimport { useDialogContext } from \"./DialogContext\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport dialogTitleCss from \"./DialogTitle.css\";\n\nconst withBaseName = makePrefixer(\"saltDialogTitle\");\n\ninterface DialogTitleProps\n extends Omit<ComponentPropsWithoutRef<\"div\">, \"title\"> {\n /**\n * The status of the Dialog\n */\n status?: ValidationStatus | undefined;\n /**\n * Displays the accent bar in the Dialog Title */\n disableAccent?: boolean;\n /**\n * Displays the Dialog Title in a H2 component\n */\n title: ReactNode;\n /**\n * Displays the Dialog Subtitle in a Label component\n **/\n subtitle?: ReactNode;\n\n className?: string;\n}\n\nexport const DialogTitle = ({\n className,\n title,\n subtitle,\n disableAccent,\n status: statusProp,\n ...rest\n}: DialogTitleProps) => {\n const { status: statusContext, id } = useDialogContext();\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-dialog-title\",\n css: dialogTitleCss,\n window: targetWindow,\n });\n\n const status = statusProp ?? (statusContext as ValidationStatus);\n\n return (\n <div\n id={id as string}\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"withAccent\")]: !disableAccent && !status,\n [withBaseName(status)]: !!status,\n },\n className\n )}\n {...rest}\n >\n {status && <StatusIndicator status={status} />}\n <div>\n {subtitle && (\n <Text as={\"label\"} variant=\"secondary\">\n {subtitle}\n </Text>\n )}\n <H2 className={clsx(withBaseName(\"title\"))}>{title}</H2>\n </div>\n </div>\n );\n};\n"],"names":["makePrefixer","useDialogContext","useWindow","useComponentCssInjection","dialogTitleCss","jsxs","clsx","jsx","StatusIndicator","Text","H2"],"mappings":";;;;;;;;;;;;;;;;AAcA,MAAM,YAAA,GAAeA,kBAAa,iBAAiB,CAAA,CAAA;AAuB5C,MAAM,cAAc,CAAC;AAAA,EAC1B,SAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AAAA,EACA,MAAQ,EAAA,UAAA;AAAA,EACL,GAAA,IAAA;AACL,CAAwB,KAAA;AACtB,EAAA,MAAM,EAAE,MAAA,EAAQ,aAAe,EAAA,EAAA,KAAOC,8BAAiB,EAAA,CAAA;AACvD,EAAA,MAAM,eAAeC,gBAAU,EAAA,CAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,mBAAA;AAAA,IACR,GAAK,EAAAC,aAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AAED,EAAA,MAAM,SAAS,UAAe,IAAA,IAAA,GAAA,UAAA,GAAA,aAAA,CAAA;AAE9B,EAAA,uBACGC,eAAA,CAAA,KAAA,EAAA;AAAA,IACC,EAAA;AAAA,IACA,SAAW,EAAAC,wBAAA;AAAA,MACT,YAAa,EAAA;AAAA,MACb;AAAA,QACE,CAAC,YAAa,CAAA,YAAY,CAAI,GAAA,CAAC,iBAAiB,CAAC,MAAA;AAAA,QACjD,CAAC,YAAA,CAAa,MAAM,CAAA,GAAI,CAAC,CAAC,MAAA;AAAA,OAC5B;AAAA,MACA,SAAA;AAAA,KACF;AAAA,IACC,GAAG,IAAA;AAAA,IAEH,QAAA,EAAA;AAAA,MAAA,MAAA,oBAAWC,cAAA,CAAAC,oBAAA,EAAA;AAAA,QAAgB,MAAA;AAAA,OAAgB,CAAA;AAAA,sBAC3CH,eAAA,CAAA,KAAA,EAAA;AAAA,QACE,QAAA,EAAA;AAAA,UAAA,QAAA,oBACEE,cAAA,CAAAE,SAAA,EAAA;AAAA,YAAK,EAAI,EAAA,OAAA;AAAA,YAAS,OAAQ,EAAA,WAAA;AAAA,YACxB,QAAA,EAAA,QAAA;AAAA,WACH,CAAA;AAAA,0BAEDF,cAAA,CAAAG,OAAA,EAAA;AAAA,YAAG,SAAW,EAAAJ,wBAAA,CAAK,YAAa,CAAA,OAAO,CAAC,CAAA;AAAA,YAAI,QAAA,EAAA,KAAA;AAAA,WAAM,CAAA;AAAA,SAAA;AAAA,OACrD,CAAA;AAAA,KAAA;AAAA,GACF,CAAA,CAAA;AAEJ;;;;"}
@@ -1,6 +0,0 @@
1
- 'use strict';
2
-
3
- var css_248z = "/* Styles applied to Drawer component */\n.saltDrawer {\n background: var(--drawer-background);\n display: flex;\n flex-direction: column;\n max-height: 100%;\n max-width: 100%;\n overflow: auto;\n padding: var(--salt-spacing-300);\n box-shadow: var(--salt-overlayable-shadow-modal);\n z-index: var(--salt-zIndex-drawer);\n position: fixed;\n top: 0;\n}\n\n/* Styles applied when variant = \"primary\" */\n.saltDrawer-primary {\n --drawer-background: var(--salt-container-primary-background);\n}\n\n/* Styles applied when variant = \"secondary\" */\n.saltDrawer-secondary {\n --drawer-background: var(--salt-container-secondary-background);\n}\n\n/* Styles applied when position = \"top\" */\n.saltDrawer-top {\n left: 0;\n right: 0;\n bottom: auto;\n}\n\n/* Styles applied when position = \"top\" and the component mounts */\n.saltDrawer-top.saltDrawer-enterAnimation {\n animation: var(--salt-animation-slide-in-bottom);\n}\n\n/* Styles applied when position = \"top\" and the component unmounts */\n.saltDrawer-top.saltDrawer-exitAnimation {\n animation: var(--salt-animation-slide-out-bottom);\n}\n\n/* Styles applied when position = \"right\" */\n.saltDrawer-right {\n left: auto;\n right: 0;\n height: 100%;\n}\n\n/* Styles applied when position = \"right\" and the component mounts */\n.saltDrawer-right.saltDrawer-enterAnimation {\n animation: var(--salt-animation-slide-in-right);\n}\n\n/* Styles applied when position = \"right\" and the component unmounts */\n.saltDrawer-right.saltDrawer-exitAnimation {\n animation: var(--salt-animation-slide-out-right);\n}\n\n/* Styles applied when position = \"left\" */\n.saltDrawer-left {\n left: 0;\n right: auto;\n height: 100%;\n}\n\n/* Styles applied when position = \"left\" and the component mounts */\n.saltDrawer-left.saltDrawer-enterAnimation {\n animation: var(--salt-animation-slide-in-left);\n}\n\n/* Styles applied when position = \"left\" and the component unmounts */\n.saltDrawer-left.saltDrawer-exitAnimation {\n animation: var(--salt-animation-slide-out-left);\n}\n\n/* Styles applied when position = \"bottom\" */\n.saltDrawer-bottom {\n left: 0;\n right: 0;\n bottom: 0;\n top: auto;\n}\n\n/* Styles applied when position = \"bottom\" and the component mounts */\n.saltDrawer-bottom.saltDrawer-enterAnimation {\n animation: var(--salt-animation-slide-in-top);\n}\n\n/* Styles applied when position = \"bottom\" and the component unmounts */\n.saltDrawer-bottom.saltDrawer-exitAnimation {\n animation: var(--salt-animation-slide-out-top);\n}\n";
4
-
5
- module.exports = css_248z;
6
- //# sourceMappingURL=Drawer.css.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Drawer.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -1,104 +0,0 @@
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 clsx = require('clsx');
8
- var react = require('@floating-ui/react');
9
- var core = require('@salt-ds/core');
10
- var window = require('@salt-ds/window');
11
- var styles = require('@salt-ds/styles');
12
- var Drawer$1 = require('./Drawer.css.js');
13
-
14
- const ConditionalScrimWrapper = ({
15
- condition,
16
- children
17
- }) => {
18
- return condition ? /* @__PURE__ */ jsxRuntime.jsxs(core.Scrim, {
19
- fixed: true,
20
- children: [
21
- " ",
22
- children,
23
- " "
24
- ]
25
- }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {
26
- children: [
27
- children,
28
- " "
29
- ]
30
- });
31
- };
32
- const withBaseName = core.makePrefixer("saltDrawer");
33
- const Drawer = React.forwardRef(function Drawer2(props, ref) {
34
- var _a, _b;
35
- const {
36
- children,
37
- className,
38
- position = "left",
39
- open = false,
40
- onOpenChange,
41
- variant = "primary",
42
- disableDismiss,
43
- disableScrim,
44
- ...rest
45
- } = props;
46
- const targetWindow = window.useWindow();
47
- styles.useComponentCssInjection({
48
- testId: "salt-drawer",
49
- css: Drawer$1,
50
- window: targetWindow
51
- });
52
- const [showComponent, setShowComponent] = React.useState(false);
53
- const { Component: FloatingComponent } = core.useFloatingComponent();
54
- const { context, floating, elements } = core.useFloatingUI({
55
- open,
56
- onOpenChange
57
- });
58
- const { getFloatingProps } = react.useInteractions([
59
- react.useClick(context),
60
- react.useDismiss(context, { enabled: !disableDismiss })
61
- ]);
62
- const handleRef = core.useForkRef(floating, ref);
63
- React.useEffect(() => {
64
- if (open && !showComponent) {
65
- setShowComponent(true);
66
- }
67
- if (!open && showComponent) {
68
- const animate = setTimeout(() => {
69
- setShowComponent(false);
70
- }, 300);
71
- return () => clearTimeout(animate);
72
- }
73
- }, [open, showComponent, setShowComponent]);
74
- return /* @__PURE__ */ jsxRuntime.jsx(ConditionalScrimWrapper, {
75
- condition: open && !disableScrim,
76
- children: /* @__PURE__ */ jsxRuntime.jsx(FloatingComponent, {
77
- open: showComponent,
78
- ref: handleRef,
79
- role: "dialog",
80
- width: (_a = elements.floating) == null ? void 0 : _a.offsetWidth,
81
- height: (_b = elements.floating) == null ? void 0 : _b.offsetHeight,
82
- "aria-modal": "true",
83
- focusManagerProps: {
84
- context
85
- },
86
- className: clsx.clsx(
87
- withBaseName(),
88
- withBaseName(position),
89
- {
90
- [withBaseName("enterAnimation")]: open,
91
- [withBaseName("exitAnimation")]: !open,
92
- [withBaseName(variant)]: variant
93
- },
94
- className
95
- ),
96
- ...getFloatingProps(),
97
- ...rest,
98
- children
99
- })
100
- });
101
- });
102
-
103
- exports.Drawer = Drawer;
104
- //# sourceMappingURL=Drawer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Drawer.js","sources":["../src/drawer/Drawer.tsx"],"sourcesContent":["import {\n ComponentPropsWithoutRef,\n forwardRef,\n useEffect,\n useState,\n PropsWithChildren,\n} from \"react\";\nimport { clsx } from \"clsx\";\nimport { useClick, useDismiss, useInteractions } from \"@floating-ui/react\";\nimport {\n makePrefixer,\n Scrim,\n useFloatingComponent,\n useFloatingUI,\n useForkRef,\n} from \"@salt-ds/core\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport drawerCss from \"./Drawer.css\";\n\ninterface ConditionalScrimWrapperProps extends PropsWithChildren {\n condition: boolean;\n}\n\nconst ConditionalScrimWrapper = ({\n condition,\n children,\n}: ConditionalScrimWrapperProps) => {\n return condition ? <Scrim fixed> {children} </Scrim> : <>{children} </>;\n};\n\nexport interface DrawerProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * Defines the drawer position within the screen. Defaults to `left`.\n */\n position?: \"left\" | \"top\" | \"right\" | \"bottom\";\n /**\n * Display or hide the component.\n */\n open?: boolean;\n /**\n * Callback function triggered when open state changes.\n */\n onOpenChange?: (newOpen: boolean) => void;\n /**\n * Change background color palette\n */\n variant?: \"primary\" | \"secondary\";\n /**\n * Prevent the dialog closing on click away\n * */\n disableDismiss?: boolean;\n /**\n * Prevent Scrim from rendering\n * */\n disableScrim?: boolean;\n}\n\nconst withBaseName = makePrefixer(\"saltDrawer\");\n\nexport const Drawer = forwardRef<HTMLDivElement, DrawerProps>(function Drawer(\n props,\n ref\n) {\n const {\n children,\n className,\n position = \"left\",\n open = false,\n onOpenChange,\n variant = \"primary\",\n disableDismiss,\n disableScrim,\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-drawer\",\n css: drawerCss,\n window: targetWindow,\n });\n\n const [showComponent, setShowComponent] = useState(false);\n const { Component: FloatingComponent } = useFloatingComponent();\n\n const { context, floating, elements } = useFloatingUI({\n open,\n onOpenChange,\n });\n\n const { getFloatingProps } = useInteractions([\n useClick(context),\n useDismiss(context, { enabled: !disableDismiss }),\n ]);\n\n const handleRef = useForkRef<HTMLDivElement>(floating, ref);\n\n useEffect(() => {\n if (open && !showComponent) {\n setShowComponent(true);\n }\n\n if (!open && showComponent) {\n const animate = setTimeout(() => {\n setShowComponent(false);\n }, 300); // var(--salt-duration-perceptible)\n return () => clearTimeout(animate);\n }\n }, [open, showComponent, setShowComponent]);\n\n return (\n <ConditionalScrimWrapper condition={open && !disableScrim}>\n <FloatingComponent\n open={showComponent}\n ref={handleRef}\n role={\"dialog\"}\n width={elements.floating?.offsetWidth}\n height={elements.floating?.offsetHeight}\n aria-modal=\"true\"\n focusManagerProps={{\n context: context,\n }}\n className={clsx(\n withBaseName(),\n withBaseName(position),\n {\n [withBaseName(\"enterAnimation\")]: open,\n [withBaseName(\"exitAnimation\")]: !open,\n [withBaseName(variant)]: variant,\n },\n className\n )}\n {...getFloatingProps()}\n {...rest}\n >\n {children}\n </FloatingComponent>\n </ConditionalScrimWrapper>\n );\n});\n"],"names":["jsxs","Scrim","Fragment","makePrefixer","forwardRef","Drawer","useWindow","useComponentCssInjection","drawerCss","useState","useFloatingComponent","useFloatingUI","useInteractions","useClick","useDismiss","useForkRef","useEffect","jsx","clsx"],"mappings":";;;;;;;;;;;;;AAwBA,MAAM,0BAA0B,CAAC;AAAA,EAC/B,SAAA;AAAA,EACA,QAAA;AACF,CAAoC,KAAA;AAClC,EAAA,OAAO,4BAAaA,eAAA,CAAAC,UAAA,EAAA;AAAA,IAAM,KAAK,EAAA,IAAA;AAAA,IAAC,QAAA,EAAA;AAAA,MAAA,GAAA;AAAA,MAAE,QAAA;AAAA,MAAS,GAAA;AAAA,KAAA;AAAA,GAAC,CAAW,mBAAAD,eAAA,CAAAE,mBAAA,EAAA;AAAA,IAAG,QAAA,EAAA;AAAA,MAAA,QAAA;AAAA,MAAS,GAAA;AAAA,KAAA;AAAA,GAAC,CAAA,CAAA;AACtE,CAAA,CAAA;AA6BA,MAAM,YAAA,GAAeC,kBAAa,YAAY,CAAA,CAAA;AAEvC,MAAM,MAAS,GAAAC,gBAAA,CAAwC,SAASC,OAAAA,CACrE,OACA,GACA,EAAA;AA/DF,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AAgEE,EAAM,MAAA;AAAA,IACJ,QAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAW,GAAA,MAAA;AAAA,IACX,IAAO,GAAA,KAAA;AAAA,IACP,YAAA;AAAA,IACA,OAAU,GAAA,SAAA;AAAA,IACV,cAAA;AAAA,IACA,YAAA;AAAA,IACG,GAAA,IAAA;AAAA,GACD,GAAA,KAAA,CAAA;AAEJ,EAAA,MAAM,eAAeC,gBAAU,EAAA,CAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,aAAA;AAAA,IACR,GAAK,EAAAC,QAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AAED,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIC,eAAS,KAAK,CAAA,CAAA;AACxD,EAAA,MAAM,EAAE,SAAA,EAAW,iBAAkB,EAAA,GAAIC,yBAAqB,EAAA,CAAA;AAE9D,EAAA,MAAM,EAAE,OAAA,EAAS,QAAU,EAAA,QAAA,KAAaC,kBAAc,CAAA;AAAA,IACpD,IAAA;AAAA,IACA,YAAA;AAAA,GACD,CAAA,CAAA;AAED,EAAM,MAAA,EAAE,gBAAiB,EAAA,GAAIC,qBAAgB,CAAA;AAAA,IAC3CC,eAAS,OAAO,CAAA;AAAA,IAChBC,iBAAW,OAAS,EAAA,EAAE,OAAS,EAAA,CAAC,gBAAgB,CAAA;AAAA,GACjD,CAAA,CAAA;AAED,EAAM,MAAA,SAAA,GAAYC,eAA2B,CAAA,QAAA,EAAU,GAAG,CAAA,CAAA;AAE1D,EAAAC,eAAA,CAAU,MAAM;AACd,IAAI,IAAA,IAAA,IAAQ,CAAC,aAAe,EAAA;AAC1B,MAAA,gBAAA,CAAiB,IAAI,CAAA,CAAA;AAAA,KACvB;AAEA,IAAI,IAAA,CAAC,QAAQ,aAAe,EAAA;AAC1B,MAAM,MAAA,OAAA,GAAU,WAAW,MAAM;AAC/B,QAAA,gBAAA,CAAiB,KAAK,CAAA,CAAA;AAAA,SACrB,GAAG,CAAA,CAAA;AACN,MAAO,OAAA,MAAM,aAAa,OAAO,CAAA,CAAA;AAAA,KACnC;AAAA,GACC,EAAA,CAAC,IAAM,EAAA,aAAA,EAAe,gBAAgB,CAAC,CAAA,CAAA;AAE1C,EAAA,uBACGC,cAAA,CAAA,uBAAA,EAAA;AAAA,IAAwB,SAAA,EAAW,QAAQ,CAAC,YAAA;AAAA,IAC3C,QAAC,kBAAAA,cAAA,CAAA,iBAAA,EAAA;AAAA,MACC,IAAM,EAAA,aAAA;AAAA,MACN,GAAK,EAAA,SAAA;AAAA,MACL,IAAM,EAAA,QAAA;AAAA,MACN,KAAA,EAAA,CAAO,EAAS,GAAA,QAAA,CAAA,QAAA,KAAT,IAAmB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAA;AAAA,MAC1B,MAAA,EAAA,CAAQ,EAAS,GAAA,QAAA,CAAA,QAAA,KAAT,IAAmB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,YAAA;AAAA,MAC3B,YAAW,EAAA,MAAA;AAAA,MACX,iBAAmB,EAAA;AAAA,QACjB,OAAA;AAAA,OACF;AAAA,MACA,SAAW,EAAAC,SAAA;AAAA,QACT,YAAa,EAAA;AAAA,QACb,aAAa,QAAQ,CAAA;AAAA,QACrB;AAAA,UACE,CAAC,YAAa,CAAA,gBAAgB,CAAI,GAAA,IAAA;AAAA,UAClC,CAAC,YAAA,CAAa,eAAe,CAAA,GAAI,CAAC,IAAA;AAAA,UAClC,CAAC,YAAa,CAAA,OAAO,CAAI,GAAA,OAAA;AAAA,SAC3B;AAAA,QACA,SAAA;AAAA,OACF;AAAA,MACC,GAAG,gBAAiB,EAAA;AAAA,MACpB,GAAG,IAAA;AAAA,MAEH,QAAA;AAAA,KACH,CAAA;AAAA,GACF,CAAA,CAAA;AAEJ,CAAC;;;;"}
@@ -1,6 +0,0 @@
1
- 'use strict';
2
-
3
- var css_248z = ".saltDrawerCloseButton-container {\n position: relative;\n display: flex;\n justify-content: flex-end;\n}\n\n.saltButton-secondary.saltDrawerCloseButton {\n position: fixed;\n margin-top: calc(var(--salt-spacing-300) * -1);\n margin-right: calc(var(--salt-spacing-300) * -1);\n}\n";
4
-
5
- module.exports = css_248z;
6
- //# sourceMappingURL=DrawerCloseButton.css.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DrawerCloseButton.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}