@salt-ds/lab 1.0.0-alpha.16 → 1.0.0-alpha.18

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 (204) hide show
  1. package/dist-cjs/badge/Badge.css.js +1 -1
  2. package/dist-cjs/cascading-menu/CascadingMenu.js.map +1 -1
  3. package/dist-cjs/color-chooser/ColorChooser.js +1 -1
  4. package/dist-cjs/color-chooser/ColorChooser.js.map +1 -1
  5. package/dist-cjs/color-chooser/GetColorPalettes.js +2 -2
  6. package/dist-cjs/color-chooser/GetColorPalettes.js.map +1 -1
  7. package/dist-cjs/color-chooser/Swatch.css.js +1 -1
  8. package/dist-cjs/color-chooser/Swatch.js +9 -0
  9. package/dist-cjs/color-chooser/Swatch.js.map +1 -1
  10. package/dist-cjs/combo-box-deprecated/internal/useMultiSelectComboBox.js.map +1 -1
  11. package/dist-cjs/combo-box-next/ComboBoxNext.css.js +1 -1
  12. package/dist-cjs/combo-box-next/ComboBoxNext.js +51 -45
  13. package/dist-cjs/combo-box-next/ComboBoxNext.js.map +1 -1
  14. package/dist-cjs/combo-box-next/useComboBox.js +27 -17
  15. package/dist-cjs/combo-box-next/useComboBox.js.map +1 -1
  16. package/dist-cjs/combo-box-next/useComboboxPortal.js +16 -10
  17. package/dist-cjs/combo-box-next/useComboboxPortal.js.map +1 -1
  18. package/dist-cjs/combo-box-next/utils.js +4 -4
  19. package/dist-cjs/combo-box-next/utils.js.map +1 -1
  20. package/dist-cjs/contact-details/ContactMetadataItem.js +1 -0
  21. package/dist-cjs/contact-details/ContactMetadataItem.js.map +1 -1
  22. package/dist-cjs/dialog/Dialog.js +34 -32
  23. package/dist-cjs/dialog/Dialog.js.map +1 -1
  24. package/dist-cjs/dialog/DialogActions.js +17 -15
  25. package/dist-cjs/dialog/DialogActions.js.map +1 -1
  26. package/dist-cjs/dialog/DialogContent.css.js +1 -1
  27. package/dist-cjs/dialog/DialogContent.js +19 -17
  28. package/dist-cjs/dialog/DialogContent.js.map +1 -1
  29. package/dist-cjs/drawer/Drawer.js +25 -23
  30. package/dist-cjs/drawer/Drawer.js.map +1 -1
  31. package/dist-cjs/dropdown-next/DropdownNext.css.js +1 -1
  32. package/dist-cjs/dropdown-next/DropdownNext.js +19 -19
  33. package/dist-cjs/dropdown-next/DropdownNext.js.map +1 -1
  34. package/dist-cjs/dropdown-next/useDropdownNext.js +16 -10
  35. package/dist-cjs/dropdown-next/useDropdownNext.js.map +1 -1
  36. package/dist-cjs/layer-layout/LayerLayout.js.map +1 -1
  37. package/dist-cjs/list/keyset.js.map +1 -1
  38. package/dist-cjs/list-next/ListItemNext.css.js +1 -1
  39. package/dist-cjs/list-next/ListNext.js +1 -0
  40. package/dist-cjs/list-next/ListNext.js.map +1 -1
  41. package/dist-cjs/list-next/useList.js +11 -7
  42. package/dist-cjs/list-next/useList.js.map +1 -1
  43. package/dist-cjs/metric/MetricHeader.js +1 -0
  44. package/dist-cjs/metric/MetricHeader.js.map +1 -1
  45. package/dist-cjs/navigation-item/ConditionalWrapper.js +37 -0
  46. package/dist-cjs/navigation-item/ConditionalWrapper.js.map +1 -0
  47. package/dist-cjs/navigation-item/NavigationItem.css.js +1 -1
  48. package/dist-cjs/navigation-item/NavigationItem.js +11 -27
  49. package/dist-cjs/navigation-item/NavigationItem.js.map +1 -1
  50. package/dist-cjs/pill/Pill.css.js +1 -1
  51. package/dist-cjs/pill-next/PillNext.css.js +1 -1
  52. package/dist-cjs/responsive/useDynamicCollapse.js.map +1 -1
  53. package/dist-cjs/responsive/useOverflowLayout.js.map +1 -1
  54. package/dist-cjs/stepped-tracker/StepLabel/StepLabel.js.map +1 -1
  55. package/dist-cjs/stepper-input/StepperInput.css.js +1 -1
  56. package/dist-cjs/tabs/Tab.css.js +1 -1
  57. package/dist-cjs/tabs/Tab.js +7 -13
  58. package/dist-cjs/tabs/Tab.js.map +1 -1
  59. package/dist-cjs/tabs/useActivationIndicator.js.map +1 -1
  60. package/dist-cjs/tabs-next/TabNext.css.js +1 -1
  61. package/dist-cjs/tokenized-input/TokenizedInput.css.js +1 -1
  62. package/dist-es/badge/Badge.css.js +1 -1
  63. package/dist-es/cascading-menu/CascadingMenu.js.map +1 -1
  64. package/dist-es/color-chooser/ColorChooser.js +1 -1
  65. package/dist-es/color-chooser/ColorChooser.js.map +1 -1
  66. package/dist-es/color-chooser/GetColorPalettes.js +2 -2
  67. package/dist-es/color-chooser/GetColorPalettes.js.map +1 -1
  68. package/dist-es/color-chooser/Swatch.css.js +1 -1
  69. package/dist-es/color-chooser/Swatch.js +9 -0
  70. package/dist-es/color-chooser/Swatch.js.map +1 -1
  71. package/dist-es/combo-box-deprecated/internal/useMultiSelectComboBox.js.map +1 -1
  72. package/dist-es/combo-box-next/ComboBoxNext.css.js +1 -1
  73. package/dist-es/combo-box-next/ComboBoxNext.js +52 -46
  74. package/dist-es/combo-box-next/ComboBoxNext.js.map +1 -1
  75. package/dist-es/combo-box-next/useComboBox.js +28 -18
  76. package/dist-es/combo-box-next/useComboBox.js.map +1 -1
  77. package/dist-es/combo-box-next/useComboboxPortal.js +16 -10
  78. package/dist-es/combo-box-next/useComboboxPortal.js.map +1 -1
  79. package/dist-es/combo-box-next/utils.js +4 -4
  80. package/dist-es/combo-box-next/utils.js.map +1 -1
  81. package/dist-es/contact-details/ContactMetadataItem.js +1 -0
  82. package/dist-es/contact-details/ContactMetadataItem.js.map +1 -1
  83. package/dist-es/dialog/Dialog.js +35 -33
  84. package/dist-es/dialog/Dialog.js.map +1 -1
  85. package/dist-es/dialog/DialogActions.js +17 -15
  86. package/dist-es/dialog/DialogActions.js.map +1 -1
  87. package/dist-es/dialog/DialogContent.css.js +1 -1
  88. package/dist-es/dialog/DialogContent.js +19 -17
  89. package/dist-es/dialog/DialogContent.js.map +1 -1
  90. package/dist-es/drawer/Drawer.js +26 -24
  91. package/dist-es/drawer/Drawer.js.map +1 -1
  92. package/dist-es/dropdown-next/DropdownNext.css.js +1 -1
  93. package/dist-es/dropdown-next/DropdownNext.js +20 -20
  94. package/dist-es/dropdown-next/DropdownNext.js.map +1 -1
  95. package/dist-es/dropdown-next/useDropdownNext.js +16 -10
  96. package/dist-es/dropdown-next/useDropdownNext.js.map +1 -1
  97. package/dist-es/layer-layout/LayerLayout.js.map +1 -1
  98. package/dist-es/list/keyset.js.map +1 -1
  99. package/dist-es/list-next/ListItemNext.css.js +1 -1
  100. package/dist-es/list-next/ListNext.js +1 -0
  101. package/dist-es/list-next/ListNext.js.map +1 -1
  102. package/dist-es/list-next/useList.js +11 -7
  103. package/dist-es/list-next/useList.js.map +1 -1
  104. package/dist-es/metric/MetricHeader.js +1 -0
  105. package/dist-es/metric/MetricHeader.js.map +1 -1
  106. package/dist-es/navigation-item/ConditionalWrapper.js +33 -0
  107. package/dist-es/navigation-item/ConditionalWrapper.js.map +1 -0
  108. package/dist-es/navigation-item/NavigationItem.css.js +1 -1
  109. package/dist-es/navigation-item/NavigationItem.js +11 -27
  110. package/dist-es/navigation-item/NavigationItem.js.map +1 -1
  111. package/dist-es/pill/Pill.css.js +1 -1
  112. package/dist-es/pill-next/PillNext.css.js +1 -1
  113. package/dist-es/responsive/useDynamicCollapse.js.map +1 -1
  114. package/dist-es/responsive/useOverflowLayout.js.map +1 -1
  115. package/dist-es/stepped-tracker/StepLabel/StepLabel.js.map +1 -1
  116. package/dist-es/stepper-input/StepperInput.css.js +1 -1
  117. package/dist-es/tabs/Tab.css.js +1 -1
  118. package/dist-es/tabs/Tab.js +8 -14
  119. package/dist-es/tabs/Tab.js.map +1 -1
  120. package/dist-es/tabs/useActivationIndicator.js.map +1 -1
  121. package/dist-es/tabs-next/TabNext.css.js +1 -1
  122. package/dist-es/tokenized-input/TokenizedInput.css.js +1 -1
  123. package/dist-types/breadcrumbs/internal/BreadcrumbsContext.d.ts +0 -1
  124. package/dist-types/breadcrumbs/internal/BreadcrumbsSeparator.d.ts +0 -1
  125. package/dist-types/breadcrumbs/internal/useFocusMenuRemount.d.ts +0 -1
  126. package/dist-types/button-bar/OrderedButton.d.ts +0 -1
  127. package/dist-types/button-bar/internal/ButtonBarContext.d.ts +0 -1
  128. package/dist-types/calendar/Calendar.d.ts +0 -1
  129. package/dist-types/calendar/internal/CalendarCarousel.d.ts +0 -1
  130. package/dist-types/calendar/internal/CalendarContext.d.ts +0 -1
  131. package/dist-types/cascading-menu/CascadingMenu.d.ts +0 -1
  132. package/dist-types/cascading-menu/CascadingMenuList.d.ts +0 -1
  133. package/dist-types/cascading-menu/internal/useMountedRef.d.ts +0 -1
  134. package/dist-types/color-chooser/AlphaInputField.d.ts +0 -1
  135. package/dist-types/color-chooser/DictTabs.d.ts +0 -1
  136. package/dist-types/color-chooser/HexInput.d.ts +0 -1
  137. package/dist-types/color-chooser/HexInputField.d.ts +0 -1
  138. package/dist-types/color-chooser/RGBAInputField.d.ts +0 -1
  139. package/dist-types/color-chooser/Swatches.d.ts +0 -1
  140. package/dist-types/color-chooser/SwatchesPicker.d.ts +0 -1
  141. package/dist-types/combo-box-deprecated/internal/MultiSelectComboBox.d.ts +0 -1
  142. package/dist-types/combo-box-next/ComboBoxNext.d.ts +40 -27
  143. package/dist-types/combo-box-next/useComboBox.d.ts +12 -3
  144. package/dist-types/combo-box-next/useComboboxPortal.d.ts +7 -0
  145. package/dist-types/combo-box-next/utils.d.ts +1 -2
  146. package/dist-types/common-hooks/useTypeahead.d.ts +0 -1
  147. package/dist-types/contact-details/ContactAvatar.d.ts +0 -1
  148. package/dist-types/contact-details/ContactFavoriteToggle.d.ts +0 -1
  149. package/dist-types/contact-details/MailLinkComponent.d.ts +0 -1
  150. package/dist-types/contact-details/internal/ContactDetailsContext.d.ts +0 -1
  151. package/dist-types/contact-details/internal/FavoriteToggleWithTooltip.d.ts +0 -1
  152. package/dist-types/dialog/DialogActions.d.ts +8 -2
  153. package/dist-types/dialog/DialogCloseButton.d.ts +0 -1
  154. package/dist-types/dialog/DialogContent.d.ts +8 -2
  155. package/dist-types/dialog/DialogContext.d.ts +0 -1
  156. package/dist-types/dialog/useDialog.d.ts +4 -5
  157. package/dist-types/drawer/Drawer.d.ts +1 -1
  158. package/dist-types/drawer/useDrawer.d.ts +4 -5
  159. package/dist-types/dropdown/DropdownBase.d.ts +0 -1
  160. package/dist-types/dropdown-next/DropdownNext.d.ts +10 -3
  161. package/dist-types/dropdown-next/useDropdownNext.d.ts +7 -0
  162. package/dist-types/form-field-legacy/FormActivationIndicator.d.ts +0 -1
  163. package/dist-types/form-field-legacy/FormControlContext.d.ts +0 -1
  164. package/dist-types/formatted-input/FormattedInput.d.ts +0 -1
  165. package/dist-types/layer-layout/LayerLayout.d.ts +1 -1
  166. package/dist-types/list-next/ListNext.d.ts +4 -1
  167. package/dist-types/list-next/useList.d.ts +4 -1
  168. package/dist-types/metric/internal/MetricContext.d.ts +0 -1
  169. package/dist-types/navigation-item/ConditionalWrapper.d.ts +8 -0
  170. package/dist-types/navigation-item/ExpansionIcon.d.ts +0 -1
  171. package/dist-types/navigation-item/NavigationItem.d.ts +2 -2
  172. package/dist-types/pagination/ArrowButton.d.ts +0 -1
  173. package/dist-types/pagination/CompactControls.d.ts +0 -1
  174. package/dist-types/pagination/CompactInput.d.ts +0 -1
  175. package/dist-types/pagination/PageButton.d.ts +0 -1
  176. package/dist-types/pagination/PaginationContext.d.ts +0 -1
  177. package/dist-types/pagination/RegularControls.d.ts +0 -1
  178. package/dist-types/pill/ClosablePill.d.ts +0 -1
  179. package/dist-types/pill/internal/DeleteButton.d.ts +0 -1
  180. package/dist-types/pill/internal/PillCheckbox.d.ts +0 -1
  181. package/dist-types/progress/Info.d.ts +0 -1
  182. package/dist-types/query-input/internal/CategoryListContext.d.ts +0 -1
  183. package/dist-types/responsive/overflowUtils.d.ts +0 -1
  184. package/dist-types/scrim/ScrimContext.d.ts +0 -1
  185. package/dist-types/skip-link/internal/useManageFocusOnTarget.d.ts +1 -1
  186. package/dist-types/slider/internal/SliderMarkLabels.d.ts +0 -1
  187. package/dist-types/slider/internal/SliderRail.d.ts +0 -1
  188. package/dist-types/slider/internal/SliderSelection.d.ts +0 -1
  189. package/dist-types/stepped-tracker/StepLabel/StepLabel.d.ts +8 -3
  190. package/dist-types/stepped-tracker/TrackerConnector/TrackerConnector.d.ts +0 -1
  191. package/dist-types/stepper-input/internal/useDynamicAriaLabel.d.ts +0 -1
  192. package/dist-types/tabs/TabActivationIndicator.d.ts +0 -1
  193. package/dist-types/tabs/Tabs.d.ts +0 -1
  194. package/dist-types/tabs/drag-drop/DropIndicator.d.ts +0 -1
  195. package/dist-types/toolbar/Toolbar.d.ts +0 -1
  196. package/dist-types/toolbar/ToolbarButton.d.ts +0 -1
  197. package/dist-types/toolbar/Tooltray.d.ts +0 -1
  198. package/dist-types/toolbar/internal/ToolbarHiddenItemIdsContext.d.ts +0 -1
  199. package/dist-types/toolbar/internal/renderToolbarItems.d.ts +0 -1
  200. package/dist-types/toolbar/toolbar-field/ToolbarField.d.ts +0 -1
  201. package/dist-types/tree/Tree.d.ts +0 -1
  202. package/dist-types/window/ElectronWindow.d.ts +0 -1
  203. package/dist-types/window/desktop-utils.d.ts +0 -1
  204. package/package.json +29 -27
