@salt-ds/lab 1.0.0-alpha.71 → 1.0.0-alpha.73

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 (668) hide show
  1. package/CHANGELOG.md +111 -0
  2. package/css/salt-lab.css +80 -76
  3. package/dist-cjs/app-header/AppHeader.css.js +1 -1
  4. package/dist-cjs/app-header/AppHeader.js +5 -5
  5. package/dist-cjs/app-header/AppHeader.js.map +1 -1
  6. package/dist-cjs/breadcrumbs/Breadcrumb.js +3 -3
  7. package/dist-cjs/breadcrumbs/Breadcrumb.js.map +1 -1
  8. package/dist-cjs/breadcrumbs/Breadcrumbs.js +3 -3
  9. package/dist-cjs/breadcrumbs/Breadcrumbs.js.map +1 -1
  10. package/dist-cjs/breadcrumbs/internal/BreadcrumbsCollapsed.js.map +1 -1
  11. package/dist-cjs/button-bar/ButtonBar.js +4 -4
  12. package/dist-cjs/button-bar/ButtonBar.js.map +1 -1
  13. package/dist-cjs/button-bar/OrderedButton.js +3 -3
  14. package/dist-cjs/button-bar/OrderedButton.js.map +1 -1
  15. package/dist-cjs/button-bar/internal/DescendantContext.js.map +1 -1
  16. package/dist-cjs/calendar/Calendar.js +35 -10
  17. package/dist-cjs/calendar/Calendar.js.map +1 -1
  18. package/dist-cjs/calendar/CalendarGrid.js +2 -2
  19. package/dist-cjs/calendar/CalendarGrid.js.map +1 -1
  20. package/dist-cjs/calendar/CalendarMonthHeader.js +2 -2
  21. package/dist-cjs/calendar/CalendarMonthHeader.js.map +1 -1
  22. package/dist-cjs/calendar/CalendarNavigation.js.map +1 -1
  23. package/dist-cjs/calendar/CalendarWeekHeader.js +3 -3
  24. package/dist-cjs/calendar/CalendarWeekHeader.js.map +1 -1
  25. package/dist-cjs/calendar/internal/CalendarDay.css.js +1 -1
  26. package/dist-cjs/calendar/internal/CalendarDay.js.map +1 -1
  27. package/dist-cjs/calendar/internal/CalendarMonth.js +3 -3
  28. package/dist-cjs/calendar/internal/CalendarMonth.js.map +1 -1
  29. package/dist-cjs/calendar/internal/useFocusManagement.js +1 -1
  30. package/dist-cjs/calendar/internal/useFocusManagement.js.map +1 -1
  31. package/dist-cjs/calendar/useCalendar.js +6 -0
  32. package/dist-cjs/calendar/useCalendar.js.map +1 -1
  33. package/dist-cjs/calendar/useCalendarSelection.js +185 -103
  34. package/dist-cjs/calendar/useCalendarSelection.js.map +1 -1
  35. package/dist-cjs/cascading-menu/CascadingMenu.js.map +1 -1
  36. package/dist-cjs/cascading-menu/CascadingMenuItem.css.js +1 -1
  37. package/dist-cjs/cascading-menu/CascadingMenuItem.js +3 -3
  38. package/dist-cjs/cascading-menu/CascadingMenuItem.js.map +1 -1
  39. package/dist-cjs/cascading-menu/CascadingMenuList.js +5 -5
  40. package/dist-cjs/cascading-menu/CascadingMenuList.js.map +1 -1
  41. package/dist-cjs/cascading-menu/internal/useMenuTriggerHandlers.js.map +1 -1
  42. package/dist-cjs/color-chooser/AlphaInputField.js +2 -2
  43. package/dist-cjs/color-chooser/AlphaInputField.js.map +1 -1
  44. package/dist-cjs/color-chooser/ColorChooser.css.js +1 -1
  45. package/dist-cjs/color-chooser/ColorChooser.js +38 -40
  46. package/dist-cjs/color-chooser/ColorChooser.js.map +1 -1
  47. package/dist-cjs/color-chooser/ColorPicker.css.js +1 -1
  48. package/dist-cjs/color-chooser/ColorPicker.js +3 -3
  49. package/dist-cjs/color-chooser/ColorPicker.js.map +1 -1
  50. package/dist-cjs/color-chooser/DictTabs.js +2 -2
  51. package/dist-cjs/color-chooser/HexInput.css.js +1 -1
  52. package/dist-cjs/color-chooser/HexInput.js +2 -2
  53. package/dist-cjs/color-chooser/HexInput.js.map +1 -1
  54. package/dist-cjs/color-chooser/RGBAInput.css.js +1 -1
  55. package/dist-cjs/color-chooser/RGBAInput.js +3 -3
  56. package/dist-cjs/color-chooser/RGBAInput.js.map +1 -1
  57. package/dist-cjs/color-chooser/RGBAInputField.js +2 -2
  58. package/dist-cjs/color-chooser/RGBAInputField.js.map +1 -1
  59. package/dist-cjs/color-chooser/Swatch.css.js +1 -1
  60. package/dist-cjs/color-chooser/Swatches.js +3 -3
  61. package/dist-cjs/color-chooser/Swatches.js.map +1 -1
  62. package/dist-cjs/color-chooser/SwatchesPicker.js +3 -3
  63. package/dist-cjs/color-chooser/SwatchesPicker.js.map +1 -1
  64. package/dist-cjs/combo-box/ComboBox.js +6 -6
  65. package/dist-cjs/combo-box/ComboBox.js.map +1 -1
  66. package/dist-cjs/combo-box/useCombobox.js +1 -1
  67. package/dist-cjs/combo-box/useCombobox.js.map +1 -1
  68. package/dist-cjs/combo-box-deprecated/ComboBoxDeprecated.js +3 -3
  69. package/dist-cjs/combo-box-deprecated/ComboBoxDeprecated.js.map +1 -1
  70. package/dist-cjs/combo-box-deprecated/internal/DefaultComboBox.js +2 -2
  71. package/dist-cjs/combo-box-deprecated/internal/DefaultComboBox.js.map +1 -1
  72. package/dist-cjs/combo-box-deprecated/internal/MultiSelectComboBox.js +2 -2
  73. package/dist-cjs/combo-box-deprecated/internal/useComboBox.js +1 -1
  74. package/dist-cjs/combo-box-deprecated/internal/useMultiSelectComboBox.js +1 -1
  75. package/dist-cjs/common-hooks/collectionProvider.js.map +1 -1
  76. package/dist-cjs/common-hooks/itemToString.js +1 -1
  77. package/dist-cjs/common-hooks/itemToString.js.map +1 -1
  78. package/dist-cjs/common-hooks/useCollectionItems.js +1 -1
  79. package/dist-cjs/common-hooks/useCollectionItems.js.map +1 -1
  80. package/dist-cjs/common-hooks/useImperativeScrollingAPI.js +6 -10
  81. package/dist-cjs/common-hooks/useImperativeScrollingAPI.js.map +1 -1
  82. package/dist-cjs/common-hooks/useKeyboardNavigation.js.map +1 -1
  83. package/dist-cjs/common-hooks/useTypeahead.js.map +1 -1
  84. package/dist-cjs/common-hooks/utils/collection-item-utils.js +2 -2
  85. package/dist-cjs/common-hooks/utils/collection-item-utils.js.map +1 -1
  86. package/dist-cjs/contact-details/ContactActions.js +1 -1
  87. package/dist-cjs/contact-details/ContactActions.js.map +1 -1
  88. package/dist-cjs/contact-details/ContactAvatar.js +1 -1
  89. package/dist-cjs/contact-details/ContactDetails.js +4 -4
  90. package/dist-cjs/contact-details/ContactDetails.js.map +1 -1
  91. package/dist-cjs/contact-details/ContactFavoriteToggle.js +1 -1
  92. package/dist-cjs/contact-details/ContactMetadata.js +2 -2
  93. package/dist-cjs/contact-details/ContactMetadata.js.map +1 -1
  94. package/dist-cjs/contact-details/ContactMetadataItem.js.map +1 -1
  95. package/dist-cjs/contact-details/ContactPrimaryInfo.js +1 -1
  96. package/dist-cjs/contact-details/ContactPrimaryInfo.js.map +1 -1
  97. package/dist-cjs/contact-details/ContactSecondaryInfo.js +1 -1
  98. package/dist-cjs/contact-details/ContactSecondaryInfo.js.map +1 -1
  99. package/dist-cjs/contact-details/ContactTertiaryInfo.js +1 -1
  100. package/dist-cjs/contact-details/ContactTertiaryInfo.js.map +1 -1
  101. package/dist-cjs/contact-details/internal/FavoriteToggle.js.map +1 -1
  102. package/dist-cjs/contact-details/internal/StarIconContainer.js.map +1 -1
  103. package/dist-cjs/content-status/ContentStatus.js +3 -3
  104. package/dist-cjs/content-status/ContentStatus.js.map +1 -1
  105. package/dist-cjs/content-status/internal/StatusIndicator.js.map +1 -1
  106. package/dist-cjs/date-input/DateInput.css.js +1 -1
  107. package/dist-cjs/date-input/DateInputRange.js.map +1 -1
  108. package/dist-cjs/date-input/DateInputSingle.js.map +1 -1
  109. package/dist-cjs/date-picker/DatePicker.js.map +1 -1
  110. package/dist-cjs/date-picker/DatePickerActions.js.map +1 -1
  111. package/dist-cjs/date-picker/DatePickerContext.js +10 -10
  112. package/dist-cjs/date-picker/DatePickerContext.js.map +1 -1
  113. package/dist-cjs/date-picker/DatePickerOverlay.css.js +1 -1
  114. package/dist-cjs/date-picker/DatePickerOverlay.js.map +1 -1
  115. package/dist-cjs/date-picker/DatePickerOverlayProvider.js +4 -0
  116. package/dist-cjs/date-picker/DatePickerOverlayProvider.js.map +1 -1
  117. package/dist-cjs/date-picker/DatePickerPanel.css.js +1 -1
  118. package/dist-cjs/date-picker/DatePickerRangeGridPanel.js +3 -3
  119. package/dist-cjs/date-picker/DatePickerRangeGridPanel.js.map +1 -1
  120. package/dist-cjs/date-picker/DatePickerRangeInput.js +1 -1
  121. package/dist-cjs/date-picker/DatePickerRangeInput.js.map +1 -1
  122. package/dist-cjs/date-picker/DatePickerRangePanel.js +3 -3
  123. package/dist-cjs/date-picker/DatePickerRangePanel.js.map +1 -1
  124. package/dist-cjs/date-picker/DatePickerSingleGridPanel.js +3 -3
  125. package/dist-cjs/date-picker/DatePickerSingleGridPanel.js.map +1 -1
  126. package/dist-cjs/date-picker/DatePickerSingleInput.js +1 -1
  127. package/dist-cjs/date-picker/DatePickerSingleInput.js.map +1 -1
  128. package/dist-cjs/date-picker/DatePickerTrigger.js.map +1 -1
  129. package/dist-cjs/deck-item/DeckItem.js +2 -2
  130. package/dist-cjs/deck-item/DeckItem.js.map +1 -1
  131. package/dist-cjs/deck-layout/DeckLayout.js +3 -3
  132. package/dist-cjs/deck-layout/DeckLayout.js.map +1 -1
  133. package/dist-cjs/dropdown/Dropdown.js +1 -1
  134. package/dist-cjs/dropdown/Dropdown.js.map +1 -1
  135. package/dist-cjs/dropdown/DropdownBase.js +3 -3
  136. package/dist-cjs/dropdown/DropdownBase.js.map +1 -1
  137. package/dist-cjs/dropdown/DropdownButton.js +2 -2
  138. package/dist-cjs/dropdown/DropdownButton.js.map +1 -1
  139. package/dist-cjs/dropdown/useDropdown.js +1 -1
  140. package/dist-cjs/dropdown/useDropdown.js.map +1 -1
  141. package/dist-cjs/dropdown/useDropdownBase.js.map +1 -1
  142. package/dist-cjs/editable-label/EditableLabel.js +2 -2
  143. package/dist-cjs/editable-label/EditableLabel.js.map +1 -1
  144. package/dist-cjs/form-field-legacy/FormActivationIndicator.js.map +1 -1
  145. package/dist-cjs/form-field-legacy/FormFieldLegacy.css.js +1 -1
  146. package/dist-cjs/form-field-legacy/FormFieldLegacy.js +4 -4
  147. package/dist-cjs/form-field-legacy/FormFieldLegacy.js.map +1 -1
  148. package/dist-cjs/form-field-legacy/FormHelperText.js.map +1 -1
  149. package/dist-cjs/form-field-legacy/FormLabel.js +3 -3
  150. package/dist-cjs/form-field-legacy/FormLabel.js.map +1 -1
  151. package/dist-cjs/form-field-legacy/StatusIndicator.js.map +1 -1
  152. package/dist-cjs/form-group/FormGroup.js +2 -2
  153. package/dist-cjs/form-group/FormGroup.js.map +1 -1
  154. package/dist-cjs/formatted-input/FormattedInput.js +3 -3
  155. package/dist-cjs/formatted-input/FormattedInput.js.map +1 -1
  156. package/dist-cjs/formatted-input/internal/InputWithMask.js.map +1 -1
  157. package/dist-cjs/index.js +105 -107
  158. package/dist-cjs/index.js.map +1 -1
  159. package/dist-cjs/input-legacy/InputLegacy.js +3 -3
  160. package/dist-cjs/input-legacy/InputLegacy.js.map +1 -1
  161. package/dist-cjs/input-legacy/StaticInputAdornment.js +2 -2
  162. package/dist-cjs/input-legacy/StaticInputAdornment.js.map +1 -1
  163. package/dist-cjs/layer-layout/LayerLayout.js.map +1 -1
  164. package/dist-cjs/list/Highlighter.js +2 -2
  165. package/dist-cjs/list/Highlighter.js.map +1 -1
  166. package/dist-cjs/list/List.css.js +1 -1
  167. package/dist-cjs/list/List.js +3 -3
  168. package/dist-cjs/list/List.js.map +1 -1
  169. package/dist-cjs/list/ListItem.js +2 -2
  170. package/dist-cjs/list/ListItem.js.map +1 -1
  171. package/dist-cjs/list/VirtualizedList.js +4 -4
  172. package/dist-cjs/list/VirtualizedList.js.map +1 -1
  173. package/dist-cjs/list/useList.js +2 -2
  174. package/dist-cjs/list/useList.js.map +1 -1
  175. package/dist-cjs/list/useListHeight.js +1 -1
  176. package/dist-cjs/list-deprecated/List.css.js +1 -1
  177. package/dist-cjs/list-deprecated/List.js +2 -2
  178. package/dist-cjs/list-deprecated/List.js.map +1 -1
  179. package/dist-cjs/list-deprecated/ListBase.js +15 -19
  180. package/dist-cjs/list-deprecated/ListBase.js.map +1 -1
  181. package/dist-cjs/list-deprecated/ListItem.js +1 -1
  182. package/dist-cjs/list-deprecated/ListItem.js.map +1 -1
  183. package/dist-cjs/list-deprecated/ListItemBase.js +2 -2
  184. package/dist-cjs/list-deprecated/ListItemBase.js.map +1 -1
  185. package/dist-cjs/list-deprecated/internal/DescendantContext.js +7 -4
  186. package/dist-cjs/list-deprecated/internal/DescendantContext.js.map +1 -1
  187. package/dist-cjs/list-deprecated/internal/Highlighter.js +2 -2
  188. package/dist-cjs/list-deprecated/internal/Highlighter.js.map +1 -1
  189. package/dist-cjs/list-deprecated/itemToString.js +1 -1
  190. package/dist-cjs/list-deprecated/itemToString.js.map +1 -1
  191. package/dist-cjs/list-deprecated/useList.js.map +1 -1
  192. package/dist-cjs/list-next/ListItemNext.css.js +1 -1
  193. package/dist-cjs/list-next/ListItemNext.js +2 -2
  194. package/dist-cjs/list-next/ListItemNext.js.map +1 -1
  195. package/dist-cjs/list-next/ListNext.css.js +1 -1
  196. package/dist-cjs/list-next/ListNext.js.map +1 -1
  197. package/dist-cjs/logo/Logo.js +2 -2
  198. package/dist-cjs/logo/Logo.js.map +1 -1
  199. package/dist-cjs/logo/LogoSeparator.css.js +1 -1
  200. package/dist-cjs/logo/LogoSeparator.js +2 -2
  201. package/dist-cjs/logo/LogoSeparator.js.map +1 -1
  202. package/dist-cjs/menu-button/MenuButton.js +1 -1
  203. package/dist-cjs/menu-button/MenuButton.js.map +1 -1
  204. package/dist-cjs/menu-button/MenuButtonTrigger.js +2 -2
  205. package/dist-cjs/menu-button/MenuButtonTrigger.js.map +1 -1
  206. package/dist-cjs/metric/Metric.js +2 -2
  207. package/dist-cjs/metric/Metric.js.map +1 -1
  208. package/dist-cjs/metric/MetricContent.css.js +1 -1
  209. package/dist-cjs/metric/MetricContent.js +2 -2
  210. package/dist-cjs/metric/MetricContent.js.map +1 -1
  211. package/dist-cjs/metric/MetricHeader.js +2 -2
  212. package/dist-cjs/metric/MetricHeader.js.map +1 -1
  213. package/dist-cjs/number-input/NumberInput.css.js +1 -1
  214. package/dist-cjs/number-input/NumberInput.js +1 -1
  215. package/dist-cjs/number-input/NumberInput.js.map +1 -1
  216. package/dist-cjs/number-input/useNumberInput.js.map +1 -1
  217. package/dist-cjs/portal/Portal.js.map +1 -1
  218. package/dist-cjs/query-input/QueryInput.js +3 -3
  219. package/dist-cjs/query-input/QueryInput.js.map +1 -1
  220. package/dist-cjs/query-input/internal/CategoryList.js +1 -1
  221. package/dist-cjs/query-input/internal/CategoryListItem.js +1 -1
  222. package/dist-cjs/query-input/internal/QueryInputBody.js.map +1 -1
  223. package/dist-cjs/query-input/internal/SearchList.js +3 -3
  224. package/dist-cjs/query-input/internal/SearchList.js.map +1 -1
  225. package/dist-cjs/query-input/internal/ValueList.js +1 -1
  226. package/dist-cjs/query-input/internal/ValueSelector.js +1 -1
  227. package/dist-cjs/query-input/useQueryInput.js.map +1 -1
  228. package/dist-cjs/responsive/OverflowReducer.js.map +1 -1
  229. package/dist-cjs/responsive/useOverflowCollectionItems.js.map +1 -1
  230. package/dist-cjs/responsive/useOverflowLayout.js.map +1 -1
  231. package/dist-cjs/responsive/useWidth.js.map +1 -1
  232. package/dist-cjs/search-input/SearchInput.js +2 -2
  233. package/dist-cjs/search-input/SearchInput.js.map +1 -1
  234. package/dist-cjs/static-list/StaticList.css.js +1 -1
  235. package/dist-cjs/static-list/StaticList.js.map +1 -1
  236. package/dist-cjs/static-list/StaticListItemContent.js.map +1 -1
  237. package/dist-cjs/system-status/SystemStatus.css.js +1 -1
  238. package/dist-cjs/system-status/SystemStatus.js +2 -2
  239. package/dist-cjs/system-status/SystemStatus.js.map +1 -1
  240. package/dist-cjs/system-status/SystemStatusActions.js +2 -2
  241. package/dist-cjs/system-status/SystemStatusActions.js.map +1 -1
  242. package/dist-cjs/system-status/SystemStatusContent.js +2 -2
  243. package/dist-cjs/system-status/SystemStatusContent.js.map +1 -1
  244. package/dist-cjs/tabs/Tab.css.js +1 -1
  245. package/dist-cjs/tabs/Tab.js.map +1 -1
  246. package/dist-cjs/tabs/TabActivationIndicator.css.js +1 -1
  247. package/dist-cjs/tabs/TabActivationIndicator.js +2 -2
  248. package/dist-cjs/tabs/TabActivationIndicator.js.map +1 -1
  249. package/dist-cjs/tabs/TabPanel.js.map +1 -1
  250. package/dist-cjs/tabs/Tabs.js +3 -3
  251. package/dist-cjs/tabs/Tabs.js.map +1 -1
  252. package/dist-cjs/tabs/Tabstrip.css.js +1 -1
  253. package/dist-cjs/tabs/Tabstrip.js +5 -5
  254. package/dist-cjs/tabs/Tabstrip.js.map +1 -1
  255. package/dist-cjs/tabs/drag-drop/Draggable.js +2 -2
  256. package/dist-cjs/tabs/drag-drop/Draggable.js.map +1 -1
  257. package/dist-cjs/tabs/drag-drop/useDragDropNaturalMovement.js +2 -2
  258. package/dist-cjs/tabs/drag-drop/useDragDropNaturalMovement.js.map +1 -1
  259. package/dist-cjs/tabs/useActivationIndicator.js +1 -1
  260. package/dist-cjs/tabs/useActivationIndicator.js.map +1 -1
  261. package/dist-cjs/tabs/useItemsWithIds.js.map +1 -1
  262. package/dist-cjs/tabs/useTabstrip.js +1 -1
  263. package/dist-cjs/tabs/useTabstrip.js.map +1 -1
  264. package/dist-cjs/tabs-next/TabBar.css.js +1 -1
  265. package/dist-cjs/tabs-next/TabBar.js +2 -2
  266. package/dist-cjs/tabs-next/TabBar.js.map +1 -1
  267. package/dist-cjs/tabs-next/TabListNext.js +2 -2
  268. package/dist-cjs/tabs-next/TabListNext.js.map +1 -1
  269. package/dist-cjs/tabs-next/TabNext.css.js +1 -1
  270. package/dist-cjs/tabs-next/TabNext.js.map +1 -1
  271. package/dist-cjs/tabs-next/TabNextTrigger.js.map +1 -1
  272. package/dist-cjs/tabs-next/TabOverflowList.css.js +1 -1
  273. package/dist-cjs/tabs-next/TabOverflowList.js +1 -1
  274. package/dist-cjs/tabs-next/TabOverflowList.js.map +1 -1
  275. package/dist-cjs/tabs-next/TabsNext.js +2 -2
  276. package/dist-cjs/tabs-next/TabsNext.js.map +1 -1
  277. package/dist-cjs/tokenized-input/TokenizedInputBase.js +2 -2
  278. package/dist-cjs/tokenized-input/TokenizedInputBase.js.map +1 -1
  279. package/dist-cjs/tokenized-input/internal/InputPill.js.map +1 -1
  280. package/dist-cjs/tokenized-input/internal/InputRuler.js.map +1 -1
  281. package/dist-cjs/tokenized-input/internal/calcFirstHiddenIndex.js.map +1 -1
  282. package/dist-cjs/tokenized-input/internal/defaultItemToString.js +1 -1
  283. package/dist-cjs/tokenized-input/internal/defaultItemToString.js.map +1 -1
  284. package/dist-cjs/tokenized-input/useTokenizedInput.js.map +1 -1
  285. package/dist-cjs/tokenized-input-next/TokenizedInputNext.css.js +1 -1
  286. package/dist-cjs/tokenized-input-next/TokenizedInputNext.js +1 -1
  287. package/dist-cjs/tokenized-input-next/TokenizedInputNext.js.map +1 -1
  288. package/dist-cjs/tokenized-input-next/internal/InputPill.js.map +1 -1
  289. package/dist-cjs/tokenized-input-next/internal/calcFirstHiddenIndex.js.map +1 -1
  290. package/dist-cjs/tokenized-input-next/useTokenizedInputNext.js.map +1 -1
  291. package/dist-cjs/toolbar/Toolbar.css.js +1 -1
  292. package/dist-cjs/toolbar/Toolbar.js +6 -6
  293. package/dist-cjs/toolbar/Toolbar.js.map +1 -1
  294. package/dist-cjs/toolbar/ToolbarButton.js +1 -1
  295. package/dist-cjs/toolbar/ToolbarButton.js.map +1 -1
  296. package/dist-cjs/toolbar/Tooltray.js +3 -3
  297. package/dist-cjs/toolbar/Tooltray.js.map +1 -1
  298. package/dist-cjs/toolbar/internal/renderToolbarItems.js +3 -3
  299. package/dist-cjs/toolbar/internal/renderToolbarItems.js.map +1 -1
  300. package/dist-cjs/toolbar/internal/renderTrayTools.js.map +1 -1
  301. package/dist-cjs/toolbar/overflow-panel/OverflowPanel.css.js +1 -1
  302. package/dist-cjs/toolbar/overflow-panel/OverflowPanel.js +5 -5
  303. package/dist-cjs/toolbar/overflow-panel/OverflowPanel.js.map +1 -1
  304. package/dist-cjs/toolbar/toolbar-field/ToolbarField.js +1 -1
  305. package/dist-cjs/toolbar/toolbar-field/ToolbarField.js.map +1 -1
  306. package/dist-cjs/toolbar/toolbar-field/useToolbarField.js.map +1 -1
  307. package/dist-cjs/tree/Tree.js +4 -4
  308. package/dist-cjs/tree/Tree.js.map +1 -1
  309. package/dist-cjs/tree/TreeNode.js +2 -2
  310. package/dist-cjs/tree/TreeNode.js.map +1 -1
  311. package/dist-cjs/tree/useTree.js +2 -2
  312. package/dist-cjs/tree/useTree.js.map +1 -1
  313. package/dist-cjs/utils/useEventCallback.js +1 -1
  314. package/dist-cjs/utils/useEventCallback.js.map +1 -1
  315. package/dist-cjs/window/ElectronWindow.js +4 -4
  316. package/dist-cjs/window/ElectronWindow.js.map +1 -1
  317. package/dist-es/app-header/AppHeader.css.js +1 -1
  318. package/dist-es/app-header/AppHeader.js +5 -5
  319. package/dist-es/app-header/AppHeader.js.map +1 -1
  320. package/dist-es/breadcrumbs/Breadcrumb.js +3 -3
  321. package/dist-es/breadcrumbs/Breadcrumb.js.map +1 -1
  322. package/dist-es/breadcrumbs/Breadcrumbs.js +3 -3
  323. package/dist-es/breadcrumbs/Breadcrumbs.js.map +1 -1
  324. package/dist-es/breadcrumbs/internal/BreadcrumbsCollapsed.js.map +1 -1
  325. package/dist-es/button-bar/ButtonBar.js +4 -4
  326. package/dist-es/button-bar/ButtonBar.js.map +1 -1
  327. package/dist-es/button-bar/OrderedButton.js +3 -3
  328. package/dist-es/button-bar/OrderedButton.js.map +1 -1
  329. package/dist-es/button-bar/internal/DescendantContext.js.map +1 -1
  330. package/dist-es/calendar/Calendar.js +35 -10
  331. package/dist-es/calendar/Calendar.js.map +1 -1
  332. package/dist-es/calendar/CalendarGrid.js +2 -2
  333. package/dist-es/calendar/CalendarGrid.js.map +1 -1
  334. package/dist-es/calendar/CalendarMonthHeader.js +2 -2
  335. package/dist-es/calendar/CalendarMonthHeader.js.map +1 -1
  336. package/dist-es/calendar/CalendarNavigation.js.map +1 -1
  337. package/dist-es/calendar/CalendarWeekHeader.js +3 -3
  338. package/dist-es/calendar/CalendarWeekHeader.js.map +1 -1
  339. package/dist-es/calendar/internal/CalendarDay.css.js +1 -1
  340. package/dist-es/calendar/internal/CalendarDay.js.map +1 -1
  341. package/dist-es/calendar/internal/CalendarMonth.js +3 -3
  342. package/dist-es/calendar/internal/CalendarMonth.js.map +1 -1
  343. package/dist-es/calendar/internal/useFocusManagement.js +1 -1
  344. package/dist-es/calendar/internal/useFocusManagement.js.map +1 -1
  345. package/dist-es/calendar/useCalendar.js +6 -0
  346. package/dist-es/calendar/useCalendar.js.map +1 -1
  347. package/dist-es/calendar/useCalendarSelection.js +186 -102
  348. package/dist-es/calendar/useCalendarSelection.js.map +1 -1
  349. package/dist-es/cascading-menu/CascadingMenu.js.map +1 -1
  350. package/dist-es/cascading-menu/CascadingMenuItem.css.js +1 -1
  351. package/dist-es/cascading-menu/CascadingMenuItem.js +3 -3
  352. package/dist-es/cascading-menu/CascadingMenuItem.js.map +1 -1
  353. package/dist-es/cascading-menu/CascadingMenuList.js +5 -5
  354. package/dist-es/cascading-menu/CascadingMenuList.js.map +1 -1
  355. package/dist-es/cascading-menu/internal/useMenuTriggerHandlers.js.map +1 -1
  356. package/dist-es/color-chooser/AlphaInputField.js +2 -2
  357. package/dist-es/color-chooser/AlphaInputField.js.map +1 -1
  358. package/dist-es/color-chooser/ColorChooser.css.js +1 -1
  359. package/dist-es/color-chooser/ColorChooser.js +39 -41
  360. package/dist-es/color-chooser/ColorChooser.js.map +1 -1
  361. package/dist-es/color-chooser/ColorPicker.css.js +1 -1
  362. package/dist-es/color-chooser/ColorPicker.js +3 -3
  363. package/dist-es/color-chooser/ColorPicker.js.map +1 -1
  364. package/dist-es/color-chooser/DictTabs.js +2 -2
  365. package/dist-es/color-chooser/HexInput.css.js +1 -1
  366. package/dist-es/color-chooser/HexInput.js +2 -2
  367. package/dist-es/color-chooser/HexInput.js.map +1 -1
  368. package/dist-es/color-chooser/RGBAInput.css.js +1 -1
  369. package/dist-es/color-chooser/RGBAInput.js +3 -3
  370. package/dist-es/color-chooser/RGBAInput.js.map +1 -1
  371. package/dist-es/color-chooser/RGBAInputField.js +2 -2
  372. package/dist-es/color-chooser/RGBAInputField.js.map +1 -1
  373. package/dist-es/color-chooser/Swatch.css.js +1 -1
  374. package/dist-es/color-chooser/Swatches.js +3 -3
  375. package/dist-es/color-chooser/Swatches.js.map +1 -1
  376. package/dist-es/color-chooser/SwatchesPicker.js +3 -3
  377. package/dist-es/color-chooser/SwatchesPicker.js.map +1 -1
  378. package/dist-es/combo-box/ComboBox.js +6 -6
  379. package/dist-es/combo-box/ComboBox.js.map +1 -1
  380. package/dist-es/combo-box/useCombobox.js +1 -1
  381. package/dist-es/combo-box/useCombobox.js.map +1 -1
  382. package/dist-es/combo-box-deprecated/ComboBoxDeprecated.js +3 -3
  383. package/dist-es/combo-box-deprecated/ComboBoxDeprecated.js.map +1 -1
  384. package/dist-es/combo-box-deprecated/internal/DefaultComboBox.js +2 -2
  385. package/dist-es/combo-box-deprecated/internal/DefaultComboBox.js.map +1 -1
  386. package/dist-es/combo-box-deprecated/internal/MultiSelectComboBox.js +2 -2
  387. package/dist-es/combo-box-deprecated/internal/useComboBox.js +1 -1
  388. package/dist-es/combo-box-deprecated/internal/useMultiSelectComboBox.js +1 -1
  389. package/dist-es/common-hooks/collectionProvider.js.map +1 -1
  390. package/dist-es/common-hooks/itemToString.js +1 -1
  391. package/dist-es/common-hooks/itemToString.js.map +1 -1
  392. package/dist-es/common-hooks/useCollectionItems.js +1 -1
  393. package/dist-es/common-hooks/useCollectionItems.js.map +1 -1
  394. package/dist-es/common-hooks/useImperativeScrollingAPI.js +6 -10
  395. package/dist-es/common-hooks/useImperativeScrollingAPI.js.map +1 -1
  396. package/dist-es/common-hooks/useKeyboardNavigation.js.map +1 -1
  397. package/dist-es/common-hooks/useTypeahead.js.map +1 -1
  398. package/dist-es/common-hooks/utils/collection-item-utils.js +2 -2
  399. package/dist-es/common-hooks/utils/collection-item-utils.js.map +1 -1
  400. package/dist-es/contact-details/ContactActions.js +1 -1
  401. package/dist-es/contact-details/ContactActions.js.map +1 -1
  402. package/dist-es/contact-details/ContactAvatar.js +1 -1
  403. package/dist-es/contact-details/ContactDetails.js +4 -4
  404. package/dist-es/contact-details/ContactDetails.js.map +1 -1
  405. package/dist-es/contact-details/ContactFavoriteToggle.js +1 -1
  406. package/dist-es/contact-details/ContactMetadata.js +2 -2
  407. package/dist-es/contact-details/ContactMetadata.js.map +1 -1
  408. package/dist-es/contact-details/ContactMetadataItem.js.map +1 -1
  409. package/dist-es/contact-details/ContactPrimaryInfo.js +1 -1
  410. package/dist-es/contact-details/ContactPrimaryInfo.js.map +1 -1
  411. package/dist-es/contact-details/ContactSecondaryInfo.js +1 -1
  412. package/dist-es/contact-details/ContactSecondaryInfo.js.map +1 -1
  413. package/dist-es/contact-details/ContactTertiaryInfo.js +1 -1
  414. package/dist-es/contact-details/ContactTertiaryInfo.js.map +1 -1
  415. package/dist-es/contact-details/internal/FavoriteToggle.js.map +1 -1
  416. package/dist-es/contact-details/internal/StarIconContainer.js.map +1 -1
  417. package/dist-es/content-status/ContentStatus.js +3 -3
  418. package/dist-es/content-status/ContentStatus.js.map +1 -1
  419. package/dist-es/content-status/internal/StatusIndicator.js.map +1 -1
  420. package/dist-es/date-input/DateInput.css.js +1 -1
  421. package/dist-es/date-input/DateInputRange.js.map +1 -1
  422. package/dist-es/date-input/DateInputSingle.js.map +1 -1
  423. package/dist-es/date-picker/DatePicker.js.map +1 -1
  424. package/dist-es/date-picker/DatePickerActions.js.map +1 -1
  425. package/dist-es/date-picker/DatePickerContext.js +10 -10
  426. package/dist-es/date-picker/DatePickerContext.js.map +1 -1
  427. package/dist-es/date-picker/DatePickerOverlay.css.js +1 -1
  428. package/dist-es/date-picker/DatePickerOverlay.js.map +1 -1
  429. package/dist-es/date-picker/DatePickerOverlayProvider.js +4 -0
  430. package/dist-es/date-picker/DatePickerOverlayProvider.js.map +1 -1
  431. package/dist-es/date-picker/DatePickerPanel.css.js +1 -1
  432. package/dist-es/date-picker/DatePickerRangeGridPanel.js +3 -3
  433. package/dist-es/date-picker/DatePickerRangeGridPanel.js.map +1 -1
  434. package/dist-es/date-picker/DatePickerRangeInput.js +1 -1
  435. package/dist-es/date-picker/DatePickerRangeInput.js.map +1 -1
  436. package/dist-es/date-picker/DatePickerRangePanel.js +3 -3
  437. package/dist-es/date-picker/DatePickerRangePanel.js.map +1 -1
  438. package/dist-es/date-picker/DatePickerSingleGridPanel.js +3 -3
  439. package/dist-es/date-picker/DatePickerSingleGridPanel.js.map +1 -1
  440. package/dist-es/date-picker/DatePickerSingleInput.js +1 -1
  441. package/dist-es/date-picker/DatePickerSingleInput.js.map +1 -1
  442. package/dist-es/date-picker/DatePickerTrigger.js.map +1 -1
  443. package/dist-es/deck-item/DeckItem.js +2 -2
  444. package/dist-es/deck-item/DeckItem.js.map +1 -1
  445. package/dist-es/deck-layout/DeckLayout.js +3 -3
  446. package/dist-es/deck-layout/DeckLayout.js.map +1 -1
  447. package/dist-es/dropdown/Dropdown.js +1 -1
  448. package/dist-es/dropdown/Dropdown.js.map +1 -1
  449. package/dist-es/dropdown/DropdownBase.js +3 -3
  450. package/dist-es/dropdown/DropdownBase.js.map +1 -1
  451. package/dist-es/dropdown/DropdownButton.js +2 -2
  452. package/dist-es/dropdown/DropdownButton.js.map +1 -1
  453. package/dist-es/dropdown/useDropdown.js +1 -1
  454. package/dist-es/dropdown/useDropdown.js.map +1 -1
  455. package/dist-es/dropdown/useDropdownBase.js.map +1 -1
  456. package/dist-es/editable-label/EditableLabel.js +2 -2
  457. package/dist-es/editable-label/EditableLabel.js.map +1 -1
  458. package/dist-es/form-field-legacy/FormActivationIndicator.js.map +1 -1
  459. package/dist-es/form-field-legacy/FormFieldLegacy.css.js +1 -1
  460. package/dist-es/form-field-legacy/FormFieldLegacy.js +4 -4
  461. package/dist-es/form-field-legacy/FormFieldLegacy.js.map +1 -1
  462. package/dist-es/form-field-legacy/FormHelperText.js.map +1 -1
  463. package/dist-es/form-field-legacy/FormLabel.js +3 -3
  464. package/dist-es/form-field-legacy/FormLabel.js.map +1 -1
  465. package/dist-es/form-field-legacy/StatusIndicator.js.map +1 -1
  466. package/dist-es/form-group/FormGroup.js +2 -2
  467. package/dist-es/form-group/FormGroup.js.map +1 -1
  468. package/dist-es/formatted-input/FormattedInput.js +3 -3
  469. package/dist-es/formatted-input/FormattedInput.js.map +1 -1
  470. package/dist-es/formatted-input/internal/InputWithMask.js.map +1 -1
  471. package/dist-es/index.js +52 -52
  472. package/dist-es/input-legacy/InputLegacy.js +3 -3
  473. package/dist-es/input-legacy/InputLegacy.js.map +1 -1
  474. package/dist-es/input-legacy/StaticInputAdornment.js +2 -2
  475. package/dist-es/input-legacy/StaticInputAdornment.js.map +1 -1
  476. package/dist-es/layer-layout/LayerLayout.js.map +1 -1
  477. package/dist-es/list/Highlighter.js +2 -2
  478. package/dist-es/list/Highlighter.js.map +1 -1
  479. package/dist-es/list/List.css.js +1 -1
  480. package/dist-es/list/List.js +3 -3
  481. package/dist-es/list/List.js.map +1 -1
  482. package/dist-es/list/ListItem.js +2 -2
  483. package/dist-es/list/ListItem.js.map +1 -1
  484. package/dist-es/list/VirtualizedList.js +4 -4
  485. package/dist-es/list/VirtualizedList.js.map +1 -1
  486. package/dist-es/list/useList.js +2 -2
  487. package/dist-es/list/useList.js.map +1 -1
  488. package/dist-es/list/useListHeight.js +1 -1
  489. package/dist-es/list-deprecated/List.css.js +1 -1
  490. package/dist-es/list-deprecated/List.js +2 -2
  491. package/dist-es/list-deprecated/List.js.map +1 -1
  492. package/dist-es/list-deprecated/ListBase.js +15 -19
  493. package/dist-es/list-deprecated/ListBase.js.map +1 -1
  494. package/dist-es/list-deprecated/ListItem.js +1 -1
  495. package/dist-es/list-deprecated/ListItem.js.map +1 -1
  496. package/dist-es/list-deprecated/ListItemBase.js +2 -2
  497. package/dist-es/list-deprecated/ListItemBase.js.map +1 -1
  498. package/dist-es/list-deprecated/internal/DescendantContext.js +7 -4
  499. package/dist-es/list-deprecated/internal/DescendantContext.js.map +1 -1
  500. package/dist-es/list-deprecated/internal/Highlighter.js +2 -2
  501. package/dist-es/list-deprecated/internal/Highlighter.js.map +1 -1
  502. package/dist-es/list-deprecated/itemToString.js +1 -1
  503. package/dist-es/list-deprecated/itemToString.js.map +1 -1
  504. package/dist-es/list-deprecated/useList.js.map +1 -1
  505. package/dist-es/list-next/ListItemNext.css.js +1 -1
  506. package/dist-es/list-next/ListItemNext.js +2 -2
  507. package/dist-es/list-next/ListItemNext.js.map +1 -1
  508. package/dist-es/list-next/ListNext.css.js +1 -1
  509. package/dist-es/list-next/ListNext.js.map +1 -1
  510. package/dist-es/logo/Logo.js +2 -2
  511. package/dist-es/logo/Logo.js.map +1 -1
  512. package/dist-es/logo/LogoSeparator.css.js +1 -1
  513. package/dist-es/logo/LogoSeparator.js +2 -2
  514. package/dist-es/logo/LogoSeparator.js.map +1 -1
  515. package/dist-es/menu-button/MenuButton.js +1 -1
  516. package/dist-es/menu-button/MenuButton.js.map +1 -1
  517. package/dist-es/menu-button/MenuButtonTrigger.js +2 -2
  518. package/dist-es/menu-button/MenuButtonTrigger.js.map +1 -1
  519. package/dist-es/metric/Metric.js +2 -2
  520. package/dist-es/metric/Metric.js.map +1 -1
  521. package/dist-es/metric/MetricContent.css.js +1 -1
  522. package/dist-es/metric/MetricContent.js +2 -2
  523. package/dist-es/metric/MetricContent.js.map +1 -1
  524. package/dist-es/metric/MetricHeader.js +2 -2
  525. package/dist-es/metric/MetricHeader.js.map +1 -1
  526. package/dist-es/number-input/NumberInput.css.js +1 -1
  527. package/dist-es/number-input/NumberInput.js +1 -1
  528. package/dist-es/number-input/NumberInput.js.map +1 -1
  529. package/dist-es/number-input/useNumberInput.js.map +1 -1
  530. package/dist-es/portal/Portal.js.map +1 -1
  531. package/dist-es/query-input/QueryInput.js +3 -3
  532. package/dist-es/query-input/QueryInput.js.map +1 -1
  533. package/dist-es/query-input/internal/CategoryList.js +1 -1
  534. package/dist-es/query-input/internal/CategoryListItem.js +1 -1
  535. package/dist-es/query-input/internal/QueryInputBody.js.map +1 -1
  536. package/dist-es/query-input/internal/SearchList.js +3 -3
  537. package/dist-es/query-input/internal/SearchList.js.map +1 -1
  538. package/dist-es/query-input/internal/ValueList.js +1 -1
  539. package/dist-es/query-input/internal/ValueSelector.js +1 -1
  540. package/dist-es/query-input/useQueryInput.js.map +1 -1
  541. package/dist-es/responsive/OverflowReducer.js.map +1 -1
  542. package/dist-es/responsive/useOverflowCollectionItems.js.map +1 -1
  543. package/dist-es/responsive/useOverflowLayout.js.map +1 -1
  544. package/dist-es/responsive/useWidth.js.map +1 -1
  545. package/dist-es/search-input/SearchInput.js +2 -2
  546. package/dist-es/search-input/SearchInput.js.map +1 -1
  547. package/dist-es/static-list/StaticList.css.js +1 -1
  548. package/dist-es/static-list/StaticList.js.map +1 -1
  549. package/dist-es/static-list/StaticListItemContent.js.map +1 -1
  550. package/dist-es/system-status/SystemStatus.css.js +1 -1
  551. package/dist-es/system-status/SystemStatus.js +2 -2
  552. package/dist-es/system-status/SystemStatus.js.map +1 -1
  553. package/dist-es/system-status/SystemStatusActions.js +2 -2
  554. package/dist-es/system-status/SystemStatusActions.js.map +1 -1
  555. package/dist-es/system-status/SystemStatusContent.js +2 -2
  556. package/dist-es/system-status/SystemStatusContent.js.map +1 -1
  557. package/dist-es/tabs/Tab.css.js +1 -1
  558. package/dist-es/tabs/Tab.js.map +1 -1
  559. package/dist-es/tabs/TabActivationIndicator.css.js +1 -1
  560. package/dist-es/tabs/TabActivationIndicator.js +2 -2
  561. package/dist-es/tabs/TabActivationIndicator.js.map +1 -1
  562. package/dist-es/tabs/TabPanel.js.map +1 -1
  563. package/dist-es/tabs/Tabs.js +3 -3
  564. package/dist-es/tabs/Tabs.js.map +1 -1
  565. package/dist-es/tabs/Tabstrip.css.js +1 -1
  566. package/dist-es/tabs/Tabstrip.js +5 -5
  567. package/dist-es/tabs/Tabstrip.js.map +1 -1
  568. package/dist-es/tabs/drag-drop/Draggable.js +2 -2
  569. package/dist-es/tabs/drag-drop/Draggable.js.map +1 -1
  570. package/dist-es/tabs/drag-drop/useDragDropNaturalMovement.js +2 -2
  571. package/dist-es/tabs/drag-drop/useDragDropNaturalMovement.js.map +1 -1
  572. package/dist-es/tabs/useActivationIndicator.js +1 -1
  573. package/dist-es/tabs/useActivationIndicator.js.map +1 -1
  574. package/dist-es/tabs/useItemsWithIds.js.map +1 -1
  575. package/dist-es/tabs/useTabstrip.js +1 -1
  576. package/dist-es/tabs/useTabstrip.js.map +1 -1
  577. package/dist-es/tabs-next/TabBar.css.js +1 -1
  578. package/dist-es/tabs-next/TabBar.js +2 -2
  579. package/dist-es/tabs-next/TabBar.js.map +1 -1
  580. package/dist-es/tabs-next/TabListNext.js +2 -2
  581. package/dist-es/tabs-next/TabListNext.js.map +1 -1
  582. package/dist-es/tabs-next/TabNext.css.js +1 -1
  583. package/dist-es/tabs-next/TabNext.js.map +1 -1
  584. package/dist-es/tabs-next/TabNextTrigger.js.map +1 -1
  585. package/dist-es/tabs-next/TabOverflowList.css.js +1 -1
  586. package/dist-es/tabs-next/TabOverflowList.js +1 -1
  587. package/dist-es/tabs-next/TabOverflowList.js.map +1 -1
  588. package/dist-es/tabs-next/TabsNext.js +2 -2
  589. package/dist-es/tabs-next/TabsNext.js.map +1 -1
  590. package/dist-es/tokenized-input/TokenizedInputBase.js +2 -2
  591. package/dist-es/tokenized-input/TokenizedInputBase.js.map +1 -1
  592. package/dist-es/tokenized-input/internal/InputPill.js.map +1 -1
  593. package/dist-es/tokenized-input/internal/InputRuler.js.map +1 -1
  594. package/dist-es/tokenized-input/internal/calcFirstHiddenIndex.js.map +1 -1
  595. package/dist-es/tokenized-input/internal/defaultItemToString.js +1 -1
  596. package/dist-es/tokenized-input/internal/defaultItemToString.js.map +1 -1
  597. package/dist-es/tokenized-input/useTokenizedInput.js.map +1 -1
  598. package/dist-es/tokenized-input-next/TokenizedInputNext.css.js +1 -1
  599. package/dist-es/tokenized-input-next/TokenizedInputNext.js +1 -1
  600. package/dist-es/tokenized-input-next/TokenizedInputNext.js.map +1 -1
  601. package/dist-es/tokenized-input-next/internal/InputPill.js.map +1 -1
  602. package/dist-es/tokenized-input-next/internal/calcFirstHiddenIndex.js.map +1 -1
  603. package/dist-es/tokenized-input-next/useTokenizedInputNext.js.map +1 -1
  604. package/dist-es/toolbar/Toolbar.css.js +1 -1
  605. package/dist-es/toolbar/Toolbar.js +6 -6
  606. package/dist-es/toolbar/Toolbar.js.map +1 -1
  607. package/dist-es/toolbar/ToolbarButton.js +1 -1
  608. package/dist-es/toolbar/ToolbarButton.js.map +1 -1
  609. package/dist-es/toolbar/Tooltray.js +3 -3
  610. package/dist-es/toolbar/Tooltray.js.map +1 -1
  611. package/dist-es/toolbar/internal/renderToolbarItems.js +3 -3
  612. package/dist-es/toolbar/internal/renderToolbarItems.js.map +1 -1
  613. package/dist-es/toolbar/internal/renderTrayTools.js.map +1 -1
  614. package/dist-es/toolbar/overflow-panel/OverflowPanel.css.js +1 -1
  615. package/dist-es/toolbar/overflow-panel/OverflowPanel.js +5 -5
  616. package/dist-es/toolbar/overflow-panel/OverflowPanel.js.map +1 -1
  617. package/dist-es/toolbar/toolbar-field/ToolbarField.js +1 -1
  618. package/dist-es/toolbar/toolbar-field/ToolbarField.js.map +1 -1
  619. package/dist-es/toolbar/toolbar-field/useToolbarField.js.map +1 -1
  620. package/dist-es/tree/Tree.js +4 -4
  621. package/dist-es/tree/Tree.js.map +1 -1
  622. package/dist-es/tree/TreeNode.js +2 -2
  623. package/dist-es/tree/TreeNode.js.map +1 -1
  624. package/dist-es/tree/useTree.js +2 -2
  625. package/dist-es/tree/useTree.js.map +1 -1
  626. package/dist-es/utils/useEventCallback.js +1 -1
  627. package/dist-es/utils/useEventCallback.js.map +1 -1
  628. package/dist-es/window/ElectronWindow.js +4 -4
  629. package/dist-es/window/ElectronWindow.js.map +1 -1
  630. package/dist-types/button-bar/ButtonBar.d.ts +1 -1
  631. package/dist-types/calendar/Calendar.d.ts +43 -7
  632. package/dist-types/calendar/CalendarGrid.d.ts +2 -2
  633. package/dist-types/calendar/CalendarMonthHeader.d.ts +1 -1
  634. package/dist-types/calendar/index.d.ts +3 -3
  635. package/dist-types/calendar/useCalendar.d.ts +23 -24
  636. package/dist-types/calendar/useCalendarSelection.d.ts +152 -58
  637. package/dist-types/color-chooser/index.d.ts +4 -4
  638. package/dist-types/combo-box/ComboBox.d.ts +1 -1
  639. package/dist-types/combo-box-deprecated/internal/useComboBox.d.ts +1 -1
  640. package/dist-types/combo-box-deprecated/internal/useMultiSelectComboBox.d.ts +2 -2
  641. package/dist-types/common-hooks/index.d.ts +2 -2
  642. package/dist-types/contact-details/index.d.ts +1 -1
  643. package/dist-types/contact-details/internal/index.d.ts +1 -1
  644. package/dist-types/content-status/internal/StatusIndicator.d.ts +1 -2
  645. package/dist-types/date-input/index.d.ts +1 -1
  646. package/dist-types/date-picker/DatePickerRangeGridPanel.d.ts +2 -3
  647. package/dist-types/date-picker/DatePickerSingleGridPanel.d.ts +1 -2
  648. package/dist-types/date-picker/index.d.ts +3 -3
  649. package/dist-types/dropdown/index.d.ts +1 -1
  650. package/dist-types/index.d.ts +5 -5
  651. package/dist-types/list/index.d.ts +3 -3
  652. package/dist-types/list-deprecated/index.d.ts +3 -3
  653. package/dist-types/list-deprecated/internal/DescendantContext.d.ts +13 -6
  654. package/dist-types/list-next/index.d.ts +1 -1
  655. package/dist-types/metric/index.d.ts +1 -1
  656. package/dist-types/metric/internal/index.d.ts +1 -1
  657. package/dist-types/number-input/index.d.ts +1 -1
  658. package/dist-types/query-input/index.d.ts +1 -1
  659. package/dist-types/query-input/useQueryInput.d.ts +1 -1
  660. package/dist-types/responsive/index.d.ts +5 -5
  661. package/dist-types/system-status/index.d.ts +1 -1
  662. package/dist-types/tabs/index.d.ts +2 -2
  663. package/dist-types/tabs/useTabstrip.d.ts +1 -1
  664. package/dist-types/tabs-next/index.d.ts +4 -4
  665. package/dist-types/toolbar/index.d.ts +1 -1
  666. package/dist-types/utils/index.d.ts +1 -1
  667. package/dist-types/window/index.d.ts +1 -1
  668. package/package.json +7 -6