@@ -1,4 +1,4 @@
1
- var css_248z = "/* Class applied to root Tab element */\n.saltTab {\n --saltEditableLabel-padding: 0;\n --saltEditableLabel-height: var(--tabs-tabstrip-height);\n --saltInputLegacy-minWidth: 4em;\n\n --tabs-tab-background: var(--salt-navigable-primary-background);\n --tabs-tab-cursor: pointer;\n --tabs-tab-spacing: var(--salt-size-unit);\n --tabs-tab-position: relative;\n}\n\n.saltTab {\n align-items: center;\n align-self: stretch;\n background: var(--saltTabs-tab-background, var(--tabs-tab-background));\n border: none;\n border-radius: 0;\n color: var(--salt-text-primary-foreground);\n cursor: var(--saltTabs-tab-cursor, var(--tabs-tab-cursor));\n display: var(--tabs-tabstrip-display);\n height: var(--saltTabs-tab-height, var(--tabs-tabstrip-height));\n letter-spacing: var(--saltTabs-tab-letterSpacing, var(--tabs-tab-letterSpacing, 0));\n min-width: var(--saltTabs-tab-minWidth, 40px);\n outline: none;\n position: var(--saltTabs-tab-position, var(--tabs-tab-position));\n user-select: none;\n}\n\n/* Overrides characteristic used in saltFocusVisible */\n.saltTab.saltFocusVisible:after {\n inset: 2px 2px 4px 2px;\n}\n\n.saltTab:not(.saltTab-vertical) {\n margin: 0 var(--tabs-tab-spacing) 0 0;\n}\n\n.saltTab[aria-selected=\"true\"] {\n color: var(--salt-text-primary-foreground);\n font-weight: var(--salt-navigable-fontWeight-active);\n}\n\n.saltTab-dragAway {\n display: none;\n}\n\n/* main content aria of Tab */\n.saltTab-main {\n background: inherit;\n border: none;\n color: inherit;\n cursor: inherit;\n font-family: inherit;\n font-size: inherit;\n font-weight: inherit;\n height: var(--saltTabs-tabstrip-height, var(--salt-size-stackable));\n outline: none;\n padding: 0 var(--tabs-tab-spacing);\n position: relative;\n}\n\n.saltTab-closeable .saltTab-main {\n border-right: solid transparent var(--salt-size-unit);\n}\n\n.saltTab .saltTab-closeButton {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n/* the close Button on a closeable Tab*/\n.saltTab-close-icon {\n display: none;\n}\n\n.salt-density-touch .saltTab-close-icon,\n.salt-density-low .saltTab-close-icon {\n display: block;\n}\n\n.salt-density-touch .saltTab-close-icon-small,\n.salt-density-low .saltTab-close-icon-small {\n display: none;\n}\n\n.saltTab .saltTab-text {\n display: inline-block;\n position: relative;\n overflow: hidden;\n text-align: var(--salt-text-textAlign-embedded);\n text-overflow: ellipsis;\n top: var(--saltTabs-tab-top, var(--tabs-tab-top, auto));\n white-space: nowrap;\n /* ensure content sits above focus ring */\n z-index: var(--salt-zIndex-default);\n}\n\n.saltTab-vertical .saltTab-text {\n text-align: var(--salt-text-textAlign);\n}\n\n.saltTab .saltTab-text:before {\n height: 0;\n content: attr(data-text);\n display: block;\n visibility: hidden;\n font-weight: var(--salt-navigable-fontWeight-active);\n}\n\n/* FIXME: these are all focusVisible styles, but with a bespoke inset */\n.saltTab-editing:after {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 2px;\n outline-color: var(--salt-focused-outlineColor);\n outline-style: var(--salt-focused-outlineStyle);\n outline-width: var(--salt-focused-outlineWidth);\n outline-offset: -2px;\n}\n\n.saltTab-vertical.saltTab-editing:after {\n right: 2px;\n bottom: 0;\n}\n\n.saltTab-vertical .saltFocusVisible:not([aria-selected=\"true\"]):before {\n left: auto;\n height: auto;\n top: 0;\n width: 2px;\n}\n\n.saltTab.saltFocusVisible {\n background: var(--saltTabs-tab-hover-background, var(--salt-navigable-primary-background-hover));\n}\n\n.saltTab:before {\n content: var(--tabs-tab-before-content, none);\n background: var(--tabs-tab-before-background);\n height: var(--tabs-tab-before-height);\n inset: var(--tabs-tab-before-inset);\n position: absolute;\n width: var(--tabs-tab-before-width);\n z-index: 1;\n}\n\n.saltTabstrip-draggingTab .saltTab[aria-selected=\"true\"]:before {\n --tabs-tab-before-content: \"\";\n --tabs-tab-before-background: var(--salt-navigable-indicator-color-active);\n --tabs-tab-before-height: var(--tabs-activationIndicator-thumb-height);\n --tabs-tab-before-inset: var(--tabs-activationIndicator-inset);\n --tabs-tab-before-width: var(--tabs-activationIndicator-thumb-width);\n}\n\n/* Hover styling */\n.saltTab:not([aria-selected=\"true\"]).saltFocusVisible:before,\n.saltTab:hover:not([aria-selected=\"true\"]):before {\n --tabs-tab-before-content: \"\";\n --tabs-tab-before-background: var(--salt-navigable-indicator-hover);\n --tabs-tab-before-height: var(--tabs-activationIndicator-thumb-height);\n --tabs-tab-before-inset: var(--tabs-activationIndicator-inset);\n --tabs-tab-before-width: var(--tabs-activationIndicator-thumb-width);\n}\n\n.saltTab:hover:not(.saltTab-closeHover) {\n background: var(--saltTabs-tab-hover-background, var(--salt-navigable-primary-background-hover));\n}\n";
1
+ var css_248z = "/* Class applied to root Tab element */\n.saltTab {\n --saltEditableLabel-padding: 0;\n --saltEditableLabel-height: var(--tabs-tabstrip-height);\n --saltInputLegacy-minWidth: 4em;\n\n --tabs-tab-background: var(--salt-navigable-primary-background);\n --tabs-tab-cursor: pointer;\n --tabs-tab-spacing: var(--salt-size-unit);\n --tabs-tab-position: relative;\n}\n\n.saltTab {\n align-items: center;\n align-self: stretch;\n background: var(--saltTabs-tab-background, var(--tabs-tab-background));\n border: none;\n border-radius: 0;\n color: var(--salt-text-primary-foreground);\n cursor: var(--saltTabs-tab-cursor, var(--tabs-tab-cursor));\n display: var(--tabs-tabstrip-display);\n height: var(--saltTabs-tab-height, var(--tabs-tabstrip-height));\n letter-spacing: var(--saltTabs-tab-letterSpacing, var(--tabs-tab-letterSpacing, 0));\n min-width: var(--saltTabs-tab-minWidth, 40px);\n outline: none;\n position: var(--saltTabs-tab-position, var(--tabs-tab-position));\n user-select: none;\n}\n\n/* Overrides characteristic used in saltFocusVisible */\n.saltTab.saltFocusVisible:after {\n inset: 2px 2px 4px 2px;\n}\n\n.saltTab:not(.saltTab-vertical) {\n margin: 0 var(--tabs-tab-spacing) 0 0;\n}\n\n.saltTab[aria-selected=\"true\"] {\n color: var(--salt-text-primary-foreground);\n font-weight: var(--salt-navigable-fontWeight-active);\n}\n\n.saltTab-dragAway {\n display: none;\n}\n\n/* main content aria of Tab */\n.saltTab-main {\n background: inherit;\n border: none;\n color: inherit;\n cursor: inherit;\n font-family: inherit;\n font-size: inherit;\n font-weight: inherit;\n height: var(--saltTabs-tabstrip-height, var(--salt-size-stackable));\n outline: none;\n padding: 0 var(--tabs-tab-spacing);\n position: relative;\n}\n\n.saltTab-closeable .saltTab-main {\n border-right: solid transparent var(--salt-size-unit);\n}\n\n.saltTab .saltTab-closeButton {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n/* the close Button on a closeable Tab*/\n.saltTab-close-icon {\n display: block;\n}\n\n.saltTab .saltTab-text {\n display: inline-block;\n position: relative;\n overflow: hidden;\n text-align: var(--salt-text-textAlign-embedded);\n text-overflow: ellipsis;\n top: var(--saltTabs-tab-top, var(--tabs-tab-top, auto));\n white-space: nowrap;\n /* ensure content sits above focus ring */\n z-index: var(--salt-zIndex-default);\n}\n\n.saltTab-vertical .saltTab-text {\n text-align: var(--salt-text-textAlign);\n}\n\n.saltTab .saltTab-text:before {\n height: 0;\n content: attr(data-text);\n display: block;\n visibility: hidden;\n font-weight: var(--salt-navigable-fontWeight-active);\n}\n\n/* FIXME: these are all focusVisible styles, but with a bespoke inset */\n.saltTab-editing:after {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 2px;\n outline-color: var(--salt-focused-outlineColor);\n outline-style: var(--salt-focused-outlineStyle);\n outline-width: var(--salt-focused-outlineWidth);\n outline-offset: -2px;\n}\n\n.saltTab-vertical.saltTab-editing:after {\n right: 2px;\n bottom: 0;\n}\n\n.saltTab-vertical .saltFocusVisible:not([aria-selected=\"true\"]):before {\n left: auto;\n height: auto;\n top: 0;\n width: 2px;\n}\n\n.saltTab.saltFocusVisible {\n background: var(--saltTabs-tab-hover-background, var(--salt-navigable-primary-background-hover));\n}\n\n.saltTab:before {\n content: var(--tabs-tab-before-content, none);\n background: var(--tabs-tab-before-background);\n height: var(--tabs-tab-before-height);\n inset: var(--tabs-tab-before-inset);\n position: absolute;\n width: var(--tabs-tab-before-width);\n z-index: 1;\n}\n\n.saltTabstrip-draggingTab .saltTab[aria-selected=\"true\"]:before {\n --tabs-tab-before-content: \"\";\n --tabs-tab-before-background: var(--salt-navigable-indicator-color-active);\n --tabs-tab-before-height: var(--tabs-activationIndicator-thumb-height);\n --tabs-tab-before-inset: var(--tabs-activationIndicator-inset);\n --tabs-tab-before-width: var(--tabs-activationIndicator-thumb-width);\n}\n\n/* Hover styling */\n.saltTab:not([aria-selected=\"true\"]).saltFocusVisible:before,\n.saltTab:hover:not([aria-selected=\"true\"]):before {\n --tabs-tab-before-content: \"\";\n --tabs-tab-before-background: var(--salt-navigable-indicator-hover);\n --tabs-tab-before-height: var(--tabs-activationIndicator-thumb-height);\n --tabs-tab-before-inset: var(--tabs-activationIndicator-inset);\n --tabs-tab-before-width: var(--tabs-activationIndicator-thumb-width);\n}\n\n.saltTab:hover:not(.saltTab-closeHover) {\n background: var(--saltTabs-tab-hover-background, var(--salt-navigable-primary-background-hover));\n}\n";
2
2
 
3
3
  export { css_248z as default };
4
4
  //# sourceMappingURL=Tab.css.js.map
@@ -1,32 +1,26 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { makePrefixer, useForkRef, Button } from '@salt-ds/core';
3
- import { CloseIcon, CloseSmallIcon } from '@salt-ds/icons';
3
+ import { CloseIcon } from '@salt-ds/icons';
4
+ import { useComponentCssInjection } from '@salt-ds/styles';
5
+ import { useWindow } from '@salt-ds/window';
4
6
  import { clsx } from 'clsx';
5
7
  import { forwardRef, useRef, useState, useCallback } from 'react';
6
8
  import { EditableLabel } from '../editable-label/EditableLabel.js';
7
- import { useWindow } from '@salt-ds/window';
8
- import { useComponentCssInjection } from '@salt-ds/styles';
9
9
  import css_248z from './Tab.css.js';
10
10
 
11
11
  const noop = () => void 0;
12
12
  const withBaseName = makePrefixer("saltTab");
13
- const CloseTabButton = (props) => /* @__PURE__ */ jsxs(Button, {
13
+ const CloseTabButton = (props) => /* @__PURE__ */ jsx(Button, {
14
14
  ...props,
15
15
  "aria-label": "Close Tab (Delete or Backspace)",
16
16
  className: withBaseName("closeButton"),
17
17
  tabIndex: void 0,
18
18
  title: "Close Tab (Delete or Backspace)",
19
19
  variant: "secondary",
20
- children: [
21
- /* @__PURE__ */ jsx(CloseIcon, {
22
- "aria-label": "Close Tab (Delete or Backspace)",
23
- className: withBaseName("close-icon")
24
- }),
25
- /* @__PURE__ */ jsx(CloseSmallIcon, {
26
- "aria-label": "Close Tab (Delete or Backspace)",
27
- className: withBaseName("close-icon-small")
28
- })
29
- ]
20
+ children: /* @__PURE__ */ jsx(CloseIcon, {
21
+ "aria-label": "Close Tab (Delete or Backspace)",
22
+ className: withBaseName("close-icon")
23
+ })
30
24
  });
31
25
  const Tab = forwardRef(function Tab2({
32
26
  ariaControls,
@@ -1 +1 @@
1
- {"version":3,"file":"Tab.js","sources":["../src/tabs/Tab.tsx"],"sourcesContent":["// TODO close button needs to be a button. Hence tab needs to include 2 buttons\nimport { Button, ButtonProps, makePrefixer, useForkRef } from \"@salt-ds/core\";\nimport { CloseIcon, CloseSmallIcon } from \"@salt-ds/icons\";\nimport { clsx } from \"clsx\";\nimport {\n FocusEvent,\n ForwardedRef,\n forwardRef,\n KeyboardEvent,\n MouseEvent,\n ReactElement,\n useCallback,\n useRef,\n useState,\n} from \"react\";\nimport { TabProps } from \"./TabsTypes\";\nimport { EditableLabel, EditableLabelProps } from \"../editable-label\";\n\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\n\nimport tabCss from \"./Tab.css\";\n\nconst noop = () => undefined;\n\nconst withBaseName = makePrefixer(\"saltTab\");\n\n//TODO not ideal - duplicating the Icon then hiding one in css based on density - is there a nicer way ?\nconst CloseTabButton = (props: ButtonProps) => (\n // FIXME: use polymorphic button\n <Button\n {...props}\n aria-label=\"Close Tab (Delete or Backspace)\"\n className={withBaseName(\"closeButton\")}\n tabIndex={undefined}\n title=\"Close Tab (Delete or Backspace)\"\n variant=\"secondary\"\n >\n <CloseIcon\n aria-label=\"Close Tab (Delete or Backspace)\"\n className={withBaseName(\"close-icon\")}\n />\n <CloseSmallIcon\n aria-label=\"Close Tab (Delete or Backspace)\"\n className={withBaseName(\"close-icon-small\")}\n />\n </Button>\n);\n\nexport const Tab = forwardRef(function Tab(\n {\n ariaControls,\n children,\n className,\n closeable,\n dragging,\n editable,\n editing,\n focusVisible,\n index,\n label,\n onClick,\n onClose,\n onEnterEditMode = noop,\n onExitEditMode = noop,\n onFocus: onFocusProp,\n onKeyDown,\n onKeyUp,\n onMouseDown,\n orientation,\n selected,\n tabChildIndex = 0,\n tabIndex,\n ...props\n }: TabProps,\n ref: ForwardedRef<HTMLDivElement>\n): ReactElement<TabProps> {\n if (index === undefined || onClick === undefined || onKeyDown === undefined) {\n throw Error(\n \"index, onClick, onKeyUp, onKeyDown are required props, they would nornally be injected by Tabstrip, are you creating a Tab outside of a Tabstrip\"\n );\n }\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-tab\",\n css: tabCss,\n window: targetWindow,\n });\n\n const root = useRef<HTMLDivElement>(null);\n const editableRef = useRef<HTMLDivElement>(null);\n const setForkRef = useForkRef(ref, root);\n const [closeHover, setCloseHover] = useState(false);\n const handleClick = useCallback(\n (e: MouseEvent) => {\n if (!editing) {\n e.preventDefault();\n onClick(e, index);\n }\n },\n [editing, index, onClick]\n );\n const handleKeyDownMain = (e: KeyboardEvent<HTMLElement>) => {\n onKeyDown(e);\n };\n\n const handleOnExitEditMode: EditableLabelProps[\"onExitEditMode\"] = (\n originalValue = \"\",\n editedValue = \"\",\n allowDeactivation = true\n ) => onExitEditMode(originalValue, editedValue, allowDeactivation, index);\n\n const handleKeyUp = (e: KeyboardEvent) => {\n switch (e.key) {\n case \"Backspace\":\n case \"Delete\":\n if (closeable) {\n e.stopPropagation();\n onClose && onClose(index);\n }\n break;\n default:\n onKeyUp && onKeyUp(e, index);\n }\n };\n\n const handleCloseButtonClick = (e: MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n onClose && onClose(index);\n };\n\n const handleCloseButtonEnter = () => {\n setCloseHover(true);\n };\n\n const handleCloseButtonLeave = () => {\n setCloseHover(false);\n };\n\n const handleMouseDown = (e: MouseEvent<HTMLElement>): void => {\n onMouseDown?.(e);\n };\n\n const getLabel = () => {\n if (editable) {\n return (\n <EditableLabel\n editing={editing}\n defaultValue={label}\n // Create a fresh instance after each edit, so it can be uncontrolled ...\n key={label}\n onEnterEditMode={onEnterEditMode}\n onExitEditMode={handleOnExitEditMode}\n ref={editableRef}\n />\n );\n } else {\n return label;\n }\n };\n\n const handleFocus = (evt: FocusEvent<HTMLElement>) => {\n if (editableRef.current) {\n const editable = editableRef.current as HTMLElement;\n const input = editable.querySelector(\n \".saltEditableLabel-input\"\n ) as HTMLInputElement;\n input?.focus();\n }\n onFocusProp?.(evt);\n };\n\n return (\n <div\n {...props}\n aria-controls={ariaControls}\n aria-selected={selected}\n className={clsx(withBaseName(), {\n [withBaseName(\"closeable\")]: closeable,\n [withBaseName(\"closeHover\")]: closeHover,\n [withBaseName(\"dragAway\")]: dragging,\n [withBaseName(\"editing\")]: editing,\n [withBaseName(\"vertical\")]: orientation === \"vertical\",\n [`saltFocusVisible`]: focusVisible,\n })}\n data-editable={editable || undefined}\n onClick={handleClick}\n onFocus={handleFocus}\n onKeyDown={handleKeyDownMain}\n onKeyUp={handleKeyUp}\n onMouseDown={handleMouseDown}\n ref={setForkRef}\n role=\"tab\"\n tabIndex={tabIndex}\n >\n <div className={withBaseName(\"main\")}>\n <span\n className={withBaseName(\"text\")}\n // data-text is important, it determines the width of the tab. A pseudo\n // element assigns data-text as content. This is styled as selected tab\n // text. That means width of tab always corresponds to its selected state,\n // so tabs do not change size when selected (ie when the text is bolded).\n // Do not include if we have editable content, EditableLabel will determine\n // the width\n data-text={editable ? undefined : label}\n >\n {children ?? getLabel()}\n </span>\n </div>\n {closeable ? (\n <CloseTabButton\n onClick={handleCloseButtonClick}\n onMouseEnter={handleCloseButtonEnter}\n onMouseLeave={handleCloseButtonLeave}\n />\n ) : null}\n </div>\n );\n});\n"],"names":["Tab","tabCss","editable"],"mappings":"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"}
1
+ {"version":3,"file":"Tab.js","sources":["../src/tabs/Tab.tsx"],"sourcesContent":["// TODO close button needs to be a button. Hence tab needs to include 2 buttons\nimport { Button, ButtonProps, makePrefixer, useForkRef } from \"@salt-ds/core\";\nimport { CloseIcon } from \"@salt-ds/icons\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n FocusEvent,\n ForwardedRef,\n KeyboardEvent,\n MouseEvent,\n ReactElement,\n forwardRef,\n useCallback,\n useRef,\n useState,\n} from \"react\";\nimport { EditableLabel, EditableLabelProps } from \"../editable-label\";\nimport { TabProps } from \"./TabsTypes\";\n\nimport tabCss from \"./Tab.css\";\n\nconst noop = () => undefined;\n\nconst withBaseName = makePrefixer(\"saltTab\");\n\nconst CloseTabButton = (props: ButtonProps) => (\n // FIXME: use polymorphic button\n <Button\n {...props}\n aria-label=\"Close Tab (Delete or Backspace)\"\n className={withBaseName(\"closeButton\")}\n tabIndex={undefined}\n title=\"Close Tab (Delete or Backspace)\"\n variant=\"secondary\"\n >\n <CloseIcon\n aria-label=\"Close Tab (Delete or Backspace)\"\n className={withBaseName(\"close-icon\")}\n />\n </Button>\n);\n\nexport const Tab = forwardRef(function Tab(\n {\n ariaControls,\n children,\n className,\n closeable,\n dragging,\n editable,\n editing,\n focusVisible,\n index,\n label,\n onClick,\n onClose,\n onEnterEditMode = noop,\n onExitEditMode = noop,\n onFocus: onFocusProp,\n onKeyDown,\n onKeyUp,\n onMouseDown,\n orientation,\n selected,\n tabChildIndex = 0,\n tabIndex,\n ...props\n }: TabProps,\n ref: ForwardedRef<HTMLDivElement>\n): ReactElement<TabProps> {\n if (index === undefined || onClick === undefined || onKeyDown === undefined) {\n throw Error(\n \"index, onClick, onKeyUp, onKeyDown are required props, they would nornally be injected by Tabstrip, are you creating a Tab outside of a Tabstrip\"\n );\n }\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-tab\",\n css: tabCss,\n window: targetWindow,\n });\n\n const root = useRef<HTMLDivElement>(null);\n const editableRef = useRef<HTMLDivElement>(null);\n const setForkRef = useForkRef(ref, root);\n const [closeHover, setCloseHover] = useState(false);\n const handleClick = useCallback(\n (e: MouseEvent) => {\n if (!editing) {\n e.preventDefault();\n onClick(e, index);\n }\n },\n [editing, index, onClick]\n );\n const handleKeyDownMain = (e: KeyboardEvent<HTMLElement>) => {\n onKeyDown(e);\n };\n\n const handleOnExitEditMode: EditableLabelProps[\"onExitEditMode\"] = (\n originalValue = \"\",\n editedValue = \"\",\n allowDeactivation = true\n ) => onExitEditMode(originalValue, editedValue, allowDeactivation, index);\n\n const handleKeyUp = (e: KeyboardEvent) => {\n switch (e.key) {\n case \"Backspace\":\n case \"Delete\":\n if (closeable) {\n e.stopPropagation();\n onClose && onClose(index);\n }\n break;\n default:\n onKeyUp && onKeyUp(e, index);\n }\n };\n\n const handleCloseButtonClick = (e: MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n onClose && onClose(index);\n };\n\n const handleCloseButtonEnter = () => {\n setCloseHover(true);\n };\n\n const handleCloseButtonLeave = () => {\n setCloseHover(false);\n };\n\n const handleMouseDown = (e: MouseEvent<HTMLElement>): void => {\n onMouseDown?.(e);\n };\n\n const getLabel = () => {\n if (editable) {\n return (\n <EditableLabel\n editing={editing}\n defaultValue={label}\n // Create a fresh instance after each edit, so it can be uncontrolled ...\n key={label}\n onEnterEditMode={onEnterEditMode}\n onExitEditMode={handleOnExitEditMode}\n ref={editableRef}\n />\n );\n } else {\n return label;\n }\n };\n\n const handleFocus = (evt: FocusEvent<HTMLElement>) => {\n if (editableRef.current) {\n const editable = editableRef.current as HTMLElement;\n const input = editable.querySelector(\n \".saltEditableLabel-input\"\n ) as HTMLInputElement;\n input?.focus();\n }\n onFocusProp?.(evt);\n };\n\n return (\n <div\n {...props}\n aria-controls={ariaControls}\n aria-selected={selected}\n className={clsx(withBaseName(), {\n [withBaseName(\"closeable\")]: closeable,\n [withBaseName(\"closeHover\")]: closeHover,\n [withBaseName(\"dragAway\")]: dragging,\n [withBaseName(\"editing\")]: editing,\n [withBaseName(\"vertical\")]: orientation === \"vertical\",\n [`saltFocusVisible`]: focusVisible,\n })}\n data-editable={editable || undefined}\n onClick={handleClick}\n onFocus={handleFocus}\n onKeyDown={handleKeyDownMain}\n onKeyUp={handleKeyUp}\n onMouseDown={handleMouseDown}\n ref={setForkRef}\n role=\"tab\"\n tabIndex={tabIndex}\n >\n <div className={withBaseName(\"main\")}>\n <span\n className={withBaseName(\"text\")}\n // data-text is important, it determines the width of the tab. A pseudo\n // element assigns data-text as content. This is styled as selected tab\n // text. That means width of tab always corresponds to its selected state,\n // so tabs do not change size when selected (ie when the text is bolded).\n // Do not include if we have editable content, EditableLabel will determine\n // the width\n data-text={editable ? undefined : label}\n >\n {children ?? getLabel()}\n </span>\n </div>\n {closeable ? (\n <CloseTabButton\n onClick={handleCloseButtonClick}\n onMouseEnter={handleCloseButtonEnter}\n onMouseLeave={handleCloseButtonLeave}\n />\n ) : null}\n </div>\n );\n});\n"],"names":["Tab","tabCss","editable"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useActivationIndicator.js","sources":["../src/tabs/useActivationIndicator.ts"],"sourcesContent":["import { RefObject, useCallback, useEffect, useRef, useState } from \"react\";\nimport { orientationType } from \"../responsive\";\nimport { useResizeObserver, WidthOnly } from \"../responsive\";\n\ntype activationIndicatorStyles = {\n height?: number;\n left?: number;\n top?: number;\n width?: number;\n hasChanged?: boolean;\n};\n\nconst MEASUREMENTS = {\n horizontal: {\n pos: \"left\" as keyof activationIndicatorStyles,\n size: \"width\" as keyof activationIndicatorStyles,\n },\n vertical: {\n pos: \"top\" as keyof activationIndicatorStyles,\n size: \"height\" as keyof activationIndicatorStyles,\n },\n};\n\n// Overflow can affect tab positions, so we recalculate when it changes\nexport function useActivationIndicator({\n rootRef,\n tabId,\n orientation,\n}: {\n rootRef: RefObject<HTMLDivElement | null>;\n tabId?: string | null;\n orientation: orientationType;\n}): activationIndicatorStyles {\n const [style, setStyle] = useState<activationIndicatorStyles>({\n left: 0,\n width: 0,\n });\n // Keep style in a ref, so style is not a dependency for createIndicatorStyle, which in turn\n // means our useEffect below will re-run only when the tab changes, not after every style change\n // as well.\n\n const styleRef = useRef(style);\n\n const getTabPos = useCallback(() => {\n const { pos, size } = MEASUREMENTS[orientation];\n return [pos, size];\n }, [orientation]);\n\n const createIndicatorStyle = useCallback(\n (tabElement: HTMLElement | null): activationIndicatorStyles => {\n if (tabElement) {\n const tabRect = tabElement.getBoundingClientRect() as any;\n if (rootRef.current && tabRect) {\n const rootRect = rootRef.current.getBoundingClientRect() as any;\n const [pos, size] = getTabPos();\n const { [pos]: existingPos, [size]: existingSize } = styleRef.current;\n const newPos = tabRect[pos] - rootRect[pos];\n const newSize = tabRect[size];\n\n return {\n [pos]: newPos,\n [size]: newSize,\n hasChanged: newPos !== existingPos || newSize !== existingSize,\n };\n }\n }\n return {};\n },\n [orientation, rootRef]\n );\n\n const onResize = useCallback(() => {\n requestAnimationFrame(() => {\n if (tabId) {\n const tabEl = document.getElementById(tabId);\n const { hasChanged, ...newStyle } = createIndicatorStyle(tabEl);\n if (hasChanged) {\n setStyle(newStyle);\n }\n }\n });\n }, [createIndicatorStyle, tabId]);\n\n useEffect(() => {\n if (tabId) {\n // The timeout is employed in case selectedTab has been selected from\n // overflow menu. In this case, the tab is only restored to visibility\n // in the render cycle after selection.\n setTimeout(() => {\n const tabEl = document.getElementById(tabId);\n const { hasChanged, ...newStyle } = createIndicatorStyle(tabEl);\n if (hasChanged) {\n setStyle((styleRef.current = newStyle));\n }\n }, 50);\n }\n }, [createIndicatorStyle, tabId]);\n\n useResizeObserver(rootRef, WidthOnly, onResize);\n\n return style;\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useActivationIndicator.js","sources":["../src/tabs/useActivationIndicator.ts"],"sourcesContent":["import { RefObject, useCallback, useEffect, useRef, useState } from \"react\";\nimport { orientationType, useResizeObserver, WidthOnly } from \"../responsive\";\n\ntype activationIndicatorStyles = {\n height?: number;\n left?: number;\n top?: number;\n width?: number;\n hasChanged?: boolean;\n};\n\nconst MEASUREMENTS = {\n horizontal: {\n pos: \"left\" as keyof activationIndicatorStyles,\n size: \"width\" as keyof activationIndicatorStyles,\n },\n vertical: {\n pos: \"top\" as keyof activationIndicatorStyles,\n size: \"height\" as keyof activationIndicatorStyles,\n },\n};\n\n// Overflow can affect tab positions, so we recalculate when it changes\nexport function useActivationIndicator({\n rootRef,\n tabId,\n orientation,\n}: {\n rootRef: RefObject<HTMLDivElement | null>;\n tabId?: string | null;\n orientation: orientationType;\n}): activationIndicatorStyles {\n const [style, setStyle] = useState<activationIndicatorStyles>({\n left: 0,\n width: 0,\n });\n // Keep style in a ref, so style is not a dependency for createIndicatorStyle, which in turn\n // means our useEffect below will re-run only when the tab changes, not after every style change\n // as well.\n\n const styleRef = useRef(style);\n\n const getTabPos = useCallback(() => {\n const { pos, size } = MEASUREMENTS[orientation];\n return [pos, size];\n }, [orientation]);\n\n const createIndicatorStyle = useCallback(\n (tabElement: HTMLElement | null): activationIndicatorStyles => {\n if (tabElement) {\n const tabRect = tabElement.getBoundingClientRect() as any;\n if (rootRef.current && tabRect) {\n const rootRect = rootRef.current.getBoundingClientRect() as any;\n const [pos, size] = getTabPos();\n const { [pos]: existingPos, [size]: existingSize } = styleRef.current;\n const newPos = tabRect[pos] - rootRect[pos];\n const newSize = tabRect[size];\n\n return {\n [pos]: newPos,\n [size]: newSize,\n hasChanged: newPos !== existingPos || newSize !== existingSize,\n };\n }\n }\n return {};\n },\n [orientation, rootRef]\n );\n\n const onResize = useCallback(() => {\n requestAnimationFrame(() => {\n if (tabId) {\n const tabEl = document.getElementById(tabId);\n const { hasChanged, ...newStyle } = createIndicatorStyle(tabEl);\n if (hasChanged) {\n setStyle(newStyle);\n }\n }\n });\n }, [createIndicatorStyle, tabId]);\n\n useEffect(() => {\n if (tabId) {\n // The timeout is employed in case selectedTab has been selected from\n // overflow menu. In this case, the tab is only restored to visibility\n // in the render cycle after selection.\n setTimeout(() => {\n const tabEl = document.getElementById(tabId);\n const { hasChanged, ...newStyle } = createIndicatorStyle(tabEl);\n if (hasChanged) {\n setStyle((styleRef.current = newStyle));\n }\n }, 50);\n }\n }, [createIndicatorStyle, tabId]);\n\n useResizeObserver(rootRef, WidthOnly, onResize);\n\n return style;\n}\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- var css_248z = "/* Class applied to root Tab element */\n.saltTabNext {\n align-items: center;\n justify-content: center;\n appearance: none;\n display: inline-flex;\n background: var(--salt-navigable-primary-background);\n border: 0 solid transparent;\n border-radius: 0;\n white-space: pre;\n min-width: 4em;\n min-height: calc(var(--salt-size-base) + var(--salt-spacing-100));\n padding-inline: var(--salt-spacing-100);\n padding-block: var(--salt-spacing-50);\n position: relative;\n flex-shrink: 0;\n\n color: var(--salt-text-secondary-foreground);\n font-weight: var(--salt-navigable-fontWeight);\n font-family: var(--salt-text-fontFamily);\n text-align: var(--salt-text-textAlign);\n letter-spacing: var(--salt-text-letterSpacing);\n line-height: var(--salt-text-lineHeight);\n font-size: var(--salt-text-fontSize);\n}\n\n.saltTabNext:hover {\n cursor: var(--salt-navigable-cursor-hover);\n background: var(--salt-navigable-primary-background-hover);\n color: var(--salt-text-primary-foreground);\n}\n\n.saltTabNext:hover::before,\n.saltTabNext:focus-visible::before {\n content: \"\";\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n height: var(--salt-size-bar);\n background: var(--salt-navigable-indicator-hover);\n}\n\n.saltTabNext:focus-visible {\n outline: var(--salt-focused-outline);\n background: var(--salt-navigable-primary-background-hover);\n color: var(--salt-text-primary-foreground);\n}\n\n.saltTabNext[aria-selected=\"true\"] {\n color: var(--salt-text-primary-foreground);\n}\n\n.saltTabNext[aria-selected=\"true\"]::after {\n content: \"\";\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n height: var(--salt-size-bar);\n background: var(--salt-navigable-indicator-active);\n}\n\n.saltTabNext:disabled {\n cursor: var(--salt-navigable-cursor-disabled);\n color: var(--salt-text-primary-foreground-disabled);\n background: var(--salt-navigable-primary-background);\n}\n\n.saltTabNext:disabled:before {\n background: transparent;\n}\n";
1
+ var css_248z = "/* Class applied to root Tab element */\n.saltTabNext {\n align-items: center;\n justify-content: center;\n appearance: none;\n -webkit-appearance: none;\n display: inline-flex;\n background: var(--salt-navigable-primary-background);\n border: 0 solid transparent;\n border-radius: 0;\n white-space: pre;\n min-width: 4em;\n min-height: calc(var(--salt-size-base) + var(--salt-spacing-100));\n padding: var(--salt-spacing-50) var(--salt-spacing-100);\n position: relative;\n flex-shrink: 0;\n\n color: var(--salt-text-secondary-foreground);\n font-weight: var(--salt-navigable-fontWeight);\n font-family: var(--salt-text-fontFamily);\n text-align: var(--salt-text-textAlign);\n letter-spacing: var(--salt-text-letterSpacing);\n line-height: var(--salt-text-lineHeight);\n font-size: var(--salt-text-fontSize);\n}\n\n.saltTabNext:hover {\n cursor: var(--salt-navigable-cursor-hover);\n background: var(--salt-navigable-primary-background-hover);\n color: var(--salt-text-primary-foreground);\n}\n\n.saltTabNext:hover::before,\n.saltTabNext:focus-visible::before {\n content: \"\";\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n height: var(--salt-size-bar);\n background: var(--salt-navigable-indicator-hover);\n}\n\n.saltTabNext:focus-visible {\n outline: var(--salt-focused-outline);\n background: var(--salt-navigable-primary-background-hover);\n color: var(--salt-text-primary-foreground);\n}\n\n.saltTabNext[aria-selected=\"true\"] {\n color: var(--salt-text-primary-foreground);\n}\n\n.saltTabNext[aria-selected=\"true\"]::after {\n content: \"\";\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n height: var(--salt-size-bar);\n background: var(--salt-navigable-indicator-active);\n}\n\n.saltTabNext:disabled {\n cursor: var(--salt-navigable-cursor-disabled);\n color: var(--salt-text-primary-foreground-disabled);\n background: var(--salt-navigable-primary-background);\n}\n\n.saltTabNext:disabled:before {\n background: transparent;\n}\n";
2
2
 
3
3
  export { css_248z as default };
4
4
  //# sourceMappingURL=TabNext.css.js.map
@@ -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 {\n padding: 0 calc(var(--tokenizedInput-spacing) / 4);\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.saltTokenizedInput-expandButton,\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}\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,3 @@
1
- /// <reference types="react" />
2
1
  export interface BreadcrumbsContext {
3
2
  wrap?: boolean;
4
3
  itemsMaxWidth?: number | string;
@@ -1,3 +1,2 @@
1
- /// <reference types="react" />
2
1
  import { IconProps } from "@salt-ds/icons";
3
2
  export declare const BreadcrumbsSeparator: (props: IconProps) => JSX.Element;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  export declare function useFocusMenuRemount<T extends HTMLElement>(key: string): {
3
2
  ref: import("react").RefObject<T>;
4
3
  shouldFocusOnMount: import("react").MutableRefObject<boolean>;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { ButtonProps } from "@salt-ds/core";
3
2
  export interface OrderedButtonProps extends ButtonProps {
4
3
  /**
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  export interface ButtonBarContextValue {
3
2
  matches: boolean;
4
3
  alignedIndex?: number;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { CalendarNavigationProps } from "./internal/CalendarNavigation";
3
2
  import { CalendarCarouselProps } from "./internal/CalendarCarousel";
4
3
  import { useCalendarProps } from "./useCalendar";
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { CalendarMonthProps } from "./CalendarMonth";
3
2
  export declare type CalendarCarouselProps = Omit<CalendarMonthProps, "date">;
4
3
  export declare const CalendarCarousel: import("react").ForwardRefExoticComponent<Omit<CalendarCarouselProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { useCalendar } from "../useCalendar";
3
2
  declare type CalendarState = {
4
3
  state: ReturnType<typeof useCalendar>["state"];
@@ -1,3 +1,2 @@
1
- /// <reference types="react" />
2
1
  import { CascadingMenuProps } from "./CascadingMenuProps";
3
2
  export declare const CascadingMenu: import("react").ForwardRefExoticComponent<CascadingMenuProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { UseFloatingUIProps } from "@salt-ds/core";
3
2
  import { ListProps } from "../list-deprecated";
4
3
  import { MenuItemProps } from "./CascadingMenuItem";
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  /**
3
2
  * Used to know if the component is mounted or not
4
3
  */
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  interface AlphaInputProps {
3
2
  alphaValue: number;
4
3
  showAsOpacity?: boolean;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { TabstripProps } from "../tabs";
3
2
  import { ColorPicker, ColorPickerProps } from "./ColorPicker";
4
3
  import { Swatches, SwatchesTabProps } from "./Swatches";
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  interface HexInputProps {
3
2
  hexValue: string | undefined;
4
3
  disableAlphaChooser: boolean;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  interface HexInputProps {
3
2
  hexValue: string | undefined;
4
3
  disableAlphaChooser: boolean;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { RGBAValue } from "./Color";
3
2
  interface RGBInputProps {
4
3
  rgbaValue: RGBAValue;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { Color } from "./Color";
3
2
  export interface SwatchesTabProps {
4
3
  allColors: string[][];
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { Color } from "./Color";
3
2
  interface SwatchesPickerProps {
4
3
  allColors: string[][];
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { TokenizedInputProps } from "../../tokenized-input";
3
2
  import { BaseComboBoxProps } from "./DefaultComboBox";
4
3
  export declare type MultiSelectComboBoxProps<Item> = BaseComboBoxProps<Item, "multiple"> & Pick<TokenizedInputProps<Item>, "onFocus" | "onBlur" | "onInputFocus" | "onInputBlur" | "onInputChange" | "onInputSelect" | "stringToItem"> & {
@@ -1,13 +1,8 @@
1
- import { ComponentPropsWithoutRef, FocusEvent, KeyboardEvent, ReactElement, Ref, SyntheticEvent } from "react";
2
- import { InputProps } from "@salt-ds/core";
1
+ import { ComponentPropsWithoutRef, ReactElement, Ref, SyntheticEvent } from "react";
3
2
  import { ListNextProps } from "../list-next";
4
3
  import { ComboBoxItemProps } from "./utils";
5
4
  import { UseComboBoxPortalProps } from "./useComboboxPortal";
6
- export interface ComboBoxNextProps<T> extends Omit<ComponentPropsWithoutRef<"input">, "onChange"> {
7
- /**
8
- * Additional props for the input component.
9
- */
10
- InputProps?: InputProps;
5
+ export interface ComboBoxNextProps<T> extends Omit<ComponentPropsWithoutRef<"input">, "onChange" | "onSelect"> {
11
6
  /**
12
7
  * Additional props for the list component.
13
8
  */
@@ -17,36 +12,38 @@ export interface ComboBoxNextProps<T> extends Omit<ComponentPropsWithoutRef<"inp
17
12
  */
18
13
  PortalProps?: UseComboBoxPortalProps;
19
14
  /**
20
- * If `true`, the component will be disabled.
15
+ * Controlled prop. Controls the Input value in the Combo Box Input.
16
+ */
17
+ inputValue?: string;
18
+ /**
19
+ * Controlled prop. Controls the Highlighted item in the Combo Box list.
21
20
  */
22
- disabled: boolean;
23
21
  highlightedItem?: string;
24
- selected?: string;
25
- defaultSelected?: string;
26
22
  /**
27
- * The source of combobox items.
23
+ * Controlled prop. Controls the Selected value in the Combo Box list.
28
24
  */
29
- source: T[];
25
+ selected?: string;
30
26
  /**
31
- * Callback for blur event
27
+ * Initial input value for when the list is uncontrolled.
32
28
  */
33
- onBlur?: (event: FocusEvent<HTMLInputElement>) => void;
29
+ defaultInputValue?: string;
34
30
  /**
35
- * Callback for focus event
31
+ * Initial selected value for when the list is uncontrolled.
36
32
  */
37
- onFocus?: (event: FocusEvent<HTMLInputElement>) => void;
33
+ defaultSelected?: string;
38
34
  /**
39
- * Callback for keyDown event
35
+ * If `true`, the component will be disabled.
40
36
  */
41
- onKeyDown?: (event: KeyboardEvent<HTMLInputElement>) => void;
37
+ disabled?: boolean;
42
38
  /**
43
- * Callback for mouse over event
39
+ * Styling variant. Defaults to "primary".
44
40
  */
45
- onMouseOver?: (event: SyntheticEvent) => void;
41
+ variant?: "primary" | "secondary";
46
42
  /**
47
- * Optional ref for the input component
43
+ /**
44
+ * The source of combobox items.
48
45
  */
49
- inputRef?: Ref<HTMLInputElement>;
46
+ source: T[];
50
47
  /**
51
48
  * Optional ref for the list component
52
49
  */
@@ -54,17 +51,33 @@ export interface ComboBoxNextProps<T> extends Omit<ComponentPropsWithoutRef<"inp
54
51
  /**
55
52
  * The component used for item instead of the default.
56
53
  */
57
- ListItem: (props: ComboBoxItemProps<T>) => ReactElement<ComboBoxItemProps<T>>;
54
+ ListItem?: (props: ComboBoxItemProps<T>) => ReactElement<ComboBoxItemProps<T>>;
58
55
  /**
59
56
  * Function to be used as filter.
60
57
  */
61
58
  itemFilter?: (source: T[], filterValue?: string) => T[];
62
- onChange?: (event: SyntheticEvent, data: {
59
+ /**
60
+ * Callback for mouse over event
61
+ */
62
+ onMouseOver?: (event: SyntheticEvent) => void;
63
+ /**
64
+ * Callback for list selection event
65
+ */
66
+ onSelect?: (event: SyntheticEvent, data: {
63
67
  value: string;
64
68
  }) => void;
65
69
  /**
66
- * Styling variant. Defaults to "primary".
70
+ /**
71
+ * Callback for list change event
67
72
  */
68
- variant?: "primary" | "secondary";
73
+ onListChange?: (event: SyntheticEvent, data: {
74
+ value: string | undefined;
75
+ }) => void;
76
+ /**
77
+ * Callback for input change event
78
+ */
79
+ onChange?: (event: SyntheticEvent, data: {
80
+ value: string;
81
+ }) => void;
69
82
  }
70
83
  export declare const ComboBoxNext: import("react").ForwardRefExoticComponent<ComboBoxNextProps<unknown> & import("react").RefAttributes<HTMLInputElement>>;
@@ -2,6 +2,8 @@ import { FocusEvent, KeyboardEvent, SyntheticEvent } from "react";
2
2
  import { UseListProps } from "../list-next/useList";
3
3
  import { UseComboBoxPortalProps } from "./useComboboxPortal";
4
4
  interface UseComboBoxProps {
5
+ inputValue?: string;
6
+ defaultInputValue?: string;
5
7
  onBlur?: (event: FocusEvent<HTMLInputElement>) => void;
6
8
  onFocus?: (event: FocusEvent<HTMLInputElement>) => void;
7
9
  onMouseOver?: (event: SyntheticEvent) => void;
@@ -9,7 +11,9 @@ interface UseComboBoxProps {
9
11
  PortalProps?: UseComboBoxPortalProps;
10
12
  listProps: UseListProps;
11
13
  }
12
- export declare const useComboBox: ({ onFocus, onBlur, onMouseOver, onKeyDown, PortalProps, listProps, }: UseComboBoxProps) => {
14
+ export declare const useComboBox: ({ defaultInputValue, onFocus, onBlur, onMouseOver, onKeyDown, inputValue: inputValueProp, PortalProps, listProps, }: UseComboBoxProps) => {
15
+ inputValue: string | undefined;
16
+ setInputValue: import("react").Dispatch<import("react").SetStateAction<string | undefined>>;
13
17
  portalProps: {
14
18
  open: boolean;
15
19
  setOpen: import("react").Dispatch<import("react").SetStateAction<boolean>>;
@@ -17,9 +21,14 @@ export declare const useComboBox: ({ onFocus, onBlur, onMouseOver, onKeyDown, Po
17
21
  reference: (node: import("@floating-ui/react").ReferenceType | null) => void;
18
22
  getTriggerProps: () => Record<string, unknown>;
19
23
  getPortalProps: () => import("react").HTMLProps<HTMLDivElement>;
24
+ getPosition: () => {
25
+ top: number;
26
+ left: number;
27
+ position: import("@floating-ui/utils").Strategy;
28
+ width: number | undefined;
29
+ height: number | undefined;
30
+ };
20
31
  };
21
- inputValue: string | undefined;
22
- setInputValue: import("react").Dispatch<import("react").SetStateAction<string | undefined>>;
23
32
  selectedItem: string | undefined;
24
33
  setSelectedItem: import("react").Dispatch<import("react").SetStateAction<string | undefined>>;
25
34
  highlightedItem: string | undefined;
@@ -12,4 +12,11 @@ export declare function useComboboxPortal(props?: UseComboBoxPortalProps): {
12
12
  reference: (node: import("@floating-ui/react").ReferenceType | null) => void;
13
13
  getPortalProps: () => HTMLProps<HTMLDivElement>;
14
14
  getTriggerProps: () => Record<string, unknown>;
15
+ getPosition: () => {
16
+ top: number;
17
+ left: number;
18
+ position: import("@floating-ui/utils").Strategy;
19
+ width: number | undefined;
20
+ height: number | undefined;
21
+ };
15
22
  };
@@ -1,8 +1,7 @@
1
- /// <reference types="react" />
2
1
  import { ListItemNextProps } from "../list-next";
3
2
  export declare const defaultFilter: (source: string[], filterValue?: string | undefined) => string[];
4
3
  export interface ComboBoxItemProps<T> extends Omit<ListItemNextProps, "value"> {
5
4
  value: T;
6
5
  matchPattern?: RegExp | string;
7
6
  }
8
- export declare const DefaultListItem: ({ value, matchPattern, onMouseDown, ...rest }: ComboBoxItemProps<string>) => JSX.Element;
7
+ export declare const DefaultListItem: import("react").ForwardRefExoticComponent<ComboBoxItemProps<string> & import("react").RefAttributes<unknown>>;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { CollectionItem } from "./collectionTypes";
3
2
  interface TypeaheadHookProps<Item> {
4
3
  disableTypeToSelect?: boolean;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { AvatarProps } from "@salt-ds/core";
3
2
  export declare type ContactAvatarProps = AvatarProps;
4
3
  export declare const ContactAvatar: import("react").ForwardRefExoticComponent<AvatarProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { TooltipProps } from "@salt-ds/core";
3
2
  import { FavoriteToggleWithTooltipProps } from "./internal";
4
3
  export interface ContactFavoriteToggleProps extends FavoriteToggleWithTooltipProps {
@@ -1,3 +1,2 @@
1
- /// <reference types="react" />
2
1
  import { ValueComponentProps } from "./types";
3
2
  export declare const MailLinkComponent: (props: ValueComponentProps) => JSX.Element;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { ContactDetailsVariant } from "../ContactDetails";
3
2
  export interface ContactDetailsContext {
4
3
  variant: ContactDetailsVariant;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { TooltipProps } from "@salt-ds/core";
3
2
  import { FavoriteToggleProps } from "./FavoriteToggle";
4
3
  export interface FavoriteToggleWithTooltipProps extends FavoriteToggleProps {
@@ -1,2 +1,8 @@
1
- import { HTMLAttributes } from "react";
2
- export declare const DialogActions: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & import("react").RefAttributes<HTMLDivElement>>;
1
+ import { HTMLAttributes, ReactNode } from "react";
2
+ export interface DialogActionsProps extends HTMLAttributes<HTMLDivElement> {
3
+ /**
4
+ * The content of Dialog Actions
5
+ */
6
+ children?: ReactNode;
7
+ }
8
+ export declare const DialogActions: import("react").ForwardRefExoticComponent<DialogActionsProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -1,3 +1,2 @@
1
- /// <reference types="react" />
2
1
  import { ButtonProps } from "@salt-ds/core";
3
2
  export declare const DialogCloseButton: import("react").ForwardRefExoticComponent<ButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
@@ -1,2 +1,8 @@
1
- import { HTMLAttributes } from "react";
2
- export declare const DialogContent: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & import("react").RefAttributes<HTMLDivElement>>;
1
+ import { HTMLAttributes, ReactNode } from "react";
2
+ export interface DialogContentProps extends HTMLAttributes<HTMLDivElement> {
3
+ /**
4
+ * The content of Dialog Content
5
+ */
6
+ children?: ReactNode;
7
+ }
8
+ export declare const DialogContent: import("react").ForwardRefExoticComponent<DialogContentProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  export declare const DialogContext: import("react").Context<{
3
2
  dialogId?: string | undefined;
4
3
  status?: "error" | "warning" | "success" | "info" | undefined;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { UseFloatingUIProps } from "@salt-ds/core";
3
2
  export declare type UseDialogProps = Partial<Pick<UseFloatingUIProps, "onOpenChange" | "open">>;
4
3
  export declare function useDialog(props: UseDialogProps): {
@@ -8,12 +7,12 @@ export declare function useDialog(props: UseDialogProps): {
8
7
  context: {
9
8
  x: number | null;
10
9
  y: number | null;
11
- placement: import("@floating-ui/react").Placement;
12
- strategy: import("@floating-ui/react").Strategy;
13
- middlewareData: import("@floating-ui/react").MiddlewareData;
14
- update: () => void;
10
+ placement: import("@floating-ui/utils").Placement;
11
+ strategy: import("@floating-ui/utils").Strategy;
12
+ middlewareData: import("@floating-ui/core").MiddlewareData;
15
13
  reference: (node: import("@floating-ui/react").ReferenceType | null) => void;
16
14
  floating: (node: HTMLElement | null) => void;
15
+ update: () => void;
17
16
  isPositioned: boolean;
18
17
  open: boolean;
19
18
  onOpenChange: (open: boolean) => void;
@@ -1,6 +1,6 @@
1
1
  import { HTMLAttributes } from "react";
2
2
  export declare const DRAWER_POSITIONS: readonly ["left", "top", "right", "bottom"];
3
- export declare type DrawerPositions = typeof DRAWER_POSITIONS[number];
3
+ export declare type DrawerPositions = (typeof DRAWER_POSITIONS)[number];
4
4
  export interface DrawerProps extends HTMLAttributes<HTMLDivElement> {
5
5
  /**
6
6
  * Defines the drawer position within the screen.