@@ -2,8 +2,11 @@ import { jsx } from 'react/jsx-runtime';
2
2
  import { useIsomorphicLayoutEffect } from '@salt-ds/core';
3
3
  import { createContext, useRef, useState, useContext } from 'react';
4
4
 
5
- const DescendantContext = createContext();
6
- function DescendantProvider({ items, ...props }) {
5
+ const DescendantContext = createContext({});
6
+ function DescendantProvider({
7
+ items,
8
+ ...props
9
+ }) {
7
10
  const assigning = useRef(true);
8
11
  const [, forceUpdate] = useState();
9
12
  useIsomorphicLayoutEffect(() => {
@@ -14,7 +17,7 @@ function DescendantProvider({ items, ...props }) {
14
17
  assigning.current = true;
15
18
  }
16
19
  return () => {
17
- if (assigning.current) {
20
+ if (assigning.current && items) {
18
21
  items.current = [];
19
22
  }
20
23
  };
@@ -25,7 +28,7 @@ function useDescendant(descendant) {
25
28
  const { assigning, items } = useContext(DescendantContext);
26
29
  const index = useRef(-1);
27
30
  useIsomorphicLayoutEffect(() => {
28
- if (assigning.current) {
31
+ if ((assigning == null ? void 0 : assigning.current) && (items == null ? void 0 : items.current)) {
29
32
  index.current = items.current.push(descendant) - 1;
30
33
  }
31
34
  });
@@ -1 +1 @@
1
- {"version":3,"file":"DescendantContext.js","sources":["../src/list-deprecated/internal/DescendantContext.jsx"],"sourcesContent":["import { useIsomorphicLayoutEffect } from \"@salt-ds/core\";\nimport { createContext, useContext, useRef, useState } from \"react\";\n\n// //////////////////////////////////////////////////////////////////////////////\n// SUPER HACKS AHEAD: The React team will hate this enough to hopefully give us\n// a way to know the index of a descendant given a parent (will help generate\n// IDs for accessibility a long with the ability create maximally composable\n// component abstractions).\n//\n// This is all to avoid cloneElement. If we can avoid cloneElement then people\n// can have arbitrary markup around MenuItems. This basically takes advantage\n// of react's render lifecycles to let us \"register\" descendants to an\n// ancestor, so that we can track all the descendants and manage focus on them,\n// etc. The super hacks here are for the child to know it's index as well, so\n// that it can set attributes, match against state from above, etc.\nexport const DescendantContext = createContext();\n\nexport function DescendantProvider({ items, ...props }) {\n // On the first render we say we're \"assigning\", and the children will push\n // into the array when they show up in their own useLayoutEffect.\n const assigning = useRef(true);\n\n // since children are pushed into the array in useLayoutEffect of the child,\n // children can't read their index on first render. So we need to cause a\n // second render so they can read their index.\n const [, forceUpdate] = useState();\n\n // parent useLayoutEffect is always last\n useIsomorphicLayoutEffect(() => {\n if (assigning.current) {\n // At this point all of the children have pushed into the array so we set\n // assigning to false and force an update. Since we're in\n // useLayoutEffect, we won't get a flash of rendered content, it will all\n // happen synchronously. And now that this is false, children won't push\n // into the array on the forceUpdate\n assigning.current = false;\n forceUpdate({});\n } else {\n // After the forceUpdate completes, we end up here and set assigning back\n // to true for the next update from the app\n assigning.current = true;\n }\n return () => {\n // this cleanup function runs right before the next render, so it's the\n // right time to empty out the array to be reassigned with whatever shows\n // up next render.\n if (assigning.current) {\n // we only want to empty out the array before the next render cycle if\n // it was NOT the result of our forceUpdate, so being guarded behind\n // assigning.current works\n items.current = [];\n }\n };\n }, [items]);\n\n return <DescendantContext.Provider {...props} value={{ items, assigning }} />;\n}\n\nexport function useDescendant(descendant) {\n const { assigning, items } = useContext(DescendantContext);\n const index = useRef(-1);\n\n useIsomorphicLayoutEffect(() => {\n if (assigning.current) {\n index.current = items.current.push(descendant) - 1;\n }\n });\n\n // first render its wrong, after a forceUpdate in parent useLayoutEffect it's\n // right, and its all synchronous so we don't get any flashing\n return index.current;\n}\n"],"names":[],"mappings":";;;;AAeO,MAAM,oBAAoB,aAAc;AAExC,SAAS,kBAAmB,CAAA,EAAE,KAAO,EAAA,GAAG,OAAS,EAAA;AAGtD,EAAM,MAAA,SAAA,GAAY,OAAO,IAAI,CAAA;AAK7B,EAAA,MAAM,GAAG,WAAW,CAAA,GAAI,QAAS,EAAA;AAGjC,EAAA,yBAAA,CAA0B,MAAM;AAC9B,IAAA,IAAI,UAAU,OAAS,EAAA;AAMrB,MAAA,SAAA,CAAU,OAAU,GAAA,KAAA;AACpB,MAAA,WAAA,CAAY,EAAE,CAAA;AAAA,KACT,MAAA;AAGL,MAAA,SAAA,CAAU,OAAU,GAAA,IAAA;AAAA;AAEtB,IAAA,OAAO,MAAM;AAIX,MAAA,IAAI,UAAU,OAAS,EAAA;AAIrB,QAAA,KAAA,CAAM,UAAU,EAAC;AAAA;AACnB,KACF;AAAA,GACF,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,EAAO,uBAAA,GAAA,CAAC,iBAAkB,CAAA,QAAA,EAAlB,EAA4B,GAAG,OAAO,KAAO,EAAA,EAAE,KAAO,EAAA,SAAA,EAAa,EAAA,CAAA;AAC7E;AAEO,SAAS,cAAc,UAAY,EAAA;AACxC,EAAA,MAAM,EAAE,SAAA,EAAW,KAAM,EAAA,GAAI,WAAW,iBAAiB,CAAA;AACzD,EAAM,MAAA,KAAA,GAAQ,OAAO,EAAE,CAAA;AAEvB,EAAA,yBAAA,CAA0B,MAAM;AAC9B,IAAA,IAAI,UAAU,OAAS,EAAA;AACrB,MAAA,KAAA,CAAM,OAAU,GAAA,KAAA,CAAM,OAAQ,CAAA,IAAA,CAAK,UAAU,CAAI,GAAA,CAAA;AAAA;AACnD,GACD,CAAA;AAID,EAAA,OAAO,KAAM,CAAA,OAAA;AACf;;;;"}
1
+ {"version":3,"file":"DescendantContext.js","sources":["../src/list-deprecated/internal/DescendantContext.tsx"],"sourcesContent":["import { useIsomorphicLayoutEffect } from \"@salt-ds/core\";\nimport {\n createContext,\n type MutableRefObject,\n type ReactNode,\n useContext,\n useRef,\n useState,\n} from \"react\";\n\n// //////////////////////////////////////////////////////////////////////////////\n// SUPER HACKS AHEAD: The React team will hate this enough to hopefully give us\n// a way to know the index of a descendant given a parent (will help generate\n// IDs for accessibility a long with the ability create maximally composable\n// component abstractions).\n//\n// This is all to avoid cloneElement. If we can avoid cloneElement then people\n// can have arbitrary markup around MenuItems. This basically takes advantage\n// of react's render lifecycles to let us \"register\" descendants to an\n// ancestor, so that we can track all the descendants and manage focus on them,\n// etc. The super hacks here are for the child to know it's index as well, so\n// that it can set attributes, match against state from above, etc.\ninterface DescendantProviderProps {\n children?: ReactNode;\n items?: MutableRefObject<unknown[]>;\n}\n\ninterface DescendantContextType {\n assigning?: MutableRefObject<boolean>;\n items?: DescendantProviderProps[\"items\"];\n}\n\nexport const DescendantContext = createContext<DescendantContextType>({});\n\nexport function DescendantProvider({\n items,\n ...props\n}: DescendantProviderProps) {\n // On the first render we say we're \"assigning\", and the children will push\n // into the array when they show up in their own useLayoutEffect.\n const assigning = useRef(true);\n\n // since children are pushed into the array in useLayoutEffect of the child,\n // children can't read their index on first render. So we need to cause a\n // second render so they can read their index.\n const [, forceUpdate] = useState<unknown>();\n\n // parent useLayoutEffect is always last\n useIsomorphicLayoutEffect(() => {\n if (assigning.current) {\n // At this point all of the children have pushed into the array so we set\n // assigning to false and force an update. Since we're in\n // useLayoutEffect, we won't get a flash of rendered content, it will all\n // happen synchronously. And now that this is false, children won't push\n // into the array on the forceUpdate\n assigning.current = false;\n forceUpdate({});\n } else {\n // After the forceUpdate completes, we end up here and set assigning back\n // to true for the next update from the app\n assigning.current = true;\n }\n return () => {\n // this cleanup function runs right before the next render, so it's the\n // right time to empty out the array to be reassigned with whatever shows\n // up next render.\n if (assigning.current && items) {\n // we only want to empty out the array before the next render cycle if\n // it was NOT the result of our forceUpdate, so being guarded behind\n // assigning.current works\n items.current = [];\n }\n };\n }, [items]);\n\n return <DescendantContext.Provider {...props} value={{ items, assigning }} />;\n}\n\nexport function useDescendant(descendant: unknown) {\n const { assigning, items } = useContext(DescendantContext);\n const index = useRef(-1);\n\n useIsomorphicLayoutEffect(() => {\n if (assigning?.current && items?.current) {\n index.current = items.current.push(descendant) - 1;\n }\n });\n\n // first render its wrong, after a forceUpdate in parent useLayoutEffect it's\n // right, and its all synchronous so we don't get any flashing\n return index.current;\n}\n"],"names":[],"mappings":";;;;AAgCa,MAAA,iBAAA,GAAoB,aAAqC,CAAA,EAAE;AAEjE,SAAS,kBAAmB,CAAA;AAAA,EACjC,KAAA;AAAA,EACA,GAAG;AACL,CAA4B,EAAA;AAG1B,EAAM,MAAA,SAAA,GAAY,OAAO,IAAI,CAAA;AAK7B,EAAA,MAAM,GAAG,WAAW,CAAA,GAAI,QAAkB,EAAA;AAG1C,EAAA,yBAAA,CAA0B,MAAM;AAC9B,IAAA,IAAI,UAAU,OAAS,EAAA;AAMrB,MAAA,SAAA,CAAU,OAAU,GAAA,KAAA;AACpB,MAAA,WAAA,CAAY,EAAE,CAAA;AAAA,KACT,MAAA;AAGL,MAAA,SAAA,CAAU,OAAU,GAAA,IAAA;AAAA;AAEtB,IAAA,OAAO,MAAM;AAIX,MAAI,IAAA,SAAA,CAAU,WAAW,KAAO,EAAA;AAI9B,QAAA,KAAA,CAAM,UAAU,EAAC;AAAA;AACnB,KACF;AAAA,GACF,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,EAAO,uBAAA,GAAA,CAAC,iBAAkB,CAAA,QAAA,EAAlB,EAA4B,GAAG,OAAO,KAAO,EAAA,EAAE,KAAO,EAAA,SAAA,EAAa,EAAA,CAAA;AAC7E;AAEO,SAAS,cAAc,UAAqB,EAAA;AACjD,EAAA,MAAM,EAAE,SAAA,EAAW,KAAM,EAAA,GAAI,WAAW,iBAAiB,CAAA;AACzD,EAAM,MAAA,KAAA,GAAQ,OAAO,EAAE,CAAA;AAEvB,EAAA,yBAAA,CAA0B,MAAM;AAC9B,IAAI,IAAA,CAAA,SAAA,IAAA,IAAA,GAAA,MAAA,GAAA,SAAA,CAAW,OAAW,MAAA,KAAA,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAO,OAAS,CAAA,EAAA;AACxC,MAAA,KAAA,CAAM,OAAU,GAAA,KAAA,CAAM,OAAQ,CAAA,IAAA,CAAK,UAAU,CAAI,GAAA,CAAA;AAAA;AACnD,GACD,CAAA;AAID,EAAA,OAAO,KAAM,CAAA,OAAA;AACf;;;;"}
@@ -1,9 +1,9 @@
1
1
  import { jsx, Fragment } from 'react/jsx-runtime';
2
+ import { useComponentCssInjection } from '@salt-ds/styles';
3
+ import { useWindow } from '@salt-ds/window';
2
4
  import { escapeRegExp } from '../../utils/escapeRegExp.js';
3
5
  import 'react';
4
6
  import '@salt-ds/core';
5
- import { useComponentCssInjection } from '@salt-ds/styles';
6
- import { useWindow } from '@salt-ds/window';
7
7
  import css_248z from './Highlighter.css.js';
8
8
 
9
9
  const baseName = "saltHighlighter";
@@ -1 +1 @@
1
- {"version":3,"file":"Highlighter.js","sources":["../src/list-deprecated/internal/Highlighter.jsx"],"sourcesContent":["import { escapeRegExp } from \"../../utils\";\n\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport highlighterCss from \"./Highlighter.css\";\n\nconst baseName = \"saltHighlighter\";\n\nexport const Highlighter = (props) => {\n const { matchPattern, text = \"\" } = props;\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-highligher-deprecated\",\n css: highlighterCss,\n window: targetWindow,\n });\n const matchRegex =\n typeof matchPattern === \"string\"\n ? new RegExp(`(${escapeRegExp(matchPattern)})`, \"gi\")\n : matchPattern;\n return (\n <>\n {text.split(matchRegex).map((part, index) =>\n part.match(matchRegex) ? (\n <strong className={`${baseName}-highlight`} key={`${index}-${part}`}>\n {part}\n </strong>\n ) : (\n part\n ),\n )}\n </>\n );\n};\n"],"names":["highlighterCss"],"mappings":";;;;;;;;AAMA,MAAM,QAAW,GAAA,iBAAA;AAEJ,MAAA,WAAA,GAAc,CAAC,KAAU,KAAA;AACpC,EAAA,MAAM,EAAE,YAAA,EAAc,IAAO,GAAA,EAAA,EAAO,GAAA,KAAA;AACpC,EAAA,MAAM,eAAe,SAAU,EAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,4BAAA;AAAA,IACR,GAAK,EAAAA,QAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AACD,EAAA,MAAM,UACJ,GAAA,OAAO,YAAiB,KAAA,QAAA,GACpB,IAAI,MAAA,CAAO,CAAI,CAAA,EAAA,YAAA,CAAa,YAAY,CAAC,CAAK,CAAA,CAAA,EAAA,IAAI,CAClD,GAAA,YAAA;AACN,EAAA,uBAEK,GAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA,IAAA,CAAK,KAAM,CAAA,UAAU,CAAE,CAAA,GAAA;AAAA,IAAI,CAAC,IAAM,EAAA,KAAA,KACjC,KAAK,KAAM,CAAA,UAAU,oBAClB,GAAA,CAAA,QAAA,EAAA,EAAO,WAAW,CAAG,EAAA,QAAQ,cAC3B,QAD8C,EAAA,IAAA,EAAA,EAAA,CAAA,EAAG,KAAK,CAAI,CAAA,EAAA,IAAI,EAEjE,CAEA,GAAA;AAAA,GAGN,EAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"Highlighter.js","sources":["../src/list-deprecated/internal/Highlighter.jsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { escapeRegExp } from \"../../utils\";\nimport highlighterCss from \"./Highlighter.css\";\n\nconst baseName = \"saltHighlighter\";\n\nexport const Highlighter = (props) => {\n const { matchPattern, text = \"\" } = props;\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-highligher-deprecated\",\n css: highlighterCss,\n window: targetWindow,\n });\n const matchRegex =\n typeof matchPattern === \"string\"\n ? new RegExp(`(${escapeRegExp(matchPattern)})`, \"gi\")\n : matchPattern;\n return (\n <>\n {text.split(matchRegex).map((part, index) =>\n part.match(matchRegex) ? (\n <strong className={`${baseName}-highlight`} key={`${index}-${part}`}>\n {part}\n </strong>\n ) : (\n part\n ),\n )}\n </>\n );\n};\n"],"names":["highlighterCss"],"mappings":";;;;;;;;AAKA,MAAM,QAAW,GAAA,iBAAA;AAEJ,MAAA,WAAA,GAAc,CAAC,KAAU,KAAA;AACpC,EAAA,MAAM,EAAE,YAAA,EAAc,IAAO,GAAA,EAAA,EAAO,GAAA,KAAA;AACpC,EAAA,MAAM,eAAe,SAAU,EAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,4BAAA;AAAA,IACR,GAAK,EAAAA,QAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AACD,EAAA,MAAM,UACJ,GAAA,OAAO,YAAiB,KAAA,QAAA,GACpB,IAAI,MAAA,CAAO,CAAI,CAAA,EAAA,YAAA,CAAa,YAAY,CAAC,CAAK,CAAA,CAAA,EAAA,IAAI,CAClD,GAAA,YAAA;AACN,EAAA,uBAEK,GAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA,IAAA,CAAK,KAAM,CAAA,UAAU,CAAE,CAAA,GAAA;AAAA,IAAI,CAAC,IAAM,EAAA,KAAA,KACjC,KAAK,KAAM,CAAA,UAAU,oBAClB,GAAA,CAAA,QAAA,EAAA,EAAO,WAAW,CAAG,EAAA,QAAQ,cAC3B,QAD8C,EAAA,IAAA,EAAA,EAAA,CAAA,EAAG,KAAK,CAAI,CAAA,EAAA,IAAI,EAEjE,CAEA,GAAA;AAAA,GAGN,EAAA,CAAA;AAEJ;;;;"}
@@ -4,7 +4,7 @@ function itemToString(item) {
4
4
  if (!isPlainObject(item)) {
5
5
  return String(item);
6
6
  }
7
- if (Object.prototype.hasOwnProperty.call(item, "label")) {
7
+ if (Object.hasOwn(item, "label")) {
8
8
  return String(item.label);
9
9
  }
10
10
  console.warn(
@@ -1 +1 @@
1
- {"version":3,"file":"itemToString.js","sources":["../src/list-deprecated/itemToString.ts"],"sourcesContent":["import { isPlainObject } from \"./internal/helpers\";\n\nexport type ItemToStringFunction = (item: any) => string;\n\nexport function itemToString(item: any) {\n if (!isPlainObject(item)) {\n return String(item);\n }\n\n if (Object.prototype.hasOwnProperty.call(item, \"label\")) {\n return String(item.label);\n }\n\n console.warn(\n [\n \"itemToString: you've likely forgotten to set the label prop on the item object.\",\n \"You can also provide your own `itemToString` implementation.\",\n ].join(\"\\n\"),\n );\n\n return \"\";\n}\n"],"names":[],"mappings":";;AAIO,SAAS,aAAa,IAAW,EAAA;AACtC,EAAI,IAAA,CAAC,aAAc,CAAA,IAAI,CAAG,EAAA;AACxB,IAAA,OAAO,OAAO,IAAI,CAAA;AAAA;AAGpB,EAAA,IAAI,OAAO,SAAU,CAAA,cAAA,CAAe,IAAK,CAAA,IAAA,EAAM,OAAO,CAAG,EAAA;AACvD,IAAO,OAAA,MAAA,CAAO,KAAK,KAAK,CAAA;AAAA;AAG1B,EAAQ,OAAA,CAAA,IAAA;AAAA,IACN;AAAA,MACE,iFAAA;AAAA,MACA;AAAA,KACF,CAAE,KAAK,IAAI;AAAA,GACb;AAEA,EAAO,OAAA,EAAA;AACT;;;;"}
1
+ {"version":3,"file":"itemToString.js","sources":["../src/list-deprecated/itemToString.ts"],"sourcesContent":["import { isPlainObject } from \"./internal/helpers\";\n\nexport type ItemToStringFunction = (item: any) => string;\n\nexport function itemToString(item: any) {\n if (!isPlainObject(item)) {\n return String(item);\n }\n\n if (Object.hasOwn(item, \"label\")) {\n return String(item.label);\n }\n\n console.warn(\n [\n \"itemToString: you've likely forgotten to set the label prop on the item object.\",\n \"You can also provide your own `itemToString` implementation.\",\n ].join(\"\\n\"),\n );\n\n return \"\";\n}\n"],"names":[],"mappings":";;AAIO,SAAS,aAAa,IAAW,EAAA;AACtC,EAAI,IAAA,CAAC,aAAc,CAAA,IAAI,CAAG,EAAA;AACxB,IAAA,OAAO,OAAO,IAAI,CAAA;AAAA;AAGpB,EAAA,IAAI,MAAO,CAAA,MAAA,CAAO,IAAM,EAAA,OAAO,CAAG,EAAA;AAChC,IAAO,OAAA,MAAA,CAAO,KAAK,KAAK,CAAA;AAAA;AAG1B,EAAQ,OAAA,CAAA,IAAA;AAAA,IACN;AAAA,MACE,iFAAA;AAAA,MACA;AAAA,KACF,CAAE,KAAK,IAAI;AAAA,GACb;AAEA,EAAO,OAAA,EAAA;AACT;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useList.js","sources":["../src/list-deprecated/useList.ts"],"sourcesContent":["import {\n ownerDocument,\n useControlled,\n useForkRef,\n useId,\n useIsFocusVisible,\n} from \"@salt-ds/core\";\n\nimport {\n type AriaAttributes,\n type Dispatch,\n type FocusEvent,\n type KeyboardEvent,\n type KeyboardEventHandler,\n type MouseEvent,\n type Ref,\n type SetStateAction,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport type {\n ListMultiSelectionVariant,\n ListProps,\n ListSelectionVariant,\n} from \"./ListProps\";\n\ntype keyHandler = (event: KeyboardEvent<HTMLInputElement>) => void;\n\ninterface listBoxAriaProps\n extends Pick<\n AriaAttributes,\n \"aria-activedescendant\" | \"aria-multiselectable\"\n > {\n role: string; // We will default it to be 'listbox', but users can override\n}\nexport interface ListState<\n Item = string,\n Variant extends ListSelectionVariant = \"default\",\n> {\n id?: string;\n focusVisible: boolean;\n selectedItem?: Variant extends ListMultiSelectionVariant ? Array<Item> : Item;\n highlightedIndex?: number;\n isDeselectable: boolean;\n isMultiSelect: boolean;\n isDisabled: boolean;\n}\n\nexport interface ListHelpers<\n Item = string,\n Variant extends ListSelectionVariant = \"default\",\n> {\n setFocusVisible: (visible: boolean) => void;\n setSelectedItem: Dispatch<\n SetStateAction<\n (Variant extends ListMultiSelectionVariant ? Item[] : Item) | undefined\n >\n >;\n setHighlightedIndex: (highlightedIndex?: number) => void;\n handleSelect: (\n event: MouseEvent<HTMLElement> | KeyboardEvent<HTMLElement>,\n index: number | undefined,\n item: Item,\n ) => void;\n keyDownHandlers: { [key: string]: KeyboardEventHandler };\n // TODO: Form Field\n}\n\nexport function useList<Item, Variant extends ListSelectionVariant>(\n props: ListProps<Item, Variant> = {},\n): {\n focusedRef: Ref<any>;\n listProps: Partial<ListProps<Item, Variant>> & listBoxAriaProps;\n state: ListState<Item, Variant>;\n helpers: ListHelpers<Item, Variant>;\n} {\n validateProps(props);\n\n const generatedId = useId(props.id);\n\n const {\n id = generatedId,\n source = [],\n itemCount = source.length,\n getItemId = (index) => `${id}-item-${index}`,\n getItemAtIndex: getItemAtIndexProp,\n getItemIndex: getItemIndexProp,\n displayedItemCount = 10,\n initialSelectedItem,\n selectionVariant,\n disabled = false,\n onBlur,\n onChange,\n onFocus,\n onKeyDown,\n onMouseDown,\n onMouseLeave,\n onSelect,\n disableMouseDown,\n restoreLastFocus,\n highlightedIndex: highlightedIndexProp,\n selectedItem: selectedItemProp,\n tabToSelect,\n ...restProps\n } = props;\n\n const {\n isFocusVisibleRef,\n onFocus: handleFocusVisible,\n onBlur: handleBlurVisible,\n ref: focusVisibleRef,\n } = useIsFocusVisible();\n\n const { current: isDeselectable } = useRef(\n selectionVariant === \"deselectable\",\n );\n const { current: isMultiSelect } = useRef(\n selectionVariant === \"multiple\" ||\n selectionVariant === \"extended\" ||\n Array.isArray(initialSelectedItem) ||\n Array.isArray(selectedItemProp),\n );\n\n const { current: isExtendedSelect } = useRef(selectionVariant === \"extended\");\n\n let getItemIndex = useCallback(\n (item: Item) => source.indexOf(item),\n [source],\n );\n let getItemAtIndex = useCallback((index: number) => source[index], [source]);\n\n const indexComparator = useCallback(\n (a: Item, b: Item) => getItemIndex(a) - getItemIndex(b),\n [getItemIndex],\n );\n\n // Only use getItemIndex and getItemAtIndex if both are defined; otherwise keep the defaults\n if (\n typeof getItemIndexProp === \"function\" &&\n typeof getItemAtIndexProp === \"function\"\n ) {\n getItemIndex = getItemIndexProp;\n getItemAtIndex = getItemAtIndexProp;\n }\n\n const rootRef = useRef();\n const [focusVisible, setFocusVisible] = useState(false);\n const [lastFocusedIndex, setLastFocusedIndex] = useState(-1);\n\n const [selectedItem, setSelectedItem] = useControlled<\n undefined | (Variant extends ListMultiSelectionVariant ? Item[] : Item)\n >({\n controlled: selectedItemProp,\n default:\n initialSelectedItem ??\n ((isMultiSelect\n ? []\n : null) as unknown as Variant extends ListMultiSelectionVariant\n ? Item[]\n : Item),\n name: \"useList\",\n state: \"selectedItem\",\n });\n\n const [highlightedIndex, setHighlightedIndex] = useControlled<\n number | undefined\n >({\n controlled: highlightedIndexProp,\n default: undefined,\n name: \"useList\",\n state: \"highlightedIndex\",\n });\n\n const handleSingleSelect = useCallback(\n (\n event: MouseEvent<HTMLElement> | KeyboardEvent<HTMLElement>,\n index: number | undefined,\n item: Item,\n ) => {\n const isSelected = item === selectedItem;\n let nextItem: Item | null;\n\n if (isSelected && !isDeselectable) {\n return;\n }\n\n if (!isSelected) {\n nextItem = item;\n setHighlightedIndex(index);\n } else {\n nextItem = null;\n }\n\n setSelectedItem(\n nextItem as Variant extends ListMultiSelectionVariant ? Item[] : Item,\n );\n\n if (onChange) {\n onChange(\n event,\n nextItem as Variant extends ListMultiSelectionVariant ? Item[] : Item,\n );\n }\n },\n [isDeselectable, onChange, selectedItem],\n );\n\n const handleMultiSelect = useCallback(\n (\n event: MouseEvent<HTMLElement> | KeyboardEvent<HTMLElement>,\n index: number | undefined,\n item: Item,\n ) => {\n const isSelected = (selectedItem as Item[]).indexOf(item as Item) !== -1;\n let nextItems = selectedItem as Item[];\n\n if (!isSelected) {\n nextItems = nextItems.concat([item]).sort(indexComparator);\n setHighlightedIndex(index);\n } else {\n nextItems = nextItems.filter((selected) => selected !== item);\n }\n\n setSelectedItem(\n nextItems as Variant extends ListMultiSelectionVariant ? Item[] : Item,\n );\n\n if (onChange) {\n onChange(\n event,\n nextItems as Variant extends ListMultiSelectionVariant\n ? Item[]\n : Item,\n );\n }\n },\n [indexComparator, onChange, selectedItem],\n );\n\n const handleRangeSelect = useCallback(\n (\n event: MouseEvent<HTMLElement> | KeyboardEvent<HTMLElement>,\n index?: number,\n ) => {\n const currentSelection =\n event.ctrlKey || event.metaKey ? selectedItem : ([] as Item[]);\n\n const lastSelectedItemIndex =\n (selectedItem as Item[]).length > 0\n ? getItemIndex(\n (selectedItem as Item[])[(selectedItem as Item[]).length - 1],\n )\n : 0;\n\n const startRegion = Math.min(\n index ?? lastSelectedItemIndex,\n lastSelectedItemIndex,\n );\n const endRegion = Math.max(\n index ?? lastSelectedItemIndex,\n lastSelectedItemIndex,\n );\n const rangeSelection = source.slice(startRegion, endRegion + 1);\n // concat the current selection with a new selection and remove duplicates for overlaps\n const nextItems = [\n ...new Set([...(currentSelection as Item[]), ...rangeSelection]),\n ];\n // remove text selection caused by shift clicking\n ownerDocument(event.currentTarget).getSelection()?.removeAllRanges();\n setSelectedItem(\n nextItems as Variant extends ListMultiSelectionVariant ? Item[] : Item,\n );\n\n if (onChange) {\n onChange(\n event,\n nextItems as Variant extends ListMultiSelectionVariant\n ? Item[]\n : Item,\n );\n }\n },\n [getItemIndex, onChange, selectedItem, source],\n );\n\n const handleExtendedSelect = useCallback(\n (\n event: MouseEvent<HTMLElement> | KeyboardEvent<HTMLElement>,\n index: number | undefined,\n item: Item,\n ) => {\n let nextItems = selectedItem as Item[];\n if (event.shiftKey) {\n handleRangeSelect(event, index);\n } else if (\n (selectedItem as Item[]).length === 0 ||\n event.ctrlKey ||\n event.metaKey\n ) {\n console.log(\"handleMulti\");\n handleMultiSelect(event, index, item);\n } else {\n nextItems = [item] as Item[];\n setSelectedItem(\n nextItems as Variant extends ListMultiSelectionVariant\n ? Item[]\n : Item,\n );\n\n if (onChange) {\n onChange(\n event,\n nextItems as Variant extends ListMultiSelectionVariant\n ? Item[]\n : Item,\n );\n }\n }\n },\n [handleMultiSelect, handleRangeSelect, onChange, selectedItem],\n );\n\n const handleSelect = useCallback(\n (\n event: MouseEvent<HTMLElement> | KeyboardEvent<HTMLElement>,\n index: number | undefined,\n item: Item | null,\n ) => {\n if (item == null || (item as any).disabled) {\n return;\n }\n\n if (onSelect) {\n console.log(\"onSelect\");\n onSelect(event, item);\n }\n\n if (isExtendedSelect) {\n handleExtendedSelect(event, index, item);\n } else if (isMultiSelect) {\n handleMultiSelect(event, index, item);\n } else {\n handleSingleSelect(event, index, item);\n }\n },\n [\n handleExtendedSelect,\n handleMultiSelect,\n handleSingleSelect,\n isExtendedSelect,\n isMultiSelect,\n onSelect,\n ],\n );\n\n const saveFocusedIndex = (index: number) => {\n setLastFocusedIndex(index);\n return index;\n };\n\n const keyDownHandlers: { [key: string]: keyHandler } = {\n ArrowUp: (event) => {\n event.preventDefault();\n setHighlightedIndex((prevHighlightedIndex?: number) =>\n saveFocusedIndex(Math.max(0, (prevHighlightedIndex ?? itemCount) - 1)),\n );\n },\n ArrowDown: (event) => {\n event.preventDefault();\n setHighlightedIndex((prevHighlightedIndex?: number) =>\n saveFocusedIndex(\n Math.min(itemCount - 1, (prevHighlightedIndex ?? -1) + 1),\n ),\n );\n },\n PageUp: (event) => {\n event.preventDefault();\n setHighlightedIndex((prevHighlightedIndex?: number) =>\n saveFocusedIndex(\n Math.max(\n 0,\n (prevHighlightedIndex ?? displayedItemCount) - displayedItemCount,\n ),\n ),\n );\n },\n PageDown: (event) => {\n event.preventDefault();\n setHighlightedIndex((prevHighlightedIndex?: number) =>\n saveFocusedIndex(\n Math.min(\n itemCount - 1,\n (prevHighlightedIndex ?? 0) + displayedItemCount,\n ),\n ),\n );\n },\n Home: (event) => {\n event.preventDefault();\n setHighlightedIndex(saveFocusedIndex(0));\n },\n End: (event) => {\n event.preventDefault();\n setHighlightedIndex(saveFocusedIndex(itemCount - 1));\n },\n Enter: (event) => {\n event.preventDefault();\n handleSelect(\n event,\n highlightedIndex,\n highlightedIndex != null && highlightedIndex > -1\n ? getItemAtIndex(highlightedIndex)\n : null,\n );\n },\n \" \": (event) => {\n event.preventDefault();\n handleSelect(\n event,\n highlightedIndex,\n highlightedIndex != null && highlightedIndex > -1\n ? getItemAtIndex(highlightedIndex)\n : null,\n );\n },\n Tab: (event) => {\n if (tabToSelect) {\n handleSelect(\n event,\n highlightedIndex,\n highlightedIndex != null && highlightedIndex > -1\n ? getItemAtIndex(highlightedIndex)\n : null,\n );\n } else {\n setHighlightedIndex(undefined);\n }\n },\n };\n\n const handleKeyDown: keyHandler = (event) => {\n if (isFocusVisibleRef.current) {\n setFocusVisible(true);\n }\n\n const handler: keyHandler = keyDownHandlers[event.key];\n\n if (handler) {\n handler(event);\n }\n\n if (onKeyDown) {\n onKeyDown(event);\n }\n };\n\n const handleFocus = (event: FocusEvent<HTMLDivElement>) => {\n handleFocusVisible(event);\n if (isFocusVisibleRef.current) {\n setFocusVisible(true);\n }\n\n // Work out the index to highlight\n if (highlightedIndex === undefined) {\n const firstSelectedItem = isMultiSelect\n ? (selectedItem as Item[])[0]\n : (selectedItem as Item | undefined);\n\n setHighlightedIndex(\n Math.max(\n restoreLastFocus\n ? lastFocusedIndex\n : firstSelectedItem\n ? getItemIndex(firstSelectedItem)\n : -1,\n 0,\n ),\n );\n }\n\n if (onFocus) {\n onFocus(event);\n }\n };\n\n const handleBlur = (event: FocusEvent<HTMLDivElement>) => {\n setHighlightedIndex(undefined);\n handleBlurVisible();\n if (!isFocusVisibleRef.current) {\n setFocusVisible(false);\n }\n\n if (onBlur) {\n onBlur(event);\n }\n };\n\n const handleMouseDown = (event: MouseEvent<HTMLDivElement>) => {\n if (disableMouseDown) {\n event.preventDefault();\n } else if (onMouseDown) {\n onMouseDown(event);\n }\n };\n\n const handleMouseLeave = (event: MouseEvent<HTMLDivElement>) => {\n if (focusVisible && id) {\n // Get the root node of the component if we have access to it otherwise default to current document\n const rootNode = (\n rootRef.current || ownerDocument(event.currentTarget)\n ).getRootNode();\n\n const listNode = (rootNode as Document).getElementById(id);\n\n // Safety check as `mouseleave` could have been accidentally triggered by an opening tooltip\n // when you use keyboard to navigate, hence the focusVisible check earlier\n if (listNode?.contains(event.target as Node)) {\n setHighlightedIndex(undefined);\n }\n } else {\n setHighlightedIndex(undefined);\n }\n\n if (onMouseLeave) {\n onMouseLeave(event);\n }\n };\n\n const eventHandlers = {\n onFocus: handleFocus,\n onBlur: handleBlur,\n onKeyDown: handleKeyDown,\n onMouseDown: handleMouseDown,\n onMouseLeave: handleMouseLeave,\n };\n\n const ariaProps: listBoxAriaProps = {\n role: \"listbox\",\n \"aria-activedescendant\":\n highlightedIndex !== undefined && highlightedIndex >= 0\n ? getItemId(highlightedIndex)\n : undefined,\n };\n\n if (isMultiSelect) {\n ariaProps[\"aria-multiselectable\"] = true;\n }\n\n return {\n focusedRef: useForkRef(rootRef, focusVisibleRef),\n state: {\n id,\n focusVisible,\n selectedItem,\n highlightedIndex,\n isDeselectable,\n isMultiSelect,\n isDisabled: disabled,\n },\n helpers: {\n setFocusVisible,\n setSelectedItem,\n setHighlightedIndex,\n keyDownHandlers,\n handleSelect,\n },\n listProps: {\n id,\n source,\n itemCount,\n disableMouseDown,\n displayedItemCount,\n getItemAtIndex,\n getItemIndex,\n getItemId,\n disabled,\n ...ariaProps,\n ...restProps,\n ...(disabled ? {} : eventHandlers),\n },\n };\n}\n\nconst validateProps = <Item, Variant extends ListSelectionVariant>(\n props: ListProps<Item, Variant>,\n) => {\n if (process.env.NODE_ENV !== \"production\") {\n const { source, itemCount, getItemIndex, getItemAtIndex } = props;\n\n const hasIndexer =\n typeof getItemIndex === \"function\" &&\n typeof getItemAtIndex === \"function\";\n\n const hasNoIndexer =\n getItemIndex === undefined && getItemAtIndex === undefined;\n\n const sourceNotArray = !Array.isArray(source);\n\n useEffect(() => {\n if (sourceNotArray) {\n console.error(\"`source` for useList must be an array.\");\n }\n }, [sourceNotArray]);\n\n useEffect(() => {\n if (!hasNoIndexer && !hasIndexer) {\n console.error(\n \"useList needs to have both `getItemIndex` and `getItemAtIndex`.\",\n );\n }\n\n if (!hasNoIndexer && itemCount === undefined) {\n console.error(\n \"useList needs to have `itemCount` if an indexer is used.\",\n );\n }\n }, [hasIndexer, hasNoIndexer, itemCount]);\n }\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useList.js","sources":["../src/list-deprecated/useList.ts"],"sourcesContent":["import {\n ownerDocument,\n useControlled,\n useForkRef,\n useId,\n useIsFocusVisible,\n} from \"@salt-ds/core\";\n\nimport {\n type AriaAttributes,\n type Dispatch,\n type FocusEvent,\n type KeyboardEvent,\n type KeyboardEventHandler,\n type MouseEvent,\n type Ref,\n type SetStateAction,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport type {\n ListMultiSelectionVariant,\n ListProps,\n ListSelectionVariant,\n} from \"./ListProps\";\n\ntype keyHandler = (event: KeyboardEvent<HTMLInputElement>) => void;\n\ninterface listBoxAriaProps\n extends Pick<\n AriaAttributes,\n \"aria-activedescendant\" | \"aria-multiselectable\"\n > {\n role: string; // We will default it to be 'listbox', but users can override\n}\nexport interface ListState<\n Item = string,\n Variant extends ListSelectionVariant = \"default\",\n> {\n id?: string;\n focusVisible: boolean;\n selectedItem?: Variant extends ListMultiSelectionVariant ? Array<Item> : Item;\n highlightedIndex?: number;\n isDeselectable: boolean;\n isMultiSelect: boolean;\n isDisabled: boolean;\n}\n\nexport interface ListHelpers<\n Item = string,\n Variant extends ListSelectionVariant = \"default\",\n> {\n setFocusVisible: (visible: boolean) => void;\n setSelectedItem: Dispatch<\n SetStateAction<\n (Variant extends ListMultiSelectionVariant ? Item[] : Item) | undefined\n >\n >;\n setHighlightedIndex: (highlightedIndex?: number) => void;\n handleSelect: (\n event: MouseEvent<HTMLElement> | KeyboardEvent<HTMLElement>,\n index: number | undefined,\n item: Item,\n ) => void;\n keyDownHandlers: { [key: string]: KeyboardEventHandler };\n // TODO: Form Field\n}\n\nexport function useList<Item, Variant extends ListSelectionVariant>(\n props: ListProps<Item, Variant> = {},\n): {\n focusedRef: Ref<any>;\n listProps: Partial<ListProps<Item, Variant>> & listBoxAriaProps;\n state: ListState<Item, Variant>;\n helpers: ListHelpers<Item, Variant>;\n} {\n validateProps(props);\n\n const generatedId = useId(props.id);\n\n const {\n id = generatedId,\n source = [],\n itemCount = source.length,\n getItemId = (index) => `${id}-item-${index}`,\n getItemAtIndex: getItemAtIndexProp,\n getItemIndex: getItemIndexProp,\n displayedItemCount = 10,\n initialSelectedItem,\n selectionVariant,\n disabled = false,\n onBlur,\n onChange,\n onFocus,\n onKeyDown,\n onMouseDown,\n onMouseLeave,\n onSelect,\n disableMouseDown,\n restoreLastFocus,\n highlightedIndex: highlightedIndexProp,\n selectedItem: selectedItemProp,\n tabToSelect,\n ...restProps\n } = props;\n\n const {\n isFocusVisibleRef,\n onFocus: handleFocusVisible,\n onBlur: handleBlurVisible,\n ref: focusVisibleRef,\n } = useIsFocusVisible();\n\n const { current: isDeselectable } = useRef(\n selectionVariant === \"deselectable\",\n );\n const { current: isMultiSelect } = useRef(\n selectionVariant === \"multiple\" ||\n selectionVariant === \"extended\" ||\n Array.isArray(initialSelectedItem) ||\n Array.isArray(selectedItemProp),\n );\n\n const { current: isExtendedSelect } = useRef(selectionVariant === \"extended\");\n\n let getItemIndex = useCallback(\n (item: Item) => source.indexOf(item),\n [source],\n );\n let getItemAtIndex = useCallback((index: number) => source[index], [source]);\n\n const indexComparator = useCallback(\n (a: Item, b: Item) => getItemIndex(a) - getItemIndex(b),\n [getItemIndex],\n );\n\n // Only use getItemIndex and getItemAtIndex if both are defined; otherwise keep the defaults\n if (\n typeof getItemIndexProp === \"function\" &&\n typeof getItemAtIndexProp === \"function\"\n ) {\n getItemIndex = getItemIndexProp;\n getItemAtIndex = getItemAtIndexProp;\n }\n\n const rootRef = useRef();\n const [focusVisible, setFocusVisible] = useState(false);\n const [lastFocusedIndex, setLastFocusedIndex] = useState(-1);\n\n const [selectedItem, setSelectedItem] = useControlled<\n undefined | (Variant extends ListMultiSelectionVariant ? Item[] : Item)\n >({\n controlled: selectedItemProp,\n default:\n initialSelectedItem ??\n ((isMultiSelect\n ? []\n : null) as unknown as Variant extends ListMultiSelectionVariant\n ? Item[]\n : Item),\n name: \"useList\",\n state: \"selectedItem\",\n });\n\n const [highlightedIndex, setHighlightedIndex] = useControlled<\n number | undefined\n >({\n controlled: highlightedIndexProp,\n default: undefined,\n name: \"useList\",\n state: \"highlightedIndex\",\n });\n\n const handleSingleSelect = useCallback(\n (\n event: MouseEvent<HTMLElement> | KeyboardEvent<HTMLElement>,\n index: number | undefined,\n item: Item,\n ) => {\n const isSelected = item === selectedItem;\n let nextItem: Item | null;\n\n if (isSelected && !isDeselectable) {\n return;\n }\n\n if (!isSelected) {\n nextItem = item;\n setHighlightedIndex(index);\n } else {\n nextItem = null;\n }\n\n setSelectedItem(\n nextItem as Variant extends ListMultiSelectionVariant ? Item[] : Item,\n );\n\n if (onChange) {\n onChange(\n event,\n nextItem as Variant extends ListMultiSelectionVariant ? Item[] : Item,\n );\n }\n },\n [isDeselectable, onChange, selectedItem],\n );\n\n const handleMultiSelect = useCallback(\n (\n event: MouseEvent<HTMLElement> | KeyboardEvent<HTMLElement>,\n index: number | undefined,\n item: Item,\n ) => {\n const isSelected = (selectedItem as Item[]).indexOf(item as Item) !== -1;\n let nextItems = selectedItem as Item[];\n\n if (!isSelected) {\n nextItems = nextItems.concat([item]).sort(indexComparator);\n setHighlightedIndex(index);\n } else {\n nextItems = nextItems.filter((selected) => selected !== item);\n }\n\n setSelectedItem(\n nextItems as Variant extends ListMultiSelectionVariant ? Item[] : Item,\n );\n\n if (onChange) {\n onChange(\n event,\n nextItems as Variant extends ListMultiSelectionVariant\n ? Item[]\n : Item,\n );\n }\n },\n [indexComparator, onChange, selectedItem],\n );\n\n const handleRangeSelect = useCallback(\n (\n event: MouseEvent<HTMLElement> | KeyboardEvent<HTMLElement>,\n index?: number,\n ) => {\n const currentSelection =\n event.ctrlKey || event.metaKey ? selectedItem : ([] as Item[]);\n\n const lastSelectedItemIndex =\n (selectedItem as Item[]).length > 0\n ? getItemIndex(\n (selectedItem as Item[])[(selectedItem as Item[]).length - 1],\n )\n : 0;\n\n const startRegion = Math.min(\n index ?? lastSelectedItemIndex,\n lastSelectedItemIndex,\n );\n const endRegion = Math.max(\n index ?? lastSelectedItemIndex,\n lastSelectedItemIndex,\n );\n const rangeSelection = source.slice(startRegion, endRegion + 1);\n // concat the current selection with a new selection and remove duplicates for overlaps\n const nextItems = [\n ...new Set([...(currentSelection as Item[]), ...rangeSelection]),\n ];\n // remove text selection caused by shift clicking\n ownerDocument(event.currentTarget).getSelection()?.removeAllRanges();\n setSelectedItem(\n nextItems as Variant extends ListMultiSelectionVariant ? Item[] : Item,\n );\n\n if (onChange) {\n onChange(\n event,\n nextItems as Variant extends ListMultiSelectionVariant\n ? Item[]\n : Item,\n );\n }\n },\n [getItemIndex, onChange, selectedItem, source],\n );\n\n const handleExtendedSelect = useCallback(\n (\n event: MouseEvent<HTMLElement> | KeyboardEvent<HTMLElement>,\n index: number | undefined,\n item: Item,\n ) => {\n let nextItems = selectedItem as Item[];\n if (event.shiftKey) {\n handleRangeSelect(event, index);\n } else if (\n (selectedItem as Item[]).length === 0 ||\n event.ctrlKey ||\n event.metaKey\n ) {\n console.log(\"handleMulti\");\n handleMultiSelect(event, index, item);\n } else {\n nextItems = [item] as Item[];\n setSelectedItem(\n nextItems as Variant extends ListMultiSelectionVariant\n ? Item[]\n : Item,\n );\n\n if (onChange) {\n onChange(\n event,\n nextItems as Variant extends ListMultiSelectionVariant\n ? Item[]\n : Item,\n );\n }\n }\n },\n [handleMultiSelect, handleRangeSelect, onChange, selectedItem],\n );\n\n const handleSelect = useCallback(\n (\n event: MouseEvent<HTMLElement> | KeyboardEvent<HTMLElement>,\n index: number | undefined,\n item: Item | null,\n ) => {\n if (item == null || (item as any).disabled) {\n return;\n }\n\n if (onSelect) {\n console.log(\"onSelect\");\n onSelect(event, item);\n }\n\n if (isExtendedSelect) {\n handleExtendedSelect(event, index, item);\n } else if (isMultiSelect) {\n handleMultiSelect(event, index, item);\n } else {\n handleSingleSelect(event, index, item);\n }\n },\n [\n handleExtendedSelect,\n handleMultiSelect,\n handleSingleSelect,\n isExtendedSelect,\n isMultiSelect,\n onSelect,\n ],\n );\n\n const saveFocusedIndex = (index: number) => {\n setLastFocusedIndex(index);\n return index;\n };\n\n const keyDownHandlers: { [key: string]: keyHandler } = {\n ArrowUp: (event) => {\n event.preventDefault();\n setHighlightedIndex((prevHighlightedIndex?: number) =>\n saveFocusedIndex(Math.max(0, (prevHighlightedIndex ?? itemCount) - 1)),\n );\n },\n ArrowDown: (event) => {\n event.preventDefault();\n setHighlightedIndex((prevHighlightedIndex?: number) =>\n saveFocusedIndex(\n Math.min(itemCount - 1, (prevHighlightedIndex ?? -1) + 1),\n ),\n );\n },\n PageUp: (event) => {\n event.preventDefault();\n setHighlightedIndex((prevHighlightedIndex?: number) =>\n saveFocusedIndex(\n Math.max(\n 0,\n (prevHighlightedIndex ?? displayedItemCount) - displayedItemCount,\n ),\n ),\n );\n },\n PageDown: (event) => {\n event.preventDefault();\n setHighlightedIndex((prevHighlightedIndex?: number) =>\n saveFocusedIndex(\n Math.min(\n itemCount - 1,\n (prevHighlightedIndex ?? 0) + displayedItemCount,\n ),\n ),\n );\n },\n Home: (event) => {\n event.preventDefault();\n setHighlightedIndex(saveFocusedIndex(0));\n },\n End: (event) => {\n event.preventDefault();\n setHighlightedIndex(saveFocusedIndex(itemCount - 1));\n },\n Enter: (event) => {\n event.preventDefault();\n handleSelect(\n event,\n highlightedIndex,\n highlightedIndex != null && highlightedIndex > -1\n ? getItemAtIndex(highlightedIndex)\n : null,\n );\n },\n \" \": (event) => {\n event.preventDefault();\n handleSelect(\n event,\n highlightedIndex,\n highlightedIndex != null && highlightedIndex > -1\n ? getItemAtIndex(highlightedIndex)\n : null,\n );\n },\n Tab: (event) => {\n if (tabToSelect) {\n handleSelect(\n event,\n highlightedIndex,\n highlightedIndex != null && highlightedIndex > -1\n ? getItemAtIndex(highlightedIndex)\n : null,\n );\n } else {\n setHighlightedIndex(undefined);\n }\n },\n };\n\n const handleKeyDown: keyHandler = (event) => {\n if (isFocusVisibleRef.current) {\n setFocusVisible(true);\n }\n\n const handler: keyHandler = keyDownHandlers[event.key];\n\n if (handler) {\n handler(event);\n }\n\n if (onKeyDown) {\n onKeyDown(event);\n }\n };\n\n const handleFocus = (event: FocusEvent<HTMLDivElement>) => {\n handleFocusVisible(event);\n if (isFocusVisibleRef.current) {\n setFocusVisible(true);\n }\n\n // Work out the index to highlight\n if (highlightedIndex === undefined) {\n const firstSelectedItem = isMultiSelect\n ? (selectedItem as Item[])[0]\n : (selectedItem as Item | undefined);\n\n setHighlightedIndex(\n Math.max(\n restoreLastFocus\n ? lastFocusedIndex\n : firstSelectedItem\n ? getItemIndex(firstSelectedItem)\n : -1,\n 0,\n ),\n );\n }\n\n if (onFocus) {\n onFocus(event);\n }\n };\n\n const handleBlur = (event: FocusEvent<HTMLDivElement>) => {\n setHighlightedIndex(undefined);\n handleBlurVisible();\n if (!isFocusVisibleRef.current) {\n setFocusVisible(false);\n }\n\n if (onBlur) {\n onBlur(event);\n }\n };\n\n const handleMouseDown = (event: MouseEvent<HTMLDivElement>) => {\n if (disableMouseDown) {\n event.preventDefault();\n } else if (onMouseDown) {\n onMouseDown(event);\n }\n };\n\n const handleMouseLeave = (event: MouseEvent<HTMLDivElement>) => {\n if (focusVisible && id) {\n // Get the root node of the component if we have access to it otherwise default to current document\n const rootNode = (\n rootRef.current || ownerDocument(event.currentTarget)\n ).getRootNode();\n\n const listNode = (rootNode as Document).getElementById(id);\n\n // Safety check as `mouseleave` could have been accidentally triggered by an opening tooltip\n // when you use keyboard to navigate, hence the focusVisible check earlier\n if (listNode?.contains(event.target as Node)) {\n setHighlightedIndex(undefined);\n }\n } else {\n setHighlightedIndex(undefined);\n }\n\n if (onMouseLeave) {\n onMouseLeave(event);\n }\n };\n\n const eventHandlers = {\n onFocus: handleFocus,\n onBlur: handleBlur,\n onKeyDown: handleKeyDown,\n onMouseDown: handleMouseDown,\n onMouseLeave: handleMouseLeave,\n };\n\n const ariaProps: listBoxAriaProps = {\n role: \"listbox\",\n \"aria-activedescendant\":\n highlightedIndex !== undefined && highlightedIndex >= 0\n ? getItemId(highlightedIndex)\n : undefined,\n };\n\n if (isMultiSelect) {\n ariaProps[\"aria-multiselectable\"] = true;\n }\n\n return {\n focusedRef: useForkRef(rootRef, focusVisibleRef),\n state: {\n id,\n focusVisible,\n selectedItem,\n highlightedIndex,\n isDeselectable,\n isMultiSelect,\n isDisabled: disabled,\n },\n helpers: {\n setFocusVisible,\n setSelectedItem,\n setHighlightedIndex,\n keyDownHandlers,\n handleSelect,\n },\n listProps: {\n id,\n source,\n itemCount,\n disableMouseDown,\n displayedItemCount,\n getItemAtIndex,\n getItemIndex,\n getItemId,\n disabled,\n ...ariaProps,\n ...restProps,\n ...(disabled ? {} : eventHandlers),\n },\n };\n}\n\nconst validateProps = <Item, Variant extends ListSelectionVariant>(\n props: ListProps<Item, Variant>,\n) => {\n if (process.env.NODE_ENV !== \"production\") {\n const { source, itemCount, getItemIndex, getItemAtIndex } = props;\n\n const hasIndexer =\n typeof getItemIndex === \"function\" &&\n typeof getItemAtIndex === \"function\";\n\n const hasNoIndexer =\n getItemIndex === undefined && getItemAtIndex === undefined;\n\n const sourceNotArray = !Array.isArray(source);\n\n // biome-ignore lint/correctness/useHookAtTopLevel: NODE_ENV is invariant at runtime.\n useEffect(() => {\n if (sourceNotArray) {\n console.error(\"`source` for useList must be an array.\");\n }\n }, [sourceNotArray]);\n\n // biome-ignore lint/correctness/useHookAtTopLevel: NODE_ENV is invariant at runtime.\n useEffect(() => {\n if (!hasNoIndexer && !hasIndexer) {\n console.error(\n \"useList needs to have both `getItemIndex` and `getItemAtIndex`.\",\n );\n }\n\n if (!hasNoIndexer && itemCount === undefined) {\n console.error(\n \"useList needs to have `itemCount` if an indexer is used.\",\n );\n }\n }, [hasIndexer, hasNoIndexer, itemCount]);\n }\n};\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- var css_248z = "/* Default variables applied to the root element */\n.saltListItemNext {\n --listNext-item-text-color: var(--salt-content-primary-foreground);\n --listNext-item-background: none;\n}\n\n.saltListItemNext {\n color: var(--listNext-item-text-color);\n background: var(--listNext-item-background);\n height: calc(var(--salt-size-base) + var(--salt-spacing-100));\n padding-left: var(--salt-spacing-100);\n padding-right: var(--salt-spacing-100);\n display: flex;\n gap: var(--salt-size-unit);\n position: relative;\n align-items: center;\n white-space: nowrap;\n margin-top: var(--salt-size-fixed-100);\n margin-bottom: var(--salt-size-fixed-100);\n border: var(--salt-focused-outlineWidth) var(--salt-focused-outlineStyle) transparent;\n}\n\n/* Class applied to list item on focus using keyboard navigation only */\n.saltListItemNext-focused {\n border: var(--salt-focused-outline);\n}\n\n/* Active list item on focus using keyboard navigation */\n.saltListItemNext-highlighted:not([aria-disabled=\"true\"]) {\n --listNext-item-background: var(--salt-selectable-background-hover);\n cursor: var(--salt-cursor-hover);\n}\n\n.saltListItemNext[aria-selected=\"true\"] {\n outline: var(--salt-size-fixed-100) var(--salt-container-borderStyle) var(--salt-selectable-borderColor-selected);\n --listNext-item-background: var(--salt-selectable-background-selected);\n --saltIcon-color: var(--salt-selectable-foreground-selected);\n}\n\n/* Style applied to disabled items */\n.saltListItemNext[aria-disabled=\"true\"] {\n --listNext-item-text-color: var(--salt-content-primary-foreground-disabled);\n cursor: var(--salt-cursor-disabled);\n}\n.saltListItemNext[aria-disabled=\"true\"] .saltText {\n color: var(--listNext-item-text-color);\n}\n\n/* disabled list item when selected */\n.saltListItemNext[aria-disabled=\"true\"][aria-selected=\"true\"] {\n outline: var(--salt-size-fixed-100) var(--salt-container-borderStyle) var(--salt-selectable-borderColor-selectedDisabled);\n --listNext-item-background: var(--salt-selectable-background-selectedDisabled);\n}\n";
1
+ var css_248z = "/* Default variables applied to the root element */\n.saltListItemNext {\n --listNext-item-text-color: var(--salt-content-primary-foreground);\n --listNext-item-background: none;\n}\n\n.saltListItemNext {\n color: var(--listNext-item-text-color);\n background: var(--listNext-item-background);\n height: calc(var(--salt-size-base) + var(--salt-spacing-100));\n padding-left: var(--salt-spacing-100);\n padding-right: var(--salt-spacing-100);\n display: flex;\n gap: var(--salt-size-unit);\n position: relative;\n align-items: center;\n white-space: nowrap;\n margin-top: var(--salt-size-fixed-100);\n margin-bottom: var(--salt-size-fixed-100);\n border: var(--salt-focused-outlineWidth) var(--salt-focused-outlineStyle) transparent;\n}\n\n/* Class applied to list item on focus using keyboard navigation only */\n.saltListItemNext-focused {\n border: var(--salt-focused-outline);\n}\n\n/* Active list item on focus using keyboard navigation */\n.saltListItemNext-highlighted:not([aria-disabled=\"true\"]) {\n --listNext-item-background: var(--salt-selectable-background-hover);\n cursor: var(--salt-cursor-hover);\n}\n\n.saltListItemNext[aria-selected=\"true\"] {\n outline: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--salt-selectable-borderColor-selected);\n --listNext-item-background: var(--salt-selectable-background-selected);\n --saltIcon-color: var(--salt-selectable-foreground-selected);\n}\n\n/* Style applied to disabled items */\n.saltListItemNext[aria-disabled=\"true\"] {\n --listNext-item-text-color: var(--salt-content-primary-foreground-disabled);\n cursor: var(--salt-cursor-disabled);\n}\n.saltListItemNext[aria-disabled=\"true\"] .saltText {\n color: var(--listNext-item-text-color);\n}\n\n/* disabled list item when selected */\n.saltListItemNext[aria-disabled=\"true\"][aria-selected=\"true\"] {\n outline: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--salt-selectable-borderColor-selectedDisabled);\n --listNext-item-background: var(--salt-selectable-background-selectedDisabled);\n}\n";
2
2
 
3
3
  export { css_248z as default };
4
4
  //# sourceMappingURL=ListItemNext.css.js.map
@@ -1,9 +1,9 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { makePrefixer, useIdMemo } from '@salt-ds/core';
3
- import { clsx } from 'clsx';
4
- import { forwardRef } from 'react';
5
3
  import { useComponentCssInjection } from '@salt-ds/styles';
6
4
  import { useWindow } from '@salt-ds/window';
5
+ import { clsx } from 'clsx';
6
+ import { forwardRef } from 'react';
7
7
  import css_248z from './ListItemNext.css.js';
8
8
  import { useListItem } from './ListNextContext.js';
9
9
 
@@ -1 +1 @@
1
- {"version":3,"file":"ListItemNext.js","sources":["../src/list-next/ListItemNext.tsx"],"sourcesContent":["import { makePrefixer, useIdMemo } from \"@salt-ds/core\";\nimport { clsx } from \"clsx\";\nimport { type HTMLAttributes, type MouseEvent, forwardRef } from \"react\";\n\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport listItemNextCss from \"./ListItemNext.css\";\nimport { useListItem } from \"./ListNextContext\";\n\nconst withBaseName = makePrefixer(\"saltListItemNext\");\n\nexport interface ListItemNextProps extends HTMLAttributes<HTMLLIElement> {\n /**\n * If true, the particular list item in list will be disabled.\n */\n disabled?: boolean;\n /**\n * List item id.\n */\n id?: string;\n /**\n * List item value.\n */\n value: string;\n}\n\nexport const ListItemNext = forwardRef<HTMLLIElement, ListItemNextProps>(\n function ListItemNext(\n {\n children,\n className,\n disabled: disabledProp,\n id: idProp,\n value,\n onClick,\n ...props\n },\n ref,\n ) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-list-item-next\",\n css: listItemNextCss,\n window: targetWindow,\n });\n const id = useIdMemo(idProp);\n\n const listContext = useListItem();\n if (!listContext) return null;\n\n const {\n id: contextId,\n disabled: contextDisabled,\n select,\n isSelected,\n isFocused,\n highlight,\n isHighlighted,\n } = listContext;\n\n const itemId = `${contextId || \"listNext\"}--${id}`;\n const disabled = disabledProp || contextDisabled;\n const selected = isSelected(value);\n const focused = isFocused(value);\n const highlighted = isHighlighted(value);\n\n const handleClick = (event: MouseEvent<HTMLLIElement>) => {\n if (!disabled) {\n select(event);\n onClick?.(event);\n }\n };\n\n const handleMouseMove = (event: MouseEvent<HTMLLIElement>) => {\n if (!highlighted) {\n highlight(event);\n }\n };\n\n return (\n <li\n ref={ref}\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"disabled\")]: disabled,\n [withBaseName(\"highlighted\")]: highlighted,\n [withBaseName(\"focused\")]: focused,\n },\n className,\n )}\n role=\"option\"\n aria-disabled={disabled || undefined}\n aria-selected={selected || undefined}\n id={itemId}\n data-value={value}\n onClick={handleClick}\n onMouseMove={handleMouseMove}\n {...props}\n >\n {children}\n </li>\n );\n },\n);\n"],"names":["ListItemNext","listItemNextCss"],"mappings":";;;;;;;;;AASA,MAAM,YAAA,GAAe,aAAa,kBAAkB,CAAA;AAiB7C,MAAM,YAAe,GAAA,UAAA;AAAA,EAC1B,SAASA,aACP,CAAA;AAAA,IACE,QAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAU,EAAA,YAAA;AAAA,IACV,EAAI,EAAA,MAAA;AAAA,IACJ,KAAA;AAAA,IACA,OAAA;AAAA,IACA,GAAG;AAAA,KAEL,GACA,EAAA;AACA,IAAA,MAAM,eAAe,SAAU,EAAA;AAC/B,IAAyB,wBAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,qBAAA;AAAA,MACR,GAAK,EAAAC,QAAA;AAAA,MACL,MAAQ,EAAA;AAAA,KACT,CAAA;AACD,IAAM,MAAA,EAAA,GAAK,UAAU,MAAM,CAAA;AAE3B,IAAA,MAAM,cAAc,WAAY,EAAA;AAChC,IAAI,IAAA,CAAC,aAAoB,OAAA,IAAA;AAEzB,IAAM,MAAA;AAAA,MACJ,EAAI,EAAA,SAAA;AAAA,MACJ,QAAU,EAAA,eAAA;AAAA,MACV,MAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA,KACE,GAAA,WAAA;AAEJ,IAAA,MAAM,MAAS,GAAA,CAAA,EAAG,SAAa,IAAA,UAAU,KAAK,EAAE,CAAA,CAAA;AAChD,IAAA,MAAM,WAAW,YAAgB,IAAA,eAAA;AACjC,IAAM,MAAA,QAAA,GAAW,WAAW,KAAK,CAAA;AACjC,IAAM,MAAA,OAAA,GAAU,UAAU,KAAK,CAAA;AAC/B,IAAM,MAAA,WAAA,GAAc,cAAc,KAAK,CAAA;AAEvC,IAAM,MAAA,WAAA,GAAc,CAAC,KAAqC,KAAA;AACxD,MAAA,IAAI,CAAC,QAAU,EAAA;AACb,QAAA,MAAA,CAAO,KAAK,CAAA;AACZ,QAAU,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAA,KAAA,CAAA;AAAA;AACZ,KACF;AAEA,IAAM,MAAA,eAAA,GAAkB,CAAC,KAAqC,KAAA;AAC5D,MAAA,IAAI,CAAC,WAAa,EAAA;AAChB,QAAA,SAAA,CAAU,KAAK,CAAA;AAAA;AACjB,KACF;AAEA,IACE,uBAAA,GAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAW,EAAA,IAAA;AAAA,UACT,YAAa,EAAA;AAAA,UACb;AAAA,YACE,CAAC,YAAA,CAAa,UAAU,CAAC,GAAG,QAAA;AAAA,YAC5B,CAAC,YAAA,CAAa,aAAa,CAAC,GAAG,WAAA;AAAA,YAC/B,CAAC,YAAA,CAAa,SAAS,CAAC,GAAG;AAAA,WAC7B;AAAA,UACA;AAAA,SACF;AAAA,QACA,IAAK,EAAA,QAAA;AAAA,QACL,iBAAe,QAAY,IAAA,MAAA;AAAA,QAC3B,iBAAe,QAAY,IAAA,MAAA;AAAA,QAC3B,EAAI,EAAA,MAAA;AAAA,QACJ,YAAY,EAAA,KAAA;AAAA,QACZ,OAAS,EAAA,WAAA;AAAA,QACT,WAAa,EAAA,eAAA;AAAA,QACZ,GAAG,KAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA;AAGN;;;;"}
1
+ {"version":3,"file":"ListItemNext.js","sources":["../src/list-next/ListItemNext.tsx"],"sourcesContent":["import { makePrefixer, useIdMemo } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport { forwardRef, type HTMLAttributes, type MouseEvent } from \"react\";\nimport listItemNextCss from \"./ListItemNext.css\";\nimport { useListItem } from \"./ListNextContext\";\n\nconst withBaseName = makePrefixer(\"saltListItemNext\");\n\nexport interface ListItemNextProps extends HTMLAttributes<HTMLLIElement> {\n /**\n * If true, the particular list item in list will be disabled.\n */\n disabled?: boolean;\n /**\n * List item id.\n */\n id?: string;\n /**\n * List item value.\n */\n value: string;\n}\n\nexport const ListItemNext = forwardRef<HTMLLIElement, ListItemNextProps>(\n function ListItemNext(\n {\n children,\n className,\n disabled: disabledProp,\n id: idProp,\n value,\n onClick,\n ...props\n },\n ref,\n ) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-list-item-next\",\n css: listItemNextCss,\n window: targetWindow,\n });\n const id = useIdMemo(idProp);\n\n const listContext = useListItem();\n if (!listContext) return null;\n\n const {\n id: contextId,\n disabled: contextDisabled,\n select,\n isSelected,\n isFocused,\n highlight,\n isHighlighted,\n } = listContext;\n\n const itemId = `${contextId || \"listNext\"}--${id}`;\n const disabled = disabledProp || contextDisabled;\n const selected = isSelected(value);\n const focused = isFocused(value);\n const highlighted = isHighlighted(value);\n\n const handleClick = (event: MouseEvent<HTMLLIElement>) => {\n if (!disabled) {\n select(event);\n onClick?.(event);\n }\n };\n\n const handleMouseMove = (event: MouseEvent<HTMLLIElement>) => {\n if (!highlighted) {\n highlight(event);\n }\n };\n\n return (\n <li\n ref={ref}\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"disabled\")]: disabled,\n [withBaseName(\"highlighted\")]: highlighted,\n [withBaseName(\"focused\")]: focused,\n },\n className,\n )}\n role=\"option\"\n aria-disabled={disabled || undefined}\n aria-selected={selected || undefined}\n id={itemId}\n data-value={value}\n onClick={handleClick}\n onMouseMove={handleMouseMove}\n {...props}\n >\n {children}\n </li>\n );\n },\n);\n"],"names":["ListItemNext","listItemNextCss"],"mappings":";;;;;;;;;AAQA,MAAM,YAAA,GAAe,aAAa,kBAAkB,CAAA;AAiB7C,MAAM,YAAe,GAAA,UAAA;AAAA,EAC1B,SAASA,aACP,CAAA;AAAA,IACE,QAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAU,EAAA,YAAA;AAAA,IACV,EAAI,EAAA,MAAA;AAAA,IACJ,KAAA;AAAA,IACA,OAAA;AAAA,IACA,GAAG;AAAA,KAEL,GACA,EAAA;AACA,IAAA,MAAM,eAAe,SAAU,EAAA;AAC/B,IAAyB,wBAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,qBAAA;AAAA,MACR,GAAK,EAAAC,QAAA;AAAA,MACL,MAAQ,EAAA;AAAA,KACT,CAAA;AACD,IAAM,MAAA,EAAA,GAAK,UAAU,MAAM,CAAA;AAE3B,IAAA,MAAM,cAAc,WAAY,EAAA;AAChC,IAAI,IAAA,CAAC,aAAoB,OAAA,IAAA;AAEzB,IAAM,MAAA;AAAA,MACJ,EAAI,EAAA,SAAA;AAAA,MACJ,QAAU,EAAA,eAAA;AAAA,MACV,MAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA,KACE,GAAA,WAAA;AAEJ,IAAA,MAAM,MAAS,GAAA,CAAA,EAAG,SAAa,IAAA,UAAU,KAAK,EAAE,CAAA,CAAA;AAChD,IAAA,MAAM,WAAW,YAAgB,IAAA,eAAA;AACjC,IAAM,MAAA,QAAA,GAAW,WAAW,KAAK,CAAA;AACjC,IAAM,MAAA,OAAA,GAAU,UAAU,KAAK,CAAA;AAC/B,IAAM,MAAA,WAAA,GAAc,cAAc,KAAK,CAAA;AAEvC,IAAM,MAAA,WAAA,GAAc,CAAC,KAAqC,KAAA;AACxD,MAAA,IAAI,CAAC,QAAU,EAAA;AACb,QAAA,MAAA,CAAO,KAAK,CAAA;AACZ,QAAU,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAA,KAAA,CAAA;AAAA;AACZ,KACF;AAEA,IAAM,MAAA,eAAA,GAAkB,CAAC,KAAqC,KAAA;AAC5D,MAAA,IAAI,CAAC,WAAa,EAAA;AAChB,QAAA,SAAA,CAAU,KAAK,CAAA;AAAA;AACjB,KACF;AAEA,IACE,uBAAA,GAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAW,EAAA,IAAA;AAAA,UACT,YAAa,EAAA;AAAA,UACb;AAAA,YACE,CAAC,YAAA,CAAa,UAAU,CAAC,GAAG,QAAA;AAAA,YAC5B,CAAC,YAAA,CAAa,aAAa,CAAC,GAAG,WAAA;AAAA,YAC/B,CAAC,YAAA,CAAa,SAAS,CAAC,GAAG;AAAA,WAC7B;AAAA,UACA;AAAA,SACF;AAAA,QACA,IAAK,EAAA,QAAA;AAAA,QACL,iBAAe,QAAY,IAAA,MAAA;AAAA,QAC3B,iBAAe,QAAY,IAAA,MAAA;AAAA,QAC3B,EAAI,EAAA,MAAA;AAAA,QACJ,YAAY,EAAA,KAAA;AAAA,QACZ,OAAS,EAAA,WAAA;AAAA,QACT,WAAa,EAAA,eAAA;AAAA,QACZ,GAAG,KAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA;AAGN;;;;"}
@@ -1,4 +1,4 @@
1
- var css_248z = "/* Style applied to the root element */\n.saltListNext {\n margin: 0;\n background: var(--salt-container-primary-background);\n border-color: var(--salt-container-primary-borderColor);\n border-style: var(--salt-container-borderStyle);\n border-width: var(--salt-size-fixed-100);\n height: 100%;\n outline: none;\n overflow-y: auto;\n overflow-x: hidden;\n position: relative;\n padding-inline-start: 0;\n box-sizing: content-box;\n\n font-family: var(--salt-text-fontFamily);\n font-size: var(--salt-text-fontSize);\n font-weight: var(--salt-text-fontWeight);\n line-height: var(--salt-text-lineHeight);\n}\n";
1
+ var css_248z = "/* Style applied to the root element */\n.saltListNext {\n margin: 0;\n background: var(--salt-container-primary-background);\n border-color: var(--salt-container-primary-borderColor);\n border-style: var(--salt-borderStyle-solid);\n border-width: var(--salt-size-fixed-100);\n height: 100%;\n outline: none;\n overflow-y: auto;\n overflow-x: hidden;\n position: relative;\n padding-inline-start: 0;\n box-sizing: content-box;\n\n font-family: var(--salt-text-fontFamily);\n font-size: var(--salt-text-fontSize);\n font-weight: var(--salt-text-fontWeight);\n line-height: var(--salt-text-lineHeight);\n}\n";
2
2
 
3
3
  export { css_248z as default };
4
4
  //# sourceMappingURL=ListNext.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ListNext.js","sources":["../src/list-next/ListNext.tsx"],"sourcesContent":["import { makePrefixer, useForkRef, useId } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n type FocusEvent,\n type KeyboardEvent,\n type MouseEvent,\n type SyntheticEvent,\n forwardRef,\n useRef,\n} from \"react\";\nimport listNextCss from \"./ListNext.css\";\nimport { ListNextContext } from \"./ListNextContext\";\nimport { useList } from \"./useList\";\n\nconst withBaseName = makePrefixer(\"saltListNext\");\n\nexport interface ListNextProps\n extends Omit<ComponentPropsWithoutRef<\"ul\">, \"onChange\" | \"onSelect\"> {\n /**\n * If true, all items in list will be disabled.\n */\n disabled?: boolean;\n /* If `true`, the component will not receive focus. */\n disableFocus?: boolean;\n /* Value for the controlled version. */\n highlightedItem?: string;\n /* Value for the controlled version. */\n selected?: string;\n /* Callback for change event. Returns current selection.*/\n onChange?: (\n event: SyntheticEvent,\n data: { value: string | undefined },\n ) => void;\n /* Callback for select event. Returns new selected item.*/\n onSelect?: (event: SyntheticEvent, data: { value: string }) => void;\n /* Initial selection. */\n defaultSelected?: string;\n}\n\nexport const ListNext = forwardRef<HTMLUListElement, ListNextProps>(\n function ListNext(\n {\n children,\n className,\n disabled,\n disableFocus,\n id,\n onSelect,\n onFocus,\n onBlur,\n onKeyDown,\n onMouseOver,\n highlightedItem,\n selected,\n defaultSelected,\n onChange,\n ...rest\n },\n ref,\n ) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-list-next\",\n css: listNextCss,\n window: targetWindow,\n });\n\n const listId = useId(id);\n const listRef = useRef<HTMLUListElement>(null);\n const handleRef = useForkRef(listRef, ref);\n const {\n focusHandler,\n keyDownHandler,\n blurHandler,\n mouseOverHandler,\n activeDescendant,\n contextValue,\n focusVisibleRef,\n } = useList({\n disabled,\n highlightedItem,\n selected,\n defaultSelected,\n onChange,\n onSelect,\n id: listId,\n ref: listRef,\n });\n\n const setListRef = useForkRef(focusVisibleRef, handleRef);\n\n const handleFocus = (event: FocusEvent<HTMLUListElement>) => {\n focusHandler(event);\n onFocus?.(event);\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLUListElement>) => {\n if (disableFocus) {\n event.preventDefault();\n return;\n }\n keyDownHandler(event);\n onKeyDown?.(event);\n };\n\n const handleBlur = (event: FocusEvent<HTMLUListElement>) => {\n blurHandler();\n onBlur?.(event);\n };\n\n const handleMouseOver = (event: MouseEvent<HTMLUListElement>) => {\n mouseOverHandler();\n onMouseOver?.(event);\n };\n\n return (\n <ListNextContext.Provider value={contextValue}>\n <ul\n // TODO: fix type from useIsFocusVisible\n // @ts-ignore\n ref={setListRef}\n id={listId}\n className={clsx(withBaseName(), className)}\n role=\"listbox\"\n tabIndex={disabled || disableFocus ? -1 : 0}\n aria-activedescendant={disabled ? undefined : activeDescendant}\n aria-disabled={disabled}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n onBlur={handleBlur}\n onMouseOver={handleMouseOver}\n {...rest}\n >\n {children}\n </ul>\n </ListNextContext.Provider>\n );\n },\n);\n"],"names":["ListNext","listNextCss"],"mappings":"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"}
1
+ {"version":3,"file":"ListNext.js","sources":["../src/list-next/ListNext.tsx"],"sourcesContent":["import { makePrefixer, useForkRef, useId } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n type FocusEvent,\n forwardRef,\n type KeyboardEvent,\n type MouseEvent,\n type SyntheticEvent,\n useRef,\n} from \"react\";\nimport listNextCss from \"./ListNext.css\";\nimport { ListNextContext } from \"./ListNextContext\";\nimport { useList } from \"./useList\";\n\nconst withBaseName = makePrefixer(\"saltListNext\");\n\nexport interface ListNextProps\n extends Omit<ComponentPropsWithoutRef<\"ul\">, \"onChange\" | \"onSelect\"> {\n /**\n * If true, all items in list will be disabled.\n */\n disabled?: boolean;\n /* If `true`, the component will not receive focus. */\n disableFocus?: boolean;\n /* Value for the controlled version. */\n highlightedItem?: string;\n /* Value for the controlled version. */\n selected?: string;\n /* Callback for change event. Returns current selection.*/\n onChange?: (\n event: SyntheticEvent,\n data: { value: string | undefined },\n ) => void;\n /* Callback for select event. Returns new selected item.*/\n onSelect?: (event: SyntheticEvent, data: { value: string }) => void;\n /* Initial selection. */\n defaultSelected?: string;\n}\n\nexport const ListNext = forwardRef<HTMLUListElement, ListNextProps>(\n function ListNext(\n {\n children,\n className,\n disabled,\n disableFocus,\n id,\n onSelect,\n onFocus,\n onBlur,\n onKeyDown,\n onMouseOver,\n highlightedItem,\n selected,\n defaultSelected,\n onChange,\n ...rest\n },\n ref,\n ) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-list-next\",\n css: listNextCss,\n window: targetWindow,\n });\n\n const listId = useId(id);\n const listRef = useRef<HTMLUListElement>(null);\n const handleRef = useForkRef(listRef, ref);\n const {\n focusHandler,\n keyDownHandler,\n blurHandler,\n mouseOverHandler,\n activeDescendant,\n contextValue,\n focusVisibleRef,\n } = useList({\n disabled,\n highlightedItem,\n selected,\n defaultSelected,\n onChange,\n onSelect,\n id: listId,\n ref: listRef,\n });\n\n const setListRef = useForkRef(focusVisibleRef, handleRef);\n\n const handleFocus = (event: FocusEvent<HTMLUListElement>) => {\n focusHandler(event);\n onFocus?.(event);\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLUListElement>) => {\n if (disableFocus) {\n event.preventDefault();\n return;\n }\n keyDownHandler(event);\n onKeyDown?.(event);\n };\n\n const handleBlur = (event: FocusEvent<HTMLUListElement>) => {\n blurHandler();\n onBlur?.(event);\n };\n\n const handleMouseOver = (event: MouseEvent<HTMLUListElement>) => {\n mouseOverHandler();\n onMouseOver?.(event);\n };\n\n return (\n <ListNextContext.Provider value={contextValue}>\n <ul\n // TODO: fix type from useIsFocusVisible\n // @ts-ignore\n ref={setListRef}\n id={listId}\n className={clsx(withBaseName(), className)}\n role=\"listbox\"\n tabIndex={disabled || disableFocus ? -1 : 0}\n aria-activedescendant={disabled ? undefined : activeDescendant}\n aria-disabled={disabled}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n onBlur={handleBlur}\n onMouseOver={handleMouseOver}\n {...rest}\n >\n {children}\n </ul>\n </ListNextContext.Provider>\n );\n },\n);\n"],"names":["ListNext","listNextCss"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { makePrefixer } from '@salt-ds/core';
3
- import { clsx } from 'clsx';
4
- import { forwardRef } from 'react';
5
3
  import { useComponentCssInjection } from '@salt-ds/styles';
6
4
  import { useWindow } from '@salt-ds/window';
5
+ import { clsx } from 'clsx';
6
+ import { forwardRef } from 'react';
7
7
  import css_248z from './Logo.css.js';
8
8
 
9
9
  const withBaseName = makePrefixer("saltLogo");
@@ -1 +1 @@
1
- {"version":3,"file":"Logo.js","sources":["../src/logo/Logo.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { clsx } from \"clsx\";\nimport { type ComponentPropsWithoutRef, forwardRef } from \"react\";\n\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\n\nimport logoCss from \"./Logo.css\";\n\nexport type LogoProps = ComponentPropsWithoutRef<\"span\">;\n\nconst withBaseName = makePrefixer(\"saltLogo\");\n\nexport const Logo = forwardRef<HTMLSpanElement, LogoProps>(\n function Logo(props, ref) {\n const { className, ...rest } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-logo\",\n css: logoCss,\n window: targetWindow,\n });\n\n return (\n <span className={clsx(withBaseName(), className)} ref={ref} {...rest} />\n );\n },\n);\n"],"names":["Logo","logoCss"],"mappings":";;;;;;;;AAWA,MAAM,YAAA,GAAe,aAAa,UAAU,CAAA;AAErC,MAAM,IAAO,GAAA,UAAA;AAAA,EAClB,SAASA,KAAK,CAAA,KAAA,EAAO,GAAK,EAAA;AACxB,IAAA,MAAM,EAAE,SAAA,EAAW,GAAG,IAAA,EAAS,GAAA,KAAA;AAE/B,IAAA,MAAM,eAAe,SAAU,EAAA;AAC/B,IAAyB,wBAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,WAAA;AAAA,MACR,GAAK,EAAAC,QAAA;AAAA,MACL,MAAQ,EAAA;AAAA,KACT,CAAA;AAED,IACE,uBAAA,GAAA,CAAC,MAAK,EAAA,EAAA,SAAA,EAAW,IAAK,CAAA,YAAA,IAAgB,SAAS,CAAA,EAAG,GAAW,EAAA,GAAG,IAAM,EAAA,CAAA;AAAA;AAG5E;;;;"}
1
+ {"version":3,"file":"Logo.js","sources":["../src/logo/Logo.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport { type ComponentPropsWithoutRef, forwardRef } from \"react\";\n\nimport logoCss from \"./Logo.css\";\n\nexport type LogoProps = ComponentPropsWithoutRef<\"span\">;\n\nconst withBaseName = makePrefixer(\"saltLogo\");\n\nexport const Logo = forwardRef<HTMLSpanElement, LogoProps>(\n function Logo(props, ref) {\n const { className, ...rest } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-logo\",\n css: logoCss,\n window: targetWindow,\n });\n\n return (\n <span className={clsx(withBaseName(), className)} ref={ref} {...rest} />\n );\n },\n);\n"],"names":["Logo","logoCss"],"mappings":";;;;;;;;AAUA,MAAM,YAAA,GAAe,aAAa,UAAU,CAAA;AAErC,MAAM,IAAO,GAAA,UAAA;AAAA,EAClB,SAASA,KAAK,CAAA,KAAA,EAAO,GAAK,EAAA;AACxB,IAAA,MAAM,EAAE,SAAA,EAAW,GAAG,IAAA,EAAS,GAAA,KAAA;AAE/B,IAAA,MAAM,eAAe,SAAU,EAAA;AAC/B,IAAyB,wBAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,WAAA;AAAA,MACR,GAAK,EAAAC,QAAA;AAAA,MACL,MAAQ,EAAA;AAAA,KACT,CAAA;AAED,IACE,uBAAA,GAAA,CAAC,MAAK,EAAA,EAAA,SAAA,EAAW,IAAK,CAAA,YAAA,IAAgB,SAAS,CAAA,EAAG,GAAW,EAAA,GAAG,IAAM,EAAA,CAAA;AAAA;AAG5E;;;;"}
@@ -1,4 +1,4 @@
1
- var css_248z = "/* Styles for LogoSeparator */\n.saltLogoSeparator {\n height: var(--salt-size-separator-height);\n border-right: var(--salt-size-fixed-100) var(--salt-separable-borderStyle) var(--salt-separable-primary-borderColor);\n}\n";
1
+ var css_248z = "/* Styles for LogoSeparator */\n.saltLogoSeparator {\n height: var(--salt-size-separator-height);\n border-right: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--salt-separable-primary-borderColor);\n}\n";
2
2
 
3
3
  export { css_248z as default };
4
4
  //# sourceMappingURL=LogoSeparator.css.js.map
@@ -1,9 +1,9 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { makePrefixer } from '@salt-ds/core';
3
- import { clsx } from 'clsx';
4
- import { forwardRef } from 'react';
5
3
  import { useComponentCssInjection } from '@salt-ds/styles';
6
4
  import { useWindow } from '@salt-ds/window';
5
+ import { clsx } from 'clsx';
6
+ import { forwardRef } from 'react';
7
7
  import css_248z from './LogoSeparator.css.js';
8
8
 
9
9
  const withBaseName = makePrefixer("saltLogoSeparator");
@@ -1 +1 @@
1
- {"version":3,"file":"LogoSeparator.js","sources":["../src/logo/LogoSeparator.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { clsx } from \"clsx\";\nimport { type ComponentPropsWithoutRef, forwardRef } from \"react\";\n\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\n\nimport logoSeparatorCss from \"./LogoSeparator.css\";\n\nexport type LogoSeparatorProps = ComponentPropsWithoutRef<\"span\">;\n\nconst withBaseName = makePrefixer(\"saltLogoSeparator\");\n\nexport const LogoSeparator = forwardRef<HTMLImageElement, LogoSeparatorProps>(\n function LogoSeparator(props, ref) {\n const { className, ...rest } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-logo-separator\",\n css: logoSeparatorCss,\n window: targetWindow,\n });\n\n return (\n <span {...rest} className={clsx(withBaseName(), className)} ref={ref} />\n );\n },\n);\n"],"names":["LogoSeparator","logoSeparatorCss"],"mappings":";;;;;;;;AAWA,MAAM,YAAA,GAAe,aAAa,mBAAmB,CAAA;AAE9C,MAAM,aAAgB,GAAA,UAAA;AAAA,EAC3B,SAASA,cAAc,CAAA,KAAA,EAAO,GAAK,EAAA;AACjC,IAAA,MAAM,EAAE,SAAA,EAAW,GAAG,IAAA,EAAS,GAAA,KAAA;AAE/B,IAAA,MAAM,eAAe,SAAU,EAAA;AAC/B,IAAyB,wBAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,qBAAA;AAAA,MACR,GAAK,EAAAC,QAAA;AAAA,MACL,MAAQ,EAAA;AAAA,KACT,CAAA;AAED,IACE,uBAAA,GAAA,CAAC,MAAM,EAAA,EAAA,GAAG,IAAM,EAAA,SAAA,EAAW,KAAK,YAAa,EAAA,EAAG,SAAS,CAAA,EAAG,GAAU,EAAA,CAAA;AAAA;AAG5E;;;;"}
1
+ {"version":3,"file":"LogoSeparator.js","sources":["../src/logo/LogoSeparator.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport { type ComponentPropsWithoutRef, forwardRef } from \"react\";\n\nimport logoSeparatorCss from \"./LogoSeparator.css\";\n\nexport type LogoSeparatorProps = ComponentPropsWithoutRef<\"span\">;\n\nconst withBaseName = makePrefixer(\"saltLogoSeparator\");\n\nexport const LogoSeparator = forwardRef<HTMLImageElement, LogoSeparatorProps>(\n function LogoSeparator(props, ref) {\n const { className, ...rest } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-logo-separator\",\n css: logoSeparatorCss,\n window: targetWindow,\n });\n\n return (\n <span {...rest} className={clsx(withBaseName(), className)} ref={ref} />\n );\n },\n);\n"],"names":["LogoSeparator","logoSeparatorCss"],"mappings":";;;;;;;;AAUA,MAAM,YAAA,GAAe,aAAa,mBAAmB,CAAA;AAE9C,MAAM,aAAgB,GAAA,UAAA;AAAA,EAC3B,SAASA,cAAc,CAAA,KAAA,EAAO,GAAK,EAAA;AACjC,IAAA,MAAM,EAAE,SAAA,EAAW,GAAG,IAAA,EAAS,GAAA,KAAA;AAE/B,IAAA,MAAM,eAAe,SAAU,EAAA;AAC/B,IAAyB,wBAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,qBAAA;AAAA,MACR,GAAK,EAAAC,QAAA;AAAA,MACL,MAAQ,EAAA;AAAA,KACT,CAAA;AAED,IACE,uBAAA,GAAA,CAAC,MAAM,EAAA,EAAA,GAAG,IAAM,EAAA,SAAA,EAAW,KAAK,YAAa,EAAA,EAAG,SAAS,CAAA,EAAG,GAAU,EAAA,CAAA;AAAA;AAG5E;;;;"}
@@ -3,8 +3,8 @@ import { useComponentCssInjection } from '@salt-ds/styles';
3
3
  import { useWindow } from '@salt-ds/window';
4
4
  import { forwardRef, useState, useCallback } from 'react';
5
5
  import { CascadingMenu } from '../cascading-menu/CascadingMenu.js';
6
- import { MenuButtonTrigger } from './MenuButtonTrigger.js';
7
6
  import css_248z from './MenuButton.css.js';
7
+ import { MenuButtonTrigger } from './MenuButtonTrigger.js';
8
8
 
9
9
  const MenuButton = forwardRef(
10
10
  function MenuButton2({ variant = "secondary", CascadingMenuProps = {}, children, ...restProps }, ref) {
@@ -1 +1 @@
1
- {"version":3,"file":"MenuButton.js","sources":["../src/menu-button/MenuButton.tsx"],"sourcesContent":["import type { ButtonProps } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { type ReactNode, forwardRef, useCallback, useState } from \"react\";\nimport { CascadingMenu, type CascadingMenuProps } from \"../cascading-menu\";\nimport { MenuButtonTrigger } from \"./MenuButtonTrigger\";\n\nimport menuButtonCss from \"./MenuButton.css\";\n\nexport interface MenuButtonProps extends ButtonProps {\n CascadingMenuProps: CascadingMenuProps;\n children: ReactNode;\n className?: string;\n hideCaret?: boolean;\n}\n\nexport const MenuButton = forwardRef<HTMLButtonElement, MenuButtonProps>(\n function MenuButton(\n { variant = \"secondary\", CascadingMenuProps = {}, children, ...restProps },\n ref,\n ) {\n const {\n initialSource = { menuItems: [] },\n onOpen,\n onClose,\n ...restMenuProps\n } = CascadingMenuProps;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-menu-button\",\n css: menuButtonCss,\n window: targetWindow,\n });\n\n const [isMenuOpen, setMenuOpen] = useState(false);\n\n const handleOpen = useCallback(() => {\n setMenuOpen(true);\n onOpen?.();\n }, [onOpen]);\n\n const handleClose = useCallback(() => {\n setMenuOpen(false);\n onClose?.();\n }, [onClose]);\n\n return (\n <CascadingMenu\n initialSource={initialSource}\n onClose={handleClose}\n onOpen={handleOpen}\n {...restMenuProps}\n >\n <MenuButtonTrigger\n aria-expanded={isMenuOpen}\n aria-haspopup\n isMenuOpen={isMenuOpen}\n ref={ref}\n variant={variant}\n {...restProps}\n >\n {children}\n </MenuButtonTrigger>\n </CascadingMenu>\n );\n },\n);\n"],"names":["MenuButton","menuButtonCss"],"mappings":";;;;;;;;AAgBO,MAAM,UAAa,GAAA,UAAA;AAAA,EACxB,SAASA,WAAAA,CACP,EAAE,OAAA,GAAU,WAAa,EAAA,kBAAA,GAAqB,EAAC,EAAG,QAAU,EAAA,GAAG,SAAU,EAAA,EACzE,GACA,EAAA;AACA,IAAM,MAAA;AAAA,MACJ,aAAgB,GAAA,EAAE,SAAW,EAAA,EAAG,EAAA;AAAA,MAChC,MAAA;AAAA,MACA,OAAA;AAAA,MACA,GAAG;AAAA,KACD,GAAA,kBAAA;AAEJ,IAAA,MAAM,eAAe,SAAU,EAAA;AAC/B,IAAyB,wBAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,kBAAA;AAAA,MACR,GAAK,EAAAC,QAAA;AAAA,MACL,MAAQ,EAAA;AAAA,KACT,CAAA;AAED,IAAA,MAAM,CAAC,UAAA,EAAY,WAAW,CAAA,GAAI,SAAS,KAAK,CAAA;AAEhD,IAAM,MAAA,UAAA,GAAa,YAAY,MAAM;AACnC,MAAA,WAAA,CAAY,IAAI,CAAA;AAChB,MAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,EAAA;AAAA,KACF,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,IAAM,MAAA,WAAA,GAAc,YAAY,MAAM;AACpC,MAAA,WAAA,CAAY,KAAK,CAAA;AACjB,MAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,EAAA;AAAA,KACF,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,IACE,uBAAA,GAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QACC,aAAA;AAAA,QACA,OAAS,EAAA,WAAA;AAAA,QACT,MAAQ,EAAA,UAAA;AAAA,QACP,GAAG,aAAA;AAAA,QAEJ,QAAA,kBAAA,GAAA;AAAA,UAAC,iBAAA;AAAA,UAAA;AAAA,YACC,eAAe,EAAA,UAAA;AAAA,YACf,eAAa,EAAA,IAAA;AAAA,YACb,UAAA;AAAA,YACA,GAAA;AAAA,YACA,OAAA;AAAA,YACC,GAAG,SAAA;AAAA,YAEH;AAAA;AAAA;AACH;AAAA,KACF;AAAA;AAGN;;;;"}
1
+ {"version":3,"file":"MenuButton.js","sources":["../src/menu-button/MenuButton.tsx"],"sourcesContent":["import type { ButtonProps } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { forwardRef, type ReactNode, useCallback, useState } from \"react\";\nimport { CascadingMenu, type CascadingMenuProps } from \"../cascading-menu\";\nimport menuButtonCss from \"./MenuButton.css\";\nimport { MenuButtonTrigger } from \"./MenuButtonTrigger\";\n\nexport interface MenuButtonProps extends ButtonProps {\n CascadingMenuProps: CascadingMenuProps;\n children: ReactNode;\n className?: string;\n hideCaret?: boolean;\n}\n\nexport const MenuButton = forwardRef<HTMLButtonElement, MenuButtonProps>(\n function MenuButton(\n { variant = \"secondary\", CascadingMenuProps = {}, children, ...restProps },\n ref,\n ) {\n const {\n initialSource = { menuItems: [] },\n onOpen,\n onClose,\n ...restMenuProps\n } = CascadingMenuProps;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-menu-button\",\n css: menuButtonCss,\n window: targetWindow,\n });\n\n const [isMenuOpen, setMenuOpen] = useState(false);\n\n const handleOpen = useCallback(() => {\n setMenuOpen(true);\n onOpen?.();\n }, [onOpen]);\n\n const handleClose = useCallback(() => {\n setMenuOpen(false);\n onClose?.();\n }, [onClose]);\n\n return (\n <CascadingMenu\n initialSource={initialSource}\n onClose={handleClose}\n onOpen={handleOpen}\n {...restMenuProps}\n >\n <MenuButtonTrigger\n aria-expanded={isMenuOpen}\n aria-haspopup\n isMenuOpen={isMenuOpen}\n ref={ref}\n variant={variant}\n {...restProps}\n >\n {children}\n </MenuButtonTrigger>\n </CascadingMenu>\n );\n },\n);\n"],"names":["MenuButton","menuButtonCss"],"mappings":";;;;;;;;AAeO,MAAM,UAAa,GAAA,UAAA;AAAA,EACxB,SAASA,WAAAA,CACP,EAAE,OAAA,GAAU,WAAa,EAAA,kBAAA,GAAqB,EAAC,EAAG,QAAU,EAAA,GAAG,SAAU,EAAA,EACzE,GACA,EAAA;AACA,IAAM,MAAA;AAAA,MACJ,aAAgB,GAAA,EAAE,SAAW,EAAA,EAAG,EAAA;AAAA,MAChC,MAAA;AAAA,MACA,OAAA;AAAA,MACA,GAAG;AAAA,KACD,GAAA,kBAAA;AAEJ,IAAA,MAAM,eAAe,SAAU,EAAA;AAC/B,IAAyB,wBAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,kBAAA;AAAA,MACR,GAAK,EAAAC,QAAA;AAAA,MACL,MAAQ,EAAA;AAAA,KACT,CAAA;AAED,IAAA,MAAM,CAAC,UAAA,EAAY,WAAW,CAAA,GAAI,SAAS,KAAK,CAAA;AAEhD,IAAM,MAAA,UAAA,GAAa,YAAY,MAAM;AACnC,MAAA,WAAA,CAAY,IAAI,CAAA;AAChB,MAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,EAAA;AAAA,KACF,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,IAAM,MAAA,WAAA,GAAc,YAAY,MAAM;AACpC,MAAA,WAAA,CAAY,KAAK,CAAA;AACjB,MAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,EAAA;AAAA,KACF,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,IACE,uBAAA,GAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QACC,aAAA;AAAA,QACA,OAAS,EAAA,WAAA;AAAA,QACT,MAAQ,EAAA,UAAA;AAAA,QACP,GAAG,aAAA;AAAA,QAEJ,QAAA,kBAAA,GAAA;AAAA,UAAC,iBAAA;AAAA,UAAA;AAAA,YACC,eAAe,EAAA,UAAA;AAAA,YACf,eAAa,EAAA,IAAA;AAAA,YACb,UAAA;AAAA,YACA,GAAA;AAAA,YACA,OAAA;AAAA,YACC,GAAG,SAAA;AAAA,YAEH;AAAA;AAAA;AACH;AAAA,KACF;AAAA;AAGN;;;;"}
@@ -1,9 +1,9 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { makePrefixer, useIcon, Button } from '@salt-ds/core';
3
- import { clsx } from 'clsx';
4
- import { forwardRef } from 'react';
5
3
  import { useComponentCssInjection } from '@salt-ds/styles';
6
4
  import { useWindow } from '@salt-ds/window';
5
+ import { clsx } from 'clsx';
6
+ import { forwardRef } from 'react';
7
7
  import css_248z from './MenuButtonTrigger.css.js';
8
8
 
9
9
  const withBaseName = makePrefixer("saltMenuButtonTrigger");
@@ -1 +1 @@
1
- {"version":3,"file":"MenuButtonTrigger.js","sources":["../src/menu-button/MenuButtonTrigger.tsx"],"sourcesContent":["import { Button, type ButtonProps, makePrefixer, useIcon } from \"@salt-ds/core\";\nimport { clsx } from \"clsx\";\nimport { type ReactNode, forwardRef } from \"react\";\n\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\n\nimport menuButtonTrigger from \"./MenuButtonTrigger.css\";\n\nconst withBaseName = makePrefixer(\"saltMenuButtonTrigger\");\n\nexport interface MenuButtonTriggerProps extends ButtonProps {\n className?: string;\n hideCaret?: boolean;\n isMenuOpen?: boolean;\n children?: ReactNode;\n}\n\nexport const MenuButtonTrigger = forwardRef<\n HTMLButtonElement,\n MenuButtonTriggerProps\n>(function MenuButtonTrigger(\n { className, hideCaret, isMenuOpen, children, ...rest },\n ref,\n) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-menu-button-trigger\",\n css: menuButtonTrigger,\n window: targetWindow,\n });\n const { ExpandIcon } = useIcon();\n\n return (\n <Button\n ref={ref}\n className={clsx(withBaseName(), className, {\n [withBaseName(\"buttonOpen\")]: isMenuOpen,\n })}\n data-testid=\"menu-button-trigger\"\n {...rest}\n >\n {children}\n {!hideCaret && (\n <ExpandIcon\n className={withBaseName(\"caretIcon\")}\n data-testid=\"menu-button-trigger-caret\"\n />\n )}\n </Button>\n );\n});\n"],"names":["MenuButtonTrigger","menuButtonTrigger"],"mappings":";;;;;;;;AASA,MAAM,YAAA,GAAe,aAAa,uBAAuB,CAAA;AASlD,MAAM,iBAAoB,GAAA,UAAA,CAG/B,SAASA,kBAAAA,CACT,EAAE,SAAA,EAAW,SAAW,EAAA,UAAA,EAAY,QAAU,EAAA,GAAG,IAAK,EAAA,EACtD,GACA,EAAA;AACA,EAAA,MAAM,eAAe,SAAU,EAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,0BAAA;AAAA,IACR,GAAK,EAAAC,QAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AACD,EAAM,MAAA,EAAE,UAAW,EAAA,GAAI,OAAQ,EAAA;AAE/B,EACE,uBAAA,IAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAW,EAAA,IAAA,CAAK,YAAa,EAAA,EAAG,SAAW,EAAA;AAAA,QACzC,CAAC,YAAA,CAAa,YAAY,CAAC,GAAG;AAAA,OAC/B,CAAA;AAAA,MACD,aAAY,EAAA,qBAAA;AAAA,MACX,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,QACA,CAAC,SACA,oBAAA,GAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,aAAa,WAAW,CAAA;AAAA,YACnC,aAAY,EAAA;AAAA;AAAA;AACd;AAAA;AAAA,GAEJ;AAEJ,CAAC;;;;"}
1
+ {"version":3,"file":"MenuButtonTrigger.js","sources":["../src/menu-button/MenuButtonTrigger.tsx"],"sourcesContent":["import { Button, type ButtonProps, makePrefixer, useIcon } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport { forwardRef, type ReactNode } from \"react\";\n\nimport menuButtonTrigger from \"./MenuButtonTrigger.css\";\n\nconst withBaseName = makePrefixer(\"saltMenuButtonTrigger\");\n\nexport interface MenuButtonTriggerProps extends ButtonProps {\n className?: string;\n hideCaret?: boolean;\n isMenuOpen?: boolean;\n children?: ReactNode;\n}\n\nexport const MenuButtonTrigger = forwardRef<\n HTMLButtonElement,\n MenuButtonTriggerProps\n>(function MenuButtonTrigger(\n { className, hideCaret, isMenuOpen, children, ...rest },\n ref,\n) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-menu-button-trigger\",\n css: menuButtonTrigger,\n window: targetWindow,\n });\n const { ExpandIcon } = useIcon();\n\n return (\n <Button\n ref={ref}\n className={clsx(withBaseName(), className, {\n [withBaseName(\"buttonOpen\")]: isMenuOpen,\n })}\n data-testid=\"menu-button-trigger\"\n {...rest}\n >\n {children}\n {!hideCaret && (\n <ExpandIcon\n className={withBaseName(\"caretIcon\")}\n data-testid=\"menu-button-trigger-caret\"\n />\n )}\n </Button>\n );\n});\n"],"names":["MenuButtonTrigger","menuButtonTrigger"],"mappings":";;;;;;;;AAQA,MAAM,YAAA,GAAe,aAAa,uBAAuB,CAAA;AASlD,MAAM,iBAAoB,GAAA,UAAA,CAG/B,SAASA,kBAAAA,CACT,EAAE,SAAA,EAAW,SAAW,EAAA,UAAA,EAAY,QAAU,EAAA,GAAG,IAAK,EAAA,EACtD,GACA,EAAA;AACA,EAAA,MAAM,eAAe,SAAU,EAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,0BAAA;AAAA,IACR,GAAK,EAAAC,QAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AACD,EAAM,MAAA,EAAE,UAAW,EAAA,GAAI,OAAQ,EAAA;AAE/B,EACE,uBAAA,IAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAW,EAAA,IAAA,CAAK,YAAa,EAAA,EAAG,SAAW,EAAA;AAAA,QACzC,CAAC,YAAA,CAAa,YAAY,CAAC,GAAG;AAAA,OAC/B,CAAA;AAAA,MACD,aAAY,EAAA,qBAAA;AAAA,MACX,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,QACA,CAAC,SACA,oBAAA,GAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,aAAa,WAAW,CAAA;AAAA,YACnC,aAAY,EAAA;AAAA;AAAA;AACd;AAAA;AAAA,GAEJ;AAEJ,CAAC;;;;"}
@@ -1,10 +1,10 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { makePrefixer, useId } from '@salt-ds/core';
3
+ import { useComponentCssInjection } from '@salt-ds/styles';
4
+ import { useWindow } from '@salt-ds/window';
3
5
  import { clsx } from 'clsx';
4
6
  import { forwardRef, useMemo } from 'react';
5
7
  import { MetricContextProvider } from './internal/MetricContext.js';
6
- import { useComponentCssInjection } from '@salt-ds/styles';
7
- import { useWindow } from '@salt-ds/window';
8
8
  import css_248z from './Metric.css.js';
9
9
 
10
10
  const withBaseName = makePrefixer("saltMetric");
@@ -1 +1 @@
1
- {"version":3,"file":"Metric.js","sources":["../src/metric/Metric.tsx"],"sourcesContent":["import { makePrefixer, useId } from \"@salt-ds/core\";\nimport { clsx } from \"clsx\";\nimport { type HTMLAttributes, forwardRef, useMemo } from \"react\";\nimport { MetricContextProvider, type MetricContextValue } from \"./internal\";\n\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\n\nimport metricCSS from \"./Metric.css\";\n\nconst withBaseName = makePrefixer(\"saltMetric\");\n\nexport interface MetricProps\n extends MetricContextValue,\n HTMLAttributes<HTMLDivElement> {\n /**\n * The aria-level attribute to be applied to the heading component. The default is 2.\n *\n * As an ADA requirement, the heading component should be the first valid component inside the Metric. It is the title\n * if <MetricHeader/> is placed before <MerticContent/>. It is the main value if <MerticContent/> is placed before <MetricHeader/>.\n */\n headingAriaLevel?: number;\n /**\n * This prop is used to help implement the accessibility logic.\n * If you don't provide this prop. It falls back to a randomly generated id.\n */\n id?: string;\n}\n\nexport const Metric = forwardRef<HTMLDivElement, MetricProps>(function Metric(\n {\n className,\n children,\n direction,\n showIndicator,\n align = \"left\",\n orientation = \"vertical\",\n indicatorPosition = \"end\",\n headingAriaLevel = 2,\n id: idProp,\n size = \"medium\",\n ...restProps\n },\n ref,\n) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-metric\",\n css: metricCSS,\n window: targetWindow,\n });\n\n const id = useId(idProp);\n const titleId = `metric-title-${id}`;\n const subtitleId = `metric-subtitle-${id}`;\n const valueId = `metric-value-${id}`;\n\n const value = useMemo(\n () => ({\n align,\n direction,\n orientation,\n showIndicator,\n indicatorPosition,\n headingAriaLevel,\n size,\n titleId,\n subtitleId,\n valueId,\n }),\n [\n align,\n direction,\n orientation,\n showIndicator,\n indicatorPosition,\n headingAriaLevel,\n size,\n titleId,\n subtitleId,\n valueId,\n ],\n );\n\n return (\n <MetricContextProvider value={value}>\n <div\n {...restProps}\n className={clsx(\n withBaseName(),\n withBaseName(`size-${size}`),\n {\n [withBaseName(`direction-${direction}`)]: direction,\n [withBaseName(`orientation-${orientation}`)]: orientation,\n [withBaseName(`align-${align}`)]: align,\n },\n className,\n )}\n id={id}\n ref={ref}\n >\n {children}\n </div>\n </MetricContextProvider>\n );\n});\n"],"names":["Metric","metricCSS"],"mappings":";;;;;;;;;AAUA,MAAM,YAAA,GAAe,aAAa,YAAY,CAAA;AAmBjC,MAAA,MAAA,GAAS,UAAwC,CAAA,SAASA,OACrE,CAAA;AAAA,EACE,SAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,aAAA;AAAA,EACA,KAAQ,GAAA,MAAA;AAAA,EACR,WAAc,GAAA,UAAA;AAAA,EACd,iBAAoB,GAAA,KAAA;AAAA,EACpB,gBAAmB,GAAA,CAAA;AAAA,EACnB,EAAI,EAAA,MAAA;AAAA,EACJ,IAAO,GAAA,QAAA;AAAA,EACP,GAAG;AACL,CAAA,EACA,GACA,EAAA;AACA,EAAA,MAAM,eAAe,SAAU,EAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,aAAA;AAAA,IACR,GAAK,EAAAC,QAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAM,MAAA,EAAA,GAAK,MAAM,MAAM,CAAA;AACvB,EAAM,MAAA,OAAA,GAAU,gBAAgB,EAAE,CAAA,CAAA;AAClC,EAAM,MAAA,UAAA,GAAa,mBAAmB,EAAE,CAAA,CAAA;AACxC,EAAM,MAAA,OAAA,GAAU,gBAAgB,EAAE,CAAA,CAAA;AAElC,EAAA,MAAM,KAAQ,GAAA,OAAA;AAAA,IACZ,OAAO;AAAA,MACL,KAAA;AAAA,MACA,SAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,iBAAA;AAAA,MACA,gBAAA;AAAA,MACA,IAAA;AAAA,MACA,OAAA;AAAA,MACA,UAAA;AAAA,MACA;AAAA,KACF,CAAA;AAAA,IACA;AAAA,MACE,KAAA;AAAA,MACA,SAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,iBAAA;AAAA,MACA,gBAAA;AAAA,MACA,IAAA;AAAA,MACA,OAAA;AAAA,MACA,UAAA;AAAA,MACA;AAAA;AACF,GACF;AAEA,EACE,uBAAA,GAAA,CAAC,yBAAsB,KACrB,EAAA,QAAA,kBAAA,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,SAAA;AAAA,MACJ,SAAW,EAAA,IAAA;AAAA,QACT,YAAa,EAAA;AAAA,QACb,YAAA,CAAa,CAAQ,KAAA,EAAA,IAAI,CAAE,CAAA,CAAA;AAAA,QAC3B;AAAA,UACE,CAAC,YAAa,CAAA,CAAA,UAAA,EAAa,SAAS,CAAA,CAAE,CAAC,GAAG,SAAA;AAAA,UAC1C,CAAC,YAAa,CAAA,CAAA,YAAA,EAAe,WAAW,CAAA,CAAE,CAAC,GAAG,WAAA;AAAA,UAC9C,CAAC,YAAa,CAAA,CAAA,MAAA,EAAS,KAAK,CAAA,CAAE,CAAC,GAAG;AAAA,SACpC;AAAA,QACA;AAAA,OACF;AAAA,MACA,EAAA;AAAA,MACA,GAAA;AAAA,MAEC;AAAA;AAAA,GAEL,EAAA,CAAA;AAEJ,CAAC;;;;"}
1
+ {"version":3,"file":"Metric.js","sources":["../src/metric/Metric.tsx"],"sourcesContent":["import { makePrefixer, useId } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport { forwardRef, type HTMLAttributes, useMemo } from \"react\";\nimport { MetricContextProvider, type MetricContextValue } from \"./internal\";\n\nimport metricCSS from \"./Metric.css\";\n\nconst withBaseName = makePrefixer(\"saltMetric\");\n\nexport interface MetricProps\n extends MetricContextValue,\n HTMLAttributes<HTMLDivElement> {\n /**\n * The aria-level attribute to be applied to the heading component. The default is 2.\n *\n * As an ADA requirement, the heading component should be the first valid component inside the Metric. It is the title\n * if <MetricHeader/> is placed before <MerticContent/>. It is the main value if <MerticContent/> is placed before <MetricHeader/>.\n */\n headingAriaLevel?: number;\n /**\n * This prop is used to help implement the accessibility logic.\n * If you don't provide this prop. It falls back to a randomly generated id.\n */\n id?: string;\n}\n\nexport const Metric = forwardRef<HTMLDivElement, MetricProps>(function Metric(\n {\n className,\n children,\n direction,\n showIndicator,\n align = \"left\",\n orientation = \"vertical\",\n indicatorPosition = \"end\",\n headingAriaLevel = 2,\n id: idProp,\n size = \"medium\",\n ...restProps\n },\n ref,\n) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-metric\",\n css: metricCSS,\n window: targetWindow,\n });\n\n const id = useId(idProp);\n const titleId = `metric-title-${id}`;\n const subtitleId = `metric-subtitle-${id}`;\n const valueId = `metric-value-${id}`;\n\n const value = useMemo(\n () => ({\n align,\n direction,\n orientation,\n showIndicator,\n indicatorPosition,\n headingAriaLevel,\n size,\n titleId,\n subtitleId,\n valueId,\n }),\n [\n align,\n direction,\n orientation,\n showIndicator,\n indicatorPosition,\n headingAriaLevel,\n size,\n titleId,\n subtitleId,\n valueId,\n ],\n );\n\n return (\n <MetricContextProvider value={value}>\n <div\n {...restProps}\n className={clsx(\n withBaseName(),\n withBaseName(`size-${size}`),\n {\n [withBaseName(`direction-${direction}`)]: direction,\n [withBaseName(`orientation-${orientation}`)]: orientation,\n [withBaseName(`align-${align}`)]: align,\n },\n className,\n )}\n id={id}\n ref={ref}\n >\n {children}\n </div>\n </MetricContextProvider>\n );\n});\n"],"names":["Metric","metricCSS"],"mappings":";;;;;;;;;AASA,MAAM,YAAA,GAAe,aAAa,YAAY,CAAA;AAmBjC,MAAA,MAAA,GAAS,UAAwC,CAAA,SAASA,OACrE,CAAA;AAAA,EACE,SAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,aAAA;AAAA,EACA,KAAQ,GAAA,MAAA;AAAA,EACR,WAAc,GAAA,UAAA;AAAA,EACd,iBAAoB,GAAA,KAAA;AAAA,EACpB,gBAAmB,GAAA,CAAA;AAAA,EACnB,EAAI,EAAA,MAAA;AAAA,EACJ,IAAO,GAAA,QAAA;AAAA,EACP,GAAG;AACL,CAAA,EACA,GACA,EAAA;AACA,EAAA,MAAM,eAAe,SAAU,EAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,aAAA;AAAA,IACR,GAAK,EAAAC,QAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAM,MAAA,EAAA,GAAK,MAAM,MAAM,CAAA;AACvB,EAAM,MAAA,OAAA,GAAU,gBAAgB,EAAE,CAAA,CAAA;AAClC,EAAM,MAAA,UAAA,GAAa,mBAAmB,EAAE,CAAA,CAAA;AACxC,EAAM,MAAA,OAAA,GAAU,gBAAgB,EAAE,CAAA,CAAA;AAElC,EAAA,MAAM,KAAQ,GAAA,OAAA;AAAA,IACZ,OAAO;AAAA,MACL,KAAA;AAAA,MACA,SAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,iBAAA;AAAA,MACA,gBAAA;AAAA,MACA,IAAA;AAAA,MACA,OAAA;AAAA,MACA,UAAA;AAAA,MACA;AAAA,KACF,CAAA;AAAA,IACA;AAAA,MACE,KAAA;AAAA,MACA,SAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,iBAAA;AAAA,MACA,gBAAA;AAAA,MACA,IAAA;AAAA,MACA,OAAA;AAAA,MACA,UAAA;AAAA,MACA;AAAA;AACF,GACF;AAEA,EACE,uBAAA,GAAA,CAAC,yBAAsB,KACrB,EAAA,QAAA,kBAAA,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,SAAA;AAAA,MACJ,SAAW,EAAA,IAAA;AAAA,QACT,YAAa,EAAA;AAAA,QACb,YAAA,CAAa,CAAQ,KAAA,EAAA,IAAI,CAAE,CAAA,CAAA;AAAA,QAC3B;AAAA,UACE,CAAC,YAAa,CAAA,CAAA,UAAA,EAAa,SAAS,CAAA,CAAE,CAAC,GAAG,SAAA;AAAA,UAC1C,CAAC,YAAa,CAAA,CAAA,YAAA,EAAe,WAAW,CAAA,CAAE,CAAC,GAAG,WAAA;AAAA,UAC9C,CAAC,YAAa,CAAA,CAAA,MAAA,EAAS,KAAK,CAAA,CAAE,CAAC,GAAG;AAAA,SACpC;AAAA,QACA;AAAA,OACF;AAAA,MACA,EAAA;AAAA,MACA,GAAA;AAAA,MAEC;AAAA;AAAA,GAEL,EAAA,CAAA;AAEJ,CAAC;;;;"}
@@ -1,4 +1,4 @@
1
- var css_248z = ".saltMetricContent {\n display: flex;\n flex-direction: column;\n margin-top: var(--metric-content-marginTop, 0px);\n}\n\n.saltMetricContent-value-container {\n align-items: baseline;\n display: flex;\n flex-direction: row;\n gap: calc(var(--salt-size-unit) / 2);\n margin-top: var(--metric-content-valueContainer-marginTop, 0px);\n}\n\n.saltMetric-direction-up .saltMetricContent-indicator {\n fill: var(--salt-status-positive-foreground);\n}\n.saltMetric-direction-up .saltMetricContent-subvalue {\n color: var(--salt-status-positive-foreground);\n}\n\n.saltMetric-direction-down .saltMetricContent-indicator {\n fill: var(--salt-status-negative-foreground);\n}\n.saltMetric-direction-down .saltMetricContent-subvalue {\n color: var(--salt-status-negative-foreground);\n}\n\n.saltMetricContent-subvalue {\n margin-top: var(--metric-content-subvalue-marginTop, 0px);\n}\n\n.saltMetric-align-left .saltMetricContent {\n text-align: left;\n}\n\n.saltMetric-align-center .saltMetricContent {\n align-items: center;\n text-align: center;\n}\n\n.saltMetric-align-right .saltMetricContent {\n align-items: flex-end;\n text-align: right;\n}\n";
1
+ var css_248z = ".saltMetricContent {\n display: flex;\n flex-direction: column;\n margin-top: var(--metric-content-marginTop, 0px);\n}\n\n.saltMetricContent-value-container {\n align-items: baseline;\n display: flex;\n flex-direction: row;\n gap: calc(var(--salt-size-unit) / 2);\n margin-top: var(--metric-content-valueContainer-marginTop, 0px);\n}\n\n.saltMetric-direction-up .saltMetricContent-indicator {\n fill: var(--salt-sentiment-positive-foreground-decorative);\n}\n.saltMetric-direction-up .saltMetricContent-subvalue {\n color: var(--salt-sentiment-positive-foreground-informative);\n}\n\n.saltMetric-direction-down .saltMetricContent-indicator {\n fill: var(--salt-sentiment-negative-foreground-decorative);\n}\n.saltMetric-direction-down .saltMetricContent-subvalue {\n color: var(--salt-sentiment-negative-foreground-informative);\n}\n\n.saltMetricContent-subvalue {\n margin-top: var(--metric-content-subvalue-marginTop, 0px);\n}\n\n.saltMetric-align-left .saltMetricContent {\n text-align: left;\n}\n\n.saltMetric-align-center .saltMetricContent {\n align-items: center;\n text-align: center;\n}\n\n.saltMetric-align-right .saltMetricContent {\n align-items: flex-end;\n text-align: right;\n}\n";
2
2
 
3
3
  export { css_248z as default };
4
4
  //# sourceMappingURL=MetricContent.css.js.map
@@ -1,11 +1,11 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { makePrefixer, Display1, Display2, Display3, Text } from '@salt-ds/core';
3
3
  import { ArrowUpIcon, ArrowDownIcon } 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 } from 'react';
6
8
  import { useMetricContext } from './internal/MetricContext.js';
7
- import { useComponentCssInjection } from '@salt-ds/styles';
8
- import { useWindow } from '@salt-ds/window';
9
9
  import css_248z from './MetricContent.css.js';
10
10
 
11
11
  const iconComponentMap = {
@@ -1 +1 @@
1
- {"version":3,"file":"MetricContent.js","sources":["../src/metric/MetricContent.tsx"],"sourcesContent":["import {\n Display1,\n Display2,\n Display3,\n Text,\n makePrefixer,\n} from \"@salt-ds/core\";\nimport { ArrowDownIcon, ArrowUpIcon, type IconProps } from \"@salt-ds/icons\";\nimport { clsx } from \"clsx\";\nimport { type ComponentType, type HTMLAttributes, forwardRef } from \"react\";\nimport { useMetricContext } from \"./internal\";\n\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\n\nimport metricContentCss from \"./MetricContent.css\";\n\nexport interface MetricContentProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * These props will be passed to the indicator icon. Use this to render a\n * custom icon.\n *\n * @see `Icon` for a list of valid props.\n */\n IndicatorIconProps?: Partial<IconProps>;\n /**\n * Replace the default Icon component\n */\n IndicatorIconComponent?: ComponentType<IconProps>;\n\n /**\n * Other data that may serve as additional information to the main value\n */\n subvalue?: string | number;\n /**\n * The main value to display in the metric\n */\n value: string | number;\n}\n\nconst iconComponentMap = {\n down: ArrowDownIcon,\n up: ArrowUpIcon,\n};\n\nconst withBaseName = makePrefixer(\"saltMetricContent\");\n\nexport const MetricContent = forwardRef<HTMLDivElement, MetricContentProps>(\n function MetricContent(\n {\n IndicatorIconProps,\n IndicatorIconComponent,\n className,\n value,\n subvalue,\n ...restProps\n },\n ref,\n ) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-metric-content\",\n css: metricContentCss,\n window: targetWindow,\n });\n\n const {\n direction,\n showIndicator,\n indicatorPosition,\n size = \"medium\",\n valueId,\n titleId,\n subtitleId,\n } = useMetricContext();\n\n const iconSize = size === \"large\" ? 2 : 1;\n\n const valueComponentMap = {\n small: Display3,\n medium: Display2,\n large: Display1,\n };\n const ValueComponent = valueComponentMap[size];\n\n const iconProps = {\n \"aria-label\": direction,\n className: withBaseName(\"indicator\"),\n name: direction ? `movement-${direction}` : \"\",\n size: iconSize,\n ...IndicatorIconProps,\n };\n\n const IconComponent =\n IndicatorIconComponent ??\n (direction ? iconComponentMap[direction] : undefined);\n\n const icon =\n showIndicator && IconComponent ? <IconComponent {...iconProps} /> : null;\n\n return (\n <div\n {...restProps}\n className={clsx(withBaseName(), className)}\n aria-labelledby={`${titleId || \"\"} ${subtitleId || \"\"}`}\n ref={ref}\n >\n <div className={withBaseName(\"value-container\")}>\n {indicatorPosition === \"start\" && icon}\n <ValueComponent\n data-testid=\"metric-value\"\n id={valueId}\n className={withBaseName(\"value\")}\n >\n {value}\n </ValueComponent>\n {indicatorPosition === \"end\" && icon}\n </div>\n {subvalue && (\n <Text\n className={withBaseName(\"subvalue\")}\n data-testid=\"metric-subvalue\"\n >\n {subvalue}\n </Text>\n )}\n </div>\n );\n },\n);\n"],"names":["MetricContent","metricContentCss"],"mappings":";;;;;;;;;;AAwCA,MAAM,gBAAmB,GAAA;AAAA,EACvB,IAAM,EAAA,aAAA;AAAA,EACN,EAAI,EAAA;AACN,CAAA;AAEA,MAAM,YAAA,GAAe,aAAa,mBAAmB,CAAA;AAE9C,MAAM,aAAgB,GAAA,UAAA;AAAA,EAC3B,SAASA,cACP,CAAA;AAAA,IACE,kBAAA;AAAA,IACA,sBAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAG;AAAA,KAEL,GACA,EAAA;AACA,IAAA,MAAM,eAAe,SAAU,EAAA;AAC/B,IAAyB,wBAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,qBAAA;AAAA,MACR,GAAK,EAAAC,QAAA;AAAA,MACL,MAAQ,EAAA;AAAA,KACT,CAAA;AAED,IAAM,MAAA;AAAA,MACJ,SAAA;AAAA,MACA,aAAA;AAAA,MACA,iBAAA;AAAA,MACA,IAAO,GAAA,QAAA;AAAA,MACP,OAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA,QACE,gBAAiB,EAAA;AAErB,IAAM,MAAA,QAAA,GAAW,IAAS,KAAA,OAAA,GAAU,CAAI,GAAA,CAAA;AAExC,IAAA,MAAM,iBAAoB,GAAA;AAAA,MACxB,KAAO,EAAA,QAAA;AAAA,MACP,MAAQ,EAAA,QAAA;AAAA,MACR,KAAO,EAAA;AAAA,KACT;AACA,IAAM,MAAA,cAAA,GAAiB,kBAAkB,IAAI,CAAA;AAE7C,IAAA,MAAM,SAAY,GAAA;AAAA,MAChB,YAAc,EAAA,SAAA;AAAA,MACd,SAAA,EAAW,aAAa,WAAW,CAAA;AAAA,MACnC,IAAM,EAAA,SAAA,GAAY,CAAY,SAAA,EAAA,SAAS,CAAK,CAAA,GAAA,EAAA;AAAA,MAC5C,IAAM,EAAA,QAAA;AAAA,MACN,GAAG;AAAA,KACL;AAEA,IAAA,MAAM,aACJ,GAAA,sBAAA,KACC,SAAY,GAAA,gBAAA,CAAiB,SAAS,CAAI,GAAA,MAAA,CAAA;AAE7C,IAAA,MAAM,OACJ,aAAiB,IAAA,aAAA,uBAAiB,aAAe,EAAA,EAAA,GAAG,WAAW,CAAK,GAAA,IAAA;AAEtE,IACE,uBAAA,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACE,GAAG,SAAA;AAAA,QACJ,SAAW,EAAA,IAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,QACzC,mBAAiB,CAAG,EAAA,OAAA,IAAW,EAAE,CAAA,CAAA,EAAI,cAAc,EAAE,CAAA,CAAA;AAAA,QACrD,GAAA;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAA,IAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAW,YAAa,CAAA,iBAAiB,CAC3C,EAAA,QAAA,EAAA;AAAA,YAAA,iBAAA,KAAsB,OAAW,IAAA,IAAA;AAAA,4BAClC,GAAA;AAAA,cAAC,cAAA;AAAA,cAAA;AAAA,gBACC,aAAY,EAAA,cAAA;AAAA,gBACZ,EAAI,EAAA,OAAA;AAAA,gBACJ,SAAA,EAAW,aAAa,OAAO,CAAA;AAAA,gBAE9B,QAAA,EAAA;AAAA;AAAA,aACH;AAAA,YACC,sBAAsB,KAAS,IAAA;AAAA,WAClC,EAAA,CAAA;AAAA,UACC,QACC,oBAAA,GAAA;AAAA,YAAC,IAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,aAAa,UAAU,CAAA;AAAA,cAClC,aAAY,EAAA,iBAAA;AAAA,cAEX,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,KAEJ;AAAA;AAGN;;;;"}
1
+ {"version":3,"file":"MetricContent.js","sources":["../src/metric/MetricContent.tsx"],"sourcesContent":["import {\n Display1,\n Display2,\n Display3,\n makePrefixer,\n Text,\n} from \"@salt-ds/core\";\nimport { ArrowDownIcon, ArrowUpIcon, type IconProps } from \"@salt-ds/icons\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport { type ComponentType, forwardRef, type HTMLAttributes } from \"react\";\nimport { useMetricContext } from \"./internal\";\n\nimport metricContentCss from \"./MetricContent.css\";\n\nexport interface MetricContentProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * These props will be passed to the indicator icon. Use this to render a\n * custom icon.\n *\n * @see `Icon` for a list of valid props.\n */\n IndicatorIconProps?: Partial<IconProps>;\n /**\n * Replace the default Icon component\n */\n IndicatorIconComponent?: ComponentType<IconProps>;\n\n /**\n * Other data that may serve as additional information to the main value\n */\n subvalue?: string | number;\n /**\n * The main value to display in the metric\n */\n value: string | number;\n}\n\nconst iconComponentMap = {\n down: ArrowDownIcon,\n up: ArrowUpIcon,\n};\n\nconst withBaseName = makePrefixer(\"saltMetricContent\");\n\nexport const MetricContent = forwardRef<HTMLDivElement, MetricContentProps>(\n function MetricContent(\n {\n IndicatorIconProps,\n IndicatorIconComponent,\n className,\n value,\n subvalue,\n ...restProps\n },\n ref,\n ) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-metric-content\",\n css: metricContentCss,\n window: targetWindow,\n });\n\n const {\n direction,\n showIndicator,\n indicatorPosition,\n size = \"medium\",\n valueId,\n titleId,\n subtitleId,\n } = useMetricContext();\n\n const iconSize = size === \"large\" ? 2 : 1;\n\n const valueComponentMap = {\n small: Display3,\n medium: Display2,\n large: Display1,\n };\n const ValueComponent = valueComponentMap[size];\n\n const iconProps = {\n \"aria-label\": direction,\n className: withBaseName(\"indicator\"),\n name: direction ? `movement-${direction}` : \"\",\n size: iconSize,\n ...IndicatorIconProps,\n };\n\n const IconComponent =\n IndicatorIconComponent ??\n (direction ? iconComponentMap[direction] : undefined);\n\n const icon =\n showIndicator && IconComponent ? <IconComponent {...iconProps} /> : null;\n\n return (\n <div\n {...restProps}\n className={clsx(withBaseName(), className)}\n aria-labelledby={`${titleId || \"\"} ${subtitleId || \"\"}`}\n ref={ref}\n >\n <div className={withBaseName(\"value-container\")}>\n {indicatorPosition === \"start\" && icon}\n <ValueComponent\n data-testid=\"metric-value\"\n id={valueId}\n className={withBaseName(\"value\")}\n >\n {value}\n </ValueComponent>\n {indicatorPosition === \"end\" && icon}\n </div>\n {subvalue && (\n <Text\n className={withBaseName(\"subvalue\")}\n data-testid=\"metric-subvalue\"\n >\n {subvalue}\n </Text>\n )}\n </div>\n );\n },\n);\n"],"names":["MetricContent","metricContentCss"],"mappings":";;;;;;;;;;AAuCA,MAAM,gBAAmB,GAAA;AAAA,EACvB,IAAM,EAAA,aAAA;AAAA,EACN,EAAI,EAAA;AACN,CAAA;AAEA,MAAM,YAAA,GAAe,aAAa,mBAAmB,CAAA;AAE9C,MAAM,aAAgB,GAAA,UAAA;AAAA,EAC3B,SAASA,cACP,CAAA;AAAA,IACE,kBAAA;AAAA,IACA,sBAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAG;AAAA,KAEL,GACA,EAAA;AACA,IAAA,MAAM,eAAe,SAAU,EAAA;AAC/B,IAAyB,wBAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,qBAAA;AAAA,MACR,GAAK,EAAAC,QAAA;AAAA,MACL,MAAQ,EAAA;AAAA,KACT,CAAA;AAED,IAAM,MAAA;AAAA,MACJ,SAAA;AAAA,MACA,aAAA;AAAA,MACA,iBAAA;AAAA,MACA,IAAO,GAAA,QAAA;AAAA,MACP,OAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA,QACE,gBAAiB,EAAA;AAErB,IAAM,MAAA,QAAA,GAAW,IAAS,KAAA,OAAA,GAAU,CAAI,GAAA,CAAA;AAExC,IAAA,MAAM,iBAAoB,GAAA;AAAA,MACxB,KAAO,EAAA,QAAA;AAAA,MACP,MAAQ,EAAA,QAAA;AAAA,MACR,KAAO,EAAA;AAAA,KACT;AACA,IAAM,MAAA,cAAA,GAAiB,kBAAkB,IAAI,CAAA;AAE7C,IAAA,MAAM,SAAY,GAAA;AAAA,MAChB,YAAc,EAAA,SAAA;AAAA,MACd,SAAA,EAAW,aAAa,WAAW,CAAA;AAAA,MACnC,IAAM,EAAA,SAAA,GAAY,CAAY,SAAA,EAAA,SAAS,CAAK,CAAA,GAAA,EAAA;AAAA,MAC5C,IAAM,EAAA,QAAA;AAAA,MACN,GAAG;AAAA,KACL;AAEA,IAAA,MAAM,aACJ,GAAA,sBAAA,KACC,SAAY,GAAA,gBAAA,CAAiB,SAAS,CAAI,GAAA,MAAA,CAAA;AAE7C,IAAA,MAAM,OACJ,aAAiB,IAAA,aAAA,uBAAiB,aAAe,EAAA,EAAA,GAAG,WAAW,CAAK,GAAA,IAAA;AAEtE,IACE,uBAAA,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACE,GAAG,SAAA;AAAA,QACJ,SAAW,EAAA,IAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,QACzC,mBAAiB,CAAG,EAAA,OAAA,IAAW,EAAE,CAAA,CAAA,EAAI,cAAc,EAAE,CAAA,CAAA;AAAA,QACrD,GAAA;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAA,IAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAW,YAAa,CAAA,iBAAiB,CAC3C,EAAA,QAAA,EAAA;AAAA,YAAA,iBAAA,KAAsB,OAAW,IAAA,IAAA;AAAA,4BAClC,GAAA;AAAA,cAAC,cAAA;AAAA,cAAA;AAAA,gBACC,aAAY,EAAA,cAAA;AAAA,gBACZ,EAAI,EAAA,OAAA;AAAA,gBACJ,SAAA,EAAW,aAAa,OAAO,CAAA;AAAA,gBAE9B,QAAA,EAAA;AAAA;AAAA,aACH;AAAA,YACC,sBAAsB,KAAS,IAAA;AAAA,WAClC,EAAA,CAAA;AAAA,UACC,QACC,oBAAA,GAAA;AAAA,YAAC,IAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,aAAa,UAAU,CAAA;AAAA,cAClC,aAAY,EAAA,iBAAA;AAAA,cAEX,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,KAEJ;AAAA;AAGN;;;;"}
@@ -1,10 +1,10 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import { makePrefixer, Text, Link } from '@salt-ds/core';
3
+ import { useComponentCssInjection } from '@salt-ds/styles';
4
+ import { useWindow } from '@salt-ds/window';
3
5
  import { clsx } from 'clsx';
4
6
  import { forwardRef, useCallback } from 'react';
5
7
  import { useMetricContext } from './internal/MetricContext.js';
6
- import { useComponentCssInjection } from '@salt-ds/styles';
7
- import { useWindow } from '@salt-ds/window';
8
8
  import css_248z from './MetricHeader.css.js';
9
9
 
10
10
  const withBaseName = makePrefixer("saltMetricHeader");